1*f5bebbbbSMarkus Armbruster /* 2*f5bebbbbSMarkus Armbruster * Dealing with identifiers 3*f5bebbbbSMarkus Armbruster * 4*f5bebbbbSMarkus Armbruster * Copyright (C) 2014 Red Hat, Inc. 5*f5bebbbbSMarkus Armbruster * 6*f5bebbbbSMarkus Armbruster * Authors: 7*f5bebbbbSMarkus Armbruster * Markus Armbruster <armbru@redhat.com>, 8*f5bebbbbSMarkus Armbruster * 9*f5bebbbbSMarkus Armbruster * This work is licensed under the terms of the GNU LGPL, version 2.1 10*f5bebbbbSMarkus Armbruster * or later. See the COPYING.LIB file in the top-level directory. 11*f5bebbbbSMarkus Armbruster */ 12*f5bebbbbSMarkus Armbruster 13*f5bebbbbSMarkus Armbruster #include "qemu-common.h" 14*f5bebbbbSMarkus Armbruster 15*f5bebbbbSMarkus Armbruster bool id_wellformed(const char *id) 16*f5bebbbbSMarkus Armbruster { 17*f5bebbbbSMarkus Armbruster int i; 18*f5bebbbbSMarkus Armbruster 19*f5bebbbbSMarkus Armbruster if (!qemu_isalpha(id[0])) { 20*f5bebbbbSMarkus Armbruster return false; 21*f5bebbbbSMarkus Armbruster } 22*f5bebbbbSMarkus Armbruster for (i = 1; id[i]; i++) { 23*f5bebbbbSMarkus Armbruster if (!qemu_isalnum(id[i]) && !strchr("-._", id[i])) { 24*f5bebbbbSMarkus Armbruster return false; 25*f5bebbbbSMarkus Armbruster } 26*f5bebbbbSMarkus Armbruster } 27*f5bebbbbSMarkus Armbruster return true; 28*f5bebbbbSMarkus Armbruster } 29