bug-wget
[Top][All Lists]
Advanced

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

Re: [Bug-wget] [PATCH 20/25] New option --metalink-index to process Meta


From: Matthew White
Subject: Re: [Bug-wget] [PATCH 20/25] New option --metalink-index to process Metalink application/metalink4+xml
Date: Thu, 15 Sep 2016 16:16:44 +0200

On Thu, 15 Sep 2016 09:11:31 +0200
Giuseppe Scrivano <address@hidden> wrote:

> Hi Matthew,
> 
> Matthew White <address@hidden> writes:
> 
> >> > Function amended to modify *name in place.
> >> >
> >> > Followed Tim's suggestions for Patch 09/25 about different environments 
> >> > compatibility, the function now uses last_component() to detect the 
> >> > basename:
> >> > http://lists.gnu.org/archive/html/bug-wget/2016-09/msg00083.html
> >> >
> >> > NOTES: if *name is NULL and ref is like 'dir/C:D:file', the result will 
> >> > be 'C:D:file'; is it advisable to remove the drive letters 'C:D:' and 
> >> > return only 'file'?
> >> >
> >> > /*
> >> >   Replace/remove the basename of a file name.
> >> >
> >> >   The file name is permanently modified.
> >> >
> >> >   Always set NAME to a string, even an empty one.
> >> >
> >> >   Use REF's basename as replacement.  If REF is NULL or if it doesn't
> >> >   provide a valid basename candidate, then remove NAME's basename.
> >> > */
> >> > void
> >> > replace_metalink_basename (char **name, char *ref)
> >> > {
> >> 
> >> is it something we could do using only dirname and basename?  What you
> >> need here is "dirname(name) + basename(ref)"?
> >
> > You asked to avoid superfluous memory allocations, right?
> 
> yes, and that is still my idea.  I was just wondering if the cost of
> these extra memory allocations was worth.  Is it enough to use
> last_component() to get it working on Windows?

Extra memory allocations shouldn't be a concern any longer, they are removed in 
the amended function definition previously posted:
http://lists.gnu.org/archive/html/bug-wget/2016-09/msg00094.html

About base_name() and last_component() multi-environment compatibility: 
* lib/basename.c (base_name): Call last_component() to find the basename, 
allocate the basename (prefix with './' if required)
* lib/basename-lgpl.c (last_component): Use the macros FILE_SYSTEM_PREFIX_LEN 
and ISSLASH to isolate the basename
* lib/dosname.h: Define the macros FILE_SYSTEM_PREFIX_LEN and ISSLASH to work 
on different system environments

Forgive this copy and paste, but my question about replace_metalink_basename() 
is "if *name is NULL and ref is like 'dir/C:D:file', the result will be 
'C:D:file'; is it advisable to remove the drive letters 'C:D:' and return only 
'file'?".

PS: I'm currently working to create a common python class for the Metalink 
tests (testenv), see Patch 01/25 
http://lists.gnu.org/archive/html/bug-wget/2016-09/msg00085.html .

> 
> Thanks,
> Giuseppe

Regards,
Matthew

-- 
Matthew White <address@hidden>

Attachment: pgpth2VueZqOk.pgp
Description: PGP signature


reply via email to

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