43 lines
1.1 KiB
C++
43 lines
1.1 KiB
C++
/*
|
|
* mkstemp.c
|
|
*
|
|
* Provides a trivial replacement for the POSIX `mkstemp()' function,
|
|
* suitable for use in MinGW (Win32) applications.
|
|
*
|
|
* This file is part of the MinGW32 package set.
|
|
*
|
|
* Contributed by Keith Marshall <keithmarshall@users.sourceforge.net>
|
|
* Patched to VS2013 by alex85k
|
|
* THIS SOFTWARE IS NOT COPYRIGHTED
|
|
*
|
|
* This source code is offered for use in the public domain. You may
|
|
* use, modify or distribute it freely.
|
|
*
|
|
* This code is distributed in the hope that it will be useful but
|
|
* WITHOUT ANY WARRANTY. ALL WARRANTIES, EXPRESS OR IMPLIED ARE HEREBY
|
|
* DISCLAIMED. This includes but is not limited to warranties of
|
|
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
|
|
*/
|
|
|
|
#ifndef WIN_MKSTEMP_H
|
|
#define WIN_MKSTEMP_H
|
|
|
|
#include <stdio.h>
|
|
#include <fcntl.h>
|
|
#include <share.h>
|
|
|
|
inline int mkstemp( char *templ )
|
|
{
|
|
int maxtry = 26, rtn = -1;
|
|
|
|
while( maxtry-- && (rtn < 0) )
|
|
{
|
|
char *r = _mktemp( templ );
|
|
if( r == NULL )
|
|
return -1;
|
|
rtn = sopen( r, O_RDWR | O_CREAT | O_EXCL | O_BINARY, SH_DENYRW, 0600 );
|
|
}
|
|
return rtn;
|
|
}
|
|
#endif
|