/* Does a filename have one of a set of suffixes. Ignore case and any trailing * options. */ int vips_filename_suffix_match( const char *path, const char *suffixes[] ) { char *basename; char *q; int result; const char **p; /* Drop any directory components. */ basename = g_path_get_basename( path ); /* Zap any trailing [] options. */ if( (q = (char *) vips__find_rightmost_brackets( basename )) ) *q = '\0'; result = 0; for( p = suffixes; *p; p++ ) if( vips_iscasepostfix( basename, *p ) ) { result = 1; break; } g_free( basename ); return( result ); }
static int write_dzi( VipsForeignSaveDz *dz ) { GsfOutput *out; char buf[VIPS_PATH_MAX]; char *p; vips_snprintf( buf, VIPS_PATH_MAX, "%s.dzi", dz->basename ); out = vips_gsf_path( dz->tree, buf, NULL ); vips_snprintf( buf, VIPS_PATH_MAX, "%s", dz->suffix + 1 ); if( (p = (char *) vips__find_rightmost_brackets( buf )) ) *p = '\0'; gsf_output_printf( out, "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n" ); gsf_output_printf( out, "<Image " "xmlns=\"http://schemas.microsoft.com/deepzoom/2008\"\n" ); gsf_output_printf( out, " Format=\"%s\"\n", buf ); gsf_output_printf( out, " Overlap=\"%d\"\n", dz->overlap ); gsf_output_printf( out, " TileSize=\"%d\"\n", dz->tile_size ); gsf_output_printf( out, " >\n" ); gsf_output_printf( out, " <Size \n" ); gsf_output_printf( out, " Height=\"%d\"\n", dz->layer->height ); gsf_output_printf( out, " Width=\"%d\"\n", dz->layer->width ); gsf_output_printf( out, " />\n" ); gsf_output_printf( out, "</Image>\n" ); (void) gsf_output_close( out ); g_object_unref( out ); return( 0 ); }
/* Split a vips8-style filename + options. * * filename and option_string must be VIPS_PATH_MAX in length. */ void vips__filename_split8( const char *name, char *filename, char *option_string ) { char *p; vips_strncpy( filename, name, VIPS_PATH_MAX ); if( (p = (char *) vips__find_rightmost_brackets( filename )) ) { vips_strncpy( option_string, p, VIPS_PATH_MAX ); *p = '\0'; } else vips_strncpy( option_string, "", VIPS_PATH_MAX ); }