X-Git-Url: https://ncurses.scripts.mit.edu/?p=ncurses.git;a=blobdiff_plain;f=form%2Ffty_ipv4.c;h=8dc04f8c5345ecf864669e12160034c8714fa514;hp=064c02c8fa78a4458363e592aa744ff3a99dcab9;hb=4496a3f032d219fc5f622e9d82b0cd749e36fa0e;hpb=3a9b6a3bf0269231bef7de74757a910dedd04e0c diff --git a/form/fty_ipv4.c b/form/fty_ipv4.c index 064c02c8..8dc04f8c 100644 --- a/form/fty_ipv4.c +++ b/form/fty_ipv4.c @@ -1,10 +1,31 @@ +/**************************************************************************** + * Copyright (c) 1998-2006,2009 Free Software Foundation, Inc. * + * * + * Permission is hereby granted, free of charge, to any person obtaining a * + * copy of this software and associated documentation files (the * + * "Software"), to deal in the Software without restriction, including * + * without limitation the rights to use, copy, modify, merge, publish, * + * distribute, distribute with modifications, sublicense, and/or sell * + * copies of the Software, and to permit persons to whom the Software is * + * furnished to do so, subject to the following conditions: * + * * + * The above copyright notice and this permission notice shall be included * + * in all copies or substantial portions of the Software. * + * * + * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS * + * OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF * + * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. * + * IN NO EVENT SHALL THE ABOVE COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, * + * DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR * + * OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR * + * THE USE OR OTHER DEALINGS IN THE SOFTWARE. * + * * + * Except as contained in this notice, the name(s) of the above copyright * + * holders shall not be used in advertising or otherwise to promote the * + * sale, use or other dealings in this Software without prior written * + * authorization. * + ****************************************************************************/ -/* - * THIS CODE IS SPECIFICALLY EXEMPTED FROM THE NCURSES PACKAGE COPYRIGHT. - * You may freely copy it for use as a template for your own field types. - * If you develop a field type that might be of general use, please send - * it back to the ncurses maintainers for inclusion in the next version. - */ /*************************************************************************** * * * Author : Per Foreby, perf@efd.lth.se * @@ -13,7 +34,7 @@ #include "form.priv.h" -MODULE_ID("$Id: fty_ipv4.c,v 1.2 1997/04/26 22:06:00 tom Exp $") +MODULE_ID("$Id: fty_ipv4.c,v 1.10 2009/11/07 20:17:58 tom Exp $") /*--------------------------------------------------------------------------- | Facility : libnform @@ -26,24 +47,25 @@ MODULE_ID("$Id: fty_ipv4.c,v 1.2 1997/04/26 22:06:00 tom Exp $") | Return Values : TRUE - field is valid | FALSE - field is invalid +--------------------------------------------------------------------------*/ -static bool Check_IPV4_Field(FIELD * field, const void * argp GCC_UNUSED) +static bool +Check_IPV4_Field(FIELD *field, const void *argp GCC_UNUSED) { - char *bp = field_buffer(field,0); + char *bp = field_buffer(field, 0); int num = 0, len; unsigned int d1, d2, d3, d4; - if(isdigit(*bp)) /* Must start with digit */ + if (isdigit(UChar(*bp))) /* Must start with digit */ { num = sscanf(bp, "%u.%u.%u.%u%n", &d1, &d2, &d3, &d4, &len); if (num == 4) - { - bp += len; /* Make bp point to what sscanf() left */ - while (*bp && isspace(*bp)) - bp++; /* Allow trailing whitespace */ - } + { + bp += len; /* Make bp point to what sscanf() left */ + while (isspace(UChar(*bp))) + bp++; /* Allow trailing whitespace */ + } } return ((num != 4 || *bp || d1 > 255 || d2 > 255 - || d3 > 255 || d4 > 255) ? FALSE : TRUE); + || d3 > 255 || d4 > 255) ? FALSE : TRUE); } /*--------------------------------------------------------------------------- @@ -57,25 +79,42 @@ static bool Check_IPV4_Field(FIELD * field, const void * argp GCC_UNUSED) | Return Values : TRUE - character is valid | FALSE - character is invalid +--------------------------------------------------------------------------*/ -static bool Check_IPV4_Character(int c, const void * argp GCC_UNUSED) +static bool +Check_IPV4_Character(int c, const void *argp GCC_UNUSED) { - return ((isdigit(c) || (c=='.')) ? TRUE : FALSE); + return ((isdigit(UChar(c)) || (c == '.')) ? TRUE : FALSE); } -static FIELDTYPE typeIPV4 = { +static FIELDTYPE typeIPV4 = +{ _RESIDENT, - 1, /* this is mutable, so we can't be const */ + 1, /* this is mutable, so we can't be const */ (FIELDTYPE *)0, (FIELDTYPE *)0, NULL, NULL, NULL, - Check_IPV4_Field, - Check_IPV4_Character, - NULL, + INIT_FT_FUNC(Check_IPV4_Field), + INIT_FT_FUNC(Check_IPV4_Character), + INIT_FT_FUNC(NULL), + INIT_FT_FUNC(NULL), +#if NCURSES_INTEROP_FUNCS NULL +#endif }; -FIELDTYPE* TYPE_IPV4 = &typeIPV4; +NCURSES_EXPORT_VAR(FIELDTYPE*) TYPE_IPV4 = &typeIPV4; + +#if NCURSES_INTEROP_FUNCS +/* The next routines are to simplify the use of ncurses from + programming languages with restictions on interop with C level + constructs (e.g. variable access or va_list + ellipsis constructs) +*/ +NCURSES_EXPORT(FIELDTYPE *) +_nc_TYPE_IPV4(void) +{ + return TYPE_IPV4; +} +#endif /* fty_ipv4.c ends here */