Tru64 and 2.2 problems
Ken Murchison
ken at oceana.com
Thu Jul 24 14:56:13 EDT 2003
Scott Adkins wrote:
> Even though your suggestions were good, they weren't applicable to this
> particular issue. In fact, running the find command to find all the
> source files with indented directives only showed up a couple lines as
> follows (using a slightly different command than you supplied):
>
> % find . -name '*.[ch]' | xargs egrep '^[: :]+#'
> ./sieve/addr-lex.c: #pragma warn -rch
> ./sieve/addr-lex.c: #pragma warn -use
> ./sieve/sieve-lex.c: #pragma warn -rch
> ./sieve/sieve-lex.c: #pragma warn -use
>
> Even though it has no bearing on the problem I was having, it is worth
> fixing those few lines (by removing the single space before the #pragma)
> just to increase the portability of the source code.
These files are generated by flex, and I don't think we want to get into
massaging its output. Are you saying that the leading space is illegal,
or that your compiler just doesn't like it?
>
> Scott
>
> --On Wednesday, July 23, 2003 7:24 AM +0200 Nikola Milutinovic
> <Nikola.Milutinovic at ev.co.yu> wrote:
>
>> "First thing first", to quote your message. Have you cleaned up the
>> source from indented CPP directives?
>>
>> GCC (and possibly other C compilers) support indentation of CPP
>> directives (#define, #include, etc.). CC doesn't deal with this and
>> ignores such lines. There is no public standard that allows it - the most
>> that is allowed is to indent the directive, but to keep "#" in column 1.
>> So, this is what GNU allows:
>>
>> # ifdef HAS_GETADDRINF
>> #define OK
>> #include <sys/socket.h>
>> # else
>> #include <sys/sock5.h>
>> # endif
>>
>> DEC CC would go no further than this:
>>
>> # ifdef HAS_GETADDRINF
>> # define OK
>> # include <sys/socket.h>
>> # else
>> # include <sys/sock5.h>
>> # endif
>>
>> So, the first thing to do is clean up all "*.c", "*.h" and "configure*"
>> files that you can find. I use a script:
>>
>> find . \( -name "configure*" -o -name "*.c" -o -name "*.h" \) -exec grep
>> -E "^( |\t)( |\t)*#(i|d|e|p|u)" {} \; -print
>>
>> (I have placed "\t" for TABs, in my script they are really TABs - cant
>> display TABs in MS Outlook Express).
>>
>> Then look at what's reported and edit all those files. Or write another
>> script to do the change - "sed" comes to mind. Or Perl.
>>
>> When you have cleaned up, then you can start tracking errors and bugs.
>>
>> Nix.
>
>
>
>
--
Kenneth Murchison Oceana Matrix Ltd.
Software Engineer 21 Princeton Place
716-662-8973 x26 Orchard Park, NY 14127
--PGP Public Key-- http://www.oceana.com/~ken/ksm.pgp
More information about the Info-cyrus
mailing list