From 723428bebe3105ad3c3406e416402d1831b482c4 Mon Sep 17 00:00:00 2001 From: Andrew Lee Date: Sun, 15 Aug 2021 00:16:45 -0400 Subject: Inital commit --- linux/tools/build.c | 68 +++++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 68 insertions(+) create mode 100644 linux/tools/build.c (limited to 'linux/tools') diff --git a/linux/tools/build.c b/linux/tools/build.c new file mode 100644 index 0000000..6afe58c --- /dev/null +++ b/linux/tools/build.c @@ -0,0 +1,68 @@ +#include /* fprintf */ +#include /* contains exit */ +#include /* unistd.h needs this */ +#include /* contains read/write */ +#include + +#define MINIX_HEADER 32 +#define GCC_HEADER 1024 + +void die(char * str) +{ + fprintf(stderr,"%s\n",str); + exit(1); +} + +void usage(void) +{ + die("Usage: build boot system [> image]"); +} + +int main(int argc, char ** argv) +{ + int i,c,id; + char buf[1024]; + + if (argc != 3) + usage(); + for (i=0;i510) + die("Boot block may not exceed 510 bytes"); + buf[510]=0x55; + buf[511]=0xAA; + i=write(1,buf,512); + if (i!=512) + die("Write call failed"); + close (id); + + if ((id=open(argv[2],O_RDONLY,0))<0) + die("Unable to open 'system'"); + if (read(id,buf,GCC_HEADER) != GCC_HEADER) + die("Unable to read header of 'system'"); + if (((long *) buf)[5] != 0) + die("Non-GCC header of 'system'"); + for (i=0 ; (c=read(id,buf,sizeof buf))>0 ; i+=c ) + if (write(1,buf,c)!=c) + die("Write call failed"); + close(id); + fprintf(stderr,"System %d bytes.\n",i); + return(0); +} -- cgit v1.2.3