int main(int argc,char **argv) { if(argc!=2) { printf("Usage:%s file \n",argv[0]); exit(EXIT_FAILURE); } struct stat statbuf; printf("file name:%s \n",argv[1]); if(lstat(argv[1],&statbuf)<0) ERR_EXIT("stat"); printf("主设备号(块号):%d,次设备号:%d\n",MAJOR(statbuf.st_dev),MINOR(statbuf.st_dev)); printf("i节点号:%d\n",(int)statbuf.st_ino); printf("硬链接数:%d\n",(int)statbuf.st_nlink); printf("用户名:%s,(%d)\n",getuname(&statbuf),(int)statbuf.st_uid); printf("组名:%s,(%d)\n",getgname(&statbuf),(int)statbuf.st_gid); printf("磁盘id:%d\n",(int)statbuf.st_rdev); printf("文件大小:%d\n",(int)statbuf.st_size); filetype(&statbuf); printf("文件的权限:%o ",statbuf.st_mode & 00777); char permission[11]="----------"; filepermission(&statbuf,permission); printf("%s\n",permission); return 0; }
/* * Completely redraw *everything* */ void full_redraw(scrgame *sg) { static char *name = NULL; static size_t vers_len; static const char *helpstr = "? : help"; static const size_t helplen = 8; if (!name) { name = getgname(sg->game); } /* 10 = strlen(" version ") */ vers_len = strlen(name) + strlen(VERSION) + 10; delwin(sg->board_w); delwin(sg->score_w); delwin(sg->msg_w); clear(); /* We want the ends of the version string and of * helpstr to line up. */ mvprintw(versrow, helpcol + helplen - vers_len, "%s version %s", name, VERSION); mvprintw(helprow, helpcol, helpstr); refresh(); sg->board_w = create_board(sg->game); sg->score_w = create_scorebox(sg->game); sg->msg_w = create_msgbox(); }
static int print_acl(char *path, acl_type_t type, int hflag, int iflag, int nflag, int qflag, int vflag) { struct stat sb; acl_t acl; char *acl_text; int error, flags = 0, ret; if (hflag) error = lstat(path, &sb); else error = stat(path, &sb); if (error == -1) { warn("%s: stat() failed", path); return(-1); } if (hflag) ret = lpathconf(path, _PC_ACL_NFS4); else ret = pathconf(path, _PC_ACL_NFS4); if (ret > 0) { if (type == ACL_TYPE_DEFAULT) { warnx("%s: there are no default entries in NFSv4 ACLs", path); return (-1); } type = ACL_TYPE_NFS4; } else if (ret < 0 && errno != EINVAL) { warn("%s: pathconf(..., _PC_ACL_NFS4) failed", path); return (-1); } if (more_than_one) printf("\n"); else more_than_one++; if (!qflag) printf("# file: %s\n# owner: %s\n# group: %s\n", path, getuname(sb.st_uid), getgname(sb.st_gid)); if (hflag) acl = acl_get_link_np(path, type); else acl = acl_get_file(path, type); if (!acl) { if (errno != EOPNOTSUPP) { warn("%s", path); return(-1); } errno = 0; if (type == ACL_TYPE_DEFAULT) return(0); acl = acl_from_stat(sb); if (!acl) { warn("%s: acl_from_stat() failed", path); return(-1); } } if (iflag) flags |= ACL_TEXT_APPEND_ID; if (nflag) flags |= ACL_TEXT_NUMERIC_IDS; if (vflag) flags |= ACL_TEXT_VERBOSE; acl_text = acl_to_text_np(acl, 0, flags); if (!acl_text) { warn("%s: acl_to_text_np() failed", path); return(-1); } printf("%s", acl_text); (void)acl_free(acl); (void)acl_free(acl_text); return(0); }