chat.c (31953) | chat.c (31962) |
---|---|
1/* 2 * Written by Toshiharu OHNO (tony-o@iij.ad.jp) 3 * 4 * Copyright (C) 1993, Internet Initiative Japan, Inc. All rights reserverd. 5 * 6 * Most of codes are derived from chat.c by Karl Fox (karl@MorningStar.Com). 7 * 8 * Chat -- a program for automatic session establishment (i.e. dial --- 4 unchanged lines hidden (view full) --- 13 * Please send all bug reports, requests for information, etc. to: 14 * 15 * Karl Fox <karl@MorningStar.Com> 16 * Morning Star Technologies, Inc. 17 * 1760 Zollinger Road 18 * Columbus, OH 43221 19 * (614)451-1883 20 * | 1/* 2 * Written by Toshiharu OHNO (tony-o@iij.ad.jp) 3 * 4 * Copyright (C) 1993, Internet Initiative Japan, Inc. All rights reserverd. 5 * 6 * Most of codes are derived from chat.c by Karl Fox (karl@MorningStar.Com). 7 * 8 * Chat -- a program for automatic session establishment (i.e. dial --- 4 unchanged lines hidden (view full) --- 13 * Please send all bug reports, requests for information, etc. to: 14 * 15 * Karl Fox <karl@MorningStar.Com> 16 * Morning Star Technologies, Inc. 17 * 1760 Zollinger Road 18 * Columbus, OH 43221 19 * (614)451-1883 20 * |
21 * $Id: chat.c,v 1.40 1997/12/18 01:10:12 brian Exp $ | 21 * $Id: chat.c,v 1.41 1997/12/23 22:38:51 brian Exp $ |
22 * 23 * TODO: 24 * o Support more UUCP compatible control sequences. 25 * o Dialing shoud not block monitor process. 26 * o Reading modem by select should be unified into main.c 27 */ 28#include <sys/param.h> 29#include <netinet/in.h> --- 151 unchanged lines hidden (view full) --- 181 case 'P': 182 strncpy(result, VarAuthKey, reslen); 183 reslen -= strlen(result); 184 result += strlen(result); 185 break; 186 case 'T': 187 if (VarAltPhone == NULL) { 188 if (VarNextPhone == NULL) { | 22 * 23 * TODO: 24 * o Support more UUCP compatible control sequences. 25 * o Dialing shoud not block monitor process. 26 * o Reading modem by select should be unified into main.c 27 */ 28#include <sys/param.h> 29#include <netinet/in.h> --- 151 unchanged lines hidden (view full) --- 181 case 'P': 182 strncpy(result, VarAuthKey, reslen); 183 reslen -= strlen(result); 184 result += strlen(result); 185 break; 186 case 'T': 187 if (VarAltPhone == NULL) { 188 if (VarNextPhone == NULL) { |
189 strncpy(VarPhoneCopy, VarPhoneList, sizeof(VarPhoneCopy) - 1); 190 VarPhoneCopy[sizeof(VarPhoneCopy) - 1] = '\0'; | 189 strncpy(VarPhoneCopy, VarPhoneList, sizeof VarPhoneCopy - 1); 190 VarPhoneCopy[sizeof VarPhoneCopy - 1] = '\0'; |
191 VarNextPhone = VarPhoneCopy; 192 } 193 VarAltPhone = strsep(&VarNextPhone, ":"); 194 } 195 phone = strsep(&VarAltPhone, "|"); 196 strncpy(result, phone, reslen); 197 reslen -= strlen(result); 198 result += strlen(result); --- 88 unchanged lines hidden (view full) --- 287 288 289#ifdef SIGALRM 290 int omask; 291 292 omask = sigblock(sigmask(SIGALRM)); 293#endif 294 clear_log(); | 191 VarNextPhone = VarPhoneCopy; 192 } 193 VarAltPhone = strsep(&VarNextPhone, ":"); 194 } 195 phone = strsep(&VarAltPhone, "|"); 196 strncpy(result, phone, reslen); 197 reslen -= strlen(result); 198 result += strlen(result); --- 88 unchanged lines hidden (view full) --- 287 288 289#ifdef SIGALRM 290 int omask; 291 292 omask = sigblock(sigmask(SIGALRM)); 293#endif 294 clear_log(); |
295 ExpandString(estr, buff, sizeof(buff), 0); | 295 ExpandString(estr, buff, sizeof buff, 0); |
296 LogPrintf(LogCHAT, "Wait for (%d): %s --> %s\n", TimeoutSec, estr, buff); 297 str = buff; 298 inp = inbuff; 299 300 if (strlen(str) >= IBSIZE) { 301 str[IBSIZE - 1] = 0; 302 LogPrintf(LogCHAT, "Truncating String to %d character: %s\n", IBSIZE, str); 303 } --- 180 unchanged lines hidden (view full) --- 484SendString(const char *str) 485{ 486 char *cp; 487 int on; 488 char buff[LINE_LEN]; 489 490 if (abort_next) { 491 abort_next = 0; | 296 LogPrintf(LogCHAT, "Wait for (%d): %s --> %s\n", TimeoutSec, estr, buff); 297 str = buff; 298 inp = inbuff; 299 300 if (strlen(str) >= IBSIZE) { 301 str[IBSIZE - 1] = 0; 302 LogPrintf(LogCHAT, "Truncating String to %d character: %s\n", IBSIZE, str); 303 } --- 180 unchanged lines hidden (view full) --- 484SendString(const char *str) 485{ 486 char *cp; 487 int on; 488 char buff[LINE_LEN]; 489 490 if (abort_next) { 491 abort_next = 0; |
492 ExpandString(str, buff, sizeof(buff), 0); | 492 ExpandString(str, buff, sizeof buff, 0); |
493 AbortStrings[numaborts++] = strdup(buff); 494 } else if (timeout_next) { 495 timeout_next = 0; 496 TimeoutSec = atoi(str); 497 if (TimeoutSec <= 0) 498 TimeoutSec = 30; 499 } else { 500 if (*str == '!') { | 493 AbortStrings[numaborts++] = strdup(buff); 494 } else if (timeout_next) { 495 timeout_next = 0; 496 TimeoutSec = atoi(str); 497 if (TimeoutSec <= 0) 498 TimeoutSec = 30; 499 } else { 500 if (*str == '!') { |
501 ExpandString(str + 1, buff + 2, sizeof(buff) - 2, 0); | 501 ExpandString(str + 1, buff + 2, sizeof buff - 2, 0); |
502 ExecStr(buff + 2, buff + 2); 503 } else { | 502 ExecStr(buff + 2, buff + 2); 503 } else { |
504 ExpandString(str, buff + 2, sizeof(buff) - 2, 1); | 504 ExpandString(str, buff + 2, sizeof buff - 2, 1); |
505 } 506 if (strstr(str, "\\P")) /* Do not log the password itself. */ 507 LogPrintf(LogCHAT, "sending: %s\n", str); 508 else 509 LogPrintf(LogCHAT, "sending: %s\n", buff + 2); 510 cp = buff; 511 if (DEV_IS_SYNC) 512 memcpy(buff, "\377\003", 2); /* Prepend HDLC header */ --- 97 unchanged lines hidden (view full) --- 610 611 timeout_next = abort_next = 0; 612 for (n = 0; AbortStrings[n]; n++) { 613 free(AbortStrings[n]); 614 AbortStrings[n] = NULL; 615 } 616 numaborts = 0; 617 | 505 } 506 if (strstr(str, "\\P")) /* Do not log the password itself. */ 507 LogPrintf(LogCHAT, "sending: %s\n", str); 508 else 509 LogPrintf(LogCHAT, "sending: %s\n", buff + 2); 510 cp = buff; 511 if (DEV_IS_SYNC) 512 memcpy(buff, "\377\003", 2); /* Prepend HDLC header */ --- 97 unchanged lines hidden (view full) --- 610 611 timeout_next = abort_next = 0; 612 for (n = 0; AbortStrings[n]; n++) { 613 free(AbortStrings[n]); 614 AbortStrings[n] = NULL; 615 } 616 numaborts = 0; 617 |
618 memset(vector, '\0', sizeof(vector)); | 618 memset(vector, '\0', sizeof vector); |
619 argc = MakeArgs(script, vector, VECSIZE(vector)); 620 argv = vector; 621 TimeoutSec = 30; 622 while (*argv) { 623 if (strcmp(*argv, "P_ZERO") == 0 || 624 strcmp(*argv, "P_ODD") == 0 || strcmp(*argv, "P_EVEN") == 0) { 625 ChangeParity(*argv++); 626 continue; --- 16 unchanged lines hidden --- | 619 argc = MakeArgs(script, vector, VECSIZE(vector)); 620 argv = vector; 621 TimeoutSec = 30; 622 while (*argv) { 623 if (strcmp(*argv, "P_ZERO") == 0 || 624 strcmp(*argv, "P_ODD") == 0 || strcmp(*argv, "P_EVEN") == 0) { 625 ChangeParity(*argv++); 626 continue; --- 16 unchanged lines hidden --- |