[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
MiNTlib: support for MFS_MKNOD
This patch add support for MFS_MKNOD to mknod. This is mainly useful
for unpacking the Linux root filesystem under MiNT, with its device
files under /dev.
Thanks to Stephen for adding MFS_MKNOD to MinixFS.
*** orig/mknod.c Tue Oct 12 20:05:16 1993
--- mknod.c Sat May 21 23:41:02 1994
***************
*** 1,20 ****
! /* fake mknod -- this always fails */
#include <errno.h>
#include <support.h>
#include <stat.h>
int
mknod(path, mode, dev)
! char *path;
int mode, dev;
{
if (S_ISDIR(mode)) {
return (mkdir(path, (mode_t) mode));
}
! if (S_ISFIFO(mode)) {
! return (mkfifo(path, (mode_t) mode));
! }
! errno = EINVAL;
! return -1;
}
--- 1,34 ----
! /* fake mknod -- this always fails, except with MinixFS 0.06pl10 or later */
#include <errno.h>
#include <support.h>
#include <stat.h>
+ #include <limits.h>
+ #include <types.h>
+ #include <mintbind.h>
+ #include <errno.h>
+ #include "lib.h"
+
+ #define MFS_MKNOD 0x10f
int
mknod(path, mode, dev)
! const char *path;
int mode, dev;
{
+ long err, magic;
+ char _path[PATH_MAX];
+
if (S_ISDIR(mode)) {
return (mkdir(path, (mode_t) mode));
}
! _unx2dos (path, _path);
! err = Dcntl (MFS_MKNOD, _path,
! ((long) mode & 0xffff) | ((long) dev << 16));
! if (err < 0)
! {
! errno = -err;
! return -1;
! }
! return 0;
}