| version 1.1.1.1, 2012/02/21 16:23:02 | version 1.1.1.2, 2012/05/29 12:26:49 | 
| Line 53 | Line 53 | 
 | #endif /* !__linux__ */ | #endif /* !__linux__ */ | 
 |  |  | 
 | #include "missing.h" | #include "missing.h" | 
 |  | #include "sudo_debug.h" | 
 |  |  | 
 | /* | /* | 
 | * Fill in a struct timeval with the time the system booted. | * Fill in a struct timeval with the time the system booted. | 
| Line 67  get_boottime(struct timeval *tv) | Line 68  get_boottime(struct timeval *tv) | 
 | size_t linesize = 0; | size_t linesize = 0; | 
 | ssize_t len; | ssize_t len; | 
 | FILE * fp; | FILE * fp; | 
 |  | debug_decl(get_boottime, SUDO_DEBUG_UTIL) | 
 |  |  | 
 | /* read btime from /proc/stat */ | /* read btime from /proc/stat */ | 
 | fp = fopen("/proc/stat", "r"); | fp = fopen("/proc/stat", "r"); | 
| Line 75  get_boottime(struct timeval *tv) | Line 77  get_boottime(struct timeval *tv) | 
 | if (strncmp(line, "btime ", 6) == 0) { | if (strncmp(line, "btime ", 6) == 0) { | 
 | tv->tv_sec = atoi(line + 6); | tv->tv_sec = atoi(line + 6); | 
 | tv->tv_usec = 0; | tv->tv_usec = 0; | 
| return 1; | debug_return_bool(1); | 
 | } | } | 
 | } | } | 
 | fclose(fp); | fclose(fp); | 
 | free(line); | free(line); | 
 | } | } | 
 |  |  | 
| return 0; | debug_return_bool(0); | 
 | } | } | 
 |  |  | 
 | #elif defined(HAVE_SYSCTL) && defined(KERN_BOOTTIME) | #elif defined(HAVE_SYSCTL) && defined(KERN_BOOTTIME) | 
| Line 92  get_boottime(struct timeval *tv) | Line 94  get_boottime(struct timeval *tv) | 
 | { | { | 
 | size_t size; | size_t size; | 
 | int mib[2]; | int mib[2]; | 
 |  | debug_decl(get_boottime, SUDO_DEBUG_UTIL) | 
 |  |  | 
 | mib[0] = CTL_KERN; | mib[0] = CTL_KERN; | 
 | mib[1] = KERN_BOOTTIME; | mib[1] = KERN_BOOTTIME; | 
 | size = sizeof(*tv); | size = sizeof(*tv); | 
 | if (sysctl(mib, 2, tv, &size, NULL, 0) != -1) | if (sysctl(mib, 2, tv, &size, NULL, 0) != -1) | 
| return 1; | debug_return_bool(1); | 
 |  |  | 
| return 0; | debug_return_bool(0); | 
 | } | } | 
 |  |  | 
 | #elif defined(HAVE_GETUTXID) | #elif defined(HAVE_GETUTXID) | 
| Line 108  int | Line 111  int | 
 | get_boottime(struct timeval *tv) | get_boottime(struct timeval *tv) | 
 | { | { | 
 | struct utmpx *ut, key; | struct utmpx *ut, key; | 
 |  | debug_decl(get_boottime, SUDO_DEBUG_UTIL) | 
 |  |  | 
 | memset(&key, 0, sizeof(key)); | memset(&key, 0, sizeof(key)); | 
 | key.ut_type = BOOT_TIME; | key.ut_type = BOOT_TIME; | 
| Line 117  get_boottime(struct timeval *tv) | Line 121  get_boottime(struct timeval *tv) | 
 | tv->tv_usec = ut->ut_tv.tv_usec; | tv->tv_usec = ut->ut_tv.tv_usec; | 
 | } | } | 
 | endutxent(); | endutxent(); | 
| return ut != NULL; | debug_return_bool(ut != NULL); | 
 | } | } | 
 |  |  | 
 | #elif defined(HAVE_GETUTID) | #elif defined(HAVE_GETUTID) | 
| Line 126  int | Line 130  int | 
 | get_boottime(struct timeval *tv) | get_boottime(struct timeval *tv) | 
 | { | { | 
 | struct utmp *ut, key; | struct utmp *ut, key; | 
 |  | debug_decl(get_boottime, SUDO_DEBUG_UTIL) | 
 |  |  | 
 | memset(&key, 0, sizeof(key)); | memset(&key, 0, sizeof(key)); | 
 | key.ut_type = BOOT_TIME; | key.ut_type = BOOT_TIME; | 
| Line 135  get_boottime(struct timeval *tv) | Line 140  get_boottime(struct timeval *tv) | 
 | tv->tv_usec = 0; | tv->tv_usec = 0; | 
 | } | } | 
 | endutent(); | endutent(); | 
| return ut != NULL; | debug_return_bool(ut != NULL); | 
 | } | } | 
 |  |  | 
 | #else | #else | 
| Line 143  get_boottime(struct timeval *tv) | Line 148  get_boottime(struct timeval *tv) | 
 | int | int | 
 | get_boottime(struct timeval *tv) | get_boottime(struct timeval *tv) | 
 | { | { | 
| return 0; | debug_decl(get_boottime, SUDO_DEBUG_UTIL) | 
|  | debug_return_bool(0); | 
 | } | } | 
 | #endif | #endif |