bin_PROGRAMS=locktouch tthsum dolconf
+noinst_PROGRAMS=baseconv
libexec_PROGRAMS=speedrec
speedrec_SOURCES=speedrec.c
locktouch_SOURCES=locktouch.c
tthsum_SOURCES=tthsum.c
dolconf_SOURCES=dolconf.c
+baseconv_SOURCES=baseconv.c
BUILT_SOURCES=dolconf-assistant.gtk dolconf-wnd.gtk
AM_CPPFLAGS=-I$(top_srcdir)/include
tthsum_LDADD=$(top_srcdir)/common/libcommon.a
+baseconv_LDADD=$(top_srcdir)/common/libcommon.a
dolconf.c: dolconf-assistant.desc dolconf-wnd.desc
localedir=$(datadir)/locale
--- /dev/null
+#include <stdlib.h>
+#include <stdio.h>
+#include <string.h>
+#include <unistd.h>
+
+#include "utils.h"
+
+int main(int argc, char **argv)
+{
+ char buf[25];
+ int ret, linelen;
+ char *decbuf, *encbuf;
+ size_t data, buflen;
+ char *(*decfn)(char *, size_t *);
+ char *(*encfn)(char *, size_t);
+
+ data = 0;
+ if(!strcmp(argv[1], "4")) {
+ decfn = hexdecode;
+ } else if(!strcmp(argv[1], "5")) {
+ decfn = base32decode;
+ } else if(!strcmp(argv[1], "6")) {
+ decfn = base64decode;
+ } else if(!strcmp(argv[1], "8")) {
+ decfn = NULL;
+ } else {
+ fprintf(stderr, "unknown decoding: %s\n", argv[1]);
+ exit(1);
+ }
+ if(!strcmp(argv[2], "4")) {
+ encfn = hexencode;
+ } else if(!strcmp(argv[2], "5")) {
+ encfn = base32encode;
+ } else if(!strcmp(argv[2], "6")) {
+ encfn = base64encode;
+ } else if(!strcmp(argv[2], "8")) {
+ encfn = NULL;
+ } else {
+ fprintf(stderr, "unknown encoding: %s\n", argv[1]);
+ exit(1);
+ }
+ linelen = 0;
+ while((ret = read(0, buf + data, 24 - data)) >= 0) {
+ if(((data += ret) == 24) || (ret == 0)) {
+ if(decfn == NULL) {
+ decbuf = memcpy(smalloc(data), buf, data);
+ buflen = data;
+ } else {
+ buf[data] = 0;
+ if((decbuf = decfn(buf, &buflen)) == NULL) {
+ fprintf(stderr, "invalid input\n");
+ exit(1);
+ }
+ }
+ if(encfn == NULL) {
+ encbuf = memcpy(smalloc(buflen), decbuf, buflen);
+ fwrite(encbuf, 1, buflen, stdout);
+ } else {
+ encbuf = encfn(decbuf, buflen);
+ buflen = strlen(encbuf);
+ if(linelen + buflen > 60) {
+ fwrite(encbuf, 1, 60 - linelen, stdout);
+ fwrite("\n", 1, 1, stdout);
+ buflen -= 60 - linelen;
+ }
+ fwrite(encbuf, 1, buflen, stdout);
+ linelen += buflen;
+ }
+ fflush(stdout);
+ free(encbuf);
+ free(decbuf);
+ data = 0;
+ }
+ if(ret == 0)
+ break;
+ }
+ if(ret < 0) {
+ perror("read");
+ exit(1);
+ }
+ return(0);
+}