error_limit being an integer, please don't use it as a boolean:
if (cstate->error_limit)
...
Add an explicit comparison to zero instead, for code readability. Also, since each error decrements the same variable, it becomes hard to reason about the state: at the end, are we ending with the exact number of errors, or did we start with the feature disabled? I suggest that it'd make sense to have a boolean indicating whether this feature has been requested, and the integer is just the remaining allowed problems.
done
Line 3255 or thereabouts contains an excess " char
fixed
The "warn about it" comment is obsolete, isn't it? There's no warning there.
fixed
i also add an option to ignore all errors in ERROR set to -1