diff --git a/Tools/unix/cpmtools/Makefile b/Tools/unix/cpmtools/Makefile index 12c1f508..8c56b657 100644 --- a/Tools/unix/cpmtools/Makefile +++ b/Tools/unix/cpmtools/Makefile @@ -10,11 +10,14 @@ CFLAGS = -g DEFFORMAT = ibm-3740 DEVICE = posix +DISKDEFS=$(shell cd ../../cpmtools ; pwd)/diskdefs +DEFFORMAT=wbw_fd144 + CPPFLAGS = -DDISKDEFS=\"$(DISKDEFS)\" -DFORMAT=\"$(DEFFORMAT)\" DEVICEOBJ = device_posix.o -OBJECTS = cpmls cpmrm cpmcp cpmchmod cpmchattr mkfs.cpm fsck.cpm +OBJECTS = cpmls cpmrm cpmcp cpmchmod cpmchattr mkfs.cpm fsck.cpm fsed.cpm all: $(OBJECTS) $(DEST) cp $(OBJECTS) $(DEST) @@ -41,7 +44,7 @@ fsck.cpm: fsck.cpm.o cpmfs.o getopt.o getopt1.o $(DEVICEOBJ) $(CC) $(LDFLAGS) -o $@ fsck.cpm.o cpmfs.o getopt.o getopt1.o $(DEVICEOBJ) fsed.cpm: fsed.cpm.o cpmfs.o getopt.o getopt1.o $(DEVICEOBJ) - $(CC) $(LDFLAGS) -o $@ fsed.cpm.o cpmfs.o getopt.o getopt1.o $(DEVICEOBJ) + $(CC) $(LDFLAGS) -o $@ fsed.cpm.o cpmfs.o getopt.o getopt1.o $(DEVICEOBJ) -lncurses $(DEST): mkdir -p $(DEST) diff --git a/Tools/unix/cpmtools/config.h b/Tools/unix/cpmtools/config.h index 2b5cd544..45bf194d 100644 --- a/Tools/unix/cpmtools/config.h +++ b/Tools/unix/cpmtools/config.h @@ -8,7 +8,7 @@ #define HAVE_SYS_TYPES_H 1 #define HAVE_SYS_STAT_H 1 #define HAVE_MODE_T 0 -#define NEED_NCURSES 0 +#define NEED_NCURSES 1 #define HAVE_NCURSES_NCURSES_H 0 #if HAVE_SYS_STAT_H diff --git a/Tools/unix/cpmtools/cpmfs.c b/Tools/unix/cpmtools/cpmfs.c index 750b3ce6..dfd43b92 100644 --- a/Tools/unix/cpmtools/cpmfs.c +++ b/Tools/unix/cpmtools/cpmfs.c @@ -668,6 +668,24 @@ void cpmglob(int optin, int argc, char * const argv[], struct cpmInode *root, in } /*}}}*/ +FILE *open_diskdefs() +{ + FILE *fp; + char *ddenv = getenv("DISKDEFS"); + + if (fp=fopen("diskdefs","r")) + return fp; + if (fp=fopen(DISKDEFS,"r")) + return fp; + if (ddenv) + if (fp=fopen(ddenv,"r")) + return fp; + fprintf(stderr,"%s: Neither diskdefs%s%s%s nor %s could be opened.\n", + cmd, + ddenv ? ", ": "", ddenv ? ddenv : "", ddenv ? "," : "" , DISKDEFS); + exit(1); +} + /* superblock management */ /* diskdefReadSuper -- read super block from diskdefs file */ /*{{{*/ static int diskdefReadSuper(struct cpmSuperBlock *d, const char *format) @@ -675,18 +693,11 @@ static int diskdefReadSuper(struct cpmSuperBlock *d, const char *format) char line[256]; FILE *fp; int insideDef=0,found=0; - char *ddenv = getenv("DISKDEFS"); d->libdskGeometry[0] = '\0'; d->type=0; - if ( - (fp=fopen("diskdefs","r"))==(FILE*)0 && - (ddenv && ((fp=fopen(ddenv,"r"))==(FILE*)0)) && - (fp=fopen(DISKDEFS,"r"))==(FILE*)0) - { - fprintf(stderr,"%s: Neither `diskdefs' nor `" DISKDEFS "' could be opened.\n",cmd); - exit(1); - } + fp = open_diskdefs(); + while (fgets(line,sizeof(line),fp)!=(char*)0) { int argc;