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 }