⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 dirprt.c

📁 早期freebsd实现
💻 C
字号:
/*	@(#)dirprt.c	1.2 90/01/03 NFS Rev 2 Testsuite *	1.2 Lachman ONC Test Suite source"; */#include <sys/param.h>#ifndef major#include <sys/types.h>#endif#ifdef SVR3#include <dirent.h>#else#include <sys/dir.h>#endif#include <stdio.h>#include <ctype.h>main(argc, argv)	int argc;	char *argv[];{	argv++;	argc--;	while (argc--) {		print(*argv++);	}}print(dir)	char *dir;{	DIR *dirp;#ifdef SVR3	struct dirent *dp;#else	struct direct *dp;#endif	int rec = 0;	dirp = opendir(dir);	if (dirp == NULL) {		perror(dir);		return;	}	while ((dp = readdir(dirp)) != NULL) {#ifdef SVR3		printf("%5d %5ld %5d %s\n",		    telldir(dirp),dp->d_ino, dp->d_reclen,		    dp->d_name);#else		printf("%5d %5d %5d %5d %s\n",		    telldir(dirp),dp->d_fileno, dp->d_reclen,		    dp->d_namlen, dp->d_name);#endif	}	closedir(dirp);}#include <sys/stat.h>/* * open a directory. */DIR *opendir(name)	char *name;{	register DIR *dirp;	register int fd;	struct stat sb;	extern char *malloc();	if ((fd = open(name, 0)) == -1) {		printf("open failed\n");		return (NULL);	}	if (fstat(fd, &sb) == -1) {		printf("stat failed\n");		return (NULL);	}	if ((sb.st_mode & S_IFMT) != S_IFDIR) {		printf("not a directory\n");		return (NULL);	}	printf("%s mode %o dir %o\n", name, sb.st_mode, S_IFDIR);	if (((dirp = (DIR *)malloc(sizeof(DIR))) == NULL) ||#ifdef SVR3	    ((dirp->dd_buf = malloc(DIRBUF)) == NULL)) {#else	    ((dirp->dd_buf = malloc((int)sb.st_blksize)) == NULL)) {#endif		if (dirp) {			if (dirp->dd_buf) {				free(dirp->dd_buf);			}			free(dirp);		}		close(fd);		return (NULL);	}#ifndef SVR3	dirp->dd_bsize = sb.st_blksize;	dirp->dd_bbase = 0;	dirp->dd_entno = 0;#endif	dirp->dd_fd = fd;	dirp->dd_loc = 0;	return (dirp);}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -