Stuart Henderson <[email protected]> writes:
>> "Martijn Rijkeboer" <[email protected]> writes:
>>
>> > After quite some discussion here's take 4 of the update of
>> > sysutils/cfengine. This version is based on Stuart's version which was
>> > based on Jiri B's version.
> ..
>> > Please commit so other people can start testing it.
>
> Okan, these diffs change MAINTAINER to you but I haven't seen much
> activity in the recent list posts, are you still interested in this?
>
> On 2013/04/25 07:29, Timo Myyrä wrote:
>>
>> #ifdef LINUX
>> @@ -2100,6 +2106,17 @@ const char *GetWorkDir(void)
>>
>> static void GetCPUInfo()
>> {
>> +#if defined(__OpenBSD)
>
> This one should be __OpenBSD__, however it would probably be better
> to use sysconf(_SC_NPROCESSORS_CONF) for this if available; it's more
> portable and should be easier to feed upstream. sysconf(3) itself is
> POSIX; _SC_NPROCESSORS_CONF is not POSIX but is fairly common.
>
>> + int mib[2], count;
>> + size_t len;
>> + char buf[CF_BUFSIZE];
>> +
>> + mib[0] = CTL_HW;
>> + mib[1] = HW_NCPU;
>> + len = sizeof(count);
>> + if (sysctl(mib, 2, &count, &len, NULL, 0) == -1)
>> + err(1, "sysctl");
>> +#else
>> FILE *fp;
>> char buf[CF_BUFSIZE];
>> int count = 0;
Ok, here's a new patch to use sysconf where able instead of /proc:
I used _SC_NPROCESSORS_ONLN to get the actually usable processors.
Better?
timo
$OpenBSD$
--- src/sysinfo.c.orig Fri Mar 15 14:49:36 2013
+++ src/sysinfo.c Fri Apr 26 14:36:23 2013
@@ -36,6 +36,10 @@
# include <zone.h>
#endif
+#ifdef HAVE_SYSCONF
+# include <unistd.h>
+#endif
+
void CalculateDomainName(const char *nodename, const char *dnsname, char
*fqname, char *uqname, char *domain);
#ifdef LINUX
@@ -2100,10 +2104,21 @@ const char *GetWorkDir(void)
static void GetCPUInfo()
{
- FILE *fp;
char buf[CF_BUFSIZE];
int count = 0;
+
+#ifdef HAVE_SYSCONF
+ count = sysconf(_SC_NPROCESSORS_ONLN);
+ if (count == -1) {
+ CfOut(cf_verbose, "", "Unable to get cpu data\n");
+ return;
+ }
+
+#else
+
+ FILE *fp;
+
if ((fp = fopen("/proc/stat", "r")) == NULL)
{
CfOut(cf_verbose, "", "Unable to find proc/cpu data\n");
@@ -2123,6 +2138,8 @@ static void GetCPUInfo()
fclose(fp);
count--;
+
+#endif
if (count < 1)
{