亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频

? 歡迎來(lái)到蟲(chóng)蟲(chóng)下載站! | ?? 資源下載 ?? 資源專輯 ?? 關(guān)于我們
? 蟲(chóng)蟲(chóng)下載站

?? custom_ls.c

?? c實(shí)現(xiàn)的cuntom ls
?? C
字號(hào):
#include <stdio.h>#include <ctype.h>#include <dirent.h>#include <sys/types.h>#include <sys/stat.h>#include <limits.h>#include <unistd.h>#include <memory.h>#include <pwd.h>#include <grp.h>#ifdef PATH_MAXstatic int pathmax = PATH_MAX;#elsestatic int pathmax = 256;#endif//translate the bitPermision to the char presentationchar* GetPermisionMode(char *buf, mode_t mode){char *psz = buf;memset(buf, 0, sizeof buf);if(S_ISREG(mode)) *psz++ = '-';if(S_ISDIR(mode)) *psz++ = 'd';if(S_IRUSR & mode) *psz++ = 'r';else *psz++ = '-';if(S_IWUSR & mode) *psz++ = 'w';else *psz++ = '-';if(S_IXUSR & mode) *psz++ = 'x';else *psz++ = '-';if(S_IRGRP & mode) *psz++ = 'r';else *psz++ = '-';if(S_IWGRP & mode) *psz++ = 'w';else *psz++ = '-';if(S_IXGRP & mode) *psz++ = 'x';else *psz++ = '-';if(S_IROTH & mode) *psz++ = 'r';else *psz++ = '-';if(S_IWOTH & mode) *psz++ = 'w';else *psz++ = '-';if(S_IXOTH & mode) *psz++ = 'x';else *psz++ = '-';*psz = '\0';return buf;}//back to the upper directorychar* backone(char *dir){char *temp = dir;int  len = strlen(dir);while(*(temp+len) != '/') {	*(temp+len) = '\0';	len--;	}*(temp+len) = '\0';return dir;}/* print the file in a  directory */void PrintContent(DIR *dp){struct 	dirent	*dirCont;while((dirCont = readdir(dp)) != NULL) {if((! strcmp(dirCont -> d_name, ".")) || (! strcmp(dirCont -> d_name, "..")))	continue;fprintf(stderr, "%s\t", dirCont -> d_name);}fprintf(stdout, "\n\n");}/* recursive a directory */void RecursiveDir(DIR *dp, char *psz){DIR 		*pdp;DIR 		*temp;int		len;struct dirent 	*dirpsz;struct stat	statbuffer;char 		fullpath[256];len = strlen(psz);*(psz + len) = '/';*(psz +	len + 1) = '\0';if((temp = opendir(psz)) == NULL) {	fprintf(stderr, "can't open %s", psz);	exit(1);	}/* print the file in the directory */PrintContent(temp);while((dirpsz = readdir(dp)) != NULL) {if(! strcmp(dirpsz -> d_name, ".") || ! strcmp(dirpsz -> d_name, ".."))	continue;memset(fullpath, 0, sizeof fullpath);strcpy(fullpath, psz);strcat(fullpath, dirpsz -> d_name);/* acquire the stat infomation about the file */ if(lstat(fullpath, &statbuffer)) {	fprintf(stderr, "can not acquire the stat infomation\n");	exit(1);	}/* judge the file whether is a directory */if(S_ISDIR(statbuffer.st_mode)) {	fprintf(stdout, "%s/\n", dirpsz -> d_name);	if((pdp = opendir(fullpath)) == NULL) {		fprintf(stderr, "can't open %s\n", dirpsz -> d_name);		exit(1);		}	RecursiveDir(pdp, fullpath);	closedir(pdp);	}}}//main functionint main(int argc, char **argv){DIR  	*dp;int	opt;int 	optsum 	= 0;int	flag 	= 1;int	dflag 	= 0;char 	*pstr;char 	*pmode;char 	psz[pathmax];char 	*pfile;char	mode[12];char	dirName[pathmax];struct 	stat statbuf;struct 	dirent *dirp;struct  passwd *puid;struct  group  *pgid;//get the option compositionif(argc == 1)	optsum = 0;else if(argc == 2 && argv[1][0] != '-')	optsum = 100;else if(argc == 2 && argv[1][0] == '-') {	while((opt = getopt(argc, argv, "liadR")) != -1) {		switch(opt){			case 'l':				optsum += 1;				break;			case 'i':				optsum += 2;				break;			case 'a':				optsum += 4;				break;			case 'R':				optsum += 8;				break;			case 'd':				optsum += 16;				break;			case '?':				fprintf(stderr, "%s", "can not recognize the option\n");                                exit(1);			}		}	}else if(argc == 3 && argv[1][0] == '-') {	flag = 2;	//the flag which indicate whether have the parameter 	while((opt = getopt(argc, argv, "liadR")) != -1) {		switch(opt){			case 'l':				optsum += 1;				break;			case 'i':				optsum += 2;				break;			case 'a':				optsum += 4;				break;			case 'R':				optsum += 8;				break;			case 'd':				optsum += 16;				break;			case '?':				fprintf(stderr, "%s", "can not recognize the option\n");                                exit(1);			}		}	}else {	fprintf(stderr, "%s", "the usage is wrong\n");	exit(1);}memset(dirName, 0, sizeof dirName);pstr = getcwd(dirName, pathmax);   //get the absolute path of the directoryif(flag == 1) {  //have no parameter	dflag = 1;	//the flag indicate whether the parameter is a directory	if((dp = opendir(pstr)) == NULL) {		fprintf(stderr, "can't open %s", pstr);		exit(1);		}	}else if(flag == 2) {	memset(psz, 0, sizeof psz);	pfile = psz;	strcpy(pfile, pstr);	int leng = strlen(pfile);	*(pfile + leng) = '/';		strcat(pfile, argv[2]);//judge the parameter is a absolute path or a relative path	if(lstat(pfile, &statbuf) < 0 && lstat(argv[2], &statbuf) < 0) {		fprintf(stderr, "%s", "Don't have the file or directory\n");		exit(1);		}	if(lstat(pfile, &statbuf) == 0) {		if(S_ISDIR(statbuf.st_mode)) {			dflag = 1;			if((dp = opendir(pfile)) == NULL) {				fprintf(stderr, "can't open %s", pfile);				exit(1);				}			strcpy(pstr, pfile);			}		}	else if(lstat(argv[2], &statbuf) == 0) {		if(S_ISDIR(statbuf.st_mode)) {			dflag = 1;			if((dp = opendir(argv[2])) == NULL) {				fprintf(stderr, "can't open %s", argv[2]);				exit(1);				}			strcpy(pstr, argv[2]);			}		}	}	switch(optsum) {	case 0:		while((dirp = readdir(dp)) != NULL)			if((strcmp(dirp->d_name, ".") != 0) && (strcmp(dirp->d_name, "..")) != 0)				fprintf(stdout, "%s\n", dirp->d_name);		break;	case 1:		if(dflag == 1) {//the parameter is a directory,and indicate the file by reading the directory			while((dirp = readdir(dp)) != NULL) {				memset(psz, 0, sizeof psz);				pfile = psz;				strcpy(pfile, pstr);				if((strcmp(dirp->d_name, "..")) == 0) {					pfile = backone(psz);					}				else if(strcmp(dirp->d_name, ".") != 0) {					int length = strlen(pfile);					*(pfile + length) = '/';						strcat(pfile, dirp->d_name);					}				if(lstat(pfile, &statbuf) < 0) {					fprintf(stderr, "can not acquire the stat infomation\n");					exit(1);					}//get the char format permision mode and user name, group name, then print them				pmode = GetPermisionMode(mode, statbuf.st_mode);				puid = getpwuid(statbuf.st_uid);				pgid = getgrgid(statbuf.st_gid);				fprintf(stdout, "%s\t%d\t%s\t%s\t%d\t%.24s\t%s\n", 						pmode, statbuf.st_nlink, puid -> pw_name, 						pgid -> gr_name, statbuf.st_size, 						ctime(&statbuf.st_atime), 							dirp -> d_name);				}			}//the parameter is a file		else if(dflag == 0) {			pmode = GetPermisionMode(mode, statbuf.st_mode);			puid = getpwuid(statbuf.st_uid);			pgid = getgrgid(statbuf.st_gid);			fprintf(stdout, "%s\t%d\t%s\t%s\t%d\t%.24s\t%s\n", 					pmode, statbuf.st_nlink, puid -> pw_name, 					pgid -> gr_name, statbuf.st_size, 					ctime(&statbuf.st_atime), 						argv[2]);			}		break;	case 2:		if(dflag == 1) {//the parameter is a directory,and indicate the file by reading the directory		while((dirp = readdir(dp)) != NULL) {			memset(psz, 0, sizeof psz);			pfile = psz;			strcpy(pfile, pstr);			if(strcmp(dirp->d_name, "..") == 0 || strcmp(dirp -> d_name, ".") ==0) {				continue;				}			else if(strcmp(dirp->d_name, ".") != 0) {				int length = strlen(pfile);				*(pfile + length) = '/';					strcat(pfile, dirp -> d_name);				}			if(lstat(pfile, &statbuf) < 0) {				fprintf(stderr, "can not acquire the stat infomation\n");				exit(1);				}			fprintf(stdout, "%d  %s\t", statbuf.st_ino, dirp -> d_name);			}		fprintf(stdout, "\n");		}		if(dflag == 0) {			if(lstat(argv[2], &statbuf) < 0) {			fprintf(stderr, "can not acquire the stat infomation\n");			exit(1);			}		fprintf(stdout, "%d  %s\n", statbuf.st_ino, argv[2]);		}			break;	case 4:		if(dflag == 1) {//the parameter is a directory,and indicate the file by reading the directory		while((dirp = readdir(dp)) != NULL) {			fprintf(stdout, "%s\t", dirp -> d_name);			}		fprintf(stdout, "\n");		}		if(dflag == 0) {			fprintf(stdout, "%d  %s\n", statbuf.st_ino, argv[2]);		}					break;	case 8:		if(flag == 1) {			fprintf(stdout, ".:\n");			RecursiveDir(dp, pstr);			break;		}		if(flag == 2 && dflag == 1) { //the command have parameter and the parameter is a 									directory			fprintf(stdout, "%s\n", pstr);			RecursiveDir(dp, pstr);			break;		}		if(flag == 2 && dflag == 0) { //the command have parameter and the parameter is't 									a directory			fprintf(stdout, "%s\n", argv[2]);			break;		}	case 16:		if(flag == 1)			fprintf(stdout, ".\n");		else			fprintf(stdout, "%s\n", argv[2]);		break;	case 100:		fprintf(stdout, "%s\n", argv[1]);		break;	}return 0;}

?? 快捷鍵說(shuō)明

復(fù)制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號(hào) Ctrl + =
減小字號(hào) Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
精品免费视频一区二区| 国产女人aaa级久久久级 | 国产精品视频看| 久久亚洲精精品中文字幕早川悠里| 日韩一区二区在线观看视频| 精品剧情在线观看| 久久婷婷综合激情| 亚洲码国产岛国毛片在线| 亚洲第四色夜色| 老司机精品视频在线| 国产成人免费av在线| 日本韩国一区二区三区| 日韩一区二区在线观看| 亚洲视频1区2区| 韩国一区二区三区| 欧美日韩一本到| 中文字幕一区二区三区在线不卡| 日韩av网站免费在线| www.亚洲人| 久久免费视频一区| 日本不卡一二三区黄网| 色综合久久88色综合天天6| 精品电影一区二区| 视频一区二区欧美| 欧美伊人久久久久久午夜久久久久| 欧美精品一区二区三区蜜臀| 日本美女视频一区二区| 日本乱人伦aⅴ精品| 欧美成人精品1314www| 亚洲一区二区av在线| 99精品视频在线免费观看| 日韩美女在线视频| 一区二区三区在线视频观看| 91在线看国产| 久久精品亚洲精品国产欧美 | 国产伦精一区二区三区| 欧美一区三区二区| 麻豆91免费观看| 日韩一级大片在线观看| 午夜精品在线看| 91精品国产手机| 久久精品国产99| 久久久久国产精品人| 国产一区二区三区高清播放| 久久精品水蜜桃av综合天堂| 国产一区二三区| 国产精品大尺度| 欧美曰成人黄网| 日本不卡中文字幕| 久久一区二区三区国产精品| av中文字幕不卡| 亚洲成av人片在线观看无码| 欧美日韩国产片| 国产精品影视天天线| 亚洲欧美怡红院| 欧美三日本三级三级在线播放| 天天av天天翘天天综合网| 精品国产伦一区二区三区免费| 国产一区在线不卡| 亚洲午夜免费视频| 精品国产伦一区二区三区观看体验 | 91碰在线视频| 日韩高清国产一区在线| 国产精品麻豆欧美日韩ww| 成人欧美一区二区三区小说 | 国产伦精品一区二区三区免费| 亚洲欧美激情小说另类| 欧美变态口味重另类| 日本高清不卡视频| 国产成人av电影在线观看| 亚洲最快最全在线视频| 久久先锋影音av鲁色资源| 欧美亚洲国产bt| 国产凹凸在线观看一区二区| 奇米影视在线99精品| 亚洲欧美一区二区三区极速播放| 91精品婷婷国产综合久久性色| 成人免费视频app| 国产真实精品久久二三区| 日韩国产精品91| 五月婷婷欧美视频| 一区二区三区久久| 亚洲免费看黄网站| **欧美大码日韩| 亚洲欧美一区二区视频| 国产亚洲短视频| 国产免费久久精品| 亚洲国产激情av| 欧美精品 日韩| 国内外成人在线| 国产欧美一区二区在线| 成人国产精品视频| 高清日韩电视剧大全免费| 91在线免费视频观看| 日韩欧美国产成人一区二区| 亚洲国产精品高清| 亚洲成人一区在线| 成人午夜视频免费看| 成人av资源下载| 懂色av噜噜一区二区三区av| 国产伦理精品不卡| 国产乱子伦视频一区二区三区| 国产乱人伦精品一区二区在线观看| 青草国产精品久久久久久| 久久不见久久见中文字幕免费| 蜜臀av性久久久久蜜臀aⅴ | 狠狠色狠狠色综合系列| 精品一区二区三区视频在线观看| 久久精品国产亚洲5555| 久久国产剧场电影| 国内一区二区视频| 成人av动漫网站| 欧美影院一区二区| 欧美大肚乱孕交hd孕妇| 国产欧美日韩另类视频免费观看 | 国产成人免费在线观看| 色综合天天狠狠| 国产精品你懂的在线欣赏| 国产亚洲婷婷免费| 青青草97国产精品免费观看| 色综合色综合色综合色综合色综合| 精品久久久久av影院| 亚洲图片一区二区| 色综合久久久久久久久| 国产欧美日韩精品一区| 日韩av电影天堂| 欧美亚洲国产一区在线观看网站| 欧美国产一区视频在线观看| 免费在线视频一区| 欧美无砖专区一中文字| 成人免费一区二区三区视频| 国产成人免费视频网站高清观看视频| 精品视频一区二区三区免费| 国产精品每日更新在线播放网址| 蜜臀av性久久久久蜜臀aⅴ流畅| 在线观看精品一区| 亚洲精品午夜久久久| 成人精品一区二区三区四区| 久久久亚洲精华液精华液精华液| 精品亚洲免费视频| 337p粉嫩大胆色噜噜噜噜亚洲| 久久国产精品第一页| 欧美一二三四区在线| 久久精品国产99久久6| 久久亚洲一级片| 成人午夜电影久久影院| 日韩毛片一二三区| 日本精品视频一区二区| 一区二区在线免费观看| 欧美视频三区在线播放| 视频一区视频二区中文| 久久久99精品久久| 日本韩国欧美三级| 国产激情一区二区三区四区| 亚洲一区免费观看| 欧美婷婷六月丁香综合色| 一区二区三区在线播| 欧美色图激情小说| 另类小说一区二区三区| 久久久不卡网国产精品二区| 99久久精品免费观看| 亚洲国产一区二区三区青草影视| 日韩一区二区中文字幕| 日韩av中文字幕一区二区三区| 欧美在线视频全部完| 免费成人在线观看视频| 亚洲国产sm捆绑调教视频| 中文欧美字幕免费| 欧美日韩黄色影视| 国产一区二区三区在线观看免费视频| 久久嫩草精品久久久精品| 在线视频一区二区三| 久久精品理论片| 亚洲精品福利视频网站| 精品区一区二区| 欧美亚洲国产bt| 国产成人精品免费视频网站| 国产香蕉久久精品综合网| 91黄视频在线观看| 国产东北露脸精品视频| 亚洲国产精品99久久久久久久久| 日韩欧美一二三区| 欧美日韩久久久一区| 91黄色免费版| 色综合久久精品| 91国偷自产一区二区三区成为亚洲经典 | 久久国产综合精品| 午夜精品影院在线观看| 成人av影视在线观看| 午夜精品一区二区三区免费视频| 911精品国产一区二区在线| 久久成人18免费观看| 亚洲欧美日韩在线播放| 国产精品色婷婷| 91免费在线视频观看| 美女视频网站黄色亚洲| 久久精品日产第一区二区三区高清版| 成人精品免费视频| 日韩精品国产欧美| 亚洲精品老司机|