Hi Matthew, Matthew White <[email protected]> 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? Thanks, Giuseppe
