RULE* local = enter_rule( rulename, m ); procedure->module = m; if ( !local_only ) 
RULE* local = define_rule( m, rulename, m ); local->exported = exported; set_rule_body( local, args, procedure );  /* Mark the procedure with the global rule name, regardless of * whether the rule is exported. That gives us something * reasonably identifiable that we can use, e.g. in profiling * output. Only do this once, since this could be called multiple * times with the same procedure. */ if ( procedure->rulename == 0 ) procedure->rulename = global_rule_name( local );  /* export the rule to the global module  if neccessary */ if ( exported ) 
RULE* new_rule_body( module* m, char* rulename, argument_list* args, PARSE* procedure, int local_only ){    RULE* local = enter_rule( rulename, m );    procedure->module = m;    if ( !local_only )    {        RULE* global = global_rule( rulename, m );        procedure->rulename = copystr( global->name );        set_rule_body( global, args, procedure );    }    else    {        local->local_only = 1;        procedure->rulename = global_name( rulename, m );    }    set_rule_body( local, args, procedure );    return local;}
2658	/local/tlutelli/issta_data/temp/c/2005_temp/2005/2658/821dd9fd4a486853d5cf2090870a45e8ee8e54b6/rules.c/buggy/src/engine/rules.c