fix: update NetSurf port & montauk frontend to use new paths for fonts and icons
This commit is contained in:
1 parent
6f3cf99667
commit
35e3d1a0bb
21 files changed
+3376
-34
No files matched your search
@@ -0,0 +1,113 @@
|
||||
diff --git a/frontends/monkey/download.c b/frontends/monkey/download.c
|
||||
index 1f77439..2eef168 100644
|
||||
--- a/frontends/monkey/download.c
|
||||
+++ b/frontends/monkey/download.c
|
||||
@@ -17,8 +17,13 @@
|
||||
*/
|
||||
|
||||
#include <stdio.h>
|
||||
+#include <stdbool.h>
|
||||
#include <stdint.h>
|
||||
#include <stdlib.h>
|
||||
+#include <string.h>
|
||||
+#if defined(__montauk__)
|
||||
+#include <montauk.h>
|
||||
+#endif
|
||||
|
||||
#include "utils/errors.h"
|
||||
#include "utils/ring.h"
|
||||
@@ -36,6 +41,11 @@ struct gui_download_window {
|
||||
struct gui_window *g;
|
||||
download_context *dlctx;
|
||||
uint32_t dwin_num;
|
||||
+#if defined(__montauk__)
|
||||
+ int file_handle;
|
||||
+ unsigned long offset;
|
||||
+ char path[256];
|
||||
+#endif
|
||||
char *host; /* ignore */
|
||||
};
|
||||
|
||||
@@ -51,6 +61,34 @@ gui_download_window_create(download_context *ctx,
|
||||
ret->g = parent;
|
||||
ret->dwin_num = dwin_ctr++;
|
||||
ret->dlctx = ctx;
|
||||
+#if defined(__montauk__)
|
||||
+ ret->file_handle = -1;
|
||||
+ char user[64] = {0};
|
||||
+ if (_mtk_syscall2(MTK_SYS_GETUSER, (long)user, sizeof(user)) < 0 || user[0] == 0)
|
||||
+ strcpy(user, "admin");
|
||||
+ char directory[192];
|
||||
+ snprintf(directory, sizeof(directory), "0:/users/%s/Downloads", user);
|
||||
+ mtk_mkdir(directory);
|
||||
+ const char *source = download_context_get_filename(ctx);
|
||||
+ char filename[96];
|
||||
+ if (source == NULL || source[0] == 0) source = "download.bin";
|
||||
+ size_t n = 0;
|
||||
+ for (; source[n] != 0 && n + 1 < sizeof(filename); n++) {
|
||||
+ unsigned char c = (unsigned char)source[n];
|
||||
+ filename[n] = (c < 32 || c == '/' || c == '\\' || c == ':') ? '_' : (char)c;
|
||||
+ }
|
||||
+ filename[n] = 0;
|
||||
+ snprintf(ret->path, sizeof(ret->path), "%s/%s", directory, filename);
|
||||
+ ret->file_handle = mtk_create(ret->path);
|
||||
+ if (ret->file_handle < 0) {
|
||||
+ free(ret);
|
||||
+ return NULL;
|
||||
+ }
|
||||
+ if (parent != NULL) {
|
||||
+ snprintf(parent->status, sizeof(parent->status), "Downloading %s", filename);
|
||||
+ parent->dirty = true;
|
||||
+ }
|
||||
+#endif
|
||||
|
||||
RING_INSERT(dw_ring, ret);
|
||||
|
||||
@@ -64,21 +102,47 @@ static nserror
|
||||
gui_download_window_data(struct gui_download_window *dw,
|
||||
const char *data, unsigned int size)
|
||||
{
|
||||
+#if defined(__montauk__)
|
||||
+ if (dw->file_handle < 0 || mtk_write(dw->file_handle,
|
||||
+ (const uint8_t *)data, dw->offset, size) != (int)size)
|
||||
+ return NSERROR_SAVE_FAILED;
|
||||
+ dw->offset += size;
|
||||
+ if (dw->g != NULL) {
|
||||
+ snprintf(dw->g->status, sizeof(dw->g->status), "Downloading: %lu bytes", dw->offset);
|
||||
+ dw->g->dirty = true;
|
||||
+ }
|
||||
+ return NSERROR_OK;
|
||||
+#else
|
||||
moutf(MOUT_DOWNLOAD, "DATA DWIN %u SIZE %u DATA %s",
|
||||
dw->dwin_num, size, data);
|
||||
return NSERROR_OK;
|
||||
+#endif
|
||||
}
|
||||
|
||||
static void
|
||||
gui_download_window_error(struct gui_download_window *dw,
|
||||
const char *error_msg)
|
||||
{
|
||||
+#if defined(__montauk__)
|
||||
+ if (dw->file_handle >= 0) { mtk_close(dw->file_handle); dw->file_handle = -1; }
|
||||
+ if (dw->g != NULL) {
|
||||
+ snprintf(dw->g->status, sizeof(dw->g->status), "Download failed: %s", error_msg);
|
||||
+ dw->g->dirty = true;
|
||||
+ }
|
||||
+#endif
|
||||
moutf(MOUT_DOWNLOAD, "ERROR DWIN %u ERROR %s", dw->dwin_num, error_msg);
|
||||
}
|
||||
|
||||
static void
|
||||
gui_download_window_done(struct gui_download_window *dw)
|
||||
{
|
||||
+#if defined(__montauk__)
|
||||
+ if (dw->file_handle >= 0) { mtk_close(dw->file_handle); dw->file_handle = -1; }
|
||||
+ if (dw->g != NULL) {
|
||||
+ snprintf(dw->g->status, sizeof(dw->g->status), "Saved %s", dw->path);
|
||||
+ dw->g->dirty = true;
|
||||
+ }
|
||||
+#endif
|
||||
moutf(MOUT_DOWNLOAD, "DONE DWIN %u", dw->dwin_num);
|
||||
RING_REMOVE(dw_ring, dw);
|
||||
download_context_destroy(dw->dlctx);
|
||||
Reference in new issue
Block a user