google_hash 0.8.1 → 0.8.2

Sign up to get free protection for your applications and to get access to all the features.
Files changed (121) hide show
  1. data/ChangeLog.txt +2 -0
  2. data/VERSION +1 -1
  3. data/ext/clean.bat +0 -0
  4. data/ext/clean.sh +4 -0
  5. data/ext/extconf.rb +4 -5
  6. data/ext/go.bat +0 -0
  7. data/ext/sparsehash-2.0.2/AUTHORS +2 -0
  8. data/ext/{sparsehash-1.8.1 → sparsehash-2.0.2}/COPYING +0 -0
  9. data/ext/{sparsehash-1.8.1 → sparsehash-2.0.2}/ChangeLog +60 -0
  10. data/ext/sparsehash-2.0.2/INSTALL +365 -0
  11. data/ext/sparsehash-2.0.2/Makefile +1336 -0
  12. data/ext/{sparsehash-1.8.1 → sparsehash-2.0.2}/Makefile.am +97 -40
  13. data/ext/{sparsehash-1.8.1 → sparsehash-2.0.2}/Makefile.in +538 -256
  14. data/ext/sparsehash-2.0.2/NEWS +188 -0
  15. data/ext/{sparsehash-1.8.1 → sparsehash-2.0.2}/README +4 -10
  16. data/ext/{sparsehash-1.8.1 → sparsehash-2.0.2}/README_windows.txt +3 -3
  17. data/ext/{sparsehash-1.8.1 → sparsehash-2.0.2}/TODO +0 -0
  18. data/ext/{sparsehash-1.8.1 → sparsehash-2.0.2}/aclocal.m4 +266 -166
  19. data/ext/sparsehash-2.0.2/allocator.patch +31 -0
  20. data/ext/{sparsehash-1.8.1 → sparsehash-2.0.2}/config.guess +235 -234
  21. data/ext/sparsehash-2.0.2/config.status +1238 -0
  22. data/ext/{sparsehash-1.8.1 → sparsehash-2.0.2}/config.sub +198 -64
  23. data/ext/{sparsehash-1.8.1 → sparsehash-2.0.2}/configure +1118 -1000
  24. data/ext/{sparsehash-1.8.1 → sparsehash-2.0.2}/configure.ac +4 -5
  25. data/ext/{sparsehash-1.8.1 → sparsehash-2.0.2}/depcomp +136 -36
  26. data/ext/{sparsehash-1.8.1 → sparsehash-2.0.2}/doc/dense_hash_map.html +182 -67
  27. data/ext/{sparsehash-1.8.1 → sparsehash-2.0.2}/doc/dense_hash_set.html +173 -74
  28. data/ext/{sparsehash-1.8.1 → sparsehash-2.0.2}/doc/designstyle.css +0 -6
  29. data/ext/{sparsehash-1.8.1 → sparsehash-2.0.2}/doc/implementation.html +0 -0
  30. data/ext/{sparsehash-1.8.1 → sparsehash-2.0.2}/doc/index.html +4 -5
  31. data/ext/{sparsehash-1.8.1 → sparsehash-2.0.2}/doc/performance.html +1 -1
  32. data/ext/{sparsehash-1.8.1 → sparsehash-2.0.2}/doc/sparse_hash_map.html +190 -58
  33. data/ext/{sparsehash-1.8.1 → sparsehash-2.0.2}/doc/sparse_hash_set.html +180 -65
  34. data/ext/{sparsehash-1.8.1 → sparsehash-2.0.2}/doc/sparsetable.html +1 -1
  35. data/ext/{sparsehash-1.8.1 → sparsehash-2.0.2}/experimental/Makefile +0 -0
  36. data/ext/{sparsehash-1.8.1 → sparsehash-2.0.2}/experimental/README +0 -0
  37. data/ext/{sparsehash-1.8.1 → sparsehash-2.0.2}/experimental/example.c +1 -0
  38. data/ext/{sparsehash-1.8.1 → sparsehash-2.0.2}/experimental/libchash.c +1 -0
  39. data/ext/{sparsehash-1.8.1 → sparsehash-2.0.2}/experimental/libchash.h +1 -0
  40. data/ext/sparsehash-2.0.2/install-sh +520 -0
  41. data/ext/{sparsehash-1.8.1 → sparsehash-2.0.2}/m4/acx_pthread.m4 +34 -0
  42. data/ext/{sparsehash-1.8.1 → sparsehash-2.0.2}/m4/google_namespace.m4 +0 -0
  43. data/ext/{sparsehash-1.8.1 → sparsehash-2.0.2}/m4/namespaces.m4 +0 -0
  44. data/ext/{sparsehash-1.8.1 → sparsehash-2.0.2}/m4/stl_hash.m4 +0 -0
  45. data/ext/{sparsehash-1.8.1 → sparsehash-2.0.2}/m4/stl_hash_fun.m4 +0 -0
  46. data/ext/{sparsehash-1.8.1 → sparsehash-2.0.2}/missing +60 -44
  47. data/ext/{sparsehash-1.8.1 → sparsehash-2.0.2}/packages/deb.sh +0 -0
  48. data/ext/{sparsehash-1.8.1 → sparsehash-2.0.2}/packages/deb/README +0 -0
  49. data/ext/{sparsehash-1.8.1 → sparsehash-2.0.2}/packages/deb/changelog +42 -0
  50. data/ext/{sparsehash-1.8.1 → sparsehash-2.0.2}/packages/deb/compat +0 -0
  51. data/ext/{sparsehash-1.8.1 → sparsehash-2.0.2}/packages/deb/control +1 -1
  52. data/ext/{sparsehash-1.8.1 → sparsehash-2.0.2}/packages/deb/copyright +5 -4
  53. data/ext/{sparsehash-1.8.1 → sparsehash-2.0.2}/packages/deb/docs +0 -0
  54. data/ext/{sparsehash-1.8.1 → sparsehash-2.0.2}/packages/deb/rules +0 -0
  55. data/ext/sparsehash-2.0.2/packages/deb/sparsehash.dirs +5 -0
  56. data/ext/sparsehash-2.0.2/packages/deb/sparsehash.install +6 -0
  57. data/ext/{sparsehash-1.8.1 → sparsehash-2.0.2}/packages/rpm.sh +1 -1
  58. data/ext/{sparsehash-1.8.1 → sparsehash-2.0.2}/packages/rpm/rpm.spec +5 -3
  59. data/ext/{sparsehash-1.8.1/google-sparsehash.sln → sparsehash-2.0.2/sparsehash.sln} +0 -0
  60. data/ext/sparsehash-2.0.2/src/config.h +132 -0
  61. data/ext/{sparsehash-1.8.1 → sparsehash-2.0.2}/src/config.h.in +0 -3
  62. data/ext/{sparsehash-1.8.1 → sparsehash-2.0.2}/src/config.h.include +0 -1
  63. data/ext/sparsehash-2.0.2/src/google/dense_hash_map +34 -0
  64. data/ext/sparsehash-2.0.2/src/google/dense_hash_set +34 -0
  65. data/ext/sparsehash-2.0.2/src/google/sparse_hash_map +34 -0
  66. data/ext/sparsehash-2.0.2/src/google/sparse_hash_set +34 -0
  67. data/ext/sparsehash-2.0.2/src/google/sparsehash/densehashtable.h +34 -0
  68. data/ext/sparsehash-2.0.2/src/google/sparsehash/hashtable-common.h +34 -0
  69. data/ext/sparsehash-2.0.2/src/google/sparsehash/libc_allocator_with_realloc.h +34 -0
  70. data/ext/sparsehash-2.0.2/src/google/sparsehash/sparsehashtable.h +34 -0
  71. data/ext/sparsehash-2.0.2/src/google/sparsetable +34 -0
  72. data/ext/sparsehash-2.0.2/src/google/template_util.h +34 -0
  73. data/ext/sparsehash-2.0.2/src/google/type_traits.h +34 -0
  74. data/ext/{sparsehash-1.8.1 → sparsehash-2.0.2}/src/hash_test_interface.h +64 -37
  75. data/ext/{sparsehash-1.8.1 → sparsehash-2.0.2}/src/hashtable_test.cc +415 -141
  76. data/ext/{sparsehash-1.8.1 → sparsehash-2.0.2}/src/libc_allocator_with_realloc_test.cc +16 -23
  77. data/ext/sparsehash-2.0.2/src/simple_compat_test.cc +106 -0
  78. data/ext/{sparsehash-1.8.1 → sparsehash-2.0.2}/src/simple_test.cc +8 -5
  79. data/ext/{sparsehash-1.8.1/src/google → sparsehash-2.0.2/src/sparsehash}/dense_hash_map +80 -37
  80. data/ext/{sparsehash-1.8.1/src/google → sparsehash-2.0.2/src/sparsehash}/dense_hash_set +64 -34
  81. data/ext/{sparsehash-1.8.1/src/google/sparsehash → sparsehash-2.0.2/src/sparsehash/internal}/densehashtable.h +247 -173
  82. data/ext/sparsehash-2.0.2/src/sparsehash/internal/hashtable-common.h +381 -0
  83. data/ext/{sparsehash-1.8.1/src/google/sparsehash → sparsehash-2.0.2/src/sparsehash/internal}/libc_allocator_with_realloc.h +5 -7
  84. data/ext/{sparsehash-1.8.1/src/google/sparsehash → sparsehash-2.0.2/src/sparsehash/internal}/sparsehashtable.h +154 -93
  85. data/ext/{sparsehash-1.8.1/src/google → sparsehash-2.0.2/src/sparsehash}/sparse_hash_map +96 -36
  86. data/ext/{sparsehash-1.8.1/src/google → sparsehash-2.0.2/src/sparsehash}/sparse_hash_set +85 -32
  87. data/ext/{sparsehash-1.8.1/src/google → sparsehash-2.0.2/src/sparsehash}/sparsetable +520 -258
  88. data/ext/sparsehash-2.0.2/src/sparsehash/template_util.h +134 -0
  89. data/ext/{sparsehash-1.8.1/src/google → sparsehash-2.0.2/src/sparsehash}/type_traits.h +153 -35
  90. data/ext/{sparsehash-1.8.1 → sparsehash-2.0.2}/src/sparsetable_unittest.cc +108 -22
  91. data/ext/sparsehash-2.0.2/src/stamp-h1 +1 -0
  92. data/ext/sparsehash-2.0.2/src/template_util_unittest.cc +134 -0
  93. data/ext/{sparsehash-1.8.1 → sparsehash-2.0.2}/src/testutil.h +16 -1
  94. data/ext/{sparsehash-1.8.1 → sparsehash-2.0.2}/src/time_hash_map.cc +259 -94
  95. data/ext/sparsehash-2.0.2/src/type_traits_unittest.cc +636 -0
  96. data/ext/{sparsehash-1.8.1 → sparsehash-2.0.2}/src/windows/config.h +4 -4
  97. data/ext/sparsehash-2.0.2/src/windows/google/sparsehash/sparseconfig.h +49 -0
  98. data/ext/{sparsehash-1.8.1 → sparsehash-2.0.2}/src/windows/port.cc +1 -0
  99. data/ext/{sparsehash-1.8.1 → sparsehash-2.0.2}/src/windows/port.h +4 -13
  100. data/ext/sparsehash-2.0.2/src/windows/sparsehash/internal/sparseconfig.h +49 -0
  101. data/ext/{sparsehash-1.8.1 → sparsehash-2.0.2}/vsprojects/hashtable_test/hashtable_test.vcproj +11 -11
  102. data/ext/sparsehash-2.0.2/vsprojects/libc_allocator_with_realloc_test/libc_allocator_with_realloc_test.vcproj +161 -0
  103. data/ext/{sparsehash-1.8.1 → sparsehash-2.0.2}/vsprojects/simple_test/simple_test.vcproj +10 -10
  104. data/ext/{sparsehash-1.8.1 → sparsehash-2.0.2}/vsprojects/sparsetable_unittest/sparsetable_unittest.vcproj +4 -4
  105. data/ext/{sparsehash-1.8.1 → sparsehash-2.0.2}/vsprojects/time_hash_map/time_hash_map.vcproj +10 -10
  106. data/ext/{sparsehash-1.8.1 → sparsehash-2.0.2}/vsprojects/type_traits_unittest/type_traits_unittest.vcproj +3 -3
  107. data/ext/spec.bat +0 -0
  108. data/ext/template/google_hash.cpp.erb +6 -5
  109. metadata +106 -86
  110. data/ext/sparsehash-1.8.1/AUTHORS +0 -2
  111. data/ext/sparsehash-1.8.1/INSTALL +0 -236
  112. data/ext/sparsehash-1.8.1/NEWS +0 -71
  113. data/ext/sparsehash-1.8.1/compile +0 -99
  114. data/ext/sparsehash-1.8.1/install-sh +0 -323
  115. data/ext/sparsehash-1.8.1/m4/stl_namespace.m4 +0 -25
  116. data/ext/sparsehash-1.8.1/mkinstalldirs +0 -158
  117. data/ext/sparsehash-1.8.1/packages/deb/sparsehash.dirs +0 -2
  118. data/ext/sparsehash-1.8.1/packages/deb/sparsehash.install +0 -2
  119. data/ext/sparsehash-1.8.1/src/google/sparsehash/hashtable-common.h +0 -178
  120. data/ext/sparsehash-1.8.1/src/type_traits_unittest.cc +0 -502
  121. data/ext/sparsehash-1.8.1/src/windows/google/sparsehash/sparseconfig.h +0 -32
@@ -1,71 +0,0 @@
1
- === 29 July 2010 ===
2
-
3
- I've just released sparsehash 1.8. This includes improved support for
4
- `Allocator`, including supporting the allocator constructor arg and
5
- `get_allocator()` access method.
6
-
7
- To work around a bug in gcc 4.0.x, I've renamed the static variables
8
- `HT_OCCUPANCY_FLT` and `HT_SHRINK_FLT` to `HT_OCCUPANCY_PCT` and
9
- `HT_SHRINK_PCT`, and changed their type from float to int. This
10
- should not be a user-visible change, since these variables are only
11
- used in the internal hashtable classes (sparsehash clients should use
12
- `max_load_factor()` and `min_load_factor()` instead of modifying these
13
- static variables), but if you do access these constants, you will need
14
- to change your code.
15
-
16
- Internally, the biggest change is a revamp of the test suite. It now
17
- has more complete coverage, and a more capable timing tester. There
18
- are other, more minor changes as well. A full list of changes is
19
- described in the
20
- [http://google-sparsehash.googlecode.com/svn/tags/sparsehash-1.8/ChangeLog
21
- ChangeLog].
22
-
23
- === 31 March 2010 ===
24
-
25
- I've just released sparsehash 1.7. The major news here is the
26
- addition of `Allocator` support. Previously, these hashtable classes
27
- would just ignore the `Allocator` template parameter. They now
28
- respect it, and even inherit `size_type`, `pointer`, etc. from the
29
- allocator class. By default, they use a special allocator we provide
30
- that uses libc `malloc` and `free` to allocate. The hash classes
31
- notice when this special allocator is being used, and use `realloc`
32
- when it can. This means that the default allocator is significantly
33
- faster than custom allocators are likely to be (since realloc-like
34
- functionality is not supported by STL allocators).
35
-
36
- There are a few more minor changes as well. A full list of changes is
37
- described in the
38
- [http://google-sparsehash.googlecode.com/svn/tags/sparsehash-1.7/ChangeLog
39
- ChangeLog].
40
-
41
- === 11 January 2010 ===
42
-
43
- I've just released sparsehash 1.6. The API has widened a bit with the
44
- addition of `deleted_key()` and `empty_key()`, which let you query
45
- what values these keys have. A few rather obscure bugs have been
46
- fixed (such as an error when copying one hashtable into another when
47
- the empty_keys differ). A full list of changes is described in the
48
- [http://google-sparsehash.googlecode.com/svn/tags/sparsehash-1.6/ChangeLog
49
- ChangeLog].
50
-
51
- === 9 May 2009 ===
52
-
53
- I've just released sparsehash 1.5.1. Hot on the heels of sparsehash
54
- 1.5, this release fixes a longstanding bug in the sparsehash code,
55
- where `equal_range` would always return an empty range. It now works
56
- as documented. All sparsehash users are encouraged to upgrade.
57
-
58
- === 7 May 2009 ===
59
-
60
- I've just released sparsehash 1.5. This release introduces tr1
61
- compatibility: I've added `rehash`, `begin(i)`, and other methods that
62
- are expected to be part of the `unordered_map` API once `tr1` in
63
- introduced. This allows `sparse_hash_map`, `dense_hash_map`,
64
- `sparse_hash_set`, and `dense_hash_set` to be (almost) drop-in
65
- replacements for `unordered_map` and `unordered_set`.
66
-
67
- There is no need to upgrade unless you need this functionality, or
68
- need one of the other, more minor, changes described in the
69
- [http://google-sparsehash.googlecode.com/svn/tags/sparsehash-1.5/ChangeLog
70
- ChangeLog].
71
-
@@ -1,99 +0,0 @@
1
- #! /bin/sh
2
-
3
- # Wrapper for compilers which do not understand `-c -o'.
4
-
5
- # Copyright 1999, 2000 Free Software Foundation, Inc.
6
- # Written by Tom Tromey <tromey@cygnus.com>.
7
- #
8
- # This program is free software; you can redistribute it and/or modify
9
- # it under the terms of the GNU General Public License as published by
10
- # the Free Software Foundation; either version 2, or (at your option)
11
- # any later version.
12
- #
13
- # This program is distributed in the hope that it will be useful,
14
- # but WITHOUT ANY WARRANTY; without even the implied warranty of
15
- # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
16
- # GNU General Public License for more details.
17
- #
18
- # You should have received a copy of the GNU General Public License
19
- # along with this program; if not, write to the Free Software
20
- # Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
21
-
22
- # As a special exception to the GNU General Public License, if you
23
- # distribute this file as part of a program that contains a
24
- # configuration script generated by Autoconf, you may include it under
25
- # the same distribution terms that you use for the rest of that program.
26
-
27
- # Usage:
28
- # compile PROGRAM [ARGS]...
29
- # `-o FOO.o' is removed from the args passed to the actual compile.
30
-
31
- prog=$1
32
- shift
33
-
34
- ofile=
35
- cfile=
36
- args=
37
- while test $# -gt 0; do
38
- case "$1" in
39
- -o)
40
- # configure might choose to run compile as `compile cc -o foo foo.c'.
41
- # So we do something ugly here.
42
- ofile=$2
43
- shift
44
- case "$ofile" in
45
- *.o | *.obj)
46
- ;;
47
- *)
48
- args="$args -o $ofile"
49
- ofile=
50
- ;;
51
- esac
52
- ;;
53
- *.c)
54
- cfile=$1
55
- args="$args $1"
56
- ;;
57
- *)
58
- args="$args $1"
59
- ;;
60
- esac
61
- shift
62
- done
63
-
64
- if test -z "$ofile" || test -z "$cfile"; then
65
- # If no `-o' option was seen then we might have been invoked from a
66
- # pattern rule where we don't need one. That is ok -- this is a
67
- # normal compilation that the losing compiler can handle. If no
68
- # `.c' file was seen then we are probably linking. That is also
69
- # ok.
70
- exec "$prog" $args
71
- fi
72
-
73
- # Name of file we expect compiler to create.
74
- cofile=`echo $cfile | sed -e 's|^.*/||' -e 's/\.c$/.o/'`
75
-
76
- # Create the lock directory.
77
- # Note: use `[/.-]' here to ensure that we don't use the same name
78
- # that we are using for the .o file. Also, base the name on the expected
79
- # object file name, since that is what matters with a parallel build.
80
- lockdir=`echo $cofile | sed -e 's|[/.-]|_|g'`.d
81
- while true; do
82
- if mkdir $lockdir > /dev/null 2>&1; then
83
- break
84
- fi
85
- sleep 1
86
- done
87
- # FIXME: race condition here if user kills between mkdir and trap.
88
- trap "rmdir $lockdir; exit 1" 1 2 15
89
-
90
- # Run the compile.
91
- "$prog" $args
92
- status=$?
93
-
94
- if test -f "$cofile"; then
95
- mv "$cofile" "$ofile"
96
- fi
97
-
98
- rmdir $lockdir
99
- exit $status
@@ -1,323 +0,0 @@
1
- #!/bin/sh
2
- # install - install a program, script, or datafile
3
-
4
- scriptversion=2005-05-14.22
5
-
6
- # This originates from X11R5 (mit/util/scripts/install.sh), which was
7
- # later released in X11R6 (xc/config/util/install.sh) with the
8
- # following copyright and license.
9
- #
10
- # Copyright (C) 1994 X Consortium
11
- #
12
- # Permission is hereby granted, free of charge, to any person obtaining a copy
13
- # of this software and associated documentation files (the "Software"), to
14
- # deal in the Software without restriction, including without limitation the
15
- # rights to use, copy, modify, merge, publish, distribute, sublicense, and/or
16
- # sell copies of the Software, and to permit persons to whom the Software is
17
- # furnished to do so, subject to the following conditions:
18
- #
19
- # The above copyright notice and this permission notice shall be included in
20
- # all copies or substantial portions of the Software.
21
- #
22
- # THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
23
- # IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
24
- # FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
25
- # X CONSORTIUM BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN
26
- # AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNEC-
27
- # TION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
28
- #
29
- # Except as contained in this notice, the name of the X Consortium shall not
30
- # be used in advertising or otherwise to promote the sale, use or other deal-
31
- # ings in this Software without prior written authorization from the X Consor-
32
- # tium.
33
- #
34
- #
35
- # FSF changes to this file are in the public domain.
36
- #
37
- # Calling this script install-sh is preferred over install.sh, to prevent
38
- # `make' implicit rules from creating a file called install from it
39
- # when there is no Makefile.
40
- #
41
- # This script is compatible with the BSD install script, but was written
42
- # from scratch. It can only install one file at a time, a restriction
43
- # shared with many OS's install programs.
44
-
45
- # set DOITPROG to echo to test this script
46
-
47
- # Don't use :- since 4.3BSD and earlier shells don't like it.
48
- doit="${DOITPROG-}"
49
-
50
- # put in absolute paths if you don't have them in your path; or use env. vars.
51
-
52
- mvprog="${MVPROG-mv}"
53
- cpprog="${CPPROG-cp}"
54
- chmodprog="${CHMODPROG-chmod}"
55
- chownprog="${CHOWNPROG-chown}"
56
- chgrpprog="${CHGRPPROG-chgrp}"
57
- stripprog="${STRIPPROG-strip}"
58
- rmprog="${RMPROG-rm}"
59
- mkdirprog="${MKDIRPROG-mkdir}"
60
-
61
- chmodcmd="$chmodprog 0755"
62
- chowncmd=
63
- chgrpcmd=
64
- stripcmd=
65
- rmcmd="$rmprog -f"
66
- mvcmd="$mvprog"
67
- src=
68
- dst=
69
- dir_arg=
70
- dstarg=
71
- no_target_directory=
72
-
73
- usage="Usage: $0 [OPTION]... [-T] SRCFILE DSTFILE
74
- or: $0 [OPTION]... SRCFILES... DIRECTORY
75
- or: $0 [OPTION]... -t DIRECTORY SRCFILES...
76
- or: $0 [OPTION]... -d DIRECTORIES...
77
-
78
- In the 1st form, copy SRCFILE to DSTFILE.
79
- In the 2nd and 3rd, copy all SRCFILES to DIRECTORY.
80
- In the 4th, create DIRECTORIES.
81
-
82
- Options:
83
- -c (ignored)
84
- -d create directories instead of installing files.
85
- -g GROUP $chgrpprog installed files to GROUP.
86
- -m MODE $chmodprog installed files to MODE.
87
- -o USER $chownprog installed files to USER.
88
- -s $stripprog installed files.
89
- -t DIRECTORY install into DIRECTORY.
90
- -T report an error if DSTFILE is a directory.
91
- --help display this help and exit.
92
- --version display version info and exit.
93
-
94
- Environment variables override the default commands:
95
- CHGRPPROG CHMODPROG CHOWNPROG CPPROG MKDIRPROG MVPROG RMPROG STRIPPROG
96
- "
97
-
98
- while test -n "$1"; do
99
- case $1 in
100
- -c) shift
101
- continue;;
102
-
103
- -d) dir_arg=true
104
- shift
105
- continue;;
106
-
107
- -g) chgrpcmd="$chgrpprog $2"
108
- shift
109
- shift
110
- continue;;
111
-
112
- --help) echo "$usage"; exit $?;;
113
-
114
- -m) chmodcmd="$chmodprog $2"
115
- shift
116
- shift
117
- continue;;
118
-
119
- -o) chowncmd="$chownprog $2"
120
- shift
121
- shift
122
- continue;;
123
-
124
- -s) stripcmd=$stripprog
125
- shift
126
- continue;;
127
-
128
- -t) dstarg=$2
129
- shift
130
- shift
131
- continue;;
132
-
133
- -T) no_target_directory=true
134
- shift
135
- continue;;
136
-
137
- --version) echo "$0 $scriptversion"; exit $?;;
138
-
139
- *) # When -d is used, all remaining arguments are directories to create.
140
- # When -t is used, the destination is already specified.
141
- test -n "$dir_arg$dstarg" && break
142
- # Otherwise, the last argument is the destination. Remove it from $@.
143
- for arg
144
- do
145
- if test -n "$dstarg"; then
146
- # $@ is not empty: it contains at least $arg.
147
- set fnord "$@" "$dstarg"
148
- shift # fnord
149
- fi
150
- shift # arg
151
- dstarg=$arg
152
- done
153
- break;;
154
- esac
155
- done
156
-
157
- if test -z "$1"; then
158
- if test -z "$dir_arg"; then
159
- echo "$0: no input file specified." >&2
160
- exit 1
161
- fi
162
- # It's OK to call `install-sh -d' without argument.
163
- # This can happen when creating conditional directories.
164
- exit 0
165
- fi
166
-
167
- for src
168
- do
169
- # Protect names starting with `-'.
170
- case $src in
171
- -*) src=./$src ;;
172
- esac
173
-
174
- if test -n "$dir_arg"; then
175
- dst=$src
176
- src=
177
-
178
- if test -d "$dst"; then
179
- mkdircmd=:
180
- chmodcmd=
181
- else
182
- mkdircmd=$mkdirprog
183
- fi
184
- else
185
- # Waiting for this to be detected by the "$cpprog $src $dsttmp" command
186
- # might cause directories to be created, which would be especially bad
187
- # if $src (and thus $dsttmp) contains '*'.
188
- if test ! -f "$src" && test ! -d "$src"; then
189
- echo "$0: $src does not exist." >&2
190
- exit 1
191
- fi
192
-
193
- if test -z "$dstarg"; then
194
- echo "$0: no destination specified." >&2
195
- exit 1
196
- fi
197
-
198
- dst=$dstarg
199
- # Protect names starting with `-'.
200
- case $dst in
201
- -*) dst=./$dst ;;
202
- esac
203
-
204
- # If destination is a directory, append the input filename; won't work
205
- # if double slashes aren't ignored.
206
- if test -d "$dst"; then
207
- if test -n "$no_target_directory"; then
208
- echo "$0: $dstarg: Is a directory" >&2
209
- exit 1
210
- fi
211
- dst=$dst/`basename "$src"`
212
- fi
213
- fi
214
-
215
- # This sed command emulates the dirname command.
216
- dstdir=`echo "$dst" | sed -e 's,/*$,,;s,[^/]*$,,;s,/*$,,;s,^$,.,'`
217
-
218
- # Make sure that the destination directory exists.
219
-
220
- # Skip lots of stat calls in the usual case.
221
- if test ! -d "$dstdir"; then
222
- defaultIFS='
223
- '
224
- IFS="${IFS-$defaultIFS}"
225
-
226
- oIFS=$IFS
227
- # Some sh's can't handle IFS=/ for some reason.
228
- IFS='%'
229
- set x `echo "$dstdir" | sed -e 's@/@%@g' -e 's@^%@/@'`
230
- shift
231
- IFS=$oIFS
232
-
233
- pathcomp=
234
-
235
- while test $# -ne 0 ; do
236
- pathcomp=$pathcomp$1
237
- shift
238
- if test ! -d "$pathcomp"; then
239
- $mkdirprog "$pathcomp"
240
- # mkdir can fail with a `File exist' error in case several
241
- # install-sh are creating the directory concurrently. This
242
- # is OK.
243
- test -d "$pathcomp" || exit
244
- fi
245
- pathcomp=$pathcomp/
246
- done
247
- fi
248
-
249
- if test -n "$dir_arg"; then
250
- $doit $mkdircmd "$dst" \
251
- && { test -z "$chowncmd" || $doit $chowncmd "$dst"; } \
252
- && { test -z "$chgrpcmd" || $doit $chgrpcmd "$dst"; } \
253
- && { test -z "$stripcmd" || $doit $stripcmd "$dst"; } \
254
- && { test -z "$chmodcmd" || $doit $chmodcmd "$dst"; }
255
-
256
- else
257
- dstfile=`basename "$dst"`
258
-
259
- # Make a couple of temp file names in the proper directory.
260
- dsttmp=$dstdir/_inst.$$_
261
- rmtmp=$dstdir/_rm.$$_
262
-
263
- # Trap to clean up those temp files at exit.
264
- trap 'ret=$?; rm -f "$dsttmp" "$rmtmp" && exit $ret' 0
265
- trap '(exit $?); exit' 1 2 13 15
266
-
267
- # Copy the file name to the temp name.
268
- $doit $cpprog "$src" "$dsttmp" &&
269
-
270
- # and set any options; do chmod last to preserve setuid bits.
271
- #
272
- # If any of these fail, we abort the whole thing. If we want to
273
- # ignore errors from any of these, just make sure not to ignore
274
- # errors from the above "$doit $cpprog $src $dsttmp" command.
275
- #
276
- { test -z "$chowncmd" || $doit $chowncmd "$dsttmp"; } \
277
- && { test -z "$chgrpcmd" || $doit $chgrpcmd "$dsttmp"; } \
278
- && { test -z "$stripcmd" || $doit $stripcmd "$dsttmp"; } \
279
- && { test -z "$chmodcmd" || $doit $chmodcmd "$dsttmp"; } &&
280
-
281
- # Now rename the file to the real destination.
282
- { $doit $mvcmd -f "$dsttmp" "$dstdir/$dstfile" 2>/dev/null \
283
- || {
284
- # The rename failed, perhaps because mv can't rename something else
285
- # to itself, or perhaps because mv is so ancient that it does not
286
- # support -f.
287
-
288
- # Now remove or move aside any old file at destination location.
289
- # We try this two ways since rm can't unlink itself on some
290
- # systems and the destination file might be busy for other
291
- # reasons. In this case, the final cleanup might fail but the new
292
- # file should still install successfully.
293
- {
294
- if test -f "$dstdir/$dstfile"; then
295
- $doit $rmcmd -f "$dstdir/$dstfile" 2>/dev/null \
296
- || $doit $mvcmd -f "$dstdir/$dstfile" "$rmtmp" 2>/dev/null \
297
- || {
298
- echo "$0: cannot unlink or rename $dstdir/$dstfile" >&2
299
- (exit 1); exit 1
300
- }
301
- else
302
- :
303
- fi
304
- } &&
305
-
306
- # Now rename the file to the real destination.
307
- $doit $mvcmd "$dsttmp" "$dstdir/$dstfile"
308
- }
309
- }
310
- fi || { (exit 1); exit 1; }
311
- done
312
-
313
- # The final little trick to "correctly" pass the exit status to the exit trap.
314
- {
315
- (exit 0); exit 0
316
- }
317
-
318
- # Local variables:
319
- # eval: (add-hook 'write-file-hooks 'time-stamp)
320
- # time-stamp-start: "scriptversion="
321
- # time-stamp-format: "%:y-%02m-%02d.%02H"
322
- # time-stamp-end: "$"
323
- # End: