/
niceSOFT
/
shadow
Обзор
Документация
Войти
/
niceSOFT
/
shadow
Код
Задачи
Вики
Пакеты
0
Релизы
0
Аналитика
Безопасность
master
lib/fields.c
85 строк
2 KB
Alejandro Colomar
lib/: Merge "lib/string/ctype/*" files even further
11 июн 2026, 10:33
11 июн 2026, 10:33
fbaa861
Код
Авторство
О чём код?
/* * SPDX-FileCopyrightText: 1990 , Julianne Frances Haugh * SPDX-FileCopyrightText: 1996 - 1997, Marek Michałkiewicz * SPDX-FileCopyrightText: 2003 - 2005, Tomasz Kłoczko * SPDX-FileCopyrightText: 2007 , Nicolas François * * SPDX-License-Identifier: BSD-3-Clause */ #include "config.h" #include "fields.h" #include <ctype.h> #include <stddef.h> #include <stdio.h> #include <string.h> #include <sys/param.h> #include "io/fgets/fgets.h" #include "prototypes.h" #include "string/ctype/isascii.h" #include "string/strcmp/streq.h" #include "string/strspn/stpspn.h" #include "string/strspn/stprspn.h" #include "string/strtok/stpsep.h" /* * valid_field - insure that a field contains all legal characters * * Return: * -1 Illegal or control characters are present. * 1 Non-ASCII characters are present. * 0 All chatacters are legal and ASCII. */ int valid_field_(const char *field, const char *illegal) { if (NULL == field) return -1; if (strpbrk(field, illegal)) return -1; if (strchriscntrl_c(field)) return -1; if (streq(field, "")) return 0; if (strisprint_c(field)) return 0; return 1; // !ASCII } /* * change_field - change a single field if a new value is given. * * prompt the user with the name of the field being changed and the * current value. */ void change_field(char *buf, size_t maxsize, const char *prompt) { char *cp; char newf[MIN(200, maxsize)]; printf ("\t%s [%s]: ", prompt, buf); (void) fflush (stdout); if (fgets_a(newf, stdin) == NULL) return; if (stpsep(newf, "\n") == NULL) return; if (!streq(newf, "")) { /* * Remove leading and trailing whitespace. This also * makes it possible to change the field to empty, by * entering a space. --marekm */ stpcpy(stprspn(newf, " \t"), ""); cp = stpspn(newf, " \t"); strcpy (buf, cp); } }