%% options copyright owner = Dirk Krause copyright year = 2015-xxxx license = bsd %% module #include "dk4opt.h" #include "dk4strd.h" #include "dk4mem.h" #include "dk4maodd.h" #include "dk4mao8dbl.h" #include "dk4maoddbl.h" $!trace-include int dk4opt_get_string( dkChar *dptr, size_t szdptr, dk4_option_t *optptr, dk4_er_t *erp ) { dkChar buf[16 * sizeof(dk4_um_t)]; int back = 0; int res = 0; if ((NULL != dptr) && (0 < szdptr) && (NULL != optptr)) { if (0 != optptr->found) { switch ((optptr->spec).argtype) { case DK4_OPT_ARG_BOOL: { res = dk4ma_write_decimal_signed( buf, DK4_SIZEOF(buf,dkChar), (dk4_im_t)((optptr->val).b), 0, erp ); if (0 != res) { back = dk4str_cpy_s(dptr, szdptr, buf, NULL); } } break; case DK4_OPT_ARG_SIZE: { res = dk4ma_write_decimal_unsigned( buf, DK4_SIZEOF(buf,dkChar), (dk4_um_t)((optptr->val).s), 0, erp ); if (0 != res) { back = dk4str_cpy_s(dptr, szdptr, buf, NULL); } } break; case DK4_OPT_ARG_INT: { res = dk4ma_write_decimal_signed( buf, DK4_SIZEOF(buf,dkChar), (optptr->val).i, 0, erp ); if (0 != res) { back = dk4str_cpy_s(dptr, szdptr, buf, NULL); } } break; case DK4_OPT_ARG_UNSIGNED: { res = dk4ma_write_decimal_unsigned( buf, DK4_SIZEOF(buf,dkChar), (optptr->val).u, 0, erp ); if (0 != res) { back = dk4str_cpy_s(dptr, szdptr, buf, NULL); } } break; case DK4_OPT_ARG_DOUBLE: { #if DK4_USE_PRINTF_SCANF && (!(DK4_ON_WINDOWS && DK4_WIN_DENY_CRT)) back = dk4ma_write_double(dptr,szdptr,(optptr->val).d,0,0,erp); #else dk4error_set_simple_error_code(erp, DK4_E_NOT_SUPPORTED); #endif } break; case DK4_OPT_ARG_STRING: { if (NULL != (optptr->val).t) { back = dk4str_cpy_s(dptr, szdptr, (optptr->val).t, erp); } else { dk4error_set_simple_error_code(erp, DK4_E_NOT_FOUND); } } break; default: { dk4error_set_simple_error_code(erp, DK4_E_SYNTAX); } break; } } else { dk4error_set_simple_error_code(erp, DK4_E_NOT_FOUND); } } else { dk4error_set_simple_error_code(erp, DK4_E_INVALID_ARGUMENTS); } return back; }