grub-devel
[Top][All Lists]
Advanced

[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);
 }

reply via email to

[Prev in Thread] Current Thread [Next in Thread]