mirror of
https://github.com/rkd77/elinks.git
synced 2024-12-04 14:46:47 -05:00
[protocol] protocol.cpp -> protocol.c
This commit is contained in:
parent
9d5d9ead70
commit
970245b28a
@ -7,11 +7,18 @@
|
|||||||
#include "elinks.h"
|
#include "elinks.h"
|
||||||
|
|
||||||
#include "dialogs/status.h"
|
#include "dialogs/status.h"
|
||||||
|
#include "document/document.h"
|
||||||
|
#include "document/view.h"
|
||||||
|
#include "ecmascript/ecmascript.h"
|
||||||
#include "ecmascript/ecmascript-c.h"
|
#include "ecmascript/ecmascript-c.h"
|
||||||
#include "intl/libintl.h"
|
#include "intl/libintl.h"
|
||||||
|
#include "protocol/uri.h"
|
||||||
#include "session/session.h"
|
#include "session/session.h"
|
||||||
|
#include "session/task.h"
|
||||||
|
#include "util/conv.h"
|
||||||
#include "util/memory.h"
|
#include "util/memory.h"
|
||||||
#include "util/string.h"
|
#include "util/string.h"
|
||||||
|
#include "viewer/text/view.h"
|
||||||
|
|
||||||
extern int interpreter_count;
|
extern int interpreter_count;
|
||||||
extern int ecmascript_enabled;
|
extern int ecmascript_enabled;
|
||||||
@ -34,3 +41,41 @@ toggle_ecmascript(struct session *ses)
|
|||||||
}
|
}
|
||||||
print_screen_status(ses);
|
print_screen_status(ses);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
void
|
||||||
|
ecmascript_protocol_handler(struct session *ses, struct uri *uri)
|
||||||
|
{
|
||||||
|
struct document_view *doc_view = current_frame(ses);
|
||||||
|
struct string current_url = INIT_STRING(struri(uri), (int)strlen(struri(uri)));
|
||||||
|
char *redirect_url, *redirect_abs_url;
|
||||||
|
struct uri *redirect_uri;
|
||||||
|
|
||||||
|
if (!doc_view) /* Blank initial document. TODO: Start at about:blank? */
|
||||||
|
return;
|
||||||
|
assert(doc_view->vs);
|
||||||
|
if (doc_view->vs->ecmascript_fragile)
|
||||||
|
ecmascript_reset_state(doc_view->vs);
|
||||||
|
if (!doc_view->vs->ecmascript)
|
||||||
|
return;
|
||||||
|
|
||||||
|
redirect_url = ecmascript_eval_stringback(doc_view->vs->ecmascript,
|
||||||
|
¤t_url);
|
||||||
|
if (!redirect_url)
|
||||||
|
return;
|
||||||
|
/* XXX: This code snippet is duplicated over here,
|
||||||
|
* location_set_property(), html_a() and who knows where else. */
|
||||||
|
redirect_abs_url = join_urls(doc_view->document->uri,
|
||||||
|
trim_chars(redirect_url, ' ', 0));
|
||||||
|
mem_free(redirect_url);
|
||||||
|
if (!redirect_abs_url)
|
||||||
|
return;
|
||||||
|
redirect_uri = get_uri(redirect_abs_url, URI_NONE);
|
||||||
|
mem_free(redirect_abs_url);
|
||||||
|
if (!redirect_uri)
|
||||||
|
return;
|
||||||
|
|
||||||
|
/* XXX: Is that safe to do at this point? --pasky */
|
||||||
|
goto_uri_frame(ses, redirect_uri, doc_view->name,
|
||||||
|
CACHE_MODE_NORMAL);
|
||||||
|
done_uri(redirect_uri);
|
||||||
|
}
|
||||||
|
@ -8,10 +8,15 @@ extern "C" {
|
|||||||
#endif
|
#endif
|
||||||
|
|
||||||
struct session;
|
struct session;
|
||||||
|
struct uri;
|
||||||
|
|
||||||
int ecmascript_get_interpreter_count(void);
|
int ecmascript_get_interpreter_count(void);
|
||||||
void toggle_ecmascript(struct session *ses);
|
void toggle_ecmascript(struct session *ses);
|
||||||
|
|
||||||
|
/* Takes line with the syntax javascript:<ecmascript code>. Activated when user
|
||||||
|
* follows a link with this synstax. */
|
||||||
|
void ecmascript_protocol_handler(struct session *ses, struct uri *uri);
|
||||||
|
|
||||||
extern struct module ecmascript_module;
|
extern struct module ecmascript_module;
|
||||||
|
|
||||||
#ifdef __cplusplus
|
#ifdef __cplusplus
|
||||||
|
@ -507,44 +507,6 @@ ecmascript_reset_state(struct view_state *vs)
|
|||||||
vs->ecmascript_fragile = 1;
|
vs->ecmascript_fragile = 1;
|
||||||
}
|
}
|
||||||
|
|
||||||
void
|
|
||||||
ecmascript_protocol_handler(struct session *ses, struct uri *uri)
|
|
||||||
{
|
|
||||||
struct document_view *doc_view = current_frame(ses);
|
|
||||||
struct string current_url = INIT_STRING(struri(uri), (int)strlen(struri(uri)));
|
|
||||||
char *redirect_url, *redirect_abs_url;
|
|
||||||
struct uri *redirect_uri;
|
|
||||||
|
|
||||||
if (!doc_view) /* Blank initial document. TODO: Start at about:blank? */
|
|
||||||
return;
|
|
||||||
assert(doc_view->vs);
|
|
||||||
if (doc_view->vs->ecmascript_fragile)
|
|
||||||
ecmascript_reset_state(doc_view->vs);
|
|
||||||
if (!doc_view->vs->ecmascript)
|
|
||||||
return;
|
|
||||||
|
|
||||||
redirect_url = ecmascript_eval_stringback(doc_view->vs->ecmascript,
|
|
||||||
¤t_url);
|
|
||||||
if (!redirect_url)
|
|
||||||
return;
|
|
||||||
/* XXX: This code snippet is duplicated over here,
|
|
||||||
* location_set_property(), html_a() and who knows where else. */
|
|
||||||
redirect_abs_url = join_urls(doc_view->document->uri,
|
|
||||||
trim_chars(redirect_url, ' ', 0));
|
|
||||||
mem_free(redirect_url);
|
|
||||||
if (!redirect_abs_url)
|
|
||||||
return;
|
|
||||||
redirect_uri = get_uri(redirect_abs_url, URI_NONE);
|
|
||||||
mem_free(redirect_abs_url);
|
|
||||||
if (!redirect_uri)
|
|
||||||
return;
|
|
||||||
|
|
||||||
/* XXX: Is that safe to do at this point? --pasky */
|
|
||||||
goto_uri_frame(ses, redirect_uri, doc_view->name,
|
|
||||||
CACHE_MODE_NORMAL);
|
|
||||||
done_uri(redirect_uri);
|
|
||||||
}
|
|
||||||
|
|
||||||
void
|
void
|
||||||
ecmascript_timeout_dialog(struct terminal *term, int max_exec_time)
|
ecmascript_timeout_dialog(struct terminal *term, int max_exec_time)
|
||||||
{
|
{
|
||||||
|
@ -168,10 +168,6 @@ char *ecmascript_eval_stringback(struct ecmascript_interpreter *interpreter, str
|
|||||||
/* Returns -1 if undefined. */
|
/* Returns -1 if undefined. */
|
||||||
int ecmascript_eval_boolback(struct ecmascript_interpreter *interpreter, struct string *code);
|
int ecmascript_eval_boolback(struct ecmascript_interpreter *interpreter, struct string *code);
|
||||||
|
|
||||||
/* Takes line with the syntax javascript:<ecmascript code>. Activated when user
|
|
||||||
* follows a link with this synstax. */
|
|
||||||
void ecmascript_protocol_handler(struct session *ses, struct uri *uri);
|
|
||||||
|
|
||||||
void ecmascript_timeout_dialog(struct terminal *term, int max_exec_time);
|
void ecmascript_timeout_dialog(struct terminal *term, int max_exec_time);
|
||||||
|
|
||||||
void ecmascript_set_action(char **action, char *string);
|
void ecmascript_set_action(char **action, char *string);
|
||||||
|
@ -16,6 +16,6 @@ SUBDIRS = auth file http test
|
|||||||
|
|
||||||
OBJS-$(CONFIG_DATA) += data.o
|
OBJS-$(CONFIG_DATA) += data.o
|
||||||
|
|
||||||
OBJS = about.o common.o date.o header.o protocol.obj proxy.o uri.o user.o
|
OBJS = about.o common.o date.o header.o protocol.o proxy.o uri.o user.o
|
||||||
|
|
||||||
include $(top_srcdir)/Makefile.lib
|
include $(top_srcdir)/Makefile.lib
|
||||||
|
@ -35,7 +35,7 @@ subdir('http')
|
|||||||
if conf_data.get('CONFIG_DATA')
|
if conf_data.get('CONFIG_DATA')
|
||||||
srcs += files('data.c')
|
srcs += files('data.c')
|
||||||
endif
|
endif
|
||||||
srcs += files('about.c', 'common.c', 'date.c', 'header.c', 'protocol.cpp', 'proxy.c', 'uri.c', 'user.c')
|
srcs += files('about.c', 'common.c', 'date.c', 'header.c', 'protocol.c', 'proxy.c', 'uri.c', 'user.c')
|
||||||
|
|
||||||
if get_option('test')
|
if get_option('test')
|
||||||
subdir('test')
|
subdir('test')
|
||||||
|
@ -11,7 +11,11 @@
|
|||||||
|
|
||||||
#include "bfu/dialog.h"
|
#include "bfu/dialog.h"
|
||||||
#include "document/view.h"
|
#include "document/view.h"
|
||||||
#include "ecmascript/ecmascript.h"
|
|
||||||
|
#if defined(CONFIG_ECMASCRIPT_SMJS) || defined(CONFIG_QUICKJS) || defined(CONFIG_MUJS)
|
||||||
|
#include "ecmascript/ecmascript-c.h"
|
||||||
|
#endif
|
||||||
|
|
||||||
#include "intl/libintl.h"
|
#include "intl/libintl.h"
|
||||||
#include "main/module.h"
|
#include "main/module.h"
|
||||||
#include "network/connection.h"
|
#include "network/connection.h"
|
Loading…
Reference in New Issue
Block a user