annotate netinstall/download.cc @ 4709:db7068430402

Add explicit GPL v2 or later notices to Bill Perry's code, where such notices are missing. This is done with Bill Perry's stated permission, in private email to me.
author Jerry James <james@xemacs.org>
date Mon, 05 Oct 2009 11:08:59 -0600
parents ce0b3f2eff35
children
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
448
3078fd1074e8 Import from CVS: tag r21-2-39
cvs
parents:
diff changeset
1 /*
3078fd1074e8 Import from CVS: tag r21-2-39
cvs
parents:
diff changeset
2 * Copyright (c) 2000, Red Hat, Inc.
3078fd1074e8 Import from CVS: tag r21-2-39
cvs
parents:
diff changeset
3 *
3078fd1074e8 Import from CVS: tag r21-2-39
cvs
parents:
diff changeset
4 * This program is free software; you can redistribute it and/or modify
3078fd1074e8 Import from CVS: tag r21-2-39
cvs
parents:
diff changeset
5 * it under the terms of the GNU General Public License as published by
3078fd1074e8 Import from CVS: tag r21-2-39
cvs
parents:
diff changeset
6 * the Free Software Foundation; either version 2 of the License, or
3078fd1074e8 Import from CVS: tag r21-2-39
cvs
parents:
diff changeset
7 * (at your option) any later version.
3078fd1074e8 Import from CVS: tag r21-2-39
cvs
parents:
diff changeset
8 *
3078fd1074e8 Import from CVS: tag r21-2-39
cvs
parents:
diff changeset
9 * A copy of the GNU General Public License can be found at
3078fd1074e8 Import from CVS: tag r21-2-39
cvs
parents:
diff changeset
10 * http://www.gnu.org/
3078fd1074e8 Import from CVS: tag r21-2-39
cvs
parents:
diff changeset
11 *
3078fd1074e8 Import from CVS: tag r21-2-39
cvs
parents:
diff changeset
12 * Written by DJ Delorie <dj@cygnus.com>
3078fd1074e8 Import from CVS: tag r21-2-39
cvs
parents:
diff changeset
13 *
3078fd1074e8 Import from CVS: tag r21-2-39
cvs
parents:
diff changeset
14 */
3078fd1074e8 Import from CVS: tag r21-2-39
cvs
parents:
diff changeset
15
3078fd1074e8 Import from CVS: tag r21-2-39
cvs
parents:
diff changeset
16 /* The purpose of this file is to download all the files we need to
3078fd1074e8 Import from CVS: tag r21-2-39
cvs
parents:
diff changeset
17 do the installation. */
3078fd1074e8 Import from CVS: tag r21-2-39
cvs
parents:
diff changeset
18
3078fd1074e8 Import from CVS: tag r21-2-39
cvs
parents:
diff changeset
19 #include <stdio.h>
3078fd1074e8 Import from CVS: tag r21-2-39
cvs
parents:
diff changeset
20 #include <sys/types.h>
3078fd1074e8 Import from CVS: tag r21-2-39
cvs
parents:
diff changeset
21 #include <sys/stat.h>
3078fd1074e8 Import from CVS: tag r21-2-39
cvs
parents:
diff changeset
22
3078fd1074e8 Import from CVS: tag r21-2-39
cvs
parents:
diff changeset
23 #include "win32.h"
3078fd1074e8 Import from CVS: tag r21-2-39
cvs
parents:
diff changeset
24
3078fd1074e8 Import from CVS: tag r21-2-39
cvs
parents:
diff changeset
25 #include "resource.h"
3078fd1074e8 Import from CVS: tag r21-2-39
cvs
parents:
diff changeset
26 #include "msg.h"
3078fd1074e8 Import from CVS: tag r21-2-39
cvs
parents:
diff changeset
27 #include "ini.h"
3078fd1074e8 Import from CVS: tag r21-2-39
cvs
parents:
diff changeset
28 #include "dialog.h"
3078fd1074e8 Import from CVS: tag r21-2-39
cvs
parents:
diff changeset
29 #include "concat.h"
3078fd1074e8 Import from CVS: tag r21-2-39
cvs
parents:
diff changeset
30 #include "geturl.h"
3078fd1074e8 Import from CVS: tag r21-2-39
cvs
parents:
diff changeset
31 #include "state.h"
3078fd1074e8 Import from CVS: tag r21-2-39
cvs
parents:
diff changeset
32 #include "mkdir.h"
3078fd1074e8 Import from CVS: tag r21-2-39
cvs
parents:
diff changeset
33 #include "log.h"
3078fd1074e8 Import from CVS: tag r21-2-39
cvs
parents:
diff changeset
34
3078fd1074e8 Import from CVS: tag r21-2-39
cvs
parents:
diff changeset
35 static int
3078fd1074e8 Import from CVS: tag r21-2-39
cvs
parents:
diff changeset
36 download_one (char *name, int expected_size)
3078fd1074e8 Import from CVS: tag r21-2-39
cvs
parents:
diff changeset
37 {
3078fd1074e8 Import from CVS: tag r21-2-39
cvs
parents:
diff changeset
38 char *local = name;
3078fd1074e8 Import from CVS: tag r21-2-39
cvs
parents:
diff changeset
39
3078fd1074e8 Import from CVS: tag r21-2-39
cvs
parents:
diff changeset
40 struct stat s;
3078fd1074e8 Import from CVS: tag r21-2-39
cvs
parents:
diff changeset
41 if (stat (local, &s) >= 0)
3078fd1074e8 Import from CVS: tag r21-2-39
cvs
parents:
diff changeset
42 if (s.st_size == expected_size)
3078fd1074e8 Import from CVS: tag r21-2-39
cvs
parents:
diff changeset
43 return 0;
3078fd1074e8 Import from CVS: tag r21-2-39
cvs
parents:
diff changeset
44
3078fd1074e8 Import from CVS: tag r21-2-39
cvs
parents:
diff changeset
45 mkdir_p (0, local);
3078fd1074e8 Import from CVS: tag r21-2-39
cvs
parents:
diff changeset
46
3078fd1074e8 Import from CVS: tag r21-2-39
cvs
parents:
diff changeset
47 if (get_url_to_file (concat (MIRROR_SITE, "/", name, 0),
3078fd1074e8 Import from CVS: tag r21-2-39
cvs
parents:
diff changeset
48 concat (local, ".tmp", 0),
3078fd1074e8 Import from CVS: tag r21-2-39
cvs
parents:
diff changeset
49 expected_size))
3078fd1074e8 Import from CVS: tag r21-2-39
cvs
parents:
diff changeset
50 {
3078fd1074e8 Import from CVS: tag r21-2-39
cvs
parents:
diff changeset
51 note (IDS_DOWNLOAD_FAILED, name);
3078fd1074e8 Import from CVS: tag r21-2-39
cvs
parents:
diff changeset
52 return 1;
3078fd1074e8 Import from CVS: tag r21-2-39
cvs
parents:
diff changeset
53 }
3078fd1074e8 Import from CVS: tag r21-2-39
cvs
parents:
diff changeset
54 else
3078fd1074e8 Import from CVS: tag r21-2-39
cvs
parents:
diff changeset
55 {
3078fd1074e8 Import from CVS: tag r21-2-39
cvs
parents:
diff changeset
56 stat (concat (local, ".tmp", 0), &s);
3078fd1074e8 Import from CVS: tag r21-2-39
cvs
parents:
diff changeset
57 if (s.st_size == expected_size)
3078fd1074e8 Import from CVS: tag r21-2-39
cvs
parents:
diff changeset
58 {
3078fd1074e8 Import from CVS: tag r21-2-39
cvs
parents:
diff changeset
59 log (0, "Downloaded %s", local);
3078fd1074e8 Import from CVS: tag r21-2-39
cvs
parents:
diff changeset
60 rename (concat (local, ".tmp", 0), local);
3078fd1074e8 Import from CVS: tag r21-2-39
cvs
parents:
diff changeset
61 }
3078fd1074e8 Import from CVS: tag r21-2-39
cvs
parents:
diff changeset
62 else
3078fd1074e8 Import from CVS: tag r21-2-39
cvs
parents:
diff changeset
63 {
3078fd1074e8 Import from CVS: tag r21-2-39
cvs
parents:
diff changeset
64 log (0, "Download %s wrong size (%d actual vs %d expected)",
3078fd1074e8 Import from CVS: tag r21-2-39
cvs
parents:
diff changeset
65 local, s.st_size, expected_size);
3078fd1074e8 Import from CVS: tag r21-2-39
cvs
parents:
diff changeset
66 note (IDS_DOWNLOAD_SHORT, local, s.st_size, expected_size);
3078fd1074e8 Import from CVS: tag r21-2-39
cvs
parents:
diff changeset
67 return 1;
3078fd1074e8 Import from CVS: tag r21-2-39
cvs
parents:
diff changeset
68 }
3078fd1074e8 Import from CVS: tag r21-2-39
cvs
parents:
diff changeset
69 }
3078fd1074e8 Import from CVS: tag r21-2-39
cvs
parents:
diff changeset
70
3078fd1074e8 Import from CVS: tag r21-2-39
cvs
parents:
diff changeset
71 return 0;
3078fd1074e8 Import from CVS: tag r21-2-39
cvs
parents:
diff changeset
72 }
3078fd1074e8 Import from CVS: tag r21-2-39
cvs
parents:
diff changeset
73
3078fd1074e8 Import from CVS: tag r21-2-39
cvs
parents:
diff changeset
74 void
3078fd1074e8 Import from CVS: tag r21-2-39
cvs
parents:
diff changeset
75 do_download (HINSTANCE h)
3078fd1074e8 Import from CVS: tag r21-2-39
cvs
parents:
diff changeset
76 {
3078fd1074e8 Import from CVS: tag r21-2-39
cvs
parents:
diff changeset
77 int i;
3078fd1074e8 Import from CVS: tag r21-2-39
cvs
parents:
diff changeset
78 int errors = 0;
3078fd1074e8 Import from CVS: tag r21-2-39
cvs
parents:
diff changeset
79
3078fd1074e8 Import from CVS: tag r21-2-39
cvs
parents:
diff changeset
80 for (i=0; i<npackages; i++)
3078fd1074e8 Import from CVS: tag r21-2-39
cvs
parents:
diff changeset
81 if (package[i].action == ACTION_NEW || package[i].action == ACTION_UPGRADE)
3078fd1074e8 Import from CVS: tag r21-2-39
cvs
parents:
diff changeset
82 {
3078fd1074e8 Import from CVS: tag r21-2-39
cvs
parents:
diff changeset
83 int e = download_one (pi.install, pi.install_size);
3078fd1074e8 Import from CVS: tag r21-2-39
cvs
parents:
diff changeset
84 if (package[i].srcaction == SRCACTION_YES && pi.source)
3078fd1074e8 Import from CVS: tag r21-2-39
cvs
parents:
diff changeset
85 e += download_one (pi.source, pi.source_size);
3078fd1074e8 Import from CVS: tag r21-2-39
cvs
parents:
diff changeset
86 errors += e;
3078fd1074e8 Import from CVS: tag r21-2-39
cvs
parents:
diff changeset
87 if (e)
3078fd1074e8 Import from CVS: tag r21-2-39
cvs
parents:
diff changeset
88 package[i].action = ACTION_ERROR;
3078fd1074e8 Import from CVS: tag r21-2-39
cvs
parents:
diff changeset
89 }
3078fd1074e8 Import from CVS: tag r21-2-39
cvs
parents:
diff changeset
90
3078fd1074e8 Import from CVS: tag r21-2-39
cvs
parents:
diff changeset
91 dismiss_url_status_dialog ();
3078fd1074e8 Import from CVS: tag r21-2-39
cvs
parents:
diff changeset
92
3078fd1074e8 Import from CVS: tag r21-2-39
cvs
parents:
diff changeset
93 if (errors)
3078fd1074e8 Import from CVS: tag r21-2-39
cvs
parents:
diff changeset
94 {
3078fd1074e8 Import from CVS: tag r21-2-39
cvs
parents:
diff changeset
95 if (yesno (IDS_DOWNLOAD_INCOMPLETE) == IDYES)
3078fd1074e8 Import from CVS: tag r21-2-39
cvs
parents:
diff changeset
96 {
3078fd1074e8 Import from CVS: tag r21-2-39
cvs
parents:
diff changeset
97 next_dialog = IDD_SITE;
3078fd1074e8 Import from CVS: tag r21-2-39
cvs
parents:
diff changeset
98 return;
3078fd1074e8 Import from CVS: tag r21-2-39
cvs
parents:
diff changeset
99 }
3078fd1074e8 Import from CVS: tag r21-2-39
cvs
parents:
diff changeset
100 }
3078fd1074e8 Import from CVS: tag r21-2-39
cvs
parents:
diff changeset
101
3078fd1074e8 Import from CVS: tag r21-2-39
cvs
parents:
diff changeset
102 if (source == IDC_SOURCE_DOWNLOAD)
3078fd1074e8 Import from CVS: tag r21-2-39
cvs
parents:
diff changeset
103 {
3078fd1074e8 Import from CVS: tag r21-2-39
cvs
parents:
diff changeset
104 if (errors)
3078fd1074e8 Import from CVS: tag r21-2-39
cvs
parents:
diff changeset
105 exit_msg = IDS_DOWNLOAD_INCOMPLETE;
3078fd1074e8 Import from CVS: tag r21-2-39
cvs
parents:
diff changeset
106 else
3078fd1074e8 Import from CVS: tag r21-2-39
cvs
parents:
diff changeset
107 exit_msg = IDS_DOWNLOAD_COMPLETE;
3078fd1074e8 Import from CVS: tag r21-2-39
cvs
parents:
diff changeset
108 next_dialog = 0;
3078fd1074e8 Import from CVS: tag r21-2-39
cvs
parents:
diff changeset
109 }
3078fd1074e8 Import from CVS: tag r21-2-39
cvs
parents:
diff changeset
110 else
3078fd1074e8 Import from CVS: tag r21-2-39
cvs
parents:
diff changeset
111 next_dialog = IDD_S_INSTALL;
3078fd1074e8 Import from CVS: tag r21-2-39
cvs
parents:
diff changeset
112 }