From 97abb9f63eb8fd2fbd5fbc9fabdbeccf37d59f5a Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?Tim Rühsen?=
Date: Fri, 19 Dec 2014 16:07:38 +0100
Subject: [PATCH] gnulib: Use basename() from gnulib module 'dirname'
Avoid basename incompatibilities between POSIX and GNU implementations.
Also, libgen.h isn't needed any more which increases compatibility.
---
bootstrap.conf | 1 +
src/main.c | 7 ++-----
src/warc.c | 16 +++-------------
3 files changed, 6 insertions(+), 18 deletions(-)
diff --git a/bootstrap.conf b/bootstrap.conf
index 211f0ad..8d45475 100644
--- a/bootstrap.conf
+++ b/bootstrap.conf
@@ -36,6 +36,7 @@ c-strcasestr
clock-time
close
connect
+dirname
fcntl
fnmatch
futimens
diff --git a/src/main.c b/src/main.c
index f511258..608a20c 100644
--- a/src/main.c
+++ b/src/main.c
@@ -56,6 +56,7 @@ as that of the covered work. */
#include "warc.h"
#include "version.h"
#include "c-strcase.h"
+#include "dirname.h"
#include
#include
#include
@@ -1033,11 +1034,7 @@ main (int argc, char **argv)
/* On VMS, lose the "dev:[dir]" prefix and the ".EXE;nnn" suffix. */
exec_name = vms_basename (argv[0]);
#else /* def __VMS */
- exec_name = strrchr (argv[0], PATH_SEPARATOR);
- if (!exec_name)
- exec_name = argv[0];
- else
- ++exec_name;
+ exec_name = basename (argv[0]);
#endif /* def __VMS [else] */
#ifdef WINDOWS
diff --git a/src/warc.c b/src/warc.c
index 4959836..ef87f46 100644
--- a/src/warc.c
+++ b/src/warc.c
@@ -35,6 +35,7 @@ as that of the covered work. */
#include "hash.h"
#include "utils.h"
#include "version.h"
+#include "dirname.h"
#include
#include
@@ -54,12 +55,6 @@ as that of the covered work. */
#include
#endif
-#ifndef WINDOWS
-#include
-#else
-#include
-#endif
-
#include "warc.h"
#include "exits.h"
@@ -671,7 +666,7 @@ warc_write_warcinfo_record (char *filename)
{
FILE *warc_tmp;
char timestamp[22];
- char *filename_copy, *filename_basename;
+ char *filename_basename;
/* Write warc-info record as the first record of the file. */
/* We add the record id of this info record to the other records in the
@@ -681,8 +676,7 @@ warc_write_warcinfo_record (char *filename)
warc_timestamp (timestamp, sizeof(timestamp));
- filename_copy = strdup (filename);
- filename_basename = strdup (basename (filename_copy));
+ filename_basename = basename (filename);
warc_write_start_record ();
warc_write_header ("WARC-Type", "warcinfo");
@@ -695,8 +689,6 @@ warc_write_warcinfo_record (char *filename)
warc_tmp = warc_tempfile ();
if (warc_tmp == NULL)
{
- xfree (filename_copy);
- xfree (filename_basename);
return false;
}
@@ -722,8 +714,6 @@ warc_write_warcinfo_record (char *filename)
if (! warc_write_ok)
logprintf (LOG_NOTQUIET, _("Error writing warcinfo record to WARC file.\n"));
- xfree (filename_copy);
- xfree (filename_basename);
fclose (warc_tmp);
return warc_write_ok;
}
--
2.1.3