# Utility functions
-# Copyright (C) 2000 James Troup <james@nocrew.org>
-# $Id: utils.py,v 1.26 2001-06-10 16:35:03 troup Exp $
+# Copyright (C) 2000, 2001 James Troup <james@nocrew.org>
+# $Id: utils.py,v 1.30 2001-07-25 15:51:15 troup Exp $
# This program is free software; you can redistribute it and/or modify
# it under the terms of the GNU General Public License as published by
file_exists_exc = "Destination file exists";
send_mail_invalid_args_exc = "Both arguments are non-null.";
sendmail_failed_exc = "Sendmail invocation failed";
+tried_too_hard_exc = "Tried too hard to find a free filename.";
# Valid components; used by extract_component_from_section() because
# it doesn't know about Conf from it's caller. FIXME
######################################################################################
-def open_file(filename, mode):
+def open_file(filename, mode='r'):
try:
f = open(filename, mode);
except IOError:
if format != "":
format = float(format)
if dsc == "" and (format < 1.5 or format > 2.0):
- raise nk_format_exc, changes["format"];
+ raise nk_format_exc, format;
# No really, this has happened. Think 0 length .dsc file.
if not changes.has_key("files"):
def changes_compare (a, b):
try:
a_changes = parse_changes(a, 0)
- except changes_parse_error_exc, line:
+ except:
return -1;
try:
b_changes = parse_changes(b, 0)
- except changes_parse_error_exc, line:
+ except:
return 1;
cc_fix_changes (a_changes);
return cmp(a, b);
################################################################################
+
+def find_next_free (dest, too_many=100):
+ extra = 0;
+ orig_dest = dest;
+ while os.path.exists(dest) and extra < too_many:
+ dest = orig_dest + '.' + repr(extra);
+ extra = extra + 1;
+ if extra >= too_many:
+ raise tried_too_hard_exc;
+ return dest;
+
+################################################################################