implement ffsl and ffsll functions

per the resolution of Austin Group issue #617, these are accepted for
XSI option in POSIX future and thus I'm treating them as standard
functions.
This commit is contained in:
Rich Felker 2014-07-31 02:38:23 -04:00
parent 38db09374a
commit ecc082c61b
3 changed files with 16 additions and 0 deletions

View File

@ -22,6 +22,8 @@ char *rindex (const char *, int);
#if defined(_XOPEN_SOURCE) || defined(_GNU_SOURCE) || defined(_BSD_SOURCE) #if defined(_XOPEN_SOURCE) || defined(_GNU_SOURCE) || defined(_BSD_SOURCE)
int ffs (int); int ffs (int);
int ffsl (long);
int ffsll (long long);
#endif #endif
int strcasecmp (const char *, const char *); int strcasecmp (const char *, const char *);

7
src/misc/ffsl.c Normal file
View File

@ -0,0 +1,7 @@
#include <strings.h>
#include "atomic.h"
int ffsl(long i)
{
return i ? a_ctz_l(i)+1 : 0;
}

7
src/misc/ffsll.c Normal file
View File

@ -0,0 +1,7 @@
#include <strings.h>
#include "atomic.h"
int ffsll(long long i)
{
return i ? a_ctz_64(i)+1 : 0;
}