diff simtool/pbupd_imm.c @ 17:b8d27c72747a

GSM7 encoding function factored out of pb-update-imm
author Mychaela Falconia <falcon@freecalypso.org>
date Fri, 12 Feb 2021 02:54:17 +0000
parents d4f8c511affe
children 52ec2d3eb851
line wrap: on
line diff
--- a/simtool/pbupd_imm.c	Fri Feb 12 01:41:21 2021 +0000
+++ b/simtool/pbupd_imm.c	Fri Feb 12 02:54:17 2021 +0000
@@ -9,66 +9,6 @@
 #include <stdlib.h>
 #include "curfile.h"
 
-extern u_char gsm7_encode_table[256];
-
-static
-decode_alphatag_arg(arg, record, maxlen)
-	char *arg;
-	u_char *record;
-	unsigned maxlen;
-{
-	unsigned acclen, nadd;
-	char *cp;
-	int c;
-
-	cp = arg;
-	for (acclen = 0; *cp; ) {
-		c = *cp++;
-		if (c == '\\') {
-			if (*cp == '\0') {
-				fprintf(stderr,
-					"error: dangling backslash escape\n");
-				return(-1);
-			}
-			c = *cp++;
-			switch (c) {
-			case 'n':
-				c = '\n';
-				break;
-			case 'r':
-				c = '\r';
-				break;
-			case '"':
-			case '\\':
-				break;
-			default:
-				fprintf(stderr,
-				"error: non-understood backslash escape\n");
-				return(-1);
-			}
-		}
-		c = gsm7_encode_table[c];
-		if (c == 0xFF) {
-			fprintf(stderr,
-	"error: character in alpha tag string cannot be encoded in GSM7\n");
-			return(-1);
-		}
-		if (c & 0x80)
-			nadd = 2;
-		else
-			nadd = 1;
-		if (acclen + nadd > maxlen) {
-			fprintf(stderr,
-			"error: alpha tag string is longer than SIM limit\n");
-			return(-1);
-		}
-		if (c & 0x80)
-			record[acclen++] = 0x1B;
-		record[acclen++] = c & 0x7F;
-	}
-	return(0);
-}
-
 cmd_pb_update_imm(argc, argv)
 	char **argv;
 {
@@ -90,7 +30,7 @@
 	if (rc < 0)
 		return(rc);
 	if (argv[4]) {
-		rc = decode_alphatag_arg(argv[4], record,
+		rc = qstring_arg_to_gsm7(argv[4], record,
 					 curfile_record_len - 14);
 		if (rc < 0)
 			return(rc);