Commit 5e292226 authored by Zolnierczuk, Piotr's avatar Zolnierczuk, Piotr
Browse files

fixes bug #38

parent 375ba670
Loading
Loading
Loading
Loading
+1 −1
Original line number Diff line number Diff line
@@ -3,7 +3,7 @@ export PROJECT=drspine

export VERSION_MAJOR=1
export VERSION_MINOR=4
export VERSION_RELEASE=6
export VERSION_RELEASE=7

export PROJLIB=lib$(PROJECT).a
export PROJARCH=$(PROJECT)-$(VERSION_MAJOR).$(VERSION_MINOR)
+11 −4
Original line number Diff line number Diff line
@@ -250,16 +250,23 @@ contains
    integer, intent(in)           :: maxlength
    character(len=maxlength)      :: cresult
    !
    integer ::  ilen
    integer ::  ilen, iext

    ilen = len_trim(filename)
    cresult = repeat(' ',maxlength)
    if(ilen<=0) return
    ! if name is shorter than maxlength return unchanged
    if(ilen<=maxlength) then
        cresult(1:ilen) = filename(1:ilen)
    else
        ! remove extension
        ilen = index(filename, '.', .true.)
        cresult = filename(ilen-maxlength:ilen-1)
        ! remove extension (if found)
        iext = index(filename, '.', .true.)
        cresult = filename(max(ilen-maxlength,1):ilen-1)
        if(iext>maxlength) then
            cresult = filename(max(iext-maxlength,  1):iext-1)
        else
            cresult = filename(max(ilen-maxlength+1,1):ilen)
        end if
    endif
  end function truncate_filename

+23 −4
Original line number Diff line number Diff line
@@ -42,11 +42,30 @@ contains
  end subroutine test_search_path

  subroutine test_truncate_filename()
    character(len=1024) :: cfilename1, cfilename2, cfilename3, cfilename4
    write(*,'(a)') '===> test_truncate_filename'
    call assert('/SNS/NSE/IPTS-01234/s56789.echo'==trim(truncate_filename('/SNS/NSE/IPTS-01234/s56789.echo',64)),&
                'full file name (1)')
    call assert('234/s56789'==trim(truncate_filename('/SNS/NSE/IPTS-01234/s56789.echo',10)),&
                'short file name (1)')
    cfilename1='/SNS/NSE/IPTS-01234/s9876.echo'
    cfilename2='/SNS/NSE/IPTS-01234/s12345.echo'
    cfilename3='/pathto/file/SNS/NSE/IPTS-01234/s9876543210.echo'
    cfilename4='/pathto/file/SNS/NSE/IPTS-01234/s9876543210'

    print *, "["//trim(truncate_filename(cfilename1, 10))//"]", len_trim(cfilename1)
    print *, "["//trim(truncate_filename(cfilename2, 64))//"]", len_trim(cfilename2)
    print *, "["//trim(truncate_filename(cfilename3, 26))//"]", len_trim(cfilename3)
    print *, "["//trim(truncate_filename(cfilename4, 26))//"]", len_trim(cfilename4)
    !
    call assert('/SNS/NSE/IPTS-01234/s9876.echo'==trim(truncate_filename(cfilename1, 64)),'full file name (1)')
    call assert('1234/s9876'==trim(truncate_filename(cfilename1, 10)), 'short filename (1)')

    call assert('/SNS/NSE/IPTS-01234/s12345.echo'==trim(truncate_filename(cfilename2, 64)),'full file name (2)')
    call assert('/SNS/NSE/IPTS-01234/s12345'==trim(truncate_filename(cfilename2, 26)), 'short filename (2)')

    call assert('/pathto/file/SNS/NSE/IPTS-01234/s9876543210.echo'==trim(truncate_filename(cfilename3, 64)),'full file name (3)')
    call assert('NSE/IPTS-01234/s9876543210'==trim(truncate_filename(cfilename3, 26)), 'short filename (3)')

    call assert('/pathto/file/SNS/NSE/IPTS-01234/s9876543210'==trim(truncate_filename(cfilename4, 64)),'full file name (4)')
    call assert('NSE/IPTS-01234/s9876543210'==trim(truncate_filename(cfilename4, 26)), 'short filename (4)')

  end subroutine test_truncate_filename