0 /*
1 * ISC License
2 * Copyright (c) 2023 RMF <rawmonk@firemail.cc>
3 */
4 #include <stddef.h>
5 #include <stdio.h>
6 #include <string.h>
7 #include <unistd.h>
8 #include "macro.h"
9 #include "error.h"
10 #include "client.h"
11 #include "dns.h"
12 #include "page.h"
13 #include "request.h"
14 #include "parser.h"
15 #include "secure.h"
16 #include "image.h"
17 #include "tab.h"
18 #include "proc.h"
19 #include "storage.h"
20 #include "config.h"
21 #include "xdg.h"
22
23 int main(int argc, char *argv[]) {
24
25 struct client client = {0};
26 int ret;
27 const char *url = "about:newtab";
28
29 if (argc > 1) {
30 #ifdef ENABLE_IMAGE
31 if (!strcmp(argv[1], "--image")) {
32 if (storage_init()) return -1;
33 config_load();
34 storage_close();
35 image_parser(STDIN_FILENO, STDOUT_FILENO);
36 proc_exit();
37 return 0;
38 }
39 #endif
40 #ifndef DISABLE_XDG
41 if (!strcmp(argv[1], "--xdg")) {
42 xdg_proc(STDIN_FILENO, STDOUT_FILENO);
43 return 0;
44 }
45 #endif
46 if (!strcmp(argv[1], "--page")) {
47 parser_page(STDIN_FILENO, STDOUT_FILENO);
48 proc_exit();
49 return 0;
50 }
51 if (!strcmp(argv[1], "--request")) {
52 parser_request(STDIN_FILENO, STDOUT_FILENO);
53 proc_exit();
54 return 0;
55 }
56 url = argv[1];
57 }
58
59 proc_argv(argv);
60
61 if ((ret = client_init(&client))) {
62 char error[1024];
63 error_string(ret, V(error));
64 printf("Initialisation failure: %s\n", error);
65 return -1;
66 }
67
68 client.tab = tab_new();
69 tab_request(client.tab, url);
70
71 do {
72 client_display(&client);
73 } while (!client_input(&client));
74
75 client_destroy(&client);
76
77 return 0;
78 }
79