]> git.refcnt.org Git - colorize.git/blobdiff - colorize.c
Check if BUF_SIZE is defined
[colorize.git] / colorize.c
index 30d03bc1d1c3e65733f5bf8fc380b2f926c8a2f0..2cd137a5e65b18452f55115d554974ae285c9c58 100644 (file)
 #define streq(s1, s2) (strcmp (s1, s2) == 0)
 
 #if !DEBUG
-# define xmalloc(size)        malloc_wrap(size)
-# define xcalloc(nmemb, size) calloc_wrap(nmemb, size)
-# define xrealloc(ptr, size)  realloc_wrap(ptr, size)
+# define xmalloc(size)          malloc_wrap(size)
+# define xcalloc(nmemb, size)   calloc_wrap(nmemb, size)
+# define xrealloc(ptr, size)    realloc_wrap(ptr, size)
+# define xstrdup(str)           strdup_wrap(str,            NULL, 0)
+# define str_concat(str1, str2) str_concat_wrap(str1, str2, NULL, 0)
 #else
-# define xmalloc(size)        malloc_wrap_debug(size,        __FILE__, __LINE__)
-# define xcalloc(nmemb, size) calloc_wrap_debug(nmemb, size, __FILE__, __LINE__)
-# define xrealloc(ptr, size)  realloc_wrap_debug(ptr, size,  __FILE__, __LINE__)
+# define xmalloc(size)          malloc_wrap_debug(size,        __FILE__, __LINE__)
+# define xcalloc(nmemb, size)   calloc_wrap_debug(nmemb, size, __FILE__, __LINE__)
+# define xrealloc(ptr, size)    realloc_wrap_debug(ptr, size,  __FILE__, __LINE__)
+# define xstrdup(str)           strdup_wrap(str,               __FILE__, __LINE__)
+# define str_concat(str1, str2) str_concat_wrap(str1, str2,    __FILE__, __LINE__)
 #endif
 
 #define free_null(ptr) free_wrap((void **)&ptr)
-#define xstrdup(str)   strdup_wrap(str)
 
-#if BUF_SIZE <= 0 || BUF_SIZE > 65536
+#if defined(BUF_SIZE) && (BUF_SIZE <= 0 || BUF_SIZE > 65536)
 # undef BUF_SIZE
 #endif
 #ifndef BUF_SIZE
 #if !DEBUG
 # define MEM_ALLOC_FAIL() do {                                         \
     fprintf (stderr, "%s: memory allocation failure\n", program_name); \
-    exit (2);                                                          \
+    exit (EXIT_FAILURE);                                               \
 } while (false)
 #else
 # define MEM_ALLOC_FAIL_DEBUG(file, line) do {                                              \
     fprintf (stderr, "Memory allocation failure in source file %s, line %u\n", file, line); \
-    exit (2);                                                                               \
+    exit (EXIT_FAILURE);                                                                    \
 } while (false)
 #endif
 
@@ -215,8 +218,8 @@ static void *calloc_wrap_debug (size_t, size_t, const char *, unsigned int);
 static void *realloc_wrap_debug (void *, size_t, const char *, unsigned int);
 #endif
 static void free_wrap (void **);
-static char *strdup_wrap (const char *);
-static char *str_concat (const char *, const char *);
+static char *strdup_wrap (const char *, const char *, unsigned int);
+static char *str_concat_wrap (const char *, const char *, const char *, unsigned int);
 static bool get_bytes_size (unsigned long, struct bytes_size *);
 static char *get_file_type (mode_t);
 static bool has_color_name (const char *, const char *);
@@ -408,6 +411,7 @@ print_version (void)
 #else
     const char *version = NULL;
 #endif
+    const char *version_prefix, *version_string;
     const char *c_flags;
     struct bytes_size bytes_size;
     bool debug;
@@ -421,10 +425,10 @@ print_version (void)
 #else
     debug = false;
 #endif
-    if (version)
-      printf ("colorize %s (compiled at %s, %s)\n", version, __DATE__, __TIME__);
-    else
-      printf ("colorize v%s (compiled at %s, %s)\n", VERSION, __DATE__, __TIME__);
+    version_prefix = version ? "" : "v";
+    version_string = version ? version : VERSION;
+    printf ("colorize %s%s (compiled at %s, %s)\n", version_prefix, version_string, __DATE__, __TIME__);
+
     printf ("Compiler flags: %s\n", c_flags);
     if (get_bytes_size (BUF_SIZE, &bytes_size))
       {
@@ -1006,6 +1010,7 @@ malloc_wrap_debug (size_t size, const char *file, unsigned int line)
     void *p = malloc (size);
     if (!p)
       MEM_ALLOC_FAIL_DEBUG (file, line);
+    vfprintf_diag ("malloc'ed %lu bytes [source file %s, line %u]", (unsigned long)size, file, line);
     return p;
 }
 
@@ -1015,6 +1020,7 @@ calloc_wrap_debug (size_t nmemb, size_t size, const char *file, unsigned int lin
     void *p = calloc (nmemb, size);
     if (!p)
       MEM_ALLOC_FAIL_DEBUG (file, line);
+    vfprintf_diag ("calloc'ed %lu bytes [source file %s, line %u]", (unsigned long)(nmemb * size), file, line);
     return p;
 }
 
@@ -1024,6 +1030,7 @@ realloc_wrap_debug (void *ptr, size_t size, const char *file, unsigned int line)
     void *p = realloc (ptr, size);
     if (!p)
       MEM_ALLOC_FAIL_DEBUG (file, line);
+    vfprintf_diag ("realloc'ed %lu bytes [source file %s, line %u]", (unsigned long)size, file, line);
     return p;
 }
 #endif /* !DEBUG */
@@ -1035,22 +1042,28 @@ free_wrap (void **ptr)
     *ptr = NULL;
 }
 
+#if !DEBUG
+# define do_malloc(len, file, line) malloc_wrap(len)
+#else
+# define do_malloc(len, file, line) malloc_wrap_debug(len, file, line)
+#endif
+
 static char *
-strdup_wrap (const char *str)
+strdup_wrap (const char *str, const char *file, unsigned int line)
 {
     const size_t len = strlen (str) + 1;
-    char *p = xmalloc (len);
+    char *p = do_malloc (len, file, line);
     strncpy (p, str, len);
     return p;
 }
 
 static char *
-str_concat (const char *str1, const char *str2)
+str_concat_wrap (const char *str1, const char *str2, const char *file, unsigned int line)
 {
     const size_t len = strlen (str1) + strlen (str2) + 1;
     char *p, *str;
 
-    p = str = xmalloc (len);
+    p = str = do_malloc (len, file, line);
     strncpy (p, str1, strlen (str1));
     p += strlen (str1);
     strncpy (p, str2, strlen (str2));