← index
cplusplus11.Examples/UNIX/info/stat.cpp
Source: cplusplus11.Examples/UNIX/info/stat.cpp
#include<iostream>
#include<sys/stat.h>

int main(int argc, char **argv) {
    if(argc == 2) {
        struct stat sb;
        if(stat(argv[1], &sb) == -1) {
            std::cerr << "Error on stat function.\n";
            exit(EXIT_FAILURE);
        }
        switch(sb.st_mode & S_IFMT) {
            case S_IFREG:
                std::cout << "Regular file..\n";
                break;
            case S_IFDIR:
                std::cout << "Directory..\n";
                break;
            case S_IFCHR:
                std::cout << "Character device..\n";
                break;
            case S_IFBLK:
                std::cout << "Block Device..\n";
                break;
            case S_IFLNK:
                std::cout << "Soft link..\n";
                break;
            case S_IFIFO:
                std::cout << "FIFO or pipe..\n";
                break;
            case S_IFSOCK:
                std::cout << "Socket..\n";
                break;
            default:
                std::cout << "Unknown file type..\n";
        }
    } else {
        std::cerr << "Requires one argument file\n" <<
        argv[0] << " filename\n";
        exit(EXIT_FAILURE);
    }
    return 0;
}