On Thu, Dec 10, 2015 at 05:29:14PM +0100, Markus Armbruster wrote: > Done with this admittedly crude Coccinelle semantic patch: >
Reviewed-by: Eduardo Habkost <ehabk...@redhat.com> You can rewrite the semantic patch as: @@ type T; identifier FUN, RET; expression list ARGS; expression ERR, EC; @@ ( - T RET = FUN(ARGS, &ERR); + T RET = FUN(ARGS, &error_fatal); | - RET = FUN(ARGS, &ERR); + RET = FUN(ARGS, &error_fatal); | - FUN(ARGS, &ERR); + FUN(ARGS, &error_fatal); ) - if (ERR != NULL) { - error_report_err(ERR); - exit(EC); - } Coccinelle seems to have some magic to make "LIST," also match with an empty list. > @@ > identifier FUN; > expression ERR, EC; > @@ > - FUN(&ERR); > - if (ERR != NULL) { > - error_report_err(ERR); > - exit(EC); > - } > + FUN(&error_fatal); > @@ > identifier FUN; > expression ARG1, ERR, EC; > @@ > - FUN(ARG1, &ERR); > - if (ERR != NULL) { > - error_report_err(ERR); > - exit(EC); > - } > + FUN(ARG1, &error_fatal); > @@ > identifier FUN; > expression ARG1, ARG2, ERR, EC; > @@ > - FUN(ARG1, ARG2, &ERR); > - if (ERR != NULL) { > - error_report_err(ERR); > - exit(EC); > - } > + FUN(ARG1, ARG2, &error_fatal); > @@ > identifier FUN; > expression ARG1, ARG2, ARG3, ERR, EC; > @@ > - FUN(ARG1, ARG2, ARG3, &ERR); > - if (ERR != NULL) { > - error_report_err(ERR); > - exit(EC); > - } > + FUN(ARG1, ARG2, ARG3, &error_fatal); > @@ > identifier FUN; > expression RET, ERR, EC; > @@ > - RET = FUN(&ERR); > - if (ERR != NULL) { > - error_report_err(ERR); > - exit(EC); > - } > + RET = FUN(&error_fatal); > @@ > identifier FUN; > expression RET, ARG1, ERR, EC; > @@ > - RET = FUN(ARG1, &ERR); > - if (ERR != NULL) { > - error_report_err(ERR); > - exit(EC); > - } > + RET = FUN(ARG1, &error_fatal); > @@ > identifier FUN; > expression RET, ARG1, ARG2, ERR, EC; > @@ > - RET = FUN(ARG1, ARG2, &ERR); > - if (ERR != NULL) { > - error_report_err(ERR); > - exit(EC); > - } > + RET = FUN(ARG1, ARG2, &error_fatal); > @@ > identifier FUN; > expression RET, ARG1, ARG2, ARG3, ERR, EC; > @@ > - RET = FUN(ARG1, ARG2, ARG3, &ERR); > - if (ERR != NULL) { > - error_report_err(ERR); > - exit(EC); > - } > + RET = FUN(ARG1, ARG2, ARG3, &error_fatal); > @@ > type T; > identifier FUN, RET; > expression ERR, EC; > @@ > - T RET = FUN(&ERR); > - if (ERR != NULL) { > - error_report_err(ERR); > - exit(EC); > - } > + T RET = FUN(&error_fatal); > @@ > type T; > identifier FUN, RET; > expression ARG1, ERR, EC; > @@ > - T RET = FUN(ARG1, &ERR); > - if (ERR != NULL) { > - error_report_err(ERR); > - exit(EC); > - } > + T RET = FUN(ARG1, &error_fatal); > @@ > type T; > identifier FUN, RET; > expression ARG1, ARG2, ERR, EC; > @@ > - T RET = FUN(ARG1, ARG2, &ERR); > - if (ERR != NULL) { > - error_report_err(ERR); > - exit(EC); > - } > + T RET = FUN(ARG1, ARG2, &error_fatal); > @@ > type T; > identifier FUN, RET; > expression ARG1, ARG2, ARG3, ERR, EC; > @@ > - T RET = FUN(ARG1, ARG2, ARG3, &ERR); > - if (ERR != NULL) { > - error_report_err(ERR); > - exit(EC); > - } > + T RET = FUN(ARG1, ARG2, ARG3, &error_fatal); > > This leaves dead Error * variables behind, cleaned up manually. > -- Eduardo