static void traverse_file(char *filename) { struct stat buf; int st; int link = 0; int r; st = lstat(filename, &buf); if (!st && S_ISLNK(buf.st_mode)) { /* is a symbolic link */ link = 1; st = stat(filename, &buf); } if (st || !S_ISDIR(buf.st_mode)) { file_action(filename); return; } /* is a directory */ if (cmd.recursive<=1 && link==1) { /* ignore link */ if (cmd.verbose>=0) { fprintf(stderr, "%s: %s: directory is a symbolic link -- ignored\n", cmd.name, filename); symlink_warnings++; } return; } if (cmd.recursive==0) { /* ignore */ if (cmd.verbose>=0) { fprintf(stderr, "%s: %s: is a directory -- ignored\n", cmd.name, filename); isreg_warnings++; } return; } r = known_inode(buf.st_ino, buf.st_dev); if (r != -1) { /* already traversed */ if (cmd.verbose>0) { fprintf(stderr, "Already visited directory %s -- skipped.\n", filename); } return; } add_inode(buf.st_ino, buf.st_dev, 1); /* recursively traverse directory */ { char **filelist; int count; get_filelist(filename, &filelist, &count); traverse_files(filelist, count); free_filelist(filelist, count); } return; }
void init_lang(void){ int maxlangs, nlangs; filelistdata *filelistinfo; int i; nlanglistinfo=0; maxlangs = get_nfilelist(smokeview_bindir,"*.po"); if(maxlangs==0)return; nlangs = get_filelist(smokeview_bindir,"*.po", maxlangs, &filelistinfo); if(nlangs==0)return; for(i=0;i<nlangs;i++){ char *file; filelistdata *filelisti; filelisti = filelistinfo + i; file=filelisti->file; if(strstr(file,"template")!=NULL||filelisti->type==1)continue; nlanglistinfo++; } if(nlanglistinfo==0)return; NewMemory((void **)&langlistinfo,nlanglistinfo*sizeof(langlistdata)); nlanglistinfo=0; for(i=0;i<nlangs;i++){ char *file; filelistdata *filelisti; langlistdata *langi; int len; char *lang_code; langi = langlistinfo + nlanglistinfo; filelisti = filelistinfo + i; file=filelisti->file; if(strstr(file,"template")!=NULL||filelisti->type==1)continue; trim(file); file=trim_front(file); len=strlen(file); langi->file=file; strncpy(langi->lang_code,file+len-5,2); langi->lang_code[2]='\0'; lang_code=langi->lang_code; if(strcmp(lang_code,"fr")==0){ strcpy(langi->lang_name,_("French")); } else if(strcmp(lang_code,"it")==0){ strcpy(langi->lang_name,_("Italian")); } else if(strcmp(lang_code,"de")==0){ strcpy(langi->lang_name,_("German")); } else if(strcmp(lang_code,"pl")==0){ strcpy(langi->lang_name,_("Polish")); } else if(strcmp(lang_code,"es")==0){ strcpy(langi->lang_name,_("Spanish")); } else{ strcpy(langi->lang_name,langi->lang_code); } nlanglistinfo++; } init_translate(smokeview_bindir,tr_name); }