Script 'mail_helper' called by obssrc
Hello community,
here is the log from the commit of package imapfilter for openSUSE:Factory checked in at 2024-01-03 12:25:51
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Comparing /work/SRC/openSUSE:Factory/imapfilter (Old)
and /work/SRC/openSUSE:Factory/.imapfilter.new.28375 (New)
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Package is "imapfilter"
Wed Jan 3 12:25:51 2024 rev:50 rq:1135768 version:2.8.2
Changes:
--------
--- /work/SRC/openSUSE:Factory/imapfilter/imapfilter.changes 2023-05-29 22:47:54.426338143 +0200
+++ /work/SRC/openSUSE:Factory/.imapfilter.new.28375/imapfilter.changes 2024-01-03 12:25:54.309487900 +0100
@@ -1,0 +2,9 @@
+Sat Dec 30 16:37:02 UTC 2023 - Dirk Müller <dmueller(a)suse.com>
+
+- update to 2.8.2:
+ * Add IMAP support for UTF-8 (RFC 6855) when "charset" is
+ set to "UTF-8"
+ * Don't use FETCH FAST macro use for better compatibility
+ * Bug fix; recovery mechanism error on Lua 5.1
+
+-------------------------------------------------------------------
Old:
----
imapfilter-2.8.1.tar.gz
New:
----
imapfilter-2.8.2.tar.gz
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Other differences:
------------------
++++++ imapfilter.spec ++++++
--- /var/tmp/diff_new_pack.NHUk7s/_old 2024-01-03 12:25:55.913546507 +0100
+++ /var/tmp/diff_new_pack.NHUk7s/_new 2024-01-03 12:25:55.933547239 +0100
@@ -17,7 +17,7 @@
Name: imapfilter
-Version: 2.8.1
+Version: 2.8.2
Release: 0
Summary: A mail filtering utility
License: MIT
++++++ imapfilter-2.8.1.tar.gz -> imapfilter-2.8.2.tar.gz ++++++
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/imapfilter-2.8.1/NEWS new/imapfilter-2.8.2/NEWS
--- old/imapfilter-2.8.1/NEWS 2023-01-08 14:43:35.000000000 +0100
+++ new/imapfilter-2.8.2/NEWS 2023-12-26 20:20:05.000000000 +0100
@@ -1,3 +1,8 @@
+IMAPFilter 2.8.2 - Dec 26, 2023
+ - Add IMAP support for UTF-8 (RFC 6855) when "charset" is set to "UTF-8"
+ - Don't use FETCH FAST macro use for better compatibility
+ - Bug fix; recovery mechanism error on Lua 5.1
+
IMAPFilter 2.8.1 - Jan 8, 2023
- Add support for non-write actions on read-only mailboxes.
- Add new parameter to write process ID (PID) to file.
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/imapfilter-2.8.1/doc/imapfilter.1 new/imapfilter-2.8.2/doc/imapfilter.1
--- old/imapfilter-2.8.1/doc/imapfilter.1 2023-01-08 14:43:35.000000000 +0100
+++ new/imapfilter-2.8.2/doc/imapfilter.1 2023-12-26 20:20:05.000000000 +0100
@@ -1,4 +1,4 @@
-.Dd Jan 6, 2023
+.Dd Dec 26, 2023
.Dt IMAPFILTER 1
.Os
.Sh NAME
@@ -94,7 +94,7 @@
.Bl -tag -width Ds
.It IMAP4rev1:
RFC 3501, RFC 3348, RFC 2683, RFC 2595, RFC 2342, RFC 2195,
-RFC 2177
+RFC 2177, RFC 5161, RFC 6855
.It IMAP4:
RFC 1730
.El
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/imapfilter-2.8.1/src/auxiliary.lua new/imapfilter-2.8.2/src/auxiliary.lua
--- old/imapfilter-2.8.1/src/auxiliary.lua 2023-01-08 14:43:35.000000000 +0100
+++ new/imapfilter-2.8.2/src/auxiliary.lua 2023-12-26 20:20:05.000000000 +0100
@@ -73,11 +73,11 @@
count = 0
while true do
- local r = table.pack(pcall(commands))
+ local r = {pcall(commands)}
if retries == nil or count < retries then
- if r[1] then return table.unpack(r) end
+ if r[1] then return r end
else
- if not r[1] then return table.unpack(r) end
+ if not r[1] then return r end
end
collectgarbage()
count = count + 1
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/imapfilter-2.8.1/src/imapfilter.h new/imapfilter-2.8.2/src/imapfilter.h
--- old/imapfilter-2.8.1/src/imapfilter.h 2023-01-08 14:43:35.000000000 +0100
+++ new/imapfilter-2.8.2/src/imapfilter.h 2023-12-26 20:20:05.000000000 +0100
@@ -33,6 +33,8 @@
#define CAPABILITY_CHILDREN 0x04
#define CAPABILITY_IDLE 0x08
#define CAPABILITY_XOAUTH2 0x10
+#define CAPABILITY_ENABLE 0x20
+#define CAPABILITY_UTF8 0x40
/* Status responses and response codes. */
#define STATUS_BYE -2
@@ -135,8 +137,8 @@
char *xstrncpy(char *dest, const char *src, size_t size);
/* namespace.c */
-const char *apply_namespace(const char *mbox, char *prefix, char delim);
-const char *reverse_namespace(const char *mbox, char *prefix, char delim);
+const char *apply_namespace(const char *mbox, session *ssn);
+const char *reverse_namespace(const char *mbox, session *ssn);
/* pcre.c */
LUALIB_API int luaopen_ifre(lua_State *lua);
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/imapfilter-2.8.1/src/namespace.c new/imapfilter-2.8.2/src/namespace.c
--- old/imapfilter-2.8.1/src/namespace.c 2023-01-08 14:43:35.000000000 +0100
+++ new/imapfilter-2.8.2/src/namespace.c 2023-12-26 20:20:05.000000000 +0100
@@ -3,6 +3,7 @@
#include <errno.h>
#include "imapfilter.h"
+#include "session.h"
#include "buffer.h"
@@ -23,7 +24,7 @@
* by the mail server, from internal to mail server format.
*/
const char *
-apply_namespace(const char *mbox, char *prefix, char delim)
+apply_namespace(const char *mbox, session *ssn)
{
int n;
char *c;
@@ -32,22 +33,24 @@
if (!strcasecmp(mbox, "INBOX"))
return mbox;
- m = apply_conversion(mbox);
+ m = mbox;
+ if (!ssn->utf8)
+ m = apply_conversion(mbox);
- if ((prefix == NULL && delim == '\0') ||
- (prefix == NULL && delim == '/'))
+ if ((ssn->ns.prefix == NULL && ssn->ns.delim == '\0') ||
+ (ssn->ns.prefix == NULL && ssn->ns.delim == '/'))
return m;
buffer_reset(&nbuf);
- n = snprintf(nbuf.data, nbuf.size + 1, "%s%s", (prefix ? prefix : ""),
- m);
+ n = snprintf(nbuf.data, nbuf.size + 1, "%s%s",
+ (ssn->ns.prefix ? ssn->ns.prefix : ""), m);
if (n > (int)nbuf.size) {
buffer_check(&nbuf, n);
snprintf(nbuf.data, nbuf.size + 0, "%s%s",
- (prefix ? prefix : ""), m);
+ (ssn->ns.prefix ? ssn->ns.prefix : ""), m);
}
- for (c = nbuf.data; (c = strchr(c, '/')) != NULL; *(c++) = delim);
+ for (c = nbuf.data; (c = strchr(c, '/')) != NULL; *(c++) = ssn->ns.delim);
debug("namespace: '%s' -> '%s'\n", m, nbuf.data);
@@ -60,7 +63,7 @@
* the mail server, from mail server format to internal format.
*/
const char *
-reverse_namespace(const char *mbox, char *prefix, char delim)
+reverse_namespace(const char *mbox, session *ssn)
{
int n, o;
char *c;
@@ -68,14 +71,17 @@
if (!strcasecmp(mbox, "INBOX"))
return mbox;
- if ((prefix == NULL && delim == '\0') ||
- (prefix == NULL && delim == '/'))
- return reverse_conversion(mbox);
+ if ((ssn->ns.prefix == NULL && ssn->ns.delim == '\0') ||
+ (ssn->ns.prefix == NULL && ssn->ns.delim == '/')) {
+ if (!ssn->utf8)
+ return reverse_conversion(mbox);
+ return mbox;
+ }
buffer_reset(&nbuf);
- o = strlen(prefix ? prefix : "");
- if (strncasecmp(mbox, (prefix ? prefix : ""), o))
+ o = strlen(ssn->ns.prefix ? ssn->ns.prefix : "");
+ if (strncasecmp(mbox, (ssn->ns.prefix ? ssn->ns.prefix : ""), o))
o = 0;
n = snprintf(nbuf.data, nbuf.size + 1, "%s", mbox + o);
@@ -83,7 +89,7 @@
buffer_check(&nbuf, n);
snprintf(nbuf.data, nbuf.size + 1, "%s", mbox + o);
}
- for (c = nbuf.data; (c = strchr(c, delim)) != NULL; *(c++) = '/');
+ for (c = nbuf.data; (c = strchr(c, ssn->ns.delim)) != NULL; *(c++) = '/');
debug("namespace: '%s' <- '%s'\n", mbox, nbuf.data);
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/imapfilter-2.8.1/src/request.c new/imapfilter-2.8.2/src/request.c
--- old/imapfilter-2.8.1/src/request.c 2023-01-08 14:43:35.000000000 +0100
+++ new/imapfilter-2.8.2/src/request.c 2023-12-26 20:20:05.000000000 +0100
@@ -212,6 +212,16 @@
TRY(t = send_request(ssn, "CAPABILITY"));
TRY(response_capability(ssn, t));
+ if (!strcasecmp(get_option_string("charset"), "UTF-8")) {
+ if (ssn->capabilities & CAPABILITY_ENABLE &&
+ ssn->capabilities & CAPABILITY_UTF8) {
+ TRY(t = send_request(ssn, "ENABLE UTF8=ACCEPT"));
+ TRY(r = response_generic(ssn, t));
+ if (r == STATUS_OK)
+ ssn->utf8 = 1;
+ }
+ }
+
if (ssn->capabilities & CAPABILITY_NAMESPACE &&
get_option_boolean("namespace")) {
TRY(t = send_request(ssn, "NAMESPACE"));
@@ -251,7 +261,7 @@
int t, r;
const char *m;
- m = apply_namespace(mbox, ssn->ns.prefix, ssn->ns.delim);
+ m = apply_namespace(mbox, ssn);
if (ssn->protocol == PROTOCOL_IMAP4REV1) {
TRY(t = send_request(ssn,
@@ -275,7 +285,7 @@
int t, r;
const char *m;
- m = apply_namespace(mbox, ssn->ns.prefix, ssn->ns.delim);
+ m = apply_namespace(mbox, ssn);
TRY(t = send_request(ssn, "SELECT \"%s\"", m));
TRY(r = response_select(ssn, t));
@@ -327,7 +337,7 @@
int t, r;
const char *n;
- n = apply_namespace(name, ssn->ns.prefix, ssn->ns.delim);
+ n = apply_namespace(name, ssn);
TRY(t = send_request(ssn, "LIST \"%s\" \"%s\"", refer, n));
TRY(r = response_list(ssn, t, mboxs, folders));
@@ -346,7 +356,7 @@
int t, r;
const char *n;
- n = apply_namespace(name, ssn->ns.prefix, ssn->ns.delim);
+ n = apply_namespace(name, ssn);
TRY(t = send_request(ssn, "LSUB \"%s\" \"%s\"", refer, n));
TRY(r = response_list(ssn, t, mboxs, folders));
@@ -364,7 +374,7 @@
{
int t, r;
- if (charset != NULL && *charset != '\0') {
+ if (charset != NULL && *charset != '\0' && !ssn->utf8) {
TRY(t = send_request(ssn, "UID SEARCH CHARSET \"%s\" %s",
charset, criteria));
} else {
@@ -385,7 +395,7 @@
{
int t, r;
- TRY(t = send_request(ssn, "UID FETCH %s FAST", mesg));
+ TRY(t = send_request(ssn, "UID FETCH %s (FLAGS INTERNALDATE RFC822.SIZE)", mesg));
TRY(r = response_fetchfast(ssn, t, flags, date, size));
return r;
@@ -567,7 +577,7 @@
if (opts.dryrun)
return STATUS_DRYRUN;
- m = apply_namespace(mbox, ssn->ns.prefix, ssn->ns.delim);
+ m = apply_namespace(mbox, ssn);
TRY(t = send_request(ssn, "UID COPY %s \"%s\"", mesg, m));
TRY(r = response_generic(ssn, t));
@@ -601,7 +611,7 @@
if (opts.dryrun)
return STATUS_DRYRUN;
- m = apply_namespace(mbox, ssn->ns.prefix, ssn->ns.delim);
+ m = apply_namespace(mbox, ssn);
TRY(t = send_request(ssn, "APPEND \"%s\"%s%s%s%s%s%s {%d}", m,
(flags ? " (" : ""), (flags ? flags : ""),
@@ -650,7 +660,7 @@
if (opts.dryrun)
return STATUS_DRYRUN;
- m = apply_namespace(mbox, ssn->ns.prefix, ssn->ns.delim);
+ m = apply_namespace(mbox, ssn);
TRY(t = send_request(ssn, "CREATE \"%s\"", m));
TRY(r = response_generic(ssn, t));
@@ -671,7 +681,7 @@
if (opts.dryrun)
return STATUS_DRYRUN;
- m = apply_namespace(mbox, ssn->ns.prefix, ssn->ns.delim);
+ m = apply_namespace(mbox, ssn);
TRY(t = send_request(ssn, "DELETE \"%s\"", m));
TRY(r = response_generic(ssn, t));
@@ -692,8 +702,8 @@
if (opts.dryrun)
return STATUS_DRYRUN;
- o = xstrdup(apply_namespace(oldmbox, ssn->ns.prefix, ssn->ns.delim));
- n = xstrdup(apply_namespace(newmbox, ssn->ns.prefix, ssn->ns.delim));
+ o = xstrdup(apply_namespace(oldmbox, ssn));
+ n = xstrdup(apply_namespace(newmbox, ssn));
TRY(t = send_request(ssn, "RENAME \"%s\" \"%s\"", o, n));
TRY(r = response_generic(ssn, t));
@@ -714,7 +724,7 @@
if (opts.dryrun)
return STATUS_DRYRUN;
- m = apply_namespace(mbox, ssn->ns.prefix, ssn->ns.delim);
+ m = apply_namespace(mbox, ssn);
TRY(t = send_request(ssn, "SUBSCRIBE \"%s\"", m));
TRY(r = response_generic(ssn, t));
@@ -735,7 +745,7 @@
if (opts.dryrun)
return STATUS_DRYRUN;
- m = apply_namespace(mbox, ssn->ns.prefix, ssn->ns.delim);
+ m = apply_namespace(mbox, ssn);
TRY(t = send_request(ssn, "UNSUBSCRIBE \"%s\"", m));
TRY(r = response_generic(ssn, t));
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/imapfilter-2.8.1/src/response.c new/imapfilter-2.8.2/src/response.c
--- old/imapfilter-2.8.1/src/response.c 2023-01-08 14:43:35.000000000 +0100
+++ new/imapfilter-2.8.2/src/response.c 2023-12-26 20:20:05.000000000 +0100
@@ -350,6 +350,10 @@
ssn->capabilities |= CAPABILITY_IDLE;
if (xstrcasestr(s, "AUTH=XOAUTH2"))
ssn->capabilities |= CAPABILITY_XOAUTH2;
+ if (xstrcasestr(s, "ENABLE"))
+ ssn->capabilities |= CAPABILITY_ENABLE;
+ if (xstrcasestr(s, "UTF8=ACCEPT"))
+ ssn->capabilities |= CAPABILITY_UTF8;
xfree(s);
}
@@ -535,7 +539,7 @@
s = xstrndup(b + re->pmatch[8].rm_so, strtoul(b +
re->pmatch[7].rm_so, NULL, 10));
- v = reverse_namespace(s, ssn->ns.prefix, ssn->ns.delim);
+ v = reverse_namespace(s, ssn);
n = strlen(v);
if (!xstrcasestr(a, "\\NoSelect")) {
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/imapfilter-2.8.1/src/session.c new/imapfilter-2.8.2/src/session.c
--- old/imapfilter-2.8.1/src/session.c 2023-01-08 14:43:35.000000000 +0100
+++ new/imapfilter-2.8.2/src/session.c 2023-12-26 20:20:05.000000000 +0100
@@ -41,6 +41,7 @@
ssn->capabilities = CAPABILITY_NONE;
ssn->ns.prefix = NULL;
ssn->ns.delim = '\0';
+ ssn->utf8 = 0;
}
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/imapfilter-2.8.1/src/session.h new/imapfilter-2.8.2/src/session.h
--- old/imapfilter-2.8.1/src/session.h 2023-01-08 14:43:35.000000000 +0100
+++ new/imapfilter-2.8.2/src/session.h 2023-12-26 20:20:05.000000000 +0100
@@ -16,6 +16,7 @@
char *prefix; /* Namespace prefix. */
char delim; /* Namespace delimiter. */
} ns;
+ int utf8; /* UTF8 enabled. */
} session;
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/imapfilter-2.8.1/src/version.h new/imapfilter-2.8.2/src/version.h
--- old/imapfilter-2.8.1/src/version.h 2023-01-08 14:43:35.000000000 +0100
+++ new/imapfilter-2.8.2/src/version.h 2023-12-26 20:20:05.000000000 +0100
@@ -3,7 +3,7 @@
/* Program's version number. */
-#define VERSION "2.8.1"
+#define VERSION "2.8.2"
/* Program's copyright. */
#define COPYRIGHT "Copyright (c) 2001-2023 Eleftherios Chatzimparmpas"