aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorJonathan McCrohan <jmccrohan@gmail.com>2013-08-03 01:23:32 +0100
committerJonathan McCrohan <jmccrohan@gmail.com>2013-08-03 01:23:32 +0100
commit7cd90128add168a27fc6e9b93756fbc0a3c65f8f (patch)
treed25bc85d47685b84f895ae86774c830eae59fe40
parent322091b9506126cd06ecd3ba95aa73e3099f12d8 (diff)
downloadtransmission-remote-cli-7cd90128add168a27fc6e9b93756fbc0a3c65f8f.tar.gz
Imported Upstream version 1.6.1upstream/1.6.1
-rw-r--r--NEWS6
-rw-r--r--completion/bash/transmission-remote-cli-bash-completion.sh (renamed from transmission-remote-cli-bash-completion.sh)4
-rwxr-xr-xtransmission-remote-cli34
3 files changed, 30 insertions, 14 deletions
diff --git a/NEWS b/NEWS
index e9cbc6c..a783ba5 100644
--- a/NEWS
+++ b/NEWS
@@ -1,3 +1,9 @@
+1.6.1 2013-07-26
+ BUGFIXES:
+ - Tab-complete files with regex characters ([,],?,*,...)
+ - Support for Transmission version 2.81
+
+
1.6.0 2013-06-28
BUGFIXES:
- Fix timestamps after year 2038 on 32-bit systems
diff --git a/transmission-remote-cli-bash-completion.sh b/completion/bash/transmission-remote-cli-bash-completion.sh
index 53e7f36..1a0e30b 100644
--- a/transmission-remote-cli-bash-completion.sh
+++ b/completion/bash/transmission-remote-cli-bash-completion.sh
@@ -1,4 +1,4 @@
-#!/bin/bash
+# bash completion for transmission-remote-cli(1) -*- shell-script -*-
_transmission-remote-cli () {
local cur prev opts
@@ -27,3 +27,5 @@ _transmission-remote-cli () {
}
complete -F _transmission-remote-cli transmission-remote-cli
+
+# ex: ts=4 sw=4 et filetype=sh
diff --git a/transmission-remote-cli b/transmission-remote-cli
index bbb3ea9..1dcce92 100755
--- a/transmission-remote-cli
+++ b/transmission-remote-cli
@@ -16,10 +16,10 @@
# http://www.gnu.org/licenses/gpl-3.0.txt #
########################################################################
-VERSION = '1.6.0'
+VERSION = '1.6.1'
TRNSM_VERSION_MIN = '1.90'
-TRNSM_VERSION_MAX = '2.80'
+TRNSM_VERSION_MAX = '2.81'
RPC_VERSION_MIN = 8
RPC_VERSION_MAX = 15
@@ -61,10 +61,11 @@ import curses.ascii
from textwrap import wrap
from subprocess import call, Popen
import netrc
-import glob
import operator
import urlparse
+locale.setlocale(locale.LC_ALL, '')
+ENCODING = locale.getpreferredencoding() or 'UTF-8'
# optional features provided by non-standard modules
features = {'dns':False, 'geoip':False, 'ipy':False}
@@ -865,9 +866,6 @@ class Interface:
self.compact_torrentlist = False # draw only one line for each torrent in compact mode
self.exit_now = False
- locale.setlocale(locale.LC_ALL, '')
- self.encoding = locale.getpreferredencoding() or 'UTF-8'
-
self.keybindings = {
ord('?'): self.call_list_key_bindings,
curses.KEY_F1: self.call_list_key_bindings,
@@ -990,7 +988,7 @@ class Interface:
curses.endwin()
def enc(self, text):
- return text.encode(self.encoding, 'replace')
+ return text.encode(ENCODING, 'replace')
def get_screen_size(self):
time.sleep(0.1) # prevents curses.error on rapid resizing
@@ -2788,6 +2786,8 @@ class Interface:
win = self.window(height, width, message=message)
win.keypad(True)
show_cursor()
+ if not isinstance(input, unicode):
+ input = unicode(input, ENCODING)
index = len(input)
while True:
# Cut the text into pages, each as long as the text field
@@ -2798,7 +2798,7 @@ class Interface:
color = (curses.color_pair(self.colors.id('dialog_important')) if self.highlight_dialog
else curses.color_pair(self.colors.id('dialog')))
- win.addstr(height - 2, 2, displaytext.ljust(textwidth), color)
+ win.addstr(height - 2, 2, self.enc(displaytext.ljust(textwidth)), color)
win.move(height - 2, displayindex + 2)
c = win.getch()
if c == 27 or c == curses.KEY_BREAK:
@@ -2834,15 +2834,23 @@ class Interface:
hide_cursor()
return input
elif c >= 32 and c < 127:
- input = input[:index] + chr(c) + (index < len(input) and input[index:] or '')
+ input = input[:index] + unicode(chr(c), ENCODING) + (index < len(input) and input[index:] or '')
index += 1
if on_change: on_change(input)
elif c == ord('\t') and tab_complete:
- possible_choices = glob.glob(tilde2homedir(input)+'*')
+ (dirname, filename) = os.path.split(tilde2homedir(input))
+ if not dirname:
+ dirname = unicode(os.getcwd())
+ try:
+ possible_choices = [ choice for choice in os.listdir(dirname)
+ if choice.startswith(filename) ]
+ except OSError:
+ continue;
if tab_complete == 'dirs':
- possible_choices = [ d for d in possible_choices if os.path.isdir(d) ]
+ possible_choices = [ d for d in possible_choices
+ if os.path.isdir(os.path.join(dirname, d)) ]
if(possible_choices):
- input = os.path.commonprefix(possible_choices)
+ input = os.path.join(dirname, os.path.commonprefix(possible_choices))
if len(possible_choices) == 1 and os.path.isdir(input) and input.endswith(os.sep) == False:
input += os.sep
input = homedir2tilde(input)
@@ -3308,7 +3316,7 @@ def ljust_columns(text, max_width, padchar=' '):
def len_columns(text):
""" Returns the amount of columns that <text> would occupy. """
if type(text) == type(str()):
- text = unicode(text)
+ text = unicode(text, ENCODING)
columns = 0
for character in text:
columns += 2 if unicodedata.east_asian_width(character) in ('W', 'F') else 1