FreeCalypso > hg > themwi-system-sw
comparison utils/themwi-update-numdb2.c @ 231:abb3f415b9dd
themwi-update-numdb2: check secondary numbers
author | Mychaela Falconia <falcon@freecalypso.org> |
---|---|
date | Mon, 14 Aug 2023 11:45:41 -0800 |
parents | 803829e6244f |
children |
comparison
equal
deleted
inserted
replaced
230:803829e6244f | 231:abb3f415b9dd |
---|---|
444 } | 444 } |
445 } | 445 } |
446 } | 446 } |
447 | 447 |
448 static void | 448 static void |
449 check_secondnum_mapto(src) | |
450 struct owned_number_rec *src; | |
451 { | |
452 struct owned_number_rec *dest; | |
453 | |
454 dest = bsearch(src->remap, owned_number_buf, owned_number_count, | |
455 sizeof(struct owned_number_rec), compare_owned_num); | |
456 if (!dest) { | |
457 fprintf(stderr, | |
458 "error: NANP %03u-%03u-%04u map-to target is not in the database\n", | |
459 src->number[0], src->number[1], src->number[2]); | |
460 exit(1); | |
461 } | |
462 if ((dest->usage & NUMBER_USAGE_MASK) != NUMBER_USAGE_TYPE_GSM_SUB) { | |
463 fprintf(stderr, | |
464 "error: NANP %03u-%03u-%04u map-to target is not a gsm-sub number\n", | |
465 src->number[0], src->number[1], src->number[2]); | |
466 exit(1); | |
467 } | |
468 } | |
469 | |
470 static void | |
471 check_secondnum_e911via(src) | |
472 struct owned_number_rec *src; | |
473 { | |
474 struct owned_number_rec *dest; | |
475 | |
476 dest = bsearch(src->remap, owned_number_buf, owned_number_count, | |
477 sizeof(struct owned_number_rec), compare_owned_num); | |
478 if (!dest) { | |
479 fprintf(stderr, | |
480 "error: NANP %03u-%03u-%04u e911-via target is not in the database\n", | |
481 src->number[0], src->number[1], src->number[2]); | |
482 exit(1); | |
483 } | |
484 if (!(dest->number_flags & NUMBER_FLAG_E911PROV)) { | |
485 fprintf(stderr, | |
486 "error: NANP %03u-%03u-%04u e911-via target is not an E911 number\n", | |
487 src->number[0], src->number[1], src->number[2]); | |
488 exit(1); | |
489 } | |
490 } | |
491 | |
492 static void | |
493 check_secondary_numbers() | |
494 { | |
495 struct owned_number_rec *p, *endp; | |
496 | |
497 endp = owned_number_buf + owned_number_count; | |
498 for (p = owned_number_buf; p < endp; p++) { | |
499 if ((p->usage & NUMBER_USAGE_MASK) == NUMBER_USAGE_TYPE_ALIAS) | |
500 check_secondnum_mapto(p); | |
501 if (p->usage & NUMBER_USAGE_FLAG_E911_VIA) | |
502 check_secondnum_e911via(p); | |
503 } | |
504 } | |
505 | |
506 static void | |
449 emit_output() | 507 emit_output() |
450 { | 508 { |
451 FILE *outf; | 509 FILE *outf; |
452 struct numdb_file_hdr hdr; | 510 struct numdb_file_hdr hdr; |
453 | 511 |
497 if (owned_number_count >= 2) { | 555 if (owned_number_count >= 2) { |
498 qsort(owned_number_buf, owned_number_count, | 556 qsort(owned_number_buf, owned_number_count, |
499 sizeof(owned_number_buf[0]), compare_owned_num); | 557 sizeof(owned_number_buf[0]), compare_owned_num); |
500 owned_num_check_dup(); | 558 owned_num_check_dup(); |
501 } | 559 } |
560 check_secondary_numbers(); | |
502 if (short_number_count >= 2) { | 561 if (short_number_count >= 2) { |
503 qsort(short_number_buf, short_number_count, | 562 qsort(short_number_buf, short_number_count, |
504 sizeof(short_number_buf[0]), compare_short_num); | 563 sizeof(short_number_buf[0]), compare_short_num); |
505 short_num_check_dup(); | 564 short_num_check_dup(); |
506 } | 565 } |