updated: [54d6ec8] replaced buggy concat_dir_and_file() by mhl_str_dir_plus_file()
Andrew Borodin
aborodin at vmail.ru
Sun Feb 1 06:21:16 UTC 2009
On Sat, 31 Jan 2009 18:17:03 +0100 (CET) "Enrico Weigelt, metux IT service" wrote:
> +static inline char* mhl_str_dir_plus_file(const char* dirname, const char* filename)
> +{
> + /* make sure we have valid strings */
> + if (!dirname)
> + dirname="";
> +
> + if (!filename)
> + filename="";
> +
> + /* skip leading slashes on filename */
> + while (*filename == '/')
> + filename++;
> +
> + /* skip trailing slashes on dirname */
> + int dnlen = strlen(dirname);
> + while (dnlen && (dirname[dnlen-1]=='/'))
> + dnlen--;
> +
> + int fnlen = strlen(filename);
> + char* buffer = mhl_mem_alloc_z(dnlen+fnlen+2); /* enough space for dirname, /, filename, zero */
> + char* ptr = buffer;
> +
> + memcpy(ptr, dirname, dnlen);
> + ptr+=dnlen;
> + *ptr = '/';
> + ptr++;
> + memcpy(ptr, filename, fnlen);
> + ptr+=fnlen;
> + *ptr = 0;
> +
> + return buffer;
> +}
> +
> #endif /* __MHL_STRING_H */
strlen() returns a value of type size_t, not int!
--
Regards,
Andrew.
More information about the mc-devel
mailing list