home *** CD-ROM | disk | FTP | other *** search
- # Source Generated with Decompyle++
- # File: in.pyc (Python 2.6)
-
- from __future__ import with_statement
- __license__ = 'GPL v3'
- __copyright__ = '2009, Kovid Goyal <kovid@kovidgoyal.net>'
- __docformat__ = 'restructuredtext en'
- import sys
- import os
- import cPickle
- from calibre.constants import isnewosx
- 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"
- DEST_PATH = '/usr/bin'
-
- def create_symlinks():
- if isnewosx:
- return create_symlinks_new()
- return create_symlinks_old()
-
-
- def get_scripts():
- return cPickle.load(open(P('scripts.pickle'), 'rb'))
-
-
- def create_symlinks_new():
- scripts = get_scripts()
- links = [ os.path.join(DEST_PATH, i) for i in scripts ]
- scripts = [ _[2](os.path.join if scripts[i] == 'gui' else sys.console_binaries_path, i) for i in scripts ]
- return do_it(scripts, links)
-
-
- def create_symlinks_old():
- scripts = get_scripts()
- resources_path = os.environ['RESOURCEPATH']
- links = [ os.path.join(DEST_PATH, i) for i in scripts ]
- scripts = [ os.path.join(resources_path, 'loaders', i) for i in scripts ]
- return do_it(scripts, links)
-
-
- def do_it(scripts, links):
- import os
- import tempfile
- import traceback
- Authorization = Authorization
- kAuthorizationFlagDestroyRights = kAuthorizationFlagDestroyRights
- import Authorization
- r1 = DEST_PATH
- r2 = links
- bad = False
- for s, l in zip(scripts, links):
- if os.path.exists(l) and os.path.exists(os.path.realpath(l)):
- continue
-
- bad = True
-
- if bad:
- ph = os.environ.get('PYTHONHOME', None)
- pp = os.environ.get('PYTHONPATH', None)
- auth = Authorization(destroyflags = (kAuthorizationFlagDestroyRights,))
- (fd, name) = tempfile.mkstemp('.py')
- os.write(fd, AUTHTOOL % (repr(scripts), repr(links)))
- os.close(fd)
- os.chmod(name, 448)
-
- try:
- if pp:
- del os.environ['PYTHONPATH']
-
- if ph:
- del os.environ['PYTHONHOME']
-
- pipe = auth.executeWithPrivileges(name)
- sys.stdout.write(pipe.read())
- pipe.close()
- except:
- r1 = None
- r2 = traceback.format_exc()
- finally:
- os.unlink(name)
- if pp:
- os.environ['PYTHONPATH'] = pp
-
- if ph:
- os.environ['PYTHONHOME'] = ph
-
-
-
- return (r1, r2)
-
-