core: rename function util_get_uptime to util_get_time_diff
The two times must be sent as parameters, which makes the function not specific to uptime. It is now easier to test the function in unit tests.v2.8-utf8proc
parent
4e2718d234
commit
27266ccd02
|
@ -6369,7 +6369,8 @@ COMMAND_CALLBACK(uptime)
|
|||
(void) data;
|
||||
(void) argv_eol;
|
||||
|
||||
util_get_uptime (NULL, &days, &hours, &minutes, &seconds);
|
||||
util_get_time_diff (weechat_first_start_time, time (NULL),
|
||||
NULL, &days, &hours, &minutes, &seconds);
|
||||
|
||||
if ((argc >= 2) && (string_strcasecmp (argv[1], "-o") == 0))
|
||||
{
|
||||
|
|
|
@ -338,6 +338,35 @@ util_get_time_string (const time_t *date)
|
|||
return text_time;
|
||||
}
|
||||
|
||||
/*
|
||||
* Returns difference between two times.
|
||||
*
|
||||
* The following variables are set, if pointer is not NULL:
|
||||
* - number of total seconds between the two times (basic subtraction)
|
||||
* - number of days/hours/minutes/seconds between the two times
|
||||
*/
|
||||
|
||||
void
|
||||
util_get_time_diff (time_t time1, time_t time2,
|
||||
time_t *total_seconds,
|
||||
int *days, int *hours, int *minutes, int *seconds)
|
||||
{
|
||||
time_t diff;
|
||||
|
||||
diff = time2 - time1;
|
||||
|
||||
if (total_seconds)
|
||||
*total_seconds = diff;
|
||||
if (days)
|
||||
*days = diff / (60 * 60 * 24);
|
||||
if (hours)
|
||||
*hours = (diff % (60 * 60 * 24)) / (60 * 60);
|
||||
if (minutes)
|
||||
*minutes = ((diff % (60 * 60 * 24)) % (60 * 60)) / 60;
|
||||
if (seconds)
|
||||
*seconds = ((diff % (60 * 60 * 24)) % (60 * 60)) % 60;
|
||||
}
|
||||
|
||||
/*
|
||||
* Parses a string with a delay and optional unit, returns the delay in
|
||||
* milliseconds.
|
||||
|
@ -982,27 +1011,3 @@ util_version_number (const char *version)
|
|||
return (version_int[0] << 24) | (version_int[1] << 16)
|
||||
| (version_int[2] << 8) | version_int[3];
|
||||
}
|
||||
|
||||
/*
|
||||
* Returns uptime as number of days, hours, minutes, seconds.
|
||||
*/
|
||||
|
||||
void
|
||||
util_get_uptime (time_t *total_seconds, int *days,
|
||||
int *hours, int *minutes, int *seconds)
|
||||
{
|
||||
time_t running_time;
|
||||
|
||||
running_time = time (NULL) - weechat_first_start_time;
|
||||
|
||||
if (total_seconds)
|
||||
*total_seconds = running_time;
|
||||
if (days)
|
||||
*days = running_time / (60 * 60 * 24);
|
||||
if (hours)
|
||||
*hours = (running_time % (60 * 60 * 24)) / (60 * 60);
|
||||
if (minutes)
|
||||
*minutes = ((running_time % (60 * 60 * 24)) % (60 * 60)) / 60;
|
||||
if (seconds)
|
||||
*seconds = ((running_time % (60 * 60 * 24)) % (60 * 60)) % 60;
|
||||
}
|
||||
|
|
|
@ -48,6 +48,10 @@ extern void util_timeval_add (struct timeval *tv, long long interval);
|
|||
|
||||
/* time */
|
||||
extern const char *util_get_time_string (const time_t *date);
|
||||
extern void util_get_time_diff (time_t time1, time_t time2,
|
||||
time_t *total_seconds,
|
||||
int *days, int *hours, int *minutes,
|
||||
int *seconds);
|
||||
|
||||
/* delay */
|
||||
|
||||
|
@ -75,8 +79,4 @@ extern char *util_file_get_content (const char *filename);
|
|||
/* version */
|
||||
extern int util_version_number (const char *version);
|
||||
|
||||
/* uptime */
|
||||
extern void util_get_uptime (time_t *total_seconds, int *days,
|
||||
int *hours, int *minutes, int *seconds);
|
||||
|
||||
#endif /* WEECHAT_UTIL_H */
|
||||
|
|
|
@ -27,6 +27,7 @@
|
|||
#include <stdlib.h>
|
||||
#include <unistd.h>
|
||||
#include <string.h>
|
||||
#include <time.h>
|
||||
|
||||
#include "../core/weechat.h"
|
||||
#include "../core/wee-config.h"
|
||||
|
@ -694,7 +695,8 @@ plugin_api_info_uptime_cb (const void *pointer, void *data,
|
|||
if (!arguments || !arguments[0])
|
||||
{
|
||||
/* return uptime with format: "days:hh:mm:ss" */
|
||||
util_get_uptime (NULL, &days, &hours, &minutes, &seconds);
|
||||
util_get_time_diff (weechat_first_start_time, time (NULL),
|
||||
NULL, &days, &hours, &minutes, &seconds);
|
||||
snprintf (value, sizeof (value), "%d:%02d:%02d:%02d",
|
||||
days, hours, minutes, seconds);
|
||||
return strdup (value);
|
||||
|
@ -703,7 +705,8 @@ plugin_api_info_uptime_cb (const void *pointer, void *data,
|
|||
if (strcmp (arguments, "days") == 0)
|
||||
{
|
||||
/* return the number of days */
|
||||
util_get_uptime (NULL, &days, NULL, NULL, NULL);
|
||||
util_get_time_diff (weechat_first_start_time, time (NULL),
|
||||
NULL, &days, NULL, NULL, NULL);
|
||||
snprintf (value, sizeof (value), "%d", days);
|
||||
return strdup (value);
|
||||
}
|
||||
|
@ -711,7 +714,8 @@ plugin_api_info_uptime_cb (const void *pointer, void *data,
|
|||
if (strcmp (arguments, "seconds") == 0)
|
||||
{
|
||||
/* return the number of seconds */
|
||||
util_get_uptime (&total_seconds, NULL, NULL, NULL, NULL);
|
||||
util_get_time_diff (weechat_first_start_time, time (NULL),
|
||||
&total_seconds, NULL, NULL, NULL, NULL);
|
||||
snprintf (value, sizeof (value), "%lld", (long long)total_seconds);
|
||||
return strdup (value);
|
||||
}
|
||||
|
|
Loading…
Reference in New Issue