fox32os/applications/fetcher/Fetcher.okm

45 lines
1.6 KiB
Plaintext

MODULE Fetcher;
IMPORT OS, Browser, BrowserOpen, Desktop;
EXTERN terminalStreamPtr: POINTER TO CHAR;
EXTERN arg0Ptr: POINTER TO CHAR;
EXTERN arg1Ptr: POINTER TO CHAR;
EXTERN arg2Ptr: POINTER TO CHAR;
EXTERN arg3Ptr: POINTER TO CHAR;
VAR iconsResFile: ARRAY FILE_STRUCT_SIZE OF CHAR;
iconsRes: POINTER TO CHAR;
iconsResSize: INT;
hasIcons: CHAR;
PROCEDURE Main();
BEGIN
(* open icons.res from the boot disk and read its contents into `iconsRes` *)
hasIcons := 0;
IF open("icons.res", get_boot_disk_id(), PTROF(iconsResFile)) THEN
iconsResSize := get_size(PTROF(iconsResFile));
iconsRes := allocate_memory(iconsResSize);
read(iconsResSize, PTROF(iconsResFile), iconsRes);
hasIcons := 1;
END;
IF (terminalStreamPtr = 0) & (arg0Ptr = 0) THEN
(* probably launched from startup.cfg *)
DesktopMain(hasIcons, iconsRes);
ELSIF (CompareString("open", arg0Ptr)) & (arg1Ptr # 0) & (arg2Ptr # 0) THEN
(* launched from an application wanting to open a file *)
BrowserOpenMain(arg1Ptr, arg2Ptr, hasIcons, iconsRes);
ELSIF arg0Ptr <|= 5 THEN
(* launched from an existing instance of fetcher *)
BrowserMain(arg0Ptr, arg1Ptr, arg2Ptr, arg3Ptr, hasIcons, iconsRes);
ELSE
(* probably launched from the terminal *)
BrowserMain(string_to_int(arg0Ptr, 10), 0, 0, 0, hasIcons, iconsRes);
END;
IF hasIcons THEN
free_memory(iconsRes);
END;
END;
END.