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 <stdio.h>
#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
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'},
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)
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:"<stdin>"));
- }
- if (fin!=stdin) {
- chkfclose(fin,finame);
- free(finame);
+ if (finame) {
+ chkfclose(fin,finame);
+ free(finame);
+ }
}
for (i=0;i<NELEM(numarg);i++) {