diff --git a/main.c b/main.c index c2017bf..44b9a71 100644 --- a/main.c +++ b/main.c @@ -13,11 +13,12 @@ unsigned char sbuf[SXTETBUF]; int main(int argc, char *argv[]) { - int c, n, l; + int c, n, last; int dec, url, hlp, wrp; - char *prog = *argv; FILE *in, *out; + char *prog; + prog = *argv; dec = url = hlp = wrp = 0; while (--argc > 0 && (*++argv)[0] == '-') while ((c = *++argv[0])) @@ -42,6 +43,7 @@ main(int argc, char *argv[]) if (hlp) { fprintf(stdout, "Usage: %s -duhw infile outfile\n", prog); } else { + in = out = NULL; if (argc >= 1 && (in = fopen(*argv, "r")) == NULL) { fprintf(stderr, "%s: can't open %s\n", prog, *argv); exit(EXIT_FAILURE); @@ -51,22 +53,23 @@ main(int argc, char *argv[]) exit(EXIT_FAILURE); } if (dec) { - while ((n = getsxts((argc >= 1) ? in : stdin, sbuf))) { + while ((n = getsxts((in) ? in : stdin, sbuf))) { n = decode(sbuf, n, obuf, url); - fwrite(obuf, sizeof(*obuf), n, (argc == 2) ? out : stdout); + fwrite(obuf, sizeof(*obuf), n, (out) ? out : stdout); } + } else if (wrp) { + last = 0; + while ((n = getocts((in) ? in : stdin, obuf))) { + n = encode(obuf, n, sbuf, url); + last = printw((out) ? out : stdout, sbuf, n); + } + if (last != '\n') + fprintf((out) ? out : stdout, "\n"); } else { - while ((n = getocts((argc >= 1) ? in : stdin, obuf))) { - if (wrp) { - n = encode(obuf, n, sbuf, url); - l = printw((argc == 2) ? out : stdout, sbuf, n); - } else { - encode(obuf, n, sbuf, url); - fprintf((argc == 2) ? out : stdout, "%s", sbuf); - } + while ((n = getocts((in) ? in : stdin, obuf))) { + encode(obuf, n, sbuf, url); + fprintf((out) ? out : stdout, "%s", sbuf); } - if (wrp && l != '\n') - fprintf((argc == 2) ? out : stdout, "\n"); } if (in) fclose(in); diff --git a/output.c b/output.c index d5c1a3a..b48713e 100644 --- a/output.c +++ b/output.c @@ -8,6 +8,7 @@ printw(FILE *fp, unsigned char *s, int slen) static int col; int c; + c = '\n'; while (slen--) { fputc((c = *s++), fp); ++col;