--- /dev/null
+#!@PYTHON@
+
+#
+# flower.py -- python flower lib
+#
+# source file of the GNU LilyPond music typesetter
+#
+# (c) 1997 Han-Wen Nienhuys <hanwen@stack.nl>
+#
+
+import sys
+from string import *
+
+class File:
+ """silly wrapper for Python file object."""
+ def __init__ (self,nm, mode='r'):
+ if nm:
+ self.file_ = open (nm, mode);
+ elif mode == 'w':
+ self.file_ = sys.stdout
+ else:
+ self.file_ = sys.stdin
+
+ self.eof_ = 0;
+ def readline (self):
+ l= self.file_.readline ();
+ if not l:
+ self.eof_ = 1;
+ return l;
+ def write (self, str):
+ self.file_.write (str)
+ def eof (self):
+ return self.eof_
+ def close (self):
+ self.file_.close ()
+ def __del__ (self):
+ self.close ();
+
+
+
+import fnmatch
+import os
+
+_debug = 0
+
+_prune = ['(*)']
+
+
+def my_find(patterns, dir = os.curdir):
+ list = []
+ names = os.listdir(dir)
+ names.sort()
+ for name in names:
+ if name in (os.curdir, os.pardir):
+ continue
+ fullname = os.path.join(dir, name)
+ for pat in patterns:
+ if fnmatch.fnmatch(name, pat):
+ list.append(fullname)
+ if os.path.isdir(fullname) and not os.path.islink(fullname):
+ for p in _prune:
+ if fnmatch.fnmatch(name, p):
+ if _debug: print "skip", `fullname`
+ break
+ else:
+ if _debug: print "descend into", `fullname`
+ found = my_find(patterns, fullname)
+ if found:
+ list = list + found
+ return list
+
+
+def multiple_find(pats, dirnames):
+ from find import find
+ l = []
+ for d in dirnames:
+ l = l + my_find(pats, d)
+ return l
+
+def file_exist_b(name):
+ try:
+ f = open(name)
+ except IOError:
+ return 0
+ f.close ()
+ return 1
+