home *** CD-ROM | disk | FTP | other *** search
- # Source Generated with Decompyle++
- # File: in.pyc (Python 2.6)
-
- __license__ = 'GPL v3'
- __copyright__ = '2010, Kovid Goyal <kovid@kovidgoyal.net>'
- __docformat__ = 'restructuredtext en'
- import os
- import sys
- from threading import Thread
- from calibre.library.server import server_config as config
- from calibre.library.server.base import LibraryServer
- from calibre.constants import iswindows
- import cherrypy
-
- def start_threaded_server(db, opts):
- server = LibraryServer(db, opts, embedded = True)
- server.thread = Thread(target = server.start)
- server.thread.setDaemon(True)
- server.thread.start()
- return server
-
-
- def stop_threaded_server(server):
- server.exit()
- server.thread = None
-
-
- def option_parser():
- parser = config().option_parser('%prog ' + _('[options]\n\nStart the calibre content server.'))
- parser.add_option('--with-library', default = None, help = _('Path to the library folder to serve with the content server'))
- parser.add_option('--pidfile', default = None, help = _('Write process PID to the specified file'))
- parser.add_option('--daemonize', default = False, action = 'store_true', help = 'Run process in background as a daemon. No effect on windows.')
- return parser
-
-
- def daemonize(stdin = '/dev/null', stdout = '/dev/null', stderr = '/dev/null'):
-
- try:
- pid = os.fork()
- if pid > 0:
- sys.exit(0)
- except OSError:
- e = None
- print >>sys.stderr, 'fork #1 failed: %d (%s)' % (e.errno, e.strerror)
- sys.exit(1)
-
- os.chdir('/')
- os.setsid()
- os.umask(0)
-
- try:
- pid = os.fork()
- if pid > 0:
- sys.exit(0)
- except OSError:
- e = None
- print >>sys.stderr, 'fork #2 failed: %d (%s)' % (e.errno, e.strerror)
- sys.exit(1)
-
- si = file(stdin, 'r')
- so = file(stdout, 'a+')
- se = file(stderr, 'a+', 0)
- os.dup2(si.fileno(), sys.stdin.fileno())
- os.dup2(so.fileno(), sys.stdout.fileno())
- os.dup2(se.fileno(), sys.stderr.fileno())
-
-
- def main(args = sys.argv):
- LibraryDatabase2 = LibraryDatabase2
- import calibre.library.database2
- parser = option_parser()
- (opts, args) = parser.parse_args(args)
- if opts.daemonize and not iswindows:
- daemonize()
-
- cherrypy.log.screen = True
- prefs = prefs
- import calibre.utils.config
- if opts.with_library is None:
- opts.with_library = prefs['library_path']
-
- db = LibraryDatabase2(opts.with_library)
- server = LibraryServer(db, opts)
- server.start()
- return 0
-
- if __name__ == '__main__':
- sys.exit(main())
-
-