home *** CD-ROM | disk | FTP | other *** search
/ Maximum CD 2010 November / maximum-cd-2010-11.iso / DiscContents / calibre-0.7.13.msi / file_1416 (.txt) < prev    next >
Encoding:
Python Compiled Bytecode  |  2010-08-06  |  3.2 KB  |  90 lines

  1. # Source Generated with Decompyle++
  2. # File: in.pyc (Python 2.6)
  3.  
  4. from __future__ import with_statement
  5. __license__ = 'GPL v3'
  6. __copyright__ = '2009, Kovid Goyal <kovid@kovidgoyal.net>'
  7. __docformat__ = 'restructuredtext en'
  8. import sys
  9. import os
  10. import cPickle
  11. from calibre.constants import isnewosx
  12. AUTHTOOL = "#!/usr/bin/python\nimport os\nscripts = %s\nlinks = %s\nos.setuid(0)\nfor s, l in zip(scripts, links):\n    try:\n        os.remove(l)\n    except:\n        pass\n    print 'Creating link:', l, '->', s\n    omask = os.umask(022)\n    os.symlink(s, l)\n    os.umask(omask)\n"
  13. DEST_PATH = '/usr/bin'
  14.  
  15. def create_symlinks():
  16.     if isnewosx:
  17.         return create_symlinks_new()
  18.     return create_symlinks_old()
  19.  
  20.  
  21. def get_scripts():
  22.     return cPickle.load(open(P('scripts.pickle'), 'rb'))
  23.  
  24.  
  25. def create_symlinks_new():
  26.     scripts = get_scripts()
  27.     links = [ os.path.join(DEST_PATH, i) for i in scripts ]
  28.     scripts = [ _[2](os.path.join if scripts[i] == 'gui' else sys.console_binaries_path, i) for i in scripts ]
  29.     return do_it(scripts, links)
  30.  
  31.  
  32. def create_symlinks_old():
  33.     scripts = get_scripts()
  34.     resources_path = os.environ['RESOURCEPATH']
  35.     links = [ os.path.join(DEST_PATH, i) for i in scripts ]
  36.     scripts = [ os.path.join(resources_path, 'loaders', i) for i in scripts ]
  37.     return do_it(scripts, links)
  38.  
  39.  
  40. def do_it(scripts, links):
  41.     import os
  42.     import tempfile
  43.     import traceback
  44.     Authorization = Authorization
  45.     kAuthorizationFlagDestroyRights = kAuthorizationFlagDestroyRights
  46.     import Authorization
  47.     r1 = DEST_PATH
  48.     r2 = links
  49.     bad = False
  50.     for s, l in zip(scripts, links):
  51.         if os.path.exists(l) and os.path.exists(os.path.realpath(l)):
  52.             continue
  53.         
  54.         bad = True
  55.     
  56.     if bad:
  57.         ph = os.environ.get('PYTHONHOME', None)
  58.         pp = os.environ.get('PYTHONPATH', None)
  59.         auth = Authorization(destroyflags = (kAuthorizationFlagDestroyRights,))
  60.         (fd, name) = tempfile.mkstemp('.py')
  61.         os.write(fd, AUTHTOOL % (repr(scripts), repr(links)))
  62.         os.close(fd)
  63.         os.chmod(name, 448)
  64.         
  65.         try:
  66.             if pp:
  67.                 del os.environ['PYTHONPATH']
  68.             
  69.             if ph:
  70.                 del os.environ['PYTHONHOME']
  71.             
  72.             pipe = auth.executeWithPrivileges(name)
  73.             sys.stdout.write(pipe.read())
  74.             pipe.close()
  75.         except:
  76.             r1 = None
  77.             r2 = traceback.format_exc()
  78.         finally:
  79.             os.unlink(name)
  80.             if pp:
  81.                 os.environ['PYTHONPATH'] = pp
  82.             
  83.             if ph:
  84.                 os.environ['PYTHONHOME'] = ph
  85.             
  86.  
  87.     
  88.     return (r1, r2)
  89.  
  90.