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;
}
Exemple #2
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();
}
Exemple #3
0
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);
}