+ struct stat stbuf;
+
+ if(stat(file, &stbuf) == 0 && (stbuf.st_mode&S_IFMT) != S_IFCHR
+ && (stbuf.st_mode&S_IFMT) != S_IFBLK) {
+ int mt = open("/etc/mtab", 0), len;
+ char *str = "/dev/xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx";
+ char mtab[32];
+ struct stat mstbuf;
+ while((len = read(mt, mtab, 32)) == 32) {
+ read(mt, &str[5], 32);
+ if(stat(str, &mstbuf) == 0 && mstbuf.st_rdev == stbuf.st_dev) {
+ file = str;
+ break;
+ }
+ }
+ close(mt);
+ if(len == 0) {
+ fprintf(stderr, "%s: mounted on unknown device\n", file);
+ return;
+ }
+ }