...
 
Commits (47)
version 3.35.1
--------------
New features and user visible changes:
* Support for Zstandard compressed files/archives. (Felix Riemann)
* Allow to directly open .tar.lzo files. (Felix Riemann)
* libarchive: implemented read support for 7z. (Peter Keresztes Schmidt)
* Provide a development variant of the app icon. (Jakub Steiner) (!12)
* Converted README to README.md (Roger)
* Remove file-roller from the recommended applications for ePub
files. (Bastien Nocera)
Bugs fixed:
* Removed deprecated functions. (Peter Keresztes Schmidt)
* Add application/x-xar as a supported mime-type. (Bastien Nocera) (!50)
New or updated application translations:
* Basque (Asier Sarasua Garmendia)
* Japanese (Ryuta Fujii)
version 3.32.2
--------------
Bugs fixed:
* Prevents CTRL+F to be activated twice for a single key press.
(Andrea Azzarone) (!37)
New or updated application translations:
* Basque (Asier Sarasua Garmendia)
* Catalan (Gil Forcada)
* Chinese (China) (Dingzhong Chen)
* Danish (Alan Mortensen)
* Icelandic (Sveinn í Felli)
* Persian (Danial Behzadi)
* Spanish - Spain (Daniel Mustieles)
New or updated manual translations:
* français (Charles Monzat)
version 3.32.1
--------------
......
* File Roller *
an archive manager utility for the
GNOME Environment.
* What is it ?
File Roller is an archive manager for the GNOME environment. This means
that you can create and modify archives; view the content of an archive;
view and modify a file contained in the archive; extract files from the
archive.
File Roller is only a front-end (a graphical interface) to archiving programs
like tar and zip. The supported file types are :
* 7-Zip Compressed File (.7z)
* WinAce Compressed File (.ace)
* ALZip Compressed File (.alz)
* AIX Small Indexed Archive (.ar)
* ARJ Compressed Archive (.arj)
* Cabinet File (.cab)
* UNIX CPIO Archive (.cpio)
* Debian Linux Package (.deb) [Read-only mode]
* ISO-9660 CD Disc Image (.iso) [Read-only mode]
* Java Archive (.jar)
* Java Enterprise archive (.ear)
* Java Web Archive (.war)
* LHA Archive (.lzh, .lha)
* WinRAR Compressed Archive (.rar)
* RAR Archived Comic Book (.cbr)
* RPM Linux Package (.rpm) [Read-only mode]
* Tape Archive File:
* uncompressed (.tar)
or compressed with:
* gzip (.tar.gz , .tgz)
* brotli (.tar.br)
* bzip (.tar.bz , .tbz)
* bzip2 (.tar.bz2 , .tbz2)
* compress (.tar.Z , .taz)
* lrzip (.tar.lrz , .tlrz)
* lzip (.tar.lz , .tlz)
* lzop (.tar.lzo , .tzo)
* 7zip (.tar.7z)
* xz (.tar.xz)
* Snap packages (.snap)
* Squashfs images (.sqsh)
* Stuffit Archives (.bin, .sit)
* ZIP Archive (.zip)
* ZIP Archived Comic Book (.cbz)
* ZOO Compressed Archive File (.zoo)
* Single files compressed with gzip (.gz), brotli (.br), bzip (.bz), bzip2 (.bz2), compress (.Z),
lrzip (.lrz), lzip (.lz), lzop (.lzo), rzip(.rz), xz (.xz).
* Home Page
http://fileroller.sourceforge.net
* Licensing
This program is released under the terms of the GNU General Public
License (GNU GPL) version 2 or greater.
You can find a copy of the license in the file COPYING.
* Dependencies
In order to build this program from the source code you need a working
GNOME environment version 2.x, with the development tools installed
properly.
Also you need the following libraries:
* glib >= 2.36
* gtk+ >= 3.13.2
* libnautilus-extension >= 2.22.2 (optional)
* libarchive >= 3.0.0 (optional)
* Install
mkdir build
cd build
meson ..
ninja
ninja install
# File Roller
An archive manager utility for the GNOME Environment.
## What is it ?
File Roller is an archive manager for the GNOME environment. This means
that you can create and modify archives; view the content of an archive;
view and modify a file contained in the archive; extract files from the
archive.
File Roller is only a front-end (a graphical interface) to archiving programs
like tar and zip. The supported file types are:
* 7-Zip Compressed File (.7z)
* WinAce Compressed File (.ace)
* ALZip Compressed File (.alz)
* AIX Small Indexed Archive (.ar)
* ARJ Compressed Archive (.arj)
* Cabinet File (.cab)
* UNIX CPIO Archive (.cpio)
* Debian Linux Package (.deb) [Read-only mode]
* ISO-9660 CD Disc Image (.iso) [Read-only mode]
* Java Archive (.jar)
* Java Enterprise archive (.ear)
* Java Web Archive (.war)
* LHA Archive (.lzh, .lha)
* WinRAR Compressed Archive (.rar)
* RAR Archived Comic Book (.cbr)
* RPM Linux Package (.rpm) [Read-only mode]
* Tape Archive File:
* uncompressed (.tar)
* or compressed with:
* gzip (.tar.gz , .tgz)
* brotli (.tar.br)
* bzip (.tar.bz , .tbz)
* bzip2 (.tar.bz2 , .tbz2)
* compress (.tar.Z , .taz)
* lrzip (.tar.lrz , .tlrz)
* lzip (.tar.lz , .tlz)
* lzop (.tar.lzo , .tzo)
* 7zip (.tar.7z)
* xz (.tar.xz)
* Zstandard (.tar.zst, .tzst)
* Snap packages (.snap)
* Squashfs images (.sqsh)
* Stuffit Archives (.bin, .sit)
* ZIP Archive (.zip)
* ZIP Archived Comic Book (.cbz)
* ZOO Compressed Archive File (.zoo)
* Single files compressed with gzip (.gz), brotli (.br), bzip (.bz),
bzip2 (.bz2), compress (.Z), lrzip (.lrz), lzip (.lz), lzop (.lzo),
rzip(.rz), and xz (.xz), Zstandard (.zst).
## Useful links
* Homepage: https://wiki.gnome.org/Apps/FileRoller
* Report issues: https://gitlab.gnome.org/GNOME/file-roller/issues/
* Donate: https://www.gnome.org/friends/
* Translate: https://wiki.gnome.org/TranslationProject
## Licensing
This program is released under the terms of the GNU General Public
License (GNU GPL) version 2 or greater.
You can find a copy of the license in the file COPYING.
## Dependencies
In order to build this program from the source code you need a working
GNOME environment version 3.x, with the development tools installed
properly.
Also you need the following libraries:
* glib >= 2.38
* gtk+ >= 3.22.0
* libnautilus-extension >= 3.28.0 (optional)
* libarchive >= 3.0.0 (optional)
## Install
```bash
mkdir build
cd build
meson ..
ninja
ninja install
```
......@@ -28,5 +28,5 @@ unstaff=
unzip=
xz=
zip=
zstd=
zoo=
application/epub+zip;
application/bzip2;
application/gzip;
application/vnd.android.package-archive;
application/vnd.ms-cab-compressed;
......@@ -40,7 +40,6 @@ application/x-lzma;
application/x-lzma-compressed-tar;
application/x-lzop;
application/x-lz4-compressed-tar;
application/x-lzop-compressed-tar;
application/x-ms-wim;
application/x-rar;
application/x-rar-compressed;
......@@ -50,11 +49,15 @@ application/x-rzip;
application/x-rzip-compressed-tar;
application/x-tar;
application/x-tarz;
application/x-tzo;
application/x-stuffit;
application/x-war;
application/x-xar;
application/x-xz;
application/x-xz-compressed-tar;
application/x-zip;
application/x-zip-compressed;
application/x-zstd-compressed-tar;
application/x-zoo;
application/zip;
application/zstd;
This diff is collapsed.
project('file-roller', 'c',
license : 'GPL2+',
version : '3.32.1',
meson_version : '>=0.43'
version : '3.35.1',
meson_version : '>=0.50'
)
glib_version = '>=2.36'
gtk_version = '>=3.13.2'
nautilus_version = '>=2.22.2'
glib_version = '>=2.38'
gtk_version = '>=3.22.0'
nautilus_version = '>=3.28.0'
json_glib_version = '>=0.14.0'
libnotify_version = '>=0.4.3'
libarchive_version = '>=3.0.0'
......
......@@ -22,8 +22,7 @@
*/
#include <config.h>
#include <libnautilus-extension/nautilus-extension-types.h>
#include <libnautilus-extension/nautilus-column-provider.h>
#include <nautilus-extension.h>
#include <glib/gi18n-lib.h>
#include "nautilus-fileroller.h"
......
......@@ -127,15 +127,17 @@ static struct {
{ "application/x-java-archive", TRUE },
{ "application/x-lhz", TRUE },
{ "application/x-lzop", TRUE },
{ "application/x-lzop-compressed-tar", TRUE },
{ "application/x-ms-wim", TRUE },
{ "application/x-rar", TRUE },
{ "application/x-rar-compressed", TRUE },
{ "application/x-rpm", TRUE },
{ "application/x-rzip", TRUE },
{ "application/x-stuffit", TRUE },
{ "application/x-tzo", TRUE },
{ "application/x-war", TRUE },
{ "application/x-zoo", TRUE },
{ "application/x-zstd-compressed-tar", TRUE },
{ "application/zstd", TRUE },
{ "multipart/x-zip", TRUE },
{ NULL, FALSE }
};
......
......@@ -409,7 +409,7 @@ msgstr[0] ""
"l'arxiu es perdran tots els canvis que hi hàgiu fet."
msgstr[1] ""
"S'han modificat %d fitxers des d'una aplicació externa. Si no els "
"actualitzeu en l'arxiu es perdran tot els canvis que hi hàgiu fet."
"actualitzeu en l'arxiu es perdran tots els canvis que hi hàgiu fet."
#: src/dlg-update.c:190
#, c-format
......@@ -708,12 +708,13 @@ msgstr "S'està canviant el nom dels fitxers a «%s»"
msgid "Updating the files in “%s”"
msgstr "S'estan actualitzant els fitxers a «%s»"
#. N.T.: Apareix com una frase sola (primer lletra cal que sigui en majúscula)
#: src/fr-window.c:2681
#, c-format
msgid "%d file remaining"
msgid_plural "%'d files remaining"
msgstr[0] "manca %d fitxer"
msgstr[1] "manquen %d fitxers"
msgstr[0] "Manca %d fitxer"
msgstr[1] "Manquen %d fitxers"
#: src/fr-window.c:2685 src/fr-window.c:3309
msgid "Please wait…"
......@@ -1010,7 +1011,7 @@ msgstr "_Enganxa"
#. * explanation of the values.
#: src/glib-utils.c:787
msgid "%d %B %Y, %H:%M"
msgstr "%d %B %Y, %H:%M"
msgstr "%-d %B de %Y, %-H:%M"
#: src/gtk-utils.c:235
msgid "C_ommand Line Output:"
......@@ -1232,7 +1233,7 @@ msgstr "_Contrasenya…"
#: src/ui/gears-menu.ui:60
msgid "_About Archive Manager"
msgstr "Quant al Gestor d'arxius"
msgstr "_Quant al Gestor d'arxius"
#: src/ui/menus.ui:11
msgid "_Open With…"
......
......@@ -5,21 +5,21 @@
# Spanish localization for File Roller.
# Copyright © 2002, 2006, 2007, 2008 the Free Software Foundation, Inc.
# Jorge González <jorgegonz@svn.gnome.org>, 2007, 2009, 2010, 2011, 2012.
# Daniel Mustieles <daniel.mustieles@gmail.com>, 2010, 2011, 2012, 2013, 2014, 2015, 2016, 2017, 2018.
# Daniel Mustieles <daniel.mustieles@gmail.com>, 2010-2019.
#
msgid ""
msgstr ""
"Project-Id-Version: file-roller.master\n"
"Report-Msgid-Bugs-To: https://gitlab.gnome.org/GNOME/file-roller/issues\n"
"POT-Creation-Date: 2018-11-01 09:55+0000\n"
"PO-Revision-Date: 2018-12-04 15:35+0100\n"
"POT-Creation-Date: 2019-03-24 19:31+0000\n"
"PO-Revision-Date: 2019-07-30 09:33+0200\n"
"Last-Translator: Daniel Mustieles <daniel.mustieles@gmail.com>\n"
"Language-Team: es <gnome-es-list@gnome.org>\n"
"Language: es\n"
"Language-Team: Spanish - Spain <gnome-es-list@gnome.org>\n"
"Language: es_ES\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
"X-Generator: Gtranslator 2.91.7\n"
"X-Generator: Gtranslator 3.32.1\n"
"Plural-Forms: nplurals=2; plural=(n != 1);\n"
#: data/org.gnome.FileRoller.appdata.xml.in:9
......@@ -63,7 +63,7 @@ msgid "xz archives (.tar.xz)"
msgstr "archivadores xz (.tar.xz)"
#: data/org.gnome.FileRoller.desktop.in.in:3 src/fr-application.c:455
#: src/fr-window.c:2017 src/fr-window.c:5546
#: src/fr-window.c:2022 src/fr-window.c:5551
msgid "Archive Manager"
msgstr "Gestor de archivadores"
......@@ -76,12 +76,6 @@ msgstr "Cree y modifique un archivador"
msgid "zip;tar;extract;unpack;"
msgstr "zip;tar;extraer;desempaquetar;"
#. Translators: Do NOT translate or transliterate this text (this is an icon file name)!
#: data/org.gnome.FileRoller.desktop.in.in:13
#| msgid "Archive Manager"
msgid "org.gnome.ArchiveManager"
msgstr "org.gnome.ArchiveManager"
#: data/org.gnome.FileRoller.gschema.xml:58
msgid "How to sort files"
msgstr "Cómo ordenar archivos"
......@@ -223,20 +217,20 @@ msgstr "Tamaño predeterminado del volumen"
msgid "The default size for volumes."
msgstr "El tamaño predeterminado de los volúmenes."
#: nautilus/nautilus-fileroller.c:261
#: nautilus/nautilus-fileroller.c:262
msgid "Extract Here"
msgstr "Extraer aquí"
#. Translators: the current position is the current folder
#: nautilus/nautilus-fileroller.c:263
#: nautilus/nautilus-fileroller.c:264
msgid "Extract the selected archive to the current position"
msgstr "Extraer el archivador seleccionado en la posición actual"
#: nautilus/nautilus-fileroller.c:280
#: nautilus/nautilus-fileroller.c:281
msgid "Extract To…"
msgstr "Extraer en…"
#: nautilus/nautilus-fileroller.c:281
#: nautilus/nautilus-fileroller.c:282
msgid "Extract the selected archive"
msgstr "Extrae el archivador seleccionado"
......@@ -316,7 +310,7 @@ msgstr "Contraseña incorrecta."
msgid "Compress"
msgstr "Comprimir"
#: src/dlg-extract.c:95 src/fr-window.c:6936
#: src/dlg-extract.c:95 src/fr-window.c:6939
#, c-format
msgid ""
"Destination folder “%s” does not exist.\n"
......@@ -327,22 +321,22 @@ msgstr ""
"\n"
"¿Quiere crearla?"
#: src/dlg-extract.c:103 src/fr-window.c:6944
#: src/dlg-extract.c:103 src/fr-window.c:6947
msgid "Create _Folder"
msgstr "Crear _carpeta"
#: src/dlg-extract.c:122 src/dlg-extract.c:139 src/dlg-extract.c:166
#: src/fr-window.c:4420 src/fr-window.c:6860 src/fr-window.c:6865
#: src/fr-window.c:6965 src/fr-window.c:6984 src/fr-window.c:6989
#: src/fr-window.c:4425 src/fr-window.c:6863 src/fr-window.c:6868
#: src/fr-window.c:6968 src/fr-window.c:6987 src/fr-window.c:6992
msgid "Extraction not performed"
msgstr "Extracción no realizada"
#: src/dlg-extract.c:123 src/fr-window.c:6961
#: src/dlg-extract.c:123 src/fr-window.c:6964
#, c-format
msgid "Could not create the destination folder: %s."
msgstr "No se pudo crear la carpeta de destino %s."
#: src/dlg-extract.c:167 src/fr-window.c:4647 src/fr-window.c:4749
#: src/dlg-extract.c:167 src/fr-window.c:4652 src/fr-window.c:4754
#, c-format
msgid ""
"You don’t have the right permissions to extract archives in the folder “%s”"
......@@ -358,8 +352,8 @@ msgid "There was an internal error trying to search for applications:"
msgstr "Hubo un error interno al intentar buscar aplicaciones:"
#: src/dlg-package-installer.c:296 src/dlg-package-installer.c:305
#: src/dlg-package-installer.c:332 src/fr-archive.c:748 src/fr-window.c:4087
#: src/fr-window.c:7667 src/fr-window.c:8024 src/fr-window.c:9539
#: src/dlg-package-installer.c:332 src/fr-archive.c:748 src/fr-window.c:4092
#: src/fr-window.c:7670 src/fr-window.c:8027 src/fr-window.c:9542
msgid "Archive type not supported."
msgstr "Tipo de archivador no soportado."
......@@ -518,19 +512,19 @@ msgid "You can’t add an archive to itself."
msgstr "No puede añadir un archivador a sí mismo."
#. Translators: %s is a filename.
#: src/fr-command-7z.c:306 src/fr-command-rar.c:495 src/fr-command-tar.c:319
#: src/fr-command-7z.c:306 src/fr-command-rar.c:495 src/fr-command-tar.c:322
#, c-format
msgid "Adding “%s”"
msgstr "Añadiendo «%s»"
#. Translators: %s is a filename.
#: src/fr-command-7z.c:458 src/fr-command-rar.c:627 src/fr-command-tar.c:440
#: src/fr-command-7z.c:458 src/fr-command-rar.c:627 src/fr-command-tar.c:443
#, c-format
msgid "Extracting “%s”"
msgstr "Extrayendo «%s»"
#. Translators: %s is a filename.
#: src/fr-command-rar.c:576 src/fr-command-tar.c:385
#: src/fr-command-rar.c:576 src/fr-command-tar.c:388
#, c-format
msgid "Removing “%s”"
msgstr "Quitando «%s»"
......@@ -540,15 +534,15 @@ msgstr "Quitando «%s»"
msgid "Could not find the volume: %s"
msgstr "No se pudo encontrar el volumen: %s"
#: src/fr-command-tar.c:395
#: src/fr-command-tar.c:398
msgid "Deleting files from archive"
msgstr "Borrando archivos del archivador"
msgstr "Eliminando archivos del archivador"
#: src/fr-command-tar.c:500
#: src/fr-command-tar.c:503
msgid "Recompressing archive"
msgstr "Recomprimiendo archivador"
#: src/fr-command-tar.c:779
#: src/fr-command-tar.c:801
msgid "Decompressing archive"
msgstr "Descomprimiendo archivador"
......@@ -564,7 +558,7 @@ msgstr "No se pudo cargar la ubicación"
#: src/fr-new-archive-dialog.c:352 src/fr-new-archive-dialog.c:371
#: src/fr-new-archive-dialog.c:387 src/fr-new-archive-dialog.c:436
#: src/fr-new-archive-dialog.c:454 src/fr-new-archive-dialog.c:476
#: src/fr-window.c:3032
#: src/fr-window.c:3037
msgid "Could not create the archive"
msgstr "No se pudo crear el archivador"
......@@ -577,7 +571,7 @@ msgid "You don’t have permission to create an archive in this folder"
msgstr "No tiene permisos para crear un archivador en esta carpeta"
#. Translators: the name references to a filename. This message can appear when renaming a file.
#: src/fr-new-archive-dialog.c:456 src/fr-window.c:8338
#: src/fr-new-archive-dialog.c:456 src/fr-window.c:8341
msgid "New name is the same as old one, please type other name."
msgstr "El nombre nuevo es el mismo que el antiguo, introduzca otro nombre."
......@@ -593,7 +587,7 @@ msgid ""
msgstr ""
"El archivo ya existe en «%s». Si lo reemplaza sobrescribirá su contenido."
#: src/fr-new-archive-dialog.c:506 src/fr-window.c:6780
#: src/fr-new-archive-dialog.c:506 src/fr-window.c:6783
msgid "_Replace"
msgstr "_Reemplazar"
......@@ -614,185 +608,185 @@ msgstr "Todos los archivadores"
msgid "All files"
msgstr "Todos los archivos"
#: src/fr-window.c:1221
#: src/fr-window.c:1226
msgid "Operation completed"
msgstr "Operación completada"
#: src/fr-window.c:1634
#: src/fr-window.c:1639
msgid "Folder"
msgstr "Carpeta"
#: src/fr-window.c:2024
#: src/fr-window.c:2029
msgid "[read only]"
msgstr "[sólo lectura]"
#: src/fr-window.c:2165
#: src/fr-window.c:2170
#, c-format
msgid "Could not display the folder “%s”"
msgstr "No se pudo mostrar la carpeta «%s»"
#. Translators: %s is a filename
#: src/fr-window.c:2338 src/fr-window.c:2376
#: src/fr-window.c:2343 src/fr-window.c:2381
#, c-format
msgid "Creating “%s”"
msgstr "Creando «%s»"
#. Translators: %s is a filename
#: src/fr-window.c:2342
#: src/fr-window.c:2347
#, c-format
msgid "Loading “%s”"
msgstr "Cargando «%s»"
#. Translators: %s is a filename
#: src/fr-window.c:2346
#: src/fr-window.c:2351
#, c-format
msgid "Reading “%s”"
msgstr "Leyendo «%s»"
#. Translators: %s is a filename
#: src/fr-window.c:2350
#: src/fr-window.c:2355
#, c-format
msgid "Deleting the files from “%s”"
msgstr "Eliminando los archivos de «%s»"
#. Translators: %s is a filename
#: src/fr-window.c:2354
#: src/fr-window.c:2359
#, c-format
msgid "Testing “%s”"
msgstr "Verificando «%s»"
#: src/fr-window.c:2357
#: src/fr-window.c:2362
msgid "Getting the file list"
msgstr "Obteniendo la lista de archivos"
#. Translators: %s is a filename
#: src/fr-window.c:2361
#: src/fr-window.c:2366
#, c-format
msgid "Copying the files to add to “%s”"
msgstr "Copiando los archivos que añadir a «%s»"
#. Translators: %s is a filename
#: src/fr-window.c:2365
#: src/fr-window.c:2370
#, c-format
msgid "Adding the files to “%s”"
msgstr "Añadiendo los archivos a «%s»"
#. Translators: %s is a filename
#: src/fr-window.c:2369
#: src/fr-window.c:2374
#, c-format
msgid "Extracting the files from “%s”"
msgstr "Extrayendo los archivos de «%s»"
#: src/fr-window.c:2372
#: src/fr-window.c:2377
msgid "Copying the extracted files to the destination"
msgstr "Copiando los archivos extraídos al destino"
#. Translators: %s is a filename
#: src/fr-window.c:2381
#: src/fr-window.c:2386
#, c-format
msgid "Saving “%s”"
msgstr "Guardando «%s»"
#. Translators: %s is a filename
#: src/fr-window.c:2388
#: src/fr-window.c:2393
#, c-format
msgid "Renaming the files in “%s”"
msgstr "Renombrando los archivos en «%s»"
#. Translators: %s is a filename
#: src/fr-window.c:2392
#: src/fr-window.c:2397
#, c-format
msgid "Updating the files in “%s”"
msgstr "Actualizando los archivos en «%s»"
#: src/fr-window.c:2681
#: src/fr-window.c:2686
#, c-format
msgid "%d file remaining"
msgid_plural "%'d files remaining"
msgstr[0] "queda %d archivo"
msgstr[1] "quedan %'d archivos"
#: src/fr-window.c:2685 src/fr-window.c:3309
#: src/fr-window.c:2690 src/fr-window.c:3314
msgid "Please wait…"
msgstr "Espere…"
#: src/fr-window.c:2803
#: src/fr-window.c:2808
msgid "Extraction completed successfully"
msgstr "La extracción se completó satisfactoriamente"
#: src/fr-window.c:2806
#: src/fr-window.c:2811
msgid "_Show the Files"
msgstr "_Mostrar los archivos"
#. Translators: %s is a filename
#: src/fr-window.c:2823 src/fr-window.c:6266
#: src/fr-window.c:2828 src/fr-window.c:6269
#, c-format
msgid "“%s” created successfully"
msgstr "«%s» creado con éxito"
#: src/fr-window.c:2830
#: src/fr-window.c:2835
msgid "_Open the Archive"
msgstr "_Abrir el archivador"
#: src/fr-window.c:2918 src/fr-window.c:3088
#: src/fr-window.c:2923 src/fr-window.c:3093
msgid "Command exited abnormally."
msgstr "El comando terminó con error."
#: src/fr-window.c:3037
#: src/fr-window.c:3042
msgid "An error occurred while extracting files."
msgstr "Ha ocurrido un error mientras se extraían los archivos."
#: src/fr-window.c:3043
#: src/fr-window.c:3048
#, c-format
msgid "Could not open “%s”"
msgstr "No se pudo abrir «%s»"
#: src/fr-window.c:3048
#: src/fr-window.c:3053
msgid "An error occurred while loading the archive."
msgstr "Se produjo un error cargando el archivador."
#: src/fr-window.c:3052
#: src/fr-window.c:3057
msgid "An error occurred while deleting files from the archive."
msgstr "Se produjo un error al eliminar archivos del archivador."
#: src/fr-window.c:3058
#: src/fr-window.c:3063
msgid "An error occurred while adding files to the archive."
msgstr "Se produjo un error al añadir archivos al archivador."
#: src/fr-window.c:3062
#: src/fr-window.c:3067
msgid "An error occurred while testing archive."
msgstr "Se produjo un error al comprobar el archivador."
#: src/fr-window.c:3067
#: src/fr-window.c:3072
msgid "An error occurred while saving the archive."
msgstr "Ocurrió un error al guardar el archivador."
#: src/fr-window.c:3071
#: src/fr-window.c:3076
msgid "An error occurred while renaming the files."
msgstr "Ocurrió un error al renombrar los archivos."
#: src/fr-window.c:3075
#: src/fr-window.c:3080
msgid "An error occurred while updating the files."
msgstr "Ocurrió un error al actualizar los archivos."
#: src/fr-window.c:3079
#: src/fr-window.c:3084
msgid "An error occurred."
msgstr "Ocurrió un error."
#: src/fr-window.c:3085
#: src/fr-window.c:3090
msgid "Command not found."
msgstr "Comando no encontrado."
#: src/fr-window.c:3241
#: src/fr-window.c:3246
msgid "Test Result"
msgstr "Resultado de la comprobación"
#: src/fr-window.c:4212 src/fr-window.c:9022 src/fr-window.c:9056
#: src/fr-window.c:9336
#: src/fr-window.c:4217 src/fr-window.c:9025 src/fr-window.c:9059
#: src/fr-window.c:9339
msgid "Could not perform the operation"
msgstr "No se pudo efectuar la operación"
#: src/fr-window.c:4237
#: src/fr-window.c:4242
msgid ""
"Do you want to add this file to the current archive or open it as a new "
"archive?"
......@@ -800,127 +794,126 @@ msgstr ""
"¿Quiere añadir este archivo al archivador actual o prefiere abrirlo como un "
"archivador nuevo ?"
#: src/fr-window.c:4266
#: src/fr-window.c:4271
msgid "Do you want to create a new archive with these files?"
msgstr "¿Quiere crear un nuevo archivador con estos archivos?"
#: src/fr-window.c:4269
#: src/fr-window.c:4274
msgid "Create _Archive"
msgstr "Crear _archivador"
#: src/fr-window.c:4298 src/fr-window.c:7475
#: src/fr-window.c:4303 src/fr-window.c:7478
msgid "New Archive"
msgstr "Nuevo archivador"
#: src/fr-window.c:5016
#: src/fr-window.c:5021
msgid "Folders"
msgstr "Carpetas"
#: src/fr-window.c:5054 src/ui/file-selector.ui:221
#: src/fr-window.c:5059 src/ui/file-selector.ui:221
msgctxt "File"
msgid "Size"
msgstr "Tamaño"
#: src/fr-window.c:5055
#: src/fr-window.c:5060
msgctxt "File"
msgid "Type"
msgstr "Tipo"
#: src/fr-window.c:5056 src/ui/file-selector.ui:237
#: src/fr-window.c:5061 src/ui/file-selector.ui:237
msgctxt "File"
msgid "Modified"
msgstr "Modificado"
#: src/fr-window.c:5057
#: src/fr-window.c:5062
msgctxt "File"
msgid "Location"
msgstr "Ubilación"
#: src/fr-window.c:5066 src/ui/file-selector.ui:190
#: src/fr-window.c:5071 src/ui/file-selector.ui:190
msgctxt "File"
msgid "Name"
msgstr "Nombre"
#: src/fr-window.c:5820 src/ui/extract-dialog-options.ui:20
#: src/fr-window.c:5823 src/ui/extract-dialog-options.ui:20
msgctxt "Action"
msgid "Extract"
msgstr "Extraer"
#: src/fr-window.c:5824
#: src/fr-window.c:5827
msgctxt "Action"
msgid "Add Files"
msgstr "Añadir archivos"
#: src/fr-window.c:5829 src/fr-window.c:5859
#: src/fr-window.c:5832 src/fr-window.c:5862
msgid "Find files by name"
msgstr "Buscar archivos por nombre"
#: src/fr-window.c:5876
#: src/fr-window.c:5879
msgid "Go to the previous visited location"
msgstr "Ir al anterior lugar visitado"
#: src/fr-window.c:5881
#: src/fr-window.c:5884
msgid "Go to the next visited location"
msgstr "Ir al siguiente lugar visitado"
#: src/fr-window.c:5891
#: src/fr-window.c:5894
msgid "Go to the home location"
msgstr "Ir al lugar inicial"
#. Translators: after the colon there is a folder name.
#: src/fr-window.c:5900 src/ui/file-selector.ui:98
#: src/fr-window.c:5903 src/ui/file-selector.ui:98
#: src/ui/new-archive-dialog.ui:93
msgid "_Location:"
msgstr "_Lugar:"
#: src/fr-window.c:6280 src/ui/menus.ui:7 src/ui/menus.ui:47 src/ui/menus.ui:83
#: src/fr-window.c:6283 src/ui/menus.ui:7 src/ui/menus.ui:47 src/ui/menus.ui:83
msgctxt "Action"
msgid "Open"
msgstr "Abrir"
#: src/fr-window.c:6768
#: src/fr-window.c:6771
#, c-format
msgid "Replace file “%s”?"
msgstr "¿Reemplazar el archivo «%s»?"
#: src/fr-window.c:6771
#: src/fr-window.c:6774
#, c-format
msgid "Another file with the same name already exists in “%s”."
msgstr "Ya existe otro archivo con el mismo nombre en «%s»."
#: src/fr-window.c:6777
#: src/fr-window.c:6780
msgid "Replace _All"
msgstr "Reemplazar _todo"
#: src/fr-window.c:6778
#| msgid "Replace _All"
#: src/fr-window.c:6781
msgid "Replace _Nothing"
msgstr "Reemplazar _nada"
#: src/fr-window.c:6779
#: src/fr-window.c:6782
msgid "_Skip"
msgstr "_Omitir"
#: src/fr-window.c:7659 src/fr-window.c:8016
#: src/fr-window.c:7662 src/fr-window.c:8019
#, c-format
msgid "Could not save the archive “%s”"
msgstr "No se pudo guardar el archivador «%s»"
#: src/fr-window.c:7786
#: src/fr-window.c:7789
msgid "Save"
msgstr "Guardar"
#: src/fr-window.c:8110
#: src/fr-window.c:8113
msgid "Last Output"
msgstr "Último resultado"
#. Translators: the name references to a filename. This message can appear when renaming a file.
#: src/fr-window.c:8333
#: src/fr-window.c:8336
msgid "New name is void, please type a name."
msgstr "El nombre nuevo está vacío, introduzca un nombre."
#. Translators: the %s references to a filename. This message can appear when renaming a file.
#: src/fr-window.c:8343
#: src/fr-window.c:8346
#, c-format
msgid ""
"Name “%s” is not valid because it contains at least one of the following "
......@@ -929,7 +922,7 @@ msgstr ""
"El nombre «%s» no es válido porque contiene al menos uno de los siguientes "
"caracteres: %s, introduzca otro nombre."
#: src/fr-window.c:8379
#: src/fr-window.c:8382
#, c-format
msgid ""
"A folder named “%s” already exists.\n"
......@@ -940,11 +933,11 @@ msgstr ""
"\n"
"%s"
#: src/fr-window.c:8379 src/fr-window.c:8381
#: src/fr-window.c:8382 src/fr-window.c:8384
msgid "Please use a different name."
msgstr "Use un nombre diferente."
#: src/fr-window.c:8381
#: src/fr-window.c:8384
#, c-format
msgid ""
"A file named “%s” already exists.\n"
......@@ -955,51 +948,51 @@ msgstr ""
"\n"
"%s"
#: src/fr-window.c:8451
#: src/fr-window.c:8454
msgid "Rename"
msgstr "Renombrar"
#: src/fr-window.c:8452
#: src/fr-window.c:8455
msgid "_New folder name:"
msgstr "_Nombre de carpeta nueva:"
#: src/fr-window.c:8452
#: src/fr-window.c:8455
msgid "_New file name:"
msgstr "_Nombre del archivo nuevo:"
#: src/fr-window.c:8456
#: src/fr-window.c:8459
msgid "_Rename"
msgstr "_Renombrar"
#: src/fr-window.c:8473 src/fr-window.c:8491
#: src/fr-window.c:8476 src/fr-window.c:8494
msgid "Could not rename the folder"
msgstr "No se pudo renombrar la carpeta"
#: src/fr-window.c:8473 src/fr-window.c:8491
#: src/fr-window.c:8476 src/fr-window.c:8494
msgid "Could not rename the file"
msgstr "No se pudo renombrar el archivo"
#. Translators: %s are archive filenames
#: src/fr-window.c:8929
#: src/fr-window.c:8932
#, c-format
msgid "Moving the files from “%s” to “%s”"
msgstr "Moviendo los archivos de «%s» a «%s»"
#. Translators: %s are archive filenames
#: src/fr-window.c:8932
#: src/fr-window.c:8935
#, c-format
msgid "Copying the files from “%s” to “%s”"
msgstr "Copiando los archivos de «%s» a «%s»"
#: src/fr-window.c:8983
#: src/fr-window.c:8986
msgid "Paste Selection"
msgstr "Pegar selección"
#: src/fr-window.c:8984
#: src/fr-window.c:8987
msgid "_Destination folder:"
msgstr "Carpeta de _destino:"
#: src/fr-window.c:8988 src/ui/app-menubar.ui:61
#: src/fr-window.c:8991 src/ui/app-menubar.ui:61
msgid "_Paste"
msgstr "_Pegar"
......@@ -1329,6 +1322,10 @@ msgstr "Número de archivos:"
msgid "S_elect the files you want to update:"
msgstr "S_eleccione los archivos que quiere actualizar:"
#~| msgid "Archive Manager"
#~ msgid "org.gnome.ArchiveManager"
#~ msgstr "org.gnome.ArchiveManager"
#~| msgid "File Roller"
#~ msgid "file-roller"
#~ msgstr "file-roller"
......
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
......@@ -73,6 +73,9 @@ file_selector_response_cb (GtkWidget *widget,
const char *exclude_folders;
GList *files;
if (response == GTK_RESPONSE_NONE)
return TRUE;
dlg_add_folder_save_last_options (data);
if ((response == GTK_RESPONSE_CANCEL) || (response == GTK_RESPONSE_DELETE_EVENT)) {
......@@ -207,11 +210,7 @@ dlg_add (FrWindow *window)
/* add the buttons */
if (! use_header)
gtk_box_pack_start (GTK_BOX (gtk_dialog_get_action_area (GTK_DIALOG (data->dialog))),
options_button,
FALSE,
FALSE,
0);
gtk_dialog_add_action_widget (GTK_DIALOG (data->dialog), options_button, GTK_RESPONSE_NONE);
gtk_dialog_add_button (GTK_DIALOG (data->dialog),
_GTK_LABEL_CANCEL,
......
......@@ -175,7 +175,7 @@ install_packages (InstallerData *idata)
if (window != NULL) {
GdkCursor *cursor;
cursor = gdk_cursor_new (GDK_WATCH);
cursor = gdk_cursor_new_for_display (gdk_display_get_default(), GDK_WATCH);
gdk_window_set_cursor (window, cursor);
g_object_unref (cursor);
......
......@@ -42,15 +42,15 @@
#define FILE_ATTRIBUTES_NEEDED_BY_ARCHIVE_ENTRY ("standard::*,time::*,access::*,unix::*")
G_DEFINE_TYPE (FrArchiveLibarchive, fr_archive_libarchive, FR_TYPE_ARCHIVE)
struct _FrArchiveLibarchivePrivate {
gssize compressed_size;
gssize uncompressed_size;
};
G_DEFINE_TYPE_WITH_PRIVATE (FrArchiveLibarchive, fr_archive_libarchive, FR_TYPE_ARCHIVE)
static void
fr_archive_libarchive_finalize (GObject *object)
{
......@@ -83,13 +83,16 @@ const char *libarchiver_mime_types[] = {
"application/x-lrzip-compressed-tar",
"application/x-lzip-compressed-tar",
"application/x-lzma-compressed-tar",
"application/x-lzop-compressed-tar",
"application/x-rar",
"application/x-rpm",
"application/x-tar",
"application/x-tarz",
"application/x-tzo",
"application/x-xar",
"application/x-xz-compressed-tar",
#if (ARCHIVE_VERSION_NUMBER >= 3003003)
"application/x-zstd-compressed-tar",
#endif
"application/zip",
NULL
};
......@@ -111,10 +114,14 @@ fr_archive_libarchive_get_capabilities (FrArchive *archive,
capabilities = FR_ARCHIVE_CAN_STORE_MANY_FILES;
/* write-only formats */
/* give priority to 7z* for 7z archives. */
if (strcmp (mime_type, "application/x-7z-compressed") == 0) {
capabilities |= FR_ARCHIVE_CAN_WRITE;
return capabilities;
if (_g_program_is_available ("7za", check_command)
|| _g_program_is_available ("7zr", check_command)
|| _g_program_is_available ("7z", check_command))
{
return capabilities;
}
}
/* give priority to 7za that supports CAB files better. */
......@@ -274,6 +281,73 @@ load_data_read (struct archive *a,
}
static gint64
load_data_seek (struct archive *a,
void *client_data,
gint64 request,
int whence)
{
GSeekable *seekable;
GSeekType seektype;
off_t new_offset;
LoadData *load_data = client_data;
seekable = (GSeekable*)(load_data->istream);
if ((load_data->error != NULL) || (load_data->istream == NULL))
return -1;
switch (whence) {
case SEEK_SET:
seektype = G_SEEK_SET;
break;
case SEEK_CUR:
seektype = G_SEEK_CUR;
break;
case SEEK_END:
seektype = G_SEEK_END;
break;
default:
return -1;
}
g_seekable_seek (seekable,
request,
seektype,
load_data->cancellable,
&load_data->error);
new_offset = g_seekable_tell (seekable);
if (load_data->error != NULL)
return -1;
return new_offset;
}
static gint64
load_data_skip (struct archive *a,
void *client_data,
gint64 request)
{
GSeekable *seekable;
off_t old_offset, new_offset;
LoadData *load_data = client_data;
seekable = (GSeekable*)(load_data->istream);
if (load_data->error != NULL || load_data->istream == NULL)
return -1;
old_offset = g_seekable_tell (seekable);
new_offset = load_data_seek (a, client_data, request, SEEK_CUR);
if (new_offset > old_offset)
return (new_offset - old_offset);
return 0;
}
static int
load_data_close (struct archive *a,
void *client_data)
......@@ -292,6 +366,25 @@ load_data_close (struct archive *a,
}
static int
create_read_object (LoadData *load_data,
struct archive **a)
{
*a = archive_read_new ();
archive_read_support_filter_all (*a);
archive_read_support_format_all (*a);
archive_read_set_open_callback (*a, load_data_open);
archive_read_set_read_callback (*a, load_data_read);
archive_read_set_close_callback (*a, load_data_close);
archive_read_set_seek_callback (*a, load_data_seek);
archive_read_set_skip_callback (*a, load_data_skip);
archive_read_set_callback_data (*a, load_data);
return archive_read_open1 (*a);
}
/* -- list -- */
......@@ -349,10 +442,12 @@ list_archive_thread (GSimpleAsyncResult *result,
fr_archive_progress_set_total_bytes (load_data->archive,
_g_file_get_size (fr_archive_get_file (load_data->archive), cancellable));
a = archive_read_new ();
archive_read_support_filter_all (a);
archive_read_support_format_all (a);
archive_read_open (a, load_data, load_data_open, load_data_read, load_data_close);
r = create_read_object (load_data, &a);
if (r != ARCHIVE_OK) {
archive_read_free(a);
return;
}
while ((r = archive_read_next_header (a, &entry)) == ARCHIVE_OK) {
FileData *file_data;
const char *pathname;
......@@ -620,15 +715,17 @@ extract_archive_thread (GSimpleAsyncResult *result,
extract_data = g_simple_async_result_get_op_res_gpointer (result);
load_data = LOAD_DATA (extract_data);
r = create_read_object (load_data, &a);
if (r != ARCHIVE_OK) {
archive_read_free(a);
return;
}
checked_folders = g_hash_table_new_full (g_file_hash, (GEqualFunc) g_file_equal, g_object_unref, NULL);
created_files = g_hash_table_new_full (g_file_hash, (GEqualFunc) g_file_equal, g_object_unref, g_object_unref);
folders_created_during_extraction = g_hash_table_new_full (g_file_hash, (GEqualFunc) g_file_equal, g_object_unref, NULL);
fr_archive_progress_set_total_files (load_data->archive, extract_data->n_files_to_extract);
a = archive_read_new ();
archive_read_support_filter_all (a);
archive_read_support_format_all (a);
archive_read_open (a, load_data, load_data_open, load_data_read, load_data_close);
while ((r = archive_read_next_header (a, &entry)) == ARCHIVE_OK) {
const char *pathname;
char *fullpath;
......@@ -1163,7 +1260,7 @@ _archive_write_set_format_from_context (struct archive *a,
archive_write_set_format_pax_restricted (a);
archive_filter = ARCHIVE_FILTER_LZMA;
}
else if (_g_str_equal (mime_type, "application/x-lzop-compressed-tar")) {
else if (_g_str_equal (mime_type, "application/x-tzo")) {
archive_write_set_format_pax_restricted (a);
archive_filter = ARCHIVE_FILTER_LZOP;
}
......@@ -1171,6 +1268,12 @@ _archive_write_set_format_from_context (struct archive *a,
archive_write_set_format_pax_restricted (a);
archive_filter = ARCHIVE_FILTER_XZ;
}
#if (ARCHIVE_VERSION_NUMBER >= 3003003)
else if (_g_str_equal (mime_type, "application/x-zstd-compressed-tar")) {
archive_write_set_format_pax_restricted (a);
archive_filter = ARCHIVE_FILTER_ZSTD;
}
#endif
else if (_g_str_equal (mime_type, "application/x-tar")) {
archive_write_add_filter_none (a);
archive_write_set_format_pax_restricted (a);
......@@ -1225,6 +1328,11 @@ _archive_write_set_format_from_context (struct archive *a,
case ARCHIVE_FILTER_XZ:
archive_write_add_filter_xz (a);
break;
#if (ARCHIVE_VERSION_NUMBER >= 3003003)
case ARCHIVE_FILTER_ZSTD:
archive_write_add_filter_zstd (a);
break;
#endif
default:
break;
}
......@@ -1232,19 +1340,40 @@ _archive_write_set_format_from_context (struct archive *a,
/* set the compression level */
compression_level = NULL;
switch (save_data->compression) {
case FR_COMPRESSION_VERY_FAST:
compression_level = "1";
break;
case FR_COMPRESSION_FAST:
compression_level = "3";
break;
case FR_COMPRESSION_NORMAL:
compression_level = "6";
break;
case FR_COMPRESSION_MAXIMUM:
compression_level = "9";
break;
#if (ARCHIVE_VERSION_NUMBER >= 3003003)
if (archive_filter == ARCHIVE_FILTER_ZSTD) {
switch (save_data->compression) {
case FR_COMPRESSION_VERY_FAST:
compression_level = "1";
break;
case FR_COMPRESSION_FAST:
compression_level = "2";
break;
case FR_COMPRESSION_NORMAL:
compression_level = "3";
break;
case FR_COMPRESSION_MAXIMUM:
compression_level = "22";
break;
}
}
else
#endif
{
switch (save_data->compression) {
case FR_COMPRESSION_VERY_FAST:
compression_level = "1";
break;
case FR_COMPRESSION_FAST:
compression_level = "3";
break;
case FR_COMPRESSION_NORMAL:
compression_level = "6";
break;
case FR_COMPRESSION_MAXIMUM:
compression_level = "9";
break;
}
}
if (compression_level != NULL)
archive_write_set_filter_option (a, NULL, "compression-level", compression_level);
......@@ -1436,10 +1565,7 @@ save_archive_thread (GSimpleAsyncResult *result,
archive_write_open (b, save_data, save_data_open, save_data_write, save_data_close);
archive_write_set_bytes_in_last_block (b, 1);
a = archive_read_new ();
archive_read_support_filter_all (a);
archive_read_support_format_all (a);
archive_read_open (a, load_data, load_data_open, load_data_read, load_data_close);
create_read_object (load_data, &a);
if (save_data->begin_operation != NULL)
save_data->begin_operation (save_data, save_data->user_data);
......@@ -2161,7 +2287,6 @@ fr_archive_libarchive_class_init (FrArchiveLibarchiveClass *klass)
FrArchiveClass *archive_class;
fr_archive_libarchive_parent_class = g_type_class_peek_parent (klass);
g_type_class_add_private (klass, sizeof (FrArchiveLibarchivePrivate));
gobject_class = G_OBJECT_CLASS (klass);
gobject_class->finalize = fr_archive_libarchive_finalize;
......@@ -2186,7 +2311,7 @@ fr_archive_libarchive_init (FrArchiveLibarchive *self)
{
FrArchive *base = FR_ARCHIVE (self);
self->priv = G_TYPE_INSTANCE_GET_PRIVATE (self, FR_TYPE_ARCHIVE_LIBARCHIVE, FrArchiveLibarchivePrivate);
self->priv = fr_archive_libarchive_get_instance_private (self);
base->propAddCanReplace = TRUE;
base->propAddCanUpdate = TRUE;
......
......@@ -65,9 +65,6 @@ char *action_names[] = { "NONE",
"UPDATING_FILES" };
G_DEFINE_TYPE (FrArchive, fr_archive, G_TYPE_OBJECT)
typedef struct _DroppedItemsData DroppedItemsData;
......@@ -97,6 +94,9 @@ struct _FrArchivePrivate {
};
G_DEFINE_TYPE_WITH_PRIVATE (FrArchive, fr_archive, G_TYPE_OBJECT)
enum {
START,
PROGRESS,
......@@ -301,7 +301,6 @@ fr_archive_class_init (FrArchiveClass *klass)
GObjectClass *gobject_class;
fr_archive_parent_class = g_type_class_peek_parent (klass);
g_type_class_add_private (klass, sizeof (FrArchivePrivate));
gobject_class = G_OBJECT_CLASS (klass);
gobject_class->finalize = fr_archive_finalize;
......@@ -430,7 +429,7 @@ fr_archive_class_init (FrArchiveClass *klass)
static void
fr_archive_init (FrArchive *self)
{
self->priv = G_TYPE_INSTANCE_GET_PRIVATE (self, FR_TYPE_ARCHIVE, FrArchivePrivate);
self->priv = fr_archive_get_instance_private (self);
self->mime_type = NULL;
self->files = g_ptr_array_sized_new (FILE_ARRAY_INITIAL_SIZE);
......
......@@ -314,6 +314,14 @@ fr_command_cfile_add (FrCommand *comm,
fr_process_add_arg (comm->process, compressed_filename);
fr_process_end_command (comm->process);
}
else if (_g_mime_type_matches (archive->mime_type, "application/zstd")) {
fr_process_begin_command (comm->process, "zstd");
fr_process_set_working_dir (comm->process, temp_dir);
fr_process_add_arg (comm->process, "--");
fr_process_add_arg (comm->process, filename);
fr_process_end_command (comm->process);
compressed_filename = g_strconcat (filename, ".zst", NULL);
}
else {
g_warning ("Unhandled mime type: '%s'", archive->mime_type);
g_warn_if_reached ();
......@@ -478,6 +486,14 @@ fr_command_cfile_extract (FrCommand *comm,
fr_process_add_arg (comm->process, uncompr_file);
fr_process_end_command (comm->process);
}
else if (_g_mime_type_matches (archive->mime_type, "application/zstd")) {
fr_process_begin_command (comm->process, "zstd");
fr_process_set_working_dir (comm->process, temp_dir);
fr_process_add_arg (comm->process, "-f");
fr_process_add_arg (comm->process, "-d");
fr_process_add_arg (comm->process, temp_file);
fr_process_end_command (comm->process);
}
/* copy uncompress file to the dest dir */
......@@ -521,6 +537,7 @@ const char *cfile_mime_type[] = { "application/x-gzip",
"application/x-lzop",
"application/x-rzip",
"application/x-xz",
"application/zstd",
NULL };
......@@ -582,6 +599,10 @@ fr_command_cfile_get_capabilities (FrArchive *archive,
if (_g_program_is_available ("lz4", check_command))
capabilities |= FR_ARCHIVE_CAN_READ_WRITE;
}
else if (_g_mime_type_matches (mime_type, "application/zstd")) {
if (_g_program_is_available ("zstd", check_command))
capabilities |= FR_ARCHIVE_CAN_READ_WRITE;
}
return capabilities;
}
......@@ -610,6 +631,8 @@ fr_command_cfile_get_packages (FrArchive *archive,
return PACKAGES ("rzip");
else if (_g_mime_type_matches (mime_type, "application/x-lz4"))
return PACKAGES ("lz4");
else if (_g_mime_type_matches (mime_type, "application/zstd"))
return PACKAGES ("zstd");
return NULL;
}
......
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.