int __pakfire_strftime(char* buffer, const size_t length,
const char* format, const time_t t) __attribute__((format(strftime, 3, 0)));
-char* pakfire_format_date(time_t t);
-
#define pakfire_strftime_now(buffer, format) \
__pakfire_strftime_now(buffer, sizeof(dest), format)
int __pakfire_strftime_now(char* buffer, const size_t length, const char* format)
}
PAKFIRE_EXPORT char* pakfire_key_dump(struct pakfire_key* key) {
- char* s = "";
+ char date[1024];
+ char* s = NULL;
+ int r;
time_t created = pakfire_key_get_created(key);
- char* date_created = pakfire_format_date(created);
+
+ // Format creation time
+ r = pakfire_strftime(date, "%Y-%m-%d", created);
+ if (r)
+ goto ERROR;
asprintf(&s, "pub %s%zu/%s %s",
pakfire_key_get_pubkey_algo(key),
pakfire_key_get_pubkey_length(key),
pakfire_key_get_fingerprint(key),
- date_created
+ date
);
- free(date_created);
const char* uid = pakfire_key_get_uid(key);
if (uid) {
time_t expires = pakfire_key_get_expires(key);
if (expires) {
- char* date_expires = pakfire_format_date(expires);
- asprintf(&s, "%s\n %s: %s", s, _("Expires"), date_expires);
- free(date_expires);
+ r = pakfire_strftime(date, "%Y-%m-%d", expires);
+ if (r)
+ goto ERROR;
+
+ asprintf(&s, "%s\n %s: %s", s, _("Expires"), date);
}
return s;
+
+ERROR:
+ if (s)
+ free(s);
+
+ return NULL;
}
int pakfire_key_sign(struct pakfire_key* key, const char* buffer, const size_t buffer_length,
return 0;
}
-char* pakfire_format_date(time_t t) {
- char buffer[1024];
- int r;
-
- // Format time
- r = pakfire_strftime(buffer, "%Y-%m-%d", t);
- if (r)
- return NULL;
-
- return strdup(buffer);
-}
-
int __pakfire_strftime_now(char* buffer, size_t length, const char* format) {
// Fetch the current time
const time_t t = time(NULL);