diff options
Diffstat (limited to 'libglusterfs/src/common-utils.h')
| -rw-r--r-- | libglusterfs/src/common-utils.h | 28 | 
1 files changed, 28 insertions, 0 deletions
diff --git a/libglusterfs/src/common-utils.h b/libglusterfs/src/common-utils.h index d5880291250..3df6dd91ccb 100644 --- a/libglusterfs/src/common-utils.h +++ b/libglusterfs/src/common-utils.h @@ -392,6 +392,34 @@ memdup (const void *ptr, size_t size)  	return newptr;  } +typedef enum { +        gf_timefmt_default = 0, +        gf_timefmt_FT = 0,  /* YYYY-MM-DD hh:mm:ss */ +        gf_timefmt_Ymd_T,   /* YYYY/MM-DD-hh:mm:ss */ +        gf_timefmt_bdT,     /* ddd DD hh:mm:ss */ +        gf_timefmt_F_HMS,   /* YYYY-MM-DD hhmmss */ +        gf_timefmt_last +} gf_timefmts; + +static inline void +gf_time_fmt (char *dst, size_t sz_dst, time_t utime, unsigned int fmt) +{ +        extern void _gf_timestuff (gf_timefmts *, const char ***, const char ***); +        static gf_timefmts timefmt_last = (gf_timefmts) -1; +        static const char **fmts; +        static const char **zeros; +        struct tm tm; + +        if (timefmt_last == -1) +                _gf_timestuff (&timefmt_last, &fmts, &zeros); +        if (timefmt_last < fmt) fmt = gf_timefmt_default; +        if (gmtime_r (&utime, &tm) != NULL) { +                strftime (dst, sz_dst, fmts[fmt], &tm); +        } else { +                strncpy (dst, zeros[fmt], sz_dst); +        } +} +  /*   * rounds up nr to power of two. If nr is already a power of two, just returns   * nr  | 
