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 } |
