Marcel Apfelbaum <[email protected]> writes: > On 12/10/2015 12:19 PM, Markus Armbruster wrote: >> Done with this admittedly crude Coccinelle semantic patch with manual >> burial of dead Error * variables squashed in: >> >> @@ >> 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); >> > > That's so cool!
I'm afraid my sledgehammer approach to Coccinelle would make its inventors wince... > Isn't it the time to have our own Coccinelle directory > with scripts like this? Could do that if there's interest. > And to make them part of make check? I'm afraid that's not practical. spatch solves a difficult problem, and takes its own sweet time to do it. > Is a pity to have them lost into a git comment...
