FreeCalypso > hg > freecalypso-tools
annotate uptools/atcmd/smsend_multmain.c @ 465:003e48f8ebe1
rvinterf/etmsync/fsnew.c: cast 0 to (char *) for execl sentinel
I generally don't use NULL and use plain 0 instead, based on a "NULL
considered harmful" discussion on the classiccmp mailing list many aeons
ago (I couldn't find it, and I reason that it must have been 2005 or
earlier), but a recent complaint by a packager sent me searching, and I
found this:
https://ewontfix.com/11/
While I don't give a @#$% about "modern" systems and code-nazi tools,
I realized that passing a plain 0 as a pointer sentinel in execl is wrong
because it will break on systems where pointers are longer than the plain
int type. Again, I don't give a @#$% about the abomination of x86_64 and
the like, but if anyone ever manages to port my code to something like a
PDP-11 (16-bit int, 32-bit long and pointers), then passing a plain 0
as a function argument where a pointer is expected most definitely won't
work: if the most natural stack slot and SP alignment unit is 16 bits,
fitting an int, with longs and pointers taking up two such slots, then
the call stack will be totally wrong with a plain 0 passed for a pointer.
Casting the 0 to (char *) ought to be the most kosher solution for the
most retro systems possible.
author | Mychaela Falconia <falcon@freecalypso.org> |
---|---|
date | Mon, 11 Feb 2019 00:00:19 +0000 |
parents | f8c693d16978 |
children | dc2fd8e6f42c |
rev | line source |
---|---|
373
1fa4dcbb1c87
fcup-smsendmult program written, compiles
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
1 /* |
1fa4dcbb1c87
fcup-smsendmult program written, compiles
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
2 * This is the main module for the fcup-smsendmult utility. |
1fa4dcbb1c87
fcup-smsendmult program written, compiles
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
3 */ |
1fa4dcbb1c87
fcup-smsendmult program written, compiles
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
4 |
1fa4dcbb1c87
fcup-smsendmult program written, compiles
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
5 #include <sys/types.h> |
1fa4dcbb1c87
fcup-smsendmult program written, compiles
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
6 #include <ctype.h> |
1fa4dcbb1c87
fcup-smsendmult program written, compiles
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
7 #include <stdio.h> |
1fa4dcbb1c87
fcup-smsendmult program written, compiles
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
8 #include <stdlib.h> |
1fa4dcbb1c87
fcup-smsendmult program written, compiles
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
9 #include <string.h> |
1fa4dcbb1c87
fcup-smsendmult program written, compiles
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
10 #include <strings.h> |
1fa4dcbb1c87
fcup-smsendmult program written, compiles
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
11 #include <unistd.h> |
1fa4dcbb1c87
fcup-smsendmult program written, compiles
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
12 #include "../../rvinterf/include/exitcodes.h" |
1fa4dcbb1c87
fcup-smsendmult program written, compiles
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
13 |
382
88131632ce48
fcup-smsendmult: preparations for adding UCS-2 support
Mychaela Falconia <falcon@freecalypso.org>
parents:
373
diff
changeset
|
14 int sms_write_mode, text_mode, utf8_input, ucs2_mode; |
373
1fa4dcbb1c87
fcup-smsendmult program written, compiles
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
15 u_char dest_addr[12]; |
1fa4dcbb1c87
fcup-smsendmult program written, compiles
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
16 int dest_addr_global; |
1fa4dcbb1c87
fcup-smsendmult program written, compiles
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
17 char input_line[21+5+1+320+2], *msgtext; |
1fa4dcbb1c87
fcup-smsendmult program written, compiles
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
18 int lineno; |
382
88131632ce48
fcup-smsendmult: preparations for adding UCS-2 support
Mychaela Falconia <falcon@freecalypso.org>
parents:
373
diff
changeset
|
19 int initdone; |
373
1fa4dcbb1c87
fcup-smsendmult program written, compiles
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
20 |
1fa4dcbb1c87
fcup-smsendmult program written, compiles
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
21 process_cmdline(argc, argv) |
1fa4dcbb1c87
fcup-smsendmult program written, compiles
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
22 char **argv; |
1fa4dcbb1c87
fcup-smsendmult program written, compiles
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
23 { |
1fa4dcbb1c87
fcup-smsendmult program written, compiles
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
24 int c; |
1fa4dcbb1c87
fcup-smsendmult program written, compiles
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
25 extern int optind; |
1fa4dcbb1c87
fcup-smsendmult program written, compiles
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
26 |
382
88131632ce48
fcup-smsendmult: preparations for adding UCS-2 support
Mychaela Falconia <falcon@freecalypso.org>
parents:
373
diff
changeset
|
27 while ((c = getopt(argc, argv, "B:np:RtuUwWX:")) != EOF) { |
373
1fa4dcbb1c87
fcup-smsendmult program written, compiles
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
28 if (atinterf_cmdline_opt(c)) |
1fa4dcbb1c87
fcup-smsendmult program written, compiles
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
29 continue; |
1fa4dcbb1c87
fcup-smsendmult program written, compiles
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
30 switch (c) { |
1fa4dcbb1c87
fcup-smsendmult program written, compiles
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
31 case 't': |
1fa4dcbb1c87
fcup-smsendmult program written, compiles
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
32 text_mode = 1; |
1fa4dcbb1c87
fcup-smsendmult program written, compiles
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
33 continue; |
1fa4dcbb1c87
fcup-smsendmult program written, compiles
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
34 case 'u': |
1fa4dcbb1c87
fcup-smsendmult program written, compiles
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
35 utf8_input = 1; |
1fa4dcbb1c87
fcup-smsendmult program written, compiles
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
36 continue; |
382
88131632ce48
fcup-smsendmult: preparations for adding UCS-2 support
Mychaela Falconia <falcon@freecalypso.org>
parents:
373
diff
changeset
|
37 case 'U': |
88131632ce48
fcup-smsendmult: preparations for adding UCS-2 support
Mychaela Falconia <falcon@freecalypso.org>
parents:
373
diff
changeset
|
38 ucs2_mode = 1; |
88131632ce48
fcup-smsendmult: preparations for adding UCS-2 support
Mychaela Falconia <falcon@freecalypso.org>
parents:
373
diff
changeset
|
39 continue; |
373
1fa4dcbb1c87
fcup-smsendmult program written, compiles
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
40 case 'w': |
1fa4dcbb1c87
fcup-smsendmult program written, compiles
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
41 sms_write_mode = 1; |
1fa4dcbb1c87
fcup-smsendmult program written, compiles
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
42 continue; |
1fa4dcbb1c87
fcup-smsendmult program written, compiles
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
43 case 'W': |
1fa4dcbb1c87
fcup-smsendmult program written, compiles
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
44 sms_write_mode = 2; |
1fa4dcbb1c87
fcup-smsendmult program written, compiles
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
45 continue; |
1fa4dcbb1c87
fcup-smsendmult program written, compiles
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
46 default: |
1fa4dcbb1c87
fcup-smsendmult program written, compiles
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
47 /* error msg already printed */ |
1fa4dcbb1c87
fcup-smsendmult program written, compiles
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
48 exit(ERROR_USAGE); |
1fa4dcbb1c87
fcup-smsendmult program written, compiles
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
49 } |
1fa4dcbb1c87
fcup-smsendmult program written, compiles
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
50 } |
382
88131632ce48
fcup-smsendmult: preparations for adding UCS-2 support
Mychaela Falconia <falcon@freecalypso.org>
parents:
373
diff
changeset
|
51 if (ucs2_mode && text_mode) { |
88131632ce48
fcup-smsendmult: preparations for adding UCS-2 support
Mychaela Falconia <falcon@freecalypso.org>
parents:
373
diff
changeset
|
52 fprintf(stderr, "%s error: UCS-2 not supported in text mode\n", |
88131632ce48
fcup-smsendmult: preparations for adding UCS-2 support
Mychaela Falconia <falcon@freecalypso.org>
parents:
373
diff
changeset
|
53 argv[0]); |
88131632ce48
fcup-smsendmult: preparations for adding UCS-2 support
Mychaela Falconia <falcon@freecalypso.org>
parents:
373
diff
changeset
|
54 exit(ERROR_USAGE); |
88131632ce48
fcup-smsendmult: preparations for adding UCS-2 support
Mychaela Falconia <falcon@freecalypso.org>
parents:
373
diff
changeset
|
55 } |
373
1fa4dcbb1c87
fcup-smsendmult program written, compiles
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
56 if (argc > optind + 1) { |
1fa4dcbb1c87
fcup-smsendmult program written, compiles
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
57 fprintf(stderr, "usage: %s [options] [dest-addr]\n", |
1fa4dcbb1c87
fcup-smsendmult program written, compiles
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
58 argv[0]); |
1fa4dcbb1c87
fcup-smsendmult program written, compiles
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
59 exit(ERROR_USAGE); |
1fa4dcbb1c87
fcup-smsendmult program written, compiles
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
60 } |
1fa4dcbb1c87
fcup-smsendmult program written, compiles
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
61 if (argv[optind]) { |
1fa4dcbb1c87
fcup-smsendmult program written, compiles
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
62 dest_addr_global = 1; |
1fa4dcbb1c87
fcup-smsendmult program written, compiles
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
63 if (parse_and_encode_dest_addr(argv[optind], dest_addr) < 0) { |
1fa4dcbb1c87
fcup-smsendmult program written, compiles
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
64 fprintf(stderr, |
1fa4dcbb1c87
fcup-smsendmult program written, compiles
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
65 "error: destination address argument is invalid\n"); |
1fa4dcbb1c87
fcup-smsendmult program written, compiles
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
66 exit(ERROR_USAGE); |
1fa4dcbb1c87
fcup-smsendmult program written, compiles
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
67 } |
1fa4dcbb1c87
fcup-smsendmult program written, compiles
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
68 } else |
1fa4dcbb1c87
fcup-smsendmult program written, compiles
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
69 dest_addr_global = 0; |
1fa4dcbb1c87
fcup-smsendmult program written, compiles
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
70 return(0); |
1fa4dcbb1c87
fcup-smsendmult program written, compiles
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
71 } |
1fa4dcbb1c87
fcup-smsendmult program written, compiles
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
72 |
1fa4dcbb1c87
fcup-smsendmult program written, compiles
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
73 preen_input_line() |
1fa4dcbb1c87
fcup-smsendmult program written, compiles
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
74 { |
1fa4dcbb1c87
fcup-smsendmult program written, compiles
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
75 char *cp; |
1fa4dcbb1c87
fcup-smsendmult program written, compiles
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
76 |
1fa4dcbb1c87
fcup-smsendmult program written, compiles
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
77 cp = index(input_line, '\n'); |
1fa4dcbb1c87
fcup-smsendmult program written, compiles
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
78 if (!cp) { |
1fa4dcbb1c87
fcup-smsendmult program written, compiles
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
79 fprintf(stderr, "input line %d: too long or unterminated\n", |
1fa4dcbb1c87
fcup-smsendmult program written, compiles
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
80 lineno); |
1fa4dcbb1c87
fcup-smsendmult program written, compiles
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
81 exit(ERROR_USAGE); |
1fa4dcbb1c87
fcup-smsendmult program written, compiles
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
82 } |
1fa4dcbb1c87
fcup-smsendmult program written, compiles
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
83 *cp = '\0'; |
1fa4dcbb1c87
fcup-smsendmult program written, compiles
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
84 if (dest_addr_global) { |
1fa4dcbb1c87
fcup-smsendmult program written, compiles
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
85 msgtext = input_line; |
1fa4dcbb1c87
fcup-smsendmult program written, compiles
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
86 return(0); |
1fa4dcbb1c87
fcup-smsendmult program written, compiles
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
87 } |
1fa4dcbb1c87
fcup-smsendmult program written, compiles
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
88 if (!input_line[0] || isspace(input_line[0])) { |
1fa4dcbb1c87
fcup-smsendmult program written, compiles
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
89 inv: fprintf(stderr, "input line %d: invalid syntax\n", lineno); |
1fa4dcbb1c87
fcup-smsendmult program written, compiles
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
90 exit(ERROR_USAGE); |
1fa4dcbb1c87
fcup-smsendmult program written, compiles
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
91 } |
1fa4dcbb1c87
fcup-smsendmult program written, compiles
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
92 for (cp = input_line; *cp && !isspace(*cp); cp++) |
1fa4dcbb1c87
fcup-smsendmult program written, compiles
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
93 ; |
1fa4dcbb1c87
fcup-smsendmult program written, compiles
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
94 if (!*cp) |
1fa4dcbb1c87
fcup-smsendmult program written, compiles
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
95 goto inv; |
1fa4dcbb1c87
fcup-smsendmult program written, compiles
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
96 *cp++ = '\0'; |
1fa4dcbb1c87
fcup-smsendmult program written, compiles
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
97 if (parse_and_encode_dest_addr(input_line, dest_addr) < 0) |
1fa4dcbb1c87
fcup-smsendmult program written, compiles
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
98 goto inv; |
1fa4dcbb1c87
fcup-smsendmult program written, compiles
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
99 while (isspace(*cp)) |
1fa4dcbb1c87
fcup-smsendmult program written, compiles
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
100 cp++; |
1fa4dcbb1c87
fcup-smsendmult program written, compiles
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
101 msgtext = cp; |
1fa4dcbb1c87
fcup-smsendmult program written, compiles
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
102 return(1); |
1fa4dcbb1c87
fcup-smsendmult program written, compiles
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
103 } |
1fa4dcbb1c87
fcup-smsendmult program written, compiles
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
104 |
382
88131632ce48
fcup-smsendmult: preparations for adding UCS-2 support
Mychaela Falconia <falcon@freecalypso.org>
parents:
373
diff
changeset
|
105 init_send_process() |
373
1fa4dcbb1c87
fcup-smsendmult program written, compiles
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
106 { |
382
88131632ce48
fcup-smsendmult: preparations for adding UCS-2 support
Mychaela Falconia <falcon@freecalypso.org>
parents:
373
diff
changeset
|
107 if (initdone) |
88131632ce48
fcup-smsendmult: preparations for adding UCS-2 support
Mychaela Falconia <falcon@freecalypso.org>
parents:
373
diff
changeset
|
108 return(0); |
88131632ce48
fcup-smsendmult: preparations for adding UCS-2 support
Mychaela Falconia <falcon@freecalypso.org>
parents:
373
diff
changeset
|
109 atinterf_init(); |
88131632ce48
fcup-smsendmult: preparations for adding UCS-2 support
Mychaela Falconia <falcon@freecalypso.org>
parents:
373
diff
changeset
|
110 /* enable verbose error messages */ |
88131632ce48
fcup-smsendmult: preparations for adding UCS-2 support
Mychaela Falconia <falcon@freecalypso.org>
parents:
373
diff
changeset
|
111 atinterf_exec_cmd_needok("AT+CMEE=2", 0, 0); |
88131632ce48
fcup-smsendmult: preparations for adding UCS-2 support
Mychaela Falconia <falcon@freecalypso.org>
parents:
373
diff
changeset
|
112 if (text_mode) |
88131632ce48
fcup-smsendmult: preparations for adding UCS-2 support
Mychaela Falconia <falcon@freecalypso.org>
parents:
373
diff
changeset
|
113 prep_for_text_mode(); |
88131632ce48
fcup-smsendmult: preparations for adding UCS-2 support
Mychaela Falconia <falcon@freecalypso.org>
parents:
373
diff
changeset
|
114 else |
88131632ce48
fcup-smsendmult: preparations for adding UCS-2 support
Mychaela Falconia <falcon@freecalypso.org>
parents:
373
diff
changeset
|
115 prep_for_pdu_mode(); |
88131632ce48
fcup-smsendmult: preparations for adding UCS-2 support
Mychaela Falconia <falcon@freecalypso.org>
parents:
373
diff
changeset
|
116 if (sms_write_mode == 0) |
88131632ce48
fcup-smsendmult: preparations for adding UCS-2 support
Mychaela Falconia <falcon@freecalypso.org>
parents:
373
diff
changeset
|
117 atinterf_exec_cmd_needok("AT+CMMS=1", 0, 0); |
88131632ce48
fcup-smsendmult: preparations for adding UCS-2 support
Mychaela Falconia <falcon@freecalypso.org>
parents:
373
diff
changeset
|
118 initdone = 1; |
88131632ce48
fcup-smsendmult: preparations for adding UCS-2 support
Mychaela Falconia <falcon@freecalypso.org>
parents:
373
diff
changeset
|
119 return(1); |
88131632ce48
fcup-smsendmult: preparations for adding UCS-2 support
Mychaela Falconia <falcon@freecalypso.org>
parents:
373
diff
changeset
|
120 } |
88131632ce48
fcup-smsendmult: preparations for adding UCS-2 support
Mychaela Falconia <falcon@freecalypso.org>
parents:
373
diff
changeset
|
121 |
88131632ce48
fcup-smsendmult: preparations for adding UCS-2 support
Mychaela Falconia <falcon@freecalypso.org>
parents:
373
diff
changeset
|
122 process_msg_gsm7() |
88131632ce48
fcup-smsendmult: preparations for adding UCS-2 support
Mychaela Falconia <falcon@freecalypso.org>
parents:
373
diff
changeset
|
123 { |
88131632ce48
fcup-smsendmult: preparations for adding UCS-2 support
Mychaela Falconia <falcon@freecalypso.org>
parents:
373
diff
changeset
|
124 u_char msgtext_gsm7[160]; |
88131632ce48
fcup-smsendmult: preparations for adding UCS-2 support
Mychaela Falconia <falcon@freecalypso.org>
parents:
373
diff
changeset
|
125 unsigned msgtext_gsmlen; |
373
1fa4dcbb1c87
fcup-smsendmult program written, compiles
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
126 int rc; |
1fa4dcbb1c87
fcup-smsendmult program written, compiles
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
127 |
1fa4dcbb1c87
fcup-smsendmult program written, compiles
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
128 if (utf8_input && utf8_to_latin1(msgtext) < 0) { |
1fa4dcbb1c87
fcup-smsendmult program written, compiles
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
129 fprintf(stderr, "input line %d: invalid UTF-8 message\n", |
1fa4dcbb1c87
fcup-smsendmult program written, compiles
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
130 lineno); |
1fa4dcbb1c87
fcup-smsendmult program written, compiles
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
131 exit(ERROR_USAGE); |
1fa4dcbb1c87
fcup-smsendmult program written, compiles
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
132 } |
1fa4dcbb1c87
fcup-smsendmult program written, compiles
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
133 if (text_mode) { |
1fa4dcbb1c87
fcup-smsendmult program written, compiles
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
134 if (strlen(msgtext) > 160) { |
1fa4dcbb1c87
fcup-smsendmult program written, compiles
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
135 toolong: fprintf(stderr, |
1fa4dcbb1c87
fcup-smsendmult program written, compiles
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
136 "input line %d: message exceeds 160 chars\n", |
1fa4dcbb1c87
fcup-smsendmult program written, compiles
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
137 lineno); |
1fa4dcbb1c87
fcup-smsendmult program written, compiles
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
138 exit(ERROR_USAGE); |
1fa4dcbb1c87
fcup-smsendmult program written, compiles
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
139 } |
382
88131632ce48
fcup-smsendmult: preparations for adding UCS-2 support
Mychaela Falconia <falcon@freecalypso.org>
parents:
373
diff
changeset
|
140 init_send_process(); |
88131632ce48
fcup-smsendmult: preparations for adding UCS-2 support
Mychaela Falconia <falcon@freecalypso.org>
parents:
373
diff
changeset
|
141 send_in_text_mode(dest_addr, msgtext); |
373
1fa4dcbb1c87
fcup-smsendmult program written, compiles
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
142 return(0); |
1fa4dcbb1c87
fcup-smsendmult program written, compiles
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
143 } |
1fa4dcbb1c87
fcup-smsendmult program written, compiles
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
144 rc = latin1_to_gsm7(msgtext, msgtext_gsm7, 160, &msgtext_gsmlen); |
1fa4dcbb1c87
fcup-smsendmult program written, compiles
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
145 if (rc == -1) { |
1fa4dcbb1c87
fcup-smsendmult program written, compiles
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
146 fprintf(stderr, |
1fa4dcbb1c87
fcup-smsendmult program written, compiles
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
147 "input line %d: message not valid for GSM7 charset\n", |
1fa4dcbb1c87
fcup-smsendmult program written, compiles
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
148 lineno); |
1fa4dcbb1c87
fcup-smsendmult program written, compiles
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
149 exit(ERROR_USAGE); |
1fa4dcbb1c87
fcup-smsendmult program written, compiles
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
150 } |
1fa4dcbb1c87
fcup-smsendmult program written, compiles
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
151 if (rc == -2) |
1fa4dcbb1c87
fcup-smsendmult program written, compiles
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
152 goto toolong; |
382
88131632ce48
fcup-smsendmult: preparations for adding UCS-2 support
Mychaela Falconia <falcon@freecalypso.org>
parents:
373
diff
changeset
|
153 init_send_process(); |
88131632ce48
fcup-smsendmult: preparations for adding UCS-2 support
Mychaela Falconia <falcon@freecalypso.org>
parents:
373
diff
changeset
|
154 send_in_pdu_mode(dest_addr, msgtext_gsm7, msgtext_gsmlen, 0, 0); |
373
1fa4dcbb1c87
fcup-smsendmult program written, compiles
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
155 return(0); |
1fa4dcbb1c87
fcup-smsendmult program written, compiles
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
156 } |
1fa4dcbb1c87
fcup-smsendmult program written, compiles
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
157 |
383
f8c693d16978
fcup-smsendmult: UCS-2 send mode implemented
Mychaela Falconia <falcon@freecalypso.org>
parents:
382
diff
changeset
|
158 process_msg_ucs2() |
f8c693d16978
fcup-smsendmult: UCS-2 send mode implemented
Mychaela Falconia <falcon@freecalypso.org>
parents:
382
diff
changeset
|
159 { |
f8c693d16978
fcup-smsendmult: UCS-2 send mode implemented
Mychaela Falconia <falcon@freecalypso.org>
parents:
382
diff
changeset
|
160 u_short msgtext_uni[70]; |
f8c693d16978
fcup-smsendmult: UCS-2 send mode implemented
Mychaela Falconia <falcon@freecalypso.org>
parents:
382
diff
changeset
|
161 unsigned msgtext_unilen; |
f8c693d16978
fcup-smsendmult: UCS-2 send mode implemented
Mychaela Falconia <falcon@freecalypso.org>
parents:
382
diff
changeset
|
162 int rc; |
f8c693d16978
fcup-smsendmult: UCS-2 send mode implemented
Mychaela Falconia <falcon@freecalypso.org>
parents:
382
diff
changeset
|
163 |
f8c693d16978
fcup-smsendmult: UCS-2 send mode implemented
Mychaela Falconia <falcon@freecalypso.org>
parents:
382
diff
changeset
|
164 rc = utf8_to_ucs2(msgtext, msgtext_uni, 70, &msgtext_unilen); |
f8c693d16978
fcup-smsendmult: UCS-2 send mode implemented
Mychaela Falconia <falcon@freecalypso.org>
parents:
382
diff
changeset
|
165 if (rc == -1) { |
f8c693d16978
fcup-smsendmult: UCS-2 send mode implemented
Mychaela Falconia <falcon@freecalypso.org>
parents:
382
diff
changeset
|
166 fprintf(stderr, "input line %d: invalid UTF-8 message\n", |
f8c693d16978
fcup-smsendmult: UCS-2 send mode implemented
Mychaela Falconia <falcon@freecalypso.org>
parents:
382
diff
changeset
|
167 lineno); |
f8c693d16978
fcup-smsendmult: UCS-2 send mode implemented
Mychaela Falconia <falcon@freecalypso.org>
parents:
382
diff
changeset
|
168 exit(ERROR_USAGE); |
f8c693d16978
fcup-smsendmult: UCS-2 send mode implemented
Mychaela Falconia <falcon@freecalypso.org>
parents:
382
diff
changeset
|
169 } |
f8c693d16978
fcup-smsendmult: UCS-2 send mode implemented
Mychaela Falconia <falcon@freecalypso.org>
parents:
382
diff
changeset
|
170 if (rc == -2) { |
f8c693d16978
fcup-smsendmult: UCS-2 send mode implemented
Mychaela Falconia <falcon@freecalypso.org>
parents:
382
diff
changeset
|
171 fprintf(stderr, |
f8c693d16978
fcup-smsendmult: UCS-2 send mode implemented
Mychaela Falconia <falcon@freecalypso.org>
parents:
382
diff
changeset
|
172 "input line %d: message exceeds 70 UCS-2 chars\n", |
f8c693d16978
fcup-smsendmult: UCS-2 send mode implemented
Mychaela Falconia <falcon@freecalypso.org>
parents:
382
diff
changeset
|
173 lineno); |
f8c693d16978
fcup-smsendmult: UCS-2 send mode implemented
Mychaela Falconia <falcon@freecalypso.org>
parents:
382
diff
changeset
|
174 exit(ERROR_USAGE); |
f8c693d16978
fcup-smsendmult: UCS-2 send mode implemented
Mychaela Falconia <falcon@freecalypso.org>
parents:
382
diff
changeset
|
175 } |
f8c693d16978
fcup-smsendmult: UCS-2 send mode implemented
Mychaela Falconia <falcon@freecalypso.org>
parents:
382
diff
changeset
|
176 init_send_process(); |
f8c693d16978
fcup-smsendmult: UCS-2 send mode implemented
Mychaela Falconia <falcon@freecalypso.org>
parents:
382
diff
changeset
|
177 send_pdu_ucs2(dest_addr, msgtext_uni, msgtext_unilen, 0, 0); |
f8c693d16978
fcup-smsendmult: UCS-2 send mode implemented
Mychaela Falconia <falcon@freecalypso.org>
parents:
382
diff
changeset
|
178 return(0); |
f8c693d16978
fcup-smsendmult: UCS-2 send mode implemented
Mychaela Falconia <falcon@freecalypso.org>
parents:
382
diff
changeset
|
179 } |
f8c693d16978
fcup-smsendmult: UCS-2 send mode implemented
Mychaela Falconia <falcon@freecalypso.org>
parents:
382
diff
changeset
|
180 |
373
1fa4dcbb1c87
fcup-smsendmult program written, compiles
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
181 main(argc, argv) |
1fa4dcbb1c87
fcup-smsendmult program written, compiles
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
182 char **argv; |
1fa4dcbb1c87
fcup-smsendmult program written, compiles
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
183 { |
1fa4dcbb1c87
fcup-smsendmult program written, compiles
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
184 process_cmdline(argc, argv); |
1fa4dcbb1c87
fcup-smsendmult program written, compiles
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
185 for (lineno = 1; fgets(input_line, sizeof input_line, stdin); lineno++){ |
1fa4dcbb1c87
fcup-smsendmult program written, compiles
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
186 preen_input_line(); |
383
f8c693d16978
fcup-smsendmult: UCS-2 send mode implemented
Mychaela Falconia <falcon@freecalypso.org>
parents:
382
diff
changeset
|
187 if (ucs2_mode) |
f8c693d16978
fcup-smsendmult: UCS-2 send mode implemented
Mychaela Falconia <falcon@freecalypso.org>
parents:
382
diff
changeset
|
188 process_msg_ucs2(); |
f8c693d16978
fcup-smsendmult: UCS-2 send mode implemented
Mychaela Falconia <falcon@freecalypso.org>
parents:
382
diff
changeset
|
189 else |
f8c693d16978
fcup-smsendmult: UCS-2 send mode implemented
Mychaela Falconia <falcon@freecalypso.org>
parents:
382
diff
changeset
|
190 process_msg_gsm7(); |
373
1fa4dcbb1c87
fcup-smsendmult program written, compiles
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
191 } |
1fa4dcbb1c87
fcup-smsendmult program written, compiles
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
192 if (!initdone) |
1fa4dcbb1c87
fcup-smsendmult program written, compiles
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
193 exit(0); |
1fa4dcbb1c87
fcup-smsendmult program written, compiles
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
194 if (sms_write_mode == 0) |
1fa4dcbb1c87
fcup-smsendmult program written, compiles
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
195 atinterf_exec_cmd_needok("AT+CMMS=0", 0, 0); |
1fa4dcbb1c87
fcup-smsendmult program written, compiles
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
196 if (sms_write_mode == 1) |
1fa4dcbb1c87
fcup-smsendmult program written, compiles
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
197 sendafterwr_process(); |
1fa4dcbb1c87
fcup-smsendmult program written, compiles
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
198 exit(0); |
1fa4dcbb1c87
fcup-smsendmult program written, compiles
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff
changeset
|
199 } |