tarruby 0.1.2 → 0.1.3
Sign up to get free protection for your applications and to get access to all the features.
- data/ext/libtar/Copyright.txt +50 -0
- data/ext/libtar/compat/basename.c +3 -3
- data/ext/libtar/compat/dirname.c +4 -4
- data/ext/libtar/compat/glob.c +2 -4
- data/ext/libtar/compat/strmode.c +12 -13
- data/ext/libtar/lib/append.c +2 -5
- data/ext/libtar/lib/decode.c +5 -5
- data/ext/libtar/lib/encode.c +6 -13
- data/ext/libtar/lib/extract.c +6 -7
- data/ext/libtar/lib/handle.c +1 -1
- data/ext/libtar/lib/internal.h +0 -3
- data/ext/libtar/lib/libtar.h +0 -5
- data/ext/libtar/lib/output.c +3 -3
- data/ext/libtar/lib/util.c +0 -3
- data/ext/libtar/lib/wrapper.c +4 -7
- data/ext/tarruby.c +20 -4
- metadata +3 -2
@@ -0,0 +1,50 @@
|
|
1
|
+
CMake was initially developed by Kitware with the following sponsorship:
|
2
|
+
|
3
|
+
* National Library of Medicine at the National Institutes of Health
|
4
|
+
as part of the Insight Segmentation and Registration Toolkit (ITK).
|
5
|
+
|
6
|
+
* US National Labs (Los Alamos, Livermore, Sandia) ASC Parallel
|
7
|
+
Visualization Initiative.
|
8
|
+
|
9
|
+
* National Alliance for Medical Image Computing (NAMIC) is funded by the
|
10
|
+
National Institutes of Health through the NIH Roadmap for Medical Research,
|
11
|
+
Grant U54 EB005149.
|
12
|
+
|
13
|
+
* Kitware, Inc.
|
14
|
+
|
15
|
+
The CMake copyright is as follows:
|
16
|
+
|
17
|
+
Copyright (c) 2002 Kitware, Inc., Insight Consortium
|
18
|
+
All rights reserved.
|
19
|
+
|
20
|
+
Redistribution and use in source and binary forms, with or without
|
21
|
+
modification, are permitted provided that the following conditions are
|
22
|
+
met:
|
23
|
+
|
24
|
+
* Redistributions of source code must retain the above copyright notice,
|
25
|
+
this list of conditions and the following disclaimer.
|
26
|
+
|
27
|
+
* Redistributions in binary form must reproduce the above copyright notice,
|
28
|
+
this list of conditions and the following disclaimer in the documentation
|
29
|
+
and/or other materials provided with the distribution.
|
30
|
+
|
31
|
+
* The names of Kitware, Inc., the Insight Consortium, or the names of
|
32
|
+
any consortium members, or of any contributors, may not be used to
|
33
|
+
endorse or promote products derived from this software without
|
34
|
+
specific prior written permission.
|
35
|
+
|
36
|
+
* Modified source versions must be plainly marked as such, and must
|
37
|
+
not be misrepresented as being the original software.
|
38
|
+
|
39
|
+
THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDER AND CONTRIBUTORS ``AS IS''
|
40
|
+
AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
|
41
|
+
IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
|
42
|
+
ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHORS OR CONTRIBUTORS BE LIABLE FOR
|
43
|
+
ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
|
44
|
+
DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR
|
45
|
+
SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER
|
46
|
+
CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
|
47
|
+
OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
|
48
|
+
OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
|
49
|
+
|
50
|
+
See also the CMake web site: http://www.cmake.org for more information.
|
@@ -50,7 +50,7 @@ openbsd_basename(path)
|
|
50
50
|
|
51
51
|
/* Strip trailing slashes */
|
52
52
|
endp = path + strlen(path) - 1;
|
53
|
-
#ifndef _WIN32
|
53
|
+
#ifndef _WIN32
|
54
54
|
while (endp > path && *endp == '/')
|
55
55
|
endp--;
|
56
56
|
#else
|
@@ -60,7 +60,7 @@ openbsd_basename(path)
|
|
60
60
|
#endif
|
61
61
|
|
62
62
|
/* All slashes becomes "/" */
|
63
|
-
#ifndef _WIN32
|
63
|
+
#ifndef _WIN32
|
64
64
|
if (endp == path && *endp == '/') {
|
65
65
|
(void)strcpy(bname, "/");
|
66
66
|
return(bname);
|
@@ -73,7 +73,7 @@ openbsd_basename(path)
|
|
73
73
|
#endif
|
74
74
|
/* Find the start of the base */
|
75
75
|
startp = endp;
|
76
|
-
#ifndef _WIN32
|
76
|
+
#ifndef _WIN32
|
77
77
|
while (startp > path && *(startp - 1) != '/')
|
78
78
|
startp--;
|
79
79
|
#else
|
data/ext/libtar/compat/dirname.c
CHANGED
@@ -50,7 +50,7 @@ openbsd_dirname(path)
|
|
50
50
|
|
51
51
|
/* Strip trailing slashes */
|
52
52
|
endp = path + strlen(path) - 1;
|
53
|
-
#ifndef _WIN32
|
53
|
+
#ifndef _WIN32
|
54
54
|
while (endp > path && *endp == '/')
|
55
55
|
endp--;
|
56
56
|
#else
|
@@ -60,7 +60,7 @@ openbsd_dirname(path)
|
|
60
60
|
#endif
|
61
61
|
|
62
62
|
/* Find the start of the dir */
|
63
|
-
#ifndef _WIN32
|
63
|
+
#ifndef _WIN32
|
64
64
|
while (endp > path && *endp != '/')
|
65
65
|
endp--;
|
66
66
|
#else
|
@@ -71,14 +71,14 @@ openbsd_dirname(path)
|
|
71
71
|
|
72
72
|
/* Either the dir is "/" or there are no slashes */
|
73
73
|
if (endp == path) {
|
74
|
-
#ifndef _WIN32
|
74
|
+
#ifndef _WIN32
|
75
75
|
(void)strcpy(bname, *endp == '/' ? "/" : ".");
|
76
76
|
#else
|
77
77
|
(void)strcpy(bname, (*endp == '/' || *endp == '\\') ? "/" : ".");
|
78
78
|
#endif
|
79
79
|
return(bname);
|
80
80
|
} else {
|
81
|
-
#ifndef _WIN32
|
81
|
+
#ifndef _WIN32
|
82
82
|
do {
|
83
83
|
endp--;
|
84
84
|
} while (endp > path && *endp == '/');
|
data/ext/libtar/compat/glob.c
CHANGED
@@ -34,7 +34,6 @@
|
|
34
34
|
* SUCH DAMAGE.
|
35
35
|
*/
|
36
36
|
|
37
|
-
// modified by SUGAWARA Genki <sgwr_dts@yahoo.co.jp>
|
38
37
|
#ifdef _WIN32
|
39
38
|
#pragma warning(disable:4101)
|
40
39
|
#pragma warning(disable:4244)
|
@@ -144,7 +143,6 @@ typedef char Char;
|
|
144
143
|
#define M_SET META('[')
|
145
144
|
#define ismeta(c) (((c)&M_QUOTE) != 0)
|
146
145
|
|
147
|
-
// modified by SUGAWARA Genki <sgwr_dts@yahoo.co.jp>
|
148
146
|
#ifdef _WIN32
|
149
147
|
#define __P(protos) protos
|
150
148
|
#define S_ISDIR(m) (((m) & (_S_IFMT)) == (_S_IFDIR))
|
@@ -386,7 +384,7 @@ globtilde(pattern, patbuf, patbuf_len, pglob)
|
|
386
384
|
#ifdef HAVE_ISSETUGID
|
387
385
|
if (issetugid() != 0 || (h = getenv("HOME")) == NULL) {
|
388
386
|
#endif
|
389
|
-
#ifndef _WIN32
|
387
|
+
#ifndef _WIN32
|
390
388
|
if ((pwd = getpwuid(getuid())) == NULL)
|
391
389
|
return pattern;
|
392
390
|
else
|
@@ -404,7 +402,7 @@ globtilde(pattern, patbuf, patbuf_len, pglob)
|
|
404
402
|
/*
|
405
403
|
* Expand a ~user
|
406
404
|
*/
|
407
|
-
#ifndef _WIN32
|
405
|
+
#ifndef _WIN32
|
408
406
|
if ((pwd = getpwnam((char*) patbuf)) == NULL)
|
409
407
|
return pattern;
|
410
408
|
else
|
data/ext/libtar/compat/strmode.c
CHANGED
@@ -39,7 +39,6 @@ static char *rcsid = "$OpenBSD: strmode.c,v 1.3 1997/06/13 13:57:20 deraadt Exp
|
|
39
39
|
#include <sys/stat.h>
|
40
40
|
#include <string.h>
|
41
41
|
|
42
|
-
// modified by SUGAWARA Genki <sgwr_dts@yahoo.co.jp>
|
43
42
|
#ifdef _WIN32
|
44
43
|
#include "win32/types.h"
|
45
44
|
#endif
|
@@ -57,7 +56,7 @@ strmode(mode, p)
|
|
57
56
|
case S_IFCHR: /* character special */
|
58
57
|
*p++ = 'c';
|
59
58
|
break;
|
60
|
-
#ifndef _WIN32
|
59
|
+
#ifndef _WIN32
|
61
60
|
case S_IFBLK: /* block special */
|
62
61
|
*p++ = 'b';
|
63
62
|
break;
|
@@ -65,12 +64,12 @@ strmode(mode, p)
|
|
65
64
|
case S_IFREG: /* regular */
|
66
65
|
*p++ = '-';
|
67
66
|
break;
|
68
|
-
#ifndef _WIN32
|
67
|
+
#ifndef _WIN32
|
69
68
|
case S_IFLNK: /* symbolic link */
|
70
69
|
*p++ = 'l';
|
71
70
|
break;
|
72
71
|
#endif
|
73
|
-
#ifndef _WIN32
|
72
|
+
#ifndef _WIN32
|
74
73
|
case S_IFSOCK: /* socket */
|
75
74
|
*p++ = 's';
|
76
75
|
break;
|
@@ -90,7 +89,7 @@ strmode(mode, p)
|
|
90
89
|
break;
|
91
90
|
}
|
92
91
|
/* usr */
|
93
|
-
#ifndef _WIN32
|
92
|
+
#ifndef _WIN32
|
94
93
|
if (mode & S_IRUSR)
|
95
94
|
*p++ = 'r';
|
96
95
|
else
|
@@ -98,7 +97,7 @@ strmode(mode, p)
|
|
98
97
|
#else
|
99
98
|
*p++ = '-';
|
100
99
|
#endif
|
101
|
-
#ifndef _WIN32
|
100
|
+
#ifndef _WIN32
|
102
101
|
if (mode & S_IWUSR)
|
103
102
|
*p++ = 'w';
|
104
103
|
else
|
@@ -106,7 +105,7 @@ strmode(mode, p)
|
|
106
105
|
#else
|
107
106
|
*p++ = '-';
|
108
107
|
#endif
|
109
|
-
#ifndef _WIN32
|
108
|
+
#ifndef _WIN32
|
110
109
|
switch (mode & (S_IXUSR | S_ISUID)) {
|
111
110
|
case 0:
|
112
111
|
*p++ = '-';
|
@@ -125,7 +124,7 @@ strmode(mode, p)
|
|
125
124
|
*p++ = '-';
|
126
125
|
#endif
|
127
126
|
/* group */
|
128
|
-
#ifndef _WIN32
|
127
|
+
#ifndef _WIN32
|
129
128
|
if (mode & S_IRGRP)
|
130
129
|
*p++ = 'r';
|
131
130
|
else
|
@@ -133,7 +132,7 @@ strmode(mode, p)
|
|
133
132
|
#else
|
134
133
|
*p++ = '-';
|
135
134
|
#endif
|
136
|
-
#ifndef _WIN32
|
135
|
+
#ifndef _WIN32
|
137
136
|
if (mode & S_IWGRP)
|
138
137
|
*p++ = 'w';
|
139
138
|
else
|
@@ -141,7 +140,7 @@ strmode(mode, p)
|
|
141
140
|
#else
|
142
141
|
*p++ = '-';
|
143
142
|
#endif
|
144
|
-
#ifndef _WIN32
|
143
|
+
#ifndef _WIN32
|
145
144
|
switch (mode & (S_IXGRP | S_ISGID)) {
|
146
145
|
case 0:
|
147
146
|
*p++ = '-';
|
@@ -160,7 +159,7 @@ strmode(mode, p)
|
|
160
159
|
*p++ = '-';
|
161
160
|
#endif
|
162
161
|
/* other */
|
163
|
-
#ifndef _WIN32
|
162
|
+
#ifndef _WIN32
|
164
163
|
if (mode & S_IROTH)
|
165
164
|
*p++ = 'r';
|
166
165
|
else
|
@@ -168,7 +167,7 @@ strmode(mode, p)
|
|
168
167
|
#else
|
169
168
|
*p++ = '-';
|
170
169
|
#endif
|
171
|
-
#ifndef _WIN32
|
170
|
+
#ifndef _WIN32
|
172
171
|
if (mode & S_IWOTH)
|
173
172
|
*p++ = 'w';
|
174
173
|
else
|
@@ -176,7 +175,7 @@ strmode(mode, p)
|
|
176
175
|
#else
|
177
176
|
*p++ = '-';
|
178
177
|
#endif
|
179
|
-
#ifndef _WIN32
|
178
|
+
#ifndef _WIN32
|
180
179
|
switch (mode & (S_IXOTH | S_ISVTX)) {
|
181
180
|
case 0:
|
182
181
|
*p++ = '-';
|
data/ext/libtar/lib/append.c
CHANGED
@@ -10,7 +10,6 @@
|
|
10
10
|
** University of Illinois at Urbana-Champaign
|
11
11
|
*/
|
12
12
|
|
13
|
-
// modified by SUGAWARA Genki <sgwr_dts@yahoo.co.jp>
|
14
13
|
#ifdef _WIN32
|
15
14
|
#pragma warning(disable:4101)
|
16
15
|
#endif
|
@@ -117,7 +116,7 @@ tar_append_file(TAR *t, char *realname, char *savename)
|
|
117
116
|
if (libtar_hash_add(t->h, td) == -1)
|
118
117
|
return -1;
|
119
118
|
}
|
120
|
-
#ifndef _WIN32
|
119
|
+
#ifndef _WIN32
|
121
120
|
libtar_hashptr_reset(&hp);
|
122
121
|
if (libtar_hash_getkey(td->td_h, &hp, &(s.st_ino),
|
123
122
|
(libtar_matchfunc_t)ino_match) != 0)
|
@@ -147,7 +146,7 @@ tar_append_file(TAR *t, char *realname, char *savename)
|
|
147
146
|
}
|
148
147
|
#endif /* #ifndef _WIN32 */
|
149
148
|
|
150
|
-
#ifndef _WIN32
|
149
|
+
#ifndef _WIN32
|
151
150
|
/* check if it's a symlink */
|
152
151
|
if (TH_ISSYM(t))
|
153
152
|
{
|
@@ -224,8 +223,6 @@ tar_append_regfile(TAR *t, char *realname)
|
|
224
223
|
int i, j;
|
225
224
|
size_t size;
|
226
225
|
|
227
|
-
// modified by SUGAWARA Genki <sgwr_dts@yahoo.co.jp>
|
228
|
-
//filefd = open(realname, O_RDONLY);
|
229
226
|
filefd = open(realname, O_RDONLY
|
230
227
|
#ifdef O_BINARY
|
231
228
|
| O_BINARY
|
data/ext/libtar/lib/decode.c
CHANGED
@@ -47,7 +47,7 @@ uid_t
|
|
47
47
|
th_get_uid(TAR *t)
|
48
48
|
{
|
49
49
|
int uid;
|
50
|
-
#ifndef _WIN32
|
50
|
+
#ifndef _WIN32
|
51
51
|
struct passwd *pw;
|
52
52
|
|
53
53
|
pw = getpwnam(t->th_buf.uname);
|
@@ -65,7 +65,7 @@ gid_t
|
|
65
65
|
th_get_gid(TAR *t)
|
66
66
|
{
|
67
67
|
int gid;
|
68
|
-
#ifndef _WIN32
|
68
|
+
#ifndef _WIN32
|
69
69
|
struct group *gr;
|
70
70
|
|
71
71
|
gr = getgrnam(t->th_buf.gname);
|
@@ -89,7 +89,7 @@ th_get_mode(TAR *t)
|
|
89
89
|
{
|
90
90
|
switch (t->th_buf.typeflag)
|
91
91
|
{
|
92
|
-
#ifndef _WIN32
|
92
|
+
#ifndef _WIN32
|
93
93
|
case SYMTYPE:
|
94
94
|
mode |= S_IFLNK;
|
95
95
|
break;
|
@@ -97,7 +97,7 @@ th_get_mode(TAR *t)
|
|
97
97
|
case CHRTYPE:
|
98
98
|
mode |= S_IFCHR;
|
99
99
|
break;
|
100
|
-
#ifndef _WIN32
|
100
|
+
#ifndef _WIN32
|
101
101
|
case BLKTYPE:
|
102
102
|
mode |= S_IFBLK;
|
103
103
|
break;
|
@@ -105,7 +105,7 @@ th_get_mode(TAR *t)
|
|
105
105
|
case DIRTYPE:
|
106
106
|
mode |= S_IFDIR;
|
107
107
|
break;
|
108
|
-
#ifndef _WIN32
|
108
|
+
#ifndef _WIN32
|
109
109
|
case FIFOTYPE:
|
110
110
|
mode |= S_IFIFO;
|
111
111
|
break;
|
data/ext/libtar/lib/encode.c
CHANGED
@@ -10,7 +10,6 @@
|
|
10
10
|
** University of Illinois at Urbana-Champaign
|
11
11
|
*/
|
12
12
|
|
13
|
-
// modified by SUGAWARA Genki <sgwr_dts@yahoo.co.jp>
|
14
13
|
#ifdef _WIN32
|
15
14
|
#pragma warning(disable:4244)
|
16
15
|
#endif
|
@@ -42,15 +41,11 @@ th_finish(TAR *t)
|
|
42
41
|
strncpy(t->th_buf.magic, TMAGIC, TMAGLEN);
|
43
42
|
}
|
44
43
|
|
45
|
-
// modified by SUGAWARA Genki <sgwr_dts@yahoo.co.jp>
|
46
44
|
for (i = 0; i < T_BLOCKSIZE; i++) {
|
47
|
-
//sum += ((char *)(&(t->th_buf)))[i];
|
48
45
|
sum += ((unsigned char *)(&(t->th_buf)))[i];
|
49
46
|
}
|
50
47
|
for (i = 0; i < 8; i++)
|
51
48
|
sum += (' ' - t->th_buf.chksum[i]);
|
52
|
-
// modified by SUGAWARA Genki <sgwr_dts@yahoo.co.jp>
|
53
|
-
//int_to_oct(sum, t->th_buf.chksum, 8);
|
54
49
|
snprintf(t->th_buf.chksum, 8, "%06lo", (unsigned long)(sum));
|
55
50
|
t->th_buf.chksum[6] = 0;
|
56
51
|
t->th_buf.chksum[7] = ' ';
|
@@ -69,7 +64,7 @@ th_set_type(TAR *t, mode_t mode)
|
|
69
64
|
t->th_buf.typeflag = DIRTYPE;
|
70
65
|
if (S_ISCHR(mode))
|
71
66
|
t->th_buf.typeflag = CHRTYPE;
|
72
|
-
#ifndef _WIN32
|
67
|
+
#ifndef _WIN32
|
73
68
|
if (S_ISBLK(mode))
|
74
69
|
t->th_buf.typeflag = BLKTYPE;
|
75
70
|
#endif
|
@@ -130,7 +125,7 @@ th_set_path(TAR *t, char *pathname)
|
|
130
125
|
void
|
131
126
|
th_set_link(TAR *t, char *linkname)
|
132
127
|
{
|
133
|
-
#ifndef _WIN32
|
128
|
+
#ifndef _WIN32
|
134
129
|
#ifdef DEBUG
|
135
130
|
printf("==> th_set_link(th, linkname=\"%s\")\n", linkname);
|
136
131
|
#endif
|
@@ -158,7 +153,7 @@ th_set_link(TAR *t, char *linkname)
|
|
158
153
|
void
|
159
154
|
th_set_device(TAR *t, dev_t device)
|
160
155
|
{
|
161
|
-
#ifndef _WIN32
|
156
|
+
#ifndef _WIN32
|
162
157
|
#ifdef DEBUG
|
163
158
|
printf("th_set_device(): major = %d, minor = %d\n",
|
164
159
|
major(device), minor(device));
|
@@ -173,7 +168,7 @@ th_set_device(TAR *t, dev_t device)
|
|
173
168
|
void
|
174
169
|
th_set_user(TAR *t, uid_t uid)
|
175
170
|
{
|
176
|
-
#ifndef _WIN32
|
171
|
+
#ifndef _WIN32
|
177
172
|
struct passwd *pw;
|
178
173
|
|
179
174
|
pw = getpwuid(uid);
|
@@ -189,7 +184,7 @@ th_set_user(TAR *t, uid_t uid)
|
|
189
184
|
void
|
190
185
|
th_set_group(TAR *t, gid_t gid)
|
191
186
|
{
|
192
|
-
#ifndef _WIN32
|
187
|
+
#ifndef _WIN32
|
193
188
|
struct group *gr;
|
194
189
|
|
195
190
|
gr = getgrgid(gid);
|
@@ -205,15 +200,13 @@ th_set_group(TAR *t, gid_t gid)
|
|
205
200
|
void
|
206
201
|
th_set_mode(TAR *t, mode_t fmode)
|
207
202
|
{
|
208
|
-
#ifndef _WIN32
|
203
|
+
#ifndef _WIN32
|
209
204
|
if (S_ISSOCK(fmode))
|
210
205
|
{
|
211
206
|
fmode &= ~S_IFSOCK;
|
212
207
|
fmode |= S_IFIFO;
|
213
208
|
}
|
214
209
|
#endif
|
215
|
-
// modified by SUGAWARA Genki <sgwr_dts@yahoo.co.jp>
|
216
|
-
//int_to_oct(fmode, (t)->th_buf.mode, 8);
|
217
210
|
int_to_oct((fmode & 0xFFF), (t)->th_buf.mode, 8);
|
218
211
|
}
|
219
212
|
|
data/ext/libtar/lib/extract.c
CHANGED
@@ -125,17 +125,17 @@ tar_extract_file(TAR *t, char *realname)
|
|
125
125
|
if (i == 1)
|
126
126
|
i = 0;
|
127
127
|
}
|
128
|
-
#ifndef _WIN32
|
128
|
+
#ifndef _WIN32
|
129
129
|
else if (TH_ISLNK(t))
|
130
130
|
i = tar_extract_hardlink(t, realname);
|
131
131
|
#endif
|
132
|
-
#ifndef _WIN32
|
132
|
+
#ifndef _WIN32
|
133
133
|
else if (TH_ISSYM(t))
|
134
134
|
i = tar_extract_symlink(t, realname);
|
135
135
|
#endif
|
136
136
|
else if (TH_ISCHR(t))
|
137
137
|
i = tar_extract_chardev(t, realname);
|
138
|
-
#ifndef _WIN32
|
138
|
+
#ifndef _WIN32
|
139
139
|
else if (TH_ISBLK(t))
|
140
140
|
i = tar_extract_blockdev(t, realname);
|
141
141
|
#endif
|
@@ -281,7 +281,6 @@ tar_extract_regfile(TAR *t, char *realname)
|
|
281
281
|
return 0;
|
282
282
|
}
|
283
283
|
|
284
|
-
// modified by SUGAWARA Genki <sgwr_dts@yahoo.co.jp>
|
285
284
|
int tar_extract_function(TAR *t, void *data, int (*f)(char *b, int l, void *d)) {
|
286
285
|
size_t size;
|
287
286
|
int i, k;
|
@@ -343,7 +342,7 @@ tar_skip_regfile(TAR *t)
|
|
343
342
|
int
|
344
343
|
tar_extract_hardlink(TAR * t, char *realname)
|
345
344
|
{
|
346
|
-
#ifndef _WIN32
|
345
|
+
#ifndef _WIN32
|
347
346
|
char *filename;
|
348
347
|
char *linktgt = NULL;
|
349
348
|
linkname_t *lnp;
|
@@ -399,7 +398,7 @@ tar_extract_hardlink(TAR * t, char *realname)
|
|
399
398
|
int
|
400
399
|
tar_extract_symlink(TAR *t, char *realname)
|
401
400
|
{
|
402
|
-
#ifndef _WIN32
|
401
|
+
#ifndef _WIN32
|
403
402
|
char *filename;
|
404
403
|
char buf[T_BLOCKSIZE];
|
405
404
|
|
@@ -498,7 +497,7 @@ tar_extract_chardev(TAR *t, char *realname)
|
|
498
497
|
int
|
499
498
|
tar_extract_blockdev(TAR *t, char *realname)
|
500
499
|
{
|
501
|
-
#ifndef _WIN32
|
500
|
+
#ifndef _WIN32
|
502
501
|
mode_t mode;
|
503
502
|
unsigned long devmaj, devmin;
|
504
503
|
char *filename;
|
data/ext/libtar/lib/handle.c
CHANGED
data/ext/libtar/lib/internal.h
CHANGED
@@ -15,7 +15,6 @@
|
|
15
15
|
|
16
16
|
#include <libtar.h>
|
17
17
|
|
18
|
-
// modified by SUGAWARA Genki <sgwr_dts@yahoo.co.jp>
|
19
18
|
#ifdef _WIN32
|
20
19
|
|
21
20
|
#include <direct.h>
|
@@ -42,6 +41,4 @@
|
|
42
41
|
#define mkfifo(p, m) (0)
|
43
42
|
#define mknod(p, m, d) (0)
|
44
43
|
#define snprintf(s, n, f, ...) do { _snprintf((s), (n), (f), __VA_ARGS__); (s)[(n) - 1] = '\0'; } while(0)
|
45
|
-
|
46
|
-
int tarruby_stat(const char *path, struct stat *buf);
|
47
44
|
#endif
|
data/ext/libtar/lib/libtar.h
CHANGED
@@ -19,7 +19,6 @@
|
|
19
19
|
|
20
20
|
#include <libtar_listhash.h>
|
21
21
|
|
22
|
-
// modified by SUGAWARA Genki <sgwr_dts@yahoo.co.jp>
|
23
22
|
#ifdef _WIN32
|
24
23
|
#include "win32/types.h"
|
25
24
|
#define S_ISDIR(m) (((m) & (_S_IFMT)) == (_S_IFDIR))
|
@@ -230,7 +229,6 @@ void th_finish(TAR *t);
|
|
230
229
|
/* sequentially extract next file from t */
|
231
230
|
int tar_extract_file(TAR *t, char *realname);
|
232
231
|
|
233
|
-
// modified by SUGAWARA Genki <sgwr_dts@yahoo.co.jp>
|
234
232
|
int tar_extract_function(TAR *t, void *data, int (*f)(char *b, int l, void *d));
|
235
233
|
|
236
234
|
/* extract different file types */
|
@@ -283,9 +281,6 @@ int th_crc_calc(TAR *t);
|
|
283
281
|
int oct_to_int(char *oct);
|
284
282
|
|
285
283
|
/* integer to NULL-terminated string-octal conversion */
|
286
|
-
// modified by SUGAWARA Genki <sgwr_dts@yahoo.co.jp>
|
287
|
-
//#define int_to_oct(num, oct, octlen) \
|
288
|
-
// snprintf((oct), (octlen), "%*lo ", (octlen) - 2, (unsigned long)(num))
|
289
284
|
#define int_to_oct(num, oct, octlen) \
|
290
285
|
snprintf((oct), (octlen), "%0*lo", (octlen) - 1, (unsigned long)(num))
|
291
286
|
|
data/ext/libtar/lib/output.c
CHANGED
@@ -64,7 +64,7 @@ th_print_long_ls(TAR *t)
|
|
64
64
|
{
|
65
65
|
char *filename;
|
66
66
|
char modestring[12];
|
67
|
-
#ifndef _WIN32
|
67
|
+
#ifndef _WIN32
|
68
68
|
struct passwd *pw;
|
69
69
|
struct group *gr;
|
70
70
|
#endif
|
@@ -85,7 +85,7 @@ th_print_long_ls(TAR *t)
|
|
85
85
|
#endif
|
86
86
|
|
87
87
|
uid = th_get_uid(t);
|
88
|
-
#ifndef _WIN32
|
88
|
+
#ifndef _WIN32
|
89
89
|
pw = getpwuid(uid);
|
90
90
|
if (pw == NULL)
|
91
91
|
snprintf(username, sizeof(username), "%d", uid);
|
@@ -96,7 +96,7 @@ th_print_long_ls(TAR *t)
|
|
96
96
|
#endif
|
97
97
|
|
98
98
|
gid = th_get_gid(t);
|
99
|
-
#ifndef _WIN32
|
99
|
+
#ifndef _WIN32
|
100
100
|
gr = getgrgid(gid);
|
101
101
|
if (gr == NULL)
|
102
102
|
snprintf(groupname, sizeof(groupname), "%d", gid);
|
data/ext/libtar/lib/util.c
CHANGED
@@ -150,9 +150,6 @@ oct_to_int(char *oct)
|
|
150
150
|
void
|
151
151
|
int_to_oct_nonull(int num, char *oct, size_t octlen)
|
152
152
|
{
|
153
|
-
// modified by SUGAWARA Genki <sgwr_dts@yahoo.co.jp>
|
154
|
-
//snprintf(oct, octlen, "%*lo", octlen - 1, (unsigned long)num);
|
155
|
-
//oct[octlen - 1] = ' ';
|
156
153
|
snprintf(oct, octlen, "%0*lo", octlen - 1, (unsigned long)num);
|
157
154
|
oct[octlen - 1] = 0;
|
158
155
|
}
|
data/ext/libtar/lib/wrapper.c
CHANGED
@@ -21,7 +21,6 @@
|
|
21
21
|
# include <string.h>
|
22
22
|
#endif
|
23
23
|
|
24
|
-
|
25
24
|
int
|
26
25
|
tar_extract_glob(TAR *t, char *globname, char *prefix)
|
27
26
|
{
|
@@ -46,8 +45,6 @@ tar_extract_glob(TAR *t, char *globname, char *prefix)
|
|
46
45
|
snprintf(buf, sizeof(buf), "%s/%s", prefix, filename);
|
47
46
|
else
|
48
47
|
strlcpy(buf, filename, sizeof(buf));
|
49
|
-
// modified by SUGAWARA Genki <sgwr_dts@yahoo.co.jp>
|
50
|
-
//if (tar_extract_file(t, filename) != 0)
|
51
48
|
if (tar_extract_file(t, buf) != 0) {
|
52
49
|
free(filename);
|
53
50
|
return -1;
|
@@ -106,8 +103,8 @@ tar_append_tree(TAR *t, char *realdir, char *savedir)
|
|
106
103
|
struct dirent *dent;
|
107
104
|
DIR *dp;
|
108
105
|
struct stat s;
|
109
|
-
#
|
110
|
-
|
106
|
+
#if defined(_WIN32)
|
107
|
+
int errorp = 0;
|
111
108
|
#endif
|
112
109
|
|
113
110
|
#ifdef DEBUG
|
@@ -122,14 +119,14 @@ tar_append_tree(TAR *t, char *realdir, char *savedir)
|
|
122
119
|
puts(" tar_append_tree(): done with tar_append_file()...");
|
123
120
|
#endif
|
124
121
|
|
125
|
-
#ifndef _WIN32
|
122
|
+
#ifndef _WIN32
|
126
123
|
dp = opendir(realdir);
|
127
124
|
#else
|
128
125
|
dp = opendir0(realdir, &errorp);
|
129
126
|
#endif
|
130
127
|
if (dp == NULL)
|
131
128
|
{
|
132
|
-
#ifndef _WIN32
|
129
|
+
#ifndef _WIN32
|
133
130
|
if (errno == ENOTDIR)
|
134
131
|
return 0;
|
135
132
|
#else
|
data/ext/tarruby.c
CHANGED
@@ -8,6 +8,7 @@
|
|
8
8
|
#endif
|
9
9
|
#include "libtar.h"
|
10
10
|
#include "ruby.h"
|
11
|
+
#include "rubysig.h"
|
11
12
|
|
12
13
|
#ifndef RSTRING_PTR
|
13
14
|
#define RSTRING_PTR(s) (RSTRING(s)->ptr)
|
@@ -32,7 +33,7 @@
|
|
32
33
|
|
33
34
|
#define INT2TIME(i) rb_funcall(rb_cTime, rb_intern("at"), 1, INT2NUM(i))
|
34
35
|
|
35
|
-
#define VERSION "0.1.
|
36
|
+
#define VERSION "0.1.3"
|
36
37
|
|
37
38
|
static VALUE Tar;
|
38
39
|
static VALUE Error;
|
@@ -275,6 +276,7 @@ static VALUE tarruby_append_tree(int argc, VALUE *argv, VALUE self) {
|
|
275
276
|
VALUE realdir, savedir;
|
276
277
|
struct tarruby_tar *p_tar;
|
277
278
|
char *s_realdir, *s_savedir = NULL;
|
279
|
+
int result = -1;
|
278
280
|
|
279
281
|
rb_scan_args(argc, argv, "11", &realdir, &savedir);
|
280
282
|
Check_Type(realdir, T_STRING);
|
@@ -289,7 +291,11 @@ static VALUE tarruby_append_tree(int argc, VALUE *argv, VALUE self) {
|
|
289
291
|
|
290
292
|
Data_Get_Struct(self, struct tarruby_tar, p_tar);
|
291
293
|
|
292
|
-
|
294
|
+
TRAP_BEG;
|
295
|
+
result = tar_append_tree(p_tar->tar, s_realdir, s_savedir);
|
296
|
+
TRAP_END;
|
297
|
+
|
298
|
+
if (result != 0) {
|
293
299
|
rb_raise(Error, "Append tree failed: %s", strerror(errno));
|
294
300
|
}
|
295
301
|
|
@@ -343,6 +349,7 @@ static VALUE tarruby_extract_glob(int argc, VALUE *argv, VALUE self) {
|
|
343
349
|
VALUE globname, prefix;
|
344
350
|
struct tarruby_tar *p_tar;
|
345
351
|
char *s_globname, *s_prefix = NULL;
|
352
|
+
int result = -1;
|
346
353
|
|
347
354
|
rb_scan_args(argc, argv, "11", &globname, &prefix);
|
348
355
|
Check_Type(globname, T_STRING);
|
@@ -355,7 +362,11 @@ static VALUE tarruby_extract_glob(int argc, VALUE *argv, VALUE self) {
|
|
355
362
|
|
356
363
|
Data_Get_Struct(self, struct tarruby_tar, p_tar);
|
357
364
|
|
358
|
-
|
365
|
+
TRAP_BEG;
|
366
|
+
result = tar_extract_glob(p_tar->tar, s_globname, s_prefix);
|
367
|
+
TRAP_END;
|
368
|
+
|
369
|
+
if (result != 0) {
|
359
370
|
rb_raise(Error, "Extract archive failed: %s", strerror(errno));
|
360
371
|
}
|
361
372
|
|
@@ -369,6 +380,7 @@ static VALUE tarruby_extract_all(int argc, VALUE *argv, VALUE self) {
|
|
369
380
|
VALUE prefix;
|
370
381
|
struct tarruby_tar *p_tar;
|
371
382
|
char *s_prefix = NULL;
|
383
|
+
int result = -1;
|
372
384
|
|
373
385
|
rb_scan_args(argc, argv, "01", &prefix);
|
374
386
|
|
@@ -379,7 +391,11 @@ static VALUE tarruby_extract_all(int argc, VALUE *argv, VALUE self) {
|
|
379
391
|
|
380
392
|
Data_Get_Struct(self, struct tarruby_tar, p_tar);
|
381
393
|
|
382
|
-
|
394
|
+
TRAP_BEG;
|
395
|
+
result = tar_extract_all(p_tar->tar, s_prefix);
|
396
|
+
TRAP_END;
|
397
|
+
|
398
|
+
if (result != 0) {
|
383
399
|
rb_raise(Error, "Extract archive failed: %s", strerror(errno));
|
384
400
|
}
|
385
401
|
|
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: tarruby
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.1.
|
4
|
+
version: 0.1.3
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- winebarrel
|
@@ -9,7 +9,7 @@ autorequire:
|
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
11
|
|
12
|
-
date: 2008-09-
|
12
|
+
date: 2008-09-14 00:00:00 +09:00
|
13
13
|
default_executable:
|
14
14
|
dependencies: []
|
15
15
|
|
@@ -61,6 +61,7 @@ files:
|
|
61
61
|
- ext/libtar/configure
|
62
62
|
- ext/libtar/configure.ac
|
63
63
|
- ext/libtar/COPYRIGHT
|
64
|
+
- ext/libtar/Copyright.txt
|
64
65
|
- ext/libtar/doc
|
65
66
|
- ext/libtar/doc/Makefile.in
|
66
67
|
- ext/libtar/doc/tar_append_file.3
|