| |
|
| : compact.. ( adr len -- adr2 len2 ) |
: compact.. ( adr len -- adr2 len2 ) |
| \ deletes phrases like "xy/.." out of our directory name 2dec97jaw |
\ deletes phrases like "xy/.." out of our directory name 2dec97jaw |
| over >r -1 >r |
over swap |
| BEGIN dup WHILE |
BEGIN dup WHILE |
| over c@ pathsep? |
dup >r '/ scan 2dup 4 min s" /../" compare 0= |
| IF r@ -1 = |
IF |
| IF r> drop dup >r |
dup r> - >r 4 /string over r> + 4 - |
| ELSE 2dup 1 /string |
swap 2dup + >r move dup r> over - |
| 3 min s" ../" compare |
ELSE |
| 0= |
rdrop dup 1 min /string |
| IF r@ over - ( diff ) |
|
| 2 pick swap - ( dest-adr ) |
|
| >r 3 /string r> swap 2dup >r >r |
|
| move r> r> |
|
| ELSE r> drop dup >r |
|
| THEN |
|
| THEN |
|
| THEN |
THEN |
| 1 /string |
REPEAT drop over - ; |
| REPEAT |
|
| r> drop |
|
| drop r> tuck - ; |
|
| |
|
| : reworkdir ( -- ) |
: reworkdir ( -- ) |
| remove~+ |
remove~+ |