this is more reliable. there is a difference between glibc and musl errno if /etc/tcb/<name>/shadow doesn't exist.