Hi all !
before a few month, i send to here problem about using pkg_add on linux
and tbz packages, which i want to install from http server.
here is the thread:
http://archive.netbsd.se/?ml=pkgsrc-users&a=2007-10&m=5428439
So, i wrote a little patch, which solve this problem :)
--- files/add/perform.c.orig 2008-02-02 10:24:23.000000000 +0100
+++ files/add/perform.c 2008-02-02 10:29:46.000000000 +0100
@@ -450,7 +450,7 @@
if (!Home)
warnx("unable to make playpen for %ld bytes",
(long) (sb.st_size * 4));
- result = unpack(pkg, &files);
+ result = unpack(pkg, &files, NULL);
while ((lfp = TAILQ_FIRST(&files)) != NULL) {
TAILQ_REMOVE(&files, lfp, lf_link);
free(lfp);
@@ -488,7 +488,7 @@
}
/* Finally unpack the whole mess */
- if (unpack(pkg, NULL)) {
+ if (unpack(pkg, NULL, NULL)) {
warnx("unable to extract `%s'!", pkg);
goto bomb;
}
--- files/info/perform.c.orig 2008-02-02 10:25:04.000000000 +0100
+++ files/info/perform.c 2008-02-02 10:25:24.000000000 +0100
@@ -159,7 +159,7 @@
goto bail;
}
Home = make_playpen(PlayPen,
PlayPenSize, sb.st_size / 2);
- result = unpack(fname, &files);
+ result = unpack(fname, &files, NULL);
while ((lfp = TAILQ_FIRST(&files)) !=
NULL) { TAILQ_REMOVE(&files, lfp, lf_link);
free(lfp);
--- files/lib/lib.h.orig 2008-02-02 10:19:31.000000000 +0100
+++ files/lib/lib.h 2008-02-02 10:19:57.000000000 +0100
@@ -367,7 +367,7 @@
void move_files(const char *, const char *, const char *);
void remove_files(const char *, const char *);
int delete_hierarchy(char *, Boolean, Boolean);
-int unpack(const char *, const lfile_head_t *);
+int unpack(const char *, const lfile_head_t *, const char *);
void format_cmd(char *, size_t, char *, char *, char *);
/* ftpio.c: FTP handling */
--- files/lib/file.c.orig 2008-02-02 10:20:34.000000000 +0100
+++ files/lib/file.c 2008-02-02 10:23:28.000000000 +0100
@@ -638,7 +638,7 @@
* Unpack a tar file
*/
int
-unpack(const char *pkg, const lfile_head_t *filesp)
+unpack(const char *pkg, const lfile_head_t *filesp, const char *url)
{
const char *decompress_cmd = NULL;
const char *suf;
@@ -654,18 +654,19 @@
count++;
up_argc += count;
up_argv = malloc((count + up_argc + 1) * sizeof(char *));
- if (!IS_STDIN(pkg)) {
- suf = suffix_of(pkg);
- if (!strcmp(suf, "tbz") || !strcmp(suf, "bz2"))
- decompress_cmd = BZIP2_CMD;
- else if (!strcmp(suf, "tgz") || !strcmp(suf, "gz"))
- decompress_cmd = GZIP_CMD;
- else if (!strcmp(suf, "tar"))
- ; /* do nothing */
- else
- errx(EXIT_FAILURE, "don't know how to
decompress %s, sorry", pkg);
- } else
+ if (!IS_STDIN(pkg))
+ suf = suffix_of(pkg);
+ else
+ suf = suffix_of(url);
+
+ if (!strcmp(suf, "tbz") || !strcmp(suf, "bz2"))
+ decompress_cmd = BZIP2_CMD;
+ else if (!strcmp(suf, "tgz") || !strcmp(suf, "gz"))
decompress_cmd = GZIP_CMD;
+ else if (!strcmp(suf, "tar"))
+ ; /* do nothing */
+ else
+ errx(EXIT_FAILURE, "don't know how to decompress %s,
sorry", pkg);
up_argv[i] = (char *)strrchr(TAR_CMD, '/');
if (up_argv[i] == NULL)
--- files/lib/ftpio.c.orig 2008-02-02 10:20:27.000000000 +0100
+++ files/lib/ftpio.c 2008-02-02 10:23:59.000000000 +0100
@@ -1041,7 +1041,7 @@
if ((path != NULL) && (chdir(path) < 0))
_exit(127);
- if (unpack("-", NULL) != 0) {
+ if (unpack("-", NULL, url) != 0) {
warnx("unpack failed");
_exit(2);
}
I test it, and it works fine, i try to install tbz from http, ftp,
and local disk :)
--
Ondrej Tuma
Www: www.blackmouse.biz, mcbig.webjet.cz
Jabber: mcbig%jabber.cz@localhost
Attachment:
signature.asc
Description: PGP signature