[Top][All Lists]
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[PATCH] mkdevicemap for Cygwin
From: |
Christian Franke |
Subject: |
[PATCH] mkdevicemap for Cygwin |
Date: |
Tue, 13 Nov 2007 21:42:26 +0100 |
User-agent: |
Mozilla/5.0 (Windows; U; Windows NT 5.1; en-US; rv:1.8.1.6) Gecko/20070802 SeaMonkey/1.1.4 |
Some changes for grub-mkdevicemap on Cygwin.
Christian
2007-11-13 Christian Franke <address@hidden>
* util/grub-mkdevicemap.c (get_floppy_disk_name): Add Cygwin
device names.
(get_ide_disk_name): Disable on __CYGWIN__.
(get_scsi_disk_name): Add Cygwin device names.
(check_device): Add static.
Return error instead of success on empty string.
(make_device_map): Disable IDE loop on __CYGWIN__.
Move label inside linux specific code to prevent compiler warning.
--- grub2.orig/util/grub-mkdevicemap.c 2007-08-28 12:18:10.000000000 +0200
+++ grub2/util/grub-mkdevicemap.c 2007-11-13 21:27:18.265625000 +0100
@@ -166,6 +166,9 @@ get_floppy_disk_name (char *name, int un
#elif defined(__QNXNTO__)
/* QNX RTP */
sprintf (name, "/dev/fd%d", unit);
+#elif defined(__CYGWIN__)
+ /* Cygwin */
+ sprintf (name, "/dev/fd%d", unit);
#else
# warning "BIOS floppy drives cannot be guessed in your operating system."
/* Set NAME to a bogus string. */
@@ -173,6 +176,7 @@ get_floppy_disk_name (char *name, int un
#endif
}
+#ifndef __CYGWIN__
static void
get_ide_disk_name (char *name, int unit)
{
@@ -213,6 +217,7 @@ get_ide_disk_name (char *name, int unit)
*name = 0;
#endif
}
+#endif /* __CYGWIN__ */
static void
get_scsi_disk_name (char *name, int unit)
@@ -248,6 +253,9 @@ get_scsi_disk_name (char *name, int unit
/* QNX RTP doesn't distinguish SCSI from IDE, so it is better to
disable the detection of SCSI disks here. */
*name = 0;
+#elif defined(__CYGWIN__)
+ /* Cygwin emulates all disks as /dev/sdX. */
+ sprintf (name, "/dev/sd%c", unit + 'a');
#else
# warning "BIOS SCSI drives cannot be guessed in your operating system."
/* Set NAME to a bogus string. */
@@ -277,16 +285,16 @@ get_i2o_disk_name (char *name, char unit
/* Check if DEVICE can be read. If an error occurs, return zero,
otherwise return non-zero. */
-int
+static int
check_device (const char *device)
{
char buf[512];
FILE *fp;
- /* If DEVICE is empty, just return 1. */
+ /* If DEVICE is empty, just return error. */
if (*device == 0)
- return 1;
-
+ return 0;
+
fp = fopen (device, "r");
if (! fp)
{
@@ -415,7 +423,8 @@ make_device_map (const char *device_map,
goto finish;
}
#endif /* __linux__ */
-
+
+#ifndef __CYGWIN__
/* IDE disks. */
for (i = 0; i < 8; i++)
{
@@ -431,6 +440,7 @@ make_device_map (const char *device_map,
num_hd++;
}
}
+#endif /* __CYGWIN__ */
#ifdef __linux__
/* ATARAID disks. */
@@ -513,9 +523,10 @@ make_device_map (const char *device_map,
}
}
}
-#endif /* __linux__ */
finish:
+#endif /* __linux__ */
+
if (fp != stdout)
fclose (fp);
}
- [PATCH] mkdevicemap for Cygwin,
Christian Franke <=