fdisk buglet
John Baldwin
jhb at freebsd.org
Tue Oct 19 14:13:16 PDT 2004
On Saturday 16 October 2004 02:44 am, Ruslan Ermilov wrote:
> On Fri, Oct 15, 2004 at 04:34:11PM -0500, Sam wrote:
> > fivethree% fdisk /dev/ad1
> > fdisk: cannot open disk /dev//dev/ad1: No such file or directory
> >
> > One possible fix:
> >
> > fivethree% diff -upr src/sbin/fdisk src2/sbin/fdisk
> > diff -upr src/sbin/fdisk/fdisk.c src2/sbin/fdisk/fdisk.c
> > --- src/sbin/fdisk/fdisk.c Mon Jun 14 03:21:19 2004
> > +++ src2/sbin/fdisk/fdisk.c Fri Oct 15 16:35:28 2004
> > @@ -299,14 +299,16 @@ main(int argc, char *argv[])
> > if (argc == 0) {
> > disk = get_rootdisk();
> > } else {
> > - if (stat(argv[0], &sb) == 0) {
> > + disk = argv[0];
> > + if (stat(disk, &sb) == 0) {
> > /* OK, full pathname given */
> > - disk = argv[0];
> > } else if (errno == ENOENT) {
> > /* Try prepending "/dev" */
> > - asprintf(&disk, "%s%s", _PATH_DEV, argv[0]);
> > - if (disk == NULL)
> > - errx(1, "out of memory");
> > + if (strncmp(disk, _PATH_DEV, strlen(_PATH_DEV)))
> > { + asprintf(&disk, "%s%s", _PATH_DEV,
> > argv[0]); + if (disk == NULL)
> > + errx(1, "out of memory");
> > + }
> > } else {
> > /* other stat error, let it fail below */
> > disk = argv[0];
>
> Simpler:
>
> %%%
> Index: fdisk.c
> ===================================================================
> RCS file: /home/ncvs/src/sbin/fdisk/fdisk.c,v
> retrieving revision 1.74
> diff -u -r1.74 fdisk.c
> --- fdisk.c 14 Jun 2004 07:21:19 -0000 1.74
> +++ fdisk.c 16 Oct 2004 06:43:16 -0000
> @@ -302,7 +302,7 @@
> if (stat(argv[0], &sb) == 0) {
> /* OK, full pathname given */
> disk = argv[0];
> - } else if (errno == ENOENT) {
> + } else if (errno == ENOENT && argv[0][0] != '/') {
> /* Try prepending "/dev" */
> asprintf(&disk, "%s%s", _PATH_DEV, argv[0]);
> if (disk == NULL)
> %%%
>
>
> Cheers,
Looks good to me, are you going to commit it?
--
John Baldwin <jhb at FreeBSD.org> <>< http://www.FreeBSD.org/~jhb/
"Power Users Use the Power to Serve!" - http://www.FreeBSD.org/
More information about the freebsd-current
mailing list