|
|
1.1 ! root 1: \ implements split-before, split-after and left-split ! 2: \ as described in 4.3 (Path resolution) ! 3: ! 4: \ delimeter returned in R-string ! 5: : split-before ( addr len delim -- addr-R len-R addr-L len-L ) ! 6: 0 rot dup >r 0 ?do ! 7: ( str char cnt R: len <sys> ) ! 8: 2 pick over + c@ 2 pick = if leave then ! 9: 1+ ! 10: loop ! 11: nip ! 12: 2dup + r> 2 pick - ! 13: 2swap ! 14: ; ! 15: ! 16: \ delimeter returned in L-string ! 17: : split-after ( addr len delim -- addr-R len-R addr-L len-L ) ! 18: over 1- rot dup >r 0 ?do ! 19: ( str char cnt R: len <sys> ) ! 20: 2 pick over + c@ 2 pick = if leave then ! 21: 1- ! 22: loop ! 23: nip ! 24: dup 0 >= if 1+ else drop r@ then ! 25: 2dup + r> 2 pick - ! 26: 2swap ! 27: ; ! 28: ! 29: \ delimiter not returned ! 30: : left-split ( addr len delim -- addr-R len-R addr-L len-L ) ! 31: 0 rot dup >r 0 ?do ! 32: ( str char cnt R: len <sys> ) ! 33: 2 pick i + c@ 2 pick = if leave then ! 34: 1+ ! 35: loop ! 36: nip ! 37: 2dup + 1+ r> 2 pick - ! 38: dup if 1- then ! 39: 2swap ! 40: ; ! 41: ! 42: \ delimiter not returned [THIS FUNCTION IS NOT NEEDED] ! 43: : right-split ( addr len delim -- addr-R len-R addr-L len-L ) ! 44: dup >r ! 45: split-after ! 46: dup if 2dup + 1- ! 47: c@ r@ = if 1- then then ! 48: r> drop ! 49: ; ! 50: ! 51: \ split <param-text> into separate path and device strings ! 52: : split-path-device ( str len -- pathstr len devstr len ) ! 53: ascii , left-split 2 pick 0= if ! 54: \ No comma - so either <dev>:<id> or <dev>:<id><path> ! 55: 2dup ascii \ strchr 0= if ! 56: \ No backslash so just <dev> or <dev>:<id> ! 57: s" " 2swap \ ( pathstr len devstr len ) ! 58: else ! 59: \ Contains backslash, must be a <dev>:<id><path> ! 60: ascii : left-split \ ( pathstr len devstr len ) ! 61: then ! 62: ! 63: \ Remove RHS split (unused) ! 64: 4 roll drop ! 65: 4 roll drop ! 66: else ! 67: \ Contains comma so split is already correct ! 68: then ! 69: ; ! 70:
This archive runs on limited infrastructure. Preserving old code on modern bandwidth. Automated agents are requested to crawl responsibly.