On Tue, Feb 12, 2008 at 10:49:37AM +0100, Fabian Greffrath wrote:
> >You put that function in a separate file, which indicates it is meant to be
> >a general-purpose function, but its spec is constrained by the code in
> >grub-probe (i.e. you strdup() not because it is needed for the purpose of
> >this function, but because grub-probe already calls free()).
>
> That's right. Consequently there are two alternatives left:
>
> - grub_util_check_block_device() returns the pointer instead of strdup()
> and the
> call to free() in grub-probe is conditional upon if argument_is_device is
> true
> or false; which I consider an ugly hack.
>
> - I keep getroot.{c,h} untouched and include these four lines in grub-probe;
> which is a pity because I consider the function quite usefull, though still
> not
> perfect (see above).
That's why I proposed to pass both path and device, and let either of them be
NULL. When you do this:
- You can determine whether `device' is provided (hence you can skip
converting from `path') simply with "if (device)".
- You can make the free() part independant of any other indications by
issuing:
if (device)
free (device);
if (path)
free (path);
--
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 /.)
_______________________________________________
Grub-devel mailing list
[email protected]
http://lists.gnu.org/mailman/listinfo/grub-devel