#define MAXLEN 256
-static unsigned char decode[] = "**etianmsurwdkgohvf*l*p*bxcyzq*";
+static unsigned char decode[] = "**etianmsurwdkgohvf*l*pjbxcyzq*";
static unsigned char encode[256];
static void init(void)
die("Usage: morse <dict> <string>");
init();
load(argv[1]);
- int N = strlen(argv[2]);
+
+ char *in, mbuf[MAXLEN+1];
+ if (argv[2][0] == '.' || argv[2][0] == '-')
+ in = argv[2];
+ else
+ {
+ strencode(mbuf, argv[2], 0);
+ puts(mbuf);
+ if (strchr(mbuf, '?'))
+ die("Unable to encode");
+ in = mbuf;
+ }
+
+ int N = strlen(in);
if (N > MAXLEN)
die("Oops, too long for my memory!");
- map(argv[2], N);
+ map(in, N);
char buf[MAXLEN+1];
for (int j=1; j<=N; j++)
if (M[0][j])
- print(buf+1, buf, argv[2], 0, N, j);
+ print(buf+1, buf, in, 0, N, j);
return 0;
}