1
From 245e3b5ef8341701d154df7a55dce9a290513006 Mon Sep 17 00:00:00 2001
2
From: Herbert Xu <herbert@gondor.apana.org.au>
3
Date: Sat, 12 May 2007 18:14:15 +1000
4
Subject: [PATCH] [REDIR] Size optimisations in redir.c
6
Add likely flag on REDIR_PUSH.
7
Remove sv check on REDIR_SAVEFD2 (it implies REDIR_PUSH).
8
Optimise NTOFD/NFROMFD same fd check.
11
src/redir.c | 23 ++++++++++++-----------
12
2 files changed, 13 insertions(+), 11 deletions(-)
14
diff --git a/ChangeLog b/ChangeLog
15
index bc1b94d..92fa1c1 100644
19
2007-05-12 Herbert Xu <herbert@gondor.apana.org.au>
21
* Fix redirect restore on closed file descriptors.
22
+ * Size optimisations in redir.c.
24
2007-05-06 Herbert Xu <herbert@gondor.apana.org.au>
26
diff --git a/src/redir.c b/src/redir.c
27
index d4d9c39..33dbc88 100644
30
@@ -119,7 +119,7 @@ redirect(union node *redir, int flags)
34
- if (flags & REDIR_PUSH) {
35
+ if (likely(flags & REDIR_PUSH)) {
37
q = ckmalloc(sizeof (struct redirtab));
39
@@ -132,12 +132,11 @@ redirect(union node *redir, int flags)
44
- if ((n->nfile.type == NTOFD || n->nfile.type == NFROMFD) &&
45
- n->ndup.dupfd == fd)
46
- continue; /* redirect from/to same file descriptor */
48
newfd = openredirect(n);
56
@@ -174,7 +173,7 @@ redirect(union node *redir, int flags)
60
- if (flags & REDIR_SAVEFD2 && sv && sv->renamed[2] >= 0)
61
+ if (flags & REDIR_SAVEFD2 && sv->renamed[2] >= 0)
62
preverrout.fd = sv->renamed[2];
65
@@ -215,15 +214,17 @@ openredirect(union node *redir)
66
if ((f = open64(fname, O_WRONLY|O_CREAT|O_APPEND, 0666)) < 0)
71
+ f = redir->ndup.dupfd;
72
+ if (f == redir->nfile.fd)
79
/* Fall through to eliminate warning. */
82
- f = redir->ndup.dupfd;