name: add simple name string validator

This commit is contained in:
Lennart Poettering 2009-11-19 02:50:52 +01:00
parent a41e8209be
commit 07232470c8
2 changed files with 28 additions and 0 deletions

27
name.c
View file

@ -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;

1
name.h
View file

@ -260,6 +260,7 @@ DEFINE_CAST(SNAPSHOT, Snapshot, snapshot);
bool name_is_ready(Name *name);
NameType name_type_from_string(const char *n);
bool name_is_valid(const char *n);
Name *name_new(Manager *m);
void name_free(Name *name);