index 847eafc948857d8aaeb10b9023a651a2a3c299b2..1c67ab72530f1551769810c6797cda064d36eb3b 100644 (file)
#ifndef _POSIX_C_SOURCE
# define _POSIX_C_SOURCE 200112L
#endif
+#ifndef _XOPEN_SOURCE
+# define _XOPEN_SOURCE 600
+#endif
#ifndef _REENTRANT
# define _REENTRANT
#endif
# define NI_MAXHOST 1025
#endif
+/* OpenBSD doesn't have EPROTO, FreeBSD doesn't have EILSEQ. Oh what joy! */
+#ifndef EILSEQ
+# ifdef EPROTO
+# define EILSEQ EPROTO
+# else
+# define EILSEQ EINVAL
+# endif
+#endif
+
/* Secure/static macros. They work like `strcpy' and `strcat', but assure null
* termination. They work for static buffers only, because they use `sizeof'.
* The `SSTRCATF' combines the functionality of `snprintf' and `strcat' which
lcc_response_t res;
int status;
+ if (c->fh == NULL)
+ {
+ lcc_set_errno (c, EBADF);
+ return (-1);
+ }
+
status = lcc_send (c, command);
if (status != 0)
return (status);
int lcc_connect (const char *address, lcc_connection_t **ret_con) /* {{{ */
{
lcc_connection_t *c;
+ int status;
if (address == NULL)
return (-1);
return (-1);
memset (c, 0, sizeof (*c));
+ status = lcc_open_socket (c, address);
+ if (status != 0)
+ {
+ lcc_disconnect (c);
+ return (status);
+ }
+
*ret_con = c;
- return (lcc_open_socket (c, address));
+ return (0);
} /* }}} int lcc_connect */
int lcc_disconnect (lcc_connection_t *c) /* {{{ */
key = res.lines[i];
value = strchr (key, '=');
if (value == NULL)
- BAIL_OUT (EPROTO);
+ BAIL_OUT (EILSEQ);
*value = 0;
value++;
if (*ident_str == 0)
{
- lcc_set_errno (c, EPROTO);
+ lcc_set_errno (c, EILSEQ);
status = -1;
break;
}