1%% options 2 3copyright owner = Dirk Krause 4copyright year = 2015-xxxx 5SPDX-License-Identifier: BSD-3-Clause 6 7 8 9%% module 10 11#include "dk4conf.h" 12#include <libdk4c/dk4opt.h> 13#include <libdk4base/dk4strd.h> 14#include <libdk4base/dk4mem.h> 15#include <libdk4maiodd/dk4maidddu.h> 16 17#if DK4_HAVE_ASSERT_H 18#ifndef ASSERT_H_INCLUDED 19#include <assert.h> 20#define ASSERT_H_INCLUDED 1 21#endif 22#endif 23 24 25$!trace-include 26 27 28 29int 30dk4opt_get_unsigned(dk4_um_t *dptr, dk4_option_t const *optptr, dk4_er_t *erp) 31{ 32 dk4_um_t val = (dk4_um_t)0UL; 33 int back = 0; 34 int res = 0; 35#if DK4_USE_ASSERT 36 assert(NULL != dptr); 37 assert(NULL != optptr); 38#endif 39 if ((NULL != dptr) && (NULL != optptr)) { 40 if (0 != optptr->found) { 41 switch ((optptr->spec).argtype) { 42 case DK4_OPT_ARG_BOOL: { 43 if (0 != (optptr->val).b) { 44 *dptr = (dk4_um_t)1UL; 45 } else { 46 *dptr = (dk4_um_t)0UL; 47 } 48 back = 1; 49 } break; 50 case DK4_OPT_ARG_SIZE: { 51 *dptr = (dk4_um_t)((optptr->val).s); 52 back = 1; 53 } break; 54 case DK4_OPT_ARG_INT: { 55 if (0 <= (optptr->val).i) { 56 *dptr = (dk4_um_t)((optptr->val).i); 57 back = 1; 58 } else { 59 dk4error_set_simple_error_code(erp, DK4_E_MATH_OVERFLOW); 60 } 61 } break; 62 case DK4_OPT_ARG_UNSIGNED: { 63 *dptr = (optptr->val).u; 64 back = 1; 65 } break; 66 case DK4_OPT_ARG_STRING: { 67 if (NULL != (optptr->val).t) { 68 res = dk4ma_input_dk_dec_dk4_um_t( 69 &val, (optptr->val).t, NULL, 1, erp 70 ); 71 if (0 != res) { 72 *dptr = val; 73 back = 1; 74 } 75 } else { 76 dk4error_set_simple_error_code(erp, DK4_E_NOT_FOUND); 77 } 78 } break; 79 default: { 80 dk4error_set_simple_error_code(erp, DK4_E_SYNTAX); 81 } break; 82 } 83 } else { 84 dk4error_set_simple_error_code(erp, DK4_E_NOT_FOUND); 85 } 86 } else { 87 dk4error_set_simple_error_code(erp, DK4_E_INVALID_ARGUMENTS); 88 } 89 return back; 90} 91 92