oregon ha scritto:
Ma come ottieni la lista?
il codice l'ho postato in un'altra discussione...
lo rimetto:
#include <stdio.h>
#include <string.h>
#include <sys/types.h>
#include <dirent.h>
#include <stdlib.h>
#include <sys/stat.h>
#include <unistd.h>
typedef enum { false = 0, true }bool;
#define ramo "+--"
#define trov "+--"
#define spac "  ¦"
#define pipe "¦"
int j = 0;
bool caricameno_elemnti_lista(const char *t_str)
{
  chdir(t_str);
  DIR *t_dir = NULL;
  char t_buf[20][256];
  char t_buf1[256];
  char t_buf2[256];
  char t_tmp[256];
  int t_i = 0;
  int t_j = 0;
  int t_al = 0;
  struct dirent *t_pent;
  struct stat t_sta;
  if(!(t_dir = opendir("."))){
    printf("opendir() failure; terminating!\n");
    exit(1);
  }
  if(j == 0){
    strcpy(t_buf1, trov);
  }
  else {
    strcpy(t_buf1, pipe);
    for(t_al = 0; t_al < j; t_al++){
      strcat(t_buf1, spac);
    }
    strcpy(t_buf2, t_buf1);
  }
  while(t_pent = readdir(t_dir)){
    //    printf("A -> Aprtura dir name %s\n", t_pent->d_name);
    if(t_pent->d_name[0] != '.'){
      //printf("A -> Aprtura dir name %s\n", t_pent->d_name);
      stat(t_pent->d_name, &t_sta);
      if((S_ISDIR(t_sta.st_mode))){
	if(j != 0) {
	  strcat(t_buf1, ramo);
	}
	printf("%s %s\n", t_buf1, t_pent->d_name);
	++j;
        caricameno_elemnti_lista(t_pent->d_name);
	--j;
      }
      else {
	strcpy(t_buf[t_i], t_pent->d_name);
        //g_print("C -> Non è una dir\n");
        ++t_i;
      }
    }
  }
  for(t_j = 0; t_j < t_i; t_j++){
    if(j > 0){
      if(t_j+1 == t_i){
	strcpy(t_tmp, t_buf2);
	strcat(t_tmp, ramo);
      }
      else {
	strcpy(t_tmp, t_buf2);
	strcat(t_tmp, trov);
      }
      printf("%s %s\n", t_tmp, t_buf[t_j]);
    }
    else {
      if(t_j+1 == t_i){
	strcpy(t_tmp, ramo);
      }
      else {
	strcpy(t_tmp, trov);
      }
      printf("%s %s\n", t_tmp, t_buf[t_j]);
    }
  }
  closedir(t_dir);
  chdir("..");
  return false;
}
int main(int argc, char *argv[])
{
  if(argv[1] == NULL){
    printf("Eror! no name path\n");
  }
  else {
    caricameno_elemnti_lista(argv[1]);
  }
    return 0;
}
come ho scritto in un'altra discussione: devo sistemarlo meglio!! ma in questa discussione chiedo il filtraggio dei file...