Warning:  Undefined array key "view" in /var/www/html/wp-content/uploads/classes/so/1920/lab-examples/index.php on line 2
Warning:  Cannot modify header information - headers already sent by (output started at /var/www/html/wp-content/uploads/classes/so/1920/lab-examples/index.php:2) in /var/www/html/wp-content/uploads/classes/so/1920/lab-examples/index.php on line 47
Warning:  Cannot modify header information - headers already sent by (output started at /var/www/html/wp-content/uploads/classes/so/1920/lab-examples/index.php:2) in /var/www/html/wp-content/uploads/classes/so/1920/lab-examples/index.php on line 48
Warning:  Cannot modify header information - headers already sent by (output started at /var/www/html/wp-content/uploads/classes/so/1920/lab-examples/index.php:2) in /var/www/html/wp-content/uploads/classes/so/1920/lab-examples/index.php on line 49
Warning:  Cannot modify header information - headers already sent by (output started at /var/www/html/wp-content/uploads/classes/so/1920/lab-examples/index.php:2) in /var/www/html/wp-content/uploads/classes/so/1920/lab-examples/index.php on line 50
Warning:  Cannot modify header information - headers already sent by (output started at /var/www/html/wp-content/uploads/classes/so/1920/lab-examples/index.php:2) in /var/www/html/wp-content/uploads/classes/so/1920/lab-examples/index.php on line 51
/**
 *  raccoglie e visualizza tutta una serie di informazioni su
 *  un file specificato sulla riga di comando
 */
#include 
#include 
#include 
#include 
#include 
#include 
#include 
int main(int argc, char *argv[]) {
    struct stat statbuf;
    struct passwd *pw;
    struct group *gr;
    const char *username, *groupname;
    const char *type;
    mode_t modes;
    if (argc < 2) {
        fprintf(stderr, "utilizzo: %s \n",argv[0]);
        exit(1);
    }
    // raccoglie le informazioni sul file/directory
    if (lstat(argv[1], &statbuf) == -1) {
        perror(argv[1]);
        exit(1);
    }
    // prende il nome del proprietario
    if ((pw = getpwuid(statbuf.st_uid)) == NULL)
        username = "????";
    else
        username = pw->pw_name;
    // prende il nome del gruppo
    if ((gr = getgrgid(statbuf.st_gid)) == NULL)
        groupname = "????";
    else
        groupname = gr->gr_name;
    // determina il tipo dell'oggetto su file-system
    modes = statbuf.st_mode;
    if ((modes & S_IFMT) == S_IFDIR) // if (S_ISDIR(modes)
        type = "directory";
    else if (((modes & S_IFMT) == S_IFBLK) || ((modes & S_IFMT) == S_IFCHR))
        type = "file speciale di dispositivo";
    else if ((modes & S_IFMT) == S_IFREG)
        type = "file regolare";
    else if ((modes & S_IFMT) == S_IFLNK)
        type = "link simbolico";
    else if ((modes & S_IFMT) == S_IFIFO)
        type = "file FIFO";
    else
        type = "--indefinito (!?!)--";
    // stampa alcune informazioni
    printf("filename: %s\n", argv[1]);
    printf("permissions: %o\n", modes & 0777);
    printf("type: %s\n", type);
    printf("i-number: %d\n", (int)statbuf.st_ino);
    printf("uid: %d (%s) gid: %d (%s)\n", statbuf.st_uid, username, statbuf.st_gid, groupname);
    printf("atime: %s", asctime(localtime(&(statbuf.st_atime))));
    printf("mtime: %s", asctime(localtime(&(statbuf.st_mtime))));
    printf("ctime: %s", asctime(localtime(&(statbuf.st_ctime))));
}