From 2032b01e664fc20a64c4191ab06c540a1846f20b Mon Sep 17 00:00:00 2001 From: Magnus Olsen Date: Thu, 14 Jul 2005 20:51:39 +0000 Subject: [PATCH] fix the second bug for 1>text.txt pipe svn path=/trunk/; revision=16567 --- reactos/subsys/system/cmd/redir.c | 48 +++++++++++++++++++++++++++++-- 1 file changed, 46 insertions(+), 2 deletions(-) diff --git a/reactos/subsys/system/cmd/redir.c b/reactos/subsys/system/cmd/redir.c index 47f85675d99..e722aa3ac60 100644 --- a/reactos/subsys/system/cmd/redir.c +++ b/reactos/subsys/system/cmd/redir.c @@ -128,7 +128,51 @@ INT GetRedirection (LPTSTR s, LPTSTR ifn, LPTSTR ofn, LPTSTR efn, LPINT lpnFlags *ofn++ = *sp++; *ofn = _T('\0'); } - else if ((*sp == _T('1')) || (*sp == _T('2'))) + + else if (*sp == _T('1')) + { + /* error redirection */ + sp++; + + if (*sp == _T('>')) + { + /* output redirection */ + *lpnFlags |= OUTPUT_REDIRECTION; + sp++; + + /* append request ? */ + if (*sp == _T('>')) + { + *lpnFlags |= OUTPUT_APPEND; + sp++; + } + + while (_istspace (*sp)) + sp++; + + /* copy file name */ + while (*sp && !IsRedirection (*sp) && !_istspace (*sp)) + *ofn++ = *sp++; + *ofn = _T('\0'); + } + else + { + /* no redirection!! copy the '1' character! */ + sp--; + *dp++ = *sp++; + continue; + } + + while (_istspace (*sp)) + sp++; + + /* copy file name */ + while (*sp && !IsRedirection (*sp) && !_istspace (*sp)) + *efn++ = *sp++; + *efn = _T('\0'); + } + + else if (*sp == _T('2')) { /* error redirection */ sp++; @@ -147,7 +191,7 @@ INT GetRedirection (LPTSTR s, LPTSTR ifn, LPTSTR ofn, LPTSTR efn, LPINT lpnFlags } else { - /* no redirection!! copy the '1' or '2' character! */ + /* no redirection!! copy the '2' character! */ sp--; *dp++ = *sp++; continue;