From 4cd4c15f1bbe35e5544cd706f327b4a1b32bc493 Mon Sep 17 00:00:00 2001 From: Jeffrey Armstrong Date: Thu, 7 May 2020 14:49:34 -0400 Subject: Fixed some more URL handling issues. --- protocol.f90 | 14 +++++++++++--- render.f90 | 11 +++++++++-- 2 files changed, 20 insertions(+), 5 deletions(-) diff --git a/protocol.f90 b/protocol.f90 index 3348663..8f0cd70 100644 --- a/protocol.f90 +++ b/protocol.f90 @@ -265,8 +265,11 @@ contains end if end if - if(present(once) .and. once) then - exit + ! All on the same line crashes GNU Fortran... + if(present(once)) then + if(once) then + exit + end if end if i = index(string, pattern) @@ -301,7 +304,12 @@ contains exit end if - call replace_text(url, url(pattern_start:i+2), once=.true.) + ! Check for root... + if(url(pattern_start-1:pattern_start) == "//") then + call replace_text(url, "/../", replacement="/", once=.true.) + else + call replace_text(url, url(pattern_start:i+2), once=.true.) + end if i = index(url, '/../') end do diff --git a/render.f90 b/render.f90 index da3406a..860e06a 100644 --- a/render.f90 +++ b/render.f90 @@ -175,10 +175,17 @@ contains character(*), intent(in)::mimetype logical::type_supported integer::i - + + integer::istop + + istop = index(mimetype, ";") - 1 + if(istop < 1) then + istop = len_trim(mimetype) + end if + type_supported = .false. do i = 1, size(base_supported_types) - if(trim(mimetype) == trim(base_supported_types(i))) then + if(mimetype(1:istop) == trim(base_supported_types(i))) then type_supported = .true. exit end if -- cgit v1.2.3