CAMLprim value unix_error_message(value err) { CAMLparam1(err); int errnum, len; char buffer[512]; errnum = Is_block(err) ? Int_val(Field(err, 0)) : ns_error_table[Int_val(err)]; if (errnum > 0) return copy_string(strerror(errnum)); //call nssock function geterrmsg(buffer, -errnum); len = strlen(buffer); if(len > 0) { buffer[len] = ':'; buffer[len+1] = ' '; buffer[len+2] = '\0'; } if (FormatMessage(FORMAT_MESSAGE_FROM_SYSTEM | FORMAT_MESSAGE_IGNORE_INSERTS, NULL, -errnum, 0, buffer+strlen(buffer), sizeof(buffer) - strlen(buffer), NULL)) CAMLreturn(copy_string(buffer)); strcat(buffer, "unknown error"); CAMLreturn(copy_string(buffer)); }
int main(int argc, char *argv[]) { int err; err = video_init(640, 480); if(err) error("Failed to initialize video: %s", geterrmsg()); exit(EXIT_SUCCESS); }