@@ -272,40 +272,42 @@ SUBROUTINE do_chdir (dir, ld, echo)
272
272
INTEGER , INTENT (INOUT ) :: ld
273
273
LOGICAL , INTENT (IN ) :: echo
274
274
!
275
- CHARACTER (LEN= PREC_STRING) :: cwd
275
+ CHARACTER (LEN= PREC_STRING) :: cwd ! to wotk with locally
276
+ CHARACTER (LEN= PREC_STRING) :: cwd_echo ! For display only
276
277
CHARACTER (LEN= PREC_STRING), DIMENSION (MAXW) :: cpara
277
278
CHARACTER (LEN= PREC_STRING) :: string
278
279
CHARACTER (LEN= 1 ) :: drive
279
280
CHARACTER (LEN= 6 ) :: mntdrive
280
281
INTEGER :: i
282
+ INTEGER :: lld
281
283
INTEGER , DIMENSION (MAXW) :: lpara
282
284
INTEGER :: ianz
283
285
INTEGER :: dummy
284
286
REAL (KIND= PREC_DP), DIMENSION (MAXW) :: werte
285
287
!
286
288
!
287
- IF (dir.eq. ' ' ) then
289
+ IF (dir.eq. ' ' ) THEN
288
290
CALL sys_holecwd(cwd, dummy)
289
- ld = LEN_TRIM (cwd)
290
- dir = cwd
291
+ ld = LEN_TRIM (cwd)
292
+ dir = cwd ! Update user directory
293
+ cwd_echo = cwd ! Make copy for display
291
294
IF (operating== OS_LINUX_WSL) THEN
292
- DO i= 1 , ld
295
+ lld = LEN_TRIM (cwd_echo)
296
+ DO i= 1 , lld
293
297
IF (cwd(i:i)==' /' ) cwd(i:i)= ' \'
294
298
ENDDO
295
- IF (cwd(ld:ld ) /= ' \' ) THEN
296
- cwd(ld +1 :ld +1 ) = ' \'
297
- ld = ld + 1
299
+ IF (cwd(lld:lld ) /= ' \' ) THEN
300
+ cwd(lld +1 :lld +1 ) = ' \'
301
+ lld = lld + 1
298
302
ENDIF
299
303
IF (cwd(1 :5 ) == ' \mnt\' ) THEN
300
304
drive = cwd(6 :6 )
301
305
CALL do_cap(drive)
302
- cwd = drive // ' :' // cwd(7 :ld)
303
- ld = LEN_TRIM (cwd)
306
+ cwd_echo = drive // ' :' // cwd(7 :lld)
304
307
ENDIF
305
308
ENDIF
306
309
IF (echo) then
307
- ld = LEN_TRIM (cwd)
308
- WRITE ( * , 1000 ) cwd (1 :ld)
310
+ WRITE ( * , 1000 ) cwd_echo(1 :LEN_TRIM (cwd_echo))
309
311
ENDIF
310
312
ELSE
311
313
ld = - ld
@@ -328,39 +330,43 @@ SUBROUTINE do_chdir (dir, ld, echo)
328
330
IF (cpara(1 )(i:i)==' \' ) cpara(1 )(i:i) = ' /'
329
331
ENDDO
330
332
ENDIF
331
- cwd = cpara (1 ) (1 :lpara (1 ) )
332
- ld = lpara (1 )
333
- CALL sys_chdir (cwd (1 :ld), ier_num)
333
+ cwd = cpara(1 )(1 :lpara (1 ) )
334
+ ld = lpara(1 )
335
+ CALL sys_chdir(cwd(1 :ld), ier_num)
334
336
IF (ier_num.eq. 0 ) then
335
337
ier_typ = ER_NONE
336
338
CALL sys_holecwd(cwd, dummy)
337
- ld = len_str (cwd)
339
+ ld = LEN_TRIM (cwd)
338
340
IF (cwd(ld:ld) /= ' /' ) THEN
339
341
cwd = cwd(1 :ld) // ' /'
340
342
ld = ld + 1
341
343
ENDIF
342
- current_dir = cwd(1 :LEN (current_dir))
343
- current_dir_l = MIN (ld, LEN (current_dir))
344
- dir = current_dir
345
- ld = current_dir_l
344
+ cwd_echo = cwd
346
345
IF (operating== OS_LINUX_WSL) THEN
347
- DO i= 1 , ld
348
- IF (cwd(i:i)==' /' ) cwd(i:i)= ' \'
346
+ lld = LEN_TRIM (cwd_echo)
347
+ DO i= 1 , lld
348
+ IF (cwd_echo(i:i)==' /' ) cwd_echo(i:i)= ' \'
349
349
ENDDO
350
- IF (cwd (1 :5 ) == ' \mnt\' ) THEN
351
- drive = cwd (6 :6 )
350
+ IF (cwd_echo (1 :5 ) == ' \mnt\' ) THEN
351
+ drive = cwd_echo (6 :6 )
352
352
CALL do_cap(drive)
353
- cwd = drive // ' :' // cwd(7 :ld)
354
- ld = LEN_TRIM (cwd)
353
+ cwd_echo = drive // ' :' // cwd_echo(7 :lld)
355
354
ENDIF
355
+ ELSE
356
+ cwd_echo = cwd
356
357
ENDIF
357
- IF (echo) WRITE (output_io, 1000 ) cwd (1 :ld )
358
+ IF (echo) WRITE (output_io, 1000 ) cwd_echo (1 :LEN_TRIM (cwd_echo) )
358
359
ELSE
359
360
WRITE ( * , 2000 ) ier_num
360
361
ier_num = - 5
361
362
ier_typ = ER_COMM
362
363
ENDIF
363
364
ENDIF
365
+ !
366
+ current_dir = cwd(1 :LEN (current_dir)) ! Update the global variable
367
+ current_dir_l = MIN (ld, LEN (current_dir))
368
+ dir = cwd
369
+ ld = LEN_TRIM (dir)
364
370
!
365
371
1000 FORMAT (' ------ > Working directory : ' ,a)
366
372
2000 FORMAT (' ****SYST**** Unable to change directory - Error :' , &
0 commit comments