comparison gen-pdu/settings.c @ 9:003660a57f99

new program sms-gen-tpdu
author Mychaela Falconia <falcon@freecalypso.org>
date Sat, 05 Aug 2023 07:43:45 +0000
parents
children 5854e48d0ef7
comparison
equal deleted inserted replaced
8:265b8103530c 9:003660a57f99
1 /*
2 * This module implements functions for various settings that come before
3 * msg or msg-udh lines.
4 */
5
6 #include <sys/types.h>
7 #include <stdio.h>
8 #include <stdlib.h>
9 #include <string.h>
10 #include <strings.h>
11 #include "error.h"
12
13 extern int dir_mo, include_sca;
14 extern u_char sc_addr[12], user_addr[12];
15 extern u_char mr_byte, pid_byte, dcs_byte;
16 extern u_char scts_buf[7];
17 extern int is_septet, scts_is_set;
18
19 extern int input_lineno;
20
21 void
22 set_sc_addr(argc, argv)
23 char **argv;
24 {
25 int rc;
26
27 if (!include_sca) {
28 fprintf(stderr, ERR_PREFIX
29 "sc-addr is not allowed in bare TPDU mode\n",
30 input_lineno);
31 exit(1);
32 }
33 rc = encode_phone_number_arg(argv[1], sc_addr, 0);
34 if (rc < 0) {
35 fprintf(stderr, ERR_PREFIX "invalid phone number argument\n",
36 input_lineno);
37 exit(1);
38 }
39 }
40
41 void
42 set_user_addr(argc, argv)
43 char **argv;
44 {
45 int rc;
46
47 rc = encode_phone_number_arg(argv[1], user_addr, 1);
48 if (rc < 0) {
49 fprintf(stderr, ERR_PREFIX "invalid phone number argument\n",
50 input_lineno);
51 exit(1);
52 }
53 }
54
55 void
56 set_mr_byte(argc, argv)
57 char **argv;
58 {
59 char *endp;
60
61 if (!dir_mo) {
62 fprintf(stderr, ERR_PREFIX "mr is not allowed in MT mode\n",
63 input_lineno);
64 exit(1);
65 }
66 mr_byte = strtoul(argv[1], &endp, 0);
67 if (*endp) {
68 fprintf(stderr, ERR_PREFIX "invalid byte value argument\n",
69 input_lineno);
70 exit(1);
71 }
72 }
73
74 void
75 set_pid_byte(argc, argv)
76 char **argv;
77 {
78 char *endp;
79
80 pid_byte = strtoul(argv[1], &endp, 0);
81 if (*endp) {
82 fprintf(stderr, ERR_PREFIX "invalid byte value argument\n",
83 input_lineno);
84 exit(1);
85 }
86 }
87
88 void
89 set_dcs(argc, argv)
90 char **argv;
91 {
92 char *endp;
93
94 dcs_byte = strtoul(argv[1], &endp, 0);
95 if (*endp) {
96 fprintf(stderr, ERR_PREFIX "invalid byte value argument\n",
97 input_lineno);
98 exit(1);
99 }
100 if (!strcmp(argv[2], "septet"))
101 is_septet = 1;
102 else if (!strcmp(argv[2], "octet"))
103 is_septet = 0;
104 else {
105 fprintf(stderr, ERR_PREFIX "invalid septet/octet mode kw\n",
106 input_lineno);
107 exit(1);
108 }
109 }
110
111 void
112 set_scts(argc, argv)
113 char **argv;
114 {
115 int rc;
116
117 if (dir_mo) {
118 fprintf(stderr, ERR_PREFIX "sc-ts is not allowed in MO mode\n",
119 input_lineno);
120 exit(1);
121 }
122 rc = encode_gsm_sms_abstime(argv[1], scts_buf);
123 if (rc < 0) {
124 fprintf(stderr, ERR_PREFIX "invalid timestamp argument\n",
125 input_lineno);
126 exit(1);
127 }
128 scts_is_set = 1;
129 }