summaryrefslogtreecommitdiffstats
path: root/runtime/stream.c
diff options
context:
space:
mode:
Diffstat (limited to 'runtime/stream.c')
-rw-r--r--runtime/stream.c19
1 files changed, 18 insertions, 1 deletions
diff --git a/runtime/stream.c b/runtime/stream.c
index e411577f..19daaed6 100644
--- a/runtime/stream.c
+++ b/runtime/stream.c
@@ -259,6 +259,8 @@ doPhysOpen(strm_t *pThis)
CHKiRet(pThis->cryprov->OnFileOpen(pThis->cryprovData,
pThis->pszCurrFName, &pThis->cryprovFileData,
(pThis->tOperationsMode == STREAMMODE_READ) ? 'r' : 'w'));
+dbgprintf("DDDD: stream bDeleteOnClose %d\n", pThis->bDeleteOnClose);
+ pThis->cryprov->SetDeleteOnClose(pThis->cryprovFileData, pThis->bDeleteOnClose);
}
finalize_it:
RETiRet;
@@ -406,6 +408,12 @@ static rsRetVal strmCloseFile(strm_t *pThis)
}
}
+ /* if we have a signature provider, we must make sure that the crypto
+ * state files are opened and proper close processing happens. */
+ if(pThis->fd == -1) {
+ strmOpenFile(pThis);
+ }
+
/* the file may already be closed (or never have opened), so guard
* against this. -- rgerhards, 2010-03-19
*/
@@ -1611,7 +1619,6 @@ finalize_it:
/* property set methods */
/* simple ones first */
-DEFpropSetMeth(strm, bDeleteOnClose, int)
DEFpropSetMeth(strm, iMaxFileSize, int)
DEFpropSetMeth(strm, iFileNumDigits, int)
DEFpropSetMeth(strm, tOperationsMode, int)
@@ -1627,6 +1634,16 @@ DEFpropSetMeth(strm, pszSizeLimitCmd, uchar*)
DEFpropSetMeth(strm, cryprov, cryprov_if_t*)
DEFpropSetMeth(strm, cryprovData, void*)
+static rsRetVal strmSetbDeleteOnClose(strm_t *pThis, int val)
+{
+ pThis->bDeleteOnClose = val;
+ if(pThis->cryprov != NULL) {
+dbgprintf("DDDD: set stream bDeleteOnClose %d\n", pThis->bDeleteOnClose);
+ pThis->cryprov->SetDeleteOnClose(pThis->cryprovFileData, pThis->bDeleteOnClose);
+ }
+ return RS_RET_OK;
+}
+
static rsRetVal strmSetiMaxFiles(strm_t *pThis, int iNewVal)
{
pThis->iMaxFiles = iNewVal;