67 lines
1.3 KiB
C
67 lines
1.3 KiB
C
/*
|
|
* Copyright 2015 (c) Anna Schumaker.
|
|
*/
|
|
#include <core/string.h>
|
|
|
|
#define O_SECONDS (1)
|
|
#define O_MINUTES (60)
|
|
#define O_HOURS (60 * O_MINUTES)
|
|
#define O_DAYS (24 * O_HOURS)
|
|
|
|
static unsigned int factor[4] = { O_DAYS, O_HOURS, O_MINUTES, O_SECONDS };
|
|
static const char *field[4] = { "day", "hour", "minute", "second" };
|
|
|
|
|
|
gchar *string_sec2str(unsigned int sec)
|
|
{
|
|
return g_strdup_printf("%u:%02u", sec / 60, sec % 60);
|
|
}
|
|
|
|
gchar *string_sec2str_long(unsigned int sec)
|
|
{
|
|
gchar *tmp;
|
|
unsigned int val;
|
|
gchar *res = g_strdup("");
|
|
|
|
for (unsigned int i = 0; i < 4; i++) {
|
|
val = sec / factor[i];
|
|
sec %= factor[i];
|
|
if (val == 0)
|
|
continue;
|
|
|
|
tmp = g_strdup_printf("%s%u %s%s%s", res, val, field[i],
|
|
(val > 1) ? "s" : "",
|
|
(sec > 0) ? ", " : "");
|
|
g_free(res);
|
|
res = tmp;
|
|
}
|
|
|
|
return res;
|
|
}
|
|
|
|
static void _drop_special(gchar *str)
|
|
{
|
|
unsigned int i, j = 0;
|
|
|
|
for (i = 0; i < strlen(str); i++) {
|
|
if (g_ascii_isalnum(str[i]))
|
|
str[j++] = str[i];
|
|
else if ((j > 0) && (str[i] == ' ') && (str[j - 1] != ' '))
|
|
str[j++] = str[i];
|
|
}
|
|
|
|
while (j < i)
|
|
str[j++] = '\0';
|
|
}
|
|
|
|
gchar *string_lowercase(const gchar *str)
|
|
{
|
|
gchar *res = g_ascii_strdown(str, -1);
|
|
|
|
g_strdelimit(res, "\\/,;()_-~+\" ", ' ');
|
|
_drop_special(res);
|
|
g_strstrip(res);
|
|
|
|
return res;
|
|
}
|