* [PATCH] grub-probe && FreeBSD
@ 2008-01-03 1:59 Francis Gendreau
2008-01-03 11:45 ` Robert Millan
0 siblings, 1 reply; 5+ messages in thread
From: Francis Gendreau @ 2008-01-03 1:59 UTC (permalink / raw)
To: grub-devel
[-- Attachment #1: Type: text/plain, Size: 1194 bytes --]
I finished to make grub-probe functionnal on FreeBSD system. I also
added a few useful command-line options on the utility.
1) grub-probe support multiple output formats and targets.
Optionnal patch. (util_grub-probe.c.diff)
2) Added support for resolution of mounted filesystem device.
(util_getroot.c.diff)
3) Added support for resolution of device total sector size.
(util_biosdisk.d.diff)
4) Added capacity of generating a valid grub device string.
(util_biosdisk.d.diff)
5) Modified grub_strncpy so it does not skip the terminating nul-byte
of the source string. It was making grub_ufs_dir() to mis-
duplicate the path parameter. Further testing are required to know
if it does not break anything but I'm confident it will not.
(kern_misc.c.diff)
6) Added GRUB_ERR_IOCTL to include/grub/err.h
(include_grub_err.h.diff)
Patches have been tested on a source tree fetched 2008/01/21 20:43 EST
(10 minutes ago).
I will continue to work on the sources so grub-setup and grub-install
works. The other utilities will come after.
Also, if someone can email-me how to uses diff so I can create patch in
a single file, it would be greatly appreciated. :)
Francis Gendreau
[-- Attachment #2: include_grub_err.h.diff --]
[-- Type: text/x-patch, Size: 75 bytes --]
54c54,55
< GRUB_ERR_MENU
---
> GRUB_ERR_MENU,
> GRUB_ERR_IOCTL
[-- Attachment #3: kern_misc.c.diff --]
[-- Type: text/x-patch, Size: 302 bytes --]
58d57
<
61d59
<
69,72c67,68
<
< while ((*p++ = *src++) != '\0' && --c)
< ;
<
---
> while ((*p++ = *src++) != '\0' && c)
> --c;
579c575
< /* Skip the slow computation if 32-bit arithmetic is possible. */
---
> /* Skip the slow computation, if 32-bit arithmetics are possible. */
[-- Attachment #4: util_biosdisk.c.diff --]
[-- Type: text/x-patch, Size: 4134 bytes --]
4c4
< * Copyright (C) 1999,2000,2001,2002,2003,2004,2006,2007,2008 Free Software Foundation, Inc.
---
> * Copyright (C) 1999,2000,2001,2002,2003,2004,2006,2007 Free Software Foundation, Inc.
37a38
> #include <regex.h>
78a80,85
> #ifdef __FreeBSD__
> # include <sys/types.h>
> # include <sys/ioctl.h>
> # include <sys/disk.h>
> #endif
>
105c112
< if ((name[0] != 'f' && name[0] != 'h') || name[1] != 'd')
---
> if ((name[0] != 'f' && name[0] != 'h') || name[1] != 'd') // allow only 'fd' or 'hd'
196a204,254
> #elif defined (__FreeBSD__)
> /* To get the amound of sector from FreeBSD, we must uses ioctl(2).
> **
> ** DIOCGSECTORSIZE is for the sector size of the unit (unsigned int).
> ** DIOCGMEDIASIZE is for the total amound of bytes on the media(off_t or unsigned long long.
> ** total_sectors = media_size devided by sector_size
> */
> {
> unsigned long long media;
> unsigned int sector;
> int fd;
> char *msg;
>
> grub_errno = GRUB_ERR_NONE;
>
> fd = open (map[drive], O_RDONLY);
> if ( fd == -1 )
> (void) grub_fatal ("Failed to open `%s' associated to `%s'. %s\n", map[drive], name, strerror(errno));
>
> if ( ioctl (fd, DIOCGSECTORSIZE, §or) )
> {
> grub_errno = GRUB_ERR_IOCTL;
> msg = "Failed to get the media's sector size.";
> }
> else if ( ioctl (fd, DIOCGMEDIASIZE, &media) )
> {
> grub_errno = GRUB_ERR_IOCTL;
> msg = "Failed to get the media's size.";
> }
> else if ( media % sector != 0 )
> {
> grub_errno = GRUB_ERR_BAD_DEVICE;
> msg = "Unaligned device size.";
> }
> else
> disk->total_sectors = media / sector;
>
> close (fd);
>
> if ( grub_errno != GRUB_ERR_NONE )
> {
> char *str = NULL;
> if ( grub_errno == GRUB_ERR_IOCTL )
> str = strerror (errno);
> grub_error (grub_errno, "Unable to open %s correctly. %s %s", map[drive], msg, str?str:"");
> }
>
> grub_util_info ("the size of %s is %llu sectors", name, disk->total_sectors);
> return grub_errno;
> }
>
428c486
< /* Work around a bug in Linux ez remapping. Linux remaps all
---
> /* Work around a bug in linux's ez remapping. Linux remaps all
612c670
< if (strncmp ("ide/", p, 4) == 0)
---
> if (strncmp ("/dev/ide/", p, 9) == 0)
622c680
< if (strncmp ("scsi/", p, 5) == 0)
---
> if (strncmp ("/dev/scsi/", p, 10) == 0)
683c741
< if (map[i] && strcmp (map[i], os_disk) == 0)
---
> if (map[i] && strncmp (map[i], os_disk, strlen (map[i])) == 0)
712c770
<
---
> #ifndef __FreeBSD__
715c773
<
---
> #endif
852a911,955
> #elif defined(__FreeBSD__)
> /* FreeBSD uses: /.+/([a-zA-Z0-9]+)([0-9]+)s([1234])([a-zA-Z])
> where:
> $1 = driver name (ad sd fd ...)
> $2 = driver unit
> $3 = slice unit (1-4)
> $4 = label unit (a-z)
>
> We must extract $3 and $4.
> */
> {
> int ret, dos_part = -1, bsd_part = -1;
> regex_t re;
> char *re_str = "/.+/([-a-zA-Z0-9_]+)([0-9]+)s([1-4])([a-zA-Z])";
> #define RE_EBUF_SIZE 4096
> char ebuf[RE_EBUF_SIZE];
> #ifdef N_MATCHES
> # define SAVED_N_MATCHES N_MATCHES
> # undef N_MATCHES
> #endif
> #define N_MATCHES 5
> regmatch_t matches[N_MATCHES];
> ret = regcomp (&re, re_str, REG_EXTENDED);
> if ( ret )
> {
> regerror (ret, &re, ebuf, RE_EBUF_SIZE);
> grub_util_error ("Std1003.2 Regular Expression compilation on `%s': %s",
> re_str, ebuf);
> }
> ret = regexec (&re, os_dev, N_MATCHES, matches, 0);
> if ( ret )
> {
> regerror (ret, &re, ebuf, RE_EBUF_SIZE);
> grub_util_error ("Std1003.2 Regular Expression execution on `%s': %s",
> os_dev, ebuf);
> }
> regfree (&re);
> dos_part = strtol (os_dev+matches[3].rm_so, NULL, 10) -1;
> bsd_part = *(os_dev+matches[4].rm_so) - 'a';
> return make_device_name (drive, dos_part, bsd_part);
> }
> #undef N_MATCHES
> # ifdef SAVED_N_MATCHES
> # define N_MATCHES SAVED_N_MATCHES
> #endif
[-- Attachment #5: util_getroot.c.diff --]
[-- Type: text/x-patch, Size: 1417 bytes --]
125a126
> #ifndef __FreeBSD__
240a242,289
> #else /* defined __FreeBSD__ */
> /* Make grub_guess_root_device() to use statfs(2) on FreeBSD system
> ** in order to locate the device associated to a mount point.
> ** The diactivated section of the function make the function skip
> ** the slice and bsdlabel portion of the device name.
> */
> #include <sys/param.h>
> #include <sys/mount.h>
> #include <stdlib.h>
> #include <errno.h>
> char *
> grub_guess_root_device (const char *path)
> {
> char *ret = NULL;
> struct statfs sfsb;
>
> if ( !statfs (path, &sfsb) )
> {/*
> char *endp = sfsb.f_mntfromname,
> *s = path;
> size_t l;
> for (l = 0; l < MNAMELEN && *s; ++l, ++s);
> endp += l - 1;
> while ( *endp != '/' ) // emulate basename(3)
> --endp;
> while ( *endp < '0' || *endp > '9' ) // skip driver name
> ++endp;
> while ( *endp >= '0' && *endp <= '9' ) // skip driver unit
> ++endp;
> l = endp - sfsb.f_mntfromname; // adjust length
> ret = xmalloc (l+1);
> if ( ret )
> {
> strncpy (ret, sfsb.f_mntfromname, l);
> ret[l] = '\0';
> }
> */
> ret = xmalloc (MNAMELEN);
> strncpy (ret, sfsb.f_mntfromname, MNAMELEN);
> }
> else
> {
> grub_util_error ("Cannot stat `%s'", path);
> }
>
> return ret;
> }
> #endif /* __FreeBSD__ */
[-- Attachment #6: util_grub-probe.c.diff --]
[-- Type: text/x-patch, Size: 14137 bytes --]
42,45c42,53
< #define PRINT_FS 0
< #define PRINT_DRIVE 1
< #define PRINT_DEVICE 2
< #define PRINT_PARTMAP 3
---
> #define GRUB_PRINT_DEFAULT 0x00
> #define GRUB_PRINT_DRIVE 0x01
> #define GRUB_PRINT_DEVICE 0x02
> #define GRUB_PRINT_PARTMAP 0x04
> #define GRUB_PRINT_FS 0x08
> #define GRUB_PRINT_INVAL 0x10
> #define GRUB_PRINT_SHVAR 0x20
> #define GRUB_PRINT_PREFIX 0x40
>
> static int grub_parse_target (const char *arg, int old_fl);
> static void usage (int status);
> static void dump_target_flags (int fl);
47c55,58
< int print = PRINT_FS;
---
> static char *output_prefix = NULL;
> static void print_target_value ( int target_fl, int target, const char *value);
>
> static void probe (const char *path, int target_fl);
72,138d82
< static void
< probe (const char *path)
< {
< char *device_name;
< char *drive_name = NULL;
< grub_device_t dev;
< grub_fs_t fs;
<
< device_name = grub_guess_root_device (path);
< if (! device_name)
< grub_util_error ("cannot find a device for %s.\n", path);
<
< if (print == PRINT_DEVICE)
< {
< printf ("%s\n", device_name);
< goto end;
< }
<
< drive_name = grub_util_get_grub_dev (device_name);
< if (! drive_name)
< grub_util_error ("cannot find a GRUB drive for %s.\n", device_name);
<
< if (print == PRINT_DRIVE)
< {
< printf ("(%s)\n", drive_name);
< goto end;
< }
<
< grub_util_info ("opening %s", drive_name);
< dev = grub_device_open (drive_name);
< if (! dev)
< grub_util_error ("%s", grub_errmsg);
<
< if (print == PRINT_PARTMAP)
< {
< if (dev->disk->partition == NULL)
< grub_util_error ("Cannot detect partition map for %s", drive_name);
<
< if (strcmp (dev->disk->partition->partmap->name, "amiga_partition_map") == 0)
< printf ("amiga\n");
< else if (strcmp (dev->disk->partition->partmap->name, "apple_partition_map") == 0)
< printf ("apple\n");
< else if (strcmp (dev->disk->partition->partmap->name, "gpt_partition_map") == 0)
< printf ("gpt\n");
< else if (strcmp (dev->disk->partition->partmap->name, "pc_partition_map") == 0)
< printf ("pc\n");
< else if (strcmp (dev->disk->partition->partmap->name, "sun_partition_map") == 0)
< printf ("sun\n");
< else
< grub_util_error ("Unknown partition map %s", dev->disk->partition->partmap->name);
< goto end;
< }
<
< fs = grub_fs_probe (dev);
< if (! fs)
< grub_util_error ("%s", grub_errmsg);
<
< printf ("%s\n", fs->name);
<
< grub_device_close (dev);
<
< end:
<
< free (device_name);
< free (drive_name);
< }
<
145a90,91
> {"prefix-prefix", required_argument, 0, 'P'},
> {"prefix-shvar", required_argument, 0, 'S'},
149,174d94
< static void
< usage (int status)
< {
< if (status)
< fprintf (stderr,
< "Try ``grub-probe --help'' for more information.\n");
< else
< printf ("\
< Usage: grub-probe [OPTION]... PATH\n\
< \n\
< Probe device information for a given path.\n\
< \n\
< -m, --device-map=FILE use FILE as the device map [default=%s]\n\
< -t, --target=(fs|drive|device|partmap)\n\
< print filesystem module, GRUB drive, system device or partition map module [default=fs]\n\
< -h, --help display this message and exit\n\
< -V, --version print version information and exit\n\
< -v, --verbose print verbose messages\n\
< \n\
< Report bugs to <%s>.\n\
< ",
< DEFAULT_DEVICE_MAP, PACKAGE_BUGREPORT);
<
< exit (status);
< }
<
179a100
> int target_fl = GRUB_PRINT_DEFAULT;
186c107
< int c = getopt_long (argc, argv, "m:t:hVv", options, 0);
---
> int c = getopt_long (argc, argv, "m:t:hVvP:S:A", options, 0);
201,210c122
< if (!strcmp (optarg, "fs"))
< print = PRINT_FS;
< else if (!strcmp (optarg, "drive"))
< print = PRINT_DRIVE;
< else if (!strcmp (optarg, "device"))
< print = PRINT_DEVICE;
< else if (!strcmp (optarg, "partmap"))
< print = PRINT_PARTMAP;
< else
< usage (1);
---
> target_fl = grub_parse_target (optarg, target_fl);
212a125,139
> case 'S':
> output_prefix = optarg;
> target_fl |= GRUB_PRINT_SHVAR;
> break;
>
> case 'P':
> output_prefix = optarg;
> target_fl |= GRUB_PRINT_PREFIX;
> break;
>
> case 'A':
> target_fl |= GRUB_PRINT_FS|GRUB_PRINT_PARTMAP
> |GRUB_PRINT_DEVICE|GRUB_PRINT_DRIVE;
> break;
>
245a173,185
> if (target_fl & GRUB_PRINT_INVAL)
> {
> if ((target_fl & ~GRUB_PRINT_INVAL) == GRUB_PRINT_DEFAULT)
> {
> fputs ("No targets provided are valid.\n", stderr);
> usage(1);
> }
> target_fl = target_fl & ~GRUB_PRINT_INVAL;
> }
>
> if ((target_fl & GRUB_PRINT_PREFIX) && (target_fl & (GRUB_PRINT_SHVAR)))
> grub_util_error ("targets `prefix' and `shvar' should not be used together!");
>
253c193
< probe (path);
---
> probe (path, target_fl);
261a202,452
> }
>
>
> static void
> probe (const char *path, int target_fl)
> {
> char *device_name = NULL;
> char *drive_name = NULL;
> grub_device_t dev;
> grub_fs_t fs;
>
> if ((target_fl & ~(GRUB_PRINT_PREFIX|GRUB_PRINT_SHVAR)) == GRUB_PRINT_DEFAULT)
> target_fl |= GRUB_PRINT_FS;
>
> //dump_target_flags (target_fl);
> device_name = grub_guess_root_device (path);
> if (! device_name)
> grub_util_error ("cannot find a device for %s.\n", path);
>
> grub_util_info ("Using device `%s' for `%s'", device_name, path);
> if (target_fl & GRUB_PRINT_DEVICE)
> print_target_value (target_fl, GRUB_PRINT_DEVICE, device_name);
>
> if (target_fl & (GRUB_PRINT_FS|GRUB_PRINT_PARTMAP|GRUB_PRINT_DRIVE))
> {
> drive_name = grub_util_get_grub_dev (device_name);
> if (! drive_name)
> grub_util_error ("cannot find a GRUB drive for %s.\n", device_name);
>
> if (target_fl & GRUB_PRINT_DRIVE)
> print_target_value (target_fl, GRUB_PRINT_DRIVE, drive_name);
>
> if (target_fl & (GRUB_PRINT_FS|GRUB_PRINT_PARTMAP))
> {
> dev = grub_device_open (drive_name);
> if (! dev)
> grub_util_error ("%s", grub_errmsg);
>
> if (target_fl & GRUB_PRINT_PARTMAP)
> {
> char *value;
> if (dev->disk->partition == NULL)
> grub_util_error ("Cannot detect partition map for %s", drive_name);
>
> if (strcmp (dev->disk->partition->partmap->name, "amiga_partition_map") == 0)
> value = "amiga";
> else if (strcmp (dev->disk->partition->partmap->name, "apple_partition_map") == 0)
> value = "apple";
> else if (strcmp (dev->disk->partition->partmap->name, "gpt_partition_map") == 0)
> value = "gpt";
> else if (strcmp (dev->disk->partition->partmap->name, "pc_partition_map") == 0)
> value = "pc";
> else if (strcmp (dev->disk->partition->partmap->name, "sun_partition_map") == 0)
> value = "sun";
> else
> {
> if (!(target_fl & (GRUB_PRINT_PREFIX|GRUB_PRINT_SHVAR)))
> grub_util_error ("Unknown partition map %s", dev->disk->partition->partmap->name);
> else
> value = "";
> }
> print_target_value (target_fl, GRUB_PRINT_PARTMAP, value);
> }
> if (target_fl & GRUB_PRINT_FS)
> {
> fs = grub_fs_probe (dev);
> if (! fs)
> grub_util_error ("%s", grub_errmsg);
>
> print_target_value (target_fl, GRUB_PRINT_FS, fs->name);
> }
> grub_device_close (dev);
> }
> }
> if (device_name)
> free (device_name);
> if (drive_name)
> free (drive_name);
> }
>
> static void
> print_target_value ( int target_fl, int target, const char *value)
> {
> char *target_str = NULL;
>
> if (!value)
> value = "";
>
> if (target == GRUB_PRINT_FS)
> target_str = "fs";
> else if (target == GRUB_PRINT_DRIVE)
> target_str = "drive";
> else if (target == GRUB_PRINT_DEVICE)
> target_str = "device";
> else if (target == GRUB_PRINT_PARTMAP)
> target_str = "partmap";
> else
> {
> fprintf (stderr, "INTERNAL ERROR: invalid target int print_target_value()\n");
> exit(1);
> }
>
> if (target_fl & (GRUB_PRINT_SHVAR|GRUB_PRINT_PREFIX))
> {
> if (target_fl & GRUB_PRINT_SHVAR)
> {
> if (output_prefix)
> fprintf (stdout, "%s%s=\"%s\"\n", output_prefix, target_str, value);
> else
> fprintf (stdout, "%s=\"%s\"\n", target_str, value);
> }
> if (target_fl & GRUB_PRINT_PREFIX)
> {
> if (output_prefix)
> fprintf (stdout, "%s%s: %s\n", output_prefix, target_str, value);
> else
> fprintf (stdout, "%s: %s\n", target_str, value);
> }
> }
> else
> {
> puts (value);
> }
> }
>
> static int
> grub_parse_target (const char *arg, int old_fl)
> {
> char *argv[16];
> int i;
> int fl = GRUB_PRINT_DEFAULT;
>
> if ( arg )
> {
> char *next = (char*) arg;
> for ( i = 0; i < 16 && next && *next ; ++i )
> {
> arg = (const char*)next;
> next = strchr( next, ',');
> if ( next )
> {
> *next = 0;
> ++next;
> }
> argv[i] = (char*)arg;
> }
> while (i > 0)
> {
> --i;
> if (!strcmp ("all", argv[i]))
> fl |= GRUB_PRINT_FS|GRUB_PRINT_DRIVE|GRUB_PRINT_DEVICE|GRUB_PRINT_PARTMAP;
> else if (!strcmp ("fs", argv[i]))
> fl |= GRUB_PRINT_FS;
> else if (!strcmp ("drive", argv[i]))
> fl |= GRUB_PRINT_DRIVE;
> else if (!strcmp ("device", argv[i]))
> fl |= GRUB_PRINT_DEVICE;
> else if (!strcmp ("partmap", argv[i]))
> fl |= GRUB_PRINT_PARTMAP;
> else if (!strcmp ("prefix", argv[i]))
> fl |= GRUB_PRINT_PREFIX;
> else if (!strcmp ("shvar", argv[i]))
> fl |= GRUB_PRINT_SHVAR;
> else
> {
> fl |= GRUB_PRINT_INVAL;
> grub_util_info ("grub-probe: warning: Invalid target `%s'\n", argv[i]);
> }
> }
> }
> return fl | old_fl;
> }
>
>
> static void
> usage (int status)
> {
> if (status)
> fprintf (stderr,
> "Try ``grub-probe --help'' for more information.\n");
> else
> printf ("\
> Usage: grub-probe [OPTION]... PATH\n\
> \n\
> Probe device information for a given path.\n\
> \n\
> -m, --device-map=FILE use FILE as the device map [default=%s]\n\
> -t, --target=(all,fs,drive,device,partmap,prefix,shvar)\n\
> print filesystem module, GRUB drive, system\n\
> device and/or partition map module [default=fs].\n\
> It is possible to add multiple targets by separating\n\
> them using commas and/or adding multiple -t on\n\
> the command line. `all' can be used to set\n\
> `fs', `drive', `device' and `partmap' targets.\n\n\
> If no -t parameters are specified, grub-probe\n\
> will print the default target.\n\n\
> On the other hand, if targets are specified and none\n\
> contain valid targets, the application terminates\n\
> after emitting an error message. If some of the targets\n\
> are valid, the application will warn the user about\n\
> invalid targets and print the values for the valid\n\
> ones.\n\n\
> There is also two pseudo-targets which cannot co-exist:\n\n\
> \t`prefix' will print the target name before the\n\
> \t\t value, separating them with the sequence\n\
> \t\t semi-colon_space (: ).\n\
> \t\tex:\ttarget: value\\n\n\n\
> \t`shvar'\t prints values in this format:\n\
> \t\tex:\ttarget=\"value\"\\n\n\n\
> If `shvar' is used, value can be imported into Bourne\n\
> Shell scripts using:\n\
> \t\teval `grub-probe -t shvar <path>`\n\
> -P, --prefix-prefix=\"prefix\"\n\
> Prefixes the output variable name with \"prefix\" in \n\
> `prefix' output mode and activate it.\n\
> -S, --prefix-shvar=\"prefix\"\n\
> Prefix outputs variable name with \"prefix\" in \n\
> `shvar' output mode and activate it.\n\
> -A, --all Same as `-t all'\n\
> -h, --help display this message and exit\n\
> -V, --version print version information and exit\n\
> -v, --verbose print verbose messages\n\
> \n\
> Report bugs to <%s>.\n\
> ",
> DEFAULT_DEVICE_MAP, PACKAGE_BUGREPORT);
>
> exit (status);
> }
>
>
>
> static void
> dump_target_flags (int fl)
> {
> fputs ("grub-probe: DUMP: target flags = ", stderr);
> if ( fl & GRUB_PRINT_INVAL )
> fputs ("GRUB_PRINT_INVAL ", stderr);
> if ( fl & GRUB_PRINT_DRIVE )
> fputs ("GRUB_PRINT_DRIVE ", stderr);
> if ( fl & GRUB_PRINT_DEVICE )
> fputs ("GRUB_PRINT_DEVICE ", stderr);
> if ( fl & GRUB_PRINT_PARTMAP )
> fputs ("GRUB_PRINT_PARTMAP ", stderr);
> if ( fl & GRUB_PRINT_FS )
> fputs ("GRUB_PRINT_FS ", stderr);
> if ( fl & GRUB_PRINT_SHVAR )
> fputs ("GRUB_PRINT_SHVAR ", stderr);
> if ( fl & GRUB_PRINT_PREFIX )
> fputs ("GRUB_PRINT_PREFIX ", stderr);
> fputs ("\n", stderr);
^ permalink raw reply [flat|nested] 5+ messages in thread* Re: [PATCH] grub-probe && FreeBSD
2008-01-03 1:59 [PATCH] grub-probe && FreeBSD Francis Gendreau
@ 2008-01-03 11:45 ` Robert Millan
2008-01-23 11:39 ` Marco Gerards
0 siblings, 1 reply; 5+ messages in thread
From: Robert Millan @ 2008-01-03 11:45 UTC (permalink / raw)
To: The development of GRUB 2
On Wed, Jan 02, 2008 at 08:59:04PM -0500, Francis Gendreau wrote:
>
> Also, if someone can email-me how to uses diff so I can create patch in
> a single file, it would be greatly appreciated. :)
diff -urp grub.old grub.new
-r for recursive.
-u is needed to prevent everyone's eyes from bleeding (for some odd reason,
everyone prefers this but is still not the default).
-p is often preferred in this list to track which functions you changed.
Please resend your patch with the new params, it'll make it easier to review
it.
Also, remember to include a ChangeLog entry describing it.
Thanks!
--
Robert Millan
<GPLv2> I know my rights; I want my phone call!
<DRM> What use is a phone call, if you are unable to speak?
(as seen on /.)
^ permalink raw reply [flat|nested] 5+ messages in thread
* Re: [PATCH] grub-probe && FreeBSD
2008-01-03 11:45 ` Robert Millan
@ 2008-01-23 11:39 ` Marco Gerards
2008-01-23 11:46 ` Robert Millan
2008-03-20 14:30 ` Francis Gendreau
0 siblings, 2 replies; 5+ messages in thread
From: Marco Gerards @ 2008-01-23 11:39 UTC (permalink / raw)
To: The development of GRUB 2
Robert Millan <rmh@aybabtu.com> writes:
> On Wed, Jan 02, 2008 at 08:59:04PM -0500, Francis Gendreau wrote:
>>
>> Also, if someone can email-me how to uses diff so I can create patch in
>> a single file, it would be greatly appreciated. :)
>
> diff -urp grub.old grub.new
>
> -r for recursive.
>
> -u is needed to prevent everyone's eyes from bleeding (for some odd reason,
> everyone prefers this but is still not the default).
>
> -p is often preferred in this list to track which functions you changed.
>
> Please resend your patch with the new params, it'll make it easier to review
> it.
>
> Also, remember to include a ChangeLog entry describing it.
No patch yet, or did I miss something?
--
Marco
^ permalink raw reply [flat|nested] 5+ messages in thread
* Re: [PATCH] grub-probe && FreeBSD
2008-01-23 11:39 ` Marco Gerards
@ 2008-01-23 11:46 ` Robert Millan
2008-03-20 14:30 ` Francis Gendreau
1 sibling, 0 replies; 5+ messages in thread
From: Robert Millan @ 2008-01-23 11:46 UTC (permalink / raw)
To: The development of GRUB 2
On Wed, Jan 23, 2008 at 12:39:03PM +0100, Marco Gerards wrote:
> Robert Millan <rmh@aybabtu.com> writes:
>
> > On Wed, Jan 02, 2008 at 08:59:04PM -0500, Francis Gendreau wrote:
> >>
> >> Also, if someone can email-me how to uses diff so I can create patch in
> >> a single file, it would be greatly appreciated. :)
> >
> > diff -urp grub.old grub.new
> >
> > -r for recursive.
> >
> > -u is needed to prevent everyone's eyes from bleeding (for some odd reason,
> > everyone prefers this but is still not the default).
> >
> > -p is often preferred in this list to track which functions you changed.
> >
> > Please resend your patch with the new params, it'll make it easier to review
> > it.
> >
> > Also, remember to include a ChangeLog entry describing it.
>
> No patch yet, or did I miss something?
No _new_ patch. There's a patch, but it's split in several files and run
without -u.
--
Robert Millan
<GPLv2> I know my rights; I want my phone call!
<DRM> What use is a phone call… if you are unable to speak?
(as seen on /.)
^ permalink raw reply [flat|nested] 5+ messages in thread
* Re: [PATCH] grub-probe && FreeBSD
2008-01-23 11:39 ` Marco Gerards
2008-01-23 11:46 ` Robert Millan
@ 2008-03-20 14:30 ` Francis Gendreau
1 sibling, 0 replies; 5+ messages in thread
From: Francis Gendreau @ 2008-03-20 14:30 UTC (permalink / raw)
To: The development of GRUB 2
Sorry,
I've been busy at other things. I'll update the patches for the current
tree and send them back.
Francis
On Wed, 2008-01-23 at 12:39 +0100, Marco Gerards wrote:
> Robert Millan <rmh@aybabtu.com> writes:
>
> > On Wed, Jan 02, 2008 at 08:59:04PM -0500, Francis Gendreau wrote:
> >>
> >> Also, if someone can email-me how to uses diff so I can create patch in
> >> a single file, it would be greatly appreciated. :)
> >
> > diff -urp grub.old grub.new
> >
> > -r for recursive.
> >
> > -u is needed to prevent everyone's eyes from bleeding (for some odd reason,
> > everyone prefers this but is still not the default).
> >
> > -p is often preferred in this list to track which functions you changed.
> >
> > Please resend your patch with the new params, it'll make it easier to review
> > it.
> >
> > Also, remember to include a ChangeLog entry describing it.
>
> No patch yet, or did I miss something?
>
> --
> Marco
>
>
>
> _______________________________________________
> Grub-devel mailing list
> Grub-devel@gnu.org
> http://lists.gnu.org/mailman/listinfo/grub-devel
^ permalink raw reply [flat|nested] 5+ messages in thread
end of thread, other threads:[~2008-03-20 14:31 UTC | newest]
Thread overview: 5+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2008-01-03 1:59 [PATCH] grub-probe && FreeBSD Francis Gendreau
2008-01-03 11:45 ` Robert Millan
2008-01-23 11:39 ` Marco Gerards
2008-01-23 11:46 ` Robert Millan
2008-03-20 14:30 ` Francis Gendreau
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.