- from getopt import getopt, GetoptError
-
- try:
- options, arguments = getopt(sys.argv[1:], "0osw:",
- ["null", "old", "spaces", "width="])
- except GetoptError:
- usage(1)
-
- print0 = False
- old = False
- spaces = ''
- width = None
-
- for option, value in options:
- if option in ("-h", "--help"):
- usage()
- elif option in ("-0", "--null"):
- print0 = True
- elif option in ("-o", "--old"):
- old = True
- elif option in ("-s", "--spaces"):
- spaces = ' '
- elif option in ("-w", "--width"):
- width = int(value)
- else:
- usage(2)
-
- if arguments:
- if width is not None:
- usage(3)
- elif len(arguments) > 1:
- usage(4)
- else:
- width = int(arguments[0])
-
- return print0, old, spaces, width
-
-print0, old, spaces, width = get_args()
-
-
-xsetbg_dir = os.path.join(os.environ["HOME"], "lib", "xsetbg")
-os.chdir(xsetbg_dir)
-
-global_db_name = "xsetbg.db"
-filename_key = "filename"
-old_filename_key = "old_filename"
-
-
-global_db = shelve.open(global_db_name, flag='r')
-if old:
- key = old_filename_key
-else:
- key = filename_key
-filename = global_db[key]
-global_db.close()
-
-
-if width:
- lines = []
- while filename:
- lines.append("%s%s%s" % (spaces, filename[:width], spaces))
- filename = filename[width:]
- filename = "\n".join(lines)
-else:
- filename = "%s%s%s" % (spaces, filename, spaces)
-
-
-sys.stdout.write(filename)
-
-if print0:
- sys.stdout.write('\0')
-else:
- print
+ from getopt import getopt, GetoptError
+
+ try:
+ options, arguments = getopt(sys.argv[1:], "he:",
+ ["help", "output-encoding="])
+ except GetoptError:
+ usage(1)
+
+ index = 0
+ output_encoding = None
+
+ for option, value in options:
+ if option in ("-h", "--help"):
+ usage()
+ elif option in ("-e", "--output-encoding"):
+ output_encoding = value
+ else:
+ usage(2)
+
+ if arguments:
+ if len(arguments) == 1:
+ try:
+ index = int(arguments[0])
+ except ValueError:
+ usage(3)
+ else:
+ usage(4)
+
+ if output_encoding is None:
+ from m_lib.defenc import default_encoding
+ output_encoding = default_encoding
+ return index, output_encoding
+
+index, output_encoding = get_args()
+
+filename = xsetbg_db.select('last_shown IS NOT NULL',
+ orderBy='-last_shown')[index].full_name
+
+print filename.encode(output_encoding)