library: procps_uptime() return value is a status

procps_uptime, previously just plain uptime() used to put the
uptime (as a double) in the first argument and return uptime
(as an int).

It meant if you ran
 myuptime2 = procps_uptime(&myuptime1, NULL);
You might get different results for myuptime1 and myuptime2 because
they are different types.

Most library calls use the return value to return the status,
procps_uptime was in the middle.

Until now.

This function will return 0 on success. If you want (for whatever
reason) uptime as an int then cast it.

All of the procps binaries didn't use the return value for uptime
except ps which set a variable to it but never used it anywhere.
This commit is contained in:
Craig Small 2016-05-01 16:50:25 +10:00
parent 6151b794c6
commit 6b5cb345c5
5 changed files with 8 additions and 11 deletions

View File

@ -16,7 +16,7 @@
.\" Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
.\" %%%LICENSE_END
.\"
.TH PROCPS_UPTIME 3 2016-04-16 "libproc-2"
.TH PROCPS_UPTIME 3 2016-05-01 "libproc-2"
.\" Please adjust this date whenever revising the manpage.
.\"
.SH NAME
@ -35,7 +35,7 @@ fills the location of the two double points with the current sytem uptime
and idle time.
.SH RETURN VALUE
.BR procps_uptime ()
returns a positive integer which is the uptime on success. On failure, it
returns 0 on success. On failure, it
returns a negative integer to one of the values defined below.
.TP
.B -ERANGE

View File

@ -30,7 +30,7 @@ int check_uptime(void *data)
double up=0, idle=0;
int rc;
rc = procps_uptime(&up, &idle);
return (rc > 0 && up > 0 && idle > 0);
return (rc == 0 && up > 0 && idle > 0);
}
int check_uptime_nullup(void *data)
@ -39,7 +39,7 @@ int check_uptime_nullup(void *data)
int rc;
testname = "procps_uptime() (up=NULL)";
rc = procps_uptime(NULL, &idle);
return (rc > 0 && idle > 0);
return (rc == 0 && idle > 0);
}
int check_uptime_nullidle(void *data)
@ -48,7 +48,7 @@ int check_uptime_nullidle(void *data)
int rc;
testname = "procps_uptime() (idle=NULL)";
rc = procps_uptime(&up, NULL);
return (rc > 0 && up > 0);
return (rc == 0 && up > 0);
}
int check_uptime_nullall(void *data)
@ -56,7 +56,7 @@ int check_uptime_nullall(void *data)
int rc;
testname = "procps_uptime() (up,idle=NULL)";
rc = procps_uptime(NULL, NULL);
return (rc > 0);
return (rc == 0);
}
int check_uptime_sprint(void *data)

View File

@ -63,7 +63,7 @@ static int count_users(void)
* Unlike other procps functions this closes the file each time
* Either uptime_secs or idle_secs can be null
*
* Returns: uptime_secs on success and <0 on failure
* Returns: 0 on success and <0 on failure
*/
PROCPS_EXPORT int procps_uptime(
double *restrict uptime_secs,
@ -91,7 +91,7 @@ PROCPS_EXPORT int procps_uptime(
*uptime_secs = up;
if (idle_secs)
*idle_secs = idle;
return up;
return 0;
}
/*

View File

@ -434,7 +434,6 @@ extern int prefer_bsd_defaults;
extern int running_only;
extern int screen_cols;
extern int screen_rows;
extern time_t seconds_since_boot;
extern selection_node *selection_list;
extern unsigned simple_select;
extern sort_node *sort_list;

View File

@ -172,7 +172,6 @@ unsigned personality = 0xffffffff;
int prefer_bsd_defaults = -1;
int screen_cols = -1;
int screen_rows = -1;
time_t seconds_since_boot = -1;
selection_node *selection_list = (selection_node *)0xdeadbeef;
unsigned simple_select = 0xffffffff;
sort_node *sort_list = (sort_node *)0xdeadbeef; /* ready-to-use sort list */
@ -502,7 +501,6 @@ void reset_global(void){
negate_selection = 0;
page_size = getpagesize();
running_only = 0;
seconds_since_boot = procps_uptime(0,0);
selection_list = NULL;
simple_select = 0;
sort_list = NULL;