mirror of
https://github.com/rkd77/elinks.git
synced 2024-09-25 02:36:23 -04:00
Compare commits
6 Commits
6f371d6002
...
f2fbde2de7
Author | SHA1 | Date | |
---|---|---|---|
|
f2fbde2de7 | ||
|
af85de2535 | ||
|
f8d08d1db3 | ||
|
e88325a7e7 | ||
|
f48cec877e | ||
|
6b5ed8fa51 |
37
po/POTFILES
37
po/POTFILES
@ -1,5 +1,6 @@
|
|||||||
contrib/audio/echo.c
|
contrib/audio/echo.c
|
||||||
contrib/proxy/gen.c
|
contrib/proxy/gen.c
|
||||||
|
contrib/tcc/elinks_tcc.c
|
||||||
src/bfu/button.c
|
src/bfu/button.c
|
||||||
src/bfu/button.h
|
src/bfu/button.h
|
||||||
src/bfu/checkbox.c
|
src/bfu/checkbox.c
|
||||||
@ -164,7 +165,7 @@ src/document/libdom/css.c
|
|||||||
src/document/libdom/css.h
|
src/document/libdom/css.h
|
||||||
src/document/libdom/doc.c
|
src/document/libdom/doc.c
|
||||||
src/document/libdom/doc.h
|
src/document/libdom/doc.h
|
||||||
src/document/libdom/mapa.cpp
|
src/document/libdom/mapa.c
|
||||||
src/document/libdom/mapa.h
|
src/document/libdom/mapa.h
|
||||||
src/document/libdom/renderer.c
|
src/document/libdom/renderer.c
|
||||||
src/document/libdom/renderer.h
|
src/document/libdom/renderer.h
|
||||||
@ -222,16 +223,18 @@ src/dom/test/html-mangle.c
|
|||||||
src/dom/test/sgml-parser.c
|
src/dom/test/sgml-parser.c
|
||||||
src/ecmascript/css2xpath.cpp
|
src/ecmascript/css2xpath.cpp
|
||||||
src/ecmascript/css2xpath.h
|
src/ecmascript/css2xpath.h
|
||||||
|
src/ecmascript/ecmascript-c.c
|
||||||
src/ecmascript/ecmascript-c.cpp
|
src/ecmascript/ecmascript-c.cpp
|
||||||
src/ecmascript/ecmascript-c.h
|
src/ecmascript/ecmascript-c.h
|
||||||
|
src/ecmascript/ecmascript.c
|
||||||
src/ecmascript/ecmascript.cpp
|
src/ecmascript/ecmascript.cpp
|
||||||
src/ecmascript/ecmascript.h
|
src/ecmascript/ecmascript.h
|
||||||
src/ecmascript/libdom/dom.h
|
src/ecmascript/libdom/dom.h
|
||||||
src/ecmascript/libdom/parse.c
|
src/ecmascript/libdom/parse.c
|
||||||
src/ecmascript/libdom/parse.h
|
src/ecmascript/libdom/parse.h
|
||||||
src/ecmascript/localstorage-db.cpp
|
src/ecmascript/localstorage-db.c
|
||||||
src/ecmascript/localstorage-db.h
|
src/ecmascript/localstorage-db.h
|
||||||
src/ecmascript/mujs.cpp
|
src/ecmascript/mujs.c
|
||||||
src/ecmascript/mujs.h
|
src/ecmascript/mujs.h
|
||||||
src/ecmascript/mujs/attr.c
|
src/ecmascript/mujs/attr.c
|
||||||
src/ecmascript/mujs/attr.h
|
src/ecmascript/mujs/attr.h
|
||||||
@ -241,10 +244,16 @@ src/ecmascript/mujs/collection.c
|
|||||||
src/ecmascript/mujs/collection.h
|
src/ecmascript/mujs/collection.h
|
||||||
src/ecmascript/mujs/console.c
|
src/ecmascript/mujs/console.c
|
||||||
src/ecmascript/mujs/console.h
|
src/ecmascript/mujs/console.h
|
||||||
|
src/ecmascript/mujs/css.c
|
||||||
|
src/ecmascript/mujs/css.h
|
||||||
|
src/ecmascript/mujs/customevent.c
|
||||||
|
src/ecmascript/mujs/customevent.h
|
||||||
src/ecmascript/mujs/document.c
|
src/ecmascript/mujs/document.c
|
||||||
src/ecmascript/mujs/document.h
|
src/ecmascript/mujs/document.h
|
||||||
src/ecmascript/mujs/element.c
|
src/ecmascript/mujs/element.c
|
||||||
src/ecmascript/mujs/element.h
|
src/ecmascript/mujs/element.h
|
||||||
|
src/ecmascript/mujs/event.c
|
||||||
|
src/ecmascript/mujs/event.h
|
||||||
src/ecmascript/mujs/form.c
|
src/ecmascript/mujs/form.c
|
||||||
src/ecmascript/mujs/form.h
|
src/ecmascript/mujs/form.h
|
||||||
src/ecmascript/mujs/forms.c
|
src/ecmascript/mujs/forms.c
|
||||||
@ -261,7 +270,7 @@ src/ecmascript/mujs/localstorage.c
|
|||||||
src/ecmascript/mujs/localstorage.h
|
src/ecmascript/mujs/localstorage.h
|
||||||
src/ecmascript/mujs/location.c
|
src/ecmascript/mujs/location.c
|
||||||
src/ecmascript/mujs/location.h
|
src/ecmascript/mujs/location.h
|
||||||
src/ecmascript/mujs/mapa.cpp
|
src/ecmascript/mujs/mapa.c
|
||||||
src/ecmascript/mujs/mapa.h
|
src/ecmascript/mujs/mapa.h
|
||||||
src/ecmascript/mujs/message.c
|
src/ecmascript/mujs/message.c
|
||||||
src/ecmascript/mujs/message.h
|
src/ecmascript/mujs/message.h
|
||||||
@ -279,7 +288,7 @@ src/ecmascript/mujs/window.c
|
|||||||
src/ecmascript/mujs/window.h
|
src/ecmascript/mujs/window.h
|
||||||
src/ecmascript/mujs/xhr.c
|
src/ecmascript/mujs/xhr.c
|
||||||
src/ecmascript/mujs/xhr.h
|
src/ecmascript/mujs/xhr.h
|
||||||
src/ecmascript/quickjs.cpp
|
src/ecmascript/quickjs.c
|
||||||
src/ecmascript/quickjs.h
|
src/ecmascript/quickjs.h
|
||||||
src/ecmascript/quickjs/attr.c
|
src/ecmascript/quickjs/attr.c
|
||||||
src/ecmascript/quickjs/attr.h
|
src/ecmascript/quickjs/attr.h
|
||||||
@ -289,10 +298,16 @@ src/ecmascript/quickjs/collection.c
|
|||||||
src/ecmascript/quickjs/collection.h
|
src/ecmascript/quickjs/collection.h
|
||||||
src/ecmascript/quickjs/console.c
|
src/ecmascript/quickjs/console.c
|
||||||
src/ecmascript/quickjs/console.h
|
src/ecmascript/quickjs/console.h
|
||||||
|
src/ecmascript/quickjs/css.c
|
||||||
|
src/ecmascript/quickjs/css.h
|
||||||
|
src/ecmascript/quickjs/customevent.c
|
||||||
|
src/ecmascript/quickjs/customevent.h
|
||||||
src/ecmascript/quickjs/document.c
|
src/ecmascript/quickjs/document.c
|
||||||
src/ecmascript/quickjs/document.h
|
src/ecmascript/quickjs/document.h
|
||||||
src/ecmascript/quickjs/element.c
|
src/ecmascript/quickjs/element.c
|
||||||
src/ecmascript/quickjs/element.h
|
src/ecmascript/quickjs/element.h
|
||||||
|
src/ecmascript/quickjs/event.c
|
||||||
|
src/ecmascript/quickjs/event.h
|
||||||
src/ecmascript/quickjs/form.c
|
src/ecmascript/quickjs/form.c
|
||||||
src/ecmascript/quickjs/form.h
|
src/ecmascript/quickjs/form.h
|
||||||
src/ecmascript/quickjs/forms.c
|
src/ecmascript/quickjs/forms.c
|
||||||
@ -311,7 +326,7 @@ src/ecmascript/quickjs/localstorage.c
|
|||||||
src/ecmascript/quickjs/localstorage.h
|
src/ecmascript/quickjs/localstorage.h
|
||||||
src/ecmascript/quickjs/location.c
|
src/ecmascript/quickjs/location.c
|
||||||
src/ecmascript/quickjs/location.h
|
src/ecmascript/quickjs/location.h
|
||||||
src/ecmascript/quickjs/mapa.cpp
|
src/ecmascript/quickjs/mapa.c
|
||||||
src/ecmascript/quickjs/mapa.h
|
src/ecmascript/quickjs/mapa.h
|
||||||
src/ecmascript/quickjs/message.c
|
src/ecmascript/quickjs/message.c
|
||||||
src/ecmascript/quickjs/message.h
|
src/ecmascript/quickjs/message.h
|
||||||
@ -341,10 +356,16 @@ src/ecmascript/spidermonkey/collection.cpp
|
|||||||
src/ecmascript/spidermonkey/collection.h
|
src/ecmascript/spidermonkey/collection.h
|
||||||
src/ecmascript/spidermonkey/console.cpp
|
src/ecmascript/spidermonkey/console.cpp
|
||||||
src/ecmascript/spidermonkey/console.h
|
src/ecmascript/spidermonkey/console.h
|
||||||
|
src/ecmascript/spidermonkey/css.cpp
|
||||||
|
src/ecmascript/spidermonkey/css.h
|
||||||
|
src/ecmascript/spidermonkey/customevent.cpp
|
||||||
|
src/ecmascript/spidermonkey/customevent.h
|
||||||
src/ecmascript/spidermonkey/document.cpp
|
src/ecmascript/spidermonkey/document.cpp
|
||||||
src/ecmascript/spidermonkey/document.h
|
src/ecmascript/spidermonkey/document.h
|
||||||
src/ecmascript/spidermonkey/element.cpp
|
src/ecmascript/spidermonkey/element.cpp
|
||||||
src/ecmascript/spidermonkey/element.h
|
src/ecmascript/spidermonkey/element.h
|
||||||
|
src/ecmascript/spidermonkey/event.cpp
|
||||||
|
src/ecmascript/spidermonkey/event.h
|
||||||
src/ecmascript/spidermonkey/form.cpp
|
src/ecmascript/spidermonkey/form.cpp
|
||||||
src/ecmascript/spidermonkey/form.h
|
src/ecmascript/spidermonkey/form.h
|
||||||
src/ecmascript/spidermonkey/forms.cpp
|
src/ecmascript/spidermonkey/forms.cpp
|
||||||
@ -375,12 +396,14 @@ src/ecmascript/spidermonkey/style.cpp
|
|||||||
src/ecmascript/spidermonkey/style.h
|
src/ecmascript/spidermonkey/style.h
|
||||||
src/ecmascript/spidermonkey/unibar.cpp
|
src/ecmascript/spidermonkey/unibar.cpp
|
||||||
src/ecmascript/spidermonkey/unibar.h
|
src/ecmascript/spidermonkey/unibar.h
|
||||||
|
src/ecmascript/spidermonkey/url.cpp
|
||||||
|
src/ecmascript/spidermonkey/url.h
|
||||||
src/ecmascript/spidermonkey/util.h
|
src/ecmascript/spidermonkey/util.h
|
||||||
src/ecmascript/spidermonkey/window.cpp
|
src/ecmascript/spidermonkey/window.cpp
|
||||||
src/ecmascript/spidermonkey/window.h
|
src/ecmascript/spidermonkey/window.h
|
||||||
src/ecmascript/spidermonkey/xhr.cpp
|
src/ecmascript/spidermonkey/xhr.cpp
|
||||||
src/ecmascript/spidermonkey/xhr.h
|
src/ecmascript/spidermonkey/xhr.h
|
||||||
src/ecmascript/timer.cpp
|
src/ecmascript/timer.c
|
||||||
src/ecmascript/timer.h
|
src/ecmascript/timer.h
|
||||||
src/elinks.h
|
src/elinks.h
|
||||||
src/encoding/brotli.c
|
src/encoding/brotli.c
|
||||||
|
@ -21,6 +21,7 @@
|
|||||||
#include "intl/libintl.h"
|
#include "intl/libintl.h"
|
||||||
#include "main/module.h"
|
#include "main/module.h"
|
||||||
#include "main/timer.h"
|
#include "main/timer.h"
|
||||||
|
#include "osdep/osdep.h"
|
||||||
#include "session/session.h"
|
#include "session/session.h"
|
||||||
#include "terminal/draw.h"
|
#include "terminal/draw.h"
|
||||||
#include "terminal/tab.h"
|
#include "terminal/tab.h"
|
||||||
@ -219,45 +220,15 @@ static int
|
|||||||
draw_show_mem(struct session *ses, int xpos, int ypos, struct color_pair *color)
|
draw_show_mem(struct session *ses, int xpos, int ypos, struct color_pair *color)
|
||||||
{
|
{
|
||||||
struct terminal *term = ses->tab->term;
|
struct terminal *term = ses->tab->term;
|
||||||
FILE *f;
|
|
||||||
struct string text;
|
struct string text;
|
||||||
int i;
|
int i;
|
||||||
int length;
|
int length;
|
||||||
char *pos;
|
char *pos;
|
||||||
long ret = 0;
|
|
||||||
|
|
||||||
f = fopen("/proc/meminfo", "r");
|
|
||||||
|
|
||||||
if (!f) {
|
|
||||||
return 0;
|
|
||||||
}
|
|
||||||
|
|
||||||
while (!feof(f)) {
|
|
||||||
char buffer[128];
|
|
||||||
|
|
||||||
if (!fgets(buffer, 127, f)) {
|
|
||||||
break;
|
|
||||||
}
|
|
||||||
if (strncmp(buffer, "MemAvailable:", sizeof("MemAvailable:")-1)) {
|
|
||||||
continue;
|
|
||||||
}
|
|
||||||
if (sscanf(buffer, "MemAvailable:%ld", &ret) < 1) {
|
|
||||||
ret = 0;
|
|
||||||
break;
|
|
||||||
} else {
|
|
||||||
break;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
fclose(f);
|
|
||||||
|
|
||||||
if (ret < 1) {
|
|
||||||
return 0;
|
|
||||||
}
|
|
||||||
|
|
||||||
if (!init_string(&text)) {
|
if (!init_string(&text)) {
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
add_format_to_string(&text, "[%ld MiB]", ret / 1024);
|
add_format_to_string(&text, "[%ld MiB]", os_get_free_mem_in_mib());
|
||||||
length = text.length;
|
length = text.length;
|
||||||
for (i = 0, pos = text.source; i < length; i++) {
|
for (i = 0, pos = text.source; i < length; i++) {
|
||||||
draw_char(term, xpos - length + i, ypos, pos[i], 0, color);
|
draw_char(term, xpos - length + i, ypos, pos[i], 0, color);
|
||||||
|
@ -41,6 +41,7 @@
|
|||||||
#include "ecmascript/spidermonkey/navigator.h"
|
#include "ecmascript/spidermonkey/navigator.h"
|
||||||
#include "ecmascript/spidermonkey/screen.h"
|
#include "ecmascript/spidermonkey/screen.h"
|
||||||
#include "ecmascript/spidermonkey/unibar.h"
|
#include "ecmascript/spidermonkey/unibar.h"
|
||||||
|
#include "ecmascript/spidermonkey/url.h"
|
||||||
#include "ecmascript/spidermonkey/window.h"
|
#include "ecmascript/spidermonkey/window.h"
|
||||||
#include "ecmascript/spidermonkey/xhr.h"
|
#include "ecmascript/spidermonkey/xhr.h"
|
||||||
#include "intl/libintl.h"
|
#include "intl/libintl.h"
|
||||||
@ -150,7 +151,7 @@ spidermonkey_get_interpreter(struct ecmascript_interpreter *interpreter)
|
|||||||
JSContext *ctx;
|
JSContext *ctx;
|
||||||
JSObject *console_obj, *document_obj, /* *forms_obj,*/ *history_obj,
|
JSObject *console_obj, *document_obj, /* *forms_obj,*/ *history_obj,
|
||||||
*statusbar_obj, *menubar_obj, *navigator_obj, *localstorage_obj, *screen_obj,
|
*statusbar_obj, *menubar_obj, *navigator_obj, *localstorage_obj, *screen_obj,
|
||||||
*xhr_obj, *event_obj, *keyboardEvent_obj, *messageEvent_obj, *customEvent_obj;
|
*xhr_obj, *event_obj, *keyboardEvent_obj, *messageEvent_obj, *customEvent_obj, *url_obj;
|
||||||
|
|
||||||
assert(interpreter);
|
assert(interpreter);
|
||||||
if (!js_module_init_ok) return NULL;
|
if (!js_module_init_ok) return NULL;
|
||||||
@ -328,6 +329,17 @@ spidermonkey_get_interpreter(struct ecmascript_interpreter *interpreter)
|
|||||||
if (!customEvent_obj) {
|
if (!customEvent_obj) {
|
||||||
goto release_and_fail;
|
goto release_and_fail;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
url_obj = spidermonkey_InitClass(ctx, global, NULL,
|
||||||
|
&url_class, url_constructor, 0,
|
||||||
|
url_props,
|
||||||
|
url_funcs,
|
||||||
|
NULL, NULL, "URL");
|
||||||
|
|
||||||
|
if (!url_obj) {
|
||||||
|
goto release_and_fail;
|
||||||
|
}
|
||||||
|
|
||||||
JS::SetRealmPrivate(js::GetContextRealm(ctx), interpreter);
|
JS::SetRealmPrivate(js::GetContextRealm(ctx), interpreter);
|
||||||
|
|
||||||
return ctx;
|
return ctx;
|
||||||
|
@ -3,6 +3,6 @@ include $(top_builddir)/Makefile.config
|
|||||||
INCLUDES += $(SPIDERMONKEY_CFLAGS)
|
INCLUDES += $(SPIDERMONKEY_CFLAGS)
|
||||||
|
|
||||||
OBJS = attr.obj attributes.obj collection.obj console.obj css.obj customevent.obj document.obj element.obj event.obj form.obj forms.obj heartbeat.obj history.obj implementation.obj input.obj \
|
OBJS = attr.obj attributes.obj collection.obj console.obj css.obj customevent.obj document.obj element.obj event.obj form.obj forms.obj heartbeat.obj history.obj implementation.obj input.obj \
|
||||||
keyboard.obj localstorage.obj location.obj message.obj navigator.obj nodelist.obj screen.obj style.obj unibar.obj window.obj xhr.obj
|
keyboard.obj localstorage.obj location.obj message.obj navigator.obj nodelist.obj screen.obj style.obj unibar.obj url.obj window.obj xhr.obj
|
||||||
|
|
||||||
include $(top_srcdir)/Makefile.lib
|
include $(top_srcdir)/Makefile.lib
|
||||||
|
@ -1,3 +1,3 @@
|
|||||||
srcs += files('attr.cpp', 'attributes.cpp', 'collection.cpp', 'console.cpp', 'css.cpp', 'customevent.cpp', 'document.cpp', 'element.cpp', 'event.cpp',
|
srcs += files('attr.cpp', 'attributes.cpp', 'collection.cpp', 'console.cpp', 'css.cpp', 'customevent.cpp', 'document.cpp', 'element.cpp', 'event.cpp',
|
||||||
'form.cpp', 'forms.cpp', 'heartbeat.cpp', 'history.cpp', 'implementation.cpp', 'input.cpp', 'keyboard.cpp',
|
'form.cpp', 'forms.cpp', 'heartbeat.cpp', 'history.cpp', 'implementation.cpp', 'input.cpp', 'keyboard.cpp',
|
||||||
'localstorage.cpp', 'location.cpp', 'message.cpp', 'navigator.cpp', 'nodelist.cpp', 'screen.cpp', 'style.cpp', 'unibar.cpp', 'window.cpp', 'xhr.cpp')
|
'localstorage.cpp', 'location.cpp', 'message.cpp', 'navigator.cpp', 'nodelist.cpp', 'screen.cpp', 'style.cpp', 'unibar.cpp', 'url.cpp', 'window.cpp', 'xhr.cpp')
|
||||||
|
1026
src/ecmascript/spidermonkey/url.cpp
Normal file
1026
src/ecmascript/spidermonkey/url.cpp
Normal file
File diff suppressed because it is too large
Load Diff
11
src/ecmascript/spidermonkey/url.h
Normal file
11
src/ecmascript/spidermonkey/url.h
Normal file
@ -0,0 +1,11 @@
|
|||||||
|
#ifndef EL__ECMASCRIPT_SPIDERMONKEY_URL_H
|
||||||
|
#define EL__ECMASCRIPT_SPIDERMONKEY_URL_H
|
||||||
|
|
||||||
|
#include "ecmascript/spidermonkey/util.h"
|
||||||
|
|
||||||
|
extern JSClass url_class;
|
||||||
|
extern JSPropertySpec url_props[];
|
||||||
|
extern const spidermonkeyFunctionSpec url_funcs[];
|
||||||
|
bool url_constructor(JSContext* ctx, unsigned argc, JS::Value* vp);
|
||||||
|
|
||||||
|
#endif
|
@ -983,6 +983,21 @@ int dos_select(int n, fd_set *rs, fd_set *ws, fd_set *es, struct timeval *t, int
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
long
|
||||||
|
os_get_free_mem_in_mib(void)
|
||||||
|
{
|
||||||
|
__dpmi_memory_info buffer;
|
||||||
|
int ret = __dpmi_get_memory_information(&buffer);
|
||||||
|
|
||||||
|
if (ret) {
|
||||||
|
__dpmi_free_mem_info info;
|
||||||
|
__dpmi_get_free_memory_information(&info);
|
||||||
|
|
||||||
|
return info.total_number_of_free_pages / 256;
|
||||||
|
}
|
||||||
|
return buffer.total_available_bytes_of_virtual_memory_client / (1024 * 1024);
|
||||||
|
}
|
||||||
|
|
||||||
#ifdef DOS_EXTRA_KEYBOARD
|
#ifdef DOS_EXTRA_KEYBOARD
|
||||||
|
|
||||||
int dos_setraw(int ctl, int save)
|
int dos_setraw(int ctl, int save)
|
||||||
|
@ -74,6 +74,14 @@
|
|||||||
#include "util/string.h"
|
#include "util/string.h"
|
||||||
|
|
||||||
|
|
||||||
|
#if !defined(CONFIG_OS_DOS) && !defined(CONFIG_OS_UNIX) && !defined(CONFIG_OS_WIN32)
|
||||||
|
long
|
||||||
|
os_get_free_mem_in_mib(void)
|
||||||
|
{
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
|
#endif
|
||||||
|
|
||||||
#ifndef CONFIG_OS_DOS
|
#ifndef CONFIG_OS_DOS
|
||||||
/* Set a file descriptor to non-blocking mode. It returns a non-zero value
|
/* Set a file descriptor to non-blocking mode. It returns a non-zero value
|
||||||
* on error. */
|
* on error. */
|
||||||
|
@ -54,6 +54,7 @@ int can_resize_window(int);
|
|||||||
int can_open_os_shell(int);
|
int can_open_os_shell(int);
|
||||||
void set_highpri(void);
|
void set_highpri(void);
|
||||||
char *tempname(const char *dir, const char *pfx, char *suff);
|
char *tempname(const char *dir, const char *pfx, char *suff);
|
||||||
|
long os_get_free_mem_in_mib(void);
|
||||||
|
|
||||||
#ifdef USE_OPEN_PREALLOC
|
#ifdef USE_OPEN_PREALLOC
|
||||||
int open_prealloc(char *, int, int, off_t);
|
int open_prealloc(char *, int, int, off_t);
|
||||||
|
@ -6,6 +6,8 @@
|
|||||||
|
|
||||||
#include "osdep/system.h"
|
#include "osdep/system.h"
|
||||||
|
|
||||||
|
#include <stdio.h>
|
||||||
|
|
||||||
#if defined(CONFIG_GPM) && defined(HAVE_GPM_H)
|
#if defined(CONFIG_GPM) && defined(HAVE_GPM_H)
|
||||||
#include <gpm.h>
|
#include <gpm.h>
|
||||||
#endif
|
#endif
|
||||||
@ -155,5 +157,38 @@ resume_mouse(void *h)
|
|||||||
|
|
||||||
set_handlers(gms->h, (select_handler_T) gpm_mouse_in, NULL, NULL, gms);
|
set_handlers(gms->h, (select_handler_T) gpm_mouse_in, NULL, NULL, gms);
|
||||||
}
|
}
|
||||||
|
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
|
long
|
||||||
|
os_get_free_mem_in_mib(void)
|
||||||
|
{
|
||||||
|
FILE *f = fopen("/proc/meminfo", "r");
|
||||||
|
long ret = 0;
|
||||||
|
|
||||||
|
if (!f) {
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
while (!feof(f)) {
|
||||||
|
char buffer[128];
|
||||||
|
|
||||||
|
if (!fgets(buffer, 127, f)) {
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
if (strncmp(buffer, "MemAvailable:", sizeof("MemAvailable:")-1)) {
|
||||||
|
continue;
|
||||||
|
}
|
||||||
|
if (sscanf(buffer, "MemAvailable:%ld", &ret) < 1) {
|
||||||
|
ret = 0;
|
||||||
|
break;
|
||||||
|
} else {
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
fclose(f);
|
||||||
|
|
||||||
|
if (ret < 1) {
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
|
return ret / 1024;
|
||||||
|
}
|
||||||
|
@ -336,3 +336,13 @@ user_appdata_directory(void)
|
|||||||
else
|
else
|
||||||
return NULL;
|
return NULL;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
long
|
||||||
|
os_get_free_mem_in_mib(void)
|
||||||
|
{
|
||||||
|
MEMORYSTATUSEX statex;
|
||||||
|
statex.dwLength = sizeof(statex);
|
||||||
|
GlobalMemoryStatusEx(&statex);
|
||||||
|
|
||||||
|
return statex.ullAvailPhys / (1024 * 1024);
|
||||||
|
}
|
||||||
|
8
test/ecmascript/assert/URL.html
Normal file
8
test/ecmascript/assert/URL.html
Normal file
@ -0,0 +1,8 @@
|
|||||||
|
<script>
|
||||||
|
console.error("URL.html");
|
||||||
|
var url = new URL('https://www.example.com/cats');
|
||||||
|
console.assert(url.pathname === '/cats', url.pathname);
|
||||||
|
console.assert(url.protocol === 'https:', url.protocol);
|
||||||
|
console.assert(url.hostname === 'www.example.com', url.hostname);
|
||||||
|
console.exit(0);
|
||||||
|
</script>
|
Loading…
Reference in New Issue
Block a user