diff options
author | Lennart Poettering <lennart@poettering.net> | 2009-11-19 02:50:52 +0100 |
---|---|---|
committer | Lennart Poettering <lennart@poettering.net> | 2009-11-19 02:50:52 +0100 |
commit | 07232470c869976ae2d7a36799bc6b0126d7e820 (patch) | |
tree | 323b162c78e760ef241da7baf3f6e930b1f1935f /name.c | |
parent | a41e8209be729cd8de34d715135fe84920e8016c (diff) |
name: add simple name string validator
Diffstat (limited to 'name.c')
-rw-r--r-- | name.c | 27 |
1 files changed, 27 insertions, 0 deletions
@@ -2,6 +2,7 @@ #include <assert.h> #include <errno.h> +#include <string.h> #include "set.h" #include "name.h" @@ -30,6 +31,32 @@ NameType name_type_from_string(const char *n) { return _NAME_TYPE_INVALID; } +#define VALID_CHARS \ + "0123456789" \ + "abcdefghijklmnopqrstuvwxyz" \ + "ABCDEFGHIJKLMNOPQRSTUVWXYZ" \ + "-_" + +bool name_is_valid(const char *n) { + NameType t; + const char *e, *i; + + assert(n); + + t = name_type_from_string(n); + if (t < 0 || t >= _NAME_TYPE_MAX) + return false; + + if (!(e = strrchr(n, '.'))) + return false; + + for (i = n; i < e; i++) + if (!strchr(VALID_CHARS, *i)) + return false; + + return true; +} + Name *name_new(Manager *m) { Name *n; |