mirror of
https://github.com/bobbimanners/ProDOS-Utils.git
synced 2024-06-08 19:29:28 +00:00
Fixed crash when there are too many files in a dir to sort
This commit is contained in:
parent
ecdc1661e1
commit
b131648b6e
12
sortdir.c
12
sortdir.c
|
@ -4,8 +4,8 @@
|
||||||
* Bobbi January-June 2020
|
* Bobbi January-June 2020
|
||||||
*
|
*
|
||||||
* TODO: Fix bug - blocks used count is incorrect.
|
* TODO: Fix bug - blocks used count is incorrect.
|
||||||
* TODO: Fix bug - when 'too many files' should skip dir and continue.
|
* TODO: Fix bug - if too many files in a directory the blocks of the remaining
|
||||||
* Right now it tries to sort, then hangs.
|
* files are not marked as used.
|
||||||
* TODO: zeroblock() is NO-OP at present
|
* TODO: zeroblock() is NO-OP at present
|
||||||
* TODO: Need code to write out modified freelist if there are fixes
|
* TODO: Need code to write out modified freelist if there are fixes
|
||||||
* TODO: Get both ProDOS-8 and GNO versions to build from this source
|
* TODO: Get both ProDOS-8 and GNO versions to build from this source
|
||||||
|
@ -37,6 +37,7 @@
|
||||||
* v0.72 Initial support for freelist and usedlist in aux mem. (Slow!)
|
* v0.72 Initial support for freelist and usedlist in aux mem. (Slow!)
|
||||||
* v0.73 Speedup to checkfreeandused();
|
* v0.73 Speedup to checkfreeandused();
|
||||||
* v0.74 Eliminate no-op sort.
|
* v0.74 Eliminate no-op sort.
|
||||||
|
* v0.75 Fix bug - crash when too many files to sort.
|
||||||
*/
|
*/
|
||||||
|
|
||||||
//#pragma debug 9
|
//#pragma debug 9
|
||||||
|
@ -246,7 +247,7 @@ static const char err_forksz3[] = "%s fork size %u is wrong, should be %u";
|
||||||
static const char err_used2[] = "Blks used %u is wrong, should be %u";
|
static const char err_used2[] = "Blks used %u is wrong, should be %u";
|
||||||
static const char err_many[] = "Too many files to sort";
|
static const char err_many[] = "Too many files to sort";
|
||||||
static const char err_count2[] = "Filecount %u wrong, should be %u";
|
static const char err_count2[] = "Filecount %u wrong, should be %u";
|
||||||
static const char err_nosort[] = "Errors ... will not sort";
|
static const char err_nosort[] = "Not sorting due to errors";
|
||||||
#ifdef FREELIST
|
#ifdef FREELIST
|
||||||
static const char err_rdfl[] = "Can't read free list";
|
static const char err_rdfl[] = "Can't read free list";
|
||||||
static const char err_blfree1[] = "In use blk %u is marked free";
|
static const char err_blfree1[] = "In use blk %u is marked free";
|
||||||
|
@ -1932,7 +1933,7 @@ void interactive(void) {
|
||||||
|
|
||||||
revers(1);
|
revers(1);
|
||||||
hlinechar(' ');
|
hlinechar(' ');
|
||||||
fputs("S O R T D I R v0.74 alpha Use ^ to return to previous question", stdout);
|
fputs("S O R T D I R v0.75 alpha Use ^ to return to previous question", stdout);
|
||||||
hlinechar(' ');
|
hlinechar(' ');
|
||||||
revers(0);
|
revers(0);
|
||||||
|
|
||||||
|
@ -2052,8 +2053,9 @@ void processdir(uint device, uint blocknum) {
|
||||||
uchar i, errs;
|
uchar i, errs;
|
||||||
flushall();
|
flushall();
|
||||||
errs = readdir(device, blocknum);
|
errs = readdir(device, blocknum);
|
||||||
if ((strlen(fixopts) == 0) && errs) {
|
if (errs != 0) {
|
||||||
err(NONFATAL, err_nosort);
|
err(NONFATAL, err_nosort);
|
||||||
|
putchar('\n');
|
||||||
goto done;
|
goto done;
|
||||||
}
|
}
|
||||||
#ifdef SORT
|
#ifdef SORT
|
||||||
|
|
BIN
sortdir.po
BIN
sortdir.po
Binary file not shown.
Loading…
Reference in New Issue
Block a user