]> git.ipfire.org Git - thirdparty/freeswitch.git/commitdiff
fs_cli now builds on windows, does not yet work
authorMichael Jerris <mike@jerris.com>
Mon, 22 Dec 2008 18:53:09 +0000 (18:53 +0000)
committerMichael Jerris <mike@jerris.com>
Mon, 22 Dec 2008 18:53:09 +0000 (18:53 +0000)
git-svn-id: http://svn.freeswitch.org/svn/freeswitch/trunk@10911 d0543943-73ff-0310-b7d9-9358b9ac24b2

Freeswitch.2008.sln
libs/esl/fs_cli.2008.vcproj [new file with mode: 0644]
libs/esl/fs_cli.c
libs/esl/src/esl.2008.vcproj [moved from libs/esl/esl.2008.vcproj with 86% similarity]
libs/esl/src/esl.c
libs/esl/src/include/esl.h

index 737ea6b808ea5a7371c1f8b03bad4d9ccab8dbcd..5acc6fffe01061f491f3cf678ddb42b5c9efa7b8 100644 (file)
@@ -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}\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
@@ -1762,6 +1767,10 @@ Global
                {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
diff --git a/libs/esl/fs_cli.2008.vcproj b/libs/esl/fs_cli.2008.vcproj
new file mode 100644 (file)
index 0000000..7909367
--- /dev/null
@@ -0,0 +1,258 @@
+<?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="&quot;$(InputDir)\src\include&quot;"\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="&quot;$(InputDir)\src\include&quot;"\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
index f49dd1227017407501b7198b96b6fed6891cd9cf..c430aaa90531c588123b0dfe7bf854c2f93bafe3 100644 (file)
@@ -2,13 +2,20 @@
 #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;
@@ -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);
        
similarity index 86%
rename from libs/esl/esl.2008.vcproj
rename to libs/esl/src/esl.2008.vcproj
index c4a78e459bc2c74a6e560978a27587139a88b138..d64593c7aad907f9492f5f26ec3a1bd14564e783 100644 (file)
@@ -41,7 +41,7 @@
                        <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
index 79fa4a7919a18eb2c76b65ceb9fc46d11f490806..c832d11e51f5d6aaa5da42653bb645fc3aac1861 100644 (file)
@@ -175,23 +175,23 @@ ESL_DECLARE(const char *)esl_stristr(const char *instr, const char *str)
        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, ...)
@@ -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;\r
+       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 )\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);
index dbdfb706768c3c7e6f73ff98041b864fc9ec2dd2..58a941dc49c888c0fc644a776b0b6d25851ce72e 100644 (file)
@@ -163,10 +163,10 @@ typedef struct esl_event esl_event_t;
 #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)
@@ -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)\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>
@@ -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, ...);\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);