bug-wget
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: [Bug-wget] [PATCH] MinGW compatibility fixes


From: Giuseppe Scrivano
Subject: Re: [Bug-wget] [PATCH] MinGW compatibility fixes
Date: Sun, 16 Jun 2013 23:01:58 +0200
User-agent: Gnus/5.13 (Gnus v5.13) Emacs/24.2 (gnu/linux)

Tim Rühsen <address@hidden> writes:

> Some people stumbled upon the _PC_NAME_MAX stuff when compiling for Windows.
> Just search the last 2 months for '_PC_NAME_MAX'.

Thanks.  I have cherry-picked this part of the change into master, I
have pushed this patch, it is a subset of the patch that was originally
sent for parallel-wget:

>From 9d35f8721839931ebd3cec9721dca03267764463 Mon Sep 17 00:00:00 2001
From: Ray Satiro <address@hidden>
Date: Tue, 21 May 2013 18:06:25 -0400
Subject: [PATCH] MinGW compatibility fixes

---
 src/ChangeLog |  4 ++++
 src/url.c     | 19 +++++++++++++++++++
 2 files changed, 23 insertions(+)

diff --git a/src/ChangeLog b/src/ChangeLog
index f609698..4021d9c 100644
--- a/src/ChangeLog
+++ b/src/ChangeLog
@@ -1,3 +1,7 @@
+2013-05-21  Ray Satiro  <address@hidden>
+
+       * url.c (url_file_name): Use MAX_PATH in Windows.
+
 2013-06-13  Darshit Shah  <address@hidden>
 
        * http.c (gethttp): Follow RFC 2616 and httpbis specifications when
diff --git a/src/url.c b/src/url.c
index 87d6290..5e2b9a3 100644
--- a/src/url.c
+++ b/src/url.c
@@ -1617,7 +1617,26 @@ url_file_name (const struct url *u, char 
*replaced_filename)
   append_char ('\0', &temp_fnres);
 
   /* Check that the length of the file name is acceptable. */
+#ifdef WINDOWS
+  if (MAX_PATH > (fnres.tail + CHOMP_BUFFER + 2))
+    {
+      max_length = MAX_PATH - (fnres.tail + CHOMP_BUFFER + 2);
+      /* FIXME: In Windows a filename is usually limited to 255 characters.
+      To really be accurate you could call GetVolumeInformation() to get
+      lpMaximumComponentLength
+      */
+      if (max_length > 255)
+        {
+          max_length = 255;
+        }
+    }
+  else
+    {
+      max_length = 0;
+    }
+#else
   max_length = get_max_length (fnres.base, fnres.tail, _PC_NAME_MAX) - 
CHOMP_BUFFER;
+#endif
   if (max_length > 0 && strlen (temp_fnres.base) > max_length)
     {
       logprintf (LOG_NOTQUIET, "The name is too long, %lu chars total.\n",
-- 
1.8.1.4

--
Giuseppe



reply via email to

[Prev in Thread] Current Thread [Next in Thread]