summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorStuart Henderson <sthen@cvs.openbsd.org>2016-01-19 23:21:27 +0000
committerStuart Henderson <sthen@cvs.openbsd.org>2016-01-19 23:21:27 +0000
commit9fadaa0cb690dd672a6da2aff8e3252c11609ce2 (patch)
treeafd7b54ae4d1c1d943b8230e9f8cb9ddf95ffae1
parent82901f04bb589ac671f7055dd0f1452173268b35 (diff)
Teach morse(6) the <AC> prosign as '@', as added on May 24, 2004 (the
160th anniversary of the first public Morse telegraph transmission). Support decoding (only; not encoding) of other prosigns, including <SK> as we were previously using for '@'. From pjanzen.
-rw-r--r--games/morse/morse.65
-rw-r--r--games/morse/morse.c37
2 files changed, 35 insertions, 7 deletions
diff --git a/games/morse/morse.6 b/games/morse/morse.6
index 63cd4a9f3ce..0a6f42c42b3 100644
--- a/games/morse/morse.6
+++ b/games/morse/morse.6
@@ -1,4 +1,4 @@
-.\" $OpenBSD: morse.6,v 1.2 2016/01/18 11:24:44 sthen Exp $
+.\" $OpenBSD: morse.6,v 1.3 2016/01/19 23:21:26 sthen Exp $
.\"
.\" Copyright (c) 1988, 1991, 1993
.\" The Regents of the University of California. All rights reserved.
@@ -29,7 +29,7 @@
.\"
.\" @(#)bcd.6 8.1 (Berkeley) 5/31/93
.\"
-.Dd $Mdocdate: January 18 2016 $
+.Dd $Mdocdate: January 19 2016 $
.Dt MORSE 6
.Os
.Sh NAME
@@ -58,6 +58,7 @@ back into text.
A lowercase
.Sq x
is printed for undecipherable input; otherwise, text is returned uppercase.
+Many procedural signs can be decoded (though not encoded).
If the morse to be translated is given on the command line, it should be
preceded by
.Sq --
diff --git a/games/morse/morse.c b/games/morse/morse.c
index be4d06d6646..ae246ad67e0 100644
--- a/games/morse/morse.c
+++ b/games/morse/morse.c
@@ -1,4 +1,4 @@
-/* $OpenBSD: morse.c,v 1.20 2016/01/18 11:27:19 sthen Exp $ */
+/* $OpenBSD: morse.c,v 1.21 2016/01/19 23:21:26 sthen Exp $ */
/*
* Copyright (c) 1988, 1993
@@ -82,6 +82,7 @@ struct punc {
char c;
char *morse;
} other[] = {
+ { 'e', "..-.." }, /* accented e - only decodes */
{ ',', "--..--" },
{ '.', ".-.-.-" },
{ '?', "..--.." },
@@ -89,17 +90,34 @@ struct punc {
{ '-', "-....-" },
{ ':', "---..." },
{ ';', "-.-.-." },
- { '(', "-.--." },
+ { '(', "-.--." }, /* KN */
{ ')', "-.--.-" },
{ '"', ".-..-." },
{ '`', ".-..-." },
{ '\'', ".----." },
- { '+', ".-.-." }, /* AR */
- { '=', "-...-" }, /* BT */
- { '@', "...-.-" }, /* SK */
+ { '+', ".-.-." }, /* AR \n\n\n */
+ { '=', "-...-" }, /* BT \n\n */
+ { '@', ".--.-." },
+ { '\n', ".-.-" }, /* AA (will only decode) */
{ '\0', NULL }
};
+struct prosign {
+ char *c;
+ char *morse;
+} ps[] = {
+ { "<AS>", ".-..." }, /* wait */
+ { "<CL>", "-.-..-.." },
+ { "<CT>", "-.-.-" }, /* start */
+ { "<EE5>", "......" }, /* error */
+ { "<EE5>", "......." },
+ { "<EE5>", "........" },
+ { "<SK>", "...-.-" },
+ { "<SN>", "...-." }, /* understood */
+ { "<SOS>", "...---..." },
+ { NULL, NULL }
+};
+
void morse(int);
void decode(char *);
void show(char *);
@@ -233,6 +251,15 @@ decode(char *s)
}
i++;
}
+ i = 0;
+ while (ps[i].c) {
+ /* put whitespace around prosigns */
+ if (strcmp(ps[i].morse, s) == 0) {
+ printf(" %s ", ps[i].c);
+ return;
+ }
+ i++;
+ }
putchar('x'); /* line noise */
}