diff options
Diffstat (limited to 'binary.f90')
-rw-r--r-- | binary.f90 | 63 |
1 files changed, 63 insertions, 0 deletions
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 <jeff@rainbow-100.com> +! +! 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 |