Lines Matching refs:msg
22 static int mbox_parse_month(const unsigned char *msg, struct tm *tm)
27 if (i_memcasecmp(months[i], msg, 3) == 0) {
33 if (i == 12 && memcmp(msg, "???", 3) == 0) {
38 if (i == 12 || msg[3] != ' ')
43 static int mbox_parse_year(const unsigned char *msg, struct tm *tm)
45 if (!i_isdigit(msg[0]) || !i_isdigit(msg[1]) ||
46 !i_isdigit(msg[2]) || !i_isdigit(msg[3]))
49 tm->tm_year = (msg[0]-'0') * 1000 + (msg[1]-'0') * 100 +
50 (msg[2]-'0') * 10 + (msg[3]-'0') - 1900;
54 int mbox_from_parse(const unsigned char *msg, size_t size,
67 msg_start = msg;
68 msg_end = msg + size;
71 if (msg < msg_end && *msg == '"') {
74 msg++;
75 while (msg < msg_end && (*msg != '"' || esc)) {
76 if (*msg == '\r' || *msg == '\n')
78 esc = *msg == '\\';
79 msg++;
81 msg++;
84 while (msg < msg_end && *msg != ' ') {
85 if (*msg == '\r' || *msg == '\n')
87 msg++;
89 sender_end = msg;
90 while (msg < msg_end && *msg == ' ') msg++;
100 if (msg+29-3-5 > msg_end)
106 msg += 4;
109 if (mbox_parse_month(msg, &tm) < 0) {
112 msg++;
114 if (!i_isdigit(msg[0]))
116 tm.tm_mday = msg[0]-'0';
117 msg++;
119 if (i_isdigit(msg[0])) {
120 tm.tm_mday = tm.tm_mday*10 + msg[0]-'0';
121 msg++;
123 if (msg[0] != ' ')
125 msg++;
127 if (mbox_parse_month(msg, &tm) < 0)
129 msg += 4;
131 if (mbox_parse_year(msg, &tm) < 0)
133 msg += 5;
136 msg += 4;
139 if (msg[0] == ' ')
140 msg++;
141 if (msg[1] == ' ') {
142 if (!i_isdigit(msg[0]))
144 tm.tm_mday = msg[0]-'0';
145 msg += 2;
147 if (!i_isdigit(msg[0]) || !i_isdigit(msg[1]) || msg[2] != ' ')
149 tm.tm_mday = (msg[0]-'0') * 10 + (msg[1]-'0');
150 msg += 3;
157 if (!i_isdigit(msg[0]) || !i_isdigit(msg[1]) || msg[2] != ':')
159 tm.tm_hour = (msg[0]-'0') * 10 + (msg[1]-'0');
160 msg += 3;
163 if (!i_isdigit(msg[0]) || !i_isdigit(msg[1]))
165 tm.tm_min = (msg[0]-'0') * 10 + (msg[1]-'0');
166 msg += 2;
169 if (msg[0] == ':') {
170 msg++;
171 if (!i_isdigit(msg[0]) || !i_isdigit(msg[1]))
173 tm.tm_sec = (msg[0]-'0') * 10 + (msg[1]-'0');
174 msg += 2;
177 if (msg[0] == ' ')
178 msg++;
183 if (msg[0] != ' ')
185 msg++;
191 else if (!i_isdigit(msg[0]) || !i_isdigit(msg[1]) ||
192 !i_isdigit(msg[2]) || !i_isdigit(msg[3])) {
194 while (msg < msg_end && *msg != ' ') {
195 if (*msg == '\r' || *msg == '\n')
197 msg++;
199 if (msg+5 > msg_end)
201 msg++;
202 } else if ((msg[0] == '-' || msg[0] == '+') &&
203 i_isdigit(msg[1]) && i_isdigit(msg[2]) &&
204 i_isdigit(msg[3]) && i_isdigit(msg[4]) && msg[5] == ' ') {
207 timezone_secs = (msg[1]-'0') * 10*60*60 + (msg[2]-'0') * 60*60 +
208 (msg[3]-'0') * 10 + (msg[4]-'0');
209 if (msg[0] == '-') timezone_secs = -timezone_secs;
210 msg += 6;
215 if (mbox_parse_year(msg, &tm) < 0)
217 msg += 4;
221 if (!seen_timezone && msg != msg_end &&
222 msg[0] == ' ' && (msg[1] == '-' || msg[1] == '+') &&
223 i_isdigit(msg[2]) && i_isdigit(msg[3]) &&
224 i_isdigit(msg[4]) && i_isdigit(msg[5])) {
226 timezone_secs = (msg[2]-'0') * 10*60*60 + (msg[3]-'0') * 60*60 +
227 (msg[4]-'0') * 10 + (msg[5]-'0');
228 if (msg[1] == '-') timezone_secs = -timezone_secs;