26 #if defined ( MSDOS ) || defined ( WIN32 )
27 #include <sys/types.h>
40 #if defined ( _MSC_VER ) && _MSC_VER >= 1400
42 #define mktemp _mktemp
44 #define fdopen _fdopen
60 if ( size == 0 || nmemb == 0 )
66 fwrite( buf, size, nmemb, stream );
68 if ( ferror( stream ) )
73 plabort(
"Error writing to file" );
92 if ( size == 0 || nmemb == 0 )
94 plwarn(
"Zero length buffer size in plio_fread, returning" );
101 bytes = fread( buf, size, nmemb, stream );
103 if ( ( bytes < nmemb ) && ferror( stream ) )
106 plabort(
"Error reading from file" );
138 plwarn(
"Zero length buffer size in plio_fgets, returning" );
145 s = fgets( buf, size, stream );
147 if ( s == NULL && ferror( stream ) )
150 plabort(
"Error reading from file" );
177 const char *tmpname =
"plplot_XXXXXX";
178 #if !defined PL_HAVE_MKSTEMP
182 #if defined ( MSDOS ) || defined ( WIN32 )
183 tmpdir = getenv(
"TEMP" );
185 tmpdir = getenv(
"TMPDIR" );
190 if ( tmpdir == NULL )
194 if ( tmpdir == NULL )
196 #if defined ( MSDOS ) || defined ( WIN32 )
197 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";
309 dirname = (
char *) malloc(
sizeof (
char ) * ( strlen( tmpdir ) + strlen( tmpname ) + 2 ) );
310 strcpy( dirname, tmpdir );
311 #if defined ( MSDOS ) || defined ( WIN32 )
312 strcat( dirname,
"\\" );
314 strcat( dirname,
"/" );
316 strcat( dirname, tmpname );
318 dirname = mkdtemp( dirname );
319 *p_dirname = dirname;
322 template = (
char *) malloc(
sizeof (
char ) * ( strlen( tmpdir ) + strlen( tmpname ) + strlen( fifoname ) + 4 ) );
323 strcpy(
template, dirname );
324 #if defined ( MSDOS ) || defined ( WIN32 )
325 strcat(
template,
"\\" );
327 strcat(
template,
"/" );
329 strcat(
template, fifoname );
330 *p_fifoname =
template;
333 if ( mkfifo(
template, S_IRUSR | S_IWUSR | S_IRGRP | S_IROTH ) < 0 )