diff -ur nautilus.17b/doc/nautilus.1 nautilus.17b.new/doc/nautilus.1 --- nautilus.17b/doc/nautilus.1 Mon Jun 23 03:49:41 1997 +++ nautilus.17b.new/doc/nautilus.1 Tue Sep 19 13:35:02 2000 @@ -8,7 +8,7 @@ .Sh SYNOPSIS .Nm nautilus { -.Fl a | A | o +.Fl a | A | o | O } .Op Fl c Ar coder .Op Fl e Ar cipher @@ -76,6 +76,11 @@ .Nm nautilus session +.Fl O +Originate a +.Nm nautilus +session without dialing i.e. while talking on the Phone + .Fl p Ar port Serial port for direct modem connection diff -ur nautilus.17b/init.c nautilus.17b.new/init.c --- nautilus.17b/init.c Mon Sep 7 05:38:00 1998 +++ nautilus.17b.new/init.c Tue Sep 19 12:49:36 2000 @@ -42,6 +42,7 @@ {"SPEED", CONFIG_TYPE_NUMBER, ¶ms.port.speed}, {"PORT", CONFIG_TYPE_STRING, ¶ms.port.name}, {"MODEM_INIT", CONFIG_TYPE_STRING, ¶ms.modem.init}, + {"MODEM_PREFIX", CONFIG_TYPE_STRING, ¶ms.modem.prefix}, {"MODEM_RESET", CONFIG_TYPE_STRING, ¶ms.modem.reset}, {"SND_IO", CONFIG_TYPE_UINT16, ¶ms.msdos.snd_iobase}, {"SND_IRQ", CONFIG_TYPE_UINT16, ¶ms.msdos.snd_irq}, diff -ur nautilus.17b/nautilus.h nautilus.17b.new/nautilus.h --- nautilus.17b/nautilus.h Mon Jan 18 09:20:16 1999 +++ nautilus.17b.new/nautilus.h Tue Sep 19 12:50:23 2000 @@ -188,6 +188,7 @@ struct modem_t { unsigned speed; /* modem connect speed */ char init[128]; /* modem initialization string */ + char prefix[128]; /* modem dial prefix string */ char reset[128]; /* modem reset string */ } modem; struct audio_t { diff -ur nautilus.17b/ntp_modm.c nautilus.17b.new/ntp_modm.c --- nautilus.17b/ntp_modm.c Sun Aug 9 01:09:00 1998 +++ nautilus.17b.new/ntp_modm.c Tue Sep 19 13:26:01 2000 @@ -31,6 +31,9 @@ #define PAUSE(ms) usleep(ms*1000) #endif +/* external variables */ +extern struct param_t params; /* operating parameters */ + static char *default_modem_port = NULL; static unsigned int default_modem_speed = 19200; static unsigned int connect_speed = 0; @@ -140,12 +143,14 @@ * This function will behave unpredictably if the modem initialization * string modem_init, or the phone number in phone, overflow the fixed * size internal string buf. + * secfone: fixed that by just clipping strings */ static int -Connect(char *phone, char *modem_init, void (*msg_cb)(char *msg)) +Connect(char *phone, char *modem_init, char *prefix, void (*msg_cb)(char *msg)) { - char buf[256]; +#define BUFLEN 256 + char buf[BUFLEN]; WritePort("AT\r", 3); if (WaitFor("OK", 2, NULL) < 0) { @@ -157,7 +162,7 @@ PAUSE(100); /* wait 100ms */ if (strlen(modem_init) != 0) { /* config string defined? */ strcpy(buf, "AT"); - strcat(buf, modem_init); + strncat(buf, modem_init, BUFLEN-10); strcat(buf, "\r"); WritePort(buf, strlen(buf)); if (WaitFor("OK", 2, NULL) < 0) { @@ -166,8 +171,11 @@ } PAUSE(100); /* wait 100ms */ strcpy(buf, "AT"); - if (strlen(phone) != 0) { - sprintf(buf + strlen(buf), "DT%s\r", phone); + /* a phone number of more then 100 digits must be bogus - ignore */ + if (strlen(phone) != 0 && strlen(phone) < (BUFLEN-10) ) { + strcat (buf," D"); + strncat (buf,prefix,2); + sprintf(buf + strlen(buf), " %s\r", phone); } else { strcat(buf, "D\r"); } @@ -256,7 +264,11 @@ } } else { - if (Connect(address, "V1", h->msg_cb) == -1) { + if (Connect( address, + params.modem.init, + params.modem.prefix, + h->msg_cb + ) == -1) { errno = ENODEV; return -1; } diff -ur nautilus.17b/nautilus.cfg nautilus.17b.new/nautilus.cfg --- nautilus.17b/nautilus.cfg Wed Jul 19 17:55:07 2000 +++ nautilus.17b.new/nautilus.cfg Tue Sep 19 14:06:33 2000 @@ -4,6 +4,7 @@ #SPEED (numeric) - DTE baud rate #PORT (string) - port name (e.g. COM2) (default is COM1 or /dev/modem) #MODEM_INIT (string) - modem initialization string (don't include "AT") +#MODEM_PREFIX (string)- modem dial prefix. "T" for tone dial,"D" for pulse dial #MODEM_RESET (string) - modem reset string (resets modem on program exit) # #SND_IO (numeric) - i/o base address of sound card @@ -48,6 +49,7 @@ #SPEED = 38400 # specify default DTE speed ## USRobotics Sportster factory defaults minus compression/correction #MODEM_INIT = "&F1&M0&K0" +#MODEM_PREFIX ="D" #modem dial prefix. "T" for tone dial,"D" for pulse dial #MODEM_RESET = "S0=0" # turn off auto answer on exit #SND_IO = 0x220 # specify I/O Base address of sound card #SND_IRQ = 5 # specify IRQ for sound card diff -ur nautilus.17b/cli.c nautilus.17b.new/cli.c --- nautilus.17b/cli.c Tue Sep 19 14:09:22 2000 +++ nautilus.17b.new/cli.c Tue Sep 19 14:37:57 2000 @@ -131,7 +131,7 @@ /* parse arguments */ #if defined(unix) - while ((c = getopt(argc, argv, "aAhoixc:e:k:l:n:p:s:v")) != -1) + while ((c = getopt(argc, argv, "aAhoOixc:e:k:l:n:p:s:v")) != -1) #elif defined(_WIN32) while ((c = getopt(argc, argv, "aAhoixc:e:j:k:l:n:v")) != -1) #else @@ -149,6 +149,11 @@ exit(0); case 'o': params.mode = ORIGINATE; + params.orig_submode = DIAL; + break; + case 'O': + params.mode = ORIGINATE; + params.orig_submode = ATD_ONLY; break; case 'x': vsound = FALSE; @@ -243,8 +248,10 @@ usage(); } else { - fprintf(stderr, "-o option requires argument.\n\n"); - usage(); + if ( params.orig_submode == DIAL){ + fprintf(stderr, "-o option requires argument.\n\n"); + usage(); + } } } else if ((params.mode == ANSWER) || (params.mode == AUTO_ANSWER)) { diff -ur nautilus.17b/nautilus.h nautilus.17b.new/nautilus.h --- nautilus.17b/nautilus.h Tue Sep 19 14:09:22 2000 +++ nautilus.17b.new/nautilus.h Tue Sep 19 14:39:20 2000 @@ -75,6 +75,7 @@ /* Operating modes */ enum modes { ORIGINATE, ANSWER, AUTO_ANSWER }; /* ORIGINATE _must_ be first! */ enum flow { RECEIVE, TRANSMIT }; +enum o_submodes { DIAL, ATD_ONLY } ; /* Packet types */ enum pkt_type { UDATA, RDATA, FILL, XMIT, RECV, UEOT, REOT, MAX_PACKET_TYPE }; @@ -167,6 +168,7 @@ struct param_t { enum modes mode; /* startup mode */ + enum o_submodes orig_submode; /* submode for originate */ char telno[64]; /* phone # to dial */ char hostname[64]; /* hostname of remote host */ char upgrade_file[64];/* name of upgrade info file to write to */