s3: Use ARRAY_SIZE in bsd_attr_list
[tridge/samba.git] / source3 / lib / system.c
index 2f7a55f48c105c0bc7dc6707d21249a6cfa2bdb1..a308014f464766cdc5b6a7e1c5e94be2215ed8de 100644 (file)
 #include "system/passwd.h"
 #include "system/filesys.h"
 
+#ifdef HAVE_SYS_SYSCTL_H
+#include <sys/sysctl.h>
+#endif
+
 #ifdef HAVE_SYS_PRCTL_H
 #include <sys/prctl.h>
 #endif
@@ -733,6 +737,8 @@ int sys_fseek(FILE *fp, SMB_OFF_T offset, int whence)
        return fseek64(fp, offset, whence);
 #elif defined(HAVE_EXPLICIT_LARGEFILE_SUPPORT) && defined(LARGE_SMB_OFF_T) && defined(HAVE_FSEEKO64)
        return fseeko64(fp, offset, whence);
+#elif defined(HAVE_EXPLICIT_LARGEFILE_SUPPORT) && defined(LARGE_SMB_OFF_T) && defined(HAVE_FSEEKO)
+       return fseeko(fp, offset, whence);
 #else
        return fseek(fp, offset, whence);
 #endif
@@ -1791,7 +1797,7 @@ static ssize_t bsd_attr_list (int type, extattr_arg arg, char *list, size_t size
        int i, t, len;
        char *buf;
        /* Iterate through extattr(2) namespaces */
-       for(t = 0; t < (sizeof(extattr)/sizeof(extattr[0])); t++) {
+       for(t = 0; t < ARRAY_SIZE(extattr); t++) {
                switch(type) {
 #if defined(HAVE_EXTATTR_LIST_FILE)
                        case 0:
@@ -2474,6 +2480,53 @@ uint32 unix_dev_minor(SMB_DEV_T dev)
 #endif
 }
 
+#if 0
+/*******************************************************************
+ Return the number of CPUs.
+********************************************************************/
+
+int sys_get_number_of_cores(void)
+{
+       int ret = -1;
+
+#if defined(HAVE_SYSCONF)
+#if defined(_SC_NPROCESSORS_ONLN)
+       ret = (int)sysconf(_SC_NPROCESSORS_ONLN);
+#endif
+#if defined(_SC_NPROCESSORS_CONF)
+       if (ret < 1) {
+               ret = (int)sysconf(_SC_NPROCESSORS_CONF);
+       }
+#endif
+#elif defined(HAVE_SYSCTL) && defined(CTL_HW)
+       int name[2];
+       unsigned int len = sizeof(ret);
+
+       name[0] = CTL_HW;
+#if defined(HW_AVAILCPU)
+       name[1] = HW_AVAILCPU;
+
+       if (sysctl(name, 2, &ret, &len, NULL, 0) == -1) {
+               ret = -1;
+       }
+#endif
+#if defined(HW_NCPU)
+       if(ret < 1) {
+               name[0] = CTL_HW;
+               name[1] = HW_NCPU;
+               if (sysctl(nm, 2, &count, &len, NULL, 0) == -1) {
+                       ret = -1;
+               }
+       }
+#endif
+#endif
+       if (ret < 1) {
+               ret = 1;
+       }
+       return ret;
+}
+#endif
+
 #if defined(WITH_AIO)
 
 /*******************************************************************