]> granicus.if.org Git - transmission/commitdiff
Refactor "created on" value output a bit further
authorMike Gelfand <mikedld@mikedld.com>
Sat, 6 Oct 2018 21:26:16 +0000 (00:26 +0300)
committerMike Gelfand <mikedld@mikedld.com>
Sat, 6 Oct 2018 21:26:16 +0000 (00:26 +0300)
This eliminates partial string literal duplication but is otherwise
equivalent to the prior code.

utils/show.c

index db1bc26c9856937ea64b677ccd9eea351f1aad6c..78bf661d7717e6cfa75e2be47ff9becfc48342c4 100644 (file)
@@ -93,6 +93,33 @@ static int compare_files_by_name(void const* va, void const* vb)
     return strcmp(a->name, b->name);
 }
 
+static char const* unix_timestamp_to_str(time_t timestamp)
+{
+    if (timestamp == 0)
+    {
+        return "Unknown";
+    }
+
+    struct tm const* const local_time = localtime(&timestamp);
+
+    if (local_time == NULL)
+    {
+        return "Invalid";
+    }
+
+    static char buffer[32];
+    tr_strlcpy(buffer, asctime(local_time), TR_N_ELEMENTS(buffer));
+
+    char* const newline_pos = strchr(buffer, '\n');
+
+    if (newline_pos != NULL)
+    {
+        *newline_pos = '\0';
+    }
+
+    return buffer;
+}
+
 static void showInfo(tr_info const* inf)
 {
     char buf[128];
@@ -107,23 +134,7 @@ static void showInfo(tr_info const* inf)
     printf("  Name: %s\n", inf->name);
     printf("  Hash: %s\n", inf->hashString);
     printf("  Created by: %s\n", inf->creator ? inf->creator : "Unknown");
-
-    if (inf->dateCreated == 0)
-    {
-        printf("  Created on: Unknown\n");
-    }
-    else
-    {
-        struct tm *created_on = localtime(&inf->dateCreated);
-        if (created_on == NULL)
-        {
-            printf("  Created on: Invalid date\n");
-        }
-        else
-        {
-            printf("  Created on: %s", asctime(created_on));
-        }
-    }
+    printf("  Created on: %s\n", unix_timestamp_to_str(inf->dateCreated));
 
     if (inf->comment != NULL && *inf->comment != '\0')
     {