Hello community, here is the log from the commit of package ksh for openSUSE:Factory checked in at 2012-12-28 15:03:15 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ Comparing /work/SRC/openSUSE:Factory/ksh (Old) and /work/SRC/openSUSE:Factory/.ksh.new (New) ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ Package is "ksh", Maintainer is "werner@suse.com" Changes: -------- --- /work/SRC/openSUSE:Factory/ksh/ksh.changes 2012-11-02 16:40:44.000000000 +0100 +++ /work/SRC/openSUSE:Factory/.ksh.new/ksh.changes 2012-12-28 15:03:17.000000000 +0100 @@ -1,0 +2,10 @@ +Thu Dec 20 12:48:02 UTC 2012 - werner@suse.de + +- Add ksh93-dttree-crash.dif - Allow empty strings in (dt)trees + (bnc#795324) +- Modify ksh93-jobs.dif - make sure that tty is closed even if an + interrupt has been happen at close and also be aware that the + return value of tcgetpgrp() is greater than `1' that does not + match the process group ID of any existing process group (bnc#790315) + +------------------------------------------------------------------- New: ---- ksh93-dttree-crash.dif ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ Other differences: ------------------ ++++++ ksh.spec ++++++ --- /var/tmp/diff_new_pack.VkoNuk/_old 2012-12-28 15:03:20.000000000 +0100 +++ /var/tmp/diff_new_pack.VkoNuk/_new 2012-12-28 15:03:20.000000000 +0100 @@ -114,6 +114,7 @@ Patch28: ksh93-env.dif Patch29: ksh93-zerofill.dif Patch30: ksh93-pathtemp.dif +Patch31: ksh93-dttree-crash.dif Patch42: ksh-locale.patch %description @@ -200,6 +201,7 @@ %patch28 %patch29 %patch30 +%patch31 %build # ++++++ ksh93-dttree-crash.dif ++++++ --- src/lib/libast/include/cdt.h +++ src/lib/libast/include/cdt.h 2012-12-20 11:37:28.641452879 +0000 @@ -313,7 +313,7 @@ _END_EXTERNS_ #define _DTCMP(dt,k1,k2,dc) \ ((dc)->comparf ? (*(dc)->comparf)((dt), (k1), (k2), (dc)) : \ (dc)->size > 0 ? memcmp((Void_t*)(k1), ((Void_t*)k2), (dc)->size) : \ - strcmp((char*)(k1), ((char*)k2)) ) + strcmp((char*)(k1), ((char*)(k2 ? k2 : ""))) ) #define _DTHSH(dt,ky,dc) ((dc)->hashf ? (*(dc)->hashf)((dt), (ky), (dc)) : \ dtstrhash(0, (ky), (dc)->size) ) ++++++ ksh93-jobs.dif ++++++ --- /var/tmp/diff_new_pack.VkoNuk/_old 2012-12-28 15:03:20.000000000 +0100 +++ /var/tmp/diff_new_pack.VkoNuk/_new 2012-12-28 15:03:20.000000000 +0100 @@ -1,6 +1,42 @@ --- src/cmd/ksh93/sh/jobs.c -+++ src/cmd/ksh93/sh/jobs.c 2011-08-15 18:43:23.005726321 +0200 -@@ -1103,7 +1103,7 @@ static struct process *job_bystring(regi ++++ src/cmd/ksh93/sh/jobs.c 2012-12-20 13:33:27.885452491 +0000 +@@ -638,12 +638,14 @@ void job_init(Shell_t *shp, int lflag) + /* This should have already been done by rlogin */ + register int fd; + register char *ttynam; ++ int err = errno; + #ifndef SIGTSTP + setpgid(0,shp->gd->pid); + #endif /*SIGTSTP */ + if(job.mypgid<0 || !(ttynam=ttyname(JOBTTY))) + return; +- close(JOBTTY); ++ while(close(JOBTTY)<0 && errno==EINTR) ++ errno = err; + if((fd = open(ttynam,O_RDWR)) <0) + return; + if(fd!=JOBTTY) +@@ -660,7 +662,7 @@ void job_init(Shell_t *shp, int lflag) + /* wait until we are in the foreground */ + while((job.mytgid=tcgetpgrp(JOBTTY)) != job.mypgid) + { +- if(job.mytgid == -1) ++ if(job.mytgid <= 0) + return; + /* Stop this shell until continued */ + signal(SIGTTIN,SIG_DFL); +@@ -833,7 +835,9 @@ static void job_set(register struct proc + if((pw->p_flag&P_STOPPED) || tcgetpgrp(job.fd) == shp->gd->pid) + tcsetpgrp(job.fd,pw->p_fgrp); + /* if job is stopped, resume it in the background */ +- job_unstop(pw); ++ if(!shp->forked) ++ job_unstop(pw); ++ shp->forked = 0; + #endif /* SIGTSTP */ + } + +@@ -1104,7 +1110,7 @@ static struct process *job_bystring(regi int job_kill(register struct process *pw,register int sig) { @@ -9,7 +45,7 @@ register pid_t pid; register int r; const char *msg; -@@ -1116,6 +1116,7 @@ int job_kill(register struct process *pw +@@ -1117,6 +1123,7 @@ int job_kill(register struct process *pw errno = ECHILD; if(pw==0) goto error; @@ -17,3 +53,11 @@ pid = pw->p_pid; #if SHOPT_COSHELL if(pw->p_cojob) +@@ -2043,6 +2050,7 @@ void job_fork(pid_t parent) + job.in_critical = 0; + break; + default: ++ job_chksave(parent); + jobfork=0; + job_unlock(); + break; -- To unsubscribe, e-mail: opensuse-commit+unsubscribe@opensuse.org For additional commands, e-mail: opensuse-commit+help@opensuse.org