// SPDX-License-Identifier: GPL-2.0-only #include #include #include "common/nodename.h" char * nodename(xmlNode *node, char *buf, int len) { if (!node || !node->name) { return NULL; } /* Ignore superfluous 'text.' in node name */ if (node->parent && !strcmp((char *)node->name, "text")) { node = node->parent; } char *p = buf; p[--len] = 0; for (;;) { const char *name = (char *)node->name; char c; while ((c = *name++) != 0) { *p++ = tolower(c); if (!--len) { return buf; } } *p = 0; node = node->parent; if (!node || !node->name) { return buf; } *p++ = '.'; if (!--len) { return buf; } } }