Hello,
It appears that at the moment pkg_add(1) requires the PKG_PATH variable
to not end in a /. However, it seems to me like a common user "mistake"
to include the trailing slash. The resulting error message is not
entirely unreasonable:
# setenv PKG_PATH
ftp://ftp.netbsd.org/pub/pkgsrc/packages/NetBSD/amd64/5.1_2011Q4/All/
# pkg_add bc
ftp: The `CWD ' command (without a directory), which is required by
RFC3986 to support the empty directory in the URL pathname (`//'),
conflicts with the server's conformance to RFC0959.
Try the same URL without the `//' in the URL pathname.
but a new user might still wonder what this is all about. More
specifically, the user might wonder why the tool does not simply either
bail out right away or strip off the trailing / if it knows this to be
an error condition.
So, I was wondering if the following would make sense:
--- files/lib/parse-config.c 16 Jun 2010 23:02:49 -0000 1.15
+++ files/lib/parse-config.c 27 Feb 2012 14:17:54 -0000
@@ -206,8 +206,13 @@
if (do_license_check == NULL)
do_license_check = "no";
- if ((value = getenv("PKG_PATH")) != NULL)
+ if ((value = getenv("PKG_PATH")) != NULL) {
+ int len = strlen(value);
+ if (value[len] == '/') {
+ value[len] == '\0';
+ }
config_pkg_path = value;
+ }
if (strcasecmp(cache_index, "yes") == 0)
do_cache_index = 1;
Or should that perhaps be handled in files/lib/pkg_io.c:process_pkg_path
?
-Jan
Attachment:
pgppQdVaWGrSW.pgp
Description: PGP signature