summaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
Diffstat (limited to 'src')
-rw-r--r--src/xine-utils/xine_check.c30
1 files changed, 22 insertions, 8 deletions
diff --git a/src/xine-utils/xine_check.c b/src/xine-utils/xine_check.c
index 91fb40186..14fb424ac 100644
--- a/src/xine-utils/xine_check.c
+++ b/src/xine-utils/xine_check.c
@@ -220,10 +220,17 @@ xine_health_check_t* _x_health_check_cdrom (xine_health_check_t* hc) {
}
if ( (fd = open(hc->cdrom_dev, O_RDWR)) < 0) {
- set_hc_result (hc, XINE_HEALTH_CHECK_FAIL, "FAILED - %s permissions are not sufficient\n.", hc->cdrom_dev);
- return hc;
- }
- close(fd);
+ switch (errno) {
+ case EACCES:
+ set_hc_result (hc, XINE_HEALTH_CHECK_FAIL, "FAILED - %s permissions are not sufficient\n.", hc->cdrom_dev);
+ return hc;
+ case ENXIO:
+ case ENODEV:
+ set_hc_result (hc, XINE_HEALTH_CHECK_FAIL, "FAILED - there is no device behind %s\n.", hc->cdrom_dev);
+ return hc;
+ }
+ } else
+ close(fd);
hc->status = XINE_HEALTH_CHECK_OK;
return hc;
@@ -249,10 +256,17 @@ xine_health_check_t* _x_health_check_dvdrom(xine_health_check_t* hc) {
}
if ( (fd = open(hc->dvd_dev, O_RDWR)) < 0) {
- set_hc_result (hc, XINE_HEALTH_CHECK_FAIL, "FAILED - %s permissions are not sufficient\n.", hc->cdrom_dev);
- return hc;
- }
- close(fd);
+ switch (errno) {
+ case EACCES:
+ set_hc_result (hc, XINE_HEALTH_CHECK_FAIL, "FAILED - %s permissions are not sufficient\n.", hc->dvd_dev);
+ return hc;
+ case ENXIO:
+ case ENODEV:
+ set_hc_result (hc, XINE_HEALTH_CHECK_FAIL, "FAILED - there is no device behind %s\n.", hc->dvd_dev);
+ return hc;
+ }
+ } else
+ close(fd);
hc->status = XINE_HEALTH_CHECK_OK;
return hc;