Oops! Okay. Well, this is a good place for errno then. Except, AFAICT, strcmp() does not provide any error checking, because the compiler will in fact catch a "bad argument", and nothing else would constitute an error here. An example of how the need for this can be illusory.
Vis, thread safety, I would assume that is what the GL model (using a callback to fetch errors) is intended to insure.
Again, these things only seem like hassles if you are determined to check every single function call you make, and leave this (absurdly paranoid) error checking in place permanently. If you just need to track down an issue, or leave some key checks in place, it is very simple and works well.
Hopefully someone will be along to explain why I am out to lunch again