X-Git-Url: https://code.citadel.org/?p=citadel.git;a=blobdiff_plain;f=citadel%2Futils%2Fsendcommand.c;h=001a4b1dcdbe24334d0a3b98e764f0fd34c08cfd;hp=ba28d142da6f076d9fab349fb9041ce7beb2354e;hb=3cfffe2479a77433a5e0801d24b902b33b0078f3;hpb=5102c3e866da57a0e72b8d144dc55e2819e53810 diff --git a/citadel/utils/sendcommand.c b/citadel/utils/sendcommand.c index ba28d142d..001a4b1dc 100644 --- a/citadel/utils/sendcommand.c +++ b/citadel/utils/sendcommand.c @@ -30,10 +30,8 @@ #include "include/citadel_dirs.h" #include - int serv_sock = (-1); - int uds_connectsock(char *sockpath) { int s; @@ -94,7 +92,6 @@ void serv_write(char *buf, int nbytes) } - /* * input string from socket - implemented in terms of serv_read() */ @@ -134,8 +131,6 @@ void serv_puts(char *buf) } - - /* * Main loop. Do things and have fun. */ @@ -183,7 +178,6 @@ int main(int argc, char **argv) alarm(watchdog); serv_sock = uds_connectsock(file_citadel_admin_socket); - serv_gets(buf); fprintf(stderr, "%s\n", buf); @@ -203,83 +197,19 @@ int main(int argc, char **argv) xfermode = buf[0]; if ((xfermode == '4') || (xfermode == '8')) { /* send text */ - IOBuffer IOB; - FDIOBuffer FDIO; - const char *ErrStr; - - memset(&IOB, 0, sizeof(0)); - IOB.Buf = NewStrBufPlain(NULL, SIZ); - IOB.fd = serv_sock; - FDIOBufferInit(&FDIO, &IOB, fileno(stdin), -1); - - while (FileSendChunked(&FDIO, &ErrStr) >= 0) - alarm(watchdog); /* reset the watchdog timer */ - if (ErrStr != NULL) - fprintf(stderr, "Error while piping stuff: %s\n", ErrStr); - FDIOBufferDelete(&FDIO); - FreeStrBuf(&IOB.Buf); + while (fgets(buf, sizeof buf, stdin) > 0) { + if (buf[strlen(buf)-1] == '\n') { + buf[strlen(buf)-1] = 0; + } + serv_puts(buf); + } serv_puts("000"); } if ((xfermode == '1') || (xfermode == '8')) { /* receive text */ - IOBuffer IOB; - StrBuf *Line, *OutBuf; - int Finished = 0; - - memset(&IOB, 0, sizeof(IOB)); - IOB.Buf = NewStrBufPlain(NULL, SIZ); - IOB.fd = serv_sock; - Line = NewStrBufPlain(NULL, SIZ); - OutBuf = NewStrBufPlain(NULL, SIZ * 10); - - while (!Finished && (StrBuf_read_one_chunk_callback (serv_sock, 0, &IOB) >= 0)) - { - eReadState State; - - State = eReadSuccess; - while (!Finished && (State == eReadSuccess)) - { - if (IOBufferStrLength(&IOB) == 0) - { - State = eMustReadMore; - break; - } - State = StrBufChunkSipLine(Line, &IOB); - switch (State) - { - case eReadSuccess: - if (!strcmp(ChrPtr(Line), "000")) - { - Finished = 1; - break; - } - StrBufAppendBuf(OutBuf, Line, 0); - StrBufAppendBufPlain(OutBuf, HKEY("\n"), 0); - alarm(watchdog); /* reset the watchdog timer */ - break; - case eBufferNotEmpty: - break; - case eMustReadMore: - continue; - case eReadFail: - fprintf(stderr, "WTF? Exit!\n"); - exit(-1); - break; - } - if (StrLength(OutBuf) > 5*SIZ) - { - fwrite(ChrPtr(OutBuf), 1, StrLength(OutBuf), stdout); - FlushStrBuf(OutBuf); - } - } - } - if (StrLength(OutBuf) > 0) - { - fwrite(ChrPtr(OutBuf), 1, StrLength(OutBuf), stdout); + while(serv_gets(buf), strcmp(buf, "000")) { + printf("%s\n", buf); } - FreeStrBuf(&Line); - FreeStrBuf(&OutBuf); - FreeStrBuf(&IOB.Buf); } if (xfermode == '6') { /* receive binary */