void grn_time_now(grn_ctx *ctx, grn_obj *obj) { grn_timeval tv; grn_timeval_now(ctx, &tv); GRN_TIME_SET(ctx, obj, GRN_TIME_PACK(tv.tv_sec, GRN_TIME_NSEC_TO_USEC(tv.tv_nsec))); }
grn_rc grn_timeval2str(grn_ctx *ctx, grn_timeval *tv, char *buf, size_t buf_size) { struct tm tm; struct tm *ltm; ltm = grn_timeval2tm(ctx, tv, &tm); grn_snprintf(buf, buf_size, GRN_TIMEVAL_STR_SIZE, GRN_TIMEVAL_STR_FORMAT, ltm->tm_year + 1900, ltm->tm_mon + 1, ltm->tm_mday, ltm->tm_hour, ltm->tm_min, ltm->tm_sec, (int)(GRN_TIME_NSEC_TO_USEC(tv->tv_nsec))); if (buf_size > GRN_TIMEVAL_STR_SIZE) { buf[GRN_TIMEVAL_STR_SIZE - 1] = '\0'; } else { buf[buf_size - 1] = '\0'; } return ctx->rc; }
static void rotate_log_file(grn_ctx *ctx, const char *current_path) { char rotated_path[PATH_MAX]; grn_timeval now; struct tm tm_buffer; struct tm *tm; grn_timeval_now(ctx, &now); tm = grn_timeval2tm(ctx, &now, &tm_buffer); grn_snprintf(rotated_path, PATH_MAX, PATH_MAX, "%s.%04d-%02d-%02d-%02d-%02d-%02d-%06d", current_path, tm->tm_year + 1900, tm->tm_mon + 1, tm->tm_mday, tm->tm_hour, tm->tm_min, tm->tm_sec, (int)(GRN_TIME_NSEC_TO_USEC(now.tv_nsec))); rename(current_path, rotated_path); }