There's the 5th method that I tend to use:
if (!init_stuff(bar)) {
return FALSE;
}
if (!do_the_thing(bar)) {
return FALSE;
}
return TRUE;