diff --git a/aprs485.c b/aprs485.c index e385e3a..3e711a9 100644 --- a/aprs485.c +++ b/aprs485.c @@ -9,8 +9,6 @@ typedef struct { /* log entry */ tmv_t tim; char buf[256-8]; } sle_t; -void slog(char *fmt, ...); -void slog_dump(); typedef struct { tmv_t tim; /* pwr on time */ @@ -49,50 +47,6 @@ static int tm2yymmdd(struct tm *tm) return (tm->tm_year%100)*10000+(tm->tm_mon+1)*100+tm->tm_mday; } -void slog(char *fmt, ...) -{ - sle_t *se; - int *a, i; - - se = &gl.sles[gl.nsle++]; - if (gl.nsle >= NEL(gl.sles)) return; - gettimeofday(&se->tim,0); - a = (int *)&fmt; a++; - i = snprintf(se->buf,NEL(se->buf)-1,fmt,a[0],a[1],a[2],a[3],a[4],a[5]); - se->buf[i] = 0; -} - -void slog_dump() -{ - sle_t *se; - int ymd, lf, fd, k; - char *p, buf[BUFSIZ], lfn[BUFSIZ]; - struct tm tm; - - fd = lf = -1; - for (se = gl.sles, k = MIN(NEL(gl.sles),gl.nsle); --k >= 0; se++) { - p = buf; - localtime_r(&se->tim.tv_sec,&tm); - ymd = tm2yymmdd(&tm); - p += sprintf(p,"%06d",ymd); - p += sprintf(p," %02d:%02d:%02d.%03lu",tm.tm_hour,tm.tm_min,tm.tm_sec,se->tim.tv_usec/1000); - p += sprintf(p," %.*s",NEL(se->buf),se->buf); - if (p[-1] != '\n' && p[-1] != '\r') *p++ = '\n'; - if (gl.ldir) { - if (fd < 0 || lf != ymd) { - if (fd >= 0) close(fd); - lf = ymd; - sprintf(lfn,"%s/%06d.log",gl.ldir,lf); - fd = open(lfn,O_WRONLY|O_CREAT|O_APPEND,0644); - } - if (fd >= 0) write(fd,buf,p-buf); - } - if (gl.dbug) *p++ = '\r', write(1,buf,p-buf); - } - if (fd >= 0) close(fd); - gl.nsle = 0; -} - /* * tab management */ @@ -139,7 +93,7 @@ int tab_man(soa_t *sa, u08_t *pkb, int pks) break; } if (n < 0) t = 0; - else slog("T __ add [%d]",t-gl.tabs); + else printf("T __ add [%d]\n",t-gl.tabs); } pkb[0] = t ? ACK : NAK; pkb[1] = t ? (t-gl.tabs) : NEL(gl.tabs); @@ -150,7 +104,7 @@ int tab_man(soa_t *sa, u08_t *pkb, int pks) if (t == gl.tsnd) gl.tsnd = 0; t->pwr = 0; pkb[0] = ACK; - slog("T __ del [%d]",t-gl.tabs); + printf("T __ del [%d]\n",t-gl.tabs); } else pkb[0] = NAK; return 2; @@ -170,7 +124,7 @@ void snd2tabs(int sd, tab_t *ts, u08_t *pkb, int pks) k = sendto(sd,pkb,pks,0,&t->adr.sa,sizeof(t->adr.sa)); if (k != pks) { t->pwr = 0; - slog("T __ drop [%d] %s",t-gl.tabs,k<0?strerror(errno):""); + printf("T __ drop [%d] %s\n",t-gl.tabs,k<0?strerror(errno):""); } } } @@ -197,14 +151,14 @@ void usr_in(fd) char buf[32]; if ((k = read(fd,buf,sizeof(buf))) != 1) { - slog("E __ term read()=%d %s",k,k<0?strerror(errno):""); + printf("E __ term read()=%d %s\n",k,k<0?strerror(errno):""); gl.exit = 1; return; } switch (buf[0]) { - default: slog("D __ hit to exit"); break; + default: printf("D __ hit to exit\n"); break; case ESC: gl.exit = 1; break; - case 'D': gl.lprd ^= 1; slog("D __ log partial read %d now",gl.lprd); break; + case 'D': gl.lprd ^= 1; printf("D __ log partial read %d now\n",gl.lprd); break; } } @@ -217,16 +171,16 @@ void bus_in(int bd) char hb[128]; if ((k = NEL(gl.brcv) - gl.nrcv) <= 0) { - slog("E __ bus buffer overrun drop %d bytes",gl.nrcv); + printf("E __ bus buffer overrun drop %d bytes\n",gl.nrcv); gl.nrcv = 0; /* drop everything */ k = NEL(gl.brcv); } if ((k = read(bd,&gl.brcv[gl.nrcv],k)) <= 0) { - slog("E __ bus read()=%d %s",k,k<0?strerror(errno):"disconnect!"); + printf("E __ bus read()=%d %s\n",k,k<0?strerror(errno):"disconnect!"); gl.exit = 1; return; } - if (gl.lprd) slog("r %2d %s",k,hex(&gl.brcv[gl.nrcv],k,hb,sizeof(hb))); + if (gl.lprd) printf("r %2d %s\n",k,hex(&gl.brcv[gl.nrcv],k,hb,sizeof(hb))); gl.nrcv += k; } @@ -237,9 +191,9 @@ void bus_out(int sd, int bd) char hb[UDPSIZ*2+4]; if ((t = gl.tsnd) == 0) return; - slog("S %2d %s",t->pks,hex(t->pkb,t->pks,hb,sizeof(hb))); + printf("S %2d %s\n", t->pks, hex(t->pkb, t->pks, hb, sizeof(hb))); if ((k = write(bd,t->pkb,t->pks)) != t->pks) { - slog("E __ bus write(%d)=%d %s",t->pks,k,k<0?strerror(errno):""); + printf("E __ bus write(%d)=%d %s",t->pks,k,k<0?strerror(errno):""); if (k < 0) gl.exit = 1; } else snd2tabs(sd,t,t->pkb,t->pks); @@ -315,7 +269,7 @@ void srv_client(int sd, soa_t *fa, int na, char **av) else { sendto(sd,EOT_STR,2,0,&t->adr.sa,sizeof(t->adr.sa)); t->pwr = 0; - slog("T __ kill [%d]",t-gl.tabs); + printf("T __ kill [%d]\n",t-gl.tabs); a += sprintf(a,"done"); } } @@ -347,7 +301,7 @@ void soc_in(int sd) pks = recvfrom(sd,pkb,sizeof(pkb)-4,0,&fa.sa,&len); if (pks <= 0) { if (++gl.esin >= 3) gl.exit = 1; - slog("E __ socket read()=%d %s",pks,pks<0?strerror(errno):""); + printf("E __ socket read()=%d %s\n",pks,pks<0?strerror(errno):""); return; } gl.esin = 0; @@ -388,11 +342,11 @@ void soc_out(int sd) if ((n = gl.nrcv) > 2) { for (i = 0; i < n; i += k) { k = a5end(gl.brcv+i,n-i); - slog("R %2d %s",k,hex(gl.brcv+i,k,hb,sizeof(hb))); + printf("R %2d %s\n", k, hex(gl.brcv+i, k, hb, sizeof(hb))); snd2tabs(sd,0,gl.brcv+i,k); } } - else slog("E %2d %s noise?",n,hex(gl.brcv,n,hb,sizeof(hb))); + else printf("E %2d %s noise?\n",n,hex(gl.brcv,n,hb,sizeof(hb))); gl.nrcv = 0; } @@ -414,14 +368,13 @@ int bridge(int bd, int sd) FD_SET(sd,&pfds); md = MAX(bd,sd) + 1; ct = lt = -1; - slog("B __ %s bus:%s",version+5,gl.bus); + printf("B __ %s bus:%s\n", version+5, gl.bus); while (!gl.exit) { gettimeofday(&tc,0); if ((ct = (tc.tv_sec%(60*60))/MTICK) != lt) { /* mark tick */ - if (lt >= 0) slog("M __ %s bus:%s",version+5,gl.bus); + if (lt >= 0) printf("M __ %s bus:%s\n", version+5, gl.bus); lt = ct; } - slog_dump(); tv.tv_sec = tv.tv_usec = 0; if (gl.nrcv <= 0 && gl.tsnd == 0) { tv.tv_sec = ((tc.tv_sec/MTICK)+1)*MTICK; @@ -432,7 +385,7 @@ int bridge(int bd, int sd) rfds = pfds; if ((n = select(md,&rfds,0,0,&tv)) < 0) { if (++gl.esel >= 3) gl.exit = 1; - slog("E __ select() %s",strerror(errno)); + printf("E __ select() %s\n",strerror(errno)); continue; } gl.esel = 0; @@ -447,8 +400,7 @@ int bridge(int bd, int sd) } } snd2tabs(sd,0,(u08_t *)EOT_STR,2); - slog("X __ %s bus:%s",version+5,gl.bus); - slog_dump(); + printf("X __ %s bus:%s\n",version+5,gl.bus); return 0; }