From 4bdfc44f4681ef322378e614a409d5acc4d6586c Mon Sep 17 00:00:00 2001 From: epochqwert Date: Sun, 22 Feb 2015 19:47:33 -0600 Subject: added a URC dumper. --- src/bin/urcdump.c | 39 +++++++++++++++++++++++++++++++++++++++ 1 file changed, 39 insertions(+) create mode 100644 src/bin/urcdump.c diff --git a/src/bin/urcdump.c b/src/bin/urcdump.c new file mode 100644 index 0000000..8d19370 --- /dev/null +++ b/src/bin/urcdump.c @@ -0,0 +1,39 @@ +#include +#include +#include + +#define BS 4096 + +int main(int argc,char *argv[]) { + int s; + struct sockaddr_in name; + char *tmp; + char chunk[BS]; + int off=0; + char buf[BS]; + int len=sizeof(struct sockaddr_in); + if(argc < 3) { + printf("usage: urcdump serv port\n"); + return -2; + } + s=socket(PF_INET,SOCK_STREAM,6); + memset(&name,0,len); + name.sin_family=AF_INET; + name.sin_addr.s_addr=inet_addr(argv[1]); + name.sin_port=htons(atoi(argv[2])); + setlinebuf(stdout); + if(connect(s,(struct sockaddr *)&name,len) == -1) return -1; + + while((len=read(s,buf,BS-1)) > 0) { + memcpy(chunk+off,buf,len); + off+=len; + if(off > 26) { + if((tmp=memchr(chunk+26,'\n',off-26))) { + tmp++; + write(1,chunk+26,tmp-chunk-26); + memmove(chunk,tmp,tmp-chunk+1); + off-=(tmp-chunk); + } + } + } +} -- cgit v1.2.3