On 04/19/10 18:04, Mike McCarty wrote:
> James Richard Tyrer wrote:
>> Is there something wrong with this code:
>>
>> NetworkManager-0.8.build/src/NetworkManagerPolicy.c:
>>
>> #include<ctype.h>
>>
>>              if (isblank (*p) || (*p == '\0')) {
>>
>> ??  GCC-4.3.4 doesn't like it:
>>
>> NetworkManagerPolicy.c:272: error: implicit declaration of function
>> 'isblank'
>
> Yep. The Standard C provides somehthing which is similar to what is
> meant, but the name is "isspace(.)". "isblank(.)" is a GNU
> extension.
>
And I am compiling against GLibC, so it should be OK.

Could this be the wrong error message?

> Are you compiling with strict ANSI compliance?

The command when it doesn't work is:

/usr/bin/gcc -DHAVE_CONFIG_H -I. -I.. -I.. -I../include -I../marshallers 
-I../src/named-manager -I../src/vpn-manager -I../src/dhcp-manager 
-I../src/ip6-manager -I../src/supplicant-manager 
-I../src/dnsmasq-manager -I../src/modem-manager -I../src/bluez-manager 
-I../src/system-settings -I../libnm-util -I../libnm-glib -I../callouts 
-pthread -I/usr/include/dbus-1.0 -I/usr/lib/dbus-1.0/include 
-I/usr/include/glib-2.0 -I/usr/lib/glib-2.0/include   -pthread 
-I/usr/include/glib-2.0 -I/usr/lib/glib-2.0/include    -pthread 
-I/usr/include/gudev-1.0 -I/usr/include/glib-2.0 
-I/usr/lib/glib-2.0/include     -pthread -I/usr/include/glib-2.0 
-I/usr/lib/glib-2.0/include   -DG_DISABLE_DEPRECATED 
-DBINDIR=\"/usr/bin\" -DSBINDIR=\"/usr/sbin\" 
-DLIBEXECDIR=\"/usr/lib/network-manager\" -DDATADIR=\"/usr/share\" 
-DSYSCONFDIR=\"/etc\" -DLOCALSTATEDIR=\"/var\" 
-DNM_RUN_DIR=\"/var/run/NetworkManager\" 
-DNMLOCALEDIR=\"/usr/share/locale\" -DARP_DEBUG -I/usr/gnome-2/include 
-I/usr/include/mysql -I/usr/lib/xulrunner-1.9.2.3   -Wall -Werror 
-std=gnu89 -march=athlon -mtune=athlon -O2 -m128bit-long-double -Wshadow 
-Wmissing-declarations -Wmissing-prototypes 
-Wdeclaration-after-statement -Wfloat-equal -Wno-unused-parameter 
-Wno-sign-compare -fno-strict-aliasing -MT 
NetworkManager-NetworkManagerPolicy.o -MD -MP -MF 
.deps/NetworkManager-NetworkManagerPolicy.Tpo -c -o 
NetworkManager-NetworkManagerPolicy.o `test -f 'NetworkManagerPolicy.c' 
|| echo './'`NetworkManagerPolicy.c

Doesn't look that way,

>
> isspace(.) looks for space, tab, vertical tab, newline, return,
> and formfeed.
> isblank(.) looks only for space and tab.
>
>> Any suggestions?
>>
>> Note that it does compile OK if I add the: "configure" paramater:
>>
>>       --disable-more-warnings
>
> Uh, it doesn't compile any differently, you just don't see the
> warning. That function has no prototype in scope.

The GNU: "ctype.h" header defines it as something else, apparently 
dependent on whether or not various things are defined, so there should 
be the function somewhere, but it is possible that the C headers are 
missing the prototype.  That is a warning, not an error, so it should 
compile correctly.

So, I added: "-Wno-error=implicit-function-declaration" to the above 
command and it compiles correctly.  Using: 
"-Wno-error=missing-prototypes" doesn't fix it, so I doubt that it is a 
missing prototype.

What is implicit about the definition unless there is a problem with the 
header?  OTOH, using: "isspace" instead of: "isblank" in the code fixes 
the problem cures the problem.

-- 
James Tyrer

Linux (mostly) From Scratch
-- 
http://linuxfromscratch.org/mailman/listinfo/blfs-support
FAQ: http://www.linuxfromscratch.org/blfs/faq.html
Unsubscribe: See the above information page

Reply via email to