From 7a7d9459bf612525398b5bcda5a5969838d2090b Mon Sep 17 00:00:00 2001 From: short <> Date: Mon, 1 Nov 1999 12:34:14 +0000 Subject: [PATCH] Fixes for 9110 functionality. -lefence autochecking implemented for maintainer-mode. --- configure.in | 12 +++++++----- mdsms.c | 37 ++++++++++++++++++------------------- 2 files changed, 25 insertions(+), 24 deletions(-) diff --git a/configure.in b/configure.in index 0777284..d750ae6 100644 --- a/configure.in +++ b/configure.in @@ -29,14 +29,16 @@ AC_MSG_RESULT($with_lock_directory) dnl Checks for programs. AC_PROG_CC if test "$USE_MAINTAINER_MODE" = yes;then - if test "$GCC" = yes;then - CFLAGS="-Wall -ansi -pedantic -ggdb" - LDFLAGS="$LDFLAGS -lefence" + if test "$GCC" = yes;then + CFLAGS="$CFLAGS -Wall -ansi -pedantic -ggdb" + if test x$efence != xno;then + AC_CHECK_LIB(efence, EF_Exit) fi + fi else LDFLAGS="-s" - AC_DEFINE(NDEBUG) - fi + AC_DEFINE(NDEBUG) +fi AC_PROG_CPP diff --git a/mdsms.c b/mdsms.c index 849035d..bb64c69 100644 --- a/mdsms.c +++ b/mdsms.c @@ -808,17 +808,15 @@ static const char *record; static char *catchdata; static size_t catchdatal,catchdatasiz; -static void catched(const char *end) +static void catched(const char *end,char edata) { size_t len; -const char *p1,*p2; +const char *p; if (!record) return; assert(end>=record); - p1=memchr(record,'\n',end-record); - p2=memchr(record,'\r',end-record); - if (!p1 || (p1 && p2 && p2catchdatasiz) @@ -827,7 +825,7 @@ const char *p1,*p2; memcpy(catchdata+catchdatal,record,len); catchdatal+=len; } - record=(p1?NULL:end); + record=(p?NULL:end); assert(catchdatal<=catchdatasiz); } @@ -884,21 +882,21 @@ static size_t bufl; ssize_t got; char *hit,*s; va_list ap; -char errout,extend,convcr; +char errout,extend,noconvcr,edata; long alarmtime; const char *osend; static const char emptystring[]=""; if (!term) term="\nOK\n"; - convcr=!strchr(term,'\r'); if (!strcmp(send," ")) send=NULL; /* GCC formatstring-check workaround */ if (!(osend=send)) send=""; + if ((noconvcr=(catch && *catch=='@'))) catch++; if ((errout=(*send=='!'))) send++; errout|=(maxretryn==-1); if ((extend=(*send=='~'))) send++; alarmtime=readtimen*(extend?EXT_READTIME:1); - d8("devcmd(), alarmtime=%ld, errout=%d, extend=%d, convcr=%d, osend=%p, bufl=%d, buf: %s\n", - alarmtime,errout,extend,convcr,osend,bufl,reform(buf,0)); + d8("devcmd(), alarmtime=%ld, errout=%d, extend=%d, noconvcr=%d, osend=%p, bufl=%d, buf: %s\n", + alarmtime,errout,extend,noconvcr,osend,bufl,reform(buf,0)); if (0) { err: alarm(0); @@ -946,6 +944,7 @@ err: record=NULL; wasalarm=0; alarm(alarmtime); + edata=(noconvcr?'\r':'\n'); if (!osend) { got=bufl; bufl=0; @@ -972,12 +971,12 @@ skipread: while (buf+bufl2>s && (s=memchr(s,'\0',buf+bufl2-s))) *s++=REPL_NULLCHAR; if (verbose>=3) error("\nGot chunk of data from device: %s",reform(buf+bufl,0)); - if (convcr) { + if (!noconvcr) { s=buf+bufl; while (buf+bufl2>s && (s=memchr(s,'\r',buf+bufl2-s))) *s++='\n'; } bufl=bufl2; - catched(buf+bufl); assert(!record || record==buf+bufl); + catched(buf+bufl,edata); assert(!record || record==buf+bufl); assert(bufl=catchl && (hit=strstr(buf,catch))) { + if (catch && !record && bufl>=catchl && (hit=strstr(buf,catch))) { record=hit+catchl; - catched(buf+bufl); assert(!record || record==buf+bufl); + catched(buf+bufl,edata); assert(!record || record==buf+bufl); } if ( bufl>= terml && (hit=strstr(buf,term))) { memmove(buf,hit+terml,(bufl2=(buf+bufl)-(hit+terml))); bufl=bufl2; @@ -996,7 +995,7 @@ skipread: } if (bufl=2) error(".Returning data %s for cmd %s",reform(catchdata,0),reform(send,1)); return(catchdata); } @@ -1838,11 +1837,11 @@ struct hexdata *hd; d1("Lock-device succeeded\n"); do { d1("Reading a message for us...\n"); - if (!(s=devcmd("\r","+CMT:"," "))) + if (!(s=devcmd("\r","@+CMT:"," "))) goto retryall; if (!(i=receive_headerparse(s))) error("Receive-header parsing failed on: %s",s); - if (!(s=devcmd("\r","\n"," "))) + if (!(s=devcmd("\r","@\n"," "))) goto retryall; if (i) receive_accept(s); if (!devcmd("\n",NULL," ")) /* eat last '\n' */ -- 1.8.3.1