This pastie holds my first C patch. It actually repaired a Readline problem that appeared on my Mac when I git pull
‘d Io’s source today. See the Io issue at their bugtracker.
The pgsql heroes fixed the problem way before, so I could stand on the shoulders of smart giants.
I don’t know how to test C stuff, except for running the programs, and Jonas reminded to actually do that:
c-5b66e555:~ olle$ rm .io_history c-5b66e555:~ olle$ mkdir .io_history c-5b66e555:~ olle$ io Io 20080120 Exception: while loading history file '/Users/olle/.io_history', reason: Is a directory --------- loadHistory Z_CLI.io 47 ReadLine ? Z_CLI.io 47 Call relayStopStatus A2_Object.io 295 CLI loadHistory Z_CLI.io 94 CLI interactiveMultiline Z_CLI.io 82 CLI run IoState_runCLI() 1 c-5b66e555:~ olle$
So, the complaining functionality is retained.
What’s it do?
For those who are beginners at C, like I am, this small digression might interest:
- First we include the errno mechanism as an include:
#include <errno.h>
- in each function, initialize the value of the static global variable “errno” to 0
- functions like
read_history(filename)
, from the libedit library return anint
, but… - We are not interested in the return value, so we cast the computation to be void, the errno mechanism will take care of remembering that int on its own
- It seems to be culturally correct to check for success instead of failure.
All these factoids are guesstimates of what went on, and I’m interested in the real story someday. Please provide any insight as comments, dear reader.
PS: As you can tell, mucking about other people’s C code is not something I do every day. I felt good, but weird.