diff --git a/Freeswitch.2008.sln b/Freeswitch.2008.sln
index 737ea6b808..5acc6fffe0 100644
--- a/Freeswitch.2008.sln
+++ b/Freeswitch.2008.sln
@@ -998,7 +998,12 @@ Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "mod_siren", "src\mod\codecs
{1BC8A8EC-E03B-44DF-BCD9-088650F4D29C} = {1BC8A8EC-E03B-44DF-BCD9-088650F4D29C}
EndProjectSection
EndProject
-Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "esl", "libs\esl\esl.2008.vcproj", "{CF405366-9558-4AE8-90EF-5E21B51CCB4E}"
+Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "esl", "libs\esl\src\esl.2008.vcproj", "{CF405366-9558-4AE8-90EF-5E21B51CCB4E}"
+EndProject
+Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "fs_cli", "libs\esl\fs_cli.2008.vcproj", "{D2FB8043-D208-4AEE-8F18-3B5857C871B9}"
+ ProjectSection(ProjectDependencies) = postProject
+ {CF405366-9558-4AE8-90EF-5E21B51CCB4E} = {CF405366-9558-4AE8-90EF-5E21B51CCB4E}
+ EndProjectSection
EndProject
Global
GlobalSection(SolutionConfigurationPlatforms) = preSolution
@@ -1762,6 +1767,10 @@ Global
{CF405366-9558-4AE8-90EF-5E21B51CCB4E}.Release|Win32.ActiveCfg = Release|Win32
{CF405366-9558-4AE8-90EF-5E21B51CCB4E}.Release|Win32.Build.0 = Release|Win32
{CF405366-9558-4AE8-90EF-5E21B51CCB4E}.Release|x64.ActiveCfg = Release|Win32
+ {D2FB8043-D208-4AEE-8F18-3B5857C871B9}.Debug|Win32.ActiveCfg = Debug|Win32
+ {D2FB8043-D208-4AEE-8F18-3B5857C871B9}.Debug|x64.ActiveCfg = Debug|Win32
+ {D2FB8043-D208-4AEE-8F18-3B5857C871B9}.Release|Win32.ActiveCfg = Release|Win32
+ {D2FB8043-D208-4AEE-8F18-3B5857C871B9}.Release|x64.ActiveCfg = Release|Win32
EndGlobalSection
GlobalSection(SolutionProperties) = preSolution
HideSolutionNode = FALSE
diff --git a/libs/esl/fs_cli.2008.vcproj b/libs/esl/fs_cli.2008.vcproj
new file mode 100644
index 0000000000..79093674e6
--- /dev/null
+++ b/libs/esl/fs_cli.2008.vcproj
@@ -0,0 +1,258 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/libs/esl/fs_cli.c b/libs/esl/fs_cli.c
index f49dd12270..c430aaa905 100644
--- a/libs/esl/fs_cli.c
+++ b/libs/esl/fs_cli.c
@@ -2,13 +2,20 @@
#include
#include
#include
-#include
+#ifdef WIN32
+#define strdup(src) _strdup(src)
+#define usleep(time) Sleep(time/1000)
+#else
+#include
#include
+#define HAVE_EDITLINE
+#endif
static char prompt_str[512] = "";
static char hostname[512] = "";
+#ifdef HAVE_EDITLINE
static char *prompt(EditLine * e)
{
return prompt_str;
@@ -17,6 +24,8 @@ static char *prompt(EditLine * e)
static EditLine *el;
static History *myhistory;
static HistEvent ev;
+#endif
+
static int running = 1;
static int thread_running = 0;
@@ -149,8 +158,8 @@ static int get_profile(const char *name, cli_profile_t **profile)
int main(int argc, char *argv[])
{
esl_handle_t handle = {{0}};
- int count;
- const char *line;
+ int count = 0;
+ const char *line = NULL;
char cmd_str[1024] = "";
char hfile[512] = "/tmp/fs_cli_history";
char cfile[512] = "/tmp/fs_cli_config";
@@ -199,7 +208,7 @@ int main(int argc, char *argv[])
} else if (!strcasecmp(var, "port")) {
int pt = atoi(val);
if (pt > 0) {
- profiles[cur].port = pt;
+ profiles[cur].port = (esl_port_t)pt;
}
}
}
@@ -227,7 +236,8 @@ int main(int argc, char *argv[])
}
esl_thread_create_detached(msg_thread_run, &handle);
-
+
+#ifdef HAVE_EDITLINE
el = el_init(__FILE__, stdout, stdout, stdout);
el_set(el, EL_PROMPT, &prompt);
el_set(el, EL_EDITOR, "emacs");
@@ -241,7 +251,8 @@ int main(int argc, char *argv[])
history(myhistory, &ev, H_SETSIZE, 800);
el_set(el, EL_HIST, history, myhistory);
history(myhistory, &ev, H_LOAD, hfile);
-
+#endif
+
snprintf(cmd_str, sizeof(cmd_str), "log info\n\n");
esl_send_recv(&handle, cmd_str);
@@ -249,19 +260,28 @@ int main(int argc, char *argv[])
while (running) {
+#ifdef HAVE_EDITLINE
line = el_gets(el, &count);
-
+#endif
+
if (count > 1) {
if (!esl_strlen_zero(line)) {
char *cmd = strdup(line);
char *p;
+
+#ifdef HAVE_EDITLINE
const LineInfo *lf = el_line(el);
char *foo = (char *) lf->buffer;
+#endif
+
if ((p = strrchr(cmd, '\r')) || (p = strrchr(cmd, '\n'))) {
*p = '\0';
}
assert(cmd != NULL);
+
+#ifdef HAVE_EDITLINE
history(myhistory, &ev, H_ENTER, line);
+#endif
if (!strncasecmp(cmd, "...", 3)) {
goto done;
@@ -277,8 +297,10 @@ int main(int argc, char *argv[])
}
}
+#ifdef HAVE_EDITLINE
el_deletestr(el, strlen(foo) + 1);
memset(foo, 0, strlen(foo));
+#endif
free(cmd);
}
}
@@ -290,11 +312,13 @@ int main(int argc, char *argv[])
done:
+#ifdef HAVE_EDITLINE
history(myhistory, &ev, H_SAVE, hfile);
/* Clean up our memory */
history_end(myhistory);
el_end(el);
+#endif
esl_disconnect(&handle);
diff --git a/libs/esl/esl.2008.vcproj b/libs/esl/src/esl.2008.vcproj
similarity index 86%
rename from libs/esl/esl.2008.vcproj
rename to libs/esl/src/esl.2008.vcproj
index c4a78e459b..d64593c7aa 100644
--- a/libs/esl/esl.2008.vcproj
+++ b/libs/esl/src/esl.2008.vcproj
@@ -41,7 +41,7 @@
@@ -200,19 +200,19 @@
UniqueIdentifier="{93995380-89BD-4b04-88EB-625FBE52EBFB}"
>
diff --git a/libs/esl/src/esl.c b/libs/esl/src/esl.c
index 79fa4a7919..c832d11e51 100644
--- a/libs/esl/src/esl.c
+++ b/libs/esl/src/esl.c
@@ -175,23 +175,23 @@ ESL_DECLARE(const char *)esl_stristr(const char *instr, const char *str)
return NULL;
}
-#ifdef WIN32
-#ifndef vsnprintf
-#define vsnprintf _vsnprintf
-#endif
-#endif
-
-ESL_DECLARE(int) esl_snprintf(char *buffer, size_t count, const char *fmt, ...)
-{
- va_list ap;
- int ret;
-
- va_start(ap, fmt);
- ret = vsnprintf(buffer, count-1, fmt, ap);
- if (ret < 0)
- buffer[count-1] = '\0';
- va_end(ap);
- return ret;
+#ifdef WIN32
+#ifndef vsnprintf
+#define vsnprintf _vsnprintf
+#endif
+#endif
+
+ESL_DECLARE(int) esl_snprintf(char *buffer, size_t count, const char *fmt, ...)
+{
+ va_list ap;
+ int ret;
+
+ va_start(ap, fmt);
+ ret = vsnprintf(buffer, count-1, fmt, ap);
+ if (ret < 0)
+ buffer[count-1] = '\0';
+ va_end(ap);
+ return ret;
}
static void null_logger(const char *file, const char *func, int line, int level, const char *fmt, ...)
@@ -261,7 +261,7 @@ static void default_logger(const char *file, const char *func, int line, int lev
esl_logger_t esl_log = null_logger;
-void esl_global_set_logger(esl_logger_t logger)
+ESL_DECLARE(void) esl_global_set_logger(esl_logger_t logger)
{
if (logger) {
esl_log = logger;
@@ -270,7 +270,7 @@ void esl_global_set_logger(esl_logger_t logger)
}
}
-void esl_global_set_default_logger(int level)
+ESL_DECLARE(void) esl_global_set_default_logger(int level)
{
if (level < 0 || level > 7) {
level = 7;
@@ -410,7 +410,7 @@ ESL_DECLARE(esl_status_t) esl_execute(esl_handle_t *handle, const char *app, con
static int esl_socket_reuseaddr(esl_socket_t socket)
{
#ifdef WIN32
- BOOL reuse_addr = TRUE;
+ BOOL reuse_addr = TRUE;
return setsockopt(socket, SOL_SOCKET, SO_REUSEADDR, (char *)&reuse_addr, sizeof(reuse_addr));
#else
int reuse_addr = 1;
@@ -596,11 +596,11 @@ ESL_DECLARE(esl_status_t) esl_recv_event_timed(esl_handle_t *handle, uint32_t ms
FD_ZERO(&efds);
#ifdef WIN32
-#pragma warning( push )
+#pragma warning( push )
#pragma warning( disable : 4127 )
FD_SET(handle->sock, &rfds);
FD_SET(handle->sock, &efds);
-#pragma warning( pop )
+#pragma warning( pop )
#else
FD_SET(handle->sock, &rfds);
FD_SET(handle->sock, &efds);
diff --git a/libs/esl/src/include/esl.h b/libs/esl/src/include/esl.h
index dbdfb70676..58a941dc49 100644
--- a/libs/esl/src/include/esl.h
+++ b/libs/esl/src/include/esl.h
@@ -163,10 +163,10 @@ typedef struct esl_event esl_event_t;
#include
#endif
#include
-
-#if (_MSC_VER >= 1400) // VC8+
-#define esl_assert(expr) assert(expr);__analysis_assume( expr )
-#endif
+
+#if (_MSC_VER >= 1400) // VC8+
+#define esl_assert(expr) assert(expr);__analysis_assume( expr )
+#endif
#ifndef esl_assert
#define esl_assert(_x) assert(_x)
@@ -192,23 +192,23 @@ typedef intptr_t esl_ssize_t;
typedef int esl_filehandle_t;
#define ESL_SOCK_INVALID INVALID_SOCKET
#define strerror_r(num, buf, size) strerror_s(buf, size, num)
-#if defined(ESL_DECLARE_STATIC)
-#define ESL_DECLARE(type) type __stdcall
-#define ESL_DECLARE_NONSTD(type) type __cdecl
-#define ESL_DECLARE_DATA
-#elif defined(ESL_EXPORTS)
-#define ESL_DECLARE(type) __declspec(dllexport) type __stdcall
-#define ESL_DECLARE_NONSTD(type) __declspec(dllexport) type __cdecl
-#define ESL_DECLARE_DATA __declspec(dllexport)
-#else
-#define ESL_DECLARE(type) __declspec(dllimport) type __stdcall
-#define ESL_DECLARE_NONSTD(type) __declspec(dllimport) type __cdecl
-#define ESL_DECLARE_DATA __declspec(dllimport)
-#endif
+#if defined(ESL_DECLARE_STATIC)
+#define ESL_DECLARE(type) type __stdcall
+#define ESL_DECLARE_NONSTD(type) type __cdecl
+#define ESL_DECLARE_DATA
+#elif defined(ESL_EXPORTS)
+#define ESL_DECLARE(type) __declspec(dllexport) type __stdcall
+#define ESL_DECLARE_NONSTD(type) __declspec(dllexport) type __cdecl
+#define ESL_DECLARE_DATA __declspec(dllexport)
#else
-#define ESL_DECLARE(type) type
-#define ESL_DECLARE_NONSTD(type) type
-#define ESL_DECLARE_DATA
+#define ESL_DECLARE(type) __declspec(dllimport) type __stdcall
+#define ESL_DECLARE_NONSTD(type) __declspec(dllimport) type __cdecl
+#define ESL_DECLARE_DATA __declspec(dllimport)
+#endif
+#else
+#define ESL_DECLARE(type) type
+#define ESL_DECLARE_NONSTD(type) type
+#define ESL_DECLARE_DATA
#include
#include
#include
@@ -281,10 +281,10 @@ typedef enum {
#define ESL_LOG_EMERG ESL_PRE, ESL_LOG_LEVEL_EMERG
typedef void (*esl_logger_t)(const char *file, const char *func, int line, int level, const char *fmt, ...);
-extern esl_logger_t esl_log;
+ESL_DECLARE_DATA extern esl_logger_t esl_log;
-void esl_global_set_logger(esl_logger_t logger);
-void esl_global_set_default_logger(int level);
+ESL_DECLARE(void) esl_global_set_logger(esl_logger_t logger);
+ESL_DECLARE(void) esl_global_set_default_logger(int level);
#include "esl_event.h"
#include "esl_threadmutex.h"
@@ -295,7 +295,7 @@ ESL_DECLARE(char *)esl_url_decode(char *s);
ESL_DECLARE(const char *)esl_stristr(const char *instr, const char *str);
ESL_DECLARE(int) esl_toupper(int c);
ESL_DECLARE(int) esl_tolower(int c);
-ESL_DECLARE(int) esl_snprintf(char *buffer, size_t count, const char *fmt, ...);
+ESL_DECLARE(int) esl_snprintf(char *buffer, size_t count, const char *fmt, ...);
typedef void (*esl_listen_callback_t)(esl_socket_t server_sock, esl_socket_t client_sock, struct sockaddr_in addr);