Some of the boot loader code only works on a ufs file system, but it
uses the generic struct dirent, which happens to look identical to UFS's struct direct. If BSD ever changes dirent then this will be a problem. Submitted by: matthew dot fleming at isilon dot com
This commit is contained in:
parent
c334d2d544
commit
cc4757ddef
@ -47,6 +47,7 @@
|
||||
__FBSDID("$FreeBSD$");
|
||||
|
||||
#include <ufs/ufs/dinode.h>
|
||||
#include <ufs/ufs/dir.h>
|
||||
#include <ufs/ffs/fs.h>
|
||||
#ifdef UFS_SMALL_CGBASE
|
||||
/* XXX: Revert to old (broken for over 1.5Tb filesystems) version of cgbase
|
||||
@ -93,7 +94,7 @@ static __inline int
|
||||
fsfind(const char *name, ino_t * ino)
|
||||
{
|
||||
char buf[DEV_BSIZE];
|
||||
struct dirent *d;
|
||||
struct direct *d;
|
||||
char *s;
|
||||
ssize_t n;
|
||||
|
||||
@ -104,7 +105,7 @@ fsfind(const char *name, ino_t * ino)
|
||||
if (ls)
|
||||
printf("%s ", d->d_name);
|
||||
else if (!strcmp(name, d->d_name)) {
|
||||
*ino = d->d_fileno;
|
||||
*ino = d->d_ino;
|
||||
return d->d_type;
|
||||
}
|
||||
s += d->d_reclen;
|
||||
|
@ -34,7 +34,7 @@ __FBSDID("$FreeBSD$");
|
||||
*/
|
||||
|
||||
#include "boot.h"
|
||||
#include <sys/dirent.h>
|
||||
#include <ufs/ufs/dir.h>
|
||||
|
||||
#if 0
|
||||
/* #define BUFSIZE 4096 */
|
||||
@ -142,7 +142,7 @@ find(char *path)
|
||||
{
|
||||
char *rest, ch;
|
||||
int block, off, loc, ino = ROOTINO;
|
||||
struct dirent *dp;
|
||||
struct direct *dp;
|
||||
char list_only;
|
||||
|
||||
list_only = (path[0] == '?' && path[1] == '\0');
|
||||
@ -174,12 +174,12 @@ find(char *path)
|
||||
devread(iobuf, fsbtodb(fs, block_map(block)) + boff,
|
||||
blksize(fs, &inode, block));
|
||||
}
|
||||
dp = (struct dirent *)(iobuf + off);
|
||||
dp = (struct direct *)(iobuf + off);
|
||||
loc += dp->d_reclen;
|
||||
if (dp->d_fileno && list_only)
|
||||
if (dp->d_ino && list_only)
|
||||
printf("%s ", dp->d_name);
|
||||
} while (!dp->d_fileno || strcmp(path, dp->d_name));
|
||||
ino = dp->d_fileno;
|
||||
} while (!dp->d_ino || strcmp(path, dp->d_name));
|
||||
ino = dp->d_ino;
|
||||
*(path = rest) = ch;
|
||||
goto loop;
|
||||
}
|
||||
|
Loading…
Reference in New Issue
Block a user