return ret;
}
-time_t now;
-
-static int get_local_time(uint64_t *seconds, char *buf, size_t size)
+static int get_local_time(uint64_t *seconds, char *buf, size_t size,
+ time_t current_time)
{
struct tm t;
if (!localtime_r((time_t *)seconds, &t))
return -E_LOCALTIME;
- if (*seconds + 6 * 30 * 24 * 3600 > now) {
+ if (*seconds + 6 * 30 * 24 * 3600 > current_time) {
if (!strftime(buf, size, "%b %e %k:%M", &t))
return -E_STRFTIME;
return 1;
}
static int print_list_item(struct ls_data *d, struct ls_options *opts,
- struct para_buffer *b)
+ struct para_buffer *b, time_t current_time)
{
int ret;
char att_buf[65];
}
get_attribute_bitmap(&afsi->attributes, att_buf);
ret = get_local_time(&afsi->last_played, last_played_time,
- sizeof(last_played_time));
+ sizeof(last_played_time), current_time);
if (ret < 0)
return ret;
get_duration_buf(afhi->seconds_total, duration_buf, w->duration_width);
char *p, *pattern_start = (char *)query->data + sizeof(*opts);
struct para_buffer b = {.buf = NULL, .size = 0};
int i = 0, ret;
+ time_t current_time;
+
PARA_NOTICE_LOG("%d patterns\n", opts->num_patterns);
if (opts->num_patterns) {
ret = sort_matching_paths(opts);
if (ret < 0)
goto out;
+ time(¤t_time);
if (opts->flags & LS_FLAG_REVERSE)
for (i = opts->num_matching_paths - 1; i >= 0; i--) {
- ret = print_list_item(opts->data_ptr[i], opts, &b);
+ ret = print_list_item(opts->data_ptr[i], opts, &b, current_time);
if (ret < 0)
break;
}
else
for (i = 0; i < opts->num_matching_paths; i++) {
- ret = print_list_item(opts->data_ptr[i], opts, &b);
+ ret = print_list_item(opts->data_ptr[i], opts, &b, current_time);
if (ret < 0)
break;
}
}
/*
- * TODO: flags -h (sort by hash)
+ * TODO: flags -h (sort by hash) -lm (list in mbox format)
*
* long list: list hash, attributes as (xx--x-x-), file size, lastplayed
* full list: list everything, including afsi, afhi, atts as clear text
}
return -E_AFT_SYNTAX;
}
- time(&now);
opts.flags = flags;
opts.sorting = sort;
opts.mode = mode;