Changeset 4741 for lang/python

Show
Ignore:
Timestamp:
01/17/08 02:34:56 (5 years ago)
Author:
elim
Message:

lang/python/misc/woof: added zip support.

Files:
1 modified

Legend:

Unmodified
Added
Removed
  • lang/python/misc/woof

    r4740 r4741  
    3131maxdownloads = 1 
    3232cpid = -1 
    33 compressed = True 
     33compress_type_alist = {'tar.gz': 'tar czf - "$woof_file"', 
     34                       'tar'   : 'tar cf - "$woof_file"', 
     35                       'zip'   : 'zip -qr - "$woof_file"'} 
     36compress_type = 'tar.gz' 
    3437 
    3538 
     
    111114 
    112115   def do_GET (self): 
    113       global maxdownloads, cpid, compressed 
     116      global maxdownloads, cpid, compress_type 
    114117 
    115118      # Redirect any request to the filename of the file to serve. 
     
    119122      location = "/" + urllib.quote (os.path.basename (self.filename)) 
    120123      if os.path.isdir (self.filename): 
    121          if compressed: 
    122             location += ".tar.gz" 
    123          else: 
    124             location += ".tar" 
     124         location += ("." + compress_type) 
    125125 
    126126      if self.path != location: 
     
    157157         elif os.path.isdir (self.filename): 
    158158            os.environ['woof_dir'], os.environ['woof_file'] = os.path.split (self.filename) 
    159             if compressed: 
    160                arg = 'z' 
    161             else: 
    162                arg = '' 
    163             child = popen2.Popen3 ('cd "$woof_dir";tar c%sf - "$woof_file"' % arg) 
     159            cmdline = compress_type_alist[compress_type] 
     160            child = popen2.Popen3 ('cd "$woof_dir";%(cmdline)s' % locals()) 
    164161            datafile = child.fromchild 
    165162 
     
    220217   name = os.path.basename (sys.argv[0]) 
    221218   print >>sys.stderr, """ 
    222     Usage: %s [-i <ip_addr>] [-p <port>] [-c <count>] [-u] <file/dir> 
    223            %s [-i <ip_addr>] [-p <port>] [-c <count>] [-u] -s 
     219    Usage: %s [-i <ip_addr>] [-p <port>] [-c <count>] [-u <suffix>] <file/dir> 
     220           %s [-i <ip_addr>] [-p <port>] [-c <count>] [-u <suffix>] -s 
    224221    
    225222    Serves a single file <count> times via http on port <port> on IP 
     
    242239        count = 2 
    243240        ip = 127.0.0.1 
    244         compressed = true 
     241        compress_type = 'tar.gz' 
    245242   """ % (name, name, name, defmaxdown, defport) 
    246243   if errmsg: 
     
    250247 
    251248 
    252  
    253249def main (): 
    254    global cpid, compressed 
     250   global cpid, compress_type 
    255251 
    256252   maxdown = 1 
     
    270266      ip_addr = config.get ('main', 'ip') 
    271267 
    272    if config.has_option ('main', 'compressed'): 
    273       compressed = config.getboolean ('main', 'compressed') 
     268   if config.has_option ('main', 'compress_type'): 
     269      compress_type = config.get ('main', 'compress_type') 
    274270 
    275271   defaultport = port 
     
    277273 
    278274   try: 
    279       options, filenames = getopt.getopt (sys.argv[1:], "hsui:c:p:") 
     275      options, filenames = getopt.getopt (sys.argv[1:], "hsu:i:c:p:") 
    280276   except getopt.GetoptError, desc: 
    281277      usage (defaultport, defaultmaxdown, desc) 
     
    309305 
    310306      elif option == '-u': 
    311          compressed = False 
    312  
     307         if val[0] == ".": 
     308            val = val[1:] 
     309         try: 
     310            compress_type = val 
     311            compress_type_alist[compress_type] 
     312         except KeyError: 
     313            usage (defaultport, defaultmaxdown,  
     314                   "acceptable suffix is: %s" % compress_type_alist.keys()) 
    313315      else: 
    314316         usage (defaultport, defaultmaxdown, "Unknown option: %r" % option) 
     
    345347   except KeyboardInterrupt: 
    346348      pass 
    347