Hello community,

here is the log from the commit of package ksh for openSUSE:Factory checked in 
at 2013-08-01 17:14:53
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Comparing /work/SRC/openSUSE:Factory/ksh (Old)
 and      /work/SRC/openSUSE:Factory/.ksh.new (New)
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++

Package is "ksh"

Changes:
--------
--- /work/SRC/openSUSE:Factory/ksh/ksh.changes  2013-03-26 19:48:09.000000000 
+0100
+++ /work/SRC/openSUSE:Factory/.ksh.new/ksh.changes     2013-08-01 
17:14:54.000000000 +0200
@@ -1,0 +2,16 @@
+Thu Aug  1 12:32:53 UTC 2013 - wer...@suse.de
+
+- Use own subsection 1ast in manual section 1 to avoid name space
+  conflicts
+
+-------------------------------------------------------------------
+Tue Jun 11 16:55:30 UTC 2013 - wer...@suse.de
+
+- Add patch ksh93-alias-k.dif as fix for bnc#824187
+
+-------------------------------------------------------------------
+Tue Apr 23 12:31:35 UTC 2013 - wer...@suse.de
+
+- Add patch ksh93-fdstatus.dif as fix for bnc#814135 and bnc#808449
+
+-------------------------------------------------------------------

New:
----
  ksh93-alias-k.dif
  ksh93-fdstatus.dif

++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++

Other differences:
------------------
++++++ ksh.spec ++++++
--- /var/tmp/diff_new_pack.rrYp7r/_old  2013-08-01 17:14:55.000000000 +0200
+++ /var/tmp/diff_new_pack.rrYp7r/_new  2013-08-01 17:14:55.000000000 +0200
@@ -124,6 +124,11 @@
 Patch31:        ksh93-dttree-crash.dif
 # PATCH-FIX-UPSTREAM ksh93-heredoclex.dif [bnc#804998]
 Patch32:        ksh93-heredoclex.dif
+# PATCH-FIX-UPSTREAM ksh93-fdstatus.dif [bnc#808449, bnc#814135]
+# this is a backport from the alpha version ksh93v-2013-04-22
+Patch33:        ksh93-fdstatus.dif
+# PATCH-FIX-UPSTREAM ksh93-alias-k.dif [bnc#824187]
+Patch34:        ksh93-alias-k.dif
 Patch42:        ksh-locale.patch
 
 %description
@@ -210,6 +215,8 @@
 %patch30
 %patch31
 %patch32
+%patch33
+%patch34
 
 %build
   #
@@ -592,7 +599,7 @@
       set -- $(shcomp --version 2>&1)
       eval version=\${$#}
       for bin in shcomp pty what mime asa dlls ; do
-         $bin --nroff 2>&1 | sed 's/\(\.TH .*\)/\1 "%{date}" "" "Korn shell 
utilities"/' > ../man/man1/$bin.1
+         $bin --nroff 2>&1 | sed 's/\(\.TH .*\)/\1 "%{date}" "" "Korn shell 
utilities"/' > ../man/man1/$bin.1ast
       done
   popd
   test -d /tmp -a /tmp -ef ${TMPDIR} || rm -rf ${TMPDIR}
@@ -651,17 +658,17 @@
   done
   install -m 0644 lib/*.a              %{buildroot}%{_libdir}/ast/
 %if %suse_version > 1120
-  install -m 0644 man/man1/sh.1                
%{buildroot}%{_mandir}/man1/ksh93.1
-  ln -sf ../man1/ksh93.1.gz            %{buildroot}/%{_mandir}/man1/ksh.1.gz
-  ln -sf ../man1/ksh93.1.gz            %{buildroot}/%{_mandir}/man1/rksh.1.gz
+  install -m 0644 man/man1/sh.1                
%{buildroot}%{_mandir}/man1/ksh93.1ast
+  ln -sf ../man1/ksh93.1ast.gz         %{buildroot}/%{_mandir}/man1/ksh.1ast.gz
+  ln -sf ../man1/ksh93.1ast.gz         
%{buildroot}/%{_mandir}/man1/rksh.1ast.gz
 %else
-  install -m 0644 man/man1/sh.1                
%{buildroot}%{_mandir}/man1/ksh.1
-  ln -sf ../man1/ksh.1.gz              %{buildroot}/%{_mandir}/man1/rksh.1.gz
+  install -m 0644 man/man1/sh.1ast     %{buildroot}%{_mandir}/man1/ksh.1ast
+  ln -sf ../man1/ksh.1ast.gz           
%{buildroot}/%{_mandir}/man1/rksh.1ast.gz
 %endif
-  install -m 0644 man/man1/shcomp.1    %{buildroot}%{_mandir}/man1/shcomp.1
+  install -m 0644 man/man1/shcomp.1ast %{buildroot}%{_mandir}/man1/shcomp.1ast
 %if %use_opt_bins
   for bin in pty what mime asa dlls ; do
-      install -m 0644 man/man1/$bin.1  %{buildroot}%{_mandir}/man1/$bin.1
+      install -m 0644 man/man1/$bin.1ast       
%{buildroot}%{_mandir}/man1/$bin.1ast
   done
 %endif
   for man in man/man3/*.3 ; do
@@ -750,8 +757,8 @@
 %endif
     --install /bin/ksh ksh /bin/ksh93 20 \
     --slave %{_bindir}/ksh usr-bin-ksh /bin/ksh93 \
-    --slave %{_mandir}/man1/ksh.1.gz ksh.1.gz %{_mandir}/man1/ksh93.1.gz \
-    --slave %{_mandir}/man1/rksh.1.gz rksh.1.gz %{_mandir}/man1/ksh93.1.gz
+    --slave %{_mandir}/man1/ksh.1ast.gz ksh.1.gz %{_mandir}/man1/ksh93.1ast.gz 
\
+    --slave %{_mandir}/man1/rksh.1ast.gz rksh.1.gz 
%{_mandir}/man1/ksh93.1ast.gz
 %else
 if test -x /%{_lib}/ast/bin/ksh ; then
     rm -f /%{_lib}/ast/bin/ksh
@@ -800,20 +807,20 @@
 %ghost %verify(not link) /bin/ksh
 %ghost %verify(not link) %{_bindir}/ksh
 %if %suse_version > 1120
-%ghost %verify(not link) %{_mandir}/man1/ksh.1.gz
-%ghost %verify(not link) %{_mandir}/man1/rksh.1.gz
-%doc %{_mandir}/man1/ksh93.1.gz
+%ghost %verify(not link) %{_mandir}/man1/ksh.1ast.gz
+%ghost %verify(not link) %{_mandir}/man1/rksh.1ast.gz
+%doc %{_mandir}/man1/ksh93.1ast.gz
 %else
-%doc %{_mandir}/man1/ksh.1.gz
-%doc %{_mandir}/man1/rksh.1.gz
+%doc %{_mandir}/man1/ksh.1ast.gz
+%doc %{_mandir}/man1/rksh.1ast.gz
 %endif
-%doc %{_mandir}/man1/shcomp.1.gz
+%doc %{_mandir}/man1/shcomp.1ast.gz
 %if %use_opt_bins
-%doc %{_mandir}/man1/pty.1.gz
-%doc %{_mandir}/man1/what.1.gz
-%doc %{_mandir}/man1/mime.1.gz
-%doc %{_mandir}/man1/asa.1.gz
-%doc %{_mandir}/man1/dlls.1.gz
+%doc %{_mandir}/man1/pty.1ast.gz
+%doc %{_mandir}/man1/what.1ast.gz
+%doc %{_mandir}/man1/mime.1ast.gz
+%doc %{_mandir}/man1/asa.1ast.gz
+%doc %{_mandir}/man1/dlls.1ast.gz
 %endif
 %{_bindir}/*
 %dir /%{_lib}/ast

++++++ ksh93-alias-k.dif ++++++
--- src/cmd/ksh93/data/builtins.c
+++ src/cmd/ksh93/data/builtins.c       2013-06-11 16:24:46.269439322 +0000
@@ -78,8 +78,8 @@ const struct shtable3 shtab_builtins[] =
 #if _bin_newgrp || _usr_bin_newgrp
        "newgrp",       NV_BLTIN|BLT_ENV|BLT_SPC,       Bltin(login),
 #endif /* _bin_newgrp || _usr_bin_newgrp */
-       "alias",        NV_BLTIN|BLT_SPC,               bltin(alias),
-       "hash",         NV_BLTIN|BLT_SPC,               bltin(alias),
+       "alias",        NV_BLTIN|BLT_SPC|BLT_DCL,       bltin(alias),
+       "hash",         NV_BLTIN|BLT_SPC|BLT_DCL,       bltin(alias),
        "enum",         NV_BLTIN|BLT_ENV|BLT_SPC|BLT_DCL,bltin(enum),
        "eval",         NV_BLTIN|BLT_ENV|BLT_SPC|BLT_EXIT,bltin(eval),
        "exit",         NV_BLTIN|BLT_ENV|BLT_SPC,       bltin(return),
++++++ ksh93-fdstatus.dif ++++++
| Fix for bnc#814135 and bnc#808449
| - crash in bestreclaim() after traversing a memory block with a very large 
size (ksh)
| - set -k does not work properly with ksh-93t-13.17 and higher
| This is a backport from the alpha version ksh93v-2013-04-22.
--- src/cmd/ksh93/include/io.h
+++ src/cmd/ksh93/include/io.h  2013-04-23 09:27:07.997439763 +0000
@@ -81,6 +81,7 @@ extern void   sh_iosave(Shell_t *, int,in
 extern int     sh_iovalidfd(Shell_t*, int);
 extern int     sh_inuse(Shell_t*, int);
 extern void    sh_iounsave(Shell_t*);
+extern void    sh_iounpipe(Shell_t*);
 extern int     sh_chkopen(const char*);
 extern int     sh_ioaccess(int,int);
 extern int     sh_devtofd(const char*);
--- src/cmd/ksh93/sh/subshell.c
+++ src/cmd/ksh93/sh/subshell.c 2013-04-23 09:40:16.089940758 +0000
@@ -122,11 +122,13 @@ void      sh_subtmpfile(Shell_t *shp)
                register struct checkpt *pp = (struct checkpt*)shp->jmplist;
                register struct subshell *sp = subshell_data->pipe;
                /* save file descriptor 1 if open */
-               if((sp->tmpfd = fd = fcntl(1,F_DUPFD,10)) >= 0)
+               if((sp->tmpfd = fd = sh_fcntl(1,F_DUPFD,10)) >= 0)
                {
+                       int err=errno;
                        fcntl(fd,F_SETFD,FD_CLOEXEC);
                        shp->fdstatus[fd] = shp->fdstatus[1]|IOCLEX;
-                       close(1);
+                       while(close(1)<0 && errno==EINTR)
+                               errno = err;
                }
                else if(errno!=EBADF)
                        errormsg(SH_DICT,ERROR_system(1),e_toomany);
@@ -138,7 +140,7 @@ void        sh_subtmpfile(Shell_t *shp)
                        int fds[3];
                        Sfoff_t off;
                        fds[2] = 0;
-                       sh_pipe(fds);
+                       sh_rpipe(fds);
                        sp->pipefd = fds[0];
                        sh_fcntl(sp->pipefd,F_SETFD,FD_CLOEXEC);
                        /* write the data to the pipe */
@@ -180,7 +182,7 @@ void sh_subfork(void)
 {
        register struct subshell *sp = subshell_data;
        Shell_t *shp = sp->shp;
-       int     curenv = shp->curenv;
+       int     curenv = shp->curenv, comsub=shp->comsub;
        pid_t pid;
        char *trap = shp->st.trapcom[0];
        if(trap)
@@ -213,7 +215,7 @@ void sh_subfork(void)
                shp->comsub = 0;
                SH_SUBSHELLNOD->nvalue.s = 0;
                sp->subpid=0;
-               shp->st.trapcom[0] = trap;
+               shp->st.trapcom[0] = (comsub==2?NULL:trap);
                shp->savesig = 0;
        }
 }
@@ -528,7 +530,7 @@ Sfio_t *sh_subshell(Shell_t *shp,Shnode_
                job.curpgid = 0;
        sp->subshare = shp->subshare;
        sp->comsub = shp->comsub;
-       shp->subshare = comsub==2 ||  (comsub==1 && sh_isoption(SH_SUBSHARE));
+       shp->subshare = comsub==2 ||  (comsub && sh_isoption(SH_SUBSHARE));
        if(comsub)
                shp->comsub = comsub;
        if(!comsub || !shp->subshare)
@@ -602,7 +604,7 @@ Sfio_t *sh_subshell(Shell_t *shp,Shnode_
                        sp->tmpfd = -1;
                        sp->pipefd = -1;
                        /* use sftmp() file for standard output */
-                       if(!(iop = sftmp(PIPE_BUF)))
+                       if(!(iop = sftmp(comsub==1?PIPE_BUF:IOBSIZE)))
                        {
                                sfswap(sp->saveout,sfstdout);
                                errormsg(SH_DICT,ERROR_system(1),e_tmpcreate);
@@ -688,11 +690,16 @@ Sfio_t *sh_subshell(Shell_t *shp,Shnode_
                        }
                        sfset(iop,SF_READ,1);
                }
-               sfswap(sp->saveout,sfstdout);
+               if(sp->saveout)
+                       sfswap(sp->saveout,sfstdout);
+               else
+                       sfstdout = &_Sfstdout;
                /*  check if standard output was preserved */
                if(sp->tmpfd>=0)
                {
-                       close(1);
+                       int err=errno;
+                       while(close(1)<0 && errno==EINTR)
+                               errno = err;
                        if (fcntl(sp->tmpfd,F_DUPFD,1) != 1)
                                duped++;
                        sh_close(sp->tmpfd);
@@ -776,7 +783,6 @@ Sfio_t *sh_subshell(Shell_t *shp,Shnode_
                shp->coutpipe = sp->coutpipe;
        }
        shp->subshare = sp->subshare;
-       shp->comsub = sp->comsub;
        shp->subdup = sp->subdup;
 #if SHOPT_COSHELL
        shp->coshell = sp->coshell;
@@ -806,7 +812,12 @@ Sfio_t *sh_subshell(Shell_t *shp,Shnode_
        if(nsig>0)
                kill(getpid(),nsig);
        if(sp->subpid)
+       {
                job_wait(sp->subpid);
+               if(comsub>1)
+                       sh_iounpipe(shp);
+       }
+       shp->comsub = sp->comsub;
        if(comsub && iop && sp->pipefd<0)
                sfseek(iop,(off_t)0,SEEK_SET);
        if(shp->trapnote)
--- src/cmd/ksh93/sh/xec.c
+++ src/cmd/ksh93/sh/xec.c      2013-04-23 10:39:02.725439216 +0000
@@ -102,26 +102,30 @@ struct funenv
  * temp file.
  */
 static int      subpipe[3],subdup,tsetio,usepipe;
-static void iounpipe(Shell_t*);
 
 static int iousepipe(Shell_t *shp)
 {
-       int i;
+       int fd=sffileno(sfstdout),i,err=errno;
        if(usepipe)
        {
                usepipe++;
-               iounpipe(shp);
+               sh_iounpipe(shp);
        }
        if(sh_rpipe(subpipe) < 0)
                return(0);
        usepipe++;
-       fcntl(subpipe[0],F_SETFD,FD_CLOEXEC);
-       subpipe[2] = fcntl(1,F_DUPFD,10);
-       fcntl(subpipe[2],F_SETFD,FD_CLOEXEC);
+       if(shp->comsub!=1)
+       {
+               subpipe[2] = sh_fcntl(subpipe[1],F_DUPFD,10);
+               sh_close(subpipe[1]);
+               return(1);
+       }
+       subpipe[2] = sh_fcntl(fd,F_dupfd_cloexec,10);
        shp->fdstatus[subpipe[2]] = shp->fdstatus[1];
-       close(1);
-       fcntl(subpipe[1],F_DUPFD,1);
-       shp->fdstatus[1] = shp->fdstatus[subpipe[1]];
+       while(close(fd)<0 && errno==EINTR)
+               errno = err;
+       fcntl(subpipe[1],F_DUPFD,fd);
+       shp->fdstatus[1] = shp->fdstatus[subpipe[1]]&~IOCLEX;
        sh_close(subpipe[1]);
        if(subdup=shp->subdup) for(i=0; i < 10; i++)
        {
@@ -135,14 +139,23 @@ static int iousepipe(Shell_t *shp)
        return(1);
 }
 
-static void iounpipe(Shell_t *shp)
+void sh_iounpipe(Shell_t *shp)
 {
-       int n;
+       int fd=sffileno(sfstdout),n,err=errno;
        char buff[SF_BUFSIZE];
-       close(1);
-       fcntl(subpipe[2], F_DUPFD, 1);
-       shp->fdstatus[1] = shp->fdstatus[subpipe[2]];
+       if(!usepipe)
+               return;
        --usepipe;
+       if(shp->comsub>1)
+       {
+               sh_close(subpipe[2]);
+               while(read(subpipe[0],buff,sizeof(buff))>0);
+               goto done;
+       }
+       while(close(fd)<0 && errno==EINTR)
+               errno = err;
+       fcntl(subpipe[2], F_DUPFD, fd);
+       shp->fdstatus[1] = shp->fdstatus[subpipe[2]];
        if(subdup) for(n=0; n < 10; n++)
        {
                if(subdup&(1<<n))
@@ -174,6 +187,7 @@ static void iounpipe(Shell_t *shp)
                else if(errno!=EINTR)
                        break;
        }
+done:
        sh_close(subpipe[0]);
        subpipe[0] = -1;
        tsetio = 0;
@@ -1597,10 +1611,14 @@ int sh_exec(register const Shnode_t *t,
                        if(shp->subshell)
                        {
                                sh_subtmpfile(shp);
-                               if(shp->comsub==1 && 
!(shp->fdstatus[1]&IONOSEEK))
-                                       unpipe=iousepipe(shp);
                                if((type&(FAMP|TFORK))==(FAMP|TFORK))
-                                       sh_subfork();
+                               {
+                                       if(shp->comsub==1 && 
!(shp->fdstatus[1]&IONOSEEK))
+                                       {
+                                               unpipe=iousepipe(shp);
+                                               sh_subfork();
+                                       }
+                               }
                        }
                        no_fork = !ntflag && !(type&(FAMP|FPOU)) && 
!shp->subshell &&
                            !(shp->st.trapcom[SIGINT] && 
*shp->st.trapcom[SIGINT]) &&
@@ -1676,7 +1694,7 @@ int sh_exec(register const Shnode_t *t,
                                if(parent<0)
                                {
                                        if(shp->comsub==1 && usepipe && unpipe)
-                                               iounpipe(shp);
+                                               sh_iounpipe(shp);
                                        break;
                                }
 #else
@@ -1693,7 +1711,7 @@ int sh_exec(register const Shnode_t *t,
                                if(parent<0)
                                {
                                        if(shp->comsub==1 && usepipe && unpipe)
-                                               iounpipe(shp);
+                                               sh_iounpipe(shp);
                                        break;
                                }
 #else
@@ -1734,7 +1752,7 @@ int sh_exec(register const Shnode_t *t,
                                        if(shp->topfd > topfd)
                                                sh_iorestore(shp,topfd,0);
                                        if(usepipe && tsetio &&  subdup && 
unpipe)
-                                               iounpipe(shp);
+                                               sh_iounpipe(shp);
                                        if(!sh_isoption(SH_MONITOR))
                                        {
                                                shp->trapnote &= ~SH_SIGIGNORE;
@@ -1954,7 +1972,7 @@ int sh_exec(register const Shnode_t *t,
                                                shp->exitval = type;
                                }
                                if(shp->comsub==1 && usepipe)
-                                       iounpipe(shp);
+                                       sh_iounpipe(shp);
                                shp->pipepid = 0;
                                shp->st.ioset = 0;
                                if(simple && was_errexit)
@@ -3165,7 +3183,7 @@ pid_t _sh_fork(Shell_t *shp,register pid
                        {
                                if(shp->topfd > restorefd)
                                        sh_iorestore(shp,restorefd,0);
-                               iounpipe(shp);
+                               sh_iounpipe(shp);
                        }
                }
                return(parent);
@@ -3626,7 +3644,7 @@ static void coproc_init(Shell_t *shp, in
                sh_pipe(shp->cpipe);
                if((outfd=shp->cpipe[1]) < 10) 
                {
-                       int fd=fcntl(shp->cpipe[1],F_DUPFD,10);
+                       int fd=sh_fcntl(shp->cpipe[1],F_DUPFD,10);
                        if(fd>=10)
                        {
                                shp->fdstatus[fd] = 
(shp->fdstatus[outfd]&~IOCLEX);
++++++ sigexec.c ++++++
--- /var/tmp/diff_new_pack.rrYp7r/_old  2013-08-01 17:14:55.000000000 +0200
+++ /var/tmp/diff_new_pack.rrYp7r/_new  2013-08-01 17:14:55.000000000 +0200
@@ -108,8 +108,10 @@
     o.c_cc[VLNEXT]   = CLNEXT;
     o.c_cc[VEOL2]    = _POSIX_VDISABLE;
 
-    if (openpty(&ptm, &pts, devname, &o, &w) < 0)
+    if (openpty(&ptm, &pts, devname, &o, &w) < 0) {
        perror("pty: can not open pty/tty pair");
+       exit(1);
+    }
 
     (void)sigemptyset(&set);
     (void)sigaddset(&set, SIGCHLD);
@@ -141,15 +143,19 @@
     switch ((pid = fork())) {
     case 0:
        ioctl(1, TIOCNOTTY);
-       if (setsid() < 0)
+       if (setsid() < 0) {
            perror("pty: can not get controlling tty");
+           exit(1);
+       }
        dup2(pts, 0);
        dup2(pts, 1);
        dup2(pts, 2);
        close(pts);
        close(ptm);
-       if (ioctl (0, TIOCSCTTY, 1) < 0)
+       if (ioctl (0, TIOCSCTTY, 1) < 0) {
            perror("pty: can not get controlling tty");
+           exit(1);
+       }
        break;
     case -1:
        close(pts);

-- 
To unsubscribe, e-mail: opensuse-commit+unsubscr...@opensuse.org
For additional commands, e-mail: opensuse-commit+h...@opensuse.org

Reply via email to