dd/util: extract dd_get_debug_filename_and_mkdir
authorNicolai Hähnle <nicolai.haehnle@amd.com>
Sun, 22 Oct 2017 15:38:58 +0000 (17:38 +0200)
committerNicolai Hähnle <nicolai.haehnle@amd.com>
Thu, 9 Nov 2017 13:01:03 +0000 (14:01 +0100)
Reviewed-by: Marek Olšák <marek.olsak@amd.com>
src/gallium/drivers/ddebug/dd_util.h

index 4e1a945c57d4c31c76bf2986ece6062ca7aa53d0..cfc0fb0ccce0f5d7b14c22caae553131b972895d 100644 (file)
 /* name of the directory in home */
 #define DD_DIR "ddebug_dumps"
 
-static inline FILE *
-dd_get_debug_file(bool verbose)
+static inline void
+dd_get_debug_filename_and_mkdir(char *buf, size_t buflen, bool verbose)
 {
    static unsigned index;
-   char proc_name[128], dir[256], name[512];
-   FILE *f;
+   char proc_name[128], dir[256];
 
    if (!os_get_process_name(proc_name, sizeof(proc_name))) {
       fprintf(stderr, "dd: can't get the process name\n");
-      return NULL;
+      strcpy(proc_name, "unknown");
    }
 
    snprintf(dir, sizeof(dir), "%s/"DD_DIR, debug_get_option("HOME", "."));
 
-   if (mkdir(dir, 0774) && errno != EEXIST) {
+   if (mkdir(dir, 0774) && errno != EEXIST)
       fprintf(stderr, "dd: can't create a directory (%i)\n", errno);
-      return NULL;
-   }
 
-   snprintf(name, sizeof(name), "%s/%s_%u_%08u", dir, proc_name, getpid(), index++);
+   snprintf(buf, buflen, "%s/%s_%u_%08u", dir, proc_name, getpid(), index++);
+
+   if (verbose)
+      fprintf(stderr, "dd: dumping to file %s\n", buf);
+}
+
+static inline FILE *
+dd_get_debug_file(bool verbose)
+{
+   char name[512];
+   FILE *f;
+
+   dd_get_debug_filename_and_mkdir(name, sizeof(name), verbose);
    f = fopen(name, "w");
    if (!f) {
       fprintf(stderr, "dd: can't open file %s\n", name);
       return NULL;
    }
 
-   if (verbose)
-      fprintf(stderr, "dd: dumping to file %s\n", name);
-
    return f;
 }