diff -burN gnokii-0.6.3.orig/Docs/man/gnokii.1 gnokii-0.6.3-savesms-date/Docs/man/gnokii.1 --- gnokii-0.6.3.orig/Docs/man/gnokii.1 2004-09-29 19:39:06.000000000 +0200 +++ gnokii-0.6.3-savesms-date/Docs/man/gnokii.1 2004-09-30 20:41:32.000000000 +0200 @@ -129,7 +129,7 @@ echo "This is a test message" | gnokii \-\-sendsms +48501123456 \-r .TP -.BR "\-\-savesms [\-\-sender \fIfrom\fP] [\-\-smsc \fImessage_center_number\fP | \-\-smscno \fImessage_center_index\fP] [\-\-folder \fIfolder_id\fP] [\-\-location \fInumber\fP] [\-\-sent | \-\-read] [\-\-deliver]" +.BR "\-\-savesms [\-\-sender \fIfrom\fP] [\-\-smsc \fImessage_center_number\fP | \-\-smscno \fImessage_center_index\fP] [\-\-folder \fIfolder_id\fP] [\-\-location \fInumber\fP] [\-\-sent | \-\-read] [\-\-deliver] [\-\-datetime \fIYYMMDDHHMMSS\fP]" saves SMS messages to phone. Messages are read from STDIN. You can specify the following optional arguments: .PP \-\-sender \- set the sender number (only \fI\-\-deliver\fP) @@ -145,6 +145,8 @@ \-\-sent | \-\-read \- mark the message saved/read depending on \fI\-\-deliver\fP .PP \-\-deliver \- set the message type to SMS_Deliver +.PP +\-\-datetime \fIYYMMDDHHMMSS\fR \- sets datetime of delivery, i.e. 031123185713 would set message delivery time to 23rd November 2003, 6:57:13 PM .TP .BR "\-\-getsmsc \fInumber\fP" diff -burN gnokii-0.6.3.orig/gnokii/gnokii.c gnokii-0.6.3-savesms-date/gnokii/gnokii.c --- gnokii-0.6.3.orig/gnokii/gnokii.c 2004-09-29 19:39:06.000000000 +0200 +++ gnokii-0.6.3-savesms-date/gnokii/gnokii.c 2004-09-30 22:47:46.577628208 +0200 @@ -287,6 +287,7 @@ " gnokii --savesms [--sender from] [--smsc message_center_number |\n" " --smscno message_center_index] [--folder folder_id]\n" " [--location number] [--sent | --read] [--deliver] \n" + " [--datetime YYMMDDHHMMSS] \n" " gnokii --getsmsc [start_number [end_number]] [-r|--raw]\n" " gnokii --setsmsc\n" " gnokii --createsmsfolder name\n" @@ -781,6 +782,7 @@ { "sent", 0, NULL, 's'}, { "folder", required_argument, NULL, 'f'}, { "deliver", 0 , NULL, 'd'}, + { "datetime", required_argument, NULL, 't'}, { NULL, 0, NULL, 0} }; @@ -818,7 +820,7 @@ argc++; /* Option parsing */ - while ((i = getopt_long(argc, argv, "0:1:2:3:rsf:id", options, NULL)) != -1) { + while ((i = getopt_long(argc, argv, "0:1:2:3:rsf:idt:", options, NULL)) != -1) { switch (i) { case '0': /* SMSC number */ snprintf(sms.smsc.number, sizeof(sms.smsc.number) - 1, "%s", optarg); @@ -869,6 +871,32 @@ case 'd': /* type Deliver */ sms.type = GN_SMS_MT_Deliver; break; + case 't': /* set specific date and time of message delivery */ { + char tmp[3]; + tmp[2]=0; + if (strlen(optarg) != 12) { + fprintf(stderr, _("Invalid datetime format: %s (should be YYMMDDHHMMSS, all digits)!\n"), optarg); + return -1; + }; + for (i=0; i<12; i++) + if (optarg[i] < '0' || optarg[i] > '9') { + fprintf(stderr, _("Invalid datetime format: %s (should be YYMMDDHHMMSS, all digits)!\n"), optarg); + return -1; + }; + strncpy(tmp, optarg, 2); + sms.smsc_time.year = atoi(tmp)+1900; + strncpy(tmp, optarg+2, 2); + sms.smsc_time.month = atoi(tmp); + strncpy(tmp, optarg+4, 2); + sms.smsc_time.day = atoi(tmp); + strncpy(tmp, optarg+6, 2); + sms.smsc_time.hour = atoi(tmp); + strncpy(tmp, optarg+8, 2); + sms.smsc_time.minute = atoi(tmp); + strncpy(tmp, optarg+10, 2); + sms.smsc_time.second = atoi(tmp); + break; + } default: usage(stderr, -1); return -1;