]> git.refcnt.org Git - colorize.git/blobdiff - colorize.c
Include all flags in version output
[colorize.git] / colorize.c
index 05fd84639763a84768f1a5b8bc999c623fd889a7..7faeb8008392459b9d32381445212854d2b2a2fa 100644 (file)
@@ -125,8 +125,6 @@ struct color_name {
     char *orig;
 };
 
-static struct color_name *color_names[3] = { NULL, NULL, NULL };
-
 struct color {
     const char *name;
     const char *code;
@@ -341,10 +339,13 @@ main (int argc, char **argv)
     exit (EXIT_SUCCESS);
 }
 
-#define SET_OPT_TYPE(type) \
-    opt_type = type;       \
-    opt = 0;               \
-    goto PARSE_OPT;        \
+#define PRINT_HELP_EXIT() \
+    print_help ();        \
+    exit (EXIT_SUCCESS);  \
+
+#define PRINT_VERSION_EXIT() \
+    print_version ();        \
+    exit (EXIT_SUCCESS);     \
 
 extern char *optarg;
 
@@ -354,7 +355,6 @@ process_opts (int argc, char **argv)
     int opt;
     while ((opt = getopt_long (argc, argv, "hV", long_opts, NULL)) != -1)
       {
-        PARSE_OPT:
         switch (opt)
           {
             case 0: /* long opts */
@@ -385,19 +385,17 @@ process_opts (int argc, char **argv)
                     break;
                   }
                   case OPT_HELP:
-                    print_help ();
-                    exit (EXIT_SUCCESS);
+                    PRINT_HELP_EXIT ();
                   case OPT_VERSION:
-                    print_version ();
-                    exit (EXIT_SUCCESS);
+                    PRINT_VERSION_EXIT ();
                   default: /* never reached */
                     ABORT_TRACE ();
                 }
               break;
             case 'h':
-              SET_OPT_TYPE (OPT_HELP);
+              PRINT_HELP_EXIT ();
             case 'V':
-              SET_OPT_TYPE (OPT_VERSION);
+              PRINT_VERSION_EXIT ();
             case '?':
               print_hint ();
               exit (EXIT_FAILURE);
@@ -475,7 +473,7 @@ print_version (void)
     const char *version = NULL;
 #endif
     const char *version_prefix, *version_string;
-    const char *c_flags;
+    const char *c_flags, *ld_flags, *cpp_flags;
     struct bytes_size bytes_size;
     bool debug;
 #ifdef CFLAGS
@@ -483,6 +481,16 @@ print_version (void)
 #else
     c_flags = "unknown";
 #endif
+#ifdef LDFLAGS
+    ld_flags = to_str (LDFLAGS);
+#else
+    ld_flags = "unknown";
+#endif
+#ifdef CPPFLAGS
+    cpp_flags = to_str (CPPFLAGS);
+#else
+    cpp_flags = "unknown";
+#endif
 #if DEBUG
     debug = true;
 #else
@@ -493,6 +501,8 @@ print_version (void)
     printf ("colorize %s%s (compiled at %s, %s)\n", version_prefix, version_string, __DATE__, __TIME__);
 
     printf ("Compiler flags: %s\n", c_flags);
+    printf ("Linker flags: %s\n", ld_flags);
+    printf ("Preprocessor flags: %s\n", cpp_flags);
     if (get_bytes_size (BUF_SIZE, &bytes_size))
       {
         if (BUF_SIZE % 1024 == 0)
@@ -510,8 +520,6 @@ print_version (void)
 static void
 cleanup (void)
 {
-    free_color_names (color_names);
-
     if (stream && fileno (stream) != STDIN_FILENO)
       fclose (stream);
 #if DEBUG
@@ -534,9 +542,9 @@ free_color_names (struct color_name **color_names)
     unsigned int i;
     for (i = 0; color_names[i]; i++)
       {
-        free (color_names[i]->name);
-        free (color_names[i]->orig);
-        free_null (color_names[i]);
+        RELEASE_VAR (color_names[i]->name);
+        RELEASE_VAR (color_names[i]->orig);
+        RELEASE_VAR (color_names[i]);
       }
 }
 
@@ -546,6 +554,7 @@ process_args (unsigned int arg_cnt, char **arg_strings, bool *bold, const struct
     int ret;
     char *p;
     struct stat sb;
+    struct color_name *color_names[3] = { NULL, NULL, NULL };
 
     const char *color_string = arg_cnt >= 1 ? arg_strings[0] : NULL;
     const char *file_string  = arg_cnt == 2 ? arg_strings[1] : NULL;
@@ -557,7 +566,7 @@ process_args (unsigned int arg_cnt, char **arg_strings, bool *bold, const struct
         if (file_string)
           vfprintf_fail (formats[FMT_GENERIC], "hyphen cannot be used as color string");
         else
-          vfprintf_fail (formats[FMT_GENERIC], "hyphen must be preceeded by color string");
+          vfprintf_fail (formats[FMT_GENERIC], "hyphen must be preceded by color string");
       }
 
     ret = lstat (color_string, &sb);
@@ -687,7 +696,7 @@ skip_path_colors (const char *color_string, const char *file_string, const struc
         else
           {
             if (VALID_FILE_TYPE (mode))
-              vfprintf_fail (formats[FMT_QUOTE], get_file_type (mode), file_exists, "must be preceeded by color string");
+              vfprintf_fail (formats[FMT_QUOTE], get_file_type (mode), file_exists, "must be preceded by color string");
             else
               vfprintf_fail (formats[FMT_QUOTE], get_file_type (mode), file_exists, "is not a valid file type");
           }
@@ -743,13 +752,16 @@ gather_color_names (const char *color_string, bool *bold, struct color_name **co
           }
 
         color_names[index] = xcalloc (1, sizeof (struct color_name));
+        STACK_VAR (color_names[index]);
 
         color_names[index]->orig = xstrdup (color);
+        STACK_VAR (color_names[index]->orig);
 
         for (ch = color; *ch; ch++)
           *ch = tolower (*ch);
 
         color_names[index]->name = xstrdup (color);
+        STACK_VAR (color_names[index]->name);
       }
 
     RELEASE_VAR (str);