|
|
@ -1287,6 +1287,24 @@ static void setnow(tv_t *now) |
|
|
|
now->tv_usec = spec.tv_nsec / 1000; |
|
|
|
now->tv_usec = spec.tv_nsec / 1000; |
|
|
|
} |
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
static uint64_t ticks; |
|
|
|
|
|
|
|
static time_t last_tick; |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
static void tick() |
|
|
|
|
|
|
|
{ |
|
|
|
|
|
|
|
time_t now; |
|
|
|
|
|
|
|
char ch; |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
now = time(NULL); |
|
|
|
|
|
|
|
if (now != last_tick) { |
|
|
|
|
|
|
|
last_tick = now; |
|
|
|
|
|
|
|
ch = status_chars[ticks++ & 0x3]; |
|
|
|
|
|
|
|
putchar(ch); |
|
|
|
|
|
|
|
putchar('\r'); |
|
|
|
|
|
|
|
fflush(stdout); |
|
|
|
|
|
|
|
} |
|
|
|
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
static void dsp_transfer(K_ITEM *item, FILE *stream) |
|
|
|
static void dsp_transfer(K_ITEM *item, FILE *stream) |
|
|
|
{ |
|
|
|
{ |
|
|
|
TRANSFER *t = NULL; |
|
|
|
TRANSFER *t = NULL; |
|
|
@ -3170,6 +3188,8 @@ static bool workinfo_fill(PGconn *conn) |
|
|
|
|
|
|
|
|
|
|
|
if (tv_newer(&(dbstatus.newest_createdate_workinfo), &(row->createdate))) |
|
|
|
if (tv_newer(&(dbstatus.newest_createdate_workinfo), &(row->createdate))) |
|
|
|
copy_tv(&(dbstatus.newest_createdate_workinfo), &(row->createdate)); |
|
|
|
copy_tv(&(dbstatus.newest_createdate_workinfo), &(row->createdate)); |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
tick(); |
|
|
|
} |
|
|
|
} |
|
|
|
if (!ok) |
|
|
|
if (!ok) |
|
|
|
k_add_head(workinfo_free, item); |
|
|
|
k_add_head(workinfo_free, item); |
|
|
@ -3946,6 +3966,8 @@ static bool sharesummary_fill(PGconn *conn) |
|
|
|
copy_tv(&(dbstatus.oldest_sharesummary_firstshare_n), &(row->firstshare)); |
|
|
|
copy_tv(&(dbstatus.oldest_sharesummary_firstshare_n), &(row->firstshare)); |
|
|
|
} else if (tv_newer(&(dbstatus.newest_sharesummary_firstshare), &(row->firstshare))) |
|
|
|
} else if (tv_newer(&(dbstatus.newest_sharesummary_firstshare), &(row->firstshare))) |
|
|
|
copy_tv(&(dbstatus.newest_sharesummary_firstshare), &(row->firstshare)); |
|
|
|
copy_tv(&(dbstatus.newest_sharesummary_firstshare), &(row->firstshare)); |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
tick(); |
|
|
|
} |
|
|
|
} |
|
|
|
if (!ok) |
|
|
|
if (!ok) |
|
|
|
k_add_head(sharesummary_free, item); |
|
|
|
k_add_head(sharesummary_free, item); |
|
|
@ -4511,6 +4533,8 @@ static bool auths_fill(PGconn *conn) |
|
|
|
|
|
|
|
|
|
|
|
if (tv_newer(&(dbstatus.newest_createdate_auths), &(row->createdate))) |
|
|
|
if (tv_newer(&(dbstatus.newest_createdate_auths), &(row->createdate))) |
|
|
|
copy_tv(&(dbstatus.newest_createdate_auths), &(row->createdate)); |
|
|
|
copy_tv(&(dbstatus.newest_createdate_auths), &(row->createdate)); |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
tick(); |
|
|
|
} |
|
|
|
} |
|
|
|
if (!ok) |
|
|
|
if (!ok) |
|
|
|
k_add_head(auths_free, item); |
|
|
|
k_add_head(auths_free, item); |
|
|
@ -4742,6 +4766,8 @@ static bool poolstats_fill(PGconn *conn) |
|
|
|
|
|
|
|
|
|
|
|
if (tv_newer(&(dbstatus.newest_createdate_poolstats), &(row->createdate))) |
|
|
|
if (tv_newer(&(dbstatus.newest_createdate_poolstats), &(row->createdate))) |
|
|
|
copy_tv(&(dbstatus.newest_createdate_poolstats), &(row->createdate)); |
|
|
|
copy_tv(&(dbstatus.newest_createdate_poolstats), &(row->createdate)); |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
tick(); |
|
|
|
} |
|
|
|
} |
|
|
|
if (!ok) |
|
|
|
if (!ok) |
|
|
|
k_add_head(poolstats_free, item); |
|
|
|
k_add_head(poolstats_free, item); |
|
|
@ -5196,6 +5222,8 @@ static bool userstats_fill(PGconn *conn) |
|
|
|
if (tv_newer(&(dbstatus.newest_starttimeband_userstats), &statsdate)) |
|
|
|
if (tv_newer(&(dbstatus.newest_starttimeband_userstats), &statsdate)) |
|
|
|
copy_tv(&(dbstatus.newest_starttimeband_userstats), &statsdate); |
|
|
|
copy_tv(&(dbstatus.newest_starttimeband_userstats), &statsdate); |
|
|
|
} |
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
tick(); |
|
|
|
} |
|
|
|
} |
|
|
|
if (!ok) |
|
|
|
if (!ok) |
|
|
|
k_add_head(userstats_free, item); |
|
|
|
k_add_head(userstats_free, item); |
|
|
@ -7386,24 +7414,6 @@ static void *summariser(__maybe_unused void *arg) |
|
|
|
return NULL; |
|
|
|
return NULL; |
|
|
|
} |
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
static uint64_t ticks; |
|
|
|
|
|
|
|
static time_t last_tick; |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
static void tick() |
|
|
|
|
|
|
|
{ |
|
|
|
|
|
|
|
time_t now; |
|
|
|
|
|
|
|
char ch; |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
now = time(NULL); |
|
|
|
|
|
|
|
if (now > last_tick) { |
|
|
|
|
|
|
|
last_tick = now; |
|
|
|
|
|
|
|
ch = status_chars[ticks++ & 0x3]; |
|
|
|
|
|
|
|
putchar(ch); |
|
|
|
|
|
|
|
putchar('\r'); |
|
|
|
|
|
|
|
fflush(stdout); |
|
|
|
|
|
|
|
} |
|
|
|
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
static void reload_line(char *filename, uint64_t count, char *buf) |
|
|
|
static void reload_line(char *filename, uint64_t count, char *buf) |
|
|
|
{ |
|
|
|
{ |
|
|
|
char cmd[CMD_SIZ+1], id[ID_SIZ+1]; |
|
|
|
char cmd[CMD_SIZ+1], id[ID_SIZ+1]; |
|
|
|