Ah pet peeve of mine
Rather than checking whether the function returns a non_zero rcode, assign the return value of the function to a variable (called rcode or something) and test that. Then your printf statement can print out what the error was.
Then, instead of always returning 1, return a different code for each condition. The calling function should then print out that rcode and name of the function. This way, you basically get a stack trace of error codes and it will be very easy to pinpoint where the problem is.
Never use the same error message in two different places (I know you've not done that, but it's good practice).
If your code needs to abort because of an error (such as not being able to allocate enough memory), you don't need to set a flag and then return that flag. Just return the error code for that condition. If, however, you have a function that can soldier on, even when something has gone wrong, you can use flags to indicate at the end of the function that something went wrong, but it wasn't critical. You'd want to print something like "There was an error (code x), function_name recovered and terminated normally".
The reason your code looks verbose and ugly is because there is very little actual implementation code. Once you flesh out what you're doing, you'll see that in most cases the normal code far outweighs error handling.
Hope that helps,
QuantumPete