[Top][All Lists]
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
Re: mingw and memcmp
From: |
Paul Eggert |
Subject: |
Re: mingw and memcmp |
Date: |
Fri, 21 Dec 2007 15:14:21 -0800 |
User-agent: |
Gnus/5.11 (Gnus v5.11) Emacs/22.1 (gnu/linux) |
Bruno Haible <address@hidden> writes:
> - You can bury the 'memcmp' module. It's not needed by ANSI C systems,
> and gnulib assumes ANSI C for ca. 2 years already.
I think we're assuming freestanding C89 or better, right?
memcmp is required for hosted C89, but not for freestanding.
It's no big deal, but since the code already uses strncmp, I think the
objection about brain cycles being wasted has less force than usual.
For many people at least, I expect it'll take more brain cycles to
read code that uses both strncmp and memcmp than to read code that
uses only strncmp.
That being said, I do have a bit of trouble reading the code, though.
It doesn't seem to match the comment: e.g., it strips a leading "lt-"
even when there's no "/.libs/". How about if we change this:
const char *slash;
const char *base;
slash = strrchr (argv0, '/');
base = (slash != NULL ? slash + 1 : argv0);
if (base - argv0 >= 7 && strncmp (base - 7, "/.libs/", 7) == 0)
argv0 = base;
if (strncmp (base, "lt-", 3) == 0)
argv0 = base + 3;
program_name = argv0;
to this:
char const *slash = strrchr (argv0, '/');
if (slash && 6 <= slash - argv0 && strncmp (slash - 6, "/.libs", 6) == 0)
argv0 = slash + (strncmp (slash, "/lt-", 4) == 0 ? 4 : 1);
program_name = argv0;
?