gallium/hud: support GALLIUM_HUD_DUMP_DIR feature on Windows

Use a dummy implementation of the access() function.  Use \ path separator.
Add a few comments.

Reviewed-by: Neha Bhende <bhenden@vmware.com>
This commit is contained in:
Brian Paul 2017-06-16 16:35:27 -06:00
parent d6cb912d65
commit b27281c110
1 changed files with 30 additions and 6 deletions

View File

@ -958,26 +958,50 @@ static void strcat_without_spaces(char *dst, const char *src)
*dst = 0;
}
#ifdef PIPE_OS_WINDOWS
#define W_OK 0
static int
access(const char *pathname, int mode)
{
/* no-op */
return 0;
}
#define PATH_SEP "\\"
#else
#define PATH_SEP "/"
#endif
/**
* If the GALLIUM_HUD_DUMP_DIR env var is set, we'll write the raw
* HUD values to files at ${GALLIUM_HUD_DUMP_DIR}/<stat> where <stat>
* is a HUD variable such as "fps", or "cpu"
*/
static void
hud_graph_set_dump_file(struct hud_graph *gr)
{
#ifndef PIPE_OS_WINDOWS
const char *hud_dump_dir = getenv("GALLIUM_HUD_DUMP_DIR");
char *dump_file;
if (hud_dump_dir && access(hud_dump_dir, W_OK) == 0) {
dump_file = malloc(strlen(hud_dump_dir) + sizeof("/") + sizeof(gr->name));
char *dump_file = malloc(strlen(hud_dump_dir) + sizeof(PATH_SEP)
+ sizeof(gr->name));
if (dump_file) {
strcpy(dump_file, hud_dump_dir);
strcat(dump_file, "/");
strcat(dump_file, PATH_SEP);
strcat_without_spaces(dump_file, gr->name);
gr->fd = fopen(dump_file, "w+");
if (gr->fd)
if (gr->fd) {
/* flush output after each line is written */
setvbuf(gr->fd, NULL, _IOLBF, 0);
}
free(dump_file);
}
}
#endif
}
/**