From 04f20a21fbc592976c84557801071d8114d3f0e2 Mon Sep 17 00:00:00 2001 From: Evgeniy Khramtsov Date: Wed, 1 May 2013 21:02:29 +1000 Subject: [PATCH] Improve build procedure --- .gitignore | 20 - Makefile.in | 17 +- c_src/expat_erl.c | 316 ---- c_src/sha_drv.c | 120 -- c_src/xml.c | 261 ---- configure | 2482 ++++++++++-------------------- configure.ac | 57 +- include/ejabberd.hrl | 2 +- include/jlib.hrl | 15 +- rebar | Bin 0 -> 276843 bytes rebar.config.in | 19 +- rel/reltool.config.in | 47 + src/ejabberd.app.src | 37 - src/ejabberd.app.src.in | 16 + src/ejabberd.erl | 31 +- src/ejabberd_admin.erl | 2 +- src/ejabberd_app.erl | 29 +- src/ejabberd_auth_pam.erl | 2 +- src/ejabberd_config.erl | 2 +- src/ejabberd_frontend_socket.erl | 2 +- src/ejabberd_receiver.erl | 16 +- src/ejabberd_socket.erl | 10 +- src/eldap.erl | 1 - src/http_p1.erl | 18 +- src/mod_applepush_service.erl | 1 - src/mod_ip_blacklist.erl | 1 - src/mod_irc.erl | 2 +- src/sha.erl | 114 -- src/xml.erl | 433 ------ src/xml_stream.erl | 246 --- 30 files changed, 928 insertions(+), 3391 deletions(-) delete mode 100644 c_src/expat_erl.c delete mode 100644 c_src/sha_drv.c delete mode 100644 c_src/xml.c create mode 100755 rebar create mode 100644 rel/reltool.config.in delete mode 100644 src/ejabberd.app.src create mode 100644 src/ejabberd.app.src.in delete mode 100644 src/sha.erl delete mode 100644 src/xml.erl delete mode 100644 src/xml_stream.erl diff --git a/.gitignore b/.gitignore index 60f1a2614..51166f509 100644 --- a/.gitignore +++ b/.gitignore @@ -16,23 +16,3 @@ /doc/*.toc /doc/contributed_modules.tex /doc/version.tex -/src/*.beam -/src/*.so -/src/*.so.dSYM -/src/*/*.beam -/src/*/Makefile -/src/Makefile -/src/XmppAddr.asn1db -/src/XmppAddr.erl -/src/XmppAddr.hrl -/src/aclocal.m4 -/src/autom4te.cache -/src/config.log -/src/config.status -/src/ejabberd.init -/src/ejabberdctl.example -/src/eldap/ELDAPv3.asn1db -/src/eldap/ELDAPv3.erl -/src/eldap/ELDAPv3.hrl -/src/eldap/eldap_filter_yecc.erl -/src/epam diff --git a/Makefile.in b/Makefile.in index 0977e93a8..6f6716790 100644 --- a/Makefile.in +++ b/Makefile.in @@ -1,4 +1,4 @@ -REBAR = @REBAR@ +REBAR = rebar INSTALL = @INSTALL@ SED = @SED@ ERL = @ERL@ @@ -94,16 +94,25 @@ edoc: 'case edoc:application(ejabberd, ".", []) of ok -> halt(0); error -> halt(1) end.' clean: - rebar clean + $(REBAR) clean distclean: clean rm -f config.status rm -f config.log rm -f rebar.config - rm -rf deps/* + rm -rf deps rm -f Makefile + rm -rf rel/files + rm -rf rel/ejabberd + rm -f rel/reltool.config + rm -f src/ejabberd.app.src [ ! -f ../ChangeLog ] || rm -f ../ChangeLog +rel: + mkdir -p rel ; cd rel ; rm -rf files ejabberd ; \ + $(REBAR) create-node nodeid=ejabberd || exit 1; \ + $(REBAR) generate + TAGS: etags *.erl @@ -112,4 +121,4 @@ Makefile: Makefile.in dialyzer: $(BEAMS) @dialyzer -c . -.PHONY: src doc edoc dialyzer Makefile TAGS clean distclean +.PHONY: src doc edoc dialyzer Makefile TAGS clean distclean rel diff --git a/c_src/expat_erl.c b/c_src/expat_erl.c deleted file mode 100644 index 94f5446b5..000000000 --- a/c_src/expat_erl.c +++ /dev/null @@ -1,316 +0,0 @@ -/* - * ejabberd, Copyright (C) 2002-2013 ProcessOne - * - * This program is free software; you can redistribute it and/or - * modify it under the terms of the GNU General Public License as - * published by the Free Software Foundation; either version 2 of the - * License, or (at your option) any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - * General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with this program; if not, write to the Free Software - * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA - * 02111-1307 USA - * - */ - - -#include -#include -#include -#include -#include - - -#define XML_START 0 -#define XML_END 1 -#define XML_CDATA 2 -#define XML_ERROR 3 - -#define PARSE_COMMAND 0 -#define PARSE_FINAL_COMMAND 1 - -/* - * R15B changed several driver callbacks to use ErlDrvSizeT and - * ErlDrvSSizeT typedefs instead of int. - * This provides missing typedefs on older OTP versions. - */ -#if ERL_DRV_EXTENDED_MAJOR_VERSION < 2 -typedef int ErlDrvSizeT; -typedef int ErlDrvSSizeT; -#endif - -ei_x_buff event_buf; -ei_x_buff xmlns_buf; - -typedef struct { - ErlDrvPort port; - XML_Parser parser; -} expat_data; - -static XML_Memory_Handling_Suite ms; - -void encode_name(const XML_Char *name) -{ - char *name_start; - char *prefix_start; - char *buf; - int name_len, prefix_len, buf_len; - - if ((name_start = strchr(name, '\n'))) { - if ((prefix_start = strchr(name_start+1, '\n'))) { - name_len = prefix_start - name_start; - prefix_len = strlen(prefix_start+1); - buf_len = prefix_len + name_len; - buf = driver_alloc(buf_len); - memcpy(buf, prefix_start+1, prefix_len); - memcpy(buf+prefix_len, name_start, name_len); - buf[prefix_len] = ':'; - ei_x_encode_binary(&event_buf, buf, buf_len); - driver_free(buf); - } else { - ei_x_encode_binary(&event_buf, name_start+1, strlen(name_start+1)); - }; - } else { - ei_x_encode_binary(&event_buf, name, strlen(name)); - } -} - -void *erlXML_StartElementHandler(expat_data *d, - const XML_Char *name, - const XML_Char **atts) -{ - int i; - - ei_x_encode_list_header(&event_buf, 1); - ei_x_encode_tuple_header(&event_buf, 2); - ei_x_encode_long(&event_buf, XML_START); - ei_x_encode_tuple_header(&event_buf, 2); - encode_name(name); - ei_x_append(&event_buf, &xmlns_buf); - ei_x_free(&xmlns_buf); - ei_x_new(&xmlns_buf); - - for (i = 0; atts[i]; i += 2) {} - - if (i > 0) - { - ei_x_encode_list_header(&event_buf, i/2); - - for (i = 0; atts[i]; i += 2) - { - ei_x_encode_tuple_header(&event_buf, 2); - encode_name(atts[i]); - ei_x_encode_binary(&event_buf, atts[i+1], strlen(atts[i+1])); - } - } - - ei_x_encode_empty_list(&event_buf); - - return NULL; -} - -void *erlXML_EndElementHandler(expat_data *d, - const XML_Char *name) -{ - ei_x_encode_list_header(&event_buf, 1); - ei_x_encode_tuple_header(&event_buf, 2); - ei_x_encode_long(&event_buf, XML_END); - encode_name(name); - return NULL; -} - -void *erlXML_CharacterDataHandler(expat_data *d, - const XML_Char *s, - int len) -{ - ei_x_encode_list_header(&event_buf, 1); - ei_x_encode_tuple_header(&event_buf, 2); - ei_x_encode_long(&event_buf, XML_CDATA); - ei_x_encode_binary(&event_buf, s, len); - return NULL; -} - -void *erlXML_StartNamespaceDeclHandler(expat_data *d, - const XML_Char *prefix, - const XML_Char *uri) -{ - int prefix_len; - char *buf; - - /* From the expat documentation: - "For a default namespace declaration (xmlns='...'), - the prefix will be null ... - ... The URI will be null for the case where - the default namespace is being unset." - - FIXME: I'm not quite sure what all that means */ - if (uri == NULL) - return NULL; - - ei_x_encode_list_header(&xmlns_buf, 1); - ei_x_encode_tuple_header(&xmlns_buf, 2); - if (prefix) { - prefix_len = strlen(prefix); - buf = driver_alloc(7 + prefix_len); - strcpy(buf, "xmlns:"); - strcpy(buf+6, prefix); - ei_x_encode_binary(&xmlns_buf, buf, strlen(buf)); - driver_free(buf); - } else { - ei_x_encode_binary(&xmlns_buf, "xmlns", strlen("xmlns")); - }; - ei_x_encode_binary(&xmlns_buf, uri, strlen(uri)); - - return NULL; -} - -static ErlDrvData expat_erl_start(ErlDrvPort port, char *buff) -{ - expat_data* d = (expat_data*)driver_alloc(sizeof(expat_data)); - d->port = port; - d->parser = XML_ParserCreate_MM("UTF-8", &ms, "\n"); - XML_SetUserData(d->parser, d); - - set_port_control_flags(port, PORT_CONTROL_FLAG_BINARY); - - XML_SetStartElementHandler( - d->parser, (XML_StartElementHandler)erlXML_StartElementHandler); - XML_SetEndElementHandler( - d->parser, (XML_EndElementHandler)erlXML_EndElementHandler); - XML_SetCharacterDataHandler( - d->parser, (XML_CharacterDataHandler)erlXML_CharacterDataHandler); - - XML_SetStartNamespaceDeclHandler( - d->parser, (XML_StartNamespaceDeclHandler) erlXML_StartNamespaceDeclHandler); - XML_SetReturnNSTriplet(d->parser, 1); - - XML_SetDefaultHandler(d->parser, NULL); - - return (ErlDrvData)d; -} - -static void expat_erl_stop(ErlDrvData handle) -{ - XML_ParserFree(((expat_data *)handle)->parser); - driver_free((char*)handle); -} - -static ErlDrvSSizeT expat_erl_control(ErlDrvData drv_data, - unsigned int command, - char *buf, ErlDrvSizeT len, - char **rbuf, ErlDrvSizeT rlen) -{ - expat_data* d = (expat_data*)drv_data; - int res, errcode; - char *errstring; - ErlDrvBinary *b; - size_t size; - - switch (command) - { - case PARSE_COMMAND: - case PARSE_FINAL_COMMAND: - ei_x_new_with_version(&event_buf); - ei_x_new(&xmlns_buf); -#ifdef ENABLE_FLASH_HACK - /* Flash hack - Flash clients send a null byte after the stanza. Remove that... */ - { - int i; - int found_null = 0; - - /* Maybe the Flash client sent many stanzas in one packet. - If so, there is a null byte between every stanza. */ - for (i = 0; i < len; i++) { - if (buf[i] == '\0') { - buf[i] = ' '; - found_null = 1; - } - } - - /* And also remove the closing slash if this is a - flash:stream element. Assume that flash:stream is the - last element in the packet, and entirely contained in - it. This requires that a null byte has been found. */ - if (found_null && strstr(buf, " - buf[len - 3] is / (maybe) - */ - if (buf[len - 3] == '/') - buf[len - 3] = ' '; - } -#endif /* ENABLE_FLASH_HACK */ - - res = XML_Parse(d->parser, buf, len, command == PARSE_FINAL_COMMAND); - - if(!res) - { - errcode = XML_GetErrorCode(d->parser); - errstring = (char *)XML_ErrorString(errcode); - - ei_x_encode_list_header(&event_buf, 1); - ei_x_encode_tuple_header(&event_buf, 2); - ei_x_encode_long(&event_buf, XML_ERROR); - ei_x_encode_tuple_header(&event_buf, 2); - ei_x_encode_long(&event_buf, errcode); - ei_x_encode_binary(&event_buf, errstring, strlen(errstring)); - } - - ei_x_encode_empty_list(&event_buf); - - size = event_buf.index; - - b = driver_alloc_binary(size); - memcpy(b->orig_bytes, event_buf.buff, size); - - ei_x_free(&event_buf); - ei_x_free(&xmlns_buf); - - *rbuf = (char *)b; - return size; - default: - return 0; - } -} - -ErlDrvEntry expat_driver_entry = { - NULL, /* F_PTR init, N/A */ - expat_erl_start, /* L_PTR start, called when port is opened */ - expat_erl_stop, /* F_PTR stop, called when port is closed */ - NULL, /* F_PTR output, called when erlang has sent */ - NULL, /* F_PTR ready_input, called when input descriptor ready */ - NULL, /* F_PTR ready_output, called when output descriptor ready */ - "expat_erl", /* char *driver_name, the argument to open_port */ - NULL, /* F_PTR finish, called when unloaded */ - NULL, /* handle */ - expat_erl_control, /* F_PTR control, port_command callback */ - NULL, /* F_PTR timeout, reserved */ - NULL, /* F_PTR outputv, reserved */ - /* Added in Erlang/OTP R15B: */ - NULL, /* ready_async */ - NULL, /* flush */ - NULL, /* call */ - NULL, /* event */ - ERL_DRV_EXTENDED_MARKER, /* extended_marker */ - ERL_DRV_EXTENDED_MAJOR_VERSION, /* major_version */ - ERL_DRV_EXTENDED_MINOR_VERSION, /* minor_version */ - 0, /* driver_flags */ - NULL, /* handle2 */ - NULL, /* process_exit */ - NULL /* stop_select */ -}; - -DRIVER_INIT(expat_erl) /* must match name in driver_entry */ -{ - ms.malloc_fcn = driver_alloc; - ms.realloc_fcn = driver_realloc; - ms.free_fcn = driver_free; - return &expat_driver_entry; -} - - diff --git a/c_src/sha_drv.c b/c_src/sha_drv.c deleted file mode 100644 index 3558f790a..000000000 --- a/c_src/sha_drv.c +++ /dev/null @@ -1,120 +0,0 @@ -/* - * ejabberd, Copyright (C) 2002-2013 ProcessOne - * - * This program is free software; you can redistribute it and/or - * modify it under the terms of the GNU General Public License as - * published by the Free Software Foundation; either version 2 of the - * License, or (at your option) any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - * General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with this program; if not, write to the Free Software - * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA - * 02111-1307 USA - * - */ - -#include -#include -#ifdef HAVE_MD2 -#include -#endif - -/* - * R15B changed several driver callbacks to use ErlDrvSizeT and - * ErlDrvSSizeT typedefs instead of int. - * This provides missing typedefs on older OTP versions. - */ -#if ERL_DRV_EXTENDED_MAJOR_VERSION < 2 -typedef int ErlDrvSizeT; -typedef int ErlDrvSSizeT; -#endif - -static ErlDrvData sha_drv_start(ErlDrvPort port, char *buf) -{ - set_port_control_flags(port, PORT_CONTROL_FLAG_BINARY); - return NULL; -} - -static ErlDrvSSizeT sha_drv_control(ErlDrvData handle, - unsigned int command, - char *buf, ErlDrvSizeT len, - char **rbuf, ErlDrvSizeT rlen) -{ - ErlDrvBinary *b = NULL; - - switch (command) { -#ifdef HAVE_MD2 - case 2: - rlen = MD2_DIGEST_LENGTH; - b = driver_alloc_binary(rlen); - if (b) MD2((unsigned char*)buf, len, (unsigned char*)b->orig_bytes); - break; -#endif - case 224: - rlen = SHA224_DIGEST_LENGTH; - b = driver_alloc_binary(rlen); - if (b) SHA224((unsigned char*)buf, len, (unsigned char*)b->orig_bytes); - break; - case 256: - rlen = SHA256_DIGEST_LENGTH; - b = driver_alloc_binary(rlen); - if (b) SHA256((unsigned char*)buf, len, (unsigned char*)b->orig_bytes); - break; - case 384: - rlen = SHA384_DIGEST_LENGTH; - b = driver_alloc_binary(rlen); - if (b) SHA384((unsigned char*)buf, len, (unsigned char*)b->orig_bytes); - break; - case 512: - rlen = SHA512_DIGEST_LENGTH; - b = driver_alloc_binary(rlen); - if (b) SHA512((unsigned char*)buf, len, (unsigned char*)b->orig_bytes); - break; - }; - - if (b) { - *rbuf = (char *)b; - } else { - *rbuf = NULL; - rlen = 0; - }; - - return rlen; -} - -ErlDrvEntry sha_driver_entry = { - NULL, /* F_PTR init, N/A */ - sha_drv_start, /* L_PTR start, called when port is opened */ - NULL, /* F_PTR stop, called when port is closed */ - NULL, /* F_PTR output, called when erlang has sent */ - NULL, /* F_PTR ready_input, called when input descriptor ready */ - NULL, /* F_PTR ready_output, called when output descriptor ready */ - "sha_drv", /* char *driver_name, the argument to open_port */ - NULL, /* F_PTR finish, called when unloaded */ - NULL, /* handle */ - sha_drv_control, /* F_PTR control, port_command callback */ - NULL, /* F_PTR timeout, reserved */ - NULL, /* F_PTR outputv, reserved */ - /* Added in Erlang/OTP R15B: */ - NULL, /* ready_async */ - NULL, /* flush */ - NULL, /* call */ - NULL, /* event */ - ERL_DRV_EXTENDED_MARKER, /* extended_marker */ - ERL_DRV_EXTENDED_MAJOR_VERSION, /* major_version */ - ERL_DRV_EXTENDED_MINOR_VERSION, /* minor_version */ - 0, /* driver_flags */ - NULL, /* handle2 */ - NULL, /* process_exit */ - NULL /* stop_select */ -}; - -DRIVER_INIT(sha_drv) /* must match name in driver_entry */ -{ - return &sha_driver_entry; -} diff --git a/c_src/xml.c b/c_src/xml.c deleted file mode 100644 index 053694514..000000000 --- a/c_src/xml.c +++ /dev/null @@ -1,261 +0,0 @@ -#include -#include -#include - -#define SSL40 - -#ifdef SSL40 -#define ENIF_ALLOC(SIZE) enif_alloc(SIZE) -#define ENIF_FREE(PTR) enif_free(PTR) -#define ENIF_REALLOC(PTR, SIZE) enif_realloc(PTR, SIZE) -#define ENIF_ALLOC_BINARY(SIZE, BIN) enif_alloc_binary(SIZE, BIN) -#define ENIF_COMPARE(TERM1, TERM2) enif_compare(TERM1, TERM2) -#else -#define ENIF_ALLOC(SIZE) enif_alloc(env, SIZE) -#define ENIF_FREE(PTR) enif_free(env, PTR) -#define ENIF_REALLOC(PTR, SIZE) enif_realloc(env, PTR, SIZE) -#define ENIF_ALLOC_BINARY(SIZE, BIN) enif_alloc_binary(env, SIZE, BIN) -#define ENIF_COMPARE(TERM1, TERM2) enif_compare(env, TERM1, TERM2) -#endif - -static ERL_NIF_TERM atom_xmlelement; -static ERL_NIF_TERM atom_xmlcdata; - -struct buf { - int limit; - int len; - unsigned char *b; -}; - -static int make_element(ErlNifEnv* env, struct buf *rbuf, ERL_NIF_TERM el); - -static int load(ErlNifEnv* env, void** priv, ERL_NIF_TERM load_info) -{ - atom_xmlelement = enif_make_atom(env, "xmlel"); - atom_xmlcdata = enif_make_atom(env, "xmlcdata"); - return 0; -} - -static struct buf *init_buf(ErlNifEnv* env) -{ - struct buf *rbuf = ENIF_ALLOC(sizeof(struct buf)); - rbuf->limit = 1024; - rbuf->len = 0; - rbuf->b = ENIF_ALLOC(rbuf->limit); - return rbuf; -} - -static void destroy_buf(ErlNifEnv* env, struct buf *rbuf) -{ - if (rbuf) { - if (rbuf->b) { - ENIF_FREE(rbuf->b); - }; - ENIF_FREE(rbuf); - }; -} - -inline void resize_buf(ErlNifEnv* env, struct buf *rbuf, int len_to_add) -{ - int new_len = rbuf->len + len_to_add; - - if (new_len > rbuf->limit) { - while (new_len > rbuf->limit) - rbuf->limit *= 2; - rbuf->b = ENIF_REALLOC(rbuf->b, rbuf->limit); - } -} - -static void buf_add_char(ErlNifEnv* env, struct buf *rbuf, unsigned char c) -{ - resize_buf(env, rbuf, 1); - (rbuf->b)[rbuf->len] = c; - rbuf->len += 1; -} - -static void buf_add_str(ErlNifEnv* env, struct buf *rbuf, char *data, int len) -{ - resize_buf(env, rbuf, len); - memcpy(rbuf->b + rbuf->len, data, len); - rbuf->len += len; -} - -inline void crypt(ErlNifEnv* env, struct buf *rbuf, unsigned char *data, int len) -{ - int i; - - for (i = 0; i < len; i++) { - switch (data[i]) { - case '&': - buf_add_str(env, rbuf, "&", 5); - break; - case '<': - buf_add_str(env, rbuf, "<", 4); - break; - case '>': - buf_add_str(env, rbuf, ">", 4); - break; - case '"': - buf_add_str(env, rbuf, """, 6); - break; - case '\'': - buf_add_str(env, rbuf, "'", 6); - break; - default: - buf_add_char(env, rbuf, data[i]); - break; - }; - }; -} - -static int make_elements(ErlNifEnv* env, struct buf *rbuf, ERL_NIF_TERM els) -{ - ERL_NIF_TERM head, tail; - int ret = 0; - - while (enif_get_list_cell(env, els, &head, &tail)) { - ret = make_element(env, rbuf, head); - if (ret) { - els = tail; - } else { - break; - }; - }; - - return ret; -} - -static int make_attrs(ErlNifEnv* env, struct buf *rbuf, ERL_NIF_TERM attrs) -{ - ErlNifBinary name, data; - ERL_NIF_TERM head, tail; - const ERL_NIF_TERM *tuple; - int arity, ret = 1; - - while (enif_get_list_cell(env, attrs, &head, &tail)) { - if (enif_get_tuple(env, head, &arity, &tuple)) { - if (arity == 2) { - if (enif_inspect_iolist_as_binary(env, tuple[0], &name) && - enif_inspect_iolist_as_binary(env, tuple[1], &data)) { - buf_add_char(env, rbuf, ' '); - buf_add_str(env, rbuf, (char *)name.data, name.size); - buf_add_str(env, rbuf, "='", 2); - crypt(env, rbuf, data.data, data.size); - buf_add_char(env, rbuf, '\''); - attrs = tail; - } else { - ret = 0; - break; - }; - } else { - ret = 0; - break; - }; - } else { - ret = 0; - break; - }; - }; - - return ret; -} - -static int make_element(ErlNifEnv* env, struct buf *rbuf, ERL_NIF_TERM el) -{ - ErlNifBinary cdata, name; - const ERL_NIF_TERM *tuple; - int arity, ret = 0; - - if (enif_get_tuple(env, el, &arity, &tuple)) { - if (arity == 2) { - if (!ENIF_COMPARE(tuple[0], atom_xmlcdata)) { - if (enif_inspect_iolist_as_binary(env, tuple[1], &cdata)) { - crypt(env, rbuf, cdata.data, cdata.size); - ret = 1; - }; - }; - }; - if (arity == 4) { - if (!ENIF_COMPARE(tuple[0], atom_xmlelement)) { - if (enif_inspect_iolist_as_binary(env, tuple[1], &name)) { - buf_add_char(env, rbuf, '<'); - buf_add_str(env, rbuf, (char *)name.data, name.size); - ret = make_attrs(env, rbuf, tuple[2]); - if (ret) { - if (enif_is_empty_list(env, tuple[3])) { - buf_add_str(env, rbuf, "/>", 2); - } else { - buf_add_char(env, rbuf, '>'); - ret = make_elements(env, rbuf, tuple[3]); - if (ret) { - buf_add_str(env, rbuf, "'); - }; - }; - }; - }; - }; - }; - }; - - return ret; -} - -static ERL_NIF_TERM element_to(ErlNifEnv* env, int argc, - const ERL_NIF_TERM argv[], - int as_string) -{ - ErlNifBinary output; - ERL_NIF_TERM result; - struct buf *rbuf; - - if (argc == 1) { - rbuf = init_buf(env); - if (make_element(env, rbuf, argv[0])) { - if (as_string) { - (rbuf->b)[rbuf->len] = 0; - result = enif_make_string(env, (char *) rbuf->b, ERL_NIF_LATIN1); - destroy_buf(env, rbuf); - return result; - } else { - if (ENIF_ALLOC_BINARY(rbuf->len, &output)) { - memcpy(output.data, rbuf->b, rbuf->len); - result = enif_make_binary(env, &output); - destroy_buf(env, rbuf); - return result; - }; - }; - }; - destroy_buf(env, rbuf); - }; - - return enif_make_badarg(env); -} - -#ifdef SSL40 -static ERL_NIF_TERM element_to_string(ErlNifEnv* env, int argc, - const ERL_NIF_TERM argv[]) -{ - return element_to(env, argc, argv, 1); -} -#endif - -static ERL_NIF_TERM element_to_binary(ErlNifEnv* env, int argc, - const ERL_NIF_TERM argv[]) -{ - return element_to(env, argc, argv, 0); -} - -static ErlNifFunc nif_funcs[] = - { - /* Stupid Erlang bug with enif_make_string() is fixed - in R14A only (OTP-8685), so we can't use - element_to_string in Erlang < R14A.*/ -#ifdef SSL40 - {"element_to_string", 1, element_to_string}, -#endif - {"element_to_binary", 1, element_to_binary} - }; - -ERL_NIF_INIT(xml, nif_funcs, load, NULL, NULL, NULL) diff --git a/configure b/configure index 245fadd68..52268fbb1 100755 --- a/configure +++ b/configure @@ -557,6 +557,7 @@ PACKAGE_STRING='ejabberd 3.0.0' PACKAGE_BUGREPORT='ejabberd@process-one.net' PACKAGE_URL='' +ac_default_prefix=/ # Factoring default headers for most tests. ac_includes_default="\ #include @@ -593,8 +594,8 @@ ac_includes_default="\ # include #endif" -ac_default_prefix=/ ac_subst_vars='LTLIBOBJS +LIBOBJS target_os target_vendor target_cpu @@ -608,9 +609,17 @@ build_vendor build_cpu build md2 +EGREP +GREP +CPP +OBJEXT +EXEEXT +ac_ct_CC +CPPFLAGS +LDFLAGS +CFLAGS +CC INSTALLUSER -SSL_CFLAGS -SSL_LIBS nif full_xml transient_supervisors @@ -618,21 +627,8 @@ db_type flash_hack roster_gateway_workaround hipe -PAM_LIBS -PAM_CFLAGS -make_pam -pam -ZLIB_LIBS -ZLIB_CFLAGS -LIBOBJS -EXPAT_LIBS -EXPAT_CFLAGS -EGREP -GREP -CPP -LIBICONV MAKE -REBAR +ESCRIPT ERLANG_LIB_DIR ERLANG_ROOT_DIR ERLCFLAGS @@ -643,13 +639,6 @@ INSTALL_DATA INSTALL_SCRIPT INSTALL_PROGRAM SET_MAKE -OBJEXT -EXEEXT -ac_ct_CC -CPPFLAGS -LDFLAGS -CFLAGS -CC target_alias host_alias build_alias @@ -691,11 +680,6 @@ SHELL' ac_subst_files='' ac_user_opts=' enable_option_checking -with_libiconv_prefix -with_expat -with_zlib -enable_pam -with_pam enable_hipe enable_roster_gateway_workaround enable_flash_hack @@ -703,20 +687,19 @@ enable_mssql enable_transient_supervisors enable_full_xml enable_nif -with_openssl enable_user ' ac_precious_vars='build_alias host_alias target_alias +ERL +ERLC +ERLCFLAGS CC CFLAGS LDFLAGS LIBS CPPFLAGS -ERL -ERLC -ERLCFLAGS CPP' @@ -1334,7 +1317,6 @@ Optional Features: --disable-option-checking ignore unrecognized --enable/--with options --disable-FEATURE do not include FEATURE (same as --enable-FEATURE=no) --enable-FEATURE[=ARG] include FEATURE [ARG=yes] - --enable-pam enable pam (default: no) --enable-hipe compile natively with HiPE, not recommended (default: no) --enable-roster-gateway-workaround @@ -1354,17 +1336,10 @@ Optional Features: allow this system user to start ejabberd (default: no) -Optional Packages: - --with-PACKAGE[=ARG] use PACKAGE [ARG=yes] - --without-PACKAGE do not use PACKAGE (same as --with-PACKAGE=no) - --with-libiconv-prefix=PREFIX - prefix where libiconv is installed - --with-expat=PREFIX prefix where EXPAT is installed - --with-zlib=PREFIX prefix where zlib is installed - --with-pam=PREFIX prefix where PAM is installed - --with-openssl=PREFIX prefix where OPENSSL is installed - Some influential environment variables: + ERL Erlang/OTP interpreter command [autodetected] + ERLC Erlang/OTP compiler command [autodetected] + ERLCFLAGS Erlang/OTP compiler flags [none] CC C compiler command CFLAGS C compiler flags LDFLAGS linker flags, e.g. -L if you have libraries in a @@ -1372,9 +1347,6 @@ Some influential environment variables: LIBS libraries to pass to the linker, e.g. -l CPPFLAGS (Objective) C/C++ preprocessor flags, e.g. -I if you have headers in a nonstandard directory - ERL Erlang/OTP interpreter command [autodetected] - ERLC Erlang/OTP compiler command [autodetected] - ERLCFLAGS Erlang/OTP compiler flags [none] CPP C preprocessor Use these variables to override the choices made by `configure' or to help @@ -1457,44 +1429,6 @@ fi ## Autoconf initialization. ## ## ------------------------ ## -# ac_fn_c_try_compile LINENO -# -------------------------- -# Try to compile conftest.$ac_ext, and return whether this succeeded. -ac_fn_c_try_compile () -{ - as_lineno=${as_lineno-"$1"} as_lineno_stack=as_lineno_stack=$as_lineno_stack - rm -f conftest.$ac_objext - if { { ac_try="$ac_compile" -case "(($ac_try" in - *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; - *) ac_try_echo=$ac_try;; -esac -eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\"" -$as_echo "$ac_try_echo"; } >&5 - (eval "$ac_compile") 2>conftest.err - ac_status=$? - if test -s conftest.err; then - grep -v '^ *+' conftest.err >conftest.er1 - cat conftest.er1 >&5 - mv -f conftest.er1 conftest.err - fi - $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 - test $ac_status = 0; } && { - test -z "$ac_c_werror_flag" || - test ! -s conftest.err - } && test -s conftest.$ac_objext; then : - ac_retval=0 -else - $as_echo "$as_me: failed program was:" >&5 -sed 's/^/| /' conftest.$ac_ext >&5 - - ac_retval=1 -fi - eval $as_lineno_stack; test "x$as_lineno_stack" = x && { as_lineno=; unset as_lineno;} - as_fn_set_status $ac_retval - -} # ac_fn_c_try_compile - # ac_fn_erl_try_run LINENO # ------------------------ # Try to link conftest.$ac_ext, and return whether this succeeded. Assumes @@ -1537,21 +1471,21 @@ fi } # ac_fn_erl_try_run -# ac_fn_c_try_link LINENO -# ----------------------- -# Try to link conftest.$ac_ext, and return whether this succeeded. -ac_fn_c_try_link () +# ac_fn_c_try_compile LINENO +# -------------------------- +# Try to compile conftest.$ac_ext, and return whether this succeeded. +ac_fn_c_try_compile () { as_lineno=${as_lineno-"$1"} as_lineno_stack=as_lineno_stack=$as_lineno_stack - rm -f conftest.$ac_objext conftest$ac_exeext - if { { ac_try="$ac_link" + rm -f conftest.$ac_objext + if { { ac_try="$ac_compile" case "(($ac_try" in *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; *) ac_try_echo=$ac_try;; esac eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\"" $as_echo "$ac_try_echo"; } >&5 - (eval "$ac_link") 2>conftest.err + (eval "$ac_compile") 2>conftest.err ac_status=$? if test -s conftest.err; then grep -v '^ *+' conftest.err >conftest.er1 @@ -1562,10 +1496,7 @@ $as_echo "$ac_try_echo"; } >&5 test $ac_status = 0; } && { test -z "$ac_c_werror_flag" || test ! -s conftest.err - } && test -s conftest$ac_exeext && { - test "$cross_compiling" = yes || - $as_test_x conftest$ac_exeext - }; then : + } && test -s conftest.$ac_objext; then : ac_retval=0 else $as_echo "$as_me: failed program was:" >&5 @@ -1573,15 +1504,10 @@ sed 's/^/| /' conftest.$ac_ext >&5 ac_retval=1 fi - # Delete the IPA/IPO (Inter Procedural Analysis/Optimization) information - # created by the PGI compiler (conftest_ipa8_conftest.oo), as it would - # interfere with the next link command; also delete a directory that is - # left behind by Apple's compiler. We do this before executing the actions. - rm -rf conftest.dSYM conftest_ipa8_conftest.oo eval $as_lineno_stack; test "x$as_lineno_stack" = x && { as_lineno=; unset as_lineno;} as_fn_set_status $ac_retval -} # ac_fn_c_try_link +} # ac_fn_c_try_compile # ac_fn_c_try_cpp LINENO # ---------------------- @@ -2137,6 +2063,763 @@ ac_compiler_gnu=$ac_cv_c_compiler_gnu # Checks for programs. +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking whether ${MAKE-make} sets \$(MAKE)" >&5 +$as_echo_n "checking whether ${MAKE-make} sets \$(MAKE)... " >&6; } +set x ${MAKE-make} +ac_make=`$as_echo "$2" | sed 's/+/p/g; s/[^a-zA-Z0-9_]/_/g'` +if eval "test \"\${ac_cv_prog_make_${ac_make}_set+set}\"" = set; then : + $as_echo_n "(cached) " >&6 +else + cat >conftest.make <<\_ACEOF +SHELL = /bin/sh +all: + @echo '@@@%%%=$(MAKE)=@@@%%%' +_ACEOF +# GNU make sometimes prints "make[1]: Entering ...", which would confuse us. +case `${MAKE-make} -f conftest.make 2>/dev/null` in + *@@@%%%=?*=@@@%%%*) + eval ac_cv_prog_make_${ac_make}_set=yes;; + *) + eval ac_cv_prog_make_${ac_make}_set=no;; +esac +rm -f conftest.make +fi +if eval test \$ac_cv_prog_make_${ac_make}_set = yes; then + { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5 +$as_echo "yes" >&6; } + SET_MAKE= +else + { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 +$as_echo "no" >&6; } + SET_MAKE="MAKE=${MAKE-make}" +fi + +ac_aux_dir= +for ac_dir in "$srcdir" "$srcdir/.." "$srcdir/../.."; do + if test -f "$ac_dir/install-sh"; then + ac_aux_dir=$ac_dir + ac_install_sh="$ac_aux_dir/install-sh -c" + break + elif test -f "$ac_dir/install.sh"; then + ac_aux_dir=$ac_dir + ac_install_sh="$ac_aux_dir/install.sh -c" + break + elif test -f "$ac_dir/shtool"; then + ac_aux_dir=$ac_dir + ac_install_sh="$ac_aux_dir/shtool install -c" + break + fi +done +if test -z "$ac_aux_dir"; then + as_fn_error $? "cannot find install-sh, install.sh, or shtool in \"$srcdir\" \"$srcdir/..\" \"$srcdir/../..\"" "$LINENO" 5 +fi + +# These three variables are undocumented and unsupported, +# and are intended to be withdrawn in a future Autoconf release. +# They can cause serious problems if a builder's source tree is in a directory +# whose full name contains unusual characters. +ac_config_guess="$SHELL $ac_aux_dir/config.guess" # Please don't use this var. +ac_config_sub="$SHELL $ac_aux_dir/config.sub" # Please don't use this var. +ac_configure="$SHELL $ac_aux_dir/configure" # Please don't use this var. + + +# Find a good install program. We prefer a C program (faster), +# so one script is as good as another. But avoid the broken or +# incompatible versions: +# SysV /etc/install, /usr/sbin/install +# SunOS /usr/etc/install +# IRIX /sbin/install +# AIX /bin/install +# AmigaOS /C/install, which installs bootblocks on floppy discs +# AIX 4 /usr/bin/installbsd, which doesn't work without a -g flag +# AFS /usr/afsws/bin/install, which mishandles nonexistent args +# SVR4 /usr/ucb/install, which tries to use the nonexistent group "staff" +# OS/2's system install, which has a completely different semantic +# ./install, which can be erroneously created by make from ./install.sh. +# Reject install programs that cannot install multiple files. +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for a BSD-compatible install" >&5 +$as_echo_n "checking for a BSD-compatible install... " >&6; } +if test -z "$INSTALL"; then +if test "${ac_cv_path_install+set}" = set; then : + $as_echo_n "(cached) " >&6 +else + as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH +do + IFS=$as_save_IFS + test -z "$as_dir" && as_dir=. + # Account for people who put trailing slashes in PATH elements. +case $as_dir/ in #(( + ./ | .// | /[cC]/* | \ + /etc/* | /usr/sbin/* | /usr/etc/* | /sbin/* | /usr/afsws/bin/* | \ + ?:[\\/]os2[\\/]install[\\/]* | ?:[\\/]OS2[\\/]INSTALL[\\/]* | \ + /usr/ucb/* ) ;; + *) + # OSF1 and SCO ODT 3.0 have their own names for install. + # Don't use installbsd from OSF since it installs stuff as root + # by default. + for ac_prog in ginstall scoinst install; do + for ac_exec_ext in '' $ac_executable_extensions; do + if { test -f "$as_dir/$ac_prog$ac_exec_ext" && $as_test_x "$as_dir/$ac_prog$ac_exec_ext"; }; then + if test $ac_prog = install && + grep dspmsg "$as_dir/$ac_prog$ac_exec_ext" >/dev/null 2>&1; then + # AIX install. It has an incompatible calling convention. + : + elif test $ac_prog = install && + grep pwplus "$as_dir/$ac_prog$ac_exec_ext" >/dev/null 2>&1; then + # program-specific install script used by HP pwplus--don't use. + : + else + rm -rf conftest.one conftest.two conftest.dir + echo one > conftest.one + echo two > conftest.two + mkdir conftest.dir + if "$as_dir/$ac_prog$ac_exec_ext" -c conftest.one conftest.two "`pwd`/conftest.dir" && + test -s conftest.one && test -s conftest.two && + test -s conftest.dir/conftest.one && + test -s conftest.dir/conftest.two + then + ac_cv_path_install="$as_dir/$ac_prog$ac_exec_ext -c" + break 3 + fi + fi + fi + done + done + ;; +esac + + done +IFS=$as_save_IFS + +rm -rf conftest.one conftest.two conftest.dir + +fi + if test "${ac_cv_path_install+set}" = set; then + INSTALL=$ac_cv_path_install + else + # As a last resort, use the slow shell script. Don't cache a + # value for INSTALL within a source directory, because that will + # break other packages using the cache if that directory is + # removed, or if the value is a relative name. + INSTALL=$ac_install_sh + fi +fi +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $INSTALL" >&5 +$as_echo "$INSTALL" >&6; } + +# Use test -z because SunOS4 sh mishandles braces in ${var-val}. +# It thinks the first close brace ends the variable substitution. +test -z "$INSTALL_PROGRAM" && INSTALL_PROGRAM='${INSTALL}' + +test -z "$INSTALL_SCRIPT" && INSTALL_SCRIPT='${INSTALL}' + +test -z "$INSTALL_DATA" && INSTALL_DATA='${INSTALL} -m 644' + +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for a sed that does not truncate output" >&5 +$as_echo_n "checking for a sed that does not truncate output... " >&6; } +if test "${ac_cv_path_SED+set}" = set; then : + $as_echo_n "(cached) " >&6 +else + ac_script=s/aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa/bbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbb/ + for ac_i in 1 2 3 4 5 6 7; do + ac_script="$ac_script$as_nl$ac_script" + done + echo "$ac_script" 2>/dev/null | sed 99q >conftest.sed + { ac_script=; unset ac_script;} + if test -z "$SED"; then + ac_path_SED_found=false + # Loop through the user's path and test for each of PROGNAME-LIST + as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH +do + IFS=$as_save_IFS + test -z "$as_dir" && as_dir=. + for ac_prog in sed gsed; do + for ac_exec_ext in '' $ac_executable_extensions; do + ac_path_SED="$as_dir/$ac_prog$ac_exec_ext" + { test -f "$ac_path_SED" && $as_test_x "$ac_path_SED"; } || continue +# Check for GNU ac_path_SED and select it if it is found. + # Check for GNU $ac_path_SED +case `"$ac_path_SED" --version 2>&1` in +*GNU*) + ac_cv_path_SED="$ac_path_SED" ac_path_SED_found=:;; +*) + ac_count=0 + $as_echo_n 0123456789 >"conftest.in" + while : + do + cat "conftest.in" "conftest.in" >"conftest.tmp" + mv "conftest.tmp" "conftest.in" + cp "conftest.in" "conftest.nl" + $as_echo '' >> "conftest.nl" + "$ac_path_SED" -f conftest.sed < "conftest.nl" >"conftest.out" 2>/dev/null || break + diff "conftest.out" "conftest.nl" >/dev/null 2>&1 || break + as_fn_arith $ac_count + 1 && ac_count=$as_val + if test $ac_count -gt ${ac_path_SED_max-0}; then + # Best one so far, save it but keep looking for a better one + ac_cv_path_SED="$ac_path_SED" + ac_path_SED_max=$ac_count + fi + # 10*(2^10) chars as input seems more than enough + test $ac_count -gt 10 && break + done + rm -f conftest.in conftest.tmp conftest.nl conftest.out;; +esac + + $ac_path_SED_found && break 3 + done + done + done +IFS=$as_save_IFS + if test -z "$ac_cv_path_SED"; then + as_fn_error $? "no acceptable sed could be found in \$PATH" "$LINENO" 5 + fi +else + ac_cv_path_SED=$SED +fi + +fi +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_path_SED" >&5 +$as_echo "$ac_cv_path_SED" >&6; } + SED="$ac_cv_path_SED" + rm -f conftest.sed + + +if test "x$GCC" = "xyes"; then + CFLAGS="$CFLAGS -Wall" +fi + +# Checks Erlang runtime and compiler +if test -n "$ERL"; then + { $as_echo "$as_me:${as_lineno-$LINENO}: checking for erl" >&5 +$as_echo_n "checking for erl... " >&6; } + { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ERL" >&5 +$as_echo "$ERL" >&6; } +else + if test -n "$ac_tool_prefix"; then + # Extract the first word of "${ac_tool_prefix}erl", so it can be a program name with args. +set dummy ${ac_tool_prefix}erl; ac_word=$2 +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 +$as_echo_n "checking for $ac_word... " >&6; } +if test "${ac_cv_path_ERL+set}" = set; then : + $as_echo_n "(cached) " >&6 +else + case $ERL in + [\\/]* | ?:[\\/]*) + ac_cv_path_ERL="$ERL" # Let the user override the test with a path. + ;; + *) + as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH +do + IFS=$as_save_IFS + test -z "$as_dir" && as_dir=. + for ac_exec_ext in '' $ac_executable_extensions; do + if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then + ac_cv_path_ERL="$as_dir/$ac_word$ac_exec_ext" + $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 + break 2 + fi +done + done +IFS=$as_save_IFS + + ;; +esac +fi +ERL=$ac_cv_path_ERL +if test -n "$ERL"; then + { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ERL" >&5 +$as_echo "$ERL" >&6; } +else + { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 +$as_echo "no" >&6; } +fi + + +fi +if test -z "$ac_cv_path_ERL"; then + ac_pt_ERL=$ERL + # Extract the first word of "erl", so it can be a program name with args. +set dummy erl; ac_word=$2 +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 +$as_echo_n "checking for $ac_word... " >&6; } +if test "${ac_cv_path_ac_pt_ERL+set}" = set; then : + $as_echo_n "(cached) " >&6 +else + case $ac_pt_ERL in + [\\/]* | ?:[\\/]*) + ac_cv_path_ac_pt_ERL="$ac_pt_ERL" # Let the user override the test with a path. + ;; + *) + as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH +do + IFS=$as_save_IFS + test -z "$as_dir" && as_dir=. + for ac_exec_ext in '' $ac_executable_extensions; do + if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then + ac_cv_path_ac_pt_ERL="$as_dir/$ac_word$ac_exec_ext" + $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 + break 2 + fi +done + done +IFS=$as_save_IFS + + ;; +esac +fi +ac_pt_ERL=$ac_cv_path_ac_pt_ERL +if test -n "$ac_pt_ERL"; then + { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_pt_ERL" >&5 +$as_echo "$ac_pt_ERL" >&6; } +else + { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 +$as_echo "no" >&6; } +fi + + if test "x$ac_pt_ERL" = x; then + ERL="not found" + else + case $cross_compiling:$ac_tool_warned in +yes:) +{ $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5 +$as_echo "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;} +ac_tool_warned=yes ;; +esac + ERL=$ac_pt_ERL + fi +else + ERL="$ac_cv_path_ERL" +fi +fi + +if test "$ERL" = "not found"; then + as_fn_error $? "Erlang/OTP interpreter (erl) not found but required" "$LINENO" 5 +fi + +if test -n "$ERLC"; then + { $as_echo "$as_me:${as_lineno-$LINENO}: checking for erlc" >&5 +$as_echo_n "checking for erlc... " >&6; } + { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ERLC" >&5 +$as_echo "$ERLC" >&6; } +else + if test -n "$ac_tool_prefix"; then + # Extract the first word of "${ac_tool_prefix}erlc", so it can be a program name with args. +set dummy ${ac_tool_prefix}erlc; ac_word=$2 +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 +$as_echo_n "checking for $ac_word... " >&6; } +if test "${ac_cv_path_ERLC+set}" = set; then : + $as_echo_n "(cached) " >&6 +else + case $ERLC in + [\\/]* | ?:[\\/]*) + ac_cv_path_ERLC="$ERLC" # Let the user override the test with a path. + ;; + *) + as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH +do + IFS=$as_save_IFS + test -z "$as_dir" && as_dir=. + for ac_exec_ext in '' $ac_executable_extensions; do + if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then + ac_cv_path_ERLC="$as_dir/$ac_word$ac_exec_ext" + $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 + break 2 + fi +done + done +IFS=$as_save_IFS + + ;; +esac +fi +ERLC=$ac_cv_path_ERLC +if test -n "$ERLC"; then + { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ERLC" >&5 +$as_echo "$ERLC" >&6; } +else + { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 +$as_echo "no" >&6; } +fi + + +fi +if test -z "$ac_cv_path_ERLC"; then + ac_pt_ERLC=$ERLC + # Extract the first word of "erlc", so it can be a program name with args. +set dummy erlc; ac_word=$2 +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 +$as_echo_n "checking for $ac_word... " >&6; } +if test "${ac_cv_path_ac_pt_ERLC+set}" = set; then : + $as_echo_n "(cached) " >&6 +else + case $ac_pt_ERLC in + [\\/]* | ?:[\\/]*) + ac_cv_path_ac_pt_ERLC="$ac_pt_ERLC" # Let the user override the test with a path. + ;; + *) + as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH +do + IFS=$as_save_IFS + test -z "$as_dir" && as_dir=. + for ac_exec_ext in '' $ac_executable_extensions; do + if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then + ac_cv_path_ac_pt_ERLC="$as_dir/$ac_word$ac_exec_ext" + $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 + break 2 + fi +done + done +IFS=$as_save_IFS + + ;; +esac +fi +ac_pt_ERLC=$ac_cv_path_ac_pt_ERLC +if test -n "$ac_pt_ERLC"; then + { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_pt_ERLC" >&5 +$as_echo "$ac_pt_ERLC" >&6; } +else + { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 +$as_echo "no" >&6; } +fi + + if test "x$ac_pt_ERLC" = x; then + ERLC="not found" + else + case $cross_compiling:$ac_tool_warned in +yes:) +{ $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5 +$as_echo "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;} +ac_tool_warned=yes ;; +esac + ERLC=$ac_pt_ERLC + fi +else + ERLC="$ac_cv_path_ERLC" +fi + +fi + +if test "$ERLC" = "not found"; then + as_fn_error $? "Erlang/OTP compiler (erlc) not found but required" "$LINENO" 5 +fi + + +# Checks and sets ERLANG_ROOT_DIR and ERLANG_LIB_DIR variable + +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for Erlang/OTP root directory" >&5 +$as_echo_n "checking for Erlang/OTP root directory... " >&6; } +if test "${ac_cv_erlang_root_dir+set}" = set; then : + $as_echo_n "(cached) " >&6 +else + ac_ext=erl +ac_compile='$ERLC $ERLCFLAGS -b beam conftest.$ac_ext >&5' +ac_link='$ERLC $ERLCFLAGS -b beam conftest.$ac_ext >&5 && echo "#!/bin/sh" > conftest$ac_exeext && $as_echo "\"$ERL\" -run conftest start -run init stop -noshell" >> conftest$ac_exeext && chmod +x conftest$ac_exeext' + if test "$cross_compiling" = yes; then : + { { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5 +$as_echo "$as_me: error: in \`$ac_pwd':" >&2;} +as_fn_error $? "cannot run test program while cross compiling +See \`config.log' for more details" "$LINENO" 5 ; } +else + cat > conftest.$ac_ext <<_ACEOF +-module(conftest). +-export([start/0]). + +start() -> + RootDir = code:root_dir(), + file:write_file("conftest.out", RootDir), + ReturnValue = 0, + halt(ReturnValue) +. + +_ACEOF +if ac_fn_erl_try_run "$LINENO"; then : + ac_cv_erlang_root_dir=`cat conftest.out` + rm -f conftest.out +else + rm -f conftest.out + { { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5 +$as_echo "$as_me: error: in \`$ac_pwd':" >&2;} +as_fn_error $? "test Erlang program execution failed +See \`config.log' for more details" "$LINENO" 5 ; } +fi +rm -f core *.core core.conftest.* gmon.out bb.out conftest$ac_exeext \ + conftest.$ac_objext conftest.beam conftest.$ac_ext +fi + + ac_ext=c +ac_cpp='$CPP $CPPFLAGS' +ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5' +ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' +ac_compiler_gnu=$ac_cv_c_compiler_gnu + +fi +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_erlang_root_dir" >&5 +$as_echo "$ac_cv_erlang_root_dir" >&6; } +ERLANG_ROOT_DIR=$ac_cv_erlang_root_dir + + +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for Erlang/OTP library base directory" >&5 +$as_echo_n "checking for Erlang/OTP library base directory... " >&6; } +if test "${ac_cv_erlang_lib_dir+set}" = set; then : + $as_echo_n "(cached) " >&6 +else + ac_ext=erl +ac_compile='$ERLC $ERLCFLAGS -b beam conftest.$ac_ext >&5' +ac_link='$ERLC $ERLCFLAGS -b beam conftest.$ac_ext >&5 && echo "#!/bin/sh" > conftest$ac_exeext && $as_echo "\"$ERL\" -run conftest start -run init stop -noshell" >> conftest$ac_exeext && chmod +x conftest$ac_exeext' + if test "$cross_compiling" = yes; then : + { { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5 +$as_echo "$as_me: error: in \`$ac_pwd':" >&2;} +as_fn_error $? "cannot run test program while cross compiling +See \`config.log' for more details" "$LINENO" 5 ; } +else + cat > conftest.$ac_ext <<_ACEOF +-module(conftest). +-export([start/0]). + +start() -> + LibDir = code:lib_dir(), + file:write_file("conftest.out", LibDir), + ReturnValue = 0, + halt(ReturnValue) +. + +_ACEOF +if ac_fn_erl_try_run "$LINENO"; then : + ac_cv_erlang_lib_dir=`cat conftest.out` + rm -f conftest.out +else + rm -f conftest.out + { { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5 +$as_echo "$as_me: error: in \`$ac_pwd':" >&2;} +as_fn_error $? "test Erlang program execution failed +See \`config.log' for more details" "$LINENO" 5 ; } +fi +rm -f core *.core core.conftest.* gmon.out bb.out conftest$ac_exeext \ + conftest.$ac_objext conftest.beam conftest.$ac_ext +fi + + ac_ext=c +ac_cpp='$CPP $CPPFLAGS' +ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5' +ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' +ac_compiler_gnu=$ac_cv_c_compiler_gnu + +fi +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_erlang_lib_dir" >&5 +$as_echo "$ac_cv_erlang_lib_dir" >&6; } +ERLANG_LIB_DIR=$ac_cv_erlang_lib_dir + + + +#locating escript +# Extract the first word of "escript", so it can be a program name with args. +set dummy escript; ac_word=$2 +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 +$as_echo_n "checking for $ac_word... " >&6; } +if test "${ac_cv_path_ESCRIPT+set}" = set; then : + $as_echo_n "(cached) " >&6 +else + case $ESCRIPT in + [\\/]* | ?:[\\/]*) + ac_cv_path_ESCRIPT="$ESCRIPT" # Let the user override the test with a path. + ;; + *) + as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH +do + IFS=$as_save_IFS + test -z "$as_dir" && as_dir=. + for ac_exec_ext in '' $ac_executable_extensions; do + if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then + ac_cv_path_ESCRIPT="$as_dir/$ac_word$ac_exec_ext" + $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 + break 2 + fi +done + done +IFS=$as_save_IFS + + ;; +esac +fi +ESCRIPT=$ac_cv_path_ESCRIPT +if test -n "$ESCRIPT"; then + { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ESCRIPT" >&5 +$as_echo "$ESCRIPT" >&6; } +else + { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 +$as_echo "no" >&6; } +fi + + + +#locating make +# Extract the first word of "make", so it can be a program name with args. +set dummy make; ac_word=$2 +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 +$as_echo_n "checking for $ac_word... " >&6; } +if test "${ac_cv_prog_MAKE+set}" = set; then : + $as_echo_n "(cached) " >&6 +else + if test -n "$MAKE"; then + ac_cv_prog_MAKE="$MAKE" # Let the user override the test. +else +as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH +do + IFS=$as_save_IFS + test -z "$as_dir" && as_dir=. + for ac_exec_ext in '' $ac_executable_extensions; do + if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then + ac_cv_prog_MAKE="make" + $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 + break 2 + fi +done + done +IFS=$as_save_IFS + +fi +fi +MAKE=$ac_cv_prog_MAKE +if test -n "$MAKE"; then + { $as_echo "$as_me:${as_lineno-$LINENO}: result: $MAKE" >&5 +$as_echo "$MAKE" >&6; } +else + { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 +$as_echo "no" >&6; } +fi + + + +if test "x$ESCRIPT" = "x"; then + as_fn_error $? "'escript' was not found" "$LINENO" 5 +fi + +if test "x$MAKE" = "x"; then + as_fn_error $? "'make' was not found" "$LINENO" 5 +fi + +# Change default prefix + + +# Check whether --enable-hipe was given. +if test "${enable_hipe+set}" = set; then : + enableval=$enable_hipe; case "${enableval}" in + yes) hipe=true ;; + no) hipe=false ;; + *) as_fn_error $? "bad value ${enableval} for --enable-hipe" "$LINENO" 5 ;; +esac +else + hipe=false +fi + + + +# Check whether --enable-roster_gateway_workaround was given. +if test "${enable_roster_gateway_workaround+set}" = set; then : + enableval=$enable_roster_gateway_workaround; case "${enableval}" in + yes) roster_gateway_workaround=true ;; + no) roster_gateway_workaround=false ;; + *) as_fn_error $? "bad value ${enableval} for --enable-roster-gateway-workaround" "$LINENO" 5 ;; +esac +else + roster_gateway_workaround=false +fi + + + +# Check whether --enable-flash_hack was given. +if test "${enable_flash_hack+set}" = set; then : + enableval=$enable_flash_hack; case "${enableval}" in + yes) flash_hack=true ;; + no) flash_hack=false ;; + *) as_fn_error $? "bad value ${enableval} for --enable-flash-hack" "$LINENO" 5 ;; +esac +else + flash_hack=false +fi + + + +# Check whether --enable-mssql was given. +if test "${enable_mssql+set}" = set; then : + enableval=$enable_mssql; case "${enableval}" in + yes) db_type=mssql ;; + no) db_type=generic ;; + *) as_fn_error $? "bad value ${enableval} for --enable-mssql" "$LINENO" 5 ;; +esac +else + db_type=generic +fi + + + +# Check whether --enable-transient_supervisors was given. +if test "${enable_transient_supervisors+set}" = set; then : + enableval=$enable_transient_supervisors; case "${enableval}" in + yes) transient_supervisors=true ;; + no) transient_supervisors=false ;; + *) as_fn_error $? "bad value ${enableval} for --enable-transient_supervisors" "$LINENO" 5 ;; +esac +else + transient_supervisors=true +fi + + + +# Check whether --enable-full_xml was given. +if test "${enable_full_xml+set}" = set; then : + enableval=$enable_full_xml; case "${enableval}" in + yes) full_xml=true ;; + no) full_xml=false ;; + *) as_fn_error $? "bad value ${enableval} for --enable-full-xml" "$LINENO" 5 ;; +esac +else + full_xml=false +fi + + + +# Check whether --enable-nif was given. +if test "${enable_nif+set}" = set; then : + enableval=$enable_nif; case "${enableval}" in + yes) nif=true ;; + no) nif=false ;; + *) as_fn_error $? "bad value ${enableval} for --enable-nif" "$LINENO" 5 ;; +esac +else + nif=false +fi + + + +ac_config_files="$ac_config_files Makefile rebar.config src/ejabberd.app.src rel/reltool.config" + + +ENABLEUSER="" +# Check whether --enable-user was given. +if test "${enable_user+set}" = set; then : + enableval=$enable_user; case "${enableval}" in + yes) ENABLEUSER=`whoami` ;; + no) ENABLEUSER="" ;; + *) ENABLEUSER=$enableval + esac +fi + +if test "$ENABLEUSER" != ""; then + echo "allow this system user to start ejabberd: $ENABLEUSER" + INSTALLUSER=$ENABLEUSER + +fi + ac_ext=c ac_cpp='$CPP $CPPFLAGS' ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5' @@ -2927,815 +3610,7 @@ ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5' ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' ac_compiler_gnu=$ac_cv_c_compiler_gnu -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking whether ${MAKE-make} sets \$(MAKE)" >&5 -$as_echo_n "checking whether ${MAKE-make} sets \$(MAKE)... " >&6; } -set x ${MAKE-make} -ac_make=`$as_echo "$2" | sed 's/+/p/g; s/[^a-zA-Z0-9_]/_/g'` -if eval "test \"\${ac_cv_prog_make_${ac_make}_set+set}\"" = set; then : - $as_echo_n "(cached) " >&6 -else - cat >conftest.make <<\_ACEOF -SHELL = /bin/sh -all: - @echo '@@@%%%=$(MAKE)=@@@%%%' -_ACEOF -# GNU make sometimes prints "make[1]: Entering ...", which would confuse us. -case `${MAKE-make} -f conftest.make 2>/dev/null` in - *@@@%%%=?*=@@@%%%*) - eval ac_cv_prog_make_${ac_make}_set=yes;; - *) - eval ac_cv_prog_make_${ac_make}_set=no;; -esac -rm -f conftest.make -fi -if eval test \$ac_cv_prog_make_${ac_make}_set = yes; then - { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5 -$as_echo "yes" >&6; } - SET_MAKE= -else - { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 -$as_echo "no" >&6; } - SET_MAKE="MAKE=${MAKE-make}" -fi -ac_aux_dir= -for ac_dir in "$srcdir" "$srcdir/.." "$srcdir/../.."; do - if test -f "$ac_dir/install-sh"; then - ac_aux_dir=$ac_dir - ac_install_sh="$ac_aux_dir/install-sh -c" - break - elif test -f "$ac_dir/install.sh"; then - ac_aux_dir=$ac_dir - ac_install_sh="$ac_aux_dir/install.sh -c" - break - elif test -f "$ac_dir/shtool"; then - ac_aux_dir=$ac_dir - ac_install_sh="$ac_aux_dir/shtool install -c" - break - fi -done -if test -z "$ac_aux_dir"; then - as_fn_error $? "cannot find install-sh, install.sh, or shtool in \"$srcdir\" \"$srcdir/..\" \"$srcdir/../..\"" "$LINENO" 5 -fi - -# These three variables are undocumented and unsupported, -# and are intended to be withdrawn in a future Autoconf release. -# They can cause serious problems if a builder's source tree is in a directory -# whose full name contains unusual characters. -ac_config_guess="$SHELL $ac_aux_dir/config.guess" # Please don't use this var. -ac_config_sub="$SHELL $ac_aux_dir/config.sub" # Please don't use this var. -ac_configure="$SHELL $ac_aux_dir/configure" # Please don't use this var. - - -# Find a good install program. We prefer a C program (faster), -# so one script is as good as another. But avoid the broken or -# incompatible versions: -# SysV /etc/install, /usr/sbin/install -# SunOS /usr/etc/install -# IRIX /sbin/install -# AIX /bin/install -# AmigaOS /C/install, which installs bootblocks on floppy discs -# AIX 4 /usr/bin/installbsd, which doesn't work without a -g flag -# AFS /usr/afsws/bin/install, which mishandles nonexistent args -# SVR4 /usr/ucb/install, which tries to use the nonexistent group "staff" -# OS/2's system install, which has a completely different semantic -# ./install, which can be erroneously created by make from ./install.sh. -# Reject install programs that cannot install multiple files. -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for a BSD-compatible install" >&5 -$as_echo_n "checking for a BSD-compatible install... " >&6; } -if test -z "$INSTALL"; then -if test "${ac_cv_path_install+set}" = set; then : - $as_echo_n "(cached) " >&6 -else - as_save_IFS=$IFS; IFS=$PATH_SEPARATOR -for as_dir in $PATH -do - IFS=$as_save_IFS - test -z "$as_dir" && as_dir=. - # Account for people who put trailing slashes in PATH elements. -case $as_dir/ in #(( - ./ | .// | /[cC]/* | \ - /etc/* | /usr/sbin/* | /usr/etc/* | /sbin/* | /usr/afsws/bin/* | \ - ?:[\\/]os2[\\/]install[\\/]* | ?:[\\/]OS2[\\/]INSTALL[\\/]* | \ - /usr/ucb/* ) ;; - *) - # OSF1 and SCO ODT 3.0 have their own names for install. - # Don't use installbsd from OSF since it installs stuff as root - # by default. - for ac_prog in ginstall scoinst install; do - for ac_exec_ext in '' $ac_executable_extensions; do - if { test -f "$as_dir/$ac_prog$ac_exec_ext" && $as_test_x "$as_dir/$ac_prog$ac_exec_ext"; }; then - if test $ac_prog = install && - grep dspmsg "$as_dir/$ac_prog$ac_exec_ext" >/dev/null 2>&1; then - # AIX install. It has an incompatible calling convention. - : - elif test $ac_prog = install && - grep pwplus "$as_dir/$ac_prog$ac_exec_ext" >/dev/null 2>&1; then - # program-specific install script used by HP pwplus--don't use. - : - else - rm -rf conftest.one conftest.two conftest.dir - echo one > conftest.one - echo two > conftest.two - mkdir conftest.dir - if "$as_dir/$ac_prog$ac_exec_ext" -c conftest.one conftest.two "`pwd`/conftest.dir" && - test -s conftest.one && test -s conftest.two && - test -s conftest.dir/conftest.one && - test -s conftest.dir/conftest.two - then - ac_cv_path_install="$as_dir/$ac_prog$ac_exec_ext -c" - break 3 - fi - fi - fi - done - done - ;; -esac - - done -IFS=$as_save_IFS - -rm -rf conftest.one conftest.two conftest.dir - -fi - if test "${ac_cv_path_install+set}" = set; then - INSTALL=$ac_cv_path_install - else - # As a last resort, use the slow shell script. Don't cache a - # value for INSTALL within a source directory, because that will - # break other packages using the cache if that directory is - # removed, or if the value is a relative name. - INSTALL=$ac_install_sh - fi -fi -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $INSTALL" >&5 -$as_echo "$INSTALL" >&6; } - -# Use test -z because SunOS4 sh mishandles braces in ${var-val}. -# It thinks the first close brace ends the variable substitution. -test -z "$INSTALL_PROGRAM" && INSTALL_PROGRAM='${INSTALL}' - -test -z "$INSTALL_SCRIPT" && INSTALL_SCRIPT='${INSTALL}' - -test -z "$INSTALL_DATA" && INSTALL_DATA='${INSTALL} -m 644' - -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for a sed that does not truncate output" >&5 -$as_echo_n "checking for a sed that does not truncate output... " >&6; } -if test "${ac_cv_path_SED+set}" = set; then : - $as_echo_n "(cached) " >&6 -else - ac_script=s/aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa/bbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbb/ - for ac_i in 1 2 3 4 5 6 7; do - ac_script="$ac_script$as_nl$ac_script" - done - echo "$ac_script" 2>/dev/null | sed 99q >conftest.sed - { ac_script=; unset ac_script;} - if test -z "$SED"; then - ac_path_SED_found=false - # Loop through the user's path and test for each of PROGNAME-LIST - as_save_IFS=$IFS; IFS=$PATH_SEPARATOR -for as_dir in $PATH -do - IFS=$as_save_IFS - test -z "$as_dir" && as_dir=. - for ac_prog in sed gsed; do - for ac_exec_ext in '' $ac_executable_extensions; do - ac_path_SED="$as_dir/$ac_prog$ac_exec_ext" - { test -f "$ac_path_SED" && $as_test_x "$ac_path_SED"; } || continue -# Check for GNU ac_path_SED and select it if it is found. - # Check for GNU $ac_path_SED -case `"$ac_path_SED" --version 2>&1` in -*GNU*) - ac_cv_path_SED="$ac_path_SED" ac_path_SED_found=:;; -*) - ac_count=0 - $as_echo_n 0123456789 >"conftest.in" - while : - do - cat "conftest.in" "conftest.in" >"conftest.tmp" - mv "conftest.tmp" "conftest.in" - cp "conftest.in" "conftest.nl" - $as_echo '' >> "conftest.nl" - "$ac_path_SED" -f conftest.sed < "conftest.nl" >"conftest.out" 2>/dev/null || break - diff "conftest.out" "conftest.nl" >/dev/null 2>&1 || break - as_fn_arith $ac_count + 1 && ac_count=$as_val - if test $ac_count -gt ${ac_path_SED_max-0}; then - # Best one so far, save it but keep looking for a better one - ac_cv_path_SED="$ac_path_SED" - ac_path_SED_max=$ac_count - fi - # 10*(2^10) chars as input seems more than enough - test $ac_count -gt 10 && break - done - rm -f conftest.in conftest.tmp conftest.nl conftest.out;; -esac - - $ac_path_SED_found && break 3 - done - done - done -IFS=$as_save_IFS - if test -z "$ac_cv_path_SED"; then - as_fn_error $? "no acceptable sed could be found in \$PATH" "$LINENO" 5 - fi -else - ac_cv_path_SED=$SED -fi - -fi -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_path_SED" >&5 -$as_echo "$ac_cv_path_SED" >&6; } - SED="$ac_cv_path_SED" - rm -f conftest.sed - - -if test "x$GCC" = "xyes"; then - CFLAGS="$CFLAGS -Wall" -fi - -# Checks Erlang runtime and compiler -if test -n "$ERL"; then - { $as_echo "$as_me:${as_lineno-$LINENO}: checking for erl" >&5 -$as_echo_n "checking for erl... " >&6; } - { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ERL" >&5 -$as_echo "$ERL" >&6; } -else - if test -n "$ac_tool_prefix"; then - # Extract the first word of "${ac_tool_prefix}erl", so it can be a program name with args. -set dummy ${ac_tool_prefix}erl; ac_word=$2 -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 -$as_echo_n "checking for $ac_word... " >&6; } -if test "${ac_cv_path_ERL+set}" = set; then : - $as_echo_n "(cached) " >&6 -else - case $ERL in - [\\/]* | ?:[\\/]*) - ac_cv_path_ERL="$ERL" # Let the user override the test with a path. - ;; - *) - as_save_IFS=$IFS; IFS=$PATH_SEPARATOR -for as_dir in $PATH -do - IFS=$as_save_IFS - test -z "$as_dir" && as_dir=. - for ac_exec_ext in '' $ac_executable_extensions; do - if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then - ac_cv_path_ERL="$as_dir/$ac_word$ac_exec_ext" - $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 - break 2 - fi -done - done -IFS=$as_save_IFS - - ;; -esac -fi -ERL=$ac_cv_path_ERL -if test -n "$ERL"; then - { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ERL" >&5 -$as_echo "$ERL" >&6; } -else - { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 -$as_echo "no" >&6; } -fi - - -fi -if test -z "$ac_cv_path_ERL"; then - ac_pt_ERL=$ERL - # Extract the first word of "erl", so it can be a program name with args. -set dummy erl; ac_word=$2 -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 -$as_echo_n "checking for $ac_word... " >&6; } -if test "${ac_cv_path_ac_pt_ERL+set}" = set; then : - $as_echo_n "(cached) " >&6 -else - case $ac_pt_ERL in - [\\/]* | ?:[\\/]*) - ac_cv_path_ac_pt_ERL="$ac_pt_ERL" # Let the user override the test with a path. - ;; - *) - as_save_IFS=$IFS; IFS=$PATH_SEPARATOR -for as_dir in $PATH -do - IFS=$as_save_IFS - test -z "$as_dir" && as_dir=. - for ac_exec_ext in '' $ac_executable_extensions; do - if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then - ac_cv_path_ac_pt_ERL="$as_dir/$ac_word$ac_exec_ext" - $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 - break 2 - fi -done - done -IFS=$as_save_IFS - - ;; -esac -fi -ac_pt_ERL=$ac_cv_path_ac_pt_ERL -if test -n "$ac_pt_ERL"; then - { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_pt_ERL" >&5 -$as_echo "$ac_pt_ERL" >&6; } -else - { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 -$as_echo "no" >&6; } -fi - - if test "x$ac_pt_ERL" = x; then - ERL="not found" - else - case $cross_compiling:$ac_tool_warned in -yes:) -{ $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5 -$as_echo "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;} -ac_tool_warned=yes ;; -esac - ERL=$ac_pt_ERL - fi -else - ERL="$ac_cv_path_ERL" -fi -fi - -if test "$ERL" = "not found"; then - as_fn_error $? "Erlang/OTP interpreter (erl) not found but required" "$LINENO" 5 -fi - -if test -n "$ERLC"; then - { $as_echo "$as_me:${as_lineno-$LINENO}: checking for erlc" >&5 -$as_echo_n "checking for erlc... " >&6; } - { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ERLC" >&5 -$as_echo "$ERLC" >&6; } -else - if test -n "$ac_tool_prefix"; then - # Extract the first word of "${ac_tool_prefix}erlc", so it can be a program name with args. -set dummy ${ac_tool_prefix}erlc; ac_word=$2 -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 -$as_echo_n "checking for $ac_word... " >&6; } -if test "${ac_cv_path_ERLC+set}" = set; then : - $as_echo_n "(cached) " >&6 -else - case $ERLC in - [\\/]* | ?:[\\/]*) - ac_cv_path_ERLC="$ERLC" # Let the user override the test with a path. - ;; - *) - as_save_IFS=$IFS; IFS=$PATH_SEPARATOR -for as_dir in $PATH -do - IFS=$as_save_IFS - test -z "$as_dir" && as_dir=. - for ac_exec_ext in '' $ac_executable_extensions; do - if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then - ac_cv_path_ERLC="$as_dir/$ac_word$ac_exec_ext" - $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 - break 2 - fi -done - done -IFS=$as_save_IFS - - ;; -esac -fi -ERLC=$ac_cv_path_ERLC -if test -n "$ERLC"; then - { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ERLC" >&5 -$as_echo "$ERLC" >&6; } -else - { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 -$as_echo "no" >&6; } -fi - - -fi -if test -z "$ac_cv_path_ERLC"; then - ac_pt_ERLC=$ERLC - # Extract the first word of "erlc", so it can be a program name with args. -set dummy erlc; ac_word=$2 -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 -$as_echo_n "checking for $ac_word... " >&6; } -if test "${ac_cv_path_ac_pt_ERLC+set}" = set; then : - $as_echo_n "(cached) " >&6 -else - case $ac_pt_ERLC in - [\\/]* | ?:[\\/]*) - ac_cv_path_ac_pt_ERLC="$ac_pt_ERLC" # Let the user override the test with a path. - ;; - *) - as_save_IFS=$IFS; IFS=$PATH_SEPARATOR -for as_dir in $PATH -do - IFS=$as_save_IFS - test -z "$as_dir" && as_dir=. - for ac_exec_ext in '' $ac_executable_extensions; do - if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then - ac_cv_path_ac_pt_ERLC="$as_dir/$ac_word$ac_exec_ext" - $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 - break 2 - fi -done - done -IFS=$as_save_IFS - - ;; -esac -fi -ac_pt_ERLC=$ac_cv_path_ac_pt_ERLC -if test -n "$ac_pt_ERLC"; then - { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_pt_ERLC" >&5 -$as_echo "$ac_pt_ERLC" >&6; } -else - { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 -$as_echo "no" >&6; } -fi - - if test "x$ac_pt_ERLC" = x; then - ERLC="not found" - else - case $cross_compiling:$ac_tool_warned in -yes:) -{ $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5 -$as_echo "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;} -ac_tool_warned=yes ;; -esac - ERLC=$ac_pt_ERLC - fi -else - ERLC="$ac_cv_path_ERLC" -fi - -fi - -if test "$ERLC" = "not found"; then - as_fn_error $? "Erlang/OTP compiler (erlc) not found but required" "$LINENO" 5 -fi - - -# Checks and sets ERLANG_ROOT_DIR and ERLANG_LIB_DIR variable - -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for Erlang/OTP root directory" >&5 -$as_echo_n "checking for Erlang/OTP root directory... " >&6; } -if test "${ac_cv_erlang_root_dir+set}" = set; then : - $as_echo_n "(cached) " >&6 -else - ac_ext=erl -ac_compile='$ERLC $ERLCFLAGS -b beam conftest.$ac_ext >&5' -ac_link='$ERLC $ERLCFLAGS -b beam conftest.$ac_ext >&5 && echo "#!/bin/sh" > conftest$ac_exeext && $as_echo "\"$ERL\" -run conftest start -run init stop -noshell" >> conftest$ac_exeext && chmod +x conftest$ac_exeext' - if test "$cross_compiling" = yes; then : - { { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5 -$as_echo "$as_me: error: in \`$ac_pwd':" >&2;} -as_fn_error $? "cannot run test program while cross compiling -See \`config.log' for more details" "$LINENO" 5 ; } -else - cat > conftest.$ac_ext <<_ACEOF --module(conftest). --export([start/0]). - -start() -> - RootDir = code:root_dir(), - file:write_file("conftest.out", RootDir), - ReturnValue = 0, - halt(ReturnValue) -. - -_ACEOF -if ac_fn_erl_try_run "$LINENO"; then : - ac_cv_erlang_root_dir=`cat conftest.out` - rm -f conftest.out -else - rm -f conftest.out - { { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5 -$as_echo "$as_me: error: in \`$ac_pwd':" >&2;} -as_fn_error $? "test Erlang program execution failed -See \`config.log' for more details" "$LINENO" 5 ; } -fi -rm -f core *.core core.conftest.* gmon.out bb.out conftest$ac_exeext \ - conftest.$ac_objext conftest.beam conftest.$ac_ext -fi - - ac_ext=c -ac_cpp='$CPP $CPPFLAGS' -ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5' -ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' -ac_compiler_gnu=$ac_cv_c_compiler_gnu - -fi -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_erlang_root_dir" >&5 -$as_echo "$ac_cv_erlang_root_dir" >&6; } -ERLANG_ROOT_DIR=$ac_cv_erlang_root_dir - - -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for Erlang/OTP library base directory" >&5 -$as_echo_n "checking for Erlang/OTP library base directory... " >&6; } -if test "${ac_cv_erlang_lib_dir+set}" = set; then : - $as_echo_n "(cached) " >&6 -else - ac_ext=erl -ac_compile='$ERLC $ERLCFLAGS -b beam conftest.$ac_ext >&5' -ac_link='$ERLC $ERLCFLAGS -b beam conftest.$ac_ext >&5 && echo "#!/bin/sh" > conftest$ac_exeext && $as_echo "\"$ERL\" -run conftest start -run init stop -noshell" >> conftest$ac_exeext && chmod +x conftest$ac_exeext' - if test "$cross_compiling" = yes; then : - { { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5 -$as_echo "$as_me: error: in \`$ac_pwd':" >&2;} -as_fn_error $? "cannot run test program while cross compiling -See \`config.log' for more details" "$LINENO" 5 ; } -else - cat > conftest.$ac_ext <<_ACEOF --module(conftest). --export([start/0]). - -start() -> - LibDir = code:lib_dir(), - file:write_file("conftest.out", LibDir), - ReturnValue = 0, - halt(ReturnValue) -. - -_ACEOF -if ac_fn_erl_try_run "$LINENO"; then : - ac_cv_erlang_lib_dir=`cat conftest.out` - rm -f conftest.out -else - rm -f conftest.out - { { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5 -$as_echo "$as_me: error: in \`$ac_pwd':" >&2;} -as_fn_error $? "test Erlang program execution failed -See \`config.log' for more details" "$LINENO" 5 ; } -fi -rm -f core *.core core.conftest.* gmon.out bb.out conftest$ac_exeext \ - conftest.$ac_objext conftest.beam conftest.$ac_ext -fi - - ac_ext=c -ac_cpp='$CPP $CPPFLAGS' -ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5' -ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' -ac_compiler_gnu=$ac_cv_c_compiler_gnu - -fi -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_erlang_lib_dir" >&5 -$as_echo "$ac_cv_erlang_lib_dir" >&6; } -ERLANG_LIB_DIR=$ac_cv_erlang_lib_dir - - - -#locating rebar -# Extract the first word of "rebar", so it can be a program name with args. -set dummy rebar; ac_word=$2 -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 -$as_echo_n "checking for $ac_word... " >&6; } -if test "${ac_cv_path_REBAR+set}" = set; then : - $as_echo_n "(cached) " >&6 -else - case $REBAR in - [\\/]* | ?:[\\/]*) - ac_cv_path_REBAR="$REBAR" # Let the user override the test with a path. - ;; - *) - as_save_IFS=$IFS; IFS=$PATH_SEPARATOR -for as_dir in $PATH -do - IFS=$as_save_IFS - test -z "$as_dir" && as_dir=. - for ac_exec_ext in '' $ac_executable_extensions; do - if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then - ac_cv_path_REBAR="$as_dir/$ac_word$ac_exec_ext" - $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 - break 2 - fi -done - done -IFS=$as_save_IFS - - ;; -esac -fi -REBAR=$ac_cv_path_REBAR -if test -n "$REBAR"; then - { $as_echo "$as_me:${as_lineno-$LINENO}: result: $REBAR" >&5 -$as_echo "$REBAR" >&6; } -else - { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 -$as_echo "no" >&6; } -fi - - -#locating make -# Extract the first word of "make", so it can be a program name with args. -set dummy make; ac_word=$2 -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 -$as_echo_n "checking for $ac_word... " >&6; } -if test "${ac_cv_prog_MAKE+set}" = set; then : - $as_echo_n "(cached) " >&6 -else - if test -n "$MAKE"; then - ac_cv_prog_MAKE="$MAKE" # Let the user override the test. -else -as_save_IFS=$IFS; IFS=$PATH_SEPARATOR -for as_dir in $PATH -do - IFS=$as_save_IFS - test -z "$as_dir" && as_dir=. - for ac_exec_ext in '' $ac_executable_extensions; do - if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then - ac_cv_prog_MAKE="make" - $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 - break 2 - fi -done - done -IFS=$as_save_IFS - -fi -fi -MAKE=$ac_cv_prog_MAKE -if test -n "$MAKE"; then - { $as_echo "$as_me:${as_lineno-$LINENO}: result: $MAKE" >&5 -$as_echo "$MAKE" >&6; } -else - { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 -$as_echo "no" >&6; } -fi - - - -if test "x$REBAR" = "x"; then - as_fn_error $? "'rebar' was not found" "$LINENO" 5 -fi - -if test "x$MAKE" = "x"; then - as_fn_error $? "'make' was not found" "$LINENO" 5 -fi - -#locating iconv - - - -# Check whether --with-libiconv-prefix was given. -if test "${with_libiconv_prefix+set}" = set; then : - withval=$with_libiconv_prefix; - for dir in `echo "$withval" | tr : ' '`; do - if test -d $dir/include; then CPPFLAGS="$CPPFLAGS -I$dir/include"; fi - if test -d $dir/include; then CFLAGS="$CFLAGS -I$dir/include"; fi - if test -d $dir/lib; then LDFLAGS="$LDFLAGS -L$dir/lib"; fi - done - -fi - - - { $as_echo "$as_me:${as_lineno-$LINENO}: checking for iconv" >&5 -$as_echo_n "checking for iconv... " >&6; } -if test "${am_cv_func_iconv+set}" = set; then : - $as_echo_n "(cached) " >&6 -else - - am_cv_func_iconv="no, consider installing GNU libiconv" - am_cv_lib_iconv=no - cat confdefs.h - <<_ACEOF >conftest.$ac_ext -/* end confdefs.h. */ -#include -#include -int -main () -{ -iconv_t cd = iconv_open("",""); - iconv(cd,NULL,NULL,NULL,NULL); - iconv_close(cd); - ; - return 0; -} -_ACEOF -if ac_fn_c_try_link "$LINENO"; then : - am_cv_func_iconv=yes -fi -rm -f core conftest.err conftest.$ac_objext \ - conftest$ac_exeext conftest.$ac_ext - if test "$am_cv_func_iconv" != yes; then - am_save_LIBS="$LIBS" - LIBS="$LIBS -liconv" - cat confdefs.h - <<_ACEOF >conftest.$ac_ext -/* end confdefs.h. */ -#include -#include -int -main () -{ -iconv_t cd = iconv_open("",""); - iconv(cd,NULL,NULL,NULL,NULL); - iconv_close(cd); - ; - return 0; -} -_ACEOF -if ac_fn_c_try_link "$LINENO"; then : - am_cv_lib_iconv=yes - am_cv_func_iconv=yes -fi -rm -f core conftest.err conftest.$ac_objext \ - conftest$ac_exeext conftest.$ac_ext - LIBS="$am_save_LIBS" - fi - if test "$am_cv_func_iconv" != yes; then - am_save_LIBS="$LIBS" - am_save_CFLAGS="$CFLAGS" - am_save_LDFLAGS="$LDFLAGS" - LIBS="$LIBS -liconv" - LDFLAGS="$LDFLAGS -L/usr/local/lib" - CFLAGS="$CFLAGS -I/usr/local/include" - cat confdefs.h - <<_ACEOF >conftest.$ac_ext -/* end confdefs.h. */ -#include -#include -int -main () -{ -iconv_t cd = iconv_open("",""); - iconv(cd,NULL,NULL,NULL,NULL); - iconv_close(cd); - ; - return 0; -} -_ACEOF -if ac_fn_c_try_link "$LINENO"; then : - am_cv_lib_iconv=yes - am_cv_func_iconv=yes - CPPFLAGS="$CPPFLAGS -I/usr/local/include" -else - LDFLAGS="$am_save_LDFLAGS" - CFLAGS="$am_save_CFLAGS" -fi -rm -f core conftest.err conftest.$ac_objext \ - conftest$ac_exeext conftest.$ac_ext - LIBS="$am_save_LIBS" - fi - - -fi -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $am_cv_func_iconv" >&5 -$as_echo "$am_cv_func_iconv" >&6; } - if test "$am_cv_func_iconv" = yes; then - -$as_echo "#define HAVE_ICONV 1" >>confdefs.h - - { $as_echo "$as_me:${as_lineno-$LINENO}: checking for iconv declaration" >&5 -$as_echo_n "checking for iconv declaration... " >&6; } - if test "${am_cv_proto_iconv+set}" = set; then : - $as_echo_n "(cached) " >&6 -else - - cat confdefs.h - <<_ACEOF >conftest.$ac_ext -/* end confdefs.h. */ - -#include -#include -extern -#ifdef __cplusplus -"C" -#endif -#if defined(__STDC__) || defined(__cplusplus) -size_t iconv (iconv_t cd, char * *inbuf, size_t *inbytesleft, char * *outbuf, size_t *outbytesleft); -#else -size_t iconv(); -#endif - -int -main () -{ - - ; - return 0; -} -_ACEOF -if ac_fn_c_try_compile "$LINENO"; then : - am_cv_proto_iconv_arg1="" -else - am_cv_proto_iconv_arg1="const" -fi -rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext - am_cv_proto_iconv="extern size_t iconv (iconv_t cd, $am_cv_proto_iconv_arg1 char * *inbuf, size_t *inbytesleft, char * *outbuf, size_t *outbytesleft);" -fi - - am_cv_proto_iconv=`echo "$am_cv_proto_iconv" | tr -s ' ' | sed -e 's/( /(/'` - { $as_echo "$as_me:${as_lineno-$LINENO}: result: ${ac_t:- - }$am_cv_proto_iconv" >&5 -$as_echo "${ac_t:- - }$am_cv_proto_iconv" >&6; } - -cat >>confdefs.h <<_ACEOF -#define ICONV_CONST $am_cv_proto_iconv_arg1 -_ACEOF - - fi - LIBICONV= - if test "$am_cv_lib_iconv" = yes; then - LIBICONV="-liconv" - fi - - -#locating libexpat ac_ext=c ac_cpp='$CPP $CPPFLAGS' ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5' @@ -4133,791 +4008,6 @@ fi done - -# Check whether --with-expat was given. -if test "${with_expat+set}" = set; then : - withval=$with_expat; -fi - - - EXPAT_CFLAGS= - EXPAT_LIBS= - if test x"$with_expat" != x; then - EXPAT_CFLAGS="-I$with_expat/include" - EXPAT_LIBS="-L$with_expat/lib" - fi - - { $as_echo "$as_me:${as_lineno-$LINENO}: checking for XML_ParserCreate in -lexpat" >&5 -$as_echo_n "checking for XML_ParserCreate in -lexpat... " >&6; } -if test "${ac_cv_lib_expat_XML_ParserCreate+set}" = set; then : - $as_echo_n "(cached) " >&6 -else - ac_check_lib_save_LIBS=$LIBS -LIBS="-lexpat "$EXPAT_LIBS" $LIBS" -cat confdefs.h - <<_ACEOF >conftest.$ac_ext -/* end confdefs.h. */ - -/* Override any GCC internal prototype to avoid an error. - Use char because int might match the return type of a GCC - builtin and then its argument prototype would still apply. */ -#ifdef __cplusplus -extern "C" -#endif -char XML_ParserCreate (); -int -main () -{ -return XML_ParserCreate (); - ; - return 0; -} -_ACEOF -if ac_fn_c_try_link "$LINENO"; then : - ac_cv_lib_expat_XML_ParserCreate=yes -else - ac_cv_lib_expat_XML_ParserCreate=no -fi -rm -f core conftest.err conftest.$ac_objext \ - conftest$ac_exeext conftest.$ac_ext -LIBS=$ac_check_lib_save_LIBS -fi -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_expat_XML_ParserCreate" >&5 -$as_echo "$ac_cv_lib_expat_XML_ParserCreate" >&6; } -if test "x$ac_cv_lib_expat_XML_ParserCreate" = x""yes; then : - EXPAT_LIBS="$EXPAT_LIBS -lexpat" - expat_found=yes -else - expat_found=no -fi - - if test $expat_found = no; then - as_fn_error $? "Could not find development files of Expat library" "$LINENO" 5 - fi - expat_save_CFLAGS="$CFLAGS" - CFLAGS="$CFLAGS $EXPAT_CFLAGS" - expat_save_CPPFLAGS="$CPPFLAGS" - CPPFLAGS="$CPPFLAGS $EXPAT_CFLAGS" - for ac_header in expat.h -do : - ac_fn_c_check_header_mongrel "$LINENO" "expat.h" "ac_cv_header_expat_h" "$ac_includes_default" -if test "x$ac_cv_header_expat_h" = x""yes; then : - cat >>confdefs.h <<_ACEOF -#define HAVE_EXPAT_H 1 -_ACEOF - -else - expat_found=no -fi - -done - - if test $expat_found = no; then - as_fn_error $? "Could not find expat.h" "$LINENO" 5 - fi - CFLAGS="$expat_save_CFLAGS" - CPPFLAGS="$expat_save_CPPFLAGS" - - - - - -# Checks for typedefs, structures, and compiler characteristics. -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for an ANSI C-conforming const" >&5 -$as_echo_n "checking for an ANSI C-conforming const... " >&6; } -if test "${ac_cv_c_const+set}" = set; then : - $as_echo_n "(cached) " >&6 -else - cat confdefs.h - <<_ACEOF >conftest.$ac_ext -/* end confdefs.h. */ - -int -main () -{ -/* FIXME: Include the comments suggested by Paul. */ -#ifndef __cplusplus - /* Ultrix mips cc rejects this. */ - typedef int charset[2]; - const charset cs; - /* SunOS 4.1.1 cc rejects this. */ - char const *const *pcpcc; - char **ppc; - /* NEC SVR4.0.2 mips cc rejects this. */ - struct point {int x, y;}; - static struct point const zero = {0,0}; - /* AIX XL C 1.02.0.0 rejects this. - It does not let you subtract one const X* pointer from another in - an arm of an if-expression whose if-part is not a constant - expression */ - const char *g = "string"; - pcpcc = &g + (g ? g-g : 0); - /* HPUX 7.0 cc rejects these. */ - ++pcpcc; - ppc = (char**) pcpcc; - pcpcc = (char const *const *) ppc; - { /* SCO 3.2v4 cc rejects this. */ - char *t; - char const *s = 0 ? (char *) 0 : (char const *) 0; - - *t++ = 0; - if (s) return 0; - } - { /* Someone thinks the Sun supposedly-ANSI compiler will reject this. */ - int x[] = {25, 17}; - const int *foo = &x[0]; - ++foo; - } - { /* Sun SC1.0 ANSI compiler rejects this -- but not the above. */ - typedef const int *iptr; - iptr p = 0; - ++p; - } - { /* AIX XL C 1.02.0.0 rejects this saying - "k.c", line 2.27: 1506-025 (S) Operand must be a modifiable lvalue. */ - struct s { int j; const int *ap[3]; }; - struct s *b; b->j = 5; - } - { /* ULTRIX-32 V3.1 (Rev 9) vcc rejects this */ - const int foo = 10; - if (!foo) return 0; - } - return !cs[0] && !zero.x; -#endif - - ; - return 0; -} -_ACEOF -if ac_fn_c_try_compile "$LINENO"; then : - ac_cv_c_const=yes -else - ac_cv_c_const=no -fi -rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext -fi -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_c_const" >&5 -$as_echo "$ac_cv_c_const" >&6; } -if test $ac_cv_c_const = no; then - -$as_echo "#define const /**/" >>confdefs.h - -fi - - -# Check Erlang headers are installed -#AC_CHECK_HEADER(erl_driver.h,,[AC_MSG_ERROR([cannot find Erlang header files])]) - -# Change default prefix - - -# Checks for library functions. -for ac_header in stdlib.h -do : - ac_fn_c_check_header_mongrel "$LINENO" "stdlib.h" "ac_cv_header_stdlib_h" "$ac_includes_default" -if test "x$ac_cv_header_stdlib_h" = x""yes; then : - cat >>confdefs.h <<_ACEOF -#define HAVE_STDLIB_H 1 -_ACEOF - -fi - -done - -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for GNU libc compatible malloc" >&5 -$as_echo_n "checking for GNU libc compatible malloc... " >&6; } -if test "${ac_cv_func_malloc_0_nonnull+set}" = set; then : - $as_echo_n "(cached) " >&6 -else - if test "$cross_compiling" = yes; then : - ac_cv_func_malloc_0_nonnull=no -else - cat confdefs.h - <<_ACEOF >conftest.$ac_ext -/* end confdefs.h. */ -#if defined STDC_HEADERS || defined HAVE_STDLIB_H -# include -#else -char *malloc (); -#endif - -int -main () -{ -return ! malloc (0); - ; - return 0; -} -_ACEOF -if ac_fn_c_try_run "$LINENO"; then : - ac_cv_func_malloc_0_nonnull=yes -else - ac_cv_func_malloc_0_nonnull=no -fi -rm -f core *.core core.conftest.* gmon.out bb.out conftest$ac_exeext \ - conftest.$ac_objext conftest.beam conftest.$ac_ext -fi - -fi -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_func_malloc_0_nonnull" >&5 -$as_echo "$ac_cv_func_malloc_0_nonnull" >&6; } -if test $ac_cv_func_malloc_0_nonnull = yes; then : - -$as_echo "#define HAVE_MALLOC 1" >>confdefs.h - -else - $as_echo "#define HAVE_MALLOC 0" >>confdefs.h - - case " $LIBOBJS " in - *" malloc.$ac_objext "* ) ;; - *) LIBOBJS="$LIBOBJS malloc.$ac_objext" - ;; -esac - - -$as_echo "#define malloc rpl_malloc" >>confdefs.h - -fi - - -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for ANSI C header files" >&5 -$as_echo_n "checking for ANSI C header files... " >&6; } -if test "${ac_cv_header_stdc+set}" = set; then : - $as_echo_n "(cached) " >&6 -else - cat confdefs.h - <<_ACEOF >conftest.$ac_ext -/* end confdefs.h. */ -#include -#include -#include -#include - -int -main () -{ - - ; - return 0; -} -_ACEOF -if ac_fn_c_try_compile "$LINENO"; then : - ac_cv_header_stdc=yes -else - ac_cv_header_stdc=no -fi -rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext - -if test $ac_cv_header_stdc = yes; then - # SunOS 4.x string.h does not declare mem*, contrary to ANSI. - cat confdefs.h - <<_ACEOF >conftest.$ac_ext -/* end confdefs.h. */ -#include - -_ACEOF -if (eval "$ac_cpp conftest.$ac_ext") 2>&5 | - $EGREP "memchr" >/dev/null 2>&1; then : - -else - ac_cv_header_stdc=no -fi -rm -f conftest* - -fi - -if test $ac_cv_header_stdc = yes; then - # ISC 2.0.2 stdlib.h does not declare free, contrary to ANSI. - cat confdefs.h - <<_ACEOF >conftest.$ac_ext -/* end confdefs.h. */ -#include - -_ACEOF -if (eval "$ac_cpp conftest.$ac_ext") 2>&5 | - $EGREP "free" >/dev/null 2>&1; then : - -else - ac_cv_header_stdc=no -fi -rm -f conftest* - -fi - -if test $ac_cv_header_stdc = yes; then - # /bin/cc in Irix-4.0.5 gets non-ANSI ctype macros unless using -ansi. - if test "$cross_compiling" = yes; then : - : -else - cat confdefs.h - <<_ACEOF >conftest.$ac_ext -/* end confdefs.h. */ -#include -#include -#if ((' ' & 0x0FF) == 0x020) -# define ISLOWER(c) ('a' <= (c) && (c) <= 'z') -# define TOUPPER(c) (ISLOWER(c) ? 'A' + ((c) - 'a') : (c)) -#else -# define ISLOWER(c) \ - (('a' <= (c) && (c) <= 'i') \ - || ('j' <= (c) && (c) <= 'r') \ - || ('s' <= (c) && (c) <= 'z')) -# define TOUPPER(c) (ISLOWER(c) ? ((c) | 0x40) : (c)) -#endif - -#define XOR(e, f) (((e) && !(f)) || (!(e) && (f))) -int -main () -{ - int i; - for (i = 0; i < 256; i++) - if (XOR (islower (i), ISLOWER (i)) - || toupper (i) != TOUPPER (i)) - return 2; - return 0; -} -_ACEOF -if ac_fn_c_try_run "$LINENO"; then : - -else - ac_cv_header_stdc=no -fi -rm -f core *.core core.conftest.* gmon.out bb.out conftest$ac_exeext \ - conftest.$ac_objext conftest.beam conftest.$ac_ext -fi - -fi -fi -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_header_stdc" >&5 -$as_echo "$ac_cv_header_stdc" >&6; } -if test $ac_cv_header_stdc = yes; then - -$as_echo "#define STDC_HEADERS 1" >>confdefs.h - -fi - - -#locating zlib - -# Check whether --with-zlib was given. -if test "${with_zlib+set}" = set; then : - withval=$with_zlib; -fi - - -if test x"$ejabberd_zlib" != x; then - ZLIB_CFLAGS= - ZLIB_LIBS= - if test x"$with_zlib" != x; then - ZLIB_CFLAGS="-I$with_zlib/include" - ZLIB_LIBS="-L$with_zlib/lib" - fi - - { $as_echo "$as_me:${as_lineno-$LINENO}: checking for gzgets in -lz" >&5 -$as_echo_n "checking for gzgets in -lz... " >&6; } -if test "${ac_cv_lib_z_gzgets+set}" = set; then : - $as_echo_n "(cached) " >&6 -else - ac_check_lib_save_LIBS=$LIBS -LIBS="-lz "$ZLIB_LIBS" $LIBS" -cat confdefs.h - <<_ACEOF >conftest.$ac_ext -/* end confdefs.h. */ - -/* Override any GCC internal prototype to avoid an error. - Use char because int might match the return type of a GCC - builtin and then its argument prototype would still apply. */ -#ifdef __cplusplus -extern "C" -#endif -char gzgets (); -int -main () -{ -return gzgets (); - ; - return 0; -} -_ACEOF -if ac_fn_c_try_link "$LINENO"; then : - ac_cv_lib_z_gzgets=yes -else - ac_cv_lib_z_gzgets=no -fi -rm -f core conftest.err conftest.$ac_objext \ - conftest$ac_exeext conftest.$ac_ext -LIBS=$ac_check_lib_save_LIBS -fi -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_z_gzgets" >&5 -$as_echo "$ac_cv_lib_z_gzgets" >&6; } -if test "x$ac_cv_lib_z_gzgets" = x""yes; then : - ZLIB_LIBS="$ZLIB_LIBS -lz" - zlib_found=yes -else - zlib_found=no -fi - - if test $zlib_found = no; then - as_fn_error $? "Could not find development files of zlib library. Install them or disable \`ejabberd_zlib' with: --disable-ejabberd_zlib" "$LINENO" 5 - fi - zlib_save_CFLAGS="$CFLAGS" - CFLAGS="$CFLAGS $ZLIB_CFLAGS" - zlib_save_CPPFLAGS="$CFLAGS" - CPPFLAGS="$CPPFLAGS $ZLIB_CFLAGS" - for ac_header in zlib.h -do : - ac_fn_c_check_header_mongrel "$LINENO" "zlib.h" "ac_cv_header_zlib_h" "$ac_includes_default" -if test "x$ac_cv_header_zlib_h" = x""yes; then : - cat >>confdefs.h <<_ACEOF -#define HAVE_ZLIB_H 1 -_ACEOF - -else - zlib_found=no -fi - -done - - if test $zlib_found = no; then - as_fn_error $? "Could not find zlib.h. Install it or disable \`ejabberd_zlib' with: --disable-ejabberd_zlib" "$LINENO" 5 - fi - CFLAGS="$zlib_save_CFLAGS" - CPPFLAGS="$zlib_save_CPPFLAGS" - - - -fi - - - -pam= -make_pam= -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking whether build pam" >&5 -$as_echo_n "checking whether build pam... " >&6; } -# Check whether --enable-pam was given. -if test "${enable_pam+set}" = set; then : - enableval=$enable_pam; mr_enable_pam="$enableval" -else - mr_enable_pam=no -fi - -if test "$mr_enable_pam" = "yes"; then -pam=pam -make_pam=pam/Makefile -fi -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $mr_enable_pam" >&5 -$as_echo "$mr_enable_pam" >&6; } - - - - -#locating PAM - -# Check whether --with-pam was given. -if test "${with_pam+set}" = set; then : - withval=$with_pam; -fi - -if test x"$pam" != x; then - PAM_CFLAGS= - PAM_LIBS= - if test x"$with_pam" != x; then - PAM_CFLAGS="-I$with_pam/include" - PAM_LIBS="-L$with_pam/lib" - fi - - { $as_echo "$as_me:${as_lineno-$LINENO}: checking for pam_start in -lpam" >&5 -$as_echo_n "checking for pam_start in -lpam... " >&6; } -if test "${ac_cv_lib_pam_pam_start+set}" = set; then : - $as_echo_n "(cached) " >&6 -else - ac_check_lib_save_LIBS=$LIBS -LIBS="-lpam "$PAM_LIBS" $LIBS" -cat confdefs.h - <<_ACEOF >conftest.$ac_ext -/* end confdefs.h. */ - -/* Override any GCC internal prototype to avoid an error. - Use char because int might match the return type of a GCC - builtin and then its argument prototype would still apply. */ -#ifdef __cplusplus -extern "C" -#endif -char pam_start (); -int -main () -{ -return pam_start (); - ; - return 0; -} -_ACEOF -if ac_fn_c_try_link "$LINENO"; then : - ac_cv_lib_pam_pam_start=yes -else - ac_cv_lib_pam_pam_start=no -fi -rm -f core conftest.err conftest.$ac_objext \ - conftest$ac_exeext conftest.$ac_ext -LIBS=$ac_check_lib_save_LIBS -fi -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_pam_pam_start" >&5 -$as_echo "$ac_cv_lib_pam_pam_start" >&6; } -if test "x$ac_cv_lib_pam_pam_start" = x""yes; then : - PAM_LIBS="$PAM_LIBS -lpam" - pam_found=yes -else - pam_found=no -fi - - if test $pam_found = no; then - as_fn_error $? "Could not find development files of PAM library. Install them or disable \`pam' with: --disable-pam" "$LINENO" 5 - fi - pam_save_CFLAGS="$CFLAGS" - CFLAGS="$CFLAGS $PAM_CFLAGS" - pam_save_CPPFLAGS="$CPPFLAGS" - CPPFLAGS="$CPPFLAGS $PAM_CFLAGS" - for ac_header in security/pam_appl.h -do : - ac_fn_c_check_header_mongrel "$LINENO" "security/pam_appl.h" "ac_cv_header_security_pam_appl_h" "$ac_includes_default" -if test "x$ac_cv_header_security_pam_appl_h" = x""yes; then : - cat >>confdefs.h <<_ACEOF -#define HAVE_SECURITY_PAM_APPL_H 1 -_ACEOF - -else - pam_found=no -fi - -done - - if test $pam_found = no; then - as_fn_error $? "Could not find security/pam_appl.h. Install it or disable \`pam' with: --disable-pam" "$LINENO" 5 - fi - CFLAGS="$pam_save_CFLAGS" - CPPFLAGS="$pam_save_CPPFLAGS" - - - -fi - - -# Check whether --enable-hipe was given. -if test "${enable_hipe+set}" = set; then : - enableval=$enable_hipe; case "${enableval}" in - yes) hipe=true ;; - no) hipe=false ;; - *) as_fn_error $? "bad value ${enableval} for --enable-hipe" "$LINENO" 5 ;; -esac -else - hipe=false -fi - - - -# Check whether --enable-roster_gateway_workaround was given. -if test "${enable_roster_gateway_workaround+set}" = set; then : - enableval=$enable_roster_gateway_workaround; case "${enableval}" in - yes) roster_gateway_workaround=true ;; - no) roster_gateway_workaround=false ;; - *) as_fn_error $? "bad value ${enableval} for --enable-roster-gateway-workaround" "$LINENO" 5 ;; -esac -else - roster_gateway_workaround=false -fi - - - -# Check whether --enable-flash_hack was given. -if test "${enable_flash_hack+set}" = set; then : - enableval=$enable_flash_hack; case "${enableval}" in - yes) flash_hack=true ;; - no) flash_hack=false ;; - *) as_fn_error $? "bad value ${enableval} for --enable-flash-hack" "$LINENO" 5 ;; -esac -else - flash_hack=false -fi - - - -# Check whether --enable-mssql was given. -if test "${enable_mssql+set}" = set; then : - enableval=$enable_mssql; case "${enableval}" in - yes) db_type=mssql ;; - no) db_type=generic ;; - *) as_fn_error $? "bad value ${enableval} for --enable-mssql" "$LINENO" 5 ;; -esac -else - db_type=generic -fi - - - -# Check whether --enable-transient_supervisors was given. -if test "${enable_transient_supervisors+set}" = set; then : - enableval=$enable_transient_supervisors; case "${enableval}" in - yes) transient_supervisors=true ;; - no) transient_supervisors=false ;; - *) as_fn_error $? "bad value ${enableval} for --enable-transient_supervisors" "$LINENO" 5 ;; -esac -else - transient_supervisors=true -fi - - - -# Check whether --enable-full_xml was given. -if test "${enable_full_xml+set}" = set; then : - enableval=$enable_full_xml; case "${enableval}" in - yes) full_xml=true ;; - no) full_xml=false ;; - *) as_fn_error $? "bad value ${enableval} for --enable-full-xml" "$LINENO" 5 ;; -esac -else - full_xml=false -fi - - - -# Check whether --enable-nif was given. -if test "${enable_nif+set}" = set; then : - enableval=$enable_nif; case "${enableval}" in - yes) nif=true ;; - no) nif=false ;; - *) as_fn_error $? "bad value ${enableval} for --enable-nif" "$LINENO" 5 ;; -esac -else - nif=false -fi - - - -ac_config_files="$ac_config_files Makefile rebar.config" - - -#openssl - -# Check whether --with-openssl was given. -if test "${with_openssl+set}" = set; then : - withval=$with_openssl; -fi - -unset SSL_LIBS; -unset SSL_CFLAGS; -have_openssl=no -if test x"$tls" != x; then - for ssl_prefix in $withval /usr/local/ssl /usr/lib/ssl /usr/ssl /usr/pkg /usr/local /usr; do - printf "looking for openssl in $ssl_prefix...\n" - SSL_CFLAGS="-I$ssl_prefix/include" - SSL_LIBS="-L$ssl_prefix/lib -lcrypto" - { $as_echo "$as_me:${as_lineno-$LINENO}: checking for SSL_new in -lssl" >&5 -$as_echo_n "checking for SSL_new in -lssl... " >&6; } -if test "${ac_cv_lib_ssl_SSL_new+set}" = set; then : - $as_echo_n "(cached) " >&6 -else - ac_check_lib_save_LIBS=$LIBS -LIBS="-lssl $SSL_LIBS $SSL_CFLAGS $LIBS" -cat confdefs.h - <<_ACEOF >conftest.$ac_ext -/* end confdefs.h. */ - -/* Override any GCC internal prototype to avoid an error. - Use char because int might match the return type of a GCC - builtin and then its argument prototype would still apply. */ -#ifdef __cplusplus -extern "C" -#endif -char SSL_new (); -int -main () -{ -return SSL_new (); - ; - return 0; -} -_ACEOF -if ac_fn_c_try_link "$LINENO"; then : - ac_cv_lib_ssl_SSL_new=yes -else - ac_cv_lib_ssl_SSL_new=no -fi -rm -f core conftest.err conftest.$ac_objext \ - conftest$ac_exeext conftest.$ac_ext -LIBS=$ac_check_lib_save_LIBS -fi -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_ssl_SSL_new" >&5 -$as_echo "$ac_cv_lib_ssl_SSL_new" >&6; } -if test "x$ac_cv_lib_ssl_SSL_new" = x""yes; then : - have_openssl=yes -else - have_openssl=no -fi - - if test x"$have_openssl" = xyes; then - save_CPPFLAGS=$CPPFLAGS - CPPFLAGS="-I$ssl_prefix/include $CPPFLAGS" - for ac_header in openssl/ssl.h -do : - ac_fn_c_check_header_mongrel "$LINENO" "openssl/ssl.h" "ac_cv_header_openssl_ssl_h" "$ac_includes_default" -if test "x$ac_cv_header_openssl_ssl_h" = x""yes; then : - cat >>confdefs.h <<_ACEOF -#define HAVE_OPENSSL_SSL_H 1 -_ACEOF - have_openssl_h=yes -fi - -done - - CPPFLAGS=$save_CPPFLAGS - if test x"$have_openssl_h" = xyes; then - have_openssl=yes - printf "openssl found in $ssl_prefix\n"; - SSL_LIBS="-L$ssl_prefix/lib -lssl -lcrypto" - CPPFLAGS="-I$ssl_prefix/include $CPPFLAGS" - SSL_CFLAGS="-DHAVE_SSL" - break - fi - else - # Clear this from the autoconf cache, so in the next pass of - # this loop with different -L arguments, it will test again. - unset ac_cv_lib_ssl_SSL_new - fi - done -if test x${have_openssl} != xyes; then - as_fn_error $? "Could not find development files of OpenSSL library. Install them or disable \`tls' with: --disable-tls" "$LINENO" 5 -fi - - -fi - -# If ssl is kerberized it need krb5.h -# On RedHat and OpenBSD, krb5.h is in an unsual place: -KRB5_INCLUDE="`krb5-config --cflags 2>/dev/null`" -if test -n "$KRB5_INCLUDE" ; then - CPPFLAGS="$CPPFLAGS $KRB5_INCLUDE" -else - # For RedHat For BSD - for D in /usr/kerberos/include /usr/include/kerberos /usr/include/kerberosV - do - if test -d $D ; then - CPPFLAGS="$CPPFLAGS -I$D" - fi - done -fi -ac_fn_c_check_header_mongrel "$LINENO" "krb5.h" "ac_cv_header_krb5_h" "$ac_includes_default" -if test "x$ac_cv_header_krb5_h" = x""yes; then : - -fi - - - -ENABLEUSER="" -# Check whether --enable-user was given. -if test "${enable_user+set}" = set; then : - enableval=$enable_user; case "${enableval}" in - yes) ENABLEUSER=`whoami` ;; - no) ENABLEUSER="" ;; - *) ENABLEUSER=$enableval - esac -fi - -if test "$ENABLEUSER" != ""; then - echo "allow this system user to start ejabberd: $ENABLEUSER" - INSTALLUSER=$ENABLEUSER - -fi - ac_fn_c_check_header_mongrel "$LINENO" "openssl/md2.h" "ac_cv_header_openssl_md2_h" "$ac_includes_default" if test "x$ac_cv_header_openssl_md2_h" = x""yes; then : md2=true @@ -5797,6 +4887,8 @@ do case $ac_config_target in "Makefile") CONFIG_FILES="$CONFIG_FILES Makefile" ;; "rebar.config") CONFIG_FILES="$CONFIG_FILES rebar.config" ;; + "src/ejabberd.app.src") CONFIG_FILES="$CONFIG_FILES src/ejabberd.app.src" ;; + "rel/reltool.config") CONFIG_FILES="$CONFIG_FILES rel/reltool.config" ;; *) as_fn_error $? "invalid argument: \`$ac_config_target'" "$LINENO" 5 ;; esac diff --git a/configure.ac b/configure.ac index 5b6e1de05..be1004945 100644 --- a/configure.ac +++ b/configure.ac @@ -2,10 +2,10 @@ # Process this file with autoconf to produce a configure script. AC_PREREQ(2.53) -AC_INIT(ejabberd, m4_esyscmd([grep -o -E "\{vsn,.\".*\"\}" src/ejabberd.app.src | cut -d \" -f 2 | tr -d '\n']), [ejabberd@process-one.net], [ejabberd]) +AC_PACKAGE_VERSION(3.0.0) +AC_INIT(ejabberd, 3.0.0, [ejabberd@process-one.net], [ejabberd]) # Checks for programs. -AC_PROG_CC AC_PROG_MAKE_SET AC_PROG_INSTALL AC_PROG_SED @@ -22,44 +22,23 @@ AC_ERLANG_NEED_ERLC AC_ERLANG_SUBST_ROOT_DIR AC_ERLANG_SUBST_LIB_DIR -#locating rebar -AC_PATH_PROG([REBAR], [rebar], []) +#locating escript +AC_PATH_PROG([ESCRIPT], [escript], []) + #locating make AC_CHECK_PROG([MAKE], [make], [make], []) -if test "x$REBAR" = "x"; then - AC_MSG_ERROR(['rebar' was not found]) +if test "x$ESCRIPT" = "x"; then + AC_MSG_ERROR(['escript' was not found]) fi if test "x$MAKE" = "x"; then AC_MSG_ERROR(['make' was not found]) fi -#locating iconv -AM_ICONV -#locating libexpat -AM_WITH_EXPAT - -# Checks for typedefs, structures, and compiler characteristics. -AC_C_CONST - -# Check Erlang headers are installed -#AC_CHECK_HEADER(erl_driver.h,,[AC_MSG_ERROR([cannot find Erlang header files])]) - # Change default prefix AC_PREFIX_DEFAULT(/) -# Checks for library functions. -AC_FUNC_MALLOC -AC_HEADER_STDC - -#locating zlib -AM_WITH_ZLIB - -AC_MOD_ENABLE(pam, no) -#locating PAM -AM_WITH_PAM - AC_ARG_ENABLE(hipe, [AC_HELP_STRING([--enable-hipe], [compile natively with HiPE, not recommended (default: no)])], [case "${enableval}" in @@ -124,25 +103,9 @@ esac],[nif=false]) AC_SUBST(nif) AC_CONFIG_FILES([Makefile - rebar.config]) - -#openssl -AM_WITH_OPENSSL -# If ssl is kerberized it need krb5.h -# On RedHat and OpenBSD, krb5.h is in an unsual place: -KRB5_INCLUDE="`krb5-config --cflags 2>/dev/null`" -if test -n "$KRB5_INCLUDE" ; then - CPPFLAGS="$CPPFLAGS $KRB5_INCLUDE" -else - # For RedHat For BSD - for D in /usr/kerberos/include /usr/include/kerberos /usr/include/kerberosV - do - if test -d $D ; then - CPPFLAGS="$CPPFLAGS -I$D" - fi - done -fi -AC_CHECK_HEADER(krb5.h,,) + rebar.config + src/ejabberd.app.src + rel/reltool.config]) ENABLEUSER="" AC_ARG_ENABLE(user, diff --git a/include/ejabberd.hrl b/include/ejabberd.hrl index e36139a0c..4a2d25cd1 100644 --- a/include/ejabberd.hrl +++ b/include/ejabberd.hrl @@ -27,7 +27,7 @@ -define(MYLANG, ejabberd_config:get_mylang()). --define(MSGS_DIR, <<"msgs">>). +-define(MSGS_DIR, filename:join(["priv", "msgs"])). -define(CONFIG_PATH, <<"ejabberd.cfg">>). diff --git a/include/jlib.hrl b/include/jlib.hrl index fe4dbbf02..271c32a8d 100644 --- a/include/jlib.hrl +++ b/include/jlib.hrl @@ -215,6 +215,8 @@ -define(NS_BOB, <<"urn:xmpp:bob">>). +-include("xml.hrl"). + -define(STANZA_ERROR(Code, Type, Condition), #xmlel{name = <<"error">>, attrs = [{<<"code">>, Code}, {<<"type">>, Type}], @@ -617,19 +619,6 @@ -type(ljid() :: {binary(), binary(), binary()}). --record(xmlel, -{ - name = <<"">> :: binary(), - attrs = [] :: [attr()], - children = [] :: [xmlel() | cdata()] -}). - --type(cdata() :: {xmlcdata, CData::binary()}). - --type(attr() :: {Name::binary(), Value::binary()}). - --type(xmlel() :: #xmlel{}). - -record(iq, {id = <<"">> :: binary(), type = get :: get | set | result | error, xmlns = <<"">> :: binary(), diff --git a/rebar b/rebar new file mode 100755 index 0000000000000000000000000000000000000000..cacba57df1ec603b8c9405071301d284c16f9114 GIT binary patch literal 276843 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 z

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 SUGt-OBW6R literal 0 HcmV?d00001 diff --git a/rebar.config.in b/rebar.config.in index 7b64741ca..bf7cbfeb2 100644 --- a/rebar.config.in +++ b/rebar.config.in @@ -1,8 +1,13 @@ -{erl_opts, [debug_info, {i, "include"}, {i, "deps/logger/include"}]}. +{erl_opts, [debug_info, + {i, "include"}, + {i, "deps/logger/include"}, + {i, "deps/xml/include"}]}. %%{src_dirs, [asn1, src, mod_pubsub_ng]}. {src_dirs, [asn1, src]}. +{sub_dirs, ["rel"]}. + {deps, [{mysql, ".*", {git, "git://github.com/processone/mysql"}}, {pgsql, ".*", {git, "git://github.com/processone/pgsql"}}, {iconv, ".*", {git, "git://github.com/processone/eiconv"}}, @@ -11,14 +16,14 @@ {tls, ".*", {git, "git://github.com/processone/tls"}}, {ezlib, ".*", {git, "git://github.com/processone/zlib"}}, {stun, ".*", {git, "git://github.com/processone/stun"}}, + {stringprep, ".*", {git, "git://github.com/processone/stringprep"}}, + {riakc, ".*", {git, "git://github.com/basho/riak-erlang-client"}}, + {jiffy, ".*", {git, "git://github.com/davisp/jiffy"}}, + {ibrowse, ".*", {git, "git://github.com/cmullaparthi/ibrowse"}}, + {lhttpc, ".*", {git, "git://github.com/esl/lhttpc"}}, + %%{xml, ".*", {git, "git://github.com/processone/xml"}}, {xmlrpc, ".*", {git, "git://github.com/etnt/xmlrpc"}}]}. -{port_env, [{"CFLAGS", "-g -O2 -Wall"}]}. - -{port_specs, [{"priv/lib/sha_drv.so", ["c_src/sha_drv.c"]}, - {"priv/lib/expat_erl.so", ["c_src/expat_erl.c"]}, - {"priv/lib/xml.so", ["c_src/xml.c"]}]}. - %% Local Variables: %% mode: erlang %% End: diff --git a/rel/reltool.config.in b/rel/reltool.config.in new file mode 100644 index 000000000..b058b92bd --- /dev/null +++ b/rel/reltool.config.in @@ -0,0 +1,47 @@ +{sys, [ + {lib_dirs, []}, + {erts, [{mod_cond, derived}, {app_file, strip}]}, + {app_file, strip}, + {rel, "@PACKAGE_NAME@", "@PACKAGE_VERSION@", + [ + kernel, + stdlib, + sasl, + ejabberd + ]}, + {rel, "start_clean", "", + [ + kernel, + stdlib + ]}, + {boot_rel, "ejabberd"}, + {profile, embedded}, + {incl_cond, exclude}, + {excl_archive_filters, [".*"]}, %% Do not archive built libs + {excl_sys_filters, ["^bin/.*", "^erts.*/bin/(dialyzer|typer)", + "^erts.*/(doc|info|include|lib|man|src)"]}, + {excl_app_filters, ["\.gitignore"]}, + {app, sasl, [{incl_cond, include}]}, + {app, stdlib, [{incl_cond, include}]}, + {app, kernel, [{incl_cond, include}]}, + {app, ejabberd, [{incl_cond, include}, {lib_dir, ".."}]} + ]}. + +{target_dir, "ejabberd"}. + +{overlay, [ + {mkdir, "log/sasl"}, + {copy, "files/erl", "\{\{erts_vsn\}\}/bin/erl"}, + {copy, "files/nodetool", "\{\{erts_vsn\}\}/bin/nodetool"}, + {copy, "files/ejabberd", "bin/ejabberd"}, + {copy, "files/ejabberd.cmd", "bin/ejabberd.cmd"}, + {copy, "files/start_erl.cmd", "bin/start_erl.cmd"}, + {copy, "files/install_upgrade.escript", "bin/install_upgrade.escript"}, + {copy, "files/sys.config", "releases/\{\{rel_vsn\}\}/sys.config"}, + {copy, "files/vm.args", "releases/\{\{rel_vsn\}\}/vm.args"} + ]}. + +%%% Local Variables: +%%% mode: erlang +%%% End: +%%% vim: set filetype=erlang tabstop=8 foldmarker=%%%',%%%. foldmethod=marker: diff --git a/src/ejabberd.app.src b/src/ejabberd.app.src deleted file mode 100644 index 06077042c..000000000 --- a/src/ejabberd.app.src +++ /dev/null @@ -1,37 +0,0 @@ -%% $Id$ - -{application, ejabberd, - [{description, "ejabberd"}, - {vsn, "3.0.0"}, - {modules, []}, - {registered, [ejabberd, - ejabberd_sup, - ejabberd_auth, - ejabberd_router, - ejabberd_router_multicast, - ejabberd_sm, - ejabberd_s2s, - ejabberd_local, - ejabberd_listeners, - ejabberd_iq_sup, - ejabberd_service_sup, - ejabberd_s2s_out_sup, - ejabberd_s2s_in_sup, - ejabberd_c2s_sup, - ejabberd_mod_roster, - ejabberd_mod_echo, - ejabberd_mod_pubsub, - ejabberd_mod_irc, - ejabberd_mod_muc, - ejabberd_offline, - random_generator - ]}, - {applications, [kernel, stdlib]}, - {env, []}, - {mod, {ejabberd_app, []}}]}. - - -%% Local Variables: -%% mode: erlang -%% End: -%% vim: set filetype=erlang tabstop=8: diff --git a/src/ejabberd.app.src.in b/src/ejabberd.app.src.in new file mode 100644 index 000000000..4b0864831 --- /dev/null +++ b/src/ejabberd.app.src.in @@ -0,0 +1,16 @@ +%% $Id$ + +{application, ejabberd, + [{description, "@PACKAGE_NAME@"}, + {vsn, "@PACKAGE_VERSION@"}, + {modules, []}, + {registered, []}, + {applications, [kernel, stdlib]}, + {env, []}, + {mod, {ejabberd_app, []}}]}. + + +%% Local Variables: +%% mode: erlang +%% End: +%% vim: set filetype=erlang tabstop=8: diff --git a/src/ejabberd.erl b/src/ejabberd.erl index 258662473..02b24e5a2 100644 --- a/src/ejabberd.erl +++ b/src/ejabberd.erl @@ -28,8 +28,9 @@ -author('alexey@process-one.net'). -export([start/0, stop/0, - get_pid_file/0, - get_so_path/0, get_bin_path/0]). + get_pid_file/0]). + +-include("logger.hrl"). start() -> %%ejabberd_cover:start(), @@ -39,32 +40,6 @@ stop() -> application:stop(ejabberd). %%ejabberd_cover:stop(). -get_so_path() -> - case os:getenv("EJABBERD_SO_PATH") of - false -> - case code:priv_dir(ejabberd) of - {error, _} -> - "."; - Path -> - filename:join([Path, "lib"]) - end; - Path -> - Path - end. - -get_bin_path() -> - case os:getenv("EJABBERD_BIN_PATH") of - false -> - case code:priv_dir(ejabberd) of - {error, _} -> - "."; - Path -> - filename:join([Path, "bin"]) - end; - Path -> - Path - end. - %% @spec () -> false | string() get_pid_file() -> case os:getenv("EJABBERD_PID_PATH") of diff --git a/src/ejabberd_admin.erl b/src/ejabberd_admin.erl index b95afd7d2..c58bbb3b6 100644 --- a/src/ejabberd_admin.erl +++ b/src/ejabberd_admin.erl @@ -110,7 +110,7 @@ commands() -> result = {res, rescode}}, #ejabberd_commands{name = get_loglevel, tags = [logs, server], desc = "Get the current loglevel", - module = ejabberd_loglevel, function = get, + module = loglevel, function = get, args = [], result = {leveltuple, {tuple, [{levelnumber, integer}, {levelatom, atom}, diff --git a/src/ejabberd_app.erl b/src/ejabberd_app.erl index 167a9874c..182d55322 100644 --- a/src/ejabberd_app.erl +++ b/src/ejabberd_app.erl @@ -34,20 +34,16 @@ -include("ejabberd.hrl"). -include("logger.hrl"). - %%% %%% Application API %%% start(normal, _Args) -> - ejabberd_loglevel:set(4), + loglevel:set(4), write_pid_file(), - application:start(sasl), + start_apps(), randoms:start(), db_init(), - sha:start(), - stringprep_sup:start_link(), - xml:start(), start(), translate:start(), acl:start(), @@ -109,19 +105,12 @@ init() -> %error_logger:logfile({open, ?LOG_PATH}), LogPath = get_log_path(), error_logger:add_report_handler(ejabberd_logger_h, LogPath), - erl_ddll:load_driver(ejabberd:get_so_path(), tls_drv), - case erl_ddll:load_driver(ejabberd:get_so_path(), expat_erl) of - ok -> ok; - {error, already_loaded} -> ok - end, - Port = open_port({spawn, "expat_erl"}, [binary]), - loop(Port). + loop(). - -loop(Port) -> +loop() -> receive _ -> - loop(Port) + loop() end. db_init() -> @@ -250,3 +239,11 @@ delete_pid_file() -> PidFilename -> file:delete(PidFilename) end. + +start_apps() -> + application:start(sasl), + application:start(ssl), + application:start(tls), + application:start(xml), + application:start(stringprep), + application:start(ezlib). diff --git a/src/ejabberd_auth_pam.erl b/src/ejabberd_auth_pam.erl index 092728136..af3bb17f2 100644 --- a/src/ejabberd_auth_pam.erl +++ b/src/ejabberd_auth_pam.erl @@ -40,7 +40,7 @@ plain_password_required/0]). start(_Host) -> - case epam:start() of + case application:start(epam) of {ok, _} -> ok; {error, {already_started, _}} -> ok; Err -> Err diff --git a/src/ejabberd_config.erl b/src/ejabberd_config.erl index 71f5fba0c..c973c19b2 100644 --- a/src/ejabberd_config.erl +++ b/src/ejabberd_config.erl @@ -453,7 +453,7 @@ process_term(Term, State) -> {ejabberdctl_access_commands, ACs} -> add_option(ejabberdctl_access_commands, ACs, State); {loglevel, Loglevel} -> - ejabberd_loglevel:set(Loglevel), + loglevel:set(Loglevel), State; {max_fsm_queue, N} -> add_option(max_fsm_queue, N, State); diff --git a/src/ejabberd_frontend_socket.erl b/src/ejabberd_frontend_socket.erl index 0f5cb35d2..fb4d74bd5 100644 --- a/src/ejabberd_frontend_socket.erl +++ b/src/ejabberd_frontend_socket.erl @@ -157,7 +157,7 @@ handle_call({compress, Data}, _From, State) -> Reply = ok, {reply, Reply, State#socket_state{socket = ZlibSocket, - sockmod = ejabberd_zlib}, + sockmod = ezlib}, ?HIBERNATE_TIMEOUT}; handle_call(reset_stream, _From, State) -> ejabberd_receiver:reset_stream(State#socket_state.receiver), diff --git a/src/ejabberd_receiver.erl b/src/ejabberd_receiver.erl index 2fc542b39..99fcecf68 100644 --- a/src/ejabberd_receiver.erl +++ b/src/ejabberd_receiver.erl @@ -44,8 +44,8 @@ -include("logger.hrl"). -record(state, - {socket :: inet:socket() | tls:tls_socket() | ejabberd_zlib:zlib_socket(), - sock_mod = gen_tcp :: gen_tcp | tls | ejabberd_zlib, + {socket :: inet:socket() | tls:tls_socket() | ezlib:zlib_socket(), + sock_mod = gen_tcp :: gen_tcp | tls | ezlib, shaper_state = none :: shaper:shaper(), c2s_pid :: pid(), max_stanza_size = infinity :: non_neg_integer() | infinity, @@ -99,7 +99,7 @@ starttls(Pid, TLSOpts, Data) -> do_call(Pid, {starttls, TLSOpts, Data}). -spec compress(pid(), iodata() | undefined) -> {error, any()} | - {ok, ejabberd_zlib:zlib_socket()}. + {ok, ezlib:zlib_socket()}. compress(Pid, Data) -> do_call(Pid, {compress, Data}). @@ -171,7 +171,7 @@ handle_call({compress, Data}, _From, c2s_pid = C2SPid, socket = Socket, sock_mod = SockMod, max_stanza_size = MaxStanzaSize} = State) -> - {ok, ZlibSocket} = ejabberd_zlib:enable_zlib(SockMod, + {ok, ZlibSocket} = ezlib:enable_zlib(SockMod, Socket), if Data /= undefined -> do_send(State, Data); true -> ok @@ -180,9 +180,9 @@ handle_call({compress, Data}, _From, NewXMLStreamState = xml_stream:new(C2SPid, MaxStanzaSize), NewState = State#state{socket = ZlibSocket, - sock_mod = ejabberd_zlib, + sock_mod = ezlib, xml_stream_state = NewXMLStreamState}, - case ejabberd_zlib:recv_data(ZlibSocket, <<"">>) of + case ezlib:recv_data(ZlibSocket, <<"">>) of {ok, ZlibData} -> {reply, {ok, ZlibSocket}, process_data(ZlibData, NewState), ?HIBERNATE_TIMEOUT}; @@ -250,8 +250,8 @@ handle_info({Tag, _TCPSocket, Data}, ?HIBERNATE_TIMEOUT}; {error, _Reason} -> {stop, normal, State} end; - ejabberd_zlib -> - case ejabberd_zlib:recv_data(Socket, Data) of + ezlib -> + case ezlib:recv_data(Socket, Data) of {ok, ZlibData} -> {noreply, process_data(ZlibData, State), ?HIBERNATE_TIMEOUT}; diff --git a/src/ejabberd_socket.erl b/src/ejabberd_socket.erl index 1fe17aaa4..096bc46a9 100644 --- a/src/ejabberd_socket.erl +++ b/src/ejabberd_socket.erl @@ -43,11 +43,11 @@ -type sockmod() :: ejabberd_http_poll | ejabberd_bosh | ejabberd_http_bind | ejabberd_http_bindjson | ejabberd_http_ws | ejabberd_http_wsjson | - gen_tcp | tls | ejabberd_zlib. + gen_tcp | tls | ezlib. -type receiver() :: pid () | atom(). -type socket() :: pid() | inet:socket() | tls:tls_socket() | - ejabberd_zlib:zlib_socket() | + ezlib:zlib_socket() | ejabberd_bosh:bosh_socket() | ejabberd_http_ws:ws_socket() | ejabberd_http_poll:poll_socket(). @@ -152,7 +152,7 @@ compress(SocketData, Data) -> ejabberd_receiver:compress(SocketData#socket_state.receiver, Data), SocketData#socket_state{socket = ZlibSocket, - sockmod = ejabberd_zlib}. + sockmod = ezlib}. reset_stream(SocketData) when is_pid(SocketData#socket_state.receiver) -> @@ -255,8 +255,8 @@ get_conn_type(#socket_state{sockmod = SockMod, socket = Socket}) -> case SockMod of gen_tcp -> c2s; tls -> c2s_tls; - ejabberd_zlib -> - case ejabberd_zlib:get_sockmod(Socket) of + ezlib -> + case ezlib:get_sockmod(Socket) of gen_tcp -> c2s_compressed; tls -> c2s_compressed_tls end; diff --git a/src/eldap.erl b/src/eldap.erl index d894b55e1..dbfdb3adc 100644 --- a/src/eldap.erl +++ b/src/eldap.erl @@ -430,7 +430,6 @@ get_handle(Name) when is_binary(Name) -> %%%---------------------------------------------------------------------- init([Hosts, Port, Rootdn, Passwd, Opts]) -> - catch ssl:start(), Encrypt = case gen_mod:get_opt(encrypt, Opts, fun(tls) -> tls; (starttls) -> starttls; diff --git a/src/http_p1.erl b/src/http_p1.erl index 38a8cb716..497375581 100644 --- a/src/http_p1.erl +++ b/src/http_p1.erl @@ -39,11 +39,10 @@ -ifdef(USE_IBROWSE). start() -> - ibrowse:start(), - ssl:start(). + application:start(ibrowse). stop() -> - ibrowse:stop(). + application:stop(ibrowse). request(Method, URL, Hdrs, Body, Opts) -> TimeOut = proplists:get_value(timeout, Opts, infinity), @@ -62,13 +61,10 @@ request(Method, URL, Hdrs, Body, Opts) -> -ifdef(USE_LHTTPC). start() -> - application:start(crypto), - application:start(ssl), - lhttpc:start(). + application:start(lhttpc). stop() -> - lhttpc:stop(), - application:stop(ssl). + application:stop(lhttpc). request(Method, URL, Hdrs, Body, Opts) -> TimeOut = proplists:get_value(timeout, Opts, infinity), @@ -86,12 +82,10 @@ request(Method, URL, Hdrs, Body, Opts) -> -else. start() -> - inets:start(), - ssl:start(). + application:start(inets). stop() -> - inets:stop(), - ssl:stop(). + application:start(inets). to_list(Str) when is_binary(Str) -> binary_to_list(Str); diff --git a/src/mod_applepush_service.erl b/src/mod_applepush_service.erl index 698f87c2b..437b6f552 100644 --- a/src/mod_applepush_service.erl +++ b/src/mod_applepush_service.erl @@ -66,7 +66,6 @@ start_link(Host, Opts) -> gen_server:start_link({local, Proc}, ?MODULE, [Host, Opts], []). start(Host, Opts) -> - ssl:start(), MyHosts = case catch gen_mod:get_opt( hosts, Opts, fun(L) when is_list(L) -> diff --git a/src/mod_ip_blacklist.erl b/src/mod_ip_blacklist.erl index 9477451c0..3e8e2d2e3 100644 --- a/src/mod_ip_blacklist.erl +++ b/src/mod_ip_blacklist.erl @@ -69,7 +69,6 @@ preinit(Parent, State) -> stop(_Host) -> ok. init(State) -> - inets:start(), ets:new(bl_c2s, [named_table, public, {keypos, #bl_c2s.ip}]), update_bl_c2s(), diff --git a/src/mod_irc.erl b/src/mod_irc.erl index dbaeff9d0..1773a3934 100644 --- a/src/mod_irc.erl +++ b/src/mod_irc.erl @@ -99,7 +99,7 @@ stop(Host) -> %%==================================================================== init([Host, Opts]) -> - iconv:start(), + application:start(iconv), MyHost = gen_mod:get_opt_host(Host, Opts, <<"irc.@HOST@">>), case gen_mod:db_type(Opts) of diff --git a/src/sha.erl b/src/sha.erl deleted file mode 100644 index ebe9cfce9..000000000 --- a/src/sha.erl +++ /dev/null @@ -1,114 +0,0 @@ -%%%---------------------------------------------------------------------- -%%% File : sha.erl -%%% Author : Alexey Shchepin -%%% Purpose : -%%% Created : 20 Dec 2002 by Alexey Shchepin -%%% -%%% -%%% ejabberd, Copyright (C) 2002-2013 ProcessOne -%%% -%%% This program is free software; you can redistribute it and/or -%%% modify it under the terms of the GNU General Public License as -%%% published by the Free Software Foundation; either version 2 of the -%%% License, or (at your option) any later version. -%%% -%%% This program is distributed in the hope that it will be useful, -%%% but WITHOUT ANY WARRANTY; without even the implied warranty of -%%% MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU -%%% General Public License for more details. -%%% -%%% You should have received a copy of the GNU General Public License -%%% along with this program; if not, write to the Free Software -%%% Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA -%%% 02111-1307 USA -%%% -%%%---------------------------------------------------------------------- - --module(sha). - --author('alexey@process-one.net'). - --export([start/0, sha/1, sha1/1, sha224/1, sha256/1, - sha384/1, sha512/1, to_hexlist/1]). - --ifdef(HAVE_MD2). - --export([md2/1]). - --endif. - --include("ejabberd.hrl"). --include("logger.hrl"). - --define(DRIVER, sha_drv). - -start() -> - crypto:start(), - Res = case erl_ddll:load_driver(ejabberd:get_so_path(), - ?DRIVER) - of - ok -> ok; - {error, already_loaded} -> ok; - Err -> Err - end, - case Res of - ok -> - Port = open_port({spawn, atom_to_list(?DRIVER)}, - [binary]), - register(?DRIVER, Port); - {error, Reason} -> - ?CRITICAL_MSG("unable to load driver '~s': ~s", - [driver_path(), erl_ddll:format_error(Reason)]) - end. - -digit_to_xchar(D) when (D >= 0) and (D < 10) -> D + 48; -digit_to_xchar(D) -> D + 87. - --spec sha(binary()) -> binary(). - -sha(Text) -> - Bin = crypto:sha(Text), - to_hexlist(Bin). - --spec to_hexlist(binary()) -> binary(). - -to_hexlist(Bin) -> - iolist_to_binary(lists:reverse(ints_to_rxstr(binary_to_list(Bin), []))). - -ints_to_rxstr([], Res) -> Res; -ints_to_rxstr([N | Ns], Res) -> - ints_to_rxstr(Ns, - [digit_to_xchar(N rem 16), digit_to_xchar(N div 16) - | Res]). - --spec sha1(binary()) -> binary(). --spec sha224(binary()) -> binary(). --spec sha256(binary()) -> binary(). --spec sha384(binary()) -> binary(). --spec sha512(binary()) -> binary(). - -sha1(Text) -> crypto:sha(Text). - -sha224(Text) -> erlang:port_control(?DRIVER, 224, Text). - -sha256(Text) -> erlang:port_control(?DRIVER, 256, Text). - -sha384(Text) -> erlang:port_control(?DRIVER, 384, Text). - -sha512(Text) -> erlang:port_control(?DRIVER, 512, Text). - --ifdef(HAVE_MD2). - --spec md2(binary()) -> binary(). - -md2(Text) -> erlang:port_control(?DRIVER, 2, Text). - --endif. - -driver_path() -> - Suffix = case os:type() of - {win32, _} -> ".dll"; - _ -> ".so" - end, - filename:join(ejabberd:get_so_path(), - atom_to_list(?DRIVER) ++ Suffix). diff --git a/src/xml.erl b/src/xml.erl deleted file mode 100644 index 598362fc1..000000000 --- a/src/xml.erl +++ /dev/null @@ -1,433 +0,0 @@ -%%%---------------------------------------------------------------------- -%%% File : xml.erl -%%% Author : Alexey Shchepin -%%% Purpose : XML utils -%%% Created : 20 Nov 2002 by Alexey Shchepin -%%% -%%% -%%% ejabberd, Copyright (C) 2002-2013 ProcessOne -%%% -%%% This program is free software; you can redistribute it and/or -%%% modify it under the terms of the GNU General Public License as -%%% published by the Free Software Foundation; either version 2 of the -%%% License, or (at your option) any later version. -%%% -%%% This program is distributed in the hope that it will be useful, -%%% but WITHOUT ANY WARRANTY; without even the implied warranty of -%%% MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU -%%% General Public License for more details. -%%% -%%% You should have received a copy of the GNU General Public License -%%% along with this program; if not, write to the Free Software -%%% Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA -%%% 02111-1307 USA -%%% -%%%---------------------------------------------------------------------- - --module(xml). - --author('alexey@process-one.net'). - --export([element_to_binary/1, - crypt/1, make_text_node/1, remove_cdata/1, - remove_subtags/3, get_cdata/1, get_tag_cdata/1, - get_attr/2, get_attr_s/2, get_tag_attr/2, - get_tag_attr_s/2, get_subtag/2, get_subtag_cdata/2, - append_subtags/2, get_path_s/2, start/0, - replace_tag_attr/3, to_xmlel/1]). - --include("jlib.hrl"). --include("ejabberd.hrl"). --include("logger.hrl"). - -%% Select at compile time how to escape characters in binary text -%% nodes. -%% Can be choosen with ./configure --enable-full-xml --ifdef(FULL_XML_SUPPORT). - --define(ESCAPE_BINARY(CData), make_text_node(CData)). - --else. - --define(ESCAPE_BINARY(CData), crypt(CData)). - --endif. - -%% Replace element_to_binary/1 with NIF -%% Can be choosen with ./configure --enable-nif --ifdef(NIF). - -start() -> - SOPath = filename:join(ejabberd:get_so_path(), "xml"), - case catch erlang:load_nif(SOPath, 0) of - ok -> ok; - Err -> ?WARNING_MSG("unable to load xml NIF: ~p", [Err]) - end. - --else. - -start() -> ok. - --endif. - -%% --spec(element_to_binary/1 :: -( - El :: xmlel() | cdata()) - -> binary() -). - -element_to_binary(El) -> - iolist_to_binary(element_to_string(El)). - -%% --spec(element_to_string/1 :: -( - El :: xmlel() | cdata()) - -> string() -). - -element_to_string(El) -> - case catch element_to_string_nocatch(El) of - {'EXIT', Reason} -> erlang:error({badxml, El, Reason}); - Result -> Result - end. - --spec(element_to_string_nocatch/1 :: -( - El :: xmlel() | cdata()) - -> iolist() -). - -element_to_string_nocatch(El) -> - case El of - #xmlel{name = Name, attrs = Attrs, children = Els} -> - if Els /= [] -> - [$<, Name, attrs_to_list(Attrs), $>, - [element_to_string_nocatch(E) || E <- Els], $<, $/, - Name, $>]; - true -> [$<, Name, attrs_to_list(Attrs), $/, $>] - end; - %% We do not crypt CDATA binary, but we enclose it in XML CDATA - {xmlcdata, CData} -> - ?ESCAPE_BINARY(CData) - end. - -attrs_to_list(Attrs) -> [attr_to_list(A) || A <- Attrs]. - -attr_to_list({Name, Value}) -> - [$\s, Name, $=, $', crypt(Value), $']. - -crypt(S) -> - << <<(case C of - $& -> <<"&">>; - $< -> <<"<">>; - $> -> <<">">>; - $" -> <<""">>; - $' -> <<"'">>; - _ -> <> - end)/binary>> - || <> <= S >>. - -%% --spec(make_text_node/1 :: -( - CData :: binary()) - -> binary() -). - -make_text_node(CData) -> - case cdata_need_escape(CData) of - cdata -> - CDATA1 = <<">, - CDATA2 = <<"]]>">>, - iolist_to_binary([CDATA1, CData, CDATA2]); - none -> CData; - {cdata, EndTokens} -> - EscapedCData = escape_cdata(CData, EndTokens), - iolist_to_binary(EscapedCData) - end. - -cdata_need_escape(CData) -> - cdata_need_escape(CData, 0, false, []). - -cdata_need_escape(<<>>, _, false, _) -> none; -cdata_need_escape(<<>>, _, true, []) -> cdata; -cdata_need_escape(<<>>, _, true, CDataEndTokens) -> - {cdata, lists:reverse(CDataEndTokens)}; -cdata_need_escape(<<$], $], $>, Rest/binary>>, - CurrentPosition, _XMLEscape, CDataEndTokens) -> - NewPosition = CurrentPosition + 3, - cdata_need_escape(Rest, NewPosition, true, - [CurrentPosition + 1 | CDataEndTokens]); -%% Only <, & need to be escaped in XML text node -%% See reference: http://www.w3.org/TR/xml11/#syntax -cdata_need_escape(<<$<, Rest/binary>>, CurrentPosition, - _XMLEscape, CDataEndTokens) -> - cdata_need_escape(Rest, CurrentPosition + 1, true, - CDataEndTokens); -cdata_need_escape(<<$&, Rest/binary>>, CurrentPosition, - _XMLEscape, CDataEndTokens) -> - cdata_need_escape(Rest, CurrentPosition + 1, true, - CDataEndTokens); -cdata_need_escape(<<_:8, Rest/binary>>, CurrentPosition, - XMLEscape, CDataEndTokens) -> - cdata_need_escape(Rest, CurrentPosition + 1, XMLEscape, - CDataEndTokens). - -escape_cdata(CData, EndTokens) -> - escape_cdata(CData, 0, EndTokens, []). - -escape_cdata(<<>>, _CurrentPosition, [], Acc) -> - lists:reverse(Acc); -escape_cdata(Rest, CurrentPosition, [], Acc) -> - CDATA1 = <<">, - CDATA2 = <<"]]>">>, - escape_cdata(<<>>, CurrentPosition, [], - [CDATA2, Rest, CDATA1 | Acc]); -escape_cdata(CData, Index, [Pos | Positions], Acc) -> - CDATA1 = <<">, - CDATA2 = <<"]]>">>, - Split = Pos - Index, - {Part, Rest} = split_binary(CData, Split + 1), - escape_cdata(Rest, Pos + 1, Positions, - [CDATA2, Part, CDATA1 | Acc]). - -%% --spec(remove_cdata_p/1 :: -( - El :: xmlel() | cdata()) - -> boolean() -). - -remove_cdata_p(#xmlel{}) -> true; -remove_cdata_p(_) -> false. - -%% --spec(remove_cdata/1 :: -( - L :: [xmlel() | cdata()]) - -> [xmlel()] -). - -remove_cdata(L) -> [E || E <- L, remove_cdata_p(E)]. - --spec(remove_subtags/3 :: -( - Xmlel :: xmlel(), - Name :: binary(), - Attr :: attr()) - -> Xmlel :: xmlel() -). - -remove_subtags(#xmlel{name = TagName, attrs = TagAttrs, children = Els}, - Name, Attr) -> - #xmlel{name = TagName, attrs = TagAttrs, - children = remove_subtags1(Els, [], Name, Attr)}. - -%% --spec(remove_subtags1/4 :: -( - Els :: [xmlel() | cdata()], - NewEls :: [xmlel()], - Name :: binary(), - Attr :: attr()) - -> NewEls :: [xmlel()] -). - -remove_subtags1([], NewEls, _Name, _Attr) -> - lists:reverse(NewEls); -remove_subtags1([El | Els], NewEls, Name, - {AttrName, AttrValue} = Attr) -> - case El of - #xmlel{name = Name, attrs = Attrs} -> - case get_attr(AttrName, Attrs) of - false -> - remove_subtags1(Els, [El | NewEls], Name, Attr); - {value, AttrValue} -> - remove_subtags1(Els, NewEls, Name, Attr); - _ -> remove_subtags1(Els, [El | NewEls], Name, Attr) - end; - _ -> remove_subtags1(Els, [El | NewEls], Name, Attr) - end. - --spec(get_cdata/1 :: -( - L :: [xmlel() | cdata()]) - -> binary() -). - -get_cdata(L) -> - (iolist_to_binary(get_cdata(L, <<"">>))). - --spec(get_cdata/2 :: -( - L :: [xmlel() | cdata()], - S :: binary() | iolist()) - -> binary() | iolist() -). - -get_cdata([{xmlcdata, CData} | L], S) -> - get_cdata(L, [S, CData]); -get_cdata([_ | L], S) -> get_cdata(L, S); -get_cdata([], S) -> S. - --spec(get_tag_cdata/1 :: -( - Xmlel :: xmlel()) - -> binary() -). - -get_tag_cdata(#xmlel{children = Els}) -> get_cdata(Els). - -%% --spec(get_attr/2 :: -( - AttrName :: binary(), - Attrs :: [attr()]) - -> {value, binary()} - | false -). - -get_attr(AttrName, Attrs) -> - case lists:keysearch(AttrName, 1, Attrs) of - {value, {_, Val}} -> {value, Val}; - _ -> false - end. - -%% --spec(get_attr_s/2 :: -( - AttrName :: binary(), - Attrs :: [attr()]) - -> Val :: binary() -). - -get_attr_s(AttrName, Attrs) -> - case lists:keysearch(AttrName, 1, Attrs) of - {value, {_, Val}} -> Val; - _ -> <<"">> - end. - -%% --spec(get_tag_attr/2 :: -( - AttrName :: binary(), - Xmlel :: xmlel()) - -> {value, binary()} - | false -). - -get_tag_attr(AttrName, #xmlel{attrs = Attrs}) -> - get_attr(AttrName, Attrs). - -%% --spec(get_tag_attr_s/2 :: -( - AttrName :: binary(), - Xmlel :: xmlel()) - -> binary() -). - -get_tag_attr_s(AttrName, #xmlel{attrs = Attrs}) -> - get_attr_s(AttrName, Attrs). - -%% --spec(get_subtag/2 :: -( - Xmlel :: xmlel(), - Name :: binary()) - -> xmlel() | false -). - -get_subtag(#xmlel{children = Els}, Name) -> - get_subtag1(Els, Name). - -%% --spec(get_subtag1/2 :: -( - Els :: [xmlel() | cdata()], - Name :: binary()) - -> xmlel() | false -). - -get_subtag1([El | Els], Name) -> - case El of - #xmlel{name = Name} -> El; - _ -> get_subtag1(Els, Name) - end; -get_subtag1([], _) -> false. - -%% --spec(get_subtag_cdata/2 :: -( - Tag :: xmlel(), - Name :: binary()) - -> binary() -). - -get_subtag_cdata(Tag, Name) -> - case get_subtag(Tag, Name) of - false -> <<"">>; - Subtag -> get_tag_cdata(Subtag) - end. - -%% --spec(append_subtags/2 :: -( - Xmlel :: xmlel(), - SubTags2 :: [xmlel() | cdata()]) - -> Xmlel :: xmlel() -). - -append_subtags(#xmlel{name = Name, attrs = Attrs, children = SubTags1}, SubTags2) -> - #xmlel{name = Name, attrs = Attrs, children = SubTags1 ++ SubTags2}. - -%% --spec(get_path_s/2 :: -( - El :: xmlel(), - Path :: [{elem, Name::binary()} - |{attr, Name::binary()} - |cdata]) - -> xmlel() - | binary() -). - -get_path_s(El, []) -> El; -get_path_s(El, [{elem, Name} | Path]) -> - case get_subtag(El, Name) of - false -> <<"">>; - SubEl -> get_path_s(SubEl, Path) - end; -get_path_s(El, [{attr, Name}]) -> - get_tag_attr_s(Name, El); -get_path_s(El, [cdata]) -> get_tag_cdata(El). - -%% --spec(replace_tag_attr/3 :: -( - Name :: binary(), - Value :: binary(), - Xmlel :: xmlel()) - -> Xmlel :: #xmlel{ - name :: binary(), - attrs :: [attr(),...], - children :: [xmlel() | cdata()] - } -). - -replace_tag_attr(Name, Value, Xmlel) -> - Xmlel#xmlel{ - attrs = [{Name, Value} | lists:keydelete(Name, 1, Xmlel#xmlel.attrs)] - }. - --spec to_xmlel(xmlelement() | xmlel()) -> xmlel(). - -to_xmlel({_, Name, Attrs, Els}) -> - #xmlel{name = iolist_to_binary(Name), - attrs = [{iolist_to_binary(K), iolist_to_binary(V)} - || {K, V} <- Attrs], - children = [to_xmlel(El) || El <- Els]}; -to_xmlel({xmlcdata, CData}) -> - {xmlcdata, iolist_to_binary(CData)}. diff --git a/src/xml_stream.erl b/src/xml_stream.erl deleted file mode 100644 index a743bae86..000000000 --- a/src/xml_stream.erl +++ /dev/null @@ -1,246 +0,0 @@ -%%%---------------------------------------------------------------------- -%%% File : xml_stream.erl -%%% Author : Alexey Shchepin -%%% Purpose : Parse XML streams -%%% Created : 17 Nov 2002 by Alexey Shchepin -%%% -%%% -%%% ejabberd, Copyright (C) 2002-2013 ProcessOne -%%% -%%% This program is free software; you can redistribute it and/or -%%% modify it under the terms of the GNU General Public License as -%%% published by the Free Software Foundation; either version 2 of the -%%% License, or (at your option) any later version. -%%% -%%% This program is distributed in the hope that it will be useful, -%%% but WITHOUT ANY WARRANTY; without even the implied warranty of -%%% MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU -%%% General Public License for more details. -%%% -%%% You should have received a copy of the GNU General Public License -%%% along with this program; if not, write to the Free Software -%%% Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA -%%% 02111-1307 USA -%%% -%%%---------------------------------------------------------------------- - --module(xml_stream). - --author('alexey@process-one.net'). - --export([new/1, new/2, parse/2, close/1, - change_callback_pid/2, parse_element/1]). - --define(XML_START, 0). - --define(XML_END, 1). - --define(XML_CDATA, 2). - --define(XML_ERROR, 3). - --define(PARSE_COMMAND, 0). - --define(PARSE_FINAL_COMMAND, 1). - --record(xml_stream_state, - {callback_pid = self() :: pid(), - port :: port(), - stack = [] :: stack(), - size = 0 :: non_neg_integer(), - maxsize = infinity :: non_neg_integer() | infinity}). - --type xml_stream_el() :: {xmlstreamraw, binary()} | - {xmlstreamcdata, binary()} | - {xmlstreamelement, xmlel()} | - {xmlstreamend, binary()} | - {xmlstreamstart, binary(), [attr()]} | - {xmlstreamerror, binary()}. - --type xml_stream_state() :: #xml_stream_state{}. --type stack() :: [xmlel()]. --type event() :: {?XML_START, {binary(), [attr()]}} | - {?XML_END, binary()} | - {?XML_CDATA, binary()} | - {?XML_ERROR, binary()}. - --export_type([xml_stream_state/0, xml_stream_el/0]). - --include("jlib.hrl"). - -process_data(CallbackPid, Stack, Data) -> - case Data of - {?XML_START, {Name, Attrs}} -> - if - Stack == [] -> - catch gen_fsm:send_event(CallbackPid, - {xmlstreamstart, Name, Attrs}), - %% There is no need to store name or attributes of - %% stream opening element as it is not used - %% anymore. - [xmlstreamstart]; - true -> - [#xmlel{name = Name, attrs = Attrs, children = []} - | Stack] - end; - {?XML_END, EndName} -> - case Stack of - [xmlstreamstart] -> - catch gen_fsm:send_event(CallbackPid, - {xmlstreamend, EndName}), - []; - [#xmlel{name = Name, attrs = Attrs, children = Els}, - xmlstreamstart] -> - NewEl = #xmlel{name = Name, attrs = Attrs, - children = lists:reverse(Els)}, - catch gen_fsm:send_event(CallbackPid, - {xmlstreamelement, NewEl}), - [xmlstreamstart]; - [#xmlel{name = Name, attrs = Attrs, children = Els}, - #xmlel{name = Name1, attrs = Attrs1, children = Els1} - | Tail] -> - NewEl = #xmlel{name = Name, attrs = Attrs, - children = lists:reverse(Els)}, - [{xmlel, Name1, Attrs1, [NewEl | Els1]} | Tail] - end; - {?XML_CDATA, CData} -> - case Stack of - [xmlstreamstart] -> - catch gen_fsm:send_all_state_event(CallbackPid, - {xmlstreamcdata, CData}), - [xmlstreamstart]; - %% Merge CDATA nodes if they are contiguous - %% This does not change the semantic: the split in - %% several CDATA nodes depends on the TCP/IP packet - %% fragmentation - [#xmlel{name = Name, attrs = Attrs, - children = [{xmlcdata, PreviousCData} | Els]} - | Tail] -> - [#xmlel{name = Name, attrs = Attrs, - children = - [{xmlcdata, - iolist_to_binary([PreviousCData, CData])} - | Els]} - | Tail]; - %% No previous CDATA - [#xmlel{name = Name, attrs = Attrs, children = Els} - | Tail] -> - [#xmlel{name = Name, attrs = Attrs, - children = [{xmlcdata, CData} | Els]} - | Tail]; - [] -> [] - end; - {?XML_ERROR, Err} -> - catch gen_fsm:send_event(CallbackPid, - {xmlstreamerror, Err}) - end. - --spec new(pid()) -> xml_stream_state(). - -new(CallbackPid) -> new(CallbackPid, infinity). - --spec new(pid(), non_neg_integer() | infinity) -> xml_stream_state(). - -new(CallbackPid, MaxSize) -> - Port = open_port({spawn, "expat_erl"}, [binary]), - #xml_stream_state{callback_pid = CallbackPid, - port = Port, stack = [], size = 0, maxsize = MaxSize}. - --spec change_callback_pid(xml_stream_state(), pid()) -> xml_stream_state(). - -change_callback_pid(State, CallbackPid) -> - State#xml_stream_state{callback_pid = CallbackPid}. - --spec parse(xml_stream_state(), iodata()) -> xml_stream_state(). - -parse(#xml_stream_state{callback_pid = CallbackPid, - port = Port, stack = Stack, size = Size, - maxsize = MaxSize} = - State, - Str) -> - StrSize = byte_size(Str), - Res = port_control(Port, ?PARSE_COMMAND, Str), - {NewStack, NewSize} = lists:foldl(fun (Data, - {St, Sz}) -> - NewSt = process_data(CallbackPid, - St, Data), - case NewSt of - [_] -> {NewSt, 0}; - _ -> {NewSt, Sz} - end - end, - {Stack, Size + StrSize}, - binary_to_term(Res)), - if NewSize > MaxSize -> - catch gen_fsm:send_event(CallbackPid, - {xmlstreamerror, - <<"XML stanza is too big">>}); - true -> ok - end, - State#xml_stream_state{stack = NewStack, - size = NewSize}. - --spec close(xml_stream_state()) -> true. - -close(#xml_stream_state{port = Port}) -> - port_close(Port). - --spec parse_element(iodata()) -> xmlel() | - {error, parse_error} | - {error, binary()}. - -parse_element(Str) -> - Port = open_port({spawn, "expat_erl"}, [binary]), - Res = port_control(Port, ?PARSE_FINAL_COMMAND, Str), - port_close(Port), - process_element_events(binary_to_term(Res)). - -process_element_events(Events) -> - process_element_events(Events, []). - --spec process_element_events([event()], stack()) -> xmlel() | - {error, parse_error} | - {error, binary()}. - -process_element_events([], _Stack) -> - {error, parse_error}; -process_element_events([Event | Events], Stack) -> - case Event of - {?XML_START, {Name, Attrs}} -> - process_element_events(Events, - [#xmlel{name = Name, attrs = Attrs, - children = []} - | Stack]); - {?XML_END, _EndName} -> - case Stack of - [#xmlel{name = Name, attrs = Attrs, children = Els} - | Tail] -> - NewEl = #xmlel{name = Name, attrs = Attrs, - children = lists:reverse(Els)}, - case Tail of - [] -> - if Events == [] -> NewEl; - true -> {error, parse_error} - end; - [#xmlel{name = Name1, attrs = Attrs1, children = Els1} - | Tail1] -> - process_element_events(Events, - [#xmlel{name = Name1, - attrs = Attrs1, - children = [NewEl | Els1]} - | Tail1]) - end - end; - {?XML_CDATA, CData} -> - case Stack of - [#xmlel{name = Name, attrs = Attrs, children = Els} - | Tail] -> - process_element_events(Events, - [#xmlel{name = Name, attrs = Attrs, - children = - [{xmlcdata, CData} | Els]} - | Tail]); - [] -> process_element_events(Events, []) - end; - {?XML_ERROR, Err} -> {error, Err} - end.