1
0
mirror of https://github.com/weechat/weechat.git synced 2026-07-03 00:03:12 +02:00

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.
This commit is contained in:
Sébastien Helleu
2020-02-02 13:57:39 +01:00
parent 4e2718d234
commit 27266ccd02
4 changed files with 42 additions and 32 deletions
+2 -1
View File
@@ -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))
{
+29 -24
View File
@@ -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;
}
+4 -4
View File
@@ -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 */
+7 -3
View File
@@ -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);
}