/* Conversion of links to local files.
- Copyright (C) 2003, 2004, 2005, 2006, 2007 Free Software Foundation, Inc.
+ Copyright (C) 2003, 2004, 2005, 2006, 2007,
+ 2008 Free Software Foundation, Inc.
This file is part of GNU Wget.
You should have received a copy of the GNU General Public License
along with Wget. If not, see <http://www.gnu.org/licenses/>.
-In addition, as a special exception, the Free Software Foundation
-gives permission to link the code of its release of Wget with the
-OpenSSL project's "OpenSSL" library (or with modified versions of it
-that use the same license as the "OpenSSL" library), and distribute
-the linked executables. You must obey the GNU General Public License
-in all respects for all of the code used other than "OpenSSL". If you
-modify this file, you may extend this exception to your version of the
-file, but you are not obligated to do so. If you do not wish to do
-so, delete this exception statement from your version. */
+Additional permission under GNU GPL version 3 section 7
-#include <config.h>
+If you modify this program, or any covered work, by linking or
+combining it with the OpenSSL project's OpenSSL library (or a
+modified version of that library), containing parts covered by the
+terms of the OpenSSL or SSLeay licenses, the Free Software Foundation
+grants you additional permission to convey the resulting work.
+Corresponding Source for a non-source form of such a combination
+shall include the source code for the parts of OpenSSL used as well
+as that of the covered work. */
+
+#define USE_GNULIB_ALLOC
+
+#include "wget.h"
#include <stdio.h>
#include <stdlib.h>
#endif /* HAVE_UNISTD_H */
#include <errno.h>
#include <assert.h>
-
-#include "wget.h"
#include "convert.h"
#include "url.h"
#include "recur.h"
if (downloaded_html_set)
cnt = hash_table_count (downloaded_html_set);
if (cnt == 0)
- return;
- file_array = alloca_array (char *, cnt);
+ goto cleanup;
+ file_array = xcalloc (cnt, sizeof (char *));
string_set_to_array (downloaded_html_set, file_array);
for (i = 0; i < cnt; i++)
}
secs = ptimer_measure (timer);
- ptimer_destroy (timer);
logprintf (LOG_VERBOSE, _("Converted %d files in %s seconds.\n"),
file_count, print_decimal (secs));
+cleanup:
+ ptimer_destroy (timer);
}
static void write_backup_file (const char *, downloaded_file_t);
zeroes from the mmaped region. */
if (unlink (file) < 0 && errno != ENOENT)
{
- logprintf (LOG_NOTQUIET, _("Unable to delete `%s': %s\n"),
- file, strerror (errno));
+ logprintf (LOG_NOTQUIET, _("Unable to delete %s: %s\n"),
+ quote (file), strerror (errno));
read_file_free (fm);
return;
}
DEBUGP (("TO_RELATIVE: %s to %s at position %d in %s.\n",
link->url->url, newname, link->pos, file));
- xfree (newname);
- xfree (quoted_newname);
+ free (newname);
+ free (quoted_newname);
++to_file_count;
break;
}
DEBUGP (("TO_COMPLETE: <something> to %s at position %d in %s.\n",
newlink, link->pos, file));
- xfree (quoted_newlink);
+ free (quoted_newlink);
++to_url_count;
break;
}
if (0 == strcmp (mapping_file, file))
{
hash_table_remove (dl_url_file_map, mapping_url);
- xfree (mapping_url);
- xfree (mapping_file);
+ free (mapping_url);
+ free (mapping_file);
}
/* Continue mapping. */
goto url_only;
hash_table_remove (dl_file_url_map, file);
- xfree (old_file);
- xfree (old_url);
+ free (old_file);
+ free (old_url);
/* Remove all the URLs that point to this file. Yes, there can
be more than one such URL, because we store redirections as
if (hash_table_get_pair (dl_url_file_map, url, &old_url, &old_file))
{
hash_table_remove (dl_url_file_map, url);
- xfree (old_url);
- xfree (old_file);
+ free (old_url);
+ free (old_file);
}
hash_table_put (dl_url_file_map, xstrdup (url), xstrdup (file));
return;
hash_table_remove (dl_file_url_map, file);
- xfree (old_file);
- xfree (old_url);
+ free (old_file);
+ free (old_url);
dissociate_urls_from_file (file);
}
for (hash_table_iterate (downloaded_files_hash, &iter);
hash_table_iter_next (&iter);
)
- xfree (iter.key);
+ free (iter.key);
hash_table_destroy (downloaded_files_hash);
downloaded_files_hash = NULL;
}