static int central_get_string(int node, const char *name, char **buf) { int len; len = prom_getproplen(node, name); if (len < 0) return (len); *buf = (char *)malloc(len + 1, M_DEVBUF, M_NOWAIT); if (*buf == NULL) return (-1); if (len != 0) prom_getpropstringA(node, name, *buf, len + 1); (*buf)[len] = '\0'; return (0); }
static void prom_get_device_args(const char *prop, char *args, unsigned int sz) { const char *cp; char buffer[128]; cp = prom_getpropstringA(findroot(), prop, buffer, sizeof buffer); /* * Extract device-specific arguments from a PROM device path (if any) */ cp = buffer + strlen(buffer); while (cp >= buffer) { if (*cp == ':') { strncpy(args, cp+1, sz); break; } cp--; } }