diff -ruN zziplib-0.13.62-orig/docs/make-doc.py zziplib-0.13.62/docs/make-doc.py
--- zziplib-0.13.62-orig/docs/make-doc.py	2009-08-23 06:38:21.000000000 -0500
+++ zziplib-0.13.62/docs/make-doc.py	2023-01-16 11:24:54.000000000 -0600
@@ -126,7 +126,7 @@
 class Options:
     var = {}
     def __getattr__(self, name):
-        if not self.var.has_key(name): return None
+        if not name in self.var: return None
         return self.var[name]
     def __setattr__(self, name, value):
         self.var[name] = value
@@ -158,7 +158,7 @@
         self.copyright = ""
     def __getattr__(self, name):
         """ defend against program to break on uninited members """
-        if self.__dict__.has_key(name): return self.__dict__[name]
+        if name in self.__dict__: return self.__dict__[name]
         warn("no such member: "+name); return None
     def set_author(self, text):
         if self.authors:
@@ -215,7 +215,7 @@
         #else
         try:
             input = open(name, "r")
-        except IOError, error:
+        except IOError as error:
             warn(#...... (scan_options) ...............
                 "can not open input file: "+name, error)
             continue
@@ -294,7 +294,7 @@
 #        return ""
     def __getattr__(self, name):
         """ defend against program exit on members being not inited """
-        if self.__dict__.has_key(name): return self.__dict__[name]
+        if name in self.__dict__: return self.__dict__[name]
         warn("no such member: "+name); return None
     def dict(self):
         return self.__dict__
@@ -376,7 +376,7 @@
         function.head = s(function.head, r"(.*)also:(.*)", lambda x
                           : set_seealso(function, x.group(2)) and x.group(1))
         if function.seealso and None:
-            print "function[",function.name,"].seealso=",function.seealso
+            print("function[",function.name,"].seealso=",function.seealso)
 examine_head_anchors(function_list)
 
 # =============================================================== HTML =====
@@ -524,11 +524,11 @@
 # and finally print the html-formatted output
 try:
     F = open(o.libhtmlfile, "w")
-except IOError, error:
+except IOError as error:
     warn(# ............. open(o.libhtmlfile, "w") ..............
         "can not open html output file: "+o.libhtmlfile, error)
 else:
-    print >> F, html.page_text()
+    print(html.page_text(), file=F)
     F.close()
 #fi
 
@@ -987,40 +987,40 @@
 
 try:
     F = open(o.docbookfile,"w")
-except IOError, error:
+except IOError as error:
     warn("can not open docbook output file: "+o.docbookfile, error)
 else:
-    print >> F, doctype, '<reference><title>Manual Pages</title>'
+    print(doctype, '<reference><title>Manual Pages</title>', file=F)
 
     for page in combined_pages:
-        print >> F, page.refentry_text()
+        print(page.refentry_text(), file=F)
     #od
 
     for page in header_refpages.values():
         if not page.refentry: continue
-        print >> F, "\n<!-- _______ "+page.id+" _______ -->",
-        print >> F, page.refentry_text()
+        print("\n<!-- _______ "+page.id+" _______ -->", end=' ', file=F)
+        print(page.refentry_text(), file=F)
     #od
 
-    print >> F, "\n",'</reference>',"\n"
+    print("\n",'</reference>',"\n", file=F)
     F.close()
 #fi
 
 # _____________________________________________________________________
 try:
     F = open( o.dumpdocfile, "w")
-except IOError, error:
+except IOError as error:
     warn ("can not open"+o.dumpdocfile,error)
 else:
     for func in function_list:
         name = func.name
-        print >> F, "<fn id=\""+name+"\">"+"<!-- FOR \""+name+"\" -->\n"
+        print("<fn id=\""+name+"\">"+"<!-- FOR \""+name+"\" -->\n", file=F)
         for H in sorted_keys(func.dict()):
-            print >> F, "<"+H+" name=\""+name+"\">",
-            print >> F, str(func.dict()[H]),
-            print >> F, "</"+H+">"
+            print("<"+H+" name=\""+name+"\">", end=' ', file=F)
+            print(str(func.dict()[H]), end=' ', file=F)
+            print("</"+H+">", file=F)
         #od
-        print >> F, "</fn><!-- END \""+name+"\" -->\n\n";
+        print("</fn><!-- END \""+name+"\" -->\n\n", file=F);
     #od
     F.close();
 #fi
diff -ruN zziplib-0.13.62-orig/docs/makedocs.py zziplib-0.13.62/docs/makedocs.py
--- zziplib-0.13.62-orig/docs/makedocs.py	2009-08-23 06:38:20.000000000 -0500
+++ zziplib-0.13.62/docs/makedocs.py	2023-01-16 10:26:08.000000000 -0600
@@ -37,7 +37,7 @@
         return None
     def print_list_mainheader(self):
         for t_fileheader in self.headers:
-            print t_fileheader.get_filename(), t_fileheader.src_mainheader()
+            print(t_fileheader.get_filename(), t_fileheader.src_mainheader())
         
 class PerFunctionEntry:
     def __init__(self, header, comment, prototype):
@@ -66,10 +66,10 @@
                                            functionprototype) ]
     def print_list_titleline(self):
         for funcheader in self.headers:
-            print funcheader.get_filename(), "[=>]", funcheader.get_titleline()
+            print(funcheader.get_filename(), "[=>]", funcheader.get_titleline())
     def print_list_name(self):
         for funcheader in self.prototypes:
-            print funcheader.get_filename(), "[>>]", funcheader.get_name()
+            print(funcheader.get_filename(), "[>>]", funcheader.get_name())
 
 class PerFunctionFamilyEntry:
     def __init__(self, leader):
@@ -122,12 +122,12 @@
         for name in self.retarget:
             into = self.retarget[name]
             if into not in name_list:
-                print ("function '"+name+"' retarget into '"+into+
-                       "' does not exist - keep alone")
+                print(("function '"+name+"' retarget into '"+into+
+                       "' does not exist - keep alone"))
             if into in self.retarget:
                 other = self.retarget[into]
-                print ("function '"+name+"' retarget into '"+into+
-                       "' which is itself a retarget into '"+other+"'")
+                print(("function '"+name+"' retarget into '"+into+
+                       "' which is itself a retarget into '"+other+"'"))
             if into not in lead_list:
                 lead_list += [ into ]
         for func in self.functions:
@@ -141,7 +141,7 @@
                 entry.add(func) # the first
                 self.entries += [ entry ]
             else:
-                print "head function '"+name+" has no entry"
+                print("head function '"+name+" has no entry")
         for func in self.functions:
             name = func.get_name()
             if name in self.retarget:
@@ -150,14 +150,14 @@
                 if entry is not None:
                     entry.add(func) # will not add duplicates
                 else:
-                    print "into function '"+name+" has no entry"
+                    print("into function '"+name+" has no entry")
     def print_list_name(self):
         for family in self.entries:
             name = family.get_name()
-            print name, ":",
+            print(name, ":", end=' ')
             for item in family.functions:
-                print item.get_name(), ",",
-            print ""
+                print(item.get_name(), ",", end=' ')
+            print("")
 class HtmlManualPageAdapter:
     def __init__(self, entry):
         """ usually takes a PerFunctionEntry """
diff -ruN zziplib-0.13.62-orig/docs/zzipdoc/commentmarkup.py zziplib-0.13.62/docs/zzipdoc/commentmarkup.py
--- zziplib-0.13.62-orig/docs/zzipdoc/commentmarkup.py	2009-08-23 06:38:21.000000000 -0500
+++ zziplib-0.13.62/docs/zzipdoc/commentmarkup.py	2023-01-16 10:41:31.000000000 -0600
@@ -1,4 +1,4 @@
-from match import Match
+from zzipdoc.match import Match
 
 def markup_link_syntax(text):
     """ markup the link-syntax ` => somewhere ` in the text block """
@@ -31,7 +31,7 @@
         comment = self.header.comment
         try:
             comment = self.header.get_otherlines()
-        except Exception, e:
+        except Exception as e:
             pass
         mode = ""
         text = ""
diff -ruN zziplib-0.13.62-orig/docs/zzipdoc/dbk2htm.py zziplib-0.13.62/docs/zzipdoc/dbk2htm.py
--- zziplib-0.13.62-orig/docs/zzipdoc/dbk2htm.py	2009-08-23 06:38:21.000000000 -0500
+++ zziplib-0.13.62/docs/zzipdoc/dbk2htm.py	2023-01-16 10:32:31.000000000 -0600
@@ -1,4 +1,4 @@
-from match import Match
+from zzipdoc.match import Match
 import string
 
 class dbk2htm_conversion:
diff -ruN zziplib-0.13.62-orig/docs/zzipdoc/docbookdocument.py zziplib-0.13.62/docs/zzipdoc/docbookdocument.py
--- zziplib-0.13.62-orig/docs/zzipdoc/docbookdocument.py	2009-08-23 06:38:21.000000000 -0500
+++ zziplib-0.13.62/docs/zzipdoc/docbookdocument.py	2023-01-16 10:46:29.000000000 -0600
@@ -1,6 +1,6 @@
 #! /usr/bin/env python
 # -*- coding: UTF-8 -*-
-from match import Match
+from zzipdoc.match import Match
 
 class DocbookDocument:
     """ binds some xml content page with additional markup - in this
@@ -23,14 +23,14 @@
     def get_title(self):
         if self.title: return title
         try:   return self.text[0].get_title()
-        except Exception, e: pass
+        except Exception as e: pass
         return self.title
     def _xml_doctype(self, rootnode):
         return "<!DOCTYPE "+rootnode+self.docbook_dtd+">"
     def _xml_text(self, xml):
         """ accepts adapter objects with .xml_text() """
         try:   return xml.xml_text()
-        except Exception, e: print "DocbookDocument/text", e; pass
+        except Exception as e: print("DocbookDocument/text", e); pass
         return str(xml)
     def _fetch_rootnode(self, text):
         fetch = Match(r"^[^<>]*<(\w+)\b")
@@ -47,7 +47,7 @@
         return filename
     def save(self, filename = None):
         filename = self._filename(filename)
-        print "writing '"+filename+"'"
+        print("writing '"+filename+"'")
         if len(self.text) > 1:
             self.save_all(filename)
         else:
@@ -58,12 +58,12 @@
             xml_text = self._xml_text(text)
             rootnode = self._fetch_rootnode(xml_text)
             doctype = self._xml_doctype(rootnode)
-            print >>fd, doctype
-            print >>fd, xml_text
+            print(doctype, file=fd)
+            print(xml_text, file=fd)
             fd.close()
             return True
-        except IOError, e:
-            print "could not open '"+filename+"'file", e
+        except IOError as e:
+            print("could not open '"+filename+"'file", e)
             return False
     def save_all(self, filename):
         assert len(self.text) > 1
@@ -76,20 +76,20 @@
             else:
                 rootnode = self.rootnode
             doctype = self._xml_doctype(rootnode)
-            print >>fd, doctype
+            print(doctype, file=fd)
             title = self.get_title()
             if title and self.rootnode in self.has_title_child:
-                print >>fd, "<"+self.rootnode+'><title>'+title+'</title>'
+                print("<"+self.rootnode+'><title>'+title+'</title>', file=fd)
             elif title:
-                print >>fd, "<"+self.rootnode+' id="'+title+'">'
+                print("<"+self.rootnode+' id="'+title+'">', file=fd)
             else:
-                print >>fd, "<"+self.rootnode+'>'
+                print("<"+self.rootnode+'>', file=fd)
             for text in self.text:
                 text = self._xml_text(text)
-                print >>fd, text
-            print >>fd, "</"+self.rootnode+">"
+                print(text, file=fd)
+            print("</"+self.rootnode+">", file=fd)
             fd.close()
             return True
-        except IOError, e:
-            print "could not open '"+filename+"'file", e
+        except IOError as e:
+            print("could not open '"+filename+"'file", e)
             return False
diff -ruN zziplib-0.13.62-orig/docs/zzipdoc/functionheader.py zziplib-0.13.62/docs/zzipdoc/functionheader.py
--- zziplib-0.13.62-orig/docs/zzipdoc/functionheader.py	2009-08-23 06:38:21.000000000 -0500
+++ zziplib-0.13.62/docs/zzipdoc/functionheader.py	2023-01-16 10:32:31.000000000 -0600
@@ -1,4 +1,4 @@
-from match import Match
+from zzipdoc.match import Match
 
 class FunctionHeader:
     """ parsing the comment block that is usually presented before
diff -ruN zziplib-0.13.62-orig/docs/zzipdoc/functionlisthtmlpage.py zziplib-0.13.62/docs/zzipdoc/functionlisthtmlpage.py
--- zziplib-0.13.62-orig/docs/zzipdoc/functionlisthtmlpage.py	2009-08-23 06:38:21.000000000 -0500
+++ zziplib-0.13.62/docs/zzipdoc/functionlisthtmlpage.py	2023-01-16 10:53:07.000000000 -0600
@@ -1,5 +1,5 @@
-from options import *
-from match import Match
+from zzipdoc.options import *
+from zzipdoc.match import Match
 
 class FunctionListHtmlPage:
     """ The main part here is to create a TOC (table of contents) at the
@@ -35,7 +35,7 @@
         head_text = entry.head_xml_text()
         body_text = entry.body_xml_text(name)
         if not head_text:
-            print "no head_text for", name
+            print("no head_text for", name)
             return
         try:
             prespec = entry.head_get_prespec()
@@ -43,7 +43,7 @@
             callspec = entry.head_get_callspec()
             head_text = ("<code><b><function>"+namespec+"</function></b>"
                          +callspec+" : "+prespec+"</code>")
-        except Exception, e:
+        except Exception as e:
             pass
         try:
             extraline = ""
@@ -56,7 +56,7 @@
                              '<em><small>'+filename+'</small></em>'+
                              '</td></table>')
             body_text = extraline + body_text
-        except Exception, e:
+        except Exception as e:
             pass
         def link(text):
             return (text & Match("<function>(\w*)</function>")
@@ -102,7 +102,7 @@
         text &= (Match("(?s)<link>(\w+)</link>")
                  >> (lambda x: self.resolve_internal(x.group(1))))
         if len(self.not_found_in_anchors):
-            print "not found in anchors: ", self.not_found_in_anchors
+            print("not found in anchors: ", self.not_found_in_anchors)
         return (text & Match("(?s)<link>([^<>]*)</link>")
                 >> "<code>\\1</code>")
     def resolve_external(self, func, sect):
diff -ruN zziplib-0.13.62-orig/docs/zzipdoc/functionlistreference.py zziplib-0.13.62/docs/zzipdoc/functionlistreference.py
--- zziplib-0.13.62-orig/docs/zzipdoc/functionlistreference.py	2009-08-23 06:38:21.000000000 -0500
+++ zziplib-0.13.62/docs/zzipdoc/functionlistreference.py	2023-01-16 10:54:49.000000000 -0600
@@ -1,7 +1,7 @@
 #! /usr/bin/env python
 # -*- coding: UTF-8 -*-
-from match import Match
-from htm2dbk import *
+from zzipdoc.match import Match
+from zzipdoc.htm2dbk import *
 
 class FunctionListReference:
     """ Creating a docbook-style <reference> list of <refentry> parts
@@ -19,7 +19,7 @@
         description = entry.body_xml_text(name)
         funcsynopsis = entry.head_xml_text()
         if not funcsynopsis:
-            print "no funcsynopsis for", name
+            print("no funcsynopsis for", name)
             return
         if self.entry is None:
             self.entry = FunctionListRefEntry(entry, self.o)
diff -ruN zziplib-0.13.62-orig/docs/zzipdoc/functionprototype.py zziplib-0.13.62/docs/zzipdoc/functionprototype.py
--- zziplib-0.13.62-orig/docs/zzipdoc/functionprototype.py	2009-08-23 06:38:21.000000000 -0500
+++ zziplib-0.13.62/docs/zzipdoc/functionprototype.py	2023-01-16 10:33:18.000000000 -0600
@@ -1,4 +1,4 @@
-from match import Match
+from zzipdoc.match import Match
 
 class FunctionPrototype:
     """ takes a single function prototype line (cut from some source file)
diff -ruN zziplib-0.13.62-orig/docs/zzipdoc/htm2dbk.py zziplib-0.13.62/docs/zzipdoc/htm2dbk.py
--- zziplib-0.13.62-orig/docs/zzipdoc/htm2dbk.py	2009-08-23 06:38:21.000000000 -0500
+++ zziplib-0.13.62/docs/zzipdoc/htm2dbk.py	2023-01-16 10:56:38.000000000 -0600
@@ -7,10 +7,10 @@
 present in the world of docbook-to-anything converters. """
 
 from datetime import date
-import match
+from zzipdoc.match import Match
 import sys
 
-m = match.Match
+m = Match
 
 class htm2dbk_conversion_base:
     regexlist = [
@@ -146,8 +146,8 @@
             doc.filename = filename
             doc.add(f.read())
             f.close()
-        except IOError, e:
-            print >> sys.stderr, "can not open "+filename
+        except IOError as e:
+            print("can not open "+filename, file=sys.stderr)
     return doc.value()
 
 def html2docbook(text):
@@ -155,4 +155,4 @@
     return htm2dbk_conversion().convert2(text)
 
 if __name__ == "__main__":
-    print htm2dbk_files(sys.argv[1:])
+    print(htm2dbk_files(sys.argv[1:]))
diff -ruN zziplib-0.13.62-orig/docs/zzipdoc/htmldocument.py zziplib-0.13.62/docs/zzipdoc/htmldocument.py
--- zziplib-0.13.62-orig/docs/zzipdoc/htmldocument.py	2009-08-23 06:38:21.000000000 -0500
+++ zziplib-0.13.62/docs/zzipdoc/htmldocument.py	2023-01-16 10:46:29.000000000 -0600
@@ -1,6 +1,6 @@
 #! /usr/bin/env python
 # -*- coding: UTF-8 -*-
-from match import Match
+from zzipdoc.match import Match
 
 class HtmlDocument:
     """ binds some html content page with additional markup - in this
@@ -29,31 +29,31 @@
     def get_title(self):
         if self.title: return self.title
         try:   return self.text[0].get_title()
-        except Exception, e: pass
+        except Exception as e: pass
         return self.title
     def _html_meta(self, meta):
         """ accepts adapter objects with .html_meta() """
         try:   return meta.html_meta()
-        except Exception, e: pass
+        except Exception as e: pass
         return str(meta)
     def _html_style(self, style):
         """ accepts adapter objects with .html_style() and .xml_style() """
         ee = None
         try:   return style.html_style()
-        except Exception, e: ee = e; pass
+        except Exception as e: ee = e; pass
         try:   return style.xml_style()
-        except Exception, e: print "HtmlDocument/style", ee, e; pass
+        except Exception as e: print("HtmlDocument/style", ee, e); pass
         try:   return str(style)
-        except Exception, e: print "HtmlDocument/style", e; return ""
+        except Exception as e: print("HtmlDocument/style", e); return ""
     def _html_text(self, html):
         """ accepts adapter objects with .html_text() and .xml_text() """
         ee = None
         try:   return html.html_text()
-        except Exception, e: ee = e; pass
+        except Exception as e: ee = e; pass
         try:   return html.xml_text()
-        except Exception, e: print "HtmlDocument/text", ee, e; pass
+        except Exception as e: print("HtmlDocument/text", ee, e); pass
         try:   return str(html)
-        except Exception, e: print "HtmlDocument/text", e; return "&nbsp;"
+        except Exception as e: print("HtmlDocument/text", e); return "&nbsp;"
     def navigation(self):
         if self.navi:
             return self.navi
@@ -63,7 +63,7 @@
                 self.navi = fd.read()
                 fd.close()
                 return self.navi
-            except Exception, e:
+            except Exception as e:
                 pass
         return None
     def html_header(self):
@@ -103,15 +103,15 @@
         return filename
     def save(self, filename = None):
         filename = self._filename(filename)
-        print "writing '"+filename+"'"
+        print("writing '"+filename+"'")
         try:
             fd = open(filename, "w")
-            print >>fd, self.html_header()
+            print(self.html_header(), file=fd)
             for text in self.text:
-                print >>fd, self._html_text(text)
-            print >>fd, self.html_footer()
+                print(self._html_text(text), file=fd)
+            print(self.html_footer(), file=fd)
             fd.close()
             return True
-        except IOError, e:
-            print "could not open '"+filename+"'file", e
+        except IOError as e:
+            print("could not open '"+filename+"'file", e)
             return False
diff -ruN zziplib-0.13.62-orig/docs/zzipdoc/match.py zziplib-0.13.62/docs/zzipdoc/match.py
--- zziplib-0.13.62-orig/docs/zzipdoc/match.py	2009-08-23 06:38:21.000000000 -0500
+++ zziplib-0.13.62/docs/zzipdoc/match.py	2023-01-16 11:03:58.000000000 -0600
@@ -5,6 +5,11 @@
 
 import re
 
+try:
+    basestring
+except NameError:
+    basestring = str
+
 # ---------------------------------------------------------- Regex Match()
 # beware, stupid python interprets backslashes in replace-parts only partially!
 class MatchReplace:
@@ -48,7 +53,7 @@
     def __rlshift__(self, count):
         self.count = count ; return self
 
-class Match(str):
+class Match:
     """ A Match is actually a mix of a Python Pattern and MatchObject """
     def __init__(self, pattern = None, flags = None):
         """ flags is a string: 'i' for case-insensitive etc.; it is just
@@ -57,7 +62,6 @@
     def __call__(self, pattern, flags = None):
         assert isinstance(pattern, str) or pattern is None
         assert isinstance(flags, str) or flags is None
-        str.__init__(self, pattern)
         self.replaced = 0 # set by subn() inside MatchReplace
         self.found = None # set by search() to a MatchObject
         self.pattern = pattern
@@ -67,6 +71,8 @@
             else:
                 self.regex = re.compile(self.pattern)
         return self
+    def __repr__(self):
+        return self.pattern
     def __truth__(self):
         return self.found is not None
     def __and__(self, string):
@@ -90,14 +96,14 @@
 if __name__ == "__main__":
     # matching:
     if "foo" & Match("oo"):
-        print "oo"
+        print("oo")
     x = Match()
     if "foo" & x("(o+)"):
-        print x[1]
+        print(x[1])
     # replacing:
     y = "fooboo" & Match("oo") >> "ee"
-    print y
+    print(y)
     r = Match("oo") >> "ee"
-    print "fooboo" & r
+    print("fooboo" & r)
     s = MatchReplace("oo", "ee")
-    print "fooboo" & s
+    print("fooboo" & s)
diff -ruN zziplib-0.13.62-orig/docs/zzipdoc/options.py zziplib-0.13.62/docs/zzipdoc/options.py
--- zziplib-0.13.62-orig/docs/zzipdoc/options.py	2009-08-23 06:38:21.000000000 -0500
+++ zziplib-0.13.62/docs/zzipdoc/options.py	2023-01-16 11:24:16.000000000 -0600
@@ -1,15 +1,15 @@
-#! /usr/bin/python
+#! /usr/bin/python3
 # -*- coding: utf-8 -*-
 # @creator (C) 2003 Guido U. Draheim
 # @license http://creativecommons.org/licenses/by-nc-sa/2.0/de/
 
-from match import Match
+from zzipdoc.match import Match
 
 # use as o.optionname to check for commandline options.
 class Options:
     var = {}
     def __getattr__(self, name):
-        if not self.var.has_key(name): return None
+        if not name in self.var: return None
         return self.var[name]
     def __setattr__(self, name, value):
         self.var[name] = value
diff -ruN zziplib-0.13.62-orig/docs/zzipdoc/textfile.py zziplib-0.13.62/docs/zzipdoc/textfile.py
--- zziplib-0.13.62-orig/docs/zzipdoc/textfile.py	2009-08-23 06:38:21.000000000 -0500
+++ zziplib-0.13.62/docs/zzipdoc/textfile.py	2023-01-16 10:41:31.000000000 -0600
@@ -17,7 +17,7 @@
             self.src_text = fd.read()
             fd.close()
             return True
-        except IOError, e:
+        except IOError as e:
             pass
         return False
     def assert_src_text(self):
diff -ruN zziplib-0.13.62-orig/docs/zzipdoc/textfileheader.py zziplib-0.13.62/docs/zzipdoc/textfileheader.py
--- zziplib-0.13.62-orig/docs/zzipdoc/textfileheader.py	2009-08-23 06:38:21.000000000 -0500
+++ zziplib-0.13.62/docs/zzipdoc/textfileheader.py	2023-01-16 10:43:34.000000000 -0600
@@ -1,4 +1,4 @@
-from match import Match
+from zzipdoc.match import Match
 
 class TextFileHeader:
     """ scan for a comment block at the source file start and fill the
@@ -17,7 +17,7 @@
         x = Match()
         text = self.textfile.get_src_text()
         if not text:
-            print "nonexistant file:", self.textfile.get_filename()
+            print("nonexistant file:", self.textfile.get_filename())
             return False
         if text & x(r"(?s)[/][*]+(\s(?:.(?!\*\/))*.)\*\/"
                     r"(?:\s*\#(?:define|ifdef|endif)[ ]*\S*[ ]*\S*)*"
