Mensaje    Asunto: Ayuda con examen Responder citando

/*Se pide realizar un programa en C que busque el primer fichero cuyo nombre se le pasa al programa en la
línea de comandos dentro del directoiro que se pasa como segundo parámetro. La búsqueda deberá hacerla de forma
recursiva en todos los subdirectorios del directorio dado, deteniéndose cuando llegue al primer fichero con ese nombre.
Una vez encontrado dicho fichero mostrará en pantalla toda la información que se puede obtener con la
llamada al sistema stat.
Si no encuentra el fichero en la ruta especificada informará al usuario de tal circunstancia. Se deben controlar
todos los errores e informar al usuario de todas las incidnecias. Se deben utilizar llamadas al sistema de linux
y se valorará el uso de funciones de bajo nivel.*/


#include <sys/types.h>
#include <sys/stat.h>
#include <dirent.h>
#include <unistd.h>
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <time.h>


int main(int argc, char *argv[])
{
DIR *Directorio;
FILE *fichero;
struct dirent *InfoDir;
struct stat InfoEntrada;
char DirActual[PATH_MAX + 1];
char EntradaActual[PATH_MAX +1];
long int TotalFicheros = 0;
int NumeroFicheros = 0;
char Fecha[20];
char nombre[PATH_MAX +1];
struct stat buf;
int i=0;

if(argc > 2)
{
printf("Uso: %s [directorio]\n\n", argv[0]);
exit(1);
}
else if(argc == 2)
{
strcpy(DirActual, argv[1]);
}
else if(argc == 1)
{
if(getcwd(DirActual, PATH_MAX + 1) == NULL)
{
printf("\n\nError intentando obtener el directorio actual.\n\n");
exit(1);
}
}
Directorio = opendir(DirActual);
if(Directorio == NULL)
{
printf("\n\nError abriendo el directorio.\n\n");
exit(1);
}
while((InfoDir = readdir(Directorio)))
{
strcpy(EntradaActual, DirActual);
strcat(EntradaActual, "/");
strcat(EntradaActual, InfoDir->d_name);
printf("\nArchivo %s con tamaño %d\n", argv[i], buf.st_size);
printf("\nIdentificador del sistema de archivos: %d", buf.st_dev);
printf("\nNúmero de i-nodo: %d", buf.st_ino);
printf("\nNúmero de enlaces: %d", buf.st_nlink);
printf("\nIdentificador del usuario propietario: %d", buf.st_uid);
printf("\nIdentificador de dispositivo e nel caso de un archivo especial: %d", buf.st_rdev);
printf("\nTamaño en bytes: %d", buf.st_size);
printf("\nTamaño de los bloques en bytes: %d", buf.st_blksize);
printf("\nNumero de bloques de 1 Kb utilizados: %d", buf.st_blocks);
printf("\nFecha de utlimo acceso: %d", buf.st_atime);
printf("\nFecha de la última modificación del contenido: %d", buf.st_mtime);
printf("\nFecha de la útlima modificacio n: %d", buf.st_ctime);
if(S_ISLNK (buf.st_mode))
printf("\nArchivo de tipo simbólico\n");
if(S_ISREG (buf.st_mode))
printf("\nArchivo de tipo regular\n");
if(S_ISDIR (buf.st_mode))
printf("\nArchivo es un directorio\n");
if(S_ISCHR(buf.st_mode))
printf("\nArchivo especial de carácter\n");
if(S_ISBLK(buf.st_mode))
printf("\nArchivo especial de bloque\n");
if(S_ISFIFO(buf.st_mode))
printf("\nArchivo tubería con nombre\n");
if(S_ISSOCK(buf.st_mode))
printf("\nArchivo de socket\n");
if(lstat(EntradaActual, &InfoEntrada) < 0)
{
printf("\nNo se pudo obtener información del fichero %s\n", InfoDir->d_name);
continue;
}
if(InfoDir->d_type == 4)
{
printf("\n(DIR)");

}
else if(InfoDir->d_type == Cool
{
NumeroFicheros++;
TotalFicheros += InfoEntrada.st_size;
printf("\n%ld", InfoEntrada.st_size);

}
strncpy(Fecha,ctime(&InfoEntrada.st_atime),20);
printf("\t%s\t%s", Fecha, InfoDir->d_name);




}
printf("\n\n%ld bytes en %d fichero(s)", TotalFicheros, NumeroFicheros);

printf("\n\n");
closedir(Directorio);
return 0;
}

Necesito saber como utilizar bien el primer argumento para ponerle los dos, lo demas debe estar medio bien