summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--ChangeLog8
-rw-r--r--m4/ChangeLog7
-rw-r--r--m4/boottime.m414
-rw-r--r--src/uptime.c19
4 files changed, 42 insertions, 6 deletions
diff --git a/ChangeLog b/ChangeLog
index 01b70d6e1..faaf8378b 100644
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,3 +1,11 @@
+2006-08-22 Bruno Haible <bruno@clisp.org>
+
+ BeOS portability.
+ * 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.
+
2006-08-22 Jim Meyering <jim@meyering.net>
* .cvsignore: Add ABOUT-NLS.
diff --git a/m4/ChangeLog b/m4/ChangeLog
index 1f73b7280..a99c7129d 100644
--- a/m4/ChangeLog
+++ b/m4/ChangeLog
@@ -1,3 +1,10 @@
+2006-08-22 Bruno Haible <bruno@clisp.org>
+
+ BeOS portability.
+ * 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.
+
2006-08-22 Jim Meyering <jim@meyering.net>
* .cvsignore: Add files that are now generated by ../bootstrap.
diff --git a/m4/boottime.m4 b/m4/boottime.m4
index e7b742d7f..ad350f1d8 100644
--- a/m4/boottime.m4
+++ b/m4/boottime.m4
@@ -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 @@ AC_DEFUN([GNULIB_BOOT_TIME],
[#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 @@ AC_DEFUN([GNULIB_BOOT_TIME],
# 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
diff --git a/src/uptime.c b/src/uptime.c
index bd2b0ec95..6b2a7240a 100644
--- a/src/uptime.c
+++ b/src/uptime.c
@@ -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 @@ print_uptime (size_t n, const STRUCT_UTMP *this)
}
#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 @@ print_uptime (size_t n, const STRUCT_UTMP *this)
boot_time = UT_TIME_MEMBER (this);
++this;
}
+#endif
time_now = time (NULL);
#if defined HAVE_PROC_UPTIME
if (uptime == 0)
@@ -163,8 +178,10 @@ uptime (const char *filename, int options)
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);
}