From 7285a491c1ce1e630a0751b1011fd33e6b17234b Mon Sep 17 00:00:00 2001 From: wkj Date: Thu, 17 Jun 2004 01:47:21 +0000 Subject: Dump9660 (and mk9660). Until we either do something intelligent with symlinks or put in a switch for things like dump9660, this is of rather limited utility under Unix. --- src/cmd/9660/unix.c | 84 +++++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 84 insertions(+) create mode 100644 src/cmd/9660/unix.c (limited to 'src/cmd/9660/unix.c') diff --git a/src/cmd/9660/unix.c b/src/cmd/9660/unix.c new file mode 100644 index 00000000..99332af8 --- /dev/null +++ b/src/cmd/9660/unix.c @@ -0,0 +1,84 @@ +#include +#include +#include +#include +#include +#include + +#include "iso9660.h" + +#include +#include + +typedef struct Xarg Xarg; +struct Xarg { + void (*enm)(char*,char*,XDir*,void*); + void (*warn)(char*,void*); + void *arg; +}; + +static long numericuid(char *user); +static long numericgid(char *gp); + +void +dirtoxdir(XDir *xd, Dir *d) +{ + // char buf[NAMELEN+1]; + memset(xd, 0, sizeof *xd); + + xd->name = atom(d->name); + xd->uid = atom(d->uid); + xd->gid = atom(d->gid); + xd->uidno = numericuid(d->uid); + xd->gidno = numericgid(d->gid); + xd->mode = d->mode; + xd->atime = d->atime; + xd->mtime = d->mtime; + xd->ctime = 0; + xd->length = d->length; + if(xd->mode & CHLINK) { + xd->mode |= 0777; + //xd->symlink = atom(d->symlink); + xd->symlink = atom("symlink"); // XXX: rsc + } +}; + +void +fdtruncate(int fd, ulong size) +{ + ftruncate(fd, size); + + return; +} + +static long +numericuid(char *user) +{ + struct passwd *pass; + static int warned = 0; + + if (! (pass = getpwnam(user))) { + if (!warned) + fprint(2, "Warning: getpwnam(3) failed for \"%s\"\n", user); + warned = 1; + return 0; + } + + return pass->pw_uid; +} + +static long +numericgid(char *gp) +{ + struct group *gr; + static int warned = 0; + + if (! (gr = getgrnam(gp))) { + if (!warned) + fprint(2, "Warning: getgrnam(3) failed for \"%s\"\n", gp); + warned = 1; + return 0; + } + + return gr->gr_gid; +} -- cgit v1.2.3