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

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

?? d_lib.c

?? 通訊程序源碼
?? C
字號:
/* * Routines to manipulate the dialing directory file pcomm.dial_dir */#include <stdio.h>#include "dial_dir.h"#include "param.h"/* * Read the dialing directory.  Returns a pointer to a static area * containing the DIAL_DIR structure.  All of the entries are created * regardless of the number of physical entries in the file.  Element * number zero is reserved for the "manual" entry.  All errors are fatal. */struct DIAL_DIR *read_dir(){	extern char *null_ptr;	FILE *fp, *uid_fopen();	int i, line, oops;	char *str_dup(), buf[200], *temp_token, *str, *str_tok(), token[20];	char message[80], *sep, *findfile();	static struct DIAL_DIR d;	void error_win();	if ((d.d_path = findfile("pcomm.dial_dir")) == NULL)		error_win(1, "Support file \"pcomm.dial_dir\" is missing", "or no read permission");	if (!(fp = uid_fopen(d.d_path, "r"))) {		sprintf(buf, "\"%s\" for read", d.d_path);		error_win(1, "Can't open dialing directory file", buf);	}	sep = ";;---;;\n";	line = 0;	oops = 0;	while (fgets(buf, 200, fp) != NULL) {		line++;		if (line > NUM_DIR)			break;					/* get the token */		if (!(temp_token = str_tok(buf, '='))) {			sprintf(message, "is missing a token at line %d", line);			oops++;			break;		}		/*		 * Parse the rest of the line.  This is similar to using		 * the "real" strtok() function, but this version returns		 * a pointer to NULL if the token is missing.  Note the use		 * of the array of field separators.		 */		for (i=0; i<8; i++) {			if (!(str = str_tok((char *) NULL, sep[i]))) {				sprintf(message, "is missing a parameter at line %d", line);				oops++;				break;			}			switch (i) {				case 0:					d.name[line] = str_dup(str);					break;				case 1:					d.number[line] = str_dup(str);					break;				case 2:					d.baud[line] = (unsigned int) atoi(str);					break;				case 3:					d.parity[line] = *str;					break;				case 4:					d.data_bits[line] = atoi(str);					break;				case 5:					d.stop_bits[line] = atoi(str);					break;				case 6:					d.duplex[line] = *str;					break;				case 7:					d.aux[line] = str_dup(str);					break;			}		}		if (oops)			break;					/* sanity checking */		sprintf(token, "DIR_%d", line);		if (strcmp(temp_token, token)) {			sprintf(message, "is corrupted at line %d", line);			oops++;			break;		}	}	fclose(fp);	if (oops) {		sprintf(buf, "Dialing directory file \"%s\"", d.d_path);		error_win(1, buf, message);	}	d.d_entries = line;					/* if empty database */	if (!line) {		sprintf(buf, "Dialing directory file \"%s\"", d.d_path);		error_win(0, buf, "has no data");	}					/* fill in the rest with defaults */	for (i=line+1; i<=NUM_DIR; i++) {		d.name[i] = null_ptr;		d.number[i] = null_ptr;		d.baud[i] = param->d_baud;		d.parity[i] = param->d_parity;		d.data_bits[i] = param->d_data_bits;		d.stop_bits[i] = param->d_stop_bits;		d.duplex[i] = *param->d_duplex;		d.aux[i] = null_ptr;	}					/* create an empty "manual" entry */	d.name[0] = null_ptr;	d.number[0] = null_ptr;	d.baud[0] = param->d_baud;	d.parity[0] = param->d_parity;	d.data_bits[0] = param->d_data_bits;	d.stop_bits[0] = param->d_stop_bits;	d.duplex[0] = *param->d_duplex;	d.aux[0] = null_ptr;					/* create an empty queue */	for (i=0; i<NUM_QUEUE; i++) {		d.q_ld[i] = '\0';		d.q_num[i] = -1;	}					/* the start up d_cur is 0 */	d.d_cur = 0;	return(&d);}/* * Update a dialing directory entry.  Update only the one entry asked for, * not the entire image in memory.  If the new entry is beyond the end of * the physical file, then fill in the holes, and update "dir->d_entries". * A non-zero return code means a non-fatal error. */intup_dir(entry)int entry;{	FILE *fp_in, *fp_out, *uid_fopen();	int i;	char *temp[NUM_DIR+1], buf[200], *str_dup(), *str_rep();	void error_win(), free_ptr();					/* open for read */	if (!(fp_in = uid_fopen(dir->d_path, "r"))) {		sprintf(buf, "\"%s\" for read", dir->d_path);		error_win(1, "Can't open dialing directory file", buf);	}					/* read in a temporary version */	i = 0;	while (fgets(buf, 200, fp_in) != NULL)		temp[++i] = str_dup(buf);	fclose(fp_in);					/* alter only 1 entry */	sprintf(buf, "DIR_%d=%s;%s;%d-%c-%d-%d;%c;%s\n", entry,	 dir->name[entry], dir->number[entry], dir->baud[entry],	 dir->parity[entry], dir->data_bits[entry], dir->stop_bits[entry],	 dir->duplex[entry], dir->aux[entry]);	if (entry <= dir->d_entries)		temp[entry] = str_rep(temp[entry], buf);	else		temp[entry] = str_dup(buf);					/* fill in holes if beyond end */	if (entry > dir->d_entries+1) {		for (i=dir->d_entries+1; i<entry; i++) {			sprintf(buf, "DIR_%d=;;%d-%c-%d-%d;%c;\n", i,			 param->d_baud, param->d_parity, param->d_data_bits,			 param->d_stop_bits, *param->d_duplex);			temp[i] = str_dup(buf);		}	}					/* update "dir->d_entries" */	if (entry > dir->d_entries)		dir->d_entries = entry;					/* open for write */	if (!(fp_out = uid_fopen(dir->d_path, "w"))) {		for (i=1; i<=dir->d_entries; i++)			free_ptr(temp[i]);		sprintf(buf, "\"%s\"", dir->d_path);		error_win(0, "No write permission on dialing directory file", buf);		return(1);	}					/* put it back */	for (i=1; i<=dir->d_entries; i++) {		fputs(temp[i], fp_out);		free_ptr(temp[i]);	}	fclose(fp_out);	return(0);}/* * Delete a range of dialing directory entries.  Actually, just copies * default (empty) entries in place of deleted entries.  However, it will * shrink the file if deletions occur at the physical EOF.  A non-zero * return code means a non-fatal error. */intdel_dir(first, last)int first, last;{	FILE *fp_in, *fp_out, *uid_fopen();	int i;	char *temp[NUM_DIR+1], buf[200], *str_dup(), *str_rep();	void error_win(), free_ptr();					/* sanity checking */	if (first > dir->d_entries)		return(0);	if (last > dir->d_entries)		last = dir->d_entries;					/* open for read */	if (!(fp_in = uid_fopen(dir->d_path, "r"))) {		sprintf(buf, "\"%s\" for read", dir->d_path);		error_win(1, "Can't open dialing directory file", buf);	}					/* read in a temporary version */	i = 0;	while (fgets(buf, 200, fp_in) != NULL)		temp[++i] = str_dup(buf);	fclose(fp_in);					/* delete the range of values */	for (i=first; i<=last; i++) {		sprintf(buf, "DIR_%d=;;%d-%c-%d-%d;%c;\n", i, param->d_baud,		 param->d_parity, param->d_data_bits, param->d_stop_bits,		 *param->d_duplex);		temp[i] = str_rep(temp[i], buf);	}					/* shrink the file? */	if (last >= dir->d_entries) {		for (i=first; i<=last; i++)			free_ptr(temp[i]);		dir->d_entries = first-1;	}					/* open for write */	if (!(fp_out = uid_fopen(dir->d_path, "w"))) {		for (i=1; i<=dir->d_entries; i++)			free_ptr(temp[i]);		sprintf(buf, "\"%s\"", dir->d_path);		error_win(0, "No write permission on dialing directory file", buf);		return(1);	}					/* put it all back */	for (i=1; i<=dir->d_entries; i++) {		fputs(temp[i], fp_out);		free_ptr(temp[i]);	}	fclose(fp_out);	return(0);}

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
欧美一卡二卡三卡四卡| 成人av影视在线观看| 一区二区三区中文字幕| 国产精品午夜久久| 中文字幕的久久| 亚洲乱码国产乱码精品精小说 | 欧美韩日一区二区三区| 精品福利视频一区二区三区| 欧美mv日韩mv亚洲| 欧美精品一区二区三区蜜桃| 久久久久亚洲蜜桃| 国产精品免费视频网站| 国产精品高清亚洲| 亚洲免费观看高清在线观看| 一区二区三区.www| 日本免费新一区视频| 激情图片小说一区| 成人动漫中文字幕| 欧美体内she精高潮| 7777精品久久久大香线蕉| 欧美一区二区播放| 国产精品蜜臀在线观看| 亚洲激情校园春色| 免费成人在线观看视频| 国产麻豆成人传媒免费观看| 99国产欧美另类久久久精品| 欧美三区在线视频| 久久久精品天堂| 亚洲最新在线观看| 国产在线播放一区二区三区| 蜜桃av噜噜一区二区三区小说| 黑人精品欧美一区二区蜜桃| 欧美精品第一页| 欧美大片在线观看一区| 国产精品理伦片| 五月综合激情日本mⅴ| 国产一区二区91| 欧美日韩一级黄| 国产精品女主播在线观看| 一区二区激情小说| 国产精品一二一区| 欧美调教femdomvk| 中文字幕不卡在线| 麻豆精品一区二区综合av| 91麻豆福利精品推荐| 欧美大胆一级视频| 亚洲一二三四久久| 国产91精品在线观看| 欧美一区二区三区免费大片| 亚洲三级久久久| 国产久卡久卡久卡久卡视频精品| 欧美亚洲综合在线| 亚洲婷婷在线视频| 国产成人综合自拍| 日韩午夜激情电影| 亚洲国产精品影院| 99精品视频在线免费观看| 日韩免费观看2025年上映的电影| 一区二区三区免费看视频| 国产酒店精品激情| 精品播放一区二区| 日韩在线播放一区二区| 欧美午夜精品一区| 亚洲男人的天堂在线观看| 国产91精品久久久久久久网曝门| 日韩欧美在线网站| 日韩精品一级中文字幕精品视频免费观看 | 日韩一区二区三免费高清| 伊人性伊人情综合网| 99精品视频在线免费观看| 国产精品久久久久一区 | 国产精品亚洲人在线观看| 日韩三级电影网址| 老司机精品视频在线| 欧美高清你懂得| 午夜精品久久久久久| 欧美三级在线播放| 亚洲国产精品久久久久婷婷884| 91麻豆免费看| 一区二区三区日韩在线观看| 在线免费精品视频| 香蕉av福利精品导航| 亚洲国产精品久久艾草纯爱| 欧美日韩国产片| 日韩精品亚洲专区| 国产色产综合产在线视频 | 韩国成人在线视频| 26uuu亚洲综合色欧美| 国产一区二区成人久久免费影院| 国产亚洲人成网站| 99国产精品久久久| 亚洲高清免费观看| 欧美一级高清大全免费观看| 久久草av在线| 国产精品婷婷午夜在线观看| 色婷婷精品久久二区二区蜜臂av | 国产成人精品一区二区三区网站观看| 久久精品日产第一区二区三区高清版 | thepron国产精品| 有码一区二区三区| 91精品国产品国语在线不卡| 韩国av一区二区三区在线观看| 欧美国产精品一区二区三区| 欧美午夜一区二区| 老色鬼精品视频在线观看播放| 国产欧美日韩三级| 欧美体内she精视频| 国产一区二区在线视频| 亚洲四区在线观看| 3atv一区二区三区| av一区二区三区在线| 日韩av二区在线播放| 国产精品色呦呦| 日韩一级免费一区| 91在线视频18| 国内一区二区视频| 亚洲成人精品一区| 中文字幕av不卡| 日韩你懂的在线观看| 色综合久久久久网| 国产在线观看免费一区| 亚洲激情五月婷婷| 中文字幕va一区二区三区| 91精品国产福利| 欧美中文字幕一区二区三区亚洲| 国产精品一卡二卡在线观看| 午夜欧美大尺度福利影院在线看| 欧美激情中文字幕| 日韩精品资源二区在线| 色悠悠亚洲一区二区| 国产精品一区二区在线播放| 99国产精品久久久久久久久久| 久久国产尿小便嘘嘘| 亚洲成人tv网| 亚洲精选在线视频| 中文字幕在线一区二区三区| 精品黑人一区二区三区久久| 欧美色精品天天在线观看视频| 99久久久无码国产精品| 国产精品一区二区三区乱码| 久久99国产乱子伦精品免费| 婷婷综合另类小说色区| 亚洲激情五月婷婷| 亚洲素人一区二区| 亚洲色大成网站www久久九九| 国产欧美日韩亚州综合| 久久久久久久久99精品| 久久久久国产精品厨房| 精品播放一区二区| 久久综合久久99| 久久先锋资源网| 欧美精品一区二区三区一线天视频| 欧美日韩久久一区| 欧美日韩精品一区二区三区| 精品视频1区2区3区| 欧美日本乱大交xxxxx| 在线播放亚洲一区| 欧美一区中文字幕| 日韩一区二区在线观看| 日韩欧美国产一区二区三区| 欧美成人精精品一区二区频| 精品国产三级电影在线观看| 精品国产凹凸成av人网站| 欧美精品一区二区三区很污很色的| 日韩精品资源二区在线| 久久综合久久久久88| 国产精品视频一二三区 | 亚洲自拍偷拍av| 天天色 色综合| 精品午夜久久福利影院| 国产高清视频一区| 成人丝袜高跟foot| 在线观看视频一区| 777xxx欧美| 国产欧美日韩亚州综合| 亚洲卡通动漫在线| 日韩av中文字幕一区二区| 国产麻豆精品在线| 色噜噜久久综合| 欧美一级理论片| 国产精品久久99| 日韩av在线播放中文字幕| 极品少妇xxxx精品少妇| av激情亚洲男人天堂| 欧美人与性动xxxx| 国产欧美日韩另类视频免费观看| 一区二区在线观看免费| 麻豆国产精品官网| 91丨porny丨户外露出| 欧美一级片免费看| 国产精品不卡在线| 久久精品国产澳门| 色丁香久综合在线久综合在线观看| 91精品国产综合久久香蕉麻豆| 国产精品污污网站在线观看| 午夜电影网一区| 91蜜桃在线免费视频| 久久久久久久久久久久久夜| 亚洲成人资源网| 94-欧美-setu|