5 * Revision 1.1.1.1 1996/03/06 10:47:26 mclareni
9 #include "zebra/pilot.h"
10 SUBROUTINE RZPATH(CHPATH)
11 ************************************************************************
13 * RZPATH will decode the character string CHPATH into a character
14 * array CHPAT(1),,CHPAT(NLPAT)
15 * where NLPAT is the number of levels starting from the root directory
18 * *CHPATH* Character variable specifying the pathname
20 * Called by RZCDIR,RZCOPY,RZLDIR,RZNDIR
22 * Author : R.Brun DD/US/PD
24 * Last mod: 15.11.91 J.Shiers Support Unix-style .. as well as \
26 ************************************************************************
27 #include "zebra/zbcdch.inc"
28 CHARACTER*1 BSLASH,KTILDE
29 #include "zebra/zunit.inc"
30 #include "zebra/rzdir.inc"
35 *-----------------------------------------------------------------------
41 10 IF(CHPATH(NCHP:NCHP).EQ.' ')THEN
52 30 IF(CHPATH(IS1:IS1).EQ.' ')THEN
60 IF(CHPATH(IS1+1:IS1+1).EQ.'/')THEN
62 * Case where Path starts with //Topdirectory
65 IF(IS.GT.NCHP)GO TO 99
66 40 IF(CHPATH(IS:IS).EQ.'/')THEN
67 IF(IS.EQ.IS1+2)GO TO 90
69 CHPAT(1)=CHPATH(IS1+2:IS-1)
75 IF(IS.LT.NCHP)GO TO 40
77 CHPAT(1)=CHPATH(IS1+2:IS)
82 * Case where Path starts just below topdirectory /a/b/c
84 IF(CHPATH(IS1+1:IS1+1).EQ.BSLASH)GO TO 90
85 IF(CHPATH(IS1+1:IS1+1).EQ.KTILDE)GO TO 90
92 IF(CHPATH(IS1:IS).NE.'..'.AND.
93 + CHPATH(IS1:IS).NE.BSLASH) THEN
95 IF(NLPAT.GT.NLPATM)GO TO 90
96 CHPAT(NLPAT)=CHPATH(IS1:IS)
102 IF(CHPATH(IS:IS).EQ.'/')THEN
103 IF(NLPAT.GT.NLPATM)GO TO 90
104 IF(CHPATH(IS1:IS-1).NE.'..'.AND.
105 + CHPATH(IS1:IS-1).NE.BSLASH) THEN
107 CHPAT(NLPAT)=CHPATH(IS1:IS-1)
118 * Case where Path is relative to the naming directory
120 IF(CH1.EQ.KTILDE)THEN
125 IF(IS1.EQ.NCHP)GO TO 99
131 * Case where Path is relative to the working directory
138 75 IF(CH1.EQ.BSLASH)THEN
140 IF(NLPAT.EQ.0)NLPAT=1
141 IF(IS1.EQ.NCHP)GO TO 99
148 76 IF(CH2.EQ.'..')THEN
150 IF(NLPAT.EQ.0)NLPAT=1
151 IF(IS1+1.EQ.NCHP)GO TO 99
152 IF(CHPATH(IS1+2:IS1+2).NE.'/') GOTO 90
155 CH2=CHPATH(IS1:IS1+1)
159 80 IF(IS.EQ.NCHP)THEN
161 IF(NLPAT.GT.NLPATM)GO TO 90
162 CHPAT(NLPAT)=CHPATH(IS1:IS)
165 IF(CHPATH(IS:IS).EQ.'/')THEN
168 IF(NLPAT.GT.NLPATM)GO TO 90
169 CHPAT(NLPAT)=CHPATH(IS1:IS-1)