This functon has inherent safety issues, since a long enough path can
lead to memory clobbering. Due to the recursive nature of
make_directories(), multiple calls could also stack overflow. Instead,
the string can be allocated in the heap.
As a bonus, this improves musl compatibility, since musl doesn't include
the strndupa macro for now.