- hdaps->device_name = g_strdup(DEFAULT_DEVICE_NAME);
- snprintf(hdaps->sysfs_file, FILENAME_MAX, UNLOAD_HEADS_FMT, hdaps->device_name);
+
+ /* Here we determine the default device name. There are essentially
+ two "defaults," one soft, and the other hard. The soft default
+ is to choose the first supported HDAPS device in the system. This
+ would benefit users who, for example, only have one supported drive
+ named hda. If we can't find any supported HDAPS devices, we use the
+ hard default of DEFAULT_DEVICE_NAME. */
+ char hdaps_devices[MAX_HDAPS_DEVICES][FILENAME_MAX];
+ int found_devices = get_hdaps_device_list(hdaps_devices);
+
+ if (found_devices > 0) {
+ hdaps->device_name = g_strdup(hdaps_devices[0]);
+ }
+ else {
+ hdaps->device_name = g_strdup(DEFAULT_DEVICE_NAME);
+ }
+
+ snprintf(hdaps->sysfs_file,
+ FILENAME_MAX,
+ UNLOAD_HEADS_FMT,
+ hdaps->device_name);
+
+ /* The other default is easier. */