#!/usr/bin/python
# Copyright 1999-2004 Gentoo Foundation
# Distributed under the terms of the GNU General Public License v2
# $Id: /var/cvsroot/gentoo-src/portage/bin/dopython,v 1.8 2004/10/04 13:56:50 vapier Exp $

import sys
sys.path = ["/usr/lib/portage/pym"]+sys.path

from sys import *
import portage
import types
mycommand=argv[1]+"("
x=2
while (x<len(argv)):
	if x==(len(argv)-1):
		mycommand=mycommand+'"'+argv[x]+'"'
	else:
		mycommand=mycommand+'"'+argv[x]+'",'
	x=x+1
mycommand=mycommand+")"
exec("myresult="+mycommand)
if type(myresult)==types.IntType:
	exit(myresult)
