diff options
| author | David M. Syzdek <david@syzdek.net> | 2022-06-01 20:43:10 -0800 |
|---|---|---|
| committer | David M. Syzdek <david@syzdek.net> | 2022-06-01 20:43:10 -0800 |
| commit | d163e24d2e96c4ea1c966aa494a98191b0b2495f (patch) | |
| tree | 6827ea290b062a26ed992d58904c702cf56be1ad | |
| parent | dde0997af66930be19c0815bc3c78b3bb851e55f (diff) | |
| download | tinytac-d163e24d2e96c4ea1c966aa494a98191b0b2495f.tar.gz tinytac-d163e24d2e96c4ea1c966aa494a98191b0b2495f.tar.bz2 tinytac-d163e24d2e96c4ea1c966aa494a98191b0b2495f.tar.xz tinytac-d163e24d2e96c4ea1c966aa494a98191b0b2495f.zip | |
libtinytac: replacing bindle_map_t with tinytac_opt_t in lconf.c
| -rw-r--r-- | lib/libtinytac/lconf.c | 103 |
1 files changed, 67 insertions, 36 deletions
diff --git a/lib/libtinytac/lconf.c b/lib/libtinytac/lconf.c index b7c1c68..de913e2 100644 --- a/lib/libtinytac/lconf.c +++ b/lib/libtinytac/lconf.c | |||
| @@ -64,6 +64,20 @@ | |||
| 64 | #endif | 64 | #endif |
| 65 | 65 | ||
| 66 | 66 | ||
| 67 | ////////////////// | ||
| 68 | // // | ||
| 69 | // Data Types // | ||
| 70 | // // | ||
| 71 | ////////////////// | ||
| 72 | #pragma mark - Data Types | ||
| 73 | |||
| 74 | typedef struct _tinytac_opt | ||
| 75 | { | ||
| 76 | const char * opt_name; | ||
| 77 | uintptr_t opt_id; | ||
| 78 | } tinytac_opt_t; | ||
| 79 | |||
| 80 | |||
| 67 | ///////////////// | 81 | ///////////////// |
| 68 | // // | 82 | // // |
| 69 | // Variables // | 83 | // Variables // |
| @@ -76,24 +90,24 @@ static atomic_int tinytac_conf_init; | |||
| 76 | 90 | ||
| 77 | 91 | ||
| 78 | #pragma mark tinytac_conf_options[] | 92 | #pragma mark tinytac_conf_options[] |
| 79 | static bindle_map_t tinytac_conf_options[] = | 93 | static tinytac_opt_t tinytac_conf_options[] = |
| 80 | { | 94 | { |
| 81 | { .map_name = "AUTHEN_ASCII", .map_value = TTAC_OPT_AUTHEN_ASCII }, | 95 | { .opt_name = "AUTHEN_ASCII", .opt_id = TTAC_OPT_AUTHEN_ASCII }, |
| 82 | { .map_name = "AUTHEN_CHAP", .map_value = TTAC_OPT_AUTHEN_CHAP }, | 96 | { .opt_name = "AUTHEN_CHAP", .opt_id = TTAC_OPT_AUTHEN_CHAP }, |
| 83 | { .map_name = "AUTHEN_MSCHAP", .map_value = TTAC_OPT_AUTHEN_MSCHAP }, | 97 | { .opt_name = "AUTHEN_MSCHAP", .opt_id = TTAC_OPT_AUTHEN_MSCHAP }, |
| 84 | { .map_name = "AUTHEN_MSCHAPV2", .map_value = TTAC_OPT_AUTHEN_MSCHAPV2 }, | 98 | { .opt_name = "AUTHEN_MSCHAPV2", .opt_id = TTAC_OPT_AUTHEN_MSCHAPV2 }, |
| 85 | { .map_name = "AUTHEN_PAP", .map_value = TTAC_OPT_AUTHEN_PAP }, | 99 | { .opt_name = "AUTHEN_PAP", .opt_id = TTAC_OPT_AUTHEN_PAP }, |
| 86 | { .map_name = "DEBUG_LEVEL", .map_value = TTAC_OPT_DEBUG_LEVEL }, | 100 | { .opt_name = "DEBUG_LEVEL", .opt_id = TTAC_OPT_DEBUG_LEVEL }, |
| 87 | { .map_name = "DEBUG_SYSLOG", .map_value = TTAC_OPT_DEBUG_SYSLOG }, | 101 | { .opt_name = "DEBUG_SYSLOG", .opt_id = TTAC_OPT_DEBUG_SYSLOG }, |
| 88 | { .map_name = "HOST", .map_value = TTAC_OPT_HOSTS }, | 102 | { .opt_name = "HOST", .opt_id = TTAC_OPT_HOSTS }, |
| 89 | { .map_name = "IPV4", .map_value = TTAC_OPT_IPV4 }, | 103 | { .opt_name = "IPV4", .opt_id = TTAC_OPT_IPV4 }, |
| 90 | { .map_name = "IPV6", .map_value = TTAC_OPT_IPV6 }, | 104 | { .opt_name = "IPV6", .opt_id = TTAC_OPT_IPV6 }, |
| 91 | { .map_name = "KEY", .map_value = TTAC_OPT_KEY }, | 105 | { .opt_name = "KEY", .opt_id = TTAC_OPT_KEY }, |
| 92 | { .map_name = "NETWORK_TIMEOUT", .map_value = TTAC_OPT_NETWORK_TIMEOUT }, | 106 | { .opt_name = "NETWORK_TIMEOUT", .opt_id = TTAC_OPT_NETWORK_TIMEOUT }, |
| 93 | { .map_name = "RANDOM", .map_value = TTAC_OPT_RANDOM }, | 107 | { .opt_name = "RANDOM", .opt_id = TTAC_OPT_RANDOM }, |
| 94 | { .map_name = "STOPINIT", .map_value = TTAC_OPT_STOPINIT }, | 108 | { .opt_name = "STOPINIT", .opt_id = TTAC_OPT_STOPINIT }, |
| 95 | { .map_name = "TIMEOUT", .map_value = TTAC_OPT_TIMEOUT }, | 109 | { .opt_name = "TIMEOUT", .opt_id = TTAC_OPT_TIMEOUT }, |
| 96 | { .map_name = NULL, .map_value = 0 } | 110 | { .opt_name = NULL, .opt_id = 0 } |
| 97 | }; | 111 | }; |
| 98 | 112 | ||
| 99 | 113 | ||
| @@ -116,28 +130,33 @@ tinytac_conf_file( | |||
| 116 | 130 | ||
| 117 | static int | 131 | static int |
| 118 | tinytac_conf_opt( | 132 | tinytac_conf_opt( |
| 119 | const bindle_map_t * opt, | 133 | const tinytac_opt_t * opt, |
| 120 | const char * value ); | 134 | const char * value ); |
| 121 | 135 | ||
| 122 | 136 | ||
| 123 | static int | 137 | static int |
| 124 | tinytac_conf_opt_flag( | 138 | tinytac_conf_opt_flag( |
| 125 | const bindle_map_t * opt, | 139 | const tinytac_opt_t * opt, |
| 126 | const char * value ); | 140 | const char * value ); |
| 127 | 141 | ||
| 128 | 142 | ||
| 129 | static int | 143 | static int |
| 130 | tinytac_conf_opt_int( | 144 | tinytac_conf_opt_int( |
| 131 | const bindle_map_t * opt, | 145 | const tinytac_opt_t * opt, |
| 132 | const char * value ); | 146 | const char * value ); |
| 133 | 147 | ||
| 134 | 148 | ||
| 135 | static int | 149 | static int |
| 136 | tinytac_conf_opt_timeval( | 150 | tinytac_conf_opt_timeval( |
| 137 | const bindle_map_t * opt, | 151 | const tinytac_opt_t * opt, |
| 138 | const char * value ); | 152 | const char * value ); |
| 139 | 153 | ||
| 140 | 154 | ||
| 155 | static tinytac_opt_t * | ||
| 156 | tinytac_opt_lookup_name( | ||
| 157 | const char * name ); | ||
| 158 | |||
| 159 | |||
| 141 | ///////////////// | 160 | ///////////////// |
| 142 | // // | 161 | // // |
| 143 | // Functions // | 162 | // Functions // |
| @@ -243,17 +262,17 @@ tinytac_conf_environment( | |||
| 243 | size_t pos; | 262 | size_t pos; |
| 244 | char * value; | 263 | char * value; |
| 245 | char varname[64]; | 264 | char varname[64]; |
| 246 | bindle_map_t * opt; | 265 | tinytac_opt_t * opt; |
| 247 | 266 | ||
| 248 | TinyTacDebugTrace(); | 267 | TinyTacDebugTrace(); |
| 249 | 268 | ||
| 250 | for(pos = 0; ((tinytac_conf_options[pos].map_name)); pos++) | 269 | for(pos = 0; ((tinytac_conf_options[pos].opt_name)); pos++) |
| 251 | { | 270 | { |
| 252 | opt = &tinytac_conf_options[pos]; | 271 | opt = &tinytac_conf_options[pos]; |
| 253 | if (opt->map_value == TTAC_OPT_STOPINIT) | 272 | if (opt->opt_id == TTAC_OPT_STOPINIT) |
| 254 | continue; | 273 | continue; |
| 255 | tinytacb_strlcpy(varname, "TINYTAC_", sizeof(varname)); | 274 | tinytacb_strlcpy(varname, "TINYTAC_", sizeof(varname)); |
| 256 | tinytacb_strlcat(varname, opt->map_name, sizeof(varname)); | 275 | tinytacb_strlcat(varname, opt->opt_name, sizeof(varname)); |
| 257 | if ((value = getenv(varname)) != NULL) | 276 | if ((value = getenv(varname)) != NULL) |
| 258 | tinytac_conf_opt(opt, value); | 277 | tinytac_conf_opt(opt, value); |
| 259 | }; | 278 | }; |
| @@ -277,7 +296,7 @@ tinytac_conf_file( | |||
| 277 | char value[TTAC_LINE_MAX_LEN]; | 296 | char value[TTAC_LINE_MAX_LEN]; |
| 278 | char ** argv; | 297 | char ** argv; |
| 279 | const char * val; | 298 | const char * val; |
| 280 | const bindle_map_t * opt; | 299 | const tinytac_opt_t * opt; |
| 281 | 300 | ||
| 282 | TinyTacDebugTrace(); | 301 | TinyTacDebugTrace(); |
| 283 | 302 | ||
| @@ -308,7 +327,7 @@ tinytac_conf_file( | |||
| 308 | tinytacb_strsfree(argv); | 327 | tinytacb_strsfree(argv); |
| 309 | continue; | 328 | continue; |
| 310 | }; | 329 | }; |
| 311 | if (tinytacb_map_lookup_name(tinytac_conf_options, argv[0], &opt) == 0) | 330 | if ((opt = tinytac_opt_lookup_name(argv[0])) == NULL) |
| 312 | { | 331 | { |
| 313 | tinytacb_strsfree(argv); | 332 | tinytacb_strsfree(argv); |
| 314 | continue; | 333 | continue; |
| @@ -331,14 +350,14 @@ tinytac_conf_file( | |||
| 331 | 350 | ||
| 332 | int | 351 | int |
| 333 | tinytac_conf_opt( | 352 | tinytac_conf_opt( |
| 334 | const bindle_map_t * opt, | 353 | const tinytac_opt_t * opt, |
| 335 | const char * value ) | 354 | const char * value ) |
| 336 | { | 355 | { |
| 337 | int ival; | 356 | int ival; |
| 338 | 357 | ||
| 339 | TinyTacDebugTrace(); | 358 | TinyTacDebugTrace(); |
| 340 | 359 | ||
| 341 | switch(opt->map_value) | 360 | switch(opt->opt_id) |
| 342 | { | 361 | { |
| 343 | case TTAC_OPT_AUTHEN_ASCII: | 362 | case TTAC_OPT_AUTHEN_ASCII: |
| 344 | TinyTacDebug(TTAC_DEBUG_ARGS, " == %s( TTAC_OPT_AUTHEN_ASCII, \"%s\" )", __func__, (((value)) ? value : "(null)")); | 363 | TinyTacDebug(TTAC_DEBUG_ARGS, " == %s( TTAC_OPT_AUTHEN_ASCII, \"%s\" )", __func__, (((value)) ? value : "(null)")); |
| @@ -419,7 +438,7 @@ tinytac_conf_opt( | |||
| 419 | 438 | ||
| 420 | int | 439 | int |
| 421 | tinytac_conf_opt_flag( | 440 | tinytac_conf_opt_flag( |
| 422 | const bindle_map_t * opt, | 441 | const tinytac_opt_t * opt, |
| 423 | const char * value ) | 442 | const char * value ) |
| 424 | { | 443 | { |
| 425 | int i; | 444 | int i; |
| @@ -428,8 +447,8 @@ tinytac_conf_opt_flag( | |||
| 428 | 447 | ||
| 429 | switch(i = ((value)) ? tinytacb_strtobool(value) : TTAC_YES) | 448 | switch(i = ((value)) ? tinytacb_strtobool(value) : TTAC_YES) |
| 430 | { | 449 | { |
| 431 | case TTAC_NO: return(tinytac_set_option(NULL, (int)opt->map_value, &i)); | 450 | case TTAC_NO: return(tinytac_set_option(NULL, (int)opt->opt_id, &i)); |
| 432 | case TTAC_YES: return(tinytac_set_option(NULL, (int)opt->map_value, &i)); | 451 | case TTAC_YES: return(tinytac_set_option(NULL, (int)opt->opt_id, &i)); |
| 433 | default: break; | 452 | default: break; |
| 434 | }; | 453 | }; |
| 435 | 454 | ||
| @@ -439,7 +458,7 @@ tinytac_conf_opt_flag( | |||
| 439 | 458 | ||
| 440 | int | 459 | int |
| 441 | tinytac_conf_opt_int( | 460 | tinytac_conf_opt_int( |
| 442 | const bindle_map_t * opt, | 461 | const tinytac_opt_t * opt, |
| 443 | const char * value ) | 462 | const char * value ) |
| 444 | { | 463 | { |
| 445 | int i; | 464 | int i; |
| @@ -452,13 +471,13 @@ tinytac_conf_opt_int( | |||
| 452 | if ((endptr[0])) | 471 | if ((endptr[0])) |
| 453 | return(TTAC_SUCCESS); | 472 | return(TTAC_SUCCESS); |
| 454 | 473 | ||
| 455 | return(tinytac_set_option(NULL, (int)opt->map_value, &i)); | 474 | return(tinytac_set_option(NULL, (int)opt->opt_id, &i)); |
| 456 | } | 475 | } |
| 457 | 476 | ||
| 458 | 477 | ||
| 459 | int | 478 | int |
| 460 | tinytac_conf_opt_timeval( | 479 | tinytac_conf_opt_timeval( |
| 461 | const bindle_map_t * opt, | 480 | const tinytac_opt_t * opt, |
| 462 | const char * value ) | 481 | const char * value ) |
| 463 | { | 482 | { |
| 464 | char * endptr; | 483 | char * endptr; |
| @@ -472,9 +491,21 @@ tinytac_conf_opt_timeval( | |||
| 472 | if ((endptr[0])) | 491 | if ((endptr[0])) |
| 473 | return(TTAC_SUCCESS); | 492 | return(TTAC_SUCCESS); |
| 474 | 493 | ||
| 475 | return(tinytac_set_option(NULL, (int)opt->map_value, &tv)); | 494 | return(tinytac_set_option(NULL, (int)opt->opt_id, &tv)); |
| 476 | } | 495 | } |
| 477 | 496 | ||
| 478 | 497 | ||
| 498 | tinytac_opt_t * | ||
| 499 | tinytac_opt_lookup_name( | ||
| 500 | const char * name ) | ||
| 501 | { | ||
| 502 | size_t pos; | ||
| 503 | if (!(name)) | ||
| 504 | return(NULL); | ||
| 505 | for(pos = 0; ((tinytac_conf_options[pos].opt_name)); pos++) | ||
| 506 | if (!(strcasecmp(tinytac_conf_options[pos].opt_name, name))) | ||
| 507 | return(&tinytac_conf_options[pos]); | ||
| 508 | return(NULL); | ||
| 509 | } | ||
| 479 | 510 | ||
| 480 | /* end of source */ | 511 | /* end of source */ |
