From 687e30491eaa8fa9d05e4edbf695cdae58ffc3a0 Mon Sep 17 00:00:00 2001 From: xgiovio Date: Sun, 23 Mar 2014 15:58:25 +0100 Subject: [PATCH] implementato un programma che legge da linea di ocmando il percorso di una directory e fornisce in output statistiche relative ai file: nome,inode,grandezza in byte, check se il file e' regolare e in tal caso i primi 10 caratteri --- 5.list_file_directory/list | Bin 0 -> 13312 bytes 5.list_file_directory/list.c | 85 +++++++++++++++++++++++++++++++ 5.list_file_directory/readme.txt | 1 + 3 files changed, 86 insertions(+) create mode 100755 5.list_file_directory/list create mode 100644 5.list_file_directory/list.c create mode 100644 5.list_file_directory/readme.txt diff --git a/5.list_file_directory/list b/5.list_file_directory/list new file mode 100755 index 0000000000000000000000000000000000000000..bc51c773df54565f5aab94a16d12c24b59ed55cc GIT binary patch literal 13312 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 Tz8X;#?bVpvI=bY&dgOlrhr`|; literal 0 HcmV?d00001 diff --git a/5.list_file_directory/list.c b/5.list_file_directory/list.c new file mode 100644 index 0000000..f0ce9cb --- /dev/null +++ b/5.list_file_directory/list.c @@ -0,0 +1,85 @@ +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include + + +int main (int index, char** in_data){ + + if (index < 2){ + fprintf(stderr,"Please specify a directory into command line\n"); + exit(-1); + } + + if (index > 2){ + fprintf(stderr,"Please enter only 1 path\n"); + exit(-1); + } + + + char * path; + path = *(in_data + 1); + + DIR * directory; + directory = opendir (path); + if ( directory == NULL){ fprintf(stderr, "Not a directory\n"); exit(-1);} + + + struct dirent * dir_entry; + struct stat file_stat; + char full_path [2048]; + + int fd,ridden; + char buf[10]; + + for(dir_entry = readdir(directory); + dir_entry != NULL; + dir_entry = readdir(directory)){ + + strcpy (full_path,path); + strcat (full_path,"/"); + strcat (full_path,dir_entry->d_name); + + if (stat (full_path,&file_stat) != 0 ) {fprintf(stderr, "Error retrieving file info\n"); exit(-1);} + + fprintf (stdout,"Name %20s",dir_entry->d_name); + fprintf (stdout," / "); + fprintf (stdout,"Inode %10d",file_stat.st_ino); + fprintf (stdout," / "); + fprintf (stdout,"Size %10d",file_stat.st_size); + fprintf (stdout," / "); + + if (S_ISREG (file_stat.st_mode)){ + fprintf (stdout,"%23s","Regular File / "); + fd = open (full_path,O_RDONLY); + if (fd < 0){ + fprintf(stderr,"Error reading file %s %d\n",dir_entry->d_name,errno); + exit(-1); + } + ridden = read (fd,buf,10); + buf[ridden] = 0; + fprintf (stdout,"%10s",buf); + + close (fd); + } else { + fprintf (stdout,"%23s","Not a Regular File / "); + + } + fprintf (stdout,"\n"); + + } + + if (errno != 0){ + fprintf(stderr, "Error reading in the directory\n"); exit(-1); + } + + + + return 0; +} \ No newline at end of file diff --git a/5.list_file_directory/readme.txt b/5.list_file_directory/readme.txt new file mode 100644 index 0000000..424cf2b --- /dev/null +++ b/5.list_file_directory/readme.txt @@ -0,0 +1 @@ +il programma legge da liena di ocmando il percorso di una directory e fornisce in output statistiche relative ai file: nome,inode,grandezza in byte, check se il file e' regolare e in tal caso i primi 10 caratteri \ No newline at end of file