On 12/10/2015 02:34 PM, Markus Armbruster wrote:
Marcel Apfelbaum <marcel.apfelb...@gmail.com> 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.

So it takes a long time to run. We could make it depend on an environment 
variable,
so at least the maintainers will run it :)

My point is, now we *could* have a guarantee that if anyone uses the old
way, we can catch it in time. It can be easily lost in the review process.

Anyway, it was only a thought.
Thanks,
Marcel



Is a pity to have them lost into a git comment...


Reply via email to