Add some comments, optimise out a few strlen()s and

remove a few extraneous assignments.
This commit is contained in:
Brian Somers 1999-05-27 09:50:10 +00:00
parent d0b3b745ba
commit 4d9c2bb9ae

View File

@ -23,7 +23,7 @@
* OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
* SUCH DAMAGE. * SUCH DAMAGE.
* *
* $Id: chat.c,v 1.54 1999/02/12 00:52:29 brian Exp $ * $Id: chat.c,v 1.55 1999/05/08 11:06:18 brian Exp $
*/ */
#include <sys/param.h> #include <sys/param.h>
@ -213,6 +213,10 @@ chat_UpdateSet(struct descriptor *d, fd_set *r, fd_set *w, fd_set *e, int *n)
/* We leave room for a potential HDLC header in the target string */ /* We leave room for a potential HDLC header in the target string */
ExpandString(c, c->argptr, c->exp + 2, sizeof c->exp - 2, needcr); ExpandString(c, c->argptr, c->exp + 2, sizeof c->exp - 2, needcr);
/*
* Now read our string. If it's not a special string, we unset
* ``special'' to break out of the loop.
*/
if (gotabort) { if (gotabort) {
if (c->abort.num < MAXABORTS) { if (c->abort.num < MAXABORTS) {
int len, i; int len, i;
@ -490,6 +494,10 @@ chat_Write(struct descriptor *d, struct bundle *bundle, const fd_set *fdset)
} }
if (physical_IsSync(c->physical)) { if (physical_IsSync(c->physical)) {
/*
* XXX: Fix me
* This data should be stuffed down through the link layers
*/
/* There's always room for the HDLC header */ /* There's always room for the HDLC header */
c->argptr -= 2; c->argptr -= 2;
c->arglen += 2; c->arglen += 2;
@ -579,29 +587,25 @@ chat_Destroy(struct chat *c)
* \U Auth User * \U Auth User
*/ */
static char * static char *
ExpandString(struct chat *c, const char *str, char *result, int reslen, ExpandString(struct chat *c, const char *str, char *result, int reslen, int cr)
int sendmode)
{ {
int addcr = 0; int len;
result[--reslen] = '\0'; result[--reslen] = '\0';
if (sendmode)
addcr = 1;
while (*str && reslen > 0) { while (*str && reslen > 0) {
switch (*str) { switch (*str) {
case '\\': case '\\':
str++; str++;
switch (*str) { switch (*str) {
case 'c': case 'c':
if (sendmode) cr = 0;
addcr = 0;
break; break;
case 'd': /* Delay 2 seconds */ case 'd': /* Delay 2 seconds */
chat_Pause(c, 2 * SECTICKS); chat_Pause(c, 2 * SECTICKS);
break; break;
case 'p': case 'p':
chat_Pause(c, SECTICKS / 4); chat_Pause(c, SECTICKS / 4);
break; /* Pause 0.25 sec */ break; /* Delay 0.25 seconds */
case 'n': case 'n':
*result++ = '\n'; *result++ = '\n';
reslen--; reslen--;
@ -620,20 +624,23 @@ ExpandString(struct chat *c, const char *str, char *result, int reslen,
break; break;
case 'P': case 'P':
strncpy(result, c->physical->dl->bundle->cfg.auth.key, reslen); strncpy(result, c->physical->dl->bundle->cfg.auth.key, reslen);
reslen -= strlen(result); len = strlen(result);
result += strlen(result); reslen -= len;
result += len;
break; break;
case 'T': case 'T':
if (c->phone) { if (c->phone) {
strncpy(result, c->phone, reslen); strncpy(result, c->phone, reslen);
reslen -= strlen(result); len = strlen(result);
result += strlen(result); reslen -= len;
result += len;
} }
break; break;
case 'U': case 'U':
strncpy(result, c->physical->dl->bundle->cfg.auth.name, reslen); strncpy(result, c->physical->dl->bundle->cfg.auth.name, reslen);
reslen -= strlen(result); len = strlen(result);
result += strlen(result); reslen -= len;
result += len;
break; break;
default: default:
reslen--; reslen--;
@ -657,7 +664,7 @@ ExpandString(struct chat *c, const char *str, char *result, int reslen,
} }
} }
if (--reslen > 0) { if (--reslen > 0) {
if (addcr) if (cr)
*result++ = '\r'; *result++ = '\r';
} }
if (--reslen > 0) if (--reslen > 0)