From f32d7d30c9cd38544349697e475355e8a2e2a478 Mon Sep 17 00:00:00 2001 From: Jeffrey Armstrong Date: Thu, 21 May 2020 12:25:14 -0400 Subject: Binary files are now actually handled in the dumb terminal version. --- binary.f90 | 63 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 63 insertions(+) create mode 100644 binary.f90 (limited to 'binary.f90') diff --git a/binary.f90 b/binary.f90 new file mode 100644 index 0000000..3cd58c6 --- /dev/null +++ b/binary.f90 @@ -0,0 +1,63 @@ +! Copyright (c) 2020 Jeffrey Armstrong +! +! Permission is hereby granted, free of charge, to any person obtaining a copy +! of this software and associated documentation files (the "Software"), to deal +! in the Software without restriction, including without limitation the rights +! to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +! copies of the Software, and to permit persons to whom the Software is +! furnished to do so, subject to the following conditions: +! +! The above copyright notice and this permission notice shall be included in +! all copies or substantial portions of the Software. +! +! The Software shall be used for Good, not Evil. +! +! THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +! IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +! FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +! AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +! LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +! OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE +! SOFTWARE. + +module binary +implicit none + + integer, parameter::binary_okay = 0 + integer, parameter::binary_ignore = -1 + integer, parameter::binary_error = -2 + + type, abstract :: binary_handler + + contains + + ! Should return a stream-opened unit number + procedure(handle_binary), deferred::handle_binary + + end type + + abstract interface + function handle_binary(self, mimetype, url, iostatus) + import::binary_handler + class(binary_handler)::self + character(*), intent(in)::mimetype + character(*), intent(in)::url + integer, intent(out)::iostatus + integer::handle_binary + end function handle_binary + end interface + + contains + + function is_binary_file(mimetype) result(res) + implicit none + + character(*), intent(in)::mimetype + logical::res + + ! So I guess this actually works... + res = (index(mimetype, "text/") <= 0) + + end function is_binary_file + +end module binary -- cgit v1.2.3