summaryrefslogtreecommitdiff
path: root/libre/thunderbird-libre
diff options
context:
space:
mode:
Diffstat (limited to 'libre/thunderbird-libre')
-rw-r--r--libre/thunderbird-libre/PKGBUILD16
-rw-r--r--libre/thunderbird-libre/clrf.patch265
-rw-r--r--libre/thunderbird-libre/gcc47.patch63
-rw-r--r--libre/thunderbird-libre/mozconfig2
4 files changed, 340 insertions, 6 deletions
diff --git a/libre/thunderbird-libre/PKGBUILD b/libre/thunderbird-libre/PKGBUILD
index 21e0f4cec..c27851dcd 100644
--- a/libre/thunderbird-libre/PKGBUILD
+++ b/libre/thunderbird-libre/PKGBUILD
@@ -1,4 +1,4 @@
-# $Id: PKGBUILD 153450 2012-03-14 16:21:51Z ibiru $
+# $Id: PKGBUILD 155759 2012-04-06 07:48:34Z ibiru $
# Maintainer : Ionut Biru <ibiru@archlinux.org>
# Contributor: Alexander Baldeck <alexander@archlinux.org>
# Contributor: Dale Blount <dale@archlinux.org>
@@ -7,7 +7,7 @@
pkgname=thunderbird-libre
pkgver=11.0.1
-pkgrel=1
+pkgrel=2
pkgdesc="Standalone Mail/News reader"
arch=('i686' 'x86_64')
license=('MPL' 'GPL')
@@ -25,19 +25,25 @@ source=(ftp://ftp.mozilla.org/pub/mozilla.org/thunderbird/releases/$pkgver/sourc
thunderbird-install-dir.patch
channel-prefs.js
vendor.js
- libvpx.patch)
+ libvpx.patch
+ gcc47.patch
+ clrf.patch)
md5sums=('b500560a006cb10194281263c78841f2'
- 'ca98c2bf1017b33e19dae22fdcef2e73'
+ '41511a6bcdd04cf56706218e4670e631'
'af3e5b344d2edf1c7d61bb0a5a96de9a'
'aea906acf72c43dd82ead2fabcc1c6db'
'476ec205162340fb0679f522c9d31c3b'
'5a53179d14ae9631b7afe5e4d0fc0b25'
- '5b2aaff7dfe7f1f94ad965905b20e782')
+ '5b2aaff7dfe7f1f94ad965905b20e782'
+ '07b255039a2ffbcab5b5be7986245e36'
+ '5c8d79a9f1ecadffa818205ce1c23f2f')
build() {
cd "$srcdir/comm-release"
patch -Np1 -i "$srcdir/thunderbird-install-dir.patch"
patch -Np1 -i "$srcdir/libvpx.patch"
+ patch -Np1 -i "$srcdir/gcc47.patch"
+ patch -Np2 -i "$srcdir/clrf.patch"
cp "$srcdir/mozconfig" .mozconfig
diff --git a/libre/thunderbird-libre/clrf.patch b/libre/thunderbird-libre/clrf.patch
new file mode 100644
index 000000000..9b6fcb8fb
--- /dev/null
+++ b/libre/thunderbird-libre/clrf.patch
@@ -0,0 +1,265 @@
+diff -up thunderbird-11.0/comm-release/mailnews/base/search/src/nsMsgSearchAdapter.cpp.733867 thunderbird-11.0/comm-release/mailnews/base/search/src/nsMsgSearchAdapter.cpp
+--- thunderbird-11.0/comm-release/mailnews/base/search/src/nsMsgSearchAdapter.cpp.733867 2012-03-13 03:37:12.000000000 +0100
++++ thunderbird-11.0/comm-release/mailnews/base/search/src/nsMsgSearchAdapter.cpp 2012-03-16 07:20:29.299342799 +0100
+@@ -688,7 +688,7 @@ nsresult nsMsgSearchAdapter::EncodeImapV
+ 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 -up thunderbird-11.0/comm-release/mailnews/base/src/nsMsgFolderCompactor.cpp.733867 thunderbird-11.0/comm-release/mailnews/base/src/nsMsgFolderCompactor.cpp
+--- thunderbird-11.0/comm-release/mailnews/base/src/nsMsgFolderCompactor.cpp.733867 2012-03-13 03:37:13.000000000 +0100
++++ thunderbird-11.0/comm-release/mailnews/base/src/nsMsgFolderCompactor.cpp 2012-03-16 07:20:29.300342735 +0100
+@@ -753,7 +753,7 @@ nsFolderCompactState::OnDataAvailable(ns
+ }
+ }
+ }
+-#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.
+@@ -1203,7 +1203,7 @@ nsOfflineStoreCompactState::OnDataAvaila
+ // 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 -up thunderbird-11.0/comm-release/mailnews/compose/src/nsSmtpProtocol.cpp.733867 thunderbird-11.0/comm-release/mailnews/compose/src/nsSmtpProtocol.cpp
+--- thunderbird-11.0/comm-release/mailnews/compose/src/nsSmtpProtocol.cpp.733867 2012-03-13 03:37:13.000000000 +0100
++++ thunderbird-11.0/comm-release/mailnews/compose/src/nsSmtpProtocol.cpp 2012-03-16 07:23:01.225877457 +0100
+@@ -1722,7 +1722,7 @@ PRInt32 nsSmtpProtocol::SendQuit()
+ {
+ m_sendDone = PR_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 @@ nsresult nsSmtpProtocol::LoadUrl(nsIURI
+ {
+ 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;
+@@ -2118,4 +2118,3 @@ nsSmtpProtocol::GetUsernamePassword(nsAC
+ NS_ENSURE_SUCCESS(rv,rv);
+ return rv;
+ }
+-
+diff -up thunderbird-11.0/comm-release/mailnews/imap/src/nsImapMailFolder.cpp.733867 thunderbird-11.0/comm-release/mailnews/imap/src/nsImapMailFolder.cpp
+--- thunderbird-11.0/comm-release/mailnews/imap/src/nsImapMailFolder.cpp.733867 2012-03-13 03:37:13.000000000 +0100
++++ thunderbird-11.0/comm-release/mailnews/imap/src/nsImapMailFolder.cpp 2012-03-16 07:20:29.309342162 +0100
+@@ -8298,7 +8298,7 @@ nsImapMailFolder::CopyFileToOfflineStore
+ 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 -up thunderbird-11.0/comm-release/mailnews/imap/src/nsImapProtocol.cpp.733867 thunderbird-11.0/comm-release/mailnews/imap/src/nsImapProtocol.cpp
+--- thunderbird-11.0/comm-release/mailnews/imap/src/nsImapProtocol.cpp.733867 2012-03-13 03:37:13.000000000 +0100
++++ thunderbird-11.0/comm-release/mailnews/imap/src/nsImapProtocol.cpp 2012-03-16 07:20:29.314341844 +0100
+@@ -1410,7 +1410,7 @@ void nsImapProtocol::HandleIdleResponses
+ {
+ // PRInt32 oldRecent = GetServerStateParser().NumberOfRecentMessages();
+ nsCAutoString commandBuffer(GetServerCommandTag());
+- commandBuffer.Append(" IDLE"CRLF);
++ commandBuffer.Append(" IDLE" CRLF);
+
+ do
+ {
+@@ -3290,7 +3290,7 @@ void nsImapProtocol::FetchMsgAttribute(c
+ 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 @@ nsImapProtocol::Expunge()
+
+ 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 @@ void nsImapProtocol::ID()
+ 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 @@ nsresult nsImapProtocol::AuthLogin(const
+ nsCAutoString correctedPassword;
+ EscapeUserNamePasswordString(password.get(), &correctedPassword);
+ command.Append(correctedPassword);
+- command.Append("\""CRLF);
++ command.Append("\"" CRLF);
+ rv = SendData(command.get(), PR_TRUE /* suppress logging */);
+ NS_ENSURE_SUCCESS(rv, rv);
+ ParseIMAPandCheckForNewMail();
+@@ -7446,7 +7446,7 @@ void nsImapProtocol::CreateMailbox(const
+ nsCString command(GetServerCommandTag());
+ command += " create \"";
+ command += escapedName;
+- command += "\""CRLF;
++ command += "\"" CRLF;
+
+ nsresult rv = SendData(command.get());
+ if(NS_SUCCEEDED(rv))
+@@ -7549,7 +7549,7 @@ void nsImapProtocol::Lsub(const char *ma
+ nsCString command (GetServerCommandTag());
+ command += " lsub \"\" \"";
+ command += escapedPattern;
+- command += "\""CRLF;
++ command += "\"" CRLF;
+
+ PR_Free(boxnameWithOnlineDirectory);
+
+@@ -7578,7 +7578,7 @@ void nsImapProtocol::List(const char *ma
+ command += useXLIST ?
+ " xlist \"\" \"" : " list \"\" \"";
+ command += escapedPattern;
+- command += "\""CRLF;
++ command += "\"" CRLF;
+
+ PR_Free(boxnameWithOnlineDirectory);
+
+@@ -7599,7 +7599,7 @@ void nsImapProtocol::Subscribe(const cha
+ nsCString command (GetServerCommandTag());
+ command += " subscribe \"";
+ command += escapedName;
+- command += "\""CRLF;
++ command += "\"" CRLF;
+
+ nsresult rv = SendData(command.get());
+ if (NS_SUCCEEDED(rv))
+@@ -7617,7 +7617,7 @@ void nsImapProtocol::Unsubscribe(const c
+ nsCString command (GetServerCommandTag());
+ command += " unsubscribe \"";
+ command += escapedName;
+- command += "\""CRLF;
++ command += "\"" CRLF;
+
+ nsresult rv = SendData(command.get());
+ if (NS_SUCCEEDED(rv))
+@@ -7631,7 +7631,7 @@ void nsImapProtocol::Idle()
+ if (m_urlInProgress)
+ return;
+ nsCAutoString command (GetServerCommandTag());
+- command += " IDLE"CRLF;
++ command += " IDLE" CRLF;
+ nsresult rv = SendData(command.get());
+ if (NS_SUCCEEDED(rv))
+ {
+@@ -7658,7 +7658,7 @@ void nsImapProtocol::EndIdle(bool waitFo
+ 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);
+@@ -7727,8 +7727,8 @@ void nsImapProtocol::Copy(const char * m
+ 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 -up thunderbird-11.0/comm-release/mailnews/imap/src/nsImapServerResponseParser.cpp.733867 thunderbird-11.0/comm-release/mailnews/imap/src/nsImapServerResponseParser.cpp
+--- thunderbird-11.0/comm-release/mailnews/imap/src/nsImapServerResponseParser.cpp.733867 2012-03-13 03:37:13.000000000 +0100
++++ thunderbird-11.0/comm-release/mailnews/imap/src/nsImapServerResponseParser.cpp 2012-03-16 07:20:29.316341717 +0100
+@@ -185,7 +185,7 @@ void nsImapServerResponseParser::ParseIM
+
+ 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 = PR_FALSE;
+
+diff -up thunderbird-11.0/comm-release/mailnews/local/src/nsPop3Protocol.cpp.733867 thunderbird-11.0/comm-release/mailnews/local/src/nsPop3Protocol.cpp
+--- thunderbird-11.0/comm-release/mailnews/local/src/nsPop3Protocol.cpp.733867 2012-03-13 03:37:13.000000000 +0100
++++ thunderbird-11.0/comm-release/mailnews/local/src/nsPop3Protocol.cpp 2012-03-16 07:23:38.980300990 +0100
+@@ -2483,7 +2483,7 @@ PRInt32 nsPop3Protocol::SendList()
+ 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 -up thunderbird-11.0/comm-release/mailnews/mime/src/mimedrft.cpp.733867 thunderbird-11.0/comm-release/mailnews/mime/src/mimedrft.cpp
+--- thunderbird-11.0/comm-release/mailnews/mime/src/mimedrft.cpp.733867 2012-03-13 03:37:13.000000000 +0100
++++ thunderbird-11.0/comm-release/mailnews/mime/src/mimedrft.cpp 2012-03-16 07:20:29.320341461 +0100
+@@ -1473,7 +1473,7 @@ mime_parse_stream_complete (nsMIMESessio
+ *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 -up thunderbird-11.0/comm-release/mailnews/mime/src/mimemult.cpp.733867 thunderbird-11.0/comm-release/mailnews/mime/src/mimemult.cpp
+--- thunderbird-11.0/comm-release/mailnews/mime/src/mimemult.cpp.733867 2012-03-13 03:37:13.000000000 +0100
++++ thunderbird-11.0/comm-release/mailnews/mime/src/mimemult.cpp 2012-03-16 07:20:29.321341397 +0100
+@@ -280,7 +280,7 @@ MimeMultipart_parse_line (const char *li
+ 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 @@ MimeMultipart_parse_line (const char *li
+ 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 @@ MimeMultipart_parse_line (const char *li
+ "%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, PR_FALSE);
+ }
+ PRInt32 old_nchildren = container->nchildren;
diff --git a/libre/thunderbird-libre/gcc47.patch b/libre/thunderbird-libre/gcc47.patch
new file mode 100644
index 000000000..3e1e9b98a
--- /dev/null
+++ b/libre/thunderbird-libre/gcc47.patch
@@ -0,0 +1,63 @@
+diff -Nur comm-release.orig/mozilla/ipc/chromium/src/base/file_util.cc comm-release/mozilla/ipc/chromium/src/base/file_util.cc
+--- comm-release.orig/mozilla/ipc/chromium/src/base/file_util.cc 2012-04-03 18:38:11.474783536 +0000
++++ comm-release/mozilla/ipc/chromium/src/base/file_util.cc 2012-04-03 18:43:29.218995578 +0000
+@@ -8,7 +8,7 @@
+ #include <io.h>
+ #endif
+ #include <stdio.h>
+-#if defined(ANDROID)
++#if defined(ANDROID) || defined(OS_POSIX)
+ #include <unistd.h>
+ #endif
+
+diff -Nur 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-03 18:38:11.381450924 +0000
++++ comm-release/mozilla/ipc/chromium/src/base/file_util_linux.cc 2012-04-03 18:43:29.218995578 +0000
+@@ -5,6 +5,9 @@
+ #include "base/file_util.h"
+
+ #include <fcntl.h>
++#if defined(ANDROID) || defined(OS_POSIX)
++#include <unistd.h>
++#endif
+
+ #include <string>
+ #include <vector>
+diff -Nur 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-03 18:38:11.438117153 +0000
++++ comm-release/mozilla/ipc/chromium/src/base/message_pump_libevent.cc 2012-04-03 18:43:29.218995578 +0000
+@@ -6,6 +6,9 @@
+
+ #include <errno.h>
+ #include <fcntl.h>
++#if defined(ANDROID) || defined(OS_POSIX)
++#include <unistd.h>
++#endif
+
+ #include "eintr_wrapper.h"
+ #include "base/logging.h"
+diff -Nur 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-03 18:38:11.418117308 +0000
++++ comm-release/mozilla/ipc/chromium/src/base/time_posix.cc 2012-04-03 18:43:29.218995578 +0000
+@@ -14,6 +14,8 @@
+ #include <time.h>
+ #endif
+
++#include <unistd.h>
++
+ #include <limits>
+
+ #include "base/basictypes.h"
+diff -Nur comm-release.orig/mozilla/toolkit/crashreporter/client/Makefile.in comm-release/mozilla/toolkit/crashreporter/client/Makefile.in
+--- comm-release.orig/mozilla/toolkit/crashreporter/client/Makefile.in 2012-04-03 18:38:56.101105510 +0000
++++ comm-release/mozilla/toolkit/crashreporter/client/Makefile.in 2012-04-03 18:43:29.218995578 +0000
+@@ -69,6 +69,9 @@
+ $(STDCXX_COMPAT) \
+ $(NULL)
+
++# Needed for moz_free
++LIBS += -L$(LIBXUL_DIST)/lib -lmozalloc
++
+ ifeq ($(OS_ARCH),WINNT)
+ CPPSRCS += crashreporter_win.cpp
+ LIBS += \
diff --git a/libre/thunderbird-libre/mozconfig b/libre/thunderbird-libre/mozconfig
index 85ed8a648..8950db703 100644
--- a/libre/thunderbird-libre/mozconfig
+++ b/libre/thunderbird-libre/mozconfig
@@ -16,7 +16,7 @@ ac_add_options --with-system-libvpx
ac_add_options --enable-system-hunspell
ac_add_options --enable-system-sqlite
ac_add_options --enable-system-ffi
-ac_add_options --enable-system-cairo
+#ac_add_options --enable-system-cairo
ac_add_options --enable-system-pixman
ac_add_options --with-pthreads