summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorNicolai Hähnle <nicolai.haehnle@amd.com>2017-10-22 17:38:58 +0200
committerNicolai Hähnle <nicolai.haehnle@amd.com>2017-11-06 11:09:48 +0100
commit962a2fac156f9976427b2f60e55af0d58cead69b (patch)
treecad689bc8c62815bbeda4361453fca45542b72ca
parentabcf042987887bdefb2a2d296004343472e0f29d (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.h30
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;
}