[Commits] [SCM] claws branch, master, updated. 4.3.1-35-gf2cb5b36b
wwp at claws-mail.org
wwp at claws-mail.org
Fri Mar 7 14:24:30 UTC 2025
The branch, master has been updated
via f2cb5b36b0ed714487e08f5c9b7c2244ca134df6 (commit)
from cda3dae3ec9771b9f9581d14481e5c3cf67110b3 (commit)
Summary of changes:
src/plugins/archive/archiver.c | 3 +++
src/plugins/archive/archiver_gtk.c | 27 +++++++++++++++++++++++++++
src/plugins/archive/archiver_prefs.c | 26 ++++++++++++++++++++++++++
src/plugins/archive/archiver_prefs.h | 3 +++
src/plugins/archive/libarchive_archive.c | 8 +++++++-
src/plugins/archive/libarchive_archive.h | 3 +++
6 files changed, 69 insertions(+), 1 deletion(-)
- Log -----------------------------------------------------------------
commit f2cb5b36b0ed714487e08f5c9b7c2244ca134df6
Author: wwp <subscript at free.fr>
Date: Fri Mar 7 15:19:34 2025 +0100
Mail Archiver plug-in: add support for ZSTD (libarchive >= 3.4.0).
Fix a possible buffer overrun.
diff --git a/src/plugins/archive/archiver.c b/src/plugins/archive/archiver.c
index 8110ce536..5e7fd2d70 100644
--- a/src/plugins/archive/archiver.c
+++ b/src/plugins/archive/archiver.c
@@ -159,6 +159,9 @@ const gchar* plugin_desc(void) {
#endif
#if ARCHIVE_VERSION_NUMBER >= 3001900
"\tLZ4\n"
+#endif
+#if ARCHIVE_VERSION_NUMBER >= 3004000
+ "\tZSTD\n"
#endif
);
}
diff --git a/src/plugins/archive/archiver_gtk.c b/src/plugins/archive/archiver_gtk.c
index 1f27d64f5..4292cdefe 100644
--- a/src/plugins/archive/archiver_gtk.c
+++ b/src/plugins/archive/archiver_gtk.c
@@ -263,6 +263,12 @@ static COMPRESS_METHOD get_compress_method(GSList* btn) {
debug_print("LZ4 compression enabled\n");
return LZ4;
}
+#endif
+#if ARCHIVE_VERSION_NUMBER >= 3001900
+ else if (strcmp("ZSTD", name) == 0) {
+ debug_print("ZSTD compression enabled\n");
+ return LZ4;
+ }
#endif
else if (strcmp("NONE", name) == 0) {
debug_print("Compression disabled\n");
@@ -715,6 +721,11 @@ static void show_result(struct ArchivePage* page) {
case LZ4:
method = g_strdup("LZ4");
break;
+#endif
+#if ARCHIVE_VERSION_NUMBER >= 3001900
+ case ZSTD:
+ method = g_strdup("ZSTD");
+ break;
#endif
case NO_COMPRESS:
method = g_strdup("No Compression");
@@ -1020,6 +1031,9 @@ void archiver_gtk_show(void) {
#endif
#if ARCHIVE_VERSION_NUMBER >= 3001900
GtkWidget* lz4_radio_btn;
+#endif
+#if ARCHIVE_VERSION_NUMBER >= 3001900
+ GtkWidget* zstd_radio_btn;
#endif
GtkWidget* no_radio_btn;
GtkWidget* shar_radio_btn;
@@ -1172,6 +1186,14 @@ void archiver_gtk_show(void) {
archiver_set_tooltip(lz4_radio_btn, g_strdup_printf(_("Choose this option to use %s compression for the archive"), "LZ4"));
#endif
+#if ARCHIVE_VERSION_NUMBER >= 3004000
+ zstd_radio_btn = gtk_radio_button_new_with_mnemonic_from_widget(
+ GTK_RADIO_BUTTON(gzip_radio_btn), "ZZSTD");
+ gtk_widget_set_name(zstd_radio_btn, "ZSTD");
+ gtk_box_pack_start(GTK_BOX(hbox1), zstd_radio_btn, FALSE, FALSE, 0);
+ archiver_set_tooltip(zstd_radio_btn, g_strdup_printf(_("Choose this option to use %s compression for the archive"), "ZSTD"));
+#endif
+
no_radio_btn = gtk_radio_button_new_with_mnemonic_from_widget(
GTK_RADIO_BUTTON(gzip_radio_btn), _("_None"));
gtk_widget_set_name(no_radio_btn, "NONE");
@@ -1219,6 +1241,11 @@ void archiver_gtk_show(void) {
case COMPRESSION_LZ4:
gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON(lz4_radio_btn), TRUE);
break;
+#endif
+#if ARCHIVE_VERSION_NUMBER >= 3004000
+ case COMPRESSION_ZSTD:
+ gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON(zstd_radio_btn), TRUE);
+ break;
#endif
case COMPRESSION_NONE:
gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON(no_radio_btn), TRUE);
diff --git a/src/plugins/archive/archiver_prefs.c b/src/plugins/archive/archiver_prefs.c
index 950839349..499fae36b 100644
--- a/src/plugins/archive/archiver_prefs.c
+++ b/src/plugins/archive/archiver_prefs.c
@@ -65,6 +65,9 @@ struct ArchiverPrefsPage {
#endif
#if ARCHIVE_VERSION_NUMBER >= 3001900
GtkWidget *lz4_radiobtn;
+#endif
+#if ARCHIVE_VERSION_NUMBER >= 3004000
+ GtkWidget *zstd_radiobtn;
#endif
GtkWidget *none_radiobtn;
GtkWidget *tar_radiobtn;
@@ -189,6 +192,9 @@ static void create_archiver_prefs_page(PrefsPage * _page,
#endif
#if ARCHIVE_VERSION_NUMBER >= 3001900
GtkWidget *lz4_radiobtn;
+#endif
+#if ARCHIVE_VERSION_NUMBER >= 3004000
+ GtkWidget *zstd_radiobtn;
#endif
GtkWidget *none_radiobtn;
GSList *format_group = NULL;
@@ -309,6 +315,14 @@ static void create_archiver_prefs_page(PrefsPage * _page,
archiver_set_tooltip(lz4_radiobtn, g_strdup_printf(_("Choose this option to use %s compression by default"), "LZ4"));
#endif
+#if ARCHIVE_VERSION_NUMBER >= 3004000
+ zstd_radiobtn = gtk_radio_button_new_with_label(compression_group, "ZSTD");
+ compression_group = gtk_radio_button_get_group(GTK_RADIO_BUTTON(zstd_radiobtn));
+ gtk_widget_show(zstd_radiobtn);
+ gtk_box_pack_start(GTK_BOX (hbox1), zstd_radiobtn, FALSE, FALSE, 0);
+ archiver_set_tooltip(zstd_radiobtn, g_strdup_printf(_("Choose this option to use %s compression by default"), "ZSTD"));
+#endif
+
none_radiobtn = gtk_radio_button_new_with_label(compression_group, _("None"));
compression_group = gtk_radio_button_get_group(GTK_RADIO_BUTTON(none_radiobtn));
gtk_widget_show(none_radiobtn);
@@ -353,6 +367,11 @@ static void create_archiver_prefs_page(PrefsPage * _page,
case COMPRESSION_LZ4:
gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON(lz4_radiobtn), TRUE);
break;
+#endif
+#if ARCHIVE_VERSION_NUMBER >= 3004000
+ case COMPRESSION_ZSTD:
+ gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON(zstd_radiobtn), TRUE);
+ break;
#endif
case COMPRESSION_NONE:
gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON(none_radiobtn), TRUE);
@@ -459,6 +478,9 @@ static void create_archiver_prefs_page(PrefsPage * _page,
#endif
#if ARCHIVE_VERSION_NUMBER >= 3001900
page->lz4_radiobtn = lz4_radiobtn;
+#endif
+#if ARCHIVE_VERSION_NUMBER >= 3004000
+ page->zstd_radiobtn = zstd_radiobtn;
#endif
page->none_radiobtn = none_radiobtn;
page->tar_radiobtn = tar_radiobtn;
@@ -513,6 +535,10 @@ static void save_archiver_prefs(PrefsPage * _page)
#if ARCHIVE_VERSION_NUMBER >= 3001900
else if (gtk_toggle_button_get_active(GTK_TOGGLE_BUTTON(page->lz4_radiobtn)))
archiver_prefs.compression = COMPRESSION_LZ4;
+#endif
+#if ARCHIVE_VERSION_NUMBER >= 3004000
+ else if (gtk_toggle_button_get_active(GTK_TOGGLE_BUTTON(page->zstd_radiobtn)))
+ archiver_prefs.compression = COMPRESSION_ZSTD;
#endif
else if (gtk_toggle_button_get_active(GTK_TOGGLE_BUTTON(page->none_radiobtn)))
archiver_prefs.compression = COMPRESSION_NONE;
diff --git a/src/plugins/archive/archiver_prefs.h b/src/plugins/archive/archiver_prefs.h
index 2cf6ad007..f828a8208 100644
--- a/src/plugins/archive/archiver_prefs.h
+++ b/src/plugins/archive/archiver_prefs.h
@@ -43,6 +43,9 @@ typedef enum {
#endif
#if ARCHIVE_VERSION_NUMBER >= 3001900
COMPRESSION_LZ4,
+#endif
+#if ARCHIVE_VERSION_NUMBER >= 3001900
+ COMPRESSION_ZSTD,
#endif
COMPRESSION_NONE
} CompressionType;
diff --git a/src/plugins/archive/libarchive_archive.c b/src/plugins/archive/libarchive_archive.c
index b477d82e9..c2416b356 100644
--- a/src/plugins/archive/libarchive_archive.c
+++ b/src/plugins/archive/libarchive_archive.c
@@ -531,6 +531,12 @@ const gchar* archive_create(const char* archive_name, GSList* files,
if (archive_write_add_filter_lz4(arch) != ARCHIVE_OK)
return archive_error_string(arch);
break;
+#endif
+#if ARCHIVE_VERSION_NUMBER >= 3004000
+ case ZSTD:
+ if (archive_write_add_filter_zstd(arch) != ARCHIVE_OK)
+ return archive_error_string(arch);
+ break;
#endif
case NO_COMPRESS:
#if ARCHIVE_VERSION_NUMBER < 3000000
@@ -707,7 +713,7 @@ void archive_scan_folder(const char* dir) {
int main(int argc, char** argv) {
char* archive = NULL;
- char buf[PATH_MAX];
+ char buf[PATH_MAX*2];
int pid;
int opt;
int perm = ARCHIVE_EXTRACT_PERM | ARCHIVE_EXTRACT_TIME |
diff --git a/src/plugins/archive/libarchive_archive.h b/src/plugins/archive/libarchive_archive.h
index fc7f0c26a..eefed30e7 100644
--- a/src/plugins/archive/libarchive_archive.h
+++ b/src/plugins/archive/libarchive_archive.h
@@ -45,6 +45,9 @@ enum _COMPRESS_METHOD {
#endif
#if ARCHIVE_VERSION_NUMBER >= 3001900
LZ4,
+#endif
+#if ARCHIVE_VERSION_NUMBER >= 3004000
+ ZSTD,
#endif
NO_COMPRESS
};
-----------------------------------------------------------------------
hooks/post-receive
--
Claws Mail
More information about the Commits
mailing list