X-Git-Url: https://git.gag.com/?a=blobdiff_plain;f=fsck.cpm.c;h=585015b0cac3f91db0cc337b4bf42004dbd4d3e4;hb=b1e873c5b2f6376bb39ff0fda1464cbbacbae5f7;hp=572823b1c7ce537466b25d84b3b0585b5d5a937b;hpb=32087c67d53a8f8058b359388f23e2dbc9436d54;p=debian%2Fcpmtools diff --git a/fsck.cpm.c b/fsck.cpm.c index 572823b..585015b 100644 --- a/fsck.cpm.c +++ b/fsck.cpm.c @@ -1,17 +1,20 @@ /* #includes */ /*{{{C}}}*//*{{{*/ +#include "config.h" + #include #include #include #include +#include #include -#include "config.h" - -extern char *optarg; -extern int optind,opterr,optopt; -int getopt(int argc, char * const *argv, const char *optstring); +#include "getopt_.h" #include "cpmdir.h" #include "cpmfs.h" + +#ifdef USE_DMALLOC +#include +#endif /*}}}*/ /* #defines */ /*{{{*/ /* your favourite password *:-) */ @@ -246,7 +249,7 @@ static int fsck(struct cpmInode *root, const char *image) if (block>0) { ++usedBlocks; - if (blockmax) + if (block=max) { printf("Error: Bad block number (extent=%d, name=\"%s\", block=%d)\n",extent,prfile(sb,extent),block); if (ask("Remove file")) @@ -568,13 +571,14 @@ int main(int argc, char *argv[]) { const char *err; const char *image; - const char *format=FORMAT; + const char *format; const char *devopts=NULL; int c,usage=0; struct cpmSuperBlock sb; struct cpmInode root; enum Result ret; + if (!(format=getenv("CPMTOOLSFMT"))) format=FORMAT; while ((c=getopt(argc,argv,"T:f:nh?"))!=EOF) switch(c) { case 'f': format=optarg; break; @@ -585,7 +589,7 @@ int main(int argc, char *argv[]) } if (optind!=(argc-1)) usage=1; - else image=argv[optind]; + else image=argv[optind++]; if (usage) { @@ -596,15 +600,19 @@ int main(int argc, char *argv[]) { if ((err=Device_open(&sb.dev, image,O_RDONLY, devopts))) { - fprintf(stderr,"%s: can not open %s: %s\n",cmd,image,err); + fprintf(stderr,"%s: cannot open %s: %s\n",cmd,image,err); exit(1); } else { - fprintf(stderr,"%s: can not open %s for writing, no repair possible\n",cmd,image); + fprintf(stderr,"%s: cannot open %s for writing, no repair possible\n",cmd,image); } } - cpmReadSuper(&sb,&root,format); + if (cpmReadSuper(&sb,&root,format)==-1) + { + fprintf(stderr,"%s: cannot read superblock (%s)\n",cmd,boo); + exit(1); + } ret=fsck(&root,image); if (ret&MODIFIED) {