Ejemplo n.º 1
0
void dir_info(char * path, char * modes, char * relative) {
    DIR *d;
    struct dirent *dir;
    if ((d = opendir(path)) == NULL) {
        perror ("Wrong path, couldn't open...");
        exit (1);
    }
    
        while ((dir = readdir(d)))
        {
            char * name = dir->d_name;
            char * path2 = (char*)malloc(2 + strlen(path) + strlen(name));
            char * relative2 = (char*)malloc(2 + strlen(path) + strlen(name));
            strcpy(path2, path);
            strcat(path2, name);
            strcpy(relative2, relative);
            strcat(relative2, name);
            
            if((int)dir->d_type == 4) {
                if( (strcmp(name, "..")!=0) && (strcmp(name, ".") != 0) ) {
                    strcat(path2, "/");
                    strcat(relative2, "/");
                    dir_info(path2, modes, relative2);
                    free(path2);
                    free(relative2);
                }   
            }  
            if((int)dir->d_type == 8) {
                file_info(path2, modes, relative2);
                
            }
    }
    closedir(d);
}
Ejemplo n.º 2
0
int main(int argc,char *argv[])
{
	if(argc != 2){
		fprintf(stderr,"Usage %s DIR_Name format!\n",argv[0]);
		exit(-1);
	}

	dir_info(argv[1]);

	return 0;
}
Ejemplo n.º 3
0
int main(int argc, char** argv) {    
    
    if(argc!=3) {
        printf("Wrong arguments.\n");
        return 0; 
    }
    char * path;
    char * access;
    char * relative = "/";
    path = argv[1];
    access = argv[2];
    dir_info(path, access, relative);
    return(0);
}
Ejemplo n.º 4
0
short PMenu::parse( QDir d )
{
  if( !d.exists() )
    return -1;
  PMenuItem *new_item;
  PMenu *new_menu;
  QDir new_dir;
  QStrList sort_order;
  QList<PMenuItem> item_list;
  item_list.setAutoDelete(FALSE);
  int pos;
  bool read_only = FALSE;
  sort_order.setAutoDelete(TRUE);

  QString file = d.path();
  QFileInfo dir_info(file);
  if( !dir_info.isWritable() )
    read_only = TRUE;
  file += "/.directory";
  QFileInfo dir_fi(file);
  if( dir_fi.isReadable() )
    {
      KConfig kconfig(file);
      kconfig.setGroup("KDE Desktop Entry");
      QString order = kconfig.readEntry("SortOrder");
      int len = order.length();
      int j,i;
      QString temp;
      for( i = 0; i < len; )
	{
	  j = order.find(',', i);
	  if( j == -1 )
	    j = len;
	  temp = order.mid(i, j-i);
	  temp.stripWhiteSpace();
	  sort_order.append(temp);
	  i = j+1;
	}
    }
  const QFileInfoList *list = d.entryInfoList();
  QFileInfoListIterator it( *list );
  QFileInfo *fi;
  if( it.count() < 3 )
    return -1;
  while ( (fi=it.current()) )
    {
      if( fi->fileName() == "." || fi->fileName() == ".." )
	{ ++it; continue; }
      if( fi->isDir() )
	{
	  new_menu = new PMenu;
	  new_item = new PMenuItem;
          new_dir.setPath( fi->filePath() );
	  new_item->read_only = read_only;
	  if( new_menu->parse( new_dir ) < 0 || new_item->parse( fi, new_menu ) < 0 )
	    {
	      delete new_menu;
	      delete new_item;
	      ++it;
	      continue;
	    }
	  item_list.append(new_item);
	}
      else
	{
	  //if( !fi->extension().contains("kdelnk") )
	  //if( !isKdelnkFile(fi->absFilePath()))
	  //  { ++it; continue; }
	  new_item = new PMenuItem;
	  new_item->read_only = read_only;
	  if( new_item->parse(fi) < 0 )
	    delete new_item;
	  else
	    item_list.append(new_item);
	}
      ++it;
    }
  // sort items
  QString item_name;
  PMenuItem *item;
  for( item_name = sort_order.first(); !item_name.isEmpty(); item_name = sort_order.next() )
    {
      for( item = item_list.first(); item != NULL; item = item_list.next() )
	{
	  if( item->real_name == item_name )
	    {
	      add(item);
	      item_list.removeRef(item);
	      break;
	    }
	}
    }
  if( item_list.count() != 0 )
    {
      for( item = item_list.first(); item != NULL; item = item_list.next() )
	{ add(item); }
    }
  item_list.clear();
  // insert separators
  sort_order.first();
  while( (pos = sort_order.findNext((QString) "SEPARATOR")) >= 0 )
    {
      sort_order.next();
      new_item = new PMenuItem;
      new_item->entry_type = separator;
      new_item->read_only = read_only;
      insert(new_item, pos);
    }   
  return 0;
}