Hello community,

here is the log from the commit of package tcsh for openSUSE:Factory checked in 
at 2016-12-02 16:36:37
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Comparing /work/SRC/openSUSE:Factory/tcsh (Old)
 and      /work/SRC/openSUSE:Factory/.tcsh.new (New)
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++

Package is "tcsh"

Changes:
--------
--- /work/SRC/openSUSE:Factory/tcsh/tcsh.changes        2016-07-01 
09:55:26.000000000 +0200
+++ /work/SRC/openSUSE:Factory/.tcsh.new/tcsh.changes   2016-12-02 
16:36:38.000000000 +0100
@@ -1,0 +2,46 @@
+Thu Dec  1 11:53:40 UTC 2016 - wer...@suse.de
+
+- Add patch tcsh-6.20-rmstar.patch from mailing list to restore
+  the correct behaviour of `rm *' if rmstar is set
+
+-------------------------------------------------------------------
+Fri Nov 25 08:41:32 UTC 2016 - wer...@suse.de
+
+- Update to tcsh bug fix version V6.20.00 - 20161124
+  * Don't resize the screen if it did not change size.
+  * restore file description when cleaning up after eval:
+        repeat 99 time
+  * PR/572: Fix $SHLVL issue when exec'ing subshells.
+  * PR/403: Fix backquote expansion for multi-byte character sets.
+  * Fix drawing issu with multi-line prompt (Kensuke Iwahashi/David Kaspar)
+  * always send prusage to stdout.
+  * PR/526: Fix double \\ printing from previous fix in history expansion.
+  * Android updates from Corinna Vinschen
+  * PR/526: Quote backslashes properly so they can be preserved in ``
+     expansions
+  * Fix memory leak for paraml
+  * Add notempty and ask values for the noclobber setting (Martin Tournoij)
+  * more correct $wordchars for vimode (Luke Mewburn)
+  * expose VImode in $vimode (Luke Mewburn)
+  * display what the compiled in editor is in bindkey -d (Luke Mewburn)
+  * run-fg-editor improvements and documentation (Luke Mewburn)
+  * Fix parsing of 'if (cond)then' (Fridolin Pokorny)
+  * PR/437: Fix handling of invalid unicode characters.
+  * PR/451: Fix error messages containing %c to be always '%c'
+- Rename patch tcsh-6.18.03.dif which becomes tcsh-6.20.00.dif now
+- Drop patch union-wait.patch as now upstream
+- Modify patches
+    tcsh-6.15.00-pipe.dif
+    tcsh-6.17.06-dspmbyte.dif
+    tcsh-6.18.03-colorls.dif
+    tcsh-6.18.03-history-file-locking.patch
+    tcsh-6.19.00-history-file-locking-order.patch
+
+-------------------------------------------------------------------
+Fri Aug 12 14:52:34 UTC 2016 - wer...@suse.de
+
+- Add patch tcsh-6.19.00-history-file-locking-order.patch
+  Make a copy of the file descriptor of the history file to be
+  able not only to lock but also unlock this file (bsc#992577) 
+
+-------------------------------------------------------------------

Old:
----
  tcsh-6.18.03.dif
  tcsh-6.19.00.tar.gz
  union-wait.patch

New:
----
  tcsh-6.19.00-history-file-locking-order.patch
  tcsh-6.20-rmstar.patch
  tcsh-6.20.00.dif
  tcsh-6.20.00.tar.gz

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

Other differences:
------------------
++++++ tcsh.spec ++++++
--- /var/tmp/diff_new_pack.Iw3F93/_old  2016-12-02 16:36:40.000000000 +0100
+++ /var/tmp/diff_new_pack.Iw3F93/_new  2016-12-02 16:36:40.000000000 +0100
@@ -17,16 +17,16 @@
 
 
 Name:           tcsh
-Version:        6.19.00
+Version:        6.20.00
 Release:        0
 Summary:        The C SHell
 License:        BSD-3-Clause
 Group:          System/Shells
 Url:            http://www.tcsh.org/
-Source:         ftp.astron.com:/pub/tcsh/tcsh-6.19.00.tar.gz
+Source:         ftp.astron.com:/pub/tcsh/tcsh-6.20.00.tar.gz
 Source2:        bindkey.tcsh
 Source3:        complete.tcsh
-Patch0:         tcsh-6.18.03.dif
+Patch0:         tcsh-6.20.00.dif
 Patch1:         tcsh-6.15.00-pipe.dif
 Patch2:         tcsh-6.16.00-norm-cmd.dif
 Patch4:         tcsh-6.18.03-colorls.dif
@@ -35,8 +35,12 @@
 # PATCH-FIX-SUSE add history file locking (bsc#901076)
 Patch9:         tcsh-6.18.03-history-file-locking.patch
 Patch10:        tcsh-6.18.03-history-merge.dif
-Patch11:        union-wait.patch
+# PATCH-FIX-SUSE fix history file locking: first unlock then close
+Patch11:        tcsh-6.19.00-history-file-locking-order.patch
+# PATCH-FIX-COMUNITY fix handling of rmstar
+Patch12:        tcsh-6.20-rmstar.patch
 BuildRequires:  autoconf
+BuildRequires:  fdupes
 BuildRequires:  ncurses-devel
 BuildRequires:  screen
 Requires:       gawk
@@ -62,8 +66,9 @@
 %patch6 -b .catalogs
 %patch9 -b .histlock
 %patch10 -b .histmerg
+%patch11 -b .histlckord
+%patch12 -p1 -b .rmstar
 %patch0 -b .0
-%patch11 -p1
 
 %build
 
@@ -116,7 +121,7 @@
        --libexecdir=%{_libdir}/tcsh    \
        --disable-rpath                 \
        --with-gnu-ld
-    make %{?_smp_mflags}
+    make %{?_smp_mflags} CC_FOR_GETHOST="$CC $CFLAGS"
 
 %check
     SCREENDIR=$(mktemp -d ${PWD}/screen.XXXXXXXXXX) || exit 1
@@ -164,10 +169,12 @@
        dir=%{buildroot}%{_datadir}/locale/${nls}/LC_MESSAGES
        test ! -e ${dir}/tcsh || continue
        mkdir -p -m 0755 $dir
-       install -m 0444 ${msg} ${dir}/tcsh
+       install -m 0644 ${msg} ${dir}/tcsh
     done
     make DESTDIR=%{buildroot} GENCAT='%{_bindir}/gencat --new' install
     make DESTDIR=%{buildroot} GENCAT='%{_bindir}/gencat --new' install.man
+    find %{buildroot}%{_datadir}/locale -name tcsh | xargs chmod 0644
+    %fdupes -s %{buildroot}%{_datadir}/locale
     mkdir -p %{buildroot}%{_docdir}/tcsh
     install -m 0444 FAQ %{buildroot}%{_docdir}/tcsh/FAQ.tcsh
     mkdir -p %{buildroot}%{_sysconfdir}/profile.d/
@@ -198,7 +205,7 @@
 %doc %{_mandir}/man1/tcsh.1.gz
 
 %files -n tcsh-lang
-%defattr(-,root,root)
+%defattr(0644,root,root)
 %{_datadir}/locale/*/LC_MESSAGES/tcsh*
 
 %changelog

++++++ tcsh-6.15.00-pipe.dif ++++++
--- /var/tmp/diff_new_pack.Iw3F93/_old  2016-12-02 16:36:40.000000000 +0100
+++ /var/tmp/diff_new_pack.Iw3F93/_new  2016-12-02 16:36:40.000000000 +0100
@@ -1,6 +1,10 @@
+---
+ sh.dol.c |    2 ++
+ 1 file changed, 2 insertions(+)
+
 --- sh.dol.c
-+++ sh.dol.c   2007-07-13 10:39:27.390018042 +0000
-@@ -421,6 +421,8 @@ Dgetdol(void)
++++ sh.dol.c   2016-11-25 08:00:30.455106978 +0000
+@@ -429,6 +429,8 @@ Dgetdol(void)
            size_t cbp = 0;
            int old_pintr_disabled;
  

++++++ tcsh-6.17.06-dspmbyte.dif ++++++
--- /var/tmp/diff_new_pack.Iw3F93/_old  2016-12-02 16:36:40.000000000 +0100
+++ /var/tmp/diff_new_pack.Iw3F93/_new  2016-12-02 16:36:40.000000000 +0100
@@ -1,6 +1,13 @@
+---
+ sh.c       |    4 ++--
+ sh.func.c  |   15 +++++++--------
+ sh.set.c   |   14 ++++++++++----
+ tc.const.c |    4 +++-
+ 4 files changed, 22 insertions(+), 15 deletions(-)
+
 --- sh.c
-+++ sh.c       2010-12-10 16:10:45.000000000 +0000
-@@ -847,9 +847,9 @@ main(int argc, char **argv)
++++ sh.c       2016-11-25 08:02:39.616478025 +0000
+@@ -864,9 +864,9 @@ main(int argc, char **argv)
      /* PATCH IDEA FROM Issei.Suzuki VERY THANKS */
  #if defined(DSPMBYTE)
  #if defined(NLS) && defined(LC_CTYPE)
@@ -13,8 +20,8 @@
      {
        autoset_dspmbyte(str2short(tcp));
 --- sh.func.c
-+++ sh.func.c  2010-12-09 09:15:06.000000000 +0000
-@@ -1406,14 +1406,6 @@ dosetenv(Char **v, struct command *c)
++++ sh.func.c  2016-11-25 08:02:39.616478025 +0000
+@@ -1424,14 +1424,6 @@ dosetenv(Char **v, struct command *c)
      }
  #endif /* apollo */
  
@@ -29,7 +36,7 @@
      if (islocale_var(vp)) {
  #ifdef NLS
        int     k;
-@@ -1438,6 +1430,13 @@ dosetenv(Char **v, struct command *c)
+@@ -1456,6 +1448,13 @@ dosetenv(Char **v, struct command *c)
        nlsclose();
        nlsinit();
  # endif /* NLS_CATALOGS */
@@ -44,8 +51,8 @@
        dont_free = 0;
  # endif /* SETLOCALEBUG */
 --- sh.set.c
-+++ sh.set.c   2010-12-09 11:07:56.000000000 +0000
-@@ -1119,11 +1119,11 @@ update_dspmbyte_vars(void)
++++ sh.set.c   2016-11-25 08:02:39.616478025 +0000
+@@ -1168,11 +1168,11 @@ update_dspmbyte_vars(void)
        dstr1 = vp->vec[0];
        if(eq (dstr1, STRsjis))
            iskcode = 1;
@@ -59,7 +66,7 @@
            iskcode = 4;
        else if ((dstr1[0] - '0') >= 0 && (dstr1[0] - '0') <= 3) {
            iskcode = 0;
-@@ -1207,7 +1207,7 @@ update_dspmbyte_vars(void)
+@@ -1256,7 +1256,7 @@ update_dspmbyte_vars(void)
        _enable_mbdisp = 0;
        dspmbyte_ls = 0;
      }
@@ -68,7 +75,7 @@
      {
        Char mbmapstr[300];
        for (lp = 0; lp < 256; lp++)
-@@ -1215,7 +1215,7 @@ update_dspmbyte_vars(void)
+@@ -1264,7 +1264,7 @@ update_dspmbyte_vars(void)
        mbmapstr[lp] = 0;
        setcopy(STRmbytemap, mbmapstr, VAR_READWRITE);
      }
@@ -77,7 +84,7 @@
  }
  
  /* dspkanji/dspmbyte autosetting */
-@@ -1224,6 +1224,7 @@ void
+@@ -1273,6 +1273,7 @@ void
  autoset_dspmbyte(const Char *pcp)
  {
      int i;
@@ -85,7 +92,7 @@
      static const struct dspm_autoset_Table {
        Char *n;
        Char *v;
-@@ -1246,13 +1247,18 @@ autoset_dspmbyte(const Char *pcp)
+@@ -1295,13 +1296,18 @@ autoset_dspmbyte(const Char *pcp)
  #if defined(HAVE_NL_LANGINFO) && defined(CODESET)
      static const struct dspm_autoset_Table dspmc[] = {
        { STRstarutfstar8, STRutf8 },
@@ -105,8 +112,8 @@
      if (*codeset != '\0') {
        for (i = 0; dspmc[i].n; i++) {
 --- tc.const.c
-+++ tc.const.c 2006-04-25 12:58:31.000000000 +0000
-@@ -130,10 +130,12 @@ Char STRmmliteral[]      = { '-', 'G', '\0' }
++++ tc.const.c 2016-11-25 08:02:39.616478025 +0000
+@@ -133,10 +133,12 @@ Char STRmmliteral[]      = { '-', 'G', '\0' }
  Char STRmmliteral[]   = { '-', '-', 'l', 'i', 't', 'e', 'r', 'a', 'l', '\0' };
  # endif
  Char STReuc[]         = { 'e', 'u', 'c', '\0' };
@@ -119,7 +126,7 @@
  Char STRGB2312[]      = { 'g', 'b', '2', '3', '1', '2', '\0' };
  #  ifdef MBYTEDEBUG   /* Sorry, use for beta testing */
  Char STRmbytemap[]    = { 'm', 'b', 'y', 't', 'e', 'm', 'a', 'p', '\0' };
-@@ -437,7 +439,7 @@ Char STRkilldup[]  = { 'k', 'i', 'l', 'l
+@@ -443,7 +445,7 @@ Char STRkilldup[]  = { 'k', 'i', 'l', 'l
  Char STRshlvl[]               = { 's', 'h', 'l', 'v', 'l', '\0' };
  Char STRKSHLVL[]      = { 'S', 'H', 'L', 'V', 'L', '\0' };
  Char STRLANG[]                = { 'L', 'A', 'N', 'G', '\0' };

++++++ tcsh-6.18.03-colorls.dif ++++++
--- /var/tmp/diff_new_pack.Iw3F93/_old  2016-12-02 16:36:40.000000000 +0100
+++ /var/tmp/diff_new_pack.Iw3F93/_new  2016-12-02 16:36:40.000000000 +0100
@@ -3,7 +3,7 @@
  1 file changed, 12 insertions(+), 13 deletions(-)
 
 --- tw.color.c
-+++ tw.color.c 2015-05-04 13:33:41.521518502 +0000
++++ tw.color.c 2016-11-25 08:02:01.645250915 +0000
 @@ -89,6 +89,7 @@ static Variable variables[] = {
      VAR(NOS, "hl", "44;37"),    /* Reg file extra hard links, obsolete? */
      VAR(NOS, "mh", "44;37"),    /* Reg file extra hard links */
@@ -12,7 +12,7 @@
  };
  
  #define nvariables (sizeof(variables)/sizeof(variables[0]))
-@@ -328,7 +329,7 @@ parseLS_COLORS(const Char *value)
+@@ -325,7 +326,7 @@ parseLS_COLORS(const Char *value)
      size_t  i, len;
      const Char         *v;            /* pointer in value */
      char   *c;                        /* pointer in colors */
@@ -21,7 +21,7 @@
      jmp_buf_t osetexit;
      size_t omark;
  
-@@ -385,13 +386,10 @@ parseLS_COLORS(const Char *value)
+@@ -382,13 +383,10 @@ parseLS_COLORS(const Char *value)
                        if ((Char)variables[i].variable[0] == (v[0] & CHAR) &&
                            (Char)variables[i].variable[1] == (v[1] & CHAR))
                            break;
@@ -38,7 +38,7 @@
                }
                break;
            }
-@@ -450,12 +448,13 @@ print_color(const Char *fname, size_t le
+@@ -447,12 +445,13 @@ print_color(const Char *fname, size_t le
                break;
            }
        if (i == nvariables) {

++++++ tcsh-6.18.03-history-file-locking.patch ++++++
--- /var/tmp/diff_new_pack.Iw3F93/_old  2016-12-02 16:36:40.000000000 +0100
+++ /var/tmp/diff_new_pack.Iw3F93/_new  2016-12-02 16:36:40.000000000 +0100
@@ -25,7 +25,7 @@
  8 files changed, 178 insertions(+), 96 deletions(-)
 
 --- sh.c
-+++ sh.c       2015-05-04 13:53:54.000000000 +0000
++++ sh.c       2016-11-25 08:03:43.567176291 +0000
 @@ -141,6 +141,7 @@ struct saved_state {
      int         cantell;
      struct Bin          B;
@@ -34,7 +34,7 @@
  };
  
  static        int               srccat        (Char *, Char *);
-@@ -1378,7 +1379,7 @@ main(int argc, char **argv)
+@@ -1384,7 +1385,7 @@ main(int argc, char **argv)
        /*
         * Source history before .login so that it is available in .login
         */
@@ -43,7 +43,7 @@
  #ifndef LOGINFIRST
        if (loginsh)
            (void) srccat(varval(STRhome), STRsldotlogin);
-@@ -1501,7 +1502,7 @@ static int
+@@ -1507,7 +1508,7 @@ static int
  srccat(Char *cp, Char *dp)
  {
      if (cp[0] == '/' && cp[1] == '\0') 
@@ -52,7 +52,7 @@
      else {
        Char *ep;
        char   *ptr;
-@@ -1517,7 +1518,7 @@ srccat(Char *cp, Char *dp)
+@@ -1523,7 +1524,7 @@ srccat(Char *cp, Char *dp)
        cleanup_push(ep, xfree);
        ptr = short2str(ep);
  
@@ -61,7 +61,7 @@
        cleanup_until(ep);
        return rv;
      }
-@@ -1531,20 +1532,49 @@ static int
+@@ -1537,20 +1538,49 @@ static int
  #else
  int
  #endif /*WINNT_NATIVE*/
@@ -123,7 +123,7 @@
  }
  
  
-@@ -1553,7 +1583,7 @@ srcfile(const char *f, int onlyown, int
+@@ -1559,7 +1589,7 @@ srcfile(const char *f, int onlyown, int
   * fd.
   */
  static void
@@ -132,7 +132,7 @@
  {
      st->insource      = insource;
      st->SHIN          = SHIN;
-@@ -1602,10 +1632,14 @@ st_save(struct saved_state *st, int unit
+@@ -1608,10 +1638,14 @@ st_save(struct saved_state *st, int unit
      st->onelflg               = onelflg;
      st->enterhist     = enterhist;
      st->justpr                = justpr;
@@ -148,7 +148,7 @@
      st->cantell               = cantell;
      cpybin(st->B, B);
  
-@@ -1644,7 +1678,7 @@ st_save(struct saved_state *st, int unit
+@@ -1650,7 +1684,7 @@ st_save(struct saved_state *st, int unit
      evalp     = 0;
      alvec     = al;
      alvecp    = 0;
@@ -157,7 +157,7 @@
      if (enterhist)
        HIST    = '\0';
      insource  = 1;
-@@ -1677,7 +1711,8 @@ st_restore(void *xst)
+@@ -1683,7 +1717,8 @@ st_restore(void *xst)
      }
      cpybin(B, st->B);
  
@@ -167,7 +167,7 @@
  
      insource  = st->insource;
      SHIN      = st->SHIN;
-@@ -1713,7 +1748,7 @@ st_restore(void *xst)
+@@ -1719,7 +1754,7 @@ st_restore(void *xst)
   * we don't chance it.        This occurs on ".cshrc"s and the like.
   */
  static void
@@ -176,7 +176,7 @@
  {
      struct saved_state st;
  
-@@ -1739,7 +1774,7 @@ srcunit(int unit, int onlyown, int hflg,
+@@ -1745,7 +1780,7 @@ srcunit(int unit, int onlyown, int hflg,
      }
  
      /* Save the current state and move us to a new state */
@@ -185,7 +185,7 @@
  
      /*
       * Now if we are allowing commands to be interrupted, we let ourselves be
-@@ -2078,7 +2113,7 @@ process(int catch)
+@@ -2087,7 +2122,7 @@ process(int catch)
         * elsewhere...
         */
        if (enterhist || (catch && intty && !whyles && !tellwhat && !arun))
@@ -194,7 +194,7 @@
  
        if (Expand && seterr)
            Expand = 0;
-@@ -2165,21 +2200,28 @@ process(int catch)
+@@ -2174,21 +2209,28 @@ process(int catch)
  void
  dosource(Char **t, struct command *c)
  {
@@ -226,7 +226,7 @@
      }
  
      f = globone(*t++, G_ERROR);
-@@ -2188,9 +2230,15 @@ dosource(Char **t, struct command *c)
+@@ -2197,9 +2239,15 @@ dosource(Char **t, struct command *c)
      xfree(f);
      t = glob_all_or_error(t);
      cleanup_push(t, blk_cleanup);
@@ -245,7 +245,7 @@
  
  /*
 --- sh.decls.h
-+++ sh.decls.h 2015-05-04 13:56:16.000000000 +0000
++++ sh.decls.h 2016-11-25 08:03:43.567176291 +0000
 @@ -38,6 +38,7 @@
   */
  extern        Char             *gethdir       (const Char *);
@@ -262,7 +262,7 @@
  extern        void              opendir_cleanup(void *);
  extern        void              sigint_cleanup(void *);
  extern        void              sigprocmask_cleanup(void *);
-@@ -220,7 +222,7 @@ extern  struct Hist         *enthist       (int, str
+@@ -221,7 +223,7 @@ extern  struct Hist         *enthist       (int, str
  extern        void              savehist      (struct wordent *, int);
  extern        char             *fmthist       (int, ptr_t);
  extern        void              rechist       (Char *, int);
@@ -272,7 +272,7 @@
  extern        void              sethistory    (int);
  
 --- sh.dol.c
-+++ sh.dol.c   2013-03-28 09:06:43.000000000 +0000
++++ sh.dol.c   2016-11-25 08:03:43.571176209 +0000
 @@ -1120,6 +1120,6 @@ again:
      *obp = 0;
      tmp = short2str(obuf);
@@ -282,7 +282,7 @@
      cleanup_until(&inheredoc);
  }
 --- sh.err.c
-+++ sh.err.c   2013-03-28 09:06:43.000000000 +0000
++++ sh.err.c   2016-11-25 08:03:43.571176209 +0000
 @@ -514,6 +514,22 @@ open_cleanup(void *xptr)
  }
  
@@ -307,7 +307,7 @@
  {
      DIR *dir;
 --- sh.h
-+++ sh.h       2013-03-28 09:06:43.000000000 +0000
++++ sh.h       2016-11-25 08:03:43.571176209 +0000
 @@ -50,6 +50,24 @@
  # include <inttypes.h>
  #endif
@@ -334,8 +334,8 @@
  typedef unsigned long intptr_t;
  #endif
 --- sh.hist.c
-+++ sh.hist.c  2015-05-04 14:51:57.995328370 +0000
-@@ -36,6 +36,8 @@ RCSID("$tcsh: sh.hist.c,v 3.60 2015/02/2
++++ sh.hist.c  2016-11-25 08:03:43.571176209 +0000
+@@ -36,6 +36,8 @@ RCSID("$tcsh: sh.hist.c,v 3.61 2015/06/0
  
  #include <stdio.h>    /* for rename(2), grr. */
  #include <assert.h>
@@ -636,8 +636,8 @@
  
  void
 --- sh.lex.c
-+++ sh.lex.c   2013-03-28 09:06:43.000000000 +0000
-@@ -1595,7 +1595,7 @@ wide_read(int fildes, Char *buf, size_t
++++ sh.lex.c   2016-11-25 08:03:43.571176209 +0000
+@@ -1602,7 +1602,7 @@ wide_read(int fildes, Char *buf, size_t
      /* Throwing away possible partial multibyte characters on error if the
         stream is not seekable */
      err = errno;
@@ -646,7 +646,7 @@
      errno = err;
      return res != 0 ? res : r;
  }
-@@ -1610,7 +1610,7 @@ bgetc(void)
+@@ -1617,7 +1617,7 @@ bgetc(void)
      if (cantell) {
        if (fseekp < fbobp || fseekp > feobp) {
            fbobp = feobp = fseekp;
@@ -655,7 +655,7 @@
        }
        if (fseekp == feobp) {
  #ifdef WIDE_STRINGS
-@@ -1814,7 +1814,7 @@ btell(struct Ain *l)
+@@ -1821,7 +1821,7 @@ btell(struct Ain *l)
  void
  btoeof(void)
  {
@@ -664,7 +664,7 @@
      aret = TCSH_F_SEEK;
      fseekp = feobp;
      alvec = NULL;
-@@ -1832,7 +1832,7 @@ settell(void)
+@@ -1839,7 +1839,7 @@ settell(void)
      cantell = 0;
      if (arginp || onelflg || intty)
        return;
@@ -674,8 +674,8 @@
      fbuf = xcalloc(2, sizeof(Char **));
      fblocks = 1;
 --- sh.sem.c
-+++ sh.sem.c   2013-03-28 09:06:43.000000000 +0000
-@@ -903,7 +903,7 @@ doio(struct command *t, int *pipein, int
++++ sh.sem.c   2016-11-25 08:03:43.571176209 +0000
+@@ -909,7 +909,7 @@ doio(struct command *t, int *pipein, int
            fd = xopen(tmp, O_WRONLY|O_APPEND|O_LARGEFILE);
  #else /* !O_APPEND */
            fd = xopen(tmp, O_WRONLY|O_LARGEFILE);

++++++ tcsh-6.19.00-history-file-locking-order.patch ++++++
---
 sh.c |   57 +++++++++++++++++++++++++++++++++------------------------
 1 file changed, 33 insertions(+), 24 deletions(-)

--- sh.c
+++ sh.c        2016-11-25 08:05:00.501610199 +0000
@@ -1540,18 +1540,18 @@ int
 #endif /*WINNT_NATIVE*/
 srcfile(const char *f, int onlyown, int flg, Char **av)
 {
-    int *unit;
+    int unit, *hd = NULL;
 
-    unit = xmalloc(sizeof(*unit));
-    cleanup_push(unit, xfree);
-    *unit = xopen(f, O_LARGEFILE |
+    unit = xopen(f, O_LARGEFILE |
                    ((flg & HIST_FILE_WRLCK) ? (O_CREAT|O_RDWR) : O_RDONLY), 
0600);
-    if (*unit == -1)
+    if (unit < 0)
        return 0; /* Error. */
 
-    cleanup_push(unit, open_cleanup);
-    *unit = dmove(*unit, -1);
-    (void) close_on_exec(*unit, 1);
+    cleanup_push(&unit, open_cleanup);
+    unit = dmove(unit, -1);
+    cleanup_ignore(&unit);
+    cleanup_until(&unit);
+    (void) close_on_exec(unit, 1);
 
     if (flg & (HIST_FILE_WRLCK | HIST_FILE_RDLCK)) {
        struct flock fl;
@@ -1561,26 +1561,35 @@ srcfile(const char *f, int onlyown, int
        fl.l_start = 0;
        fl.l_len = 0;
 
-       cleanup_push(unit, fcntl_cleanup);
-       if (fcntl(*unit, F_SETLKW, &fl) == -1)
-           cleanup_ignore(unit);
-    }
+       hd = xmalloc(sizeof(*hd));
+       cleanup_push(hd, xfree);
 
-    srcunit(*unit, onlyown, flg, av);
+       *hd = fcntl(unit, F_DUPFD_CLOEXEC, FSAFE+1);
+       cleanup_push(hd, open_cleanup);
 
-    /* Unlock the unit, if we don't want to leave it locked (or open). */
-    if ((flg & (HIST_FILE_WRLCK | HIST_FILE_RDLCK)) &&
-        (!(flg & HIST_FILE_LOCK) || !(flg & HIST_FILE_OPEN)))
-       cleanup_until(unit); /* fcntl_cleanup */
-
-    /* Close the unit, if we don't want to leave it open. */
-    if (!(flg & HIST_FILE_OPEN)) {
-       cleanup_until(unit); /* open_cleanup */
-       cleanup_until(unit); /* xfree */
-       return -1; /* Not error but invalid file descriptor. */
+       fcntl(*hd, F_SETLKW, &fl);
+       cleanup_push(hd, fcntl_cleanup);
     }
 
-    return *unit; /* File descriptor (fd > FSAFE). */
+    cleanup_push(&unit, open_cleanup);
+    /*
+     * This one *does* do a cleanup_until() hence a open_cleanup()
+     * therefore use a duplicated fd to lock/unlock the history file
+     */
+    srcunit(unit, onlyown, flg, av);
+    cleanup_until(&unit);      /* Close the official unit. */
+
+    if (!hd)
+       return -1;              /* Not error but invalid file descriptor. */
+
+    if ((flg & HIST_FILE_OPEN) && (flg & HIST_FILE_LOCK))
+       return -1;
+
+    cleanup_until(hd);         /* fcntl_cleanup */
+    cleanup_until(hd);         /* open_cleanup */
+    cleanup_until(hd);         /* xfree */
+
+    return unit;               /* File descriptor (fd > FSAFE). */
 }
 
 
++++++ tcsh-6.20-rmstar.patch ++++++
>From 766c095e4c8c57aea196a1325e395f5d6162cdce Mon Sep 17 00:00:00 2001
From: "David Kaspar [Dee'Kej]" <dkas...@redhat.com>
Date: Mon, 28 Nov 2016 17:48:29 +0100
Subject: [PATCH] Regression of 'rm *' when 'rmstar' is set fixed

  This regression was introduced by commit: 858a705a79a5389

Signed-off-by: David Kaspar [Dee'Kej] <dkas...@redhat.com>
---
 sh.func.c | 7 ++++---
 1 file changed, 4 insertions(+), 3 deletions(-)

diff --git a/sh.func.c b/sh.func.c
index a866076..b0dfbc9 100644
--- a/sh.func.c
+++ b/sh.func.c
@@ -2734,16 +2734,17 @@ nlsclose(void)
 int
 getYN(const char *prompt)
 {
-    int doit, c;
+    int doit;
+    char c;
     xprintf("%s", prompt);
     flush();
-    (void) force_read(SHIN, &c, 1);
+    (void) force_read(SHIN, &c, sizeof(c));
     /* 
      * Perhaps we should use the yesexpr from the
      * actual locale
      */
     doit = (strchr(CGETS(22, 14, "Yy"), c) != NULL);
-    while (c != '\n' && force_read(SHIN, &c, 1) == 1)
+    while (c != '\n' && force_read(SHIN, &c, sizeof(c)) == 1)
        continue;
     return doit;
 }
-- 
2.7.4++++++ tcsh-6.18.03.dif -> tcsh-6.20.00.dif ++++++
--- /work/SRC/openSUSE:Factory/tcsh/tcsh-6.18.03.dif    2015-05-15 
09:54:55.000000000 +0200
+++ /work/SRC/openSUSE:Factory/.tcsh.new/tcsh-6.20.00.dif       2016-12-02 
16:36:38.000000000 +0100
@@ -1,24 +1,32 @@
 ---
- config/linux |    7 +++++++
- config_f.h   |   13 +++++++++----
+ config/linux |   10 ++++++++++
+ config_f.h   |   11 ++++++++---
  configure    |    2 +-
  configure.ac |    2 +-
  glob.h       |    3 ++-
  pathnames.h  |    2 +-
  sh.c         |    3 +++
- sh.h         |    2 +-
- sh.print.c   |    8 ++++----
  tc.alloc.c   |   10 ++++++----
  tc.func.c    |    8 ++++++--
  tc.str.c     |    2 +-
  tc.who.c     |    3 +++
  tcsh.man     |    2 +-
  tw.h         |    4 ++++
- 15 files changed, 50 insertions(+), 21 deletions(-)
+ 13 files changed, 47 insertions(+), 15 deletions(-)
 
 --- config/linux
-+++ config/linux       2011-11-16 12:15:09.000000000 +0000
-@@ -132,4 +132,11 @@
++++ config/linux       2016-11-25 09:07:12.893851835 +0000
+@@ -92,6 +92,9 @@
+ #ifndef _SVID_SOURCE
+ # define _SVID_SOURCE
+ #endif
++#ifndef _DEFAULT_SOURCE
++# define _DEFAULT_SOURCE
++#endif
+ #ifndef _POSIX_SOURCE
+ # define _POSIX_SOURCE
+ #endif
+@@ -132,4 +135,11 @@
  # define POSIX
  #endif
  
@@ -31,17 +39,8 @@
 +
  #endif /* _h_config */
 --- config_f.h
-+++ config_f.h 2011-11-16 12:17:18.000000000 +0000
-@@ -37,7 +37,7 @@
-  */
- #ifndef _h_config_f
- #define _h_config_f
--
-+#include <features.h>
- /*
-  * SHORT_STRINGS Use at least 16 bit characters instead of 8 bit chars
-  *             This fixes up quoting problems and eases implementation
-@@ -60,7 +60,12 @@
++++ config_f.h 2016-11-25 08:18:00.925719793 +0000
+@@ -64,7 +64,12 @@
  /*
   * LOGINFIRST   Source ~/.login before ~/.cshrc
   */
@@ -55,7 +54,7 @@
  
  /*
   * VIDEFAULT    Make the VI mode editor the default
-@@ -154,7 +159,7 @@
+@@ -158,7 +163,7 @@
   *            successful, set $REMOTEHOST to the name or address of the
   *            host
   */
@@ -64,7 +63,7 @@
  
  /*
   * COLOR_LS_F Do you want to use builtin color ls-F ?
-@@ -177,7 +182,7 @@
+@@ -181,7 +186,7 @@
   * RCSID      This defines if we want rcs strings in the binary or not
   *
   */
@@ -74,8 +73,8 @@
  #  define RCSID(id) static char *rcsid = (id);
  # else
 --- configure
-+++ configure  2011-11-16 10:49:20.000000000 +0000
-@@ -4277,7 +4277,7 @@ return tgetent ();
++++ configure  2016-11-25 08:18:00.925719793 +0000
+@@ -4284,7 +4284,7 @@ return tgetent ();
    return 0;
  }
  _ACEOF
@@ -85,18 +84,18 @@
      ac_res="none required"
    else
 --- configure.ac
-+++ configure.ac       2015-05-04 14:27:52.000000000 +0000
-@@ -309,7 +309,7 @@ fi
++++ configure.ac       2016-11-25 08:20:19.034907025 +0000
+@@ -317,7 +317,7 @@ esac
  dnl Checks for libraries
  AC_SEARCH_LIBS(crypt, crypt)
  AC_SEARCH_LIBS(getspnam, sec)
--AC_SEARCH_LIBS(tgetent, termlib termcap curses ncurses)
-+AC_SEARCH_LIBS(tgetent, termlib termcap tinfo curses ncurses)
+-AC_SEARCH_LIBS([tgetent], [termlib termcap curses ncurses], [], [
++AC_SEARCH_LIBS([tgetent], [termlib termcap tinfo curses ncurses], [], [
+    AC_MSG_ERROR([unable to find the tgetent() function])
+ ])
  AC_SEARCH_LIBS(gethostbyname, nsl)
- AC_SEARCH_LIBS(connect, socket)
- AC_SEARCH_LIBS(catgets, catgets)
 --- glob.h
-+++ glob.h     2006-04-25 12:58:31.000000000 +0000
++++ glob.h     2016-11-25 08:18:00.925719793 +0000
 @@ -72,6 +72,7 @@ typedef struct {
  #define       GLOB_NOSYS      (-4)    /* Implementation does not support 
function. */
  
@@ -115,7 +114,7 @@
  int   glob (const char *, int, int (*)(const char *, int), glob_t *);
  void  globfree (glob_t *);
 --- pathnames.h
-+++ pathnames.h        2006-04-25 12:58:31.000000000 +0000
++++ pathnames.h        2016-11-25 08:18:00.925719793 +0000
 @@ -84,7 +84,7 @@
  # endif /* !_PATH_DOTLOGIN */
  #endif /* sgi || OREO || cray || AMIX || CDC */
@@ -126,8 +125,8 @@
  #endif /* _CRAYCOM && !_PATH_TCSHELL */
  
 --- sh.c
-+++ sh.c       2010-12-10 16:10:45.000000000 +0000
-@@ -1365,6 +1365,9 @@ main(int argc, char **argv)
++++ sh.c       2016-11-25 08:18:00.925719793 +0000
+@@ -1371,6 +1371,9 @@ main(int argc, char **argv)
            setintr = osetintr;
            parintr = oparintr;
        }
@@ -138,8 +137,8 @@
        if (loginsh)
            (void) srccat(varval(STRhome), STRsldotlogin);
 --- tc.alloc.c
-+++ tc.alloc.c 2015-05-04 14:29:30.000000000 +0000
-@@ -514,7 +514,7 @@ smalloc(size_t n)
++++ tc.alloc.c 2016-11-25 08:18:00.929719710 +0000
+@@ -521,7 +521,7 @@ smalloc(size_t n)
  {
      ptr_t   ptr;
  
@@ -148,7 +147,7 @@
  
  #ifdef USE_SBRK
      if (membot == NULL)
-@@ -537,7 +537,7 @@ srealloc(ptr_t p, size_t n)
+@@ -544,7 +544,7 @@ srealloc(ptr_t p, size_t n)
  {
      ptr_t   ptr;
  
@@ -157,7 +156,7 @@
  
  #ifdef USE_SBRK
      if (membot == NULL)
-@@ -561,7 +561,7 @@ scalloc(size_t s, size_t n)
+@@ -568,7 +568,7 @@ scalloc(size_t s, size_t n)
      ptr_t   ptr;
  
      n *= s;
@@ -166,7 +165,7 @@
  
  #ifdef USE_SBRK
      if (membot == NULL)
-@@ -586,8 +586,10 @@ scalloc(size_t s, size_t n)
+@@ -593,8 +593,10 @@ scalloc(size_t s, size_t n)
  void
  sfree(ptr_t p)
  {
@@ -179,8 +178,8 @@
  
  #endif /* SYSMALLOC */
 --- tc.func.c
-+++ tc.func.c  2007-07-13 11:15:03.000000000 +0000
-@@ -714,9 +714,13 @@ auto_lock(void)
++++ tc.func.c  2016-11-25 08:18:00.929719710 +0000
+@@ -725,9 +725,13 @@ auto_lock(void)
            handle_pending_signals();
            errno = 0;
        }
@@ -195,7 +194,7 @@
  
  #else
  
-@@ -1933,7 +1937,7 @@ getremotehost(int dest_fd)
+@@ -1934,7 +1938,7 @@ getremotehost(int dest_fd)
             * have not caught up yet.
             */
            addr.s_addr = inet_addr(name);
@@ -205,8 +204,8 @@
            else {
                if (sptr != name) {
 --- tc.str.c
-+++ tc.str.c   2006-04-25 12:58:31.000000000 +0000
-@@ -342,7 +342,7 @@ s_strlen(const Char *str)
++++ tc.str.c   2016-11-25 08:18:00.929719710 +0000
+@@ -350,7 +350,7 @@ s_strlen(const Char *str)
  {
      size_t n;
  
@@ -216,7 +215,7 @@
      return (n);
  }
 --- tc.who.c
-+++ tc.who.c   2012-01-16 09:55:14.000000000 +0000
++++ tc.who.c   2016-11-25 08:18:00.929719710 +0000
 @@ -280,6 +280,9 @@ watch_login(int force)
      }
      stlast = sta.st_mtime;
@@ -228,8 +227,8 @@
  #else
      if ((utmpfd = xopen(TCSH_PATH_UTMP, O_RDONLY|O_LARGEFILE)) < 0) {
 --- tcsh.man
-+++ tcsh.man   2006-04-25 12:58:31.000000000 +0000
-@@ -579,7 +579,7 @@ Repeating \fIdabbrev-expand\fR without a
++++ tcsh.man   2016-11-25 08:21:43.605184550 +0000
+@@ -603,7 +603,7 @@ Repeating \fIdabbrev-expand\fR without a
  changes to the next previous word etc., skipping identical matches
  much like \fIhistory-search-backward\fR does.
  .TP 8
@@ -237,9 +236,9 @@
 +.B delete-char \fR(bound to `Del' if using the standard \fI/etc/csh.cshrc\fR)
  Deletes the character under the cursor.
  See also \fIdelete-char-or-list-or-eof\fR.
- .TP 8
+ Cursor behavior modified by \fBvimode\fR.
 --- tw.h
-+++ tw.h       2006-04-25 12:58:31.000000000 +0000
++++ tw.h       2016-11-25 08:18:00.929719710 +0000
 @@ -33,6 +33,10 @@
  #ifndef _h_tw
  #define _h_tw

++++++ tcsh-6.19.00.tar.gz -> tcsh-6.20.00.tar.gz ++++++
++++ 16629 lines of diff (skipped)


Reply via email to