Hi,

Sorry for the delay, here it's the patch.

regards,
guillem
Index: net-retriever.c
===================================================================
RCS file: /cvs/debian-boot/debian-installer/retriever/net/net-retriever.c,v
retrieving revision 1.3
diff -u -r1.3 net-retriever.c
--- net-retriever.c     12 Nov 2002 22:53:48 -0000      1.3
+++ net-retriever.c     19 Dec 2002 03:52:11 -0000
@@ -8,37 +8,62 @@
 #include <stdlib.h>
 #include <stdio.h>
 
-/* Base of the debconf question hierary used by this program. */
+/* Base of the debconf question hierarchy used by this program. */
 #define DEBCONF_BASE "mirror/"
 
+/*
+ * Get a protocol question value from the debconf mirror hierarchy.
+ * Returns the result in the value field of debconfclient.
+ */
+void get_mirror_protocol_value(struct debconfclient *debconf, char *protocol,
+                              char *string)
+{
+       char *question;
+
+       asprintf(&question, DEBCONF_BASE "%s/%s", protocol, string);
+       debconf->command(debconf, "GET", question, NULL);
+       free(question);
+}
+
 int main(int argc, char **argv) {
        int ret;
        char *src;
        char *hostname, *directory, *command;
        struct debconfclient *debconf = debconfclient_new();
-       
+
        if (argc < 2)
                exit(1);
        if (strcmp(argv[1], "retrieve") == 0) {
+               char *protocol;
+
                if (argc < 4)
                        exit(1);
+
+               debconf->command(debconf, "GET", DEBCONF_BASE "protocol", NULL);
+               protocol = strdup(debconf->value);
+
                /* Suck in data from the debconf database, which will be primed
                 * with the mirror to use by choose-mirror */
-               // TODO: what about ftp?
-               debconf->command(debconf, "GET", DEBCONF_BASE "http/hostname", NULL);
+               get_mirror_protocol_value(debconf, protocol, "hostname");
                hostname = strdup(debconf->value);
-               debconf->command(debconf, "GET", DEBCONF_BASE "http/directory", NULL);
+
+               get_mirror_protocol_value(debconf, protocol, "directory");
                directory = strdup(debconf->value);
-               debconf->command(debconf, "GET", DEBCONF_BASE "http/proxy", NULL);
+
+               get_mirror_protocol_value(debconf, protocol, "proxy");
                if (debconf->value && strcmp(debconf->value,"") != 0) {
-                       if (setenv("http_proxy", debconf->value, 1) == -1)
+                       char *env_variable;
+
+                       asprintf(&env_variable, "%s_proxy", protocol);
+                       if (setenv(env_variable, debconf->value, 1) == -1)
                                exit(1);
+                       free(env_variable);
                }
-               src=argv[2];
-               asprintf(&command, "wget -c -q http://%s%s/%s -O %s", hostname,
-                               directory, src, argv[3]);
-               fprintf(stderr,"wget: %s\n", command);
-               ret=system(command);
+               src = argv[2];
+               asprintf(&command, "wget -c -q %s://%s%s/%s -O %s", protocol,
+                        hostname, directory, src, argv[3]);
+               fprintf(stderr, "wget: %s\n", command);
+               ret = system(command);
                if (ret == 256)
                        return 1;
                return ret;
@@ -47,3 +72,4 @@
                return 1;
        }
 }
+

Reply via email to