{1BC8A8EC-E03B-44DF-BCD9-088650F4D29C} = {1BC8A8EC-E03B-44DF-BCD9-088650F4D29C}\r
EndProjectSection\r
EndProject\r
-Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "esl", "libs\esl\esl.2008.vcproj", "{CF405366-9558-4AE8-90EF-5E21B51CCB4E}"\r
+Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "esl", "libs\esl\src\esl.2008.vcproj", "{CF405366-9558-4AE8-90EF-5E21B51CCB4E}"\r
+EndProject\r
+Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "fs_cli", "libs\esl\fs_cli.2008.vcproj", "{D2FB8043-D208-4AEE-8F18-3B5857C871B9}"\r
+ ProjectSection(ProjectDependencies) = postProject\r
+ {CF405366-9558-4AE8-90EF-5E21B51CCB4E} = {CF405366-9558-4AE8-90EF-5E21B51CCB4E}\r
+ EndProjectSection\r
EndProject\r
Global\r
GlobalSection(SolutionConfigurationPlatforms) = preSolution\r
{CF405366-9558-4AE8-90EF-5E21B51CCB4E}.Release|Win32.ActiveCfg = Release|Win32\r
{CF405366-9558-4AE8-90EF-5E21B51CCB4E}.Release|Win32.Build.0 = Release|Win32\r
{CF405366-9558-4AE8-90EF-5E21B51CCB4E}.Release|x64.ActiveCfg = Release|Win32\r
+ {D2FB8043-D208-4AEE-8F18-3B5857C871B9}.Debug|Win32.ActiveCfg = Debug|Win32\r
+ {D2FB8043-D208-4AEE-8F18-3B5857C871B9}.Debug|x64.ActiveCfg = Debug|Win32\r
+ {D2FB8043-D208-4AEE-8F18-3B5857C871B9}.Release|Win32.ActiveCfg = Release|Win32\r
+ {D2FB8043-D208-4AEE-8F18-3B5857C871B9}.Release|x64.ActiveCfg = Release|Win32\r
EndGlobalSection\r
GlobalSection(SolutionProperties) = preSolution\r
HideSolutionNode = FALSE\r
--- /dev/null
+<?xml version="1.0" encoding="Windows-1252"?>\r
+<VisualStudioProject\r
+ ProjectType="Visual C++"\r
+ Version="9.00"\r
+ Name="fs_cli"\r
+ ProjectGUID="{D2FB8043-D208-4AEE-8F18-3B5857C871B9}"\r
+ RootNamespace="fs_cli"\r
+ Keyword="Win32Proj"\r
+ TargetFrameworkVersion="131072"\r
+ >\r
+ <Platforms>\r
+ <Platform\r
+ Name="Win32"\r
+ />\r
+ </Platforms>\r
+ <ToolFiles>\r
+ </ToolFiles>\r
+ <Configurations>\r
+ <Configuration\r
+ Name="Debug|Win32"\r
+ OutputDirectory="$(ConfigurationName)"\r
+ IntermediateDirectory="$(ConfigurationName)"\r
+ ConfigurationType="1"\r
+ InheritedPropertySheets="..\..\w32\winlibs.vsprops"\r
+ CharacterSet="2"\r
+ BuildLogFile="$(IntDir)\BuildLog $(ProjectName).htm"\r
+ >\r
+ <Tool\r
+ Name="VCPreBuildEventTool"\r
+ />\r
+ <Tool\r
+ Name="VCCustomBuildTool"\r
+ />\r
+ <Tool\r
+ Name="VCXMLDataGeneratorTool"\r
+ />\r
+ <Tool\r
+ Name="VCWebServiceProxyGeneratorTool"\r
+ />\r
+ <Tool\r
+ Name="VCMIDLTool"\r
+ />\r
+ <Tool\r
+ Name="VCCLCompilerTool"\r
+ Optimization="0"\r
+ AdditionalIncludeDirectories=""$(InputDir)\src\include""\r
+ PreprocessorDefinitions="WIN32;_DEBUG;_CONSOLE;_CRT_SECURE_NO_WARNINGS"\r
+ MinimalRebuild="true"\r
+ BasicRuntimeChecks="3"\r
+ RuntimeLibrary="3"\r
+ UsePrecompiledHeader="0"\r
+ WarningLevel="4"\r
+ WarnAsError="true"\r
+ DebugInformationFormat="3"\r
+ DisableSpecificWarnings="4100;6053;4706"\r
+ EnablePREfast="true"\r
+ />\r
+ <Tool\r
+ Name="VCManagedResourceCompilerTool"\r
+ />\r
+ <Tool\r
+ Name="VCResourceCompilerTool"\r
+ />\r
+ <Tool\r
+ Name="VCPreLinkEventTool"\r
+ />\r
+ <Tool\r
+ Name="VCLinkerTool"\r
+ OutputFile="$(SolutionDir)$(ConfigurationName)/fs_cli.exe"\r
+ LinkIncremental="1"\r
+ AdditionalLibraryDirectories="$(OutDir)"\r
+ GenerateDebugInformation="true"\r
+ ProgramDatabaseFile="$(OutDir)/fs_cli.pdb"\r
+ SubSystem="1"\r
+ RandomizedBaseAddress="1"\r
+ DataExecutionPrevention="0"\r
+ TargetMachine="1"\r
+ />\r
+ <Tool\r
+ Name="VCALinkTool"\r
+ />\r
+ <Tool\r
+ Name="VCManifestTool"\r
+ />\r
+ <Tool\r
+ Name="VCXDCMakeTool"\r
+ />\r
+ <Tool\r
+ Name="VCBscMakeTool"\r
+ />\r
+ <Tool\r
+ Name="VCFxCopTool"\r
+ />\r
+ <Tool\r
+ Name="VCAppVerifierTool"\r
+ />\r
+ <Tool\r
+ Name="VCPostBuildEventTool"\r
+ />\r
+ </Configuration>\r
+ <Configuration\r
+ Name="Release|Win32"\r
+ OutputDirectory="$(ConfigurationName)"\r
+ IntermediateDirectory="$(ConfigurationName)"\r
+ ConfigurationType="1"\r
+ InheritedPropertySheets="..\..\w32\winlibs.vsprops"\r
+ CharacterSet="2"\r
+ BuildLogFile="$(IntDir)\BuildLog $(ProjectName).htm"\r
+ >\r
+ <Tool\r
+ Name="VCPreBuildEventTool"\r
+ />\r
+ <Tool\r
+ Name="VCCustomBuildTool"\r
+ />\r
+ <Tool\r
+ Name="VCXMLDataGeneratorTool"\r
+ />\r
+ <Tool\r
+ Name="VCWebServiceProxyGeneratorTool"\r
+ />\r
+ <Tool\r
+ Name="VCMIDLTool"\r
+ />\r
+ <Tool\r
+ Name="VCCLCompilerTool"\r
+ AdditionalIncludeDirectories=""$(InputDir)\src\include""\r
+ PreprocessorDefinitions="WIN32;NDEBUG;_CONSOLE;_CRT_SECURE_NO_WARNINGS"\r
+ RuntimeLibrary="2"\r
+ UsePrecompiledHeader="0"\r
+ WarningLevel="4"\r
+ WarnAsError="true"\r
+ DebugInformationFormat="3"\r
+ DisableSpecificWarnings="4100;6053;4706"\r
+ />\r
+ <Tool\r
+ Name="VCManagedResourceCompilerTool"\r
+ />\r
+ <Tool\r
+ Name="VCResourceCompilerTool"\r
+ />\r
+ <Tool\r
+ Name="VCPreLinkEventTool"\r
+ />\r
+ <Tool\r
+ Name="VCLinkerTool"\r
+ OutputFile="$(SolutionDir)$(ConfigurationName)/fs_cli.exe"\r
+ LinkIncremental="1"\r
+ AdditionalLibraryDirectories="$(OutDir)"\r
+ GenerateDebugInformation="true"\r
+ ProgramDatabaseFile="$(OutDir)/fs_cli.pdb"\r
+ SubSystem="1"\r
+ OptimizeReferences="2"\r
+ EnableCOMDATFolding="2"\r
+ RandomizedBaseAddress="1"\r
+ DataExecutionPrevention="0"\r
+ TargetMachine="1"\r
+ />\r
+ <Tool\r
+ Name="VCALinkTool"\r
+ />\r
+ <Tool\r
+ Name="VCManifestTool"\r
+ />\r
+ <Tool\r
+ Name="VCXDCMakeTool"\r
+ />\r
+ <Tool\r
+ Name="VCBscMakeTool"\r
+ />\r
+ <Tool\r
+ Name="VCFxCopTool"\r
+ />\r
+ <Tool\r
+ Name="VCAppVerifierTool"\r
+ />\r
+ <Tool\r
+ Name="VCPostBuildEventTool"\r
+ />\r
+ </Configuration>\r
+ </Configurations>\r
+ <References>\r
+ </References>\r
+ <Files>\r
+ <Filter\r
+ Name="Source Files"\r
+ Filter="cpp;c;cxx;def;odl;idl;hpj;bat;asm;asmx"\r
+ UniqueIdentifier="{4FC737F1-C7A5-4376-A066-2A32D752A2FF}"\r
+ >\r
+ <File\r
+ RelativePath="fs_cli.c"\r
+ >\r
+ </File>\r
+ </Filter>\r
+ <Filter\r
+ Name="Header Files"\r
+ Filter="h;hpp;hxx;hm;inl;inc;xsd"\r
+ UniqueIdentifier="{93995380-89BD-4b04-88EB-625FBE52EBFB}"\r
+ >\r
+ <File\r
+ RelativePath="..\..\src\include\switch.h"\r
+ >\r
+ </File>\r
+ <File\r
+ RelativePath="..\..\src\include\switch_buffer.h"\r
+ >\r
+ </File>\r
+ <File\r
+ RelativePath="..\..\src\include\switch_caller.h"\r
+ >\r
+ </File>\r
+ <File\r
+ RelativePath="..\..\src\include\switch_channel.h"\r
+ >\r
+ </File>\r
+ <File\r
+ RelativePath="..\..\src\include\switch_config.h"\r
+ >\r
+ </File>\r
+ <File\r
+ RelativePath="..\..\src\include\switch_console.h"\r
+ >\r
+ </File>\r
+ <File\r
+ RelativePath="..\..\src\include\switch_core.h"\r
+ >\r
+ </File>\r
+ <File\r
+ RelativePath="..\..\src\include\switch_frame.h"\r
+ >\r
+ </File>\r
+ <File\r
+ RelativePath="..\..\src\include\switch_loadable_module.h"\r
+ >\r
+ </File>\r
+ <File\r
+ RelativePath="..\..\src\include\switch_module_interfaces.h"\r
+ >\r
+ </File>\r
+ <File\r
+ RelativePath="..\..\src\include\switch_types.h"\r
+ >\r
+ </File>\r
+ <File\r
+ RelativePath="..\..\src\include\switch_utils.h"\r
+ >\r
+ </File>\r
+ </Filter>\r
+ <Filter\r
+ Name="Resource Files"\r
+ Filter="rc;ico;cur;bmp;dlg;rc2;rct;bin;rgs;gif;jpg;jpeg;jpe;resx"\r
+ UniqueIdentifier="{67DA6AB6-F800-4c08-8B7A-83BB121AAD01}"\r
+ >\r
+ </Filter>\r
+ </Files>\r
+ <Globals>\r
+ </Globals>\r
+</VisualStudioProject>\r
#include <stdlib.h>
#include <esl.h>
#include <signal.h>
-#include <sys/select.h>
+#ifdef WIN32
+#define strdup(src) _strdup(src)
+#define usleep(time) Sleep(time/1000)
+#else
+#include <sys/select.h>
#include <histedit.h>
+#define HAVE_EDITLINE
+#endif
static char prompt_str[512] = "";
static char hostname[512] = "";
+#ifdef HAVE_EDITLINE
static char *prompt(EditLine * e)
{
return prompt_str;
static EditLine *el;
static History *myhistory;
static HistEvent ev;
+#endif
+
static int running = 1;
static int thread_running = 0;
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";
} else if (!strcasecmp(var, "port")) {
int pt = atoi(val);
if (pt > 0) {
- profiles[cur].port = pt;
+ profiles[cur].port = (esl_port_t)pt;
}
}
}
}
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");
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);
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;
}
}
+#ifdef HAVE_EDITLINE
el_deletestr(el, strlen(foo) + 1);
memset(foo, 0, strlen(foo));
+#endif
free(cmd);
}
}
done:
+#ifdef HAVE_EDITLINE
history(myhistory, &ev, H_SAVE, hfile);
/* Clean up our memory */
history_end(myhistory);
el_end(el);
+#endif
esl_disconnect(&handle);
<Tool\r
Name="VCCLCompilerTool"\r
Optimization="0"\r
- AdditionalIncludeDirectories="src/include"\r
+ AdditionalIncludeDirectories="include"\r
PreprocessorDefinitions="WIN32;_DEBUG;_LIB;_CRT_SECURE_NO_DEPRECATE;_CRT_NONSTDC_NO_DEPRECATE;ESL_EXPORTS"\r
MinimalRebuild="true"\r
BasicRuntimeChecks="3"\r
/>\r
<Tool\r
Name="VCCLCompilerTool"\r
- AdditionalIncludeDirectories="src/include"\r
+ AdditionalIncludeDirectories="include"\r
PreprocessorDefinitions="WIN32;NDEBUG;_LIB;_CRT_SECURE_NO_DEPRECATE;_CRT_NONSTDC_NO_DEPRECATE;ESL_EXPORTS"\r
RuntimeLibrary="2"\r
UsePrecompiledHeader="0"\r
UniqueIdentifier="{4FC737F1-C7A5-4376-A066-2A32D752A2FF}"\r
>\r
<File\r
- RelativePath=".\src\esl.c"\r
+ RelativePath=".\esl.c"\r
>\r
</File>\r
<File\r
- RelativePath=".\src\esl_config.c"\r
+ RelativePath=".\esl_config.c"\r
>\r
</File>\r
<File\r
- RelativePath=".\src\esl_event.c"\r
+ RelativePath=".\esl_event.c"\r
>\r
</File>\r
<File\r
- RelativePath=".\src\esl_threadmutex.c"\r
+ RelativePath=".\esl_threadmutex.c"\r
>\r
</File>\r
</Filter>\r
UniqueIdentifier="{93995380-89BD-4b04-88EB-625FBE52EBFB}"\r
>\r
<File\r
- RelativePath=".\src\include\esl.h"\r
+ RelativePath=".\include\esl.h"\r
>\r
</File>\r
<File\r
- RelativePath=".\src\include\esl_config.h"\r
+ RelativePath=".\include\esl_config.h"\r
>\r
</File>\r
<File\r
- RelativePath=".\src\include\esl_event.h"\r
+ RelativePath=".\include\esl_event.h"\r
>\r
</File>\r
<File\r
- RelativePath=".\src\include\esl_threadmutex.h"\r
+ RelativePath=".\include\esl_threadmutex.h"\r
>\r
</File>\r
</Filter>\r
return NULL;
}
-#ifdef WIN32\r
-#ifndef vsnprintf\r
-#define vsnprintf _vsnprintf\r
-#endif\r
-#endif\r
-\r
-ESL_DECLARE(int) esl_snprintf(char *buffer, size_t count, const char *fmt, ...)\r
-{\r
- va_list ap;\r
- int ret;\r
-\r
- va_start(ap, fmt);\r
- ret = vsnprintf(buffer, count-1, fmt, ap);\r
- if (ret < 0)\r
- buffer[count-1] = '\0';\r
- va_end(ap);\r
- return ret;\r
+#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, ...)
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;
}
}
-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;
static int esl_socket_reuseaddr(esl_socket_t socket)
{
#ifdef WIN32
- BOOL reuse_addr = TRUE;\r
+ BOOL reuse_addr = TRUE;
return setsockopt(socket, SOL_SOCKET, SO_REUSEADDR, (char *)&reuse_addr, sizeof(reuse_addr));
#else
int reuse_addr = 1;
FD_ZERO(&efds);
#ifdef WIN32
-#pragma warning( push )\r
+#pragma warning( push )
#pragma warning( disable : 4127 )
FD_SET(handle->sock, &rfds);
FD_SET(handle->sock, &efds);
-#pragma warning( pop ) \r
+#pragma warning( pop )
#else
FD_SET(handle->sock, &rfds);
FD_SET(handle->sock, &efds);
#include <strings.h>
#endif
#include <assert.h>
-\r
-#if (_MSC_VER >= 1400) // VC8+\r
-#define esl_assert(expr) assert(expr);__analysis_assume( expr )\r
-#endif\r
+
+#if (_MSC_VER >= 1400) // VC8+
+#define esl_assert(expr) assert(expr);__analysis_assume( expr )
+#endif
#ifndef esl_assert
#define esl_assert(_x) assert(_x)
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)\r
-#define ESL_DECLARE(type) type __stdcall\r
-#define ESL_DECLARE_NONSTD(type) type __cdecl\r
-#define ESL_DECLARE_DATA\r
-#elif defined(ESL_EXPORTS)\r
-#define ESL_DECLARE(type) __declspec(dllexport) type __stdcall\r
-#define ESL_DECLARE_NONSTD(type) __declspec(dllexport) type __cdecl\r
-#define ESL_DECLARE_DATA __declspec(dllexport)\r
-#else\r
-#define ESL_DECLARE(type) __declspec(dllimport) type __stdcall\r
-#define ESL_DECLARE_NONSTD(type) __declspec(dllimport) type __cdecl\r
-#define ESL_DECLARE_DATA __declspec(dllimport)\r
-#endif\r
+#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
#else
-#define ESL_DECLARE(type) type\r
-#define ESL_DECLARE_NONSTD(type) type\r
-#define ESL_DECLARE_DATA\r
+#define ESL_DECLARE(type) type
+#define ESL_DECLARE_NONSTD(type) type
+#define ESL_DECLARE_DATA
#include <stdint.h>
#include <sys/types.h>
#include <sys/ioctl.h>
#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"
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, ...);\r
+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);