+ if (ent->d_name[0] == '.')
+ continue;
+
+ snprintf(filename, sizeof(filename), "%s/%s", udev_db_path, ent->d_name);
+ filename[sizeof(filename)-1] = '\0';
+ dbg("looking at '%s'", filename);
+
+ if (file_map(filename, &buf, &bufsize) != 0) {
+ dbg("unable to read db file '%s'", filename);
+ continue;
+ }
+
+ path[0] = '\0';
+ nodename[0] = '\0';
+ cur = 0;
+ while (cur < bufsize) {
+ count = buf_get_line(buf, bufsize, cur);
+ bufline = &buf[cur];
+ cur += count+1;
+
+ switch(bufline[0]) {
+ case 'P':
+ if (count > sizeof(path))
+ count = sizeof(path)-1;
+ strlcpy(path, &bufline[2], count-2);
+ break;
+ case 'N':
+ if (count > sizeof(nodename))
+ count = sizeof(nodename)-1;
+ strlcpy(nodename, &bufline[2], count-2);
+ break;
+ default:
+ continue;
+ }
+ }
+ file_unmap(buf, bufsize);