6386 WGS Questions
Rick Richardson
rick at pcrat.uucp
Sun Nov 12 00:24:24 AEST 1989
In article <16 at zds-ux.UUCP> gerry at zds-ux.UUCP (Gerry Gleason) writes:
>Wait a minute, if you can read the physical format, you should be able to
>mount it. Isn't a System V file system a System V file system (with the
>possible exception of version skews).
>
>What gives?
Byte order isn't specified and structure padding in "struct filsys"
(the superblock) will nail you. The following *GROSS HACK* I wrote
to convert SVR2 floppy filesystems under Venix System V/286 to and
from UNIX/386 Release 3.2 filesystems under 386/ix. I didn't have
to contend with byte order, but I did have to deal with structure
padding.
Also note that the on disk free list of Venix is different, too.
In my kludge I ignored it, since fsck will rebuild the freelist.
People interested in converting filesystems can use this program
to give them an idea of what the problem is. I urge you, however,
to throw this one away and perhaps think of a cleaner method. My
only excuse was that I was in a hurry -- I archive all comp.sources
from the 286 unto mountable floppies, the 286 was down, and I needed
to get some source code from the floppies onto the 386.
-Rick
#! /bin/sh
# This is a shell archive, meaning:
# 1. Remove everything above the #! /bin/sh line.
# 2. Save the resulting text in a file.
# 3. Execute the file with /bin/sh (not csh) to create:
# fs2s5.c
# This archive created: Sat Nov 11 08:14:54 1989
export PATH; PATH=/bin:/usr/bin:$PATH
if test -f 'fs2s5.c'
then
echo shar: "will not over-write existing file 'fs2s5.c'"
else
sed 's/^X//' << \SHAR_EOF > 'fs2s5.c'
X#include <stdio.h>
X
Xchar buf[512];
Xchar buf2[512];
Xlong zero = 0;
Xlong clean = 0x7c269d38L;
Xint fd;
X
Xmain()
X{
X
X fd = open("/dev/fh0", 2);
X lseek(fd, 512L, 0);
X read(fd, buf, 512);
X if (buf[2] == 0 && buf[3] == 0)
X {
X printf("Converting to Venix Filesystem\n");
X memcpy(&buf2[0], &buf[0], 2);
X
X memcpy(&buf2[2], &buf[4], 4);
X
X memcpy(&buf2[6], &buf[8], 2);
X
X memcpy(&buf2[8], &buf[12], 200);
X
X memcpy(&buf2[208], &buf[212], 2);
X
X memcpy(&buf2[210], &buf[214], 200);
X
X memcpy(&buf2[410], &buf[414], 1);
X
X memcpy(&buf2[411], &buf[415], 1);
X
X memcpy(&buf2[412], &buf[416], 1);
X
X memcpy(&buf2[413], &buf[417], 1);
X
X memcpy(&buf2[414], &buf[420], 4);
X
X memcpy(&buf2[418], &buf[424], 8);
X
X memcpy(&buf2[426], &buf[432], 4);
X
X memcpy(&buf2[430], &buf[436], 2);
X
X memcpy(&buf2[432], &buf[438], 6);
X
X memcpy(&buf2[438], &buf[444], 6);
X
X memcpy(&buf2[504], &buf[504], 4);
X memcpy(&buf2[508], &buf[508], 4);
X }
X else
X {
X printf("Converting to 386/ix Filesystem\n");
X memcpy(&buf2[0], &buf[0], 2);
X memcpy(&buf2[2], &zero, 2);
X
X memcpy(&buf2[4], &buf[2], 4);
X
X memcpy(&buf2[8], &buf[6], 2);
X memcpy(&buf2[10], &zero, 2);
X
X memcpy(&buf2[12], &buf[8], 200);
X
X memcpy(&buf2[212], &buf[208], 2);
X
X memcpy(&buf2[214], &buf[210], 200);
X
X memcpy(&buf2[414], &buf[410], 1);
X
X memcpy(&buf2[415], &buf[411], 1);
X
X memcpy(&buf2[416], &buf[412], 1);
X
X memcpy(&buf2[417], &buf[413], 1);
X memcpy(&buf2[418], &zero, 2);
X
X memcpy(&buf2[420], &buf[414], 4);
X
X memcpy(&buf2[424], &buf[418], 8);
X
X memcpy(&buf2[432], &buf[426], 4);
X
X memcpy(&buf2[436], &buf[430], 2);
X
X memcpy(&buf2[438], &buf[432], 6);
X
X memcpy(&buf2[444], &buf[438], 6);
X
X memcpy(&buf2[500], &clean, 4);
X memcpy(&buf2[504], &buf[504], 4);
X memcpy(&buf2[508], &buf[508], 4);
X }
X lseek(fd, 512L, 0);
X write(fd, buf2, 512);
X
X close(fd);
X
X exit(0);
X}
X
Xfreelist(slen)
X{
X}
SHAR_EOF
fi
exit 0
# End of shell archive
--
Rick Richardson | Looking for FAX software for UNIX/386 ?????? mention
PC Research,Inc.| WE'RE SHIPPING your
uunet!pcrat!rick| Ask about FaxiX - UNIX Facsimile System (tm) FAX #
(201) 389-8963 | Or JetRoff - troff postprocessor for the HP {Laser,Desk}Jet
More information about the Comp.unix.i386
mailing list