dp@JASPER.Palladian.COM (Jeffrey Del Papa) (02/05/88)
if you blithely insert the directory name into your prompt string, you will quickly exceed the limited prompt width. here is an solution. ------------- cut here -------- $ ! Set default and prompt with Unix like syntax (or, gag, Vms syntax). $ ! Shane 8 September 1985 $ IF p1 .EQS. "" THEN GOTO home $ IF F$TRNLNM("''p1'") .NES. "" THEN GOTO lgcl $ IF F$LOCATE("[", p1) .LT. F$LENGTH(p1) THEN GOTO norm $ IF F$LOCATE("<", p1) .LT. F$LENGTH(p1) THEN GOTO norm $ IF p1 .EQS. ".." THEN GOTO up $ IF F$LOCATE("..", p1) .EQ. 0 THEN GOTO side $ spec = "[''p1']" $ cd: device = F$PARSE(spec, "DEFAULT", ,"DEVICE", "SYNTAX_ONLY") $ directory = F$PARSE(spec, "DEFAULT", , "DIRECTORY", "SYNTAX_ONLY") $ IF F$PARSE(spec) .EQS. "" THEN GOTO barf $ SET DEFAULT 'device''directory' $ directory = F$EXTRACT(1, F$LENGTH(F$DIR()) - 2, F$DIR()) $ IF F$LENGTH(directory) + F$LENGTH(F$TRNLNM("SYS$NODE")) + F$LENGTH(F$TRNLNM("SYS$DISK")) .LT. 30 THEN GOTO set $ trim: dot = F$LOCATE(".", directory) $ directory = F$EXTRACT(dot + 1, F$LENGTH(directory) - dot, directory) $ IF F$LENGTH(directory) .GT. 26 THEN GOTO trim $ directory = "...''directory'" $ set: SET PROMPT = "''F$TRNLNM("SYS$NODE")'''F$TRNLNM("SYS$DISK")'''directory'> " $ EXIT $ up: spec = "[-]" $ GOTO cd $ home: spec = &F$LOG("SYS$LOGIN") $ GOTO cd $ side: spec = "[-''F$EXTRACT(1, F$LENGTH(p1), p1)']" $ GOTO cd $ lgcl: spec = F$TRNLNM("''p1'") $ GOTO cd $ norm: spec = p1 $ GOTO cd $ barf: WRITE sys$output "Nonexistent: ''p1'" $ STOP