📄 fty_ipv4.c
字号:
/* * 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 ** ****************************************************************************/#include "form.priv.h"MODULE_ID("$Id: fty_ipv4.c,v 1.6 2004/05/29 19:13:48 tom Exp $")/*---------------------------------------------------------------------------| Facility : libnform | Function : static bool Check_IPV4_Field(| FIELD * field,| const void * argp)| | Description : Validate buffer content to be a valid IP number (Ver. 4)|| Return Values : TRUE - field is valid| FALSE - field is invalid+--------------------------------------------------------------------------*/static boolCheck_IPV4_Field(FIELD *field, const void *argp GCC_UNUSED){ char *bp = field_buffer(field, 0); int num = 0, len; unsigned int d1, d2, d3, d4; 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(UChar(*bp))) bp++; /* Allow trailing whitespace */ } } return ((num != 4 || *bp || d1 > 255 || d2 > 255 || d3 > 255 || d4 > 255) ? FALSE : TRUE);}/*---------------------------------------------------------------------------| Facility : libnform | Function : static bool Check_IPV4_Character(| int c, | const void *argp )| | Description : Check a character for unsigned type or period.|| Return Values : TRUE - character is valid| FALSE - character is invalid+--------------------------------------------------------------------------*/static boolCheck_IPV4_Character(int c, const void *argp GCC_UNUSED){ return ((isdigit(UChar(c)) || (c == '.')) ? TRUE : FALSE);}static FIELDTYPE typeIPV4 ={ _RESIDENT, 1, /* this is mutable, so we can't be const */ (FIELDTYPE *)0, (FIELDTYPE *)0, NULL, NULL, NULL, Check_IPV4_Field, Check_IPV4_Character, NULL, NULL};NCURSES_EXPORT_VAR(FIELDTYPE*) TYPE_IPV4 = &typeIPV4;/* fty_ipv4.c ends here */
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -