X-Git-Url: https://git.jankratochvil.net/?p=mdsms.git;a=blobdiff_plain;f=mdsms.c;h=879424992ac2f897c0c43535df6928801666883a;hp=68917a50ba728488ccb21827e6a9d03e1b70ca2b;hb=024c037ad5868decb5d300355ccd6220848ee220;hpb=3b73c0669dc0a5f327e8bf10971f898f1bca0f9f diff --git a/mdsms.c b/mdsms.c index 68917a5..8794249 100644 --- a/mdsms.c +++ b/mdsms.c @@ -3,25 +3,6 @@ static char rcsid[] ATTR_UNUSED = "$Id$"; #endif -/* - * $Log$ - * Revision 1.5 1999/07/19 10:02:51 short - * Removed '\xXY' chars for compatibility with Digital UNIX vendor "cc". - * - * Revision 1.4 1999/07/14 01:01:11 short - * Termios made compatible with Digital UNIX 4.0, cfset[io]speed() missing. - * - * Revision 1.3 1999/06/03 11:46:41 short - * Logging (--log) implemented. - * - * Revision 1.2 1999/06/03 10:38:52 short - * Implemented remaining communication timeouts and maximum retry count. - * - * Revision 1.1.1.1 1999/05/26 13:06:26 short - * First alpha release. - * - */ - #include "setup.h" #include @@ -48,14 +29,6 @@ static char rcsid[] ATTR_UNUSED = "$Id$"; #include "getopt.h" #endif -#if 0 -char *strdup(const char *s); -int kill(pid_t pid,int sig); -int snprintf(char *str,size_t n,const char *format,...); -int vsnprintf(char *str,size_t n,const char *format,va_list ap); -void usleep(unsigned long usec); -#endif - #define NELEM(x) (sizeof((x))/sizeof(*(x))) #ifndef DEBUG @@ -242,7 +215,7 @@ Usage: " PACKAGE " [-c|--config ] [-d|--device ]\n\ static const struct option longopts[]={ {"config" ,1,0,'c'}, {"device" ,1,0,'d'}, -{"log" ,1,0,'l'}, +{"log" ,1,0,'L'}, {"lockfile",1,0,'l'}, {"smsc" ,1,0,'s'}, {"maxretry",1,0,'m'}, @@ -718,18 +691,19 @@ static char *pdudata; static inline unsigned char charconv(char c,size_t offs) { - if ((c>='A' && c<='Z') || (c>='a' && c<='z') || (c>='0' && c<='9')) return(c); switch (c) { case '@': return(0); case '$': return(2); - case '"': return(96); - case ' ': - return(c); case 0: assert(0); + default: + return(c&0x7F); } +#if 0 + if ((c>='A' && c<='Z') || (c>='a' && c<='z') || (c>='0' && c<='9')) return(c); error("Can't convert character '%c' (0x%02X) at offs %d (0-based), substituted '?'", c,(unsigned char)c,offs); return('?'); +#endif } static inline void genpdu(void) @@ -830,19 +804,28 @@ char *buf=malloc(l+50); finame=body; body=NULL; } - else fin=stdin; + else { + finame=NULL; + fin=stdin; + } if (!body) { readbody=0; - if (verbose>=1) - error("\nPlease enter the SMS text body, end with EOF (ctrl-D):"); + if (!finame) { + if (verbose>=1) + error("\nPlease enter the SMS text body, end with EOF (ctrl-D):"); + } + else { + if (!(fin=fopen(finame,"rt"))) + error("!Can't open data file \"%s\" for r/o: %m",finame); + } chk(body=malloc(BODYLOAD)); bodylen=fread(body,1,BODYLOAD,fin); if (bodylen==-1) error("!Error reading stream \"%s\": %m",(finame?finame:"")); - } - if (fin!=stdin) { - chkfclose(fin,finame); - free(finame); + if (finame) { + chkfclose(fin,finame); + free(finame); + } } for (i=0;i