#! /usr/bin/env python
-
"""ObexFTP Virtual FileSystem for Midnight Commander
Manipulate a cell phone's filesystem calling obexftp binary. This is a complete
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 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.
-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.
+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
"""
-__version__ = "1.3.0"
-__revision__ = "$Id$"
-__date__ = "$Date$"[7:-2]
+__version__ = "1.4.0"
__author__ = "Oleg Broytman <phd@phdru.name>"
-__copyright__ = "Copyright (C) 2004-2010 PhiloSoft Design"
+__copyright__ = "Copyright (C) 2004-2013 PhiloSoft Design"
__license__ = "GPL"
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')
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)
logger.addHandler(logging.FileHandler(logfile_name))
locale.setlocale(locale.LC_ALL, '')
-charset = locale.getpreferredencoding()
# Parse ObexFTP XML directory listings
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