diff options
| -rw-r--r-- | FICS/addgroup.cpp | 21 | ||||
| -rw-r--r-- | FICS/addgroup.h | 1 | 
2 files changed, 22 insertions, 0 deletions
diff --git a/FICS/addgroup.cpp b/FICS/addgroup.cpp index 59547d0..52c6639 100644 --- a/FICS/addgroup.cpp +++ b/FICS/addgroup.cpp @@ -140,6 +140,27 @@ group_exists(const char *name)  	return false;  } +bool +is_valid_group_name(const char *name) +{ +	const char legal_index[] = +	    "ABCDEFGHIJKLMNOPQRSTUVWXYZ" +	    "abcdefghijklmnopqrstuvwxyz" +	    "0123456789_-"; +	const size_t name_min = 2; +	const size_t name_max = 30; + +	if (name == nullptr || strcmp(name, "") == 0) +		return false; +	else if (strlen(name) < name_min || strlen(name) > name_max) +		return false; +	for (const char *cp = name; *cp != '\0'; cp++) { +		if (strchr(legal_index, *cp) == nullptr) +			return false; +	} +	return true; +} +  int  read_the_group_permissions_file(const char *path)  { diff --git a/FICS/addgroup.h b/FICS/addgroup.h index e5b1906..3642969 100644 --- a/FICS/addgroup.h +++ b/FICS/addgroup.h @@ -11,6 +11,7 @@ int	fics_addgroup(const char *);  bool	get_group_id(const char *, int *);  bool	get_next_line_from_file(FILE *, char **); // uses 'new[]'  bool	group_exists(const char *); +bool	is_valid_group_name(const char *);  int	read_the_group_permissions_file(const char *);  __FICS_END_DECLS  | 
