goto usage;
st.st_rdev = makedev(major, minor);
- retval = do_mknod_internal(current_fs, cwd, argv[1], &st);
+ retval = do_mknod_internal(current_fs, cwd, argv[1],
+ st.st_mode, st.st_rdev);
if (retval)
com_err(argv[0], retval, 0);
}
#ifndef _WIN32
/* Make a special files (block and character devices), fifo's, and sockets */
errcode_t do_mknod_internal(ext2_filsys fs, ext2_ino_t cwd, const char *name,
- struct stat *st)
+ unsigned int st_mode, unsigned int st_rdev)
{
ext2_ino_t ino;
errcode_t retval;
unsigned long devmajor, devminor, mode;
int filetype;
- switch(st->st_mode & S_IFMT) {
+ switch(st_mode & S_IFMT) {
case S_IFCHR:
mode = LINUX_S_IFCHR;
filetype = EXT2_FT_CHRDEV;
fs->now ? fs->now : time(0);
if (filetype != S_IFIFO) {
- devmajor = major(st->st_rdev);
- devminor = minor(st->st_rdev);
+ devmajor = major(st_rdev);
+ devminor = minor(st_rdev);
if ((devmajor < 256) && (devminor < 256)) {
inode.i_block[0] = devmajor * 256 + devminor;
case S_IFIFO:
#ifndef _WIN32
case S_IFSOCK:
- retval = do_mknod_internal(fs, parent_ino, name, &st);
+ retval = do_mknod_internal(fs, parent_ino, name,
+ st.st_mode, st.st_rdev);
if (retval) {
com_err(__func__, retval,
_("while creating special file "
const char *source_dir, ext2_ino_t root,
struct fs_ops_callbacks *fs_callbacks);
extern errcode_t do_mknod_internal(ext2_filsys fs, ext2_ino_t cwd,
- const char *name, struct stat *st);
+ const char *name, unsigned int st_mode,
+ unsigned int st_rdev);
extern errcode_t do_symlink_internal(ext2_filsys fs, ext2_ino_t cwd,
const char *name, char *target,
ext2_ino_t root);