in src/magic.c [72:119]
private void close_and_restore(const struct magic_set *, const char *, int,
const struct stat *);
private int unreadable_info(struct magic_set *, mode_t, const char *);
private const char* get_default_magic(void);
#ifndef COMPILE_ONLY
private const char *file_or_fd(struct magic_set *, const char *, int);
#endif
#ifndef STDIN_FILENO
#define STDIN_FILENO 0
#endif
#ifdef WIN32
/* HINSTANCE of this shared library. Needed for get_default_magic() */
static HINSTANCE _w32_dll_instance = NULL;
static void
_w32_append_path(char **hmagicpath, const char *fmt, ...)
{
char *tmppath;
char *newpath;
va_list ap;
va_start(ap, fmt);
if (vasprintf(&tmppath, fmt, ap) < 0) {
va_end(ap);
return;
}
va_end(ap);
if (access(tmppath, R_OK) == -1)
goto out;
if (*hmagicpath == NULL) {
*hmagicpath = tmppath;
return;
}
if (asprintf(&newpath, "%s%c%s", *hmagicpath, PATHSEP, tmppath) < 0)
goto out;
free(*hmagicpath);
free(tmppath);
*hmagicpath = newpath;
return;
out:
free(tmppath);
}