1
0
Fork 0

Compare commits

...

6 Commits

Author SHA1 Message Date
Witold Filipczyk f2fbde2de7 [dos] fallback to __dpmi_get_free_memory_information 2024-05-02 20:47:01 +02:00
Witold Filipczyk af85de2535 [win32] Get free memory info 2024-05-02 19:58:16 +02:00
Witold Filipczyk f8d08d1db3 [osdep] os_get_free_mem_in_mib
DOS and Linux implementation. Called in bfu/leds.c
2024-05-02 14:31:27 +02:00
Witold Filipczyk e88325a7e7 [po] Updated POTFILES 2024-04-29 19:46:56 +02:00
Witold Filipczyk f48cec877e [spidermonkey] URL
A few getters passed tests.
2024-04-29 19:44:31 +02:00
Witold Filipczyk 6b5ed8fa51 [assert] URL.html 2024-04-29 16:17:22 +02:00
13 changed files with 1162 additions and 42 deletions

View File

@ -1,5 +1,6 @@
contrib/audio/echo.c
contrib/proxy/gen.c
contrib/tcc/elinks_tcc.c
src/bfu/button.c
src/bfu/button.h
src/bfu/checkbox.c
@ -164,7 +165,7 @@ src/document/libdom/css.c
src/document/libdom/css.h
src/document/libdom/doc.c
src/document/libdom/doc.h
src/document/libdom/mapa.cpp
src/document/libdom/mapa.c
src/document/libdom/mapa.h
src/document/libdom/renderer.c
src/document/libdom/renderer.h
@ -222,16 +223,18 @@ src/dom/test/html-mangle.c
src/dom/test/sgml-parser.c
src/ecmascript/css2xpath.cpp
src/ecmascript/css2xpath.h
src/ecmascript/ecmascript-c.c
src/ecmascript/ecmascript-c.cpp
src/ecmascript/ecmascript-c.h
src/ecmascript/ecmascript.c
src/ecmascript/ecmascript.cpp
src/ecmascript/ecmascript.h
src/ecmascript/libdom/dom.h
src/ecmascript/libdom/parse.c
src/ecmascript/libdom/parse.h
src/ecmascript/localstorage-db.cpp
src/ecmascript/localstorage-db.c
src/ecmascript/localstorage-db.h
src/ecmascript/mujs.cpp
src/ecmascript/mujs.c
src/ecmascript/mujs.h
src/ecmascript/mujs/attr.c
src/ecmascript/mujs/attr.h
@ -241,10 +244,16 @@ src/ecmascript/mujs/collection.c
src/ecmascript/mujs/collection.h
src/ecmascript/mujs/console.c
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.h
src/ecmascript/mujs/element.c
src/ecmascript/mujs/element.h
src/ecmascript/mujs/event.c
src/ecmascript/mujs/event.h
src/ecmascript/mujs/form.c
src/ecmascript/mujs/form.h
src/ecmascript/mujs/forms.c
@ -261,7 +270,7 @@ src/ecmascript/mujs/localstorage.c
src/ecmascript/mujs/localstorage.h
src/ecmascript/mujs/location.c
src/ecmascript/mujs/location.h
src/ecmascript/mujs/mapa.cpp
src/ecmascript/mujs/mapa.c
src/ecmascript/mujs/mapa.h
src/ecmascript/mujs/message.c
src/ecmascript/mujs/message.h
@ -279,7 +288,7 @@ src/ecmascript/mujs/window.c
src/ecmascript/mujs/window.h
src/ecmascript/mujs/xhr.c
src/ecmascript/mujs/xhr.h
src/ecmascript/quickjs.cpp
src/ecmascript/quickjs.c
src/ecmascript/quickjs.h
src/ecmascript/quickjs/attr.c
src/ecmascript/quickjs/attr.h
@ -289,10 +298,16 @@ src/ecmascript/quickjs/collection.c
src/ecmascript/quickjs/collection.h
src/ecmascript/quickjs/console.c
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.h
src/ecmascript/quickjs/element.c
src/ecmascript/quickjs/element.h
src/ecmascript/quickjs/event.c
src/ecmascript/quickjs/event.h
src/ecmascript/quickjs/form.c
src/ecmascript/quickjs/form.h
src/ecmascript/quickjs/forms.c
@ -311,7 +326,7 @@ src/ecmascript/quickjs/localstorage.c
src/ecmascript/quickjs/localstorage.h
src/ecmascript/quickjs/location.c
src/ecmascript/quickjs/location.h
src/ecmascript/quickjs/mapa.cpp
src/ecmascript/quickjs/mapa.c
src/ecmascript/quickjs/mapa.h
src/ecmascript/quickjs/message.c
src/ecmascript/quickjs/message.h
@ -341,10 +356,16 @@ src/ecmascript/spidermonkey/collection.cpp
src/ecmascript/spidermonkey/collection.h
src/ecmascript/spidermonkey/console.cpp
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.h
src/ecmascript/spidermonkey/element.cpp
src/ecmascript/spidermonkey/element.h
src/ecmascript/spidermonkey/event.cpp
src/ecmascript/spidermonkey/event.h
src/ecmascript/spidermonkey/form.cpp
src/ecmascript/spidermonkey/form.h
src/ecmascript/spidermonkey/forms.cpp
@ -375,12 +396,14 @@ src/ecmascript/spidermonkey/style.cpp
src/ecmascript/spidermonkey/style.h
src/ecmascript/spidermonkey/unibar.cpp
src/ecmascript/spidermonkey/unibar.h
src/ecmascript/spidermonkey/url.cpp
src/ecmascript/spidermonkey/url.h
src/ecmascript/spidermonkey/util.h
src/ecmascript/spidermonkey/window.cpp
src/ecmascript/spidermonkey/window.h
src/ecmascript/spidermonkey/xhr.cpp
src/ecmascript/spidermonkey/xhr.h
src/ecmascript/timer.cpp
src/ecmascript/timer.c
src/ecmascript/timer.h
src/elinks.h
src/encoding/brotli.c

View File

@ -21,6 +21,7 @@
#include "intl/libintl.h"
#include "main/module.h"
#include "main/timer.h"
#include "osdep/osdep.h"
#include "session/session.h"
#include "terminal/draw.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)
{
struct terminal *term = ses->tab->term;
FILE *f;
struct string text;
int i;
int length;
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)) {
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;
for (i = 0, pos = text.source; i < length; i++) {
draw_char(term, xpos - length + i, ypos, pos[i], 0, color);

View File

@ -41,6 +41,7 @@
#include "ecmascript/spidermonkey/navigator.h"
#include "ecmascript/spidermonkey/screen.h"
#include "ecmascript/spidermonkey/unibar.h"
#include "ecmascript/spidermonkey/url.h"
#include "ecmascript/spidermonkey/window.h"
#include "ecmascript/spidermonkey/xhr.h"
#include "intl/libintl.h"
@ -150,7 +151,7 @@ spidermonkey_get_interpreter(struct ecmascript_interpreter *interpreter)
JSContext *ctx;
JSObject *console_obj, *document_obj, /* *forms_obj,*/ *history_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);
if (!js_module_init_ok) return NULL;
@ -328,6 +329,17 @@ spidermonkey_get_interpreter(struct ecmascript_interpreter *interpreter)
if (!customEvent_obj) {
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);
return ctx;

View File

@ -3,6 +3,6 @@ include $(top_builddir)/Makefile.config
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 \
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

View File

@ -1,3 +1,3 @@
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',
'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')

File diff suppressed because it is too large Load Diff

View 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

View File

@ -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
int dos_setraw(int ctl, int save)

View File

@ -74,6 +74,14 @@
#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
/* Set a file descriptor to non-blocking mode. It returns a non-zero value
* on error. */

View File

@ -54,6 +54,7 @@ int can_resize_window(int);
int can_open_os_shell(int);
void set_highpri(void);
char *tempname(const char *dir, const char *pfx, char *suff);
long os_get_free_mem_in_mib(void);
#ifdef USE_OPEN_PREALLOC
int open_prealloc(char *, int, int, off_t);

View File

@ -6,6 +6,8 @@
#include "osdep/system.h"
#include <stdio.h>
#if defined(CONFIG_GPM) && defined(HAVE_GPM_H)
#include <gpm.h>
#endif
@ -155,5 +157,38 @@ resume_mouse(void *h)
set_handlers(gms->h, (select_handler_T) gpm_mouse_in, NULL, NULL, gms);
}
#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;
}

View File

@ -336,3 +336,13 @@ user_appdata_directory(void)
else
return NULL;
}
long
os_get_free_mem_in_mib(void)
{
MEMORYSTATUSEX statex;
statex.dwLength = sizeof(statex);
GlobalMemoryStatusEx(&statex);
return statex.ullAvailPhys / (1024 * 1024);
}

View 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>