r3199 - trunk/src/target/gsm/src/util

jserv at sita.openmoko.org jserv at sita.openmoko.org
Wed Oct 17 06:30:29 CEST 2007


Author: jserv
Date: 2007-10-17 06:30:24 +0200 (Wed, 17 Oct 2007)
New Revision: 3199

Modified:
   trunk/src/target/gsm/src/util/shell.c
Log:
http://bugzilla.openmoko.org/cgi-bin/bugzilla/show_bug.cgi?id=834                   

From: Kristian Mueller <kristian at mput.de>
Subject: [PATCH] libgsmd-tool does not allow sms with more than one word

libgsmd-tool only allows for command strings without spaces.
SMS messages with more than one word will be parsed as multible commands.
The patch introduces SMS message text in bracket and fixes a NULL pointer
reference on mailformed "ss" commands.


Modified: trunk/src/target/gsm/src/util/shell.c
===================================================================
--- trunk/src/target/gsm/src/util/shell.c	2007-10-16 18:03:00 UTC (rev 3198)
+++ trunk/src/target/gsm/src/util/shell.c	2007-10-17 04:30:24 UTC (rev 3199)
@@ -389,7 +389,7 @@
 		"\tsd\tSMS Delete (sd=index,delflg)\n"
 		"\tsl\tSMS List (sl=stat)\n"
 		"\tsr\tSMS Read (sr=index)\n"
-		"\tss\tSMS Send (ss=number,text)\n"
+		"\tss\tSMS Send (ss=number,text|[\"text\"])\n"
 		"\tsw\tSMS Write (sw=stat,number,text)\n"
 		"\tsm\tSMS Storage stats\n"
 		"\tsM\tSMS Set preferred storage (sM=mem1,mem2,mem3)\n"
@@ -612,16 +612,36 @@
 					
 				lgsm_sms_read(lgsmh, atoi(ptr+1));				
 			} else if ( !strncmp(buf, "ss", 2)) {
-				printf("Send SMS\n");		
 				struct lgsm_sms sms;
 
 				ptr = strchr(buf, '=');
 				fcomma = strchr(buf, ',');
-				strncpy(sms.addr, ptr+1, fcomma-ptr-1);
-				sms.addr[fcomma-ptr-1] = '\0';
-				packing_7bit_character(fcomma+1, &sms);
+				if (!ptr || !fcomma) {
+					printf("Wrong command format\n");
+				} else {
+					strncpy(sms.addr, ptr+1, fcomma-ptr-1);
+					sms.addr[fcomma-ptr-1] = '\0';
 
-				lgsm_sms_send(lgsmh, &sms);
+					/* todo define \" to allow " in text */
+					if (fcomma[1] == '"' &&
+						!strchr(fcomma+2, '"')) {
+						/* read until closing '"' */
+						rc = fscanf(stdin, "%[^\"]\"",
+							fcomma+strlen(fcomma));
+						if (rc == EOF) {
+							printf("EOF\n");
+							return -1;
+						}
+						/* remove brackets */
+						fcomma++;
+						fcomma[strlen(fcomma)] = '\0';
+					}
+
+					printf("Send SMS\n");
+					packing_7bit_character(fcomma+1, &sms);
+
+					lgsm_sms_send(lgsmh, &sms);
+				}
 			} else if ( !strncmp(buf, "sw", 2)) {	
 				printf("Write SMS\n");				
 				struct lgsm_sms_write sms_write;





More information about the commitlog mailing list