Skip site navigation (1)Skip section navigation (2)
Date:      Sun, 13 Dec 1998 14:43:54 +0800 (CST)
From:      clkao@CirX.ORG
To:        FreeBSD-gnats-submit@FreeBSD.ORG
Subject:   bin/9064: [PATCH] propose adding `direct' option in fetch(3)
Message-ID:  <199812130643.OAA20036@genius.cirx.org>

next in thread | raw e-mail | index | archive | help

>Number:         9064
>Category:       bin
>Synopsis:       [PATCH] propose adding `direct' option in fetch(3)
>Confidential:   yes
>Severity:       non-critical
>Priority:       medium
>Responsible:    freebsd-bugs
>State:          open
>Quarter:
>Keywords:
>Date-Required:
>Class:          change-request
>Submitter-Id:   current-users
>Arrival-Date:   Sat Dec 12 22:50:00 PST 1998
>Last-Modified:
>Originator:     Chia-liang Kao
>Organization:
CirX
>Release:        FreeBSD 3.0-CURRENT i386
>Environment:

FreeBSD genius.cirx.org 3.0-CURRENT FreeBSD 3.0-CURRENT #0: Mon Dec  7 12:16:11 CST 1998     clkao@genius.cirx.org:/usr/src/sys/compile/GENIUS  i386

>Description:

When `make fetch', we usually add a very nearby site in
MASTER_SITE_BACKUP, and then some of the primary distfile-mirroring sites.

The problem is that, I'd like those nearby site being fetched directly, rather
than via proxies, while the actually far sites(like ftp.freebsd.org) go through
proxies.

>How-To-Repeat:

>Fix:
	
Here is a patch adding a `-d' option to fetch(3). the `d' stands for `direct'
(it's quite hard to find an unused option character in fetch! :p)

you can modify your MASTER_SITE_BACKUP like this:

MASTER_SITE_BACKUP?=	\
	"-d ftp://oio/pub/freebsd/distfiles/${DIST_SUBDIR}/" \
	"-d ftp://freebsd.ntu.edu.tw/pub/FreeBSD/distfiles/${DIST_SUBDIR}/" \
	"-d ftp://bsd.sinica.edu.tw/pub/FreeBSD/distfiles/${DIST_SUBDIR}/" \
	ftp://ftp.freebsd.org/pub/FreeBSD/distfiles/${DIST_SUBDIR}/


cvs diff: Diffing .
Index: fetch.1
===================================================================
RCS file: /home/ncvs/src/usr.bin/fetch/fetch.1,v
retrieving revision 1.26
diff -u -r1.26 fetch.1
--- fetch.1	1998/12/08 13:00:48	1.26
+++ fetch.1	1998/12/13 06:30:13
@@ -61,6 +61,8 @@
 The file to retrieve is in directory
 .Ar dir
 on the remote host.
+.It Fl d
+Directly fetch from the host; skip PROTO_PROXY environment variables.
 .It Fl f Ar file
 The file to retrieve is named
 .Ar file
Index: fetch.h
===================================================================
RCS file: /home/ncvs/src/usr.bin/fetch/fetch.h,v
retrieving revision 1.7
diff -u -r1.7 fetch.h
--- fetch.h	1998/12/08 13:00:49	1.7
+++ fetch.h	1998/12/13 06:20:02
@@ -53,6 +53,7 @@
 	int fs_use_connect;	/* -t option */
 	off_t fs_expectedsize;	/* -S option */
 	int fs_reportsize;	/* -s option */
+	int fs_skip_proxy;	/* -d option */
 	time_t fs_modtime;
 	void *fs_proto;
 	int (*fs_retrieve)(struct fetch_state *);
Index: main.c
===================================================================
RCS file: /home/ncvs/src/usr.bin/fetch/main.c,v
retrieving revision 1.49
diff -u -r1.49 main.c
--- main.c	1998/12/08 13:00:49	1.49
+++ main.c	1998/12/13 06:24:46
@@ -52,7 +52,7 @@
 usage()
 {
 	fprintf(stderr, "%s\n%s\n", 
-		"usage: fetch [-DHILMNPRTVablmnpqrstv] [-o outputfile] [-S bytes]",
+		"usage: fetch [-DHILMNPRTVabdlmnpqrstv] [-o outputfile] [-S bytes]",
 		"             [-f file -h host [-c dir] | URL]");
 	exit(EX_USAGE);
 }
@@ -68,14 +68,13 @@
     int error, rv;
     unsigned long l;
 
-    init_schemes();
     fs = clean_fetch_state;
     fs.fs_verbose = 1;
     fs.fs_reportsize = 0;
     fs.fs_expectedsize = -1;
     change_to_dir = file_to_get = hostname = 0;
 
-    while ((c = getopt(argc, argv, "abc:D:f:h:HIlLmMnNo:pPqRrS:stT:vV:")) != -1) {
+    while ((c = getopt(argc, argv, "abc:dD:f:h:HIlLmMnNo:pPqRrS:stT:vV:")) != -1) {
 	    switch (c) {
 	    case 'D': case 'H': case 'I': case 'L': case 'N': case 'V': 
 		    break;	/* ncftp compatibility */
@@ -92,6 +91,10 @@
 		    change_to_dir = optarg;
 		    break;
 
+	    case 'd':
+		    fs.fs_skip_proxy = 1;
+		    break;
+
 	    case 'f':
 		    file_to_get = optarg;
 		    break;
@@ -174,6 +177,8 @@
     }
 
     clean_fetch_state = fs; /* preserve option settings */
+    if(!fs.fs_skip_proxy)
+	init_schemes();
 
     if (argv[optind] && (hostname || change_to_dir || file_to_get)) {
 	    warnx("cannot use -h, -c, or -f with a URI argument");
>Audit-Trail:
>Unformatted:

To Unsubscribe: send mail to majordomo@FreeBSD.org
with "unsubscribe freebsd-bugs" in the body of the message



Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?199812130643.OAA20036>