Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Why is the isnumber() function present in certain distros of Unix but not in others? [closed]

I'm writing a small C program in which I call the isnumber() function.

#include <ctype.h>

char c
if(isnumber(c)) 
    { foo }

This compiles without a problem on my Mac (OS X 10.8). However, when I upload it to a CentOS 6.x server, it won't compile. Furthermore, the OS X man page for isdigit() describes isnumber(), but the CentOS man page does not. It's as if it simply doesn't exist on the Linux box. Both the OS X man page for isdigit() and a general Unix man page for isdigit() have isnumber() listed as part of the C standard library libc, -lc. When I add -lc to the compile flags on Linux, it still won't compile.

Why is this function included in certain forms on Unix and not in others?

like image 282
jfmercer Avatar asked Nov 21 '12 00:11

jfmercer


1 Answers

isnumber() is a BSDism, as can be seen in the HISTORY section of the linked man page:

The isnumber() function appeared in 4.4BSD.

And there OS X shows its heritage...

Also there is a STANDARDS section that talks about isdigit but mutes about isnumber.

Anyway, Linux, BSD or OS X man pages should not be considered authoritative about the C language, or even about the POSIX standard. For C read the C standard specification (easy to find around), and for POSIX you can read the OpenGroup web site.

like image 153
rodrigo Avatar answered Oct 16 '22 23:10

rodrigo