add linewrap option when encoding (76 columns)
This commit is contained in:
parent
6c7d699f1a
commit
0dba01d98e
4 changed files with 46 additions and 6 deletions
3
Makefile
3
Makefile
|
@ -1,11 +1,12 @@
|
||||||
CFLAGS = -g -Wall -Wextra -Werror
|
CFLAGS = -g -Wall -Wextra -Werror
|
||||||
|
|
||||||
objects = main.o input.o encode.o
|
objects = main.o input.o output.o encode.o
|
||||||
|
|
||||||
b64 : $(objects)
|
b64 : $(objects)
|
||||||
cc -o b64 $(objects)
|
cc -o b64 $(objects)
|
||||||
|
|
||||||
main.o input.o : input.h
|
main.o input.o : input.h
|
||||||
|
main.o output.o : output.h
|
||||||
main.o encode.o : encode.h
|
main.o encode.o : encode.h
|
||||||
|
|
||||||
.PHONY : clean
|
.PHONY : clean
|
||||||
|
|
21
main.c
21
main.c
|
@ -1,6 +1,7 @@
|
||||||
#include <stdio.h>
|
#include <stdio.h>
|
||||||
#include <stdlib.h>
|
#include <stdlib.h>
|
||||||
#include "input.h"
|
#include "input.h"
|
||||||
|
#include "output.h"
|
||||||
#include "encode.h"
|
#include "encode.h"
|
||||||
|
|
||||||
#define OBUFSIZE 4
|
#define OBUFSIZE 4
|
||||||
|
@ -12,11 +13,12 @@ unsigned char sbuf[SBUFSIZE];
|
||||||
int
|
int
|
||||||
main(int argc, char *argv[])
|
main(int argc, char *argv[])
|
||||||
{
|
{
|
||||||
int c, n, dec, url, hlp;
|
int c, n, l;
|
||||||
|
int dec, url, hlp, wrp;
|
||||||
char *prog = *argv;
|
char *prog = *argv;
|
||||||
FILE *in, *out;
|
FILE *in, *out;
|
||||||
|
|
||||||
dec = url = hlp = 0;
|
dec = url = hlp = wrp = 0;
|
||||||
while (--argc > 0 && (*++argv)[0] == '-')
|
while (--argc > 0 && (*++argv)[0] == '-')
|
||||||
while ((c = *++argv[0]))
|
while ((c = *++argv[0]))
|
||||||
switch (c) {
|
switch (c) {
|
||||||
|
@ -29,6 +31,9 @@ main(int argc, char *argv[])
|
||||||
case 'h':
|
case 'h':
|
||||||
hlp = 1;
|
hlp = 1;
|
||||||
break;
|
break;
|
||||||
|
case 'w':
|
||||||
|
wrp = 1;
|
||||||
|
break;
|
||||||
default:
|
default:
|
||||||
fprintf(stderr, "%s: illegal option %c\n", prog, c);
|
fprintf(stderr, "%s: illegal option %c\n", prog, c);
|
||||||
exit(EXIT_FAILURE);
|
exit(EXIT_FAILURE);
|
||||||
|
@ -52,10 +57,16 @@ main(int argc, char *argv[])
|
||||||
}
|
}
|
||||||
} else {
|
} else {
|
||||||
while ((n = getocts((argc >= 1) ? in : stdin, obuf, OBUFSIZE))) {
|
while ((n = getocts((argc >= 1) ? in : stdin, obuf, OBUFSIZE))) {
|
||||||
encode(obuf, n, sbuf, url);
|
if (wrp) {
|
||||||
fprintf((argc == 2) ? out : stdout, "%s", sbuf);
|
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);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
fprintf((argc == 2) ? out : stdout, "\n");
|
if (!wrp || l != '\n')
|
||||||
|
fprintf((argc == 2) ? out : stdout, "\n");
|
||||||
}
|
}
|
||||||
if (in)
|
if (in)
|
||||||
fclose(in);
|
fclose(in);
|
||||||
|
|
19
output.c
Normal file
19
output.c
Normal file
|
@ -0,0 +1,19 @@
|
||||||
|
#include "output.h"
|
||||||
|
|
||||||
|
#define WRAPCOL 76
|
||||||
|
|
||||||
|
char
|
||||||
|
printw(FILE *fp, unsigned char *s, int slen)
|
||||||
|
{
|
||||||
|
static int col;
|
||||||
|
int c;
|
||||||
|
|
||||||
|
while (slen--) {
|
||||||
|
fputc((c = *s++), fp);
|
||||||
|
++col;
|
||||||
|
if (!(col %= WRAPCOL))
|
||||||
|
fputc((c = '\n'), fp);
|
||||||
|
}
|
||||||
|
|
||||||
|
return c;
|
||||||
|
}
|
9
output.h
Normal file
9
output.h
Normal file
|
@ -0,0 +1,9 @@
|
||||||
|
#ifndef HEADER_OUTPUT
|
||||||
|
#define HEADER_OUTPUT
|
||||||
|
|
||||||
|
#include <stdio.h>
|
||||||
|
|
||||||
|
char
|
||||||
|
printw(FILE *fp, unsigned char *s, int slen);
|
||||||
|
|
||||||
|
#endif
|
Loading…
Add table
Add a link
Reference in a new issue