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

? 歡迎來到蟲蟲下載站! | ?? 資源下載 ?? 資源專輯 ?? 關于我們
? 蟲蟲下載站

?? dirutil.c

?? 一百多個例子很好的verilog 學習資料
?? C
字號:
/* dirutil.c - MS-DOS directory reading routines
 *
 * Bdale Garbee, N3EUA, Dave Trulli, NN2Z, and Phil Karn, KA9Q
 * Directory sorting by Mike Chepponis, K3MC
 * New version using regs.h by Russell Nelson.
 * Rewritten for Turbo-C 2.0 routines by Phil Karn, KA9Q 25 March 89
 */

#include <stdio.h>
#include <dir.h>
#include <dos.h>
#include <stdlib.h>
#include "global.h"
#include "dirutil.h"
#include "proc.h"
#include "commands.h"

struct dirsort {
	struct dirsort *next;
	struct ffblk de;
};
#define	NULLSORT (struct dirsort *)0

static void commas(char *dest);
static int fncmp(char *a, char *b);
static void format_fname_full(FILE *file,struct ffblk *sbuf,int full,
	int n);
static void free_clist(struct dirsort *this);

#ifdef	notdef
static int getdir_nosort(char *path,int full,FILE *file);
#endif
static int nextname(int command, char *name, struct ffblk *sbuf);
static void print_free_space(FILE *file,int n);
static void undosify(char *s);
static char *wildcardize(char *path);

#define REGFILE	(FA_HIDDEN|FA_SYSTEM|FA_DIREC)

#define	insert_ptr(list,new)	(new->next = list,list = new)


/* Create a directory listing in a temp file and return the resulting file
 * descriptor. If full == 1, give a full listing; else return just a list
 * of names.
 */
FILE *
dir(path,full)
char *path;
int full;
{
	FILE *fp;

	if((fp = tmpfile()) != NULL){
		getdir(path,full,fp);
		rewind(fp);
	}
	return fp;
}

/* find the first or next file and lowercase it. */
static int
nextname(command, name, sbuf)
int command;
char *name;
struct ffblk *sbuf;
{
	int found;

	switch(command){
	case 0:
		found = findfirst(name,sbuf,REGFILE);
		break;
	default:
		found = findnext(sbuf);
	}
	found = found == 0;
	if(found)
		strlwr(sbuf->ff_name);

	return found;
}

/* wildcard filename lookup */
int
filedir(name,times,ret_str)
char *name;
int times;
char *ret_str;
{
	static struct ffblk sbuf;
	int rval;

	switch(times){
	case 0:
		rval = findfirst(name,&sbuf,REGFILE);
		break;
	default:
		rval = findnext(&sbuf);
		break;
	}
	if(rval == -1){
		ret_str[0] = '\0';
	} else {
		/* Copy result to output */
		strcpy(ret_str, sbuf.ff_name);
	}
	return rval;
}
/* do a directory list to the stream 
 * full = 0 -> short form, 1 is long
*/
int
getdir(path,full,file)
char *path;
int full;
FILE *file;
{
	struct ffblk sbuf;
	int command = 0;
	int n = 0;
	struct dirsort *head, *here, *new;

	path = wildcardize(path);

	head = NULLSORT;	/* No head of chain yet... */
	for(;;){
		if (!nextname(command, path, &sbuf))
			break;
		command = 1;	/* Got first one already... */
		if (sbuf.ff_name[0] == '.')	/* drop "." and ".." */
			continue;

		new = (struct dirsort *) mallocw(sizeof(struct dirsort));
		new->de = sbuf;	/* Copy contents of directory entry struct */

		/* insert it into the list */
		if (!head || fncmp(new->de.ff_name, head->de.ff_name) < 0) {
			insert_ptr(head, new);
		} else {
			register struct dirsort *this;
			for (this = head;
			    this->next != NULLSORT;
			    this = this->next)
				if (fncmp(new->de.ff_name, this->next->de.ff_name) < 0)
					break;
			insert_ptr(this->next, new);
		}
	} /* infinite FOR loop */

	for (here = head; here; here = here->next)
		format_fname_full(file,&here->de,full,++n);

	/* Give back all the memory we temporarily needed... */
	free_clist(head);

	if(full)
		print_free_space(file, n);
	return 0;
}
static int
fncmp(a,b)
register char *a, *b;
{
        int i;

	for(;;){
		if (*a == '.')
			return -1;
		if (*b == '.')
			return 1;
		if ((i = *a - *b++) != 0)
			return i;
		if (!*a++)
			return -1;
	}
}
/* Change working directory */
int
docd(argc,argv,p)
int argc;
char *argv[];
void *p;
{
	char dirname[128];

	if(argc > 1){
		if(chdir(argv[1]) == -1){
			printf("Can't change directory\n");
			return 1;
		}
	}
	if(getcwd(dirname,128) != NULL){
		undosify(dirname);
		printf("%s\n",dirname);
	}
	return 0;
}
/* List directory to console */
int
dodir(argc,argv,p)
int argc;
char *argv[];
void *p;
{
	char *path;

	path = (argc >= 2) ? argv[1] : "*.*";
	getdir(path,1,stdout);
	return 0;
}
/* Create directory */
int
domkd(argc,argv,p)
int argc;
char *argv[];
void *p;
{
#ifdef	__TURBOC__
	if(mkdir(argv[1]) == -1)
#else
	if(mkdir(argv[1],0777) == -1)
#endif
		perror("Can't mkdir");
	return 0;
}
/* Remove directory */
int
dormd(argc,argv,p)
int argc;
char *argv[];
void *p;
{
	if(rmdir(argv[1]) == -1)
		perror("Can't rmdir");
	return 0;
}

/*
 * Return a string with commas every 3 positions.
 * the original string is replace with the string with commas.
 *
 * The caller must be sure that there is enough room for the resultant
 * string.
 *
 *
 * k3mc 4 Dec 87
 */
static void
commas(dest)
char *dest;
{
	char *src, *core;	/* Place holder for malloc */
	unsigned cc;		/* The comma counter */
	unsigned len;

	len = strlen(dest);
	/* Make a copy, so we can muck around */
	core = src = strdup(dest);

	cc = (len-1)%3 + 1;	/* Tells us when to insert a comma */

	while(*src != '\0'){
		*dest++ = *src++;
		if( ((--cc) == 0) && *src ){
			*dest++ = ','; cc = 3;
		}
	}
	free(core);
	*dest = '\0';
}
/* fix up the filename so that it contains the proper wildcard set */
static char *
wildcardize(path)
char *path;
{
	struct ffblk sbuf;
	static char ourpath[64];

	/* Root directory is a special case */
	if(path == NULL ||
	   *path == '\0' ||
	   strcmp(path,"\\") == 0 ||
	   strcmp(path,"/") == 0)
		path = "\\*.*";

	/* if they gave the name of a subdirectory, append \*.* to it */
	if (nextname(0, path, &sbuf) &&
	    (sbuf.ff_attrib & FA_DIREC) &&
	    !nextname(1, path, &sbuf)) {

		/* if there isn't enough room, give up -- it's invalid anyway */
		if (strlen(path) + 4 > 63) return path;
		strcpy(ourpath, path);
		strcat(ourpath, "\\*.*");
		return ourpath;
	}
	return path;
}

static void
format_fname_full(file, sbuf, full, n)
FILE *file;
struct ffblk *sbuf;
int full, n;
{
	char line_buf[50];		/* for long dirlist */
	char cbuf[20];			/* for making line_buf */

	strcpy(cbuf,sbuf->ff_name);
	if(sbuf->ff_attrib & FA_DIREC) strcat(cbuf, "/");
	if (full) {
		/* Long form, give other info too */
		sprintf(line_buf,"%-13s",cbuf);
		if(sbuf->ff_attrib & FA_DIREC)
			strcat(line_buf,"           ");/* 11 spaces */
		else {
			sprintf(cbuf,"%ld",sbuf->ff_fsize);
			commas(cbuf);
			sprintf(line_buf+strlen(line_buf),"%10s ",cbuf);
		}
		sprintf(line_buf+strlen(line_buf),"%2d:%02d %2d/%02d/%02d%s",
		  (sbuf->ff_ftime >> 11) & 0x1f,	/* hour */
		  (sbuf->ff_ftime >> 5) & 0x3f,	/* minute */
		  (sbuf->ff_fdate >> 5) & 0xf,	/* month */
		  (sbuf->ff_fdate ) & 0x1f,		/* day */
		  (sbuf->ff_fdate >> 9) + 80,	/* year */
		  (n & 1) ? "   " : "\n");
		fputs(line_buf,file);
	} else {
		fputs(cbuf,file);
		fputs("\n",file);
	}
}
/* Provide additional information only on DIR */
static void
print_free_space(file, n)
FILE *file;
int n;
{
	unsigned long free_bytes, total_bytes;
	char s_free[11], s_total[11];
	char cbuf[20];
	struct dfree dtable;
	unsigned long bpcl;

	if(n & 1)
		fputs("\n",file);

	/* Find disk free space */
	getdfree(0,&dtable);

	bpcl = dtable.df_bsec * dtable.df_sclus;
	free_bytes  = dtable.df_avail * bpcl;
	total_bytes = dtable.df_total * bpcl;

	sprintf(s_free,"%ld",free_bytes);
	commas(s_free);
	sprintf(s_total,"%ld",total_bytes);
	commas(s_total);

	if(n)
		sprintf(cbuf,"%d",n);
	else
		strcpy(cbuf,"No");

	fprintf(file,"%s file%s. %s bytes free. Disk size %s bytes.\n",
		cbuf,(n==1? "":"s"),s_free,s_total);
}
static void
free_clist(this)
struct dirsort *this;
{
	struct dirsort *next;

	while (this != NULLSORT) {
		next = this->next;
		free(this);
		this = next;
	}
}
#ifdef	notdef
static int
getdir_nosort(path,full,file)
char *path;
int full;
FILE *file;
{
	struct ffblk sbuf;
	int command;
	int n = 0;	/* Number of directory entries */

	path = wildcardize(path);
	command = 0;
	while(nextname(command, path, &sbuf)){
		command = 1;	/* Got first one already... */
		if (sbuf.ff_name[0] == '.')	/* drop "." and ".." */
			continue;
		format_fname_full(file, &sbuf, full, ++n);
	}
	if(full)
		print_free_space(file, n);
	return 0;
}
#endif

/* Translate those %$#@!! backslashes to proper form */
static void
undosify(s)
char *s;
{
	while(*s != '\0'){
		if(*s == '\\')
			*s = '/';
		s++;
	}
}

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
国产精品第13页| 67194成人在线观看| 国产成人午夜精品5599| 99久久综合国产精品| 欧美一级片在线看| 国产精品久久久爽爽爽麻豆色哟哟| 亚洲影院久久精品| 激情丁香综合五月| 欧美日韩高清一区二区不卡| 欧美韩国日本综合| 国产在线乱码一区二区三区| 青青草原综合久久大伊人精品优势| 欧美极品aⅴ影院| 天堂va蜜桃一区二区三区| 不卡一区二区在线| 精品国产乱码久久久久久蜜臀 | 国产成人精品免费在线| 欧美久久久久久蜜桃| 亚洲三级视频在线观看| 丰满亚洲少妇av| 久久综合狠狠综合久久激情| 日韩精品亚洲专区| 欧美日韩国产一区| 亚洲影院在线观看| 欧美图区在线视频| 一区二区三区日韩| 色成人在线视频| 亚洲欧美成人一区二区三区| 成人美女在线观看| 国产亚洲精品精华液| 国产一区二区三区久久悠悠色av | 欧美成人欧美edvon| 午夜电影网亚洲视频| 欧美日韩一区高清| 亚洲成a人片在线不卡一二三区 | 亚洲免费观看在线视频| 99热99精品| 亚洲人成在线播放网站岛国| 91在线视频在线| 亚洲精品视频在线观看免费 | 国产曰批免费观看久久久| 欧美大黄免费观看| 精品一区二区三区影院在线午夜| 日韩一区二区三| 加勒比av一区二区| 久久九九全国免费| 成人黄色免费短视频| 亚洲视频一二三区| 欧美在线观看一区二区| 亚洲高清在线视频| 91精品久久久久久蜜臀| 精品一区二区在线视频| 国产精品网站导航| 欧美中文字幕一区| 奇米影视7777精品一区二区| 精品国产91九色蝌蚪| 成人免费视频一区二区| 亚洲精品国产精品乱码不99| 欧美色男人天堂| 免费av成人在线| 国产欧美一区在线| 欧美最猛黑人xxxxx猛交| 日韩av电影免费观看高清完整版| 精品少妇一区二区三区日产乱码| 国产91露脸合集magnet| 亚洲最大成人网4388xx| 欧美日韩国产在线观看| 国产综合成人久久大片91| 亚洲同性gay激情无套| 欧美精品99久久久**| 国产裸体歌舞团一区二区| 天天综合网天天综合色| 精品久久久网站| 色视频一区二区| 美日韩一级片在线观看| 国产精品对白交换视频| 欧美一区三区四区| eeuss鲁片一区二区三区在线观看| 亚洲成av人片一区二区三区| 久久久无码精品亚洲日韩按摩| 色综合久久综合| 国产一区二区精品久久99| 亚洲一卡二卡三卡四卡 | 欧美一区二区三区在线观看视频 | 日韩午夜av一区| 99久久国产免费看| 精品综合免费视频观看| 亚洲制服丝袜一区| 国产日韩亚洲欧美综合| 欧美日本精品一区二区三区| 国产凹凸在线观看一区二区| 男男gaygay亚洲| 亚洲成人综合视频| 最新国产成人在线观看| 26uuu精品一区二区三区四区在线| 色婷婷亚洲精品| 国产成人在线观看免费网站| 男女激情视频一区| 亚洲综合清纯丝袜自拍| 一区在线中文字幕| 国产肉丝袜一区二区| 日韩欧美一卡二卡| 正在播放亚洲一区| 欧美日韩综合色| 色综合久久久久综合| gogogo免费视频观看亚洲一| 国产精品资源在线看| 美女视频网站黄色亚洲| 午夜激情综合网| 亚洲一区二区精品久久av| 亚洲欧洲美洲综合色网| 欧美极品少妇xxxxⅹ高跟鞋| 久久影院视频免费| 久久综合视频网| 日韩一级在线观看| 日韩精品一区在线观看| 日韩欧美久久一区| 欧美刺激午夜性久久久久久久| 56国语精品自产拍在线观看| 欧美午夜精品久久久| 在线观看免费视频综合| 欧美系列在线观看| 欧美日本韩国一区二区三区视频| 欧美色爱综合网| 欧美高清视频一二三区| 欧美一级午夜免费电影| 日韩欧美精品三级| 欧美精品一区二区三区蜜桃视频| 亚洲精品一区二区三区蜜桃下载| 26uuu久久天堂性欧美| 国产欧美一区二区精品忘忧草 | 国产剧情一区二区三区| 国产成+人+日韩+欧美+亚洲| 成人黄色av网站在线| 欧美日韩一卡二卡| 制服丝袜成人动漫| 337p粉嫩大胆噜噜噜噜噜91av| 国产校园另类小说区| ...xxx性欧美| 性做久久久久久免费观看| 美女久久久精品| 成人在线视频一区| 色老综合老女人久久久| 欧美精品久久一区| 久久久精品综合| 亚洲精品美国一| 美女爽到高潮91| 91小视频免费看| 欧美一区三区二区| 亚洲欧美综合色| 免费一级欧美片在线观看| 国产成人在线影院| 欧美日韩在线播| 国产午夜精品福利| 亚洲国产欧美在线| 国产美女娇喘av呻吟久久| 色丁香久综合在线久综合在线观看| 91麻豆精品国产91久久久久久久久| 久久免费电影网| 亚洲六月丁香色婷婷综合久久 | 欧美午夜在线一二页| 欧美成人精品福利| 亚洲码国产岛国毛片在线| 欧美aa在线视频| 色88888久久久久久影院按摩| 日韩欧美成人一区二区| 亚洲三级视频在线观看| 国产中文一区二区三区| 91成人在线精品| 欧美国产国产综合| 青草av.久久免费一区| 日本高清视频一区二区| 久久久久久久久久久久久久久99| 一区二区三区丝袜| 成人永久看片免费视频天堂| 欧美一区二区三区思思人| 亚洲天堂免费在线观看视频| 狠狠色丁香久久婷婷综| 欧美美女激情18p| 亚洲免费在线观看视频| 粉嫩av一区二区三区粉嫩 | 欧美系列在线观看| 国产精品久99| 国产99久久久精品| 精品国产91亚洲一区二区三区婷婷| 亚洲午夜久久久| 色94色欧美sute亚洲线路二| 国产精品久久久久久一区二区三区| 精品一区二区av| 欧美大黄免费观看| 美女www一区二区| 91精品国产欧美一区二区| 亚洲成人动漫在线免费观看| 欧美三级电影在线观看| 国产精品国产三级国产| 成人h动漫精品一区二区| 国产欧美久久久精品影院| 国产综合一区二区| 久久久五月婷婷| 国产精品资源站在线|