Submitted By: Andrew Benton <andy@benton.eu.com>
Date: 2012-04-23
Initial Package Version: 12.0
Upstream Status: Submitted to  Mozilla Bugzilla bug #733867 (not by me)
Origin: partly from http://gcc.gnu.org/gcc-4.7/porting_to.html and partly from
Mozilla Bugzilla bug #733867
Description: Fixes compiling thunderbird-12.0 with gcc-4.7
The same effect can be achieved with these seds:

sed -i '/fcntl.h/a#include <unistd.h>' \
mozilla/ipc/chromium/src/base/file_util_linux.cc
sed -i '/fcntl.h/a#include <unistd.h>' \
mozilla/ipc/chromium/src/base/message_pump_libevent.cc
sed -i '/sys\/time\.h/a#include <unistd.h>' \
mozilla/ipc/chromium/src/base/time_posix.cc
sed -i 's#"MSG_LINEBREAK#" MSG_LINEBREAK#g;s#"CRLF#" CRLF#g' \
mailnews/mime/src/mimemult.cpp \
mailnews/mime/src/mimedrft.cpp \
mailnews/local/src/nsPop3Protocol.cpp \
mailnews/imap/src/nsImapServerResponseParser.cpp \
mailnews/imap/src/nsImapProtocol.cpp \
mailnews/imap/src/nsImapMailFolder.cpp \
mailnews/compose/src/nsSmtpProtocol.cpp \
mailnews/base/src/nsMsgFolderCompactor.cpp \
mailnews/base/search/src/nsMsgSearchAdapter.cpp
 

diff -Naur comm-release-orig/mailnews/base/search/src/nsMsgSearchAdapter.cpp comm-release/mailnews/base/search/src/nsMsgSearchAdapter.cpp
--- comm-release-orig/mailnews/base/search/src/nsMsgSearchAdapter.cpp	2012-04-20 23:32:15.000000000 +0100
+++ comm-release/mailnews/base/search/src/nsMsgSearchAdapter.cpp	2012-04-23 11:04:20.605341981 +0100
@@ -688,7 +688,7 @@
     PL_strcat(encoding, "{");
     lengthStr.AppendInt((PRInt32) strlen(value));
     PL_strcat(encoding, lengthStr.get());
-    PL_strcat(encoding, "}"CRLF);
+    PL_strcat(encoding, "}" CRLF);
     PL_strcat(encoding, value);
     return NS_OK;
   }
diff -Naur comm-release-orig/mailnews/base/src/nsMsgFolderCompactor.cpp comm-release/mailnews/base/src/nsMsgFolderCompactor.cpp
--- comm-release-orig/mailnews/base/src/nsMsgFolderCompactor.cpp	2012-04-20 23:32:15.000000000 +0100
+++ comm-release/mailnews/base/src/nsMsgFolderCompactor.cpp	2012-04-23 11:04:20.588675565 +0100
@@ -758,7 +758,7 @@
           }
         }
       }
-#define EXTRA_KEYWORD_HDR "                                                                                 "MSG_LINEBREAK
+#define EXTRA_KEYWORD_HDR "                                                                                 " MSG_LINEBREAK
 
        // if status offset isn't in the first block, this code won't work. There's no good reason
       // for the status offset not to be at the beginning of the message anyway.
@@ -1216,7 +1216,7 @@
         // check if there's an envelope header; if not, write one.
         if (strncmp(m_dataBuffer, "From ", 5))
         {
-          m_fileStream->Write("From "CRLF, 7, &bytesWritten);
+          m_fileStream->Write("From " CRLF, 7, &bytesWritten);
           m_offlineMsgSize += bytesWritten;
         }
       }
diff -Naur comm-release-orig/mailnews/compose/src/nsSmtpProtocol.cpp comm-release/mailnews/compose/src/nsSmtpProtocol.cpp
--- comm-release-orig/mailnews/compose/src/nsSmtpProtocol.cpp	2012-04-20 23:32:15.000000000 +0100
+++ comm-release/mailnews/compose/src/nsSmtpProtocol.cpp	2012-04-23 11:04:20.548676167 +0100
@@ -1722,7 +1722,7 @@
 {
   m_sendDone = true;
   nsCOMPtr<nsIURI> url = do_QueryInterface(m_runningURL);
-  SendData(url, "QUIT"CRLF); // send a quit command to close the connection with the server.
+  SendData(url, "QUIT" CRLF); // send a quit command to close the connection with the server.
   m_nextState = SMTP_RESPONSE;
   m_nextStateAfterResponse = SMTP_DONE;
   return(0);
@@ -1969,7 +1969,7 @@
     {
       nsCOMPtr<nsIURI> url = do_QueryInterface(m_runningURL);
       // send a quit command to close the connection with the server.
-      if (SendData(url, "QUIT"CRLF) == NS_OK)
+      if (SendData(url, "QUIT" CRLF) == NS_OK)
       {
         m_nextState = SMTP_RESPONSE;
         m_nextStateAfterResponse = SMTP_ERROR_DONE;
diff -Naur comm-release-orig/mailnews/imap/src/nsImapMailFolder.cpp comm-release/mailnews/imap/src/nsImapMailFolder.cpp
--- comm-release-orig/mailnews/imap/src/nsImapMailFolder.cpp	2012-04-20 23:32:15.000000000 +0100
+++ comm-release/mailnews/imap/src/nsImapMailFolder.cpp	2012-04-23 11:04:20.535343034 +0100
@@ -8309,7 +8309,7 @@
           bool needMoreData = false;
           char * newLine = nsnull;
           PRUint32 numBytesInLine = 0;
-          const char *envelope = "From "CRLF;
+          const char *envelope = "From " CRLF;
           offlineStore->Write(envelope, strlen(envelope), &bytesWritten);
           fileSize += bytesWritten;
           do
diff -Naur comm-release-orig/mailnews/imap/src/nsImapProtocol.cpp comm-release/mailnews/imap/src/nsImapProtocol.cpp
--- comm-release-orig/mailnews/imap/src/nsImapProtocol.cpp	2012-04-20 23:32:15.000000000 +0100
+++ comm-release/mailnews/imap/src/nsImapProtocol.cpp	2012-04-23 11:04:20.505343485 +0100
@@ -1409,7 +1409,7 @@
 {
   // PRInt32 oldRecent = GetServerStateParser().NumberOfRecentMessages();
   nsCAutoString commandBuffer(GetServerCommandTag());
-  commandBuffer.Append(" IDLE"CRLF);
+  commandBuffer.Append(" IDLE" CRLF);
 
   do
   {
@@ -3287,7 +3287,7 @@
     commandString.Append(messageIds);
     commandString.Append(" (");
     commandString.Append(attribute);
-    commandString.Append(")"CRLF);
+    commandString.Append(")" CRLF);
     nsresult rv = SendData(commandString.get());
 
     if (NS_SUCCEEDED(rv))
@@ -5283,7 +5283,7 @@
 
   IncrementCommandTagNumber();
   nsCAutoString command(GetServerCommandTag());
-  command.Append(" expunge"CRLF);
+  command.Append(" expunge" CRLF);
 
   nsresult rv = SendData(command.get());
   if (NS_SUCCEEDED(rv))
@@ -5359,7 +5359,7 @@
   command.Append(gAppName);
   command.Append("\" \"version\" \"");
   command.Append(gAppVersion);
-  command.Append("\")"CRLF);
+  command.Append("\")" CRLF);
 
   nsresult rv = SendData(command.get());
   if (NS_SUCCEEDED(rv))
@@ -5816,7 +5816,7 @@
     nsCAutoString correctedPassword;
     EscapeUserNamePasswordString(password.get(), &correctedPassword);
     command.Append(correctedPassword);
-    command.Append("\""CRLF);
+    command.Append("\"" CRLF);
     rv = SendData(command.get(), true /* suppress logging */);
     NS_ENSURE_SUCCESS(rv, rv);
     ParseIMAPandCheckForNewMail();
@@ -7447,7 +7447,7 @@
   nsCString command(GetServerCommandTag());
   command += " create \"";
   command += escapedName;
-  command += "\""CRLF;
+  command += "\"" CRLF;
 
   nsresult rv = SendData(command.get());
   if(NS_SUCCEEDED(rv))
@@ -7550,7 +7550,7 @@
   nsCString command (GetServerCommandTag());
   command += " lsub \"\" \"";
   command += escapedPattern;
-  command += "\""CRLF;
+  command += "\"" CRLF;
 
   PR_Free(boxnameWithOnlineDirectory);
 
@@ -7579,7 +7579,7 @@
   command += useXLIST ?
     " xlist \"\" \"" : " list \"\" \"";
   command += escapedPattern;
-  command += "\""CRLF;
+  command += "\"" CRLF;
 
   PR_Free(boxnameWithOnlineDirectory);
 
@@ -7600,7 +7600,7 @@
   nsCString command (GetServerCommandTag());
   command += " subscribe \"";
   command += escapedName;
-  command += "\""CRLF;
+  command += "\"" CRLF;
 
   nsresult rv = SendData(command.get());
   if (NS_SUCCEEDED(rv))
@@ -7618,7 +7618,7 @@
   nsCString command (GetServerCommandTag());
   command += " unsubscribe \"";
   command += escapedName;
-  command += "\""CRLF;
+  command += "\"" CRLF;
 
   nsresult rv = SendData(command.get());
   if (NS_SUCCEEDED(rv))
@@ -7632,7 +7632,7 @@
   if (m_urlInProgress)
     return;
   nsCAutoString command (GetServerCommandTag());
-  command += " IDLE"CRLF;
+  command += " IDLE" CRLF;
   nsresult rv = SendData(command.get());
   if (NS_SUCCEEDED(rv))
   {
@@ -7659,7 +7659,7 @@
   nsCOMPtr <nsIAsyncInputStream> asyncInputStream = do_QueryInterface(m_inputStream);
   if (asyncInputStream)
     asyncInputStream->AsyncWait(nsnull, 0, 0, nsnull);
-  nsresult rv = SendData("DONE"CRLF);
+  nsresult rv = SendData("DONE" CRLF);
   // set a short timeout if we don't want to wait for a response
   if (m_transport && !waitForResponse)
     m_transport->SetTimeout(nsISocketTransport::TIMEOUT_READ_WRITE, 5);
@@ -7728,8 +7728,8 @@
   PRUint32 msgsHandled = 0;
   const char *formatString;
   formatString = (idsAreUid)
-      ? "%s uid store %s %s"CRLF
-      : "%s store %s %s"CRLF;
+      ? "%s uid store %s %s" CRLF
+      : "%s store %s %s" CRLF;
 
   do
   {
diff -Naur comm-release-orig/mailnews/imap/src/nsImapServerResponseParser.cpp comm-release/mailnews/imap/src/nsImapServerResponseParser.cpp
--- comm-release-orig/mailnews/imap/src/nsImapServerResponseParser.cpp	2012-04-20 23:32:15.000000000 +0100
+++ comm-release/mailnews/imap/src/nsImapServerResponseParser.cpp	2012-04-23 11:04:20.452010953 +0100
@@ -185,7 +185,7 @@
   
   NS_ASSERTION(aCurrentCommand && *aCurrentCommand != '\r' && 
     *aCurrentCommand != '\n' && *aCurrentCommand != ' ', "Invailid command string");
-  bool sendingIdleDone = !strcmp(aCurrentCommand, "DONE"CRLF);
+  bool sendingIdleDone = !strcmp(aCurrentCommand, "DONE" CRLF);
   if (sendingIdleDone)
     fWaitingForMoreClientInput = false;
 
diff -Naur comm-release-orig/mailnews/local/src/nsPop3Protocol.cpp comm-release/mailnews/local/src/nsPop3Protocol.cpp
--- comm-release-orig/mailnews/local/src/nsPop3Protocol.cpp	2012-04-20 23:32:16.000000000 +0100
+++ comm-release/mailnews/local/src/nsPop3Protocol.cpp	2012-04-23 11:04:20.432011254 +0100
@@ -2483,7 +2483,7 @@
         return(MK_OUT_OF_MEMORY);
     m_pop3ConData->next_state_after_response = POP3_GET_LIST;
     m_listpos = 0;
-    return SendData(m_url, "LIST"CRLF);
+    return SendData(m_url, "LIST" CRLF);
 }
 
 
diff -Naur comm-release-orig/mailnews/mime/src/mimedrft.cpp comm-release/mailnews/mime/src/mimedrft.cpp
--- comm-release-orig/mailnews/mime/src/mimedrft.cpp	2012-04-20 23:32:16.000000000 +0100
+++ comm-release/mailnews/mime/src/mimedrft.cpp	2012-04-23 11:04:20.408678271 +0100
@@ -1473,7 +1473,7 @@
                 *newbody = 0;
                 PL_strcatn(newbody, newbodylen, "<PRE>");
                 PL_strcatn(newbody, newbodylen, body);
-                PL_strcatn(newbody, newbodylen, "</PRE>"CRLF);
+                PL_strcatn(newbody, newbodylen, "</PRE>" CRLF);
                 PR_Free(body);
                 body = newbody;
               }
diff -Naur comm-release-orig/mailnews/mime/src/mimemult.cpp comm-release/mailnews/mime/src/mimemult.cpp
--- comm-release-orig/mailnews/mime/src/mimemult.cpp	2012-04-20 23:32:16.000000000 +0100
+++ comm-release/mailnews/mime/src/mimemult.cpp	2012-04-23 11:04:20.402011705 +0100
@@ -280,7 +280,7 @@
             MimeWriteAString(obj, NS_LITERAL_CSTRING(MSG_LINEBREAK));
             MimeWriteAString(obj, NS_LITERAL_CSTRING("Content-Disposition: attachment; filename=\""));
             MimeWriteAString(obj, fileName);
-            MimeWriteAString(obj, NS_LITERAL_CSTRING("\""MSG_LINEBREAK));
+            MimeWriteAString(obj, NS_LITERAL_CSTRING("\"" MSG_LINEBREAK));
             MimeWriteAString(obj, NS_LITERAL_CSTRING("X-Mozilla-External-Attachment-URL: "));
             MimeWriteAString(obj, obj->options->state->detachedFilePath);
             MimeWriteAString(obj, NS_LITERAL_CSTRING(MSG_LINEBREAK));
@@ -293,10 +293,10 @@
             status = MimeWriteAString(obj, header);
             if (status < 0) 
               return status;
-            status = MimeWriteAString(obj, NS_LITERAL_CSTRING("\""MSG_LINEBREAK"Content-Transfer-Encoding: 8bit"MSG_LINEBREAK));
+            status = MimeWriteAString(obj, NS_LITERAL_CSTRING("\"" MSG_LINEBREAK"Content-Transfer-Encoding: 8bit" MSG_LINEBREAK));
             MimeWriteAString(obj, NS_LITERAL_CSTRING("Content-Disposition: inline; filename=\"Deleted: "));
             MimeWriteAString(obj, fileName);
-            MimeWriteAString(obj, NS_LITERAL_CSTRING("\""MSG_LINEBREAK"X-Mozilla-Altered: AttachmentDeleted; date=\""));
+            MimeWriteAString(obj, NS_LITERAL_CSTRING("\"" MSG_LINEBREAK"X-Mozilla-Altered: AttachmentDeleted; date=\""));
           }
           nsCString result;
           char timeBuffer[128];
@@ -306,8 +306,8 @@
                                  "%a %b %d %H:%M:%S %Y",
                                  &now);
           MimeWriteAString(obj, nsDependentCString(timeBuffer));
-          MimeWriteAString(obj, NS_LITERAL_CSTRING("\""MSG_LINEBREAK));
-          MimeWriteAString(obj, NS_LITERAL_CSTRING(MSG_LINEBREAK"You deleted an attachment from this message. The original MIME headers for the attachment were:"MSG_LINEBREAK));
+          MimeWriteAString(obj, NS_LITERAL_CSTRING("\"" MSG_LINEBREAK));
+          MimeWriteAString(obj, NS_LITERAL_CSTRING(MSG_LINEBREAK"You deleted an attachment from this message. The original MIME headers for the attachment were:" MSG_LINEBREAK));
           MimeHeaders_write_raw_headers(mult->hdrs, obj->options, false);
         }
         PRInt32 old_nchildren = container->nchildren;
diff -Naur comm-release-orig/mozilla/ipc/chromium/src/base/file_util_linux.cc comm-release/mozilla/ipc/chromium/src/base/file_util_linux.cc
--- comm-release-orig/mozilla/ipc/chromium/src/base/file_util_linux.cc	2012-04-20 23:39:41.000000000 +0100
+++ comm-release/mozilla/ipc/chromium/src/base/file_util_linux.cc	2012-04-23 11:03:54.892395244 +0100
@@ -5,6 +5,7 @@
 #include "base/file_util.h"
 
 #include <fcntl.h>
+#include <unistd.h>
 
 #include <string>
 #include <vector>
diff -Naur comm-release-orig/mozilla/ipc/chromium/src/base/message_pump_libevent.cc comm-release/mozilla/ipc/chromium/src/base/message_pump_libevent.cc
--- comm-release-orig/mozilla/ipc/chromium/src/base/message_pump_libevent.cc	2012-04-20 23:39:41.000000000 +0100
+++ comm-release/mozilla/ipc/chromium/src/base/message_pump_libevent.cc	2012-04-23 11:04:00.442311789 +0100
@@ -6,6 +6,7 @@
 
 #include <errno.h>
 #include <fcntl.h>
+#include <unistd.h>
 
 #include "eintr_wrapper.h"
 #include "base/logging.h"
diff -Naur comm-release-orig/mozilla/ipc/chromium/src/base/time_posix.cc comm-release/mozilla/ipc/chromium/src/base/time_posix.cc
--- comm-release-orig/mozilla/ipc/chromium/src/base/time_posix.cc	2012-04-20 23:39:42.000000000 +0100
+++ comm-release/mozilla/ipc/chromium/src/base/time_posix.cc	2012-04-23 11:04:06.865548542 +0100
@@ -8,6 +8,7 @@
 #include <mach/mach_time.h>
 #endif
 #include <sys/time.h>
+#include <unistd.h>
 #ifdef ANDROID
 #include <time64.h>
 #else
