summaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authorMichael Roitzsch <mroi@users.sourceforge.net>2004-07-04 21:01:26 +0000
committerMichael Roitzsch <mroi@users.sourceforge.net>2004-07-04 21:01:26 +0000
commit3be3b0be12c8055109cdfbf69789a35b5bfb68dd (patch)
tree5a6ac4cfba536e1753a5afb93e8c29a4bac00e6f /src
parentde4c0681883e71922f98a05f6fc34e8717a82597 (diff)
downloadxine-lib-3be3b0be12c8055109cdfbf69789a35b5bfb68dd.tar.gz
xine-lib-3be3b0be12c8055109cdfbf69789a35b5bfb68dd.tar.bz2
better error checking when testing cdrom and dvd devices, not being able
to open the device does not mean it's not accessible, there might just be no disk inside (closes bug #984594) CVS patchset: 6768 CVS date: 2004/07/04 21:01:26
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;