From 723324ae71f8209e4b1757a3f84bd0e66b6c6319 Mon Sep 17 00:00:00 2001 From: Jeffrey Armstrong Date: Tue, 5 May 2020 07:54:53 -0400 Subject: Actual client can now load and display a page using dumb_renderer --- files.f90 | 32 +++++++++++++++++++++++++------- 1 file changed, 25 insertions(+), 7 deletions(-) (limited to 'files.f90') diff --git a/files.f90 b/files.f90 index 45bc116..cbdb44d 100644 --- a/files.f90 +++ b/files.f90 @@ -3,8 +3,29 @@ module file_handling integer, parameter::file_type_plain_text = 1 integer, parameter::file_type_gemini = 2 + character(17), parameter::end_indicator = "** END OF FILE **" + contains + subroutine mark_file_end(unit_number) + implicit none + + integer, intent(in)::unit_number + + Write(unit_number, '(A17)') end_indicator + + end subroutine mark_file_end + + function is_file_end_marker(text) + implicit none + + character(*), intent(in)::text + logical::is_file_end_marker + + is_file_end_marker = (index(text, end_indicator) > 0) + + end function is_file_end_marker + function read_line_text(unit_number, iostatus) result(res) implicit none @@ -24,7 +45,7 @@ contains end do length = (endpos - startpos + 1) - print '(A10, I8)', "allocated", length + !print '(A10, I8)', "allocated", length allocate(character(len=length) :: res) res = repeat(' ', length) @@ -97,7 +118,6 @@ contains type(line), pointer::first_line type(line), pointer::walker, next_line - character::c integer::iostatus logical::preformatted_on @@ -110,9 +130,9 @@ contains walker=>first_line - call process_line(walker, file_type, preformatted_on) - - do while(iostatus /= -1) ! -1 should be end of file + do while(iostatus /= -1 .and. .not. is_file_end_marker(walker%text)) ! -1 should be end of file + + call process_line(walker, file_type, preformatted_on) allocate(next_line) next_line%next => null() @@ -122,8 +142,6 @@ contains walker => walker%next walker%text = read_line_text(unit_number, iostatus) - print *, walker%text - call process_line(walker, file_type, preformatted_on) end do -- cgit v1.2.3