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

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

?? libmodem-1.0.0.pha.patch

?? 手機短消息服務的服務器和客戶端
?? PATCH
字號:
diff -r -u libmodem-1.0.0.orig/Makefile libmodem-1.0.0/Makefile--- libmodem-1.0.0.orig/Makefile	Tue Aug 26 17:19:48 1997+++ libmodem-1.0.0/Makefile	Thu Oct  8 16:46:58 1998@@ -31,7 +31,7 @@  include CONFIG.MAKE -CFLAGS= -I. $(CCFLAGS) $(DEFINES) $(DEBUG) -DLIBRARY -DLIB_VERSION=$(LIB_VERSION)+CFLAGS= -I. $(CCFLAGS) $(DEFINES) $(DEBUG) -DLIBRARY -DLIB_VERSION=$(LIB_VERSION) -DSMS_FIX MANFIN= $(MANDIR)/man$(MANEXT)  # for the librarydiff -r -u libmodem-1.0.0.orig/dial/modems.h.in libmodem-1.0.0/dial/modems.h.in--- libmodem-1.0.0.orig/dial/modems.h.in	Tue Aug 26 14:11:17 1997+++ libmodem-1.0.0/dial/modems.h.in	Wed Oct 14 15:27:42 1998@@ -112,6 +112,10 @@ extern int ldial(char *, char *); extern int bdial(char *, int); extern int bldial(char *, char *, int);+extern int open_mdm_line();+extern int lopen_mdm_line(char *);+extern int bopen_mdm_line(int);+extern int blopen_mdm_line(char *, int); extern int close_nohangup(int); extern int hangup(int); extern struct modems *getopenmodem(void);diff -r -u libmodem-1.0.0.orig/line_manage.c libmodem-1.0.0/line_manage.c--- libmodem-1.0.0.orig/line_manage.c	Tue Aug 26 09:48:22 1997+++ libmodem-1.0.0/line_manage.c	Wed Oct 14 15:27:06 1998@@ -288,6 +288,182 @@     return fd; } +int open_mdm_line()  {+    struct modems *mdl;+    int ret = 0;++    open_mdm_log();+    mdmerrno = 0;+    setmdms();++    while ((mdl = getnextmdm()) != NULL) {+/*+ * if locked, skip to the next modem+ */+        if (mdm_chklock(mdl) == SUCCESS)+		continue;++/*+ * Try to dial...+ */+        ret = blopen_mdm_line(mdl->line, mdl->bd);++/*+ * If the user ask it, cycle all the modems on error+ */+	if ((ret < 0) && mdm_cycle) {+/*+ * If cycle is chosen, the meaning of mdm_cycle is not only an on/off, it is+ * the max number of times we cycle. At 0, end of the story: no more retries.+ */+		--mdm_cycle;+/*+ * Log the error and continue (we force the error log because this modem can+ * be in a fault state while the sysadmin don't know the faulty state).+ */+		mdm_log(LOG_INFO,+			"Error encountered while opening %s (%s)\n",+			mdl->line,+			mdmstrerror(ret));++		switch (ret) {+			case -EUNMDMERR:+			case -ENOMDMFILE:+			case -EMDMBUSY:+/*+ * If config file don't exist or unknown error is returned,  or line is busy+ * don't cycle the modems.+ */+				break;+			default:+		    		continue;+		}+	}+/*+ * If the modem is alredy used, skip to the next modem else return the error+ */+	if (ret != EMDMOPEN)+		return ret;+    }++    return (mdmerrno = -ENOMDMDEV);+}++int lopen_mdm_line(char *line) {+    struct modems *mdl;++    open_mdm_log();+    mdmerrno = 0;++    if ((mdl = getmdmnam(line)) == NULL)+        return mdmerrno;++/*+ * dial at the maximum baud rate+ */+    return blopen_mdm_line(line, mdl->bd);+}++int bopen_mdm_line(int baud)  {+    struct modems *mdl;+    int ret = 0;++    open_mdm_log();+    mdmerrno = 0;+    setmdms();++    while ((mdl = getnextmdm()) != NULL) {+        if (baud <= mdl->bd) {+/*+ * if locked, skip this modem+ */+            if (mdm_chklock(mdl) == SUCCESS)+	    	continue;+/*+ * Try to dial...+ */+            ret = blopen_mdm_line(mdl->line, baud);+/*+ * If the user ask it, cycle all the modems on error+ */+	    if ((ret < 0) && mdm_cycle) {+/*+ * If cycle is chosen, the meaning of mdm_cycle is not only an on/off, it is+ * the max number of times we cycle. At 0, end of the story: no more retries.+ */+		--mdm_cycle;+/*+ * Log the error and continue+ */+			mdm_log(LOG_INFO,+				"Error encountered while opening %s (%s)\n",+				mdl->line,+				mdmstrerror(ret));++		    	switch (ret) {+				case -EUNMDMERR:+				case -ENOMDMFILE:+				case -EMDMBUSY:+/*+ * If config file don't exist or unknown error is returned, or line is busy+ * don't cycle the modems.+ */+					break;+				default:+		    			continue;+		    	}+	    }+/*+ * If the modem is alredy used, skip to the next modem else return the error+ */+            if (ret != EMDMOPEN)+                    return ret;+        }+    }++    return (mdmerrno = -ENOMDMDEV);+}++int blopen_mdm_line(char *line, int baud) {+    struct modems *mdl;+    int fd, ret = 0;++    open_mdm_log();+    mdmerrno = 0;++    if ((mdl = getmdmnam(line)) == NULL)+        return mdmerrno;++    if (mdm_chklock(mdl) == SUCCESS)+	    return (mdmerrno = -EMDMLOCK);+/*+ * lock and open the modem line and set it up for communications+ * remember to unlock the mdl device when returning an error.+ */+    if ((fd = open_modem_setup_line(mdl, baud)) < 0)+        return fd;++/*+ * Now we must save the actual device to have it in hands when hangup+ */+    mdmopendevice = mdl;++/*+ * set up the modem: init string et al+ */+    if ((ret = initialize_modem(fd, mdl)) < 0) {+        mdm_unlock(mdl);+        hangup(fd);+        return ret;+    }++/*+ * Comm link now open with modem, returning fd+ */+    close_mdm_log();+    return fd;+}+ static int dial_to_num(int fd, struct modems *device, char *num) { 	char *buffer; 	int ret = -ENOMDMERR;@@ -638,6 +814,280 @@ 	return FAILURE; } ++#if defined(SMS_FIX)+/* Angelo: + *+ * Problem with this routine:+ * When we send command strings to the modem+ * We are expecting return values from the modem in the form+ * of simple strings.+ * + * When we send the ATDT command we expect a CONNECT+ * string to be returned, if we write the ATDT command and read+ * the result into a buffer - reading 1000 charaters we get the+ * result and potentially any other data that may follow. It is + * a very bad idea to throw away this data as an application+ * will never see it!!!+ * + * The solution is to read the result a character at a time + * stopping as soon as we get the resonse string we are looking+ * for.+ */++static+int talk_to_modem(int fd, struct modems *device, char *command, int isdial) {+	fd_set readfds;+	struct timeval tmout;+	int ret;+	int cmd_found = FAILURE;+	int retries = SYNC_RTRY;+	int mdm_read_retries = READ_RTRY;+	char *cmdbuffer;+	char *bigbuffer;+	char *cmdmodem;+	char *buffer;++	cmdbuffer = mdmalloc(BUFSIZE);++	if (!cmdbuffer)+		return -EMDMEM;++	bigbuffer = mdmalloc(BUFSIZE);++	if (!bigbuffer) {+		mdmfree(cmdbuffer);+		return -EMDMEM;+	}++	cmdmodem = mdmalloc(BUFSIZE);++	if (!cmdmodem) {+		mdmfree(cmdbuffer);+		mdmfree(bigbuffer);+		return -EMDMEM;+	}++	buffer = mdmalloc(BUFSIZE);++	if (!buffer) {+		mdmfree(cmdbuffer);+		mdmfree(bigbuffer);+		mdmfree(cmdmodem);+		return -EMDMEM;+	}++#if defined(DEBUG)+	mdm_log(LOG_DEBUG, "Using SMS_FIX version of talk_to_modem\n");+	mdm_log(LOG_DEBUG, "writing >> %s << to modem\n", command);+#endif /* DEBUG */++/*+ * write the command to modem+ */++	if (write(fd, command, strlen(command)) != strlen(command)) {+		mdmfree(cmdbuffer);+		mdmfree(bigbuffer);+		mdmfree(cmdmodem);+		mdmfree(buffer);+		return (mdmerrno = -EMDMWRITE);+	}++	mdm_log(LOG_INFO, "written >> %s << to modem\n", command);++    /*+     * I need to check this thing.+     */+	sleep (1);+++	/* Angelo:+	 * +	 * As we will be reading only 1 character at+	 * a time to avoid eating data, mdm_read_retries+	 * needs to be higher, the size of the buffer+	 * is ok forthis.+	 */++	mdm_read_retries = BUFSIZE;++	while (!cmd_found) {++		memset(bigbuffer, 0, BUFSIZE);++		FD_ZERO(&readfds);+		FD_SET(fd, &readfds);++		tmout.tv_sec  = device->dl;+		tmout.tv_usec = 0;++		ret = select(FD_SETSIZE, &readfds, NULL, NULL, &tmout);++		if (ret < 0) {+			mdmfree(cmdbuffer);+			mdmfree(bigbuffer);+			mdmfree(cmdmodem);+			mdmfree(buffer);+			return (mdmerrno = -EMDMSEL);+		}++		if (!FD_ISSET(fd, &readfds)) {+			mdmfree(cmdbuffer);+			mdmfree(bigbuffer);+			mdmfree(cmdmodem);+			mdmfree(buffer);+			return (mdmerrno = -EMDMNOFDSET);+		}+++		/* Angelo:+		 *+		 * Data is waiting to be read from fd+		 * read only 1 character and append to buf. +		 * Reading more than 1 character will potentially+		 * eat into data being sent from remote machine+		 */++		if ((ret = read(fd, bigbuffer, 1)) < 0) {+			mdmfree(cmdbuffer);+			mdmfree(bigbuffer);+			mdmfree(cmdmodem);+			mdmfree(buffer);+			return (mdmerrno = -EMDMREAD);+		}+        +		bigbuffer[ret] = '\0';+++#if defined(DEBUG)+		mdm_log(LOG_DEBUG, "read >> %s << from modem\n", bigbuffer);+#endif /* DEBUG */++		strcat(cmdbuffer, bigbuffer);++		if (get_command(cmdbuffer, cmdmodem) == FAILURE) {+			if (!(mdm_read_retries--)) {+				mdmfree(cmdbuffer);+				mdmfree(bigbuffer);+				mdmfree(cmdmodem);+				mdmfree(buffer);+				return (mdmerrno = -EMDMRDRT);+			}+			continue;+		}++/*+ * Reset read retries: we have found something.+ */++		mdm_read_retries = BUFSIZE;++		if (!strcmp(command, cmdmodem)) {+/*+ * local echo enabled!!! strip out the command from modem answer!!!!+ * that is "command\r\nOK\r\n" or something like that+ */+			if (get_command(cmdbuffer, cmdmodem) == FAILURE) {+				if (!(mdm_read_retries--)) {+					mdmfree(cmdbuffer);+					mdmfree(bigbuffer);+					mdmfree(cmdmodem);+					mdmfree(buffer);+					return (mdmerrno = -EMDMRDRT);+				}+				continue;+			}++			mdm_read_retries = BUFSIZE;+		}++		mdm_log(LOG_INFO, "checking >> %s << from modem\n", cmdmodem);++		if (check_for_string(cmdmodem, buffer) == SUCCESS)+			cmd_found = 1;+		if (!(retries--)) {+			mdmfree(cmdbuffer);+			mdmfree(bigbuffer);+			mdmfree(cmdmodem);+			mdmfree(buffer);+			return (mdmerrno = -EMDMSYNC);+		}+	}++/*+ * If modem return ERROR, we must return the error now+ * if it is RINGing we must return.+ */+	if (!strcmp(buffer, "ERROR")) {+		mdmfree(cmdbuffer);+		mdmfree(bigbuffer);+		mdmfree(cmdmodem);+		mdmfree(buffer);+		return (mdmerrno = -EMDMERROR);+	}++	if (!strcmp(buffer, "RING")) {+		mdmfree(cmdbuffer);+		mdmfree(bigbuffer);+		mdmfree(cmdmodem);+		mdmfree(buffer);+		return (mdmerrno = -EMDMRING);+	}++	if (isdial) {+/*+ * check the answer against 'CONNECT' or BUSY+ */+		if (!strcmp(buffer, "CONNECT")) {+			mdmfree(cmdbuffer);+			mdmfree(bigbuffer);+			mdmfree(cmdmodem);+			mdmfree(buffer);+			return (mdmerrno = -ENOMDMERR);+		}+		if (!strcmp(buffer, "BUSY")) {+			mdmfree(cmdbuffer);+			mdmfree(bigbuffer);+			mdmfree(cmdmodem);+			mdmfree(buffer);+			return (mdmerrno = -EMDMBUSY);+		}+		if (!strcmp(buffer, "NO DIALTONE")) {+			mdmfree(cmdbuffer);+			mdmfree(bigbuffer);+			mdmfree(cmdmodem);+			mdmfree(buffer);+			return (mdmerrno = -EMDMTONE);+		}+		if (!strcmp(buffer, "NO ANSWER")) {+			mdmfree(cmdbuffer);+			mdmfree(bigbuffer);+			mdmfree(cmdmodem);+			mdmfree(buffer);+			return (mdmerrno = -EMDMANSW);+		}+	} else {+/*+ * check the answer against 'OK' ? No err : Unk err+ */+		if (!strcmp(buffer, "OK")) {+			mdmfree(cmdbuffer);+			mdmfree(bigbuffer);+			mdmfree(cmdmodem);+			mdmfree(buffer);+			return (mdmerrno = -ENOMDMERR);+		}+	}+	mdmfree(cmdbuffer);+	mdmfree(bigbuffer);+	mdmfree(cmdmodem);+	mdmfree(buffer);+	return (mdmerrno = -EUNMDMERR);+}++#else  /* SMS_FIX */+ static int talk_to_modem(int fd, struct modems *device, char *command, int isdial) { 	fd_set readfds;@@ -872,6 +1322,9 @@ 	mdmfree(buffer); 	return (mdmerrno = -EUNMDMERR); }++#endif /* SMS_FIX */+  static int check_for_string(char *from, char *to) { 	int i;

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
国产麻豆精品在线| 欧美高清精品3d| 欧美老女人第四色| 久久精品人人做人人综合| 夜夜嗨av一区二区三区四季av | 欧美日本在线播放| 久久精品一区二区三区不卡牛牛 | 精品国产乱码久久久久久久久 | 久久久久久久久99精品| 亚洲午夜久久久久久久久电影网 | 激情文学综合网| 日本久久电影网| 国产片一区二区| 美女爽到高潮91| 欧美性色黄大片手机版| 国产三级一区二区三区| 免费美女久久99| 欧美日韩精品免费观看视频| 国产精品久久久久影院色老大 | 欧美一区二区三区四区高清| 日韩毛片精品高清免费| 国产一区二区视频在线播放| 欧美精品粉嫩高潮一区二区| 亚洲精品成人少妇| 91丨九色丨蝌蚪丨老版| 欧美经典三级视频一区二区三区| 久久国产精品区| 91精品国产综合久久精品麻豆| 亚洲日本va在线观看| 99视频一区二区三区| 国产精品美女www爽爽爽| 国产精品99久久久久久似苏梦涵 | 91在线视频免费观看| 中文字幕 久热精品 视频在线| 国产在线精品一区二区不卡了| 欧美v日韩v国产v| 免费日本视频一区| 亚洲视频免费在线| 一本色道久久综合精品竹菊 | 精品少妇一区二区三区日产乱码| 日韩综合小视频| 日韩一区二区不卡| 麻豆精品在线视频| 久久久夜色精品亚洲| 国产福利精品一区| 国产精品久久久久久久第一福利 | 精品国产乱码久久久久久浪潮| 精品亚洲aⅴ乱码一区二区三区| 欧美大肚乱孕交hd孕妇| 精品一区二区三区久久久| 久久久久久久久久看片| 成人天堂资源www在线| 亚洲视频资源在线| 欧美性欧美巨大黑白大战| 日韩福利电影在线| 久久久久久99久久久精品网站| 国产精品亚洲专一区二区三区| 国产精品蜜臀av| 欧美视频三区在线播放| 蜜桃精品在线观看| 欧美激情一区三区| 欧美影视一区二区三区| 日韩国产成人精品| 国产肉丝袜一区二区| 色噜噜夜夜夜综合网| 日韩国产欧美在线观看| 久久久美女艺术照精彩视频福利播放| 国产成人亚洲综合色影视| 亚洲三级久久久| 欧美电影精品一区二区| 99精品欧美一区二区三区综合在线| 亚洲第一成人在线| 国产欧美视频一区二区| 欧美性一级生活| 国产麻豆成人精品| 香港成人在线视频| 中文字幕精品在线不卡| 8x8x8国产精品| 波多野结衣91| 六月丁香婷婷久久| 一区二区不卡在线播放| 久久夜色精品一区| 欧美乱妇23p| www.欧美日韩国产在线| 久久激情五月婷婷| 亚洲国产精品久久久久婷婷884| 久久久五月婷婷| 在线成人小视频| 日本韩国欧美在线| voyeur盗摄精品| 国产一区二区三区久久悠悠色av| 亚洲一卡二卡三卡四卡五卡| 欧美激情综合网| 26uuu久久天堂性欧美| 欧美日韩国产三级| 91在线视频播放地址| 国产成人精品网址| 久久电影网站中文字幕| 天天做天天摸天天爽国产一区| 亚洲色图视频免费播放| 日本一区二区视频在线| 久久伊99综合婷婷久久伊| 日韩一区二区三区三四区视频在线观看 | 欧美高清在线精品一区| 精品国产一区二区国模嫣然| 欧美午夜电影网| 日本高清免费不卡视频| 99久久综合国产精品| 成人一级片在线观看| 九色|91porny| 久久se精品一区二区| 人人狠狠综合久久亚洲| 日本在线观看不卡视频| 视频一区视频二区中文| 午夜电影网一区| 天堂av在线一区| 日日夜夜精品视频天天综合网| 亚洲最大成人网4388xx| 亚洲自拍欧美精品| 一区二区三区国产精华| 亚洲国产精品一区二区www| 亚洲国产成人porn| 天天综合日日夜夜精品| 天堂影院一区二区| 美女爽到高潮91| 国产精品白丝jk白祙喷水网站| 国产美女主播视频一区| 丁香激情综合国产| 成人一区在线看| 99re6这里只有精品视频在线观看 99re8在线精品视频免费播放 | 国产精品麻豆视频| 亚洲精品视频一区| 亚洲成av人片一区二区梦乃| 三级欧美在线一区| 国内精品免费**视频| 国产成人免费在线视频| av亚洲产国偷v产偷v自拍| 91国在线观看| 日韩欧美一级二级| 亚洲国产成人午夜在线一区| 亚洲啪啪综合av一区二区三区| 亚洲一区二区三区四区的| 日本vs亚洲vs韩国一区三区二区| 韩国一区二区三区| 99精品久久久久久| 欧美一区二区三区小说| 久久久久久9999| 亚洲精品一二三区| 久久精品久久综合| 成人国产精品免费观看视频| 欧美一a一片一级一片| 欧美成人三级在线| 成人欧美一区二区三区视频网页 | 欧美又粗又大又爽| 欧美mv日韩mv国产| 中文字幕一区在线| 日韩av午夜在线观看| 成人一级视频在线观看| 欧美久久久一区| 中文av一区二区| 日韩精品一二三区| 91丨porny丨首页| 精品久久人人做人人爰| 国内一区二区视频| 日本高清不卡在线观看| 欧美videos大乳护士334| 日韩久久一区二区| 国产尤物一区二区| 欧美群妇大交群中文字幕| 国产日产欧美精品一区二区三区| 亚洲愉拍自拍另类高清精品| 国产传媒欧美日韩成人| 欧美一级欧美一级在线播放| 亚洲啪啪综合av一区二区三区| 国产一区二区三区黄视频 | 毛片不卡一区二区| 欧美亚洲日本国产| 国产精品久久久久影院亚瑟| 蜜桃av一区二区三区电影| 欧美在线一区二区| 国产精品久久久久久久久久免费看| 麻豆精品蜜桃视频网站| 欧美视频一区在线| 亚洲品质自拍视频网站| 成人动漫一区二区| 久久久国际精品| 毛片av一区二区三区| 欧美一区二区观看视频| 亚洲va国产va欧美va观看| 日本高清不卡一区| 亚洲天堂2014| 91美女片黄在线| 亚洲少妇最新在线视频| a在线播放不卡| 国产精品久线观看视频| 成人精品国产免费网站| 中文字幕+乱码+中文字幕一区| 国产成a人亚洲| 亚洲国产精品一区二区www在线| 色8久久精品久久久久久蜜|