diff options
Diffstat (limited to 'slime-0.11/helpers.py')
-rw-r--r-- | slime-0.11/helpers.py | 85 |
1 files changed, 85 insertions, 0 deletions
diff --git a/slime-0.11/helpers.py b/slime-0.11/helpers.py new file mode 100644 index 0000000..46a5e11 --- /dev/null +++ b/slime-0.11/helpers.py @@ -0,0 +1,85 @@ +import spawn, tempfile, time, os, FCNTL + +def run_pgp(path, username, password, options, files, stdin=""): + env = {} + for key in os.environ.keys(): + env[key] = os.environ[key] + env["PGPPASSFD"] = "0" + + if password: + stdin = password + "\n" + stdin + + args = options[:] + if username: + args.append("+myname=" + username) + args = args + files + + return spawn.run(path, stdin=stdin, args=args, env=env) + +def read_text_from_named_file(filename): + f = open(filename, "r") + text = f.read() + f.close() + return text + +def write_text_to_named_file(filename, text): + fd = os.open(filename, + FCNTL.O_WRONLY | FCNTL.O_CREAT | FCNTL.O_EXCL, 0600) + os.write(fd, text) + os.close(fd) + +def rfc822_date(): + mon = ["", "Jan", "Feb", "Mar", "Apr", "May", "Jun", + "Jul", "Aug", "Sep", "Oct", "Nov", "Dec"] + dow = ["Mon", "Tue", "Wed", "Thu", "Fri", "Sat", "Sun"] + + if time.daylight: + date = time.localtime(time.time()) + if time.altzone < 0: + tzsign = '+' + secs = -time.altzone + else: + tzsign = '-' + secs = time.altzone + tzhours = secs / (60*60) + tzmins = secs % (60*60) + else: + date = time.gmtime(time.time()) + tzsign = '+' + tzhours = 0 + tzmins = 0 + + return "%s, %2d %s %d %02d:%02d:%02d %c%02d%02d" % \ + (dow[date[6]], date[2], mon[date[1]], date[0], + date[3], date[4], date[5], tzsign, tzhours, tzmins) + +_name_to_folder_cache = {} + +def clear_name_to_folder_cache(): + global _name_to_folder_cache + _name_to_folder_cache = {} + +def find_folder_by_name(folder_name, folder): + global _name_to_folder_cache + if _name_to_folder_cache.has_key(folder_name): + return _name_to_folder_cache[folder_name] + return recursive_find_folder_by_name(folder_name, folder) + +def recursive_find_folder_by_name(folder_name, folder): + global _name_to_folder_cache + _name_to_folder_cache[repr(folder)] = folder + + if repr(folder) == folder_name: + return folder + was_open = folder.is_open() + if not was_open: + folder.open() + folder.rescan_subfolders() + f = None + for subfolder in folder.list_all_subfolders(): + f = recursive_find_folder_by_name(folder_name, subfolder) + if f: + break + if not was_open: + folder.close() + return f |