Skip to content

Commit 6fbc2e6

Browse files
committed
getfile: remove trailing new line characters
1 parent 1f4de32 commit 6fbc2e6

File tree

1 file changed

+23
-0
lines changed

1 file changed

+23
-0
lines changed

src/stdlib_system_subprocess.F90

Lines changed: 23 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -471,9 +471,11 @@ function getfile(fileName,err,delete) result(file)
471471
character(:), allocatable :: file
472472

473473
! Local variables
474+
character(*), parameter :: CRLF = achar(13)//new_line('a')
474475
type(linalg_state_type) :: err0
475476
character(len=:), allocatable :: fileString
476477
character(len=512) :: iomsg
478+
character :: last_char
477479
integer :: lun,iostat
478480
integer(int64) :: errpos,fileSize
479481
logical :: is_present,want_deleted
@@ -517,6 +519,27 @@ function getfile(fileName,err,delete) result(file)
517519
call linalg_error_handling(err0,err)
518520
return
519521
end if
522+
523+
remove_trailing_newline: if (fileSize>0) then
524+
525+
last_char = CRLF(1:1)
526+
fileSize = fileSize+1
527+
528+
do while (scan(last_char,CRLF)>0 .and. fileSize>1)
529+
fileSize = fileSize-1
530+
read(lun, pos=fileSize, iostat=iostat, iomsg=iomsg) last_char
531+
532+
! Read error
533+
if (iostat/=0) then
534+
535+
err0 = linalg_state_type('getfile',LINALG_ERROR,iomsg,'(',fileName,'at byte',fileSize,')')
536+
call linalg_error_handling(err0,err)
537+
return
538+
539+
endif
540+
541+
end do
542+
endif remove_trailing_newline
520543

521544
allocate(character(len=fileSize) :: fileString)
522545

0 commit comments

Comments
 (0)