/** deprecated, use netsnmp_mktemp instead */ const char * make_tempfile(void) { static char name[32]; int fd = -1; strcpy(name, get_temp_file_pattern()); #ifdef HAVE_MKSTEMP fd = mkstemp(name); #else if (mktemp(name)) { # ifndef WIN32 fd = open(name, O_CREAT | O_EXCL | O_WRONLY); # else /* Win32 needs _S_IREAD | _S_IWRITE to set permissions on file after closing */ fd = _open(name, _O_CREAT, _S_IREAD | _S_IWRITE | _O_EXCL | _O_WRONLY); # endif } #endif if (fd >= 0) { close(fd); DEBUGMSGTL(("make_tempfile", "temp file created: %s\n", name)); return name; } snmp_log(LOG_ERR,"make_tempfile: error creating file %s\n", name); return NULL; }
/** * netsnmp_mktemp creates a temporary file based on the * configured tempFilePattern * * @return file descriptor */ const char * netsnmp_mktemp(void) { #ifdef PATH_MAX static char name[PATH_MAX]; #else static char name[256]; #endif int fd = -1; strlcpy(name, get_temp_file_pattern(), sizeof(name)); #ifdef HAVE_MKSTEMP { mode_t oldmask = umask(~(S_IRUSR | S_IWUSR)); netsnmp_assert(oldmask != (mode_t)(-1)); fd = mkstemp(name); umask(oldmask); } #else if (mktemp(name)) { # ifndef WIN32 fd = open(name, O_CREAT | O_EXCL | O_WRONLY, S_IRUSR | S_IWUSR); # else /* * Win32 needs _S_IREAD | _S_IWRITE to set permissions on file * after closing */ fd = _open(name, _O_CREAT | _O_EXCL | _O_WRONLY, _S_IREAD | _S_IWRITE); # endif } #endif if (fd >= 0) { close(fd); DEBUGMSGTL(("netsnmp_mktemp", "temp file created: %s\n", name)); return name; } snmp_log(LOG_ERR, "netsnmp_mktemp: error creating file %s\n", name); return NULL; }