version 1.11, 1998/07/09 20:10:26 |
version 1.12, 1998/12/20 23:53:35 |
|
|
char *dev; |
char *dev; |
{ |
{ |
char *realdev; |
char *realdev; |
|
int tries; |
|
|
if (fd > -1) |
if (fd > -1) |
return (1); |
return (1); |
|
|
fd = opendev(dev, O_RDONLY, OPENDEV_PART, &realdev); |
for (tries = 0; fd < 0 && tries < 10; tries++) { |
if (fd < 0) { |
fd = opendev(dev, O_RDONLY, OPENDEV_PART, &realdev); |
if ((errno == ENXIO) || (errno == EIO)) { |
if (fd < 0) { |
/* ENXIO has an overloaded meaning here. |
if (errno == ENXIO) { |
* The original "Device not configured" should |
/* ENXIO has an overloaded meaning here. |
* be interpreted as "No disc in drive %s". */ |
* The original "Device not configured" should |
warnx ("No disc in drive %s.", realdev); |
* be interpreted as "No disc in drive %s". */ |
return (0); |
warnx ("No disc in drive %s.", realdev); |
|
return (0); |
|
} else if (errno != EIO) { |
|
/* EIO may simply mean the device is not ready |
|
* yet which is common with CD changers. */ |
|
warn ("Can't open %s", realdev); |
|
return (0); |
|
} |
} |
} |
|
sleep (1); |
|
} |
|
if (fd < 0) { |
warn ("Can't open %s", realdev); |
warn ("Can't open %s", realdev); |
return (0); |
return (0); |
} |
} |