- unsigned long starttime;
- char buffer[1024];
- int ret;
- FILE *fh;
-
- ret = 0;
-
- fh = fopen (STAT_FILE, "r");
-
- if (fh == NULL)
- {
- char errbuf[1024];
- ERROR ("uptime plugin: Cannot open "STAT_FILE": %s",
- sstrerror (errno, errbuf, sizeof (errbuf)));
- return (-1);
- }
-
- while (fgets (buffer, 1024, fh) != NULL)
- {
- /* look for the btime string and read the value */
- ret = sscanf (buffer, "btime %lu", &starttime);
- /* avoid further loops if btime has been found and read
- * correctly (hopefully) */
- if (ret == 1)
- break;
- }
-
- fclose (fh);
-
- /* loop done, check if no value has been found/read */
- if (ret != 1)
- {
- ERROR ("uptime plugin: No value read from "STAT_FILE"");
- return (-1);
- }
-
- boottime = (time_t) starttime;
-
- if (boottime == 0)
- {
- ERROR ("uptime plugin: btime read from "STAT_FILE", "
- "but `boottime' is zero!");
- return (-1);
- }
+ struct sysinfo info;
+ int status;
+
+ status = sysinfo(&info);
+ if (status != 0) {
+ ERROR("uptime plugin: Error calling sysinfo: %s", STRERRNO);
+ return -1;
+ }
+
+ result = (time_t)info.uptime;