the goto style. you can escape goto by the following trick: do { if (!do_something( bar )) { break; } if (!init_stuff( bar )) { break; } if (!prepare_stuff( bar )) { break; } return do_the_thing( bar ); }while(0); return 0;
int foo(int bar) {
if (!do_something(bar))
goto do_something_error;
if (!init_stuff(bar))
goto init_stuff_error;
if (!prepare_stuff(bar))
goto prepare_stuff_error;
return do_the_thing(bar);
prepare_stuff_error:
unprepare_stuff(bar);
init_stuff_error:
deinit_stuff(bar);
do_something_error:
undo_something(bar);
return 0;
}