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

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

?? libmodem-1.0.0.pha.patch

?? 手機短消息的服務器端和客戶端的源代碼 是應用于LINUX/UNIX開發環境的
?? 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一区二区三区免费野_久草精品视频
thepron国产精品| 亚洲国产精品99久久久久久久久| 国产高清精品在线| 免费看欧美美女黄的网站| 国产精品电影一区二区三区| 久久精品一级爱片| 国产亚洲女人久久久久毛片| 国产午夜精品一区二区三区嫩草 | 国产一区二区三区最好精华液| 亚洲一区二区三区在线| 亚洲老司机在线| 亚洲激情av在线| 亚洲第一电影网| 日韩 欧美一区二区三区| 日韩电影一二三区| 美女mm1313爽爽久久久蜜臀| 理论电影国产精品| 国产一级精品在线| 国产精品乡下勾搭老头1| 成人福利视频在线看| 91在线国产福利| 欧美色综合久久| 91精品免费在线观看| 日韩三级在线观看| 久久影院电视剧免费观看| 国产色综合一区| 亚洲三级在线免费观看| 性做久久久久久免费观看欧美| 日本不卡高清视频| 国产福利视频一区二区三区| 99国产精品久久久久久久久久久 | 欧美日本一道本| 欧美大白屁股肥臀xxxxxx| 国产欧美日韩一区二区三区在线观看 | 欧美国产日本韩| 亚洲一区视频在线| 秋霞电影一区二区| 成年人午夜久久久| 91麻豆精品国产91久久久久久久久| 26uuu色噜噜精品一区| 成人欧美一区二区三区| 日韩激情中文字幕| 成人美女在线观看| 69久久夜色精品国产69蝌蚪网| 国产丝袜欧美中文另类| 天天操天天综合网| 成熟亚洲日本毛茸茸凸凹| 欧美精品一级二级三级| 国产精品乱人伦中文| 日本欧美在线观看| 粉嫩一区二区三区性色av| 欧美日本一道本| 亚洲美女在线一区| 国产福利一区二区三区| 日韩一卡二卡三卡四卡| 亚洲精品中文在线观看| 国产成人啪午夜精品网站男同| 欧美性猛片aaaaaaa做受| 日本一二三不卡| 日韩二区三区四区| 北条麻妃一区二区三区| 欧美日韩综合在线免费观看| 亚洲国产精品激情在线观看| 日韩精品成人一区二区在线| 欧美在线制服丝袜| 亚洲欧美日韩系列| 成人黄色网址在线观看| 日韩欧美一级精品久久| 午夜精品爽啪视频| 色菇凉天天综合网| 亚洲视频免费看| 99久久综合狠狠综合久久| 欧美激情一区二区三区蜜桃视频| 久久精品国产免费看久久精品| 欧美日韩视频在线第一区| 亚洲男女一区二区三区| 不卡一二三区首页| 久久久另类综合| 午夜电影网一区| 91精品国产免费| 免费成人美女在线观看.| 3d动漫精品啪啪| 日韩精品一二三区| 欧美一卡二卡三卡四卡| 蜜臀av性久久久久蜜臀aⅴ四虎| 欧美精品欧美精品系列| 日韩专区一卡二卡| 91精品在线观看入口| 日韩精品成人一区二区三区| 精品理论电影在线| 国内不卡的二区三区中文字幕| 精品乱人伦一区二区三区| 国产东北露脸精品视频| 国产精品日韩成人| 91麻豆免费看片| 天天操天天干天天综合网| 在线91免费看| 国产一区二区三区不卡在线观看| 国产日韩影视精品| 91亚洲国产成人精品一区二三| 亚洲免费看黄网站| 91精品国产日韩91久久久久久| 激情综合网最新| 国产精品不卡视频| 欧洲在线/亚洲| 精品一区二区三区在线播放| 国产日韩欧美麻豆| 日本韩国视频一区二区| 天天影视色香欲综合网老头| 久久女同性恋中文字幕| 国产成人丝袜美腿| 天堂在线亚洲视频| 久久精品亚洲精品国产欧美kt∨| 97久久超碰国产精品| 日韩精品一级二级| 中文字幕精品一区 | 最近日韩中文字幕| 欧美精品精品一区| 成人高清在线视频| 免费人成网站在线观看欧美高清| 国产精品无码永久免费888| 欧美久久久久中文字幕| 成人小视频在线| 青青草国产成人99久久| 国产精品电影一区二区三区| 91精品欧美综合在线观看最新| youjizz国产精品| 日韩av在线播放中文字幕| 中文字幕中文在线不卡住| 日韩视频免费观看高清完整版 | 日本最新不卡在线| 亚洲天堂av一区| 久久青草国产手机看片福利盒子| 欧美日本乱大交xxxxx| av福利精品导航| 韩国理伦片一区二区三区在线播放| 亚洲免费毛片网站| 国产精品久久夜| 日韩亚洲欧美在线| 欧美色视频一区| 99久久国产综合精品麻豆| 久久精品免费观看| 亚洲色图都市小说| 中文子幕无线码一区tr| 精品欧美一区二区久久| 欧美成人猛片aaaaaaa| 欧美日韩日日夜夜| 欧美影视一区在线| 色婷婷综合在线| 91捆绑美女网站| 成人ar影院免费观看视频| 久久精品国产亚洲一区二区三区| 亚洲精品一卡二卡| 亚洲综合色区另类av| 国产精品乱码妇女bbbb| 国产欧美一区视频| 中文字幕第一区综合| 久久久噜噜噜久久中文字幕色伊伊| 日韩一级片在线播放| 精品视频一区二区三区免费| 欧美视频完全免费看| 欧美另类高清zo欧美| 欧美精品一二三区| 欧美电影精品一区二区| 欧美成人精品1314www| 精品99999| 国产欧美日韩麻豆91| 中文字幕欧美激情| 亚洲自拍偷拍综合| 亚洲成人777| 日本vs亚洲vs韩国一区三区| 另类小说一区二区三区| 国产乱子伦一区二区三区国色天香| 国产一区二区三区综合| 国产成人免费视频网站高清观看视频 | 天使萌一区二区三区免费观看| 亚洲第一综合色| 美女视频一区二区三区| 国产福利一区二区三区在线视频| 成人18精品视频| 欧美日韩精品一区二区三区| 777久久久精品| 久久久精品黄色| 亚洲精品欧美综合四区| 日韩专区欧美专区| 成人综合在线观看| 欧美中文字幕亚洲一区二区va在线| 91精品视频网| 国产精品三级在线观看| 亚洲地区一二三色| 激情av综合网| 91论坛在线播放| 久久综合五月天婷婷伊人| 亚洲天堂免费在线观看视频| 久久狠狠亚洲综合| 91在线观看一区二区| 日韩西西人体444www| 国产精品高潮呻吟| 裸体健美xxxx欧美裸体表演| 99国产精品久久久久久久久久久|