KnowledgeHub
Questions
Tags
Users
Search
Alex Rivera
|
Logout
Edit Question
Title
Body
I've written a program to probe the limits of a system's C time.h functions and dump them out in JSON. Then other things which depend on those functions can know their limits. # system time.h limits, as JSON { "gmtime": { "max": 2147483647, "min": -2147483648 }, "localtime": { "max": 2147483647, "min": -2147483648 }, "mktime": { "max": { "tm_sec": 7, "tm_min": 14, "tm_hour": 19, "tm_mday": 18, "tm_mon": 0, "tm_year": 138, "tm_wday": 1, "tm_yday": 17, "tm_isdst": 0 }, "min": { "tm_sec": 52, "tm_min": 45, "tm_hour": 12, "tm_mday": 13, "tm_mon": 11, "tm_year": 1, "tm_wday": 5, "tm_yday": 346, "tm_isdst": 0 } } } gmtime() and localtime() are simple enough, they just take numbers, but mktime() takes a tm struct. I wrote a custom function to turn a tm struct into a JSON hash. /* Dump a tm struct as a json fragment */ char * tm_as_json(const struct tm* date) { char *date_json = malloc(sizeof(char) * 512); #ifdef HAS_TM_TM_ZONE char zone_json[32]; #endif #ifdef HAS_TM_TM_GMTOFF char gmtoff_json[32]; #endif sprintf(date_json, "\"tm_sec\": %d, \"tm_min\": %d, \"tm_hour\": %d, \"tm_mday\": %d, \"tm_mon\": %d, \"tm_year\": %d, \"tm_wday\": %d, \"tm_yday\": %d, \"tm_isdst\": %d", date->tm_sec, date->tm_min, date->tm_hour, date->tm_mday, date->tm_mon, date->tm_year, date->tm_wday, date->tm_yday, date->tm_isdst ); #ifdef HAS_TM_TM_ZONE sprintf(&zone_json, ", \"tm_zone\": %s", date->tm_zone); strcat(date_json, zone_json); #endif #ifdef HAS_TM_TM_GMTOFF sprintf(&gmtoff_json", \"tm_gmtoff\": %ld", date->tm_gmtoff); strcat(date_json, gmtoff_json); #endif return date_json; } Is there a way to do this generically, for any given struct? Not
Tags (comma-separated)
Save Edits
Cancel