Ver Mensaje Individual
  #2 (permalink)  
Antiguo 10/10/2007, 16:41
lukas182
 
Fecha de Ingreso: marzo-2007
Mensajes: 9
Antigüedad: 17 años, 10 meses
Puntos: 0
Re: Impresion de Directorios/Ficheros -tree

Okey de momento llevo esto :
Código:
#include<stdio.h>
#include<dirent.h>
#include<string.h>
#include<sys/stat.h>
#include<sys/types.h>
#include <stdlib.h>

//Prototipos
void busqueda(char [],char [],int);

int main(int argc, char *argv[]){

	char user [PATH_MAX];
	char ruta [PATH_MAX];
	int tab=0;	

	strcpy(user,argv[1]); // Pillamos el nombre del usuario // NO IMPORTA SI HAY ERROR AL NO AÑADIR EL NOMBRE DEL USUARIO // SOLO ES PRUEBA	
	getcwd(ruta,PATH_MAX); // Pillamos el directorio actual.

	busqueda(user,ruta,tab);//Llamamos la funcion recursiva de busqueda de Directorios/archivos.
	
}
void busqueda(char user[],char ruta[],int tab){

	DIR *directorio;
	struct dirent *fichero;
	struct stat fich;	
	char ficheros [PATH_MAX];
	
	int i;	

	directorio = opendir(ruta);
	if(directorio==NULL){
		printf("Error al abrir el directorio\n");
		exit(-1);
	}
	while ( (fichero=readdir(directorio)) != NULL ){
		if ( strcmp(fichero->d_name, "..") != 0 && strcmp(fichero->d_name, ".") != 0 ){
			strcpy (ficheros, ruta);
			strcat (ficheros, "/");
			strcat (ficheros, fichero->d_name);
			if ( (lstat(ficheros, &fich)) == -1 ){	//obtenemos la informacion del archivo

					fprintf( stderr, "\nNo se pudo obtener la informacion del fichero:\n" );
					fprintf( stderr, "\t%s\n\n", ficheros);
			}			
			//-tree? xD
			if(S_ISDIR(fich.st_mode)){ //Encontramos un directorio, y aumentamos tab+1 para tabular los archivos q contiene
				for(i=0;i<tab;i++) 
					printf("\t");								
				printf("%s \n",fichero->d_name);
				tab=tab+1;							
			}
			else{ 
				for(i=0;i<tab;i++)
					printf("\t");						
				printf("%s \n",fichero->d_name);
			}	
			//recursiva
			if(S_ISDIR(fich.st_mode))	
				busqueda(user,ficheros,tab);		
		}
	}
	closedir(directorio);	
}
Por supuesto , el problema solo radica en la impresion "-tree" . Ahora mismo lo unico que hce es tabular , cuando ve que es un directorio, pero no se volver al principio de linea para el siguiente. Alguien me puede echar una manita?

Gracias.