If we request a /dev/dsp virtual_oss(8) device, we have to replace the
sound(4) one by first disabling hw.snd.basename_clone. This sysctl
tells sound(4) to not create the /dev/dsp alias for the default device.
There are currently two issues with the way this is handled by
virtual_oss(8), however:
- It uses system(3) instead of sysctlbyname(3).
- It does not restore hw.snd.basename_clone to its original value, so if prior to virtual_oss(8) running, hw.snd.basename_clone was enabled (which is the case by default), and it is closed at some point, hw.snd.basename_clone stays disabled, which is annoying, because users have to manually restore it, otherwise applications that open the default device (i.e., most) will not work.
Fix both issues.