From 1ce645ec0db600c5f2e17b7067f7796786d74d71 Mon Sep 17 00:00:00 2001 From: Stephen Heumann Date: Mon, 1 Oct 2018 22:42:33 -0500 Subject: [PATCH] Add flag controlling whether to use cache. --- cdev.c | 14 +++++++++++--- cdev.rez | 16 ++++++++++++++++ driver.c | 2 +- mounturl.c | 1 + mounturl.h | 4 ++++ 5 files changed, 33 insertions(+), 4 deletions(-) diff --git a/cdev.c b/cdev.c index bc4047b..27092a1 100644 --- a/cdev.c +++ b/cdev.c @@ -34,6 +34,7 @@ #define mountBtn 1 //#define optionsPopUp 6 //#define trianglePic 7 +#define useCacheChk 8 #define netDiskMissingError 3000 #define mountURLError 3001 @@ -46,6 +47,8 @@ char urlBuf[257]; WindowPtr wPtr = NULL; +Boolean useCache; + struct MountURLRec mountURLRec = {sizeof(struct MountURLRec)}; void DoMount(void) @@ -83,6 +86,11 @@ void DoMount(void) TCPIPConnect(NULL); mountURLRec.result = NETDISK_NOT_PRESENT; + + mountURLRec.flags = 0; + if (useCache) { + mountURLRec.flags |= flgUseCache; + } SendRequest(MountURL, sendToName|stopAfterOne, (Long)NETDISK_REQUEST_NAME, (Long)&mountURLRec, NULL); @@ -108,14 +116,13 @@ void DoMount(void) void DoHit(long ctlID, CtlRecHndl ctlHandle) { - CtlRecHndl oldMenuBar; - Word menuItem; - if (!wPtr) /* shouldn't happen */ return; if (ctlID == mountBtn) { DoMount(); + } else if (ctlID == useCacheChk) { + useCache = !useCache; } return; @@ -179,6 +186,7 @@ void DoCreate(WindowPtr windPtr) wPtr = windPtr; mode = (GetMasterSCB() & scbColorMode) ? 640 : 320; NewControl2(wPtr, resourceToResource, mode); + useCache = TRUE; } LongWord cdevMain (LongWord data2, LongWord data1, Word message) diff --git a/cdev.rez b/cdev.rez index 0841cbf..5e93163 100644 --- a/cdev.rez +++ b/cdev.rez @@ -87,6 +87,7 @@ resource rIcon (1) { #define mountBtn 1 //#define optionsPopUp 6 //#define trianglePic 7 +#define useCacheChk 8 #define helpTxt 5 @@ -98,6 +99,7 @@ resource rControlList (640) { { cdevWindow+imageURLTxt, cdevWindow+urlLine, + cdevWindow+useCacheChk, cdevWindow+mountBtn, //cdevWindow+trianglePic, //cdevWindow+optionsPopUp @@ -108,6 +110,7 @@ resource rControlList (320) { { cdevWindow+imageURLTxt, cdevWindow+urlLine, + cdevWindow+useCacheChk, cdevWindow+mountBtn, //cdevWindow+trianglePic+320, //cdevWindow+optionsPopUp+320 @@ -158,6 +161,19 @@ resource rControlTemplate (cdevWindow+mountBtn) { resource rPString(cdevWindow+mountBtn) { "Mount Disk Image" }; +resource rControlTemplate (cdevWindow+useCacheChk) { + useCacheChk, + {37,10,0,0}, + CheckControl {{ + $0000, + $1002, + 0, + cdevWindow+useCacheChk, /* Title ref */ + 1 /* initial value */ + }}; +}; +resource rPString (cdevWindow+useCacheChk) {"Use Disk Cache"}; + #if 0 /* Options menu pop-up -- separate versions for 640 mode and 320 mode */ resource rControlTemplate (cdevWindow+optionsPopUp) { diff --git a/driver.c b/driver.c index d5b0361..616009e 100644 --- a/driver.c +++ b/driver.c @@ -251,7 +251,7 @@ static Word DoMountURL(struct GSOSDP *dp) { mountURLRec->result = OUT_OF_MEMORY; return drvrNoResrc; } - sess->useCache = TRUE; + sess->useCache = (mountURLRec->flags & flgUseCache); err = SetURL(sess, mountURLRec->url, TRUE, FALSE); if (err != OPERATION_SUCCESSFUL) { diff --git a/mounturl.c b/mounturl.c index 7cfc78e..0abd8ee 100644 --- a/mounturl.c +++ b/mounturl.c @@ -11,6 +11,7 @@ int main(int argc, char **argv) { struct MountURLRec mountURLRec = {sizeof(struct MountURLRec)}; mountURLRec.result = NETDISK_NOT_PRESENT; mountURLRec.url = argv[1]; + mountURLRec.flags = flgUseCache; SendRequest(MountURL, sendToName|stopAfterOne, (Long)NETDISK_REQUEST_NAME, (Long)&mountURLRec, NULL); diff --git a/mounturl.h b/mounturl.h index 96009ef..ba2a2be 100644 --- a/mounturl.h +++ b/mounturl.h @@ -8,10 +8,14 @@ #define NETDISK_REQUEST_NAME "\pSTH~NetDisk~" +/* Bits in flags */ +#define flgUseCache 0x0001 + struct MountURLRec { Word byteCount; enum NetDiskError result; /* output value */ char *url; /* C-string; will be modified */ + Word flags; Word devNum; /* output value: device number */ };