openSUSE Commits
Threads by month
- ----- 2024 -----
- May
- April
- March
- February
- January
- ----- 2023 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2022 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2021 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2020 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2019 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2018 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2017 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2016 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2015 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2014 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2013 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2012 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2011 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2010 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2009 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2008 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2007 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2006 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
February 2013
- 1 participants
- 1989 discussions
Hello community,
here is the log from the commit of package ksh for openSUSE:12.3 checked in at 2013-02-01 15:48:53
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Comparing /work/SRC/openSUSE:12.3/ksh (Old)
and /work/SRC/openSUSE:12.3/.ksh.new (New)
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Package is "ksh", Maintainer is "werner(a)suse.com"
Changes:
--------
--- /work/SRC/openSUSE:12.3/ksh/ksh.changes 2013-01-31 01:22:41.000000000 +0100
+++ /work/SRC/openSUSE:12.3/.ksh.new/ksh.changes 2013-02-01 15:48:54.000000000 +0100
@@ -1,0 +2,14 @@
+Wed Jan 30 11:17:34 UTC 2013 - werner(a)suse.de
+
+- Finally found the reason for bnc#795324, that is avoid to free
+ data which is used lateron in the has tree of reloaded shell
+ functions.
+
+-------------------------------------------------------------------
+Thu Jan 17 11:19:59 UTC 2013 - werner(a)suse.de
+
+- Avoid to skip builtin functions of the gcc if the libast does not
+ provide them. Maybe related, to bnc#795324, where a crash happens
+ in libc strcmp() if optimized for sse2 on AMD Opteron[tm] 6128.
+
+-------------------------------------------------------------------
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Other differences:
------------------
++++++ ksh.spec ++++++
--- /var/tmp/diff_new_pack.P4w1nR/_old 2013-02-01 15:48:55.000000000 +0100
+++ /var/tmp/diff_new_pack.P4w1nR/_new 2013-02-01 15:48:55.000000000 +0100
@@ -1,7 +1,7 @@
#
# spec file for package ksh
#
-# Copyright (c) 2012 SUSE LINUX Products GmbH, Nuernberg, Germany.
+# Copyright (c) 2013 SUSE LINUX Products GmbH, Nuernberg, Germany.
#
# All modifications and additions to the file contributed by third parties
# remain the property of their copyright owners, unless otherwise agreed
@@ -109,11 +109,17 @@
Patch23: ksh93-foreground-prgrp.dif
Patch24: ksh93-builtin.dif
Patch25: ksh93-vmleak.dif
+# PATCH-FIX-UPSTREAM ksh93-read-dont-ignore-esc.dif [bnc#765171]
Patch26: ksh93-read-dont-ignore-esc.dif
+# PATCH-EXTEND-UPSTREAM astksh_builtin_poll20120806_001.diff [bnc#779888]
Patch27: astksh_builtin_poll20120806_001.diff
+# PATCH-FIX-UPSTREAM ksh93-env.dif [bnc#785266]
Patch28: ksh93-env.dif
+# PATCH-FIX-UPSTREAM ksh93-zerofill.dif [bnc#785360]
Patch29: ksh93-zerofill.dif
+# PATCH-FIX-UPSTREAM ksh93-pathtemp.dif [bnc#786134]
Patch30: ksh93-pathtemp.dif
+# PATCH-FIX-UPSTREAM ksh93-dttree-crash.dif [bnc#795324]
Patch31: ksh93-dttree-crash.dif
Patch42: ksh-locale.patch
@@ -246,32 +252,11 @@
#
RPM_OPT_FLAGS="${RPM_OPT_FLAGS//-funwind-tables/}"
RPM_OPT_FLAGS="${RPM_OPT_FLAGS//-fasynchronous-unwind-tables/}"
- nobuiltin=${TMPDIR:-/tmp}/nobuiltin
- set -C
- (cat<<-EOF
- -fno-builtin-putenv
- -fno-builtin-setenv
- -fno-builtin-strftime
- -fno-builtin-strlcat
- -fno-builtin-strlcpy
- -fno-builtin-strptime
- -fno-builtin-strtod
- -fno-builtin-strtol
- -fno-builtin-strtold
- -fno-builtin-strtoll
- -fno-builtin-strtoul
- -fno-builtin-strtoull
- EOF
- find src/lib/ -name '*.h' | xargs \
- sed -nr '\@^extern[[:blank:]].*[[:blank:]](str|mem|(get|put|set)env|(c|m|re|v)alloc).*\(@{
- s@[[:blank:]]+_ARG_@@
- s@[a-zA-Z_\*]+[[:blank:]]+@@g
- s@([^\(\)]+)\(.*\);$@-fno-builtin-\1@; p}') | \
- sort -u > $nobuiltin
- set +C
# This package failed when testing with -Wl,-as-needed being default.
# So we disable it here, if you want to retest, just delete this
# comment and the line below.
+ RPM_OPT_FLAGS="${RPM_OPT_FLAGS//-as-needed/-no-as-needed/}"
+ # Use POSIX as environment
test -n "${!LC_*}" && unset "${!LC_*}"
cflags ()
{
@@ -405,7 +390,6 @@
LDSOFLG=""
cflags -std=gnu99 RPM_OPT_FLAGS
cflags -fPIC RPM_OPT_FLAGS
- cflags @$nobuiltin RPM_OPT_FLAGS
cflags -fno-strict-aliasing RPM_OPT_FLAGS
cflags -fno-zero-initialized-in-bss RPM_OPT_FLAGS
cflags -fno-delete-null-pointer-checks RPM_OPT_FLAGS
@@ -414,8 +398,9 @@
cflags -fsigned-chars RPM_OPT_FLAGS
cflags -fsigned-zeros RPM_OPT_FLAGS
case "$(gcc --version | head -n 1)" in
- *4.3.*) cflags -fno-tree-sink RPM_OPT_FLAGS ;;
- *4.6.*) cflags -ftree-loop-linear RPM_OPT_FLAGS ;;
+ *4.[012345].*)
+ cflags -fno-tree-sink RPM_OPT_FLAGS ;;
+ *) cflags -ftree-loop-linear RPM_OPT_FLAGS ;;
esac
cflags -g2 RPM_OPT_FLAGS
cflags -pipe RPM_OPT_FLAGS
@@ -435,6 +420,51 @@
printenv
getconf PAGESIZE
+ #
+ # Build libast first and then determine the library functions used
+ # by this library simply to avoid that gcc will overwrites those with
+ # its own builtin functions.
+ #
+ bin/package make ast-ast CCFLAGS="$RPM_OPT_FLAGS -fno-builtin" HOSTTYPE="$HOSTTYPE" AR="$AR" CC="$CC"
+ root=$(echo ${PWD}/arch/linux*)
+ test -d $root || exit 1
+ log=${root}/lib/package/gen/make.out
+ test -s $log || exit 1
+ for lib in libast ; do
+ test -s ${root}/lib/${lib}.a || exit 1
+ obj=$(ar t ${root}/lib/${lib}.a)
+ test $? -eq 0 || exit 1
+ case "$lib" in
+ libast)
+ base=src/lib/$lib
+ vers=$(grep :LIBRARY: ${base}/Makefile | sed "s@.*\([0-9]\+\.[0-9]\+\).*@\1@")
+ link="-L${root}/lib/ -Wl,-rpath-link,${root}/lib -Wl,-rpath,/%{_lib}/ast $LDSOFLG"
+ ;;
+ esac
+ soname="-Wl,-soname,${lib}.so.${vers%.*},-stats"
+ pushd ${root}/${base}
+ $CC -shared $soname -o ${root}/lib/${lib}.so.${vers} ${obj} $link
+ ln -sf ${lib}.so.${vers} ${root}/lib/${lib}.so.${vers%.*}
+ ln -sf ${lib}.so.${vers} ${root}/lib/${lib}.so
+ popd
+ done
+ nobuiltin=${TMPDIR:-/tmp}/nobuiltin
+ nm -D ${root}/lib/libast.so | \
+ grep -E 'T[[:blank:]](_ast_)?(str|mem|(get|put|set)env|(c|m|re|v)alloc)' | \
+ sed -r 's/[[:xdigit:]]+[[:blank:]]+T[[:blank:]]+(_ast_)?([^[:blank:]]*)/-fno-builtin-\2/' | \
+ sort -u > $nobuiltin
+ rm -rf $root
+ case "$(gcc --version | head -n 1)" in
+ *4.[01].*)
+ set +x
+ for opt in $(cat $nobuiltin) ; do
+ cflags $opt RPM_OPT_FLAGS
+ done
+ set -x
+ ;;
+ *) cflags @$nobuiltin RPM_OPT_FLAGS
+ esac
+
bin/package make CCFLAGS="$RPM_OPT_FLAGS" HOSTTYPE="$HOSTTYPE" AR="$AR" CC="$CC"
root=$(echo ${PWD}/arch/linux*)
test -d $root || exit 1
@@ -473,11 +503,6 @@
ln -sf ${lib}.so.${vers} ${root}/lib/${lib}.so
popd
done
- nm -D ${root}/lib/libast.so | \
- grep -E 'T[[:blank:]](str|mem|(get|put|set)env|(c|m|re|v)alloc)' | \
- awk '{print "-fno-builtin-"$3}' | \
- sort -u | \
- diff -u $nobuiltin - || true
base=src/cmd/ksh93
test=${PWD}/${base}/tests
OPATH=$PATH
@@ -563,7 +588,7 @@
$bin --nroff 2>&1 | sed 's/\(\.TH .*\)/\1 "%{date}" "" "Korn shell utilities"/' > ../man/man1/$bin.1
done
popd
- test -d /tmp -ef ${TMPDIR} || rm -rf ${TMPDIR}
+ test -d /tmp -a /tmp -ef ${TMPDIR} || rm -rf ${TMPDIR}
SHELL=$OSHELL
PATH=$OPATH
++++++ ksh93-dttree-crash.dif ++++++
++++ 614 lines (skipped)
++++ between /work/SRC/openSUSE:12.3/ksh/ksh93-dttree-crash.dif
++++ and /work/SRC/openSUSE:12.3/.ksh.new/ksh93-dttree-crash.dif
++++++ ksh93-gcc.dif ++++++
--- /var/tmp/diff_new_pack.P4w1nR/_old 2013-02-01 15:48:55.000000000 +0100
+++ /var/tmp/diff_new_pack.P4w1nR/_new 2013-02-01 15:48:55.000000000 +0100
@@ -39,3 +39,69 @@
/*
* search for an include file
* if (flags&SEARCH_INCLUDE) then
+--- src/lib/libcmd/Mamfile
++++ src/lib/libcmd/Mamfile 2013-01-28 10:46:23.141952570 +0000
+@@ -429,6 +429,7 @@ make uniq.c
+ prev cmd.h implicit
+ done uniq.c
+ make vmstate.c
++prev ${PACKAGE_ast_INCLUDE}/sfdisc.h implicit
+ prev ${PACKAGE_ast_INCLUDE}/vmalloc.h implicit
+ prev cmd.h implicit
+ done vmstate.c
+--- src/lib/libast/misc/optget.c
++++ src/lib/libast/misc/optget.c 2013-01-28 14:52:53.069452260 +0000
+@@ -2406,7 +2406,6 @@ opthelp(const char* oopts, const char* w
+ int bflags = 0;
+ int dflags = 0;
+ int hflags = 0;
+- int sflags = 0;
+ int matched = 0;
+ int paragraph = 0;
+ Push_t* psp = 0;
+@@ -4368,9 +4367,9 @@ optget(register char** argv, const char*
+ */
+
+ opt_info.assignment = 0;
+- num = 1;
+- w = v = 0;
+- x = 0;
++ nov = no = num = 1;
++ e = w = v = 0;
++ n = x = 0;
+ for (;;)
+ {
+ if (!opt_info.offset)
+@@ -4609,6 +4608,7 @@ optget(register char** argv, const char*
+ opt_info.num = (long)(opt_info.number = optnumber(opt_info.arg, &e, &err));
+ if (err || e == opt_info.arg)
+ {
++ opt_info.num = (long)(opt_info.number = 0);
+ if (!err && (k & OPT_cache_optional))
+ {
+ opt_info.arg = 0;
+@@ -4636,6 +4636,7 @@ optget(register char** argv, const char*
+ opt_info.arg = 0;
+ opt_info.index--;
+ opt_info.offset = 0;
++ opt_info.num = (long)(opt_info.number = 0);
+ return c;
+ }
+ if (k & OPT_cache_string)
+@@ -5213,7 +5214,7 @@ optget(register char** argv, const char*
+
+ if (opt_info.num != LONG_MIN)
+ opt_info.num = (long)(opt_info.number = num);
+- if ((n = *++s == '#') || *s == ':' || w && !nov && v && (optnumber(v, &e, NiL), n = !*e))
++ if ((n = (*++s == '#')) || *s == ':' || w && !nov && v && (optnumber(v, &e, NiL), n = !*e))
+ {
+ if (w)
+ {
+@@ -5306,6 +5307,7 @@ optget(register char** argv, const char*
+ opt_info.index++;
+ if (*(s + 1) == '?' && (*opt_info.arg == '-' || (pass->flags & OPT_plus) && *opt_info.arg == '+') && *(opt_info.arg + 1))
+ {
++ opt_info.num = (long)(opt_info.number = 0);
+ opt_info.index--;
+ opt_info.arg = 0;
+ }
--
To unsubscribe, e-mail: opensuse-commit+unsubscribe(a)opensuse.org
For additional commands, e-mail: opensuse-commit+help(a)opensuse.org
1
0
Hello community,
here is the log from the commit of package ksh for openSUSE:Factory checked in at 2013-02-01 15:48:48
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Comparing /work/SRC/openSUSE:Factory/ksh (Old)
and /work/SRC/openSUSE:Factory/.ksh.new (New)
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Package is "ksh", Maintainer is "werner(a)suse.com"
Changes:
--------
--- /work/SRC/openSUSE:Factory/ksh/ksh.changes 2012-12-28 15:03:17.000000000 +0100
+++ /work/SRC/openSUSE:Factory/.ksh.new/ksh.changes 2013-02-01 15:48:50.000000000 +0100
@@ -1,0 +2,14 @@
+Wed Jan 30 11:17:34 UTC 2013 - werner(a)suse.de
+
+- Finally found the reason for bnc#795324, that is avoid to free
+ data which is used lateron in the has tree of reloaded shell
+ functions.
+
+-------------------------------------------------------------------
+Thu Jan 17 11:19:59 UTC 2013 - werner(a)suse.de
+
+- Avoid to skip builtin functions of the gcc if the libast does not
+ provide them. Maybe related, to bnc#795324, where a crash happens
+ in libc strcmp() if optimized for sse2 on AMD Opteron[tm] 6128.
+
+-------------------------------------------------------------------
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Other differences:
------------------
++++++ ksh.spec ++++++
--- /var/tmp/diff_new_pack.Pt8mzw/_old 2013-02-01 15:48:52.000000000 +0100
+++ /var/tmp/diff_new_pack.Pt8mzw/_new 2013-02-01 15:48:52.000000000 +0100
@@ -1,7 +1,7 @@
#
# spec file for package ksh
#
-# Copyright (c) 2012 SUSE LINUX Products GmbH, Nuernberg, Germany.
+# Copyright (c) 2013 SUSE LINUX Products GmbH, Nuernberg, Germany.
#
# All modifications and additions to the file contributed by third parties
# remain the property of their copyright owners, unless otherwise agreed
@@ -109,11 +109,17 @@
Patch23: ksh93-foreground-prgrp.dif
Patch24: ksh93-builtin.dif
Patch25: ksh93-vmleak.dif
+# PATCH-FIX-UPSTREAM ksh93-read-dont-ignore-esc.dif [bnc#765171]
Patch26: ksh93-read-dont-ignore-esc.dif
+# PATCH-EXTEND-UPSTREAM astksh_builtin_poll20120806_001.diff [bnc#779888]
Patch27: astksh_builtin_poll20120806_001.diff
+# PATCH-FIX-UPSTREAM ksh93-env.dif [bnc#785266]
Patch28: ksh93-env.dif
+# PATCH-FIX-UPSTREAM ksh93-zerofill.dif [bnc#785360]
Patch29: ksh93-zerofill.dif
+# PATCH-FIX-UPSTREAM ksh93-pathtemp.dif [bnc#786134]
Patch30: ksh93-pathtemp.dif
+# PATCH-FIX-UPSTREAM ksh93-dttree-crash.dif [bnc#795324]
Patch31: ksh93-dttree-crash.dif
Patch42: ksh-locale.patch
@@ -246,32 +252,11 @@
#
RPM_OPT_FLAGS="${RPM_OPT_FLAGS//-funwind-tables/}"
RPM_OPT_FLAGS="${RPM_OPT_FLAGS//-fasynchronous-unwind-tables/}"
- nobuiltin=${TMPDIR:-/tmp}/nobuiltin
- set -C
- (cat<<-EOF
- -fno-builtin-putenv
- -fno-builtin-setenv
- -fno-builtin-strftime
- -fno-builtin-strlcat
- -fno-builtin-strlcpy
- -fno-builtin-strptime
- -fno-builtin-strtod
- -fno-builtin-strtol
- -fno-builtin-strtold
- -fno-builtin-strtoll
- -fno-builtin-strtoul
- -fno-builtin-strtoull
- EOF
- find src/lib/ -name '*.h' | xargs \
- sed -nr '\@^extern[[:blank:]].*[[:blank:]](str|mem|(get|put|set)env|(c|m|re|v)alloc).*\(@{
- s@[[:blank:]]+_ARG_@@
- s@[a-zA-Z_\*]+[[:blank:]]+@@g
- s@([^\(\)]+)\(.*\);$@-fno-builtin-\1@; p}') | \
- sort -u > $nobuiltin
- set +C
# This package failed when testing with -Wl,-as-needed being default.
# So we disable it here, if you want to retest, just delete this
# comment and the line below.
+ RPM_OPT_FLAGS="${RPM_OPT_FLAGS//-as-needed/-no-as-needed/}"
+ # Use POSIX as environment
test -n "${!LC_*}" && unset "${!LC_*}"
cflags ()
{
@@ -405,7 +390,6 @@
LDSOFLG=""
cflags -std=gnu99 RPM_OPT_FLAGS
cflags -fPIC RPM_OPT_FLAGS
- cflags @$nobuiltin RPM_OPT_FLAGS
cflags -fno-strict-aliasing RPM_OPT_FLAGS
cflags -fno-zero-initialized-in-bss RPM_OPT_FLAGS
cflags -fno-delete-null-pointer-checks RPM_OPT_FLAGS
@@ -414,8 +398,9 @@
cflags -fsigned-chars RPM_OPT_FLAGS
cflags -fsigned-zeros RPM_OPT_FLAGS
case "$(gcc --version | head -n 1)" in
- *4.3.*) cflags -fno-tree-sink RPM_OPT_FLAGS ;;
- *4.6.*) cflags -ftree-loop-linear RPM_OPT_FLAGS ;;
+ *4.[012345].*)
+ cflags -fno-tree-sink RPM_OPT_FLAGS ;;
+ *) cflags -ftree-loop-linear RPM_OPT_FLAGS ;;
esac
cflags -g2 RPM_OPT_FLAGS
cflags -pipe RPM_OPT_FLAGS
@@ -435,6 +420,51 @@
printenv
getconf PAGESIZE
+ #
+ # Build libast first and then determine the library functions used
+ # by this library simply to avoid that gcc will overwrites those with
+ # its own builtin functions.
+ #
+ bin/package make ast-ast CCFLAGS="$RPM_OPT_FLAGS -fno-builtin" HOSTTYPE="$HOSTTYPE" AR="$AR" CC="$CC"
+ root=$(echo ${PWD}/arch/linux*)
+ test -d $root || exit 1
+ log=${root}/lib/package/gen/make.out
+ test -s $log || exit 1
+ for lib in libast ; do
+ test -s ${root}/lib/${lib}.a || exit 1
+ obj=$(ar t ${root}/lib/${lib}.a)
+ test $? -eq 0 || exit 1
+ case "$lib" in
+ libast)
+ base=src/lib/$lib
+ vers=$(grep :LIBRARY: ${base}/Makefile | sed "s@.*\([0-9]\+\.[0-9]\+\).*@\1@")
+ link="-L${root}/lib/ -Wl,-rpath-link,${root}/lib -Wl,-rpath,/%{_lib}/ast $LDSOFLG"
+ ;;
+ esac
+ soname="-Wl,-soname,${lib}.so.${vers%.*},-stats"
+ pushd ${root}/${base}
+ $CC -shared $soname -o ${root}/lib/${lib}.so.${vers} ${obj} $link
+ ln -sf ${lib}.so.${vers} ${root}/lib/${lib}.so.${vers%.*}
+ ln -sf ${lib}.so.${vers} ${root}/lib/${lib}.so
+ popd
+ done
+ nobuiltin=${TMPDIR:-/tmp}/nobuiltin
+ nm -D ${root}/lib/libast.so | \
+ grep -E 'T[[:blank:]](_ast_)?(str|mem|(get|put|set)env|(c|m|re|v)alloc)' | \
+ sed -r 's/[[:xdigit:]]+[[:blank:]]+T[[:blank:]]+(_ast_)?([^[:blank:]]*)/-fno-builtin-\2/' | \
+ sort -u > $nobuiltin
+ rm -rf $root
+ case "$(gcc --version | head -n 1)" in
+ *4.[01].*)
+ set +x
+ for opt in $(cat $nobuiltin) ; do
+ cflags $opt RPM_OPT_FLAGS
+ done
+ set -x
+ ;;
+ *) cflags @$nobuiltin RPM_OPT_FLAGS
+ esac
+
bin/package make CCFLAGS="$RPM_OPT_FLAGS" HOSTTYPE="$HOSTTYPE" AR="$AR" CC="$CC"
root=$(echo ${PWD}/arch/linux*)
test -d $root || exit 1
@@ -473,11 +503,6 @@
ln -sf ${lib}.so.${vers} ${root}/lib/${lib}.so
popd
done
- nm -D ${root}/lib/libast.so | \
- grep -E 'T[[:blank:]](str|mem|(get|put|set)env|(c|m|re|v)alloc)' | \
- awk '{print "-fno-builtin-"$3}' | \
- sort -u | \
- diff -u $nobuiltin - || true
base=src/cmd/ksh93
test=${PWD}/${base}/tests
OPATH=$PATH
@@ -563,7 +588,7 @@
$bin --nroff 2>&1 | sed 's/\(\.TH .*\)/\1 "%{date}" "" "Korn shell utilities"/' > ../man/man1/$bin.1
done
popd
- test -d /tmp -ef ${TMPDIR} || rm -rf ${TMPDIR}
+ test -d /tmp -a /tmp -ef ${TMPDIR} || rm -rf ${TMPDIR}
SHELL=$OSHELL
PATH=$OPATH
++++++ ksh93-dttree-crash.dif ++++++
++++ 614 lines (skipped)
++++ between /work/SRC/openSUSE:Factory/ksh/ksh93-dttree-crash.dif
++++ and /work/SRC/openSUSE:Factory/.ksh.new/ksh93-dttree-crash.dif
++++++ ksh93-gcc.dif ++++++
--- /var/tmp/diff_new_pack.Pt8mzw/_old 2013-02-01 15:48:52.000000000 +0100
+++ /var/tmp/diff_new_pack.Pt8mzw/_new 2013-02-01 15:48:52.000000000 +0100
@@ -39,3 +39,69 @@
/*
* search for an include file
* if (flags&SEARCH_INCLUDE) then
+--- src/lib/libcmd/Mamfile
++++ src/lib/libcmd/Mamfile 2013-01-28 10:46:23.141952570 +0000
+@@ -429,6 +429,7 @@ make uniq.c
+ prev cmd.h implicit
+ done uniq.c
+ make vmstate.c
++prev ${PACKAGE_ast_INCLUDE}/sfdisc.h implicit
+ prev ${PACKAGE_ast_INCLUDE}/vmalloc.h implicit
+ prev cmd.h implicit
+ done vmstate.c
+--- src/lib/libast/misc/optget.c
++++ src/lib/libast/misc/optget.c 2013-01-28 14:52:53.069452260 +0000
+@@ -2406,7 +2406,6 @@ opthelp(const char* oopts, const char* w
+ int bflags = 0;
+ int dflags = 0;
+ int hflags = 0;
+- int sflags = 0;
+ int matched = 0;
+ int paragraph = 0;
+ Push_t* psp = 0;
+@@ -4368,9 +4367,9 @@ optget(register char** argv, const char*
+ */
+
+ opt_info.assignment = 0;
+- num = 1;
+- w = v = 0;
+- x = 0;
++ nov = no = num = 1;
++ e = w = v = 0;
++ n = x = 0;
+ for (;;)
+ {
+ if (!opt_info.offset)
+@@ -4609,6 +4608,7 @@ optget(register char** argv, const char*
+ opt_info.num = (long)(opt_info.number = optnumber(opt_info.arg, &e, &err));
+ if (err || e == opt_info.arg)
+ {
++ opt_info.num = (long)(opt_info.number = 0);
+ if (!err && (k & OPT_cache_optional))
+ {
+ opt_info.arg = 0;
+@@ -4636,6 +4636,7 @@ optget(register char** argv, const char*
+ opt_info.arg = 0;
+ opt_info.index--;
+ opt_info.offset = 0;
++ opt_info.num = (long)(opt_info.number = 0);
+ return c;
+ }
+ if (k & OPT_cache_string)
+@@ -5213,7 +5214,7 @@ optget(register char** argv, const char*
+
+ if (opt_info.num != LONG_MIN)
+ opt_info.num = (long)(opt_info.number = num);
+- if ((n = *++s == '#') || *s == ':' || w && !nov && v && (optnumber(v, &e, NiL), n = !*e))
++ if ((n = (*++s == '#')) || *s == ':' || w && !nov && v && (optnumber(v, &e, NiL), n = !*e))
+ {
+ if (w)
+ {
+@@ -5306,6 +5307,7 @@ optget(register char** argv, const char*
+ opt_info.index++;
+ if (*(s + 1) == '?' && (*opt_info.arg == '-' || (pass->flags & OPT_plus) && *opt_info.arg == '+') && *(opt_info.arg + 1))
+ {
++ opt_info.num = (long)(opt_info.number = 0);
+ opt_info.index--;
+ opt_info.arg = 0;
+ }
--
To unsubscribe, e-mail: opensuse-commit+unsubscribe(a)opensuse.org
For additional commands, e-mail: opensuse-commit+help(a)opensuse.org
1
0
Hello community,
here is the log from the commit of package gzip for openSUSE:12.3 checked in at 2013-02-01 15:48:24
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Comparing /work/SRC/openSUSE:12.3/gzip (Old)
and /work/SRC/openSUSE:12.3/.gzip.new (New)
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Package is "gzip", Maintainer is "VDziewiecki(a)suse.com"
Changes:
--------
--- /work/SRC/openSUSE:12.3/gzip/gzip.changes 2013-01-31 01:19:33.000000000 +0100
+++ /work/SRC/openSUSE:12.3/.gzip.new/gzip.changes 2013-02-01 15:48:26.000000000 +0100
@@ -1,0 +2,6 @@
+Tue Jan 29 12:28:39 UTC 2013 - vdziewiecki(a)suse.com
+
+- Add support for xz and lzma (bnc#799561 - zgrep silently fails on
+ LZMA compressed files) - xz_lzma.patch
+
+-------------------------------------------------------------------
New:
----
xz_lzma.patch
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Other differences:
------------------
++++++ gzip.spec ++++++
--- /var/tmp/diff_new_pack.VNasAZ/_old 2013-02-01 15:48:26.000000000 +0100
+++ /var/tmp/diff_new_pack.VNasAZ/_new 2013-02-01 15:48:26.000000000 +0100
@@ -1,7 +1,7 @@
#
# spec file for package gzip
#
-# Copyright (c) 2012 SUSE LINUX Products GmbH, Nuernberg, Germany.
+# Copyright (c) 2013 SUSE LINUX Products GmbH, Nuernberg, Germany.
#
# All modifications and additions to the file contributed by third parties
# remain the property of their copyright owners, unless otherwise agreed
@@ -31,6 +31,8 @@
Patch3: non-exec-stack.diff
Patch4: http://rsync.samba.org/ftp/unpacked/rsync/patches/gzip-rsyncable.diff
Patch6: zdiff.diff
+# PATCH FIX OPENSUSE BNC#799561 - zgrep silently fails on LZMA compressed files
+Patch7: xz_lzma.patch
BuildRoot: %{_tmppath}/%{name}-%{version}-build
%description
@@ -47,6 +49,7 @@
%patch3
%patch4 -p1
%patch6
+%patch7 -p1
%build
CFLAGS="$RPM_OPT_FLAGS -fomit-frame-pointer \
++++++ xz_lzma.patch ++++++
Index: gzip-1.5/zgrep.1
===================================================================
--- gzip-1.5.orig/zgrep.1
+++ gzip-1.5/zgrep.1
@@ -10,7 +10,7 @@ zgrep \- search possibly compressed file
.I Zgrep
invokes
.I grep
-on compressed or gzipped files.
+on compressed, xz'ed, lzma'ed, bzip2'ed or gzipped files.
All options specified are passed directly to
.IR grep .
If no file is specified, then the standard input is decompressed
Index: gzip-1.5/zgrep.in
===================================================================
--- gzip-1.5.orig/zgrep.in
+++ gzip-1.5/zgrep.in
@@ -178,6 +178,12 @@ do
*.bz2)
uncompress=bzip2
;;
+ *.xz)
+ uncompress=xz
+ ;;
+ *.lzma)
+ uncompress=lzma
+ ;;
*)
uncompress=gzip
;;
--
To unsubscribe, e-mail: opensuse-commit+unsubscribe(a)opensuse.org
For additional commands, e-mail: opensuse-commit+help(a)opensuse.org
1
0
Hello community,
here is the log from the commit of package gzip for openSUSE:Factory checked in at 2013-02-01 15:48:21
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Comparing /work/SRC/openSUSE:Factory/gzip (Old)
and /work/SRC/openSUSE:Factory/.gzip.new (New)
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Package is "gzip", Maintainer is "VDziewiecki(a)suse.com"
Changes:
--------
--- /work/SRC/openSUSE:Factory/gzip/gzip.changes 2012-10-18 21:48:22.000000000 +0200
+++ /work/SRC/openSUSE:Factory/.gzip.new/gzip.changes 2013-02-01 15:48:22.000000000 +0100
@@ -1,0 +2,6 @@
+Tue Jan 29 12:28:39 UTC 2013 - vdziewiecki(a)suse.com
+
+- Add support for xz and lzma (bnc#799561 - zgrep silently fails on
+ LZMA compressed files) - xz_lzma.patch
+
+-------------------------------------------------------------------
New:
----
xz_lzma.patch
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Other differences:
------------------
++++++ gzip.spec ++++++
--- /var/tmp/diff_new_pack.BMNNPx/_old 2013-02-01 15:48:23.000000000 +0100
+++ /var/tmp/diff_new_pack.BMNNPx/_new 2013-02-01 15:48:23.000000000 +0100
@@ -1,7 +1,7 @@
#
# spec file for package gzip
#
-# Copyright (c) 2012 SUSE LINUX Products GmbH, Nuernberg, Germany.
+# Copyright (c) 2013 SUSE LINUX Products GmbH, Nuernberg, Germany.
#
# All modifications and additions to the file contributed by third parties
# remain the property of their copyright owners, unless otherwise agreed
@@ -31,6 +31,8 @@
Patch3: non-exec-stack.diff
Patch4: http://rsync.samba.org/ftp/unpacked/rsync/patches/gzip-rsyncable.diff
Patch6: zdiff.diff
+# PATCH FIX OPENSUSE BNC#799561 - zgrep silently fails on LZMA compressed files
+Patch7: xz_lzma.patch
BuildRoot: %{_tmppath}/%{name}-%{version}-build
%description
@@ -47,6 +49,7 @@
%patch3
%patch4 -p1
%patch6
+%patch7 -p1
%build
CFLAGS="$RPM_OPT_FLAGS -fomit-frame-pointer \
++++++ xz_lzma.patch ++++++
Index: gzip-1.5/zgrep.1
===================================================================
--- gzip-1.5.orig/zgrep.1
+++ gzip-1.5/zgrep.1
@@ -10,7 +10,7 @@ zgrep \- search possibly compressed file
.I Zgrep
invokes
.I grep
-on compressed or gzipped files.
+on compressed, xz'ed, lzma'ed, bzip2'ed or gzipped files.
All options specified are passed directly to
.IR grep .
If no file is specified, then the standard input is decompressed
Index: gzip-1.5/zgrep.in
===================================================================
--- gzip-1.5.orig/zgrep.in
+++ gzip-1.5/zgrep.in
@@ -178,6 +178,12 @@ do
*.bz2)
uncompress=bzip2
;;
+ *.xz)
+ uncompress=xz
+ ;;
+ *.lzma)
+ uncompress=lzma
+ ;;
*)
uncompress=gzip
;;
--
To unsubscribe, e-mail: opensuse-commit+unsubscribe(a)opensuse.org
For additional commands, e-mail: opensuse-commit+help(a)opensuse.org
1
0
Hello community,
here is the log from the commit of package git for openSUSE:Factory checked in at 2013-02-01 15:47:18
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Comparing /work/SRC/openSUSE:Factory/git (Old)
and /work/SRC/openSUSE:Factory/.git.new (New)
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Package is "git", Maintainer is "tiwai(a)suse.com"
Changes:
--------
--- /work/SRC/openSUSE:Factory/git/git.changes 2013-01-17 15:10:05.000000000 +0100
+++ /work/SRC/openSUSE:Factory/.git.new/git.changes 2013-02-01 15:47:21.000000000 +0100
@@ -1,0 +2,25 @@
+Wed Jan 30 01:57:15 UTC 2013 - douglarek(a)outlook.com
+
+- updated to version 1.8.1.2:
+
+ * An element on GIT_CEILING_DIRECTORIES list that does not name the
+ real path to a directory (i.e. a symbolic link) could have caused
+ the GIT_DIR discovery logic to escape the ceiling.
+
+ * Command line completion for "tcsh" emitted an unwanted space
+ after completing a single directory name.
+
+ * Command line completion leaked an unnecessary error message while
+ looking for possible matches with paths in <tree-ish>.
+
+ * "git archive" did not record uncompressed size in the header when
+ streaming a zip archive, which confused some implementations of unzip.
+
+ * When users spelled "cc:" in lowercase in the fake "header" in the
+ trailer part, "git send-email" failed to pick up the addresses from
+ there. As e-mail headers field names are case insensitive, this
+ script should follow suit and treat "cc:" and "Cc:" the same way.
+
+ Also contains various documentation fixes.
+
+-------------------------------------------------------------------
Old:
----
git-1.8.1.1.tar.gz
New:
----
git-1.8.1.2.tar.gz
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Other differences:
------------------
++++++ git.spec ++++++
--- /var/tmp/diff_new_pack.L2B1lW/_old 2013-02-01 15:47:24.000000000 +0100
+++ /var/tmp/diff_new_pack.L2B1lW/_new 2013-02-01 15:47:24.000000000 +0100
@@ -30,7 +30,7 @@
BuildRequires: python
BuildRequires: sgml-skel
BuildRequires: xmlto
-Version: 1.8.1.1
+Version: 1.8.1.2
Release: 0
Summary: Fast, scalable, distributed revision control system
License: GPL-2.0
++++++ git-1.8.1.1.tar.gz -> git-1.8.1.2.tar.gz ++++++
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/git-1.8.1.1/Documentation/RelNotes/1.8.1.2.txt new/git-1.8.1.2/Documentation/RelNotes/1.8.1.2.txt
--- old/git-1.8.1.1/Documentation/RelNotes/1.8.1.2.txt 1970-01-01 01:00:00.000000000 +0100
+++ new/git-1.8.1.2/Documentation/RelNotes/1.8.1.2.txt 2013-01-28 21:01:51.000000000 +0100
@@ -0,0 +1,25 @@
+Git 1.8.1.2 Release Notes
+=========================
+
+Fixes since v1.8.1.1
+--------------------
+
+ * An element on GIT_CEILING_DIRECTORIES list that does not name the
+ real path to a directory (i.e. a symbolic link) could have caused
+ the GIT_DIR discovery logic to escape the ceiling.
+
+ * Command line completion for "tcsh" emitted an unwanted space
+ after completing a single directory name.
+
+ * Command line completion leaked an unnecessary error message while
+ looking for possible matches with paths in <tree-ish>.
+
+ * "git archive" did not record uncompressed size in the header when
+ streaming a zip archive, which confused some implementations of unzip.
+
+ * When users spelled "cc:" in lowercase in the fake "header" in the
+ trailer part, "git send-email" failed to pick up the addresses from
+ there. As e-mail headers field names are case insensitive, this
+ script should follow suit and treat "cc:" and "Cc:" the same way.
+
+Also contains various documentation fixes.
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/git-1.8.1.1/Documentation/config.txt new/git-1.8.1.2/Documentation/config.txt
--- old/git-1.8.1.1/Documentation/config.txt 2013-01-14 20:22:04.000000000 +0100
+++ new/git-1.8.1.2/Documentation/config.txt 2013-01-28 21:01:51.000000000 +0100
@@ -1351,6 +1351,12 @@
value is 0 - the command will be just shown but not executed.
This is the default.
+help.htmlpath::
+ Specify the path where the HTML documentation resides. File system paths
+ and URLs are supported. HTML pages will be prefixed with this path when
+ help is displayed in the 'web' format. This defaults to the documentation
+ path of your Git installation.
+
http.proxy::
Override the HTTP proxy, normally configured using the 'http_proxy',
'https_proxy', and 'all_proxy' environment variables (see
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/git-1.8.1.1/Documentation/git-commit-tree.txt new/git-1.8.1.2/Documentation/git-commit-tree.txt
--- old/git-1.8.1.1/Documentation/git-commit-tree.txt 2013-01-14 20:22:04.000000000 +0100
+++ new/git-1.8.1.2/Documentation/git-commit-tree.txt 2013-01-28 21:01:51.000000000 +0100
@@ -72,13 +72,13 @@
GIT_COMMITTER_NAME
GIT_COMMITTER_EMAIL
GIT_COMMITTER_DATE
- EMAIL
(nb "<", ">" and "\n"s are stripped)
In case (some of) these environment variables are not set, the information
is taken from the configuration items user.name and user.email, or, if not
-present, system user name and the hostname used for outgoing mail (taken
+present, the environment variable EMAIL, or, if that is not set,
+system user name and the hostname used for outgoing mail (taken
from `/etc/mailname` and falling back to the fully qualified hostname when
that file does not exist).
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/git-1.8.1.1/Documentation/git-cvsimport.txt new/git-1.8.1.2/Documentation/git-cvsimport.txt
--- old/git-1.8.1.1/Documentation/git-cvsimport.txt 2013-01-14 20:22:04.000000000 +0100
+++ new/git-1.8.1.2/Documentation/git-cvsimport.txt 2013-01-28 21:01:51.000000000 +0100
@@ -213,11 +213,9 @@
* Multiple tags on the same revision are not imported.
If you suspect that any of these issues may apply to the repository you
-want to import consider using these alternative tools which proved to be
-more stable in practice:
+want to imort, consider using cvs2git:
-* cvs2git (part of cvs2svn), `http://cvs2svn.tigris.org`
-* parsecvs, `http://cgit.freedesktop.org/~keithp/parsecvs`
+* cvs2git (part of cvs2svn), `http://subversion.apache.org/`
GIT
---
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/git-1.8.1.1/Documentation/git-for-each-ref.txt new/git-1.8.1.2/Documentation/git-for-each-ref.txt
--- old/git-1.8.1.1/Documentation/git-for-each-ref.txt 2013-01-14 20:22:04.000000000 +0100
+++ new/git-1.8.1.2/Documentation/git-for-each-ref.txt 2013-01-28 21:01:51.000000000 +0100
@@ -117,7 +117,7 @@
As a special case for the date-type fields, you may specify a format for
the date by adding one of `:default`, `:relative`, `:short`, `:local`,
-`:iso8601` or `:rfc2822` to the end of the fieldname; e.g.
+`:iso8601`, `:rfc2822` or `:raw` to the end of the fieldname; e.g.
`%(taggerdate:relative)`.
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/git-1.8.1.1/Documentation/technical/api-string-list.txt new/git-1.8.1.2/Documentation/technical/api-string-list.txt
--- old/git-1.8.1.1/Documentation/technical/api-string-list.txt 2013-01-14 20:22:04.000000000 +0100
+++ new/git-1.8.1.2/Documentation/technical/api-string-list.txt 2013-01-28 21:01:51.000000000 +0100
@@ -82,14 +82,6 @@
call free() on the util members of any items that have to be
deleted. Preserve the order of the items that are retained.
-`string_list_longest_prefix`::
-
- Return the longest string within a string_list that is a
- prefix (in the sense of prefixcmp()) of the specified string,
- or NULL if no such prefix exists. This function does not
- require the string_list to be sorted (it does a linear
- search).
-
`print_string_list`::
Dump a string_list to stdout, useful mainly for debugging purposes. It
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/git-1.8.1.1/GIT-VERSION-GEN new/git-1.8.1.2/GIT-VERSION-GEN
--- old/git-1.8.1.1/GIT-VERSION-GEN 2013-01-14 20:22:04.000000000 +0100
+++ new/git-1.8.1.2/GIT-VERSION-GEN 2013-01-28 21:01:51.000000000 +0100
@@ -1,7 +1,7 @@
#!/bin/sh
GVF=GIT-VERSION-FILE
-DEF_VER=v1.8.1.1
+DEF_VER=v1.8.1.2
LF='
'
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/git-1.8.1.1/RelNotes new/git-1.8.1.2/RelNotes
--- old/git-1.8.1.1/RelNotes 2013-02-01 15:47:25.000000000 +0100
+++ new/git-1.8.1.2/RelNotes 2013-02-01 15:47:25.000000000 +0100
@@ -1 +1 @@
-symbolic link to Documentation/RelNotes/1.8.1.1.txt
+symbolic link to Documentation/RelNotes/1.8.1.2.txt
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/git-1.8.1.1/abspath.c new/git-1.8.1.2/abspath.c
--- old/git-1.8.1.1/abspath.c 2013-01-14 20:22:04.000000000 +0100
+++ new/git-1.8.1.2/abspath.c 2013-01-28 21:01:51.000000000 +0100
@@ -15,16 +15,34 @@
#define MAXDEPTH 5
/*
- * Use this to get the real path, i.e. resolve links. If you want an
- * absolute path but don't mind links, use absolute_path.
+ * Return the real path (i.e., absolute path, with symlinks resolved
+ * and extra slashes removed) equivalent to the specified path. (If
+ * you want an absolute path but don't mind links, use
+ * absolute_path().) The return value is a pointer to a static
+ * buffer.
+ *
+ * The input and all intermediate paths must be shorter than MAX_PATH.
+ * The directory part of path (i.e., everything up to the last
+ * dir_sep) must denote a valid, existing directory, but the last
+ * component need not exist. If die_on_error is set, then die with an
+ * informative error message if there is a problem. Otherwise, return
+ * NULL on errors (without generating any output).
*
* If path is our buffer, then return path, as it's already what the
* user wants.
*/
-const char *real_path(const char *path)
+static const char *real_path_internal(const char *path, int die_on_error)
{
static char bufs[2][PATH_MAX + 1], *buf = bufs[0], *next_buf = bufs[1];
+ char *retval = NULL;
+
+ /*
+ * If we have to temporarily chdir(), store the original CWD
+ * here so that we can chdir() back to it at the end of the
+ * function:
+ */
char cwd[1024] = "";
+
int buf_index = 1;
int depth = MAXDEPTH;
@@ -35,11 +53,19 @@
if (path == buf || path == next_buf)
return path;
- if (!*path)
- die("The empty string is not a valid path");
+ if (!*path) {
+ if (die_on_error)
+ die("The empty string is not a valid path");
+ else
+ goto error_out;
+ }
- if (strlcpy(buf, path, PATH_MAX) >= PATH_MAX)
- die ("Too long path: %.*s", 60, path);
+ if (strlcpy(buf, path, PATH_MAX) >= PATH_MAX) {
+ if (die_on_error)
+ die("Too long path: %.*s", 60, path);
+ else
+ goto error_out;
+ }
while (depth--) {
if (!is_directory(buf)) {
@@ -54,20 +80,36 @@
}
if (*buf) {
- if (!*cwd && !getcwd(cwd, sizeof(cwd)))
- die_errno ("Could not get current working directory");
+ if (!*cwd && !getcwd(cwd, sizeof(cwd))) {
+ if (die_on_error)
+ die_errno("Could not get current working directory");
+ else
+ goto error_out;
+ }
- if (chdir(buf))
- die_errno ("Could not switch to '%s'", buf);
+ if (chdir(buf)) {
+ if (die_on_error)
+ die_errno("Could not switch to '%s'", buf);
+ else
+ goto error_out;
+ }
+ }
+ if (!getcwd(buf, PATH_MAX)) {
+ if (die_on_error)
+ die_errno("Could not get current working directory");
+ else
+ goto error_out;
}
- if (!getcwd(buf, PATH_MAX))
- die_errno ("Could not get current working directory");
if (last_elem) {
size_t len = strlen(buf);
- if (len + strlen(last_elem) + 2 > PATH_MAX)
- die ("Too long path name: '%s/%s'",
- buf, last_elem);
+ if (len + strlen(last_elem) + 2 > PATH_MAX) {
+ if (die_on_error)
+ die("Too long path name: '%s/%s'",
+ buf, last_elem);
+ else
+ goto error_out;
+ }
if (len && !is_dir_sep(buf[len-1]))
buf[len++] = '/';
strcpy(buf + len, last_elem);
@@ -77,10 +119,18 @@
if (!lstat(buf, &st) && S_ISLNK(st.st_mode)) {
ssize_t len = readlink(buf, next_buf, PATH_MAX);
- if (len < 0)
- die_errno ("Invalid symlink '%s'", buf);
- if (PATH_MAX <= len)
- die("symbolic link too long: %s", buf);
+ if (len < 0) {
+ if (die_on_error)
+ die_errno("Invalid symlink '%s'", buf);
+ else
+ goto error_out;
+ }
+ if (PATH_MAX <= len) {
+ if (die_on_error)
+ die("symbolic link too long: %s", buf);
+ else
+ goto error_out;
+ }
next_buf[len] = '\0';
buf = next_buf;
buf_index = 1 - buf_index;
@@ -89,10 +139,23 @@
break;
}
+ retval = buf;
+error_out:
+ free(last_elem);
if (*cwd && chdir(cwd))
die_errno ("Could not change back to '%s'", cwd);
- return buf;
+ return retval;
+}
+
+const char *real_path(const char *path)
+{
+ return real_path_internal(path, 1);
+}
+
+const char *real_path_if_valid(const char *path)
+{
+ return real_path_internal(path, 0);
}
static const char *get_pwd_cwd(void)
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/git-1.8.1.1/archive-zip.c new/git-1.8.1.2/archive-zip.c
--- old/git-1.8.1.1/archive-zip.c 2013-01-14 20:22:04.000000000 +0100
+++ new/git-1.8.1.2/archive-zip.c 2013-01-28 21:01:51.000000000 +0100
@@ -240,7 +240,7 @@
(mode & 0111) ? ((mode) << 16) : 0;
if (S_ISREG(mode) && args->compression_level != 0 && size > 0)
method = 8;
- compressed_size = size;
+ compressed_size = (method == 0) ? size : 0;
if (S_ISREG(mode) && type == OBJ_BLOB && !args->convert &&
size > big_file_threshold) {
@@ -313,10 +313,7 @@
copy_le16(header.compression_method, method);
copy_le16(header.mtime, zip_time);
copy_le16(header.mdate, zip_date);
- if (flags & ZIP_STREAM)
- set_zip_header_data_desc(&header, 0, 0, 0);
- else
- set_zip_header_data_desc(&header, size, compressed_size, crc);
+ set_zip_header_data_desc(&header, size, compressed_size, crc);
copy_le16(header.filename_length, pathlen);
copy_le16(header.extra_length, ZIP_EXTRA_MTIME_SIZE);
write_or_die(1, &header, ZIP_LOCAL_HEADER_SIZE);
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/git-1.8.1.1/attr.c new/git-1.8.1.2/attr.c
--- old/git-1.8.1.1/attr.c 2013-01-14 20:22:04.000000000 +0100
+++ new/git-1.8.1.2/attr.c 2013-01-28 21:01:51.000000000 +0100
@@ -704,7 +704,7 @@
if (*n == ATTR__UNKNOWN) {
debug_set(what,
- a->is_macro ? a->u.attr->name : a->u.pattern,
+ a->is_macro ? a->u.attr->name : a->u.pat.pattern,
attr, v);
*n = v;
rem--;
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/git-1.8.1.1/cache.h new/git-1.8.1.2/cache.h
--- old/git-1.8.1.1/cache.h 2013-01-14 20:22:04.000000000 +0100
+++ new/git-1.8.1.2/cache.h 2013-01-28 21:01:51.000000000 +0100
@@ -714,10 +714,11 @@
}
int is_directory(const char *);
const char *real_path(const char *path);
+const char *real_path_if_valid(const char *path);
const char *absolute_path(const char *path);
const char *relative_path(const char *abs, const char *base);
int normalize_path_copy(char *dst, const char *src);
-int longest_ancestor_length(const char *path, const char *prefix_list);
+int longest_ancestor_length(const char *path, struct string_list *prefixes);
char *strip_path_suffix(const char *path, const char *suffix);
int daemon_avoid_alias(const char *path);
int offset_1st_component(const char *path);
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/git-1.8.1.1/configure new/git-1.8.1.2/configure
--- old/git-1.8.1.1/configure 2013-01-14 20:22:04.000000000 +0100
+++ new/git-1.8.1.2/configure 2013-01-28 21:01:52.000000000 +0100
@@ -1,6 +1,6 @@
#! /bin/sh
# Guess values for system-dependent variables and create Makefiles.
-# Generated by GNU Autoconf 2.67 for git 1.8.1.1.
+# Generated by GNU Autoconf 2.67 for git 1.8.1.2.
#
# Report bugs to <git(a)vger.kernel.org>.
#
@@ -552,8 +552,8 @@
# Identity of this package.
PACKAGE_NAME='git'
PACKAGE_TARNAME='git'
-PACKAGE_VERSION='1.8.1.1'
-PACKAGE_STRING='git 1.8.1.1'
+PACKAGE_VERSION='1.8.1.2'
+PACKAGE_STRING='git 1.8.1.2'
PACKAGE_BUGREPORT='git(a)vger.kernel.org'
PACKAGE_URL=''
@@ -1224,7 +1224,7 @@
# Omit some internal or obsolete options to make the list less imposing.
# This message is too long to be a string in the A/UX 3.1 sh.
cat <<_ACEOF
-\`configure' configures git 1.8.1.1 to adapt to many kinds of systems.
+\`configure' configures git 1.8.1.2 to adapt to many kinds of systems.
Usage: $0 [OPTION]... [VAR=VALUE]...
@@ -1285,7 +1285,7 @@
if test -n "$ac_init_help"; then
case $ac_init_help in
- short | recursive ) echo "Configuration of git 1.8.1.1:";;
+ short | recursive ) echo "Configuration of git 1.8.1.2:";;
esac
cat <<\_ACEOF
@@ -1424,7 +1424,7 @@
test -n "$ac_init_help" && exit $ac_status
if $ac_init_version; then
cat <<\_ACEOF
-git configure 1.8.1.1
+git configure 1.8.1.2
generated by GNU Autoconf 2.67
Copyright (C) 2010 Free Software Foundation, Inc.
@@ -1904,7 +1904,7 @@
This file contains any messages produced by compilers while
running configure, to aid debugging if configure makes a mistake.
-It was created by git $as_me 1.8.1.1, which was
+It was created by git $as_me 1.8.1.2, which was
generated by GNU Autoconf 2.67. Invocation command line was
$ $0 $@
@@ -7128,7 +7128,7 @@
# report actual input values of CONFIG_FILES etc. instead of their
# values after options handling.
ac_log="
-This file was extended by git $as_me 1.8.1.1, which was
+This file was extended by git $as_me 1.8.1.2, which was
generated by GNU Autoconf 2.67. Invocation command line was
CONFIG_FILES = $CONFIG_FILES
@@ -7185,7 +7185,7 @@
cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1
ac_cs_config="`$as_echo "$ac_configure_args" | sed 's/^ //; s/[\\""\`\$]/\\\\&/g'`"
ac_cs_version="\\
-git config.status 1.8.1.1
+git config.status 1.8.1.2
configured by $0, generated by GNU Autoconf 2.67,
with options \\"\$ac_cs_config\\"
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/git-1.8.1.1/contrib/completion/git-completion.bash new/git-1.8.1.2/contrib/completion/git-completion.bash
--- old/git-1.8.1.1/contrib/completion/git-completion.bash 2013-01-14 20:22:04.000000000 +0100
+++ new/git-1.8.1.2/contrib/completion/git-completion.bash 2013-01-28 21:01:51.000000000 +0100
@@ -397,7 +397,7 @@
*) pfx="$ref:$pfx" ;;
esac
- __gitcomp_nl "$(git --git-dir="$(__gitdir)" ls-tree "$ls" \
+ __gitcomp_nl "$(git --git-dir="$(__gitdir)" ls-tree "$ls" 2>/dev/null \
| sed '/^100... blob /{
s,^.* ,,
s,$, ,
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/git-1.8.1.1/contrib/completion/git-completion.tcsh new/git-1.8.1.2/contrib/completion/git-completion.tcsh
--- old/git-1.8.1.1/contrib/completion/git-completion.tcsh 2013-01-14 20:22:04.000000000 +0100
+++ new/git-1.8.1.2/contrib/completion/git-completion.tcsh 2013-01-28 21:01:51.000000000 +0100
@@ -13,6 +13,7 @@
#
# To use this completion script:
#
+# 0) You need tcsh 6.16.00 or newer.
# 1) Copy both this file and the bash completion script to ${HOME}.
# You _must_ use the name ${HOME}/.git-completion.bash for the
# bash script.
@@ -24,6 +25,15 @@
# set autolist=ambiguous
# It will tell tcsh to list the possible completion choices.
+set __git_tcsh_completion_version = `\echo ${tcsh} | \sed 's/\./ /g'`
+if ( ${__git_tcsh_completion_version[1]} < 6 || \
+ ( ${__git_tcsh_completion_version[1]} == 6 && \
+ ${__git_tcsh_completion_version[2]} < 16 ) ) then
+ echo "git-completion.tcsh: Your version of tcsh is too old, you need version 6.16.00 or newer. Git completion will not work."
+ exit
+endif
+unset __git_tcsh_completion_version
+
set __git_tcsh_completion_original_script = ${HOME}/.git-completion.bash
set __git_tcsh_completion_script = ${HOME}/.git-completion.tcsh.bash
@@ -64,9 +74,7 @@
_\${1}
IFS=\$'\n'
-if [ \${#COMPREPLY[*]} -gt 0 ]; then
- echo "\${COMPREPLY[*]}" | sort | uniq
-else
+if [ \${#COMPREPLY[*]} -eq 0 ]; then
# No completions suggested. In this case, we want tcsh to perform
# standard file completion. However, there does not seem to be way
# to tell tcsh to do that. To help the user, we try to simulate
@@ -85,19 +93,20 @@
# We don't support ~ expansion: too tricky.
if [ "\${TO_COMPLETE:0:1}" != "~" ]; then
# Use ls so as to add the '/' at the end of directories.
- RESULT=(\`ls -dp \${TO_COMPLETE}* 2> /dev/null\`)
- echo \${RESULT[*]}
-
- # If there is a single completion and it is a directory,
- # we output it a second time to trick tcsh into not adding a space
- # after it.
- if [ \${#RESULT[*]} -eq 1 ] && [ "\${RESULT[0]: -1}" == "/" ]; then
- echo \${RESULT[*]}
- fi
+ COMPREPLY=(\`ls -dp \${TO_COMPLETE}* 2> /dev/null\`)
fi
fi
fi
+# tcsh does not automatically remove duplicates, so we do it ourselves
+echo "\${COMPREPLY[*]}" | sort | uniq
+
+# If there is a single completion and it is a directory, we output it
+# a second time to trick tcsh into not adding a space after it.
+if [ \${#COMPREPLY[*]} -eq 1 ] && [ "\${COMPREPLY[0]: -1}" == "/" ]; then
+ echo "\${COMPREPLY[*]}"
+fi
+
EOF
# Don't need this variable anymore, so don't pollute the users environment
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/git-1.8.1.1/contrib/vim/README new/git-1.8.1.2/contrib/vim/README
--- old/git-1.8.1.1/contrib/vim/README 2013-01-14 20:22:04.000000000 +0100
+++ new/git-1.8.1.2/contrib/vim/README 2013-01-28 21:01:51.000000000 +0100
@@ -17,16 +17,6 @@
1. Copy these files to vim's syntax directory $HOME/.vim/syntax
2. To auto-detect the editing of various git-related filetypes:
- $ cat >>$HOME/.vim/filetype.vim <<'EOF'
- autocmd BufNewFile,BufRead *.git/COMMIT_EDITMSG setf gitcommit
- autocmd BufNewFile,BufRead *.git/config,.gitconfig setf gitconfig
- autocmd BufNewFile,BufRead git-rebase-todo setf gitrebase
- autocmd BufNewFile,BufRead .msg.[0-9]*
- \ if getline(1) =~ '^From.*# This line is ignored.$' |
- \ setf gitsendemail |
- \ endif
- autocmd BufNewFile,BufRead *.git/**
- \ if getline(1) =~ '^\x\{40\}\>\|^ref: ' |
- \ setf git |
- \ endif
- EOF
+
+ $ curl http://ftp.vim.org/pub/vim/runtime/filetype.vim |
+ sed -ne '/^" Git$/, /^$/ p' >>$HOME/.vim/filetype.vim
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/git-1.8.1.1/dir.c new/git-1.8.1.2/dir.c
--- old/git-1.8.1.1/dir.c 2013-01-14 20:22:04.000000000 +0100
+++ new/git-1.8.1.2/dir.c 2013-01-28 21:01:51.000000000 +0100
@@ -732,7 +732,8 @@
static struct dir_entry *dir_add_name(struct dir_struct *dir, const char *pathname, int len)
{
- if (cache_name_exists(pathname, len, ignore_case))
+ if (!(dir->flags & DIR_SHOW_IGNORED) &&
+ cache_name_exists(pathname, len, ignore_case))
return NULL;
ALLOC_GROW(dir->entries, dir->nr+1, dir->alloc);
@@ -834,8 +835,9 @@
* traversal routine.
*
* Case 1: If we *already* have entries in the index under that
- * directory name, we always recurse into the directory to see
- * all the files.
+ * directory name, we recurse into the directory to see all the files,
+ * unless the directory is excluded and we want to show ignored
+ * directories
*
* Case 2: If we *already* have that directory name as a gitlink,
* we always continue to see it as a gitlink, regardless of whether
@@ -849,6 +851,9 @@
* just a directory, unless "hide_empty_directories" is
* also true and the directory is empty, in which case
* we just ignore it entirely.
+ * if we are looking for ignored directories, look if it
+ * contains only ignored files to decide if it must be shown as
+ * ignored or not.
* (b) if it looks like a git directory, and we don't have
* 'no_gitlinks' set we treat it as a gitlink, and show it
* as a directory.
@@ -861,12 +866,15 @@
};
static enum directory_treatment treat_directory(struct dir_struct *dir,
- const char *dirname, int len,
+ const char *dirname, int len, int exclude,
const struct path_simplify *simplify)
{
/* The "len-1" is to strip the final '/' */
switch (directory_exists_in_index(dirname, len-1)) {
case index_directory:
+ if ((dir->flags & DIR_SHOW_OTHER_DIRECTORIES) && exclude)
+ break;
+
return recurse_into_directory;
case index_gitdir:
@@ -886,7 +894,23 @@
}
/* This is the "show_other_directories" case */
- if (!(dir->flags & DIR_HIDE_EMPTY_DIRECTORIES))
+
+ /*
+ * We are looking for ignored files and our directory is not ignored,
+ * check if it contains only ignored files
+ */
+ if ((dir->flags & DIR_SHOW_IGNORED) && !exclude) {
+ int ignored;
+ dir->flags &= ~DIR_SHOW_IGNORED;
+ dir->flags |= DIR_HIDE_EMPTY_DIRECTORIES;
+ ignored = read_directory_recursive(dir, dirname, len, 1, simplify);
+ dir->flags &= ~DIR_HIDE_EMPTY_DIRECTORIES;
+ dir->flags |= DIR_SHOW_IGNORED;
+
+ return ignored ? ignore_directory : show_directory;
+ }
+ if (!(dir->flags & DIR_SHOW_IGNORED) &&
+ !(dir->flags & DIR_HIDE_EMPTY_DIRECTORIES))
return show_directory;
if (!read_directory_recursive(dir, dirname, len, 1, simplify))
return ignore_directory;
@@ -894,6 +918,45 @@
}
/*
+ * Decide what to do when we find a file while traversing the
+ * filesystem. Mostly two cases:
+ *
+ * 1. We are looking for ignored files
+ * (a) File is ignored, include it
+ * (b) File is in ignored path, include it
+ * (c) File is not ignored, exclude it
+ *
+ * 2. Other scenarios, include the file if not excluded
+ *
+ * Return 1 for exclude, 0 for include.
+ */
+static int treat_file(struct dir_struct *dir, struct strbuf *path, int exclude, int *dtype)
+{
+ struct path_exclude_check check;
+ int exclude_file = 0;
+
+ if (exclude)
+ exclude_file = !(dir->flags & DIR_SHOW_IGNORED);
+ else if (dir->flags & DIR_SHOW_IGNORED) {
+ /* Always exclude indexed files */
+ struct cache_entry *ce = index_name_exists(&the_index,
+ path->buf, path->len, ignore_case);
+
+ if (ce)
+ return 1;
+
+ path_exclude_check_init(&check, dir);
+
+ if (!path_excluded(&check, path->buf, path->len, dtype))
+ exclude_file = 1;
+
+ path_exclude_check_clear(&check);
+ }
+
+ return exclude_file;
+}
+
+/*
* This is an inexact early pruning of any recursive directory
* reading - if the path cannot possibly be in the pathspec,
* return true, and we'll skip it early.
@@ -1031,27 +1094,14 @@
if (dtype == DT_UNKNOWN)
dtype = get_dtype(de, path->buf, path->len);
- /*
- * Do we want to see just the ignored files?
- * We still need to recurse into directories,
- * even if we don't ignore them, since the
- * directory may contain files that we do..
- */
- if (!exclude && (dir->flags & DIR_SHOW_IGNORED)) {
- if (dtype != DT_DIR)
- return path_ignored;
- }
-
switch (dtype) {
default:
return path_ignored;
case DT_DIR:
strbuf_addch(path, '/');
- switch (treat_directory(dir, path->buf, path->len, simplify)) {
+
+ switch (treat_directory(dir, path->buf, path->len, exclude, simplify)) {
case show_directory:
- if (exclude != !!(dir->flags
- & DIR_SHOW_IGNORED))
- return path_ignored;
break;
case recurse_into_directory:
return path_recurse;
@@ -1061,7 +1111,12 @@
break;
case DT_REG:
case DT_LNK:
- break;
+ switch (treat_file(dir, path, exclude, &dtype)) {
+ case 1:
+ return path_ignored;
+ default:
+ break;
+ }
}
return path_handled;
}
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/git-1.8.1.1/git-send-email.perl new/git-1.8.1.2/git-send-email.perl
--- old/git-1.8.1.1/git-send-email.perl 2013-01-14 20:22:04.000000000 +0100
+++ new/git-1.8.1.2/git-send-email.perl 2013-01-28 21:01:51.000000000 +0100
@@ -1285,10 +1285,10 @@
}
if (defined $input_format && $input_format eq 'mbox') {
- if (/^Subject:\s+(.*)$/) {
+ if (/^Subject:\s+(.*)$/i) {
$subject = $1;
}
- elsif (/^From:\s+(.*)$/) {
+ elsif (/^From:\s+(.*)$/i) {
($author, $author_encoding) = unquote_rfc2047($1);
next if $suppress_cc{'author'};
next if $suppress_cc{'self'} and $author eq $sender;
@@ -1296,14 +1296,14 @@
$1, $_) unless $quiet;
push @cc, $1;
}
- elsif (/^To:\s+(.*)$/) {
+ elsif (/^To:\s+(.*)$/i) {
foreach my $addr (parse_address_line($1)) {
printf("(mbox) Adding to: %s from line '%s'\n",
$addr, $_) unless $quiet;
push @to, $addr;
}
}
- elsif (/^Cc:\s+(.*)$/) {
+ elsif (/^Cc:\s+(.*)$/i) {
foreach my $addr (parse_address_line($1)) {
if (unquote_rfc2047($addr) eq $sender) {
next if ($suppress_cc{'self'});
@@ -1325,7 +1325,7 @@
elsif (/^Message-Id: (.*)/i) {
$message_id = $1;
}
- elsif (!/^Date:\s/ && /^[-A-Za-z]+:\s+\S/) {
+ elsif (!/^Date:\s/i && /^[-A-Za-z]+:\s+\S/) {
push @xh, $_;
}
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/git-1.8.1.1/git.spec new/git-1.8.1.2/git.spec
--- old/git-1.8.1.1/git.spec 2013-01-14 20:22:04.000000000 +0100
+++ new/git-1.8.1.2/git.spec 2013-01-28 21:01:52.000000000 +0100
@@ -1,7 +1,7 @@
# Pass --without docs to rpmbuild if you don't want the documentation
Name: git
-Version: 1.8.1.1
+Version: 1.8.1.2
Release: 1%{?dist}
Summary: Core git tools
License: GPL
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/git-1.8.1.1/path.c new/git-1.8.1.2/path.c
--- old/git-1.8.1.1/path.c 2013-01-14 20:22:04.000000000 +0100
+++ new/git-1.8.1.2/path.c 2013-01-28 21:01:51.000000000 +0100
@@ -12,6 +12,7 @@
*/
#include "cache.h"
#include "strbuf.h"
+#include "string-list.h"
static char bad_path[] = "/bad-path/";
@@ -569,43 +570,38 @@
/*
* path = Canonical absolute path
- * prefix_list = Colon-separated list of absolute paths
+ * prefixes = string_list containing normalized, absolute paths without
+ * trailing slashes (except for the root directory, which is denoted by "/").
*
- * Determines, for each path in prefix_list, whether the "prefix" really
+ * Determines, for each path in prefixes, whether the "prefix"
* is an ancestor directory of path. Returns the length of the longest
* ancestor directory, excluding any trailing slashes, or -1 if no prefix
- * is an ancestor. (Note that this means 0 is returned if prefix_list is
- * "/".) "/foo" is not considered an ancestor of "/foobar". Directories
+ * is an ancestor. (Note that this means 0 is returned if prefixes is
+ * ["/"].) "/foo" is not considered an ancestor of "/foobar". Directories
* are not considered to be their own ancestors. path must be in a
* canonical form: empty components, or "." or ".." components are not
- * allowed. prefix_list may be null, which is like "".
+ * allowed.
*/
-int longest_ancestor_length(const char *path, const char *prefix_list)
+int longest_ancestor_length(const char *path, struct string_list *prefixes)
{
- char buf[PATH_MAX+1];
- const char *ceil, *colon;
- int len, max_len = -1;
+ int i, max_len = -1;
- if (prefix_list == NULL || !strcmp(path, "/"))
+ if (!strcmp(path, "/"))
return -1;
- for (colon = ceil = prefix_list; *colon; ceil = colon+1) {
- for (colon = ceil; *colon && *colon != PATH_SEP; colon++);
- len = colon - ceil;
- if (len == 0 || len > PATH_MAX || !is_absolute_path(ceil))
- continue;
- strlcpy(buf, ceil, len+1);
- if (normalize_path_copy(buf, buf) < 0)
- continue;
- len = strlen(buf);
- if (len > 0 && buf[len-1] == '/')
- buf[--len] = '\0';
-
- if (!strncmp(path, buf, len) &&
- path[len] == '/' &&
- len > max_len) {
+ for (i = 0; i < prefixes->nr; i++) {
+ const char *ceil = prefixes->items[i].string;
+ int len = strlen(ceil);
+
+ if (len == 1 && ceil[0] == '/')
+ len = 0; /* root matches anything, with length 0 */
+ else if (!strncmp(path, ceil, len) && path[len] == '/')
+ ; /* match of length len */
+ else
+ continue; /* no match */
+
+ if (len > max_len)
max_len = len;
- }
}
return max_len;
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/git-1.8.1.1/setup.c new/git-1.8.1.2/setup.c
--- old/git-1.8.1.1/setup.c 2013-01-14 20:22:04.000000000 +0100
+++ new/git-1.8.1.2/setup.c 2013-01-28 21:01:51.000000000 +0100
@@ -1,5 +1,6 @@
#include "cache.h"
#include "dir.h"
+#include "string-list.h"
static int inside_git_dir = -1;
static int inside_work_tree = -1;
@@ -621,16 +622,38 @@
}
/*
+ * A "string_list_each_func_t" function that canonicalizes an entry
+ * from GIT_CEILING_DIRECTORIES using real_path_if_valid(), or
+ * discards it if unusable.
+ */
+static int canonicalize_ceiling_entry(struct string_list_item *item,
+ void *unused)
+{
+ char *ceil = item->string;
+ const char *real_path;
+
+ if (!*ceil || !is_absolute_path(ceil))
+ return 0;
+ real_path = real_path_if_valid(ceil);
+ if (!real_path)
+ return 0;
+ free(item->string);
+ item->string = xstrdup(real_path);
+ return 1;
+}
+
+/*
* We cannot decide in this function whether we are in the work tree or
* not, since the config can only be read _after_ this function was called.
*/
static const char *setup_git_directory_gently_1(int *nongit_ok)
{
const char *env_ceiling_dirs = getenv(CEILING_DIRECTORIES_ENVIRONMENT);
+ struct string_list ceiling_dirs = STRING_LIST_INIT_DUP;
static char cwd[PATH_MAX+1];
const char *gitdirenv, *ret;
char *gitfile;
- int len, offset, offset_parent, ceil_offset;
+ int len, offset, offset_parent, ceil_offset = -1;
dev_t current_device = 0;
int one_filesystem = 1;
@@ -655,7 +678,14 @@
if (gitdirenv)
return setup_explicit_git_dir(gitdirenv, cwd, len, nongit_ok);
- ceil_offset = longest_ancestor_length(cwd, env_ceiling_dirs);
+ if (env_ceiling_dirs) {
+ string_list_split(&ceiling_dirs, env_ceiling_dirs, PATH_SEP, -1);
+ filter_string_list(&ceiling_dirs, 0,
+ canonicalize_ceiling_entry, NULL);
+ ceil_offset = longest_ancestor_length(cwd, &ceiling_dirs);
+ string_list_clear(&ceiling_dirs, 0);
+ }
+
if (ceil_offset < 0 && has_dos_drive_prefix(cwd))
ceil_offset = 1;
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/git-1.8.1.1/string-list.c new/git-1.8.1.2/string-list.c
--- old/git-1.8.1.1/string-list.c 2013-01-14 20:22:04.000000000 +0100
+++ new/git-1.8.1.2/string-list.c 2013-01-28 21:01:51.000000000 +0100
@@ -145,26 +145,6 @@
filter_string_list(list, free_util, item_is_not_empty, NULL);
}
-char *string_list_longest_prefix(const struct string_list *prefixes,
- const char *string)
-{
- int i, max_len = -1;
- char *retval = NULL;
-
- for (i = 0; i < prefixes->nr; i++) {
- char *prefix = prefixes->items[i].string;
- if (!prefixcmp(string, prefix)) {
- int len = strlen(prefix);
- if (len > max_len) {
- retval = prefix;
- max_len = len;
- }
- }
- }
-
- return retval;
-}
-
void string_list_clear(struct string_list *list, int free_util)
{
if (list->items) {
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/git-1.8.1.1/string-list.h new/git-1.8.1.2/string-list.h
--- old/git-1.8.1.1/string-list.h 2013-01-14 20:22:04.000000000 +0100
+++ new/git-1.8.1.2/string-list.h 2013-01-28 21:01:51.000000000 +0100
@@ -45,15 +45,6 @@
*/
void string_list_remove_empty_items(struct string_list *list, int free_util);
-/*
- * Return the longest string in prefixes that is a prefix (in the
- * sense of prefixcmp()) of string, or NULL if no such prefix exists.
- * This function does not require the string_list to be sorted (it
- * does a linear search).
- */
-char *string_list_longest_prefix(const struct string_list *prefixes, const char *string);
-
-
/* Use these functions only on sorted lists: */
int string_list_has_string(const struct string_list *list, const char *string);
int string_list_find_insert_index(const struct string_list *list, const char *string,
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/git-1.8.1.1/t/t0024-crlf-archive.sh new/git-1.8.1.2/t/t0024-crlf-archive.sh
--- old/git-1.8.1.1/t/t0024-crlf-archive.sh 2013-01-14 20:22:04.000000000 +0100
+++ new/git-1.8.1.2/t/t0024-crlf-archive.sh 2013-01-28 21:01:51.000000000 +0100
@@ -3,7 +3,12 @@
test_description='respect crlf in git archive'
. ./test-lib.sh
-UNZIP=${UNZIP:-unzip}
+GIT_UNZIP=${GIT_UNZIP:-unzip}
+
+test_lazy_prereq UNZIP '
+ "$GIT_UNZIP" -v
+ test $? -ne 127
+'
test_expect_success setup '
@@ -26,18 +31,11 @@
'
-"$UNZIP" -v >/dev/null 2>&1
-if [ $? -eq 127 ]; then
- say "Skipping ZIP test, because unzip was not found"
-else
- test_set_prereq UNZIP
-fi
-
test_expect_success UNZIP 'zip archive' '
git archive --format=zip HEAD >test.zip &&
- ( mkdir unzipped && cd unzipped && unzip ../test.zip ) &&
+ ( mkdir unzipped && cd unzipped && "$GIT_UNZIP" ../test.zip ) &&
test_cmp sample unzipped/sample
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/git-1.8.1.1/t/t0060-path-utils.sh new/git-1.8.1.2/t/t0060-path-utils.sh
--- old/git-1.8.1.1/t/t0060-path-utils.sh 2013-01-14 20:22:04.000000000 +0100
+++ new/git-1.8.1.2/t/t0060-path-utils.sh 2013-01-28 21:01:51.000000000 +0100
@@ -93,47 +93,32 @@
norm_path /d1/.../d2 /d1/.../d2 POSIX
norm_path /d1/..././../d2 /d1/d2 POSIX
-ancestor / "" -1
ancestor / / -1
-ancestor /foo "" -1
-ancestor /foo : -1
-ancestor /foo ::. -1
-ancestor /foo ::..:: -1
ancestor /foo / 0
ancestor /foo /fo -1
ancestor /foo /foo -1
-ancestor /foo /foo/ -1
ancestor /foo /bar -1
-ancestor /foo /bar/ -1
ancestor /foo /foo/bar -1
-ancestor /foo /foo:/bar/ -1
-ancestor /foo /foo/:/bar/ -1
-ancestor /foo /foo::/bar/ -1
-ancestor /foo /:/foo:/bar/ 0
-ancestor /foo /foo:/:/bar/ 0
-ancestor /foo /:/bar/:/foo 0
-ancestor /foo/bar "" -1
+ancestor /foo /foo:/bar -1
+ancestor /foo /:/foo:/bar 0
+ancestor /foo /foo:/:/bar 0
+ancestor /foo /:/bar:/foo 0
ancestor /foo/bar / 0
ancestor /foo/bar /fo -1
-ancestor /foo/bar foo -1
ancestor /foo/bar /foo 4
-ancestor /foo/bar /foo/ 4
ancestor /foo/bar /foo/ba -1
ancestor /foo/bar /:/fo 0
ancestor /foo/bar /foo:/foo/ba 4
ancestor /foo/bar /bar -1
-ancestor /foo/bar /bar/ -1
-ancestor /foo/bar /fo: -1
-ancestor /foo/bar :/fo -1
-ancestor /foo/bar /foo:/bar/ 4
-ancestor /foo/bar /:/foo:/bar/ 4
-ancestor /foo/bar /foo:/:/bar/ 4
-ancestor /foo/bar /:/bar/:/fo 0
-ancestor /foo/bar /:/bar/ 0
-ancestor /foo/bar .:/foo/. 4
-ancestor /foo/bar .:/foo/.:.: 4
-ancestor /foo/bar /foo/./:.:/bar 4
-ancestor /foo/bar .:/bar -1
+ancestor /foo/bar /fo -1
+ancestor /foo/bar /foo:/bar 4
+ancestor /foo/bar /:/foo:/bar 4
+ancestor /foo/bar /foo:/:/bar 4
+ancestor /foo/bar /:/bar:/fo 0
+ancestor /foo/bar /:/bar 0
+ancestor /foo/bar /foo 4
+ancestor /foo/bar /foo:/bar 4
+ancestor /foo/bar /bar -1
test_expect_success 'strip_path_suffix' '
test c:/msysgit = $(test-path-utils strip_path_suffix \
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/git-1.8.1.1/t/t0063-string-list.sh new/git-1.8.1.2/t/t0063-string-list.sh
--- old/git-1.8.1.1/t/t0063-string-list.sh 2013-01-14 20:22:04.000000000 +0100
+++ new/git-1.8.1.2/t/t0063-string-list.sh 2013-01-28 21:01:51.000000000 +0100
@@ -17,14 +17,6 @@
"
}
-test_longest_prefix () {
- test "$(test-string-list longest_prefix "$1" "$2")" = "$3"
-}
-
-test_no_longest_prefix () {
- test_must_fail test-string-list longest_prefix "$1" "$2"
-}
-
test_split "foo:bar:baz" ":" "-1" <<EOF
3
[0]: "foo"
@@ -96,26 +88,4 @@
test a:b:c = "$(test-string-list remove_duplicates a:a:a:b:b:b:c:c:c)"
'
-test_expect_success "test longest_prefix" '
- test_no_longest_prefix - '' &&
- test_no_longest_prefix - x &&
- test_longest_prefix "" x "" &&
- test_longest_prefix x x x &&
- test_longest_prefix "" foo "" &&
- test_longest_prefix : foo "" &&
- test_longest_prefix f foo f &&
- test_longest_prefix foo foobar foo &&
- test_longest_prefix foo foo foo &&
- test_no_longest_prefix bar foo &&
- test_no_longest_prefix bar:bar foo &&
- test_no_longest_prefix foobar foo &&
- test_longest_prefix foo:bar foo foo &&
- test_longest_prefix foo:bar bar bar &&
- test_longest_prefix foo::bar foo foo &&
- test_longest_prefix foo:foobar foo foo &&
- test_longest_prefix foobar:foo foo foo &&
- test_longest_prefix foo: bar "" &&
- test_longest_prefix :foo bar ""
-'
-
test_done
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/git-1.8.1.1/t/t5000-tar-tree.sh new/git-1.8.1.2/t/t5000-tar-tree.sh
--- old/git-1.8.1.1/t/t5000-tar-tree.sh 2013-01-14 20:22:04.000000000 +0100
+++ new/git-1.8.1.2/t/t5000-tar-tree.sh 2013-01-28 21:01:51.000000000 +0100
@@ -25,32 +25,11 @@
'
. ./test-lib.sh
-UNZIP=${UNZIP:-unzip}
GZIP=${GZIP:-gzip}
GUNZIP=${GUNZIP:-gzip -d}
SUBSTFORMAT=%H%n
-check_zip() {
- zipfile=$1.zip
- listfile=$1.lst
- dir=$1
- dir_with_prefix=$dir/$2
-
- test_expect_success UNZIP " extract ZIP archive" "
- (mkdir $dir && cd $dir && $UNZIP ../$zipfile)
- "
-
- test_expect_success UNZIP " validate filenames" "
- (cd ${dir_with_prefix}a && find .) | sort >$listfile &&
- test_cmp a.lst $listfile
- "
-
- test_expect_success UNZIP " validate file contents" "
- diff -r a ${dir_with_prefix}a
- "
-}
-
test_expect_success \
'populate workdir' \
'mkdir a b c &&
@@ -201,62 +180,12 @@
test_cmp a/substfile2 g/prefix/a/substfile2
'
-$UNZIP -v >/dev/null 2>&1
-if [ $? -eq 127 ]; then
- say "Skipping ZIP tests, because unzip was not found"
-else
- test_set_prereq UNZIP
-fi
-
-test_expect_success \
- 'git archive --format=zip' \
- 'git archive --format=zip HEAD >d.zip'
-
-check_zip d
-
-test_expect_success \
- 'git archive --format=zip in a bare repo' \
- '(cd bare.git && git archive --format=zip HEAD) >d1.zip'
-
-test_expect_success \
- 'git archive --format=zip vs. the same in a bare repo' \
- 'test_cmp d.zip d1.zip'
-
-test_expect_success 'git archive --format=zip with --output' \
- 'git archive --format=zip --output=d2.zip HEAD &&
- test_cmp d.zip d2.zip'
-
-test_expect_success 'git archive with --output, inferring format' '
- git archive --output=d3.zip HEAD &&
- test_cmp d.zip d3.zip
-'
-
test_expect_success 'git archive with --output, override inferred format' '
git archive --format=tar --output=d4.zip HEAD &&
test_cmp b.tar d4.zip
'
test_expect_success \
- 'git archive --format=zip with prefix' \
- 'git archive --format=zip --prefix=prefix/ HEAD >e.zip'
-
-check_zip e prefix/
-
-test_expect_success 'git archive -0 --format=zip on large files' '
- test_config core.bigfilethreshold 1 &&
- git archive -0 --format=zip HEAD >large.zip
-'
-
-check_zip large
-
-test_expect_success 'git archive --format=zip on large files' '
- test_config core.bigfilethreshold 1 &&
- git archive --format=zip HEAD >large-compressed.zip
-'
-
-check_zip large-compressed
-
-test_expect_success \
'git archive --list outside of a git repo' \
'GIT_DIR=some/non-existing/directory git archive --list'
Files old/git-1.8.1.1/t/t5003/infozip-symlinks.zip and new/git-1.8.1.2/t/t5003/infozip-symlinks.zip differ
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/git-1.8.1.1/t/t5003-archive-zip.sh new/git-1.8.1.2/t/t5003-archive-zip.sh
--- old/git-1.8.1.1/t/t5003-archive-zip.sh 1970-01-01 01:00:00.000000000 +0100
+++ new/git-1.8.1.2/t/t5003-archive-zip.sh 2013-01-28 21:01:51.000000000 +0100
@@ -0,0 +1,131 @@
+#!/bin/sh
+
+test_description='git archive --format=zip test'
+
+. ./test-lib.sh
+GIT_UNZIP=${GIT_UNZIP:-unzip}
+
+SUBSTFORMAT=%H%n
+
+test_lazy_prereq UNZIP '
+ "$GIT_UNZIP" -v
+ test $? -ne 127
+'
+
+test_lazy_prereq UNZIP_SYMLINKS '
+ (
+ mkdir unzip-symlinks &&
+ cd unzip-symlinks &&
+ "$GIT_UNZIP" "$TEST_DIRECTORY"/t5003/infozip-symlinks.zip &&
+ test -h symlink
+ )
+'
+
+check_zip() {
+ zipfile=$1.zip
+ listfile=$1.lst
+ dir=$1
+ dir_with_prefix=$dir/$2
+
+ test_expect_success UNZIP " extract ZIP archive" '
+ (mkdir $dir && cd $dir && "$GIT_UNZIP" ../$zipfile)
+ '
+
+ test_expect_success UNZIP " validate filenames" "
+ (cd ${dir_with_prefix}a && find .) | sort >$listfile &&
+ test_cmp a.lst $listfile
+ "
+
+ test_expect_success UNZIP " validate file contents" "
+ diff -r a ${dir_with_prefix}a
+ "
+}
+
+test_expect_success \
+ 'populate workdir' \
+ 'mkdir a b c &&
+ echo simple textfile >a/a &&
+ mkdir a/bin &&
+ cp /bin/sh a/bin &&
+ printf "A\$Format:%s\$O" "$SUBSTFORMAT" >a/substfile1 &&
+ printf "A not substituted O" >a/substfile2 &&
+ (p=long_path_to_a_file && cd a &&
+ for depth in 1 2 3 4 5; do mkdir $p && cd $p; done &&
+ echo text >file_with_long_path)
+'
+
+test_expect_success SYMLINKS,UNZIP_SYMLINKS 'add symlink' '
+ ln -s a a/symlink_to_a
+'
+
+test_expect_success 'prepare file list' '
+ (cd a && find .) | sort >a.lst
+'
+
+test_expect_success \
+ 'add ignored file' \
+ 'echo ignore me >a/ignored &&
+ echo ignored export-ignore >.git/info/attributes'
+
+test_expect_success \
+ 'add files to repository' \
+ 'find a -type f | xargs git update-index --add &&
+ find a -type l | xargs git update-index --add &&
+ treeid=`git write-tree` &&
+ echo $treeid >treeid &&
+ git update-ref HEAD $(TZ=GMT GIT_COMMITTER_DATE="2005-05-27 22:00:00" \
+ git commit-tree $treeid </dev/null)'
+
+test_expect_success \
+ 'create bare clone' \
+ 'git clone --bare . bare.git &&
+ cp .git/info/attributes bare.git/info/attributes'
+
+test_expect_success \
+ 'remove ignored file' \
+ 'rm a/ignored'
+
+test_expect_success \
+ 'git archive --format=zip' \
+ 'git archive --format=zip HEAD >d.zip'
+
+check_zip d
+
+test_expect_success \
+ 'git archive --format=zip in a bare repo' \
+ '(cd bare.git && git archive --format=zip HEAD) >d1.zip'
+
+test_expect_success \
+ 'git archive --format=zip vs. the same in a bare repo' \
+ 'test_cmp d.zip d1.zip'
+
+test_expect_success 'git archive --format=zip with --output' \
+ 'git archive --format=zip --output=d2.zip HEAD &&
+ test_cmp d.zip d2.zip'
+
+test_expect_success 'git archive with --output, inferring format' '
+ git archive --output=d3.zip HEAD &&
+ test_cmp d.zip d3.zip
+'
+
+test_expect_success \
+ 'git archive --format=zip with prefix' \
+ 'git archive --format=zip --prefix=prefix/ HEAD >e.zip'
+
+check_zip e prefix/
+
+test_expect_success 'git archive -0 --format=zip on large files' '
+ test_config core.bigfilethreshold 1 &&
+ git archive -0 --format=zip HEAD >large.zip
+'
+
+check_zip large
+
+test_expect_success 'git archive --format=zip on large files' '
+ test_config core.bigfilethreshold 1 &&
+ git archive --format=zip HEAD >large-compressed.zip
+'
+
+check_zip large-compressed
+
+test_done
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/git-1.8.1.1/t/t7061-wtstatus-ignore.sh new/git-1.8.1.2/t/t7061-wtstatus-ignore.sh
--- old/git-1.8.1.1/t/t7061-wtstatus-ignore.sh 1970-01-01 01:00:00.000000000 +0100
+++ new/git-1.8.1.2/t/t7061-wtstatus-ignore.sh 2013-01-28 21:01:51.000000000 +0100
@@ -0,0 +1,146 @@
+#!/bin/sh
+
+test_description='git-status ignored files'
+
+. ./test-lib.sh
+
+cat >expected <<\EOF
+?? .gitignore
+?? actual
+?? expected
+?? untracked/
+EOF
+
+test_expect_success 'status untracked directory with --ignored' '
+ echo "ignored" >.gitignore &&
+ mkdir untracked &&
+ : >untracked/ignored &&
+ : >untracked/uncommitted &&
+ git status --porcelain --ignored >actual &&
+ test_cmp expected actual
+'
+
+cat >expected <<\EOF
+?? .gitignore
+?? actual
+?? expected
+?? untracked/uncommitted
+!! untracked/ignored
+EOF
+
+test_expect_success 'status untracked directory with --ignored -u' '
+ git status --porcelain --ignored -u >actual &&
+ test_cmp expected actual
+'
+
+cat >expected <<\EOF
+?? .gitignore
+?? actual
+?? expected
+!! ignored/
+EOF
+
+test_expect_success 'status ignored directory with --ignore' '
+ rm -rf untracked &&
+ mkdir ignored &&
+ : >ignored/uncommitted &&
+ git status --porcelain --ignored >actual &&
+ test_cmp expected actual
+'
+
+cat >expected <<\EOF
+?? .gitignore
+?? actual
+?? expected
+!! ignored/uncommitted
+EOF
+
+test_expect_success 'status ignored directory with --ignore -u' '
+ git status --porcelain --ignored -u >actual &&
+ test_cmp expected actual
+'
+
+cat >expected <<\EOF
+?? .gitignore
+?? actual
+?? expected
+!! untracked-ignored/
+EOF
+
+test_expect_success 'status untracked directory with ignored files with --ignore' '
+ rm -rf ignored &&
+ mkdir untracked-ignored &&
+ mkdir untracked-ignored/test &&
+ : >untracked-ignored/ignored &&
+ : >untracked-ignored/test/ignored &&
+ git status --porcelain --ignored >actual &&
+ test_cmp expected actual
+'
+
+cat >expected <<\EOF
+?? .gitignore
+?? actual
+?? expected
+!! untracked-ignored/ignored
+!! untracked-ignored/test/ignored
+EOF
+
+test_expect_success 'status untracked directory with ignored files with --ignore -u' '
+ git status --porcelain --ignored -u >actual &&
+ test_cmp expected actual
+'
+
+cat >expected <<\EOF
+?? .gitignore
+?? actual
+?? expected
+EOF
+
+test_expect_success 'status ignored tracked directory with --ignore' '
+ rm -rf untracked-ignored &&
+ mkdir tracked &&
+ : >tracked/committed &&
+ git add tracked/committed &&
+ git commit -m. &&
+ echo "tracked" >.gitignore &&
+ git status --porcelain --ignored >actual &&
+ test_cmp expected actual
+'
+
+cat >expected <<\EOF
+?? .gitignore
+?? actual
+?? expected
+EOF
+
+test_expect_success 'status ignored tracked directory with --ignore -u' '
+ git status --porcelain --ignored -u >actual &&
+ test_cmp expected actual
+'
+
+cat >expected <<\EOF
+?? .gitignore
+?? actual
+?? expected
+!! tracked/
+EOF
+
+test_expect_success 'status ignored tracked directory and uncommitted file with --ignore' '
+ : >tracked/uncommitted &&
+ git status --porcelain --ignored >actual &&
+ test_cmp expected actual
+'
+
+cat >expected <<\EOF
+?? .gitignore
+?? actual
+?? expected
+!! tracked/uncommitted
+EOF
+
+test_expect_success 'status ignored tracked directory and uncommitted file with --ignore -u' '
+ git status --porcelain --ignored -u >actual &&
+ test_cmp expected actual
+'
+
+test_done
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/git-1.8.1.1/t/test-lib.sh new/git-1.8.1.2/t/test-lib.sh
--- old/git-1.8.1.1/t/test-lib.sh 2013-01-14 20:22:04.000000000 +0100
+++ new/git-1.8.1.2/t/test-lib.sh 2013-01-28 21:01:51.000000000 +0100
@@ -85,6 +85,7 @@
.*_TEST
PROVE
VALGRIND
+ UNZIP
PERF_AGGREGATING_LATER
));
my @vars = grep(/^GIT_/ && !/^GIT_($ok)/o, @env);
@@ -128,6 +129,7 @@
unset CDPATH
unset GREP_OPTIONS
+unset UNZIP
case $(echo $GIT_TRACE |tr "[A-Z]" "[a-z]") in
1|2|true)
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/git-1.8.1.1/test-path-utils.c new/git-1.8.1.2/test-path-utils.c
--- old/git-1.8.1.1/test-path-utils.c 2013-01-14 20:22:04.000000000 +0100
+++ new/git-1.8.1.2/test-path-utils.c 2013-01-28 21:01:51.000000000 +0100
@@ -1,4 +1,32 @@
#include "cache.h"
+#include "string-list.h"
+
+/*
+ * A "string_list_each_func_t" function that normalizes an entry from
+ * GIT_CEILING_DIRECTORIES. If the path is unusable for some reason,
+ * die with an explanation.
+ */
+static int normalize_ceiling_entry(struct string_list_item *item, void *unused)
+{
+ const char *ceil = item->string;
+ int len = strlen(ceil);
+ char buf[PATH_MAX+1];
+
+ if (len == 0)
+ die("Empty path is not supported");
+ if (len > PATH_MAX)
+ die("Path \"%s\" is too long", ceil);
+ if (!is_absolute_path(ceil))
+ die("Path \"%s\" is not absolute", ceil);
+ if (normalize_path_copy(buf, ceil) < 0)
+ die("Path \"%s\" could not be normalized", ceil);
+ len = strlen(buf);
+ if (len > 1 && buf[len-1] == '/')
+ die("Normalized path \"%s\" ended with slash", buf);
+ free(item->string);
+ item->string = xstrdup(buf);
+ return 1;
+}
int main(int argc, char **argv)
{
@@ -30,7 +58,28 @@
}
if (argc == 4 && !strcmp(argv[1], "longest_ancestor_length")) {
- int len = longest_ancestor_length(argv[2], argv[3]);
+ int len;
+ struct string_list ceiling_dirs = STRING_LIST_INIT_DUP;
+ char *path = xstrdup(argv[2]);
+
+ /*
+ * We have to normalize the arguments because under
+ * Windows, bash mangles arguments that look like
+ * absolute POSIX paths or colon-separate lists of
+ * absolute POSIX paths into DOS paths (e.g.,
+ * "/foo:/foo/bar" might be converted to
+ * "D:\Src\msysgit\foo;D:\Src\msysgit\foo\bar"),
+ * whereas longest_ancestor_length() requires paths
+ * that use forward slashes.
+ */
+ if (normalize_path_copy(path, path))
+ die("Path \"%s\" could not be normalized", argv[2]);
+ string_list_split(&ceiling_dirs, argv[3], PATH_SEP, -1);
+ filter_string_list(&ceiling_dirs, 0,
+ normalize_ceiling_entry, NULL);
+ len = longest_ancestor_length(path, &ceiling_dirs);
+ string_list_clear(&ceiling_dirs, 0);
+ free(path);
printf("%d\n", len);
return 0;
}
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/git-1.8.1.1/test-string-list.c new/git-1.8.1.2/test-string-list.c
--- old/git-1.8.1.1/test-string-list.c 2013-01-14 20:22:04.000000000 +0100
+++ new/git-1.8.1.2/test-string-list.c 2013-01-28 21:01:51.000000000 +0100
@@ -97,26 +97,6 @@
return 0;
}
- if (argc == 4 && !strcmp(argv[1], "longest_prefix")) {
- /* arguments: <colon-separated-prefixes>|- <string> */
- struct string_list prefixes = STRING_LIST_INIT_DUP;
- int retval;
- const char *prefix_string = argv[2];
- const char *string = argv[3];
- const char *match;
-
- parse_string_list(&prefixes, prefix_string);
- match = string_list_longest_prefix(&prefixes, string);
- if (match) {
- printf("%s\n", match);
- retval = 0;
- }
- else
- retval = 1;
- string_list_clear(&prefixes, 0);
- return retval;
- }
-
fprintf(stderr, "%s: unknown function name: %s\n", argv[0],
argv[1] ? argv[1] : "(there was none)");
return 1;
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/git-1.8.1.1/version new/git-1.8.1.2/version
--- old/git-1.8.1.1/version 2013-01-14 20:22:04.000000000 +0100
+++ new/git-1.8.1.2/version 2013-01-28 21:01:52.000000000 +0100
@@ -1 +1 @@
-1.8.1.1
+1.8.1.2
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/git-1.8.1.1/wt-status.c new/git-1.8.1.2/wt-status.c
--- old/git-1.8.1.1/wt-status.c 2013-01-14 20:22:04.000000000 +0100
+++ new/git-1.8.1.2/wt-status.c 2013-01-28 21:01:51.000000000 +0100
@@ -516,7 +516,9 @@
if (s->show_ignored_files) {
dir.nr = 0;
- dir.flags = DIR_SHOW_IGNORED | DIR_SHOW_OTHER_DIRECTORIES;
+ dir.flags = DIR_SHOW_IGNORED;
+ if (s->show_untracked_files != SHOW_ALL_UNTRACKED_FILES)
+ dir.flags |= DIR_SHOW_OTHER_DIRECTORIES;
fill_directory(&dir, s->pathspec);
for (i = 0; i < dir.nr; i++) {
struct dir_entry *ent = dir.entries[i];
--
To unsubscribe, e-mail: opensuse-commit+unsubscribe(a)opensuse.org
For additional commands, e-mail: opensuse-commit+help(a)opensuse.org
1
0
Hello community,
here is the log from the commit of package yast2-all-packages for openSUSE:Factory checked in at 2013-02-01 11:04:23
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Comparing /work/SRC/openSUSE:Factory/yast2-all-packages (Old)
and /work/SRC/openSUSE:Factory/.yast2-all-packages.new (New)
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Package is "yast2-all-packages", Maintainer is "mls(a)suse.com"
Changes:
--------
--- /work/SRC/openSUSE:Factory/yast2-all-packages/yast2-all-packages.changes 2012-01-17 16:17:24.000000000 +0100
+++ /work/SRC/openSUSE:Factory/.yast2-all-packages.new/yast2-all-packages.changes 2013-02-01 11:04:24.000000000 +0100
@@ -1,0 +2,5 @@
+Thu Jan 31 13:00:02 UTC 2013 - coolo(a)suse.com
+
+- clean up the list of packages a bit so yast2-schema builds again
+
+-------------------------------------------------------------------
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Other differences:
------------------
++++++ yast2-all-packages.spec ++++++
--- /var/tmp/diff_new_pack.3BNdGG/_old 2013-02-01 11:04:29.000000000 +0100
+++ /var/tmp/diff_new_pack.3BNdGG/_new 2013-02-01 11:04:29.000000000 +0100
@@ -1,7 +1,7 @@
#
# spec file for package yast2-all-packages
#
-# Copyright (c) 2011 SUSE LINUX Products GmbH, Nuernberg, Germany.
+# Copyright (c) 2013 SUSE LINUX Products GmbH, Nuernberg, Germany.
#
# All modifications and additions to the file contributed by third parties
# remain the property of their copyright owners, unless otherwise agreed
@@ -16,12 +16,11 @@
#
-
Name: yast2-all-packages
Version: 1.0
-Release: 158
-License: GPL-2.0+
+Release: 0
Summary: Internal Package
+License: GPL-2.0+
Group: Metapackages
Source0: COPYING
Requires: autoyast2
@@ -49,7 +48,6 @@
Requires: yast2-dhcp-server
Requires: yast2-dirinstall
Requires: yast2-dns-server
-Requires: yast2-drbd
Requires: yast2-fingerprint-reader
Requires: yast2-firewall
Requires: yast2-firstboot
@@ -72,8 +70,6 @@
Requires: yast2-ldap
Requires: yast2-ldap-client
Requires: yast2-ldap-server
-Requires: yast2-libyui
-Requires: yast2-libyui-devel
Requires: yast2-live-installer
Requires: yast2-mail
Requires: yast2-mail-plugins
@@ -81,7 +77,6 @@
Requires: yast2-mouse
Requires: yast2-multipath
Requires: yast2-ncurses
-Requires: yast2-ncurses-devel
Requires: yast2-ncurses-pkg
Requires: yast2-network
Requires: yast2-network-devel-doc
@@ -106,7 +101,6 @@
Requires: yast2-product-creator
Requires: yast2-python-bindings
Requires: yast2-qt
-Requires: yast2-qt-devel
Requires: yast2-qt-pkg
Requires: yast2-reipl
Requires: yast2-restore
@@ -130,10 +124,7 @@
Requires: yast2-sysconfig
Requires: yast2-testsuite
Requires: yast2-tftp-server
-Requires: yast2-theme-SLE
Requires: yast2-theme-openSUSE
-Requires: yast2-theme-openSUSE-Crystal
-Requires: yast2-theme-openSUSE-Oxygen
Requires: yast2-trans-af
Requires: yast2-trans-allpacks
Requires: yast2-trans-am
--
To unsubscribe, e-mail: opensuse-commit+unsubscribe(a)opensuse.org
For additional commands, e-mail: opensuse-commit+help(a)opensuse.org
1
0
Hello community,
here is the log from the commit of package patterns-openSUSE for openSUSE:12.3 checked in at 2013-02-01 11:04:10
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Comparing /work/SRC/openSUSE:12.3/patterns-openSUSE (Old)
and /work/SRC/openSUSE:12.3/.patterns-openSUSE.new (New)
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Package is "patterns-openSUSE", Maintainer is "coolo(a)suse.com"
Changes:
--------
--- /work/SRC/openSUSE:12.3/patterns-openSUSE/patterns-openSUSE.changes 2013-01-31 01:30:15.000000000 +0100
+++ /work/SRC/openSUSE:12.3/.patterns-openSUSE.new/patterns-openSUSE.changes 2013-02-01 11:04:11.000000000 +0100
@@ -1,0 +2,8 @@
+Fri Feb 1 08:42:53 UTC 2013 - coolo(a)suse.com
+
+- Stephan Kulow (1):
+ we're back to nscd
+
+Commit: 37d7d67f
+
+-------------------------------------------------------------------
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Other differences:
------------------
++++++ patterns-openSUSE.spec ++++++
--- /var/tmp/diff_new_pack.PP9eDV/_old 2013-02-01 11:04:11.000000000 +0100
+++ /var/tmp/diff_new_pack.PP9eDV/_new 2013-02-01 11:04:11.000000000 +0100
@@ -683,6 +683,7 @@
Recommends: netcat-openbsd
Recommends: nfs-client
Recommends: nfsidmap
+Recommends: nscd
Recommends: ntfs-3g
Recommends: ntfsprogs
Recommends: ntp
@@ -713,7 +714,6 @@
Recommends: tar
Recommends: timezone
Recommends: udev
-Recommends: unscd
Recommends: usbutils
Recommends: utempter
Recommends: vim
@@ -1709,6 +1709,7 @@
Recommends: lukemftp
Recommends: netcat-openbsd
Recommends: nfs-client
+Recommends: nscd
Recommends: ntfs-3g
Recommends: ntp
Recommends: patterns-openSUSE-minimal_base-conflicts
@@ -1720,7 +1721,6 @@
Recommends: sysfsutils
Recommends: tcsh
Recommends: telnet
-Recommends: unscd
Recommends: vim
Recommends: w3m
Recommends: wget
++++++ patterns-openSUSE-data.tar.bz2 ++++++
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/patterns-openSUSE-data/data/ENHANCED-BASIS new/patterns-openSUSE-data/data/ENHANCED-BASIS
--- old/patterns-openSUSE-data/data/ENHANCED-BASIS 2013-01-25 10:54:25.000000000 +0100
+++ new/patterns-openSUSE-data/data/ENHANCED-BASIS 2013-02-01 09:42:29.000000000 +0100
@@ -95,7 +95,7 @@
netcat-openbsd
nfs-client
nfsidmap
-unscd
+nscd
ntfsprogs
openldap2-client
openslp
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/patterns-openSUSE-data/data/MINIMAL new/patterns-openSUSE-data/data/MINIMAL
--- old/patterns-openSUSE-data/data/MINIMAL 2013-01-25 10:54:25.000000000 +0100
+++ new/patterns-openSUSE-data/data/MINIMAL 2013-02-01 09:42:29.000000000 +0100
@@ -33,7 +33,7 @@
sysfsutils
tcsh
telnet
-unscd
+nscd
vim
w3m
wget
--
To unsubscribe, e-mail: opensuse-commit+unsubscribe(a)opensuse.org
For additional commands, e-mail: opensuse-commit+help(a)opensuse.org
1
0
Hello community,
here is the log from the commit of package patterns-openSUSE for openSUSE:Factory checked in at 2013-02-01 11:04:06
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Comparing /work/SRC/openSUSE:Factory/patterns-openSUSE (Old)
and /work/SRC/openSUSE:Factory/.patterns-openSUSE.new (New)
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Package is "patterns-openSUSE", Maintainer is "coolo(a)suse.com"
Changes:
--------
--- /work/SRC/openSUSE:Factory/patterns-openSUSE/patterns-openSUSE.changes 2013-01-28 09:32:58.000000000 +0100
+++ /work/SRC/openSUSE:Factory/.patterns-openSUSE.new/patterns-openSUSE.changes 2013-02-01 11:04:07.000000000 +0100
@@ -1,0 +2,8 @@
+Fri Feb 1 08:42:53 UTC 2013 - coolo(a)suse.com
+
+- Stephan Kulow (1):
+ we're back to nscd
+
+Commit: 37d7d67f
+
+-------------------------------------------------------------------
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Other differences:
------------------
++++++ patterns-openSUSE.spec ++++++
--- /var/tmp/diff_new_pack.HRbP8k/_old 2013-02-01 11:04:10.000000000 +0100
+++ /var/tmp/diff_new_pack.HRbP8k/_new 2013-02-01 11:04:10.000000000 +0100
@@ -683,6 +683,7 @@
Recommends: netcat-openbsd
Recommends: nfs-client
Recommends: nfsidmap
+Recommends: nscd
Recommends: ntfs-3g
Recommends: ntfsprogs
Recommends: ntp
@@ -713,7 +714,6 @@
Recommends: tar
Recommends: timezone
Recommends: udev
-Recommends: unscd
Recommends: usbutils
Recommends: utempter
Recommends: vim
@@ -1709,6 +1709,7 @@
Recommends: lukemftp
Recommends: netcat-openbsd
Recommends: nfs-client
+Recommends: nscd
Recommends: ntfs-3g
Recommends: ntp
Recommends: patterns-openSUSE-minimal_base-conflicts
@@ -1720,7 +1721,6 @@
Recommends: sysfsutils
Recommends: tcsh
Recommends: telnet
-Recommends: unscd
Recommends: vim
Recommends: w3m
Recommends: wget
++++++ patterns-openSUSE-data.tar.bz2 ++++++
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/patterns-openSUSE-data/data/ENHANCED-BASIS new/patterns-openSUSE-data/data/ENHANCED-BASIS
--- old/patterns-openSUSE-data/data/ENHANCED-BASIS 2013-01-25 10:54:25.000000000 +0100
+++ new/patterns-openSUSE-data/data/ENHANCED-BASIS 2013-02-01 09:42:29.000000000 +0100
@@ -95,7 +95,7 @@
netcat-openbsd
nfs-client
nfsidmap
-unscd
+nscd
ntfsprogs
openldap2-client
openslp
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/patterns-openSUSE-data/data/MINIMAL new/patterns-openSUSE-data/data/MINIMAL
--- old/patterns-openSUSE-data/data/MINIMAL 2013-01-25 10:54:25.000000000 +0100
+++ new/patterns-openSUSE-data/data/MINIMAL 2013-02-01 09:42:29.000000000 +0100
@@ -33,7 +33,7 @@
sysfsutils
tcsh
telnet
-unscd
+nscd
vim
w3m
wget
--
To unsubscribe, e-mail: opensuse-commit+unsubscribe(a)opensuse.org
For additional commands, e-mail: opensuse-commit+help(a)opensuse.org
1
0
Hello community,
here is the log from the commit of package ngrep for openSUSE:Factory checked in at 2013-02-01 11:00:33
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Comparing /work/SRC/openSUSE:Factory/ngrep (Old)
and /work/SRC/openSUSE:Factory/.ngrep.new (New)
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Package is "ngrep", Maintainer is "freitag(a)suse.com"
Changes:
--------
New Changes file:
--- /dev/null 2013-01-09 19:40:42.352580873 +0100
+++ /work/SRC/openSUSE:Factory/.ngrep.new/ngrep.changes 2013-02-01 11:00:35.000000000 +0100
@@ -0,0 +1,10 @@
+-------------------------------------------------------------------
+Thu May 31 11:42:56 UTC 2012 - pcerny(a)suse.com
+
+- corrected licence
+
+-------------------------------------------------------------------
+Tue Aug 26 00:00:00 UTC 2008 - lchiquitto(a)novell.com
+
+- First version (1.45)
+
New:
----
ngrep-1.45.tar.bz2
ngrep.changes
ngrep.spec
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Other differences:
------------------
++++++ ngrep.spec ++++++
#
# spec file for package ngrep
#
# Copyright (c) 2013 SUSE LINUX Products GmbH, Nuernberg, Germany.
#
# All modifications and additions to the file contributed by third parties
# remain the property of their copyright owners, unless otherwise agreed
# upon. The license for this file, and modifications and additions to the
# file, is the same license as for the pristine package itself (unless the
# license for the pristine package is not an Open Source License, in which
# case the license is the MIT License). An "Open Source License" is a
# license that conforms to the Open Source Definition (Version 1.9)
# published by the Open Source Initiative.
# Please submit bugfixes or comments via http://bugs.opensuse.org/
#
Name: ngrep
Version: 1.45
Release: 0
Summary: Network grep
License: BSD-4-Clause
Group: Productivity/Networking/Diagnostic
Url: http://ngrep.sourceforge.net
Source: %{name}-%{version}.tar.bz2
BuildRequires: libpcap-devel
BuildRoot: %{_tmppath}/%{name}-%{version}-build
Requires: libpcap
%description
ngrep strives to provide most of GNU grep's common features, applying them
to the network layer. ngrep is a pcap-aware tool that will allow you to
specify extended regular or hexadecimal expressions to match against data
payloads of packets. It currently recognizes IPv4/6, TCP, UDP, ICMPv4/6,
IGMP and Raw across Ethernet, PPP, SLIP, FDDI, Token Ring and null interfaces,
and understands BPF filter logic in the same fashion as more common packet
sniffing tools, such as tcpdump and snoop.
%prep
%setup -q
%build
%configure \
--with-pcap-includes=%{_includedir} \
make
%install
rm -rf %{buildroot}
%makeinstall
%clean
rm -rf %{buildroot}
%files
%defattr(-,root,root)
%{_bindir}/%{name}
%{_mandir}/man8/%{name}.8.gz
%changelog
--
To unsubscribe, e-mail: opensuse-commit+unsubscribe(a)opensuse.org
For additional commands, e-mail: opensuse-commit+help(a)opensuse.org
1
0
Hello community,
here is the log from the commit of package nagios-plugins-mem for openSUSE:Factory checked in at 2013-02-01 11:00:04
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Comparing /work/SRC/openSUSE:Factory/nagios-plugins-mem (Old)
and /work/SRC/openSUSE:Factory/.nagios-plugins-mem.new (New)
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Package is "nagios-plugins-mem", Maintainer is ""
Changes:
--------
--- /work/SRC/openSUSE:Factory/nagios-plugins-mem/nagios-plugins-mem.changes 2013-01-28 09:32:29.000000000 +0100
+++ /work/SRC/openSUSE:Factory/.nagios-plugins-mem.new/nagios-plugins-mem.changes 2013-02-01 11:00:05.000000000 +0100
@@ -1,0 +2,5 @@
+Thu Jan 31 21:11:33 UTC 2013 - lars(a)linux-schulserver.de
+
+- follow /usr move for cat and uname in apparmor profile
+
+-------------------------------------------------------------------
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Other differences:
------------------
++++++ nagios-plugins-mem.spec ++++++
--- /var/tmp/diff_new_pack.zaNsnF/_old 2013-02-01 11:00:07.000000000 +0100
+++ /var/tmp/diff_new_pack.zaNsnF/_new 2013-02-01 11:00:07.000000000 +0100
@@ -19,10 +19,10 @@
Name: nagios-plugins-mem
Version: 20120618
Release: 0
-License: MIT
Summary: Check memory plugin for Nagios
-Url: https://github.com/justintime/nagios-plugins
+License: MIT
Group: System/Monitoring
+Url: https://github.com/justintime/nagios-plugins
Source0: check_mem.tar.bz2
Source1: nagios-plugins-mem-apparmor
Source2: nagios-plugins-mem-rpmlintrc
++++++ nagios-plugins-mem-apparmor ++++++
--- /var/tmp/diff_new_pack.zaNsnF/_old 2013-02-01 11:00:07.000000000 +0100
+++ /var/tmp/diff_new_pack.zaNsnF/_new 2013-02-01 11:00:07.000000000 +0100
@@ -4,6 +4,8 @@
#include <abstractions/consoles>
#include <abstractions/perl>
/bin/cat rix,
+ /usr/bin/cat rix,
/bin/uname rix,
+ /usr/bin/uname rix,
}
--
To unsubscribe, e-mail: opensuse-commit+unsubscribe(a)opensuse.org
For additional commands, e-mail: opensuse-commit+help(a)opensuse.org
1
0