Hello,
Mike Hammer <mike-hammer@usa.net> wrote:
> It seems there's Dev86 tools (bcc, as86 and ld86) for DOS
> in the form of binaries. Would it be possible to build
> "mknbi-dos" under DOS?
You would definitely have to change a couple of things in the source code,
most probably the file handling stuff. Why not simply try it? Please let
me know if you have any success.
I once got a patch for mknbi-dos, but for an older version, which I have
attached below. You will probably have to change the patch a little bit
for the later versions of netboot. Oh, and the patch required gcc and all
the other GNU tools for MSDOS. They are available on every simtel mirror.
gero.
--- netboot/mknbi-dos/mknbi.c Wed Jan 29 12:17:36 1997
+++ mknbi-dos4msdos/mknbi.c Tue Apr 8 13:14:52 1997
@@ -685,7 +685,7 @@
fprintf(stderr, "%s: No output file name given\n", progname);
exit(EXIT_FAILURE);
}
- if ((outfile = creat(outname, 0644)) < 0) {
+ if ((outfile = fileno(fopen(outname, "w+b"))) < 0) {
perror(outname);
exit(EXIT_FAILURE);
}
@@ -745,5 +745,8 @@
if (verbose > 1)
dump_header(&header);
+ close(rdimage);
+ if (remove("TMPFILE")<0)
+ printf("\nError while removing the temporary file!");
exit(EXIT_SUCCESS);
}
--- netboot/mknbi-dos/openrd.c Sun Mar 9 12:56:50 1997
+++ mknbi-dos4msdos/openrd.c Tue Apr 8 13:14:54 1997
@@ -120,7 +120,7 @@
int i;
/* Isolate file name */
- if ((cp = strrchr(path, '/')) == NULL)
+ if ((cp = strrchr(path, '\\')) == NULL)
cp = path;
else
cp++;
@@ -199,7 +199,7 @@
while ((ent = readdir(dirp)) != NULL) {
if (!strcmp(ent->d_name, ".") || !strcmp(ent->d_name, ".."))
continue;
- sprintf(tmppath, "%s/%s", path, ent->d_name);
+ sprintf(tmppath, "%s\\%s", path, ent->d_name);
if (stat(tmppath, &sbuf) != 0) {
perror(tmppath);
exit(EXIT_FAILURE);
@@ -434,7 +435,7 @@
int readsize;
int infile;
- if ((infile = open(fsp->path, O_RDONLY)) < 0) {
+ if ((infile = fileno(fopen(fsp->path, "r+b"))) < 0) {
perror(fsp->path);
exit(EXIT_FAILURE);
}
@@ -571,7 +572,7 @@
exit(EXIT_FAILURE);
}
if ((sbuf.st_mode & S_IFMT) == S_IFREG) {
- if ((rdfile = open(name, O_RDONLY)) < 0) {
+ if ((rdfile = fileno(fopen(name, "r+b"))) < 0) {
perror(name);
exit(EXIT_FAILURE);
}
@@ -592,7 +593,7 @@
/*
* Create a temporary file to receive the ramdisk image.
*/
- if ((tmprd = tmpfile()) == NULL) {
+ if ((tmprd = fopen("tmpfile","w+b")) == NULL) {
fprintf(stderr, "%s: cannot create temporary file\n", progname);
exit(EXIT_FAILURE);
}
--- netboot/common.h Sun Mar 2 17:00:46 1997
+++ mknbi-dos4msdos/common.h Tue Apr 8 13:14:47 1997
@@ -20,6 +20,20 @@
* Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
*/
+/* geaendert von Karsten am 27.03.1997 */
+typedef unsigned char __u8;
+typedef unsigned short __u16;
+typedef unsigned long __u32;
+
+#define SIZEOF_UNSIGNED_CHAR 1
+#define SIZEOF_UNSIGNED_INT 4
+#define SIZEOF_UNSIGNED_SHORT 2
+#define SIZEOF_UNSIGNED_LONG 4
+
+#define MAXNAMLEN 255
+
+/* bis hier*/
+
/*
* Some general definitions for compiling on different systems
@@ -40,7 +54,7 @@
# include <stdlib.h>
#else
# ifdef HAVE_MALLOC_H
-# include <malloc.h>
+# include <\gnu\include\malloc.h>
# else
voidstar malloc();
void free();
--
Unix: it's a nice place to live, but you wouldn't want to visit there.
--
Gero Kuhlmann, Hannover 0511/6497525 (Voice) gero@gkminix.han.de
For requests or suggestions regarding this mailing list archive please write to netboot@gkminix.han.de.