فهرست منبع

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.
Rich Felker 10 سال پیش
والد
کامیت
ecc082c61b
3فایلهای تغییر یافته به همراه16 افزوده شده و 0 حذف شده
  1. 2 0
      include/strings.h
  2. 7 0
      src/misc/ffsl.c
  3. 7 0
      src/misc/ffsll.c

+ 2 - 0
include/strings.h

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

+ 7 - 0
src/misc/ffsl.c

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

+ 7 - 0
src/misc/ffsll.c

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