/** * vips_tracked_open: * @pathname: name of file to open * @flags: flags for open() * @...: open mode * * Exactly as open(2), but the number of files current open via * vips_tracked_open() is available via vips_tracked_get_files(). This is used * by the vips operation cache to drop cache when the number of files * available is low. * * You must only close the file descriptor with vips_tracked_close(). * * See also: vips_tracked_close(), vips_tracked_get_files(). * * Returns: a file descriptor, or -1 on error. */ int vips_tracked_open( const char *pathname, int flags, ... ) { int fd; mode_t mode; va_list ap; /* mode_t is promoted to int in ..., so we have to pull it out as an * int. */ va_start( ap, flags ); mode = va_arg( ap, int ); va_end( ap ); if( (fd = vips__open( pathname, flags, mode )) == -1 ) return( -1 ); vips_tracked_init(); g_mutex_lock( vips_tracked_mutex ); vips_tracked_files += 1; #ifdef DEBUG printf( "vips_tracked_open: %s = %d (%d)\n", pathname, fd, vips_tracked_files ); #endif /*DEBUG*/ g_mutex_unlock( vips_tracked_mutex ); return( fd ); }
int vips__open_read( const char *filename ) { return( vips__open( filename, MODE_READONLY ) ); }