aboutsummaryrefslogtreecommitdiff
path: root/binary.f90
diff options
context:
space:
mode:
Diffstat (limited to 'binary.f90')
-rw-r--r--binary.f9063
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