The patch looks good. ----- "Radek Vykydal" <rvykydal@xxxxxxxxxx> wrote: > I came across the issue while trying to use them for mdadm testing. > There is no BZ for it, we don't use the functions in the exception > raising way in the code now (and it is unlikely that we will). > But i needed to fix it for my purposes anyway, so here's the patch. > > We was mixing file descriptors and file objects, so that exception > would be > thrown if default arguments for stdin, stderr, and stdout were used > (which is > not in the code now). They were defined as file descriptors while we > were > using them as file objects in execWithCapture and execWithRedirect. > In > execWithPulseProgress they were used in a very mixed way. > --- > iutil.py | 20 +++++++------------- > 1 files changed, 7 insertions(+), 13 deletions(-) > > diff --git a/iutil.py b/iutil.py > index f13956f..2f13630 100644 > --- a/iutil.py > +++ b/iutil.py > @@ -40,7 +40,7 @@ log = logging.getLogger("anaconda") > # @param searchPath Should command be searched for in $PATH? > # @param root The directory to chroot to before running command. > # @return The return code of command. > -def execWithRedirect(command, argv, stdin = 0, stdout = 1, stderr = > 2, > +def execWithRedirect(command, argv, stdin = sys.stdin, stdout = > sys.stdout, stderr = sys.stderr, > searchPath = 0, root = '/'): > def chroot (): > os.chroot(root) > @@ -52,8 +52,6 @@ def execWithRedirect(command, argv, stdin = 0, > stdout = 1, stderr = 2, > if type(stdin) == type("string"): > if os.access(stdin, os.R_OK): > stdin = open(stdin) > - else: > - stdin = 0 > if type(stdout) == type("string"): > stdout = open(stdout, "w") > if type(stderr) == type("string"): > @@ -100,7 +98,7 @@ def execWithRedirect(command, argv, stdin = 0, > stdout = 1, stderr = 2, > # @param stderr The file descriptor to redirect stderr to. > # @param root The directory to chroot to before running command. > # @return The output of command from stdout. > -def execWithCapture(command, argv, stdin = 0, stderr = 2, root='/'): > +def execWithCapture(command, argv, stdin = sys.stdin, stderr = > sys.stderr, root='/'): > def chroot(): > os.chroot(root) > > @@ -142,7 +140,8 @@ def execWithCapture(command, argv, stdin = 0, > stderr = 2, root='/'): > > return rc > > -def execWithPulseProgress(command, argv, stdin = 0, stdout = 1, > stderr = 2, > +def execWithPulseProgress(command, argv, stdin = sys.stdin, stdout = > sys.stdout, stderr = > + sys.stderr, > progress = None, root = '/'): > def chroot(): > os.chroot(root) > @@ -151,8 +150,6 @@ def execWithPulseProgress(command, argv, stdin = > 0, stdout = 1, stderr = 2, > if type(stdin) == type("string"): > if os.access(stdin, os.R_OK): > stdin = open(stdin) > - else: > - stdin = 0 > if type(stdout) == type("string"): > stdout = open(stdout, "w") > if type(stderr) == type("string"): > @@ -164,12 +161,9 @@ def execWithPulseProgress(command, argv, stdin = > 0, stdout = 1, stderr = 2, > childpid = os.fork() > if not childpid: > os.close(p[0]) > - os.dup2(p[1], 1) > - os.dup2(stderr.fileno(), 2) > - os.dup2(stdin, 0) > - os.close(stdin) > - os.close(p[1]) > - stderr.close() > + os.dup2(p[1], sys.stdout.fileno()) > + os.dup2(stderr.fileno(), sys.stderr.fileno()) > + os.dup2(stdin.fileno(), sys.stdin.fileno()) > > os.execvp(command, [command] + argv) > os._exit(1) > -- > 1.5.4.3 > > _______________________________________________ > Anaconda-devel-list mailing list > Anaconda-devel-list@xxxxxxxxxx > https://www.redhat.com/mailman/listinfo/anaconda-devel-list -- Joel Andres Granados Red Hat / Brno Czech Republic _______________________________________________ Anaconda-devel-list mailing list Anaconda-devel-list@xxxxxxxxxx https://www.redhat.com/mailman/listinfo/anaconda-devel-list