Noticed while looking at the same version in rsync. free() may clobber errno so better save the value before calling free(). Also update the comment, remove all those arguments I removed :)
-- :wq Claudio Index: mkdir.c =================================================================== RCS file: /cvs/src/usr.sbin/rpki-client/mkdir.c,v retrieving revision 1.6 diff -u -p -r1.6 mkdir.c --- mkdir.c 29 Mar 2021 04:01:17 -0000 1.6 +++ mkdir.c 6 May 2021 16:41:16 -0000 @@ -39,15 +39,13 @@ /* * mkpath -- create directories. - * path - path - * mode - file mode of terminal directory - * dir_mode - file mode of intermediate directories + * dir - path to create directories for */ int mkpath(const char *dir) { char *path, *slash; - int done; + int done, save_errno; if ((path = strdup(dir)) == NULL) return -1; @@ -61,7 +59,9 @@ mkpath(const char *dir) *slash = '\0'; if (mkdir(path, 0755) == -1 && errno != EEXIST) { + save_errno = errno; free(path); + errno = save_errno; return -1; }