From owner-freebsd-bugs Mon Oct 21 1:50: 6 2002 Delivered-To: freebsd-bugs@hub.freebsd.org Received: from mx1.FreeBSD.org (mx1.freebsd.org [216.136.204.125]) by hub.freebsd.org (Postfix) with ESMTP id 38D5037B401 for ; Mon, 21 Oct 2002 01:50:04 -0700 (PDT) Received: from freefall.freebsd.org (freefall.freebsd.org [216.136.204.21]) by mx1.FreeBSD.org (Postfix) with ESMTP id E508D43E3B for ; Mon, 21 Oct 2002 01:50:03 -0700 (PDT) (envelope-from gnats@FreeBSD.org) Received: from freefall.freebsd.org (gnats@localhost [127.0.0.1]) by freefall.freebsd.org (8.12.6/8.12.6) with ESMTP id g9L8o3x3018105 for ; Mon, 21 Oct 2002 01:50:03 -0700 (PDT) (envelope-from gnats@freefall.freebsd.org) Received: (from gnats@localhost) by freefall.freebsd.org (8.12.6/8.12.6/Submit) id g9L8o3lq018104; Mon, 21 Oct 2002 01:50:03 -0700 (PDT) Date: Mon, 21 Oct 2002 01:50:03 -0700 (PDT) Message-Id: <200210210850.g9L8o3lq018104@freefall.freebsd.org> To: freebsd-bugs@FreeBSD.org Cc: From: "Denis N. Peplin" Subject: Re: bin/35451: PATCH: pkg_add -r able to save local copy to PKG_SAVEDIR Reply-To: "Denis N. Peplin" Sender: owner-freebsd-bugs@FreeBSD.ORG Precedence: bulk List-ID: List-Archive: (Web Archive) List-Help: (List Instructions) List-Subscribe: List-Unsubscribe: X-Loop: FreeBSD.org The following reply was made to PR bin/35451; it has been noted by GNATS. From: "Denis N. Peplin" To: freebsd-gnats-submit@FreeBSD.org, markhannon@optushome.com.au Cc: Subject: Re: bin/35451: PATCH: pkg_add -r able to save local copy to PKG_SAVEDIR Date: Mon, 21 Oct 2002 12:49:22 +0400 I wrote my own small patch before looking to 35451. This patch is not ready-to-use (but I use it), just a bit simple :) And I have one question - why previous patches was not added to source tree? diff -r -u pkg_install.old/lib/file.c pkg_install/lib/file.c --- pkg_install.old/lib/file.c Fri Oct 18 11:34:35 2002 +++ pkg_install/lib/file.c Mon Oct 21 10:50:43 2002 @@ -143,12 +143,15 @@ char *cp, *rp; char fname[FILENAME_MAX]; char pen[FILENAME_MAX]; + char lspec[FILENAME_MAX]; + char pspec[FILENAME_MAX]; char buf[8192]; FILE *ftp; pid_t tpid; int pfd[2], pstat, r, w; char *hint; - int fd; + int fd, lfd; + char *tok, *ftok; rp = NULL; /* Special tip that sysinstall left for us */ @@ -227,10 +230,22 @@ _exit(2); } close(pfd[0]); + strcpy(pspec, spec); + strtok(pspec, "/"); + while ((tok = strtok(NULL, "/"))) { + ftok = tok; + } + strcpy(lspec, "/tmp/"); + strcat(lspec, ftok); + lfd = open(lspec, O_WRONLY | O_CREAT | O_TRUNC, 0644); + if (lfd == FAIL) { + cleanup(0); + errx(2, "%s: unable to open '%s' for for writing", __func__, lspec); + } for (;;) { if ((r = fread(buf, 1, sizeof buf, ftp)) < 1) break; - if ((w = write(pfd[1], buf, r)) != r) + if (write(lfd, buf, r) != r || (w = write(pfd[1], buf, r)) != r) break; } if (ferror(ftp)) To Unsubscribe: send mail to majordomo@FreeBSD.org with "unsubscribe freebsd-bugs" in the body of the message