mirror of
https://github.com/rkd77/elinks.git
synced 2025-01-03 14:57:44 -05:00
Merge branch 'elinks-0.12' into elinks-0.13
Conflicts: src/network/connection.h src/session/download.c src/session/download.h
This commit is contained in:
commit
5b6c913c6a
6
NEWS
6
NEWS
@ -139,8 +139,6 @@ Miscellaneous:
|
|||||||
* trivial bug 930: refresh status bar when key prefix is eaten
|
* trivial bug 930: refresh status bar when key prefix is eaten
|
||||||
* trivial bug 776: ``elinks -remote http://elinks.cz/'' no longer clears
|
* trivial bug 776: ``elinks -remote http://elinks.cz/'' no longer clears
|
||||||
the screen
|
the screen
|
||||||
* enhancement 121: if a mailcap entry indicates 'copiousoutput', ELinks
|
|
||||||
itself acts as a pager
|
|
||||||
* enhancement 790: If-Modified-Since and If-None-Match
|
* enhancement 790: If-Modified-Since and If-None-Match
|
||||||
* enhancement: HTTP negotiate-auth using GSSAPI
|
* enhancement: HTTP negotiate-auth using GSSAPI
|
||||||
* enhancement: FSP progress indicator and password prompt
|
* enhancement: FSP progress indicator and password prompt
|
||||||
@ -274,6 +272,8 @@ have already been considered.
|
|||||||
not sorted
|
not sorted
|
||||||
- (bugfix 968) assertion width > 0 failed in copy_chars called from
|
- (bugfix 968) assertion width > 0 failed in copy_chars called from
|
||||||
justify_line
|
justify_line
|
||||||
|
- bug 1015: incompatible pointer type for PyString_AsStringAndSize
|
||||||
|
- bug 917: Going to unopened /dev/fd/ kills select_loop
|
||||||
* Already backported to a previous release but not listed there:
|
* Already backported to a previous release but not listed there:
|
||||||
- (enhancement) Activate link only when onClick returns true.
|
- (enhancement) Activate link only when onClick returns true.
|
||||||
Fixed bug 786 in ELinks 0.11.2.
|
Fixed bug 786 in ELinks 0.11.2.
|
||||||
@ -304,6 +304,8 @@ have already been considered.
|
|||||||
2a6125e3d0407b588eb286d4d0ff5c98c23ebda9
|
2a6125e3d0407b588eb286d4d0ff5c98c23ebda9
|
||||||
- (enhancement) Support for pasting from GNU screen clipboard,
|
- (enhancement) Support for pasting from GNU screen clipboard,
|
||||||
reverted in 763f03f146cc1391b303c8074556f0ddea1e3c7a
|
reverted in 763f03f146cc1391b303c8074556f0ddea1e3c7a
|
||||||
|
- enhancement 121: if a mailcap entry indicates 'copiousoutput',
|
||||||
|
ELinks itself acts as a pager
|
||||||
* Unimportant changes:
|
* Unimportant changes:
|
||||||
- (enhancement) If select fails, save its errno.
|
- (enhancement) If select fails, save its errno.
|
||||||
- (bugfix) Use PF_* instead of AF_* as first parameter of socket(2).
|
- (bugfix) Use PF_* instead of AF_* as first parameter of socket(2).
|
||||||
|
@ -307,8 +307,15 @@ read_encoded_file(struct string *filename, struct string *page)
|
|||||||
encoding = guess_encoding(filename->source);
|
encoding = guess_encoding(filename->source);
|
||||||
}
|
}
|
||||||
|
|
||||||
if (fd == -1)
|
if (fd == -1) {
|
||||||
|
#ifdef HAVE_SYS_CYGWIN_H
|
||||||
|
/* There is no /dev/stdin on Cygwin. */
|
||||||
|
if (!strlcmp(filename->source, filename->length, "/dev/stdin", 10)) {
|
||||||
|
fd = STDIN_FILENO;
|
||||||
|
} else
|
||||||
|
#endif
|
||||||
return state;
|
return state;
|
||||||
|
}
|
||||||
|
|
||||||
/* Some file was opened so let's get down to bi'ness */
|
/* Some file was opened so let's get down to bi'ness */
|
||||||
set_bin(fd);
|
set_bin(fd);
|
||||||
|
@ -545,7 +545,7 @@ format_command(unsigned char *command, unsigned char *type, int copiousoutput)
|
|||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
#if 0
|
|
||||||
if (copiousoutput) {
|
if (copiousoutput) {
|
||||||
unsigned char *pager = getenv("PAGER");
|
unsigned char *pager = getenv("PAGER");
|
||||||
|
|
||||||
@ -562,7 +562,7 @@ format_command(unsigned char *command, unsigned char *type, int copiousoutput)
|
|||||||
add_to_string(&cmd, pager);
|
add_to_string(&cmd, pager);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
#endif
|
|
||||||
return cmd.source;
|
return cmd.source;
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -768,7 +768,6 @@ get_mime_handler_mailcap(unsigned char *type, int xwin)
|
|||||||
handler = init_mime_handler(program, entry->description,
|
handler = init_mime_handler(program, entry->description,
|
||||||
mailcap_mime_module.name,
|
mailcap_mime_module.name,
|
||||||
get_mailcap_ask(), block);
|
get_mailcap_ask(), block);
|
||||||
if (handler) handler->copiousoutput = entry->copiousoutput;
|
|
||||||
mem_free(program);
|
mem_free(program);
|
||||||
|
|
||||||
return handler;
|
return handler;
|
||||||
|
@ -52,7 +52,7 @@ program: view %
|
|||||||
|
|
||||||
type: application/postscript
|
type: application/postscript
|
||||||
block: 1
|
block: 1
|
||||||
program: ps2ascii %
|
program: ps2ascii %|copiousoutput_handler
|
||||||
|
|
||||||
type: application/foo
|
type: application/foo
|
||||||
EOF
|
EOF
|
||||||
|
@ -11,7 +11,6 @@ struct mime_handler {
|
|||||||
unsigned char *backend_name;
|
unsigned char *backend_name;
|
||||||
unsigned int ask:1;
|
unsigned int ask:1;
|
||||||
unsigned int block:1;
|
unsigned int block:1;
|
||||||
unsigned int copiousoutput:1;
|
|
||||||
unsigned char program[1]; /* XXX: Keep last! */
|
unsigned char program[1]; /* XXX: Keep last! */
|
||||||
};
|
};
|
||||||
|
|
||||||
|
@ -4,7 +4,6 @@
|
|||||||
#include "config.h"
|
#include "config.h"
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
#include <stdio.h>
|
|
||||||
#include <stdlib.h>
|
#include <stdlib.h>
|
||||||
#include <string.h>
|
#include <string.h>
|
||||||
#ifdef HAVE_UNISTD_H
|
#ifdef HAVE_UNISTD_H
|
||||||
@ -405,25 +404,6 @@ shutdown_connection_stream(struct connection *conn)
|
|||||||
conn->stream_pipes[0] = conn->stream_pipes[1] = -1;
|
conn->stream_pipes[0] = conn->stream_pipes[1] = -1;
|
||||||
}
|
}
|
||||||
|
|
||||||
static void
|
|
||||||
close_popen(int fd)
|
|
||||||
{
|
|
||||||
struct popen_data *pop;
|
|
||||||
|
|
||||||
foreach (pop, copiousoutput_data) {
|
|
||||||
if (pop->fd == fd) {
|
|
||||||
del_from_list(pop);
|
|
||||||
fclose(pop->stream);
|
|
||||||
if (pop->filename) {
|
|
||||||
unlink(pop->filename);
|
|
||||||
mem_free(pop->filename);
|
|
||||||
}
|
|
||||||
mem_free(pop);
|
|
||||||
break;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
static void
|
static void
|
||||||
free_connection_data(struct connection *conn)
|
free_connection_data(struct connection *conn)
|
||||||
{
|
{
|
||||||
@ -444,7 +424,6 @@ free_connection_data(struct connection *conn)
|
|||||||
if (conn->done)
|
if (conn->done)
|
||||||
conn->done(conn);
|
conn->done(conn);
|
||||||
|
|
||||||
if (conn->popen) close_popen(conn->socket->fd);
|
|
||||||
done_socket(conn->socket);
|
done_socket(conn->socket);
|
||||||
done_socket(conn->data_socket);
|
done_socket(conn->data_socket);
|
||||||
|
|
||||||
|
@ -66,7 +66,6 @@ struct connection {
|
|||||||
unsigned int running:1;
|
unsigned int running:1;
|
||||||
unsigned int unrestartable:1;
|
unsigned int unrestartable:1;
|
||||||
unsigned int detached:1;
|
unsigned int detached:1;
|
||||||
unsigned int popen:1;
|
|
||||||
unsigned int cgi:1;
|
unsigned int cgi:1;
|
||||||
|
|
||||||
/* Each document is downloaded with some priority. When downloading a
|
/* Each document is downloaded with some priority. When downloading a
|
||||||
@ -84,16 +83,6 @@ struct connection {
|
|||||||
void *info;
|
void *info;
|
||||||
};
|
};
|
||||||
|
|
||||||
struct popen_data {
|
|
||||||
LIST_HEAD(struct popen_data);
|
|
||||||
|
|
||||||
int fd;
|
|
||||||
FILE *stream;
|
|
||||||
unsigned char *filename;
|
|
||||||
};
|
|
||||||
|
|
||||||
extern LIST_OF(struct popen_data) copiousoutput_data;
|
|
||||||
|
|
||||||
int register_check_queue(void);
|
int register_check_queue(void);
|
||||||
|
|
||||||
int get_connections_count(void);
|
int get_connections_count(void);
|
||||||
|
@ -276,8 +276,7 @@ send_bittorrent_tracker_request(struct connection *conn)
|
|||||||
struct bittorrent_connection *bittorrent = conn->info;
|
struct bittorrent_connection *bittorrent = conn->info;
|
||||||
|
|
||||||
/* Kill the timer when we are not sending a periodic request to make
|
/* Kill the timer when we are not sending a periodic request to make
|
||||||
* sure that there are only one tracker request at any time. Besides
|
* sure that there are only one tracker request at any time. */
|
||||||
* it is not possible to call kill_timer() from a timer handler. */
|
|
||||||
kill_timer(&bittorrent->tracker.timer);
|
kill_timer(&bittorrent->tracker.timer);
|
||||||
|
|
||||||
do_send_bittorrent_tracker_request(conn);
|
do_send_bittorrent_tracker_request(conn);
|
||||||
|
@ -25,12 +25,10 @@
|
|||||||
#include "intl/gettext/libintl.h"
|
#include "intl/gettext/libintl.h"
|
||||||
#include "main/module.h"
|
#include "main/module.h"
|
||||||
#include "network/connection.h"
|
#include "network/connection.h"
|
||||||
#include "network/socket.h"
|
|
||||||
#include "osdep/osdep.h"
|
#include "osdep/osdep.h"
|
||||||
#include "protocol/common.h"
|
#include "protocol/common.h"
|
||||||
#include "protocol/file/cgi.h"
|
#include "protocol/file/cgi.h"
|
||||||
#include "protocol/file/file.h"
|
#include "protocol/file/file.h"
|
||||||
#include "protocol/http/http.h"
|
|
||||||
#include "protocol/uri.h"
|
#include "protocol/uri.h"
|
||||||
#include "util/conv.h"
|
#include "util/conv.h"
|
||||||
#include "util/file.h"
|
#include "util/file.h"
|
||||||
@ -206,30 +204,6 @@ list_directory(struct connection *conn, unsigned char *dirpath,
|
|||||||
return S_OK;
|
return S_OK;
|
||||||
}
|
}
|
||||||
|
|
||||||
static void
|
|
||||||
read_special(struct connection *conn, int fd)
|
|
||||||
{
|
|
||||||
struct read_buffer *rb;
|
|
||||||
|
|
||||||
if (!init_http_connection_info(conn, 1, 0, 1)) {
|
|
||||||
abort_connection(conn, S_OUT_OF_MEM);
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
conn->socket->fd = fd;
|
|
||||||
if (fd != STDIN_FILENO) conn->popen = 1;
|
|
||||||
rb = alloc_read_buffer(conn->socket);
|
|
||||||
if (!rb) {
|
|
||||||
abort_connection(conn, S_OUT_OF_MEM);
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
memcpy(rb->data, "HTTP/1.0 200 OK\r\nContent-Type: text/plain\r\n\r\n", 45);
|
|
||||||
rb->length = 45;
|
|
||||||
rb->freespace -= 45;
|
|
||||||
|
|
||||||
conn->unrestartable = 1;
|
|
||||||
conn->socket->state = SOCKET_END_ONCLOSE;
|
|
||||||
read_from_socket(conn->socket, rb, S_SENT, http_got_header);
|
|
||||||
}
|
|
||||||
|
|
||||||
/* To reduce redundant error handling code [calls to abort_connection()]
|
/* To reduce redundant error handling code [calls to abort_connection()]
|
||||||
* most of the function is build around conditions that will assign the error
|
* most of the function is build around conditions that will assign the error
|
||||||
@ -288,20 +262,6 @@ file_protocol_handler(struct connection *connection)
|
|||||||
}
|
}
|
||||||
|
|
||||||
} else {
|
} else {
|
||||||
if (!strcmp(name.source, "/dev/stdin")) {
|
|
||||||
done_string(&name);
|
|
||||||
read_special(connection, STDIN_FILENO);
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
if (!strncmp(name.source, "/dev/fd/", 8)) {
|
|
||||||
int fd = atoi(name.source + 8);
|
|
||||||
|
|
||||||
if (fd > 0) {
|
|
||||||
done_string(&name);
|
|
||||||
read_special(connection, fd);
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
state = read_encoded_file(&name, &page);
|
state = read_encoded_file(&name, &page);
|
||||||
/* FIXME: If state is now S_ENCODE_ERROR we should try loading
|
/* FIXME: If state is now S_ENCODE_ERROR we should try loading
|
||||||
* the file undecoded. --jonas */
|
* the file undecoded. --jonas */
|
||||||
|
@ -6,6 +6,19 @@
|
|||||||
#include "config.h"
|
#include "config.h"
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
|
/* PyString_AsStringAndSize() takes a Py_ssize_t * in Python 2.5 but
|
||||||
|
* an int * in Python 2.4. To be compatible with both, ELinks uses
|
||||||
|
* Py_ssize_t and defines it here if necessary. The public-domain
|
||||||
|
* PEP 353 <http://www.python.org/dev/peps/pep-0353/> suggests the
|
||||||
|
* following snippet, so we can use the Py_ssize_t name even though
|
||||||
|
* Python generally reserves names starting with "Py_". */
|
||||||
|
#if PY_VERSION_HEX < 0x02050000 && !defined(PY_SSIZE_T_MIN)
|
||||||
|
typedef int Py_ssize_t;
|
||||||
|
#define PY_SSIZE_T_MAX INT_MAX
|
||||||
|
#define PY_SSIZE_T_MIN INT_MIN
|
||||||
|
#endif
|
||||||
|
/* End of PEP 353 snippet. */
|
||||||
|
|
||||||
struct module;
|
struct module;
|
||||||
|
|
||||||
extern struct session *python_ses;
|
extern struct session *python_ses;
|
||||||
|
@ -103,11 +103,16 @@ script_hook_pre_format_html(va_list ap, void *data)
|
|||||||
|
|
||||||
if (result != Py_None) {
|
if (result != Py_None) {
|
||||||
unsigned char *str;
|
unsigned char *str;
|
||||||
int len;
|
Py_ssize_t len;
|
||||||
|
|
||||||
if (PyString_AsStringAndSize(result, (char **) &str, &len) != 0)
|
if (PyString_AsStringAndSize(result, (char **) &str, &len) != 0)
|
||||||
goto error;
|
goto error;
|
||||||
|
|
||||||
|
/* This assumes the Py_ssize_t len is not too large to
|
||||||
|
* fit in the off_t parameter of normalize_cache_entry().
|
||||||
|
* add_fragment() itself seems to assume the same thing,
|
||||||
|
* and there is no standard OFF_MAX macro against which
|
||||||
|
* ELinks could check the value. */
|
||||||
(void) add_fragment(cached, 0, str, len);
|
(void) add_fragment(cached, 0, str, len);
|
||||||
normalize_cache_entry(cached, len);
|
normalize_cache_entry(cached, len);
|
||||||
}
|
}
|
||||||
|
@ -79,7 +79,8 @@ python_menu(PyObject *self, PyObject *args, PyObject *kwargs)
|
|||||||
{
|
{
|
||||||
PyObject *items;
|
PyObject *items;
|
||||||
enum python_menu_type menu_type = PYTHON_MENU_DEFAULT;
|
enum python_menu_type menu_type = PYTHON_MENU_DEFAULT;
|
||||||
int length, i;
|
Py_ssize_t length;
|
||||||
|
int i;
|
||||||
struct menu_item *menu;
|
struct menu_item *menu;
|
||||||
struct memory_list *ml = NULL;
|
struct memory_list *ml = NULL;
|
||||||
static char *kwlist[] = {"items", "type", NULL};
|
static char *kwlist[] = {"items", "type", NULL};
|
||||||
@ -104,7 +105,7 @@ python_menu(PyObject *self, PyObject *args, PyObject *kwargs)
|
|||||||
return NULL;
|
return NULL;
|
||||||
}
|
}
|
||||||
length = PySequence_Length(items);
|
length = PySequence_Length(items);
|
||||||
if (length == -1) return NULL;
|
if (length == -1 || length > INT_MAX) return NULL;
|
||||||
else if (length == 0) goto success;
|
else if (length == 0) goto success;
|
||||||
|
|
||||||
if (menu_type < 0 || menu_type >= PYTHON_MENU_MAX) {
|
if (menu_type < 0 || menu_type >= PYTHON_MENU_MAX) {
|
||||||
|
@ -32,7 +32,6 @@
|
|||||||
#include "dialogs/menu.h"
|
#include "dialogs/menu.h"
|
||||||
#include "intl/gettext/libintl.h"
|
#include "intl/gettext/libintl.h"
|
||||||
#include "main/object.h"
|
#include "main/object.h"
|
||||||
#include "main/select.h"
|
|
||||||
#include "mime/mime.h"
|
#include "mime/mime.h"
|
||||||
#include "network/connection.h"
|
#include "network/connection.h"
|
||||||
#include "network/progress.h"
|
#include "network/progress.h"
|
||||||
@ -65,8 +64,6 @@
|
|||||||
|
|
||||||
INIT_LIST_OF(struct file_download, downloads);
|
INIT_LIST_OF(struct file_download, downloads);
|
||||||
|
|
||||||
INIT_LIST_OF(struct popen_data, copiousoutput_data);
|
|
||||||
|
|
||||||
int
|
int
|
||||||
download_is_progressing(struct download *download)
|
download_is_progressing(struct download *download)
|
||||||
{
|
{
|
||||||
@ -304,33 +301,6 @@ abort_download_and_beep(struct file_download *file_download, struct terminal *te
|
|||||||
abort_download(file_download);
|
abort_download(file_download);
|
||||||
}
|
}
|
||||||
|
|
||||||
static void
|
|
||||||
read_from_popen(struct session *ses, unsigned char *handler, unsigned char *filename)
|
|
||||||
{
|
|
||||||
FILE *stream = popen(handler, "r");
|
|
||||||
|
|
||||||
if (stream) {
|
|
||||||
int fd = fileno(stream);
|
|
||||||
|
|
||||||
if (fd > 0) {
|
|
||||||
unsigned char buf[48];
|
|
||||||
|
|
||||||
struct popen_data *data = mem_calloc(1, sizeof(*data));
|
|
||||||
|
|
||||||
if (!data) {
|
|
||||||
fclose(stream);
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
data->fd = fd;
|
|
||||||
data->stream = stream;
|
|
||||||
if (filename) data->filename = stracpy(filename);
|
|
||||||
add_to_list(copiousoutput_data, data);
|
|
||||||
snprintf(buf, sizeof(buf), "file:///dev/fd/%d", fd);
|
|
||||||
goto_url(ses, buf);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
static void
|
static void
|
||||||
download_data_store(struct download *download, struct file_download *file_download)
|
download_data_store(struct download *download, struct file_download *file_download)
|
||||||
{
|
{
|
||||||
@ -368,15 +338,9 @@ download_data_store(struct download *download, struct file_download *file_downlo
|
|||||||
prealloc_truncate(file_download->handle, file_download->seek);
|
prealloc_truncate(file_download->handle, file_download->seek);
|
||||||
close(file_download->handle);
|
close(file_download->handle);
|
||||||
file_download->handle = -1;
|
file_download->handle = -1;
|
||||||
if (file_download->copiousoutput) {
|
exec_on_terminal(term, file_download->external_handler,
|
||||||
read_from_popen(file_download->ses,
|
|
||||||
file_download->external_handler,
|
|
||||||
file_download->file);
|
|
||||||
} else {
|
|
||||||
exec_on_terminal(term, file_download->external_handler,
|
|
||||||
file_download->file,
|
file_download->file,
|
||||||
file_download->block ? TERM_EXEC_FG : TERM_EXEC_BG);
|
file_download->block ? TERM_EXEC_FG : TERM_EXEC_BG);
|
||||||
}
|
|
||||||
file_download->delete = 0;
|
file_download->delete = 0;
|
||||||
abort_download_and_beep(file_download, term);
|
abort_download_and_beep(file_download, term);
|
||||||
return;
|
return;
|
||||||
@ -910,7 +874,6 @@ continue_download_do(struct terminal *term, int fd, void *data, download_flags_T
|
|||||||
file_download->external_handler = subst_file(type_query->external_handler,
|
file_download->external_handler = subst_file(type_query->external_handler,
|
||||||
codw_hop->file);
|
codw_hop->file);
|
||||||
file_download->delete = 1;
|
file_download->delete = 1;
|
||||||
file_download->copiousoutput = type_query->copiousoutput;
|
|
||||||
mem_free(codw_hop->file);
|
mem_free(codw_hop->file);
|
||||||
mem_free_set(&type_query->external_handler, NULL);
|
mem_free_set(&type_query->external_handler, NULL);
|
||||||
}
|
}
|
||||||
@ -1085,7 +1048,6 @@ tp_display(struct type_query *type_query)
|
|||||||
done_type_query(type_query);
|
done_type_query(type_query);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
static void
|
static void
|
||||||
tp_open(struct type_query *type_query)
|
tp_open(struct type_query *type_query)
|
||||||
{
|
{
|
||||||
@ -1105,10 +1067,7 @@ tp_open(struct type_query *type_query)
|
|||||||
}
|
}
|
||||||
|
|
||||||
if (handler) {
|
if (handler) {
|
||||||
if (type_query->copiousoutput)
|
exec_on_terminal(type_query->ses->tab->term,
|
||||||
read_from_popen(type_query->ses, handler, NULL);
|
|
||||||
else
|
|
||||||
exec_on_terminal(type_query->ses->tab->term,
|
|
||||||
handler, "",
|
handler, "",
|
||||||
type_query->block ? TERM_EXEC_FG : TERM_EXEC_BG);
|
type_query->block ? TERM_EXEC_FG : TERM_EXEC_BG);
|
||||||
mem_free(handler);
|
mem_free(handler);
|
||||||
@ -1214,13 +1173,7 @@ do_type_query(struct type_query *type_query, unsigned char *ct, struct mime_hand
|
|||||||
0, 0, NULL, MAX_STR_LEN, field, NULL);
|
0, 0, NULL, MAX_STR_LEN, field, NULL);
|
||||||
type_query->external_handler = field;
|
type_query->external_handler = field;
|
||||||
|
|
||||||
if (type_query->copiousoutput) {
|
add_dlg_radio(dlg, _("Block the terminal", term), 0, 0, &type_query->block);
|
||||||
add_dlg_text(dlg, _("The output of the program "
|
|
||||||
"will be shown in the tab", term),
|
|
||||||
ALIGN_LEFT, 0);
|
|
||||||
} else {
|
|
||||||
add_dlg_radio(dlg, _("Block the terminal", term), 0, 0, &type_query->block);
|
|
||||||
}
|
|
||||||
selected_widget = 3;
|
selected_widget = 3;
|
||||||
|
|
||||||
} else if (handler) {
|
} else if (handler) {
|
||||||
@ -1345,7 +1298,6 @@ setup_download_handler(struct session *ses, struct download *loading,
|
|||||||
type_query = init_type_query(ses, loading, cached);
|
type_query = init_type_query(ses, loading, cached);
|
||||||
if (type_query) {
|
if (type_query) {
|
||||||
ret = 1;
|
ret = 1;
|
||||||
if (handler) type_query->copiousoutput = handler->copiousoutput;
|
|
||||||
#ifdef CONFIG_BITTORRENT
|
#ifdef CONFIG_BITTORRENT
|
||||||
/* A terrible waste of a good MIME handler here, but we want
|
/* A terrible waste of a good MIME handler here, but we want
|
||||||
* to use the type_query this is easier. */
|
* to use the type_query this is easier. */
|
||||||
|
@ -55,7 +55,6 @@ struct type_query {
|
|||||||
unsigned char *target_frame;
|
unsigned char *target_frame;
|
||||||
unsigned char *external_handler;
|
unsigned char *external_handler;
|
||||||
int block;
|
int block;
|
||||||
unsigned int copiousoutput:1;
|
|
||||||
unsigned int cgi:1;
|
unsigned int cgi:1;
|
||||||
/* int frame; */
|
/* int frame; */
|
||||||
};
|
};
|
||||||
@ -84,9 +83,6 @@ struct file_download {
|
|||||||
/** Whether to block the terminal when running the external handler. */
|
/** Whether to block the terminal when running the external handler. */
|
||||||
unsigned int block:1;
|
unsigned int block:1;
|
||||||
|
|
||||||
/** Whether copiousoutput mode is used by the mailcap entry */
|
|
||||||
unsigned int copiousoutput:1;
|
|
||||||
|
|
||||||
/** The current dialog for this download. Can be NULL. */
|
/** The current dialog for this download. Can be NULL. */
|
||||||
struct dialog_data *dlg_data;
|
struct dialog_data *dlg_data;
|
||||||
struct listbox_item *box_item;
|
struct listbox_item *box_item;
|
||||||
|
Loading…
Reference in New Issue
Block a user