[Top][All Lists]
[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);
}
- coreutils-6.0 on BeOS (4),
Bruno Haible <=