private void close_and_restore()

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);
}