qmail-valid-addresses: Cope with missing files.
authorMark Wooding <mdw@distorted.org.uk>
Thu, 6 Oct 2005 12:40:30 +0000 (12:40 +0000)
committerMark Wooding <mdw@distorted.org.uk>
Tue, 14 Feb 2006 03:08:01 +0000 (03:08 +0000)
It's not an error for the virtualdomains or locals files to be missing,
so cope if we can't find them.

qmail-valid-addresses

index b77be52..9821394 100644 (file)
@@ -2,6 +2,7 @@
 
 import os
 import cdb
+from errno import *
 
 def sort(l):
   l = [] + l
@@ -66,16 +67,27 @@ for k in sort(umap.keys()):
   else:
     addlocal(os.path.join(u.home, qm), u.name, u.dash == '')
 
-for dom in open('control/locals'):
-  if len(dom) and dom[-1] == '\n':
-    dom = dom[:-1]
-  map['@' + dom] = ''
+me = open('control/me').readline()
 
-for v in open('control/virtualdomains'):
-  if len(v) and v[-1] == '\n':
-    v = v[:-1]
-  (addr, pre) = v.split(':', 2)
-  map['V' + addr] = pre
+try:
+  for dom in open('control/locals'):
+    if len(dom) and dom[-1] == '\n':
+      dom = dom[:-1]
+    map['@' + dom] = ''
+except IOError, exc:
+  if exc.errno != ENOENT:
+    raise
+  map['@' + me] = ''
+
+try:
+  for v in open('control/virtualdomains'):
+    if len(v) and v[-1] == '\n':
+      v = v[:-1]
+    (addr, pre) = v.split(':', 2)
+    map['V' + addr] = pre
+except IOError, exc:
+  if exc.errno != ENOENT:
+    raise
 
 for l in sort(map.keys()):
   print '%s:%s' % (l, map[l])