Subversion Repositories Kolibri OS

Rev

Go to most recent revision | Details | Last modification | View Log | RSS feed

Rev Author Line No. Line
8097 maxcodehac 1
(*
2
    BSD 2-Clause License
3
 
4
    Copyright (c) 2020, Anton Krotov
5
    All rights reserved.
6
*)
7
 
8
MODULE Args;
9
 
10
IMPORT SYSTEM, API;
11
 
12
 
13
VAR
14
 
15
    argc*, envc*: INTEGER;
16
 
17
 
18
PROCEDURE GetArg* (n: INTEGER; VAR s: ARRAY OF CHAR);
19
VAR
20
    i, len, ptr: INTEGER;
21
    c: CHAR;
22
 
23
BEGIN
24
    i := 0;
25
    len := LEN(s) - 1;
26
    IF (0 <= n) & (n <= argc + envc) & (n # argc) & (len > 0) THEN
27
        SYSTEM.GET(API.MainParam + (n + 1) * SYSTEM.SIZE(INTEGER), ptr);
28
        REPEAT
29
            SYSTEM.GET(ptr, c);
30
            s[i] := c;
31
            INC(i);
32
            INC(ptr)
33
        UNTIL (c = 0X) OR (i = len)
34
    END;
35
    s[i] := 0X
36
END GetArg;
37
 
38
 
39
PROCEDURE GetEnv* (n: INTEGER; VAR s: ARRAY OF CHAR);
40
BEGIN
41
    IF (0 <= n) & (n < envc) THEN
42
        GetArg(n + argc + 1, s)
43
    ELSE
44
        s[0] := 0X
45
    END
46
END GetEnv;
47
 
48
 
49
PROCEDURE init;
50
VAR
51
    ptr: INTEGER;
52
 
53
BEGIN
54
    IF API.MainParam # 0 THEN
55
        envc := -1;
56
        SYSTEM.GET(API.MainParam, argc);
57
        REPEAT
58
            SYSTEM.GET(API.MainParam + (envc + argc + 3) * SYSTEM.SIZE(INTEGER), ptr);
59
            INC(envc)
60
        UNTIL ptr = 0
61
    ELSE
62
        envc := 0;
63
        argc := 0
64
    END
65
END init;
66
 
67
 
68
BEGIN
69
    init
70
END Args.