archetyp@uxh.cso.uiuc.edu (Joseph R Pickert) (12/09/90)
Below are a couple of misc fixes for macminix, including a patch to
a.out.h to fix the strip problem.
Joe Pickert
#! /bin/sh
# This is a shell archive. Remove anything before this line, then unpack
# it by saving it into a file and typing "sh file". To overwrite existing
# files, type "sh file -c". You can also feed this as standard input via
# unshar, or by typing "sh <file", e.g.. If this archive is complete, you
# will see the following message at the end:
# "End of shell archive."
# Contents: README a.out.hdif cstart.cdif maccreate.cdif macfile.cdif
PATH=/bin:/usr/bin:/usr/ucb ; export PATH
if test -f README -a "${1}" != "-c" ; then
echo shar: Will not over-write existing file \"README\"
else
echo shar: Extracting \"README\" \(273 characters\)
sed "s/^X//" >README <<'END_OF_README'
X
XTHESE PATCHES ARE RELATIVE TO THE ORIGINAL DISTRIBUTION
X
XEnclosed are some patches for:
X
X include/a.out.h: fixes for strip & nm
X kernel/cstart.c: misc fixes
X commands/mac/maccreate.c: fixes for partitions > 32767 blocks
X commands/mac/macfile.c: fixes for macwrite
END_OF_README
if test 273 -ne `wc -c <README`; then
echo shar: \"README\" unpacked with wrong size!
fi
# end of overwriting check
fi
if test -f a.out.hdif -a "${1}" != "-c" ; then
echo shar: Will not over-write existing file \"a.out.hdif\"
else
echo shar: Extracting \"a.out.hdif\" \(2508 characters\)
sed "s/^X//" >a.out.hdif <<'END_OF_a.out.hdif'
X*** 1.5.10/include/a.out.h Mon Jan 1 09:21:54 1990
X--- 1.5.10.2/include/a.out.h Mon Dec 3 14:50:06 1990
X***************
X*** 1,18 ****
X /* The <a.out> header file describes the format of executable files. */
X
X #ifndef _AOUT_H
X #define _AOUT_H
X
X struct exec { /* a.out header */
X- unsigned char a_magic[2]; /* magic number */
X- unsigned char a_flags; /* flags, see below */
X unsigned char a_cpu; /* cpu id */
X! unsigned char a_hdrlen; /* length of header */
X! unsigned char a_unused; /* reserved for future use */
X unsigned short a_version; /* version stamp */
X /* not used */
X long a_text; /* size of text segement in bytes */
X long a_data; /* size of data segment in bytes */
X long a_bss; /* size of bss segment in bytes */
X long a_no_entry; /* in fact: entry point, a_entry */
X long a_total; /* total memory allocated */
X--- 1,19 ----
X /* The <a.out> header file describes the format of executable files. */
X+ /* This version is intended for the Atari ST & Macintosh */
X
X #ifndef _AOUT_H
X #define _AOUT_H
X
X struct exec { /* a.out header */
X unsigned char a_cpu; /* cpu id */
X! unsigned char a_flags; /* flags, see below */
X! unsigned char a_magic[2]; /* magic number */
X unsigned short a_version; /* version stamp */
X /* not used */
X+ unsigned char a_unused; /* reserved for future use */
X+ unsigned char a_hdrlen; /* length of header */
X long a_text; /* size of text segement in bytes */
X long a_data; /* size of data segment in bytes */
X long a_bss; /* size of bss segment in bytes */
X long a_no_entry; /* in fact: entry point, a_entry */
X long a_total; /* total memory allocated */
X***************
X*** 22,33 ****
X long a_drsize; /* data relocation size */
X long a_tbase; /* text relocation base */
X long a_dbase; /* data relocation base */
X };
X
X! #define A_MAGIC0 (unsigned char) 0x01
X! #define A_MAGIC1 (unsigned char) 0x03
X #define BADMAG(X) ((X).a_magic[0] != A_MAGIC0 ||\
X (X).a_magic[1] != A_MAGIC1)
X
X /* CPU Id of TARGET machine */
X /* byte order coded in low order two bits */
X--- 23,34 ----
X long a_drsize; /* data relocation size */
X long a_tbase; /* text relocation base */
X long a_dbase; /* data relocation base */
X };
X
X! #define A_MAGIC0 (unsigned char) 0x03
X! #define A_MAGIC1 (unsigned char) 0x01
X #define BADMAG(X) ((X).a_magic[0] != A_MAGIC0 ||\
X (X).a_magic[1] != A_MAGIC1)
X
X /* CPU Id of TARGET machine */
X /* byte order coded in low order two bits */
END_OF_a.out.hdif
if test 2508 -ne `wc -c <a.out.hdif`; then
echo shar: \"a.out.hdif\" unpacked with wrong size!
fi
# end of overwriting check
fi
if test -f cstart.cdif -a "${1}" != "-c" ; then
echo shar: Will not over-write existing file \"cstart.cdif\"
else
echo shar: Extracting \"cstart.cdif\" \(1588 characters\)
sed "s/^X//" >cstart.cdif <<'END_OF_cstart.cdif'
X*** 1.5.10/kernel/cstart.c Thu Nov 1 09:59:22 1990
X--- 1.5.10.2/kernel/cstart.c Mon Dec 3 15:27:55 1990
X***************
X*** 27,36 ****
X--- 27,37 ----
X };
X
X PRIVATE struct romtable romversions[] ={
X {0x00, 0x75, 0x2e}, /* mac plus */
X {0x276, 0x276, 0x2e}, /* mac se */
X+ {0x37A, 0x37A, 0x2e}, /* mac portable */
X {0x76, 0x67b, 0x30}, /* mac II to mac IIcx */
X {0x67c, 0x7fff, 0x32} /* mac IIci and above */
X };
X PRIVATE int nvers = sizeof(romversions)/sizeof(struct romtable);
X
X***************
X*** 80,96 ****
X code_base = memat;
X data_base = memat+kc;
X mem_bytes = (phys_bytes)memat + size;
X
X /* Initialize macintosh */
X- FlushEvents((short)-1, (short)0);
X InitGraf((Ptr)&qd->thePort);
X- InitCursor();
X InitFonts();
X InitWindows();
X InitMenus();
X InitDialogs(0L);
X
X /* record sizes */
X sizes[0] = kc >> CLICK_SHIFT; sizes[1] = kd >> CLICK_SHIFT;
X sizes[2] = mc >> CLICK_SHIFT; sizes[3] = md >> CLICK_SHIFT;
X sizes[4] = fc >> CLICK_SHIFT; sizes[5] = fd >> CLICK_SHIFT;
X--- 81,98 ----
X code_base = memat;
X data_base = memat+kc;
X mem_bytes = (phys_bytes)memat + size;
X
X /* Initialize macintosh */
X InitGraf((Ptr)&qd->thePort);
X InitFonts();
X InitWindows();
X InitMenus();
X+ TEInit();
X InitDialogs(0L);
X+ InitCursor();
X+ FlushEvents((short)-1, (short)0);
X
X /* record sizes */
X sizes[0] = kc >> CLICK_SHIFT; sizes[1] = kd >> CLICK_SHIFT;
X sizes[2] = mc >> CLICK_SHIFT; sizes[3] = md >> CLICK_SHIFT;
X sizes[4] = fc >> CLICK_SHIFT; sizes[5] = fd >> CLICK_SHIFT;
END_OF_cstart.cdif
if test 1588 -ne `wc -c <cstart.cdif`; then
echo shar: \"cstart.cdif\" unpacked with wrong size!
fi
# end of overwriting check
fi
if test -f maccreate.cdif -a "${1}" != "-c" ; then
echo shar: Will not over-write existing file \"maccreate.cdif\"
else
echo shar: Extracting \"maccreate.cdif\" \(1503 characters\)
sed "s/^X//" >maccreate.cdif <<'END_OF_maccreate.cdif'
X*** 1.5.10/commands/mac/maccreate.c Fri Aug 10 11:38:28 1990
X--- 1.5.10.2/commands/mac/maccreate.c Tue Dec 4 08:47:16 1990
X***************
X*** 24,34 ****
X {
X char c;
X extern int optind;
X extern char *optarg;
X long type = 0, creator = 0;
X! int nblocks;
X
X while ((c = getopt(argc, argv, "c:t:")) != EOF) {
X switch (c) {
X case 'c':
X strncpy(&creator, optarg, 4);
X--- 24,34 ----
X {
X char c;
X extern int optind;
X extern char *optarg;
X long type = 0, creator = 0;
X! long nblocks;
X
X while ((c = getopt(argc, argv, "c:t:")) != EOF) {
X switch (c) {
X case 'c':
X strncpy(&creator, optarg, 4);
X***************
X*** 40,50 ****
X }
X if ((argc - optind) < 2)
X usage(argv[0]);
X if (type == 0) type = totype("MXFS");
X if (creator == 0) creator = totype("MNIX");
X! nblocks = atoi(argv[optind++]);
X for (; optind < argc; optind++) {
X create(argv[optind], nblocks, type, creator);
X }
X }
X
X--- 40,50 ----
X }
X if ((argc - optind) < 2)
X usage(argv[0]);
X if (type == 0) type = totype("MXFS");
X if (creator == 0) creator = totype("MNIX");
X! nblocks = atol(argv[optind++]);
X for (; optind < argc; optind++) {
X create(argv[optind], nblocks, type, creator);
X }
X }
X
X***************
X*** 56,65 ****
X--- 56,66 ----
X }
X
X void
X create(file, nblocks, type, creator)
X char *file;
X+ long nblocks;
X long type, creator;
X {
X ParamBlockRec pbr;
X ParamBlockRec iop;
X int err;
END_OF_maccreate.cdif
if test 1503 -ne `wc -c <maccreate.cdif`; then
echo shar: \"maccreate.cdif\" unpacked with wrong size!
fi
# end of overwriting check
fi
if test -f macfile.cdif -a "${1}" != "-c" ; then
echo shar: Will not over-write existing file \"macfile.cdif\"
else
echo shar: Extracting \"macfile.cdif\" \(4776 characters\)
sed "s/^X//" >macfile.cdif <<'END_OF_macfile.cdif'
X*** 1.5.10/commands/mac/macfile.c Tue Jul 10 15:23:17 1990
X--- 1.5.10.2/commands/mac/macfile.c Tue Dec 4 08:47:30 1990
X***************
X*** 111,120 ****
X--- 111,121 ----
X {
X ParamBlockRec pbr;
X int err;
X register char *c;
X char buf[100];
X+ long cnt;
X
X pbr.ioCompletion = 0;
X pbr.ioNamePtr = c2pstr(file);
X pbr.ioVRefNum = 0;
X pbr.ParamBlkType.ioParam.ioVersNum = 0;
X***************
X*** 124,143 ****
X pbr.ParamBlkType.ioParam.ioBuffer = buf;
X pbr.ParamBlkType.ioParam.ioReqCount = sizeof(buf);
X pbr.ParamBlkType.ioParam.ioPosMode = 0;
X pbr.ParamBlkType.ioParam.ioPosOffset = 0;
X err = 0;
X! while (err == 0) {
X pbr.ParamBlkType.ioParam.ioActCount = 0;
X err = PBRead(&pbr, 0);
X! c = buf;
X! while (pbr.ParamBlkType.ioParam.ioActCount--) {
X! if (ascii && *c == '\r') *c = '\n';
X! putchar(*c++);
X }
X! }
X! if (err != -39)
X fprintf(stderr, "error reading %s, err = %d\n", p2cstr(file), err);
X PBClose(&pbr,0);
X } else
X fprintf(stderr, "unable to open %s, err = %d\n", p2cstr(file), err);
X }
X--- 125,149 ----
X pbr.ParamBlkType.ioParam.ioBuffer = buf;
X pbr.ParamBlkType.ioParam.ioReqCount = sizeof(buf);
X pbr.ParamBlkType.ioParam.ioPosMode = 0;
X pbr.ParamBlkType.ioParam.ioPosOffset = 0;
X err = 0;
X! while (err == 0) {
X pbr.ParamBlkType.ioParam.ioActCount = 0;
X err = PBRead(&pbr, 0);
X! if (ascii) {
X! c = buf;
X! cnt = pbr.ParamBlkType.ioParam.ioActCount;
X! while (cnt--) {
X! if (*c == '\r') *c = '\n';
X! c++;
X! }
X }
X! cnt = pbr.ParamBlkType.ioParam.ioActCount;
X! fwrite(buf, 1, (int)pbr.ParamBlkType.ioParam.ioActCount, stdout);
X! }
X! if (err != -39)
X fprintf(stderr, "error reading %s, err = %d\n", p2cstr(file), err);
X PBClose(&pbr,0);
X } else
X fprintf(stderr, "unable to open %s, err = %d\n", p2cstr(file), err);
X }
X***************
X*** 168,180 ****
X char *file;
X int ascii;
X {
X ParamBlockRec pbr;
X int err;
X! register char c;
X char buf[100];
X! int len;
X
X pbr.ioCompletion = 0;
X pbr.ioNamePtr = c2pstr(file);
X pbr.ioVRefNum = 0;
X pbr.ParamBlkType.fileParam.ioFVersNum = 0;
X--- 174,186 ----
X char *file;
X int ascii;
X {
X ParamBlockRec pbr;
X int err;
X! register char *c;
X char buf[100];
X! int cnt, len;
X
X pbr.ioCompletion = 0;
X pbr.ioNamePtr = c2pstr(file);
X pbr.ioVRefNum = 0;
X pbr.ParamBlkType.fileParam.ioFVersNum = 0;
X***************
X*** 189,199 ****
X pbr.ParamBlkType.fileParam.ioFDirIndex = 0;
X if ((err = PBGetFInfo(&pbr, 0)) != 0) {
X fprintf(stderr, "Error getting info %s, err = %d\n", p2cstr(file), err);
X return;
X }
X! if (ascii == 1)
X pbr.ParamBlkType.fileParam.ioFlFndrInfo.fdType = totype("TEXT");
X else
X pbr.ParamBlkType.fileParam.ioFlFndrInfo.fdType = totype("????");
X pbr.ioCompletion = 0;
X pbr.ioNamePtr = file;
X--- 195,205 ----
X pbr.ParamBlkType.fileParam.ioFDirIndex = 0;
X if ((err = PBGetFInfo(&pbr, 0)) != 0) {
X fprintf(stderr, "Error getting info %s, err = %d\n", p2cstr(file), err);
X return;
X }
X! if (ascii)
X pbr.ParamBlkType.fileParam.ioFlFndrInfo.fdType = totype("TEXT");
X else
X pbr.ParamBlkType.fileParam.ioFlFndrInfo.fdType = totype("????");
X pbr.ioCompletion = 0;
X pbr.ioNamePtr = file;
X***************
X*** 213,241 ****
X pbr.ParamBlkType.ioParam.ioPosOffset = 0;
X if ((err = PBOpen(&pbr, 0)) != 0) {
X fprintf(stderr, "Error opening %s, err = %d\n", p2cstr(file), err);
X return;
X }
X! len = 0;
X! while ((c = getchar()) != EOF) {
X! if (ascii && c == '\n') c = '\r';
X! buf[len++] = c;
X! if (len == sizeof(buf)) {
X! if ((err = writebuf(&pbr, buf, len)) != 0) {
X! PBClose(&pbr, 0);
X! fprintf(stderr, "Error writing %s, err = %d\n", p2cstr(file), err);
X! return;
X! }
X! len = 0;
X! }
X }
X! if (len > 0)
X! if ((err = writebuf(&pbr, buf, len)) != 0) {
X! PBClose(&pbr, 0);
X! fprintf(stderr, "Error writing %s, err = %d\n", p2cstr(file), err);
X! return;
X! }
X PBClose(&pbr, 0);
X }
X
X void
X macdir(path)
X--- 219,242 ----
X pbr.ParamBlkType.ioParam.ioPosOffset = 0;
X if ((err = PBOpen(&pbr, 0)) != 0) {
X fprintf(stderr, "Error opening %s, err = %d\n", p2cstr(file), err);
X return;
X }
X! err = 0;
X! while (err == 0 && (len = fread(buf, 1, sizeof(buf), stdin)) > 0) {
X! if (ascii) {
X! c = buf;
X! cnt = len;
X! while (cnt--) {
X! if (*c == '\n') *c = '\r';
X! c++;
X! }
X! }
X! err = writebuf(&pbr, buf, len);
X }
X! if (err != 0)
X! fprintf(stderr, "Error writing %s, err = %d\n", p2cstr(file), err);
X PBClose(&pbr, 0);
X }
X
X void
X macdir(path)
END_OF_macfile.cdif
if test 4776 -ne `wc -c <macfile.cdif`; then
echo shar: \"macfile.cdif\" unpacked with wrong size!
fi
# end of overwriting check
fi
echo shar: End of shell archive.
exit 0paul@ukpoit.co.uk (Paul Wood) (12/18/90)
Thanks for your "misc patches". When applying them it highlighted a problem with the makefile in /usr/src/commands/mac. This makefile appears to be a direct copy of the makefile in /usr/src/commands, and while it is ok for making simple commands (commands with a single source file), all the more complex programs need "improved" makefiles (possibly the wrong makefiles were included in the Minix release???) (this is quite a few makefiles). If anybody is interested I can post or mail the makefile I created to make maccreate and macfile. It is a bit of a "frig" (UK English terminology, I don't know how USA English would say it). Also it is probably not the "optimum" solution. (My way of saying that it could be improved) Paul Wood | UUCP Mail: paul@ukpoit.co.uk | 31 Buttermere Drive | Bang-Style: ...!ukc!ukpoit!paul | Dronfield Woodhouse | Voice: +44 246 214256 | Sheffield | FAX: +44 246 214353 | England S18 5PX | Postline: 5403 4256 |