From: Robin K. <kom...@us...> - 2003-10-30 02:27:15
|
Update of /cvsroot/xine/xine-ui/src/xitk In directory sc8-pr-cvs1:/tmp/cvs-serv22287/src/xitk Modified Files: help.c Log Message: scandir(3UCB) is not portable. Change to use opendir(3C), readdir(3C), and closedir(3C). Index: help.c =================================================================== RCS file: /cvsroot/xine/xine-ui/src/xitk/help.c,v retrieving revision 1.2 retrieving revision 1.3 diff -u -r1.2 -r1.3 --- help.c 29 Oct 2003 12:32:15 -0000 1.2 +++ help.c 30 Oct 2003 02:27:12 -0000 1.3 @@ -139,22 +139,15 @@ } } -static int readme_select(const struct dirent *dir_entry) { - int num; - char section[XITK_NAME_MAX]; - - if((sscanf(dir_entry->d_name, "README.en.%d.%s", &num, §ion[0])) == 2) - return 1; - - return 0; -} - - static void help_sections(void) { - static struct dirent **namelist; - int i; - - if((i = scandir(XINE_DOCDIR, &namelist, readme_select, 0)) > 0) { + DIR *dir; + int i; + + if ((dir = opendir(XINE_DOCDIR)) == NULL) { + xine_error("Cannot open help files: %s", strerror(errno)); + } + else { + struct dirent *dir_entry; const langs_t *lang = get_lang(); char locale_file[XITK_NAME_MAX]; char locale_readme[XITK_PATH_MAX + XITK_NAME_MAX + 1]; @@ -162,31 +155,31 @@ char ending[XITK_NAME_MAX]; char section_name[1024]; struct stat pstat; - - while(--i >= 0) { + + while ((dir_entry = readdir(dir)) != NULL) { int order_num; memset(&ending, 0, sizeof(ending)); memset(§ion_name, 0, sizeof(section_name)); - sscanf(namelist[i]->d_name, "README.en.%s", &ending[0]); - sscanf(namelist[i]->d_name, "README.en.%d.%s", &order_num, §ion_name[0]); - - sprintf(locale_file, "%s.%s.%s", "README", lang->ext, ending); - sprintf(locale_readme, "%s/%s", XINE_DOCDIR, locale_file); - sprintf(default_readme, "%s/%s", XINE_DOCDIR, namelist[i]->d_name); - - if((strcmp(locale_file, namelist[i]->d_name)) - && ((stat(locale_readme, &pstat)) == 0) && (S_ISREG(pstat.st_mode))) - help_add_section(locale_readme, order_num, section_name); - else - help_add_section(default_readme, order_num, section_name); + if ((sscanf(dir_entry->d_name, "README.en.%d.%s", &order_num, §ion_name[0])) == 2) { + sscanf(dir_entry->d_name, "README.en.%s", &ending[0]); + + sprintf(locale_file, "%s.%s.%s", "README", lang->ext, ending); + sprintf(locale_readme, "%s/%s", XINE_DOCDIR, locale_file); + sprintf(default_readme, "%s/%s", XINE_DOCDIR, dir_entry->d_name); - free(namelist[i]); + if ((strcmp(locale_file, dir_entry->d_name)) && ((stat(locale_readme, &pstat)) == 0) && (S_ISREG(pstat.st_mode))) { + help_add_section(locale_readme, order_num, section_name); + } + else { + help_add_section(default_readme, order_num, section_name); + } + } } - - free(namelist); - + + closedir(dir); + if(help->num_sections) { /* Sort sections */ @@ -217,12 +210,6 @@ help->tab_sections[i + 1] = NULL; } } - } - else { - if(i == -1) { - /* an error occured, whish one ? */ - xine_error("Cannot open help files: %s", strerror(errno)); - } } } |