void search_for_file(udf_t *p_udf, udf_dirent_t *p_udf_dirent, const char *path, const char *target) { while (udf_readdir(p_udf_dirent)) { const char *dirname = udf_get_filename(p_udf_dirent); if (udf_is_dir(p_udf_dirent)) { udf_dirent_t *p_udf_dirent2 = udf_opendir(p_udf_dirent); if (p_udf_dirent2) { const unsigned int i_newlen=2 + strlen(path) + strlen(dirname); char *newpath = (char *)calloc(1, sizeof(char)*i_newlen); snprintf(newpath, i_newlen, "%s%s/", path, dirname); search_for_file(p_udf, p_udf_dirent2, newpath, target); free(newpath); } } else if (strcmp(dirname, target) == 0) { const unsigned int i_newlen=2 + strlen(path) + strlen(dirname); char *newpath = (char *)calloc(1, sizeof(char)*i_newlen); snprintf(newpath, i_newlen, "%s%s", path, dirname); //print_file_info(p_udf_dirent, newpath); printf("%s\n", newpath); } } }
bool search_for_file( const std::string &base_path, const std::string &base_name, const char **valid_exts, std::string &result ) { std::vector<std::string> result_list; std::vector<std::string> ignore_list; if ( get_filename_from_base( result_list, ignore_list, base_path, base_name, valid_exts ) ) { result = result_list.front(); return true; } std::vector<std::string> subs; get_subdirectories( subs, base_path ); std::vector<std::string>::iterator itr; for ( itr = subs.begin(); itr != subs.end(); ++itr ) { if ( search_for_file( base_path + (*itr) + "/", base_name, valid_exts, result ) ) { return true; } } return false; }
int do_init( /* INITIALIZATION FOR THE HELP PROCESS */ char **helpfilenames, /* - list of help file names */ HelpSrchPathItem *srchlist ) /* - list of places to look for help files */ { int count; char **fname; char fullpath[_MAX_PATH]; count = 0; while( HelpFiles[count].name != NULL && count < MAX_HELP_FILES - 1 ) { HelpMemFree( HelpFiles[count].name ); HelpFiles[count].name = NULL; count += 1; } fname = helpfilenames; count = 0; while( *fname != NULL && count < MAX_HELP_FILES-1 ) { if( search_for_file( fullpath, *fname, srchlist ) ) { HelpFiles[count].name = HelpMemAlloc( strlen( fullpath ) + 1 ); strcpy( HelpFiles[count].name, fullpath ); HelpFiles[count].f = 0; count += 1; } ++fname; } HelpFiles[count].name = NULL; HelpFiles[count].f = 0; return( count ); }