diff options
author | Nicolai Hähnle <nicolai.haehnle@amd.com> | 2017-10-22 17:38:58 +0200 |
---|---|---|
committer | Nicolai Hähnle <nicolai.haehnle@amd.com> | 2017-11-06 11:09:48 +0100 |
commit | 962a2fac156f9976427b2f60e55af0d58cead69b (patch) | |
tree | cad689bc8c62815bbeda4361453fca45542b72ca | |
parent | abcf042987887bdefb2a2d296004343472e0f29d (diff) |
dd/util: extract dd_get_debug_filename_and_mkdir
Reviewed-by: Marek Olšák <marek.olsak@amd.com>
-rw-r--r-- | src/gallium/drivers/ddebug/dd_util.h | 30 |
1 files changed, 18 insertions, 12 deletions
diff --git a/src/gallium/drivers/ddebug/dd_util.h b/src/gallium/drivers/ddebug/dd_util.h index 4e1a945c57..cfc0fb0ccc 100644 --- a/src/gallium/drivers/ddebug/dd_util.h +++ b/src/gallium/drivers/ddebug/dd_util.h @@ -40,35 +40,41 @@ /* 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; } |