Improved the way TRIMDIR conditional compilation is done

This commit is contained in:
Bobbi Webber-Manners 2020-06-14 02:52:09 -04:00
parent 31f8c72ab3
commit 96c3f0c17a
2 changed files with 10 additions and 6 deletions

View File

@ -3,7 +3,9 @@
* *
* Bobbi January-June 2020 * Bobbi January-June 2020
* *
* TODO: *** When trimming dirs fix EOF in directory header *** * TODO: EOF length for directories
* 1) Check this in readir() if I am not doing so already
* 2) When trimming a directory, need to update EOF for parent entry
* 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
* *
* Revision History * Revision History
@ -39,6 +41,7 @@
* v0.79 Trim unused directory blocks after sorting. Write freelist to disk. * v0.79 Trim unused directory blocks after sorting. Write freelist to disk.
* v0.80 Reinstated no-op sort (useful for compacting dir without reordering). * v0.80 Reinstated no-op sort (useful for compacting dir without reordering).
* v0.81 Do not trim volume directory to <4 blocks. * v0.81 Do not trim volume directory to <4 blocks.
* v0.82 Minor fix to TRIMDIR conditional compilation.
*/ */
//#pragma debug 9 //#pragma debug 9
@ -1872,6 +1875,8 @@ uchar sortblock(uint device, uint dstblk) {
if (lastlistent > numfiles - 1) { if (lastlistent > numfiles - 1) {
lastlistent = numfiles - 1; lastlistent = numfiles - 1;
#ifdef TRIMDIR
// TODO: Fix EOF for directory // TODO: Fix EOF for directory
#ifdef AUXMEM #ifdef AUXMEM
dirblkbuf[2] = dirblkbuf[3] = 0; /* Set next ptr to NULL */ dirblkbuf[2] = dirblkbuf[3] = 0; /* Set next ptr to NULL */
@ -1879,6 +1884,9 @@ uchar sortblock(uint device, uint dstblk) {
p->data[2] = p->data[3] = 0; /* Set next ptr to NULL */ p->data[2] = p->data[3] = 0; /* Set next ptr to NULL */
#endif #endif
rc = 1; rc = 1;
#else
rc = 0;
#endif
} }
for (i = firstlistent; i <= lastlistent; ++i) { for (i = firstlistent; i <= lastlistent; ++i) {
@ -1903,7 +1911,6 @@ uchar writedir(uchar device) {
err(NONFATAL, err_wtblk1, b->blocknum); err(NONFATAL, err_wtblk1, b->blocknum);
return 1; return 1;
} }
#ifdef TRIMDIR
} else { } else {
/* Standard volume directory is blocks 2-5 (4 blocks) /* Standard volume directory is blocks 2-5 (4 blocks)
* We will not trim volume directory to less than 4 blocks * We will not trim volume directory to less than 4 blocks
@ -1913,9 +1920,6 @@ uchar writedir(uchar device) {
trimdirblock(b->blocknum); trimdirblock(b->blocknum);
} }
} }
#else
}
#endif
b = b->next; b = b->next;
} }
return 0; return 0;
@ -1978,7 +1982,7 @@ void interactive(void) {
revers(1); revers(1);
hlinechar(' '); hlinechar(' ');
fputs("S O R T D I R v0.81 alpha Use ^ to return to previous question", stdout); fputs("S O R T D I R v0.82 alpha Use ^ to return to previous question", stdout);
hlinechar(' '); hlinechar(' ');
revers(0); revers(0);

Binary file not shown.