aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorDenis Vlasenko <vda.linux@googlemail.com>2007-07-14 00:48:29 +0000
committerDenis Vlasenko <vda.linux@googlemail.com>2007-07-14 00:48:29 +0000
commit40ba9984fd363cfceb2f7f10a882ade282a195aa (patch)
tree409cfeb03c57c61f2bf15b650f673378f338f5d2
parent153cd695e4fa9b53bd12844468c6f97784d9696e (diff)
downloadbusybox-w32-40ba9984fd363cfceb2f7f10a882ade282a195aa.tar.gz
busybox-w32-40ba9984fd363cfceb2f7f10a882ade282a195aa.tar.bz2
busybox-w32-40ba9984fd363cfceb2f7f10a882ade282a195aa.zip
ash: fix for buglet in DEBUG code (Nguyen Thai Ngoc Duy <pclouds@gmail.com>)
-rw-r--r--shell/ash.c31
1 files changed, 16 insertions, 15 deletions
diff --git a/shell/ash.c b/shell/ash.c
index f33ff4d8e..bf0fd656b 100644
--- a/shell/ash.c
+++ b/shell/ash.c
@@ -840,23 +840,24 @@ shcmd(union node *cmd, FILE *fp)
840 840
841 first = 1; 841 first = 1;
842 for (np = cmd->ncmd.args; np; np = np->narg.next) { 842 for (np = cmd->ncmd.args; np; np = np->narg.next) {
843 if (! first) 843 if (!first)
844 putchar(' '); 844 putc(' ', fp);
845 sharg(np, fp); 845 sharg(np, fp);
846 first = 0; 846 first = 0;
847 } 847 }
848 for (np = cmd->ncmd.redirect; np; np = np->nfile.next) { 848 for (np = cmd->ncmd.redirect; np; np = np->nfile.next) {
849 if (! first) 849 if (!first)
850 putchar(' '); 850 putc(' ', fp);
851 dftfd = 0;
851 switch (np->nfile.type) { 852 switch (np->nfile.type) {
852 case NTO: s = ">"; dftfd = 1; break; 853 case NTO: s = ">>"+1; dftfd = 1; break;
853 case NCLOBBER: s = ">|"; dftfd = 1; break; 854 case NCLOBBER: s = ">|"; dftfd = 1; break;
854 case NAPPEND: s = ">>"; dftfd = 1; break; 855 case NAPPEND: s = ">>"; dftfd = 1; break;
855 case NTOFD: s = ">&"; dftfd = 1; break; 856 case NTOFD: s = ">&"; dftfd = 1; break;
856 case NFROM: s = "<"; dftfd = 0; break; 857 case NFROM: s = "<"; break;
857 case NFROMFD: s = "<&"; dftfd = 0; break; 858 case NFROMFD: s = "<&"; break;
858 case NFROMTO: s = "<>"; dftfd = 0; break; 859 case NFROMTO: s = "<>"; break;
859 default: s = "*error*"; dftfd = 0; break; 860 default: s = "*error*"; break;
860 } 861 }
861 if (np->nfile.fd != dftfd) 862 if (np->nfile.fd != dftfd)
862 fprintf(fp, "%d", np->nfile.fd); 863 fprintf(fp, "%d", np->nfile.fd);
@@ -3774,7 +3775,7 @@ showjob(FILE *out, struct job *jp, int mode)
3774 struct procstat *ps; 3775 struct procstat *ps;
3775 struct procstat *psend; 3776 struct procstat *psend;
3776 int col; 3777 int col;
3777 int indent; 3778 int indent_col;
3778 char s[80]; 3779 char s[80];
3779 3780
3780 ps = jp->ps; 3781 ps = jp->ps;
@@ -3786,7 +3787,7 @@ showjob(FILE *out, struct job *jp, int mode)
3786 } 3787 }
3787 3788
3788 col = fmtstr(s, 16, "[%d] ", jobno(jp)); 3789 col = fmtstr(s, 16, "[%d] ", jobno(jp));
3789 indent = col; 3790 indent_col = col;
3790 3791
3791 if (jp == curjob) 3792 if (jp == curjob)
3792 s[col - 2] = '+'; 3793 s[col - 2] = '+';
@@ -3812,7 +3813,7 @@ showjob(FILE *out, struct job *jp, int mode)
3812 3813
3813 do { 3814 do {
3814 /* for each process */ 3815 /* for each process */
3815 col = fmtstr(s, 48, " |\n%*c%d ", indent, ' ', ps->pid) - 3; 3816 col = fmtstr(s, 48, " |\n%*c%d ", indent_col, ' ', ps->pid) - 3;
3816 start: 3817 start:
3817 fprintf(out, "%s%*c%s", 3818 fprintf(out, "%s%*c%s",
3818 s, 33 - col >= 0 ? 33 - col : 0, ' ', ps->cmd 3819 s, 33 - col >= 0 ? 33 - col : 0, ' ', ps->cmd