diff options
| author | cotton | 1998-10-10 14:08:14 +0000 |
|---|---|---|
| committer | cotton | 1998-10-10 14:08:14 +0000 |
| commit | 989b9c54b07ad980a3c739031e8cd3d8111ac1d2 (patch) | |
| tree | 221dbce84053cd6dd4a2bc52c4c7e07a58193f2b /Mailman/MailList.py | |
| parent | 6e8ee9b401914670e25caeaadfdd6037b19e44ae (diff) | |
| download | mailman-989b9c54b07ad980a3c739031e8cd3d8111ac1d2.tar.gz mailman-989b9c54b07ad980a3c739031e8cd3d8111ac1d2.tar.zst mailman-989b9c54b07ad980a3c739031e8cd3d8111ac1d2.zip | |
made the list.Save() function attempt to create the archive directory if
it doesn't already exist.
Although the Archiver already does this, it was annoying to have lots
of error messages spit out from convert_list when there were no
existing archives. I think it makes sense to let the creation of the
archive directory take place in both list.Save and the archive class
in HyperArch.py since the directory may need to be created either when
the archiver runs or when the list is saved.
scott
Diffstat (limited to 'Mailman/MailList.py')
| -rw-r--r-- | Mailman/MailList.py | 26 |
1 files changed, 23 insertions, 3 deletions
diff --git a/Mailman/MailList.py b/Mailman/MailList.py index 6f686717c..5f05b9e82 100644 --- a/Mailman/MailList.py +++ b/Mailman/MailList.py @@ -575,9 +575,29 @@ class MailList(MailCommandHandler, HTMLFormatter, Deliverer, ListAdmin, try: st = os.stat(self.archive_directory) except os.error, rest: - sys.stderr.write("MailList.Save(): error getting archive mode " - "for %s!: %s\n" % (self.real_name, str(rest))) - return + import errno + try: + val, msg = rest + except ValueError: + sys.stderr.write("MailList.Save(): error getting archive mode " + "for %s!: %s\n" % (self.real_name, str(rest))) + return + if val == errno.ENOENT: # no such file + ou = os.umask(0) + if self.archive_private: + mode = 0770 + else: + mode = 0775 + try: + os.mkdir(self.archive_directory) + os.chmod(self.archive_directory, mode) + finally: + os.umask(ou) + return + else: + sys.stderr.write("MailList.Save(): error getting archive mode " + "for %s!: %s\n" % (self.real_name, str(rest))) + return import stat mode = st[stat.ST_MODE] if self.archive_private: |
