From 4c3768ba9c1c8158132b07244b7e6346b84e6eb9 Mon Sep 17 00:00:00 2001 From: =?utf8?q?Daniel=20Kou=C5=99il?= Date: Thu, 12 Jan 2012 09:36:06 +0000 Subject: [PATCH] Prototype polishing - added a type for the canl return code - added a define to posibly express "exportability" of a symbol --- emi.canl.canl-c/src/canl.c | 15 ++++++--- emi.canl.canl-c/src/canl.h | 69 ++++++++++++++++++++++++++++++------------ emi.canl.canl-c/src/canl_err.c | 3 +- 3 files changed, 62 insertions(+), 25 deletions(-) diff --git a/emi.canl.canl-c/src/canl.c b/emi.canl.canl-c/src/canl.c index a09fd4a..6deae88 100644 --- a/emi.canl.canl-c/src/canl.c +++ b/emi.canl.canl-c/src/canl.c @@ -42,7 +42,8 @@ void canl_free_ctx(canl_ctx cc) free(ctx); } -int canl_create_io_handler(canl_ctx cc, canl_io_handler *io) +canl_err_code +canl_create_io_handler(canl_ctx cc, canl_io_handler *io) { io_handler *new_io_h = NULL; glb_ctx *g_cc = cc; @@ -76,7 +77,8 @@ static int init_io_content(glb_ctx *cc, io_handler *io) return 0; } -int canl_io_connect(canl_ctx cc, canl_io_handler io, const char *host, const char *service, +canl_err_code +canl_io_connect(canl_ctx cc, canl_io_handler io, const char *host, const char *service, int port, gss_OID_set auth_mechs, int flags, struct timeval *timeout) { @@ -217,7 +219,8 @@ static int try_connect(glb_ctx *glb_cc, io_handler *io_cc, char *addr, } /*TODO select + timeout, EINTR!!! */ -int canl_io_accept(canl_ctx cc, canl_io_handler io, int new_fd, +canl_err_code +canl_io_accept(canl_ctx cc, canl_io_handler io, int new_fd, struct sockaddr s_addr, int flags, canl_principal *peer, struct timeval *timeout) { @@ -251,7 +254,8 @@ end: } /* close connection, preserve some info for the future reuse */ -int canl_io_close(canl_ctx cc, canl_io_handler io) +canl_err_code +canl_io_close(canl_ctx cc, canl_io_handler io) { io_handler *io_cc = (io_handler*) io; glb_ctx *glb_cc = (glb_ctx*) cc; @@ -291,7 +295,8 @@ static void io_destroy(glb_ctx *cc, io_handler *io) } -int canl_io_destroy(canl_ctx cc, canl_io_handler io) +canl_err_code +canl_io_destroy(canl_ctx cc, canl_io_handler io) { int err = 0; glb_ctx *glb_cc = (glb_ctx*) cc; diff --git a/emi.canl.canl-c/src/canl.h b/emi.canl.canl-c/src/canl.h index a4aa739..ba2b34d 100644 --- a/emi.canl.canl-c/src/canl.h +++ b/emi.canl.canl-c/src/canl.h @@ -10,36 +10,67 @@ extern "C" { #include +#ifndef CANL_CALLCONV +#define CANL_CALLCONV +#endif + typedef void *canl_io_handler; typedef void *canl_ctx; typedef void *canl_principal; -canl_ctx canl_create_ctx(); -void canl_free_ctx(canl_ctx cc); -int canl_create_io_handler(canl_ctx, canl_io_handler*); +typedef long canl_err_code; + +canl_ctx CANL_CALLCONV +canl_create_ctx(); + +void CANL_CALLCONV +canl_free_ctx(canl_ctx cc); + +canl_err_code CANL_CALLCONV +canl_create_io_handler(canl_ctx cc, canl_io_handler*); + +canl_err_code CANL_CALLCONV +canl_io_connect(canl_ctx cc, canl_io_handler io, const char *host, const char *service, + int port, gss_OID_set auth_mechs, int flags, struct timeval *timeout); + +canl_err_code CANL_CALLCONV +canl_io_accept(canl_ctx cc, canl_io_handler io, int fd, struct sockaddr s_addr, + int flags, canl_principal *peer, struct timeval *timeout); -int canl_io_connect(canl_ctx cc, canl_io_handler io, const char *host, const char *service, - int port, gss_OID_set auth_mechs, int flags, struct timeval *timeout); -int canl_io_accept(canl_ctx cc, canl_io_handler io, int fd, - struct sockaddr s_addr, int flags, canl_principal *peer, - struct timeval *timeout); -size_t canl_io_read(canl_ctx cc, canl_io_handler io, void *buffer, size_t size, struct timeval *timeout); -size_t canl_io_write(canl_ctx cc, canl_io_handler io, void *buffer, size_t size, struct timeval *timeout); +size_t CANL_CALLCONV +canl_io_read(canl_ctx cc, canl_io_handler io, void *buffer, + size_t size, struct timeval *timeout); -long +size_t CANL_CALLCONV +canl_io_write(canl_ctx cc, canl_io_handler io, void *buffer, + size_t size, struct timeval *timeout); + +canl_err_code CANL_CALLCONV canl_get_error_code(canl_ctx cc); -char * +char * CANL_CALLCONV canl_get_error_message(canl_ctx); -int canl_get_error(canl_ctx cc, char ** reason); -int canl_io_close(canl_ctx cc, canl_io_handler io); -int canl_io_destroy(canl_ctx cc, canl_io_handler io); +canl_err_code CANL_CALLCONV +canl_get_error(canl_ctx cc, char ** reason); + +canl_err_code CANL_CALLCONV +canl_io_close(canl_ctx cc, canl_io_handler io); + +canl_err_code CANL_CALLCONV +canl_io_destroy(canl_ctx cc, canl_io_handler io); + +canl_err_code CANL_CALLCONV +canl_princ_name(canl_ctx, const canl_principal, char **); + +canl_err_code CANL_CALLCONV +canl_princ_mech(canl_ctx, const canl_principal, gss_OID *); + +char * CANL_CALLCONV +canl_mech2str(canl_ctx, gss_OID); -int canl_princ_name(canl_ctx, const canl_principal, char **); -int canl_princ_mech(canl_ctx, const canl_principal, gss_OID *); -char * canl_mech2str(canl_ctx, gss_OID); -const gss_OID canl_str2mech(canl_ctx, const char mech); +const gss_OID CANL_CALLCONV +canl_str2mech(canl_ctx, const char mech); #ifdef __cplusplus } diff --git a/emi.canl.canl-c/src/canl_err.c b/emi.canl.canl-c/src/canl_err.c index d77b643..08683ce 100644 --- a/emi.canl.canl-c/src/canl_err.c +++ b/emi.canl.canl-c/src/canl_err.c @@ -90,7 +90,8 @@ void reset_error (glb_ctx *cc, unsigned long err_code) } /* Provide human readable information about errors */ -int canl_get_error(canl_ctx cc, char **reason) +canl_err_code +canl_get_error(canl_ctx cc, char **reason) { int err = 0; int e_orig = unknown_error; -- 1.8.2.3