mirror of
https://github.com/archlinuxarm/PKGBUILDs.git
synced 2024-12-08 23:03:46 +00:00
108 lines
3 KiB
Diff
108 lines
3 KiB
Diff
diff -Naur libtar-1.2.11-orig/lib/decode.c libtar-1.2.11/lib/decode.c
|
|
--- libtar-1.2.11-orig/lib/decode.c 2003-01-06 17:40:59.000000000 -0800
|
|
+++ libtar-1.2.11/lib/decode.c 2004-08-13 12:26:34.000000000 -0700
|
|
@@ -26,7 +26,7 @@
|
|
char *
|
|
th_get_pathname(TAR *t)
|
|
{
|
|
- char filename[MAXPATHLEN];
|
|
+ static char filename[MAXPATHLEN];
|
|
|
|
if (t->th_buf.gnu_longname)
|
|
return t->th_buf.gnu_longname;
|
|
@@ -35,11 +35,11 @@
|
|
{
|
|
snprintf(filename, sizeof(filename), "%.155s/%.100s",
|
|
t->th_buf.prefix, t->th_buf.name);
|
|
- return strdup(filename);
|
|
+ return filename;
|
|
}
|
|
|
|
snprintf(filename, sizeof(filename), "%.100s", t->th_buf.name);
|
|
- return strdup(filename);
|
|
+ return filename;
|
|
}
|
|
|
|
|
|
diff -Naur libtar-1.2.11-orig/lib/extract.c libtar-1.2.11/lib/extract.c
|
|
--- libtar-1.2.11-orig/lib/extract.c 2003-03-02 15:58:07.000000000 -0800
|
|
+++ libtar-1.2.11/lib/extract.c 2004-08-13 12:26:34.000000000 -0700
|
|
@@ -28,14 +28,6 @@
|
|
#endif
|
|
|
|
|
|
-struct linkname
|
|
-{
|
|
- char ln_save[MAXPATHLEN];
|
|
- char ln_real[MAXPATHLEN];
|
|
-};
|
|
-typedef struct linkname linkname_t;
|
|
-
|
|
-
|
|
static int
|
|
tar_set_file_perms(TAR *t, char *realname)
|
|
{
|
|
@@ -98,7 +90,9 @@
|
|
tar_extract_file(TAR *t, char *realname)
|
|
{
|
|
int i;
|
|
- linkname_t *lnp;
|
|
+ char *lnp;
|
|
+ int pathname_len;
|
|
+ int realname_len;
|
|
|
|
if (t->options & TAR_NOOVERWRITE)
|
|
{
|
|
@@ -137,11 +131,13 @@
|
|
if (i != 0)
|
|
return i;
|
|
|
|
- lnp = (linkname_t *)calloc(1, sizeof(linkname_t));
|
|
+ pathname_len = strlen(th_get_pathname(t)) + 1;
|
|
+ realname_len = strlen(realname) + 1;
|
|
+ lnp = (char *)calloc(1, pathname_len + realname_len);
|
|
if (lnp == NULL)
|
|
return -1;
|
|
- strlcpy(lnp->ln_save, th_get_pathname(t), sizeof(lnp->ln_save));
|
|
- strlcpy(lnp->ln_real, realname, sizeof(lnp->ln_real));
|
|
+ strcpy(&lnp[0], th_get_pathname(t));
|
|
+ strcpy(&lnp[pathname_len], realname);
|
|
#ifdef DEBUG
|
|
printf("tar_extract_file(): calling libtar_hash_add(): key=\"%s\", "
|
|
"value=\"%s\"\n", th_get_pathname(t), realname);
|
|
@@ -288,7 +284,7 @@
|
|
{
|
|
char *filename;
|
|
char *linktgt = NULL;
|
|
- linkname_t *lnp;
|
|
+ char *lnp;
|
|
libtar_hashptr_t hp;
|
|
|
|
if (!TH_ISLNK(t))
|
|
@@ -304,8 +300,8 @@
|
|
if (libtar_hash_getkey(t->h, &hp, th_get_linkname(t),
|
|
(libtar_matchfunc_t)libtar_str_match) != 0)
|
|
{
|
|
- lnp = (linkname_t *)libtar_hashptr_data(&hp);
|
|
- linktgt = lnp->ln_real;
|
|
+ lnp = (char *)libtar_hashptr_data(&hp);
|
|
+ linktgt = &lnp[strlen(lnp) + 1];
|
|
}
|
|
else
|
|
linktgt = th_get_linkname(t);
|
|
diff -Naur libtar-1.2.11-orig/lib/libtar.h libtar-1.2.11/lib/libtar.h
|
|
--- libtar-1.2.11-orig/lib/libtar.h 2003-01-06 17:40:59.000000000 -0800
|
|
+++ libtar-1.2.11/lib/libtar.h 2004-08-13 12:26:52.000000000 -0700
|
|
@@ -63,9 +63,9 @@
|
|
/***** handle.c ************************************************************/
|
|
|
|
typedef int (*openfunc_t)(const char *, int, ...);
|
|
-typedef int (*closefunc_t)(int);
|
|
-typedef ssize_t (*readfunc_t)(int, void *, size_t);
|
|
-typedef ssize_t (*writefunc_t)(int, const void *, size_t);
|
|
+typedef int (*closefunc_t)(long);
|
|
+typedef ssize_t (*readfunc_t)(long, void *, size_t);
|
|
+typedef ssize_t (*writefunc_t)(long, const void *, size_t);
|
|
|
|
typedef struct
|
|
{
|