diff options
author | Lorry Tar Creator <lorry-tar-importer@lorry> | 2021-10-20 23:22:45 +0000 |
---|---|---|
committer | Lorry Tar Creator <lorry-tar-importer@lorry> | 2021-10-20 23:22:45 +0000 |
commit | 332fa27640b1901ac632e6d37a4aa9643d0f8594 (patch) | |
tree | bfb5303e24d1cd4ddd22df12f45a013fefb9ca23 /form/fty_num.c | |
parent | ff448436b2b70771d09b8d5ff34a509dcf02f81b (diff) | |
download | ncurses-332fa27640b1901ac632e6d37a4aa9643d0f8594.tar.gz |
ncurses-6.3HEADncurses-6.3master
Diffstat (limited to 'form/fty_num.c')
-rw-r--r-- | form/fty_num.c | 33 |
1 files changed, 18 insertions, 15 deletions
diff --git a/form/fty_num.c b/form/fty_num.c index b4dfeb9..34cef63 100644 --- a/form/fty_num.c +++ b/form/fty_num.c @@ -1,5 +1,5 @@ /**************************************************************************** - * Copyright 2019,2020 Thomas E. Dickey * + * Copyright 2019-2020,2021 Thomas E. Dickey * * Copyright 1998-2010,2012 Free Software Foundation, Inc. * * * * Permission is hereby granted, free of charge, to any person obtaining a * @@ -35,7 +35,7 @@ #include "form.priv.h" -MODULE_ID("$Id: fty_num.c,v 1.32 2020/02/02 23:34:34 tom Exp $") +MODULE_ID("$Id: fty_num.c,v 1.37 2021/03/27 23:49:58 tom Exp $") #if HAVE_LOCALE_H #include <locale.h> @@ -83,8 +83,8 @@ thisPARM; static void * Generic_This_Type(void *arg) { - thisARG *argn = (thisARG *) 0; - thisPARM *args = (thisPARM *) arg; + thisARG *argn = (thisARG *)0; + thisPARM *args = (thisPARM *)arg; if (args) { @@ -139,11 +139,12 @@ static void * Copy_This_Type(const void *argp) { const thisARG *ap = (const thisARG *)argp; - thisARG *result = (thisARG *) 0; + thisARG *result = (thisARG *)0; if (argp) { result = typeMalloc(thisARG, 1); + if (result) { T((T_CREATE("thisARG %p"), (void *)result)); @@ -187,12 +188,10 @@ Check_This_Field(FIELD *field, const void *argp) int prec = argn->precision; unsigned char *bp = (unsigned char *)field_buffer(field, 0); char *s = (char *)bp; - double val = 0.0; struct lconv *L = argn->L; - char buf[64]; bool result = FALSE; - while (*bp && *bp == ' ') + while (*bp == ' ') bp++; if (*bp) { @@ -201,14 +200,15 @@ Check_This_Field(FIELD *field, const void *argp) #if USE_WIDEC_SUPPORT if (*bp) { - bool blank = FALSE; - int state = 0; int len; - int n; wchar_t *list = _nc_Widen_String((char *)bp, &len); if (list != 0) { + bool blank = FALSE; + int state = 0; + int n; + result = TRUE; for (n = 0; n < len; ++n) { @@ -264,7 +264,8 @@ Check_This_Field(FIELD *field, const void *argp) #endif if (result) { - val = atof(s); + double val = atof(s); + if (low < high) { if (val < low || val > high) @@ -272,6 +273,8 @@ Check_This_Field(FIELD *field, const void *argp) } if (result) { + char buf[64]; + _nc_SPRINTF(buf, _nc_SLIMIT(sizeof(buf)) "%.*f", (prec > 0 ? prec : 0), val); set_field_buffer(field, 0, buf); @@ -324,14 +327,14 @@ static FIELDTYPE typeTHIS = #endif }; -NCURSES_EXPORT_VAR(FIELDTYPE*) TYPE_NUMERIC = &typeTHIS; +FORM_EXPORT_VAR(FIELDTYPE *) TYPE_NUMERIC = &typeTHIS; #if NCURSES_INTEROP_FUNCS /* The next routines are to simplify the use of ncurses from - programming languages with restictions on interop with C level + programming languages with restrictions on interop with C level constructs (e.g. variable access or va_list + ellipsis constructs) */ -NCURSES_EXPORT(FIELDTYPE *) +FORM_EXPORT(FIELDTYPE *) _nc_TYPE_NUMERIC(void) { return TYPE_NUMERIC; |