Mercurial > masqmail
comparison src/parse.c @ 273:00724782b6c9
parse.c: comments, better debugging, tiny refactoring
author | markus schnalke <meillo@marmaro.de> |
---|---|
date | Fri, 03 Dec 2010 19:25:43 -0300 |
parents | 899175e8dff0 |
children | 89199eda6144 |
comparison
equal
deleted
inserted
replaced
272:681863fdafbb | 273:00724782b6c9 |
---|---|
144 | 144 |
145 *local_begin = *local_end = NULL; | 145 *local_begin = *local_end = NULL; |
146 *domain_begin = *domain_end = NULL; | 146 *domain_begin = *domain_end = NULL; |
147 | 147 |
148 /* might be some memory left from previous call: */ | 148 /* might be some memory left from previous call: */ |
149 if (parse_error != NULL) { | 149 if (parse_error) { |
150 g_free(parse_error); | 150 g_free(parse_error); |
151 parse_error = NULL; | 151 parse_error = NULL; |
152 } | 152 } |
153 | 153 |
154 /* leading spaces and angle brackets */ | 154 /* leading spaces and angle brackets */ |
248 *domain_begin = *domain_end = NULL; | 248 *domain_begin = *domain_end = NULL; |
249 break; | 249 break; |
250 | 250 |
251 } else if (strchr(specials, *p) || iscntrl(*p) || isspace(*p)) { | 251 } else if (strchr(specials, *p) || iscntrl(*p) || isspace(*p)) { |
252 parse_error = g_strdup_printf("unexpected character: %c", *p); | 252 parse_error = g_strdup_printf("unexpected character: %c", *p); |
253 #ifdef PARSE_TEST | |
254 g_print("unexpected character: %c", *p); | |
255 #endif | |
253 return FALSE; | 256 return FALSE; |
254 } | 257 } |
255 } | 258 } |
256 | 259 |
257 /* trailing spaces and angle brackets */ | 260 /* trailing spaces and angle brackets */ |
380 gchar *loc_beg, *loc_end; | 383 gchar *loc_beg, *loc_end; |
381 gchar *dom_beg, *dom_end; | 384 gchar *dom_beg, *dom_end; |
382 gchar *addr_end; | 385 gchar *addr_end; |
383 gboolean ret; | 386 gboolean ret; |
384 | 387 |
388 /* TODO: what about (string == NULL)? */ | |
385 if (string && (string[0] == '\0')) { | 389 if (string && (string[0] == '\0')) { |
386 address *addr = g_malloc(sizeof(address)); | 390 address *addr = g_malloc(sizeof(address)); |
387 addr->address = g_strdup(""); | 391 addr->address = g_strdup(""); |
388 addr->local_part = g_strdup(""); | 392 addr->local_part = g_strdup(""); |
389 /* 'NULL' address (failure notice), | 393 /* 'NULL' address (failure notice), |
421 g_print("addr->local_part = %s\n", addr->local_part); | 425 g_print("addr->local_part = %s\n", addr->local_part); |
422 #endif | 426 #endif |
423 | 427 |
424 if (dom_beg != NULL) { | 428 if (dom_beg != NULL) { |
425 addr->domain = g_strndup(dom_beg, dom_end - dom_beg); | 429 addr->domain = g_strndup(dom_beg, dom_end - dom_beg); |
426 } else if (addr->local_part[0] == 0) { | 430 } else if (addr->local_part[0] == '\0') { |
427 /* 'NULL' address (failure notice), | 431 /* 'NULL' address (failure notice), |
428 "" makes sure it will not be qualified with a hostname */ | 432 "" makes sure it will not be qualified with a hostname */ |
429 addr->domain = g_strdup(""); | 433 addr->domain = g_strdup(""); |
430 } else { | 434 } else { |
431 addr->domain = NULL; | 435 addr->domain = NULL; |
432 } | 436 } |
433 | 437 |
434 if (end != NULL) { | 438 if (end) { |
435 *end = p; | 439 *end = p; |
436 } | 440 } |
437 | 441 |
438 #ifndef PARSE_TEST | 442 #ifndef PARSE_TEST |
439 addr_unmark_delivered(addr); | 443 addr_unmark_delivered(addr); |
459 { | 463 { |
460 gchar *p = string; | 464 gchar *p = string; |
461 gchar *end; | 465 gchar *end; |
462 | 466 |
463 while (*p) { | 467 while (*p) { |
468 #ifdef PARSE_TEST | |
469 g_print("string: %s\n", p); | |
470 #endif | |
471 | |
464 address *addr = _create_address(p, &end, FALSE); | 472 address *addr = _create_address(p, &end, FALSE); |
465 fprintf(stderr, "string: %s\n", p); | |
466 | |
467 if (!addr) { | 473 if (!addr) { |
468 break; | 474 break; |
469 } | 475 } |
470 | 476 |
471 fprintf(stderr, " addr: %s (%s<@>%s)\n", addr->address, addr->local_part, addr->domain); | 477 #ifdef PARSE_TEST |
478 g_print("addr: %s (%s<@>%s)", addr->address, addr->local_part, addr->domain); | |
479 #endif | |
472 if (domain && !addr->domain) { | 480 if (domain && !addr->domain) { |
473 addr->domain = g_strdup(domain); | 481 addr->domain = g_strdup(domain); |
474 } | 482 } |
475 fprintf(stderr, " %s (%s<@>%s)\n", addr->address, addr->local_part, addr->domain); | 483 #ifdef PARSE_TEST |
484 g_print(" (%s<@>%s)\n", addr->local_part, addr->domain); | |
485 #endif | |
476 | 486 |
477 addr_list = g_list_append(addr_list, addr); | 487 addr_list = g_list_append(addr_list, addr); |
478 p = end; | 488 p = end; |
479 | 489 |
480 while (*p == ',' || isspace(*p)) { | 490 while (*p == ',' || isspace(*p)) { |