From b063cac571202757ec25f2c6e2a772684b88d4ae Mon Sep 17 00:00:00 2001 From: Jeffrey Armstrong Date: Tue, 5 May 2020 11:56:54 -0400 Subject: Added input handling with escaping, all untested. --- escape.f90 | 37 +++++++++++++++++++++++++++++++++++++ 1 file changed, 37 insertions(+) create mode 100644 escape.f90 (limited to 'escape.f90') diff --git a/escape.f90 b/escape.f90 new file mode 100644 index 0000000..d960459 --- /dev/null +++ b/escape.f90 @@ -0,0 +1,37 @@ +module escaper + + character(*), parameter::need_escape = " $&`:<>[]{}+#%@/;=?\^|~',"//'"' + +contains + + subroutine escape_string(text) + implicit none + + character(*), intent(inout)::text + integer::i + character(3)::replace_text + integer::replace_code + + i=1 + do while(i < len_trim(text)) + + if(index(need_escape, text(i:i)) > 0) then + replace_code = iachar(text(i:i)) + write(replace_text, '(A1,Z2)') "%", replace_code + if(i == 1) then + text = replace_text//text(2:len_trim(text)) + else if(i == len_trim(text)) then + text = text(1:(i-1))//replace_text + else + text = text(1:(i-1))//replace_text//text((i+1):len_trim(text)) + end if + i = i + 3 + else + i = i + 1 + end if + + end do + + end subroutine escape_string + +end module escaper \ No newline at end of file -- cgit v1.2.3