mirror of
https://github.com/rkd77/elinks.git
synced 2024-12-04 14:46:47 -05:00
[download] Added boolean option document.download.compressed_as_plain
Enabled by default. It allow to view compressed files automatically. For example files in /usr/share/doc.
This commit is contained in:
parent
13b4998935
commit
271984b760
@ -709,8 +709,6 @@ static union option_info config_options_info[] = {
|
|||||||
|
|
||||||
/* Keep options in alphabetical order. */
|
/* Keep options in alphabetical order. */
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
INIT_OPT_TREE("document", N_("Downloading"),
|
INIT_OPT_TREE("document", N_("Downloading"),
|
||||||
"download", OPT_ZERO,
|
"download", OPT_ZERO,
|
||||||
N_("Options regarding files downloading and handling.")),
|
N_("Options regarding files downloading and handling.")),
|
||||||
@ -724,6 +722,10 @@ static union option_info config_options_info[] = {
|
|||||||
N_("Set the timestamp of each downloaded file to the "
|
N_("Set the timestamp of each downloaded file to the "
|
||||||
"timestamp stored on the server.")),
|
"timestamp stored on the server.")),
|
||||||
|
|
||||||
|
INIT_OPT_BOOL("document.download", N_("Show compressed files as plain text"),
|
||||||
|
"compressed_as_plain", OPT_ZERO, 1,
|
||||||
|
N_("Whether to view compressed files (.gz, .zst or .xz) as plain text.")),
|
||||||
|
|
||||||
/* Does automatic resuming make sense as an option? */
|
/* Does automatic resuming make sense as an option? */
|
||||||
INIT_OPT_INT("document.download", N_("Prevent overwriting"),
|
INIT_OPT_INT("document.download", N_("Prevent overwriting"),
|
||||||
"overwrite", OPT_ZERO, 0, 2, 2,
|
"overwrite", OPT_ZERO, 0, 2, 2,
|
||||||
|
@ -1913,6 +1913,19 @@ struct {
|
|||||||
{ NULL, 1 },
|
{ NULL, 1 },
|
||||||
};
|
};
|
||||||
|
|
||||||
|
static const char *compressed_types[] = {
|
||||||
|
#ifdef CONFIG_GZIP
|
||||||
|
"application/gzip",
|
||||||
|
#endif
|
||||||
|
#ifdef CONFIG_ZSTD
|
||||||
|
"application/zstd",
|
||||||
|
#endif
|
||||||
|
#ifdef CONFIG_LZMA
|
||||||
|
"application/x-xz",
|
||||||
|
#endif
|
||||||
|
NULL
|
||||||
|
};
|
||||||
|
|
||||||
/*! @relates type_query */
|
/*! @relates type_query */
|
||||||
int
|
int
|
||||||
setup_download_handler(struct session *ses, struct download *loading,
|
setup_download_handler(struct session *ses, struct download *loading,
|
||||||
@ -1936,12 +1949,22 @@ setup_download_handler(struct session *ses, struct download *loading,
|
|||||||
plaintext = known_types[i].plain;
|
plaintext = known_types[i].plain;
|
||||||
goto plaintext_follow;
|
goto plaintext_follow;
|
||||||
}
|
}
|
||||||
|
|
||||||
xwin = ses->tab->term->environment & ENV_XWIN;
|
xwin = ses->tab->term->environment & ENV_XWIN;
|
||||||
handler = get_mime_type_handler(ctype, xwin);
|
handler = get_mime_type_handler(ctype, xwin);
|
||||||
|
|
||||||
if (!handler && strlen(ctype) >= 4 && !c_strncasecmp(ctype, "text", 4))
|
if (!handler) {
|
||||||
goto plaintext_follow;
|
if (strlen(ctype) >= 4 && !c_strncasecmp(ctype, "text", 4)) {
|
||||||
|
goto plaintext_follow;
|
||||||
|
}
|
||||||
|
for (i = 0; compressed_types[i]; i++) {
|
||||||
|
if (c_strcasecmp(ctype, compressed_types[i])) {
|
||||||
|
continue;
|
||||||
|
}
|
||||||
|
if (get_opt_bool("document.download.compressed_as_plain", ses)) {
|
||||||
|
goto plaintext_follow;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
type_query = find_type_query(ses);
|
type_query = find_type_query(ses);
|
||||||
if (type_query) {
|
if (type_query) {
|
||||||
|
Loading…
Reference in New Issue
Block a user