Hi there, Any comments on this patch? I sent it a week ago but haven't recieved any response..
On Tue, Jul 22, 2003 at 06:57:25PM +0000, Robert Millan wrote: > > Hi! > > I made a patch with some *BSD related fixes: > > - Add compatibility for non-BSD systems using *BSD kernels (such as > GNU/FreeBSD). These don't define __*BSD__, but do define __*BSD_kernel__, > so i added compatibility defines in lib/device.c and then switch > from __*BSD__ to __*BSD_kernel__ (see the patch, it's self-explanatory) > - Devices for FreeBSD's kernel are outdated. Recent 5.x versions don't > add a "r" prefix to the device name, so it is now "fd%d", "ad%d", etc. > I'm adding a detection for __FreeBSD_kernel__'s version number. > > My patch differed against pristine sources would conflict with my dynamic > allocation one sent a while ago, so I'm differing against my patched version. > > You need to apply my previous patch [1] before this one. If this is a problem > tell me and i'll adapt my changes. > > [1] http://mail.gnu.org/archive/html/bug-grub/2003-07/msg00055.html > > -- > Robert Millan > diff -ur grub.old/lib/device.c grub/lib/device.c > --- grub.old/lib/device.c 2003-07-22 05:40:40.000000000 +0200 > +++ grub/lib/device.c 2003-07-22 05:52:46.000000000 +0200 > @@ -35,6 +35,15 @@ > #include <errno.h> > #include <limits.h> > > +/* compatibility for non-BSD systems using *BSD kernels */ > +#if defined(__FreeBSD__) && !defined(__FreeBSD_kernel__) > +# define __FreeBSD_kernel__ __FreeBSD__ > +#elif defined(__NetBSD__) && !defined(__NetBSD_kernel__) > +# define __NetBSD_kernel__ __NetBSD__ > +#elif defined(__OpenBSD__) && !defined(__OpenBSD_kernel__) > +# define __OpenBSD_kernel__ __OpenBSD__ > +#endif > + > #ifdef __linux__ > # if !defined(__GLIBC__) || \ > ((__GLIBC__ < 2) || ((__GLIBC__ == 2) && (__GLIBC_MINOR__ < 1))) > @@ -71,11 +80,11 @@ > # endif /* ! BLKGETSIZE */ > #endif /* __linux__ */ > > -#if defined(__FreeBSD__) || defined(__NetBSD__) || defined(__OpenBSD__) > +#if defined(__FreeBSD_kernel__) || defined(__NetBSD_kernel__) || > defined(__OpenBSD_kernel__) > # include <sys/ioctl.h> /* ioctl */ > # include <sys/disklabel.h> > # include <sys/cdio.h> /* CDIOCCLRDEBUG */ > -#endif /* __FreeBSD__ || __NetBSD__ || __OpenBSD__ */ > +#endif /* __FreeBSD_kernel__ || __NetBSD_kernel__ || __OpenBSD_kernel__ */ > > #ifdef HAVE_OPENDISK > # include <util.h> > @@ -116,8 +125,8 @@ > return; > } > > -#elif defined(__FreeBSD__) || defined(__NetBSD__) || defined(__OpenBSD__) > - /* FreeBSD, NetBSD or OpenBSD */ > +#elif defined(__FreeBSD_kernel__) || defined(__NetBSD_kernel__) || > defined(__OpenBSD_kernel__) > + /* kernel of FreeBSD, NetBSD or OpenBSD */ > { > struct disklabel hdg; > if (ioctl (fd, DIOCGDINFO, &hdg)) > @@ -199,15 +208,19 @@ > #elif defined(__GNU__) > /* GNU/Hurd */ > asprintf (&name, "/dev/fd%d", unit); > -#elif defined(__FreeBSD__) > - /* FreeBSD */ > +#elif defined(__FreeBSD_kernel__) > + /* kernel of FreeBSD */ > +# if __FreeBSD_kernel__ >= 5 > + asprintf (&name, "/dev/fd%d", unit); > +# else /* __FreeBSD_kernel__ <= 4 */ > asprintf (&name, "/dev/rfd%d", unit); > -#elif defined(__NetBSD__) > - /* NetBSD */ > +# endif /* __FreeBSD_kernel__ <= 4 */ > +#elif defined(__NetBSD_kernel__) > + /* kernel of NetBSD */ > /* opendisk() doesn't work for floppies. */ > asprintf (&name, "/dev/rfd%da", unit); > -#elif defined(__OpenBSD__) > - /* OpenBSD */ > +#elif defined(__OpenBSD_kernel__) > + /* kernel of OpenBSD */ > asprintf (&name, "/dev/rfd%dc", unit); > #elif defined(__QNXNTO__) > /* QNX RTP */ > @@ -230,15 +243,17 @@ > #elif defined(__GNU__) > /* GNU/Hurd */ > asprintf (&name, "/dev/hd%d", unit); > -#elif defined(__FreeBSD__) > - /* FreeBSD */ > -# if __FreeBSD__ >= 4 > +#elif defined(__FreeBSD_kernel__) > + /* kernel of FreeBSD */ > +# if __FreeBSD_kernel__ >= 5 > + asprintf (&name, "/dev/ad%d", unit); > +# elif __FreeBSD_kernel__ >= 4 > asprintf (&name, "/dev/rad%d", unit); > -# else /* __FreeBSD__ <= 3 */ > +# else /* __FreeBSD_kernel__ <= 3 */ > asprintf (&name, "/dev/rwd%d", unit); > -# endif /* __FreeBSD__ <= 3 */ > -#elif defined(__NetBSD__) && defined(HAVE_OPENDISK) > - /* NetBSD */ > +# endif /* __FreeBSD_kernel__ <= 3 */ > +#elif defined(__NetBSD_kernel__) && defined(HAVE_OPENDISK) > + /* kernel of NetBSD */ > char shortname[16]; > int fd; > name = malloc (16); // FIXME: can opendisk deal with dynamic buffers? > @@ -249,8 +264,8 @@ > 0 /* char device */ > ); > close (fd); > -#elif defined(__OpenBSD__) > - /* OpenBSD */ > +#elif defined(__OpenBSD_kernel__) > + /* kernel of OpenBSD */ > asprintf (&name, "/dev/rwd%dc", unit); > #elif defined(__QNXNTO__) > /* QNX RTP */ > @@ -275,11 +290,15 @@ > #elif defined(__GNU__) > /* GNU/Hurd */ > asprintf (&name, "/dev/sd%d", unit); > -#elif defined(__FreeBSD__) > - /* FreeBSD */ > +#elif defined(__FreeBSD_kernel__) > + /* kernel of FreeBSD */ > +# if __FreeBSD_kernel__ >= 5 > + asprintf (&name, "/dev/da%d", unit); > +# else /* __FreeBSD_kernel__ <= 4 */ > asprintf (&name, "/dev/rda%d", unit); > -#elif defined(__NetBSD__) && defined(HAVE_OPENDISK) > - /* NetBSD */ > +# endif /* __FreeBSD_kernel__ <= 4 */ > +#elif defined(__NetBSD_kernel__) && defined(HAVE_OPENDISK) > + /* kernel of NetBSD */ > char shortname[16]; > int fd; > name = malloc (16); // FIXME: can opendisk deal with dynamic buffers? > @@ -290,8 +309,8 @@ > 0 /* char device */ > ); > close (fd); > -#elif defined(__OpenBSD__) > - /* OpenBSD */ > +#elif defined(__OpenBSD_kernel__) > + /* kernel of OpenBSD */ > asprintf (&name, "/dev/rsd%dc", unit); > #elif defined(__QNXNTO__) > /* QNX RTP */ > @@ -378,12 +397,12 @@ > # endif /* ! CDROM_GET_CAPABILITY */ > #endif /* __linux__ */ > > -#if defined(__FreeBSD__) || defined(__NetBSD__) || defined(__OpenBSD__) > +#if defined(__FreeBSD_kernel__) || defined(__NetBSD_kernel__) || > defined(__OpenBSD_kernel__) > # ifdef CDIOCCLRDEBUG > if (ioctl (fileno (fp), CDIOCCLRDEBUG, 0) >= 0) > return 0; > # endif /* CDIOCCLRDEBUG */ > -#endif /* __FreeBSD__ || __NetBSD__ || __OpenBSD__ */ > +#endif /* __FreeBSD_kernel__ || __NetBSD_kernel__ || __OpenBSD_kernel__ */ > > /* Attempt to read the first sector. */ > if (fread (buf, 1, 512, fp) != 512) > _______________________________________________ > Bug-grub mailing list > [EMAIL PROTECTED] > http://mail.gnu.org/mailman/listinfo/bug-grub -- Robert Millan "[..] but the delight and pride of Aule is in the deed of making, and in the thing made, and neither in possession nor in his own mastery; wherefore he gives and hoards not, and is free from care, passing ever on to some new work." -- J.R.R.T, Ainulindale (Silmarillion) _______________________________________________ Bug-grub mailing list [EMAIL PROTECTED] http://mail.gnu.org/mailman/listinfo/bug-grub
