| Index: native_client_sdk/src/tools/genhttpfs.py
|
| diff --git a/native_client_sdk/src/tools/genhttpfs.py b/native_client_sdk/src/tools/genhttpfs.py
|
| index b6c848b7ff2388f157da87aebc34edc782019f1d..4e9aa92007964edcfe75151c49ada97a3bf07a55 100755
|
| --- a/native_client_sdk/src/tools/genhttpfs.py
|
| +++ b/native_client_sdk/src/tools/genhttpfs.py
|
| @@ -3,23 +3,27 @@
|
| # Use of this source code is governed by a BSD-style license that can be
|
| # found in the LICENSE file.
|
|
|
| -# This scripts generates a manifest file for the MountHttp file system.
|
| -# Files and directory paths are specified on the command-line. The names
|
| -# with glob and directories are recursed to form a list of files.
|
| -#
|
| -# For each file, the mode bits, size and path relative to the CWD are written
|
| -# to the output file which is stdout by default.
|
| -#
|
| +"""This script generates a manifest file for nacl_io's HTTP file-system.
|
| +Files and directory paths are specified on the command-line. The names
|
| +with glob and directories are recursed to form a list of files.
|
| +
|
| +For each file, the mode bits, size and path relative to the CWD are written
|
| +to the output file which is stdout by default.
|
| +"""
|
|
|
| import glob
|
| import optparse
|
| import os
|
| import sys
|
| +import urllib
|
| +
|
| +class Error(Exception):
|
| + pass
|
|
|
|
|
| def main(argv):
|
| - parser = optparse.OptionParser(
|
| - usage='Usage: %prog [options] filename ...')
|
| + parser = optparse.OptionParser(description=__doc__,
|
| + usage='Usage: %prog [options] <filename>...')
|
| parser.add_option('-C', '--srcdir',
|
| help='Change directory.', dest='srcdir', default=None)
|
| parser.add_option('-o', '--output',
|
| @@ -39,12 +43,15 @@ def main(argv):
|
| if options.srcdir:
|
| os.chdir(options.srcdir)
|
|
|
| + if not args:
|
| + parser.error("One or more pathnames must be specified. See --help.")
|
| +
|
| # Generate a set of unique file names bases on the input globs
|
| fileset = set()
|
| for fileglob in args:
|
| filelist = glob.glob(fileglob)
|
| if not filelist:
|
| - raise RuntimeError('Could not find match for "%s".\n' % fileglob)
|
| + raise Error('Could not find match for "%s".\n' % fileglob)
|
| for filename in filelist:
|
| if os.path.isfile(filename):
|
| fileset |= set([filename])
|
| @@ -53,18 +60,19 @@ def main(argv):
|
| for root, _, files in os.walk(filename):
|
| fileset |= set([os.path.join(root, name) for name in files])
|
| continue
|
| - raise RuntimeError('Can not handle path "%s".\n' % filename)
|
| + raise Error('Can not handle path "%s".\n' % filename)
|
|
|
| cwd = os.path.abspath(os.getcwd())
|
| cwdlen = len(cwd)
|
| for filename in sorted(fileset):
|
| relname = os.path.abspath(filename)
|
| if cwd not in relname:
|
| - raise RuntimeError('%s is not relative to CWD %s.\n' % filename, cwd)
|
| + raise Error('%s is not relative to CWD %s.\n' % filename, cwd)
|
| relname = relname[cwdlen:]
|
| stat = os.stat(filename)
|
| mode = '-r--'
|
| - outfile.write('%s %d %s\n' % (mode, stat.st_size, relname))
|
| + name = urllib.quote(relname)
|
| + outfile.write('%s %d %s\n' % (mode, stat.st_size, name))
|
|
|
| return 0
|
|
|
| @@ -72,6 +80,6 @@ def main(argv):
|
| if __name__ == '__main__':
|
| try:
|
| sys.exit(main(sys.argv[1:]))
|
| - except OSError, e:
|
| + except Error, e:
|
| sys.stderr.write('%s: %s\n' % (os.path.basename(__file__), e))
|
| sys.exit(1)
|
|
|