bug-coreutils
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

coreutils-6.0 on BeOS (4)


From: Bruno Haible
Subject: coreutils-6.0 on BeOS (4)
Date: Tue, 22 Aug 2006 18:23:03 +0200
User-agent: KMail/1.9.1

On BeOS, coreutils wouldn't install the 'uptime' program. But BeOS has a
system call that returns the boot time. This makes it possible to port
the 'uptime' program.

2006-08-19  Bruno Haible  <address@hidden>

        BeOS portability.
        * m4/boottime.m4 (GNULIB_BOOT_TIME): Test also for utmp.h, utmpx.h,
        OS.h. Don't require to have utmp.h or utmpx.h. Enable boottime
        support if <OS.h> is found.
        * src/uptime.c: Include OS.h if it exists.
        (print_uptime): On BeOS, use the get_system_info function (actually a
        macro). Loop through utmp entries only if utmp.h or utmpx.h exists.
        (uptime): Call read_utmp only if utmp.h or utmpx.h exists.

--- m4/boottime.m4.bak  2005-05-14 09:58:31.000000000 +0200
+++ m4/boottime.m4      2006-08-19 15:11:27.000000000 +0200
@@ -1,7 +1,7 @@
-# boottime.m4 serial 2
+# boottime.m4 serial 3
 # Determine whether this system has infrastructure for obtaining the boot time.
 
-# Copyright (C) 1996, 2000, 2002, 2003, 2004 Free Software Foundation, Inc.
+# Copyright (C) 1996, 2000, 2002, 2003, 2004, 2006 Free Software Foundation, 
Inc.
 
 # This program is free software; you can redistribute it and/or modify
 # it under the terms of the GNU General Public License as published by
@@ -28,6 +28,7 @@
      [#if HAVE_SYS_PARAM_H
        #include <sys/param.h>
       #endif]])
+  AC_CHECK_HEADERS_ONCE(utmp.h utmpx.h OS.h)
   AC_CACHE_CHECK(
     [whether we can get the system boot time],
     [gnulib_cv_have_boot_time],
@@ -41,14 +42,17 @@
 # endif
 # include <sys/sysctl.h>
 #endif
-#ifdef HAVE_UTMPX_H
+#if HAVE_UTMPX_H
 # include <utmpx.h>
-#else
+#elif HAVE_UTMP_H
 # include <utmp.h>
 #endif
+#if HAVE_OS_H
+# include <OS.h>
+#endif
 ],
 [[
-#if defined BOOT_TIME || (defined CTL_KERN && defined KERN_BOOTTIME)
+#if defined BOOT_TIME || (defined CTL_KERN && defined KERN_BOOTTIME) || 
HAVE_OS_H
 /* your system *does* have the infrastructure to determine boot time */
 #else
 please_tell_us_how_to_determine_boot_time_on_your_system
--- src/uptime.c.bak    2005-11-24 15:28:08.000000000 +0100
+++ src/uptime.c        2006-08-19 15:50:08.000000000 +0200
@@ -1,5 +1,5 @@
 /* GNU's uptime.
-   Copyright (C) 1992-2002, 2004, 2005 Free Software Foundation, Inc.
+   Copyright (C) 1992-2002, 2004, 2005, 2006 Free Software Foundation, Inc.
 
    This program is free software; you can redistribute it and/or modify
    it under the terms of the GNU General Public License as published by
@@ -28,6 +28,10 @@
 # include <sys/sysctl.h>
 #endif
 
+#if HAVE_OS_H
+# include <OS.h>
+#endif
+
 #include "c-strtod.h"
 #include "error.h"
 #include "long-options.h"
@@ -90,6 +94,16 @@
   }
 #endif
 
+#if HAVE_OS_H /* BeOS */
+  {
+    system_info si;
+
+    get_system_info (&si);
+    boot_time = si.boot_time / 1000000;
+  }
+#endif
+
+#if HAVE_UTMPX_H || HAVE_UTMP_H
   /* Loop through all the utmp entries we just read and count up the valid
      ones, also in the process possibly gleaning boottime. */
   while (n--)
@@ -99,6 +113,7 @@
        boot_time = UT_TIME_MEMBER (this);
       ++this;
     }
+#endif
   time_now = time (NULL);
 #if defined HAVE_PROC_UPTIME
   if (uptime == 0)
@@ -162,8 +177,10 @@
   size_t n_users;
   STRUCT_UTMP *utmp_buf;
 
+#if HAVE_UTMPX_H || HAVE_UTMP_H
   if (read_utmp (filename, &n_users, &utmp_buf, options) != 0)
     error (EXIT_FAILURE, errno, "%s", filename);
+#endif
 
   print_uptime (n_users, utmp_buf);
 }




reply via email to

[Prev in Thread] Current Thread [Next in Thread]