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 Grub-devel@gnu.org http://lists.gnu.org/mailman/listinfo/grub-devel