forked from KolibriOS/kolibrios
41 lines
824 B
Forth
41 lines
824 B
Forth
|
|
: is_path_delimiter ( c -- flag )
|
|
DUP [CHAR] \ = SWAP [CHAR] / = OR
|
|
;
|
|
|
|
: CUT-PATH ( a u -- a u1 )
|
|
\ èç ñòðîêè "path\name" âûäåëèòü ñòðîêó "path\"
|
|
OVER +
|
|
BEGIN 2DUP <> WHILE DUP C@ is_path_delimiter 0= WHILE 1- REPEAT 1+ THEN
|
|
\ DUP 0! \ ~ruv (to anfilat): íå äÎëæíî òóò çàòèðàòü ïîäàííûé áóôåð!
|
|
OVER -
|
|
;
|
|
|
|
: ModuleName ( -- addr u )
|
|
ABORT
|
|
;
|
|
|
|
: ModuleDirName ( -- addr u )
|
|
ModuleName CUT-PATH
|
|
;
|
|
|
|
: +ModuleDirName ( addr u -- addr2 u2 )
|
|
2>R
|
|
ModuleDirName 2DUP +
|
|
2R> DUP >R ROT SWAP 1+ MOVE
|
|
R> +
|
|
;
|
|
|
|
: +LibraryDirName ( addr u -- addr2 u2 )
|
|
\ Äîáàâèòü addr u ê ïîëíûé_ïóòü_ïðèëîæåíèÿ+devel\
|
|
2>R
|
|
ModuleDirName 2DUP +
|
|
S" devel\" ROT SWAP MOVE
|
|
6 + 2DUP +
|
|
2R> DUP >R ROT SWAP 1+ MOVE
|
|
R> +
|
|
;
|
|
: SOURCE-NAME ( -- a u )
|
|
CURFILE @ DUP IF ASCIIZ> ELSE 0 THEN
|
|
;
|