disklabel = ANY_LABEL;
memset(MBRbuffer, 0, 512);
- if (!try_only) {
+ if (try_only && (fd = open(disk_device, O_RDONLY)) < 0) {
+ fprintf(stderr, _("Cannot open %s\n"), disk_device);
+ fatal(unable_to_open);
+ }
+ else {
if ((fd = open(disk_device, O_RDWR)) < 0) {
+ /* ok, can we read-only the device? */
if ((fd = open(disk_device, O_RDONLY)) < 0)
fatal(unable_to_open);
else
printf(_("You will not be able to write "
- "the partition table.\n"));
+ "the partition table.\n"));
}
}
}
get_geometry(fd, NULL);
-
update_units();
if (!check_dos_label())
if (setjmp(listingbuf))
return;
gpt_warning(device);
- if ((fd = open(disk_device, O_RDONLY)) >= 0) {
- gb = get_boot(1);
- if (gb > 0) { /* I/O error */
- } else if (gb < 0) { /* no DOS signature */
- list_disk_geometry();
- if (disklabel != AIX_LABEL && disklabel != MAC_LABEL)
- btrydev(device);
- } else {
- list_table(0);
- }
- close(fd);
- } else {
- /* Ignore other errors, since we try IDE
- and SCSI hard disks which may not be
- installed on the system. */
- if (errno == EACCES) {
- fprintf(stderr, _("Cannot open %s\n"), device);
- return;
- }
- }
+ gb = get_boot(1);
+ if (gb < 0) { /* no DOS signature */
+ list_disk_geometry();
+ if (disklabel != AIX_LABEL && disklabel != MAC_LABEL)
+ btrydev(device);
+ }
+ else if (!gb)
+ list_table(0);
+ close(fd);
}
/*