Index: trunk/src/drc.c =================================================================== --- trunk/src/drc.c (revision 32930) +++ trunk/src/drc.c (revision 32931) @@ -152,8 +152,11 @@ void pcb_drc_all(void) { + int ran = 0; pcb_view_list_free_fields(&pcb_drc_lst); - rnd_event(&PCB->hidlib, PCB_EVENT_DRC_RUN, NULL); + rnd_event(&PCB->hidlib, PCB_EVENT_DRC_RUN, "p", &ran); + if (ran == 0) + rnd_message(RND_MSG_ERROR, "No DRC tests ran. Is any DRC plugin compiled? Are they disabled? Are all rules disabled?\n"); } static const char pcb_acts_DRC[] = "DRC([list|simple|print|log|dump])"; Index: trunk/src/event.h =================================================================== --- trunk/src/event.h (revision 32930) +++ trunk/src/event.h (revision 32931) @@ -53,7 +53,7 @@ PCB_EVENT_DRAW_CROSSHAIR_CHATT, /* called from crosshair code upon attached object recalculation; event handlers can use this hook to enforce various geometric restrictions */ - PCB_EVENT_DRC_RUN, /* called from core to run all configured DRCs (implemented in plugins) */ + PCB_EVENT_DRC_RUN, /* called from core to run all configured DRCs (implemented in plugins). Args: (int *) that each DRC plugin shall increase if it did any check */ PCB_EVENT_NET_INDICATE_SHORT, /* called by core to get a shortcircuit indicated (e.g. by mincut). Args: (pcb_net_t *net, pcb_any_obj_t *offending_term, pcb_net_t *offending_net, int *handled, int *cancel) - if *handled is non-zero, the short is already indicated; if *cancel is non-zero the whole process is cancelled, no more advanced short checking should take place in this session */ Index: trunk/src_plugins/drc_query/drc_query.c =================================================================== --- trunk/src_plugins/drc_query/drc_query.c (revision 32930) +++ trunk/src_plugins/drc_query/drc_query.c (revision 32931) @@ -227,7 +227,7 @@ gdl_iterator_t it; rnd_conf_listitem_t *i; long cnt = 0; - int bufno = -1; + int bufno = -1, *ran; pcb_qry_exec_t ec; drc_query_prog_t prog; @@ -255,6 +255,10 @@ if ((dis != NULL) && (*dis != 0)) continue; + assert(argv[1].type == RND_EVARG_PTR); + ran = argv[1].d.p; + (*ran)++; + prog.name = i->name; cnt += drc_qry_exec(&ec, pcb, &pcb_drc_lst, i->name, load_str(rule, i, "type"), load_str(rule, i, "title"), load_str(rule, i, "desc"),