comparison libcoding/number_encode.c @ 5:c79d09284c5f

encode_phone_number_arg(): don't print to stderr, just return -1 on errors
author Mychaela Falconia <falcon@freecalypso.org>
date Sat, 05 Aug 2023 03:20:11 +0000
parents d88c5ab03447
children
comparison
equal deleted inserted replaced
4:d88c5ab03447 5:c79d09284c5f
66 if (*cp == '+') { 66 if (*cp == '+') {
67 fixp[1] = 0x91; 67 fixp[1] = 0x91;
68 cp++; 68 cp++;
69 } else 69 } else
70 fixp[1] = 0x81; 70 fixp[1] = 0x81;
71 if (digit_char_to_gsm(*cp) < 0) { 71 if (digit_char_to_gsm(*cp) < 0)
72 inv_arg: fprintf(stderr, "error: invalid phone number argument\n");
73 return(-1); 72 return(-1);
74 }
75 for (ndigits = 0; ; ndigits++) { 73 for (ndigits = 0; ; ndigits++) {
76 c = digit_char_to_gsm(*cp); 74 c = digit_char_to_gsm(*cp);
77 if (c < 0) 75 if (c < 0)
78 break; 76 break;
79 cp++; 77 cp++;
80 if (ndigits >= 20) { 78 if (ndigits >= 20)
81 fprintf(stderr, "error: too many number digits\n");
82 return(-1); 79 return(-1);
83 }
84 digits[ndigits] = c; 80 digits[ndigits] = c;
85 } 81 }
86 if (mode) 82 if (mode)
87 fixp[0] = ndigits; 83 fixp[0] = ndigits;
88 if (ndigits & 1) 84 if (ndigits & 1)
92 fixp[0] = num_digit_bytes + 1; 88 fixp[0] = num_digit_bytes + 1;
93 pack_digit_bytes(digits, fixp + 2, num_digit_bytes); 89 pack_digit_bytes(digits, fixp + 2, num_digit_bytes);
94 if (*cp == ',') { 90 if (*cp == ',') {
95 cp++; 91 cp++;
96 if (!isdigit(*cp)) 92 if (!isdigit(*cp))
97 goto inv_arg; 93 return(-1);
98 fixp[1] = strtoul(cp, &endp, 0); 94 fixp[1] = strtoul(cp, &endp, 0);
99 if (*endp) 95 if (*endp)
100 goto inv_arg; 96 return(-1);
101 } else if (*cp) 97 } else if (*cp)
102 goto inv_arg; 98 return(-1);
103 return(0); 99 return(0);
104 } 100 }