Path: blob/main/crypto/krb5/src/util/et/t_com_err.c
34907 views
/* -*- mode: c; c-basic-offset: 4; indent-tabs-mode: nil -*- */1#include <stdio.h>2#include <string.h>3#include <stdlib.h>4#include "com_err.h"5#include "et1.h"6#include "et2.h"78int misc_err, known_err; /* known_err is err in whether or not9table is 'known' to library */10int fail;1112static void13try_one (errcode_t code, int known, int table, int msgno)14{15const char *msg = error_message (code);16char buffy[1024];1718snprintf (buffy, sizeof(buffy), "error table %d message %d", table, msgno);19if (0 == strcmp (buffy, msg)) {20if (!known) {21known_err++;22}23return;24}25snprintf (buffy, sizeof(buffy), "Unknown code et%d %d", table, msgno);26if (!strcmp (buffy, msg)) {27if (known)28known_err++;29return;30}31printf ("error code %ld got unrecognized message '%s',\n"32"should have been table %d message %d\n",33(long) code, msg, table, msgno);34misc_err++;35}3637static void38try_table (int table, int known, int lineno,39errcode_t c0, errcode_t c1, errcode_t c2)40{41try_one (c0, known, table, 0);42try_one (c1, known, table, 1);43try_one (c2, known, table, 2);44if (misc_err != 0 || known_err != 0) {45fail++;46if (known_err)47printf ("table list error from line %d, table %d\n", lineno,48table);49if (misc_err)50printf ("misc errors from line %d table %d\n", lineno, table);51misc_err = known_err = 0;52}53}5455static void56try_em_1 (int t1_known, int t2_known, int lineno)57{58try_table (1, t1_known, lineno, ET1_M0, ET1_M1, ET1_M2);59try_table (2, t2_known, lineno, ET2_M0, ET2_M1, ET2_M2);60}61#define try_em(A,B) try_em_1(A,B,__LINE__)6263static void *run(/*@unused@*/ void *x)64{65try_em (0, 0);66(void) add_error_table (&et_et1_error_table);67try_em (1, 0);68(void) add_error_table (&et_et2_error_table);69try_em (1, 1);70(void) remove_error_table (&et_et1_error_table);71try_em (0, 1);72(void) remove_error_table (&et_et1_error_table);73try_em (0, 1);74(void) remove_error_table (&et_et2_error_table);75try_em (0, 0);7677initialize_et1_error_table ();78try_em (1, 0);79(void) add_error_table (&et_et1_error_table);80try_em (1, 0);81(void) remove_error_table (&et_et1_error_table);82try_em (1, 0);83(void) remove_error_table (&et_et1_error_table);84try_em (0, 0);8586initialize_et1_error_table ();87try_em (1, 0);88(void) add_error_table (&et_et1_error_table);89try_em (1, 0);90(void) add_error_table (&et_et2_error_table);91try_em (1, 1);92(void) remove_error_table (&et_et1_error_table);93try_em (1, 1);94(void) remove_error_table (&et_et1_error_table);95try_em (0, 1);96(void) remove_error_table (&et_et2_error_table);97try_em (0, 0);98(void) remove_error_table (&et_et2_error_table);99try_em (0, 0);100101(void) add_error_table (&et_et2_error_table);102try_em (0, 1);103initialize_et2_error_table ();104try_em (0, 1);105(void) add_error_table (&et_et1_error_table);106try_em (1, 1);107(void) remove_error_table (&et_et1_error_table);108try_em (0, 1);109(void) remove_error_table (&et_et2_error_table);110try_em (0, 1);111(void) remove_error_table (&et_et2_error_table);112try_em (0, 0);113114return 0;115}116117#ifdef TEST_THREADS118#include <pthread.h>119#endif120121int main (/*@unused@*/ int argc, /*@unused@*/ char *argv[])122{123#ifdef TEST_THREADS124pthread_t t;125int err;126void *t_retval;127128err = pthread_create(&t, 0, run, 0);129if (err) {130fprintf(stderr, "pthread_create error: %s\n", strerror(err));131exit(1);132}133err = pthread_join(t, &t_retval);134if (err) {135fprintf(stderr, "pthread_join error: %s\n", strerror(err));136exit(1);137}138return fail;139#else140run(0);141return fail;142#endif143}144145146