node = findnode (attrlist, filename); if (node == NULL)  return NULL; p = node->data; while (1) {
if (filename == NULL) p = fileattr_default_attrs; else { node = findnode (attrlist, filename); if (node == NULL)  return NULL; p = node->data; } while (1) {
fileattr_get (filename, attrname)    char *filename;    char *attrname;{    Node *node;    size_t attrname_len = strlen (attrname);    char *p;    if (attrlist == NULL)	fileattr_read ();    if (attrlist == NULL)	/* Either nothing has any attributes, or fileattr_read already printed	   an error message.  */	return NULL;    node = findnode (attrlist, filename);    if (node == NULL)	/* A file not mentioned has no attributes.  */	return NULL;    p = node->data;    while (1) {	if (strncmp (attrname, p, attrname_len) == 0	    && p[attrname_len] == '=')	{	    /* Found it.  */	    return p + attrname_len + 1;	}	p = strchr (p, ';');	if (p == NULL)	    break;	++p;    }    /* The file doesn't have this attribute.  */    return NULL;}