| 12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970 |
- (*
- BSD 2-Clause License
- Copyright (c) 2020, Anton Krotov
- All rights reserved.
- *)
- MODULE Args;
- IMPORT SYSTEM, API;
- VAR
- argc*, envc*: INTEGER;
- PROCEDURE GetArg* (n: INTEGER; VAR s: ARRAY OF CHAR);
- VAR
- i, len, ptr: INTEGER;
- c: CHAR;
- BEGIN
- i := 0;
- len := LEN(s) - 1;
- IF (0 <= n) & (n <= argc + envc) & (n # argc) & (len > 0) THEN
- SYSTEM.GET(API.MainParam + (n + 1) * SYSTEM.SIZE(INTEGER), ptr);
- REPEAT
- SYSTEM.GET(ptr, c);
- s[i] := c;
- INC(i);
- INC(ptr)
- UNTIL (c = 0X) OR (i = len)
- END;
- s[i] := 0X
- END GetArg;
- PROCEDURE GetEnv* (n: INTEGER; VAR s: ARRAY OF CHAR);
- BEGIN
- IF (0 <= n) & (n < envc) THEN
- GetArg(n + argc + 1, s)
- ELSE
- s[0] := 0X
- END
- END GetEnv;
- PROCEDURE init;
- VAR
- ptr: INTEGER;
- BEGIN
- IF API.MainParam # 0 THEN
- envc := -1;
- SYSTEM.GET(API.MainParam, argc);
- REPEAT
- SYSTEM.GET(API.MainParam + (envc + argc + 3) * SYSTEM.SIZE(INTEGER), ptr);
- INC(envc)
- UNTIL ptr = 0
- ELSE
- envc := 0;
- argc := 0
- END
- END init;
- BEGIN
- init
- END Args.
|