On Sun, 8 Feb 2009, Bart Mortelmans wrote:

> Hi Davide,
> 
> That was quick! :-)
> 
> 
> I get this response when applying the patch:
> ===
> patching file SMAILUtils.cpp
> patch: **** malformed patch at line 7: }
> ===

OK, lets try as attachment ...


- Davide

diff --git a/SMAILUtils.cpp b/SMAILUtils.cpp
index f7f5dba..6deef5d 100644
--- a/SMAILUtils.cpp
+++ b/SMAILUtils.cpp
@@ -932,12 +932,13 @@ int USmlGetMsgFileSection(SPLF_HANDLE hFSpool, FileSection &FSect)
 	return 0;
 }
 
-int USmlWriteMailFile(SPLF_HANDLE hFSpool, FILE *pMsgFile)
+int USmlWriteMailFile(SPLF_HANDLE hFSpool, FILE *pMsgFile, bool bMBoxFile)
 {
 	SpoolFileData *pSFD = (SpoolFileData *) hFSpool;
 
 	/* Dump message tags */
-	if (USmlDumpHeaders(pMsgFile, pSFD->hTagList, SYS_EOL) < 0)
+	if (USmlDumpHeaders(pMsgFile, pSFD->hTagList,
+			    bMBoxFile ? SYS_EOL: "\r\n") < 0)
 		return ErrGetErrorCode();
 
 	fputs(SYS_EOL, pMsgFile);
@@ -949,19 +950,26 @@ int USmlWriteMailFile(SPLF_HANDLE hFSpool, FILE *pMsgFile)
 		ErrSetErrorCode(ERR_FILE_OPEN, pSFD->szMessFilePath);
 		return ERR_FILE_OPEN;
 	}
+
+	bool bWantCRLF = !bMBoxFile;
+
 #ifdef SYS_CRLF_EOL
-	if (MscCopyFile(pMsgFile, pMessFile, pSFD->llMailDataOffset,
-			(SYS_OFF_T) -1) < 0) {
-		fclose(pMessFile);
-		return ErrGetErrorCode();
-	}
-#else
-	Sys_fseek(pMessFile, pSFD->llMailDataOffset, SEEK_SET);
-	if (MscDos2UnixFile(pMsgFile, pMessFile) < 0) {
-		fclose(pMessFile);
-		return ErrGetErrorCode();
-	}
+	if (!bWantCRLF)
+		bWantCRLF = true;
 #endif
+	if (bWantCRLF) {
+		if (MscCopyFile(pMsgFile, pMessFile, pSFD->llMailDataOffset,
+				(SYS_OFF_T) -1) < 0) {
+			fclose(pMessFile);
+			return ErrGetErrorCode();
+		}
+	} else {
+		Sys_fseek(pMessFile, pSFD->llMailDataOffset, SEEK_SET);
+		if (MscDos2UnixFile(pMsgFile, pMessFile) < 0) {
+			fclose(pMessFile);
+			return ErrGetErrorCode();
+		}
+	}
 	fclose(pMessFile);
 
 	return 0;
@@ -1120,7 +1128,7 @@ int USmlCreateMBFile(UserInfo *pUI, const char *pszFileName, SPLF_HANDLE hFSpool
 		SysFree(pszReturnPath);
 
 	/* Write mail file */
-	if (USmlWriteMailFile(hFSpool, pMBFile) < 0) {
+	if (USmlWriteMailFile(hFSpool, pMBFile, true) < 0) {
 		ErrorPush();
 		fclose(pMBFile);
 		SysRemove(pszFileName);
diff --git a/SMAILUtils.h b/SMAILUtils.h
index 74c0f77..3e1bf73 100644
--- a/SMAILUtils.h
+++ b/SMAILUtils.h
@@ -77,7 +77,7 @@ const char *USmlSendRcptTo(SPLF_HANDLE hFSpool);
 SYS_OFF_T USmlMessageSize(SPLF_HANDLE hFSpool);
 int USmlSyncChanges(SPLF_HANDLE hFSpool);
 int USmlGetMsgFileSection(SPLF_HANDLE hFSpool, FileSection &FSect);
-int USmlWriteMailFile(SPLF_HANDLE hFSpool, FILE *pMsgFile);
+int USmlWriteMailFile(SPLF_HANDLE hFSpool, FILE *pMsgFile, bool bMBoxFile = false);
 char *USmlGetTag(SPLF_HANDLE hFSpool, const char *pszTagName, TAG_POSITION &TagPosition);
 int USmlAddTag(SPLF_HANDLE hFSpool, const char *pszTagName,
 	       const char *pszTagData, int iUpdate = 0);
_______________________________________________
xmail mailing list
xmail@xmailserver.org
http://xmailserver.org/mailman/listinfo/xmail

Reply via email to