28 #if defined ( MSDOS ) || defined ( WIN32 )
29 #include <sys/types.h>
42 #if defined ( _MSC_VER ) && _MSC_VER >= 1400
44 #define mktemp _mktemp
46 #define fdopen _fdopen
61 if ( size == 0 || nmemb == 0 )
67 fwrite( buf, size, nmemb, stream );
69 if ( ferror( stream ) )
74 plabort(
"Error writing to file" );
93 if ( size == 0 || nmemb == 0 )
95 plwarn(
"Zero length buffer size in plio_fread, returning" );
102 bytes = fread( buf, size, nmemb, stream );
104 if ( ( bytes < nmemb ) && ferror( stream ) )
107 plabort(
"Error reading from file" );
139 plwarn(
"Zero length buffer size in plio_fgets, returning" );
146 s = fgets( buf, size, stream );
148 if ( s == NULL && ferror( stream ) )
151 plabort(
"Error reading from file" );
178 const char *tmpname =
"plplot_XXXXXX";
179 #if !defined PL_HAVE_MKSTEMP
183 #if defined ( MSDOS ) || defined ( WIN32 )
184 tmpdir = getenv(
"TEMP" );
186 tmpdir = getenv(
"TMPDIR" );
191 if ( tmpdir == NULL )
195 if ( tmpdir == NULL )
197 #if defined ( MSDOS ) || defined ( WIN32 )
198 tmpdir =
"c:\\windows\\Temp";
205 template = (
char *) malloc(
sizeof (
char ) * ( strlen( tmpdir ) + strlen( tmpname ) + 2 ) );
206 strcpy(
template, tmpdir );
207 #if defined ( MSDOS ) || defined ( WIN32 )
208 strcat(
template,
"\\" );
210 strcat(
template,
"/" );
212 strcat(
template, tmpname );
214 #ifdef PL_HAVE_MKSTEMP
215 fd = fdopen( mkstemp(
template ),
"wb+" );
218 plwarn(
"pl_create_tempfile: Unable to open temporary file - returning" );
226 #ifdef PL_HAVE_UNLINK
231 #if !defined ( _S_IREAD )
234 #if !defined ( _S_IWRITE )
235 #define _S_IWRITE 128
238 flags = O_RDWR | O_BINARY | O_CREAT | O_EXCL | _O_SHORT_LIVED;
242 flags = flags | _O_TEMPORARY;
276 #if !defined PL_HAVE_MKDTEMP || !defined PL_HAVE_MKFIFO
277 plwarn(
"Creating fifos not supported on this platform" );
283 const char *tmpname =
"plplot_dir_XXXXXX";
284 const char *fifoname =
"plplot_fifo";
286 #if defined ( MSDOS ) || defined ( WIN32 )
287 tmpdir = getenv(
"TEMP" );
289 tmpdir = getenv(
"TMPDIR" );
294 if ( tmpdir == NULL )
298 if ( tmpdir == NULL )
300 #if defined ( MSDOS ) || defined ( WIN32 )
301 tmpdir =
"c:\\windows\\Temp";
308 dirname = (
char *) malloc(
sizeof (
char ) * ( strlen( tmpdir ) + strlen( tmpname ) + 2 ) );
309 strcpy( dirname, tmpdir );
310 #if defined ( MSDOS ) || defined ( WIN32 )
311 strcat( dirname,
"\\" );
313 strcat( dirname,
"/" );
315 strcat( dirname, tmpname );
317 dirname = mkdtemp( dirname );
318 *p_dirname = dirname;
321 template = (
char *) malloc(
sizeof (
char ) * ( strlen( tmpdir ) + strlen( tmpname ) + strlen( fifoname ) + 4 ) );
322 strcpy(
template, dirname );
323 #if defined ( MSDOS ) || defined ( WIN32 )
324 strcat(
template,
"\\" );
326 strcat(
template,
"/" );
328 strcat(
template, fifoname );
329 *p_fifoname =
template;
332 if ( mkfifo(
template, S_IRUSR | S_IWUSR | S_IRGRP | S_IROTH ) < 0 )