Path: utzoo!utgpu!news-server.csri.toronto.edu!rutgers!usc!julius.cs.uiuc.edu!ux1.cso.uiuc.edu!uxh.cso.uiuc.edu!archetyp From: archetyp@uxh.cso.uiuc.edu (Joseph R Pickert) Newsgroups: comp.os.minix Subject: MACMINIX: misc patches Summary: SOme misc patches Keywords: Macminix Message-ID: <1990Dec8.173921.25713@ux1.cso.uiuc.edu> Date: 8 Dec 90 17:39:21 GMT Sender: news@ux1.cso.uiuc.edu (News) Organization: University of Illinois at Urbana Lines: 444 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 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 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 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 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 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 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 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