Mohammed Shahid writes:

> Hi,

>       Though not a problem with teTex proper, this issue affects its
> installation and is related to problem 2 in

>       '- using an unpatched version of flex-2.5.31 fails with..'

>       Despite applying the patch (to flex-2.5.31) for teTex-3.0, flex
> poses problems during make as follows:

> make  all-recursive
> make[1]: Entering directory `/export/home/shalabh/INSTALL/flex-2.5.31'
> Making all in .
> make[2]: Entering directory `/export/home/shalabh/INSTALL/flex-2.5.31'
> if gcc -DHAVE_CONFIG_H -I. -I. -I.
> -DLOCALEDIR=\"/usr/local/share/locale\" -I/usr/local/include -I./intl
> -I/opt/gnome/include -I/usr/openwin/share/include/X11/extensions
> -I/usr/openwin/include -I/usr/local/include  -g -O2 -MT filter.o -MD -MP
> -MF ".deps/filter.Tpo" \
>   -c -o filter.o `test -f 'filter.c' || echo './'`filter.c; \
> then mv ".deps/filter.Tpo" ".deps/filter.Po"; \
> else rm -f ".deps/filter.Tpo"; exit 1; \
> fi
> filter.c: In function `filter_apply_chain':
> filter.c:161: error: invalid lvalue in assignment
> filter.c:163: error: invalid lvalue in assignment
> filter.c:184: error: invalid lvalue in assignment
> make[2]: *** [filter.o] Error 1
> make[2]: Leaving directory `/export/home/shalabh/INSTALL/flex-2.5.31'
> make[1]: *** [all-recursive] Error 1
> make[1]: Leaving directory `/export/home/shalabh/INSTALL/flex-2.5.31'
> make: *** [all] Error 2


>       No workarounds to be found on the Web, either. Was wondering if
> something can be said about the problem.

This is what the code looks like after being patched (including new
line numbers).  Instead of a gccism¸ this time code is guilty of a
GNUlibcism: 'stdout' and 'stdin' are not lvalues on most systems.

    160                         /* setup streams again  -- Removed. POSIX 
states that children inherit
    161                            open streams in the parent. Also, ANSI C99 
states that the stdin
    162                                  and stdout macors need not be modified 
lvalues; so this code is
    163                                  broken in the first place.
    164                         if ((stdin = fdopen (0, "r")) == NULL)
    165                                 flexfatal (_("fdopen(0) failed"));
    166                         if ((stdout = fdopen (1, "w")) == NULL)
    167                                 flexfatal (_("fdopen(1) failed"));
    168       */


    188         /* This is not legal; stfout does not need to be a modifiable
    189         lvalue
    190         if ((stdout = fdopen (1, "w")) == NULL)
    191                 flexfatal (_("fdopen(1) failed"));
    192         */



> regards,
> shahid.

> ------------
> ------------
> ------------

-- 
Olaf Weber

               (This space left blank for technical reasons.)

Reply via email to