64 #define XIO_WARN(f) xprintf(Warn, "File pointer '%p' not in xfiles_map. Opened with regular fopen() or already closed?\n", (f) )
65 #define XIO_PRINT_INFO(f) printf( "XIO: In function '%s', %s\n", __func__, xio_getfulldescription( f ) )
66 #define XIO_DEBUG(f) do { if ( Xio::get_instance()->get_verbosity() > 0 ) XIO_PRINT_INFO(f); } while (0)
94 xprintf(
Warn,
"The XIO library already initialized.\n");
191 const char prn_format_long[] =
"FILE ptr %p: x->name '%s', x->mode '%s', x->line '%d'";
192 const char prn_format_short[] =
"FILE ptr %p: unknown FILE pointer";
193 static char * rs = NULL;
194 static int maxlen = 0;
201 rs = (
char *)
xmalloc( maxlen );
211 rs = (
char *)
xrealloc( rs, maxlen );
217 len = snprintf( rs, maxlen, prn_format_short, f );
221 rs = (
char *)
xrealloc( rs, maxlen );
222 snprintf( rs, maxlen, prn_format_short, f );
246 FILE *
xfopen(
const std::string& fname,
const char *mode )
248 const char *fnamec = fname.c_str();
249 return xfopen(fnamec,mode);
258 FILE *
xfopen(
const char *fname,
const char *mode )
265 ASSERT(!( (fname == NULL) || (mode == NULL) ),
"NULL pointer as argument of function xfopen()\n");
267 rc = fopen( fname, mode );
268 INPUT_CHECK( rc != NULL ,
"Cannot open file '%s' with permissions %s\n", fname, mode );
275 strcpy(xf->
mode, mode);
293 ASSERT(!(f == NULL),
"NULL as input argument\n");
318 ASSERT(!( stream == NULL ),
"NULL pointer as argument of function xfclose()\n");
322 rc = fclose( stream );
352 FILE *
xfreopen(
const char * filename,
const char * mode, FILE * stream )
358 ASSERT(!( (mode == NULL) || (stream == NULL)),
"Wrong arguments\n");
360 rc = freopen( filename, mode, stream );
362 INPUT_CHECK( rc != NULL ,
"Cannot reopen file %s with permissions %s\n", filename, mode );
369 if ( strlen(filename) > strlen(xf->
filename) )
374 if ( strlen(mode) > strlen(xf->
mode) )
376 strcpy(xf->
mode, mode);
387 strcpy(xf->
mode, mode);
407 ASSERT(!( (out == NULL) || (fmt == NULL) ),
"NULL pointer as argument of function xfprintf()\n");
408 va_start( argptr, fmt );
409 rc = vfprintf( out, fmt, argptr );
426 ASSERT(!( (in == NULL) || (fmt == NULL) ),
"NULL pointer as argument of function xfscanf()\n");
427 va_start( argptr , fmt );
428 rc = vfscanf( in, fmt, argptr );
445 ASSERT(!(f == NULL),
"NULL file\n");
464 ASSERT(!(f == NULL),
"NULL file\n");
499 ASSERT(!(f == NULL),
"NULL file\n");
507 if ( ( rc ==
'\n' ) && ( xf->
lineno > 0 ) )
527 int xrename (
const char * oldname,
const char * newname )
532 ASSERT(!(( oldname == NULL) || (newname == NULL)),
"NULL file name\n");
534 rc = rename( oldname, newname );
536 INPUT_CHECK( rc != 0,
"Failed when renaming '%s' to '%s'\n", oldname, newname );
548 size_t xfread(
void * ptr,
size_t size,
size_t count, FILE * stream )
553 ASSERT(!( (ptr == NULL) || ( stream == NULL) ),
"Incorrect arguments\n");
555 rc = fread( ptr, size, count, stream );
572 size_t xfwrite(
const void * ptr,
size_t size,
size_t count, FILE * stream )
577 ASSERT(!( (ptr == NULL) || (stream == NULL) ),
"Incorrect arguments\n");
579 rc = fwrite( ptr, size, count, stream );
602 ASSERT(!( (s == NULL) || (in == NULL) ),
"Incorrect arguments of function xfgets()\n");
603 rc = fgets( s, n, in );
640 ASSERT(!(f == NULL),
"NULL file argument in xrewind()\n");