Code cleanup

This commit is contained in:
Pierre Pronchery 2011-01-05 01:34:28 +00:00
parent da33ae2d69
commit d6f6231b65

View File

@ -595,19 +595,17 @@ static int _message_to_pdu(unsigned long quirks, char const * number,
GSMModemAlphabet alphabet, char const * text, size_t length, GSMModemAlphabet alphabet, char const * text, size_t length,
char ** cmd, char ** pdu) char ** cmd, char ** pdu)
{ {
char * buf1; unsigned long cmdlen;
unsigned long len1;
char const cmd1[] = "AT+CMGS="; char const cmd1[] = "AT+CMGS=";
char const cmd2[] = "1100"; char const cmd2[] = "1100";
char * buf2; unsigned long pdulen;
unsigned long len2;
char * addr; char * addr;
char * data = NULL; char * data = NULL;
char const pid[] = "00"; char const pid[] = "00";
char dcs[] = "0X"; char dcs[] = "0X";
char const vp[] = "AA"; char const vp[] = "AA";
if(!_is_number(number) || text == NULL) if(!_is_number(number) || text == NULL || cmd == NULL || pdu == NULL)
return -1; return -1;
switch(alphabet) switch(alphabet)
{ {
@ -621,33 +619,31 @@ static int _message_to_pdu(unsigned long quirks, char const * number,
break; break;
} }
addr = _number_to_address(number); addr = _number_to_address(number);
len2 = 2 + sizeof(cmd2) + 2 + strlen(addr ? addr : "") + sizeof(pid) cmdlen = sizeof(cmd1) + 4;
*cmd = malloc(cmdlen);
pdulen = 2 + sizeof(cmd2) + 2 + strlen(addr ? addr : "") + sizeof(pid)
+ sizeof(dcs) + sizeof(vp) + 2 + strlen(data ? data : "") + 1; + sizeof(dcs) + sizeof(vp) + 2 + strlen(data ? data : "") + 1;
buf2 = malloc(len2); *pdu = malloc(pdulen);
len1 = sizeof(cmd1) + 4; if(addr == NULL || data == NULL || *cmd == NULL || *pdu == NULL)
buf1 = malloc(len1);
if(addr == NULL || data == NULL || buf1 == NULL || buf2 == NULL)
{ {
free(addr); free(addr);
free(data); free(data);
free(buf1); free(*cmd);
free(buf2); free(*pdu);
return -1; return -1;
} }
if(number[0] == '+') if(number[0] == '+')
number++; number++;
snprintf(buf2, len2, "%s%s%02lX%s%s%s%s%02lX%s\x1a", quirks snprintf(*pdu, pdulen, "%s%s%02lX%s%s%s%s%02lX%s\x1a", quirks
& GSM_MODEM_QUIRK_WANT_SMSC_IN_PDU ? "00" : "", & GSM_MODEM_QUIRK_WANT_SMSC_IN_PDU ? "00" : "",
cmd2, (unsigned long)strlen(number), cmd2, (unsigned long)strlen(number),
addr, pid, dcs, vp, (unsigned long)length, data); addr, pid, dcs, vp, (unsigned long)length, data);
len2 = strlen(buf2); /* XXX obtain it from snprintf() */ pdulen = strlen(*pdu); /* XXX obtain it from snprintf() */
if(quirks & GSM_MODEM_QUIRK_WANT_SMSC_IN_PDU) if(quirks & GSM_MODEM_QUIRK_WANT_SMSC_IN_PDU)
len2 -= 2; pdulen -= 2;
snprintf(buf1, len1, "%s%lu", cmd1, (len2 - 1) / 2); snprintf(*cmd, cmdlen, "%s%lu", cmd1, (pdulen - 1) / 2);
free(addr); free(addr);
free(data); free(data);
*cmd = buf1;
*pdu = buf2;
return 0; return 0;
} }