bug-grub
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: [PATCH] misc *BSD fixes (device names, support for non-BSD userland)


From: Robert Millan
Subject: Re: [PATCH] misc *BSD fixes (device names, support for non-BSD userland)
Date: Wed, 13 Aug 2003 17:17:22 +0000
User-agent: Mutt/1.5.4i

On Mon, Jul 28, 2003 at 02:29:14AM +0000, Robert Millan wrote:
> 
> Hi there,
> 
> Any comments on this patch? I sent it a week ago but haven't recieved
> any response..

Second ping on this..

I noticed that Okuji is offline for a while and he asked other developers
with CVS access to maintain it till he's back. Is any active developer with
write access around?

> 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
> > address@hidden
> > 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
> address@hidden
> 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)




reply via email to

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