X-Git-Url: https://git.phdru.name/?p=extfs.d.git;a=blobdiff_plain;f=obexftp;h=c1c523c7d213de563328f1812ef3b94c183bc07c;hp=2f9cd9ac4faf5a7dd93cef2db896c2a88c881802;hb=b2b07db4559a9fb29a498bc9f5817812727d435d;hpb=9f125289144236833ae61fb3e6d63698f6d1b237 diff --git a/obexftp b/obexftp index 2f9cd9a..c1c523c 100755 --- a/obexftp +++ b/obexftp @@ -1,11 +1,6 @@ #! /usr/bin/env python - """ObexFTP Virtual FileSystem for Midnight Commander -Author: Oleg BroytMann . -Copyright (C) 2004-2007 PhiloSoft Design. -License: GPL. - Manipulate a cell phone's filesystem calling obexftp binary. This is a complete user-mode solution, no kernel modules required (unlike SieFS or such). The script implements all commands of Midnight Commander VFS, except for @@ -13,15 +8,19 @@ undocumented "run"; anyway there are no runnable files in cell phones. The script is written in Python because I I need to parse XML directory listings from obexftp, and Python is the best of all languages suited for the task ;). -The script requires Midnight Commander 3.1+ (http://www.ibiblio.org/mc/), -Python 2.3+ (http://www.python.org/), -OpenOBEX 1.0.1+ (http://openobex.sourceforge.net/) and -ObexFTP 0.10.4+ (http://triq.net/obexftp). +The script requires Midnight Commander 3.1+ +(http://www.midnight-commander.org/), Python 2.3+ (http://www.python.org/), +OpenOBEX 1.0.1+ (http://dev.zuckschwerdt.org/openobex/) and ObexFTP 0.10.4+ +(http://triq.net/obexftp). -Edit the script, and correct the the full path to the obexftp binary (see -obexftp_prog below). Put the script in the /usr/[local/][lib|share]/mc/extfs, -and add a line "obexftp" to the /usr/[local/][lib|share]/mc/extfs/extfs.ini. -Make the script executable. +Edit the script, and correct the full path to the obexftp binary (see +obexftp_prog below). For mc 4.7+ put the script in +$HOME/[.local/share/].mc/extfs.d. For older versions put it in +/usr/[local/][lib|share]/mc/extfs and add a line "obexftp" to the +/usr/[local/][lib|share]/mc/extfs/extfs.ini. Make the script executable. + +See detailed installation instructions at +http://phdru.name/Software/mc/INSTALL.html. Create somewhere a transport file. The transport file may have any name, and is expected to be a text file with at least one line defining the transport to @@ -36,6 +35,8 @@ and "channel" is the OBEX File Transfer channel; you can discover the address and the channel for your device by using commands like "hcitool scan" and "sdptool browse". +For the USB put the interface number: "usb interface". + For the TTY put the device name: "tty /dev/ttyUSB0". For the IrDA: just put "IrDA" in the file. @@ -66,22 +67,46 @@ named in $TMP environment variable. """ -__version__ = "1.2.4" -__revision__ = "$Id$" -__date__ = "$Date$"[7:-2] -__author__ = "Oleg Broytmann " -__copyright__ = "Copyright (C) 2004-2007 PhiloSoft Design" +__version__ = "1.4.0" +__author__ = "Oleg Broytman " +__copyright__ = "Copyright (C) 2004-2013 PhiloSoft Design" +__license__ = "GPL" # Change this to suite your needs -obexftp_prog = "/usr/local/obex/bin/obexftp" +obexftp_prog = "/usr/bin/obexftp" import sys, os, shutil from time import sleep -import xml.dom.minidom, locale +import xml.dom.minidom from tempfile import mkstemp, mkdtemp, _candidate_tempdir_list +try: + import locale + use_locale = True +except ImportError: + use_locale = False + +if use_locale: + # Get the default charset. + try: + lcAll = locale.getdefaultlocale() + except locale.Error, err: + print >>sys.stderr, "WARNING:", err + lcAll = [] + + if len(lcAll) == 2: + default_encoding = lcAll[1] + else: + try: + default_encoding = locale.getpreferredencoding() + except locale.Error, err: + print >>sys.stderr, "WARNING:", err + default_encoding = sys.getdefaultencoding() +else: + default_encoding = sys.getdefaultencoding() + import logging logger = logging.getLogger('obexftp-mcextfs') @@ -96,8 +121,8 @@ ObexFTP Virtual FileSystem for Midnight Commander version %s Author: %s %s -This is not a program. Put the script in /usr/[local/][lib|share]/mc/extfs. -For more information read the source!""", +This is not a program. Put the script in $HOME/[.local/share/].mc/extfs.d or +/usr/[local/][lib|share]/mc/extfs. For more information read the source!""", __version__, __author__, __copyright__ ) sys.exit(1) @@ -126,7 +151,6 @@ logger.removeHandler(log_err_handler) logger.addHandler(logging.FileHandler(logfile_name)) locale.setlocale(locale.LC_ALL, '') -charset = locale.getpreferredencoding() # Parse ObexFTP XML directory listings @@ -241,7 +265,7 @@ def recursive_list(directory='/'): for entry in directories + files: fullpath = "%s/%s" % (directory, entry.name) - fullpath = fullpath.encode(charset) + fullpath = fullpath.encode(default_encoding) if fullpath.startswith('//'): fullpath = fullpath[1:] print entry.perm, "1 user group", entry.size, entry.mtime, fullpath @@ -337,6 +361,12 @@ def setup_transport(): elif len(parts) > 3: transport_error("too many arguments for 'bluetooth' transport") return ' '.join(["-b", parts[1], "-B", parts[2]]) + elif transport == "usb": + if len(parts) < 2: + transport_error("not enough arguments for 'usb' transport") + elif len(parts) > 2: + transport_error("too many arguments for 'usb' transport") + return ' '.join(["-u", parts[1]]) elif transport == "tty": if len(parts) < 2: transport_error("not enough arguments for 'tty' transport")