/* * Mon Oct 10 18:38:02 1994 -- Renaud Waldura * */ #include #include #include #include #include #define errif(e) if (e) { perror(argv[0]); return errno; } else {} main (int argc, char* argv[]) { struct stat st; errif( lstat(argv[1], &st) < 0 ); cout << "Symbolic link " << argv[1] << ":\n" << "\ndevice: " << st.st_dev << "\ninode: " << st.st_ino << "\nmode: " << st.st_mode << "\n# of links: " << st.st_nlink << "\nUID: " << st.st_uid << "\nGID: " << st.st_gid << "\nrdev: " << st.st_rdev << "\nsize: " << st.st_size << "\nacess time: " << st.st_atime << "\nmodif. time: " << st.st_mtime << "\ncreation time: " << st.st_ctime << "\nblock size: " << st.st_blksize << "\n# of blocks: " << st.st_blocks << endl; char buf[256], slink[256]; int length; errif( (length = readlink(argv[1], buf, 256)) < 0 ); strncpy(slink, buf, length); cout << "Content: " << slink << endl; return 0; }