Example #1
0
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;
}
Example #2
0
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);
}