From e7afcf22fd0edf886dc2b73cd6307aaab661ef16 Mon Sep 17 00:00:00 2001 From: "mcgreer%netscape.com" Date: Wed, 11 Oct 2000 00:56:32 +0000 Subject: [PATCH] add a new function, SECU_TextFileToItem, for reading text files. git-svn-id: svn://10.0.0.236/trunk@80875 18797224-902f-48f8-a5cc-f745e15eee43 --- mozilla/security/nss/cmd/lib/secutil.c | 43 +++++++++++++++++++++++--- mozilla/security/nss/cmd/lib/secutil.h | 1 + 2 files changed, 39 insertions(+), 5 deletions(-) diff --git a/mozilla/security/nss/cmd/lib/secutil.c b/mozilla/security/nss/cmd/lib/secutil.c index 5e74afadf63..3d27d5ca27e 100644 --- a/mozilla/security/nss/cmd/lib/secutil.c +++ b/mozilla/security/nss/cmd/lib/secutil.c @@ -1027,6 +1027,40 @@ secu_StdinToItem(SECItem *dst) SECStatus SECU_FileToItem(SECItem *dst, PRFileDesc *src) +{ + PRFileInfo info; + PRInt32 numBytes; + PRStatus prStatus; + + if (src == PR_STDIN) + return secu_StdinToItem(dst); + + prStatus = PR_GetOpenFileInfo(src, &info); + + if (prStatus != PR_SUCCESS) { + PORT_SetError(SEC_ERROR_IO); + return SECFailure; + } + + /* XXX workaround for 3.1, not all utils zero dst before sending */ + dst->data = 0; + if (!SECITEM_AllocItem(NULL, dst, info.size)) + goto loser; + + numBytes = PR_Read(src, dst->data, info.size); + if (numBytes != info.size) { + PORT_SetError(SEC_ERROR_IO); + goto loser; + } + + return SECSuccess; +loser: + SECITEM_FreeItem(dst, PR_FALSE); + return SECFailure; +} + +SECStatus +SECU_TextFileToItem(SECItem *dst, PRFileDesc *src) { PRFileInfo info; PRInt32 numBytes; @@ -1053,11 +1087,10 @@ SECU_FileToItem(SECItem *dst, PRFileDesc *src) goto loser; } - /* XXX workaround for 3.1, function needs to take a "chop" arg - while (buf[numBytes-1] == '\r' || - buf[numBytes-1] == '\n' || - buf[numBytes-1] == '\0') numBytes--; - */ + if (buf[numBytes-1] == '\n') numBytes--; +#ifdef _WINDOWS + if (buf[numBytes-1] == '\r') numBytes--; +#endif /* XXX workaround for 3.1, not all utils zero dst before sending */ dst->data = 0; diff --git a/mozilla/security/nss/cmd/lib/secutil.h b/mozilla/security/nss/cmd/lib/secutil.h index 17f22cc4c81..b35bd84342e 100644 --- a/mozilla/security/nss/cmd/lib/secutil.h +++ b/mozilla/security/nss/cmd/lib/secutil.h @@ -193,6 +193,7 @@ extern const char * SECU_Strerror(PRErrorCode errNum); /* Read the contents of a file into a SECItem */ extern SECStatus SECU_FileToItem(SECItem *dst, PRFileDesc *src); +extern SECStatus SECU_TextFileToItem(SECItem *dst, PRFileDesc *src); /* Read in a DER from a file, may be ascii */ extern SECStatus