Example #1
0
/** 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;
}
Example #2
0
/**
 * 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;
}