"Joachim Schmitz" <j...@schmitz-digital.de> writes:

>> Nice.  And we have xmemdupz() would be even better as you followed-up.
>
> How's that one used?

I forgot that we frown upon use of any x<allocate>() wrapper in the
compat/ layer as J6t mentioned.

So probably something along these lines...

        int retval;
        char *dir_to_free = NULL;
        size_t len = strlen(dir);

        if (len && dir[len - 1] == '/') {
                dir_to_free = malloc(len);
                if (!dir_to_free) {
                        fprintf(stderr, "malloc failed!\n");
                        exit(1);
                }
                memcpy(dir_to_free, dir, len - 1);
                dir_to_free[len - 1] = '\0';
                dir = dir_to_free;
        }                
        retval = mkdir(dir, mode);
        free(dir_to_free);
        return retval;

It might be possible to for the error path to get away with
something like:

        if (!dir_to_free)
                return -1;

if we know the callers are prepared to see mkdir() failing with
ENOMEM, but that is not very likely.

--
To unsubscribe from this list: send the line "unsubscribe git" in
the body of a message to majord...@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html

Reply via email to