FreeCalypso > hg > sms-coding-utils
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 } |