diff --git a/.drone.yml b/.drone.yml index 947424b302b..07ccb34f27e 100644 --- a/.drone.yml +++ b/.drone.yml @@ -4,18 +4,24 @@ name: unit-tests steps: - name: bootstrap - image: signalwire/freeswitch-public-base + image: signalwire/freeswitch-public-base:bullseye pull: always commands: - cat /proc/sys/kernel/core_pattern - ./bootstrap.sh -j - name: configure - image: signalwire/freeswitch-public-base + image: signalwire/freeswitch-public-base:bullseye pull: always + environment: + REPOTOKEN: + from_secret: repotoken commands: + - echo "machine freeswitch.signalwire.com password $REPOTOKEN" > /etc/apt/auth.conf - apt-get update && DEBIAN_FRONTEND=noninteractive apt-get -yq remove libsofia-sip-ua0 libspandsp-dev - DEBIAN_FRONTEND=noninteractive apt-get -yq install libspandsp3-dev + - export REPOTOKEN='' + - rm -rf /etc/apt/auth.conf - git clone https://github.com/freeswitch/sofia-sip.git - cd sofia-sip && ./autogen.sh && ./configure.gnu && make -j`nproc` && make install && cd .. - echo 'codecs/mod_openh264' >> modules.conf @@ -23,29 +29,42 @@ steps: - sed -i '/event_handlers\\/mod_rayo/s/^#//g' modules.conf - sed -i '/formats\\/mod_opusfile/s/^#//g' modules.conf - sed -i '/languages\\/mod_lua/s/^#//g' modules.conf - - export ASAN_OPTIONS=log_path=stdout:disable_coredump=0:unmap_shadow_on_exit=1; - - ./configure --enable-address-sanitizer + - export ASAN_OPTIONS=log_path=stdout:disable_coredump=0:unmap_shadow_on_exit=1:fast_unwind_on_malloc=0 + - ./configure --enable-address-sanitizer --enable-fake-dlclose - name: build - image: signalwire/freeswitch-public-base + image: signalwire/freeswitch-public-base:bullseye pull: always + environment: + REPOTOKEN: + from_secret: repotoken commands: + - echo "machine freeswitch.signalwire.com password $REPOTOKEN" > /etc/apt/auth.conf - apt-get update && DEBIAN_FRONTEND=noninteractive apt-get -yq remove libsofia-sip-ua0 libspandsp-dev - DEBIAN_FRONTEND=noninteractive apt-get -yq install libspandsp3-dev + - export REPOTOKEN='' + - rm -rf /etc/apt/auth.conf - cd sofia-sip && make install && cd .. - echo '#!/bin/bash\nmake -j`nproc --all` |& tee ./unit-tests-build-result.txt\nexitstatus=$${PIPESTATUS[0]}\necho $$exitstatus > ./build-status.txt\n' > build.sh - chmod +x build.sh - ./build.sh - name: run-tests - image: signalwire/freeswitch-public-base + image: signalwire/freeswitch-public-base:bullseye pull: always + environment: + REPOTOKEN: + from_secret: repotoken commands: + - echo "machine freeswitch.signalwire.com password $REPOTOKEN" > /etc/apt/auth.conf - apt-get update && DEBIAN_FRONTEND=noninteractive apt-get -yq remove libsofia-sip-ua0 libspandsp-dev - DEBIAN_FRONTEND=noninteractive apt-get -yq install libspandsp3-dev + - export REPOTOKEN='' + - rm -rf /etc/apt/auth.conf - cd sofia-sip && make install && cd .. - make install || true - cd tests/unit + - export ASAN_OPTIONS=log_path=stdout:disable_coredump=0:unmap_shadow_on_exit=1:fast_unwind_on_malloc=0 - ./run-tests.sh - ls -la /cores - mkdir logs && (mv log_run-tests_*.html logs || true) && (mv backtrace_*.txt logs || true) @@ -78,17 +97,23 @@ name: scan-build steps: - name: bootstrap - image: signalwire/freeswitch-public-base + image: signalwire/freeswitch-public-base:bullseye pull: always commands: - ./bootstrap.sh -j - name: configure - image: signalwire/freeswitch-public-base + image: signalwire/freeswitch-public-base:bullseye pull: always + environment: + REPOTOKEN: + from_secret: repotoken commands: + - echo "machine freeswitch.signalwire.com password $REPOTOKEN" > /etc/apt/auth.conf - apt-get update && DEBIAN_FRONTEND=noninteractive apt-get -yq remove libspandsp-dev - DEBIAN_FRONTEND=noninteractive apt-get -yq install libsofia-sip-ua-dev libspandsp3-dev + - export REPOTOKEN='' + - rm -rf /etc/apt/auth.conf - cp build/modules.conf.most modules.conf #Enable/Uncomment mods - echo 'codecs/mod_openh264' >> modules.conf @@ -115,13 +140,19 @@ steps: - ./configure - name: scan-build - image: signalwire/freeswitch-public-base + image: signalwire/freeswitch-public-base:bullseye pull: always + environment: + REPOTOKEN: + from_secret: repotoken commands: + - echo "machine freeswitch.signalwire.com password $REPOTOKEN" > /etc/apt/auth.conf - apt-get update && DEBIAN_FRONTEND=noninteractive apt-get -yq remove libspandsp-dev - DEBIAN_FRONTEND=noninteractive apt-get -yq install libsofia-sip-ua-dev libspandsp3-dev + - export REPOTOKEN='' + - rm -rf /etc/apt/auth.conf - mkdir -p scan-build - - echo '#!/bin/bash\nscan-build-7 -o ./scan-build/ make -j`nproc --all` |& tee ./scan-build-result.txt\nexitstatus=$${PIPESTATUS[0]}\necho $$exitstatus > ./scan-build-status.txt\n' > scan.sh + - echo '#!/bin/bash\nscan-build-11 -o ./scan-build/ make -j`nproc --all` |& tee ./scan-build-result.txt\nexitstatus=$${PIPESTATUS[0]}\necho $$exitstatus > ./scan-build-status.txt\n' > scan.sh - chmod +x scan.sh - ./scan.sh - exitstatus=`cat ./scan-build-status.txt` @@ -147,6 +178,6 @@ trigger: --- kind: signature -hmac: a85b0db203d2c9a71c3e4a63a46b5513fbdb3b8f5135e21d0fe0992f33626824 +hmac: 780e4aaee61e3683ea4a8d6fe5131f7c9e62ebad727546013f18df0fca80d705 ... diff --git a/Freeswitch.2017.sln b/Freeswitch.2017.sln index b708f4e9ca5..6b6f24055e7 100644 --- a/Freeswitch.2017.sln +++ b/Freeswitch.2017.sln @@ -69,7 +69,6 @@ Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "autoload_configs", "autoloa conf\vanilla\autoload_configs\conference.conf.xml = conf\vanilla\autoload_configs\conference.conf.xml conf\vanilla\autoload_configs\console.conf.xml = conf\vanilla\autoload_configs\console.conf.xml conf\vanilla\autoload_configs\dialplan_directory.conf.xml = conf\vanilla\autoload_configs\dialplan_directory.conf.xml - conf\vanilla\autoload_configs\dingaling.conf.xml = conf\vanilla\autoload_configs\dingaling.conf.xml conf\vanilla\autoload_configs\enum.conf.xml = conf\vanilla\autoload_configs\enum.conf.xml conf\vanilla\autoload_configs\event_multicast.conf.xml = conf\vanilla\autoload_configs\event_multicast.conf.xml conf\vanilla\autoload_configs\event_socket.conf.xml = conf\vanilla\autoload_configs\event_socket.conf.xml @@ -166,8 +165,6 @@ Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "vm", "vm", "{3DAF028C-AB5B- EndProject Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "Sound Files", "Sound Files", "{4F227C26-768F-46A3-8684-1D08A46FB374}" EndProject -Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "unimrcp", "unimrcp", "{62F27B1A-C919-4A70-8478-51F178F3B18F}" -EndProject Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "FreeSwitchConsole", "w32\Console\FreeSwitchConsole.2017.vcxproj", "{1AF3A893-F7BE-43DD-B697-8AB2397C0D67}" EndProject Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "FreeSwitchCoreLib", "w32\Library\FreeSwitchCore.2017.vcxproj", "{202D7A4E-760D-4D0E-AFA1-D7459CED30FF}" @@ -198,8 +195,6 @@ Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "mod_cepstral", "src\mod\asr EndProject Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "mod_ilbc", "src\mod\codecs\mod_ilbc\mod_ilbc.2017.vcxproj", "{D3EC0AFF-76FC-4210-A825-9A17410660A3}" EndProject -Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "mod_dingaling", "src\mod\endpoints\mod_dingaling\mod_dingaling.2017.vcxproj", "{FFAA4C52-3A53-4F99-90C1-D59D1F0427F3}" -EndProject Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "mod_commands", "src\mod\applications\mod_commands\mod_commands.2017.vcxproj", "{30A5B29C-983E-4580-9FD0-D647CCDCC7EB}" EndProject Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "mod_console", "src\mod\loggers\mod_console\mod_console.2017.vcxproj", "{1C453396-D912-4213-89FD-9B489162B7B5}" @@ -217,20 +212,14 @@ Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "mod_dptools", "src\mod\appl EndProject Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "mod_event_socket", "src\mod\event_handlers\mod_event_socket\mod_event_socket.2017.vcxproj", "{05515420-16DE-4E63-BE73-85BE85BA5142}" EndProject -Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "libdingaling", "libs\libdingaling\libdingaling.2017.vcxproj", "{1906D736-08BD-4EE1-924F-B536249B9A54}" -EndProject Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "libsrtp", "libs\srtp\libsrtp.2017.vcxproj", "{EEF031CB-FED8-451E-A471-91EC8D4F6750}" EndProject Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "libsqlite", "libs\win32\sqlite\sqlite.2017.vcxproj", "{6EDFEFD5-3596-4FA9-8EBA-B331547B35A3}" EndProject Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "libapr", "libs\win32\apr\libapr.2017.vcxproj", "{F6C55D93-B927-4483-BB69-15AEF3DD2DFF}" EndProject -Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "libaprutil", "libs\win32\apr-util\libaprutil.2017.vcxproj", "{F057DA7F-79E5-4B00-845C-EF446EF055E3}" -EndProject Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "iksemel", "libs\win32\iksemel\iksemel.2017.vcxproj", "{E727E8F6-935D-46FE-8B0E-37834748A0E3}" EndProject -Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "xml", "libs\win32\apr-util\xml.2017.vcxproj", "{155844C3-EC5F-407F-97A4-A2DDADED9B2F}" -EndProject Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "mod_sofia", "src\mod\endpoints\mod_sofia\mod_sofia.2017.vcxproj", "{0DF3ABD0-DDC0-4265-B778-07C66780979B}" EndProject Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "pthread", "libs\win32\pthread\pthread.2017.vcxproj", "{DF018947-0FFF-4EB3-BDEE-441DC81DA7A4}" @@ -380,29 +369,6 @@ Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "libbroadvoice", "libs\win32 EndProject Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "mod_bv", "src\mod\codecs\mod_bv\mod_bv.2017.vcxproj", "{D5C87B19-150D-4EF3-A671-96589BD2D14A}" EndProject -Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "aprtoolkit", "libs\unimrcp\libs\apr-toolkit\aprtoolkit.2017.vcxproj", "{13DEECA0-BDD4-4744-A1A2-8EB0A44DF3D2}" - ProjectSection(ProjectDependencies) = postProject - {155844C3-EC5F-407F-97A4-A2DDADED9B2F} = {155844C3-EC5F-407F-97A4-A2DDADED9B2F} - EndProjectSection -EndProject -Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "mpf", "libs\unimrcp\libs\mpf\mpf.2017.vcxproj", "{B5A00BFA-6083-4FAE-A097-71642D6473B5}" -EndProject -Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "mrcp", "libs\unimrcp\libs\mrcp\mrcp.2017.vcxproj", "{1C320193-46A6-4B34-9C56-8AB584FC1B56}" -EndProject -Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "mrcpclient", "libs\unimrcp\libs\mrcp-client\mrcpclient.2017.vcxproj", "{72782932-37CC-46AE-8C7F-9A7B1A6EE108}" -EndProject -Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "mrcpsignaling", "libs\unimrcp\libs\mrcp-signaling\mrcpsignaling.2017.vcxproj", "{12A49562-BAB9-43A3-A21D-15B60BBB4C31}" -EndProject -Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "mrcpv2transport", "libs\unimrcp\libs\mrcpv2-transport\mrcpv2transport.2017.vcxproj", "{A9EDAC04-6A5F-4BA7-BC0D-CCE7B255B6EA}" -EndProject -Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "unirtsp", "libs\unimrcp\libs\uni-rtsp\unirtsp.2017.vcxproj", "{504B3154-7A4F-459D-9877-B951021C3F1F}" -EndProject -Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "mrcpsofiasip", "libs\unimrcp\modules\mrcp-sofiasip\mrcpsofiasip.2017.vcxproj", "{746F3632-5BB2-4570-9453-31D6D58A7D8E}" -EndProject -Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "mrcpunirtsp", "libs\unimrcp\modules\mrcp-unirtsp\mrcpunirtsp.2017.vcxproj", "{DEB01ACB-D65F-4A62-AED9-58C1054499E9}" -EndProject -Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "mod_unimrcp", "src\mod\asr_tts\mod_unimrcp\mod_unimrcp.2017.vcxproj", "{D07C378A-F5F7-438F-ADF3-4AC4FB1883CD}" -EndProject Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "libcelt", "libs\win32\celt\libcelt.2017.vcxproj", "{ABB71A76-42B0-47A4-973A-42E3D920C6FD}" EndProject Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "FSComm", "fscomm\FSComm.2017.vcxproj", "{7D3122C7-C9D0-3748-81F8-F0DDCB40BF5E}" @@ -752,17 +718,6 @@ Global {D3EC0AFF-76FC-4210-A825-9A17410660A3}.Release|Win32.Build.0 = Release|Win32 {D3EC0AFF-76FC-4210-A825-9A17410660A3}.Release|x64.ActiveCfg = Release|x64 {D3EC0AFF-76FC-4210-A825-9A17410660A3}.Release|x64.Build.0 = Release|x64 - {FFAA4C52-3A53-4F99-90C1-D59D1F0427F3}.All|Win32.ActiveCfg = Release|x64 - {FFAA4C52-3A53-4F99-90C1-D59D1F0427F3}.All|x64.ActiveCfg = Release|x64 - {FFAA4C52-3A53-4F99-90C1-D59D1F0427F3}.All|x64.Build.0 = Release|x64 - {FFAA4C52-3A53-4F99-90C1-D59D1F0427F3}.Debug|Win32.ActiveCfg = Debug|Win32 - {FFAA4C52-3A53-4F99-90C1-D59D1F0427F3}.Debug|Win32.Build.0 = Debug|Win32 - {FFAA4C52-3A53-4F99-90C1-D59D1F0427F3}.Debug|x64.ActiveCfg = Debug|x64 - {FFAA4C52-3A53-4F99-90C1-D59D1F0427F3}.Debug|x64.Build.0 = Debug|x64 - {FFAA4C52-3A53-4F99-90C1-D59D1F0427F3}.Release|Win32.ActiveCfg = Release|Win32 - {FFAA4C52-3A53-4F99-90C1-D59D1F0427F3}.Release|Win32.Build.0 = Release|Win32 - {FFAA4C52-3A53-4F99-90C1-D59D1F0427F3}.Release|x64.ActiveCfg = Release|x64 - {FFAA4C52-3A53-4F99-90C1-D59D1F0427F3}.Release|x64.Build.0 = Release|x64 {30A5B29C-983E-4580-9FD0-D647CCDCC7EB}.All|Win32.ActiveCfg = Release|x64 {30A5B29C-983E-4580-9FD0-D647CCDCC7EB}.All|x64.ActiveCfg = Release|x64 {30A5B29C-983E-4580-9FD0-D647CCDCC7EB}.All|x64.Build.0 = Release|x64 @@ -840,17 +795,6 @@ Global {05515420-16DE-4E63-BE73-85BE85BA5142}.Release|Win32.Build.0 = Release|Win32 {05515420-16DE-4E63-BE73-85BE85BA5142}.Release|x64.ActiveCfg = Release|x64 {05515420-16DE-4E63-BE73-85BE85BA5142}.Release|x64.Build.0 = Release|x64 - {1906D736-08BD-4EE1-924F-B536249B9A54}.All|Win32.ActiveCfg = Release DLL|x64 - {1906D736-08BD-4EE1-924F-B536249B9A54}.All|x64.ActiveCfg = Release DLL|x64 - {1906D736-08BD-4EE1-924F-B536249B9A54}.All|x64.Build.0 = Release DLL|x64 - {1906D736-08BD-4EE1-924F-B536249B9A54}.Debug|Win32.ActiveCfg = Debug|Win32 - {1906D736-08BD-4EE1-924F-B536249B9A54}.Debug|Win32.Build.0 = Debug|Win32 - {1906D736-08BD-4EE1-924F-B536249B9A54}.Debug|x64.ActiveCfg = Debug|x64 - {1906D736-08BD-4EE1-924F-B536249B9A54}.Debug|x64.Build.0 = Debug|x64 - {1906D736-08BD-4EE1-924F-B536249B9A54}.Release|Win32.ActiveCfg = Release|Win32 - {1906D736-08BD-4EE1-924F-B536249B9A54}.Release|Win32.Build.0 = Release|Win32 - {1906D736-08BD-4EE1-924F-B536249B9A54}.Release|x64.ActiveCfg = Release|x64 - {1906D736-08BD-4EE1-924F-B536249B9A54}.Release|x64.Build.0 = Release|x64 {EEF031CB-FED8-451E-A471-91EC8D4F6750}.All|Win32.ActiveCfg = Release Dll|x64 {EEF031CB-FED8-451E-A471-91EC8D4F6750}.All|x64.ActiveCfg = Release Dll|x64 {EEF031CB-FED8-451E-A471-91EC8D4F6750}.All|x64.Build.0 = Release Dll|x64 @@ -884,17 +828,6 @@ Global {F6C55D93-B927-4483-BB69-15AEF3DD2DFF}.Release|Win32.Build.0 = Release|Win32 {F6C55D93-B927-4483-BB69-15AEF3DD2DFF}.Release|x64.ActiveCfg = Release|x64 {F6C55D93-B927-4483-BB69-15AEF3DD2DFF}.Release|x64.Build.0 = Release|x64 - {F057DA7F-79E5-4B00-845C-EF446EF055E3}.All|Win32.ActiveCfg = Release|x64 - {F057DA7F-79E5-4B00-845C-EF446EF055E3}.All|x64.ActiveCfg = Release|x64 - {F057DA7F-79E5-4B00-845C-EF446EF055E3}.All|x64.Build.0 = Release|x64 - {F057DA7F-79E5-4B00-845C-EF446EF055E3}.Debug|Win32.ActiveCfg = Debug|Win32 - {F057DA7F-79E5-4B00-845C-EF446EF055E3}.Debug|Win32.Build.0 = Debug|Win32 - {F057DA7F-79E5-4B00-845C-EF446EF055E3}.Debug|x64.ActiveCfg = Debug|x64 - {F057DA7F-79E5-4B00-845C-EF446EF055E3}.Debug|x64.Build.0 = Debug|x64 - {F057DA7F-79E5-4B00-845C-EF446EF055E3}.Release|Win32.ActiveCfg = Release|Win32 - {F057DA7F-79E5-4B00-845C-EF446EF055E3}.Release|Win32.Build.0 = Release|Win32 - {F057DA7F-79E5-4B00-845C-EF446EF055E3}.Release|x64.ActiveCfg = Release|x64 - {F057DA7F-79E5-4B00-845C-EF446EF055E3}.Release|x64.Build.0 = Release|x64 {E727E8F6-935D-46FE-8B0E-37834748A0E3}.All|Win32.ActiveCfg = Release|x64 {E727E8F6-935D-46FE-8B0E-37834748A0E3}.All|x64.ActiveCfg = Release|x64 {E727E8F6-935D-46FE-8B0E-37834748A0E3}.All|x64.Build.0 = Release|x64 @@ -906,17 +839,6 @@ Global {E727E8F6-935D-46FE-8B0E-37834748A0E3}.Release|Win32.Build.0 = Release|Win32 {E727E8F6-935D-46FE-8B0E-37834748A0E3}.Release|x64.ActiveCfg = Release|x64 {E727E8F6-935D-46FE-8B0E-37834748A0E3}.Release|x64.Build.0 = Release|x64 - {155844C3-EC5F-407F-97A4-A2DDADED9B2F}.All|Win32.ActiveCfg = Debug|x64 - {155844C3-EC5F-407F-97A4-A2DDADED9B2F}.All|x64.ActiveCfg = Debug|x64 - {155844C3-EC5F-407F-97A4-A2DDADED9B2F}.All|x64.Build.0 = Debug|x64 - {155844C3-EC5F-407F-97A4-A2DDADED9B2F}.Debug|Win32.ActiveCfg = Debug|Win32 - {155844C3-EC5F-407F-97A4-A2DDADED9B2F}.Debug|Win32.Build.0 = Debug|Win32 - {155844C3-EC5F-407F-97A4-A2DDADED9B2F}.Debug|x64.ActiveCfg = Debug|x64 - {155844C3-EC5F-407F-97A4-A2DDADED9B2F}.Debug|x64.Build.0 = Debug|x64 - {155844C3-EC5F-407F-97A4-A2DDADED9B2F}.Release|Win32.ActiveCfg = Release|Win32 - {155844C3-EC5F-407F-97A4-A2DDADED9B2F}.Release|Win32.Build.0 = Release|Win32 - {155844C3-EC5F-407F-97A4-A2DDADED9B2F}.Release|x64.ActiveCfg = Release|x64 - {155844C3-EC5F-407F-97A4-A2DDADED9B2F}.Release|x64.Build.0 = Release|x64 {0DF3ABD0-DDC0-4265-B778-07C66780979B}.All|Win32.ActiveCfg = Release|x64 {0DF3ABD0-DDC0-4265-B778-07C66780979B}.All|x64.ActiveCfg = Release|x64 {0DF3ABD0-DDC0-4265-B778-07C66780979B}.All|x64.Build.0 = Release|x64 @@ -1697,116 +1619,6 @@ Global {D5C87B19-150D-4EF3-A671-96589BD2D14A}.Release|Win32.Build.0 = Release|Win32 {D5C87B19-150D-4EF3-A671-96589BD2D14A}.Release|x64.ActiveCfg = Release|x64 {D5C87B19-150D-4EF3-A671-96589BD2D14A}.Release|x64.Build.0 = Release|x64 - {13DEECA0-BDD4-4744-A1A2-8EB0A44DF3D2}.All|Win32.ActiveCfg = Release|Win32 - {13DEECA0-BDD4-4744-A1A2-8EB0A44DF3D2}.All|Win32.Build.0 = Release|Win32 - {13DEECA0-BDD4-4744-A1A2-8EB0A44DF3D2}.All|x64.ActiveCfg = Release|Win32 - {13DEECA0-BDD4-4744-A1A2-8EB0A44DF3D2}.Debug|Win32.ActiveCfg = Debug|Win32 - {13DEECA0-BDD4-4744-A1A2-8EB0A44DF3D2}.Debug|Win32.Build.0 = Debug|Win32 - {13DEECA0-BDD4-4744-A1A2-8EB0A44DF3D2}.Debug|x64.ActiveCfg = Debug|x64 - {13DEECA0-BDD4-4744-A1A2-8EB0A44DF3D2}.Debug|x64.Build.0 = Debug|x64 - {13DEECA0-BDD4-4744-A1A2-8EB0A44DF3D2}.Release|Win32.ActiveCfg = Release|Win32 - {13DEECA0-BDD4-4744-A1A2-8EB0A44DF3D2}.Release|Win32.Build.0 = Release|Win32 - {13DEECA0-BDD4-4744-A1A2-8EB0A44DF3D2}.Release|x64.ActiveCfg = Release|x64 - {13DEECA0-BDD4-4744-A1A2-8EB0A44DF3D2}.Release|x64.Build.0 = Release|x64 - {B5A00BFA-6083-4FAE-A097-71642D6473B5}.All|Win32.ActiveCfg = Release|Win32 - {B5A00BFA-6083-4FAE-A097-71642D6473B5}.All|Win32.Build.0 = Release|Win32 - {B5A00BFA-6083-4FAE-A097-71642D6473B5}.All|x64.ActiveCfg = Release|Win32 - {B5A00BFA-6083-4FAE-A097-71642D6473B5}.Debug|Win32.ActiveCfg = Debug|Win32 - {B5A00BFA-6083-4FAE-A097-71642D6473B5}.Debug|Win32.Build.0 = Debug|Win32 - {B5A00BFA-6083-4FAE-A097-71642D6473B5}.Debug|x64.ActiveCfg = Debug|x64 - {B5A00BFA-6083-4FAE-A097-71642D6473B5}.Debug|x64.Build.0 = Debug|x64 - {B5A00BFA-6083-4FAE-A097-71642D6473B5}.Release|Win32.ActiveCfg = Release|Win32 - {B5A00BFA-6083-4FAE-A097-71642D6473B5}.Release|Win32.Build.0 = Release|Win32 - {B5A00BFA-6083-4FAE-A097-71642D6473B5}.Release|x64.ActiveCfg = Release|x64 - {B5A00BFA-6083-4FAE-A097-71642D6473B5}.Release|x64.Build.0 = Release|x64 - {1C320193-46A6-4B34-9C56-8AB584FC1B56}.All|Win32.ActiveCfg = Release|Win32 - {1C320193-46A6-4B34-9C56-8AB584FC1B56}.All|Win32.Build.0 = Release|Win32 - {1C320193-46A6-4B34-9C56-8AB584FC1B56}.All|x64.ActiveCfg = Release|Win32 - {1C320193-46A6-4B34-9C56-8AB584FC1B56}.Debug|Win32.ActiveCfg = Debug|Win32 - {1C320193-46A6-4B34-9C56-8AB584FC1B56}.Debug|Win32.Build.0 = Debug|Win32 - {1C320193-46A6-4B34-9C56-8AB584FC1B56}.Debug|x64.ActiveCfg = Debug|x64 - {1C320193-46A6-4B34-9C56-8AB584FC1B56}.Debug|x64.Build.0 = Debug|x64 - {1C320193-46A6-4B34-9C56-8AB584FC1B56}.Release|Win32.ActiveCfg = Release|Win32 - {1C320193-46A6-4B34-9C56-8AB584FC1B56}.Release|Win32.Build.0 = Release|Win32 - {1C320193-46A6-4B34-9C56-8AB584FC1B56}.Release|x64.ActiveCfg = Release|x64 - {1C320193-46A6-4B34-9C56-8AB584FC1B56}.Release|x64.Build.0 = Release|x64 - {72782932-37CC-46AE-8C7F-9A7B1A6EE108}.All|Win32.ActiveCfg = Release|Win32 - {72782932-37CC-46AE-8C7F-9A7B1A6EE108}.All|Win32.Build.0 = Release|Win32 - {72782932-37CC-46AE-8C7F-9A7B1A6EE108}.All|x64.ActiveCfg = Release|Win32 - {72782932-37CC-46AE-8C7F-9A7B1A6EE108}.Debug|Win32.ActiveCfg = Debug|Win32 - {72782932-37CC-46AE-8C7F-9A7B1A6EE108}.Debug|Win32.Build.0 = Debug|Win32 - {72782932-37CC-46AE-8C7F-9A7B1A6EE108}.Debug|x64.ActiveCfg = Debug|x64 - {72782932-37CC-46AE-8C7F-9A7B1A6EE108}.Debug|x64.Build.0 = Debug|x64 - {72782932-37CC-46AE-8C7F-9A7B1A6EE108}.Release|Win32.ActiveCfg = Release|Win32 - {72782932-37CC-46AE-8C7F-9A7B1A6EE108}.Release|Win32.Build.0 = Release|Win32 - {72782932-37CC-46AE-8C7F-9A7B1A6EE108}.Release|x64.ActiveCfg = Release|x64 - {72782932-37CC-46AE-8C7F-9A7B1A6EE108}.Release|x64.Build.0 = Release|x64 - {12A49562-BAB9-43A3-A21D-15B60BBB4C31}.All|Win32.ActiveCfg = Release|Win32 - {12A49562-BAB9-43A3-A21D-15B60BBB4C31}.All|Win32.Build.0 = Release|Win32 - {12A49562-BAB9-43A3-A21D-15B60BBB4C31}.All|x64.ActiveCfg = Release|Win32 - {12A49562-BAB9-43A3-A21D-15B60BBB4C31}.Debug|Win32.ActiveCfg = Debug|Win32 - {12A49562-BAB9-43A3-A21D-15B60BBB4C31}.Debug|Win32.Build.0 = Debug|Win32 - {12A49562-BAB9-43A3-A21D-15B60BBB4C31}.Debug|x64.ActiveCfg = Debug|x64 - {12A49562-BAB9-43A3-A21D-15B60BBB4C31}.Debug|x64.Build.0 = Debug|x64 - {12A49562-BAB9-43A3-A21D-15B60BBB4C31}.Release|Win32.ActiveCfg = Release|Win32 - {12A49562-BAB9-43A3-A21D-15B60BBB4C31}.Release|Win32.Build.0 = Release|Win32 - {12A49562-BAB9-43A3-A21D-15B60BBB4C31}.Release|x64.ActiveCfg = Release|x64 - {12A49562-BAB9-43A3-A21D-15B60BBB4C31}.Release|x64.Build.0 = Release|x64 - {A9EDAC04-6A5F-4BA7-BC0D-CCE7B255B6EA}.All|Win32.ActiveCfg = Release|Win32 - {A9EDAC04-6A5F-4BA7-BC0D-CCE7B255B6EA}.All|Win32.Build.0 = Release|Win32 - {A9EDAC04-6A5F-4BA7-BC0D-CCE7B255B6EA}.All|x64.ActiveCfg = Release|Win32 - {A9EDAC04-6A5F-4BA7-BC0D-CCE7B255B6EA}.Debug|Win32.ActiveCfg = Debug|Win32 - {A9EDAC04-6A5F-4BA7-BC0D-CCE7B255B6EA}.Debug|Win32.Build.0 = Debug|Win32 - {A9EDAC04-6A5F-4BA7-BC0D-CCE7B255B6EA}.Debug|x64.ActiveCfg = Debug|x64 - {A9EDAC04-6A5F-4BA7-BC0D-CCE7B255B6EA}.Debug|x64.Build.0 = Debug|x64 - {A9EDAC04-6A5F-4BA7-BC0D-CCE7B255B6EA}.Release|Win32.ActiveCfg = Release|Win32 - {A9EDAC04-6A5F-4BA7-BC0D-CCE7B255B6EA}.Release|Win32.Build.0 = Release|Win32 - {A9EDAC04-6A5F-4BA7-BC0D-CCE7B255B6EA}.Release|x64.ActiveCfg = Release|x64 - {A9EDAC04-6A5F-4BA7-BC0D-CCE7B255B6EA}.Release|x64.Build.0 = Release|x64 - {504B3154-7A4F-459D-9877-B951021C3F1F}.All|Win32.ActiveCfg = Release|Win32 - {504B3154-7A4F-459D-9877-B951021C3F1F}.All|Win32.Build.0 = Release|Win32 - {504B3154-7A4F-459D-9877-B951021C3F1F}.All|x64.ActiveCfg = Release|Win32 - {504B3154-7A4F-459D-9877-B951021C3F1F}.Debug|Win32.ActiveCfg = Debug|Win32 - {504B3154-7A4F-459D-9877-B951021C3F1F}.Debug|Win32.Build.0 = Debug|Win32 - {504B3154-7A4F-459D-9877-B951021C3F1F}.Debug|x64.ActiveCfg = Debug|x64 - {504B3154-7A4F-459D-9877-B951021C3F1F}.Debug|x64.Build.0 = Debug|x64 - {504B3154-7A4F-459D-9877-B951021C3F1F}.Release|Win32.ActiveCfg = Release|Win32 - {504B3154-7A4F-459D-9877-B951021C3F1F}.Release|Win32.Build.0 = Release|Win32 - {504B3154-7A4F-459D-9877-B951021C3F1F}.Release|x64.ActiveCfg = Release|x64 - {504B3154-7A4F-459D-9877-B951021C3F1F}.Release|x64.Build.0 = Release|x64 - {746F3632-5BB2-4570-9453-31D6D58A7D8E}.All|Win32.ActiveCfg = Release|Win32 - {746F3632-5BB2-4570-9453-31D6D58A7D8E}.All|Win32.Build.0 = Release|Win32 - {746F3632-5BB2-4570-9453-31D6D58A7D8E}.All|x64.ActiveCfg = Release|Win32 - {746F3632-5BB2-4570-9453-31D6D58A7D8E}.Debug|Win32.ActiveCfg = Debug|Win32 - {746F3632-5BB2-4570-9453-31D6D58A7D8E}.Debug|Win32.Build.0 = Debug|Win32 - {746F3632-5BB2-4570-9453-31D6D58A7D8E}.Debug|x64.ActiveCfg = Debug|x64 - {746F3632-5BB2-4570-9453-31D6D58A7D8E}.Debug|x64.Build.0 = Debug|x64 - {746F3632-5BB2-4570-9453-31D6D58A7D8E}.Release|Win32.ActiveCfg = Release|Win32 - {746F3632-5BB2-4570-9453-31D6D58A7D8E}.Release|Win32.Build.0 = Release|Win32 - {746F3632-5BB2-4570-9453-31D6D58A7D8E}.Release|x64.ActiveCfg = Release|x64 - {746F3632-5BB2-4570-9453-31D6D58A7D8E}.Release|x64.Build.0 = Release|x64 - {DEB01ACB-D65F-4A62-AED9-58C1054499E9}.All|Win32.ActiveCfg = Release|Win32 - {DEB01ACB-D65F-4A62-AED9-58C1054499E9}.All|Win32.Build.0 = Release|Win32 - {DEB01ACB-D65F-4A62-AED9-58C1054499E9}.All|x64.ActiveCfg = Release|Win32 - {DEB01ACB-D65F-4A62-AED9-58C1054499E9}.Debug|Win32.ActiveCfg = Debug|Win32 - {DEB01ACB-D65F-4A62-AED9-58C1054499E9}.Debug|Win32.Build.0 = Debug|Win32 - {DEB01ACB-D65F-4A62-AED9-58C1054499E9}.Debug|x64.ActiveCfg = Debug|x64 - {DEB01ACB-D65F-4A62-AED9-58C1054499E9}.Debug|x64.Build.0 = Debug|x64 - {DEB01ACB-D65F-4A62-AED9-58C1054499E9}.Release|Win32.ActiveCfg = Release|Win32 - {DEB01ACB-D65F-4A62-AED9-58C1054499E9}.Release|Win32.Build.0 = Release|Win32 - {DEB01ACB-D65F-4A62-AED9-58C1054499E9}.Release|x64.ActiveCfg = Release|x64 - {DEB01ACB-D65F-4A62-AED9-58C1054499E9}.Release|x64.Build.0 = Release|x64 - {D07C378A-F5F7-438F-ADF3-4AC4FB1883CD}.All|Win32.ActiveCfg = Release|x64 - {D07C378A-F5F7-438F-ADF3-4AC4FB1883CD}.All|x64.ActiveCfg = Release|x64 - {D07C378A-F5F7-438F-ADF3-4AC4FB1883CD}.All|x64.Build.0 = Release|x64 - {D07C378A-F5F7-438F-ADF3-4AC4FB1883CD}.Debug|Win32.ActiveCfg = Debug|Win32 - {D07C378A-F5F7-438F-ADF3-4AC4FB1883CD}.Debug|Win32.Build.0 = Debug|Win32 - {D07C378A-F5F7-438F-ADF3-4AC4FB1883CD}.Debug|x64.ActiveCfg = Debug|x64 - {D07C378A-F5F7-438F-ADF3-4AC4FB1883CD}.Debug|x64.Build.0 = Debug|x64 - {D07C378A-F5F7-438F-ADF3-4AC4FB1883CD}.Release|Win32.ActiveCfg = Release|Win32 - {D07C378A-F5F7-438F-ADF3-4AC4FB1883CD}.Release|Win32.Build.0 = Release|Win32 - {D07C378A-F5F7-438F-ADF3-4AC4FB1883CD}.Release|x64.ActiveCfg = Release|x64 - {D07C378A-F5F7-438F-ADF3-4AC4FB1883CD}.Release|x64.Build.0 = Release|x64 {ABB71A76-42B0-47A4-973A-42E3D920C6FD}.All|Win32.ActiveCfg = Release|x64 {ABB71A76-42B0-47A4-973A-42E3D920C6FD}.All|x64.ActiveCfg = Release|x64 {ABB71A76-42B0-47A4-973A-42E3D920C6FD}.All|x64.Build.0 = Release|x64 @@ -2739,7 +2551,6 @@ Global {713E4747-1126-40B1-BD84-58F9A7745423} = {57199684-EC63-4A60-9DC6-11815AF6B413} {F1B71990-EB04-4EB5-B28A-BC3EB6F7E843} = {D4A12E4C-DBDA-4614-BA26-3425AE9F60F5} {3DAF028C-AB5B-4183-A01B-DCC43F5A87F0} = {D4A12E4C-DBDA-4614-BA26-3425AE9F60F5} - {62F27B1A-C919-4A70-8478-51F178F3B18F} = {EB910B0D-F27D-4B62-B67B-DE834C99AC5B} {1D95CD95-0DE2-48C3-AC23-D5C7D1C9C0F0} = {F881ADA2-2F1A-4046-9FEB-191D9422D781} {AFAC0568-7548-42D5-9F6A-8D3400A1E4F6} = {A5A27244-AD24-46E5-B01B-840CD296C91D} {5FD31A25-5D83-4794-8BEE-904DAD84CE71} = {9460B5F1-0A95-41C4-BEB7-9C2C96459A7C} @@ -2753,7 +2564,6 @@ Global {8B754330-A434-4791-97E5-1EE67060BAC0} = {0C808854-54D1-4230-BFF5-77B5FD905000} {692F6330-4D87-4C82-81DF-40DB5892636E} = {4CF6A6AC-07DE-4B9E-ABE1-7F98B64E0BB0} {D3EC0AFF-76FC-4210-A825-9A17410660A3} = {F881ADA2-2F1A-4046-9FEB-191D9422D781} - {FFAA4C52-3A53-4F99-90C1-D59D1F0427F3} = {9460B5F1-0A95-41C4-BEB7-9C2C96459A7C} {30A5B29C-983E-4580-9FD0-D647CCDCC7EB} = {E72B5BCB-6462-4D23-B419-3AF1A4AC3D78} {1C453396-D912-4213-89FD-9B489162B7B5} = {A7AB4405-FDB7-4853-9FBB-1516B1C3D80A} {CBEC7225-0C21-4DA8-978E-1F158F8AD950} = {F69A4A6B-9360-4EBB-A280-22AA3C455AC5} @@ -2761,13 +2571,10 @@ Global {C24FB505-05D7-4319-8485-7540B44C8603} = {E72B5BCB-6462-4D23-B419-3AF1A4AC3D78} {B5881A85-FE70-4F64-8607-2CAAE52669C6} = {E72B5BCB-6462-4D23-B419-3AF1A4AC3D78} {05515420-16DE-4E63-BE73-85BE85BA5142} = {9ADF1E48-2F5C-4ED7-A893-596259FABFE0} - {1906D736-08BD-4EE1-924F-B536249B9A54} = {EB910B0D-F27D-4B62-B67B-DE834C99AC5B} {EEF031CB-FED8-451E-A471-91EC8D4F6750} = {EB910B0D-F27D-4B62-B67B-DE834C99AC5B} {6EDFEFD5-3596-4FA9-8EBA-B331547B35A3} = {EB910B0D-F27D-4B62-B67B-DE834C99AC5B} {F6C55D93-B927-4483-BB69-15AEF3DD2DFF} = {EB910B0D-F27D-4B62-B67B-DE834C99AC5B} - {F057DA7F-79E5-4B00-845C-EF446EF055E3} = {EB910B0D-F27D-4B62-B67B-DE834C99AC5B} {E727E8F6-935D-46FE-8B0E-37834748A0E3} = {EB910B0D-F27D-4B62-B67B-DE834C99AC5B} - {155844C3-EC5F-407F-97A4-A2DDADED9B2F} = {EB910B0D-F27D-4B62-B67B-DE834C99AC5B} {0DF3ABD0-DDC0-4265-B778-07C66780979B} = {9460B5F1-0A95-41C4-BEB7-9C2C96459A7C} {DF018947-0FFF-4EB3-BDEE-441DC81DA7A4} = {EB910B0D-F27D-4B62-B67B-DE834C99AC5B} {FEA1EEF7-876F-48DE-88BF-C0E3E606D758} = {F881ADA2-2F1A-4046-9FEB-191D9422D781} @@ -2840,16 +2647,6 @@ Global {432DB165-1EB2-4781-A9C0-71E62610B20A} = {E72B5BCB-6462-4D23-B419-3AF1A4AC3D78} {CF70F278-3364-4395-A2E1-23501C9B8AD2} = {EB910B0D-F27D-4B62-B67B-DE834C99AC5B} {D5C87B19-150D-4EF3-A671-96589BD2D14A} = {F881ADA2-2F1A-4046-9FEB-191D9422D781} - {13DEECA0-BDD4-4744-A1A2-8EB0A44DF3D2} = {62F27B1A-C919-4A70-8478-51F178F3B18F} - {B5A00BFA-6083-4FAE-A097-71642D6473B5} = {62F27B1A-C919-4A70-8478-51F178F3B18F} - {1C320193-46A6-4B34-9C56-8AB584FC1B56} = {62F27B1A-C919-4A70-8478-51F178F3B18F} - {72782932-37CC-46AE-8C7F-9A7B1A6EE108} = {62F27B1A-C919-4A70-8478-51F178F3B18F} - {12A49562-BAB9-43A3-A21D-15B60BBB4C31} = {62F27B1A-C919-4A70-8478-51F178F3B18F} - {A9EDAC04-6A5F-4BA7-BC0D-CCE7B255B6EA} = {62F27B1A-C919-4A70-8478-51F178F3B18F} - {504B3154-7A4F-459D-9877-B951021C3F1F} = {62F27B1A-C919-4A70-8478-51F178F3B18F} - {746F3632-5BB2-4570-9453-31D6D58A7D8E} = {62F27B1A-C919-4A70-8478-51F178F3B18F} - {DEB01ACB-D65F-4A62-AED9-58C1054499E9} = {62F27B1A-C919-4A70-8478-51F178F3B18F} - {D07C378A-F5F7-438F-ADF3-4AC4FB1883CD} = {4CF6A6AC-07DE-4B9E-ABE1-7F98B64E0BB0} {ABB71A76-42B0-47A4-973A-42E3D920C6FD} = {EB910B0D-F27D-4B62-B67B-DE834C99AC5B} {EF300386-A8DF-4372-B6D8-FB9BFFCA9AED} = {E72B5BCB-6462-4D23-B419-3AF1A4AC3D78} {AFA983D6-4569-4F88-BA94-555ED00FD9A8} = {F881ADA2-2F1A-4046-9FEB-191D9422D781} diff --git a/LICENSE b/LICENSE index 6745df1f351..2002b832198 100644 --- a/LICENSE +++ b/LICENSE @@ -3,8 +3,8 @@ Upstream-Name: freeswitch Source: https://freeswitch.org/ Files: * -Copyright: 2005-2014 Anthony Minessale II - 2005-2014 Anthony Minessale II +Copyright: 2005-2022 Anthony Minessale II + 2005-2022 Anthony Minessale II License: MPL-1.1 MOZILLA PUBLIC LICENSE Version 1.1 @@ -1011,12 +1011,6 @@ License: MPL-1.1 or GPL-2+ use the text of this Exhibit A rather than the text found in the Original Code Source Code for Your Modifications.] -Files: libs/unimrcp/* -Copyright: 2008-2010 Arsen Chaloyan - 2009-2010 Tomas Valenta, Arsen Chaloyan - 2001-2006 Steve Underwood -License: Apache-2.0 - Files: */inet_pton.c libs/curl/lib/inet_ntop.c libs/curl/lib/mprintf.c @@ -1595,15 +1589,6 @@ Files: libs/silk/* Copyright: 2006-2011, Skype Limited. License: BSD-2-clause -Files: libs/libdingaling/* -Copyright: 2005-2014, Anthony Minessale II - 2001-2003 Allan Saddi -License: MPL-1.1 - -Files: libs/libdingaling/src/sha1.[ch] -Copyright: 2001-2003 Allan Saddi -License: BSD-2-clause - Files: libs/libcodec2/* Copyright: 1990-2010 David Rowe 1990-2010 David Rowe 2009 diff --git a/Makefile.am b/Makefile.am index 3bf9cbd0484..f869072ff7b 100644 --- a/Makefile.am +++ b/Makefile.am @@ -15,16 +15,6 @@ AM_LIBAPR_CPPFLAGS := $(shell ./libs/apr/apr-1-config --cppflags --includes) AM_LIBAPR_LDFLAGS := $(shell ./libs/apr/apr-1-config --ldflags) AM_LIBAPR_LIBS := $(subst $(switch_builddir)/,,$(shell ./libs/apr/apr-1-config \--libs)) endif -if SYSTEM_APRUTIL -AM_LIBAPU_CPPFLAGS := $(shell apu-1-config --includes) -AM_LIBAPU_LDFLAGS := $(shell apu-1-config --ldflags) -AM_LIBAPU_LIBS := $(shell apu-1-config \--libs) -AM_LIBAPU_LINKLIBTOOL := $(shell apu-1-config \--link-libtool) -else -AM_LIBAPU_CPPFLAGS := $(shell ./libs/apr-util/apu-1-config --includes) -AM_LIBAPU_LDFLAGS := $(shell ./libs/apr-util/apu-1-config --ldflags) -AM_LIBAPU_LIBS := $(subst $(switch_builddir)/,,$(shell ./libs/apr-util/apu-1-config \--libs)) -endif AM_CFLAGS = $(SWITCH_AM_CFLAGS) $(SWITCH_ANSI_CFLAGS) @@ -141,11 +131,6 @@ CORE_LIBS= if ENABLE_LIBVPX CORE_LIBS += libs/libvpx/libvpx.a endif -if SYSTEM_APRUTIL -CORE_LIBS += $(AM_LIBAPU_LINKLIBTOOL) -else -CORE_LIBS += libs/apr-util/libaprutil-1.la -endif if SYSTEM_APR CORE_LIBS += $(AM_LIBAPR_LINKLIBTOOL) else @@ -310,6 +295,7 @@ library_include_HEADERS = \ src/include/switch_jitterbuffer.h \ src/include/switch_estimators.h \ src/include/switch_rtcp_frame.h \ + src/include/switch_spandsp.h \ src/include/switch_stun.h \ src/include/switch_nat.h \ src/include/switch_log.h \ @@ -339,6 +325,7 @@ nodist_libfreeswitch_la_SOURCES = \ libfreeswitch_la_SOURCES = \ src/switch_apr.c \ + src/switch_apr_queue.c \ src/switch_buffer.c \ src/switch_caller.c \ src/switch_channel.c \ @@ -385,6 +372,7 @@ libfreeswitch_la_SOURCES = \ src/switch_ivr_say.c \ src/switch_ivr_menu.c \ src/switch_ivr.c \ + src/switch_spandsp.c \ src/switch_stun.c \ src/switch_nat.c \ src/switch_log.c \ @@ -598,9 +586,6 @@ libs/apr/Makefile: libs/apr/Makefile.in libs/apr/config.status libs/apr libs/apr libs/apr/libapr-1.la: libs/apr/Makefile libs/apr/.update @if [ $(MAKELEVEL) = 0 -o -z "`echo "$(MAKEARGS)" | grep "j"`" ] ; then touch $(switch_srcdir)/src/include/switch.h; cd libs/apr && $(MAKE) $(MFLAGS) && touch libapr-1.la; fi -libs/apr-util/libaprutil-1.la: libs/apr/libapr-1.la libs/apr-util libs/apr-util/.update - @if [ $(MAKELEVEL) = 0 -o -z "`echo "$(MAKEARGS)" | grep "j"`" ] ; then touch $(switch_srcdir)/src/include/switch.h; cd libs/apr-util && $(MAKE) $(MFLAGS) && touch libaprutil-1.la; fi - SRTP_SRC = libs/srtp/srtp/srtp.c libs/srtp/crypto/cipher/cipher.c libs/srtp/crypto/cipher/null_cipher.c \ libs/srtp/crypto/cipher/aes.c libs/srtp/crypto/cipher/aes_icm.c \ libs/srtp/crypto/hash/null_auth.c libs/srtp/crypto/hash/sha1.c \ @@ -700,7 +685,7 @@ yesdepends: rm .nodepends iksemel-dep: - make -C src/mod/endpoints/mod_dingaling deps + make -C src/mod/formats/mod_ssml deps core: $(switch_builddir)/modules.conf src/include/switch_version.h $(CORE_LIBS) $(MAKE) $(AM_MAKEFLAGS) libfreeswitch.la @@ -780,7 +765,7 @@ iks-reconf: cd libs/iksemel && $(MAKE) clean cd libs/iksemel && autoreconf -fi cd libs/iksemel && sh ./configure.gnu $(MY_DEFAULT_ARGS) - $(MAKE) mod_dingaling-clean + $(MAKE) mod_ssml-clean cluecon: @clear diff --git a/README.md b/README.md index f2525918f3a..1660933611e 100644 --- a/README.md +++ b/README.md @@ -24,15 +24,26 @@ The main index for documentation is available at: * https://freeswitch.org/confluence/ + ### Release notes: * https://freeswitch.org/confluence/display/FREESWITCH/Release+Notes -### Installation +### Install from packages + +Step by step tutorials to install FreeSWITCH from packages: + + * [Debian](https://freeswitch.org/confluence/display/FREESWITCH/Debian) [Recommended] + * [Raspberry Pi](https://freeswitch.org/confluence/display/FREESWITCH/Raspberry+Pi) + * [CentOS 7](https://freeswitch.org/confluence/display/FREESWITCH/CentOS+7+and+RHEL+7) + +### Build from source -Step by step tutorials to install FreeSWITCH from packages or source code are available at: +Example Dockerfiles to build FreeSWITCH and dependencies from source: + * https://github.com/signalwire/freeswitch/tree/dockerfile/docker/examples - * [Debian 10 Buster](https://freeswitch.org/confluence/display/FREESWITCH/Debian+10+Buster) [Recommended] +Step by step tutorials to build FreeSWITCH with provided dependency packages: + * [Debian](https://freeswitch.org/confluence/display/FREESWITCH/Debian#Debian-buildfromsource) [Recommended] * [Raspberry Pi](https://freeswitch.org/confluence/display/FREESWITCH/Raspberry+Pi) * [CentOS 7](https://freeswitch.org/confluence/display/FREESWITCH/CentOS+7+and+RHEL+7) diff --git a/bootstrap.sh b/bootstrap.sh index b19a522044f..802c6098f7b 100755 --- a/bootstrap.sh +++ b/bootstrap.sh @@ -10,7 +10,7 @@ BGJOB=false VERBOSE=false BASEDIR=`pwd`; LIBDIR=${BASEDIR}/libs; -SUBDIRS="apr libzrtp iksemel libdingaling srtp unimrcp fs"; +SUBDIRS="apr libzrtp iksemel srtp fs"; while getopts 'jhd:v' o; do case "$o" in @@ -170,9 +170,6 @@ bootstrap_apr() { # Remove autoconf 2.5x's cache directory rm -rf autom4te*.cache - echo "Entering directory ${LIBDIR}/apr-util" - cd ${LIBDIR}/apr-util - ./buildconf } bootstrap_libzrtp() { diff --git a/build/buildmrcpserver.sh b/build/buildmrcpserver.sh deleted file mode 100755 index a6468b06d27..00000000000 --- a/build/buildmrcpserver.sh +++ /dev/null @@ -1,6 +0,0 @@ -#!/bin/sh -base=`pwd` -cd libs/unimrcp -./configure --with-pocketsphinx=$base/libs/pocketsphinx-0.5.99 --with-sphinxbase=$base/libs/sphinxbase-0.4.99 --with-flite=$base/libs/flite-1.3.99 --with-apr=$base/libs/apr --with-apr-util=$base/libs/apr-util --with-sofia-sip=$base/libs/sofia-sip --prefix=/usr/local/unimrcpserver --enable-pocketsphinx-plugin --enable-flite-plugin --disable-demosynth-plugin --disable-demorecog-plugin --disable-recorder-plugin --disable-cepstral-plugin -make -make install diff --git a/build/modmake.rules.in b/build/modmake.rules.in index dbce9bd48ec..7f880b86f90 100644 --- a/build/modmake.rules.in +++ b/build/modmake.rules.in @@ -188,7 +188,7 @@ $(MODNAME).o: $(MODDIR)/$(SOURCEFILE) \ $(switch_srcdir)/src/include/switch_event.h $(switch_srcdir)/src/include/switch_resample.h \ $(switch_srcdir)/src/include/switch_ivr.h $(switch_srcdir)/src/include/switch_rtp.h \ $(switch_srcdir)/src/include/switch_stun.h $(switch_srcdir)/src/include/switch_log.h \ - $(switch_srcdir)/src/include/switch_xml.h + $(switch_srcdir)/src/include/switch_xml.h $(switch_srcdir)/src/include/switch_spandsp.h @echo Compiling $<... if test -f "$(CSOURCEFILE)" -o -f "$(MODDIR)/$(CSOURCEFILE)"; then \ if test ! -z $(VERBOSE) ; then echo $(COMPILE) -c -o $@ `test -f '$<' || echo '$(MODDIR)/'`$< ; fi ;\ @@ -211,7 +211,7 @@ $(MODNAME).lo: $(MODDIR)/$(SOURCEFILE) \ $(switch_srcdir)/src/include/switch_event.h $(switch_srcdir)/src/include/switch_resample.h \ $(switch_srcdir)/src/include/switch_ivr.h $(switch_srcdir)/src/include/switch_rtp.h \ $(switch_srcdir)/src/include/switch_stun.h $(switch_srcdir)/src/include/switch_log.h \ - $(switch_srcdir)/src/include/switch_xml.h + $(switch_srcdir)/src/include/switch_xml.h $(switch_srcdir)/src/include/switch_spandsp.h @echo Compiling $<... if test -f "$(CSOURCEFILE)" -o -f "$(MODDIR)/$(CSOURCEFILE)"; then \ if test ! -z $(VERBOSE) ; then echo $(LTCOMPILE) -c -o $@ `test -f '$<' || echo '$(MODDIR)/'`$< ; fi ;\ @@ -261,6 +261,8 @@ $(switch_srcdir)/src/include/switch_ivr.h: $(switch_srcdir)/src/include/switch_rtp.h: +$(switch_srcdir)/src/include/switch_spandsp.h: + $(switch_srcdir)/src/include/switch_stun.h: $(switch_srcdir)/src/include/switch_log.h: diff --git a/build/modules.conf.in b/build/modules.conf.in index feb902994bb..7bf59e2accf 100644 --- a/build/modules.conf.in +++ b/build/modules.conf.in @@ -60,7 +60,6 @@ applications/mod_voicemail #asr_tts/mod_flite #asr_tts/mod_pocketsphinx #asr_tts/mod_tts_commandline -#asr_tts/mod_unimrcp codecs/mod_amr #codecs/mod_amrwb codecs/mod_b64 @@ -87,7 +86,6 @@ dialplans/mod_dialplan_asterisk dialplans/mod_dialplan_xml #directories/mod_ldap #endpoints/mod_alsa -#endpoints/mod_dingaling #endpoints/mod_gsmopen #endpoints/mod_h323 #endpoints/mod_khomp diff --git a/build/modules.conf.most b/build/modules.conf.most index a981c273dbb..fbf8100a90a 100644 --- a/build/modules.conf.most +++ b/build/modules.conf.most @@ -58,7 +58,6 @@ applications/mod_voicemail_ivr asr_tts/mod_flite asr_tts/mod_pocketsphinx asr_tts/mod_tts_commandline -asr_tts/mod_unimrcp codecs/mod_amr codecs/mod_amrwb codecs/mod_b64 @@ -84,7 +83,6 @@ dialplans/mod_dialplan_directory dialplans/mod_dialplan_xml directories/mod_ldap #endpoints/mod_alsa -endpoints/mod_dingaling #endpoints/mod_gsmopen #endpoints/mod_h323 #endpoints/mod_khomp diff --git a/build/next-release.txt b/build/next-release.txt index 4be6fdff409..4856655de67 100644 --- a/build/next-release.txt +++ b/build/next-release.txt @@ -1 +1 @@ -1.10.7-release +1.10.8-release diff --git a/build/sounds_version.txt b/build/sounds_version.txt index b0b46ff4e2e..12d0f30d10d 100644 --- a/build/sounds_version.txt +++ b/build/sounds_version.txt @@ -1,5 +1,5 @@ -en-us-callie 1.0.52 -en-us-allison 1.0.1 +en-us-callie 1.0.53 +en-us-allison 1.0.2 ru-RU-elena 1.0.51 ru-RU-kirill 1.0.0 ru-RU-vika 1.0.0 diff --git a/cmake_modules/FindAPRUtil.cmake b/cmake_modules/FindAPRUtil.cmake deleted file mode 100644 index 4de5d6050e8..00000000000 --- a/cmake_modules/FindAPRUtil.cmake +++ /dev/null @@ -1,49 +0,0 @@ -# Locate APR-Util include paths and libraries - -# This module defines -# APRUTIL_INCLUDES, where to find apr.h, etc. -# APRUTIL_LIBS, the libraries to link against to use APR. -# APRUTIL_FOUND, set to yes if found - -find_program(APRUTIL_CONFIG_EXECUTABLE - apu-1-config - /usr/local/apr-util/1.2.12/bin - /usr/local/bin - /usr/bin - C:/Progra~1/apr/bin - ) - -mark_as_advanced(APRUTIL_CONFIG_EXECUTABLE) - -macro(_apu_invoke _varname _regexp) - execute_process( - COMMAND ${APRUTIL_CONFIG_EXECUTABLE} ${ARGN} - OUTPUT_VARIABLE _apr_output - RESULT_VARIABLE _apr_failed - ) - - if(_apr_failed) - message(FATAL_ERROR "apu-1-config ${ARGN} failed") - else(_apr_failed) - string(REGEX REPLACE "[\r\n]" "" _apr_output "${_apr_output}") - string(REGEX REPLACE " +$" "" _apr_output "${_apr_output}") - - if(NOT ${_regexp} STREQUAL "") - string(REGEX REPLACE "${_regexp}" " " _apr_output "${_apr_output}") - endif(NOT ${_regexp} STREQUAL "") - - separate_arguments(_apr_output) - - set(${_varname} "${_apr_output}") - endif(_apr_failed) -endmacro(_apu_invoke) - -_apu_invoke(APRUTIL_INCLUDES "(^| )-I" --includes) -_apu_invoke(APRUTIL_LIBS "" --link-ld) - -if(APRUTIL_LIBS AND APRUTIL_INCLUDES) - set(APRUTIL_FOUND "YES") - set(APRUTIL_DEFINITIONS "") - message (STATUS "apr-util found: YES ${APRUTIL_LIBS}") -endif(APRUTIL_LIBS AND APRUTIL_INCLUDES) - diff --git a/conf/curl/autoload_configs/dingaling.conf.xml b/conf/curl/autoload_configs/dingaling.conf.xml deleted file mode 100644 index e68c8b4b445..00000000000 --- a/conf/curl/autoload_configs/dingaling.conf.xml +++ /dev/null @@ -1,9 +0,0 @@ - - - - - - - - - diff --git a/conf/rayo/autoload_configs/rayo.conf.xml b/conf/rayo/autoload_configs/rayo.conf.xml index e5191909cb0..9f525c597ce 100644 --- a/conf/rayo/autoload_configs/rayo.conf.xml +++ b/conf/rayo/autoload_configs/rayo.conf.xml @@ -277,36 +277,6 @@ ]]> - - - - yesno - ]]]]> - - - ]]> - - - - - yesno - ]]]]> - - - ]]> - - - - - - - - - diff --git a/conf/vanilla/autoload_configs/signalwire.conf.xml b/conf/vanilla/autoload_configs/signalwire.conf.xml new file mode 100644 index 00000000000..86e7056c7b3 --- /dev/null +++ b/conf/vanilla/autoload_configs/signalwire.conf.xml @@ -0,0 +1,14 @@ + + + + + + + + + + + + + + diff --git a/conf/vanilla/autoload_configs/switch.conf.xml b/conf/vanilla/autoload_configs/switch.conf.xml index 714b62c54cc..ba54eb7fce0 100644 --- a/conf/vanilla/autoload_configs/switch.conf.xml +++ b/conf/vanilla/autoload_configs/switch.conf.xml @@ -184,6 +184,9 @@ + + + - - - - - - - - - - - - - - - - - - - diff --git a/conf/vanilla/jingle_profiles/client.xml b/conf/vanilla/jingle_profiles/client.xml deleted file mode 100644 index 20a8dd809d1..00000000000 --- a/conf/vanilla/jingle_profiles/client.xml +++ /dev/null @@ -1,36 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/conf/vanilla/jingle_profiles/server.xml b/conf/vanilla/jingle_profiles/server.xml deleted file mode 100644 index b60dc27ea6d..00000000000 --- a/conf/vanilla/jingle_profiles/server.xml +++ /dev/null @@ -1,21 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - diff --git a/conf/vanilla/mrcp_profiles/loquendo-7-mrcp-v2.xml b/conf/vanilla/mrcp_profiles/loquendo-7-mrcp-v2.xml deleted file mode 100644 index dcf42821f5b..00000000000 --- a/conf/vanilla/mrcp_profiles/loquendo-7-mrcp-v2.xml +++ /dev/null @@ -1,32 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/conf/vanilla/mrcp_profiles/nuance-1.0.0-mrcp-v1.xml b/conf/vanilla/mrcp_profiles/nuance-1.0.0-mrcp-v1.xml deleted file mode 100644 index 0700dec629b..00000000000 --- a/conf/vanilla/mrcp_profiles/nuance-1.0.0-mrcp-v1.xml +++ /dev/null @@ -1,39 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/conf/vanilla/mrcp_profiles/nuance-5.0-mrcp-v1.xml b/conf/vanilla/mrcp_profiles/nuance-5.0-mrcp-v1.xml deleted file mode 100644 index 3c4938a66da..00000000000 --- a/conf/vanilla/mrcp_profiles/nuance-5.0-mrcp-v1.xml +++ /dev/null @@ -1,39 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/conf/vanilla/mrcp_profiles/nuance-5.0-mrcp-v2.xml b/conf/vanilla/mrcp_profiles/nuance-5.0-mrcp-v2.xml deleted file mode 100644 index b53cba09849..00000000000 --- a/conf/vanilla/mrcp_profiles/nuance-5.0-mrcp-v2.xml +++ /dev/null @@ -1,43 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/conf/vanilla/mrcp_profiles/unimrcpserver-mrcp-v1.xml b/conf/vanilla/mrcp_profiles/unimrcpserver-mrcp-v1.xml deleted file mode 100644 index fe02b1582f9..00000000000 --- a/conf/vanilla/mrcp_profiles/unimrcpserver-mrcp-v1.xml +++ /dev/null @@ -1,27 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/conf/vanilla/mrcp_profiles/vestec-mrcp-v1.xml b/conf/vanilla/mrcp_profiles/vestec-mrcp-v1.xml deleted file mode 100644 index cbde87ca5ac..00000000000 --- a/conf/vanilla/mrcp_profiles/vestec-mrcp-v1.xml +++ /dev/null @@ -1,26 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/conf/vanilla/mrcp_profiles/voxeo-prophecy-8.0-mrcp-v1.xml b/conf/vanilla/mrcp_profiles/voxeo-prophecy-8.0-mrcp-v1.xml deleted file mode 100644 index fb1d0ee287c..00000000000 --- a/conf/vanilla/mrcp_profiles/voxeo-prophecy-8.0-mrcp-v1.xml +++ /dev/null @@ -1,27 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/conf/vanilla/sip_profiles/internal.xml b/conf/vanilla/sip_profiles/internal.xml index 749e4b06879..5e38cfac1f1 100644 --- a/conf/vanilla/sip_profiles/internal.xml +++ b/conf/vanilla/sip_profiles/internal.xml @@ -239,6 +239,9 @@ + + + diff --git a/configure.ac b/configure.ac index 00b88c03c0a..f09196bdfd2 100644 --- a/configure.ac +++ b/configure.ac @@ -3,10 +3,10 @@ # Must change all of the below together # For a release, set revision for that tagged release as well and uncomment -AC_INIT([freeswitch], [1.10.7-release], bugs@freeswitch.org) +AC_INIT([freeswitch], [1.10.8-release], bugs@freeswitch.org) AC_SUBST(SWITCH_VERSION_MAJOR, [1]) AC_SUBST(SWITCH_VERSION_MINOR, [10]) -AC_SUBST(SWITCH_VERSION_MICRO, [7-release]) +AC_SUBST(SWITCH_VERSION_MICRO, [8-release]) AC_SUBST(SWITCH_VERSION_REVISION, []) AC_SUBST(SWITCH_VERSION_REVISION_HUMAN, []) @@ -665,12 +665,13 @@ AC_PATH_PROG([PKG_CONFIG], [pkg-config], [no]) case $host in *-darwin*) path_push_unique PKG_CONFIG_PATH /usr/local/opt/libpq/lib/pkgconfig + path_push_unique PKG_CONFIG_PATH /usr/local/opt/openssl/lib/pkgconfig ;; esac if test "$PKG_CONFIG" = "no" \ || test x"$enable_core_pgsql_pkgconfig" = x"no" \ - || ! pkg-config libpq; then + || ! pkg-config --modversion libpq > /dev/null; then if test "$PG_CONFIG" != "no"; then AC_MSG_CHECKING([for PostgreSQL libraries via pg_config]) POSTGRESQL_CFLAGS="-I`$PG_CONFIG --includedir`" @@ -682,7 +683,6 @@ if test "$PKG_CONFIG" = "no" \ POSTGRESQL_PATCH_VERSION=`$PG_CONFIG --version | awk '{ print $NF }' | awk -F. '{ print $3 }'` fi else - AC_MSG_CHECKING([for PostgreSQL libraries via pkg_config]) POSTGRESQL_CFLAGS="`$PKG_CONFIG --cflags libpq`" POSTGRESQL_LIBDIR="`$PKG_CONFIG libpq --libs-only-L`" @@ -844,8 +844,6 @@ PKG_CHECK_MODULES([STIRSHAKEN], [stirshaken],[ AC_CHECK_LIB(apr-1, apr_pool_mutex_set, use_system_apr=yes, use_system_apr=no) AM_CONDITIONAL([SYSTEM_APR],[test "${use_system_apr}" = "yes"]) -AC_CHECK_LIB(aprutil-1, apr_queue_pop_timeout, use_system_aprutil=yes, use_system_aprutil=no) -AM_CONDITIONAL([SYSTEM_APRUTIL],[test "${use_system_aprutil}" = "yes"]) save_LIBS="$LIBS" LIBS= @@ -883,7 +881,7 @@ AC_SUBST(LIBTOOL_LIB_EXTEN) # Checks for header files. AC_HEADER_DIRENT AC_HEADER_STDC -AC_CHECK_HEADERS([sys/types.h sys/resource.h sched.h wchar.h sys/filio.h sys/ioctl.h sys/prctl.h sys/select.h netdb.h execinfo.h sys/time.h]) +AC_CHECK_HEADERS([sys/types.h sys/resource.h sched.h wchar.h sys/filio.h sys/ioctl.h sys/prctl.h sys/select.h netdb.h sys/time.h]) # Solaris 11 privilege management AS_CASE([$host], @@ -1090,8 +1088,8 @@ if test "x${ax_cv_c_compiler_vendor}" = "xclang" ; then fi # Tested and fixed lot of modules, but some are untested. Will be added back when the core team decide it ready -# Untested modules : mod_osp mod_soundtouch mod_sangoma_codec mod_dingaling mod_opal mod_h323 mod_khomp -# mod_unimrcp mod_cepstral mod_erlang_event mod_snmp mod_perl mod_java mod_managed +# Untested modules : mod_osp mod_soundtouch mod_sangoma_codec mod_opal mod_h323 mod_khomp +# mod_cepstral mod_erlang_event mod_snmp mod_perl mod_java mod_managed # #saved_CFLAGS="$CFLAGS" #AC_CACHE_CHECK([whether compiler supports -Wunused-but-set-variable], [ac_cv_gcc_unused_but_set_variable], [ @@ -1531,11 +1529,25 @@ PKG_CHECK_MODULES([V8FS_STATIC], [v8-6.1_static >= 6.1.298],[ PKG_CHECK_MODULES([KS], [libks >= 1.1.0],[ AM_CONDITIONAL([HAVE_KS],[true])],[ - AC_MSG_RESULT([no]); AM_CONDITIONAL([HAVE_KS],[false])]) + if module_enabled mod_verto; then + AC_MSG_ERROR([You need to either install libks or disable mod_verto in modules.conf]) + else + if module_enabled mod_signalwire; then + AC_MSG_ERROR([You need to either install libks or disable mod_signalwire in modules.conf]) + else + AC_MSG_RESULT([no]); AM_CONDITIONAL([HAVE_KS],[false]) + fi + fi +]) PKG_CHECK_MODULES([SIGNALWIRE_CLIENT], [signalwire_client >= 1.0.0],[ AM_CONDITIONAL([HAVE_SIGNALWIRE_CLIENT],[true])],[ - AC_MSG_RESULT([no]); AM_CONDITIONAL([HAVE_SIGNALWIRE_CLIENT],[false])]) + if module_enabled mod_signalwire; then + AC_MSG_ERROR([You need to either install signalwire-client-c or disable mod_signalwire in modules.conf]) + else + AC_MSG_RESULT([no]); AM_CONDITIONAL([HAVE_SIGNALWIRE_CLIENT],[false]) + fi +]) PKG_CHECK_MODULES([AMQP], [librabbitmq >= 0.5.2],[ AM_CONDITIONAL([HAVE_AMQP],[true])],[ @@ -1956,6 +1968,22 @@ else AC_MSG_WARN([python3 support disabled, building mod_python3 will fail!]) fi +# pcap lib for unit-testing +AC_MSG_CHECKING(libpcap) +AC_CHECK_PROG(HAVE_PCAP_CONFIG,pcap-config,[true],[false]) +if test x"$HAVE_PCAP_CONFIG" = x"true"; then + AC_MSG_RESULT(yes) + PCAP_CONFIG=pcap-config + PCAP_LIBS="`$PCAP_CONFIG --libs`" + PCAP_CFLAGS="`$PCAP_CONFIG --cflags`" + AM_CONDITIONAL([HAVE_PCAP], [true]) +else + AC_MSG_RESULT(no) + AM_CONDITIONAL([HAVE_PCAP], [false]) +fi +AC_SUBST([PCAP_CFLAGS]) +AC_SUBST([PCAP_LIBS]) + # # SNMP checks for mod_snmp # @@ -2116,7 +2144,6 @@ AC_CONFIG_FILES([Makefile src/mod/asr_tts/mod_flite/Makefile src/mod/asr_tts/mod_pocketsphinx/Makefile src/mod/asr_tts/mod_tts_commandline/Makefile - src/mod/asr_tts/mod_unimrcp/Makefile src/mod/codecs/mod_amr/Makefile src/mod/codecs/mod_amrwb/Makefile src/mod/codecs/mod_b64/Makefile @@ -2145,7 +2172,6 @@ AC_CONFIG_FILES([Makefile src/mod/dialplans/mod_dialplan_xml/Makefile src/mod/directories/mod_ldap/Makefile src/mod/endpoints/mod_alsa/Makefile - src/mod/endpoints/mod_dingaling/Makefile src/mod/endpoints/mod_gsmopen/Makefile src/mod/endpoints/mod_h323/Makefile src/mod/endpoints/mod_khomp/Makefile @@ -2303,12 +2329,7 @@ AC_CONFIG_SUBDIRS([libs/srtp]) if test "$use_system_apr" != "yes"; then AC_CONFIG_SUBDIRS([libs/apr]) fi -if test "$use_system_aprutil" != "yes"; then - AC_CONFIG_SUBDIRS([libs/apr-util]) -fi AC_CONFIG_SUBDIRS([libs/iksemel]) -AC_CONFIG_SUBDIRS([libs/libdingaling]) -AC_CONFIG_SUBDIRS([libs/unimrcp]) if test "x${enable_zrtp}" = "xyes"; then AC_CONFIG_SUBDIRS([libs/libzrtp]) fi diff --git a/debian/bootstrap.sh b/debian/bootstrap.sh index fd5ff75cf05..71c5b52f99d 100755 --- a/debian/bootstrap.sh +++ b/debian/bootstrap.sh @@ -653,11 +653,9 @@ Depends: \${misc:Depends}, freeswitch (= \${binary:Version}), freeswitch-mod-flite (= \${binary:Version}), freeswitch-mod-pocketsphinx (= \${binary:Version}), freeswitch-mod-tts-commandline (= \${binary:Version}), - freeswitch-mod-unimrcp (= \${binary:Version}), freeswitch-mod-dialplan-asterisk (= \${binary:Version}), freeswitch-mod-dialplan-directory (= \${binary:Version}), freeswitch-mod-dialplan-xml (= \${binary:Version}), - freeswitch-mod-dingaling (= \${binary:Version}), freeswitch-mod-loopback (= \${binary:Version}), freeswitch-mod-portaudio (= \${binary:Version}), freeswitch-mod-rtc (= \${binary:Version}), @@ -892,11 +890,9 @@ Depends: \${misc:Depends}, freeswitch (= \${binary:Version}), freeswitch-mod-flite-dbg (= \${binary:Version}), freeswitch-mod-pocketsphinx-dbg (= \${binary:Version}), freeswitch-mod-tts-commandline-dbg (= \${binary:Version}), - freeswitch-mod-unimrcp-dbg (= \${binary:Version}), freeswitch-mod-dialplan-asterisk-dbg (= \${binary:Version}), freeswitch-mod-dialplan-directory-dbg (= \${binary:Version}), freeswitch-mod-dialplan-xml-dbg (= \${binary:Version}), - freeswitch-mod-dingaling-dbg (= \${binary:Version}), freeswitch-mod-loopback-dbg (= \${binary:Version}), freeswitch-mod-portaudio-dbg (= \${binary:Version}), freeswitch-mod-rtc-dbg (= \${binary:Version}), diff --git a/debian/control-modules b/debian/control-modules index a3b53790a49..b9d7a059334 100644 --- a/debian/control-modules +++ b/debian/control-modules @@ -291,10 +291,6 @@ Module: asr_tts/mod_tts_commandline Description: mod_tts_commandline Adds mod_tts_commandline. -Module: asr_tts/mod_unimrcp -Description: mod_unimrcp - Adds mod_unimrcp. - ## mod/codecs Module: codecs/mod_amr @@ -431,10 +427,6 @@ Description: mod_alsa Adds mod_alsa. Build-Depends: libasound2-dev -Module: endpoints/mod_dingaling -Description: mod_dingaling - Adds mod_dingaling. - Module: endpoints/mod_gsmopen Description: mod_gsmopen Adds mod_gsmopen. diff --git a/debian/copyright b/debian/copyright index 6745df1f351..01473e49404 100644 --- a/debian/copyright +++ b/debian/copyright @@ -1011,12 +1011,6 @@ License: MPL-1.1 or GPL-2+ use the text of this Exhibit A rather than the text found in the Original Code Source Code for Your Modifications.] -Files: libs/unimrcp/* -Copyright: 2008-2010 Arsen Chaloyan - 2009-2010 Tomas Valenta, Arsen Chaloyan - 2001-2006 Steve Underwood -License: Apache-2.0 - Files: */inet_pton.c libs/curl/lib/inet_ntop.c libs/curl/lib/mprintf.c @@ -1595,15 +1589,6 @@ Files: libs/silk/* Copyright: 2006-2011, Skype Limited. License: BSD-2-clause -Files: libs/libdingaling/* -Copyright: 2005-2014, Anthony Minessale II - 2001-2003 Allan Saddi -License: MPL-1.1 - -Files: libs/libdingaling/src/sha1.[ch] -Copyright: 2001-2003 Allan Saddi -License: BSD-2-clause - Files: libs/libcodec2/* Copyright: 1990-2010 David Rowe 1990-2010 David Rowe 2009 diff --git a/docker/examples/Debian11/Dockerfile b/docker/examples/Debian11/Dockerfile new file mode 100644 index 00000000000..2497a39850d --- /dev/null +++ b/docker/examples/Debian11/Dockerfile @@ -0,0 +1,49 @@ +FROM debian:bullseye +MAINTAINER Andrey Volk + +RUN apt-get update && DEBIAN_FRONTEND=noninteractive apt-get -yq install git + +RUN git clone https://github.com/signalwire/freeswitch /usr/src/freeswitch +RUN git clone https://github.com/signalwire/libks /usr/src/libs/libks +RUN git clone https://github.com/freeswitch/sofia-sip /usr/src/libs/sofia-sip +RUN git clone https://github.com/freeswitch/spandsp /usr/src/libs/spandsp +RUN git clone https://github.com/signalwire/signalwire-c /usr/src/libs/signalwire-c + +RUN DEBIAN_FRONTEND=noninteractive apt-get -yq install \ +# build + build-essential cmake automake autoconf 'libtool-bin|libtool' pkg-config \ +# general + libssl-dev zlib1g-dev libdb-dev unixodbc-dev libncurses5-dev libexpat1-dev libgdbm-dev bison erlang-dev libtpl-dev libtiff5-dev uuid-dev \ +# core + libpcre3-dev libedit-dev libsqlite3-dev libcurl4-openssl-dev nasm \ +# core codecs + libogg-dev libspeex-dev libspeexdsp-dev \ +# mod_enum + libldns-dev \ +# mod_python3 + python3-dev \ +# mod_av + libavformat-dev libswscale-dev libavresample-dev \ +# mod_lua + liblua5.2-dev \ +# mod_opus + libopus-dev \ +# mod_pgsql + libpq-dev \ +# mod_sndfile + libsndfile1-dev libflac-dev libogg-dev libvorbis-dev + +RUN cd /usr/src/libs/libks && cmake . -DCMAKE_INSTALL_PREFIX=/usr -DWITH_LIBBACKTRACE=1 && make install +RUN cd /usr/src/libs/sofia-sip && ./bootstrap.sh && ./configure CFLAGS="-g -ggdb" --with-pic --with-glib=no --without-doxygen --disable-stun --prefix=/usr && make -j`nproc --all` && make install +RUN cd /usr/src/libs/spandsp && ./bootstrap.sh && ./configure CFLAGS="-g -ggdb" --with-pic --prefix=/usr && make -j`nproc --all` && make install +RUN cd /usr/src/libs/signalwire-c && PKG_CONFIG_PATH=/usr/lib/pkgconfig cmake . -DCMAKE_INSTALL_PREFIX=/usr && make install + +RUN cd /usr/src/freeswitch && ./bootstrap.sh -j +RUN cd /usr/src/freeswitch && ./configure +RUN cd /usr/src/freeswitch && make -j`nproc` && make install + +# Cleanup the image +RUN apt-get clean + +# Uncomment to cleanup even more +#RUN rm -rf /usr/src/* \ No newline at end of file diff --git a/docker/examples/README.md b/docker/examples/README.md new file mode 100644 index 00000000000..5dd765ab49e --- /dev/null +++ b/docker/examples/README.md @@ -0,0 +1,4 @@ +##### Dockerfile examples showing how to build FreeSWITCH without installing FreeSWITCH repo. + +[Debian 11](https://github.com/signalwire/freeswitch/blob/dockerfile/docker/examples/Debian11/Dockerfile "Debian 11") + diff --git a/docker/master/Dockerfile b/docker/master/Dockerfile index 9ed9b4dab66..e9b626b4005 100644 --- a/docker/master/Dockerfile +++ b/docker/master/Dockerfile @@ -1,5 +1,7 @@ # vim:set ft=dockerfile: -FROM debian:jessie +ARG DEBIAN_VERSION=buster +FROM debian:${DEBIAN_VERSION} +ARG TOKEN # Source Dockerfile: # https://github.com/docker-library/postgres/blob/master/9.4/Dockerfile @@ -8,39 +10,32 @@ FROM debian:jessie RUN groupadd -r freeswitch --gid=999 && useradd -r -g freeswitch --uid=999 freeswitch # grab gosu for easy step-down from root -RUN gpg --keyserver ha.pool.sks-keyservers.net --recv-keys B42F6819007F00F88E364FD4036A9C25BF357DD4 -RUN apt-get update && apt-get install -y --no-install-recommends ca-certificates wget && rm -rf /var/lib/apt/lists/* \ +RUN apt-get update && apt-get install -y --no-install-recommends dirmngr gnupg2 ca-certificates wget \ + && gpg2 --keyserver hkp://keyserver.ubuntu.com --recv-keys B42F6819007F00F88E364FD4036A9C25BF357DD4 \ + && gpg2 --keyserver hkp://keyserver.ubuntu.com --recv-keys 655DA1341B5207915210AFE936B4249FA7B0FB03 \ + && gpg2 --output /usr/share/keyrings/signalwire-freeswitch-repo.gpg --export 655DA1341B5207915210AFE936B4249FA7B0FB03 \ + && rm -rf /var/lib/apt/lists/* \ && wget -O /usr/local/bin/gosu "https://github.com/tianon/gosu/releases/download/1.2/gosu-$(dpkg --print-architecture)" \ && wget -O /usr/local/bin/gosu.asc "https://github.com/tianon/gosu/releases/download/1.2/gosu-$(dpkg --print-architecture).asc" \ && gpg --verify /usr/local/bin/gosu.asc \ && rm /usr/local/bin/gosu.asc \ && chmod +x /usr/local/bin/gosu \ - && apt-get purge -y --auto-remove ca-certificates wget + && apt-get purge -y --auto-remove ca-certificates wget dirmngr gnupg2 # make the "en_US.UTF-8" locale so freeswitch will be utf-8 enabled by default RUN apt-get update && apt-get install -y locales && rm -rf /var/lib/apt/lists/* \ && localedef -i en_US -c -f UTF-8 -A /usr/share/locale/locale.alias en_US.UTF-8 ENV LANG en_US.utf8 -# https://files.freeswitch.org/repo/deb/freeswitch-1.*/dists/jessie/main/binary-amd64/Packages +# https://freeswitch.org/confluence/display/FREESWITCH/Debian -ENV FS_MAJOR debian-unstable - -RUN sed -i "s/jessie main/jessie main contrib non-free/" /etc/apt/sources.list - -# https://freeswitch.org/confluence/display/FREESWITCH/Debian+8+Jessie#Debian8Jessie-InstallingfromDebianpackages - -RUN apt-get update && apt-get install -y curl \ - && curl https://files.freeswitch.org/repo/deb/debian/freeswitch_archive_g0.pub | apt-key add - \ - && echo "deb http://files.freeswitch.org/repo/deb/$FS_MAJOR/ jessie main" > /etc/apt/sources.list.d/freeswitch.list \ - && apt-get purge -y --auto-remove curl - -RUN apt-get update && apt-get install -y freeswitch-all \ +RUN apt-get update && apt-get install ca-certificates lsb-release -y --no-install-recommends \ + && echo "machine freeswitch.signalwire.com login signalwire password ${TOKEN}" > /etc/apt/auth.conf \ + && echo "deb [signed-by=/usr/share/keyrings/signalwire-freeswitch-repo.gpg] https://freeswitch.signalwire.com/repo/deb/debian-release/ `lsb_release -sc` main" > /etc/apt/sources.list.d/freeswitch.list \ + && apt-get update && apt-get install -y freeswitch-all \ + && apt-get purge -y --auto-remove ca-certificates lsb-release \ && apt-get clean && rm -rf /var/lib/apt/lists/* -# Clean up -RUN apt-get autoremove - COPY docker-entrypoint.sh / # Add anything else here diff --git a/docs/Doxygen.conf b/docs/Doxygen.conf index 5df2a2bcb2a..9e62b082326 100644 --- a/docs/Doxygen.conf +++ b/docs/Doxygen.conf @@ -1242,7 +1242,7 @@ SEARCH_INCLUDES = YES INCLUDE_PATH =../libs/apr ../libs/apr-util ../libs/iksemel ../libs/libnatpmp \ ../libs/miniupnpc ../libs/sofia-sip ../libs/spandsp \ - ../libs/srtp ../libs/unimrcp ../libs/win32 ../libs/xmlrpc-c + ../libs/srtp ../libs/win32 ../libs/xmlrpc-c # You can use the INCLUDE_FILE_PATTERNS tag to specify one or more wildcard # patterns (like *.h and *.hpp) to filter out the header-files in the diff --git a/freeswitch.spec b/freeswitch.spec index 19a7dd55160..769859ea16e 100644 --- a/freeswitch.spec +++ b/freeswitch.spec @@ -636,15 +636,6 @@ Requires: %{name} = %{version}-%{release} Provides FreeSWITCH mod_tts_commandline, Run a command line and play the output file. -%package asrtts-unimrcp -Summary: FreeSWITCH mod_unimrcp -Group: System/Libraries -Requires: %{name} = %{version}-%{release} - -%description asrtts-unimrcp -Provides FreeSWITCH mod_unimrcp, allows communication with Media Resource -Control Protocol (MRCP) servers - ###################################################################################################################### # FreeSWITCH Codec Modules ###################################################################################################################### @@ -841,15 +832,6 @@ PostgreSQL native support for FreeSWITCH. # FreeSWITCH Endpoint Modules ###################################################################################################################### -%package endpoint-dingaling -Summary: Generic XMPP support for FreeSWITCH open source telephony platform -Group: System/Libraries -Requires: %{name} = %{version}-%{release} - -%description endpoint-dingaling -XMPP support for FreeSWITCH open source telephony platform. Allows FreeSWITCH -to be used as a client for GoogleTalk or other XMPP Servers. - #%package endpoint-gsmopen #Summary: Generic GSM endpoint support for FreeSWITCH open source telephony platform #Group: System/Libraries @@ -1444,7 +1426,7 @@ APPLICATIONS_MODULES="$APPLICATION_MODULES_AC $APPLICATION_MODULES_DE $APPLICATI # Automatic Speech Recognition and Text To Speech Modules # ###################################################################################################################### -ASR_TTS_MODULES="asr_tts/mod_flite asr_tts/mod_pocketsphinx asr_tts/mod_tts_commandline asr_tts/mod_unimrcp" +ASR_TTS_MODULES="asr_tts/mod_flite asr_tts/mod_pocketsphinx asr_tts/mod_tts_commandline" ###################################################################################################################### # @@ -1485,7 +1467,7 @@ DIRECTORIES_MODULES="" # Endpoints # ###################################################################################################################### -ENDPOINTS_MODULES="endpoints/mod_dingaling \ +ENDPOINTS_MODULES=" \ endpoints/mod_loopback endpoints/mod_portaudio endpoints/mod_rtmp \ endpoints/mod_skinny endpoints/mod_verto endpoints/mod_rtc endpoints/mod_sofia" @@ -1810,9 +1792,7 @@ fi %dir %attr(0750, freeswitch, daemon) %{sysconfdir}/dialplan/skinny-patterns %dir %attr(0750, freeswitch, daemon) %{sysconfdir}/directory %dir %attr(0750, freeswitch, daemon) %{sysconfdir}/directory/default -%dir %attr(0750, freeswitch, daemon) %{sysconfdir}/jingle_profiles %dir %attr(0750, freeswitch, daemon) %{sysconfdir}/lang -%dir %attr(0750, freeswitch, daemon) %{sysconfdir}/mrcp_profiles %dir %attr(0750, freeswitch, daemon) %{sysconfdir}/sip_profiles %dir %attr(0750, freeswitch, daemon) %{sysconfdir}/sip_profiles/external %dir %attr(0750, freeswitch, daemon) %{sysconfdir}/sip_profiles/external-ipv6 @@ -1920,7 +1900,6 @@ fi %config(noreplace) %attr(0640, freeswitch, daemon) %{sysconfdir}/autoload_configs/curl.conf.xml %config(noreplace) %attr(0640, freeswitch, daemon) %{sysconfdir}/autoload_configs/db.conf.xml %config(noreplace) %attr(0640, freeswitch, daemon) %{sysconfdir}/autoload_configs/dialplan_directory.conf.xml -%config(noreplace) %attr(0640, freeswitch, daemon) %{sysconfdir}/autoload_configs/dingaling.conf.xml %config(noreplace) %attr(0640, freeswitch, daemon) %{sysconfdir}/autoload_configs/directory.conf.xml %config(noreplace) %attr(0640, freeswitch, daemon) %{sysconfdir}/autoload_configs/distributor.conf.xml %config(noreplace) %attr(0640, freeswitch, daemon) %{sysconfdir}/autoload_configs/easyroute.conf.xml @@ -1960,6 +1939,7 @@ fi %config(noreplace) %attr(0640, freeswitch, daemon) %{sysconfdir}/autoload_configs/rtmp.conf.xml %config(noreplace) %attr(0640, freeswitch, daemon) %{sysconfdir}/autoload_configs/sangoma_codec.conf.xml %config(noreplace) %attr(0640, freeswitch, daemon) %{sysconfdir}/autoload_configs/shout.conf.xml +%config(noreplace) %attr(0640, freeswitch, daemon) %{sysconfdir}/autoload_configs/signalwire.conf.xml %config(noreplace) %attr(0640, freeswitch, daemon) %{sysconfdir}/autoload_configs/skinny.conf.xml %config(noreplace) %attr(0640, freeswitch, daemon) %{sysconfdir}/autoload_configs/smpp.conf.xml %config(noreplace) %attr(0640, freeswitch, daemon) %{sysconfdir}/autoload_configs/sms_flowroute.conf.xml @@ -1972,7 +1952,6 @@ fi %config(noreplace) %attr(0640, freeswitch, daemon) %{sysconfdir}/autoload_configs/translate.conf.xml %config(noreplace) %attr(0640, freeswitch, daemon) %{sysconfdir}/autoload_configs/tts_commandline.conf.xml %config(noreplace) %attr(0640, freeswitch, daemon) %{sysconfdir}/autoload_configs/unicall.conf.xml -%config(noreplace) %attr(0640, freeswitch, daemon) %{sysconfdir}/autoload_configs/unimrcp.conf.xml %config(noreplace) %attr(0640, freeswitch, daemon) %{sysconfdir}/autoload_configs/verto.conf.xml %config(noreplace) %attr(0640, freeswitch, daemon) %{sysconfdir}/autoload_configs/voicemail.conf.xml %config(noreplace) %attr(0640, freeswitch, daemon) %{sysconfdir}/autoload_configs/voicemail_ivr.conf.xml @@ -2015,11 +1994,9 @@ fi %config(noreplace) %attr(0640, freeswitch, daemon) %{sysconfdir}/sip_profiles/external/*.xml %config(noreplace) %attr(0640, freeswitch, daemon) %{sysconfdir}/sip_profiles/external-ipv6/*.xml ###################################################################################################################### -# Other Protocol Profiles (skinny, jingle, mrcp) +# Other Protocol Profiles (skinny) ###################################################################################################################### %config(noreplace) %attr(0640, freeswitch, daemon) %{sysconfdir}/skinny_profiles/*.xml -%config(noreplace) %attr(0640, freeswitch, daemon) %{sysconfdir}/jingle_profiles/*.xml -%config(noreplace) %attr(0640, freeswitch, daemon) %{sysconfdir}/mrcp_profiles/*.xml ###################################################################################################################### # Grammar Files ###################################################################################################################### @@ -2173,9 +2150,6 @@ fi %files asrtts-tts-commandline %{MODINSTDIR}/mod_tts_commandline.so* -%files asrtts-unimrcp -%{MODINSTDIR}/mod_unimrcp.so* - ###################################################################################################################### # # CODEC Packages @@ -2258,9 +2232,6 @@ fi # ###################################################################################################################### -%files endpoint-dingaling -%{MODINSTDIR}/mod_dingaling.so* - #%files endpoint-gsmopen #%{MODINSTDIR}/mod_gsmopen.so* diff --git a/libs/.gitignore b/libs/.gitignore index 5a83438d921..7ed9df2c581 100644 --- a/libs/.gitignore +++ b/libs/.gitignore @@ -34,40 +34,13 @@ opal /apr/build/pkg/pkginfo /apr/exports.c /apr/export_vars.c -/apr/include/apr.h -/apr/include/arch/unix/apr_private.h -/apr/include/arch/unix/apr_private.h.in +/apr/include/fspr.h +/apr/include/arch/unix/fspr_private.h +/apr/include/arch/unix/fspr_private.h.in /apr/.make.dirs /apr/Makefile /apr/test/internal/Makefile /apr/test/Makefile -/apr-util/aprutil.exp -/apr-util/apu-1-config -/apr-util/build/apr_common.m4 -/apr-util/build/find_apr.m4 -/apr-util/build/get-version.sh -/apr-util/build/install.sh -/apr-util/build/pkg/pkginfo -/apr-util/build/rules.mk -/apr-util/exports.c -/apr-util/export_vars.c -/apr-util/export_vars.sh -/apr-util/include/apr_ldap.h -/apr-util/include/apu_config.h -/apr-util/include/apu.h -/apr-util/include/apu_select_dbm.h -/apr-util/include/apu_want.h -/apr-util/include/private/apu_config.h -/apr-util/include/private/apu_config.h.in -/apr-util/include/private/apu_select_dbm.h -/apr-util/.make.dirs -/apr-util/Makefile -/apr-util/test/Makefile -/apr-util/xml/expat/config.h -/apr-util/xml/expat/lib/config.h -/apr-util/xml/expat/lib/expat.h -/apr-util/xml/expat/lib/Makefile -/apr-util/xml/expat/Makefile /broadvoice/config-h.in /broadvoice/doc/Makefile /broadvoice/doc/Makefile.in @@ -226,11 +199,6 @@ opal /libcodec2/unittest/vqtrainjnd /libcodec2/unittest/vqtrainph /libcodec2/unittest/vqtrainsp -/libdingaling/build/compile -/libdingaling/Makefile -/libdingaling/Makefile.in -/libdingaling/src/config.h -/libdingaling/src/stamp-h1 /libg722_1/config-h.in /libg722_1/doc/Makefile /libg722_1/doc/Makefile.in @@ -583,102 +551,6 @@ opal /tiff-*/tools/tiffmedian /tiff-*/tools/tiffset /tiff-*/tools/tiffsplit -/unimrcp/build/acmacros/libtool.m4 -/unimrcp/build/acmacros/lt~obsolete.m4 -/unimrcp/build/acmacros/ltoptions.m4 -/unimrcp/build/acmacros/ltsugar.m4 -/unimrcp/build/acmacros/ltversion.m4 -/unimrcp/build/Makefile -/unimrcp/build/Makefile.in -/unimrcp/build/pkgconfig/Makefile -/unimrcp/build/pkgconfig/Makefile.in -/unimrcp/build/svnrev/Makefile -/unimrcp/build/svnrev/Makefile.in -/unimrcp/build/svnrev/svnrev -!/unimrcp/build/tools/unimrcpservice.exe.manifest -!/unimrcp/build/uni_revision.h -!/unimrcp/configure.gnu -/unimrcp/conf/Makefile -/unimrcp/conf/Makefile.in -/unimrcp/data/Makefile -/unimrcp/data/Makefile.in -/unimrcp/docs/doxygen.conf -/unimrcp/libs/apr-toolkit/Makefile -/unimrcp/libs/apr-toolkit/Makefile.in -/unimrcp/libs/Makefile -/unimrcp/libs/Makefile.in -/unimrcp/libs/mpf/Makefile -/unimrcp/libs/mpf/Makefile.in -/unimrcp/libs/mrcp-client/Makefile -/unimrcp/libs/mrcp-client/Makefile.in -/unimrcp/libs/mrcp-engine/Makefile -/unimrcp/libs/mrcp-engine/Makefile.in -/unimrcp/libs/mrcp/Makefile -/unimrcp/libs/mrcp/Makefile.in -/unimrcp/libs/mrcp-server/Makefile -/unimrcp/libs/mrcp-server/Makefile.in -/unimrcp/libs/mrcp-signaling/Makefile -/unimrcp/libs/mrcp-signaling/Makefile.in -/unimrcp/libs/mrcpv2-transport/Makefile -/unimrcp/libs/mrcpv2-transport/Makefile.in -/unimrcp/libs/uni-rtsp/Makefile -/unimrcp/libs/uni-rtsp/Makefile.in -/unimrcp/Makefile -/unimrcp/Makefile.in -/unimrcp/modules/Makefile -/unimrcp/modules/Makefile.in -/unimrcp/modules/mrcp-sofiasip/Makefile -/unimrcp/modules/mrcp-sofiasip/Makefile.in -/unimrcp/modules/mrcp-unirtsp/Makefile -/unimrcp/modules/mrcp-unirtsp/Makefile.in -/unimrcp/platforms/asr-client/asrclient -/unimrcp/platforms/asr-client/Makefile -/unimrcp/platforms/asr-client/Makefile.in -/unimrcp/platforms/libasr-client/Makefile -/unimrcp/platforms/libasr-client/Makefile.in -/unimrcp/platforms/libunimrcp-client/Makefile -/unimrcp/platforms/libunimrcp-client/Makefile.in -/unimrcp/platforms/libunimrcp-server/Makefile -/unimrcp/platforms/libunimrcp-server/Makefile.in -/unimrcp/platforms/Makefile -/unimrcp/platforms/Makefile.in -/unimrcp/platforms/umc/Makefile -/unimrcp/platforms/umc/Makefile.in -/unimrcp/platforms/umc/umc -/unimrcp/platforms/unimrcp-client/Makefile -/unimrcp/platforms/unimrcp-client/Makefile.in -/unimrcp/platforms/unimrcp-client/unimrcpclient -/unimrcp/platforms/unimrcp-server/Makefile -/unimrcp/platforms/unimrcp-server/Makefile.in -/unimrcp/platforms/unimrcp-server/unimrcpserver -/unimrcp/plugins/demo-recog/Makefile -/unimrcp/plugins/demo-recog/Makefile.in -/unimrcp/plugins/demo-synth/Makefile -/unimrcp/plugins/demo-synth/Makefile.in -/unimrcp/plugins/demo-verifier/Makefile -/unimrcp/plugins/demo-verifier/Makefile.in -/unimrcp/plugins/Makefile -/unimrcp/plugins/Makefile.in -/unimrcp/plugins/mrcp-cepstral/Makefile -/unimrcp/plugins/mrcp-cepstral/Makefile.in -/unimrcp/plugins/mrcp-flite/Makefile -/unimrcp/plugins/mrcp-flite/Makefile.in -/unimrcp/plugins/mrcp-pocketsphinx/Makefile -/unimrcp/plugins/mrcp-pocketsphinx/Makefile.in -/unimrcp/plugins/mrcp-recorder/Makefile -/unimrcp/plugins/mrcp-recorder/Makefile.in -/unimrcp/tests/apttest/Makefile -/unimrcp/tests/apttest/Makefile.in -/unimrcp/tests/Makefile -/unimrcp/tests/Makefile.in -/unimrcp/tests/mpftest/Makefile -/unimrcp/tests/mpftest/Makefile.in -/unimrcp/tests/mrcptest/Makefile -/unimrcp/tests/mrcptest/Makefile.in -/unimrcp/tests/rtsptest/Makefile -/unimrcp/tests/rtsptest/Makefile.in -/unimrcp/tests/strtablegen/Makefile -/unimrcp/tests/strtablegen/Makefile.in /win32/celt/*/*/libcelt.log /win32/libg722_1/*/*/libg722_1.log /win32/libshout/*/*/libshout.log @@ -728,17 +600,7 @@ opal /v8-*.zip # build products we should remove -!/apr-util/xml/expat/conftools/config.guess -!/apr-util/xml/expat/conftools/config.sub -!/apr-util/xml/expat/conftools/install-sh -!/apr-util/xml/expat/conftools/missing !/iksemel/ltmain.sh -!/libdingaling/config.guess -!/libdingaling/config.sub -!/libdingaling/depcomp -!/libdingaling/install-sh -!/libdingaling/ltmain.sh -!/libdingaling/missing !/libg722_1/config/depcomp !/libg722_1/config/missing !/tiff-*/config/depcomp @@ -750,7 +612,6 @@ ilbc/config/compile libg722_1/config/compile pcre/compile srtp/build/compile -unimrcp/build/compile /pcre-*/ /speex-*/ /curl-*/ @@ -759,16 +620,12 @@ unimrcp/build/compile /ldns/ /portaudio/ portaudio.*.log -apr-util/configure -apr-util/xml/expat/configure apr/configure iksemel/configure -libdingaling/configure libyuv/Makefile libyuv/convert srtp/configure tiff-4.0.2/configure -unimrcp/configure zlib-*/ zlib-* libpq-*/ @@ -793,4 +650,5 @@ mariadb-connector-c-*/ mariadb-connector-c-* /spandsp*/ /spandsp* -win32/spandsp/spandsp.h \ No newline at end of file +win32/spandsp/spandsp.h +win32/spandsp/win32 diff --git a/libs/apr-util/.update b/libs/apr-util/.update deleted file mode 100644 index a573c805041..00000000000 --- a/libs/apr-util/.update +++ /dev/null @@ -1 +0,0 @@ -Thu 18 Nov 2010 20:56:38 EST diff --git a/libs/apr-util/CHANGES b/libs/apr-util/CHANGES deleted file mode 100644 index dbbe4ae5677..00000000000 --- a/libs/apr-util/CHANGES +++ /dev/null @@ -1,619 +0,0 @@ -Changes with APR-util 1.2.8 - - *) Add support for Berkeley DB 4.5 to the configure scripts. - [Garrett Rooney] - - *) Allow apr_queue.h to be included before other APR headers. - PR 40891 [Henry Jen ] - - *) Provide folding in autogenerated .manifest files for Win32 builders - using VisualStudio 2005 [William Rowe] - - *) Implement prepared statement support in SQLite3 DBD driver - [Bojan Smojver] - - *) Fix to ensure that "deprecated" LDAP interfaces are still - exposed if using OpenLDAP 2.3. [Joe Orton] - - *) Fix incorrect byte order and incorrect timestamp type - in the fallback UUID generator used when no external UUID - generator is detected by APR. PR 37342. [Max Bowsher] - -Changes with APR-util 1.2.7 - - *) Fix apr_dbd_init to be safe to call multiple times - [Bojan Smojver , Nick Kew] - - *) Win32 / Netware - add missing apu_version.c for apu_version_string() - to the Windows and Netware specific builds. Unix platforms supported - this API since 0.9.1. [William Rowe, Brad Nicholes]. - -Changes with APR-util 1.2.6 - - *) Stop trying to link against Berkeley DB by default. To enable use - of Berkeley DB users must now explicitly pass --with-berkeley-db to - configure, since Berkeley DB is released under a viral license that - requires distribution of source code for any program that uses it. - [Garrett Rooney] - - *) Stop trying to link against GDBM by default. To enable use of GDBM - users must now explicitly pass --with-gdbm to configure, since GDBM - is licensed under the GPL. - [Garrett Rooney] - - *) Fix VPATH builds, and symlink builds where apr and apr-util - reside in parallel as symlinks to directories with more explicit - names, e.g. apr-1.x and apr-util-1.x. This solves various breakage - on Solaris in particular with ./buildconf and ./configure. Also - eliminated the nested ../apr-iconv/buildconf, given that apr-util - didn't bother with ../apr/buildconf, and this was inconsistant. - [William Rowe] - - *) Fix the escape implementations for the sqlite2 and sqlite3 dbd - back ends. - [Ronen Mizrahi , Garrett Rooney] - - *) Add support for Berkeley DB 4.4 to the configure scripts. - [Garrett Rooney] - - *) Fix bug in test suite that cause testbuckets to write 8GB file - on Mac OS X. [Justin Erenkrantz] - -Changes with APR-util 1.2.2 - - *) Teach configure how to find the Novell LDAP SDK. [Graham Leggett] - - *) Fix usage of ldapssl_init/ldap_sslinit on platforms that support - these API's including Win32. Support APR_HAS_LDAP_START_TLS_S - flag in the Win32 LDAP API, to drop usage of ldap_start_ssl_s - and ldap_stop_ssl_s on Win32 by default (change the flag in apr_ldap.hw - to enable if supported on a given OS level). [William Rowe] - -Changes with APR-util 1.2.1 - - *) Fix apr_rmm_realloc() offset calculation bug. [Keith Kelleman - ] - - *) Add sqlite3 support to APR DBD. [Rick Keiner ] - - *) Fix build failure with non-threaded APR on AIX. PR 34655. - [Ryan Murray ] - - *) Add sqlite2 support to APR DBD. [Ryan Phillips ] - - *) Introduction of APR DBD layer. [Nick Kew] - -Changes with APR-util 1.1.2 - - *) Fix libaprutil.rc for Win32 builds [William Rowe, Justin Erenkrantz] - -Changes with APR-util 1.1.1 - - *) Fix memory leak in buckets when using APR_POOL_DEBUG mode. [Joe Schaefer] - - *) find_apu.m4: Try installed APR-util before bundled copy if --with-apr-util - not passed to configure. [Justin Erenkrantz] - -Changes with APR-util 1.1.0 - - *) LDAP: Move all certificate initialisation, and the creation of SSL - and TLS connections into the apr_ldap_set_option() API. Add support - for client certificates. [Graham Leggett] - - *) Emit the run-time link path option in apu-config after installation - if the user is linking with libtool. [Justin Erenkrantz] - - *) Port testmd4 and testmd5 to the new test suite. [Thom May] - - *) Allow passing NULL inbuf/inbytes_left parameters to - apr_xlate_conv_buffer(), required to correctly terminate the - output buffer for some stateful character set encodings. - [Joe Orton] - - *) Link libaprutil against the libraries on which it depends. - PR 11122. [Joe Orton] - - *) Add apr_brigade_insert_file() function, to safely insert a file - into a brigade, regardless of size. [Joe Orton] - -Changes with APR-util 1.0.2 - - *) Teach apr_ldap_init() how to handle STARTTLS in addition to the existing - SSL support. Add apr_ldap_option API. [Graham Leggett] - - *) Rework the LDAP toolkit detection to be more accurate than "OpenLDAP - detected regardless", while remaining backwards compatible with v1.0. - [Graham Leggett] - - *) Added the apr_ldap_ssl_add_cert() API to allow multiple certificates - to be stored and used when establishing an SSL connection to different - LDAP servers. [Brad Nicholes] - - *) Fix the detection of ldap.h on Solaris - it needs lber.h to be - defined first. [Graham Leggett] - - *) Add a build script to create a solaris package. [Graham Leggett] - -Changes with APR-util 1.0.1 - - *) Add support for Berkeley DB 4.3. [Jani Averbach ] - - *) SECURITY: CAN-2004-0786 (cve.mitre.org) - Fix input validation in apr_uri_parse() to avoid passing negative - length to memcpy for malformed IPv6 literal addresses. - [Joe Orton] - -Changes with APR-util 1.0 - - *) Only install apu-$MAJOR-config and add appropriate detection code to - find_apu.m4 (APU_FIND_APU). [Max Bowsher ] - - *) Overhaul support for LDAP URL parsing. Instead of using incompatible - URL parsers and memory that needs freeing, apr-util provides a parser - which parses the URL and allocates memory from a pool. [Graham Leggett] - - *) Remove support for LDAP v2.0 SDK toolkits. This will be added - back properly later assuming there is demand for it. In the mean - time, please use an LDAP v3.0 SDK toolkit. [Graham Leggett] - - *) Add an apr_ldap_err_t structure to handle the return of LDAP - specific error codes. [Graham Leggett, Brad Nicholes] - - *) Add APR functions to do the job of ldap_init(), hiding toolkit - specific SSL/TLS handling. Code derived from httpd util_ldap. - [Graham Leggett] - - *) Add an RPM spec file derived from Fedora Core. - [Graham Leggett, Joe Orton] - - *) The whole codebase was relicensed and is now available under - the Apache License, Version 2.0 (http://www.apache.org/licenses). - [Apache Software Foundation] - - *) A new function, apr_reslist_invalidate, was added so that invalid - resources can be removed from a reslist instead of being returned - to the reslist in a broken state. [Nick Kew ] - - *) Switch to a single, top-level make. [Greg Stein] - - *) Add timeout feature to apr_reslist_acquire(). - [Mladen Turk ] - - *) Pass error codes returned from constructors all the way back to - the reslist consumer. Also fix a minor reslist memory leak that could - happen when a constructor returns an error code. PR 23492. - [Snke Tesch , Aaron Bannert] - - *) The following header files have been removed: - - apu_compat.h - -Changes with APR-util 0.9.5 - - *) Fix corrupt output from the apr_xlate_* interfaces on AIX 4.x. - [Joe Orton] - - *) Change the order in which ldap.h and lber.h are defined, to fix - a compile bug in Solaris v2.8 which requires lber.h then ldap.h. - PR 27379. [Andrew Connors ] - - *) Restore support for SHA1 passwords in apr_validate_password. - PR 17343. [Paul Querna ] - - *) Fix DESTDIR install for bundled expat library. PR 14076 - [David S. Madole ] - - *) Fix occasional crash in apr_rmm_realloc(). PR 22915. - [Jay Shrauner ] - - *) Fix apr_dbm_exists() for sdbm when sizeof(int) != sizeof(size_t). - [Joe Orton] - - *) The whole codebase was relicensed and is now available under - the Apache License, Version 2.0 (http://www.apache.org/licenses). - [Apache Software Foundation] - - *) Fix xlate.c compile failure on AIX 5.2. PR 25701. [Jeff Trawick] - - *) Fixed a bug in apr_rmm that would cause it to mishandle blocks of - a size close to the one requested from the allocator. - [Kevin Wang ] - -Changes with APR-util 0.9.4 - - *) Changed apr_bucket_alloc_create() so that it uses the allocator - from the pool that was passed in rather than creating its own. - Also, the bucket_allocator is now allocated from the apr_allocator_t - rather than using apr_palloc(). Added apr_bucket_alloc_create_ex() - which takes an apr_allocator_t* directly rather than an apr_pool_t*. - [Cliff Woolley, Jean-Jacques Clar] - - *) Added debugging consistency checks to the buckets code. Add - -DAPR_BUCKET_DEBUG to the build flags to enable. - [Cliff Woolley] - - *) Make the version of the db library APU built against visible. - [Thom May] - - *) Fix a problem with VPATH builds copying the APR rules.mk into the - source directory rather than the build directory. [Justin Erenkrantz] - - *) SECURITY [httpd incident CAN-2003-0189] Address a thread safety - issue with apr_password_validate() on AIX, Linux, Mac OS X, and - possibly other platforms. [Jeff Trawick, Justin Erenkrantz] - - *) Fix a problem with LDAP configuration which caused subsequent - configure tests to fail since LIBS contained LDAP libraries for - subsequent tests but LDFLAGS no longer included the path to such - LDAP libraries. [Jeff Trawick] - - *) Fix a problem preventing the use of the bundled Expat when APR-util - is built stand-alone. [Jeff Trawick] - - *) Use the same compiler and preprocessor for the APR-util config tests - which were used by APR. The user can override this via CC and CPP. - This was done all along for the actual build, but not necessarily - for the config tests. [Jeff Trawick] - - *) Fix apr_uuid_parse() on EBCDIC machines. [Jeff Trawick] - - *) Fix alignment problem when allocating memory using apr_rmm. The problem - showed up while trying to write a double in the memory allocated. - [Madhusudan Mathihalli] - -Changes with APR-util 0.9.3 - - *) Allow apr_date_parse_rfc to parse 'Sun, 06-Nov-1994 08:49:37 GMT' as a - valid date. [Dmitri Tikhonov ] - - *) Fix error in apu-config when symlinks are involved. - [Garrett Rooney ] - -Changes with APR-util 0.9.2 - - *) Fix the APR_BUCKET_IS_foo() macros so they parenthesize their parameter. - This fixes compile problems with some types of parameters. - [Jim Carlson ] - - *) Queue overwrite, we now return the item pushed, not a reference to it. - [Paul Marquis ] - - *) Remove include/apr_ldap.h on distclean. PR 15592. [Justin Erenkrantz] - - *) Fix race conditions in apr_queue. - [Jacob Lewallen ] - - *) Stop buildconf copying rules.mk, copy it at configure time. - [Thom May] - - *) Make buildconf copy rules.mk as well. - [Garrett Rooney ] - - *) Add --includedir flag to apu-config. [Justin Erenkrantz] - - *) Fix brokenness in sdbm when sizeof(int) != sizeof(size_t) - (e.g., 64-bit AIX, 64-bit Solaris). PR 14861. [Jeff Trawick] - - *) Have buildconf copy required files from apr so that apr-util can build - on its own. [Craig Rodrigues ] - - *) Detect OpenLDAP when used with Solaris 9. PR 13427. - [Gary Algier ] - - *) Detect Berkeley DB 4.1 when compiled with --with-uniquenames - [Thom May] - - *) Allow apu-config to work in symlinked install directories when - 'realpath' is available. [Justin Erenkrantz] - - *) Fix bug in apr_strmatch when used with case-insensitive patterns. - [Justin Erenkrantz] - - *) Allow apr_queue to have greater than int number of elements. - [Justin Erenkrantz] - - *) Detect Berkeley DB 4.0 compiled with --with-uniquenames. - [Philip Martin ] - - *) Allocate brigades from a bucket allocator rather than a pool. [Brian Pane] - - *) Update with the latest APR renames [Thom May] - - *) Update doxygen tags. [Justin Erenkrantz] - - *) Add apr_ldap.hw for Windows build. - [Andre Schild ] - - *) Add IPv6 literal address support to apr_uri_parse(), apr_uri_unparse(), - and apr_uri_parse_hostinfo(). PR 11887 [Jeff Trawick] - - *) Add apr_brigade_writev() [Brian Pane] - - *) Add support for Berkeley DB 4.1. [Justin Erenkrantz] - - *) Add --bindir option to apu-config. [Justin Erenkrantz] - -Changes with APR-util 0.9.1 - - *) Add versioning infrastructure. - [Justin Erenkrantz] - - *) Running "make check" in the toplevel directory or the test/ directory - will build and run all test programs. [Aaron Bannert] - - *) Bug #9789 : NDBM support - [Toomas Soome , Ian Holsman] - - *) Added a Thread safe FIFO bounded buffer (apr_queue) [Ian Holsman] - - *) Changed file_bucket_setaside() to use apr_file_setaside() instead - of turning the file bucket into an mmap bucket. [Brian Pane] - - *) Install libaprutil support libraries before installing libaprutil - itself, since on some platforms libaprutil is relinked during - make install and the support libraries need to exist already. - [Jeff Trawick] - - *) Added a Resource List API for threadsafe access to persistent - and dynamically created user-defined resources. [Aaron Bannert] - - *) Adopted apr-util/xlate from apr/i18n for inclusion of apr-iconv - as required by missing libiconv. [William Rowe] - - *) Adopted apr-util/crypto/ uuid and md5 from apr. [William Rowe] - - *) Look for expat in lib64 directories. [Peter Poeml ] - - *) Faster implementation of apr_brigade_puts() [Brian Pane] - - *) Fixed a segfault in apr_date_parse_rfc() for some date formats - where it was trying to overlay a potentially static input - string even though it didn't really need to. - [Cliff Woolley, Doug MacEachern] - - *) Ensure that apu-config does not print libtool libraries when - using --libs. [Justin Erenkrantz] - - *) Added apr_bucket_file_enable_mmap() function to the bucket - API to let an application control whether a file bucket may - be turned into an mmap bucket upon read. (The default remains - to do the mmap, but this function lets the app prevent the - mmap in contexts where mmap would be a bad idea. Examples - include multiprocessors where mmap doesn't scale well and - NFS-mounted filesystems where a bus error can result if - a memory-mapped file is removed or truncated.) [Brian Pane] - - *) Added string-matching API (apr_strmatch.h) [Brian Pane] - - *) Rearrange INCLUDES so that APRUTIL_PRIV_INCLUDES is always - first. [Garrett Rooney ] - - *) Add --old-expat option to apu-config to allow users of apr-util to - determine what expat it should expect to be installed. If the - flag is set to yes, it should include xmlparse.h. If it is set to - no, it should include expat.h. [Justin Erenkrantz] - - *) Fix exporting of includes in apu-config. [Justin Erenkrantz] - - *) Change bucket brigades API to allow a "bucket allocator" to be - passed in at certain points. This allows us to implement freelists - so that we can stop using malloc/free so frequently. - [Cliff Woolley, Brian Pane] - - *) add apr_rmm_realloc() function - [Madhusudan Mathihalli ] - - *) renames: apr_ansi_time_to_apr_time becomes apr_time_ansi_put - ap_exploded_time_t becomes apr_time_exp_t - [Thom May ] - - *) Add detection support for FreeBSD's expat and expat2 ports. - [Justin Erenkrantz] - - *) Deprecate check_brigade_flush(), which had several nasty bugs, and - which was causing apr_brigade_write()'s logic to be less than obvious. - Everything is now done in a slightly rearranged apr_brigade_write(). - [Cliff Woolley] - - *) Don't add /usr/include to the INCLUDES variable on expat's account. - [Joe Orton ] - - *) Remove the autoconf 2.5x cache directory in buildconf. - [Joe Orton ] - - *) BerkleyDB should NULL out the key if it is @EOF in vt_db_nextkey - [Ian Holsman] - - *) Add ability to natively fetch and split brigades based on LF lines. - [Justin Erenkrantz] - - *) add --with-berkeley-db=DIR & --with-gdbm configure flags - [Ian Holsman/Justin Erenkrantz] - - *) Fix expat detection to recognize installed versions. - [Eric Gillespie, Jr. ] - - *) Add find_apu.m4 to allow third-party programs that use APR-util - to have a standard m4 macro for detection. [Justin Erenkrantz] - - *) Add apu-config - a shell script to allow third-party programs - easy access to APR configuration parameters. [Justin Erenkrantz] - - *) Add GMT offset calculation to apr_date_parse_rfc(). - [Justin Erenkrantz] - - *) Introduce the apr_rmm api, to allow relocatable memory management - of address-independent data stores, such as shared memory. - [William Rowe] - - *) Rework and fix VPATH-build support. [Justin Erenkrantz] - - *) Add support for Berkeley DB4. [Justin Erenkrantz] - - *) Improve testdbm help. [Justin Erenkrantz] - - *) Improve autoconf detection of DBMs. [Justin Erenkrantz] - - *) BerkeleyDBM v2 now checks minor level for cursor ops [Ian Holsman] - - *) Reading a file bucket bigger than APR_MMAP_LIMIT (4MB) now yields - a string of 4MB mmap buckets, rather than a string of 8KB heap buckets - plus a 4MB mmap bucket. To accomodate this, the mmap bucket destroy - function explicitly deletes the apr_mmap_t after last reference - to avoid having too much of a large file mapped at once if possible. - [Cliff Woolley] - - *) Multi-DBM support (via apr_dbm_open_ex). [Ian Holsman] - - *) Use apr_mmap_dup in mmap_setaside(). [Brian Pane ] - - *) Dropped the "w" parameter from apr_bucket_heap_create() and - apr_bucket_heap_make(). That parameter was originally intended - to return the amount of data copied into the bucket, but it - ended up being unnecessary because that amount is invariant from - the size of the data and is available as b->length in the - resulting bucket anyway. [Cliff Woolley] - - *) Fix Makefile conversion for BSD/OS. [Cliff Woolley] - - *) Use APR_XtOffsetOf instead of offsetof() in the ring macros for - portability. [Cliff Woolley] - - *) We now create exports.c and export_vars.h, which in turn create - exports.c. From this we generate two more files with different - purposes: aprutil.exp - list of exported symbols; and exports.lo - (exports.o) - an object file that can be linked with an executable - to force resolution of all apr-util symbols. [Aaron Bannert] - - *) Fix Berkley DBM support [Ian Holsman ] - - *) Fix apr_brigade_vprintf so that it can handle more than - 4k of data at one time. [Cody Sherr ] - - *) prefix UNP_* flags with APR_URI_ - - rename: - apr_uri_components -> apr_uri_t - apr_uri_unparse_components -> apr_uri_unparse - apr_uri_parse_components -> apr_uri_parse - apr_uri_parse_hostinfo_components -> apr_uri_parse_hostinfo - - s/APU_URI_/APR_URI_/g - [Perl] - - *) Landed the link-to-LDAP to the build process, and the LDAP v2/v3 - compatibility functions. - [Dave Carrigan , Graham Leggett] - - *) Fix URI unparse function to handle the case where it would place a @ - when both the username and password were present but omitted. - [Jon Travis ] - - *) Extend apr_bucket struct to add a pointer to a function used - to free the bucket. This change enables custom buckets to - completely specify how they are to be allocated and freed. - Before this change, custom buckets were required to use the - same memory allocation scheme as the standard APR buckets. - [Saeid Sakhitab, Bill Stoddard, Cliff Woolley, Roy Fielding] - - *) Install Expat when installing APR-util. [Justin Erenkrantz] - - *) Make APR-util configure script rely on APR. This removes the locally - generated copy of libtool and uses the one in APR. Fix up how we - call the expat configure script. Generate config.nice file. - [Justin Erenkrantz] - - *) The apr_bucket lengths are now consistently apr_size_t, while any - apr_brigade lengths (short of a read) are consistently apr_off_t. - This is required for APR_HAS_LARGE_FILES handling. [William Rowe] - - *) apr_bucket_file_create() and apr_bucket_file_make() now take a pool - parameter which is the pool into which any needed data structures - should be created during file_read(). This is used for MMAPing the - file and reopening the file if the original apr_file_t is in XTHREAD - mode. [Cliff Woolley] - - *) apr_brigade_partition() now returns an apr_status_t. [Cliff Woolley] - - *) Add MD4 implementation in crypto. [Sander Striker, Justin Erenkrantz] - - *) Moved httpd 2.0.18's util_date to apr_date and enhanced its parsing - capabilities. [Justin Erenkrantz] - - *) Moved httpd 2.0.18's util_uri to apr_uri and name-protected its - symbols and functions. [Justin Erenkrantz, Roy Fielding] - - *) Rename field "private" in struct apr_xml_elem to "priv" for C++ - compatibility. PR #7727 [Joshua MacDonald ] - - *) Make APR_IMPLEMENT_EXTERNAL_HOOK_BASE generate a - ${namespace}_hook_get_${hookname} function to fetch the - list of registered hooks [Doug MacEachern] - - *) Allow LTFLAGS to be overridden by the configure command-line - (default="--silent") and introduce LT_LDFLAGS. [Roy Fielding] - - *) Add APR_SHARELOCK support to apr_sdbm_open(), locking read operations - with a shared lock and all write ops with an excl lock. [Will Rowe] - - *) Namespace protect apr_sdbm, and normalize the return values (including - the apr_sdbm_fetch, apr_sdbm_firstkey and apr_sdbm_nextkey functions). - Normalized the get/clear error function names, and stores the actual - apr error for apr_sdbm_error_get. [Will Rowe] - - *) Introduce an apr_fileperms_t argument to apr_dbm_open(). [Will Rowe] - - *) Removed apr_bucket_do_create() macro, which was causing warnings - about unreachable code in some compilers (notably MSVC). What - used to be done by this macro is now done inline in the various - apr_bucket_foo_create() functions. [Cliff Woolley] - - *) Make clean, distclean, and extraclean consistently according to the - Gnu makefile guidelines. [Justin Erenkrantz ] - - *) Migrate the --disable-libtool changes from APR to APR-util. - This cleans things up, and allows more flexibility when building - programs. [Ryan Bloom] - - *) Allow APR-util to be compiled without libtool. The default is - to use libtool, but it can turned off with --disable-libtool - on the configure command. [Ryan Bloom] - - *) Repair calling convention for apr_register_optional_fn to - eliminate GP fault on Win32. [William Rowe] - - *) Substantial changes to correct linkage and declarations for - generic hooks on dso architectures. [Ben Laurie, Will Rowe] - - *) apr_bucket_shared_destroy() now returns a boolean value. - [Cliff Woolley] - - *) We have to initialize the heap buckets to the correct length. - we were seeing heap buckets with 17 chars in them reporting - a length of 9017, because they were initialized to the amount - of memory allocated, instead of the amount of memory used. - This was only an issue for heap buckets created by the - apr_brigade_* functions. [Ryan Bloom] - - *) apr_bucket_init_types() and apr_bucket_insert_type() have been - removed... they're not needed anymore. [Cliff Woolley] - - *) The apr_bucket_shared and apr_bucket_simple structures have been - removed as an API simplification/optimization. This should be - transparent outside APR-util except to callers who attempt to - directly manipulate the buckets' internal structure (which is - not recommended anyway) and to callers who create their own - bucket types. [Cliff Woolley] - - *) apr_bucket_simple_split() and apr_bucket_simple_copy() are now - exported functions, which could be helpful in implementing - external bucket types. [Cliff Woolley] - - *) The third parameter to apr_bucket_shared_make() is now - 'apr_off_t length' rather than 'apr_off_t end', since the - end usually had to be computed by the caller and all we - really want is the length anyway. [Cliff Woolley] - diff --git a/libs/apr-util/CMakeLists.txt b/libs/apr-util/CMakeLists.txt deleted file mode 100644 index 796f5e4b056..00000000000 --- a/libs/apr-util/CMakeLists.txt +++ /dev/null @@ -1,36 +0,0 @@ -cmake_minimum_required(VERSION 2.6) - -INCLUDE_DIRECTORIES(include/) - -add_definitions(-DHAVE_CONFIG_H -DDARWIN -DSIGPROCMASK_SETS_THREAD_MASK) -INCLUDE_DIRECTORIES(BEFORE ${CMAKE_SOURCE_DIR}/libs/apr-util/include ${CMAKE_SOURCE_DIR}/libs/apr-util/include/private ${CMAKE_SOURCE_DIR}/libs/apr/include) - - -SET (apr-util_SRCS -crypto/apr_md5.c -crypto/uuid.c -crypto/apr_sha1.c -crypto/getuuid.c -crypto/apr_md4.c -encoding/apr_base64.c -hooks/apr_hooks.c -misc/apr_reslist.c -misc/apr_rmm.c -misc/apr_date.c -misc/apu_version.c -misc/apr_queue.c -uri/apr_uri.c -strmatch/apr_strmatch.c -xlate/xlate.c -) - -LINK_LIBRARIES ("-liconv -ldl -lpthread") - -ADD_LIBRARY(apr-util STATIC ${apr-util_SRCS}) - - - - - - - diff --git a/libs/apr-util/INSTALL.MySQL b/libs/apr-util/INSTALL.MySQL deleted file mode 100644 index 67718bf9d82..00000000000 --- a/libs/apr-util/INSTALL.MySQL +++ /dev/null @@ -1,14 +0,0 @@ -The MySQL driver is not distributed from apache.org due to licensing issues. - -If you wish to build the driver, download apr_dbd_mysql.c from -http://apache.webthing.com/database/ -and copy it into the dbd directory. -Now run buildconf, followed by configure. - -It is distributed under the GPL to conform with MySQL License terms -This means it cannot be distributed from apache.org, as that would -violate ASF policy. - -Using the driver with APR and Apache is of course allowed, -and there is no problem with a third party bundling the driver, -provided you respect both the ASF and GPL licenses. diff --git a/libs/apr-util/LICENSE b/libs/apr-util/LICENSE deleted file mode 100644 index 2813d26052a..00000000000 --- a/libs/apr-util/LICENSE +++ /dev/null @@ -1,404 +0,0 @@ - Apache License - Version 2.0, January 2004 - http://www.apache.org/licenses/ - - TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION - - 1. Definitions. - - "License" shall mean the terms and conditions for use, reproduction, - and distribution as defined by Sections 1 through 9 of this document. - - "Licensor" shall mean the copyright owner or entity authorized by - the copyright owner that is granting the License. - - "Legal Entity" shall mean the union of the acting entity and all - other entities that control, are controlled by, or are under common - control with that entity. For the purposes of this definition, - "control" means (i) the power, direct or indirect, to cause the - direction or management of such entity, whether by contract or - otherwise, or (ii) ownership of fifty percent (50%) or more of the - outstanding shares, or (iii) beneficial ownership of such entity. - - "You" (or "Your") shall mean an individual or Legal Entity - exercising permissions granted by this License. - - "Source" form shall mean the preferred form for making modifications, - including but not limited to software source code, documentation - source, and configuration files. - - "Object" form shall mean any form resulting from mechanical - transformation or translation of a Source form, including but - not limited to compiled object code, generated documentation, - and conversions to other media types. - - "Work" shall mean the work of authorship, whether in Source or - Object form, made available under the License, as indicated by a - copyright notice that is included in or attached to the work - (an example is provided in the Appendix below). - - "Derivative Works" shall mean any work, whether in Source or Object - form, that is based on (or derived from) the Work and for which the - editorial revisions, annotations, elaborations, or other modifications - represent, as a whole, an original work of authorship. For the purposes - of this License, Derivative Works shall not include works that remain - separable from, or merely link (or bind by name) to the interfaces of, - the Work and Derivative Works thereof. - - "Contribution" shall mean any work of authorship, including - the original version of the Work and any modifications or additions - to that Work or Derivative Works thereof, that is intentionally - submitted to Licensor for inclusion in the Work by the copyright owner - or by an individual or Legal Entity authorized to submit on behalf of - the copyright owner. For the purposes of this definition, "submitted" - means any form of electronic, verbal, or written communication sent - to the Licensor or its representatives, including but not limited to - communication on electronic mailing lists, source code control systems, - and issue tracking systems that are managed by, or on behalf of, the - Licensor for the purpose of discussing and improving the Work, but - excluding communication that is conspicuously marked or otherwise - designated in writing by the copyright owner as "Not a Contribution." - - "Contributor" shall mean Licensor and any individual or Legal Entity - on behalf of whom a Contribution has been received by Licensor and - subsequently incorporated within the Work. - - 2. Grant of Copyright License. Subject to the terms and conditions of - this License, each Contributor hereby grants to You a perpetual, - worldwide, non-exclusive, no-charge, royalty-free, irrevocable - copyright license to reproduce, prepare Derivative Works of, - publicly display, publicly perform, sublicense, and distribute the - Work and such Derivative Works in Source or Object form. - - 3. Grant of Patent License. Subject to the terms and conditions of - this License, each Contributor hereby grants to You a perpetual, - worldwide, non-exclusive, no-charge, royalty-free, irrevocable - (except as stated in this section) patent license to make, have made, - use, offer to sell, sell, import, and otherwise transfer the Work, - where such license applies only to those patent claims licensable - by such Contributor that are necessarily infringed by their - Contribution(s) alone or by combination of their Contribution(s) - with the Work to which such Contribution(s) was submitted. If You - institute patent litigation against any entity (including a - cross-claim or counterclaim in a lawsuit) alleging that the Work - or a Contribution incorporated within the Work constitutes direct - or contributory patent infringement, then any patent licenses - granted to You under this License for that Work shall terminate - as of the date such litigation is filed. - - 4. Redistribution. You may reproduce and distribute copies of the - Work or Derivative Works thereof in any medium, with or without - modifications, and in Source or Object form, provided that You - meet the following conditions: - - (a) You must give any other recipients of the Work or - Derivative Works a copy of this License; and - - (b) You must cause any modified files to carry prominent notices - stating that You changed the files; and - - (c) You must retain, in the Source form of any Derivative Works - that You distribute, all copyright, patent, trademark, and - attribution notices from the Source form of the Work, - excluding those notices that do not pertain to any part of - the Derivative Works; and - - (d) If the Work includes a "NOTICE" text file as part of its - distribution, then any Derivative Works that You distribute must - include a readable copy of the attribution notices contained - within such NOTICE file, excluding those notices that do not - pertain to any part of the Derivative Works, in at least one - of the following places: within a NOTICE text file distributed - as part of the Derivative Works; within the Source form or - documentation, if provided along with the Derivative Works; or, - within a display generated by the Derivative Works, if and - wherever such third-party notices normally appear. The contents - of the NOTICE file are for informational purposes only and - do not modify the License. You may add Your own attribution - notices within Derivative Works that You distribute, alongside - or as an addendum to the NOTICE text from the Work, provided - that such additional attribution notices cannot be construed - as modifying the License. - - You may add Your own copyright statement to Your modifications and - may provide additional or different license terms and conditions - for use, reproduction, or distribution of Your modifications, or - for any such Derivative Works as a whole, provided Your use, - reproduction, and distribution of the Work otherwise complies with - the conditions stated in this License. - - 5. Submission of Contributions. Unless You explicitly state otherwise, - any Contribution intentionally submitted for inclusion in the Work - by You to the Licensor shall be under the terms and conditions of - this License, without any additional terms or conditions. - Notwithstanding the above, nothing herein shall supersede or modify - the terms of any separate license agreement you may have executed - with Licensor regarding such Contributions. - - 6. Trademarks. This License does not grant permission to use the trade - names, trademarks, service marks, or product names of the Licensor, - except as required for reasonable and customary use in describing the - origin of the Work and reproducing the content of the NOTICE file. - - 7. Disclaimer of Warranty. Unless required by applicable law or - agreed to in writing, Licensor provides the Work (and each - Contributor provides its Contributions) on an "AS IS" BASIS, - WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or - implied, including, without limitation, any warranties or conditions - of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A - PARTICULAR PURPOSE. You are solely responsible for determining the - appropriateness of using or redistributing the Work and assume any - risks associated with Your exercise of permissions under this License. - - 8. Limitation of Liability. In no event and under no legal theory, - whether in tort (including negligence), contract, or otherwise, - unless required by applicable law (such as deliberate and grossly - negligent acts) or agreed to in writing, shall any Contributor be - liable to You for damages, including any direct, indirect, special, - incidental, or consequential damages of any character arising as a - result of this License or out of the use or inability to use the - Work (including but not limited to damages for loss of goodwill, - work stoppage, computer failure or malfunction, or any and all - other commercial damages or losses), even if such Contributor - has been advised of the possibility of such damages. - - 9. Accepting Warranty or Additional Liability. While redistributing - the Work or Derivative Works thereof, You may choose to offer, - and charge a fee for, acceptance of support, warranty, indemnity, - or other liability obligations and/or rights consistent with this - License. However, in accepting such obligations, You may act only - on Your own behalf and on Your sole responsibility, not on behalf - of any other Contributor, and only if You agree to indemnify, - defend, and hold each Contributor harmless for any liability - incurred by, or claims asserted against, such Contributor by reason - of your accepting any such warranty or additional liability. - - END OF TERMS AND CONDITIONS - - APPENDIX: How to apply the Apache License to your work. - - To apply the Apache License to your work, attach the following - boilerplate notice, with the fields enclosed by brackets "[]" - replaced with your own identifying information. (Don't include - the brackets!) The text should be enclosed in the appropriate - comment syntax for the file format. We also recommend that a - file or class name and description of purpose be included on the - same "printed page" as the copyright notice for easier - identification within third-party archives. - - Copyright [yyyy] [name of copyright owner] - - Licensed under the Apache License, Version 2.0 (the "License"); - you may not use this file except in compliance with the License. - You may obtain a copy of the License at - - http://www.apache.org/licenses/LICENSE-2.0 - - Unless required by applicable law or agreed to in writing, software - distributed under the License is distributed on an "AS IS" BASIS, - WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - See the License for the specific language governing permissions and - limitations under the License. - - - -APACHE PORTABLE RUNTIME SUBCOMPONENTS: - -The Apache Portable Runtime includes a number of subcomponents with -separate copyright notices and license terms. Your use of the source -code for the these subcomponents is subject to the terms and -conditions of the following licenses. - -For the include\apr_md5.h component: -/* - * This is work is derived from material Copyright RSA Data Security, Inc. - * - * The RSA copyright statement and Licence for that original material is - * included below. This is followed by the Apache copyright statement and - * licence for the modifications made to that material. - */ - -/* Copyright (C) 1991-2, RSA Data Security, Inc. Created 1991. All - rights reserved. - - License to copy and use this software is granted provided that it - is identified as the "RSA Data Security, Inc. MD5 Message-Digest - Algorithm" in all material mentioning or referencing this software - or this function. - - License is also granted to make and use derivative works provided - that such works are identified as "derived from the RSA Data - Security, Inc. MD5 Message-Digest Algorithm" in all material - mentioning or referencing the derived work. - - RSA Data Security, Inc. makes no representations concerning either - the merchantability of this software or the suitability of this - software for any particular purpose. It is provided "as is" - without express or implied warranty of any kind. - - These notices must be retained in any copies of any part of this - documentation and/or software. - */ - -For the passwd\apr_md5.c component: - -/* - * This is work is derived from material Copyright RSA Data Security, Inc. - * - * The RSA copyright statement and Licence for that original material is - * included below. This is followed by the Apache copyright statement and - * licence for the modifications made to that material. - */ - -/* MD5C.C - RSA Data Security, Inc., MD5 message-digest algorithm - */ - -/* Copyright (C) 1991-2, RSA Data Security, Inc. Created 1991. All - rights reserved. - - License to copy and use this software is granted provided that it - is identified as the "RSA Data Security, Inc. MD5 Message-Digest - Algorithm" in all material mentioning or referencing this software - or this function. - - License is also granted to make and use derivative works provided - that such works are identified as "derived from the RSA Data - Security, Inc. MD5 Message-Digest Algorithm" in all material - mentioning or referencing the derived work. - - RSA Data Security, Inc. makes no representations concerning either - the merchantability of this software or the suitability of this - software for any particular purpose. It is provided "as is" - without express or implied warranty of any kind. - - These notices must be retained in any copies of any part of this - documentation and/or software. - */ -/* - * The apr_md5_encode() routine uses much code obtained from the FreeBSD 3.0 - * MD5 crypt() function, which is licenced as follows: - * ---------------------------------------------------------------------------- - * "THE BEER-WARE LICENSE" (Revision 42): - * wrote this file. As long as you retain this notice you - * can do whatever you want with this stuff. If we meet some day, and you think - * this stuff is worth it, you can buy me a beer in return. Poul-Henning Kamp - * ---------------------------------------------------------------------------- - */ - -For the crypto\apr_md4.c component: - - * This is derived from material copyright RSA Data Security, Inc. - * Their notice is reproduced below in its entirety. - * - * Copyright (C) 1991-2, RSA Data Security, Inc. Created 1991. All - * rights reserved. - * - * License to copy and use this software is granted provided that it - * is identified as the "RSA Data Security, Inc. MD4 Message-Digest - * Algorithm" in all material mentioning or referencing this software - * or this function. - * - * License is also granted to make and use derivative works provided - * that such works are identified as "derived from the RSA Data - * Security, Inc. MD4 Message-Digest Algorithm" in all material - * mentioning or referencing the derived work. - * - * RSA Data Security, Inc. makes no representations concerning either - * the merchantability of this software or the suitability of this - * software for any particular purpose. It is provided "as is" - * without express or implied warranty of any kind. - * - * These notices must be retained in any copies of any part of this - * documentation and/or software. - */ - -For the include\apr_md4.h component: - - * - * This is derived from material copyright RSA Data Security, Inc. - * Their notice is reproduced below in its entirety. - * - * Copyright (C) 1991-2, RSA Data Security, Inc. Created 1991. All - * rights reserved. - * - * License to copy and use this software is granted provided that it - * is identified as the "RSA Data Security, Inc. MD4 Message-Digest - * Algorithm" in all material mentioning or referencing this software - * or this function. - * - * License is also granted to make and use derivative works provided - * that such works are identified as "derived from the RSA Data - * Security, Inc. MD4 Message-Digest Algorithm" in all material - * mentioning or referencing the derived work. - * - * RSA Data Security, Inc. makes no representations concerning either - * the merchantability of this software or the suitability of this - * software for any particular purpose. It is provided "as is" - * without express or implied warranty of any kind. - * - * These notices must be retained in any copies of any part of this - * documentation and/or software. - */ - -For the test\testmd4.c component: - - * - * This is derived from material copyright RSA Data Security, Inc. - * Their notice is reproduced below in its entirety. - * - * Copyright (C) 1990-2, RSA Data Security, Inc. Created 1990. All - * rights reserved. - * - * RSA Data Security, Inc. makes no representations concerning either - * the merchantability of this software or the suitability of this - * software for any particular purpose. It is provided "as is" - * without express or implied warranty of any kind. - * - * These notices must be retained in any copies of any part of this - * documentation and/or software. - */ - -For the xml\expat\conftools\install-sh component: - -# -# install - install a program, script, or datafile -# This comes from X11R5 (mit/util/scripts/install.sh). -# -# Copyright 1991 by the Massachusetts Institute of Technology -# -# Permission to use, copy, modify, distribute, and sell this software and its -# documentation for any purpose is hereby granted without fee, provided that -# the above copyright notice appear in all copies and that both that -# copyright notice and this permission notice appear in supporting -# documentation, and that the name of M.I.T. not be used in advertising or -# publicity pertaining to distribution of the software without specific, -# written prior permission. M.I.T. makes no representations about the -# suitability of this software for any purpose. It is provided "as is" -# without express or implied warranty. -# - -For the expat xml parser component: - -Copyright (c) 1998, 1999, 2000 Thai Open Source Software Center Ltd - and Clark Cooper - -Permission is hereby granted, free of charge, to any person obtaining -a copy of this software and associated documentation files (the -"Software"), to deal in the Software without restriction, including -without limitation the rights to use, copy, modify, merge, publish, -distribute, sublicense, and/or sell copies of the Software, and to -permit persons to whom the Software is furnished to do so, subject to -the following conditions: - -The above copyright notice and this permission notice shall be included -in all copies or substantial portions of the Software. - -THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, -EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF -MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. -IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY -CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, -TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE -SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. - -==================================================================== diff --git a/libs/apr-util/Makefile.in b/libs/apr-util/Makefile.in deleted file mode 100644 index c33574ed209..00000000000 --- a/libs/apr-util/Makefile.in +++ /dev/null @@ -1,91 +0,0 @@ -# -# Top-level Makefile for APRUTIL -# -CPP = @CPP@ - -# gets substituted into some targets -APRUTIL_MAJOR_VERSION=@APRUTIL_MAJOR_VERSION@ -APRUTIL_DOTTED_VERSION=@APRUTIL_DOTTED_VERSION@ - -srcdir = @srcdir@ -VPATH = @srcdir@ - -INCLUDES = @APRUTIL_PRIV_INCLUDES@ @APR_INCLUDES@ @APRUTIL_INCLUDES@ -APRUTIL_LDFLAGS = @APRUTIL_LDFLAGS@ -APRUTIL_LIBS = @APRUTIL_LIBS@ - -TARGET_LIB = lib@APRUTIL_LIBNAME@.la -INSTALL_SUBDIRS = @APR_ICONV_DIR@ @APR_XML_DIR@ -EXTRA_SOURCE_DIRS = @APR_ICONV_DIR@ @APR_XML_DIR@ -APRUTIL_PCFILE = apr-util-$(APRUTIL_MAJOR_VERSION).pc -APU_CONFIG = apu-$(APRUTIL_MAJOR_VERSION)-config -INSTALL = @INSTALL@ -INSTALL_DATA = @INSTALL_DATA@ - -TARGETS = $(TARGET_LIB) aprutil.exp - -# bring in rules.mk for standard functionality -@INCLUDE_RULES@ -@INCLUDE_OUTPUTS@ - -CLEAN_SUBDIRS = test @APR_ICONV_DIR@ - -CLEAN_TARGETS = exports.c export_vars.c aprutil.exp .make.dirs apu-config.out -DISTCLEAN_TARGETS = config.cache config.log config.status libtool \ - include/private/apu_config.h include/private/apu_private.h \ - include/private/apu_select_dbm.h include/apr_ldap.h include/apu.h \ - export_vars.sh $(APU_CONFIG) build/rules.mk include/apu_want.h \ - apr-util.pc build/pkg/pkginfo -EXTRACLEAN_TARGETS = configure aclocal.m4 include/private/apu_config.h.in \ - exports.c build-outputs.mk \ - build/apr_common.m4 build/find_apr.m4 build/install.sh \ - build/config.guess build/config.sub - -prefix=@prefix@ -exec_prefix=@exec_prefix@ -bindir=@bindir@ -libdir=@libdir@ -includedir=@includedir@ -top_srcdir=@abs_srcdir@ -top_blddir=@abs_builddir@ - -# Create apu-config script suitable for the install tree -apu-config.out: $(APU_CONFIG) - sed 's,^\(location=\).*$$,\1installed,' < $(APU_CONFIG) > $@ - -install: $(TARGET_LIB) apu-config.out - $(APR_MKDIR) $(DESTDIR)$(includedir) $(DESTDIR)$(libdir)/pkgconfig \ - $(DESTDIR)$(libdir) $(DESTDIR)$(bindir) - for f in $(top_srcdir)/include/*.h $(top_blddir)/include/*.h; do \ - $(INSTALL_DATA) $${f} $(DESTDIR)$(includedir); \ - done - $(INSTALL_DATA) apr-util.pc $(DESTDIR)$(libdir)/pkgconfig/$(APRUTIL_PCFILE) - list='$(INSTALL_SUBDIRS)'; for i in $$list; do \ - ( cd $$i ; $(MAKE) DESTDIR=$(DESTDIR) install ); \ - done - $(LIBTOOL) --mode=install $(INSTALL) -m 755 $(TARGET_LIB) $(DESTDIR)$(libdir) - $(INSTALL_DATA) aprutil.exp $(DESTDIR)$(libdir) - $(INSTALL) -m 755 apu-config.out $(DESTDIR)$(bindir)/$(APU_CONFIG) - -$(TARGET_LIB): $(OBJECTS) - $(LINK) @lib_target@ $(ALL_LIBS) $(APRUTIL_LDFLAGS) $(APRUTIL_LIBS) - -exports.c: $(HEADERS) - $(APR_MKEXPORT) $(HEADERS) > $@ - -export_vars.c: $(HEADERS) - $(APR_MKVAREXPORT) $(HEADERS) > $@ - -aprutil.exp: exports.c export_vars.c - @echo "#! lib@APRUTIL_LIBNAME@.so" > $@ - @echo "* This file was AUTOGENERATED at build time." >> $@ - @echo "* Please do not edit by hand." >> $@ - $(CPP) $(ALL_CPPFLAGS) $(ALL_INCLUDES) exports.c | grep "ap_hack_" | sed -e 's/^.*[)]\(.*\);$$/\1/' >> $@ - $(CPP) $(ALL_CPPFLAGS) $(ALL_INCLUDES) export_vars.c | sed -e 's/^\#[^!]*//' | sed -e '/^$$/d' >> $@ - -dox: - doxygen $(top_srcdir)/docs/doxygen.conf - -test: check -check: $(TARGET_LIB) - cd test && $(MAKE) check diff --git a/libs/apr-util/NOTICE b/libs/apr-util/NOTICE deleted file mode 100644 index 9ccc9d7974a..00000000000 --- a/libs/apr-util/NOTICE +++ /dev/null @@ -1,11 +0,0 @@ -This product includes software developed by -The Apache Software Foundation (http://www.apache.org/). - -Portions of this software were developed at the National Center -for Supercomputing Applications (NCSA) at the University of -Illinois at Urbana-Champaign. - -This software contains code derived from the RSA Data Security -Inc. MD5 Message-Digest Algorithm, including various -modifications by Spyglass Inc., Carnegie Mellon University, and -Bell Communications Research, Inc (Bellcore). diff --git a/libs/apr-util/NWGNUmakefile b/libs/apr-util/NWGNUmakefile deleted file mode 100644 index db72b276033..00000000000 --- a/libs/apr-util/NWGNUmakefile +++ /dev/null @@ -1,292 +0,0 @@ -# -# Declare the sub-directories to be built here -# - -SUBDIRS = \ - ldap \ - xml \ - $(EOLIST) - -# -# Get the 'head' of the build environment. This includes default targets and -# paths to tools -# - -include $(APR_WORK)\build\NWGNUhead.inc - -# -# Make sure all needed macro's are defined -# - -# -# These directories will be at the beginning of the include list, followed by -# INCDIRS -# -XINCDIRS += \ - $(APR)/include \ - $(APR)/include/arch/NetWare \ - $(APRUTIL)/include \ - $(APRUTIL)/uri \ - $(APRUTIL)/dbm/sdbm \ - $(APRUTIL)/include/private \ - $(APRUTIL)/xml/expat/lib \ - $(LDAPSDK)/inc \ - $(EOLIST) - -# -# These flags will come after CFLAGS -# -XCFLAGS += \ - $(EOLIST) - -# -# These defines will come after DEFINES -# -XDEFINES += \ - $(EOLIST) - -# -# These flags will be added to the link.opt file -# -XLFLAGS += \ - $(EOLIST) - -# -# These values will be appended to the correct variables based on the value of -# RELEASE -# -ifeq "$(RELEASE)" "debug" -XINCDIRS += \ - $(EOLIST) - -XCFLAGS += \ - $(EOLIST) - -XDEFINES += \ - $(EOLIST) - -XLFLAGS += \ - $(EOLIST) -endif - -ifeq "$(RELEASE)" "noopt" -XINCDIRS += \ - $(EOLIST) - -XCFLAGS += \ - $(EOLIST) - -XDEFINES += \ - $(EOLIST) - -XLFLAGS += \ - $(EOLIST) -endif - -ifeq "$(RELEASE)" "release" -XINCDIRS += \ - $(EOLIST) - -XCFLAGS += \ - $(EOLIST) - -XDEFINES += \ - $(EOLIST) - -XLFLAGS += \ - $(EOLIST) -endif - -# -# These are used by the link target if an NLM is being generated -# This is used by the link 'name' directive to name the nlm. If left blank -# TARGET_nlm (see below) will be used. -# -NLM_NAME = - -# -# This is used by the link '-desc ' directive. -# If left blank, NLM_NAME will be used. -# -NLM_DESCRIPTION = - -# -# This is used by the '-threadname' directive. If left blank, -# NLM_NAME Thread will be used. -# -NLM_THREAD_NAME = -# -# If this is specified, it will override VERSION value in -# $(APR_WORK)\build\NWGNUenvironment.inc -# -NLM_VERSION = - -# -# If this is specified, it will override the default of 64K -# -NLM_STACK_SIZE = - -# -# If this is specified it will be used by the link '-entry' directive -# -NLM_ENTRY_SYM = - -# -# If this is specified it will be used by the link '-exit' directive -# -NLM_EXIT_SYM = - -# -# If this is specified it will be used by the link '-check' directive -# -NLM_CHECK_SYM = - -# -# If this is specified it will be used by the link '-flags' directive -# -NLM_FLAGS = - -# -# If this is specified it will be linked in with the XDCData option in the def -# file instead of the default of $(APR)/misc/netware/apache.xdc. XDCData can -# be disabled by setting APACHE_UNIPROC in the environment -# -XDCDATA = - -# -# Declare all target files (you must add your files here) -# - -# -# If there is an NLM target, put it here -# -TARGET_nlm = \ - $(EOLIST) - -# -# If there is an LIB target, put it here -# -TARGET_lib = \ - $(OBJDIR)/aprutil.lib \ - $(EOLIST) - -# -# These are the OBJ files needed to create the NLM target above. -# Paths must all use the '/' character -# -FILES_nlm_objs = \ - $(EOLIST) - -# -# These are the LIB files needed to create the NLM target above. -# These will be added as a library command in the link.opt file. -# -FILES_nlm_libs = \ - $(EOLIST) - -# -# These are the modules that the above NLM target depends on to load. -# These will be added as a module command in the link.opt file. -# -FILES_nlm_modules = \ - $(EOLIST) - -# -# If the nlm has a msg file, put it's path here -# -FILE_nlm_msg = - -# -# If the nlm has a hlp file put it's path here -# -FILE_nlm_hlp = - -# -# If this is specified, it will override $(NWOS)\copyright.txt. -# -FILE_nlm_copyright = - -# -# Any additional imports go here -# -FILES_nlm_Ximports = \ - $(EOLIST) - -# -# Any symbols exported to here -# -FILES_nlm_exports = \ - $(EOLIST) - -# -# These are the OBJ files needed to create the LIB target above. -# Paths must all use the '/' character -# -FILES_lib_objs = \ - $(OBJDIR)/apr_base64.o \ - $(OBJDIR)/apr_brigade.o \ - $(OBJDIR)/apr_buckets.o \ - $(OBJDIR)/apr_buckets_alloc.o \ - $(OBJDIR)/apr_buckets_eos.o \ - $(OBJDIR)/apr_buckets_file.o \ - $(OBJDIR)/apr_buckets_flush.o \ - $(OBJDIR)/apr_buckets_heap.o \ - $(OBJDIR)/apr_buckets_mmap.o \ - $(OBJDIR)/apr_buckets_pipe.o \ - $(OBJDIR)/apr_buckets_pool.o \ - $(OBJDIR)/apr_buckets_refcount.o \ - $(OBJDIR)/apr_buckets_simple.o \ - $(OBJDIR)/apr_buckets_socket.o \ - $(OBJDIR)/apr_date.o \ - $(OBJDIR)/apr_dbm.o \ - $(OBJDIR)/apr_dbd.o \ - $(OBJDIR)/apr_dbd_pgsql.o \ - $(OBJDIR)/apr_dbm_berkeleydb.o \ - $(OBJDIR)/apr_dbm_sdbm.o \ - $(OBJDIR)/apr_hooks.o \ - $(OBJDIR)/apr_md4.o \ - $(OBJDIR)/apr_md5.o \ - $(OBJDIR)/apr_queue.o \ - $(OBJDIR)/apr_reslist.o \ - $(OBJDIR)/apr_rmm.o \ - $(OBJDIR)/apr_sha1.o \ - $(OBJDIR)/apu_version.o \ - $(OBJDIR)/getuuid.o \ - $(OBJDIR)/uuid.o \ - $(OBJDIR)/apr_strmatch.o \ - $(OBJDIR)/apr_uri.o \ - $(OBJDIR)/sdbm.o \ - $(OBJDIR)/sdbm_hash.o \ - $(OBJDIR)/sdbm_lock.o \ - $(OBJDIR)/sdbm_pair.o \ - $(OBJDIR)/xlate.o \ - $(EOLIST) - -# -# implement targets and dependancies (leave this section alone) -# - -libs :: $(OBJDIR) $(TARGET_lib) - -nlms :: libs $(TARGET_nlm) - -# -# Updated this target to create necessary directories and copy files to the -# correct place. (See $(APR_WORK)\build\NWGNUhead.inc for examples) -# -install :: nlms FORCE - -# -# Any specialized rules here -# - -vpath %.c buckets:crypto:dbd:dbm:dbm/sdbm:encoding:hooks:ldap:misc:strmatch:uri:xlate:xml - -# -# Include the 'tail' makefile that has targets that depend on variables defined -# in this makefile -# - -include $(APR_WORK)\build\NWGNUtail.inc - - diff --git a/libs/apr-util/apr-util.pc.in b/libs/apr-util/apr-util.pc.in deleted file mode 100644 index 9e3cda6a3ce..00000000000 --- a/libs/apr-util/apr-util.pc.in +++ /dev/null @@ -1,13 +0,0 @@ -prefix=@prefix@ -exec_prefix=@exec_prefix@ -libdir=@libdir@ -APRUTIL_MAJOR_VERSION=@APRUTIL_MAJOR_VERSION@ -includedir=@includedir@ - -Name: APR Utils -Description: Companion library for APR -Version: @APRUTIL_DOTTED_VERSION@ -# assume that apr-util requires libapr of same major version -Requires: apr-@APRUTIL_MAJOR_VERSION@ -Libs: -L${libdir} -l@APRUTIL_LIBNAME@ @APRUTIL_EXPORT_LIBS@ -Cflags: -I${includedir} diff --git a/libs/apr-util/apr-util.spec b/libs/apr-util/apr-util.spec deleted file mode 100644 index f7f387f3bb5..00000000000 --- a/libs/apr-util/apr-util.spec +++ /dev/null @@ -1,89 +0,0 @@ - -%define apuver 1 - -Summary: Apache Portable Runtime Utility library -Name: apr-util -Version: 1.2.8 -Release: 1 -License: Apache Software License -Group: System Environment/Libraries -URL: http://apr.apache.org/ -Source0: %{name}-%{version}.tar.gz -BuildRoot: %{_tmppath}/%{name}-%{version}-%{release}-buildroot -BuildPrereq: autoconf, libtool, doxygen, apr-devel >= 0:{version}-{release} -BuildPrereq: openldap-devel, db4-devel, expat-devel -Conflicts: subversion < 0.20.1-2 - -%description -The mission of the Apache Portable Runtime (APR) is to provide a -free library of C data structures and routines. This library -contains additional utility interfaces for APR; including support -for XML, LDAP, database interfaces, URI parsing and more. - -%package devel -Group: Development/Libraries -Summary: APR utility library development kit -Requires: apr-util = %{version}-%{release}, apr-devel -Requires: openldap-devel, db4-devel, expat-devel -Conflicts: subversion-devel < 0.20.1-2 - -%description devel -This package provides the support files which can be used to -build applications using the APR utility library. The mission -of the Apache Portable Runtime (APR) is to provide a free -library of C data structures and routines. - -%prep -%setup -q - -%build -%configure --with-apr=%{_prefix} \ - --includedir=%{_includedir}/apr-%{apuver} \ - --with-ldap --without-gdbm -make %{?_smp_mflags} && make dox - -%check -# Run non-interactive tests -pushd test -make %{?_smp_mflags} testall CFLAGS=-fno-strict-aliasing -./testall -v || exit 1 -popd - -%install -rm -rf $RPM_BUILD_ROOT -make install DESTDIR=$RPM_BUILD_ROOT - -# Documentation -mv docs/dox/html html - -# Unpackaged files -rm -f $RPM_BUILD_ROOT%{_libdir}/aprutil.exp - -%clean -rm -rf $RPM_BUILD_ROOT - -%post -p /sbin/ldconfig - -%postun -p /sbin/ldconfig - -%files -%defattr(-,root,root,-) -%doc CHANGES LICENSE NOTICE -%{_libdir}/libaprutil-%{apuver}.so.* - -%files devel -%defattr(-,root,root,-) -%{_bindir}/apu-%{apuver}-config -%{_libdir}/libaprutil-%{apuver}.*a -%{_libdir}/libaprutil-%{apuver}.so -%{_libdir}/pkgconfig/apr-util-%{apuver}.pc -%{_includedir}/apr-%{apuver}/*.h -%doc --parents html - -%changelog -* Tue Jun 22 2004 Graham Leggett 1.0.0-1 -- update to support v1.0.0 of APR - -* Tue Jun 22 2004 Graham Leggett 1.0.0-1 -- derived from Fedora Core apr.spec - diff --git a/libs/apr-util/aprutil.dsp b/libs/apr-util/aprutil.dsp deleted file mode 100644 index efa1f8239d5..00000000000 --- a/libs/apr-util/aprutil.dsp +++ /dev/null @@ -1,587 +0,0 @@ -# Microsoft Developer Studio Project File - Name="aprutil" - Package Owner=<4> -# Microsoft Developer Studio Generated Build File, Format Version 6.00 -# ** DO NOT EDIT ** - -# TARGTYPE "Win32 (x86) Static Library" 0x0104 - -CFG=aprutil - Win32 Debug -!MESSAGE This is not a valid makefile. To build this project using NMAKE, -!MESSAGE use the Export Makefile command and run -!MESSAGE -!MESSAGE NMAKE /f "aprutil.mak". -!MESSAGE -!MESSAGE You can specify a configuration when running NMAKE -!MESSAGE by defining the macro CFG on the command line. For example: -!MESSAGE -!MESSAGE NMAKE /f "aprutil.mak" CFG="aprutil - Win32 Debug" -!MESSAGE -!MESSAGE Possible choices for configuration are: -!MESSAGE -!MESSAGE "aprutil - Win32 Release" (based on "Win32 (x86) Static Library") -!MESSAGE "aprutil - Win32 Debug" (based on "Win32 (x86) Static Library") -!MESSAGE - -# Begin Project -# PROP AllowPerConfigDependencies 0 -# PROP Scc_ProjName "" -# PROP Scc_LocalPath "" -CPP=cl.exe -RSC=rc.exe - -!IF "$(CFG)" == "aprutil - Win32 Release" - -# PROP BASE Use_MFC 0 -# PROP BASE Use_Debug_Libraries 0 -# PROP BASE Output_Dir "LibR" -# PROP BASE Intermediate_Dir "LibR" -# PROP BASE Target_Dir "" -# PROP Use_MFC 0 -# PROP Use_Debug_Libraries 0 -# PROP Output_Dir "LibR" -# PROP Intermediate_Dir "LibR" -# PROP Target_Dir "" -# ADD BASE CPP /nologo /MD /W3 /O2 /D "WIN32" /D "NDEBUG" /D "_WINDOWS" /FD /c -# ADD CPP /nologo /MD /W3 /O2 /Oy- /Zi /I "./include" /I "../apr/include" /I "./include/private" /I "../apr-iconv/include" /I "./dbm/sdbm" /I "./xml/expat/lib" /D "NDEBUG" /D "APR_DECLARE_STATIC" /D "APU_DECLARE_STATIC" /D "API_DECLARE_STATIC" /D "APU_USE_SDBM" /D "XML_STATIC" /D "WIN32" /D "_WINDOWS" /Fd"LibR\aprutil_src" /FD /c -# ADD BASE RSC /l 0x409 /d "NDEBUG" -# ADD RSC /l 0x409 /d "NDEBUG" -BSC32=bscmake.exe -# ADD BASE BSC32 /nologo -# ADD BSC32 /nologo -LIB32=link.exe -lib -# ADD BASE LIB32 /nologo -# ADD LIB32 /nologo /out:"LibR\aprutil-1.lib" - -!ELSEIF "$(CFG)" == "aprutil - Win32 Debug" - -# PROP BASE Use_MFC 0 -# PROP BASE Use_Debug_Libraries 1 -# PROP BASE Output_Dir "LibD" -# PROP BASE Intermediate_Dir "LibD" -# PROP BASE Target_Dir "" -# PROP Use_MFC 0 -# PROP Use_Debug_Libraries 1 -# PROP Output_Dir "LibD" -# PROP Intermediate_Dir "LibD" -# PROP Ignore_Export_Lib 0 -# PROP Target_Dir "" -# ADD BASE CPP /nologo /MDd /W3 /EHsc /Zi /Od /D "WIN32" /D "_DEBUG" /D "_WINDOWS" /FD /c -# ADD CPP /nologo /MDd /W3 /EHsc /Zi /Od /I "./include" /I "../apr/include" /I "./include/private" /I "../apr-iconv/include" /I "./dbm/sdbm" /I "./xml/expat/lib" /D "_DEBUG" /D "APR_DECLARE_STATIC" /D "APU_DECLARE_STATIC" /D "API_DECLARE_STATIC" /D "APU_USE_SDBM" /D "XML_STATIC" /D "WIN32" /D "_WINDOWS" /Fd"LibD\aprutil_src" /FD /c -# ADD BASE RSC /l 0x409 /d "_DEBUG" -# ADD RSC /l 0x409 /d "_DEBUG" -BSC32=bscmake.exe -# ADD BASE BSC32 /nologo -# ADD BSC32 /nologo -LIB32=link.exe -lib -# ADD BASE LIB32 /nologo -# ADD LIB32 /nologo /out:"LibD\aprutil-1.lib" - -!ENDIF - -# Begin Target - -# Name "aprutil - Win32 Release" -# Name "aprutil - Win32 Debug" -# Begin Group "Source Files" - -# PROP Default_Filter "" -# Begin Group "buckets" - -# PROP Default_Filter "" -# Begin Source File - -SOURCE=.\buckets\apr_brigade.c -# End Source File -# Begin Source File - -SOURCE=.\buckets\apr_buckets.c -# End Source File -# Begin Source File - -SOURCE=.\buckets\apr_buckets_alloc.c -# End Source File -# Begin Source File - -SOURCE=.\buckets\apr_buckets_eos.c -# End Source File -# Begin Source File - -SOURCE=.\buckets\apr_buckets_file.c -# End Source File -# Begin Source File - -SOURCE=.\buckets\apr_buckets_flush.c -# End Source File -# Begin Source File - -SOURCE=.\buckets\apr_buckets_heap.c -# End Source File -# Begin Source File - -SOURCE=.\buckets\apr_buckets_mmap.c -# End Source File -# Begin Source File - -SOURCE=.\buckets\apr_buckets_pipe.c -# End Source File -# Begin Source File - -SOURCE=.\buckets\apr_buckets_pool.c -# End Source File -# Begin Source File - -SOURCE=.\buckets\apr_buckets_refcount.c -# End Source File -# Begin Source File - -SOURCE=.\buckets\apr_buckets_simple.c -# End Source File -# Begin Source File - -SOURCE=.\buckets\apr_buckets_socket.c -# End Source File -# End Group -# Begin Group "crypto" - -# PROP Default_Filter "" -# Begin Source File - -SOURCE=.\crypto\apr_md4.c -# End Source File -# Begin Source File - -SOURCE=.\crypto\apr_md5.c -# End Source File -# Begin Source File - -SOURCE=.\crypto\apr_sha1.c -# End Source File -# Begin Source File - -SOURCE=.\crypto\getuuid.c -# End Source File -# Begin Source File - -SOURCE=.\crypto\uuid.c -# End Source File -# End Group -# Begin Group "dbd" -# PROP Default_Filter "" -# Begin Source File - -SOURCE=.\dbd\apr_dbd.c -# End Source File -# Begin Source File - -SOURCE=.\dbd\apr_dbd_pgsql.c -# End Source File -# Begin Source File - -SOURCE=.\dbd\apr_dbd_sqlite2.c -# End Source File -# Begin Source File - -SOURCE=.\dbd\apr_dbd_sqlite3.c -# End Source File -# End Group -# Begin Group "dbm" - -# PROP Default_Filter "" -# Begin Source File - -SOURCE=.\dbm\apr_dbm.c -# End Source File -# Begin Source File - -SOURCE=.\dbm\apr_dbm_berkeleydb.c -# End Source File -# Begin Source File - -SOURCE=.\dbm\apr_dbm_gdbm.c -# End Source File -# Begin Source File - -SOURCE=.\dbm\apr_dbm_sdbm.c -# End Source File -# End Group -# Begin Group "encoding" - -# PROP Default_Filter "" -# Begin Source File - -SOURCE=.\encoding\apr_base64.c -# End Source File -# End Group -# Begin Group "hooks" - -# PROP Default_Filter "" -# Begin Source File - -SOURCE=.\hooks\apr_hooks.c -# End Source File -# End Group -# Begin Group "ldap" - -# PROP Default_Filter "" -# Begin Source File - -SOURCE=.\ldap\apr_ldap_init.c -# End Source File -# Begin Source File - -SOURCE=.\ldap\apr_ldap_url.c -# End Source File -# Begin Source File - -SOURCE=.\ldap\apr_ldap_option.c -# End Source File -# End Group -# Begin Group "misc" - -# PROP Default_Filter "" -# Begin Source File - -SOURCE=.\misc\apr_date.c -# End Source File -# Begin Source File - -SOURCE=.\misc\apr_queue.c -# End Source File -# Begin Source File - -SOURCE=.\misc\apr_reslist.c -# End Source File -# Begin Source File - -SOURCE=.\misc\apr_rmm.c -# End Source File -# Begin Source File - -SOURCE=.\misc\apu_version.c -# End Source File -# End Group -# Begin Group "sdbm" - -# PROP Default_Filter "" -# Begin Source File - -SOURCE=.\dbm\sdbm\sdbm.c -# End Source File -# Begin Source File - -SOURCE=.\dbm\sdbm\sdbm_hash.c -# End Source File -# Begin Source File - -SOURCE=.\dbm\sdbm\sdbm_lock.c -# End Source File -# Begin Source File - -SOURCE=.\dbm\sdbm\sdbm_pair.c -# End Source File -# Begin Source File - -SOURCE=.\dbm\sdbm\sdbm_pair.h -# End Source File -# Begin Source File - -SOURCE=.\dbm\sdbm\sdbm_private.h -# End Source File -# Begin Source File - -SOURCE=.\dbm\sdbm\sdbm_tune.h -# End Source File -# End Group -# Begin Group "strmatch" - -# PROP Default_Filter "" -# Begin Source File - -SOURCE=.\strmatch\apr_strmatch.c -# End Source File -# End Group -# Begin Group "uri" - -# PROP Default_Filter "" -# Begin Source File - -SOURCE=.\uri\apr_uri.c -# End Source File -# End Group -# Begin Group "xlate" - -# PROP Default_Filter "" -# Begin Source File - -SOURCE=.\xlate\xlate.c -# End Source File -# End Group -# Begin Group "xml" - -# PROP Default_Filter "" -# Begin Source File - -SOURCE=.\xml\apr_xml.c -# End Source File -# End Group -# End Group -# Begin Group "Generated Files" - -# PROP Default_Filter "" -# Begin Source File - -SOURCE=.\include\apr_ldap.h.in -# End Source File -# Begin Source File - -SOURCE=.\include\apr_ldap.hnw -# End Source File -# Begin Source File - -SOURCE=.\include\apr_ldap.hw - -!IF "$(CFG)" == "aprutil - Win32 Release" - -# Begin Custom Build - Creating apr_ldap.h from apr_ldap.hw -InputPath=.\include\apr_ldap.hw - -".\include\apr_ldap.h" : $(SOURCE) "$(INTDIR)" "$(OUTDIR)" - type .\include\apr_ldap.hw > .\include\apr_ldap.h - -# End Custom Build - -!ELSEIF "$(CFG)" == "aprutil - Win32 Debug" - -# Begin Custom Build - Creating apr_ldap.h from apr_ldap.hw -InputPath=.\include\apr_ldap.hw - -".\include\apr_ldap.h" : $(SOURCE) "$(INTDIR)" "$(OUTDIR)" - type .\include\apr_ldap.hw > .\include\apr_ldap.h - -# End Custom Build - -!ENDIF - -# End Source File -# Begin Source File - -SOURCE=.\include\apu.h.in -# End Source File -# Begin Source File - -SOURCE=.\include\apu.hnw -# End Source File -# Begin Source File - -SOURCE=.\include\apu.hw - -!IF "$(CFG)" == "aprutil - Win32 Release" - -# Begin Custom Build - Creating apu.h from apu.hw -InputPath=.\include\apu.hw - -".\include\apu.h" : $(SOURCE) "$(INTDIR)" "$(OUTDIR)" - type .\include\apu.hw > .\include\apu.h - -# End Custom Build - -!ELSEIF "$(CFG)" == "aprutil - Win32 Debug" - -# Begin Custom Build - Creating apu.h from apu.hw -InputPath=.\include\apu.hw - -".\include\apu.h" : $(SOURCE) "$(INTDIR)" "$(OUTDIR)" - type .\include\apu.hw > .\include\apu.h - -# End Custom Build - -!ENDIF - -# End Source File -# Begin Source File - -SOURCE=.\include\private\apu_config.h.in -# End Source File -# Begin Source File - -SOURCE=.\include\private\apu_config.hw - -!IF "$(CFG)" == "aprutil - Win32 Release" - -# Begin Custom Build - Creating apu_config.h from apu_config.hw -InputPath=.\include\private\apu_config.hw - -".\include\private\apu_config.h" : $(SOURCE) "$(INTDIR)" "$(OUTDIR)" - type .\include\private\apu_config.hw > .\include\private\apu_config.h - -# End Custom Build - -!ELSEIF "$(CFG)" == "aprutil - Win32 Debug" - -# Begin Custom Build - Creating apu_config.h from apu_config.hw -InputPath=.\include\private\apu_config.hw - -".\include\private\apu_config.h" : $(SOURCE) "$(INTDIR)" "$(OUTDIR)" - type .\include\private\apu_config.hw > .\include\private\apu_config.h - -# End Custom Build - -!ENDIF - -# End Source File -# Begin Source File - -SOURCE=.\include\private\apu_select_dbm.h.in -# End Source File -# Begin Source File - -SOURCE=.\include\private\apu_select_dbm.hw - -!IF "$(CFG)" == "aprutil - Win32 Release" - -# Begin Custom Build - Creating apu_select_dbm.h from apu_select_dbm.hw -InputPath=.\include\private\apu_select_dbm.hw - -".\include\private\apu_select_dbm.h" : $(SOURCE) "$(INTDIR)" "$(OUTDIR)" - type .\include\private\apu_select_dbm.hw > .\include\private\apu_select_dbm.h - -# End Custom Build - -!ELSEIF "$(CFG)" == "aprutil - Win32 Debug" - -# Begin Custom Build - Creating apu_select_dbm.h from apu_select_dbm.hw -InputPath=.\include\private\apu_select_dbm.hw - -".\include\private\apu_select_dbm.h" : $(SOURCE) "$(INTDIR)" "$(OUTDIR)" - type .\include\private\apu_select_dbm.hw > .\include\private\apu_select_dbm.h - -# End Custom Build - -!ENDIF - -# End Source File -# Begin Source File - -SOURCE=.\include\apu_want.h.in -# End Source File -# Begin Source File - -SOURCE=.\include\apu_want.hnw -# End Source File -# Begin Source File - -SOURCE=.\include\apu_want.hw - -!IF "$(CFG)" == "aprutil - Win32 Release" - -# Begin Custom Build - Creating apu_want.h from apu_want.hw -InputPath=.\include\apu_want.hw - -".\include\apu_want.h" : $(SOURCE) "$(INTDIR)" "$(OUTDIR)" - type .\include\apu_want.hw > .\include\apu_want.h - -# End Custom Build - -!ELSEIF "$(CFG)" == "aprutil - Win32 Debug" - -# Begin Custom Build - Creating apu_want.h from apu_want.hw -InputPath=.\include\apu_want.hw - -".\include\apu_want.h" : $(SOURCE) "$(INTDIR)" "$(OUTDIR)" - type .\include\apu_want.hw > .\include\apu_want.h - -# End Custom Build - -!ENDIF - -# End Source File -# End Group -# Begin Group "Public Header Files" - -# PROP Default_Filter "" -# Begin Source File - -SOURCE=.\include\apr_anylock.h -# End Source File -# Begin Source File - -SOURCE=.\include\apr_base64.h -# End Source File -# Begin Source File - -SOURCE=.\include\apr_buckets.h -# End Source File -# Begin Source File - -SOURCE=.\include\apr_date.h -# End Source File -# Begin Source File - -SOURCE=.\include\apr_dbm.h -# End Source File -# Begin Source File - -SOURCE=.\include\apr_hooks.h -# End Source File -# Begin Source File - -SOURCE=.\include\apr_ldap_url.h -# End Source File -# Begin Source File - -SOURCE=.\include\apr_md4.h -# End Source File -# Begin Source File - -SOURCE=.\include\apr_md5.h -# End Source File -# Begin Source File - -SOURCE=.\include\apr_optional.h -# End Source File -# Begin Source File - -SOURCE=.\include\apr_optional_hooks.h -# End Source File -# Begin Source File - -SOURCE=.\include\apr_queue.h -# End Source File -# Begin Source File - -SOURCE=.\include\apr_reslist.h -# End Source File -# Begin Source File - -SOURCE=.\include\apr_rmm.h -# End Source File -# Begin Source File - -SOURCE=.\include\apr_sdbm.h -# End Source File -# Begin Source File - -SOURCE=.\include\apr_sha1.h -# End Source File -# Begin Source File - -SOURCE=.\include\apr_strmatch.h -# End Source File -# Begin Source File - -SOURCE=.\include\apr_uri.h -# End Source File -# Begin Source File - -SOURCE=.\include\apr_uuid.h -# End Source File -# Begin Source File - -SOURCE=.\include\apr_xlate.h -# End Source File -# Begin Source File - -SOURCE=.\include\apr_xml.h -# End Source File -# End Group -# End Target -# End Project diff --git a/libs/apr-util/aprutil.dsw b/libs/apr-util/aprutil.dsw deleted file mode 100644 index 75352c29743..00000000000 --- a/libs/apr-util/aprutil.dsw +++ /dev/null @@ -1,161 +0,0 @@ -Microsoft Developer Studio Workspace File, Format Version 6.00 -# WARNING: DO NOT EDIT OR DELETE THIS WORKSPACE FILE! - -############################################################################### - -Project: "apr"="..\apr\apr.dsp" - Package Owner=<4> - -Package=<5> -{{{ -}}} - -Package=<4> -{{{ -}}} - -############################################################################### - -Project: "apriconv"="..\apr-iconv\apriconv.dsp" - Package Owner=<4> - -Package=<5> -{{{ -}}} - -Package=<4> -{{{ - Begin Project Dependency - Project_Dep_Name apr - End Project Dependency -}}} - -############################################################################### - -Project: "aprutil"=".\aprutil.dsp" - Package Owner=<4> - -Package=<5> -{{{ -}}} - -Package=<4> -{{{ - Begin Project Dependency - Project_Dep_Name apr - End Project Dependency - Begin Project Dependency - Project_Dep_Name xml - End Project Dependency - Begin Project Dependency - Project_Dep_Name apriconv - End Project Dependency -}}} - -############################################################################### - -Project: "libapr"="..\apr\libapr.dsp" - Package Owner=<4> - -Package=<5> -{{{ -}}} - -Package=<4> -{{{ -}}} - -############################################################################### - -Project: "libapriconv"="..\apr-iconv\libapriconv.dsp" - Package Owner=<4> - -Package=<5> -{{{ -}}} - -Package=<4> -{{{ - Begin Project Dependency - Project_Dep_Name libapr - End Project Dependency -}}} - -############################################################################### - -Project: "libapriconv_ccs_modules"="..\apr-iconv\ccs\libapriconv_ccs_modules.dsp" - Package Owner=<4> - -Package=<5> -{{{ -}}} - -Package=<4> -{{{ - Begin Project Dependency - Project_Dep_Name libapr - End Project Dependency - Begin Project Dependency - Project_Dep_Name libapriconv - End Project Dependency -}}} - -############################################################################### - -Project: "libapriconv_ces_modules"="..\apr-iconv\ces\libapriconv_ces_modules.dsp" - Package Owner=<4> - -Package=<5> -{{{ -}}} - -Package=<4> -{{{ - Begin Project Dependency - Project_Dep_Name libapr - End Project Dependency - Begin Project Dependency - Project_Dep_Name libapriconv - End Project Dependency -}}} - -############################################################################### - -Project: "libaprutil"=".\libaprutil.dsp" - Package Owner=<4> - -Package=<5> -{{{ -}}} - -Package=<4> -{{{ - Begin Project Dependency - Project_Dep_Name libapr - End Project Dependency - Begin Project Dependency - Project_Dep_Name xml - End Project Dependency - Begin Project Dependency - Project_Dep_Name libapriconv - End Project Dependency -}}} - -############################################################################### - -Project: "xml"=".\xml\expat\lib\xml.dsp" - Package Owner=<4> - -Package=<5> -{{{ -}}} - -Package=<4> -{{{ -}}} - -############################################################################### - -Global: - -Package=<5> -{{{ -}}} - -Package=<3> -{{{ -}}} - -############################################################################### - diff --git a/libs/apr-util/apu-config.in b/libs/apr-util/apu-config.in deleted file mode 100644 index b4d896e008b..00000000000 --- a/libs/apr-util/apu-config.in +++ /dev/null @@ -1,207 +0,0 @@ -#!/bin/sh -# Copyright 2001-2005 The Apache Software Foundation or its licensors, as -# applicable. -# -# Licensed under the Apache License, Version 2.0 (the "License"); -# you may not use this file except in compliance with the License. -# You may obtain a copy of the License at -# -# http://www.apache.org/licenses/LICENSE-2.0 -# -# Unless required by applicable law or agreed to in writing, software -# distributed under the License is distributed on an "AS IS" BASIS, -# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -# See the License for the specific language governing permissions and -# limitations under the License. -# - -# APR-util script designed to allow easy command line access to APR-util -# configuration parameters. - -APRUTIL_MAJOR_VERSION="@APRUTIL_MAJOR_VERSION@" -APRUTIL_DOTTED_VERSION="@APRUTIL_DOTTED_VERSION@" - -prefix="@prefix@" -exec_prefix="@exec_prefix@" -bindir="@bindir@" -libdir="@libdir@" -includedir="@includedir@" - -LIBS="@APRUTIL_EXPORT_LIBS@" -INCLUDES="@APRUTIL_INCLUDES@" -LDFLAGS="@APRUTIL_LDFLAGS@" - -APRUTIL_LIBNAME="@APRUTIL_LIBNAME@" - -APU_SOURCE_DIR="@abs_srcdir@" -APU_BUILD_DIR="@abs_builddir@" -APR_XML_EXPAT_OLD="@APR_XML_EXPAT_OLD@" -APU_DB_VERSION="@apu_db_version@" - -# NOTE: the following line is modified during 'make install': alter with care! -location=@APU_CONFIG_LOCATION@ - -show_usage() -{ - cat << EOF -Usage: apu-$APRUTIL_MAJOR_VERSION-config [OPTION] - -Known values for OPTION are: - --prefix[=DIR] change prefix to DIR - --bindir print location where binaries are installed - --includes print include information - --includedir print location where headers are installed - --ldflags print linker flags - --libs print library information - --srcdir print APR-util source directory - --link-ld print link switch(es) for linking to APR-util - --link-libtool print the libtool inputs for linking to APR-util - --apu-la-file print the path to the .la file, if available - --old-expat indicate if APR-util was built against an old expat - --db-version print the DB version - --version print APR-util's version as a dotted triple - --help print this help - -When linking with libtool, an application should do something like: - APU_LIBS="\`apu-$APRUTIL_MAJOR_VERSION-config --link-libtool --libs\`" -or when linking directly: - APU_LIBS="\`apu-$APRUTIL_MAJOR_VERSION-config --link-ld --libs\`" - -An application should use the results of --includes, and --ldflags in -their build process. -EOF -} - -if test $# -eq 0; then - show_usage - exit 1 -fi - -if test "$location" = "installed"; then - LA_FILE="$libdir/lib${APRUTIL_LIBNAME}.la" - - LIBS=`echo "$LIBS" | sed -e "s $APU_BUILD_DIR/xml/expat $prefix g" -e "s $prefix/lib/libexpat.la -lexpat g"` - LDFLAGS=`echo "$LDFLAGS" | sed -e "s $APU_BUILD_DIR/xml/expat $prefix g"` - INCLUDES=`echo "$INCLUDES" | sed -e "s $APU_BUILD_DIR/xml/expat $prefix g" -e "s -I$prefix/lib g"` -else - LA_FILE="$APU_BUILD_DIR/lib${APRUTIL_LIBNAME}.la" -fi - -flags="" - -while test $# -gt 0; do - # Normalize the prefix. - case "$1" in - -*=*) optarg=`echo "$1" | sed 's/[-_a-zA-Z0-9]*=//'` ;; - *) optarg= ;; - esac - - case "$1" in - # It is possible for the user to override our prefix. - --prefix=*) - prefix=$optarg - ;; - --prefix) - echo $prefix - exit 0 - ;; - --bindir) - echo $bindir - exit 0 - ;; - --libs) - flags="$flags $LIBS" - ;; - --includedir) - if test "$location" = "installed"; then - flags="$includedir" - elif test "$location" = "source"; then - flags="$APU_SOURCE_DIR/include" - else - # this is for VPATH builds - flags="$APU_BUILD_DIR/include $APU_SOURCE_DIR/include" - fi - echo $flags - exit 0 - ;; - --includes) - if test "$location" = "installed"; then - flags="$flags -I$includedir $INCLUDES" - elif test "$location" = "source"; then - flags="$flags -I$APU_SOURCE_DIR/include $INCLUDES" - else - # this is for VPATH builds - flags="$flags -I$APU_BUILD_DIR/include -I$APU_SOURCE_DIR/include $INCLUDES" - fi - ;; - --ldflags) - flags="$flags $LDFLAGS" - ;; - --srcdir) - echo $APU_SOURCE_DIR - exit 0 - ;; - --version) - echo $APRUTIL_DOTTED_VERSION - exit 0 - ;; - --link-ld) - if test "$location" = "installed"; then - ### avoid using -L if libdir is a "standard" location like /usr/lib - flags="$flags -L$libdir -l$APRUTIL_LIBNAME" - else - flags="$flags -L$APU_BUILD_DIR -l$APRUTIL_LIBNAME" - fi - ;; - --link-libtool) - # If the LA_FILE exists where we think it should be, use it. If we're - # installed and the LA_FILE does not exist, assume to use -L/-l - # (the LA_FILE may not have been installed). If we're building ourselves, - # we'll assume that at some point the .la file be created. - if test -f "$LA_FILE"; then - flags="$flags $LA_FILE" - elif test "$location" = "installed"; then - ### avoid using -L if libdir is a "standard" location like /usr/lib - # Since the user is specifying they are linking with libtool, we - # *know* that -R will be recognized by libtool. - flags="$flags -L$libdir -R$libdir -l$APRUTIL_LIBNAME" - else - flags="$flags $LA_FILE" - fi - ;; - --apu-la-file) - if test -f "$LA_FILE"; then - flags="$flags $LA_FILE" - fi - ;; - --old-expat) - if test ! -n "$APR_XML_EXPAT_OLD"; then - echo "no" - else - echo "$APR_XML_EXPAT_OLD" - fi - exit 0 - ;; - --db-version) - echo $APU_DB_VERSION - exit 0 - ;; - --help) - show_usage - exit 0 - ;; - *) - show_usage - exit 1 - ;; - esac - - # Next please. - shift -done - -if test -n "$flags"; then - echo "$flags" -fi - -exit 0 diff --git a/libs/apr-util/buckets/apr_brigade.c b/libs/apr-util/buckets/apr_brigade.c deleted file mode 100644 index 69813f29631..00000000000 --- a/libs/apr-util/buckets/apr_brigade.c +++ /dev/null @@ -1,702 +0,0 @@ -/* Copyright 2000-2005 The Apache Software Foundation or its licensors, as - * applicable. - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -#include "apr.h" -#include "apr_lib.h" -#include "apr_strings.h" -#include "apr_pools.h" -#include "apr_tables.h" -#include "apr_buckets.h" -#include "apr_errno.h" -#define APR_WANT_MEMFUNC -#define APR_WANT_STRFUNC -#include "apr_want.h" - -#if APR_HAVE_SYS_UIO_H -#include -#endif - -static apr_status_t brigade_cleanup(void *data) -{ - return apr_brigade_cleanup(data); -} - -APU_DECLARE(apr_status_t) apr_brigade_cleanup(void *data) -{ - apr_bucket_brigade *b = data; - apr_bucket *e; - - while (!APR_BRIGADE_EMPTY(b)) { - e = APR_BRIGADE_FIRST(b); - apr_bucket_delete(e); - } - /* We don't need to free(bb) because it's allocated from a pool. */ - return APR_SUCCESS; -} - -APU_DECLARE(apr_status_t) apr_brigade_destroy(apr_bucket_brigade *b) -{ - apr_pool_cleanup_kill(b->p, b, brigade_cleanup); - return apr_brigade_cleanup(b); -} - -APU_DECLARE(apr_bucket_brigade *) apr_brigade_create(apr_pool_t *p, - apr_bucket_alloc_t *list) -{ - apr_bucket_brigade *b; - - b = apr_palloc(p, sizeof(*b)); - b->p = p; - b->bucket_alloc = list; - - APR_RING_INIT(&b->list, apr_bucket, link); - - apr_pool_cleanup_register(b->p, b, brigade_cleanup, apr_pool_cleanup_null); - return b; -} - -APU_DECLARE(apr_bucket_brigade *) apr_brigade_split(apr_bucket_brigade *b, - apr_bucket *e) -{ - apr_bucket_brigade *a; - apr_bucket *f; - - a = apr_brigade_create(b->p, b->bucket_alloc); - /* Return an empty brigade if there is nothing left in - * the first brigade to split off - */ - if (e != APR_BRIGADE_SENTINEL(b)) { - f = APR_RING_LAST(&b->list); - APR_RING_UNSPLICE(e, f, link); - APR_RING_SPLICE_HEAD(&a->list, e, f, apr_bucket, link); - } - - APR_BRIGADE_CHECK_CONSISTENCY(a); - APR_BRIGADE_CHECK_CONSISTENCY(b); - - return a; -} - -APU_DECLARE(apr_status_t) apr_brigade_partition(apr_bucket_brigade *b, - apr_off_t point, - apr_bucket **after_point) -{ - apr_bucket *e; - const char *s; - apr_size_t len; - apr_status_t rv; - - if (point < 0) { - /* this could cause weird (not necessarily SEGV) things to happen */ - return APR_EINVAL; - } - if (point == 0) { - *after_point = APR_BRIGADE_FIRST(b); - return APR_SUCCESS; - } - - APR_BRIGADE_CHECK_CONSISTENCY(b); - - for (e = APR_BRIGADE_FIRST(b); - e != APR_BRIGADE_SENTINEL(b); - e = APR_BUCKET_NEXT(e)) - { - if ((e->length == (apr_size_t)(-1)) && (point > (apr_size_t)(-1))) { - /* point is too far out to simply split this bucket, - * we must fix this bucket's size and keep going... */ - rv = apr_bucket_read(e, &s, &len, APR_BLOCK_READ); - if (rv != APR_SUCCESS) { - *after_point = e; - return rv; - } - } - if ((point < e->length) || (e->length == (apr_size_t)(-1))) { - /* We already checked e->length -1 above, so we now - * trust e->length < MAX_APR_SIZE_T. - * First try to split the bucket natively... */ - if ((rv = apr_bucket_split(e, (apr_size_t)point)) - != APR_ENOTIMPL) { - *after_point = APR_BUCKET_NEXT(e); - return rv; - } - - /* if the bucket cannot be split, we must read from it, - * changing its type to one that can be split */ - rv = apr_bucket_read(e, &s, &len, APR_BLOCK_READ); - if (rv != APR_SUCCESS) { - *after_point = e; - return rv; - } - - /* this assumes that len == e->length, which is okay because e - * might have been morphed by the apr_bucket_read() above, but - * if it was, the length would have been adjusted appropriately */ - if (point < e->length) { - rv = apr_bucket_split(e, (apr_size_t)point); - *after_point = APR_BUCKET_NEXT(e); - return rv; - } - } - if (point == e->length) { - *after_point = APR_BUCKET_NEXT(e); - return APR_SUCCESS; - } - point -= e->length; - } - *after_point = APR_BRIGADE_SENTINEL(b); - return APR_INCOMPLETE; -} - -APU_DECLARE(apr_status_t) apr_brigade_length(apr_bucket_brigade *bb, - int read_all, apr_off_t *length) -{ - apr_off_t total = 0; - apr_bucket *bkt; - - for (bkt = APR_BRIGADE_FIRST(bb); - bkt != APR_BRIGADE_SENTINEL(bb); - bkt = APR_BUCKET_NEXT(bkt)) - { - if (bkt->length == (apr_size_t)(-1)) { - const char *ignore; - apr_size_t len; - apr_status_t status; - - if (!read_all) { - *length = -1; - return APR_SUCCESS; - } - - if ((status = apr_bucket_read(bkt, &ignore, &len, - APR_BLOCK_READ)) != APR_SUCCESS) { - return status; - } - } - - total += bkt->length; - } - - *length = total; - return APR_SUCCESS; -} - -APU_DECLARE(apr_status_t) apr_brigade_flatten(apr_bucket_brigade *bb, - char *c, apr_size_t *len) -{ - apr_size_t actual = 0; - apr_bucket *b; - - for (b = APR_BRIGADE_FIRST(bb); - b != APR_BRIGADE_SENTINEL(bb); - b = APR_BUCKET_NEXT(b)) - { - const char *str; - apr_size_t str_len; - apr_status_t status; - - status = apr_bucket_read(b, &str, &str_len, APR_BLOCK_READ); - if (status != APR_SUCCESS) { - return status; - } - - /* If we would overflow. */ - if (str_len + actual > *len) { - str_len = *len - actual; - } - - /* XXX: It appears that overflow of the final bucket - * is DISCARDED without any warning to the caller. - * - * No, we only copy the data up to their requested size. -- jre - */ - memcpy(c, str, str_len); - - c += str_len; - actual += str_len; - - /* This could probably be actual == *len, but be safe from stray - * photons. */ - if (actual >= *len) { - break; - } - } - - *len = actual; - return APR_SUCCESS; -} - -APU_DECLARE(apr_status_t) apr_brigade_pflatten(apr_bucket_brigade *bb, - char **c, - apr_size_t *len, - apr_pool_t *pool) -{ - apr_off_t actual; - apr_size_t total; - apr_status_t rv; - - apr_brigade_length(bb, 1, &actual); - - /* XXX: This is dangerous beyond belief. At least in the - * apr_brigade_flatten case, the user explicitly stated their - * buffer length - so we don't up and palloc 4GB for a single - * file bucket. This API must grow a useful max boundry, - * either compiled-in or preset via the *len value. - * - * Shouldn't both fn's grow an additional return value for - * the case that the brigade couldn't be flattened into the - * provided or allocated buffer (such as APR_EMOREDATA?) - * Not a failure, simply an advisory result. - */ - total = (apr_size_t)actual; - - *c = apr_palloc(pool, total); - - rv = apr_brigade_flatten(bb, *c, &total); - - if (rv != APR_SUCCESS) { - return rv; - } - - *len = total; - return APR_SUCCESS; -} - -APU_DECLARE(apr_status_t) apr_brigade_split_line(apr_bucket_brigade *bbOut, - apr_bucket_brigade *bbIn, - apr_read_type_e block, - apr_off_t maxbytes) -{ - apr_off_t readbytes = 0; - - while (!APR_BRIGADE_EMPTY(bbIn)) { - const char *pos; - const char *str; - apr_size_t len; - apr_status_t rv; - apr_bucket *e; - - e = APR_BRIGADE_FIRST(bbIn); - rv = apr_bucket_read(e, &str, &len, block); - - if (rv != APR_SUCCESS) { - return rv; - } - - pos = memchr(str, APR_ASCII_LF, len); - /* We found a match. */ - if (pos != NULL) { - apr_bucket_split(e, pos - str + 1); - APR_BUCKET_REMOVE(e); - APR_BRIGADE_INSERT_TAIL(bbOut, e); - return APR_SUCCESS; - } - APR_BUCKET_REMOVE(e); - APR_BRIGADE_INSERT_TAIL(bbOut, e); - readbytes += len; - /* We didn't find an APR_ASCII_LF within the maximum line length. */ - if (readbytes >= maxbytes) { - break; - } - } - - return APR_SUCCESS; -} - - -APU_DECLARE(apr_status_t) apr_brigade_to_iovec(apr_bucket_brigade *b, - struct iovec *vec, int *nvec) -{ - int left = *nvec; - apr_bucket *e; - struct iovec *orig; - apr_size_t iov_len; - apr_status_t rv; - - orig = vec; - - for (e = APR_BRIGADE_FIRST(b); - e != APR_BRIGADE_SENTINEL(b); - e = APR_BUCKET_NEXT(e)) - { - if (left-- == 0) - break; - - rv = apr_bucket_read(e, (const char **)&vec->iov_base, &iov_len, - APR_NONBLOCK_READ); - if (rv != APR_SUCCESS) - return rv; - vec->iov_len = iov_len; /* set indirectly in case size differs */ - ++vec; - } - - *nvec = vec - orig; - return APR_SUCCESS; -} - -APU_DECLARE(apr_status_t) apr_brigade_vputstrs(apr_bucket_brigade *b, - apr_brigade_flush flush, - void *ctx, - va_list va) -{ - for (;;) { - const char *str = va_arg(va, const char *); - apr_status_t rv; - - if (str == NULL) - break; - - rv = apr_brigade_write(b, flush, ctx, str, strlen(str)); - if (rv != APR_SUCCESS) - return rv; - } - - return APR_SUCCESS; -} - -APU_DECLARE(apr_status_t) apr_brigade_putc(apr_bucket_brigade *b, - apr_brigade_flush flush, void *ctx, - const char c) -{ - return apr_brigade_write(b, flush, ctx, &c, 1); -} - -APU_DECLARE(apr_status_t) apr_brigade_write(apr_bucket_brigade *b, - apr_brigade_flush flush, - void *ctx, - const char *str, apr_size_t nbyte) -{ - apr_bucket *e = APR_BRIGADE_LAST(b); - apr_size_t remaining = APR_BUCKET_BUFF_SIZE; - char *buf = NULL; - - if (!APR_BRIGADE_EMPTY(b) && APR_BUCKET_IS_HEAP(e)) { - apr_bucket_heap *h = e->data; - - /* HEAP bucket start offsets are always in-memory, safe to cast */ - remaining = h->alloc_len - (e->length + (apr_size_t)e->start); - buf = h->base + e->start + e->length; - } - - if (nbyte > remaining) { - /* either a buffer bucket exists but is full, - * or no buffer bucket exists and the data is too big - * to buffer. In either case, we should flush. */ - if (flush) { - e = apr_bucket_transient_create(str, nbyte, b->bucket_alloc); - APR_BRIGADE_INSERT_TAIL(b, e); - return flush(b, ctx); - } - else { - e = apr_bucket_heap_create(str, nbyte, NULL, b->bucket_alloc); - APR_BRIGADE_INSERT_TAIL(b, e); - return APR_SUCCESS; - } - } - else if (!buf) { - /* we don't have a buffer, but the data is small enough - * that we don't mind making a new buffer */ - buf = apr_bucket_alloc(APR_BUCKET_BUFF_SIZE, b->bucket_alloc); - e = apr_bucket_heap_create(buf, APR_BUCKET_BUFF_SIZE, - apr_bucket_free, b->bucket_alloc); - APR_BRIGADE_INSERT_TAIL(b, e); - e->length = 0; /* We are writing into the brigade, and - * allocating more memory than we need. This - * ensures that the bucket thinks it is empty just - * after we create it. We'll fix the length - * once we put data in it below. - */ - } - - /* there is a sufficiently big buffer bucket available now */ - memcpy(buf, str, nbyte); - e->length += nbyte; - - return APR_SUCCESS; -} - -APU_DECLARE(apr_status_t) apr_brigade_writev(apr_bucket_brigade *b, - apr_brigade_flush flush, - void *ctx, - const struct iovec *vec, - apr_size_t nvec) -{ - apr_bucket *e; - apr_size_t total_len; - apr_size_t i; - char *buf; - - /* Compute the total length of the data to be written. - */ - total_len = 0; - for (i = 0; i < nvec; i++) { - total_len += vec[i].iov_len; - } - - /* If the data to be written is very large, try to convert - * the iovec to transient buckets rather than copying. - */ - if (total_len > APR_BUCKET_BUFF_SIZE) { - if (flush) { - for (i = 0; i < nvec; i++) { - e = apr_bucket_transient_create(vec[i].iov_base, - vec[i].iov_len, - b->bucket_alloc); - APR_BRIGADE_INSERT_TAIL(b, e); - } - return flush(b, ctx); - } - else { - for (i = 0; i < nvec; i++) { - e = apr_bucket_heap_create((const char *) vec[i].iov_base, - vec[i].iov_len, NULL, - b->bucket_alloc); - APR_BRIGADE_INSERT_TAIL(b, e); - } - return APR_SUCCESS; - } - } - - i = 0; - - /* If there is a heap bucket at the end of the brigade - * already, copy into the existing bucket. - */ - e = APR_BRIGADE_LAST(b); - if (!APR_BRIGADE_EMPTY(b) && APR_BUCKET_IS_HEAP(e)) { - apr_bucket_heap *h = e->data; - apr_size_t remaining = h->alloc_len - - (e->length + (apr_size_t)e->start); - buf = h->base + e->start + e->length; - - if (remaining >= total_len) { - /* Simple case: all the data will fit in the - * existing heap bucket - */ - for (; i < nvec; i++) { - apr_size_t len = vec[i].iov_len; - memcpy(buf, (const void *) vec[i].iov_base, len); - buf += len; - } - e->length += total_len; - return APR_SUCCESS; - } - else { - /* More complicated case: not all of the data - * will fit in the existing heap bucket. The - * total data size is <= APR_BUCKET_BUFF_SIZE, - * so we'll need only one additional bucket. - */ - const char *start_buf = buf; - for (; i < nvec; i++) { - apr_size_t len = vec[i].iov_len; - if (len > remaining) { - break; - } - memcpy(buf, (const void *) vec[i].iov_base, len); - buf += len; - remaining -= len; - } - e->length += (buf - start_buf); - total_len -= (buf - start_buf); - - if (flush) { - apr_status_t rv = flush(b, ctx); - if (rv != APR_SUCCESS) { - return rv; - } - } - - /* Now fall through into the case below to - * allocate another heap bucket and copy the - * rest of the array. (Note that i is not - * reset to zero here; it holds the index - * of the first vector element to be - * written to the new bucket.) - */ - } - } - - /* Allocate a new heap bucket, and copy the data into it. - * The checks above ensure that the amount of data to be - * written here is no larger than APR_BUCKET_BUFF_SIZE. - */ - buf = apr_bucket_alloc(APR_BUCKET_BUFF_SIZE, b->bucket_alloc); - e = apr_bucket_heap_create(buf, APR_BUCKET_BUFF_SIZE, - apr_bucket_free, b->bucket_alloc); - for (; i < nvec; i++) { - apr_size_t len = vec[i].iov_len; - memcpy(buf, (const void *) vec[i].iov_base, len); - buf += len; - } - e->length = total_len; - APR_BRIGADE_INSERT_TAIL(b, e); - - return APR_SUCCESS; -} - -APU_DECLARE(apr_status_t) apr_brigade_puts(apr_bucket_brigade *bb, - apr_brigade_flush flush, void *ctx, - const char *str) -{ - apr_size_t len = strlen(str); - apr_bucket *bkt = APR_BRIGADE_LAST(bb); - if (!APR_BRIGADE_EMPTY(bb) && APR_BUCKET_IS_HEAP(bkt)) { - /* If there is enough space available in a heap bucket - * at the end of the brigade, copy the string directly - * into the heap bucket - */ - apr_bucket_heap *h = bkt->data; - apr_size_t bytes_avail = h->alloc_len - bkt->length; - - if (bytes_avail >= len) { - char *buf = h->base + bkt->start + bkt->length; - memcpy(buf, str, len); - bkt->length += len; - return APR_SUCCESS; - } - } - - /* If the string could not be copied into an existing heap - * bucket, delegate the work to apr_brigade_write(), which - * knows how to grow the brigade - */ - return apr_brigade_write(bb, flush, ctx, str, len); -} - -APU_DECLARE_NONSTD(apr_status_t) apr_brigade_putstrs(apr_bucket_brigade *b, - apr_brigade_flush flush, - void *ctx, ...) -{ - va_list va; - apr_status_t rv; - - va_start(va, ctx); - rv = apr_brigade_vputstrs(b, flush, ctx, va); - va_end(va); - return rv; -} - -APU_DECLARE_NONSTD(apr_status_t) apr_brigade_printf(apr_bucket_brigade *b, - apr_brigade_flush flush, - void *ctx, - const char *fmt, ...) -{ - va_list ap; - apr_status_t rv; - - va_start(ap, fmt); - rv = apr_brigade_vprintf(b, flush, ctx, fmt, ap); - va_end(ap); - return rv; -} - -struct brigade_vprintf_data_t { - apr_vformatter_buff_t vbuff; - - apr_bucket_brigade *b; /* associated brigade */ - apr_brigade_flush *flusher; /* flushing function */ - void *ctx; - - char *cbuff; /* buffer to flush from */ -}; - -static apr_status_t brigade_flush(apr_vformatter_buff_t *buff) -{ - /* callback function passed to ap_vformatter to be - * called when vformatter needs to buff and - * buff.curpos > buff.endpos - */ - - /* "downcast," have really passed a brigade_vprintf_data_t* */ - struct brigade_vprintf_data_t *vd = (struct brigade_vprintf_data_t*)buff; - apr_status_t res = APR_SUCCESS; - - res = apr_brigade_write(vd->b, *vd->flusher, vd->ctx, vd->cbuff, - APR_BUCKET_BUFF_SIZE); - - if(res != APR_SUCCESS) { - return -1; - } - - vd->vbuff.curpos = vd->cbuff; - vd->vbuff.endpos = vd->cbuff + APR_BUCKET_BUFF_SIZE; - - return res; -} - -APU_DECLARE(apr_status_t) apr_brigade_vprintf(apr_bucket_brigade *b, - apr_brigade_flush flush, - void *ctx, - const char *fmt, va_list va) -{ - /* the cast, in order of appearance */ - struct brigade_vprintf_data_t vd; - char buf[APR_BUCKET_BUFF_SIZE]; - apr_size_t written; - - vd.vbuff.curpos = buf; - vd.vbuff.endpos = buf + APR_BUCKET_BUFF_SIZE; - vd.b = b; - vd.flusher = &flush; - vd.ctx = ctx; - vd.cbuff = buf; - - written = apr_vformatter(brigade_flush, &vd.vbuff, fmt, va); - - if (written == -1) { - return -1; - } - - /* tack on null terminator to remaining string */ - *(vd.vbuff.curpos) = '\0'; - - /* write out what remains in the buffer */ - return apr_brigade_write(b, flush, ctx, buf, vd.vbuff.curpos - buf); -} - -/* A "safe" maximum bucket size, 1Gb */ -#define MAX_BUCKET_SIZE (0x40000000) - -APU_DECLARE(apr_bucket *) apr_brigade_insert_file(apr_bucket_brigade *bb, - apr_file_t *f, - apr_off_t start, - apr_off_t length, - apr_pool_t *p) -{ - apr_bucket *e; - - if (sizeof(apr_off_t) == sizeof(apr_size_t) || length < MAX_BUCKET_SIZE) { - e = apr_bucket_file_create(f, start, (apr_size_t)length, p, - bb->bucket_alloc); - } - else { - /* Several buckets are needed. */ - e = apr_bucket_file_create(f, start, MAX_BUCKET_SIZE, p, - bb->bucket_alloc); - - while (length > MAX_BUCKET_SIZE) { - apr_bucket *ce; - apr_bucket_copy(e, &ce); - APR_BRIGADE_INSERT_TAIL(bb, ce); - e->start += MAX_BUCKET_SIZE; - length -= MAX_BUCKET_SIZE; - } - e->length = (apr_size_t)length; /* Resize just the last bucket */ - } - - APR_BRIGADE_INSERT_TAIL(bb, e); - return e; -} diff --git a/libs/apr-util/buckets/apr_buckets.c b/libs/apr-util/buckets/apr_buckets.c deleted file mode 100644 index 69b7f6cf754..00000000000 --- a/libs/apr-util/buckets/apr_buckets.c +++ /dev/null @@ -1,46 +0,0 @@ -/* Copyright 2000-2005 The Apache Software Foundation or its licensors, as - * applicable. - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -#include "apr_buckets.h" - -APU_DECLARE_NONSTD(apr_status_t) apr_bucket_setaside_noop(apr_bucket *data, - apr_pool_t *pool) -{ - return APR_SUCCESS; -} - -APU_DECLARE_NONSTD(apr_status_t) apr_bucket_setaside_notimpl(apr_bucket *data, - apr_pool_t *pool) -{ - return APR_ENOTIMPL; -} - -APU_DECLARE_NONSTD(apr_status_t) apr_bucket_split_notimpl(apr_bucket *data, - apr_size_t point) -{ - return APR_ENOTIMPL; -} - -APU_DECLARE_NONSTD(apr_status_t) apr_bucket_copy_notimpl(apr_bucket *e, - apr_bucket **c) -{ - return APR_ENOTIMPL; -} - -APU_DECLARE_NONSTD(void) apr_bucket_destroy_noop(void *data) -{ - return; -} diff --git a/libs/apr-util/buckets/apr_buckets_alloc.c b/libs/apr-util/buckets/apr_buckets_alloc.c deleted file mode 100644 index 81a82714846..00000000000 --- a/libs/apr-util/buckets/apr_buckets_alloc.c +++ /dev/null @@ -1,184 +0,0 @@ -/* Copyright 2000-2005 The Apache Software Foundation or its licensors, as - * applicable. - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -#include - -#include "apr_buckets.h" -#include "apr_allocator.h" - -#define ALLOC_AMT (8192 - APR_MEMNODE_T_SIZE) - -typedef struct node_header_t { - apr_size_t size; - apr_bucket_alloc_t *alloc; - apr_memnode_t *memnode; - struct node_header_t *next; -} node_header_t; - -#define SIZEOF_NODE_HEADER_T APR_ALIGN_DEFAULT(sizeof(node_header_t)) -#define SMALL_NODE_SIZE (APR_BUCKET_ALLOC_SIZE + SIZEOF_NODE_HEADER_T) - -/** A list of free memory from which new buckets or private bucket - * structures can be allocated. - */ -struct apr_bucket_alloc_t { - apr_pool_t *pool; - apr_allocator_t *allocator; - node_header_t *freelist; - apr_memnode_t *blocks; -}; - -static apr_status_t alloc_cleanup(void *data) -{ - apr_bucket_alloc_t *list = data; - - apr_allocator_free(list->allocator, list->blocks); - -#if APR_POOL_DEBUG - if (list->pool && list->allocator != apr_pool_allocator_get(list->pool)) { - apr_allocator_destroy(list->allocator); - } -#endif - - return APR_SUCCESS; -} - -APU_DECLARE_NONSTD(apr_bucket_alloc_t *) apr_bucket_alloc_create(apr_pool_t *p) -{ - apr_allocator_t *allocator = apr_pool_allocator_get(p); - apr_bucket_alloc_t *list; - -#if APR_POOL_DEBUG - /* may be NULL for debug mode. */ - if (allocator == NULL) { - if (apr_allocator_create(&allocator) != APR_SUCCESS) { - abort(); - } - } -#endif - - list = apr_bucket_alloc_create_ex(allocator); - list->pool = p; - apr_pool_cleanup_register(list->pool, list, alloc_cleanup, - apr_pool_cleanup_null); - - return list; -} - -APU_DECLARE_NONSTD(apr_bucket_alloc_t *) apr_bucket_alloc_create_ex( - apr_allocator_t *allocator) -{ - apr_bucket_alloc_t *list; - apr_memnode_t *block; - - block = apr_allocator_alloc(allocator, ALLOC_AMT); - list = (apr_bucket_alloc_t *)block->first_avail; - list->pool = NULL; - list->allocator = allocator; - list->freelist = NULL; - list->blocks = block; - block->first_avail += APR_ALIGN_DEFAULT(sizeof(*list)); - - return list; -} - -APU_DECLARE_NONSTD(void) apr_bucket_alloc_destroy(apr_bucket_alloc_t *list) -{ - if (list->pool) { - apr_pool_cleanup_kill(list->pool, list, alloc_cleanup); - } - - apr_allocator_free(list->allocator, list->blocks); - -#if APR_POOL_DEBUG - if (list->pool && list->allocator != apr_pool_allocator_get(list->pool)) { - apr_allocator_destroy(list->allocator); - } -#endif -} - -APU_DECLARE_NONSTD(void *) apr_bucket_alloc(apr_size_t size, - apr_bucket_alloc_t *list) -{ - node_header_t *node; - apr_memnode_t *active = list->blocks; - char *endp; - - size += SIZEOF_NODE_HEADER_T; - if (size <= SMALL_NODE_SIZE) { - if (list->freelist) { - node = list->freelist; - list->freelist = node->next; - } - else { - endp = active->first_avail + SMALL_NODE_SIZE; - if (endp >= active->endp) { - list->blocks = apr_allocator_alloc(list->allocator, ALLOC_AMT); - list->blocks->next = active; - active = list->blocks; - endp = active->first_avail + SMALL_NODE_SIZE; - } - node = (node_header_t *)active->first_avail; - node->alloc = list; - node->memnode = active; - node->size = SMALL_NODE_SIZE; - active->first_avail = endp; - } - } - else { - apr_memnode_t *memnode = apr_allocator_alloc(list->allocator, size); - node = (node_header_t *)memnode->first_avail; - node->alloc = list; - node->memnode = memnode; - node->size = size; - } - return ((char *)node) + SIZEOF_NODE_HEADER_T; -} - -#ifdef APR_BUCKET_DEBUG -#if APR_HAVE_STDLIB_H -#include -#endif -static void check_not_already_free(node_header_t *node) -{ - apr_bucket_alloc_t *list = node->alloc; - node_header_t *curr = list->freelist; - - while (curr) { - if (node == curr) { - abort(); - } - curr = curr->next; - } -} -#else -#define check_not_already_free(node) -#endif - -APU_DECLARE_NONSTD(void) apr_bucket_free(void *mem) -{ - node_header_t *node = (node_header_t *)((char *)mem - SIZEOF_NODE_HEADER_T); - apr_bucket_alloc_t *list = node->alloc; - - if (node->size == SMALL_NODE_SIZE) { - check_not_already_free(node); - node->next = list->freelist; - list->freelist = node; - } - else { - apr_allocator_free(list->allocator, node->memnode); - } -} diff --git a/libs/apr-util/buckets/apr_buckets_eos.c b/libs/apr-util/buckets/apr_buckets_eos.c deleted file mode 100644 index 5783857dfa7..00000000000 --- a/libs/apr-util/buckets/apr_buckets_eos.c +++ /dev/null @@ -1,54 +0,0 @@ -/* Copyright 2000-2005 The Apache Software Foundation or its licensors, as - * applicable. - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -#include "apr_buckets.h" - -static apr_status_t eos_bucket_read(apr_bucket *b, const char **str, - apr_size_t *len, apr_read_type_e block) -{ - *str = NULL; - *len = 0; - return APR_SUCCESS; -} - -APU_DECLARE(apr_bucket *) apr_bucket_eos_make(apr_bucket *b) -{ - b->length = 0; - b->start = 0; - b->data = NULL; - b->type = &apr_bucket_type_eos; - - return b; -} - -APU_DECLARE(apr_bucket *) apr_bucket_eos_create(apr_bucket_alloc_t *list) -{ - apr_bucket *b = apr_bucket_alloc(sizeof(*b), list); - - APR_BUCKET_INIT(b); - b->free = apr_bucket_free; - b->list = list; - return apr_bucket_eos_make(b); -} - -APU_DECLARE_DATA const apr_bucket_type_t apr_bucket_type_eos = { - "EOS", 5, APR_BUCKET_METADATA, - apr_bucket_destroy_noop, - eos_bucket_read, - apr_bucket_setaside_noop, - apr_bucket_split_notimpl, - apr_bucket_simple_copy -}; diff --git a/libs/apr-util/buckets/apr_buckets_file.c b/libs/apr-util/buckets/apr_buckets_file.c deleted file mode 100644 index 7462bb70327..00000000000 --- a/libs/apr-util/buckets/apr_buckets_file.c +++ /dev/null @@ -1,228 +0,0 @@ -/* Copyright 2000-2005 The Apache Software Foundation or its licensors, as - * applicable. - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -#include "apr.h" -#include "apr_general.h" -#include "apr_file_io.h" -#include "apr_buckets.h" - -#if APR_HAS_MMAP -#include "apr_mmap.h" - -/* mmap support for static files based on ideas from John Heidemann's - * patch against 1.0.5. See - * . - */ - -#endif /* APR_HAS_MMAP */ - -static void file_bucket_destroy(void *data) -{ - apr_bucket_file *f = data; - - if (apr_bucket_shared_destroy(f)) { - /* no need to close the file here; it will get - * done automatically when the pool gets cleaned up */ - apr_bucket_free(f); - } -} - -#if APR_HAS_MMAP -static int file_make_mmap(apr_bucket *e, apr_size_t filelength, - apr_off_t fileoffset, apr_pool_t *p) -{ - apr_bucket_file *a = e->data; - apr_mmap_t *mm; - - if (!a->can_mmap) { - return 0; - } - - if (filelength > APR_MMAP_LIMIT) { - if (apr_mmap_create(&mm, a->fd, fileoffset, APR_MMAP_LIMIT, - APR_MMAP_READ, p) != APR_SUCCESS) - { - return 0; - } - apr_bucket_split(e, APR_MMAP_LIMIT); - filelength = APR_MMAP_LIMIT; - } - else if ((filelength < APR_MMAP_THRESHOLD) || - (apr_mmap_create(&mm, a->fd, fileoffset, filelength, - APR_MMAP_READ, p) != APR_SUCCESS)) - { - return 0; - } - apr_bucket_mmap_make(e, mm, 0, filelength); - file_bucket_destroy(a); - return 1; -} -#endif - -static apr_status_t file_bucket_read(apr_bucket *e, const char **str, - apr_size_t *len, apr_read_type_e block) -{ - apr_bucket_file *a = e->data; - apr_file_t *f = a->fd; - apr_bucket *b = NULL; - char *buf; - apr_status_t rv; - apr_size_t filelength = e->length; /* bytes remaining in file past offset */ - apr_off_t fileoffset = e->start; -#if APR_HAS_THREADS && !APR_HAS_XTHREAD_FILES - apr_int32_t flags; -#endif - -#if APR_HAS_MMAP - if (file_make_mmap(e, filelength, fileoffset, a->readpool)) { - return apr_bucket_read(e, str, len, block); - } -#endif - -#if APR_HAS_THREADS && !APR_HAS_XTHREAD_FILES - if ((flags = apr_file_flags_get(f)) & APR_XTHREAD) { - /* this file descriptor is shared across multiple threads and - * this OS doesn't support that natively, so as a workaround - * we must reopen the file into a->readpool */ - const char *fname; - apr_file_name_get(&fname, f); - - rv = apr_file_open(&f, fname, (flags & ~APR_XTHREAD), 0, a->readpool); - if (rv != APR_SUCCESS) - return rv; - - a->fd = f; - } -#endif - - *len = (filelength > APR_BUCKET_BUFF_SIZE) - ? APR_BUCKET_BUFF_SIZE - : filelength; - *str = NULL; /* in case we die prematurely */ - buf = apr_bucket_alloc(*len, e->list); - - /* Handle offset ... */ - rv = apr_file_seek(f, APR_SET, &fileoffset); - if (rv != APR_SUCCESS) { - apr_bucket_free(buf); - return rv; - } - rv = apr_file_read(f, buf, len); - if (rv != APR_SUCCESS && rv != APR_EOF) { - apr_bucket_free(buf); - return rv; - } - filelength -= *len; - /* - * Change the current bucket to refer to what we read, - * even if we read nothing because we hit EOF. - */ - apr_bucket_heap_make(e, buf, *len, apr_bucket_free); - - /* If we have more to read from the file, then create another bucket */ - if (filelength > 0 && rv != APR_EOF) { - /* for efficiency, we can just build a new apr_bucket struct - * to wrap around the existing file bucket */ - b = apr_bucket_alloc(sizeof(*b), e->list); - b->start = fileoffset + (*len); - b->length = filelength; - b->data = a; - b->type = &apr_bucket_type_file; - b->free = apr_bucket_free; - b->list = e->list; - APR_BUCKET_INSERT_AFTER(e, b); - } - else { - file_bucket_destroy(a); - } - - *str = buf; - return rv; -} - -APU_DECLARE(apr_bucket *) apr_bucket_file_make(apr_bucket *b, apr_file_t *fd, - apr_off_t offset, - apr_size_t len, apr_pool_t *p) -{ - apr_bucket_file *f; - - f = apr_bucket_alloc(sizeof(*f), b->list); - f->fd = fd; - f->readpool = p; -#if APR_HAS_MMAP - f->can_mmap = 1; -#endif - - b = apr_bucket_shared_make(b, f, offset, len); - b->type = &apr_bucket_type_file; - - return b; -} - -APU_DECLARE(apr_bucket *) apr_bucket_file_create(apr_file_t *fd, - apr_off_t offset, - apr_size_t len, apr_pool_t *p, - apr_bucket_alloc_t *list) -{ - apr_bucket *b = apr_bucket_alloc(sizeof(*b), list); - - APR_BUCKET_INIT(b); - b->free = apr_bucket_free; - b->list = list; - return apr_bucket_file_make(b, fd, offset, len, p); -} - -APU_DECLARE(apr_status_t) apr_bucket_file_enable_mmap(apr_bucket *e, - int enabled) -{ -#if APR_HAS_MMAP - apr_bucket_file *a = e->data; - a->can_mmap = enabled; - return APR_SUCCESS; -#else - return APR_ENOTIMPL; -#endif /* APR_HAS_MMAP */ -} - - -static apr_status_t file_bucket_setaside(apr_bucket *data, apr_pool_t *reqpool) -{ - apr_bucket_file *a = data->data; - apr_file_t *fd = NULL; - apr_file_t *f = a->fd; - apr_pool_t *curpool = apr_file_pool_get(f); - - if (apr_pool_is_ancestor(curpool, reqpool)) { - return APR_SUCCESS; - } - - if (!apr_pool_is_ancestor(a->readpool, reqpool)) { - a->readpool = reqpool; - } - - apr_file_setaside(&fd, f, reqpool); - a->fd = fd; - return APR_SUCCESS; -} - -APU_DECLARE_DATA const apr_bucket_type_t apr_bucket_type_file = { - "FILE", 5, APR_BUCKET_DATA, - file_bucket_destroy, - file_bucket_read, - file_bucket_setaside, - apr_bucket_shared_split, - apr_bucket_shared_copy -}; diff --git a/libs/apr-util/buckets/apr_buckets_flush.c b/libs/apr-util/buckets/apr_buckets_flush.c deleted file mode 100644 index 68b6bfa214b..00000000000 --- a/libs/apr-util/buckets/apr_buckets_flush.c +++ /dev/null @@ -1,54 +0,0 @@ -/* Copyright 2000-2005 The Apache Software Foundation or its licensors, as - * applicable. - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -#include "apr_buckets.h" - -static apr_status_t flush_bucket_read(apr_bucket *b, const char **str, - apr_size_t *len, apr_read_type_e block) -{ - *str = NULL; - *len = 0; - return APR_SUCCESS; -} - -APU_DECLARE(apr_bucket *) apr_bucket_flush_make(apr_bucket *b) -{ - b->length = 0; - b->start = 0; - b->data = NULL; - b->type = &apr_bucket_type_flush; - - return b; -} - -APU_DECLARE(apr_bucket *) apr_bucket_flush_create(apr_bucket_alloc_t *list) -{ - apr_bucket *b = apr_bucket_alloc(sizeof(*b), list); - - APR_BUCKET_INIT(b); - b->free = apr_bucket_free; - b->list = list; - return apr_bucket_flush_make(b); -} - -APU_DECLARE_DATA const apr_bucket_type_t apr_bucket_type_flush = { - "FLUSH", 5, APR_BUCKET_METADATA, - apr_bucket_destroy_noop, - flush_bucket_read, - apr_bucket_setaside_noop, - apr_bucket_split_notimpl, - apr_bucket_simple_copy -}; diff --git a/libs/apr-util/buckets/apr_buckets_heap.c b/libs/apr-util/buckets/apr_buckets_heap.c deleted file mode 100644 index d1ebd2947a9..00000000000 --- a/libs/apr-util/buckets/apr_buckets_heap.c +++ /dev/null @@ -1,96 +0,0 @@ -/* Copyright 2000-2005 The Apache Software Foundation or its licensors, as - * applicable. - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -#include "apr_buckets.h" -#define APR_WANT_MEMFUNC -#include "apr_want.h" - -static apr_status_t heap_bucket_read(apr_bucket *b, const char **str, - apr_size_t *len, apr_read_type_e block) -{ - apr_bucket_heap *h = b->data; - - *str = h->base + b->start; - *len = b->length; - return APR_SUCCESS; -} - -static void heap_bucket_destroy(void *data) -{ - apr_bucket_heap *h = data; - - if (apr_bucket_shared_destroy(h)) { - (*h->free_func)(h->base); - apr_bucket_free(h); - } -} - -/* Warning: if you change this function, be sure to - * change apr_bucket_pool_make() too! */ -APU_DECLARE(apr_bucket *) apr_bucket_heap_make(apr_bucket *b, const char *buf, - apr_size_t length, - void (*free_func)(void *data)) -{ - apr_bucket_heap *h; - - h = apr_bucket_alloc(sizeof(*h), b->list); - - if (!free_func) { - h->alloc_len = length; - h->base = apr_bucket_alloc(h->alloc_len, b->list); - if (h->base == NULL) { - apr_bucket_free(h); - return NULL; - } - h->free_func = apr_bucket_free; - memcpy(h->base, buf, length); - } - else { - /* XXX: we lose the const qualifier here which indicates - * there's something screwy with the API... - */ - h->base = (char *) buf; - h->alloc_len = length; - h->free_func = free_func; - } - - b = apr_bucket_shared_make(b, h, 0, length); - b->type = &apr_bucket_type_heap; - - return b; -} - -APU_DECLARE(apr_bucket *) apr_bucket_heap_create(const char *buf, - apr_size_t length, - void (*free_func)(void *data), - apr_bucket_alloc_t *list) -{ - apr_bucket *b = apr_bucket_alloc(sizeof(*b), list); - - APR_BUCKET_INIT(b); - b->free = apr_bucket_free; - b->list = list; - return apr_bucket_heap_make(b, buf, length, free_func); -} - -APU_DECLARE_DATA const apr_bucket_type_t apr_bucket_type_heap = { - "HEAP", 5, APR_BUCKET_DATA, - heap_bucket_destroy, - heap_bucket_read, - apr_bucket_setaside_noop, - apr_bucket_shared_split, - apr_bucket_shared_copy -}; diff --git a/libs/apr-util/buckets/apr_buckets_mmap.c b/libs/apr-util/buckets/apr_buckets_mmap.c deleted file mode 100644 index 3e7a9d73c25..00000000000 --- a/libs/apr-util/buckets/apr_buckets_mmap.c +++ /dev/null @@ -1,144 +0,0 @@ -/* Copyright 2000-2005 The Apache Software Foundation or its licensors, as - * applicable. - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -#include "apr_buckets.h" - -#if APR_HAS_MMAP - -static apr_status_t mmap_bucket_read(apr_bucket *b, const char **str, - apr_size_t *length, apr_read_type_e block) -{ - apr_bucket_mmap *m = b->data; - apr_status_t ok; - void *addr; - - if (!m->mmap) { - /* the apr_mmap_t was already cleaned up out from under us */ - return APR_EINVAL; - } - - ok = apr_mmap_offset(&addr, m->mmap, b->start); - if (ok != APR_SUCCESS) { - return ok; - } - *str = addr; - *length = b->length; - return APR_SUCCESS; -} - -static apr_status_t mmap_bucket_cleanup(void *data) -{ - /* the apr_mmap_t is about to disappear out from under us, so we - * have no choice but to pretend it doesn't exist anymore. the - * refcount is now useless because there's nothing to refer to - * anymore. so the only valid action on any remaining referrer - * is to delete it. no more reads, no more anything. */ - apr_bucket_mmap *m = data; - - m->mmap = NULL; - return APR_SUCCESS; -} - -static void mmap_bucket_destroy(void *data) -{ - apr_bucket_mmap *m = data; - - if (apr_bucket_shared_destroy(m)) { - if (m->mmap) { - apr_pool_cleanup_kill(m->mmap->cntxt, m, mmap_bucket_cleanup); - apr_mmap_delete(m->mmap); - } - apr_bucket_free(m); - } -} - -/* - * XXX: are the start and length arguments useful? - */ -APU_DECLARE(apr_bucket *) apr_bucket_mmap_make(apr_bucket *b, apr_mmap_t *mm, - apr_off_t start, - apr_size_t length) -{ - apr_bucket_mmap *m; - - m = apr_bucket_alloc(sizeof(*m), b->list); - m->mmap = mm; - - apr_pool_cleanup_register(mm->cntxt, m, mmap_bucket_cleanup, - apr_pool_cleanup_null); - - b = apr_bucket_shared_make(b, m, start, length); - b->type = &apr_bucket_type_mmap; - - return b; -} - - -APU_DECLARE(apr_bucket *) apr_bucket_mmap_create(apr_mmap_t *mm, - apr_off_t start, - apr_size_t length, - apr_bucket_alloc_t *list) -{ - apr_bucket *b = apr_bucket_alloc(sizeof(*b), list); - - APR_BUCKET_INIT(b); - b->free = apr_bucket_free; - b->list = list; - return apr_bucket_mmap_make(b, mm, start, length); -} - -static apr_status_t mmap_bucket_setaside(apr_bucket *b, apr_pool_t *p) -{ - apr_bucket_mmap *m = b->data; - apr_mmap_t *mm = m->mmap; - apr_mmap_t *new_mm; - apr_status_t ok; - - if (!mm) { - /* the apr_mmap_t was already cleaned up out from under us */ - return APR_EINVAL; - } - - /* shortcut if possible */ - if (apr_pool_is_ancestor(mm->cntxt, p)) { - return APR_SUCCESS; - } - - /* duplicate apr_mmap_t into new pool */ - ok = apr_mmap_dup(&new_mm, mm, p); - if (ok != APR_SUCCESS) { - return ok; - } - - /* decrement refcount on old apr_bucket_mmap */ - mmap_bucket_destroy(m); - - /* create new apr_bucket_mmap pointing to new apr_mmap_t */ - apr_bucket_mmap_make(b, new_mm, b->start, b->length); - - return APR_SUCCESS; -} - -APU_DECLARE_DATA const apr_bucket_type_t apr_bucket_type_mmap = { - "MMAP", 5, APR_BUCKET_DATA, - mmap_bucket_destroy, - mmap_bucket_read, - mmap_bucket_setaside, - apr_bucket_shared_split, - apr_bucket_shared_copy -}; - -#endif diff --git a/libs/apr-util/buckets/apr_buckets_pipe.c b/libs/apr-util/buckets/apr_buckets_pipe.c deleted file mode 100644 index 36c0cd55ebc..00000000000 --- a/libs/apr-util/buckets/apr_buckets_pipe.c +++ /dev/null @@ -1,119 +0,0 @@ -/* Copyright 2000-2005 The Apache Software Foundation or its licensors, as - * applicable. - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -#include "apr_buckets.h" - -static apr_status_t pipe_bucket_read(apr_bucket *a, const char **str, - apr_size_t *len, apr_read_type_e block) -{ - apr_file_t *p = a->data; - char *buf; - apr_status_t rv; - apr_interval_time_t timeout; - - if (block == APR_NONBLOCK_READ) { - apr_file_pipe_timeout_get(p, &timeout); - apr_file_pipe_timeout_set(p, 0); - } - - *str = NULL; - *len = APR_BUCKET_BUFF_SIZE; - buf = apr_bucket_alloc(*len, a->list); /* XXX: check for failure? */ - - rv = apr_file_read(p, buf, len); - - if (block == APR_NONBLOCK_READ) { - apr_file_pipe_timeout_set(p, timeout); - } - - if (rv != APR_SUCCESS && rv != APR_EOF) { - apr_bucket_free(buf); - return rv; - } - /* - * If there's more to read we have to keep the rest of the pipe - * for later. Otherwise, we'll close the pipe. - * XXX: Note that more complicated bucket types that - * refer to data not in memory and must therefore have a read() - * function similar to this one should be wary of copying this - * code because if they have a destroy function they probably - * want to migrate the bucket's subordinate structure from the - * old bucket to a raw new one and adjust it as appropriate, - * rather than destroying the old one and creating a completely - * new bucket. - */ - if (*len > 0) { - apr_bucket_heap *h; - /* Change the current bucket to refer to what we read */ - a = apr_bucket_heap_make(a, buf, *len, apr_bucket_free); - h = a->data; - h->alloc_len = APR_BUCKET_BUFF_SIZE; /* note the real buffer size */ - *str = buf; - APR_BUCKET_INSERT_AFTER(a, apr_bucket_pipe_create(p, a->list)); - } - else { - apr_bucket_free(buf); - a = apr_bucket_immortal_make(a, "", 0); - *str = a->data; - if (rv == APR_EOF) { - apr_file_close(p); - } - } - return APR_SUCCESS; -} - -APU_DECLARE(apr_bucket *) apr_bucket_pipe_make(apr_bucket *b, apr_file_t *p) -{ - /* - * A pipe is closed when the end is reached in pipe_bucket_read(). If - * the pipe isn't read to the end (e.g., error path), the pipe will be - * closed when its pool goes away. - * - * Note that typically the pipe is allocated from the request pool - * so it will disappear when the request is finished. However the - * core filter may decide to set aside the tail end of a CGI - * response if the connection is pipelined. This turns out not to - * be a problem because the core will have read to the end of the - * stream so the bucket(s) that it sets aside will be the heap - * buckets created by pipe_bucket_read() above. - */ - b->type = &apr_bucket_type_pipe; - b->length = (apr_size_t)(-1); - b->start = -1; - b->data = p; - - return b; -} - -APU_DECLARE(apr_bucket *) apr_bucket_pipe_create(apr_file_t *p, - apr_bucket_alloc_t *list) -{ - apr_bucket *b = apr_bucket_alloc(sizeof(*b), list); - - APR_BUCKET_INIT(b); - b->free = apr_bucket_free; - b->list = list; - return apr_bucket_pipe_make(b, p); -} - -APU_DECLARE_DATA const apr_bucket_type_t apr_bucket_type_pipe = { - "PIPE", 5, APR_BUCKET_DATA, - apr_bucket_destroy_noop, - pipe_bucket_read, - apr_bucket_setaside_notimpl, - apr_bucket_split_notimpl, - apr_bucket_copy_notimpl -}; diff --git a/libs/apr-util/buckets/apr_buckets_pool.c b/libs/apr-util/buckets/apr_buckets_pool.c deleted file mode 100644 index 2226a75196f..00000000000 --- a/libs/apr-util/buckets/apr_buckets_pool.c +++ /dev/null @@ -1,142 +0,0 @@ -/* Copyright 2000-2005 The Apache Software Foundation or its licensors, as - * applicable. - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -#include "apr_buckets.h" -#define APR_WANT_MEMFUNC -#include "apr_want.h" - -static apr_status_t pool_bucket_cleanup(void *data) -{ - apr_bucket_pool *p = data; - - /* - * If the pool gets cleaned up, we have to copy the data out - * of the pool and onto the heap. But the apr_buckets out there - * that point to this pool bucket need to be notified such that - * they can morph themselves into a regular heap bucket the next - * time they try to read. To avoid having to manipulate - * reference counts and b->data pointers, the apr_bucket_pool - * actually _contains_ an apr_bucket_heap as its first element, - * so the two share their apr_bucket_refcount member, and you - * can typecast a pool bucket struct to make it look like a - * regular old heap bucket struct. - */ - p->heap.base = apr_bucket_alloc(p->heap.alloc_len, p->list); - memcpy(p->heap.base, p->base, p->heap.alloc_len); - p->base = NULL; - p->pool = NULL; - - return APR_SUCCESS; -} - -static apr_status_t pool_bucket_read(apr_bucket *b, const char **str, - apr_size_t *len, apr_read_type_e block) -{ - apr_bucket_pool *p = b->data; - const char *base = p->base; - - if (p->pool == NULL) { - /* - * pool has been cleaned up... masquerade as a heap bucket from now - * on. subsequent bucket operations will use the heap bucket code. - */ - b->type = &apr_bucket_type_heap; - base = p->heap.base; - } - *str = base + b->start; - *len = b->length; - return APR_SUCCESS; -} - -static void pool_bucket_destroy(void *data) -{ - apr_bucket_pool *p = data; - - /* If the pool is cleaned up before the last reference goes - * away, the data is really now on the heap; heap_destroy() takes - * over. free() in heap_destroy() thinks it's freeing - * an apr_bucket_heap, when in reality it's freeing the whole - * apr_bucket_pool for us. - */ - if (p->pool) { - /* the shared resource is still in the pool - * because the pool has not been cleaned up yet - */ - if (apr_bucket_shared_destroy(p)) { - apr_pool_cleanup_kill(p->pool, p, pool_bucket_cleanup); - apr_bucket_free(p); - } - } - else { - /* the shared resource is no longer in the pool, it's - * on the heap, but this reference still thinks it's a pool - * bucket. we should just go ahead and pass control to - * heap_destroy() for it since it doesn't know any better. - */ - apr_bucket_type_heap.destroy(p); - } -} - -APU_DECLARE(apr_bucket *) apr_bucket_pool_make(apr_bucket *b, - const char *buf, apr_size_t length, apr_pool_t *pool) -{ - apr_bucket_pool *p; - - p = apr_bucket_alloc(sizeof(*p), b->list); - - /* XXX: we lose the const qualifier here which indicates - * there's something screwy with the API... - */ - /* XXX: why is this? buf is const, p->base is const... what's - * the problem? --jcw */ - p->base = (char *) buf; - p->pool = pool; - p->list = b->list; - - b = apr_bucket_shared_make(b, p, 0, length); - b->type = &apr_bucket_type_pool; - - /* pre-initialize heap bucket member */ - p->heap.alloc_len = length; - p->heap.base = NULL; - p->heap.free_func = apr_bucket_free; - - apr_pool_cleanup_register(p->pool, p, pool_bucket_cleanup, - apr_pool_cleanup_null); - return b; -} - -APU_DECLARE(apr_bucket *) apr_bucket_pool_create(const char *buf, - apr_size_t length, - apr_pool_t *pool, - apr_bucket_alloc_t *list) -{ - apr_bucket *b = apr_bucket_alloc(sizeof(*b), list); - - APR_BUCKET_INIT(b); - b->free = apr_bucket_free; - b->list = list; - return apr_bucket_pool_make(b, buf, length, pool); -} - -APU_DECLARE_DATA const apr_bucket_type_t apr_bucket_type_pool = { - "POOL", 5, APR_BUCKET_DATA, - pool_bucket_destroy, - pool_bucket_read, - apr_bucket_setaside_noop, /* don't need to setaside thanks to the cleanup*/ - apr_bucket_shared_split, - apr_bucket_shared_copy -}; diff --git a/libs/apr-util/buckets/apr_buckets_refcount.c b/libs/apr-util/buckets/apr_buckets_refcount.c deleted file mode 100644 index 72747878d7b..00000000000 --- a/libs/apr-util/buckets/apr_buckets_refcount.c +++ /dev/null @@ -1,64 +0,0 @@ -/* Copyright 2000-2005 The Apache Software Foundation or its licensors, as - * applicable. - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -#include "apr_buckets.h" - -APU_DECLARE_NONSTD(apr_status_t) apr_bucket_shared_split(apr_bucket *a, - apr_size_t point) -{ - apr_bucket_refcount *r = a->data; - apr_status_t rv; - - if ((rv = apr_bucket_simple_split(a, point)) != APR_SUCCESS) { - return rv; - } - r->refcount++; - - return APR_SUCCESS; -} - -APU_DECLARE_NONSTD(apr_status_t) apr_bucket_shared_copy(apr_bucket *a, - apr_bucket **b) -{ - apr_bucket_refcount *r = a->data; - - apr_bucket_simple_copy(a, b); - r->refcount++; - - return APR_SUCCESS; -} - -APU_DECLARE(int) apr_bucket_shared_destroy(void *data) -{ - apr_bucket_refcount *r = data; - r->refcount--; - return (r->refcount == 0); -} - -APU_DECLARE(apr_bucket *) apr_bucket_shared_make(apr_bucket *b, void *data, - apr_off_t start, - apr_size_t length) -{ - apr_bucket_refcount *r = data; - - b->data = r; - b->start = start; - b->length = length; - /* caller initializes the type field */ - r->refcount = 1; - - return b; -} diff --git a/libs/apr-util/buckets/apr_buckets_simple.c b/libs/apr-util/buckets/apr_buckets_simple.c deleted file mode 100644 index aabe086479e..00000000000 --- a/libs/apr-util/buckets/apr_buckets_simple.c +++ /dev/null @@ -1,137 +0,0 @@ -/* Copyright 2000-2005 The Apache Software Foundation or its licensors, as - * applicable. - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -#include "apr_buckets.h" - -APU_DECLARE_NONSTD(apr_status_t) apr_bucket_simple_copy(apr_bucket *a, - apr_bucket **b) -{ - *b = apr_bucket_alloc(sizeof(**b), a->list); /* XXX: check for failure? */ - **b = *a; - - return APR_SUCCESS; -} - -APU_DECLARE_NONSTD(apr_status_t) apr_bucket_simple_split(apr_bucket *a, - apr_size_t point) -{ - apr_bucket *b; - - if (point > a->length) { - return APR_EINVAL; - } - - apr_bucket_simple_copy(a, &b); - - a->length = point; - b->length -= point; - b->start += point; - - APR_BUCKET_INSERT_AFTER(a, b); - - return APR_SUCCESS; -} - -static apr_status_t simple_bucket_read(apr_bucket *b, const char **str, - apr_size_t *len, apr_read_type_e block) -{ - *str = (char *)b->data + b->start; - *len = b->length; - return APR_SUCCESS; -} - -APU_DECLARE(apr_bucket *) apr_bucket_immortal_make(apr_bucket *b, - const char *buf, - apr_size_t length) -{ - b->data = (char *)buf; - b->length = length; - b->start = 0; - b->type = &apr_bucket_type_immortal; - - return b; -} - -APU_DECLARE(apr_bucket *) apr_bucket_immortal_create(const char *buf, - apr_size_t length, - apr_bucket_alloc_t *list) -{ - apr_bucket *b = apr_bucket_alloc(sizeof(*b), list); - - APR_BUCKET_INIT(b); - b->free = apr_bucket_free; - b->list = list; - return apr_bucket_immortal_make(b, buf, length); -} - -/* - * XXX: This function could do with some tweaking to reduce memory - * usage in various cases, e.g. share buffers in the heap between all - * the buckets that are set aside, or even spool set-aside data to - * disk if it gets too voluminous (but if it does then that's probably - * a bug elsewhere). There should probably be a apr_brigade_setaside() - * function that co-ordinates the action of all the bucket setaside - * functions to improve memory efficiency. - */ -static apr_status_t transient_bucket_setaside(apr_bucket *b, apr_pool_t *pool) -{ - b = apr_bucket_heap_make(b, (char *)b->data + b->start, b->length, NULL); - if (b == NULL) { - return APR_ENOMEM; - } - return APR_SUCCESS; -} - -APU_DECLARE(apr_bucket *) apr_bucket_transient_make(apr_bucket *b, - const char *buf, - apr_size_t length) -{ - b->data = (char *)buf; - b->length = length; - b->start = 0; - b->type = &apr_bucket_type_transient; - return b; -} - -APU_DECLARE(apr_bucket *) apr_bucket_transient_create(const char *buf, - apr_size_t length, - apr_bucket_alloc_t *list) -{ - apr_bucket *b = apr_bucket_alloc(sizeof(*b), list); - - APR_BUCKET_INIT(b); - b->free = apr_bucket_free; - b->list = list; - return apr_bucket_transient_make(b, buf, length); -} - -const apr_bucket_type_t apr_bucket_type_immortal = { - "IMMORTAL", 5, APR_BUCKET_DATA, - apr_bucket_destroy_noop, - simple_bucket_read, - apr_bucket_setaside_noop, - apr_bucket_simple_split, - apr_bucket_simple_copy -}; - -APU_DECLARE_DATA const apr_bucket_type_t apr_bucket_type_transient = { - "TRANSIENT", 5, APR_BUCKET_DATA, - apr_bucket_destroy_noop, - simple_bucket_read, - transient_bucket_setaside, - apr_bucket_simple_split, - apr_bucket_simple_copy -}; diff --git a/libs/apr-util/buckets/apr_buckets_socket.c b/libs/apr-util/buckets/apr_buckets_socket.c deleted file mode 100644 index 7885d08efb0..00000000000 --- a/libs/apr-util/buckets/apr_buckets_socket.c +++ /dev/null @@ -1,114 +0,0 @@ -/* Copyright 2000-2005 The Apache Software Foundation or its licensors, as - * applicable. - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -#include "apr_buckets.h" - -static apr_status_t socket_bucket_read(apr_bucket *a, const char **str, - apr_size_t *len, apr_read_type_e block) -{ - apr_socket_t *p = a->data; - char *buf; - apr_status_t rv; - apr_interval_time_t timeout; - - if (block == APR_NONBLOCK_READ) { - apr_socket_timeout_get(p, &timeout); - apr_socket_timeout_set(p, 0); - } - - *str = NULL; - *len = APR_BUCKET_BUFF_SIZE; - buf = apr_bucket_alloc(*len, a->list); /* XXX: check for failure? */ - - rv = apr_socket_recv(p, buf, len); - - if (block == APR_NONBLOCK_READ) { - apr_socket_timeout_set(p, timeout); - } - - if (rv != APR_SUCCESS && rv != APR_EOF) { - apr_bucket_free(buf); - return rv; - } - /* - * If there's more to read we have to keep the rest of the socket - * for later. XXX: Note that more complicated bucket types that - * refer to data not in memory and must therefore have a read() - * function similar to this one should be wary of copying this - * code because if they have a destroy function they probably - * want to migrate the bucket's subordinate structure from the - * old bucket to a raw new one and adjust it as appropriate, - * rather than destroying the old one and creating a completely - * new bucket. - * - * Even if there is nothing more to read, don't close the socket here - * as we have to use it to send any response :) We could shut it - * down for reading, but there is no benefit to doing so. - */ - if (*len > 0) { - apr_bucket_heap *h; - /* Change the current bucket to refer to what we read */ - a = apr_bucket_heap_make(a, buf, *len, apr_bucket_free); - h = a->data; - h->alloc_len = APR_BUCKET_BUFF_SIZE; /* note the real buffer size */ - *str = buf; - APR_BUCKET_INSERT_AFTER(a, apr_bucket_socket_create(p, a->list)); - } - else { - apr_bucket_free(buf); - a = apr_bucket_immortal_make(a, "", 0); - *str = a->data; - } - return APR_SUCCESS; -} - -APU_DECLARE(apr_bucket *) apr_bucket_socket_make(apr_bucket *b, apr_socket_t *p) -{ - /* - * XXX: We rely on a cleanup on some pool or other to actually - * destroy the socket. We should probably explicitly call apr to - * destroy it instead. - * - * Note that typically the socket is allocated from the connection pool - * so it will disappear when the connection is finished. - */ - b->type = &apr_bucket_type_socket; - b->length = (apr_size_t)(-1); - b->start = -1; - b->data = p; - - return b; -} - -APU_DECLARE(apr_bucket *) apr_bucket_socket_create(apr_socket_t *p, - apr_bucket_alloc_t *list) -{ - apr_bucket *b = apr_bucket_alloc(sizeof(*b), list); - - APR_BUCKET_INIT(b); - b->free = apr_bucket_free; - b->list = list; - return apr_bucket_socket_make(b, p); -} - -APU_DECLARE_DATA const apr_bucket_type_t apr_bucket_type_socket = { - "SOCKET", 5, APR_BUCKET_DATA, - apr_bucket_destroy_noop, - socket_bucket_read, - apr_bucket_setaside_notimpl, - apr_bucket_split_notimpl, - apr_bucket_copy_notimpl -}; diff --git a/libs/apr-util/build-outputs.mk b/libs/apr-util/build-outputs.mk deleted file mode 100644 index d42cda80ff9..00000000000 --- a/libs/apr-util/build-outputs.mk +++ /dev/null @@ -1,40 +0,0 @@ -# DO NOT EDIT. AUTOMATICALLY GENERATED. - -crypto/apr_md5.lo: crypto/apr_md5.c .make.dirs include/apr_xlate.h include/apr_md5.h include/apr_sha1.h -crypto/uuid.lo: crypto/uuid.c .make.dirs include/apr_uuid.h -crypto/apr_sha1.lo: crypto/apr_sha1.c .make.dirs include/apr_xlate.h include/apr_sha1.h include/apr_base64.h -crypto/getuuid.lo: crypto/getuuid.c .make.dirs include/apr_uuid.h include/apr_md5.h include/apr_xlate.h -crypto/apr_md4.lo: crypto/apr_md4.c .make.dirs include/apr_md4.h include/apr_xlate.h -encoding/apr_base64.lo: encoding/apr_base64.c .make.dirs include/apr_base64.h include/apr_xlate.h -hooks/apr_hooks.lo: hooks/apr_hooks.c .make.dirs include/apr_optional_hooks.h include/apr_optional.h include/apr_hooks.h -misc/apr_reslist.lo: misc/apr_reslist.c .make.dirs include/apr_reslist.h -misc/apr_rmm.lo: misc/apr_rmm.c .make.dirs include/apr_rmm.h include/apr_anylock.h -misc/apr_date.lo: misc/apr_date.c .make.dirs include/apr_date.h -misc/apu_version.lo: misc/apu_version.c .make.dirs include/apu_version.h -misc/apr_queue.lo: misc/apr_queue.c .make.dirs include/apr_queue.h -uri/apr_uri.lo: uri/apr_uri.c .make.dirs include/apr_uri.h -xml/apr_xml.lo: xml/apr_xml.c .make.dirs include/apr_xml.h include/apr_xlate.h -strmatch/apr_strmatch.lo: strmatch/apr_strmatch.c .make.dirs include/apr_strmatch.h -xlate/xlate.lo: xlate/xlate.c .make.dirs include/apr_xlate.h - -OBJECTS_all = crypto/apr_md5.lo crypto/uuid.lo crypto/apr_sha1.lo crypto/getuuid.lo crypto/apr_md4.lo encoding/apr_base64.lo hooks/apr_hooks.lo misc/apr_reslist.lo misc/apr_rmm.lo misc/apr_date.lo misc/apu_version.lo misc/apr_queue.lo uri/apr_uri.lo xml/apr_xml.lo strmatch/apr_strmatch.lo xlate/xlate.lo - -OBJECTS_unix = $(OBJECTS_all) - -OBJECTS_aix = $(OBJECTS_all) - -OBJECTS_beos = $(OBJECTS_all) - -OBJECTS_os2 = $(OBJECTS_all) - -OBJECTS_os390 = $(OBJECTS_all) - -HEADERS = $(top_srcdir)/include/apr_optional.h $(top_srcdir)/include/apu_version.h $(top_srcdir)/include/apr_strmatch.h $(top_srcdir)/include/apr_optional_hooks.h $(top_srcdir)/include/apr_sdbm.h $(top_srcdir)/include/apr_md4.h $(top_srcdir)/include/apr_reslist.h $(top_srcdir)/include/apr_base64.h $(top_srcdir)/include/apr_xml.h $(top_srcdir)/include/apr_anylock.h $(top_srcdir)/include/apr_rmm.h $(top_srcdir)/include/apr_md5.h $(top_srcdir)/include/apr_date.h $(top_srcdir)/include/apr_hooks.h $(top_srcdir)/include/apr_xlate.h $(top_srcdir)/include/apr_queue.h $(top_srcdir)/include/apr_uri.h $(top_srcdir)/include/apr_uuid.h $(top_srcdir)/include/apr_sha1.h - -SOURCE_DIRS = xml encoding hooks misc crypto uri strmatch xlate $(EXTRA_SOURCE_DIRS) - -BUILD_DIRS = crypto encoding hooks misc strmatch uri xlate xml - -.make.dirs: $(srcdir)/build-outputs.mk - @for d in $(BUILD_DIRS); do test -d $$d || mkdir $$d; done - @echo timestamp > $@ diff --git a/libs/apr-util/build.conf b/libs/apr-util/build.conf deleted file mode 100644 index 066009fdaa3..00000000000 --- a/libs/apr-util/build.conf +++ /dev/null @@ -1,32 +0,0 @@ -# -# Configuration file for APRUTIL. Used by APR/build/gen-build.py -# - -[options] - -# the platform-independent .c files -paths = - buckets/*.c - crypto/*.c - dbm/*.c - dbm/sdbm/*.c - encoding/*.c - hooks/*.c - ldap/*.c - misc/*.c - uri/apr_uri.c - xml/*.c - strmatch/*.c - xlate/*.c - dbd/*.c - -# we have no platform-specific subdirs -platform_dirs = - -# the public headers -headers = include/*.h - -# gen_uri_delim.c - -# we have a recursive makefile for the test files (for now) -# test/*.c diff --git a/libs/apr-util/build/apu-conf.m4 b/libs/apr-util/build/apu-conf.m4 deleted file mode 100644 index b78b038e7bc..00000000000 --- a/libs/apr-util/build/apu-conf.m4 +++ /dev/null @@ -1,435 +0,0 @@ -dnl -------------------------------------------------------- -*- autoconf -*- -dnl Copyright 2000-2005 The Apache Software Foundation or its licensors, as -dnl applicable. -dnl -dnl Licensed under the Apache License, Version 2.0 (the "License"); -dnl you may not use this file except in compliance with the License. -dnl You may obtain a copy of the License at -dnl -dnl http://www.apache.org/licenses/LICENSE-2.0 -dnl -dnl Unless required by applicable law or agreed to in writing, software -dnl distributed under the License is distributed on an "AS IS" BASIS, -dnl WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -dnl See the License for the specific language governing permissions and -dnl limitations under the License. - - -dnl -dnl custom autoconf rules for APRUTIL -dnl - -dnl -dnl APU_FIND_APR: figure out where APR is located -dnl -AC_DEFUN([APU_FIND_APR], [ - - dnl use the find_apr.m4 script to locate APR. sets apr_found and apr_config - APR_FIND_APR(,,,[1]) - if test "$apr_found" = "no"; then - AC_MSG_ERROR(APR could not be located. Please use the --with-apr option.) - fi - - APR_BUILD_DIR="`$apr_config --installbuilddir`" - - dnl make APR_BUILD_DIR an absolute directory (we'll need it in the - dnl sub-projects in some cases) - APR_BUILD_DIR="`cd $APR_BUILD_DIR && pwd`" - - APR_INCLUDES="`$apr_config --includes`" - APR_LIBS="`$apr_config --link-libtool --libs`" - APR_SO_EXT="`$apr_config --apr-so-ext`" - APR_LIB_TARGET="`$apr_config --apr-lib-target`" - - AC_SUBST(APR_INCLUDES) - AC_SUBST(APR_LIBS) - AC_SUBST(APR_BUILD_DIR) -]) - - -dnl -dnl APU_TEST_EXPAT(directory): test if Expat is located in the specified dir -dnl -dnl if present: sets expat_include_dir, expat_libs, possibly expat_old -dnl -AC_DEFUN([APU_TEST_EXPAT], [ - AC_MSG_CHECKING(for Expat in ifelse($2,,$1,$2)) - - expat_libtool="" - - if test -r "$1/lib/expat.h.in"; then - dnl Expat 1.95.* distribution - expat_include_dir="$1/lib" - expat_ldflags="-L$1/lib" - expat_libs="-lexpat" - expat_libtool="$1/lib/libexpat.la" - elif test -r "$1/include/expat.h" -a \ - -r "$1/lib/libexpat.la"; then - dnl Expat 1.95.* installation (with libtool) - expat_include_dir="$1/include" - expat_ldflags="-L$1/lib" - expat_libs="-lexpat" - expat_libtool="$1/lib/libexpat.la" - elif test -r "$1/include/expat.h" -a \ - -r "$1/lib64/libexpat.la"; then - dnl Expat 1.95.* installation on certain 64-bit platforms (with libtool) - expat_include_dir="$1/include" - expat_ldflags="-L$1/lib64" - expat_libs="-lexpat" - expat_libtool="$1/lib64/libexpat.la" - elif test -r "$1/include/expat.h" -a \ - -r "$1/lib/libexpat.a"; then - dnl Expat 1.95.* installation (without libtool) - dnl FreeBSD textproc/expat2 - expat_include_dir="$1/include" - expat_ldflags="-L$1/lib" - expat_libs="-lexpat" - elif test -r "$1/xmlparse.h"; then - dnl maybe an expat-lite. use this dir for both includes and libs - expat_include_dir="$1" - expat_ldflags="-L$1" - expat_libs="-lexpat" - expat_libtool="$1/libexpat.la" - expat_old=yes - elif test -r "$1/include/xmlparse.h" -a \ - -r "$1/lib/libexpat.a"; then - dnl previously installed expat - expat_include_dir="$1/include" - expat_ldflags="-L$1/lib" - expat_libs="-lexpat" - expat_old=yes - elif test -r "$1/include/xml/xmlparse.h" -a \ - -r "$1/lib/xml/libexpat.a"; then - dnl previously installed expat - expat_include_dir="$1/include/xml" - expat_ldflags="-L$1/lib" - expat_libs="-lexpat" - expat_old=yes - elif test -r "$1/include/xmltok/xmlparse.h"; then - dnl Debian distribution - expat_include_dir="$1/include/xmltok" - expat_ldflags="-L$1/lib" - expat_libs="-lxmlparse -lxmltok" - expat_old=yes - elif test -r "$1/include/xml/xmlparse.h" -a \ - -r "$1/lib/libexpat.a"; then - dnl FreeBSD textproc/expat package - expat_include_dir="$1/include/xml" - expat_ldflags="-L$1/lib" - expat_libs="-lexpat" - expat_old=yes - elif test -r "$1/xmlparse/xmlparse.h"; then - dnl Expat 1.0 or 1.1 source directory - expat_include_dir="$1/xmlparse" - expat_ldflags="-L$1" - expat_libs="-lexpat" - expat_old=yes - fi - dnl ### test for installed Expat 1.95.* distros - - if test -n "$expat_include_dir"; then - dnl ### more info about what we found there? version? using .la? - AC_MSG_RESULT(yes) - else - AC_MSG_RESULT(no) - fi -]) - - -dnl -dnl APU_FIND_EXPAT: figure out where EXPAT is located (or use bundled) -dnl -AC_DEFUN([APU_FIND_EXPAT], [ - -AC_ARG_WITH([expat], -[ --with-expat=DIR specify Expat location or 'builtin'], [ - if test "$withval" = "yes"; then - AC_MSG_ERROR([a directory must be specified for --with-expat]) - elif test "$withval" = "no"; then - AC_MSG_ERROR([Expat cannot be disabled (at this time)]) - elif test "$withval" = "builtin"; then - abs_expatdir="`cd $srcdir/xml/expat && pwd`" - if test -d $abs_expatdir/. -a ! -d xml/expat/.; then - $mkdir_p xml/expat - fi - APU_TEST_EXPAT($abs_expatdir, xml/expat) - else - abs_expatdir="`cd $withval && pwd`" - APU_TEST_EXPAT($abs_expatdir, $withval) - if test -z "$expat_include_dir"; then - AC_MSG_ERROR([Expat was not found (or recognized) in \"$withval\"]) - fi - fi -]) - -if test -z "$expat_include_dir"; then - for d in /usr /usr/local xml/expat-cvs xml/expat $srcdir/xml/expat ; do - APU_TEST_EXPAT($d) - if test -n "$expat_include_dir"; then - dnl For /usr installs of expat, we can't specify -L/usr/lib - if test "$d" = "/usr"; then - expat_ldflags="" - fi - break - fi - done -fi -if test -z "$expat_include_dir"; then - AC_MSG_ERROR([could not locate Expat. use --with-expat]) -fi - -dnl If this expat doesn't use libtool natively, we'll mimic it for our -dnl dependency library generation. -if test -z "$expat_libtool"; then - expat_libtool="$expat_ldflags $expat_libs" -fi - -if test -n "$expat_old"; then - AC_DEFINE(APR_HAVE_OLD_EXPAT, 1, [define if Expat 1.0 or 1.1 was found]) -fi - -dnl special-case the bundled distribution (use absolute dirs) -if test "$expat_include_dir" = "xml/expat/lib" -o "$expat_include_dir" = "xml/expat-cvs/lib"; then - bundled_subdir="`echo $expat_include_dir | sed -e 's%/lib%%'`" - APR_SUBDIR_CONFIG($bundled_subdir, [--prefix=$prefix --exec-prefix=$exec_prefix --libdir=$libdir --includedir=$includedir --bindir=$bindir]) - expat_include_dir=$top_builddir/$bundled_subdir/lib - expat_ldflags="-L$top_builddir/$bundled_subdir/lib" - expat_libs="-lexpat" - expat_libtool=$top_builddir/$bundled_subdir/lib/libexpat.la - APR_XML_SUBDIRS="`echo $bundled_subdir | sed -e 's%xml/%%'`" - APR_ADDTO(APRUTIL_EXPORT_LIBS, [$expat_libtool]) -else -if test "$expat_include_dir" = "$abs_srcdir/xml/expat/include" -o "$expat_include_dir" = "$abs_srcdir/xml/expat/lib"; then - dnl This is a bit of a hack. This only works because we know that - dnl we are working with the bundled version of the software. - bundled_subdir="xml/expat" - APR_SUBDIR_CONFIG($bundled_subdir, [--prefix=$prefix --exec-prefix=$exec_prefix --libdir=$libdir --includedir=$includedir --bindir=$bindir]) - expat_include_dir=$top_builddir/$bundled_subdir/lib - expat_ldflags="-L$top_builddir/$bundled_subdir/lib" - expat_libs="-lexpat" - expat_libtool=$top_builddir/$bundled_subdir/lib/libexpat.la - APR_XML_SUBDIRS="`echo $bundled_subdir | sed -e 's%xml/%%'`" - APR_ADDTO(APRUTIL_EXPORT_LIBS, [$expat_libtool]) -else - APR_ADDTO(APRUTIL_EXPORT_LIBS, [$expat_libs]) -fi -fi -APR_XML_DIR=$bundled_subdir -APR_XML_EXPAT_OLD=$expat_old -AC_SUBST(APR_XML_SUBDIRS) -AC_SUBST(APR_XML_DIR) -AC_SUBST(APR_XML_EXPAT_OLD) - -if test "$expat_include_dir" != "/usr/include"; then - APR_ADDTO(APRUTIL_INCLUDES, [-I$expat_include_dir]) -fi -APR_ADDTO(APRUTIL_LDFLAGS, [$expat_ldflags]) -APR_ADDTO(APRUTIL_LIBS, [$expat_libtool]) -]) - - -dnl -dnl Find a particular LDAP library -dnl -AC_DEFUN([APU_FIND_LDAPLIB], [ - if test ${apu_has_ldap} != "1"; then - ldaplib=$1 - extralib=$2 - unset ac_cv_lib_${ldaplib}_ldap_init - unset ac_cv_lib_${ldaplib}___ldap_init - AC_CHECK_LIB(${ldaplib}, ldap_init, - [ - APR_ADDTO(APRUTIL_EXPORT_LIBS,[-l${ldaplib} ${extralib}]) - APR_ADDTO(APRUTIL_LIBS,[-l${ldaplib} ${extralib}]) - AC_CHECK_LIB(${ldaplib}, ldapssl_client_init, apu_has_ldapssl_client_init="1", , ${extralib}) - AC_CHECK_LIB(${ldaplib}, ldapssl_client_deinit, apu_has_ldapssl_client_deinit="1", , ${extralib}) - AC_CHECK_LIB(${ldaplib}, ldapssl_add_trusted_cert, apu_has_ldapssl_add_trusted_cert="1", , ${extralib}) - AC_CHECK_LIB(${ldaplib}, ldap_start_tls_s, apu_has_ldap_start_tls_s="1", , ${extralib}) - AC_CHECK_LIB(${ldaplib}, ldap_sslinit, apu_has_ldap_sslinit="1", , ${extralib}) - AC_CHECK_LIB(${ldaplib}, ldapssl_init, apu_has_ldapssl_init="1", , ${extralib}) - AC_CHECK_LIB(${ldaplib}, ldapssl_install_routines, apu_has_ldapssl_install_routines="1", , ${extralib}) - apu_has_ldap="1"; - ], , ${extralib}) - fi -]) - - -dnl -dnl APU_FIND_LDAP: figure out where LDAP is located -dnl -AC_DEFUN([APU_FIND_LDAP], [ - -echo $ac_n "${nl}checking for ldap support..." - -apu_has_ldap="0"; -apu_has_ldapssl_client_init="0" -apu_has_ldapssl_client_deinit="0" -apu_has_ldapssl_add_trusted_cert="0" -apu_has_ldap_start_tls_s="0" -apu_has_ldapssl_init="0" -apu_has_ldap_sslinit="0" -apu_has_ldapssl_install_routines="0" -apu_has_ldap_openldap="0" -apu_has_ldap_solaris="0" -apu_has_ldap_novell="0" -apu_has_ldap_microsoft="0" -apu_has_ldap_netscape="0" -apu_has_ldap_mozilla="0" -apu_has_ldap_other="0" - -AC_ARG_WITH(ldap-include,[ --with-ldap-include=path path to ldap include files with trailing slash]) -AC_ARG_WITH(ldap-lib,[ --with-ldap-lib=path path to ldap lib file]) -AC_ARG_WITH(ldap,[ --with-ldap=library ldap library to use], - [ - save_cppflags="$CPPFLAGS" - save_ldflags="$LDFLAGS" - save_libs="$LIBS" - if test -n "$with_ldap_include"; then - CPPFLAGS="$CPPFLAGS -I$with_ldap_include" - APR_ADDTO(APRUTIL_INCLUDES, [-I$with_ldap_include]) - fi - if test -n "$with_ldap_lib"; then - LDFLAGS="$LDFLAGS -L$with_ldap_lib" - APR_ADDTO(APRUTIL_LDFLAGS, [-L$with_ldap_lib]) - fi - - LIBLDAP="$withval" - if test "$LIBLDAP" = "yes"; then -dnl The iPlanet C SDK 5.0 is as yet untested... - APU_FIND_LDAPLIB("ldap50", "-lnspr4 -lplc4 -lplds4 -liutil50 -llber50 -lldif50 -lnss3 -lprldap50 -lssl3 -lssldap50") - APU_FIND_LDAPLIB("ldapssl41", "-lnspr3 -lplc3 -lplds3") - APU_FIND_LDAPLIB("ldapssl40") - APU_FIND_LDAPLIB("ldapssl30") - APU_FIND_LDAPLIB("ldapssl20") - APU_FIND_LDAPLIB("ldapsdk", "-lldapx -lldapssl -lldapgss -lgssapi_krb5") - APU_FIND_LDAPLIB("ldapsdk", "-lldapx -lldapssl -lldapgss -lgss -lresolv -lsocket") - APU_FIND_LDAPLIB("ldap", "-llber") - APU_FIND_LDAPLIB("ldap", "-llber -lresolv") - APU_FIND_LDAPLIB("ldap", "-llber -lresolv -lsocket -lnsl") - APU_FIND_LDAPLIB("ldap", "-ldl -lpthread") - else - APU_FIND_LDAPLIB($LIBLDAP) - APU_FIND_LDAPLIB($LIBLDAP, "-lresolv") - APU_FIND_LDAPLIB($LIBLDAP, "-lresolv -lsocket -lnsl") - APU_FIND_LDAPLIB($LIBLDAP, "-ldl -lpthread") - fi - - test ${apu_has_ldap} != "1" && AC_MSG_ERROR(could not find an LDAP library) - AC_CHECK_LIB(lber, ber_init) - - AC_CHECK_HEADERS(lber.h, lber_h=["#include "]) - - # Solaris has a problem in which prevents it from - # being included by itself. Check for manually, - # including lber.h first. - AC_CACHE_CHECK([for ldap.h], [apr_cv_hdr_ldap_h], - [AC_TRY_CPP( - [#ifdef HAVE_LBER_H - #include - #endif - #include - ], [apr_cv_hdr_ldap_h=yes], [apr_cv_hdr_ldap_h=no])]) - if test "$apr_cv_hdr_ldap_h" = "yes"; then - ldap_h=["#include "] - AC_DEFINE([HAVE_LDAP_H], 1, [Defined if ldap.h is present]) - fi - - AC_CHECK_HEADERS(ldap_ssl.h, ldap_ssl_h=["#include "]) - - if test "$apr_cv_hdr_ldap_h" = "yes"; then - AC_CACHE_CHECK([for LDAP toolkit], - [apr_cv_ldap_toolkit], [ - if test "x$apr_cv_ldap_toolkit" = "x"; then - AC_EGREP_CPP([OpenLDAP], [$lber_h - $ldap_h - LDAP_VENDOR_NAME], [apu_has_ldap_openldap="1" - apr_cv_ldap_toolkit="OpenLDAP"]) - fi - if test "x$apr_cv_ldap_toolkit" = "x"; then - AC_EGREP_CPP([Sun Microsystems Inc.], [$lber_h - $ldap_h - LDAP_VENDOR_NAME], [apu_has_ldap_solaris="1" - apr_cv_ldap_toolkit="Solaris"]) - fi - if test "x$apr_cv_ldap_toolkit" = "x"; then - AC_EGREP_CPP([Novell], [$lber_h - $ldap_h - LDAP_VENDOR_NAME], [apu_has_ldap_novell="1" - apr_cv_ldap_toolkit="Novell"]) - fi - if test "x$apr_cv_ldap_toolkit" = "x"; then - AC_EGREP_CPP([Microsoft Corporation.], [$lber_h - $ldap_h - LDAP_VENDOR_NAME], [apu_has_ldap_microsoft="1" - apr_cv_ldap_toolkit="Microsoft"]) - fi - if test "x$apr_cv_ldap_toolkit" = "x"; then - AC_EGREP_CPP([Netscape Communications Corp.], [$lber_h - $ldap_h - LDAP_VENDOR_NAME], [apu_has_ldap_netscape="1" - apr_cv_ldap_toolkit="Netscape"]) - fi - if test "x$apr_cv_ldap_toolkit" = "x"; then - AC_EGREP_CPP([mozilla.org], [$lber_h - $ldap_h - LDAP_VENDOR_NAME], [apu_has_ldap_mozilla="1" - apr_cv_ldap_toolkit="Mozilla"]) - fi - if test "x$apr_cv_ldap_toolkit" = "x"; then - apu_has_ldap_other="1" - apr_cv_ldap_toolkit="unknown" - fi - ]) - fi - - CPPFLAGS=$save_cppflags - LDFLAGS=$save_ldflags - LIBS=$save_libs - ]) - -AC_SUBST(ldap_h) -AC_SUBST(lber_h) -AC_SUBST(ldap_ssl_h) -AC_SUBST(apu_has_ldapssl_client_init) -AC_SUBST(apu_has_ldapssl_client_deinit) -AC_SUBST(apu_has_ldapssl_add_trusted_cert) -AC_SUBST(apu_has_ldap_start_tls_s) -AC_SUBST(apu_has_ldapssl_init) -AC_SUBST(apu_has_ldap_sslinit) -AC_SUBST(apu_has_ldapssl_install_routines) -AC_SUBST(apu_has_ldap) -AC_SUBST(apu_has_ldap_openldap) -AC_SUBST(apu_has_ldap_solaris) -AC_SUBST(apu_has_ldap_novell) -AC_SUBST(apu_has_ldap_microsoft) -AC_SUBST(apu_has_ldap_netscape) -AC_SUBST(apu_has_ldap_mozilla) -AC_SUBST(apu_has_ldap_other) - -]) - -dnl -dnl APU_CHECK_CRYPT_R_STYLE -dnl -dnl Decide which of a couple of flavors of crypt_r() is necessary for -dnl this platform. -dnl -AC_DEFUN([APU_CHECK_CRYPT_R_STYLE], [ - -AC_CACHE_CHECK([style of crypt_r], apr_cv_crypt_r_style, -[AC_TRY_COMPILE([#include ], - [CRYPTD buffer; - crypt_r("passwd", "hash", &buffer);], - [apr_cv_crypt_r_style=cryptd], - [AC_TRY_COMPILE([#include ], - [struct crypt_data buffer; - crypt_r("passwd", "hash", &buffer);], - [apr_cv_crypt_r_style=struct_crypt_data], - [apr_cv_crypt_r_style=none])])]) - -if test "$apr_cv_crypt_r_style" = "cryptd"; then - AC_DEFINE(CRYPT_R_CRYPTD, 1, [Define if crypt_r has uses CRYPTD]) -elif test "$apr_cv_crypt_r_style" = "struct_crypt_data"; then - AC_DEFINE(CRYPT_R_STRUCT_CRYPT_DATA, 1, [Define if crypt_r uses struct crypt_data]) -fi -]) diff --git a/libs/apr-util/build/apu-hints.m4 b/libs/apr-util/build/apu-hints.m4 deleted file mode 100644 index 20878d3275e..00000000000 --- a/libs/apr-util/build/apu-hints.m4 +++ /dev/null @@ -1,61 +0,0 @@ -dnl -------------------------------------------------------- -*- autoconf -*- -dnl Copyright 2003-2005 The Apache Software Foundation or its licensors, as -dnl applicable. -dnl -dnl Licensed under the Apache License, Version 2.0 (the "License"); -dnl you may not use this file except in compliance with the License. -dnl You may obtain a copy of the License at -dnl -dnl http://www.apache.org/licenses/LICENSE-2.0 -dnl -dnl Unless required by applicable law or agreed to in writing, software -dnl distributed under the License is distributed on an "AS IS" BASIS, -dnl WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -dnl See the License for the specific language governing permissions and -dnl limitations under the License. - -dnl ----------------------------------------------------------------- -dnl apu-hints.m4: apr-util's autoconf macros for platform-specific hints -dnl -dnl We preload various configure settings depending -dnl on previously obtained platform knowledge. -dnl We allow all settings to be overridden from -dnl the command-line. - -dnl -dnl APU_PRELOAD -dnl -dnl Preload various build parameters based on outside knowledge. -dnl -AC_DEFUN([APU_PRELOAD], [ -if test "x$apu_preload_done" != "xyes" ; then - apu_preload_done="yes" - - echo "Applying apr-util hints file rules for $host" - - case "$host" in - *-dec-osf*) - APR_SETIFNULL(apu_crypt_threadsafe, [1]) - ;; - *-hp-hpux11.*) - APR_SETIFNULL(apu_crypt_threadsafe, [1]) - ;; - *-ibm-aix4*|*-ibm-aix5.1*) - APR_SETIFNULL(apu_iconv_inbuf_const, [1]) - ;; - *-ibm-os390) - APR_SETIFNULL(apu_crypt_threadsafe, [1]) - ;; - *-solaris2*) - APR_SETIFNULL(apu_iconv_inbuf_const, [1]) - APR_SETIFNULL(apu_crypt_threadsafe, [1]) - ;; - *-sco3.2v5*) - APR_SETIFNULL(apu_db_xtra_libs, [-lsocket]) - ;; - esac - -fi -]) - - diff --git a/libs/apr-util/build/apu-iconv.m4 b/libs/apr-util/build/apu-iconv.m4 deleted file mode 100644 index b27b75cec7d..00000000000 --- a/libs/apr-util/build/apu-iconv.m4 +++ /dev/null @@ -1,123 +0,0 @@ -dnl -------------------------------------------------------- -*- autoconf -*- -dnl Copyright 2002-2005 The Apache Software Foundation, or its licensors, as -dnl applicable. -dnl -dnl Licensed under the Apache License, Version 2.0 (the "License"); -dnl you may not use this file except in compliance with the License. -dnl You may obtain a copy of the License at -dnl -dnl http://www.apache.org/licenses/LICENSE-2.0 -dnl -dnl Unless required by applicable law or agreed to in writing, software -dnl distributed under the License is distributed on an "AS IS" BASIS, -dnl WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -dnl See the License for the specific language governing permissions and -dnl limitations under the License. - -dnl -dnl APU_TRY_ICONV[ IF-SUCCESS, IF-FAILURE ]: try to compile for iconv. -dnl -AC_DEFUN([APU_TRY_ICONV], [ - AC_TRY_LINK([ -#include -#include -], -[ - iconv_t cd = iconv_open("", ""); - iconv(cd, NULL, NULL, NULL, NULL); -], [$1], [$2]) -]) - -dnl -dnl APU_FIND_ICONV: find an iconv library -dnl -AC_DEFUN([APU_FIND_ICONV], [ - -apu_iconv_dir="unknown" -have_apr_iconv="0" -AC_ARG_WITH(iconv,[ --with-iconv[=DIR] path to iconv installation], - [ apu_iconv_dir="$withval" - if test "$apu_iconv_dir" != "yes"; then - APR_ADDTO(CPPFLAGS,[-I$apu_iconv_dir/include]) - APR_ADDTO(LDFLAGS,[-L$apu_iconv_dir/lib]) - fi - if test -f "$apu_iconv_dir/include/api_version.h"; then - have_apr_iconv="1" - have_iconv="0" - APR_REMOVEFROM(LIBS,[-lapriconv]) - AC_MSG_RESULT("Using apr-iconv") - fi - ]) - -if test "$have_apr_iconv" != "1"; then - AC_CHECK_HEADER(iconv.h, [ - APU_TRY_ICONV([ have_iconv="1" ], [ - - APR_ADDTO(LIBS,[-liconv]) - - APU_TRY_ICONV([ - APR_ADDTO(APRUTIL_LIBS,[-liconv]) - APR_ADDTO(APRUTIL_EXPORT_LIBS,[-liconv]) - have_iconv="1" ], - [ have_iconv="0" ]) - - APR_REMOVEFROM(LIBS,[-liconv]) - - ]) - ], [ have_iconv="0" ]) -fi - -if test "$apu_iconv_dir" != "unknown"; then - if test "$have_iconv" != "1"; then - if test "$have_apr_iconv" != "1"; then - AC_MSG_ERROR([iconv support requested, but not found]) - fi - fi - APR_REMOVEFROM(CPPFLAGS,[-I$apu_iconv_dir/include]) - APR_REMOVEFROM(LDFLAGS,[-L$apu_iconv_dir/lib]) - APR_ADDTO(APRUTIL_INCLUDES,[-I$apu_iconv_dir/include]) - APR_ADDTO(APRUTIL_LDFLAGS,[-L$apu_iconv_dir/lib]) -fi - -if test "$have_iconv" = "1"; then - APU_CHECK_ICONV_INBUF -fi - -APR_FLAG_HEADERS(iconv.h langinfo.h) -APR_FLAG_FUNCS(nl_langinfo) -APR_CHECK_DEFINE(CODESET, langinfo.h, [CODESET defined in langinfo.h]) - -AC_SUBST(have_iconv) -AC_SUBST(have_apr_iconv) -])dnl - -dnl -dnl APU_CHECK_ICONV_INBUF -dnl -dnl Decide whether or not the inbuf parameter to iconv() is const. -dnl -dnl We try to compile something without const. If it fails to -dnl compile, we assume that the system's iconv() has const. -dnl Unfortunately, we won't realize when there was a compile -dnl warning, so we allow a variable -- apu_iconv_inbuf_const -- to -dnl be set in hints.m4 to specify whether or not iconv() has const -dnl on this parameter. -dnl -AC_DEFUN([APU_CHECK_ICONV_INBUF], [ -AC_MSG_CHECKING(for type of inbuf parameter to iconv) -if test "x$apu_iconv_inbuf_const" = "x"; then - APR_TRY_COMPILE_NO_WARNING([ - #include - #include - ],[ - iconv(0,(char **)0,(size_t *)0,(char **)0,(size_t *)0); - ], apu_iconv_inbuf_const="0", apu_iconv_inbuf_const="1") -fi -if test "$apu_iconv_inbuf_const" = "1"; then - AC_DEFINE(APU_ICONV_INBUF_CONST, 1, [Define if the inbuf parm to iconv() is const char **]) - msg="const char **" -else - msg="char **" -fi -AC_MSG_RESULT([$msg]) -])dnl diff --git a/libs/apr-util/build/dbd.m4 b/libs/apr-util/build/dbd.m4 deleted file mode 100644 index 076efb51e6f..00000000000 --- a/libs/apr-util/build/dbd.m4 +++ /dev/null @@ -1,278 +0,0 @@ -dnl -------------------------------------------------------- -*- autoconf -*- -dnl Copyright 2005 The Apache Software Foundation or its licensors, as -dnl applicable. -dnl -dnl Licensed under the Apache License, Version 2.0 (the "License"); -dnl you may not use this file except in compliance with the License. -dnl You may obtain a copy of the License at -dnl -dnl http://www.apache.org/licenses/LICENSE-2.0 -dnl -dnl Unless required by applicable law or agreed to in writing, software -dnl distributed under the License is distributed on an "AS IS" BASIS, -dnl WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -dnl See the License for the specific language governing permissions and -dnl limitations under the License. - -dnl -dnl DBD module -dnl - -dnl -dnl APU_CHECK_DBD: compile backends for apr_dbd. -dnl -AC_DEFUN([APU_CHECK_DBD], [ - apu_have_pgsql=0 - - AC_ARG_WITH([pgsql], [ - --with-pgsql=DIR specify PostgreSQL location - ], [ - apu_have_pgsql=0 - if test "$withval" = "yes"; then - AC_CHECK_HEADERS(libpq-fe.h, AC_CHECK_LIB(pq, PQsendQueryPrepared, [apu_have_pgsql=1])) - if test "$apu_have_pgsql" = "0"; then - AC_CHECK_HEADERS(postgresql/libpq-fe.h, AC_CHECK_LIB(pq, PQsendQueryPrepared, [apu_have_pgsql=1])) - fi - elif test "$withval" = "no"; then - apu_have_pgsql=0 - else - old_cppflags="$CPPFLAGS" - old_ldflags="$LDFLAGS" - - pgsql_CPPFLAGS="-I$withval/include" - pgsql_LDFLAGS="-L$withval/lib " - - APR_ADDTO(CPPFLAGS, [$pgsql_CPPFLAGS]) - APR_ADDTO(LDFLAGS, [$pgsql_LDFLAGS]) - - AC_MSG_NOTICE(checking for pgsql in $withval) - AC_CHECK_HEADERS(libpq-fe.h, AC_CHECK_LIB(pq, PQsendQueryPrepared, [apu_have_pgsql=1])) - if test "$apu_have_pgsql" != "0"; then - APR_ADDTO(APRUTIL_LDFLAGS, [-L$withval/lib]) - APR_ADDTO(APRUTIL_INCLUDES, [-I$withval/include]) - fi - if test "$apu_have_pgsql" != "1"; then - AC_CHECK_HEADERS(postgresql/libpq-fe.h, AC_CHECK_LIB(pq, PQsendQueryPrepared, [apu_have_pgsql=1])) - if test "$apu_have_pgsql" != "0"; then - APR_ADDTO(APRUTIL_INCLUDES, [-I$withval/include/postgresql]) - APR_ADDTO(APRUTIL_LDFLAGS, [-L$withval/lib]) - fi - fi - - CPPFLAGS="$old_cppflags" - LDFLAGS="$old_ldflags" - fi - ], [ - apu_have_pgsql=0 - AC_CHECK_HEADERS(libpq-fe.h, AC_CHECK_LIB(pq, PQsendQueryPrepared, [apu_have_pgsql=1])) - ]) - AC_SUBST(apu_have_pgsql) - dnl Since we have already done the AC_CHECK_LIB tests, if we have it, - dnl we know the library is there. - if test "$apu_have_pgsql" = "1"; then - APR_ADDTO(APRUTIL_EXPORT_LIBS,[-lpq]) - APR_ADDTO(APRUTIL_LIBS,[-lpq]) - fi -]) -dnl -AC_DEFUN([APU_CHECK_DBD_MYSQL], [ - apu_have_mysql=0 - - AC_CHECK_FILES([dbd/apr_dbd_mysql.c],[ - AC_ARG_WITH([mysql], [ - --with-mysql=DIR **** SEE INSTALL.MySQL **** - ], [ - apu_have_mysql=0 - if test "$withval" = "yes"; then - old_cppflags="$CPPFLAGS" - old_ldflags="$LDFLAGS" - - AC_PATH_PROG([MYSQL_CONFIG],[mysql_config]) - if test "x$MYSQL_CONFIG" != 'x'; then - mysql_CPPFLAGS="`$MYSQL_CONFIG --include`" - mysql_LDFLAGS="`$MYSQL_CONFIG --libs_r`" - - APR_ADDTO(CPPFLAGS, [$mysql_CPPFLAGS]) - APR_ADDTO(LDFLAGS, [$mysql_LDFLAGS]) - fi - - AC_CHECK_HEADERS(mysql.h, AC_CHECK_LIB(mysqlclient_r, mysql_init, [apu_have_mysql=1])) - if test "$apu_have_mysql" = "0"; then - AC_CHECK_HEADERS(mysql/mysql.h, AC_CHECK_LIB(mysqlclient_r, mysql_init, [apu_have_mysql=1])) - else - if test "x$MYSQL_CONFIG" != 'x'; then - APR_ADDTO(APRUTIL_INCLUDES, [$mysql_CPPFLAGS]) - APR_ADDTO(APRUTIL_LDFLAGS, [$mysql_LDFLAGS]) - fi - fi - - CPPFLAGS="$old_cppflags" - LDFLAGS="$old_ldflags" - elif test "$withval" = "no"; then - apu_have_mysql=0 - else - old_cppflags="$CPPFLAGS" - old_ldflags="$LDFLAGS" - - AC_PATH_PROG([MYSQL_CONFIG],[mysql_config],,[$withval/bin]) - if test "x$MYSQL_CONFIG" != 'x'; then - mysql_CPPFLAGS="`$MYSQL_CONFIG --include`" - mysql_LDFLAGS="`$MYSQL_CONFIG --libs_r`" - else - mysql_CPPFLAGS="-I$withval/include" - mysql_LDFLAGS="-L$withval/lib " - fi - - APR_ADDTO(CPPFLAGS, [$mysql_CPPFLAGS]) - APR_ADDTO(LDFLAGS, [$mysql_LDFLAGS]) - - AC_MSG_NOTICE(checking for mysql in $withval) - AC_CHECK_HEADERS(mysql.h, AC_CHECK_LIB(mysqlclient_r, mysql_init, [apu_have_mysql=1])) - if test "$apu_have_mysql" != "0"; then - APR_ADDTO(APRUTIL_INCLUDES, [$mysql_CPPFLAGS]) - APR_ADDTO(APRUTIL_LDFLAGS, [$mysql_LDFLAGS]) - fi - - if test "$apu_have_mysql" != "1"; then - AC_CHECK_HEADERS(mysql/mysql.h, AC_CHECK_LIB(mysqlclient_r, mysql_init, [apu_have_mysql=1])) - if test "$apu_have_mysql" != "0"; then - APR_ADDTO(APRUTIL_INCLUDES, [-I$withval/include/mysql]) - APR_ADDTO(APRUTIL_LDFLAGS, [-L$withval/lib]) - fi - fi - - CPPFLAGS="$old_cppflags" - LDFLAGS="$old_ldflags" - fi - ], [ - apu_have_mysql=0 - - old_cppflags="$CPPFLAGS" - old_ldflags="$LDFLAGS" - - AC_PATH_PROG([MYSQL_CONFIG],[mysql_config]) - if test "x$MYSQL_CONFIG" != 'x'; then - mysql_CPPFLAGS="`$MYSQL_CONFIG --include`" - mysql_LDFLAGS="`$MYSQL_CONFIG --libs_r`" - - APR_ADDTO(CPPFLAGS, [$mysql_CPPFLAGS]) - APR_ADDTO(LDFLAGS, [$mysql_LDFLAGS]) - fi - - AC_CHECK_HEADERS(mysql.h, AC_CHECK_LIB(mysqlclient_r, mysql_init, [apu_have_mysql=1])) - - if test "$apu_have_mysql" != "0"; then - if test "x$MYSQL_CONFIG" != 'x'; then - APR_ADDTO(APRUTIL_INCLUDES, [$mysql_CPPFLAGS]) - APR_ADDTO(APRUTIL_LDFLAGS, [$mysql_LDFLAGS]) - fi - fi - - CPPFLAGS="$old_cppflags" - LDFLAGS="$old_ldflags" - ]) - ]) - - AC_SUBST(apu_have_mysql) - - dnl Since we have already done the AC_CHECK_LIB tests, if we have it, - dnl we know the library is there. - if test "$apu_have_mysql" = "1"; then - APR_ADDTO(APRUTIL_EXPORT_LIBS,[-lmysqlclient_r]) - APR_ADDTO(APRUTIL_LIBS,[-lmysqlclient_r]) - fi -]) -dnl -AC_DEFUN([APU_CHECK_DBD_SQLITE3], [ - apu_have_sqlite3=0 - - AC_ARG_WITH([sqlite3], [ - --with-sqlite3=DIR - ], [ - apu_have_sqlite3=0 - if test "$withval" = "yes"; then - AC_CHECK_HEADERS(sqlite3.h, AC_CHECK_LIB(sqlite3, sqlite3_open, [apu_have_sqlite3=1])) - elif test "$withval" = "no"; then - apu_have_sqlite3=0 - else - old_cppflags="$CPPFLAGS" - old_ldflags="$LDFLAGS" - - sqlite3_CPPFLAGS="-I$withval/include" - sqlite3_LDFLAGS="-L$withval/lib " - - APR_ADDTO(CPPFLAGS, [$sqlite3_CPPFLAGS]) - APR_ADDTO(LDFLAGS, [$sqlite3_LDFLAGS]) - - AC_MSG_NOTICE(checking for sqlite3 in $withval) - AC_CHECK_HEADERS(sqlite3.h, AC_CHECK_LIB(sqlite3, sqlite3_open, [apu_have_sqlite3=1])) - if test "$apu_have_sqlite3" != "0"; then - APR_ADDTO(APRUTIL_LDFLAGS, [-L$withval/lib]) - APR_ADDTO(APRUTIL_INCLUDES, [-I$withval/include]) - fi - - CPPFLAGS="$old_cppflags" - LDFLAGS="$old_ldflags" - fi - ], [ - apu_have_sqlite3=0 - AC_CHECK_HEADERS(sqlite3.h, AC_CHECK_LIB(sqlite3, sqlite3_open, [apu_have_sqlite3=1])) - ]) - - AC_SUBST(apu_have_sqlite3) - - dnl Since we have already done the AC_CHECK_LIB tests, if we have it, - dnl we know the library is there. - if test "$apu_have_sqlite3" = "1"; then - APR_ADDTO(APRUTIL_EXPORT_LIBS,[-lsqlite3]) - APR_ADDTO(APRUTIL_LIBS,[-lsqlite3]) - fi -]) -dnl -AC_DEFUN([APU_CHECK_DBD_SQLITE2], [ - apu_have_sqlite2=0 - - AC_ARG_WITH([sqlite2], [ - --with-sqlite2=DIR - ], [ - apu_have_sqlite2=0 - if test "$withval" = "yes"; then - AC_CHECK_HEADERS(sqlite.h, AC_CHECK_LIB(sqlite, sqlite_open, [apu_have_sqlite2=1])) - elif test "$withval" = "no"; then - apu_have_sqlite2=0 - else - old_cppflags="$CPPFLAGS" - old_ldflags="$LDFLAGS" - - sqlite2_CPPFLAGS="-I$withval/include" - sqlite2_LDFLAGS="-L$withval/lib " - - APR_ADDTO(CPPFLAGS, [$sqlite2_CPPFLAGS]) - APR_ADDTO(LDFLAGS, [$sqlite2_LDFLAGS]) - - AC_MSG_NOTICE(checking for sqlite2 in $withval) - AC_CHECK_HEADERS(sqlite.h, AC_CHECK_LIB(sqlite, sqlite_open, [apu_have_sqlite2=1])) - if test "$apu_have_sqlite2" != "0"; then - APR_ADDTO(APRUTIL_LDFLAGS, [-L$withval/lib]) - APR_ADDTO(APRUTIL_INCLUDES, [-I$withval/include]) - fi - - CPPFLAGS="$old_cppflags" - LDFLAGS="$old_ldflags" - fi - ], [ - apu_have_sqlite2=0 - AC_CHECK_HEADERS(sqlite.h, AC_CHECK_LIB(sqlite, sqlite_open, [apu_have_sqlite2=1])) - ]) - - AC_SUBST(apu_have_sqlite2) - - dnl Since we have already done the AC_CHECK_LIB tests, if we have it, - dnl we know the library is there. - if test "$apu_have_sqlite2" = "1"; then - APR_ADDTO(APRUTIL_EXPORT_LIBS,[-lsqlite]) - APR_ADDTO(APRUTIL_LIBS,[-lsqlite]) - fi -]) -dnl - diff --git a/libs/apr-util/build/dbm.m4 b/libs/apr-util/build/dbm.m4 deleted file mode 100644 index 39a6252d714..00000000000 --- a/libs/apr-util/build/dbm.m4 +++ /dev/null @@ -1,870 +0,0 @@ -dnl -------------------------------------------------------- -*- autoconf -*- -dnl Copyright 2002-2005 The Apache Software Foundation or its licensors, as -dnl applicable. -dnl -dnl Licensed under the Apache License, Version 2.0 (the "License"); -dnl you may not use this file except in compliance with the License. -dnl You may obtain a copy of the License at -dnl -dnl http://www.apache.org/licenses/LICENSE-2.0 -dnl -dnl Unless required by applicable law or agreed to in writing, software -dnl distributed under the License is distributed on an "AS IS" BASIS, -dnl WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -dnl See the License for the specific language governing permissions and -dnl limitations under the License. - - -dnl -dnl DBM module -dnl - -dnl APU_LIB_BERKELEY_DB(major, minor, patch, places, headers, libnames) -dnl -dnl Search for a useable version of Berkeley DB in a number of -dnl common places. The installed DB must be no older than the -dnl version given by MAJOR, MINOR, and PATCH. All of these -dnl arguments are allowed to be '-1', indicating we don't care. -dnl PLACES is a list of places to search for a Berkeley DB -dnl installation. HEADERS is a list of headers to try. LIBNAMES -dnl is a list of names of the library to attempt to link against, -dnl typically 'db' and 'db4'. -dnl -dnl If we find a useable version, set CPPFLAGS and LIBS as -dnl appropriate, and set the shell variable `apu_have_db' to -dnl `1', and apu_db_lib to the matching lib name, and apu_db_header -dnl to the header to use. Otherwise, set `apu_have_db' to `0'. -dnl -dnl This macro also checks for the `--with-berkeley-db=PATH' flag; -dnl if given, the macro will use the PATH specified, and the -dnl configuration script will die if it can't find the library. If -dnl the user gives the `--without-berkeley-db' flag, the entire -dnl search is skipped. -dnl -dnl We cache the results of individual searches under particular -dnl prefixes, not the overall result of whether we found Berkeley -dnl DB. That way, the user can re-run the configure script with -dnl different --with-berkeley-db switch values, without interference -dnl from the cache. - - -AC_DEFUN([APU_CHECK_BERKELEY_DB], [ - bdb_version=$1 - if test "$2" != "-1"; then - bdb_version="$bdb_version.$2" - if test "$3" != "-1"; then - bdb_version="$bdb_version.$3" - fi - fi - bdb_places=$4 - bdb_default_search_headers=$5 - bdb_default_search_lib_names=$6 - - apu_have_db=0 - - # Save the original values of the flags we tweak. - apu_check_lib_save_libs="$LIBS" - apu_check_lib_save_ldflags="$LDFLAGS" - apu_check_lib_save_cppflags="$CPPFLAGS" - - # The variable `found' is the prefix under which we've found - # Berkeley DB, or `not' if we haven't found it anywhere yet. - found=not - for bdb_place in $bdb_places; do - - LDFLAGS="$apu_check_lib_save_ldflags" - CPPFLAGS="$apu_check_lib_save_cppflags" - case "$bdb_place" in - "std" ) - description="the standard places" - ;; - *":"* ) - header="`echo $bdb_place | sed -e 's/:.*$//'`" - lib="`echo $bdb_place | sed -e 's/^.*://'`" - CPPFLAGS="$CPPFLAGS -I$header" - LDFLAGS="$LDFLAGS -L$lib" - description="$header and $lib" - ;; - * ) - if test -d $bdb_place; then - LDFLAGS="$LDFLAGS -L$bdb_place/lib" - CPPFLAGS="$CPPFLAGS -I$bdb_place/include" - else - AC_MSG_CHECKING([for Berkeley DB $bdb_version in $bdb_place]) - AC_MSG_RESULT([directory not found]) - continue - fi - description="$bdb_place" - ;; - esac - - # Since there is no AC_MSG_NOTICE in autoconf 2.13, we use this - # trick to display a message instead. - AC_MSG_CHECKING([for Berkeley DB $bdb_version in $description]) - AC_MSG_RESULT() - - for bdb_libname in $bdb_default_search_lib_names; do - for bdb_header in $bdb_default_search_headers; do - # Clear the header cache variable for each location - changequote(,) - cache_id="`echo ac_cv_header_${bdb_header} \ - | sed -e 's/[^a-zA-Z0-9_]/_/g'`" - changequote([,]) - unset $cache_id - AC_CHECK_HEADER([$bdb_header], [ - if test "$1" = "3" -o "$1" = "4"; then - # We generate a separate cache variable for each prefix and libname - # we search under. That way, we avoid caching information that - # changes if the user runs `configure' with a different set of - # switches. - changequote(,) - cache_id="`echo apu_cv_check_berkeley_db_$1_$2_$3_${bdb_header}_${bdb_libname}_in_${bdb_place} \ - | sed -e 's/[^a-zA-Z0-9_]/_/g'`" - changequote([,]) - - AC_MSG_CHECKING([for -l$bdb_libname]) - dnl We can't use AC_CACHE_CHECK here, because that won't print out - dnl the value of the computed cache variable properly. - AC_CACHE_VAL($cache_id, - [ - APU_TRY_BERKELEY_DB($1, $2, $3, $bdb_header, $bdb_libname) - eval "$cache_id=$apu_try_berkeley_db" - ]) - result="`eval echo '$'$cache_id`" - AC_MSG_RESULT($result) - elif test "$1" = "1"; then - AC_CHECK_LIB($bdb_libname, - dbopen, - [result=yes], - [result=no] - ) - elif test "$1" = "2"; then - AC_CHECK_LIB($bdb_libname, - db_open, - [result=yes], - [result=no] - ) - fi - ], [result="no"]) - - # If we found it, no need to search any more. - if test "$result" = "yes"; then - found="$bdb_place" - break - fi - done - test "$found" != "not" && break - done - test "$found" != "not" && break - done - - # Restore the original values of the flags we tweak. - LDFLAGS="$apu_check_lib_save_ldflags" - CPPFLAGS="$apu_check_lib_save_cppflags" - - case "$found" in - "not") - apu_have_db=0 - ;; - "std") - apu_db_header=$bdb_header - apu_db_lib=$bdb_libname - apu_have_db=1 - ;; - *":"*) - header="`echo $found | sed -e 's/:.*$//'`" - lib="`echo $found | sed -e 's/^.*://'`" - - APR_ADDTO(APRUTIL_INCLUDES, [-I$header]) - APR_ADDTO(APRUTIL_LDFLAGS, [-L$lib]) - apu_db_header=$bdb_header - apu_db_lib=$bdb_libname - apu_have_db=1 - ;; - *) - APR_ADDTO(APRUTIL_INCLUDES, [-I$found/include]) - APR_ADDTO(APRUTIL_LDFLAGS, [-L$found/lib]) - apu_db_header=$bdb_header - apu_db_lib=$bdb_libname - apu_have_db=1 - ;; - esac -]) - - -dnl APU_TRY_BERKELEY_DB(major, minor, patch, header, libname) -dnl -dnl A subroutine of APU_CHECK_BERKELEY_DB. -dnl -dnl Check that a new-enough version of Berkeley DB is installed. -dnl "New enough" means no older than the version given by MAJOR, -dnl MINOR, and PATCH. The result of the test is not cached; no -dnl messages are printed. Use HEADER as the header file to include. -dnl Use LIBNAME as the library to link against. -dnl (e.g. LIBNAME should usually be "db" or "db4".) -dnl -dnl Set the shell variable `apu_try_berkeley_db' to `yes' if we found -dnl an appropriate version installed, or `no' otherwise. -dnl -dnl This macro uses the Berkeley DB library function `db_version' to -dnl find the version. If the library installed doesn't have this -dnl function, then this macro assumes it is too old. - -dnl NOTE: This is pretty messed up. It seems that the FreeBSD port of -dnl Berkeley DB 4 puts the header file in /usr/local/include/db4, but the -dnl database library in /usr/local/lib, as libdb4.[a|so]. There is no -dnl /usr/local/include/db.h. So if you check for /usr/local first, you'll -dnl get the old header file from /usr/include, and the new library from -dnl /usr/local/lib. Disaster. Thus this test compares the version constants -dnl in the db.h header with the ones returned by db_version(). - - -AC_DEFUN([APU_TRY_BERKELEY_DB], - [ - apu_try_berkeley_db_save_libs="$LIBS" - - apu_check_berkeley_db_major=$1 - apu_check_berkeley_db_minor=$2 - apu_check_berkeley_db_patch=$3 - apu_try_berkeley_db_header=$4 - apu_try_berkeley_db_libname=$5 - - LIBS="$LIBS -l$apu_try_berkeley_db_libname" - AC_TRY_RUN( - [ -#include -#include <$apu_try_berkeley_db_header> -main () -{ - int major, minor, patch; - - db_version(&major, &minor, &patch); - - /* Sanity check: ensure that db.h constants actually match the db library */ - if (major != DB_VERSION_MAJOR - || minor != DB_VERSION_MINOR - || patch != DB_VERSION_PATCH) - exit (1); - - /* Run-time check: ensure the library claims to be the correct version. */ - - if ($apu_check_berkeley_db_major != -1) { - if (major < $apu_check_berkeley_db_major) - exit (1); - if (major > $apu_check_berkeley_db_major) - exit (0); - } - - if ($apu_check_berkeley_db_minor != -1) { - if (minor < $apu_check_berkeley_db_minor) - exit (1); - if (minor > $apu_check_berkeley_db_minor) - exit (0); - } - - if ($apu_check_berkeley_db_patch == -1 - || patch >= $apu_check_berkeley_db_patch) - exit (0); - else - exit (1); -} - ], - [apu_try_berkeley_db=yes], - [apu_try_berkeley_db=no], - [apu_try_berkeley_db=yes] - ) - - LIBS="$apu_try_berkeley_db_save_libs" - ] -) - - -dnl -dnl APU_CHECK_DB1: is DB1 present? -dnl -dnl if present: sets apu_db_header, apu_db_lib, and apu_db_version -dnl -AC_DEFUN([APU_CHECK_DB1], [ - places=$1 - if test -z "$places"; then - places="std" - fi - APU_CHECK_BERKELEY_DB(1, 0, 0, - "$places", - "db1/db.h db.h", - "db1" - ) - if test "$apu_have_db" = "1"; then - apu_db_version=1 - fi -]) - - -dnl -dnl APU_CHECK_DB185: is DB1.85 present? -dnl -dnl if present: sets apu_db_header, apu_db_lib, and apu_db_version -dnl -dnl NB: BerkelyDB v2 and above can be compiled in 1.85 mode -dnl which has a libdb not libdb1 or libdb185 -AC_DEFUN([APU_CHECK_DB185], [ - places=$1 - if test -z "$places"; then - places="std" - fi - APU_CHECK_BERKELEY_DB(1, -1, -1, - "$places", - "db_185.h", - "db" - ) - if test "$apu_have_db" = "1"; then - apu_db_version=185 - fi -]) - - -dnl -dnl APU_CHECK_DB2: is DB2 present? -dnl -dnl if present: sets apu_db_header, apu_db_lib, and apu_db_version -dnl -AC_DEFUN([APU_CHECK_DB2], [ - places=$1 - if test -z "$places"; then - places="std" - fi - APU_CHECK_BERKELEY_DB(2, -1, -1, - "$places", - "db2/db.h db.h", - "db2 db" - ) - if test "$apu_have_db" = "1"; then - apu_db_version=2 - fi -]) - - -dnl -dnl APU_CHECK_DB3: is DB3 present? -dnl -dnl if present: sets apu_db_header, apu_db_lib, and apu_db_version -dnl -AC_DEFUN([APU_CHECK_DB3], [ - places=$1 - if test -z "$places"; then - places="std" - fi - APU_CHECK_BERKELEY_DB(3, -1, -1, - "$places", - "db3/db.h db.h", - "db3 db" - ) - if test "$apu_have_db" = "1"; then - apu_db_version=3 - fi -]) - - -dnl -dnl APU_CHECK_DB4: is DB4 present? -dnl -dnl if present: sets apu_db_header, apu_db_lib, and apu_db_version -dnl -AC_DEFUN([APU_CHECK_DB4], [ - places=$1 - if test -z "$places"; then - places="std /usr/local /usr/local/BerkeleyDB.4.0 /boot/home/config" - fi - APU_CHECK_BERKELEY_DB("4", "0", "-1", - "$places", - "db4/db.h db.h", - "db-4.0 db4 db" - ) - if test "$apu_have_db" = "1"; then - apu_db_version=4 - fi -]) - - -dnl -dnl APU_CHECK_DB41: is DB4.1 present? -dnl -dnl if present: sets apu_db_header, apu_db_lib, and apu_db_version -dnl -AC_DEFUN([APU_CHECK_DB41], [ - places=$1 - if test -z "$places"; then - places="std /usr/local /usr/local/BerkeleyDB.4.1 /boot/home/config" - fi - APU_CHECK_BERKELEY_DB("4", "1", "-1", - "$places", - "db41/db.h db4/db.h db.h", - "db-4.1 db41 db4 db" - ) - if test "$apu_have_db" = "1"; then - apu_db_version=4 - fi -]) - - -dnl -dnl APU_CHECK_DB42: is DB4.2 present? -dnl -dnl if present: sets apu_db_header, apu_db_lib, and apu_db_version -dnl -AC_DEFUN([APU_CHECK_DB42], [ - places=$1 - if test -z "$places"; then - places="std /usr/local /usr/local/BerkeleyDB.4.2 /boot/home/config" - fi - APU_CHECK_BERKELEY_DB("4", "2", "-1", - "$places", - "db42/db.h db4/db.h db.h", - "db-4.2 db42 db4 db" - ) - if test "$apu_have_db" = "1"; then - apu_db_version=4 - fi -]) -dnl -dnl APU_CHECK_DB43: is DB4.3 present? -dnl -dnl if present: sets apu_db_header, apu_db_lib, and apu_db_version -dnl -AC_DEFUN([APU_CHECK_DB43], [ - places=$1 - if test -z "$places"; then - places="std /usr/local/BerkeleyDB.4.3 /boot/home/config" - fi - APU_CHECK_BERKELEY_DB("4", "3", "-1", - "$places", - "db43/db.h db4/db.h db.h", - "db-4.3 db4-4.3 db43 db4 db" - ) - if test "$apu_have_db" = "1"; then - apu_db_version=4 - fi -]) -dnl -dnl APU_CHECK_DB44: is DB4.4 present? -dnl -dnl if present: sets apu_db_header, apu_db_lib, and apu_db_version -dnl -AC_DEFUN([APU_CHECK_DB44], [ - places=$1 - if test -z "$places"; then - places="std /usr/local/BerkeleyDB.4.4 /boot/home/config" - fi - APU_CHECK_BERKELEY_DB("4", "4", "-1", - "$places", - "db44/db.h db4/db.h db.h", - "db-4.4 db4-4.4 db44 db4 db" - ) - if test "$apu_have_db" = "1"; then - apu_db_version=4 - fi -]) -dnl -dnl APU_CHECK_DB45: is DB4.5 present? -dnl -dnl if present: sets apu_db_header, apu_db_lib, and apu_db_version -dnl -AC_DEFUN([APU_CHECK_DB45], [ - places=$1 - if test -z "$places"; then - places="std /usr/local/BerkeleyDB.4.5 /boot/home/config" - fi - APU_CHECK_BERKELEY_DB("4", "5", "-1", - "$places", - "db45/db.h db4/db.h db.h", - "db-4.5 db4-4.5 db45 db4 db" - ) - if test "$apu_have_db" = "1"; then - apu_db_version=4 - fi -]) - -AC_DEFUN([APU_CHECK_DB], [ - requested=$1 - check_places=$2 - - case "$requested" in - db) - APU_CHECK_DB_ALL("$check_places") - if test "$apu_have_db" = "0"; then - AC_MSG_ERROR(Berkeley db requested, but not found) - fi - ;; - db1) - APU_CHECK_DB1("$check_places") - if test "$apu_db_version" != "1"; then - AC_MSG_ERROR(Berkeley db1 not found) - fi - ;; - db185) - APU_CHECK_DB185("$check_places") - if test "$apu_db_version" != "185"; then - AC_MSG_ERROR(Berkeley db185 not found) - fi - ;; - db2) - APU_CHECK_DB2("$check_places") - if test "$apu_db_version" != "2"; then - AC_MSG_ERROR(Berkeley db2 not found) - fi - ;; - db3) - APU_CHECK_DB3("$check_places") - if test "$apu_db_version" != "3"; then - AC_MSG_ERROR(Berkeley db3 not found) - fi - ;; - db4) - APU_CHECK_DB4("$check_places") - if test "$apu_db_version" != "4"; then - AC_MSG_ERROR(Berkeley db4 not found) - fi - ;; - db41) - APU_CHECK_DB41("$check_places") - if test "$apu_db_version" != "4"; then - AC_MSG_ERROR(Berkeley db4 not found) - fi - ;; - db42) - APU_CHECK_DB42("$check_places") - if test "$apu_db_version" != "4"; then - AC_MSG_ERROR(Berkeley db4 not found) - fi - ;; - db43) - APU_CHECK_DB43("$check_places") - if test "$apu_db_version" != "4"; then - AC_MSG_ERROR(Berkeley db4 not found) - fi - ;; - db44) - APU_CHECK_DB44("$check_places") - if test "$apu_db_version" != "4"; then - AC_MSG_ERROR(Berkeley db4 not found) - fi - ;; - db45) - APU_CHECK_DB44("$check_places") - if test "$apu_db_version" != "4"; then - AC_MSG_ERROR(Berkeley db4 not found) - fi - ;; - default) - APU_CHECK_DB_ALL("$check_places") - ;; - esac -]) - -dnl -dnl APU_CHECK_DB_ALL: Try all Berkeley DB versions, from 4.3 to 1. -dnl -AC_DEFUN([APU_CHECK_DB_ALL], [ - all_places=$1 - - APU_CHECK_DB45("$all_places") - if test "$apu_db_version" != "4"; then - APU_CHECK_DB44("$all_places") - if test "$apu_db_version" != "4"; then - APU_CHECK_DB43("$all_places") - if test "$apu_db_version" != "4"; then - APU_CHECK_DB42("$all_places") - if test "$apu_db_version" != "4"; then - APU_CHECK_DB41("$all_places") - if test "$apu_db_version" != "4"; then - APU_CHECK_DB4("$all_places") - if test "$apu_db_version" != "4"; then - APU_CHECK_DB3("$all_places") - if test "$apu_db_version" != "3"; then - APU_CHECK_DB2("$all_places") - if test "$apu_db_version" != "2"; then - APU_CHECK_DB1("$all_places") - if test "$apu_db_version" != "1"; then - APU_CHECK_DB185("$all_places") - fi - fi - fi - fi - fi - fi - fi - fi - fi - AC_MSG_CHECKING(for Berkeley DB) - if test "$apu_have_db" = "1"; then - AC_MSG_RESULT(found db$apu_db_version) - else - AC_MSG_RESULT(not found) - fi -]) - - -dnl -dnl APU_CHECK_DBM: see what kind of DBM backend to use for apr_dbm. -dnl -AC_DEFUN([APU_CHECK_DBM], [ - apu_use_sdbm=0 - apu_use_ndbm=0 - apu_use_gdbm=0 - apu_use_db=0 - dnl it's in our codebase - apu_have_sdbm=1 - apu_have_gdbm=0 - apu_have_ndbm=0 - apu_have_db=0 - - apu_db_header=db.h # default so apu_select_dbm.h is syntactically correct - apu_db_version=0 - - AC_ARG_WITH(dbm, [ - --with-dbm=DBM choose the DBM type to use. - DBM={sdbm,gdbm,ndbm,db,db1,db185,db2,db3,db4,db41,db42,db43,db44,db45} - ], [ - if test "$withval" = "yes"; then - AC_MSG_ERROR([--with-dbm needs to specify a DBM type to use. - One of: sdbm, gdbm, ndbm, db, db1, db185, db2, db3, db4, db41, db42, db43, db44, db45]) - fi - requested="$withval" - ], [ - requested=default - ]) - - dnl We don't pull in GDBM unless the user asks for it, since it's GPL - AC_ARG_WITH([gdbm], [ - --with-gdbm=DIR specify GDBM location - ], [ - apu_have_gdbm=0 - if test "$withval" = "yes"; then - AC_CHECK_HEADER(gdbm.h, AC_CHECK_LIB(gdbm, gdbm_open, [apu_have_gdbm=1])) - elif test "$withval" = "no"; then - apu_have_gdbm=0 - else - CPPFLAGS="-I$withval/include" - LIBS="-L$withval/lib " - - AC_MSG_CHECKING(checking for gdbm in $withval) - AC_CHECK_HEADER(gdbm.h, AC_CHECK_LIB(gdbm, gdbm_open, [apu_have_gdbm=1])) - if test "$apu_have_gdbm" != "0"; then - APR_ADDTO(APRUTIL_LDFLAGS, [-L$withval/lib]) - APR_ADDTO(APRUTIL_INCLUDES, [-I$withval/include]) - fi - fi - ]) - - AC_ARG_WITH([ndbm], [ - --with-ndbm=PATH - Find the NDBM header and library in \`PATH/include' and - \`PATH/lib'. If PATH is of the form \`HEADER:LIB', then search - for header files in HEADER, and the library in LIB. If you omit - the \`=PATH' part completely, the configure script will search - for NDBM in a number of standard places. - ], [ - apu_have_ndbm=0 - if test "$withval" = "yes"; then - AC_MSG_CHECKING(checking for ndbm in the usual places) - apu_want_ndbm=1 - NDBM_INC="" - NDBM_LDFLAGS="" - elif test "$withval" = "no"; then - apu_want_ndbm=0 - else - apu_want_ndbm=1 - case "$withval" in - *":"*) - NDBM_INC="-I`echo $withval |sed -e 's/:.*$//'`" - NDBM_LDFLAGS="-L`echo $withval |sed -e 's/^.*://'`" - AC_MSG_CHECKING(checking for ndbm includes with $NDBM_INC libs with $NDBM_LDFLAGS ) - ;; - *) - NDBM_INC="-I$withval/include" - NDBM_LDFLAGS="-L$withval/lib" - AC_MSG_CHECKING(checking for ndbm includes in $withval) - ;; - esac - fi - - save_cppflags="$CPPFLAGS" - save_ldflags="$LDFLAGS" - CPPFLAGS="$CPPFLAGS $NDBM_INC" - LDFLAGS="$LDFLAGS $NDBM_LDFLAGS" - dnl db_ndbm_open is what sleepcat's compatibility library actually has in it's lib - if test "$apu_want_ndbm" != "0"; then - AC_CHECK_HEADER(ndbm.h, - AC_CHECK_LIB(c, dbm_open, [apu_have_ndbm=1;apu_ndbm_lib=c], - AC_CHECK_LIB(dbm, dbm_open, [apu_have_ndbm=1;apu_ndbm_lib=dbm], - AC_CHECK_LIB(db, dbm_open, [apu_have_ndbm=1;apu_ndbm_lib=db], - AC_CHECK_LIB(db, __db_ndbm_open, [apu_have_ndbm=1;apu_ndbm_lib=db]) - ) - ) - ) - ) - if test "$apu_have_ndbm" != "0"; then - if test "$withval" != "yes"; then - APR_ADDTO(APRUTIL_INCLUDES, [$NDBM_INC]) - APR_ADDTO(APRUTIL_LDFLAGS, [$NDBM_LDFLAGS]) - fi - elif test "$withval" != "yes"; then - AC_ERROR( NDBM not found in the specified directory) - fi - fi - CPPFLAGS="$save_cppflags" - LDFLAGS="$save_ldflags" - ], [ - dnl don't check it no one has asked us for it - apu_have_ndbm=0 - ]) - - - if test -n "$apu_db_xtra_libs"; then - saveddbxtralibs="$LIBS" - LIBS="$apu_db_xtra_libs $LIBS" - fi - - dnl We're going to try to find the highest version of Berkeley DB supported. - dnl - dnl Note that we only do this if the user requested it, since the Sleepycat - dnl license is viral and requires distribution of source along with programs - dnl that use it. - AC_ARG_WITH([berkeley-db], [ - --with-berkeley-db=PATH - Find the Berkeley DB header and library in \`PATH/include' and - \`PATH/lib'. If PATH is of the form \`HEADER:LIB', then search - for header files in HEADER, and the library in LIB. If you omit - the \`=PATH' part completely, the configure script will search - for Berkeley DB in a number of standard places. - ], [ - if test "$withval" = "yes"; then - apu_want_db=1 - user_places="" - elif test "$withval" = "no"; then - apu_want_db=0 - else - apu_want_db=1 - user_places="$withval" - fi - - if test "$apu_want_db" != "0"; then - APU_CHECK_DB($requested, $user_places) - if test "$apu_have_db" = "0"; then - AC_ERROR(Berkeley DB not found.) - fi - fi - ]) - - if test -n "$apu_db_xtra_libs"; then - LIBS="$saveddbxtralibs" - fi - - case "$requested" in - sdbm) - apu_use_sdbm=1 - apu_default_dbm=sdbm - ;; - gdbm) - apu_use_gdbm=1 - apu_default_dbm=gdbm - ;; - ndbm) - apu_use_ndbm=1 - apu_default_dbm=ndbm - ;; - db) - apu_use_db=1 - apu_default_dbm=db - ;; - db1) - apu_use_db=1 - apu_default_dbm=db1 - ;; - db185) - apu_use_db=1 - apu_default_dbm=db185 - ;; - db2) - apu_use_db=1 - apu_default_dbm=db2 - ;; - db3) - apu_use_db=1 - apu_default_dbm=db3 - ;; - db4) - apu_use_db=1 - apu_default_dbm=db4 - ;; - db41) - apu_use_db=1 - apu_default_dbm=db4 - ;; - db42) - apu_use_db=1 - apu_default_dbm=db4 - ;; - db43) - apu_use_db=1 - apu_default_dbm=db4 - ;; - db44) - apu_use_db=1 - apu_default_dbm=db4 - ;; - db45) - apu_use_db=1 - apu_default_dbm=db4 - ;; - default) - dnl ### use more sophisticated DBMs for the default? - apu_default_dbm="sdbm (default)" - apu_use_sdbm=1 - ;; - *) - AC_MSG_ERROR([--with-dbm=$look_for is an unknown DBM type. - Use one of: sdbm, gdbm, ndbm, db, db1, db185, db2, db3, db4, db41, db42, db43, db44 db45]) - ;; - esac - - dnl Yes, it'd be nice if we could collate the output in an order - dnl so that the AC_MSG_CHECKING would be output before the actual - dnl checks, but it isn't happening now. - AC_MSG_CHECKING(for default DBM) - AC_MSG_RESULT($apu_default_dbm) - - AC_SUBST(apu_use_sdbm) - AC_SUBST(apu_use_gdbm) - AC_SUBST(apu_use_ndbm) - AC_SUBST(apu_use_db) - - AC_SUBST(apu_have_sdbm) - AC_SUBST(apu_have_gdbm) - AC_SUBST(apu_have_ndbm) - AC_SUBST(apu_have_db) - AC_SUBST(apu_db_header) - AC_SUBST(apu_db_version) - - dnl Since we have already done the AC_CHECK_LIB tests, if we have it, - dnl we know the library is there. - if test "$apu_have_gdbm" = "1"; then - APR_ADDTO(APRUTIL_EXPORT_LIBS,[-lgdbm]) - APR_ADDTO(APRUTIL_LIBS,[-lgdbm]) - fi - - if test "$apu_have_ndbm" = "1"; then - APR_ADDTO(APRUTIL_EXPORT_LIBS,[-l$apu_ndbm_lib]) - APR_ADDTO(APRUTIL_LIBS,[-l$apu_ndbm_lib]) - fi - - if test "$apu_have_db" = "1"; then - APR_ADDTO(APRUTIL_EXPORT_LIBS,[-l$apu_db_lib]) - APR_ADDTO(APRUTIL_LIBS,[-l$apu_db_lib]) - if test -n "apu_db_xtra_libs"; then - APR_ADDTO(APRUTIL_EXPORT_LIBS,[$apu_db_xtra_libs]) - APR_ADDTO(APRUTIL_LIBS,[$apu_db_xtra_libs]) - fi - fi -]) - diff --git a/libs/apr-util/build/find_apu.m4 b/libs/apr-util/build/find_apu.m4 deleted file mode 100644 index e29bc60923d..00000000000 --- a/libs/apr-util/build/find_apu.m4 +++ /dev/null @@ -1,176 +0,0 @@ -dnl -------------------------------------------------------- -*- autoconf -*- -dnl Copyright 2002-2005 The Apache Software Foundation or its licensors, as -dnl applicable. -dnl -dnl Licensed under the Apache License, Version 2.0 (the "License"); -dnl you may not use this file except in compliance with the License. -dnl You may obtain a copy of the License at -dnl -dnl http://www.apache.org/licenses/LICENSE-2.0 -dnl -dnl Unless required by applicable law or agreed to in writing, software -dnl distributed under the License is distributed on an "AS IS" BASIS, -dnl WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -dnl See the License for the specific language governing permissions and -dnl limitations under the License. - -dnl -dnl find_apu.m4 : locate the APR-util (APU) include files and libraries -dnl -dnl This macro file can be used by applications to find and use the APU -dnl library. It provides a standardized mechanism for using APU. It supports -dnl embedding APU into the application source, or locating an installed -dnl copy of APU. -dnl -dnl APR_FIND_APU(srcdir, builddir, implicit-install-check, acceptable-majors) -dnl -dnl where srcdir is the location of the bundled APU source directory, or -dnl empty if source is not bundled. -dnl -dnl where builddir is the location where the bundled APU will be built, -dnl or empty if the build will occur in the srcdir. -dnl -dnl where implicit-install-check set to 1 indicates if there is no -dnl --with-apr-util option specified, we will look for installed copies. -dnl -dnl where acceptable-majors is a space separated list of acceptable major -dnl version numbers. Often only a single major version will be acceptable. -dnl If multiple versions are specified, and --with-apr-util=PREFIX or the -dnl implicit installed search are used, then the first (leftmost) version -dnl in the list that is found will be used. Currently defaults to [0 1]. -dnl -dnl Sets the following variables on exit: -dnl -dnl apu_found : "yes", "no", "reconfig" -dnl -dnl apu_config : If the apu-config tool exists, this refers to it. If -dnl apu_found is "reconfig", then the bundled directory -dnl should be reconfigured *before* using apu_config. -dnl -dnl Note: this macro file assumes that apr-config has been installed; it -dnl is normally considered a required part of an APR installation. -dnl -dnl Note: At this time, we cannot find *both* a source dir and a build dir. -dnl If both are available, the build directory should be passed to -dnl the --with-apr-util switch. -dnl -dnl Note: the installation layout is presumed to follow the standard -dnl PREFIX/lib and PREFIX/include pattern. If the APU config file -dnl is available (and can be found), then non-standard layouts are -dnl possible, since it will be described in the config file. -dnl -dnl If a bundled source directory is available and needs to be (re)configured, -dnl then apu_found is set to "reconfig". The caller should reconfigure the -dnl (passed-in) source directory, placing the result in the build directory, -dnl as appropriate. -dnl -dnl If apu_found is "yes" or "reconfig", then the caller should use the -dnl value of apu_config to fetch any necessary build/link information. -dnl - -AC_DEFUN([APR_FIND_APU], [ - apu_found="no" - - if test "$target_os" = "os2-emx"; then - # Scripts don't pass test -x on OS/2 - TEST_X="test -f" - else - TEST_X="test -x" - fi - - ifelse([$4], [], - [ - ifdef(AC_WARNING,([$0: missing argument 4 (acceptable-majors): Defaulting to APU 0.x then APU 1.x])) - acceptable_majors="0 1" - ], [acceptable_majors="$4"]) - - apu_temp_acceptable_apu_config="" - for apu_temp_major in $acceptable_majors - do - case $apu_temp_major in - 0) - apu_temp_acceptable_apu_config="$apu_temp_acceptable_apu_config apu-config" - ;; - *) - apu_temp_acceptable_apu_config="$apu_temp_acceptable_apu_config apu-$apu_temp_major-config" - ;; - esac - done - - AC_MSG_CHECKING(for APR-util) - AC_ARG_WITH(apr-util, - [ --with-apr-util=PATH prefix for installed APU, path to APU build tree, - or the full path to apu-config], - [ - if test "$withval" = "no" || test "$withval" = "yes"; then - AC_MSG_ERROR([--with-apr-util requires a directory or file to be provided]) - fi - - for apu_temp_apu_config_file in $apu_temp_acceptable_apu_config - do - for lookdir in "$withval/bin" "$withval" - do - if $TEST_X "$lookdir/$apu_temp_apu_config_file"; then - apu_found="yes" - apu_config="$lookdir/$apu_temp_apu_config_file" - break 2 - fi - done - done - - if test "$apu_found" != "yes" && $TEST_X "$withval" && $withval --help > /dev/null 2>&1 ; then - apu_found="yes" - apu_config="$withval" - fi - - dnl if --with-apr-util is used, it is a fatal error for its argument - dnl to be invalid - if test "$apu_found" != "yes"; then - AC_MSG_ERROR([the --with-apr-util parameter is incorrect. It must specify an install prefix, a build directory, or an apu-config file.]) - fi - ],[ - if test -n "$3" && test "$3" = "1"; then - for apu_temp_apu_config_file in $apu_temp_acceptable_apu_config - do - if $apu_temp_apu_config_file --help > /dev/null 2>&1 ; then - apu_found="yes" - apu_config="$apu_temp_apu_config_file" - break - else - dnl look in some standard places (apparently not in builtin/default) - for lookdir in /usr /usr/local /usr/local/apr /opt/apr /usr/local/apache2 ; do - if $TEST_X "$lookdir/bin/$apu_temp_apu_config_file"; then - apu_found="yes" - apu_config="$lookdir/bin/$apu_temp_apu_config_file" - break 2 - fi - done - fi - done - fi - dnl if we have not found anything yet and have bundled source, use that - if test "$apu_found" = "no" && test -d "$1"; then - apu_temp_abs_srcdir="`cd $1 && pwd`" - apu_found="reconfig" - apu_bundled_major="`sed -n '/#define.*APU_MAJOR_VERSION/s/^[^0-9]*\([0-9]*\).*$/\1/p' \"$1/include/apu_version.h\"`" - case $apu_bundled_major in - "") - AC_MSG_ERROR([failed to find major version of bundled APU]) - ;; - 0) - apu_temp_apu_config_file="apu-config" - ;; - *) - apu_temp_apu_config_file="apu-$apu_bundled_major-config" - ;; - esac - if test -n "$2"; then - apu_config="$2/$apu_temp_apu_config_file" - else - apu_config="$1/$apu_temp_apu_config_file" - fi - fi - ]) - - AC_MSG_RESULT($apu_found) -]) diff --git a/libs/apr-util/build/mkdir.sh b/libs/apr-util/build/mkdir.sh deleted file mode 100755 index b947c926060..00000000000 --- a/libs/apr-util/build/mkdir.sh +++ /dev/null @@ -1,37 +0,0 @@ -#!/bin/sh -## -## mkdir.sh -- make directory hierarchy -## -## Based on `mkinstalldirs' from Noah Friedman -## as of 1994-03-25, which was placed in the Public Domain. -## Cleaned up for Apache's Autoconf-style Interface (APACI) -## by Ralf S. Engelschall -## -# -# This script falls under the Apache License. -# See http://www.apache.org/docs/LICENSE - - -umask 022 -errstatus=0 -for file in ${1+"$@"} ; do - set fnord `echo ":$file" |\ - sed -e 's/^:\//%/' -e 's/^://' -e 's/\// /g' -e 's/^%/\//'` - shift - pathcomp= - for d in ${1+"$@"}; do - pathcomp="$pathcomp$d" - case "$pathcomp" in - -* ) pathcomp=./$pathcomp ;; - ?: ) pathcomp="$pathcomp/" - continue ;; - esac - if test ! -d "$pathcomp"; then - echo "mkdir $pathcomp" 1>&2 - mkdir "$pathcomp" || errstatus=$? - fi - pathcomp="$pathcomp/" - done -done -exit $errstatus - diff --git a/libs/apr-util/build/pkg/README b/libs/apr-util/build/pkg/README deleted file mode 100644 index d7e61a762c6..00000000000 --- a/libs/apr-util/build/pkg/README +++ /dev/null @@ -1,20 +0,0 @@ -The script in this directory will attempt to build a Solaris package -out of a source tree for APR-util. - -To build a package, make sure you are in the root of the source tree, -and run: - -build/pkg/buildpkg.sh - -A Solaris package called apr-util---local.gz will be -created in the root of the source tree. - -By default, if you attempt to build packages for apr-util, it will -search for the sources for apr in: - -../apr - -You may override the location of apr like so: - -build/pkg/buildpkg.sh --with-apr=some/other/path - diff --git a/libs/apr-util/build/pkg/buildpkg.sh b/libs/apr-util/build/pkg/buildpkg.sh deleted file mode 100755 index ae9d00b3213..00000000000 --- a/libs/apr-util/build/pkg/buildpkg.sh +++ /dev/null @@ -1,99 +0,0 @@ -#!/bin/sh -# Copyright 2000-2005 The Apache Software Foundation or its licensors, as -# applicable. -# -# Licensed under the Apache License, Version 2.0 (the "License"); -# you may not use this file except in compliance with the License. -# You may obtain a copy of the License at -# -# http://www.apache.org/licenses/LICENSE-2.0 -# -# Unless required by applicable law or agreed to in writing, software -# distributed under the License is distributed on an "AS IS" BASIS, -# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -# See the License for the specific language governing permissions and -# limitations under the License. -# -# - -# buildpkg.sh: This script builds a Solaris PKG from the source tree -# provided. - -PREFIX=/usr/local -TEMPDIR=/var/tmp/$USER/apr-util-root -rm -rf $TEMPDIR - -apr_util_src_dir=. -apr_src_dir=../apr -expat_dir=/usr - -while test $# -gt 0 -do - # Normalize - case "$1" in - -*=*) optarg=`echo "$1" | sed 's/[-_a-zA-Z0-9]*=//'` ;; - *) optarg= ;; - esac - - case "$1" in - --with-apr=*) - apr_src_dir=$optarg - ;; - esac - - case "$1" in - --with-apr-util=*) - apr_util_src_dir=$optarg - ;; - esac - - case "$1" in - --with-expat=*) - expat_dir=$optarg - ;; - esac - - shift -done - -if [ -f "$apr_util_src_dir/configure.ac" ]; then - cd $apr_util_src_dir -else - echo "The apr-util source could not be found within $apr_util_src_dir" - echo "Usage: buildpkg [--with-apr=dir] [--with-apr-util=dir] [--with-expat=dir]" - exit 1 -fi - -if [ ! -f "$apr_src_dir/configure.ac" ]; then - echo "The apr source could not be found within $apr_src_dir" - echo "Usage: buildpkg [--with-apr=dir] [--with-apr-util=dir] [--with-expat=dir]" - exit 1 -fi - -if [ ! -d "$expat_dir" ]; then - echo "The expat directory could not be found within $expat_dir" - echo "Usage: buildpkg [--with-apr=dir] [--with-apr-util=dir] [--with-expat=dir]" - exit 1 -fi - -./configure --prefix=$PREFIX --with-apr=$apr_src_dir \ - --with-ldap --with-expat=$expat_dir -make -make install DESTDIR=$TEMPDIR -rm $TEMPDIR$PREFIX/lib/aprutil.exp -. build/pkg/pkginfo -cp build/pkg/pkginfo $TEMPDIR$PREFIX - -current=`pwd` -cd $TEMPDIR$PREFIX -echo "i pkginfo=./pkginfo" > prototype -find . -print | grep -v ./prototype | grep -v ./pkginfo | pkgproto | awk '{print $1" "$2" "$3" "$4" root bin"}' >> prototype -mkdir $TEMPDIR/pkg -pkgmk -r $TEMPDIR$PREFIX -d $TEMPDIR/pkg - -cd $current -pkgtrans -s $TEMPDIR/pkg $current/$NAME-$VERSION-$ARCH-local -gzip $current/$NAME-$VERSION-$ARCH-local - -rm -rf $TEMPDIR - diff --git a/libs/apr-util/build/pkg/pkginfo.in b/libs/apr-util/build/pkg/pkginfo.in deleted file mode 100644 index 1b6359a0597..00000000000 --- a/libs/apr-util/build/pkg/pkginfo.in +++ /dev/null @@ -1,11 +0,0 @@ -PKG="ASFapu-1" -NAME="apr-util" -ARCH="@target_cpu@" -VERSION="@APRUTIL_DOTTED_VERSION@" -CATEGORY="application" -VENDOR="Apache Software Foundation" -EMAIL="dev@apr.apache.org" -PSTAMP="dev@apr.apache.org" -BASEDIR="@prefix@" -CLASSES="none" - diff --git a/libs/apr-util/build/rpm/apr-util.spec.in b/libs/apr-util/build/rpm/apr-util.spec.in deleted file mode 100644 index b7157682ca7..00000000000 --- a/libs/apr-util/build/rpm/apr-util.spec.in +++ /dev/null @@ -1,89 +0,0 @@ - -%define apuver 1 - -Summary: Apache Portable Runtime Utility library -Name: apr-util -Version: APU_VERSION -Release: APU_RELEASE -License: Apache Software License -Group: System Environment/Libraries -URL: http://apr.apache.org/ -Source0: %{name}-%{version}.tar.gz -BuildRoot: %{_tmppath}/%{name}-%{version}-%{release}-buildroot -BuildPrereq: autoconf, libtool, doxygen, apr-devel >= 0:{version}-{release} -BuildPrereq: openldap-devel, db4-devel, expat-devel -Conflicts: subversion < 0.20.1-2 - -%description -The mission of the Apache Portable Runtime (APR) is to provide a -free library of C data structures and routines. This library -contains additional utility interfaces for APR; including support -for XML, LDAP, database interfaces, URI parsing and more. - -%package devel -Group: Development/Libraries -Summary: APR utility library development kit -Requires: apr-util = %{version}-%{release}, apr-devel -Requires: openldap-devel, db4-devel, expat-devel -Conflicts: subversion-devel < 0.20.1-2 - -%description devel -This package provides the support files which can be used to -build applications using the APR utility library. The mission -of the Apache Portable Runtime (APR) is to provide a free -library of C data structures and routines. - -%prep -%setup -q - -%build -%configure --with-apr=%{_prefix} \ - --includedir=%{_includedir}/apr-%{apuver} \ - --with-ldap --without-gdbm -make %{?_smp_mflags} && make dox - -%check -# Run non-interactive tests -pushd test -make %{?_smp_mflags} testall CFLAGS=-fno-strict-aliasing -./testall -v || exit 1 -popd - -%install -rm -rf $RPM_BUILD_ROOT -make install DESTDIR=$RPM_BUILD_ROOT - -# Documentation -mv docs/dox/html html - -# Unpackaged files -rm -f $RPM_BUILD_ROOT%{_libdir}/aprutil.exp - -%clean -rm -rf $RPM_BUILD_ROOT - -%post -p /sbin/ldconfig - -%postun -p /sbin/ldconfig - -%files -%defattr(-,root,root,-) -%doc CHANGES LICENSE NOTICE -%{_libdir}/libaprutil-%{apuver}.so.* - -%files devel -%defattr(-,root,root,-) -%{_bindir}/apu-%{apuver}-config -%{_libdir}/libaprutil-%{apuver}.*a -%{_libdir}/libaprutil-%{apuver}.so -%{_libdir}/pkgconfig/apr-util-%{apuver}.pc -%{_includedir}/apr-%{apuver}/*.h -%doc --parents html - -%changelog -* Tue Jun 22 2004 Graham Leggett 1.0.0-1 -- update to support v1.0.0 of APR - -* Tue Jun 22 2004 Graham Leggett 1.0.0-1 -- derived from Fedora Core apr.spec - diff --git a/libs/apr-util/build/w32locatedb.pl b/libs/apr-util/build/w32locatedb.pl deleted file mode 100644 index 121dbf857fd..00000000000 --- a/libs/apr-util/build/w32locatedb.pl +++ /dev/null @@ -1,217 +0,0 @@ -#! perl -w -# -# w32locatedb.pl -- Build apr-util with Berkeley DB on Win32 -# -# Usage: perl w32locatedb.pl -# type: Library type to link with ('lib' or 'dll') -# incdir: BDB includes directory (for db.h) -# libdir: Library directory (for libdbXY[s][d].lib) -# -# This script falls under the Apache License. -# See http://www.apache.org/docs/LICENSE - -require 5.008; -use strict; -use File::Spec::Functions qw(canonpath rel2abs - splitpath catpath splitdir catdir); - -######## -# Subroutine prototypes -sub usage(); -sub find_srcdir(); -sub get_lib_name($$); -sub edit_header($$); -sub edit_project($$); - -######## -# Parse program arguments and set globals -die usage() unless scalar @ARGV >= 3; - -my $type = lc($ARGV[0]); -die "Invalid library type '$type'\n" - unless $type eq 'lib' or $type eq 'dll'; - -my $incdir = $ARGV[1]; -die "No 'db.h' in $incdir\n" unless -f "$incdir/db.h"; - -my $libdir = $ARGV[2]; -die "$libdir: $!" unless -d $libdir; - -my $libname = get_lib_name($type, $incdir); -die "No '$libname.lib' in $libdir" unless -f "$libdir/$libname.lib"; -die "No '${libname}d.lib' in $libdir" unless -f "$libdir/${libname}d.lib"; - -my $srcdir = find_srcdir(); -my $apu_hw = canonpath("$srcdir/include/apu.hw"); -my $apu_want_hw = canonpath("$srcdir/include/apu_want.hw"); -my $apu_select_dbm_hw = canonpath("$srcdir/include/private/apu_select_dbm.hw"); -my $aprutil_dsp = canonpath("$srcdir/aprutil.dsp"); -my $libaprutil_dsp = canonpath("$srcdir/libaprutil.dsp"); -die "Can't find $apu_hw" unless -f $apu_hw; -die "Can't find $apu_want_hw" unless -f $apu_want_hw; -die "Can't find $apu_select_dbm_hw" unless -f $apu_select_dbm_hw; -die "Can't find $aprutil_dsp" unless -f $aprutil_dsp; -die "Can't find $libaprutil_dsp" unless -f $libaprutil_dsp; - - -######## -# Edit the header file templates -my $db_h = rel2abs(canonpath("$incdir/db.h")); -$db_h =~ s/\\/\//g; -edit_header($apu_hw, - [['^\s*\#\s*define\s+APU_HAVE_DB\s+0\s*$', - '#define APU_HAVE_DB 1']]); -edit_header($apu_want_hw, - [['^\s*\#\s*include\s+\\s*$', - "#include \"$db_h\""]]); -edit_header($apu_select_dbm_hw, - [['^\s*\#\s*define\s+APU_USE_DB\s+0\s*$', - '#define APU_USE_DB 1'], - ['^\s*\#\s*include\s+\\s*$', - "#include \"$db_h\""]]); - -######## -# Edit the .dsp files -my $libpath = rel2abs(canonpath("$libdir/$libname")); -edit_project($aprutil_dsp, $libpath); -edit_project($libaprutil_dsp, $libpath); - - -######## -# Print usage -sub usage() -{ - return ("Usage: perl w32locatedb.pl \n" - . " type: Library type to link with ('lib' or 'dll')\n" - . " incdir: BDB includes directory (for db.h)\n" - . " libdir: Library directory (for libdbXY[s][d].lib)\n"); -} - -######## -# Calculate the (possibly relative) path to the top of the apr-util -# source dir. -sub find_srcdir() -{ - my $srcdir = rel2abs(canonpath($0)); - my ($vol, $dir, $file) = splitpath($srcdir); - my @dirs = splitdir($dir); - die if scalar @dirs < 1; - do { $_ = pop @dirs } while ($_ eq ''); - return catpath($vol, catdir(@dirs), ''); -} - -######## -# Construct the name of the BDB library, based on the type and -# version information in db.h -sub get_lib_name($$) -{ - my ($type, $incdir) = @_; - my $major = undef; - my $minor = undef; - my $patch = undef; - - open(DBH, "< $incdir/db.h") - or die "Can't open $incdir/db.h: $!"; - while () { - chomp; - m/^\s*\#\s*define\s+DB_VERSION_(MAJOR|MINOR|PATCH)\s+(\d+)\s*$/; - next unless defined $1 and defined $2; - if ($1 eq 'MAJOR') { $major = $2; } - elsif ($1 eq 'MINOR') { $minor = $2; } - elsif ($1 eq 'PATCH') { $patch = $2; } - last if defined $major and defined $minor and defined $patch; - } - close(DBH); - die "Can't determine BDB version\n" - unless defined $major and defined $minor and defined $patch; - - print "Using BDB version $major.$minor.$patch\n"; - - my $libname = "libdb$major$minor"; - $libname .= 's' if $type eq 'lib'; - return $libname; -} - -######## -# Replace a file, keeping a backup copy -sub maybe_rename_with_backup($$$) -{ - my ($tmpfile, $file, $maybe) = @_; - if ($maybe) { - # Make the file writable by the owner. On Windows, this removes - # any read-only bits. - chmod((stat($file))[2] | 0600, $file); - rename($file, "${file}~"); - rename($tmpfile, $file); - } else { - print "No changes in $file\n"; - unlink($tmpfile); - } -} - -######## -# Edit a header template in-place. -sub edit_header($$) -{ - my ($file, $pairs) = @_; - my $tmpfile = "$file.tmp"; - my $substs = 0; - - open(IN, "< $file") or die "Can't open $file: $!"; - open(TMP, "> $tmpfile") or die "Can't open $tmpfile: $!"; - while () { - chomp; - foreach my $pair (@$pairs) { - $substs += s/${$pair}[0]/${$pair}[1]/; - } - print TMP $_, "\n"; - } - close(IN); - close(TMP); - - maybe_rename_with_backup($tmpfile, $file, $substs > 0); -} - -######## -# Edit a project file in-place -sub edit_project($$) -{ - my ($file, $libpath) = @_; - my $tmpfile = "$file.tmp"; - my $substs = 0; - my ($prog, $debug) = (undef, undef); - - my $libsearch = $libpath; - $libsearch =~ s/\\/\\\\/g; - - open(IN, "< $file") or die "Can't open $file: $!"; - open(TMP, "> $tmpfile") or die "Can't open $tmpfile: $!"; - while () { - chomp; - - if (m/^\# TARGTYPE \"[^\"]+\" 0x([0-9A-Za-z]+)/ - and defined $1) { - $prog = 'LINK32' if $1 eq '0102'; - $prog = 'LIB32' if $1 eq '0104'; - die "Unknown project type 0x$1" unless defined $prog; - } elsif (defined $prog - and m/^\# PROP Use_Debug_Libraries ([01])/ - and defined $1) { - $debug = $1; - } elsif (defined $prog and defined $debug - and m/^\# ADD $prog (\"$libsearch)?/ - and not defined $1) { - my $fullpath = - ($debug eq '1' ? "${libpath}d.lib" : "$libpath.lib"); - $substs += s/^\# ADD $prog /\# ADD $prog \"$fullpath\" /; - } elsif (m/^\# ADD CPP/) { - $substs += s/APU_USE_SDBM/APU_USE_DB/g; - } - - print TMP $_, "\n"; - } - close(IN); - close(TMP); - - maybe_rename_with_backup($tmpfile, $file, $substs > 0); -} diff --git a/libs/apr-util/buildconf b/libs/apr-util/buildconf deleted file mode 100755 index 718cb0ac2d3..00000000000 --- a/libs/apr-util/buildconf +++ /dev/null @@ -1,111 +0,0 @@ -#!/bin/sh -# -# Copyright 1999-2005 The Apache Software Foundation or its licensors, as -# applicable. -# -# Licensed under the Apache License, Version 2.0 (the "License"); -# you may not use this file except in compliance with the License. -# You may obtain a copy of the License at -# -# http://www.apache.org/licenses/LICENSE-2.0 -# -# Unless required by applicable law or agreed to in writing, software -# distributed under the License is distributed on an "AS IS" BASIS, -# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -# See the License for the specific language governing permissions and -# limitations under the License. -# -# - -# Default place to look for apr source. Can be overridden with -# --with-apr=[directory] -apr_src_dir=../apr - -while test $# -gt 0 -do - # Normalize - case "$1" in - -*=*) optarg=`echo "$1" | sed 's/[-_a-zA-Z0-9]*=//'` ;; - *) optarg= ;; - esac - - case "$1" in - --with-apr=*) - apr_src_dir=$optarg - ;; - esac - - shift -done - -if [ -f "$apr_src_dir/build/apr_common.m4" ]; then - apr_src_dir=`cd $apr_src_dir; pwd` - echo "" - echo "Looking for apr source in $apr_src_dir" -else - echo "" - echo "Problem finding apr source in $apr_src_dir." - echo "Use:" - echo " --with-apr=[directory]" - exit 1 -fi - -set -e - -# Remove some files, then copy them from apr source tree -rm -f build/apr_common.m4 build/find_apr.m4 build/install.sh \ - build/config.guess build/config.sub build/get-version.sh -cp -p $apr_src_dir/build/apr_common.m4 $apr_src_dir/build/find_apr.m4 \ - $apr_src_dir/build/install.sh $apr_src_dir/build/config.guess \ - $apr_src_dir/build/config.sub $apr_src_dir/build/get-version.sh \ - build/ - -# Remove aclocal.m4 as it'll break some builds... -rm -rf aclocal.m4 autom4te*.cache - -# -# Generate the autoconf header (include/apu_config.h) and ./configure -# -echo "Creating include/private/apu_config.h ..." -${AUTOHEADER:-autoheader} - -echo "Creating configure ..." -### do some work to toss config.cache? -if ${AUTOCONF:-autoconf}; then - : -else - echo "autoconf failed" - exit 1 -fi - -# -# Generate build-outputs.mk for the build systme -# -echo "Generating 'make' outputs ..." -#$apr_src_dir/build/gen-build.py make - -# -# If Expat has been bundled, then go and configure the thing -# -if [ -f xml/expat/buildconf.sh ]; then - echo "Invoking xml/expat/buildconf.sh ..." - (cd xml/expat; ./buildconf.sh) -fi - -# Remove autoconf cache again -rm -rf autom4te*.cache - -# Create RPM Spec file -if [ -f `which cut` ]; then - echo rebuilding rpm spec file - REVISION=`build/get-version.sh all include/apu_version.h APU` - VERSION=`echo $REVISION | cut -d- -s -f1` - RELEASE=`echo $REVISION | cut -d- -s -f2` - if [ "x$VERSION" = "x" ]; then - VERSION=$REVISION - RELEASE=1 - fi - sed -e "s/APU_VERSION/$VERSION/" -e "s/APU_RELEASE/$RELEASE/" \ - ./build/rpm/apr-util.spec.in > apr-util.spec -fi - diff --git a/libs/apr-util/config.layout b/libs/apr-util/config.layout deleted file mode 100644 index 907d0bb1169..00000000000 --- a/libs/apr-util/config.layout +++ /dev/null @@ -1,232 +0,0 @@ -## -## config.layout -- Pre-defined Installation Path Layouts -## -## Hints: -## - layouts can be loaded with configure's --enable-layout=ID option -## - when no --enable-layout option is given, the default layout is `apr' -## - a trailing plus character (`+') on paths is replaced with a -## `/' suffix where is currently hardcoded to 'apr'. -## (This may become a configurable parameter at some point.) -## - -# Classical APR-util path layout designed for parallel installs. - - prefix: /usr/local/apr - exec_prefix: ${prefix} - bindir: ${exec_prefix}/bin - sbindir: ${exec_prefix}/bin - libdir: ${exec_prefix}/lib - libexecdir: ${exec_prefix}/modules - mandir: ${prefix}/man - sysconfdir: ${prefix}/conf - datadir: ${prefix} - installbuilddir: ${datadir}/build - includedir: ${prefix}/include/apr-${APRUTIL_MAJOR_VERSION} - localstatedir: ${prefix} - libsuffix: -${APRUTIL_MAJOR_VERSION} - - -# Classical single-installation APR path layout. - - prefix: /usr/local/apr - exec_prefix: ${prefix} - bindir: ${exec_prefix}/bin - sbindir: ${exec_prefix}/bin - libdir: ${exec_prefix}/lib - libexecdir: ${exec_prefix}/modules - mandir: ${prefix}/man - sysconfdir: ${prefix}/conf - datadir: ${prefix} - installbuilddir: ${datadir}/build - includedir: ${prefix}/include - localstatedir: ${prefix} - - -# GNU standards conforming path layout. -# See FSF's GNU project `make-stds' document for details. - - prefix: /usr/local - exec_prefix: ${prefix} - bindir: ${exec_prefix}/bin - sbindir: ${exec_prefix}/sbin - libdir: ${exec_prefix}/lib - libexecdir: ${exec_prefix}/libexec - mandir: ${prefix}/man - sysconfdir: ${prefix}/etc+ - datadir: ${prefix}/share+ - installbuilddir: ${datadir}/build - includedir: ${prefix}/include+ - localstatedir: ${prefix}/var+ - runtimedir: ${localstatedir}/run - - -# Mac OS X Server (Rhapsody) - - prefix: /Local/Library/WebServer - exec_prefix: /usr - bindir: ${exec_prefix}/bin - sbindir: ${exec_prefix}/sbin - libdir: ${exec_prefix}/lib - libexecdir: /System/Library/apr/Modules - mandir: ${exec_prefix}/share/man - sysconfdir: ${prefix}/Configuration - datadir: ${prefix} - installbuilddir: /System/Library/apr/Build - includedir: /System/Library/Frameworks/apr.framework/Versions/2.0/Headers - localstatedir: /var - runtimedir: ${prefix}/Logs - - -# Darwin/Mac OS Layout - - prefix: /usr - exec_prefix: ${prefix} - bindir: ${exec_prefix}/bin - sbindir: ${exec_prefix}/sbin - libdir: ${exec_prefix}/lib - libexecdir: ${exec_prefix}/libexec+ - mandir: ${prefix}/share/man - datadir: /Library/WebServer - sysconfdir: /etc+ - installbuilddir: ${prefix}/share/httpd/build - includedir: ${prefix}/include+ - localstatedir: /var - runtimedir: ${localstatedir}/run - - -# Red Hat Linux 7.x layout - - prefix: /usr - exec_prefix: ${prefix} - bindir: ${prefix}/bin - sbindir: ${prefix}/sbin - libdir: ${prefix}/lib - libexecdir: ${prefix}/lib/apr - mandir: ${prefix}/man - sysconfdir: /etc/httpd/conf - datadir: /var/www - installbuilddir: ${datadir}/build - includedir: ${prefix}/include/apr - localstatedir: /var - runtimedir: ${localstatedir}/run - - -# According to the /opt filesystem conventions - - prefix: /opt/apr - exec_prefix: ${prefix} - bindir: ${exec_prefix}/bin - sbindir: ${exec_prefix}/sbin - libdir: ${exec_prefix}/lib - libexecdir: ${exec_prefix}/libexec - mandir: ${prefix}/man - sysconfdir: /etc${prefix} - datadir: ${prefix}/share - installbuilddir: ${datadir}/build - includedir: ${prefix}/include - localstatedir: /var${prefix} - runtimedir: ${localstatedir}/run - - -# BeOS layout... - - prefix: /boot/home/apr - exec_prefix: ${prefix} - bindir: ${exec_prefix}/bin - sbindir: ${exec_prefix}/bin - libdir: ${exec_prefix}/lib - libexecdir: ${exec_prefix}/libexec - mandir: ${prefix}/man - sysconfdir: ${prefix}/conf - datadir: ${prefix} - installbuilddir: ${datadir}/build - includedir: ${prefix}/include - localstatedir: ${prefix} - runtimedir: ${localstatedir}/logs - - -# SuSE 6.x layout - - prefix: /usr - exec_prefix: ${prefix} - bindir: ${prefix}/bin - sbindir: ${prefix}/sbin - libdir: ${prefix}/lib - libexecdir: ${prefix}/lib/apr - mandir: ${prefix}/share/man - sysconfdir: /etc/httpd - datadir: /usr/local/httpd - installbuilddir: ${datadir}/build - includedir: ${prefix}/include/apr - localstatedir: /var/lib/httpd - runtimedir: /var/run - - -# BSD/OS layout - - prefix: /var/www - exec_prefix: /usr/contrib - bindir: ${exec_prefix}/bin - sbindir: ${exec_prefix}/bin - libdir: ${exec_prefix}/lib - libexecdir: ${exec_prefix}/libexec/apr - mandir: ${exec_prefix}/man - sysconfdir: ${prefix}/conf - datadir: ${prefix} - installbuilddir: ${datadir}/build - includedir: ${exec_prefix}/include/apr - localstatedir: /var - runtimedir: ${localstatedir}/run - - -# Solaris 8 Layout - - prefix: /usr/apr - exec_prefix: ${prefix} - bindir: ${exec_prefix}/bin - sbindir: ${exec_prefix}/bin - libdir: ${exec_prefix}/lib - libexecdir: ${exec_prefix}/libexec - mandir: ${exec_prefix}/man - sysconfdir: /etc/apr - datadir: /var/apr - installbuilddir: ${datadir}/build - includedir: ${exec_prefix}/include - localstatedir: ${prefix} - runtimedir: /var/run - - -# OpenBSD Layout - - prefix: /var/www - exec_prefix: /usr - bindir: ${exec_prefix}/bin - sbindir: ${exec_prefix}/sbin - libdir: ${exec_prefix}/lib - libexecdir: ${exec_prefix}/lib/apr/modules - mandir: ${exec_prefix}/share/man - sysconfdir: ${prefix}/conf - datadir: ${prefix} - installbuilddir: ${prefix}/build - includedir: ${exec_prefix}/lib/apr/include - localstatedir: ${prefix} - runtimedir: ${prefix}/logs - - -# Debian layout - - prefix: - exec_prefix: ${prefix}/usr - bindir: ${exec_prefix}/bin - sbindir: ${exec_prefix}/sbin - libdir: ${exec_prefix}/lib - libexecdir: ${exec_prefix}/lib/apr/modules - mandir: ${exec_prefix}/share/man - datadir: ${exec_prefix}/share/apr - includedir: ${exec_prefix}/include/apr-${APRUTIL_MAJOR_VERSION} - localstatedir: ${prefix}/var/run - runtimedir: ${prefix}/var/run - infodir: ${exec_prefix}/share/info - libsuffix: -${APRUTIL_MAJOR_VERSION} - installbuilddir: ${prefix}/usr/share/apache2/build - diff --git a/libs/apr-util/configure.ac b/libs/apr-util/configure.ac deleted file mode 100644 index c0b4a3bfad8..00000000000 --- a/libs/apr-util/configure.ac +++ /dev/null @@ -1,216 +0,0 @@ -dnl -dnl Process this file with autoconf to produce a configure script -dnl - -AC_PREREQ(2.50) -AC_INIT(export_vars.sh.in) - -AC_CONFIG_HEADERS(include/private/apu_config.h) -AC_CONFIG_AUX_DIR(build) - -sinclude(build/apu-conf.m4) -sinclude(build/apu-iconv.m4) -sinclude(build/apu-hints.m4) -sinclude(build/apr_common.m4) -sinclude(build/find_apr.m4) -sinclude(build/dbm.m4) -sinclude(build/dbd.m4) - -dnl Generate ./config.nice for reproducing runs of configure -dnl -APR_CONFIG_NICE(config.nice) - -CFLAGS="$CFLAGS $CONFIGURE_CFLAGS" -CXXFLAGS="$CXXFLAGS $CONFIGURE_CXXFLAGS" -LDFLAGS="$LDFLAGS $CONFIGURE_LDFLAGS" - -dnl # Some initial steps for configuration. We setup the default directory -dnl # and which files are to be configured. - -dnl Absolute source/build directory -abs_srcdir=`(cd $srcdir && pwd)` -abs_builddir=`pwd` - -if test "$abs_builddir" != "$abs_srcdir"; then - USE_VPATH=1 - APU_CONFIG_LOCATION=build -else - APU_CONFIG_LOCATION=source -fi - -AC_SUBST(APU_CONFIG_LOCATION) - -AC_CANONICAL_SYSTEM - -AC_PROG_INSTALL - -dnl -dnl compute the top directory of the build -dnl note: this is needed for LIBTOOL and exporting the bundled Expat -dnl -top_builddir="$abs_builddir" -AC_SUBST(top_builddir) -AC_SUBST(abs_srcdir) -AC_SUBST(abs_builddir) - -dnl Initialize mkdir -p functionality. -APR_MKDIR_P_CHECK($abs_srcdir/build/mkdir.sh) - -dnl get our version information -get_version="$abs_srcdir/build/get-version.sh" -version_hdr="$abs_srcdir/include/apu_version.h" -APRUTIL_MAJOR_VERSION="`$get_version major $version_hdr APU`" -APRUTIL_DOTTED_VERSION="`$get_version all $version_hdr APU`" - -AC_SUBST(APRUTIL_DOTTED_VERSION) -AC_SUBST(APRUTIL_MAJOR_VERSION) - -echo "APR-util Version: ${APRUTIL_DOTTED_VERSION}" - -dnl Enable the layout handling code, then reparse the prefix-style -dnl arguments due to autoconf being a PITA. -APR_ENABLE_LAYOUT(apr-util) -APR_PARSE_ARGUMENTS - -dnl load os-specific hints for apr-util -APU_PRELOAD - -dnl -dnl set up the compilation flags and stuff -dnl - -APRUTIL_INCLUDES="" -APRUTIL_PRIV_INCLUDES="-I$top_builddir/include -I$top_builddir/include/private" -if test -n "$USE_VPATH"; then - APRUTIL_PRIV_INCLUDES="$APRUTIL_PRIV_INCLUDES -I$abs_srcdir/include/private -I$abs_srcdir/include" -fi - -dnl -dnl Find the APR includes directory and (possibly) the source (base) dir. -dnl -APU_FIND_APR - -dnl -dnl even though we use apr_rules.mk for building apr-util, we need -dnl to grab CC and CPP ahead of time so that apr-util config tests -dnl use the same compiler as APR; we need the same compiler options -dnl and feature test macros as well -dnl -APR_SETIFNULL(CC, `$apr_config --cc`) -APR_SETIFNULL(CPP, `$apr_config --cpp`) -APR_ADDTO(CFLAGS, `$apr_config --cflags`) -APR_ADDTO(CPPFLAGS, `$apr_config --cppflags`) - -dnl -dnl Find the APR-ICONV directory. -dnl -if test -d ../apr-iconv; then - APR_SUBDIR_CONFIG(../apr-iconv, - [$apache_apr_flags --prefix=$prefix --exec-prefix=$exec_prefix --libdir=$libdir --includedir=$includedir --bindir=$bindir --datadir=$datadir --with-installbuilddir=$installbuilddir], - [--enable-layout=*|\'--enable-layout=*]) - APRUTIL_EXPORT_LIBS="$abs_srcdir/../apr-iconv/lib/libapriconv.la $APRUTIL_EXPORT_LIBS" - APRUTIL_INCLUDES="-I$abs_srcdir/../apr-iconv/include $APRUTIL_INCLUDES" - APR_ICONV_DIR=../apr-iconv -else - APR_ICONV_DIR="" -fi -AC_SUBST(APR_ICONV_DIR) - -dnl Find LDAP library -dnl Determine what DBM backend type to use. -dnl Find Expat -dnl Find an iconv library -APU_FIND_LDAP -APU_CHECK_DBM -APU_CHECK_DBD -APU_CHECK_DBD_MYSQL -APU_CHECK_DBD_SQLITE3 -APU_CHECK_DBD_SQLITE2 -APU_FIND_EXPAT -APU_FIND_ICONV - -AC_SEARCH_LIBS(crypt, crypt ufc) -AC_MSG_CHECKING(if system crypt() function is threadsafe) -if test "x$apu_crypt_threadsafe" = "x1"; then - AC_DEFINE(APU_CRYPT_THREADSAFE, 1, [Define if the system crypt() function is threadsafe]) - msg="yes" -else - msg="no" -fi -AC_MSG_RESULT([$msg]) - -AC_CHECK_FUNCS(crypt_r, [ crypt_r="1" ], [ crypt_r="0" ]) -if test "$crypt_r" = "1"; then - APU_CHECK_CRYPT_R_STYLE -fi - -so_ext=$APR_SO_EXT -lib_target=$APR_LIB_TARGET -AC_SUBST(so_ext) -AC_SUBST(lib_target) - -APRUTIL_LIBNAME="aprutil${libsuffix}" -AC_SUBST(APRUTIL_LIBNAME) - -dnl -dnl Prep all the flags and stuff for compilation and export to other builds -dnl -APR_ADDTO(APRUTIL_LIBS, [$APR_LIBS]) - -AC_SUBST(APRUTIL_EXPORT_LIBS) -AC_SUBST(APRUTIL_PRIV_INCLUDES) -AC_SUBST(APRUTIL_INCLUDES) -AC_SUBST(APRUTIL_LDFLAGS) -AC_SUBST(APRUTIL_LIBS) -AC_SUBST(LDFLAGS) - -dnl copy apr's rules.mk into our build directory. -if test ! -d ./build; then - $mkdir_p build -fi -cp $APR_BUILD_DIR/apr_rules.mk $abs_builddir/build/rules.mk - -dnl -dnl BSD/OS (BSDi) needs to use a different include syntax in the Makefiles -dnl -case "$host_alias" in -*bsdi* | BSD/OS) - # Check whether they've installed GNU make - if make --version > /dev/null 2>&1; then - INCLUDE_RULES="include $abs_builddir/build/rules.mk" - INCLUDE_OUTPUTS="include $abs_srcdir/build-outputs.mk" - else - INCLUDE_RULES=".include \"$abs_builddir/build/rules.mk\"" - INCLUDE_OUTPUTS=".include \"$abs_srcdir/build-outputs.mk\"" - fi - ;; -*) - INCLUDE_RULES="include $abs_builddir/build/rules.mk" - INCLUDE_OUTPUTS="include $abs_srcdir/build-outputs.mk" - ;; -esac -AC_SUBST(INCLUDE_RULES) -AC_SUBST(INCLUDE_OUTPUTS) - -for d in include include/private; do - test -d $top_builddir/$d || mkdir $top_builddir/$d -done - -AC_CONFIG_FILES([Makefile export_vars.sh - build/pkg/pkginfo apr-util.pc - apu-$APRUTIL_MAJOR_VERSION-config:apu-config.in - include/private/apu_select_dbm.h - include/apr_ldap.h - include/apu.h include/apu_want.h]) - -AC_CONFIG_COMMANDS([default], [ -chmod +x apu-$APRUTIL_MAJOR_VERSION-config -],[ -APRUTIL_MAJOR_VERSION=$APRUTIL_MAJOR_VERSION -]) - -if test -d $srcdir/test; then - AC_CONFIG_FILES([test/Makefile]) -fi - -AC_OUTPUT diff --git a/libs/apr-util/configure.gnu b/libs/apr-util/configure.gnu deleted file mode 100644 index 72f3dccb094..00000000000 --- a/libs/apr-util/configure.gnu +++ /dev/null @@ -1,4 +0,0 @@ -#! /bin/sh -srcpath=$(dirname $0 2>/dev/null ) || srcpath="." -$srcpath/configure "$@" --with-apr=../apr --disable-shared --with-pic --without-sqlite2 --without-sqlite3 --with-expat=builtin - diff --git a/libs/apr-util/crypto/apr_md4.c b/libs/apr-util/crypto/apr_md4.c deleted file mode 100644 index 6b9d9f4b395..00000000000 --- a/libs/apr-util/crypto/apr_md4.c +++ /dev/null @@ -1,404 +0,0 @@ -/* Copyright 2001-2005 The Apache Software Foundation or its licensors, as - * applicable. - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - * - * This is derived from material copyright RSA Data Security, Inc. - * Their notice is reproduced below in its entirety. - * - * Copyright (C) 1991-2, RSA Data Security, Inc. Created 1991. All - * rights reserved. - * - * License to copy and use this software is granted provided that it - * is identified as the "RSA Data Security, Inc. MD4 Message-Digest - * Algorithm" in all material mentioning or referencing this software - * or this function. - * - * License is also granted to make and use derivative works provided - * that such works are identified as "derived from the RSA Data - * Security, Inc. MD4 Message-Digest Algorithm" in all material - * mentioning or referencing the derived work. - * - * RSA Data Security, Inc. makes no representations concerning either - * the merchantability of this software or the suitability of this - * software for any particular purpose. It is provided "as is" - * without express or implied warranty of any kind. - * - * These notices must be retained in any copies of any part of this - * documentation and/or software. - */ - -#include "apr_strings.h" -#include "apr_md4.h" -#include "apr_lib.h" - -#if APR_HAVE_STRING_H -#include -#endif -#if APR_HAVE_UNISTD_H -#include -#endif - -/* Constants for MD4Transform routine. - */ - -#define S11 3 -#define S12 7 -#define S13 11 -#define S14 19 -#define S21 3 -#define S22 5 -#define S23 9 -#define S24 13 -#define S31 3 -#define S32 9 -#define S33 11 -#define S34 15 - -static void MD4Transform(apr_uint32_t state[4], const unsigned char block[64]); -static void Encode(unsigned char *output, const apr_uint32_t *input, - unsigned int len); -static void Decode(apr_uint32_t *output, const unsigned char *input, - unsigned int len); - -static unsigned char PADDING[64] = -{ - 0x80, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 -}; - -#if APR_CHARSET_EBCDIC -static apr_xlate_t *xlate_ebcdic_to_ascii; /* used in apr_md4_encode() */ -#endif - -/* F, G and I are basic MD4 functions. - */ -#define F(x, y, z) (((x) & (y)) | ((~x) & (z))) -#define G(x, y, z) (((x) & (y)) | ((x) & (z)) | ((y) & (z))) -#define H(x, y, z) ((x) ^ (y) ^ (z)) - -/* ROTATE_LEFT rotates x left n bits. - */ -#define ROTATE_LEFT(x, n) (((x) << (n)) | ((x) >> (32-(n)))) - -/* FF, GG and HH are transformations for rounds 1, 2 and 3 */ -/* Rotation is separate from addition to prevent recomputation */ - -#define FF(a, b, c, d, x, s) { \ - (a) += F ((b), (c), (d)) + (x); \ - (a) = ROTATE_LEFT ((a), (s)); \ - } -#define GG(a, b, c, d, x, s) { \ - (a) += G ((b), (c), (d)) + (x) + (apr_uint32_t)0x5a827999; \ - (a) = ROTATE_LEFT ((a), (s)); \ - } -#define HH(a, b, c, d, x, s) { \ - (a) += H ((b), (c), (d)) + (x) + (apr_uint32_t)0x6ed9eba1; \ - (a) = ROTATE_LEFT ((a), (s)); \ - } - -/* MD4 initialization. Begins an MD4 operation, writing a new context. - */ -APU_DECLARE(apr_status_t) apr_md4_init(apr_md4_ctx_t *context) -{ - context->count[0] = context->count[1] = 0; - - /* Load magic initialization constants. */ - context->state[0] = 0x67452301; - context->state[1] = 0xefcdab89; - context->state[2] = 0x98badcfe; - context->state[3] = 0x10325476; - -#if APR_HAS_XLATE - context->xlate = NULL; -#endif - - return APR_SUCCESS; -} - -#if APR_HAS_XLATE -/* MD4 translation setup. Provides the APR translation handle - * to be used for translating the content before calculating the - * digest. - */ -APU_DECLARE(apr_status_t) apr_md4_set_xlate(apr_md4_ctx_t *context, - apr_xlate_t *xlate) -{ - apr_status_t rv; - int is_sb; - - /* TODO: remove the single-byte-only restriction from this code - */ - rv = apr_xlate_sb_get(xlate, &is_sb); - if (rv != APR_SUCCESS) { - return rv; - } - if (!is_sb) { - return APR_EINVAL; - } - context->xlate = xlate; - return APR_SUCCESS; -} -#endif /* APR_HAS_XLATE */ - -/* MD4 block update operation. Continues an MD4 message-digest - * operation, processing another message block, and updating the - * context. - */ -APU_DECLARE(apr_status_t) apr_md4_update(apr_md4_ctx_t *context, - const unsigned char *input, - apr_size_t inputLen) -{ - unsigned int i, idx, partLen; -#if APR_HAS_XLATE - apr_size_t inbytes_left, outbytes_left; -#endif - - /* Compute number of bytes mod 64 */ - idx = (unsigned int)((context->count[0] >> 3) & 0x3F); - - /* Update number of bits */ - if ((context->count[0] += ((apr_uint32_t)inputLen << 3)) - < ((apr_uint32_t)inputLen << 3)) - context->count[1]++; - context->count[1] += (apr_uint32_t)inputLen >> 29; - - partLen = 64 - idx; - - /* Transform as many times as possible. */ -#if !APR_HAS_XLATE - if (inputLen >= partLen) { - memcpy(&context->buffer[idx], input, partLen); - MD4Transform(context->state, context->buffer); - - for (i = partLen; i + 63 < inputLen; i += 64) - MD4Transform(context->state, &input[i]); - - idx = 0; - } - else - i = 0; - - /* Buffer remaining input */ - memcpy(&context->buffer[idx], &input[i], inputLen - i); -#else /*APR_HAS_XLATE*/ - if (inputLen >= partLen) { - if (context->xlate) { - inbytes_left = outbytes_left = partLen; - apr_xlate_conv_buffer(context->xlate, (const char *)input, - &inbytes_left, - (char *)&context->buffer[idx], - &outbytes_left); - } - else { - memcpy(&context->buffer[idx], input, partLen); - } - MD4Transform(context->state, context->buffer); - - for (i = partLen; i + 63 < inputLen; i += 64) { - if (context->xlate) { - unsigned char inp_tmp[64]; - inbytes_left = outbytes_left = 64; - apr_xlate_conv_buffer(context->xlate, (const char *)&input[i], - &inbytes_left, - (char *)inp_tmp, &outbytes_left); - MD4Transform(context->state, inp_tmp); - } - else { - MD4Transform(context->state, &input[i]); - } - } - - idx = 0; - } - else - i = 0; - - /* Buffer remaining input */ - if (context->xlate) { - inbytes_left = outbytes_left = inputLen - i; - apr_xlate_conv_buffer(context->xlate, (const char *)&input[i], - &inbytes_left, (char *)&context->buffer[idx], - &outbytes_left); - } - else { - memcpy(&context->buffer[idx], &input[i], inputLen - i); - } -#endif /*APR_HAS_XLATE*/ - return APR_SUCCESS; -} - -/* MD4 finalization. Ends an MD4 message-digest operation, writing the - * the message digest and zeroizing the context. - */ -APU_DECLARE(apr_status_t) apr_md4_final( - unsigned char digest[APR_MD4_DIGESTSIZE], - apr_md4_ctx_t *context) -{ - unsigned char bits[8]; - unsigned int idx, padLen; - - /* Save number of bits */ - Encode(bits, context->count, 8); - -#if APR_HAS_XLATE - /* apr_md4_update() should not translate for this final round. */ - context->xlate = NULL; -#endif /*APR_HAS_XLATE*/ - - /* Pad out to 56 mod 64. */ - idx = (unsigned int) ((context->count[0] >> 3) & 0x3f); - padLen = (idx < 56) ? (56 - idx) : (120 - idx); - apr_md4_update(context, PADDING, padLen); - - /* Append length (before padding) */ - apr_md4_update(context, bits, 8); - - /* Store state in digest */ - Encode(digest, context->state, APR_MD4_DIGESTSIZE); - - /* Zeroize sensitive information. */ - memset(context, 0, sizeof(*context)); - - return APR_SUCCESS; -} - -/* MD4 computation in one step (init, update, final) - */ -APU_DECLARE(apr_status_t) apr_md4(unsigned char digest[APR_MD4_DIGESTSIZE], - const unsigned char *input, - apr_size_t inputLen) -{ - apr_md4_ctx_t ctx; - apr_status_t rv; - - apr_md4_init(&ctx); - - if ((rv = apr_md4_update(&ctx, input, inputLen)) != APR_SUCCESS) - return rv; - - return apr_md4_final(digest, &ctx); -} - -/* MD4 basic transformation. Transforms state based on block. */ -static void MD4Transform(apr_uint32_t state[4], const unsigned char block[64]) -{ - apr_uint32_t a = state[0], b = state[1], c = state[2], d = state[3], - x[APR_MD4_DIGESTSIZE]; - - Decode(x, block, 64); - - /* Round 1 */ - FF (a, b, c, d, x[ 0], S11); /* 1 */ - FF (d, a, b, c, x[ 1], S12); /* 2 */ - FF (c, d, a, b, x[ 2], S13); /* 3 */ - FF (b, c, d, a, x[ 3], S14); /* 4 */ - FF (a, b, c, d, x[ 4], S11); /* 5 */ - FF (d, a, b, c, x[ 5], S12); /* 6 */ - FF (c, d, a, b, x[ 6], S13); /* 7 */ - FF (b, c, d, a, x[ 7], S14); /* 8 */ - FF (a, b, c, d, x[ 8], S11); /* 9 */ - FF (d, a, b, c, x[ 9], S12); /* 10 */ - FF (c, d, a, b, x[10], S13); /* 11 */ - FF (b, c, d, a, x[11], S14); /* 12 */ - FF (a, b, c, d, x[12], S11); /* 13 */ - FF (d, a, b, c, x[13], S12); /* 14 */ - FF (c, d, a, b, x[14], S13); /* 15 */ - FF (b, c, d, a, x[15], S14); /* 16 */ - - /* Round 2 */ - GG (a, b, c, d, x[ 0], S21); /* 17 */ - GG (d, a, b, c, x[ 4], S22); /* 18 */ - GG (c, d, a, b, x[ 8], S23); /* 19 */ - GG (b, c, d, a, x[12], S24); /* 20 */ - GG (a, b, c, d, x[ 1], S21); /* 21 */ - GG (d, a, b, c, x[ 5], S22); /* 22 */ - GG (c, d, a, b, x[ 9], S23); /* 23 */ - GG (b, c, d, a, x[13], S24); /* 24 */ - GG (a, b, c, d, x[ 2], S21); /* 25 */ - GG (d, a, b, c, x[ 6], S22); /* 26 */ - GG (c, d, a, b, x[10], S23); /* 27 */ - GG (b, c, d, a, x[14], S24); /* 28 */ - GG (a, b, c, d, x[ 3], S21); /* 29 */ - GG (d, a, b, c, x[ 7], S22); /* 30 */ - GG (c, d, a, b, x[11], S23); /* 31 */ - GG (b, c, d, a, x[15], S24); /* 32 */ - - /* Round 3 */ - HH (a, b, c, d, x[ 0], S31); /* 33 */ - HH (d, a, b, c, x[ 8], S32); /* 34 */ - HH (c, d, a, b, x[ 4], S33); /* 35 */ - HH (b, c, d, a, x[12], S34); /* 36 */ - HH (a, b, c, d, x[ 2], S31); /* 37 */ - HH (d, a, b, c, x[10], S32); /* 38 */ - HH (c, d, a, b, x[ 6], S33); /* 39 */ - HH (b, c, d, a, x[14], S34); /* 40 */ - HH (a, b, c, d, x[ 1], S31); /* 41 */ - HH (d, a, b, c, x[ 9], S32); /* 42 */ - HH (c, d, a, b, x[ 5], S33); /* 43 */ - HH (b, c, d, a, x[13], S34); /* 44 */ - HH (a, b, c, d, x[ 3], S31); /* 45 */ - HH (d, a, b, c, x[11], S32); /* 46 */ - HH (c, d, a, b, x[ 7], S33); /* 47 */ - HH (b, c, d, a, x[15], S34); /* 48 */ - - state[0] += a; - state[1] += b; - state[2] += c; - state[3] += d; - - /* Zeroize sensitive information. */ - memset(x, 0, sizeof(x)); -} - -/* Encodes input (apr_uint32_t) into output (unsigned char). Assumes len is - * a multiple of 4. - */ -static void Encode(unsigned char *output, const apr_uint32_t *input, - unsigned int len) -{ - unsigned int i, j; - apr_uint32_t k; - - for (i = 0, j = 0; j < len; i++, j += 4) { - k = input[i]; - output[j] = (unsigned char)(k & 0xff); - output[j + 1] = (unsigned char)((k >> 8) & 0xff); - output[j + 2] = (unsigned char)((k >> 16) & 0xff); - output[j + 3] = (unsigned char)((k >> 24) & 0xff); - } -} - -/* Decodes input (unsigned char) into output (apr_uint32_t). Assumes len is - * a multiple of 4. - */ -static void Decode(apr_uint32_t *output, const unsigned char *input, - unsigned int len) -{ - unsigned int i, j; - - for (i = 0, j = 0; j < len; i++, j += 4) - output[i] = ((apr_uint32_t)input[j]) | - (((apr_uint32_t)input[j + 1]) << 8) | - (((apr_uint32_t)input[j + 2]) << 16) | - (((apr_uint32_t)input[j + 3]) << 24); -} - -#if APR_CHARSET_EBCDIC -APU_DECLARE(apr_status_t) apr_MD4InitEBCDIC(apr_xlate_t *xlate) -{ - xlate_ebcdic_to_ascii = xlate; - return APR_SUCCESS; -} -#endif diff --git a/libs/apr-util/crypto/apr_md5.c b/libs/apr-util/crypto/apr_md5.c deleted file mode 100644 index 40942e30dbd..00000000000 --- a/libs/apr-util/crypto/apr_md5.c +++ /dev/null @@ -1,733 +0,0 @@ -/* - * This is work is derived from material Copyright RSA Data Security, Inc. - * - * The RSA copyright statement and Licence for that original material is - * included below. This is followed by the Apache copyright statement and - * licence for the modifications made to that material. - */ - -/* MD5C.C - RSA Data Security, Inc., MD5 message-digest algorithm - */ - -/* Copyright (C) 1991-2, RSA Data Security, Inc. Created 1991. All - rights reserved. - - License to copy and use this software is granted provided that it - is identified as the "RSA Data Security, Inc. MD5 Message-Digest - Algorithm" in all material mentioning or referencing this software - or this function. - - License is also granted to make and use derivative works provided - that such works are identified as "derived from the RSA Data - Security, Inc. MD5 Message-Digest Algorithm" in all material - mentioning or referencing the derived work. - - RSA Data Security, Inc. makes no representations concerning either - the merchantability of this software or the suitability of this - software for any particular purpose. It is provided "as is" - without express or implied warranty of any kind. - - These notices must be retained in any copies of any part of this - documentation and/or software. - */ - -/* Copyright 2000-2005 The Apache Software Foundation or its licensors, as - * applicable. - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -/* - * The apr_md5_encode() routine uses much code obtained from the FreeBSD 3.0 - * MD5 crypt() function, which is licenced as follows: - * ---------------------------------------------------------------------------- - * "THE BEER-WARE LICENSE" (Revision 42): - * wrote this file. As long as you retain this notice you - * can do whatever you want with this stuff. If we meet some day, and you think - * this stuff is worth it, you can buy me a beer in return. Poul-Henning Kamp - * ---------------------------------------------------------------------------- - */ -#include "apr_strings.h" -#include "apr_md5.h" -#include "apr_lib.h" -#include "apu_config.h" -#include "apr_sha1.h" - -#if APR_HAVE_STRING_H -#include -#endif -#if APR_HAVE_CRYPT_H -#include -#endif -#if APR_HAVE_UNISTD_H -#include -#endif -#if APR_HAVE_PTHREAD_H -#include -#endif - -/* Constants for MD5Transform routine. - */ - -#define S11 7 -#define S12 12 -#define S13 17 -#define S14 22 -#define S21 5 -#define S22 9 -#define S23 14 -#define S24 20 -#define S31 4 -#define S32 11 -#define S33 16 -#define S34 23 -#define S41 6 -#define S42 10 -#define S43 15 -#define S44 21 - -static void MD5Transform(apr_uint32_t state[4], const unsigned char block[64]); -static void Encode(unsigned char *output, const apr_uint32_t *input, - unsigned int len); -static void Decode(apr_uint32_t *output, const unsigned char *input, - unsigned int len); - -static unsigned char PADDING[64] = -{ - 0x80, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 -}; - -#if APR_CHARSET_EBCDIC -static apr_xlate_t *xlate_ebcdic_to_ascii; /* used in apr_md5_encode() */ -#endif - -/* F, G, H and I are basic MD5 functions. - */ -#define F(x, y, z) (((x) & (y)) | ((~x) & (z))) -#define G(x, y, z) (((x) & (z)) | ((y) & (~z))) -#define H(x, y, z) ((x) ^ (y) ^ (z)) -#define I(x, y, z) ((y) ^ ((x) | (~z))) - -/* ROTATE_LEFT rotates x left n bits. - */ -#define ROTATE_LEFT(x, n) (((x) << (n)) | ((x) >> (32-(n)))) - -/* FF, GG, HH, and II transformations for rounds 1, 2, 3, and 4. - * Rotation is separate from addition to prevent recomputation. - */ -#define FF(a, b, c, d, x, s, ac) { \ - (a) += F ((b), (c), (d)) + (x) + (apr_uint32_t)(ac); \ - (a) = ROTATE_LEFT ((a), (s)); \ - (a) += (b); \ - } -#define GG(a, b, c, d, x, s, ac) { \ - (a) += G ((b), (c), (d)) + (x) + (apr_uint32_t)(ac); \ - (a) = ROTATE_LEFT ((a), (s)); \ - (a) += (b); \ - } -#define HH(a, b, c, d, x, s, ac) { \ - (a) += H ((b), (c), (d)) + (x) + (apr_uint32_t)(ac); \ - (a) = ROTATE_LEFT ((a), (s)); \ - (a) += (b); \ - } -#define II(a, b, c, d, x, s, ac) { \ - (a) += I ((b), (c), (d)) + (x) + (apr_uint32_t)(ac); \ - (a) = ROTATE_LEFT ((a), (s)); \ - (a) += (b); \ - } - -/* MD5 initialization. Begins an MD5 operation, writing a new context. - */ -APU_DECLARE(apr_status_t) apr_md5_init(apr_md5_ctx_t *context) -{ - context->count[0] = context->count[1] = 0; - - /* Load magic initialization constants. */ - context->state[0] = 0x67452301; - context->state[1] = 0xefcdab89; - context->state[2] = 0x98badcfe; - context->state[3] = 0x10325476; - context->xlate = NULL; - - return APR_SUCCESS; -} - -/* MD5 translation setup. Provides the APR translation handle - * to be used for translating the content before calculating the - * digest. - */ -APU_DECLARE(apr_status_t) apr_md5_set_xlate(apr_md5_ctx_t *context, - apr_xlate_t *xlate) -{ -#if APR_HAS_XLATE - apr_status_t rv; - int is_sb; - - /* TODO: remove the single-byte-only restriction from this code - */ - rv = apr_xlate_sb_get(xlate, &is_sb); - if (rv != APR_SUCCESS) { - return rv; - } - if (!is_sb) { - return APR_EINVAL; - } - context->xlate = xlate; - return APR_SUCCESS; -#else - return APR_ENOTIMPL; -#endif /* APR_HAS_XLATE */ -} - -/* MD5 block update operation. Continues an MD5 message-digest - * operation, processing another message block, and updating the - * context. - */ -APU_DECLARE(apr_status_t) apr_md5_update(apr_md5_ctx_t *context, - const void *_input, - apr_size_t inputLen) -{ - const unsigned char *input = _input; - unsigned int i, idx, partLen; -#if APR_HAS_XLATE - apr_size_t inbytes_left, outbytes_left; -#endif - - /* Compute number of bytes mod 64 */ - idx = (unsigned int)((context->count[0] >> 3) & 0x3F); - - /* Update number of bits */ - if ((context->count[0] += ((apr_uint32_t)inputLen << 3)) - < ((apr_uint32_t)inputLen << 3)) - context->count[1]++; - context->count[1] += (apr_uint32_t)inputLen >> 29; - - partLen = 64 - idx; - - /* Transform as many times as possible. */ -#if !APR_HAS_XLATE - if (inputLen >= partLen) { - memcpy(&context->buffer[idx], input, partLen); - MD5Transform(context->state, context->buffer); - - for (i = partLen; i + 63 < inputLen; i += 64) - MD5Transform(context->state, &input[i]); - - idx = 0; - } - else - i = 0; - - /* Buffer remaining input */ - memcpy(&context->buffer[idx], &input[i], inputLen - i); -#else /*APR_HAS_XLATE*/ - if (inputLen >= partLen) { - if (context->xlate) { - inbytes_left = outbytes_left = partLen; - apr_xlate_conv_buffer(context->xlate, (const char *)input, - &inbytes_left, - (char *)&context->buffer[idx], - &outbytes_left); - } - else { - memcpy(&context->buffer[idx], input, partLen); - } - MD5Transform(context->state, context->buffer); - - for (i = partLen; i + 63 < inputLen; i += 64) { - if (context->xlate) { - unsigned char inp_tmp[64]; - inbytes_left = outbytes_left = 64; - apr_xlate_conv_buffer(context->xlate, (const char *)&input[i], - &inbytes_left, (char *)inp_tmp, - &outbytes_left); - MD5Transform(context->state, inp_tmp); - } - else { - MD5Transform(context->state, &input[i]); - } - } - - idx = 0; - } - else - i = 0; - - /* Buffer remaining input */ - if (context->xlate) { - inbytes_left = outbytes_left = inputLen - i; - apr_xlate_conv_buffer(context->xlate, (const char *)&input[i], - &inbytes_left, (char *)&context->buffer[idx], - &outbytes_left); - } - else { - memcpy(&context->buffer[idx], &input[i], inputLen - i); - } -#endif /*APR_HAS_XLATE*/ - return APR_SUCCESS; -} - -/* MD5 finalization. Ends an MD5 message-digest operation, writing the - * the message digest and zeroizing the context. - */ -APU_DECLARE(apr_status_t) apr_md5_final(unsigned char digest[APR_MD5_DIGESTSIZE], - apr_md5_ctx_t *context) -{ - unsigned char bits[8]; - unsigned int idx, padLen; - - /* Save number of bits */ - Encode(bits, context->count, 8); - -#if APR_HAS_XLATE - /* apr_md5_update() should not translate for this final round. */ - context->xlate = NULL; -#endif /*APR_HAS_XLATE*/ - - /* Pad out to 56 mod 64. */ - idx = (unsigned int)((context->count[0] >> 3) & 0x3f); - padLen = (idx < 56) ? (56 - idx) : (120 - idx); - apr_md5_update(context, PADDING, padLen); - - /* Append length (before padding) */ - apr_md5_update(context, bits, 8); - - /* Store state in digest */ - Encode(digest, context->state, APR_MD5_DIGESTSIZE); - - /* Zeroize sensitive information. */ - memset(context, 0, sizeof(*context)); - - return APR_SUCCESS; -} - -/* MD5 in one step (init, update, final) - */ -APU_DECLARE(apr_status_t) apr_md5(unsigned char digest[APR_MD5_DIGESTSIZE], - const void *_input, - apr_size_t inputLen) -{ - const unsigned char *input = _input; - apr_md5_ctx_t ctx; - apr_status_t rv; - - apr_md5_init(&ctx); - - if ((rv = apr_md5_update(&ctx, input, inputLen)) != APR_SUCCESS) - return rv; - - return apr_md5_final(digest, &ctx); -} - -/* MD5 basic transformation. Transforms state based on block. */ -static void MD5Transform(apr_uint32_t state[4], const unsigned char block[64]) -{ - apr_uint32_t a = state[0], b = state[1], c = state[2], d = state[3], - x[APR_MD5_DIGESTSIZE]; - - Decode(x, block, 64); - - /* Round 1 */ - FF(a, b, c, d, x[0], S11, 0xd76aa478); /* 1 */ - FF(d, a, b, c, x[1], S12, 0xe8c7b756); /* 2 */ - FF(c, d, a, b, x[2], S13, 0x242070db); /* 3 */ - FF(b, c, d, a, x[3], S14, 0xc1bdceee); /* 4 */ - FF(a, b, c, d, x[4], S11, 0xf57c0faf); /* 5 */ - FF(d, a, b, c, x[5], S12, 0x4787c62a); /* 6 */ - FF(c, d, a, b, x[6], S13, 0xa8304613); /* 7 */ - FF(b, c, d, a, x[7], S14, 0xfd469501); /* 8 */ - FF(a, b, c, d, x[8], S11, 0x698098d8); /* 9 */ - FF(d, a, b, c, x[9], S12, 0x8b44f7af); /* 10 */ - FF(c, d, a, b, x[10], S13, 0xffff5bb1); /* 11 */ - FF(b, c, d, a, x[11], S14, 0x895cd7be); /* 12 */ - FF(a, b, c, d, x[12], S11, 0x6b901122); /* 13 */ - FF(d, a, b, c, x[13], S12, 0xfd987193); /* 14 */ - FF(c, d, a, b, x[14], S13, 0xa679438e); /* 15 */ - FF(b, c, d, a, x[15], S14, 0x49b40821); /* 16 */ - - /* Round 2 */ - GG(a, b, c, d, x[1], S21, 0xf61e2562); /* 17 */ - GG(d, a, b, c, x[6], S22, 0xc040b340); /* 18 */ - GG(c, d, a, b, x[11], S23, 0x265e5a51); /* 19 */ - GG(b, c, d, a, x[0], S24, 0xe9b6c7aa); /* 20 */ - GG(a, b, c, d, x[5], S21, 0xd62f105d); /* 21 */ - GG(d, a, b, c, x[10], S22, 0x2441453); /* 22 */ - GG(c, d, a, b, x[15], S23, 0xd8a1e681); /* 23 */ - GG(b, c, d, a, x[4], S24, 0xe7d3fbc8); /* 24 */ - GG(a, b, c, d, x[9], S21, 0x21e1cde6); /* 25 */ - GG(d, a, b, c, x[14], S22, 0xc33707d6); /* 26 */ - GG(c, d, a, b, x[3], S23, 0xf4d50d87); /* 27 */ - GG(b, c, d, a, x[8], S24, 0x455a14ed); /* 28 */ - GG(a, b, c, d, x[13], S21, 0xa9e3e905); /* 29 */ - GG(d, a, b, c, x[2], S22, 0xfcefa3f8); /* 30 */ - GG(c, d, a, b, x[7], S23, 0x676f02d9); /* 31 */ - GG(b, c, d, a, x[12], S24, 0x8d2a4c8a); /* 32 */ - - /* Round 3 */ - HH(a, b, c, d, x[5], S31, 0xfffa3942); /* 33 */ - HH(d, a, b, c, x[8], S32, 0x8771f681); /* 34 */ - HH(c, d, a, b, x[11], S33, 0x6d9d6122); /* 35 */ - HH(b, c, d, a, x[14], S34, 0xfde5380c); /* 36 */ - HH(a, b, c, d, x[1], S31, 0xa4beea44); /* 37 */ - HH(d, a, b, c, x[4], S32, 0x4bdecfa9); /* 38 */ - HH(c, d, a, b, x[7], S33, 0xf6bb4b60); /* 39 */ - HH(b, c, d, a, x[10], S34, 0xbebfbc70); /* 40 */ - HH(a, b, c, d, x[13], S31, 0x289b7ec6); /* 41 */ - HH(d, a, b, c, x[0], S32, 0xeaa127fa); /* 42 */ - HH(c, d, a, b, x[3], S33, 0xd4ef3085); /* 43 */ - HH(b, c, d, a, x[6], S34, 0x4881d05); /* 44 */ - HH(a, b, c, d, x[9], S31, 0xd9d4d039); /* 45 */ - HH(d, a, b, c, x[12], S32, 0xe6db99e5); /* 46 */ - HH(c, d, a, b, x[15], S33, 0x1fa27cf8); /* 47 */ - HH(b, c, d, a, x[2], S34, 0xc4ac5665); /* 48 */ - - /* Round 4 */ - II(a, b, c, d, x[0], S41, 0xf4292244); /* 49 */ - II(d, a, b, c, x[7], S42, 0x432aff97); /* 50 */ - II(c, d, a, b, x[14], S43, 0xab9423a7); /* 51 */ - II(b, c, d, a, x[5], S44, 0xfc93a039); /* 52 */ - II(a, b, c, d, x[12], S41, 0x655b59c3); /* 53 */ - II(d, a, b, c, x[3], S42, 0x8f0ccc92); /* 54 */ - II(c, d, a, b, x[10], S43, 0xffeff47d); /* 55 */ - II(b, c, d, a, x[1], S44, 0x85845dd1); /* 56 */ - II(a, b, c, d, x[8], S41, 0x6fa87e4f); /* 57 */ - II(d, a, b, c, x[15], S42, 0xfe2ce6e0); /* 58 */ - II(c, d, a, b, x[6], S43, 0xa3014314); /* 59 */ - II(b, c, d, a, x[13], S44, 0x4e0811a1); /* 60 */ - II(a, b, c, d, x[4], S41, 0xf7537e82); /* 61 */ - II(d, a, b, c, x[11], S42, 0xbd3af235); /* 62 */ - II(c, d, a, b, x[2], S43, 0x2ad7d2bb); /* 63 */ - II(b, c, d, a, x[9], S44, 0xeb86d391); /* 64 */ - - state[0] += a; - state[1] += b; - state[2] += c; - state[3] += d; - - /* Zeroize sensitive information. */ - memset(x, 0, sizeof(x)); -} - -/* Encodes input (apr_uint32_t) into output (unsigned char). Assumes len is - * a multiple of 4. - */ -static void Encode(unsigned char *output, const apr_uint32_t *input, - unsigned int len) -{ - unsigned int i, j; - apr_uint32_t k; - - for (i = 0, j = 0; j < len; i++, j += 4) { - k = input[i]; - output[j] = (unsigned char)(k & 0xff); - output[j + 1] = (unsigned char)((k >> 8) & 0xff); - output[j + 2] = (unsigned char)((k >> 16) & 0xff); - output[j + 3] = (unsigned char)((k >> 24) & 0xff); - } -} - -/* Decodes input (unsigned char) into output (apr_uint32_t). Assumes len is - * a multiple of 4. - */ -static void Decode(apr_uint32_t *output, const unsigned char *input, - unsigned int len) -{ - unsigned int i, j; - - for (i = 0, j = 0; j < len; i++, j += 4) - output[i] = ((apr_uint32_t)input[j]) | - (((apr_uint32_t)input[j + 1]) << 8) | - (((apr_uint32_t)input[j + 2]) << 16) | - (((apr_uint32_t)input[j + 3]) << 24); -} - -#if APR_CHARSET_EBCDIC -APU_DECLARE(apr_status_t) apr_MD5InitEBCDIC(apr_xlate_t *xlate) -{ - xlate_ebcdic_to_ascii = xlate; - return APR_SUCCESS; -} -#endif - -/* - * Define the Magic String prefix that identifies a password as being - * hashed using our algorithm. - */ -static const char *apr1_id = "$apr1$"; - -/* - * The following MD5 password encryption code was largely borrowed from - * the FreeBSD 3.0 /usr/src/lib/libcrypt/crypt.c file, which is - * licenced as stated at the top of this file. - */ - -static void to64(char *s, unsigned long v, int n) -{ - static unsigned char itoa64[] = /* 0 ... 63 => ASCII - 64 */ - "./0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz"; - - while (--n >= 0) { - *s++ = itoa64[v&0x3f]; - v >>= 6; - } -} - -APU_DECLARE(apr_status_t) apr_md5_encode(const char *pw, const char *salt, - char *result, apr_size_t nbytes) -{ - /* - * Minimum size is 8 bytes for salt, plus 1 for the trailing NUL, - * plus 4 for the '$' separators, plus the password hash itself. - * Let's leave a goodly amount of leeway. - */ - - char passwd[120], *p; - const char *sp, *ep; - unsigned char final[APR_MD5_DIGESTSIZE]; - apr_ssize_t sl, pl, i; - apr_md5_ctx_t ctx, ctx1; - unsigned long l; - - /* - * Refine the salt first. It's possible we were given an already-hashed - * string as the salt argument, so extract the actual salt value from it - * if so. Otherwise just use the string up to the first '$' as the salt. - */ - sp = salt; - - /* - * If it starts with the magic string, then skip that. - */ - if (!strncmp(sp, apr1_id, strlen(apr1_id))) { - sp += strlen(apr1_id); - } - - /* - * It stops at the first '$' or 8 chars, whichever comes first - */ - for (ep = sp; (*ep != '\0') && (*ep != '$') && (ep < (sp + 8)); ep++) { - continue; - } - - /* - * Get the length of the true salt - */ - sl = ep - sp; - - /* - * 'Time to make the doughnuts..' - */ - apr_md5_init(&ctx); -#if APR_CHARSET_EBCDIC - apr_md5_set_xlate(&ctx, xlate_ebcdic_to_ascii); -#endif - - /* - * The password first, since that is what is most unknown - */ - apr_md5_update(&ctx, pw, strlen(pw)); - - /* - * Then our magic string - */ - apr_md5_update(&ctx, apr1_id, strlen(apr1_id)); - - /* - * Then the raw salt - */ - apr_md5_update(&ctx, sp, sl); - - /* - * Then just as many characters of the MD5(pw, salt, pw) - */ - apr_md5_init(&ctx1); - apr_md5_update(&ctx1, pw, strlen(pw)); - apr_md5_update(&ctx1, sp, sl); - apr_md5_update(&ctx1, pw, strlen(pw)); - apr_md5_final(final, &ctx1); - for (pl = strlen(pw); pl > 0; pl -= APR_MD5_DIGESTSIZE) { - apr_md5_update(&ctx, final, - (pl > APR_MD5_DIGESTSIZE) ? APR_MD5_DIGESTSIZE : pl); - } - - /* - * Don't leave anything around in vm they could use. - */ - memset(final, 0, sizeof(final)); - - /* - * Then something really weird... - */ - for (i = strlen(pw); i != 0; i >>= 1) { - if (i & 1) { - apr_md5_update(&ctx, final, 1); - } - else { - apr_md5_update(&ctx, pw, 1); - } - } - - /* - * Now make the output string. We know our limitations, so we - * can use the string routines without bounds checking. - */ - strcpy(passwd, apr1_id); - strncat(passwd, sp, sl); - strcat(passwd, "$"); - - apr_md5_final(final, &ctx); - - /* - * And now, just to make sure things don't run too fast.. - * On a 60 Mhz Pentium this takes 34 msec, so you would - * need 30 seconds to build a 1000 entry dictionary... - */ - for (i = 0; i < 1000; i++) { - apr_md5_init(&ctx1); - if (i & 1) { - apr_md5_update(&ctx1, pw, strlen(pw)); - } - else { - apr_md5_update(&ctx1, final, APR_MD5_DIGESTSIZE); - } - if (i % 3) { - apr_md5_update(&ctx1, sp, sl); - } - - if (i % 7) { - apr_md5_update(&ctx1, pw, strlen(pw)); - } - - if (i & 1) { - apr_md5_update(&ctx1, final, APR_MD5_DIGESTSIZE); - } - else { - apr_md5_update(&ctx1, pw, strlen(pw)); - } - apr_md5_final(final,&ctx1); - } - - p = passwd + strlen(passwd); - - l = (final[ 0]<<16) | (final[ 6]<<8) | final[12]; to64(p, l, 4); p += 4; - l = (final[ 1]<<16) | (final[ 7]<<8) | final[13]; to64(p, l, 4); p += 4; - l = (final[ 2]<<16) | (final[ 8]<<8) | final[14]; to64(p, l, 4); p += 4; - l = (final[ 3]<<16) | (final[ 9]<<8) | final[15]; to64(p, l, 4); p += 4; - l = (final[ 4]<<16) | (final[10]<<8) | final[ 5]; to64(p, l, 4); p += 4; - l = final[11] ; to64(p, l, 2); p += 2; - *p = '\0'; - - /* - * Don't leave anything around in vm they could use. - */ - memset(final, 0, sizeof(final)); - - apr_cpystrn(result, passwd, nbytes - 1); - return APR_SUCCESS; -} - -#if !defined(WIN32) && !defined(BEOS) && !defined(NETWARE) -#if defined(APU_CRYPT_THREADSAFE) || !APR_HAS_THREADS || \ - defined(CRYPT_R_CRYPTD) || defined(CRYPT_R_STRUCT_CRYPT_DATA) - -#define crypt_mutex_lock() -#define crypt_mutex_unlock() - -#elif APR_HAVE_PTHREAD_H && defined(PTHREAD_MUTEX_INITIALIZER) - -static pthread_mutex_t crypt_mutex = PTHREAD_MUTEX_INITIALIZER; -static void crypt_mutex_lock(void) -{ - pthread_mutex_lock(&crypt_mutex); -} - -static void crypt_mutex_unlock(void) -{ - pthread_mutex_unlock(&crypt_mutex); -} - -#else - -#error apr_password_validate() is not threadsafe. rebuild APR without thread support. - -#endif -#endif - -/* - * Validate a plaintext password against a smashed one. Uses either - * crypt() (if available) or apr_md5_encode() or apr_sha1_base64(), depending - * upon the format of the smashed input password. Returns APR_SUCCESS if - * they match, or APR_EMISMATCH if they don't. If the platform doesn't - * support crypt, then the default check is against a clear text string. - */ -APU_DECLARE(apr_status_t) apr_password_validate(const char *passwd, - const char *hash) -{ - char sample[120]; -#if !defined(WIN32) && !defined(BEOS) && !defined(NETWARE) - char *crypt_pw; -#endif - if (!strncmp(hash, apr1_id, strlen(apr1_id))) { - /* - * The hash was created using our custom algorithm. - */ - apr_md5_encode(passwd, hash, sample, sizeof(sample)); - } - else if (!strncmp(hash, APR_SHA1PW_ID, APR_SHA1PW_IDLEN)) { - apr_sha1_base64(passwd, strlen(passwd), sample); - } - else { - /* - * It's not our algorithm, so feed it to crypt() if possible. - */ -#if defined(WIN32) || defined(BEOS) || defined(NETWARE) - apr_cpystrn(sample, passwd, sizeof(sample) - 1); -#elif defined(CRYPT_R_CRYPTD) - CRYPTD buffer; - - crypt_pw = crypt_r(passwd, hash, &buffer); - apr_cpystrn(sample, crypt_pw, sizeof(sample) - 1); -#elif defined(CRYPT_R_STRUCT_CRYPT_DATA) - struct crypt_data buffer; - - /* having to clear this seems bogus... GNU doc is - * confusing... user report found from google says - * the crypt_data struct had to be cleared to get - * the same result as plain crypt() - */ - memset(&buffer, 0, sizeof(buffer)); - crypt_pw = crypt_r(passwd, hash, &buffer); - apr_cpystrn(sample, crypt_pw, sizeof(sample) - 1); -#else - /* Do a bit of sanity checking since we know that crypt_r() - * should always be used for threaded builds on AIX, and - * problems in configure logic can result in the wrong - * choice being made. - */ -#if defined(_AIX) && APR_HAS_THREADS -#error Configuration error! crypt_r() should have been selected! -#endif - - /* Handle thread safety issues by holding a mutex around the - * call to crypt(). - */ - crypt_mutex_lock(); - crypt_pw = crypt(passwd, hash); - apr_cpystrn(sample, crypt_pw, sizeof(sample) - 1); - crypt_mutex_unlock(); -#endif - } - return (strcmp(sample, hash) == 0) ? APR_SUCCESS : APR_EMISMATCH; -} diff --git a/libs/apr-util/crypto/apr_sha1.c b/libs/apr-util/crypto/apr_sha1.c deleted file mode 100644 index 0b139127e6c..00000000000 --- a/libs/apr-util/crypto/apr_sha1.c +++ /dev/null @@ -1,372 +0,0 @@ -/* Copyright 2000-2005 The Apache Software Foundation or its licensors, as - * applicable. - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -/* - * The exported function: - * - * apr_sha1_base64(const char *clear, int len, char *out); - * - * provides a means to SHA1 crypt/encode a plaintext password in - * a way which makes password files compatible with those commonly - * used in netscape web and ldap installations. It was put together - * by Clinton Wong , who also notes that: - * - * Note: SHA1 support is useful for migration purposes, but is less - * secure than Apache's password format, since Apache's (MD5) - * password format uses a random eight character salt to generate - * one of many possible hashes for the same password. Netscape - * uses plain SHA1 without a salt, so the same password - * will always generate the same hash, making it easier - * to break since the search space is smaller. - * - * See also the documentation in support/SHA1 as to hints on how to - * migrate an existing netscape installation and other supplied utitlites. - * - * This software also makes use of the following component: - * - * NIST Secure Hash Algorithm - * heavily modified by Uwe Hollerbach uh@alumni.caltech edu - * from Peter C. Gutmann's implementation as found in - * Applied Cryptography by Bruce Schneier - * This code is hereby placed in the public domain - */ - -#include "apr_sha1.h" -#include "apr_base64.h" -#include "apr_strings.h" -#include "apr_lib.h" -#if APR_CHARSET_EBCDIC -#include "apr_xlate.h" -#endif /*APR_CHARSET_EBCDIC*/ -#include - -/* a bit faster & bigger, if defined */ -#define UNROLL_LOOPS - -/* NIST's proposed modification to SHA, 7/11/94 */ -#define USE_MODIFIED_SHA - -/* SHA f()-functions */ -#define f1(x,y,z) ((x & y) | (~x & z)) -#define f2(x,y,z) (x ^ y ^ z) -#define f3(x,y,z) ((x & y) | (x & z) | (y & z)) -#define f4(x,y,z) (x ^ y ^ z) - -/* SHA constants */ -#define CONST1 0x5a827999L -#define CONST2 0x6ed9eba1L -#define CONST3 0x8f1bbcdcL -#define CONST4 0xca62c1d6L - -/* 32-bit rotate */ - -#define ROT32(x,n) ((x << n) | (x >> (32 - n))) - -#define FUNC(n,i) \ - temp = ROT32(A,5) + f##n(B,C,D) + E + W[i] + CONST##n; \ - E = D; D = C; C = ROT32(B,30); B = A; A = temp - -#define SHA_BLOCKSIZE 64 - -#if APR_CHARSET_EBCDIC -static apr_xlate_t *ebcdic2ascii_xlate; - -APU_DECLARE(apr_status_t) apr_SHA1InitEBCDIC(apr_xlate_t *x) -{ - apr_status_t rv; - int onoff; - - /* Only single-byte conversion is supported. - */ - rv = apr_xlate_sb_get(x, &onoff); - if (rv) { - return rv; - } - if (!onoff) { /* If conversion is not single-byte-only */ - return APR_EINVAL; - } - ebcdic2ascii_xlate = x; - return APR_SUCCESS; -} -#endif - -/* do SHA transformation */ -static void sha_transform(apr_sha1_ctx_t *sha_info) -{ - int i; - apr_uint32_t temp, A, B, C, D, E, W[80]; - - for (i = 0; i < 16; ++i) { - W[i] = sha_info->data[i]; - } - for (i = 16; i < 80; ++i) { - W[i] = W[i-3] ^ W[i-8] ^ W[i-14] ^ W[i-16]; -#ifdef USE_MODIFIED_SHA - W[i] = ROT32(W[i], 1); -#endif /* USE_MODIFIED_SHA */ - } - A = sha_info->digest[0]; - B = sha_info->digest[1]; - C = sha_info->digest[2]; - D = sha_info->digest[3]; - E = sha_info->digest[4]; -#ifdef UNROLL_LOOPS - FUNC(1, 0); FUNC(1, 1); FUNC(1, 2); FUNC(1, 3); FUNC(1, 4); - FUNC(1, 5); FUNC(1, 6); FUNC(1, 7); FUNC(1, 8); FUNC(1, 9); - FUNC(1,10); FUNC(1,11); FUNC(1,12); FUNC(1,13); FUNC(1,14); - FUNC(1,15); FUNC(1,16); FUNC(1,17); FUNC(1,18); FUNC(1,19); - - FUNC(2,20); FUNC(2,21); FUNC(2,22); FUNC(2,23); FUNC(2,24); - FUNC(2,25); FUNC(2,26); FUNC(2,27); FUNC(2,28); FUNC(2,29); - FUNC(2,30); FUNC(2,31); FUNC(2,32); FUNC(2,33); FUNC(2,34); - FUNC(2,35); FUNC(2,36); FUNC(2,37); FUNC(2,38); FUNC(2,39); - - FUNC(3,40); FUNC(3,41); FUNC(3,42); FUNC(3,43); FUNC(3,44); - FUNC(3,45); FUNC(3,46); FUNC(3,47); FUNC(3,48); FUNC(3,49); - FUNC(3,50); FUNC(3,51); FUNC(3,52); FUNC(3,53); FUNC(3,54); - FUNC(3,55); FUNC(3,56); FUNC(3,57); FUNC(3,58); FUNC(3,59); - - FUNC(4,60); FUNC(4,61); FUNC(4,62); FUNC(4,63); FUNC(4,64); - FUNC(4,65); FUNC(4,66); FUNC(4,67); FUNC(4,68); FUNC(4,69); - FUNC(4,70); FUNC(4,71); FUNC(4,72); FUNC(4,73); FUNC(4,74); - FUNC(4,75); FUNC(4,76); FUNC(4,77); FUNC(4,78); FUNC(4,79); -#else /* !UNROLL_LOOPS */ - for (i = 0; i < 20; ++i) { - FUNC(1,i); - } - for (i = 20; i < 40; ++i) { - FUNC(2,i); - } - for (i = 40; i < 60; ++i) { - FUNC(3,i); - } - for (i = 60; i < 80; ++i) { - FUNC(4,i); - } -#endif /* !UNROLL_LOOPS */ - sha_info->digest[0] += A; - sha_info->digest[1] += B; - sha_info->digest[2] += C; - sha_info->digest[3] += D; - sha_info->digest[4] += E; -} - -union endianTest { - long Long; - char Char[sizeof(long)]; -}; - -static char isLittleEndian(void) -{ - static union endianTest u; - u.Long = 1; - return (u.Char[0] == 1); -} - -/* change endianness of data */ - -/* count is the number of bytes to do an endian flip */ -static void maybe_byte_reverse(apr_uint32_t *buffer, int count) -{ - int i; - apr_byte_t ct[4], *cp; - - if (isLittleEndian()) { /* do the swap only if it is little endian */ - count /= sizeof(apr_uint32_t); - cp = (apr_byte_t *) buffer; - for (i = 0; i < count; ++i) { - ct[0] = cp[0]; - ct[1] = cp[1]; - ct[2] = cp[2]; - ct[3] = cp[3]; - cp[0] = ct[3]; - cp[1] = ct[2]; - cp[2] = ct[1]; - cp[3] = ct[0]; - cp += sizeof(apr_uint32_t); - } - } -} - -/* initialize the SHA digest */ - -APU_DECLARE(void) apr_sha1_init(apr_sha1_ctx_t *sha_info) -{ - sha_info->digest[0] = 0x67452301L; - sha_info->digest[1] = 0xefcdab89L; - sha_info->digest[2] = 0x98badcfeL; - sha_info->digest[3] = 0x10325476L; - sha_info->digest[4] = 0xc3d2e1f0L; - sha_info->count_lo = 0L; - sha_info->count_hi = 0L; - sha_info->local = 0; -} - -/* update the SHA digest */ - -APU_DECLARE(void) apr_sha1_update_binary(apr_sha1_ctx_t *sha_info, - const unsigned char *buffer, - unsigned int count) -{ - unsigned int i; - - if ((sha_info->count_lo + ((apr_uint32_t) count << 3)) < sha_info->count_lo) { - ++sha_info->count_hi; - } - sha_info->count_lo += (apr_uint32_t) count << 3; - sha_info->count_hi += (apr_uint32_t) count >> 29; - if (sha_info->local) { - i = SHA_BLOCKSIZE - sha_info->local; - if (i > count) { - i = count; - } - memcpy(((apr_byte_t *) sha_info->data) + sha_info->local, buffer, i); - count -= i; - buffer += i; - sha_info->local += i; - if (sha_info->local == SHA_BLOCKSIZE) { - maybe_byte_reverse(sha_info->data, SHA_BLOCKSIZE); - sha_transform(sha_info); - } - else { - return; - } - } - while (count >= SHA_BLOCKSIZE) { - memcpy(sha_info->data, buffer, SHA_BLOCKSIZE); - buffer += SHA_BLOCKSIZE; - count -= SHA_BLOCKSIZE; - maybe_byte_reverse(sha_info->data, SHA_BLOCKSIZE); - sha_transform(sha_info); - } - memcpy(sha_info->data, buffer, count); - sha_info->local = count; -} - -APU_DECLARE(void) apr_sha1_update(apr_sha1_ctx_t *sha_info, const char *buf, - unsigned int count) -{ -#if APR_CHARSET_EBCDIC - int i; - const apr_byte_t *buffer = (const apr_byte_t *) buf; - apr_size_t inbytes_left, outbytes_left; - - if ((sha_info->count_lo + ((apr_uint32_t) count << 3)) < sha_info->count_lo) { - ++sha_info->count_hi; - } - sha_info->count_lo += (apr_uint32_t) count << 3; - sha_info->count_hi += (apr_uint32_t) count >> 29; - /* Is there a remainder of the previous Update operation? */ - if (sha_info->local) { - i = SHA_BLOCKSIZE - sha_info->local; - if (i > count) { - i = count; - } - inbytes_left = outbytes_left = i; - apr_xlate_conv_buffer(ebcdic2ascii_xlate, buffer, &inbytes_left, - ((apr_byte_t *) sha_info->data) + sha_info->local, - &outbytes_left); - count -= i; - buffer += i; - sha_info->local += i; - if (sha_info->local == SHA_BLOCKSIZE) { - maybe_byte_reverse(sha_info->data, SHA_BLOCKSIZE); - sha_transform(sha_info); - } - else { - return; - } - } - while (count >= SHA_BLOCKSIZE) { - inbytes_left = outbytes_left = SHA_BLOCKSIZE; - apr_xlate_conv_buffer(ebcdic2ascii_xlate, buffer, &inbytes_left, - (apr_byte_t *) sha_info->data, &outbytes_left); - buffer += SHA_BLOCKSIZE; - count -= SHA_BLOCKSIZE; - maybe_byte_reverse(sha_info->data, SHA_BLOCKSIZE); - sha_transform(sha_info); - } - inbytes_left = outbytes_left = count; - apr_xlate_conv_buffer(ebcdic2ascii_xlate, buffer, &inbytes_left, - (apr_byte_t *) sha_info->data, &outbytes_left); - sha_info->local = count; -#else - apr_sha1_update_binary(sha_info, (const unsigned char *) buf, count); -#endif -} - -/* finish computing the SHA digest */ - -APU_DECLARE(void) apr_sha1_final(unsigned char digest[APR_SHA1_DIGESTSIZE], - apr_sha1_ctx_t *sha_info) -{ - int count, i, j; - apr_uint32_t lo_bit_count, hi_bit_count, k; - - lo_bit_count = sha_info->count_lo; - hi_bit_count = sha_info->count_hi; - count = (int) ((lo_bit_count >> 3) & 0x3f); - ((apr_byte_t *) sha_info->data)[count++] = 0x80; - if (count > SHA_BLOCKSIZE - 8) { - memset(((apr_byte_t *) sha_info->data) + count, 0, SHA_BLOCKSIZE - count); - maybe_byte_reverse(sha_info->data, SHA_BLOCKSIZE); - sha_transform(sha_info); - memset((apr_byte_t *) sha_info->data, 0, SHA_BLOCKSIZE - 8); - } - else { - memset(((apr_byte_t *) sha_info->data) + count, 0, - SHA_BLOCKSIZE - 8 - count); - } - maybe_byte_reverse(sha_info->data, SHA_BLOCKSIZE); - sha_info->data[14] = hi_bit_count; - sha_info->data[15] = lo_bit_count; - sha_transform(sha_info); - - for (i = 0, j = 0; j < APR_SHA1_DIGESTSIZE; i++) { - k = sha_info->digest[i]; - digest[j++] = (unsigned char) ((k >> 24) & 0xff); - digest[j++] = (unsigned char) ((k >> 16) & 0xff); - digest[j++] = (unsigned char) ((k >> 8) & 0xff); - digest[j++] = (unsigned char) (k & 0xff); - } -} - - -APU_DECLARE(void) apr_sha1_base64(const char *clear, int len, char *out) -{ - int l; - apr_sha1_ctx_t context; - apr_byte_t digest[APR_SHA1_DIGESTSIZE]; - - if (strncmp(clear, APR_SHA1PW_ID, APR_SHA1PW_IDLEN) == 0) { - clear += APR_SHA1PW_IDLEN; - } - - apr_sha1_init(&context); - apr_sha1_update(&context, clear, len); - apr_sha1_final(digest, &context); - - /* private marker. */ - apr_cpystrn(out, APR_SHA1PW_ID, APR_SHA1PW_IDLEN + 1); - - /* SHA1 hash is always 20 chars */ - l = apr_base64_encode_binary(out + APR_SHA1PW_IDLEN, digest, sizeof(digest)); - out[l + APR_SHA1PW_IDLEN] = '\0'; - - /* - * output of base64 encoded SHA1 is always 28 chars + APR_SHA1PW_IDLEN - */ -} diff --git a/libs/apr-util/crypto/getuuid.c b/libs/apr-util/crypto/getuuid.c deleted file mode 100644 index 293b24eeb26..00000000000 --- a/libs/apr-util/crypto/getuuid.c +++ /dev/null @@ -1,209 +0,0 @@ -/* Copyright 2000-2005 The Apache Software Foundation or its licensors, as - * applicable. - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -/* - * This attempts to generate V1 UUIDs according to the Internet Draft - * located at http://www.webdav.org/specs/draft-leach-uuids-guids-01.txt - */ -#include "apr.h" -#include "apr_uuid.h" -#include "apr_general.h" -#include "apr_portable.h" -#if !APR_HAS_RANDOM -#include "apr_md5.h" -#endif - -#if APR_HAVE_UNISTD_H -#include /* for getpid, gethostname */ -#endif -#if APR_HAVE_STDLIB_H -#include /* for rand, srand */ -#endif - - -#if APR_HAVE_STRING_H -#include -#endif -#if APR_HAVE_STRINGS_H -#include -#endif -#if APR_HAVE_NETDB_H -#include -#endif -#if APR_HAVE_SYS_TIME_H -#include /* for gettimeofday */ -#endif - -#define NODE_LENGTH 6 - -static int uuid_state_seqnum; -static unsigned char uuid_state_node[NODE_LENGTH] = { 0 }; - - -static void get_random_info(unsigned char node[NODE_LENGTH]) -{ -#if APR_HAS_RANDOM - - (void) apr_generate_random_bytes(node, NODE_LENGTH); - -#else - - unsigned char seed[APR_MD5_DIGESTSIZE]; - apr_md5_ctx_t c; - - /* ### probably should revise some of this to be a bit more portable */ - - /* Leach & Salz use Linux-specific struct sysinfo; - * replace with pid/tid for portability (in the spirit of mod_unique_id) */ - struct { - /* Add thread id here, if applicable, when we get to pthread or apr */ - pid_t pid; -#ifdef NETWARE - apr_uint64_t t; -#else - struct timeval t; -#endif - char hostname[257]; - - } r; - - apr_md5_init(&c); -#ifdef NETWARE - r.pid = NXThreadGetId(); - NXGetTime(NX_SINCE_BOOT, NX_USECONDS, &(r.t)); -#else - r.pid = getpid(); - gettimeofday(&r.t, (struct timezone *)0); -#endif - gethostname(r.hostname, 256); - apr_md5_update(&c, (const unsigned char *)&r, sizeof(r)); - apr_md5_final(seed, &c); - - memcpy(node, seed, NODE_LENGTH); /* use a subset of the seed bytes */ -#endif -} - -/* This implementation generates a random node ID instead of a - system-dependent call to get IEEE node ID. This is also more secure: - we aren't passing out our MAC address. -*/ -static void get_pseudo_node_identifier(unsigned char *node) -{ - get_random_info(node); - node[0] |= 0x01; /* this designates a random node ID */ -} - -static void get_system_time(apr_uint64_t *uuid_time) -{ - /* ### fix this call to be more portable? */ - *uuid_time = apr_time_now(); - - /* Offset between UUID formatted times and Unix formatted times. - UUID UTC base time is October 15, 1582. - Unix base time is January 1, 1970. */ - *uuid_time = (*uuid_time * 10) + APR_TIME_C(0x01B21DD213814000); -} - -/* true_random -- generate a crypto-quality random number. */ -static int true_random(void) -{ - apr_uint64_t time_now; - -#if APR_HAS_RANDOM - unsigned char buf[2]; - - if (apr_generate_random_bytes(buf, 2) == APR_SUCCESS) { - return (buf[0] << 8) | buf[1]; - } -#endif - - /* crap. this isn't crypto quality, but it will be Good Enough */ - - get_system_time(&time_now); - srand((unsigned int)(((time_now >> 32) ^ time_now) & 0xffffffff)); - - return rand() & 0x0FFFF; -} - -static void init_state(void) -{ - uuid_state_seqnum = true_random(); - get_pseudo_node_identifier(uuid_state_node); -} - -static void get_current_time(apr_uint64_t *timestamp) -{ - /* ### this needs to be made thread-safe! */ - - apr_uint64_t time_now; - static apr_uint64_t time_last = 0; - static apr_uint64_t fudge = 0; - - get_system_time(&time_now); - - /* if clock reading changed since last UUID generated... */ - if (time_last != time_now) { - /* The clock reading has changed since the last UUID was generated. - Reset the fudge factor. if we are generating them too fast, then - the fudge may need to be reset to something greater than zero. */ - if (time_last + fudge > time_now) - fudge = time_last + fudge - time_now + 1; - else - fudge = 0; - time_last = time_now; - } - else { - /* We generated two really fast. Bump the fudge factor. */ - ++fudge; - } - - *timestamp = time_now + fudge; -} - -APU_DECLARE(void) apr_uuid_get(apr_uuid_t *uuid) -{ - apr_uint64_t timestamp; - unsigned char *d = uuid->data; - -#if APR_HAS_OS_UUID - if (apr_os_uuid_get(d) == APR_SUCCESS) { - return; - } -#endif /* !APR_HAS_OS_UUID */ - - if (!uuid_state_node[0]) - init_state(); - - get_current_time(×tamp); - - /* time_low, uint32 */ - d[3] = (unsigned char)timestamp; - d[2] = (unsigned char)(timestamp >> 8); - d[1] = (unsigned char)(timestamp >> 16); - d[0] = (unsigned char)(timestamp >> 24); - /* time_mid, uint16 */ - d[5] = (unsigned char)(timestamp >> 32); - d[4] = (unsigned char)(timestamp >> 40); - /* time_hi_and_version, uint16 */ - d[7] = (unsigned char)(timestamp >> 48); - d[6] = (unsigned char)(((timestamp >> 56) & 0x0F) | 0x10); - /* clock_seq_hi_and_reserved, uint8 */ - d[8] = (unsigned char)(((++uuid_state_seqnum >> 8) & 0x3F) | 0x80); - /* clock_seq_low, uint8 */ - d[9] = (unsigned char)uuid_state_seqnum; - /* node, byte[6] */ - memcpy(&d[10], uuid_state_node, NODE_LENGTH); -} diff --git a/libs/apr-util/crypto/uuid.c b/libs/apr-util/crypto/uuid.c deleted file mode 100644 index 451481b5a58..00000000000 --- a/libs/apr-util/crypto/uuid.c +++ /dev/null @@ -1,130 +0,0 @@ -/* Copyright 2000-2005 The Apache Software Foundation or its licensors, as - * applicable. - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -#include /* for sprintf */ - -#include "apr.h" -#include "apr_uuid.h" -#include "apr_errno.h" -#include "apr_lib.h" - - -APU_DECLARE(void) apr_uuid_format(char *buffer, const apr_uuid_t *uuid) -{ - const unsigned char *d = uuid->data; - - sprintf(buffer, - "%02x%02x%02x%02x-%02x%02x-%02x%02x-%02x%02x-%02x%02x%02x%02x%02x%02x", - d[0], d[1], d[2], d[3], d[4], d[5], d[6], d[7], - d[8], d[9], d[10], d[11], d[12], d[13], d[14], d[15]); -} - -/* convert a pair of hex digits to an integer value [0,255] */ -#if 'A' == 65 -static unsigned char parse_hexpair(const char *s) -{ - int result; - int temp; - - result = s[0] - '0'; - if (result > 48) - result = (result - 39) << 4; - else if (result > 16) - result = (result - 7) << 4; - else - result = result << 4; - - temp = s[1] - '0'; - if (temp > 48) - result |= temp - 39; - else if (temp > 16) - result |= temp - 7; - else - result |= temp; - - return (unsigned char)result; -} -#else -static unsigned char parse_hexpair(const char *s) -{ - int result; - - if (isdigit(*s)) { - result = (*s - '0') << 4; - } - else { - if (isupper(*s)) { - result = (*s - 'A' + 10) << 4; - } - else { - result = (*s - 'a' + 10) << 4; - } - } - - ++s; - if (isdigit(*s)) { - result |= (*s - '0'); - } - else { - if (isupper(*s)) { - result |= (*s - 'A' + 10); - } - else { - result |= (*s - 'a' + 10); - } - } - - return (unsigned char)result; -} -#endif - -APU_DECLARE(apr_status_t) apr_uuid_parse(apr_uuid_t *uuid, - const char *uuid_str) -{ - int i; - unsigned char *d = uuid->data; - - for (i = 0; i < 36; ++i) { - char c = uuid_str[i]; - if (!apr_isxdigit(c) && - !(c == '-' && (i == 8 || i == 13 || i == 18 || i == 23))) - /* ### need a better value */ - return APR_BADARG; - } - if (uuid_str[36] != '\0') { - /* ### need a better value */ - return APR_BADARG; - } - - d[0] = parse_hexpair(&uuid_str[0]); - d[1] = parse_hexpair(&uuid_str[2]); - d[2] = parse_hexpair(&uuid_str[4]); - d[3] = parse_hexpair(&uuid_str[6]); - - d[4] = parse_hexpair(&uuid_str[9]); - d[5] = parse_hexpair(&uuid_str[11]); - - d[6] = parse_hexpair(&uuid_str[14]); - d[7] = parse_hexpair(&uuid_str[16]); - - d[8] = parse_hexpair(&uuid_str[19]); - d[9] = parse_hexpair(&uuid_str[21]); - - for (i = 6; i--;) - d[10 + i] = parse_hexpair(&uuid_str[i*2+24]); - - return APR_SUCCESS; -} diff --git a/libs/apr-util/dbd/apr_dbd.c b/libs/apr-util/dbd/apr_dbd.c deleted file mode 100644 index d9ec11e04c3..00000000000 --- a/libs/apr-util/dbd/apr_dbd.c +++ /dev/null @@ -1,303 +0,0 @@ -/* Copyright 2000-2005 The Apache Software Foundation or its licensors, as - * applicable. - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -#include - -#include "apu.h" -#include "apr_pools.h" -#include "apr_dbd_internal.h" -#include "apr_dbd.h" -#include "apr_hash.h" -#include "apr_thread_mutex.h" -#include "apr_dso.h" -#include "apr_strings.h" - -static apr_hash_t *drivers = NULL; - -#define CLEANUP_CAST (apr_status_t (*)(void*)) - -/* Once the autofoo supports building it for dynamic load, we can use - * #define APR_DSO_BUILD APR_HAS_DSO - */ - -#if APR_DSO_BUILD -#if APR_HAS_THREADS -static apr_thread_mutex_t* mutex = NULL; -#endif -#else -#define DRIVER_LOAD(name,driver,pool) \ - { \ - extern const apr_dbd_driver_t driver; \ - apr_hash_set(drivers,name,APR_HASH_KEY_STRING,&driver); \ - if (driver.init) { \ - driver.init(pool); \ - } \ - } -#endif - -static apr_status_t apr_dbd_term(void *ptr) -{ - /* set drivers to NULL so init can work again */ - drivers = NULL; - - /* Everything else we need is handled by cleanups registered - * when we created mutexes and loaded DSOs - */ - return APR_SUCCESS; -} - -APU_DECLARE(apr_status_t) apr_dbd_init(apr_pool_t *pool) -{ - apr_status_t ret = APR_SUCCESS; - - if (drivers != NULL) { - return APR_SUCCESS; - } - drivers = apr_hash_make(pool); - apr_pool_cleanup_register(pool, NULL, apr_dbd_term, - apr_pool_cleanup_null); - -#if APR_DSO_BUILD - -#if APR_HAS_THREADS - ret = apr_thread_mutex_create(&mutex, APR_THREAD_MUTEX_DEFAULT, pool); - /* This already registers a pool cleanup */ -#endif - -#else - -#if APU_HAVE_MYSQL - DRIVER_LOAD("mysql", apr_dbd_mysql_driver, pool); -#endif -#if APU_HAVE_PGSQL - DRIVER_LOAD("pgsql", apr_dbd_pgsql_driver, pool); -#endif -#if APU_HAVE_SQLITE3 - DRIVER_LOAD("sqlite3", apr_dbd_sqlite3_driver, pool); -#endif -#if APU_HAVE_SQLITE2 - DRIVER_LOAD("sqlite2", apr_dbd_sqlite2_driver, pool); -#endif -#if APU_HAVE_SOME_OTHER_BACKEND - DRIVER_LOAD("firebird", apr_dbd_other_driver, pool); -#endif -#endif - return ret; -} -APU_DECLARE(apr_status_t) apr_dbd_get_driver(apr_pool_t *pool, const char *name, - const apr_dbd_driver_t **driver) -{ -#if APR_DSO_BUILD - char path[80]; - apr_dso_handle_t *dlhandle = NULL; -#endif - apr_status_t rv; - - *driver = apr_hash_get(drivers, name, APR_HASH_KEY_STRING); - if (*driver) { - return APR_SUCCESS; - } - -#if APR_DSO_BUILD - -#if APR_HAS_THREADS - rv = apr_thread_mutex_lock(mutex); - if (rv != APR_SUCCESS) { - goto unlock; - } - *driver = apr_hash_get(drivers, name, APR_HASH_KEY_STRING); - if (*driver) { - goto unlock; - } -#endif - -#ifdef WIN32 - sprintf(path, "apr_dbd_%s.dll", name); -#else - sprintf(path, "apr_dbd_%s.so", name); -#endif - rv = apr_dso_load(&dlhandle, path, pool); - if (rv != APR_SUCCESS) { /* APR_EDSOOPEN */ - goto unlock; - } - sprintf(path, "apr_dbd_%s_driver", name); - rv = apr_dso_sym((void*)driver, dlhandle, path); - if (rv != APR_SUCCESS) { /* APR_ESYMNOTFOUND */ - apr_dso_unload(dlhandle); - goto unlock; - } - if ((*driver)->init) { - (*driver)->init(pool); - } - apr_hash_set(drivers, name, APR_HASH_KEY_STRING, *driver); - -unlock: -#if APR_HAS_THREADS - apr_thread_mutex_unlock(mutex); -#endif - -#else /* APR_DSO_BUILD - so if it wasn't already loaded, it's NOTIMPL */ - rv = APR_ENOTIMPL; -#endif - - return rv; -} -APU_DECLARE(apr_status_t) apr_dbd_open(const apr_dbd_driver_t *driver, - apr_pool_t *pool, const char *params, - apr_dbd_t **handle) -{ - apr_status_t rv; - *handle = driver->open(pool, params); - if (*handle == NULL) { - return APR_EGENERAL; - } - rv = apr_dbd_check_conn(driver, pool, *handle); - if ((rv != APR_SUCCESS) && (rv != APR_ENOTIMPL)) { - apr_dbd_close(driver, *handle); - return APR_EGENERAL; - } - return APR_SUCCESS; -} -APU_DECLARE(int) apr_dbd_transaction_start(const apr_dbd_driver_t *driver, - apr_pool_t *pool, apr_dbd_t *handle, - apr_dbd_transaction_t **trans) -{ - int ret = driver->start_transaction(pool, handle, trans); - if (*trans) { - apr_pool_cleanup_register(pool, *trans, - CLEANUP_CAST driver->end_transaction, - apr_pool_cleanup_null); - } - return ret; -} -APU_DECLARE(int) apr_dbd_transaction_end(const apr_dbd_driver_t *driver, - apr_pool_t *pool, - apr_dbd_transaction_t *trans) -{ - apr_pool_cleanup_kill(pool, trans, CLEANUP_CAST driver->end_transaction); - return driver->end_transaction(trans); -} - -APU_DECLARE(apr_status_t) apr_dbd_close(const apr_dbd_driver_t *driver, - apr_dbd_t *handle) -{ - return driver->close(handle); -} -APU_DECLARE(const char*) apr_dbd_name(const apr_dbd_driver_t *driver) -{ - return driver->name; -} -APU_DECLARE(void*) apr_dbd_native_handle(const apr_dbd_driver_t *driver, - apr_dbd_t *handle) -{ - return driver->native_handle(handle); -} -APU_DECLARE(int) apr_dbd_check_conn(const apr_dbd_driver_t *driver, apr_pool_t *pool, - apr_dbd_t *handle) -{ - return driver->check_conn(pool, handle); -} -APU_DECLARE(int) apr_dbd_set_dbname(const apr_dbd_driver_t *driver, apr_pool_t *pool, - apr_dbd_t *handle, const char *name) -{ - return driver->set_dbname(pool,handle,name); -} -APU_DECLARE(int) apr_dbd_query(const apr_dbd_driver_t *driver, apr_dbd_t *handle, - int *nrows, const char *statement) -{ - return driver->query(handle,nrows,statement); -} -APU_DECLARE(int) apr_dbd_select(const apr_dbd_driver_t *driver, apr_pool_t *pool, - apr_dbd_t *handle, apr_dbd_results_t **res, - const char *statement, int random) -{ - return driver->select(pool,handle,res,statement,random); -} -APU_DECLARE(int) apr_dbd_num_cols(const apr_dbd_driver_t *driver, - apr_dbd_results_t *res) -{ - return driver->num_cols(res); -} -APU_DECLARE(int) apr_dbd_num_tuples(const apr_dbd_driver_t *driver, - apr_dbd_results_t *res) -{ - return driver->num_tuples(res); -} -APU_DECLARE(int) apr_dbd_get_row(const apr_dbd_driver_t *driver, apr_pool_t *pool, - apr_dbd_results_t *res, apr_dbd_row_t **row, - int rownum) -{ - return driver->get_row(pool,res,row,rownum); -} -APU_DECLARE(const char*) apr_dbd_get_entry(const apr_dbd_driver_t *driver, - apr_dbd_row_t *row, int col) -{ - return driver->get_entry(row,col); -} -APU_DECLARE(const char*) apr_dbd_error(const apr_dbd_driver_t *driver, - apr_dbd_t *handle, int errnum) -{ - return driver->error(handle,errnum); -} -APU_DECLARE(const char*) apr_dbd_escape(const apr_dbd_driver_t *driver, - apr_pool_t *pool, const char *string, - apr_dbd_t *handle) -{ - return driver->escape(pool,string,handle); -} -APU_DECLARE(int) apr_dbd_prepare(const apr_dbd_driver_t *driver, apr_pool_t *pool, - apr_dbd_t *handle, const char *query, - const char *label, - apr_dbd_prepared_t **statement) -{ - return driver->prepare(pool,handle,query,label,statement); -} -APU_DECLARE(int) apr_dbd_pquery(const apr_dbd_driver_t *driver, apr_pool_t *pool, - apr_dbd_t *handle, int *nrows, - apr_dbd_prepared_t *statement, int nargs, - const char **args) -{ - return driver->pquery(pool,handle,nrows,statement,nargs,args); -} -APU_DECLARE(int) apr_dbd_pselect(const apr_dbd_driver_t *driver, apr_pool_t *pool, - apr_dbd_t *handle, apr_dbd_results_t **res, - apr_dbd_prepared_t *statement, int random, - int nargs, const char **args) -{ - return driver->pselect(pool,handle,res,statement,random,nargs,args); -} -APU_DECLARE(int) apr_dbd_pvquery(const apr_dbd_driver_t *driver, apr_pool_t *pool, - apr_dbd_t *handle, int *nrows, - apr_dbd_prepared_t *statement,...) -{ - int ret; - va_list args; - va_start(args, statement); - ret = driver->pvquery(pool,handle,nrows,statement,args); - va_end(args); - return ret; -} -APU_DECLARE(int) apr_dbd_pvselect(const apr_dbd_driver_t *driver, apr_pool_t *pool, - apr_dbd_t *handle, apr_dbd_results_t **res, - apr_dbd_prepared_t *statement, int random,...) -{ - int ret; - va_list args; - va_start(args, random); - ret = driver->pvselect(pool,handle,res,statement,random,args); - va_end(args); - return ret; -} diff --git a/libs/apr-util/dbd/apr_dbd_pgsql.c b/libs/apr-util/dbd/apr_dbd_pgsql.c deleted file mode 100644 index 76bfa0c11f1..00000000000 --- a/libs/apr-util/dbd/apr_dbd_pgsql.c +++ /dev/null @@ -1,664 +0,0 @@ -/* Copyright 2000-2005 The Apache Software Foundation or its licensors, as - * applicable. - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -#include "apu.h" - -#if APU_HAVE_PGSQL - -#include "apu_config.h" - -#include -#include - -#ifdef HAVE_LIBPQ_FE_H -#include -#elif defined(HAVE_POSTGRESQL_LIBPQ_FE_H) -#include -#endif - -#include "apr_strings.h" -#include "apr_time.h" - -#include "apr_dbd_internal.h" - -#define QUERY_MAX_ARGS 40 - -struct apr_dbd_transaction_t { - int errnum; - apr_dbd_t *handle; -}; - -struct apr_dbd_t { - PGconn *conn; - apr_dbd_transaction_t *trans; -}; - -struct apr_dbd_results_t { - int random; - PGconn *handle; - PGresult *res; - size_t ntuples; - size_t sz; - size_t index; -}; - -struct apr_dbd_row_t { - int n; - apr_dbd_results_t *res; -}; - -struct apr_dbd_prepared_t { - const char *name; - int prepared; - int nargs; -}; - -#define dbd_pgsql_is_success(x) (((x) == PGRES_EMPTY_QUERY) \ - || ((x) == PGRES_COMMAND_OK) \ - || ((x) == PGRES_TUPLES_OK)) - -static apr_status_t clear_result(void *data) -{ - PQclear(data); - return APR_SUCCESS; -} - -static int dbd_pgsql_select(apr_pool_t *pool, apr_dbd_t *sql, - apr_dbd_results_t **results, - const char *query, int seek) -{ - PGresult *res; - int ret; - if ( sql->trans && sql->trans->errnum ) { - return sql->trans->errnum; - } - if (seek) { /* synchronous query */ - res = PQexec(sql->conn, query); - if (res) { - ret = PQresultStatus(res); - if (dbd_pgsql_is_success(ret)) { - ret = 0; - } else { - PQclear(res); - } - } else { - ret = PGRES_FATAL_ERROR; - } - if (ret != 0) { - if (sql->trans) { - sql->trans->errnum = ret; - } - return ret; - } - if (!*results) { - *results = apr_pcalloc(pool, sizeof(apr_dbd_results_t)); - } - (*results)->res = res; - (*results)->ntuples = PQntuples(res); - (*results)->sz = PQnfields(res); - (*results)->random = seek; - apr_pool_cleanup_register(pool, res, clear_result, - apr_pool_cleanup_null); - } - else { - if (PQsendQuery(sql->conn, query) == 0) { - if (sql->trans) { - sql->trans->errnum = 1; - } - return 1; - } - if (*results == NULL) { - *results = apr_pcalloc(pool, sizeof(apr_dbd_results_t)); - } - (*results)->random = seek; - (*results)->handle = sql->conn; - } - return 0; -} - -static int dbd_pgsql_get_row(apr_pool_t *pool, apr_dbd_results_t *res, - apr_dbd_row_t **rowp, int rownum) -{ - apr_dbd_row_t *row = *rowp; - int sequential = ((rownum >= 0) && res->random) ? 0 : 1; - - if (row == NULL) { - row = apr_palloc(pool, sizeof(apr_dbd_row_t)); - *rowp = row; - row->res = res; - row->n = sequential ? 0 : rownum; - } - else { - if ( sequential ) { - ++row->n; - } - else { - row->n = rownum; - } - } - - if (res->random) { - if (row->n >= res->ntuples) { - *rowp = NULL; - apr_pool_cleanup_run(pool, res->res, clear_result); - res->res = NULL; - return -1; - } - } - else { - if (row->n >= res->ntuples) { - /* no data; we have to fetch some */ - row->n -= res->ntuples; - if (res->res != NULL) { - PQclear(res->res); - } - res->res = PQgetResult(res->handle); - if (res->res) { - res->ntuples = PQntuples(res->res); - while (res->ntuples == 0) { - /* if we got an empty result, clear it, wait a mo, try - * again */ - PQclear(res->res); - apr_sleep(100000); /* 0.1 secs */ - res->res = PQgetResult(res->handle); - if (res->res) { - res->ntuples = PQntuples(res->res); - } - else { - return -1; - } - } - if (res->sz == 0) { - res->sz = PQnfields(res->res); - } - } - else { - return -1; - } - } - } - return 0; -} - -static const char *dbd_pgsql_get_entry(const apr_dbd_row_t *row, int n) -{ - return PQgetvalue(row->res->res, row->n, n); -} - -static const char *dbd_pgsql_error(apr_dbd_t *sql, int n) -{ - return PQerrorMessage(sql->conn); -} - -static int dbd_pgsql_query(apr_dbd_t *sql, int *nrows, const char *query) -{ - PGresult *res; - int ret; - if (sql->trans && sql->trans->errnum) { - return sql->trans->errnum; - } - res = PQexec(sql->conn, query); - if (res) { - ret = PQresultStatus(res); - if (dbd_pgsql_is_success(ret)) { - /* ugh, making 0 return-success doesn't fit */ - ret = 0; - } - *nrows = atoi(PQcmdTuples(res)); - PQclear(res); - } - else { - ret = PGRES_FATAL_ERROR; - } - if (sql->trans) { - sql->trans->errnum = ret; - } - return ret; -} - -static const char *dbd_pgsql_escape(apr_pool_t *pool, const char *arg, - apr_dbd_t *sql) -{ - size_t len = strlen(arg); - char *ret = apr_palloc(pool, 2*(len + 1)); - PQescapeString(ret, arg, len); - return ret; -} - -static int dbd_pgsql_prepare(apr_pool_t *pool, apr_dbd_t *sql, - const char *query, const char *label, - apr_dbd_prepared_t **statement) -{ - char *sqlcmd; - char *sqlptr; - size_t length; - size_t i = 0; - const char *args[QUERY_MAX_ARGS]; - size_t alen; - int ret; - PGresult *res; - char *pgquery; - char *pgptr; - - if (!*statement) { - *statement = apr_palloc(pool, sizeof(apr_dbd_prepared_t)); - } - (*statement)->nargs = 0; - /* Translate from apr_dbd to native query format */ - for (sqlptr = (char*)query; *sqlptr; ++sqlptr) { - if (sqlptr[0] == '%') { - if (isalpha(sqlptr[1])) { - ++(*statement)->nargs; - } - else if (sqlptr[1] == '%') { - ++sqlptr; - } - } - } - length = strlen(query) + 1; - if ((*statement)->nargs > 8) { - length += (*statement)->nargs - 8; - } - pgptr = pgquery = apr_palloc(pool, length) ; - - for (sqlptr = (char*)query; *sqlptr; ++sqlptr) { - if ((sqlptr[0] == '%') && isalpha(sqlptr[1])) { - *pgptr++ = '$'; - if (i < 9) { - *pgptr++ = '1' + i; - } - else { - *pgptr++ = '0' + ((i+1)/10); - *pgptr++ = '0' + ((i+1)%10); - } - switch (*++sqlptr) { - case 'd': - args[i] = "integer"; - break; - case 's': - args[i] = "varchar"; - break; - default: - args[i] = "varchar"; - break; - } - length += 1 + strlen(args[i]); - ++i; - } - else if ((sqlptr[0] == '%') && (sqlptr[1] == '%')) { - /* reduce %% to % */ - *pgptr++ = *sqlptr++; - } - else { - *pgptr++ = *sqlptr; - } - } - *pgptr = 0; - - if (!label) { - /* don't really prepare; use in execParams instead */ - (*statement)->prepared = 0; - (*statement)->name = apr_pstrdup(pool, pgquery); - return 0; - } - (*statement)->name = apr_pstrdup(pool, label); - - /* length of SQL query that prepares this statement */ - length = 8 + strlen(label) + 2 + 4 + length + 1; - sqlcmd = apr_palloc(pool, length); - sqlptr = sqlcmd; - memcpy(sqlptr, "PREPARE ", 8); - sqlptr += 8; - length = strlen(label); - memcpy(sqlptr, label, length); - sqlptr += length; - if ((*statement)->nargs > 0) { - memcpy(sqlptr, " (",2); - sqlptr += 2; - for (i=0; i < (*statement)->nargs; ++i) { - alen = strlen(args[i]); - memcpy(sqlptr, args[i], alen); - sqlptr += alen; - *sqlptr++ = ','; - } - sqlptr[-1] = ')'; - } - memcpy(sqlptr, " AS ", 4); - sqlptr += 4; - memcpy(sqlptr, pgquery, strlen(pgquery)); - sqlptr += strlen(pgquery); - *sqlptr = 0; - - res = PQexec(sql->conn, sqlcmd); - if ( res ) { - ret = PQresultStatus(res); - if (dbd_pgsql_is_success(ret)) { - ret = 0; - } - /* Hmmm, do we do this here or register it on the pool? */ - PQclear(res); - } - else { - ret = PGRES_FATAL_ERROR; - } - (*statement)->prepared = 1; - - return ret; -} - -static int dbd_pgsql_pquery(apr_pool_t *pool, apr_dbd_t *sql, - int *nrows, apr_dbd_prepared_t *statement, - int nargs, const char **values) -{ - int ret; - PGresult *res; - - if (sql->trans && sql->trans->errnum) { - return sql->trans->errnum; - } - - if (statement->prepared) { - res = PQexecPrepared(sql->conn, statement->name, nargs, values, 0, 0, - 0); - } - else { - res = PQexecParams(sql->conn, statement->name, nargs, 0, values, 0, 0, - 0); - } - if (res) { - ret = PQresultStatus(res); - if (dbd_pgsql_is_success(ret)) { - ret = 0; - } - *nrows = atoi(PQcmdTuples(res)); - PQclear(res); - } - else { - ret = PGRES_FATAL_ERROR; - } - - if (sql->trans) { - sql->trans->errnum = ret; - } - return ret; -} - -static int dbd_pgsql_pvquery(apr_pool_t *pool, apr_dbd_t *sql, - int *nrows, apr_dbd_prepared_t *statement, - va_list args) -{ - const char **values; - int i; - - if (sql->trans && sql->trans->errnum) { - return sql->trans->errnum; - } - - values = apr_palloc(pool, sizeof(*values) * statement->nargs); - - for (i = 0; i < statement->nargs; i++) { - values[i] = apr_pstrdup(pool, va_arg(args, const char*)); - } - - return dbd_pgsql_pquery(pool, sql, nrows, statement, - statement->nargs, values); -} - -static int dbd_pgsql_pselect(apr_pool_t *pool, apr_dbd_t *sql, - apr_dbd_results_t **results, - apr_dbd_prepared_t *statement, - int seek, int nargs, const char **values) -{ - PGresult *res; - int rv; - int ret = 0; - - if (sql->trans && sql->trans->errnum) { - return sql->trans->errnum; - } - - if (seek) { /* synchronous query */ - if (statement->prepared) { - res = PQexecPrepared(sql->conn, statement->name, nargs, values, 0, - 0, 0); - } - else { - res = PQexecParams(sql->conn, statement->name, nargs, 0, values, 0, - 0, 0); - } - if (res) { - ret = PQresultStatus(res); - if (dbd_pgsql_is_success(ret)) { - ret = 0; - } - else { - PQclear(res); - } - } - else { - ret = PGRES_FATAL_ERROR; - } - if (ret != 0) { - if (sql->trans) { - sql->trans->errnum = ret; - } - return ret; - } - if (!*results) { - *results = apr_pcalloc(pool, sizeof(apr_dbd_results_t)); - } - (*results)->res = res; - (*results)->ntuples = PQntuples(res); - (*results)->sz = PQnfields(res); - (*results)->random = seek; - apr_pool_cleanup_register(pool, res, clear_result, - apr_pool_cleanup_null); - } - else { - if (statement->prepared) { - rv = PQsendQueryPrepared(sql->conn, statement->name, nargs, values, - 0, 0, 0); - } - else { - rv = PQsendQueryParams(sql->conn, statement->name, nargs, 0, - values, 0, 0, 0); - } - if (rv == 0) { - if (sql->trans) { - sql->trans->errnum = 1; - } - return 1; - } - if (!*results) { - *results = apr_pcalloc(pool, sizeof(apr_dbd_results_t)); - } - (*results)->random = seek; - (*results)->handle = sql->conn; - } - - if (sql->trans) { - sql->trans->errnum = ret; - } - return ret; -} - -static int dbd_pgsql_pvselect(apr_pool_t *pool, apr_dbd_t *sql, - apr_dbd_results_t **results, - apr_dbd_prepared_t *statement, - int seek, va_list args) -{ - const char **values; - int i; - - if (sql->trans && sql->trans->errnum) { - return sql->trans->errnum; - } - - values = apr_palloc(pool, sizeof(*values) * statement->nargs); - - for (i = 0; i < statement->nargs; i++) { - values[i] = apr_pstrdup(pool, va_arg(args, const char*)); - } - - return dbd_pgsql_pselect(pool, sql, results, statement, - seek, statement->nargs, values) ; -} - -static int dbd_pgsql_start_transaction(apr_pool_t *pool, apr_dbd_t *handle, - apr_dbd_transaction_t **trans) -{ - int ret = 0; - PGresult *res; - - /* XXX handle recursive transactions here */ - - res = PQexec(handle->conn, "BEGIN TRANSACTION"); - if (res) { - ret = PQresultStatus(res); - if (dbd_pgsql_is_success(ret)) { - ret = 0; - if (!*trans) { - *trans = apr_pcalloc(pool, sizeof(apr_dbd_transaction_t)); - } - } - PQclear(res); - (*trans)->handle = handle; - handle->trans = *trans; - } - else { - ret = PGRES_FATAL_ERROR; - } - return ret; -} - -static int dbd_pgsql_end_transaction(apr_dbd_transaction_t *trans) -{ - PGresult *res; - int ret = -1; /* no transaction is an error cond */ - if (trans) { - if (trans->errnum) { - trans->errnum = 0; - res = PQexec(trans->handle->conn, "ROLLBACK"); - } - else { - res = PQexec(trans->handle->conn, "COMMIT"); - } - if (res) { - ret = PQresultStatus(res); - if (dbd_pgsql_is_success(ret)) { - ret = 0; - } - PQclear(res); - } - else { - ret = PGRES_FATAL_ERROR; - } - trans->handle->trans = NULL; - } - return ret; -} - -static apr_dbd_t *dbd_pgsql_open(apr_pool_t *pool, const char *params) -{ - apr_dbd_t *sql; - - PGconn *conn = PQconnectdb(params); - - /* if there's an error in the connect string or something we get - * back a * bogus connection object, and things like PQreset are - * liable to segfault, so just close it out now. it would be nice - * if we could give an indication of why we failed to connect... */ - if (PQstatus(conn) != CONNECTION_OK) { - PQfinish(conn); - return NULL; - } - - sql = apr_pcalloc (pool, sizeof (*sql)); - - sql->conn = conn; - - return sql; -} - -static apr_status_t dbd_pgsql_close(apr_dbd_t *handle) -{ - PQfinish(handle->conn); - return APR_SUCCESS; -} - -static apr_status_t dbd_pgsql_check_conn(apr_pool_t *pool, - apr_dbd_t *handle) -{ - if (PQstatus(handle->conn) != CONNECTION_OK) { - PQreset(handle->conn); - if (PQstatus(handle->conn) != CONNECTION_OK) { - return APR_EGENERAL; - } - } - return APR_SUCCESS; -} - -static int dbd_pgsql_select_db(apr_pool_t *pool, apr_dbd_t *handle, - const char *name) -{ - return APR_ENOTIMPL; -} - -static void *dbd_pgsql_native(apr_dbd_t *handle) -{ - return handle->conn; -} - -static int dbd_pgsql_num_cols(apr_dbd_results_t* res) -{ - return res->sz; -} - -static int dbd_pgsql_num_tuples(apr_dbd_results_t* res) -{ - if (res->random) { - return res->ntuples; - } - else { - return -1; - } -} - -APU_DECLARE_DATA const apr_dbd_driver_t apr_dbd_pgsql_driver = { - "pgsql", - NULL, - dbd_pgsql_native, - dbd_pgsql_open, - dbd_pgsql_check_conn, - dbd_pgsql_close, - dbd_pgsql_select_db, - dbd_pgsql_start_transaction, - dbd_pgsql_end_transaction, - dbd_pgsql_query, - dbd_pgsql_select, - dbd_pgsql_num_cols, - dbd_pgsql_num_tuples, - dbd_pgsql_get_row, - dbd_pgsql_get_entry, - dbd_pgsql_error, - dbd_pgsql_escape, - dbd_pgsql_prepare, - dbd_pgsql_pvquery, - dbd_pgsql_pvselect, - dbd_pgsql_pquery, - dbd_pgsql_pselect, -}; -#endif diff --git a/libs/apr-util/dbd/apr_dbd_sqlite2.c b/libs/apr-util/dbd/apr_dbd_sqlite2.c deleted file mode 100644 index d93bf111009..00000000000 --- a/libs/apr-util/dbd/apr_dbd_sqlite2.c +++ /dev/null @@ -1,396 +0,0 @@ -/* Copyright 2000-2005 The Apache Software Foundation or its licensors, as - * applicable. - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -#include "apu.h" - -#if APU_HAVE_SQLITE2 - -#include -#include - -#include - -#include "apr_strings.h" -#include "apr_time.h" - -#include "apr_dbd_internal.h" - -struct apr_dbd_transaction_t { - int errnum; - apr_dbd_t *handle; -}; - -struct apr_dbd_t { - sqlite *conn; - char *errmsg; - apr_dbd_transaction_t *trans; -}; - -struct apr_dbd_results_t { - int random; - sqlite *handle; - char **res; - size_t ntuples; - size_t sz; - size_t index; -}; - -struct apr_dbd_row_t { - int n; - char **data; - apr_dbd_results_t *res; -}; - -struct apr_dbd_prepared_t { - const char *name; - int prepared; -}; - -#define FREE_ERROR_MSG(dbd) \ - do { \ - if(dbd && dbd->errmsg) { \ - free(dbd->errmsg); \ - dbd->errmsg = NULL; \ - } \ - } while(0); - -static apr_status_t free_table(void *data) -{ - sqlite_free_table(data); - return APR_SUCCESS; -} - -static int dbd_sqlite_select(apr_pool_t * pool, apr_dbd_t * sql, - apr_dbd_results_t ** results, const char *query, - int seek) -{ - char **result; - int ret = 0; - int tuples = 0; - int fields = 0; - - if (sql->trans && sql->trans->errnum) { - return sql->trans->errnum; - } - - FREE_ERROR_MSG(sql); - - ret = sqlite_get_table(sql->conn, query, &result, &tuples, &fields, - &sql->errmsg); - - if (ret == SQLITE_OK) { - if (!*results) { - *results = apr_pcalloc(pool, sizeof(apr_dbd_results_t)); - } - - (*results)->res = result; - (*results)->ntuples = tuples; - (*results)->sz = fields; - (*results)->random = seek; - - if (tuples > 0) - apr_pool_cleanup_register(pool, result, free_table, - apr_pool_cleanup_null); - - ret = 0; - } - else { - sql->trans->errnum = ret; - } - - return ret; -} - -static int dbd_sqlite_get_row(apr_pool_t * pool, apr_dbd_results_t * res, - apr_dbd_row_t ** rowp, int rownum) -{ - apr_dbd_row_t *row = *rowp; - int sequential = ((rownum >= 0) && res->random) ? 0 : 1; - - if (row == NULL) { - row = apr_palloc(pool, sizeof(apr_dbd_row_t)); - *rowp = row; - row->res = res; - row->n = sequential ? 0 : rownum - 1; - } - else { - if (sequential) { - ++row->n; - } - else { - row->n = rownum - 1; - } - } - - if (row->n >= res->ntuples) { - *rowp = NULL; - apr_pool_cleanup_run(pool, res->res, free_table); - res->res = NULL; - return -1; - } - - /* Pointer magic explanation: - * The sqlite result is an array such that the first res->sz elements are - * the column names and each tuple follows afterwards - * ex: (from the sqlite2 documentation) - SELECT employee_name, login, host FROM users WHERE login LIKE * 'd%'; - - nrow = 2 - ncolumn = 3 - result[0] = "employee_name" - result[1] = "login" - result[2] = "host" - result[3] = "dummy" - result[4] = "No such user" - result[5] = 0 - result[6] = "D. Richard Hipp" - result[7] = "drh" - result[8] = "zadok" - */ - - row->data = res->res + res->sz + (res->sz * row->n); - - return 0; -} - -static const char *dbd_sqlite_get_entry(const apr_dbd_row_t * row, int n) -{ - if ((n < 0) || (n >= row->res->sz)) { - return NULL; - } - - return row->data[n]; -} - -static const char *dbd_sqlite_error(apr_dbd_t * sql, int n) -{ - return sql->errmsg; -} - -static int dbd_sqlite_query(apr_dbd_t * sql, int *nrows, const char *query) -{ - char **result; - int ret; - int tuples = 0; - int fields = 0; - - if (sql->trans && sql->trans->errnum) { - return sql->trans->errnum; - } - - FREE_ERROR_MSG(sql); - - ret = - sqlite_get_table(sql->conn, query, &result, &tuples, &fields, - &sql->errmsg); - if (ret == SQLITE_OK) { - *nrows = sqlite_changes(sql->conn); - - if (tuples > 0) - free(result); - - ret = 0; - } - - if (sql->trans) { - sql->trans->errnum = ret; - } - - return ret; -} - -static apr_status_t free_mem(void *data) -{ - sqlite_freemem(data); - return APR_SUCCESS; -} - -static const char *dbd_sqlite_escape(apr_pool_t * pool, const char *arg, - apr_dbd_t * sql) -{ - char *ret = sqlite_mprintf("%q", arg); - apr_pool_cleanup_register(pool, ret, free_mem, apr_pool_cleanup_null); - return ret; -} - -static int dbd_sqlite_prepare(apr_pool_t * pool, apr_dbd_t * sql, - const char *query, const char *label, - apr_dbd_prepared_t ** statement) -{ - return APR_ENOTIMPL; -} - -static int dbd_sqlite_pquery(apr_pool_t * pool, apr_dbd_t * sql, - int *nrows, apr_dbd_prepared_t * statement, - int nargs, const char **values) -{ - return APR_ENOTIMPL; -} - -static int dbd_sqlite_pvquery(apr_pool_t * pool, apr_dbd_t * sql, - int *nrows, apr_dbd_prepared_t * statement, - va_list args) -{ - return APR_ENOTIMPL; -} - -static int dbd_sqlite_pselect(apr_pool_t * pool, apr_dbd_t * sql, - apr_dbd_results_t ** results, - apr_dbd_prepared_t * statement, - int seek, int nargs, const char **values) -{ - return APR_ENOTIMPL; -} - -static int dbd_sqlite_pvselect(apr_pool_t * pool, apr_dbd_t * sql, - apr_dbd_results_t ** results, - apr_dbd_prepared_t * statement, int seek, - va_list args) -{ - return APR_ENOTIMPL; -} - -static int dbd_sqlite_start_transaction(apr_pool_t * pool, apr_dbd_t * handle, - apr_dbd_transaction_t ** trans) -{ - int ret, rows; - - ret = dbd_sqlite_query(handle, &rows, "BEGIN TRANSACTION"); - if (ret == 0) { - if (!*trans) { - *trans = apr_pcalloc(pool, sizeof(apr_dbd_transaction_t)); - } - (*trans)->handle = handle; - handle->trans = *trans; - } - else { - ret = -1; - } - return ret; -} - -static int dbd_sqlite_end_transaction(apr_dbd_transaction_t * trans) -{ - int rows; - int ret = -1; /* no transaction is an error cond */ - - if (trans) { - if (trans->errnum) { - trans->errnum = 0; - ret = - dbd_sqlite_query(trans->handle, &rows, - "ROLLBACK TRANSACTION"); - } - else { - ret = - dbd_sqlite_query(trans->handle, &rows, "COMMIT TRANSACTION"); - } - trans->handle->trans = NULL; - } - - return ret; -} - -static apr_dbd_t *dbd_sqlite_open(apr_pool_t * pool, const char *params_) -{ - apr_dbd_t *sql; - sqlite *conn = NULL; - char *perm; - int iperms = 600; - char* params = apr_pstrdup(pool, params_); - /* params = "[filename]:[permissions]" - * example: "shopping.db:600" - */ - - perm = strstr(params, ":"); - if (perm) { - *(perm++) = '\x00'; /* split the filename and permissions */ - - if (strlen(perm) > 0) - iperms = atoi(perm); - } - - conn = sqlite_open(params, iperms, NULL); - - sql = apr_pcalloc(pool, sizeof(*sql)); - sql->conn = conn; - - return sql; -} - -static apr_status_t dbd_sqlite_close(apr_dbd_t * handle) -{ - if (handle->conn) { - sqlite_close(handle->conn); - handle->conn = NULL; - } - return APR_SUCCESS; -} - -static apr_status_t dbd_sqlite_check_conn(apr_pool_t * pool, - apr_dbd_t * handle) -{ - if (handle->conn == NULL) - return -1; - return APR_SUCCESS; -} - -static int dbd_sqlite_select_db(apr_pool_t * pool, apr_dbd_t * handle, - const char *name) -{ - return APR_ENOTIMPL; -} - -static void *dbd_sqlite_native(apr_dbd_t * handle) -{ - return handle->conn; -} - -static int dbd_sqlite_num_cols(apr_dbd_results_t * res) -{ - return res->sz; -} - -static int dbd_sqlite_num_tuples(apr_dbd_results_t * res) -{ - return res->ntuples; -} - -APU_DECLARE_DATA const apr_dbd_driver_t apr_dbd_sqlite2_driver = { - "sqlite2", - NULL, - dbd_sqlite_native, - dbd_sqlite_open, - dbd_sqlite_check_conn, - dbd_sqlite_close, - dbd_sqlite_select_db, - dbd_sqlite_start_transaction, - dbd_sqlite_end_transaction, - dbd_sqlite_query, - dbd_sqlite_select, - dbd_sqlite_num_cols, - dbd_sqlite_num_tuples, - dbd_sqlite_get_row, - dbd_sqlite_get_entry, - dbd_sqlite_error, - dbd_sqlite_escape, - dbd_sqlite_prepare, - dbd_sqlite_pvquery, - dbd_sqlite_pvselect, - dbd_sqlite_pquery, - dbd_sqlite_pselect, -}; -#endif diff --git a/libs/apr-util/dbd/apr_dbd_sqlite3.c b/libs/apr-util/dbd/apr_dbd_sqlite3.c deleted file mode 100644 index d82e3d31d2e..00000000000 --- a/libs/apr-util/dbd/apr_dbd_sqlite3.c +++ /dev/null @@ -1,723 +0,0 @@ -/* Copyright 2000-2005 The Apache Software Foundation or its licensors, as - * applicable. - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -#include "apu.h" - -#if APU_HAVE_SQLITE3 - -#include -#include - -#include - -#include "apr_strings.h" -#include "apr_time.h" - -#include "apr_dbd_internal.h" - -#define MAX_RETRY_COUNT 15 -#define MAX_RETRY_SLEEP 100000 - -struct apr_dbd_transaction_t { - int errnum; - apr_dbd_t *handle; -}; - -struct apr_dbd_t { - sqlite3 *conn; - apr_dbd_transaction_t *trans; -#if APR_HAS_THREADS - apr_thread_mutex_t *mutex; -#endif - apr_pool_t *pool; - apr_dbd_prepared_t *prep; -}; - -typedef struct { - char *name; - char *value; - int size; - int type; -} apr_dbd_column_t; - -struct apr_dbd_row_t { - apr_dbd_results_t *res; - apr_dbd_column_t **columns; - apr_dbd_row_t *next_row; - int columnCount; - int rownum; -}; - -struct apr_dbd_results_t { - int random; - sqlite3 *handle; - sqlite3_stmt *stmt; - apr_dbd_row_t *next_row; - size_t sz; - int tuples; - char **col_names; -}; - -struct apr_dbd_prepared_t { - sqlite3_stmt *stmt; - apr_dbd_prepared_t *next; -}; - -#define dbd_sqlite3_is_success(x) (((x) == SQLITE_DONE ) \ - || ((x) == SQLITE_OK )) - -static int dbd_sqlite3_select(apr_pool_t * pool, apr_dbd_t * sql, apr_dbd_results_t ** results, const char *query, int seek) -{ - sqlite3_stmt *stmt = NULL; - const char *tail = NULL; - int i, ret, retry_count = 0; - size_t num_tuples = 0; - int increment = 0; - apr_dbd_row_t *row = NULL; - apr_dbd_row_t *lastrow = NULL; - apr_dbd_column_t *column; - char *hold = NULL; - - if (sql->trans && sql->trans->errnum) { - return sql->trans->errnum; - } - -#if APR_HAS_THREADS - apr_thread_mutex_lock(sql->mutex); -#endif - - ret = sqlite3_prepare(sql->conn, query, strlen(query), &stmt, &tail); - if (!dbd_sqlite3_is_success(ret)) { -#if APR_HAS_THREADS - apr_thread_mutex_unlock(sql->mutex); -#endif - return ret; - } else { - int column_count; - column_count = sqlite3_column_count(stmt); - if (!*results) { - *results = apr_pcalloc(pool, sizeof(apr_dbd_results_t)); - } - (*results)->stmt = stmt; - (*results)->sz = column_count; - (*results)->random = seek; - (*results)->next_row = 0; - (*results)->tuples = 0; - (*results)->col_names = apr_pcalloc(pool, - column_count * sizeof(char *)); - do { - ret = sqlite3_step(stmt); - if (ret == SQLITE_BUSY) { - if (retry_count++ > MAX_RETRY_COUNT) { - ret = SQLITE_ERROR; - } else { -#if APR_HAS_THREADS - apr_thread_mutex_unlock(sql->mutex); -#endif - apr_sleep(MAX_RETRY_SLEEP); -#if APR_HAS_THREADS - apr_thread_mutex_lock(sql->mutex); -#endif - } - } else if (ret == SQLITE_ROW) { - int length; - apr_dbd_column_t *col; - row = apr_palloc(pool, sizeof(apr_dbd_row_t)); - row->res = *results; - increment = sizeof(apr_dbd_column_t *); - length = increment * (*results)->sz; - row->columns = apr_palloc(pool, length); - row->columnCount = column_count; - for (i = 0; i < (*results)->sz; i++) { - column = apr_palloc(pool, sizeof(apr_dbd_column_t)); - row->columns[i] = column; - /* copy column name once only */ - if ((*results)->col_names[i] == NULL) { - (*results)->col_names[i] = - apr_pstrdup(pool, sqlite3_column_name(stmt, i)); - } - column->name = (*results)->col_names[i]; - column->size = sqlite3_column_bytes(stmt, i); - column->type = sqlite3_column_type(stmt, i); - column->value = NULL; - switch (column->type) { - case SQLITE_FLOAT: - case SQLITE_INTEGER: - case SQLITE_TEXT: - hold = NULL; - hold = (char *) sqlite3_column_text(stmt, i); - if (hold) { - column->value = apr_palloc(pool, column->size + 1); - strncpy(column->value, hold, column->size + 1); - } - break; - case SQLITE_BLOB: - break; - case SQLITE_NULL: - break; - } - col = row->columns[i]; - } - row->rownum = num_tuples++; - row->next_row = 0; - (*results)->tuples = num_tuples; - if ((*results)->next_row == 0) { - (*results)->next_row = row; - } - if (lastrow != 0) { - lastrow->next_row = row; - } - lastrow = row; - } else if (ret == SQLITE_DONE) { - ret = SQLITE_OK; - } - } while (ret == SQLITE_ROW || ret == SQLITE_BUSY); - } - ret = sqlite3_finalize(stmt); -#if APR_HAS_THREADS - apr_thread_mutex_unlock(sql->mutex); -#endif - - if (sql->trans) { - sql->trans->errnum = ret; - } - return ret; -} - -static int dbd_sqlite3_get_row(apr_pool_t *pool, apr_dbd_results_t *res, - apr_dbd_row_t **rowp, int rownum) -{ - int i = 0; - - if (rownum == -1) { - *rowp = res->next_row; - if (*rowp == 0) - return -1; - res->next_row = (*rowp)->next_row; - return 0; - } - if (rownum > res->tuples) { - return -1; - } - rownum--; - *rowp = res->next_row; - for (; *rowp != 0; i++, *rowp = (*rowp)->next_row) { - if (i == rownum) { - return 0; - } - } - - return -1; - -} - -static const char *dbd_sqlite3_get_entry(const apr_dbd_row_t *row, int n) -{ - apr_dbd_column_t *column; - const char *value; - if ((n < 0) || (n >= row->columnCount)) { - return NULL; - } - column = row->columns[n]; - value = column->value; - return value; -} - -static const char *dbd_sqlite3_error(apr_dbd_t *sql, int n) -{ - return sqlite3_errmsg(sql->conn); -} - -static int dbd_sqlite3_query(apr_dbd_t *sql, int *nrows, const char *query) -{ - sqlite3_stmt *stmt = NULL; - const char *tail = NULL; - int ret = -1, length = 0; - - if (sql->trans && sql->trans->errnum) { - return sql->trans->errnum; - } - - length = strlen(query); -#if APR_HAS_THREADS - apr_thread_mutex_lock(sql->mutex); -#endif - - do { - int retry_count = 0; - - ret = sqlite3_prepare(sql->conn, query, length, &stmt, &tail); - if (ret != SQLITE_OK) { - sqlite3_finalize(stmt); - break; - } - - while(retry_count++ <= MAX_RETRY_COUNT) { - ret = sqlite3_step(stmt); - if (ret != SQLITE_BUSY) - break; - -#if APR_HAS_THREADS - apr_thread_mutex_unlock(sql->mutex); -#endif - apr_sleep(MAX_RETRY_SLEEP); -#if APR_HAS_THREADS - apr_thread_mutex_lock(sql->mutex); -#endif - } - - *nrows = sqlite3_changes(sql->conn); - sqlite3_finalize(stmt); - length -= (tail - query); - query = tail; - } while (length > 0); - - if (dbd_sqlite3_is_success(ret)) { - ret = 0; - } -#if APR_HAS_THREADS - apr_thread_mutex_unlock(sql->mutex); -#endif - if (sql->trans) { - sql->trans->errnum = ret; - } - return ret; -} - -static apr_status_t free_mem(void *data) -{ - sqlite3_free(data); - return APR_SUCCESS; -} - -static const char *dbd_sqlite3_escape(apr_pool_t *pool, const char *arg, - apr_dbd_t *sql) -{ - char *ret = sqlite3_mprintf("%q", arg); - apr_pool_cleanup_register(pool, ret, free_mem, - apr_pool_cleanup_null); - return ret; -} - -static int dbd_sqlite3_prepare(apr_pool_t *pool, apr_dbd_t *sql, - const char *query, const char *label, - apr_dbd_prepared_t **statement) -{ - sqlite3_stmt *stmt; - char *p, *slquery = apr_pstrdup(pool, query); - const char *tail = NULL, *q; - int ret; - - for (p = slquery, q = query; *q; ++q) { - if (q[0] == '%') { - if (isalpha(q[1])) { - *p++ = '?'; - ++q; - } - else if (q[1] == '%') { - /* reduce %% to % */ - *p++ = *q++; - } - else { - *p++ = *q; - } - } - else { - *p++ = *q; - } - } - *p = 0; - -#if APR_HAS_THREADS - apr_thread_mutex_lock(sql->mutex); -#endif - - ret = sqlite3_prepare(sql->conn, slquery, strlen(query), &stmt, &tail); - if (ret == SQLITE_OK) { - apr_dbd_prepared_t *prep; - - prep = apr_pcalloc(sql->pool, sizeof(*prep)); - prep->stmt = stmt; - prep->next = sql->prep; - - /* link new statement to the handle */ - sql->prep = prep; - - *statement = prep; - } else { - sqlite3_finalize(stmt); - } - -#if APR_HAS_THREADS - apr_thread_mutex_unlock(sql->mutex); -#endif - - return ret; -} - -static int dbd_sqlite3_pquery(apr_pool_t *pool, apr_dbd_t *sql, - int *nrows, apr_dbd_prepared_t *statement, - int nargs, const char **values) -{ - sqlite3_stmt *stmt = statement->stmt; - int ret = -1, retry_count = 0, i; - - if (sql->trans && sql->trans->errnum) { - return sql->trans->errnum; - } - -#if APR_HAS_THREADS - apr_thread_mutex_lock(sql->mutex); -#endif - - ret = sqlite3_reset(stmt); - if (ret == SQLITE_OK) { - for (i=0; i < nargs; i++) { - sqlite3_bind_text(stmt, i + 1, values[i], strlen(values[i]), - SQLITE_STATIC); - } - - while(retry_count++ <= MAX_RETRY_COUNT) { - ret = sqlite3_step(stmt); - if (ret != SQLITE_BUSY) - break; - -#if APR_HAS_THREADS - apr_thread_mutex_unlock(sql->mutex); -#endif - apr_sleep(MAX_RETRY_SLEEP); -#if APR_HAS_THREADS - apr_thread_mutex_lock(sql->mutex); -#endif - } - - *nrows = sqlite3_changes(sql->conn); - - sqlite3_reset(stmt); - } - - if (dbd_sqlite3_is_success(ret)) { - ret = 0; - } -#if APR_HAS_THREADS - apr_thread_mutex_unlock(sql->mutex); -#endif - if (sql->trans) { - sql->trans->errnum = ret; - } - - return ret; -} - -static int dbd_sqlite3_pvquery(apr_pool_t *pool, apr_dbd_t *sql, int *nrows, - apr_dbd_prepared_t *statement, va_list args) -{ - const char **values; - int i, nargs; - - if (sql->trans && sql->trans->errnum) { - return sql->trans->errnum; - } - - nargs = sqlite3_bind_parameter_count(statement->stmt); - values = apr_palloc(pool, sizeof(*values) * nargs); - - for (i = 0; i < nargs; i++) { - values[i] = apr_pstrdup(pool, va_arg(args, const char*)); - } - - return dbd_sqlite3_pquery(pool, sql, nrows, statement, nargs, values); -} - -static int dbd_sqlite3_pselect(apr_pool_t *pool, apr_dbd_t *sql, - apr_dbd_results_t **results, - apr_dbd_prepared_t *statement, int seek, - int nargs, const char **values) -{ - sqlite3_stmt *stmt = statement->stmt; - int i, ret, retry_count = 0; - size_t num_tuples = 0; - int increment = 0; - apr_dbd_row_t *row = NULL; - apr_dbd_row_t *lastrow = NULL; - apr_dbd_column_t *column; - char *hold = NULL; - - if (sql->trans && sql->trans->errnum) { - return sql->trans->errnum; - } - -#if APR_HAS_THREADS - apr_thread_mutex_lock(sql->mutex); -#endif - - ret = sqlite3_reset(stmt); - if (ret == SQLITE_OK) { - int column_count; - - for (i=0; i < nargs; i++) { - sqlite3_bind_text(stmt, i + 1, values[i], strlen(values[i]), - SQLITE_STATIC); - } - - column_count = sqlite3_column_count(stmt); - if (!*results) { - *results = apr_pcalloc(pool, sizeof(apr_dbd_results_t)); - } - (*results)->stmt = stmt; - (*results)->sz = column_count; - (*results)->random = seek; - (*results)->next_row = 0; - (*results)->tuples = 0; - (*results)->col_names = apr_pcalloc(pool, - column_count * sizeof(char *)); - do { - ret = sqlite3_step(stmt); - if (ret == SQLITE_BUSY) { - if (retry_count++ > MAX_RETRY_COUNT) { - ret = SQLITE_ERROR; - } else { -#if APR_HAS_THREADS - apr_thread_mutex_unlock(sql->mutex); -#endif - apr_sleep(MAX_RETRY_SLEEP); -#if APR_HAS_THREADS - apr_thread_mutex_lock(sql->mutex); -#endif - } - } else if (ret == SQLITE_ROW) { - int length; - apr_dbd_column_t *col; - row = apr_palloc(pool, sizeof(apr_dbd_row_t)); - row->res = *results; - increment = sizeof(apr_dbd_column_t *); - length = increment * (*results)->sz; - row->columns = apr_palloc(pool, length); - row->columnCount = column_count; - for (i = 0; i < (*results)->sz; i++) { - column = apr_palloc(pool, sizeof(apr_dbd_column_t)); - row->columns[i] = column; - /* copy column name once only */ - if ((*results)->col_names[i] == NULL) { - (*results)->col_names[i] = - apr_pstrdup(pool, sqlite3_column_name(stmt, i)); - } - column->name = (*results)->col_names[i]; - column->size = sqlite3_column_bytes(stmt, i); - column->type = sqlite3_column_type(stmt, i); - column->value = NULL; - switch (column->type) { - case SQLITE_FLOAT: - case SQLITE_INTEGER: - case SQLITE_TEXT: - hold = NULL; - hold = (char *) sqlite3_column_text(stmt, i); - if (hold) { - column->value = apr_palloc(pool, column->size + 1); - strncpy(column->value, hold, column->size + 1); - } - break; - case SQLITE_BLOB: - break; - case SQLITE_NULL: - break; - } - col = row->columns[i]; - } - row->rownum = num_tuples++; - row->next_row = 0; - (*results)->tuples = num_tuples; - if ((*results)->next_row == 0) { - (*results)->next_row = row; - } - if (lastrow != 0) { - lastrow->next_row = row; - } - lastrow = row; - } else if (ret == SQLITE_DONE) { - ret = SQLITE_OK; - } - } while (ret == SQLITE_ROW || ret == SQLITE_BUSY); - - sqlite3_reset(stmt); - } -#if APR_HAS_THREADS - apr_thread_mutex_unlock(sql->mutex); -#endif - - if (sql->trans) { - sql->trans->errnum = ret; - } - return ret; -} - -static int dbd_sqlite3_pvselect(apr_pool_t *pool, apr_dbd_t *sql, - apr_dbd_results_t **results, - apr_dbd_prepared_t *statement, int seek, - va_list args) -{ - const char **values; - int i, nargs; - - if (sql->trans && sql->trans->errnum) { - return sql->trans->errnum; - } - - nargs = sqlite3_bind_parameter_count(statement->stmt); - values = apr_palloc(pool, sizeof(*values) * nargs); - - for (i = 0; i < nargs; i++) { - values[i] = apr_pstrdup(pool, va_arg(args, const char*)); - } - - return dbd_sqlite3_pselect(pool, sql, results, statement, - seek, nargs, values); -} - -static int dbd_sqlite3_start_transaction(apr_pool_t *pool, - apr_dbd_t *handle, - apr_dbd_transaction_t **trans) -{ - int ret = 0; - int nrows = 0; - - ret = dbd_sqlite3_query(handle, &nrows, "BEGIN"); - if (!*trans) { - *trans = apr_pcalloc(pool, sizeof(apr_dbd_transaction_t)); - (*trans)->handle = handle; - handle->trans = *trans; - } - - return ret; -} - -static int dbd_sqlite3_end_transaction(apr_dbd_transaction_t *trans) -{ - int ret = -1; /* ending transaction that was never started is an error */ - int nrows = 0; - - if (trans) { - if (trans->errnum) { - trans->errnum = 0; - ret = dbd_sqlite3_query(trans->handle, &nrows, "ROLLBACK"); - } else { - ret = dbd_sqlite3_query(trans->handle, &nrows, "COMMIT"); - } - trans->handle->trans = NULL; - } - - return ret; -} - -static apr_dbd_t *dbd_sqlite3_open(apr_pool_t *pool, const char *params) -{ - apr_dbd_t *sql = NULL; - sqlite3 *conn = NULL; - apr_status_t res; - int sqlres; - if (!params) - return NULL; - sqlres = sqlite3_open(params, &conn); - if (sqlres != SQLITE_OK) { - sqlite3_close(conn); - return NULL; - } - /* should we register rand or power functions to the sqlite VM? */ - sql = apr_pcalloc(pool, sizeof(*sql)); - sql->conn = conn; - sql->pool = pool; - sql->trans = NULL; -#if APR_HAS_THREADS - /* Create a mutex */ - res = apr_thread_mutex_create(&sql->mutex, APR_THREAD_MUTEX_DEFAULT, - pool); - if (res != APR_SUCCESS) { - return NULL; - } -#endif - - return sql; -} - -static apr_status_t dbd_sqlite3_close(apr_dbd_t *handle) -{ - apr_dbd_prepared_t *prep = handle->prep; - - /* finalize all prepared statements, or we'll get SQLITE_BUSY on close */ - while (prep) { - sqlite3_finalize(prep->stmt); - prep = prep->next; - } - - sqlite3_close(handle->conn); -#if APR_HAS_THREADS - apr_thread_mutex_destroy(handle->mutex); -#endif - return APR_SUCCESS; -} - -static apr_status_t dbd_sqlite3_check_conn(apr_pool_t *pool, - apr_dbd_t *handle) -{ - return (handle->conn != NULL) ? APR_SUCCESS : APR_EGENERAL; -} - -static int dbd_sqlite3_select_db(apr_pool_t *pool, apr_dbd_t *handle, - const char *name) -{ - return APR_ENOTIMPL; -} - -static void *dbd_sqlite3_native(apr_dbd_t *handle) -{ - return handle->conn; -} - -static int dbd_sqlite3_num_cols(apr_dbd_results_t *res) -{ - return res->sz; -} - -static int dbd_sqlite3_num_tuples(apr_dbd_results_t *res) -{ - return res->tuples; -} - -APU_DECLARE_DATA const apr_dbd_driver_t apr_dbd_sqlite3_driver = { - "sqlite3", - NULL, - dbd_sqlite3_native, - dbd_sqlite3_open, - dbd_sqlite3_check_conn, - dbd_sqlite3_close, - dbd_sqlite3_select_db, - dbd_sqlite3_start_transaction, - dbd_sqlite3_end_transaction, - dbd_sqlite3_query, - dbd_sqlite3_select, - dbd_sqlite3_num_cols, - dbd_sqlite3_num_tuples, - dbd_sqlite3_get_row, - dbd_sqlite3_get_entry, - dbd_sqlite3_error, - dbd_sqlite3_escape, - dbd_sqlite3_prepare, - dbd_sqlite3_pvquery, - dbd_sqlite3_pvselect, - dbd_sqlite3_pquery, - dbd_sqlite3_pselect, -}; -#endif diff --git a/libs/apr-util/dbm/apr_dbm.c b/libs/apr-util/dbm/apr_dbm.c deleted file mode 100644 index 88cf08e6758..00000000000 --- a/libs/apr-util/dbm/apr_dbm.c +++ /dev/null @@ -1,207 +0,0 @@ -/* Copyright 2000-2005 The Apache Software Foundation or its licensors, as - * applicable. - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -#include "apr.h" -#include "apr_errno.h" -#include "apr_pools.h" -#include "apr_strings.h" -#define APR_WANT_MEMFUNC -#define APR_WANT_STRFUNC -#include "apr_want.h" -#include "apr_general.h" - -#include "apu.h" -#include "apu_select_dbm.h" -#include "apr_dbm.h" -#include "apr_dbm_private.h" - -/* ### note: the setting of DBM_VTABLE will go away once we have multiple - ### DBMs in here. - ### Well, that day is here. So, do we remove DBM_VTABLE and the old - ### API entirely? Oh, what to do. We need an APU_DEFAULT_DBM #define. - ### Sounds like a job for autoconf. */ - -#if APU_USE_SDBM -#define DBM_VTABLE apr_dbm_type_sdbm -#elif APU_USE_GDBM -#define DBM_VTABLE apr_dbm_type_gdbm -#elif APU_USE_DB -#define DBM_VTABLE apr_dbm_type_db -#elif APU_USE_NDBM -#define DBM_VTABLE apr_dbm_type_ndbm -#else /* Not in the USE_xDBM list above */ -#error a DBM implementation was not specified -#endif - -APU_DECLARE(apr_status_t) apr_dbm_open_ex(apr_dbm_t **pdb, const char*type, - const char *pathname, - apr_int32_t mode, apr_fileperms_t perm, - apr_pool_t *pool) -{ -#if APU_HAVE_GDBM - if (!strcasecmp(type, "GDBM")) { - return (*apr_dbm_type_gdbm.open)(pdb, pathname, mode, perm, pool); - } -#endif -#if APU_HAVE_SDBM - if (!strcasecmp(type, "SDBM")) { - return (*apr_dbm_type_sdbm.open)(pdb, pathname, mode, perm, pool); - } -#endif -#if APU_HAVE_DB - if (!strcasecmp(type, "DB")) { - return (*apr_dbm_type_db.open)(pdb, pathname, mode, perm, pool); - } -#endif -#if APU_HAVE_NDBM - if (!strcasecmp(type, "NDBM")) { - return (*apr_dbm_type_ndbm.open)(pdb, pathname, mode, perm, pool); - } -#endif - - if (!strcasecmp(type, "default")) { - return (*DBM_VTABLE.open)(pdb, pathname, mode, perm, pool); - } - - return APR_ENOTIMPL; -} - -APU_DECLARE(apr_status_t) apr_dbm_open(apr_dbm_t **pdb, const char *pathname, - apr_int32_t mode, apr_fileperms_t perm, - apr_pool_t *pool) -{ - return (*DBM_VTABLE.open)(pdb, pathname, mode, perm, pool); -} - -APU_DECLARE(void) apr_dbm_close(apr_dbm_t *dbm) -{ - (*dbm->type->close)(dbm); -} - -APU_DECLARE(apr_status_t) apr_dbm_fetch(apr_dbm_t *dbm, apr_datum_t key, - apr_datum_t *pvalue) -{ - return (*dbm->type->fetch)(dbm, key, pvalue); -} - -APU_DECLARE(apr_status_t) apr_dbm_store(apr_dbm_t *dbm, apr_datum_t key, - apr_datum_t value) -{ - return (*dbm->type->store)(dbm, key, value); -} - -APU_DECLARE(apr_status_t) apr_dbm_delete(apr_dbm_t *dbm, apr_datum_t key) -{ - return (*dbm->type->del)(dbm, key); -} - -APU_DECLARE(int) apr_dbm_exists(apr_dbm_t *dbm, apr_datum_t key) -{ - return (*dbm->type->exists)(dbm, key); -} - -APU_DECLARE(apr_status_t) apr_dbm_firstkey(apr_dbm_t *dbm, apr_datum_t *pkey) -{ - return (*dbm->type->firstkey)(dbm, pkey); -} - -APU_DECLARE(apr_status_t) apr_dbm_nextkey(apr_dbm_t *dbm, apr_datum_t *pkey) -{ - return (*dbm->type->nextkey)(dbm, pkey); -} - -APU_DECLARE(void) apr_dbm_freedatum(apr_dbm_t *dbm, apr_datum_t data) -{ - (*dbm->type->freedatum)(dbm, data); -} - -APU_DECLARE(char *) apr_dbm_geterror(apr_dbm_t *dbm, int *errcode, - char *errbuf, apr_size_t errbufsize) -{ - if (errcode != NULL) - *errcode = dbm->errcode; - - /* assert: errbufsize > 0 */ - - if (dbm->errmsg == NULL) - *errbuf = '\0'; - else - (void) apr_cpystrn(errbuf, dbm->errmsg, errbufsize); - return errbuf; -} - -APU_DECLARE(apr_status_t) apr_dbm_get_usednames_ex(apr_pool_t *p, - const char *type, - const char *pathname, - const char **used1, - const char **used2) -{ -#if APU_HAVE_GDBM - if (!strcasecmp(type, "GDBM")) { - (*apr_dbm_type_gdbm.getusednames)(p,pathname,used1,used2); - return APR_SUCCESS; - } -#endif -#if APU_HAVE_SDBM - if (!strcasecmp(type, "SDBM")) { - (*apr_dbm_type_sdbm.getusednames)(p,pathname,used1,used2); - return APR_SUCCESS; - } -#endif -#if APU_HAVE_DB - if (!strcasecmp(type, "DB")) { - (*apr_dbm_type_db.getusednames)(p,pathname,used1,used2); - return APR_SUCCESS; - } -#endif -#if APU_HAVE_NDBM - if (!strcasecmp(type, "NDBM")) { - (*apr_dbm_type_ndbm.getusednames)(p,pathname,used1,used2); - return APR_SUCCESS; - } -#endif - - if (!strcasecmp(type, "default")) { - (*DBM_VTABLE.getusednames)(p, pathname, used1, used2); - return APR_SUCCESS; - } - - return APR_ENOTIMPL; -} - -APU_DECLARE(void) apr_dbm_get_usednames(apr_pool_t *p, - const char *pathname, - const char **used1, - const char **used2) -{ - /* ### one day, a DBM type name will be passed and we'll need to look it - ### up. for now, it is constant. */ - - (*DBM_VTABLE.getusednames)(p, pathname, used1, used2); -} - -/* Most DBM libraries take a POSIX mode for creating files. Don't trust - * the mode_t type, some platforms may not support it, int is safe. - */ -APU_DECLARE(int) apr_posix_perms2mode(apr_fileperms_t perm) -{ - int mode = 0; - - mode |= 0700 & (perm >> 2); /* User is off-by-2 bits */ - mode |= 0070 & (perm >> 1); /* Group is off-by-1 bit */ - mode |= 0007 & (perm); /* World maps 1 for 1 */ - return mode; -} diff --git a/libs/apr-util/dbm/apr_dbm_berkeleydb.c b/libs/apr-util/dbm/apr_dbm_berkeleydb.c deleted file mode 100644 index 46ededcc0c6..00000000000 --- a/libs/apr-util/dbm/apr_dbm_berkeleydb.c +++ /dev/null @@ -1,403 +0,0 @@ -/* Copyright 2000-2005 The Apache Software Foundation or its licensors, as - * applicable. - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -#include "apr_strings.h" -#define APR_WANT_MEMFUNC -#include "apr_want.h" - -#define APU_WANT_DB -#include "apu_want.h" - -#if APR_HAVE_STDLIB_H -#include /* for abort() */ -#endif - -#include "apu.h" - -#if APU_HAVE_DB -#include "apr_dbm_private.h" - -/* - * We pick up all varieties of Berkeley DB through db.h (included through - * apu_select_dbm.h). This code has been compiled/tested against DB1, - * DB_185, DB2, DB3, and DB4. - */ - -#if defined(DB_VERSION_MAJOR) && (DB_VERSION_MAJOR == 4) -/* We will treat anything greater than 4.1 as DB4. - * We can treat 4.0 as DB3. - */ -#if defined(DB_VERSION_MINOR) && (DB_VERSION_MINOR >= 1) -#define DB_VER 4 -#else -#define DB_VER 3 -#endif -#elif defined(DB_VERSION_MAJOR) && (DB_VERSION_MAJOR == 3) -#define DB_VER 3 -#elif defined(DB_VERSION_MAJOR) && (DB_VERSION_MAJOR == 2) -#define DB_VER 2 -#else -#define DB_VER 1 -#endif - -typedef struct { - DB *bdb; -#if DB_VER != 1 - DBC *curs; -#endif -} real_file_t; - - -#if DB_VER == 1 -#define TXN_ARG -#else -#define TXN_ARG NULL, -#endif - -#define GET_BDB(f) (((real_file_t *)(f))->bdb) - -#define do_fetch(bdb, k, v) ((*(bdb)->get)(bdb, TXN_ARG &(k), &(v), 0)) - -#if DB_VER == 1 -#include -#define APR_DBM_DBMODE_RO O_RDONLY -#define APR_DBM_DBMODE_RW O_RDWR -#define APR_DBM_DBMODE_RWCREATE (O_CREAT | O_RDWR) -#define APR_DBM_DBMODE_RWTRUNC (O_CREAT | O_RDWR | O_TRUNC) -#else -#define APR_DBM_DBMODE_RO DB_RDONLY -#define APR_DBM_DBMODE_RW 0 -#define APR_DBM_DBMODE_RWCREATE DB_CREATE -#define APR_DBM_DBMODE_RWTRUNC DB_TRUNCATE -#endif /* DBVER == 1 */ - -/* -------------------------------------------------------------------------- -** -** UTILITY FUNCTIONS -*/ - -/* map a DB error to an apr_status_t */ -static apr_status_t db2s(int dberr) -{ - if (dberr != 0) { - /* ### need to fix this */ - return APR_OS_START_USEERR + dberr; - } - - return APR_SUCCESS; -} - - -static apr_status_t set_error(apr_dbm_t *dbm, apr_status_t dbm_said) -{ - apr_status_t rv = APR_SUCCESS; - - /* ### ignore whatever the DBM said (dbm_said); ask it explicitly */ - - if (dbm_said == APR_SUCCESS) { - dbm->errcode = 0; - dbm->errmsg = NULL; - } - else { - /* ### need to fix. dberr was tossed in db2s(). */ - /* ### use db_strerror() */ - dbm->errcode = dbm_said; -#if DB_VER == 1 || DB_VER == 2 - dbm->errmsg = NULL; -#else - dbm->errmsg = db_strerror(dbm_said - APR_OS_START_USEERR); -#endif - rv = dbm_said; - } - - return rv; -} - -/* -------------------------------------------------------------------------- -** -** DEFINE THE VTABLE FUNCTIONS FOR BERKELEY DB -** -** ### we may need three sets of these: db1, db2, db3 -*/ - -static apr_status_t vt_db_open(apr_dbm_t **pdb, const char *pathname, - apr_int32_t mode, apr_fileperms_t perm, - apr_pool_t *pool) -{ - real_file_t file; - int dbmode; - - *pdb = NULL; - - switch (mode) { - case APR_DBM_READONLY: - dbmode = APR_DBM_DBMODE_RO; - break; - case APR_DBM_READWRITE: - dbmode = APR_DBM_DBMODE_RW; - break; - case APR_DBM_RWCREATE: - dbmode = APR_DBM_DBMODE_RWCREATE; - break; - case APR_DBM_RWTRUNC: - dbmode = APR_DBM_DBMODE_RWTRUNC; - break; - default: - return APR_EINVAL; - } - - { - int dberr; - -#if DB_VER >= 3 - if ((dberr = db_create(&file.bdb, NULL, 0)) == 0) { - if ((dberr = (*file.bdb->open)(file.bdb, -#if DB_VER == 4 - NULL, -#endif - pathname, NULL, - DB_HASH, dbmode, - apr_posix_perms2mode(perm))) != 0) { - /* close the DB handler */ - (void) (*file.bdb->close)(file.bdb, 0); - } - } - file.curs = NULL; -#elif DB_VER == 2 - dberr = db_open(pathname, DB_HASH, dbmode, apr_posix_perms2mode(perm), - NULL, NULL, &file.bdb); - file.curs = NULL; -#else - file.bdb = dbopen(pathname, dbmode, apr_posix_perms2mode(perm), - DB_HASH, NULL); - if (file.bdb == NULL) - return APR_EGENERAL; /* ### need a better error */ - dberr = 0; -#endif - if (dberr != 0) - return db2s(dberr); - } - - /* we have an open database... return it */ - *pdb = apr_pcalloc(pool, sizeof(**pdb)); - (*pdb)->pool = pool; - (*pdb)->type = &apr_dbm_type_db; - (*pdb)->file = apr_pmemdup(pool, &file, sizeof(file)); - - /* ### register a cleanup to close the DBM? */ - - return APR_SUCCESS; -} - -static void vt_db_close(apr_dbm_t *dbm) -{ - (*GET_BDB(dbm->file)->close)(GET_BDB(dbm->file) -#if DB_VER != 1 - , 0 -#endif - ); -} - -static apr_status_t vt_db_fetch(apr_dbm_t *dbm, apr_datum_t key, - apr_datum_t * pvalue) -{ - DBT ckey = { 0 }; - DBT rd = { 0 }; - int dberr; - - ckey.data = key.dptr; - ckey.size = key.dsize; - - dberr = do_fetch(GET_BDB(dbm->file), ckey, rd); - - /* "not found" is not an error. return zero'd value. */ - if (dberr == -#if DB_VER == 1 - RET_SPECIAL -#else - DB_NOTFOUND -#endif - ) { - memset(&rd, 0, sizeof(rd)); - dberr = 0; - } - - pvalue->dptr = rd.data; - pvalue->dsize = rd.size; - - /* store the error info into DBM, and return a status code. Also, note - that *pvalue should have been cleared on error. */ - return set_error(dbm, db2s(dberr)); -} - -static apr_status_t vt_db_store(apr_dbm_t *dbm, apr_datum_t key, - apr_datum_t value) -{ - apr_status_t rv; - DBT ckey = { 0 }; - DBT cvalue = { 0 }; - - ckey.data = key.dptr; - ckey.size = key.dsize; - - cvalue.data = value.dptr; - cvalue.size = value.dsize; - - rv = db2s((*GET_BDB(dbm->file)->put)(GET_BDB(dbm->file), - TXN_ARG - &ckey, - &cvalue, - 0)); - - /* store any error info into DBM, and return a status code. */ - return set_error(dbm, rv); -} - -static apr_status_t vt_db_del(apr_dbm_t *dbm, apr_datum_t key) -{ - apr_status_t rv; - DBT ckey = { 0 }; - - ckey.data = key.dptr; - ckey.size = key.dsize; - - rv = db2s((*GET_BDB(dbm->file)->del)(GET_BDB(dbm->file), - TXN_ARG - &ckey, - 0)); - - /* store any error info into DBM, and return a status code. */ - return set_error(dbm, rv); -} - -static int vt_db_exists(apr_dbm_t *dbm, apr_datum_t key) -{ - DBT ckey = { 0 }; /* converted key */ - DBT data = { 0 }; - int dberr; - - ckey.data = key.dptr; - ckey.size = key.dsize; - - dberr = do_fetch(GET_BDB(dbm->file), ckey, data); - - /* note: the result data is "loaned" to us; we don't need to free it */ - - /* DB returns DB_NOTFOUND if it doesn't exist. but we want to say - that *any* error means it doesn't exist. */ - return dberr == 0; -} - -static apr_status_t vt_db_firstkey(apr_dbm_t *dbm, apr_datum_t * pkey) -{ - real_file_t *f = dbm->file; - DBT first = { 0 }; - DBT data = { 0 }; - int dberr; - -#if DB_VER == 1 - dberr = (*f->bdb->seq)(f->bdb, &first, &data, R_FIRST); -#else - if ((dberr = (*f->bdb->cursor)(f->bdb, NULL, &f->curs -#if DB_VER >= 3 || ((DB_VERSION_MAJOR == 2) && (DB_VERSION_MINOR > 5)) - , 0 -#endif - )) == 0) { - dberr = (*f->curs->c_get)(f->curs, &first, &data, DB_FIRST); - if (dberr == DB_NOTFOUND) { - memset(&first, 0, sizeof(first)); - (*f->curs->c_close)(f->curs); - f->curs = NULL; - dberr = 0; - } - } -#endif - - pkey->dptr = first.data; - pkey->dsize = first.size; - - /* store any error info into DBM, and return a status code. */ - return set_error(dbm, db2s(dberr)); -} - -static apr_status_t vt_db_nextkey(apr_dbm_t *dbm, apr_datum_t * pkey) -{ - real_file_t *f = dbm->file; - DBT ckey = { 0 }; - DBT data = { 0 }; - int dberr; - - ckey.data = pkey->dptr; - ckey.size = pkey->dsize; - -#if DB_VER == 1 - dberr = (*f->bdb->seq)(f->bdb, &ckey, &data, R_NEXT); - if (dberr == RET_SPECIAL) { - dberr = 0; - ckey.data = NULL; - ckey.size = 0; - } -#else - if (f->curs == NULL) - return APR_EINVAL; - - dberr = (*f->curs->c_get)(f->curs, &ckey, &data, DB_NEXT); - if (dberr == DB_NOTFOUND) { - (*f->curs->c_close)(f->curs); - f->curs = NULL; - dberr = 0; - ckey.data = NULL; - ckey.size = 0; - } -#endif - - pkey->dptr = ckey.data; - pkey->dsize = ckey.size; - - /* store any error info into DBM, and return a status code. */ - /* ### or use db2s(dberr) instead of APR_SUCCESS? */ - return set_error(dbm, APR_SUCCESS); -} - -static void vt_db_freedatum(apr_dbm_t *dbm, apr_datum_t data) -{ - /* nothing to do */ -} - -static void vt_db_usednames(apr_pool_t *pool, const char *pathname, - const char **used1, const char **used2) -{ - *used1 = apr_pstrdup(pool, pathname); - *used2 = NULL; -} - - -APU_DECLARE_DATA const apr_dbm_type_t apr_dbm_type_db = { - "db", - - vt_db_open, - vt_db_close, - vt_db_fetch, - vt_db_store, - vt_db_del, - vt_db_exists, - vt_db_firstkey, - vt_db_nextkey, - vt_db_freedatum, - vt_db_usednames -}; - -#endif /* APU_HAVE_DB */ diff --git a/libs/apr-util/dbm/apr_dbm_gdbm.c b/libs/apr-util/dbm/apr_dbm_gdbm.c deleted file mode 100644 index 93fb942a6ce..00000000000 --- a/libs/apr-util/dbm/apr_dbm_gdbm.c +++ /dev/null @@ -1,270 +0,0 @@ -/* Copyright 2000-2005 The Apache Software Foundation or its licensors, as - * applicable. - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -#include "apr_strings.h" - -#if APR_HAVE_STDLIB_H -#include /* for free() */ -#endif - -#include "apu.h" - -#if APU_HAVE_GDBM -#include "apr_dbm_private.h" - -#include - -/* this is used in a few places to define a noop "function". it is needed - to stop "no effect" warnings from GCC. */ -#define NOOP_FUNCTION if (0) ; else - -/* ### define defaults for now; these will go away in a while */ -#define REGISTER_CLEANUP(dbm, pdatum) NOOP_FUNCTION -#define SET_FILE(pdb, f) ((pdb)->file = (f)) - -typedef GDBM_FILE real_file_t; - -typedef datum *cvt_datum_t; -#define CONVERT_DATUM(cvt, pinput) ((cvt) = (datum *)(pinput)) - -typedef datum result_datum_t; -#define RETURN_DATUM(poutput, rd) (*(poutput) = *(apr_datum_t *)&(rd)) - -#define APR_DBM_CLOSE(f) gdbm_close(f) -#define APR_DBM_FETCH(f, k, v) ((v) = gdbm_fetch(f, *(k)), APR_SUCCESS) -#define APR_DBM_STORE(f, k, v) g2s(gdbm_store(f, *(k), *(v), GDBM_REPLACE)) -#define APR_DBM_DELETE(f, k) g2s(gdbm_delete(f, *(k))) -#define APR_DBM_FIRSTKEY(f, k) ((k) = gdbm_firstkey(f), APR_SUCCESS) -#define APR_DBM_NEXTKEY(f, k, nk) ((nk) = gdbm_nextkey(f, *(k)), APR_SUCCESS) -#define APR_DBM_FREEDPTR(dptr) ((dptr) ? free(dptr) : 0) - -#undef REGISTER_CLEANUP -#define REGISTER_CLEANUP(dbm, pdatum) \ - if ((pdatum)->dptr) \ - apr_pool_cleanup_register((dbm)->pool, (pdatum)->dptr, \ - datum_cleanup, apr_pool_cleanup_null); \ - else - -#define APR_DBM_DBMODE_RO GDBM_READER -#define APR_DBM_DBMODE_RW GDBM_WRITER -#define APR_DBM_DBMODE_RWCREATE GDBM_WRCREAT -#define APR_DBM_DBMODE_RWTRUNC GDBM_NEWDB - -/* map a GDBM error to an apr_status_t */ -static apr_status_t g2s(int gerr) -{ - if (gerr == -1) { - /* ### need to fix this */ - return APR_EGENERAL; - } - - return APR_SUCCESS; -} - -static apr_status_t datum_cleanup(void *dptr) -{ - if (dptr) - free(dptr); - - return APR_SUCCESS; -} - -static apr_status_t set_error(apr_dbm_t *dbm, apr_status_t dbm_said) -{ - apr_status_t rv = APR_SUCCESS; - - /* ### ignore whatever the DBM said (dbm_said); ask it explicitly */ - - if ((dbm->errcode = gdbm_errno) == GDBM_NO_ERROR) { - dbm->errmsg = NULL; - } - else { - dbm->errmsg = gdbm_strerror(gdbm_errno); - rv = APR_EGENERAL; /* ### need something better */ - } - - /* captured it. clear it now. */ - gdbm_errno = GDBM_NO_ERROR; - - return rv; -} - -/* -------------------------------------------------------------------------- -** -** DEFINE THE VTABLE FUNCTIONS FOR GDBM -*/ - -static apr_status_t vt_gdbm_open(apr_dbm_t **pdb, const char *pathname, - apr_int32_t mode, apr_fileperms_t perm, - apr_pool_t *pool) -{ - real_file_t file; - int dbmode; - - *pdb = NULL; - - switch (mode) { - case APR_DBM_READONLY: - dbmode = APR_DBM_DBMODE_RO; - break; - case APR_DBM_READWRITE: - dbmode = APR_DBM_DBMODE_RW; - break; - case APR_DBM_RWCREATE: - dbmode = APR_DBM_DBMODE_RWCREATE; - break; - case APR_DBM_RWTRUNC: - dbmode = APR_DBM_DBMODE_RWTRUNC; - break; - default: - return APR_EINVAL; - } - - { - /* Note: stupid cast to get rid of "const" on the pathname */ - file = gdbm_open((char *) pathname, 0, dbmode, - apr_posix_perms2mode(perm), NULL); - if (file == NULL) - return APR_EGENERAL; /* ### need a better error */ - } - - /* we have an open database... return it */ - *pdb = apr_pcalloc(pool, sizeof(**pdb)); - (*pdb)->pool = pool; - (*pdb)->type = &apr_dbm_type_gdbm; - SET_FILE(*pdb, file); - - /* ### register a cleanup to close the DBM? */ - - return APR_SUCCESS; -} - -static void vt_gdbm_close(apr_dbm_t *dbm) -{ - APR_DBM_CLOSE(dbm->file); -} - -static apr_status_t vt_gdbm_fetch(apr_dbm_t *dbm, apr_datum_t key, - apr_datum_t * pvalue) -{ - apr_status_t rv; - cvt_datum_t ckey; - result_datum_t rd; - - CONVERT_DATUM(ckey, &key); - rv = APR_DBM_FETCH(dbm->file, ckey, rd); - RETURN_DATUM(pvalue, rd); - - REGISTER_CLEANUP(dbm, pvalue); - - /* store the error info into DBM, and return a status code. Also, note - that *pvalue should have been cleared on error. */ - return set_error(dbm, rv); -} - -static apr_status_t vt_gdbm_store(apr_dbm_t *dbm, apr_datum_t key, - apr_datum_t value) -{ - apr_status_t rv; - cvt_datum_t ckey; - cvt_datum_t cvalue; - - CONVERT_DATUM(ckey, &key); - CONVERT_DATUM(cvalue, &value); - rv = APR_DBM_STORE(dbm->file, ckey, cvalue); - - /* store any error info into DBM, and return a status code. */ - return set_error(dbm, rv); -} - -static apr_status_t vt_gdbm_del(apr_dbm_t *dbm, apr_datum_t key) -{ - apr_status_t rv; - cvt_datum_t ckey; - - CONVERT_DATUM(ckey, &key); - rv = APR_DBM_DELETE(dbm->file, ckey); - - /* store any error info into DBM, and return a status code. */ - return set_error(dbm, rv); -} - -static int vt_gdbm_exists(apr_dbm_t *dbm, apr_datum_t key) -{ - datum *ckey = (datum *)&key; - - return gdbm_exists(dbm->file, *ckey) != 0; -} - -static apr_status_t vt_gdbm_firstkey(apr_dbm_t *dbm, apr_datum_t * pkey) -{ - apr_status_t rv; - result_datum_t rd; - - rv = APR_DBM_FIRSTKEY(dbm->file, rd); - RETURN_DATUM(pkey, rd); - - REGISTER_CLEANUP(dbm, pkey); - - /* store any error info into DBM, and return a status code. */ - return set_error(dbm, rv); -} - -static apr_status_t vt_gdbm_nextkey(apr_dbm_t *dbm, apr_datum_t * pkey) -{ - apr_status_t rv; - cvt_datum_t ckey; - result_datum_t rd; - - CONVERT_DATUM(ckey, pkey); - rv = APR_DBM_NEXTKEY(dbm->file, ckey, rd); - RETURN_DATUM(pkey, rd); - - REGISTER_CLEANUP(dbm, pkey); - - /* store any error info into DBM, and return a status code. */ - return set_error(dbm, APR_SUCCESS); -} - -static void vt_gdbm_freedatum(apr_dbm_t *dbm, apr_datum_t data) -{ - (void) apr_pool_cleanup_run(dbm->pool, data.dptr, datum_cleanup); -} - -static void vt_gdbm_usednames(apr_pool_t *pool, const char *pathname, - const char **used1, const char **used2) -{ - *used1 = apr_pstrdup(pool, pathname); - *used2 = NULL; -} - - -APU_DECLARE_DATA const apr_dbm_type_t apr_dbm_type_gdbm = { - "gdbm", - - vt_gdbm_open, - vt_gdbm_close, - vt_gdbm_fetch, - vt_gdbm_store, - vt_gdbm_del, - vt_gdbm_exists, - vt_gdbm_firstkey, - vt_gdbm_nextkey, - vt_gdbm_freedatum, - vt_gdbm_usednames -}; - -#endif /* APU_HAVE_GDBM */ diff --git a/libs/apr-util/dbm/apr_dbm_ndbm.c b/libs/apr-util/dbm/apr_dbm_ndbm.c deleted file mode 100644 index d770ed44032..00000000000 --- a/libs/apr-util/dbm/apr_dbm_ndbm.c +++ /dev/null @@ -1,227 +0,0 @@ -/* Copyright 2000-2005 The Apache Software Foundation or its licensors, as - * applicable. - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -#include "apr_strings.h" - -#if APR_HAVE_STDLIB_H -#include /* for free() */ -#endif - -#include "apu.h" - -#if APU_HAVE_NDBM -#include "apr_dbm_private.h" - -#include -#include -#include -#include - -/* this is used in a few places to define a noop "function". it is needed - to stop "no effect" warnings from GCC. */ -#define NOOP_FUNCTION if (0) ; else - -#define APR_DBM_DBMODE_RO O_RDONLY -#define APR_DBM_DBMODE_RW O_RDWR -#define APR_DBM_DBMODE_RWCREATE (O_RDWR|O_CREAT) -#define APR_DBM_DBMODE_RWTRUNC (O_RDWR|O_CREAT|O_TRUNC) - -/* map a NDBM error to an apr_status_t */ -static apr_status_t ndbm2s(int ndbmerr) -{ - if (ndbmerr == -1) { - /* ### need to fix this */ - return APR_EGENERAL; - } - - return APR_SUCCESS; -} - -static apr_status_t set_error(apr_dbm_t *dbm, apr_status_t dbm_said) -{ - apr_status_t rv = APR_SUCCESS; - - /* ### ignore whatever the DBM said (dbm_said); ask it explicitly */ - - dbm->errmsg = NULL; - if (dbm_error((DBM*)dbm->file)) { - dbm->errmsg = NULL; - rv = APR_EGENERAL; /* ### need something better */ - } - - /* captured it. clear it now. */ - dbm_clearerr((DBM*)dbm->file); - - return rv; -} - -/* -------------------------------------------------------------------------- -** -** DEFINE THE VTABLE FUNCTIONS FOR NDBM -*/ - -static apr_status_t vt_ndbm_open(apr_dbm_t **pdb, const char *pathname, - apr_int32_t mode, apr_fileperms_t perm, - apr_pool_t *pool) -{ - DBM *file; - int dbmode; - - *pdb = NULL; - - switch (mode) { - case APR_DBM_READONLY: - dbmode = APR_DBM_DBMODE_RO; - break; - case APR_DBM_READWRITE: - dbmode = APR_DBM_DBMODE_RW; - break; - case APR_DBM_RWCREATE: - dbmode = APR_DBM_DBMODE_RWCREATE; - break; - case APR_DBM_RWTRUNC: - dbmode = APR_DBM_DBMODE_RWTRUNC; - break; - default: - return APR_EINVAL; - } - - { - file = dbm_open(pathname, dbmode, apr_posix_perms2mode(perm)); - if (file == NULL) - return APR_EGENERAL; /* ### need a better error */ - } - - /* we have an open database... return it */ - *pdb = apr_pcalloc(pool, sizeof(**pdb)); - (*pdb)->pool = pool; - (*pdb)->type = &apr_dbm_type_ndbm; - (*pdb)->file = file; - - /* ### register a cleanup to close the DBM? */ - - return APR_SUCCESS; -} - -static void vt_ndbm_close(apr_dbm_t *dbm) -{ - dbm_close(dbm->file); -} - -static apr_status_t vt_ndbm_fetch(apr_dbm_t *dbm, apr_datum_t key, - apr_datum_t * pvalue) -{ - datum *ckey; - datum rd; - - ckey = (datum*)&key; - rd = dbm_fetch(dbm->file, *ckey); - *pvalue = *(apr_datum_t*)&rd; - - /* store the error info into DBM, and return a status code. Also, note - that *pvalue should have been cleared on error. */ - return set_error(dbm, APR_SUCCESS); -} - -static apr_status_t vt_ndbm_store(apr_dbm_t *dbm, apr_datum_t key, - apr_datum_t value) -{ - apr_status_t rv; - datum *ckey; - datum *cvalue; - - ckey = (datum*)&key; - cvalue = (datum*)&value; - rv = ndbm2s( dbm_store( dbm->file, *ckey, *cvalue, DBM_REPLACE)); - - /* store any error info into DBM, and return a status code. */ - return set_error(dbm, rv); -} - -static apr_status_t vt_ndbm_del(apr_dbm_t *dbm, apr_datum_t key) -{ - apr_status_t rv; - datum *ckey; - - ckey = (datum*)&key; - rv = ndbm2s( dbm_delete(dbm->file, *ckey)); - - /* store any error info into DBM, and return a status code. */ - return set_error(dbm, rv); -} - -static int vt_ndbm_exists(apr_dbm_t *dbm, apr_datum_t key) -{ - datum *ckey = (datum *)&key; - datum value; - - value = dbm_fetch( dbm->file, *ckey); - - return value.dptr != NULL; -} - -static apr_status_t vt_ndbm_firstkey(apr_dbm_t *dbm, apr_datum_t * pkey) -{ - datum rd; - - rd = dbm_firstkey(dbm->file); - *pkey = *(apr_datum_t*)&rd; - - /* store any error info into DBM, and return a status code. */ - return set_error(dbm, APR_SUCCESS); -} - -static apr_status_t vt_ndbm_nextkey(apr_dbm_t *dbm, apr_datum_t * pkey) -{ - datum *ckey; - datum rd; - - ckey = (datum*)pkey; - rd = dbm_nextkey(dbm->file); - *pkey = *(apr_datum_t*)&rd; - - /* store any error info into DBM, and return a status code. */ - return set_error(dbm, APR_SUCCESS); -} - -static void vt_ndbm_freedatum(apr_dbm_t *dbm, apr_datum_t data) -{ - /* nothing to do */ -} - -static void vt_ndbm_usednames(apr_pool_t *pool, const char *pathname, - const char **used1, const char **used2) -{ - *used1 = apr_pstrdup(pool, pathname); - *used2 = NULL; -} - - -APU_DECLARE_DATA const apr_dbm_type_t apr_dbm_type_ndbm = { - "ndbm", - - vt_ndbm_open, - vt_ndbm_close, - vt_ndbm_fetch, - vt_ndbm_store, - vt_ndbm_del, - vt_ndbm_exists, - vt_ndbm_firstkey, - vt_ndbm_nextkey, - vt_ndbm_freedatum, - vt_ndbm_usednames -}; -#endif /* APU_HAVE_NDBM */ diff --git a/libs/apr-util/dbm/apr_dbm_sdbm.c b/libs/apr-util/dbm/apr_dbm_sdbm.c deleted file mode 100644 index dadb1e2670d..00000000000 --- a/libs/apr-util/dbm/apr_dbm_sdbm.c +++ /dev/null @@ -1,265 +0,0 @@ -/* Copyright 2000-2005 The Apache Software Foundation or its licensors, as - * applicable. - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -#include "apr_strings.h" -#define APR_WANT_MEMFUNC -#define APR_WANT_STRFUNC -#include "apr_want.h" - -#include "apu.h" - -#if APU_HAVE_SDBM - -#include "apr_dbm_private.h" - -#include "apr_sdbm.h" -#if APR_HAVE_STDLIB_H -#include /* For abort() */ -#endif - -/* this is used in a few places to define a noop "function". it is needed - to stop "no effect" warnings from GCC. */ -#define NOOP_FUNCTION if (0) ; else - -/* ### define defaults for now; these will go away in a while */ -#define REGISTER_CLEANUP(dbm, pdatum) NOOP_FUNCTION -#define SET_FILE(pdb, f) ((pdb)->file = (f)) - -typedef apr_sdbm_t *real_file_t; - -typedef apr_sdbm_datum_t cvt_datum_t; -#define CONVERT_DATUM(cvt, pinput) ((cvt).dptr = (pinput)->dptr, (cvt).dsize = (pinput)->dsize) - -typedef apr_sdbm_datum_t result_datum_t; -#define RETURN_DATUM(poutput, rd) ((poutput)->dptr = (rd).dptr, (poutput)->dsize = (rd).dsize) - -#define APR_DBM_CLOSE(f) apr_sdbm_close(f) -#define APR_DBM_FETCH(f, k, v) apr_sdbm_fetch(f, &(v), (k)) -#define APR_DBM_STORE(f, k, v) apr_sdbm_store(f, (k), (v), APR_SDBM_REPLACE) -#define APR_DBM_DELETE(f, k) apr_sdbm_delete(f, (k)) -#define APR_DBM_FIRSTKEY(f, k) apr_sdbm_firstkey(f, &(k)) -#define APR_DBM_NEXTKEY(f, k, nk) apr_sdbm_nextkey(f, &(nk)) -#define APR_DBM_FREEDPTR(dptr) NOOP_FUNCTION - -#define APR_DBM_DBMODE_RO APR_READ -#define APR_DBM_DBMODE_RW (APR_READ | APR_WRITE) -#define APR_DBM_DBMODE_RWCREATE (APR_READ | APR_WRITE | APR_CREATE) -#define APR_DBM_DBMODE_RWTRUNC (APR_READ | APR_WRITE | APR_CREATE | \ - APR_TRUNCATE) - -static apr_status_t set_error(apr_dbm_t *dbm, apr_status_t dbm_said) -{ - apr_status_t rv = APR_SUCCESS; - - /* ### ignore whatever the DBM said (dbm_said); ask it explicitly */ - - if ((dbm->errcode = dbm_said) == APR_SUCCESS) { - dbm->errmsg = NULL; - } - else { - dbm->errmsg = "I/O error occurred."; - rv = APR_EGENERAL; /* ### need something better */ - } - - return rv; -} - -/* -------------------------------------------------------------------------- -** -** DEFINE THE VTABLE FUNCTIONS FOR SDBM -*/ - -static apr_status_t vt_sdbm_open(apr_dbm_t **pdb, const char *pathname, - apr_int32_t mode, apr_fileperms_t perm, - apr_pool_t *pool) -{ - real_file_t file; - int dbmode; - - *pdb = NULL; - - switch (mode) { - case APR_DBM_READONLY: - dbmode = APR_DBM_DBMODE_RO; - break; - case APR_DBM_READWRITE: - dbmode = APR_DBM_DBMODE_RW; - break; - case APR_DBM_RWCREATE: - dbmode = APR_DBM_DBMODE_RWCREATE; - break; - case APR_DBM_RWTRUNC: - dbmode = APR_DBM_DBMODE_RWTRUNC; - break; - default: - return APR_EINVAL; - } - - { - apr_status_t rv; - - rv = apr_sdbm_open(&file, pathname, dbmode, perm, pool); - if (rv != APR_SUCCESS) - return rv; - } - - /* we have an open database... return it */ - *pdb = apr_pcalloc(pool, sizeof(**pdb)); - (*pdb)->pool = pool; - (*pdb)->type = &apr_dbm_type_sdbm; - SET_FILE(*pdb, file); - - /* ### register a cleanup to close the DBM? */ - - return APR_SUCCESS; -} - -static void vt_sdbm_close(apr_dbm_t *dbm) -{ - APR_DBM_CLOSE(dbm->file); -} - -static apr_status_t vt_sdbm_fetch(apr_dbm_t *dbm, apr_datum_t key, - apr_datum_t * pvalue) -{ - apr_status_t rv; - cvt_datum_t ckey; - result_datum_t rd; - - CONVERT_DATUM(ckey, &key); - rv = APR_DBM_FETCH(dbm->file, ckey, rd); - RETURN_DATUM(pvalue, rd); - - REGISTER_CLEANUP(dbm, pvalue); - - /* store the error info into DBM, and return a status code. Also, note - that *pvalue should have been cleared on error. */ - return set_error(dbm, rv); -} - -static apr_status_t vt_sdbm_store(apr_dbm_t *dbm, apr_datum_t key, - apr_datum_t value) -{ - apr_status_t rv; - cvt_datum_t ckey; - cvt_datum_t cvalue; - - CONVERT_DATUM(ckey, &key); - CONVERT_DATUM(cvalue, &value); - rv = APR_DBM_STORE(dbm->file, ckey, cvalue); - - /* store any error info into DBM, and return a status code. */ - return set_error(dbm, rv); -} - -static apr_status_t vt_sdbm_del(apr_dbm_t *dbm, apr_datum_t key) -{ - apr_status_t rv; - cvt_datum_t ckey; - - CONVERT_DATUM(ckey, &key); - rv = APR_DBM_DELETE(dbm->file, ckey); - - /* store any error info into DBM, and return a status code. */ - return set_error(dbm, rv); -} - -static int vt_sdbm_exists(apr_dbm_t *dbm, apr_datum_t key) -{ - int exists; - apr_sdbm_datum_t ckey; - - CONVERT_DATUM(ckey, &key); - - { - apr_sdbm_datum_t value; - if (apr_sdbm_fetch(dbm->file, &value, ckey) != APR_SUCCESS) { - exists = 0; - } - else - exists = value.dptr != NULL; - } - - return exists; -} - -static apr_status_t vt_sdbm_firstkey(apr_dbm_t *dbm, apr_datum_t * pkey) -{ - apr_status_t rv; - result_datum_t rd; - - rv = APR_DBM_FIRSTKEY(dbm->file, rd); - RETURN_DATUM(pkey, rd); - - REGISTER_CLEANUP(dbm, pkey); - - /* store any error info into DBM, and return a status code. */ - return set_error(dbm, rv); -} - -static apr_status_t vt_sdbm_nextkey(apr_dbm_t *dbm, apr_datum_t * pkey) -{ - apr_status_t rv; - cvt_datum_t ckey; - result_datum_t rd; - - CONVERT_DATUM(ckey, pkey); - rv = APR_DBM_NEXTKEY(dbm->file, ckey, rd); - RETURN_DATUM(pkey, rd); - - REGISTER_CLEANUP(dbm, pkey); - - /* store any error info into DBM, and return a status code. */ - return set_error(dbm, APR_SUCCESS); -} - -static void vt_sdbm_freedatum(apr_dbm_t *dbm, apr_datum_t data) -{ - APR_DBM_FREEDPTR(data.dptr); -} - -static void vt_sdbm_usednames(apr_pool_t *pool, const char *pathname, - const char **used1, const char **used2) -{ - char *work; - - /* ### this could be optimized by computing strlen() once and using - ### memcpy and pmemdup instead. but why bother? */ - - *used1 = apr_pstrcat(pool, pathname, APR_SDBM_DIRFEXT, NULL); - *used2 = work = apr_pstrdup(pool, *used1); - - /* we know the extension is 4 characters */ - memcpy(&work[strlen(work) - 4], APR_SDBM_PAGFEXT, 4); -} - - -APU_DECLARE_DATA const apr_dbm_type_t apr_dbm_type_sdbm = { - "sdbm", - - vt_sdbm_open, - vt_sdbm_close, - vt_sdbm_fetch, - vt_sdbm_store, - vt_sdbm_del, - vt_sdbm_exists, - vt_sdbm_firstkey, - vt_sdbm_nextkey, - vt_sdbm_freedatum, - vt_sdbm_usednames -}; - -#endif /* APU_HAVE_SDBM */ diff --git a/libs/apr-util/dbm/sdbm/sdbm.c b/libs/apr-util/dbm/sdbm/sdbm.c deleted file mode 100644 index 537a5b72546..00000000000 --- a/libs/apr-util/dbm/sdbm/sdbm.c +++ /dev/null @@ -1,588 +0,0 @@ -/* Copyright 2000-2005 The Apache Software Foundation or its licensors, as - * applicable. - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -/* - * sdbm - ndbm work-alike hashed database library - * based on Per-Aake Larson's Dynamic Hashing algorithms. BIT 18 (1978). - * author: oz@nexus.yorku.ca - * ex-public domain, ported to APR for Apache 2 - * core routines - */ - -#include "apr.h" -#include "apr_file_io.h" -#include "apr_strings.h" -#include "apr_errno.h" -#include "apr_sdbm.h" - -#include "sdbm_tune.h" -#include "sdbm_pair.h" -#include "sdbm_private.h" - -#include /* for memset() */ -#include /* for malloc() and free() */ - -/* - * forward - */ -static int getdbit (apr_sdbm_t *, long); -static apr_status_t setdbit(apr_sdbm_t *, long); -static apr_status_t getpage(apr_sdbm_t *db, long); -static apr_status_t getnext(apr_sdbm_datum_t *key, apr_sdbm_t *db); -static apr_status_t makroom(apr_sdbm_t *, long, int); - -/* - * useful macros - */ -#define bad(x) ((x).dptr == NULL || (x).dsize <= 0) -#define exhash(item) sdbm_hash((item).dptr, (item).dsize) - -/* ### Does anything need these externally? */ -#define sdbm_dirfno(db) ((db)->dirf) -#define sdbm_pagfno(db) ((db)->pagf) - -#define OFF_PAG(off) (apr_off_t) (off) * PBLKSIZ -#define OFF_DIR(off) (apr_off_t) (off) * DBLKSIZ - -static long masks[] = { - 000000000000, 000000000001, 000000000003, 000000000007, - 000000000017, 000000000037, 000000000077, 000000000177, - 000000000377, 000000000777, 000000001777, 000000003777, - 000000007777, 000000017777, 000000037777, 000000077777, - 000000177777, 000000377777, 000000777777, 000001777777, - 000003777777, 000007777777, 000017777777, 000037777777, - 000077777777, 000177777777, 000377777777, 000777777777, - 001777777777, 003777777777, 007777777777, 017777777777 -}; - -const apr_sdbm_datum_t sdbm_nullitem = { NULL, 0 }; - -static apr_status_t database_cleanup(void *data) -{ - apr_sdbm_t *db = data; - - /* - * Can't rely on apr_sdbm_unlock, since it will merely - * decrement the refcnt if several locks are held. - */ - if (db->flags & (SDBM_SHARED_LOCK | SDBM_EXCLUSIVE_LOCK)) - (void) apr_file_unlock(db->dirf); - (void) apr_file_close(db->dirf); - (void) apr_file_close(db->pagf); - free(db); - - return APR_SUCCESS; -} - -static apr_status_t prep(apr_sdbm_t **pdb, const char *dirname, const char *pagname, - apr_int32_t flags, apr_fileperms_t perms, apr_pool_t *p) -{ - apr_sdbm_t *db; - apr_status_t status; - - *pdb = NULL; - - db = malloc(sizeof(*db)); - memset(db, 0, sizeof(*db)); - - db->pool = p; - - /* - * adjust user flags so that WRONLY becomes RDWR, - * as required by this package. Also set our internal - * flag for RDONLY if needed. - */ - if (!(flags & APR_WRITE)) { - db->flags |= SDBM_RDONLY; - } - - /* - * adjust the file open flags so that we handle locking - * on our own (don't rely on any locking behavior within - * an apr_file_t, in case it's ever introduced, and set - * our own flag. - */ - if (flags & APR_SHARELOCK) { - db->flags |= SDBM_SHARED; - flags &= ~APR_SHARELOCK; - } - - flags |= APR_BINARY | APR_READ; - - /* - * open the files in sequence, and stat the dirfile. - * If we fail anywhere, undo everything, return NULL. - */ - - if ((status = apr_file_open(&db->dirf, dirname, flags, perms, p)) - != APR_SUCCESS) - goto error; - - if ((status = apr_file_open(&db->pagf, pagname, flags, perms, p)) - != APR_SUCCESS) - goto error; - - if ((status = apr_sdbm_lock(db, (db->flags & SDBM_RDONLY) - ? APR_FLOCK_SHARED - : APR_FLOCK_EXCLUSIVE)) - != APR_SUCCESS) - goto error; - - /* apr_pcalloc zeroed the buffers - * apr_sdbm_lock stated the dirf->size and invalidated the cache - */ - - /* - * if we are opened in SHARED mode, unlock ourself - */ - if (db->flags & SDBM_SHARED) - if ((status = apr_sdbm_unlock(db)) != APR_SUCCESS) - goto error; - - /* make sure that we close the database at some point */ - apr_pool_cleanup_register(p, db, database_cleanup, apr_pool_cleanup_null); - - /* Done! */ - *pdb = db; - return APR_SUCCESS; - -error: - if (db->dirf && db->pagf) - (void) apr_sdbm_unlock(db); - if (db->dirf != NULL) - (void) apr_file_close(db->dirf); - if (db->pagf != NULL) { - (void) apr_file_close(db->pagf); - } - free(db); - return status; -} - -APU_DECLARE(apr_status_t) apr_sdbm_open(apr_sdbm_t **db, const char *file, - apr_int32_t flags, - apr_fileperms_t perms, apr_pool_t *p) -{ - char *dirname = apr_pstrcat(p, file, APR_SDBM_DIRFEXT, NULL); - char *pagname = apr_pstrcat(p, file, APR_SDBM_PAGFEXT, NULL); - - return prep(db, dirname, pagname, flags, perms, p); -} - -APU_DECLARE(apr_status_t) apr_sdbm_close(apr_sdbm_t *db) -{ - return apr_pool_cleanup_run(db->pool, db, database_cleanup); -} - -APU_DECLARE(apr_status_t) apr_sdbm_fetch(apr_sdbm_t *db, apr_sdbm_datum_t *val, - apr_sdbm_datum_t key) -{ - apr_status_t status; - - if (db == NULL || bad(key)) - return APR_EINVAL; - - if ((status = apr_sdbm_lock(db, APR_FLOCK_SHARED)) != APR_SUCCESS) - return status; - - if ((status = getpage(db, exhash(key))) == APR_SUCCESS) { - *val = getpair(db->pagbuf, key); - /* ### do we want a not-found result? */ - } - - (void) apr_sdbm_unlock(db); - - return status; -} - -static apr_status_t write_page(apr_sdbm_t *db, const char *buf, long pagno) -{ - apr_status_t status; - apr_off_t off = OFF_PAG(pagno); - - if ((status = apr_file_seek(db->pagf, APR_SET, &off)) == APR_SUCCESS) - status = apr_file_write_full(db->pagf, buf, PBLKSIZ, NULL); - - return status; -} - -APU_DECLARE(apr_status_t) apr_sdbm_delete(apr_sdbm_t *db, - const apr_sdbm_datum_t key) -{ - apr_status_t status; - - if (db == NULL || bad(key)) - return APR_EINVAL; - if (apr_sdbm_rdonly(db)) - return APR_EINVAL; - - if ((status = apr_sdbm_lock(db, APR_FLOCK_EXCLUSIVE)) != APR_SUCCESS) - return status; - - if ((status = getpage(db, exhash(key))) == APR_SUCCESS) { - if (!delpair(db->pagbuf, key)) - /* ### should we define some APRUTIL codes? */ - status = APR_EGENERAL; - else - status = write_page(db, db->pagbuf, db->pagbno); - } - - (void) apr_sdbm_unlock(db); - - return status; -} - -APU_DECLARE(apr_status_t) apr_sdbm_store(apr_sdbm_t *db, apr_sdbm_datum_t key, - apr_sdbm_datum_t val, int flags) -{ - int need; - register long hash; - apr_status_t status; - - if (db == NULL || bad(key)) - return APR_EINVAL; - if (apr_sdbm_rdonly(db)) - return APR_EINVAL; - need = key.dsize + val.dsize; - /* - * is the pair too big (or too small) for this database ?? - */ - if (need < 0 || need > PAIRMAX) - return APR_EINVAL; - - if ((status = apr_sdbm_lock(db, APR_FLOCK_EXCLUSIVE)) != APR_SUCCESS) - return status; - - if ((status = getpage(db, (hash = exhash(key)))) == APR_SUCCESS) { - - /* - * if we need to replace, delete the key/data pair - * first. If it is not there, ignore. - */ - if (flags == APR_SDBM_REPLACE) - (void) delpair(db->pagbuf, key); - else if (!(flags & APR_SDBM_INSERTDUP) && duppair(db->pagbuf, key)) { - status = APR_EEXIST; - goto error; - } - /* - * if we do not have enough room, we have to split. - */ - if (!fitpair(db->pagbuf, need)) - if ((status = makroom(db, hash, need)) != APR_SUCCESS) - goto error; - /* - * we have enough room or split is successful. insert the key, - * and update the page file. - */ - (void) putpair(db->pagbuf, key, val); - - status = write_page(db, db->pagbuf, db->pagbno); - } - -error: - (void) apr_sdbm_unlock(db); - - return status; -} - -/* - * makroom - make room by splitting the overfull page - * this routine will attempt to make room for SPLTMAX times before - * giving up. - */ -static apr_status_t makroom(apr_sdbm_t *db, long hash, int need) -{ - long newp; - char twin[PBLKSIZ]; - char *pag = db->pagbuf; - char *new = twin; - register int smax = SPLTMAX; - apr_status_t status; - - do { - /* - * split the current page - */ - (void) splpage(pag, new, db->hmask + 1); - /* - * address of the new page - */ - newp = (hash & db->hmask) | (db->hmask + 1); - - /* - * write delay, read avoidence/cache shuffle: - * select the page for incoming pair: if key is to go to the new page, - * write out the previous one, and copy the new one over, thus making - * it the current page. If not, simply write the new page, and we are - * still looking at the page of interest. current page is not updated - * here, as sdbm_store will do so, after it inserts the incoming pair. - */ - if (hash & (db->hmask + 1)) { - if ((status = write_page(db, db->pagbuf, db->pagbno)) - != APR_SUCCESS) - return status; - - db->pagbno = newp; - (void) memcpy(pag, new, PBLKSIZ); - } - else { - if ((status = write_page(db, new, newp)) != APR_SUCCESS) - return status; - } - - if ((status = setdbit(db, db->curbit)) != APR_SUCCESS) - return status; - /* - * see if we have enough room now - */ - if (fitpair(pag, need)) - return APR_SUCCESS; - /* - * try again... update curbit and hmask as getpage would have - * done. because of our update of the current page, we do not - * need to read in anything. BUT we have to write the current - * [deferred] page out, as the window of failure is too great. - */ - db->curbit = 2 * db->curbit - + ((hash & (db->hmask + 1)) ? 2 : 1); - db->hmask |= db->hmask + 1; - - if ((status = write_page(db, db->pagbuf, db->pagbno)) - != APR_SUCCESS) - return status; - - } while (--smax); - - /* - * if we are here, this is real bad news. After SPLTMAX splits, - * we still cannot fit the key. say goodnight. - */ -#if 0 - (void) write(2, "sdbm: cannot insert after SPLTMAX attempts.\n", 44); -#endif - /* ### ENOSPC not really appropriate but better than nothing */ - return APR_ENOSPC; - -} - -/* Reads 'len' bytes from file 'f' at offset 'off' into buf. - * 'off' is given relative to the start of the file. - * If EOF is returned while reading, this is taken as success. - */ -static apr_status_t read_from(apr_file_t *f, void *buf, - apr_off_t off, apr_size_t len) -{ - apr_status_t status; - - if ((status = apr_file_seek(f, APR_SET, &off)) != APR_SUCCESS || - ((status = apr_file_read_full(f, buf, len, NULL)) != APR_SUCCESS)) { - /* if EOF is reached, pretend we read all zero's */ - if (status == APR_EOF) { - memset(buf, 0, len); - status = APR_SUCCESS; - } - } - - return status; -} - -/* - * the following two routines will break if - * deletions aren't taken into account. (ndbm bug) - */ -APU_DECLARE(apr_status_t) apr_sdbm_firstkey(apr_sdbm_t *db, - apr_sdbm_datum_t *key) -{ - apr_status_t status; - - if ((status = apr_sdbm_lock(db, APR_FLOCK_SHARED)) != APR_SUCCESS) - return status; - - /* - * start at page 0 - */ - if ((status = read_from(db->pagf, db->pagbuf, OFF_PAG(0), PBLKSIZ)) - == APR_SUCCESS) { - db->pagbno = 0; - db->blkptr = 0; - db->keyptr = 0; - status = getnext(key, db); - } - - (void) apr_sdbm_unlock(db); - - return status; -} - -APU_DECLARE(apr_status_t) apr_sdbm_nextkey(apr_sdbm_t *db, - apr_sdbm_datum_t *key) -{ - apr_status_t status; - - if ((status = apr_sdbm_lock(db, APR_FLOCK_SHARED)) != APR_SUCCESS) - return status; - - status = getnext(key, db); - - (void) apr_sdbm_unlock(db); - - return status; -} - -/* - * all important binary tree traversal - */ -static apr_status_t getpage(apr_sdbm_t *db, long hash) -{ - register int hbit; - register long dbit; - register long pagb; - apr_status_t status; - - dbit = 0; - hbit = 0; - while (dbit < db->maxbno && getdbit(db, dbit)) - dbit = 2 * dbit + ((hash & (1 << hbit++)) ? 2 : 1); - - debug(("dbit: %d...", dbit)); - - db->curbit = dbit; - db->hmask = masks[hbit]; - - pagb = hash & db->hmask; - /* - * see if the block we need is already in memory. - * note: this lookaside cache has about 10% hit rate. - */ - if (pagb != db->pagbno) { - /* - * note: here, we assume a "hole" is read as 0s. - * if not, must zero pagbuf first. - * ### joe: this assumption was surely never correct? but - * ### we make it so in read_from anyway. - */ - if ((status = read_from(db->pagf, db->pagbuf, OFF_PAG(pagb), PBLKSIZ)) - != APR_SUCCESS) - return status; - - if (!chkpage(db->pagbuf)) - return APR_ENOSPC; /* ### better error? */ - db->pagbno = pagb; - - debug(("pag read: %d\n", pagb)); - } - return APR_SUCCESS; -} - -static int getdbit(apr_sdbm_t *db, long dbit) -{ - register long c; - register long dirb; - - c = dbit / BYTESIZ; - dirb = c / DBLKSIZ; - - if (dirb != db->dirbno) { - if (read_from(db->dirf, db->dirbuf, OFF_DIR(dirb), DBLKSIZ) - != APR_SUCCESS) - return 0; - - db->dirbno = dirb; - - debug(("dir read: %d\n", dirb)); - } - - return db->dirbuf[c % DBLKSIZ] & (1 << dbit % BYTESIZ); -} - -static apr_status_t setdbit(apr_sdbm_t *db, long dbit) -{ - register long c; - register long dirb; - apr_status_t status; - apr_off_t off; - - c = dbit / BYTESIZ; - dirb = c / DBLKSIZ; - - if (dirb != db->dirbno) { - if ((status = read_from(db->dirf, db->dirbuf, OFF_DIR(dirb), DBLKSIZ)) - != APR_SUCCESS) - return status; - - db->dirbno = dirb; - - debug(("dir read: %d\n", dirb)); - } - - db->dirbuf[c % DBLKSIZ] |= (1 << dbit % BYTESIZ); - - if (dbit >= db->maxbno) - db->maxbno += DBLKSIZ * BYTESIZ; - - off = OFF_DIR(dirb); - if ((status = apr_file_seek(db->dirf, APR_SET, &off)) == APR_SUCCESS) - status = apr_file_write_full(db->dirf, db->dirbuf, DBLKSIZ, NULL); - - return status; -} - -/* -* getnext - get the next key in the page, and if done with -* the page, try the next page in sequence -*/ -static apr_status_t getnext(apr_sdbm_datum_t *key, apr_sdbm_t *db) -{ - apr_status_t status; - for (;;) { - db->keyptr++; - *key = getnkey(db->pagbuf, db->keyptr); - if (key->dptr != NULL) - return APR_SUCCESS; - /* - * we either run out, or there is nothing on this page.. - * try the next one... If we lost our position on the - * file, we will have to seek. - */ - db->keyptr = 0; - if (db->pagbno != db->blkptr++) { - apr_off_t off = OFF_PAG(db->blkptr); - if ((status = apr_file_seek(db->pagf, APR_SET, &off) - != APR_SUCCESS)) - return status; - } - - db->pagbno = db->blkptr; - /* ### EOF acceptable here too? */ - if ((status = apr_file_read_full(db->pagf, db->pagbuf, PBLKSIZ, NULL)) - != APR_SUCCESS) - return status; - if (!chkpage(db->pagbuf)) - return APR_EGENERAL; /* ### need better error */ - } - - /* NOTREACHED */ -} - - -APU_DECLARE(int) apr_sdbm_rdonly(apr_sdbm_t *db) -{ - /* ### Should we return true if the first lock is a share lock, - * to reflect that apr_sdbm_store and apr_sdbm_delete will fail? - */ - return (db->flags & SDBM_RDONLY) != 0; -} - diff --git a/libs/apr-util/dbm/sdbm/sdbm_hash.c b/libs/apr-util/dbm/sdbm/sdbm_hash.c deleted file mode 100644 index 012e3d07507..00000000000 --- a/libs/apr-util/dbm/sdbm/sdbm_hash.c +++ /dev/null @@ -1,63 +0,0 @@ -/* Copyright 2000-2005 The Apache Software Foundation or its licensors, as - * applicable. - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -/* - * sdbm - ndbm work-alike hashed database library - * based on Per-Aake Larson's Dynamic Hashing algorithms. BIT 18 (1978). - * author: oz@nexus.yorku.ca - * status: ex-public domain. keep it that way. - * - * hashing routine - */ - -#include "apr_sdbm.h" -#include "sdbm_private.h" - -/* - * polynomial conversion ignoring overflows - * [this seems to work remarkably well, in fact better - * then the ndbm hash function. Replace at your own risk] - * use: 65599 nice. - * 65587 even better. - */ -long sdbm_hash(const char *str, int len) -{ - register unsigned long n = 0; - -#define DUFF /* go ahead and use the loop-unrolled version */ -#ifdef DUFF - -#define HASHC n = *str++ + 65599 * n - - if (len > 0) { - register int loop = (len + 8 - 1) >> 3; - - switch(len & (8 - 1)) { - case 0: do { - HASHC; case 7: HASHC; - case 6: HASHC; case 5: HASHC; - case 4: HASHC; case 3: HASHC; - case 2: HASHC; case 1: HASHC; - } while (--loop); - } - - } -#else - while (len--) - n = *str++ + 65599 * n; -#endif - return n; -} diff --git a/libs/apr-util/dbm/sdbm/sdbm_lock.c b/libs/apr-util/dbm/sdbm/sdbm_lock.c deleted file mode 100644 index a001ed413bf..00000000000 --- a/libs/apr-util/dbm/sdbm/sdbm_lock.c +++ /dev/null @@ -1,78 +0,0 @@ -/* Copyright 2000-2005 The Apache Software Foundation or its licensors, as - * applicable. - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -#include "apr_file_info.h" -#include "apr_file_io.h" -#include "apr_sdbm.h" - -#include "sdbm_private.h" -#include "sdbm_tune.h" - -/* NOTE: this function blocks until it acquires the lock */ -APU_DECLARE(apr_status_t) apr_sdbm_lock(apr_sdbm_t *db, int type) -{ - apr_status_t status; - - if (!(type == APR_FLOCK_SHARED || type == APR_FLOCK_EXCLUSIVE)) - return APR_EINVAL; - - if (db->flags & SDBM_EXCLUSIVE_LOCK) { - ++db->lckcnt; - return APR_SUCCESS; - } - else if (db->flags & SDBM_SHARED_LOCK) { - /* - * Cannot promote a shared lock to an exlusive lock - * in a cross-platform compatibile manner. - */ - if (type == APR_FLOCK_EXCLUSIVE) - return APR_EINVAL; - ++db->lckcnt; - return APR_SUCCESS; - } - /* - * zero size: either a fresh database, or one with a single, - * unsplit data page: dirpage is all zeros. - */ - if ((status = apr_file_lock(db->dirf, type)) == APR_SUCCESS) - { - apr_finfo_t finfo; - if ((status = apr_file_info_get(&finfo, APR_FINFO_SIZE, db->dirf)) - != APR_SUCCESS) { - (void) apr_file_unlock(db->dirf); - return status; - } - - SDBM_INVALIDATE_CACHE(db, finfo); - - ++db->lckcnt; - if (type == APR_FLOCK_SHARED) - db->flags |= SDBM_SHARED_LOCK; - else if (type == APR_FLOCK_EXCLUSIVE) - db->flags |= SDBM_EXCLUSIVE_LOCK; - } - return status; -} - -APU_DECLARE(apr_status_t) apr_sdbm_unlock(apr_sdbm_t *db) -{ - if (!(db->flags & (SDBM_SHARED_LOCK | SDBM_EXCLUSIVE_LOCK))) - return APR_EINVAL; - if (--db->lckcnt > 0) - return APR_SUCCESS; - db->flags &= ~(SDBM_SHARED_LOCK | SDBM_EXCLUSIVE_LOCK); - return apr_file_unlock(db->dirf); -} diff --git a/libs/apr-util/dbm/sdbm/sdbm_pair.c b/libs/apr-util/dbm/sdbm/sdbm_pair.c deleted file mode 100644 index 3fe82b66643..00000000000 --- a/libs/apr-util/dbm/sdbm/sdbm_pair.c +++ /dev/null @@ -1,319 +0,0 @@ -/* Copyright 2000-2005 The Apache Software Foundation or its licensors, as - * applicable. - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -/* - * sdbm - ndbm work-alike hashed database library - * based on Per-Aake Larson's Dynamic Hashing algorithms. BIT 18 (1978). - * author: oz@nexus.yorku.ca - * status: ex-public domain. - * - * page-level routines - */ - -#include "apr_sdbm.h" - -#include "sdbm_tune.h" -#include "sdbm_pair.h" -#include "sdbm_private.h" - -#include /* for memset() */ - - -#define exhash(item) sdbm_hash((item).dptr, (item).dsize) - -/* - * forward - */ -static int seepair(char *, int, char *, int); - -/* - * page format: - * +------------------------------+ - * ino | n | keyoff | datoff | keyoff | - * +------------+--------+--------+ - * | datoff | - - - ----> | - * +--------+---------------------+ - * | F R E E A R E A | - * +--------------+---------------+ - * | <---- - - - | data | - * +--------+-----+----+----------+ - * | key | data | key | - * +--------+----------+----------+ - * - * calculating the offsets for free area: if the number - * of entries (ino[0]) is zero, the offset to the END of - * the free area is the block size. Otherwise, it is the - * nth (ino[ino[0]]) entry's offset. - */ - -int -fitpair(pag, need) -char *pag; -int need; -{ - register int n; - register int off; - register int avail; - register short *ino = (short *) pag; - - off = ((n = ino[0]) > 0) ? ino[n] : PBLKSIZ; - avail = off - (n + 1) * sizeof(short); - need += 2 * sizeof(short); - - debug(("avail %d need %d\n", avail, need)); - - return need <= avail; -} - -void -putpair(pag, key, val) -char *pag; -apr_sdbm_datum_t key; -apr_sdbm_datum_t val; -{ - register int n; - register int off; - register short *ino = (short *) pag; - - off = ((n = ino[0]) > 0) ? ino[n] : PBLKSIZ; -/* - * enter the key first - */ - off -= key.dsize; - (void) memcpy(pag + off, key.dptr, key.dsize); - ino[n + 1] = off; -/* - * now the data - */ - off -= val.dsize; - (void) memcpy(pag + off, val.dptr, val.dsize); - ino[n + 2] = off; -/* - * adjust item count - */ - ino[0] += 2; -} - -apr_sdbm_datum_t -getpair(pag, key) -char *pag; -apr_sdbm_datum_t key; -{ - register int i; - register int n; - apr_sdbm_datum_t val; - register short *ino = (short *) pag; - - if ((n = ino[0]) == 0) - return sdbm_nullitem; - - if ((i = seepair(pag, n, key.dptr, key.dsize)) == 0) - return sdbm_nullitem; - - val.dptr = pag + ino[i + 1]; - val.dsize = ino[i] - ino[i + 1]; - return val; -} - -int -duppair(pag, key) -char *pag; -apr_sdbm_datum_t key; -{ - register short *ino = (short *) pag; - return ino[0] > 0 && seepair(pag, ino[0], key.dptr, key.dsize) > 0; -} - -apr_sdbm_datum_t -getnkey(pag, num) -char *pag; -int num; -{ - apr_sdbm_datum_t key; - register int off; - register short *ino = (short *) pag; - - num = num * 2 - 1; - if (ino[0] == 0 || num > ino[0]) - return sdbm_nullitem; - - off = (num > 1) ? ino[num - 1] : PBLKSIZ; - - key.dptr = pag + ino[num]; - key.dsize = off - ino[num]; - - return key; -} - -int -delpair(pag, key) -char *pag; -apr_sdbm_datum_t key; -{ - register int n; - register int i; - register short *ino = (short *) pag; - - if ((n = ino[0]) == 0) - return 0; - - if ((i = seepair(pag, n, key.dptr, key.dsize)) == 0) - return 0; -/* - * found the key. if it is the last entry - * [i.e. i == n - 1] we just adjust the entry count. - * hard case: move all data down onto the deleted pair, - * shift offsets onto deleted offsets, and adjust them. - * [note: 0 < i < n] - */ - if (i < n - 1) { - register int m; - register char *dst = pag + (i == 1 ? PBLKSIZ : ino[i - 1]); - register char *src = pag + ino[i + 1]; - register int zoo = dst - src; - - debug(("free-up %d ", zoo)); -/* - * shift data/keys down - */ - m = ino[i + 1] - ino[n]; - -#undef DUFF /* just use memmove. it should be plenty fast. */ -#ifdef DUFF -#define MOVB *--dst = *--src - - if (m > 0) { - register int loop = (m + 8 - 1) >> 3; - - switch (m & (8 - 1)) { - case 0: do { - MOVB; case 7: MOVB; - case 6: MOVB; case 5: MOVB; - case 4: MOVB; case 3: MOVB; - case 2: MOVB; case 1: MOVB; - } while (--loop); - } - } -#else - dst -= m; - src -= m; - memmove(dst, src, m); -#endif - -/* - * adjust offset index up - */ - while (i < n - 1) { - ino[i] = ino[i + 2] + zoo; - i++; - } - } - ino[0] -= 2; - return 1; -} - -/* - * search for the key in the page. - * return offset index in the range 0 < i < n. - * return 0 if not found. - */ -static int -seepair(pag, n, key, siz) -char *pag; -register int n; -register char *key; -register int siz; -{ - register int i; - register int off = PBLKSIZ; - register short *ino = (short *) pag; - - for (i = 1; i < n; i += 2) { - if (siz == off - ino[i] && - memcmp(key, pag + ino[i], siz) == 0) - return i; - off = ino[i + 1]; - } - return 0; -} - -void -splpage(pag, new, sbit) -char *pag; -char *new; -long sbit; -{ - apr_sdbm_datum_t key; - apr_sdbm_datum_t val; - - register int n; - register int off = PBLKSIZ; - char cur[PBLKSIZ]; - register short *ino = (short *) cur; - - (void) memcpy(cur, pag, PBLKSIZ); - (void) memset(pag, 0, PBLKSIZ); - (void) memset(new, 0, PBLKSIZ); - - n = ino[0]; - for (ino++; n > 0; ino += 2) { - key.dptr = cur + ino[0]; - key.dsize = off - ino[0]; - val.dptr = cur + ino[1]; - val.dsize = ino[0] - ino[1]; -/* - * select the page pointer (by looking at sbit) and insert - */ - (void) putpair((exhash(key) & sbit) ? new : pag, key, val); - - off = ino[1]; - n -= 2; - } - - debug(("%d split %d/%d\n", ((short *) cur)[0] / 2, - ((short *) new)[0] / 2, - ((short *) pag)[0] / 2)); -} - -/* - * check page sanity: - * number of entries should be something - * reasonable, and all offsets in the index should be in order. - * this could be made more rigorous. - */ -int -chkpage(pag) -char *pag; -{ - register int n; - register int off; - register short *ino = (short *) pag; - - if ((n = ino[0]) < 0 || n > PBLKSIZ / sizeof(short)) - return 0; - - if (n > 0) { - off = PBLKSIZ; - for (ino++; n > 0; ino += 2) { - if (ino[0] > off || ino[1] > off || - ino[1] > ino[0]) - return 0; - off = ino[1]; - n -= 2; - } - } - return 1; -} diff --git a/libs/apr-util/dbm/sdbm/sdbm_pair.h b/libs/apr-util/dbm/sdbm/sdbm_pair.h deleted file mode 100644 index 51d10658710..00000000000 --- a/libs/apr-util/dbm/sdbm/sdbm_pair.h +++ /dev/null @@ -1,40 +0,0 @@ -/* Copyright 2000-2005 The Apache Software Foundation or its licensors, as - * applicable. - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -#ifndef SDBM_PAIR_H -#define SDBM_PAIR_H - -/* Mini EMBED (pair.c) */ -#define chkpage apu__sdbm_chkpage -#define delpair apu__sdbm_delpair -#define duppair apu__sdbm_duppair -#define fitpair apu__sdbm_fitpair -#define getnkey apu__sdbm_getnkey -#define getpair apu__sdbm_getpair -#define putpair apu__sdbm_putpair -#define splpage apu__sdbm_splpage - -int fitpair(char *, int); -void putpair(char *, apr_sdbm_datum_t, apr_sdbm_datum_t); -apr_sdbm_datum_t getpair(char *, apr_sdbm_datum_t); -int delpair(char *, apr_sdbm_datum_t); -int chkpage (char *); -apr_sdbm_datum_t getnkey(char *, int); -void splpage(char *, char *, long); -int duppair(char *, apr_sdbm_datum_t); - -#endif /* SDBM_PAIR_H */ - diff --git a/libs/apr-util/dbm/sdbm/sdbm_private.h b/libs/apr-util/dbm/sdbm/sdbm_private.h deleted file mode 100644 index a1ad29d471e..00000000000 --- a/libs/apr-util/dbm/sdbm/sdbm_private.h +++ /dev/null @@ -1,84 +0,0 @@ -/* Copyright 2000-2005 The Apache Software Foundation or its licensors, as - * applicable. - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -/* - * sdbm - ndbm work-alike hashed database library - * based on Per-Ake Larson's Dynamic Hashing algorithms. BIT 18 (1978). - * author: oz@nexus.yorku.ca - */ - -#ifndef SDBM_PRIVATE_H -#define SDBM_PRIVATE_H - -#include "apr.h" -#include "apr_pools.h" -#include "apr_file_io.h" -#include "apr_errno.h" /* for apr_status_t */ - -#if 0 -/* if the block/page size is increased, it breaks perl apr_sdbm_t compatibility */ -#define DBLKSIZ 16384 -#define PBLKSIZ 8192 -#define PAIRMAX 8008 /* arbitrary on PBLKSIZ-N */ -#else -#define DBLKSIZ 4096 -#define PBLKSIZ 1024 -#define PAIRMAX 1008 /* arbitrary on PBLKSIZ-N */ -#endif -#define SPLTMAX 10 /* maximum allowed splits */ - -/* for apr_sdbm_t.flags */ -#define SDBM_RDONLY 0x1 /* data base open read-only */ -#define SDBM_SHARED 0x2 /* data base open for sharing */ -#define SDBM_SHARED_LOCK 0x4 /* data base locked for shared read */ -#define SDBM_EXCLUSIVE_LOCK 0x8 /* data base locked for write */ - -struct apr_sdbm_t { - apr_pool_t *pool; - apr_file_t *dirf; /* directory file descriptor */ - apr_file_t *pagf; /* page file descriptor */ - apr_int32_t flags; /* status/error flags, see below */ - long maxbno; /* size of dirfile in bits */ - long curbit; /* current bit number */ - long hmask; /* current hash mask */ - long blkptr; /* current block for nextkey */ - int keyptr; /* current key for nextkey */ - long blkno; /* current page to read/write */ - long pagbno; /* current page in pagbuf */ - char pagbuf[PBLKSIZ]; /* page file block buffer */ - long dirbno; /* current block in dirbuf */ - char dirbuf[DBLKSIZ]; /* directory file block buffer */ - int lckcnt; /* number of calls to sdbm_lock */ -}; - - -#define sdbm_hash apu__sdbm_hash -#define sdbm_nullitem apu__sdbm_nullitem - -extern const apr_sdbm_datum_t sdbm_nullitem; - -long sdbm_hash(const char *str, int len); - -/* - * zero the cache - */ -#define SDBM_INVALIDATE_CACHE(db, finfo) \ - do { db->dirbno = (!finfo.size) ? 0 : -1; \ - db->pagbno = -1; \ - db->maxbno = (long)(finfo.size * BYTESIZ); \ - } while (0); - -#endif /* SDBM_PRIVATE_H */ diff --git a/libs/apr-util/dbm/sdbm/sdbm_tune.h b/libs/apr-util/dbm/sdbm/sdbm_tune.h deleted file mode 100644 index 92ed6a253c8..00000000000 --- a/libs/apr-util/dbm/sdbm/sdbm_tune.h +++ /dev/null @@ -1,40 +0,0 @@ -/* Copyright 2000-2005 The Apache Software Foundation or its licensors, as - * applicable. - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -/* - * sdbm - ndbm work-alike hashed database library - * tuning and portability constructs [not nearly enough] - * author: oz@nexus.yorku.ca - */ - -#ifndef SDBM_TUNE_H -#define SDBM_TUNE_H - -#include "apr_errno.h" - -/* ### this might be better off as sizeof(char *) */ -#define BYTESIZ 8 - -/* - * misc - */ -#ifdef DEBUG -#define debug(x) printf x -#else -#define debug(x) -#endif - -#endif /* SDBM_TUNE_H */ diff --git a/libs/apr-util/docs/doxygen.conf b/libs/apr-util/docs/doxygen.conf deleted file mode 100644 index dc49609dad8..00000000000 --- a/libs/apr-util/docs/doxygen.conf +++ /dev/null @@ -1,30 +0,0 @@ -PROJECT_NAME="Apache Portable Runtime Utility Library" - -INPUT=. -QUIET=YES -RECURSIVE=YES -FILE_PATTERNS=*.h - -OUTPUT_DIRECTORY=docs/dox - -MACRO_EXPANSION=YES -EXPAND_ONLY_PREDEF=YES -#EXPAND_AS_DEFINED= -# not sure why this doesn't work as EXPAND_AS_DEFINED, it should! -PREDEFINED="APU_DECLARE(x)=x" \ - "APU_DECLARE_NONSTD(x)=x" \ - "APU_DECLARE_DATA" \ - "APR_HAS_MMAP" \ - "APR_HAS_THREADS" \ - "APR_HAS_XLATE" \ - "__attribute__(x)=" \ - DOXYGEN= - -OPTIMIZE_OUTPUT_FOR_C=YES - -FULL_PATH_NAMES=YES -CASE_SENSE_NAMES=NO -# some autoconf guru needs to make configure set this correctly... -#STRIP_FROM_PATH=/root/apache/httpd-2.0-8/srclib/apr-util - -GENERATE_TAGFILE=docs/dox/apu.tag diff --git a/libs/apr-util/encoding/apr_base64.c b/libs/apr-util/encoding/apr_base64.c deleted file mode 100644 index 4a1f49c568b..00000000000 --- a/libs/apr-util/encoding/apr_base64.c +++ /dev/null @@ -1,268 +0,0 @@ -/* Copyright 2000-2005 The Apache Software Foundation or its licensors, as - * applicable. - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -/* base64 encoder/decoder. Originally part of main/util.c - * but moved here so that support/ab and apr_sha1.c could - * use it. This meant removing the apr_palloc()s and adding - * ugly 'len' functions, which is quite a nasty cost. - */ - -#include "apr_base64.h" -#if APR_CHARSET_EBCDIC -#include "apr_xlate.h" -#endif /* APR_CHARSET_EBCDIC */ - -/* aaaack but it's fast and const should make it shared text page. */ -static const unsigned char pr2six[256] = -{ -#if !APR_CHARSET_EBCDIC - /* ASCII table */ - 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, - 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, - 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 62, 64, 64, 64, 63, - 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 64, 64, 64, 64, 64, 64, - 64, 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, - 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 64, 64, 64, 64, 64, - 64, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, - 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 64, 64, 64, 64, 64, - 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, - 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, - 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, - 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, - 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, - 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, - 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, - 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64 -#else /*APR_CHARSET_EBCDIC*/ - /* EBCDIC table */ - 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, - 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, - 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, - 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, - 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 62, 64, - 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, - 64, 63, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, - 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, - 64, 26, 27, 28, 29, 30, 31, 32, 33, 34, 64, 64, 64, 64, 64, 64, - 64, 35, 36, 37, 38, 39, 40, 41, 42, 43, 64, 64, 64, 64, 64, 64, - 64, 64, 44, 45, 46, 47, 48, 49, 50, 51, 64, 64, 64, 64, 64, 64, - 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, - 64, 0, 1, 2, 3, 4, 5, 6, 7, 8, 64, 64, 64, 64, 64, 64, - 64, 9, 10, 11, 12, 13, 14, 15, 16, 17, 64, 64, 64, 64, 64, 64, - 64, 64, 18, 19, 20, 21, 22, 23, 24, 25, 64, 64, 64, 64, 64, 64, - 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 64, 64, 64, 64, 64, 64 -#endif /*APR_CHARSET_EBCDIC*/ -}; - -#if APR_CHARSET_EBCDIC -static apr_xlate_t *xlate_to_ebcdic; -static unsigned char os_toascii[256]; - -APU_DECLARE(apr_status_t) apr_base64init_ebcdic(apr_xlate_t *to_ascii, - apr_xlate_t *to_ebcdic) -{ - int i; - apr_size_t inbytes_left, outbytes_left; - apr_status_t rv; - int onoff; - - /* Only single-byte conversion is supported. - */ - rv = apr_xlate_sb_get(to_ascii, &onoff); - if (rv) { - return rv; - } - if (!onoff) { /* If conversion is not single-byte-only */ - return APR_EINVAL; - } - rv = apr_xlate_sb_get(to_ebcdic, &onoff); - if (rv) { - return rv; - } - if (!onoff) { /* If conversion is not single-byte-only */ - return APR_EINVAL; - } - xlate_to_ebcdic = to_ebcdic; - for (i = 0; i < sizeof(os_toascii); i++) { - os_toascii[i] = i; - } - inbytes_left = outbytes_left = sizeof(os_toascii); - apr_xlate_conv_buffer(to_ascii, os_toascii, &inbytes_left, - os_toascii, &outbytes_left); - - return APR_SUCCESS; -} -#endif /*APR_CHARSET_EBCDIC*/ - -APU_DECLARE(int) apr_base64_decode_len(const char *bufcoded) -{ - int nbytesdecoded; - register const unsigned char *bufin; - register int nprbytes; - - bufin = (const unsigned char *) bufcoded; - while (pr2six[*(bufin++)] <= 63); - - nprbytes = (bufin - (const unsigned char *) bufcoded) - 1; - nbytesdecoded = ((nprbytes + 3) / 4) * 3; - - return nbytesdecoded + 1; -} - -APU_DECLARE(int) apr_base64_decode(char *bufplain, const char *bufcoded) -{ -#if APR_CHARSET_EBCDIC - apr_size_t inbytes_left, outbytes_left; -#endif /* APR_CHARSET_EBCDIC */ - int len; - - len = apr_base64_decode_binary((unsigned char *) bufplain, bufcoded); -#if APR_CHARSET_EBCDIC - inbytes_left = outbytes_left = len; - apr_xlate_conv_buffer(xlate_to_ebcdic, bufplain, &inbytes_left, - bufplain, &outbytes_left); -#endif /* APR_CHARSET_EBCDIC */ - bufplain[len] = '\0'; - return len; -} - -/* This is the same as apr_base64_decode() except on EBCDIC machines, where - * the conversion of the output to ebcdic is left out. - */ -APU_DECLARE(int) apr_base64_decode_binary(unsigned char *bufplain, - const char *bufcoded) -{ - int nbytesdecoded; - register const unsigned char *bufin; - register unsigned char *bufout; - register int nprbytes; - - bufin = (const unsigned char *) bufcoded; - while (pr2six[*(bufin++)] <= 63); - nprbytes = (bufin - (const unsigned char *) bufcoded) - 1; - nbytesdecoded = ((nprbytes + 3) / 4) * 3; - - bufout = (unsigned char *) bufplain; - bufin = (const unsigned char *) bufcoded; - - while (nprbytes > 4) { - *(bufout++) = - (unsigned char) (pr2six[*bufin] << 2 | pr2six[bufin[1]] >> 4); - *(bufout++) = - (unsigned char) (pr2six[bufin[1]] << 4 | pr2six[bufin[2]] >> 2); - *(bufout++) = - (unsigned char) (pr2six[bufin[2]] << 6 | pr2six[bufin[3]]); - bufin += 4; - nprbytes -= 4; - } - - /* Note: (nprbytes == 1) would be an error, so just ingore that case */ - if (nprbytes > 1) { - *(bufout++) = - (unsigned char) (pr2six[*bufin] << 2 | pr2six[bufin[1]] >> 4); - } - if (nprbytes > 2) { - *(bufout++) = - (unsigned char) (pr2six[bufin[1]] << 4 | pr2six[bufin[2]] >> 2); - } - if (nprbytes > 3) { - *(bufout++) = - (unsigned char) (pr2six[bufin[2]] << 6 | pr2six[bufin[3]]); - } - - nbytesdecoded -= (4 - nprbytes) & 3; - return nbytesdecoded; -} - -static const char basis_64[] = - "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/"; - -APU_DECLARE(int) apr_base64_encode_len(int len) -{ - return ((len + 2) / 3 * 4) + 1; -} - -APU_DECLARE(int) apr_base64_encode(char *encoded, const char *string, int len) -{ -#if !APR_CHARSET_EBCDIC - return apr_base64_encode_binary(encoded, (const unsigned char *) string, len); -#else /* APR_CHARSET_EBCDIC */ - int i; - char *p; - - p = encoded; - for (i = 0; i < len - 2; i += 3) { - *p++ = basis_64[(os_toascii[string[i]] >> 2) & 0x3F]; - *p++ = basis_64[((os_toascii[string[i]] & 0x3) << 4) | - ((int) (os_toascii[string[i + 1]] & 0xF0) >> 4)]; - *p++ = basis_64[((os_toascii[string[i + 1]] & 0xF) << 2) | - ((int) (os_toascii[string[i + 2]] & 0xC0) >> 6)]; - *p++ = basis_64[os_toascii[string[i + 2]] & 0x3F]; - } - if (i < len) { - *p++ = basis_64[(os_toascii[string[i]] >> 2) & 0x3F]; - if (i == (len - 1)) { - *p++ = basis_64[((os_toascii[string[i]] & 0x3) << 4)]; - *p++ = '='; - } - else { - *p++ = basis_64[((os_toascii[string[i]] & 0x3) << 4) | - ((int) (os_toascii[string[i + 1]] & 0xF0) >> 4)]; - *p++ = basis_64[((os_toascii[string[i + 1]] & 0xF) << 2)]; - } - *p++ = '='; - } - - *p++ = '\0'; - return p - encoded; -#endif /* APR_CHARSET_EBCDIC */ -} - -/* This is the same as apr_base64_encode() except on EBCDIC machines, where - * the conversion of the input to ascii is left out. - */ -APU_DECLARE(int) apr_base64_encode_binary(char *encoded, - const unsigned char *string, int len) -{ - int i; - char *p; - - p = encoded; - for (i = 0; i < len - 2; i += 3) { - *p++ = basis_64[(string[i] >> 2) & 0x3F]; - *p++ = basis_64[((string[i] & 0x3) << 4) | - ((int) (string[i + 1] & 0xF0) >> 4)]; - *p++ = basis_64[((string[i + 1] & 0xF) << 2) | - ((int) (string[i + 2] & 0xC0) >> 6)]; - *p++ = basis_64[string[i + 2] & 0x3F]; - } - if (i < len) { - *p++ = basis_64[(string[i] >> 2) & 0x3F]; - if (i == (len - 1)) { - *p++ = basis_64[((string[i] & 0x3) << 4)]; - *p++ = '='; - } - else { - *p++ = basis_64[((string[i] & 0x3) << 4) | - ((int) (string[i + 1] & 0xF0) >> 4)]; - *p++ = basis_64[((string[i + 1] & 0xF) << 2)]; - } - *p++ = '='; - } - - *p++ = '\0'; - return p - encoded; -} diff --git a/libs/apr-util/export_vars.sh.in b/libs/apr-util/export_vars.sh.in deleted file mode 100644 index 96a93526319..00000000000 --- a/libs/apr-util/export_vars.sh.in +++ /dev/null @@ -1,13 +0,0 @@ -# -# export_vars.sh -# -# This shell script is used to export vars to the application using the -# APRUTIL library. This script should be "sourced" to ensure the variable -# values are set within the calling script's context. For example: -# -# $ . path/to/apr-util/export_vars.sh -# - -APRUTIL_EXPORT_INCLUDES="@APRUTIL_INCLUDES@" -APRUTIL_EXPORT_LIBS="@APRUTIL_EXPORT_LIBS@" -APRUTIL_LDFLAGS="@APRUTIL_LDFLAGS@" diff --git a/libs/apr-util/hooks/apr_hooks.c b/libs/apr-util/hooks/apr_hooks.c deleted file mode 100644 index 776bc884e74..00000000000 --- a/libs/apr-util/hooks/apr_hooks.c +++ /dev/null @@ -1,404 +0,0 @@ -/* Copyright 2000-2005 The Apache Software Foundation or its licensors, as - * applicable. - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -#include -#include -#include - -#include "apr_pools.h" -#include "apr_tables.h" -#include "apr.h" -#include "apr_hooks.h" -#include "apr_hash.h" -#include "apr_optional_hooks.h" -#include "apr_optional.h" -#define APR_WANT_MEMFUNC -#define APR_WANT_STRFUNC -#include "apr_want.h" - -#if 0 -#define apr_palloc(pool,size) malloc(size) -#endif - -APU_DECLARE_DATA apr_pool_t *apr_hook_global_pool = NULL; -APU_DECLARE_DATA int apr_hook_debug_enabled = 0; -APU_DECLARE_DATA const char *apr_hook_debug_current = NULL; - -/** @deprecated @see apr_hook_global_pool */ -APU_DECLARE_DATA apr_pool_t *apr_global_hook_pool = NULL; - -/** @deprecated @see apr_hook_debug_enabled */ -APU_DECLARE_DATA int apr_debug_module_hooks = 0; - -/** @deprecated @see apr_hook_debug_current */ -APU_DECLARE_DATA const char *apr_current_hooking_module = NULL; - -/* NB: This must echo the LINK_##name structure */ -typedef struct -{ - void (*dummy)(void *); - const char *szName; - const char * const *aszPredecessors; - const char * const *aszSuccessors; - int nOrder; -} TSortData; - -typedef struct tsort_ -{ - void *pData; - int nPredecessors; - struct tsort_ **ppPredecessors; - struct tsort_ *pNext; -} TSort; - -#ifdef NETWARE -#include "apr_private.h" -#define get_apd APP_DATA* apd = (APP_DATA*)get_app_data(gLibId); -#define s_aHooksToSort ((apr_array_header_t *)(apd->gs_aHooksToSort)) -#define s_phOptionalHooks ((apr_hash_t *)(apd->gs_phOptionalHooks)) -#define s_phOptionalFunctions ((apr_hash_t *)(apd->gs_phOptionalFunctions)) -#endif - -static int crude_order(const void *a_,const void *b_) -{ - const TSortData *a=a_; - const TSortData *b=b_; - - return a->nOrder-b->nOrder; -} - -static TSort *prepare(apr_pool_t *p,TSortData *pItems,int nItems) -{ - TSort *pData=apr_palloc(p,nItems*sizeof *pData); - int n; - - qsort(pItems,nItems,sizeof *pItems,crude_order); - for(n=0 ; n < nItems ; ++n) { - pData[n].nPredecessors=0; - pData[n].ppPredecessors=apr_pcalloc(p,nItems*sizeof *pData[n].ppPredecessors); - pData[n].pNext=NULL; - pData[n].pData=&pItems[n]; - } - - for(n=0 ; n < nItems ; ++n) { - int i,k; - - for(i=0 ; pItems[n].aszPredecessors && pItems[n].aszPredecessors[i] ; ++i) - for(k=0 ; k < nItems ; ++k) - if(!strcmp(pItems[k].szName,pItems[n].aszPredecessors[i])) { - int l; - - for(l=0 ; l < pData[n].nPredecessors ; ++l) - if(pData[n].ppPredecessors[l] == &pData[k]) - goto got_it; - pData[n].ppPredecessors[pData[n].nPredecessors]=&pData[k]; - ++pData[n].nPredecessors; - got_it: - break; - } - for(i=0 ; pItems[n].aszSuccessors && pItems[n].aszSuccessors[i] ; ++i) - for(k=0 ; k < nItems ; ++k) - if(!strcmp(pItems[k].szName,pItems[n].aszSuccessors[i])) { - int l; - - for(l=0 ; l < pData[k].nPredecessors ; ++l) - if(pData[k].ppPredecessors[l] == &pData[n]) - goto got_it2; - pData[k].ppPredecessors[pData[k].nPredecessors]=&pData[n]; - ++pData[k].nPredecessors; - got_it2: - break; - } - } - - return pData; -} - -/* Topologically sort, dragging out-of-order items to the front. Note that - this tends to preserve things that want to be near the front better, and - changing that behaviour might compromise some of Apache's behaviour (in - particular, mod_log_forensic might otherwise get pushed to the end, and - core.c's log open function used to end up at the end when pushing items - to the back was the methedology). Also note that the algorithm could - go back to its original simplicity by sorting from the back instead of - the front. -*/ -static TSort *tsort(TSort *pData,int nItems) -{ - int nTotal; - TSort *pHead=NULL; - TSort *pTail=NULL; - - for(nTotal=0 ; nTotal < nItems ; ++nTotal) { - int n,i,k; - - for(n=0 ; ; ++n) { - if(n == nItems) - assert(0); /* we have a loop... */ - if(!pData[n].pNext) { - if(pData[n].nPredecessors) { - for(k=0 ; ; ++k) { - assert(k < nItems); - if(pData[n].ppPredecessors[k]) - break; - } - for(i=0 ; ; ++i) { - assert(i < nItems); - if(&pData[i] == pData[n].ppPredecessors[k]) { - n=i-1; - break; - } - } - } else - break; - } - } - if(pTail) - pTail->pNext=&pData[n]; - else - pHead=&pData[n]; - pTail=&pData[n]; - pTail->pNext=pTail; /* fudge it so it looks linked */ - for(i=0 ; i < nItems ; ++i) - for(k=0 ; k < nItems ; ++k) - if(pData[i].ppPredecessors[k] == &pData[n]) { - --pData[i].nPredecessors; - pData[i].ppPredecessors[k]=NULL; - break; - } - } - if (pTail) { - pTail->pNext = NULL; /* unfudge the tail */ - } - return pHead; -} - -static apr_array_header_t *sort_hook(apr_array_header_t *pHooks, - const char *szName) -{ - apr_pool_t *p; - TSort *pSort; - apr_array_header_t *pNew; - int n; - - apr_pool_create(&p, apr_hook_global_pool); - pSort=prepare(p,(TSortData *)pHooks->elts,pHooks->nelts); - pSort=tsort(pSort,pHooks->nelts); - pNew=apr_array_make(apr_hook_global_pool,pHooks->nelts,sizeof(TSortData)); - if(apr_hook_debug_enabled) - printf("Sorting %s:",szName); - for(n=0 ; pSort ; pSort=pSort->pNext,++n) { - TSortData *pHook; - assert(n < pHooks->nelts); - pHook=apr_array_push(pNew); - memcpy(pHook,pSort->pData,sizeof *pHook); - if(apr_hook_debug_enabled) - printf(" %s",pHook->szName); - } - if(apr_hook_debug_enabled) - fputc('\n',stdout); - return pNew; -} - -#ifndef NETWARE -static apr_array_header_t *s_aHooksToSort; -#endif - -typedef struct -{ - const char *szHookName; - apr_array_header_t **paHooks; -} HookSortEntry; - -APU_DECLARE(void) apr_hook_sort_register(const char *szHookName, - apr_array_header_t **paHooks) -{ -#ifdef NETWARE - get_apd -#endif - HookSortEntry *pEntry; - - if(!s_aHooksToSort) - s_aHooksToSort=apr_array_make(apr_hook_global_pool,1,sizeof(HookSortEntry)); - pEntry=apr_array_push(s_aHooksToSort); - pEntry->szHookName=szHookName; - pEntry->paHooks=paHooks; -} - -APU_DECLARE(void) apr_hook_sort_all(void) -{ -#ifdef NETWARE - get_apd -#endif - int n; - - for(n=0 ; n < s_aHooksToSort->nelts ; ++n) { - HookSortEntry *pEntry=&((HookSortEntry *)s_aHooksToSort->elts)[n]; - *pEntry->paHooks=sort_hook(*pEntry->paHooks,pEntry->szHookName); - } -} - -#ifndef NETWARE -static apr_hash_t *s_phOptionalHooks; -static apr_hash_t *s_phOptionalFunctions; -#endif - -APU_DECLARE(void) apr_hook_deregister_all(void) -{ -#ifdef NETWARE - get_apd -#endif - int n; - - for(n=0 ; n < s_aHooksToSort->nelts ; ++n) { - HookSortEntry *pEntry=&((HookSortEntry *)s_aHooksToSort->elts)[n]; - *pEntry->paHooks=NULL; - } - s_aHooksToSort=NULL; - s_phOptionalHooks=NULL; - s_phOptionalFunctions=NULL; -} - -APU_DECLARE(void) apr_hook_debug_show(const char *szName, - const char * const *aszPre, - const char * const *aszSucc) -{ - int nFirst; - - printf(" Hooked %s",szName); - if(aszPre) { - fputs(" pre(",stdout); - nFirst=1; - while(*aszPre) { - if(!nFirst) - fputc(',',stdout); - nFirst=0; - fputs(*aszPre,stdout); - ++aszPre; - } - fputc(')',stdout); - } - if(aszSucc) { - fputs(" succ(",stdout); - nFirst=1; - while(*aszSucc) { - if(!nFirst) - fputc(',',stdout); - nFirst=0; - fputs(*aszSucc,stdout); - ++aszSucc; - } - fputc(')',stdout); - } - fputc('\n',stdout); -} - -/* Optional hook support */ - -APR_DECLARE_EXTERNAL_HOOK(apr,APU,void,_optional,(void)) - -APU_DECLARE(apr_array_header_t *) apr_optional_hook_get(const char *szName) -{ -#ifdef NETWARE - get_apd -#endif - apr_array_header_t **ppArray; - - if(!s_phOptionalHooks) - return NULL; - ppArray=apr_hash_get(s_phOptionalHooks,szName,strlen(szName)); - if(!ppArray) - return NULL; - return *ppArray; -} - -APU_DECLARE(void) apr_optional_hook_add(const char *szName,void (*pfn)(void), - const char * const *aszPre, - const char * const *aszSucc,int nOrder) -{ -#ifdef NETWARE - get_apd -#endif - apr_array_header_t *pArray=apr_optional_hook_get(szName); - apr_LINK__optional_t *pHook; - - if(!pArray) { - apr_array_header_t **ppArray; - - pArray=apr_array_make(apr_hook_global_pool,1, - sizeof(apr_LINK__optional_t)); - if(!s_phOptionalHooks) - s_phOptionalHooks=apr_hash_make(apr_hook_global_pool); - ppArray=apr_palloc(apr_hook_global_pool,sizeof *ppArray); - *ppArray=pArray; - apr_hash_set(s_phOptionalHooks,szName,strlen(szName),ppArray); - apr_hook_sort_register(szName,ppArray); - } - pHook=apr_array_push(pArray); - pHook->pFunc=pfn; - pHook->aszPredecessors=aszPre; - pHook->aszSuccessors=aszSucc; - pHook->nOrder=nOrder; - pHook->szName=apr_hook_debug_current; - if(apr_hook_debug_enabled) - apr_hook_debug_show(szName,aszPre,aszSucc); -} - -/* optional function support */ - -APU_DECLARE(apr_opt_fn_t *) apr_dynamic_fn_retrieve(const char *szName) -{ -#ifdef NETWARE - get_apd -#endif - if(!s_phOptionalFunctions) - return NULL; - return (void(*)(void))apr_hash_get(s_phOptionalFunctions,szName,strlen(szName)); -} - -/* Deprecated */ -APU_DECLARE_NONSTD(void) apr_dynamic_fn_register(const char *szName, - apr_opt_fn_t *pfn) -{ -#ifdef NETWARE - get_apd -#endif - if(!s_phOptionalFunctions) - s_phOptionalFunctions=apr_hash_make(apr_hook_global_pool); - apr_hash_set(s_phOptionalFunctions,szName,strlen(szName),(void *)pfn); -} - -#if 0 -void main() -{ - const char *aszAPre[]={"b","c",NULL}; - const char *aszBPost[]={"a",NULL}; - const char *aszCPost[]={"b",NULL}; - TSortData t1[]= - { - { "a",aszAPre,NULL }, - { "b",NULL,aszBPost }, - { "c",NULL,aszCPost } - }; - TSort *pResult; - - pResult=prepare(t1,3); - pResult=tsort(pResult,3); - - for( ; pResult ; pResult=pResult->pNext) - printf("%s\n",pResult->pData->szName); -} -#endif diff --git a/libs/apr-util/include/apr_anylock.h b/libs/apr-util/include/apr_anylock.h deleted file mode 100644 index 6b724de2c3d..00000000000 --- a/libs/apr-util/include/apr_anylock.h +++ /dev/null @@ -1,128 +0,0 @@ -/* Copyright 2000-2005 The Apache Software Foundation or its licensors, as - * applicable. - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -/** - * @file apr_anylock.h - * @brief APR-Util transparent any lock flavor wrapper - */ -#ifndef APR_ANYLOCK_H -#define APR_ANYLOCK_H - -#include "apr_proc_mutex.h" -#include "apr_thread_mutex.h" -#include "apr_thread_rwlock.h" - -/** Structure that may contain any APR lock type */ -typedef struct apr_anylock_t { - /** Indicates what type of lock is in lock */ - enum tm_lock { - apr_anylock_none, /**< None */ - apr_anylock_procmutex, /**< Process-based */ - apr_anylock_threadmutex, /**< Thread-based */ - apr_anylock_readlock, /**< Read lock */ - apr_anylock_writelock /**< Write lock */ - } type; - /** Union of all possible APR locks */ - union apr_anylock_u_t { - apr_proc_mutex_t *pm; /**< Process mutex */ -#if APR_HAS_THREADS - apr_thread_mutex_t *tm; /**< Thread mutex */ - apr_thread_rwlock_t *rw; /**< Read-write lock */ -#endif - } lock; -} apr_anylock_t; - -#if APR_HAS_THREADS - -/** Lock an apr_anylock_t structure */ -#define APR_ANYLOCK_LOCK(lck) \ - (((lck)->type == apr_anylock_none) \ - ? APR_SUCCESS \ - : (((lck)->type == apr_anylock_threadmutex) \ - ? apr_thread_mutex_lock((lck)->lock.tm) \ - : (((lck)->type == apr_anylock_procmutex) \ - ? apr_proc_mutex_lock((lck)->lock.pm) \ - : (((lck)->type == apr_anylock_readlock) \ - ? apr_thread_rwlock_rdlock((lck)->lock.rw) \ - : (((lck)->type == apr_anylock_writelock) \ - ? apr_thread_rwlock_wrlock((lck)->lock.rw) \ - : APR_EINVAL))))) - -#else /* APR_HAS_THREADS */ - -#define APR_ANYLOCK_LOCK(lck) \ - (((lck)->type == apr_anylock_none) \ - ? APR_SUCCESS \ - : (((lck)->type == apr_anylock_procmutex) \ - ? apr_proc_mutex_lock((lck)->lock.pm) \ - : APR_EINVAL)) - -#endif /* APR_HAS_THREADS */ - -#if APR_HAS_THREADS - -/** Try to lock an apr_anylock_t structure */ -#define APR_ANYLOCK_TRYLOCK(lck) \ - (((lck)->type == apr_anylock_none) \ - ? APR_SUCCESS \ - : (((lck)->type == apr_anylock_threadmutex) \ - ? apr_thread_mutex_trylock((lck)->lock.tm) \ - : (((lck)->type == apr_anylock_procmutex) \ - ? apr_proc_mutex_trylock((lck)->lock.pm) \ - : (((lck)->type == apr_anylock_readlock) \ - ? apr_thread_rwlock_tryrdlock((lck)->lock.rw) \ - : (((lck)->type == apr_anylock_writelock) \ - ? apr_thread_rwlock_trywrlock((lck)->lock.rw) \ - : APR_EINVAL))))) - -#else /* APR_HAS_THREADS */ - -#define APR_ANYLOCK_TRYLOCK(lck) \ - (((lck)->type == apr_anylock_none) \ - ? APR_SUCCESS \ - : (((lck)->type == apr_anylock_procmutex) \ - ? apr_proc_mutex_trylock((lck)->lock.pm) \ - : APR_EINVAL)) - -#endif /* APR_HAS_THREADS */ - -#if APR_HAS_THREADS - -/** Unlock an apr_anylock_t structure */ -#define APR_ANYLOCK_UNLOCK(lck) \ - (((lck)->type == apr_anylock_none) \ - ? APR_SUCCESS \ - : (((lck)->type == apr_anylock_threadmutex) \ - ? apr_thread_mutex_unlock((lck)->lock.tm) \ - : (((lck)->type == apr_anylock_procmutex) \ - ? apr_proc_mutex_unlock((lck)->lock.pm) \ - : ((((lck)->type == apr_anylock_readlock) || \ - ((lck)->type == apr_anylock_writelock)) \ - ? apr_thread_rwlock_unlock((lck)->lock.rw) \ - : APR_EINVAL)))) - -#else /* APR_HAS_THREADS */ - -#define APR_ANYLOCK_UNLOCK(lck) \ - (((lck)->type == apr_anylock_none) \ - ? APR_SUCCESS \ - : (((lck)->type == apr_anylock_procmutex) \ - ? apr_proc_mutex_unlock((lck)->lock.pm) \ - : APR_EINVAL)) - -#endif /* APR_HAS_THREADS */ - -#endif /* !APR_ANYLOCK_H */ diff --git a/libs/apr-util/include/apr_base64.h b/libs/apr-util/include/apr_base64.h deleted file mode 100644 index d26aeb2d227..00000000000 --- a/libs/apr-util/include/apr_base64.h +++ /dev/null @@ -1,111 +0,0 @@ -/* Copyright 2000-2005 The Apache Software Foundation or its licensors, as - * applicable. - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - * The apr_vsnprintf/apr_snprintf functions are based on, and used with the - * permission of, the SIO stdio-replacement strx_* functions by Panos - * Tsirigotis for xinetd. - */ - -/** - * @file apr_base64.h - * @brief APR-UTIL Base64 Encoding - */ -#ifndef APR_BASE64_H -#define APR_BASE64_H - -#include "apu.h" -#include "apr_general.h" - -#ifdef __cplusplus -extern "C" { -#endif - -/** - * @defgroup APR_Util_Base64 Base64 Encoding - * @ingroup APR_Util - * @{ - */ - -/* Simple BASE64 encode/decode functions. - * - * As we might encode binary strings, hence we require the length of - * the incoming plain source. And return the length of what we decoded. - * - * The decoding function takes any non valid char (i.e. whitespace, \0 - * or anything non A-Z,0-9 etc as terminal. - * - * plain strings/binary sequences are not assumed '\0' terminated. Encoded - * strings are neither. But probably should. - * - */ - -/** - * Given the length of an un-encrypted string, get the length of the - * encrypted string. - * @param len the length of an unencrypted string. - * @return the length of the string after it is encrypted - */ -APU_DECLARE(int) apr_base64_encode_len(int len); - -/** - * Encode a text string using base64encoding. - * @param coded_dst The destination string for the encoded string. - * @param plain_src The original string in plain text - * @param len_plain_src The length of the plain text string - * @return the length of the encoded string - */ -APU_DECLARE(int) apr_base64_encode(char * coded_dst, const char *plain_src, - int len_plain_src); - -/** - * Encode an EBCDIC string using base64encoding. - * @param coded_dst The destination string for the encoded string. - * @param plain_src The original string in plain text - * @param len_plain_src The length of the plain text string - * @return the length of the encoded string - */ -APU_DECLARE(int) apr_base64_encode_binary(char * coded_dst, - const unsigned char *plain_src, - int len_plain_src); - -/** - * Determine the length of a plain text string given the encoded version - * @param coded_src The encoded string - * @return the length of the plain text string - */ -APU_DECLARE(int) apr_base64_decode_len(const char * coded_src); - -/** - * Decode a string to plain text - * @param plain_dst The destination string for the plain text - * @param coded_src The encoded string - * @return the length of the plain text string - */ -APU_DECLARE(int) apr_base64_decode(char * plain_dst, const char *coded_src); - -/** - * Decode an EBCDIC string to plain text - * @param plain_dst The destination string for the plain text - * @param coded_src The encoded string - * @return the length of the plain text string - */ -APU_DECLARE(int) apr_base64_decode_binary(unsigned char * plain_dst, - const char *coded_src); - -/** @} */ -#ifdef __cplusplus -} -#endif - -#endif /* !APR_BASE64_H */ diff --git a/libs/apr-util/include/apr_buckets.h b/libs/apr-util/include/apr_buckets.h deleted file mode 100644 index 01f6743d97e..00000000000 --- a/libs/apr-util/include/apr_buckets.h +++ /dev/null @@ -1,1464 +0,0 @@ -/* Copyright 2000-2005 The Apache Software Foundation or its licensors, as - * applicable. - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ -/** - * @file apr_buckets.h - * @brief APR-UTIL Buckets/Bucket Brigades - */ - -#ifndef APR_BUCKETS_H -#define APR_BUCKETS_H - -#if defined(APR_BUCKET_DEBUG) && !defined(APR_RING_DEBUG) -#define APR_RING_DEBUG -#endif - -#include "apu.h" -#include "apr_network_io.h" -#include "apr_file_io.h" -#include "apr_general.h" -#include "apr_mmap.h" -#include "apr_errno.h" -#include "apr_ring.h" -#include "apr.h" -#if APR_HAVE_SYS_UIO_H -#include /* for struct iovec */ -#endif -#if APR_HAVE_STDARG_H -#include -#endif - -#ifdef __cplusplus -extern "C" { -#endif - -/** - * @defgroup APR_Util_Bucket_Brigades Bucket Brigades - * @ingroup APR_Util - * @{ - */ - -/** default bucket buffer size - 8KB minus room for memory allocator headers */ -#define APR_BUCKET_BUFF_SIZE 8000 - -/** Determines how a bucket or brigade should be read */ -typedef enum { - APR_BLOCK_READ, /**< block until data becomes available */ - APR_NONBLOCK_READ /**< return immediately if no data is available */ -} apr_read_type_e; - -/** - * The one-sentence buzzword-laden overview: Bucket brigades represent - * a complex data stream that can be passed through a layered IO - * system without unnecessary copying. A longer overview follows... - * - * A bucket brigade is a doubly linked list (ring) of buckets, so we - * aren't limited to inserting at the front and removing at the end. - * Buckets are only passed around as members of a brigade, although - * singleton buckets can occur for short periods of time. - * - * Buckets are data stores of various types. They can refer to data in - * memory, or part of a file or mmap area, or the output of a process, - * etc. Buckets also have some type-dependent accessor functions: - * read, split, copy, setaside, and destroy. - * - * read returns the address and size of the data in the bucket. If the - * data isn't in memory then it is read in and the bucket changes type - * so that it can refer to the new location of the data. If all the - * data doesn't fit in the bucket then a new bucket is inserted into - * the brigade to hold the rest of it. - * - * split divides the data in a bucket into two regions. After a split - * the original bucket refers to the first part of the data and a new - * bucket inserted into the brigade after the original bucket refers - * to the second part of the data. Reference counts are maintained as - * necessary. - * - * setaside ensures that the data in the bucket has a long enough - * lifetime. Sometimes it is convenient to create a bucket referring - * to data on the stack in the expectation that it will be consumed - * (output to the network) before the stack is unwound. If that - * expectation turns out not to be valid, the setaside function is - * called to move the data somewhere safer. - * - * copy makes a duplicate of the bucket structure as long as it's - * possible to have multiple references to a single copy of the - * data itself. Not all bucket types can be copied. - * - * destroy maintains the reference counts on the resources used by a - * bucket and frees them if necessary. - * - * Note: all of the above functions have wrapper macros (apr_bucket_read(), - * apr_bucket_destroy(), etc), and those macros should be used rather - * than using the function pointers directly. - * - * To write a bucket brigade, they are first made into an iovec, so that we - * don't write too little data at one time. Currently we ignore compacting the - * buckets into as few buckets as possible, but if we really want good - * performance, then we need to compact the buckets before we convert to an - * iovec, or possibly while we are converting to an iovec. - */ - -/* - * Forward declaration of the main types. - */ - -/** @see apr_bucket_brigade */ -typedef struct apr_bucket_brigade apr_bucket_brigade; -/** @see apr_bucket */ -typedef struct apr_bucket apr_bucket; -/** @see apr_bucket_alloc_t */ -typedef struct apr_bucket_alloc_t apr_bucket_alloc_t; - -/** @see apr_bucket_type_t */ -typedef struct apr_bucket_type_t apr_bucket_type_t; - -/** - * Basic bucket type - */ -struct apr_bucket_type_t { - /** - * The name of the bucket type - */ - const char *name; - /** - * The number of functions this bucket understands. Can not be less than - * five. - */ - int num_func; - /** - * Whether the bucket contains metadata (ie, information that - * describes the regular contents of the brigade). The metadata - * is not returned by apr_bucket_read() and is not indicated by - * the ->length of the apr_bucket itself. In other words, an - * empty bucket is safe to arbitrarily remove if and only if it - * contains no metadata. In this sense, "data" is just raw bytes - * that are the "content" of the brigade and "metadata" describes - * that data but is not a proper part of it. - */ - enum { - /** This bucket type represents actual data to send to the client. */ - APR_BUCKET_DATA = 0, - /** This bucket type represents metadata. */ - APR_BUCKET_METADATA = 1 - } is_metadata; - /** - * Free the private data and any resources used by the bucket (if they - * aren't shared with another bucket). This function is required to be - * implemented for all bucket types, though it might be a no-op on some - * of them (namely ones that never allocate any private data structures). - * @param data The private data pointer from the bucket to be destroyed - */ - void (*destroy)(void *data); - - /** - * Read the data from the bucket. This is required to be implemented - * for all bucket types. - * @param b The bucket to read from - * @param str A place to store the data read. Allocation should only be - * done if absolutely necessary. - * @param len The amount of data read. - * @param block Should this read function block if there is more data that - * cannot be read immediately. - */ - apr_status_t (*read)(apr_bucket *b, const char **str, apr_size_t *len, - apr_read_type_e block); - - /** - * Make it possible to set aside the data for at least as long as the - * given pool. Buckets containing data that could potentially die before - * this pool (e.g. the data resides on the stack, in a child pool of - * the given pool, or in a disjoint pool) must somehow copy, shift, or - * transform the data to have the proper lifetime. - * @param e The bucket to convert - * @remark Some bucket types contain data that will always outlive the - * bucket itself. For example no data (EOS and FLUSH), or the data - * resides in global, constant memory (IMMORTAL), or the data is on - * the heap (HEAP). For these buckets, apr_bucket_setaside_noop can - * be used. - */ - apr_status_t (*setaside)(apr_bucket *e, apr_pool_t *pool); - - /** - * Split one bucket in two at the specified position by duplicating - * the bucket structure (not the data) and modifying any necessary - * start/end/offset information. If it's not possible to do this - * for the bucket type (perhaps the length of the data is indeterminate, - * as with pipe and socket buckets), then APR_ENOTIMPL is returned. - * @param e The bucket to split - * @param point The offset of the first byte in the new bucket - */ - apr_status_t (*split)(apr_bucket *e, apr_size_t point); - - /** - * Copy the bucket structure (not the data), assuming that this is - * possible for the bucket type. If it's not, APR_ENOTIMPL is returned. - * @param e The bucket to copy - * @param c Returns a pointer to the new bucket - */ - apr_status_t (*copy)(apr_bucket *e, apr_bucket **c); - -}; - -/** - * apr_bucket structures are allocated on the malloc() heap and - * their lifetime is controlled by the parent apr_bucket_brigade - * structure. Buckets can move from one brigade to another e.g. by - * calling APR_BRIGADE_CONCAT(). In general the data in a bucket has - * the same lifetime as the bucket and is freed when the bucket is - * destroyed; if the data is shared by more than one bucket (e.g. - * after a split) the data is freed when the last bucket goes away. - */ -struct apr_bucket { - /** Links to the rest of the brigade */ - APR_RING_ENTRY(apr_bucket) link; - /** The type of bucket. */ - const apr_bucket_type_t *type; - /** The length of the data in the bucket. This could have been implemented - * with a function, but this is an optimization, because the most - * common thing to do will be to get the length. If the length is unknown, - * the value of this field will be (apr_size_t)(-1). - */ - apr_size_t length; - /** The start of the data in the bucket relative to the private base - * pointer. The vast majority of bucket types allow a fixed block of - * data to be referenced by multiple buckets, each bucket pointing to - * a different segment of the data. That segment starts at base+start - * and ends at base+start+length. - * If the length == (apr_size_t)(-1), then start == -1. - */ - apr_off_t start; - /** type-dependent data hangs off this pointer */ - void *data; - /** - * Pointer to function used to free the bucket. This function should - * always be defined and it should be consistent with the memory - * function used to allocate the bucket. For example, if malloc() is - * used to allocate the bucket, this pointer should point to free(). - * @param e Pointer to the bucket being freed - */ - void (*free)(void *e); - /** The freelist from which this bucket was allocated */ - apr_bucket_alloc_t *list; -}; - -/** A list of buckets */ -struct apr_bucket_brigade { - /** The pool to associate the brigade with. The data is not allocated out - * of the pool, but a cleanup is registered with this pool. If the - * brigade is destroyed by some mechanism other than pool destruction, - * the destroying function is responsible for killing the cleanup. - */ - apr_pool_t *p; - /** The buckets in the brigade are on this list. */ - /* - * The apr_bucket_list structure doesn't actually need a name tag - * because it has no existence independent of struct apr_bucket_brigade; - * the ring macros are designed so that you can leave the name tag - * argument empty in this situation but apparently the Windows compiler - * doesn't like that. - */ - APR_RING_HEAD(apr_bucket_list, apr_bucket) list; - /** The freelist from which this bucket was allocated */ - apr_bucket_alloc_t *bucket_alloc; -}; - - -/** - * Function called when a brigade should be flushed - */ -typedef apr_status_t (*apr_brigade_flush)(apr_bucket_brigade *bb, void *ctx); - -/* - * define APR_BUCKET_DEBUG if you want your brigades to be checked for - * validity at every possible instant. this will slow your code down - * substantially but is a very useful debugging tool. - */ -#ifdef APR_BUCKET_DEBUG - -#define APR_BRIGADE_CHECK_CONSISTENCY(b) \ - APR_RING_CHECK_CONSISTENCY(&(b)->list, apr_bucket, link) - -#define APR_BUCKET_CHECK_CONSISTENCY(e) \ - APR_RING_CHECK_ELEM_CONSISTENCY((e), apr_bucket, link) - -#else -/** - * checks the ring pointers in a bucket brigade for consistency. an - * abort() will be triggered if any inconsistencies are found. - * note: this is a no-op unless APR_BUCKET_DEBUG is defined. - * @param b The brigade - */ -#define APR_BRIGADE_CHECK_CONSISTENCY(b) -/** - * checks the brigade a bucket is in for ring consistency. an - * abort() will be triggered if any inconsistencies are found. - * note: this is a no-op unless APR_BUCKET_DEBUG is defined. - * @param e The bucket - */ -#define APR_BUCKET_CHECK_CONSISTENCY(e) -#endif - - -/** - * Wrappers around the RING macros to reduce the verbosity of the code - * that handles bucket brigades. - */ -/** - * The magic pointer value that indicates the head of the brigade - * @remark This is used to find the beginning and end of the brigade, eg: - *
- *      while (e != APR_BRIGADE_SENTINEL(b)) {
- *          ...
- *          e = APR_BUCKET_NEXT(e);
- *      }
- * 
- * @param b The brigade - * @return The magic pointer value - */ -#define APR_BRIGADE_SENTINEL(b) APR_RING_SENTINEL(&(b)->list, apr_bucket, link) - -/** - * Determine if the bucket brigade is empty - * @param b The brigade to check - * @return true or false - */ -#define APR_BRIGADE_EMPTY(b) APR_RING_EMPTY(&(b)->list, apr_bucket, link) - -/** - * Return the first bucket in a brigade - * @param b The brigade to query - * @return The first bucket in the brigade - */ -#define APR_BRIGADE_FIRST(b) APR_RING_FIRST(&(b)->list) -/** - * Return the last bucket in a brigade - * @param b The brigade to query - * @return The last bucket in the brigade - */ -#define APR_BRIGADE_LAST(b) APR_RING_LAST(&(b)->list) - -/** - * Insert a list of buckets at the front of a brigade - * @param b The brigade to add to - * @param e The first bucket in a list of buckets to insert - */ -#define APR_BRIGADE_INSERT_HEAD(b, e) do { \ - apr_bucket *ap__b = (e); \ - APR_RING_INSERT_HEAD(&(b)->list, ap__b, apr_bucket, link); \ - APR_BRIGADE_CHECK_CONSISTENCY((b)); \ - } while (0) - -/** - * Insert a list of buckets at the end of a brigade - * @param b The brigade to add to - * @param e The first bucket in a list of buckets to insert - */ -#define APR_BRIGADE_INSERT_TAIL(b, e) do { \ - apr_bucket *ap__b = (e); \ - APR_RING_INSERT_TAIL(&(b)->list, ap__b, apr_bucket, link); \ - APR_BRIGADE_CHECK_CONSISTENCY((b)); \ - } while (0) - -/** - * Concatenate brigade b onto the end of brigade a, leaving brigade b empty - * @param a The first brigade - * @param b The second brigade - */ -#define APR_BRIGADE_CONCAT(a, b) do { \ - APR_RING_CONCAT(&(a)->list, &(b)->list, apr_bucket, link); \ - APR_BRIGADE_CHECK_CONSISTENCY((a)); \ - } while (0) - -/** - * Prepend brigade b onto the beginning of brigade a, leaving brigade b empty - * @param a The first brigade - * @param b The second brigade - */ -#define APR_BRIGADE_PREPEND(a, b) do { \ - APR_RING_PREPEND(&(a)->list, &(b)->list, apr_bucket, link); \ - APR_BRIGADE_CHECK_CONSISTENCY((a)); \ - } while (0) - -/** - * Insert a list of buckets before a specified bucket - * @param a The bucket to insert before - * @param b The buckets to insert - */ -#define APR_BUCKET_INSERT_BEFORE(a, b) do { \ - apr_bucket *ap__a = (a), *ap__b = (b); \ - APR_RING_INSERT_BEFORE(ap__a, ap__b, link); \ - APR_BUCKET_CHECK_CONSISTENCY(ap__a); \ - } while (0) - -/** - * Insert a list of buckets after a specified bucket - * @param a The bucket to insert after - * @param b The buckets to insert - */ -#define APR_BUCKET_INSERT_AFTER(a, b) do { \ - apr_bucket *ap__a = (a), *ap__b = (b); \ - APR_RING_INSERT_AFTER(ap__a, ap__b, link); \ - APR_BUCKET_CHECK_CONSISTENCY(ap__a); \ - } while (0) - -/** - * Get the next bucket in the list - * @param e The current bucket - * @return The next bucket - */ -#define APR_BUCKET_NEXT(e) APR_RING_NEXT((e), link) -/** - * Get the previous bucket in the list - * @param e The current bucket - * @return The previous bucket - */ -#define APR_BUCKET_PREV(e) APR_RING_PREV((e), link) - -/** - * Remove a bucket from its bucket brigade - * @param e The bucket to remove - */ -#define APR_BUCKET_REMOVE(e) APR_RING_REMOVE((e), link) - -/** - * Initialize a new bucket's prev/next pointers - * @param e The bucket to initialize - */ -#define APR_BUCKET_INIT(e) APR_RING_ELEM_INIT((e), link) - -/** - * Determine if a bucket contains metadata. An empty bucket is - * safe to arbitrarily remove if and only if this is false. - * @param e The bucket to inspect - * @return true or false - */ -#define APR_BUCKET_IS_METADATA(e) ((e)->type->is_metadata) - -/** - * Determine if a bucket is a FLUSH bucket - * @param e The bucket to inspect - * @return true or false - */ -#define APR_BUCKET_IS_FLUSH(e) ((e)->type == &apr_bucket_type_flush) -/** - * Determine if a bucket is an EOS bucket - * @param e The bucket to inspect - * @return true or false - */ -#define APR_BUCKET_IS_EOS(e) ((e)->type == &apr_bucket_type_eos) -/** - * Determine if a bucket is a FILE bucket - * @param e The bucket to inspect - * @return true or false - */ -#define APR_BUCKET_IS_FILE(e) ((e)->type == &apr_bucket_type_file) -/** - * Determine if a bucket is a PIPE bucket - * @param e The bucket to inspect - * @return true or false - */ -#define APR_BUCKET_IS_PIPE(e) ((e)->type == &apr_bucket_type_pipe) -/** - * Determine if a bucket is a SOCKET bucket - * @param e The bucket to inspect - * @return true or false - */ -#define APR_BUCKET_IS_SOCKET(e) ((e)->type == &apr_bucket_type_socket) -/** - * Determine if a bucket is a HEAP bucket - * @param e The bucket to inspect - * @return true or false - */ -#define APR_BUCKET_IS_HEAP(e) ((e)->type == &apr_bucket_type_heap) -/** - * Determine if a bucket is a TRANSIENT bucket - * @param e The bucket to inspect - * @return true or false - */ -#define APR_BUCKET_IS_TRANSIENT(e) ((e)->type == &apr_bucket_type_transient) -/** - * Determine if a bucket is a IMMORTAL bucket - * @param e The bucket to inspect - * @return true or false - */ -#define APR_BUCKET_IS_IMMORTAL(e) ((e)->type == &apr_bucket_type_immortal) -#if APR_HAS_MMAP -/** - * Determine if a bucket is a MMAP bucket - * @param e The bucket to inspect - * @return true or false - */ -#define APR_BUCKET_IS_MMAP(e) ((e)->type == &apr_bucket_type_mmap) -#endif -/** - * Determine if a bucket is a POOL bucket - * @param e The bucket to inspect - * @return true or false - */ -#define APR_BUCKET_IS_POOL(e) ((e)->type == &apr_bucket_type_pool) - -/* - * General-purpose reference counting for the various bucket types. - * - * Any bucket type that keeps track of the resources it uses (i.e. - * most of them except for IMMORTAL, TRANSIENT, and EOS) needs to - * attach a reference count to the resource so that it can be freed - * when the last bucket that uses it goes away. Resource-sharing may - * occur because of bucket splits or buckets that refer to globally - * cached data. */ - -/** @see apr_bucket_refcount */ -typedef struct apr_bucket_refcount apr_bucket_refcount; -/** - * The structure used to manage the shared resource must start with an - * apr_bucket_refcount which is updated by the general-purpose refcount - * code. A pointer to the bucket-type-dependent private data structure - * can be cast to a pointer to an apr_bucket_refcount and vice versa. - */ -struct apr_bucket_refcount { - /** The number of references to this bucket */ - int refcount; -}; - -/* ***** Reference-counted bucket types ***** */ - -/** @see apr_bucket_heap */ -typedef struct apr_bucket_heap apr_bucket_heap; -/** - * A bucket referring to data allocated off the heap. - */ -struct apr_bucket_heap { - /** Number of buckets using this memory */ - apr_bucket_refcount refcount; - /** The start of the data actually allocated. This should never be - * modified, it is only used to free the bucket. - */ - char *base; - /** how much memory was allocated */ - apr_size_t alloc_len; - /** function to use to delete the data */ - void (*free_func)(void *data); -}; - -/** @see apr_bucket_pool */ -typedef struct apr_bucket_pool apr_bucket_pool; -/** - * A bucket referring to data allocated from a pool - */ -struct apr_bucket_pool { - /** The pool bucket must be able to be easily morphed to a heap - * bucket if the pool gets cleaned up before all references are - * destroyed. This apr_bucket_heap structure is populated automatically - * when the pool gets cleaned up, and subsequent calls to pool_read() - * will result in the apr_bucket in question being morphed into a - * regular heap bucket. (To avoid having to do many extra refcount - * manipulations and b->data manipulations, the apr_bucket_pool - * struct actually *contains* the apr_bucket_heap struct that it - * will become as its first element; the two share their - * apr_bucket_refcount members.) - */ - apr_bucket_heap heap; - /** The block of data actually allocated from the pool. - * Segments of this block are referenced by adjusting - * the start and length of the apr_bucket accordingly. - * This will be NULL after the pool gets cleaned up. - */ - const char *base; - /** The pool the data was allocated from. When the pool - * is cleaned up, this gets set to NULL as an indicator - * to pool_read() that the data is now on the heap and - * so it should morph the bucket into a regular heap - * bucket before continuing. - */ - apr_pool_t *pool; - /** The freelist this structure was allocated from, which is - * needed in the cleanup phase in order to allocate space on the heap - */ - apr_bucket_alloc_t *list; -}; - -#if APR_HAS_MMAP -/** @see apr_bucket_mmap */ -typedef struct apr_bucket_mmap apr_bucket_mmap; -/** - * A bucket referring to an mmap()ed file - */ -struct apr_bucket_mmap { - /** Number of buckets using this memory */ - apr_bucket_refcount refcount; - /** The mmap this sub_bucket refers to */ - apr_mmap_t *mmap; -}; -#endif - -/** @see apr_bucket_file */ -typedef struct apr_bucket_file apr_bucket_file; -/** - * A bucket referring to an file - */ -struct apr_bucket_file { - /** Number of buckets using this memory */ - apr_bucket_refcount refcount; - /** The file this bucket refers to */ - apr_file_t *fd; - /** The pool into which any needed structures should - * be created while reading from this file bucket */ - apr_pool_t *readpool; -#if APR_HAS_MMAP - /** Whether this bucket should be memory-mapped if - * a caller tries to read from it */ - int can_mmap; -#endif /* APR_HAS_MMAP */ -}; - -/** @see apr_bucket_structs */ -typedef union apr_bucket_structs apr_bucket_structs; -/** - * A union of all bucket structures so we know what - * the max size is. - */ -union apr_bucket_structs { - apr_bucket b; /**< Bucket */ - apr_bucket_heap heap; /**< Heap */ - apr_bucket_pool pool; /**< Pool */ -#if APR_HAS_MMAP - apr_bucket_mmap mmap; /**< MMap */ -#endif - apr_bucket_file file; /**< File */ -}; - -/** - * The amount that apr_bucket_alloc() should allocate in the common case. - * Note: this is twice as big as apr_bucket_structs to allow breathing - * room for third-party bucket types. - */ -#define APR_BUCKET_ALLOC_SIZE APR_ALIGN_DEFAULT(2*sizeof(apr_bucket_structs)) - -/* ***** Bucket Brigade Functions ***** */ -/** - * Create a new bucket brigade. The bucket brigade is originally empty. - * @param p The pool to associate with the brigade. Data is not allocated out - * of the pool, but a cleanup is registered. - * @param list The bucket allocator to use - * @return The empty bucket brigade - */ -APU_DECLARE(apr_bucket_brigade *) apr_brigade_create(apr_pool_t *p, - apr_bucket_alloc_t *list); - -/** - * destroy an entire bucket brigade. This includes destroying all of the - * buckets within the bucket brigade's bucket list. - * @param b The bucket brigade to destroy - */ -APU_DECLARE(apr_status_t) apr_brigade_destroy(apr_bucket_brigade *b); - -/** - * empty out an entire bucket brigade. This includes destroying all of the - * buckets within the bucket brigade's bucket list. This is similar to - * apr_brigade_destroy(), except that it does not deregister the brigade's - * pool cleanup function. - * @param data The bucket brigade to clean up - * @remark Generally, you should use apr_brigade_destroy(). This function - * can be useful in situations where you have a single brigade that - * you wish to reuse many times by destroying all of the buckets in - * the brigade and putting new buckets into it later. - */ -APU_DECLARE(apr_status_t) apr_brigade_cleanup(void *data); - -/** - * Split a bucket brigade into two, such that the given bucket is the - * first in the new bucket brigade. This function is useful when a - * filter wants to pass only the initial part of a brigade to the next - * filter. - * @param b The brigade to split - * @param e The first element of the new brigade - * @return The new brigade - */ -APU_DECLARE(apr_bucket_brigade *) apr_brigade_split(apr_bucket_brigade *b, - apr_bucket *e); - -/** - * Partition a bucket brigade at a given offset (in bytes from the start of - * the brigade). This is useful whenever a filter wants to use known ranges - * of bytes from the brigade; the ranges can even overlap. - * @param b The brigade to partition - * @param point The offset at which to partition the brigade - * @param after_point Returns a pointer to the first bucket after the partition - * @return APR_SUCCESS on success, APR_INCOMPLETE if the contents of the - * brigade were shorter than @a point, or an error code. - * @remark if APR_INCOMPLETE is returned, @a after_point will be set to - * the brigade sentinel. - */ -APU_DECLARE(apr_status_t) apr_brigade_partition(apr_bucket_brigade *b, - apr_off_t point, - apr_bucket **after_point); - -/** - * Return the total length of the brigade. - * @param bb The brigade to compute the length of - * @param read_all Read unknown-length buckets to force a size - * @param length Returns the length of the brigade, or -1 if the brigade has - * buckets of indeterminate length and read_all is 0. - */ -APU_DECLARE(apr_status_t) apr_brigade_length(apr_bucket_brigade *bb, - int read_all, - apr_off_t *length); - -/** - * Take a bucket brigade and store the data in a flat char* - * @param bb The bucket brigade to create the char* from - * @param c The char* to write into - * @param len The maximum length of the char array. On return, it is the - * actual length of the char array. - */ -APU_DECLARE(apr_status_t) apr_brigade_flatten(apr_bucket_brigade *bb, - char *c, - apr_size_t *len); - -/** - * Creates a pool-allocated string representing a flat bucket brigade - * @param bb The bucket brigade to create the char array from - * @param c On return, the allocated char array - * @param len On return, the length of the char array. - * @param pool The pool to allocate the string from. - */ -APU_DECLARE(apr_status_t) apr_brigade_pflatten(apr_bucket_brigade *bb, - char **c, - apr_size_t *len, - apr_pool_t *pool); - -/** - * Split a brigade to represent one LF line. - * @param bbOut The bucket brigade that will have the LF line appended to. - * @param bbIn The input bucket brigade to search for a LF-line. - * @param block The blocking mode to be used to split the line. - * @param maxbytes The maximum bytes to read. If this many bytes are seen - * without a LF, the brigade will contain a partial line. - */ -APU_DECLARE(apr_status_t) apr_brigade_split_line(apr_bucket_brigade *bbOut, - apr_bucket_brigade *bbIn, - apr_read_type_e block, - apr_off_t maxbytes); - -/** - * create an iovec of the elements in a bucket_brigade... return number - * of elements used. This is useful for writing to a file or to the - * network efficiently. - * @param b The bucket brigade to create the iovec from - * @param vec The iovec to create - * @param nvec The number of elements in the iovec. On return, it is the - * number of iovec elements actually filled out. - */ -APU_DECLARE(apr_status_t) apr_brigade_to_iovec(apr_bucket_brigade *b, - struct iovec *vec, int *nvec); - -/** - * This function writes a list of strings into a bucket brigade. - * @param b The bucket brigade to add to - * @param flush The flush function to use if the brigade is full - * @param ctx The structure to pass to the flush function - * @param va A list of strings to add - * @return APR_SUCCESS or error code. - */ -APU_DECLARE(apr_status_t) apr_brigade_vputstrs(apr_bucket_brigade *b, - apr_brigade_flush flush, - void *ctx, - va_list va); - -/** - * This function writes a string into a bucket brigade. - * @param b The bucket brigade to add to - * @param flush The flush function to use if the brigade is full - * @param ctx The structure to pass to the flush function - * @param str The string to add - * @param nbyte The number of bytes to write - * @return APR_SUCCESS or error code - */ -APU_DECLARE(apr_status_t) apr_brigade_write(apr_bucket_brigade *b, - apr_brigade_flush flush, void *ctx, - const char *str, apr_size_t nbyte); - -/** - * This function writes multiple strings into a bucket brigade. - * @param b The bucket brigade to add to - * @param flush The flush function to use if the brigade is full - * @param ctx The structure to pass to the flush function - * @param vec The strings to add (address plus length for each) - * @param nvec The number of entries in iovec - * @return APR_SUCCESS or error code - */ -APU_DECLARE(apr_status_t) apr_brigade_writev(apr_bucket_brigade *b, - apr_brigade_flush flush, - void *ctx, - const struct iovec *vec, - apr_size_t nvec); - -/** - * This function writes a string into a bucket brigade. - * @param bb The bucket brigade to add to - * @param flush The flush function to use if the brigade is full - * @param ctx The structure to pass to the flush function - * @param str The string to add - * @return APR_SUCCESS or error code - */ -APU_DECLARE(apr_status_t) apr_brigade_puts(apr_bucket_brigade *bb, - apr_brigade_flush flush, void *ctx, - const char *str); - -/** - * This function writes a character into a bucket brigade. - * @param b The bucket brigade to add to - * @param flush The flush function to use if the brigade is full - * @param ctx The structure to pass to the flush function - * @param c The character to add - * @return APR_SUCCESS or error code - */ -APU_DECLARE(apr_status_t) apr_brigade_putc(apr_bucket_brigade *b, - apr_brigade_flush flush, void *ctx, - const char c); - -/** - * This function writes an unspecified number of strings into a bucket brigade. - * @param b The bucket brigade to add to - * @param flush The flush function to use if the brigade is full - * @param ctx The structure to pass to the flush function - * @param ... The strings to add - * @return APR_SUCCESS or error code - */ -APU_DECLARE_NONSTD(apr_status_t) apr_brigade_putstrs(apr_bucket_brigade *b, - apr_brigade_flush flush, - void *ctx, ...); - -/** - * Evaluate a printf and put the resulting string at the end - * of the bucket brigade. - * @param b The brigade to write to - * @param flush The flush function to use if the brigade is full - * @param ctx The structure to pass to the flush function - * @param fmt The format of the string to write - * @param ... The arguments to fill out the format - * @return APR_SUCCESS or error code - */ -APU_DECLARE_NONSTD(apr_status_t) apr_brigade_printf(apr_bucket_brigade *b, - apr_brigade_flush flush, - void *ctx, - const char *fmt, ...) - __attribute__((format(printf,4,5))); - -/** - * Evaluate a printf and put the resulting string at the end - * of the bucket brigade. - * @param b The brigade to write to - * @param flush The flush function to use if the brigade is full - * @param ctx The structure to pass to the flush function - * @param fmt The format of the string to write - * @param va The arguments to fill out the format - * @return APR_SUCCESS or error code - */ -APU_DECLARE(apr_status_t) apr_brigade_vprintf(apr_bucket_brigade *b, - apr_brigade_flush flush, - void *ctx, - const char *fmt, va_list va); - -/** - * Utility function to insert a file (or a segment of a file) onto the - * end of the brigade. The file is split into multiple buckets if it - * is larger than the maximum size which can be represented by a - * single bucket. - * @param bb the brigade to insert into - * @param f the file to insert - * @param start the offset of the start of the segment - * @param len the length of the segment of the file to insert - * @param p pool from which file buckets are allocated - * @return the last bucket inserted - */ -APU_DECLARE(apr_bucket *) apr_brigade_insert_file(apr_bucket_brigade *bb, - apr_file_t *f, - apr_off_t start, - apr_off_t len, - apr_pool_t *p); - - - -/* ***** Bucket freelist functions ***** */ -/** - * Create a bucket allocator. - * @param p This pool's underlying apr_allocator_t is used to allocate memory - * for the bucket allocator. When the pool is destroyed, the bucket - * allocator's cleanup routine will free all memory that has been - * allocated from it. - * @remark The reason the allocator gets its memory from the pool's - * apr_allocator_t rather than from the pool itself is because - * the bucket allocator will free large memory blocks back to the - * allocator when it's done with them, thereby preventing memory - * footprint growth that would occur if we allocated from the pool. - * @warning The allocator must never be used by more than one thread at a time. - */ -APU_DECLARE_NONSTD(apr_bucket_alloc_t *) apr_bucket_alloc_create(apr_pool_t *p); - -/** - * Create a bucket allocator. - * @param allocator This apr_allocator_t is used to allocate both the bucket - * allocator and all memory handed out by the bucket allocator. The - * caller is responsible for destroying the bucket allocator and the - * apr_allocator_t -- no automatic cleanups will happen. - * @warning The allocator must never be used by more than one thread at a time. - */ -APU_DECLARE_NONSTD(apr_bucket_alloc_t *) apr_bucket_alloc_create_ex(apr_allocator_t *allocator); - -/** - * Destroy a bucket allocator. - * @param list The allocator to be destroyed - */ -APU_DECLARE_NONSTD(void) apr_bucket_alloc_destroy(apr_bucket_alloc_t *list); - -/** - * Allocate memory for use by the buckets. - * @param size The amount to allocate. - * @param list The allocator from which to allocate the memory. - */ -APU_DECLARE_NONSTD(void *) apr_bucket_alloc(apr_size_t size, apr_bucket_alloc_t *list); - -/** - * Free memory previously allocated with apr_bucket_alloc(). - * @param block The block of memory to be freed. - */ -APU_DECLARE_NONSTD(void) apr_bucket_free(void *block); - - -/* ***** Bucket Functions ***** */ -/** - * Free the resources used by a bucket. If multiple buckets refer to - * the same resource it is freed when the last one goes away. - * @see apr_bucket_delete() - * @param e The bucket to destroy - */ -#define apr_bucket_destroy(e) do { \ - (e)->type->destroy((e)->data); \ - (e)->free(e); \ - } while (0) - -/** - * Delete a bucket by removing it from its brigade (if any) and then - * destroying it. - * @remark This mainly acts as an aid in avoiding code verbosity. It is - * the preferred exact equivalent to: - *
- *      APR_BUCKET_REMOVE(e);
- *      apr_bucket_destroy(e);
- * 
- * @param e The bucket to delete - */ -#define apr_bucket_delete(e) do { \ - APR_BUCKET_REMOVE(e); \ - apr_bucket_destroy(e); \ - } while (0) - -/** - * read the data from the bucket - * @param e The bucket to read from - * @param str The location to store the data in - * @param len The amount of data read - * @param block Whether the read function blocks - */ -#define apr_bucket_read(e,str,len,block) (e)->type->read(e, str, len, block) - -/** - * Setaside data so that stack data is not destroyed on returning from - * the function - * @param e The bucket to setaside - * @param p The pool to setaside into - */ -#define apr_bucket_setaside(e,p) (e)->type->setaside(e,p) - -/** - * Split one bucket in two. - * @param e The bucket to split - * @param point The offset to split the bucket at - */ -#define apr_bucket_split(e,point) (e)->type->split(e, point) - -/** - * Copy a bucket. - * @param e The bucket to copy - * @param c Returns a pointer to the new bucket - */ -#define apr_bucket_copy(e,c) (e)->type->copy(e, c) - -/* Bucket type handling */ - -/** - * This function simply returns APR_SUCCESS to denote that the bucket does - * not require anything to happen for its setaside() function. This is - * appropriate for buckets that have "immortal" data -- the data will live - * at least as long as the bucket. - * @param data The bucket to setaside - * @param pool The pool defining the desired lifetime of the bucket data - * @return APR_SUCCESS - */ -APU_DECLARE_NONSTD(apr_status_t) apr_bucket_setaside_noop(apr_bucket *data, - apr_pool_t *pool); - -/** - * A place holder function that signifies that the setaside function was not - * implemented for this bucket - * @param data The bucket to setaside - * @param pool The pool defining the desired lifetime of the bucket data - * @return APR_ENOTIMPL - */ -APU_DECLARE_NONSTD(apr_status_t) apr_bucket_setaside_notimpl(apr_bucket *data, - apr_pool_t *pool); - -/** - * A place holder function that signifies that the split function was not - * implemented for this bucket - * @param data The bucket to split - * @param point The location to split the bucket - * @return APR_ENOTIMPL - */ -APU_DECLARE_NONSTD(apr_status_t) apr_bucket_split_notimpl(apr_bucket *data, - apr_size_t point); - -/** - * A place holder function that signifies that the copy function was not - * implemented for this bucket - * @param e The bucket to copy - * @param c Returns a pointer to the new bucket - * @return APR_ENOTIMPL - */ -APU_DECLARE_NONSTD(apr_status_t) apr_bucket_copy_notimpl(apr_bucket *e, - apr_bucket **c); - -/** - * A place holder function that signifies that this bucket does not need - * to do anything special to be destroyed. That's only the case for buckets - * that either have no data (metadata buckets) or buckets whose data pointer - * points to something that's not a bucket-type-specific structure, as with - * simple buckets where data points to a string and pipe buckets where data - * points directly to the apr_file_t. - * @param data The bucket data to destroy - */ -APU_DECLARE_NONSTD(void) apr_bucket_destroy_noop(void *data); - -/** - * There is no apr_bucket_destroy_notimpl, because destruction is required - * to be implemented (it could be a noop, but only if that makes sense for - * the bucket type) - */ - -/* There is no apr_bucket_read_notimpl, because it is a required function - */ - - -/* All of the bucket types implemented by the core */ -/** - * The flush bucket type. This signifies that all data should be flushed to - * the next filter. The flush bucket should be sent with the other buckets. - */ -APU_DECLARE_DATA extern const apr_bucket_type_t apr_bucket_type_flush; -/** - * The EOS bucket type. This signifies that there will be no more data, ever. - * All filters MUST send all data to the next filter when they receive a - * bucket of this type - */ -APU_DECLARE_DATA extern const apr_bucket_type_t apr_bucket_type_eos; -/** - * The FILE bucket type. This bucket represents a file on disk - */ -APU_DECLARE_DATA extern const apr_bucket_type_t apr_bucket_type_file; -/** - * The HEAP bucket type. This bucket represents a data allocated from the - * heap. - */ -APU_DECLARE_DATA extern const apr_bucket_type_t apr_bucket_type_heap; -#if APR_HAS_MMAP -/** - * The MMAP bucket type. This bucket represents an MMAP'ed file - */ -APU_DECLARE_DATA extern const apr_bucket_type_t apr_bucket_type_mmap; -#endif -/** - * The POOL bucket type. This bucket represents a data that was allocated - * from a pool. IF this bucket is still available when the pool is cleared, - * the data is copied on to the heap. - */ -APU_DECLARE_DATA extern const apr_bucket_type_t apr_bucket_type_pool; -/** - * The PIPE bucket type. This bucket represents a pipe to another program. - */ -APU_DECLARE_DATA extern const apr_bucket_type_t apr_bucket_type_pipe; -/** - * The IMMORTAL bucket type. This bucket represents a segment of data that - * the creator is willing to take responsibility for. The core will do - * nothing with the data in an immortal bucket - */ -APU_DECLARE_DATA extern const apr_bucket_type_t apr_bucket_type_immortal; -/** - * The TRANSIENT bucket type. This bucket represents a data allocated off - * the stack. When the setaside function is called, this data is copied on - * to the heap - */ -APU_DECLARE_DATA extern const apr_bucket_type_t apr_bucket_type_transient; -/** - * The SOCKET bucket type. This bucket represents a socket to another machine - */ -APU_DECLARE_DATA extern const apr_bucket_type_t apr_bucket_type_socket; - - -/* ***** Simple buckets ***** */ - -/** - * Split a simple bucket into two at the given point. Most non-reference - * counting buckets that allow multiple references to the same block of - * data (eg transient and immortal) will use this as their split function - * without any additional type-specific handling. - * @param b The bucket to be split - * @param point The offset of the first byte in the new bucket - * @return APR_EINVAL if the point is not within the bucket; - * APR_ENOMEM if allocation failed; - * or APR_SUCCESS - */ -APU_DECLARE_NONSTD(apr_status_t) apr_bucket_simple_split(apr_bucket *b, - apr_size_t point); - -/** - * Copy a simple bucket. Most non-reference-counting buckets that allow - * multiple references to the same block of data (eg transient and immortal) - * will use this as their copy function without any additional type-specific - * handling. - * @param a The bucket to copy - * @param b Returns a pointer to the new bucket - * @return APR_ENOMEM if allocation failed; - * or APR_SUCCESS - */ -APU_DECLARE_NONSTD(apr_status_t) apr_bucket_simple_copy(apr_bucket *a, - apr_bucket **b); - - -/* ***** Shared, reference-counted buckets ***** */ - -/** - * Initialize a bucket containing reference-counted data that may be - * shared. The caller must allocate the bucket if necessary and - * initialize its type-dependent fields, and allocate and initialize - * its own private data structure. This function should only be called - * by type-specific bucket creation functions. - * @param b The bucket to initialize - * @param data A pointer to the private data structure - * with the reference count at the start - * @param start The start of the data in the bucket - * relative to the private base pointer - * @param length The length of the data in the bucket - * @return The new bucket, or NULL if allocation failed - */ -APU_DECLARE(apr_bucket *) apr_bucket_shared_make(apr_bucket *b, void *data, - apr_off_t start, - apr_size_t length); - -/** - * Decrement the refcount of the data in the bucket. This function - * should only be called by type-specific bucket destruction functions. - * @param data The private data pointer from the bucket to be destroyed - * @return TRUE or FALSE; TRUE if the reference count is now - * zero, indicating that the shared resource itself can - * be destroyed by the caller. - */ -APU_DECLARE(int) apr_bucket_shared_destroy(void *data); - -/** - * Split a bucket into two at the given point, and adjust the refcount - * to the underlying data. Most reference-counting bucket types will - * be able to use this function as their split function without any - * additional type-specific handling. - * @param b The bucket to be split - * @param point The offset of the first byte in the new bucket - * @return APR_EINVAL if the point is not within the bucket; - * APR_ENOMEM if allocation failed; - * or APR_SUCCESS - */ -APU_DECLARE_NONSTD(apr_status_t) apr_bucket_shared_split(apr_bucket *b, - apr_size_t point); - -/** - * Copy a refcounted bucket, incrementing the reference count. Most - * reference-counting bucket types will be able to use this function - * as their copy function without any additional type-specific handling. - * @param a The bucket to copy - * @param b Returns a pointer to the new bucket - * @return APR_ENOMEM if allocation failed; - or APR_SUCCESS - */ -APU_DECLARE_NONSTD(apr_status_t) apr_bucket_shared_copy(apr_bucket *a, - apr_bucket **b); - - -/* ***** Functions to Create Buckets of varying types ***** */ -/* - * Each bucket type foo has two initialization functions: - * apr_bucket_foo_make which sets up some already-allocated memory as a - * bucket of type foo; and apr_bucket_foo_create which allocates memory - * for the bucket, calls apr_bucket_make_foo, and initializes the - * bucket's list pointers. The apr_bucket_foo_make functions are used - * inside the bucket code to change the type of buckets in place; - * other code should call apr_bucket_foo_create. All the initialization - * functions change nothing if they fail. - */ - -/** - * Create an End of Stream bucket. This indicates that there is no more data - * coming from down the filter stack. All filters should flush at this point. - * @param list The freelist from which this bucket should be allocated - * @return The new bucket, or NULL if allocation failed - */ -APU_DECLARE(apr_bucket *) apr_bucket_eos_create(apr_bucket_alloc_t *list); - -/** - * Make the bucket passed in an EOS bucket. This indicates that there is no - * more data coming from down the filter stack. All filters should flush at - * this point. - * @param b The bucket to make into an EOS bucket - * @return The new bucket, or NULL if allocation failed - */ -APU_DECLARE(apr_bucket *) apr_bucket_eos_make(apr_bucket *b); - -/** - * Create a flush bucket. This indicates that filters should flush their - * data. There is no guarantee that they will flush it, but this is the - * best we can do. - * @param list The freelist from which this bucket should be allocated - * @return The new bucket, or NULL if allocation failed - */ -APU_DECLARE(apr_bucket *) apr_bucket_flush_create(apr_bucket_alloc_t *list); - -/** - * Make the bucket passed in a FLUSH bucket. This indicates that filters - * should flush their data. There is no guarantee that they will flush it, - * but this is the best we can do. - * @param b The bucket to make into a FLUSH bucket - * @return The new bucket, or NULL if allocation failed - */ -APU_DECLARE(apr_bucket *) apr_bucket_flush_make(apr_bucket *b); - -/** - * Create a bucket referring to long-lived data. - * @param buf The data to insert into the bucket - * @param nbyte The size of the data to insert. - * @param list The freelist from which this bucket should be allocated - * @return The new bucket, or NULL if allocation failed - */ -APU_DECLARE(apr_bucket *) apr_bucket_immortal_create(const char *buf, - apr_size_t nbyte, - apr_bucket_alloc_t *list); - -/** - * Make the bucket passed in a bucket refer to long-lived data - * @param b The bucket to make into a IMMORTAL bucket - * @param buf The data to insert into the bucket - * @param nbyte The size of the data to insert. - * @return The new bucket, or NULL if allocation failed - */ -APU_DECLARE(apr_bucket *) apr_bucket_immortal_make(apr_bucket *b, - const char *buf, - apr_size_t nbyte); - -/** - * Create a bucket referring to data on the stack. - * @param buf The data to insert into the bucket - * @param nbyte The size of the data to insert. - * @param list The freelist from which this bucket should be allocated - * @return The new bucket, or NULL if allocation failed - */ -APU_DECLARE(apr_bucket *) apr_bucket_transient_create(const char *buf, - apr_size_t nbyte, - apr_bucket_alloc_t *list); - -/** - * Make the bucket passed in a bucket refer to stack data - * @param b The bucket to make into a TRANSIENT bucket - * @param buf The data to insert into the bucket - * @param nbyte The size of the data to insert. - * @return The new bucket, or NULL if allocation failed - */ -APU_DECLARE(apr_bucket *) apr_bucket_transient_make(apr_bucket *b, - const char *buf, - apr_size_t nbyte); - -/** - * Create a bucket referring to memory on the heap. If the caller asks - * for the data to be copied, this function always allocates 4K of - * memory so that more data can be added to the bucket without - * requiring another allocation. Therefore not all the data may be put - * into the bucket. If copying is not requested then the bucket takes - * over responsibility for free()ing the memory. - * @param buf The buffer to insert into the bucket - * @param nbyte The size of the buffer to insert. - * @param free_func Function to use to free the data; NULL indicates that the - * bucket should make a copy of the data - * @param list The freelist from which this bucket should be allocated - * @return The new bucket, or NULL if allocation failed - */ -APU_DECLARE(apr_bucket *) apr_bucket_heap_create(const char *buf, - apr_size_t nbyte, - void (*free_func)(void *data), - apr_bucket_alloc_t *list); -/** - * Make the bucket passed in a bucket refer to heap data - * @param b The bucket to make into a HEAP bucket - * @param buf The buffer to insert into the bucket - * @param nbyte The size of the buffer to insert. - * @param free_func Function to use to free the data; NULL indicates that the - * bucket should make a copy of the data - * @return The new bucket, or NULL if allocation failed - */ -APU_DECLARE(apr_bucket *) apr_bucket_heap_make(apr_bucket *b, const char *buf, - apr_size_t nbyte, - void (*free_func)(void *data)); - -/** - * Create a bucket referring to memory allocated from a pool. - * - * @param buf The buffer to insert into the bucket - * @param length The number of bytes referred to by this bucket - * @param pool The pool the memory was allocated from - * @param list The freelist from which this bucket should be allocated - * @return The new bucket, or NULL if allocation failed - */ -APU_DECLARE(apr_bucket *) apr_bucket_pool_create(const char *buf, - apr_size_t length, - apr_pool_t *pool, - apr_bucket_alloc_t *list); - -/** - * Make the bucket passed in a bucket refer to pool data - * @param b The bucket to make into a pool bucket - * @param buf The buffer to insert into the bucket - * @param length The number of bytes referred to by this bucket - * @param pool The pool the memory was allocated from - * @return The new bucket, or NULL if allocation failed - */ -APU_DECLARE(apr_bucket *) apr_bucket_pool_make(apr_bucket *b, const char *buf, - apr_size_t length, - apr_pool_t *pool); - -#if APR_HAS_MMAP -/** - * Create a bucket referring to mmap()ed memory. - * @param mm The mmap to insert into the bucket - * @param start The offset of the first byte in the mmap - * that this bucket refers to - * @param length The number of bytes referred to by this bucket - * @param list The freelist from which this bucket should be allocated - * @return The new bucket, or NULL if allocation failed - */ -APU_DECLARE(apr_bucket *) apr_bucket_mmap_create(apr_mmap_t *mm, - apr_off_t start, - apr_size_t length, - apr_bucket_alloc_t *list); - -/** - * Make the bucket passed in a bucket refer to an MMAP'ed file - * @param b The bucket to make into a MMAP bucket - * @param mm The mmap to insert into the bucket - * @param start The offset of the first byte in the mmap - * that this bucket refers to - * @param length The number of bytes referred to by this bucket - * @return The new bucket, or NULL if allocation failed - */ -APU_DECLARE(apr_bucket *) apr_bucket_mmap_make(apr_bucket *b, apr_mmap_t *mm, - apr_off_t start, - apr_size_t length); -#endif - -/** - * Create a bucket referring to a socket. - * @param thissock The socket to put in the bucket - * @param list The freelist from which this bucket should be allocated - * @return The new bucket, or NULL if allocation failed - */ -APU_DECLARE(apr_bucket *) apr_bucket_socket_create(apr_socket_t *thissock, - apr_bucket_alloc_t *list); -/** - * Make the bucket passed in a bucket refer to a socket - * @param b The bucket to make into a SOCKET bucket - * @param thissock The socket to put in the bucket - * @return The new bucket, or NULL if allocation failed - */ -APU_DECLARE(apr_bucket *) apr_bucket_socket_make(apr_bucket *b, - apr_socket_t *thissock); - -/** - * Create a bucket referring to a pipe. - * @param thispipe The pipe to put in the bucket - * @param list The freelist from which this bucket should be allocated - * @return The new bucket, or NULL if allocation failed - */ -APU_DECLARE(apr_bucket *) apr_bucket_pipe_create(apr_file_t *thispipe, - apr_bucket_alloc_t *list); - -/** - * Make the bucket passed in a bucket refer to a pipe - * @param b The bucket to make into a PIPE bucket - * @param thispipe The pipe to put in the bucket - * @return The new bucket, or NULL if allocation failed - */ -APU_DECLARE(apr_bucket *) apr_bucket_pipe_make(apr_bucket *b, - apr_file_t *thispipe); - -/** - * Create a bucket referring to a file. - * @param fd The file to put in the bucket - * @param offset The offset where the data of interest begins in the file - * @param len The amount of data in the file we are interested in - * @param p The pool into which any needed structures should be created - * while reading from this file bucket - * @param list The freelist from which this bucket should be allocated - * @return The new bucket, or NULL if allocation failed - */ -APU_DECLARE(apr_bucket *) apr_bucket_file_create(apr_file_t *fd, - apr_off_t offset, - apr_size_t len, - apr_pool_t *p, - apr_bucket_alloc_t *list); - -/** - * Make the bucket passed in a bucket refer to a file - * @param b The bucket to make into a FILE bucket - * @param fd The file to put in the bucket - * @param offset The offset where the data of interest begins in the file - * @param len The amount of data in the file we are interested in - * @param p The pool into which any needed structures should be created - * while reading from this file bucket - * @return The new bucket, or NULL if allocation failed - */ -APU_DECLARE(apr_bucket *) apr_bucket_file_make(apr_bucket *b, apr_file_t *fd, - apr_off_t offset, - apr_size_t len, apr_pool_t *p); - -/** - * Enable or disable memory-mapping for a FILE bucket (default is enabled) - * @param b The bucket - * @param enabled Whether memory-mapping should be enabled - * @return APR_SUCCESS normally, or an error code if the operation fails - */ -APU_DECLARE(apr_status_t) apr_bucket_file_enable_mmap(apr_bucket *b, - int enabled); - -/** @} */ -#ifdef __cplusplus -} -#endif - -#endif /* !APR_BUCKETS_H */ diff --git a/libs/apr-util/include/apr_date.h b/libs/apr-util/include/apr_date.h deleted file mode 100644 index 87500a33948..00000000000 --- a/libs/apr-util/include/apr_date.h +++ /dev/null @@ -1,106 +0,0 @@ -/* Copyright 2000-2005 The Apache Software Foundation or its licensors, as - * applicable. - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -#ifndef APR_DATE_H -#define APR_DATE_H - -/** - * @file apr_date.h - * @brief APR-UTIL date routines - */ - -/** - * @defgroup APR_Util_Date Date routines - * @ingroup APR_Util - * @{ - */ - -/* - * apr_date.h: prototypes for date parsing utility routines - */ - -#include "apu.h" -#include "apr_time.h" - -#ifdef __cplusplus -extern "C" { -#endif - -/** A bad date. */ -#define APR_DATE_BAD ((apr_time_t)0) - -/** - * Compare a string to a mask - * @param data The string to compare - * @param mask Mask characters (arbitrary maximum is 256 characters): - *
- *   '\@' - uppercase letter
- *   '\$' - lowercase letter
- *   '\&' - hex digit
- *   '#' - digit
- *   '~' - digit or space
- *   '*' - swallow remaining characters
- * 
- * @remark The mask tests for an exact match for any other character - * @return 1 if the string matches, 0 otherwise - */ -APU_DECLARE(int) apr_date_checkmask(const char *data, const char *mask); - -/** - * Parses an HTTP date in one of three standard forms: - *
- *     Sun, 06 Nov 1994 08:49:37 GMT  ; RFC 822, updated by RFC 1123
- *     Sunday, 06-Nov-94 08:49:37 GMT ; RFC 850, obsoleted by RFC 1036
- *     Sun Nov  6 08:49:37 1994       ; ANSI C's asctime() format
- * 
- * @param date The date in one of the three formats above - * @return the apr_time_t number of microseconds since 1 Jan 1970 GMT, or - * 0 if this would be out of range or if the date is invalid. - */ -APU_DECLARE(apr_time_t) apr_date_parse_http(const char *date); - -/** - * Parses a string resembling an RFC 822 date. This is meant to be - * leinent in its parsing of dates. Hence, this will parse a wider - * range of dates than apr_date_parse_http. - * - * The prominent mailer (or poster, if mailer is unknown) that has - * been seen in the wild is included for the unknown formats. - *
- *     Sun, 06 Nov 1994 08:49:37 GMT  ; RFC 822, updated by RFC 1123
- *     Sunday, 06-Nov-94 08:49:37 GMT ; RFC 850, obsoleted by RFC 1036
- *     Sun Nov  6 08:49:37 1994       ; ANSI C's asctime() format
- *     Sun, 6 Nov 1994 08:49:37 GMT   ; RFC 822, updated by RFC 1123
- *     Sun, 06 Nov 94 08:49:37 GMT    ; RFC 822
- *     Sun, 6 Nov 94 08:49:37 GMT     ; RFC 822
- *     Sun, 06 Nov 94 08:49 GMT       ; Unknown [drtr\@ast.cam.ac.uk] 
- *     Sun, 6 Nov 94 08:49 GMT        ; Unknown [drtr\@ast.cam.ac.uk]
- *     Sun, 06 Nov 94 8:49:37 GMT     ; Unknown [Elm 70.85]
- *     Sun, 6 Nov 94 8:49:37 GMT      ; Unknown [Elm 70.85] 
- * 
- * - * @param date The date in one of the formats above - * @return the apr_time_t number of microseconds since 1 Jan 1970 GMT, or - * 0 if this would be out of range or if the date is invalid. - */ -APU_DECLARE(apr_time_t) apr_date_parse_rfc(const char *date); - -/** @} */ -#ifdef __cplusplus -} -#endif - -#endif /* !APR_DATE_H */ diff --git a/libs/apr-util/include/apr_dbd.h b/libs/apr-util/include/apr_dbd.h deleted file mode 100644 index 103ff9cb5e2..00000000000 --- a/libs/apr-util/include/apr_dbd.h +++ /dev/null @@ -1,357 +0,0 @@ -/* Copyright 2000-2005 The Apache Software Foundation or its licensors, as - * applicable. - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -/* Overview of what this is and does: - * http://www.apache.org/~niq/dbd.html - */ - -#ifndef APR_DBD_H -#define APR_DBD_H - -#ifdef __cplusplus -extern "C" { -#endif - -/** - * @file apr_dbd.h - * @brief APR-UTIL DBD library - */ -/** - * @defgroup APR_Util_DBD DBD routines - * @ingroup APR_Util - * @{ - */ - -/* These are opaque structs. Instantiation is up to each backend */ -typedef struct apr_dbd_driver_t apr_dbd_driver_t; -typedef struct apr_dbd_t apr_dbd_t; -typedef struct apr_dbd_transaction_t apr_dbd_transaction_t; -typedef struct apr_dbd_results_t apr_dbd_results_t; -typedef struct apr_dbd_row_t apr_dbd_row_t; -typedef struct apr_dbd_prepared_t apr_dbd_prepared_t; - -/** apr_dbd_init: perform once-only initialisation. Call once only. - * - * @param pool - pool to register any shutdown cleanups, etc - */ -APU_DECLARE(apr_status_t) apr_dbd_init(apr_pool_t *pool); - -/** apr_dbd_get_driver: get the driver struct for a name - * - * @param pool - (process) pool to register cleanup - * @param name - driver name - * @param driver - pointer to driver struct. - * @return APR_SUCCESS for success - * @return APR_ENOTIMPL for no driver (when DSO not enabled) - * @return APR_EDSOOPEN if DSO driver file can't be opened - * @return APR_ESYMNOTFOUND if the driver file doesn't contain a driver - */ -APU_DECLARE(apr_status_t) apr_dbd_get_driver(apr_pool_t *pool, const char *name, - const apr_dbd_driver_t **driver); - -/** apr_dbd_open: open a connection to a backend - * - * @param pool - working pool - * @param params - arguments to driver (implementation-dependent) - * @param handle - pointer to handle to return - * @param driver - driver struct. - * @return APR_SUCCESS for success - * @return APR_EGENERAL if driver exists but connection failed - * @remarks PostgreSQL: the params is passed directly to the PQconnectdb() - * function (check PostgreSQL documentation for more details on the syntax). - * @remarks SQLite2: the params is split on a colon, with the first part used - * as the filename and second part converted to an integer and used as file - * mode. - * @remarks SQLite3: the params is passed directly to the sqlite3_open() - * function as a filename to be opened (check SQLite3 documentation for more - * details). - * @remarks MySQL: the params can have "host", "port", "user", "pass", - * "dbname", "sock", "flags" and "fldsz" keys, each followed by an equal sign - * and a value. Such key/value pairs can be delimited by space, CR, LF, tab, - * semicolon, vertical bar or comma. For now, "flags" can only recognise - * CLIENT_FOUND_ROWS (check MySQL manual for details). The value associated - * with "fldsz" determines maximum amount of memory (in bytes) for each of - * the fields in the result set of prepared statements. By default, this - * value is 1 MB. - */ -APU_DECLARE(apr_status_t) apr_dbd_open(const apr_dbd_driver_t *driver, - apr_pool_t *pool, const char *params, - apr_dbd_t **handle); - -/** apr_dbd_close: close a connection to a backend - * - * @param handle - handle to close - * @param driver - driver struct. - * @return APR_SUCCESS for success or error status - */ -APU_DECLARE(apr_status_t) apr_dbd_close(const apr_dbd_driver_t *driver, - apr_dbd_t *handle); - -/* apr-function-shaped versions of things */ - -/** apr_dbd_name: get the name of the driver - * - * @param driver - the driver - * @return - name - */ -APU_DECLARE(const char*) apr_dbd_name(const apr_dbd_driver_t *driver); - -/** apr_dbd_native_handle: get native database handle of the underlying db - * - * @param driver - the driver - * @param handle - apr_dbd handle - * @return - native handle - */ -APU_DECLARE(void*) apr_dbd_native_handle(const apr_dbd_driver_t *driver, - apr_dbd_t *handle); - -/** check_conn: check status of a database connection - * - * @param driver - the driver - * @param pool - working pool - * @param handle - the connection to check - * @return APR_SUCCESS or error - */ -APU_DECLARE(int) apr_dbd_check_conn(const apr_dbd_driver_t *driver, apr_pool_t *pool, - apr_dbd_t *handle); - -/** apr_dbd_set_dbname: select database name. May be a no-op if not supported. - * - * @param driver - the driver - * @param pool - working pool - * @param handle - the connection - * @param name - the database to select - * @return 0 for success or error code - */ -APU_DECLARE(int) apr_dbd_set_dbname(const apr_dbd_driver_t *driver, apr_pool_t *pool, - apr_dbd_t *handle, const char *name); - -/** apr_dbd_transaction_start: start a transaction. May be a no-op. - * - * @param driver - the driver - * @param pool - a pool to use for error messages (if any). - * @param handle - the db connection - * @param trans - ptr to a transaction. May be null on entry - * @return 0 for success or error code - * @remarks If any of the query/select calls during a transaction return - * non-zero status code, the transaction will inherit this code and any - * further query/select calls will fail immediately. - */ -APU_DECLARE(int) apr_dbd_transaction_start(const apr_dbd_driver_t *driver, - apr_pool_t *pool, - apr_dbd_t *handle, - apr_dbd_transaction_t **trans); - -/** apr_dbd_transaction_end: end a transaction - * (commit on success, rollback on error). - * May be a no-op. - * - * @param driver - the driver - * @param handle - the db connection - * @param trans - the transaction. - * @return 0 for success or error code - */ -APU_DECLARE(int) apr_dbd_transaction_end(const apr_dbd_driver_t *driver, - apr_pool_t *pool, - apr_dbd_transaction_t *trans); - -/** apr_dbd_query: execute an SQL query that doesn't return a result set - * - * @param driver - the driver - * @param handle - the connection - * @param nrows - number of rows affected. - * @param statement - the SQL statement to execute - * @return 0 for success or error code - */ -APU_DECLARE(int) apr_dbd_query(const apr_dbd_driver_t *driver, apr_dbd_t *handle, - int *nrows, const char *statement); - -/** apr_dbd_select: execute an SQL query that returns a result set - * - * @param driver - the driver - * @param pool - pool to allocate the result set - * @param handle - the connection - * @param res - pointer to result set pointer. May point to NULL on entry - * @param statement - the SQL statement to execute - * @param random - 1 to support random access to results (seek any row); - * 0 to support only looping through results in order - * (async access - faster) - * @return 0 for success or error code - */ -APU_DECLARE(int) apr_dbd_select(const apr_dbd_driver_t *driver, apr_pool_t *pool, - apr_dbd_t *handle, apr_dbd_results_t **res, - const char *statement, int random); - -/** apr_dbd_num_cols: get the number of columns in a results set - * - * @param driver - the driver - * @param res - result set. - * @return number of columns - */ -APU_DECLARE(int) apr_dbd_num_cols(const apr_dbd_driver_t *driver, - apr_dbd_results_t *res); - -/** apr_dbd_num_tuples: get the number of rows in a results set - * of a synchronous select - * - * @param driver - the driver - * @param res - result set. - * @return number of rows, or -1 if the results are asynchronous - */ -APU_DECLARE(int) apr_dbd_num_tuples(const apr_dbd_driver_t *driver, - apr_dbd_results_t *res); - -/** apr_dbd_get_row: get a row from a result set - * - * @param driver - the driver - * @param pool - pool to allocate the row - * @param res - result set pointer - * @param row - pointer to row pointer. May point to NULL on entry - * @param rownum - row number, or -1 for "next row". Ignored if random - * access is not supported. - * @return 0 for success, -1 for rownum out of range or data finished - */ -APU_DECLARE(int) apr_dbd_get_row(const apr_dbd_driver_t *driver, apr_pool_t *pool, - apr_dbd_results_t *res, apr_dbd_row_t **row, - int rownum); - -/** apr_dbd_get_entry: get an entry from a row - * - * @param driver - the driver - * @param row - row pointer - * @param col - entry number - * @return value from the row, or NULL if col is out of bounds. - */ -APU_DECLARE(const char*) apr_dbd_get_entry(const apr_dbd_driver_t *driver, - apr_dbd_row_t *row, int col); - -/** apr_dbd_error: get current error message (if any) - * - * @param driver - the driver - * @param handle - the connection - * @param errnum - error code from operation that returned an error - * @return the database current error message, or message for errnum - * (implementation-dependent whether errnum is ignored) - */ -APU_DECLARE(const char*) apr_dbd_error(const apr_dbd_driver_t *driver, - apr_dbd_t *handle, int errnum); - -/** apr_dbd_escape: escape a string so it is safe for use in query/select - * - * @param driver - the driver - * @param pool - pool to alloc the result from - * @param string - the string to escape - * @param handle - the connection - * @return the escaped, safe string - */ -APU_DECLARE(const char*) apr_dbd_escape(const apr_dbd_driver_t *driver, - apr_pool_t *pool, const char *string, - apr_dbd_t *handle); - -/** apr_dbd_prepare: prepare a statement - * - * @param driver - the driver - * @param pool - pool to alloc the result from - * @param handle - the connection - * @param query - the SQL query - * @param label - A label for the prepared statement. - * use NULL for temporary prepared statements - * (eg within a Request in httpd) - * @param statement - statement to prepare. May point to null on entry. - * @return 0 for success or error code - * @remarks To specify parameters of the prepared query, use %s in place of - * database specific parameter syntax (e.g. for PostgreSQL, this would be $1, - * $2, for SQLite3 this would be ? etc.). For instance: "SELECT name FROM - * customers WHERE name=%s" would be a query that this function understands. - * Some drivers may support different data types using printf-like format: - * for example %d (e.g. PostgreSQL) or %f for numeric data. - */ -APU_DECLARE(int) apr_dbd_prepare(const apr_dbd_driver_t *driver, apr_pool_t *pool, - apr_dbd_t *handle, const char *query, - const char *label, - apr_dbd_prepared_t **statement); - - -/** apr_dbd_pquery: query using a prepared statement + args - * - * @param driver - the driver - * @param pool - working pool - * @param handle - the connection - * @param nrows - number of rows affected. - * @param statement - the prepared statement to execute - * @param nargs - number of args to prepared statement - * @param args - args to prepared statement - * @return 0 for success or error code - */ -APU_DECLARE(int) apr_dbd_pquery(const apr_dbd_driver_t *driver, apr_pool_t *pool, - apr_dbd_t *handle, int *nrows, - apr_dbd_prepared_t *statement, int nargs, - const char **args); - -/** apr_dbd_pselect: select using a prepared statement + args - * - * @param driver - the driver - * @param pool - working pool - * @param handle - the connection - * @param res - pointer to query results. May point to NULL on entry - * @param statement - the prepared statement to execute - * @param random - Whether to support random-access to results - * @param nargs - number of args to prepared statement - * @param args - args to prepared statement - * @return 0 for success or error code - */ -APU_DECLARE(int) apr_dbd_pselect(const apr_dbd_driver_t *driver, apr_pool_t *pool, - apr_dbd_t *handle, apr_dbd_results_t **res, - apr_dbd_prepared_t *statement, int random, - int nargs, const char **args); - -/** apr_dbd_pvquery: query using a prepared statement + args - * - * @param driver - the driver - * @param pool - working pool - * @param handle - the connection - * @param nrows - number of rows affected. - * @param statement - the prepared statement to execute - * @param ... - varargs list - * @return 0 for success or error code - */ -APU_DECLARE(int) apr_dbd_pvquery(const apr_dbd_driver_t *driver, apr_pool_t *pool, - apr_dbd_t *handle, int *nrows, - apr_dbd_prepared_t *statement, ...); - -/** apr_dbd_pvselect: select using a prepared statement + args - * - * @param driver - the driver - * @param pool - working pool - * @param handle - the connection - * @param res - pointer to query results. May point to NULL on entry - * @param statement - the prepared statement to execute - * @param random - Whether to support random-access to results - * @param ... - varargs list - * @return 0 for success or error code - */ -APU_DECLARE(int) apr_dbd_pvselect(const apr_dbd_driver_t *driver, apr_pool_t *pool, - apr_dbd_t *handle, apr_dbd_results_t **res, - apr_dbd_prepared_t *statement, int random, - ...); - -/** @} */ - -#ifdef __cplusplus -} -#endif - -#endif diff --git a/libs/apr-util/include/apr_dbm.h b/libs/apr-util/include/apr_dbm.h deleted file mode 100644 index d34f9ad3f34..00000000000 --- a/libs/apr-util/include/apr_dbm.h +++ /dev/null @@ -1,224 +0,0 @@ -/* Copyright 2000-2005 The Apache Software Foundation or its licensors, as - * applicable. - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -#ifndef APR_DBM_H -#define APR_DBM_H - -#include "apu.h" -#include "apr.h" -#include "apr_errno.h" -#include "apr_pools.h" -#include "apr_file_info.h" - -#ifdef __cplusplus -extern "C" { -#endif - -/** - * @file apr_dbm.h - * @brief APR-UTIL DBM library - */ -/** - * @defgroup APR_Util_DBM DBM routines - * @ingroup APR_Util - * @{ - */ -/** - * Structure for referencing a dbm - */ -typedef struct apr_dbm_t apr_dbm_t; - -/** - * Structure for referencing the datum record within a dbm - */ -typedef struct -{ - /** pointer to the 'data' to retrieve/store in the DBM */ - char *dptr; - /** size of the 'data' to retrieve/store in the DBM */ - apr_size_t dsize; -} apr_datum_t; - -/* modes to open the DB */ -#define APR_DBM_READONLY 1 /**< open for read-only access */ -#define APR_DBM_READWRITE 2 /**< open for read-write access */ -#define APR_DBM_RWCREATE 3 /**< open for r/w, create if needed */ -#define APR_DBM_RWTRUNC 4 /**< open for r/w, truncating an existing - DB if present */ -/** - * Open a dbm file by file name and type of DBM - * @param dbm The newly opened database - * @param type The type of the DBM (not all may be available at run time) - *
- *  GDBM for GDBM files
- *  SDBM for SDBM files
- *  DB   for berkeley DB files
- *  NDBM for NDBM files
- *  default for the default DBM type
- *  
- * @param name The dbm file name to open - * @param mode The flag value - *
- *           APR_DBM_READONLY   open for read-only access
- *           APR_DBM_READWRITE  open for read-write access
- *           APR_DBM_RWCREATE   open for r/w, create if needed
- *           APR_DBM_RWTRUNC    open for r/w, truncate if already there
- * 
- * @param perm Permissions to apply to if created - * @param cntxt The pool to use when creating the dbm - * @remark The dbm name may not be a true file name, as many dbm packages - * append suffixes for seperate data and index files. - */ - -APU_DECLARE(apr_status_t) apr_dbm_open_ex(apr_dbm_t **dbm, const char* type, - const char *name, - apr_int32_t mode, apr_fileperms_t perm, - apr_pool_t *cntxt); - - -/** - * Open a dbm file by file name - * @param dbm The newly opened database - * @param name The dbm file name to open - * @param mode The flag value - *
- *           APR_DBM_READONLY   open for read-only access
- *           APR_DBM_READWRITE  open for read-write access
- *           APR_DBM_RWCREATE   open for r/w, create if needed
- *           APR_DBM_RWTRUNC    open for r/w, truncate if already there
- * 
- * @param perm Permissions to apply to if created - * @param cntxt The pool to use when creating the dbm - * @remark The dbm name may not be a true file name, as many dbm packages - * append suffixes for seperate data and index files. - */ -APU_DECLARE(apr_status_t) apr_dbm_open(apr_dbm_t **dbm, const char *name, - apr_int32_t mode, apr_fileperms_t perm, - apr_pool_t *cntxt); - -/** - * Close a dbm file previously opened by apr_dbm_open - * @param dbm The database to close - */ -APU_DECLARE(void) apr_dbm_close(apr_dbm_t *dbm); - -/** - * Fetch a dbm record value by key - * @param dbm The database - * @param key The key datum to find this record - * @param pvalue The value datum retrieved for this record - */ -APU_DECLARE(apr_status_t) apr_dbm_fetch(apr_dbm_t *dbm, apr_datum_t key, - apr_datum_t *pvalue); -/** - * Store a dbm record value by key - * @param dbm The database - * @param key The key datum to store this record by - * @param value The value datum to store in this record - */ -APU_DECLARE(apr_status_t) apr_dbm_store(apr_dbm_t *dbm, apr_datum_t key, - apr_datum_t value); - -/** - * Delete a dbm record value by key - * @param dbm The database - * @param key The key datum of the record to delete - * @remark It is not an error to delete a non-existent record. - */ -APU_DECLARE(apr_status_t) apr_dbm_delete(apr_dbm_t *dbm, apr_datum_t key); - -/** - * Search for a key within the dbm - * @param dbm The database - * @param key The datum describing a key to test - */ -APU_DECLARE(int) apr_dbm_exists(apr_dbm_t *dbm, apr_datum_t key); - -/** - * Retrieve the first record key from a dbm - * @param dbm The database - * @param pkey The key datum of the first record - */ -APU_DECLARE(apr_status_t) apr_dbm_firstkey(apr_dbm_t *dbm, apr_datum_t *pkey); - -/** - * Retrieve the next record key from a dbm - * @param dbm The database - * @param pkey The key datum of the next record - */ -APU_DECLARE(apr_status_t) apr_dbm_nextkey(apr_dbm_t *dbm, apr_datum_t *pkey); - -/** - * Proactively toss any memory associated with the apr_datum_t. - * @param dbm The database - * @param data The datum to free. - */ -APU_DECLARE(void) apr_dbm_freedatum(apr_dbm_t *dbm, apr_datum_t data); - -/** - * Report more information when an apr_dbm function fails. - * @param dbm The database - * @param errcode A DBM-specific value for the error (for logging). If this - * isn't needed, it may be NULL. - * @param errbuf Location to store the error text - * @param errbufsize The size of the provided buffer - * @return The errbuf parameter, for convenience. - */ -APU_DECLARE(char *) apr_dbm_geterror(apr_dbm_t *dbm, int *errcode, - char *errbuf, apr_size_t errbufsize); -/** - * If the specified file/path were passed to apr_dbm_open(), return the - * actual file/path names which would be (created and) used. At most, two - * files may be used; used2 may be NULL if only one file is used. - * @param pool The pool for allocating used1 and used2. - * @param type The type of DBM you require info on - * @param pathname The path name to generate used-names from. - * @param used1 The first pathname used by the apr_dbm implementation. - * @param used2 The second pathname used by apr_dbm. If only one file is - * used by the specific implementation, this will be set to NULL. - * @return An error if the specified type is invalid. - * @remark The dbm file(s) don't need to exist. This function only manipulates - * the pathnames. - */ -APU_DECLARE(apr_status_t) apr_dbm_get_usednames_ex(apr_pool_t *pool, - const char *type, - const char *pathname, - const char **used1, - const char **used2); - -/** - * If the specified file/path were passed to apr_dbm_open(), return the - * actual file/path names which would be (created and) used. At most, two - * files may be used; used2 may be NULL if only one file is used. - * @param pool The pool for allocating used1 and used2. - * @param pathname The path name to generate used-names from. - * @param used1 The first pathname used by the apr_dbm implementation. - * @param used2 The second pathname used by apr_dbm. If only one file is - * used by the specific implementation, this will be set to NULL. - * @remark The dbm file(s) don't need to exist. This function only manipulates - * the pathnames. - */ -APU_DECLARE(void) apr_dbm_get_usednames(apr_pool_t *pool, - const char *pathname, - const char **used1, - const char **used2); - -/** @} */ -#ifdef __cplusplus -} -#endif - -#endif /* !APR_DBM_H */ diff --git a/libs/apr-util/include/apr_hooks.h b/libs/apr-util/include/apr_hooks.h deleted file mode 100644 index 287fb8cb0eb..00000000000 --- a/libs/apr-util/include/apr_hooks.h +++ /dev/null @@ -1,256 +0,0 @@ -/* Copyright 2000-2005 The Apache Software Foundation or its licensors, as - * applicable. - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -#ifndef APR_HOOKS_H -#define APR_HOOKS_H - -#include "apu.h" -/* For apr_array_header_t */ -#include "apr_tables.h" - -/** - * @file apr_hooks.h - * @brief Apache hook functions - */ - -#ifdef __cplusplus -extern "C" { -#endif -/** - * @defgroup APR_Util_Hook Hook Functions - * @ingroup APR_Util - * @{ - */ -/** macro to return the prototype of the hook function */ -#define APR_IMPLEMENT_HOOK_GET_PROTO(ns,link,name) \ -link##_DECLARE(apr_array_header_t *) ns##_hook_get_##name(void) - -/** macro to declare the hook correctly */ -#define APR_DECLARE_EXTERNAL_HOOK(ns,link,ret,name,args) \ -typedef ret ns##_HOOK_##name##_t args; \ -link##_DECLARE(void) ns##_hook_##name(ns##_HOOK_##name##_t *pf, \ - const char * const *aszPre, \ - const char * const *aszSucc, int nOrder); \ -link##_DECLARE(ret) ns##_run_##name args; \ -APR_IMPLEMENT_HOOK_GET_PROTO(ns,link,name); \ -typedef struct ns##_LINK_##name##_t \ - { \ - ns##_HOOK_##name##_t *pFunc; \ - const char *szName; \ - const char * const *aszPredecessors; \ - const char * const *aszSuccessors; \ - int nOrder; \ - } ns##_LINK_##name##_t; - -/** macro to declare the hook structure */ -#define APR_HOOK_STRUCT(members) \ -static struct { members } _hooks; - -/** macro to link the hook structure */ -#define APR_HOOK_LINK(name) \ - apr_array_header_t *link_##name; - -/** macro to implement the hook */ -#define APR_IMPLEMENT_EXTERNAL_HOOK_BASE(ns,link,name) \ -link##_DECLARE(void) ns##_hook_##name(ns##_HOOK_##name##_t *pf,const char * const *aszPre, \ - const char * const *aszSucc,int nOrder) \ - { \ - ns##_LINK_##name##_t *pHook; \ - if(!_hooks.link_##name) \ - { \ - _hooks.link_##name=apr_array_make(apr_hook_global_pool,1,sizeof(ns##_LINK_##name##_t)); \ - apr_hook_sort_register(#name,&_hooks.link_##name); \ - } \ - pHook=apr_array_push(_hooks.link_##name); \ - pHook->pFunc=pf; \ - pHook->aszPredecessors=aszPre; \ - pHook->aszSuccessors=aszSucc; \ - pHook->nOrder=nOrder; \ - pHook->szName=apr_hook_debug_current; \ - if(apr_hook_debug_enabled) \ - apr_hook_debug_show(#name,aszPre,aszSucc); \ - } \ - APR_IMPLEMENT_HOOK_GET_PROTO(ns,link,name) \ - { \ - return _hooks.link_##name; \ - } - -/** - * Implement a hook that has no return code, and therefore runs all of the - * registered functions - * @param ns The namespace prefix of the hook functions - * @param link The linkage declaration prefix of the hook - * @param name The name of the hook - * @param args_decl The declaration of the arguments for the hook - * @param args_use The names for the arguments for the hook - * @note The link prefix FOO corresponds to FOO_DECLARE() macros, which - * provide export linkage from the module that IMPLEMENTs the hook, and - * import linkage from external modules that link to the hook's module. - */ -#define APR_IMPLEMENT_EXTERNAL_HOOK_VOID(ns,link,name,args_decl,args_use) \ -APR_IMPLEMENT_EXTERNAL_HOOK_BASE(ns,link,name) \ -link##_DECLARE(void) ns##_run_##name args_decl \ - { \ - ns##_LINK_##name##_t *pHook; \ - int n; \ -\ - if(!_hooks.link_##name) \ - return; \ -\ - pHook=(ns##_LINK_##name##_t *)_hooks.link_##name->elts; \ - for(n=0 ; n < _hooks.link_##name->nelts ; ++n) \ - pHook[n].pFunc args_use; \ - } - -/* FIXME: note that this returns ok when nothing is run. I suspect it should - really return decline, but that breaks Apache currently - Ben -*/ -/** - * Implement a hook that runs until one of the functions returns something - * other than OK or DECLINE - * @param ns The namespace prefix of the hook functions - * @param link The linkage declaration prefix of the hook - * @param ret Type to return - * @param name The name of the hook - * @param args_decl The declaration of the arguments for the hook - * @param args_use The names for the arguments for the hook - * @param ok Success value - * @param decline Decline value - * @note The link prefix FOO corresponds to FOO_DECLARE() macros, which - * provide export linkage from the module that IMPLEMENTs the hook, and - * import linkage from external modules that link to the hook's module. - */ -#define APR_IMPLEMENT_EXTERNAL_HOOK_RUN_ALL(ns,link,ret,name,args_decl,args_use,ok,decline) \ -APR_IMPLEMENT_EXTERNAL_HOOK_BASE(ns,link,name) \ -link##_DECLARE(ret) ns##_run_##name args_decl \ - { \ - ns##_LINK_##name##_t *pHook; \ - int n; \ - ret rv; \ -\ - if(!_hooks.link_##name) \ - return ok; \ -\ - pHook=(ns##_LINK_##name##_t *)_hooks.link_##name->elts; \ - for(n=0 ; n < _hooks.link_##name->nelts ; ++n) \ - { \ - rv=pHook[n].pFunc args_use; \ -\ - if(rv != ok && rv != decline) \ - return rv; \ - } \ - return ok; \ - } - - -/** - * Implement a hook that runs until the first function returns something - * other than the value of decline - * @param ns The namespace prefix of the hook functions - * @param link The linkage declaration prefix of the hook - * @param name The name of the hook - * @param ret Type to return - * @param args_decl The declaration of the arguments for the hook - * @param args_use The names for the arguments for the hook - * @param decline Decline value - * @note The link prefix FOO corresponds to FOO_DECLARE() macros, which - * provide export linkage from the module that IMPLEMENTs the hook, and - * import linkage from external modules that link to the hook's module. - */ -#define APR_IMPLEMENT_EXTERNAL_HOOK_RUN_FIRST(ns,link,ret,name,args_decl,args_use,decline) \ -APR_IMPLEMENT_EXTERNAL_HOOK_BASE(ns,link,name) \ -link##_DECLARE(ret) ns##_run_##name args_decl \ - { \ - ns##_LINK_##name##_t *pHook; \ - int n; \ - ret rv; \ -\ - if(!_hooks.link_##name) \ - return decline; \ -\ - pHook=(ns##_LINK_##name##_t *)_hooks.link_##name->elts; \ - for(n=0 ; n < _hooks.link_##name->nelts ; ++n) \ - { \ - rv=pHook[n].pFunc args_use; \ -\ - if(rv != decline) \ - return rv; \ - } \ - return decline; \ - } - - /* Hook orderings */ -/** run this hook first, before ANYTHING */ -#define APR_HOOK_REALLY_FIRST (-10) -/** run this hook first */ -#define APR_HOOK_FIRST 0 -/** run this hook somewhere */ -#define APR_HOOK_MIDDLE 10 -/** run this hook after every other hook which is defined*/ -#define APR_HOOK_LAST 20 -/** run this hook last, after EVERYTHING */ -#define APR_HOOK_REALLY_LAST 30 - -/** - * The global pool used to allocate any memory needed by the hooks. - */ -APU_DECLARE_DATA extern apr_pool_t *apr_hook_global_pool; - -/** - * A global variable to determine if debugging information about the - * hooks functions should be printed - */ -APU_DECLARE_DATA extern int apr_hook_debug_enabled; - -/** - * The name of the module that is currently registering a function - */ -APU_DECLARE_DATA extern const char *apr_hook_debug_current; - -/** - * Register a hook function to be sorted - * @param szHookName The name of the Hook the function is registered for - * @param aHooks The array which stores all of the functions for this hook - */ -APU_DECLARE(void) apr_hook_sort_register(const char *szHookName, - apr_array_header_t **aHooks); -/** - * Sort all of the registerd functions for a given hook - */ -APU_DECLARE(void) apr_hook_sort_all(void); - -/** - * Print all of the information about the current hook. This is used for - * debugging purposes. - * @param szName The name of the hook - * @param aszPre All of the functions in the predecessor array - * @param aszSucc All of the functions in the successor array - */ -APU_DECLARE(void) apr_hook_debug_show(const char *szName, - const char * const *aszPre, - const char * const *aszSucc); - -/** - * Remove all currently registered functions. - */ -APU_DECLARE(void) apr_hook_deregister_all(void); - -/** @} */ -#ifdef __cplusplus -} -#endif - -#endif /* APR_HOOKS_H */ diff --git a/libs/apr-util/include/apr_ldap.h.in b/libs/apr-util/include/apr_ldap.h.in deleted file mode 100644 index e44729d63b8..00000000000 --- a/libs/apr-util/include/apr_ldap.h.in +++ /dev/null @@ -1,131 +0,0 @@ -/* Copyright 2002-2005 The Apache Software Foundation or its licensors, as - * applicable. - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -/* - * apr_ldap.h is generated from apr_ldap.h.in by configure -- do not edit apr_ldap.h - */ -/** - * @file apr_ldap.h - * @brief APR-UTIL LDAP - */ -#ifndef APU_LDAP_H -#define APU_LDAP_H - -/** - * @defgroup APR_Util_LDAP LDAP - * @ingroup APR_Util - * @{ - */ - -/* this will be defined if LDAP support was compiled into apr-util */ -#define APR_HAS_LDAP @apu_has_ldap@ - -/* identify the LDAP toolkit used */ -#define APR_HAS_NETSCAPE_LDAPSDK @apu_has_ldap_netscape@ -#define APR_HAS_SOLARIS_LDAPSDK @apu_has_ldap_solaris@ -#define APR_HAS_NOVELL_LDAPSDK @apu_has_ldap_novell@ -#define APR_HAS_MOZILLA_LDAPSDK @apu_has_ldap_mozilla@ -#define APR_HAS_OPENLDAP_LDAPSDK @apu_has_ldap_openldap@ -#define APR_HAS_MICROSOFT_LDAPSDK @apu_has_ldap_microsoft@ -#define APR_HAS_OTHER_LDAPSDK @apu_has_ldap_other@ - - -/* - * Handle the case when LDAP is enabled - */ -#if APR_HAS_LDAP - -/* - * The following #defines are DEPRECATED and should not be used for - * anything. They remain to maintain binary compatibility. - * The original code defined the OPENLDAP SDK as present regardless - * of what really was there, which was way bogus. In addition, the - * apr_ldap_url_parse*() functions have been rewritten specifically for - * APR, so the APR_HAS_LDAP_URL_PARSE macro is forced to zero. - */ -#define APR_HAS_LDAP_SSL 1 -#define APR_HAS_LDAP_URL_PARSE 0 - -#if APR_HAS_OPENLDAP_LDAPSDK && !defined(LDAP_DEPRECATED) -/* Ensure that the "deprecated" interfaces are still exposed - * with OpenLDAP >= 2.3; these were exposed by default in earlier - * releases. */ -#define LDAP_DEPRECATED 1 -#endif - -/* - * Include the standard LDAP header files. - */ - -@lber_h@ -@ldap_h@ -@ldap_ssl_h@ - - -/* - * Detected standard functions - */ -#define APR_HAS_LDAPSSL_CLIENT_INIT @apu_has_ldapssl_client_init@ -#define APR_HAS_LDAPSSL_CLIENT_DEINIT @apu_has_ldapssl_client_deinit@ -#define APR_HAS_LDAPSSL_ADD_TRUSTED_CERT @apu_has_ldapssl_add_trusted_cert@ -#define APR_HAS_LDAP_START_TLS_S @apu_has_ldap_start_tls_s@ -#define APR_HAS_LDAP_SSLINIT @apu_has_ldap_sslinit@ -#define APR_HAS_LDAPSSL_INIT @apu_has_ldapssl_init@ -#define APR_HAS_LDAPSSL_INSTALL_ROUTINES @apu_has_ldapssl_install_routines@ - -/* - * Make sure the secure LDAP port is defined - */ -#ifndef LDAPS_PORT -#define LDAPS_PORT 636 /* ldaps:/// default LDAP over TLS port */ -#endif - - -/* Note: Macros defining const casting has been removed in APR v1.0, - * pending real support for LDAP v2.0 toolkits. - * - * In the mean time, please use an LDAP v3.0 toolkit. - */ -#if LDAP_VERSION_MAX <= 2 -#error Support for LDAP v2.0 toolkits has been removed from apr-util. Please use an LDAP v3.0 toolkit. -#endif - -#ifdef __cplusplus -extern "C" { -#endif /* __cplusplus */ - -/** - * This structure allows the C LDAP API error codes to be returned - * along with plain text error messages that explain to us mere mortals - * what really happened. - */ -typedef struct apr_ldap_err_t { - const char *reason; - const char *msg; - int rc; -} apr_ldap_err_t; - -#ifdef __cplusplus -} -#endif - -#include "apr_ldap_url.h" -#include "apr_ldap_init.h" -#include "apr_ldap_option.h" - -/** @} */ -#endif /* APR_HAS_LDAP */ -#endif /* APU_LDAP_H */ diff --git a/libs/apr-util/include/apr_ldap.hnw b/libs/apr-util/include/apr_ldap.hnw deleted file mode 100644 index 947eaac2d74..00000000000 --- a/libs/apr-util/include/apr_ldap.hnw +++ /dev/null @@ -1,133 +0,0 @@ -/* Copyright 2002-2005 The Apache Software Foundation or its licensors, as - * applicable. - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -/* - * apr_ldap.h is generated from apr_ldap.h.in by configure -- do not edit apr_ldap.h - */ -/** - * @file apr_ldap.h - * @brief APR-UTIL LDAP - */ -#ifndef APU_LDAP_H -#define APU_LDAP_H - -/** - * @defgroup APR_Util_LDAP LDAP - * @ingroup APR_Util - * @{ - */ - -/* this will be defined if LDAP support was compiled into apr-util */ -#define APR_HAS_LDAP 1 - -/* identify the LDAP toolkit used */ -#define APR_HAS_NETSCAPE_LDAPSDK 0 -#define APR_HAS_SOLARIS_LDAPSDK 0 -#define APR_HAS_NOVELL_LDAPSDK 1 -#define APR_HAS_MOZILLA_LDAPSDK 0 -#define APR_HAS_OPENLDAP_LDAPSDK 0 -#define APR_HAS_MICROSOFT_LDAPSDK 0 -#define APR_HAS_OTHER_LDAPSDK 0 - - -/* - * Handle the case when LDAP is enabled - */ -#if APR_HAS_LDAP - -/* - * The following #defines are DEPRECATED and should not be used for - * anything. They remain to maintain binary compatibility. - * The original code defined the OPENLDAP SDK as present regardless - * of what really was there, which was way bogus. In addition, the - * apr_ldap_url_parse*() functions have been rewritten specifically for - * APR, so the APR_HAS_LDAP_URL_PARSE macro is forced to zero. - */ -#define APR_HAS_LDAP_SSL 1 -#define APR_HAS_LDAP_URL_PARSE 0 - - -/* - * Include the standard LDAP header files. - */ - -#ifdef GENEXPORTS -#define LDAP_VERSION_MAX 3 -#else -#include -#include -#if APR_HAS_LDAP_SSL -#include -#endif -#endif - - -/* - * Detected standard functions - */ -#define APR_HAS_LDAPSSL_CLIENT_INIT 1 -#define APR_HAS_LDAPSSL_CLIENT_DEINIT 1 -#define APR_HAS_LDAPSSL_ADD_TRUSTED_CERT 1 -#define APR_HAS_LDAP_START_TLS_S 0 -#define APR_HAS_LDAP_SSLINIT 0 -#define APR_HAS_LDAPSSL_INIT 1 -#define APR_HAS_LDAPSSL_INSTALL_ROUTINES 0 - - -/* - * Make sure the secure LDAP port is defined - */ -#ifndef LDAPS_PORT -#define LDAPS_PORT 636 /* ldaps:/// default LDAP over TLS port */ -#endif - - -/* Note: Macros defining const casting has been removed in APR v1.0, - * pending real support for LDAP v2.0 toolkits. - * - * In the mean time, please use an LDAP v3.0 toolkit. - */ -#if LDAP_VERSION_MAX <= 2 -#error Support for LDAP v2.0 toolkits has been removed from apr-util. Please use an LDAP v3.0 toolkit. -#endif - -#ifdef __cplusplus -extern "C" { -#endif /* __cplusplus */ - -/** - * This structure allows the C LDAP API error codes to be returned - * along with plain text error messages that explain to us mere mortals - * what really happened. - */ -typedef struct apr_ldap_err_t { - const char *reason; - const char *msg; - int rc; -} apr_ldap_err_t; - -#ifdef __cplusplus -} -#endif - -#include "apr_ldap_url.h" -#include "apr_ldap_init.h" -#include "apr_ldap_option.h" - -/** @} */ -#endif /* APR_HAS_LDAP */ -#endif /* APU_LDAP_H */ - diff --git a/libs/apr-util/include/apr_ldap.hw b/libs/apr-util/include/apr_ldap.hw deleted file mode 100644 index 7a4d67f8f53..00000000000 --- a/libs/apr-util/include/apr_ldap.hw +++ /dev/null @@ -1,124 +0,0 @@ -/* Copyright 2002-2005 The Apache Software Foundation or its licensors, as - * applicable. - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -/* - * apr_ldap.h is generated from apr_ldap.h.in by configure -- do not edit apr_ldap.h - */ -/** - * @file apr_ldap.h - * @brief APR-UTIL LDAP - */ -#ifndef APU_LDAP_H -#define APU_LDAP_H - -/** - * @defgroup APR_Util_LDAP LDAP - * @ingroup APR_Util - * @{ - */ - -/* this will be defined if LDAP support was compiled into apr-util */ -#define APR_HAS_LDAP 1 - -/* identify the LDAP toolkit used */ -#define APR_HAS_NETSCAPE_LDAPSDK 0 -#define APR_HAS_SOLARIS_LDAPSDK 0 -#define APR_HAS_NOVELL_LDAPSDK 0 -#define APR_HAS_MOZILLA_LDAPSDK 0 -#define APR_HAS_OPENLDAP_LDAPSDK 0 -#define APR_HAS_MICROSOFT_LDAPSDK 1 -#define APR_HAS_OTHER_LDAPSDK 0 - - -/* - * Handle the case when LDAP is enabled - */ -#if APR_HAS_LDAP - -/* - * The following #defines are DEPRECATED and should not be used for - * anything. They remain to maintain binary compatibility. - * The original code defined the OPENLDAP SDK as present regardless - * of what really was there, which was way bogus. In addition, the - * apr_ldap_url_parse*() functions have been rewritten specifically for - * APR, so the APR_HAS_LDAP_URL_PARSE macro is forced to zero. - */ -#define APR_HAS_LDAP_SSL 1 -#define APR_HAS_LDAP_URL_PARSE 0 - - -/* - * Include the standard LDAP header files. - */ - -#include - - -/* - * Detected standard functions - */ -#define APR_HAS_LDAPSSL_CLIENT_INIT 0 -#define APR_HAS_LDAPSSL_CLIENT_DEINIT 0 -#define APR_HAS_LDAPSSL_ADD_TRUSTED_CERT 0 -#define APR_HAS_LDAP_START_TLS_S 0 -#define APR_HAS_LDAP_SSLINIT 1 -#define APR_HAS_LDAPSSL_INIT 0 -#define APR_HAS_LDAPSSL_INSTALL_ROUTINES 0 - - -/* - * Make sure the secure LDAP port is defined - */ -#ifndef LDAPS_PORT -#define LDAPS_PORT 636 /* ldaps:/// default LDAP over TLS port */ -#endif - - -/* Note: Macros defining const casting has been removed in APR v1.0, - * pending real support for LDAP v2.0 toolkits. - * - * In the mean time, please use an LDAP v3.0 toolkit. - */ -#if LDAP_VERSION_MAX <= 2 -#error Support for LDAP v2.0 toolkits has been removed from apr-util. Please use an LDAP v3.0 toolkit. -#endif - -#ifdef __cplusplus -extern "C" { -#endif /* __cplusplus */ - -/** - * This structure allows the C LDAP API error codes to be returned - * along with plain text error messages that explain to us mere mortals - * what really happened. - */ -typedef struct apr_ldap_err_t { - const char *reason; - const char *msg; - int rc; -} apr_ldap_err_t; - -#ifdef __cplusplus -} -#endif - -#include "apr_ldap_url.h" -#include "apr_ldap_init.h" -#include "apr_ldap_option.h" - -/** @} */ -#endif /* APR_HAS_LDAP */ -#endif /* APU_LDAP_H */ diff --git a/libs/apr-util/include/apr_ldap_init.h b/libs/apr-util/include/apr_ldap_init.h deleted file mode 100644 index bd13d070bc5..00000000000 --- a/libs/apr-util/include/apr_ldap_init.h +++ /dev/null @@ -1,137 +0,0 @@ -/* Copyright 2000-2005 The Apache Software Foundation or its licensors, as - * applicable. - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -/** - * @file apr_ldap_init.h - * @brief APR-UTIL LDAP ldap_init() functions - */ -#ifndef APR_LDAP_INIT_H -#define APR_LDAP_INIT_H - -/** - * @defgroup APR_Util_LDAP LDAP - * @ingroup APR_Util - * @{ - */ - -#include "apr_ldap.h" - -#if APR_HAS_LDAP - -#ifdef __cplusplus -extern "C" { -#endif /* __cplusplus */ - -/** - * APR LDAP SSL Initialise function - * - * This function initialises SSL on the underlying LDAP toolkit - * if this is necessary. - * - * If a CA certificate is provided, this is set, however the setting - * of certificates via this method has been deprecated and will be removed in - * APR v2.0. - * - * The apr_ldap_set_option() function with the APR_LDAP_OPT_TLS_CERT option - * should be used instead to set certificates. - * - * If SSL support is not available on this platform, or a problem - * was encountered while trying to set the certificate, the function - * will return APR_EGENERAL. Further LDAP specific error information - * can be found in result_err. - * @param pool The pool to use - * @param cert_auth_file The name of the certificate to use, can be NULL - * @param cert_file_type The type of certificate specified. See the - * apr_ldap_set_option() APR_LDAP_OPT_TLS_CERT option for details. - * @param result_err The returned result - */ -APU_DECLARE(int) apr_ldap_ssl_init(apr_pool_t *pool, - const char *cert_auth_file, - int cert_file_type, - apr_ldap_err_t **result_err); - -/** - * APR LDAP SSL De-Initialise function - * - * This function tears down any SSL certificate setup previously - * set using apr_ldap_ssl_init(). It should be called to clean - * up if a graceful restart of a service is attempted. - * @todo currently we do not check whether apr_ldap_ssl_init() - * has been called first - we probably should. - */ -APU_DECLARE(int) apr_ldap_ssl_deinit(void); - -/** - * APR LDAP initialise function - * - * This function is responsible for initialising an LDAP - * connection in a toolkit independant way. It does the - * job of ldap_init() from the C api. - * - * It handles both the SSL and non-SSL case, and attempts - * to hide the complexity setup from the user. This function - * assumes that any certificate setup necessary has already - * been done. - * - * If SSL or STARTTLS needs to be enabled, and the underlying - * toolkit supports it, the following values are accepted for - * secure: - * - * APR_LDAP_NONE: No encryption - * APR_LDAP_SSL: SSL encryption (ldaps://) - * APR_LDAP_STARTTLS: Force STARTTLS on ldap:// - * @remark The Novell toolkit is only able to set the SSL mode via this - * function. To work around this limitation, set the SSL mode here if no - * per connection client certificates are present, otherwise set secure - * APR_LDAP_NONE here, then set the per connection client certificates, - * followed by setting the SSL mode via apr_ldap_set_option(). As Novell - * does not support per connection client certificates, this problem is - * worked around while still being compatible with other LDAP toolkits. - * @param pool The pool to use - * @param ldap The LDAP handle - * @param hostname The name of the host to connect to. This can be either a - * DNS name, or an IP address. - * @param portno The port to connect to - * @param secure The security mode to set - * @param result_err The returned result - */ -APU_DECLARE(int) apr_ldap_init(apr_pool_t *pool, - LDAP **ldap, - const char *hostname, - int portno, - int secure, - apr_ldap_err_t **result_err); - -/** - * APR LDAP info function - * - * This function returns a string describing the LDAP toolkit - * currently in use. The string is placed inside result_err->reason. - * @param pool The pool to use - * @param result_err The returned result - */ -APU_DECLARE(int) apr_ldap_info(apr_pool_t *pool, - apr_ldap_err_t **result_err); - -#ifdef __cplusplus -} -#endif - -#endif /* APR_HAS_LDAP */ - -/** @} */ - -#endif /* APR_LDAP_URL_H */ diff --git a/libs/apr-util/include/apr_ldap_option.h b/libs/apr-util/include/apr_ldap_option.h deleted file mode 100644 index 489dc0c8b55..00000000000 --- a/libs/apr-util/include/apr_ldap_option.h +++ /dev/null @@ -1,240 +0,0 @@ -/* Copyright 2000-2005 The Apache Software Foundation or its licensors, as - * applicable. - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -/** - * @file apr_ldap_option.h - * @brief APR-UTIL LDAP ldap_*_option() functions - */ -#ifndef APR_LDAP_OPTION_H -#define APR_LDAP_OPTION_H - -/** - * @defgroup APR_Util_LDAP LDAP - * @ingroup APR_Util - * @{ - */ - -#include "apr_ldap.h" - -#if APR_HAS_LDAP - -#ifdef __cplusplus -extern "C" { -#endif /* __cplusplus */ - -/* - * The following defines handle the different TLS certificate - * options available. If these options are missing, APR will try and - * emulate support for this using the deprecated ldap_start_tls_s() - * function. - */ -/** - * Set SSL mode to one of APR_LDAP_NONE, APR_LDAP_SSL, APR_LDAP_STARTTLS - * or APR_LDAP_STOPTLS. - */ -#define APR_LDAP_OPT_TLS 0x6fff -/** - * Set zero or more CA certificates, client certificates or private - * keys globally, or per connection (where supported). - */ -#define APR_LDAP_OPT_TLS_CERT 0x6ffe -/** - * Set the LDAP library to no verify the server certificate. This means - * all servers are considered trusted. - */ -#define APR_LDAP_OPT_VERIFY_CERT 0x6ffd - -/** - * Structures for the apr_set_option() cases - */ - -/** - * APR_LDAP_OPT_TLS_CERT - * - * This structure includes possible options to set certificates on - * system initialisation. Different SDKs have different certificate - * requirements, and to achieve this multiple certificates must be - * specified at once passed as an (apr_array_header_t *). - * - * Netscape: - * Needs the CA cert database (cert7.db), the client cert database (key3.db) - * and the security module file (secmod.db) set at the system initialisation - * time. Three types are supported: APR_LDAP_CERT7_DB, APR_LDAP_KEY3_DB and - * APR_LDAP_SECMOD. - * - * To specify a client cert connection, a certificate nickname needs to be - * provided with a type of APR_LDAP_CERT. - * int ldapssl_enable_clientauth( LDAP *ld, char *keynickname, - * char *keypasswd, char *certnickname ); - * keynickname is currently not used, and should be set to "" - * - * Novell: - * Needs CA certificates and client certificates set at system initialisation - * time. Three types are supported: APR_LDAP_CA*, APR_LDAP_CERT* and - * APR_LDAP_KEY*. - * - * Certificates cannot be specified per connection. - * - * The functions used are: - * ldapssl_add_trusted_cert(serverTrustedRoot, serverTrustedRootEncoding); - * Clients certs and keys are set at system initialisation time with - * int ldapssl_set_client_cert ( - * void *cert, - * int type - * void *password); - * type can be LDAPSSL_CERT_FILETYPE_B64 or LDAPSSL_CERT_FILETYPE_DER - * ldapssl_set_client_private_key(clientPrivateKey, - * clientPrivateKeyEncoding, - * clientPrivateKeyPassword); - * - * OpenSSL: - * Needs one or more CA certificates to be set at system initialisation time - * with a type of APR_LDAP_CA*. - * - * May have one or more client certificates set per connection with a type of - * APR_LDAP_CERT*, and keys with APR_LDAP_KEY*. - */ -/** CA certificate type unknown */ -#define APR_LDAP_CA_TYPE_UNKNOWN 0 -/** binary DER encoded CA certificate */ -#define APR_LDAP_CA_TYPE_DER 1 -/** PEM encoded CA certificate */ -#define APR_LDAP_CA_TYPE_BASE64 2 -/** Netscape/Mozilla cert7.db CA certificate database */ -#define APR_LDAP_CA_TYPE_CERT7_DB 3 -/** Netscape/Mozilla secmod file */ -#define APR_LDAP_CA_TYPE_SECMOD 4 -/** Client certificate type unknown */ -#define APR_LDAP_CERT_TYPE_UNKNOWN 5 -/** binary DER encoded client certificate */ -#define APR_LDAP_CERT_TYPE_DER 6 -/** PEM encoded client certificate */ -#define APR_LDAP_CERT_TYPE_BASE64 7 -/** Netscape/Mozilla key3.db client certificate database */ -#define APR_LDAP_CERT_TYPE_KEY3_DB 8 -/** Netscape/Mozilla client certificate nickname */ -#define APR_LDAP_CERT_TYPE_NICKNAME 9 -/** Private key type unknown */ -#define APR_LDAP_KEY_TYPE_UNKNOWN 10 -/** binary DER encoded private key */ -#define APR_LDAP_KEY_TYPE_DER 11 -/** PEM encoded private key */ -#define APR_LDAP_KEY_TYPE_BASE64 12 -/** PKCS#12 encoded client certificate */ -#define APR_LDAP_CERT_TYPE_PFX 13 -/** PKCS#12 encoded private key */ -#define APR_LDAP_KEY_TYPE_PFX 14 - -/** - * Certificate structure. - * - * This structure is used to store certificate details. An array of - * these structures is passed to apr_ldap_set_option() to set CA - * and client certificates. - * @param type Type of certificate APR_LDAP_*_TYPE_* - * @param path Path, file or nickname of the certificate - * @param password Optional password, can be NULL - */ -typedef struct apr_ldap_opt_tls_cert_t apr_ldap_opt_tls_cert_t; -struct apr_ldap_opt_tls_cert_t { - int type; - const char *path; - const char *password; -}; - -/** - * APR_LDAP_OPT_TLS - * - * This sets the SSL level on the LDAP handle. - * - * Netscape/Mozilla: - * Supports SSL, but not STARTTLS - * SSL is enabled by calling ldapssl_install_routines(). - * - * Novell: - * Supports SSL and STARTTLS. - * SSL is enabled by calling ldapssl_install_routines(). Note that calling - * other ldap functions before ldapssl_install_routines() may cause this - * function to fail. - * STARTTLS is enabled by calling ldapssl_start_tls_s() after calling - * ldapssl_install_routines() (check this). - * - * OpenLDAP: - * Supports SSL and supports STARTTLS, but none of this is documented: - * http://www.openldap.org/lists/openldap-software/200409/msg00618.html - * Documentation for both SSL support and STARTTLS has been deleted from - * the OpenLDAP documentation and website. - */ - -/** No encryption */ -#define APR_LDAP_NONE 0 -/** SSL encryption (ldaps://) */ -#define APR_LDAP_SSL 1 -/** TLS encryption (STARTTLS) */ -#define APR_LDAP_STARTTLS 2 -/** end TLS encryption (STOPTLS) */ -#define APR_LDAP_STOPTLS 3 - -/** - * APR LDAP get option function - * - * This function gets option values from a given LDAP session if - * one was specified. It maps to the native ldap_get_option() function. - * @param pool The pool to use - * @param ldap The LDAP handle - * @param option The LDAP_OPT_* option to return - * @param outvalue The value returned (if any) - * @param result_err The apr_ldap_err_t structure contained detailed results - * of the operation. - */ -APU_DECLARE(int) apr_ldap_get_option(apr_pool_t *pool, - LDAP *ldap, - int option, - void *outvalue, - apr_ldap_err_t **result_err); - -/** - * APR LDAP set option function - * - * This function sets option values to a given LDAP session if - * one was specified. It maps to the native ldap_set_option() function. - * - * Where an option is not supported by an LDAP toolkit, this function - * will try and apply legacy functions to achieve the same effect, - * depending on the platform. - * @param pool The pool to use - * @param ldap The LDAP handle - * @param option The LDAP_OPT_* option to set - * @param invalue The value to set - * @param result_err The apr_ldap_err_t structure contained detailed results - * of the operation. - */ -APU_DECLARE(int) apr_ldap_set_option(apr_pool_t *pool, - LDAP *ldap, - int option, - const void *invalue, - apr_ldap_err_t **result_err); - -#ifdef __cplusplus -} -#endif - -#endif /* APR_HAS_LDAP */ - -/** @} */ - -#endif /* APR_LDAP_OPTION_H */ - diff --git a/libs/apr-util/include/apr_ldap_url.h b/libs/apr-util/include/apr_ldap_url.h deleted file mode 100644 index de591614092..00000000000 --- a/libs/apr-util/include/apr_ldap_url.h +++ /dev/null @@ -1,117 +0,0 @@ -/* Copyright 2000-2005 The Apache Software Foundation or its licensors, as - * applicable. - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -/** - * @file apr_ldap_url.h - * @brief APR-UTIL LDAP ldap_init() functions - */ -#ifndef APR_LDAP_URL_H -#define APR_LDAP_URL_H - -/** - * @defgroup APR_Util_LDAP LDAP - * @ingroup APR_Util - * @{ - */ - -#if APR_HAS_LDAP - -#include "apu.h" -#include "apr_pools.h" - -#ifdef __cplusplus -extern "C" { -#endif /* __cplusplus */ - -/** Structure to access an exploded LDAP URL */ -typedef struct apr_ldap_url_desc_t { - struct apr_ldap_url_desc_t *lud_next; - char *lud_scheme; - char *lud_host; - int lud_port; - char *lud_dn; - char **lud_attrs; - int lud_scope; - char *lud_filter; - char **lud_exts; - int lud_crit_exts; -} apr_ldap_url_desc_t; - -#ifndef APR_LDAP_URL_SUCCESS -#define APR_LDAP_URL_SUCCESS 0x00 /* Success */ -#define APR_LDAP_URL_ERR_MEM 0x01 /* can't allocate memory space */ -#define APR_LDAP_URL_ERR_PARAM 0x02 /* parameter is bad */ -#define APR_LDAP_URL_ERR_BADSCHEME 0x03 /* URL doesn't begin with "ldap[si]://" */ -#define APR_LDAP_URL_ERR_BADENCLOSURE 0x04 /* URL is missing trailing ">" */ -#define APR_LDAP_URL_ERR_BADURL 0x05 /* URL is bad */ -#define APR_LDAP_URL_ERR_BADHOST 0x06 /* host port is bad */ -#define APR_LDAP_URL_ERR_BADATTRS 0x07 /* bad (or missing) attributes */ -#define APR_LDAP_URL_ERR_BADSCOPE 0x08 /* scope string is invalid (or missing) */ -#define APR_LDAP_URL_ERR_BADFILTER 0x09 /* bad or missing filter */ -#define APR_LDAP_URL_ERR_BADEXTS 0x0a /* bad or missing extensions */ -#endif - -/** - * Is this URL an ldap url? ldap:// - * @param url The url to test - */ -APU_DECLARE(int) apr_ldap_is_ldap_url(const char *url); - -/** - * Is this URL an SSL ldap url? ldaps:// - * @param url The url to test - */ -APU_DECLARE(int) apr_ldap_is_ldaps_url(const char *url); - -/** - * Is this URL an ldap socket url? ldapi:// - * @param url The url to test - */ -APU_DECLARE(int) apr_ldap_is_ldapi_url(const char *url); - -/** - * Parse an LDAP URL. - * @param pool The pool to use - * @param url_in The URL to parse - * @param ludpp The structure to return the exploded URL - * @param result_err The result structure of the operation - */ -APU_DECLARE(int) apr_ldap_url_parse_ext(apr_pool_t *pool, - const char *url_in, - apr_ldap_url_desc_t **ludpp, - apr_ldap_err_t **result_err); - -/** - * Parse an LDAP URL. - * @param pool The pool to use - * @param url_in The URL to parse - * @param ludpp The structure to return the exploded URL - * @param result_err The result structure of the operation - */ -APU_DECLARE(int) apr_ldap_url_parse(apr_pool_t *pool, - const char *url_in, - apr_ldap_url_desc_t **ludpp, - apr_ldap_err_t **result_err); - -#ifdef __cplusplus -} -#endif - -#endif /* APR_HAS_LDAP */ - -/** @} */ - -#endif /* APR_LDAP_URL_H */ diff --git a/libs/apr-util/include/apr_md4.h b/libs/apr-util/include/apr_md4.h deleted file mode 100644 index 42d108df9f5..00000000000 --- a/libs/apr-util/include/apr_md4.h +++ /dev/null @@ -1,135 +0,0 @@ -/* Copyright 2001-2005 The Apache Software Foundation or its licensors, as - * applicable. - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ -/* This is derived from material copyright RSA Data Security, Inc. - * Their notice is reproduced below in its entirety. - * - * Copyright (C) 1991-2, RSA Data Security, Inc. Created 1991. All - * rights reserved. - * - * License to copy and use this software is granted provided that it - * is identified as the "RSA Data Security, Inc. MD4 Message-Digest - * Algorithm" in all material mentioning or referencing this software - * or this function. - * - * License is also granted to make and use derivative works provided - * that such works are identified as "derived from the RSA Data - * Security, Inc. MD4 Message-Digest Algorithm" in all material - * mentioning or referencing the derived work. - * - * RSA Data Security, Inc. makes no representations concerning either - * the merchantability of this software or the suitability of this - * software for any particular purpose. It is provided "as is" - * without express or implied warranty of any kind. - * - * These notices must be retained in any copies of any part of this - * documentation and/or software. - */ - -#ifndef APR_MD4_H -#define APR_MD4_H - -#include "apu.h" -#include "apr_xlate.h" -/** - * @file apr_md4.h - * @brief APR-UTIL MD4 Library - */ -#ifdef __cplusplus -extern "C" { -#endif - -/** - * @defgroup APR_Util_MD4 MD4 Library - * @ingroup APR_Util - * @{ - */ - -/** The digestsize for MD4 */ -#define APR_MD4_DIGESTSIZE 16 - -/** @see apr_md4_ctx_t */ -typedef struct apr_md4_ctx_t apr_md4_ctx_t; - -/** MD4 context. */ -struct apr_md4_ctx_t { - /** state (ABCD) */ - apr_uint32_t state[4]; - /** number of bits, modulo 2^64 (lsb first) */ - apr_uint32_t count[2]; - /** input buffer */ - unsigned char buffer[64]; -#if APR_HAS_XLATE - /** translation handle */ - apr_xlate_t *xlate; -#endif -}; - -/** - * MD4 Initialize. Begins an MD4 operation, writing a new context. - * @param context The MD4 context to initialize. - */ -APU_DECLARE(apr_status_t) apr_md4_init(apr_md4_ctx_t *context); - -#if APR_HAS_XLATE -/** - * MDr4 translation setup. Provides the APR translation handle to be used - * for translating the content before calculating the digest. - * @param context The MD4 content to set the translation for. - * @param xlate The translation handle to use for this MD4 context - */ -APU_DECLARE(apr_status_t) apr_md4_set_xlate(apr_md4_ctx_t *context, - apr_xlate_t *xlate); -#else -#define apr_md4_set_xlate(context, xlate) APR_ENOTIMPL -#endif - -/** - * MD4 block update operation. Continue an MD4 message-digest operation, - * processing another message block, and updating the context. - * @param context The MD4 content to update. - * @param input next message block to update - * @param inputLen The length of the next message block - */ -APU_DECLARE(apr_status_t) apr_md4_update(apr_md4_ctx_t *context, - const unsigned char *input, - apr_size_t inputLen); - -/** - * MD4 finalization. Ends an MD4 message-digest operation, writing the - * message digest and zeroing the context - * @param digest The final MD4 digest - * @param context The MD4 content we are finalizing. - */ -APU_DECLARE(apr_status_t) apr_md4_final( - unsigned char digest[APR_MD4_DIGESTSIZE], - apr_md4_ctx_t *context); - -/** - * MD4 digest computation - * @param digest The MD4 digest - * @param input message block to use - * @param inputLen The length of the message block - */ -APU_DECLARE(apr_status_t) apr_md4(unsigned char digest[APR_MD4_DIGESTSIZE], - const unsigned char *input, - apr_size_t inputLen); - -/** @} */ -#ifdef __cplusplus -} -#endif - -#endif /* !APR_MD4_H */ diff --git a/libs/apr-util/include/apr_md5.h b/libs/apr-util/include/apr_md5.h deleted file mode 100644 index c6a306e3c40..00000000000 --- a/libs/apr-util/include/apr_md5.h +++ /dev/null @@ -1,162 +0,0 @@ -/* - * This is work is derived from material Copyright RSA Data Security, Inc. - * - * The RSA copyright statement and Licence for that original material is - * included below. This is followed by the Apache copyright statement and - * licence for the modifications made to that material. - */ - -/* Copyright (C) 1991-2, RSA Data Security, Inc. Created 1991. All - rights reserved. - - License to copy and use this software is granted provided that it - is identified as the "RSA Data Security, Inc. MD5 Message-Digest - Algorithm" in all material mentioning or referencing this software - or this function. - - License is also granted to make and use derivative works provided - that such works are identified as "derived from the RSA Data - Security, Inc. MD5 Message-Digest Algorithm" in all material - mentioning or referencing the derived work. - - RSA Data Security, Inc. makes no representations concerning either - the merchantability of this software or the suitability of this - software for any particular purpose. It is provided "as is" - without express or implied warranty of any kind. - - These notices must be retained in any copies of any part of this - documentation and/or software. - */ - -/* Copyright 2000-2005 The Apache Software Foundation or its licensors, as - * applicable. - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -#ifndef APR_MD5_H -#define APR_MD5_H - -#include "apu.h" -#include "apr_xlate.h" - -#ifdef __cplusplus -extern "C" { -#endif -/** - * @file apr_md5.h - * @brief APR MD5 Routines - */ - -/** - * @defgroup APR_MD5 MD5 Routines - * @ingroup APR - * @{ - */ - -/** The MD5 digest size */ -#define APR_MD5_DIGESTSIZE 16 - -/** @see apr_md5_ctx_t */ -typedef struct apr_md5_ctx_t apr_md5_ctx_t; - -/** MD5 context. */ -struct apr_md5_ctx_t { - /** state (ABCD) */ - apr_uint32_t state[4]; - /** number of bits, modulo 2^64 (lsb first) */ - apr_uint32_t count[2]; - /** input buffer */ - unsigned char buffer[64]; - /** translation handle - * ignored if xlate is unsupported - */ - apr_xlate_t *xlate; -}; - -/** - * MD5 Initialize. Begins an MD5 operation, writing a new context. - * @param context The MD5 context to initialize. - */ -APU_DECLARE(apr_status_t) apr_md5_init(apr_md5_ctx_t *context); - -/** - * MD5 translation setup. Provides the APR translation handle to be used - * for translating the content before calculating the digest. - * @param context The MD5 content to set the translation for. - * @param xlate The translation handle to use for this MD5 context - */ -APU_DECLARE(apr_status_t) apr_md5_set_xlate(apr_md5_ctx_t *context, - apr_xlate_t *xlate); - -/** - * MD5 block update operation. Continue an MD5 message-digest operation, - * processing another message block, and updating the context. - * @param context The MD5 content to update. - * @param input next message block to update - * @param inputLen The length of the next message block - */ -APU_DECLARE(apr_status_t) apr_md5_update(apr_md5_ctx_t *context, - const void *input, - apr_size_t inputLen); - -/** - * MD5 finalization. Ends an MD5 message-digest operation, writing the - * message digest and zeroing the context - * @param digest The final MD5 digest - * @param context The MD5 content we are finalizing. - */ -APU_DECLARE(apr_status_t) apr_md5_final(unsigned char digest[APR_MD5_DIGESTSIZE], - apr_md5_ctx_t *context); - -/** - * MD5 in one step - * @param digest The final MD5 digest - * @param input The message block to use - * @param inputLen The length of the message block - */ -APU_DECLARE(apr_status_t) apr_md5(unsigned char digest[APR_MD5_DIGESTSIZE], - const void *input, - apr_size_t inputLen); - -/** - * Encode a password using an MD5 algorithm - * @param password The password to encode - * @param salt The salt to use for the encoding - * @param result The string to store the encoded password in - * @param nbytes The size of the result buffer - */ -APU_DECLARE(apr_status_t) apr_md5_encode(const char *password, const char *salt, - char *result, apr_size_t nbytes); - - -/** - * Validate hashes created by APR-supported algorithms: md5 and sha1. - * hashes created by crypt are supported only on platforms that provide - * crypt(3), so don't rely on that function unless you know that your - * application will be run only on platforms that support it. On platforms - * that don't support crypt(3), this falls back to a clear text string - * comparison. - * @param passwd The password to validate - * @param hash The password to validate against - */ -APU_DECLARE(apr_status_t) apr_password_validate(const char *passwd, - const char *hash); - - -/** @} */ -#ifdef __cplusplus -} -#endif - -#endif /* !APR_MD5_H */ diff --git a/libs/apr-util/include/apr_optional.h b/libs/apr-util/include/apr_optional.h deleted file mode 100644 index 8c9413f9a02..00000000000 --- a/libs/apr-util/include/apr_optional.h +++ /dev/null @@ -1,92 +0,0 @@ -/* Copyright 2001-2005 The Apache Software Foundation or its licensors, as - * applicable. - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -#ifndef APR_OPTIONAL_H -#define APR_OPTIONAL_H - -#include "apu.h" -/** - * @file apr_optional.h - * @brief APR-UTIL registration of functions exported by modules - */ -#ifdef __cplusplus -extern "C" { -#endif - -/** - * @defgroup APR_Util_Opt Optional Functions - * @ingroup APR_Util - * - * Typesafe registration and retrieval of functions that may not be present - * (i.e. functions exported by optional modules) - * @{ - */ - -/** - * The type of an optional function. - * @param name The name of the function - */ -#define APR_OPTIONAL_FN_TYPE(name) apr_OFN_##name##_t - -/** - * Declare an optional function. - * @param ret The return type of the function - * @param name The name of the function - * @param args The function arguments (including brackets) - */ -#define APR_DECLARE_OPTIONAL_FN(ret,name,args) \ -typedef ret (APR_OPTIONAL_FN_TYPE(name)) args - -/** - * XXX: This doesn't belong here, then! - * Private function! DO NOT USE! - * @internal - */ - -typedef void (apr_opt_fn_t)(void); -/** @internal */ -APU_DECLARE_NONSTD(void) apr_dynamic_fn_register(const char *szName, - apr_opt_fn_t *pfn); - -/** - * Register an optional function. This can be later retrieved, type-safely, by - * name. Like all global functions, the name must be unique. Note that, - * confusingly but correctly, the function itself can be static! - * @param name The name of the function - */ -#define APR_REGISTER_OPTIONAL_FN(name) do { \ - APR_OPTIONAL_FN_TYPE(name) *apu__opt = name; \ - apr_dynamic_fn_register(#name,(apr_opt_fn_t *)apu__opt); \ -} while (0) - -/** @internal - * Private function! DO NOT USE! - */ -APU_DECLARE(apr_opt_fn_t *) apr_dynamic_fn_retrieve(const char *szName); - -/** - * Retrieve an optional function. Returns NULL if the function is not present. - * @param name The name of the function - */ -#define APR_RETRIEVE_OPTIONAL_FN(name) \ - (APR_OPTIONAL_FN_TYPE(name) *)apr_dynamic_fn_retrieve(#name) - -/** @} */ -#ifdef __cplusplus -} -#endif - -#endif /* APR_OPTIONAL_H */ diff --git a/libs/apr-util/include/apr_optional_hooks.h b/libs/apr-util/include/apr_optional_hooks.h deleted file mode 100644 index 7d01ab00689..00000000000 --- a/libs/apr-util/include/apr_optional_hooks.h +++ /dev/null @@ -1,117 +0,0 @@ -/* Copyright 2000-2005 The Apache Software Foundation or its licensors, as - * applicable. - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ -/** - * @file apr_optional_hooks.h - * @brief Apache optional hook functions - */ - - -#ifndef APR_OPTIONAL_HOOK_H -#define APR_OPTIONAL_HOOK_H - -#include "apr_tables.h" - -#ifdef __cplusplus -extern "C" { -#endif -/** - * @defgroup APR_Util_OPT_HOOK Optional Hook Functions - * @ingroup APR_Util_Hook - * @{ - */ -/** - * Function to implemnt the APR_OPTIONAL_HOOK Macro - * @internal - * @see APR_OPTIONAL_HOOK - * - * @param name The name of the hook - * @param pfn A pointer to a function that will be called - * @param aszPre a NULL-terminated array of strings that name modules whose hooks should precede this one - * @param aszSucc a NULL-terminated array of strings that name modules whose hooks should succeed this one - * @param nOrder an integer determining order before honouring aszPre and aszSucc (for example HOOK_MIDDLE) - */ - - -APU_DECLARE(void) apr_optional_hook_add(const char *szName,void (*pfn)(void), - const char * const *aszPre, - const char * const *aszSucc, - int nOrder); - -/** - * Hook to an optional hook. - * - * @param ns The namespace prefix of the hook functions - * @param name The name of the hook - * @param pfn A pointer to a function that will be called - * @param aszPre a NULL-terminated array of strings that name modules whose hooks should precede this one - * @param aszSucc a NULL-terminated array of strings that name modules whose hooks should succeed this one - * @param nOrder an integer determining order before honouring aszPre and aszSucc (for example HOOK_MIDDLE) - */ - -#define APR_OPTIONAL_HOOK(ns,name,pfn,aszPre,aszSucc,nOrder) do { \ - ns##_HOOK_##name##_t *apu__hook = pfn; \ - apr_optional_hook_add(#name,(void (*)(void))apu__hook,aszPre, aszSucc, nOrder); \ -} while (0) - -/** - * @internal - * @param szName - the name of the function - * @return the hook structure for a given hook - */ -APU_DECLARE(apr_array_header_t *) apr_optional_hook_get(const char *szName); - -/** - * Implement an optional hook that runs until one of the functions - * returns something other than OK or DECLINE. - * - * @param ns The namespace prefix of the hook functions - * @param link The linkage declaration prefix of the hook - * @param ret The type of the return value of the hook - * @param ret The type of the return value of the hook - * @param name The name of the hook - * @param args_decl The declaration of the arguments for the hook - * @param args_use The names for the arguments for the hook - * @param ok Success value - * @param decline Decline value - */ -#define APR_IMPLEMENT_OPTIONAL_HOOK_RUN_ALL(ns,link,ret,name,args_decl,args_use,ok,decline) \ -link##_DECLARE(ret) ns##_run_##name args_decl \ - { \ - ns##_LINK_##name##_t *pHook; \ - int n; \ - ret rv; \ - apr_array_header_t *pHookArray=apr_optional_hook_get(#name); \ -\ - if(!pHookArray) \ - return ok; \ -\ - pHook=(ns##_LINK_##name##_t *)pHookArray->elts; \ - for(n=0 ; n < pHookArray->nelts ; ++n) \ - { \ - rv=(pHook[n].pFunc)args_use; \ -\ - if(rv != ok && rv != decline) \ - return rv; \ - } \ - return ok; \ - } - -/** @} */ -#ifdef __cplusplus -} -#endif - -#endif /* APR_OPTIONAL_HOOK_H */ diff --git a/libs/apr-util/include/apr_queue.h b/libs/apr-util/include/apr_queue.h deleted file mode 100644 index dcf0c137ed7..00000000000 --- a/libs/apr-util/include/apr_queue.h +++ /dev/null @@ -1,154 +0,0 @@ -/* Copyright 2000-2005 The Apache Software Foundation or its licensors, as - * applicable. - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -#ifndef APR_QUEUE_H -#define APR_QUEUE_H - -/** - * @file apr_queue.h - * @brief Thread Safe FIFO bounded queue - * @note Since most implementations of the queue are backed by a condition - * variable implementation, it isn't available on systems without threads. - * Although condition variables are some times available without threads. - */ - -#include "apu.h" -#include "apr_errno.h" -#include "apr_pools.h" - -#if APR_HAS_THREADS - -#ifdef __cplusplus -extern "C" { -#endif /* __cplusplus */ - -/** - * @defgroup APR_Util_FIFO Thread Safe FIFO bounded queue - * @ingroup APR_Util - * @{ - */ - -/** - * opaque structure - */ -typedef struct apr_queue_t apr_queue_t; - -/** - * create a FIFO queue - * @param queue The new queue - * @param queue_capacity maximum size of the queue - * @param a pool to allocate queue from - */ -APU_DECLARE(apr_status_t) apr_queue_create(apr_queue_t **queue, - unsigned int queue_capacity, - apr_pool_t *a); - -/** - * push/add a object to the queue, blocking if the queue is already full - * - * @param queue the queue - * @param data the data - * @returns APR_EINTR the blocking was interrupted (try again) - * @returns APR_EOF the queue has been terminated - * @returns APR_SUCCESS on a successfull push - */ -APU_DECLARE(apr_status_t) apr_queue_push(apr_queue_t *queue, void *data); - -/** - * pop/get an object from the queue, blocking if the queue is already empty - * - * @param queue the queue - * @param data the data - * @returns APR_EINTR the blocking was interrupted (try again) - * @returns APR_EOF if the queue has been terminated - * @returns APR_SUCCESS on a successfull pop - */ -APU_DECLARE(apr_status_t) apr_queue_pop(apr_queue_t *queue, void **data); - -/** - * pop/get an object from the queue, blocking if the queue is already empty - * - * @param queue the queue - * @param data the data - * @param timeout The amount of time in microseconds to wait. This is - * a maximum, not a minimum. If the condition is signaled, we - * will wake up before this time, otherwise the error APR_TIMEUP - * is returned. - * @returns APR_TIMEUP the request timed out - * @returns APR_EINTR the blocking was interrupted (try again) - * @returns APR_EOF if the queue has been terminated - * @returns APR_SUCCESS on a successfull pop - */ -APU_DECLARE(apr_status_t) apr_queue_pop_timeout(apr_queue_t *queue, void **data, apr_interval_time_t timeout); - -/** - * push/add a object to the queue, returning immediatly if the queue is full - * - * @param queue the queue - * @param data the data - * @returns APR_EINTR the blocking operation was interrupted (try again) - * @returns APR_EAGAIN the queue is full - * @returns APR_EOF the queue has been terminated - * @returns APR_SUCCESS on a successfull push - */ -APU_DECLARE(apr_status_t) apr_queue_trypush(apr_queue_t *queue, void *data); - -/** - * pop/get an object to the queue, returning immediatly if the queue is empty - * - * @param queue the queue - * @param data the data - * @returns APR_EINTR the blocking operation was interrupted (try again) - * @returns APR_EAGAIN the queue is empty - * @returns APR_EOF the queue has been terminated - * @returns APR_SUCCESS on a successfull push - */ -APU_DECLARE(apr_status_t) apr_queue_trypop(apr_queue_t *queue, void **data); - -/** - * returns the size of the queue. - * - * @warning this is not threadsafe, and is intended for reporting/monitoring - * of the queue. - * @param queue the queue - * @returns the size of the queue - */ -APU_DECLARE(unsigned int) apr_queue_size(apr_queue_t *queue); - -/** - * interrupt all the threads blocking on this queue. - * - * @param queue the queue - */ -APU_DECLARE(apr_status_t) apr_queue_interrupt_all(apr_queue_t *queue); - -/** - * terminate all queue, sendinging a interupt to all the - * blocking threads - * - * @param queue the queue - */ -APU_DECLARE(apr_status_t) apr_queue_term(apr_queue_t *queue); - -#ifdef __cplusplus -} -#endif - -/** @} */ - -#endif /* APR_HAS_THREADS */ - -#endif /* APRQUEUE_H */ diff --git a/libs/apr-util/include/apr_reslist.h b/libs/apr-util/include/apr_reslist.h deleted file mode 100644 index e6b64846d2b..00000000000 --- a/libs/apr-util/include/apr_reslist.h +++ /dev/null @@ -1,144 +0,0 @@ -/* Copyright 2000-2005 The Apache Software Foundation or its licensors, as - * applicable. - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -#ifndef APR_RESLIST_H -#define APR_RESLIST_H - -/** - * @file apr_reslist.h - * @brief APR-UTIL Resource List Routines - */ - -#include "apr.h" -#include "apu.h" -#include "apr_pools.h" -#include "apr_errno.h" -#include "apr_time.h" - -#if APR_HAS_THREADS - -/** - * @defgroup APR_Util_RL Resource List Routines - * @ingroup APR_Util - * @{ - */ - -#ifdef __cplusplus -extern "C" { -#endif /* __cplusplus */ - -/** Opaque resource list object */ -typedef struct apr_reslist_t apr_reslist_t; - -/* Generic constructor called by resource list when it needs to create a - * resource. - * @param resource opaque resource - * @param param flags - * @param pool Pool - */ -typedef apr_status_t (*apr_reslist_constructor)(void **resource, void *params, - apr_pool_t *pool); - -/* Generic destructor called by resource list when it needs to destroy a - * resource. - * @param resource opaque resource - * @param param flags - * @param pool Pool - */ -typedef apr_status_t (*apr_reslist_destructor)(void *resource, void *params, - apr_pool_t *pool); - -/** - * Create a new resource list with the following parameters: - * @param reslist An address where the pointer to the new resource - * list will be stored. - * @param pool The pool to use for local storage and management - * @param min Allowed minimum number of available resources. Zero - * creates new resources only when needed. - * @param smax Resources will be destroyed to meet this maximum - * restriction as they expire. - * @param hmax Absolute maximum limit on the number of total resources. - * @param ttl If non-zero, sets the maximum amount of time a resource - * may be available while exceeding the soft limit. - * @param con Constructor routine that is called to create a new resource. - * @param de Destructor routine that is called to destroy an expired resource. - * @param params Passed to constructor and deconstructor - * @param pool The pool from which to create this resoure list. Also the - * same pool that is passed to the constructor and destructor - * routines. - */ -APU_DECLARE(apr_status_t) apr_reslist_create(apr_reslist_t **reslist, - int min, int smax, int hmax, - apr_interval_time_t ttl, - apr_reslist_constructor con, - apr_reslist_destructor de, - void *params, - apr_pool_t *pool); - -/** - * Destroy the given resource list and all resources controlled by - * this list. - * FIXME: Should this block until all resources become available, - * or maybe just destroy all the free ones, or maybe destroy - * them even though they might be in use by something else? - * Currently it will abort if there are resources that haven't - * been released, so there is an assumption that all resources - * have been released to the list before calling this function. - * @param reslist The reslist to destroy - */ -APU_DECLARE(apr_status_t) apr_reslist_destroy(apr_reslist_t *reslist); - -/** - * Retrieve a resource from the list, creating a new one if necessary. - * If we have met our maximum number of resources, we will block - * until one becomes available. - */ -APU_DECLARE(apr_status_t) apr_reslist_acquire(apr_reslist_t *reslist, - void **resource); - -/** - * Return a resource back to the list of available resources. - */ -APU_DECLARE(apr_status_t) apr_reslist_release(apr_reslist_t *reslist, - void *resource); - -/** - * Set the timeout the acquire will wait for a free resource - * when the maximum number of resources is exceeded. - * @param reslist The resource list. - * @param timeout Timeout to wait. The zero waits forewer. - */ -APU_DECLARE(void) apr_reslist_timeout_set(apr_reslist_t *reslist, - apr_interval_time_t timeout); - -/** - * Invalidate a resource in the pool - e.g. a database connection - * that returns a "lost connection" error and can't be restored. - * Use this instead of apr_reslist_release if the resource is bad. - */ -APU_DECLARE(apr_status_t) apr_reslist_invalidate(apr_reslist_t *reslist, - void *resource); - - -#ifdef __cplusplus -} -#endif - -/** @} */ - -#endif /* APR_HAS_THREADS */ - -#endif /* ! APR_RESLIST_H */ diff --git a/libs/apr-util/include/apr_rmm.h b/libs/apr-util/include/apr_rmm.h deleted file mode 100644 index a1f0d676051..00000000000 --- a/libs/apr-util/include/apr_rmm.h +++ /dev/null @@ -1,137 +0,0 @@ -/* Copyright 2000-2005 The Apache Software Foundation or its licensors, as - * applicable. - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -#ifndef APR_RMM_H -#define APR_RMM_H -/** - * @file apr_rmm.h - * @brief APR-UTIL Relocatable Memory Management Routines - */ -/** - * @defgroup APR_Util_RMM Relocatable Memory Management Routines - * @ingroup APR_Util - * @{ - */ - -#include "apr.h" -#include "apr_pools.h" -#include "apr_errno.h" -#include "apu.h" -#include "apr_anylock.h" - -#ifdef __cplusplus -extern "C" { -#endif /* __cplusplus */ - -/** Structure to access Relocatable, Managed Memory */ -typedef struct apr_rmm_t apr_rmm_t; - -/** Fundamental allocation unit, within a specific apr_rmm_t */ -typedef apr_size_t apr_rmm_off_t; - -/** - * Initialize a relocatable memory block to be managed by the apr_rmm API. - * @param rmm The relocatable memory block - * @param lock An apr_anylock_t of the appropriate type of lock, or NULL - * if no locking is required. - * @param membuf The block of relocatable memory to be managed - * @param memsize The size of relocatable memory block to be managed - * @param cont The pool to use for local storage and management - * @remark Both @param membuf and @param memsize must be aligned - * (for instance using APR_ALIGN_DEFAULT). - */ -APU_DECLARE(apr_status_t) apr_rmm_init(apr_rmm_t **rmm, apr_anylock_t *lock, - void *membuf, apr_size_t memsize, - apr_pool_t *cont); - -/** - * Destroy a managed memory block. - * @param rmm The relocatable memory block to destroy - */ -APU_DECLARE(apr_status_t) apr_rmm_destroy(apr_rmm_t *rmm); - -/** - * Attach to a relocatable memory block already managed by the apr_rmm API. - * @param rmm The relocatable memory block - * @param lock An apr_anylock_t of the appropriate type of lock - * @param membuf The block of relocatable memory already under management - * @param cont The pool to use for local storage and management - */ -APU_DECLARE(apr_status_t) apr_rmm_attach(apr_rmm_t **rmm, apr_anylock_t *lock, - void *membuf, apr_pool_t *cont); - -/** - * Detach from the managed block of memory. - * @param rmm The relocatable memory block to detach from - */ -APU_DECLARE(apr_status_t) apr_rmm_detach(apr_rmm_t *rmm); - -/** - * Allocate memory from the block of relocatable memory. - * @param rmm The relocatable memory block - * @param reqsize How much memory to allocate - */ -APU_DECLARE(apr_rmm_off_t) apr_rmm_malloc(apr_rmm_t *rmm, apr_size_t reqsize); - -/** - * Realloc memory from the block of relocatable memory. - * @param rmm The relocatable memory block - * @param entity The memory allocation to realloc - * @param reqsize The new size - */ -APU_DECLARE(apr_rmm_off_t) apr_rmm_realloc(apr_rmm_t *rmm, void *entity, apr_size_t reqsize); - -/** - * Allocate memory from the block of relocatable memory and initialize it to zero. - * @param rmm The relocatable memory block - * @param reqsize How much memory to allocate - */ -APU_DECLARE(apr_rmm_off_t) apr_rmm_calloc(apr_rmm_t *rmm, apr_size_t reqsize); - -/** - * Free allocation returned by apr_rmm_malloc or apr_rmm_calloc. - * @param rmm The relocatable memory block - * @param entity The memory allocation to free - */ -APU_DECLARE(apr_status_t) apr_rmm_free(apr_rmm_t *rmm, apr_rmm_off_t entity); - -/** - * Retrieve the physical address of a relocatable allocation of memory - * @param rmm The relocatable memory block - * @param entity The memory allocation to free - * @return address The address, aligned with APR_ALIGN_DEFAULT. - */ -APU_DECLARE(void *) apr_rmm_addr_get(apr_rmm_t *rmm, apr_rmm_off_t entity); - -/** - * Compute the offset of a relocatable allocation of memory - * @param rmm The relocatable memory block - * @param entity The physical address to convert to an offset - */ -APU_DECLARE(apr_rmm_off_t) apr_rmm_offset_get(apr_rmm_t *rmm, void *entity); - -/** - * Compute the required overallocation of memory needed to fit n allocs - * @param n The number of alloc/calloc regions desired - */ -APU_DECLARE(apr_size_t) apr_rmm_overhead_get(int n); - -#ifdef __cplusplus -} -#endif -/** @} */ -#endif /* ! APR_RMM_H */ - diff --git a/libs/apr-util/include/apr_sdbm.h b/libs/apr-util/include/apr_sdbm.h deleted file mode 100644 index 7fcf7f6e539..00000000000 --- a/libs/apr-util/include/apr_sdbm.h +++ /dev/null @@ -1,175 +0,0 @@ -/* Copyright 2000-2005 The Apache Software Foundation or its licensors, as - * applicable. - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -/* - * sdbm - ndbm work-alike hashed database library - * based on Per-Ake Larson's Dynamic Hashing algorithms. BIT 18 (1978). - * author: oz@nexus.yorku.ca - * status: ex-public domain - */ - -#ifndef APR_SDBM_H -#define APR_SDBM_H - -#include "apu.h" -#include "apr_errno.h" -#include "apr_file_io.h" /* for apr_fileperms_t */ - -/** - * @file apr_sdbm.h - * @brief apr-util SDBM library - */ -/** - * @defgroup APR_Util_DBM_SDBM SDBM library - * @ingroup APR_Util_DBM - * @{ - */ - -/** - * Structure for referencing an sdbm - */ -typedef struct apr_sdbm_t apr_sdbm_t; - -/** - * Structure for referencing the datum record within an sdbm - */ -typedef struct { - /** pointer to the data stored/retrieved */ - char *dptr; - /** size of data */ - int dsize; -} apr_sdbm_datum_t; - -/* The extensions used for the database files */ -/** SDBM Directory file extension */ -#define APR_SDBM_DIRFEXT ".dir" -/** SDBM page file extension */ -#define APR_SDBM_PAGFEXT ".pag" - -/* flags to sdbm_store */ -#define APR_SDBM_INSERT 0 /**< Insert */ -#define APR_SDBM_REPLACE 1 /**< Replace */ -#define APR_SDBM_INSERTDUP 2 /**< Insert with duplicates */ - -/** - * Open an sdbm database by file name - * @param db The newly opened database - * @param name The sdbm file to open - * @param mode The flag values (APR_READ and APR_BINARY flags are implicit) - *
- *           APR_WRITE          open for read-write access
- *           APR_CREATE         create the sdbm if it does not exist
- *           APR_TRUNCATE       empty the contents of the sdbm
- *           APR_EXCL           fail for APR_CREATE if the file exists
- *           APR_DELONCLOSE     delete the sdbm when closed
- *           APR_SHARELOCK      support locking across process/machines
- * 
- * @param perms Permissions to apply to if created - * @param p The pool to use when creating the sdbm - * @remark The sdbm name is not a true file name, as sdbm appends suffixes - * for seperate data and index files. - */ -APU_DECLARE(apr_status_t) apr_sdbm_open(apr_sdbm_t **db, const char *name, - apr_int32_t mode, - apr_fileperms_t perms, apr_pool_t *p); - -/** - * Close an sdbm file previously opened by apr_sdbm_open - * @param db The database to close - */ -APU_DECLARE(apr_status_t) apr_sdbm_close(apr_sdbm_t *db); - -/** - * Lock an sdbm database for concurency of multiple operations - * @param db The database to lock - * @param type The lock type - *
- *           APR_FLOCK_SHARED
- *           APR_FLOCK_EXCLUSIVE
- * 
- * @remark Calls to apr_sdbm_lock may be nested. All apr_sdbm functions - * perform implicit locking. Since an APR_FLOCK_SHARED lock cannot be - * portably promoted to an APR_FLOCK_EXCLUSIVE lock, apr_sdbm_store and - * apr_sdbm_delete calls will fail if an APR_FLOCK_SHARED lock is held. - * The apr_sdbm_lock call requires the database to be opened with the - * APR_SHARELOCK mode value. - */ -APU_DECLARE(apr_status_t) apr_sdbm_lock(apr_sdbm_t *db, int type); - -/** - * Release an sdbm lock previously aquired by apr_sdbm_lock - * @param db The database to unlock - */ -APU_DECLARE(apr_status_t) apr_sdbm_unlock(apr_sdbm_t *db); - -/** - * Fetch an sdbm record value by key - * @param db The database - * @param value The value datum retrieved for this record - * @param key The key datum to find this record - */ -APU_DECLARE(apr_status_t) apr_sdbm_fetch(apr_sdbm_t *db, - apr_sdbm_datum_t *value, - apr_sdbm_datum_t key); - -/** - * Store an sdbm record value by key - * @param db The database - * @param key The key datum to store this record by - * @param value The value datum to store in this record - * @param opt The method used to store the record - *
- *           APR_SDBM_INSERT     return an error if the record exists
- *           APR_SDBM_REPLACE    overwrite any existing record for key
- * 
- */ -APU_DECLARE(apr_status_t) apr_sdbm_store(apr_sdbm_t *db, apr_sdbm_datum_t key, - apr_sdbm_datum_t value, int opt); - -/** - * Delete an sdbm record value by key - * @param db The database - * @param key The key datum of the record to delete - * @remark It is not an error to delete a non-existent record. - */ -APU_DECLARE(apr_status_t) apr_sdbm_delete(apr_sdbm_t *db, - const apr_sdbm_datum_t key); - -/** - * Retrieve the first record key from a dbm - * @param db The database - * @param key The key datum of the first record - * @remark The keys returned are not ordered. To traverse the list of keys - * for an sdbm opened with APR_SHARELOCK, the caller must use apr_sdbm_lock - * prior to retrieving the first record, and hold the lock until after the - * last call to apr_sdbm_nextkey. - */ -APU_DECLARE(apr_status_t) apr_sdbm_firstkey(apr_sdbm_t *db, apr_sdbm_datum_t *key); - -/** - * Retrieve the next record key from an sdbm - * @param db The database - * @param key The key datum of the next record - */ -APU_DECLARE(apr_status_t) apr_sdbm_nextkey(apr_sdbm_t *db, apr_sdbm_datum_t *key); - -/** - * Returns true if the sdbm database opened for read-only access - * @param db The database to test - */ -APU_DECLARE(int) apr_sdbm_rdonly(apr_sdbm_t *db); -/** @} */ -#endif /* APR_SDBM_H */ diff --git a/libs/apr-util/include/apr_sha1.h b/libs/apr-util/include/apr_sha1.h deleted file mode 100644 index 1ad506556de..00000000000 --- a/libs/apr-util/include/apr_sha1.h +++ /dev/null @@ -1,121 +0,0 @@ -/* Copyright 2001-2005 The Apache Software Foundation or its licensors, as - * applicable. - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ -/* NIST Secure Hash Algorithm - * heavily modified by Uwe Hollerbach uh@alumni.caltech edu - * from Peter C. Gutmann's implementation as found in - * Applied Cryptography by Bruce Schneier - * This code is hereby placed in the public domain - */ - -#ifndef APR_SHA1_H -#define APR_SHA1_H - -#include "apu.h" -#include "apr_general.h" - -#ifdef __cplusplus -extern "C" { -#endif - -/** - * @file apr_sha1.h - * @brief APR-UTIL SHA1 library - */ - -/** size of the SHA1 DIGEST */ -#define APR_SHA1_DIGESTSIZE 20 - -/** - * Define the Magic String prefix that identifies a password as being - * hashed using our algorithm. - */ -#define APR_SHA1PW_ID "{SHA}" - -/** length of the SHA Password */ -#define APR_SHA1PW_IDLEN 5 - -/** @see apr_sha1_ctx_t */ -typedef struct apr_sha1_ctx_t apr_sha1_ctx_t; - -/** - * SHA1 context structure - */ -struct apr_sha1_ctx_t { - /** message digest */ - apr_uint32_t digest[5]; - /** 64-bit bit counts */ - apr_uint32_t count_lo, count_hi; - /** SHA data buffer */ - apr_uint32_t data[16]; - /** unprocessed amount in data */ - int local; -}; - -/** - * Provide a means to SHA1 crypt/encode a plaintext password in a way which - * makes password file compatible with those commonly use in netscape web - * and ldap installations. - * @param clear The plaintext password - * @param len The length of the plaintext password - * @param out The encrypted/encoded password - * @note SHA1 support is useful for migration purposes, but is less - * secure than Apache's password format, since Apache's (MD5) - * password format uses a random eight character salt to generate - * one of many possible hashes for the same password. Netscape - * uses plain SHA1 without a salt, so the same password - * will always generate the same hash, making it easier - * to break since the search space is smaller. - */ -APU_DECLARE(void) apr_sha1_base64(const char *clear, int len, char *out); - -/** - * Initialize the SHA digest - * @param context The SHA context to initialize - */ -APU_DECLARE(void) apr_sha1_init(apr_sha1_ctx_t *context); - -/** - * Update the SHA digest - * @param context The SHA1 context to update - * @param input The buffer to add to the SHA digest - * @param inputLen The length of the input buffer - */ -APU_DECLARE(void) apr_sha1_update(apr_sha1_ctx_t *context, const char *input, - unsigned int inputLen); - -/** - * Update the SHA digest with binary data - * @param context The SHA1 context to update - * @param input The buffer to add to the SHA digest - * @param inputLen The length of the input buffer - */ -APU_DECLARE(void) apr_sha1_update_binary(apr_sha1_ctx_t *context, - const unsigned char *input, - unsigned int inputLen); - -/** - * Finish computing the SHA digest - * @param digest the output buffer in which to store the digest - * @param context The context to finalize - */ -APU_DECLARE(void) apr_sha1_final(unsigned char digest[APR_SHA1_DIGESTSIZE], - apr_sha1_ctx_t *context); - -#ifdef __cplusplus -} -#endif - -#endif /* APR_SHA1_H */ diff --git a/libs/apr-util/include/apr_strmatch.h b/libs/apr-util/include/apr_strmatch.h deleted file mode 100644 index 4753318b754..00000000000 --- a/libs/apr-util/include/apr_strmatch.h +++ /dev/null @@ -1,81 +0,0 @@ -/* Copyright 2002-2005 The Apache Software Foundation or its licensors, as - * applicable. - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -#ifndef APR_STRMATCH_H -#define APR_STRMATCH_H -/** - * @file apr_strmatch.h - * @brief APR-UTIL string matching routines - */ - -#include "apu.h" -#include "apr_pools.h" - -#ifdef __cplusplus -extern "C" { -#endif - -/** - * @defgroup APR_Util_StrMatch String matching routines - * @ingroup APR_Util - * @{ - */ - -/** @see apr_strmatch_pattern */ -typedef struct apr_strmatch_pattern apr_strmatch_pattern; - -/** - * Precompiled search pattern - */ -struct apr_strmatch_pattern { - /** Function called to compare */ - const char *(*compare)(const apr_strmatch_pattern *this_pattern, - const char *s, apr_size_t slen); - const char *pattern; /**< Current pattern */ - apr_size_t length; /**< Current length */ - void *context; /**< hook to add precomputed metadata */ -}; - -#if defined(DOXYGEN) -/** - * Search for a precompiled pattern within a string - * @param pattern The pattern - * @param s The string in which to search for the pattern - * @param slen The length of s (excluding null terminator) - * @return A pointer to the first instance of the pattern in s, or - * NULL if not found - */ -APU_DECLARE(const char *) apr_strmatch(const apr_strmatch_pattern *pattern, - const char *s, apr_size_t slen); -#else -#define apr_strmatch(pattern, s, slen) (*((pattern)->compare))((pattern), (s), (slen)) -#endif - -/** - * Precompile a pattern for matching using the Boyer-Moore-Horspool algorithm - * @param p The pool from which to allocate the pattern - * @param s The pattern string - * @param case_sensitive Whether the matching should be case-sensitive - * @return a pointer to the compiled pattern, or NULL if compilation fails - */ -APU_DECLARE(const apr_strmatch_pattern *) apr_strmatch_precompile(apr_pool_t *p, const char *s, int case_sensitive); - -/** @} */ -#ifdef __cplusplus -} -#endif - -#endif /* !APR_STRMATCH_H */ diff --git a/libs/apr-util/include/apr_uri.h b/libs/apr-util/include/apr_uri.h deleted file mode 100644 index 82a86b24e5c..00000000000 --- a/libs/apr-util/include/apr_uri.h +++ /dev/null @@ -1,178 +0,0 @@ -/* Copyright 2000-2005 The Apache Software Foundation or its licensors, as - * applicable. - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -/* - * apr_uri.h: External Interface of apr_uri.c - */ - -/** - * @file apr_uri.h - * @brief APR-UTIL URI Routines - */ - -#ifndef APR_URI_H -#define APR_URI_H - -#include "apu.h" - -#include "apr_network_io.h" - -#ifdef __cplusplus -extern "C" { -#endif - -/** - * @defgroup APR_Util_URI URI - * @ingroup APR_Util - * @{ - */ - -#define APR_URI_FTP_DEFAULT_PORT 21 /**< default FTP port */ -#define APR_URI_SSH_DEFAULT_PORT 22 /**< default SSH port */ -#define APR_URI_TELNET_DEFAULT_PORT 23 /**< default telnet port */ -#define APR_URI_GOPHER_DEFAULT_PORT 70 /**< default Gopher port */ -#define APR_URI_HTTP_DEFAULT_PORT 80 /**< default HTTP port */ -#define APR_URI_POP_DEFAULT_PORT 110 /**< default POP port */ -#define APR_URI_NNTP_DEFAULT_PORT 119 /**< default NNTP port */ -#define APR_URI_IMAP_DEFAULT_PORT 143 /**< default IMAP port */ -#define APR_URI_PROSPERO_DEFAULT_PORT 191 /**< default Prospero port */ -#define APR_URI_WAIS_DEFAULT_PORT 210 /**< default WAIS port */ -#define APR_URI_LDAP_DEFAULT_PORT 389 /**< default LDAP port */ -#define APR_URI_HTTPS_DEFAULT_PORT 443 /**< default HTTPS port */ -#define APR_URI_RTSP_DEFAULT_PORT 554 /**< default RTSP port */ -#define APR_URI_SNEWS_DEFAULT_PORT 563 /**< default SNEWS port */ -#define APR_URI_ACAP_DEFAULT_PORT 674 /**< default ACAP port */ -#define APR_URI_NFS_DEFAULT_PORT 2049 /**< default NFS port */ -#define APR_URI_TIP_DEFAULT_PORT 3372 /**< default TIP port */ -#define APR_URI_SIP_DEFAULT_PORT 5060 /**< default SIP port */ - -/** Flags passed to unparse_uri_components(): */ -/** suppress "scheme://user\@site:port" */ -#define APR_URI_UNP_OMITSITEPART (1U<<0) -/** Just omit user */ -#define APR_URI_UNP_OMITUSER (1U<<1) -/** Just omit password */ -#define APR_URI_UNP_OMITPASSWORD (1U<<2) -/** omit "user:password\@" part */ -#define APR_URI_UNP_OMITUSERINFO (APR_URI_UNP_OMITUSER | \ - APR_URI_UNP_OMITPASSWORD) -/** Show plain text password (default: show XXXXXXXX) */ -#define APR_URI_UNP_REVEALPASSWORD (1U<<3) -/** Show "scheme://user\@site:port" only */ -#define APR_URI_UNP_OMITPATHINFO (1U<<4) -/** Omit the "?queryarg" from the path */ -#define APR_URI_UNP_OMITQUERY (1U<<5) - -/** @see apr_uri_t */ -typedef struct apr_uri_t apr_uri_t; - -/** - * A structure to encompass all of the fields in a uri - */ -struct apr_uri_t { - /** scheme ("http"/"ftp"/...) */ - char *scheme; - /** combined [user[:password]\@]host[:port] */ - char *hostinfo; - /** user name, as in http://user:passwd\@host:port/ */ - char *user; - /** password, as in http://user:passwd\@host:port/ */ - char *password; - /** hostname from URI (or from Host: header) */ - char *hostname; - /** port string (integer representation is in "port") */ - char *port_str; - /** the request path (or "/" if only scheme://host was given) */ - char *path; - /** Everything after a '?' in the path, if present */ - char *query; - /** Trailing "#fragment" string, if present */ - char *fragment; - - /** structure returned from gethostbyname() */ - struct hostent *hostent; - - /** The port number, numeric, valid only if port_str != NULL */ - apr_port_t port; - - /** has the structure been initialized */ - unsigned is_initialized:1; - - /** has the DNS been looked up yet */ - unsigned dns_looked_up:1; - /** has the dns been resolved yet */ - unsigned dns_resolved:1; -}; - -/* apr_uri.c */ -/** - * Return the default port for a given scheme. The schemes recognized are - * http, ftp, https, gopher, wais, nntp, snews, and prospero - * @param scheme_str The string that contains the current scheme - * @return The default port for this scheme - */ -APU_DECLARE(apr_port_t) apr_uri_port_of_scheme(const char *scheme_str); - -/** - * Unparse a apr_uri_t structure to an URI string. Optionally - * suppress the password for security reasons. - * @param p The pool to allocate out of - * @param uptr All of the parts of the uri - * @param flags How to unparse the uri. One of: - *
- *    APR_URI_UNP_OMITSITEPART        Suppress "scheme://user\@site:port" 
- *    APR_URI_UNP_OMITUSER            Just omit user 
- *    APR_URI_UNP_OMITPASSWORD        Just omit password 
- *    APR_URI_UNP_OMITUSERINFO        Omit "user:password\@" part
- *    APR_URI_UNP_REVEALPASSWORD      Show plain text password (default: show XXXXXXXX)
- *    APR_URI_UNP_OMITPATHINFO        Show "scheme://user\@site:port" only 
- *    APR_URI_UNP_OMITQUERY           Omit "?queryarg" or "#fragment" 
- * 
- * @return The uri as a string - */ -APU_DECLARE(char *) apr_uri_unparse(apr_pool_t *p, - const apr_uri_t *uptr, - unsigned flags); - -/** - * Parse a given URI, fill in all supplied fields of a apr_uri_t - * structure. This eliminates the necessity of extracting host, port, - * path, query info repeatedly in the modules. - * @param p The pool to allocate out of - * @param uri The uri to parse - * @param uptr The apr_uri_t to fill out - * @return APR_SUCCESS for success or error code - */ -APU_DECLARE(apr_status_t) apr_uri_parse(apr_pool_t *p, const char *uri, - apr_uri_t *uptr); - -/** - * Special case for CONNECT parsing: it comes with the hostinfo part only - * @param p The pool to allocate out of - * @param hostinfo The hostinfo string to parse - * @param uptr The apr_uri_t to fill out - * @return APR_SUCCESS for success or error code - */ -APU_DECLARE(apr_status_t) apr_uri_parse_hostinfo(apr_pool_t *p, - const char *hostinfo, - apr_uri_t *uptr); - -/** @} */ -#ifdef __cplusplus -} -#endif - -#endif /* APR_URI_H */ diff --git a/libs/apr-util/include/apr_uuid.h b/libs/apr-util/include/apr_uuid.h deleted file mode 100644 index 820d7409dbe..00000000000 --- a/libs/apr-util/include/apr_uuid.h +++ /dev/null @@ -1,76 +0,0 @@ -/* Copyright 2000-2005 The Apache Software Foundation or its licensors, as - * applicable. - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -/** - * @file apr_uuid.h - * @brief APR UUID library - */ -#ifndef APR_UUID_H -#define APR_UUID_H - -#include "apu.h" -#include "apr_errno.h" - -#ifdef __cplusplus -extern "C" { -#endif /* __cplusplus */ - -/** - * @defgroup APR_UUID UUID Handling - * @ingroup APR - * @{ - */ - -/** - * we represent a UUID as a block of 16 bytes. - */ - -typedef struct { - unsigned char data[16]; /**< the actual UUID */ -} apr_uuid_t; - -/** UUIDs are formatted as: 00112233-4455-6677-8899-AABBCCDDEEFF */ -#define APR_UUID_FORMATTED_LENGTH 36 - - -/** - * Generate and return a (new) UUID - * @param uuid The resulting UUID - */ -APU_DECLARE(void) apr_uuid_get(apr_uuid_t *uuid); - -/** - * Format a UUID into a string, following the standard format - * @param buffer The buffer to place the formatted UUID string into. It must - * be at least APR_UUID_FORMATTED_LENGTH + 1 bytes long to hold - * the formatted UUID and a null terminator - * @param uuid The UUID to format - */ -APU_DECLARE(void) apr_uuid_format(char *buffer, const apr_uuid_t *uuid); - -/** - * Parse a standard-format string into a UUID - * @param uuid The resulting UUID - * @param uuid_str The formatted UUID - */ -APU_DECLARE(apr_status_t) apr_uuid_parse(apr_uuid_t *uuid, const char *uuid_str); - -/** @} */ -#ifdef __cplusplus -} -#endif - -#endif /* APR_UUID_H */ diff --git a/libs/apr-util/include/apr_xlate.h b/libs/apr-util/include/apr_xlate.h deleted file mode 100644 index 19402a76cd4..00000000000 --- a/libs/apr-util/include/apr_xlate.h +++ /dev/null @@ -1,163 +0,0 @@ -/* Copyright 2000-2005 The Apache Software Foundation or its licensors, as - * applicable. - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -#ifndef APR_XLATE_H -#define APR_XLATE_H - -#include "apu.h" -#include "apr_pools.h" -#include "apr_errno.h" - -#ifdef __cplusplus -extern "C" { -#endif /* __cplusplus */ - -/** - * @file apr_xlate.h - * @brief APR I18N translation library - */ - -/** - * @defgroup APR_XLATE I18N translation library - * @ingroup APR - * @{ - */ -/** Opaque translation buffer */ -typedef struct apr_xlate_t apr_xlate_t; - -/** - * Set up for converting text from one charset to another. - * @param convset The handle to be filled in by this function - * @param topage The name of the target charset - * @param frompage The name of the source charset - * @param pool The pool to use - * @remark - * Specify APR_DEFAULT_CHARSET for one of the charset - * names to indicate the charset of the source code at - * compile time. This is useful if there are literal - * strings in the source code which must be translated - * according to the charset of the source code. - * APR_DEFAULT_CHARSET is not useful if the source code - * of the caller was not encoded in the same charset as - * APR at compile time. - * - * @remark - * Specify APR_LOCALE_CHARSET for one of the charset - * names to indicate the charset of the current locale. - * - * @remark - * Return APR_EINVAL if unable to procure a convset, or APR_ENOTIMPL - * if charset transcoding is not available in this instance of - * apr-util at all (i.e., APR_HAS_XLATE is undefined). - */ -APU_DECLARE(apr_status_t) apr_xlate_open(apr_xlate_t **convset, - const char *topage, - const char *frompage, - apr_pool_t *pool); - -/** - * This is to indicate the charset of the sourcecode at compile time - * names to indicate the charset of the source code at - * compile time. This is useful if there are literal - * strings in the source code which must be translated - * according to the charset of the source code. - */ -#define APR_DEFAULT_CHARSET (const char *)0 -/** - * To indicate charset names of the current locale - */ -#define APR_LOCALE_CHARSET (const char *)1 - -/** - * Find out whether or not the specified conversion is single-byte-only. - * @param convset The handle allocated by apr_xlate_open, specifying the - * parameters of conversion - * @param onoff Output: whether or not the conversion is single-byte-only - * @remark - * Return APR_ENOTIMPL if charset transcoding is not available - * in this instance of apr-util (i.e., APR_HAS_XLATE is undefined). - */ -APU_DECLARE(apr_status_t) apr_xlate_sb_get(apr_xlate_t *convset, int *onoff); - -/** - * Convert a buffer of text from one codepage to another. - * @param convset The handle allocated by apr_xlate_open, specifying - * the parameters of conversion - * @param inbuf The address of the source buffer - * @param inbytes_left Input: the amount of input data to be translated - * Output: the amount of input data not yet translated - * @param outbuf The address of the destination buffer - * @param outbytes_left Input: the size of the output buffer - * Output: the amount of the output buffer not yet used - * @remark - * Returns APR_ENOTIMPL if charset transcoding is not available - * in this instance of apr-util (i.e., APR_HAS_XLATE is undefined). - * Returns APR_INCOMPLETE if the input buffer ends in an incomplete - * multi-byte character. - * - * To correctly terminate the output buffer for some multi-byte - * character set encodings, a final call must be made to this function - * after the complete input string has been converted, passing - * the inbuf and inbytes_left parameters as NULL. (Note that this - * mode only works from version 1.1.0 onwards) - */ -APU_DECLARE(apr_status_t) apr_xlate_conv_buffer(apr_xlate_t *convset, - const char *inbuf, - apr_size_t *inbytes_left, - char *outbuf, - apr_size_t *outbytes_left); - -/* @see apr_file_io.h the comment in apr_file_io.h about this hack */ -#ifdef APR_NOT_DONE_YET -/** - * The purpose of apr_xlate_conv_char is to translate one character - * at a time. This needs to be written carefully so that it works - * with double-byte character sets. - * @param convset The handle allocated by apr_xlate_open, specifying the - * parameters of conversion - * @param inchar The character to convert - * @param outchar The converted character - */ -APU_DECLARE(apr_status_t) apr_xlate_conv_char(apr_xlate_t *convset, - char inchar, char outchar); -#endif - -/** - * Convert a single-byte character from one charset to another. - * @param convset The handle allocated by apr_xlate_open, specifying the - * parameters of conversion - * @param inchar The single-byte character to convert. - * @warning This only works when converting between single-byte character sets. - * -1 will be returned if the conversion can't be performed. - */ -APU_DECLARE(apr_int32_t) apr_xlate_conv_byte(apr_xlate_t *convset, - unsigned char inchar); - -/** - * Close a codepage translation handle. - * @param convset The codepage translation handle to close - * @remark - * Return APR_ENOTIMPL if charset transcoding is not available - * in this instance of apr-util (i.e., APR_HAS_XLATE is undefined). - */ -APU_DECLARE(apr_status_t) apr_xlate_close(apr_xlate_t *convset); - -/** @} */ -#ifdef __cplusplus -} -#endif - -#endif /* ! APR_XLATE_H */ diff --git a/libs/apr-util/include/apr_xml.h b/libs/apr-util/include/apr_xml.h deleted file mode 100644 index ab184e7a7e4..00000000000 --- a/libs/apr-util/include/apr_xml.h +++ /dev/null @@ -1,356 +0,0 @@ -/* Copyright 2000-2005 The Apache Software Foundation or its licensors, as - * applicable. - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ -/** - * @file apr_xml.h - * @brief APR-UTIL XML Library - */ -#ifndef APR_XML_H -#define APR_XML_H - -/** - * @defgroup APR_Util_XML XML - * @ingroup APR_Util - * @{ - */ -#include "apr_pools.h" -#include "apr_tables.h" -#include "apr_file_io.h" - -#include "apu.h" -#if APR_CHARSET_EBCDIC -#include "apr_xlate.h" -#endif - -#ifdef __cplusplus -extern "C" { -#endif - -/** - * @package Apache XML library - */ - -/* -------------------------------------------------------------------- */ - -/* ### these will need to move at some point to a more logical spot */ - -/** @see apr_text */ -typedef struct apr_text apr_text; - -/** Structure to keep a linked list of pieces of text */ -struct apr_text { - /** The current piece of text */ - const char *text; - /** a pointer to the next piece of text */ - struct apr_text *next; -}; - -/** @see apr_text_header */ -typedef struct apr_text_header apr_text_header; - -/** A list of pieces of text */ -struct apr_text_header { - /** The first piece of text in the list */ - apr_text *first; - /** The last piece of text in the list */ - apr_text *last; -}; - -/** - * Append a piece of text to the end of a list - * @param p The pool to allocate out of - * @param hdr The text header to append to - * @param text The new text to append - */ -APU_DECLARE(void) apr_text_append(apr_pool_t *p, apr_text_header *hdr, - const char *text); - - -/* -------------------------------------------------------------------- -** -** XML PARSING -*/ - -/* -** Qualified namespace values -** -** APR_XML_NS_DAV_ID -** We always insert the "DAV:" namespace URI at the head of the -** namespace array. This means that it will always be at ID==0, -** making it much easier to test for. -** -** APR_XML_NS_NONE -** This special ID is used for two situations: -** -** 1) The namespace prefix begins with "xml" (and we do not know -** what it means). Namespace prefixes with "xml" (any case) as -** their first three characters are reserved by the XML Namespaces -** specification for future use. mod_dav will pass these through -** unchanged. When this identifier is used, the prefix is LEFT in -** the element/attribute name. Downstream processing should not -** prepend another prefix. -** -** 2) The element/attribute does not have a namespace. -** -** a) No prefix was used, and a default namespace has not been -** defined. -** b) No prefix was used, and the default namespace was specified -** to mean "no namespace". This is done with a namespace -** declaration of: xmlns="" -** (this declaration is typically used to override a previous -** specification for the default namespace) -** -** In these cases, we need to record that the elem/attr has no -** namespace so that we will not attempt to prepend a prefix. -** All namespaces that are used will have a prefix assigned to -** them -- mod_dav will never set or use the default namespace -** when generating XML. This means that "no prefix" will always -** mean "no namespace". -** -** In both cases, the XML generation will avoid prepending a prefix. -** For the first case, this means the original prefix/name will be -** inserted into the output stream. For the latter case, it means -** the name will have no prefix, and since we never define a default -** namespace, this means it will have no namespace. -** -** Note: currently, mod_dav understands the "xmlns" prefix and the -** "xml:lang" attribute. These are handled specially (they aren't -** left within the XML tree), so the APR_XML_NS_NONE value won't ever -** really apply to these values. -*/ -#define APR_XML_NS_DAV_ID 0 /**< namespace ID for "DAV:" */ -#define APR_XML_NS_NONE -10 /**< no namespace for this elem/attr */ - -#define APR_XML_NS_ERROR_BASE -100 /**< used only during processing */ -/** Is this namespace an error? */ -#define APR_XML_NS_IS_ERROR(e) ((e) <= APR_XML_NS_ERROR_BASE) - -/** @see apr_xml_attr */ -typedef struct apr_xml_attr apr_xml_attr; -/** @see apr_xml_elem */ -typedef struct apr_xml_elem apr_xml_elem; -/** @see apr_xml_doc */ -typedef struct apr_xml_doc apr_xml_doc; - -/** apr_xml_attr: holds a parsed XML attribute */ -struct apr_xml_attr { - /** attribute name */ - const char *name; - /** index into namespace array */ - int ns; - - /** attribute value */ - const char *value; - - /** next attribute */ - struct apr_xml_attr *next; -}; - -/** apr_xml_elem: holds a parsed XML element */ -struct apr_xml_elem { - /** element name */ - const char *name; - /** index into namespace array */ - int ns; - /** xml:lang for attrs/contents */ - const char *lang; - - /** cdata right after start tag */ - apr_text_header first_cdata; - /** cdata after MY end tag */ - apr_text_header following_cdata; - - /** parent element */ - struct apr_xml_elem *parent; - /** next (sibling) element */ - struct apr_xml_elem *next; - /** first child element */ - struct apr_xml_elem *first_child; - /** first attribute */ - struct apr_xml_attr *attr; - - /* used only during parsing */ - /** last child element */ - struct apr_xml_elem *last_child; - /** namespaces scoped by this elem */ - struct apr_xml_ns_scope *ns_scope; - - /* used by modules during request processing */ - /** Place for modules to store private data */ - void *priv; -}; - -/** Is this XML element empty? */ -#define APR_XML_ELEM_IS_EMPTY(e) ((e)->first_child == NULL && \ - (e)->first_cdata.first == NULL) - -/** apr_xml_doc: holds a parsed XML document */ -struct apr_xml_doc { - /** root element */ - apr_xml_elem *root; - /** array of namespaces used */ - apr_array_header_t *namespaces; -}; - -/** Opaque XML parser structure */ -typedef struct apr_xml_parser apr_xml_parser; - -/** - * Create an XML parser - * @param pool The pool for allocating the parser and the parse results. - * @return The new parser. - */ -APU_DECLARE(apr_xml_parser *) apr_xml_parser_create(apr_pool_t *pool); - -/** - * Parse a File, producing a xml_doc - * @param p The pool for allocating the parse results. - * @param parser A pointer to *parser (needed so calling function can get - * errors), will be set to NULL on successfull completion. - * @param ppdoc A pointer to *apr_xml_doc (which has the parsed results in it) - * @param xmlfd A file to read from. - * @param buffer_length Buffer length which would be suitable - * @return Any errors found during parsing. - */ -APU_DECLARE(apr_status_t) apr_xml_parse_file(apr_pool_t *p, - apr_xml_parser **parser, - apr_xml_doc **ppdoc, - apr_file_t *xmlfd, - apr_size_t buffer_length); - - -/** - * Feed input into the parser - * @param parser The XML parser for parsing this data. - * @param data The data to parse. - * @param len The length of the data. - * @return Any errors found during parsing. - * @remark Use apr_xml_parser_geterror() to get more error information. - */ -APU_DECLARE(apr_status_t) apr_xml_parser_feed(apr_xml_parser *parser, - const char *data, - apr_size_t len); - -/** - * Terminate the parsing and return the result - * @param parser The XML parser for parsing this data. - * @param pdoc The resulting parse information. May be NULL to simply - * terminate the parsing without fetching the info. - * @return Any errors found during the final stage of parsing. - * @remark Use apr_xml_parser_geterror() to get more error information. - */ -APU_DECLARE(apr_status_t) apr_xml_parser_done(apr_xml_parser *parser, - apr_xml_doc **pdoc); - -/** - * Fetch additional error information from the parser. - * @param parser The XML parser to query for errors. - * @param errbuf A buffer for storing error text. - * @param errbufsize The length of the error text buffer. - * @return The error buffer - */ -APU_DECLARE(char *) apr_xml_parser_geterror(apr_xml_parser *parser, - char *errbuf, - apr_size_t errbufsize); - - -/** - * Converts an XML element tree to flat text - * @param p The pool to allocate out of - * @param elem The XML element to convert - * @param style How to covert the XML. One of: - *
- *     APR_XML_X2T_FULL                start tag, contents, end tag 
- *     APR_XML_X2T_INNER               contents only 
- *     APR_XML_X2T_LANG_INNER          xml:lang + inner contents 
- *     APR_XML_X2T_FULL_NS_LANG        FULL + ns defns + xml:lang 
- * 
- * @param namespaces The namespace of the current XML element - * @param ns_map Namespace mapping - * @param pbuf Buffer to put the converted text into - * @param psize Size of the converted text - */ -APU_DECLARE(void) apr_xml_to_text(apr_pool_t *p, const apr_xml_elem *elem, - int style, apr_array_header_t *namespaces, - int *ns_map, const char **pbuf, - apr_size_t *psize); - -/* style argument values: */ -#define APR_XML_X2T_FULL 0 /**< start tag, contents, end tag */ -#define APR_XML_X2T_INNER 1 /**< contents only */ -#define APR_XML_X2T_LANG_INNER 2 /**< xml:lang + inner contents */ -#define APR_XML_X2T_FULL_NS_LANG 3 /**< FULL + ns defns + xml:lang */ - -/** - * empty XML element - * @param p The pool to allocate out of - * @param elem The XML element to empty - * @return the string that was stored in the XML element - */ -APU_DECLARE(const char *) apr_xml_empty_elem(apr_pool_t *p, - const apr_xml_elem *elem); - -/** - * quote an XML string - * Replace '<', '>', and '&' with '<', '>', and '&'. - * @param p The pool to allocate out of - * @param s The string to quote - * @param quotes If quotes is true, then replace '"' with '"'. - * @return The quoted string - * @note If the string does not contain special characters, it is not - * duplicated into the pool and the original string is returned. - */ -APU_DECLARE(const char *) apr_xml_quote_string(apr_pool_t *p, const char *s, - int quotes); - -/** - * Quote an XML element - * @param p The pool to allocate out of - * @param elem The element to quote - */ -APU_DECLARE(void) apr_xml_quote_elem(apr_pool_t *p, apr_xml_elem *elem); - -/* manage an array of unique URIs: apr_xml_insert_uri() and APR_XML_URI_ITEM() */ - -/** - * return the URI's (existing) index, or insert it and return a new index - * @param uri_array array to insert into - * @param uri The uri to insert - * @return int The uri's index - */ -APU_DECLARE(int) apr_xml_insert_uri(apr_array_header_t *uri_array, - const char *uri); - -/** Get the URI item for this XML element */ -#define APR_XML_GET_URI_ITEM(ary, i) (((const char * const *)(ary)->elts)[i]) - -#if APR_CHARSET_EBCDIC -/** - * Convert parsed tree in EBCDIC - * @param p The pool to allocate out of - * @param pdoc The apr_xml_doc to convert. - * @param xlate The translation handle to use. - * @return Any errors found during conversion. - */ -APU_DECLARE(apr_status_t) apr_xml_parser_convert_doc(apr_pool_t *p, - apr_xml_doc *pdoc, - apr_xlate_t *convset); -#endif - -#ifdef __cplusplus -} -#endif -/** @} */ -#endif /* APR_XML_H */ diff --git a/libs/apr-util/include/apu.h.in b/libs/apr-util/include/apu.h.in deleted file mode 100644 index 5bd7d00f564..00000000000 --- a/libs/apr-util/include/apu.h.in +++ /dev/null @@ -1,91 +0,0 @@ -/* Copyright 2000-2005 The Apache Software Foundation or its licensors, as - * applicable. - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -/* - * apu.h is generated from apu.h.in by configure -- do not edit apu.h - */ -/* @file apu.h - * @brief APR-Utility main file - */ -/** - * @defgroup APR_Util APR Utility Functions - * @{ - */ - - -#ifndef APU_H -#define APU_H - -/** - * APU_DECLARE_EXPORT is defined when building the APR-UTIL dynamic library, - * so that all public symbols are exported. - * - * APU_DECLARE_STATIC is defined when including the APR-UTIL public headers, - * to provide static linkage when the dynamic library may be unavailable. - * - * APU_DECLARE_STATIC and APU_DECLARE_EXPORT are left undefined when - * including the APR-UTIL public headers, to import and link the symbols from - * the dynamic APR-UTIL library and assure appropriate indirection and calling - * conventions at compile time. - */ - -/** - * The public APR-UTIL functions are declared with APU_DECLARE(), so they may - * use the most appropriate calling convention. Public APR functions with - * variable arguments must use APU_DECLARE_NONSTD(). - * - * @deffunc APU_DECLARE(rettype) apr_func(args); - */ -#define APU_DECLARE(type) type -/** - * The public APR-UTIL functions using variable arguments are declared with - * APU_DECLARE_NONSTD(), as they must use the C language calling convention. - * - * @deffunc APU_DECLARE_NONSTD(rettype) apr_func(args, ...); - */ -#define APU_DECLARE_NONSTD(type) type -/** - * The public APR-UTIL variables are declared with APU_DECLARE_DATA. - * This assures the appropriate indirection is invoked at compile time. - * - * @deffunc APU_DECLARE_DATA type apr_variable; - * @tip APU_DECLARE_DATA extern type apr_variable; syntax is required for - * declarations within headers to properly import the variable. - */ -#define APU_DECLARE_DATA -/* - * we always have SDBM (it's in our codebase) - */ -#define APU_HAVE_SDBM @apu_have_sdbm@ -#define APU_HAVE_GDBM @apu_have_gdbm@ -#define APU_HAVE_NDBM @apu_have_ndbm@ -#define APU_HAVE_DB @apu_have_db@ - -#if APU_HAVE_DB -#define APU_HAVE_DB_VERSION @apu_db_version@ -#endif /* APU_HAVE_DB */ - -#define APU_HAVE_PGSQL @apu_have_pgsql@ -#define APU_HAVE_MYSQL @apu_have_mysql@ -#define APU_HAVE_SQLITE3 @apu_have_sqlite3@ -#define APU_HAVE_SQLITE2 @apu_have_sqlite2@ - -#define APU_HAVE_APR_ICONV @have_apr_iconv@ -#define APU_HAVE_ICONV @have_iconv@ -#define APR_HAS_XLATE (APU_HAVE_APR_ICONV || APU_HAVE_ICONV) - -#endif /* APU_H */ -/** @} */ diff --git a/libs/apr-util/include/apu.hnw b/libs/apr-util/include/apu.hnw deleted file mode 100644 index 8c3cee7832f..00000000000 --- a/libs/apr-util/include/apu.hnw +++ /dev/null @@ -1,84 +0,0 @@ -/* Copyright 2000-2005 The Apache Software Foundation or its licensors, as - * applicable. - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -/* - * Note: This is a NetWare specific version of apu.h. It is renamed to - * apu.h at the start of a NetWare build. - */ -/* @file apu.h - * @brief APR-Utility main file - */ -/** - * @defgroup APR_Util APR Utility Functions - * @{ - */ - - -#ifndef APU_H -#define APU_H - -/** - * APU_DECLARE_EXPORT is defined when building the APR-UTIL dynamic library, - * so that all public symbols are exported. - * - * APU_DECLARE_STATIC is defined when including the APR-UTIL public headers, - * to provide static linkage when the dynamic library may be unavailable. - * - * APU_DECLARE_STATIC and APU_DECLARE_EXPORT are left undefined when - * including the APR-UTIL public headers, to import and link the symbols from - * the dynamic APR-UTIL library and assure appropriate indirection and calling - * conventions at compile time. - */ - -/** - * The public APR-UTIL functions are declared with APU_DECLARE(), so they may - * use the most appropriate calling convention. Public APR functions with - * variable arguments must use APU_DECLARE_NONSTD(). - * - * @deffunc APU_DECLARE(rettype) apr_func(args); - */ -#define APU_DECLARE(type) type -/** - * The public APR-UTIL functions using variable arguments are declared with - * APU_DECLARE_NONSTD(), as they must use the C language calling convention. - * - * @deffunc APU_DECLARE_NONSTD(rettype) apr_func(args, ...); - */ -#define APU_DECLARE_NONSTD(type) type -/** - * The public APR-UTIL variables are declared with APU_DECLARE_DATA. - * This assures the appropriate indirection is invoked at compile time. - * - * @deffunc APU_DECLARE_DATA type apr_variable; - * @tip APU_DECLARE_DATA extern type apr_variable; syntax is required for - * declarations within headers to properly import the variable. - */ -#define APU_DECLARE_DATA -/* - * we always have SDBM (it's in our codebase) - */ -#define APU_HAVE_SDBM 1 -#define APU_HAVE_GDBM 0 -#define APU_HAVE_DB 0 - - -#define HAVE_ICONV_H 1 -#define APU_HAVE_APR_ICONV 0 -#define APU_HAVE_ICONV 1 -#define APR_HAS_XLATE (APU_HAVE_APR_ICONV || APU_HAVE_ICONV) - -#endif /* APU_H */ -/** @} */ diff --git a/libs/apr-util/include/apu.hw b/libs/apr-util/include/apu.hw deleted file mode 100644 index c710ee2b13a..00000000000 --- a/libs/apr-util/include/apu.hw +++ /dev/null @@ -1,113 +0,0 @@ -/* Copyright 2000-2005 The Apache Software Foundation or its licensors, as - * applicable. - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -/* - * Note: This is a Windows specific version of apu.h. It is renamed to - * apu.h at the start of a Windows build. - */ -/* @file apu.h - * @brief APR-Utility main file - */ - -#ifdef WIN32 -#ifndef APU_H -#define APU_H -/** - * @defgroup APR_Util APR Utility Functions - * @{ - */ - - -/** - * APU_DECLARE_EXPORT is defined when building the APR-UTIL dynamic library, - * so that all public symbols are exported. - * - * APU_DECLARE_STATIC is defined when including the APR-UTIL public headers, - * to provide static linkage when the dynamic library may be unavailable. - * - * APU_DECLARE_STATIC and APU_DECLARE_EXPORT are left undefined when - * including the APR-UTIL public headers, to import and link the symbols from - * the dynamic APR-UTIL library and assure appropriate indirection and calling - * conventions at compile time. - */ - -#if defined(DOXYGEN) || !defined(WIN32) -/** - * The public APR-UTIL functions are declared with APU_DECLARE(), so they may - * use the most appropriate calling convention. Public APR functions with - * variable arguments must use APU_DECLARE_NONSTD(). - * - * @deffunc APU_DECLARE(rettype) apr_func(args); - */ -#define APU_DECLARE(type) type -/** - * The public APR-UTIL functions using variable arguments are declared with - * APU_DECLARE_NONSTD(), as they must use the C language calling convention. - * - * @deffunc APU_DECLARE_NONSTD(rettype) apr_func(args, ...); - */ -#define APU_DECLARE_NONSTD(type) type -/** - * The public APR-UTIL variables are declared with APU_DECLARE_DATA. - * This assures the appropriate indirection is invoked at compile time. - * - * @deffunc APU_DECLARE_DATA type apr_variable; - * @tip extern APU_DECLARE_DATA type apr_variable; syntax is required for - * declarations within headers to properly import the variable. - */ -#define APU_DECLARE_DATA -#elif defined(APU_DECLARE_STATIC) -#define APU_DECLARE(type) type __stdcall -#define APU_DECLARE_NONSTD(type) type __cdecl -#define APU_DECLARE_DATA -#elif defined(APU_DECLARE_EXPORT) -#define APU_DECLARE(type) __declspec(dllexport) type __stdcall -#define APU_DECLARE_NONSTD(type) __declspec(dllexport) type __cdecl -#define APU_DECLARE_DATA __declspec(dllexport) -#else -#define APU_DECLARE(type) __declspec(dllimport) type __stdcall -#define APU_DECLARE_NONSTD(type) __declspec(dllimport) type __cdecl -#define APU_DECLARE_DATA __declspec(dllimport) -#endif -/** @} */ -/* - * we always have SDBM (it's in our codebase) - */ -#define APU_HAVE_SDBM 1 -#define APU_HAVE_GDBM 0 - -/* Allow external override */ -#if !defined(APU_HAVE_DB) -#define APU_HAVE_DB 0 -#endif - - -#define APU_HAVE_APR_ICONV 0 -#define APU_HAVE_ICONV 0 -#define APR_HAS_XLATE (APU_HAVE_APR_ICONV || APU_HAVE_ICONV) - -#if !defined(APU_HAVE_PGSQL) -#define APU_HAVE_PGSQL 0 -#endif -#if !defined(APU_HAVE_SQLITE2) -#define APU_HAVE_SQLITE2 0 -#endif -#if !defined(APU_HAVE_SQLITE3) -#define APU_HAVE_SQLITE3 0 -#endif - -#endif /* APU_H */ -#endif /* WIN32 */ diff --git a/libs/apr-util/include/apu_version.h b/libs/apr-util/include/apu_version.h deleted file mode 100644 index 578106ec4bc..00000000000 --- a/libs/apr-util/include/apu_version.h +++ /dev/null @@ -1,134 +0,0 @@ -/* Copyright 2000-2005 The Apache Software Foundation or its licensors, as - * applicable. - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -#ifndef APU_VERSION_H -#define APU_VERSION_H - -/** - * @file apu_version.h - * @brief APR-util Versioning Interface - * - * APR-util's Version - * - * There are several different mechanisms for accessing the version. There - * is a string form, and a set of numbers; in addition, there are constants - * which can be compiled into your application, and you can query the library - * being used for its actual version. - * - * Note that it is possible for an application to detect that it has been - * compiled against a different version of APU by use of the compile-time - * constants and the use of the run-time query function. - * - * APU version numbering follows the guidelines specified in: - * - * http://apr.apache.org/versioning.html - */ - - -/* The numeric compile-time version constants. These constants are the - * authoritative version numbers for APU. - */ - -/** major version - * Major API changes that could cause compatibility problems for older - * programs such as structure size changes. No binary compatibility is - * possible across a change in the major version. - */ -#define APU_MAJOR_VERSION 1 - -/** minor version - * Minor API changes that do not cause binary compatibility problems. - * Reset to 0 when upgrading APU_MAJOR_VERSION - */ -#define APU_MINOR_VERSION 2 - -/** patch level - * The Patch Level never includes API changes, simply bug fixes. - * Reset to 0 when upgrading APR_MINOR_VERSION - */ -#define APU_PATCH_VERSION 8 - -/** - * The symbol APU_IS_DEV_VERSION is only defined for internal, - * "development" copies of APU. It is undefined for released versions - * of APU. - */ -/* #define APU_IS_DEV_VERSION */ - - -#if defined(APU_IS_DEV_VERSION) || defined(DOXYGEN) -/** Internal: string form of the "is dev" flag */ -#define APU_IS_DEV_STRING "-dev" -#else -#define APU_IS_DEV_STRING "" -#endif - - -#ifndef APU_STRINGIFY -/** Properly quote a value as a string in the C preprocessor */ -#define APU_STRINGIFY(n) APU_STRINGIFY_HELPER(n) -/** Helper macro for APU_STRINGIFY */ -#define APU_STRINGIFY_HELPER(n) #n -#endif - -/** The formatted string of APU's version */ -#define APU_VERSION_STRING \ - APU_STRINGIFY(APU_MAJOR_VERSION) "." \ - APU_STRINGIFY(APU_MINOR_VERSION) "." \ - APU_STRINGIFY(APU_PATCH_VERSION) \ - APU_IS_DEV_STRING - -/** An alternative formatted string of APR's version */ -/* macro for Win32 .rc files using numeric csv representation */ -#define APU_VERSION_STRING_CSV APU_MAJOR_VERSION ##, \ - ##APU_MINOR_VERSION ##, \ - ##APU_PATCH_VERSION - - -#ifndef APU_VERSION_ONLY - -/* The C language API to access the version at run time, - * as opposed to compile time. APU_VERSION_ONLY may be defined - * externally when preprocessing apr_version.h to obtain strictly - * the C Preprocessor macro declarations. - */ - -#include "apr_version.h" - -#include "apu.h" - -#ifdef __cplusplus -extern "C" { -#endif - -/** - * Return APR-util's version information information in a numeric form. - * - * @param pvsn Pointer to a version structure for returning the version - * information. - */ -APU_DECLARE(void) apu_version(apr_version_t *pvsn); - -/** Return APU's version information as a string. */ -APU_DECLARE(const char *) apu_version_string(void); - -#ifdef __cplusplus -} -#endif - -#endif /* ndef APU_VERSION_ONLY */ - -#endif /* ndef APU_VERSION_H */ diff --git a/libs/apr-util/include/apu_want.h.in b/libs/apr-util/include/apu_want.h.in deleted file mode 100644 index ac297292bae..00000000000 --- a/libs/apr-util/include/apu_want.h.in +++ /dev/null @@ -1,51 +0,0 @@ -/* Copyright 2000-2005 The Apache Software Foundation or its licensors, as - * applicable. - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -#include "apu.h" /* configuration data */ - -/** - * @file apu_want.h - * @brief APR Standard Headers Support - * - *
- * Features:
- *
- *   APU_WANT_DB:       <@apu_db_header@>
- *
- * Typical usage:
- *
- *   #define APU_WANT_DB
- *   #include "apu_want.h"
- *
- * The appropriate headers will be included.
- *
- * Note: it is safe to use this in a header (it won't interfere with other
- *       headers' or source files' use of apu_want.h)
- * 
- */ - -/* --------------------------------------------------------------------- */ - -#ifdef APU_WANT_DB - -#if APU_HAVE_DB -#include <@apu_db_header@> -#endif - -#undef APU_WANT_DB -#endif - -/* --------------------------------------------------------------------- */ diff --git a/libs/apr-util/include/apu_want.hnw b/libs/apr-util/include/apu_want.hnw deleted file mode 100644 index 4927da8b9d6..00000000000 --- a/libs/apr-util/include/apu_want.hnw +++ /dev/null @@ -1,52 +0,0 @@ -/* Copyright 2000-2005 The Apache Software Foundation or its licensors, as - * applicable. - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -#include "apu.h" /* configuration data */ - -/** - * @file apu_want.h - * @brief APR Standard Headers Support - * - *
- * Features:
- *
- *   APU_WANT_DB:       <@apu_db_header>
- *
- * Typical usage:
- *
- *   #define APU_WANT_DB
- *   #include "apu_want.h"
- *
- * The appropriate headers will be included.
- *
- * Note: it is safe to use this in a header (it won't interfere with other
- *       headers' or source files' use of apu_want.h)
- * 
- */ - -/* --------------------------------------------------------------------- */ - -#ifdef APU_WANT_DB - -#if APU_HAVE_DB -/* win32 note.. you will need to change this for db1 */ -#include -#endif - -#undef APU_WANT_DB -#endif - -/* --------------------------------------------------------------------- */ diff --git a/libs/apr-util/include/apu_want.hw b/libs/apr-util/include/apu_want.hw deleted file mode 100644 index 4927da8b9d6..00000000000 --- a/libs/apr-util/include/apu_want.hw +++ /dev/null @@ -1,52 +0,0 @@ -/* Copyright 2000-2005 The Apache Software Foundation or its licensors, as - * applicable. - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -#include "apu.h" /* configuration data */ - -/** - * @file apu_want.h - * @brief APR Standard Headers Support - * - *
- * Features:
- *
- *   APU_WANT_DB:       <@apu_db_header>
- *
- * Typical usage:
- *
- *   #define APU_WANT_DB
- *   #include "apu_want.h"
- *
- * The appropriate headers will be included.
- *
- * Note: it is safe to use this in a header (it won't interfere with other
- *       headers' or source files' use of apu_want.h)
- * 
- */ - -/* --------------------------------------------------------------------- */ - -#ifdef APU_WANT_DB - -#if APU_HAVE_DB -/* win32 note.. you will need to change this for db1 */ -#include -#endif - -#undef APU_WANT_DB -#endif - -/* --------------------------------------------------------------------- */ diff --git a/libs/apr-util/include/private/apr_dbd_internal.h b/libs/apr-util/include/private/apr_dbd_internal.h deleted file mode 100644 index fcefc2345fb..00000000000 --- a/libs/apr-util/include/private/apr_dbd_internal.h +++ /dev/null @@ -1,257 +0,0 @@ -/* Copyright 2000-2005 The Apache Software Foundation or its licensors, as - * applicable. - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -/* Overview of what this is and does: - * http://www.apache.org/~niq/dbd.html - */ - -#ifndef APR_DBD_INTERNAL_H -#define APR_DBD_INTERNAL_H - -#include - -#include "apr_dbd.h" - -#ifdef __cplusplus -extern "C" { -#endif - -struct apr_dbd_driver_t { - /** name */ - const char *name; - - /** init: allow driver to perform once-only initialisation. - * Called once only. May be NULL - */ - void (*init)(apr_pool_t *pool); - - /** native_handle: return the native database handle of the underlying db - * - * @param handle - apr_dbd handle - * @return - native handle - */ - void *(*native_handle)(apr_dbd_t *handle); - - /** open: obtain a database connection from the server rec. - * Must be explicitly closed when you're finished with it. - * WARNING: only use this when you need a connection with - * a lifetime other than a request - * - * @param pool - a pool to use for error messages (if any). - * @param s - server rec managing the underlying connection/pool. - * @return database handle, or NULL on error. - */ - apr_dbd_t *(*open)(apr_pool_t *pool, const char *params); - - /** check_conn: check status of a database connection - * - * @param pool - a pool to use for error messages (if any). - * @param handle - the connection to check - * @return APR_SUCCESS or error - */ - apr_status_t (*check_conn)(apr_pool_t *pool, apr_dbd_t *handle); - - /** close: close/release a connection obtained from open() - * - * @param handle - the connection to release - * @return APR_SUCCESS or error - */ - apr_status_t (*close)(apr_dbd_t *handle); - - /** set_dbname: select database name. May be a no-op if not supported. - * - * @param pool - working pool - * @param handle - the connection - * @param name - the database to select - * @return 0 for success or error code - */ - int (*set_dbname)(apr_pool_t* pool, apr_dbd_t *handle, const char *name); - - /** transaction: start a transaction. May be a no-op. - * - * @param pool - a pool to use for error messages (if any). - * @param handle - the connection - * @param transaction - ptr to a transaction. May be null on entry - * @return 0 for success or error code - */ - int (*start_transaction)(apr_pool_t *pool, apr_dbd_t *handle, - apr_dbd_transaction_t **trans); - - /** end_transaction: end a transaction - * (commit on success, rollback on error). - * May be a no-op. - * - * @param transaction - the transaction. - * @return 0 for success or error code - */ - int (*end_transaction)(apr_dbd_transaction_t *trans); - - /** query: execute an SQL query that doesn't return a result set - * - * @param handle - the connection - * @param nrows - number of rows affected. - * @param statement - the SQL statement to execute - * @return 0 for success or error code - */ - int (*query)(apr_dbd_t *handle, int *nrows, const char *statement); - - /** select: execute an SQL query that returns a result set - * - * @param pool - pool to allocate the result set - * @param handle - the connection - * @param res - pointer to result set pointer. May point to NULL on entry - * @param statement - the SQL statement to execute - * @param random - 1 to support random access to results (seek any row); - * 0 to support only looping through results in order - * (async access - faster) - * @return 0 for success or error code - */ - int (*select)(apr_pool_t *pool, apr_dbd_t *handle, apr_dbd_results_t **res, - const char *statement, int random); - - /** num_cols: get the number of columns in a results set - * - * @param res - result set. - * @return number of columns - */ - int (*num_cols)(apr_dbd_results_t *res); - - /** num_tuples: get the number of rows in a results set - * of a synchronous select - * - * @param res - result set. - * @return number of rows, or -1 if the results are asynchronous - */ - int (*num_tuples)(apr_dbd_results_t *res); - - /** get_row: get a row from a result set - * - * @param pool - pool to allocate the row - * @param res - result set pointer - * @param row - pointer to row pointer. May point to NULL on entry - * @param rownum - row number, or -1 for "next row". Ignored if random - * access is not supported. - * @return 0 for success, -1 for rownum out of range or data finished - */ - int (*get_row)(apr_pool_t *pool, apr_dbd_results_t *res, - apr_dbd_row_t **row, int rownum); - - /** get_entry: get an entry from a row - * - * @param row - row pointer - * @param col - entry number - * @param val - entry to fill - * @return 0 for success, -1 for no data, +1 for general error - */ - const char* (*get_entry)(const apr_dbd_row_t *row, int col); - - /** error: get current error message (if any) - * - * @param handle - the connection - * @param errnum - error code from operation that returned an error - * @return the database current error message, or message for errnum - * (implementation-dependent whether errnum is ignored) - */ - const char *(*error)(apr_dbd_t *handle, int errnum); - - /** escape: escape a string so it is safe for use in query/select - * - * @param pool - pool to alloc the result from - * @param string - the string to escape - * @param handle - the connection - * @return the escaped, safe string - */ - const char *(*escape)(apr_pool_t *pool, const char *string, - apr_dbd_t *handle); - - /** prepare: prepare a statement - * - * @param pool - pool to alloc the result from - * @param handle - the connection - * @param query - the SQL query - * @param label - A label for the prepared statement. - * use NULL for temporary prepared statements - * (eg within a Request in httpd) - * @param statement - statement to prepare. May point to null on entry. - * @return 0 for success or error code - */ - int (*prepare)(apr_pool_t *pool, apr_dbd_t *handle, const char *query, - const char *label, apr_dbd_prepared_t **statement); - - /** pvquery: query using a prepared statement + args - * - * @param pool - working pool - * @param handle - the connection - * @param nrows - number of rows affected. - * @param statement - the prepared statement to execute - * @param args - args to prepared statement - * @return 0 for success or error code - */ - int (*pvquery)(apr_pool_t *pool, apr_dbd_t *handle, int *nrows, - apr_dbd_prepared_t *statement, va_list args); - - /** pvselect: select using a prepared statement + args - * - * @param pool - working pool - * @param handle - the connection - * @param res - pointer to query results. May point to NULL on entry - * @param statement - the prepared statement to execute - * @param random - Whether to support random-access to results - * @param args - args to prepared statement - * @return 0 for success or error code - */ - int (*pvselect)(apr_pool_t *pool, apr_dbd_t *handle, - apr_dbd_results_t **res, - apr_dbd_prepared_t *statement, int random, va_list args); - - /** pquery: query using a prepared statement + args - * - * @param pool - working pool - * @param handle - the connection - * @param nrows - number of rows affected. - * @param statement - the prepared statement to execute - * @param nargs - number of args to prepared statement - * @param args - args to prepared statement - * @return 0 for success or error code - */ - int (*pquery)(apr_pool_t *pool, apr_dbd_t *handle, int *nrows, - apr_dbd_prepared_t *statement, int nargs, - const char **args); - - /** pselect: select using a prepared statement + args - * - * @param pool - working pool - * @param handle - the connection - * @param res - pointer to query results. May point to NULL on entry - * @param statement - the prepared statement to execute - * @param random - Whether to support random-access to results - * @param nargs - number of args to prepared statement - * @param args - args to prepared statement - * @return 0 for success or error code - */ - int (*pselect)(apr_pool_t *pool, apr_dbd_t *handle, - apr_dbd_results_t **res, apr_dbd_prepared_t *statement, - int random, int nargs, const char **args); - - -}; - - -#ifdef __cplusplus -} -#endif - -#endif diff --git a/libs/apr-util/include/private/apr_dbm_private.h b/libs/apr-util/include/private/apr_dbm_private.h deleted file mode 100644 index 7faae8bf3bf..00000000000 --- a/libs/apr-util/include/private/apr_dbm_private.h +++ /dev/null @@ -1,125 +0,0 @@ -/* Copyright 2000-2005 The Apache Software Foundation or its licensors, as - * applicable. - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -#ifndef APR_DBM_PRIVATE_H -#define APR_DBM_PRIVATE_H - -#include "apr.h" -#include "apr_errno.h" -#include "apr_pools.h" -#include "apr_dbm.h" -#include "apr_file_io.h" - -#include "apu.h" - -/* ### for now, include the DBM selection; this will go away once we start - ### building and linking all of the DBMs at once. */ -#include "apu_select_dbm.h" - -#ifdef __cplusplus -extern "C" { -#endif - -/** @internal */ - -/** - * Most DBM libraries take a POSIX mode for creating files. Don't trust - * the mode_t type, some platforms may not support it, int is safe. - */ -APU_DECLARE(int) apr_posix_perms2mode(apr_fileperms_t perm); - -/** - * Structure to describe the operations of the DBM - */ -typedef struct { - /** The name of the DBM Type */ - const char *name; - - /** Open the DBM */ - apr_status_t (*open)(apr_dbm_t **pdb, const char *pathname, - apr_int32_t mode, apr_fileperms_t perm, - apr_pool_t *pool); - - /** Close the DBM */ - void (*close)(apr_dbm_t *dbm); - - /** Fetch a dbm record value by key */ - apr_status_t (*fetch)(apr_dbm_t *dbm, apr_datum_t key, - apr_datum_t * pvalue); - - /** Store a dbm record value by key */ - apr_status_t (*store)(apr_dbm_t *dbm, apr_datum_t key, apr_datum_t value); - - /** Delete a dbm record value by key */ - apr_status_t (*del)(apr_dbm_t *dbm, apr_datum_t key); - - /** Search for a key within the dbm */ - int (*exists)(apr_dbm_t *dbm, apr_datum_t key); - - /** Retrieve the first record key from a dbm */ - apr_status_t (*firstkey)(apr_dbm_t *dbm, apr_datum_t * pkey); - - /** Retrieve the next record key from a dbm */ - apr_status_t (*nextkey)(apr_dbm_t *dbm, apr_datum_t * pkey); - - /** Proactively toss any memory associated with the apr_datum_t. */ - void (*freedatum)(apr_dbm_t *dbm, apr_datum_t data); - - /** Get the names that the DBM will use for a given pathname. */ - void (*getusednames)(apr_pool_t *pool, - const char *pathname, - const char **used1, - const char **used2); - -} apr_dbm_type_t; - - -/** - * The actual DBM - */ -struct apr_dbm_t -{ - /** Associated pool */ - apr_pool_t *pool; - - /** pointer to DB Implementation Specific data */ - void *file; - - /** Current integer error code */ - int errcode; - /** Current string error code */ - const char *errmsg; - - /** the type of DBM */ - const apr_dbm_type_t *type; -}; - - -/* Declare all of the builtin DBM providers */ -APU_DECLARE_DATA extern const apr_dbm_type_t apr_dbm_type_sdbm; -APU_DECLARE_DATA extern const apr_dbm_type_t apr_dbm_type_gdbm; -APU_DECLARE_DATA extern const apr_dbm_type_t apr_dbm_type_ndbm; -APU_DECLARE_DATA extern const apr_dbm_type_t apr_dbm_type_db1; -APU_DECLARE_DATA extern const apr_dbm_type_t apr_dbm_type_db2; -APU_DECLARE_DATA extern const apr_dbm_type_t apr_dbm_type_db3; -APU_DECLARE_DATA extern const apr_dbm_type_t apr_dbm_type_db4; -APU_DECLARE_DATA extern const apr_dbm_type_t apr_dbm_type_db; - -#ifdef __cplusplus -} -#endif - -#endif /* APR_DBM_PRIVATE_H */ diff --git a/libs/apr-util/include/private/apu_config.hw b/libs/apr-util/include/private/apu_config.hw deleted file mode 100644 index c4d7d093fb2..00000000000 --- a/libs/apr-util/include/private/apu_config.hw +++ /dev/null @@ -1,39 +0,0 @@ -/* Copyright 2000-2005 The Apache Software Foundation or its licensors, as - * applicable. - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -/* - * Note: This is a Windows specific version of apu_config.hw. It is copied - * as apu_config.h at the start of a Windows build. - */ - -#ifdef WIN32 - -#ifndef APU_CONFIG_H -#define APU_CONFIG_H - -/* - * Windows does not have GDBM, and we always use the bundled (new) Expat - */ - -/* Define if you have the gdbm library (-lgdbm). */ -/* #undef HAVE_LIBGDBM */ - -/* define if Expat 1.0 or 1.1 was found */ -/* #undef APR_HAVE_OLD_EXPAT */ - - -#endif /* APU_CONFIG_H */ -#endif /* WIN32 */ diff --git a/libs/apr-util/include/private/apu_select_dbm.h.in b/libs/apr-util/include/private/apu_select_dbm.h.in deleted file mode 100644 index c24ebe52a95..00000000000 --- a/libs/apr-util/include/private/apu_select_dbm.h.in +++ /dev/null @@ -1,28 +0,0 @@ -/* Copyright 2000-2005 The Apache Software Foundation or its licensors, as - * applicable. - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -#ifndef APU_SELECT_DBM_H -#define APU_SELECT_DBM_H - -/* -** The following macros control what features APRUTIL will use -*/ -#define APU_USE_SDBM @apu_use_sdbm@ -#define APU_USE_NDBM @apu_use_ndbm@ -#define APU_USE_GDBM @apu_use_gdbm@ -#define APU_USE_DB @apu_use_db@ - -#endif /* !APU_SELECT_DBM_H */ diff --git a/libs/apr-util/include/private/apu_select_dbm.hw b/libs/apr-util/include/private/apu_select_dbm.hw deleted file mode 100644 index 0561cb8f84c..00000000000 --- a/libs/apr-util/include/private/apu_select_dbm.hw +++ /dev/null @@ -1,32 +0,0 @@ -/* Copyright 2000-2005 The Apache Software Foundation or its licensors, as - * applicable. - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -#ifndef APU_SELECT_DBM_H -#define APU_SELECT_DBM_H - -/* -** The following macros control what features APRUTIL will use -*/ -#define APU_USE_SDBM 1 -#define APU_USE_GDBM 0 -#define APU_USE_NDBM 0 -#define APU_USE_DB 0 - -#if APU_USE_DB -#include -#endif - -#endif /* !APU_SELECT_DBM_H */ diff --git a/libs/apr-util/ldap/NWGNUmakefile b/libs/apr-util/ldap/NWGNUmakefile deleted file mode 100644 index a0ecc3bac6d..00000000000 --- a/libs/apr-util/ldap/NWGNUmakefile +++ /dev/null @@ -1,260 +0,0 @@ -# -# Declare the sub-directories to be built here -# - -SUBDIRS = \ - $(EOLIST) - -# -# Get the 'head' of the build environment. This includes default targets and -# paths to tools -# - -include $(APR_WORK)\build\NWGNUhead.inc - -# -# build this level's files - -# -# Make sure all needed macro's are defined -# - -# -# These directories will be at the beginning of the include list, followed by -# INCDIRS -# -XINCDIRS += \ - $(APR)/include \ - $(APR)/include/arch/NetWare \ - $(APRUTIL)/include \ - $(LDAPSDK)/inc \ - $(EOLIST) - -# -# These flags will come after CFLAGS -# -XCFLAGS += \ - $(EOLIST) - -# -# These defines will come after DEFINES -# -XDEFINES += \ - $(EOLIST) - -# -#LDAP client requires the use of Winsock -# -ifdef USE_STDSOCKETS -XDEFINES += -DUSE_WINSOCK \ - $(EOLIST) -endif - -# -# These flags will be added to the link.opt file -# -XLFLAGS += \ - $(EOLIST) - -# -# These values will be appended to the correct variables based on the value of -# RELEASE -# -ifeq "$(RELEASE)" "debug" -XINCDIRS += \ - $(EOLIST) - -XCFLAGS += \ - $(EOLIST) - -XDEFINES += \ - $(EOLIST) - -XLFLAGS += \ - $(EOLIST) -endif - -ifeq "$(RELEASE)" "noopt" -XINCDIRS += \ - $(EOLIST) - -XCFLAGS += \ - $(EOLIST) - -XDEFINES += \ - $(EOLIST) - -XLFLAGS += \ - $(EOLIST) -endif - -ifeq "$(RELEASE)" "release" -XINCDIRS += \ - $(EOLIST) - -XCFLAGS += \ - $(EOLIST) - -XDEFINES += \ - $(EOLIST) - -XLFLAGS += \ - $(EOLIST) -endif - -# -# These are used by the link target if an NLM is being generated -# This is used by the link 'name' directive to name the nlm. If left blank -# TARGET_nlm (see below) will be used. -# -NLM_NAME = - -# -# This is used by the link '-desc ' directive. -# If left blank, NLM_NAME will be used. -# -NLM_DESCRIPTION = - -# -# This is used by the '-threadname' directive. If left blank, -# NLM_NAME Thread will be used. -# -NLM_THREAD_NAME = -# -# If this is specified, it will override VERSION value in -# $(APR_WORK)\build\NWGNUenvironment.inc -# -NLM_VERSION = - -# -# If this is specified, it will override the default of 64K -# -NLM_STACK_SIZE = - -# -# If this is specified it will be used by the link '-entry' directive -# -NLM_ENTRY_SYM = - -# -# If this is specified it will be used by the link '-exit' directive -# -NLM_EXIT_SYM = - -# -# If this is specified it will be used by the link '-check' directive -# -NLM_CHECK_SYM = - -# -# If this is specified it will be used by the link '-flags' directive -# -NLM_FLAGS = - -# -# If this is specified it will be linked in with the XDCData option in the def -# file instead of the default of $(APR)/misc/netware/apache.xdc. XDCData can -# be disabled by setting APACHE_UNIPROC in the environment -# -XDCDATA = - -# -# Declare all target files (you must add your files here) -# - -# -# If there is an NLM target, put it here -# -TARGET_nlm = \ - $(EOLIST) - -# -# If there is an LIB target, put it here -# -TARGET_lib = \ - $(OBJDIR)/apuldap.lib \ - $(EOLIST) - -# -# These are the OBJ files needed to create the NLM target above. -# Paths must all use the '/' character -# -FILES_nlm_objs = \ - $(EOLIST) - -# -# These are the LIB files needed to create the NLM target above. -# These will be added as a library command in the link.opt file. -# -FILES_nlm_libs = \ - $(EOLIST) - -# -# These are the modules that the above NLM target depends on to load. -# These will be added as a module command in the link.opt file. -# -FILES_nlm_modules = \ - $(EOLIST) - -# -# If the nlm has a msg file, put it's path here -# -FILE_nlm_msg = - -# -# If the nlm has a hlp file put it's path here -# -FILE_nlm_hlp = - -# -# If this is specified, it will override the default copyright. -# -FILE_nlm_copyright = - -# -# Any additional imports go here -# -FILES_nlm_Ximports = \ - $(EOLIST) - -# -# Any symbols exported to here -# -FILES_nlm_exports = \ - $(EOLIST) - -# -# These are the OBJ files needed to create the LIB target above. -# Paths must all use the '/' character -# -FILES_lib_objs = \ - $(OBJDIR)/apr_ldap_init.o \ - $(OBJDIR)/apr_ldap_option.o \ - $(OBJDIR)/apr_ldap_url.o \ - $(EOLIST) - -# -# implement targets and dependancies (leave this section alone) -# - -libs :: $(OBJDIR) $(TARGET_lib) - -nlms :: libs $(TARGET_nlm) - -# -# Updated this target to create necessary directories and copy files to the -# correct place. (See $(APR_WORK)\build\NWGNUhead.inc for examples) -# -install :: nlms FORCE - -# -# Any specialized rules here -# - -# -# Include the 'tail' makefile that has targets that depend on variables defined -# in this makefile -# - -include $(APR_WORK)\build\NWGNUtail.inc - diff --git a/libs/apr-util/ldap/apr_ldap_init.c b/libs/apr-util/ldap/apr_ldap_init.c deleted file mode 100644 index 6aec5d16a0e..00000000000 --- a/libs/apr-util/ldap/apr_ldap_init.c +++ /dev/null @@ -1,189 +0,0 @@ -/* Copyright 2000-2005 The Apache Software Foundation or its licensors, as - * applicable. - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -/* - * apr_ldap_init.c: LDAP v2/v3 common initialise - * - * Original code from auth_ldap module for Apache v1.3: - * Copyright 1998, 1999 Enbridge Pipelines Inc. - * Copyright 1999-2001 Dave Carrigan - */ - -#include "apr.h" -#include "apu.h" -#include "apr_ldap.h" -#include "apr_errno.h" -#include "apr_pools.h" -#include "apr_strings.h" - -#if APR_HAS_LDAP - -/** - * APR LDAP SSL Initialise function - * - * This function initialises SSL on the underlying LDAP toolkit - * if this is necessary. - * - * If a CA certificate is provided, this is set, however the setting - * of certificates via this method has been deprecated and will be removed in - * APR v2.0. - * - * The apr_ldap_set_option() function with the APR_LDAP_OPT_TLS_CERT option - * should be used instead to set certificates. - * - * If SSL support is not available on this platform, or a problem - * was encountered while trying to set the certificate, the function - * will return APR_EGENERAL. Further LDAP specific error information - * can be found in result_err. - */ -APU_DECLARE(int) apr_ldap_ssl_init(apr_pool_t *pool, - const char *cert_auth_file, - int cert_file_type, - apr_ldap_err_t **result_err) { - - apr_ldap_err_t *result = (apr_ldap_err_t *)apr_pcalloc(pool, sizeof(apr_ldap_err_t)); - *result_err = result; - -#if APR_HAS_LDAP_SSL /* compiled with ssl support */ - - /* Novell */ -#if APR_HAS_NOVELL_LDAPSDK - ldapssl_client_init(NULL, NULL); -#endif - - /* if a certificate was specified, set it */ - if (cert_auth_file) { - apr_ldap_opt_tls_cert_t *cert = (apr_ldap_opt_tls_cert_t *)apr_pcalloc(pool, sizeof(apr_ldap_opt_tls_cert_t)); - cert->type = cert_file_type; - cert->path = cert_auth_file; - return apr_ldap_set_option(pool, NULL, APR_LDAP_OPT_TLS_CERT, (void *)cert, result_err); - } - -#else /* not compiled with SSL Support */ - if (cert_auth_file) { - result->reason = "LDAP: Attempt to set certificate store failed. " - "Not built with SSL support"; - result->rc = -1; - } -#endif /* APR_HAS_LDAP_SSL */ - - if (result->rc != -1) { - result->msg = ldap_err2string(result->rc); - } - - if (LDAP_SUCCESS != result->rc) { - return APR_EGENERAL; - } - - return APR_SUCCESS; - -} - - -/** - * APR LDAP SSL De-Initialise function - * - * This function tears down any SSL certificate setup previously - * set using apr_ldap_ssl_init(). It should be called to clean - * up if a graceful restart of a service is attempted. - * - * This function only does anything on Netware. - * - * @todo currently we do not check whether apr_ldap_ssl_init() - * has been called first - should we? - */ -APU_DECLARE(int) apr_ldap_ssl_deinit(void) { - -#if APR_HAS_LDAP_SSL && APR_HAS_LDAPSSL_CLIENT_DEINIT - ldapssl_client_deinit(); -#endif - return APR_SUCCESS; - -} - - -/** - * APR LDAP initialise function - * - * This function is responsible for initialising an LDAP - * connection in a toolkit independant way. It does the - * job of ldap_init() from the C api. - * - * It handles both the SSL and non-SSL case, and attempts - * to hide the complexity setup from the user. This function - * assumes that any certificate setup necessary has already - * been done. - * - * If SSL or STARTTLS needs to be enabled, and the underlying - * toolkit supports it, the following values are accepted for - * secure: - * - * APR_LDAP_NONE: No encryption - * APR_LDAP_SSL: SSL encryption (ldaps://) - * APR_LDAP_STARTTLS: Force STARTTLS on ldap:// - */ -APU_DECLARE(int) apr_ldap_init(apr_pool_t *pool, - LDAP **ldap, - const char *hostname, - int portno, - int secure, - apr_ldap_err_t **result_err) { - - apr_ldap_err_t *result = (apr_ldap_err_t *)apr_pcalloc(pool, sizeof(apr_ldap_err_t)); - *result_err = result; - -#if APR_HAS_LDAPSSL_INIT - *ldap = ldapssl_init(hostname, portno, 0); -#elif APR_HAS_LDAP_SSLINIT - *ldap = ldap_sslinit((char *)hostname, portno, 0); -#else - *ldap = ldap_init((char *)hostname, portno); -#endif - if (*ldap != NULL) { - return apr_ldap_set_option(pool, *ldap, APR_LDAP_OPT_TLS, &secure, result_err); - } - else { - /* handle the error case */ - apr_ldap_err_t *result = (apr_ldap_err_t *)apr_pcalloc(pool, sizeof(apr_ldap_err_t)); - *result_err = result; - - result->reason = "APR LDAP: Unable to initialize the LDAP connection"; - result->rc = -1; - return APR_EGENERAL; - } - -} - - -/** - * APR LDAP info function - * - * This function returns a string describing the LDAP toolkit - * currently in use. The string is placed inside result_err->reason. - */ -APU_DECLARE(int) apr_ldap_info(apr_pool_t *pool, apr_ldap_err_t **result_err) -{ - apr_ldap_err_t *result = (apr_ldap_err_t *)apr_pcalloc(pool, sizeof(apr_ldap_err_t)); - *result_err = result; - - result->reason = "APR LDAP: Built with " - LDAP_VENDOR_NAME - " LDAP SDK"; - return APR_SUCCESS; - -} - -#endif /* APR_HAS_LDAP */ diff --git a/libs/apr-util/ldap/apr_ldap_option.c b/libs/apr-util/ldap/apr_ldap_option.c deleted file mode 100644 index 43eb8d090ec..00000000000 --- a/libs/apr-util/ldap/apr_ldap_option.c +++ /dev/null @@ -1,598 +0,0 @@ -/* Copyright 2000-2005 The Apache Software Foundation or its licensors, as - * applicable. - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -/* apr_ldap_option.c -- LDAP options - * - * The LDAP SDK allows the getting and setting of options on an LDAP - * connection. - * - */ - -#include "apr.h" -#include "apu.h" -#include "apr_ldap.h" -#include "apr_errno.h" -#include "apr_pools.h" -#include "apr_strings.h" -#include "apr_tables.h" - -#if APR_HAS_LDAP - -static void option_set_cert(apr_pool_t *pool, LDAP *ldap, const void *invalue, - apr_ldap_err_t *result); -static void option_set_tls(apr_pool_t *pool, LDAP *ldap, const void *invalue, - apr_ldap_err_t *result); - -/** - * APR LDAP get option function - * - * This function gets option values from a given LDAP session if - * one was specified. - */ -APU_DECLARE(int) apr_ldap_get_option(apr_pool_t *pool, - LDAP *ldap, - int option, - void *outvalue, - apr_ldap_err_t **result_err) -{ - apr_ldap_err_t *result; - - result = apr_pcalloc(pool, sizeof(apr_ldap_err_t)); - *result_err = result; - if (!result) { - return APR_ENOMEM; - } - - /* get the option specified using the native LDAP function */ - result->rc = ldap_get_option(ldap, option, outvalue); - - /* handle the error case */ - if (result->rc != LDAP_SUCCESS) { - result->msg = ldap_err2string(result-> rc); - result->reason = apr_pstrdup(pool, "LDAP: Could not get an option"); - return APR_EGENERAL; - } - - return APR_SUCCESS; - -} - -/** - * APR LDAP set option function - * - * This function sets option values to a given LDAP session if - * one was specified. - * - * Where an option is not supported by an LDAP toolkit, this function - * will try and apply legacy functions to achieve the same effect, - * depending on the platform. - */ -APU_DECLARE(int) apr_ldap_set_option(apr_pool_t *pool, - LDAP *ldap, - int option, - const void *invalue, - apr_ldap_err_t **result_err) -{ - apr_ldap_err_t *result; - - result = apr_pcalloc(pool, sizeof(apr_ldap_err_t)); - *result_err = result; - if (!result) { - return APR_ENOMEM; - } - - switch (option) { - case APR_LDAP_OPT_TLS_CERT: - option_set_cert(pool, ldap, invalue, result); - break; - - case APR_LDAP_OPT_TLS: - option_set_tls(pool, ldap, invalue, result); - break; - - case APR_LDAP_OPT_VERIFY_CERT: -#if APR_HAS_NETSCAPE_LDAPSDK || APR_HAS_SOLARIS_LDAPSDK || APR_HAS_MOZILLA_LDAPSK - result->reason = "LDAP: Verify certificate not yet supported by APR on the " - "Netscape, Solaris or Mozilla LDAP SDKs"; - result->rc = -1; - return APR_EGENERAL; -#endif -#if APR_HAS_NOVELL_LDAPSDK - if (*((int*)invalue)) { - result->rc = ldapssl_set_verify_mode(LDAPSSL_VERIFY_SERVER); - } - else { - result->rc = ldapssl_set_verify_mode(LDAPSSL_VERIFY_NONE); - } -#endif -#if APR_HAS_OPENLDAP_LDAPSDK -#ifdef LDAP_OPT_X_TLS - /* This is not a per-connection setting so just pass NULL for the - Ldap connection handle */ - if (*((int*)invalue)) { - int i = LDAP_OPT_X_TLS_DEMAND; - result->rc = ldap_set_option(NULL, LDAP_OPT_X_TLS_REQUIRE_CERT, &i); - } - else { - int i = LDAP_OPT_X_TLS_NEVER; - result->rc = ldap_set_option(NULL, LDAP_OPT_X_TLS_REQUIRE_CERT, &i); - } -#else - result->reason = "LDAP: SSL/TLS not yet supported by APR on this " - "version of the OpenLDAP toolkit"; - result->rc = -1; - return APR_EGENERAL; -#endif -#endif - - /* handle the error case */ - if (result->rc != LDAP_SUCCESS) { - result->msg = ldap_err2string(result->rc); - result->reason = "LDAP: Could not set verify mode"; - } - break; - - default: - /* set the option specified using the native LDAP function */ - result->rc = ldap_set_option(ldap, option, (void *)invalue); - - /* handle the error case */ - if (result->rc != LDAP_SUCCESS) { - result->msg = ldap_err2string(result->rc); - result->reason = "LDAP: Could not set an option"; - } - break; - } - - /* handle the error case */ - if (result->rc != LDAP_SUCCESS) { - return APR_EGENERAL; - } - - return APR_SUCCESS; - -} - -/** - * Handle APR_LDAP_OPT_TLS - * - * This function sets the type of TLS to be applied to this connection. - * The options are: - * APR_LDAP_NONE: no encryption - * APR_LDAP_SSL: SSL encryption (ldaps://) - * APR_LDAP_STARTTLS: STARTTLS encryption - * APR_LDAP_STOPTLS: Stop existing TLS connecttion - */ -static void option_set_tls(apr_pool_t *pool, LDAP *ldap, const void *invalue, - apr_ldap_err_t *result) -{ - int tls = * (const int *)invalue; - -#if APR_HAS_LDAP_SSL /* compiled with ssl support */ - - /* Netscape/Mozilla/Solaris SDK */ -#if APR_HAS_NETSCAPE_LDAPSDK || APR_HAS_SOLARIS_LDAPSDK || APR_HAS_MOZILLA_LDAPSK -#if APR_HAS_LDAPSSL_INSTALL_ROUTINES - if (tls == APR_LDAP_SSL) { - result->rc = ldapssl_install_routines(ldap); -#ifdef LDAP_OPT_SSL - /* apparently Netscape and Mozilla need this too, Solaris doesn't */ - if (result->rc == LDAP_SUCCESS) { - result->rc = ldap_set_option(ldap, LDAP_OPT_SSL, LDAP_OPT_ON); - } -#endif - if (result->rc != LDAP_SUCCESS) { - result->msg = ldap_err2string(result->rc); - result->reason = "LDAP: Could not switch SSL on for this " - "connection."; - } - } - else if (tls == APR_LDAP_STARTTLS) { - result->reason = "LDAP: STARTTLS is not supported by the " - "Netscape/Mozilla/Solaris SDK"; - result->rc = -1; - } - else if (tls == APR_LDAP_STOPTLS) { - result->reason = "LDAP: STOPTLS is not supported by the " - "Netscape/Mozilla/Solaris SDK"; - result->rc = -1; - } -#else - if (tls != APR_LDAP_NONE) { - result->reason = "LDAP: SSL/TLS is not supported by this version " - "of the Netscape/Mozilla/Solaris SDK"; - result->rc = -1; - } -#endif -#endif - - /* Novell SDK */ -#if APR_HAS_NOVELL_LDAPSDK - /* ldapssl_install_routines(ldap) - * Behavior is unpredictable when other LDAP functions are called - * between the ldap_init function and the ldapssl_install_routines - * function. - * - * STARTTLS is supported by the ldap_start_tls_s() method - */ - if (tls == APR_LDAP_SSL) { - result->rc = ldapssl_install_routines(ldap); - if (result->rc != LDAP_SUCCESS) { - result->msg = ldap_err2string(result->rc); - result->reason = "LDAP: Could not switch SSL on for this " - "connection."; - } - } - if (tls == APR_LDAP_STARTTLS) { - result->rc = ldapssl_start_tls(ldap); - if (result->rc != LDAP_SUCCESS) { - result->msg = ldap_err2string(result->rc); - result->reason = "LDAP: Could not start TLS on this connection"; - } - } - else if (tls == APR_LDAP_STOPTLS) { - result->rc = ldapssl_stop_tls(ldap); - if (result->rc != LDAP_SUCCESS) { - result->msg = ldap_err2string(result->rc); - result->reason = "LDAP: Could not stop TLS on this connection"; - } - } -#endif - - /* OpenLDAP SDK */ -#if APR_HAS_OPENLDAP_LDAPSDK -#ifdef LDAP_OPT_X_TLS - if (tls == APR_LDAP_SSL) { - int SSLmode = LDAP_OPT_X_TLS_HARD; - result->rc = ldap_set_option(ldap, LDAP_OPT_X_TLS, &SSLmode); - if (result->rc != LDAP_SUCCESS) { - result->reason = "LDAP: ldap_set_option failed. " - "Could not set LDAP_OPT_X_TLS to " - "LDAP_OPT_X_TLS_HARD"; - result->msg = ldap_err2string(result->rc); - } - } - else if (tls == APR_LDAP_STARTTLS) { - result->rc = ldap_start_tls_s(ldap, NULL, NULL); - if (result->rc != LDAP_SUCCESS) { - result->reason = "LDAP: ldap_start_tls_s() failed"; - result->msg = ldap_err2string(result->rc); - } - } - else if (tls == APR_LDAP_STOPTLS) { - result->reason = "LDAP: STOPTLS is not supported by the " - "OpenLDAP SDK"; - result->rc = -1; - } -#else - if (tls != APR_LDAP_NONE) { - result->reason = "LDAP: SSL/TLS not yet supported by APR on this " - "version of the OpenLDAP toolkit"; - result->rc = -1; - } -#endif -#endif - - /* Microsoft SDK */ -#if APR_HAS_MICROSOFT_LDAPSDK - if (tls == APR_LDAP_NONE) { - result->rc = ldap_set_option(ldap, LDAP_OPT_SSL, LDAP_OPT_OFF); - if (result->rc != LDAP_SUCCESS) { - result->reason = "LDAP: an attempt to set LDAP_OPT_SSL off " - "failed."; - result->msg = ldap_err2string(result->rc); - } - } - else if (tls == APR_LDAP_SSL) { - result->rc = ldap_set_option(ldap, LDAP_OPT_SSL, LDAP_OPT_ON); - if (result->rc != LDAP_SUCCESS) { - result->reason = "LDAP: an attempt to set LDAP_OPT_SSL on " - "failed."; - result->msg = ldap_err2string(result->rc); - } - } -#if APR_HAS_LDAP_START_TLS_S - else if (tls == APR_LDAP_STARTTLS) { - result->rc = ldap_start_tls_s(ldap, NULL, NULL, NULL, NULL); - if (result->rc != LDAP_SUCCESS) { - result->reason = "LDAP: ldap_start_tls_s() failed"; - result->msg = ldap_err2string(result->rc); - } - } - else if (tls == APR_LDAP_STOPTLS) { - result->rc = ldap_stop_tls_s(ldap); - if (result->rc != LDAP_SUCCESS) { - result->reason = "LDAP: ldap_stop_tls_s() failed"; - result->msg = ldap_err2string(result->rc); - } - } -#endif -#endif - -#if APR_HAS_OTHER_LDAPSDK - if (tls != APR_LDAP_NONE) { - result->reason = "LDAP: SSL/TLS is currently not supported by " - "APR on this LDAP SDK"; - result->rc = -1; - } -#endif - -#endif /* APR_HAS_LDAP_SSL */ - -} - -/** - * Handle APR_LDAP_OPT_TLS_CACERTFILE - * - * This function sets the CA certificate for further SSL/TLS connections. - * - * The file provided are in different formats depending on the toolkit used: - * - * Netscape: cert7.db file - * Novell: PEM or DER - * OpenLDAP: PEM (others supported?) - * Microsoft: unknown - * Solaris: unknown - */ -static void option_set_cert(apr_pool_t *pool, LDAP *ldap, - const void *invalue, apr_ldap_err_t *result) -{ - apr_array_header_t *certs = (apr_array_header_t *)invalue; - struct apr_ldap_opt_tls_cert_t *ents = (struct apr_ldap_opt_tls_cert_t *)certs->elts; - int i = 0; - -#if APR_HAS_LDAP_SSL - - /* Netscape/Mozilla/Solaris SDK */ -#if APR_HAS_NETSCAPE_LDAPSDK || APR_HAS_SOLARIS_LDAPSDK || APR_HAS_MOZILLA_LDAPSDK -#if APR_HAS_LDAPSSL_CLIENT_INIT - const char *nickname = NULL; - const char *secmod = NULL; - const char *key3db = NULL; - const char *cert7db = NULL; - const char *password = NULL; - - /* set up cert7.db, key3.db and secmod parameters */ - for (i = 0; i < certs->nelts; i++) { - switch (ents[i].type) { - case APR_LDAP_CA_TYPE_CERT7_DB: - cert7db = ents[i].path; - break; - case APR_LDAP_CA_TYPE_SECMOD: - secmod = ents[i].path; - break; - case APR_LDAP_CERT_TYPE_KEY3_DB: - key3db = ents[i].path; - break; - case APR_LDAP_CERT_TYPE_NICKNAME: - nickname = ents[i].path; - password = ents[i].password; - break; - default: - result->rc = -1; - result->reason = "LDAP: The Netscape/Mozilla LDAP SDK only " - "understands the CERT7, KEY3 and SECMOD " - "file types."; - break; - } - if (result->rc != LDAP_SUCCESS) { - break; - } - } - - /* actually set the certificate parameters */ - if (result->rc == LDAP_SUCCESS) { - if (nickname) { - result->rc = ldapssl_enable_clientauth(ldap, "", - (char *)password, - (char *)nickname); - if (result->rc != LDAP_SUCCESS) { - result->reason = "LDAP: could not set client certificate: " - "ldapssl_enable_clientauth() failed."; - result->msg = ldap_err2string(result->rc); - } - } - else if (secmod) { - result->rc = ldapssl_advclientauth_init(cert7db, NULL, - key3db ? 1 : 0, key3db, NULL, - 1, secmod, LDAPSSL_AUTH_CNCHECK); - if (result->rc != LDAP_SUCCESS) { - result->reason = "LDAP: ldapssl_advclientauth_init() failed."; - result->msg = ldap_err2string(result->rc); - } - } - else if (key3db) { - result->rc = ldapssl_clientauth_init(cert7db, NULL, - 1, key3db, NULL); - if (result->rc != LDAP_SUCCESS) { - result->reason = "LDAP: ldapssl_clientauth_init() failed."; - result->msg = ldap_err2string(result->rc); - } - } - else { - result->rc = ldapssl_client_init(cert7db, NULL); - if (result->rc != LDAP_SUCCESS) { - result->reason = "LDAP: ldapssl_client_init() failed."; - result->msg = ldap_err2string(result->rc); - } - } - } -#else - result->reason = "LDAP: SSL/TLS ldapssl_client_init() function not " - "supported by this Netscape/Mozilla/Solaris SDK. " - "Certificate authority file not set"; - result->rc = -1; -#endif -#endif - - /* Novell SDK */ -#if APR_HAS_NOVELL_LDAPSDK -#if APR_HAS_LDAPSSL_CLIENT_INIT && APR_HAS_LDAPSSL_ADD_TRUSTED_CERT && APR_HAS_LDAPSSL_CLIENT_DEINIT - /* The Novell library cannot support per connection certificates. Error - * out if the ldap handle is provided. - */ - if (ldap) { - result->rc = -1; - result->reason = "LDAP: The Novell LDAP SDK cannot support the setting " - "of certificates or keys on a per connection basis."; - } - /* Novell's library needs to be initialised first */ - else { - result->rc = ldapssl_client_init(NULL, NULL); - if (result->rc != LDAP_SUCCESS) { - result->msg = ldap_err2string(result-> rc); - result->reason = apr_pstrdup(pool, "LDAP: Could not " - "initialize SSL"); - } - } - /* set one or more certificates */ - for (i = 0; LDAP_SUCCESS == result->rc && i < certs->nelts; i++) { - /* Novell SDK supports DER or BASE64 files. */ - switch (ents[i].type) { - case APR_LDAP_CA_TYPE_DER: - result->rc = ldapssl_add_trusted_cert((void *)ents[i].path, - LDAPSSL_CERT_FILETYPE_DER); - result->msg = ldap_err2string(result->rc); - break; - case APR_LDAP_CA_TYPE_BASE64: - result->rc = ldapssl_add_trusted_cert((void *)ents[i].path, - LDAPSSL_CERT_FILETYPE_B64); - result->msg = ldap_err2string(result->rc); - break; - case APR_LDAP_CERT_TYPE_DER: - result->rc = ldapssl_set_client_cert((void *)ents[i].path, - LDAPSSL_CERT_FILETYPE_DER, - (void*)ents[i].password); - result->msg = ldap_err2string(result->rc); - break; - case APR_LDAP_CERT_TYPE_BASE64: - result->rc = ldapssl_set_client_cert((void *)ents[i].path, - LDAPSSL_CERT_FILETYPE_B64, - (void*)ents[i].password); - result->msg = ldap_err2string(result->rc); - break; - case APR_LDAP_CERT_TYPE_PFX: - result->rc = ldapssl_set_client_cert((void *)ents[i].path, - LDAPSSL_FILETYPE_P12, - (void*)ents[i].password); - result->msg = ldap_err2string(result->rc); - break; - case APR_LDAP_KEY_TYPE_DER: - result->rc = ldapssl_set_client_private_key((void *)ents[i].path, - LDAPSSL_CERT_FILETYPE_DER, - (void*)ents[i].password); - result->msg = ldap_err2string(result->rc); - break; - case APR_LDAP_KEY_TYPE_BASE64: - result->rc = ldapssl_set_client_private_key((void *)ents[i].path, - LDAPSSL_CERT_FILETYPE_B64, - (void*)ents[i].password); - result->msg = ldap_err2string(result->rc); - break; - case APR_LDAP_KEY_TYPE_PFX: - result->rc = ldapssl_set_client_private_key((void *)ents[i].path, - LDAPSSL_FILETYPE_P12, - (void*)ents[i].password); - result->msg = ldap_err2string(result->rc); - break; - default: - result->rc = -1; - result->reason = "LDAP: The Novell LDAP SDK only understands the " - "DER and PEM (BASE64) file types."; - break; - } - if (result->rc != LDAP_SUCCESS) { - break; - } - } -#else - result->reason = "LDAP: ldapssl_client_init(), " - "ldapssl_add_trusted_cert() or " - "ldapssl_client_deinit() functions not supported " - "by this Novell SDK. Certificate authority file " - "not set"; - result->rc = -1; -#endif -#endif - - /* OpenLDAP SDK */ -#if APR_HAS_OPENLDAP_LDAPSDK -#ifdef LDAP_OPT_X_TLS_CACERTFILE - /* set one or more certificates */ - /* FIXME: make it support setting directories as well as files */ - for (i = 0; i < certs->nelts; i++) { - /* OpenLDAP SDK supports BASE64 files. */ - switch (ents[i].type) { - case APR_LDAP_CA_TYPE_BASE64: - result->rc = ldap_set_option(ldap, LDAP_OPT_X_TLS_CACERTFILE, - (void *)ents[i].path); - result->msg = ldap_err2string(result->rc); - break; - case APR_LDAP_CERT_TYPE_BASE64: - result->rc = ldap_set_option(ldap, LDAP_OPT_X_TLS_CERTFILE, - (void *)ents[i].path); - result->msg = ldap_err2string(result->rc); - break; - case APR_LDAP_KEY_TYPE_BASE64: - result->rc = ldap_set_option(ldap, LDAP_OPT_X_TLS_KEYFILE, - (void *)ents[i].path); - result->msg = ldap_err2string(result->rc); - break; - default: - result->rc = -1; - result->reason = "LDAP: The OpenLDAP SDK only understands the " - "PEM (BASE64) file type."; - break; - } - if (result->rc != LDAP_SUCCESS) { - break; - } - } -#else - result->reason = "LDAP: LDAP_OPT_X_TLS_CACERTFILE not " - "defined by this OpenLDAP SDK. Certificate " - "authority file not set"; - result->rc = -1; -#endif -#endif - - /* Microsoft SDK */ -#if APR_HAS_MICROSOFT_LDAPSDK - /* Microsoft SDK use the registry certificate store - error out - * here with a message explaining this. */ - result->reason = "LDAP: CA certificates cannot be set using this method, " - "as they are stored in the registry instead."; - result->rc = -1; -#endif - - /* SDK not recognised */ -#if APR_HAS_OTHER_LDAPSDK - result->reason = "LDAP: LDAP_OPT_X_TLS_CACERTFILE not " - "defined by this LDAP SDK. Certificate " - "authority file not set"; - result->rc = -1; -#endif - -#else /* not compiled with SSL Support */ - result->reason = "LDAP: Attempt to set certificate(s) failed. " - "Not built with SSL support"; - result->rc = -1; -#endif /* APR_HAS_LDAP_SSL */ - -} - -#endif /* APR_HAS_LDAP */ - diff --git a/libs/apr-util/ldap/apr_ldap_url.c b/libs/apr-util/ldap/apr_ldap_url.c deleted file mode 100644 index 29684b77560..00000000000 --- a/libs/apr-util/ldap/apr_ldap_url.c +++ /dev/null @@ -1,694 +0,0 @@ -/* Copyright 2000-2005 The Apache Software Foundation or its licensors, as - * applicable. - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -/* Portions Copyright 1998-2002 The OpenLDAP Foundation - * All rights reserved. - * - * Redistribution and use in source and binary forms, with or without - * modification, are permitted only as authorized by the OpenLDAP - * Public License. A copy of this license is available at - * http://www.OpenLDAP.org/license.html or in file LICENSE in the - * top-level directory of the distribution. - * - * OpenLDAP is a registered trademark of the OpenLDAP Foundation. - * - * Individual files and/or contributed packages may be copyright by - * other parties and subject to additional restrictions. - * - * This work is derived from the University of Michigan LDAP v3.3 - * distribution. Information concerning this software is available - * at: http://www.umich.edu/~dirsvcs/ldap/ - * - * This work also contains materials derived from public sources. - * - * Additional information about OpenLDAP can be obtained at: - * http://www.openldap.org/ - */ - -/* - * Portions Copyright (c) 1992-1996 Regents of the University of Michigan. - * All rights reserved. - * - * Redistribution and use in source and binary forms are permitted - * provided that this notice is preserved and that due credit is given - * to the University of Michigan at Ann Arbor. The name of the University - * may not be used to endorse or promote products derived from this - * software without specific prior written permission. This software - * is provided ``as is'' without express or implied warranty. - */ - -/* apr_ldap_url.c -- LDAP URL (RFC 2255) related routines - * - * Win32 and perhaps other non-OpenLDAP based ldap libraries may be - * missing ldap_url_* APIs. We focus here on the one significant - * aspect, which is parsing. We have [for the time being] omitted - * the ldap_url_search APIs. - * - * LDAP URLs look like this: - * ldap[is]://host:port[/[dn[?[attributes][?[scope][?[filter][?exts]]]]]] - * - * where: - * attributes is a comma separated list - * scope is one of these three strings: base one sub (default=base) - * filter is an string-represented filter as in RFC 2254 - * - * e.g., ldap://host:port/dc=com?o,cn?base?o=openldap?extension - * - * Tolerates URLs that look like: and - */ - -#include "apu.h" -#include "apr_pools.h" -#include "apr_general.h" -#include "apr_strings.h" -#include "apr_ldap.h" - -#if APR_HAS_LDAP - -#if APR_HAVE_STDLIB_H -#include -#endif - -#ifndef LDAPS_PORT -#define LDAPS_PORT 636 /* ldaps:/// default LDAP over TLS port */ -#endif - -#define APR_LDAP_URL_PREFIX "ldap://" -#define APR_LDAP_URL_PREFIX_LEN (sizeof(APR_LDAP_URL_PREFIX)-1) -#define APR_LDAPS_URL_PREFIX "ldaps://" -#define APR_LDAPS_URL_PREFIX_LEN (sizeof(APR_LDAPS_URL_PREFIX)-1) -#define APR_LDAPI_URL_PREFIX "ldapi://" -#define APR_LDAPI_URL_PREFIX_LEN (sizeof(APR_LDAPI_URL_PREFIX)-1) -#define APR_LDAP_URL_URLCOLON "URL:" -#define APR_LDAP_URL_URLCOLON_LEN (sizeof(APR_LDAP_URL_URLCOLON)-1) - - -/* local functions */ -static const char* skip_url_prefix(const char *url, - int *enclosedp, - const char **scheme); - -static void apr_ldap_pvt_hex_unescape(char *s); - -static int apr_ldap_pvt_unhex(int c); - -static char **apr_ldap_str2charray(apr_pool_t *pool, - const char *str, - const char *brkstr); - - -/** - * Is this URL an ldap url? - * - */ -APU_DECLARE(int) apr_ldap_is_ldap_url(const char *url) -{ - int enclosed; - const char * scheme; - - if( url == NULL ) { - return 0; - } - - if( skip_url_prefix( url, &enclosed, &scheme ) == NULL ) { - return 0; - } - - return 1; -} - -/** - * Is this URL a secure ldap url? - * - */ -APU_DECLARE(int) apr_ldap_is_ldaps_url(const char *url) -{ - int enclosed; - const char * scheme; - - if( url == NULL ) { - return 0; - } - - if( skip_url_prefix( url, &enclosed, &scheme ) == NULL ) { - return 0; - } - - return strcmp(scheme, "ldaps") == 0; -} - -/** - * Is this URL an ldap socket url? - * - */ -APU_DECLARE(int) apr_ldap_is_ldapi_url(const char *url) -{ - int enclosed; - const char * scheme; - - if( url == NULL ) { - return 0; - } - - if( skip_url_prefix( url, &enclosed, &scheme ) == NULL ) { - return 0; - } - - return strcmp(scheme, "ldapi") == 0; -} - - -static const char *skip_url_prefix(const char *url, int *enclosedp, - const char **scheme) -{ - /* - * return non-zero if this looks like a LDAP URL; zero if not - * if non-zero returned, *urlp will be moved past "ldap://" part of URL - */ - const char *p; - - if ( url == NULL ) { - return( NULL ); - } - - p = url; - - /* skip leading '<' (if any) */ - if ( *p == '<' ) { - *enclosedp = 1; - ++p; - } else { - *enclosedp = 0; - } - - /* skip leading "URL:" (if any) */ - if ( strncasecmp( p, APR_LDAP_URL_URLCOLON, APR_LDAP_URL_URLCOLON_LEN ) == 0 ) { - p += APR_LDAP_URL_URLCOLON_LEN; - } - - /* check for "ldap://" prefix */ - if ( strncasecmp( p, APR_LDAP_URL_PREFIX, APR_LDAP_URL_PREFIX_LEN ) == 0 ) { - /* skip over "ldap://" prefix and return success */ - p += APR_LDAP_URL_PREFIX_LEN; - *scheme = "ldap"; - return( p ); - } - - /* check for "ldaps://" prefix */ - if ( strncasecmp( p, APR_LDAPS_URL_PREFIX, APR_LDAPS_URL_PREFIX_LEN ) == 0 ) { - /* skip over "ldaps://" prefix and return success */ - p += APR_LDAPS_URL_PREFIX_LEN; - *scheme = "ldaps"; - return( p ); - } - - /* check for "ldapi://" prefix */ - if ( strncasecmp( p, APR_LDAPI_URL_PREFIX, APR_LDAPI_URL_PREFIX_LEN ) == 0 ) { - /* skip over "ldapi://" prefix and return success */ - p += APR_LDAPI_URL_PREFIX_LEN; - *scheme = "ldapi"; - return( p ); - } - - return( NULL ); -} - - -static int str2scope(const char *p) -{ - if ( strcasecmp( p, "one" ) == 0 ) { - return LDAP_SCOPE_ONELEVEL; - - } else if ( strcasecmp( p, "onetree" ) == 0 ) { - return LDAP_SCOPE_ONELEVEL; - - } else if ( strcasecmp( p, "base" ) == 0 ) { - return LDAP_SCOPE_BASE; - - } else if ( strcasecmp( p, "sub" ) == 0 ) { - return LDAP_SCOPE_SUBTREE; - - } else if ( strcasecmp( p, "subtree" ) == 0 ) { - return LDAP_SCOPE_SUBTREE; - } - - return( -1 ); -} - - -/** - * Parse the URL provided into an apr_ldap_url_desc_t object. - * - * APR_SUCCESS is returned on success, APR_EGENERAL on failure. - * The LDAP result code and reason string is returned in the - * apr_ldap_err_t structure. - */ -APU_DECLARE(int) apr_ldap_url_parse_ext(apr_pool_t *pool, - const char *url_in, - apr_ldap_url_desc_t **ludpp, - apr_ldap_err_t **result_err) -{ - apr_ldap_url_desc_t *ludp; - char *p, *q, *r; - int i, enclosed; - const char *scheme = NULL; - const char *url_tmp; - char *url; - - apr_ldap_err_t *result = (apr_ldap_err_t *)apr_pcalloc(pool, sizeof(apr_ldap_err_t)); - *result_err = result; - - /* sanity check our parameters */ - if( url_in == NULL || ludpp == NULL ) { - result->reason = "Either the LDAP URL, or the URL structure was NULL. Oops."; - result->rc = APR_LDAP_URL_ERR_PARAM; - return APR_EGENERAL; - } - - *ludpp = NULL; /* pessimistic */ - - url_tmp = skip_url_prefix( url_in, &enclosed, &scheme ); - if ( url_tmp == NULL ) { - result->reason = "The scheme was not recognised as a valid LDAP URL scheme."; - result->rc = APR_LDAP_URL_ERR_BADSCHEME; - return APR_EGENERAL; - } - - /* make working copy of the remainder of the URL */ - url = (char *)apr_pstrdup(pool, url_tmp); - if ( url == NULL ) { - result->reason = "Out of memory parsing LDAP URL."; - result->rc = APR_LDAP_URL_ERR_MEM; - return APR_EGENERAL; - } - - if ( enclosed ) { - p = &url[strlen(url)-1]; - - if( *p != '>' ) { - result->reason = "Bad enclosure error while parsing LDAP URL."; - result->rc = APR_LDAP_URL_ERR_BADENCLOSURE; - return APR_EGENERAL; - } - - *p = '\0'; - } - - /* allocate return struct */ - ludp = (apr_ldap_url_desc_t *)apr_pcalloc(pool, sizeof(apr_ldap_url_desc_t)); - if ( ludp == NULL ) { - result->reason = "Out of memory parsing LDAP URL."; - result->rc = APR_LDAP_URL_ERR_MEM; - return APR_EGENERAL; - } - - ludp->lud_next = NULL; - ludp->lud_host = NULL; - ludp->lud_port = LDAP_PORT; - ludp->lud_dn = NULL; - ludp->lud_attrs = NULL; - ludp->lud_filter = NULL; - ludp->lud_scope = -1; - ludp->lud_filter = NULL; - ludp->lud_exts = NULL; - - ludp->lud_scheme = (char *)apr_pstrdup(pool, scheme); - if ( ludp->lud_scheme == NULL ) { - result->reason = "Out of memory parsing LDAP URL."; - result->rc = APR_LDAP_URL_ERR_MEM; - return APR_EGENERAL; - } - - if( strcasecmp( ludp->lud_scheme, "ldaps" ) == 0 ) { - ludp->lud_port = LDAPS_PORT; - } - - /* scan forward for '/' that marks end of hostport and begin. of dn */ - p = strchr( url, '/' ); - - if( p != NULL ) { - /* terminate hostport; point to start of dn */ - *p++ = '\0'; - } - - /* IPv6 syntax with [ip address]:port */ - if ( *url == '[' ) { - r = strchr( url, ']' ); - if ( r == NULL ) { - result->reason = "Bad LDAP URL while parsing IPV6 syntax."; - result->rc = APR_LDAP_URL_ERR_BADURL; - return APR_EGENERAL; - } - *r++ = '\0'; - q = strrchr( r, ':' ); - } else { - q = strrchr( url, ':' ); - } - - if ( q != NULL ) { - apr_ldap_pvt_hex_unescape( ++q ); - - if( *q == '\0' ) { - result->reason = "Bad LDAP URL while parsing."; - result->rc = APR_LDAP_URL_ERR_BADURL; - return APR_EGENERAL; - } - - ludp->lud_port = atoi( q ); - } - - apr_ldap_pvt_hex_unescape( url ); - - /* If [ip address]:port syntax, url is [ip and we skip the [ */ - ludp->lud_host = (char *)apr_pstrdup(pool, url + ( *url == '[' )); - if( ludp->lud_host == NULL ) { - result->reason = "Out of memory parsing LDAP URL."; - result->rc = APR_LDAP_URL_ERR_MEM; - return APR_EGENERAL; - } - - /* - * Kludge. ldap://111.222.333.444:389??cn=abc,o=company - * - * On early Novell releases, search references/referrals were returned - * in this format, i.e., the dn was kind of in the scope position, - * but the required slash is missing. The whole thing is illegal syntax, - * but we need to account for it. Fortunately it can't be confused with - * anything real. - */ - if( (p == NULL) && (q != NULL) && ((q = strchr( q, '?')) != NULL)) { - q++; - /* ? immediately followed by question */ - if( *q == '?') { - q++; - if( *q != '\0' ) { - /* parse dn part */ - apr_ldap_pvt_hex_unescape( q ); - ludp->lud_dn = (char *)apr_pstrdup(pool, q); - } else { - ludp->lud_dn = (char *)apr_pstrdup(pool, ""); - } - - if( ludp->lud_dn == NULL ) { - result->reason = "Out of memory parsing LDAP URL."; - result->rc = APR_LDAP_URL_ERR_MEM; - return APR_EGENERAL; - } - } - } - - if( p == NULL ) { - *ludpp = ludp; - return APR_SUCCESS; - } - - /* scan forward for '?' that may marks end of dn */ - q = strchr( p, '?' ); - - if( q != NULL ) { - /* terminate dn part */ - *q++ = '\0'; - } - - if( *p != '\0' ) { - /* parse dn part */ - apr_ldap_pvt_hex_unescape( p ); - ludp->lud_dn = (char *)apr_pstrdup(pool, p); - } else { - ludp->lud_dn = (char *)apr_pstrdup(pool, ""); - } - - if( ludp->lud_dn == NULL ) { - result->reason = "Out of memory parsing LDAP URL."; - result->rc = APR_LDAP_URL_ERR_MEM; - return APR_EGENERAL; - } - - if( q == NULL ) { - /* no more */ - *ludpp = ludp; - return APR_SUCCESS; - } - - /* scan forward for '?' that may marks end of attributes */ - p = q; - q = strchr( p, '?' ); - - if( q != NULL ) { - /* terminate attributes part */ - *q++ = '\0'; - } - - if( *p != '\0' ) { - /* parse attributes */ - apr_ldap_pvt_hex_unescape( p ); - ludp->lud_attrs = apr_ldap_str2charray(pool, p, ","); - - if( ludp->lud_attrs == NULL ) { - result->reason = "Bad attributes encountered while parsing LDAP URL."; - result->rc = APR_LDAP_URL_ERR_BADATTRS; - return APR_EGENERAL; - } - } - - if ( q == NULL ) { - /* no more */ - *ludpp = ludp; - return APR_SUCCESS; - } - - /* scan forward for '?' that may marks end of scope */ - p = q; - q = strchr( p, '?' ); - - if( q != NULL ) { - /* terminate the scope part */ - *q++ = '\0'; - } - - if( *p != '\0' ) { - /* parse the scope */ - apr_ldap_pvt_hex_unescape( p ); - ludp->lud_scope = str2scope( p ); - - if( ludp->lud_scope == -1 ) { - result->reason = "Bad scope encountered while parsing LDAP URL."; - result->rc = APR_LDAP_URL_ERR_BADSCOPE; - return APR_EGENERAL; - } - } - - if ( q == NULL ) { - /* no more */ - *ludpp = ludp; - return APR_SUCCESS; - } - - /* scan forward for '?' that may marks end of filter */ - p = q; - q = strchr( p, '?' ); - - if( q != NULL ) { - /* terminate the filter part */ - *q++ = '\0'; - } - - if( *p != '\0' ) { - /* parse the filter */ - apr_ldap_pvt_hex_unescape( p ); - - if( ! *p ) { - /* missing filter */ - result->reason = "Bad filter encountered while parsing LDAP URL."; - result->rc = APR_LDAP_URL_ERR_BADFILTER; - return APR_EGENERAL; - } - - ludp->lud_filter = (char *)apr_pstrdup(pool, p); - if( ludp->lud_filter == NULL ) { - result->reason = "Out of memory parsing LDAP URL."; - result->rc = APR_LDAP_URL_ERR_MEM; - return APR_EGENERAL; - } - } - - if ( q == NULL ) { - /* no more */ - *ludpp = ludp; - return APR_SUCCESS; - } - - /* scan forward for '?' that may marks end of extensions */ - p = q; - q = strchr( p, '?' ); - - if( q != NULL ) { - /* extra '?' */ - result->reason = "Bad URL encountered while parsing LDAP URL."; - result->rc = APR_LDAP_URL_ERR_BADURL; - return APR_EGENERAL; - } - - /* parse the extensions */ - ludp->lud_exts = apr_ldap_str2charray(pool, p, ","); - if( ludp->lud_exts == NULL ) { - result->reason = "Bad extensions encountered while parsing LDAP URL."; - result->rc = APR_LDAP_URL_ERR_BADEXTS; - return APR_EGENERAL; - } - - for( i=0; ludp->lud_exts[i] != NULL; i++ ) { - apr_ldap_pvt_hex_unescape( ludp->lud_exts[i] ); - - if( *ludp->lud_exts[i] == '!' ) { - /* count the number of critical extensions */ - ludp->lud_crit_exts++; - } - } - - if( i == 0 ) { - /* must have 1 or more */ - result->reason = "Bad extensions encountered while parsing LDAP URL."; - result->rc = APR_LDAP_URL_ERR_BADEXTS; - return APR_EGENERAL; - } - - /* no more */ - *ludpp = ludp; - return APR_SUCCESS; -} - - -/** - * Parse the URL provided into an apr_ldap_url_desc_t object. - * - * APR_SUCCESS is returned on success, APR_EGENERAL on failure. - * The LDAP result code and reason string is returned in the - * apr_ldap_err_t structure. - */ -APU_DECLARE(int) apr_ldap_url_parse(apr_pool_t *pool, - const char *url_in, - apr_ldap_url_desc_t **ludpp, - apr_ldap_err_t **result_err) -{ - - int rc = apr_ldap_url_parse_ext(pool, url_in, ludpp, result_err); - if( rc != APR_SUCCESS ) { - return rc; - } - - if ((*ludpp)->lud_scope == -1) { - (*ludpp)->lud_scope = LDAP_SCOPE_BASE; - } - - if ((*ludpp)->lud_host != NULL && *(*ludpp)->lud_host == '\0') { - (*ludpp)->lud_host = NULL; - } - - return rc; - -} - - -static void apr_ldap_pvt_hex_unescape(char *s) -{ - /* - * Remove URL hex escapes from s... done in place. The basic concept for - * this routine is borrowed from the WWW library HTUnEscape() routine. - */ - char *p; - - for ( p = s; *s != '\0'; ++s ) { - if ( *s == '%' ) { - if ( *++s == '\0' ) { - break; - } - *p = apr_ldap_pvt_unhex( *s ) << 4; - if ( *++s == '\0' ) { - break; - } - *p++ += apr_ldap_pvt_unhex( *s ); - } else { - *p++ = *s; - } - } - - *p = '\0'; -} - - -static int apr_ldap_pvt_unhex(int c) -{ - return( c >= '0' && c <= '9' ? c - '0' - : c >= 'A' && c <= 'F' ? c - 'A' + 10 - : c - 'a' + 10 ); -} - - -/** - * Convert a string to a character array - */ -static char **apr_ldap_str2charray(apr_pool_t *pool, - const char *str_in, - const char *brkstr) -{ - char **res; - char *str, *s; - char *lasts; - int i; - - /* protect the input string from strtok */ - str = (char *)apr_pstrdup(pool, str_in); - if( str == NULL ) { - return NULL; - } - - i = 1; - for ( s = str; *s; s++ ) { - /* Warning: this strchr was previously ldap_utf8_strchr(), check - * whether this particular code has any charset issues. - */ - if ( strchr( brkstr, *s ) != NULL ) { - i++; - } - } - - res = (char **) apr_pcalloc(pool, (i + 1) * sizeof(char *)); - if( res == NULL ) { - return NULL; - } - - i = 0; - - for ( s = (char *)apr_strtok( str, brkstr, &lasts ); - s != NULL; - s = (char *)apr_strtok( NULL, brkstr, &lasts ) ) { - - res[i] = (char *)apr_pstrdup(pool, s); - if(res[i] == NULL) { - return NULL; - } - - i++; - } - - res[i] = NULL; - - return( res ); - -} - -#endif /* APR_HAS_LDAP */ diff --git a/libs/apr-util/libaprutil.dsp b/libs/apr-util/libaprutil.dsp deleted file mode 100644 index 4eb1c49351d..00000000000 --- a/libs/apr-util/libaprutil.dsp +++ /dev/null @@ -1,614 +0,0 @@ -# Microsoft Developer Studio Project File - Name="libaprutil" - Package Owner=<4> -# Microsoft Developer Studio Generated Build File, Format Version 6.00 -# ** DO NOT EDIT ** - -# TARGTYPE "Win32 (x86) Dynamic-Link Library" 0x0102 - -CFG=libaprutil - Win32 Debug -!MESSAGE This is not a valid makefile. To build this project using NMAKE, -!MESSAGE use the Export Makefile command and run -!MESSAGE -!MESSAGE NMAKE /f "libaprutil.mak". -!MESSAGE -!MESSAGE You can specify a configuration when running NMAKE -!MESSAGE by defining the macro CFG on the command line. For example: -!MESSAGE -!MESSAGE NMAKE /f "libaprutil.mak" CFG="libaprutil - Win32 Debug" -!MESSAGE -!MESSAGE Possible choices for configuration are: -!MESSAGE -!MESSAGE "libaprutil - Win32 Release" (based on "Win32 (x86) Dynamic-Link Library") -!MESSAGE "libaprutil - Win32 Debug" (based on "Win32 (x86) Dynamic-Link Library") -!MESSAGE - -# Begin Project -# PROP AllowPerConfigDependencies 0 -# PROP Scc_ProjName "" -# PROP Scc_LocalPath "" -CPP=cl.exe -MTL=midl.exe -RSC=rc.exe - -!IF "$(CFG)" == "libaprutil - Win32 Release" - -# PROP BASE Use_MFC 0 -# PROP BASE Use_Debug_Libraries 0 -# PROP BASE Output_Dir "Release" -# PROP BASE Intermediate_Dir "Release" -# PROP BASE Target_Dir "" -# PROP Use_MFC 0 -# PROP Use_Debug_Libraries 0 -# PROP Output_Dir "Release" -# PROP Intermediate_Dir "Release" -# PROP Ignore_Export_Lib 0 -# PROP Target_Dir "" -# ADD BASE CPP /nologo /MD /W3 /O2 /D "WIN32" /D "NDEBUG" /D "_WINDOWS" /FD /c -# ADD CPP /nologo /MD /W3 /O2 /Oy- /Zi /I "./include" /I "../apr/include" /I "./include/private" /I "../apr-iconv/include" /I "./dbm/sdbm" /I "./xml/expat/lib" /D "NDEBUG" /D "APU_DECLARE_EXPORT" /D "APU_USE_SDBM" /D "WIN32" /D "_WINDOWS" /Fd"Release\libaprutil_src" /FD /c -# ADD BASE MTL /nologo /D "NDEBUG" /mktyplib203 /o /win32 "NUL" -# ADD MTL /nologo /D "NDEBUG" /mktyplib203 /o /win32 "NUL" -# ADD BASE RSC /l 0x409 /d "NDEBUG" -# ADD RSC /l 0x409 /d "NDEBUG" /d "APU_VERSION_ONLY" /I "./include" /I "../apr/include" -BSC32=bscmake.exe -# ADD BASE BSC32 /nologo -# ADD BSC32 /nologo -LINK32=link.exe -# ADD BASE LINK32 kernel32.lib advapi32.lib ws2_32.lib mswsock.lib wldap32.lib ole32.lib /nologo /base:"0x6EE60000" /subsystem:windows /dll /incremental:no /debug /machine:I386 /opt:ref -# ADD LINK32 kernel32.lib advapi32.lib ws2_32.lib mswsock.lib wldap32.lib ole32.lib /nologo /base:"0x6EE60000" /subsystem:windows /dll /incremental:no /debug /machine:I386 /out:"Release/libaprutil-1.dll" /opt:ref -# Begin Special Build Tool -OutDir=.\Release -SOURCE="$(InputPath)" -PostBuild_Desc=Embed .manifest -PostBuild_Cmds=if exist $(OUTDIR)\libaprutil-1.dll.manifest mt.exe -manifest $(OUTDIR)\libaprutil-1.dll.manifest -outputresource:$(OUTDIR)\libaprutil-1.dll;2 -# End Special Build Tool - -!ELSEIF "$(CFG)" == "libaprutil - Win32 Debug" - -# PROP BASE Use_MFC 0 -# PROP BASE Use_Debug_Libraries 1 -# PROP BASE Output_Dir "Debug" -# PROP BASE Intermediate_Dir "Debug" -# PROP BASE Target_Dir "" -# PROP Use_MFC 0 -# PROP Use_Debug_Libraries 1 -# PROP Output_Dir "Debug" -# PROP Intermediate_Dir "Debug" -# PROP Ignore_Export_Lib 0 -# PROP Target_Dir "" -# ADD BASE CPP /nologo /MDd /W3 /EHsc /Zi /Od /D "WIN32" /D "_DEBUG" /D "_WINDOWS" /FD /c -# ADD CPP /nologo /MDd /W3 /EHsc /Zi /Od /I "./include" /I "../apr/include" /I "./include/private" /I "../apr-iconv/include" /I "./dbm/sdbm" /I "./xml/expat/lib" /D "_DEBUG" /D "APU_DECLARE_EXPORT" /D "APU_USE_SDBM" /D "WIN32" /D "_WINDOWS" /Fd"Debug\libaprutil_src" /FD /c -# ADD BASE MTL /nologo /D "_DEBUG" /mktyplib203 /o /win32 "NUL" -# ADD MTL /nologo /D "_DEBUG" /mktyplib203 /o /win32 "NUL" -# ADD BASE RSC /l 0x409 /d "_DEBUG" -# ADD RSC /l 0x409 /d "_DEBUG" /d "APU_VERSION_ONLY" /I "./include" /I "../apr/include" -BSC32=bscmake.exe -# ADD BASE BSC32 /nologo -# ADD BSC32 /nologo -LINK32=link.exe -# ADD BASE LINK32 kernel32.lib advapi32.lib ws2_32.lib mswsock.lib wldap32.lib ole32.lib /nologo /base:"0x6EE60000" /subsystem:windows /dll /incremental:no /debug /machine:I386 -# ADD LINK32 kernel32.lib advapi32.lib ws2_32.lib mswsock.lib wldap32.lib ole32.lib /nologo /base:"0x6EE60000" /subsystem:windows /dll /incremental:no /debug /machine:I386 /out:"Debug/libaprutil-1.dll" -# Begin Special Build Tool -OutDir=.\Debug -SOURCE="$(InputPath)" -PostBuild_Desc=Embed .manifest -PostBuild_Cmds=if exist $(OUTDIR)\libaprutil-1.dll.manifest mt.exe -manifest $(OUTDIR)\libaprutil-1.dll.manifest -outputresource:$(OUTDIR)\libaprutil-1.dll;2 -# End Special Build Tool - -!ENDIF - -# Begin Target - -# Name "libaprutil - Win32 Release" -# Name "libaprutil - Win32 Debug" -# Begin Group "Source Files" - -# PROP Default_Filter "" -# Begin Group "buckets" - -# PROP Default_Filter "" -# Begin Source File - -SOURCE=.\buckets\apr_brigade.c -# End Source File -# Begin Source File - -SOURCE=.\buckets\apr_buckets.c -# End Source File -# Begin Source File - -SOURCE=.\buckets\apr_buckets_alloc.c -# End Source File -# Begin Source File - -SOURCE=.\buckets\apr_buckets_eos.c -# End Source File -# Begin Source File - -SOURCE=.\buckets\apr_buckets_file.c -# End Source File -# Begin Source File - -SOURCE=.\buckets\apr_buckets_flush.c -# End Source File -# Begin Source File - -SOURCE=.\buckets\apr_buckets_heap.c -# End Source File -# Begin Source File - -SOURCE=.\buckets\apr_buckets_mmap.c -# End Source File -# Begin Source File - -SOURCE=.\buckets\apr_buckets_pipe.c -# End Source File -# Begin Source File - -SOURCE=.\buckets\apr_buckets_pool.c -# End Source File -# Begin Source File - -SOURCE=.\buckets\apr_buckets_refcount.c -# End Source File -# Begin Source File - -SOURCE=.\buckets\apr_buckets_simple.c -# End Source File -# Begin Source File - -SOURCE=.\buckets\apr_buckets_socket.c -# End Source File -# End Group -# Begin Group "crypto" - -# PROP Default_Filter "" -# Begin Source File - -SOURCE=.\crypto\apr_md4.c -# End Source File -# Begin Source File - -SOURCE=.\crypto\apr_md5.c -# End Source File -# Begin Source File - -SOURCE=.\crypto\apr_sha1.c -# End Source File -# Begin Source File - -SOURCE=.\crypto\getuuid.c -# End Source File -# Begin Source File - -SOURCE=.\crypto\uuid.c -# End Source File -# End Group -# Begin Group "dbd" -# PROP Default_Filter "" -# Begin Source File - -SOURCE=.\dbd\apr_dbd.c -# End Source File -# Begin Source File - -SOURCE=.\dbd\apr_dbd_pgsql.c -# End Source File -# Begin Source File - -SOURCE=.\dbd\apr_dbd_sqlite2.c -# End Source File -# Begin Source File - -SOURCE=.\dbd\apr_dbd_sqlite3.c -# End Source File -# End Group -# Begin Group "dbm" - -# PROP Default_Filter "" -# Begin Source File - -SOURCE=.\dbm\apr_dbm.c -# End Source File -# Begin Source File - -SOURCE=.\dbm\apr_dbm_berkeleydb.c -# End Source File -# Begin Source File - -SOURCE=.\dbm\apr_dbm_gdbm.c -# End Source File -# Begin Source File - -SOURCE=.\dbm\apr_dbm_sdbm.c -# End Source File -# End Group -# Begin Group "encoding" - -# PROP Default_Filter "" -# Begin Source File - -SOURCE=.\encoding\apr_base64.c -# End Source File -# End Group -# Begin Group "hooks" - -# PROP Default_Filter "" -# Begin Source File - -SOURCE=.\hooks\apr_hooks.c -# End Source File -# End Group -# Begin Group "ldap" - -# PROP Default_Filter "" -# Begin Source File - -SOURCE=.\ldap\apr_ldap_init.c -# End Source File -# Begin Source File - -SOURCE=.\ldap\apr_ldap_url.c -# End Source File -# Begin Source File - -SOURCE=.\ldap\apr_ldap_option.c -# End Source File -# End Group -# Begin Group "misc" - -# PROP Default_Filter "" -# Begin Source File - -SOURCE=.\misc\apr_date.c -# End Source File -# Begin Source File - -SOURCE=.\misc\apr_queue.c -# End Source File -# Begin Source File - -SOURCE=.\misc\apr_reslist.c -# End Source File -# Begin Source File - -SOURCE=.\misc\apr_rmm.c -# End Source File -# Begin Source File - -SOURCE=.\misc\apu_version.c -# End Source File -# End Group -# Begin Group "sdbm" - -# PROP Default_Filter "" -# Begin Source File - -SOURCE=.\dbm\sdbm\sdbm.c -# End Source File -# Begin Source File - -SOURCE=.\dbm\sdbm\sdbm_hash.c -# End Source File -# Begin Source File - -SOURCE=.\dbm\sdbm\sdbm_lock.c -# End Source File -# Begin Source File - -SOURCE=.\dbm\sdbm\sdbm_pair.c -# End Source File -# Begin Source File - -SOURCE=.\dbm\sdbm\sdbm_pair.h -# End Source File -# Begin Source File - -SOURCE=.\dbm\sdbm\sdbm_private.h -# End Source File -# Begin Source File - -SOURCE=.\dbm\sdbm\sdbm_tune.h -# End Source File -# End Group -# Begin Group "strmatch" - -# PROP Default_Filter "" -# Begin Source File - -SOURCE=.\strmatch\apr_strmatch.c -# End Source File -# End Group -# Begin Group "uri" - -# PROP Default_Filter "" -# Begin Source File - -SOURCE=.\uri\apr_uri.c -# End Source File -# End Group -# Begin Group "xlate" - -# PROP Default_Filter "" -# Begin Source File - -SOURCE=.\xlate\xlate.c -# End Source File -# End Group -# Begin Group "xml" - -# PROP Default_Filter "" -# Begin Source File - -SOURCE=.\xml\apr_xml.c -# End Source File -# End Group -# End Group -# Begin Group "Generated Files" - -# PROP Default_Filter "" -# Begin Source File - -SOURCE=.\include\apr_ldap.h.in -# End Source File -# Begin Source File - -SOURCE=.\include\apr_ldap.hnw -# End Source File -# Begin Source File - -SOURCE=.\include\apr_ldap.hw - -!IF "$(CFG)" == "libaprutil - Win32 Release" - -# Begin Custom Build - Creating apr_ldap.h from apr_ldap.hw -InputPath=.\include\apr_ldap.hw - -".\include\apr_ldap.h" : $(SOURCE) "$(INTDIR)" "$(OUTDIR)" - type .\include\apr_ldap.hw > .\include\apr_ldap.h - -# End Custom Build - -!ELSEIF "$(CFG)" == "libaprutil - Win32 Debug" - -# Begin Custom Build - Creating apr_ldap.h from apr_ldap.hw -InputPath=.\include\apr_ldap.hw - -".\include\apr_ldap.h" : $(SOURCE) "$(INTDIR)" "$(OUTDIR)" - type .\include\apr_ldap.hw > .\include\apr_ldap.h - -# End Custom Build - -!ENDIF - -# End Source File -# Begin Source File - -SOURCE=.\include\apu.h.in -# End Source File -# Begin Source File - -SOURCE=.\include\apu.hnw -# End Source File -# Begin Source File - -SOURCE=.\include\apu.hw - -!IF "$(CFG)" == "libaprutil - Win32 Release" - -# Begin Custom Build - Creating apu.h from apu.hw -InputPath=.\include\apu.hw - -".\include\apu.h" : $(SOURCE) "$(INTDIR)" "$(OUTDIR)" - type .\include\apu.hw > .\include\apu.h - -# End Custom Build - -!ELSEIF "$(CFG)" == "libaprutil - Win32 Debug" - -# Begin Custom Build - Creating apu.h from apu.hw -InputPath=.\include\apu.hw - -".\include\apu.h" : $(SOURCE) "$(INTDIR)" "$(OUTDIR)" - type .\include\apu.hw > .\include\apu.h - -# End Custom Build - -!ENDIF - -# End Source File -# Begin Source File - -SOURCE=.\include\private\apu_config.h.in -# End Source File -# Begin Source File - -SOURCE=.\include\private\apu_config.hw - -!IF "$(CFG)" == "libaprutil - Win32 Release" - -# Begin Custom Build - Creating apu_config.h from apu_config.hw -InputPath=.\include\private\apu_config.hw - -".\include\private\apu_config.h" : $(SOURCE) "$(INTDIR)" "$(OUTDIR)" - type .\include\private\apu_config.hw > .\include\private\apu_config.h - -# End Custom Build - -!ELSEIF "$(CFG)" == "libaprutil - Win32 Debug" - -# Begin Custom Build - Creating apu_config.h from apu_config.hw -InputPath=.\include\private\apu_config.hw - -".\include\private\apu_config.h" : $(SOURCE) "$(INTDIR)" "$(OUTDIR)" - type .\include\private\apu_config.hw > .\include\private\apu_config.h - -# End Custom Build - -!ENDIF - -# End Source File -# Begin Source File - -SOURCE=.\include\private\apu_select_dbm.h.in -# End Source File -# Begin Source File - -SOURCE=.\include\private\apu_select_dbm.hw - -!IF "$(CFG)" == "libaprutil - Win32 Release" - -# Begin Custom Build - Creating apu_select_dbm.h from apu_select_dbm.hw -InputPath=.\include\private\apu_select_dbm.hw - -".\include\private\apu_select_dbm.h" : $(SOURCE) "$(INTDIR)" "$(OUTDIR)" - type .\include\private\apu_select_dbm.hw > .\include\private\apu_select_dbm.h - -# End Custom Build - -!ELSEIF "$(CFG)" == "libaprutil - Win32 Debug" - -# Begin Custom Build - Creating apu_select_dbm.h from apu_select_dbm.hw -InputPath=.\include\private\apu_select_dbm.hw - -".\include\private\apu_select_dbm.h" : $(SOURCE) "$(INTDIR)" "$(OUTDIR)" - type .\include\private\apu_select_dbm.hw > .\include\private\apu_select_dbm.h - -# End Custom Build - -!ENDIF - -# End Source File -# Begin Source File - -SOURCE=.\include\apu_want.h.in -# End Source File -# Begin Source File - -SOURCE=.\include\apu_want.hnw -# End Source File -# Begin Source File - -SOURCE=.\include\apu_want.hw - -!IF "$(CFG)" == "libaprutil - Win32 Release" - -# Begin Custom Build - Creating apu_want.h from apu_want.hw -InputPath=.\include\apu_want.hw - -".\include\apu_want.h" : $(SOURCE) "$(INTDIR)" "$(OUTDIR)" - type .\include\apu_want.hw > .\include\apu_want.h - -# End Custom Build - -!ELSEIF "$(CFG)" == "libaprutil - Win32 Debug" - -# Begin Custom Build - Creating apu_want.h from apu_want.hw -InputPath=.\include\apu_want.hw - -".\include\apu_want.h" : $(SOURCE) "$(INTDIR)" "$(OUTDIR)" - type .\include\apu_want.hw > .\include\apu_want.h - -# End Custom Build - -!ENDIF - -# End Source File -# End Group -# Begin Group "Public Header Files" - -# PROP Default_Filter "" -# Begin Source File - -SOURCE=.\include\apr_anylock.h -# End Source File -# Begin Source File - -SOURCE=.\include\apr_base64.h -# End Source File -# Begin Source File - -SOURCE=.\include\apr_buckets.h -# End Source File -# Begin Source File - -SOURCE=.\include\apr_date.h -# End Source File -# Begin Source File - -SOURCE=.\include\apr_dbm.h -# End Source File -# Begin Source File - -SOURCE=.\include\apr_hooks.h -# End Source File -# Begin Source File - -SOURCE=.\include\apr_ldap_url.h -# End Source File -# Begin Source File - -SOURCE=.\include\apr_md4.h -# End Source File -# Begin Source File - -SOURCE=.\include\apr_md5.h -# End Source File -# Begin Source File - -SOURCE=.\include\apr_optional.h -# End Source File -# Begin Source File - -SOURCE=.\include\apr_optional_hooks.h -# End Source File -# Begin Source File - -SOURCE=.\include\apr_queue.h -# End Source File -# Begin Source File - -SOURCE=.\include\apr_reslist.h -# End Source File -# Begin Source File - -SOURCE=.\include\apr_rmm.h -# End Source File -# Begin Source File - -SOURCE=.\include\apr_sdbm.h -# End Source File -# Begin Source File - -SOURCE=.\include\apr_sha1.h -# End Source File -# Begin Source File - -SOURCE=.\include\apr_strmatch.h -# End Source File -# Begin Source File - -SOURCE=.\include\apr_uri.h -# End Source File -# Begin Source File - -SOURCE=.\include\apr_uuid.h -# End Source File -# Begin Source File - -SOURCE=.\include\apr_xlate.h -# End Source File -# Begin Source File - -SOURCE=.\include\apr_xml.h -# End Source File -# Begin Source File - -SOURCE=.\include\apu_version.h -# End Source File -# End Group -# Begin Source File - -SOURCE=.\libaprutil.rc -# End Source File - -# End Target -# End Project diff --git a/libs/apr-util/libaprutil.rc b/libs/apr-util/libaprutil.rc deleted file mode 100644 index 06a527f6bcf..00000000000 --- a/libs/apr-util/libaprutil.rc +++ /dev/null @@ -1,66 +0,0 @@ -#include "apu_version.h" - -#define APU_COPYRIGHT "Copyright 2000-2005 The Apache Software " \ - "Foundation or its licensors, as applicable." - -#define APU_LICENSE "Licensed under the Apache License, Version 2.0 " \ - "(the ""License""); you may not use this file except " \ - "in compliance with the License. You may obtain a " \ - "copy of the License at\r\n\r\n" \ - "http://www.apache.org/licenses/LICENSE-2.0\r\n\r\n" \ - "Unless required by applicable law or agreed to in " \ - "writing, software distributed under the License is " \ - "distributed on an ""AS IS"" BASIS, WITHOUT " \ - "WARRANTIES OR CONDITIONS OF ANY KIND, either " \ - "express or implied. See the License for the " \ - "specific language governing permissions and " \ - "limitations under the License." - -#define APU_DLL_BASENAME "libaprutil-" APU_STRINGIFY(APU_MAJOR_VERSION) - - -1 VERSIONINFO - FILEVERSION APU_VERSION_STRING_CSV,0 - PRODUCTVERSION APU_VERSION_STRING_CSV,0 - FILEFLAGSMASK 0x3fL -#if defined(APU_IS_DEV_VERSION) -#if defined(_DEBUG) - FILEFLAGS 0x03L -#else - FILEFLAGS 0x02L -#endif -#else -#if defined(_DEBUG) - FILEFLAGS 0x01L -#else - FILEFLAGS 0x00L -#endif -#endif -#if defined(WINNT) || defined(WIN64) - FILEOS 0x40004L -#else - FILEOS 0x4L -#endif - FILETYPE 0x2L - FILESUBTYPE 0x0L -BEGIN - BLOCK "StringFileInfo" - BEGIN - BLOCK "040904b0" - BEGIN - VALUE "Comments", APU_LICENSE "\0" - VALUE "CompanyName", "Apache Software Foundation\0" - VALUE "FileDescription", "Apache Portable Runtime Library\0" - VALUE "FileVersion", APU_VERSION_STRING "\0" - VALUE "InternalName", APU_DLL_BASENAME "\0" - VALUE "LegalCopyright", APU_COPYRIGHT "\0" - VALUE "OriginalFilename", APU_DLL_BASENAME ".dll\0" - VALUE "ProductName", "Apache Portable Runtime Project\0" - VALUE "ProductVersion", APU_VERSION_STRING "\0" - END - END - BLOCK "VarFileInfo" - BEGIN - VALUE "Translation", 0x409, 1200 - END -END diff --git a/libs/apr-util/misc/apr_date.c b/libs/apr-util/misc/apr_date.c deleted file mode 100644 index f584e09314f..00000000000 --- a/libs/apr-util/misc/apr_date.c +++ /dev/null @@ -1,616 +0,0 @@ -/* Copyright 2000-2005 The Apache Software Foundation or its licensors, as - * applicable. - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -/* - * apr_date.c: date parsing utility routines - * These routines are (hopefully) platform independent. - * - * 27 Oct 1996 Roy Fielding - * Extracted (with many modifications) from mod_proxy.c and - * tested with over 50,000 randomly chosen valid date strings - * and several hundred variations of invalid date strings. - * - */ - -#include "apr.h" -#include "apr_lib.h" - -#define APR_WANT_STRFUNC -#include "apr_want.h" - -#if APR_HAVE_STDLIB_H -#include -#endif - -#if APR_HAVE_CTYPE_H -#include -#endif - -#include "apr_date.h" - -/* - * Compare a string to a mask - * Mask characters (arbitrary maximum is 256 characters, just in case): - * @ - uppercase letter - * $ - lowercase letter - * & - hex digit - * # - digit - * ~ - digit or space - * * - swallow remaining characters - * - exact match for any other character - */ -APU_DECLARE(int) apr_date_checkmask(const char *data, const char *mask) -{ - int i; - char d; - - for (i = 0; i < 256; i++) { - d = data[i]; - switch (mask[i]) { - case '\0': - return (d == '\0'); - - case '*': - return 1; - - case '@': - if (!apr_isupper(d)) - return 0; - break; - case '$': - if (!apr_islower(d)) - return 0; - break; - case '#': - if (!apr_isdigit(d)) - return 0; - break; - case '&': - if (!apr_isxdigit(d)) - return 0; - break; - case '~': - if ((d != ' ') && !apr_isdigit(d)) - return 0; - break; - default: - if (mask[i] != d) - return 0; - break; - } - } - return 0; /* We only get here if mask is corrupted (exceeds 256) */ -} - -/* - * Parses an HTTP date in one of three standard forms: - * - * Sun, 06 Nov 1994 08:49:37 GMT ; RFC 822, updated by RFC 1123 - * Sunday, 06-Nov-94 08:49:37 GMT ; RFC 850, obsoleted by RFC 1036 - * Sun Nov 6 08:49:37 1994 ; ANSI C's asctime() format - * - * and returns the apr_time_t number of microseconds since 1 Jan 1970 GMT, - * or APR_DATE_BAD if this would be out of range or if the date is invalid. - * - * The restricted HTTP syntax is - * - * HTTP-date = rfc1123-date | rfc850-date | asctime-date - * - * rfc1123-date = wkday "," SP date1 SP time SP "GMT" - * rfc850-date = weekday "," SP date2 SP time SP "GMT" - * asctime-date = wkday SP date3 SP time SP 4DIGIT - * - * date1 = 2DIGIT SP month SP 4DIGIT - * ; day month year (e.g., 02 Jun 1982) - * date2 = 2DIGIT "-" month "-" 2DIGIT - * ; day-month-year (e.g., 02-Jun-82) - * date3 = month SP ( 2DIGIT | ( SP 1DIGIT )) - * ; month day (e.g., Jun 2) - * - * time = 2DIGIT ":" 2DIGIT ":" 2DIGIT - * ; 00:00:00 - 23:59:59 - * - * wkday = "Mon" | "Tue" | "Wed" - * | "Thu" | "Fri" | "Sat" | "Sun" - * - * weekday = "Monday" | "Tuesday" | "Wednesday" - * | "Thursday" | "Friday" | "Saturday" | "Sunday" - * - * month = "Jan" | "Feb" | "Mar" | "Apr" - * | "May" | "Jun" | "Jul" | "Aug" - * | "Sep" | "Oct" | "Nov" | "Dec" - * - * However, for the sake of robustness (and Netscapeness), we ignore the - * weekday and anything after the time field (including the timezone). - * - * This routine is intended to be very fast; 10x faster than using sscanf. - * - * Originally from Andrew Daviel , 29 Jul 96 - * but many changes since then. - * - */ -APU_DECLARE(apr_time_t) apr_date_parse_http(const char *date) -{ - apr_time_exp_t ds; - apr_time_t result; - int mint, mon; - const char *monstr, *timstr; - static const int months[12] = - { - ('J' << 16) | ('a' << 8) | 'n', ('F' << 16) | ('e' << 8) | 'b', - ('M' << 16) | ('a' << 8) | 'r', ('A' << 16) | ('p' << 8) | 'r', - ('M' << 16) | ('a' << 8) | 'y', ('J' << 16) | ('u' << 8) | 'n', - ('J' << 16) | ('u' << 8) | 'l', ('A' << 16) | ('u' << 8) | 'g', - ('S' << 16) | ('e' << 8) | 'p', ('O' << 16) | ('c' << 8) | 't', - ('N' << 16) | ('o' << 8) | 'v', ('D' << 16) | ('e' << 8) | 'c'}; - - if (!date) - return APR_DATE_BAD; - - while (*date && apr_isspace(*date)) /* Find first non-whitespace char */ - ++date; - - if (*date == '\0') - return APR_DATE_BAD; - - if ((date = strchr(date, ' ')) == NULL) /* Find space after weekday */ - return APR_DATE_BAD; - - ++date; /* Now pointing to first char after space, which should be */ - - /* start of the actual date information for all 4 formats. */ - - if (apr_date_checkmask(date, "## @$$ #### ##:##:## *")) { - /* RFC 1123 format with two days */ - ds.tm_year = ((date[7] - '0') * 10 + (date[8] - '0') - 19) * 100; - if (ds.tm_year < 0) - return APR_DATE_BAD; - - ds.tm_year += ((date[9] - '0') * 10) + (date[10] - '0'); - - ds.tm_mday = ((date[0] - '0') * 10) + (date[1] - '0'); - - monstr = date + 3; - timstr = date + 12; - } - else if (apr_date_checkmask(date, "##-@$$-## ##:##:## *")) { - /* RFC 850 format */ - ds.tm_year = ((date[7] - '0') * 10) + (date[8] - '0'); - if (ds.tm_year < 70) - ds.tm_year += 100; - - ds.tm_mday = ((date[0] - '0') * 10) + (date[1] - '0'); - - monstr = date + 3; - timstr = date + 10; - } - else if (apr_date_checkmask(date, "@$$ ~# ##:##:## ####*")) { - /* asctime format */ - ds.tm_year = ((date[16] - '0') * 10 + (date[17] - '0') - 19) * 100; - if (ds.tm_year < 0) - return APR_DATE_BAD; - - ds.tm_year += ((date[18] - '0') * 10) + (date[19] - '0'); - - if (date[4] == ' ') - ds.tm_mday = 0; - else - ds.tm_mday = (date[4] - '0') * 10; - - ds.tm_mday += (date[5] - '0'); - - monstr = date; - timstr = date + 7; - } - else if (apr_date_checkmask(date, "# @$$ #### ##:##:## *")) { - /* RFC 1123 format with one day */ - ds.tm_year = ((date[6] - '0') * 10 + (date[7] - '0') - 19) * 100; - if (ds.tm_year < 0) - return APR_DATE_BAD; - - ds.tm_year += ((date[8] - '0') * 10) + (date[9] - '0'); - - ds.tm_mday = (date[0] - '0'); - - monstr = date + 2; - timstr = date + 11; - } - else - return APR_DATE_BAD; - - if (ds.tm_mday <= 0 || ds.tm_mday > 31) - return APR_DATE_BAD; - - ds.tm_hour = ((timstr[0] - '0') * 10) + (timstr[1] - '0'); - ds.tm_min = ((timstr[3] - '0') * 10) + (timstr[4] - '0'); - ds.tm_sec = ((timstr[6] - '0') * 10) + (timstr[7] - '0'); - - if ((ds.tm_hour > 23) || (ds.tm_min > 59) || (ds.tm_sec > 61)) - return APR_DATE_BAD; - - mint = (monstr[0] << 16) | (monstr[1] << 8) | monstr[2]; - for (mon = 0; mon < 12; mon++) - if (mint == months[mon]) - break; - - if (mon == 12) - return APR_DATE_BAD; - - if ((ds.tm_mday == 31) && (mon == 3 || mon == 5 || mon == 8 || mon == 10)) - return APR_DATE_BAD; - - /* February gets special check for leapyear */ - if ((mon == 1) && - ((ds.tm_mday > 29) || - ((ds.tm_mday == 29) - && ((ds.tm_year & 3) - || (((ds.tm_year % 100) == 0) - && (((ds.tm_year % 400) != 100))))))) - return APR_DATE_BAD; - - ds.tm_mon = mon; - - /* ap_mplode_time uses tm_usec and tm_gmtoff fields, but they haven't - * been set yet. - * It should be safe to just zero out these values. - * tm_usec is the number of microseconds into the second. HTTP only - * cares about second granularity. - * tm_gmtoff is the number of seconds off of GMT the time is. By - * definition all times going through this function are in GMT, so this - * is zero. - */ - ds.tm_usec = 0; - ds.tm_gmtoff = 0; - if (apr_time_exp_get(&result, &ds) != APR_SUCCESS) - return APR_DATE_BAD; - - return result; -} - -/* - * Parses a string resembling an RFC 822 date. This is meant to be - * leinent in its parsing of dates. Hence, this will parse a wider - * range of dates than apr_date_parse_http. - * - * The prominent mailer (or poster, if mailer is unknown) that has - * been seen in the wild is included for the unknown formats. - * - * Sun, 06 Nov 1994 08:49:37 GMT ; RFC 822, updated by RFC 1123 - * Sunday, 06-Nov-94 08:49:37 GMT ; RFC 850, obsoleted by RFC 1036 - * Sun Nov 6 08:49:37 1994 ; ANSI C's asctime() format - * Sun, 6 Nov 1994 08:49:37 GMT ; RFC 822, updated by RFC 1123 - * Sun, 06 Nov 94 08:49:37 GMT ; RFC 822 - * Sun, 6 Nov 94 08:49:37 GMT ; RFC 822 - * Sun, 06 Nov 94 08:49 GMT ; Unknown [drtr@ast.cam.ac.uk] - * Sun, 6 Nov 94 08:49 GMT ; Unknown [drtr@ast.cam.ac.uk] - * Sun, 06 Nov 94 8:49:37 GMT ; Unknown [Elm 70.85] - * Sun, 6 Nov 94 8:49:37 GMT ; Unknown [Elm 70.85] - * Mon, 7 Jan 2002 07:21:22 GMT ; Unknown [Postfix] - * Sun, 06-Nov-1994 08:49:37 GMT ; RFC 850 with four digit years - * - */ - -#define TIMEPARSE(ds,hr10,hr1,min10,min1,sec10,sec1) \ - { \ - ds.tm_hour = ((hr10 - '0') * 10) + (hr1 - '0'); \ - ds.tm_min = ((min10 - '0') * 10) + (min1 - '0'); \ - ds.tm_sec = ((sec10 - '0') * 10) + (sec1 - '0'); \ - } -#define TIMEPARSE_STD(ds,timstr) \ - { \ - TIMEPARSE(ds, timstr[0],timstr[1], \ - timstr[3],timstr[4], \ - timstr[6],timstr[7]); \ - } - -APU_DECLARE(apr_time_t) apr_date_parse_rfc(const char *date) -{ - apr_time_exp_t ds; - apr_time_t result; - int mint, mon; - const char *monstr, *timstr, *gmtstr; - static const int months[12] = - { - ('J' << 16) | ('a' << 8) | 'n', ('F' << 16) | ('e' << 8) | 'b', - ('M' << 16) | ('a' << 8) | 'r', ('A' << 16) | ('p' << 8) | 'r', - ('M' << 16) | ('a' << 8) | 'y', ('J' << 16) | ('u' << 8) | 'n', - ('J' << 16) | ('u' << 8) | 'l', ('A' << 16) | ('u' << 8) | 'g', - ('S' << 16) | ('e' << 8) | 'p', ('O' << 16) | ('c' << 8) | 't', - ('N' << 16) | ('o' << 8) | 'v', ('D' << 16) | ('e' << 8) | 'c' }; - - if (!date) - return APR_DATE_BAD; - - /* Not all dates have text months at the beginning. */ - if (!apr_isdigit(date[0])) - { - while (*date && apr_isspace(*date)) /* Find first non-whitespace char */ - ++date; - - if (*date == '\0') - return APR_DATE_BAD; - - if ((date = strchr(date, ' ')) == NULL) /* Find space after weekday */ - return APR_DATE_BAD; - - ++date; /* Now pointing to first char after space, which should be */ } - - /* start of the actual date information for all 11 formats. */ - if (apr_date_checkmask(date, "## @$$ #### ##:##:## *")) { /* RFC 1123 format */ - ds.tm_year = ((date[7] - '0') * 10 + (date[8] - '0') - 19) * 100; - - if (ds.tm_year < 0) - return APR_DATE_BAD; - - ds.tm_year += ((date[9] - '0') * 10) + (date[10] - '0'); - - ds.tm_mday = ((date[0] - '0') * 10) + (date[1] - '0'); - - monstr = date + 3; - timstr = date + 12; - gmtstr = date + 20; - - TIMEPARSE_STD(ds, timstr); - } - else if (apr_date_checkmask(date, "##-@$$-## ##:##:## *")) {/* RFC 850 format */ - ds.tm_year = ((date[7] - '0') * 10) + (date[8] - '0'); - - if (ds.tm_year < 70) - ds.tm_year += 100; - - ds.tm_mday = ((date[0] - '0') * 10) + (date[1] - '0'); - - monstr = date + 3; - timstr = date + 10; - gmtstr = date + 19; - - TIMEPARSE_STD(ds, timstr); - } - else if (apr_date_checkmask(date, "@$$ ~# ##:##:## ####*")) { - /* asctime format */ - ds.tm_year = ((date[16] - '0') * 10 + (date[17] - '0') - 19) * 100; - if (ds.tm_year < 0) - return APR_DATE_BAD; - - ds.tm_year += ((date[18] - '0') * 10) + (date[19] - '0'); - - if (date[4] == ' ') - ds.tm_mday = 0; - else - ds.tm_mday = (date[4] - '0') * 10; - - ds.tm_mday += (date[5] - '0'); - - monstr = date; - timstr = date + 7; - gmtstr = NULL; - - TIMEPARSE_STD(ds, timstr); - } - else if (apr_date_checkmask(date, "# @$$ #### ##:##:## *")) { - /* RFC 1123 format*/ - ds.tm_year = ((date[6] - '0') * 10 + (date[7] - '0') - 19) * 100; - - if (ds.tm_year < 0) - return APR_DATE_BAD; - - ds.tm_year += ((date[8] - '0') * 10) + (date[9] - '0'); - ds.tm_mday = (date[0] - '0'); - - monstr = date + 2; - timstr = date + 11; - gmtstr = date + 20; - - TIMEPARSE_STD(ds, timstr); - } - else if (apr_date_checkmask(date, "## @$$ ## ##:##:## *")) { - /* This is the old RFC 1123 date format - many many years ago, people - * used two-digit years. Oh, how foolish. */ - ds.tm_year = ((date[7] - '0') * 10) + (date[8] - '0'); - - if (ds.tm_year < 70) - ds.tm_year += 100; - - ds.tm_mday = ((date[0] - '0') * 10) + (date[1] - '0'); - - monstr = date + 3; - timstr = date + 10; - gmtstr = date + 19; - - TIMEPARSE_STD(ds, timstr); - } - else if (apr_date_checkmask(date, "# @$$ ## ##:##:## *")) { - /* This is the old RFC 1123 date format - many many years ago, people - * used two-digit years. Oh, how foolish. */ - ds.tm_year = ((date[6] - '0') * 10) + (date[7] - '0'); - - if (ds.tm_year < 70) - ds.tm_year += 100; - - ds.tm_mday = (date[0] - '0'); - - monstr = date + 2; - timstr = date + 9; - gmtstr = date + 18; - - TIMEPARSE_STD(ds, timstr); - } - else if (apr_date_checkmask(date, "## @$$ ## ##:## *")) { - /* Loser format. This is quite bogus. */ - ds.tm_year = ((date[7] - '0') * 10) + (date[8] - '0'); - - if (ds.tm_year < 70) - ds.tm_year += 100; - - ds.tm_mday = ((date[0] - '0') * 10) + (date[1] - '0'); - - monstr = date + 3; - timstr = date + 10; - gmtstr = NULL; - - TIMEPARSE(ds, timstr[0],timstr[1], timstr[3],timstr[4], '0','0'); - } - else if (apr_date_checkmask(date, "# @$$ ## ##:## *")) { - /* Loser format. This is quite bogus. */ - ds.tm_year = ((date[6] - '0') * 10) + (date[7] - '0'); - - if (ds.tm_year < 70) - ds.tm_year += 100; - - ds.tm_mday = (date[0] - '0'); - - monstr = date + 2; - timstr = date + 9; - gmtstr = NULL; - - TIMEPARSE(ds, timstr[0],timstr[1], timstr[3],timstr[4], '0','0'); - } - else if (apr_date_checkmask(date, "## @$$ ## #:##:## *")) { - /* Loser format. This is quite bogus. */ - ds.tm_year = ((date[7] - '0') * 10) + (date[8] - '0'); - - if (ds.tm_year < 70) - ds.tm_year += 100; - - ds.tm_mday = ((date[0] - '0') * 10) + (date[1] - '0'); - - monstr = date + 3; - timstr = date + 9; - gmtstr = date + 18; - - TIMEPARSE(ds, '0',timstr[1], timstr[3],timstr[4], timstr[6],timstr[7]); - } - else if (apr_date_checkmask(date, "# @$$ ## #:##:## *")) { - /* Loser format. This is quite bogus. */ - ds.tm_year = ((date[6] - '0') * 10) + (date[7] - '0'); - - if (ds.tm_year < 70) - ds.tm_year += 100; - - ds.tm_mday = (date[0] - '0'); - - monstr = date + 2; - timstr = date + 8; - gmtstr = date + 17; - - TIMEPARSE(ds, '0',timstr[1], timstr[3],timstr[4], timstr[6],timstr[7]); - } - else if (apr_date_checkmask(date, " # @$$ #### ##:##:## *")) { - /* RFC 1123 format with a space instead of a leading zero. */ - ds.tm_year = ((date[7] - '0') * 10 + (date[8] - '0') - 19) * 100; - - if (ds.tm_year < 0) - return APR_DATE_BAD; - - ds.tm_year += ((date[9] - '0') * 10) + (date[10] - '0'); - - ds.tm_mday = (date[1] - '0'); - - monstr = date + 3; - timstr = date + 12; - gmtstr = date + 20; - - TIMEPARSE_STD(ds, timstr); - } - else if (apr_date_checkmask(date, "##-@$$-#### ##:##:## *")) { - /* RFC 1123 with dashes instead of spaces between date/month/year - * This also looks like RFC 850 with four digit years. - */ - ds.tm_year = ((date[7] - '0') * 10 + (date[8] - '0') - 19) * 100; - if (ds.tm_year < 0) - return APR_DATE_BAD; - - ds.tm_year += ((date[9] - '0') * 10) + (date[10] - '0'); - - ds.tm_mday = ((date[0] - '0') * 10) + (date[1] - '0'); - - monstr = date + 3; - timstr = date + 12; - gmtstr = date + 21; - - TIMEPARSE_STD(ds, timstr); - } - else - return APR_DATE_BAD; - - if (ds.tm_mday <= 0 || ds.tm_mday > 31) - return APR_DATE_BAD; - - if ((ds.tm_hour > 23) || (ds.tm_min > 59) || (ds.tm_sec > 61)) - return APR_DATE_BAD; - - mint = (monstr[0] << 16) | (monstr[1] << 8) | monstr[2]; - for (mon = 0; mon < 12; mon++) - if (mint == months[mon]) - break; - - if (mon == 12) - return APR_DATE_BAD; - - if ((ds.tm_mday == 31) && (mon == 3 || mon == 5 || mon == 8 || mon == 10)) - return APR_DATE_BAD; - - /* February gets special check for leapyear */ - - if ((mon == 1) && - ((ds.tm_mday > 29) - || ((ds.tm_mday == 29) - && ((ds.tm_year & 3) - || (((ds.tm_year % 100) == 0) - && (((ds.tm_year % 400) != 100))))))) - return APR_DATE_BAD; - - ds.tm_mon = mon; - - /* tm_gmtoff is the number of seconds off of GMT the time is. - * - * We only currently support: [+-]ZZZZ where Z is the offset in - * hours from GMT. - * - * If there is any confusion, tm_gmtoff will remain 0. - */ - ds.tm_gmtoff = 0; - if (gmtstr && *gmtstr != '\0') { - /* Do we have a GMT? */ - if (*(++gmtstr) != '\0') { - int offset; - switch (*(gmtstr++)) { - case '-': - offset = atoi(gmtstr); - ds.tm_gmtoff -= (offset / 100) * 60 * 60; - ds.tm_gmtoff -= (offset % 100) * 60; - break; - case '+': - offset = atoi(gmtstr); - ds.tm_gmtoff += (offset / 100) * 60 * 60; - ds.tm_gmtoff += (offset % 100) * 60; - break; - } - } - } - - /* apr_time_exp_get uses tm_usec field, but it hasn't been set yet. - * It should be safe to just zero out this value. - * tm_usec is the number of microseconds into the second. HTTP only - * cares about second granularity. - */ - ds.tm_usec = 0; - - if (apr_time_exp_gmt_get(&result, &ds) != APR_SUCCESS) - return APR_DATE_BAD; - - return result; -} diff --git a/libs/apr-util/misc/apr_reslist.c b/libs/apr-util/misc/apr_reslist.c deleted file mode 100644 index c8ed5062dc7..00000000000 --- a/libs/apr-util/misc/apr_reslist.c +++ /dev/null @@ -1,376 +0,0 @@ -/* Copyright 2000-2005 The Apache Software Foundation or its licensors, as - * applicable. - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -#include - -#include "apu.h" -#include "apr_reslist.h" -#include "apr_errno.h" -#include "apr_strings.h" -#include "apr_thread_mutex.h" -#include "apr_thread_cond.h" -#include "apr_ring.h" - -#if APR_HAS_THREADS - -/** - * A single resource element. - */ -struct apr_res_t { - apr_time_t freed; - void *opaque; - APR_RING_ENTRY(apr_res_t) link; -}; -typedef struct apr_res_t apr_res_t; - -/** - * A ring of resources representing the list of available resources. - */ -APR_RING_HEAD(apr_resring_t, apr_res_t); -typedef struct apr_resring_t apr_resring_t; - -struct apr_reslist_t { - apr_pool_t *pool; /* the pool used in constructor and destructor calls */ - int ntotal; /* total number of resources managed by this list */ - int nidle; /* number of available resources */ - int min; /* desired minimum number of available resources */ - int smax; /* soft maximum on the total number of resources */ - int hmax; /* hard maximum on the total number of resources */ - apr_interval_time_t ttl; /* TTL when we have too many resources */ - apr_interval_time_t timeout; /* Timeout for waiting on resource */ - apr_reslist_constructor constructor; - apr_reslist_destructor destructor; - void *params; /* opaque data passed to constructor and destructor calls */ - apr_resring_t avail_list; - apr_resring_t free_list; - apr_thread_mutex_t *listlock; - apr_thread_cond_t *avail; -}; - -/** - * Grab a resource from the front of the resource list. - * Assumes: that the reslist is locked. - */ -static apr_res_t *pop_resource(apr_reslist_t *reslist) -{ - apr_res_t *res; - res = APR_RING_FIRST(&reslist->avail_list); - APR_RING_REMOVE(res, link); - reslist->nidle--; - return res; -} - -/** - * Add a resource to the end of the list, set the time at which - * it was added to the list. - * Assumes: that the reslist is locked. - */ -static void push_resource(apr_reslist_t *reslist, apr_res_t *resource) -{ - APR_RING_INSERT_TAIL(&reslist->avail_list, resource, apr_res_t, link); - resource->freed = apr_time_now(); - reslist->nidle++; -} - -/** - * Get an resource container from the free list or create a new one. - */ -static apr_res_t *get_container(apr_reslist_t *reslist) -{ - apr_res_t *res; - - if (!APR_RING_EMPTY(&reslist->free_list, apr_res_t, link)) { - res = APR_RING_FIRST(&reslist->free_list); - APR_RING_REMOVE(res, link); - } - else - res = apr_pcalloc(reslist->pool, sizeof(*res)); - return res; -} - -/** - * Free up a resource container by placing it on the free list. - */ -static void free_container(apr_reslist_t *reslist, apr_res_t *container) -{ - APR_RING_INSERT_TAIL(&reslist->free_list, container, apr_res_t, link); -} - -/** - * Create a new resource and return it. - * Assumes: that the reslist is locked. - */ -static apr_status_t create_resource(apr_reslist_t *reslist, apr_res_t **ret_res) -{ - apr_status_t rv; - apr_res_t *res; - - res = get_container(reslist); - - rv = reslist->constructor(&res->opaque, reslist->params, reslist->pool); - - *ret_res = res; - return rv; -} - -/** - * Destroy a single idle resource. - * Assumes: that the reslist is locked. - */ -static apr_status_t destroy_resource(apr_reslist_t *reslist, apr_res_t *res) -{ - return reslist->destructor(res->opaque, reslist->params, reslist->pool); -} - -static apr_status_t reslist_cleanup(void *data_) -{ - apr_status_t rv; - apr_reslist_t *rl = data_; - apr_res_t *res; - - apr_thread_mutex_lock(rl->listlock); - - while (rl->nidle > 0) { - res = pop_resource(rl); - rl->ntotal--; - rv = destroy_resource(rl, res); - if (rv != APR_SUCCESS) { - return rv; - } - free_container(rl, res); - } - - assert(rl->nidle == 0); - assert(rl->ntotal == 0); - - apr_thread_mutex_destroy(rl->listlock); - apr_thread_cond_destroy(rl->avail); - - return APR_SUCCESS; -} - -/** - * Perform routine maintenance on the resource list. This call - * may instantiate new resources or expire old resources. - */ -static apr_status_t reslist_maint(apr_reslist_t *reslist) -{ - apr_time_t now; - apr_status_t rv; - apr_res_t *res; - int created_one = 0; - - apr_thread_mutex_lock(reslist->listlock); - - /* Check if we need to create more resources, and if we are allowed to. */ - while (reslist->nidle < reslist->min && reslist->ntotal <= reslist->hmax) { - /* Create the resource */ - rv = create_resource(reslist, &res); - if (rv != APR_SUCCESS) { - free_container(reslist, res); - apr_thread_mutex_unlock(reslist->listlock); - return rv; - } - /* Add it to the list */ - push_resource(reslist, res); - /* Update our counters */ - reslist->ntotal++; - /* If someone is waiting on that guy, wake them up. */ - rv = apr_thread_cond_signal(reslist->avail); - if (rv != APR_SUCCESS) { - apr_thread_mutex_unlock(reslist->listlock); - return rv; - } - created_one++; - } - - /* We don't need to see if we're over the max if we were under it before */ - if (created_one) { - apr_thread_mutex_unlock(reslist->listlock); - return APR_SUCCESS; - } - - /* Check if we need to expire old resources */ - now = apr_time_now(); - while (reslist->nidle > reslist->smax && reslist->nidle > 0) { - /* Peak at the first resource in the list */ - res = APR_RING_FIRST(&reslist->avail_list); - /* See if the oldest entry should be expired */ - if (now - res->freed < reslist->ttl) { - /* If this entry is too young, none of the others - * will be ready to be expired either, so we are done. */ - break; - } - res = pop_resource(reslist); - reslist->ntotal--; - rv = destroy_resource(reslist, res); - free_container(reslist, res); - if (rv != APR_SUCCESS) { - apr_thread_mutex_unlock(reslist->listlock); - return rv; - } - } - - apr_thread_mutex_unlock(reslist->listlock); - return APR_SUCCESS; -} - -APU_DECLARE(apr_status_t) apr_reslist_create(apr_reslist_t **reslist, - int min, int smax, int hmax, - apr_interval_time_t ttl, - apr_reslist_constructor con, - apr_reslist_destructor de, - void *params, - apr_pool_t *pool) -{ - apr_status_t rv; - apr_reslist_t *rl; - - /* Do some sanity checks so we don't thrash around in the - * maintenance routine later. */ - if (min > smax || min > hmax || smax > hmax || ttl < 0) { - return APR_EINVAL; - } - - rl = apr_pcalloc(pool, sizeof(*rl)); - rl->pool = pool; - rl->min = min; - rl->smax = smax; - rl->hmax = hmax; - rl->ttl = ttl; - rl->constructor = con; - rl->destructor = de; - rl->params = params; - - APR_RING_INIT(&rl->avail_list, apr_res_t, link); - APR_RING_INIT(&rl->free_list, apr_res_t, link); - - rv = apr_thread_mutex_create(&rl->listlock, APR_THREAD_MUTEX_DEFAULT, - pool); - if (rv != APR_SUCCESS) { - return rv; - } - rv = apr_thread_cond_create(&rl->avail, pool); - if (rv != APR_SUCCESS) { - return rv; - } - - rv = reslist_maint(rl); - if (rv != APR_SUCCESS) { - return rv; - } - - apr_pool_cleanup_register(rl->pool, rl, reslist_cleanup, - apr_pool_cleanup_null); - - *reslist = rl; - - return APR_SUCCESS; -} - -APU_DECLARE(apr_status_t) apr_reslist_destroy(apr_reslist_t *reslist) -{ - return apr_pool_cleanup_run(reslist->pool, reslist, reslist_cleanup); -} - -APU_DECLARE(apr_status_t) apr_reslist_acquire(apr_reslist_t *reslist, - void **resource) -{ - apr_status_t rv; - apr_res_t *res; - - apr_thread_mutex_lock(reslist->listlock); - /* If there are idle resources on the available list, use - * them right away. */ - if (reslist->nidle > 0) { - /* Pop off the first resource */ - res = pop_resource(reslist); - *resource = res->opaque; - free_container(reslist, res); - apr_thread_mutex_unlock(reslist->listlock); - return APR_SUCCESS; - } - /* If we've hit our max, block until we're allowed to create - * a new one, or something becomes free. */ - else while (reslist->ntotal >= reslist->hmax - && reslist->nidle <= 0) { - if (reslist->timeout) { - if ((rv = apr_thread_cond_timedwait(reslist->avail, - reslist->listlock, reslist->timeout)) != APR_SUCCESS) { - apr_thread_mutex_unlock(reslist->listlock); - return rv; - } - } - else - apr_thread_cond_wait(reslist->avail, reslist->listlock); - } - /* If we popped out of the loop, first try to see if there - * are new resources available for immediate use. */ - if (reslist->nidle > 0) { - res = pop_resource(reslist); - *resource = res->opaque; - free_container(reslist, res); - apr_thread_mutex_unlock(reslist->listlock); - return APR_SUCCESS; - } - /* Otherwise the reason we dropped out of the loop - * was because there is a new slot available, so create - * a resource to fill the slot and use it. */ - else { - rv = create_resource(reslist, &res); - if (rv == APR_SUCCESS) { - reslist->ntotal++; - *resource = res->opaque; - } - free_container(reslist, res); - apr_thread_mutex_unlock(reslist->listlock); - return rv; - } -} - -APU_DECLARE(apr_status_t) apr_reslist_release(apr_reslist_t *reslist, - void *resource) -{ - apr_res_t *res; - - apr_thread_mutex_lock(reslist->listlock); - res = get_container(reslist); - res->opaque = resource; - push_resource(reslist, res); - apr_thread_cond_signal(reslist->avail); - apr_thread_mutex_unlock(reslist->listlock); - - return reslist_maint(reslist); -} - -APU_DECLARE(void) apr_reslist_timeout_set(apr_reslist_t *reslist, - apr_interval_time_t timeout) -{ - reslist->timeout = timeout; -} - -APU_DECLARE(apr_status_t) apr_reslist_invalidate(apr_reslist_t *reslist, - void *resource) -{ - apr_status_t ret; - apr_thread_mutex_lock(reslist->listlock); - ret = reslist->destructor(resource, reslist->params, reslist->pool); - reslist->ntotal--; - apr_thread_mutex_unlock(reslist->listlock); - return ret; -} - -#endif /* APR_HAS_THREADS */ diff --git a/libs/apr-util/misc/apr_rmm.c b/libs/apr-util/misc/apr_rmm.c deleted file mode 100644 index 87d0513213d..00000000000 --- a/libs/apr-util/misc/apr_rmm.c +++ /dev/null @@ -1,446 +0,0 @@ -/* Copyright 2000-2005 The Apache Software Foundation or its licensors, as - * applicable. - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -#include "apr_general.h" -#include "apr_rmm.h" -#include "apr_errno.h" -#include "apr_lib.h" -#include "apr_strings.h" - -/* The RMM region is made up of two doubly-linked-list of blocks; the - * list of used blocks, and the list of free blocks (either list may - * be empty). The base pointer, rmm->base, points at the beginning of - * the shmem region in use. Each block is addressable by an - * apr_rmm_off_t value, which represents the offset from the base - * pointer. The term "address" is used here to mean such a value; an - * "offset from rmm->base". - * - * The RMM region contains exactly one "rmm_hdr_block_t" structure, - * the "header block", which is always stored at the base pointer. - * The firstused field in this structure is the address of the first - * block in the "used blocks" list; the firstfree field is the address - * of the first block in the "free blocks" list. - * - * Each block is prefixed by an "rmm_block_t" structure, followed by - * the caller-usable region represented by the block. The next and - * prev fields of the structure are zero if the block is at the end or - * beginning of the linked-list respectively, or otherwise hold the - * address of the next and previous blocks in the list. ("address 0", - * i.e. rmm->base is *not* a valid address for a block, since the - * header block is always stored at that address). - * - * At creation, the RMM region is initialized to hold a single block - * on the free list representing the entire available shm segment - * (minus header block); subsequent allocation and deallocation of - * blocks involves splitting blocks and coalescing adjacent blocks, - * and switching them between the free and used lists as - * appropriate. */ - -typedef struct rmm_block_t { - apr_size_t size; - apr_rmm_off_t prev; - apr_rmm_off_t next; -} rmm_block_t; - -/* Always at our apr_rmm_off(0): - */ -typedef struct rmm_hdr_block_t { - apr_size_t abssize; - apr_rmm_off_t /* rmm_block_t */ firstused; - apr_rmm_off_t /* rmm_block_t */ firstfree; -} rmm_hdr_block_t; - -#define RMM_HDR_BLOCK_SIZE (APR_ALIGN_DEFAULT(sizeof(rmm_hdr_block_t))) -#define RMM_BLOCK_SIZE (APR_ALIGN_DEFAULT(sizeof(rmm_block_t))) - -struct apr_rmm_t { - apr_pool_t *p; - rmm_hdr_block_t *base; - apr_size_t size; - apr_anylock_t lock; -}; - -static apr_rmm_off_t find_block_by_offset(apr_rmm_t *rmm, apr_rmm_off_t next, - apr_rmm_off_t find, int includes) -{ - apr_rmm_off_t prev = 0; - - while (next) { - struct rmm_block_t *blk = (rmm_block_t*)((char*)rmm->base + next); - - if (find == next) - return next; - - /* Overshot? */ - if (find < next) - return includes ? prev : 0; - - prev = next; - next = blk->next; - } - return includes ? prev : 0; -} - -static apr_rmm_off_t find_block_of_size(apr_rmm_t *rmm, apr_size_t size) -{ - apr_rmm_off_t next = rmm->base->firstfree; - apr_rmm_off_t best = 0; - apr_rmm_off_t bestsize = 0; - - while (next) { - struct rmm_block_t *blk = (rmm_block_t*)((char*)rmm->base + next); - - if (blk->size == size) - return next; - - if (blk->size >= size) { - /* XXX: sub optimal algorithm - * We need the most thorough best-fit logic, since we can - * never grow our rmm, we are SOL when we hit the wall. - */ - if (!bestsize || (blk->size < bestsize)) { - bestsize = blk->size; - best = next; - } - } - - next = blk->next; - } - - if (bestsize > RMM_BLOCK_SIZE + size) { - struct rmm_block_t *blk = (rmm_block_t*)((char*)rmm->base + best); - struct rmm_block_t *new = (rmm_block_t*)((char*)rmm->base + best + size); - - new->size = blk->size - size; - new->next = blk->next; - new->prev = best; - - blk->size = size; - blk->next = best + size; - - if (new->next) { - blk = (rmm_block_t*)((char*)rmm->base + new->next); - blk->prev = best + size; - } - } - - return best; -} - -static void move_block(apr_rmm_t *rmm, apr_rmm_off_t this, int free) -{ - struct rmm_block_t *blk = (rmm_block_t*)((char*)rmm->base + this); - - /* close the gap */ - if (blk->prev) { - struct rmm_block_t *prev = (rmm_block_t*)((char*)rmm->base + blk->prev); - prev->next = blk->next; - } - else { - if (free) { - rmm->base->firstused = blk->next; - } - else { - rmm->base->firstfree = blk->next; - } - } - if (blk->next) { - struct rmm_block_t *next = (rmm_block_t*)((char*)rmm->base + blk->next); - next->prev = blk->prev; - } - - /* now find it in the other list, pushing it to the head if required */ - if (free) { - blk->prev = find_block_by_offset(rmm, rmm->base->firstfree, this, 1); - if (!blk->prev) { - blk->next = rmm->base->firstfree; - rmm->base->firstfree = this; - } - } - else { - blk->prev = find_block_by_offset(rmm, rmm->base->firstused, this, 1); - if (!blk->prev) { - blk->next = rmm->base->firstused; - rmm->base->firstused = this; - } - } - - /* and open it up */ - if (blk->prev) { - struct rmm_block_t *prev = (rmm_block_t*)((char*)rmm->base + blk->prev); - if (free && (blk->prev + prev->size == this)) { - /* Collapse us into our predecessor */ - prev->size += blk->size; - this = blk->prev; - blk = prev; - } - else { - blk->next = prev->next; - prev->next = this; - } - } - - if (blk->next) { - struct rmm_block_t *next = (rmm_block_t*)((char*)rmm->base + blk->next); - if (free && (this + blk->size == blk->next)) { - /* Collapse us into our successor */ - blk->size += next->size; - blk->next = next->next; - if (blk->next) { - next = (rmm_block_t*)((char*)rmm->base + blk->next); - next->prev = this; - } - } - else { - next->prev = this; - } - } -} - -APU_DECLARE(apr_status_t) apr_rmm_init(apr_rmm_t **rmm, apr_anylock_t *lock, - void *base, apr_size_t size, - apr_pool_t *p) -{ - apr_status_t rv; - rmm_block_t *blk; - apr_anylock_t nulllock; - - if (!lock) { - nulllock.type = apr_anylock_none; - nulllock.lock.pm = NULL; - lock = &nulllock; - } - if ((rv = APR_ANYLOCK_LOCK(lock)) != APR_SUCCESS) - return rv; - - (*rmm) = (apr_rmm_t *)apr_pcalloc(p, sizeof(apr_rmm_t)); - (*rmm)->p = p; - (*rmm)->base = base; - (*rmm)->size = size; - (*rmm)->lock = *lock; - - (*rmm)->base->abssize = size; - (*rmm)->base->firstused = 0; - (*rmm)->base->firstfree = RMM_HDR_BLOCK_SIZE; - - blk = (rmm_block_t *)((char*)base + (*rmm)->base->firstfree); - - blk->size = size - (*rmm)->base->firstfree; - blk->prev = 0; - blk->next = 0; - - return APR_ANYLOCK_UNLOCK(lock); -} - -APU_DECLARE(apr_status_t) apr_rmm_destroy(apr_rmm_t *rmm) -{ - apr_status_t rv; - rmm_block_t *blk; - - if ((rv = APR_ANYLOCK_LOCK(&rmm->lock)) != APR_SUCCESS) { - return rv; - } - /* Blast it all --- no going back :) */ - if (rmm->base->firstused) { - apr_rmm_off_t this = rmm->base->firstused; - do { - blk = (rmm_block_t *)((char*)rmm->base + this); - this = blk->next; - blk->next = blk->prev = 0; - } while (this); - rmm->base->firstused = 0; - } - if (rmm->base->firstfree) { - apr_rmm_off_t this = rmm->base->firstfree; - do { - blk = (rmm_block_t *)((char*)rmm->base + this); - this = blk->next; - blk->next = blk->prev = 0; - } while (this); - rmm->base->firstfree = 0; - } - rmm->base->abssize = 0; - rmm->size = 0; - - return APR_ANYLOCK_UNLOCK(&rmm->lock); -} - -APU_DECLARE(apr_status_t) apr_rmm_attach(apr_rmm_t **rmm, apr_anylock_t *lock, - void *base, apr_pool_t *p) -{ - apr_anylock_t nulllock; - - if (!lock) { - nulllock.type = apr_anylock_none; - nulllock.lock.pm = NULL; - lock = &nulllock; - } - - /* sanity would be good here */ - (*rmm) = (apr_rmm_t *)apr_pcalloc(p, sizeof(apr_rmm_t)); - (*rmm)->p = p; - (*rmm)->base = base; - (*rmm)->size = (*rmm)->base->abssize; - (*rmm)->lock = *lock; - return APR_SUCCESS; -} - -APU_DECLARE(apr_status_t) apr_rmm_detach(apr_rmm_t *rmm) -{ - /* A noop until we introduce locked/refcounts */ - return APR_SUCCESS; -} - -APU_DECLARE(apr_rmm_off_t) apr_rmm_malloc(apr_rmm_t *rmm, apr_size_t reqsize) -{ - apr_rmm_off_t this; - - reqsize = APR_ALIGN_DEFAULT(reqsize) + RMM_BLOCK_SIZE; - - APR_ANYLOCK_LOCK(&rmm->lock); - - this = find_block_of_size(rmm, reqsize); - - if (this) { - move_block(rmm, this, 0); - this += RMM_BLOCK_SIZE; - } - - APR_ANYLOCK_UNLOCK(&rmm->lock); - return this; -} - -APU_DECLARE(apr_rmm_off_t) apr_rmm_calloc(apr_rmm_t *rmm, apr_size_t reqsize) -{ - apr_rmm_off_t this; - - reqsize = APR_ALIGN_DEFAULT(reqsize) + RMM_BLOCK_SIZE; - - APR_ANYLOCK_LOCK(&rmm->lock); - - this = find_block_of_size(rmm, reqsize); - - if (this) { - move_block(rmm, this, 0); - this += RMM_BLOCK_SIZE; - memset((char*)rmm->base + this, 0, reqsize - RMM_BLOCK_SIZE); - } - - APR_ANYLOCK_UNLOCK(&rmm->lock); - return this; -} - -APU_DECLARE(apr_rmm_off_t) apr_rmm_realloc(apr_rmm_t *rmm, void *entity, - apr_size_t reqsize) -{ - apr_rmm_off_t this; - apr_rmm_off_t old; - struct rmm_block_t *blk; - apr_size_t oldsize; - - if (!entity) { - return apr_rmm_malloc(rmm, reqsize); - } - - reqsize = APR_ALIGN_DEFAULT(reqsize); - old = apr_rmm_offset_get(rmm, entity); - - if ((this = apr_rmm_malloc(rmm, reqsize)) == 0) { - return 0; - } - - blk = (rmm_block_t*)((char*)rmm->base + old - RMM_BLOCK_SIZE); - oldsize = blk->size; - - memcpy(apr_rmm_addr_get(rmm, this), - apr_rmm_addr_get(rmm, old), oldsize < reqsize ? oldsize : reqsize); - apr_rmm_free(rmm, old); - - return this; -} - -APU_DECLARE(apr_status_t) apr_rmm_free(apr_rmm_t *rmm, apr_rmm_off_t this) -{ - apr_status_t rv; - struct rmm_block_t *blk; - - /* A little sanity check is always healthy, especially here. - * If we really cared, we could make this compile-time - */ - if (this < RMM_HDR_BLOCK_SIZE + RMM_BLOCK_SIZE) { - return APR_EINVAL; - } - - this -= RMM_BLOCK_SIZE; - - blk = (rmm_block_t*)((char*)rmm->base + this); - - if ((rv = APR_ANYLOCK_LOCK(&rmm->lock)) != APR_SUCCESS) { - return rv; - } - if (blk->prev) { - struct rmm_block_t *prev = (rmm_block_t*)((char*)rmm->base + blk->prev); - if (prev->next != this) { - APR_ANYLOCK_UNLOCK(&rmm->lock); - return APR_EINVAL; - } - } - else { - if (rmm->base->firstused != this) { - APR_ANYLOCK_UNLOCK(&rmm->lock); - return APR_EINVAL; - } - } - - if (blk->next) { - struct rmm_block_t *next = (rmm_block_t*)((char*)rmm->base + blk->next); - if (next->prev != this) { - APR_ANYLOCK_UNLOCK(&rmm->lock); - return APR_EINVAL; - } - } - - /* Ok, it remained [apparently] sane, so unlink it - */ - move_block(rmm, this, 1); - - return APR_ANYLOCK_UNLOCK(&rmm->lock); -} - -APU_DECLARE(void *) apr_rmm_addr_get(apr_rmm_t *rmm, apr_rmm_off_t entity) -{ - /* debug-sanity checking here would be good - */ - return (void*)((char*)rmm->base + entity); -} - -APU_DECLARE(apr_rmm_off_t) apr_rmm_offset_get(apr_rmm_t *rmm, void* entity) -{ - /* debug, or always, sanity checking here would be good - * since the primitive is apr_rmm_off_t, I don't mind penalizing - * inverse conversions for safety, unless someone can prove that - * there is no choice in some cases. - */ - return ((char*)entity - (char*)rmm->base); -} - -APU_DECLARE(apr_size_t) apr_rmm_overhead_get(int n) -{ - /* overhead per block is at most APR_ALIGN_DEFAULT(1) wasted bytes - * for alignment overhead, plus the size of the rmm_block_t - * structure. */ - return RMM_HDR_BLOCK_SIZE + n * (RMM_BLOCK_SIZE + APR_ALIGN_DEFAULT(1)); -} diff --git a/libs/apr-util/misc/apu_version.c b/libs/apr-util/misc/apu_version.c deleted file mode 100644 index dab34b71ad8..00000000000 --- a/libs/apr-util/misc/apu_version.c +++ /dev/null @@ -1,37 +0,0 @@ -/* Copyright 2000-2005 The Apache Software Foundation or its licensors, as - * applicable. - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -#include "apr_general.h" /* for APR_STRINGIFY */ - -#include "apu.h" -#include "apu_version.h" - -APU_DECLARE(void) apu_version(apr_version_t *pvsn) -{ - pvsn->major = APU_MAJOR_VERSION; - pvsn->minor = APU_MINOR_VERSION; - pvsn->patch = APU_PATCH_VERSION; -#ifdef APU_IS_DEV_VERSION - pvsn->is_dev = 1; -#else - pvsn->is_dev = 0; -#endif -} - -APU_DECLARE(const char *) apu_version_string(void) -{ - return APU_VERSION_STRING; -} diff --git a/libs/apr-util/renames_pending b/libs/apr-util/renames_pending deleted file mode 100644 index 0ebcfe2eb30..00000000000 --- a/libs/apr-util/renames_pending +++ /dev/null @@ -1,2 +0,0 @@ -Symbol renames pending for apr-util (keep ordered and complete, please!) - diff --git a/libs/apr-util/strmatch/apr_strmatch.c b/libs/apr-util/strmatch/apr_strmatch.c deleted file mode 100644 index 86f874f358d..00000000000 --- a/libs/apr-util/strmatch/apr_strmatch.c +++ /dev/null @@ -1,118 +0,0 @@ -/* Copyright 2002-2005 The Apache Software Foundation or its licensors, as - * applicable. - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -#include "apr_strmatch.h" -#include "apr_lib.h" -#define APR_WANT_STRFUNC -#include "apr_want.h" - - -#define NUM_CHARS 256 - -/* - * String searching functions - */ -static const char *match_no_op(const apr_strmatch_pattern *this_pattern, - const char *s, apr_size_t slen) -{ - return s; -} - -static const char *match_boyer_moore_horspool( - const apr_strmatch_pattern *this_pattern, - const char *s, apr_size_t slen) -{ - const char *s_end = s + slen; - int *shift = (int *)(this_pattern->context); - const char *s_next = s + this_pattern->length - 1; - const char *p_start = this_pattern->pattern; - const char *p_end = p_start + this_pattern->length - 1; - while (s_next < s_end) { - const char *s_tmp = s_next; - const char *p_tmp = p_end; - while (*s_tmp == *p_tmp) { - p_tmp--; - if (p_tmp < p_start) { - return s_tmp; - } - s_tmp--; - } - s_next += shift[(int)*((const unsigned char *)s_next)]; - } - return NULL; -} - -static const char *match_boyer_moore_horspool_nocase( - const apr_strmatch_pattern *this_pattern, - const char *s, apr_size_t slen) -{ - const char *s_end = s + slen; - int *shift = (int *)(this_pattern->context); - const char *s_next = s + this_pattern->length - 1; - const char *p_start = this_pattern->pattern; - const char *p_end = p_start + this_pattern->length - 1; - while (s_next < s_end) { - const char *s_tmp = s_next; - const char *p_tmp = p_end; - while (apr_tolower(*s_tmp) == apr_tolower(*p_tmp)) { - p_tmp--; - if (p_tmp < p_start) { - return s_tmp; - } - s_tmp--; - } - s_next += shift[apr_tolower(*s_next)]; - } - return NULL; -} - -APU_DECLARE(const apr_strmatch_pattern *) apr_strmatch_precompile( - apr_pool_t *p, const char *s, - int case_sensitive) -{ - apr_strmatch_pattern *pattern; - apr_size_t i; - int *shift; - - pattern = apr_palloc(p, sizeof(*pattern)); - pattern->pattern = s; - pattern->length = strlen(s); - if (pattern->length == 0) { - pattern->compare = match_no_op; - pattern->context = NULL; - return pattern; - } - - shift = (int *)apr_palloc(p, sizeof(int) * NUM_CHARS); - for (i = 0; i < NUM_CHARS; i++) { - shift[i] = pattern->length; - } - if (case_sensitive) { - pattern->compare = match_boyer_moore_horspool; - for (i = 0; i < pattern->length - 1; i++) { - shift[(int)s[i]] = pattern->length - i - 1; - } - } - else { - pattern->compare = match_boyer_moore_horspool_nocase; - for (i = 0; i < pattern->length - 1; i++) { - shift[apr_tolower(s[i])] = pattern->length - i - 1; - } - } - pattern->context = shift; - - return pattern; -} diff --git a/libs/apr-util/test/Makefile.in b/libs/apr-util/test/Makefile.in deleted file mode 100644 index eb101720d8e..00000000000 --- a/libs/apr-util/test/Makefile.in +++ /dev/null @@ -1,81 +0,0 @@ -VPATH = @srcdir@ - -INCLUDES = @APRUTIL_PRIV_INCLUDES@ @APR_INCLUDES@ @APRUTIL_INCLUDES@ - -PROGRAMS = testall testdbm testdate testxml testrmm \ - testreslist testqueue testxlate dbd -TARGETS = $(PROGRAMS) - -APRUTIL_DOTTED_VERSION=@APRUTIL_DOTTED_VERSION@ -APRUTIL_MAJOR_VERSION=@APRUTIL_MAJOR_VERSION@ -TARGET_LIB_PATH = ../lib@APRUTIL_LIBNAME@.la - -CLEAN_TARGETS = manyfile.bin testfile.txt data/sqlite*.db - -# bring in rules.mk for standard functionality -@INCLUDE_RULES@ -PROGRAM_DEPENDENCIES = @APRUTIL_LIBS@ -APRUTIL_LDFLAGS = -no-install @APRUTIL_LDFLAGS@ - -all: $(PROGRAMS) - -check: $(PROGRAMS) - for prog in $(PROGRAMS); do \ - ./$$prog ;\ - if test $$? = 255; then \ - echo "$$prog failed"; \ - break; \ - fi; \ - done - -testdbm_OBJECTS = testdbm.lo -testdbm_LDADD = $(TARGET_LIB_PATH) -testdbm: $(testdbm_OBJECTS) $(testdbm_LDADD) - $(LINK) $(APRUTIL_LDFLAGS) $(testdbm_OBJECTS) $(testdbm_LDADD) $(PROGRAM_DEPENDENCIES) - -dbd_OBJECTS = dbd.lo -dbd_LDADD = $(TARGET_LIB_PATH) -dbd: $(dbd_OBJECTS) $(dbd_LDADD) - $(LINK) $(APRUTIL_LDFLAGS) $(dbd_OBJECTS) $(dbd_LDADD) $(PROGRAM_DEPENDENCIES) - -testdbd_OBJECTS = testdbd.lo -testdbd_LDADD = $(TARGET_LIB_PATH) -testdbd: $(testdbd_OBJECTS) $(testdbd_LDADD) - $(LINK) $(APRUTIL_LDFLAGS) $(testdbd_OBJECTS) $(testdbd_LDADD) $(PROGRAM_DEPENDENCIES) - -testdate_OBJECTS = testdate.lo -testdate_LDADD = $(TARGET_LIB_PATH) -testdate: $(testdate_OBJECTS) $(testdate_LDADD) - $(LINK) $(APRUTIL_LDFLAGS) $(testdate_OBJECTS) $(testdate_LDADD) $(PROGRAM_DEPENDENCIES) - -testxml_OBJECTS = testxml.lo -testxml_LDADD = $(TARGET_LIB_PATH) -testxml: $(testxml_OBJECTS) $(testxml_LDADD) - $(LINK) $(APRUTIL_LDFLAGS) $(testxml_OBJECTS) $(testxml_LDADD) $(PROGRAM_DEPENDENCIES) - -testrmm_OBJECTS = testrmm.lo -testrmm_LDADD = $(TARGET_LIB_PATH) -testrmm: $(testrmm_OBJECTS) $(testrmm_LDADD) - $(LINK) $(APRUTIL_LDFLAGS) $(testrmm_OBJECTS) $(testrmm_LDADD) $(PROGRAM_DEPENDENCIES) - -testreslist_OBJECTS = testreslist.lo -testreslist_LDADD = $(TARGET_LIB_PATH) -testreslist: $(testreslist_OBJECTS) $(testreslist_LDADD) - $(LINK) $(APRUTIL_LDFLAGS) $(testreslist_OBJECTS) $(testreslist_LDADD) $(PROGRAM_DEPENDENCIES) - -testqueue_OBJECTS = testqueue.lo -testqueue_LDADD = $(TARGET_LIB_PATH) -testqueue: $(testqueue_OBJECTS) $(testqueue_LDADD) - $(LINK) $(APRUTIL_LDFLAGS) $(testqueue_OBJECTS) $(testqueue_LDADD) $(PROGRAM_DEPENDENCIES) - -testxlate_OBJECTS = testxlate.lo -testxlate_LDADD = $(TARGET_LIB_PATH) -testxlate: $(testxlate_OBJECTS) $(testxlate_LDADD) - $(LINK) $(APRUTIL_LDFLAGS) $(testxlate_OBJECTS) $(testxlate_LDADD) $(PROGRAM_DEPENDENCIES) - -testall_OBJECTS = teststrmatch.lo testuri.lo testuuid.lo abts.lo testutil.lo \ - testbuckets.lo testpass.lo testmd4.lo testmd5.lo testldap.lo testdbd.lo -testall_LDADD = $(TARGET_LIB_PATH) -testall: $(testall_OBJECTS) $(testall_LDADD) - $(LINK) $(APRUTIL_LDFLAGS) $(testall_OBJECTS) $(testall_LDADD) $(PROGRAM_DEPENDENCIES) - diff --git a/libs/apr-util/test/Makefile.win b/libs/apr-util/test/Makefile.win deleted file mode 100644 index 374f0ebb834..00000000000 --- a/libs/apr-util/test/Makefile.win +++ /dev/null @@ -1,131 +0,0 @@ -# -*- Makefile -*- -!IF "$(OS)" == "Windows_NT" -NULL= -rmdir=rd /s /q -!ELSE -NULL=nul -rmdir=deltree /y -!ENDIF - -SILENT=@ - -# Default build and bind modes -BUILD_MODE = release -BIND_MODE = shared - -!IF "$(BUILD_MODE)" == "release" || "$(BUILD_MODE)" == "Release" -!IF "$(BIND_MODE)" == "shared" -# release shared -APR_LIB_PFX = $(APR_SOURCE)\Release\lib -APU_LIB_PFX = $(APU_SOURCE)\Release\lib -API_LIB_PFX = $(API_SOURCE)\Release\lib -CFG_CFLAGS = /MD /O2 -CFG_DEFINES = /D "NDEBUG" -CFG_OUTPUT = Release - -!ELSE -!IF "$(BIND_MODE)" == "static" -# release static -APR_LIB_PFX = $(APR_SOURCE)\LibR\ # no line continuation -APU_LIB_PFX = $(APU_SOURCE)\LibR\ # no line continuation -API_LIB_PFX = $(API_SOURCE)\LibR\ # no line continuation -CFG_CFLAGS = /MD /O2 -CFG_DEFINES = /D "NDEBUG" /D "APR_DECLARE_STATIC" \ - /D "APU_DECLARE_STATIC" /D "API_DECLARE_STATIC" -CFG_API_LIB = $(API_LIB_PFX)apriconv-1.lib -CFG_OUTPUT = LibR - -!ELSE -!ERROR Unknown bind mode "$(BIND_MODE)" -!ENDIF -!ENDIF - -!ELSE -!IF "$(BUILD_MODE)" == "debug" || "$(BUILD_MODE)" == "Debug" -!IF "$(BIND_MODE)" == "shared" -# debug shared -APR_LIB_PFX = $(APR_SOURCE)\Debug\lib -APU_LIB_PFX = $(APU_SOURCE)\Debug\lib -API_LIB_PFX = $(API_SOURCE)\Debug\lib -CFG_CFLAGS = /MDd /Zi /Od -CFG_DEFINES = /D "_DEBUG" -CFG_LDFLAGS = /DEBUG -CFG_OUTPUT = Debug - -!ELSE -!IF "$(BIND_MODE)" == "static" -# debug static -APR_LIB_PFX = $(APR_SOURCE)\LibD\ # no line continuation -APU_LIB_PFX = $(APU_SOURCE)\LibD\ # no line continuation -API_LIB_PFX = $(API_SOURCE)\LibD\ # no line continuation -CFG_CFLAGS = /MDd /Zi /Od -CFG_DEFINES = /D "_DEBUG" /D "APR_DECLARE_STATIC" \ - /D "APU_DECLARE_STATIC" /D "API_DECLARE_STATIC" -CFG_LDFLAGS = /DEBUG -CFG_API_LIB = $(API_LIB_PFX)apriconv-1.lib -CFG_OUTPUT = LibD - -!ELSE -!ERROR Unknown bind mode "$(BIND_MODE)" -!ENDIF -!ENDIF - -!ELSE -!ERROR Unknown build mode "$(BUILD_MODE)" -!ENDIF -!ENDIF - - -APR_SOURCE = ..\..\apr -APU_SOURCE = .. -API_SOURCE = ..\..\apr-iconv -OUTPUT_DIR = .\$(CFG_OUTPUT) - -INT_CFLAGS = /nologo $(CFG_CFLAGS) /Fp"$(OUTPUT_DIR)\iconv.pch" /YX"iconv.h" -INT_INCLUDES = /I "$(APU_SOURCE)\include" /I "$(APR_SOURCE)\include" -# /I "$(API_SOURCE)\include" -INT_DEFINES = /D "WIN32" /D "_CONSOLE" /D "_MBCS" $(CFG_DEFINES) -INT_LDFLAGS = /nologo /incremental:no /subsystem:console $(CFG_LDFLAGS) - -CFLAGS = /W3 -ALL_CFLAGS = $(INT_CFLAGS) $(INT_INCLUDES) $(INT_DEFINES) $(CFLAGS) - -LDFLAGS = /WARN:0 -ALL_LDFLAGS = $(INT_LDFLAGS) $(LDFLAGS) - -.c{$(OUTPUT_DIR)}.exe: - -$(SILENT)if not exist "$(OUTPUT_DIR)\$(NULL)" mkdir "$(OUTPUT_DIR)" - $(SILENT)echo Compiling and linking $@... - $(SILENT)cl $(ALL_CFLAGS) /Fo"$*.obj" /Fd"$*" $< \ - /link $(ALL_LDFLAGS) /out:$@ \ - "$(APU_LIB_PFX)aprutil-1.lib" \ - "$(APR_LIB_PFX)apr-1.lib" \ - "$(CFG_API)" \ - kernel32.lib advapi32.lib ws2_32.lib mswsock.lib - - -##!ALL_TARGETS = $(OUTPUT_DIR)\testdate.exe \ -##! $(OUTPUT_DIR)\testdbm.exe \ -##! $(OUTPUT_DIR)\testmd4.exe \ -##! $(OUTPUT_DIR)\testmd5.exe \ -##! $(OUTPUT_DIR)\testqueue.exe \ -##! $(OUTPUT_DIR)\testreslist.exe \ -##! $(OUTPUT_DIR)\testrmm.exe \ -##! $(OUTPUT_DIR)\teststrmatch.exe \ -##! $(OUTPUT_DIR)\testuri.exe \ -##! $(OUTPUT_DIR)\testuuid.exe \ -##! $(OUTPUT_DIR)\testxlate.exe \ -##! $(OUTPUT_DIR)\testxml.exe - -ALL_TARGETS = $(OUTPUT_DIR)\testxlate.exe \ - $(OUTPUT_DIR)\testdbm.exe \ - $(OUTPUT_DIR)\testqueue.exe \ - $(OUTPUT_DIR)\testrmm.exe \ - $(OUTPUT_DIR)\testmd4.exe \ - $(OUTPUT_DIR)\testmd5.exe \ - $(OUTPUT_DIR)\testxml.exe - -all: $(ALL_TARGETS) - -clean: - -$(SILENT)if exist "$(OUTPUT_DIR)/$(NULL)" $(rmdir) $(OUTPUT_DIR) diff --git a/libs/apr-util/test/NWGNUmakefile b/libs/apr-util/test/NWGNUmakefile deleted file mode 100644 index e0bb2d5b0b3..00000000000 --- a/libs/apr-util/test/NWGNUmakefile +++ /dev/null @@ -1,258 +0,0 @@ -# -# Declare the sub-directories to be built here -# - -SUBDIRS = \ - $(EOLIST) - -# -# Get the 'head' of the build environment. This includes default targets and -# paths to tools -# - -include $(APR_WORK)\build\NWGNUhead.inc - -# -# build this level's files - -# -# Make sure all needed macro's are defined -# - - -# -# These directories will be at the beginning of the include list, followed by -# INCDIRS -# -XINCDIRS += \ - $(APR)/include \ - $(APR)/include/arch/NetWare \ - $(EOLIST) - -# -# These flags will come after CFLAGS -# -XCFLAGS += \ - $(EOLIST) - -# -# These defines will come after DEFINES -# -XDEFINES += \ - $(EOLIST) - -# -# These flags will be added to the link.opt file -# -XLFLAGS += \ - $(EOLIST) - -# -# These values will be appended to the correct variables based on the value of -# RELEASE -# -ifeq "$(RELEASE)" "debug" -XINCDIRS += \ - $(EOLIST) - -XCFLAGS += \ - $(EOLIST) - -XDEFINES += \ - $(EOLIST) - -XLFLAGS += \ - $(EOLIST) - -endif - -ifeq "$(RELEASE)" "noopt" -XINCDIRS += \ - $(EOLIST) - -XCFLAGS += \ - $(EOLIST) - -XDEFINES += \ - $(EOLIST) - -XLFLAGS += \ - $(EOLIST) -endif - -ifeq "$(RELEASE)" "release" -XINCDIRS += \ - $(EOLIST) - -XCFLAGS += \ - $(EOLIST) - -XDEFINES += \ - $(EOLIST) - -XLFLAGS += \ - $(EOLIST) -endif - -# -# These are used by the link target if an NLM is being generated -# This is used by the link 'name' directive to name the nlm. If left blank -# TARGET_nlm (see below) will be used. -# -NLM_NAME = - -# -# This is used by the link '-desc ' directive. -# If left blank, NLM_NAME will be used. -# -NLM_DESCRIPTION = NLM is to test the apu layer - -# -# This is used by the '-threadname' directive. If left blank, -# NLM_NAME Thread will be used. -# -NLM_THREAD_NAME = - -# -# This is used by the '-screenname' directive. If left blank, -# 'Apache for NetWare' Thread will be used. -# -NLM_SCREEN_NAME = - -# -# If this is specified, it will override VERSION value in -# $(APR_WORK)\build\NWGNUenvironment.inc -# -NLM_VERSION = - -# -# If this is specified, it will override the default of 64K -# -NLM_STACK_SIZE = - -# -# If this is specified it will be used by the link '-entry' directive -# -NLM_ENTRY_SYM = - -# -# If this is specified it will be used by the link '-exit' directive -# -NLM_EXIT_SYM = - -# -# If this is specified it will be used by the link '-check' directive -# -NLM_CHECK_SYM = - -# -# If this is specified it will be used by the link '-flags' directive -# -NLM_FLAGS = - -# -# If this is specified it will be linked in with the XDCData option in the def -# file instead of the default of $(APR)/misc/netware/apache.xdc. XDCData can -# be disabled by setting APACHE_UNIPROC in the environment -# -XDCDATA = - -# -# Declare all target files (you must add your files here) -# - -# -# If there is an NLM target, put it here -# -TARGET_nlm = \ - $(OBJDIR)/aputest.nlm \ - $(OBJDIR)/testdate.nlm \ - $(EOLIST) -# -# If there is an LIB target, put it here -# -TARGET_lib = \ - $(EOLIST) - -# -# These are the OBJ files needed to create the NLM target above. -# Paths must all use the '/' character -# -FILES_nlm_objs = \ - $(EOLIST) - -# -# These are the LIB files needed to create the NLM target above. -# These will be added as a library command in the link.opt file. -# -FILES_nlm_libs = \ - $(EOLIST) - -# -# These are the modules that the above NLM target depends on to load. -# These will be added as a module command in the link.opt file. -# -FILES_nlm_modules = \ - aprlib \ - $(EOLIST) - -# -# If the nlm has a msg file, put it's path here -# -FILE_nlm_msg = - -# -# If the nlm has a hlp file put it's path here -# -FILE_nlm_hlp = - -# -# If this is specified, it will override the default copyright. -# -FILE_nlm_copyright = - -# -# Any additional imports go here -# -FILES_nlm_Ximports = \ - $(EOLIST) - -# -# Any symbols exported to here -# -FILES_nlm_exports = \ - $(EOLIST) - -# -# These are the OBJ files needed to create the LIB target above. -# Paths must all use the '/' character -# -FILES_lib_objs = \ - $(EOLIST) - -# -# implement targets and dependancies (leave this section alone) -# - -libs :: $(OBJDIR) $(TARGET_lib) - -nlms :: libs $(TARGET_nlm) - -# -# Updated this target to create necessary directories and copy files to the -# correct place. (See $(APR_WORK)\build\NWGNUhead.inc for examples) -# -install :: nlms FORCE - copy $(OBJDIR)\*.nlm $(INSTALL)\Apache2 - -# -# Any specialized rules here -# - -# -# Include the 'tail' makefile that has targets that depend on variables defined -# in this makefile -# - -include $(APR_WORK)\build\NWGNUtail.inc - diff --git a/libs/apr-util/test/abts.c b/libs/apr-util/test/abts.c deleted file mode 100644 index 03ae16d1b33..00000000000 --- a/libs/apr-util/test/abts.c +++ /dev/null @@ -1,416 +0,0 @@ -/* Copyright 2000-2004 Ryan Bloom - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - * - * Portions of this file were taken from testall.c in the APR test suite, - * written by members of the Apache Software Foundation. - */ - -#include "abts.h" -#include "abts_tests.h" -#include "testutil.h" - -#define ABTS_STAT_SIZE 6 -static char status[ABTS_STAT_SIZE] = {'|', '/', '-', '|', '\\', '-'}; -static int curr_char; -static int verbose = 0; -static int exclude = 0; -static int quiet = 0; -static int list_tests = 0; - -const char **testlist = NULL; - -static int find_test_name(const char *testname) { - int i; - for (i = 0; testlist[i] != NULL; i++) { - if (!strcmp(testlist[i], testname)) { - return 1; - } - } - return 0; -} - -/* Determine if the test should be run at all */ -static int should_test_run(const char *testname) { - int found = 0; - if (list_tests == 1) { - return 0; - } - if (testlist == NULL) { - return 1; - } - found = find_test_name(testname); - if ((found && !exclude) || (!found && exclude)) { - return 1; - } - return 0; -} - -static void reset_status(void) -{ - curr_char = 0; -} - -static void update_status(void) -{ - if (!quiet) { - curr_char = (curr_char + 1) % ABTS_STAT_SIZE; - fprintf(stdout, "\b%c", status[curr_char]); - fflush(stdout); - } -} - -static void end_suite(abts_suite *suite) -{ - if (suite != NULL) { - sub_suite *last = suite->tail; - if (!quiet) { - fprintf(stdout, "\b"); - fflush(stdout); - } - if (last->failed == 0) { - fprintf(stdout, "SUCCESS\n"); - fflush(stdout); - } - else { - fprintf(stdout, "FAILED %d of %d\n", last->failed, last->num_test); - fflush(stdout); - } - } -} - -abts_suite *abts_add_suite(abts_suite *suite, const char *suite_name_full) -{ - sub_suite *subsuite; - char *p; - const char *suite_name; - curr_char = 0; - - /* Only end the suite if we actually ran it */ - if (suite && suite->tail &&!suite->tail->not_run) { - end_suite(suite); - } - - subsuite = malloc(sizeof(*subsuite)); - subsuite->num_test = 0; - subsuite->failed = 0; - subsuite->next = NULL; - /* suite_name_full may be an absolute path depending on __FILE__ - * expansion */ - suite_name = strrchr(suite_name_full, '/'); - if (suite_name) { - suite_name++; - } else { - suite_name = suite_name_full; - } - p = strrchr(suite_name, '.'); - if (p) { - subsuite->name = memcpy(calloc(p - suite_name + 1, 1), - suite_name, p - suite_name); - } - else { - subsuite->name = suite_name; - } - - if (list_tests) { - fprintf(stdout, "%s\n", subsuite->name); - } - - subsuite->not_run = 0; - - if (suite == NULL) { - suite = malloc(sizeof(*suite)); - suite->head = subsuite; - suite->tail = subsuite; - } - else { - suite->tail->next = subsuite; - suite->tail = subsuite; - } - - if (!should_test_run(subsuite->name)) { - subsuite->not_run = 1; - return suite; - } - - reset_status(); - fprintf(stdout, "%-20s: ", subsuite->name); - update_status(); - fflush(stdout); - - return suite; -} - -void abts_run_test(abts_suite *ts, test_func f, void *value) -{ - abts_case *tc; - sub_suite *ss; - - if (!should_test_run(ts->tail->name)) { - return; - } - ss = ts->tail; - - tc = malloc(sizeof(*tc)); - tc->failed = 0; - tc->suite = ss; - - ss->num_test++; - update_status(); - - f(tc, value); - - if (tc->failed) { - ss->failed++; - } - free(tc); -} - -static int report(abts_suite *suite) -{ - int count = 0; - sub_suite *dptr; - - if (suite && suite->tail &&!suite->tail->not_run) { - end_suite(suite); - } - - for (dptr = suite->head; dptr; dptr = dptr->next) { - count += dptr->failed; - } - - if (list_tests) { - return 0; - } - - if (count == 0) { - printf("All tests passed.\n"); - return 0; - } - - dptr = suite->head; - fprintf(stdout, "%-15s\t\tTotal\tFail\tFailed %%\n", "Failed Tests"); - fprintf(stdout, "===================================================\n"); - while (dptr != NULL) { - if (dptr->failed != 0) { - float percent = ((float)dptr->failed / (float)dptr->num_test); - fprintf(stdout, "%-15s\t\t%5d\t%4d\t%6.2f%%\n", dptr->name, - dptr->num_test, dptr->failed, percent * 100); - } - dptr = dptr->next; - } - return 1; -} - -void abts_log_message(const char *fmt, ...) -{ - va_list args; - update_status(); - - if (verbose) { - va_start(args, fmt); - vfprintf(stderr, fmt, args); - va_end(args); - fprintf(stderr, "\n"); - fflush(stderr); - } -} - -void abts_int_equal(abts_case *tc, const int expected, const int actual, int lineno) -{ - update_status(); - if (tc->failed) return; - - if (expected == actual) return; - - tc->failed = TRUE; - if (verbose) { - fprintf(stderr, "Line %d: expected <%d>, but saw <%d>\n", lineno, expected, actual); - fflush(stderr); - } -} - -void abts_int_nequal(abts_case *tc, const int expected, const int actual, int lineno) -{ - update_status(); - if (tc->failed) return; - - if (expected != actual) return; - - tc->failed = TRUE; - if (verbose) { - fprintf(stderr, "Line %d: expected <%d>, but saw <%d>\n", lineno, expected, actual); - fflush(stderr); - } -} - -void abts_str_equal(abts_case *tc, const char *expected, const char *actual, int lineno) -{ - update_status(); - if (tc->failed) return; - - /* If both are NULL, match is good */ - if (!expected && !actual) return; - if (expected && actual) - if (!strcmp(expected, actual)) return; - - tc->failed = TRUE; - if (verbose) { - fprintf(stderr, "Line %d: expected <%s>, but saw <%s>\n", lineno, expected, actual); - fflush(stderr); - } -} - -void abts_str_nequal(abts_case *tc, const char *expected, const char *actual, - size_t n, int lineno) -{ - update_status(); - if (tc->failed) return; - - if (!strncmp(expected, actual, n)) return; - - tc->failed = TRUE; - if (verbose) { - fprintf(stderr, "Line %d: expected <%s>, but saw <%s>\n", lineno, expected, actual); - fflush(stderr); - } -} - -void abts_ptr_notnull(abts_case *tc, const void *ptr, int lineno) -{ - update_status(); - if (tc->failed) return; - - if (ptr != NULL) return; - - tc->failed = TRUE; - if (verbose) { - fprintf(stderr, "Line %d: Expected NULL, but saw <%p>\n", lineno, ptr); - fflush(stderr); - } -} - -void abts_ptr_equal(abts_case *tc, const void *expected, const void *actual, int lineno) -{ - update_status(); - if (tc->failed) return; - - if (expected == actual) return; - - tc->failed = TRUE; - if (verbose) { - fprintf(stderr, "Line %d: expected <%p>, but saw <%p>\n", lineno, expected, actual); - fflush(stderr); - } -} - -void abts_fail(abts_case *tc, const char *message, int lineno) -{ - update_status(); - if (tc->failed) return; - - tc->failed = TRUE; - if (verbose) { - fprintf(stderr, "Line %d: %s\n", lineno, message); - fflush(stderr); - } -} - -void abts_assert(abts_case *tc, const char *message, int condition, int lineno) -{ - update_status(); - if (tc->failed) return; - - if (condition) return; - - tc->failed = TRUE; - if (verbose) { - fprintf(stderr, "Line %d: %s\n", lineno, message); - fflush(stderr); - } -} - -void abts_true(abts_case *tc, int condition, int lineno) -{ - update_status(); - if (tc->failed) return; - - if (condition) return; - - tc->failed = TRUE; - if (verbose) { - fprintf(stderr, "Line %d: Condition is false, but expected true\n", lineno); - fflush(stderr); - } -} - -void abts_not_impl(abts_case *tc, const char *message, int lineno) -{ - update_status(); - - tc->suite->not_impl++; - if (verbose) { - fprintf(stderr, "Line %d: %s\n", lineno, message); - fflush(stderr); - } -} - -int main(int argc, const char *const argv[]) { - int i; - int rv; - int list_provided = 0; - abts_suite *suite = NULL; - - initialize(); - for (i = 1; i < argc; i++) { - if (!strcmp(argv[i], "-v")) { - verbose = 1; - continue; - } - if (!strcmp(argv[i], "-x")) { - exclude = 1; - continue; - } - if (!strcmp(argv[i], "-l")) { - list_tests = 1; - continue; - } - if (!strcmp(argv[i], "-q")) { - quiet = 1; - continue; - } - if (argv[i][0] == '-') { - fprintf(stderr, "Invalid option: `%s'\n", argv[i]); - exit(1); - } - list_provided = 1; - } - - if (list_provided) { - /* Waste a little space here, because it is easier than counting the - * number of tests listed. Besides it is at most three char *. - */ - testlist = calloc(argc + 1, sizeof(char *)); - for (i = 1; i < argc; i++) { - testlist[i - 1] = argv[i]; - } - } - - for (i = 0; i < (sizeof(alltests) / sizeof(struct testlist *)); i++) { - suite = alltests[i].func(suite); - } - - rv = report(suite); - return rv; -} - diff --git a/libs/apr-util/test/abts.h b/libs/apr-util/test/abts.h deleted file mode 100644 index 51123ff079f..00000000000 --- a/libs/apr-util/test/abts.h +++ /dev/null @@ -1,98 +0,0 @@ -/* Copyright 2000-2004 Ryan Bloom - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -#ifdef __cplusplus -extern "C" { -#endif - -#include -#include -#include -#include - -#ifndef ABTS_H -#define ABTS_H - -#ifndef FALSE -#define FALSE 0 -#endif -#ifndef TRUE -#define TRUE 1 -#endif - -struct sub_suite { - const char *name; - int num_test; - int failed; - int not_run; - int not_impl; - struct sub_suite *next; -}; -typedef struct sub_suite sub_suite; - -struct abts_suite { - sub_suite *head; - sub_suite *tail; -}; -typedef struct abts_suite abts_suite; - -struct abts_case { - int failed; - sub_suite *suite; -}; -typedef struct abts_case abts_case; - -typedef void (*test_func)(abts_case *tc, void *data); - -#define ADD_SUITE(suite) abts_add_suite(suite, __FILE__); - -abts_suite *abts_add_suite(abts_suite *suite, const char *suite_name); -void abts_run_test(abts_suite *ts, test_func f, void *value); -void abts_log_message(const char *fmt, ...); - -void abts_int_equal(abts_case *tc, const int expected, const int actual, int lineno); -void abts_int_nequal(abts_case *tc, const int expected, const int actual, int lineno); -void abts_str_equal(abts_case *tc, const char *expected, const char *actual, int lineno); -void abts_str_nequal(abts_case *tc, const char *expected, const char *actual, - size_t n, int lineno); -void abts_ptr_notnull(abts_case *tc, const void *ptr, int lineno); -void abts_ptr_equal(abts_case *tc, const void *expected, const void *actual, int lineno); -void abts_true(abts_case *tc, int condition, int lineno); -void abts_fail(abts_case *tc, const char *message, int lineno); -void abts_not_impl(abts_case *tc, const char *message, int lineno); -void abts_assert(abts_case *tc, const char *message, int condition, int lineno); - -/* Convenience macros. Ryan hates these! */ -#define ABTS_INT_EQUAL(a, b, c) abts_int_equal(a, b, c, __LINE__) -#define ABTS_INT_NEQUAL(a, b, c) abts_int_nequal(a, b, c, __LINE__) -#define ABTS_STR_EQUAL(a, b, c) abts_str_equal(a, b, c, __LINE__) -#define ABTS_STR_NEQUAL(a, b, c, d) abts_str_nequal(a, b, c, d, __LINE__) -#define ABTS_PTR_NOTNULL(a, b) abts_ptr_notnull(a, b, __LINE__) -#define ABTS_PTR_EQUAL(a, b, c) abts_ptr_equal(a, b, c, __LINE__) -#define ABTS_TRUE(a, b) abts_true(a, b, __LINE__); -#define ABTS_FAIL(a, b) abts_fail(a, b, __LINE__); -#define ABTS_NOT_IMPL(a, b) abts_not_impl(a, b, __LINE__); -#define ABTS_ASSERT(a, b, c) abts_assert(a, b, c, __LINE__); - -abts_suite *run_tests(abts_suite *suite); -abts_suite *run_tests1(abts_suite *suite); - - -#endif - -#ifdef __cplusplus -} -#endif - diff --git a/libs/apr-util/test/abts_tests.h b/libs/apr-util/test/abts_tests.h deleted file mode 100644 index b137ce58dce..00000000000 --- a/libs/apr-util/test/abts_tests.h +++ /dev/null @@ -1,37 +0,0 @@ -/* Copyright 2000-2005 The Apache Software Foundation or its licensors, as - * applicable. - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -#ifndef APR_TEST_INCLUDES -#define APR_TEST_INCLUDES - -#include "abts.h" -#include "testutil.h" - -const struct testlist { - abts_suite *(*func)(abts_suite *suite); -} alltests[] = { - {teststrmatch}, - {testuri}, - {testuuid}, - {testbuckets}, - {testpass}, - {testmd4}, - {testmd5}, - {testldap}, - {testdbd} -}; - -#endif /* APR_TEST_INCLUDES */ diff --git a/libs/apr-util/test/data/.empty b/libs/apr-util/test/data/.empty deleted file mode 100644 index e69de29bb2d..00000000000 diff --git a/libs/apr-util/test/dbd.c b/libs/apr-util/test/dbd.c deleted file mode 100644 index f8832539c18..00000000000 --- a/libs/apr-util/test/dbd.c +++ /dev/null @@ -1,407 +0,0 @@ -/* Copyright 2000-2005 The Apache Software Foundation or its licensors, as - * applicable. - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -#include "apu.h" -#include "apr_pools.h" -#include "apr_dbd.h" - -#include - -#define TEST(msg,func) \ - printf("======== %s ========\n", msg); \ - rv = func(pool, sql, driver); \ - if (rv != 0) { \ - printf("Error in %s: rc=%d\n\n", msg, rv); \ - } \ - else { \ - printf("%s test successful\n\n", msg); \ - } \ - fflush(stdout); - -static int create_table(apr_pool_t* pool, apr_dbd_t* handle, - const apr_dbd_driver_t* driver) -{ - int rv = 0; - int nrows; - const char *statement = "CREATE TABLE apr_dbd_test (" - "col1 varchar(40) not null," - "col2 varchar(40)," - "col3 integer)" ; - rv = apr_dbd_query(driver, handle, &nrows, statement); - return rv; -} -static int drop_table(apr_pool_t* pool, apr_dbd_t* handle, - const apr_dbd_driver_t* driver) -{ - int rv = 0; - int nrows; - const char *statement = "DROP TABLE apr_dbd_test" ; - rv = apr_dbd_query(driver, handle, &nrows, statement); - return rv; -} -static int insert_rows(apr_pool_t* pool, apr_dbd_t* handle, - const apr_dbd_driver_t* driver) -{ - int i; - int rv = 0; - int nrows; - int nerrors = 0; - const char *statement = - "INSERT into apr_dbd_test (col1) values ('foo');" - "INSERT into apr_dbd_test values ('wibble', 'other', 5);" - "INSERT into apr_dbd_test values ('wibble', 'nothing', 5);" - "INSERT into apr_dbd_test values ('qwerty', 'foo', 0);" - "INSERT into apr_dbd_test values ('asdfgh', 'bar', 1);" - ; - rv = apr_dbd_query(driver, handle, &nrows, statement); - if (rv) { - const char* stmt[] = { - "INSERT into apr_dbd_test (col1) values ('foo');", - "INSERT into apr_dbd_test values ('wibble', 'other', 5);", - "INSERT into apr_dbd_test values ('wibble', 'nothing', 5);", - "INSERT into apr_dbd_test values ('qwerty', 'foo', 0);", - "INSERT into apr_dbd_test values ('asdfgh', 'bar', 1);", - NULL - }; - printf("Compound insert failed; trying statements one-by-one\n") ; - for (i=0; stmt[i] != NULL; ++i) { - statement = stmt[i]; - rv = apr_dbd_query(driver, handle, &nrows, statement); - if (rv) { - nerrors++; - } - } - if (nerrors) { - printf("%d single inserts failed too.\n", nerrors) ; - } - } - return rv; -} -static int invalid_op(apr_pool_t* pool, apr_dbd_t* handle, - const apr_dbd_driver_t* driver) -{ - int rv = 0; - int nrows; - const char *statement = "INSERT into apr_dbd_test1 (col2) values ('foo')" ; - rv = apr_dbd_query(driver, handle, &nrows, statement); - printf("invalid op returned %d (should be nonzero). Error msg follows\n", rv); - printf("'%s'\n", apr_dbd_error(driver, handle, rv)); - statement = "INSERT into apr_dbd_test (col1, col2) values ('bar', 'foo')" ; - rv = apr_dbd_query(driver, handle, &nrows, statement); - printf("valid op returned %d (should be zero; error shouldn't affect subsequent ops)\n", rv); - return rv; -} -static int select_sequential(apr_pool_t* pool, apr_dbd_t* handle, - const apr_dbd_driver_t* driver) -{ - int rv = 0; - int i = 0; - int n; - const char* entry; - const char* statement = "SELECT * FROM apr_dbd_test ORDER BY col1, col2"; - apr_dbd_results_t *res = NULL; - apr_dbd_row_t *row = NULL; - rv = apr_dbd_select(driver,pool,handle,&res,statement,0); - if (rv) { - printf("Select failed: %s", apr_dbd_error(driver, handle, rv)); - return rv; - } - for (rv = apr_dbd_get_row(driver, pool, res, &row, -1); - rv == 0; - rv = apr_dbd_get_row(driver, pool, res, &row, -1)) { - printf("ROW %d: ", i++) ; - for (n = 0; n < apr_dbd_num_cols(driver, res); ++n) { - entry = apr_dbd_get_entry(driver, row, n); - if (entry == NULL) { - printf("(null) ") ; - } - else { - printf("%s ", entry); - } - } - fputs("\n", stdout); - } - return (rv == -1) ? 0 : 1; -} -static int select_random(apr_pool_t* pool, apr_dbd_t* handle, - const apr_dbd_driver_t* driver) -{ - int rv = 0; - int n; - const char* entry; - const char* statement = "SELECT * FROM apr_dbd_test ORDER BY col1, col2"; - apr_dbd_results_t *res = NULL; - apr_dbd_row_t *row = NULL; - rv = apr_dbd_select(driver,pool,handle,&res,statement,1); - if (rv) { - printf("Select failed: %s", apr_dbd_error(driver, handle, rv)); - return rv; - } - rv = apr_dbd_get_row(driver, pool, res, &row, 5) ; - if (rv) { - printf("get_row failed: %s", apr_dbd_error(driver, handle, rv)); - return rv; - } - printf("ROW 5: "); - for (n = 0; n < apr_dbd_num_cols(driver, res); ++n) { - entry = apr_dbd_get_entry(driver, row, n); - if (entry == NULL) { - printf("(null) ") ; - } - else { - printf("%s ", entry); - } - } - fputs("\n", stdout); - rv = apr_dbd_get_row(driver, pool, res, &row, 1) ; - if (rv) { - printf("get_row failed: %s", apr_dbd_error(driver, handle, rv)); - return rv; - } - printf("ROW 1: "); - for (n = 0; n < apr_dbd_num_cols(driver, res); ++n) { - entry = apr_dbd_get_entry(driver, row, n); - if (entry == NULL) { - printf("(null) ") ; - } - else { - printf("%s ", entry); - } - } - fputs("\n", stdout); - rv = apr_dbd_get_row(driver, pool, res, &row, 11) ; - if (rv != -1) { - printf("Oops! get_row out of range but thinks it succeeded!\n%s\n", - apr_dbd_error(driver, handle, rv)); - return -1; - } - rv = 0; - - return rv; -} -static int test_transactions(apr_pool_t* pool, apr_dbd_t* handle, - const apr_dbd_driver_t* driver) -{ - int rv = 0; - int nrows; - apr_dbd_transaction_t *trans = NULL; - const char* statement; - - /* trans 1 - error out early */ - printf("Transaction 1\n"); - rv = apr_dbd_transaction_start(driver, pool, handle, &trans); - if (rv) { - printf("Start transaction failed!\n%s\n", - apr_dbd_error(driver, handle, rv)); - return rv; - } - statement = "UPDATE apr_dbd_test SET col2 = 'failed'"; - rv = apr_dbd_query(driver, handle, &nrows, statement); - if (rv) { - printf("Update failed: '%s'\n", apr_dbd_error(driver, handle, rv)); - apr_dbd_transaction_end(driver, pool, trans); - return rv; - } - printf("%d rows updated\n", nrows); - - statement = "INSERT INTO apr_dbd_test1 (col3) values (3)"; - rv = apr_dbd_query(driver, handle, &nrows, statement); - if (!rv) { - printf("Oops, invalid op succeeded but shouldn't!\n"); - } - statement = "INSERT INTO apr_dbd_test values ('zzz', 'aaa', 3)"; - rv = apr_dbd_query(driver, handle, &nrows, statement); - printf("Valid insert returned %d. Should be nonzero (fail) because transaction is bad\n", rv) ; - - rv = apr_dbd_transaction_end(driver, pool, trans); - if (rv) { - printf("End transaction failed!\n%s\n", - apr_dbd_error(driver, handle, rv)); - return rv; - } - printf("Transaction ended (should be rollback) - viewing table\n" - "A column of \"failed\" indicates transaction failed (no rollback)\n"); - select_sequential(pool, handle, driver); - - /* trans 2 - complete successfully */ - printf("Transaction 2\n"); - rv = apr_dbd_transaction_start(driver, pool, handle, &trans); - if (rv) { - printf("Start transaction failed!\n%s\n", - apr_dbd_error(driver, handle, rv)); - return rv; - } - statement = "UPDATE apr_dbd_test SET col2 = 'success'"; - rv = apr_dbd_query(driver, handle, &nrows, statement); - if (rv) { - printf("Update failed: '%s'\n", apr_dbd_error(driver, handle, rv)); - apr_dbd_transaction_end(driver, pool, trans); - return rv; - } - printf("%d rows updated\n", nrows); - statement = "INSERT INTO apr_dbd_test values ('aaa', 'zzz', 3)"; - rv = apr_dbd_query(driver, handle, &nrows, statement); - printf("Valid insert returned %d. Should be zero (OK)\n", rv) ; - rv = apr_dbd_transaction_end(driver, pool, trans); - if (rv) { - printf("End transaction failed!\n%s\n", - apr_dbd_error(driver, handle, rv)); - return rv; - } - printf("Transaction ended (should be commit) - viewing table\n"); - select_sequential(pool, handle, driver); - return rv; -} -static int test_pselect(apr_pool_t* pool, apr_dbd_t* handle, - const apr_dbd_driver_t* driver) -{ - int rv = 0; - int i, n; - const char *query = - "SELECT * FROM apr_dbd_test WHERE col3 <= %s or col1 = 'bar'" ; - const char *label = "lowvalues"; - apr_dbd_prepared_t *statement = NULL; - apr_dbd_results_t *res = NULL; - apr_dbd_row_t *row = NULL; - const char *entry = NULL; - - rv = apr_dbd_prepare(driver, pool, handle, query, label, &statement); - if (rv) { - printf("Prepare statement failed!\n%s\n", - apr_dbd_error(driver, handle, rv)); - return rv; - } - rv = apr_dbd_pvselect(driver, pool, handle, &res, statement, 0, "3", NULL); - if (rv) { - printf("Exec of prepared statement failed!\n%s\n", - apr_dbd_error(driver, handle, rv)); - return rv; - } - i = 0; - printf("Selecting rows where col3 <= 3 and bar row where it's unset.\nShould show four rows.\n"); - for (rv = apr_dbd_get_row(driver, pool, res, &row, -1); - rv == 0; - rv = apr_dbd_get_row(driver, pool, res, &row, -1)) { - printf("ROW %d: ", i++) ; - for (n = 0; n < apr_dbd_num_cols(driver, res); ++n) { - entry = apr_dbd_get_entry(driver, row, n); - if (entry == NULL) { - printf("(null) ") ; - } - else { - printf("%s ", entry); - } - } - fputs("\n", stdout); - } - return (rv == -1) ? 0 : 1; -} -static int test_pquery(apr_pool_t* pool, apr_dbd_t* handle, - const apr_dbd_driver_t* driver) -{ - int rv = 0; - const char *query = "INSERT INTO apr_dbd_test VALUES (%s, %s, %d)"; - apr_dbd_prepared_t *statement = NULL; - const char *label = "testpquery"; - int nrows; - apr_dbd_transaction_t *trans =0; - - rv = apr_dbd_prepare(driver, pool, handle, query, label, &statement); - /* rv = apr_dbd_prepare(driver, pool, handle, query, NULL, &statement); */ - if (rv) { - printf("Prepare statement failed!\n%s\n", - apr_dbd_error(driver, handle, rv)); - return rv; - } - apr_dbd_transaction_start(driver, pool, handle, &trans); - rv = apr_dbd_pvquery(driver, pool, handle, &nrows, statement, - "prepared", "insert", "2", NULL); - apr_dbd_transaction_end(driver, pool, trans); - if (rv) { - printf("Exec of prepared statement failed!\n%s\n", - apr_dbd_error(driver, handle, rv)); - return rv; - } - printf("Showing table (should now contain row \"prepared insert 2\")\n"); - select_sequential(pool, handle, driver); - return rv; -} -int main(int argc, char** argv) -{ - const char *name; - const char *params; - apr_pool_t *pool = NULL; - apr_dbd_t *sql = NULL; - const apr_dbd_driver_t *driver = NULL; - int rv; - - apr_initialize(); - apr_pool_create(&pool, NULL); - - if (argc >= 2 && argc <= 3) { - name = argv[1]; - params = ( argc == 3 ) ? argv[2] : ""; - apr_dbd_init(pool); - setbuf(stdout,NULL); - rv = apr_dbd_get_driver(pool, name, &driver); - switch (rv) { - case APR_SUCCESS: - printf("Loaded %s driver OK.\n", name); - break; - case APR_EDSOOPEN: - printf("Failed to load driver file apr_dbd_%s.so\n", name); - goto finish; - case APR_ESYMNOTFOUND: - printf("Failed to load driver apr_dbd_%s_driver.\n", name); - goto finish; - case APR_ENOTIMPL: - printf("No driver available for %s.\n", name); - goto finish; - default: /* it's a bug if none of the above happen */ - printf("Internal error loading %s.\n", name); - goto finish; - } - rv = apr_dbd_open(driver, pool, params, &sql); - switch (rv) { - case APR_SUCCESS: - printf("Opened %s[%s] OK\n", name, params); - break; - case APR_EGENERAL: - printf("Failed to open %s[%s]\n", name, params); - goto finish; - default: /* it's a bug if none of the above happen */ - printf("Internal error opening %s[%s]\n", name, params); - goto finish; - } - TEST("create table", create_table); - TEST("insert rows", insert_rows); - TEST("invalid op", invalid_op); - TEST("select random", select_random); - TEST("select sequential", select_sequential); - TEST("transactions", test_transactions); - TEST("prepared select", test_pselect); - TEST("prepared query", test_pquery); - TEST("drop table", drop_table); - apr_dbd_close(driver, sql); - } - else { - fprintf(stderr, "Usage: %s driver-name [params]\n", argv[0]); - } -finish: - apr_pool_destroy(pool); - apr_terminate(); - return 0; -} diff --git a/libs/apr-util/test/nw_misc.c b/libs/apr-util/test/nw_misc.c deleted file mode 100644 index cf68692bded..00000000000 --- a/libs/apr-util/test/nw_misc.c +++ /dev/null @@ -1,16 +0,0 @@ -#include -#include -#include "testutil.h" - -void _NonAppStop( void ) -{ - pressanykey(); -} - -/* -static void test_not_impl(CuTest *tc) -{ - CuNotImpl(tc, "Test not implemented on this platform yet"); -} -*/ - diff --git a/libs/apr-util/test/nwgnuaputest b/libs/apr-util/test/nwgnuaputest deleted file mode 100644 index 1611a582734..00000000000 --- a/libs/apr-util/test/nwgnuaputest +++ /dev/null @@ -1,272 +0,0 @@ -# -# Make sure all needed macro's are defined -# - -# -# Get the 'head' of the build environment if necessary. This includes default -# targets and paths to tools -# - -ifndef EnvironmentDefined -include $(APR_WORK)\build\NWGNUhead.inc -endif - -# -# These directories will be at the beginning of the include list, followed by -# INCDIRS -# -XINCDIRS += \ - $(APR)/include \ - $(APR)/include/arch/NetWare \ - $(APRUTIL)/include \ - $(LDAPSDK)/inc \ - $(EOLIST) - -# -# These flags will come after CFLAGS -# -XCFLAGS += \ - $(EOLIST) - -# -# These defines will come after DEFINES -# -XDEFINES += \ - $(EOLIST) - -# -# These flags will be added to the link.opt file -# -XLFLAGS += \ - $(EOLIST) - -# -# These values will be appended to the correct variables based on the value of -# RELEASE -# -ifeq "$(RELEASE)" "debug" -XINCDIRS += \ - $(EOLIST) - -XCFLAGS += \ - $(EOLIST) - -XDEFINES += \ - $(EOLIST) - -XLFLAGS += \ - $(EOLIST) -endif - -ifeq "$(RELEASE)" "noopt" -XINCDIRS += \ - $(EOLIST) - -XCFLAGS += \ - $(EOLIST) - -XDEFINES += \ - $(EOLIST) - -XLFLAGS += \ - $(EOLIST) -endif - -ifeq "$(RELEASE)" "release" -XINCDIRS += \ - $(EOLIST) - -XCFLAGS += \ - $(EOLIST) - -XDEFINES += \ - $(EOLIST) - -XLFLAGS += \ - $(EOLIST) -endif - -# -# These are used by the link target if an NLM is being generated -# This is used by the link 'name' directive to name the nlm. If left blank -# TARGET_nlm (see below) will be used. -# -NLM_NAME =aputest -# -# This is used by the link '-desc ' directive. -# If left blank, NLM_NAME will be used. -# -NLM_DESCRIPTION = NLM is to test the apu layer - -# -# This is used by the '-threadname' directive. If left blank, -# NLM_NAME Thread will be used. -# -NLM_THREAD_NAME = aputest - -# -# This is used by the '-screenname' directive. If left blank, -# 'Apache for NetWare' Thread will be used. -# -NLM_SCREEN_NAME = aputest - -# -# If this is specified, it will override VERSION value in -# $(APR_WORK)\build\NWGNUenvironment.inc -# -NLM_VERSION = 1,0,0 - -# -# If this is specified, it will override the default of 64K -# -NLM_STACK_SIZE = 524288 - -# -# If this is specified it will be used by the link '-entry' directive -# -NLM_ENTRY_SYM = _LibCPrelude - -# -# If this is specified it will be used by the link '-exit' directive -# -NLM_EXIT_SYM = _LibCPostlude - -# -# If this is specified it will be used by the link '-check' directive -# -NLM_CHECK_SYM = - -# -# If this is specified it will be used by the link '-flags' directive -# -NLM_FLAGS = AUTOUNLOAD, PSEUDOPREEMPTION - -# -# If this is specified it will be linked in with the XDCData option in the def -# file instead of the default of $(APR)/misc/netware/apache.xdc. XDCData can -# be disabled by setting APACHE_UNIPROC in the environment -# -XDCDATA = - -# -# Declare all target files (you must add your files here) -# - -# -# If there is an NLM target, put it here -# -TARGET_nlm = \ - $(OBJDIR)/aputest.nlm \ - $(EOLIST) - -# -# If there is an LIB target, put it here -# -TARGET_lib = \ - $(EOLIST) - -# -# These are the OBJ files needed to create the NLM target above. -# Paths must all use the '/' character -# - -FILES_nlm_objs = \ - $(OBJDIR)/abts.o \ - $(OBJDIR)/teststrmatch.o \ - $(OBJDIR)/testuri.o \ - $(OBJDIR)/testuuid.o \ - $(OBJDIR)/testbuckets.o \ - $(OBJDIR)/testpass.o \ - $(OBJDIR)/testmd4.o \ - $(OBJDIR)/testmd5.o \ - $(OBJDIR)/testldap.o \ - $(OBJDIR)/testutil.o \ - $(OBJDIR)/nw_misc.o \ - $(EOLIST) - -# Pending tests - -# -# These are the LIB files needed to create the NLM target above. -# These will be added as a library command in the link.opt file. -# -FILES_nlm_libs = \ - libcpre.o \ - $(EOLIST) - -# -# These are the modules that the above NLM target depends on to load. -# These will be added as a module command in the link.opt file. -# -FILES_nlm_modules = \ - Libc \ - APRLIB \ - lldapsdk \ - lldapssl \ - lldapx \ - $(EOLIST) - -# -# If the nlm has a msg file, put it's path here -# -FILE_nlm_msg = - -# -# If the nlm has a hlp file put it's path here -# -FILE_nlm_hlp = - -# -# If this is specified, it will override the default copyright. -# -FILE_nlm_copyright = - -# -# Any additional imports go here -# -FILES_nlm_Ximports = \ - @libc.imp \ - @$(APR)/aprlib.imp \ - @$(LDAPSDK)/imports/lldapsdk.imp \ - @$(LDAPSDK)/imports/lldapssl.imp \ - $(EOLIST) - -# -# Any symbols exported to here -# -FILES_nlm_exports = \ - $(EOLIST) - -# -# These are the OBJ files needed to create the LIB target above. -# Paths must all use the '/' character -# -FILES_lib_objs = \ - $(EOLIST) - -# -# implement targets and dependancies (leave this section alone) -# - -libs :: $(OBJDIR) $(TARGET_lib) - -nlms :: libs $(TARGET_nlm) - -# -# Updated this target to create necessary directories and copy files to the -# correct place. (See $(APR_WORK)\build\NWGNUhead.inc for examples) -# -install :: nlms FORCE - -# -# Any specialized rules here -# - - -# -# Include the 'tail' makefile that has targets that depend on variables defined -# in this makefile -# - -include $(APR_WORK)\build\NWGNUtail.inc - diff --git a/libs/apr-util/test/test_apu.h b/libs/apr-util/test/test_apu.h deleted file mode 100644 index 8d5f6ddee21..00000000000 --- a/libs/apr-util/test/test_apu.h +++ /dev/null @@ -1,100 +0,0 @@ -/* Copyright 2000-2005 The Apache Software Foundation or its licensors, as - * applicable. - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -/* Some simple functions to make the test apps easier to write and - * a bit more consistent... - * this is a >copy< of apr_test.h - */ - -/* Things to bear in mind when using these... - * - * If you include '\t' within the string passed in it won't be included - * in the spacing, so use spaces instead :) - * - */ - -#ifndef APU_TEST_INCLUDES -#define APU_TEST_INCLUDES - -#include "apr_strings.h" -#include "apr_time.h" - -#define TEST_EQ(str, func, value, good, bad) \ - printf("%-60s", str); \ - { \ - apr_status_t rv; \ - if ((rv = func) == value){ \ - char errmsg[200]; \ - printf("%s\n", bad); \ - fprintf(stderr, "Error was %d : %s\n", rv, \ - apr_strerror(rv, (char*)&errmsg, 200)); \ - exit(-1); \ - } \ - printf("%s\n", good); \ - } - -#define TEST_NEQ(str, func, value, good, bad) \ - printf("%-60s", str); \ - { \ - apr_status_t rv; \ - if ((rv = func) != value){ \ - char errmsg[200]; \ - printf("%s\n", bad); \ - fprintf(stderr, "Error was %d : %s\n", rv, \ - apr_strerror(rv, (char*)&errmsg, 200)); \ - exit(-1); \ - } \ - printf("%s\n", good); \ - } - -#define TEST_STATUS(str, func, testmacro, good, bad) \ - printf("%-60s", str); \ - { \ - apr_status_t rv = func; \ - if (!testmacro(rv)) { \ - char errmsg[200]; \ - printf("%s\n", bad); \ - fprintf(stderr, "Error was %d : %s\n", rv, \ - apr_strerror(rv, (char*)&errmsg, 200)); \ - exit(-1); \ - } \ - printf("%s\n", good); \ - } - -#define STD_TEST_NEQ(str, func) \ - TEST_NEQ(str, func, APR_SUCCESS, "OK", "Failed"); - -#define PRINT_ERROR(rv) \ - { \ - char errmsg[200]; \ - fprintf(stderr, "Error was %d : %s\n", rv, \ - apr_strerror(rv, (char*)&errmsg, 200)); \ - exit(-1); \ - } - -#define MSG_AND_EXIT(msg) \ - printf("%s\n", msg); \ - exit (-1); - -#define TIME_FUNCTION(time, function) \ - { \ - apr_time_t tt = apr_time_now(); \ - function; \ - time = apr_time_now() - tt; \ - } - - -#endif /* APU_TEST_INCLUDES */ diff --git a/libs/apr-util/test/testbuckets.c b/libs/apr-util/test/testbuckets.c deleted file mode 100644 index 52b4840039c..00000000000 --- a/libs/apr-util/test/testbuckets.c +++ /dev/null @@ -1,490 +0,0 @@ -/* Copyright 2000-2005 The Apache Software Foundation or its licensors, as - * applicable. - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -#include "abts.h" -#include "testutil.h" -#include "apr_buckets.h" -#include "apr_strings.h" - -static void test_create(abts_case *tc, void *data) -{ - apr_bucket_alloc_t *ba; - apr_bucket_brigade *bb; - - ba = apr_bucket_alloc_create(p); - bb = apr_brigade_create(p, ba); - - ABTS_ASSERT(tc, "new brigade not NULL", bb != NULL); - ABTS_ASSERT(tc, "new brigade is empty", APR_BRIGADE_EMPTY(bb)); - - apr_brigade_destroy(bb); - apr_bucket_alloc_destroy(ba); -} - -static void test_simple(abts_case *tc, void *data) -{ - apr_bucket_alloc_t *ba; - apr_bucket_brigade *bb; - apr_bucket *fb, *tb; - - ba = apr_bucket_alloc_create(p); - bb = apr_brigade_create(p, ba); - - fb = APR_BRIGADE_FIRST(bb); - ABTS_ASSERT(tc, "first bucket of empty brigade is sentinel", - fb == APR_BRIGADE_SENTINEL(bb)); - - fb = apr_bucket_flush_create(ba); - APR_BRIGADE_INSERT_HEAD(bb, fb); - - ABTS_ASSERT(tc, "first bucket of brigade is flush", - APR_BRIGADE_FIRST(bb) == fb); - - ABTS_ASSERT(tc, "bucket after flush is sentinel", - APR_BUCKET_NEXT(fb) == APR_BRIGADE_SENTINEL(bb)); - - tb = apr_bucket_transient_create("aaa", 3, ba); - APR_BUCKET_INSERT_BEFORE(fb, tb); - - ABTS_ASSERT(tc, "bucket before flush now transient", - APR_BUCKET_PREV(fb) == tb); - ABTS_ASSERT(tc, "bucket after transient is flush", - APR_BUCKET_NEXT(tb) == fb); - ABTS_ASSERT(tc, "bucket before transient is sentinel", - APR_BUCKET_PREV(tb) == APR_BRIGADE_SENTINEL(bb)); - - apr_brigade_cleanup(bb); - - ABTS_ASSERT(tc, "cleaned up brigade was empty", APR_BRIGADE_EMPTY(bb)); - - apr_brigade_destroy(bb); - apr_bucket_alloc_destroy(ba); -} - -static apr_bucket_brigade *make_simple_brigade(apr_bucket_alloc_t *ba, - const char *first, - const char *second) -{ - apr_bucket_brigade *bb = apr_brigade_create(p, ba); - apr_bucket *e; - - e = apr_bucket_transient_create(first, strlen(first), ba); - APR_BRIGADE_INSERT_TAIL(bb, e); - - e = apr_bucket_transient_create(second, strlen(second), ba); - APR_BRIGADE_INSERT_TAIL(bb, e); - - return bb; -} - -/* tests that 'bb' flattens to string 'expect'. */ -static void flatten_match(abts_case *tc, const char *ctx, - apr_bucket_brigade *bb, - const char *expect) -{ - apr_size_t elen = strlen(expect); - char *buf = malloc(elen); - apr_size_t len = elen; - char msg[200]; - - sprintf(msg, "%s: flatten brigade", ctx); - apr_assert_success(tc, msg, apr_brigade_flatten(bb, buf, &len)); - sprintf(msg, "%s: length match (%ld not %ld)", ctx, - (long)len, (long)elen); - ABTS_ASSERT(tc, msg, len == elen); - sprintf(msg, "%s: result match", msg); - ABTS_STR_NEQUAL(tc, expect, buf, len); - free(buf); -} - -static void test_flatten(abts_case *tc, void *data) -{ - apr_bucket_alloc_t *ba = apr_bucket_alloc_create(p); - apr_bucket_brigade *bb; - - bb = make_simple_brigade(ba, "hello, ", "world"); - - flatten_match(tc, "flatten brigade", bb, "hello, world"); - - apr_brigade_destroy(bb); - apr_bucket_alloc_destroy(ba); -} - -static int count_buckets(apr_bucket_brigade *bb) -{ - apr_bucket *e; - int count = 0; - - for (e = APR_BRIGADE_FIRST(bb); - e != APR_BRIGADE_SENTINEL(bb); - e = APR_BUCKET_NEXT(e)) { - count++; - } - - return count; -} - -static void test_split(abts_case *tc, void *data) -{ - apr_bucket_alloc_t *ba = apr_bucket_alloc_create(p); - apr_bucket_brigade *bb, *bb2; - apr_bucket *e; - - bb = make_simple_brigade(ba, "hello, ", "world"); - - /* split at the "world" bucket */ - e = APR_BRIGADE_LAST(bb); - bb2 = apr_brigade_split(bb, e); - - ABTS_ASSERT(tc, "split brigade contains one bucket", - count_buckets(bb2) == 1); - ABTS_ASSERT(tc, "original brigade contains one bucket", - count_buckets(bb) == 1); - - flatten_match(tc, "match original brigade", bb, "hello, "); - flatten_match(tc, "match split brigade", bb2, "world"); - - apr_brigade_destroy(bb2); - apr_brigade_destroy(bb); - apr_bucket_alloc_destroy(ba); -} - -#define COUNT 3000 -#define THESTR "hello" - -static void test_bwrite(abts_case *tc, void *data) -{ - apr_bucket_alloc_t *ba = apr_bucket_alloc_create(p); - apr_bucket_brigade *bb = apr_brigade_create(p, ba); - apr_off_t length; - int n; - - for (n = 0; n < COUNT; n++) { - apr_assert_success(tc, "brigade_write", - apr_brigade_write(bb, NULL, NULL, - THESTR, sizeof THESTR)); - } - - apr_assert_success(tc, "determine brigade length", - apr_brigade_length(bb, 1, &length)); - - ABTS_ASSERT(tc, "brigade has correct length", - length == (COUNT * sizeof THESTR)); - - apr_brigade_destroy(bb); - apr_bucket_alloc_destroy(ba); -} - -static void test_splitline(abts_case *tc, void *data) -{ - apr_bucket_alloc_t *ba = apr_bucket_alloc_create(p); - apr_bucket_brigade *bin, *bout; - - bin = make_simple_brigade(ba, "blah blah blah-", - "end of line.\nfoo foo foo"); - bout = apr_brigade_create(p, ba); - - apr_assert_success(tc, "split line", - apr_brigade_split_line(bout, bin, - APR_BLOCK_READ, 100)); - - flatten_match(tc, "split line", bout, "blah blah blah-end of line.\n"); - flatten_match(tc, "remainder", bin, "foo foo foo"); - - apr_brigade_destroy(bout); - apr_brigade_destroy(bin); - apr_bucket_alloc_destroy(ba); -} - -/* Test that bucket E has content EDATA of length ELEN. */ -static void test_bucket_content(abts_case *tc, - apr_bucket *e, - const char *edata, - apr_size_t elen) -{ - const char *adata; - apr_size_t alen; - - apr_assert_success(tc, "read from bucket", - apr_bucket_read(e, &adata, &alen, - APR_BLOCK_READ)); - - ABTS_ASSERT(tc, "read expected length", alen == elen); - ABTS_STR_NEQUAL(tc, edata, adata, elen); -} - -static void test_splits(abts_case *tc, void *ctx) -{ - apr_bucket_alloc_t *ba = apr_bucket_alloc_create(p); - apr_bucket_brigade *bb; - apr_bucket *e; - char *str = "alphabeta"; - int n; - - bb = apr_brigade_create(p, ba); - - APR_BRIGADE_INSERT_TAIL(bb, - apr_bucket_immortal_create(str, 9, ba)); - APR_BRIGADE_INSERT_TAIL(bb, - apr_bucket_transient_create(str, 9, ba)); - APR_BRIGADE_INSERT_TAIL(bb, - apr_bucket_heap_create(strdup(str), 9, free, ba)); - APR_BRIGADE_INSERT_TAIL(bb, - apr_bucket_pool_create(apr_pstrdup(p, str), 9, p, - ba)); - - ABTS_ASSERT(tc, "four buckets inserted", count_buckets(bb) == 4); - - /* now split each of the buckets after byte 5 */ - for (n = 0, e = APR_BRIGADE_FIRST(bb); n < 4; n++) { - ABTS_ASSERT(tc, "reached end of brigade", - e != APR_BRIGADE_SENTINEL(bb)); - ABTS_ASSERT(tc, "split bucket OK", - apr_bucket_split(e, 5) == APR_SUCCESS); - e = APR_BUCKET_NEXT(e); - ABTS_ASSERT(tc, "split OK", e != APR_BRIGADE_SENTINEL(bb)); - e = APR_BUCKET_NEXT(e); - } - - ABTS_ASSERT(tc, "four buckets split into eight", - count_buckets(bb) == 8); - - for (n = 0, e = APR_BRIGADE_FIRST(bb); n < 4; n++) { - const char *data; - apr_size_t len; - - apr_assert_success(tc, "read alpha from bucket", - apr_bucket_read(e, &data, &len, APR_BLOCK_READ)); - ABTS_ASSERT(tc, "read 5 bytes", len == 5); - ABTS_STR_NEQUAL(tc, "alpha", data, 5); - - e = APR_BUCKET_NEXT(e); - - apr_assert_success(tc, "read beta from bucket", - apr_bucket_read(e, &data, &len, APR_BLOCK_READ)); - ABTS_ASSERT(tc, "read 4 bytes", len == 4); - ABTS_STR_NEQUAL(tc, "beta", data, 5); - - e = APR_BUCKET_NEXT(e); - } - - /* now delete the "alpha" buckets */ - for (n = 0, e = APR_BRIGADE_FIRST(bb); n < 4; n++) { - apr_bucket *f; - - ABTS_ASSERT(tc, "reached end of brigade", - e != APR_BRIGADE_SENTINEL(bb)); - f = APR_BUCKET_NEXT(e); - apr_bucket_delete(e); - e = APR_BUCKET_NEXT(f); - } - - ABTS_ASSERT(tc, "eight buckets reduced to four", - count_buckets(bb) == 4); - - flatten_match(tc, "flatten beta brigade", bb, - "beta" "beta" "beta" "beta"); - - apr_brigade_destroy(bb); - apr_bucket_alloc_destroy(ba); -} - -#define TIF_FNAME "testfile.txt" - -static void test_insertfile(abts_case *tc, void *ctx) -{ - apr_bucket_alloc_t *ba = apr_bucket_alloc_create(p); - apr_bucket_brigade *bb; - const apr_off_t bignum = (APR_INT64_C(2) << 32) + 424242; - apr_off_t count; - apr_file_t *f; - apr_bucket *e; - - ABTS_ASSERT(tc, "open test file", - apr_file_open(&f, TIF_FNAME, - APR_WRITE|APR_TRUNCATE|APR_CREATE, - APR_OS_DEFAULT, p) == APR_SUCCESS); - - if (apr_file_trunc(f, bignum)) { - apr_file_close(f); - apr_file_remove(TIF_FNAME, p); - ABTS_NOT_IMPL(tc, "Skipped: could not create large file"); - return; - } - - bb = apr_brigade_create(p, ba); - - e = apr_brigade_insert_file(bb, f, 0, bignum, p); - - ABTS_ASSERT(tc, "inserted file was not at end of brigade", - e == APR_BRIGADE_LAST(bb)); - - /* check that the total size of inserted buckets is equal to the - * total size of the file. */ - count = 0; - - for (e = APR_BRIGADE_FIRST(bb); - e != APR_BRIGADE_SENTINEL(bb); - e = APR_BUCKET_NEXT(e)) { - ABTS_ASSERT(tc, "bucket size sane", e->length != (apr_size_t)-1); - count += e->length; - } - - ABTS_ASSERT(tc, "total size of buckets incorrect", count == bignum); - - apr_brigade_destroy(bb); - - /* Truncate the file to zero size before close() so that we don't - * actually write out the large file if we are on a non-sparse file - * system - like Mac OS X's HFS. Otherwise, pity the poor user who - * has to wait for the 8GB file to be written to disk. - */ - apr_file_trunc(f, 0); - - apr_file_close(f); - apr_bucket_alloc_destroy(ba); - apr_file_remove(TIF_FNAME, p); -} - -/* Make a test file named FNAME, and write CONTENTS to it. */ -static apr_file_t *make_test_file(abts_case *tc, const char *fname, - const char *contents) -{ - apr_file_t *f; - - ABTS_ASSERT(tc, "create test file", - apr_file_open(&f, fname, - APR_READ|APR_WRITE|APR_TRUNCATE|APR_CREATE, - APR_OS_DEFAULT, p) == APR_SUCCESS); - - ABTS_ASSERT(tc, "write test file contents", - apr_file_puts(contents, f) == APR_SUCCESS); - - return f; -} - -static void test_manyfile(abts_case *tc, void *data) -{ - apr_bucket_alloc_t *ba = apr_bucket_alloc_create(p); - apr_bucket_brigade *bb = apr_brigade_create(p, ba); - apr_file_t *f; - - f = make_test_file(tc, "manyfile.bin", - "world" "hello" "brave" " ,\n"); - - apr_brigade_insert_file(bb, f, 5, 5, p); - apr_brigade_insert_file(bb, f, 16, 1, p); - apr_brigade_insert_file(bb, f, 15, 1, p); - apr_brigade_insert_file(bb, f, 10, 5, p); - apr_brigade_insert_file(bb, f, 15, 1, p); - apr_brigade_insert_file(bb, f, 0, 5, p); - apr_brigade_insert_file(bb, f, 17, 1, p); - - /* can you tell what it is yet? */ - flatten_match(tc, "file seek test", bb, - "hello, brave world\n"); - - apr_file_close(f); - apr_brigade_destroy(bb); - apr_bucket_alloc_destroy(ba); -} - -/* Regression test for PR 34708, where a file bucket will keep - * duplicating itself on being read() when EOF is reached - * prematurely. */ -static void test_truncfile(abts_case *tc, void *data) -{ - apr_bucket_alloc_t *ba = apr_bucket_alloc_create(p); - apr_bucket_brigade *bb = apr_brigade_create(p, ba); - apr_file_t *f = make_test_file(tc, "testfile.txt", "hello"); - apr_bucket *e; - const char *buf; - apr_size_t len; - - apr_brigade_insert_file(bb, f, 0, 5, p); - - apr_file_trunc(f, 0); - - e = APR_BRIGADE_FIRST(bb); - - ABTS_ASSERT(tc, "single bucket in brigade", - APR_BUCKET_NEXT(e) == APR_BRIGADE_SENTINEL(bb)); - - apr_bucket_file_enable_mmap(e, 0); - - ABTS_ASSERT(tc, "read gave APR_EOF", - apr_bucket_read(e, &buf, &len, APR_BLOCK_READ) == APR_EOF); - - ABTS_ASSERT(tc, "read length 0", len == 0); - - ABTS_ASSERT(tc, "still a single bucket in brigade", - APR_BUCKET_NEXT(e) == APR_BRIGADE_SENTINEL(bb)); - - apr_file_close(f); - apr_brigade_destroy(bb); - apr_bucket_alloc_destroy(ba); -} - -static const char hello[] = "hello, world"; - -static void test_partition(abts_case *tc, void *data) -{ - apr_bucket_alloc_t *ba = apr_bucket_alloc_create(p); - apr_bucket_brigade *bb = apr_brigade_create(p, ba); - apr_bucket *e; - - e = apr_bucket_immortal_create(hello, strlen(hello), ba); - APR_BRIGADE_INSERT_HEAD(bb, e); - - apr_assert_success(tc, "partition brigade", - apr_brigade_partition(bb, 5, &e)); - - test_bucket_content(tc, APR_BRIGADE_FIRST(bb), - "hello", 5); - - test_bucket_content(tc, APR_BRIGADE_LAST(bb), - ", world", 7); - - ABTS_ASSERT(tc, "partition returns APR_INCOMPLETE", - apr_brigade_partition(bb, 8192, &e)); - - ABTS_ASSERT(tc, "APR_INCOMPLETE partition returned sentinel", - e == APR_BRIGADE_SENTINEL(bb)); - - apr_brigade_destroy(bb); - apr_bucket_alloc_destroy(ba); -} - -abts_suite *testbuckets(abts_suite *suite) -{ - suite = ADD_SUITE(suite); - - abts_run_test(suite, test_create, NULL); - abts_run_test(suite, test_simple, NULL); - abts_run_test(suite, test_flatten, NULL); - abts_run_test(suite, test_split, NULL); - abts_run_test(suite, test_bwrite, NULL); - abts_run_test(suite, test_splitline, NULL); - abts_run_test(suite, test_splits, NULL); - abts_run_test(suite, test_insertfile, NULL); - abts_run_test(suite, test_manyfile, NULL); - abts_run_test(suite, test_truncfile, NULL); - abts_run_test(suite, test_partition, NULL); - - return suite; -} - - diff --git a/libs/apr-util/test/testdate.c b/libs/apr-util/test/testdate.c deleted file mode 100644 index b13bc4d1f46..00000000000 --- a/libs/apr-util/test/testdate.c +++ /dev/null @@ -1,198 +0,0 @@ -/* This program tests the date_parse_http routine in ../main/util_date.c. - * - * It is only semiautomated in that I would run it, modify the code to - * use a different algorithm or seed, recompile and run again, etc. - * Obviously it should use an argument for that, but I never got around - * to changing the implementation. - * - * gcc -g -O2 -I../main -o test_date ../main/util_date.o test_date.c - * test_date | egrep '^No ' - * - * Roy Fielding, 1996 - */ - -#include -#include -#include -#include "apr_date.h" - -#ifndef srand48 -#define srand48 srandom -#endif - -#ifndef mrand48 -#define mrand48 random -#endif - -void gm_timestr_822(char *ts, apr_time_t sec); -void gm_timestr_850(char *ts, apr_time_t sec); -void gm_timestr_ccc(char *ts, apr_time_t sec); - -static const apr_time_t year2secs[] = { - 0LL, /* 1970 */ - 31536000LL, /* 1971 */ - 63072000LL, /* 1972 */ - 94694400LL, /* 1973 */ - 126230400LL, /* 1974 */ - 157766400LL, /* 1975 */ - 189302400LL, /* 1976 */ - 220924800LL, /* 1977 */ - 252460800LL, /* 1978 */ - 283996800LL, /* 1979 */ - 315532800LL, /* 1980 */ - 347155200LL, /* 1981 */ - 378691200LL, /* 1982 */ - 410227200LL, /* 1983 */ - 441763200LL, /* 1984 */ - 473385600LL, /* 1985 */ - 504921600LL, /* 1986 */ - 536457600LL, /* 1987 */ - 567993600LL, /* 1988 */ - 599616000LL, /* 1989 */ - 631152000LL, /* 1990 */ - 662688000LL, /* 1991 */ - 694224000LL, /* 1992 */ - 725846400LL, /* 1993 */ - 757382400LL, /* 1994 */ - 788918400LL, /* 1995 */ - 820454400LL, /* 1996 */ - 852076800LL, /* 1997 */ - 883612800LL, /* 1998 */ - 915148800LL, /* 1999 */ - 946684800LL, /* 2000 */ - 978307200LL, /* 2001 */ - 1009843200LL, /* 2002 */ - 1041379200LL, /* 2003 */ - 1072915200LL, /* 2004 */ - 1104537600LL, /* 2005 */ - 1136073600LL, /* 2006 */ - 1167609600LL, /* 2007 */ - 1199145600LL, /* 2008 */ - 1230768000LL, /* 2009 */ - 1262304000LL, /* 2010 */ - 1293840000LL, /* 2011 */ - 1325376000LL, /* 2012 */ - 1356998400LL, /* 2013 */ - 1388534400LL, /* 2014 */ - 1420070400LL, /* 2015 */ - 1451606400LL, /* 2016 */ - 1483228800LL, /* 2017 */ - 1514764800LL, /* 2018 */ - 1546300800LL, /* 2019 */ - 1577836800LL, /* 2020 */ - 1609459200LL, /* 2021 */ - 1640995200LL, /* 2022 */ - 1672531200LL, /* 2023 */ - 1704067200LL, /* 2024 */ - 1735689600LL, /* 2025 */ - 1767225600LL, /* 2026 */ - 1798761600LL, /* 2027 */ - 1830297600LL, /* 2028 */ - 1861920000LL, /* 2029 */ - 1893456000LL, /* 2030 */ - 1924992000LL, /* 2031 */ - 1956528000LL, /* 2032 */ - 1988150400LL, /* 2033 */ - 2019686400LL, /* 2034 */ - 2051222400LL, /* 2035 */ - 2082758400LL, /* 2036 */ - 2114380800LL, /* 2037 */ - 2145916800LL /* 2038 */ -}; - -const char month_snames[12][4] = { - "Jan","Feb","Mar","Apr","May","Jun","Jul","Aug","Sep","Oct","Nov","Dec" -}; - -void gm_timestr_822(char *ts, apr_time_t sec) -{ - static const char *const days[7]= - {"Sun","Mon", "Tue", "Wed", "Thu", "Fri", "Sat"}; - struct tm *tms; - time_t ls = (time_t)sec; - - tms = gmtime(&ls); - - sprintf(ts, "%s, %.2d %s %d %.2d:%.2d:%.2d GMT", days[tms->tm_wday], - tms->tm_mday, month_snames[tms->tm_mon], tms->tm_year + 1900, - tms->tm_hour, tms->tm_min, tms->tm_sec); -} - -void gm_timestr_850(char *ts, apr_time_t sec) -{ - static const char *const days[7]= - {"Sunday","Monday", "Tuesday", "Wednesday", "Thursday", "Friday", - "Saturday"}; - struct tm *tms; - int year; - time_t ls = (time_t)sec; - - tms = gmtime(&ls); - - year = tms->tm_year; - if (year >= 100) year -= 100; - - sprintf(ts, "%s, %.2d-%s-%.2d %.2d:%.2d:%.2d GMT", days[tms->tm_wday], - tms->tm_mday, month_snames[tms->tm_mon], year, - tms->tm_hour, tms->tm_min, tms->tm_sec); -} - -void gm_timestr_ccc(char *ts, apr_time_t sec) -{ - static const char *const days[7]= - {"Sun","Mon", "Tue", "Wed", "Thu", "Fri", "Sat"}; - struct tm *tms; - time_t ls = (time_t)sec; - - tms = gmtime(&ls); - - sprintf(ts, "%s %s %2d %.2d:%.2d:%.2d %d", days[tms->tm_wday], - month_snames[tms->tm_mon], tms->tm_mday, - tms->tm_hour, tms->tm_min, tms->tm_sec, tms->tm_year + 1900); -} - -int main (void) -{ - int year, i; - apr_time_t guess; - apr_time_t offset = 0; - /* apr_time_t offset = 0; */ - /* apr_time_t offset = ((31 + 28) * 24 * 3600) - 1; */ - apr_time_t secstodate, newsecs; - char datestr[50]; - - for (year = 1970; year < 2038; ++year) { - secstodate = year2secs[year - 1970] + offset; - gm_timestr_822(datestr, secstodate); - secstodate *= APR_USEC_PER_SEC; - newsecs = apr_date_parse_http(datestr); - if (secstodate == newsecs) - printf("Yes %4d %19" APR_TIME_T_FMT " %s\n", year, secstodate, datestr); - else if (newsecs == APR_DATE_BAD) - printf("No %4d %19" APR_TIME_T_FMT " %19" APR_TIME_T_FMT " %s\n", - year, secstodate, newsecs, datestr); - else - printf("No* %4d %19" APR_TIME_T_FMT " %19" APR_TIME_T_FMT " %s\n", - year, secstodate, newsecs, datestr); - } - - srand48(978245L); - - for (i = 0; i < 10000; ++i) { - guess = (time_t)mrand48(); - if (guess < 0) guess *= -1; - secstodate = guess + offset; - gm_timestr_822(datestr, secstodate); - secstodate *= APR_USEC_PER_SEC; - newsecs = apr_date_parse_http(datestr); - if (secstodate == newsecs) - printf("Yes %" APR_TIME_T_FMT " %s\n", secstodate, datestr); - else if (newsecs == APR_DATE_BAD) - printf("No %" APR_TIME_T_FMT " %" APR_TIME_T_FMT " %s\n", - secstodate, newsecs, datestr); - else - printf("No* %" APR_TIME_T_FMT " %" APR_TIME_T_FMT " %s\n", - secstodate, newsecs, datestr); - } - exit(0); -} diff --git a/libs/apr-util/test/testdbd.c b/libs/apr-util/test/testdbd.c deleted file mode 100644 index 9f2dcbc8a53..00000000000 --- a/libs/apr-util/test/testdbd.c +++ /dev/null @@ -1,233 +0,0 @@ -/* Copyright 2000-2005 The Apache Software Foundation or its licensors, as - * applicable. - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -#include "testutil.h" -#include "apr.h" -#include "apu.h" -#include "apr_pools.h" -#include "apr_dbd.h" -#include "apr_strings.h" - -static void test_dbd_init(abts_case *tc, void *data) -{ - apr_pool_t *pool = p; - apr_status_t rv; - - rv = apr_dbd_init(pool); - ABTS_ASSERT(tc, "failed to init apr_dbd", rv == APR_SUCCESS); -} - -#if APU_HAVE_SQLITE2 || APU_HAVE_SQLITE3 -static void test_statement(abts_case *tc, apr_dbd_t* handle, - const apr_dbd_driver_t* driver, const char* sql) -{ - int nrows; - apr_status_t rv; - - rv = apr_dbd_query(driver, handle, &nrows, sql); - - ABTS_ASSERT(tc, sql, rv == APR_SUCCESS); -} - -static void create_table(abts_case *tc, apr_dbd_t* handle, - const apr_dbd_driver_t* driver) -{ - const char *sql = "CREATE TABLE apr_dbd_test (" - "col1 varchar(40) not null," - "col2 varchar(40)," - "col3 integer)"; - - test_statement(tc, handle, driver, sql); -} - -static void drop_table(abts_case *tc, apr_dbd_t* handle, - const apr_dbd_driver_t* driver) -{ - const char *sql = "DROP TABLE apr_dbd_test"; - test_statement(tc, handle, driver, sql); -} - -static void delete_rows(abts_case *tc, apr_dbd_t* handle, - const apr_dbd_driver_t* driver) -{ - const char *sql = "DELETE FROM apr_dbd_test"; - test_statement(tc, handle, driver, sql); -} - - -static void insert_data(abts_case *tc, apr_dbd_t* handle, - const apr_dbd_driver_t* driver, int count) -{ - apr_pool_t* pool = p; - const char* sql = "INSERT INTO apr_dbd_test VALUES('%d', '%d', %d)"; - char* sqf = NULL; - int i; - int nrows; - apr_status_t rv; - - for (i=0; i 0) { - row = NULL; - rv = apr_dbd_get_row(driver, pool, res, &row, -1); - ABTS_ASSERT(tc, sql, rv == APR_SUCCESS); - ABTS_PTR_NOTNULL(tc, row); - apr_pool_clear(tpool); - i--; - } - ABTS_ASSERT(tc, "Missing Rows!", i == 0); - - res = NULL; - i = count; - - rv = apr_dbd_select(driver, pool, handle, &res, sql, 1); - ABTS_ASSERT(tc, sql, rv == APR_SUCCESS); - ABTS_PTR_NOTNULL(tc, res); - - rv = apr_dbd_num_tuples(driver, res); - ABTS_ASSERT(tc, "invalid row count", rv == count); - - while (i > 0) { - row = NULL; - rv = apr_dbd_get_row(driver, pool, res, &row, i); - ABTS_ASSERT(tc, sql, rv == APR_SUCCESS); - ABTS_PTR_NOTNULL(tc, row); - apr_pool_clear(tpool); - i--; - } - ABTS_ASSERT(tc, "Missing Rows!", i == 0); - rv = apr_dbd_get_row(driver, pool, res, &row, count+100); - ABTS_ASSERT(tc, "If we overseek, get_row should return -1", rv == -1); -} - -static void test_escape(abts_case *tc, apr_dbd_t *handle, - const apr_dbd_driver_t *driver) -{ - const char *escaped = apr_dbd_escape(driver, p, "foo'bar", handle); - - ABTS_STR_EQUAL(tc, "foo''bar", escaped); -} - -static void test_dbd_generic(abts_case *tc, apr_dbd_t* handle, - const apr_dbd_driver_t* driver) -{ - void* native; - apr_pool_t *pool = p; - apr_status_t rv; - - native = apr_dbd_native_handle(driver, handle); - ABTS_PTR_NOTNULL(tc, native); - - rv = apr_dbd_check_conn(driver, pool, handle); - - create_table(tc, handle, driver); - select_rows(tc, handle, driver, 0); - insert_data(tc, handle, driver, 5); - select_rows(tc, handle, driver, 5); - delete_rows(tc, handle, driver); - select_rows(tc, handle, driver, 0); - drop_table(tc, handle, driver); - - test_escape(tc, handle, driver); - - rv = apr_dbd_close(driver, handle); - ABTS_ASSERT(tc, "failed to close database", rv == APR_SUCCESS); -} -#endif - -#if APU_HAVE_SQLITE2 -static void test_dbd_sqlite2(abts_case *tc, void *data) -{ - apr_pool_t *pool = p; - apr_status_t rv; - const apr_dbd_driver_t* driver = NULL; - apr_dbd_t* handle = NULL; - - rv = apr_dbd_get_driver(pool, "sqlite2", &driver); - ABTS_ASSERT(tc, "failed to fetch driver", rv == APR_SUCCESS); - ABTS_PTR_NOTNULL(tc, driver); - - ABTS_STR_EQUAL(tc, apr_dbd_name(driver), "sqlite2"); - - rv = apr_dbd_open(driver, pool, "data/sqlite2.db:600", &handle); - ABTS_ASSERT(tc, "failed to open database", rv == APR_SUCCESS); - ABTS_PTR_NOTNULL(tc, handle); - - test_dbd_generic(tc, handle, driver); -} -#endif - -#if APU_HAVE_SQLITE3 -static void test_dbd_sqlite3(abts_case *tc, void *data) -{ - apr_pool_t *pool = p; - apr_status_t rv; - const apr_dbd_driver_t* driver = NULL; - apr_dbd_t* handle = NULL; - - rv = apr_dbd_get_driver(pool, "sqlite3", &driver); - ABTS_ASSERT(tc, "failed to fetch driver", rv == APR_SUCCESS); - ABTS_PTR_NOTNULL(tc, driver); - - ABTS_STR_EQUAL(tc, apr_dbd_name(driver), "sqlite3"); - - rv = apr_dbd_open(driver, pool, "data/sqlite3.db", &handle); - ABTS_ASSERT(tc, "failed to open database", rv == APR_SUCCESS); - ABTS_PTR_NOTNULL(tc, handle); - - test_dbd_generic(tc, handle, driver); -} -#endif - -abts_suite *testdbd(abts_suite *suite) -{ - suite = ADD_SUITE(suite); - - - abts_run_test(suite, test_dbd_init, NULL); - -#if APU_HAVE_SQLITE2 - abts_run_test(suite, test_dbd_sqlite2, NULL); -#endif - -#if APU_HAVE_SQLITE3 - abts_run_test(suite, test_dbd_sqlite3, NULL); -#endif - return suite; -} diff --git a/libs/apr-util/test/testdbm.c b/libs/apr-util/test/testdbm.c deleted file mode 100644 index da787125f0a..00000000000 --- a/libs/apr-util/test/testdbm.c +++ /dev/null @@ -1,425 +0,0 @@ -/* Copyright 2000-2005 The Apache Software Foundation or its licensors, as - * applicable. - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ -/* This file came from the SDBM package (written by oz@nexus.yorku.ca). - * That package was under public domain. This file has been ported to - * APR, updated to ANSI C and other, newer idioms, and added to the Apache - * codebase under the above copyright and license. - */ - -/* - * testdbm: Simple APR dbm tester. - * Automatic test case: ./testdbm auto foo - * - Attempts to store and fetch values from the DBM. - * - * Run the program for more help. - */ - -#include "apr.h" -#include "apr_general.h" -#include "apr_pools.h" -#include "apr_errno.h" -#include "apr_getopt.h" -#include "apr_time.h" -#define APR_WANT_STRFUNC -#include "apr_want.h" - -#if APR_HAVE_STDIO_H -#include -#endif -#if APR_HAVE_UNISTD_H -#include -#endif -#include /* for atexit(), malloc() */ -#include - -#include "apr_dbm.h" - -static const char *progname; -static int rflag; - -#define DERROR 0 -#define DLOOK 1 - -#define DDELETE 3 -#define DCAT 4 -#define DBUILD 5 -#define DPRESS 6 -#define DCREAT 7 -#define DNAME 8 -#define DTRUNC 9 -#define DAUTO 10 - -#define LINEMAX 8192 - -typedef struct { - const char *sname; - int scode; - int flags; -} cmd; - -static const cmd cmds[] = { - - { "fetch", DLOOK, APR_DBM_READONLY }, - { "get", DLOOK, APR_DBM_READONLY }, - { "look", DLOOK, APR_DBM_READONLY }, - { "add", DBUILD, APR_DBM_READWRITE }, - { "insert", DBUILD, APR_DBM_READWRITE }, - { "store", DBUILD, APR_DBM_READWRITE }, - { "delete", DDELETE, APR_DBM_READWRITE }, - { "remove", DDELETE, APR_DBM_READWRITE }, - { "dump", DCAT, APR_DBM_READONLY }, - { "list", DCAT, APR_DBM_READONLY }, - { "cat", DCAT, APR_DBM_READONLY }, - { "build", DBUILD, APR_DBM_RWCREATE }, /** this one creates the DB */ - { "creat", DCREAT, APR_DBM_RWCREATE }, - { "trunc", DTRUNC, APR_DBM_RWTRUNC }, - { "new", DCREAT, APR_DBM_RWCREATE }, - { "names", DNAME, APR_DBM_READONLY }, -#if 0 - {"squash", DPRESS, APR_DBM_READWRITE, }, - {"compact", DPRESS, APR_DBM_READWRITE, }, - {"compress", DPRESS, APR_DBM_READWRITE, }, -#endif - { "auto", DAUTO, APR_DBM_RWCREATE }, -}; - -#define CMD_SIZE (sizeof(cmds)/sizeof(cmd)) - -static void doit(const cmd *act, const char*type, const char *file, apr_pool_t *pool); -static const cmd *parse_command(const char *str); -static void prdatum(FILE *stream, apr_datum_t d); -static void oops(apr_dbm_t *dbm, apr_status_t rv, const char *s1, - const char *s2); -static void show_usage(void); - -int main(int argc, const char * const * argv) -{ - apr_pool_t *pool; - const cmd *act; - apr_getopt_t *os; - char optch; - const char *optarg; - const char*dbtype; - - (void) apr_initialize(); - apr_pool_create(&pool, NULL); - atexit(apr_terminate); - - (void) apr_getopt_init(&os, pool, argc, argv); - - progname = argv[0]; - dbtype = "default"; - - while (apr_getopt(os, "Rt:", &optch, &optarg) == APR_SUCCESS) { - switch (optch) { - case 'R': /* raw processing */ - rflag++; - break; - case 't': - dbtype = optarg; - break; - default: - show_usage(); - fputs("unknown option.",stderr); - exit(-1); - break; - } - } - - if (argc <= os->ind) { - show_usage(); - fputs("Note: If you have no clue what this program is, start with:\n", stderr); - fputs(" ./testdbm auto foo\n", stderr); - fputs(" where foo is the DBM prefix.\n", stderr); - exit(-2); - } - - if ((act = parse_command(argv[os->ind])) == NULL) { - show_usage(); - fprintf(stderr, "unrecognized command: %s\n", argv[os->ind]); - exit(-3); - } - - if (++os->ind >= argc) { - show_usage(); - fputs("please supply a DB file to use (may be created)\n", stderr); - exit(-4); - } - - doit(act, dbtype, argv[os->ind], pool); - - apr_pool_destroy(pool); - - return 0; -} - -static void doit(const cmd *act, const char*type, const char *file, - apr_pool_t *pool) -{ - apr_status_t rv; - apr_datum_t key; - apr_datum_t val; - apr_dbm_t *db; - char *op; - int n; - char *line; - const char *use1; - const char *use2; -#ifdef TIME - long start; - extern long time(); -#endif - - rv = apr_dbm_open_ex(&db, type, file, act->flags, APR_OS_DEFAULT, pool); - if (rv != APR_SUCCESS) - oops(db, rv, "cannot open: %s", file); - - line = (char *) apr_palloc(pool,LINEMAX); - - switch (act->scode) { - - case DLOOK: - while (fgets(line, LINEMAX, stdin) != NULL) { - n = strlen(line) - 1; - line[n] = 0; - if (n == 0) - break; - - key.dptr = line; - key.dsize = n; - rv = apr_dbm_fetch(db, key, &val); - if (rv == APR_SUCCESS) { - prdatum(stdout, val); - putchar('\n'); - continue; - } - prdatum(stderr, key); - fprintf(stderr, ": not found.\n"); - } - break; - - case DDELETE: - while (fgets(line, LINEMAX, stdin) != NULL) { - n = strlen(line) - 1; - line[n] = 0; - if (n == 0) - break; - - key.dptr = line; - key.dsize = n; - if (apr_dbm_delete(db, key) != APR_SUCCESS) { - prdatum(stderr, key); - fprintf(stderr, ": not found.\n"); - } - } - break; - case DCAT: - rv = apr_dbm_firstkey(db, &key); - if (rv != APR_SUCCESS) - oops(db, rv, "could not fetch first key: %s", file); - - while (key.dptr != NULL) { - prdatum(stdout, key); - putchar('\t'); - rv = apr_dbm_fetch(db, key, &val); - if (rv != APR_SUCCESS) - oops(db, rv, "apr_dbm_fetch", "failure"); - prdatum(stdout, val); - putchar('\n'); - rv = apr_dbm_nextkey(db, &key); - if (rv != APR_SUCCESS) - oops(db, rv, "NextKey", "failure"); - } - break; - case DBUILD: -#ifdef TIME - start = time(0); -#endif - while (fgets(line, LINEMAX, stdin) != NULL) { - n = strlen(line) - 1; - line[n] = 0; - if (n == 0) - break; - - key.dptr = line; - if ((op = strchr(line, '\t')) != 0) { - key.dsize = op - line; - *op++ = 0; - val.dptr = op; - val.dsize = line + n - op; - } - else - oops(NULL, APR_EGENERAL, "bad input: %s", line); - - rv = apr_dbm_store(db, key, val); - if (rv != APR_SUCCESS) { - prdatum(stderr, key); - fprintf(stderr, ": "); - oops(db, rv, "store: %s", "failed"); - } - } -#ifdef TIME - printf("done: %d seconds.\n", time(0) - start); -#endif - break; - case DPRESS: - break; - case DCREAT: - break; - case DTRUNC: - break; - case DNAME: - apr_dbm_get_usednames(pool, file, &use1, &use2); - fprintf(stderr, "%s %s\n", use1, use2); - break; - case DAUTO: - { - int i; - char *valdata = "0123456789"; - fprintf(stderr, "Generating data: "); - for (i = 0; i < 10; i++) { - int j; - char c, keydata[10]; - for (j = 0, c = 'A' + (i % 16); j < 10; j++, c++) { - keydata[j] = c; - } - key.dptr = keydata; - key.dsize = 10; - val.dptr = valdata; - val.dsize = 10; - rv = apr_dbm_store(db, key, val); - if (rv != APR_SUCCESS) { - prdatum(stderr, key); - fprintf(stderr, ": "); - oops(db, rv, "store: %s", "failed"); - } - } - fputs("OK\n", stderr); - fputs("Testing existence/retrieval: ", stderr); - for (i = 0; i < 10; i++) { - int j; - char c, keydata[10]; - for (j = 0, c = 'A' + (i % 16); j < 10; j++, c++) { - keydata[j] = c; - } - key.dptr = keydata; - key.dsize = 10; - if (!apr_dbm_exists(db, key)) { - prdatum(stderr, key); - oops(db, 0, "exists: %s", "failed"); - } - rv = apr_dbm_fetch(db, key, &val); - if (rv != APR_SUCCESS || val.dsize != 10 || - (strncmp(val.dptr, valdata, 10) != 0) ) { - prdatum(stderr, key); - fprintf(stderr, ": "); - oops(db, rv, "fetch: %s", "failed"); - } - } - fputs("OK\n", stderr); - } - break; - } - - apr_dbm_close(db); -} - -static const cmd *parse_command(const char *str) -{ - int i; - - for (i = 0; i < CMD_SIZE; i++) - if (strcasecmp(cmds[i].sname, str) == 0) - return &cmds[i]; - - return NULL; -} - -static void prdatum(FILE *stream, apr_datum_t d) -{ - int c; - const char *p = d.dptr; - int n = d.dsize; - - while (n--) { - c = *p++ & 0377; - if (c & 0200) { - fprintf(stream, "M-"); - c &= 0177; - } - if (c == 0177 || c < ' ') - fprintf(stream, "^%c", (c == 0177) ? '?' : c + '@'); - else - putc(c, stream); - } -} - -static void oops(apr_dbm_t * dbm, apr_status_t rv, const char *s1, - const char *s2) -{ - char errbuf[200]; - - if (progname) { - fprintf(stderr, "%s: ", progname); - } - fprintf(stderr, s1, s2); - fprintf(stderr, "\n"); - - if (rv != APR_SUCCESS) { - apr_strerror(rv, errbuf, sizeof(errbuf)); - fprintf(stderr, "APR Error %d - %s\n", rv, errbuf); - - if (dbm) { - apr_dbm_geterror(dbm, &rv, errbuf, sizeof(errbuf)); - fprintf(stderr, "APR_DB Error %d - %s\n", rv, errbuf); - } - } - exit(1); -} - -static void show_usage(void) -{ - int i; - - if (!progname) { - progname = "testdbm"; - } - - fprintf(stderr, "%s [-t DBM-type] [-R] [commands] dbm-file-path\n", - progname); - - fputs("Available DBM-types:", stderr); -#if APU_HAVE_GDBM - fputs(" GDBM", stderr); -#endif -#if APU_HAVE_NDBM - fputs(" NDBM", stderr); -#endif -#if APU_HAVE_SDBM - fputs(" SDBM", stderr); -#endif -#if APU_HAVE_DB - fputs(" DB", stderr); -#endif - fputs(" default\n", stderr); - - fputs("Available commands:\n", stderr); - for (i = 0; i < CMD_SIZE; i++) { - fprintf(stderr, "%-8s%c", cmds[i].sname, - ((i + 1) % 6 == 0) ? '\n' : ' '); - } - fputs("\n", stderr); -} diff --git a/libs/apr-util/test/testldap.c b/libs/apr-util/test/testldap.c deleted file mode 100644 index b0a63692426..00000000000 --- a/libs/apr-util/test/testldap.c +++ /dev/null @@ -1,250 +0,0 @@ -/* Copyright 2002-2005 The Apache Software Foundation or its licensors, as - * applicable. - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - - /* Setup: - * - Create or edit the file data/host.data and add an - * ldap server DN. Multiple DNs may be listed on - * a single line. - * - Copy the server certificates to the data/ directory. - * All DER type certificates must have the .der extention. - * All BASE64 or PEM certificates must have the .b64 - * extension. All certificate files copied to the /data - * directory will be added to the ldap certificate store. - */ - - /* This test covers the following three types of connections: - * - Unsecure ldap:// - * - Secure ldaps:// - * - Secure ldap://+Start_TLS - * - * - (TBD) Mutual authentication - * - * There are other variations that should be tested: - * - All of the above with multiple redundant LDAP servers - * This can be done by listing more than one server DN - * in the host.data file. The DNs should all be listed - * on one line separated by a space. - * - All of the above with multiple certificates - * If more than one certificate is found in the data/ - * directory, each certificate found will be added - * to the certificate store. - * - All of the above on alternate ports - * An alternate port can be specified as part of the - * host in the host.data file. The ":port" should - * follow each DN listed. Default is 389 and 636. - * - Secure connections with mutual authentication - */ - -#include "testutil.h" - -#include "apr.h" -#include "apr_general.h" -#include "apr_ldap.h" -#include "apr_file_io.h" -#include "apr_file_info.h" -#include "apr_strings.h" -#if APR_HAVE_STDLIB_H -#include -#endif -#define APR_WANT_STDIO -#define APR_WANT_STRFUNC -#include "apr_want.h" - -#define DIRNAME "data" -#define FILENAME DIRNAME "/host.data" -#define CERTFILEDER DIRNAME "/*.der" -#define CERTFILEB64 DIRNAME "/*.b64" - -#if APR_HAS_LDAP - -static char ldap_host[256]; - -static int get_ldap_host(void) -{ - apr_status_t rv; - apr_file_t *thefile = NULL; - char *ptr; - - ldap_host[0] = '\0'; - rv = apr_file_open(&thefile, FILENAME, - APR_READ, - APR_UREAD | APR_UWRITE | APR_GREAD, p); - if (rv != APR_SUCCESS) { - return 0; - } - - rv = apr_file_gets(ldap_host, sizeof(ldap_host), thefile); - if (rv != APR_SUCCESS) { - return 0; - } - - ptr = strstr (ldap_host, "\r\n"); - if (ptr) { - *ptr = '\0'; - } - apr_file_close(thefile); - - return 1; - -} - -static int add_ldap_certs(abts_case *tc) -{ - apr_status_t status; - apr_dir_t *thedir; - apr_finfo_t dirent; - apr_ldap_err_t *result = NULL; - - if ((status = apr_dir_open(&thedir, DIRNAME, p)) == APR_SUCCESS) { - apr_ldap_opt_tls_cert_t *cert = (apr_ldap_opt_tls_cert_t *)apr_pcalloc(p, sizeof(apr_ldap_opt_tls_cert_t)); - - do { - status = apr_dir_read(&dirent, APR_FINFO_MIN | APR_FINFO_NAME, thedir); - if (APR_STATUS_IS_INCOMPLETE(status)) { - continue; /* ignore un-stat()able files */ - } - else if (status != APR_SUCCESS) { - break; - } - - if (strstr(dirent.name, ".der")) { - cert->type = APR_LDAP_CA_TYPE_DER; - cert->path = apr_pstrcat (p, DIRNAME, "/", dirent.name, NULL); - apr_ldap_set_option(p, NULL, APR_LDAP_OPT_TLS_CERT, (void *)cert, &result); - ABTS_TRUE(tc, result->rc == LDAP_SUCCESS); - } - if (strstr(dirent.name, ".b64")) { - cert->type = APR_LDAP_CA_TYPE_BASE64; - cert->path = apr_pstrcat (p, DIRNAME, "/", dirent.name, NULL); - apr_ldap_set_option(p, NULL, APR_LDAP_OPT_TLS_CERT, (void *)cert, &result); - ABTS_TRUE(tc, result->rc == LDAP_SUCCESS); - } - - } while (1); - - apr_dir_close(thedir); - } - return 0; -} - -static void test_ldap_connection(abts_case *tc, LDAP *ldap) -{ - int version = LDAP_VERSION3; - int failures, result; - - /* always default to LDAP V3 */ - ldap_set_option(ldap, LDAP_OPT_PROTOCOL_VERSION, &version); - - for (failures=0; failures<10; failures++) - { - result = ldap_simple_bind_s(ldap, - (char *)NULL, - (char *)NULL); - if (LDAP_SERVER_DOWN != result) - break; - } - - ABTS_TRUE(tc, result == LDAP_SUCCESS); - if (result != LDAP_SUCCESS) { - abts_log_message("%s\n", ldap_err2string(result)); - } - - ldap_unbind_s(ldap); - - return; -} - -static void test_ldap(abts_case *tc, void *data) -{ - apr_pool_t *pool = p; - LDAP *ldap; - apr_ldap_err_t *result = NULL; - - - ABTS_ASSERT(tc, "failed to get host", ldap_host[0] != '\0'); - - apr_ldap_init(pool, &ldap, - ldap_host, LDAP_PORT, - APR_LDAP_NONE, &(result)); - - ABTS_TRUE(tc, ldap != NULL); - ABTS_PTR_NOTNULL(tc, result); - - if (result->rc == LDAP_SUCCESS) { - test_ldap_connection(tc, ldap); - } -} - -static void test_ldaps(abts_case *tc, void *data) -{ - apr_pool_t *pool = p; - LDAP *ldap; - apr_ldap_err_t *result = NULL; - - apr_ldap_init(pool, &ldap, - ldap_host, LDAPS_PORT, - APR_LDAP_SSL, &(result)); - - ABTS_TRUE(tc, ldap != NULL); - ABTS_PTR_NOTNULL(tc, result); - - if (result->rc == LDAP_SUCCESS) { - add_ldap_certs(tc); - - test_ldap_connection(tc, ldap); - } -} - -static void test_ldap_tls(abts_case *tc, void *data) -{ - apr_pool_t *pool = p; - LDAP *ldap; - apr_ldap_err_t *result = NULL; - - apr_ldap_init(pool, &ldap, - ldap_host, LDAP_PORT, - APR_LDAP_STARTTLS, &(result)); - - ABTS_TRUE(tc, ldap != NULL); - ABTS_PTR_NOTNULL(tc, result); - - if (result->rc == LDAP_SUCCESS) { - add_ldap_certs(tc); - - test_ldap_connection(tc, ldap); - } -} - -#endif /* APR_HAS_LDAP */ - -abts_suite *testldap(abts_suite *suite) -{ -#if APR_HAS_LDAP - apr_ldap_err_t *result = NULL; - suite = ADD_SUITE(suite); - - apr_ldap_ssl_init(p, NULL, 0, &result); - - if (get_ldap_host()) { - abts_run_test(suite, test_ldap, NULL); - abts_run_test(suite, test_ldaps, NULL); - abts_run_test(suite, test_ldap_tls, NULL); - } -#endif /* APR_HAS_LDAP */ - - return suite; -} - diff --git a/libs/apr-util/test/testmd4.c b/libs/apr-util/test/testmd4.c deleted file mode 100644 index 494529d3cf3..00000000000 --- a/libs/apr-util/test/testmd4.c +++ /dev/null @@ -1,119 +0,0 @@ -/* Copyright 2000-2005 The Apache Software Foundation or its licensors, as - * applicable. - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ -/* This is derived from material copyright RSA Data Security, Inc. - * Their notice is reproduced below in its entirety. - * - * Copyright (C) 1990-2, RSA Data Security, Inc. Created 1990. All - * rights reserved. - * - * RSA Data Security, Inc. makes no representations concerning either - * the merchantability of this software or the suitability of this - * software for any particular purpose. It is provided "as is" - * without express or implied warranty of any kind. - * - * These notices must be retained in any copies of any part of this - * documentation and/or software. - */ - -#include -#include -#include - -#include "apr_errno.h" -#include "apr_md4.h" -#include "apr_file_io.h" - -#include "abts.h" -#include "testutil.h" - -static struct { - const char *string; - const char *md4sum; -} md4sums[] = -{ -/* -* Taken from the old md4 test suite. -* MD4 ("") = 31d6cfe0d16ae931b73c59d7e0c089c0 -* MD4 ("a") = bde52cb31de33e46245e05fbdbd6fb24 -* MD4 ("abc") = a448017aaf21d8525fc10ae87aa6729d -* MD4 ("message digest") = d9130a8164549fe818874806e1c7014b -* MD4 ("abcdefghijklmnopqrstuvwxyz") = d79e1c308aa5bbcdeea8ed63df412da9 -* MD4 ("ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789") -* MD4 ("12345678901234567890123456789012345678901234567890123456789012345678901234567890") = e33b4ddc9c38f2199c3e7b164fcc0536 -* -*/ - {"", - "\x31\xd6\xcf\xe0\xd1\x6a\xe9\x31\xb7\x3c\x59\xd7\xe0\xc0\x89\xc0"}, - {"a", - "\xbd\xe5\x2c\xb3\x1d\xe3\x3e\x46\x24\x5e\x05\xfb\xdb\xd6\xfb\x24"}, - {"abc", - "\xa4\x48\x01\x7a\xaf\x21\xd8\x52\x5f\xc1\x0a\xe8\x7a\xa6\x72\x9d"}, - {"message digest", - "\xd9\x13\x0a\x81\x64\x54\x9f\xe8\x18\x87\x48\x06\xe1\xc7\x01\x4b"}, - {"abcdefghijklmnopqrstuvwxyz", - "\xd7\x9e\x1c\x30\x8a\xa5\xbb\xcd\xee\xa8\xed\x63\xdf\x41\x2d\xa9"}, - {"ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789", - "\x04\x3f\x85\x82\xf2\x41\xdb\x35\x1c\xe6\x27\xe1\x53\xe7\xf0\xe4"}, - {"12345678901234567890123456789012345678901234567890123456789012345678901234567890", - "\xe3\x3b\x4d\xdc\x9c\x38\xf2\x19\x9c\x3e\x7b\x16\x4f\xcc\x05\x36"} -}; - -static int num_sums = sizeof(md4sums) / sizeof(md4sums[0]); -static int count; - -#if 0 -static int MDStringComp(const void *string, const void *sum) -{ - apr_md4_ctx_t context; - unsigned char digest[APR_MD4_DIGESTSIZE]; - unsigned int len = strlen(string); - - apr_md4_init(&context); - apr_md4_update(&context, (unsigned char *)string, len); - apr_md4_final(digest, &context); - return (memcmp(digest, sum, APR_MD4_DIGESTSIZE)); - -} -#endif - -static void test_md4sum(abts_case *tc, void *data) -{ - apr_md4_ctx_t context; - unsigned char digest[APR_MD4_DIGESTSIZE]; - const void *string = md4sums[count].string; - const void *sum = md4sums[count].md4sum; - unsigned int len = strlen(string); - - ABTS_ASSERT(tc, "apr_md4_init", (apr_md4_init(&context) == 0)); - ABTS_ASSERT(tc, "apr_md4_update", - (apr_md4_update(&context, - (unsigned char *)string, len) == 0)); - - ABTS_ASSERT(tc, "apr_md4_final", (apr_md4_final(digest, &context) ==0)); - ABTS_ASSERT(tc, "check for correct md4 digest", - (memcmp(digest, sum, APR_MD4_DIGESTSIZE) == 0)); -} - -abts_suite *testmd4(abts_suite *suite) -{ - suite = ADD_SUITE(suite); - - for (count=0; count < num_sums; count++) { - abts_run_test(suite, test_md4sum, NULL); - } - - return suite; -} diff --git a/libs/apr-util/test/testmd5.c b/libs/apr-util/test/testmd5.c deleted file mode 100644 index 4f06f0d7d31..00000000000 --- a/libs/apr-util/test/testmd5.c +++ /dev/null @@ -1,78 +0,0 @@ -/* Copyright 2000-2005 The Apache Software Foundation or its licensors, as - * applicable. - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -#include -#include -#include - -#include "apr_md5.h" -#include "apr_xlate.h" -#include "apr_general.h" - -#include "abts.h" -#include "testutil.h" - -static struct { - const char *string; - const char *digest; -} md5sums[] = -{ - {"Jeff was here!", - "\xa5\x25\x8a\x89\x11\xb2\x9d\x1f\x81\x75\x96\x3b\x60\x94\x49\xc0"}, - {"01234567890aBcDeFASDFGHJKLPOIUYTR" - "POIUYTREWQZXCVBN LLLLLLLLLLLLLLL", - "\xd4\x1a\x06\x2c\xc5\xfd\x6f\x24\x67\x68\x56\x7c\x40\x8a\xd5\x69"}, - {"111111118888888888888888*******%%%%%%%%%%#####" - "142134u8097289720432098409289nkjlfkjlmn,m.. ", - "\xb6\xea\x5b\xe8\xca\x45\x8a\x33\xf0\xf1\x84\x6f\xf9\x65\xa8\xe1"}, - {"01234567890aBcDeFASDFGHJKLPOIUYTR" - "POIUYTREWQZXCVBN LLLLLLLLLLLLLLL" - "01234567890aBcDeFASDFGHJKLPOIUYTR" - "POIUYTREWQZXCVBN LLLLLLLLLLLLLLL" - "1", - "\xd1\xa1\xc0\x97\x8a\x60\xbb\xfb\x2a\x25\x46\x9d\xa5\xae\xd0\xb0"} -}; - -static int num_sums = sizeof(md5sums) / sizeof(md5sums[0]); -static int count; - -static void test_md5sum(abts_case *tc, void *data) -{ - apr_md5_ctx_t context; - unsigned char digest[APR_MD5_DIGESTSIZE]; - const void *string = md5sums[count].string; - const void *sum = md5sums[count].digest; - unsigned int len = strlen(string); - - ABTS_ASSERT(tc, "apr_md5_init", (apr_md5_init(&context) == 0)); - ABTS_ASSERT(tc, "apr_md5_update", - (apr_md5_update(&context, string, len) == 0)); - ABTS_ASSERT(tc, "apr_md5_final", (apr_md5_final(digest, &context) - == 0)); - ABTS_ASSERT(tc, "check for correct md5 digest", - (memcmp(digest, sum, APR_MD5_DIGESTSIZE) == 0)); -} - -abts_suite *testmd5(abts_suite *suite) -{ - suite = ADD_SUITE(suite); - - for (count=0; count < num_sums; count++) { - abts_run_test(suite, test_md5sum, NULL); - } - - return suite; -} diff --git a/libs/apr-util/test/testpass.c b/libs/apr-util/test/testpass.c deleted file mode 100644 index 67bbdbeaf8f..00000000000 --- a/libs/apr-util/test/testpass.c +++ /dev/null @@ -1,140 +0,0 @@ -/* Copyright 2000-2005 The Apache Software Foundation or its licensors, as - * applicable. - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -#include -#include -#include - -#include "apr_errno.h" -#include "apr_strings.h" -#include "apr_file_io.h" -#include "apr_thread_proc.h" -#include "apr_md5.h" -#include "apr_sha1.h" - -#include "abts.h" -#include "testutil.h" - -static struct { - const char *password; - const char *hash; -} passwords[] = -{ -/* - passwords and hashes created with Apache's htpasswd utility like this: - - htpasswd -c -b passwords pass1 pass1 - htpasswd -b passwords pass2 pass2 - htpasswd -b passwords pass3 pass3 - htpasswd -b passwords pass4 pass4 - htpasswd -b passwords pass5 pass5 - htpasswd -b passwords pass6 pass6 - htpasswd -b passwords pass7 pass7 - htpasswd -b passwords pass8 pass8 - (insert Perl one-liner to convert to initializer :) ) - */ - {"pass1", "1fWDc9QWYCWrQ"}, - {"pass2", "1fiGx3u7QoXaM"}, - {"pass3", "1fzijMylTiwCs"}, - {"pass4", "nHUYc8U2UOP7s"}, - {"pass5", "nHpETGLGPwAmA"}, - {"pass6", "nHbsbWmJ3uyhc"}, - {"pass7", "nHQ3BbF0Y9vpI"}, - {"pass8", "nHZA1rViSldQk"} -}; -static int num_passwords = sizeof(passwords) / sizeof(passwords[0]); - -static void test_crypt(abts_case *tc, void *data) -{ - int i; - - for (i = 0; i < num_passwords; i++) { - apr_assert_success(tc, "check for valid password", - apr_password_validate(passwords[i].password, - passwords[i].hash)); - } -} - -#if APR_HAS_THREADS - -static void * APR_THREAD_FUNC testing_thread(apr_thread_t *thd, - void *data) -{ - abts_case *tc = data; - int i; - - for (i = 0; i < 100; i++) { - test_crypt(tc, NULL); - } - - return APR_SUCCESS; -} - -/* test for threadsafe crypt() */ -static void test_threadsafe(abts_case *tc, void *data) -{ -#define NUM_THR 20 - apr_thread_t *my_threads[NUM_THR]; - int i; - apr_status_t rv; - - for (i = 0; i < NUM_THR; i++) { - apr_assert_success(tc, "create test thread", - apr_thread_create(&my_threads[i], NULL, - testing_thread, tc, p)); - } - - for (i = 0; i < NUM_THR; i++) { - apr_thread_join(&rv, my_threads[i]); - } -} -#endif - -static void test_shapass(abts_case *tc, void *data) -{ - const char *pass = "hellojed"; - char hash[100]; - - apr_sha1_base64(pass, strlen(pass), hash); - - apr_assert_success(tc, "SHA1 password validated", - apr_password_validate(pass, hash)); -} - -static void test_md5pass(abts_case *tc, void *data) -{ - const char *pass = "hellojed", *salt = "sardine"; - char hash[100]; - - apr_md5_encode(pass, salt, hash, sizeof hash); - - apr_assert_success(tc, "MD5 password validated", - apr_password_validate(pass, hash)); -} - -abts_suite *testpass(abts_suite *suite) -{ - suite = ADD_SUITE(suite); - - abts_run_test(suite, test_crypt, NULL); -#if APR_HAS_THREADS - abts_run_test(suite, test_threadsafe, NULL); -#endif - abts_run_test(suite, test_shapass, NULL); - abts_run_test(suite, test_md5pass, NULL); - - return suite; -} diff --git a/libs/apr-util/test/testqueue.c b/libs/apr-util/test/testqueue.c deleted file mode 100644 index 9a971f4b11a..00000000000 --- a/libs/apr-util/test/testqueue.c +++ /dev/null @@ -1,282 +0,0 @@ -/* Copyright 2000-2005 The Apache Software Foundation or its licensors, as - * applicable. - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -#include -#include -#include -#include -#include -#include "errno.h" -#include -#include -#include -#if APR_HAVE_UNISTD_H -#include -#endif -#include -#include "apr_queue.h" - -#if !APR_HAS_THREADS -int main(void) -{ - fprintf(stderr, - "This program won't work on this platform because there is no " - "support for threads.\n"); - return 0; -} -#else /* !APR_HAS_THREADS */ - -apr_pool_t *context; -int consumer_activity=400; -int producer_activity=300; -int verbose=0; -static void * APR_THREAD_FUNC consumer(apr_thread_t *thd, void *data); -static void * APR_THREAD_FUNC producer(apr_thread_t *thd, void *data); -static void usage(void); - -static void * APR_THREAD_FUNC consumer(apr_thread_t *thd, void *data) -{ - long sleeprate; - apr_queue_t *q = (apr_queue_t*)data; - apr_status_t rv; - int val; - void *v; - char current_thread_str[30]; - apr_os_thread_t current_thread = apr_os_thread_current(); - - apr_snprintf(current_thread_str, sizeof current_thread_str, - "%pT", ¤t_thread); - - sleeprate = 1000000/consumer_activity; - apr_sleep( (rand() % 4 ) * 1000000 ); /* sleep random seconds */ - while (1) { - do { - rv = apr_queue_pop(q, &v); - if (rv == APR_EINTR) { - fprintf(stderr, "%s\tconsumer intr\n", current_thread_str); - } - - } while (rv == APR_EINTR) ; - if (rv != APR_SUCCESS) { - if (rv == APR_EOF) { - fprintf(stderr, "%s\tconsumer:queue terminated APR_EOF\n", current_thread_str); - rv=APR_SUCCESS; - } - else - fprintf(stderr, "%s\tconsumer thread exit rv %d\n", current_thread_str, rv); - apr_thread_exit(thd, rv); - return NULL; - } - val = *(int*)v; - if (verbose) - fprintf(stderr, "%s\tpop %d\n", current_thread_str, val); - apr_sleep( sleeprate ); /* sleep this long to acheive our rate */ - } - /* not reached */ - return NULL; -} - -static void * APR_THREAD_FUNC producer(apr_thread_t *thd, void *data) -{ - int i=0; - long sleeprate; - apr_queue_t *q = (apr_queue_t*)data; - apr_status_t rv; - int *val; - char current_thread_str[30]; - apr_os_thread_t current_thread = apr_os_thread_current(); - - apr_snprintf(current_thread_str, sizeof current_thread_str, - "%pT", ¤t_thread); - - sleeprate = 1000000/producer_activity; - apr_sleep( (rand() % 4 ) * 1000000 ); /* sleep random seconds */ - - while(1) { - val = apr_palloc(context, sizeof(int)); - *val=i; - if (verbose) - fprintf(stderr, "%s\tpush %d\n", current_thread_str, *val); - do { - rv = apr_queue_push(q, val); - if (rv == APR_EINTR) - fprintf(stderr, "%s\tproducer intr\n", current_thread_str); - } while (rv == APR_EINTR); - - if (rv != APR_SUCCESS) { - if (rv == APR_EOF) { - fprintf(stderr, "%s\tproducer: queue terminated APR_EOF\n", current_thread_str); - rv = APR_SUCCESS; - } - else - fprintf(stderr, "%s\tproducer thread exit rv %d\n", current_thread_str, rv); - apr_thread_exit(thd, rv); - return NULL; - } - i++; - apr_sleep( sleeprate ); /* sleep this long to acheive our rate */ - } - /* not reached */ - return NULL; -} - -static void usage(void) -{ - fprintf(stderr,"usage: testqueue -p n -P n -c n -C n -q n -s n\n"); - fprintf(stderr,"-c # of consumer\n"); - fprintf(stderr,"-C amount they consumer before dying\n"); - fprintf(stderr,"-p # of producers\n"); - fprintf(stderr,"-P amount they produce before dying\n"); - fprintf(stderr,"-q queue size\n"); - fprintf(stderr,"-s amount of time to sleep before killing it\n"); - fprintf(stderr,"-v verbose\n"); -} - -int main(int argc, const char* const argv[]) -{ - apr_thread_t **t; - apr_queue_t *queue; - int i; - apr_status_t rv; - apr_getopt_t *opt; - const char *optarg; - char c; - int numconsumers=3; - int numproducers=4; - int queuesize=100; - int sleeptime=30; - char errorbuf[200]; - - apr_initialize(); - srand((unsigned int)apr_time_now()); - printf("APR Queue Test\n======================\n\n"); - - printf("%-60s", "Initializing the context"); - if (apr_pool_create(&context, NULL) != APR_SUCCESS) { - fflush(stdout); - fprintf(stderr, "Failed.\nCould not initialize\n"); - exit(-1); - } - printf("OK\n"); - - apr_getopt_init(&opt, context, argc, argv); - while ((rv = apr_getopt(opt, "p:c:P:C:q:s:v", &c, &optarg)) - == APR_SUCCESS) { - switch (c) { - case 'c': - numconsumers = atoi( optarg); - break; - case 'p': - numproducers = atoi( optarg); - break; - case 'C': - consumer_activity = atoi( optarg); - break; - case 'P': - producer_activity = atoi( optarg); - break; - case 's': - sleeptime= atoi(optarg); - break; - case 'q': - queuesize = atoi(optarg); - break; - case 'v': - verbose= 1; - break; - default: - usage(); - exit(-1); - } - } - /* bad cmdline option? then we die */ - if (rv != APR_EOF || opt->ind < opt->argc) { - usage(); - exit(-1); - } - - - - printf("test stats %d consumers (rate %d/sec) %d producers (rate %d/sec) queue size %d sleep %d\n", - numconsumers,consumer_activity, numproducers, producer_activity, queuesize,sleeptime); - printf("%-60s", "Initializing the queue"); - rv = apr_queue_create(&queue, queuesize, context); - - if (rv != APR_SUCCESS) { - fflush(stdout); - fprintf(stderr, "Failed\nCould not create queue %d\n",rv); - apr_strerror(rv, errorbuf,200); - fprintf(stderr,"%s\n",errorbuf); - exit(-1); - } - printf("OK\n"); - - t = apr_palloc( context, sizeof(apr_thread_t*) * (numconsumers+numproducers)); - printf("%-60s", "Starting consumers"); - for (i=0;i -#include -#include "apr_reslist.h" -#include "apr_thread_proc.h" - -#if APR_HAVE_TIME_H -#include -#endif /* APR_HAVE_TIME_H */ - -#if !APR_HAS_THREADS - -int main(void) -{ - fprintf(stderr, "this program requires APR thread support\n"); - return 0; -} - -#else - -#define RESLIST_MIN 3 -#define RESLIST_SMAX 10 -#define RESLIST_HMAX 20 -#define RESLIST_TTL APR_TIME_C(350000) /* 35 ms */ -#define CONSUMER_THREADS 25 -#define CONSUMER_ITERATIONS 250 -#define CONSTRUCT_SLEEP_TIME APR_TIME_C(250000) /* 25 ms */ -#define DESTRUCT_SLEEP_TIME APR_TIME_C(100000) /* 10 ms */ -#define WORK_DELAY_SLEEP_TIME APR_TIME_C(150000) /* 15 ms */ - -typedef struct { - apr_interval_time_t sleep_upon_construct; - apr_interval_time_t sleep_upon_destruct; - int c_count; - int d_count; -} my_parameters_t; - -typedef struct { - int id; -} my_resource_t; - -static apr_status_t my_constructor(void **resource, void *params, - apr_pool_t *pool) -{ - my_resource_t *res; - my_parameters_t *my_params = params; - - /* Create some resource */ - res = apr_palloc(pool, sizeof(*res)); - res->id = my_params->c_count++; - - printf("++ constructing new resource [id:%d, #%d/%d]\n", res->id, - my_params->c_count, my_params->d_count); - - /* Sleep for awhile, to simulate construction overhead. */ - apr_sleep(my_params->sleep_upon_construct); - - /* Set the resource so it can be managed by the reslist */ - *resource = res; - return APR_SUCCESS; -} - -static apr_status_t my_destructor(void *resource, void *params, - apr_pool_t *pool) -{ - my_resource_t *res = resource; - my_parameters_t *my_params = params; - - printf("-- destructing old resource [id:%d, #%d/%d]\n", res->id, - my_params->c_count, ++my_params->d_count); - - apr_sleep(my_params->sleep_upon_destruct); - - return APR_SUCCESS; -} - -typedef struct { - int tid; - apr_reslist_t *reslist; - apr_interval_time_t work_delay_sleep; -} my_thread_info_t; - -static void * APR_THREAD_FUNC resource_consuming_thread(apr_thread_t *thd, - void *data) -{ - apr_status_t rv; - my_thread_info_t *thread_info = data; - apr_reslist_t *rl = thread_info->reslist; - int i; - - for (i = 0; i < CONSUMER_ITERATIONS; i++) { - my_resource_t *res; - void *vp; - rv = apr_reslist_acquire(rl, &vp); - if (rv != APR_SUCCESS) { - fprintf(stderr, "Failed to retrieve resource from reslist\n"); - apr_thread_exit(thd, rv); - return NULL; - } - res = vp; - printf(" [tid:%d,iter:%d] using resource id:%d\n", thread_info->tid, - i, res->id); - apr_sleep(thread_info->work_delay_sleep); -/* simulate a 5% chance of the resource being bad */ - if ( drand48() < 0.95 ) { - rv = apr_reslist_release(rl, res); - if (rv != APR_SUCCESS) { - fprintf(stderr, "Failed to return resource to reslist\n"); - apr_thread_exit(thd, rv); - return NULL; - } - } else { - printf("invalidating resource id:%d\n", res->id) ; - rv = apr_reslist_invalidate(rl, res); - if (rv != APR_SUCCESS) { - fprintf(stderr, "Failed to invalidate resource\n"); - apr_thread_exit(thd, rv); - return NULL; - } - } - } - - return APR_SUCCESS; -} - -static void test_timeout(apr_reslist_t *rl) -{ - apr_status_t rv; - my_resource_t *resources[RESLIST_HMAX]; - my_resource_t *res; - void *vp; - int i; - - printf("Setting timeout to 1000us: "); - apr_reslist_timeout_set(rl, 1000); - fprintf(stdout, "OK\n"); - - /* deplete all possible resources from the resource list - * so that the next call will block until timeout is reached - * (since there are no other threads to make a resource - * available) - */ - - for (i = 0; i < RESLIST_HMAX; i++) { - rv = apr_reslist_acquire(rl, (void**)&resources[i]); - if (rv != APR_SUCCESS) { - fprintf(stderr, "couldn't acquire resource: %d\n", rv); - exit(1); - } - } - - /* next call will block until timeout is reached */ - rv = apr_reslist_acquire(rl, &vp); - if (!APR_STATUS_IS_TIMEUP(rv)) { - fprintf(stderr, "apr_reslist_acquire()->%d instead of TIMEUP\n", - rv); - exit(1); - } - res = vp; - - /* release the resources; otherwise the destroy operation - * will blow - */ - for (i = 0; i < RESLIST_HMAX; i++) { - rv = apr_reslist_release(rl, &resources[i]); - if (rv != APR_SUCCESS) { - fprintf(stderr, "couldn't release resource: %d\n", rv); - exit(1); - } - } -} - -static apr_status_t test_reslist(apr_pool_t *parpool) -{ - apr_status_t rv; - apr_pool_t *pool; - apr_reslist_t *rl; - my_parameters_t *params; - int i; - apr_thread_t *my_threads[CONSUMER_THREADS]; - my_thread_info_t my_thread_info[CONSUMER_THREADS]; - srand48(time(0)) ; - - printf("Creating child pool......................."); - rv = apr_pool_create(&pool, parpool); - if (rv != APR_SUCCESS) { - fprintf(stderr, "Error creating child pool\n"); - return rv; - } - printf("OK\n"); - - /* Create some parameters that will be passed into each - * constructor and destructor call. */ - params = apr_pcalloc(pool, sizeof(*params)); - params->sleep_upon_construct = CONSTRUCT_SLEEP_TIME; - params->sleep_upon_destruct = DESTRUCT_SLEEP_TIME; - - /* We're going to want 10 blocks of data from our target rmm. */ - printf("Creating resource list:\n" - " min/smax/hmax: %d/%d/%d\n" - " ttl: %" APR_TIME_T_FMT "\n", RESLIST_MIN, RESLIST_SMAX, - RESLIST_HMAX, RESLIST_TTL); - rv = apr_reslist_create(&rl, RESLIST_MIN, RESLIST_SMAX, RESLIST_HMAX, - RESLIST_TTL, my_constructor, my_destructor, - params, pool); - if (rv != APR_SUCCESS) { - fprintf(stderr, "Error allocating shared memory block\n"); - return rv; - } - fprintf(stdout, "OK\n"); - - printf("Creating %d threads", CONSUMER_THREADS); - for (i = 0; i < CONSUMER_THREADS; i++) { - putchar('.'); - my_thread_info[i].tid = i; - my_thread_info[i].reslist = rl; - my_thread_info[i].work_delay_sleep = WORK_DELAY_SLEEP_TIME; - rv = apr_thread_create(&my_threads[i], NULL, - resource_consuming_thread, &my_thread_info[i], - pool); - if (rv != APR_SUCCESS) { - fprintf(stderr, "Failed to create thread %d\n", i); - return rv; - } - } - printf("\nDone!\n"); - - printf("Waiting for threads to finish"); - for (i = 0; i < CONSUMER_THREADS; i++) { - apr_status_t thread_rv; - putchar('.'); - apr_thread_join(&thread_rv, my_threads[i]); - if (rv != APR_SUCCESS) { - fprintf(stderr, "Failed to join thread %d\n", i); - return rv; - } - } - printf("\nDone!\n"); - - test_timeout(rl); - - printf("Destroying resource list................."); - rv = apr_reslist_destroy(rl); - if (rv != APR_SUCCESS) { - printf("FAILED\n"); - return rv; - } - printf("OK\n"); - - apr_pool_destroy(pool); - - return APR_SUCCESS; -} - - -int main(void) -{ - apr_status_t rv; - apr_pool_t *pool; - char errmsg[200]; - - apr_initialize(); - - printf("APR Resource List Test\n"); - printf("======================\n\n"); - - printf("Initializing the pool............................"); - if (apr_pool_create(&pool, NULL) != APR_SUCCESS) { - printf("could not initialize pool\n"); - exit(-1); - } - printf("OK\n"); - - rv = test_reslist(pool); - if (rv != APR_SUCCESS) { - printf("Resource list test FAILED: [%d] %s\n", - rv, apr_strerror(rv, errmsg, sizeof(errmsg))); - exit(-2); - } - printf("Resource list test passed!\n"); - - return 0; -} - -#endif /* APR_HAS_THREADS */ diff --git a/libs/apr-util/test/testrmm.c b/libs/apr-util/test/testrmm.c deleted file mode 100644 index 3c3ac604d0f..00000000000 --- a/libs/apr-util/test/testrmm.c +++ /dev/null @@ -1,281 +0,0 @@ -/* Copyright 2000-2005 The Apache Software Foundation or its licensors, as - * applicable. - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -#include "apr_shm.h" -#include "apr_rmm.h" -#include "apr_errno.h" -#include "apr_general.h" -#include "apr_lib.h" -#include "apr_strings.h" -#include "apr_time.h" -#include -#include -#include -#if APR_HAVE_UNISTD_H -#include -#endif - -#if APR_HAS_SHARED_MEMORY - -#define FRAG_SIZE 80 -#define FRAG_COUNT 10 -#define SHARED_SIZE (apr_size_t)(FRAG_SIZE * FRAG_COUNT * sizeof(char*)) - -static apr_status_t test_rmm(apr_pool_t *parpool) -{ - apr_status_t rv; - apr_pool_t *pool; - apr_shm_t *shm; - apr_rmm_t *rmm; - apr_size_t size, fragsize; - apr_rmm_off_t *off; - int i; - void *entity; - - rv = apr_pool_create(&pool, parpool); - if (rv != APR_SUCCESS) { - fprintf(stderr, "Error creating child pool\n"); - return rv; - } - - /* We're going to want 10 blocks of data from our target rmm. */ - size = SHARED_SIZE + apr_rmm_overhead_get(FRAG_COUNT + 1); - printf("Creating anonymous shared memory (%" - APR_SIZE_T_FMT " bytes).....", size); - rv = apr_shm_create(&shm, size, NULL, pool); - if (rv != APR_SUCCESS) { - fprintf(stderr, "Error allocating shared memory block\n"); - return rv; - } - fprintf(stdout, "OK\n"); - - printf("Creating rmm segment............................."); - rv = apr_rmm_init(&rmm, NULL, apr_shm_baseaddr_get(shm), size, - pool); - - if (rv != APR_SUCCESS) { - fprintf(stderr, "Error allocating rmm..............\n"); - return rv; - } - fprintf(stdout, "OK\n"); - - fragsize = SHARED_SIZE / FRAG_COUNT; - printf("Creating each fragment of size %" APR_SIZE_T_FMT "................", - fragsize); - off = apr_palloc(pool, FRAG_COUNT * sizeof(apr_rmm_off_t)); - for (i = 0; i < FRAG_COUNT; i++) { - off[i] = apr_rmm_malloc(rmm, fragsize); - } - fprintf(stdout, "OK\n"); - - printf("Checking for out of memory allocation............"); - if (apr_rmm_malloc(rmm, FRAG_SIZE * FRAG_COUNT) == 0) { - fprintf(stdout, "OK\n"); - } - else { - return APR_EGENERAL; - } - - printf("Checking each fragment for address alignment....."); - for (i = 0; i < FRAG_COUNT; i++) { - char *c = apr_rmm_addr_get(rmm, off[i]); - apr_size_t sc = (apr_size_t)c; - - if (off[i] == 0) { - printf("allocation failed for offset %d\n", i); - return APR_ENOMEM; - } - - if (sc & 7) { - printf("Bad alignment for fragment %d; %p not %p!\n", - i, c, (void *)APR_ALIGN_DEFAULT((apr_size_t)c)); - return APR_EGENERAL; - } - } - fprintf(stdout, "OK\n"); - - printf("Setting each fragment to a unique value.........."); - for (i = 0; i < FRAG_COUNT; i++) { - int j; - char **c = apr_rmm_addr_get(rmm, off[i]); - for (j = 0; j < FRAG_SIZE; j++, c++) { - *c = apr_itoa(pool, i + j); - } - } - fprintf(stdout, "OK\n"); - - printf("Checking each fragment for its unique value......"); - for (i = 0; i < FRAG_COUNT; i++) { - int j; - char **c = apr_rmm_addr_get(rmm, off[i]); - for (j = 0; j < FRAG_SIZE; j++, c++) { - char *d = apr_itoa(pool, i + j); - if (strcmp(*c, d) != 0) { - return APR_EGENERAL; - } - } - } - fprintf(stdout, "OK\n"); - - printf("Freeing each fragment............................"); - for (i = 0; i < FRAG_COUNT; i++) { - rv = apr_rmm_free(rmm, off[i]); - if (rv != APR_SUCCESS) { - return rv; - } - } - fprintf(stdout, "OK\n"); - - printf("Creating one large segment......................."); - off[0] = apr_rmm_calloc(rmm, SHARED_SIZE); - fprintf(stdout, "OK\n"); - - printf("Setting large segment............................"); - for (i = 0; i < FRAG_COUNT * FRAG_SIZE; i++) { - char **c = apr_rmm_addr_get(rmm, off[0]); - c[i] = apr_itoa(pool, i); - } - fprintf(stdout, "OK\n"); - - printf("Freeing large segment............................"); - apr_rmm_free(rmm, off[0]); - fprintf(stdout, "OK\n"); - - printf("Creating each fragment of size %" APR_SIZE_T_FMT " (again)........", - fragsize); - for (i = 0; i < FRAG_COUNT; i++) { - off[i] = apr_rmm_malloc(rmm, fragsize); - } - fprintf(stdout, "OK\n"); - - printf("Freeing each fragment backwards.................."); - for (i = FRAG_COUNT - 1; i >= 0; i--) { - rv = apr_rmm_free(rmm, off[i]); - if (rv != APR_SUCCESS) { - return rv; - } - } - fprintf(stdout, "OK\n"); - - printf("Creating one large segment (again)..............."); - off[0] = apr_rmm_calloc(rmm, SHARED_SIZE); - fprintf(stdout, "OK\n"); - - printf("Freeing large segment............................"); - apr_rmm_free(rmm, off[0]); - fprintf(stdout, "OK\n"); - - printf("Checking realloc................................."); - off[0] = apr_rmm_calloc(rmm, SHARED_SIZE - 100); - off[1] = apr_rmm_calloc(rmm, 100); - if (off[0] == 0 || off[1] == 0) { - printf("FAILED\n"); - return APR_EINVAL; - } - entity = apr_rmm_addr_get(rmm, off[1]); - rv = apr_rmm_free(rmm, off[0]); - if (rv != APR_SUCCESS) { - printf("FAILED\n"); - return rv; - } - - { - unsigned char *c = entity; - - /* Fill in the region; the first half with zereos, which will - * likely catch the apr_rmm_realloc offset calculation bug by - * making it think the old region was zero length. */ - for (i = 0; i < 100; i++) { - c[i] = (i < 50) ? 0 : i; - } - } - - /* now we can realloc off[1] and get many more bytes */ - off[0] = apr_rmm_realloc(rmm, entity, SHARED_SIZE - 100); - if (off[0] == 0) { - printf("FAILED\n"); - return APR_EINVAL; - } - - { - unsigned char *c = apr_rmm_addr_get(rmm, off[0]); - - /* fill in the region */ - for (i = 0; i < 100; i++) { - if (c[i] != (i < 50 ? 0 : i)) { - printf("FAILED at offset %d: %hx\n", i, c[i]); - return APR_EGENERAL; - } - } - } - - fprintf(stdout, "OK\n"); - - printf("Destroying rmm segment..........................."); - rv = apr_rmm_destroy(rmm); - if (rv != APR_SUCCESS) { - printf("FAILED\n"); - return rv; - } - printf("OK\n"); - - printf("Destroying shared memory segment................."); - rv = apr_shm_destroy(shm); - if (rv != APR_SUCCESS) { - printf("FAILED\n"); - return rv; - } - printf("OK\n"); - - apr_pool_destroy(pool); - - return APR_SUCCESS; -} - - -int main(void) -{ - apr_status_t rv; - apr_pool_t *pool; - char errmsg[200]; - - apr_initialize(); - - printf("APR RMM Memory Test\n"); - printf("======================\n\n"); - - printf("Initializing the pool............................"); - if (apr_pool_create(&pool, NULL) != APR_SUCCESS) { - printf("could not initialize pool\n"); - exit(-1); - } - printf("OK\n"); - - rv = test_rmm(pool); - if (rv != APR_SUCCESS) { - printf("Anonymous shared memory test FAILED: [%d] %s\n", - rv, apr_strerror(rv, errmsg, sizeof(errmsg))); - exit(-2); - } - printf("RMM test passed!\n"); - - return 0; -} - -#else /* APR_HAS_SHARED_MEMORY */ -#error shmem is not supported on this platform -#endif /* APR_HAS_SHARED_MEMORY */ - diff --git a/libs/apr-util/test/teststrmatch.c b/libs/apr-util/test/teststrmatch.c deleted file mode 100644 index e86b4c13c9b..00000000000 --- a/libs/apr-util/test/teststrmatch.c +++ /dev/null @@ -1,92 +0,0 @@ -/* Copyright 2002-2005 The Apache Software Foundation or its licensors, as - * applicable. - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -#include "testutil.h" - -#include "apr.h" -#include "apr_general.h" -#include "apr_strmatch.h" -#if APR_HAVE_STDLIB_H -#include -#endif -#define APR_WANT_STDIO -#define APR_WANT_STRFUNC -#include "apr_want.h" - -static void test_str(abts_case *tc, void *data) -{ - apr_pool_t *pool = p; - const apr_strmatch_pattern *pattern; - const apr_strmatch_pattern *pattern_nocase; - const apr_strmatch_pattern *pattern_onechar; - const apr_strmatch_pattern *pattern_zero; - const char *match = NULL; - const char *input1 = "string that contains a patterN..."; - const char *input2 = "string that contains a pattern..."; - const char *input3 = "pattern at the start of a string"; - const char *input4 = "string that ends with a pattern"; - const char *input5 = "patter\200n not found, negative chars in input"; - const char *input6 = "patter\200n, negative chars, contains pattern..."; - - pattern = apr_strmatch_precompile(pool, "pattern", 1); - ABTS_PTR_NOTNULL(tc, pattern); - - pattern_nocase = apr_strmatch_precompile(pool, "pattern", 0); - ABTS_PTR_NOTNULL(tc, pattern_nocase); - - pattern_onechar = apr_strmatch_precompile(pool, "g", 0); - ABTS_PTR_NOTNULL(tc, pattern_onechar); - - pattern_zero = apr_strmatch_precompile(pool, "", 0); - ABTS_PTR_NOTNULL(tc, pattern_zero); - - match = apr_strmatch(pattern, input1, strlen(input1)); - ABTS_PTR_EQUAL(tc, match, NULL); - - match = apr_strmatch(pattern, input2, strlen(input2)); - ABTS_PTR_EQUAL(tc, match, input2 + 23); - - match = apr_strmatch(pattern_onechar, input1, strlen(input1)); - ABTS_PTR_EQUAL(tc, match, input1 + 5); - - match = apr_strmatch(pattern_zero, input1, strlen(input1)); - ABTS_PTR_EQUAL(tc, match, input1); - - match = apr_strmatch(pattern_nocase, input1, strlen(input1)); - ABTS_PTR_EQUAL(tc, match, input1 + 23); - - match = apr_strmatch(pattern, input3, strlen(input3)); - ABTS_PTR_EQUAL(tc, match, input3); - - match = apr_strmatch(pattern, input4, strlen(input4)); - ABTS_PTR_EQUAL(tc, match, input4 + 24); - - match = apr_strmatch(pattern, input5, strlen(input5)); - ABTS_PTR_EQUAL(tc, match, NULL); - - match = apr_strmatch(pattern, input6, strlen(input6)); - ABTS_PTR_EQUAL(tc, match, input6 + 35); -} - -abts_suite *teststrmatch(abts_suite *suite) -{ - suite = ADD_SUITE(suite); - - abts_run_test(suite, test_str, NULL); - - return suite; -} - diff --git a/libs/apr-util/test/testuri.c b/libs/apr-util/test/testuri.c deleted file mode 100644 index c4d385d3c9f..00000000000 --- a/libs/apr-util/test/testuri.c +++ /dev/null @@ -1,230 +0,0 @@ -/* Copyright 2000-2005 The Apache Software Foundation or its licensors, as - * applicable. - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -#include -#include - -#include "testutil.h" -#include "apr_general.h" -#include "apr_strings.h" -#include "apr_uri.h" - -struct aup_test { - const char *uri; - apr_status_t rv; - const char *scheme; - const char *hostinfo; - const char *user; - const char *password; - const char *hostname; - const char *port_str; - const char *path; - const char *query; - const char *fragment; - apr_port_t port; -}; - -struct aup_test aup_tests[] = -{ - { "http://[/::1]/index.html", APR_EGENERAL }, - { "http://[", APR_EGENERAL }, - { "http://[?::1]/index.html", APR_EGENERAL }, - - { - "http://127.0.0.1:9999/asdf.html", - 0, "http", "127.0.0.1:9999", NULL, NULL, "127.0.0.1", "9999", "/asdf.html", NULL, NULL, 9999 - }, - { - "http://127.0.0.1:9999a/asdf.html", - APR_EGENERAL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, 0 - }, - { - "http://[::127.0.0.1]:9999/asdf.html", - 0, "http", "[::127.0.0.1]:9999", NULL, NULL, "::127.0.0.1", "9999", "/asdf.html", NULL, NULL, 9999 - }, - { - "http://[::127.0.0.1]:9999a/asdf.html", - APR_EGENERAL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, 0 - }, - { - "/error/include/top.html", - 0, NULL, NULL, NULL, NULL, NULL, NULL, "/error/include/top.html", NULL, NULL, 0 - }, - { - "/error/include/../contact.html.var", - 0, NULL, NULL, NULL, NULL, NULL, NULL, "/error/include/../contact.html.var", NULL, NULL, 0 - }, - { - "/", - 0, NULL, NULL, NULL, NULL, NULL, NULL, "/", NULL, NULL, 0 - }, - { - "/manual/", - 0, NULL, NULL, NULL, NULL, NULL, NULL, "/manual/", NULL, NULL, 0 - }, - { - "/cocoon/developing/graphics/Using%20Databases-label_over.jpg", - 0, NULL, NULL, NULL, NULL, NULL, NULL, "/cocoon/developing/graphics/Using%20Databases-label_over.jpg", NULL, NULL, 0 - }, - { - "http://sonyamt:garbage@127.0.0.1/filespace/", - 0, "http", "sonyamt:garbage@127.0.0.1", "sonyamt", "garbage", "127.0.0.1", NULL, "/filespace/", NULL, NULL, 0 - }, - { - "http://sonyamt:garbage@[fe80::1]/filespace/", - 0, "http", "sonyamt:garbage@[fe80::1]", "sonyamt", "garbage", "fe80::1", NULL, "/filespace/", NULL, NULL, 0 - }, - { - "http://sonyamt@[fe80::1]/filespace/?arg1=store", - 0, "http", "sonyamt@[fe80::1]", "sonyamt", NULL, "fe80::1", NULL, "/filespace/", "arg1=store", NULL, 0 - }, - { - "//www.apache.org/", - 0, NULL, "www.apache.org", NULL, NULL, "www.apache.org", NULL, "/", NULL, NULL, 0 - }, -}; - -struct uph_test { - const char *hostinfo; - apr_status_t rv; - const char *hostname; - const char *port_str; - apr_port_t port; -}; - -struct uph_test uph_tests[] = -{ - { - "www.ibm.com:443", - 0, "www.ibm.com", "443", 443 - }, - { - "[fe80::1]:443", - 0, "fe80::1", "443", 443 - }, - { - "127.0.0.1:443", - 0, "127.0.0.1", "443", 443 - }, - { - "127.0.0.1", - APR_EGENERAL, NULL, NULL, 0 - }, - { - "[fe80:80", - APR_EGENERAL, NULL, NULL, 0 - }, - { - "fe80::80]:443", - APR_EGENERAL, NULL, NULL, 0 - } -}; - -#if 0 -static void show_info(apr_status_t rv, apr_status_t expected, const apr_uri_t *info) -{ - if (rv != expected) { - fprintf(stderr, " actual rv: %d expected rv: %d\n", rv, expected); - } - else { - fprintf(stderr, - " scheme: %s\n" - " hostinfo: %s\n" - " user: %s\n" - " password: %s\n" - " hostname: %s\n" - " port_str: %s\n" - " path: %s\n" - " query: %s\n" - " fragment: %s\n" - " hostent: %p\n" - " port: %u\n" - " is_initialized: %u\n" - " dns_looked_up: %u\n" - " dns_resolved: %u\n", - info->scheme, info->hostinfo, info->user, info->password, - info->hostname, info->port_str, info->path, info->query, - info->fragment, info->hostent, info->port, info->is_initialized, - info->dns_looked_up, info->dns_resolved); - } -} -#endif - -static void test_aup(abts_case *tc, void *data) -{ - int i; - apr_status_t rv; - apr_uri_t info; - struct aup_test *t; - const char *s = NULL; - - for (i = 0; i < sizeof(aup_tests) / sizeof(aup_tests[0]); i++) { - char msg[256]; - - memset(&info, 0, sizeof(info)); - t = &aup_tests[i]; - rv = apr_uri_parse(p, t->uri, &info); - apr_snprintf(msg, sizeof msg, "uri '%s': rv=%d not %d", t->uri, - rv, t->rv); - ABTS_ASSERT(tc, msg, rv == t->rv); - if (t->rv == APR_SUCCESS) { - ABTS_STR_EQUAL(tc, info.scheme, t->scheme); - ABTS_STR_EQUAL(tc, info.hostinfo, t->hostinfo); - ABTS_STR_EQUAL(tc, info.user, t->user); - ABTS_STR_EQUAL(tc, info.password, t->password); - ABTS_STR_EQUAL(tc, info.hostname, t->hostname); - ABTS_STR_EQUAL(tc, info.port_str, t->port_str); - ABTS_STR_EQUAL(tc, info.path, t->path); - ABTS_STR_EQUAL(tc, info.query, t->query); - ABTS_STR_EQUAL(tc, info.user, t->user); - ABTS_INT_EQUAL(tc, info.port, t->port); - - s = apr_uri_unparse(p, &info, APR_URI_UNP_REVEALPASSWORD); - ABTS_STR_EQUAL(tc, s, t->uri); - } - } -} - -static void test_uph(abts_case *tc, void *data) -{ - int i; - apr_status_t rv; - apr_uri_t info; - struct uph_test *t; - - for (i = 0; i < sizeof(uph_tests) / sizeof(uph_tests[0]); i++) { - memset(&info, 0, sizeof(info)); - t = &uph_tests[i]; - rv = apr_uri_parse_hostinfo(p, t->hostinfo, &info); - ABTS_INT_EQUAL(tc, rv, t->rv); - if (t->rv == APR_SUCCESS) { - ABTS_STR_EQUAL(tc, info.hostname, t->hostname); - ABTS_STR_EQUAL(tc, info.port_str, t->port_str); - ABTS_INT_EQUAL(tc, info.port, t->port); - } - } -} - -abts_suite *testuri(abts_suite *suite) -{ - suite = ADD_SUITE(suite); - - abts_run_test(suite, test_aup, NULL); - abts_run_test(suite, test_uph, NULL); - - return suite; -} - diff --git a/libs/apr-util/test/testutil.c b/libs/apr-util/test/testutil.c deleted file mode 100644 index f60ef21af20..00000000000 --- a/libs/apr-util/test/testutil.c +++ /dev/null @@ -1,48 +0,0 @@ -/* Copyright 2000-2005 The Apache Software Foundation or its licensors, as - * applicable. - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -#include -#include - -#include "abts.h" -#include "testutil.h" -#include "apr_pools.h" - -apr_pool_t *p; - -void apr_assert_success(abts_case* tc, const char* context, apr_status_t rv) -{ - if (rv == APR_ENOTIMPL) { - ABTS_NOT_IMPL(tc, context); - } - - if (rv != APR_SUCCESS) { - char buf[STRING_MAX], ebuf[128]; - sprintf(buf, "%s (%d): %s\n", context, rv, - apr_strerror(rv, ebuf, sizeof ebuf)); - ABTS_FAIL(tc, buf); - } -} - -void initialize(void) { - if (apr_initialize() != APR_SUCCESS) { - abort(); - } - atexit(apr_terminate); - - apr_pool_create(&p, NULL); - apr_pool_tag(p, "apr-util global test pool"); -} diff --git a/libs/apr-util/test/testutil.h b/libs/apr-util/test/testutil.h deleted file mode 100644 index 95318e17c44..00000000000 --- a/libs/apr-util/test/testutil.h +++ /dev/null @@ -1,56 +0,0 @@ -/* Copyright 2000-2005 The Apache Software Foundation or its licensors, as - * applicable. - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -#include "apr_pools.h" -#include "abts.h" - -#ifndef APR_TEST_UTIL -#define APR_TEST_UTIL - -/* XXX FIXME */ -#ifdef WIN32 -#define EXTENSION ".exe" -#elif NETWARE -#define EXTENSION ".nlm" -#else -#define EXTENSION -#endif - -#define STRING_MAX 8096 - -/* Some simple functions to make the test apps easier to write and - * a bit more consistent... - */ - -extern apr_pool_t *p; - -/* Assert that RV is an APR_SUCCESS value; else fail giving strerror - * for RV and CONTEXT message. */ -void apr_assert_success(abts_case* tc, const char *context, apr_status_t rv); - -void initialize(void); - -abts_suite *teststrmatch(abts_suite *suite); -abts_suite *testuri(abts_suite *suite); -abts_suite *testuuid(abts_suite *suite); -abts_suite *testbuckets(abts_suite *suite); -abts_suite *testpass(abts_suite *suite); -abts_suite *testmd4(abts_suite *suite); -abts_suite *testmd5(abts_suite *suite); -abts_suite *testldap(abts_suite *suite); -abts_suite *testdbd(abts_suite *suite); - -#endif /* APR_TEST_INCLUDES */ diff --git a/libs/apr-util/test/testuuid.c b/libs/apr-util/test/testuuid.c deleted file mode 100644 index 2bd6ef37fb8..00000000000 --- a/libs/apr-util/test/testuuid.c +++ /dev/null @@ -1,56 +0,0 @@ -/* Copyright 2000-2005 The Apache Software Foundation or its licensors, as - * applicable. - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -#include "testutil.h" -#include "apr_general.h" -#include "apr_uuid.h" - -static void test_uuid_parse(abts_case *tc, void *data) -{ - apr_uuid_t uuid; - apr_uuid_t uuid2; - char buf[APR_UUID_FORMATTED_LENGTH + 1]; - - apr_uuid_get(&uuid); - apr_uuid_format(buf, &uuid); - - apr_uuid_parse(&uuid2, buf); - ABTS_ASSERT(tc, "parse produced a different UUID", - memcmp(&uuid, &uuid2, sizeof(uuid)) == 0); -} - -static void test_gen2(abts_case *tc, void *data) -{ - apr_uuid_t uuid; - apr_uuid_t uuid2; - - /* generate two of them quickly */ - apr_uuid_get(&uuid); - apr_uuid_get(&uuid2); - - ABTS_ASSERT(tc, "generated the same UUID twice", - memcmp(&uuid, &uuid2, sizeof(uuid)) != 0); -} - -abts_suite *testuuid(abts_suite *suite) -{ - suite = ADD_SUITE(suite); - - abts_run_test(suite, test_uuid_parse, NULL); - abts_run_test(suite, test_gen2, NULL); - - return suite; -} diff --git a/libs/apr-util/test/testxlate.c b/libs/apr-util/test/testxlate.c deleted file mode 100644 index f6819914f0c..00000000000 --- a/libs/apr-util/test/testxlate.c +++ /dev/null @@ -1,124 +0,0 @@ -/* Copyright 2000-2005 The Apache Software Foundation or its licensors, as - * applicable. - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -#include -#include - -#include "apr.h" -#include "apr_errno.h" -#include "apr_general.h" -#include "apr_strings.h" -#include "apr_xlate.h" - -static const char test_utf8[] = "Edelwei\xc3\x9f"; -static const char test_utf7[] = "Edelwei+AN8-"; -static const char test_latin1[] = "Edelwei\xdf"; -static const char test_latin2[] = "Edelwei\xdf"; - - -static int check_status (apr_status_t status, const char *msg) -{ - if (status) - { - static char buf[1024]; - printf("ERROR: %s\n %s\n", msg, - apr_strerror(status, buf, sizeof(buf))); - return 1; - } - return 0; -} - -static int test_conversion (apr_xlate_t *convset, - const char *inbuf, - const char *expected) -{ - static char buf[1024]; - int retcode = 0; - apr_size_t inbytes_left = strlen(inbuf); - apr_size_t outbytes_left = sizeof(buf) - 1; - apr_status_t status = apr_xlate_conv_buffer(convset, - inbuf, - &inbytes_left, - buf, - &outbytes_left); - if (status == APR_SUCCESS) { - status = apr_xlate_conv_buffer(convset, NULL, NULL, - buf + sizeof(buf) - outbytes_left - 1, - &outbytes_left); - } - buf[sizeof(buf) - outbytes_left - 1] = '\0'; - retcode |= check_status(status, "apr_xlate_conv_buffer"); - if ((!status || APR_STATUS_IS_INCOMPLETE(status)) - && strcmp(buf, expected)) - { - printf("ERROR: expected: '%s'\n actual: '%s'" - "\n inbytes_left: %"APR_SIZE_T_FMT"\n", - expected, buf, inbytes_left); - retcode |= 1; - } - return retcode; -} - -static int one_test (const char *cs1, const char *cs2, - const char *str1, const char *str2, - apr_pool_t *pool) -{ - apr_xlate_t *convset; - const char *msg = apr_psprintf(pool, "apr_xlate_open(%s, %s)", cs2, cs1); - int retcode = check_status(apr_xlate_open(&convset, cs2, cs1, pool), msg); - if (!retcode) - { - retcode |= test_conversion(convset, str1, str2); - retcode |= check_status(apr_xlate_close(convset), "apr_xlate_close"); - } - printf("%s: %s -> %s\n", (retcode ? "FAIL" : "PASS"), cs1, cs2); - return retcode; -} - - -int main (int argc, char **argv) -{ - apr_pool_t *pool; - int retcode = 0; - -#ifndef APR_HAS_XLATE - puts("SKIP: apr_xlate not implemented"); - return 0; -#endif - - apr_initialize(); - atexit(apr_terminate); - apr_pool_create(&pool, NULL); - - /* 1. Identity transformation: UTF-8 -> UTF-8 */ - retcode |= one_test("UTF-8", "UTF-8", test_utf8, test_utf8, pool); - - /* 2. UTF-8 <-> ISO-8859-1 */ - retcode |= one_test("UTF-8", "ISO-8859-1", test_utf8, test_latin1, pool); - retcode |= one_test("ISO-8859-1", "UTF-8", test_latin1, test_utf8, pool); - - /* 3. ISO-8859-1 <-> ISO-8859-2, identity */ - retcode |= one_test("ISO-8859-1", "ISO-8859-2", - test_latin1, test_latin2, pool); - retcode |= one_test("ISO-8859-2", "ISO-8859-1", - test_latin2, test_latin1, pool); - - /* 4. Transformation using charset aliases */ - retcode |= one_test("UTF-8", "UTF-7", test_utf8, test_utf7, pool); - retcode |= one_test("UTF-7", "UTF-8", test_utf7, test_utf8, pool); - - return retcode; -} diff --git a/libs/apr-util/test/testxml.c b/libs/apr-util/test/testxml.c deleted file mode 100644 index 9808f210658..00000000000 --- a/libs/apr-util/test/testxml.c +++ /dev/null @@ -1,219 +0,0 @@ -/* Copyright 2000-2005 The Apache Software Foundation or its licensors, as - * applicable. - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -#include "apr.h" -#include "apr_general.h" -#include "apr_xml.h" - -#if APR_HAVE_STDLIB_H -#include /* for exit() */ -#endif - -static const char *progname; -static const char *usage = "%s [xmlfile]\nIt will create " - "a dummy XML file if none is supplied"; -/* - * If our platform knows about the tmpnam() external buffer size, create - * a buffer to pass in. This is needed in a threaded environment, or - * one that thinks it is (like HP-UX). - */ - -#ifdef L_tmpnam -static char tname_buf[L_tmpnam]; -#else -static char *tname_buf = NULL; -#endif - -static apr_status_t create_dummy_file_error(apr_pool_t *p, apr_file_t **fd) -{ - apr_status_t rv; - char *tmpfile; - int i; - apr_off_t off = 0L; - tmpfile = tmpnam(tname_buf); - - if ((tmpfile == NULL) || (*tmpfile == '\0')) { - fprintf(stderr, "unable to generate temporary filename\n"); - if (errno == 0) { - errno = ENOENT; - } - perror("tmpnam"); - return APR_ENOENT; - } - rv = apr_file_open(fd, tmpfile, APR_CREATE|APR_TRUNCATE|APR_DELONCLOSE| - APR_READ|APR_WRITE|APR_EXCL, APR_OS_DEFAULT, p); - - if (rv != APR_SUCCESS) - return rv; - rv = apr_file_puts("\n" - "\n", *fd); - if (rv != APR_SUCCESS) - return rv; - - for (i = 0; i < 5000; i++) { - rv = apr_file_puts("yummy\n", *fd); - if (rv != APR_SUCCESS) - return rv; - } - rv = apr_file_puts("\n", *fd); - if (rv != APR_SUCCESS) - return rv; - - return apr_file_seek(*fd, APR_SET, &off); -} - -static apr_status_t create_dummy_file(apr_pool_t *p, apr_file_t **fd) -{ - apr_status_t rv; - char *tmpfile; - int i; - apr_off_t off = 0L; - tmpfile = tmpnam(tname_buf); - - if ((tmpfile == NULL) || (*tmpfile == '\0')) { - fprintf(stderr, "unable to generate temporary filename\n"); - if (errno == 0) { - errno = ENOENT; - } - perror("tmpnam"); - return APR_ENOENT; - } - rv = apr_file_open(fd, tmpfile, APR_CREATE|APR_TRUNCATE|APR_DELONCLOSE| - APR_READ|APR_WRITE|APR_EXCL, APR_OS_DEFAULT, p); - - if (rv != APR_SUCCESS) - return rv; - rv = apr_file_puts("\n" - "\n", *fd); - if (rv != APR_SUCCESS) - return rv; - - for (i = 0; i < 5000; i++) { - rv = apr_file_puts("yummy\n", *fd); - if (rv != APR_SUCCESS) - return rv; - } - rv = apr_file_puts("\n", *fd); - if (rv != APR_SUCCESS) - return rv; - - rv = apr_file_seek(*fd, APR_SET, &off); - return rv; -} - -static void dump_xml(apr_xml_elem *e, int level) -{ - apr_xml_attr *a; - apr_xml_elem *ec; - - printf("%d: element %s\n", level, e->name); - if (e->attr) { - a = e->attr; - printf("%d:\tattrs\t", level); - while (a) { - printf("%s=%s\t", a->name, a->value); - a = a->next; - } - printf("\n"); - } - if (e->first_child) { - ec = e->first_child; - while (ec) { - dump_xml(ec, level + 1); - ec = ec->next; - } - } -} - -static void oops(const char *s1, const char *s2, apr_status_t rv) -{ - if (progname) - fprintf(stderr, "%s: ", progname); - fprintf(stderr, s1, s2); - if (rv != APR_SUCCESS) { - char buf[120]; - - fprintf(stderr, " (%s)", apr_strerror(rv, buf, sizeof buf)); - } - fprintf(stderr, "\n"); - exit(1); -} - -int main(int argc, const char *const * argv) -{ - apr_pool_t *pool; - apr_file_t *fd; - apr_xml_parser *parser; - apr_xml_doc *doc; - apr_status_t rv; - char errbuf[2000]; - char errbufXML[2000]; - - (void) apr_initialize(); - apr_pool_create(&pool, NULL); - progname = argv[0]; - if (argc == 1) { - rv = create_dummy_file(pool, &fd); - if (rv != APR_SUCCESS) { - oops("cannot create dummy file", "oops", rv); - } - } - else { - if (argc == 2) { - rv = apr_file_open(&fd, argv[1], APR_READ, APR_OS_DEFAULT, pool); - if (rv != APR_SUCCESS) { - oops("cannot open: %s", argv[1], rv); - } - } - else { - oops("usage: %s", usage, 0); - } - } - rv = apr_xml_parse_file(pool, &parser, &doc, fd, 2000); - if (rv != APR_SUCCESS) { - fprintf(stderr, "APR Error %s\nXML Error: %s\n", - apr_strerror(rv, errbuf, sizeof(errbuf)), - apr_xml_parser_geterror(parser, errbufXML, sizeof(errbufXML))); - return rv; - } - dump_xml(doc->root, 0); - apr_file_close(fd); - if (argc == 1) { - rv = create_dummy_file_error(pool, &fd); - if (rv != APR_SUCCESS) { - oops("cannot create error dummy file", "oops", rv); - } - rv = apr_xml_parse_file(pool, &parser, &doc, fd, 2000); - if (rv != APR_SUCCESS) { - fprintf(stdout, "APR Error %s\nXML Error: %s " - "(EXPECTED) This is good.\n", - apr_strerror(rv, errbuf, sizeof(errbuf)), - apr_xml_parser_geterror(parser, errbufXML, sizeof(errbufXML))); - rv = APR_SUCCESS; /* reset the return code, as the test is supposed to get this error */ - } - else { - fprintf(stderr, "Expected an error, but didn't get one ;( "); - return APR_EGENERAL; - } - } - apr_pool_destroy(pool); - apr_terminate(); - return rv; -} diff --git a/libs/apr-util/uri/NWGNUmakefile b/libs/apr-util/uri/NWGNUmakefile deleted file mode 100644 index bf97c96f6ef..00000000000 --- a/libs/apr-util/uri/NWGNUmakefile +++ /dev/null @@ -1,257 +0,0 @@ -# -# NWGNUmakefile for GenUri.nlm (Apache2) -# Declare the sub-directories to be built here -# - -SUBDIRS = \ - $(EOLIST) - -# -# Get the 'head' of the build environment. This includes default targets and -# paths to tools -# - -include $(APR_WORK)\build\NWGNUhead.inc - -# -# build this level's files - -# -# Make sure all needed macro's are defined -# - -# -# These directories will be at the beginning of the include list, followed by -# INCDIRS -# -XINCDIRS += \ - $(APR)/include/arch/NetWare \ - $(APR)/include \ - $(APRUTIL)/include \ - $(APRUTIL)/include/private \ - $(APRUTIL)/xml/expat/lib \ - $(EOLIST) - -# -# These flags will come after CFLAGS -# -XCFLAGS += \ - $(EOLIST) - -# -# These defines will come after DEFINES -# -XDEFINES += \ - $(EOLIST) - -# -# These flags will be added to the link.opt file -# -XLFLAGS += \ - $(EOLIST) - -# -# These values will be appended to the correct variables based on the value of -# RELEASE -# -ifeq "$(RELEASE)" "debug" -XINCDIRS += \ - $(EOLIST) - -XCFLAGS += \ - $(EOLIST) - -XDEFINES += \ - $(EOLIST) - -XLFLAGS += \ - $(EOLIST) -endif - -ifeq "$(RELEASE)" "noopt" -XINCDIRS += \ - $(EOLIST) - -XCFLAGS += \ - $(EOLIST) - -XDEFINES += \ - $(EOLIST) - -XLFLAGS += \ - $(EOLIST) -endif - -ifeq "$(RELEASE)" "release" -XINCDIRS += \ - $(EOLIST) - -XCFLAGS += \ - $(EOLIST) - -XDEFINES += \ - $(EOLIST) - -XLFLAGS += \ - $(EOLIST) -endif - -# -# These are used by the link target if an NLM is being generated -# This is used by the link 'name' directive to name the nlm. If left blank -# TARGET_nlm (see below) will be used. -# -NLM_NAME = Genuri - -# -# This is used by the link '-desc ' directive. -# If left blank, NLM_NAME will be used. -# -NLM_DESCRIPTION = Generate URI Delimiters - -# -# This is used by the '-threadname' directive. If left blank, -# NLM_NAME Thread will be used. -# -NLM_THREAD_NAME = genuri - -# -# If this is specified, it will override VERSION value in -# $(APR_WORK)\build\NWGNUenvironment.inc -# -NLM_VERSION = 1,0,0 - -# -# If this is specified, it will override the default of 64K -# -NLM_STACK_SIZE = 8192 - -# -# If this is specified it will be used by the link '-entry' directive -# -NLM_ENTRY_SYM =_LibCPrelude - -# -# If this is specified it will be used by the link '-exit' directive -# -NLM_EXIT_SYM =_LibCPostlude - -# -# If this is specified it will be used by the link '-check' directive -# -NLM_CHECK_SYM = - -# -# If this is specified it will be used by the link '-flags' directive -# -NLM_FLAGS = PSEUDOPREEMPTION - -# -# If this is specified it will be linked in with the XDCData option in the def -# file instead of the default of $(APR)/misc/netware/apr.xdc. XDCData can -# be disabled by setting APACHE_UNIPROC in the environment -# -XDCDATA = - -# -# Declare all target files (you must add your files here) -# - -# -# If there is an NLM target, put it here -# -TARGET_nlm = \ -$(OBJDIR)/Genuri.nlm \ - $(EOLIST) - -# -# If there is an LIB target, put it here -# -TARGET_lib = \ - $(EOLIST) - -# -# These are the OBJ files needed to create the NLM target above. -# Paths must all use the '/' character -# -FILES_nlm_objs = \ - $(OBJDIR)/gen_uri_delims.o \ - $(EOLIST) - -# -# These are the LIB files needed to create the NLM target above. -# These will be added as a library command in the link.opt file. -# -FILES_nlm_libs = \ - libcpre.o \ - $(EOLIST) - -# -# These are the modules that the above NLM target depends on to load. -# These will be added as a module command in the link.opt file. -# -FILES_nlm_modules = \ - Libc \ - $(EOLIST) - -# -# If the nlm has a msg file, put it's path here -# -FILE_nlm_msg = - -# -# If the nlm has a hlp file put it's path here -# -FILE_nlm_hlp = - -# -# If this is specified, it will override $(NWOS)\copyright.txt. -# -FILE_nlm_copyright = - -# -# Any additional imports go here -# -FILES_nlm_Ximports = \ - @libc.imp \ - $(EOLIST) - -# -# Any symbols exported to here -# -FILES_nlm_exports = \ - $(EOLIST) - -# -# These are the OBJ files needed to create the LIB target above. -# Paths must all use the '/' character -# -FILES_lib_objs = \ - $(EOLIST) - -# -# implement targets and dependancies (leave this section alone) -# - -libs :: $(OBJDIR) $(TARGET_lib) - -nlms :: libs $(TARGET_nlm) - -# -# Updated this target to create necessary directories and copy files to the -# correct place. (See $(APR_WORK)\build\NWGNUhead.inc for examples) -# -install :: nlms FORCE - -# -# Any specialized rules here -# - - -# -# Include the 'tail' makefile that has targets that depend on variables defined -# in this makefile -# - -include $(APR_WORK)\build\NWGNUtail.inc - diff --git a/libs/apr-util/uri/apr_uri.c b/libs/apr-util/uri/apr_uri.c deleted file mode 100644 index 3245c19a41a..00000000000 --- a/libs/apr-util/uri/apr_uri.c +++ /dev/null @@ -1,462 +0,0 @@ -/* Copyright 2000-2005 The Apache Software Foundation or its licensors, as - * applicable. - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -/* - * apr_uri.c: URI related utility things - * - */ - -#include - -#include "apu.h" -#include "apr.h" -#include "apr_general.h" -#include "apr_strings.h" - -#define APR_WANT_STRFUNC -#include "apr_want.h" - -#include "apr_uri.h" - -typedef struct schemes_t schemes_t; - -/** Structure to store various schemes and their default ports */ -struct schemes_t { - /** The name of the scheme */ - const char *name; - /** The default port for the scheme */ - apr_port_t default_port; -}; - -/* Some WWW schemes and their default ports; this is basically /etc/services */ -/* This will become global when the protocol abstraction comes */ -/* As the schemes are searched by a linear search, */ -/* they are sorted by their expected frequency */ -static schemes_t schemes[] = -{ - {"http", APR_URI_HTTP_DEFAULT_PORT}, - {"ftp", APR_URI_FTP_DEFAULT_PORT}, - {"https", APR_URI_HTTPS_DEFAULT_PORT}, - {"gopher", APR_URI_GOPHER_DEFAULT_PORT}, - {"ldap", APR_URI_LDAP_DEFAULT_PORT}, - {"nntp", APR_URI_NNTP_DEFAULT_PORT}, - {"snews", APR_URI_SNEWS_DEFAULT_PORT}, - {"imap", APR_URI_IMAP_DEFAULT_PORT}, - {"pop", APR_URI_POP_DEFAULT_PORT}, - {"sip", APR_URI_SIP_DEFAULT_PORT}, - {"rtsp", APR_URI_RTSP_DEFAULT_PORT}, - {"wais", APR_URI_WAIS_DEFAULT_PORT}, - {"z39.50r", APR_URI_WAIS_DEFAULT_PORT}, - {"z39.50s", APR_URI_WAIS_DEFAULT_PORT}, - {"prospero", APR_URI_PROSPERO_DEFAULT_PORT}, - {"nfs", APR_URI_NFS_DEFAULT_PORT}, - {"tip", APR_URI_TIP_DEFAULT_PORT}, - {"acap", APR_URI_ACAP_DEFAULT_PORT}, - {"telnet", APR_URI_TELNET_DEFAULT_PORT}, - {"ssh", APR_URI_SSH_DEFAULT_PORT}, - { NULL, 0xFFFF } /* unknown port */ -}; - -APU_DECLARE(apr_port_t) apr_uri_port_of_scheme(const char *scheme_str) -{ - schemes_t *scheme; - - if (scheme_str) { - for (scheme = schemes; scheme->name != NULL; ++scheme) { - if (strcasecmp(scheme_str, scheme->name) == 0) { - return scheme->default_port; - } - } - } - return 0; -} - -/* Unparse a apr_uri_t structure to an URI string. - * Optionally suppress the password for security reasons. - */ -APU_DECLARE(char *) apr_uri_unparse(apr_pool_t *p, - const apr_uri_t *uptr, - unsigned flags) -{ - char *ret = ""; - - /* If suppressing the site part, omit both user name & scheme://hostname */ - if (!(flags & APR_URI_UNP_OMITSITEPART)) { - - /* Construct a "user:password@" string, honoring the passed - * APR_URI_UNP_ flags: */ - if (uptr->user || uptr->password) { - ret = apr_pstrcat(p, - (uptr->user && !(flags & APR_URI_UNP_OMITUSER)) - ? uptr->user : "", - (uptr->password && !(flags & APR_URI_UNP_OMITPASSWORD)) - ? ":" : "", - (uptr->password && !(flags & APR_URI_UNP_OMITPASSWORD)) - ? ((flags & APR_URI_UNP_REVEALPASSWORD) - ? uptr->password : "XXXXXXXX") - : "", - ((uptr->user && !(flags & APR_URI_UNP_OMITUSER)) || - (uptr->password && !(flags & APR_URI_UNP_OMITPASSWORD))) - ? "@" : "", - NULL); - } - - /* Construct scheme://site string */ - if (uptr->hostname) { - int is_default_port; - const char *lbrk = "", *rbrk = ""; - - if (strchr(uptr->hostname, ':')) { /* v6 literal */ - lbrk = "["; - rbrk = "]"; - } - - is_default_port = - (uptr->port_str == NULL || - uptr->port == 0 || - uptr->port == apr_uri_port_of_scheme(uptr->scheme)); - - if (uptr->scheme) { - ret = apr_pstrcat(p, - uptr->scheme, "://", ret, - lbrk, uptr->hostname, rbrk, - is_default_port ? "" : ":", - is_default_port ? "" : uptr->port_str, - NULL); - } - else { - /* A violation of RFC2396, but it is clear from section 3.2 - * that the : belongs above to the scheme, while // belongs - * to the authority, so include the authority prefix while - * omitting the "scheme:" that the user neglected to pass us. - */ - ret = apr_pstrcat(p, - "//", ret, lbrk, uptr->hostname, rbrk, - is_default_port ? "" : ":", - is_default_port ? "" : uptr->port_str, - NULL); - } - } - } - - /* Should we suppress all path info? */ - if (!(flags & APR_URI_UNP_OMITPATHINFO)) { - /* Append path, query and fragment strings: */ - ret = apr_pstrcat(p, - ret, - (uptr->path) - ? uptr->path : "", - (uptr->query && !(flags & APR_URI_UNP_OMITQUERY)) - ? "?" : "", - (uptr->query && !(flags & APR_URI_UNP_OMITQUERY)) - ? uptr->query : "", - (uptr->fragment && !(flags & APR_URI_UNP_OMITQUERY)) - ? "#" : NULL, - (uptr->fragment && !(flags & APR_URI_UNP_OMITQUERY)) - ? uptr->fragment : NULL, - NULL); - } - return ret; -} - -/* Here is the hand-optimized parse_uri_components(). There are some wild - * tricks we could pull in assembly language that we don't pull here... like we - * can do word-at-time scans for delimiter characters using the same technique - * that fast memchr()s use. But that would be way non-portable. -djg - */ - -/* We have a apr_table_t that we can index by character and it tells us if the - * character is one of the interesting delimiters. Note that we even get - * compares for NUL for free -- it's just another delimiter. - */ - -#define T_COLON 0x01 /* ':' */ -#define T_SLASH 0x02 /* '/' */ -#define T_QUESTION 0x04 /* '?' */ -#define T_HASH 0x08 /* '#' */ -#define T_NUL 0x80 /* '\0' */ - -#if APR_CHARSET_EBCDIC -/* Delimiter table for the EBCDIC character set */ -static const unsigned char uri_delims[256] = { - T_NUL,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, - 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, - 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, - 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, - 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, - 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, - 0,T_SLASH,0,0,0,0,0,0,0,0,0,0,0,0,0,T_QUESTION, - 0,0,0,0,0,0,0,0,0,0,T_COLON,T_HASH,0,0,0,0, - 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, - 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, - 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, - 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, - 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, - 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, - 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, - 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 -}; -#else -/* Delimiter table for the ASCII character set */ -static const unsigned char uri_delims[256] = { - T_NUL,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, - 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, - 0,0,0,T_HASH,0,0,0,0,0,0,0,0,0,0,0,T_SLASH, - 0,0,0,0,0,0,0,0,0,0,T_COLON,0,0,0,0,T_QUESTION, - 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, - 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, - 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, - 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, - 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, - 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, - 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, - 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, - 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, - 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, - 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, - 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 -}; -#endif - - -/* it works like this: - if (uri_delims[ch] & NOTEND_foobar) { - then we're not at a delimiter for foobar - } -*/ - -/* Note that we optimize the scheme scanning here, we cheat and let the - * compiler know that it doesn't have to do the & masking. - */ -#define NOTEND_SCHEME (0xff) -#define NOTEND_HOSTINFO (T_SLASH | T_QUESTION | T_HASH | T_NUL) -#define NOTEND_PATH (T_QUESTION | T_HASH | T_NUL) - -/* parse_uri_components(): - * Parse a given URI, fill in all supplied fields of a uri_components - * structure. This eliminates the necessity of extracting host, port, - * path, query info repeatedly in the modules. - * Side effects: - * - fills in fields of uri_components *uptr - * - none on any of the r->* fields - */ -APU_DECLARE(apr_status_t) apr_uri_parse(apr_pool_t *p, const char *uri, - apr_uri_t *uptr) -{ - const char *s; - const char *s1; - const char *hostinfo; - char *endstr; - int port; - int v6_offset1 = 0, v6_offset2 = 0; - - /* Initialize the structure. parse_uri() and parse_uri_components() - * can be called more than once per request. - */ - memset (uptr, '\0', sizeof(*uptr)); - uptr->is_initialized = 1; - - /* We assume the processor has a branch predictor like most -- - * it assumes forward branches are untaken and backwards are taken. That's - * the reason for the gotos. -djg - */ - if (uri[0] == '/') { - /* RFC2396 #4.3 says that two leading slashes mean we have an - * authority component, not a path! Fixing this looks scary - * with the gotos here. But if the existing logic is valid, - * then presumably a goto pointing to deal_with_authority works. - * - * RFC2396 describes this as resolving an ambiguity. In the - * case of three or more slashes there would seem to be no - * ambiguity, so it is a path after all. - */ - if (uri[1] == '/' && uri[2] != '/') { - s = uri + 2 ; - goto deal_with_authority ; - } - -deal_with_path: - /* we expect uri to point to first character of path ... remember - * that the path could be empty -- http://foobar?query for example - */ - s = uri; - while ((uri_delims[*(unsigned char *)s] & NOTEND_PATH) == 0) { - ++s; - } - if (s != uri) { - uptr->path = apr_pstrmemdup(p, uri, s - uri); - } - if (*s == 0) { - return APR_SUCCESS; - } - if (*s == '?') { - ++s; - s1 = strchr(s, '#'); - if (s1) { - uptr->fragment = apr_pstrdup(p, s1 + 1); - uptr->query = apr_pstrmemdup(p, s, s1 - s); - } - else { - uptr->query = apr_pstrdup(p, s); - } - return APR_SUCCESS; - } - /* otherwise it's a fragment */ - uptr->fragment = apr_pstrdup(p, s + 1); - return APR_SUCCESS; - } - - /* find the scheme: */ - s = uri; - while ((uri_delims[*(unsigned char *)s] & NOTEND_SCHEME) == 0) { - ++s; - } - /* scheme must be non-empty and followed by :// */ - if (s == uri || s[0] != ':' || s[1] != '/' || s[2] != '/') { - goto deal_with_path; /* backwards predicted taken! */ - } - - uptr->scheme = apr_pstrmemdup(p, uri, s - uri); - s += 3; - -deal_with_authority: - hostinfo = s; - while ((uri_delims[*(unsigned char *)s] & NOTEND_HOSTINFO) == 0) { - ++s; - } - uri = s; /* whatever follows hostinfo is start of uri */ - uptr->hostinfo = apr_pstrmemdup(p, hostinfo, uri - hostinfo); - - /* If there's a username:password@host:port, the @ we want is the last @... - * too bad there's no memrchr()... For the C purists, note that hostinfo - * is definately not the first character of the original uri so therefore - * &hostinfo[-1] < &hostinfo[0] ... and this loop is valid C. - */ - do { - --s; - } while (s >= hostinfo && *s != '@'); - if (s < hostinfo) { - /* again we want the common case to be fall through */ -deal_with_host: - /* We expect hostinfo to point to the first character of - * the hostname. If there's a port it is the first colon, - * except with IPv6. - */ - if (*hostinfo == '[') { - v6_offset1 = 1; - v6_offset2 = 2; - s = memchr(hostinfo, ']', uri - hostinfo); - if (s == NULL) { - return APR_EGENERAL; - } - if (*++s != ':') { - s = NULL; /* no port */ - } - } - else { - s = memchr(hostinfo, ':', uri - hostinfo); - } - if (s == NULL) { - /* we expect the common case to have no port */ - uptr->hostname = apr_pstrmemdup(p, - hostinfo + v6_offset1, - uri - hostinfo - v6_offset2); - goto deal_with_path; - } - uptr->hostname = apr_pstrmemdup(p, - hostinfo + v6_offset1, - s - hostinfo - v6_offset2); - ++s; - uptr->port_str = apr_pstrmemdup(p, s, uri - s); - if (uri != s) { - port = strtol(uptr->port_str, &endstr, 10); - uptr->port = port; - if (*endstr == '\0') { - goto deal_with_path; - } - /* Invalid characters after ':' found */ - return APR_EGENERAL; - } - uptr->port = apr_uri_port_of_scheme(uptr->scheme); - goto deal_with_path; - } - - /* first colon delimits username:password */ - s1 = memchr(hostinfo, ':', s - hostinfo); - if (s1) { - uptr->user = apr_pstrmemdup(p, hostinfo, s1 - hostinfo); - ++s1; - uptr->password = apr_pstrmemdup(p, s1, s - s1); - } - else { - uptr->user = apr_pstrmemdup(p, hostinfo, s - hostinfo); - } - hostinfo = s + 1; - goto deal_with_host; -} - -/* Special case for CONNECT parsing: it comes with the hostinfo part only */ -/* See the INTERNET-DRAFT document "Tunneling SSL Through a WWW Proxy" - * currently at http://www.mcom.com/newsref/std/tunneling_ssl.html - * for the format of the "CONNECT host:port HTTP/1.0" request - */ -APU_DECLARE(apr_status_t) apr_uri_parse_hostinfo(apr_pool_t *p, - const char *hostinfo, - apr_uri_t *uptr) -{ - const char *s; - char *endstr; - const char *rsb; - int v6_offset1 = 0; - - /* Initialize the structure. parse_uri() and parse_uri_components() - * can be called more than once per request. - */ - memset(uptr, '\0', sizeof(*uptr)); - uptr->is_initialized = 1; - uptr->hostinfo = apr_pstrdup(p, hostinfo); - - /* We expect hostinfo to point to the first character of - * the hostname. There must be a port, separated by a colon - */ - if (*hostinfo == '[') { - if ((rsb = strchr(hostinfo, ']')) == NULL || - *(rsb + 1) != ':') { - return APR_EGENERAL; - } - /* literal IPv6 address */ - s = rsb + 1; - ++hostinfo; - v6_offset1 = 1; - } - else { - s = strchr(hostinfo, ':'); - } - if (s == NULL) { - return APR_EGENERAL; - } - uptr->hostname = apr_pstrndup(p, hostinfo, s - hostinfo - v6_offset1); - ++s; - uptr->port_str = apr_pstrdup(p, s); - if (*s != '\0') { - uptr->port = (unsigned short) strtol(uptr->port_str, &endstr, 10); - if (*endstr == '\0') { - return APR_SUCCESS; - } - /* Invalid characters after ':' found */ - } - return APR_EGENERAL; -} diff --git a/libs/apr-util/xlate/xlate.c b/libs/apr-util/xlate/xlate.c deleted file mode 100644 index 5e955ef2584..00000000000 --- a/libs/apr-util/xlate/xlate.c +++ /dev/null @@ -1,458 +0,0 @@ -/* Copyright 2000-2005 The Apache Software Foundation or its licensors, as - * applicable. - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -#include "apu.h" -#include "apu_config.h" -#include "apr_lib.h" -#include "apr_strings.h" -#include "apr_portable.h" -#include "apr_xlate.h" - -/* If no implementation is available, don't generate code here since - * apr_xlate.h emitted macros which return APR_ENOTIMPL. - */ - -#if APR_HAS_XLATE - -#ifdef HAVE_STDDEF_H -#include /* for NULL */ -#endif -#if APR_HAVE_STRING_H -#include -#endif -#if APR_HAVE_STRINGS_H -#include -#endif -#ifdef HAVE_ICONV_H -#include -#endif -#if APU_HAVE_APR_ICONV -#include -#endif - -#if defined(APU_ICONV_INBUF_CONST) || APU_HAVE_APR_ICONV -#define ICONV_INBUF_TYPE const char ** -#else -#define ICONV_INBUF_TYPE char ** -#endif - -#ifndef min -#define min(x,y) ((x) <= (y) ? (x) : (y)) -#endif - -struct apr_xlate_t { - apr_pool_t *pool; - char *frompage; - char *topage; - char *sbcs_table; -#if APU_HAVE_ICONV - iconv_t ich; -#elif APU_HAVE_APR_ICONV - apr_iconv_t ich; -#endif -}; - - -static const char *handle_special_names(const char *page, apr_pool_t *pool) -{ - if (page == APR_DEFAULT_CHARSET) { - return apr_os_default_encoding(pool); - } - else if (page == APR_LOCALE_CHARSET) { - return apr_os_locale_encoding(pool); - } - else { - return page; - } -} - -static apr_status_t apr_xlate_cleanup(void *convset) -{ - apr_xlate_t *old = convset; - -#if APU_HAVE_APR_ICONV - if (old->ich != (apr_iconv_t)-1) { - return apr_iconv_close(old->ich, old->pool); - } - -#elif APU_HAVE_ICONV - if (old->ich != (iconv_t)-1) { - if (iconv_close(old->ich)) { - int rv = errno; - - /* Sometimes, iconv is not good about setting errno. */ - return rv ? rv : APR_EINVAL; - } - } -#endif - - return APR_SUCCESS; -} - -#if APU_HAVE_ICONV -static void check_sbcs(apr_xlate_t *convset) -{ - char inbuf[256], outbuf[256]; - char *inbufptr = inbuf; - char *outbufptr = outbuf; - apr_size_t inbytes_left, outbytes_left; - int i; - apr_size_t translated; - - for (i = 0; i < sizeof(inbuf); i++) { - inbuf[i] = i; - } - - inbytes_left = outbytes_left = sizeof(inbuf); - translated = iconv(convset->ich, (ICONV_INBUF_TYPE)&inbufptr, - &inbytes_left, &outbufptr, &outbytes_left); - - if (translated != (apr_size_t)-1 - && inbytes_left == 0 - && outbytes_left == 0) { - /* hurray... this is simple translation; save the table, - * close the iconv descriptor - */ - - convset->sbcs_table = apr_palloc(convset->pool, sizeof(outbuf)); - memcpy(convset->sbcs_table, outbuf, sizeof(outbuf)); - iconv_close(convset->ich); - convset->ich = (iconv_t)-1; - - /* TODO: add the table to the cache */ - } - else { - /* reset the iconv descriptor, since it's now in an undefined - * state. */ - iconv_close(convset->ich); - convset->ich = iconv_open(convset->topage, convset->frompage); - } -} -#elif APU_HAVE_APR_ICONV -static void check_sbcs(apr_xlate_t *convset) -{ - char inbuf[256], outbuf[256]; - char *inbufptr = inbuf; - char *outbufptr = outbuf; - apr_size_t inbytes_left, outbytes_left; - int i; - apr_size_t translated; - apr_status_t rv; - - for (i = 0; i < sizeof(inbuf); i++) { - inbuf[i] = i; - } - - inbytes_left = outbytes_left = sizeof(inbuf); - rv = apr_iconv(convset->ich, (ICONV_INBUF_TYPE)&inbufptr, - &inbytes_left, &outbufptr, &outbytes_left, - &translated); - - if ((rv == APR_SUCCESS) - && (translated != (apr_size_t)-1) - && inbytes_left == 0 - && outbytes_left == 0) { - /* hurray... this is simple translation; save the table, - * close the iconv descriptor - */ - - convset->sbcs_table = apr_palloc(convset->pool, sizeof(outbuf)); - memcpy(convset->sbcs_table, outbuf, sizeof(outbuf)); - apr_iconv_close(convset->ich, convset->pool); - convset->ich = (apr_iconv_t)-1; - - /* TODO: add the table to the cache */ - } - else { - /* reset the iconv descriptor, since it's now in an undefined - * state. */ - apr_iconv_close(convset->ich, convset->pool); - rv = apr_iconv_open(convset->topage, convset->frompage, - convset->pool, &convset->ich); - } -} -#endif /* APU_HAVE_APR_ICONV */ - -static void make_identity_table(apr_xlate_t *convset) -{ - int i; - - convset->sbcs_table = apr_palloc(convset->pool, 256); - for (i = 0; i < 256; i++) - convset->sbcs_table[i] = i; -} - -APU_DECLARE(apr_status_t) apr_xlate_open(apr_xlate_t **convset, - const char *topage, - const char *frompage, - apr_pool_t *pool) -{ - apr_status_t rv; - apr_xlate_t *new; - int found = 0; - - *convset = NULL; - - topage = handle_special_names(topage, pool); - frompage = handle_special_names(frompage, pool); - - new = (apr_xlate_t *)apr_pcalloc(pool, sizeof(apr_xlate_t)); - if (!new) { - return APR_ENOMEM; - } - - new->pool = pool; - new->topage = apr_pstrdup(pool, topage); - new->frompage = apr_pstrdup(pool, frompage); - if (!new->topage || !new->frompage) { - return APR_ENOMEM; - } - -#ifdef TODO - /* search cache of codepage pairs; we may be able to avoid the - * expensive iconv_open() - */ - - set found to non-zero if found in the cache -#endif - - if ((! found) && (strcmp(topage, frompage) == 0)) { - /* to and from are the same */ - found = 1; - make_identity_table(new); - } - -#if APU_HAVE_APR_ICONV - if (!found) { - rv = apr_iconv_open(topage, frompage, pool, &new->ich); - if (rv != APR_SUCCESS) { - return rv; - } - found = 1; - check_sbcs(new); - } else - new->ich = (apr_iconv_t)-1; - -#elif APU_HAVE_ICONV - if (!found) { - new->ich = iconv_open(topage, frompage); - if (new->ich == (iconv_t)-1) { - int rv = errno; - /* Sometimes, iconv is not good about setting errno. */ - return rv ? rv : APR_EINVAL; - } - found = 1; - check_sbcs(new); - } else - new->ich = (iconv_t)-1; -#endif /* APU_HAVE_ICONV */ - - if (found) { - *convset = new; - apr_pool_cleanup_register(pool, (void *)new, apr_xlate_cleanup, - apr_pool_cleanup_null); - rv = APR_SUCCESS; - } - else { - rv = APR_EINVAL; /* iconv() would return EINVAL if it - couldn't handle the pair */ - } - - return rv; -} - -APU_DECLARE(apr_status_t) apr_xlate_sb_get(apr_xlate_t *convset, int *onoff) -{ - *onoff = convset->sbcs_table != NULL; - return APR_SUCCESS; -} - -APU_DECLARE(apr_status_t) apr_xlate_conv_buffer(apr_xlate_t *convset, - const char *inbuf, - apr_size_t *inbytes_left, - char *outbuf, - apr_size_t *outbytes_left) -{ - apr_status_t status = APR_SUCCESS; - -#if APU_HAVE_APR_ICONV - if (convset->ich != (apr_iconv_t)-1) { - const char *inbufptr = inbuf; - apr_size_t translated; - char *outbufptr = outbuf; - status = apr_iconv(convset->ich, &inbufptr, inbytes_left, - &outbufptr, outbytes_left, &translated); - - /* If everything went fine but we ran out of buffer, don't - * report it as an error. Caller needs to look at the two - * bytes-left values anyway. - * - * There are three expected cases where rc is -1. In each of - * these cases, *inbytes_left != 0. - * a) the non-error condition where we ran out of output - * buffer - * b) the non-error condition where we ran out of input (i.e., - * the last input character is incomplete) - * c) the error condition where the input is invalid - */ - switch (status) { - - case E2BIG: /* out of space on output */ - status = 0; /* change table lookup code below if you - make this an error */ - break; - - case EINVAL: /* input character not complete (yet) */ - status = APR_INCOMPLETE; - break; - - case EILSEQ: /* bad input byte */ - status = APR_EINVAL; - break; - - /* Sometimes, iconv is not good about setting errno. */ - case 0: - if (*inbytes_left) - status = APR_INCOMPLETE; - break; - - default: - break; - } - } - else - -#elif APU_HAVE_ICONV - if (convset->ich != (iconv_t)-1) { - const char *inbufptr = inbuf; - char *outbufptr = outbuf; - apr_size_t translated; - translated = iconv(convset->ich, (ICONV_INBUF_TYPE)&inbufptr, - inbytes_left, &outbufptr, outbytes_left); - - /* If everything went fine but we ran out of buffer, don't - * report it as an error. Caller needs to look at the two - * bytes-left values anyway. - * - * There are three expected cases where rc is -1. In each of - * these cases, *inbytes_left != 0. - * a) the non-error condition where we ran out of output - * buffer - * b) the non-error condition where we ran out of input (i.e., - * the last input character is incomplete) - * c) the error condition where the input is invalid - */ - if (translated == (apr_size_t)-1) { - int rv = errno; - switch (rv) { - - case E2BIG: /* out of space on output */ - status = 0; /* change table lookup code below if you - make this an error */ - break; - - case EINVAL: /* input character not complete (yet) */ - status = APR_INCOMPLETE; - break; - - case EILSEQ: /* bad input byte */ - status = APR_EINVAL; - break; - - /* Sometimes, iconv is not good about setting errno. */ - case 0: - status = APR_INCOMPLETE; - break; - - default: - status = rv; - break; - } - } - } - else -#endif - - if (inbuf) { - int to_convert = min(*inbytes_left, *outbytes_left); - int converted = to_convert; - char *table = convset->sbcs_table; - - while (to_convert) { - *outbuf = table[(unsigned char)*inbuf]; - ++outbuf; - ++inbuf; - --to_convert; - } - *inbytes_left -= converted; - *outbytes_left -= converted; - } - - return status; -} - -APU_DECLARE(apr_int32_t) apr_xlate_conv_byte(apr_xlate_t *convset, - unsigned char inchar) -{ - if (convset->sbcs_table) { - return convset->sbcs_table[inchar]; - } - else { - return -1; - } -} - -APU_DECLARE(apr_status_t) apr_xlate_close(apr_xlate_t *convset) -{ - return apr_pool_cleanup_run(convset->pool, convset, apr_xlate_cleanup); -} - -#else /* !APR_HAS_XLATE */ - -APU_DECLARE(apr_status_t) apr_xlate_open(apr_xlate_t **convset, - const char *topage, - const char *frompage, - apr_pool_t *pool) -{ - return APR_ENOTIMPL; -} - -APU_DECLARE(apr_status_t) apr_xlate_sb_get(apr_xlate_t *convset, int *onoff) -{ - return APR_ENOTIMPL; -} - -APU_DECLARE(apr_int32_t) apr_xlate_conv_byte(apr_xlate_t *convset, - unsigned char inchar) -{ - return (-1); -} - -APU_DECLARE(apr_status_t) apr_xlate_conv_buffer(apr_xlate_t *convset, - const char *inbuf, - apr_size_t *inbytes_left, - char *outbuf, - apr_size_t *outbytes_left) -{ - return APR_ENOTIMPL; -} - -APU_DECLARE(apr_status_t) apr_xlate_close(apr_xlate_t *convset) -{ - return APR_ENOTIMPL; -} - -#endif /* APR_HAS_XLATE */ diff --git a/libs/apr-util/xml/NWGNUmakefile b/libs/apr-util/xml/NWGNUmakefile deleted file mode 100644 index 5f85964f6ca..00000000000 --- a/libs/apr-util/xml/NWGNUmakefile +++ /dev/null @@ -1,258 +0,0 @@ -# -# Declare the sub-directories to be built here -# - -SUBDIRS = \ - $(EOLIST) - -# -# Get the 'head' of the build environment. This includes default targets and -# paths to tools -# - -include $(APR_WORK)\build\NWGNUhead.inc - -# -# build this level's files - -# -# Make sure all needed macro's are defined -# - -# -# These directories will be at the beginning of the include list, followed by -# INCDIRS -# -XINCDIRS += \ - $(APR)/include \ - $(APR)/include/arch/NetWare \ - $(APRUTIL)/include \ - $(APRUTIL)/uri \ - $(APRUTIL)/dbm/sdbm \ - $(APRUTIL)/include/private \ - $(APRUTIL)/xml/expat/lib \ - $(EOLIST) - -# -# These flags will come after CFLAGS -# -XCFLAGS += \ - $(EOLIST) - -# -# These defines will come after DEFINES -# -XDEFINES += \ - $(EOLIST) - -# -# These flags will be added to the link.opt file -# -XLFLAGS += \ - $(EOLIST) - -# -# These values will be appended to the correct variables based on the value of -# RELEASE -# -ifeq "$(RELEASE)" "debug" -XINCDIRS += \ - $(EOLIST) - -XCFLAGS += \ - $(EOLIST) - -XDEFINES += \ - $(EOLIST) - -XLFLAGS += \ - $(EOLIST) -endif - -ifeq "$(RELEASE)" "noopt" -XINCDIRS += \ - $(EOLIST) - -XCFLAGS += \ - $(EOLIST) - -XDEFINES += \ - $(EOLIST) - -XLFLAGS += \ - $(EOLIST) -endif - -ifeq "$(RELEASE)" "release" -XINCDIRS += \ - $(EOLIST) - -XCFLAGS += \ - $(EOLIST) - -XDEFINES += \ - $(EOLIST) - -XLFLAGS += \ - $(EOLIST) -endif - -# -# These are used by the link target if an NLM is being generated -# This is used by the link 'name' directive to name the nlm. If left blank -# TARGET_nlm (see below) will be used. -# -NLM_NAME = - -# -# This is used by the link '-desc ' directive. -# If left blank, NLM_NAME will be used. -# -NLM_DESCRIPTION = - -# -# This is used by the '-threadname' directive. If left blank, -# NLM_NAME Thread will be used. -# -NLM_THREAD_NAME = -# -# If this is specified, it will override VERSION value in -# $(APR_WORK)\build\NWGNUenvironment.inc -# -NLM_VERSION = - -# -# If this is specified, it will override the default of 64K -# -NLM_STACK_SIZE = - -# -# If this is specified it will be used by the link '-entry' directive -# -NLM_ENTRY_SYM = - -# -# If this is specified it will be used by the link '-exit' directive -# -NLM_EXIT_SYM = - -# -# If this is specified it will be used by the link '-check' directive -# -NLM_CHECK_SYM = - -# -# If this is specified it will be used by the link '-flags' directive -# -NLM_FLAGS = - -# -# If this is specified it will be linked in with the XDCData option in the def -# file instead of the default of $(APR)/misc/netware/apache.xdc. XDCData can -# be disabled by setting APACHE_UNIPROC in the environment -# -XDCDATA = - -# -# Declare all target files (you must add your files here) -# - -# -# If there is an NLM target, put it here -# -TARGET_nlm = \ - $(EOLIST) - -# -# If there is an LIB target, put it here -# -TARGET_lib = \ - $(OBJDIR)/xmllib.lib \ - $(EOLIST) - -# -# These are the OBJ files needed to create the NLM target above. -# Paths must all use the '/' character -# -FILES_nlm_objs = \ - $(EOLIST) - -# -# These are the LIB files needed to create the NLM target above. -# These will be added as a library command in the link.opt file. -# -FILES_nlm_libs = \ - $(EOLIST) - -# -# These are the modules that the above NLM target depends on to load. -# These will be added as a module command in the link.opt file. -# -FILES_nlm_modules = \ - $(EOLIST) - -# -# If the nlm has a msg file, put it's path here -# -FILE_nlm_msg = - -# -# If the nlm has a hlp file put it's path here -# -FILE_nlm_hlp = - -# -# If this is specified, it will override the default copyright. -# -FILE_nlm_copyright = - -# -# Any additional imports go here -# -FILES_nlm_Ximports = \ - $(EOLIST) - -# -# Any symbols exported to here -# -FILES_nlm_exports = \ - $(EOLIST) - -# -# These are the OBJ files needed to create the LIB target above. -# Paths must all use the '/' character -# -FILES_lib_objs = \ - $(OBJDIR)/apr_xml.o \ - $(OBJDIR)/xmlparse.o \ - $(OBJDIR)/xmlrole.o \ - $(OBJDIR)/xmltok.o \ - $(EOLIST) - -# -# implement targets and dependancies (leave this section alone) -# - -libs :: $(OBJDIR) $(TARGET_lib) - -nlms :: libs $(TARGET_nlm) - -# -# Updated this target to create necessary directories and copy files to the -# correct place. (See $(APR_WORK)\build\NWGNUhead.inc for examples) -# -install :: nlms FORCE - -# -# Any specialized rules here -# - -vpath %.c expat/lib - -# -# Include the 'tail' makefile that has targets that depend on variables defined -# in this makefile -# - -include $(APR_WORK)\build\NWGNUtail.inc - diff --git a/libs/apr-util/xml/apr_xml.c b/libs/apr-util/xml/apr_xml.c deleted file mode 100644 index a05348d60f5..00000000000 --- a/libs/apr-util/xml/apr_xml.c +++ /dev/null @@ -1,976 +0,0 @@ -/* Copyright 2000-2005 The Apache Software Foundation or its licensors, as - * applicable. - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -#include "apr.h" -#include "apr_strings.h" - -#define APR_WANT_STDIO /* for sprintf() */ -#define APR_WANT_STRFUNC -#include "apr_want.h" - -#include "apr_xml.h" - -#include "apu_config.h" - -#ifdef APR_HAVE_OLD_EXPAT -#include "xmlparse.h" -#else -#include "expat.h" -#endif - -#define DEBUG_CR "\r\n" - -static const char APR_KW_xmlns[] = { 0x78, 0x6D, 0x6C, 0x6E, 0x73, '\0' }; -static const char APR_KW_xmlns_lang[] = { 0x78, 0x6D, 0x6C, 0x3A, 0x6C, 0x61, 0x6E, 0x67, '\0' }; -static const char APR_KW_DAV[] = { 0x44, 0x41, 0x56, 0x3A, '\0' }; - -/* errors related to namespace processing */ -#define APR_XML_NS_ERROR_UNKNOWN_PREFIX (-1000) -#define APR_XML_NS_ERROR_INVALID_DECL (-1001) - -/* test for a namespace prefix that begins with [Xx][Mm][Ll] */ -#define APR_XML_NS_IS_RESERVED(name) \ - ( (name[0] == 0x58 || name[0] == 0x78) && \ - (name[1] == 0x4D || name[1] == 0x6D) && \ - (name[2] == 0x4C || name[2] == 0x6C) ) - - -/* the real (internal) definition of the parser context */ -struct apr_xml_parser { - apr_xml_doc *doc; /* the doc we're parsing */ - apr_pool_t *p; /* the pool we allocate from */ - apr_xml_elem *cur_elem; /* current element */ - - int error; /* an error has occurred */ -#define APR_XML_ERROR_EXPAT 1 -#define APR_XML_ERROR_PARSE_DONE 2 -/* also: public APR_XML_NS_ERROR_* values (if any) */ - - XML_Parser xp; /* the actual (Expat) XML parser */ - enum XML_Error xp_err; /* stored Expat error code */ -}; - -/* struct for scoping namespace declarations */ -typedef struct apr_xml_ns_scope { - const char *prefix; /* prefix used for this ns */ - int ns; /* index into namespace table */ - int emptyURI; /* the namespace URI is the empty string */ - struct apr_xml_ns_scope *next; /* next scoped namespace */ -} apr_xml_ns_scope; - - -/* return namespace table index for a given prefix */ -static int find_prefix(apr_xml_parser *parser, const char *prefix) -{ - apr_xml_elem *elem = parser->cur_elem; - - /* - ** Walk up the tree, looking for a namespace scope that defines this - ** prefix. - */ - for (; elem; elem = elem->parent) { - apr_xml_ns_scope *ns_scope; - - for (ns_scope = elem->ns_scope; ns_scope; ns_scope = ns_scope->next) { - if (strcmp(prefix, ns_scope->prefix) == 0) { - if (ns_scope->emptyURI) { - /* - ** It is possible to set the default namespace to an - ** empty URI string; this resets the default namespace - ** to mean "no namespace." We just found the prefix - ** refers to an empty URI, so return "no namespace." - */ - return APR_XML_NS_NONE; - } - - return ns_scope->ns; - } - } - } - - /* - * If the prefix is empty (""), this means that a prefix was not - * specified in the element/attribute. The search that was performed - * just above did not locate a default namespace URI (which is stored - * into ns_scope with an empty prefix). This means the element/attribute - * has "no namespace". We have a reserved value for this. - */ - if (*prefix == '\0') { - return APR_XML_NS_NONE; - } - - /* not found */ - return APR_XML_NS_ERROR_UNKNOWN_PREFIX; -} - -static void start_handler(void *userdata, const char *name, const char **attrs) -{ - apr_xml_parser *parser = userdata; - apr_xml_elem *elem; - apr_xml_attr *attr; - apr_xml_attr *prev; - char *colon; - const char *quoted; - char *elem_name; - - /* punt once we find an error */ - if (parser->error) - return; - - elem = apr_pcalloc(parser->p, sizeof(*elem)); - - /* prep the element */ - elem->name = elem_name = apr_pstrdup(parser->p, name); - - /* fill in the attributes (note: ends up in reverse order) */ - while (*attrs) { - attr = apr_palloc(parser->p, sizeof(*attr)); - attr->name = apr_pstrdup(parser->p, *attrs++); - attr->value = apr_pstrdup(parser->p, *attrs++); - attr->next = elem->attr; - elem->attr = attr; - } - - /* hook the element into the tree */ - if (parser->cur_elem == NULL) { - /* no current element; this also becomes the root */ - parser->cur_elem = parser->doc->root = elem; - } - else { - /* this element appeared within the current elem */ - elem->parent = parser->cur_elem; - - /* set up the child/sibling links */ - if (elem->parent->last_child == NULL) { - /* no first child either */ - elem->parent->first_child = elem->parent->last_child = elem; - } - else { - /* hook onto the end of the parent's children */ - elem->parent->last_child->next = elem; - elem->parent->last_child = elem; - } - - /* this element is now the current element */ - parser->cur_elem = elem; - } - - /* scan the attributes for namespace declarations */ - for (prev = NULL, attr = elem->attr; - attr; - attr = attr->next) { - if (strncmp(attr->name, APR_KW_xmlns, 5) == 0) { - const char *prefix = &attr->name[5]; - apr_xml_ns_scope *ns_scope; - - /* test for xmlns:foo= form and xmlns= form */ - if (*prefix == 0x3A) { - /* a namespace prefix declaration must have a - non-empty value. */ - if (attr->value[0] == '\0') { - parser->error = APR_XML_NS_ERROR_INVALID_DECL; - return; - } - ++prefix; - } - else if (*prefix != '\0') { - /* advance "prev" since "attr" is still present */ - prev = attr; - continue; - } - - /* quote the URI before we ever start working with it */ - quoted = apr_xml_quote_string(parser->p, attr->value, 1); - - /* build and insert the new scope */ - ns_scope = apr_pcalloc(parser->p, sizeof(*ns_scope)); - ns_scope->prefix = prefix; - ns_scope->ns = apr_xml_insert_uri(parser->doc->namespaces, quoted); - ns_scope->emptyURI = *quoted == '\0'; - ns_scope->next = elem->ns_scope; - elem->ns_scope = ns_scope; - - /* remove this attribute from the element */ - if (prev == NULL) - elem->attr = attr->next; - else - prev->next = attr->next; - - /* Note: prev will not be advanced since we just removed "attr" */ - } - else if (strcmp(attr->name, APR_KW_xmlns_lang) == 0) { - /* save away the language (in quoted form) */ - elem->lang = apr_xml_quote_string(parser->p, attr->value, 1); - - /* remove this attribute from the element */ - if (prev == NULL) - elem->attr = attr->next; - else - prev->next = attr->next; - - /* Note: prev will not be advanced since we just removed "attr" */ - } - else { - /* advance "prev" since "attr" is still present */ - prev = attr; - } - } - - /* - ** If an xml:lang attribute didn't exist (lang==NULL), then copy the - ** language from the parent element (if present). - ** - ** NOTE: elem_size() *depends* upon this pointer equality. - */ - if (elem->lang == NULL && elem->parent != NULL) - elem->lang = elem->parent->lang; - - /* adjust the element's namespace */ - colon = strchr(elem_name, 0x3A); - if (colon == NULL) { - /* - * The element is using the default namespace, which will always - * be found. Either it will be "no namespace", or a default - * namespace URI has been specified at some point. - */ - elem->ns = find_prefix(parser, ""); - } - else if (APR_XML_NS_IS_RESERVED(elem->name)) { - elem->ns = APR_XML_NS_NONE; - } - else { - *colon = '\0'; - elem->ns = find_prefix(parser, elem->name); - elem->name = colon + 1; - - if (APR_XML_NS_IS_ERROR(elem->ns)) { - parser->error = elem->ns; - return; - } - } - - /* adjust all remaining attributes' namespaces */ - for (attr = elem->attr; attr; attr = attr->next) { - /* - * apr_xml_attr defines this as "const" but we dup'd it, so we - * know that we can change it. a bit hacky, but the existing - * structure def is best. - */ - char *attr_name = (char *)attr->name; - - colon = strchr(attr_name, 0x3A); - if (colon == NULL) { - /* - * Attributes do NOT use the default namespace. Therefore, - * we place them into the "no namespace" category. - */ - attr->ns = APR_XML_NS_NONE; - } - else if (APR_XML_NS_IS_RESERVED(attr->name)) { - attr->ns = APR_XML_NS_NONE; - } - else { - *colon = '\0'; - attr->ns = find_prefix(parser, attr->name); - attr->name = colon + 1; - - if (APR_XML_NS_IS_ERROR(attr->ns)) { - parser->error = attr->ns; - return; - } - } - } -} - -static void end_handler(void *userdata, const char *name) -{ - apr_xml_parser *parser = userdata; - - /* punt once we find an error */ - if (parser->error) - return; - - /* pop up one level */ - parser->cur_elem = parser->cur_elem->parent; -} - -static void cdata_handler(void *userdata, const char *data, int len) -{ - apr_xml_parser *parser = userdata; - apr_xml_elem *elem; - apr_text_header *hdr; - const char *s; - - /* punt once we find an error */ - if (parser->error) - return; - - elem = parser->cur_elem; - s = apr_pstrndup(parser->p, data, len); - - if (elem->last_child == NULL) { - /* no children yet. this cdata follows the start tag */ - hdr = &elem->first_cdata; - } - else { - /* child elements exist. this cdata follows the last child. */ - hdr = &elem->last_child->following_cdata; - } - - apr_text_append(parser->p, hdr, s); -} - -static apr_status_t cleanup_parser(void *ctx) -{ - apr_xml_parser *parser = ctx; - - XML_ParserFree(parser->xp); - parser->xp = NULL; - - return APR_SUCCESS; -} - -APU_DECLARE(apr_xml_parser *) apr_xml_parser_create(apr_pool_t *pool) -{ - apr_xml_parser *parser = apr_pcalloc(pool, sizeof(*parser)); - - parser->p = pool; - parser->doc = apr_pcalloc(pool, sizeof(*parser->doc)); - - parser->doc->namespaces = apr_array_make(pool, 5, sizeof(const char *)); - - /* ### is there a way to avoid hard-coding this? */ - apr_xml_insert_uri(parser->doc->namespaces, APR_KW_DAV); - - parser->xp = XML_ParserCreate(NULL); - if (parser->xp == NULL) { - (*apr_pool_abort_get(pool))(APR_ENOMEM); - return NULL; - } - - apr_pool_cleanup_register(pool, parser, cleanup_parser, - apr_pool_cleanup_null); - - XML_SetUserData(parser->xp, parser); - XML_SetElementHandler(parser->xp, start_handler, end_handler); - XML_SetCharacterDataHandler(parser->xp, cdata_handler); - - return parser; -} - -static apr_status_t do_parse(apr_xml_parser *parser, - const char *data, apr_size_t len, - int is_final) -{ - if (parser->xp == NULL) { - parser->error = APR_XML_ERROR_PARSE_DONE; - } - else { - int rv = XML_Parse(parser->xp, data, len, is_final); - - if (rv == 0) { - parser->error = APR_XML_ERROR_EXPAT; - parser->xp_err = XML_GetErrorCode(parser->xp); - } - } - - /* ### better error code? */ - return parser->error ? APR_EGENERAL : APR_SUCCESS; -} - -APU_DECLARE(apr_status_t) apr_xml_parser_feed(apr_xml_parser *parser, - const char *data, - apr_size_t len) -{ - return do_parse(parser, data, len, 0 /* is_final */); -} - -APU_DECLARE(apr_status_t) apr_xml_parser_done(apr_xml_parser *parser, - apr_xml_doc **pdoc) -{ - char end; - apr_status_t status = do_parse(parser, &end, 0, 1 /* is_final */); - - /* get rid of the parser */ - (void) apr_pool_cleanup_run(parser->p, parser, cleanup_parser); - - if (status) - return status; - - if (pdoc != NULL) - *pdoc = parser->doc; - return APR_SUCCESS; -} - -APU_DECLARE(char *) apr_xml_parser_geterror(apr_xml_parser *parser, - char *errbuf, - apr_size_t errbufsize) -{ - int error = parser->error; - const char *msg; - - /* clear our record of an error */ - parser->error = 0; - - switch (error) { - case 0: - msg = "No error."; - break; - - case APR_XML_NS_ERROR_UNKNOWN_PREFIX: - msg = "An undefined namespace prefix was used."; - break; - - case APR_XML_NS_ERROR_INVALID_DECL: - msg = "A namespace prefix was defined with an empty URI."; - break; - - case APR_XML_ERROR_EXPAT: - (void) apr_snprintf(errbuf, errbufsize, - "XML parser error code: %s (%d)", - XML_ErrorString(parser->xp_err), parser->xp_err); - return errbuf; - - case APR_XML_ERROR_PARSE_DONE: - msg = "The parser is not active."; - break; - - default: - msg = "There was an unknown error within the XML body."; - break; - } - - (void) apr_cpystrn(errbuf, msg, errbufsize); - return errbuf; -} - -APU_DECLARE(apr_status_t) apr_xml_parse_file(apr_pool_t *p, - apr_xml_parser **parser, - apr_xml_doc **ppdoc, - apr_file_t *xmlfd, - apr_size_t buffer_length) -{ - apr_status_t rv; - char *buffer; - apr_size_t length; - - *parser = apr_xml_parser_create(p); - if (*parser == NULL) { - /* FIXME: returning an error code would be nice, - * but we dont get one ;( */ - return APR_EGENERAL; - } - buffer = apr_palloc(p, buffer_length); - length = buffer_length; - - rv = apr_file_read(xmlfd, buffer, &length); - - while (rv == APR_SUCCESS) { - rv = apr_xml_parser_feed(*parser, buffer, length); - if (rv != APR_SUCCESS) { - return rv; - } - - length = buffer_length; - rv = apr_file_read(xmlfd, buffer, &length); - } - if (rv != APR_EOF) { - return rv; - } - rv = apr_xml_parser_done(*parser, ppdoc); - *parser = NULL; - return rv; -} - -APU_DECLARE(void) apr_text_append(apr_pool_t * p, apr_text_header *hdr, - const char *text) -{ - apr_text *t = apr_palloc(p, sizeof(*t)); - - t->text = text; - t->next = NULL; - - if (hdr->first == NULL) { - /* no text elements yet */ - hdr->first = hdr->last = t; - } - else { - /* append to the last text element */ - hdr->last->next = t; - hdr->last = t; - } -} - - -/* --------------------------------------------------------------- -** -** XML UTILITY FUNCTIONS -*/ - -/* -** apr_xml_quote_string: quote an XML string -** -** Replace '<', '>', and '&' with '<', '>', and '&'. -** If quotes is true, then replace '"' with '"'. -** -** quotes is typically set to true for XML strings that will occur within -** double quotes -- attribute values. -*/ -APU_DECLARE(const char *) apr_xml_quote_string(apr_pool_t *p, const char *s, - int quotes) -{ - const char *scan; - apr_size_t len = 0; - apr_size_t extra = 0; - char *qstr; - char *qscan; - char c; - - for (scan = s; (c = *scan) != '\0'; ++scan, ++len) { - if (c == '<' || c == '>') - extra += 3; /* < or > */ - else if (c == '&') - extra += 4; /* & */ - else if (quotes && c == '"') - extra += 5; /* " */ - } - - /* nothing to do? */ - if (extra == 0) - return s; - - qstr = apr_palloc(p, len + extra + 1); - for (scan = s, qscan = qstr; (c = *scan) != '\0'; ++scan) { - if (c == '<') { - *qscan++ = '&'; - *qscan++ = 'l'; - *qscan++ = 't'; - *qscan++ = ';'; - } - else if (c == '>') { - *qscan++ = '&'; - *qscan++ = 'g'; - *qscan++ = 't'; - *qscan++ = ';'; - } - else if (c == '&') { - *qscan++ = '&'; - *qscan++ = 'a'; - *qscan++ = 'm'; - *qscan++ = 'p'; - *qscan++ = ';'; - } - else if (quotes && c == '"') { - *qscan++ = '&'; - *qscan++ = 'q'; - *qscan++ = 'u'; - *qscan++ = 'o'; - *qscan++ = 't'; - *qscan++ = ';'; - } - else { - *qscan++ = c; - } - } - - *qscan = '\0'; - return qstr; -} - -/* how many characters for the given integer? */ -#define APR_XML_NS_LEN(ns) ((ns) < 10 ? 1 : (ns) < 100 ? 2 : (ns) < 1000 ? 3 : \ - (ns) < 10000 ? 4 : (ns) < 100000 ? 5 : \ - (ns) < 1000000 ? 6 : (ns) < 10000000 ? 7 : \ - (ns) < 100000000 ? 8 : (ns) < 1000000000 ? 9 : 10) - -static apr_size_t text_size(const apr_text *t) -{ - apr_size_t size = 0; - - for (; t; t = t->next) - size += strlen(t->text); - return size; -} - -static apr_size_t elem_size(const apr_xml_elem *elem, int style, - apr_array_header_t *namespaces, int *ns_map) -{ - apr_size_t size; - - if (style == APR_XML_X2T_FULL || style == APR_XML_X2T_FULL_NS_LANG) { - const apr_xml_attr *attr; - - size = 0; - - if (style == APR_XML_X2T_FULL_NS_LANG) { - int i; - - /* - ** The outer element will contain xmlns:ns%d="%s" attributes - ** and an xml:lang attribute, if applicable. - */ - - for (i = namespaces->nelts; i--;) { - /* compute size of: ' xmlns:ns%d="%s"' */ - size += (9 + APR_XML_NS_LEN(i) + 2 + - strlen(APR_XML_GET_URI_ITEM(namespaces, i)) + 1); - } - - if (elem->lang != NULL) { - /* compute size of: ' xml:lang="%s"' */ - size += 11 + strlen(elem->lang) + 1; - } - } - - if (elem->ns == APR_XML_NS_NONE) { - /* compute size of: <%s> */ - size += 1 + strlen(elem->name) + 1; - } - else { - int ns = ns_map ? ns_map[elem->ns] : elem->ns; - - /* compute size of: */ - size += 3 + APR_XML_NS_LEN(ns) + 1 + strlen(elem->name) + 1; - } - - if (APR_XML_ELEM_IS_EMPTY(elem)) { - /* insert a closing "/" */ - size += 1; - } - else { - /* - * two of above plus "/": - * ... - * OR <%s> ... - */ - size = 2 * size + 1; - } - - for (attr = elem->attr; attr; attr = attr->next) { - if (attr->ns == APR_XML_NS_NONE) { - /* compute size of: ' %s="%s"' */ - size += 1 + strlen(attr->name) + 2 + strlen(attr->value) + 1; - } - else { - /* compute size of: ' ns%d:%s="%s"' */ - size += 3 + APR_XML_NS_LEN(attr->ns) + 1 + strlen(attr->name) + 2 + strlen(attr->value) + 1; - } - } - - /* - ** If the element has an xml:lang value that is *different* from - ** its parent, then add the thing in: ' xml:lang="%s"'. - ** - ** NOTE: we take advantage of the pointer equality established by - ** the parsing for "inheriting" the xml:lang values from parents. - */ - if (elem->lang != NULL && - (elem->parent == NULL || elem->lang != elem->parent->lang)) { - size += 11 + strlen(elem->lang) + 1; - } - } - else if (style == APR_XML_X2T_LANG_INNER) { - /* - * This style prepends the xml:lang value plus a null terminator. - * If a lang value is not present, then we insert a null term. - */ - size = elem->lang ? strlen(elem->lang) + 1 : 1; - } - else - size = 0; - - size += text_size(elem->first_cdata.first); - - for (elem = elem->first_child; elem; elem = elem->next) { - /* the size of the child element plus the CDATA that follows it */ - size += (elem_size(elem, APR_XML_X2T_FULL, NULL, ns_map) + - text_size(elem->following_cdata.first)); - } - - return size; -} - -static char *write_text(char *s, const apr_text *t) -{ - for (; t; t = t->next) { - apr_size_t len = strlen(t->text); - memcpy(s, t->text, len); - s += len; - } - return s; -} - -static char *write_elem(char *s, const apr_xml_elem *elem, int style, - apr_array_header_t *namespaces, int *ns_map) -{ - const apr_xml_elem *child; - apr_size_t len; - int ns; - - if (style == APR_XML_X2T_FULL || style == APR_XML_X2T_FULL_NS_LANG) { - int empty = APR_XML_ELEM_IS_EMPTY(elem); - const apr_xml_attr *attr; - - if (elem->ns == APR_XML_NS_NONE) { - len = sprintf(s, "<%s", elem->name); - } - else { - ns = ns_map ? ns_map[elem->ns] : elem->ns; - len = sprintf(s, "name); - } - s += len; - - for (attr = elem->attr; attr; attr = attr->next) { - if (attr->ns == APR_XML_NS_NONE) - len = sprintf(s, " %s=\"%s\"", attr->name, attr->value); - else - len = sprintf(s, " ns%d:%s=\"%s\"", attr->ns, attr->name, attr->value); - s += len; - } - - /* add the xml:lang value if necessary */ - if (elem->lang != NULL && - (style == APR_XML_X2T_FULL_NS_LANG || - elem->parent == NULL || - elem->lang != elem->parent->lang)) { - len = sprintf(s, " xml:lang=\"%s\"", elem->lang); - s += len; - } - - /* add namespace definitions, if required */ - if (style == APR_XML_X2T_FULL_NS_LANG) { - int i; - - for (i = namespaces->nelts; i--;) { - len = sprintf(s, " xmlns:ns%d=\"%s\"", i, - APR_XML_GET_URI_ITEM(namespaces, i)); - s += len; - } - } - - /* no more to do. close it up and go. */ - if (empty) { - *s++ = '/'; - *s++ = '>'; - return s; - } - - /* just close it */ - *s++ = '>'; - } - else if (style == APR_XML_X2T_LANG_INNER) { - /* prepend the xml:lang value */ - if (elem->lang != NULL) { - len = strlen(elem->lang); - memcpy(s, elem->lang, len); - s += len; - } - *s++ = '\0'; - } - - s = write_text(s, elem->first_cdata.first); - - for (child = elem->first_child; child; child = child->next) { - s = write_elem(s, child, APR_XML_X2T_FULL, NULL, ns_map); - s = write_text(s, child->following_cdata.first); - } - - if (style == APR_XML_X2T_FULL || style == APR_XML_X2T_FULL_NS_LANG) { - if (elem->ns == APR_XML_NS_NONE) { - len = sprintf(s, "", elem->name); - } - else { - ns = ns_map ? ns_map[elem->ns] : elem->ns; - len = sprintf(s, "", ns, elem->name); - } - s += len; - } - - return s; -} - -APU_DECLARE(void) apr_xml_quote_elem(apr_pool_t *p, apr_xml_elem *elem) -{ - apr_text *scan_txt; - apr_xml_attr *scan_attr; - apr_xml_elem *scan_elem; - - /* convert the element's text */ - for (scan_txt = elem->first_cdata.first; - scan_txt != NULL; - scan_txt = scan_txt->next) { - scan_txt->text = apr_xml_quote_string(p, scan_txt->text, 0); - } - for (scan_txt = elem->following_cdata.first; - scan_txt != NULL; - scan_txt = scan_txt->next) { - scan_txt->text = apr_xml_quote_string(p, scan_txt->text, 0); - } - - /* convert the attribute values */ - for (scan_attr = elem->attr; - scan_attr != NULL; - scan_attr = scan_attr->next) { - scan_attr->value = apr_xml_quote_string(p, scan_attr->value, 1); - } - - /* convert the child elements */ - for (scan_elem = elem->first_child; - scan_elem != NULL; - scan_elem = scan_elem->next) { - apr_xml_quote_elem(p, scan_elem); - } -} - -/* convert an element to a text string */ -APU_DECLARE(void) apr_xml_to_text(apr_pool_t * p, const apr_xml_elem *elem, - int style, apr_array_header_t *namespaces, - int *ns_map, const char **pbuf, - apr_size_t *psize) -{ - /* get the exact size, plus a null terminator */ - apr_size_t size = elem_size(elem, style, namespaces, ns_map) + 1; - char *s = apr_palloc(p, size); - - (void) write_elem(s, elem, style, namespaces, ns_map); - s[size - 1] = '\0'; - - *pbuf = s; - if (psize) - *psize = size; -} - -APU_DECLARE(const char *) apr_xml_empty_elem(apr_pool_t * p, - const apr_xml_elem *elem) -{ - if (elem->ns == APR_XML_NS_NONE) { - /* - * The prefix (xml...) is already within the prop name, or - * the element simply has no prefix. - */ - return apr_psprintf(p, "<%s/>" DEBUG_CR, elem->name); - } - - return apr_psprintf(p, "" DEBUG_CR, elem->ns, elem->name); -} - -/* return the URI's (existing) index, or insert it and return a new index */ -APU_DECLARE(int) apr_xml_insert_uri(apr_array_header_t *uri_array, - const char *uri) -{ - int i; - const char **pelt; - - /* never insert an empty URI; this index is always APR_XML_NS_NONE */ - if (*uri == '\0') - return APR_XML_NS_NONE; - - for (i = uri_array->nelts; i--;) { - if (strcmp(uri, APR_XML_GET_URI_ITEM(uri_array, i)) == 0) - return i; - } - - pelt = apr_array_push(uri_array); - *pelt = uri; /* assume uri is const or in a pool */ - return uri_array->nelts - 1; -} - -/* convert the element to EBCDIC */ -#if APR_CHARSET_EBCDIC -static apr_status_t apr_xml_parser_convert_elem(apr_xml_elem *e, - apr_xlate_t *convset) -{ - apr_xml_attr *a; - apr_xml_elem *ec; - apr_text *t; - apr_size_t inbytes_left, outbytes_left; - apr_status_t status; - - inbytes_left = outbytes_left = strlen(e->name); - status = apr_xlate_conv_buffer(convset, e->name, &inbytes_left, (char *) e->name, &outbytes_left); - if (status) { - return status; - } - - for (t = e->first_cdata.first; t != NULL; t = t->next) { - inbytes_left = outbytes_left = strlen(t->text); - status = apr_xlate_conv_buffer(convset, t->text, &inbytes_left, (char *) t->text, &outbytes_left); - if (status) { - return status; - } - } - - for (t = e->following_cdata.first; t != NULL; t = t->next) { - inbytes_left = outbytes_left = strlen(t->text); - status = apr_xlate_conv_buffer(convset, t->text, &inbytes_left, (char *) t->text, &outbytes_left); - if (status) { - return status; - } - } - - for (a = e->attr; a != NULL; a = a->next) { - inbytes_left = outbytes_left = strlen(a->name); - status = apr_xlate_conv_buffer(convset, a->name, &inbytes_left, (char *) a->name, &outbytes_left); - if (status) { - return status; - } - inbytes_left = outbytes_left = strlen(a->value); - status = apr_xlate_conv_buffer(convset, a->value, &inbytes_left, (char *) a->value, &outbytes_left); - if (status) { - return status; - } - } - - for (ec = e->first_child; ec != NULL; ec = ec->next) { - status = apr_xml_parser_convert_elem(ec, convset); - if (status) { - return status; - } - } - return APR_SUCCESS; -} - -/* convert the whole document to EBCDIC */ -APU_DECLARE(apr_status_t) apr_xml_parser_convert_doc(apr_pool_t *pool, - apr_xml_doc *pdoc, - apr_xlate_t *convset) -{ - apr_status_t status; - /* Don't convert the namespaces: they are constant! */ - if (pdoc->namespaces != NULL) { - int i; - apr_array_header_t *namespaces; - namespaces = apr_array_make(pool, pdoc->namespaces->nelts, sizeof(const char *)); - if (namespaces == NULL) - return APR_ENOMEM; - for (i = 0; i < pdoc->namespaces->nelts; i++) { - apr_size_t inbytes_left, outbytes_left; - char *ptr = (char *) APR_XML_GET_URI_ITEM(pdoc->namespaces, i); - ptr = apr_pstrdup(pool, ptr); - if ( ptr == NULL) - return APR_ENOMEM; - inbytes_left = outbytes_left = strlen(ptr); - status = apr_xlate_conv_buffer(convset, ptr, &inbytes_left, ptr, &outbytes_left); - if (status) { - return status; - } - apr_xml_insert_uri(namespaces, ptr); - } - pdoc->namespaces = namespaces; - } - return apr_xml_parser_convert_elem(pdoc->root, convset); -} -#endif diff --git a/libs/apr-util/xml/expat/COPYING b/libs/apr-util/xml/expat/COPYING deleted file mode 100644 index fc97b02d909..00000000000 --- a/libs/apr-util/xml/expat/COPYING +++ /dev/null @@ -1,21 +0,0 @@ -Copyright (c) 1998, 1999, 2000 Thai Open Source Software Center Ltd - and Clark Cooper - -Permission is hereby granted, free of charge, to any person obtaining -a copy of this software and associated documentation files (the -"Software"), to deal in the Software without restriction, including -without limitation the rights to use, copy, modify, merge, publish, -distribute, sublicense, and/or sell copies of the Software, and to -permit persons to whom the Software is furnished to do so, subject to -the following conditions: - -The above copyright notice and this permission notice shall be included -in all copies or substantial portions of the Software. - -THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, -EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF -MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. -IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY -CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, -TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE -SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. diff --git a/libs/apr-util/xml/expat/Makefile.in b/libs/apr-util/xml/expat/Makefile.in deleted file mode 100644 index aee7a354ccc..00000000000 --- a/libs/apr-util/xml/expat/Makefile.in +++ /dev/null @@ -1,156 +0,0 @@ -################################################################ -# Process this file with top-level configure script to produce Makefile -# -# Copyright 2000 Clark Cooper -# -# This file is part of EXPAT. -# -# EXPAT is free software; you can redistribute it and/or modify it -# under the terms of the License (based on the MIT/X license) contained -# in the file COPYING that comes with this distribution. -# -# EXPAT IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, -# EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF -# MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. -# IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY -# CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, -# TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE -# SOFTWARE OR THE USE OR OTHER DEALINGS IN EXPAT. -# -# --- -# I started using automake, but -# 1) it seemed like overkill -# 2) I don't want all the GNU policies -# 3) I wanted more explicit control over what gets built -# -# So I'm doing my Makefile.in files manually. But a fair part is based -# on what I learned from perusing the Makefile.in's generated by automake, -# and the automake authors still get my kudos. -# - -SHELL = @SHELL@ - -srcdir = @srcdir@ -top_srcdir = @top_srcdir@ -VPATH = @srcdir@ -prefix = @prefix@ -exec_prefix = @exec_prefix@ - -bindir = @bindir@ -sbindir = @sbindir@ -libexecdir = @libexecdir@ -datadir = @datadir@ -sysconfdir = @sysconfdir@ -sharedstatedir = @sharedstatedir@ -localstatedir = @localstatedir@ -libdir = @libdir@ -infodir = @infodir@ -mandir = @mandir@ -includedir = @includedir@ -oldincludedir = /usr/include - -top_builddir = . - - -AUTOCONF = autoconf - -INSTALL = @INSTALL@ -INSTALL_PROGRAM = @INSTALL_PROGRAM@ -INSTALL_DATA = @INSTALL_DATA@ -INSTALL_SCRIPT = @INSTALL_SCRIPT@ - -NORMAL_INSTALL = : -PRE_INSTALL = : -POST_INSTALL = : -NORMAL_UNINSTALL = : -PRE_UNINSTALL = : -POST_UNINSTALL = : -host_alias = @host_alias@ -host_triplet = @host@ - -CC = @CC@ - -LIBTOOL = @LIBTOOL@ -LN_S = @LN_S@ -PACKAGE = @PACKAGE@ -RANLIB = @RANLIB@ -VERSION = @VERSION@ - -SUBDIRS = lib -ACLOCAL_M4 = $(top_srcdir)/aclocal.m4 -CONFIG_HEADERS = config.h - -DISTDIR = $(PACKAGE)-$(VERSION) -DISTRIBUTION = $(DISTDIR).tar.gz - -all: build-subdirs - -.PHONY: all build-subdirs clean distclean extraclean maintainer-clean dist install \ - uninstall distdir - -Makefile: Makefile.in config.status - CONFIG_FILES=$@ CONFIG_HEADERS= $(SHELL) config.status - -config.status: configure - @if test -f $@; then \ - $(SHELL) config.status --recheck ; \ - else \ - $(SHELL) configure ; \ - fi - -configure: configure.ac - $(AUTOCONF) - -config.h: config.h.in config.status - CONFIG_FILES= CONFIG_HEADERS=$(CONFIG_HEADERS) \ - $(SHELL) ./config.status - -build-subdirs: - @list='$(SUBDIRS)'; \ - for dir in $$list; do \ - cd $$dir; $(MAKE); cd ..; \ - done - -clean: - @list='$(SUBDIRS)'; for dir in $$list; do \ - cd $$dir; $(MAKE) clean; cd ..; \ - done - rm -f core *~ - -distclean: - @list='$(SUBDIRS)'; for dir in $$list; do \ - cd $$dir; $(MAKE) distclean; cd ..; \ - done - rm -f config.h config.status config.log libtool examples/Makefile xmlwf/Makefile Makefile - -extraclean: distclean - rm -f configure aclocal.m4 - -maintainer-clean: distclean - rm -f $(DISTRIBUTION) - rm -rf $(DISTDIR) - -distdir: MANIFEST - test -d $(DISTDIR) && rm -rf $(DISTDIR); \ - mkdir $(DISTDIR); \ - flist=`sed -e "s/[ ]:.*$$//" MANIFEST`; for file in $$flist; do \ - cp -P $$file $(DISTDIR); \ - done - -$(DISTRIBUTION): distdir - tar cfz $(DISTRIBUTION) $(DISTDIR) - -dist: $(DISTRIBUTION) - -install: - @list='$(SUBDIRS)'; for dir in $$list; do \ - cd $$dir; $(MAKE) install; cd ..; \ - done - -uninstall: - @list='$(SUBDIRS)'; for dir in $$list; do \ - cd $$dir; $(MAKE) uninstall; cd ..; \ - done - -depend: - echo SOMEONE SHOULD MAKE THIS DO SOMETHING!!! diff --git a/libs/apr-util/xml/expat/README b/libs/apr-util/xml/expat/README deleted file mode 100644 index 15bcdccb50b..00000000000 --- a/libs/apr-util/xml/expat/README +++ /dev/null @@ -1,72 +0,0 @@ - - Expat, Release 1.95.2 - -This is expat, a C library for parsing XML, written by James Clark. -Expat is a stream-oriented XML parser. This means that you register -handlers with the parser before starting the parse. These handlers -are called when the parser discovers the associated structures in the -document being parsed. A start tag is an example of the kind of -structures for which you may register handlers. - -Windows users should use the expat_win32bin package, which includes -both precompiled libraries and executalbes, and source code for -developers. - -Expat is free software. You may copy, distribute, and modify it under -the terms of the License contained in the file COPYING distributed -with this package. This license is the same as the MIT/X Consortium -license. - -Versions of expat that have an odd minor version (the middle number in -the release above), are development releases and should be considered -as beta software. Releases with even minor version numbers are -intended to be production grade software. - -To build expat, you first run the configuration shell script in the -top level distribution directory: - - ./configure - -There are many options which you may provide to configure (which you -can discover by running configure with the --help option). But the -one of most interest is the one that sets the installation directory. -By default, the configure script will set things up to install -libexpat into /usr/local/lib, expat.h into /usr/local/include, and -xmlwf into /usr/local/bin. If, for example, you'd prefer to install -into /home/me/mystuff/lib, /home/me/mystuff/include, and -/home/me/mystuff/bin, you can tell configure about that with: - - ./configure --prefix=/home/me/mystuff - -After running the configure script, the "make" command will build -things and "make install" will install things into their proper -location. Note that you need to have write permission into the -directories into which things will be installed. - -When building for use with C++, you may need to add additional -compiler flags to support proper interaction with exceptions. This -can be done by setting the CFLAGS environment variable. For example, -when using GCC, you can use: - - CFLAGS=-fexceptions ./configure - -Note for Solaris users: The "ar" command is usually located in -"/usr/ccs/bin", which is not in the default PATH. You will need to -add this to your path for the "make" command, and probably also switch -to GNU make (the "make" found in /usr/ccs/bin does not seem to work -properly -- appearantly it does not understand .PHONY directives). If -you're using ksh or bash, use this command to build: - - PATH=/usr/ccs/bin:$PATH make - -A reference manual is available in the file doc/reference.html in this -distribution. - -The homepage for this project is http://expat.sourceforge.net/. There -are links there to connect you to the bug reports page. If you need -to report a bug when you don't have access to a browser, you may also -send a bug report by email to expat-bugs@lists.sourceforge.net. - -Discussion related to the direction of future expat development takes -place on expat-discuss@lists.sourceforge.net. Archives of this list -may be found at http://www.geocrawler.com/redir-sf.php3?list=expat-discuss. diff --git a/libs/apr-util/xml/expat/buildconf.sh b/libs/apr-util/xml/expat/buildconf.sh deleted file mode 100755 index 9050a0282af..00000000000 --- a/libs/apr-util/xml/expat/buildconf.sh +++ /dev/null @@ -1,77 +0,0 @@ -#! /bin/sh - -# -# Find libtoolize -# -libtoolize=`conftools/PrintPath glibtoolize libtoolize libtoolize15 libtoolize14` -if [ "x$libtoolize" = "x" ]; then - echo "libtoolize not found in path" - exit 1 -fi - -# -# Create the libtool helper files -# -# Note: we copy (rather than link) the files. -# -# Note: This bundled version of expat will not always replace the -# files since we have a special config.guess/config.sub that we -# want to ensure is used. -echo "Copying libtool helper files ..." - -# Remove any m4 cache and libtool files so one can switch between -# autoconf and libtool versions by simply rerunning the buildconf script. -# -(cd conftools ; rm -f ltconfig ltmain.sh) -rm -rf aclocal.m4 libtool.m4 ltsugar.m4 autom4te*.cache - -$libtoolize --copy --automake - -# -# find libtool.m4 -# -if [ ! -f libtool.m4 ]; then - ltpath=`dirname $libtoolize` - ltfile=${LIBTOOL_M4-`cd $ltpath/../share/aclocal ; pwd`/libtool.m4} - if [ -f $ltfile ]; then - echo "libtool.m4 found at $ltfile" - cp $ltfile libtool.m4 - else - echo "libtool.m4 not found - aborting!" - exit 1 - fi -fi - -# -# Build aclocal.m4 from libtool's m4 files -# -echo "dnl THIS FILE IS AUTOMATICALLY GENERATED BY buildconf.sh" > aclocal.m4 -echo "dnl edits here will be lost" >> aclocal.m4 - -for m4file in libtool.m4 ltsugar.m4 ltoptions.m4 ltversion.m4 lt~obsolete.m4 -do - if [ -f $m4file ]; then - echo "Incorporating $m4file into aclocal.m4 ..." - cat $m4file >> aclocal.m4 - rm -f $m4file - fi -done - -cross_compile_warning="warning: AC_TRY_RUN called without default to allow cross compiling" - -# -# Generate the autoconf header template (config.h.in) and ./configure -# -echo "Creating config.h.in ..." -${AUTOHEADER:-autoheader} 2>&1 | grep -v "$cross_compile_warning" - -echo "Creating configure ..." -${ACLOCAL:-aclocal} - -### do some work to toss config.cache? -${AUTOCONF:-autoconf} 2>&1 | grep -v "$cross_compile_warning" - -# Remove autoconf caches -rm -rf autom4te*.cache - -exit 0 diff --git a/libs/apr-util/xml/expat/configure.ac b/libs/apr-util/xml/expat/configure.ac deleted file mode 100644 index f808df4cce6..00000000000 --- a/libs/apr-util/xml/expat/configure.ac +++ /dev/null @@ -1,120 +0,0 @@ -dnl configuration script for expat -dnl Process this file with autoconf to produce a configure script. -dnl -dnl Copyright 2000 Clark Cooper -dnl -dnl This file is part of EXPAT. -dnl -dnl EXPAT is free software; you can redistribute it and/or modify it -dnl under the terms of the License (based on the MIT/X license) contained -dnl in the file COPYING that comes with this distribution. -dnl - -AC_INIT(Makefile.in) -AC_CONFIG_AUX_DIR(conftools) -AC_CONFIG_MACRO_DIR(.) - -dnl -dnl Follow the GNU/Linux convention of odd number minor version for -dnl beta/development releases and even number minor version for stable -dnl releases. Edit is bumped with each release and set to 0 with -dnl change to major or minor version. -dnl - -EXPAT_MAJOR_VERSION=1 -EXPAT_MINOR_VERSION=95 -EXPAT_EDIT=2 - -EXPAT_VERSION=$EXPAT_MAJOR_VERSION.$EXPAT_MINOR_VERSION.$EXPAT_EDIT -VERSION=$EXPAT_VERSION -PACKAGE=expat - -dnl -dnl Increment LIBREVISION if source code has changed at all -dnl -dnl If the API has changed, increment LIBCURRENT and set LIBREVISION to 0 -dnl -dnl If the API changes compatibly (i.e. simply adding a new function -dnl without changing or removing earlier interfaces), then increment LIBAGE. -dnl -dnl If the API changes incompatibly set LIBAGE back to 0 -dnl - -LIBCURRENT=1 -LIBREVISION=0 -LIBAGE=1 - -AC_CONFIG_HEADER(config.h) - -AC_CANONICAL_SYSTEM -case "$host_os" in -*os2*) - # Use a custom made libtool replacement - echo Using aplibtool - LIBTOOL="$srcdir/../../../apr/build/aplibtool" - ;; -*) - AC_LIBTOOL_WIN32_DLL -AC_PROG_LIBTOOL - ;; -esac - -blddir=`pwd` -AC_SUBST(blddir) - -AC_SUBST(PACKAGE) -AC_SUBST(VERSION) -AC_SUBST(EXPAT_MAJOR_VERSION) -AC_SUBST(EXPAT_MINOR_VERSION) -AC_SUBST(EXPAT_EDIT) - -AC_SUBST(LIBCURRENT) -AC_SUBST(LIBREVISION) -AC_SUBST(LIBAGE) - -dnl Checks for programs. -AC_PROG_CC -AC_PROG_INSTALL - -dnl Checks for libraries. - -dnl Checks for header files. -AC_HEADER_STDC -AC_CHECK_HEADERS(fcntl.h unistd.h string.h) - -dnl Checks for typedefs, structures, and compiler characteristics. -dnl check for endianness -if test "$cross_compiling" = "no"; then - AC_C_BIGENDIAN -else - AC_DEFINE(AP_UNKNOWN_BYTE_ORDER,1,[byte order is unknown due to cross-compilation]) -fi - -if test "$ac_cv_c_bigendian" = "yes"; then - AC_DEFINE(XML_BYTE_ORDER,21,[21 for big endian or 12 for little]) -else - AC_DEFINE(XML_BYTE_ORDER,12,[z]) -fi - -AC_DEFINE(XML_NS,,[Define me]) -AC_DEFINE(XML_DTD,,[Define me]) -AC_DEFINE(XML_CONTEXT_BYTES,1024,[1024]) - -AC_C_CONST -AC_TYPE_OFF_T -AC_TYPE_SIZE_T - -dnl Checks for library functions. - -AC_FUNC_MEMCMP -AC_FUNC_MMAP -AC_SUBST(FILEMAP_OBJ) -if test -z "$HAVE_MMAP"; then -FILEMAP_OBJ=unixfilemap.o -else -FILEMAP_OBJ=readfilemap.o -fi - -AC_CHECK_FUNCS(memmove bcopy) - -AC_OUTPUT(Makefile lib/Makefile lib/expat.h) diff --git a/libs/apr-util/xml/expat/conftools/PrintPath b/libs/apr-util/xml/expat/conftools/PrintPath deleted file mode 100755 index 68435f3744c..00000000000 --- a/libs/apr-util/xml/expat/conftools/PrintPath +++ /dev/null @@ -1,116 +0,0 @@ -#!/bin/sh -# Look for program[s] somewhere in $PATH. -# -# Options: -# -s -# Do not print out full pathname. (silent) -# -pPATHNAME -# Look in PATHNAME instead of $PATH -# -# Usage: -# PrintPath [-s] [-pPATHNAME] program [program ...] -# -# Initially written by Jim Jagielski for the Apache configuration mechanism -# (with kudos to Kernighan/Pike) -# -# This script falls under the Apache License. -# See http://www.apache.org/docs/LICENSE - -## -# Some "constants" -## -pathname=$PATH -echo="yes" - -## -# Find out what OS we are running for later on -## -os=`(uname) 2>/dev/null` - -## -# Parse command line -## -for args in $* -do - case $args in - -s ) echo="no" ;; - -p* ) pathname="`echo $args | sed 's/^..//'`" ;; - * ) programs="$programs $args" ;; - esac -done - -## -# Now we make the adjustments required for OS/2 and everyone -# else :) -# -# First of all, all OS/2 programs have the '.exe' extension. -# Next, we adjust PATH (or what was given to us as PATH) to -# be whitespace seperated directories. -# Finally, we try to determine the best flag to use for -# test/[] to look for an executable file. OS/2 just has '-r' -# but with other OSs, we do some funny stuff to check to see -# if test/[] knows about -x, which is the prefered flag. -## - -if [ "x$os" = "xOS/2" ] -then - ext=".exe" - pathname=`echo -E $pathname | - sed 's/^;/.;/ - s/;;/;.;/g - s/;$/;./ - s/;/ /g - s/\\\\/\\//g' ` - test_exec_flag="-r" -else - ext="" # No default extensions - pathname=`echo $pathname | - sed 's/^:/.:/ - s/::/:.:/g - s/:$/:./ - s/:/ /g' ` - # Here is how we test to see if test/[] can handle -x - testfile="pp.t.$$" - - cat > $testfile </dev/null`; then - test_exec_flag="-x" - else - test_exec_flag="-r" - fi - rm -f $testfile -fi - -for program in $programs -do - for path in $pathname - do - if [ $test_exec_flag $path/${program}${ext} ] && \ - [ ! -d $path/${program}${ext} ]; then - if [ "x$echo" = "xyes" ]; then - echo $path/${program}${ext} - fi - exit 0 - fi - -# Next try without extension (if one was used above) - if [ "x$ext" != "x" ]; then - if [ $test_exec_flag $path/${program} ] && \ - [ ! -d $path/${program} ]; then - if [ "x$echo" = "xyes" ]; then - echo $path/${program} - fi - exit 0 - fi - fi - done -done -exit 1 - diff --git a/libs/apr-util/xml/expat/conftools/config.guess b/libs/apr-util/xml/expat/conftools/config.guess deleted file mode 100755 index 1f5c50c0d15..00000000000 --- a/libs/apr-util/xml/expat/conftools/config.guess +++ /dev/null @@ -1,1420 +0,0 @@ -#! /bin/sh -# Attempt to guess a canonical system name. -# Copyright 1992-2014 Free Software Foundation, Inc. - -timestamp='2014-03-23' - -# This file 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 3 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, see . -# -# As a special exception to the GNU General Public License, if you -# distribute this file as part of a program that contains a -# configuration script generated by Autoconf, you may include it under -# the same distribution terms that you use for the rest of that -# program. This Exception is an additional permission under section 7 -# of the GNU General Public License, version 3 ("GPLv3"). -# -# Originally written by Per Bothner. -# -# You can get the latest version of this script from: -# http://git.savannah.gnu.org/gitweb/?p=config.git;a=blob_plain;f=config.guess;hb=HEAD -# -# Please send patches with a ChangeLog entry to config-patches@gnu.org. - - -me=`echo "$0" | sed -e 's,.*/,,'` - -usage="\ -Usage: $0 [OPTION] - -Output the configuration name of the system \`$me' is run on. - -Operation modes: - -h, --help print this help, then exit - -t, --time-stamp print date of last modification, then exit - -v, --version print version number, then exit - -Report bugs and patches to ." - -version="\ -GNU config.guess ($timestamp) - -Originally written by Per Bothner. -Copyright 1992-2014 Free Software Foundation, Inc. - -This is free software; see the source for copying conditions. There is NO -warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE." - -help=" -Try \`$me --help' for more information." - -# Parse command line -while test $# -gt 0 ; do - case $1 in - --time-stamp | --time* | -t ) - echo "$timestamp" ; exit ;; - --version | -v ) - echo "$version" ; exit ;; - --help | --h* | -h ) - echo "$usage"; exit ;; - -- ) # Stop option processing - shift; break ;; - - ) # Use stdin as input. - break ;; - -* ) - echo "$me: invalid option $1$help" >&2 - exit 1 ;; - * ) - break ;; - esac -done - -if test $# != 0; then - echo "$me: too many arguments$help" >&2 - exit 1 -fi - -trap 'exit 1' 1 2 15 - -# CC_FOR_BUILD -- compiler used by this script. Note that the use of a -# compiler to aid in system detection is discouraged as it requires -# temporary files to be created and, as you can see below, it is a -# headache to deal with in a portable fashion. - -# Historically, `CC_FOR_BUILD' used to be named `HOST_CC'. We still -# use `HOST_CC' if defined, but it is deprecated. - -# Portable tmp directory creation inspired by the Autoconf team. - -set_cc_for_build=' -trap "exitcode=\$?; (rm -f \$tmpfiles 2>/dev/null; rmdir \$tmp 2>/dev/null) && exit \$exitcode" 0 ; -trap "rm -f \$tmpfiles 2>/dev/null; rmdir \$tmp 2>/dev/null; exit 1" 1 2 13 15 ; -: ${TMPDIR=/tmp} ; - { tmp=`(umask 077 && mktemp -d "$TMPDIR/cgXXXXXX") 2>/dev/null` && test -n "$tmp" && test -d "$tmp" ; } || - { test -n "$RANDOM" && tmp=$TMPDIR/cg$$-$RANDOM && (umask 077 && mkdir $tmp) ; } || - { tmp=$TMPDIR/cg-$$ && (umask 077 && mkdir $tmp) && echo "Warning: creating insecure temp directory" >&2 ; } || - { echo "$me: cannot create a temporary directory in $TMPDIR" >&2 ; exit 1 ; } ; -dummy=$tmp/dummy ; -tmpfiles="$dummy.c $dummy.o $dummy.rel $dummy" ; -case $CC_FOR_BUILD,$HOST_CC,$CC in - ,,) echo "int x;" > $dummy.c ; - for c in cc gcc c89 c99 ; do - if ($c -c -o $dummy.o $dummy.c) >/dev/null 2>&1 ; then - CC_FOR_BUILD="$c"; break ; - fi ; - done ; - if test x"$CC_FOR_BUILD" = x ; then - CC_FOR_BUILD=no_compiler_found ; - fi - ;; - ,,*) CC_FOR_BUILD=$CC ;; - ,*,*) CC_FOR_BUILD=$HOST_CC ;; -esac ; set_cc_for_build= ;' - -# This is needed to find uname on a Pyramid OSx when run in the BSD universe. -# (ghazi@noc.rutgers.edu 1994-08-24) -if (test -f /.attbin/uname) >/dev/null 2>&1 ; then - PATH=$PATH:/.attbin ; export PATH -fi - -UNAME_MACHINE=`(uname -m) 2>/dev/null` || UNAME_MACHINE=unknown -UNAME_RELEASE=`(uname -r) 2>/dev/null` || UNAME_RELEASE=unknown -UNAME_SYSTEM=`(uname -s) 2>/dev/null` || UNAME_SYSTEM=unknown -UNAME_VERSION=`(uname -v) 2>/dev/null` || UNAME_VERSION=unknown - -case "${UNAME_SYSTEM}" in -Linux|GNU|GNU/*) - # If the system lacks a compiler, then just pick glibc. - # We could probably try harder. - LIBC=gnu - - eval $set_cc_for_build - cat <<-EOF > $dummy.c - #include - #if defined(__UCLIBC__) - LIBC=uclibc - #elif defined(__dietlibc__) - LIBC=dietlibc - #else - LIBC=gnu - #endif - EOF - eval `$CC_FOR_BUILD -E $dummy.c 2>/dev/null | grep '^LIBC' | sed 's, ,,g'` - ;; -esac - -# Note: order is significant - the case branches are not exclusive. - -case "${UNAME_MACHINE}:${UNAME_SYSTEM}:${UNAME_RELEASE}:${UNAME_VERSION}" in - *:NetBSD:*:*) - # NetBSD (nbsd) targets should (where applicable) match one or - # more of the tuples: *-*-netbsdelf*, *-*-netbsdaout*, - # *-*-netbsdecoff* and *-*-netbsd*. For targets that recently - # switched to ELF, *-*-netbsd* would select the old - # object file format. This provides both forward - # compatibility and a consistent mechanism for selecting the - # object file format. - # - # Note: NetBSD doesn't particularly care about the vendor - # portion of the name. We always set it to "unknown". - sysctl="sysctl -n hw.machine_arch" - UNAME_MACHINE_ARCH=`(/sbin/$sysctl 2>/dev/null || \ - /usr/sbin/$sysctl 2>/dev/null || echo unknown)` - case "${UNAME_MACHINE_ARCH}" in - armeb) machine=armeb-unknown ;; - arm*) machine=arm-unknown ;; - sh3el) machine=shl-unknown ;; - sh3eb) machine=sh-unknown ;; - sh5el) machine=sh5le-unknown ;; - *) machine=${UNAME_MACHINE_ARCH}-unknown ;; - esac - # The Operating System including object format, if it has switched - # to ELF recently, or will in the future. - case "${UNAME_MACHINE_ARCH}" in - arm*|i386|m68k|ns32k|sh3*|sparc|vax) - eval $set_cc_for_build - if echo __ELF__ | $CC_FOR_BUILD -E - 2>/dev/null \ - | grep -q __ELF__ - then - # Once all utilities can be ECOFF (netbsdecoff) or a.out (netbsdaout). - # Return netbsd for either. FIX? - os=netbsd - else - os=netbsdelf - fi - ;; - *) - os=netbsd - ;; - esac - # The OS release - # Debian GNU/NetBSD machines have a different userland, and - # thus, need a distinct triplet. However, they do not need - # kernel version information, so it can be replaced with a - # suitable tag, in the style of linux-gnu. - case "${UNAME_VERSION}" in - Debian*) - release='-gnu' - ;; - *) - release=`echo ${UNAME_RELEASE}|sed -e 's/[-_].*/\./'` - ;; - esac - # Since CPU_TYPE-MANUFACTURER-KERNEL-OPERATING_SYSTEM: - # contains redundant information, the shorter form: - # CPU_TYPE-MANUFACTURER-OPERATING_SYSTEM is used. - echo "${machine}-${os}${release}" - exit ;; - *:Bitrig:*:*) - UNAME_MACHINE_ARCH=`arch | sed 's/Bitrig.//'` - echo ${UNAME_MACHINE_ARCH}-unknown-bitrig${UNAME_RELEASE} - exit ;; - *:OpenBSD:*:*) - UNAME_MACHINE_ARCH=`arch | sed 's/OpenBSD.//'` - echo ${UNAME_MACHINE_ARCH}-unknown-openbsd${UNAME_RELEASE} - exit ;; - *:ekkoBSD:*:*) - echo ${UNAME_MACHINE}-unknown-ekkobsd${UNAME_RELEASE} - exit ;; - *:SolidBSD:*:*) - echo ${UNAME_MACHINE}-unknown-solidbsd${UNAME_RELEASE} - exit ;; - macppc:MirBSD:*:*) - echo powerpc-unknown-mirbsd${UNAME_RELEASE} - exit ;; - *:MirBSD:*:*) - echo ${UNAME_MACHINE}-unknown-mirbsd${UNAME_RELEASE} - exit ;; - alpha:OSF1:*:*) - case $UNAME_RELEASE in - *4.0) - UNAME_RELEASE=`/usr/sbin/sizer -v | awk '{print $3}'` - ;; - *5.*) - UNAME_RELEASE=`/usr/sbin/sizer -v | awk '{print $4}'` - ;; - esac - # According to Compaq, /usr/sbin/psrinfo has been available on - # OSF/1 and Tru64 systems produced since 1995. I hope that - # covers most systems running today. This code pipes the CPU - # types through head -n 1, so we only detect the type of CPU 0. - ALPHA_CPU_TYPE=`/usr/sbin/psrinfo -v | sed -n -e 's/^ The alpha \(.*\) processor.*$/\1/p' | head -n 1` - case "$ALPHA_CPU_TYPE" in - "EV4 (21064)") - UNAME_MACHINE="alpha" ;; - "EV4.5 (21064)") - UNAME_MACHINE="alpha" ;; - "LCA4 (21066/21068)") - UNAME_MACHINE="alpha" ;; - "EV5 (21164)") - UNAME_MACHINE="alphaev5" ;; - "EV5.6 (21164A)") - UNAME_MACHINE="alphaev56" ;; - "EV5.6 (21164PC)") - UNAME_MACHINE="alphapca56" ;; - "EV5.7 (21164PC)") - UNAME_MACHINE="alphapca57" ;; - "EV6 (21264)") - UNAME_MACHINE="alphaev6" ;; - "EV6.7 (21264A)") - UNAME_MACHINE="alphaev67" ;; - "EV6.8CB (21264C)") - UNAME_MACHINE="alphaev68" ;; - "EV6.8AL (21264B)") - UNAME_MACHINE="alphaev68" ;; - "EV6.8CX (21264D)") - UNAME_MACHINE="alphaev68" ;; - "EV6.9A (21264/EV69A)") - UNAME_MACHINE="alphaev69" ;; - "EV7 (21364)") - UNAME_MACHINE="alphaev7" ;; - "EV7.9 (21364A)") - UNAME_MACHINE="alphaev79" ;; - esac - # A Pn.n version is a patched version. - # A Vn.n version is a released version. - # A Tn.n version is a released field test version. - # A Xn.n version is an unreleased experimental baselevel. - # 1.2 uses "1.2" for uname -r. - echo ${UNAME_MACHINE}-dec-osf`echo ${UNAME_RELEASE} | sed -e 's/^[PVTX]//' | tr 'ABCDEFGHIJKLMNOPQRSTUVWXYZ' 'abcdefghijklmnopqrstuvwxyz'` - # Reset EXIT trap before exiting to avoid spurious non-zero exit code. - exitcode=$? - trap '' 0 - exit $exitcode ;; - Alpha\ *:Windows_NT*:*) - # How do we know it's Interix rather than the generic POSIX subsystem? - # Should we change UNAME_MACHINE based on the output of uname instead - # of the specific Alpha model? - echo alpha-pc-interix - exit ;; - 21064:Windows_NT:50:3) - echo alpha-dec-winnt3.5 - exit ;; - Amiga*:UNIX_System_V:4.0:*) - echo m68k-unknown-sysv4 - exit ;; - *:[Aa]miga[Oo][Ss]:*:*) - echo ${UNAME_MACHINE}-unknown-amigaos - exit ;; - *:[Mm]orph[Oo][Ss]:*:*) - echo ${UNAME_MACHINE}-unknown-morphos - exit ;; - *:OS/390:*:*) - echo i370-ibm-openedition - exit ;; - *:z/VM:*:*) - echo s390-ibm-zvmoe - exit ;; - *:OS400:*:*) - echo powerpc-ibm-os400 - exit ;; - arm:RISC*:1.[012]*:*|arm:riscix:1.[012]*:*) - echo arm-acorn-riscix${UNAME_RELEASE} - exit ;; - arm*:riscos:*:*|arm*:RISCOS:*:*) - echo arm-unknown-riscos - exit ;; - SR2?01:HI-UX/MPP:*:* | SR8000:HI-UX/MPP:*:*) - echo hppa1.1-hitachi-hiuxmpp - exit ;; - Pyramid*:OSx*:*:* | MIS*:OSx*:*:* | MIS*:SMP_DC-OSx*:*:*) - # akee@wpdis03.wpafb.af.mil (Earle F. Ake) contributed MIS and NILE. - if test "`(/bin/universe) 2>/dev/null`" = att ; then - echo pyramid-pyramid-sysv3 - else - echo pyramid-pyramid-bsd - fi - exit ;; - NILE*:*:*:dcosx) - echo pyramid-pyramid-svr4 - exit ;; - DRS?6000:unix:4.0:6*) - echo sparc-icl-nx6 - exit ;; - DRS?6000:UNIX_SV:4.2*:7* | DRS?6000:isis:4.2*:7*) - case `/usr/bin/uname -p` in - sparc) echo sparc-icl-nx7; exit ;; - esac ;; - s390x:SunOS:*:*) - echo ${UNAME_MACHINE}-ibm-solaris2`echo ${UNAME_RELEASE}|sed -e 's/[^.]*//'` - exit ;; - sun4H:SunOS:5.*:*) - echo sparc-hal-solaris2`echo ${UNAME_RELEASE}|sed -e 's/[^.]*//'` - exit ;; - sun4*:SunOS:5.*:* | tadpole*:SunOS:5.*:*) - echo sparc-sun-solaris2`echo ${UNAME_RELEASE}|sed -e 's/[^.]*//'` - exit ;; - i86pc:AuroraUX:5.*:* | i86xen:AuroraUX:5.*:*) - echo i386-pc-auroraux${UNAME_RELEASE} - exit ;; - i86pc:SunOS:5.*:* | i86xen:SunOS:5.*:*) - eval $set_cc_for_build - SUN_ARCH="i386" - # If there is a compiler, see if it is configured for 64-bit objects. - # Note that the Sun cc does not turn __LP64__ into 1 like gcc does. - # This test works for both compilers. - if [ "$CC_FOR_BUILD" != 'no_compiler_found' ]; then - if (echo '#ifdef __amd64'; echo IS_64BIT_ARCH; echo '#endif') | \ - (CCOPTS= $CC_FOR_BUILD -E - 2>/dev/null) | \ - grep IS_64BIT_ARCH >/dev/null - then - SUN_ARCH="x86_64" - fi - fi - echo ${SUN_ARCH}-pc-solaris2`echo ${UNAME_RELEASE}|sed -e 's/[^.]*//'` - exit ;; - sun4*:SunOS:6*:*) - # According to config.sub, this is the proper way to canonicalize - # SunOS6. Hard to guess exactly what SunOS6 will be like, but - # it's likely to be more like Solaris than SunOS4. - echo sparc-sun-solaris3`echo ${UNAME_RELEASE}|sed -e 's/[^.]*//'` - exit ;; - sun4*:SunOS:*:*) - case "`/usr/bin/arch -k`" in - Series*|S4*) - UNAME_RELEASE=`uname -v` - ;; - esac - # Japanese Language versions have a version number like `4.1.3-JL'. - echo sparc-sun-sunos`echo ${UNAME_RELEASE}|sed -e 's/-/_/'` - exit ;; - sun3*:SunOS:*:*) - echo m68k-sun-sunos${UNAME_RELEASE} - exit ;; - sun*:*:4.2BSD:*) - UNAME_RELEASE=`(sed 1q /etc/motd | awk '{print substr($5,1,3)}') 2>/dev/null` - test "x${UNAME_RELEASE}" = "x" && UNAME_RELEASE=3 - case "`/bin/arch`" in - sun3) - echo m68k-sun-sunos${UNAME_RELEASE} - ;; - sun4) - echo sparc-sun-sunos${UNAME_RELEASE} - ;; - esac - exit ;; - aushp:SunOS:*:*) - echo sparc-auspex-sunos${UNAME_RELEASE} - exit ;; - # The situation for MiNT is a little confusing. The machine name - # can be virtually everything (everything which is not - # "atarist" or "atariste" at least should have a processor - # > m68000). The system name ranges from "MiNT" over "FreeMiNT" - # to the lowercase version "mint" (or "freemint"). Finally - # the system name "TOS" denotes a system which is actually not - # MiNT. But MiNT is downward compatible to TOS, so this should - # be no problem. - atarist[e]:*MiNT:*:* | atarist[e]:*mint:*:* | atarist[e]:*TOS:*:*) - echo m68k-atari-mint${UNAME_RELEASE} - exit ;; - atari*:*MiNT:*:* | atari*:*mint:*:* | atarist[e]:*TOS:*:*) - echo m68k-atari-mint${UNAME_RELEASE} - exit ;; - *falcon*:*MiNT:*:* | *falcon*:*mint:*:* | *falcon*:*TOS:*:*) - echo m68k-atari-mint${UNAME_RELEASE} - exit ;; - milan*:*MiNT:*:* | milan*:*mint:*:* | *milan*:*TOS:*:*) - echo m68k-milan-mint${UNAME_RELEASE} - exit ;; - hades*:*MiNT:*:* | hades*:*mint:*:* | *hades*:*TOS:*:*) - echo m68k-hades-mint${UNAME_RELEASE} - exit ;; - *:*MiNT:*:* | *:*mint:*:* | *:*TOS:*:*) - echo m68k-unknown-mint${UNAME_RELEASE} - exit ;; - m68k:machten:*:*) - echo m68k-apple-machten${UNAME_RELEASE} - exit ;; - powerpc:machten:*:*) - echo powerpc-apple-machten${UNAME_RELEASE} - exit ;; - RISC*:Mach:*:*) - echo mips-dec-mach_bsd4.3 - exit ;; - RISC*:ULTRIX:*:*) - echo mips-dec-ultrix${UNAME_RELEASE} - exit ;; - VAX*:ULTRIX*:*:*) - echo vax-dec-ultrix${UNAME_RELEASE} - exit ;; - 2020:CLIX:*:* | 2430:CLIX:*:*) - echo clipper-intergraph-clix${UNAME_RELEASE} - exit ;; - mips:*:*:UMIPS | mips:*:*:RISCos) - eval $set_cc_for_build - sed 's/^ //' << EOF >$dummy.c -#ifdef __cplusplus -#include /* for printf() prototype */ - int main (int argc, char *argv[]) { -#else - int main (argc, argv) int argc; char *argv[]; { -#endif - #if defined (host_mips) && defined (MIPSEB) - #if defined (SYSTYPE_SYSV) - printf ("mips-mips-riscos%ssysv\n", argv[1]); exit (0); - #endif - #if defined (SYSTYPE_SVR4) - printf ("mips-mips-riscos%ssvr4\n", argv[1]); exit (0); - #endif - #if defined (SYSTYPE_BSD43) || defined(SYSTYPE_BSD) - printf ("mips-mips-riscos%sbsd\n", argv[1]); exit (0); - #endif - #endif - exit (-1); - } -EOF - $CC_FOR_BUILD -o $dummy $dummy.c && - dummyarg=`echo "${UNAME_RELEASE}" | sed -n 's/\([0-9]*\).*/\1/p'` && - SYSTEM_NAME=`$dummy $dummyarg` && - { echo "$SYSTEM_NAME"; exit; } - echo mips-mips-riscos${UNAME_RELEASE} - exit ;; - Motorola:PowerMAX_OS:*:*) - echo powerpc-motorola-powermax - exit ;; - Motorola:*:4.3:PL8-*) - echo powerpc-harris-powermax - exit ;; - Night_Hawk:*:*:PowerMAX_OS | Synergy:PowerMAX_OS:*:*) - echo powerpc-harris-powermax - exit ;; - Night_Hawk:Power_UNIX:*:*) - echo powerpc-harris-powerunix - exit ;; - m88k:CX/UX:7*:*) - echo m88k-harris-cxux7 - exit ;; - m88k:*:4*:R4*) - echo m88k-motorola-sysv4 - exit ;; - m88k:*:3*:R3*) - echo m88k-motorola-sysv3 - exit ;; - AViiON:dgux:*:*) - # DG/UX returns AViiON for all architectures - UNAME_PROCESSOR=`/usr/bin/uname -p` - if [ $UNAME_PROCESSOR = mc88100 ] || [ $UNAME_PROCESSOR = mc88110 ] - then - if [ ${TARGET_BINARY_INTERFACE}x = m88kdguxelfx ] || \ - [ ${TARGET_BINARY_INTERFACE}x = x ] - then - echo m88k-dg-dgux${UNAME_RELEASE} - else - echo m88k-dg-dguxbcs${UNAME_RELEASE} - fi - else - echo i586-dg-dgux${UNAME_RELEASE} - fi - exit ;; - M88*:DolphinOS:*:*) # DolphinOS (SVR3) - echo m88k-dolphin-sysv3 - exit ;; - M88*:*:R3*:*) - # Delta 88k system running SVR3 - echo m88k-motorola-sysv3 - exit ;; - XD88*:*:*:*) # Tektronix XD88 system running UTekV (SVR3) - echo m88k-tektronix-sysv3 - exit ;; - Tek43[0-9][0-9]:UTek:*:*) # Tektronix 4300 system running UTek (BSD) - echo m68k-tektronix-bsd - exit ;; - *:IRIX*:*:*) - echo mips-sgi-irix`echo ${UNAME_RELEASE}|sed -e 's/-/_/g'` - exit ;; - ????????:AIX?:[12].1:2) # AIX 2.2.1 or AIX 2.1.1 is RT/PC AIX. - echo romp-ibm-aix # uname -m gives an 8 hex-code CPU id - exit ;; # Note that: echo "'`uname -s`'" gives 'AIX ' - i*86:AIX:*:*) - echo i386-ibm-aix - exit ;; - ia64:AIX:*:*) - if [ -x /usr/bin/oslevel ] ; then - IBM_REV=`/usr/bin/oslevel` - else - IBM_REV=${UNAME_VERSION}.${UNAME_RELEASE} - fi - echo ${UNAME_MACHINE}-ibm-aix${IBM_REV} - exit ;; - *:AIX:2:3) - if grep bos325 /usr/include/stdio.h >/dev/null 2>&1; then - eval $set_cc_for_build - sed 's/^ //' << EOF >$dummy.c - #include - - main() - { - if (!__power_pc()) - exit(1); - puts("powerpc-ibm-aix3.2.5"); - exit(0); - } -EOF - if $CC_FOR_BUILD -o $dummy $dummy.c && SYSTEM_NAME=`$dummy` - then - echo "$SYSTEM_NAME" - else - echo rs6000-ibm-aix3.2.5 - fi - elif grep bos324 /usr/include/stdio.h >/dev/null 2>&1; then - echo rs6000-ibm-aix3.2.4 - else - echo rs6000-ibm-aix3.2 - fi - exit ;; - *:AIX:*:[4567]) - IBM_CPU_ID=`/usr/sbin/lsdev -C -c processor -S available | sed 1q | awk '{ print $1 }'` - if /usr/sbin/lsattr -El ${IBM_CPU_ID} | grep ' POWER' >/dev/null 2>&1; then - IBM_ARCH=rs6000 - else - IBM_ARCH=powerpc - fi - if [ -x /usr/bin/oslevel ] ; then - IBM_REV=`/usr/bin/oslevel` - else - IBM_REV=${UNAME_VERSION}.${UNAME_RELEASE} - fi - echo ${IBM_ARCH}-ibm-aix${IBM_REV} - exit ;; - *:AIX:*:*) - echo rs6000-ibm-aix - exit ;; - ibmrt:4.4BSD:*|romp-ibm:BSD:*) - echo romp-ibm-bsd4.4 - exit ;; - ibmrt:*BSD:*|romp-ibm:BSD:*) # covers RT/PC BSD and - echo romp-ibm-bsd${UNAME_RELEASE} # 4.3 with uname added to - exit ;; # report: romp-ibm BSD 4.3 - *:BOSX:*:*) - echo rs6000-bull-bosx - exit ;; - DPX/2?00:B.O.S.:*:*) - echo m68k-bull-sysv3 - exit ;; - 9000/[34]??:4.3bsd:1.*:*) - echo m68k-hp-bsd - exit ;; - hp300:4.4BSD:*:* | 9000/[34]??:4.3bsd:2.*:*) - echo m68k-hp-bsd4.4 - exit ;; - 9000/[34678]??:HP-UX:*:*) - HPUX_REV=`echo ${UNAME_RELEASE}|sed -e 's/[^.]*.[0B]*//'` - case "${UNAME_MACHINE}" in - 9000/31? ) HP_ARCH=m68000 ;; - 9000/[34]?? ) HP_ARCH=m68k ;; - 9000/[678][0-9][0-9]) - if [ -x /usr/bin/getconf ]; then - sc_cpu_version=`/usr/bin/getconf SC_CPU_VERSION 2>/dev/null` - sc_kernel_bits=`/usr/bin/getconf SC_KERNEL_BITS 2>/dev/null` - case "${sc_cpu_version}" in - 523) HP_ARCH="hppa1.0" ;; # CPU_PA_RISC1_0 - 528) HP_ARCH="hppa1.1" ;; # CPU_PA_RISC1_1 - 532) # CPU_PA_RISC2_0 - case "${sc_kernel_bits}" in - 32) HP_ARCH="hppa2.0n" ;; - 64) HP_ARCH="hppa2.0w" ;; - '') HP_ARCH="hppa2.0" ;; # HP-UX 10.20 - esac ;; - esac - fi - if [ "${HP_ARCH}" = "" ]; then - eval $set_cc_for_build - sed 's/^ //' << EOF >$dummy.c - - #define _HPUX_SOURCE - #include - #include - - int main () - { - #if defined(_SC_KERNEL_BITS) - long bits = sysconf(_SC_KERNEL_BITS); - #endif - long cpu = sysconf (_SC_CPU_VERSION); - - switch (cpu) - { - case CPU_PA_RISC1_0: puts ("hppa1.0"); break; - case CPU_PA_RISC1_1: puts ("hppa1.1"); break; - case CPU_PA_RISC2_0: - #if defined(_SC_KERNEL_BITS) - switch (bits) - { - case 64: puts ("hppa2.0w"); break; - case 32: puts ("hppa2.0n"); break; - default: puts ("hppa2.0"); break; - } break; - #else /* !defined(_SC_KERNEL_BITS) */ - puts ("hppa2.0"); break; - #endif - default: puts ("hppa1.0"); break; - } - exit (0); - } -EOF - (CCOPTS= $CC_FOR_BUILD -o $dummy $dummy.c 2>/dev/null) && HP_ARCH=`$dummy` - test -z "$HP_ARCH" && HP_ARCH=hppa - fi ;; - esac - if [ ${HP_ARCH} = "hppa2.0w" ] - then - eval $set_cc_for_build - - # hppa2.0w-hp-hpux* has a 64-bit kernel and a compiler generating - # 32-bit code. hppa64-hp-hpux* has the same kernel and a compiler - # generating 64-bit code. GNU and HP use different nomenclature: - # - # $ CC_FOR_BUILD=cc ./config.guess - # => hppa2.0w-hp-hpux11.23 - # $ CC_FOR_BUILD="cc +DA2.0w" ./config.guess - # => hppa64-hp-hpux11.23 - - if echo __LP64__ | (CCOPTS= $CC_FOR_BUILD -E - 2>/dev/null) | - grep -q __LP64__ - then - HP_ARCH="hppa2.0w" - else - HP_ARCH="hppa64" - fi - fi - echo ${HP_ARCH}-hp-hpux${HPUX_REV} - exit ;; - ia64:HP-UX:*:*) - HPUX_REV=`echo ${UNAME_RELEASE}|sed -e 's/[^.]*.[0B]*//'` - echo ia64-hp-hpux${HPUX_REV} - exit ;; - 3050*:HI-UX:*:*) - eval $set_cc_for_build - sed 's/^ //' << EOF >$dummy.c - #include - int - main () - { - long cpu = sysconf (_SC_CPU_VERSION); - /* The order matters, because CPU_IS_HP_MC68K erroneously returns - true for CPU_PA_RISC1_0. CPU_IS_PA_RISC returns correct - results, however. */ - if (CPU_IS_PA_RISC (cpu)) - { - switch (cpu) - { - case CPU_PA_RISC1_0: puts ("hppa1.0-hitachi-hiuxwe2"); break; - case CPU_PA_RISC1_1: puts ("hppa1.1-hitachi-hiuxwe2"); break; - case CPU_PA_RISC2_0: puts ("hppa2.0-hitachi-hiuxwe2"); break; - default: puts ("hppa-hitachi-hiuxwe2"); break; - } - } - else if (CPU_IS_HP_MC68K (cpu)) - puts ("m68k-hitachi-hiuxwe2"); - else puts ("unknown-hitachi-hiuxwe2"); - exit (0); - } -EOF - $CC_FOR_BUILD -o $dummy $dummy.c && SYSTEM_NAME=`$dummy` && - { echo "$SYSTEM_NAME"; exit; } - echo unknown-hitachi-hiuxwe2 - exit ;; - 9000/7??:4.3bsd:*:* | 9000/8?[79]:4.3bsd:*:* ) - echo hppa1.1-hp-bsd - exit ;; - 9000/8??:4.3bsd:*:*) - echo hppa1.0-hp-bsd - exit ;; - *9??*:MPE/iX:*:* | *3000*:MPE/iX:*:*) - echo hppa1.0-hp-mpeix - exit ;; - hp7??:OSF1:*:* | hp8?[79]:OSF1:*:* ) - echo hppa1.1-hp-osf - exit ;; - hp8??:OSF1:*:*) - echo hppa1.0-hp-osf - exit ;; - i*86:OSF1:*:*) - if [ -x /usr/sbin/sysversion ] ; then - echo ${UNAME_MACHINE}-unknown-osf1mk - else - echo ${UNAME_MACHINE}-unknown-osf1 - fi - exit ;; - parisc*:Lites*:*:*) - echo hppa1.1-hp-lites - exit ;; - C1*:ConvexOS:*:* | convex:ConvexOS:C1*:*) - echo c1-convex-bsd - exit ;; - C2*:ConvexOS:*:* | convex:ConvexOS:C2*:*) - if getsysinfo -f scalar_acc - then echo c32-convex-bsd - else echo c2-convex-bsd - fi - exit ;; - C34*:ConvexOS:*:* | convex:ConvexOS:C34*:*) - echo c34-convex-bsd - exit ;; - C38*:ConvexOS:*:* | convex:ConvexOS:C38*:*) - echo c38-convex-bsd - exit ;; - C4*:ConvexOS:*:* | convex:ConvexOS:C4*:*) - echo c4-convex-bsd - exit ;; - CRAY*Y-MP:*:*:*) - echo ymp-cray-unicos${UNAME_RELEASE} | sed -e 's/\.[^.]*$/.X/' - exit ;; - CRAY*[A-Z]90:*:*:*) - echo ${UNAME_MACHINE}-cray-unicos${UNAME_RELEASE} \ - | sed -e 's/CRAY.*\([A-Z]90\)/\1/' \ - -e y/ABCDEFGHIJKLMNOPQRSTUVWXYZ/abcdefghijklmnopqrstuvwxyz/ \ - -e 's/\.[^.]*$/.X/' - exit ;; - CRAY*TS:*:*:*) - echo t90-cray-unicos${UNAME_RELEASE} | sed -e 's/\.[^.]*$/.X/' - exit ;; - CRAY*T3E:*:*:*) - echo alphaev5-cray-unicosmk${UNAME_RELEASE} | sed -e 's/\.[^.]*$/.X/' - exit ;; - CRAY*SV1:*:*:*) - echo sv1-cray-unicos${UNAME_RELEASE} | sed -e 's/\.[^.]*$/.X/' - exit ;; - *:UNICOS/mp:*:*) - echo craynv-cray-unicosmp${UNAME_RELEASE} | sed -e 's/\.[^.]*$/.X/' - exit ;; - F30[01]:UNIX_System_V:*:* | F700:UNIX_System_V:*:*) - FUJITSU_PROC=`uname -m | tr 'ABCDEFGHIJKLMNOPQRSTUVWXYZ' 'abcdefghijklmnopqrstuvwxyz'` - FUJITSU_SYS=`uname -p | tr 'ABCDEFGHIJKLMNOPQRSTUVWXYZ' 'abcdefghijklmnopqrstuvwxyz' | sed -e 's/\///'` - FUJITSU_REL=`echo ${UNAME_RELEASE} | sed -e 's/ /_/'` - echo "${FUJITSU_PROC}-fujitsu-${FUJITSU_SYS}${FUJITSU_REL}" - exit ;; - 5000:UNIX_System_V:4.*:*) - FUJITSU_SYS=`uname -p | tr 'ABCDEFGHIJKLMNOPQRSTUVWXYZ' 'abcdefghijklmnopqrstuvwxyz' | sed -e 's/\///'` - FUJITSU_REL=`echo ${UNAME_RELEASE} | tr 'ABCDEFGHIJKLMNOPQRSTUVWXYZ' 'abcdefghijklmnopqrstuvwxyz' | sed -e 's/ /_/'` - echo "sparc-fujitsu-${FUJITSU_SYS}${FUJITSU_REL}" - exit ;; - i*86:BSD/386:*:* | i*86:BSD/OS:*:* | *:Ascend\ Embedded/OS:*:*) - echo ${UNAME_MACHINE}-pc-bsdi${UNAME_RELEASE} - exit ;; - sparc*:BSD/OS:*:*) - echo sparc-unknown-bsdi${UNAME_RELEASE} - exit ;; - *:BSD/OS:*:*) - echo ${UNAME_MACHINE}-unknown-bsdi${UNAME_RELEASE} - exit ;; - *:FreeBSD:*:*) - UNAME_PROCESSOR=`/usr/bin/uname -p` - case ${UNAME_PROCESSOR} in - amd64) - echo x86_64-unknown-freebsd`echo ${UNAME_RELEASE}|sed -e 's/[-(].*//'` ;; - *) - echo ${UNAME_PROCESSOR}-unknown-freebsd`echo ${UNAME_RELEASE}|sed -e 's/[-(].*//'` ;; - esac - exit ;; - i*:CYGWIN*:*) - echo ${UNAME_MACHINE}-pc-cygwin - exit ;; - *:MINGW64*:*) - echo ${UNAME_MACHINE}-pc-mingw64 - exit ;; - *:MINGW*:*) - echo ${UNAME_MACHINE}-pc-mingw32 - exit ;; - *:MSYS*:*) - echo ${UNAME_MACHINE}-pc-msys - exit ;; - i*:windows32*:*) - # uname -m includes "-pc" on this system. - echo ${UNAME_MACHINE}-mingw32 - exit ;; - i*:PW*:*) - echo ${UNAME_MACHINE}-pc-pw32 - exit ;; - *:Interix*:*) - case ${UNAME_MACHINE} in - x86) - echo i586-pc-interix${UNAME_RELEASE} - exit ;; - authenticamd | genuineintel | EM64T) - echo x86_64-unknown-interix${UNAME_RELEASE} - exit ;; - IA64) - echo ia64-unknown-interix${UNAME_RELEASE} - exit ;; - esac ;; - [345]86:Windows_95:* | [345]86:Windows_98:* | [345]86:Windows_NT:*) - echo i${UNAME_MACHINE}-pc-mks - exit ;; - 8664:Windows_NT:*) - echo x86_64-pc-mks - exit ;; - i*:Windows_NT*:* | Pentium*:Windows_NT*:*) - # How do we know it's Interix rather than the generic POSIX subsystem? - # It also conflicts with pre-2.0 versions of AT&T UWIN. Should we - # UNAME_MACHINE based on the output of uname instead of i386? - echo i586-pc-interix - exit ;; - i*:UWIN*:*) - echo ${UNAME_MACHINE}-pc-uwin - exit ;; - amd64:CYGWIN*:*:* | x86_64:CYGWIN*:*:*) - echo x86_64-unknown-cygwin - exit ;; - p*:CYGWIN*:*) - echo powerpcle-unknown-cygwin - exit ;; - prep*:SunOS:5.*:*) - echo powerpcle-unknown-solaris2`echo ${UNAME_RELEASE}|sed -e 's/[^.]*//'` - exit ;; - *:GNU:*:*) - # the GNU system - echo `echo ${UNAME_MACHINE}|sed -e 's,[-/].*$,,'`-unknown-${LIBC}`echo ${UNAME_RELEASE}|sed -e 's,/.*$,,'` - exit ;; - *:GNU/*:*:*) - # other systems with GNU libc and userland - echo ${UNAME_MACHINE}-unknown-`echo ${UNAME_SYSTEM} | sed 's,^[^/]*/,,' | tr '[A-Z]' '[a-z]'``echo ${UNAME_RELEASE}|sed -e 's/[-(].*//'`-${LIBC} - exit ;; - i*86:Minix:*:*) - echo ${UNAME_MACHINE}-pc-minix - exit ;; - aarch64:Linux:*:*) - echo ${UNAME_MACHINE}-unknown-linux-${LIBC} - exit ;; - aarch64_be:Linux:*:*) - UNAME_MACHINE=aarch64_be - echo ${UNAME_MACHINE}-unknown-linux-${LIBC} - exit ;; - alpha:Linux:*:*) - case `sed -n '/^cpu model/s/^.*: \(.*\)/\1/p' < /proc/cpuinfo` in - EV5) UNAME_MACHINE=alphaev5 ;; - EV56) UNAME_MACHINE=alphaev56 ;; - PCA56) UNAME_MACHINE=alphapca56 ;; - PCA57) UNAME_MACHINE=alphapca56 ;; - EV6) UNAME_MACHINE=alphaev6 ;; - EV67) UNAME_MACHINE=alphaev67 ;; - EV68*) UNAME_MACHINE=alphaev68 ;; - esac - objdump --private-headers /bin/sh | grep -q ld.so.1 - if test "$?" = 0 ; then LIBC="gnulibc1" ; fi - echo ${UNAME_MACHINE}-unknown-linux-${LIBC} - exit ;; - arc:Linux:*:* | arceb:Linux:*:*) - echo ${UNAME_MACHINE}-unknown-linux-${LIBC} - exit ;; - arm*:Linux:*:*) - eval $set_cc_for_build - if echo __ARM_EABI__ | $CC_FOR_BUILD -E - 2>/dev/null \ - | grep -q __ARM_EABI__ - then - echo ${UNAME_MACHINE}-unknown-linux-${LIBC} - else - if echo __ARM_PCS_VFP | $CC_FOR_BUILD -E - 2>/dev/null \ - | grep -q __ARM_PCS_VFP - then - echo ${UNAME_MACHINE}-unknown-linux-${LIBC}eabi - else - echo ${UNAME_MACHINE}-unknown-linux-${LIBC}eabihf - fi - fi - exit ;; - avr32*:Linux:*:*) - echo ${UNAME_MACHINE}-unknown-linux-${LIBC} - exit ;; - cris:Linux:*:*) - echo ${UNAME_MACHINE}-axis-linux-${LIBC} - exit ;; - crisv32:Linux:*:*) - echo ${UNAME_MACHINE}-axis-linux-${LIBC} - exit ;; - frv:Linux:*:*) - echo ${UNAME_MACHINE}-unknown-linux-${LIBC} - exit ;; - hexagon:Linux:*:*) - echo ${UNAME_MACHINE}-unknown-linux-${LIBC} - exit ;; - i*86:Linux:*:*) - echo ${UNAME_MACHINE}-pc-linux-${LIBC} - exit ;; - ia64:Linux:*:*) - echo ${UNAME_MACHINE}-unknown-linux-${LIBC} - exit ;; - m32r*:Linux:*:*) - echo ${UNAME_MACHINE}-unknown-linux-${LIBC} - exit ;; - m68*:Linux:*:*) - echo ${UNAME_MACHINE}-unknown-linux-${LIBC} - exit ;; - mips:Linux:*:* | mips64:Linux:*:*) - eval $set_cc_for_build - sed 's/^ //' << EOF >$dummy.c - #undef CPU - #undef ${UNAME_MACHINE} - #undef ${UNAME_MACHINE}el - #if defined(__MIPSEL__) || defined(__MIPSEL) || defined(_MIPSEL) || defined(MIPSEL) - CPU=${UNAME_MACHINE}el - #else - #if defined(__MIPSEB__) || defined(__MIPSEB) || defined(_MIPSEB) || defined(MIPSEB) - CPU=${UNAME_MACHINE} - #else - CPU= - #endif - #endif -EOF - eval `$CC_FOR_BUILD -E $dummy.c 2>/dev/null | grep '^CPU'` - test x"${CPU}" != x && { echo "${CPU}-unknown-linux-${LIBC}"; exit; } - ;; - openrisc*:Linux:*:*) - echo or1k-unknown-linux-${LIBC} - exit ;; - or32:Linux:*:* | or1k*:Linux:*:*) - echo ${UNAME_MACHINE}-unknown-linux-${LIBC} - exit ;; - padre:Linux:*:*) - echo sparc-unknown-linux-${LIBC} - exit ;; - parisc64:Linux:*:* | hppa64:Linux:*:*) - echo hppa64-unknown-linux-${LIBC} - exit ;; - parisc:Linux:*:* | hppa:Linux:*:*) - # Look for CPU level - case `grep '^cpu[^a-z]*:' /proc/cpuinfo 2>/dev/null | cut -d' ' -f2` in - PA7*) echo hppa1.1-unknown-linux-${LIBC} ;; - PA8*) echo hppa2.0-unknown-linux-${LIBC} ;; - *) echo hppa-unknown-linux-${LIBC} ;; - esac - exit ;; - ppc64:Linux:*:*) - echo powerpc64-unknown-linux-${LIBC} - exit ;; - ppc:Linux:*:*) - echo powerpc-unknown-linux-${LIBC} - exit ;; - ppc64le:Linux:*:*) - echo powerpc64le-unknown-linux-${LIBC} - exit ;; - ppcle:Linux:*:*) - echo powerpcle-unknown-linux-${LIBC} - exit ;; - s390:Linux:*:* | s390x:Linux:*:*) - echo ${UNAME_MACHINE}-ibm-linux-${LIBC} - exit ;; - sh64*:Linux:*:*) - echo ${UNAME_MACHINE}-unknown-linux-${LIBC} - exit ;; - sh*:Linux:*:*) - echo ${UNAME_MACHINE}-unknown-linux-${LIBC} - exit ;; - sparc:Linux:*:* | sparc64:Linux:*:*) - echo ${UNAME_MACHINE}-unknown-linux-${LIBC} - exit ;; - tile*:Linux:*:*) - echo ${UNAME_MACHINE}-unknown-linux-${LIBC} - exit ;; - vax:Linux:*:*) - echo ${UNAME_MACHINE}-dec-linux-${LIBC} - exit ;; - x86_64:Linux:*:*) - echo ${UNAME_MACHINE}-unknown-linux-${LIBC} - exit ;; - xtensa*:Linux:*:*) - echo ${UNAME_MACHINE}-unknown-linux-${LIBC} - exit ;; - i*86:DYNIX/ptx:4*:*) - # ptx 4.0 does uname -s correctly, with DYNIX/ptx in there. - # earlier versions are messed up and put the nodename in both - # sysname and nodename. - echo i386-sequent-sysv4 - exit ;; - i*86:UNIX_SV:4.2MP:2.*) - # Unixware is an offshoot of SVR4, but it has its own version - # number series starting with 2... - # I am not positive that other SVR4 systems won't match this, - # I just have to hope. -- rms. - # Use sysv4.2uw... so that sysv4* matches it. - echo ${UNAME_MACHINE}-pc-sysv4.2uw${UNAME_VERSION} - exit ;; - i*86:OS/2:*:*) - # If we were able to find `uname', then EMX Unix compatibility - # is probably installed. - echo ${UNAME_MACHINE}-pc-os2-emx - exit ;; - i*86:XTS-300:*:STOP) - echo ${UNAME_MACHINE}-unknown-stop - exit ;; - i*86:atheos:*:*) - echo ${UNAME_MACHINE}-unknown-atheos - exit ;; - i*86:syllable:*:*) - echo ${UNAME_MACHINE}-pc-syllable - exit ;; - i*86:LynxOS:2.*:* | i*86:LynxOS:3.[01]*:* | i*86:LynxOS:4.[02]*:*) - echo i386-unknown-lynxos${UNAME_RELEASE} - exit ;; - i*86:*DOS:*:*) - echo ${UNAME_MACHINE}-pc-msdosdjgpp - exit ;; - i*86:*:4.*:* | i*86:SYSTEM_V:4.*:*) - UNAME_REL=`echo ${UNAME_RELEASE} | sed 's/\/MP$//'` - if grep Novell /usr/include/link.h >/dev/null 2>/dev/null; then - echo ${UNAME_MACHINE}-univel-sysv${UNAME_REL} - else - echo ${UNAME_MACHINE}-pc-sysv${UNAME_REL} - fi - exit ;; - i*86:*:5:[678]*) - # UnixWare 7.x, OpenUNIX and OpenServer 6. - case `/bin/uname -X | grep "^Machine"` in - *486*) UNAME_MACHINE=i486 ;; - *Pentium) UNAME_MACHINE=i586 ;; - *Pent*|*Celeron) UNAME_MACHINE=i686 ;; - esac - echo ${UNAME_MACHINE}-unknown-sysv${UNAME_RELEASE}${UNAME_SYSTEM}${UNAME_VERSION} - exit ;; - i*86:*:3.2:*) - if test -f /usr/options/cb.name; then - UNAME_REL=`sed -n 's/.*Version //p' /dev/null >/dev/null ; then - UNAME_REL=`(/bin/uname -X|grep Release|sed -e 's/.*= //')` - (/bin/uname -X|grep i80486 >/dev/null) && UNAME_MACHINE=i486 - (/bin/uname -X|grep '^Machine.*Pentium' >/dev/null) \ - && UNAME_MACHINE=i586 - (/bin/uname -X|grep '^Machine.*Pent *II' >/dev/null) \ - && UNAME_MACHINE=i686 - (/bin/uname -X|grep '^Machine.*Pentium Pro' >/dev/null) \ - && UNAME_MACHINE=i686 - echo ${UNAME_MACHINE}-pc-sco$UNAME_REL - else - echo ${UNAME_MACHINE}-pc-sysv32 - fi - exit ;; - pc:*:*:*) - # Left here for compatibility: - # uname -m prints for DJGPP always 'pc', but it prints nothing about - # the processor, so we play safe by assuming i586. - # Note: whatever this is, it MUST be the same as what config.sub - # prints for the "djgpp" host, or else GDB configury will decide that - # this is a cross-build. - echo i586-pc-msdosdjgpp - exit ;; - Intel:Mach:3*:*) - echo i386-pc-mach3 - exit ;; - paragon:*:*:*) - echo i860-intel-osf1 - exit ;; - i860:*:4.*:*) # i860-SVR4 - if grep Stardent /usr/include/sys/uadmin.h >/dev/null 2>&1 ; then - echo i860-stardent-sysv${UNAME_RELEASE} # Stardent Vistra i860-SVR4 - else # Add other i860-SVR4 vendors below as they are discovered. - echo i860-unknown-sysv${UNAME_RELEASE} # Unknown i860-SVR4 - fi - exit ;; - mini*:CTIX:SYS*5:*) - # "miniframe" - echo m68010-convergent-sysv - exit ;; - mc68k:UNIX:SYSTEM5:3.51m) - echo m68k-convergent-sysv - exit ;; - M680?0:D-NIX:5.3:*) - echo m68k-diab-dnix - exit ;; - M68*:*:R3V[5678]*:*) - test -r /sysV68 && { echo 'm68k-motorola-sysv'; exit; } ;; - 3[345]??:*:4.0:3.0 | 3[34]??A:*:4.0:3.0 | 3[34]??,*:*:4.0:3.0 | 3[34]??/*:*:4.0:3.0 | 4400:*:4.0:3.0 | 4850:*:4.0:3.0 | SKA40:*:4.0:3.0 | SDS2:*:4.0:3.0 | SHG2:*:4.0:3.0 | S7501*:*:4.0:3.0) - OS_REL='' - test -r /etc/.relid \ - && OS_REL=.`sed -n 's/[^ ]* [^ ]* \([0-9][0-9]\).*/\1/p' < /etc/.relid` - /bin/uname -p 2>/dev/null | grep 86 >/dev/null \ - && { echo i486-ncr-sysv4.3${OS_REL}; exit; } - /bin/uname -p 2>/dev/null | /bin/grep entium >/dev/null \ - && { echo i586-ncr-sysv4.3${OS_REL}; exit; } ;; - 3[34]??:*:4.0:* | 3[34]??,*:*:4.0:*) - /bin/uname -p 2>/dev/null | grep 86 >/dev/null \ - && { echo i486-ncr-sysv4; exit; } ;; - NCR*:*:4.2:* | MPRAS*:*:4.2:*) - OS_REL='.3' - test -r /etc/.relid \ - && OS_REL=.`sed -n 's/[^ ]* [^ ]* \([0-9][0-9]\).*/\1/p' < /etc/.relid` - /bin/uname -p 2>/dev/null | grep 86 >/dev/null \ - && { echo i486-ncr-sysv4.3${OS_REL}; exit; } - /bin/uname -p 2>/dev/null | /bin/grep entium >/dev/null \ - && { echo i586-ncr-sysv4.3${OS_REL}; exit; } - /bin/uname -p 2>/dev/null | /bin/grep pteron >/dev/null \ - && { echo i586-ncr-sysv4.3${OS_REL}; exit; } ;; - m68*:LynxOS:2.*:* | m68*:LynxOS:3.0*:*) - echo m68k-unknown-lynxos${UNAME_RELEASE} - exit ;; - mc68030:UNIX_System_V:4.*:*) - echo m68k-atari-sysv4 - exit ;; - TSUNAMI:LynxOS:2.*:*) - echo sparc-unknown-lynxos${UNAME_RELEASE} - exit ;; - rs6000:LynxOS:2.*:*) - echo rs6000-unknown-lynxos${UNAME_RELEASE} - exit ;; - PowerPC:LynxOS:2.*:* | PowerPC:LynxOS:3.[01]*:* | PowerPC:LynxOS:4.[02]*:*) - echo powerpc-unknown-lynxos${UNAME_RELEASE} - exit ;; - SM[BE]S:UNIX_SV:*:*) - echo mips-dde-sysv${UNAME_RELEASE} - exit ;; - RM*:ReliantUNIX-*:*:*) - echo mips-sni-sysv4 - exit ;; - RM*:SINIX-*:*:*) - echo mips-sni-sysv4 - exit ;; - *:SINIX-*:*:*) - if uname -p 2>/dev/null >/dev/null ; then - UNAME_MACHINE=`(uname -p) 2>/dev/null` - echo ${UNAME_MACHINE}-sni-sysv4 - else - echo ns32k-sni-sysv - fi - exit ;; - PENTIUM:*:4.0*:*) # Unisys `ClearPath HMP IX 4000' SVR4/MP effort - # says - echo i586-unisys-sysv4 - exit ;; - *:UNIX_System_V:4*:FTX*) - # From Gerald Hewes . - # How about differentiating between stratus architectures? -djm - echo hppa1.1-stratus-sysv4 - exit ;; - *:*:*:FTX*) - # From seanf@swdc.stratus.com. - echo i860-stratus-sysv4 - exit ;; - i*86:VOS:*:*) - # From Paul.Green@stratus.com. - echo ${UNAME_MACHINE}-stratus-vos - exit ;; - *:VOS:*:*) - # From Paul.Green@stratus.com. - echo hppa1.1-stratus-vos - exit ;; - mc68*:A/UX:*:*) - echo m68k-apple-aux${UNAME_RELEASE} - exit ;; - news*:NEWS-OS:6*:*) - echo mips-sony-newsos6 - exit ;; - R[34]000:*System_V*:*:* | R4000:UNIX_SYSV:*:* | R*000:UNIX_SV:*:*) - if [ -d /usr/nec ]; then - echo mips-nec-sysv${UNAME_RELEASE} - else - echo mips-unknown-sysv${UNAME_RELEASE} - fi - exit ;; - BeBox:BeOS:*:*) # BeOS running on hardware made by Be, PPC only. - echo powerpc-be-beos - exit ;; - BeMac:BeOS:*:*) # BeOS running on Mac or Mac clone, PPC only. - echo powerpc-apple-beos - exit ;; - BePC:BeOS:*:*) # BeOS running on Intel PC compatible. - echo i586-pc-beos - exit ;; - BePC:Haiku:*:*) # Haiku running on Intel PC compatible. - echo i586-pc-haiku - exit ;; - x86_64:Haiku:*:*) - echo x86_64-unknown-haiku - exit ;; - SX-4:SUPER-UX:*:*) - echo sx4-nec-superux${UNAME_RELEASE} - exit ;; - SX-5:SUPER-UX:*:*) - echo sx5-nec-superux${UNAME_RELEASE} - exit ;; - SX-6:SUPER-UX:*:*) - echo sx6-nec-superux${UNAME_RELEASE} - exit ;; - SX-7:SUPER-UX:*:*) - echo sx7-nec-superux${UNAME_RELEASE} - exit ;; - SX-8:SUPER-UX:*:*) - echo sx8-nec-superux${UNAME_RELEASE} - exit ;; - SX-8R:SUPER-UX:*:*) - echo sx8r-nec-superux${UNAME_RELEASE} - exit ;; - Power*:Rhapsody:*:*) - echo powerpc-apple-rhapsody${UNAME_RELEASE} - exit ;; - *:Rhapsody:*:*) - echo ${UNAME_MACHINE}-apple-rhapsody${UNAME_RELEASE} - exit ;; - *:Darwin:*:*) - UNAME_PROCESSOR=`uname -p` || UNAME_PROCESSOR=unknown - eval $set_cc_for_build - if test "$UNAME_PROCESSOR" = unknown ; then - UNAME_PROCESSOR=powerpc - fi - if test `echo "$UNAME_RELEASE" | sed -e 's/\..*//'` -le 10 ; then - if [ "$CC_FOR_BUILD" != 'no_compiler_found' ]; then - if (echo '#ifdef __LP64__'; echo IS_64BIT_ARCH; echo '#endif') | \ - (CCOPTS= $CC_FOR_BUILD -E - 2>/dev/null) | \ - grep IS_64BIT_ARCH >/dev/null - then - case $UNAME_PROCESSOR in - i386) UNAME_PROCESSOR=x86_64 ;; - powerpc) UNAME_PROCESSOR=powerpc64 ;; - esac - fi - fi - elif test "$UNAME_PROCESSOR" = i386 ; then - # Avoid executing cc on OS X 10.9, as it ships with a stub - # that puts up a graphical alert prompting to install - # developer tools. Any system running Mac OS X 10.7 or - # later (Darwin 11 and later) is required to have a 64-bit - # processor. This is not true of the ARM version of Darwin - # that Apple uses in portable devices. - UNAME_PROCESSOR=x86_64 - fi - echo ${UNAME_PROCESSOR}-apple-darwin${UNAME_RELEASE} - exit ;; - *:procnto*:*:* | *:QNX:[0123456789]*:*) - UNAME_PROCESSOR=`uname -p` - if test "$UNAME_PROCESSOR" = "x86"; then - UNAME_PROCESSOR=i386 - UNAME_MACHINE=pc - fi - echo ${UNAME_PROCESSOR}-${UNAME_MACHINE}-nto-qnx${UNAME_RELEASE} - exit ;; - *:QNX:*:4*) - echo i386-pc-qnx - exit ;; - NEO-?:NONSTOP_KERNEL:*:*) - echo neo-tandem-nsk${UNAME_RELEASE} - exit ;; - NSE-*:NONSTOP_KERNEL:*:*) - echo nse-tandem-nsk${UNAME_RELEASE} - exit ;; - NSR-?:NONSTOP_KERNEL:*:*) - echo nsr-tandem-nsk${UNAME_RELEASE} - exit ;; - *:NonStop-UX:*:*) - echo mips-compaq-nonstopux - exit ;; - BS2000:POSIX*:*:*) - echo bs2000-siemens-sysv - exit ;; - DS/*:UNIX_System_V:*:*) - echo ${UNAME_MACHINE}-${UNAME_SYSTEM}-${UNAME_RELEASE} - exit ;; - *:Plan9:*:*) - # "uname -m" is not consistent, so use $cputype instead. 386 - # is converted to i386 for consistency with other x86 - # operating systems. - if test "$cputype" = "386"; then - UNAME_MACHINE=i386 - else - UNAME_MACHINE="$cputype" - fi - echo ${UNAME_MACHINE}-unknown-plan9 - exit ;; - *:TOPS-10:*:*) - echo pdp10-unknown-tops10 - exit ;; - *:TENEX:*:*) - echo pdp10-unknown-tenex - exit ;; - KS10:TOPS-20:*:* | KL10:TOPS-20:*:* | TYPE4:TOPS-20:*:*) - echo pdp10-dec-tops20 - exit ;; - XKL-1:TOPS-20:*:* | TYPE5:TOPS-20:*:*) - echo pdp10-xkl-tops20 - exit ;; - *:TOPS-20:*:*) - echo pdp10-unknown-tops20 - exit ;; - *:ITS:*:*) - echo pdp10-unknown-its - exit ;; - SEI:*:*:SEIUX) - echo mips-sei-seiux${UNAME_RELEASE} - exit ;; - *:DragonFly:*:*) - echo ${UNAME_MACHINE}-unknown-dragonfly`echo ${UNAME_RELEASE}|sed -e 's/[-(].*//'` - exit ;; - *:*VMS:*:*) - UNAME_MACHINE=`(uname -p) 2>/dev/null` - case "${UNAME_MACHINE}" in - A*) echo alpha-dec-vms ; exit ;; - I*) echo ia64-dec-vms ; exit ;; - V*) echo vax-dec-vms ; exit ;; - esac ;; - *:XENIX:*:SysV) - echo i386-pc-xenix - exit ;; - i*86:skyos:*:*) - echo ${UNAME_MACHINE}-pc-skyos`echo ${UNAME_RELEASE}` | sed -e 's/ .*$//' - exit ;; - i*86:rdos:*:*) - echo ${UNAME_MACHINE}-pc-rdos - exit ;; - i*86:AROS:*:*) - echo ${UNAME_MACHINE}-pc-aros - exit ;; - x86_64:VMkernel:*:*) - echo ${UNAME_MACHINE}-unknown-esx - exit ;; -esac - -cat >&2 < in order to provide the needed -information to handle your system. - -config.guess timestamp = $timestamp - -uname -m = `(uname -m) 2>/dev/null || echo unknown` -uname -r = `(uname -r) 2>/dev/null || echo unknown` -uname -s = `(uname -s) 2>/dev/null || echo unknown` -uname -v = `(uname -v) 2>/dev/null || echo unknown` - -/usr/bin/uname -p = `(/usr/bin/uname -p) 2>/dev/null` -/bin/uname -X = `(/bin/uname -X) 2>/dev/null` - -hostinfo = `(hostinfo) 2>/dev/null` -/bin/universe = `(/bin/universe) 2>/dev/null` -/usr/bin/arch -k = `(/usr/bin/arch -k) 2>/dev/null` -/bin/arch = `(/bin/arch) 2>/dev/null` -/usr/bin/oslevel = `(/usr/bin/oslevel) 2>/dev/null` -/usr/convex/getsysinfo = `(/usr/convex/getsysinfo) 2>/dev/null` - -UNAME_MACHINE = ${UNAME_MACHINE} -UNAME_RELEASE = ${UNAME_RELEASE} -UNAME_SYSTEM = ${UNAME_SYSTEM} -UNAME_VERSION = ${UNAME_VERSION} -EOF - -exit 1 - -# Local variables: -# eval: (add-hook 'write-file-hooks 'time-stamp) -# time-stamp-start: "timestamp='" -# time-stamp-format: "%:y-%02m-%02d" -# time-stamp-end: "'" -# End: diff --git a/libs/apr-util/xml/expat/conftools/config.sub b/libs/apr-util/xml/expat/conftools/config.sub deleted file mode 100755 index bba4efb8057..00000000000 --- a/libs/apr-util/xml/expat/conftools/config.sub +++ /dev/null @@ -1,1799 +0,0 @@ -#! /bin/sh -# Configuration validation subroutine script. -# Copyright 1992-2014 Free Software Foundation, Inc. - -timestamp='2014-09-11' - -# This file 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 3 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, see . -# -# As a special exception to the GNU General Public License, if you -# distribute this file as part of a program that contains a -# configuration script generated by Autoconf, you may include it under -# the same distribution terms that you use for the rest of that -# program. This Exception is an additional permission under section 7 -# of the GNU General Public License, version 3 ("GPLv3"). - - -# Please send patches with a ChangeLog entry to config-patches@gnu.org. -# -# Configuration subroutine to validate and canonicalize a configuration type. -# Supply the specified configuration type as an argument. -# If it is invalid, we print an error message on stderr and exit with code 1. -# Otherwise, we print the canonical config type on stdout and succeed. - -# You can get the latest version of this script from: -# http://git.savannah.gnu.org/gitweb/?p=config.git;a=blob_plain;f=config.sub;hb=HEAD - -# This file is supposed to be the same for all GNU packages -# and recognize all the CPU types, system types and aliases -# that are meaningful with *any* GNU software. -# Each package is responsible for reporting which valid configurations -# it does not support. The user should be able to distinguish -# a failure to support a valid configuration from a meaningless -# configuration. - -# The goal of this file is to map all the various variations of a given -# machine specification into a single specification in the form: -# CPU_TYPE-MANUFACTURER-OPERATING_SYSTEM -# or in some cases, the newer four-part form: -# CPU_TYPE-MANUFACTURER-KERNEL-OPERATING_SYSTEM -# It is wrong to echo any other type of specification. - -me=`echo "$0" | sed -e 's,.*/,,'` - -usage="\ -Usage: $0 [OPTION] CPU-MFR-OPSYS - $0 [OPTION] ALIAS - -Canonicalize a configuration name. - -Operation modes: - -h, --help print this help, then exit - -t, --time-stamp print date of last modification, then exit - -v, --version print version number, then exit - -Report bugs and patches to ." - -version="\ -GNU config.sub ($timestamp) - -Copyright 1992-2014 Free Software Foundation, Inc. - -This is free software; see the source for copying conditions. There is NO -warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE." - -help=" -Try \`$me --help' for more information." - -# Parse command line -while test $# -gt 0 ; do - case $1 in - --time-stamp | --time* | -t ) - echo "$timestamp" ; exit ;; - --version | -v ) - echo "$version" ; exit ;; - --help | --h* | -h ) - echo "$usage"; exit ;; - -- ) # Stop option processing - shift; break ;; - - ) # Use stdin as input. - break ;; - -* ) - echo "$me: invalid option $1$help" - exit 1 ;; - - *local*) - # First pass through any local machine types. - echo $1 - exit ;; - - * ) - break ;; - esac -done - -case $# in - 0) echo "$me: missing argument$help" >&2 - exit 1;; - 1) ;; - *) echo "$me: too many arguments$help" >&2 - exit 1;; -esac - -# Separate what the user gave into CPU-COMPANY and OS or KERNEL-OS (if any). -# Here we must recognize all the valid KERNEL-OS combinations. -maybe_os=`echo $1 | sed 's/^\(.*\)-\([^-]*-[^-]*\)$/\2/'` -case $maybe_os in - nto-qnx* | linux-gnu* | linux-android* | linux-dietlibc | linux-newlib* | \ - linux-musl* | linux-uclibc* | uclinux-uclibc* | uclinux-gnu* | kfreebsd*-gnu* | \ - knetbsd*-gnu* | netbsd*-gnu* | \ - kopensolaris*-gnu* | \ - storm-chaos* | os2-emx* | rtmk-nova*) - os=-$maybe_os - basic_machine=`echo $1 | sed 's/^\(.*\)-\([^-]*-[^-]*\)$/\1/'` - ;; - android-linux) - os=-linux-android - basic_machine=`echo $1 | sed 's/^\(.*\)-\([^-]*-[^-]*\)$/\1/'`-unknown - ;; - *) - basic_machine=`echo $1 | sed 's/-[^-]*$//'` - if [ $basic_machine != $1 ] - then os=`echo $1 | sed 's/.*-/-/'` - else os=; fi - ;; -esac - -### Let's recognize common machines as not being operating systems so -### that things like config.sub decstation-3100 work. We also -### recognize some manufacturers as not being operating systems, so we -### can provide default operating systems below. -case $os in - -sun*os*) - # Prevent following clause from handling this invalid input. - ;; - -dec* | -mips* | -sequent* | -encore* | -pc532* | -sgi* | -sony* | \ - -att* | -7300* | -3300* | -delta* | -motorola* | -sun[234]* | \ - -unicom* | -ibm* | -next | -hp | -isi* | -apollo | -altos* | \ - -convergent* | -ncr* | -news | -32* | -3600* | -3100* | -hitachi* |\ - -c[123]* | -convex* | -sun | -crds | -omron* | -dg | -ultra | -tti* | \ - -harris | -dolphin | -highlevel | -gould | -cbm | -ns | -masscomp | \ - -apple | -axis | -knuth | -cray | -microblaze*) - os= - basic_machine=$1 - ;; - -bluegene*) - os=-cnk - ;; - -sim | -cisco | -oki | -wec | -winbond) - os= - basic_machine=$1 - ;; - -scout) - ;; - -wrs) - os=-vxworks - basic_machine=$1 - ;; - -chorusos*) - os=-chorusos - basic_machine=$1 - ;; - -chorusrdb) - os=-chorusrdb - basic_machine=$1 - ;; - -hiux*) - os=-hiuxwe2 - ;; - -sco6) - os=-sco5v6 - basic_machine=`echo $1 | sed -e 's/86-.*/86-pc/'` - ;; - -sco5) - os=-sco3.2v5 - basic_machine=`echo $1 | sed -e 's/86-.*/86-pc/'` - ;; - -sco4) - os=-sco3.2v4 - basic_machine=`echo $1 | sed -e 's/86-.*/86-pc/'` - ;; - -sco3.2.[4-9]*) - os=`echo $os | sed -e 's/sco3.2./sco3.2v/'` - basic_machine=`echo $1 | sed -e 's/86-.*/86-pc/'` - ;; - -sco3.2v[4-9]*) - # Don't forget version if it is 3.2v4 or newer. - basic_machine=`echo $1 | sed -e 's/86-.*/86-pc/'` - ;; - -sco5v6*) - # Don't forget version if it is 3.2v4 or newer. - basic_machine=`echo $1 | sed -e 's/86-.*/86-pc/'` - ;; - -sco*) - os=-sco3.2v2 - basic_machine=`echo $1 | sed -e 's/86-.*/86-pc/'` - ;; - -udk*) - basic_machine=`echo $1 | sed -e 's/86-.*/86-pc/'` - ;; - -isc) - os=-isc2.2 - basic_machine=`echo $1 | sed -e 's/86-.*/86-pc/'` - ;; - -clix*) - basic_machine=clipper-intergraph - ;; - -isc*) - basic_machine=`echo $1 | sed -e 's/86-.*/86-pc/'` - ;; - -lynx*178) - os=-lynxos178 - ;; - -lynx*5) - os=-lynxos5 - ;; - -lynx*) - os=-lynxos - ;; - -ptx*) - basic_machine=`echo $1 | sed -e 's/86-.*/86-sequent/'` - ;; - -windowsnt*) - os=`echo $os | sed -e 's/windowsnt/winnt/'` - ;; - -psos*) - os=-psos - ;; - -mint | -mint[0-9]*) - basic_machine=m68k-atari - os=-mint - ;; -esac - -# Decode aliases for certain CPU-COMPANY combinations. -case $basic_machine in - # Recognize the basic CPU types without company name. - # Some are omitted here because they have special meanings below. - 1750a | 580 \ - | a29k \ - | aarch64 | aarch64_be \ - | alpha | alphaev[4-8] | alphaev56 | alphaev6[78] | alphapca5[67] \ - | alpha64 | alpha64ev[4-8] | alpha64ev56 | alpha64ev6[78] | alpha64pca5[67] \ - | am33_2.0 \ - | arc | arceb \ - | arm | arm[bl]e | arme[lb] | armv[2-8] | armv[3-8][lb] | armv7[arm] \ - | avr | avr32 \ - | be32 | be64 \ - | bfin \ - | c4x | c8051 | clipper \ - | d10v | d30v | dlx | dsp16xx \ - | epiphany \ - | fido | fr30 | frv \ - | h8300 | h8500 | hppa | hppa1.[01] | hppa2.0 | hppa2.0[nw] | hppa64 \ - | hexagon \ - | i370 | i860 | i960 | ia64 \ - | ip2k | iq2000 \ - | k1om \ - | le32 | le64 \ - | lm32 \ - | m32c | m32r | m32rle | m68000 | m68k | m88k \ - | maxq | mb | microblaze | microblazeel | mcore | mep | metag \ - | mips | mipsbe | mipseb | mipsel | mipsle \ - | mips16 \ - | mips64 | mips64el \ - | mips64octeon | mips64octeonel \ - | mips64orion | mips64orionel \ - | mips64r5900 | mips64r5900el \ - | mips64vr | mips64vrel \ - | mips64vr4100 | mips64vr4100el \ - | mips64vr4300 | mips64vr4300el \ - | mips64vr5000 | mips64vr5000el \ - | mips64vr5900 | mips64vr5900el \ - | mipsisa32 | mipsisa32el \ - | mipsisa32r2 | mipsisa32r2el \ - | mipsisa32r6 | mipsisa32r6el \ - | mipsisa64 | mipsisa64el \ - | mipsisa64r2 | mipsisa64r2el \ - | mipsisa64r6 | mipsisa64r6el \ - | mipsisa64sb1 | mipsisa64sb1el \ - | mipsisa64sr71k | mipsisa64sr71kel \ - | mipsr5900 | mipsr5900el \ - | mipstx39 | mipstx39el \ - | mn10200 | mn10300 \ - | moxie \ - | mt \ - | msp430 \ - | nds32 | nds32le | nds32be \ - | nios | nios2 | nios2eb | nios2el \ - | ns16k | ns32k \ - | open8 | or1k | or1knd | or32 \ - | pdp10 | pdp11 | pj | pjl \ - | powerpc | powerpc64 | powerpc64le | powerpcle \ - | pyramid \ - | riscv32 | riscv64 \ - | rl78 | rx \ - | score \ - | sh | sh[1234] | sh[24]a | sh[24]aeb | sh[23]e | sh[34]eb | sheb | shbe | shle | sh[1234]le | sh3ele \ - | sh64 | sh64le \ - | sparc | sparc64 | sparc64b | sparc64v | sparc86x | sparclet | sparclite \ - | sparcv8 | sparcv9 | sparcv9b | sparcv9v \ - | spu \ - | tahoe | tic4x | tic54x | tic55x | tic6x | tic80 | tron \ - | ubicom32 \ - | v850 | v850e | v850e1 | v850e2 | v850es | v850e2v3 \ - | we32k \ - | x86 | xc16x | xstormy16 | xtensa \ - | z8k | z80) - basic_machine=$basic_machine-unknown - ;; - c54x) - basic_machine=tic54x-unknown - ;; - c55x) - basic_machine=tic55x-unknown - ;; - c6x) - basic_machine=tic6x-unknown - ;; - m6811 | m68hc11 | m6812 | m68hc12 | m68hcs12x | nvptx | picochip) - basic_machine=$basic_machine-unknown - os=-none - ;; - m88110 | m680[12346]0 | m683?2 | m68360 | m5200 | v70 | w65 | z8k) - ;; - ms1) - basic_machine=mt-unknown - ;; - - strongarm | thumb | xscale) - basic_machine=arm-unknown - ;; - xgate) - basic_machine=$basic_machine-unknown - os=-none - ;; - xscaleeb) - basic_machine=armeb-unknown - ;; - - xscaleel) - basic_machine=armel-unknown - ;; - - # We use `pc' rather than `unknown' - # because (1) that's what they normally are, and - # (2) the word "unknown" tends to confuse beginning users. - i*86 | x86_64) - basic_machine=$basic_machine-pc - ;; - # Object if more than one company name word. - *-*-*) - echo Invalid configuration \`$1\': machine \`$basic_machine\' not recognized 1>&2 - exit 1 - ;; - # Recognize the basic CPU types with company name. - 580-* \ - | a29k-* \ - | aarch64-* | aarch64_be-* \ - | alpha-* | alphaev[4-8]-* | alphaev56-* | alphaev6[78]-* \ - | alpha64-* | alpha64ev[4-8]-* | alpha64ev56-* | alpha64ev6[78]-* \ - | alphapca5[67]-* | alpha64pca5[67]-* | arc-* | arceb-* \ - | arm-* | armbe-* | armle-* | armeb-* | armv*-* \ - | avr-* | avr32-* \ - | be32-* | be64-* \ - | bfin-* | bs2000-* \ - | c[123]* | c30-* | [cjt]90-* | c4x-* \ - | c8051-* | clipper-* | craynv-* | cydra-* \ - | d10v-* | d30v-* | dlx-* \ - | elxsi-* \ - | f30[01]-* | f700-* | fido-* | fr30-* | frv-* | fx80-* \ - | h8300-* | h8500-* \ - | hppa-* | hppa1.[01]-* | hppa2.0-* | hppa2.0[nw]-* | hppa64-* \ - | hexagon-* \ - | i*86-* | i860-* | i960-* | ia64-* \ - | ip2k-* | iq2000-* \ - | k1om-* \ - | le32-* | le64-* \ - | lm32-* \ - | m32c-* | m32r-* | m32rle-* \ - | m68000-* | m680[012346]0-* | m68360-* | m683?2-* | m68k-* \ - | m88110-* | m88k-* | maxq-* | mcore-* | metag-* \ - | microblaze-* | microblazeel-* \ - | mips-* | mipsbe-* | mipseb-* | mipsel-* | mipsle-* \ - | mips16-* \ - | mips64-* | mips64el-* \ - | mips64octeon-* | mips64octeonel-* \ - | mips64orion-* | mips64orionel-* \ - | mips64r5900-* | mips64r5900el-* \ - | mips64vr-* | mips64vrel-* \ - | mips64vr4100-* | mips64vr4100el-* \ - | mips64vr4300-* | mips64vr4300el-* \ - | mips64vr5000-* | mips64vr5000el-* \ - | mips64vr5900-* | mips64vr5900el-* \ - | mipsisa32-* | mipsisa32el-* \ - | mipsisa32r2-* | mipsisa32r2el-* \ - | mipsisa32r6-* | mipsisa32r6el-* \ - | mipsisa64-* | mipsisa64el-* \ - | mipsisa64r2-* | mipsisa64r2el-* \ - | mipsisa64r6-* | mipsisa64r6el-* \ - | mipsisa64sb1-* | mipsisa64sb1el-* \ - | mipsisa64sr71k-* | mipsisa64sr71kel-* \ - | mipsr5900-* | mipsr5900el-* \ - | mipstx39-* | mipstx39el-* \ - | mmix-* \ - | mt-* \ - | msp430-* \ - | nds32-* | nds32le-* | nds32be-* \ - | nios-* | nios2-* | nios2eb-* | nios2el-* \ - | none-* | np1-* | ns16k-* | ns32k-* \ - | open8-* \ - | or1k*-* \ - | orion-* \ - | pdp10-* | pdp11-* | pj-* | pjl-* | pn-* | power-* \ - | powerpc-* | powerpc64-* | powerpc64le-* | powerpcle-* \ - | pyramid-* \ - | rl78-* | romp-* | rs6000-* | rx-* \ - | sh-* | sh[1234]-* | sh[24]a-* | sh[24]aeb-* | sh[23]e-* | sh[34]eb-* | sheb-* | shbe-* \ - | shle-* | sh[1234]le-* | sh3ele-* | sh64-* | sh64le-* \ - | sparc-* | sparc64-* | sparc64b-* | sparc64v-* | sparc86x-* | sparclet-* \ - | sparclite-* \ - | sparcv8-* | sparcv9-* | sparcv9b-* | sparcv9v-* | sv1-* | sx?-* \ - | tahoe-* \ - | tic30-* | tic4x-* | tic54x-* | tic55x-* | tic6x-* | tic80-* \ - | tile*-* \ - | tron-* \ - | ubicom32-* \ - | v850-* | v850e-* | v850e1-* | v850es-* | v850e2-* | v850e2v3-* \ - | vax-* \ - | we32k-* \ - | x86-* | x86_64-* | xc16x-* | xps100-* \ - | xstormy16-* | xtensa*-* \ - | ymp-* \ - | z8k-* | z80-*) - ;; - # Recognize the basic CPU types without company name, with glob match. - xtensa*) - basic_machine=$basic_machine-unknown - ;; - # Recognize the various machine names and aliases which stand - # for a CPU type and a company and sometimes even an OS. - 386bsd) - basic_machine=i386-unknown - os=-bsd - ;; - 3b1 | 7300 | 7300-att | att-7300 | pc7300 | safari | unixpc) - basic_machine=m68000-att - ;; - 3b*) - basic_machine=we32k-att - ;; - a29khif) - basic_machine=a29k-amd - os=-udi - ;; - abacus) - basic_machine=abacus-unknown - ;; - adobe68k) - basic_machine=m68010-adobe - os=-scout - ;; - alliant | fx80) - basic_machine=fx80-alliant - ;; - altos | altos3068) - basic_machine=m68k-altos - ;; - am29k) - basic_machine=a29k-none - os=-bsd - ;; - amd64) - basic_machine=x86_64-pc - ;; - amd64-*) - basic_machine=x86_64-`echo $basic_machine | sed 's/^[^-]*-//'` - ;; - amdahl) - basic_machine=580-amdahl - os=-sysv - ;; - amiga | amiga-*) - basic_machine=m68k-unknown - ;; - amigaos | amigados) - basic_machine=m68k-unknown - os=-amigaos - ;; - amigaunix | amix) - basic_machine=m68k-unknown - os=-sysv4 - ;; - apollo68) - basic_machine=m68k-apollo - os=-sysv - ;; - apollo68bsd) - basic_machine=m68k-apollo - os=-bsd - ;; - aros) - basic_machine=i386-pc - os=-aros - ;; - aux) - basic_machine=m68k-apple - os=-aux - ;; - balance) - basic_machine=ns32k-sequent - os=-dynix - ;; - blackfin) - basic_machine=bfin-unknown - os=-linux - ;; - blackfin-*) - basic_machine=bfin-`echo $basic_machine | sed 's/^[^-]*-//'` - os=-linux - ;; - bluegene*) - basic_machine=powerpc-ibm - os=-cnk - ;; - c54x-*) - basic_machine=tic54x-`echo $basic_machine | sed 's/^[^-]*-//'` - ;; - c55x-*) - basic_machine=tic55x-`echo $basic_machine | sed 's/^[^-]*-//'` - ;; - c6x-*) - basic_machine=tic6x-`echo $basic_machine | sed 's/^[^-]*-//'` - ;; - c90) - basic_machine=c90-cray - os=-unicos - ;; - cegcc) - basic_machine=arm-unknown - os=-cegcc - ;; - convex-c1) - basic_machine=c1-convex - os=-bsd - ;; - convex-c2) - basic_machine=c2-convex - os=-bsd - ;; - convex-c32) - basic_machine=c32-convex - os=-bsd - ;; - convex-c34) - basic_machine=c34-convex - os=-bsd - ;; - convex-c38) - basic_machine=c38-convex - os=-bsd - ;; - cray | j90) - basic_machine=j90-cray - os=-unicos - ;; - craynv) - basic_machine=craynv-cray - os=-unicosmp - ;; - cr16 | cr16-*) - basic_machine=cr16-unknown - os=-elf - ;; - crds | unos) - basic_machine=m68k-crds - ;; - crisv32 | crisv32-* | etraxfs*) - basic_machine=crisv32-axis - ;; - cris | cris-* | etrax*) - basic_machine=cris-axis - ;; - crx) - basic_machine=crx-unknown - os=-elf - ;; - da30 | da30-*) - basic_machine=m68k-da30 - ;; - decstation | decstation-3100 | pmax | pmax-* | pmin | dec3100 | decstatn) - basic_machine=mips-dec - ;; - decsystem10* | dec10*) - basic_machine=pdp10-dec - os=-tops10 - ;; - decsystem20* | dec20*) - basic_machine=pdp10-dec - os=-tops20 - ;; - delta | 3300 | motorola-3300 | motorola-delta \ - | 3300-motorola | delta-motorola) - basic_machine=m68k-motorola - ;; - delta88) - basic_machine=m88k-motorola - os=-sysv3 - ;; - dicos) - basic_machine=i686-pc - os=-dicos - ;; - djgpp) - basic_machine=i586-pc - os=-msdosdjgpp - ;; - dpx20 | dpx20-*) - basic_machine=rs6000-bull - os=-bosx - ;; - dpx2* | dpx2*-bull) - basic_machine=m68k-bull - os=-sysv3 - ;; - ebmon29k) - basic_machine=a29k-amd - os=-ebmon - ;; - elxsi) - basic_machine=elxsi-elxsi - os=-bsd - ;; - encore | umax | mmax) - basic_machine=ns32k-encore - ;; - es1800 | OSE68k | ose68k | ose | OSE) - basic_machine=m68k-ericsson - os=-ose - ;; - fx2800) - basic_machine=i860-alliant - ;; - genix) - basic_machine=ns32k-ns - ;; - gmicro) - basic_machine=tron-gmicro - os=-sysv - ;; - go32) - basic_machine=i386-pc - os=-go32 - ;; - h3050r* | hiux*) - basic_machine=hppa1.1-hitachi - os=-hiuxwe2 - ;; - h8300hms) - basic_machine=h8300-hitachi - os=-hms - ;; - h8300xray) - basic_machine=h8300-hitachi - os=-xray - ;; - h8500hms) - basic_machine=h8500-hitachi - os=-hms - ;; - harris) - basic_machine=m88k-harris - os=-sysv3 - ;; - hp300-*) - basic_machine=m68k-hp - ;; - hp300bsd) - basic_machine=m68k-hp - os=-bsd - ;; - hp300hpux) - basic_machine=m68k-hp - os=-hpux - ;; - hp3k9[0-9][0-9] | hp9[0-9][0-9]) - basic_machine=hppa1.0-hp - ;; - hp9k2[0-9][0-9] | hp9k31[0-9]) - basic_machine=m68000-hp - ;; - hp9k3[2-9][0-9]) - basic_machine=m68k-hp - ;; - hp9k6[0-9][0-9] | hp6[0-9][0-9]) - basic_machine=hppa1.0-hp - ;; - hp9k7[0-79][0-9] | hp7[0-79][0-9]) - basic_machine=hppa1.1-hp - ;; - hp9k78[0-9] | hp78[0-9]) - # FIXME: really hppa2.0-hp - basic_machine=hppa1.1-hp - ;; - hp9k8[67]1 | hp8[67]1 | hp9k80[24] | hp80[24] | hp9k8[78]9 | hp8[78]9 | hp9k893 | hp893) - # FIXME: really hppa2.0-hp - basic_machine=hppa1.1-hp - ;; - hp9k8[0-9][13679] | hp8[0-9][13679]) - basic_machine=hppa1.1-hp - ;; - hp9k8[0-9][0-9] | hp8[0-9][0-9]) - basic_machine=hppa1.0-hp - ;; - hppa-next) - os=-nextstep3 - ;; - hppaosf) - basic_machine=hppa1.1-hp - os=-osf - ;; - hppro) - basic_machine=hppa1.1-hp - os=-proelf - ;; - i370-ibm* | ibm*) - basic_machine=i370-ibm - ;; - i*86v32) - basic_machine=`echo $1 | sed -e 's/86.*/86-pc/'` - os=-sysv32 - ;; - i*86v4*) - basic_machine=`echo $1 | sed -e 's/86.*/86-pc/'` - os=-sysv4 - ;; - i*86v) - basic_machine=`echo $1 | sed -e 's/86.*/86-pc/'` - os=-sysv - ;; - i*86sol2) - basic_machine=`echo $1 | sed -e 's/86.*/86-pc/'` - os=-solaris2 - ;; - i386mach) - basic_machine=i386-mach - os=-mach - ;; - i386-vsta | vsta) - basic_machine=i386-unknown - os=-vsta - ;; - iris | iris4d) - basic_machine=mips-sgi - case $os in - -irix*) - ;; - *) - os=-irix4 - ;; - esac - ;; - isi68 | isi) - basic_machine=m68k-isi - os=-sysv - ;; - m68knommu) - basic_machine=m68k-unknown - os=-linux - ;; - m68knommu-*) - basic_machine=m68k-`echo $basic_machine | sed 's/^[^-]*-//'` - os=-linux - ;; - m88k-omron*) - basic_machine=m88k-omron - ;; - magnum | m3230) - basic_machine=mips-mips - os=-sysv - ;; - merlin) - basic_machine=ns32k-utek - os=-sysv - ;; - microblaze*) - basic_machine=microblaze-xilinx - ;; - mingw64) - basic_machine=x86_64-pc - os=-mingw64 - ;; - mingw32) - basic_machine=i686-pc - os=-mingw32 - ;; - mingw32ce) - basic_machine=arm-unknown - os=-mingw32ce - ;; - miniframe) - basic_machine=m68000-convergent - ;; - *mint | -mint[0-9]* | *MiNT | *MiNT[0-9]*) - basic_machine=m68k-atari - os=-mint - ;; - mips3*-*) - basic_machine=`echo $basic_machine | sed -e 's/mips3/mips64/'` - ;; - mips3*) - basic_machine=`echo $basic_machine | sed -e 's/mips3/mips64/'`-unknown - ;; - monitor) - basic_machine=m68k-rom68k - os=-coff - ;; - morphos) - basic_machine=powerpc-unknown - os=-morphos - ;; - moxiebox) - basic_machine=moxie-unknown - os=-moxiebox - ;; - msdos) - basic_machine=i386-pc - os=-msdos - ;; - ms1-*) - basic_machine=`echo $basic_machine | sed -e 's/ms1-/mt-/'` - ;; - msys) - basic_machine=i686-pc - os=-msys - ;; - mvs) - basic_machine=i370-ibm - os=-mvs - ;; - nacl) - basic_machine=le32-unknown - os=-nacl - ;; - ncr3000) - basic_machine=i486-ncr - os=-sysv4 - ;; - netbsd386) - basic_machine=i386-unknown - os=-netbsd - ;; - netwinder) - basic_machine=armv4l-rebel - os=-linux - ;; - news | news700 | news800 | news900) - basic_machine=m68k-sony - os=-newsos - ;; - news1000) - basic_machine=m68030-sony - os=-newsos - ;; - news-3600 | risc-news) - basic_machine=mips-sony - os=-newsos - ;; - necv70) - basic_machine=v70-nec - os=-sysv - ;; - next | m*-next ) - basic_machine=m68k-next - case $os in - -nextstep* ) - ;; - -ns2*) - os=-nextstep2 - ;; - *) - os=-nextstep3 - ;; - esac - ;; - nh3000) - basic_machine=m68k-harris - os=-cxux - ;; - nh[45]000) - basic_machine=m88k-harris - os=-cxux - ;; - nindy960) - basic_machine=i960-intel - os=-nindy - ;; - mon960) - basic_machine=i960-intel - os=-mon960 - ;; - nonstopux) - basic_machine=mips-compaq - os=-nonstopux - ;; - np1) - basic_machine=np1-gould - ;; - neo-tandem) - basic_machine=neo-tandem - ;; - nse-tandem) - basic_machine=nse-tandem - ;; - nsr-tandem) - basic_machine=nsr-tandem - ;; - op50n-* | op60c-*) - basic_machine=hppa1.1-oki - os=-proelf - ;; - openrisc | openrisc-*) - basic_machine=or32-unknown - ;; - os400) - basic_machine=powerpc-ibm - os=-os400 - ;; - OSE68000 | ose68000) - basic_machine=m68000-ericsson - os=-ose - ;; - os68k) - basic_machine=m68k-none - os=-os68k - ;; - pa-hitachi) - basic_machine=hppa1.1-hitachi - os=-hiuxwe2 - ;; - paragon) - basic_machine=i860-intel - os=-osf - ;; - parisc) - basic_machine=hppa-unknown - os=-linux - ;; - parisc-*) - basic_machine=hppa-`echo $basic_machine | sed 's/^[^-]*-//'` - os=-linux - ;; - pbd) - basic_machine=sparc-tti - ;; - pbb) - basic_machine=m68k-tti - ;; - pc532 | pc532-*) - basic_machine=ns32k-pc532 - ;; - pc98) - basic_machine=i386-pc - ;; - pc98-*) - basic_machine=i386-`echo $basic_machine | sed 's/^[^-]*-//'` - ;; - pentium | p5 | k5 | k6 | nexgen | viac3) - basic_machine=i586-pc - ;; - pentiumpro | p6 | 6x86 | athlon | athlon_*) - basic_machine=i686-pc - ;; - pentiumii | pentium2 | pentiumiii | pentium3) - basic_machine=i686-pc - ;; - pentium4) - basic_machine=i786-pc - ;; - pentium-* | p5-* | k5-* | k6-* | nexgen-* | viac3-*) - basic_machine=i586-`echo $basic_machine | sed 's/^[^-]*-//'` - ;; - pentiumpro-* | p6-* | 6x86-* | athlon-*) - basic_machine=i686-`echo $basic_machine | sed 's/^[^-]*-//'` - ;; - pentiumii-* | pentium2-* | pentiumiii-* | pentium3-*) - basic_machine=i686-`echo $basic_machine | sed 's/^[^-]*-//'` - ;; - pentium4-*) - basic_machine=i786-`echo $basic_machine | sed 's/^[^-]*-//'` - ;; - pn) - basic_machine=pn-gould - ;; - power) basic_machine=power-ibm - ;; - ppc | ppcbe) basic_machine=powerpc-unknown - ;; - ppc-* | ppcbe-*) - basic_machine=powerpc-`echo $basic_machine | sed 's/^[^-]*-//'` - ;; - ppcle | powerpclittle | ppc-le | powerpc-little) - basic_machine=powerpcle-unknown - ;; - ppcle-* | powerpclittle-*) - basic_machine=powerpcle-`echo $basic_machine | sed 's/^[^-]*-//'` - ;; - ppc64) basic_machine=powerpc64-unknown - ;; - ppc64-*) basic_machine=powerpc64-`echo $basic_machine | sed 's/^[^-]*-//'` - ;; - ppc64le | powerpc64little | ppc64-le | powerpc64-little) - basic_machine=powerpc64le-unknown - ;; - ppc64le-* | powerpc64little-*) - basic_machine=powerpc64le-`echo $basic_machine | sed 's/^[^-]*-//'` - ;; - ps2) - basic_machine=i386-ibm - ;; - pw32) - basic_machine=i586-unknown - os=-pw32 - ;; - rdos | rdos64) - basic_machine=x86_64-pc - os=-rdos - ;; - rdos32) - basic_machine=i386-pc - os=-rdos - ;; - rom68k) - basic_machine=m68k-rom68k - os=-coff - ;; - rm[46]00) - basic_machine=mips-siemens - ;; - rtpc | rtpc-*) - basic_machine=romp-ibm - ;; - s390 | s390-*) - basic_machine=s390-ibm - ;; - s390x | s390x-*) - basic_machine=s390x-ibm - ;; - sa29200) - basic_machine=a29k-amd - os=-udi - ;; - sb1) - basic_machine=mipsisa64sb1-unknown - ;; - sb1el) - basic_machine=mipsisa64sb1el-unknown - ;; - sde) - basic_machine=mipsisa32-sde - os=-elf - ;; - sei) - basic_machine=mips-sei - os=-seiux - ;; - sequent) - basic_machine=i386-sequent - ;; - sh) - basic_machine=sh-hitachi - os=-hms - ;; - sh5el) - basic_machine=sh5le-unknown - ;; - sh64) - basic_machine=sh64-unknown - ;; - sparclite-wrs | simso-wrs) - basic_machine=sparclite-wrs - os=-vxworks - ;; - sps7) - basic_machine=m68k-bull - os=-sysv2 - ;; - spur) - basic_machine=spur-unknown - ;; - st2000) - basic_machine=m68k-tandem - ;; - stratus) - basic_machine=i860-stratus - os=-sysv4 - ;; - strongarm-* | thumb-*) - basic_machine=arm-`echo $basic_machine | sed 's/^[^-]*-//'` - ;; - sun2) - basic_machine=m68000-sun - ;; - sun2os3) - basic_machine=m68000-sun - os=-sunos3 - ;; - sun2os4) - basic_machine=m68000-sun - os=-sunos4 - ;; - sun3os3) - basic_machine=m68k-sun - os=-sunos3 - ;; - sun3os4) - basic_machine=m68k-sun - os=-sunos4 - ;; - sun4os3) - basic_machine=sparc-sun - os=-sunos3 - ;; - sun4os4) - basic_machine=sparc-sun - os=-sunos4 - ;; - sun4sol2) - basic_machine=sparc-sun - os=-solaris2 - ;; - sun3 | sun3-*) - basic_machine=m68k-sun - ;; - sun4) - basic_machine=sparc-sun - ;; - sun386 | sun386i | roadrunner) - basic_machine=i386-sun - ;; - sv1) - basic_machine=sv1-cray - os=-unicos - ;; - symmetry) - basic_machine=i386-sequent - os=-dynix - ;; - t3e) - basic_machine=alphaev5-cray - os=-unicos - ;; - t90) - basic_machine=t90-cray - os=-unicos - ;; - tile*) - basic_machine=$basic_machine-unknown - os=-linux-gnu - ;; - tx39) - basic_machine=mipstx39-unknown - ;; - tx39el) - basic_machine=mipstx39el-unknown - ;; - toad1) - basic_machine=pdp10-xkl - os=-tops20 - ;; - tower | tower-32) - basic_machine=m68k-ncr - ;; - tpf) - basic_machine=s390x-ibm - os=-tpf - ;; - udi29k) - basic_machine=a29k-amd - os=-udi - ;; - ultra3) - basic_machine=a29k-nyu - os=-sym1 - ;; - v810 | necv810) - basic_machine=v810-nec - os=-none - ;; - vaxv) - basic_machine=vax-dec - os=-sysv - ;; - vms) - basic_machine=vax-dec - os=-vms - ;; - vpp*|vx|vx-*) - basic_machine=f301-fujitsu - ;; - vxworks960) - basic_machine=i960-wrs - os=-vxworks - ;; - vxworks68) - basic_machine=m68k-wrs - os=-vxworks - ;; - vxworks29k) - basic_machine=a29k-wrs - os=-vxworks - ;; - w65*) - basic_machine=w65-wdc - os=-none - ;; - w89k-*) - basic_machine=hppa1.1-winbond - os=-proelf - ;; - xbox) - basic_machine=i686-pc - os=-mingw32 - ;; - xps | xps100) - basic_machine=xps100-honeywell - ;; - xscale-* | xscalee[bl]-*) - basic_machine=`echo $basic_machine | sed 's/^xscale/arm/'` - ;; - ymp) - basic_machine=ymp-cray - os=-unicos - ;; - z8k-*-coff) - basic_machine=z8k-unknown - os=-sim - ;; - z80-*-coff) - basic_machine=z80-unknown - os=-sim - ;; - none) - basic_machine=none-none - os=-none - ;; - -# Here we handle the default manufacturer of certain CPU types. It is in -# some cases the only manufacturer, in others, it is the most popular. - w89k) - basic_machine=hppa1.1-winbond - ;; - op50n) - basic_machine=hppa1.1-oki - ;; - op60c) - basic_machine=hppa1.1-oki - ;; - romp) - basic_machine=romp-ibm - ;; - mmix) - basic_machine=mmix-knuth - ;; - rs6000) - basic_machine=rs6000-ibm - ;; - vax) - basic_machine=vax-dec - ;; - pdp10) - # there are many clones, so DEC is not a safe bet - basic_machine=pdp10-unknown - ;; - pdp11) - basic_machine=pdp11-dec - ;; - we32k) - basic_machine=we32k-att - ;; - sh[1234] | sh[24]a | sh[24]aeb | sh[34]eb | sh[1234]le | sh[23]ele) - basic_machine=sh-unknown - ;; - sparc | sparcv8 | sparcv9 | sparcv9b | sparcv9v) - basic_machine=sparc-sun - ;; - cydra) - basic_machine=cydra-cydrome - ;; - orion) - basic_machine=orion-highlevel - ;; - orion105) - basic_machine=clipper-highlevel - ;; - mac | mpw | mac-mpw) - basic_machine=m68k-apple - ;; - pmac | pmac-mpw) - basic_machine=powerpc-apple - ;; - *-unknown) - # Make sure to match an already-canonicalized machine name. - ;; - *) - echo Invalid configuration \`$1\': machine \`$basic_machine\' not recognized 1>&2 - exit 1 - ;; -esac - -# Here we canonicalize certain aliases for manufacturers. -case $basic_machine in - *-digital*) - basic_machine=`echo $basic_machine | sed 's/digital.*/dec/'` - ;; - *-commodore*) - basic_machine=`echo $basic_machine | sed 's/commodore.*/cbm/'` - ;; - *) - ;; -esac - -# Decode manufacturer-specific aliases for certain operating systems. - -if [ x"$os" != x"" ] -then -case $os in - # First match some system type aliases - # that might get confused with valid system types. - # -solaris* is a basic system type, with this one exception. - -auroraux) - os=-auroraux - ;; - -solaris1 | -solaris1.*) - os=`echo $os | sed -e 's|solaris1|sunos4|'` - ;; - -solaris) - os=-solaris2 - ;; - -svr4*) - os=-sysv4 - ;; - -unixware*) - os=-sysv4.2uw - ;; - -gnu/linux*) - os=`echo $os | sed -e 's|gnu/linux|linux-gnu|'` - ;; - # First accept the basic system types. - # The portable systems comes first. - # Each alternative MUST END IN A *, to match a version number. - # -sysv* is not here because it comes later, after sysvr4. - -gnu* | -bsd* | -mach* | -minix* | -genix* | -ultrix* | -irix* \ - | -*vms* | -sco* | -esix* | -isc* | -aix* | -cnk* | -sunos | -sunos[34]*\ - | -hpux* | -unos* | -osf* | -luna* | -dgux* | -auroraux* | -solaris* \ - | -sym* | -kopensolaris* | -plan9* \ - | -amigaos* | -amigados* | -msdos* | -newsos* | -unicos* | -aof* \ - | -aos* | -aros* \ - | -nindy* | -vxsim* | -vxworks* | -ebmon* | -hms* | -mvs* \ - | -clix* | -riscos* | -uniplus* | -iris* | -rtu* | -xenix* \ - | -hiux* | -386bsd* | -knetbsd* | -mirbsd* | -netbsd* \ - | -bitrig* | -openbsd* | -solidbsd* \ - | -ekkobsd* | -kfreebsd* | -freebsd* | -riscix* | -lynxos* \ - | -bosx* | -nextstep* | -cxux* | -aout* | -elf* | -oabi* \ - | -ptx* | -coff* | -ecoff* | -winnt* | -domain* | -vsta* \ - | -udi* | -eabi* | -lites* | -ieee* | -go32* | -aux* \ - | -chorusos* | -chorusrdb* | -cegcc* \ - | -cygwin* | -msys* | -pe* | -psos* | -moss* | -proelf* | -rtems* \ - | -mingw32* | -mingw64* | -linux-gnu* | -linux-android* \ - | -linux-newlib* | -linux-musl* | -linux-uclibc* \ - | -uxpv* | -beos* | -mpeix* | -udk* | -moxiebox* \ - | -interix* | -uwin* | -mks* | -rhapsody* | -darwin* | -opened* \ - | -openstep* | -oskit* | -conix* | -pw32* | -nonstopux* \ - | -storm-chaos* | -tops10* | -tenex* | -tops20* | -its* \ - | -os2* | -vos* | -palmos* | -uclinux* | -nucleus* \ - | -morphos* | -superux* | -rtmk* | -rtmk-nova* | -windiss* \ - | -powermax* | -dnix* | -nx6 | -nx7 | -sei* | -dragonfly* \ - | -skyos* | -haiku* | -rdos* | -toppers* | -drops* | -es* | -tirtos*) - # Remember, each alternative MUST END IN *, to match a version number. - ;; - -qnx*) - case $basic_machine in - x86-* | i*86-*) - ;; - *) - os=-nto$os - ;; - esac - ;; - -nto-qnx*) - ;; - -nto*) - os=`echo $os | sed -e 's|nto|nto-qnx|'` - ;; - -sim | -es1800* | -hms* | -xray | -os68k* | -none* | -v88r* \ - | -windows* | -osx | -abug | -netware* | -os9* | -beos* | -haiku* \ - | -macos* | -mpw* | -magic* | -mmixware* | -mon960* | -lnews*) - ;; - -mac*) - os=`echo $os | sed -e 's|mac|macos|'` - ;; - -linux-dietlibc) - os=-linux-dietlibc - ;; - -linux*) - os=`echo $os | sed -e 's|linux|linux-gnu|'` - ;; - -sunos5*) - os=`echo $os | sed -e 's|sunos5|solaris2|'` - ;; - -sunos6*) - os=`echo $os | sed -e 's|sunos6|solaris3|'` - ;; - -opened*) - os=-openedition - ;; - -os400*) - os=-os400 - ;; - -wince*) - os=-wince - ;; - -osfrose*) - os=-osfrose - ;; - -osf*) - os=-osf - ;; - -utek*) - os=-bsd - ;; - -dynix*) - os=-bsd - ;; - -acis*) - os=-aos - ;; - -atheos*) - os=-atheos - ;; - -syllable*) - os=-syllable - ;; - -386bsd) - os=-bsd - ;; - -ctix* | -uts*) - os=-sysv - ;; - -nova*) - os=-rtmk-nova - ;; - -ns2 ) - os=-nextstep2 - ;; - -nsk*) - os=-nsk - ;; - # Preserve the version number of sinix5. - -sinix5.*) - os=`echo $os | sed -e 's|sinix|sysv|'` - ;; - -sinix*) - os=-sysv4 - ;; - -tpf*) - os=-tpf - ;; - -triton*) - os=-sysv3 - ;; - -oss*) - os=-sysv3 - ;; - -svr4) - os=-sysv4 - ;; - -svr3) - os=-sysv3 - ;; - -sysvr4) - os=-sysv4 - ;; - # This must come after -sysvr4. - -sysv*) - ;; - -ose*) - os=-ose - ;; - -es1800*) - os=-ose - ;; - -xenix) - os=-xenix - ;; - -*mint | -mint[0-9]* | -*MiNT | -MiNT[0-9]*) - os=-mint - ;; - -aros*) - os=-aros - ;; - -zvmoe) - os=-zvmoe - ;; - -dicos*) - os=-dicos - ;; - -nacl*) - ;; - -none) - ;; - *) - # Get rid of the `-' at the beginning of $os. - os=`echo $os | sed 's/[^-]*-//'` - echo Invalid configuration \`$1\': system \`$os\' not recognized 1>&2 - exit 1 - ;; -esac -else - -# Here we handle the default operating systems that come with various machines. -# The value should be what the vendor currently ships out the door with their -# machine or put another way, the most popular os provided with the machine. - -# Note that if you're going to try to match "-MANUFACTURER" here (say, -# "-sun"), then you have to tell the case statement up towards the top -# that MANUFACTURER isn't an operating system. Otherwise, code above -# will signal an error saying that MANUFACTURER isn't an operating -# system, and we'll never get to this point. - -case $basic_machine in - score-*) - os=-elf - ;; - spu-*) - os=-elf - ;; - *-acorn) - os=-riscix1.2 - ;; - arm*-rebel) - os=-linux - ;; - arm*-semi) - os=-aout - ;; - c4x-* | tic4x-*) - os=-coff - ;; - c8051-*) - os=-elf - ;; - hexagon-*) - os=-elf - ;; - tic54x-*) - os=-coff - ;; - tic55x-*) - os=-coff - ;; - tic6x-*) - os=-coff - ;; - # This must come before the *-dec entry. - pdp10-*) - os=-tops20 - ;; - pdp11-*) - os=-none - ;; - *-dec | vax-*) - os=-ultrix4.2 - ;; - m68*-apollo) - os=-domain - ;; - i386-sun) - os=-sunos4.0.2 - ;; - m68000-sun) - os=-sunos3 - ;; - m68*-cisco) - os=-aout - ;; - mep-*) - os=-elf - ;; - mips*-cisco) - os=-elf - ;; - mips*-*) - os=-elf - ;; - or32-*) - os=-coff - ;; - *-tti) # must be before sparc entry or we get the wrong os. - os=-sysv3 - ;; - sparc-* | *-sun) - os=-sunos4.1.1 - ;; - *-be) - os=-beos - ;; - *-haiku) - os=-haiku - ;; - *-ibm) - os=-aix - ;; - *-knuth) - os=-mmixware - ;; - *-wec) - os=-proelf - ;; - *-winbond) - os=-proelf - ;; - *-oki) - os=-proelf - ;; - *-hp) - os=-hpux - ;; - *-hitachi) - os=-hiux - ;; - i860-* | *-att | *-ncr | *-altos | *-motorola | *-convergent) - os=-sysv - ;; - *-cbm) - os=-amigaos - ;; - *-dg) - os=-dgux - ;; - *-dolphin) - os=-sysv3 - ;; - m68k-ccur) - os=-rtu - ;; - m88k-omron*) - os=-luna - ;; - *-next ) - os=-nextstep - ;; - *-sequent) - os=-ptx - ;; - *-crds) - os=-unos - ;; - *-ns) - os=-genix - ;; - i370-*) - os=-mvs - ;; - *-next) - os=-nextstep3 - ;; - *-gould) - os=-sysv - ;; - *-highlevel) - os=-bsd - ;; - *-encore) - os=-bsd - ;; - *-sgi) - os=-irix - ;; - *-siemens) - os=-sysv4 - ;; - *-masscomp) - os=-rtu - ;; - f30[01]-fujitsu | f700-fujitsu) - os=-uxpv - ;; - *-rom68k) - os=-coff - ;; - *-*bug) - os=-coff - ;; - *-apple) - os=-macos - ;; - *-atari*) - os=-mint - ;; - *) - os=-none - ;; -esac -fi - -# Here we handle the case where we know the os, and the CPU type, but not the -# manufacturer. We pick the logical manufacturer. -vendor=unknown -case $basic_machine in - *-unknown) - case $os in - -riscix*) - vendor=acorn - ;; - -sunos*) - vendor=sun - ;; - -cnk*|-aix*) - vendor=ibm - ;; - -beos*) - vendor=be - ;; - -hpux*) - vendor=hp - ;; - -mpeix*) - vendor=hp - ;; - -hiux*) - vendor=hitachi - ;; - -unos*) - vendor=crds - ;; - -dgux*) - vendor=dg - ;; - -luna*) - vendor=omron - ;; - -genix*) - vendor=ns - ;; - -mvs* | -opened*) - vendor=ibm - ;; - -os400*) - vendor=ibm - ;; - -ptx*) - vendor=sequent - ;; - -tpf*) - vendor=ibm - ;; - -vxsim* | -vxworks* | -windiss*) - vendor=wrs - ;; - -aux*) - vendor=apple - ;; - -hms*) - vendor=hitachi - ;; - -mpw* | -macos*) - vendor=apple - ;; - -*mint | -mint[0-9]* | -*MiNT | -MiNT[0-9]*) - vendor=atari - ;; - -vos*) - vendor=stratus - ;; - esac - basic_machine=`echo $basic_machine | sed "s/unknown/$vendor/"` - ;; -esac - -echo $basic_machine$os -exit - -# Local variables: -# eval: (add-hook 'write-file-hooks 'time-stamp) -# time-stamp-start: "timestamp='" -# time-stamp-format: "%:y-%02m-%02d" -# time-stamp-end: "'" -# End: diff --git a/libs/apr-util/xml/expat/conftools/install-sh b/libs/apr-util/xml/expat/conftools/install-sh deleted file mode 100755 index e9de23842dc..00000000000 --- a/libs/apr-util/xml/expat/conftools/install-sh +++ /dev/null @@ -1,251 +0,0 @@ -#!/bin/sh -# -# install - install a program, script, or datafile -# This comes from X11R5 (mit/util/scripts/install.sh). -# -# Copyright 1991 by the Massachusetts Institute of Technology -# -# Permission to use, copy, modify, distribute, and sell this software and its -# documentation for any purpose is hereby granted without fee, provided that -# the above copyright notice appear in all copies and that both that -# copyright notice and this permission notice appear in supporting -# documentation, and that the name of M.I.T. not be used in advertising or -# publicity pertaining to distribution of the software without specific, -# written prior permission. M.I.T. makes no representations about the -# suitability of this software for any purpose. It is provided "as is" -# without express or implied warranty. -# -# Calling this script install-sh is preferred over install.sh, to prevent -# `make' implicit rules from creating a file called install from it -# when there is no Makefile. -# -# This script is compatible with the BSD install script, but was written -# from scratch. It can only install one file at a time, a restriction -# shared with many OS's install programs. - - -# set DOITPROG to echo to test this script - -# Don't use :- since 4.3BSD and earlier shells don't like it. -doit="${DOITPROG-}" - - -# put in absolute paths if you don't have them in your path; or use env. vars. - -mvprog="${MVPROG-mv}" -cpprog="${CPPROG-cp}" -chmodprog="${CHMODPROG-chmod}" -chownprog="${CHOWNPROG-chown}" -chgrpprog="${CHGRPPROG-chgrp}" -stripprog="${STRIPPROG-strip}" -rmprog="${RMPROG-rm}" -mkdirprog="${MKDIRPROG-mkdir}" - -transformbasename="" -transform_arg="" -instcmd="$mvprog" -chmodcmd="$chmodprog 0755" -chowncmd="" -chgrpcmd="" -stripcmd="" -rmcmd="$rmprog -f" -mvcmd="$mvprog" -src="" -dst="" -dir_arg="" - -while [ x"$1" != x ]; do - case $1 in - -c) instcmd="$cpprog" - shift - continue;; - - -d) dir_arg=true - shift - continue;; - - -m) chmodcmd="$chmodprog $2" - shift - shift - continue;; - - -o) chowncmd="$chownprog $2" - shift - shift - continue;; - - -g) chgrpcmd="$chgrpprog $2" - shift - shift - continue;; - - -s) stripcmd="$stripprog" - shift - continue;; - - -t=*) transformarg=`echo $1 | sed 's/-t=//'` - shift - continue;; - - -b=*) transformbasename=`echo $1 | sed 's/-b=//'` - shift - continue;; - - *) if [ x"$src" = x ] - then - src=$1 - else - # this colon is to work around a 386BSD /bin/sh bug - : - dst=$1 - fi - shift - continue;; - esac -done - -if [ x"$src" = x ] -then - echo "install: no input file specified" - exit 1 -else - true -fi - -if [ x"$dir_arg" != x ]; then - dst=$src - src="" - - if [ -d $dst ]; then - instcmd=: - chmodcmd="" - else - instcmd=mkdir - fi -else - -# Waiting for this to be detected by the "$instcmd $src $dsttmp" command -# might cause directories to be created, which would be especially bad -# if $src (and thus $dsttmp) contains '*'. - - if [ -f $src -o -d $src ] - then - true - else - echo "install: $src does not exist" - exit 1 - fi - - if [ x"$dst" = x ] - then - echo "install: no destination specified" - exit 1 - else - true - fi - -# If destination is a directory, append the input filename; if your system -# does not like double slashes in filenames, you may need to add some logic - - if [ -d $dst ] - then - dst="$dst"/`basename $src` - else - true - fi -fi - -## this sed command emulates the dirname command -dstdir=`echo $dst | sed -e 's,[^/]*$,,;s,/$,,;s,^$,.,'` - -# Make sure that the destination directory exists. -# this part is taken from Noah Friedman's mkinstalldirs script - -# Skip lots of stat calls in the usual case. -if [ ! -d "$dstdir" ]; then -defaultIFS=' -' -IFS="${IFS-${defaultIFS}}" - -oIFS="${IFS}" -# Some sh's can't handle IFS=/ for some reason. -IFS='%' -set - `echo ${dstdir} | sed -e 's@/@%@g' -e 's@^%@/@'` -IFS="${oIFS}" - -pathcomp='' - -while [ $# -ne 0 ] ; do - pathcomp="${pathcomp}${1}" - shift - - if [ ! -d "${pathcomp}" ] ; - then - $mkdirprog "${pathcomp}" - else - true - fi - - pathcomp="${pathcomp}/" -done -fi - -if [ x"$dir_arg" != x ] -then - $doit $instcmd $dst && - - if [ x"$chowncmd" != x ]; then $doit $chowncmd $dst; else true ; fi && - if [ x"$chgrpcmd" != x ]; then $doit $chgrpcmd $dst; else true ; fi && - if [ x"$stripcmd" != x ]; then $doit $stripcmd $dst; else true ; fi && - if [ x"$chmodcmd" != x ]; then $doit $chmodcmd $dst; else true ; fi -else - -# If we're going to rename the final executable, determine the name now. - - if [ x"$transformarg" = x ] - then - dstfile=`basename $dst` - else - dstfile=`basename $dst $transformbasename | - sed $transformarg`$transformbasename - fi - -# don't allow the sed command to completely eliminate the filename - - if [ x"$dstfile" = x ] - then - dstfile=`basename $dst` - else - true - fi - -# Make a temp file name in the proper directory. - - dsttmp=$dstdir/#inst.$$# - -# Move or copy the file name to the temp name - - $doit $instcmd $src $dsttmp && - - trap "rm -f ${dsttmp}" 0 && - -# and set any options; do chmod last to preserve setuid bits - -# If any of these fail, we abort the whole thing. If we want to -# ignore errors from any of these, just make sure not to ignore -# errors from the above "$doit $instcmd $src $dsttmp" command. - - if [ x"$chowncmd" != x ]; then $doit $chowncmd $dsttmp; else true;fi && - if [ x"$chgrpcmd" != x ]; then $doit $chgrpcmd $dsttmp; else true;fi && - if [ x"$stripcmd" != x ]; then $doit $stripcmd $dsttmp; else true;fi && - if [ x"$chmodcmd" != x ]; then $doit $chmodcmd $dsttmp; else true;fi && - -# Now rename the file to the real destination. - - $doit $rmcmd -f $dstdir/$dstfile && - $doit $mvcmd $dsttmp $dstdir/$dstfile - -fi && - - -exit 0 diff --git a/libs/apr-util/xml/expat/conftools/missing b/libs/apr-util/xml/expat/conftools/missing deleted file mode 100755 index 8c9d99736fa..00000000000 --- a/libs/apr-util/xml/expat/conftools/missing +++ /dev/null @@ -1,190 +0,0 @@ -#! /bin/sh -# Common stub for a few missing GNU programs while installing. -# Copyright (C) 1996, 1997 Free Software Foundation, Inc. -# Franc,ois Pinard , 1996. - -# 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, 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. - -if test $# -eq 0; then - echo 1>&2 "Try \`$0 --help' for more information" - exit 1 -fi - -case "$1" in - - -h|--h|--he|--hel|--help) - echo "\ -$0 [OPTION]... PROGRAM [ARGUMENT]... - -Handle \`PROGRAM [ARGUMENT]...' for when PROGRAM is missing, or return an -error status if there is no known handling for PROGRAM. - -Options: - -h, --help display this help and exit - -v, --version output version information and exit - -Supported PROGRAM values: - aclocal touch file \`aclocal.m4' - autoconf touch file \`configure' - autoheader touch file \`config.h.in' - automake touch all \`Makefile.in' files - bison create \`y.tab.[ch]', if possible, from existing .[ch] - flex create \`lex.yy.c', if possible, from existing .c - lex create \`lex.yy.c', if possible, from existing .c - makeinfo touch the output file - yacc create \`y.tab.[ch]', if possible, from existing .[ch]" - ;; - - -v|--v|--ve|--ver|--vers|--versi|--versio|--version) - echo "missing - GNU libit 0.0" - ;; - - -*) - echo 1>&2 "$0: Unknown \`$1' option" - echo 1>&2 "Try \`$0 --help' for more information" - exit 1 - ;; - - aclocal) - echo 1>&2 "\ -WARNING: \`$1' is missing on your system. You should only need it if - you modified \`acinclude.m4' or \`configure.ac'. You might want - to install the \`Automake' and \`Perl' packages. Grab them from - any GNU archive site." - touch aclocal.m4 - ;; - - autoconf) - echo 1>&2 "\ -WARNING: \`$1' is missing on your system. You should only need it if - you modified \`configure.ac'. You might want to install the - \`Autoconf' and \`GNU m4' packages. Grab them from any GNU - archive site." - touch configure - ;; - - autoheader) - echo 1>&2 "\ -WARNING: \`$1' is missing on your system. You should only need it if - you modified \`acconfig.h' or \`configure.ac'. You might want - to install the \`Autoconf' and \`GNU m4' packages. Grab them - from any GNU archive site." - files=`sed -n 's/^[ ]*A[CM]_CONFIG_HEADER(\([^)]*\)).*/\1/p' configure.ac` - test -z "$files" && files="config.h" - touch_files= - for f in $files; do - case "$f" in - *:*) touch_files="$touch_files "`echo "$f" | - sed -e 's/^[^:]*://' -e 's/:.*//'`;; - *) touch_files="$touch_files $f.in";; - esac - done - touch $touch_files - ;; - - automake) - echo 1>&2 "\ -WARNING: \`$1' is missing on your system. You should only need it if - you modified \`Makefile.am', \`acinclude.m4' or \`configure.ac'. - You might want to install the \`Automake' and \`Perl' packages. - Grab them from any GNU archive site." - find . -type f -name Makefile.am -print | - sed 's/\.am$/.in/' | - while read f; do touch "$f"; done - ;; - - bison|yacc) - echo 1>&2 "\ -WARNING: \`$1' is missing on your system. You should only need it if - you modified a \`.y' file. You may need the \`Bison' package - in order for those modifications to take effect. You can get - \`Bison' from any GNU archive site." - rm -f y.tab.c y.tab.h - if [ $# -ne 1 ]; then - eval LASTARG="\${$#}" - case "$LASTARG" in - *.y) - SRCFILE=`echo "$LASTARG" | sed 's/y$/c/'` - if [ -f "$SRCFILE" ]; then - cp "$SRCFILE" y.tab.c - fi - SRCFILE=`echo "$LASTARG" | sed 's/y$/h/'` - if [ -f "$SRCFILE" ]; then - cp "$SRCFILE" y.tab.h - fi - ;; - esac - fi - if [ ! -f y.tab.h ]; then - echo >y.tab.h - fi - if [ ! -f y.tab.c ]; then - echo 'main() { return 0; }' >y.tab.c - fi - ;; - - lex|flex) - echo 1>&2 "\ -WARNING: \`$1' is missing on your system. You should only need it if - you modified a \`.l' file. You may need the \`Flex' package - in order for those modifications to take effect. You can get - \`Flex' from any GNU archive site." - rm -f lex.yy.c - if [ $# -ne 1 ]; then - eval LASTARG="\${$#}" - case "$LASTARG" in - *.l) - SRCFILE=`echo "$LASTARG" | sed 's/l$/c/'` - if [ -f "$SRCFILE" ]; then - cp "$SRCFILE" lex.yy.c - fi - ;; - esac - fi - if [ ! -f lex.yy.c ]; then - echo 'main() { return 0; }' >lex.yy.c - fi - ;; - - makeinfo) - echo 1>&2 "\ -WARNING: \`$1' is missing on your system. You should only need it if - you modified a \`.texi' or \`.texinfo' file, or any other file - indirectly affecting the aspect of the manual. The spurious - call might also be the consequence of using a buggy \`make' (AIX, - DU, IRIX). You might want to install the \`Texinfo' package or - the \`GNU make' package. Grab either from any GNU archive site." - file=`echo "$*" | sed -n 's/.*-o \([^ ]*\).*/\1/p'` - if test -z "$file"; then - file=`echo "$*" | sed 's/.* \([^ ]*\) *$/\1/'` - file=`sed -n '/^@setfilename/ { s/.* \([^ ]*\) *$/\1/; p; q; }' $file` - fi - touch $file - ;; - - *) - echo 1>&2 "\ -WARNING: \`$1' is needed, and you do not seem to have it handy on your - system. You might have modified some files without having the - proper tools for further handling them. Check the \`README' file, - it often tells you about the needed prerequirements for installing - this package. You may also peek at any GNU archive site, in case - some other package would contain this missing \`$1' program." - exit 1 - ;; -esac - -exit 0 diff --git a/libs/apr-util/xml/expat/conftools/mkinstalldirs b/libs/apr-util/xml/expat/conftools/mkinstalldirs deleted file mode 100755 index 25b7bd1a0f4..00000000000 --- a/libs/apr-util/xml/expat/conftools/mkinstalldirs +++ /dev/null @@ -1,40 +0,0 @@ -#! /bin/sh -# mkinstalldirs --- make directory hierarchy -# Author: Noah Friedman -# Created: 1993-05-16 -# Public domain - -# $Id: mkinstalldirs 106501 2004-11-24 23:41:24Z nd $ - -errstatus=0 - -for file -do - set fnord `echo ":$file" | sed -ne 's/^:\//#/;s/^://;s/\// /g;s/^#/\//;p'` - shift - - pathcomp= - for d - do - pathcomp="$pathcomp$d" - case "$pathcomp" in - -* ) pathcomp=./$pathcomp ;; - esac - - if test ! -d "$pathcomp"; then - echo "mkdir $pathcomp" - - mkdir "$pathcomp" || lasterr=$? - - if test ! -d "$pathcomp"; then - errstatus=$lasterr - fi - fi - - pathcomp="$pathcomp/" - done -done - -exit $errstatus - -# mkinstalldirs ends here diff --git a/libs/apr-util/xml/expat/lib/Makefile.in b/libs/apr-util/xml/expat/lib/Makefile.in deleted file mode 100644 index b5e4b3def51..00000000000 --- a/libs/apr-util/xml/expat/lib/Makefile.in +++ /dev/null @@ -1,154 +0,0 @@ -################################################################ -# Process this file with top-level configure script to produce Makefile -# -# Copyright 2000 Clark Cooper -# -# This file is part of EXPAT. -# -# EXPAT is free software; you can redistribute it and/or modify it -# under the terms of the License (based on the MIT/X license) contained -# in the file COPYING that comes with this distribution. -# -# EXPAT IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, -# EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF -# MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. -# IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY -# CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, -# TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE -# SOFTWARE OR THE USE OR OTHER DEALINGS IN EXPAT. -# - - -SHELL = @SHELL@ - -srcdir = @srcdir@ -top_srcdir = @top_srcdir@ -VPATH = @srcdir@ -prefix = @prefix@ -exec_prefix = @exec_prefix@ - -blddir = @blddir@/lib -bindir = @bindir@ -sbindir = @sbindir@ -libexecdir = @libexecdir@ -datadir = @datadir@ -sysconfdir = @sysconfdir@ -sharedstatedir = @sharedstatedir@ -localstatedir = @localstatedir@ -libdir = @libdir@ -infodir = @infodir@ -mandir = @mandir@ -includedir = @includedir@ -oldincludedir = /usr/include - -subdir = lib - -top_builddir = .. - -INSTALL = @INSTALL@ -INSTALL_PROGRAM = @INSTALL_PROGRAM@ -INSTALL_SCRIPT = @INSTALL_SCRIPT@ -INSTALL_DATA = @INSTALL_DATA@ - -host_alias = @host_alias@ -host_triplet = @host@ -AS = @AS@ -CC = @CC@ -DLLTOOL = @DLLTOOL@ -LIBTOOL = @LIBTOOL@ -LN_S = @LN_S@ -OBJDUMP = @OBJDUMP@ -PACKAGE = @PACKAGE@ -RANLIB = @RANLIB@ -VERSION = @VERSION@ - -LIBRARY = libexpat.la -SOURCES = xmlparse.c xmltok.c xmlrole.c -OBJECTS = $(SOURCES:.c=.o) -LTOBJECTS = $(SOURCES:.c=.lo) - -TEMPLATES = xmltok_impl.c xmltok_ns.c -APIHEADER = expat.h -HEADERS = ascii.h iasciitab.h utf8tab.h xmltok.h asciitab.h latin1tab.h \ - nametab.h xmldef.h xmlrole.h xmltok_impl.h - -mkinstalldirs = $(SHELL) $(top_srcdir)/conftools/mkinstalldirs -CONFIG_HEADER = ../config.h -CONFIG_CLEAN_FILES = - -INCLUDES = -I$(srcdir) -I.. -I$(blddir) -DEFS = @DEFS@ -DPACKAGE='"$(PACKAGE)"' -DVERSION='"$(PACKAGE)_$(VERSION)"' - -CPPFLAGS = @CPPFLAGS@ -LDFLAGS = @LDFLAGS@ -LIBS = @LIBS@ -CFLAGS = @CFLAGS@ - -LIBREVISION = @LIBREVISION@ -LIBCURRENT = @LIBCURRENT@ -LIBAGE = @LIBAGE@ - -COMPILE = $(CC) $(DEFS) $(INCLUDES) $(CPPFLAGS) $(CFLAGS) -LTCOMPILE = $(LIBTOOL) --mode=compile $(CC) $(DEFS) $(INCLUDES) $(CPPFLAGS) $(CFLAGS) -CCLD = $(CC) -LINK = $(LIBTOOL) --mode=link $(CCLD) -version-info $(LIBCURRENT):$(LIBREVISION):$(LIBAGE) $(CFLAGS) $(LDFLAGS) -o $@ -DIST_COMMON = Makefile.in - - -DISTFILES = $(DIST_COMMON) $(SOURCES) $(TEMPLATES) $(APIHEADER) $(HEADERS) - -TAR = gtar -GZIP_ENV = --best - -all: $(LIBRARY) - -.SUFFIXES: .c .lo .o -.PHONY: all clean distclean maintainer-clean - -.c.o: - $(COMPILE) -c $< - -.c.lo: - $(LTCOMPILE) -c $< - -Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status - cd $(top_builddir) \ - && CONFIG_FILES=$(subdir)/$@ CONFIG_HEADERS= $(SHELL) ./config.status - -$(top_builddir)/config.status: $(top_builddir)/configure - cd $(top_builddir) && $(MAKE) config.status - -$(top_builddir)/config.h: $(top_builddir)/config.h.in - cd $(top_builddir) && $(MAKE) config.h - -clean: - rm -f $(LIBRARY) *.o *.lo *~ - rm -rf .libs _libs - -distclean: clean - rm -f Makefile expat.h - -maintainer-clean: distclean - -install: $(LIBRARY) $(APIHEADER) - $(mkinstalldirs) $(DESTDIR)$(libdir) $(DESTDIR)$(includedir) - $(LIBTOOL) --mode=install $(INSTALL) $(LIBRARY) $(DESTDIR)$(libdir)/$(LIBRARY) - $(INSTALL_DATA) $(APIHEADER) $(DESTDIR)$(includedir) - -uninstall: - $(LIBTOOL) --mode=uninstall rm -f $(DESTDIR)$(libdir)/$(LIBRARY); - rm -f $(DESTDIR)$(libdir)/$(APIHEADER) - -$(LIBRARY): $(LTOBJECTS) - $(LINK) -rpath $(libdir) $(LDFLAGS) $(LTOBJECTS) - -xmlparse.o \ -xmlparse.lo: xmlparse.c expat.h xmlrole.h xmltok.h $(top_builddir)/config.h - -xmlrole.o \ -xmlrole.lo: xmlrole.c ascii.h xmlrole.h $(top_builddir)/config.h - -xmltok.o \ -xmltok.lo: xmltok.c xmltok_impl.c xmltok_ns.c \ - ascii.h asciitab.h iasciitab.h latin1tab.h nametab.h utf8tab.h \ - xmltok.h xmltok_impl.h $(top_builddir)/config.h diff --git a/libs/apr-util/xml/expat/lib/ascii.h b/libs/apr-util/xml/expat/lib/ascii.h deleted file mode 100644 index 6376b1f311b..00000000000 --- a/libs/apr-util/xml/expat/lib/ascii.h +++ /dev/null @@ -1,86 +0,0 @@ -/* -Copyright (c) 1998, 1999 Thai Open Source Software Center Ltd -See the file COPYING for copying permission. -*/ - -#define ASCII_A 0x41 -#define ASCII_B 0x42 -#define ASCII_C 0x43 -#define ASCII_D 0x44 -#define ASCII_E 0x45 -#define ASCII_F 0x46 -#define ASCII_G 0x47 -#define ASCII_H 0x48 -#define ASCII_I 0x49 -#define ASCII_J 0x4A -#define ASCII_K 0x4B -#define ASCII_L 0x4C -#define ASCII_M 0x4D -#define ASCII_N 0x4E -#define ASCII_O 0x4F -#define ASCII_P 0x50 -#define ASCII_Q 0x51 -#define ASCII_R 0x52 -#define ASCII_S 0x53 -#define ASCII_T 0x54 -#define ASCII_U 0x55 -#define ASCII_V 0x56 -#define ASCII_W 0x57 -#define ASCII_X 0x58 -#define ASCII_Y 0x59 -#define ASCII_Z 0x5A - -#define ASCII_a 0x61 -#define ASCII_b 0x62 -#define ASCII_c 0x63 -#define ASCII_d 0x64 -#define ASCII_e 0x65 -#define ASCII_f 0x66 -#define ASCII_g 0x67 -#define ASCII_h 0x68 -#define ASCII_i 0x69 -#define ASCII_j 0x6A -#define ASCII_k 0x6B -#define ASCII_l 0x6C -#define ASCII_m 0x6D -#define ASCII_n 0x6E -#define ASCII_o 0x6F -#define ASCII_p 0x70 -#define ASCII_q 0x71 -#define ASCII_r 0x72 -#define ASCII_s 0x73 -#define ASCII_t 0x74 -#define ASCII_u 0x75 -#define ASCII_v 0x76 -#define ASCII_w 0x77 -#define ASCII_x 0x78 -#define ASCII_y 0x79 -#define ASCII_z 0x7A - -#define ASCII_0 0x30 -#define ASCII_1 0x31 -#define ASCII_2 0x32 -#define ASCII_3 0x33 -#define ASCII_4 0x34 -#define ASCII_5 0x35 -#define ASCII_6 0x36 -#define ASCII_7 0x37 -#define ASCII_8 0x38 -#define ASCII_9 0x39 - -#define ASCII_TAB 0x09 -#define ASCII_SPACE 0x20 -#define ASCII_EXCL 0x21 -#define ASCII_QUOT 0x22 -#define ASCII_AMP 0x26 -#define ASCII_APOS 0x27 -#define ASCII_MINUS 0x2D -#define ASCII_PERIOD 0x2E -#define ASCII_COLON 0x3A -#define ASCII_SEMI 0x3B -#define ASCII_LT 0x3C -#define ASCII_EQUALS 0x3D -#define ASCII_GT 0x3E -#define ASCII_LSQB 0x5B -#define ASCII_RSQB 0x5D -#define ASCII_UNDERSCORE 0x5F diff --git a/libs/apr-util/xml/expat/lib/asciitab.h b/libs/apr-util/xml/expat/lib/asciitab.h deleted file mode 100644 index eb445cc52c1..00000000000 --- a/libs/apr-util/xml/expat/lib/asciitab.h +++ /dev/null @@ -1,37 +0,0 @@ -/* -Copyright (c) 1998, 1999 Thai Open Source Software Center Ltd -See the file COPYING for copying permission. -*/ - -/* 0x00 */ BT_NONXML, BT_NONXML, BT_NONXML, BT_NONXML, -/* 0x04 */ BT_NONXML, BT_NONXML, BT_NONXML, BT_NONXML, -/* 0x08 */ BT_NONXML, BT_S, BT_LF, BT_NONXML, -/* 0x0C */ BT_NONXML, BT_CR, BT_NONXML, BT_NONXML, -/* 0x10 */ BT_NONXML, BT_NONXML, BT_NONXML, BT_NONXML, -/* 0x14 */ BT_NONXML, BT_NONXML, BT_NONXML, BT_NONXML, -/* 0x18 */ BT_NONXML, BT_NONXML, BT_NONXML, BT_NONXML, -/* 0x1C */ BT_NONXML, BT_NONXML, BT_NONXML, BT_NONXML, -/* 0x20 */ BT_S, BT_EXCL, BT_QUOT, BT_NUM, -/* 0x24 */ BT_OTHER, BT_PERCNT, BT_AMP, BT_APOS, -/* 0x28 */ BT_LPAR, BT_RPAR, BT_AST, BT_PLUS, -/* 0x2C */ BT_COMMA, BT_MINUS, BT_NAME, BT_SOL, -/* 0x30 */ BT_DIGIT, BT_DIGIT, BT_DIGIT, BT_DIGIT, -/* 0x34 */ BT_DIGIT, BT_DIGIT, BT_DIGIT, BT_DIGIT, -/* 0x38 */ BT_DIGIT, BT_DIGIT, BT_COLON, BT_SEMI, -/* 0x3C */ BT_LT, BT_EQUALS, BT_GT, BT_QUEST, -/* 0x40 */ BT_OTHER, BT_HEX, BT_HEX, BT_HEX, -/* 0x44 */ BT_HEX, BT_HEX, BT_HEX, BT_NMSTRT, -/* 0x48 */ BT_NMSTRT, BT_NMSTRT, BT_NMSTRT, BT_NMSTRT, -/* 0x4C */ BT_NMSTRT, BT_NMSTRT, BT_NMSTRT, BT_NMSTRT, -/* 0x50 */ BT_NMSTRT, BT_NMSTRT, BT_NMSTRT, BT_NMSTRT, -/* 0x54 */ BT_NMSTRT, BT_NMSTRT, BT_NMSTRT, BT_NMSTRT, -/* 0x58 */ BT_NMSTRT, BT_NMSTRT, BT_NMSTRT, BT_LSQB, -/* 0x5C */ BT_OTHER, BT_RSQB, BT_OTHER, BT_NMSTRT, -/* 0x60 */ BT_OTHER, BT_HEX, BT_HEX, BT_HEX, -/* 0x64 */ BT_HEX, BT_HEX, BT_HEX, BT_NMSTRT, -/* 0x68 */ BT_NMSTRT, BT_NMSTRT, BT_NMSTRT, BT_NMSTRT, -/* 0x6C */ BT_NMSTRT, BT_NMSTRT, BT_NMSTRT, BT_NMSTRT, -/* 0x70 */ BT_NMSTRT, BT_NMSTRT, BT_NMSTRT, BT_NMSTRT, -/* 0x74 */ BT_NMSTRT, BT_NMSTRT, BT_NMSTRT, BT_NMSTRT, -/* 0x78 */ BT_NMSTRT, BT_NMSTRT, BT_NMSTRT, BT_OTHER, -/* 0x7C */ BT_VERBAR, BT_OTHER, BT_OTHER, BT_OTHER, diff --git a/libs/apr-util/xml/expat/lib/config.hnw b/libs/apr-util/xml/expat/lib/config.hnw deleted file mode 100644 index de129d343c8..00000000000 --- a/libs/apr-util/xml/expat/lib/config.hnw +++ /dev/null @@ -1,23 +0,0 @@ -/*================================================================ -** Copyright 2000, Clark Cooper -** All rights reserved. -** -** This is free software. You are permitted to copy, distribute, or modify -** it under the terms of the MIT/X license (contained in the COPYING file -** with this distribution.) -** -** -*/ - -#ifndef CONFIG_HNW -#define CONFIG_HNW - -#include -#include - -#define XML_NS 1 -#define XML_DTD 1 -#define XML_BYTE_ORDER 12 -#define XML_CONTEXT_BYTES 1024 - -#endif /* ndef CONFIG_HNW */ diff --git a/libs/apr-util/xml/expat/lib/expat.dsp b/libs/apr-util/xml/expat/lib/expat.dsp deleted file mode 100644 index 3de22e9eb3b..00000000000 --- a/libs/apr-util/xml/expat/lib/expat.dsp +++ /dev/null @@ -1,227 +0,0 @@ -# Microsoft Developer Studio Project File - Name="expat" - Package Owner=<4> -# Microsoft Developer Studio Generated Build File, Format Version 6.00 -# ** DO NOT EDIT ** - -# TARGTYPE "Win32 (x86) Dynamic-Link Library" 0x0102 - -CFG=expat - Win32 Debug -!MESSAGE This is not a valid makefile. To build this project using NMAKE, -!MESSAGE use the Export Makefile command and run -!MESSAGE -!MESSAGE NMAKE /f "expat.mak". -!MESSAGE -!MESSAGE You can specify a configuration when running NMAKE -!MESSAGE by defining the macro CFG on the command line. For example: -!MESSAGE -!MESSAGE NMAKE /f "expat.mak" CFG="expat - Win32 Debug" -!MESSAGE -!MESSAGE Possible choices for configuration are: -!MESSAGE -!MESSAGE "expat - Win32 Release" (based on "Win32 (x86) Dynamic-Link Library") -!MESSAGE "expat - Win32 Debug" (based on "Win32 (x86) Dynamic-Link Library") -!MESSAGE - -# Begin Project -# PROP AllowPerConfigDependencies 0 -# PROP Scc_ProjName "" -# PROP Scc_LocalPath "" -CPP=cl.exe -MTL=midl.exe -RSC=rc.exe - -!IF "$(CFG)" == "expat - Win32 Release" - -# PROP BASE Use_MFC 0 -# PROP BASE Use_Debug_Libraries 0 -# PROP BASE Output_Dir "Release" -# PROP BASE Intermediate_Dir "Release" -# PROP BASE Target_Dir "" -# PROP Use_MFC 0 -# PROP Use_Debug_Libraries 0 -# PROP Output_Dir "Release" -# PROP Intermediate_Dir "Release" -# PROP Target_Dir "" -# ADD BASE CPP /nologo /MT /W3 /EHsc /O2 /D "WIN32" /D "NDEBUG" /D "_WINDOWS" /D "_MBCS" /D "_USRDLL" /D "EXPAT_EXPORTS" /Yu"stdafx.h" /FD /c -# ADD CPP /nologo /MT /W3 /EHsc /O2 /D "NDEBUG" /D "WIN32" /D "_WINDOWS" /D "_MBCS" /D "_USRDLL" /D "EXPAT_EXPORTS" /D "COMPILED_FROM_DSP" /Yu"stdafx.h" /FD /c -# ADD BASE MTL /nologo /D "NDEBUG" /mktyplib203 /win32 -# ADD MTL /nologo /D "NDEBUG" /mktyplib203 /win32 -# ADD BASE RSC /l 0x409 /d "NDEBUG" -# ADD RSC /l 0x409 /d "NDEBUG" -BSC32=bscmake.exe -# ADD BASE BSC32 /nologo -# ADD BSC32 /nologo -LINK32=link.exe -# ADD BASE LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /dll /machine:I386 -# ADD LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /dll /machine:I386 - -!ELSEIF "$(CFG)" == "expat - Win32 Debug" - -# PROP BASE Use_MFC 0 -# PROP BASE Use_Debug_Libraries 1 -# PROP BASE Output_Dir "Debug" -# PROP BASE Intermediate_Dir "Debug" -# PROP BASE Target_Dir "" -# PROP Use_MFC 0 -# PROP Use_Debug_Libraries 1 -# PROP Output_Dir "Debug" -# PROP Intermediate_Dir "Debug" -# PROP Ignore_Export_Lib 0 -# PROP Target_Dir "" -# ADD BASE CPP /nologo /MTd /W3 /Gm /EHsc /Zi /Od /D "WIN32" /D "_DEBUG" /D "_WINDOWS" /D "_MBCS" /D "_USRDLL" /D "EXPAT_EXPORTS" /Yu"stdafx.h" /FD /GZ /c -# ADD CPP /nologo /MTd /W3 /EHsc /Zi /Od /D "_DEBUG" /D "COMPILED_FROM_DSP" /D "WIN32" /D "_WINDOWS" /D "_MBCS" /D "_USRDLL" /D "EXPAT_EXPORTS" /FD /GZ /c -# ADD BASE MTL /nologo /D "_DEBUG" /mktyplib203 /win32 -# ADD MTL /nologo /D "_DEBUG" /mktyplib203 /win32 -# ADD BASE RSC /l 0x409 /d "_DEBUG" -# ADD RSC /l 0x409 /d "_DEBUG" -BSC32=bscmake.exe -# ADD BASE BSC32 /nologo -# ADD BSC32 /nologo -LINK32=link.exe -# ADD BASE LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /dll /debug /machine:I386 /pdbtype:sept -# ADD LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /dll /debug /machine:I386 /pdbtype:sept - -!ENDIF - -# Begin Target - -# Name "expat - Win32 Release" -# Name "expat - Win32 Debug" -# Begin Group "Source Files" - -# PROP Default_Filter "cpp;c;cxx;rc;def;r;odl;idl;hpj;bat" -# Begin Source File - -SOURCE=.\xmlparse.c - -!IF "$(CFG)" == "expat - Win32 Release" - -# ADD CPP /D VERSION=\"expat_1.95.2\" - -!ELSEIF "$(CFG)" == "expat - Win32 Debug" - -# ADD CPP /GX- /Od /D VERSION=\"expat_1.95.2\" - -!ENDIF - -# End Source File -# Begin Source File - -SOURCE=.\xmlrole.c - -!IF "$(CFG)" == "expat - Win32 Release" - -# ADD CPP /D VERSION=\"expat_1.95.2\" - -!ELSEIF "$(CFG)" == "expat - Win32 Debug" - -# ADD CPP /D VERSION=\"expat_1.95.2\" - -!ENDIF - -# End Source File -# Begin Source File - -SOURCE=.\xmltok.c - -!IF "$(CFG)" == "expat - Win32 Release" - -# ADD CPP /D VERSION=\"expat_1.95.2\" - -!ELSEIF "$(CFG)" == "expat - Win32 Debug" - -# ADD CPP /D VERSION=\"expat_1.95.2\" - -!ENDIF - -# End Source File -# Begin Source File - -SOURCE=xmltok_impl.c - -!IF "$(CFG)" == "expat - Win32 Release" - -# ADD CPP /D VERSION=\"expat_1.95.2\" - -!ELSEIF "$(CFG)" == "expat - Win32 Debug" - -# PROP Exclude_From_Build 1 -# ADD CPP /D VERSION=\"expat_1.95.2\" - -!ENDIF - -# End Source File -# Begin Source File - -SOURCE=xmltok_ns.c - -!IF "$(CFG)" == "expat - Win32 Release" - -# ADD CPP /D VERSION=\"expat_1.95.2\" - -!ELSEIF "$(CFG)" == "expat - Win32 Debug" - -# PROP Exclude_From_Build 1 -# ADD CPP /D VERSION=\"expat_1.95.2\" - -!ENDIF - -# End Source File -# End Group -# Begin Group "Header Files" - -# PROP Default_Filter "h;hpp;hxx;hm;inl" -# Begin Source File - -SOURCE=.\ascii.h -# End Source File -# Begin Source File - -SOURCE=.\asciitab.h -# End Source File -# Begin Source File - -SOURCE=.\config.h -# End Source File -# Begin Source File - -SOURCE=.\expat.h -# End Source File -# Begin Source File - -SOURCE=.\iasciitab.h -# End Source File -# Begin Source File - -SOURCE=.\latin1tab.h -# End Source File -# Begin Source File - -SOURCE=.\nametab.h -# End Source File -# Begin Source File - -SOURCE=.\utf8tab.h -# End Source File -# Begin Source File - -SOURCE=.\xmlrole.h -# End Source File -# Begin Source File - -SOURCE=.\xmltok.h -# End Source File -# Begin Source File - -SOURCE=.\xmltok_impl.h -# End Source File -# End Group -# Begin Group "Resource Files" - -# PROP Default_Filter "ico;cur;bmp;dlg;rc2;rct;bin;rgs;gif;jpg;jpeg;jpe" -# End Group -# Begin Source File - -SOURCE=.\ReadMe.txt -# End Source File -# End Target -# End Project diff --git a/libs/apr-util/xml/expat/lib/expat.h.in b/libs/apr-util/xml/expat/lib/expat.h.in deleted file mode 100644 index 9e440e20097..00000000000 --- a/libs/apr-util/xml/expat/lib/expat.h.in +++ /dev/null @@ -1,742 +0,0 @@ -/* -Copyright (c) 1998, 1999, 2000 Thai Open Source Software Center Ltd -See the file COPYING for copying permission. -*/ - -#ifndef XmlParse_INCLUDED -#define XmlParse_INCLUDED 1 - -#include - -#ifndef XMLPARSEAPI -# if defined(__declspec) && !defined(__CYGWIN__) -# define XMLPARSEAPI __declspec(dllimport) -# else -# define XMLPARSEAPI /* nothing */ -# endif -#endif /* not defined XMLPARSEAPI */ - -#ifdef __cplusplus -extern "C" { -#endif - -typedef void *XML_Parser; - -/* Information is UTF-8 encoded. */ -typedef char XML_Char; -typedef char XML_LChar; - -enum XML_Content_Type { - XML_CTYPE_EMPTY = 1, - XML_CTYPE_ANY, - XML_CTYPE_MIXED, - XML_CTYPE_NAME, - XML_CTYPE_CHOICE, - XML_CTYPE_SEQ -}; - -enum XML_Content_Quant { - XML_CQUANT_NONE, - XML_CQUANT_OPT, - XML_CQUANT_REP, - XML_CQUANT_PLUS -}; - -/* If type == XML_CTYPE_EMPTY or XML_CTYPE_ANY, then quant will be - XML_CQUANT_NONE, and the other fields will be zero or NULL. - If type == XML_CTYPE_MIXED, then quant will be NONE or REP and - numchildren will contain number of elements that may be mixed in - and children point to an array of XML_Content cells that will be - all of XML_CTYPE_NAME type with no quantification. - - If type == XML_CTYPE_NAME, then the name points to the name, and - the numchildren field will be zero and children will be NULL. The - quant fields indicates any quantifiers placed on the name. - - CHOICE and SEQ will have name NULL, the number of children in - numchildren and children will point, recursively, to an array - of XML_Content cells. - - The EMPTY, ANY, and MIXED types will only occur at top level. -*/ - -typedef struct XML_cp XML_Content; - -struct XML_cp { - enum XML_Content_Type type; - enum XML_Content_Quant quant; - const XML_Char * name; - unsigned int numchildren; - XML_Content * children; -}; - - -/* This is called for an element declaration. See above for - description of the model argument. It's the caller's responsibility - to free model when finished with it. -*/ - -typedef void (*XML_ElementDeclHandler) (void *userData, - const XML_Char *name, - XML_Content *model); - -void XMLPARSEAPI -XML_SetElementDeclHandler(XML_Parser parser, - XML_ElementDeclHandler eldecl); - -/* - The Attlist declaration handler is called for *each* attribute. So - a single Attlist declaration with multiple attributes declared will - generate multiple calls to this handler. The "default" parameter - may be NULL in the case of the "#IMPLIED" or "#REQUIRED" keyword. - The "isrequired" parameter will be true and the default value will - be NULL in the case of "#REQUIRED". If "isrequired" is true and - default is non-NULL, then this is a "#FIXED" default. - */ - -typedef void (*XML_AttlistDeclHandler) (void *userData, - const XML_Char *elname, - const XML_Char *attname, - const XML_Char *att_type, - const XML_Char *dflt, - int isrequired); - -void XMLPARSEAPI -XML_SetAttlistDeclHandler(XML_Parser parser, - XML_AttlistDeclHandler attdecl); - - - /* The XML declaration handler is called for *both* XML declarations and - text declarations. The way to distinguish is that the version parameter - will be null for text declarations. The encoding parameter may be null - for XML declarations. The standalone parameter will be -1, 0, or 1 - indicating respectively that there was no standalone parameter in - the declaration, that it was given as no, or that it was given as yes. - */ - -typedef void (*XML_XmlDeclHandler) (void *userData, - const XML_Char *version, - const XML_Char *encoding, - int standalone); - -void XMLPARSEAPI -XML_SetXmlDeclHandler(XML_Parser parser, - XML_XmlDeclHandler xmldecl); - - -typedef struct { - void *(*malloc_fcn)(size_t size); - void *(*realloc_fcn)(void *ptr, size_t size); - void (*free_fcn)(void *ptr); -} XML_Memory_Handling_Suite; - -/* Constructs a new parser; encoding is the encoding specified by the -external protocol or null if there is none specified. */ - -XML_Parser XMLPARSEAPI -XML_ParserCreate(const XML_Char *encoding); - -/* Constructs a new parser and namespace processor. Element type -names and attribute names that belong to a namespace will be expanded; -unprefixed attribute names are never expanded; unprefixed element type -names are expanded only if there is a default namespace. The expanded -name is the concatenation of the namespace URI, the namespace -separator character, and the local part of the name. If the namespace -separator is '\0' then the namespace URI and the local part will be -concatenated without any separator. When a namespace is not declared, -the name and prefix will be passed through without expansion. */ - -XML_Parser XMLPARSEAPI -XML_ParserCreateNS(const XML_Char *encoding, XML_Char namespaceSeparator); - - -/* Constructs a new parser using the memory management suit referred to - by memsuite. If memsuite is NULL, then use the standard library memory - suite. If namespaceSeparator is non-NULL it creates a parser with - namespace processing as described above. The character pointed at - will serve as the namespace separator. - - All further memory operations used for the created parser will come from - the given suite. -*/ - -XML_Parser XMLPARSEAPI -XML_ParserCreate_MM(const XML_Char *encoding, - const XML_Memory_Handling_Suite *memsuite, - const XML_Char *namespaceSeparator); - -/* atts is array of name/value pairs, terminated by 0; - names and values are 0 terminated. */ - -typedef void (*XML_StartElementHandler)(void *userData, - const XML_Char *name, - const XML_Char **atts); - -typedef void (*XML_EndElementHandler)(void *userData, - const XML_Char *name); - - -/* s is not 0 terminated. */ -typedef void (*XML_CharacterDataHandler)(void *userData, - const XML_Char *s, - int len); - -/* target and data are 0 terminated */ -typedef void (*XML_ProcessingInstructionHandler)(void *userData, - const XML_Char *target, - const XML_Char *data); - -/* data is 0 terminated */ -typedef void (*XML_CommentHandler)(void *userData, const XML_Char *data); - -typedef void (*XML_StartCdataSectionHandler)(void *userData); -typedef void (*XML_EndCdataSectionHandler)(void *userData); - -/* This is called for any characters in the XML document for -which there is no applicable handler. This includes both -characters that are part of markup which is of a kind that is -not reported (comments, markup declarations), or characters -that are part of a construct which could be reported but -for which no handler has been supplied. The characters are passed -exactly as they were in the XML document except that -they will be encoded in UTF-8. Line boundaries are not normalized. -Note that a byte order mark character is not passed to the default handler. -There are no guarantees about how characters are divided between calls -to the default handler: for example, a comment might be split between -multiple calls. */ - -typedef void (*XML_DefaultHandler)(void *userData, - const XML_Char *s, - int len); - -/* This is called for the start of the DOCTYPE declaration, before - any DTD or internal subset is parsed. */ - -typedef void (*XML_StartDoctypeDeclHandler)(void *userData, - const XML_Char *doctypeName, - const XML_Char *sysid, - const XML_Char *pubid, - int has_internal_subset - ); - -/* This is called for the start of the DOCTYPE declaration when the -closing > is encountered, but after processing any external subset. */ -typedef void (*XML_EndDoctypeDeclHandler)(void *userData); - -/* This is called for entity declarations. The is_parameter_entity - argument will be non-zero if the entity is a parameter entity, zero - otherwise. - - For internal entities (), value will - be non-null and systemId, publicID, and notationName will be null. - The value string is NOT null terminated; the length is provided in - the value_length argument. Since it is legal to have zero-length - values, do not use this argument to test for internal entities. - - For external entities, value will be null and systemId will be non-null. - The publicId argument will be null unless a public identifier was - provided. The notationName argument will have a non-null value only - for unparsed entity declarations. -*/ - -typedef void (*XML_EntityDeclHandler) (void *userData, - const XML_Char *entityName, - int is_parameter_entity, - const XML_Char *value, - int value_length, - const XML_Char *base, - const XML_Char *systemId, - const XML_Char *publicId, - const XML_Char *notationName); - -void XMLPARSEAPI -XML_SetEntityDeclHandler(XML_Parser parser, - XML_EntityDeclHandler handler); - -/* OBSOLETE -- OBSOLETE -- OBSOLETE - This handler has been superceded by the EntityDeclHandler above. - It is provided here for backward compatibility. -This is called for a declaration of an unparsed (NDATA) -entity. The base argument is whatever was set by XML_SetBase. -The entityName, systemId and notationName arguments will never be null. -The other arguments may be. */ - -typedef void (*XML_UnparsedEntityDeclHandler)(void *userData, - const XML_Char *entityName, - const XML_Char *base, - const XML_Char *systemId, - const XML_Char *publicId, - const XML_Char *notationName); - -/* This is called for a declaration of notation. -The base argument is whatever was set by XML_SetBase. -The notationName will never be null. The other arguments can be. */ - -typedef void (*XML_NotationDeclHandler)(void *userData, - const XML_Char *notationName, - const XML_Char *base, - const XML_Char *systemId, - const XML_Char *publicId); - -/* When namespace processing is enabled, these are called once for -each namespace declaration. The call to the start and end element -handlers occur between the calls to the start and end namespace -declaration handlers. For an xmlns attribute, prefix will be null. -For an xmlns="" attribute, uri will be null. */ - -typedef void (*XML_StartNamespaceDeclHandler)(void *userData, - const XML_Char *prefix, - const XML_Char *uri); - -typedef void (*XML_EndNamespaceDeclHandler)(void *userData, - const XML_Char *prefix); - -/* This is called if the document is not standalone (it has an -external subset or a reference to a parameter entity, but does not -have standalone="yes"). If this handler returns 0, then processing -will not continue, and the parser will return a -XML_ERROR_NOT_STANDALONE error. */ - -typedef int (*XML_NotStandaloneHandler)(void *userData); - -/* This is called for a reference to an external parsed general entity. -The referenced entity is not automatically parsed. -The application can parse it immediately or later using -XML_ExternalEntityParserCreate. -The parser argument is the parser parsing the entity containing the reference; -it can be passed as the parser argument to XML_ExternalEntityParserCreate. -The systemId argument is the system identifier as specified in the entity -declaration; it will not be null. -The base argument is the system identifier that should be used as the base for -resolving systemId if systemId was relative; this is set by XML_SetBase; -it may be null. -The publicId argument is the public identifier as specified in the entity -declaration, or null if none was specified; the whitespace in the public -identifier will have been normalized as required by the XML spec. -The context argument specifies the parsing context in the format -expected by the context argument to -XML_ExternalEntityParserCreate; context is valid only until the handler -returns, so if the referenced entity is to be parsed later, it must be copied. -The handler should return 0 if processing should not continue because of -a fatal error in the handling of the external entity. -In this case the calling parser will return an -XML_ERROR_EXTERNAL_ENTITY_HANDLING error. -Note that unlike other handlers the first argument is the parser, not -userData. */ - -typedef int (*XML_ExternalEntityRefHandler)(XML_Parser parser, - const XML_Char *context, - const XML_Char *base, - const XML_Char *systemId, - const XML_Char *publicId); - -/* This structure is filled in by the XML_UnknownEncodingHandler -to provide information to the parser about encodings that are unknown -to the parser. -The map[b] member gives information about byte sequences -whose first byte is b. -If map[b] is c where c is >= 0, then b by itself encodes the Unicode scalar -value c. -If map[b] is -1, then the byte sequence is malformed. -If map[b] is -n, where n >= 2, then b is the first byte of an n-byte -sequence that encodes a single Unicode scalar value. -The data member will be passed as the first argument to the convert function. -The convert function is used to convert multibyte sequences; -s will point to a n-byte sequence where map[(unsigned char)*s] == -n. -The convert function must return the Unicode scalar value -represented by this byte sequence or -1 if the byte sequence is malformed. -The convert function may be null if the encoding is a single-byte encoding, -that is if map[b] >= -1 for all bytes b. -When the parser is finished with the encoding, then if release is not null, -it will call release passing it the data member; -once release has been called, the convert function will not be called again. - -Expat places certain restrictions on the encodings that are supported -using this mechanism. - -1. Every ASCII character that can appear in a well-formed XML document, -other than the characters - - $@\^`{}~ - -must be represented by a single byte, and that byte must be the -same byte that represents that character in ASCII. - -2. No character may require more than 4 bytes to encode. - -3. All characters encoded must have Unicode scalar values <= 0xFFFF, -(ie characters that would be encoded by surrogates in UTF-16 -are not allowed). Note that this restriction doesn't apply to -the built-in support for UTF-8 and UTF-16. - -4. No Unicode character may be encoded by more than one distinct sequence -of bytes. */ - -typedef struct { - int map[256]; - void *data; - int (*convert)(void *data, const char *s); - void (*release)(void *data); -} XML_Encoding; - -/* This is called for an encoding that is unknown to the parser. -The encodingHandlerData argument is that which was passed as the -second argument to XML_SetUnknownEncodingHandler. -The name argument gives the name of the encoding as specified in -the encoding declaration. -If the callback can provide information about the encoding, -it must fill in the XML_Encoding structure, and return 1. -Otherwise it must return 0. -If info does not describe a suitable encoding, -then the parser will return an XML_UNKNOWN_ENCODING error. */ - -typedef int (*XML_UnknownEncodingHandler)(void *encodingHandlerData, - const XML_Char *name, - XML_Encoding *info); - -void XMLPARSEAPI -XML_SetElementHandler(XML_Parser parser, - XML_StartElementHandler start, - XML_EndElementHandler end); - -void XMLPARSEAPI -XML_SetStartElementHandler(XML_Parser, XML_StartElementHandler); - -void XMLPARSEAPI -XML_SetEndElementHandler(XML_Parser, XML_EndElementHandler); - -void XMLPARSEAPI -XML_SetCharacterDataHandler(XML_Parser parser, - XML_CharacterDataHandler handler); - -void XMLPARSEAPI -XML_SetProcessingInstructionHandler(XML_Parser parser, - XML_ProcessingInstructionHandler handler); -void XMLPARSEAPI -XML_SetCommentHandler(XML_Parser parser, - XML_CommentHandler handler); - -void XMLPARSEAPI -XML_SetCdataSectionHandler(XML_Parser parser, - XML_StartCdataSectionHandler start, - XML_EndCdataSectionHandler end); - -void XMLPARSEAPI -XML_SetStartCdataSectionHandler(XML_Parser parser, - XML_StartCdataSectionHandler start); - -void XMLPARSEAPI -XML_SetEndCdataSectionHandler(XML_Parser parser, - XML_EndCdataSectionHandler end); - -/* This sets the default handler and also inhibits expansion of -internal entities. The entity reference will be passed to the default -handler. */ - -void XMLPARSEAPI -XML_SetDefaultHandler(XML_Parser parser, - XML_DefaultHandler handler); - -/* This sets the default handler but does not inhibit expansion of -internal entities. The entity reference will not be passed to the -default handler. */ - -void XMLPARSEAPI -XML_SetDefaultHandlerExpand(XML_Parser parser, - XML_DefaultHandler handler); - -void XMLPARSEAPI -XML_SetDoctypeDeclHandler(XML_Parser parser, - XML_StartDoctypeDeclHandler start, - XML_EndDoctypeDeclHandler end); - -void XMLPARSEAPI -XML_SetStartDoctypeDeclHandler(XML_Parser parser, - XML_StartDoctypeDeclHandler start); - -void XMLPARSEAPI -XML_SetEndDoctypeDeclHandler(XML_Parser parser, - XML_EndDoctypeDeclHandler end); - -void XMLPARSEAPI -XML_SetUnparsedEntityDeclHandler(XML_Parser parser, - XML_UnparsedEntityDeclHandler handler); - -void XMLPARSEAPI -XML_SetNotationDeclHandler(XML_Parser parser, - XML_NotationDeclHandler handler); - -void XMLPARSEAPI -XML_SetNamespaceDeclHandler(XML_Parser parser, - XML_StartNamespaceDeclHandler start, - XML_EndNamespaceDeclHandler end); - -void XMLPARSEAPI -XML_SetStartNamespaceDeclHandler(XML_Parser parser, - XML_StartNamespaceDeclHandler start); - -void XMLPARSEAPI -XML_SetEndNamespaceDeclHandler(XML_Parser parser, - XML_EndNamespaceDeclHandler end); - -void XMLPARSEAPI -XML_SetNotStandaloneHandler(XML_Parser parser, - XML_NotStandaloneHandler handler); - -void XMLPARSEAPI -XML_SetExternalEntityRefHandler(XML_Parser parser, - XML_ExternalEntityRefHandler handler); - -/* If a non-null value for arg is specified here, then it will be passed -as the first argument to the external entity ref handler instead -of the parser object. */ -void XMLPARSEAPI -XML_SetExternalEntityRefHandlerArg(XML_Parser, void *arg); - -void XMLPARSEAPI -XML_SetUnknownEncodingHandler(XML_Parser parser, - XML_UnknownEncodingHandler handler, - void *encodingHandlerData); - -/* This can be called within a handler for a start element, end element, -processing instruction or character data. It causes the corresponding -markup to be passed to the default handler. */ -void XMLPARSEAPI -XML_DefaultCurrent(XML_Parser parser); - -/* If do_nst is non-zero, and namespace processing is in effect, and - a name has a prefix (i.e. an explicit namespace qualifier) then - that name is returned as a triplet in a single - string separated by the separator character specified when the parser - was created: URI + sep + local_name + sep + prefix. - - If do_nst is zero, then namespace information is returned in the - default manner (URI + sep + local_name) whether or not the names - has a prefix. -*/ - -void XMLPARSEAPI -XML_SetReturnNSTriplet(XML_Parser parser, int do_nst); - -/* This value is passed as the userData argument to callbacks. */ -void XMLPARSEAPI -XML_SetUserData(XML_Parser parser, void *userData); - -/* Returns the last value set by XML_SetUserData or null. */ -#define XML_GetUserData(parser) (*(void **)(parser)) - -/* This is equivalent to supplying an encoding argument -to XML_ParserCreate. It must not be called after XML_Parse -or XML_ParseBuffer. */ - -int XMLPARSEAPI -XML_SetEncoding(XML_Parser parser, const XML_Char *encoding); - -/* If this function is called, then the parser will be passed -as the first argument to callbacks instead of userData. -The userData will still be accessible using XML_GetUserData. */ - -void XMLPARSEAPI -XML_UseParserAsHandlerArg(XML_Parser parser); - -/* Sets the base to be used for resolving relative URIs in system -identifiers in declarations. Resolving relative identifiers is left -to the application: this value will be passed through as the base -argument to the XML_ExternalEntityRefHandler, XML_NotationDeclHandler -and XML_UnparsedEntityDeclHandler. The base argument will be copied. -Returns zero if out of memory, non-zero otherwise. */ - -int XMLPARSEAPI -XML_SetBase(XML_Parser parser, const XML_Char *base); - -const XML_Char XMLPARSEAPI * -XML_GetBase(XML_Parser parser); - -/* Returns the number of the attribute/value pairs passed in last call -to the XML_StartElementHandler that were specified in the start-tag -rather than defaulted. Each attribute/value pair counts as 2; thus -this correspondds to an index into the atts array passed to the -XML_StartElementHandler. */ - -int XMLPARSEAPI -XML_GetSpecifiedAttributeCount(XML_Parser parser); - -/* Returns the index of the ID attribute passed in the last call to -XML_StartElementHandler, or -1 if there is no ID attribute. Each -attribute/value pair counts as 2; thus this correspondds to an index -into the atts array passed to the XML_StartElementHandler. */ - -int XMLPARSEAPI -XML_GetIdAttributeIndex(XML_Parser parser); - -/* Parses some input. Returns 0 if a fatal error is detected. -The last call to XML_Parse must have isFinal true; -len may be zero for this call (or any other). */ -int XMLPARSEAPI -XML_Parse(XML_Parser parser, const char *s, int len, int isFinal); - -void XMLPARSEAPI * -XML_GetBuffer(XML_Parser parser, int len); - -int XMLPARSEAPI -XML_ParseBuffer(XML_Parser parser, int len, int isFinal); - -/* Creates an XML_Parser object that can parse an external general -entity; context is a '\0'-terminated string specifying the parse -context; encoding is a '\0'-terminated string giving the name of the -externally specified encoding, or null if there is no externally -specified encoding. The context string consists of a sequence of -tokens separated by formfeeds (\f); a token consisting of a name -specifies that the general entity of the name is open; a token of the -form prefix=uri specifies the namespace for a particular prefix; a -token of the form =uri specifies the default namespace. This can be -called at any point after the first call to an -ExternalEntityRefHandler so longer as the parser has not yet been -freed. The new parser is completely independent and may safely be -used in a separate thread. The handlers and userData are initialized -from the parser argument. Returns 0 if out of memory. Otherwise -returns a new XML_Parser object. */ -XML_Parser XMLPARSEAPI -XML_ExternalEntityParserCreate(XML_Parser parser, - const XML_Char *context, - const XML_Char *encoding); - -enum XML_ParamEntityParsing { - XML_PARAM_ENTITY_PARSING_NEVER, - XML_PARAM_ENTITY_PARSING_UNLESS_STANDALONE, - XML_PARAM_ENTITY_PARSING_ALWAYS -}; - -/* Controls parsing of parameter entities (including the external DTD -subset). If parsing of parameter entities is enabled, then references -to external parameter entities (including the external DTD subset) -will be passed to the handler set with -XML_SetExternalEntityRefHandler. The context passed will be 0. -Unlike external general entities, external parameter entities can only -be parsed synchronously. If the external parameter entity is to be -parsed, it must be parsed during the call to the external entity ref -handler: the complete sequence of XML_ExternalEntityParserCreate, -XML_Parse/XML_ParseBuffer and XML_ParserFree calls must be made during -this call. After XML_ExternalEntityParserCreate has been called to -create the parser for the external parameter entity (context must be 0 -for this call), it is illegal to make any calls on the old parser -until XML_ParserFree has been called on the newly created parser. If -the library has been compiled without support for parameter entity -parsing (ie without XML_DTD being defined), then -XML_SetParamEntityParsing will return 0 if parsing of parameter -entities is requested; otherwise it will return non-zero. */ - -int XMLPARSEAPI -XML_SetParamEntityParsing(XML_Parser parser, - enum XML_ParamEntityParsing parsing); - -enum XML_Error { - XML_ERROR_NONE, - XML_ERROR_NO_MEMORY, - XML_ERROR_SYNTAX, - XML_ERROR_NO_ELEMENTS, - XML_ERROR_INVALID_TOKEN, - XML_ERROR_UNCLOSED_TOKEN, - XML_ERROR_PARTIAL_CHAR, - XML_ERROR_TAG_MISMATCH, - XML_ERROR_DUPLICATE_ATTRIBUTE, - XML_ERROR_JUNK_AFTER_DOC_ELEMENT, - XML_ERROR_PARAM_ENTITY_REF, - XML_ERROR_UNDEFINED_ENTITY, - XML_ERROR_RECURSIVE_ENTITY_REF, - XML_ERROR_ASYNC_ENTITY, - XML_ERROR_BAD_CHAR_REF, - XML_ERROR_BINARY_ENTITY_REF, - XML_ERROR_ATTRIBUTE_EXTERNAL_ENTITY_REF, - XML_ERROR_MISPLACED_XML_PI, - XML_ERROR_UNKNOWN_ENCODING, - XML_ERROR_INCORRECT_ENCODING, - XML_ERROR_UNCLOSED_CDATA_SECTION, - XML_ERROR_EXTERNAL_ENTITY_HANDLING, - XML_ERROR_NOT_STANDALONE, - XML_ERROR_UNEXPECTED_STATE -}; - -/* If XML_Parse or XML_ParseBuffer have returned 0, then XML_GetErrorCode -returns information about the error. */ - -enum XML_Error XMLPARSEAPI -XML_GetErrorCode(XML_Parser parser); - -/* These functions return information about the current parse location. -They may be called when XML_Parse or XML_ParseBuffer return 0; -in this case the location is the location of the character at which -the error was detected. -They may also be called from any other callback called to report -some parse event; in this the location is the location of the first -of the sequence of characters that generated the event. */ - -int XMLPARSEAPI XML_GetCurrentLineNumber(XML_Parser parser); -int XMLPARSEAPI XML_GetCurrentColumnNumber(XML_Parser parser); -long XMLPARSEAPI XML_GetCurrentByteIndex(XML_Parser parser); - -/* Return the number of bytes in the current event. -Returns 0 if the event is in an internal entity. */ - -int XMLPARSEAPI -XML_GetCurrentByteCount(XML_Parser parser); - -/* If XML_CONTEXT_BYTES is defined, returns the input buffer, sets - the integer pointed to by offset to the offset within this buffer - of the current parse position, and sets the integer pointed to by size - to the size of this buffer (the number of input bytes). Otherwise - returns a null pointer. Also returns a null pointer if a parse isn't - active. - - NOTE: The character pointer returned should not be used outside - the handler that makes the call. */ - -const char XMLPARSEAPI * -XML_GetInputContext(XML_Parser parser, - int *offset, - int *size); - -/* For backwards compatibility with previous versions. */ -#define XML_GetErrorLineNumber XML_GetCurrentLineNumber -#define XML_GetErrorColumnNumber XML_GetCurrentColumnNumber -#define XML_GetErrorByteIndex XML_GetCurrentByteIndex - -/* Frees memory used by the parser. */ -void XMLPARSEAPI -XML_ParserFree(XML_Parser parser); - -/* Returns a string describing the error. */ -const XML_LChar XMLPARSEAPI * -XML_ErrorString(int code); - -/* Return a string containing the version number of this expat */ -const XML_LChar XMLPARSEAPI * -XML_ExpatVersion(void); - -typedef struct { - int major; - int minor; - int micro; -} XML_Expat_Version; - -/* Return an XML_Expat_Version structure containing numeric version - number information for this version of expat */ - -XML_Expat_Version XMLPARSEAPI -XML_ExpatVersionInfo(void); - -#ifndef XML_MAJOR_VERSION -#define XML_MAJOR_VERSION 1 -#endif -#ifndef XML_MINOR_VERSION -#define XML_MINOR_VERSION 95 -#endif -#ifndef XML_MICRO_VERSION -#define XML_MICRO_VERSION 2 -#endif - -#ifdef __cplusplus -} -#endif - -#endif /* not XmlParse_INCLUDED */ diff --git a/libs/apr-util/xml/expat/lib/iasciitab.h b/libs/apr-util/xml/expat/lib/iasciitab.h deleted file mode 100644 index 55dbc398b87..00000000000 --- a/libs/apr-util/xml/expat/lib/iasciitab.h +++ /dev/null @@ -1,38 +0,0 @@ -/* -Copyright (c) 1998, 1999 Thai Open Source Software Center Ltd -See the file COPYING for copying permission. -*/ - -/* Like asciitab.h, except that 0xD has code BT_S rather than BT_CR */ -/* 0x00 */ BT_NONXML, BT_NONXML, BT_NONXML, BT_NONXML, -/* 0x04 */ BT_NONXML, BT_NONXML, BT_NONXML, BT_NONXML, -/* 0x08 */ BT_NONXML, BT_S, BT_LF, BT_NONXML, -/* 0x0C */ BT_NONXML, BT_S, BT_NONXML, BT_NONXML, -/* 0x10 */ BT_NONXML, BT_NONXML, BT_NONXML, BT_NONXML, -/* 0x14 */ BT_NONXML, BT_NONXML, BT_NONXML, BT_NONXML, -/* 0x18 */ BT_NONXML, BT_NONXML, BT_NONXML, BT_NONXML, -/* 0x1C */ BT_NONXML, BT_NONXML, BT_NONXML, BT_NONXML, -/* 0x20 */ BT_S, BT_EXCL, BT_QUOT, BT_NUM, -/* 0x24 */ BT_OTHER, BT_PERCNT, BT_AMP, BT_APOS, -/* 0x28 */ BT_LPAR, BT_RPAR, BT_AST, BT_PLUS, -/* 0x2C */ BT_COMMA, BT_MINUS, BT_NAME, BT_SOL, -/* 0x30 */ BT_DIGIT, BT_DIGIT, BT_DIGIT, BT_DIGIT, -/* 0x34 */ BT_DIGIT, BT_DIGIT, BT_DIGIT, BT_DIGIT, -/* 0x38 */ BT_DIGIT, BT_DIGIT, BT_COLON, BT_SEMI, -/* 0x3C */ BT_LT, BT_EQUALS, BT_GT, BT_QUEST, -/* 0x40 */ BT_OTHER, BT_HEX, BT_HEX, BT_HEX, -/* 0x44 */ BT_HEX, BT_HEX, BT_HEX, BT_NMSTRT, -/* 0x48 */ BT_NMSTRT, BT_NMSTRT, BT_NMSTRT, BT_NMSTRT, -/* 0x4C */ BT_NMSTRT, BT_NMSTRT, BT_NMSTRT, BT_NMSTRT, -/* 0x50 */ BT_NMSTRT, BT_NMSTRT, BT_NMSTRT, BT_NMSTRT, -/* 0x54 */ BT_NMSTRT, BT_NMSTRT, BT_NMSTRT, BT_NMSTRT, -/* 0x58 */ BT_NMSTRT, BT_NMSTRT, BT_NMSTRT, BT_LSQB, -/* 0x5C */ BT_OTHER, BT_RSQB, BT_OTHER, BT_NMSTRT, -/* 0x60 */ BT_OTHER, BT_HEX, BT_HEX, BT_HEX, -/* 0x64 */ BT_HEX, BT_HEX, BT_HEX, BT_NMSTRT, -/* 0x68 */ BT_NMSTRT, BT_NMSTRT, BT_NMSTRT, BT_NMSTRT, -/* 0x6C */ BT_NMSTRT, BT_NMSTRT, BT_NMSTRT, BT_NMSTRT, -/* 0x70 */ BT_NMSTRT, BT_NMSTRT, BT_NMSTRT, BT_NMSTRT, -/* 0x74 */ BT_NMSTRT, BT_NMSTRT, BT_NMSTRT, BT_NMSTRT, -/* 0x78 */ BT_NMSTRT, BT_NMSTRT, BT_NMSTRT, BT_OTHER, -/* 0x7C */ BT_VERBAR, BT_OTHER, BT_OTHER, BT_OTHER, diff --git a/libs/apr-util/xml/expat/lib/latin1tab.h b/libs/apr-util/xml/expat/lib/latin1tab.h deleted file mode 100644 index 178b1d186dd..00000000000 --- a/libs/apr-util/xml/expat/lib/latin1tab.h +++ /dev/null @@ -1,37 +0,0 @@ -/* -Copyright (c) 1998, 1999 Thai Open Source Software Center Ltd -See the file COPYING for copying permission. -*/ - -/* 0x80 */ BT_OTHER, BT_OTHER, BT_OTHER, BT_OTHER, -/* 0x84 */ BT_OTHER, BT_OTHER, BT_OTHER, BT_OTHER, -/* 0x88 */ BT_OTHER, BT_OTHER, BT_OTHER, BT_OTHER, -/* 0x8C */ BT_OTHER, BT_OTHER, BT_OTHER, BT_OTHER, -/* 0x90 */ BT_OTHER, BT_OTHER, BT_OTHER, BT_OTHER, -/* 0x94 */ BT_OTHER, BT_OTHER, BT_OTHER, BT_OTHER, -/* 0x98 */ BT_OTHER, BT_OTHER, BT_OTHER, BT_OTHER, -/* 0x9C */ BT_OTHER, BT_OTHER, BT_OTHER, BT_OTHER, -/* 0xA0 */ BT_OTHER, BT_OTHER, BT_OTHER, BT_OTHER, -/* 0xA4 */ BT_OTHER, BT_OTHER, BT_OTHER, BT_OTHER, -/* 0xA8 */ BT_OTHER, BT_OTHER, BT_NMSTRT, BT_OTHER, -/* 0xAC */ BT_OTHER, BT_OTHER, BT_OTHER, BT_OTHER, -/* 0xB0 */ BT_OTHER, BT_OTHER, BT_OTHER, BT_OTHER, -/* 0xB4 */ BT_OTHER, BT_NMSTRT, BT_OTHER, BT_NAME, -/* 0xB8 */ BT_OTHER, BT_OTHER, BT_NMSTRT, BT_OTHER, -/* 0xBC */ BT_OTHER, BT_OTHER, BT_OTHER, BT_OTHER, -/* 0xC0 */ BT_NMSTRT, BT_NMSTRT, BT_NMSTRT, BT_NMSTRT, -/* 0xC4 */ BT_NMSTRT, BT_NMSTRT, BT_NMSTRT, BT_NMSTRT, -/* 0xC8 */ BT_NMSTRT, BT_NMSTRT, BT_NMSTRT, BT_NMSTRT, -/* 0xCC */ BT_NMSTRT, BT_NMSTRT, BT_NMSTRT, BT_NMSTRT, -/* 0xD0 */ BT_NMSTRT, BT_NMSTRT, BT_NMSTRT, BT_NMSTRT, -/* 0xD4 */ BT_NMSTRT, BT_NMSTRT, BT_NMSTRT, BT_OTHER, -/* 0xD8 */ BT_NMSTRT, BT_NMSTRT, BT_NMSTRT, BT_NMSTRT, -/* 0xDC */ BT_NMSTRT, BT_NMSTRT, BT_NMSTRT, BT_NMSTRT, -/* 0xE0 */ BT_NMSTRT, BT_NMSTRT, BT_NMSTRT, BT_NMSTRT, -/* 0xE4 */ BT_NMSTRT, BT_NMSTRT, BT_NMSTRT, BT_NMSTRT, -/* 0xE8 */ BT_NMSTRT, BT_NMSTRT, BT_NMSTRT, BT_NMSTRT, -/* 0xEC */ BT_NMSTRT, BT_NMSTRT, BT_NMSTRT, BT_NMSTRT, -/* 0xF0 */ BT_NMSTRT, BT_NMSTRT, BT_NMSTRT, BT_NMSTRT, -/* 0xF4 */ BT_NMSTRT, BT_NMSTRT, BT_NMSTRT, BT_OTHER, -/* 0xF8 */ BT_NMSTRT, BT_NMSTRT, BT_NMSTRT, BT_NMSTRT, -/* 0xFC */ BT_NMSTRT, BT_NMSTRT, BT_NMSTRT, BT_NMSTRT, diff --git a/libs/apr-util/xml/expat/lib/map_osd_ebcdic_df04_1.h b/libs/apr-util/xml/expat/lib/map_osd_ebcdic_df04_1.h deleted file mode 100644 index 93ece0c8879..00000000000 --- a/libs/apr-util/xml/expat/lib/map_osd_ebcdic_df04_1.h +++ /dev/null @@ -1,18 +0,0 @@ -static unsigned char ebcdic[] = { -/* 00 */ 0x00 ,0x01 ,0x02 ,0x03 ,0x85 ,0x09 ,0x86 ,0x7f ,0x87 ,0x8d ,0x8e ,0x0b ,0x0c ,0x0d ,0x0e ,0x0f , -/* 10 */ 0x10 ,0x11 ,0x12 ,0x13 ,0x8f ,0x0a ,0x08 ,0x97 ,0x18 ,0x19 ,0x9c ,0x9d ,0x1c ,0x1d ,0x1e ,0x1f , -/* 20 */ 0x80 ,0x81 ,0x82 ,0x83 ,0x84 ,0x92 ,0x17 ,0x1b ,0x88 ,0x89 ,0x8a ,0x8b ,0x8c ,0x05 ,0x06 ,0x07 , -/* 30 */ 0x90 ,0x91 ,0x16 ,0x93 ,0x94 ,0x95 ,0x96 ,0x04 ,0x98 ,0x99 ,0x9a ,0x9b ,0x14 ,0x15 ,0x9e ,0x1a , -/* 40 */ 0x20 ,0xa0 ,0xe2 ,0xe4 ,0xe0 ,0xe1 ,0xe3 ,0xe5 ,0xe7 ,0xf1 ,0x60 ,0x2e ,0x3c ,0x28 ,0x2b ,0x7c , -/* 50 */ 0x26 ,0xe9 ,0xea ,0xeb ,0xe8 ,0xed ,0xee ,0xef ,0xec ,0xdf ,0x21 ,0x24 ,0x2a ,0x29 ,0x3b ,0x9f , -/* 60 */ 0x2d ,0x2f ,0xc2 ,0xc4 ,0xc0 ,0xc1 ,0xc3 ,0xc5 ,0xc7 ,0xd1 ,0x5e ,0x2c ,0x25 ,0x5f ,0x3e ,0x3f , -/* 70 */ 0xf8 ,0xc9 ,0xca ,0xcb ,0xc8 ,0xcd ,0xce ,0xcf ,0xcc ,0xa8 ,0x3a ,0x23 ,0x40 ,0x27 ,0x3d ,0x22 , -/* 80 */ 0xd8 ,0x61 ,0x62 ,0x63 ,0x64 ,0x65 ,0x66 ,0x67 ,0x68 ,0x69 ,0xab ,0xbb ,0xf0 ,0xfd ,0xfe ,0xb1 , -/* 90 */ 0xb0 ,0x6a ,0x6b ,0x6c ,0x6d ,0x6e ,0x6f ,0x70 ,0x71 ,0x72 ,0xaa ,0xba ,0xe6 ,0xb8 ,0xc6 ,0xa4 , -/* a0 */ 0xb5 ,0xaf ,0x73 ,0x74 ,0x75 ,0x76 ,0x77 ,0x78 ,0x79 ,0x7a ,0xa1 ,0xbf ,0xd0 ,0xdd ,0xde ,0xae , -/* b0 */ 0xa2 ,0xa3 ,0xa5 ,0xb7 ,0xa9 ,0xa7 ,0xb6 ,0xbc ,0xbd ,0xbe ,0xac ,0x5b ,0x5c ,0x5d ,0xb4 ,0xd7 , -/* c0 */ 0xf9 ,0x41 ,0x42 ,0x43 ,0x44 ,0x45 ,0x46 ,0x47 ,0x48 ,0x49 ,0xad ,0xf4 ,0xf6 ,0xf2 ,0xf3 ,0xf5 , -/* d0 */ 0xa6 ,0x4a ,0x4b ,0x4c ,0x4d ,0x4e ,0x4f ,0x50 ,0x51 ,0x52 ,0xb9 ,0xfb ,0xfc ,0xdb ,0xfa ,0xff , -/* e0 */ 0xd9 ,0xf7 ,0x53 ,0x54 ,0x55 ,0x56 ,0x57 ,0x58 ,0x59 ,0x5a ,0xb2 ,0xd4 ,0xd6 ,0xd2 ,0xd3 ,0xd5 , -/* f0 */ 0x30 ,0x31 ,0x32 ,0x33 ,0x34 ,0x35 ,0x36 ,0x37 ,0x38 ,0x39 ,0xb3 ,0x7b ,0xdc ,0x7d ,0xda ,0x7e -}; diff --git a/libs/apr-util/xml/expat/lib/nametab.h b/libs/apr-util/xml/expat/lib/nametab.h deleted file mode 100644 index b05e62c77a6..00000000000 --- a/libs/apr-util/xml/expat/lib/nametab.h +++ /dev/null @@ -1,150 +0,0 @@ -static const unsigned namingBitmap[] = { -0x00000000, 0x00000000, 0x00000000, 0x00000000, -0x00000000, 0x00000000, 0x00000000, 0x00000000, -0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, -0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, -0x00000000, 0x04000000, 0x87FFFFFE, 0x07FFFFFE, -0x00000000, 0x00000000, 0xFF7FFFFF, 0xFF7FFFFF, -0xFFFFFFFF, 0x7FF3FFFF, 0xFFFFFDFE, 0x7FFFFFFF, -0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFE00F, 0xFC31FFFF, -0x00FFFFFF, 0x00000000, 0xFFFF0000, 0xFFFFFFFF, -0xFFFFFFFF, 0xF80001FF, 0x00000003, 0x00000000, -0x00000000, 0x00000000, 0x00000000, 0x00000000, -0xFFFFD740, 0xFFFFFFFB, 0x547F7FFF, 0x000FFFFD, -0xFFFFDFFE, 0xFFFFFFFF, 0xDFFEFFFF, 0xFFFFFFFF, -0xFFFF0003, 0xFFFFFFFF, 0xFFFF199F, 0x033FCFFF, -0x00000000, 0xFFFE0000, 0x027FFFFF, 0xFFFFFFFE, -0x0000007F, 0x00000000, 0xFFFF0000, 0x000707FF, -0x00000000, 0x07FFFFFE, 0x000007FE, 0xFFFE0000, -0xFFFFFFFF, 0x7CFFFFFF, 0x002F7FFF, 0x00000060, -0xFFFFFFE0, 0x23FFFFFF, 0xFF000000, 0x00000003, -0xFFF99FE0, 0x03C5FDFF, 0xB0000000, 0x00030003, -0xFFF987E0, 0x036DFDFF, 0x5E000000, 0x001C0000, -0xFFFBAFE0, 0x23EDFDFF, 0x00000000, 0x00000001, -0xFFF99FE0, 0x23CDFDFF, 0xB0000000, 0x00000003, -0xD63DC7E0, 0x03BFC718, 0x00000000, 0x00000000, -0xFFFDDFE0, 0x03EFFDFF, 0x00000000, 0x00000003, -0xFFFDDFE0, 0x03EFFDFF, 0x40000000, 0x00000003, -0xFFFDDFE0, 0x03FFFDFF, 0x00000000, 0x00000003, -0x00000000, 0x00000000, 0x00000000, 0x00000000, -0xFFFFFFFE, 0x000D7FFF, 0x0000003F, 0x00000000, -0xFEF02596, 0x200D6CAE, 0x0000001F, 0x00000000, -0x00000000, 0x00000000, 0xFFFFFEFF, 0x000003FF, -0x00000000, 0x00000000, 0x00000000, 0x00000000, -0x00000000, 0x00000000, 0x00000000, 0x00000000, -0x00000000, 0xFFFFFFFF, 0xFFFF003F, 0x007FFFFF, -0x0007DAED, 0x50000000, 0x82315001, 0x002C62AB, -0x40000000, 0xF580C900, 0x00000007, 0x02010800, -0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, -0x0FFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0x03FFFFFF, -0x3F3FFFFF, 0xFFFFFFFF, 0xAAFF3F3F, 0x3FFFFFFF, -0xFFFFFFFF, 0x5FDFFFFF, 0x0FCF1FDC, 0x1FDC1FFF, -0x00000000, 0x00004C40, 0x00000000, 0x00000000, -0x00000007, 0x00000000, 0x00000000, 0x00000000, -0x00000080, 0x000003FE, 0xFFFFFFFE, 0xFFFFFFFF, -0x001FFFFF, 0xFFFFFFFE, 0xFFFFFFFF, 0x07FFFFFF, -0xFFFFFFE0, 0x00001FFF, 0x00000000, 0x00000000, -0x00000000, 0x00000000, 0x00000000, 0x00000000, -0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, -0xFFFFFFFF, 0x0000003F, 0x00000000, 0x00000000, -0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, -0xFFFFFFFF, 0x0000000F, 0x00000000, 0x00000000, -0x00000000, 0x07FF6000, 0x87FFFFFE, 0x07FFFFFE, -0x00000000, 0x00800000, 0xFF7FFFFF, 0xFF7FFFFF, -0x00FFFFFF, 0x00000000, 0xFFFF0000, 0xFFFFFFFF, -0xFFFFFFFF, 0xF80001FF, 0x00030003, 0x00000000, -0xFFFFFFFF, 0xFFFFFFFF, 0x0000003F, 0x00000003, -0xFFFFD7C0, 0xFFFFFFFB, 0x547F7FFF, 0x000FFFFD, -0xFFFFDFFE, 0xFFFFFFFF, 0xDFFEFFFF, 0xFFFFFFFF, -0xFFFF007B, 0xFFFFFFFF, 0xFFFF199F, 0x033FCFFF, -0x00000000, 0xFFFE0000, 0x027FFFFF, 0xFFFFFFFE, -0xFFFE007F, 0xBBFFFFFB, 0xFFFF0016, 0x000707FF, -0x00000000, 0x07FFFFFE, 0x0007FFFF, 0xFFFF03FF, -0xFFFFFFFF, 0x7CFFFFFF, 0xFFEF7FFF, 0x03FF3DFF, -0xFFFFFFEE, 0xF3FFFFFF, 0xFF1E3FFF, 0x0000FFCF, -0xFFF99FEE, 0xD3C5FDFF, 0xB080399F, 0x0003FFCF, -0xFFF987E4, 0xD36DFDFF, 0x5E003987, 0x001FFFC0, -0xFFFBAFEE, 0xF3EDFDFF, 0x00003BBF, 0x0000FFC1, -0xFFF99FEE, 0xF3CDFDFF, 0xB0C0398F, 0x0000FFC3, -0xD63DC7EC, 0xC3BFC718, 0x00803DC7, 0x0000FF80, -0xFFFDDFEE, 0xC3EFFDFF, 0x00603DDF, 0x0000FFC3, -0xFFFDDFEC, 0xC3EFFDFF, 0x40603DDF, 0x0000FFC3, -0xFFFDDFEC, 0xC3FFFDFF, 0x00803DCF, 0x0000FFC3, -0x00000000, 0x00000000, 0x00000000, 0x00000000, -0xFFFFFFFE, 0x07FF7FFF, 0x03FF7FFF, 0x00000000, -0xFEF02596, 0x3BFF6CAE, 0x03FF3F5F, 0x00000000, -0x03000000, 0xC2A003FF, 0xFFFFFEFF, 0xFFFE03FF, -0xFEBF0FDF, 0x02FE3FFF, 0x00000000, 0x00000000, -0x00000000, 0x00000000, 0x00000000, 0x00000000, -0x00000000, 0x00000000, 0x1FFF0000, 0x00000002, -0x000000A0, 0x003EFFFE, 0xFFFFFFFE, 0xFFFFFFFF, -0x661FFFFF, 0xFFFFFFFE, 0xFFFFFFFF, 0x77FFFFFF, -}; -static const unsigned char nmstrtPages[] = { -0x02, 0x03, 0x04, 0x05, 0x06, 0x07, 0x08, 0x00, -0x00, 0x09, 0x0A, 0x0B, 0x0C, 0x0D, 0x0E, 0x0F, -0x10, 0x11, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, -0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x12, 0x13, -0x00, 0x14, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, -0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, -0x15, 0x16, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, -0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, -0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, -0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x01, -0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, -0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, -0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, -0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, -0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, -0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, -0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, -0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, -0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, -0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x17, -0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, -0x00, 0x00, 0x00, 0x00, 0x01, 0x01, 0x01, 0x01, -0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, -0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, -0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, -0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, -0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x18, -0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, -0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, -0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, -0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, -0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, -}; -static const unsigned char namePages[] = { -0x19, 0x03, 0x1A, 0x1B, 0x1C, 0x1D, 0x1E, 0x00, -0x00, 0x1F, 0x20, 0x21, 0x22, 0x23, 0x24, 0x25, -0x10, 0x11, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, -0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x12, 0x13, -0x26, 0x14, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, -0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, -0x27, 0x16, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, -0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, -0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, -0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x01, -0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, -0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, -0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, -0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, -0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, -0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, -0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, -0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, -0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, -0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x17, -0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, -0x00, 0x00, 0x00, 0x00, 0x01, 0x01, 0x01, 0x01, -0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, -0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, -0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, -0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, -0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x18, -0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, -0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, -0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, -0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, -0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, -}; diff --git a/libs/apr-util/xml/expat/lib/osd_ebcdic_df04_1.h b/libs/apr-util/xml/expat/lib/osd_ebcdic_df04_1.h deleted file mode 100644 index 968256ba2b3..00000000000 --- a/libs/apr-util/xml/expat/lib/osd_ebcdic_df04_1.h +++ /dev/null @@ -1,81 +0,0 @@ -/* Copyright 2000-2005 The Apache Software Foundation or its licensors, as - * applicable. - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ -/* Table for the OSD_EBCDIC_DF04_1 encoding */ - -/* 00 */ BT_NONXML, BT_NONXML, BT_NONXML, BT_NONXML, -/* 04 */ BT_OTHER, BT_S, BT_OTHER, BT_OTHER, -/* 08 */ BT_OTHER, BT_OTHER, BT_OTHER, BT_NONXML, -/* 0c */ BT_NONXML, BT_CR, BT_NONXML, BT_NONXML, -/* 10 */ BT_NONXML, BT_NONXML, BT_NONXML, BT_NONXML, -/* 14 */ BT_OTHER, BT_LF, BT_NONXML, BT_OTHER, -/* 18 */ BT_NONXML, BT_NONXML, BT_OTHER, BT_OTHER, -/* 1c */ BT_NONXML, BT_NONXML, BT_NONXML, BT_NONXML, -/* 20 */ BT_OTHER, BT_OTHER, BT_OTHER, BT_OTHER, -/* 24 */ BT_OTHER, BT_OTHER, BT_NONXML, BT_NONXML, -/* 28 */ BT_OTHER, BT_OTHER, BT_OTHER, BT_OTHER, -/* 2c */ BT_OTHER, BT_NONXML, BT_NONXML, BT_NONXML, -/* 30 */ BT_OTHER, BT_OTHER, BT_NONXML, BT_OTHER, -/* 34 */ BT_OTHER, BT_OTHER, BT_OTHER, BT_NONXML, -/* 38 */ BT_OTHER, BT_OTHER, BT_OTHER, BT_OTHER, -/* 3c */ BT_NONXML, BT_NONXML, BT_OTHER, BT_NONXML, -/* 40 */ BT_S, BT_OTHER, BT_NMSTRT, BT_NMSTRT, -/* 44 */ BT_NMSTRT, BT_NMSTRT, BT_NMSTRT, BT_NMSTRT, -/* 48 */ BT_NMSTRT, BT_NMSTRT, BT_OTHER, BT_NAME, -/* 4c */ BT_LT, BT_LPAR, BT_PLUS, BT_VERBAR, -/* 50 */ BT_AMP, BT_NMSTRT, BT_NMSTRT, BT_NMSTRT, -/* 54 */ BT_NMSTRT, BT_NMSTRT, BT_NMSTRT, BT_NMSTRT, -/* 58 */ BT_NMSTRT, BT_NMSTRT, BT_EXCL, BT_OTHER, -/* 5c */ BT_AST, BT_RPAR, BT_SEMI, BT_OTHER, -/* 60 */ BT_MINUS, BT_SOL, BT_NMSTRT, BT_NMSTRT, -/* 64 */ BT_NMSTRT, BT_NMSTRT, BT_NMSTRT, BT_NMSTRT, -/* 68 */ BT_NMSTRT, BT_NMSTRT, BT_OTHER, BT_COMMA, -/* 6c */ BT_PERCNT, BT_NMSTRT, BT_GT, BT_QUEST, -/* 70 */ BT_NMSTRT, BT_NMSTRT, BT_NMSTRT, BT_NMSTRT, -/* 74 */ BT_NMSTRT, BT_NMSTRT, BT_NMSTRT, BT_NMSTRT, -/* 78 */ BT_NMSTRT, BT_OTHER, BT_COLON, BT_NUM, -/* 7c */ BT_OTHER, BT_APOS, BT_EQUALS, BT_QUOT, -/* 80 */ BT_NMSTRT, BT_HEX, BT_HEX, BT_HEX, -/* 84 */ BT_HEX, BT_HEX, BT_HEX, BT_NMSTRT, -/* 88 */ BT_NMSTRT, BT_NMSTRT, BT_OTHER, BT_OTHER, -/* 8c */ BT_NMSTRT, BT_NMSTRT, BT_NMSTRT, BT_OTHER, -/* 90 */ BT_OTHER, BT_NMSTRT, BT_NMSTRT, BT_NMSTRT, -/* 94 */ BT_NMSTRT, BT_NMSTRT, BT_NMSTRT, BT_NMSTRT, -/* 98 */ BT_NMSTRT, BT_NMSTRT, BT_NMSTRT, BT_NMSTRT, -/* 9c */ BT_NMSTRT, BT_OTHER, BT_NMSTRT, BT_OTHER, -/* a0 */ BT_NMSTRT, BT_OTHER, BT_NMSTRT, BT_NMSTRT, -/* a4 */ BT_NMSTRT, BT_NMSTRT, BT_NMSTRT, BT_NMSTRT, -/* a8 */ BT_NMSTRT, BT_NMSTRT, BT_OTHER, BT_OTHER, -/* ac */ BT_NMSTRT, BT_NMSTRT, BT_NMSTRT, BT_OTHER, -/* b0 */ BT_OTHER, BT_OTHER, BT_OTHER, BT_NAME, -/* b4 */ BT_OTHER, BT_OTHER, BT_OTHER, BT_OTHER, -/* b8 */ BT_OTHER, BT_OTHER, BT_OTHER, BT_LSQB, -/* bc */ BT_OTHER, BT_RSQB, BT_OTHER, BT_OTHER, -/* c0 */ BT_NMSTRT, BT_HEX, BT_HEX, BT_HEX, -/* c4 */ BT_HEX, BT_HEX, BT_HEX, BT_NMSTRT, -/* c8 */ BT_NMSTRT, BT_NMSTRT, BT_OTHER, BT_NMSTRT, -/* cc */ BT_NMSTRT, BT_NMSTRT, BT_NMSTRT, BT_NMSTRT, -/* d0 */ BT_OTHER, BT_NMSTRT, BT_NMSTRT, BT_NMSTRT, -/* d4 */ BT_NMSTRT, BT_NMSTRT, BT_NMSTRT, BT_NMSTRT, -/* d8 */ BT_NMSTRT, BT_NMSTRT, BT_OTHER, BT_NMSTRT, -/* dc */ BT_NMSTRT, BT_NMSTRT, BT_NMSTRT, BT_NMSTRT, -/* e0 */ BT_NMSTRT, BT_OTHER, BT_NMSTRT, BT_NMSTRT, -/* e4 */ BT_NMSTRT, BT_NMSTRT, BT_NMSTRT, BT_NMSTRT, -/* e8 */ BT_NMSTRT, BT_NMSTRT, BT_OTHER, BT_NMSTRT, -/* ec */ BT_NMSTRT, BT_NMSTRT, BT_NMSTRT, BT_NMSTRT, -/* f0 */ BT_DIGIT, BT_DIGIT, BT_DIGIT, BT_DIGIT, -/* f4 */ BT_DIGIT, BT_DIGIT, BT_DIGIT, BT_DIGIT, -/* f8 */ BT_DIGIT, BT_DIGIT, BT_OTHER, BT_OTHER, -/* fc */ BT_NMSTRT, BT_OTHER, BT_NMSTRT, BT_OTHER, diff --git a/libs/apr-util/xml/expat/lib/utf8tab.h b/libs/apr-util/xml/expat/lib/utf8tab.h deleted file mode 100644 index 9e3b6b83eb6..00000000000 --- a/libs/apr-util/xml/expat/lib/utf8tab.h +++ /dev/null @@ -1,38 +0,0 @@ -/* -Copyright (c) 1998, 1999 Thai Open Source Software Center Ltd -See the file COPYING for copying permission. -*/ - - -/* 0x80 */ BT_TRAIL, BT_TRAIL, BT_TRAIL, BT_TRAIL, -/* 0x84 */ BT_TRAIL, BT_TRAIL, BT_TRAIL, BT_TRAIL, -/* 0x88 */ BT_TRAIL, BT_TRAIL, BT_TRAIL, BT_TRAIL, -/* 0x8C */ BT_TRAIL, BT_TRAIL, BT_TRAIL, BT_TRAIL, -/* 0x90 */ BT_TRAIL, BT_TRAIL, BT_TRAIL, BT_TRAIL, -/* 0x94 */ BT_TRAIL, BT_TRAIL, BT_TRAIL, BT_TRAIL, -/* 0x98 */ BT_TRAIL, BT_TRAIL, BT_TRAIL, BT_TRAIL, -/* 0x9C */ BT_TRAIL, BT_TRAIL, BT_TRAIL, BT_TRAIL, -/* 0xA0 */ BT_TRAIL, BT_TRAIL, BT_TRAIL, BT_TRAIL, -/* 0xA4 */ BT_TRAIL, BT_TRAIL, BT_TRAIL, BT_TRAIL, -/* 0xA8 */ BT_TRAIL, BT_TRAIL, BT_TRAIL, BT_TRAIL, -/* 0xAC */ BT_TRAIL, BT_TRAIL, BT_TRAIL, BT_TRAIL, -/* 0xB0 */ BT_TRAIL, BT_TRAIL, BT_TRAIL, BT_TRAIL, -/* 0xB4 */ BT_TRAIL, BT_TRAIL, BT_TRAIL, BT_TRAIL, -/* 0xB8 */ BT_TRAIL, BT_TRAIL, BT_TRAIL, BT_TRAIL, -/* 0xBC */ BT_TRAIL, BT_TRAIL, BT_TRAIL, BT_TRAIL, -/* 0xC0 */ BT_LEAD2, BT_LEAD2, BT_LEAD2, BT_LEAD2, -/* 0xC4 */ BT_LEAD2, BT_LEAD2, BT_LEAD2, BT_LEAD2, -/* 0xC8 */ BT_LEAD2, BT_LEAD2, BT_LEAD2, BT_LEAD2, -/* 0xCC */ BT_LEAD2, BT_LEAD2, BT_LEAD2, BT_LEAD2, -/* 0xD0 */ BT_LEAD2, BT_LEAD2, BT_LEAD2, BT_LEAD2, -/* 0xD4 */ BT_LEAD2, BT_LEAD2, BT_LEAD2, BT_LEAD2, -/* 0xD8 */ BT_LEAD2, BT_LEAD2, BT_LEAD2, BT_LEAD2, -/* 0xDC */ BT_LEAD2, BT_LEAD2, BT_LEAD2, BT_LEAD2, -/* 0xE0 */ BT_LEAD3, BT_LEAD3, BT_LEAD3, BT_LEAD3, -/* 0xE4 */ BT_LEAD3, BT_LEAD3, BT_LEAD3, BT_LEAD3, -/* 0xE8 */ BT_LEAD3, BT_LEAD3, BT_LEAD3, BT_LEAD3, -/* 0xEC */ BT_LEAD3, BT_LEAD3, BT_LEAD3, BT_LEAD3, -/* 0xF0 */ BT_LEAD4, BT_LEAD4, BT_LEAD4, BT_LEAD4, -/* 0xF4 */ BT_LEAD4, BT_NONXML, BT_NONXML, BT_NONXML, -/* 0xF8 */ BT_NONXML, BT_NONXML, BT_NONXML, BT_NONXML, -/* 0xFC */ BT_NONXML, BT_NONXML, BT_MALFORM, BT_MALFORM, diff --git a/libs/apr-util/xml/expat/lib/winconfig.h b/libs/apr-util/xml/expat/lib/winconfig.h deleted file mode 100644 index 602ea941118..00000000000 --- a/libs/apr-util/xml/expat/lib/winconfig.h +++ /dev/null @@ -1,28 +0,0 @@ -/*================================================================ -** Copyright 2000, Clark Cooper -** All rights reserved. -** -** This is free software. You are permitted to copy, distribute, or modify -** it under the terms of the MIT/X license (contained in the COPYING file -** with this distribution.) -** -** -*/ - -#ifndef WINCONFIG_H -#define WINCONFIG_H - -#define WIN32_LEAN_AND_MEAN -#include -#undef WIN32_LEAN_AND_MEAN - -#include -#include - -#define XML_NS 1 -#define XML_DTD 1 -#define XML_BYTE_ORDER 12 -#define XML_CONTEXT_BYTES 1024 -#define HAVE_MEMMOVE - -#endif /* ndef WINCONFIG_H */ diff --git a/libs/apr-util/xml/expat/lib/xml.dsp b/libs/apr-util/xml/expat/lib/xml.dsp deleted file mode 100644 index 55baa4865d4..00000000000 --- a/libs/apr-util/xml/expat/lib/xml.dsp +++ /dev/null @@ -1,221 +0,0 @@ -# Microsoft Developer Studio Project File - Name="xml" - Package Owner=<4> -# Microsoft Developer Studio Generated Build File, Format Version 6.00 -# ** DO NOT EDIT ** - -# TARGTYPE "Win32 (x86) Static Library" 0x0104 - -CFG=xml - Win32 Debug -!MESSAGE This is not a valid makefile. To build this project using NMAKE, -!MESSAGE use the Export Makefile command and run -!MESSAGE -!MESSAGE NMAKE /f "xml.mak". -!MESSAGE -!MESSAGE You can specify a configuration when running NMAKE -!MESSAGE by defining the macro CFG on the command line. For example: -!MESSAGE -!MESSAGE NMAKE /f "xml.mak" CFG="xml - Win32 Debug" -!MESSAGE -!MESSAGE Possible choices for configuration are: -!MESSAGE -!MESSAGE "xml - Win32 Release" (based on "Win32 (x86) Static Library") -!MESSAGE "xml - Win32 Debug" (based on "Win32 (x86) Static Library") -!MESSAGE - -# Begin Project -# PROP AllowPerConfigDependencies 0 -# PROP Scc_ProjName "" -# PROP Scc_LocalPath "" -CPP=cl.exe -RSC=rc.exe - -!IF "$(CFG)" == "xml - Win32 Release" - -# PROP BASE Use_MFC 0 -# PROP BASE Use_Debug_Libraries 0 -# PROP BASE Output_Dir "LibR" -# PROP BASE Intermediate_Dir "LibR" -# PROP BASE Target_Dir "" -# PROP Use_MFC 0 -# PROP Use_Debug_Libraries 0 -# PROP Output_Dir "LibR" -# PROP Intermediate_Dir "LibR" -# PROP Target_Dir "" -# ADD BASE CPP /nologo /MD /W3 /O2 /D "WIN32" /D "NDEBUG" /D "_WINDOWS" /D "_MBCS" /FD /c -# ADD CPP /nologo /MD /W3 /O2 /Oy- /Zi /I "." /D "WIN32" /D "NDEBUG" /D "_WINDOWS" /D "_MBCS" /D VERSION=\"expat_1.95.2\" /Fd"LibR\xml_src" /FD /c -# ADD BASE RSC /l 0x409 -# ADD RSC /l 0x409 -BSC32=bscmake.exe -# ADD BASE BSC32 /nologo -# ADD BSC32 /nologo -LIB32=link.exe -lib -# ADD BASE LIB32 /nologo -# ADD LIB32 /nologo - -!ELSEIF "$(CFG)" == "xml - Win32 Debug" - -# PROP BASE Use_MFC 0 -# PROP BASE Use_Debug_Libraries 1 -# PROP BASE Output_Dir "LibD" -# PROP BASE Intermediate_Dir "LibD" -# PROP BASE Target_Dir "" -# PROP Use_MFC 0 -# PROP Use_Debug_Libraries 1 -# PROP Output_Dir "LibD" -# PROP Intermediate_Dir "LibD" -# PROP Ignore_Export_Lib 0 -# PROP Target_Dir "" -# ADD BASE CPP /nologo /MDd /W3 /EHsc /Zi /Od /D "WIN32" /D "_DEBUG" /D "_WINDOWS" /D "_MBCS" /FD /c -# ADD CPP /nologo /MDd /W3 /EHsc /Zi /Od /I "." /D "WIN32" /D "_DEBUG" /D "_WINDOWS" /D "_MBCS" /D VERSION=\"expat_1.95.2\" /Fd"LibD\xml_src" /FD /c -# ADD BASE RSC /l 0x409 -# ADD RSC /l 0x409 -BSC32=bscmake.exe -# ADD BASE BSC32 /nologo -# ADD BSC32 /nologo -LIB32=link.exe -lib -# ADD BASE LIB32 /nologo -# ADD LIB32 /nologo - -!ENDIF - -# Begin Target - -# Name "xml - Win32 Release" -# Name "xml - Win32 Debug" -# Begin Group "Source Files" - -# PROP Default_Filter "cpp;c;cxx;rc;def;r;odl;idl;hpj;bat" -# Begin Source File - -SOURCE=.\xmlparse.c -# End Source File -# Begin Source File - -SOURCE=.\xmlrole.c -# End Source File -# Begin Source File - -SOURCE=.\xmltok.c -# End Source File -# Begin Source File - -SOURCE=xmltok_impl.c -# PROP Exclude_From_Build 1 -# End Source File -# Begin Source File - -SOURCE=xmltok_ns.c -# PROP Exclude_From_Build 1 -# End Source File -# End Group -# Begin Group "Header Files" - -# PROP Default_Filter "h;hpp;hxx;hm;inl" -# Begin Source File - -SOURCE=.\ascii.h -# End Source File -# Begin Source File - -SOURCE=.\asciitab.h -# End Source File -# Begin Source File - -SOURCE=.\config.h -# End Source File -# Begin Source File - -SOURCE=.\expat.h -# End Source File -# Begin Source File - -SOURCE=.\iasciitab.h -# End Source File -# Begin Source File - -SOURCE=.\latin1tab.h -# End Source File -# Begin Source File - -SOURCE=.\nametab.h -# End Source File -# Begin Source File - -SOURCE=.\utf8tab.h -# End Source File -# Begin Source File - -SOURCE=.\xmlrole.h -# End Source File -# Begin Source File - -SOURCE=.\xmltok.h -# End Source File -# Begin Source File - -SOURCE=.\xmltok_impl.h -# End Source File -# End Group -# Begin Group "Generated Header Files" - -# PROP Default_Filter "" -# Begin Source File - -SOURCE=.\expat.h.in - -!IF "$(CFG)" == "xml - Win32 Release" - -# Begin Custom Build - Creating expat.h from expat.h.in -InputPath=.\expat.h.in - -".\expat.h" : $(SOURCE) "$(INTDIR)" "$(OUTDIR)" - type .\expat.h.in > .\expat.h - -# End Custom Build - -!ELSEIF "$(CFG)" == "xml - Win32 Debug" - -# Begin Custom Build - Creating expat.h from expat.h.in -InputPath=.\expat.h.in - -".\expat.h" : $(SOURCE) "$(INTDIR)" "$(OUTDIR)" - type .\expat.h.in > .\expat.h - -# End Custom Build - -!ENDIF - -# End Source File -# Begin Source File - -SOURCE=.\winconfig.h - -!IF "$(CFG)" == "xml - Win32 Release" - -# Begin Custom Build - Creating config.h from winconfig.h -InputPath=.\winconfig.h - -".\config.h" : $(SOURCE) "$(INTDIR)" "$(OUTDIR)" - type .\winconfig.h > .\config.h - -# End Custom Build - -!ELSEIF "$(CFG)" == "xml - Win32 Debug" - -# Begin Custom Build - Creating config.h from winconfig.h -InputPath=.\winconfig.h - -".\config.h" : $(SOURCE) "$(INTDIR)" "$(OUTDIR)" - type .\winconfig.h > .\config.h - -# End Custom Build - -!ENDIF - -# End Source File -# End Group -# Begin Source File - -SOURCE=.\ReadMe.txt -# End Source File -# End Target -# End Project diff --git a/libs/apr-util/xml/expat/lib/xmlparse.c b/libs/apr-util/xml/expat/lib/xmlparse.c deleted file mode 100644 index 822fabdd869..00000000000 --- a/libs/apr-util/xml/expat/lib/xmlparse.c +++ /dev/null @@ -1,4650 +0,0 @@ -/* -Copyright (c) 1998, 1999, 2000 Thai Open Source Software Center Ltd -See the file COPYING for copying permission. -*/ - -static char RCSId[] - = "$Header: /home/cvs/apr-util/xml/expat/lib/xmlparse.c,v 1.4 2001/08/30 05:44:18 wrowe Exp $"; - -#ifdef COMPILED_FROM_DSP -# include "winconfig.h" -# define XMLPARSEAPI __declspec(dllexport) -# include "expat.h" -# undef XMLPARSEAPI -#else -#include - -#ifndef HAVE_MEMMOVE -#ifdef HAVE_BCOPY -#define memmove(d,s,l) bcopy((s),(d),(l)) -#else -#define memmove(d,s,l) ;punting on memmove; -#endif -#endif - -#ifdef HAVE_STRING_H -# include -#endif - -#ifndef __CYGWIN__ -#ifdef __declspec -# define XMLPARSEAPI __declspec(dllexport) -#endif -#endif - -#include "expat.h" - -#ifdef __declspec -# undef XMLPARSEAPI -#endif -#endif /* ndef COMPILED_FROM_DSP */ - -#include - -#ifdef XML_UNICODE -#define XML_ENCODE_MAX XML_UTF16_ENCODE_MAX -#define XmlConvert XmlUtf16Convert -#define XmlGetInternalEncoding XmlGetUtf16InternalEncoding -#define XmlGetInternalEncodingNS XmlGetUtf16InternalEncodingNS -#define XmlEncode XmlUtf16Encode -#define MUST_CONVERT(enc, s) (!(enc)->isUtf16 || (((unsigned long)s) & 1)) -typedef unsigned short ICHAR; -#else -#define XML_ENCODE_MAX XML_UTF8_ENCODE_MAX -#define XmlConvert XmlUtf8Convert -#define XmlGetInternalEncoding XmlGetUtf8InternalEncoding -#define XmlGetInternalEncodingNS XmlGetUtf8InternalEncodingNS -#define XmlEncode XmlUtf8Encode -#define MUST_CONVERT(enc, s) (!(enc)->isUtf8) -typedef char ICHAR; -#endif - - -#ifndef XML_NS - -#define XmlInitEncodingNS XmlInitEncoding -#define XmlInitUnknownEncodingNS XmlInitUnknownEncoding -#undef XmlGetInternalEncodingNS -#define XmlGetInternalEncodingNS XmlGetInternalEncoding -#define XmlParseXmlDeclNS XmlParseXmlDecl - -#endif - -#ifdef XML_UNICODE_WCHAR_T -#define XML_T(x) L ## x -#else -#define XML_T(x) x -#endif - -/* Round up n to be a multiple of sz, where sz is a power of 2. */ -#define ROUND_UP(n, sz) (((n) + ((sz) - 1)) & ~((sz) - 1)) - -#include "xmltok.h" -#include "xmlrole.h" - -typedef const XML_Char *KEY; - -typedef struct { - KEY name; -} NAMED; - -typedef struct { - NAMED **v; - size_t size; - size_t used; - size_t usedLim; - XML_Memory_Handling_Suite *mem; -} HASH_TABLE; - -typedef struct { - NAMED **p; - NAMED **end; -} HASH_TABLE_ITER; - -#define INIT_TAG_BUF_SIZE 32 /* must be a multiple of sizeof(XML_Char) */ -#define INIT_DATA_BUF_SIZE 1024 -#define INIT_ATTS_SIZE 16 -#define INIT_BLOCK_SIZE 1024 -#define INIT_BUFFER_SIZE 1024 - -#define EXPAND_SPARE 24 - -typedef struct binding { - struct prefix *prefix; - struct binding *nextTagBinding; - struct binding *prevPrefixBinding; - const struct attribute_id *attId; - XML_Char *uri; - int uriLen; - int uriAlloc; -} BINDING; - -typedef struct prefix { - const XML_Char *name; - BINDING *binding; -} PREFIX; - -typedef struct { - const XML_Char *str; - const XML_Char *localPart; - int uriLen; -} TAG_NAME; - -typedef struct tag { - struct tag *parent; - const char *rawName; - int rawNameLength; - TAG_NAME name; - char *buf; - char *bufEnd; - BINDING *bindings; -} TAG; - -typedef struct { - const XML_Char *name; - const XML_Char *textPtr; - int textLen; - const XML_Char *systemId; - const XML_Char *base; - const XML_Char *publicId; - const XML_Char *notation; - char open; - char is_param; -} ENTITY; - -typedef struct { - enum XML_Content_Type type; - enum XML_Content_Quant quant; - const XML_Char * name; - int firstchild; - int lastchild; - int childcnt; - int nextsib; -} CONTENT_SCAFFOLD; - -typedef struct block { - struct block *next; - int size; - XML_Char s[1]; -} BLOCK; - -typedef struct { - BLOCK *blocks; - BLOCK *freeBlocks; - const XML_Char *end; - XML_Char *ptr; - XML_Char *start; - XML_Memory_Handling_Suite *mem; -} STRING_POOL; - -/* The XML_Char before the name is used to determine whether -an attribute has been specified. */ -typedef struct attribute_id { - XML_Char *name; - PREFIX *prefix; - char maybeTokenized; - char xmlns; -} ATTRIBUTE_ID; - -typedef struct { - const ATTRIBUTE_ID *id; - char isCdata; - const XML_Char *value; -} DEFAULT_ATTRIBUTE; - -typedef struct { - const XML_Char *name; - PREFIX *prefix; - const ATTRIBUTE_ID *idAtt; - int nDefaultAtts; - int allocDefaultAtts; - DEFAULT_ATTRIBUTE *defaultAtts; -} ELEMENT_TYPE; - -typedef struct { - HASH_TABLE generalEntities; - HASH_TABLE elementTypes; - HASH_TABLE attributeIds; - HASH_TABLE prefixes; - STRING_POOL pool; - int complete; - int standalone; -#ifdef XML_DTD - HASH_TABLE paramEntities; -#endif /* XML_DTD */ - PREFIX defaultPrefix; - /* === scaffolding for building content model === */ - int in_eldecl; - CONTENT_SCAFFOLD *scaffold; - unsigned contentStringLen; - unsigned scaffSize; - unsigned scaffCount; - int scaffLevel; - int *scaffIndex; -} DTD; - -typedef struct open_internal_entity { - const char *internalEventPtr; - const char *internalEventEndPtr; - struct open_internal_entity *next; - ENTITY *entity; -} OPEN_INTERNAL_ENTITY; - -typedef enum XML_Error Processor(XML_Parser parser, - const char *start, - const char *end, - const char **endPtr); - -static Processor prologProcessor; -static Processor prologInitProcessor; -static Processor contentProcessor; -static Processor cdataSectionProcessor; -#ifdef XML_DTD -static Processor ignoreSectionProcessor; -#endif /* XML_DTD */ -static Processor epilogProcessor; -static Processor errorProcessor; -static Processor externalEntityInitProcessor; -static Processor externalEntityInitProcessor2; -static Processor externalEntityInitProcessor3; -static Processor externalEntityContentProcessor; - -static enum XML_Error -handleUnknownEncoding(XML_Parser parser, const XML_Char *encodingName); -static enum XML_Error -processXmlDecl(XML_Parser parser, int isGeneralTextEntity, const char *, const char *); -static enum XML_Error -initializeEncoding(XML_Parser parser); -static enum XML_Error -doProlog(XML_Parser parser, const ENCODING *enc, const char *s, - const char *end, int tok, const char *next, const char **nextPtr); -static enum XML_Error -processInternalParamEntity(XML_Parser parser, ENTITY *entity); -static enum XML_Error -doContent(XML_Parser parser, int startTagLevel, const ENCODING *enc, - const char *start, const char *end, const char **endPtr); -static enum XML_Error -doCdataSection(XML_Parser parser, const ENCODING *, const char **startPtr, const char *end, const char **nextPtr); -#ifdef XML_DTD -static enum XML_Error -doIgnoreSection(XML_Parser parser, const ENCODING *, const char **startPtr, const char *end, const char **nextPtr); -#endif /* XML_DTD */ -static enum XML_Error storeAtts(XML_Parser parser, const ENCODING *, const char *s, - TAG_NAME *tagNamePtr, BINDING **bindingsPtr); -static -int addBinding(XML_Parser parser, PREFIX *prefix, const ATTRIBUTE_ID *attId, const XML_Char *uri, BINDING **bindingsPtr); - -static int -defineAttribute(ELEMENT_TYPE *type, ATTRIBUTE_ID *, - int isCdata, int isId, const XML_Char *dfltValue, - XML_Parser parser); - -static enum XML_Error -storeAttributeValue(XML_Parser parser, const ENCODING *, int isCdata, const char *, const char *, - STRING_POOL *); -static enum XML_Error -appendAttributeValue(XML_Parser parser, const ENCODING *, int isCdata, const char *, const char *, - STRING_POOL *); -static ATTRIBUTE_ID * -getAttributeId(XML_Parser parser, const ENCODING *enc, const char *start, const char *end); -static int setElementTypePrefix(XML_Parser parser, ELEMENT_TYPE *); -static enum XML_Error -storeEntityValue(XML_Parser parser, const ENCODING *enc, const char *start, const char *end); -static int -reportProcessingInstruction(XML_Parser parser, const ENCODING *enc, const char *start, const char *end); -static int -reportComment(XML_Parser parser, const ENCODING *enc, const char *start, const char *end); -static void -reportDefault(XML_Parser parser, const ENCODING *enc, const char *start, const char *end); - -static const XML_Char *getContext(XML_Parser parser); -static int setContext(XML_Parser parser, const XML_Char *context); -static void normalizePublicId(XML_Char *s); -static int dtdInit(DTD *, XML_Parser parser); - -static void dtdDestroy(DTD *, XML_Parser parser); - -static int dtdCopy(DTD *newDtd, const DTD *oldDtd, XML_Parser parser); - -static int copyEntityTable(HASH_TABLE *, STRING_POOL *, const HASH_TABLE *, - XML_Parser parser); - -#ifdef XML_DTD -static void dtdSwap(DTD *, DTD *); -#endif /* XML_DTD */ - -static NAMED *lookup(HASH_TABLE *table, KEY name, size_t createSize); - -static void hashTableInit(HASH_TABLE *, XML_Memory_Handling_Suite *ms); - -static void hashTableDestroy(HASH_TABLE *); -static void hashTableIterInit(HASH_TABLE_ITER *, const HASH_TABLE *); -static NAMED *hashTableIterNext(HASH_TABLE_ITER *); -static void poolInit(STRING_POOL *, XML_Memory_Handling_Suite *ms); -static void poolClear(STRING_POOL *); -static void poolDestroy(STRING_POOL *); -static XML_Char *poolAppend(STRING_POOL *pool, const ENCODING *enc, - const char *ptr, const char *end); -static XML_Char *poolStoreString(STRING_POOL *pool, const ENCODING *enc, - const char *ptr, const char *end); - -static int poolGrow(STRING_POOL *pool); - -static int nextScaffoldPart(XML_Parser parser); -static XML_Content *build_model(XML_Parser parser); - -static const XML_Char *poolCopyString(STRING_POOL *pool, const XML_Char *s); -static const XML_Char *poolCopyStringN(STRING_POOL *pool, const XML_Char *s, int n); -static const XML_Char *poolAppendString(STRING_POOL *pool, const XML_Char *s); -static ELEMENT_TYPE * getElementType(XML_Parser Paraser, - const ENCODING *enc, - const char *ptr, - const char *end); - -#define poolStart(pool) ((pool)->start) -#define poolEnd(pool) ((pool)->ptr) -#define poolLength(pool) ((pool)->ptr - (pool)->start) -#define poolChop(pool) ((void)--(pool->ptr)) -#define poolLastChar(pool) (((pool)->ptr)[-1]) -#define poolDiscard(pool) ((pool)->ptr = (pool)->start) -#define poolFinish(pool) ((pool)->start = (pool)->ptr) -#define poolAppendChar(pool, c) \ - (((pool)->ptr == (pool)->end && !poolGrow(pool)) \ - ? 0 \ - : ((*((pool)->ptr)++ = c), 1)) - -typedef struct { - /* The first member must be userData so that the XML_GetUserData macro works. */ - void *m_userData; - void *m_handlerArg; - char *m_buffer; - XML_Memory_Handling_Suite m_mem; - /* first character to be parsed */ - const char *m_bufferPtr; - /* past last character to be parsed */ - char *m_bufferEnd; - /* allocated end of buffer */ - const char *m_bufferLim; - long m_parseEndByteIndex; - const char *m_parseEndPtr; - XML_Char *m_dataBuf; - XML_Char *m_dataBufEnd; - XML_StartElementHandler m_startElementHandler; - XML_EndElementHandler m_endElementHandler; - XML_CharacterDataHandler m_characterDataHandler; - XML_ProcessingInstructionHandler m_processingInstructionHandler; - XML_CommentHandler m_commentHandler; - XML_StartCdataSectionHandler m_startCdataSectionHandler; - XML_EndCdataSectionHandler m_endCdataSectionHandler; - XML_DefaultHandler m_defaultHandler; - XML_StartDoctypeDeclHandler m_startDoctypeDeclHandler; - XML_EndDoctypeDeclHandler m_endDoctypeDeclHandler; - XML_UnparsedEntityDeclHandler m_unparsedEntityDeclHandler; - XML_NotationDeclHandler m_notationDeclHandler; - XML_StartNamespaceDeclHandler m_startNamespaceDeclHandler; - XML_EndNamespaceDeclHandler m_endNamespaceDeclHandler; - XML_NotStandaloneHandler m_notStandaloneHandler; - XML_ExternalEntityRefHandler m_externalEntityRefHandler; - void *m_externalEntityRefHandlerArg; - XML_UnknownEncodingHandler m_unknownEncodingHandler; - XML_ElementDeclHandler m_elementDeclHandler; - XML_AttlistDeclHandler m_attlistDeclHandler; - XML_EntityDeclHandler m_entityDeclHandler; - XML_XmlDeclHandler m_xmlDeclHandler; - const ENCODING *m_encoding; - INIT_ENCODING m_initEncoding; - const ENCODING *m_internalEncoding; - const XML_Char *m_protocolEncodingName; - int m_ns; - int m_ns_triplets; - void *m_unknownEncodingMem; - void *m_unknownEncodingData; - void *m_unknownEncodingHandlerData; - void (*m_unknownEncodingRelease)(void *); - PROLOG_STATE m_prologState; - Processor *m_processor; - enum XML_Error m_errorCode; - const char *m_eventPtr; - const char *m_eventEndPtr; - const char *m_positionPtr; - OPEN_INTERNAL_ENTITY *m_openInternalEntities; - int m_defaultExpandInternalEntities; - int m_tagLevel; - ENTITY *m_declEntity; - const XML_Char *m_doctypeName; - const XML_Char *m_doctypeSysid; - const XML_Char *m_doctypePubid; - const XML_Char *m_declAttributeType; - const XML_Char *m_declNotationName; - const XML_Char *m_declNotationPublicId; - ELEMENT_TYPE *m_declElementType; - ATTRIBUTE_ID *m_declAttributeId; - char m_declAttributeIsCdata; - char m_declAttributeIsId; - DTD m_dtd; - const XML_Char *m_curBase; - TAG *m_tagStack; - TAG *m_freeTagList; - BINDING *m_inheritedBindings; - BINDING *m_freeBindingList; - int m_attsSize; - int m_nSpecifiedAtts; - int m_idAttIndex; - ATTRIBUTE *m_atts; - POSITION m_position; - STRING_POOL m_tempPool; - STRING_POOL m_temp2Pool; - char *m_groupConnector; - unsigned m_groupSize; - int m_hadExternalDoctype; - XML_Char m_namespaceSeparator; -#ifdef XML_DTD - enum XML_ParamEntityParsing m_paramEntityParsing; - XML_Parser m_parentParser; -#endif -} Parser; - -#define MALLOC(s) (((Parser *)parser)->m_mem.malloc_fcn((s))) -#define REALLOC(p,s) (((Parser *)parser)->m_mem.realloc_fcn((p),(s))) -#define FREE(p) (((Parser *)parser)->m_mem.free_fcn((p))) - -#define userData (((Parser *)parser)->m_userData) -#define handlerArg (((Parser *)parser)->m_handlerArg) -#define startElementHandler (((Parser *)parser)->m_startElementHandler) -#define endElementHandler (((Parser *)parser)->m_endElementHandler) -#define characterDataHandler (((Parser *)parser)->m_characterDataHandler) -#define processingInstructionHandler (((Parser *)parser)->m_processingInstructionHandler) -#define commentHandler (((Parser *)parser)->m_commentHandler) -#define startCdataSectionHandler (((Parser *)parser)->m_startCdataSectionHandler) -#define endCdataSectionHandler (((Parser *)parser)->m_endCdataSectionHandler) -#define defaultHandler (((Parser *)parser)->m_defaultHandler) -#define startDoctypeDeclHandler (((Parser *)parser)->m_startDoctypeDeclHandler) -#define endDoctypeDeclHandler (((Parser *)parser)->m_endDoctypeDeclHandler) -#define unparsedEntityDeclHandler (((Parser *)parser)->m_unparsedEntityDeclHandler) -#define notationDeclHandler (((Parser *)parser)->m_notationDeclHandler) -#define startNamespaceDeclHandler (((Parser *)parser)->m_startNamespaceDeclHandler) -#define endNamespaceDeclHandler (((Parser *)parser)->m_endNamespaceDeclHandler) -#define notStandaloneHandler (((Parser *)parser)->m_notStandaloneHandler) -#define externalEntityRefHandler (((Parser *)parser)->m_externalEntityRefHandler) -#define externalEntityRefHandlerArg (((Parser *)parser)->m_externalEntityRefHandlerArg) -#define unknownEncodingHandler (((Parser *)parser)->m_unknownEncodingHandler) -#define elementDeclHandler (((Parser *)parser)->m_elementDeclHandler) -#define attlistDeclHandler (((Parser *)parser)->m_attlistDeclHandler) -#define entityDeclHandler (((Parser *)parser)->m_entityDeclHandler) -#define xmlDeclHandler (((Parser *)parser)->m_xmlDeclHandler) -#define encoding (((Parser *)parser)->m_encoding) -#define initEncoding (((Parser *)parser)->m_initEncoding) -#define internalEncoding (((Parser *)parser)->m_internalEncoding) -#define unknownEncodingMem (((Parser *)parser)->m_unknownEncodingMem) -#define unknownEncodingData (((Parser *)parser)->m_unknownEncodingData) -#define unknownEncodingHandlerData \ - (((Parser *)parser)->m_unknownEncodingHandlerData) -#define unknownEncodingRelease (((Parser *)parser)->m_unknownEncodingRelease) -#define protocolEncodingName (((Parser *)parser)->m_protocolEncodingName) -#define ns (((Parser *)parser)->m_ns) -#define ns_triplets (((Parser *)parser)->m_ns_triplets) -#define prologState (((Parser *)parser)->m_prologState) -#define processor (((Parser *)parser)->m_processor) -#define errorCode (((Parser *)parser)->m_errorCode) -#define eventPtr (((Parser *)parser)->m_eventPtr) -#define eventEndPtr (((Parser *)parser)->m_eventEndPtr) -#define positionPtr (((Parser *)parser)->m_positionPtr) -#define position (((Parser *)parser)->m_position) -#define openInternalEntities (((Parser *)parser)->m_openInternalEntities) -#define defaultExpandInternalEntities (((Parser *)parser)->m_defaultExpandInternalEntities) -#define tagLevel (((Parser *)parser)->m_tagLevel) -#define buffer (((Parser *)parser)->m_buffer) -#define bufferPtr (((Parser *)parser)->m_bufferPtr) -#define bufferEnd (((Parser *)parser)->m_bufferEnd) -#define parseEndByteIndex (((Parser *)parser)->m_parseEndByteIndex) -#define parseEndPtr (((Parser *)parser)->m_parseEndPtr) -#define bufferLim (((Parser *)parser)->m_bufferLim) -#define dataBuf (((Parser *)parser)->m_dataBuf) -#define dataBufEnd (((Parser *)parser)->m_dataBufEnd) -#define dtd (((Parser *)parser)->m_dtd) -#define curBase (((Parser *)parser)->m_curBase) -#define declEntity (((Parser *)parser)->m_declEntity) -#define doctypeName (((Parser *)parser)->m_doctypeName) -#define doctypeSysid (((Parser *)parser)->m_doctypeSysid) -#define doctypePubid (((Parser *)parser)->m_doctypePubid) -#define declAttributeType (((Parser *)parser)->m_declAttributeType) -#define declNotationName (((Parser *)parser)->m_declNotationName) -#define declNotationPublicId (((Parser *)parser)->m_declNotationPublicId) -#define declElementType (((Parser *)parser)->m_declElementType) -#define declAttributeId (((Parser *)parser)->m_declAttributeId) -#define declAttributeIsCdata (((Parser *)parser)->m_declAttributeIsCdata) -#define declAttributeIsId (((Parser *)parser)->m_declAttributeIsId) -#define freeTagList (((Parser *)parser)->m_freeTagList) -#define freeBindingList (((Parser *)parser)->m_freeBindingList) -#define inheritedBindings (((Parser *)parser)->m_inheritedBindings) -#define tagStack (((Parser *)parser)->m_tagStack) -#define atts (((Parser *)parser)->m_atts) -#define attsSize (((Parser *)parser)->m_attsSize) -#define nSpecifiedAtts (((Parser *)parser)->m_nSpecifiedAtts) -#define idAttIndex (((Parser *)parser)->m_idAttIndex) -#define tempPool (((Parser *)parser)->m_tempPool) -#define temp2Pool (((Parser *)parser)->m_temp2Pool) -#define groupConnector (((Parser *)parser)->m_groupConnector) -#define groupSize (((Parser *)parser)->m_groupSize) -#define hadExternalDoctype (((Parser *)parser)->m_hadExternalDoctype) -#define namespaceSeparator (((Parser *)parser)->m_namespaceSeparator) -#ifdef XML_DTD -#define parentParser (((Parser *)parser)->m_parentParser) -#define paramEntityParsing (((Parser *)parser)->m_paramEntityParsing) -#endif /* XML_DTD */ - -#ifdef COMPILED_FROM_DSP -BOOL WINAPI DllMain(HINSTANCE h, DWORD r, LPVOID p) { - return TRUE; -} -#endif /* def COMPILED_FROM_DSP */ - -#ifdef _MSC_VER -#ifdef _DEBUG -Parser *asParser(XML_Parser parser) -{ - return parser; -} -#endif -#endif - -XML_Parser XML_ParserCreate(const XML_Char *encodingName) -{ - return XML_ParserCreate_MM(encodingName, NULL, NULL); -} - -XML_Parser XML_ParserCreateNS(const XML_Char *encodingName, XML_Char nsSep) -{ - XML_Char tmp[2]; - *tmp = nsSep; - return XML_ParserCreate_MM(encodingName, NULL, tmp); -} - -XML_Parser -XML_ParserCreate_MM(const XML_Char *encodingName, - const XML_Memory_Handling_Suite *memsuite, - const XML_Char *nameSep) { - - XML_Parser parser; - static - const XML_Char implicitContext[] = { - XML_T('x'), XML_T('m'), XML_T('l'), XML_T('='), - XML_T('h'), XML_T('t'), XML_T('t'), XML_T('p'), XML_T(':'), - XML_T('/'), XML_T('/'), XML_T('w'), XML_T('w'), XML_T('w'), - XML_T('.'), XML_T('w'), XML_T('3'), - XML_T('.'), XML_T('o'), XML_T('r'), XML_T('g'), - XML_T('/'), XML_T('X'), XML_T('M'), XML_T('L'), - XML_T('/'), XML_T('1'), XML_T('9'), XML_T('9'), XML_T('8'), - XML_T('/'), XML_T('n'), XML_T('a'), XML_T('m'), XML_T('e'), - XML_T('s'), XML_T('p'), XML_T('a'), XML_T('c'), XML_T('e'), - XML_T('\0') - }; - - - if (memsuite) { - XML_Memory_Handling_Suite *mtemp; - parser = memsuite->malloc_fcn(sizeof(Parser)); - mtemp = &(((Parser *) parser)->m_mem); - mtemp->malloc_fcn = memsuite->malloc_fcn; - mtemp->realloc_fcn = memsuite->realloc_fcn; - mtemp->free_fcn = memsuite->free_fcn; - } - else { - XML_Memory_Handling_Suite *mtemp; - parser = malloc(sizeof(Parser)); - mtemp = &(((Parser *) parser)->m_mem); - mtemp->malloc_fcn = malloc; - mtemp->realloc_fcn = realloc; - mtemp->free_fcn = free; - } - - if (!parser) - return parser; - processor = prologInitProcessor; - XmlPrologStateInit(&prologState); - userData = 0; - handlerArg = 0; - startElementHandler = 0; - endElementHandler = 0; - characterDataHandler = 0; - processingInstructionHandler = 0; - commentHandler = 0; - startCdataSectionHandler = 0; - endCdataSectionHandler = 0; - defaultHandler = 0; - startDoctypeDeclHandler = 0; - endDoctypeDeclHandler = 0; - unparsedEntityDeclHandler = 0; - notationDeclHandler = 0; - startNamespaceDeclHandler = 0; - endNamespaceDeclHandler = 0; - notStandaloneHandler = 0; - externalEntityRefHandler = 0; - externalEntityRefHandlerArg = parser; - unknownEncodingHandler = 0; - elementDeclHandler = 0; - attlistDeclHandler = 0; - entityDeclHandler = 0; - xmlDeclHandler = 0; - buffer = 0; - bufferPtr = 0; - bufferEnd = 0; - parseEndByteIndex = 0; - parseEndPtr = 0; - bufferLim = 0; - declElementType = 0; - declAttributeId = 0; - declEntity = 0; - doctypeName = 0; - doctypeSysid = 0; - doctypePubid = 0; - declAttributeType = 0; - declNotationName = 0; - declNotationPublicId = 0; - memset(&position, 0, sizeof(POSITION)); - errorCode = XML_ERROR_NONE; - eventPtr = 0; - eventEndPtr = 0; - positionPtr = 0; - openInternalEntities = 0; - tagLevel = 0; - tagStack = 0; - freeTagList = 0; - freeBindingList = 0; - inheritedBindings = 0; - attsSize = INIT_ATTS_SIZE; - atts = MALLOC(attsSize * sizeof(ATTRIBUTE)); - nSpecifiedAtts = 0; - dataBuf = MALLOC(INIT_DATA_BUF_SIZE * sizeof(XML_Char)); - groupSize = 0; - groupConnector = 0; - hadExternalDoctype = 0; - unknownEncodingMem = 0; - unknownEncodingRelease = 0; - unknownEncodingData = 0; - unknownEncodingHandlerData = 0; - namespaceSeparator = '!'; -#ifdef XML_DTD - parentParser = 0; - paramEntityParsing = XML_PARAM_ENTITY_PARSING_NEVER; -#endif - ns = 0; - ns_triplets = 0; - poolInit(&tempPool, &(((Parser *) parser)->m_mem)); - poolInit(&temp2Pool, &(((Parser *) parser)->m_mem)); - protocolEncodingName = encodingName ? poolCopyString(&tempPool, encodingName) : 0; - curBase = 0; - if (!dtdInit(&dtd, parser) || !atts || !dataBuf - || (encodingName && !protocolEncodingName)) { - XML_ParserFree(parser); - return 0; - } - dataBufEnd = dataBuf + INIT_DATA_BUF_SIZE; - - if (nameSep) { - XmlInitEncodingNS(&initEncoding, &encoding, 0); - ns = 1; - internalEncoding = XmlGetInternalEncodingNS(); - namespaceSeparator = *nameSep; - - if (! setContext(parser, implicitContext)) { - XML_ParserFree(parser); - return 0; - } - } - else { - XmlInitEncoding(&initEncoding, &encoding, 0); - internalEncoding = XmlGetInternalEncoding(); - } - - return parser; -} /* End XML_ParserCreate_MM */ - -int XML_SetEncoding(XML_Parser parser, const XML_Char *encodingName) -{ - if (!encodingName) - protocolEncodingName = 0; - else { - protocolEncodingName = poolCopyString(&tempPool, encodingName); - if (!protocolEncodingName) - return 0; - } - return 1; -} - -XML_Parser XML_ExternalEntityParserCreate(XML_Parser oldParser, - const XML_Char *context, - const XML_Char *encodingName) -{ - XML_Parser parser = oldParser; - DTD *oldDtd = &dtd; - XML_StartElementHandler oldStartElementHandler = startElementHandler; - XML_EndElementHandler oldEndElementHandler = endElementHandler; - XML_CharacterDataHandler oldCharacterDataHandler = characterDataHandler; - XML_ProcessingInstructionHandler oldProcessingInstructionHandler = processingInstructionHandler; - XML_CommentHandler oldCommentHandler = commentHandler; - XML_StartCdataSectionHandler oldStartCdataSectionHandler = startCdataSectionHandler; - XML_EndCdataSectionHandler oldEndCdataSectionHandler = endCdataSectionHandler; - XML_DefaultHandler oldDefaultHandler = defaultHandler; - XML_UnparsedEntityDeclHandler oldUnparsedEntityDeclHandler = unparsedEntityDeclHandler; - XML_NotationDeclHandler oldNotationDeclHandler = notationDeclHandler; - XML_StartNamespaceDeclHandler oldStartNamespaceDeclHandler = startNamespaceDeclHandler; - XML_EndNamespaceDeclHandler oldEndNamespaceDeclHandler = endNamespaceDeclHandler; - XML_NotStandaloneHandler oldNotStandaloneHandler = notStandaloneHandler; - XML_ExternalEntityRefHandler oldExternalEntityRefHandler = externalEntityRefHandler; - XML_UnknownEncodingHandler oldUnknownEncodingHandler = unknownEncodingHandler; - XML_ElementDeclHandler oldElementDeclHandler = elementDeclHandler; - XML_AttlistDeclHandler oldAttlistDeclHandler = attlistDeclHandler; - XML_EntityDeclHandler oldEntityDeclHandler = entityDeclHandler; - XML_XmlDeclHandler oldXmlDeclHandler = xmlDeclHandler; - ELEMENT_TYPE * oldDeclElementType = declElementType; - - void *oldUserData = userData; - void *oldHandlerArg = handlerArg; - int oldDefaultExpandInternalEntities = defaultExpandInternalEntities; - void *oldExternalEntityRefHandlerArg = externalEntityRefHandlerArg; -#ifdef XML_DTD - int oldParamEntityParsing = paramEntityParsing; -#endif - int oldns_triplets = ns_triplets; - - if (ns) { - XML_Char tmp[2]; - - *tmp = namespaceSeparator; - parser = XML_ParserCreate_MM(encodingName, &((Parser *)parser)->m_mem, - tmp); - } - else { - parser = XML_ParserCreate_MM(encodingName, &((Parser *)parser)->m_mem, - NULL); - } - - if (!parser) - return 0; - - startElementHandler = oldStartElementHandler; - endElementHandler = oldEndElementHandler; - characterDataHandler = oldCharacterDataHandler; - processingInstructionHandler = oldProcessingInstructionHandler; - commentHandler = oldCommentHandler; - startCdataSectionHandler = oldStartCdataSectionHandler; - endCdataSectionHandler = oldEndCdataSectionHandler; - defaultHandler = oldDefaultHandler; - unparsedEntityDeclHandler = oldUnparsedEntityDeclHandler; - notationDeclHandler = oldNotationDeclHandler; - startNamespaceDeclHandler = oldStartNamespaceDeclHandler; - endNamespaceDeclHandler = oldEndNamespaceDeclHandler; - notStandaloneHandler = oldNotStandaloneHandler; - externalEntityRefHandler = oldExternalEntityRefHandler; - unknownEncodingHandler = oldUnknownEncodingHandler; - elementDeclHandler = oldElementDeclHandler; - attlistDeclHandler = oldAttlistDeclHandler; - entityDeclHandler = oldEntityDeclHandler; - xmlDeclHandler = oldXmlDeclHandler; - declElementType = oldDeclElementType; - userData = oldUserData; - if (oldUserData == oldHandlerArg) - handlerArg = userData; - else - handlerArg = parser; - if (oldExternalEntityRefHandlerArg != oldParser) - externalEntityRefHandlerArg = oldExternalEntityRefHandlerArg; - defaultExpandInternalEntities = oldDefaultExpandInternalEntities; - ns_triplets = oldns_triplets; -#ifdef XML_DTD - paramEntityParsing = oldParamEntityParsing; - if (context) { -#endif /* XML_DTD */ - if (!dtdCopy(&dtd, oldDtd, parser) || !setContext(parser, context)) { - XML_ParserFree(parser); - return 0; - } - processor = externalEntityInitProcessor; -#ifdef XML_DTD - } - else { - dtdSwap(&dtd, oldDtd); - parentParser = oldParser; - XmlPrologStateInitExternalEntity(&prologState); - dtd.complete = 1; - hadExternalDoctype = 1; - } -#endif /* XML_DTD */ - return parser; -} - -static -void destroyBindings(BINDING *bindings, XML_Parser parser) -{ - for (;;) { - BINDING *b = bindings; - if (!b) - break; - bindings = b->nextTagBinding; - FREE(b->uri); - FREE(b); - } -} - -void XML_ParserFree(XML_Parser parser) -{ - for (;;) { - TAG *p; - if (tagStack == 0) { - if (freeTagList == 0) - break; - tagStack = freeTagList; - freeTagList = 0; - } - p = tagStack; - tagStack = tagStack->parent; - FREE(p->buf); - destroyBindings(p->bindings, parser); - FREE(p); - } - destroyBindings(freeBindingList, parser); - destroyBindings(inheritedBindings, parser); - poolDestroy(&tempPool); - poolDestroy(&temp2Pool); -#ifdef XML_DTD - if (parentParser) { - if (hadExternalDoctype) - dtd.complete = 0; - dtdSwap(&dtd, &((Parser *)parentParser)->m_dtd); - } -#endif /* XML_DTD */ - dtdDestroy(&dtd, parser); - FREE((void *)atts); - if (groupConnector) - FREE(groupConnector); - if (buffer) - FREE(buffer); - FREE(dataBuf); - if (unknownEncodingMem) - FREE(unknownEncodingMem); - if (unknownEncodingRelease) - unknownEncodingRelease(unknownEncodingData); - FREE(parser); -} - -void XML_UseParserAsHandlerArg(XML_Parser parser) -{ - handlerArg = parser; -} - -void -XML_SetReturnNSTriplet(XML_Parser parser, int do_nst) { - ns_triplets = do_nst; -} - -void XML_SetUserData(XML_Parser parser, void *p) -{ - if (handlerArg == userData) - handlerArg = userData = p; - else - userData = p; -} - -int XML_SetBase(XML_Parser parser, const XML_Char *p) -{ - if (p) { - p = poolCopyString(&dtd.pool, p); - if (!p) - return 0; - curBase = p; - } - else - curBase = 0; - return 1; -} - -const XML_Char *XML_GetBase(XML_Parser parser) -{ - return curBase; -} - -int XML_GetSpecifiedAttributeCount(XML_Parser parser) -{ - return nSpecifiedAtts; -} - -int XML_GetIdAttributeIndex(XML_Parser parser) -{ - return idAttIndex; -} - -void XML_SetElementHandler(XML_Parser parser, - XML_StartElementHandler start, - XML_EndElementHandler end) -{ - startElementHandler = start; - endElementHandler = end; -} - -void XML_SetStartElementHandler(XML_Parser parser, - XML_StartElementHandler start) { - startElementHandler = start; -} - -void XML_SetEndElementHandler(XML_Parser parser, - XML_EndElementHandler end) { - endElementHandler = end; -} - -void XML_SetCharacterDataHandler(XML_Parser parser, - XML_CharacterDataHandler handler) -{ - characterDataHandler = handler; -} - -void XML_SetProcessingInstructionHandler(XML_Parser parser, - XML_ProcessingInstructionHandler handler) -{ - processingInstructionHandler = handler; -} - -void XML_SetCommentHandler(XML_Parser parser, - XML_CommentHandler handler) -{ - commentHandler = handler; -} - -void XML_SetCdataSectionHandler(XML_Parser parser, - XML_StartCdataSectionHandler start, - XML_EndCdataSectionHandler end) -{ - startCdataSectionHandler = start; - endCdataSectionHandler = end; -} - -void XML_SetStartCdataSectionHandler(XML_Parser parser, - XML_StartCdataSectionHandler start) { - startCdataSectionHandler = start; -} - -void XML_SetEndCdataSectionHandler(XML_Parser parser, - XML_EndCdataSectionHandler end) { - endCdataSectionHandler = end; -} - -void XML_SetDefaultHandler(XML_Parser parser, - XML_DefaultHandler handler) -{ - defaultHandler = handler; - defaultExpandInternalEntities = 0; -} - -void XML_SetDefaultHandlerExpand(XML_Parser parser, - XML_DefaultHandler handler) -{ - defaultHandler = handler; - defaultExpandInternalEntities = 1; -} - -void XML_SetDoctypeDeclHandler(XML_Parser parser, - XML_StartDoctypeDeclHandler start, - XML_EndDoctypeDeclHandler end) -{ - startDoctypeDeclHandler = start; - endDoctypeDeclHandler = end; -} - -void XML_SetStartDoctypeDeclHandler(XML_Parser parser, - XML_StartDoctypeDeclHandler start) { - startDoctypeDeclHandler = start; -} - -void XML_SetEndDoctypeDeclHandler(XML_Parser parser, - XML_EndDoctypeDeclHandler end) { - endDoctypeDeclHandler = end; -} - -void XML_SetUnparsedEntityDeclHandler(XML_Parser parser, - XML_UnparsedEntityDeclHandler handler) -{ - unparsedEntityDeclHandler = handler; -} - -void XML_SetNotationDeclHandler(XML_Parser parser, - XML_NotationDeclHandler handler) -{ - notationDeclHandler = handler; -} - -void XML_SetNamespaceDeclHandler(XML_Parser parser, - XML_StartNamespaceDeclHandler start, - XML_EndNamespaceDeclHandler end) -{ - startNamespaceDeclHandler = start; - endNamespaceDeclHandler = end; -} - -void XML_SetStartNamespaceDeclHandler(XML_Parser parser, - XML_StartNamespaceDeclHandler start) { - startNamespaceDeclHandler = start; -} - -void XML_SetEndNamespaceDeclHandler(XML_Parser parser, - XML_EndNamespaceDeclHandler end) { - endNamespaceDeclHandler = end; -} - - -void XML_SetNotStandaloneHandler(XML_Parser parser, - XML_NotStandaloneHandler handler) -{ - notStandaloneHandler = handler; -} - -void XML_SetExternalEntityRefHandler(XML_Parser parser, - XML_ExternalEntityRefHandler handler) -{ - externalEntityRefHandler = handler; -} - -void XML_SetExternalEntityRefHandlerArg(XML_Parser parser, void *arg) -{ - if (arg) - externalEntityRefHandlerArg = arg; - else - externalEntityRefHandlerArg = parser; -} - -void XML_SetUnknownEncodingHandler(XML_Parser parser, - XML_UnknownEncodingHandler handler, - void *data) -{ - unknownEncodingHandler = handler; - unknownEncodingHandlerData = data; -} - -void XML_SetElementDeclHandler(XML_Parser parser, - XML_ElementDeclHandler eldecl) -{ - elementDeclHandler = eldecl; -} - -void XML_SetAttlistDeclHandler(XML_Parser parser, - XML_AttlistDeclHandler attdecl) -{ - attlistDeclHandler = attdecl; -} - -void XML_SetEntityDeclHandler(XML_Parser parser, - XML_EntityDeclHandler handler) -{ - entityDeclHandler = handler; -} - -void XML_SetXmlDeclHandler(XML_Parser parser, - XML_XmlDeclHandler handler) { - xmlDeclHandler = handler; -} - -int XML_SetParamEntityParsing(XML_Parser parser, - enum XML_ParamEntityParsing parsing) -{ -#ifdef XML_DTD - paramEntityParsing = parsing; - return 1; -#else - return parsing == XML_PARAM_ENTITY_PARSING_NEVER; -#endif -} - -int XML_Parse(XML_Parser parser, const char *s, int len, int isFinal) -{ - if (len == 0) { - if (!isFinal) - return 1; - positionPtr = bufferPtr; - errorCode = processor(parser, bufferPtr, parseEndPtr = bufferEnd, 0); - if (errorCode == XML_ERROR_NONE) - return 1; - eventEndPtr = eventPtr; - processor = errorProcessor; - return 0; - } -#ifndef XML_CONTEXT_BYTES - else if (bufferPtr == bufferEnd) { - const char *end; - int nLeftOver; - parseEndByteIndex += len; - positionPtr = s; - if (isFinal) { - errorCode = processor(parser, s, parseEndPtr = s + len, 0); - if (errorCode == XML_ERROR_NONE) - return 1; - eventEndPtr = eventPtr; - processor = errorProcessor; - return 0; - } - errorCode = processor(parser, s, parseEndPtr = s + len, &end); - if (errorCode != XML_ERROR_NONE) { - eventEndPtr = eventPtr; - processor = errorProcessor; - return 0; - } - XmlUpdatePosition(encoding, positionPtr, end, &position); - nLeftOver = s + len - end; - if (nLeftOver) { - if (buffer == 0 || nLeftOver > bufferLim - buffer) { - /* FIXME avoid integer overflow */ - buffer = buffer == 0 ? MALLOC(len * 2) : REALLOC(buffer, len * 2); - /* FIXME storage leak if realloc fails */ - if (!buffer) { - errorCode = XML_ERROR_NO_MEMORY; - eventPtr = eventEndPtr = 0; - processor = errorProcessor; - return 0; - } - bufferLim = buffer + len * 2; - } - memcpy(buffer, end, nLeftOver); - bufferPtr = buffer; - bufferEnd = buffer + nLeftOver; - } - return 1; - } -#endif /* not defined XML_CONTEXT_BYTES */ - else { - memcpy(XML_GetBuffer(parser, len), s, len); - return XML_ParseBuffer(parser, len, isFinal); - } -} - -int XML_ParseBuffer(XML_Parser parser, int len, int isFinal) -{ - const char *start = bufferPtr; - positionPtr = start; - bufferEnd += len; - parseEndByteIndex += len; - errorCode = processor(parser, start, parseEndPtr = bufferEnd, - isFinal ? (const char **)0 : &bufferPtr); - if (errorCode == XML_ERROR_NONE) { - if (!isFinal) - XmlUpdatePosition(encoding, positionPtr, bufferPtr, &position); - return 1; - } - else { - eventEndPtr = eventPtr; - processor = errorProcessor; - return 0; - } -} - -void *XML_GetBuffer(XML_Parser parser, int len) -{ - if (len > bufferLim - bufferEnd) { - /* FIXME avoid integer overflow */ - int neededSize = len + (bufferEnd - bufferPtr); -#ifdef XML_CONTEXT_BYTES - int keep = bufferPtr - buffer; - - if (keep > XML_CONTEXT_BYTES) - keep = XML_CONTEXT_BYTES; - neededSize += keep; -#endif /* defined XML_CONTEXT_BYTES */ - if (neededSize <= bufferLim - buffer) { -#ifdef XML_CONTEXT_BYTES - if (keep < bufferPtr - buffer) { - int offset = (bufferPtr - buffer) - keep; - memmove(buffer, &buffer[offset], bufferEnd - bufferPtr + keep); - bufferEnd -= offset; - bufferPtr -= offset; - } -#else - memmove(buffer, bufferPtr, bufferEnd - bufferPtr); - bufferEnd = buffer + (bufferEnd - bufferPtr); - bufferPtr = buffer; -#endif /* not defined XML_CONTEXT_BYTES */ - } - else { - char *newBuf; - int bufferSize = bufferLim - bufferPtr; - if (bufferSize == 0) - bufferSize = INIT_BUFFER_SIZE; - do { - bufferSize *= 2; - } while (bufferSize < neededSize); - newBuf = MALLOC(bufferSize); - if (newBuf == 0) { - errorCode = XML_ERROR_NO_MEMORY; - return 0; - } - bufferLim = newBuf + bufferSize; -#ifdef XML_CONTEXT_BYTES - if (bufferPtr) { - int keep = bufferPtr - buffer; - if (keep > XML_CONTEXT_BYTES) - keep = XML_CONTEXT_BYTES; - memcpy(newBuf, &bufferPtr[-keep], bufferEnd - bufferPtr + keep); - FREE(buffer); - buffer = newBuf; - bufferEnd = buffer + (bufferEnd - bufferPtr) + keep; - bufferPtr = buffer + keep; - } - else { - bufferEnd = newBuf + (bufferEnd - bufferPtr); - bufferPtr = buffer = newBuf; - } -#else - if (bufferPtr) { - memcpy(newBuf, bufferPtr, bufferEnd - bufferPtr); - FREE(buffer); - } - bufferEnd = newBuf + (bufferEnd - bufferPtr); - bufferPtr = buffer = newBuf; -#endif /* not defined XML_CONTEXT_BYTES */ - } - } - return bufferEnd; -} - -enum XML_Error XML_GetErrorCode(XML_Parser parser) -{ - return errorCode; -} - -long XML_GetCurrentByteIndex(XML_Parser parser) -{ - if (eventPtr) - return parseEndByteIndex - (parseEndPtr - eventPtr); - return -1; -} - -int XML_GetCurrentByteCount(XML_Parser parser) -{ - if (eventEndPtr && eventPtr) - return eventEndPtr - eventPtr; - return 0; -} - -const char * XML_GetInputContext(XML_Parser parser, int *offset, int *size) -{ -#ifdef XML_CONTEXT_BYTES - if (eventPtr && buffer) { - *offset = eventPtr - buffer; - *size = bufferEnd - buffer; - return buffer; - } -#endif /* defined XML_CONTEXT_BYTES */ - return (char *) 0; -} - -int XML_GetCurrentLineNumber(XML_Parser parser) -{ - if (eventPtr) { - XmlUpdatePosition(encoding, positionPtr, eventPtr, &position); - positionPtr = eventPtr; - } - return position.lineNumber + 1; -} - -int XML_GetCurrentColumnNumber(XML_Parser parser) -{ - if (eventPtr) { - XmlUpdatePosition(encoding, positionPtr, eventPtr, &position); - positionPtr = eventPtr; - } - return position.columnNumber; -} - -void XML_DefaultCurrent(XML_Parser parser) -{ - if (defaultHandler) { - if (openInternalEntities) - reportDefault(parser, - internalEncoding, - openInternalEntities->internalEventPtr, - openInternalEntities->internalEventEndPtr); - else - reportDefault(parser, encoding, eventPtr, eventEndPtr); - } -} - -const XML_LChar *XML_ErrorString(int code) -{ - static const XML_LChar *message[] = { - 0, - XML_T("out of memory"), - XML_T("syntax error"), - XML_T("no element found"), - XML_T("not well-formed (invalid token)"), - XML_T("unclosed token"), - XML_T("unclosed token"), - XML_T("mismatched tag"), - XML_T("duplicate attribute"), - XML_T("junk after document element"), - XML_T("illegal parameter entity reference"), - XML_T("undefined entity"), - XML_T("recursive entity reference"), - XML_T("asynchronous entity"), - XML_T("reference to invalid character number"), - XML_T("reference to binary entity"), - XML_T("reference to external entity in attribute"), - XML_T("xml processing instruction not at start of external entity"), - XML_T("unknown encoding"), - XML_T("encoding specified in XML declaration is incorrect"), - XML_T("unclosed CDATA section"), - XML_T("error in processing external entity reference"), - XML_T("document is not standalone"), - XML_T("unexpected parser state - please send a bug report") - }; - if (code > 0 && code < sizeof(message)/sizeof(message[0])) - return message[code]; - return 0; -} - -const XML_LChar * -XML_ExpatVersion(void) { - return VERSION; -} - -XML_Expat_Version -XML_ExpatVersionInfo(void) { - XML_Expat_Version version; - - version.major = XML_MAJOR_VERSION; - version.minor = XML_MINOR_VERSION; - version.micro = XML_MICRO_VERSION; - - return version; -} - -static -enum XML_Error contentProcessor(XML_Parser parser, - const char *start, - const char *end, - const char **endPtr) -{ - return doContent(parser, 0, encoding, start, end, endPtr); -} - -static -enum XML_Error externalEntityInitProcessor(XML_Parser parser, - const char *start, - const char *end, - const char **endPtr) -{ - enum XML_Error result = initializeEncoding(parser); - if (result != XML_ERROR_NONE) - return result; - processor = externalEntityInitProcessor2; - return externalEntityInitProcessor2(parser, start, end, endPtr); -} - -static -enum XML_Error externalEntityInitProcessor2(XML_Parser parser, - const char *start, - const char *end, - const char **endPtr) -{ - const char *next; - int tok = XmlContentTok(encoding, start, end, &next); - switch (tok) { - case XML_TOK_BOM: - start = next; - break; - case XML_TOK_PARTIAL: - if (endPtr) { - *endPtr = start; - return XML_ERROR_NONE; - } - eventPtr = start; - return XML_ERROR_UNCLOSED_TOKEN; - case XML_TOK_PARTIAL_CHAR: - if (endPtr) { - *endPtr = start; - return XML_ERROR_NONE; - } - eventPtr = start; - return XML_ERROR_PARTIAL_CHAR; - } - processor = externalEntityInitProcessor3; - return externalEntityInitProcessor3(parser, start, end, endPtr); -} - -static -enum XML_Error externalEntityInitProcessor3(XML_Parser parser, - const char *start, - const char *end, - const char **endPtr) -{ - const char *next; - int tok = XmlContentTok(encoding, start, end, &next); - switch (tok) { - case XML_TOK_XML_DECL: - { - enum XML_Error result = processXmlDecl(parser, 1, start, next); - if (result != XML_ERROR_NONE) - return result; - start = next; - } - break; - case XML_TOK_PARTIAL: - if (endPtr) { - *endPtr = start; - return XML_ERROR_NONE; - } - eventPtr = start; - return XML_ERROR_UNCLOSED_TOKEN; - case XML_TOK_PARTIAL_CHAR: - if (endPtr) { - *endPtr = start; - return XML_ERROR_NONE; - } - eventPtr = start; - return XML_ERROR_PARTIAL_CHAR; - } - processor = externalEntityContentProcessor; - tagLevel = 1; - return doContent(parser, 1, encoding, start, end, endPtr); -} - -static -enum XML_Error externalEntityContentProcessor(XML_Parser parser, - const char *start, - const char *end, - const char **endPtr) -{ - return doContent(parser, 1, encoding, start, end, endPtr); -} - -static enum XML_Error -doContent(XML_Parser parser, - int startTagLevel, - const ENCODING *enc, - const char *s, - const char *end, - const char **nextPtr) -{ - const char **eventPP; - const char **eventEndPP; - if (enc == encoding) { - eventPP = &eventPtr; - eventEndPP = &eventEndPtr; - } - else { - eventPP = &(openInternalEntities->internalEventPtr); - eventEndPP = &(openInternalEntities->internalEventEndPtr); - } - *eventPP = s; - for (;;) { - const char *next = s; /* XmlContentTok doesn't always set the last arg */ - int tok = XmlContentTok(enc, s, end, &next); - *eventEndPP = next; - switch (tok) { - case XML_TOK_TRAILING_CR: - if (nextPtr) { - *nextPtr = s; - return XML_ERROR_NONE; - } - *eventEndPP = end; - if (characterDataHandler) { - XML_Char c = 0xA; - characterDataHandler(handlerArg, &c, 1); - } - else if (defaultHandler) - reportDefault(parser, enc, s, end); - if (startTagLevel == 0) - return XML_ERROR_NO_ELEMENTS; - if (tagLevel != startTagLevel) - return XML_ERROR_ASYNC_ENTITY; - return XML_ERROR_NONE; - case XML_TOK_NONE: - if (nextPtr) { - *nextPtr = s; - return XML_ERROR_NONE; - } - if (startTagLevel > 0) { - if (tagLevel != startTagLevel) - return XML_ERROR_ASYNC_ENTITY; - return XML_ERROR_NONE; - } - return XML_ERROR_NO_ELEMENTS; - case XML_TOK_INVALID: - *eventPP = next; - return XML_ERROR_INVALID_TOKEN; - case XML_TOK_PARTIAL: - if (nextPtr) { - *nextPtr = s; - return XML_ERROR_NONE; - } - return XML_ERROR_UNCLOSED_TOKEN; - case XML_TOK_PARTIAL_CHAR: - if (nextPtr) { - *nextPtr = s; - return XML_ERROR_NONE; - } - return XML_ERROR_PARTIAL_CHAR; - case XML_TOK_ENTITY_REF: - { - const XML_Char *name; - ENTITY *entity; - XML_Char ch = XmlPredefinedEntityName(enc, - s + enc->minBytesPerChar, - next - enc->minBytesPerChar); - if (ch) { - if (characterDataHandler) - characterDataHandler(handlerArg, &ch, 1); - else if (defaultHandler) - reportDefault(parser, enc, s, next); - break; - } - name = poolStoreString(&dtd.pool, enc, - s + enc->minBytesPerChar, - next - enc->minBytesPerChar); - if (!name) - return XML_ERROR_NO_MEMORY; - entity = (ENTITY *)lookup(&dtd.generalEntities, name, 0); - poolDiscard(&dtd.pool); - if (!entity) { - if (dtd.complete || dtd.standalone) - return XML_ERROR_UNDEFINED_ENTITY; - if (defaultHandler) - reportDefault(parser, enc, s, next); - break; - } - if (entity->open) - return XML_ERROR_RECURSIVE_ENTITY_REF; - if (entity->notation) - return XML_ERROR_BINARY_ENTITY_REF; - if (entity) { - if (entity->textPtr) { - enum XML_Error result; - OPEN_INTERNAL_ENTITY openEntity; - if (defaultHandler && !defaultExpandInternalEntities) { - reportDefault(parser, enc, s, next); - break; - } - entity->open = 1; - openEntity.next = openInternalEntities; - openInternalEntities = &openEntity; - openEntity.entity = entity; - openEntity.internalEventPtr = 0; - openEntity.internalEventEndPtr = 0; - result = doContent(parser, - tagLevel, - internalEncoding, - (char *)entity->textPtr, - (char *)(entity->textPtr + entity->textLen), - 0); - entity->open = 0; - openInternalEntities = openEntity.next; - if (result) - return result; - } - else if (externalEntityRefHandler) { - const XML_Char *context; - entity->open = 1; - context = getContext(parser); - entity->open = 0; - if (!context) - return XML_ERROR_NO_MEMORY; - if (!externalEntityRefHandler(externalEntityRefHandlerArg, - context, - entity->base, - entity->systemId, - entity->publicId)) - return XML_ERROR_EXTERNAL_ENTITY_HANDLING; - poolDiscard(&tempPool); - } - else if (defaultHandler) - reportDefault(parser, enc, s, next); - } - break; - } - case XML_TOK_START_TAG_WITH_ATTS: - if (!startElementHandler) { - enum XML_Error result = storeAtts(parser, enc, s, 0, 0); - if (result) - return result; - } - /* fall through */ - case XML_TOK_START_TAG_NO_ATTS: - { - TAG *tag; - if (freeTagList) { - tag = freeTagList; - freeTagList = freeTagList->parent; - } - else { - tag = MALLOC(sizeof(TAG)); - if (!tag) - return XML_ERROR_NO_MEMORY; - tag->buf = MALLOC(INIT_TAG_BUF_SIZE); - if (!tag->buf) - return XML_ERROR_NO_MEMORY; - tag->bufEnd = tag->buf + INIT_TAG_BUF_SIZE; - } - tag->bindings = 0; - tag->parent = tagStack; - tagStack = tag; - tag->name.localPart = 0; - tag->rawName = s + enc->minBytesPerChar; - tag->rawNameLength = XmlNameLength(enc, tag->rawName); - if (nextPtr) { - /* Need to guarantee that: - tag->buf + ROUND_UP(tag->rawNameLength, sizeof(XML_Char)) <= tag->bufEnd - sizeof(XML_Char) */ - if (tag->rawNameLength + (int)(sizeof(XML_Char) - 1) + (int)sizeof(XML_Char) > tag->bufEnd - tag->buf) { - int bufSize = tag->rawNameLength * 4; - bufSize = ROUND_UP(bufSize, sizeof(XML_Char)); - tag->buf = REALLOC(tag->buf, bufSize); - if (!tag->buf) - return XML_ERROR_NO_MEMORY; - tag->bufEnd = tag->buf + bufSize; - } - memcpy(tag->buf, tag->rawName, tag->rawNameLength); - tag->rawName = tag->buf; - } - ++tagLevel; - if (startElementHandler) { - enum XML_Error result; - XML_Char *toPtr; - for (;;) { - const char *rawNameEnd = tag->rawName + tag->rawNameLength; - const char *fromPtr = tag->rawName; - int bufSize; - if (nextPtr) - toPtr = (XML_Char *)(tag->buf + ROUND_UP(tag->rawNameLength, sizeof(XML_Char))); - else - toPtr = (XML_Char *)tag->buf; - tag->name.str = toPtr; - XmlConvert(enc, - &fromPtr, rawNameEnd, - (ICHAR **)&toPtr, (ICHAR *)tag->bufEnd - 1); - if (fromPtr == rawNameEnd) - break; - bufSize = (tag->bufEnd - tag->buf) << 1; - tag->buf = REALLOC(tag->buf, bufSize); - if (!tag->buf) - return XML_ERROR_NO_MEMORY; - tag->bufEnd = tag->buf + bufSize; - if (nextPtr) - tag->rawName = tag->buf; - } - *toPtr = XML_T('\0'); - result = storeAtts(parser, enc, s, &(tag->name), &(tag->bindings)); - if (result) - return result; - startElementHandler(handlerArg, tag->name.str, (const XML_Char **)atts); - poolClear(&tempPool); - } - else { - tag->name.str = 0; - if (defaultHandler) - reportDefault(parser, enc, s, next); - } - break; - } - case XML_TOK_EMPTY_ELEMENT_WITH_ATTS: - if (!startElementHandler) { - enum XML_Error result = storeAtts(parser, enc, s, 0, 0); - if (result) - return result; - } - /* fall through */ - case XML_TOK_EMPTY_ELEMENT_NO_ATTS: - if (startElementHandler || endElementHandler) { - const char *rawName = s + enc->minBytesPerChar; - enum XML_Error result; - BINDING *bindings = 0; - TAG_NAME name; - name.str = poolStoreString(&tempPool, enc, rawName, - rawName + XmlNameLength(enc, rawName)); - if (!name.str) - return XML_ERROR_NO_MEMORY; - poolFinish(&tempPool); - result = storeAtts(parser, enc, s, &name, &bindings); - if (result) - return result; - poolFinish(&tempPool); - if (startElementHandler) - startElementHandler(handlerArg, name.str, (const XML_Char **)atts); - if (endElementHandler) { - if (startElementHandler) - *eventPP = *eventEndPP; - endElementHandler(handlerArg, name.str); - } - poolClear(&tempPool); - while (bindings) { - BINDING *b = bindings; - if (endNamespaceDeclHandler) - endNamespaceDeclHandler(handlerArg, b->prefix->name); - bindings = bindings->nextTagBinding; - b->nextTagBinding = freeBindingList; - freeBindingList = b; - b->prefix->binding = b->prevPrefixBinding; - } - } - else if (defaultHandler) - reportDefault(parser, enc, s, next); - if (tagLevel == 0) - return epilogProcessor(parser, next, end, nextPtr); - break; - case XML_TOK_END_TAG: - if (tagLevel == startTagLevel) - return XML_ERROR_ASYNC_ENTITY; - else { - int len; - const char *rawName; - TAG *tag = tagStack; - tagStack = tag->parent; - tag->parent = freeTagList; - freeTagList = tag; - rawName = s + enc->minBytesPerChar*2; - len = XmlNameLength(enc, rawName); - if (len != tag->rawNameLength - || memcmp(tag->rawName, rawName, len) != 0) { - *eventPP = rawName; - return XML_ERROR_TAG_MISMATCH; - } - --tagLevel; - if (endElementHandler && tag->name.str) { - if (tag->name.localPart) { - XML_Char *to = (XML_Char *)tag->name.str + tag->name.uriLen; - const XML_Char *from = tag->name.localPart; - while ((*to++ = *from++) != 0) - ; - } - endElementHandler(handlerArg, tag->name.str); - } - else if (defaultHandler) - reportDefault(parser, enc, s, next); - while (tag->bindings) { - BINDING *b = tag->bindings; - if (endNamespaceDeclHandler) - endNamespaceDeclHandler(handlerArg, b->prefix->name); - tag->bindings = tag->bindings->nextTagBinding; - b->nextTagBinding = freeBindingList; - freeBindingList = b; - b->prefix->binding = b->prevPrefixBinding; - } - if (tagLevel == 0) - return epilogProcessor(parser, next, end, nextPtr); - } - break; - case XML_TOK_CHAR_REF: - { - int n = XmlCharRefNumber(enc, s); - if (n < 0) - return XML_ERROR_BAD_CHAR_REF; - if (characterDataHandler) { - XML_Char buf[XML_ENCODE_MAX]; - characterDataHandler(handlerArg, buf, XmlEncode(n, (ICHAR *)buf)); - } - else if (defaultHandler) - reportDefault(parser, enc, s, next); - } - break; - case XML_TOK_XML_DECL: - return XML_ERROR_MISPLACED_XML_PI; - case XML_TOK_DATA_NEWLINE: - if (characterDataHandler) { - XML_Char c = 0xA; - characterDataHandler(handlerArg, &c, 1); - } - else if (defaultHandler) - reportDefault(parser, enc, s, next); - break; - case XML_TOK_CDATA_SECT_OPEN: - { - enum XML_Error result; - if (startCdataSectionHandler) - startCdataSectionHandler(handlerArg); -#if 0 - /* Suppose you doing a transformation on a document that involves - changing only the character data. You set up a defaultHandler - and a characterDataHandler. The defaultHandler simply copies - characters through. The characterDataHandler does the transformation - and writes the characters out escaping them as necessary. This case - will fail to work if we leave out the following two lines (because & - and < inside CDATA sections will be incorrectly escaped). - - However, now we have a start/endCdataSectionHandler, so it seems - easier to let the user deal with this. */ - - else if (characterDataHandler) - characterDataHandler(handlerArg, dataBuf, 0); -#endif - else if (defaultHandler) - reportDefault(parser, enc, s, next); - result = doCdataSection(parser, enc, &next, end, nextPtr); - if (!next) { - processor = cdataSectionProcessor; - return result; - } - } - break; - case XML_TOK_TRAILING_RSQB: - if (nextPtr) { - *nextPtr = s; - return XML_ERROR_NONE; - } - if (characterDataHandler) { - if (MUST_CONVERT(enc, s)) { - ICHAR *dataPtr = (ICHAR *)dataBuf; - XmlConvert(enc, &s, end, &dataPtr, (ICHAR *)dataBufEnd); - characterDataHandler(handlerArg, dataBuf, dataPtr - (ICHAR *)dataBuf); - } - else - characterDataHandler(handlerArg, - (XML_Char *)s, - (XML_Char *)end - (XML_Char *)s); - } - else if (defaultHandler) - reportDefault(parser, enc, s, end); - if (startTagLevel == 0) { - *eventPP = end; - return XML_ERROR_NO_ELEMENTS; - } - if (tagLevel != startTagLevel) { - *eventPP = end; - return XML_ERROR_ASYNC_ENTITY; - } - return XML_ERROR_NONE; - case XML_TOK_DATA_CHARS: - if (characterDataHandler) { - if (MUST_CONVERT(enc, s)) { - for (;;) { - ICHAR *dataPtr = (ICHAR *)dataBuf; - XmlConvert(enc, &s, next, &dataPtr, (ICHAR *)dataBufEnd); - *eventEndPP = s; - characterDataHandler(handlerArg, dataBuf, dataPtr - (ICHAR *)dataBuf); - if (s == next) - break; - *eventPP = s; - } - } - else - characterDataHandler(handlerArg, - (XML_Char *)s, - (XML_Char *)next - (XML_Char *)s); - } - else if (defaultHandler) - reportDefault(parser, enc, s, next); - break; - case XML_TOK_PI: - if (!reportProcessingInstruction(parser, enc, s, next)) - return XML_ERROR_NO_MEMORY; - break; - case XML_TOK_COMMENT: - if (!reportComment(parser, enc, s, next)) - return XML_ERROR_NO_MEMORY; - break; - default: - if (defaultHandler) - reportDefault(parser, enc, s, next); - break; - } - *eventPP = s = next; - } - /* not reached */ -} - -/* If tagNamePtr is non-null, build a real list of attributes, -otherwise just check the attributes for well-formedness. */ - -static enum XML_Error storeAtts(XML_Parser parser, const ENCODING *enc, - const char *attStr, TAG_NAME *tagNamePtr, - BINDING **bindingsPtr) -{ - ELEMENT_TYPE *elementType = 0; - int nDefaultAtts = 0; - const XML_Char **appAtts; /* the attribute list to pass to the application */ - int attIndex = 0; - int i; - int n; - int nPrefixes = 0; - BINDING *binding; - const XML_Char *localPart; - - /* lookup the element type name */ - if (tagNamePtr) { - elementType = (ELEMENT_TYPE *)lookup(&dtd.elementTypes, tagNamePtr->str,0); - if (!elementType) { - tagNamePtr->str = poolCopyString(&dtd.pool, tagNamePtr->str); - if (!tagNamePtr->str) - return XML_ERROR_NO_MEMORY; - elementType = (ELEMENT_TYPE *)lookup(&dtd.elementTypes, tagNamePtr->str, sizeof(ELEMENT_TYPE)); - if (!elementType) - return XML_ERROR_NO_MEMORY; - if (ns && !setElementTypePrefix(parser, elementType)) - return XML_ERROR_NO_MEMORY; - } - nDefaultAtts = elementType->nDefaultAtts; - } - /* get the attributes from the tokenizer */ - n = XmlGetAttributes(enc, attStr, attsSize, atts); - if (n + nDefaultAtts > attsSize) { - int oldAttsSize = attsSize; - attsSize = n + nDefaultAtts + INIT_ATTS_SIZE; - atts = REALLOC((void *)atts, attsSize * sizeof(ATTRIBUTE)); - if (!atts) - return XML_ERROR_NO_MEMORY; - if (n > oldAttsSize) - XmlGetAttributes(enc, attStr, n, atts); - } - appAtts = (const XML_Char **)atts; - for (i = 0; i < n; i++) { - /* add the name and value to the attribute list */ - ATTRIBUTE_ID *attId = getAttributeId(parser, enc, atts[i].name, - atts[i].name - + XmlNameLength(enc, atts[i].name)); - if (!attId) - return XML_ERROR_NO_MEMORY; - /* detect duplicate attributes */ - if ((attId->name)[-1]) { - if (enc == encoding) - eventPtr = atts[i].name; - return XML_ERROR_DUPLICATE_ATTRIBUTE; - } - (attId->name)[-1] = 1; - appAtts[attIndex++] = attId->name; - if (!atts[i].normalized) { - enum XML_Error result; - int isCdata = 1; - - /* figure out whether declared as other than CDATA */ - if (attId->maybeTokenized) { - int j; - for (j = 0; j < nDefaultAtts; j++) { - if (attId == elementType->defaultAtts[j].id) { - isCdata = elementType->defaultAtts[j].isCdata; - break; - } - } - } - - /* normalize the attribute value */ - result = storeAttributeValue(parser, enc, isCdata, - atts[i].valuePtr, atts[i].valueEnd, - &tempPool); - if (result) - return result; - if (tagNamePtr) { - appAtts[attIndex] = poolStart(&tempPool); - poolFinish(&tempPool); - } - else - poolDiscard(&tempPool); - } - else if (tagNamePtr) { - /* the value did not need normalizing */ - appAtts[attIndex] = poolStoreString(&tempPool, enc, atts[i].valuePtr, atts[i].valueEnd); - if (appAtts[attIndex] == 0) - return XML_ERROR_NO_MEMORY; - poolFinish(&tempPool); - } - /* handle prefixed attribute names */ - if (attId->prefix && tagNamePtr) { - if (attId->xmlns) { - /* deal with namespace declarations here */ - if (!addBinding(parser, attId->prefix, attId, appAtts[attIndex], bindingsPtr)) - return XML_ERROR_NO_MEMORY; - --attIndex; - } - else { - /* deal with other prefixed names later */ - attIndex++; - nPrefixes++; - (attId->name)[-1] = 2; - } - } - else - attIndex++; - } - if (tagNamePtr) { - int j; - nSpecifiedAtts = attIndex; - if (elementType->idAtt && (elementType->idAtt->name)[-1]) { - for (i = 0; i < attIndex; i += 2) - if (appAtts[i] == elementType->idAtt->name) { - idAttIndex = i; - break; - } - } - else - idAttIndex = -1; - /* do attribute defaulting */ - for (j = 0; j < nDefaultAtts; j++) { - const DEFAULT_ATTRIBUTE *da = elementType->defaultAtts + j; - if (!(da->id->name)[-1] && da->value) { - if (da->id->prefix) { - if (da->id->xmlns) { - if (!addBinding(parser, da->id->prefix, da->id, da->value, bindingsPtr)) - return XML_ERROR_NO_MEMORY; - } - else { - (da->id->name)[-1] = 2; - nPrefixes++; - appAtts[attIndex++] = da->id->name; - appAtts[attIndex++] = da->value; - } - } - else { - (da->id->name)[-1] = 1; - appAtts[attIndex++] = da->id->name; - appAtts[attIndex++] = da->value; - } - } - } - appAtts[attIndex] = 0; - } - i = 0; - if (nPrefixes) { - /* expand prefixed attribute names */ - for (; i < attIndex; i += 2) { - if (appAtts[i][-1] == 2) { - ATTRIBUTE_ID *id; - ((XML_Char *)(appAtts[i]))[-1] = 0; - id = (ATTRIBUTE_ID *)lookup(&dtd.attributeIds, appAtts[i], 0); - if (id->prefix->binding) { - int j; - const BINDING *b = id->prefix->binding; - const XML_Char *s = appAtts[i]; - for (j = 0; j < b->uriLen; j++) { - if (!poolAppendChar(&tempPool, b->uri[j])) - return XML_ERROR_NO_MEMORY; - } - while (*s++ != ':') - ; - do { - if (!poolAppendChar(&tempPool, *s)) - return XML_ERROR_NO_MEMORY; - } while (*s++); - if (ns_triplets) { - tempPool.ptr[-1] = namespaceSeparator; - s = b->prefix->name; - do { - if (!poolAppendChar(&tempPool, *s)) - return XML_ERROR_NO_MEMORY; - } while (*s++); - } - - appAtts[i] = poolStart(&tempPool); - poolFinish(&tempPool); - } - if (!--nPrefixes) - break; - } - else - ((XML_Char *)(appAtts[i]))[-1] = 0; - } - } - /* clear the flags that say whether attributes were specified */ - for (; i < attIndex; i += 2) - ((XML_Char *)(appAtts[i]))[-1] = 0; - if (!tagNamePtr) - return XML_ERROR_NONE; - for (binding = *bindingsPtr; binding; binding = binding->nextTagBinding) - binding->attId->name[-1] = 0; - /* expand the element type name */ - if (elementType->prefix) { - binding = elementType->prefix->binding; - if (!binding) - return XML_ERROR_NONE; - localPart = tagNamePtr->str; - while (*localPart++ != XML_T(':')) - ; - } - else if (dtd.defaultPrefix.binding) { - binding = dtd.defaultPrefix.binding; - localPart = tagNamePtr->str; - } - else - return XML_ERROR_NONE; - tagNamePtr->localPart = localPart; - tagNamePtr->uriLen = binding->uriLen; - for (i = 0; localPart[i++];) - ; - n = i + binding->uriLen; - if (n > binding->uriAlloc) { - TAG *p; - XML_Char *uri = MALLOC((n + EXPAND_SPARE) * sizeof(XML_Char)); - if (!uri) - return XML_ERROR_NO_MEMORY; - binding->uriAlloc = n + EXPAND_SPARE; - memcpy(uri, binding->uri, binding->uriLen * sizeof(XML_Char)); - for (p = tagStack; p; p = p->parent) - if (p->name.str == binding->uri) - p->name.str = uri; - FREE(binding->uri); - binding->uri = uri; - } - memcpy(binding->uri + binding->uriLen, localPart, i * sizeof(XML_Char)); - tagNamePtr->str = binding->uri; - return XML_ERROR_NONE; -} - -static -int addBinding(XML_Parser parser, PREFIX *prefix, const ATTRIBUTE_ID *attId, const XML_Char *uri, BINDING **bindingsPtr) -{ - BINDING *b; - int len; - for (len = 0; uri[len]; len++) - ; - if (namespaceSeparator) - len++; - if (freeBindingList) { - b = freeBindingList; - if (len > b->uriAlloc) { - b->uri = REALLOC(b->uri, sizeof(XML_Char) * (len + EXPAND_SPARE)); - if (!b->uri) - return 0; - b->uriAlloc = len + EXPAND_SPARE; - } - freeBindingList = b->nextTagBinding; - } - else { - b = MALLOC(sizeof(BINDING)); - if (!b) - return 0; - b->uri = MALLOC(sizeof(XML_Char) * (len + EXPAND_SPARE)); - if (!b->uri) { - FREE(b); - return 0; - } - b->uriAlloc = len + EXPAND_SPARE; - } - b->uriLen = len; - memcpy(b->uri, uri, len * sizeof(XML_Char)); - if (namespaceSeparator) - b->uri[len - 1] = namespaceSeparator; - b->prefix = prefix; - b->attId = attId; - b->prevPrefixBinding = prefix->binding; - if (*uri == XML_T('\0') && prefix == &dtd.defaultPrefix) - prefix->binding = 0; - else - prefix->binding = b; - b->nextTagBinding = *bindingsPtr; - *bindingsPtr = b; - if (startNamespaceDeclHandler) - startNamespaceDeclHandler(handlerArg, prefix->name, - prefix->binding ? uri : 0); - return 1; -} - -/* The idea here is to avoid using stack for each CDATA section when -the whole file is parsed with one call. */ - -static -enum XML_Error cdataSectionProcessor(XML_Parser parser, - const char *start, - const char *end, - const char **endPtr) -{ - enum XML_Error result = doCdataSection(parser, encoding, &start, end, endPtr); - if (start) { - processor = contentProcessor; - return contentProcessor(parser, start, end, endPtr); - } - return result; -} - -/* startPtr gets set to non-null is the section is closed, and to null if -the section is not yet closed. */ - -static -enum XML_Error doCdataSection(XML_Parser parser, - const ENCODING *enc, - const char **startPtr, - const char *end, - const char **nextPtr) -{ - const char *s = *startPtr; - const char **eventPP; - const char **eventEndPP; - if (enc == encoding) { - eventPP = &eventPtr; - *eventPP = s; - eventEndPP = &eventEndPtr; - } - else { - eventPP = &(openInternalEntities->internalEventPtr); - eventEndPP = &(openInternalEntities->internalEventEndPtr); - } - *eventPP = s; - *startPtr = 0; - for (;;) { - const char *next; - int tok = XmlCdataSectionTok(enc, s, end, &next); - *eventEndPP = next; - switch (tok) { - case XML_TOK_CDATA_SECT_CLOSE: - if (endCdataSectionHandler) - endCdataSectionHandler(handlerArg); -#if 0 - /* see comment under XML_TOK_CDATA_SECT_OPEN */ - else if (characterDataHandler) - characterDataHandler(handlerArg, dataBuf, 0); -#endif - else if (defaultHandler) - reportDefault(parser, enc, s, next); - *startPtr = next; - return XML_ERROR_NONE; - case XML_TOK_DATA_NEWLINE: - if (characterDataHandler) { - XML_Char c = 0xA; - characterDataHandler(handlerArg, &c, 1); - } - else if (defaultHandler) - reportDefault(parser, enc, s, next); - break; - case XML_TOK_DATA_CHARS: - if (characterDataHandler) { - if (MUST_CONVERT(enc, s)) { - for (;;) { - ICHAR *dataPtr = (ICHAR *)dataBuf; - XmlConvert(enc, &s, next, &dataPtr, (ICHAR *)dataBufEnd); - *eventEndPP = next; - characterDataHandler(handlerArg, dataBuf, dataPtr - (ICHAR *)dataBuf); - if (s == next) - break; - *eventPP = s; - } - } - else - characterDataHandler(handlerArg, - (XML_Char *)s, - (XML_Char *)next - (XML_Char *)s); - } - else if (defaultHandler) - reportDefault(parser, enc, s, next); - break; - case XML_TOK_INVALID: - *eventPP = next; - return XML_ERROR_INVALID_TOKEN; - case XML_TOK_PARTIAL_CHAR: - if (nextPtr) { - *nextPtr = s; - return XML_ERROR_NONE; - } - return XML_ERROR_PARTIAL_CHAR; - case XML_TOK_PARTIAL: - case XML_TOK_NONE: - if (nextPtr) { - *nextPtr = s; - return XML_ERROR_NONE; - } - return XML_ERROR_UNCLOSED_CDATA_SECTION; - default: - *eventPP = next; - return XML_ERROR_UNEXPECTED_STATE; - } - *eventPP = s = next; - } - /* not reached */ -} - -#ifdef XML_DTD - -/* The idea here is to avoid using stack for each IGNORE section when -the whole file is parsed with one call. */ - -static -enum XML_Error ignoreSectionProcessor(XML_Parser parser, - const char *start, - const char *end, - const char **endPtr) -{ - enum XML_Error result = doIgnoreSection(parser, encoding, &start, end, endPtr); - if (start) { - processor = prologProcessor; - return prologProcessor(parser, start, end, endPtr); - } - return result; -} - -/* startPtr gets set to non-null is the section is closed, and to null if -the section is not yet closed. */ - -static -enum XML_Error doIgnoreSection(XML_Parser parser, - const ENCODING *enc, - const char **startPtr, - const char *end, - const char **nextPtr) -{ - const char *next; - int tok; - const char *s = *startPtr; - const char **eventPP; - const char **eventEndPP; - if (enc == encoding) { - eventPP = &eventPtr; - *eventPP = s; - eventEndPP = &eventEndPtr; - } - else { - eventPP = &(openInternalEntities->internalEventPtr); - eventEndPP = &(openInternalEntities->internalEventEndPtr); - } - *eventPP = s; - *startPtr = 0; - tok = XmlIgnoreSectionTok(enc, s, end, &next); - *eventEndPP = next; - switch (tok) { - case XML_TOK_IGNORE_SECT: - if (defaultHandler) - reportDefault(parser, enc, s, next); - *startPtr = next; - return XML_ERROR_NONE; - case XML_TOK_INVALID: - *eventPP = next; - return XML_ERROR_INVALID_TOKEN; - case XML_TOK_PARTIAL_CHAR: - if (nextPtr) { - *nextPtr = s; - return XML_ERROR_NONE; - } - return XML_ERROR_PARTIAL_CHAR; - case XML_TOK_PARTIAL: - case XML_TOK_NONE: - if (nextPtr) { - *nextPtr = s; - return XML_ERROR_NONE; - } - return XML_ERROR_SYNTAX; /* XML_ERROR_UNCLOSED_IGNORE_SECTION */ - default: - *eventPP = next; - return XML_ERROR_UNEXPECTED_STATE; - } - /* not reached */ -} - -#endif /* XML_DTD */ - -static enum XML_Error -initializeEncoding(XML_Parser parser) -{ - const char *s; -#ifdef XML_UNICODE - char encodingBuf[128]; - if (!protocolEncodingName) - s = 0; - else { - int i; - for (i = 0; protocolEncodingName[i]; i++) { - if (i == sizeof(encodingBuf) - 1 - || (protocolEncodingName[i] & ~0x7f) != 0) { - encodingBuf[0] = '\0'; - break; - } - encodingBuf[i] = (char)protocolEncodingName[i]; - } - encodingBuf[i] = '\0'; - s = encodingBuf; - } -#else - s = protocolEncodingName; -#endif - if ((ns ? XmlInitEncodingNS : XmlInitEncoding)(&initEncoding, &encoding, s)) - return XML_ERROR_NONE; - return handleUnknownEncoding(parser, protocolEncodingName); -} - -static enum XML_Error -processXmlDecl(XML_Parser parser, int isGeneralTextEntity, - const char *s, const char *next) -{ - const char *encodingName = 0; - const char *storedEncName = 0; - const ENCODING *newEncoding = 0; - const char *version = 0; - const char *versionend; - const char *storedversion = 0; - int standalone = -1; - if (!(ns - ? XmlParseXmlDeclNS - : XmlParseXmlDecl)(isGeneralTextEntity, - encoding, - s, - next, - &eventPtr, - &version, - &versionend, - &encodingName, - &newEncoding, - &standalone)) - return XML_ERROR_SYNTAX; - if (!isGeneralTextEntity && standalone == 1) { - dtd.standalone = 1; -#ifdef XML_DTD - if (paramEntityParsing == XML_PARAM_ENTITY_PARSING_UNLESS_STANDALONE) - paramEntityParsing = XML_PARAM_ENTITY_PARSING_NEVER; -#endif /* XML_DTD */ - } - if (xmlDeclHandler) { - if (encodingName) { - storedEncName = poolStoreString(&temp2Pool, - encoding, - encodingName, - encodingName - + XmlNameLength(encoding, encodingName)); - if (! storedEncName) - return XML_ERROR_NO_MEMORY; - poolFinish(&temp2Pool); - } - if (version) { - storedversion = poolStoreString(&temp2Pool, - encoding, - version, - versionend - encoding->minBytesPerChar); - if (! storedversion) - return XML_ERROR_NO_MEMORY; - } - xmlDeclHandler(handlerArg, storedversion, storedEncName, standalone); - } - else if (defaultHandler) - reportDefault(parser, encoding, s, next); - if (!protocolEncodingName) { - if (newEncoding) { - if (newEncoding->minBytesPerChar != encoding->minBytesPerChar) { - eventPtr = encodingName; - return XML_ERROR_INCORRECT_ENCODING; - } - encoding = newEncoding; - } - else if (encodingName) { - enum XML_Error result; - if (! storedEncName) { - storedEncName = poolStoreString(&temp2Pool, - encoding, - encodingName, - encodingName - + XmlNameLength(encoding, encodingName)); - if (! storedEncName) - return XML_ERROR_NO_MEMORY; - } - result = handleUnknownEncoding(parser, storedEncName); - poolClear(&tempPool); - if (result == XML_ERROR_UNKNOWN_ENCODING) - eventPtr = encodingName; - return result; - } - } - - if (storedEncName || storedversion) - poolClear(&temp2Pool); - - return XML_ERROR_NONE; -} - -static enum XML_Error -handleUnknownEncoding(XML_Parser parser, const XML_Char *encodingName) -{ - if (unknownEncodingHandler) { - XML_Encoding info; - int i; - for (i = 0; i < 256; i++) - info.map[i] = -1; - info.convert = 0; - info.data = 0; - info.release = 0; - if (unknownEncodingHandler(unknownEncodingHandlerData, encodingName, &info)) { - ENCODING *enc; - unknownEncodingMem = MALLOC(XmlSizeOfUnknownEncoding()); - if (!unknownEncodingMem) { - if (info.release) - info.release(info.data); - return XML_ERROR_NO_MEMORY; - } - enc = (ns - ? XmlInitUnknownEncodingNS - : XmlInitUnknownEncoding)(unknownEncodingMem, - info.map, - info.convert, - info.data); - if (enc) { - unknownEncodingData = info.data; - unknownEncodingRelease = info.release; - encoding = enc; - return XML_ERROR_NONE; - } - } - if (info.release) - info.release(info.data); - } - return XML_ERROR_UNKNOWN_ENCODING; -} - -static enum XML_Error -prologInitProcessor(XML_Parser parser, - const char *s, - const char *end, - const char **nextPtr) -{ - enum XML_Error result = initializeEncoding(parser); - if (result != XML_ERROR_NONE) - return result; - processor = prologProcessor; - return prologProcessor(parser, s, end, nextPtr); -} - -static enum XML_Error -prologProcessor(XML_Parser parser, - const char *s, - const char *end, - const char **nextPtr) -{ - const char *next; - int tok = XmlPrologTok(encoding, s, end, &next); - return doProlog(parser, encoding, s, end, tok, next, nextPtr); -} - -static enum XML_Error -doProlog(XML_Parser parser, - const ENCODING *enc, - const char *s, - const char *end, - int tok, - const char *next, - const char **nextPtr) -{ -#ifdef XML_DTD - static const XML_Char externalSubsetName[] = { '#' , '\0' }; -#endif /* XML_DTD */ - - const char **eventPP; - const char **eventEndPP; - enum XML_Content_Quant quant; - - if (enc == encoding) { - eventPP = &eventPtr; - eventEndPP = &eventEndPtr; - } - else { - eventPP = &(openInternalEntities->internalEventPtr); - eventEndPP = &(openInternalEntities->internalEventEndPtr); - } - for (;;) { - int role; - *eventPP = s; - *eventEndPP = next; - if (tok <= 0) { - if (nextPtr != 0 && tok != XML_TOK_INVALID) { - *nextPtr = s; - return XML_ERROR_NONE; - } - switch (tok) { - case XML_TOK_INVALID: - *eventPP = next; - return XML_ERROR_INVALID_TOKEN; - case XML_TOK_PARTIAL: - return XML_ERROR_UNCLOSED_TOKEN; - case XML_TOK_PARTIAL_CHAR: - return XML_ERROR_PARTIAL_CHAR; - case XML_TOK_NONE: -#ifdef XML_DTD - if (enc != encoding) - return XML_ERROR_NONE; - if (parentParser) { - if (XmlTokenRole(&prologState, XML_TOK_NONE, end, end, enc) - == XML_ROLE_ERROR) - return XML_ERROR_SYNTAX; - hadExternalDoctype = 0; - return XML_ERROR_NONE; - } -#endif /* XML_DTD */ - return XML_ERROR_NO_ELEMENTS; - default: - tok = -tok; - next = end; - break; - } - } - role = XmlTokenRole(&prologState, tok, s, next, enc); - switch (role) { - case XML_ROLE_XML_DECL: - { - enum XML_Error result = processXmlDecl(parser, 0, s, next); - if (result != XML_ERROR_NONE) - return result; - enc = encoding; - } - break; - case XML_ROLE_DOCTYPE_NAME: - if (startDoctypeDeclHandler) { - doctypeName = poolStoreString(&tempPool, enc, s, next); - if (! doctypeName) - return XML_ERROR_NO_MEMORY; - poolFinish(&tempPool); - doctypeSysid = 0; - doctypePubid = 0; - } - break; - case XML_ROLE_DOCTYPE_INTERNAL_SUBSET: - if (startDoctypeDeclHandler) { - startDoctypeDeclHandler(handlerArg, doctypeName, doctypeSysid, - doctypePubid, 1); - doctypeName = 0; - poolClear(&tempPool); - } - break; -#ifdef XML_DTD - case XML_ROLE_TEXT_DECL: - { - enum XML_Error result = processXmlDecl(parser, 1, s, next); - if (result != XML_ERROR_NONE) - return result; - enc = encoding; - } - break; -#endif /* XML_DTD */ - case XML_ROLE_DOCTYPE_PUBLIC_ID: - if (startDoctypeDeclHandler) { - doctypePubid = poolStoreString(&tempPool, enc, s + 1, next - 1); - if (! doctypePubid) - return XML_ERROR_NO_MEMORY; - poolFinish(&tempPool); - } -#ifdef XML_DTD - declEntity = (ENTITY *)lookup(&dtd.paramEntities, - externalSubsetName, - sizeof(ENTITY)); - if (!declEntity) - return XML_ERROR_NO_MEMORY; -#endif /* XML_DTD */ - /* fall through */ - case XML_ROLE_ENTITY_PUBLIC_ID: - if (!XmlIsPublicId(enc, s, next, eventPP)) - return XML_ERROR_SYNTAX; - if (declEntity) { - XML_Char *tem = poolStoreString(&dtd.pool, - enc, - s + enc->minBytesPerChar, - next - enc->minBytesPerChar); - if (!tem) - return XML_ERROR_NO_MEMORY; - normalizePublicId(tem); - declEntity->publicId = tem; - poolFinish(&dtd.pool); - } - break; - case XML_ROLE_DOCTYPE_CLOSE: - if (doctypeName) { - startDoctypeDeclHandler(handlerArg, doctypeName, - doctypeSysid, doctypePubid, 0); - poolClear(&tempPool); - } - if (dtd.complete && hadExternalDoctype) { - dtd.complete = 0; -#ifdef XML_DTD - if (paramEntityParsing && externalEntityRefHandler) { - ENTITY *entity = (ENTITY *)lookup(&dtd.paramEntities, - externalSubsetName, - 0); - if (!externalEntityRefHandler(externalEntityRefHandlerArg, - 0, - entity->base, - entity->systemId, - entity->publicId)) - return XML_ERROR_EXTERNAL_ENTITY_HANDLING; - } -#endif /* XML_DTD */ - if (!dtd.complete - && !dtd.standalone - && notStandaloneHandler - && !notStandaloneHandler(handlerArg)) - return XML_ERROR_NOT_STANDALONE; - } - if (endDoctypeDeclHandler) - endDoctypeDeclHandler(handlerArg); - break; - case XML_ROLE_INSTANCE_START: - processor = contentProcessor; - return contentProcessor(parser, s, end, nextPtr); - case XML_ROLE_ATTLIST_ELEMENT_NAME: - declElementType = getElementType(parser, enc, s, next); - if (!declElementType) - return XML_ERROR_NO_MEMORY; - break; - case XML_ROLE_ATTRIBUTE_NAME: - declAttributeId = getAttributeId(parser, enc, s, next); - if (!declAttributeId) - return XML_ERROR_NO_MEMORY; - declAttributeIsCdata = 0; - declAttributeType = 0; - declAttributeIsId = 0; - break; - case XML_ROLE_ATTRIBUTE_TYPE_CDATA: - declAttributeIsCdata = 1; - declAttributeType = "CDATA"; - break; - case XML_ROLE_ATTRIBUTE_TYPE_ID: - declAttributeIsId = 1; - declAttributeType = "ID"; - break; - case XML_ROLE_ATTRIBUTE_TYPE_IDREF: - declAttributeType = "IDREF"; - break; - case XML_ROLE_ATTRIBUTE_TYPE_IDREFS: - declAttributeType = "IDREFS"; - break; - case XML_ROLE_ATTRIBUTE_TYPE_ENTITY: - declAttributeType = "ENTITY"; - break; - case XML_ROLE_ATTRIBUTE_TYPE_ENTITIES: - declAttributeType = "ENTITIES"; - break; - case XML_ROLE_ATTRIBUTE_TYPE_NMTOKEN: - declAttributeType = "NMTOKEN"; - break; - case XML_ROLE_ATTRIBUTE_TYPE_NMTOKENS: - declAttributeType = "NMTOKENS"; - break; - - case XML_ROLE_ATTRIBUTE_ENUM_VALUE: - case XML_ROLE_ATTRIBUTE_NOTATION_VALUE: - if (attlistDeclHandler) - { - char *prefix; - if (declAttributeType) { - prefix = "|"; - } - else { - prefix = (role == XML_ROLE_ATTRIBUTE_NOTATION_VALUE - ? "NOTATION(" - : "("); - } - if (! poolAppendString(&tempPool, prefix)) - return XML_ERROR_NO_MEMORY; - if (! poolAppend(&tempPool, enc, s, next)) - return XML_ERROR_NO_MEMORY; - declAttributeType = tempPool.start; - } - break; - case XML_ROLE_IMPLIED_ATTRIBUTE_VALUE: - case XML_ROLE_REQUIRED_ATTRIBUTE_VALUE: - if (dtd.complete - && !defineAttribute(declElementType, declAttributeId, - declAttributeIsCdata, declAttributeIsId, 0, - parser)) - return XML_ERROR_NO_MEMORY; - if (attlistDeclHandler && declAttributeType) { - if (*declAttributeType == '(' - || (*declAttributeType == 'N' && declAttributeType[1] == 'O')) { - /* Enumerated or Notation type */ - if (! poolAppendChar(&tempPool, ')') - || ! poolAppendChar(&tempPool, '\0')) - return XML_ERROR_NO_MEMORY; - declAttributeType = tempPool.start; - poolFinish(&tempPool); - } - *eventEndPP = s; - attlistDeclHandler(handlerArg, declElementType->name, - declAttributeId->name, declAttributeType, - 0, role == XML_ROLE_REQUIRED_ATTRIBUTE_VALUE); - poolClear(&tempPool); - } - break; - case XML_ROLE_DEFAULT_ATTRIBUTE_VALUE: - case XML_ROLE_FIXED_ATTRIBUTE_VALUE: - { - const XML_Char *attVal; - enum XML_Error result - = storeAttributeValue(parser, enc, declAttributeIsCdata, - s + enc->minBytesPerChar, - next - enc->minBytesPerChar, - &dtd.pool); - if (result) - return result; - attVal = poolStart(&dtd.pool); - poolFinish(&dtd.pool); - if (dtd.complete - /* ID attributes aren't allowed to have a default */ - && !defineAttribute(declElementType, declAttributeId, declAttributeIsCdata, 0, attVal, parser)) - return XML_ERROR_NO_MEMORY; - if (attlistDeclHandler && declAttributeType) { - if (*declAttributeType == '(' - || (*declAttributeType == 'N' && declAttributeType[1] == 'O')) { - /* Enumerated or Notation type */ - if (! poolAppendChar(&tempPool, ')') - || ! poolAppendChar(&tempPool, '\0')) - return XML_ERROR_NO_MEMORY; - declAttributeType = tempPool.start; - poolFinish(&tempPool); - } - *eventEndPP = s; - attlistDeclHandler(handlerArg, declElementType->name, - declAttributeId->name, declAttributeType, - attVal, - role == XML_ROLE_FIXED_ATTRIBUTE_VALUE); - poolClear(&tempPool); - } - break; - } - case XML_ROLE_ENTITY_VALUE: - { - enum XML_Error result = storeEntityValue(parser, enc, - s + enc->minBytesPerChar, - next - enc->minBytesPerChar); - if (declEntity) { - declEntity->textPtr = poolStart(&dtd.pool); - declEntity->textLen = poolLength(&dtd.pool); - poolFinish(&dtd.pool); - if (entityDeclHandler) { - *eventEndPP = s; - entityDeclHandler(handlerArg, - declEntity->name, - declEntity->is_param, - declEntity->textPtr, - declEntity->textLen, - curBase, 0, 0, 0); - } - } - else - poolDiscard(&dtd.pool); - if (result != XML_ERROR_NONE) - return result; - } - break; - case XML_ROLE_DOCTYPE_SYSTEM_ID: - if (startDoctypeDeclHandler) { - doctypeSysid = poolStoreString(&tempPool, enc, s + 1, next - 1); - if (! doctypeSysid) - return XML_ERROR_NO_MEMORY; - poolFinish(&tempPool); - } - if (!dtd.standalone -#ifdef XML_DTD - && !paramEntityParsing -#endif /* XML_DTD */ - && notStandaloneHandler - && !notStandaloneHandler(handlerArg)) - return XML_ERROR_NOT_STANDALONE; - hadExternalDoctype = 1; -#ifndef XML_DTD - break; -#else /* XML_DTD */ - if (!declEntity) { - declEntity = (ENTITY *)lookup(&dtd.paramEntities, - externalSubsetName, - sizeof(ENTITY)); - declEntity->publicId = 0; - if (!declEntity) - return XML_ERROR_NO_MEMORY; - } - /* fall through */ -#endif /* XML_DTD */ - case XML_ROLE_ENTITY_SYSTEM_ID: - if (declEntity) { - declEntity->systemId = poolStoreString(&dtd.pool, enc, - s + enc->minBytesPerChar, - next - enc->minBytesPerChar); - if (!declEntity->systemId) - return XML_ERROR_NO_MEMORY; - declEntity->base = curBase; - poolFinish(&dtd.pool); - } - break; - case XML_ROLE_ENTITY_COMPLETE: - if (declEntity && entityDeclHandler) { - *eventEndPP = s; - entityDeclHandler(handlerArg, - declEntity->name, - 0,0,0, - declEntity->base, - declEntity->systemId, - declEntity->publicId, - 0); - } - break; - case XML_ROLE_ENTITY_NOTATION_NAME: - if (declEntity) { - declEntity->notation = poolStoreString(&dtd.pool, enc, s, next); - if (!declEntity->notation) - return XML_ERROR_NO_MEMORY; - poolFinish(&dtd.pool); - if (unparsedEntityDeclHandler) { - *eventEndPP = s; - unparsedEntityDeclHandler(handlerArg, - declEntity->name, - declEntity->base, - declEntity->systemId, - declEntity->publicId, - declEntity->notation); - } - else if (entityDeclHandler) { - *eventEndPP = s; - entityDeclHandler(handlerArg, - declEntity->name, - 0,0,0, - declEntity->base, - declEntity->systemId, - declEntity->publicId, - declEntity->notation); - } - } - break; - case XML_ROLE_GENERAL_ENTITY_NAME: - { - const XML_Char *name; - if (XmlPredefinedEntityName(enc, s, next)) { - declEntity = 0; - break; - } - name = poolStoreString(&dtd.pool, enc, s, next); - if (!name) - return XML_ERROR_NO_MEMORY; - if (dtd.complete) { - declEntity = (ENTITY *)lookup(&dtd.generalEntities, name, sizeof(ENTITY)); - if (!declEntity) - return XML_ERROR_NO_MEMORY; - if (declEntity->name != name) { - poolDiscard(&dtd.pool); - declEntity = 0; - } - else { - poolFinish(&dtd.pool); - declEntity->publicId = 0; - declEntity->is_param = 0; - } - } - else { - poolDiscard(&dtd.pool); - declEntity = 0; - } - } - break; - case XML_ROLE_PARAM_ENTITY_NAME: -#ifdef XML_DTD - if (dtd.complete) { - const XML_Char *name = poolStoreString(&dtd.pool, enc, s, next); - if (!name) - return XML_ERROR_NO_MEMORY; - declEntity = (ENTITY *)lookup(&dtd.paramEntities, - name, sizeof(ENTITY)); - if (!declEntity) - return XML_ERROR_NO_MEMORY; - if (declEntity->name != name) { - poolDiscard(&dtd.pool); - declEntity = 0; - } - else { - poolFinish(&dtd.pool); - declEntity->publicId = 0; - declEntity->is_param = 1; - } - } -#else /* not XML_DTD */ - declEntity = 0; -#endif /* not XML_DTD */ - break; - case XML_ROLE_NOTATION_NAME: - declNotationPublicId = 0; - declNotationName = 0; - if (notationDeclHandler) { - declNotationName = poolStoreString(&tempPool, enc, s, next); - if (!declNotationName) - return XML_ERROR_NO_MEMORY; - poolFinish(&tempPool); - } - break; - case XML_ROLE_NOTATION_PUBLIC_ID: - if (!XmlIsPublicId(enc, s, next, eventPP)) - return XML_ERROR_SYNTAX; - if (declNotationName) { - XML_Char *tem = poolStoreString(&tempPool, - enc, - s + enc->minBytesPerChar, - next - enc->minBytesPerChar); - if (!tem) - return XML_ERROR_NO_MEMORY; - normalizePublicId(tem); - declNotationPublicId = tem; - poolFinish(&tempPool); - } - break; - case XML_ROLE_NOTATION_SYSTEM_ID: - if (declNotationName && notationDeclHandler) { - const XML_Char *systemId - = poolStoreString(&tempPool, enc, - s + enc->minBytesPerChar, - next - enc->minBytesPerChar); - if (!systemId) - return XML_ERROR_NO_MEMORY; - *eventEndPP = s; - notationDeclHandler(handlerArg, - declNotationName, - curBase, - systemId, - declNotationPublicId); - } - poolClear(&tempPool); - break; - case XML_ROLE_NOTATION_NO_SYSTEM_ID: - if (declNotationPublicId && notationDeclHandler) { - *eventEndPP = s; - notationDeclHandler(handlerArg, - declNotationName, - curBase, - 0, - declNotationPublicId); - } - poolClear(&tempPool); - break; - case XML_ROLE_ERROR: - switch (tok) { - case XML_TOK_PARAM_ENTITY_REF: - return XML_ERROR_PARAM_ENTITY_REF; - case XML_TOK_XML_DECL: - return XML_ERROR_MISPLACED_XML_PI; - default: - return XML_ERROR_SYNTAX; - } -#ifdef XML_DTD - case XML_ROLE_IGNORE_SECT: - { - enum XML_Error result; - if (defaultHandler) - reportDefault(parser, enc, s, next); - result = doIgnoreSection(parser, enc, &next, end, nextPtr); - if (!next) { - processor = ignoreSectionProcessor; - return result; - } - } - break; -#endif /* XML_DTD */ - case XML_ROLE_GROUP_OPEN: - if (prologState.level >= groupSize) { - if (groupSize) { - groupConnector = REALLOC(groupConnector, groupSize *= 2); - if (dtd.scaffIndex) - dtd.scaffIndex = REALLOC(dtd.scaffIndex, groupSize * sizeof(int)); - } - else - groupConnector = MALLOC(groupSize = 32); - if (!groupConnector) - return XML_ERROR_NO_MEMORY; - } - groupConnector[prologState.level] = 0; - if (dtd.in_eldecl) { - int myindex = nextScaffoldPart(parser); - if (myindex < 0) - return XML_ERROR_NO_MEMORY; - dtd.scaffIndex[dtd.scaffLevel] = myindex; - dtd.scaffLevel++; - dtd.scaffold[myindex].type = XML_CTYPE_SEQ; - } - break; - case XML_ROLE_GROUP_SEQUENCE: - if (groupConnector[prologState.level] == '|') - return XML_ERROR_SYNTAX; - groupConnector[prologState.level] = ','; - break; - case XML_ROLE_GROUP_CHOICE: - if (groupConnector[prologState.level] == ',') - return XML_ERROR_SYNTAX; - if (dtd.in_eldecl - && ! groupConnector[prologState.level] - && dtd.scaffold[dtd.scaffIndex[dtd.scaffLevel - 1]].type != XML_CTYPE_MIXED - ) { - dtd.scaffold[dtd.scaffIndex[dtd.scaffLevel - 1]].type = XML_CTYPE_CHOICE; - } - groupConnector[prologState.level] = '|'; - break; - case XML_ROLE_PARAM_ENTITY_REF: -#ifdef XML_DTD - case XML_ROLE_INNER_PARAM_ENTITY_REF: - if (paramEntityParsing - && (dtd.complete || role == XML_ROLE_INNER_PARAM_ENTITY_REF)) { - const XML_Char *name; - ENTITY *entity; - name = poolStoreString(&dtd.pool, enc, - s + enc->minBytesPerChar, - next - enc->minBytesPerChar); - if (!name) - return XML_ERROR_NO_MEMORY; - entity = (ENTITY *)lookup(&dtd.paramEntities, name, 0); - poolDiscard(&dtd.pool); - if (!entity) { - /* FIXME what to do if !dtd.complete? */ - return XML_ERROR_UNDEFINED_ENTITY; - } - if (entity->open) - return XML_ERROR_RECURSIVE_ENTITY_REF; - if (entity->textPtr) { - enum XML_Error result; - result = processInternalParamEntity(parser, entity); - if (result != XML_ERROR_NONE) - return result; - break; - } - if (role == XML_ROLE_INNER_PARAM_ENTITY_REF) - return XML_ERROR_PARAM_ENTITY_REF; - if (externalEntityRefHandler) { - dtd.complete = 0; - entity->open = 1; - if (!externalEntityRefHandler(externalEntityRefHandlerArg, - 0, - entity->base, - entity->systemId, - entity->publicId)) { - entity->open = 0; - return XML_ERROR_EXTERNAL_ENTITY_HANDLING; - } - entity->open = 0; - if (dtd.complete) - break; - } - } -#endif /* XML_DTD */ - if (!dtd.standalone - && notStandaloneHandler - && !notStandaloneHandler(handlerArg)) - return XML_ERROR_NOT_STANDALONE; - dtd.complete = 0; - if (defaultHandler) - reportDefault(parser, enc, s, next); - break; - - /* Element declaration stuff */ - - case XML_ROLE_ELEMENT_NAME: - if (elementDeclHandler) { - declElementType = getElementType(parser, enc, s, next); - if (! declElementType) - return XML_ERROR_NO_MEMORY; - dtd.scaffLevel = 0; - dtd.scaffCount = 0; - dtd.in_eldecl = 1; - } - break; - - case XML_ROLE_CONTENT_ANY: - case XML_ROLE_CONTENT_EMPTY: - if (dtd.in_eldecl) { - if (elementDeclHandler) { - XML_Content * content = (XML_Content *) MALLOC(sizeof(XML_Content)); - if (! content) - return XML_ERROR_NO_MEMORY; - content->quant = XML_CQUANT_NONE; - content->name = 0; - content->numchildren = 0; - content->children = 0; - content->type = ((role == XML_ROLE_CONTENT_ANY) ? - XML_CTYPE_ANY : - XML_CTYPE_EMPTY); - *eventEndPP = s; - elementDeclHandler(handlerArg, declElementType->name, content); - } - dtd.in_eldecl = 0; - } - break; - - case XML_ROLE_CONTENT_PCDATA: - if (dtd.in_eldecl) { - dtd.scaffold[dtd.scaffIndex[dtd.scaffLevel - 1]].type = XML_CTYPE_MIXED; - } - break; - - case XML_ROLE_CONTENT_ELEMENT: - quant = XML_CQUANT_NONE; - goto elementContent; - case XML_ROLE_CONTENT_ELEMENT_OPT: - quant = XML_CQUANT_OPT; - goto elementContent; - case XML_ROLE_CONTENT_ELEMENT_REP: - quant = XML_CQUANT_REP; - goto elementContent; - case XML_ROLE_CONTENT_ELEMENT_PLUS: - quant = XML_CQUANT_PLUS; - elementContent: - if (dtd.in_eldecl) - { - ELEMENT_TYPE *el; - const char *nxt = quant == XML_CQUANT_NONE ? next : next - 1; - int myindex = nextScaffoldPart(parser); - if (myindex < 0) - return XML_ERROR_NO_MEMORY; - dtd.scaffold[myindex].type = XML_CTYPE_NAME; - dtd.scaffold[myindex].quant = quant; - el = getElementType(parser, enc, s, nxt); - if (! el) - return XML_ERROR_NO_MEMORY; - dtd.scaffold[myindex].name = el->name; - dtd.contentStringLen += nxt - s + 1; - } - break; - - case XML_ROLE_GROUP_CLOSE: - quant = XML_CQUANT_NONE; - goto closeGroup; - case XML_ROLE_GROUP_CLOSE_OPT: - quant = XML_CQUANT_OPT; - goto closeGroup; - case XML_ROLE_GROUP_CLOSE_REP: - quant = XML_CQUANT_REP; - goto closeGroup; - case XML_ROLE_GROUP_CLOSE_PLUS: - quant = XML_CQUANT_PLUS; - closeGroup: - if (dtd.in_eldecl) { - dtd.scaffLevel--; - dtd.scaffold[dtd.scaffIndex[dtd.scaffLevel]].quant = quant; - if (dtd.scaffLevel == 0) { - if (elementDeclHandler) { - XML_Content *model = build_model(parser); - if (! model) - return XML_ERROR_NO_MEMORY; - *eventEndPP = s; - elementDeclHandler(handlerArg, declElementType->name, model); - } - dtd.in_eldecl = 0; - dtd.contentStringLen = 0; - } - } - break; - /* End element declaration stuff */ - - case XML_ROLE_NONE: - switch (tok) { - case XML_TOK_PI: - if (!reportProcessingInstruction(parser, enc, s, next)) - return XML_ERROR_NO_MEMORY; - break; - case XML_TOK_COMMENT: - if (!reportComment(parser, enc, s, next)) - return XML_ERROR_NO_MEMORY; - break; - } - break; - } - if (defaultHandler) { - switch (tok) { - case XML_TOK_PI: - case XML_TOK_COMMENT: - case XML_TOK_BOM: - case XML_TOK_XML_DECL: -#ifdef XML_DTD - case XML_TOK_IGNORE_SECT: -#endif /* XML_DTD */ - case XML_TOK_PARAM_ENTITY_REF: - break; - default: -#ifdef XML_DTD - if (role != XML_ROLE_IGNORE_SECT) -#endif /* XML_DTD */ - reportDefault(parser, enc, s, next); - } - } - s = next; - tok = XmlPrologTok(enc, s, end, &next); - } - /* not reached */ -} - -static -enum XML_Error epilogProcessor(XML_Parser parser, - const char *s, - const char *end, - const char **nextPtr) -{ - processor = epilogProcessor; - eventPtr = s; - for (;;) { - const char *next; - int tok = XmlPrologTok(encoding, s, end, &next); - eventEndPtr = next; - switch (tok) { - case -XML_TOK_PROLOG_S: - if (defaultHandler) { - eventEndPtr = end; - reportDefault(parser, encoding, s, end); - } - /* fall through */ - case XML_TOK_NONE: - if (nextPtr) - *nextPtr = end; - return XML_ERROR_NONE; - case XML_TOK_PROLOG_S: - if (defaultHandler) - reportDefault(parser, encoding, s, next); - break; - case XML_TOK_PI: - if (!reportProcessingInstruction(parser, encoding, s, next)) - return XML_ERROR_NO_MEMORY; - break; - case XML_TOK_COMMENT: - if (!reportComment(parser, encoding, s, next)) - return XML_ERROR_NO_MEMORY; - break; - case XML_TOK_INVALID: - eventPtr = next; - return XML_ERROR_INVALID_TOKEN; - case XML_TOK_PARTIAL: - if (nextPtr) { - *nextPtr = s; - return XML_ERROR_NONE; - } - return XML_ERROR_UNCLOSED_TOKEN; - case XML_TOK_PARTIAL_CHAR: - if (nextPtr) { - *nextPtr = s; - return XML_ERROR_NONE; - } - return XML_ERROR_PARTIAL_CHAR; - default: - return XML_ERROR_JUNK_AFTER_DOC_ELEMENT; - } - eventPtr = s = next; - } -} - -#ifdef XML_DTD - -static enum XML_Error -processInternalParamEntity(XML_Parser parser, ENTITY *entity) -{ - const char *s, *end, *next; - int tok; - enum XML_Error result; - OPEN_INTERNAL_ENTITY openEntity; - entity->open = 1; - openEntity.next = openInternalEntities; - openInternalEntities = &openEntity; - openEntity.entity = entity; - openEntity.internalEventPtr = 0; - openEntity.internalEventEndPtr = 0; - s = (char *)entity->textPtr; - end = (char *)(entity->textPtr + entity->textLen); - tok = XmlPrologTok(internalEncoding, s, end, &next); - result = doProlog(parser, internalEncoding, s, end, tok, next, 0); - entity->open = 0; - openInternalEntities = openEntity.next; - return result; -} - -#endif /* XML_DTD */ - -static -enum XML_Error errorProcessor(XML_Parser parser, - const char *s, - const char *end, - const char **nextPtr) -{ - return errorCode; -} - -static enum XML_Error -storeAttributeValue(XML_Parser parser, const ENCODING *enc, int isCdata, - const char *ptr, const char *end, - STRING_POOL *pool) -{ - enum XML_Error result = appendAttributeValue(parser, enc, isCdata, ptr, end, pool); - if (result) - return result; - if (!isCdata && poolLength(pool) && poolLastChar(pool) == 0x20) - poolChop(pool); - if (!poolAppendChar(pool, XML_T('\0'))) - return XML_ERROR_NO_MEMORY; - return XML_ERROR_NONE; -} - -static enum XML_Error -appendAttributeValue(XML_Parser parser, const ENCODING *enc, int isCdata, - const char *ptr, const char *end, - STRING_POOL *pool) -{ - for (;;) { - const char *next; - int tok = XmlAttributeValueTok(enc, ptr, end, &next); - switch (tok) { - case XML_TOK_NONE: - return XML_ERROR_NONE; - case XML_TOK_INVALID: - if (enc == encoding) - eventPtr = next; - return XML_ERROR_INVALID_TOKEN; - case XML_TOK_PARTIAL: - if (enc == encoding) - eventPtr = ptr; - return XML_ERROR_INVALID_TOKEN; - case XML_TOK_CHAR_REF: - { - XML_Char buf[XML_ENCODE_MAX]; - int i; - int n = XmlCharRefNumber(enc, ptr); - if (n < 0) { - if (enc == encoding) - eventPtr = ptr; - return XML_ERROR_BAD_CHAR_REF; - } - if (!isCdata - && n == 0x20 /* space */ - && (poolLength(pool) == 0 || poolLastChar(pool) == 0x20)) - break; - n = XmlEncode(n, (ICHAR *)buf); - if (!n) { - if (enc == encoding) - eventPtr = ptr; - return XML_ERROR_BAD_CHAR_REF; - } - for (i = 0; i < n; i++) { - if (!poolAppendChar(pool, buf[i])) - return XML_ERROR_NO_MEMORY; - } - } - break; - case XML_TOK_DATA_CHARS: - if (!poolAppend(pool, enc, ptr, next)) - return XML_ERROR_NO_MEMORY; - break; - break; - case XML_TOK_TRAILING_CR: - next = ptr + enc->minBytesPerChar; - /* fall through */ - case XML_TOK_ATTRIBUTE_VALUE_S: - case XML_TOK_DATA_NEWLINE: - if (!isCdata && (poolLength(pool) == 0 || poolLastChar(pool) == 0x20)) - break; - if (!poolAppendChar(pool, 0x20)) - return XML_ERROR_NO_MEMORY; - break; - case XML_TOK_ENTITY_REF: - { - const XML_Char *name; - ENTITY *entity; - XML_Char ch = XmlPredefinedEntityName(enc, - ptr + enc->minBytesPerChar, - next - enc->minBytesPerChar); - if (ch) { - if (!poolAppendChar(pool, ch)) - return XML_ERROR_NO_MEMORY; - break; - } - name = poolStoreString(&temp2Pool, enc, - ptr + enc->minBytesPerChar, - next - enc->minBytesPerChar); - if (!name) - return XML_ERROR_NO_MEMORY; - entity = (ENTITY *)lookup(&dtd.generalEntities, name, 0); - poolDiscard(&temp2Pool); - if (!entity) { - if (dtd.complete) { - if (enc == encoding) - eventPtr = ptr; - return XML_ERROR_UNDEFINED_ENTITY; - } - } - else if (entity->open) { - if (enc == encoding) - eventPtr = ptr; - return XML_ERROR_RECURSIVE_ENTITY_REF; - } - else if (entity->notation) { - if (enc == encoding) - eventPtr = ptr; - return XML_ERROR_BINARY_ENTITY_REF; - } - else if (!entity->textPtr) { - if (enc == encoding) - eventPtr = ptr; - return XML_ERROR_ATTRIBUTE_EXTERNAL_ENTITY_REF; - } - else { - enum XML_Error result; - const XML_Char *textEnd = entity->textPtr + entity->textLen; - entity->open = 1; - result = appendAttributeValue(parser, internalEncoding, isCdata, (char *)entity->textPtr, (char *)textEnd, pool); - entity->open = 0; - if (result) - return result; - } - } - break; - default: - if (enc == encoding) - eventPtr = ptr; - return XML_ERROR_UNEXPECTED_STATE; - } - ptr = next; - } - /* not reached */ -} - -static -enum XML_Error storeEntityValue(XML_Parser parser, - const ENCODING *enc, - const char *entityTextPtr, - const char *entityTextEnd) -{ - STRING_POOL *pool = &(dtd.pool); - for (;;) { - const char *next; - int tok = XmlEntityValueTok(enc, entityTextPtr, entityTextEnd, &next); - switch (tok) { - case XML_TOK_PARAM_ENTITY_REF: -#ifdef XML_DTD - if (parentParser || enc != encoding) { - enum XML_Error result; - const XML_Char *name; - ENTITY *entity; - name = poolStoreString(&tempPool, enc, - entityTextPtr + enc->minBytesPerChar, - next - enc->minBytesPerChar); - if (!name) - return XML_ERROR_NO_MEMORY; - entity = (ENTITY *)lookup(&dtd.paramEntities, name, 0); - poolDiscard(&tempPool); - if (!entity) { - if (enc == encoding) - eventPtr = entityTextPtr; - return XML_ERROR_UNDEFINED_ENTITY; - } - if (entity->open) { - if (enc == encoding) - eventPtr = entityTextPtr; - return XML_ERROR_RECURSIVE_ENTITY_REF; - } - if (entity->systemId) { - if (enc == encoding) - eventPtr = entityTextPtr; - return XML_ERROR_PARAM_ENTITY_REF; - } - entity->open = 1; - result = storeEntityValue(parser, - internalEncoding, - (char *)entity->textPtr, - (char *)(entity->textPtr + entity->textLen)); - entity->open = 0; - if (result) - return result; - break; - } -#endif /* XML_DTD */ - eventPtr = entityTextPtr; - return XML_ERROR_SYNTAX; - case XML_TOK_NONE: - return XML_ERROR_NONE; - case XML_TOK_ENTITY_REF: - case XML_TOK_DATA_CHARS: - if (!poolAppend(pool, enc, entityTextPtr, next)) - return XML_ERROR_NO_MEMORY; - break; - case XML_TOK_TRAILING_CR: - next = entityTextPtr + enc->minBytesPerChar; - /* fall through */ - case XML_TOK_DATA_NEWLINE: - if (pool->end == pool->ptr && !poolGrow(pool)) - return XML_ERROR_NO_MEMORY; - *(pool->ptr)++ = 0xA; - break; - case XML_TOK_CHAR_REF: - { - XML_Char buf[XML_ENCODE_MAX]; - int i; - int n = XmlCharRefNumber(enc, entityTextPtr); - if (n < 0) { - if (enc == encoding) - eventPtr = entityTextPtr; - return XML_ERROR_BAD_CHAR_REF; - } - n = XmlEncode(n, (ICHAR *)buf); - if (!n) { - if (enc == encoding) - eventPtr = entityTextPtr; - return XML_ERROR_BAD_CHAR_REF; - } - for (i = 0; i < n; i++) { - if (pool->end == pool->ptr && !poolGrow(pool)) - return XML_ERROR_NO_MEMORY; - *(pool->ptr)++ = buf[i]; - } - } - break; - case XML_TOK_PARTIAL: - if (enc == encoding) - eventPtr = entityTextPtr; - return XML_ERROR_INVALID_TOKEN; - case XML_TOK_INVALID: - if (enc == encoding) - eventPtr = next; - return XML_ERROR_INVALID_TOKEN; - default: - if (enc == encoding) - eventPtr = entityTextPtr; - return XML_ERROR_UNEXPECTED_STATE; - } - entityTextPtr = next; - } - /* not reached */ -} - -static void -normalizeLines(XML_Char *s) -{ - XML_Char *p; - for (;; s++) { - if (*s == XML_T('\0')) - return; - if (*s == 0xD) - break; - } - p = s; - do { - if (*s == 0xD) { - *p++ = 0xA; - if (*++s == 0xA) - s++; - } - else - *p++ = *s++; - } while (*s); - *p = XML_T('\0'); -} - -static int -reportProcessingInstruction(XML_Parser parser, const ENCODING *enc, const char *start, const char *end) -{ - const XML_Char *target; - XML_Char *data; - const char *tem; - if (!processingInstructionHandler) { - if (defaultHandler) - reportDefault(parser, enc, start, end); - return 1; - } - start += enc->minBytesPerChar * 2; - tem = start + XmlNameLength(enc, start); - target = poolStoreString(&tempPool, enc, start, tem); - if (!target) - return 0; - poolFinish(&tempPool); - data = poolStoreString(&tempPool, enc, - XmlSkipS(enc, tem), - end - enc->minBytesPerChar*2); - if (!data) - return 0; - normalizeLines(data); - processingInstructionHandler(handlerArg, target, data); - poolClear(&tempPool); - return 1; -} - -static int -reportComment(XML_Parser parser, const ENCODING *enc, const char *start, const char *end) -{ - XML_Char *data; - if (!commentHandler) { - if (defaultHandler) - reportDefault(parser, enc, start, end); - return 1; - } - data = poolStoreString(&tempPool, - enc, - start + enc->minBytesPerChar * 4, - end - enc->minBytesPerChar * 3); - if (!data) - return 0; - normalizeLines(data); - commentHandler(handlerArg, data); - poolClear(&tempPool); - return 1; -} - -static void -reportDefault(XML_Parser parser, const ENCODING *enc, const char *s, const char *end) -{ - if (MUST_CONVERT(enc, s)) { - const char **eventPP; - const char **eventEndPP; - if (enc == encoding) { - eventPP = &eventPtr; - eventEndPP = &eventEndPtr; - } - else { - eventPP = &(openInternalEntities->internalEventPtr); - eventEndPP = &(openInternalEntities->internalEventEndPtr); - } - do { - ICHAR *dataPtr = (ICHAR *)dataBuf; - XmlConvert(enc, &s, end, &dataPtr, (ICHAR *)dataBufEnd); - *eventEndPP = s; - defaultHandler(handlerArg, dataBuf, dataPtr - (ICHAR *)dataBuf); - *eventPP = s; - } while (s != end); - } - else - defaultHandler(handlerArg, (XML_Char *)s, (XML_Char *)end - (XML_Char *)s); -} - - -static int -defineAttribute(ELEMENT_TYPE *type, ATTRIBUTE_ID *attId, int isCdata, - int isId, const XML_Char *value, XML_Parser parser) -{ - DEFAULT_ATTRIBUTE *att; - if (value || isId) { - /* The handling of default attributes gets messed up if we have - a default which duplicates a non-default. */ - int i; - for (i = 0; i < type->nDefaultAtts; i++) - if (attId == type->defaultAtts[i].id) - return 1; - if (isId && !type->idAtt && !attId->xmlns) - type->idAtt = attId; - } - if (type->nDefaultAtts == type->allocDefaultAtts) { - if (type->allocDefaultAtts == 0) { - type->allocDefaultAtts = 8; - type->defaultAtts = MALLOC(type->allocDefaultAtts*sizeof(DEFAULT_ATTRIBUTE)); - } - else { - type->allocDefaultAtts *= 2; - type->defaultAtts = REALLOC(type->defaultAtts, - type->allocDefaultAtts*sizeof(DEFAULT_ATTRIBUTE)); - } - if (!type->defaultAtts) - return 0; - } - att = type->defaultAtts + type->nDefaultAtts; - att->id = attId; - att->value = value; - att->isCdata = isCdata; - if (!isCdata) - attId->maybeTokenized = 1; - type->nDefaultAtts += 1; - return 1; -} - -static int setElementTypePrefix(XML_Parser parser, ELEMENT_TYPE *elementType) -{ - const XML_Char *name; - for (name = elementType->name; *name; name++) { - if (*name == XML_T(':')) { - PREFIX *prefix; - const XML_Char *s; - for (s = elementType->name; s != name; s++) { - if (!poolAppendChar(&dtd.pool, *s)) - return 0; - } - if (!poolAppendChar(&dtd.pool, XML_T('\0'))) - return 0; - prefix = (PREFIX *)lookup(&dtd.prefixes, poolStart(&dtd.pool), sizeof(PREFIX)); - if (!prefix) - return 0; - if (prefix->name == poolStart(&dtd.pool)) - poolFinish(&dtd.pool); - else - poolDiscard(&dtd.pool); - elementType->prefix = prefix; - - } - } - return 1; -} - -static ATTRIBUTE_ID * -getAttributeId(XML_Parser parser, const ENCODING *enc, const char *start, const char *end) -{ - ATTRIBUTE_ID *id; - const XML_Char *name; - if (!poolAppendChar(&dtd.pool, XML_T('\0'))) - return 0; - name = poolStoreString(&dtd.pool, enc, start, end); - if (!name) - return 0; - ++name; - id = (ATTRIBUTE_ID *)lookup(&dtd.attributeIds, name, sizeof(ATTRIBUTE_ID)); - if (!id) - return 0; - if (id->name != name) - poolDiscard(&dtd.pool); - else { - poolFinish(&dtd.pool); - if (!ns) - ; - else if (name[0] == 'x' - && name[1] == 'm' - && name[2] == 'l' - && name[3] == 'n' - && name[4] == 's' - && (name[5] == XML_T('\0') || name[5] == XML_T(':'))) { - if (name[5] == '\0') - id->prefix = &dtd.defaultPrefix; - else - id->prefix = (PREFIX *)lookup(&dtd.prefixes, name + 6, sizeof(PREFIX)); - id->xmlns = 1; - } - else { - int i; - for (i = 0; name[i]; i++) { - if (name[i] == XML_T(':')) { - int j; - for (j = 0; j < i; j++) { - if (!poolAppendChar(&dtd.pool, name[j])) - return 0; - } - if (!poolAppendChar(&dtd.pool, XML_T('\0'))) - return 0; - id->prefix = (PREFIX *)lookup(&dtd.prefixes, poolStart(&dtd.pool), sizeof(PREFIX)); - if (id->prefix->name == poolStart(&dtd.pool)) - poolFinish(&dtd.pool); - else - poolDiscard(&dtd.pool); - break; - } - } - } - } - return id; -} - -#define CONTEXT_SEP XML_T('\f') - -static -const XML_Char *getContext(XML_Parser parser) -{ - HASH_TABLE_ITER iter; - int needSep = 0; - - if (dtd.defaultPrefix.binding) { - int i; - int len; - if (!poolAppendChar(&tempPool, XML_T('='))) - return 0; - len = dtd.defaultPrefix.binding->uriLen; - if (namespaceSeparator != XML_T('\0')) - len--; - for (i = 0; i < len; i++) - if (!poolAppendChar(&tempPool, dtd.defaultPrefix.binding->uri[i])) - return 0; - needSep = 1; - } - - hashTableIterInit(&iter, &(dtd.prefixes)); - for (;;) { - int i; - int len; - const XML_Char *s; - PREFIX *prefix = (PREFIX *)hashTableIterNext(&iter); - if (!prefix) - break; - if (!prefix->binding) - continue; - if (needSep && !poolAppendChar(&tempPool, CONTEXT_SEP)) - return 0; - for (s = prefix->name; *s; s++) - if (!poolAppendChar(&tempPool, *s)) - return 0; - if (!poolAppendChar(&tempPool, XML_T('='))) - return 0; - len = prefix->binding->uriLen; - if (namespaceSeparator != XML_T('\0')) - len--; - for (i = 0; i < len; i++) - if (!poolAppendChar(&tempPool, prefix->binding->uri[i])) - return 0; - needSep = 1; - } - - - hashTableIterInit(&iter, &(dtd.generalEntities)); - for (;;) { - const XML_Char *s; - ENTITY *e = (ENTITY *)hashTableIterNext(&iter); - if (!e) - break; - if (!e->open) - continue; - if (needSep && !poolAppendChar(&tempPool, CONTEXT_SEP)) - return 0; - for (s = e->name; *s; s++) - if (!poolAppendChar(&tempPool, *s)) - return 0; - needSep = 1; - } - - if (!poolAppendChar(&tempPool, XML_T('\0'))) - return 0; - return tempPool.start; -} - -static -int setContext(XML_Parser parser, const XML_Char *context) -{ - const XML_Char *s = context; - - while (*context != XML_T('\0')) { - if (*s == CONTEXT_SEP || *s == XML_T('\0')) { - ENTITY *e; - if (!poolAppendChar(&tempPool, XML_T('\0'))) - return 0; - e = (ENTITY *)lookup(&dtd.generalEntities, poolStart(&tempPool), 0); - if (e) - e->open = 1; - if (*s != XML_T('\0')) - s++; - context = s; - poolDiscard(&tempPool); - } - else if (*s == '=') { - PREFIX *prefix; - if (poolLength(&tempPool) == 0) - prefix = &dtd.defaultPrefix; - else { - if (!poolAppendChar(&tempPool, XML_T('\0'))) - return 0; - prefix = (PREFIX *)lookup(&dtd.prefixes, poolStart(&tempPool), sizeof(PREFIX)); - if (!prefix) - return 0; - if (prefix->name == poolStart(&tempPool)) { - prefix->name = poolCopyString(&dtd.pool, prefix->name); - if (!prefix->name) - return 0; - } - poolDiscard(&tempPool); - } - for (context = s + 1; *context != CONTEXT_SEP && *context != XML_T('\0'); context++) - if (!poolAppendChar(&tempPool, *context)) - return 0; - if (!poolAppendChar(&tempPool, XML_T('\0'))) - return 0; - if (!addBinding(parser, prefix, 0, poolStart(&tempPool), &inheritedBindings)) - return 0; - poolDiscard(&tempPool); - if (*context != XML_T('\0')) - ++context; - s = context; - } - else { - if (!poolAppendChar(&tempPool, *s)) - return 0; - s++; - } - } - return 1; -} - - -static -void normalizePublicId(XML_Char *publicId) -{ - XML_Char *p = publicId; - XML_Char *s; - for (s = publicId; *s; s++) { - switch (*s) { - case 0x20: - case 0xD: - case 0xA: - if (p != publicId && p[-1] != 0x20) - *p++ = 0x20; - break; - default: - *p++ = *s; - } - } - if (p != publicId && p[-1] == 0x20) - --p; - *p = XML_T('\0'); -} - -static int dtdInit(DTD *p, XML_Parser parser) -{ - XML_Memory_Handling_Suite *ms = &((Parser *) parser)->m_mem; - poolInit(&(p->pool), ms); - hashTableInit(&(p->generalEntities), ms); - hashTableInit(&(p->elementTypes), ms); - hashTableInit(&(p->attributeIds), ms); - hashTableInit(&(p->prefixes), ms); - p->complete = 1; - p->standalone = 0; -#ifdef XML_DTD - hashTableInit(&(p->paramEntities), ms); -#endif /* XML_DTD */ - p->defaultPrefix.name = 0; - p->defaultPrefix.binding = 0; - - p->in_eldecl = 0; - p->scaffIndex = 0; - p->scaffLevel = 0; - p->scaffold = 0; - p->contentStringLen = 0; - p->scaffSize = 0; - p->scaffCount = 0; - - return 1; -} - -#ifdef XML_DTD - -static void dtdSwap(DTD *p1, DTD *p2) -{ - DTD tem; - memcpy(&tem, p1, sizeof(DTD)); - memcpy(p1, p2, sizeof(DTD)); - memcpy(p2, &tem, sizeof(DTD)); -} - -#endif /* XML_DTD */ - -static void dtdDestroy(DTD *p, XML_Parser parser) -{ - HASH_TABLE_ITER iter; - hashTableIterInit(&iter, &(p->elementTypes)); - for (;;) { - ELEMENT_TYPE *e = (ELEMENT_TYPE *)hashTableIterNext(&iter); - if (!e) - break; - if (e->allocDefaultAtts != 0) - FREE(e->defaultAtts); - } - hashTableDestroy(&(p->generalEntities)); -#ifdef XML_DTD - hashTableDestroy(&(p->paramEntities)); -#endif /* XML_DTD */ - hashTableDestroy(&(p->elementTypes)); - hashTableDestroy(&(p->attributeIds)); - hashTableDestroy(&(p->prefixes)); - poolDestroy(&(p->pool)); - if (p->scaffIndex) - FREE(p->scaffIndex); - if (p->scaffold) - FREE(p->scaffold); -} - -/* Do a deep copy of the DTD. Return 0 for out of memory; non-zero otherwise. -The new DTD has already been initialized. */ - -static int dtdCopy(DTD *newDtd, const DTD *oldDtd, XML_Parser parser) -{ - HASH_TABLE_ITER iter; - - /* Copy the prefix table. */ - - hashTableIterInit(&iter, &(oldDtd->prefixes)); - for (;;) { - const XML_Char *name; - const PREFIX *oldP = (PREFIX *)hashTableIterNext(&iter); - if (!oldP) - break; - name = poolCopyString(&(newDtd->pool), oldP->name); - if (!name) - return 0; - if (!lookup(&(newDtd->prefixes), name, sizeof(PREFIX))) - return 0; - } - - hashTableIterInit(&iter, &(oldDtd->attributeIds)); - - /* Copy the attribute id table. */ - - for (;;) { - ATTRIBUTE_ID *newA; - const XML_Char *name; - const ATTRIBUTE_ID *oldA = (ATTRIBUTE_ID *)hashTableIterNext(&iter); - - if (!oldA) - break; - /* Remember to allocate the scratch byte before the name. */ - if (!poolAppendChar(&(newDtd->pool), XML_T('\0'))) - return 0; - name = poolCopyString(&(newDtd->pool), oldA->name); - if (!name) - return 0; - ++name; - newA = (ATTRIBUTE_ID *)lookup(&(newDtd->attributeIds), name, sizeof(ATTRIBUTE_ID)); - if (!newA) - return 0; - newA->maybeTokenized = oldA->maybeTokenized; - if (oldA->prefix) { - newA->xmlns = oldA->xmlns; - if (oldA->prefix == &oldDtd->defaultPrefix) - newA->prefix = &newDtd->defaultPrefix; - else - newA->prefix = (PREFIX *)lookup(&(newDtd->prefixes), oldA->prefix->name, 0); - } - } - - /* Copy the element type table. */ - - hashTableIterInit(&iter, &(oldDtd->elementTypes)); - - for (;;) { - int i; - ELEMENT_TYPE *newE; - const XML_Char *name; - const ELEMENT_TYPE *oldE = (ELEMENT_TYPE *)hashTableIterNext(&iter); - if (!oldE) - break; - name = poolCopyString(&(newDtd->pool), oldE->name); - if (!name) - return 0; - newE = (ELEMENT_TYPE *)lookup(&(newDtd->elementTypes), name, sizeof(ELEMENT_TYPE)); - if (!newE) - return 0; - if (oldE->nDefaultAtts) { - newE->defaultAtts = (DEFAULT_ATTRIBUTE *)MALLOC(oldE->nDefaultAtts * sizeof(DEFAULT_ATTRIBUTE)); - if (!newE->defaultAtts) - return 0; - } - if (oldE->idAtt) - newE->idAtt = (ATTRIBUTE_ID *)lookup(&(newDtd->attributeIds), oldE->idAtt->name, 0); - newE->allocDefaultAtts = newE->nDefaultAtts = oldE->nDefaultAtts; - if (oldE->prefix) - newE->prefix = (PREFIX *)lookup(&(newDtd->prefixes), oldE->prefix->name, 0); - for (i = 0; i < newE->nDefaultAtts; i++) { - newE->defaultAtts[i].id = (ATTRIBUTE_ID *)lookup(&(newDtd->attributeIds), oldE->defaultAtts[i].id->name, 0); - newE->defaultAtts[i].isCdata = oldE->defaultAtts[i].isCdata; - if (oldE->defaultAtts[i].value) { - newE->defaultAtts[i].value = poolCopyString(&(newDtd->pool), oldE->defaultAtts[i].value); - if (!newE->defaultAtts[i].value) - return 0; - } - else - newE->defaultAtts[i].value = 0; - } - } - - /* Copy the entity tables. */ - if (!copyEntityTable(&(newDtd->generalEntities), - &(newDtd->pool), - &(oldDtd->generalEntities), parser)) - return 0; - -#ifdef XML_DTD - if (!copyEntityTable(&(newDtd->paramEntities), - &(newDtd->pool), - &(oldDtd->paramEntities), parser)) - return 0; -#endif /* XML_DTD */ - - newDtd->complete = oldDtd->complete; - newDtd->standalone = oldDtd->standalone; - - /* Don't want deep copying for scaffolding */ - newDtd->in_eldecl = oldDtd->in_eldecl; - newDtd->scaffold = oldDtd->scaffold; - newDtd->contentStringLen = oldDtd->contentStringLen; - newDtd->scaffSize = oldDtd->scaffSize; - newDtd->scaffLevel = oldDtd->scaffLevel; - newDtd->scaffIndex = oldDtd->scaffIndex; - - return 1; -} /* End dtdCopy */ - -static int copyEntityTable(HASH_TABLE *newTable, - STRING_POOL *newPool, - const HASH_TABLE *oldTable, - XML_Parser parser) -{ - HASH_TABLE_ITER iter; - const XML_Char *cachedOldBase = 0; - const XML_Char *cachedNewBase = 0; - - hashTableIterInit(&iter, oldTable); - - for (;;) { - ENTITY *newE; - const XML_Char *name; - const ENTITY *oldE = (ENTITY *)hashTableIterNext(&iter); - if (!oldE) - break; - name = poolCopyString(newPool, oldE->name); - if (!name) - return 0; - newE = (ENTITY *)lookup(newTable, name, sizeof(ENTITY)); - if (!newE) - return 0; - if (oldE->systemId) { - const XML_Char *tem = poolCopyString(newPool, oldE->systemId); - if (!tem) - return 0; - newE->systemId = tem; - if (oldE->base) { - if (oldE->base == cachedOldBase) - newE->base = cachedNewBase; - else { - cachedOldBase = oldE->base; - tem = poolCopyString(newPool, cachedOldBase); - if (!tem) - return 0; - cachedNewBase = newE->base = tem; - } - } - } - else { - const XML_Char *tem = poolCopyStringN(newPool, oldE->textPtr, oldE->textLen); - if (!tem) - return 0; - newE->textPtr = tem; - newE->textLen = oldE->textLen; - } - if (oldE->notation) { - const XML_Char *tem = poolCopyString(newPool, oldE->notation); - if (!tem) - return 0; - newE->notation = tem; - } - } - return 1; -} - -#define INIT_SIZE 64 - -static -int keyeq(KEY s1, KEY s2) -{ - for (; *s1 == *s2; s1++, s2++) - if (*s1 == 0) - return 1; - return 0; -} - -static -unsigned long hash(KEY s) -{ - unsigned long h = 0; - while (*s) - h = (h << 5) + h + (unsigned char)*s++; - return h; -} - -static -NAMED *lookup(HASH_TABLE *table, KEY name, size_t createSize) -{ - size_t i; - if (table->size == 0) { - size_t tsize; - - if (!createSize) - return 0; - tsize = INIT_SIZE * sizeof(NAMED *); - table->v = table->mem->malloc_fcn(tsize); - if (!table->v) - return 0; - memset(table->v, 0, tsize); - table->size = INIT_SIZE; - table->usedLim = INIT_SIZE / 2; - i = hash(name) & (table->size - 1); - } - else { - unsigned long h = hash(name); - for (i = h & (table->size - 1); - table->v[i]; - i == 0 ? i = table->size - 1 : --i) { - if (keyeq(name, table->v[i]->name)) - return table->v[i]; - } - if (!createSize) - return 0; - if (table->used == table->usedLim) { - /* check for overflow */ - size_t newSize = table->size * 2; - size_t tsize = newSize * sizeof(NAMED *); - NAMED **newV = table->mem->malloc_fcn(tsize); - if (!newV) - return 0; - memset(newV, 0, tsize); - for (i = 0; i < table->size; i++) - if (table->v[i]) { - size_t j; - for (j = hash(table->v[i]->name) & (newSize - 1); - newV[j]; - j == 0 ? j = newSize - 1 : --j) - ; - newV[j] = table->v[i]; - } - table->mem->free_fcn(table->v); - table->v = newV; - table->size = newSize; - table->usedLim = newSize/2; - for (i = h & (table->size - 1); - table->v[i]; - i == 0 ? i = table->size - 1 : --i) - ; - } - } - table->v[i] = table->mem->malloc_fcn(createSize); - if (!table->v[i]) - return 0; - memset(table->v[i], 0, createSize); - table->v[i]->name = name; - (table->used)++; - return table->v[i]; -} - -static -void hashTableDestroy(HASH_TABLE *table) -{ - size_t i; - for (i = 0; i < table->size; i++) { - NAMED *p = table->v[i]; - if (p) - table->mem->free_fcn(p); - } - if (table->v) - table->mem->free_fcn(table->v); -} - -static -void hashTableInit(HASH_TABLE *p, XML_Memory_Handling_Suite *ms) -{ - p->size = 0; - p->usedLim = 0; - p->used = 0; - p->v = 0; - p->mem = ms; -} - -static -void hashTableIterInit(HASH_TABLE_ITER *iter, const HASH_TABLE *table) -{ - iter->p = table->v; - iter->end = iter->p + table->size; -} - -static -NAMED *hashTableIterNext(HASH_TABLE_ITER *iter) -{ - while (iter->p != iter->end) { - NAMED *tem = *(iter->p)++; - if (tem) - return tem; - } - return 0; -} - - -static -void poolInit(STRING_POOL *pool, XML_Memory_Handling_Suite *ms) -{ - pool->blocks = 0; - pool->freeBlocks = 0; - pool->start = 0; - pool->ptr = 0; - pool->end = 0; - pool->mem = ms; -} - -static -void poolClear(STRING_POOL *pool) -{ - if (!pool->freeBlocks) - pool->freeBlocks = pool->blocks; - else { - BLOCK *p = pool->blocks; - while (p) { - BLOCK *tem = p->next; - p->next = pool->freeBlocks; - pool->freeBlocks = p; - p = tem; - } - } - pool->blocks = 0; - pool->start = 0; - pool->ptr = 0; - pool->end = 0; -} - -static -void poolDestroy(STRING_POOL *pool) -{ - BLOCK *p = pool->blocks; - while (p) { - BLOCK *tem = p->next; - pool->mem->free_fcn(p); - p = tem; - } - pool->blocks = 0; - p = pool->freeBlocks; - while (p) { - BLOCK *tem = p->next; - pool->mem->free_fcn(p); - p = tem; - } - pool->freeBlocks = 0; - pool->ptr = 0; - pool->start = 0; - pool->end = 0; -} - -static -XML_Char *poolAppend(STRING_POOL *pool, const ENCODING *enc, - const char *ptr, const char *end) -{ - if (!pool->ptr && !poolGrow(pool)) - return 0; - for (;;) { - XmlConvert(enc, &ptr, end, (ICHAR **)&(pool->ptr), (ICHAR *)pool->end); - if (ptr == end) - break; - if (!poolGrow(pool)) - return 0; - } - return pool->start; -} - -static const XML_Char *poolCopyString(STRING_POOL *pool, const XML_Char *s) -{ - do { - if (!poolAppendChar(pool, *s)) - return 0; - } while (*s++); - s = pool->start; - poolFinish(pool); - return s; -} - -static const XML_Char *poolCopyStringN(STRING_POOL *pool, const XML_Char *s, int n) -{ - if (!pool->ptr && !poolGrow(pool)) - return 0; - for (; n > 0; --n, s++) { - if (!poolAppendChar(pool, *s)) - return 0; - - } - s = pool->start; - poolFinish(pool); - return s; -} - -static -const XML_Char *poolAppendString(STRING_POOL *pool, const XML_Char *s) -{ - while (*s) { - if (!poolAppendChar(pool, *s)) - return 0; - s++; - } - return pool->start; -} /* End poolAppendString */ - -static -XML_Char *poolStoreString(STRING_POOL *pool, const ENCODING *enc, - const char *ptr, const char *end) -{ - if (!poolAppend(pool, enc, ptr, end)) - return 0; - if (pool->ptr == pool->end && !poolGrow(pool)) - return 0; - *(pool->ptr)++ = 0; - return pool->start; -} - -static -int poolGrow(STRING_POOL *pool) -{ - if (pool->freeBlocks) { - if (pool->start == 0) { - pool->blocks = pool->freeBlocks; - pool->freeBlocks = pool->freeBlocks->next; - pool->blocks->next = 0; - pool->start = pool->blocks->s; - pool->end = pool->start + pool->blocks->size; - pool->ptr = pool->start; - return 1; - } - if (pool->end - pool->start < pool->freeBlocks->size) { - BLOCK *tem = pool->freeBlocks->next; - pool->freeBlocks->next = pool->blocks; - pool->blocks = pool->freeBlocks; - pool->freeBlocks = tem; - memcpy(pool->blocks->s, pool->start, (pool->end - pool->start) * sizeof(XML_Char)); - pool->ptr = pool->blocks->s + (pool->ptr - pool->start); - pool->start = pool->blocks->s; - pool->end = pool->start + pool->blocks->size; - return 1; - } - } - if (pool->blocks && pool->start == pool->blocks->s) { - int blockSize = (pool->end - pool->start)*2; - pool->blocks = pool->mem->realloc_fcn(pool->blocks, offsetof(BLOCK, s) + blockSize * sizeof(XML_Char)); - if (!pool->blocks) - return 0; - pool->blocks->size = blockSize; - pool->ptr = pool->blocks->s + (pool->ptr - pool->start); - pool->start = pool->blocks->s; - pool->end = pool->start + blockSize; - } - else { - BLOCK *tem; - int blockSize = pool->end - pool->start; - if (blockSize < INIT_BLOCK_SIZE) - blockSize = INIT_BLOCK_SIZE; - else - blockSize *= 2; - tem = pool->mem->malloc_fcn(offsetof(BLOCK, s) + blockSize * sizeof(XML_Char)); - if (!tem) - return 0; - tem->size = blockSize; - tem->next = pool->blocks; - pool->blocks = tem; - if (pool->ptr != pool->start) - memcpy(tem->s, pool->start, (pool->ptr - pool->start) * sizeof(XML_Char)); - pool->ptr = tem->s + (pool->ptr - pool->start); - pool->start = tem->s; - pool->end = tem->s + blockSize; - } - return 1; -} - -static int -nextScaffoldPart(XML_Parser parser) -{ - CONTENT_SCAFFOLD * me; - int next; - - if (! dtd.scaffIndex) { - dtd.scaffIndex = MALLOC(groupSize * sizeof(int)); - if (! dtd.scaffIndex) - return -1; - dtd.scaffIndex[0] = 0; - } - - if (dtd.scaffCount >= dtd.scaffSize) { - if (dtd.scaffold) { - dtd.scaffSize *= 2; - dtd.scaffold = (CONTENT_SCAFFOLD *) REALLOC(dtd.scaffold, - dtd.scaffSize * sizeof(CONTENT_SCAFFOLD)); - } - else { - dtd.scaffSize = 32; - dtd.scaffold = (CONTENT_SCAFFOLD *) MALLOC(dtd.scaffSize * sizeof(CONTENT_SCAFFOLD)); - } - if (! dtd.scaffold) - return -1; - } - next = dtd.scaffCount++; - me = &dtd.scaffold[next]; - if (dtd.scaffLevel) { - CONTENT_SCAFFOLD *parent = &dtd.scaffold[dtd.scaffIndex[dtd.scaffLevel - 1]]; - if (parent->lastchild) { - dtd.scaffold[parent->lastchild].nextsib = next; - } - if (! parent->childcnt) - parent->firstchild = next; - parent->lastchild = next; - parent->childcnt++; - } - me->firstchild = me->lastchild = me->childcnt = me->nextsib = 0; - return next; -} /* End nextScaffoldPart */ - -static void -build_node (XML_Parser parser, - int src_node, - XML_Content *dest, - XML_Content **contpos, - char **strpos) -{ - dest->type = dtd.scaffold[src_node].type; - dest->quant = dtd.scaffold[src_node].quant; - if (dest->type == XML_CTYPE_NAME) { - const char *src; - dest->name = *strpos; - src = dtd.scaffold[src_node].name; - for (;;) { - *(*strpos)++ = *src; - if (! *src) - break; - src++; - } - dest->numchildren = 0; - dest->children = 0; - } - else { - unsigned int i; - int cn; - dest->numchildren = dtd.scaffold[src_node].childcnt; - dest->children = *contpos; - *contpos += dest->numchildren; - for (i = 0, cn = dtd.scaffold[src_node].firstchild; - i < dest->numchildren; - i++, cn = dtd.scaffold[cn].nextsib) { - build_node(parser, cn, &(dest->children[i]), contpos, strpos); - } - dest->name = 0; - } -} /* End build_node */ - -static XML_Content * -build_model (XML_Parser parser) -{ - XML_Content *ret; - XML_Content *cpos; - char * str; - int allocsize = dtd.scaffCount * sizeof(XML_Content) + dtd.contentStringLen; - - ret = MALLOC(allocsize); - if (! ret) - return 0; - - str = (char *) (&ret[dtd.scaffCount]); - cpos = &ret[1]; - - build_node(parser, 0, ret, &cpos, &str); - return ret; -} /* End build_model */ - -static ELEMENT_TYPE * -getElementType(XML_Parser parser, - const ENCODING *enc, - const char *ptr, - const char *end) -{ - const XML_Char *name = poolStoreString(&dtd.pool, enc, ptr, end); - ELEMENT_TYPE *ret; - - if (! name) - return 0; - ret = (ELEMENT_TYPE *) lookup(&dtd.elementTypes, name, sizeof(ELEMENT_TYPE)); - if (! ret) - return 0; - if (ret->name != name) - poolDiscard(&dtd.pool); - else { - poolFinish(&dtd.pool); - if (!setElementTypePrefix(parser, ret)) - return 0; - } - return ret; -} /* End getElementType */ diff --git a/libs/apr-util/xml/expat/lib/xmlrole.c b/libs/apr-util/xml/expat/lib/xmlrole.c deleted file mode 100644 index ac130392ef2..00000000000 --- a/libs/apr-util/xml/expat/lib/xmlrole.c +++ /dev/null @@ -1,1275 +0,0 @@ -/* -Copyright (c) 1998, 1999 Thai Open Source Software Center Ltd -See the file COPYING for copying permission. -*/ - -static char RCSId[] - = "$Header: /home/cvs/apr-util/xml/expat/lib/xmlrole.c,v 1.1 2001/02/28 14:41:26 gstein Exp $"; - -#ifdef COMPILED_FROM_DSP -# include "winconfig.h" -#else -# include -#endif /* ndef COMPILED_FROM_DSP */ - -#include "xmlrole.h" -#include "ascii.h" - -/* Doesn't check: - - that ,| are not mixed in a model group - content of literals - -*/ - -static const char KW_ANY[] = { ASCII_A, ASCII_N, ASCII_Y, '\0' }; -static const char KW_ATTLIST[] = { ASCII_A, ASCII_T, ASCII_T, ASCII_L, ASCII_I, ASCII_S, ASCII_T, '\0' }; -static const char KW_CDATA[] = { ASCII_C, ASCII_D, ASCII_A, ASCII_T, ASCII_A, '\0' }; -static const char KW_DOCTYPE[] = { ASCII_D, ASCII_O, ASCII_C, ASCII_T, ASCII_Y, ASCII_P, ASCII_E, '\0' }; -static const char KW_ELEMENT[] = { ASCII_E, ASCII_L, ASCII_E, ASCII_M, ASCII_E, ASCII_N, ASCII_T, '\0' }; -static const char KW_EMPTY[] = { ASCII_E, ASCII_M, ASCII_P, ASCII_T, ASCII_Y, '\0' }; -static const char KW_ENTITIES[] = { ASCII_E, ASCII_N, ASCII_T, ASCII_I, ASCII_T, ASCII_I, ASCII_E, ASCII_S, '\0' }; -static const char KW_ENTITY[] = { ASCII_E, ASCII_N, ASCII_T, ASCII_I, ASCII_T, ASCII_Y, '\0' }; -static const char KW_FIXED[] = { ASCII_F, ASCII_I, ASCII_X, ASCII_E, ASCII_D, '\0' }; -static const char KW_ID[] = { ASCII_I, ASCII_D, '\0' }; -static const char KW_IDREF[] = { ASCII_I, ASCII_D, ASCII_R, ASCII_E, ASCII_F, '\0' }; -static const char KW_IDREFS[] = { ASCII_I, ASCII_D, ASCII_R, ASCII_E, ASCII_F, ASCII_S, '\0' }; -static const char KW_IGNORE[] = { ASCII_I, ASCII_G, ASCII_N, ASCII_O, ASCII_R, ASCII_E, '\0' }; -static const char KW_IMPLIED[] = { ASCII_I, ASCII_M, ASCII_P, ASCII_L, ASCII_I, ASCII_E, ASCII_D, '\0' }; -static const char KW_INCLUDE[] = { ASCII_I, ASCII_N, ASCII_C, ASCII_L, ASCII_U, ASCII_D, ASCII_E, '\0' }; -static const char KW_NDATA[] = { ASCII_N, ASCII_D, ASCII_A, ASCII_T, ASCII_A, '\0' }; -static const char KW_NMTOKEN[] = { ASCII_N, ASCII_M, ASCII_T, ASCII_O, ASCII_K, ASCII_E, ASCII_N, '\0' }; -static const char KW_NMTOKENS[] = { ASCII_N, ASCII_M, ASCII_T, ASCII_O, ASCII_K, ASCII_E, ASCII_N, ASCII_S, '\0' }; -static const char KW_NOTATION[] = { ASCII_N, ASCII_O, ASCII_T, ASCII_A, ASCII_T, ASCII_I, ASCII_O, ASCII_N, '\0' }; -static const char KW_PCDATA[] = { ASCII_P, ASCII_C, ASCII_D, ASCII_A, ASCII_T, ASCII_A, '\0' }; -static const char KW_PUBLIC[] = { ASCII_P, ASCII_U, ASCII_B, ASCII_L, ASCII_I, ASCII_C, '\0' }; -static const char KW_REQUIRED[] = { ASCII_R, ASCII_E, ASCII_Q, ASCII_U, ASCII_I, ASCII_R, ASCII_E, ASCII_D, '\0' }; -static const char KW_SYSTEM[] = { ASCII_S, ASCII_Y, ASCII_S, ASCII_T, ASCII_E, ASCII_M, '\0' }; - -#ifndef MIN_BYTES_PER_CHAR -#define MIN_BYTES_PER_CHAR(enc) ((enc)->minBytesPerChar) -#endif - -#ifdef XML_DTD -#define setTopLevel(state) \ - ((state)->handler = ((state)->documentEntity \ - ? internalSubset \ - : externalSubset1)) -#else /* not XML_DTD */ -#define setTopLevel(state) ((state)->handler = internalSubset) -#endif /* not XML_DTD */ - -typedef int PROLOG_HANDLER(PROLOG_STATE *state, - int tok, - const char *ptr, - const char *end, - const ENCODING *enc); - -static PROLOG_HANDLER - prolog0, prolog1, prolog2, - doctype0, doctype1, doctype2, doctype3, doctype4, doctype5, - internalSubset, - entity0, entity1, entity2, entity3, entity4, entity5, entity6, - entity7, entity8, entity9, - notation0, notation1, notation2, notation3, notation4, - attlist0, attlist1, attlist2, attlist3, attlist4, attlist5, attlist6, - attlist7, attlist8, attlist9, - element0, element1, element2, element3, element4, element5, element6, - element7, -#ifdef XML_DTD - externalSubset0, externalSubset1, - condSect0, condSect1, condSect2, -#endif /* XML_DTD */ - declClose, - error; - -static -int common(PROLOG_STATE *state, int tok); - -static -int prolog0(PROLOG_STATE *state, - int tok, - const char *ptr, - const char *end, - const ENCODING *enc) -{ - switch (tok) { - case XML_TOK_PROLOG_S: - state->handler = prolog1; - return XML_ROLE_NONE; - case XML_TOK_XML_DECL: - state->handler = prolog1; - return XML_ROLE_XML_DECL; - case XML_TOK_PI: - state->handler = prolog1; - return XML_ROLE_NONE; - case XML_TOK_COMMENT: - state->handler = prolog1; - case XML_TOK_BOM: - return XML_ROLE_NONE; - case XML_TOK_DECL_OPEN: - if (!XmlNameMatchesAscii(enc, - ptr + 2 * MIN_BYTES_PER_CHAR(enc), - end, - KW_DOCTYPE)) - break; - state->handler = doctype0; - return XML_ROLE_NONE; - case XML_TOK_INSTANCE_START: - state->handler = error; - return XML_ROLE_INSTANCE_START; - } - return common(state, tok); -} - -static -int prolog1(PROLOG_STATE *state, - int tok, - const char *ptr, - const char *end, - const ENCODING *enc) -{ - switch (tok) { - case XML_TOK_PROLOG_S: - return XML_ROLE_NONE; - case XML_TOK_PI: - case XML_TOK_COMMENT: - case XML_TOK_BOM: - return XML_ROLE_NONE; - case XML_TOK_DECL_OPEN: - if (!XmlNameMatchesAscii(enc, - ptr + 2 * MIN_BYTES_PER_CHAR(enc), - end, - KW_DOCTYPE)) - break; - state->handler = doctype0; - return XML_ROLE_NONE; - case XML_TOK_INSTANCE_START: - state->handler = error; - return XML_ROLE_INSTANCE_START; - } - return common(state, tok); -} - -static -int prolog2(PROLOG_STATE *state, - int tok, - const char *ptr, - const char *end, - const ENCODING *enc) -{ - switch (tok) { - case XML_TOK_PROLOG_S: - return XML_ROLE_NONE; - case XML_TOK_PI: - case XML_TOK_COMMENT: - return XML_ROLE_NONE; - case XML_TOK_INSTANCE_START: - state->handler = error; - return XML_ROLE_INSTANCE_START; - } - return common(state, tok); -} - -static -int doctype0(PROLOG_STATE *state, - int tok, - const char *ptr, - const char *end, - const ENCODING *enc) -{ - switch (tok) { - case XML_TOK_PROLOG_S: - return XML_ROLE_NONE; - case XML_TOK_NAME: - case XML_TOK_PREFIXED_NAME: - state->handler = doctype1; - return XML_ROLE_DOCTYPE_NAME; - } - return common(state, tok); -} - -static -int doctype1(PROLOG_STATE *state, - int tok, - const char *ptr, - const char *end, - const ENCODING *enc) -{ - switch (tok) { - case XML_TOK_PROLOG_S: - return XML_ROLE_NONE; - case XML_TOK_OPEN_BRACKET: - state->handler = internalSubset; - return XML_ROLE_DOCTYPE_INTERNAL_SUBSET; - case XML_TOK_DECL_CLOSE: - state->handler = prolog2; - return XML_ROLE_DOCTYPE_CLOSE; - case XML_TOK_NAME: - if (XmlNameMatchesAscii(enc, ptr, end, KW_SYSTEM)) { - state->handler = doctype3; - return XML_ROLE_NONE; - } - if (XmlNameMatchesAscii(enc, ptr, end, KW_PUBLIC)) { - state->handler = doctype2; - return XML_ROLE_NONE; - } - break; - } - return common(state, tok); -} - -static -int doctype2(PROLOG_STATE *state, - int tok, - const char *ptr, - const char *end, - const ENCODING *enc) -{ - switch (tok) { - case XML_TOK_PROLOG_S: - return XML_ROLE_NONE; - case XML_TOK_LITERAL: - state->handler = doctype3; - return XML_ROLE_DOCTYPE_PUBLIC_ID; - } - return common(state, tok); -} - -static -int doctype3(PROLOG_STATE *state, - int tok, - const char *ptr, - const char *end, - const ENCODING *enc) -{ - switch (tok) { - case XML_TOK_PROLOG_S: - return XML_ROLE_NONE; - case XML_TOK_LITERAL: - state->handler = doctype4; - return XML_ROLE_DOCTYPE_SYSTEM_ID; - } - return common(state, tok); -} - -static -int doctype4(PROLOG_STATE *state, - int tok, - const char *ptr, - const char *end, - const ENCODING *enc) -{ - switch (tok) { - case XML_TOK_PROLOG_S: - return XML_ROLE_NONE; - case XML_TOK_OPEN_BRACKET: - state->handler = internalSubset; - return XML_ROLE_DOCTYPE_INTERNAL_SUBSET; - case XML_TOK_DECL_CLOSE: - state->handler = prolog2; - return XML_ROLE_DOCTYPE_CLOSE; - } - return common(state, tok); -} - -static -int doctype5(PROLOG_STATE *state, - int tok, - const char *ptr, - const char *end, - const ENCODING *enc) -{ - switch (tok) { - case XML_TOK_PROLOG_S: - return XML_ROLE_NONE; - case XML_TOK_DECL_CLOSE: - state->handler = prolog2; - return XML_ROLE_DOCTYPE_CLOSE; - } - return common(state, tok); -} - -static -int internalSubset(PROLOG_STATE *state, - int tok, - const char *ptr, - const char *end, - const ENCODING *enc) -{ - switch (tok) { - case XML_TOK_PROLOG_S: - return XML_ROLE_NONE; - case XML_TOK_DECL_OPEN: - if (XmlNameMatchesAscii(enc, - ptr + 2 * MIN_BYTES_PER_CHAR(enc), - end, - KW_ENTITY)) { - state->handler = entity0; - return XML_ROLE_NONE; - } - if (XmlNameMatchesAscii(enc, - ptr + 2 * MIN_BYTES_PER_CHAR(enc), - end, - KW_ATTLIST)) { - state->handler = attlist0; - return XML_ROLE_NONE; - } - if (XmlNameMatchesAscii(enc, - ptr + 2 * MIN_BYTES_PER_CHAR(enc), - end, - KW_ELEMENT)) { - state->handler = element0; - return XML_ROLE_NONE; - } - if (XmlNameMatchesAscii(enc, - ptr + 2 * MIN_BYTES_PER_CHAR(enc), - end, - KW_NOTATION)) { - state->handler = notation0; - return XML_ROLE_NONE; - } - break; - case XML_TOK_PI: - case XML_TOK_COMMENT: - return XML_ROLE_NONE; - case XML_TOK_PARAM_ENTITY_REF: - return XML_ROLE_PARAM_ENTITY_REF; - case XML_TOK_CLOSE_BRACKET: - state->handler = doctype5; - return XML_ROLE_NONE; - } - return common(state, tok); -} - -#ifdef XML_DTD - -static -int externalSubset0(PROLOG_STATE *state, - int tok, - const char *ptr, - const char *end, - const ENCODING *enc) -{ - state->handler = externalSubset1; - if (tok == XML_TOK_XML_DECL) - return XML_ROLE_TEXT_DECL; - return externalSubset1(state, tok, ptr, end, enc); -} - -static -int externalSubset1(PROLOG_STATE *state, - int tok, - const char *ptr, - const char *end, - const ENCODING *enc) -{ - switch (tok) { - case XML_TOK_COND_SECT_OPEN: - state->handler = condSect0; - return XML_ROLE_NONE; - case XML_TOK_COND_SECT_CLOSE: - if (state->includeLevel == 0) - break; - state->includeLevel -= 1; - return XML_ROLE_NONE; - case XML_TOK_PROLOG_S: - return XML_ROLE_NONE; - case XML_TOK_CLOSE_BRACKET: - break; - case XML_TOK_NONE: - if (state->includeLevel) - break; - return XML_ROLE_NONE; - default: - return internalSubset(state, tok, ptr, end, enc); - } - return common(state, tok); -} - -#endif /* XML_DTD */ - -static -int entity0(PROLOG_STATE *state, - int tok, - const char *ptr, - const char *end, - const ENCODING *enc) -{ - switch (tok) { - case XML_TOK_PROLOG_S: - return XML_ROLE_NONE; - case XML_TOK_PERCENT: - state->handler = entity1; - return XML_ROLE_NONE; - case XML_TOK_NAME: - state->handler = entity2; - return XML_ROLE_GENERAL_ENTITY_NAME; - } - return common(state, tok); -} - -static -int entity1(PROLOG_STATE *state, - int tok, - const char *ptr, - const char *end, - const ENCODING *enc) -{ - switch (tok) { - case XML_TOK_PROLOG_S: - return XML_ROLE_NONE; - case XML_TOK_NAME: - state->handler = entity7; - return XML_ROLE_PARAM_ENTITY_NAME; - } - return common(state, tok); -} - -static -int entity2(PROLOG_STATE *state, - int tok, - const char *ptr, - const char *end, - const ENCODING *enc) -{ - switch (tok) { - case XML_TOK_PROLOG_S: - return XML_ROLE_NONE; - case XML_TOK_NAME: - if (XmlNameMatchesAscii(enc, ptr, end, KW_SYSTEM)) { - state->handler = entity4; - return XML_ROLE_NONE; - } - if (XmlNameMatchesAscii(enc, ptr, end, KW_PUBLIC)) { - state->handler = entity3; - return XML_ROLE_NONE; - } - break; - case XML_TOK_LITERAL: - state->handler = declClose; - return XML_ROLE_ENTITY_VALUE; - } - return common(state, tok); -} - -static -int entity3(PROLOG_STATE *state, - int tok, - const char *ptr, - const char *end, - const ENCODING *enc) -{ - switch (tok) { - case XML_TOK_PROLOG_S: - return XML_ROLE_NONE; - case XML_TOK_LITERAL: - state->handler = entity4; - return XML_ROLE_ENTITY_PUBLIC_ID; - } - return common(state, tok); -} - - -static -int entity4(PROLOG_STATE *state, - int tok, - const char *ptr, - const char *end, - const ENCODING *enc) -{ - switch (tok) { - case XML_TOK_PROLOG_S: - return XML_ROLE_NONE; - case XML_TOK_LITERAL: - state->handler = entity5; - return XML_ROLE_ENTITY_SYSTEM_ID; - } - return common(state, tok); -} - -static -int entity5(PROLOG_STATE *state, - int tok, - const char *ptr, - const char *end, - const ENCODING *enc) -{ - switch (tok) { - case XML_TOK_PROLOG_S: - return XML_ROLE_NONE; - case XML_TOK_DECL_CLOSE: - setTopLevel(state); - return XML_ROLE_ENTITY_COMPLETE; - case XML_TOK_NAME: - if (XmlNameMatchesAscii(enc, ptr, end, KW_NDATA)) { - state->handler = entity6; - return XML_ROLE_NONE; - } - break; - } - return common(state, tok); -} - -static -int entity6(PROLOG_STATE *state, - int tok, - const char *ptr, - const char *end, - const ENCODING *enc) -{ - switch (tok) { - case XML_TOK_PROLOG_S: - return XML_ROLE_NONE; - case XML_TOK_NAME: - state->handler = declClose; - return XML_ROLE_ENTITY_NOTATION_NAME; - } - return common(state, tok); -} - -static -int entity7(PROLOG_STATE *state, - int tok, - const char *ptr, - const char *end, - const ENCODING *enc) -{ - switch (tok) { - case XML_TOK_PROLOG_S: - return XML_ROLE_NONE; - case XML_TOK_NAME: - if (XmlNameMatchesAscii(enc, ptr, end, KW_SYSTEM)) { - state->handler = entity9; - return XML_ROLE_NONE; - } - if (XmlNameMatchesAscii(enc, ptr, end, KW_PUBLIC)) { - state->handler = entity8; - return XML_ROLE_NONE; - } - break; - case XML_TOK_LITERAL: - state->handler = declClose; - return XML_ROLE_ENTITY_VALUE; - } - return common(state, tok); -} - -static -int entity8(PROLOG_STATE *state, - int tok, - const char *ptr, - const char *end, - const ENCODING *enc) -{ - switch (tok) { - case XML_TOK_PROLOG_S: - return XML_ROLE_NONE; - case XML_TOK_LITERAL: - state->handler = entity9; - return XML_ROLE_ENTITY_PUBLIC_ID; - } - return common(state, tok); -} - -static -int entity9(PROLOG_STATE *state, - int tok, - const char *ptr, - const char *end, - const ENCODING *enc) -{ - switch (tok) { - case XML_TOK_PROLOG_S: - return XML_ROLE_NONE; - case XML_TOK_LITERAL: - state->handler = declClose; - return XML_ROLE_ENTITY_SYSTEM_ID; - } - return common(state, tok); -} - -static -int notation0(PROLOG_STATE *state, - int tok, - const char *ptr, - const char *end, - const ENCODING *enc) -{ - switch (tok) { - case XML_TOK_PROLOG_S: - return XML_ROLE_NONE; - case XML_TOK_NAME: - state->handler = notation1; - return XML_ROLE_NOTATION_NAME; - } - return common(state, tok); -} - -static -int notation1(PROLOG_STATE *state, - int tok, - const char *ptr, - const char *end, - const ENCODING *enc) -{ - switch (tok) { - case XML_TOK_PROLOG_S: - return XML_ROLE_NONE; - case XML_TOK_NAME: - if (XmlNameMatchesAscii(enc, ptr, end, KW_SYSTEM)) { - state->handler = notation3; - return XML_ROLE_NONE; - } - if (XmlNameMatchesAscii(enc, ptr, end, KW_PUBLIC)) { - state->handler = notation2; - return XML_ROLE_NONE; - } - break; - } - return common(state, tok); -} - -static -int notation2(PROLOG_STATE *state, - int tok, - const char *ptr, - const char *end, - const ENCODING *enc) -{ - switch (tok) { - case XML_TOK_PROLOG_S: - return XML_ROLE_NONE; - case XML_TOK_LITERAL: - state->handler = notation4; - return XML_ROLE_NOTATION_PUBLIC_ID; - } - return common(state, tok); -} - -static -int notation3(PROLOG_STATE *state, - int tok, - const char *ptr, - const char *end, - const ENCODING *enc) -{ - switch (tok) { - case XML_TOK_PROLOG_S: - return XML_ROLE_NONE; - case XML_TOK_LITERAL: - state->handler = declClose; - return XML_ROLE_NOTATION_SYSTEM_ID; - } - return common(state, tok); -} - -static -int notation4(PROLOG_STATE *state, - int tok, - const char *ptr, - const char *end, - const ENCODING *enc) -{ - switch (tok) { - case XML_TOK_PROLOG_S: - return XML_ROLE_NONE; - case XML_TOK_LITERAL: - state->handler = declClose; - return XML_ROLE_NOTATION_SYSTEM_ID; - case XML_TOK_DECL_CLOSE: - setTopLevel(state); - return XML_ROLE_NOTATION_NO_SYSTEM_ID; - } - return common(state, tok); -} - -static -int attlist0(PROLOG_STATE *state, - int tok, - const char *ptr, - const char *end, - const ENCODING *enc) -{ - switch (tok) { - case XML_TOK_PROLOG_S: - return XML_ROLE_NONE; - case XML_TOK_NAME: - case XML_TOK_PREFIXED_NAME: - state->handler = attlist1; - return XML_ROLE_ATTLIST_ELEMENT_NAME; - } - return common(state, tok); -} - -static -int attlist1(PROLOG_STATE *state, - int tok, - const char *ptr, - const char *end, - const ENCODING *enc) -{ - switch (tok) { - case XML_TOK_PROLOG_S: - return XML_ROLE_NONE; - case XML_TOK_DECL_CLOSE: - setTopLevel(state); - return XML_ROLE_NONE; - case XML_TOK_NAME: - case XML_TOK_PREFIXED_NAME: - state->handler = attlist2; - return XML_ROLE_ATTRIBUTE_NAME; - } - return common(state, tok); -} - -static -int attlist2(PROLOG_STATE *state, - int tok, - const char *ptr, - const char *end, - const ENCODING *enc) -{ - switch (tok) { - case XML_TOK_PROLOG_S: - return XML_ROLE_NONE; - case XML_TOK_NAME: - { - static const char *types[] = { - KW_CDATA, - KW_ID, - KW_IDREF, - KW_IDREFS, - KW_ENTITY, - KW_ENTITIES, - KW_NMTOKEN, - KW_NMTOKENS, - }; - int i; - for (i = 0; i < (int)(sizeof(types)/sizeof(types[0])); i++) - if (XmlNameMatchesAscii(enc, ptr, end, types[i])) { - state->handler = attlist8; - return XML_ROLE_ATTRIBUTE_TYPE_CDATA + i; - } - } - if (XmlNameMatchesAscii(enc, ptr, end, KW_NOTATION)) { - state->handler = attlist5; - return XML_ROLE_NONE; - } - break; - case XML_TOK_OPEN_PAREN: - state->handler = attlist3; - return XML_ROLE_NONE; - } - return common(state, tok); -} - -static -int attlist3(PROLOG_STATE *state, - int tok, - const char *ptr, - const char *end, - const ENCODING *enc) -{ - switch (tok) { - case XML_TOK_PROLOG_S: - return XML_ROLE_NONE; - case XML_TOK_NMTOKEN: - case XML_TOK_NAME: - case XML_TOK_PREFIXED_NAME: - state->handler = attlist4; - return XML_ROLE_ATTRIBUTE_ENUM_VALUE; - } - return common(state, tok); -} - -static -int attlist4(PROLOG_STATE *state, - int tok, - const char *ptr, - const char *end, - const ENCODING *enc) -{ - switch (tok) { - case XML_TOK_PROLOG_S: - return XML_ROLE_NONE; - case XML_TOK_CLOSE_PAREN: - state->handler = attlist8; - return XML_ROLE_NONE; - case XML_TOK_OR: - state->handler = attlist3; - return XML_ROLE_NONE; - } - return common(state, tok); -} - -static -int attlist5(PROLOG_STATE *state, - int tok, - const char *ptr, - const char *end, - const ENCODING *enc) -{ - switch (tok) { - case XML_TOK_PROLOG_S: - return XML_ROLE_NONE; - case XML_TOK_OPEN_PAREN: - state->handler = attlist6; - return XML_ROLE_NONE; - } - return common(state, tok); -} - - -static -int attlist6(PROLOG_STATE *state, - int tok, - const char *ptr, - const char *end, - const ENCODING *enc) -{ - switch (tok) { - case XML_TOK_PROLOG_S: - return XML_ROLE_NONE; - case XML_TOK_NAME: - state->handler = attlist7; - return XML_ROLE_ATTRIBUTE_NOTATION_VALUE; - } - return common(state, tok); -} - -static -int attlist7(PROLOG_STATE *state, - int tok, - const char *ptr, - const char *end, - const ENCODING *enc) -{ - switch (tok) { - case XML_TOK_PROLOG_S: - return XML_ROLE_NONE; - case XML_TOK_CLOSE_PAREN: - state->handler = attlist8; - return XML_ROLE_NONE; - case XML_TOK_OR: - state->handler = attlist6; - return XML_ROLE_NONE; - } - return common(state, tok); -} - -/* default value */ -static -int attlist8(PROLOG_STATE *state, - int tok, - const char *ptr, - const char *end, - const ENCODING *enc) -{ - switch (tok) { - case XML_TOK_PROLOG_S: - return XML_ROLE_NONE; - case XML_TOK_POUND_NAME: - if (XmlNameMatchesAscii(enc, - ptr + MIN_BYTES_PER_CHAR(enc), - end, - KW_IMPLIED)) { - state->handler = attlist1; - return XML_ROLE_IMPLIED_ATTRIBUTE_VALUE; - } - if (XmlNameMatchesAscii(enc, - ptr + MIN_BYTES_PER_CHAR(enc), - end, - KW_REQUIRED)) { - state->handler = attlist1; - return XML_ROLE_REQUIRED_ATTRIBUTE_VALUE; - } - if (XmlNameMatchesAscii(enc, - ptr + MIN_BYTES_PER_CHAR(enc), - end, - KW_FIXED)) { - state->handler = attlist9; - return XML_ROLE_NONE; - } - break; - case XML_TOK_LITERAL: - state->handler = attlist1; - return XML_ROLE_DEFAULT_ATTRIBUTE_VALUE; - } - return common(state, tok); -} - -static -int attlist9(PROLOG_STATE *state, - int tok, - const char *ptr, - const char *end, - const ENCODING *enc) -{ - switch (tok) { - case XML_TOK_PROLOG_S: - return XML_ROLE_NONE; - case XML_TOK_LITERAL: - state->handler = attlist1; - return XML_ROLE_FIXED_ATTRIBUTE_VALUE; - } - return common(state, tok); -} - -static -int element0(PROLOG_STATE *state, - int tok, - const char *ptr, - const char *end, - const ENCODING *enc) -{ - switch (tok) { - case XML_TOK_PROLOG_S: - return XML_ROLE_NONE; - case XML_TOK_NAME: - case XML_TOK_PREFIXED_NAME: - state->handler = element1; - return XML_ROLE_ELEMENT_NAME; - } - return common(state, tok); -} - -static -int element1(PROLOG_STATE *state, - int tok, - const char *ptr, - const char *end, - const ENCODING *enc) -{ - switch (tok) { - case XML_TOK_PROLOG_S: - return XML_ROLE_NONE; - case XML_TOK_NAME: - if (XmlNameMatchesAscii(enc, ptr, end, KW_EMPTY)) { - state->handler = declClose; - return XML_ROLE_CONTENT_EMPTY; - } - if (XmlNameMatchesAscii(enc, ptr, end, KW_ANY)) { - state->handler = declClose; - return XML_ROLE_CONTENT_ANY; - } - break; - case XML_TOK_OPEN_PAREN: - state->handler = element2; - state->level = 1; - return XML_ROLE_GROUP_OPEN; - } - return common(state, tok); -} - -static -int element2(PROLOG_STATE *state, - int tok, - const char *ptr, - const char *end, - const ENCODING *enc) -{ - switch (tok) { - case XML_TOK_PROLOG_S: - return XML_ROLE_NONE; - case XML_TOK_POUND_NAME: - if (XmlNameMatchesAscii(enc, - ptr + MIN_BYTES_PER_CHAR(enc), - end, - KW_PCDATA)) { - state->handler = element3; - return XML_ROLE_CONTENT_PCDATA; - } - break; - case XML_TOK_OPEN_PAREN: - state->level = 2; - state->handler = element6; - return XML_ROLE_GROUP_OPEN; - case XML_TOK_NAME: - case XML_TOK_PREFIXED_NAME: - state->handler = element7; - return XML_ROLE_CONTENT_ELEMENT; - case XML_TOK_NAME_QUESTION: - state->handler = element7; - return XML_ROLE_CONTENT_ELEMENT_OPT; - case XML_TOK_NAME_ASTERISK: - state->handler = element7; - return XML_ROLE_CONTENT_ELEMENT_REP; - case XML_TOK_NAME_PLUS: - state->handler = element7; - return XML_ROLE_CONTENT_ELEMENT_PLUS; - } - return common(state, tok); -} - -static -int element3(PROLOG_STATE *state, - int tok, - const char *ptr, - const char *end, - const ENCODING *enc) -{ - switch (tok) { - case XML_TOK_PROLOG_S: - return XML_ROLE_NONE; - case XML_TOK_CLOSE_PAREN: - state->handler = declClose; - return XML_ROLE_GROUP_CLOSE; - case XML_TOK_CLOSE_PAREN_ASTERISK: - state->handler = declClose; - return XML_ROLE_GROUP_CLOSE_REP; - case XML_TOK_OR: - state->handler = element4; - return XML_ROLE_NONE; - } - return common(state, tok); -} - -static -int element4(PROLOG_STATE *state, - int tok, - const char *ptr, - const char *end, - const ENCODING *enc) -{ - switch (tok) { - case XML_TOK_PROLOG_S: - return XML_ROLE_NONE; - case XML_TOK_NAME: - case XML_TOK_PREFIXED_NAME: - state->handler = element5; - return XML_ROLE_CONTENT_ELEMENT; - } - return common(state, tok); -} - -static -int element5(PROLOG_STATE *state, - int tok, - const char *ptr, - const char *end, - const ENCODING *enc) -{ - switch (tok) { - case XML_TOK_PROLOG_S: - return XML_ROLE_NONE; - case XML_TOK_CLOSE_PAREN_ASTERISK: - state->handler = declClose; - return XML_ROLE_GROUP_CLOSE_REP; - case XML_TOK_OR: - state->handler = element4; - return XML_ROLE_NONE; - } - return common(state, tok); -} - -static -int element6(PROLOG_STATE *state, - int tok, - const char *ptr, - const char *end, - const ENCODING *enc) -{ - switch (tok) { - case XML_TOK_PROLOG_S: - return XML_ROLE_NONE; - case XML_TOK_OPEN_PAREN: - state->level += 1; - return XML_ROLE_GROUP_OPEN; - case XML_TOK_NAME: - case XML_TOK_PREFIXED_NAME: - state->handler = element7; - return XML_ROLE_CONTENT_ELEMENT; - case XML_TOK_NAME_QUESTION: - state->handler = element7; - return XML_ROLE_CONTENT_ELEMENT_OPT; - case XML_TOK_NAME_ASTERISK: - state->handler = element7; - return XML_ROLE_CONTENT_ELEMENT_REP; - case XML_TOK_NAME_PLUS: - state->handler = element7; - return XML_ROLE_CONTENT_ELEMENT_PLUS; - } - return common(state, tok); -} - -static -int element7(PROLOG_STATE *state, - int tok, - const char *ptr, - const char *end, - const ENCODING *enc) -{ - switch (tok) { - case XML_TOK_PROLOG_S: - return XML_ROLE_NONE; - case XML_TOK_CLOSE_PAREN: - state->level -= 1; - if (state->level == 0) - state->handler = declClose; - return XML_ROLE_GROUP_CLOSE; - case XML_TOK_CLOSE_PAREN_ASTERISK: - state->level -= 1; - if (state->level == 0) - state->handler = declClose; - return XML_ROLE_GROUP_CLOSE_REP; - case XML_TOK_CLOSE_PAREN_QUESTION: - state->level -= 1; - if (state->level == 0) - state->handler = declClose; - return XML_ROLE_GROUP_CLOSE_OPT; - case XML_TOK_CLOSE_PAREN_PLUS: - state->level -= 1; - if (state->level == 0) - state->handler = declClose; - return XML_ROLE_GROUP_CLOSE_PLUS; - case XML_TOK_COMMA: - state->handler = element6; - return XML_ROLE_GROUP_SEQUENCE; - case XML_TOK_OR: - state->handler = element6; - return XML_ROLE_GROUP_CHOICE; - } - return common(state, tok); -} - -#ifdef XML_DTD - -static -int condSect0(PROLOG_STATE *state, - int tok, - const char *ptr, - const char *end, - const ENCODING *enc) -{ - switch (tok) { - case XML_TOK_PROLOG_S: - return XML_ROLE_NONE; - case XML_TOK_NAME: - if (XmlNameMatchesAscii(enc, ptr, end, KW_INCLUDE)) { - state->handler = condSect1; - return XML_ROLE_NONE; - } - if (XmlNameMatchesAscii(enc, ptr, end, KW_IGNORE)) { - state->handler = condSect2; - return XML_ROLE_NONE; - } - break; - } - return common(state, tok); -} - -static -int condSect1(PROLOG_STATE *state, - int tok, - const char *ptr, - const char *end, - const ENCODING *enc) -{ - switch (tok) { - case XML_TOK_PROLOG_S: - return XML_ROLE_NONE; - case XML_TOK_OPEN_BRACKET: - state->handler = externalSubset1; - state->includeLevel += 1; - return XML_ROLE_NONE; - } - return common(state, tok); -} - -static -int condSect2(PROLOG_STATE *state, - int tok, - const char *ptr, - const char *end, - const ENCODING *enc) -{ - switch (tok) { - case XML_TOK_PROLOG_S: - return XML_ROLE_NONE; - case XML_TOK_OPEN_BRACKET: - state->handler = externalSubset1; - return XML_ROLE_IGNORE_SECT; - } - return common(state, tok); -} - -#endif /* XML_DTD */ - -static -int declClose(PROLOG_STATE *state, - int tok, - const char *ptr, - const char *end, - const ENCODING *enc) -{ - switch (tok) { - case XML_TOK_PROLOG_S: - return XML_ROLE_NONE; - case XML_TOK_DECL_CLOSE: - setTopLevel(state); - return XML_ROLE_NONE; - } - return common(state, tok); -} - -#if 0 - -static -int ignore(PROLOG_STATE *state, - int tok, - const char *ptr, - const char *end, - const ENCODING *enc) -{ - switch (tok) { - case XML_TOK_DECL_CLOSE: - state->handler = internalSubset; - return 0; - default: - return XML_ROLE_NONE; - } - return common(state, tok); -} -#endif - -static -int error(PROLOG_STATE *state, - int tok, - const char *ptr, - const char *end, - const ENCODING *enc) -{ - return XML_ROLE_NONE; -} - -static -int common(PROLOG_STATE *state, int tok) -{ -#ifdef XML_DTD - if (!state->documentEntity && tok == XML_TOK_PARAM_ENTITY_REF) - return XML_ROLE_INNER_PARAM_ENTITY_REF; -#endif - state->handler = error; - return XML_ROLE_ERROR; -} - -void XmlPrologStateInit(PROLOG_STATE *state) -{ - state->handler = prolog0; -#ifdef XML_DTD - state->documentEntity = 1; - state->includeLevel = 0; -#endif /* XML_DTD */ -} - -#ifdef XML_DTD - -void XmlPrologStateInitExternalEntity(PROLOG_STATE *state) -{ - state->handler = externalSubset0; - state->documentEntity = 0; - state->includeLevel = 0; -} - -#endif /* XML_DTD */ diff --git a/libs/apr-util/xml/expat/lib/xmlrole.h b/libs/apr-util/xml/expat/lib/xmlrole.h deleted file mode 100644 index db3ebc84843..00000000000 --- a/libs/apr-util/xml/expat/lib/xmlrole.h +++ /dev/null @@ -1,100 +0,0 @@ -/* -Copyright (c) 1998, 1999 Thai Open Source Software Center Ltd -See the file COPYING for copying permission. -*/ - -#ifndef XmlRole_INCLUDED -#define XmlRole_INCLUDED 1 - -#include "xmltok.h" - -#ifdef __cplusplus -extern "C" { -#endif - -enum { - XML_ROLE_ERROR = -1, - XML_ROLE_NONE = 0, - XML_ROLE_XML_DECL, - XML_ROLE_INSTANCE_START, - XML_ROLE_DOCTYPE_NAME, - XML_ROLE_DOCTYPE_SYSTEM_ID, - XML_ROLE_DOCTYPE_PUBLIC_ID, - XML_ROLE_DOCTYPE_INTERNAL_SUBSET, - XML_ROLE_DOCTYPE_CLOSE, - XML_ROLE_GENERAL_ENTITY_NAME, - XML_ROLE_PARAM_ENTITY_NAME, - XML_ROLE_ENTITY_VALUE, - XML_ROLE_ENTITY_SYSTEM_ID, - XML_ROLE_ENTITY_PUBLIC_ID, - XML_ROLE_ENTITY_COMPLETE, - XML_ROLE_ENTITY_NOTATION_NAME, - XML_ROLE_NOTATION_NAME, - XML_ROLE_NOTATION_SYSTEM_ID, - XML_ROLE_NOTATION_NO_SYSTEM_ID, - XML_ROLE_NOTATION_PUBLIC_ID, - XML_ROLE_ATTRIBUTE_NAME, - XML_ROLE_ATTRIBUTE_TYPE_CDATA, - XML_ROLE_ATTRIBUTE_TYPE_ID, - XML_ROLE_ATTRIBUTE_TYPE_IDREF, - XML_ROLE_ATTRIBUTE_TYPE_IDREFS, - XML_ROLE_ATTRIBUTE_TYPE_ENTITY, - XML_ROLE_ATTRIBUTE_TYPE_ENTITIES, - XML_ROLE_ATTRIBUTE_TYPE_NMTOKEN, - XML_ROLE_ATTRIBUTE_TYPE_NMTOKENS, - XML_ROLE_ATTRIBUTE_ENUM_VALUE, - XML_ROLE_ATTRIBUTE_NOTATION_VALUE, - XML_ROLE_ATTLIST_ELEMENT_NAME, - XML_ROLE_IMPLIED_ATTRIBUTE_VALUE, - XML_ROLE_REQUIRED_ATTRIBUTE_VALUE, - XML_ROLE_DEFAULT_ATTRIBUTE_VALUE, - XML_ROLE_FIXED_ATTRIBUTE_VALUE, - XML_ROLE_ELEMENT_NAME, - XML_ROLE_CONTENT_ANY, - XML_ROLE_CONTENT_EMPTY, - XML_ROLE_CONTENT_PCDATA, - XML_ROLE_GROUP_OPEN, - XML_ROLE_GROUP_CLOSE, - XML_ROLE_GROUP_CLOSE_REP, - XML_ROLE_GROUP_CLOSE_OPT, - XML_ROLE_GROUP_CLOSE_PLUS, - XML_ROLE_GROUP_CHOICE, - XML_ROLE_GROUP_SEQUENCE, - XML_ROLE_CONTENT_ELEMENT, - XML_ROLE_CONTENT_ELEMENT_REP, - XML_ROLE_CONTENT_ELEMENT_OPT, - XML_ROLE_CONTENT_ELEMENT_PLUS, -#ifdef XML_DTD - XML_ROLE_TEXT_DECL, - XML_ROLE_IGNORE_SECT, - XML_ROLE_INNER_PARAM_ENTITY_REF, -#endif /* XML_DTD */ - XML_ROLE_PARAM_ENTITY_REF -}; - -typedef struct prolog_state { - int (*handler)(struct prolog_state *state, - int tok, - const char *ptr, - const char *end, - const ENCODING *enc); - unsigned level; -#ifdef XML_DTD - unsigned includeLevel; - int documentEntity; -#endif /* XML_DTD */ -} PROLOG_STATE; - -void XmlPrologStateInit(PROLOG_STATE *); -#ifdef XML_DTD -void XmlPrologStateInitExternalEntity(PROLOG_STATE *); -#endif /* XML_DTD */ - -#define XmlTokenRole(state, tok, ptr, end, enc) \ - (((state)->handler)(state, tok, ptr, end, enc)) - -#ifdef __cplusplus -} -#endif - -#endif /* not XmlRole_INCLUDED */ diff --git a/libs/apr-util/xml/expat/lib/xmltok.c b/libs/apr-util/xml/expat/lib/xmltok.c deleted file mode 100644 index 74c681f1e6b..00000000000 --- a/libs/apr-util/xml/expat/lib/xmltok.c +++ /dev/null @@ -1,1569 +0,0 @@ -/* -Copyright (c) 1998, 1999 Thai Open Source Software Center Ltd -See the file COPYING for copying permission. -*/ - -static char RCSId[] - = "$Header: /home/cvs/apr-util/xml/expat/lib/xmltok.c,v 1.1 2001/02/28 14:41:26 gstein Exp $"; - -#ifdef COMPILED_FROM_DSP -# include "winconfig.h" -#else -# include -#endif /* ndef COMPILED_FROM_DSP */ - -#include "xmltok.h" -#include "nametab.h" - -#ifdef XML_DTD -#define IGNORE_SECTION_TOK_VTABLE , PREFIX(ignoreSectionTok) -#else -#define IGNORE_SECTION_TOK_VTABLE /* as nothing */ -#endif - -#define VTABLE1 \ - { PREFIX(prologTok), PREFIX(contentTok), \ - PREFIX(cdataSectionTok) IGNORE_SECTION_TOK_VTABLE }, \ - { PREFIX(attributeValueTok), PREFIX(entityValueTok) }, \ - PREFIX(sameName), \ - PREFIX(nameMatchesAscii), \ - PREFIX(nameLength), \ - PREFIX(skipS), \ - PREFIX(getAtts), \ - PREFIX(charRefNumber), \ - PREFIX(predefinedEntityName), \ - PREFIX(updatePosition), \ - PREFIX(isPublicId) - -#define VTABLE VTABLE1, PREFIX(toUtf8), PREFIX(toUtf16) - -#define UCS2_GET_NAMING(pages, hi, lo) \ - (namingBitmap[(pages[hi] << 3) + ((lo) >> 5)] & (1 << ((lo) & 0x1F))) - -/* A 2 byte UTF-8 representation splits the characters 11 bits -between the bottom 5 and 6 bits of the bytes. -We need 8 bits to index into pages, 3 bits to add to that index and -5 bits to generate the mask. */ -#define UTF8_GET_NAMING2(pages, byte) \ - (namingBitmap[((pages)[(((byte)[0]) >> 2) & 7] << 3) \ - + ((((byte)[0]) & 3) << 1) \ - + ((((byte)[1]) >> 5) & 1)] \ - & (1 << (((byte)[1]) & 0x1F))) - -/* A 3 byte UTF-8 representation splits the characters 16 bits -between the bottom 4, 6 and 6 bits of the bytes. -We need 8 bits to index into pages, 3 bits to add to that index and -5 bits to generate the mask. */ -#define UTF8_GET_NAMING3(pages, byte) \ - (namingBitmap[((pages)[((((byte)[0]) & 0xF) << 4) \ - + ((((byte)[1]) >> 2) & 0xF)] \ - << 3) \ - + ((((byte)[1]) & 3) << 1) \ - + ((((byte)[2]) >> 5) & 1)] \ - & (1 << (((byte)[2]) & 0x1F))) - -#define UTF8_GET_NAMING(pages, p, n) \ - ((n) == 2 \ - ? UTF8_GET_NAMING2(pages, (const unsigned char *)(p)) \ - : ((n) == 3 \ - ? UTF8_GET_NAMING3(pages, (const unsigned char *)(p)) \ - : 0)) - -#define UTF8_INVALID3(p) \ - ((*p) == 0xED \ - ? (((p)[1] & 0x20) != 0) \ - : ((*p) == 0xEF \ - ? ((p)[1] == 0xBF && ((p)[2] == 0xBF || (p)[2] == 0xBE)) \ - : 0)) - -#define UTF8_INVALID4(p) ((*p) == 0xF4 && ((p)[1] & 0x30) != 0) - -static -int isNever(const ENCODING *enc, const char *p) -{ - return 0; -} - -static -int utf8_isName2(const ENCODING *enc, const char *p) -{ - return UTF8_GET_NAMING2(namePages, (const unsigned char *)p); -} - -static -int utf8_isName3(const ENCODING *enc, const char *p) -{ - return UTF8_GET_NAMING3(namePages, (const unsigned char *)p); -} - -#define utf8_isName4 isNever - -static -int utf8_isNmstrt2(const ENCODING *enc, const char *p) -{ - return UTF8_GET_NAMING2(nmstrtPages, (const unsigned char *)p); -} - -static -int utf8_isNmstrt3(const ENCODING *enc, const char *p) -{ - return UTF8_GET_NAMING3(nmstrtPages, (const unsigned char *)p); -} - -#define utf8_isNmstrt4 isNever - -#define utf8_isInvalid2 isNever - -static -int utf8_isInvalid3(const ENCODING *enc, const char *p) -{ - return UTF8_INVALID3((const unsigned char *)p); -} - -static -int utf8_isInvalid4(const ENCODING *enc, const char *p) -{ - return UTF8_INVALID4((const unsigned char *)p); -} - -struct normal_encoding { - ENCODING enc; - unsigned char type[256]; -#ifdef XML_MIN_SIZE - int (*byteType)(const ENCODING *, const char *); - int (*isNameMin)(const ENCODING *, const char *); - int (*isNmstrtMin)(const ENCODING *, const char *); - int (*byteToAscii)(const ENCODING *, const char *); - int (*charMatches)(const ENCODING *, const char *, int); -#endif /* XML_MIN_SIZE */ - int (*isName2)(const ENCODING *, const char *); - int (*isName3)(const ENCODING *, const char *); - int (*isName4)(const ENCODING *, const char *); - int (*isNmstrt2)(const ENCODING *, const char *); - int (*isNmstrt3)(const ENCODING *, const char *); - int (*isNmstrt4)(const ENCODING *, const char *); - int (*isInvalid2)(const ENCODING *, const char *); - int (*isInvalid3)(const ENCODING *, const char *); - int (*isInvalid4)(const ENCODING *, const char *); -}; - -#ifdef XML_MIN_SIZE - -#define STANDARD_VTABLE(E) \ - E ## byteType, \ - E ## isNameMin, \ - E ## isNmstrtMin, \ - E ## byteToAscii, \ - E ## charMatches, - -#else - -#define STANDARD_VTABLE(E) /* as nothing */ - -#endif - -#define NORMAL_VTABLE(E) \ - E ## isName2, \ - E ## isName3, \ - E ## isName4, \ - E ## isNmstrt2, \ - E ## isNmstrt3, \ - E ## isNmstrt4, \ - E ## isInvalid2, \ - E ## isInvalid3, \ - E ## isInvalid4 - -static int checkCharRefNumber(int); - -#include "xmltok_impl.h" -#include "ascii.h" - -#ifdef XML_MIN_SIZE -#define sb_isNameMin isNever -#define sb_isNmstrtMin isNever -#endif - -#ifdef XML_MIN_SIZE -#define MINBPC(enc) ((enc)->minBytesPerChar) -#else -/* minimum bytes per character */ -#define MINBPC(enc) 1 -#endif - -#define SB_BYTE_TYPE(enc, p) \ - (((struct normal_encoding *)(enc))->type[(unsigned char)*(p)]) - -#ifdef XML_MIN_SIZE -static -int sb_byteType(const ENCODING *enc, const char *p) -{ - return SB_BYTE_TYPE(enc, p); -} -#define BYTE_TYPE(enc, p) \ - (((const struct normal_encoding *)(enc))->byteType(enc, p)) -#else -#define BYTE_TYPE(enc, p) SB_BYTE_TYPE(enc, p) -#endif - -#ifdef XML_MIN_SIZE -#define BYTE_TO_ASCII(enc, p) \ - (((const struct normal_encoding *)(enc))->byteToAscii(enc, p)) -static -int sb_byteToAscii(const ENCODING *enc, const char *p) -{ - return *p; -} -#else -#define BYTE_TO_ASCII(enc, p) (*(p)) -#endif - -#define IS_NAME_CHAR(enc, p, n) \ - (((const struct normal_encoding *)(enc))->isName ## n(enc, p)) -#define IS_NMSTRT_CHAR(enc, p, n) \ - (((const struct normal_encoding *)(enc))->isNmstrt ## n(enc, p)) -#define IS_INVALID_CHAR(enc, p, n) \ - (((const struct normal_encoding *)(enc))->isInvalid ## n(enc, p)) - -#ifdef XML_MIN_SIZE -#define IS_NAME_CHAR_MINBPC(enc, p) \ - (((const struct normal_encoding *)(enc))->isNameMin(enc, p)) -#define IS_NMSTRT_CHAR_MINBPC(enc, p) \ - (((const struct normal_encoding *)(enc))->isNmstrtMin(enc, p)) -#else -#define IS_NAME_CHAR_MINBPC(enc, p) (0) -#define IS_NMSTRT_CHAR_MINBPC(enc, p) (0) -#endif - -#ifdef XML_MIN_SIZE -#define CHAR_MATCHES(enc, p, c) \ - (((const struct normal_encoding *)(enc))->charMatches(enc, p, c)) -static -int sb_charMatches(const ENCODING *enc, const char *p, int c) -{ - return *p == c; -} -#else -/* c is an ASCII character */ -#define CHAR_MATCHES(enc, p, c) (*(p) == c) -#endif - -#define PREFIX(ident) normal_ ## ident -#include "xmltok_impl.c" - -#undef MINBPC -#undef BYTE_TYPE -#undef BYTE_TO_ASCII -#undef CHAR_MATCHES -#undef IS_NAME_CHAR -#undef IS_NAME_CHAR_MINBPC -#undef IS_NMSTRT_CHAR -#undef IS_NMSTRT_CHAR_MINBPC -#undef IS_INVALID_CHAR - -enum { /* UTF8_cvalN is value of masked first byte of N byte sequence */ - UTF8_cval1 = 0x00, - UTF8_cval2 = 0xc0, - UTF8_cval3 = 0xe0, - UTF8_cval4 = 0xf0 -}; - -static -void utf8_toUtf8(const ENCODING *enc, - const char **fromP, const char *fromLim, - char **toP, const char *toLim) -{ - char *to; - const char *from; - if (fromLim - *fromP > toLim - *toP) { - /* Avoid copying partial characters. */ - for (fromLim = *fromP + (toLim - *toP); fromLim > *fromP; fromLim--) - if (((unsigned char)fromLim[-1] & 0xc0) != 0x80) - break; - } - for (to = *toP, from = *fromP; from != fromLim; from++, to++) - *to = *from; - *fromP = from; - *toP = to; -} - -static -void utf8_toUtf16(const ENCODING *enc, - const char **fromP, const char *fromLim, - unsigned short **toP, const unsigned short *toLim) -{ - unsigned short *to = *toP; - const char *from = *fromP; - while (from != fromLim && to != toLim) { - switch (((struct normal_encoding *)enc)->type[(unsigned char)*from]) { - case BT_LEAD2: - *to++ = ((from[0] & 0x1f) << 6) | (from[1] & 0x3f); - from += 2; - break; - case BT_LEAD3: - *to++ = ((from[0] & 0xf) << 12) | ((from[1] & 0x3f) << 6) | (from[2] & 0x3f); - from += 3; - break; - case BT_LEAD4: - { - unsigned long n; - if (to + 1 == toLim) - break; - n = ((from[0] & 0x7) << 18) | ((from[1] & 0x3f) << 12) | ((from[2] & 0x3f) << 6) | (from[3] & 0x3f); - n -= 0x10000; - to[0] = (unsigned short)((n >> 10) | 0xD800); - to[1] = (unsigned short)((n & 0x3FF) | 0xDC00); - to += 2; - from += 4; - } - break; - default: - *to++ = *from++; - break; - } - } - *fromP = from; - *toP = to; -} - -#ifdef XML_NS -static const struct normal_encoding utf8_encoding_ns = { - { VTABLE1, utf8_toUtf8, utf8_toUtf16, 1, 1, 0 }, - { -#include "asciitab.h" -#include "utf8tab.h" - }, - STANDARD_VTABLE(sb_) NORMAL_VTABLE(utf8_) -}; -#endif - -static const struct normal_encoding utf8_encoding = { - { VTABLE1, utf8_toUtf8, utf8_toUtf16, 1, 1, 0 }, - { -#define BT_COLON BT_NMSTRT -#include "asciitab.h" -#undef BT_COLON -#include "utf8tab.h" - }, - STANDARD_VTABLE(sb_) NORMAL_VTABLE(utf8_) -}; - -#ifdef XML_NS - -static const struct normal_encoding internal_utf8_encoding_ns = { - { VTABLE1, utf8_toUtf8, utf8_toUtf16, 1, 1, 0 }, - { -#include "iasciitab.h" -#include "utf8tab.h" - }, - STANDARD_VTABLE(sb_) NORMAL_VTABLE(utf8_) -}; - -#endif - -static const struct normal_encoding internal_utf8_encoding = { - { VTABLE1, utf8_toUtf8, utf8_toUtf16, 1, 1, 0 }, - { -#define BT_COLON BT_NMSTRT -#include "iasciitab.h" -#undef BT_COLON -#include "utf8tab.h" - }, - STANDARD_VTABLE(sb_) NORMAL_VTABLE(utf8_) -}; - -static -void latin1_toUtf8(const ENCODING *enc, - const char **fromP, const char *fromLim, - char **toP, const char *toLim) -{ - for (;;) { - unsigned char c; - if (*fromP == fromLim) - break; - c = (unsigned char)**fromP; - if (c & 0x80) { - if (toLim - *toP < 2) - break; - *(*toP)++ = ((c >> 6) | UTF8_cval2); - *(*toP)++ = ((c & 0x3f) | 0x80); - (*fromP)++; - } - else { - if (*toP == toLim) - break; - *(*toP)++ = *(*fromP)++; - } - } -} - -static -void latin1_toUtf16(const ENCODING *enc, - const char **fromP, const char *fromLim, - unsigned short **toP, const unsigned short *toLim) -{ - while (*fromP != fromLim && *toP != toLim) - *(*toP)++ = (unsigned char)*(*fromP)++; -} - -#ifdef XML_NS - -static const struct normal_encoding latin1_encoding_ns = { - { VTABLE1, latin1_toUtf8, latin1_toUtf16, 1, 0, 0 }, - { -#include "asciitab.h" -#include "latin1tab.h" - }, - STANDARD_VTABLE(sb_) -}; - -#endif - -static const struct normal_encoding latin1_encoding = { - { VTABLE1, latin1_toUtf8, latin1_toUtf16, 1, 0, 0 }, - { -#define BT_COLON BT_NMSTRT -#include "asciitab.h" -#undef BT_COLON -#include "latin1tab.h" - }, - STANDARD_VTABLE(sb_) -}; - -static -void ascii_toUtf8(const ENCODING *enc, - const char **fromP, const char *fromLim, - char **toP, const char *toLim) -{ - while (*fromP != fromLim && *toP != toLim) - *(*toP)++ = *(*fromP)++; -} - -#ifdef XML_NS - -static const struct normal_encoding ascii_encoding_ns = { - { VTABLE1, ascii_toUtf8, latin1_toUtf16, 1, 1, 0 }, - { -#include "asciitab.h" -/* BT_NONXML == 0 */ - }, - STANDARD_VTABLE(sb_) -}; - -#endif - -static const struct normal_encoding ascii_encoding = { - { VTABLE1, ascii_toUtf8, latin1_toUtf16, 1, 1, 0 }, - { -#define BT_COLON BT_NMSTRT -#include "asciitab.h" -#undef BT_COLON -/* BT_NONXML == 0 */ - }, - STANDARD_VTABLE(sb_) -}; - -static int unicode_byte_type(char hi, char lo) -{ - switch ((unsigned char)hi) { - case 0xD8: case 0xD9: case 0xDA: case 0xDB: - return BT_LEAD4; - case 0xDC: case 0xDD: case 0xDE: case 0xDF: - return BT_TRAIL; - case 0xFF: - switch ((unsigned char)lo) { - case 0xFF: - case 0xFE: - return BT_NONXML; - } - break; - } - return BT_NONASCII; -} - -#define DEFINE_UTF16_TO_UTF8(E) \ -static \ -void E ## toUtf8(const ENCODING *enc, \ - const char **fromP, const char *fromLim, \ - char **toP, const char *toLim) \ -{ \ - const char *from; \ - for (from = *fromP; from != fromLim; from += 2) { \ - int plane; \ - unsigned char lo2; \ - unsigned char lo = GET_LO(from); \ - unsigned char hi = GET_HI(from); \ - switch (hi) { \ - case 0: \ - if (lo < 0x80) { \ - if (*toP == toLim) { \ - *fromP = from; \ - return; \ - } \ - *(*toP)++ = lo; \ - break; \ - } \ - /* fall through */ \ - case 0x1: case 0x2: case 0x3: \ - case 0x4: case 0x5: case 0x6: case 0x7: \ - if (toLim - *toP < 2) { \ - *fromP = from; \ - return; \ - } \ - *(*toP)++ = ((lo >> 6) | (hi << 2) | UTF8_cval2); \ - *(*toP)++ = ((lo & 0x3f) | 0x80); \ - break; \ - default: \ - if (toLim - *toP < 3) { \ - *fromP = from; \ - return; \ - } \ - /* 16 bits divided 4, 6, 6 amongst 3 bytes */ \ - *(*toP)++ = ((hi >> 4) | UTF8_cval3); \ - *(*toP)++ = (((hi & 0xf) << 2) | (lo >> 6) | 0x80); \ - *(*toP)++ = ((lo & 0x3f) | 0x80); \ - break; \ - case 0xD8: case 0xD9: case 0xDA: case 0xDB: \ - if (toLim - *toP < 4) { \ - *fromP = from; \ - return; \ - } \ - plane = (((hi & 0x3) << 2) | ((lo >> 6) & 0x3)) + 1; \ - *(*toP)++ = ((plane >> 2) | UTF8_cval4); \ - *(*toP)++ = (((lo >> 2) & 0xF) | ((plane & 0x3) << 4) | 0x80); \ - from += 2; \ - lo2 = GET_LO(from); \ - *(*toP)++ = (((lo & 0x3) << 4) \ - | ((GET_HI(from) & 0x3) << 2) \ - | (lo2 >> 6) \ - | 0x80); \ - *(*toP)++ = ((lo2 & 0x3f) | 0x80); \ - break; \ - } \ - } \ - *fromP = from; \ -} - -#define DEFINE_UTF16_TO_UTF16(E) \ -static \ -void E ## toUtf16(const ENCODING *enc, \ - const char **fromP, const char *fromLim, \ - unsigned short **toP, const unsigned short *toLim) \ -{ \ - /* Avoid copying first half only of surrogate */ \ - if (fromLim - *fromP > ((toLim - *toP) << 1) \ - && (GET_HI(fromLim - 2) & 0xF8) == 0xD8) \ - fromLim -= 2; \ - for (; *fromP != fromLim && *toP != toLim; *fromP += 2) \ - *(*toP)++ = (GET_HI(*fromP) << 8) | GET_LO(*fromP); \ -} - -#define SET2(ptr, ch) \ - (((ptr)[0] = ((ch) & 0xff)), ((ptr)[1] = ((ch) >> 8))) -#define GET_LO(ptr) ((unsigned char)(ptr)[0]) -#define GET_HI(ptr) ((unsigned char)(ptr)[1]) - -DEFINE_UTF16_TO_UTF8(little2_) -DEFINE_UTF16_TO_UTF16(little2_) - -#undef SET2 -#undef GET_LO -#undef GET_HI - -#define SET2(ptr, ch) \ - (((ptr)[0] = ((ch) >> 8)), ((ptr)[1] = ((ch) & 0xFF))) -#define GET_LO(ptr) ((unsigned char)(ptr)[1]) -#define GET_HI(ptr) ((unsigned char)(ptr)[0]) - -DEFINE_UTF16_TO_UTF8(big2_) -DEFINE_UTF16_TO_UTF16(big2_) - -#undef SET2 -#undef GET_LO -#undef GET_HI - -#define LITTLE2_BYTE_TYPE(enc, p) \ - ((p)[1] == 0 \ - ? ((struct normal_encoding *)(enc))->type[(unsigned char)*(p)] \ - : unicode_byte_type((p)[1], (p)[0])) -#define LITTLE2_BYTE_TO_ASCII(enc, p) ((p)[1] == 0 ? (p)[0] : -1) -#define LITTLE2_CHAR_MATCHES(enc, p, c) ((p)[1] == 0 && (p)[0] == c) -#define LITTLE2_IS_NAME_CHAR_MINBPC(enc, p) \ - UCS2_GET_NAMING(namePages, (unsigned char)p[1], (unsigned char)p[0]) -#define LITTLE2_IS_NMSTRT_CHAR_MINBPC(enc, p) \ - UCS2_GET_NAMING(nmstrtPages, (unsigned char)p[1], (unsigned char)p[0]) - -#ifdef XML_MIN_SIZE - -static -int little2_byteType(const ENCODING *enc, const char *p) -{ - return LITTLE2_BYTE_TYPE(enc, p); -} - -static -int little2_byteToAscii(const ENCODING *enc, const char *p) -{ - return LITTLE2_BYTE_TO_ASCII(enc, p); -} - -static -int little2_charMatches(const ENCODING *enc, const char *p, int c) -{ - return LITTLE2_CHAR_MATCHES(enc, p, c); -} - -static -int little2_isNameMin(const ENCODING *enc, const char *p) -{ - return LITTLE2_IS_NAME_CHAR_MINBPC(enc, p); -} - -static -int little2_isNmstrtMin(const ENCODING *enc, const char *p) -{ - return LITTLE2_IS_NMSTRT_CHAR_MINBPC(enc, p); -} - -#undef VTABLE -#define VTABLE VTABLE1, little2_toUtf8, little2_toUtf16 - -#else /* not XML_MIN_SIZE */ - -#undef PREFIX -#define PREFIX(ident) little2_ ## ident -#define MINBPC(enc) 2 -/* CHAR_MATCHES is guaranteed to have MINBPC bytes available. */ -#define BYTE_TYPE(enc, p) LITTLE2_BYTE_TYPE(enc, p) -#define BYTE_TO_ASCII(enc, p) LITTLE2_BYTE_TO_ASCII(enc, p) -#define CHAR_MATCHES(enc, p, c) LITTLE2_CHAR_MATCHES(enc, p, c) -#define IS_NAME_CHAR(enc, p, n) 0 -#define IS_NAME_CHAR_MINBPC(enc, p) LITTLE2_IS_NAME_CHAR_MINBPC(enc, p) -#define IS_NMSTRT_CHAR(enc, p, n) (0) -#define IS_NMSTRT_CHAR_MINBPC(enc, p) LITTLE2_IS_NMSTRT_CHAR_MINBPC(enc, p) - -#include "xmltok_impl.c" - -#undef MINBPC -#undef BYTE_TYPE -#undef BYTE_TO_ASCII -#undef CHAR_MATCHES -#undef IS_NAME_CHAR -#undef IS_NAME_CHAR_MINBPC -#undef IS_NMSTRT_CHAR -#undef IS_NMSTRT_CHAR_MINBPC -#undef IS_INVALID_CHAR - -#endif /* not XML_MIN_SIZE */ - -#ifdef XML_NS - -static const struct normal_encoding little2_encoding_ns = { - { VTABLE, 2, 0, -#if XML_BYTE_ORDER == 12 - 1 -#else - 0 -#endif - }, - { -#include "asciitab.h" -#include "latin1tab.h" - }, - STANDARD_VTABLE(little2_) -}; - -#endif - -static const struct normal_encoding little2_encoding = { - { VTABLE, 2, 0, -#if XML_BYTE_ORDER == 12 - 1 -#else - 0 -#endif - }, - { -#define BT_COLON BT_NMSTRT -#include "asciitab.h" -#undef BT_COLON -#include "latin1tab.h" - }, - STANDARD_VTABLE(little2_) -}; - -#if XML_BYTE_ORDER != 21 - -#ifdef XML_NS - -static const struct normal_encoding internal_little2_encoding_ns = { - { VTABLE, 2, 0, 1 }, - { -#include "iasciitab.h" -#include "latin1tab.h" - }, - STANDARD_VTABLE(little2_) -}; - -#endif - -static const struct normal_encoding internal_little2_encoding = { - { VTABLE, 2, 0, 1 }, - { -#define BT_COLON BT_NMSTRT -#include "iasciitab.h" -#undef BT_COLON -#include "latin1tab.h" - }, - STANDARD_VTABLE(little2_) -}; - -#endif - - -#define BIG2_BYTE_TYPE(enc, p) \ - ((p)[0] == 0 \ - ? ((struct normal_encoding *)(enc))->type[(unsigned char)(p)[1]] \ - : unicode_byte_type((p)[0], (p)[1])) -#define BIG2_BYTE_TO_ASCII(enc, p) ((p)[0] == 0 ? (p)[1] : -1) -#define BIG2_CHAR_MATCHES(enc, p, c) ((p)[0] == 0 && (p)[1] == c) -#define BIG2_IS_NAME_CHAR_MINBPC(enc, p) \ - UCS2_GET_NAMING(namePages, (unsigned char)p[0], (unsigned char)p[1]) -#define BIG2_IS_NMSTRT_CHAR_MINBPC(enc, p) \ - UCS2_GET_NAMING(nmstrtPages, (unsigned char)p[0], (unsigned char)p[1]) - -#ifdef XML_MIN_SIZE - -static -int big2_byteType(const ENCODING *enc, const char *p) -{ - return BIG2_BYTE_TYPE(enc, p); -} - -static -int big2_byteToAscii(const ENCODING *enc, const char *p) -{ - return BIG2_BYTE_TO_ASCII(enc, p); -} - -static -int big2_charMatches(const ENCODING *enc, const char *p, int c) -{ - return BIG2_CHAR_MATCHES(enc, p, c); -} - -static -int big2_isNameMin(const ENCODING *enc, const char *p) -{ - return BIG2_IS_NAME_CHAR_MINBPC(enc, p); -} - -static -int big2_isNmstrtMin(const ENCODING *enc, const char *p) -{ - return BIG2_IS_NMSTRT_CHAR_MINBPC(enc, p); -} - -#undef VTABLE -#define VTABLE VTABLE1, big2_toUtf8, big2_toUtf16 - -#else /* not XML_MIN_SIZE */ - -#undef PREFIX -#define PREFIX(ident) big2_ ## ident -#define MINBPC(enc) 2 -/* CHAR_MATCHES is guaranteed to have MINBPC bytes available. */ -#define BYTE_TYPE(enc, p) BIG2_BYTE_TYPE(enc, p) -#define BYTE_TO_ASCII(enc, p) BIG2_BYTE_TO_ASCII(enc, p) -#define CHAR_MATCHES(enc, p, c) BIG2_CHAR_MATCHES(enc, p, c) -#define IS_NAME_CHAR(enc, p, n) 0 -#define IS_NAME_CHAR_MINBPC(enc, p) BIG2_IS_NAME_CHAR_MINBPC(enc, p) -#define IS_NMSTRT_CHAR(enc, p, n) (0) -#define IS_NMSTRT_CHAR_MINBPC(enc, p) BIG2_IS_NMSTRT_CHAR_MINBPC(enc, p) - -#include "xmltok_impl.c" - -#undef MINBPC -#undef BYTE_TYPE -#undef BYTE_TO_ASCII -#undef CHAR_MATCHES -#undef IS_NAME_CHAR -#undef IS_NAME_CHAR_MINBPC -#undef IS_NMSTRT_CHAR -#undef IS_NMSTRT_CHAR_MINBPC -#undef IS_INVALID_CHAR - -#endif /* not XML_MIN_SIZE */ - -#ifdef XML_NS - -static const struct normal_encoding big2_encoding_ns = { - { VTABLE, 2, 0, -#if XML_BYTE_ORDER == 21 - 1 -#else - 0 -#endif - }, - { -#include "asciitab.h" -#include "latin1tab.h" - }, - STANDARD_VTABLE(big2_) -}; - -#endif - -static const struct normal_encoding big2_encoding = { - { VTABLE, 2, 0, -#if XML_BYTE_ORDER == 21 - 1 -#else - 0 -#endif - }, - { -#define BT_COLON BT_NMSTRT -#include "asciitab.h" -#undef BT_COLON -#include "latin1tab.h" - }, - STANDARD_VTABLE(big2_) -}; - -#if XML_BYTE_ORDER != 12 - -#ifdef XML_NS - -static const struct normal_encoding internal_big2_encoding_ns = { - { VTABLE, 2, 0, 1 }, - { -#include "iasciitab.h" -#include "latin1tab.h" - }, - STANDARD_VTABLE(big2_) -}; - -#endif - -static const struct normal_encoding internal_big2_encoding = { - { VTABLE, 2, 0, 1 }, - { -#define BT_COLON BT_NMSTRT -#include "iasciitab.h" -#undef BT_COLON -#include "latin1tab.h" - }, - STANDARD_VTABLE(big2_) -}; - -#endif - -#undef PREFIX - -static -int streqci(const char *s1, const char *s2) -{ - for (;;) { - char c1 = *s1++; - char c2 = *s2++; - if (ASCII_a <= c1 && c1 <= ASCII_z) - c1 += ASCII_A - ASCII_a; - if (ASCII_a <= c2 && c2 <= ASCII_z) - c2 += ASCII_A - ASCII_a; - if (c1 != c2) - return 0; - if (!c1) - break; - } - return 1; -} - -static -void initUpdatePosition(const ENCODING *enc, const char *ptr, - const char *end, POSITION *pos) -{ - normal_updatePosition(&utf8_encoding.enc, ptr, end, pos); -} - -static -int toAscii(const ENCODING *enc, const char *ptr, const char *end) -{ - char buf[1]; - char *p = buf; - XmlUtf8Convert(enc, &ptr, end, &p, p + 1); - if (p == buf) - return -1; - else - return buf[0]; -} - -static -int isSpace(int c) -{ - switch (c) { - case 0x20: - case 0xD: - case 0xA: - case 0x9: - return 1; - } - return 0; -} - -/* Return 1 if there's just optional white space -or there's an S followed by name=val. */ -static -int parsePseudoAttribute(const ENCODING *enc, - const char *ptr, - const char *end, - const char **namePtr, - const char **nameEndPtr, - const char **valPtr, - const char **nextTokPtr) -{ - int c; - char open; - if (ptr == end) { - *namePtr = 0; - return 1; - } - if (!isSpace(toAscii(enc, ptr, end))) { - *nextTokPtr = ptr; - return 0; - } - do { - ptr += enc->minBytesPerChar; - } while (isSpace(toAscii(enc, ptr, end))); - if (ptr == end) { - *namePtr = 0; - return 1; - } - *namePtr = ptr; - for (;;) { - c = toAscii(enc, ptr, end); - if (c == -1) { - *nextTokPtr = ptr; - return 0; - } - if (c == ASCII_EQUALS) { - *nameEndPtr = ptr; - break; - } - if (isSpace(c)) { - *nameEndPtr = ptr; - do { - ptr += enc->minBytesPerChar; - } while (isSpace(c = toAscii(enc, ptr, end))); - if (c != ASCII_EQUALS) { - *nextTokPtr = ptr; - return 0; - } - break; - } - ptr += enc->minBytesPerChar; - } - if (ptr == *namePtr) { - *nextTokPtr = ptr; - return 0; - } - ptr += enc->minBytesPerChar; - c = toAscii(enc, ptr, end); - while (isSpace(c)) { - ptr += enc->minBytesPerChar; - c = toAscii(enc, ptr, end); - } - if (c != ASCII_QUOT && c != ASCII_APOS) { - *nextTokPtr = ptr; - return 0; - } - open = c; - ptr += enc->minBytesPerChar; - *valPtr = ptr; - for (;; ptr += enc->minBytesPerChar) { - c = toAscii(enc, ptr, end); - if (c == open) - break; - if (!(ASCII_a <= c && c <= ASCII_z) - && !(ASCII_A <= c && c <= ASCII_Z) - && !(ASCII_0 <= c && c <= ASCII_9) - && c != ASCII_PERIOD - && c != ASCII_MINUS - && c != ASCII_UNDERSCORE) { - *nextTokPtr = ptr; - return 0; - } - } - *nextTokPtr = ptr + enc->minBytesPerChar; - return 1; -} - -static const char KW_version[] = { - ASCII_v, ASCII_e, ASCII_r, ASCII_s, ASCII_i, ASCII_o, ASCII_n, '\0' -}; - -static const char KW_encoding[] = { - ASCII_e, ASCII_n, ASCII_c, ASCII_o, ASCII_d, ASCII_i, ASCII_n, ASCII_g, '\0' -}; - -static const char KW_standalone[] = { - ASCII_s, ASCII_t, ASCII_a, ASCII_n, ASCII_d, ASCII_a, ASCII_l, ASCII_o, ASCII_n, ASCII_e, '\0' -}; - -static const char KW_yes[] = { - ASCII_y, ASCII_e, ASCII_s, '\0' -}; - -static const char KW_no[] = { - ASCII_n, ASCII_o, '\0' -}; - -static -int doParseXmlDecl(const ENCODING *(*encodingFinder)(const ENCODING *, - const char *, - const char *), - int isGeneralTextEntity, - const ENCODING *enc, - const char *ptr, - const char *end, - const char **badPtr, - const char **versionPtr, - const char **versionEndPtr, - const char **encodingName, - const ENCODING **encoding, - int *standalone) -{ - const char *val = 0; - const char *name = 0; - const char *nameEnd = 0; - ptr += 5 * enc->minBytesPerChar; - end -= 2 * enc->minBytesPerChar; - if (!parsePseudoAttribute(enc, ptr, end, &name, &nameEnd, &val, &ptr) || !name) { - *badPtr = ptr; - return 0; - } - if (!XmlNameMatchesAscii(enc, name, nameEnd, KW_version)) { - if (!isGeneralTextEntity) { - *badPtr = name; - return 0; - } - } - else { - if (versionPtr) - *versionPtr = val; - if (versionEndPtr) - *versionEndPtr = ptr; - if (!parsePseudoAttribute(enc, ptr, end, &name, &nameEnd, &val, &ptr)) { - *badPtr = ptr; - return 0; - } - if (!name) { - if (isGeneralTextEntity) { - /* a TextDecl must have an EncodingDecl */ - *badPtr = ptr; - return 0; - } - return 1; - } - } - if (XmlNameMatchesAscii(enc, name, nameEnd, KW_encoding)) { - int c = toAscii(enc, val, end); - if (!(ASCII_a <= c && c <= ASCII_z) && !(ASCII_A <= c && c <= ASCII_Z)) { - *badPtr = val; - return 0; - } - if (encodingName) - *encodingName = val; - if (encoding) - *encoding = encodingFinder(enc, val, ptr - enc->minBytesPerChar); - if (!parsePseudoAttribute(enc, ptr, end, &name, &nameEnd, &val, &ptr)) { - *badPtr = ptr; - return 0; - } - if (!name) - return 1; - } - if (!XmlNameMatchesAscii(enc, name, nameEnd, KW_standalone) || isGeneralTextEntity) { - *badPtr = name; - return 0; - } - if (XmlNameMatchesAscii(enc, val, ptr - enc->minBytesPerChar, KW_yes)) { - if (standalone) - *standalone = 1; - } - else if (XmlNameMatchesAscii(enc, val, ptr - enc->minBytesPerChar, KW_no)) { - if (standalone) - *standalone = 0; - } - else { - *badPtr = val; - return 0; - } - while (isSpace(toAscii(enc, ptr, end))) - ptr += enc->minBytesPerChar; - if (ptr != end) { - *badPtr = ptr; - return 0; - } - return 1; -} - -static -int checkCharRefNumber(int result) -{ - switch (result >> 8) { - case 0xD8: case 0xD9: case 0xDA: case 0xDB: - case 0xDC: case 0xDD: case 0xDE: case 0xDF: - return -1; - case 0: - if (latin1_encoding.type[result] == BT_NONXML) - return -1; - break; - case 0xFF: - if (result == 0xFFFE || result == 0xFFFF) - return -1; - break; - } - return result; -} - -int XmlUtf8Encode(int c, char *buf) -{ - enum { - /* minN is minimum legal resulting value for N byte sequence */ - min2 = 0x80, - min3 = 0x800, - min4 = 0x10000 - }; - - if (c < 0) - return 0; - if (c < min2) { - buf[0] = (c | UTF8_cval1); - return 1; - } - if (c < min3) { - buf[0] = ((c >> 6) | UTF8_cval2); - buf[1] = ((c & 0x3f) | 0x80); - return 2; - } - if (c < min4) { - buf[0] = ((c >> 12) | UTF8_cval3); - buf[1] = (((c >> 6) & 0x3f) | 0x80); - buf[2] = ((c & 0x3f) | 0x80); - return 3; - } - if (c < 0x110000) { - buf[0] = ((c >> 18) | UTF8_cval4); - buf[1] = (((c >> 12) & 0x3f) | 0x80); - buf[2] = (((c >> 6) & 0x3f) | 0x80); - buf[3] = ((c & 0x3f) | 0x80); - return 4; - } - return 0; -} - -int XmlUtf16Encode(int charNum, unsigned short *buf) -{ - if (charNum < 0) - return 0; - if (charNum < 0x10000) { - buf[0] = charNum; - return 1; - } - if (charNum < 0x110000) { - charNum -= 0x10000; - buf[0] = (charNum >> 10) + 0xD800; - buf[1] = (charNum & 0x3FF) + 0xDC00; - return 2; - } - return 0; -} - -struct unknown_encoding { - struct normal_encoding normal; - int (*convert)(void *userData, const char *p); - void *userData; - unsigned short utf16[256]; - char utf8[256][4]; -}; - -int XmlSizeOfUnknownEncoding(void) -{ - return sizeof(struct unknown_encoding); -} - -static -int unknown_isName(const ENCODING *enc, const char *p) -{ - int c = ((const struct unknown_encoding *)enc) - ->convert(((const struct unknown_encoding *)enc)->userData, p); - if (c & ~0xFFFF) - return 0; - return UCS2_GET_NAMING(namePages, c >> 8, c & 0xFF); -} - -static -int unknown_isNmstrt(const ENCODING *enc, const char *p) -{ - int c = ((const struct unknown_encoding *)enc) - ->convert(((const struct unknown_encoding *)enc)->userData, p); - if (c & ~0xFFFF) - return 0; - return UCS2_GET_NAMING(nmstrtPages, c >> 8, c & 0xFF); -} - -static -int unknown_isInvalid(const ENCODING *enc, const char *p) -{ - int c = ((const struct unknown_encoding *)enc) - ->convert(((const struct unknown_encoding *)enc)->userData, p); - return (c & ~0xFFFF) || checkCharRefNumber(c) < 0; -} - -static -void unknown_toUtf8(const ENCODING *enc, - const char **fromP, const char *fromLim, - char **toP, const char *toLim) -{ - char buf[XML_UTF8_ENCODE_MAX] = {0}; - for (;;) { - const char *utf8; - int n; - if (*fromP == fromLim) - break; - utf8 = ((const struct unknown_encoding *)enc)->utf8[(unsigned char)**fromP]; - n = *utf8++; - if (n == 0) { - int c = ((const struct unknown_encoding *)enc) - ->convert(((const struct unknown_encoding *)enc)->userData, *fromP); - n = XmlUtf8Encode(c, buf); - if (n > toLim - *toP) - break; - utf8 = buf; - *fromP += ((const struct normal_encoding *)enc)->type[(unsigned char)**fromP] - - (BT_LEAD2 - 2); - } - else { - if (n > toLim - *toP) - break; - (*fromP)++; - } - do { - *(*toP)++ = *utf8++; - } while (--n != 0); - } -} - -static -void unknown_toUtf16(const ENCODING *enc, - const char **fromP, const char *fromLim, - unsigned short **toP, const unsigned short *toLim) -{ - while (*fromP != fromLim && *toP != toLim) { - unsigned short c - = ((const struct unknown_encoding *)enc)->utf16[(unsigned char)**fromP]; - if (c == 0) { - c = (unsigned short)((const struct unknown_encoding *)enc) - ->convert(((const struct unknown_encoding *)enc)->userData, *fromP); - *fromP += ((const struct normal_encoding *)enc)->type[(unsigned char)**fromP] - - (BT_LEAD2 - 2); - } - else - (*fromP)++; - *(*toP)++ = c; - } -} - -ENCODING * -XmlInitUnknownEncoding(void *mem, - int *table, - int (*convert)(void *userData, const char *p), - void *userData) -{ - int i; - struct unknown_encoding *e = mem; - for (i = 0; i < (int)sizeof(struct normal_encoding); i++) - ((char *)mem)[i] = ((char *)&latin1_encoding)[i]; - for (i = 0; i < 128; i++) - if (latin1_encoding.type[i] != BT_OTHER - && latin1_encoding.type[i] != BT_NONXML - && table[i] != i) - return 0; - for (i = 0; i < 256; i++) { - int c = table[i]; - if (c == -1) { - e->normal.type[i] = BT_MALFORM; - /* This shouldn't really get used. */ - e->utf16[i] = 0xFFFF; - e->utf8[i][0] = 1; - e->utf8[i][1] = 0; - } - else if (c < 0) { - if (c < -4) - return 0; - e->normal.type[i] = BT_LEAD2 - (c + 2); - e->utf8[i][0] = 0; - e->utf16[i] = 0; - } - else if (c < 0x80) { - if (latin1_encoding.type[c] != BT_OTHER - && latin1_encoding.type[c] != BT_NONXML - && c != i) - return 0; - e->normal.type[i] = latin1_encoding.type[c]; - e->utf8[i][0] = 1; - e->utf8[i][1] = (char)c; - e->utf16[i] = c == 0 ? 0xFFFF : c; - } - else if (checkCharRefNumber(c) < 0) { - e->normal.type[i] = BT_NONXML; - /* This shouldn't really get used. */ - e->utf16[i] = 0xFFFF; - e->utf8[i][0] = 1; - e->utf8[i][1] = 0; - } - else { - if (c > 0xFFFF) - return 0; - if (UCS2_GET_NAMING(nmstrtPages, c >> 8, c & 0xff)) - e->normal.type[i] = BT_NMSTRT; - else if (UCS2_GET_NAMING(namePages, c >> 8, c & 0xff)) - e->normal.type[i] = BT_NAME; - else - e->normal.type[i] = BT_OTHER; - e->utf8[i][0] = (char)XmlUtf8Encode(c, e->utf8[i] + 1); - e->utf16[i] = c; - } - } - e->userData = userData; - e->convert = convert; - if (convert) { - e->normal.isName2 = unknown_isName; - e->normal.isName3 = unknown_isName; - e->normal.isName4 = unknown_isName; - e->normal.isNmstrt2 = unknown_isNmstrt; - e->normal.isNmstrt3 = unknown_isNmstrt; - e->normal.isNmstrt4 = unknown_isNmstrt; - e->normal.isInvalid2 = unknown_isInvalid; - e->normal.isInvalid3 = unknown_isInvalid; - e->normal.isInvalid4 = unknown_isInvalid; - } - e->normal.enc.utf8Convert = unknown_toUtf8; - e->normal.enc.utf16Convert = unknown_toUtf16; - return &(e->normal.enc); -} - -/* If this enumeration is changed, getEncodingIndex and encodings -must also be changed. */ -enum { - UNKNOWN_ENC = -1, - ISO_8859_1_ENC = 0, - US_ASCII_ENC, - UTF_8_ENC, - UTF_16_ENC, - UTF_16BE_ENC, - UTF_16LE_ENC, - /* must match encodingNames up to here */ - NO_ENC -}; - -static const char KW_ISO_8859_1[] = { - ASCII_I, ASCII_S, ASCII_O, ASCII_MINUS, ASCII_8, ASCII_8, ASCII_5, ASCII_9, ASCII_MINUS, ASCII_1, '\0' -}; -static const char KW_US_ASCII[] = { - ASCII_U, ASCII_S, ASCII_MINUS, ASCII_A, ASCII_S, ASCII_C, ASCII_I, ASCII_I, '\0' -}; -static const char KW_UTF_8[] = { - ASCII_U, ASCII_T, ASCII_F, ASCII_MINUS, ASCII_8, '\0' -}; -static const char KW_UTF_16[] = { - ASCII_U, ASCII_T, ASCII_F, ASCII_MINUS, ASCII_1, ASCII_6, '\0' -}; -static const char KW_UTF_16BE[] = { - ASCII_U, ASCII_T, ASCII_F, ASCII_MINUS, ASCII_1, ASCII_6, ASCII_B, ASCII_E, '\0' -}; -static const char KW_UTF_16LE[] = { - ASCII_U, ASCII_T, ASCII_F, ASCII_MINUS, ASCII_1, ASCII_6, ASCII_L, ASCII_E, '\0' -}; - -static -int getEncodingIndex(const char *name) -{ - static const char *encodingNames[] = { - KW_ISO_8859_1, - KW_US_ASCII, - KW_UTF_8, - KW_UTF_16, - KW_UTF_16BE, - KW_UTF_16LE, - }; - int i; - if (name == 0) - return NO_ENC; - for (i = 0; i < (int)(sizeof(encodingNames)/sizeof(encodingNames[0])); i++) - if (streqci(name, encodingNames[i])) - return i; - return UNKNOWN_ENC; -} - -/* For binary compatibility, we store the index of the encoding specified -at initialization in the isUtf16 member. */ - -#define INIT_ENC_INDEX(enc) ((int)(enc)->initEnc.isUtf16) -#define SET_INIT_ENC_INDEX(enc, i) ((enc)->initEnc.isUtf16 = (char)i) - -/* This is what detects the encoding. -encodingTable maps from encoding indices to encodings; -INIT_ENC_INDEX(enc) is the index of the external (protocol) specified encoding; -state is XML_CONTENT_STATE if we're parsing an external text entity, -and XML_PROLOG_STATE otherwise. -*/ - - -static -int initScan(const ENCODING **encodingTable, - const INIT_ENCODING *enc, - int state, - const char *ptr, - const char *end, - const char **nextTokPtr) -{ - const ENCODING **encPtr; - - if (ptr == end) - return XML_TOK_NONE; - encPtr = enc->encPtr; - if (ptr + 1 == end) { - /* only a single byte available for auto-detection */ -#ifndef XML_DTD /* FIXME */ - /* a well-formed document entity must have more than one byte */ - if (state != XML_CONTENT_STATE) - return XML_TOK_PARTIAL; -#endif - /* so we're parsing an external text entity... */ - /* if UTF-16 was externally specified, then we need at least 2 bytes */ - switch (INIT_ENC_INDEX(enc)) { - case UTF_16_ENC: - case UTF_16LE_ENC: - case UTF_16BE_ENC: - return XML_TOK_PARTIAL; - } - switch ((unsigned char)*ptr) { - case 0xFE: - case 0xFF: - case 0xEF: /* possibly first byte of UTF-8 BOM */ - if (INIT_ENC_INDEX(enc) == ISO_8859_1_ENC - && state == XML_CONTENT_STATE) - break; - /* fall through */ - case 0x00: - case 0x3C: - return XML_TOK_PARTIAL; - } - } - else { - switch (((unsigned char)ptr[0] << 8) | (unsigned char)ptr[1]) { - case 0xFEFF: - if (INIT_ENC_INDEX(enc) == ISO_8859_1_ENC - && state == XML_CONTENT_STATE) - break; - *nextTokPtr = ptr + 2; - *encPtr = encodingTable[UTF_16BE_ENC]; - return XML_TOK_BOM; - /* 00 3C is handled in the default case */ - case 0x3C00: - if ((INIT_ENC_INDEX(enc) == UTF_16BE_ENC - || INIT_ENC_INDEX(enc) == UTF_16_ENC) - && state == XML_CONTENT_STATE) - break; - *encPtr = encodingTable[UTF_16LE_ENC]; - return XmlTok(*encPtr, state, ptr, end, nextTokPtr); - case 0xFFFE: - if (INIT_ENC_INDEX(enc) == ISO_8859_1_ENC - && state == XML_CONTENT_STATE) - break; - *nextTokPtr = ptr + 2; - *encPtr = encodingTable[UTF_16LE_ENC]; - return XML_TOK_BOM; - case 0xEFBB: - /* Maybe a UTF-8 BOM (EF BB BF) */ - /* If there's an explicitly specified (external) encoding - of ISO-8859-1 or some flavour of UTF-16 - and this is an external text entity, - don't look for the BOM, - because it might be a legal data. */ - if (state == XML_CONTENT_STATE) { - int e = INIT_ENC_INDEX(enc); - if (e == ISO_8859_1_ENC || e == UTF_16BE_ENC || e == UTF_16LE_ENC || e == UTF_16_ENC) - break; - } - if (ptr + 2 == end) - return XML_TOK_PARTIAL; - if ((unsigned char)ptr[2] == 0xBF) { - *nextTokPtr = ptr + 3; - *encPtr = encodingTable[UTF_8_ENC]; - return XML_TOK_BOM; - } - break; - default: - if (ptr[0] == '\0') { - /* 0 isn't a legal data character. Furthermore a document entity can only - start with ASCII characters. So the only way this can fail to be big-endian - UTF-16 if it it's an external parsed general entity that's labelled as - UTF-16LE. */ - if (state == XML_CONTENT_STATE && INIT_ENC_INDEX(enc) == UTF_16LE_ENC) - break; - *encPtr = encodingTable[UTF_16BE_ENC]; - return XmlTok(*encPtr, state, ptr, end, nextTokPtr); - } - else if (ptr[1] == '\0') { - /* We could recover here in the case: - - parsing an external entity - - second byte is 0 - - no externally specified encoding - - no encoding declaration - by assuming UTF-16LE. But we don't, because this would mean when - presented just with a single byte, we couldn't reliably determine - whether we needed further bytes. */ - if (state == XML_CONTENT_STATE) - break; - *encPtr = encodingTable[UTF_16LE_ENC]; - return XmlTok(*encPtr, state, ptr, end, nextTokPtr); - } - break; - } - } - *encPtr = encodingTable[INIT_ENC_INDEX(enc)]; - return XmlTok(*encPtr, state, ptr, end, nextTokPtr); -} - - -#define NS(x) x -#define ns(x) x -#include "xmltok_ns.c" -#undef NS -#undef ns - -#ifdef XML_NS - -#define NS(x) x ## NS -#define ns(x) x ## _ns - -#include "xmltok_ns.c" - -#undef NS -#undef ns - -ENCODING * -XmlInitUnknownEncodingNS(void *mem, - int *table, - int (*convert)(void *userData, const char *p), - void *userData) -{ - ENCODING *enc = XmlInitUnknownEncoding(mem, table, convert, userData); - if (enc) - ((struct normal_encoding *)enc)->type[ASCII_COLON] = BT_COLON; - return enc; -} - -#endif /* XML_NS */ diff --git a/libs/apr-util/xml/expat/lib/xmltok.h b/libs/apr-util/xml/expat/lib/xmltok.h deleted file mode 100644 index 8b02324c387..00000000000 --- a/libs/apr-util/xml/expat/lib/xmltok.h +++ /dev/null @@ -1,299 +0,0 @@ -/* -Copyright (c) 1998, 1999 Thai Open Source Software Center Ltd -See the file COPYING for copying permission. -*/ - -#ifndef XmlTok_INCLUDED -#define XmlTok_INCLUDED 1 - -#ifdef __cplusplus -extern "C" { -#endif - -/* The following token may be returned by XmlContentTok */ -#define XML_TOK_TRAILING_RSQB -5 /* ] or ]] at the end of the scan; might be start of - illegal ]]> sequence */ -/* The following tokens may be returned by both XmlPrologTok and XmlContentTok */ -#define XML_TOK_NONE -4 /* The string to be scanned is empty */ -#define XML_TOK_TRAILING_CR -3 /* A CR at the end of the scan; - might be part of CRLF sequence */ -#define XML_TOK_PARTIAL_CHAR -2 /* only part of a multibyte sequence */ -#define XML_TOK_PARTIAL -1 /* only part of a token */ -#define XML_TOK_INVALID 0 - -/* The following tokens are returned by XmlContentTok; some are also - returned by XmlAttributeValueTok, XmlEntityTok, XmlCdataSectionTok */ - -#define XML_TOK_START_TAG_WITH_ATTS 1 -#define XML_TOK_START_TAG_NO_ATTS 2 -#define XML_TOK_EMPTY_ELEMENT_WITH_ATTS 3 /* empty element tag */ -#define XML_TOK_EMPTY_ELEMENT_NO_ATTS 4 -#define XML_TOK_END_TAG 5 -#define XML_TOK_DATA_CHARS 6 -#define XML_TOK_DATA_NEWLINE 7 -#define XML_TOK_CDATA_SECT_OPEN 8 -#define XML_TOK_ENTITY_REF 9 -#define XML_TOK_CHAR_REF 10 /* numeric character reference */ - -/* The following tokens may be returned by both XmlPrologTok and XmlContentTok */ -#define XML_TOK_PI 11 /* processing instruction */ -#define XML_TOK_XML_DECL 12 /* XML decl or text decl */ -#define XML_TOK_COMMENT 13 -#define XML_TOK_BOM 14 /* Byte order mark */ - -/* The following tokens are returned only by XmlPrologTok */ -#define XML_TOK_PROLOG_S 15 -#define XML_TOK_DECL_OPEN 16 /* */ -#define XML_TOK_NAME 18 -#define XML_TOK_NMTOKEN 19 -#define XML_TOK_POUND_NAME 20 /* #name */ -#define XML_TOK_OR 21 /* | */ -#define XML_TOK_PERCENT 22 -#define XML_TOK_OPEN_PAREN 23 -#define XML_TOK_CLOSE_PAREN 24 -#define XML_TOK_OPEN_BRACKET 25 -#define XML_TOK_CLOSE_BRACKET 26 -#define XML_TOK_LITERAL 27 -#define XML_TOK_PARAM_ENTITY_REF 28 -#define XML_TOK_INSTANCE_START 29 - -/* The following occur only in element type declarations */ -#define XML_TOK_NAME_QUESTION 30 /* name? */ -#define XML_TOK_NAME_ASTERISK 31 /* name* */ -#define XML_TOK_NAME_PLUS 32 /* name+ */ -#define XML_TOK_COND_SECT_OPEN 33 /* */ -#define XML_TOK_CLOSE_PAREN_QUESTION 35 /* )? */ -#define XML_TOK_CLOSE_PAREN_ASTERISK 36 /* )* */ -#define XML_TOK_CLOSE_PAREN_PLUS 37 /* )+ */ -#define XML_TOK_COMMA 38 - -/* The following token is returned only by XmlAttributeValueTok */ -#define XML_TOK_ATTRIBUTE_VALUE_S 39 - -/* The following token is returned only by XmlCdataSectionTok */ -#define XML_TOK_CDATA_SECT_CLOSE 40 - -/* With namespace processing this is returned by XmlPrologTok - for a name with a colon. */ -#define XML_TOK_PREFIXED_NAME 41 - -#ifdef XML_DTD -#define XML_TOK_IGNORE_SECT 42 -#endif /* XML_DTD */ - -#ifdef XML_DTD -#define XML_N_STATES 4 -#else /* not XML_DTD */ -#define XML_N_STATES 3 -#endif /* not XML_DTD */ - -#define XML_PROLOG_STATE 0 -#define XML_CONTENT_STATE 1 -#define XML_CDATA_SECTION_STATE 2 -#ifdef XML_DTD -#define XML_IGNORE_SECTION_STATE 3 -#endif /* XML_DTD */ - -#define XML_N_LITERAL_TYPES 2 -#define XML_ATTRIBUTE_VALUE_LITERAL 0 -#define XML_ENTITY_VALUE_LITERAL 1 - -/* The size of the buffer passed to XmlUtf8Encode must be at least this. */ -#define XML_UTF8_ENCODE_MAX 4 -/* The size of the buffer passed to XmlUtf16Encode must be at least this. */ -#define XML_UTF16_ENCODE_MAX 2 - -typedef struct position { - /* first line and first column are 0 not 1 */ - unsigned long lineNumber; - unsigned long columnNumber; -} POSITION; - -typedef struct { - const char *name; - const char *valuePtr; - const char *valueEnd; - char normalized; -} ATTRIBUTE; - -struct encoding; -typedef struct encoding ENCODING; - -struct encoding { - int (*scanners[XML_N_STATES])(const ENCODING *, - const char *, - const char *, - const char **); - int (*literalScanners[XML_N_LITERAL_TYPES])(const ENCODING *, - const char *, - const char *, - const char **); - int (*sameName)(const ENCODING *, - const char *, const char *); - int (*nameMatchesAscii)(const ENCODING *, - const char *, const char *, const char *); - int (*nameLength)(const ENCODING *, const char *); - const char *(*skipS)(const ENCODING *, const char *); - int (*getAtts)(const ENCODING *enc, const char *ptr, - int attsMax, ATTRIBUTE *atts); - int (*charRefNumber)(const ENCODING *enc, const char *ptr); - int (*predefinedEntityName)(const ENCODING *, const char *, const char *); - void (*updatePosition)(const ENCODING *, - const char *ptr, - const char *end, - POSITION *); - int (*isPublicId)(const ENCODING *enc, const char *ptr, const char *end, - const char **badPtr); - void (*utf8Convert)(const ENCODING *enc, - const char **fromP, - const char *fromLim, - char **toP, - const char *toLim); - void (*utf16Convert)(const ENCODING *enc, - const char **fromP, - const char *fromLim, - unsigned short **toP, - const unsigned short *toLim); - int minBytesPerChar; - char isUtf8; - char isUtf16; -}; - -/* -Scan the string starting at ptr until the end of the next complete token, -but do not scan past eptr. Return an integer giving the type of token. - -Return XML_TOK_NONE when ptr == eptr; nextTokPtr will not be set. - -Return XML_TOK_PARTIAL when the string does not contain a complete token; -nextTokPtr will not be set. - -Return XML_TOK_INVALID when the string does not start a valid token; nextTokPtr -will be set to point to the character which made the token invalid. - -Otherwise the string starts with a valid token; nextTokPtr will be set to point -to the character following the end of that token. - -Each data character counts as a single token, but adjacent data characters -may be returned together. Similarly for characters in the prolog outside -literals, comments and processing instructions. -*/ - - -#define XmlTok(enc, state, ptr, end, nextTokPtr) \ - (((enc)->scanners[state])(enc, ptr, end, nextTokPtr)) - -#define XmlPrologTok(enc, ptr, end, nextTokPtr) \ - XmlTok(enc, XML_PROLOG_STATE, ptr, end, nextTokPtr) - -#define XmlContentTok(enc, ptr, end, nextTokPtr) \ - XmlTok(enc, XML_CONTENT_STATE, ptr, end, nextTokPtr) - -#define XmlCdataSectionTok(enc, ptr, end, nextTokPtr) \ - XmlTok(enc, XML_CDATA_SECTION_STATE, ptr, end, nextTokPtr) - -#ifdef XML_DTD - -#define XmlIgnoreSectionTok(enc, ptr, end, nextTokPtr) \ - XmlTok(enc, XML_IGNORE_SECTION_STATE, ptr, end, nextTokPtr) - -#endif /* XML_DTD */ - -/* This is used for performing a 2nd-level tokenization on -the content of a literal that has already been returned by XmlTok. */ - -#define XmlLiteralTok(enc, literalType, ptr, end, nextTokPtr) \ - (((enc)->literalScanners[literalType])(enc, ptr, end, nextTokPtr)) - -#define XmlAttributeValueTok(enc, ptr, end, nextTokPtr) \ - XmlLiteralTok(enc, XML_ATTRIBUTE_VALUE_LITERAL, ptr, end, nextTokPtr) - -#define XmlEntityValueTok(enc, ptr, end, nextTokPtr) \ - XmlLiteralTok(enc, XML_ENTITY_VALUE_LITERAL, ptr, end, nextTokPtr) - -#define XmlSameName(enc, ptr1, ptr2) (((enc)->sameName)(enc, ptr1, ptr2)) - -#define XmlNameMatchesAscii(enc, ptr1, end1, ptr2) \ - (((enc)->nameMatchesAscii)(enc, ptr1, end1, ptr2)) - -#define XmlNameLength(enc, ptr) \ - (((enc)->nameLength)(enc, ptr)) - -#define XmlSkipS(enc, ptr) \ - (((enc)->skipS)(enc, ptr)) - -#define XmlGetAttributes(enc, ptr, attsMax, atts) \ - (((enc)->getAtts)(enc, ptr, attsMax, atts)) - -#define XmlCharRefNumber(enc, ptr) \ - (((enc)->charRefNumber)(enc, ptr)) - -#define XmlPredefinedEntityName(enc, ptr, end) \ - (((enc)->predefinedEntityName)(enc, ptr, end)) - -#define XmlUpdatePosition(enc, ptr, end, pos) \ - (((enc)->updatePosition)(enc, ptr, end, pos)) - -#define XmlIsPublicId(enc, ptr, end, badPtr) \ - (((enc)->isPublicId)(enc, ptr, end, badPtr)) - -#define XmlUtf8Convert(enc, fromP, fromLim, toP, toLim) \ - (((enc)->utf8Convert)(enc, fromP, fromLim, toP, toLim)) - -#define XmlUtf16Convert(enc, fromP, fromLim, toP, toLim) \ - (((enc)->utf16Convert)(enc, fromP, fromLim, toP, toLim)) - -typedef struct { - ENCODING initEnc; - const ENCODING **encPtr; -} INIT_ENCODING; - -int XmlParseXmlDecl(int isGeneralTextEntity, - const ENCODING *enc, - const char *ptr, - const char *end, - const char **badPtr, - const char **versionPtr, - const char **versionEndPtr, - const char **encodingNamePtr, - const ENCODING **namedEncodingPtr, - int *standalonePtr); - -int XmlInitEncoding(INIT_ENCODING *, const ENCODING **, const char *name); -const ENCODING *XmlGetUtf8InternalEncoding(void); -const ENCODING *XmlGetUtf16InternalEncoding(void); -int XmlUtf8Encode(int charNumber, char *buf); -int XmlUtf16Encode(int charNumber, unsigned short *buf); - -int XmlSizeOfUnknownEncoding(void); -ENCODING * -XmlInitUnknownEncoding(void *mem, - int *table, - int (*conv)(void *userData, const char *p), - void *userData); - -int XmlParseXmlDeclNS(int isGeneralTextEntity, - const ENCODING *enc, - const char *ptr, - const char *end, - const char **badPtr, - const char **versionPtr, - const char **versionEndPtr, - const char **encodingNamePtr, - const ENCODING **namedEncodingPtr, - int *standalonePtr); -int XmlInitEncodingNS(INIT_ENCODING *, const ENCODING **, const char *name); -const ENCODING *XmlGetUtf8InternalEncodingNS(void); -const ENCODING *XmlGetUtf16InternalEncodingNS(void); -ENCODING * -XmlInitUnknownEncodingNS(void *mem, - int *table, - int (*conv)(void *userData, const char *p), - void *userData); -#ifdef __cplusplus -} -#endif - -#endif /* not XmlTok_INCLUDED */ diff --git a/libs/apr-util/xml/expat/lib/xmltok_impl.c b/libs/apr-util/xml/expat/lib/xmltok_impl.c deleted file mode 100644 index 36d2065ce36..00000000000 --- a/libs/apr-util/xml/expat/lib/xmltok_impl.c +++ /dev/null @@ -1,1768 +0,0 @@ -/* -Copyright (c) 1998, 1999 Thai Open Source Software Center Ltd -See the file COPYING for copying permission. -*/ - -#ifndef IS_INVALID_CHAR -#define IS_INVALID_CHAR(enc, ptr, n) (0) -#endif - -#define INVALID_LEAD_CASE(n, ptr, nextTokPtr) \ - case BT_LEAD ## n: \ - if (end - ptr < n) \ - return XML_TOK_PARTIAL_CHAR; \ - if (IS_INVALID_CHAR(enc, ptr, n)) { \ - *(nextTokPtr) = (ptr); \ - return XML_TOK_INVALID; \ - } \ - ptr += n; \ - break; - -#define INVALID_CASES(ptr, nextTokPtr) \ - INVALID_LEAD_CASE(2, ptr, nextTokPtr) \ - INVALID_LEAD_CASE(3, ptr, nextTokPtr) \ - INVALID_LEAD_CASE(4, ptr, nextTokPtr) \ - case BT_NONXML: \ - case BT_MALFORM: \ - case BT_TRAIL: \ - *(nextTokPtr) = (ptr); \ - return XML_TOK_INVALID; - -#define CHECK_NAME_CASE(n, enc, ptr, end, nextTokPtr) \ - case BT_LEAD ## n: \ - if (end - ptr < n) \ - return XML_TOK_PARTIAL_CHAR; \ - if (!IS_NAME_CHAR(enc, ptr, n)) { \ - *nextTokPtr = ptr; \ - return XML_TOK_INVALID; \ - } \ - ptr += n; \ - break; - -#define CHECK_NAME_CASES(enc, ptr, end, nextTokPtr) \ - case BT_NONASCII: \ - if (!IS_NAME_CHAR_MINBPC(enc, ptr)) { \ - *nextTokPtr = ptr; \ - return XML_TOK_INVALID; \ - } \ - case BT_NMSTRT: \ - case BT_HEX: \ - case BT_DIGIT: \ - case BT_NAME: \ - case BT_MINUS: \ - ptr += MINBPC(enc); \ - break; \ - CHECK_NAME_CASE(2, enc, ptr, end, nextTokPtr) \ - CHECK_NAME_CASE(3, enc, ptr, end, nextTokPtr) \ - CHECK_NAME_CASE(4, enc, ptr, end, nextTokPtr) - -#define CHECK_NMSTRT_CASE(n, enc, ptr, end, nextTokPtr) \ - case BT_LEAD ## n: \ - if (end - ptr < n) \ - return XML_TOK_PARTIAL_CHAR; \ - if (!IS_NMSTRT_CHAR(enc, ptr, n)) { \ - *nextTokPtr = ptr; \ - return XML_TOK_INVALID; \ - } \ - ptr += n; \ - break; - -#define CHECK_NMSTRT_CASES(enc, ptr, end, nextTokPtr) \ - case BT_NONASCII: \ - if (!IS_NMSTRT_CHAR_MINBPC(enc, ptr)) { \ - *nextTokPtr = ptr; \ - return XML_TOK_INVALID; \ - } \ - case BT_NMSTRT: \ - case BT_HEX: \ - ptr += MINBPC(enc); \ - break; \ - CHECK_NMSTRT_CASE(2, enc, ptr, end, nextTokPtr) \ - CHECK_NMSTRT_CASE(3, enc, ptr, end, nextTokPtr) \ - CHECK_NMSTRT_CASE(4, enc, ptr, end, nextTokPtr) - -#ifndef PREFIX -#define PREFIX(ident) ident -#endif - -/* ptr points to character following " */ - switch (BYTE_TYPE(enc, ptr + MINBPC(enc))) { - case BT_S: case BT_CR: case BT_LF: case BT_PERCNT: - *nextTokPtr = ptr; - return XML_TOK_INVALID; - } - /* fall through */ - case BT_S: case BT_CR: case BT_LF: - *nextTokPtr = ptr; - return XML_TOK_DECL_OPEN; - case BT_NMSTRT: - case BT_HEX: - ptr += MINBPC(enc); - break; - default: - *nextTokPtr = ptr; - return XML_TOK_INVALID; - } - } - return XML_TOK_PARTIAL; -} - -static -int PREFIX(checkPiTarget)(const ENCODING *enc, const char *ptr, const char *end, int *tokPtr) -{ - int upper = 0; - *tokPtr = XML_TOK_PI; - if (end - ptr != MINBPC(enc)*3) - return 1; - switch (BYTE_TO_ASCII(enc, ptr)) { - case ASCII_x: - break; - case ASCII_X: - upper = 1; - break; - default: - return 1; - } - ptr += MINBPC(enc); - switch (BYTE_TO_ASCII(enc, ptr)) { - case ASCII_m: - break; - case ASCII_M: - upper = 1; - break; - default: - return 1; - } - ptr += MINBPC(enc); - switch (BYTE_TO_ASCII(enc, ptr)) { - case ASCII_l: - break; - case ASCII_L: - upper = 1; - break; - default: - return 1; - } - if (upper) - return 0; - *tokPtr = XML_TOK_XML_DECL; - return 1; -} - -/* ptr points to character following " 1) { - size_t n = end - ptr; - if (n & (MINBPC(enc) - 1)) { - n &= ~(MINBPC(enc) - 1); - if (n == 0) - return XML_TOK_PARTIAL; - end = ptr + n; - } - } - switch (BYTE_TYPE(enc, ptr)) { - case BT_RSQB: - ptr += MINBPC(enc); - if (ptr == end) - return XML_TOK_PARTIAL; - if (!CHAR_MATCHES(enc, ptr, ASCII_RSQB)) - break; - ptr += MINBPC(enc); - if (ptr == end) - return XML_TOK_PARTIAL; - if (!CHAR_MATCHES(enc, ptr, ASCII_GT)) { - ptr -= MINBPC(enc); - break; - } - *nextTokPtr = ptr + MINBPC(enc); - return XML_TOK_CDATA_SECT_CLOSE; - case BT_CR: - ptr += MINBPC(enc); - if (ptr == end) - return XML_TOK_PARTIAL; - if (BYTE_TYPE(enc, ptr) == BT_LF) - ptr += MINBPC(enc); - *nextTokPtr = ptr; - return XML_TOK_DATA_NEWLINE; - case BT_LF: - *nextTokPtr = ptr + MINBPC(enc); - return XML_TOK_DATA_NEWLINE; - INVALID_CASES(ptr, nextTokPtr) - default: - ptr += MINBPC(enc); - break; - } - while (ptr != end) { - switch (BYTE_TYPE(enc, ptr)) { -#define LEAD_CASE(n) \ - case BT_LEAD ## n: \ - if (end - ptr < n || IS_INVALID_CHAR(enc, ptr, n)) { \ - *nextTokPtr = ptr; \ - return XML_TOK_DATA_CHARS; \ - } \ - ptr += n; \ - break; - LEAD_CASE(2) LEAD_CASE(3) LEAD_CASE(4) -#undef LEAD_CASE - case BT_NONXML: - case BT_MALFORM: - case BT_TRAIL: - case BT_CR: - case BT_LF: - case BT_RSQB: - *nextTokPtr = ptr; - return XML_TOK_DATA_CHARS; - default: - ptr += MINBPC(enc); - break; - } - } - *nextTokPtr = ptr; - return XML_TOK_DATA_CHARS; -} - -/* ptr points to character following " 1) { - size_t n = end - ptr; - if (n & (MINBPC(enc) - 1)) { - n &= ~(MINBPC(enc) - 1); - if (n == 0) - return XML_TOK_PARTIAL; - end = ptr + n; - } - } - switch (BYTE_TYPE(enc, ptr)) { - case BT_LT: - return PREFIX(scanLt)(enc, ptr + MINBPC(enc), end, nextTokPtr); - case BT_AMP: - return PREFIX(scanRef)(enc, ptr + MINBPC(enc), end, nextTokPtr); - case BT_CR: - ptr += MINBPC(enc); - if (ptr == end) - return XML_TOK_TRAILING_CR; - if (BYTE_TYPE(enc, ptr) == BT_LF) - ptr += MINBPC(enc); - *nextTokPtr = ptr; - return XML_TOK_DATA_NEWLINE; - case BT_LF: - *nextTokPtr = ptr + MINBPC(enc); - return XML_TOK_DATA_NEWLINE; - case BT_RSQB: - ptr += MINBPC(enc); - if (ptr == end) - return XML_TOK_TRAILING_RSQB; - if (!CHAR_MATCHES(enc, ptr, ASCII_RSQB)) - break; - ptr += MINBPC(enc); - if (ptr == end) - return XML_TOK_TRAILING_RSQB; - if (!CHAR_MATCHES(enc, ptr, ASCII_GT)) { - ptr -= MINBPC(enc); - break; - } - *nextTokPtr = ptr; - return XML_TOK_INVALID; - INVALID_CASES(ptr, nextTokPtr) - default: - ptr += MINBPC(enc); - break; - } - while (ptr != end) { - switch (BYTE_TYPE(enc, ptr)) { -#define LEAD_CASE(n) \ - case BT_LEAD ## n: \ - if (end - ptr < n || IS_INVALID_CHAR(enc, ptr, n)) { \ - *nextTokPtr = ptr; \ - return XML_TOK_DATA_CHARS; \ - } \ - ptr += n; \ - break; - LEAD_CASE(2) LEAD_CASE(3) LEAD_CASE(4) -#undef LEAD_CASE - case BT_RSQB: - if (ptr + MINBPC(enc) != end) { - if (!CHAR_MATCHES(enc, ptr + MINBPC(enc), ASCII_RSQB)) { - ptr += MINBPC(enc); - break; - } - if (ptr + 2*MINBPC(enc) != end) { - if (!CHAR_MATCHES(enc, ptr + 2*MINBPC(enc), ASCII_GT)) { - ptr += MINBPC(enc); - break; - } - *nextTokPtr = ptr + 2*MINBPC(enc); - return XML_TOK_INVALID; - } - } - /* fall through */ - case BT_AMP: - case BT_LT: - case BT_NONXML: - case BT_MALFORM: - case BT_TRAIL: - case BT_CR: - case BT_LF: - *nextTokPtr = ptr; - return XML_TOK_DATA_CHARS; - default: - ptr += MINBPC(enc); - break; - } - } - *nextTokPtr = ptr; - return XML_TOK_DATA_CHARS; -} - -/* ptr points to character following "%" */ - -static -int PREFIX(scanPercent)(const ENCODING *enc, const char *ptr, const char *end, - const char **nextTokPtr) -{ - if (ptr == end) - return XML_TOK_PARTIAL; - switch (BYTE_TYPE(enc, ptr)) { - CHECK_NMSTRT_CASES(enc, ptr, end, nextTokPtr) - case BT_S: case BT_LF: case BT_CR: case BT_PERCNT: - *nextTokPtr = ptr; - return XML_TOK_PERCENT; - default: - *nextTokPtr = ptr; - return XML_TOK_INVALID; - } - while (ptr != end) { - switch (BYTE_TYPE(enc, ptr)) { - CHECK_NAME_CASES(enc, ptr, end, nextTokPtr) - case BT_SEMI: - *nextTokPtr = ptr + MINBPC(enc); - return XML_TOK_PARAM_ENTITY_REF; - default: - *nextTokPtr = ptr; - return XML_TOK_INVALID; - } - } - return XML_TOK_PARTIAL; -} - -static -int PREFIX(scanPoundName)(const ENCODING *enc, const char *ptr, const char *end, - const char **nextTokPtr) -{ - if (ptr == end) - return XML_TOK_PARTIAL; - switch (BYTE_TYPE(enc, ptr)) { - CHECK_NMSTRT_CASES(enc, ptr, end, nextTokPtr) - default: - *nextTokPtr = ptr; - return XML_TOK_INVALID; - } - while (ptr != end) { - switch (BYTE_TYPE(enc, ptr)) { - CHECK_NAME_CASES(enc, ptr, end, nextTokPtr) - case BT_CR: case BT_LF: case BT_S: - case BT_RPAR: case BT_GT: case BT_PERCNT: case BT_VERBAR: - *nextTokPtr = ptr; - return XML_TOK_POUND_NAME; - default: - *nextTokPtr = ptr; - return XML_TOK_INVALID; - } - } - return -XML_TOK_POUND_NAME; -} - -static -int PREFIX(scanLit)(int open, const ENCODING *enc, - const char *ptr, const char *end, - const char **nextTokPtr) -{ - while (ptr != end) { - int t = BYTE_TYPE(enc, ptr); - switch (t) { - INVALID_CASES(ptr, nextTokPtr) - case BT_QUOT: - case BT_APOS: - ptr += MINBPC(enc); - if (t != open) - break; - if (ptr == end) - return -XML_TOK_LITERAL; - *nextTokPtr = ptr; - switch (BYTE_TYPE(enc, ptr)) { - case BT_S: case BT_CR: case BT_LF: - case BT_GT: case BT_PERCNT: case BT_LSQB: - return XML_TOK_LITERAL; - default: - return XML_TOK_INVALID; - } - default: - ptr += MINBPC(enc); - break; - } - } - return XML_TOK_PARTIAL; -} - -static -int PREFIX(prologTok)(const ENCODING *enc, const char *ptr, const char *end, - const char **nextTokPtr) -{ - int tok; - if (ptr == end) - return XML_TOK_NONE; - if (MINBPC(enc) > 1) { - size_t n = end - ptr; - if (n & (MINBPC(enc) - 1)) { - n &= ~(MINBPC(enc) - 1); - if (n == 0) - return XML_TOK_PARTIAL; - end = ptr + n; - } - } - switch (BYTE_TYPE(enc, ptr)) { - case BT_QUOT: - return PREFIX(scanLit)(BT_QUOT, enc, ptr + MINBPC(enc), end, nextTokPtr); - case BT_APOS: - return PREFIX(scanLit)(BT_APOS, enc, ptr + MINBPC(enc), end, nextTokPtr); - case BT_LT: - { - ptr += MINBPC(enc); - if (ptr == end) - return XML_TOK_PARTIAL; - switch (BYTE_TYPE(enc, ptr)) { - case BT_EXCL: - return PREFIX(scanDecl)(enc, ptr + MINBPC(enc), end, nextTokPtr); - case BT_QUEST: - return PREFIX(scanPi)(enc, ptr + MINBPC(enc), end, nextTokPtr); - case BT_NMSTRT: - case BT_HEX: - case BT_NONASCII: - case BT_LEAD2: - case BT_LEAD3: - case BT_LEAD4: - *nextTokPtr = ptr - MINBPC(enc); - return XML_TOK_INSTANCE_START; - } - *nextTokPtr = ptr; - return XML_TOK_INVALID; - } - case BT_CR: - if (ptr + MINBPC(enc) == end) - return -XML_TOK_PROLOG_S; - /* fall through */ - case BT_S: case BT_LF: - for (;;) { - ptr += MINBPC(enc); - if (ptr == end) - break; - switch (BYTE_TYPE(enc, ptr)) { - case BT_S: case BT_LF: - break; - case BT_CR: - /* don't split CR/LF pair */ - if (ptr + MINBPC(enc) != end) - break; - /* fall through */ - default: - *nextTokPtr = ptr; - return XML_TOK_PROLOG_S; - } - } - *nextTokPtr = ptr; - return XML_TOK_PROLOG_S; - case BT_PERCNT: - return PREFIX(scanPercent)(enc, ptr + MINBPC(enc), end, nextTokPtr); - case BT_COMMA: - *nextTokPtr = ptr + MINBPC(enc); - return XML_TOK_COMMA; - case BT_LSQB: - *nextTokPtr = ptr + MINBPC(enc); - return XML_TOK_OPEN_BRACKET; - case BT_RSQB: - ptr += MINBPC(enc); - if (ptr == end) - return -XML_TOK_CLOSE_BRACKET; - if (CHAR_MATCHES(enc, ptr, ASCII_RSQB)) { - if (ptr + MINBPC(enc) == end) - return XML_TOK_PARTIAL; - if (CHAR_MATCHES(enc, ptr + MINBPC(enc), ASCII_GT)) { - *nextTokPtr = ptr + 2*MINBPC(enc); - return XML_TOK_COND_SECT_CLOSE; - } - } - *nextTokPtr = ptr; - return XML_TOK_CLOSE_BRACKET; - case BT_LPAR: - *nextTokPtr = ptr + MINBPC(enc); - return XML_TOK_OPEN_PAREN; - case BT_RPAR: - ptr += MINBPC(enc); - if (ptr == end) - return -XML_TOK_CLOSE_PAREN; - switch (BYTE_TYPE(enc, ptr)) { - case BT_AST: - *nextTokPtr = ptr + MINBPC(enc); - return XML_TOK_CLOSE_PAREN_ASTERISK; - case BT_QUEST: - *nextTokPtr = ptr + MINBPC(enc); - return XML_TOK_CLOSE_PAREN_QUESTION; - case BT_PLUS: - *nextTokPtr = ptr + MINBPC(enc); - return XML_TOK_CLOSE_PAREN_PLUS; - case BT_CR: case BT_LF: case BT_S: - case BT_GT: case BT_COMMA: case BT_VERBAR: - case BT_RPAR: - *nextTokPtr = ptr; - return XML_TOK_CLOSE_PAREN; - } - *nextTokPtr = ptr; - return XML_TOK_INVALID; - case BT_VERBAR: - *nextTokPtr = ptr + MINBPC(enc); - return XML_TOK_OR; - case BT_GT: - *nextTokPtr = ptr + MINBPC(enc); - return XML_TOK_DECL_CLOSE; - case BT_NUM: - return PREFIX(scanPoundName)(enc, ptr + MINBPC(enc), end, nextTokPtr); -#define LEAD_CASE(n) \ - case BT_LEAD ## n: \ - if (end - ptr < n) \ - return XML_TOK_PARTIAL_CHAR; \ - if (IS_NMSTRT_CHAR(enc, ptr, n)) { \ - ptr += n; \ - tok = XML_TOK_NAME; \ - break; \ - } \ - if (IS_NAME_CHAR(enc, ptr, n)) { \ - ptr += n; \ - tok = XML_TOK_NMTOKEN; \ - break; \ - } \ - *nextTokPtr = ptr; \ - return XML_TOK_INVALID; - LEAD_CASE(2) LEAD_CASE(3) LEAD_CASE(4) -#undef LEAD_CASE - case BT_NMSTRT: - case BT_HEX: - tok = XML_TOK_NAME; - ptr += MINBPC(enc); - break; - case BT_DIGIT: - case BT_NAME: - case BT_MINUS: -#ifdef XML_NS - case BT_COLON: -#endif - tok = XML_TOK_NMTOKEN; - ptr += MINBPC(enc); - break; - case BT_NONASCII: - if (IS_NMSTRT_CHAR_MINBPC(enc, ptr)) { - ptr += MINBPC(enc); - tok = XML_TOK_NAME; - break; - } - if (IS_NAME_CHAR_MINBPC(enc, ptr)) { - ptr += MINBPC(enc); - tok = XML_TOK_NMTOKEN; - break; - } - /* fall through */ - default: - *nextTokPtr = ptr; - return XML_TOK_INVALID; - } - while (ptr != end) { - switch (BYTE_TYPE(enc, ptr)) { - CHECK_NAME_CASES(enc, ptr, end, nextTokPtr) - case BT_GT: case BT_RPAR: case BT_COMMA: - case BT_VERBAR: case BT_LSQB: case BT_PERCNT: - case BT_S: case BT_CR: case BT_LF: - *nextTokPtr = ptr; - return tok; -#ifdef XML_NS - case BT_COLON: - ptr += MINBPC(enc); - switch (tok) { - case XML_TOK_NAME: - if (ptr == end) - return XML_TOK_PARTIAL; - tok = XML_TOK_PREFIXED_NAME; - switch (BYTE_TYPE(enc, ptr)) { - CHECK_NAME_CASES(enc, ptr, end, nextTokPtr) - default: - tok = XML_TOK_NMTOKEN; - break; - } - break; - case XML_TOK_PREFIXED_NAME: - tok = XML_TOK_NMTOKEN; - break; - } - break; -#endif - case BT_PLUS: - if (tok == XML_TOK_NMTOKEN) { - *nextTokPtr = ptr; - return XML_TOK_INVALID; - } - *nextTokPtr = ptr + MINBPC(enc); - return XML_TOK_NAME_PLUS; - case BT_AST: - if (tok == XML_TOK_NMTOKEN) { - *nextTokPtr = ptr; - return XML_TOK_INVALID; - } - *nextTokPtr = ptr + MINBPC(enc); - return XML_TOK_NAME_ASTERISK; - case BT_QUEST: - if (tok == XML_TOK_NMTOKEN) { - *nextTokPtr = ptr; - return XML_TOK_INVALID; - } - *nextTokPtr = ptr + MINBPC(enc); - return XML_TOK_NAME_QUESTION; - default: - *nextTokPtr = ptr; - return XML_TOK_INVALID; - } - } - return -tok; -} - -static -int PREFIX(attributeValueTok)(const ENCODING *enc, const char *ptr, const char *end, - const char **nextTokPtr) -{ - const char *start; - if (ptr == end) - return XML_TOK_NONE; - start = ptr; - while (ptr != end) { - switch (BYTE_TYPE(enc, ptr)) { -#define LEAD_CASE(n) \ - case BT_LEAD ## n: ptr += n; break; - LEAD_CASE(2) LEAD_CASE(3) LEAD_CASE(4) -#undef LEAD_CASE - case BT_AMP: - if (ptr == start) - return PREFIX(scanRef)(enc, ptr + MINBPC(enc), end, nextTokPtr); - *nextTokPtr = ptr; - return XML_TOK_DATA_CHARS; - case BT_LT: - /* this is for inside entity references */ - *nextTokPtr = ptr; - return XML_TOK_INVALID; - case BT_LF: - if (ptr == start) { - *nextTokPtr = ptr + MINBPC(enc); - return XML_TOK_DATA_NEWLINE; - } - *nextTokPtr = ptr; - return XML_TOK_DATA_CHARS; - case BT_CR: - if (ptr == start) { - ptr += MINBPC(enc); - if (ptr == end) - return XML_TOK_TRAILING_CR; - if (BYTE_TYPE(enc, ptr) == BT_LF) - ptr += MINBPC(enc); - *nextTokPtr = ptr; - return XML_TOK_DATA_NEWLINE; - } - *nextTokPtr = ptr; - return XML_TOK_DATA_CHARS; - case BT_S: - if (ptr == start) { - *nextTokPtr = ptr + MINBPC(enc); - return XML_TOK_ATTRIBUTE_VALUE_S; - } - *nextTokPtr = ptr; - return XML_TOK_DATA_CHARS; - default: - ptr += MINBPC(enc); - break; - } - } - *nextTokPtr = ptr; - return XML_TOK_DATA_CHARS; -} - -static -int PREFIX(entityValueTok)(const ENCODING *enc, const char *ptr, const char *end, - const char **nextTokPtr) -{ - const char *start; - if (ptr == end) - return XML_TOK_NONE; - start = ptr; - while (ptr != end) { - switch (BYTE_TYPE(enc, ptr)) { -#define LEAD_CASE(n) \ - case BT_LEAD ## n: ptr += n; break; - LEAD_CASE(2) LEAD_CASE(3) LEAD_CASE(4) -#undef LEAD_CASE - case BT_AMP: - if (ptr == start) - return PREFIX(scanRef)(enc, ptr + MINBPC(enc), end, nextTokPtr); - *nextTokPtr = ptr; - return XML_TOK_DATA_CHARS; - case BT_PERCNT: - if (ptr == start) { - int tok = PREFIX(scanPercent)(enc, ptr + MINBPC(enc), - end, nextTokPtr); - return (tok == XML_TOK_PERCENT) ? XML_TOK_INVALID : tok; - } - *nextTokPtr = ptr; - return XML_TOK_DATA_CHARS; - case BT_LF: - if (ptr == start) { - *nextTokPtr = ptr + MINBPC(enc); - return XML_TOK_DATA_NEWLINE; - } - *nextTokPtr = ptr; - return XML_TOK_DATA_CHARS; - case BT_CR: - if (ptr == start) { - ptr += MINBPC(enc); - if (ptr == end) - return XML_TOK_TRAILING_CR; - if (BYTE_TYPE(enc, ptr) == BT_LF) - ptr += MINBPC(enc); - *nextTokPtr = ptr; - return XML_TOK_DATA_NEWLINE; - } - *nextTokPtr = ptr; - return XML_TOK_DATA_CHARS; - default: - ptr += MINBPC(enc); - break; - } - } - *nextTokPtr = ptr; - return XML_TOK_DATA_CHARS; -} - -#ifdef XML_DTD - -static -int PREFIX(ignoreSectionTok)(const ENCODING *enc, const char *ptr, const char *end, - const char **nextTokPtr) -{ - int level = 0; - if (MINBPC(enc) > 1) { - size_t n = end - ptr; - if (n & (MINBPC(enc) - 1)) { - n &= ~(MINBPC(enc) - 1); - end = ptr + n; - } - } - while (ptr != end) { - switch (BYTE_TYPE(enc, ptr)) { - INVALID_CASES(ptr, nextTokPtr) - case BT_LT: - if ((ptr += MINBPC(enc)) == end) - return XML_TOK_PARTIAL; - if (CHAR_MATCHES(enc, ptr, ASCII_EXCL)) { - if ((ptr += MINBPC(enc)) == end) - return XML_TOK_PARTIAL; - if (CHAR_MATCHES(enc, ptr, ASCII_LSQB)) { - ++level; - ptr += MINBPC(enc); - } - } - break; - case BT_RSQB: - if ((ptr += MINBPC(enc)) == end) - return XML_TOK_PARTIAL; - if (CHAR_MATCHES(enc, ptr, ASCII_RSQB)) { - if ((ptr += MINBPC(enc)) == end) - return XML_TOK_PARTIAL; - if (CHAR_MATCHES(enc, ptr, ASCII_GT)) { - ptr += MINBPC(enc); - if (level == 0) { - *nextTokPtr = ptr; - return XML_TOK_IGNORE_SECT; - } - --level; - } - } - break; - default: - ptr += MINBPC(enc); - break; - } - } - return XML_TOK_PARTIAL; -} - -#endif /* XML_DTD */ - -static -int PREFIX(isPublicId)(const ENCODING *enc, const char *ptr, const char *end, - const char **badPtr) -{ - ptr += MINBPC(enc); - end -= MINBPC(enc); - for (; ptr != end; ptr += MINBPC(enc)) { - switch (BYTE_TYPE(enc, ptr)) { - case BT_DIGIT: - case BT_HEX: - case BT_MINUS: - case BT_APOS: - case BT_LPAR: - case BT_RPAR: - case BT_PLUS: - case BT_COMMA: - case BT_SOL: - case BT_EQUALS: - case BT_QUEST: - case BT_CR: - case BT_LF: - case BT_SEMI: - case BT_EXCL: - case BT_AST: - case BT_PERCNT: - case BT_NUM: -#ifdef XML_NS - case BT_COLON: -#endif - break; - case BT_S: - if (CHAR_MATCHES(enc, ptr, ASCII_TAB)) { - *badPtr = ptr; - return 0; - } - break; - case BT_NAME: - case BT_NMSTRT: - if (!(BYTE_TO_ASCII(enc, ptr) & ~0x7f)) - break; - default: - switch (BYTE_TO_ASCII(enc, ptr)) { - case 0x24: /* $ */ - case 0x40: /* @ */ - break; - default: - *badPtr = ptr; - return 0; - } - break; - } - } - return 1; -} - -/* This must only be called for a well-formed start-tag or empty element tag. -Returns the number of attributes. Pointers to the first attsMax attributes -are stored in atts. */ - -static -int PREFIX(getAtts)(const ENCODING *enc, const char *ptr, - int attsMax, ATTRIBUTE *atts) -{ - enum { other, inName, inValue } state = inName; - int nAtts = 0; - int open = 0; /* defined when state == inValue; - initialization just to shut up compilers */ - - for (ptr += MINBPC(enc);; ptr += MINBPC(enc)) { - switch (BYTE_TYPE(enc, ptr)) { -#define START_NAME \ - if (state == other) { \ - if (nAtts < attsMax) { \ - atts[nAtts].name = ptr; \ - atts[nAtts].normalized = 1; \ - } \ - state = inName; \ - } -#define LEAD_CASE(n) \ - case BT_LEAD ## n: START_NAME ptr += (n - MINBPC(enc)); break; - LEAD_CASE(2) LEAD_CASE(3) LEAD_CASE(4) -#undef LEAD_CASE - case BT_NONASCII: - case BT_NMSTRT: - case BT_HEX: - START_NAME - break; -#undef START_NAME - case BT_QUOT: - if (state != inValue) { - if (nAtts < attsMax) - atts[nAtts].valuePtr = ptr + MINBPC(enc); - state = inValue; - open = BT_QUOT; - } - else if (open == BT_QUOT) { - state = other; - if (nAtts < attsMax) - atts[nAtts].valueEnd = ptr; - nAtts++; - } - break; - case BT_APOS: - if (state != inValue) { - if (nAtts < attsMax) - atts[nAtts].valuePtr = ptr + MINBPC(enc); - state = inValue; - open = BT_APOS; - } - else if (open == BT_APOS) { - state = other; - if (nAtts < attsMax) - atts[nAtts].valueEnd = ptr; - nAtts++; - } - break; - case BT_AMP: - if (nAtts < attsMax) - atts[nAtts].normalized = 0; - break; - case BT_S: - if (state == inName) - state = other; - else if (state == inValue - && nAtts < attsMax - && atts[nAtts].normalized - && (ptr == atts[nAtts].valuePtr - || BYTE_TO_ASCII(enc, ptr) != ASCII_SPACE - || BYTE_TO_ASCII(enc, ptr + MINBPC(enc)) == ASCII_SPACE - || BYTE_TYPE(enc, ptr + MINBPC(enc)) == open)) - atts[nAtts].normalized = 0; - break; - case BT_CR: case BT_LF: - /* This case ensures that the first attribute name is counted - Apart from that we could just change state on the quote. */ - if (state == inName) - state = other; - else if (state == inValue && nAtts < attsMax) - atts[nAtts].normalized = 0; - break; - case BT_GT: - case BT_SOL: - if (state != inValue) - return nAtts; - break; - default: - break; - } - } - /* not reached */ -} - -static -int PREFIX(charRefNumber)(const ENCODING *enc, const char *ptr) -{ - int result = 0; - /* skip &# */ - ptr += 2*MINBPC(enc); - if (CHAR_MATCHES(enc, ptr, ASCII_x)) { - for (ptr += MINBPC(enc); !CHAR_MATCHES(enc, ptr, ASCII_SEMI); ptr += MINBPC(enc)) { - int c = BYTE_TO_ASCII(enc, ptr); - switch (c) { - case ASCII_0: case ASCII_1: case ASCII_2: case ASCII_3: case ASCII_4: - case ASCII_5: case ASCII_6: case ASCII_7: case ASCII_8: case ASCII_9: - result <<= 4; - result |= (c - ASCII_0); - break; - case ASCII_A: case ASCII_B: case ASCII_C: case ASCII_D: case ASCII_E: case ASCII_F: - result <<= 4; - result += 10 + (c - ASCII_A); - break; - case ASCII_a: case ASCII_b: case ASCII_c: case ASCII_d: case ASCII_e: case ASCII_f: - result <<= 4; - result += 10 + (c - ASCII_a); - break; - } - if (result >= 0x110000) - return -1; - } - } - else { - for (; !CHAR_MATCHES(enc, ptr, ASCII_SEMI); ptr += MINBPC(enc)) { - int c = BYTE_TO_ASCII(enc, ptr); - result *= 10; - result += (c - ASCII_0); - if (result >= 0x110000) - return -1; - } - } - return checkCharRefNumber(result); -} - -static -int PREFIX(predefinedEntityName)(const ENCODING *enc, const char *ptr, const char *end) -{ - switch ((end - ptr)/MINBPC(enc)) { - case 2: - if (CHAR_MATCHES(enc, ptr + MINBPC(enc), ASCII_t)) { - switch (BYTE_TO_ASCII(enc, ptr)) { - case ASCII_l: - return ASCII_LT; - case ASCII_g: - return ASCII_GT; - } - } - break; - case 3: - if (CHAR_MATCHES(enc, ptr, ASCII_a)) { - ptr += MINBPC(enc); - if (CHAR_MATCHES(enc, ptr, ASCII_m)) { - ptr += MINBPC(enc); - if (CHAR_MATCHES(enc, ptr, ASCII_p)) - return ASCII_AMP; - } - } - break; - case 4: - switch (BYTE_TO_ASCII(enc, ptr)) { - case ASCII_q: - ptr += MINBPC(enc); - if (CHAR_MATCHES(enc, ptr, ASCII_u)) { - ptr += MINBPC(enc); - if (CHAR_MATCHES(enc, ptr, ASCII_o)) { - ptr += MINBPC(enc); - if (CHAR_MATCHES(enc, ptr, ASCII_t)) - return ASCII_QUOT; - } - } - break; - case ASCII_a: - ptr += MINBPC(enc); - if (CHAR_MATCHES(enc, ptr, ASCII_p)) { - ptr += MINBPC(enc); - if (CHAR_MATCHES(enc, ptr, ASCII_o)) { - ptr += MINBPC(enc); - if (CHAR_MATCHES(enc, ptr, ASCII_s)) - return ASCII_APOS; - } - } - break; - } - } - return 0; -} - -static -int PREFIX(sameName)(const ENCODING *enc, const char *ptr1, const char *ptr2) -{ - for (;;) { - switch (BYTE_TYPE(enc, ptr1)) { -#define LEAD_CASE(n) \ - case BT_LEAD ## n: \ - if (*ptr1++ != *ptr2++) \ - return 0; - LEAD_CASE(4) LEAD_CASE(3) LEAD_CASE(2) -#undef LEAD_CASE - /* fall through */ - if (*ptr1++ != *ptr2++) - return 0; - break; - case BT_NONASCII: - case BT_NMSTRT: -#ifdef XML_NS - case BT_COLON: -#endif - case BT_HEX: - case BT_DIGIT: - case BT_NAME: - case BT_MINUS: - if (*ptr2++ != *ptr1++) - return 0; - if (MINBPC(enc) > 1) { - if (*ptr2++ != *ptr1++) - return 0; - if (MINBPC(enc) > 2) { - if (*ptr2++ != *ptr1++) - return 0; - if (MINBPC(enc) > 3) { - if (*ptr2++ != *ptr1++) - return 0; - } - } - } - break; - default: - if (MINBPC(enc) == 1 && *ptr1 == *ptr2) - return 1; - switch (BYTE_TYPE(enc, ptr2)) { - case BT_LEAD2: - case BT_LEAD3: - case BT_LEAD4: - case BT_NONASCII: - case BT_NMSTRT: -#ifdef XML_NS - case BT_COLON: -#endif - case BT_HEX: - case BT_DIGIT: - case BT_NAME: - case BT_MINUS: - return 0; - default: - return 1; - } - } - } - /* not reached */ -} - -static -int PREFIX(nameMatchesAscii)(const ENCODING *enc, const char *ptr1, - const char *end1, const char *ptr2) -{ - for (; *ptr2; ptr1 += MINBPC(enc), ptr2++) { - if (ptr1 == end1) - return 0; - if (!CHAR_MATCHES(enc, ptr1, *ptr2)) - return 0; - } - return ptr1 == end1; -} - -static -int PREFIX(nameLength)(const ENCODING *enc, const char *ptr) -{ - const char *start = ptr; - for (;;) { - switch (BYTE_TYPE(enc, ptr)) { -#define LEAD_CASE(n) \ - case BT_LEAD ## n: ptr += n; break; - LEAD_CASE(2) LEAD_CASE(3) LEAD_CASE(4) -#undef LEAD_CASE - case BT_NONASCII: - case BT_NMSTRT: -#ifdef XML_NS - case BT_COLON: -#endif - case BT_HEX: - case BT_DIGIT: - case BT_NAME: - case BT_MINUS: - ptr += MINBPC(enc); - break; - default: - return ptr - start; - } - } -} - -static -const char *PREFIX(skipS)(const ENCODING *enc, const char *ptr) -{ - for (;;) { - switch (BYTE_TYPE(enc, ptr)) { - case BT_LF: - case BT_CR: - case BT_S: - ptr += MINBPC(enc); - break; - default: - return ptr; - } - } -} - -static -void PREFIX(updatePosition)(const ENCODING *enc, - const char *ptr, - const char *end, - POSITION *pos) -{ - while (ptr != end) { - switch (BYTE_TYPE(enc, ptr)) { -#define LEAD_CASE(n) \ - case BT_LEAD ## n: \ - ptr += n; \ - break; - LEAD_CASE(2) LEAD_CASE(3) LEAD_CASE(4) -#undef LEAD_CASE - case BT_LF: - pos->columnNumber = (unsigned)-1; - pos->lineNumber++; - ptr += MINBPC(enc); - break; - case BT_CR: - pos->lineNumber++; - ptr += MINBPC(enc); - if (ptr != end && BYTE_TYPE(enc, ptr) == BT_LF) - ptr += MINBPC(enc); - pos->columnNumber = (unsigned)-1; - break; - default: - ptr += MINBPC(enc); - break; - } - pos->columnNumber++; - } -} - -#undef DO_LEAD_CASE -#undef MULTIBYTE_CASES -#undef INVALID_CASES -#undef CHECK_NAME_CASE -#undef CHECK_NAME_CASES -#undef CHECK_NMSTRT_CASE -#undef CHECK_NMSTRT_CASES diff --git a/libs/apr-util/xml/expat/lib/xmltok_impl.h b/libs/apr-util/xml/expat/lib/xmltok_impl.h deleted file mode 100644 index da0ea60a657..00000000000 --- a/libs/apr-util/xml/expat/lib/xmltok_impl.h +++ /dev/null @@ -1,46 +0,0 @@ -/* -Copyright (c) 1998, 1999 Thai Open Source Software Center Ltd -See the file COPYING for copying permission. -*/ - -enum { - BT_NONXML, - BT_MALFORM, - BT_LT, - BT_AMP, - BT_RSQB, - BT_LEAD2, - BT_LEAD3, - BT_LEAD4, - BT_TRAIL, - BT_CR, - BT_LF, - BT_GT, - BT_QUOT, - BT_APOS, - BT_EQUALS, - BT_QUEST, - BT_EXCL, - BT_SOL, - BT_SEMI, - BT_NUM, - BT_LSQB, - BT_S, - BT_NMSTRT, - BT_COLON, - BT_HEX, - BT_DIGIT, - BT_NAME, - BT_MINUS, - BT_OTHER, /* known not to be a name or name start character */ - BT_NONASCII, /* might be a name or name start character */ - BT_PERCNT, - BT_LPAR, - BT_RPAR, - BT_AST, - BT_PLUS, - BT_COMMA, - BT_VERBAR -}; - -#include diff --git a/libs/apr-util/xml/expat/lib/xmltok_ns.c b/libs/apr-util/xml/expat/lib/xmltok_ns.c deleted file mode 100644 index 21859738ac2..00000000000 --- a/libs/apr-util/xml/expat/lib/xmltok_ns.c +++ /dev/null @@ -1,98 +0,0 @@ -const ENCODING *NS(XmlGetUtf8InternalEncoding)(void) -{ - return &ns(internal_utf8_encoding).enc; -} - -const ENCODING *NS(XmlGetUtf16InternalEncoding)(void) -{ -#if XML_BYTE_ORDER == 12 - return &ns(internal_little2_encoding).enc; -#elif XML_BYTE_ORDER == 21 - return &ns(internal_big2_encoding).enc; -#else - const short n = 1; - return *(const char *)&n ? &ns(internal_little2_encoding).enc : &ns(internal_big2_encoding).enc; -#endif -} - -static -const ENCODING *NS(encodings)[] = { - &ns(latin1_encoding).enc, - &ns(ascii_encoding).enc, - &ns(utf8_encoding).enc, - &ns(big2_encoding).enc, - &ns(big2_encoding).enc, - &ns(little2_encoding).enc, - &ns(utf8_encoding).enc /* NO_ENC */ -}; - -static -int NS(initScanProlog)(const ENCODING *enc, const char *ptr, const char *end, - const char **nextTokPtr) -{ - return initScan(NS(encodings), (const INIT_ENCODING *)enc, XML_PROLOG_STATE, ptr, end, nextTokPtr); -} - -static -int NS(initScanContent)(const ENCODING *enc, const char *ptr, const char *end, - const char **nextTokPtr) -{ - return initScan(NS(encodings), (const INIT_ENCODING *)enc, XML_CONTENT_STATE, ptr, end, nextTokPtr); -} - -int NS(XmlInitEncoding)(INIT_ENCODING *p, const ENCODING **encPtr, const char *name) -{ - int i = getEncodingIndex(name); - if (i == UNKNOWN_ENC) - return 0; - SET_INIT_ENC_INDEX(p, i); - p->initEnc.scanners[XML_PROLOG_STATE] = NS(initScanProlog); - p->initEnc.scanners[XML_CONTENT_STATE] = NS(initScanContent); - p->initEnc.updatePosition = initUpdatePosition; - p->encPtr = encPtr; - *encPtr = &(p->initEnc); - return 1; -} - -static -const ENCODING *NS(findEncoding)(const ENCODING *enc, const char *ptr, const char *end) -{ -#define ENCODING_MAX 128 - char buf[ENCODING_MAX]; - char *p = buf; - int i; - XmlUtf8Convert(enc, &ptr, end, &p, p + ENCODING_MAX - 1); - if (ptr != end) - return 0; - *p = 0; - if (streqci(buf, KW_UTF_16) && enc->minBytesPerChar == 2) - return enc; - i = getEncodingIndex(buf); - if (i == UNKNOWN_ENC) - return 0; - return NS(encodings)[i]; -} - -int NS(XmlParseXmlDecl)(int isGeneralTextEntity, - const ENCODING *enc, - const char *ptr, - const char *end, - const char **badPtr, - const char **versionPtr, - const char **versionEndPtr, - const char **encodingName, - const ENCODING **encoding, - int *standalone) -{ - return doParseXmlDecl(NS(findEncoding), - isGeneralTextEntity, - enc, - ptr, - end, - badPtr, - versionPtr, - versionEndPtr, - encodingName, - encoding, - standalone); -} diff --git a/libs/apr/Makefile.in b/libs/apr/Makefile.in index ee7969f9fcd..2c347b73226 100644 --- a/libs/apr/Makefile.in +++ b/libs/apr/Makefile.in @@ -45,7 +45,7 @@ TARGETS = $(TARGET_LIB) export_vars.c apr.exp CLEAN_TARGETS = apr-config.out apr.exp exports.c export_vars.c .make.dirs \ build/apr_rules.out DISTCLEAN_TARGETS = config.cache config.log config.status \ - include/apr.h include/arch/unix/apr_private.h \ + include/fspr.h include/arch/unix/apr_private.h \ libtool $(APR_CONFIG) build/apr_rules.mk apr.pc \ build/pkg/pkginfo EXTRACLEAN_TARGETS = configure aclocal.m4 include/arch/unix/apr_private.h.in \ @@ -81,7 +81,7 @@ $(top_srcdir)/configure: $(top_srcdir)/configure.ac install: $(TARGET_LIB) apr-config.out build/apr_rules.out $(APR_MKDIR) $(DESTDIR)$(libdir) $(DESTDIR)$(bindir) $(DESTDIR)$(installbuilddir) \ $(DESTDIR)$(libdir)/pkgconfig $(DESTDIR)$(includedir) - $(INSTALL_DATA) $(top_blddir)/include/apr.h $(DESTDIR)$(includedir) + $(INSTALL_DATA) $(top_blddir)/include/fspr.h $(DESTDIR)$(includedir) for f in $(top_srcdir)/include/apr_*.h; do \ $(INSTALL_DATA) $${f} $(DESTDIR)$(includedir); \ done diff --git a/libs/apr/apr.dsp b/libs/apr/apr.dsp index d1c1b29cfd3..7c3d0160da5 100644 --- a/libs/apr/apr.dsp +++ b/libs/apr/apr.dsp @@ -41,7 +41,7 @@ RSC=rc.exe # PROP Intermediate_Dir "LibR" # PROP Target_Dir "" # ADD BASE CPP /nologo /MD /W3 /O2 /D "WIN32" /D "NDEBUG" /D "_WINDOWS" /FD /c -# ADD CPP /nologo /MD /W3 /O2 /Oy- /Zi /I "./include" /I "./include/arch" /I "./include/arch/win32" /I "./include/arch/unix" /D "NDEBUG" /D "APR_DECLARE_STATIC" /D "WIN32" /D "_WINDOWS" /Fd"LibR\apr_src" /FD /c +# ADD CPP /nologo /MD /W3 /O2 /Oy- /Zi /I "./include" /I "./include/arch" /I "./include/arch/win32" /I "./include/arch/unix" /D "NDEBUG" /D "APR_DECLARE_STATIC" /D "WIN32" /D "_WINDOWS" /Fd"LibR\fspr_src" /FD /c # ADD BASE RSC /l 0x409 /d "NDEBUG" # ADD RSC /l 0x409 /d "NDEBUG" BSC32=bscmake.exe @@ -65,7 +65,7 @@ LIB32=link.exe -lib # PROP Ignore_Export_Lib 0 # PROP Target_Dir "" # ADD BASE CPP /nologo /MDd /W3 /EHsc /Zi /Od /D "WIN32" /D "_DEBUG" /D "_WINDOWS" /FD /c -# ADD CPP /nologo /MDd /W3 /EHsc /Zi /Od /I "./include" /I "./include/arch" /I "./include/arch/win32" /I "./include/arch/unix" /D "_DEBUG" /D "APR_DECLARE_STATIC" /D "WIN32" /D "_WINDOWS" /Fd"LibD\apr_src" /FD /c +# ADD CPP /nologo /MDd /W3 /EHsc /Zi /Od /I "./include" /I "./include/arch" /I "./include/arch/win32" /I "./include/arch/unix" /D "_DEBUG" /D "APR_DECLARE_STATIC" /D "WIN32" /D "_WINDOWS" /Fd"LibD\fspr_src" /FD /c # ADD BASE RSC /l 0x409 /d "_DEBUG" # ADD RSC /l 0x409 /d "_DEBUG" BSC32=bscmake.exe @@ -89,7 +89,7 @@ LIB32=link.exe -lib # PROP Default_Filter "" # Begin Source File -SOURCE=.\atomic\win32\apr_atomic.c +SOURCE=.\atomic\win32\fspr_atomic.c # End Source File # End Group # Begin Group "dso" @@ -193,7 +193,7 @@ SOURCE=.\locks\win32\thread_rwlock.c # PROP Default_Filter "" # Begin Source File -SOURCE=.\memory\unix\apr_pools.c +SOURCE=.\memory\unix\fspr_pools.c # End Source File # End Group # Begin Group "misc" @@ -201,7 +201,7 @@ SOURCE=.\memory\unix\apr_pools.c # PROP Default_Filter "" # Begin Source File -SOURCE=.\misc\win32\apr_app.c +SOURCE=.\misc\win32\fspr_app.c # PROP Exclude_From_Build 1 # End Source File # Begin Source File @@ -302,7 +302,7 @@ SOURCE=.\network_io\win32\sockopt.c # PROP Default_Filter "" # Begin Source File -SOURCE=.\passwd\apr_getpass.c +SOURCE=.\passwd\fspr_getpass.c # End Source File # End Group # Begin Group "random" @@ -310,7 +310,7 @@ SOURCE=.\passwd\apr_getpass.c # PROP Default_Filter "" # Begin Source File -SOURCE=.\random\unix\apr_random.c +SOURCE=.\random\unix\fspr_random.c # End Source File # Begin Source File @@ -334,27 +334,27 @@ SOURCE=.\shmem\win32\shm.c # PROP Default_Filter "" # Begin Source File -SOURCE=.\strings\apr_cpystrn.c +SOURCE=.\strings\fspr_cpystrn.c # End Source File # Begin Source File -SOURCE=.\strings\apr_fnmatch.c +SOURCE=.\strings\fspr_fnmatch.c # End Source File # Begin Source File -SOURCE=.\strings\apr_snprintf.c +SOURCE=.\strings\fspr_snprintf.c # End Source File # Begin Source File -SOURCE=.\strings\apr_strings.c +SOURCE=.\strings\fspr_strings.c # End Source File # Begin Source File -SOURCE=.\strings\apr_strnatcmp.c +SOURCE=.\strings\fspr_strnatcmp.c # End Source File # Begin Source File -SOURCE=.\strings\apr_strtok.c +SOURCE=.\strings\fspr_strtok.c # End Source File # End Group # Begin Group "tables" @@ -362,11 +362,11 @@ SOURCE=.\strings\apr_strtok.c # PROP Default_Filter "" # Begin Source File -SOURCE=.\tables\apr_hash.c +SOURCE=.\tables\fspr_hash.c # End Source File # Begin Source File -SOURCE=.\tables\apr_tables.c +SOURCE=.\tables\fspr_tables.c # End Source File # End Group # Begin Group "threadproc" @@ -423,51 +423,51 @@ SOURCE=.\user\win32\userinfo.c # PROP Default_Filter "" # Begin Source File -SOURCE=.\include\arch\win32\apr_arch_atime.h +SOURCE=.\include\arch\win32\fspr_arch_atime.h # End Source File # Begin Source File -SOURCE=.\include\arch\win32\apr_arch_dso.h +SOURCE=.\include\arch\win32\fspr_arch_dso.h # End Source File # Begin Source File -SOURCE=.\include\arch\win32\apr_arch_file_io.h +SOURCE=.\include\arch\win32\fspr_arch_file_io.h # End Source File # Begin Source File -SOURCE=.\include\arch\win32\apr_arch_inherit.h +SOURCE=.\include\arch\win32\fspr_arch_inherit.h # End Source File # Begin Source File -SOURCE=.\include\arch\win32\apr_arch_misc.h +SOURCE=.\include\arch\win32\fspr_arch_misc.h # End Source File # Begin Source File -SOURCE=.\include\arch\win32\apr_arch_networkio.h +SOURCE=.\include\arch\win32\fspr_arch_networkio.h # End Source File # Begin Source File -SOURCE=.\include\arch\win32\apr_arch_thread_mutex.h +SOURCE=.\include\arch\win32\fspr_arch_thread_mutex.h # End Source File # Begin Source File -SOURCE=.\include\arch\win32\apr_arch_thread_rwlock.h +SOURCE=.\include\arch\win32\fspr_arch_thread_rwlock.h # End Source File # Begin Source File -SOURCE=.\include\arch\win32\apr_arch_threadproc.h +SOURCE=.\include\arch\win32\fspr_arch_threadproc.h # End Source File # Begin Source File -SOURCE=.\include\arch\win32\apr_arch_utf8.h +SOURCE=.\include\arch\win32\fspr_arch_utf8.h # End Source File # Begin Source File -SOURCE=.\include\arch\win32\apr_private.h +SOURCE=.\include\arch\win32\fspr_private.h # End Source File # Begin Source File -SOURCE=.\include\arch\apr_private_common.h +SOURCE=.\include\arch\fspr_private_common.h # End Source File # End Group # Begin Group "Public Header Files" @@ -475,35 +475,35 @@ SOURCE=.\include\arch\apr_private_common.h # PROP Default_Filter "" # Begin Source File -SOURCE=.\include\apr.h.in +SOURCE=.\include\fspr.h.in # PROP Exclude_From_Build 1 # End Source File # Begin Source File -SOURCE=.\include\apr.hnw +SOURCE=.\include\fspr.hnw # PROP Exclude_From_Build 1 # End Source File # Begin Source File -SOURCE=.\include\apr.hw +SOURCE=.\include\fspr.hw !IF "$(CFG)" == "apr - Win32 Release" # Begin Custom Build - Creating apr.h from apr.hw -InputPath=.\include\apr.hw +InputPath=.\include\fspr.hw -".\include\apr.h" : $(SOURCE) "$(INTDIR)" "$(OUTDIR)" - type .\include\apr.hw > .\include\apr.h +".\include\fspr.h" : $(SOURCE) "$(INTDIR)" "$(OUTDIR)" + type .\include\fspr.hw > .\include\fspr.h # End Custom Build !ELSEIF "$(CFG)" == "apr - Win32 Debug" # Begin Custom Build - Creating apr.h from apr.hw -InputPath=.\include\apr.hw +InputPath=.\include\fspr.hw -".\include\apr.h" : $(SOURCE) "$(INTDIR)" "$(OUTDIR)" - type .\include\apr.hw > .\include\apr.h +".\include\fspr.h" : $(SOURCE) "$(INTDIR)" "$(OUTDIR)" + type .\include\fspr.hw > .\include\fspr.h # End Custom Build @@ -512,139 +512,139 @@ InputPath=.\include\apr.hw # End Source File # Begin Source File -SOURCE=.\include\apr_allocator.h +SOURCE=.\include\fspr_allocator.h # End Source File # Begin Source File -SOURCE=.\include\apr_atomic.h +SOURCE=.\include\fspr_atomic.h # End Source File # Begin Source File -SOURCE=.\include\apr_dso.h +SOURCE=.\include\fspr_dso.h # End Source File # Begin Source File -SOURCE=.\include\apr_env.h +SOURCE=.\include\fspr_env.h # End Source File # Begin Source File -SOURCE=.\include\apr_errno.h +SOURCE=.\include\fspr_errno.h # End Source File # Begin Source File -SOURCE=.\include\apr_file_info.h +SOURCE=.\include\fspr_file_info.h # End Source File # Begin Source File -SOURCE=.\include\apr_file_io.h +SOURCE=.\include\fspr_file_io.h # End Source File # Begin Source File -SOURCE=.\include\apr_fnmatch.h +SOURCE=.\include\fspr_fnmatch.h # End Source File # Begin Source File -SOURCE=.\include\apr_general.h +SOURCE=.\include\fspr_general.h # End Source File # Begin Source File -SOURCE=.\include\apr_getopt.h +SOURCE=.\include\fspr_getopt.h # End Source File # Begin Source File -SOURCE=.\include\apr_global_mutex.h +SOURCE=.\include\fspr_global_mutex.h # End Source File # Begin Source File -SOURCE=.\include\apr_hash.h +SOURCE=.\include\fspr_hash.h # End Source File # Begin Source File -SOURCE=.\include\apr_inherit.h +SOURCE=.\include\fspr_inherit.h # End Source File # Begin Source File -SOURCE=.\include\apr_lib.h +SOURCE=.\include\fspr_lib.h # End Source File # Begin Source File -SOURCE=.\include\apr_mmap.h +SOURCE=.\include\fspr_mmap.h # End Source File # Begin Source File -SOURCE=.\include\apr_network_io.h +SOURCE=.\include\fspr_network_io.h # End Source File # Begin Source File -SOURCE=.\include\apr_poll.h +SOURCE=.\include\fspr_poll.h # End Source File # Begin Source File -SOURCE=.\include\apr_pools.h +SOURCE=.\include\fspr_pools.h # End Source File # Begin Source File -SOURCE=.\include\apr_portable.h +SOURCE=.\include\fspr_portable.h # End Source File # Begin Source File -SOURCE=.\include\apr_proc_mutex.h +SOURCE=.\include\fspr_proc_mutex.h # End Source File # Begin Source File -SOURCE=.\include\apr_ring.h +SOURCE=.\include\fspr_ring.h # End Source File # Begin Source File -SOURCE=.\include\apr_shm.h +SOURCE=.\include\fspr_shm.h # End Source File # Begin Source File -SOURCE=.\include\apr_signal.h +SOURCE=.\include\fspr_signal.h # End Source File # Begin Source File -SOURCE=.\include\apr_strings.h +SOURCE=.\include\fspr_strings.h # End Source File # Begin Source File -SOURCE=.\include\apr_support.h +SOURCE=.\include\fspr_support.h # End Source File # Begin Source File -SOURCE=.\include\apr_tables.h +SOURCE=.\include\fspr_tables.h # End Source File # Begin Source File -SOURCE=.\include\apr_thread_cond.h +SOURCE=.\include\fspr_thread_cond.h # End Source File # Begin Source File -SOURCE=.\include\apr_thread_mutex.h +SOURCE=.\include\fspr_thread_mutex.h # End Source File # Begin Source File -SOURCE=.\include\apr_thread_proc.h +SOURCE=.\include\fspr_thread_proc.h # End Source File # Begin Source File -SOURCE=.\include\apr_thread_rwlock.h +SOURCE=.\include\fspr_thread_rwlock.h # End Source File # Begin Source File -SOURCE=.\include\apr_time.h +SOURCE=.\include\fspr_time.h # End Source File # Begin Source File -SOURCE=.\include\apr_user.h +SOURCE=.\include\fspr_user.h # End Source File # Begin Source File -SOURCE=.\include\apr_version.h +SOURCE=.\include\fspr_version.h # End Source File # Begin Source File -SOURCE=.\include\apr_want.h +SOURCE=.\include\fspr_want.h # End Source File # End Group # End Target diff --git a/libs/apr/apr.dsw b/libs/apr/apr.dsw index dc0871bbc88..73db5d052ec 100644 --- a/libs/apr/apr.dsw +++ b/libs/apr/apr.dsw @@ -15,7 +15,7 @@ Package=<4> ############################################################################### -Project: "apr_app"=".\build\apr_app.dsp" - Package Owner=<4> +Project: "fspr_app"=".\build\fspr_app.dsp" - Package Owner=<4> Package=<5> {{{ @@ -42,7 +42,7 @@ Package=<4> ############################################################################### -Project: "libapr_app"=".\build\libapr_app.dsp" - Package Owner=<4> +Project: "libfspr_app"=".\build\libfspr_app.dsp" - Package Owner=<4> Package=<5> {{{ diff --git a/libs/apr/atomic/netware/apr_atomic.c b/libs/apr/atomic/netware/fspr_atomic.c similarity index 61% rename from libs/apr/atomic/netware/apr_atomic.c rename to libs/apr/atomic/netware/fspr_atomic.c index 94a3549775e..e54704064cd 100644 --- a/libs/apr/atomic/netware/apr_atomic.c +++ b/libs/apr/atomic/netware/fspr_atomic.c @@ -14,57 +14,57 @@ * limitations under the License. */ -#include "apr.h" -#include "apr_atomic.h" +#include "fspr.h" +#include "fspr_atomic.h" #include -APR_DECLARE(apr_status_t) apr_atomic_init(apr_pool_t *pool) +APR_DECLARE(fspr_status_t) fspr_atomic_init(fspr_pool_t *pool) { return APR_SUCCESS; } -APR_DECLARE(apr_uint32_t) apr_atomic_add32(volatile apr_uint32_t *mem, apr_uint32_t val) +APR_DECLARE(fspr_uint32_t) fspr_atomic_add32(volatile fspr_uint32_t *mem, fspr_uint32_t val) { return atomic_xchgadd((unsigned long *)mem,(unsigned long)val); } -APR_DECLARE(void) apr_atomic_sub32(volatile apr_uint32_t *mem, apr_uint32_t val) +APR_DECLARE(void) fspr_atomic_sub32(volatile fspr_uint32_t *mem, fspr_uint32_t val) { atomic_sub((unsigned long *)mem,(unsigned long)val); } -APR_DECLARE(apr_uint32_t) apr_atomic_inc32(volatile apr_uint32_t *mem) +APR_DECLARE(fspr_uint32_t) fspr_atomic_inc32(volatile fspr_uint32_t *mem) { return atomic_xchgadd((unsigned long *)mem, 1); } -APR_DECLARE(void) apr_atomic_set32(volatile apr_uint32_t *mem, apr_uint32_t val) +APR_DECLARE(void) fspr_atomic_set32(volatile fspr_uint32_t *mem, fspr_uint32_t val) { *mem = val; } -APR_DECLARE(apr_uint32_t) apr_atomic_read32(volatile apr_uint32_t *mem) +APR_DECLARE(fspr_uint32_t) fspr_atomic_read32(volatile fspr_uint32_t *mem) { return *mem; } -APR_DECLARE(apr_uint32_t) apr_atomic_cas32(volatile apr_uint32_t *mem, apr_uint32_t with,apr_uint32_t cmp) +APR_DECLARE(fspr_uint32_t) fspr_atomic_cas32(volatile fspr_uint32_t *mem, fspr_uint32_t with,fspr_uint32_t cmp) { return atomic_cmpxchg((unsigned long *)mem,(unsigned long)cmp,(unsigned long)with); } -APR_DECLARE(apr_uint32_t) apr_atomic_xchg32(volatile apr_uint32_t *mem, apr_uint32_t val) +APR_DECLARE(fspr_uint32_t) fspr_atomic_xchg32(volatile fspr_uint32_t *mem, fspr_uint32_t val) { return atomic_xchg((unsigned long *)mem,(unsigned long)val); } -APR_DECLARE(int) apr_atomic_dec32(volatile apr_uint32_t *mem) +APR_DECLARE(int) fspr_atomic_dec32(volatile fspr_uint32_t *mem) { return (atomic_xchgadd((unsigned long *)mem, 0xFFFFFFFF) - 1); } -APR_DECLARE(void *) apr_atomic_casptr(volatile void **mem, void *with, const void *cmp) +APR_DECLARE(void *) fspr_atomic_casptr(volatile void **mem, void *with, const void *cmp) { return (void*)atomic_cmpxchg((unsigned long *)mem,(unsigned long)cmp,(unsigned long)with); } diff --git a/libs/apr/atomic/os390/atomic.c b/libs/apr/atomic/os390/atomic.c index 35ddf1c2266..b85b5bfa640 100644 --- a/libs/apr/atomic/os390/atomic.c +++ b/libs/apr/atomic/os390/atomic.c @@ -15,19 +15,19 @@ */ -#include "apr.h" -#include "apr_atomic.h" +#include "fspr.h" +#include "fspr_atomic.h" #include -apr_status_t apr_atomic_init(apr_pool_t *p) +fspr_status_t fspr_atomic_init(fspr_pool_t *p) { return APR_SUCCESS; } -apr_uint32_t apr_atomic_add32(volatile apr_uint32_t *mem, apr_uint32_t val) +fspr_uint32_t fspr_atomic_add32(volatile fspr_uint32_t *mem, fspr_uint32_t val) { - apr_uint32_t old, new_val; + fspr_uint32_t old, new_val; old = *mem; /* old is automatically updated on cs failure */ do { @@ -36,9 +36,9 @@ apr_uint32_t apr_atomic_add32(volatile apr_uint32_t *mem, apr_uint32_t val) return old; } -void apr_atomic_sub32(volatile apr_uint32_t *mem, apr_uint32_t val) +void fspr_atomic_sub32(volatile fspr_uint32_t *mem, fspr_uint32_t val) { - apr_uint32_t old, new_val; + fspr_uint32_t old, new_val; old = *mem; /* old is automatically updated on cs failure */ do { @@ -46,14 +46,14 @@ void apr_atomic_sub32(volatile apr_uint32_t *mem, apr_uint32_t val) } while (__cs(&old, (cs_t *)mem, new_val)); } -apr_uint32_t apr_atomic_inc32(volatile apr_uint32_t *mem) +fspr_uint32_t fspr_atomic_inc32(volatile fspr_uint32_t *mem) { - return apr_atomic_add32(mem, 1); + return fspr_atomic_add32(mem, 1); } -int apr_atomic_dec32(volatile apr_uint32_t *mem) +int fspr_atomic_dec32(volatile fspr_uint32_t *mem) { - apr_uint32_t old, new_val; + fspr_uint32_t old, new_val; old = *mem; /* old is automatically updated on cs failure */ do { @@ -63,28 +63,28 @@ int apr_atomic_dec32(volatile apr_uint32_t *mem) return new_val != 0; } -apr_uint32_t apr_atomic_read32(volatile apr_uint32_t *mem) +fspr_uint32_t fspr_atomic_read32(volatile fspr_uint32_t *mem) { return *mem; } -void apr_atomic_set32(volatile apr_uint32_t *mem, apr_uint32_t val) +void fspr_atomic_set32(volatile fspr_uint32_t *mem, fspr_uint32_t val) { *mem = val; } -apr_uint32_t apr_atomic_cas32(volatile apr_uint32_t *mem, apr_uint32_t swap, - apr_uint32_t cmp) +fspr_uint32_t fspr_atomic_cas32(volatile fspr_uint32_t *mem, fspr_uint32_t swap, + fspr_uint32_t cmp) { - apr_uint32_t old = cmp; + fspr_uint32_t old = cmp; __cs(&old, (cs_t *)mem, swap); return old; /* old is automatically updated from mem on cs failure */ } -apr_uint32_t apr_atomic_xchg32(volatile apr_uint32_t *mem, apr_uint32_t val) +fspr_uint32_t fspr_atomic_xchg32(volatile fspr_uint32_t *mem, fspr_uint32_t val) { - apr_uint32_t old, new_val; + fspr_uint32_t old, new_val; old = *mem; /* old is automatically updated on cs failure */ do { diff --git a/libs/apr/atomic/unix/apr_atomic.c b/libs/apr/atomic/unix/fspr_atomic.c similarity index 65% rename from libs/apr/atomic/unix/apr_atomic.c rename to libs/apr/atomic/unix/fspr_atomic.c index 3110d96d7cd..6a366a1a738 100644 --- a/libs/apr/atomic/unix/apr_atomic.c +++ b/libs/apr/atomic/unix/fspr_atomic.c @@ -14,11 +14,11 @@ * limitations under the License. */ -#include "apr.h" -#include "apr_atomic.h" -#include "apr_thread_mutex.h" +#include "fspr.h" +#include "fspr_atomic.h" +#include "fspr_thread_mutex.h" -#include "apr_private.h" +#include "fspr_private.h" #include @@ -31,11 +31,11 @@ #if (defined(__i386__) || defined(__x86_64__)) \ && defined(__GNUC__) && !defined(USE_GENERIC_ATOMICS) -APR_DECLARE(apr_uint32_t) apr_atomic_cas32(volatile apr_uint32_t *mem, - apr_uint32_t with, - apr_uint32_t cmp) +APR_DECLARE(fspr_uint32_t) fspr_atomic_cas32(volatile fspr_uint32_t *mem, + fspr_uint32_t with, + fspr_uint32_t cmp) { - apr_uint32_t prev; + fspr_uint32_t prev; asm volatile ("lock; cmpxchgl %1, %2" : "=a" (prev) @@ -45,8 +45,8 @@ APR_DECLARE(apr_uint32_t) apr_atomic_cas32(volatile apr_uint32_t *mem, } #define APR_OVERRIDE_ATOMIC_CAS32 -static apr_uint32_t inline intel_atomic_add32(volatile apr_uint32_t *mem, - apr_uint32_t val) +static fspr_uint32_t inline intel_atomic_add32(volatile fspr_uint32_t *mem, + fspr_uint32_t val) { asm volatile ("lock; xaddl %0,%1" : "=r"(val), "=m"(*mem) /* outputs */ @@ -55,14 +55,14 @@ static apr_uint32_t inline intel_atomic_add32(volatile apr_uint32_t *mem, return val; } -APR_DECLARE(apr_uint32_t) apr_atomic_add32(volatile apr_uint32_t *mem, - apr_uint32_t val) +APR_DECLARE(fspr_uint32_t) fspr_atomic_add32(volatile fspr_uint32_t *mem, + fspr_uint32_t val) { return intel_atomic_add32(mem, val); } #define APR_OVERRIDE_ATOMIC_ADD32 -APR_DECLARE(void) apr_atomic_sub32(volatile apr_uint32_t *mem, apr_uint32_t val) +APR_DECLARE(void) fspr_atomic_sub32(volatile fspr_uint32_t *mem, fspr_uint32_t val) { asm volatile ("lock; subl %1, %0" : @@ -71,7 +71,7 @@ APR_DECLARE(void) apr_atomic_sub32(volatile apr_uint32_t *mem, apr_uint32_t val) } #define APR_OVERRIDE_ATOMIC_SUB32 -APR_DECLARE(int) apr_atomic_dec32(volatile apr_uint32_t *mem) +APR_DECLARE(int) fspr_atomic_dec32(volatile fspr_uint32_t *mem) { unsigned char prev; @@ -84,21 +84,21 @@ APR_DECLARE(int) apr_atomic_dec32(volatile apr_uint32_t *mem) } #define APR_OVERRIDE_ATOMIC_DEC32 -APR_DECLARE(apr_uint32_t) apr_atomic_inc32(volatile apr_uint32_t *mem) +APR_DECLARE(fspr_uint32_t) fspr_atomic_inc32(volatile fspr_uint32_t *mem) { return intel_atomic_add32(mem, 1); } #define APR_OVERRIDE_ATOMIC_INC32 -APR_DECLARE(void) apr_atomic_set32(volatile apr_uint32_t *mem, apr_uint32_t val) +APR_DECLARE(void) fspr_atomic_set32(volatile fspr_uint32_t *mem, fspr_uint32_t val) { *mem = val; } #define APR_OVERRIDE_ATOMIC_SET32 -APR_DECLARE(apr_uint32_t) apr_atomic_xchg32(volatile apr_uint32_t *mem, apr_uint32_t val) +APR_DECLARE(fspr_uint32_t) fspr_atomic_xchg32(volatile fspr_uint32_t *mem, fspr_uint32_t val) { - apr_uint32_t prev = val; + fspr_uint32_t prev = val; asm volatile ("lock; xchgl %0, %1" : "=r" (prev) @@ -108,18 +108,18 @@ APR_DECLARE(apr_uint32_t) apr_atomic_xchg32(volatile apr_uint32_t *mem, apr_uint } #define APR_OVERRIDE_ATOMIC_XCHG32 -/*#define apr_atomic_init(pool) APR_SUCCESS*/ +/*#define fspr_atomic_init(pool) APR_SUCCESS*/ #endif /* (__linux__ || __EMX__ || __FreeBSD__) && __i386__ */ #if (defined(__PPC__) || defined(__ppc__)) && defined(__GNUC__) \ && !defined(USE_GENERIC_ATOMICS) -APR_DECLARE(apr_uint32_t) apr_atomic_cas32(volatile apr_uint32_t *mem, - apr_uint32_t swap, - apr_uint32_t cmp) +APR_DECLARE(fspr_uint32_t) fspr_atomic_cas32(volatile fspr_uint32_t *mem, + fspr_uint32_t swap, + fspr_uint32_t cmp) { - apr_uint32_t prev; + fspr_uint32_t prev; asm volatile ("0:\n\t" /* retry local label */ "lwarx %0,0,%1\n\t" /* load prev and reserve */ @@ -138,10 +138,10 @@ APR_DECLARE(apr_uint32_t) apr_atomic_cas32(volatile apr_uint32_t *mem, } #define APR_OVERRIDE_ATOMIC_CAS32 -APR_DECLARE(apr_uint32_t) apr_atomic_add32(volatile apr_uint32_t *mem, - apr_uint32_t delta) +APR_DECLARE(fspr_uint32_t) fspr_atomic_add32(volatile fspr_uint32_t *mem, + fspr_uint32_t delta) { - apr_uint32_t prev, temp; + fspr_uint32_t prev, temp; asm volatile ("0:\n\t" /* retry local label */ "lwarx %0,0,%2\n\t" /* load prev and reserve */ @@ -168,18 +168,18 @@ APR_DECLARE(apr_uint32_t) apr_atomic_add32(volatile apr_uint32_t *mem, #define NUM_ATOMIC_HASH 7 /* shift by 2 to get rid of alignment issues */ #define ATOMIC_HASH(x) (unsigned int)(((unsigned long)(x)>>2)%(unsigned int)NUM_ATOMIC_HASH) -static apr_thread_mutex_t **hash_mutex; +static fspr_thread_mutex_t **hash_mutex; #endif /* APR_HAS_THREADS */ -apr_status_t apr_atomic_init(apr_pool_t *p) +fspr_status_t fspr_atomic_init(fspr_pool_t *p) { #if APR_HAS_THREADS int i; - apr_status_t rv; - hash_mutex = apr_palloc(p, sizeof(apr_thread_mutex_t*) * NUM_ATOMIC_HASH); + fspr_status_t rv; + hash_mutex = fspr_palloc(p, sizeof(fspr_thread_mutex_t*) * NUM_ATOMIC_HASH); for (i = 0; i < NUM_ATOMIC_HASH; i++) { - rv = apr_thread_mutex_create(&(hash_mutex[i]), + rv = fspr_thread_mutex_create(&(hash_mutex[i]), APR_THREAD_MUTEX_DEFAULT, p); if (rv != APR_SUCCESS) { return rv; @@ -195,28 +195,28 @@ apr_status_t apr_atomic_init(apr_pool_t *p) #if !defined(APR_OVERRIDE_ATOMIC_ADD32) #if defined(APR_OVERRIDE_ATOMIC_CAS32) -apr_uint32_t apr_atomic_add32(volatile apr_uint32_t *mem, apr_uint32_t val) +fspr_uint32_t fspr_atomic_add32(volatile fspr_uint32_t *mem, fspr_uint32_t val) { - apr_uint32_t old_value, new_value; + fspr_uint32_t old_value, new_value; do { old_value = *mem; new_value = old_value + val; - } while (apr_atomic_cas32(mem, new_value, old_value) != old_value); + } while (fspr_atomic_cas32(mem, new_value, old_value) != old_value); return old_value; } #else -apr_uint32_t apr_atomic_add32(volatile apr_uint32_t *mem, apr_uint32_t val) +fspr_uint32_t fspr_atomic_add32(volatile fspr_uint32_t *mem, fspr_uint32_t val) { - apr_uint32_t old_value; + fspr_uint32_t old_value; #if APR_HAS_THREADS - apr_thread_mutex_t *lock = hash_mutex[ATOMIC_HASH(mem)]; + fspr_thread_mutex_t *lock = hash_mutex[ATOMIC_HASH(mem)]; - CHECK(apr_thread_mutex_lock(lock)); + CHECK(fspr_thread_mutex_lock(lock)); old_value = *mem; *mem += val; - CHECK(apr_thread_mutex_unlock(lock)); + CHECK(fspr_thread_mutex_unlock(lock)); #else old_value = *mem; *mem += val; @@ -228,24 +228,24 @@ apr_uint32_t apr_atomic_add32(volatile apr_uint32_t *mem, apr_uint32_t val) #if !defined(APR_OVERRIDE_ATOMIC_SUB32) #if defined(APR_OVERRIDE_ATOMIC_CAS32) -void apr_atomic_sub32(volatile apr_uint32_t *mem, apr_uint32_t val) +void fspr_atomic_sub32(volatile fspr_uint32_t *mem, fspr_uint32_t val) { - apr_uint32_t old_value, new_value; + fspr_uint32_t old_value, new_value; do { old_value = *mem; new_value = old_value - val; - } while (apr_atomic_cas32(mem, new_value, old_value) != old_value); + } while (fspr_atomic_cas32(mem, new_value, old_value) != old_value); } #else -void apr_atomic_sub32(volatile apr_uint32_t *mem, apr_uint32_t val) +void fspr_atomic_sub32(volatile fspr_uint32_t *mem, fspr_uint32_t val) { #if APR_HAS_THREADS - apr_thread_mutex_t *lock = hash_mutex[ATOMIC_HASH(mem)]; + fspr_thread_mutex_t *lock = hash_mutex[ATOMIC_HASH(mem)]; - CHECK(apr_thread_mutex_lock(lock)); + CHECK(fspr_thread_mutex_lock(lock)); *mem -= val; - CHECK(apr_thread_mutex_unlock(lock)); + CHECK(fspr_thread_mutex_unlock(lock)); #else *mem -= val; #endif /* APR_HAS_THREADS */ @@ -254,14 +254,14 @@ void apr_atomic_sub32(volatile apr_uint32_t *mem, apr_uint32_t val) #endif /* !defined(APR_OVERRIDE_ATOMIC_SUB32) */ #if !defined(APR_OVERRIDE_ATOMIC_SET32) -void apr_atomic_set32(volatile apr_uint32_t *mem, apr_uint32_t val) +void fspr_atomic_set32(volatile fspr_uint32_t *mem, fspr_uint32_t val) { #if APR_HAS_THREADS - apr_thread_mutex_t *lock = hash_mutex[ATOMIC_HASH(mem)]; + fspr_thread_mutex_t *lock = hash_mutex[ATOMIC_HASH(mem)]; - CHECK(apr_thread_mutex_lock(lock)); + CHECK(fspr_thread_mutex_lock(lock)); *mem = val; - CHECK(apr_thread_mutex_unlock(lock)); + CHECK(fspr_thread_mutex_unlock(lock)); #else *mem = val; #endif /* APR_HAS_THREADS */ @@ -269,35 +269,35 @@ void apr_atomic_set32(volatile apr_uint32_t *mem, apr_uint32_t val) #endif /* !defined(APR_OVERRIDE_ATOMIC_SET32) */ #if !defined(APR_OVERRIDE_ATOMIC_INC32) -apr_uint32_t apr_atomic_inc32(volatile apr_uint32_t *mem) +fspr_uint32_t fspr_atomic_inc32(volatile fspr_uint32_t *mem) { - return apr_atomic_add32(mem, 1); + return fspr_atomic_add32(mem, 1); } #endif /* !defined(APR_OVERRIDE_ATOMIC_INC32) */ #if !defined(APR_OVERRIDE_ATOMIC_DEC32) #if defined(APR_OVERRIDE_ATOMIC_CAS32) -int apr_atomic_dec32(volatile apr_uint32_t *mem) +int fspr_atomic_dec32(volatile fspr_uint32_t *mem) { - apr_uint32_t old_value, new_value; + fspr_uint32_t old_value, new_value; do { old_value = *mem; new_value = old_value - 1; - } while (apr_atomic_cas32(mem, new_value, old_value) != old_value); + } while (fspr_atomic_cas32(mem, new_value, old_value) != old_value); return old_value != 1; } #else -int apr_atomic_dec32(volatile apr_uint32_t *mem) +int fspr_atomic_dec32(volatile fspr_uint32_t *mem) { #if APR_HAS_THREADS - apr_thread_mutex_t *lock = hash_mutex[ATOMIC_HASH(mem)]; - apr_uint32_t new; + fspr_thread_mutex_t *lock = hash_mutex[ATOMIC_HASH(mem)]; + fspr_uint32_t new; - CHECK(apr_thread_mutex_lock(lock)); + CHECK(fspr_thread_mutex_lock(lock)); (*mem)--; new = *mem; - CHECK(apr_thread_mutex_unlock(lock)); + CHECK(fspr_thread_mutex_unlock(lock)); return new; #else (*mem)--; @@ -308,19 +308,19 @@ int apr_atomic_dec32(volatile apr_uint32_t *mem) #endif /* !defined(APR_OVERRIDE_ATOMIC_DEC32) */ #if !defined(APR_OVERRIDE_ATOMIC_CAS32) -apr_uint32_t apr_atomic_cas32(volatile apr_uint32_t *mem, apr_uint32_t with, - apr_uint32_t cmp) +fspr_uint32_t fspr_atomic_cas32(volatile fspr_uint32_t *mem, fspr_uint32_t with, + fspr_uint32_t cmp) { - apr_uint32_t prev; + fspr_uint32_t prev; #if APR_HAS_THREADS - apr_thread_mutex_t *lock = hash_mutex[ATOMIC_HASH(mem)]; + fspr_thread_mutex_t *lock = hash_mutex[ATOMIC_HASH(mem)]; - CHECK(apr_thread_mutex_lock(lock)); + CHECK(fspr_thread_mutex_lock(lock)); prev = *mem; if (prev == cmp) { *mem = with; } - CHECK(apr_thread_mutex_unlock(lock)); + CHECK(fspr_thread_mutex_unlock(lock)); #else prev = *mem; if (prev == cmp) { @@ -333,25 +333,25 @@ apr_uint32_t apr_atomic_cas32(volatile apr_uint32_t *mem, apr_uint32_t with, #if !defined(APR_OVERRIDE_ATOMIC_XCHG32) #if defined(APR_OVERRIDE_ATOMIC_CAS32) -apr_uint32_t apr_atomic_xchg32(volatile apr_uint32_t *mem, apr_uint32_t val) +fspr_uint32_t fspr_atomic_xchg32(volatile fspr_uint32_t *mem, fspr_uint32_t val) { - apr_uint32_t prev; + fspr_uint32_t prev; do { prev = *mem; - } while (apr_atomic_cas32(mem, val, prev) != prev); + } while (fspr_atomic_cas32(mem, val, prev) != prev); return prev; } #else -apr_uint32_t apr_atomic_xchg32(volatile apr_uint32_t *mem, apr_uint32_t val) +fspr_uint32_t fspr_atomic_xchg32(volatile fspr_uint32_t *mem, fspr_uint32_t val) { - apr_uint32_t prev; + fspr_uint32_t prev; #if APR_HAS_THREADS - apr_thread_mutex_t *lock = hash_mutex[ATOMIC_HASH(mem)]; + fspr_thread_mutex_t *lock = hash_mutex[ATOMIC_HASH(mem)]; - CHECK(apr_thread_mutex_lock(lock)); + CHECK(fspr_thread_mutex_lock(lock)); prev = *mem; *mem = val; - CHECK(apr_thread_mutex_unlock(lock)); + CHECK(fspr_thread_mutex_unlock(lock)); #else prev = *mem; *mem = val; @@ -362,18 +362,18 @@ apr_uint32_t apr_atomic_xchg32(volatile apr_uint32_t *mem, apr_uint32_t val) #endif /* !defined(APR_OVERRIDE_ATOMIC_XCHG32) */ #if !defined(APR_OVERRIDE_ATOMIC_CASPTR) -void *apr_atomic_casptr(volatile void **mem, void *with, const void *cmp) +void *fspr_atomic_casptr(volatile void **mem, void *with, const void *cmp) { void *prev; #if APR_HAS_THREADS - apr_thread_mutex_t *lock = hash_mutex[ATOMIC_HASH(mem)]; + fspr_thread_mutex_t *lock = hash_mutex[ATOMIC_HASH(mem)]; - CHECK(apr_thread_mutex_lock(lock)); + CHECK(fspr_thread_mutex_lock(lock)); prev = *(void **)mem; if (prev == cmp) { *mem = with; } - CHECK(apr_thread_mutex_unlock(lock)); + CHECK(fspr_thread_mutex_unlock(lock)); #else prev = *(void **)mem; if (prev == cmp) { @@ -385,7 +385,7 @@ void *apr_atomic_casptr(volatile void **mem, void *with, const void *cmp) #endif /* !defined(APR_OVERRIDE_ATOMIC_CASPTR) */ #if !defined(APR_OVERRIDE_ATOMIC_READ32) -APR_DECLARE(apr_uint32_t) apr_atomic_read32(volatile apr_uint32_t *mem) +APR_DECLARE(fspr_uint32_t) fspr_atomic_read32(volatile fspr_uint32_t *mem) { return *mem; } diff --git a/libs/apr/atomic/win32/apr_atomic.c b/libs/apr/atomic/win32/fspr_atomic.c similarity index 56% rename from libs/apr/atomic/win32/apr_atomic.c rename to libs/apr/atomic/win32/fspr_atomic.c index 18a7bcd0ba3..e9cfc0558ab 100644 --- a/libs/apr/atomic/win32/apr_atomic.c +++ b/libs/apr/atomic/win32/fspr_atomic.c @@ -14,59 +14,59 @@ * limitations under the License. */ -#include "apr.h" -#include "apr_atomic.h" -#include "apr_thread_mutex.h" +#include "fspr.h" +#include "fspr_atomic.h" +#include "fspr_thread_mutex.h" -APR_DECLARE(apr_status_t) apr_atomic_init(apr_pool_t *p) +APR_DECLARE(fspr_status_t) fspr_atomic_init(fspr_pool_t *p) { return APR_SUCCESS; } /* - * Remapping function pointer type to accept apr_uint32_t's type-safely - * as the arguments for as our apr_atomic_foo32 Functions + * Remapping function pointer type to accept fspr_uint32_t's type-safely + * as the arguments for as our fspr_atomic_foo32 Functions */ #if (_MSC_VER < 1800) -typedef WINBASEAPI apr_uint32_t (WINAPI * apr_atomic_win32_ptr_fn) - (apr_uint32_t volatile *); -typedef WINBASEAPI apr_uint32_t (WINAPI * apr_atomic_win32_ptr_val_fn) - (apr_uint32_t volatile *, - apr_uint32_t); -typedef WINBASEAPI apr_uint32_t (WINAPI * apr_atomic_win32_ptr_val_val_fn) - (apr_uint32_t volatile *, - apr_uint32_t, apr_uint32_t); -typedef WINBASEAPI void * (WINAPI * apr_atomic_win32_ptr_ptr_ptr_fn) +typedef WINBASEAPI fspr_uint32_t (WINAPI * fspr_atomic_win32_ptr_fn) + (fspr_uint32_t volatile *); +typedef WINBASEAPI fspr_uint32_t (WINAPI * fspr_atomic_win32_ptr_val_fn) + (fspr_uint32_t volatile *, + fspr_uint32_t); +typedef WINBASEAPI fspr_uint32_t (WINAPI * fspr_atomic_win32_ptr_val_val_fn) + (fspr_uint32_t volatile *, + fspr_uint32_t, fspr_uint32_t); +typedef WINBASEAPI void * (WINAPI * fspr_atomic_win32_ptr_ptr_ptr_fn) (volatile void **, void *, const void *); #endif -APR_DECLARE(apr_uint32_t) apr_atomic_add32(volatile apr_uint32_t *mem, apr_uint32_t val) +APR_DECLARE(fspr_uint32_t) fspr_atomic_add32(volatile fspr_uint32_t *mem, fspr_uint32_t val) { #if (defined(_M_IA64) || defined(_M_AMD64)) return InterlockedExchangeAdd(mem, val); #elif (_MSC_VER >= 1800) return InterlockedExchangeAdd(mem, val); #else - return ((apr_atomic_win32_ptr_val_fn)InterlockedExchangeAdd)(mem, val); + return ((fspr_atomic_win32_ptr_val_fn)InterlockedExchangeAdd)(mem, val); #endif } /* Of course we want the 2's compliment of the unsigned value, val */ #pragma warning(disable: 4146) -APR_DECLARE(void) apr_atomic_sub32(volatile apr_uint32_t *mem, apr_uint32_t val) +APR_DECLARE(void) fspr_atomic_sub32(volatile fspr_uint32_t *mem, fspr_uint32_t val) { #if (defined(_M_IA64) || defined(_M_AMD64)) InterlockedExchangeAdd(mem, -val); #elif (_MSC_VER >= 1800) InterlockedExchangeAdd(mem, -val); #else - ((apr_atomic_win32_ptr_val_fn)InterlockedExchangeAdd)(mem, -val); + ((fspr_atomic_win32_ptr_val_fn)InterlockedExchangeAdd)(mem, -val); #endif } -APR_DECLARE(apr_uint32_t) apr_atomic_inc32(volatile apr_uint32_t *mem) +APR_DECLARE(fspr_uint32_t) fspr_atomic_inc32(volatile fspr_uint32_t *mem) { /* we return old value, win32 returns new value :( */ #if (defined(_M_IA64) || defined(_M_AMD64)) && !defined(RC_INVOKED) @@ -74,50 +74,50 @@ APR_DECLARE(apr_uint32_t) apr_atomic_inc32(volatile apr_uint32_t *mem) #elif (_MSC_VER >= 1800) return InterlockedIncrement(mem) - 1; #else - return ((apr_atomic_win32_ptr_fn)InterlockedIncrement)(mem) - 1; + return ((fspr_atomic_win32_ptr_fn)InterlockedIncrement)(mem) - 1; #endif } -APR_DECLARE(int) apr_atomic_dec32(volatile apr_uint32_t *mem) +APR_DECLARE(int) fspr_atomic_dec32(volatile fspr_uint32_t *mem) { #if (defined(_M_IA64) || defined(_M_AMD64)) && !defined(RC_INVOKED) return InterlockedDecrement(mem); #elif (_MSC_VER >= 1800) return InterlockedDecrement(mem); #else - return ((apr_atomic_win32_ptr_fn)InterlockedDecrement)(mem); + return ((fspr_atomic_win32_ptr_fn)InterlockedDecrement)(mem); #endif } -APR_DECLARE(void) apr_atomic_set32(volatile apr_uint32_t *mem, apr_uint32_t val) +APR_DECLARE(void) fspr_atomic_set32(volatile fspr_uint32_t *mem, fspr_uint32_t val) { #if (defined(_M_IA64) || defined(_M_AMD64)) && !defined(RC_INVOKED) InterlockedExchange(mem, val); #elif (_MSC_VER >= 1800) InterlockedExchange(mem, val); #else - ((apr_atomic_win32_ptr_val_fn)InterlockedExchange)(mem, val); + ((fspr_atomic_win32_ptr_val_fn)InterlockedExchange)(mem, val); #endif } -APR_DECLARE(apr_uint32_t) apr_atomic_read32(volatile apr_uint32_t *mem) +APR_DECLARE(fspr_uint32_t) fspr_atomic_read32(volatile fspr_uint32_t *mem) { return *mem; } -APR_DECLARE(apr_uint32_t) apr_atomic_cas32(volatile apr_uint32_t *mem, apr_uint32_t with, - apr_uint32_t cmp) +APR_DECLARE(fspr_uint32_t) fspr_atomic_cas32(volatile fspr_uint32_t *mem, fspr_uint32_t with, + fspr_uint32_t cmp) { #if (defined(_M_IA64) || defined(_M_AMD64)) && !defined(RC_INVOKED) return InterlockedCompareExchange(mem, with, cmp); #elif (_MSC_VER >= 1800) return InterlockedCompareExchange(mem, with, cmp); #else - return ((apr_atomic_win32_ptr_val_val_fn)InterlockedCompareExchange)(mem, with, cmp); + return ((fspr_atomic_win32_ptr_val_val_fn)InterlockedCompareExchange)(mem, with, cmp); #endif } -APR_DECLARE(void *) apr_atomic_casptr(volatile void **mem, void *with, const void *cmp) +APR_DECLARE(void *) fspr_atomic_casptr(volatile void **mem, void *with, const void *cmp) { #if (defined(_M_IA64) || defined(_M_AMD64)) && !defined(RC_INVOKED) return InterlockedCompareExchangePointer(mem, with, cmp); @@ -125,17 +125,17 @@ APR_DECLARE(void *) apr_atomic_casptr(volatile void **mem, void *with, const voi return InterlockedCompareExchangePointer(mem, with, cmp); #else /* Too many VC6 users have stale win32 API files, stub this */ - return ((apr_atomic_win32_ptr_ptr_ptr_fn)InterlockedCompareExchange)(mem, with, cmp); + return ((fspr_atomic_win32_ptr_ptr_ptr_fn)InterlockedCompareExchange)(mem, with, cmp); #endif } -APR_DECLARE(apr_uint32_t) apr_atomic_xchg32(volatile apr_uint32_t *mem, apr_uint32_t val) +APR_DECLARE(fspr_uint32_t) fspr_atomic_xchg32(volatile fspr_uint32_t *mem, fspr_uint32_t val) { #if (defined(_M_IA64) || defined(_M_AMD64)) && !defined(RC_INVOKED) return InterlockedExchange(mem, val); #elif (_MSC_VER >= 1800) return InterlockedExchange(mem, val); #else - return ((apr_atomic_win32_ptr_val_fn)InterlockedExchange)(mem, val); + return ((fspr_atomic_win32_ptr_val_fn)InterlockedExchange)(mem, val); #endif } diff --git a/libs/apr/build-outputs.mk b/libs/apr/build-outputs.mk index 2c127688d1c..d3e68a8bea3 100644 --- a/libs/apr/build-outputs.mk +++ b/libs/apr/build-outputs.mk @@ -1,83 +1,83 @@ # DO NOT EDIT. AUTOMATICALLY GENERATED. -passwd/apr_getpass.lo: passwd/apr_getpass.c .make.dirs include/apr_allocator.h include/apr_general.h include/apr_errno.h include/apr_want.h include/apr_strings.h include/apr_thread_mutex.h include/apr_lib.h include/apr_pools.h -strings/apr_cpystrn.lo: strings/apr_cpystrn.c .make.dirs include/apr_allocator.h include/apr_general.h include/apr_errno.h include/apr_want.h include/apr_strings.h include/apr_thread_mutex.h include/apr_lib.h include/apr_pools.h -strings/apr_strnatcmp.lo: strings/apr_strnatcmp.c .make.dirs include/apr_allocator.h include/apr_general.h include/apr_errno.h include/apr_want.h include/apr_strings.h include/apr_thread_mutex.h include/apr_lib.h include/apr_pools.h -strings/apr_strings.lo: strings/apr_strings.c .make.dirs include/apr_allocator.h include/apr_general.h include/apr_errno.h include/apr_want.h include/apr_strings.h include/apr_thread_mutex.h include/apr_lib.h include/apr_pools.h -strings/apr_strtok.lo: strings/apr_strtok.c .make.dirs include/apr_allocator.h include/apr_general.h include/apr_errno.h include/apr_want.h include/apr_strings.h include/apr_thread_mutex.h include/apr_pools.h -strings/apr_fnmatch.lo: strings/apr_fnmatch.c .make.dirs include/apr_allocator.h include/apr_general.h include/apr_errno.h include/apr_want.h include/apr_file_info.h include/apr_user.h include/apr_fnmatch.h include/apr_strings.h include/apr_thread_mutex.h include/apr_lib.h include/apr_time.h include/apr_pools.h include/apr_tables.h -strings/apr_snprintf.lo: strings/apr_snprintf.c .make.dirs include/apr_allocator.h include/apr_general.h include/apr_network_io.h include/apr_portable.h include/apr_inherit.h include/apr_file_info.h include/apr_thread_mutex.h include/apr_thread_proc.h include/apr_dso.h include/apr_tables.h include/apr_errno.h include/apr_proc_mutex.h include/apr_user.h include/apr_file_io.h include/apr_strings.h include/apr_want.h include/apr_lib.h include/apr_shm.h include/apr_global_mutex.h include/apr_time.h include/apr_pools.h -tables/apr_tables.lo: tables/apr_tables.c .make.dirs include/apr_allocator.h include/apr_general.h include/apr_errno.h include/apr_want.h include/apr_strings.h include/apr_thread_mutex.h include/apr_lib.h include/apr_pools.h include/apr_tables.h -tables/apr_hash.lo: tables/apr_hash.c .make.dirs include/apr_allocator.h include/apr_general.h include/apr_errno.h include/apr_want.h include/apr_thread_mutex.h include/apr_hash.h include/apr_pools.h +passwd/fspr_getpass.lo: passwd/fspr_getpass.c .make.dirs include/fspr_allocator.h include/fspr_general.h include/fspr_errno.h include/fspr_want.h include/fspr_strings.h include/fspr_thread_mutex.h include/fspr_lib.h include/fspr_pools.h +strings/fspr_cpystrn.lo: strings/fspr_cpystrn.c .make.dirs include/fspr_allocator.h include/fspr_general.h include/fspr_errno.h include/fspr_want.h include/fspr_strings.h include/fspr_thread_mutex.h include/fspr_lib.h include/fspr_pools.h +strings/fspr_strnatcmp.lo: strings/fspr_strnatcmp.c .make.dirs include/fspr_allocator.h include/fspr_general.h include/fspr_errno.h include/fspr_want.h include/fspr_strings.h include/fspr_thread_mutex.h include/fspr_lib.h include/fspr_pools.h +strings/fspr_strings.lo: strings/fspr_strings.c .make.dirs include/fspr_allocator.h include/fspr_general.h include/fspr_errno.h include/fspr_want.h include/fspr_strings.h include/fspr_thread_mutex.h include/fspr_lib.h include/fspr_pools.h +strings/fspr_strtok.lo: strings/fspr_strtok.c .make.dirs include/fspr_allocator.h include/fspr_general.h include/fspr_errno.h include/fspr_want.h include/fspr_strings.h include/fspr_thread_mutex.h include/fspr_pools.h +strings/fspr_fnmatch.lo: strings/fspr_fnmatch.c .make.dirs include/fspr_allocator.h include/fspr_general.h include/fspr_errno.h include/fspr_want.h include/fspr_file_info.h include/fspr_user.h include/fspr_fnmatch.h include/fspr_strings.h include/fspr_thread_mutex.h include/fspr_lib.h include/fspr_time.h include/fspr_pools.h include/fspr_tables.h +strings/fspr_snprintf.lo: strings/fspr_snprintf.c .make.dirs include/fspr_allocator.h include/fspr_general.h include/fspr_network_io.h include/fspr_portable.h include/fspr_inherit.h include/fspr_file_info.h include/fspr_thread_mutex.h include/fspr_thread_proc.h include/fspr_dso.h include/fspr_tables.h include/fspr_errno.h include/fspr_proc_mutex.h include/fspr_user.h include/fspr_file_io.h include/fspr_strings.h include/fspr_want.h include/fspr_lib.h include/fspr_shm.h include/fspr_global_mutex.h include/fspr_time.h include/fspr_pools.h +tables/fspr_tables.lo: tables/fspr_tables.c .make.dirs include/fspr_allocator.h include/fspr_general.h include/fspr_errno.h include/fspr_want.h include/fspr_strings.h include/fspr_thread_mutex.h include/fspr_lib.h include/fspr_pools.h include/fspr_tables.h +tables/fspr_hash.lo: tables/fspr_hash.c .make.dirs include/fspr_allocator.h include/fspr_general.h include/fspr_errno.h include/fspr_want.h include/fspr_thread_mutex.h include/fspr_hash.h include/fspr_pools.h -OBJECTS_all = passwd/apr_getpass.lo strings/apr_cpystrn.lo strings/apr_strnatcmp.lo strings/apr_strings.lo strings/apr_strtok.lo strings/apr_fnmatch.lo strings/apr_snprintf.lo tables/apr_tables.lo tables/apr_hash.lo +OBJECTS_all = passwd/fspr_getpass.lo strings/fspr_cpystrn.lo strings/fspr_strnatcmp.lo strings/fspr_strings.lo strings/fspr_strtok.lo strings/fspr_fnmatch.lo strings/fspr_snprintf.lo tables/fspr_tables.lo tables/fspr_hash.lo -atomic/unix/apr_atomic.lo: atomic/unix/apr_atomic.c .make.dirs include/apr_allocator.h include/apr_general.h include/apr_errno.h include/apr_want.h include/apr_thread_mutex.h include/apr_atomic.h include/apr_pools.h +atomic/unix/fspr_atomic.lo: atomic/unix/fspr_atomic.c .make.dirs include/fspr_allocator.h include/fspr_general.h include/fspr_errno.h include/fspr_want.h include/fspr_thread_mutex.h include/fspr_atomic.h include/fspr_pools.h -OBJECTS_atomic_unix = atomic/unix/apr_atomic.lo +OBJECTS_atomic_unix = atomic/unix/fspr_atomic.lo -dso/unix/dso.lo: dso/unix/dso.c .make.dirs include/apr_allocator.h include/apr_general.h include/apr_network_io.h include/apr_portable.h include/apr_inherit.h include/apr_file_info.h include/apr_thread_mutex.h include/apr_thread_proc.h include/apr_dso.h include/apr_tables.h include/apr_errno.h include/apr_proc_mutex.h include/apr_user.h include/apr_file_io.h include/apr_strings.h include/apr_want.h include/apr_shm.h include/apr_global_mutex.h include/apr_time.h include/apr_pools.h +dso/unix/dso.lo: dso/unix/dso.c .make.dirs include/fspr_allocator.h include/fspr_general.h include/fspr_network_io.h include/fspr_portable.h include/fspr_inherit.h include/fspr_file_info.h include/fspr_thread_mutex.h include/fspr_thread_proc.h include/fspr_dso.h include/fspr_tables.h include/fspr_errno.h include/fspr_proc_mutex.h include/fspr_user.h include/fspr_file_io.h include/fspr_strings.h include/fspr_want.h include/fspr_shm.h include/fspr_global_mutex.h include/fspr_time.h include/fspr_pools.h OBJECTS_dso_unix = dso/unix/dso.lo file_io/unix/flock.lo: file_io/unix/flock.c .make.dirs -file_io/unix/readwrite.lo: file_io/unix/readwrite.c .make.dirs include/apr_support.h include/apr_allocator.h include/apr_network_io.h include/apr_general.h include/apr_inherit.h include/apr_file_info.h include/apr_thread_mutex.h include/apr_tables.h include/apr_errno.h include/apr_want.h include/apr_user.h include/apr_file_io.h include/apr_strings.h include/apr_time.h include/apr_pools.h -file_io/unix/filepath_util.lo: file_io/unix/filepath_util.c .make.dirs include/apr_allocator.h include/apr_general.h include/apr_errno.h include/apr_want.h include/apr_strings.h include/apr_thread_mutex.h include/apr_pools.h include/apr_tables.h +file_io/unix/readwrite.lo: file_io/unix/readwrite.c .make.dirs include/fspr_support.h include/fspr_allocator.h include/fspr_network_io.h include/fspr_general.h include/fspr_inherit.h include/fspr_file_info.h include/fspr_thread_mutex.h include/fspr_tables.h include/fspr_errno.h include/fspr_want.h include/fspr_user.h include/fspr_file_io.h include/fspr_strings.h include/fspr_time.h include/fspr_pools.h +file_io/unix/filepath_util.lo: file_io/unix/filepath_util.c .make.dirs include/fspr_allocator.h include/fspr_general.h include/fspr_errno.h include/fspr_want.h include/fspr_strings.h include/fspr_thread_mutex.h include/fspr_pools.h include/fspr_tables.h file_io/unix/seek.lo: file_io/unix/seek.c .make.dirs -file_io/unix/dir.lo: file_io/unix/dir.c .make.dirs include/apr_allocator.h include/apr_general.h include/apr_network_io.h include/apr_portable.h include/apr_inherit.h include/apr_file_info.h include/apr_thread_mutex.h include/apr_thread_proc.h include/apr_dso.h include/apr_tables.h include/apr_errno.h include/apr_proc_mutex.h include/apr_user.h include/apr_file_io.h include/apr_strings.h include/apr_want.h include/apr_shm.h include/apr_global_mutex.h include/apr_time.h include/apr_pools.h -file_io/unix/mktemp.lo: file_io/unix/mktemp.c .make.dirs include/apr_allocator.h include/apr_general.h include/apr_network_io.h include/apr_portable.h include/apr_inherit.h include/apr_file_info.h include/apr_thread_mutex.h include/apr_thread_proc.h include/apr_dso.h include/apr_tables.h include/apr_errno.h include/apr_proc_mutex.h include/apr_user.h include/apr_file_io.h include/apr_strings.h include/apr_want.h include/apr_shm.h include/apr_global_mutex.h include/apr_time.h include/apr_pools.h -file_io/unix/filedup.lo: file_io/unix/filedup.c .make.dirs include/apr_allocator.h include/apr_general.h include/apr_network_io.h include/apr_portable.h include/apr_inherit.h include/apr_file_info.h include/apr_thread_mutex.h include/apr_thread_proc.h include/apr_dso.h include/apr_tables.h include/apr_errno.h include/apr_want.h include/apr_user.h include/apr_file_io.h include/apr_strings.h include/apr_proc_mutex.h include/apr_shm.h include/apr_global_mutex.h include/apr_time.h include/apr_pools.h -file_io/unix/tempdir.lo: file_io/unix/tempdir.c .make.dirs include/apr_allocator.h include/apr_general.h include/apr_errno.h include/apr_env.h include/apr_file_info.h include/apr_user.h include/apr_file_io.h include/apr_strings.h include/apr_want.h include/apr_thread_mutex.h include/apr_inherit.h include/apr_time.h include/apr_pools.h include/apr_tables.h -file_io/unix/filepath.lo: file_io/unix/filepath.c .make.dirs include/apr_allocator.h include/apr_general.h include/apr_errno.h include/apr_want.h include/apr_file_info.h include/apr_user.h include/apr_file_io.h include/apr_strings.h include/apr_inherit.h include/apr_thread_mutex.h include/apr_time.h include/apr_pools.h include/apr_tables.h -file_io/unix/pipe.lo: file_io/unix/pipe.c .make.dirs include/apr_allocator.h include/apr_general.h include/apr_network_io.h include/apr_portable.h include/apr_inherit.h include/apr_file_info.h include/apr_thread_mutex.h include/apr_thread_proc.h include/apr_dso.h include/apr_tables.h include/apr_errno.h include/apr_proc_mutex.h include/apr_user.h include/apr_file_io.h include/apr_strings.h include/apr_want.h include/apr_shm.h include/apr_global_mutex.h include/apr_time.h include/apr_pools.h -file_io/unix/open.lo: file_io/unix/open.c .make.dirs include/apr_allocator.h include/apr_general.h include/apr_network_io.h include/apr_portable.h include/apr_inherit.h include/apr_file_info.h include/apr_thread_mutex.h include/apr_thread_proc.h include/apr_dso.h include/apr_tables.h include/apr_errno.h include/apr_want.h include/apr_user.h include/apr_file_io.h include/apr_strings.h include/apr_proc_mutex.h include/apr_hash.h include/apr_shm.h include/apr_global_mutex.h include/apr_time.h include/apr_pools.h -file_io/unix/filestat.lo: file_io/unix/filestat.c .make.dirs include/apr_allocator.h include/apr_general.h include/apr_errno.h include/apr_want.h include/apr_file_info.h include/apr_user.h include/apr_file_io.h include/apr_strings.h include/apr_inherit.h include/apr_thread_mutex.h include/apr_time.h include/apr_pools.h include/apr_tables.h -file_io/unix/copy.lo: file_io/unix/copy.c .make.dirs include/apr_allocator.h include/apr_general.h include/apr_errno.h include/apr_inherit.h include/apr_file_info.h include/apr_user.h include/apr_file_io.h include/apr_want.h include/apr_thread_mutex.h include/apr_time.h include/apr_pools.h include/apr_tables.h -file_io/unix/fileacc.lo: file_io/unix/fileacc.c .make.dirs include/apr_allocator.h include/apr_general.h include/apr_thread_mutex.h include/apr_errno.h include/apr_want.h include/apr_pools.h include/apr_strings.h -file_io/unix/fullrw.lo: file_io/unix/fullrw.c .make.dirs include/apr_allocator.h include/apr_general.h include/apr_errno.h include/apr_inherit.h include/apr_file_info.h include/apr_user.h include/apr_file_io.h include/apr_want.h include/apr_thread_mutex.h include/apr_time.h include/apr_pools.h include/apr_tables.h +file_io/unix/dir.lo: file_io/unix/dir.c .make.dirs include/fspr_allocator.h include/fspr_general.h include/fspr_network_io.h include/fspr_portable.h include/fspr_inherit.h include/fspr_file_info.h include/fspr_thread_mutex.h include/fspr_thread_proc.h include/fspr_dso.h include/fspr_tables.h include/fspr_errno.h include/fspr_proc_mutex.h include/fspr_user.h include/fspr_file_io.h include/fspr_strings.h include/fspr_want.h include/fspr_shm.h include/fspr_global_mutex.h include/fspr_time.h include/fspr_pools.h +file_io/unix/mktemp.lo: file_io/unix/mktemp.c .make.dirs include/fspr_allocator.h include/fspr_general.h include/fspr_network_io.h include/fspr_portable.h include/fspr_inherit.h include/fspr_file_info.h include/fspr_thread_mutex.h include/fspr_thread_proc.h include/fspr_dso.h include/fspr_tables.h include/fspr_errno.h include/fspr_proc_mutex.h include/fspr_user.h include/fspr_file_io.h include/fspr_strings.h include/fspr_want.h include/fspr_shm.h include/fspr_global_mutex.h include/fspr_time.h include/fspr_pools.h +file_io/unix/filedup.lo: file_io/unix/filedup.c .make.dirs include/fspr_allocator.h include/fspr_general.h include/fspr_network_io.h include/fspr_portable.h include/fspr_inherit.h include/fspr_file_info.h include/fspr_thread_mutex.h include/fspr_thread_proc.h include/fspr_dso.h include/fspr_tables.h include/fspr_errno.h include/fspr_want.h include/fspr_user.h include/fspr_file_io.h include/fspr_strings.h include/fspr_proc_mutex.h include/fspr_shm.h include/fspr_global_mutex.h include/fspr_time.h include/fspr_pools.h +file_io/unix/tempdir.lo: file_io/unix/tempdir.c .make.dirs include/fspr_allocator.h include/fspr_general.h include/fspr_errno.h include/fspr_env.h include/fspr_file_info.h include/fspr_user.h include/fspr_file_io.h include/fspr_strings.h include/fspr_want.h include/fspr_thread_mutex.h include/fspr_inherit.h include/fspr_time.h include/fspr_pools.h include/fspr_tables.h +file_io/unix/filepath.lo: file_io/unix/filepath.c .make.dirs include/fspr_allocator.h include/fspr_general.h include/fspr_errno.h include/fspr_want.h include/fspr_file_info.h include/fspr_user.h include/fspr_file_io.h include/fspr_strings.h include/fspr_inherit.h include/fspr_thread_mutex.h include/fspr_time.h include/fspr_pools.h include/fspr_tables.h +file_io/unix/pipe.lo: file_io/unix/pipe.c .make.dirs include/fspr_allocator.h include/fspr_general.h include/fspr_network_io.h include/fspr_portable.h include/fspr_inherit.h include/fspr_file_info.h include/fspr_thread_mutex.h include/fspr_thread_proc.h include/fspr_dso.h include/fspr_tables.h include/fspr_errno.h include/fspr_proc_mutex.h include/fspr_user.h include/fspr_file_io.h include/fspr_strings.h include/fspr_want.h include/fspr_shm.h include/fspr_global_mutex.h include/fspr_time.h include/fspr_pools.h +file_io/unix/open.lo: file_io/unix/open.c .make.dirs include/fspr_allocator.h include/fspr_general.h include/fspr_network_io.h include/fspr_portable.h include/fspr_inherit.h include/fspr_file_info.h include/fspr_thread_mutex.h include/fspr_thread_proc.h include/fspr_dso.h include/fspr_tables.h include/fspr_errno.h include/fspr_want.h include/fspr_user.h include/fspr_file_io.h include/fspr_strings.h include/fspr_proc_mutex.h include/fspr_hash.h include/fspr_shm.h include/fspr_global_mutex.h include/fspr_time.h include/fspr_pools.h +file_io/unix/filestat.lo: file_io/unix/filestat.c .make.dirs include/fspr_allocator.h include/fspr_general.h include/fspr_errno.h include/fspr_want.h include/fspr_file_info.h include/fspr_user.h include/fspr_file_io.h include/fspr_strings.h include/fspr_inherit.h include/fspr_thread_mutex.h include/fspr_time.h include/fspr_pools.h include/fspr_tables.h +file_io/unix/copy.lo: file_io/unix/copy.c .make.dirs include/fspr_allocator.h include/fspr_general.h include/fspr_errno.h include/fspr_inherit.h include/fspr_file_info.h include/fspr_user.h include/fspr_file_io.h include/fspr_want.h include/fspr_thread_mutex.h include/fspr_time.h include/fspr_pools.h include/fspr_tables.h +file_io/unix/fileacc.lo: file_io/unix/fileacc.c .make.dirs include/fspr_allocator.h include/fspr_general.h include/fspr_thread_mutex.h include/fspr_errno.h include/fspr_want.h include/fspr_pools.h include/fspr_strings.h +file_io/unix/fullrw.lo: file_io/unix/fullrw.c .make.dirs include/fspr_allocator.h include/fspr_general.h include/fspr_errno.h include/fspr_inherit.h include/fspr_file_info.h include/fspr_user.h include/fspr_file_io.h include/fspr_want.h include/fspr_thread_mutex.h include/fspr_time.h include/fspr_pools.h include/fspr_tables.h OBJECTS_file_io_unix = file_io/unix/flock.lo file_io/unix/readwrite.lo file_io/unix/filepath_util.lo file_io/unix/seek.lo file_io/unix/dir.lo file_io/unix/mktemp.lo file_io/unix/filedup.lo file_io/unix/tempdir.lo file_io/unix/filepath.lo file_io/unix/pipe.lo file_io/unix/open.lo file_io/unix/filestat.lo file_io/unix/copy.lo file_io/unix/fileacc.lo file_io/unix/fullrw.lo locks/unix/thread_rwlock.lo: locks/unix/thread_rwlock.c .make.dirs -locks/unix/thread_mutex.lo: locks/unix/thread_mutex.c .make.dirs include/apr_want.h +locks/unix/thread_mutex.lo: locks/unix/thread_mutex.c .make.dirs include/fspr_want.h locks/unix/thread_cond.lo: locks/unix/thread_cond.c .make.dirs -locks/unix/proc_mutex.lo: locks/unix/proc_mutex.c .make.dirs include/apr_allocator.h include/apr_general.h include/apr_thread_mutex.h include/apr_errno.h include/apr_want.h include/apr_pools.h include/apr_strings.h -locks/unix/global_mutex.lo: locks/unix/global_mutex.c .make.dirs include/apr_allocator.h include/apr_general.h include/apr_network_io.h include/apr_portable.h include/apr_inherit.h include/apr_file_info.h include/apr_thread_mutex.h include/apr_thread_proc.h include/apr_dso.h include/apr_tables.h include/apr_errno.h include/apr_proc_mutex.h include/apr_user.h include/apr_file_io.h include/apr_strings.h include/apr_want.h include/apr_shm.h include/apr_global_mutex.h include/apr_time.h include/apr_pools.h +locks/unix/proc_mutex.lo: locks/unix/proc_mutex.c .make.dirs include/fspr_allocator.h include/fspr_general.h include/fspr_thread_mutex.h include/fspr_errno.h include/fspr_want.h include/fspr_pools.h include/fspr_strings.h +locks/unix/global_mutex.lo: locks/unix/global_mutex.c .make.dirs include/fspr_allocator.h include/fspr_general.h include/fspr_network_io.h include/fspr_portable.h include/fspr_inherit.h include/fspr_file_info.h include/fspr_thread_mutex.h include/fspr_thread_proc.h include/fspr_dso.h include/fspr_tables.h include/fspr_errno.h include/fspr_proc_mutex.h include/fspr_user.h include/fspr_file_io.h include/fspr_strings.h include/fspr_want.h include/fspr_shm.h include/fspr_global_mutex.h include/fspr_time.h include/fspr_pools.h OBJECTS_locks_unix = locks/unix/thread_rwlock.lo locks/unix/thread_mutex.lo locks/unix/thread_cond.lo locks/unix/proc_mutex.lo locks/unix/global_mutex.lo -memory/unix/apr_pools.lo: memory/unix/apr_pools.c .make.dirs include/apr_allocator.h include/apr_general.h include/apr_network_io.h include/apr_portable.h include/apr_env.h include/apr_file_info.h include/apr_thread_mutex.h include/apr_thread_proc.h include/apr_dso.h include/apr_atomic.h include/apr_tables.h include/apr_errno.h include/apr_want.h include/apr_user.h include/apr_file_io.h include/apr_strings.h include/apr_inherit.h include/apr_hash.h include/apr_lib.h include/apr_proc_mutex.h include/apr_shm.h include/apr_global_mutex.h include/apr_time.h include/apr_pools.h +memory/unix/fspr_pools.lo: memory/unix/fspr_pools.c .make.dirs include/fspr_allocator.h include/fspr_general.h include/fspr_network_io.h include/fspr_portable.h include/fspr_env.h include/fspr_file_info.h include/fspr_thread_mutex.h include/fspr_thread_proc.h include/fspr_dso.h include/fspr_atomic.h include/fspr_tables.h include/fspr_errno.h include/fspr_want.h include/fspr_user.h include/fspr_file_io.h include/fspr_strings.h include/fspr_inherit.h include/fspr_hash.h include/fspr_lib.h include/fspr_proc_mutex.h include/fspr_shm.h include/fspr_global_mutex.h include/fspr_time.h include/fspr_pools.h -OBJECTS_memory_unix = memory/unix/apr_pools.lo +OBJECTS_memory_unix = memory/unix/fspr_pools.lo -misc/unix/charset.lo: misc/unix/charset.c .make.dirs include/apr_allocator.h include/apr_general.h include/apr_network_io.h include/apr_portable.h include/apr_inherit.h include/apr_file_info.h include/apr_thread_mutex.h include/apr_thread_proc.h include/apr_dso.h include/apr_tables.h include/apr_errno.h include/apr_proc_mutex.h include/apr_user.h include/apr_file_io.h include/apr_strings.h include/apr_want.h include/apr_shm.h include/apr_global_mutex.h include/apr_time.h include/apr_pools.h -misc/unix/env.lo: misc/unix/env.c .make.dirs include/apr_allocator.h include/apr_general.h include/apr_errno.h include/apr_want.h include/apr_env.h include/apr_thread_mutex.h include/apr_pools.h -misc/unix/version.lo: misc/unix/version.c .make.dirs include/apr_allocator.h include/apr_general.h include/apr_errno.h include/apr_want.h include/apr_version.h include/apr_thread_mutex.h include/apr_pools.h -misc/unix/rand.lo: misc/unix/rand.c .make.dirs include/apr_allocator.h include/apr_general.h include/apr_errno.h include/apr_want.h include/apr_thread_mutex.h include/apr_pools.h -misc/unix/start.lo: misc/unix/start.c .make.dirs include/apr_allocator.h include/apr_general.h include/apr_errno.h include/apr_signal.h include/apr_want.h include/apr_thread_mutex.h include/apr_atomic.h include/apr_pools.h -misc/unix/errorcodes.lo: misc/unix/errorcodes.c .make.dirs include/apr_allocator.h include/apr_general.h include/apr_errno.h include/apr_want.h include/apr_strings.h include/apr_thread_mutex.h include/apr_lib.h include/apr_dso.h include/apr_pools.h -misc/unix/getopt.lo: misc/unix/getopt.c .make.dirs include/apr_allocator.h include/apr_general.h include/apr_errno.h include/apr_want.h include/apr_strings.h include/apr_thread_mutex.h include/apr_lib.h include/apr_pools.h +misc/unix/charset.lo: misc/unix/charset.c .make.dirs include/fspr_allocator.h include/fspr_general.h include/fspr_network_io.h include/fspr_portable.h include/fspr_inherit.h include/fspr_file_info.h include/fspr_thread_mutex.h include/fspr_thread_proc.h include/fspr_dso.h include/fspr_tables.h include/fspr_errno.h include/fspr_proc_mutex.h include/fspr_user.h include/fspr_file_io.h include/fspr_strings.h include/fspr_want.h include/fspr_shm.h include/fspr_global_mutex.h include/fspr_time.h include/fspr_pools.h +misc/unix/env.lo: misc/unix/env.c .make.dirs include/fspr_allocator.h include/fspr_general.h include/fspr_errno.h include/fspr_want.h include/fspr_env.h include/fspr_thread_mutex.h include/fspr_pools.h +misc/unix/version.lo: misc/unix/version.c .make.dirs include/fspr_allocator.h include/fspr_general.h include/fspr_errno.h include/fspr_want.h include/fspr_version.h include/fspr_thread_mutex.h include/fspr_pools.h +misc/unix/rand.lo: misc/unix/rand.c .make.dirs include/fspr_allocator.h include/fspr_general.h include/fspr_errno.h include/fspr_want.h include/fspr_thread_mutex.h include/fspr_pools.h +misc/unix/start.lo: misc/unix/start.c .make.dirs include/fspr_allocator.h include/fspr_general.h include/fspr_errno.h include/fspr_signal.h include/fspr_want.h include/fspr_thread_mutex.h include/fspr_atomic.h include/fspr_pools.h +misc/unix/errorcodes.lo: misc/unix/errorcodes.c .make.dirs include/fspr_allocator.h include/fspr_general.h include/fspr_errno.h include/fspr_want.h include/fspr_strings.h include/fspr_thread_mutex.h include/fspr_lib.h include/fspr_dso.h include/fspr_pools.h +misc/unix/getopt.lo: misc/unix/getopt.c .make.dirs include/fspr_allocator.h include/fspr_general.h include/fspr_errno.h include/fspr_want.h include/fspr_strings.h include/fspr_thread_mutex.h include/fspr_lib.h include/fspr_pools.h misc/unix/otherchild.lo: misc/unix/otherchild.c .make.dirs OBJECTS_misc_unix = misc/unix/charset.lo misc/unix/env.lo misc/unix/version.lo misc/unix/rand.lo misc/unix/start.lo misc/unix/errorcodes.lo misc/unix/getopt.lo misc/unix/otherchild.lo -mmap/unix/mmap.lo: mmap/unix/mmap.c .make.dirs include/apr_allocator.h include/apr_general.h include/apr_network_io.h include/apr_portable.h include/apr_inherit.h include/apr_file_info.h include/apr_thread_mutex.h include/apr_thread_proc.h include/apr_dso.h include/apr_tables.h include/apr_errno.h include/apr_want.h include/apr_user.h include/apr_file_io.h include/apr_strings.h include/apr_proc_mutex.h include/apr_shm.h include/apr_ring.h include/apr_global_mutex.h include/apr_time.h include/apr_pools.h include/apr_mmap.h -mmap/unix/common.lo: mmap/unix/common.c .make.dirs include/apr_allocator.h include/apr_general.h include/apr_errno.h include/apr_inherit.h include/apr_file_info.h include/apr_user.h include/apr_file_io.h include/apr_want.h include/apr_thread_mutex.h include/apr_ring.h include/apr_tables.h include/apr_time.h include/apr_pools.h include/apr_mmap.h +mmap/unix/mmap.lo: mmap/unix/mmap.c .make.dirs include/fspr_allocator.h include/fspr_general.h include/fspr_network_io.h include/fspr_portable.h include/fspr_inherit.h include/fspr_file_info.h include/fspr_thread_mutex.h include/fspr_thread_proc.h include/fspr_dso.h include/fspr_tables.h include/fspr_errno.h include/fspr_want.h include/fspr_user.h include/fspr_file_io.h include/fspr_strings.h include/fspr_proc_mutex.h include/fspr_shm.h include/fspr_ring.h include/fspr_global_mutex.h include/fspr_time.h include/fspr_pools.h include/fspr_mmap.h +mmap/unix/common.lo: mmap/unix/common.c .make.dirs include/fspr_allocator.h include/fspr_general.h include/fspr_errno.h include/fspr_inherit.h include/fspr_file_info.h include/fspr_user.h include/fspr_file_io.h include/fspr_want.h include/fspr_thread_mutex.h include/fspr_ring.h include/fspr_tables.h include/fspr_time.h include/fspr_pools.h include/fspr_mmap.h OBJECTS_mmap_unix = mmap/unix/mmap.lo mmap/unix/common.lo -network_io/unix/sockaddr.lo: network_io/unix/sockaddr.c .make.dirs include/apr_allocator.h include/apr_general.h include/apr_errno.h include/apr_want.h include/apr_strings.h include/apr_thread_mutex.h include/apr_lib.h include/apr_pools.h -network_io/unix/sockopt.lo: network_io/unix/sockopt.c .make.dirs include/apr_allocator.h include/apr_general.h include/apr_thread_mutex.h include/apr_errno.h include/apr_want.h include/apr_pools.h include/apr_strings.h -network_io/unix/sendrecv.lo: network_io/unix/sendrecv.c .make.dirs include/apr_support.h include/apr_allocator.h include/apr_user.h include/apr_network_io.h include/apr_general.h include/apr_inherit.h include/apr_file_info.h include/apr_errno.h include/apr_file_io.h include/apr_want.h include/apr_thread_mutex.h include/apr_time.h include/apr_pools.h include/apr_tables.h -network_io/unix/multicast.lo: network_io/unix/multicast.c .make.dirs include/apr_support.h include/apr_allocator.h include/apr_network_io.h include/apr_portable.h include/apr_inherit.h include/apr_file_info.h include/apr_general.h include/apr_thread_mutex.h include/apr_thread_proc.h include/apr_dso.h include/apr_tables.h include/apr_errno.h include/apr_want.h include/apr_user.h include/apr_file_io.h include/apr_proc_mutex.h include/apr_shm.h include/apr_global_mutex.h include/apr_time.h include/apr_pools.h -network_io/unix/sockets.lo: network_io/unix/sockets.c .make.dirs include/apr_support.h include/apr_allocator.h include/apr_network_io.h include/apr_portable.h include/apr_inherit.h include/apr_file_info.h include/apr_general.h include/apr_thread_mutex.h include/apr_thread_proc.h include/apr_dso.h include/apr_tables.h include/apr_errno.h include/apr_want.h include/apr_user.h include/apr_file_io.h include/apr_strings.h include/apr_proc_mutex.h include/apr_shm.h include/apr_global_mutex.h include/apr_time.h include/apr_pools.h -network_io/unix/inet_ntop.lo: network_io/unix/inet_ntop.c .make.dirs include/apr_allocator.h include/apr_general.h include/apr_thread_mutex.h include/apr_errno.h include/apr_want.h include/apr_pools.h include/apr_strings.h +network_io/unix/sockaddr.lo: network_io/unix/sockaddr.c .make.dirs include/fspr_allocator.h include/fspr_general.h include/fspr_errno.h include/fspr_want.h include/fspr_strings.h include/fspr_thread_mutex.h include/fspr_lib.h include/fspr_pools.h +network_io/unix/sockopt.lo: network_io/unix/sockopt.c .make.dirs include/fspr_allocator.h include/fspr_general.h include/fspr_thread_mutex.h include/fspr_errno.h include/fspr_want.h include/fspr_pools.h include/fspr_strings.h +network_io/unix/sendrecv.lo: network_io/unix/sendrecv.c .make.dirs include/fspr_support.h include/fspr_allocator.h include/fspr_user.h include/fspr_network_io.h include/fspr_general.h include/fspr_inherit.h include/fspr_file_info.h include/fspr_errno.h include/fspr_file_io.h include/fspr_want.h include/fspr_thread_mutex.h include/fspr_time.h include/fspr_pools.h include/fspr_tables.h +network_io/unix/multicast.lo: network_io/unix/multicast.c .make.dirs include/fspr_support.h include/fspr_allocator.h include/fspr_network_io.h include/fspr_portable.h include/fspr_inherit.h include/fspr_file_info.h include/fspr_general.h include/fspr_thread_mutex.h include/fspr_thread_proc.h include/fspr_dso.h include/fspr_tables.h include/fspr_errno.h include/fspr_want.h include/fspr_user.h include/fspr_file_io.h include/fspr_proc_mutex.h include/fspr_shm.h include/fspr_global_mutex.h include/fspr_time.h include/fspr_pools.h +network_io/unix/sockets.lo: network_io/unix/sockets.c .make.dirs include/fspr_support.h include/fspr_allocator.h include/fspr_network_io.h include/fspr_portable.h include/fspr_inherit.h include/fspr_file_info.h include/fspr_general.h include/fspr_thread_mutex.h include/fspr_thread_proc.h include/fspr_dso.h include/fspr_tables.h include/fspr_errno.h include/fspr_want.h include/fspr_user.h include/fspr_file_io.h include/fspr_strings.h include/fspr_proc_mutex.h include/fspr_shm.h include/fspr_global_mutex.h include/fspr_time.h include/fspr_pools.h +network_io/unix/inet_ntop.lo: network_io/unix/inet_ntop.c .make.dirs include/fspr_allocator.h include/fspr_general.h include/fspr_thread_mutex.h include/fspr_errno.h include/fspr_want.h include/fspr_pools.h include/fspr_strings.h network_io/unix/inet_pton.lo: network_io/unix/inet_pton.c .make.dirs OBJECTS_network_io_unix = network_io/unix/sockaddr.lo network_io/unix/sockopt.lo network_io/unix/sendrecv.lo network_io/unix/multicast.lo network_io/unix/sockets.lo network_io/unix/inet_ntop.lo network_io/unix/inet_pton.lo poll/unix/epoll.lo: poll/unix/epoll.c .make.dirs -poll/unix/select.lo: poll/unix/select.c .make.dirs include/apr_allocator.h include/apr_general.h include/apr_network_io.h include/apr_portable.h include/apr_inherit.h include/apr_file_info.h include/apr_thread_mutex.h include/apr_thread_proc.h include/apr_dso.h include/apr_tables.h include/apr_errno.h include/apr_proc_mutex.h include/apr_user.h include/apr_file_io.h include/apr_want.h include/apr_poll.h include/apr_shm.h include/apr_global_mutex.h include/apr_time.h include/apr_pools.h +poll/unix/select.lo: poll/unix/select.c .make.dirs include/fspr_allocator.h include/fspr_general.h include/fspr_network_io.h include/fspr_portable.h include/fspr_inherit.h include/fspr_file_info.h include/fspr_thread_mutex.h include/fspr_thread_proc.h include/fspr_dso.h include/fspr_tables.h include/fspr_errno.h include/fspr_proc_mutex.h include/fspr_user.h include/fspr_file_io.h include/fspr_want.h include/fspr_poll.h include/fspr_shm.h include/fspr_global_mutex.h include/fspr_time.h include/fspr_pools.h poll/unix/poll.lo: poll/unix/poll.c .make.dirs poll/unix/port.lo: poll/unix/port.c .make.dirs poll/unix/kqueue.lo: poll/unix/kqueue.c .make.dirs @@ -85,147 +85,147 @@ poll/unix/kqueue.lo: poll/unix/kqueue.c .make.dirs OBJECTS_poll_unix = poll/unix/epoll.lo poll/unix/select.lo poll/unix/poll.lo poll/unix/port.lo poll/unix/kqueue.lo random/unix/sha2.lo: random/unix/sha2.c .make.dirs -random/unix/apr_random.lo: random/unix/apr_random.c .make.dirs include/apr_allocator.h include/apr_general.h include/apr_errno.h include/apr_inherit.h include/apr_file_info.h include/apr_user.h include/apr_file_io.h include/apr_want.h include/apr_thread_mutex.h include/apr_random.h include/apr_thread_proc.h include/apr_time.h include/apr_pools.h include/apr_tables.h -random/unix/sha2_glue.lo: random/unix/sha2_glue.c .make.dirs include/apr_allocator.h include/apr_general.h include/apr_errno.h include/apr_want.h include/apr_thread_mutex.h include/apr_random.h include/apr_pools.h +random/unix/fspr_random.lo: random/unix/fspr_random.c .make.dirs include/fspr_allocator.h include/fspr_general.h include/fspr_errno.h include/fspr_inherit.h include/fspr_file_info.h include/fspr_user.h include/fspr_file_io.h include/fspr_want.h include/fspr_thread_mutex.h include/fspr_random.h include/fspr_thread_proc.h include/fspr_time.h include/fspr_pools.h include/fspr_tables.h +random/unix/sha2_glue.lo: random/unix/sha2_glue.c .make.dirs include/fspr_allocator.h include/fspr_general.h include/fspr_errno.h include/fspr_want.h include/fspr_thread_mutex.h include/fspr_random.h include/fspr_pools.h -OBJECTS_random_unix = random/unix/sha2.lo random/unix/apr_random.lo random/unix/sha2_glue.lo +OBJECTS_random_unix = random/unix/sha2.lo random/unix/fspr_random.lo random/unix/sha2_glue.lo -shmem/unix/shm.lo: shmem/unix/shm.c .make.dirs include/apr_allocator.h include/apr_general.h include/apr_errno.h include/apr_want.h include/apr_user.h include/apr_strings.h include/apr_thread_mutex.h include/apr_pools.h +shmem/unix/shm.lo: shmem/unix/shm.c .make.dirs include/fspr_allocator.h include/fspr_general.h include/fspr_errno.h include/fspr_want.h include/fspr_user.h include/fspr_strings.h include/fspr_thread_mutex.h include/fspr_pools.h OBJECTS_shmem_unix = shmem/unix/shm.lo -support/unix/waitio.lo: support/unix/waitio.c .make.dirs include/apr_support.h include/apr_allocator.h include/apr_network_io.h include/apr_general.h include/apr_inherit.h include/apr_file_info.h include/apr_thread_mutex.h include/apr_tables.h include/apr_errno.h include/apr_want.h include/apr_user.h include/apr_file_io.h include/apr_poll.h include/apr_time.h include/apr_pools.h +support/unix/waitio.lo: support/unix/waitio.c .make.dirs include/fspr_support.h include/fspr_allocator.h include/fspr_network_io.h include/fspr_general.h include/fspr_inherit.h include/fspr_file_info.h include/fspr_thread_mutex.h include/fspr_tables.h include/fspr_errno.h include/fspr_want.h include/fspr_user.h include/fspr_file_io.h include/fspr_poll.h include/fspr_time.h include/fspr_pools.h OBJECTS_support_unix = support/unix/waitio.lo threadproc/unix/procsup.lo: threadproc/unix/procsup.c .make.dirs -threadproc/unix/thread.lo: threadproc/unix/thread.c .make.dirs include/apr_allocator.h include/apr_general.h include/apr_network_io.h include/apr_portable.h include/apr_inherit.h include/apr_file_info.h include/apr_thread_mutex.h include/apr_thread_proc.h include/apr_dso.h include/apr_tables.h include/apr_errno.h include/apr_proc_mutex.h include/apr_user.h include/apr_file_io.h include/apr_want.h include/apr_shm.h include/apr_global_mutex.h include/apr_time.h include/apr_pools.h -threadproc/unix/signals.lo: threadproc/unix/signals.c .make.dirs include/apr_allocator.h include/apr_general.h include/apr_errno.h include/apr_signal.h include/apr_strings.h include/apr_want.h include/apr_thread_mutex.h include/apr_pools.h -threadproc/unix/proc.lo: threadproc/unix/proc.c .make.dirs include/apr_allocator.h include/apr_general.h include/apr_network_io.h include/apr_portable.h include/apr_signal.h include/apr_file_info.h include/apr_thread_mutex.h include/apr_thread_proc.h include/apr_dso.h include/apr_proc_mutex.h include/apr_tables.h include/apr_errno.h include/apr_want.h include/apr_user.h include/apr_file_io.h include/apr_strings.h include/apr_inherit.h include/apr_random.h include/apr_shm.h include/apr_global_mutex.h include/apr_time.h include/apr_pools.h -threadproc/unix/threadpriv.lo: threadproc/unix/threadpriv.c .make.dirs include/apr_allocator.h include/apr_general.h include/apr_network_io.h include/apr_portable.h include/apr_inherit.h include/apr_file_info.h include/apr_thread_mutex.h include/apr_thread_proc.h include/apr_dso.h include/apr_tables.h include/apr_errno.h include/apr_proc_mutex.h include/apr_user.h include/apr_file_io.h include/apr_want.h include/apr_shm.h include/apr_global_mutex.h include/apr_time.h include/apr_pools.h +threadproc/unix/thread.lo: threadproc/unix/thread.c .make.dirs include/fspr_allocator.h include/fspr_general.h include/fspr_network_io.h include/fspr_portable.h include/fspr_inherit.h include/fspr_file_info.h include/fspr_thread_mutex.h include/fspr_thread_proc.h include/fspr_dso.h include/fspr_tables.h include/fspr_errno.h include/fspr_proc_mutex.h include/fspr_user.h include/fspr_file_io.h include/fspr_want.h include/fspr_shm.h include/fspr_global_mutex.h include/fspr_time.h include/fspr_pools.h +threadproc/unix/signals.lo: threadproc/unix/signals.c .make.dirs include/fspr_allocator.h include/fspr_general.h include/fspr_errno.h include/fspr_signal.h include/fspr_strings.h include/fspr_want.h include/fspr_thread_mutex.h include/fspr_pools.h +threadproc/unix/proc.lo: threadproc/unix/proc.c .make.dirs include/fspr_allocator.h include/fspr_general.h include/fspr_network_io.h include/fspr_portable.h include/fspr_signal.h include/fspr_file_info.h include/fspr_thread_mutex.h include/fspr_thread_proc.h include/fspr_dso.h include/fspr_proc_mutex.h include/fspr_tables.h include/fspr_errno.h include/fspr_want.h include/fspr_user.h include/fspr_file_io.h include/fspr_strings.h include/fspr_inherit.h include/fspr_random.h include/fspr_shm.h include/fspr_global_mutex.h include/fspr_time.h include/fspr_pools.h +threadproc/unix/threadpriv.lo: threadproc/unix/threadpriv.c .make.dirs include/fspr_allocator.h include/fspr_general.h include/fspr_network_io.h include/fspr_portable.h include/fspr_inherit.h include/fspr_file_info.h include/fspr_thread_mutex.h include/fspr_thread_proc.h include/fspr_dso.h include/fspr_tables.h include/fspr_errno.h include/fspr_proc_mutex.h include/fspr_user.h include/fspr_file_io.h include/fspr_want.h include/fspr_shm.h include/fspr_global_mutex.h include/fspr_time.h include/fspr_pools.h OBJECTS_threadproc_unix = threadproc/unix/procsup.lo threadproc/unix/thread.lo threadproc/unix/signals.lo threadproc/unix/proc.lo threadproc/unix/threadpriv.lo -time/unix/time.lo: time/unix/time.c .make.dirs include/apr_allocator.h include/apr_general.h include/apr_network_io.h include/apr_portable.h include/apr_inherit.h include/apr_file_info.h include/apr_thread_mutex.h include/apr_thread_proc.h include/apr_dso.h include/apr_tables.h include/apr_errno.h include/apr_want.h include/apr_user.h include/apr_file_io.h include/apr_strings.h include/apr_proc_mutex.h include/apr_lib.h include/apr_shm.h include/apr_global_mutex.h include/apr_time.h include/apr_pools.h -time/unix/timestr.lo: time/unix/timestr.c .make.dirs include/apr_allocator.h include/apr_general.h include/apr_network_io.h include/apr_portable.h include/apr_inherit.h include/apr_file_info.h include/apr_thread_mutex.h include/apr_thread_proc.h include/apr_dso.h include/apr_tables.h include/apr_errno.h include/apr_want.h include/apr_user.h include/apr_file_io.h include/apr_proc_mutex.h include/apr_lib.h include/apr_shm.h include/apr_global_mutex.h include/apr_time.h include/apr_pools.h +time/unix/time.lo: time/unix/time.c .make.dirs include/fspr_allocator.h include/fspr_general.h include/fspr_network_io.h include/fspr_portable.h include/fspr_inherit.h include/fspr_file_info.h include/fspr_thread_mutex.h include/fspr_thread_proc.h include/fspr_dso.h include/fspr_tables.h include/fspr_errno.h include/fspr_want.h include/fspr_user.h include/fspr_file_io.h include/fspr_strings.h include/fspr_proc_mutex.h include/fspr_lib.h include/fspr_shm.h include/fspr_global_mutex.h include/fspr_time.h include/fspr_pools.h +time/unix/timestr.lo: time/unix/timestr.c .make.dirs include/fspr_allocator.h include/fspr_general.h include/fspr_network_io.h include/fspr_portable.h include/fspr_inherit.h include/fspr_file_info.h include/fspr_thread_mutex.h include/fspr_thread_proc.h include/fspr_dso.h include/fspr_tables.h include/fspr_errno.h include/fspr_want.h include/fspr_user.h include/fspr_file_io.h include/fspr_proc_mutex.h include/fspr_lib.h include/fspr_shm.h include/fspr_global_mutex.h include/fspr_time.h include/fspr_pools.h OBJECTS_time_unix = time/unix/time.lo time/unix/timestr.lo -user/unix/userinfo.lo: user/unix/userinfo.c .make.dirs include/apr_allocator.h include/apr_general.h include/apr_network_io.h include/apr_portable.h include/apr_inherit.h include/apr_file_info.h include/apr_thread_mutex.h include/apr_thread_proc.h include/apr_dso.h include/apr_tables.h include/apr_errno.h include/apr_want.h include/apr_user.h include/apr_file_io.h include/apr_strings.h include/apr_proc_mutex.h include/apr_shm.h include/apr_global_mutex.h include/apr_time.h include/apr_pools.h -user/unix/groupinfo.lo: user/unix/groupinfo.c .make.dirs include/apr_allocator.h include/apr_general.h include/apr_network_io.h include/apr_portable.h include/apr_inherit.h include/apr_file_info.h include/apr_thread_mutex.h include/apr_thread_proc.h include/apr_dso.h include/apr_tables.h include/apr_errno.h include/apr_proc_mutex.h include/apr_user.h include/apr_file_io.h include/apr_strings.h include/apr_want.h include/apr_shm.h include/apr_global_mutex.h include/apr_time.h include/apr_pools.h +user/unix/userinfo.lo: user/unix/userinfo.c .make.dirs include/fspr_allocator.h include/fspr_general.h include/fspr_network_io.h include/fspr_portable.h include/fspr_inherit.h include/fspr_file_info.h include/fspr_thread_mutex.h include/fspr_thread_proc.h include/fspr_dso.h include/fspr_tables.h include/fspr_errno.h include/fspr_want.h include/fspr_user.h include/fspr_file_io.h include/fspr_strings.h include/fspr_proc_mutex.h include/fspr_shm.h include/fspr_global_mutex.h include/fspr_time.h include/fspr_pools.h +user/unix/groupinfo.lo: user/unix/groupinfo.c .make.dirs include/fspr_allocator.h include/fspr_general.h include/fspr_network_io.h include/fspr_portable.h include/fspr_inherit.h include/fspr_file_info.h include/fspr_thread_mutex.h include/fspr_thread_proc.h include/fspr_dso.h include/fspr_tables.h include/fspr_errno.h include/fspr_proc_mutex.h include/fspr_user.h include/fspr_file_io.h include/fspr_strings.h include/fspr_want.h include/fspr_shm.h include/fspr_global_mutex.h include/fspr_time.h include/fspr_pools.h OBJECTS_user_unix = user/unix/userinfo.lo user/unix/groupinfo.lo OBJECTS_unix = $(OBJECTS_all) $(OBJECTS_atomic_unix) $(OBJECTS_dso_unix) $(OBJECTS_file_io_unix) $(OBJECTS_locks_unix) $(OBJECTS_memory_unix) $(OBJECTS_misc_unix) $(OBJECTS_mmap_unix) $(OBJECTS_network_io_unix) $(OBJECTS_poll_unix) $(OBJECTS_random_unix) $(OBJECTS_shmem_unix) $(OBJECTS_support_unix) $(OBJECTS_threadproc_unix) $(OBJECTS_time_unix) $(OBJECTS_user_unix) -dso/aix/dso.lo: dso/aix/dso.c .make.dirs include/apr_allocator.h include/apr_general.h include/apr_network_io.h include/apr_portable.h include/apr_inherit.h include/apr_file_info.h include/apr_thread_mutex.h include/apr_thread_proc.h include/apr_dso.h include/apr_tables.h include/apr_errno.h include/apr_proc_mutex.h include/apr_user.h include/apr_file_io.h include/apr_want.h include/apr_shm.h include/apr_global_mutex.h include/apr_time.h include/apr_pools.h +dso/aix/dso.lo: dso/aix/dso.c .make.dirs include/fspr_allocator.h include/fspr_general.h include/fspr_network_io.h include/fspr_portable.h include/fspr_inherit.h include/fspr_file_info.h include/fspr_thread_mutex.h include/fspr_thread_proc.h include/fspr_dso.h include/fspr_tables.h include/fspr_errno.h include/fspr_proc_mutex.h include/fspr_user.h include/fspr_file_io.h include/fspr_want.h include/fspr_shm.h include/fspr_global_mutex.h include/fspr_time.h include/fspr_pools.h OBJECTS_dso_aix = dso/aix/dso.lo OBJECTS_aix = $(OBJECTS_all) $(OBJECTS_atomic_unix) $(OBJECTS_dso_aix) $(OBJECTS_file_io_unix) $(OBJECTS_locks_unix) $(OBJECTS_memory_unix) $(OBJECTS_misc_unix) $(OBJECTS_mmap_unix) $(OBJECTS_network_io_unix) $(OBJECTS_poll_unix) $(OBJECTS_random_unix) $(OBJECTS_shmem_unix) $(OBJECTS_support_unix) $(OBJECTS_threadproc_unix) $(OBJECTS_time_unix) $(OBJECTS_user_unix) -dso/beos/dso.lo: dso/beos/dso.c .make.dirs include/apr_allocator.h include/apr_general.h include/apr_network_io.h include/apr_portable.h include/apr_inherit.h include/apr_file_info.h include/apr_thread_mutex.h include/apr_thread_proc.h include/apr_dso.h include/apr_tables.h include/apr_errno.h include/apr_proc_mutex.h include/apr_user.h include/apr_file_io.h include/apr_want.h include/apr_shm.h include/apr_global_mutex.h include/apr_time.h include/apr_pools.h +dso/beos/dso.lo: dso/beos/dso.c .make.dirs include/fspr_allocator.h include/fspr_general.h include/fspr_network_io.h include/fspr_portable.h include/fspr_inherit.h include/fspr_file_info.h include/fspr_thread_mutex.h include/fspr_thread_proc.h include/fspr_dso.h include/fspr_tables.h include/fspr_errno.h include/fspr_proc_mutex.h include/fspr_user.h include/fspr_file_io.h include/fspr_want.h include/fspr_shm.h include/fspr_global_mutex.h include/fspr_time.h include/fspr_pools.h OBJECTS_dso_beos = dso/beos/dso.lo -locks/beos/thread_rwlock.lo: locks/beos/thread_rwlock.c .make.dirs include/apr_allocator.h include/apr_general.h include/apr_network_io.h include/apr_portable.h include/apr_inherit.h include/apr_file_info.h include/apr_thread_mutex.h include/apr_thread_proc.h include/apr_dso.h include/apr_tables.h include/apr_errno.h include/apr_proc_mutex.h include/apr_user.h include/apr_file_io.h include/apr_strings.h include/apr_want.h include/apr_shm.h include/apr_global_mutex.h include/apr_time.h include/apr_pools.h -locks/beos/thread_mutex.lo: locks/beos/thread_mutex.c .make.dirs include/apr_allocator.h include/apr_general.h include/apr_network_io.h include/apr_portable.h include/apr_inherit.h include/apr_file_info.h include/apr_thread_mutex.h include/apr_thread_proc.h include/apr_dso.h include/apr_tables.h include/apr_errno.h include/apr_proc_mutex.h include/apr_user.h include/apr_file_io.h include/apr_strings.h include/apr_want.h include/apr_shm.h include/apr_global_mutex.h include/apr_time.h include/apr_pools.h -locks/beos/thread_cond.lo: locks/beos/thread_cond.c .make.dirs include/apr_allocator.h include/apr_general.h include/apr_network_io.h include/apr_portable.h include/apr_inherit.h include/apr_file_info.h include/apr_thread_mutex.h include/apr_thread_proc.h include/apr_dso.h include/apr_tables.h include/apr_errno.h include/apr_proc_mutex.h include/apr_user.h include/apr_file_io.h include/apr_strings.h include/apr_want.h include/apr_shm.h include/apr_global_mutex.h include/apr_time.h include/apr_pools.h -locks/beos/proc_mutex.lo: locks/beos/proc_mutex.c .make.dirs include/apr_allocator.h include/apr_general.h include/apr_network_io.h include/apr_portable.h include/apr_inherit.h include/apr_file_info.h include/apr_thread_mutex.h include/apr_thread_proc.h include/apr_dso.h include/apr_tables.h include/apr_errno.h include/apr_proc_mutex.h include/apr_user.h include/apr_file_io.h include/apr_strings.h include/apr_want.h include/apr_shm.h include/apr_global_mutex.h include/apr_time.h include/apr_pools.h +locks/beos/thread_rwlock.lo: locks/beos/thread_rwlock.c .make.dirs include/fspr_allocator.h include/fspr_general.h include/fspr_network_io.h include/fspr_portable.h include/fspr_inherit.h include/fspr_file_info.h include/fspr_thread_mutex.h include/fspr_thread_proc.h include/fspr_dso.h include/fspr_tables.h include/fspr_errno.h include/fspr_proc_mutex.h include/fspr_user.h include/fspr_file_io.h include/fspr_strings.h include/fspr_want.h include/fspr_shm.h include/fspr_global_mutex.h include/fspr_time.h include/fspr_pools.h +locks/beos/thread_mutex.lo: locks/beos/thread_mutex.c .make.dirs include/fspr_allocator.h include/fspr_general.h include/fspr_network_io.h include/fspr_portable.h include/fspr_inherit.h include/fspr_file_info.h include/fspr_thread_mutex.h include/fspr_thread_proc.h include/fspr_dso.h include/fspr_tables.h include/fspr_errno.h include/fspr_proc_mutex.h include/fspr_user.h include/fspr_file_io.h include/fspr_strings.h include/fspr_want.h include/fspr_shm.h include/fspr_global_mutex.h include/fspr_time.h include/fspr_pools.h +locks/beos/thread_cond.lo: locks/beos/thread_cond.c .make.dirs include/fspr_allocator.h include/fspr_general.h include/fspr_network_io.h include/fspr_portable.h include/fspr_inherit.h include/fspr_file_info.h include/fspr_thread_mutex.h include/fspr_thread_proc.h include/fspr_dso.h include/fspr_tables.h include/fspr_errno.h include/fspr_proc_mutex.h include/fspr_user.h include/fspr_file_io.h include/fspr_strings.h include/fspr_want.h include/fspr_shm.h include/fspr_global_mutex.h include/fspr_time.h include/fspr_pools.h +locks/beos/proc_mutex.lo: locks/beos/proc_mutex.c .make.dirs include/fspr_allocator.h include/fspr_general.h include/fspr_network_io.h include/fspr_portable.h include/fspr_inherit.h include/fspr_file_info.h include/fspr_thread_mutex.h include/fspr_thread_proc.h include/fspr_dso.h include/fspr_tables.h include/fspr_errno.h include/fspr_proc_mutex.h include/fspr_user.h include/fspr_file_io.h include/fspr_strings.h include/fspr_want.h include/fspr_shm.h include/fspr_global_mutex.h include/fspr_time.h include/fspr_pools.h OBJECTS_locks_beos = locks/beos/thread_rwlock.lo locks/beos/thread_mutex.lo locks/beos/thread_cond.lo locks/beos/proc_mutex.lo network_io/beos/socketcommon.lo: network_io/beos/socketcommon.c .make.dirs -network_io/beos/sendrecv.lo: network_io/beos/sendrecv.c .make.dirs include/apr_allocator.h include/apr_general.h include/apr_thread_mutex.h include/apr_errno.h include/apr_want.h include/apr_time.h include/apr_pools.h +network_io/beos/sendrecv.lo: network_io/beos/sendrecv.c .make.dirs include/fspr_allocator.h include/fspr_general.h include/fspr_thread_mutex.h include/fspr_errno.h include/fspr_want.h include/fspr_time.h include/fspr_pools.h OBJECTS_network_io_beos = network_io/beos/socketcommon.lo network_io/beos/sendrecv.lo -shmem/beos/shm.lo: shmem/beos/shm.c .make.dirs include/apr_allocator.h include/apr_general.h include/apr_network_io.h include/apr_portable.h include/apr_inherit.h include/apr_file_info.h include/apr_thread_mutex.h include/apr_thread_proc.h include/apr_dso.h include/apr_tables.h include/apr_errno.h include/apr_want.h include/apr_user.h include/apr_file_io.h include/apr_strings.h include/apr_proc_mutex.h include/apr_lib.h include/apr_shm.h include/apr_global_mutex.h include/apr_time.h include/apr_pools.h +shmem/beos/shm.lo: shmem/beos/shm.c .make.dirs include/fspr_allocator.h include/fspr_general.h include/fspr_network_io.h include/fspr_portable.h include/fspr_inherit.h include/fspr_file_info.h include/fspr_thread_mutex.h include/fspr_thread_proc.h include/fspr_dso.h include/fspr_tables.h include/fspr_errno.h include/fspr_want.h include/fspr_user.h include/fspr_file_io.h include/fspr_strings.h include/fspr_proc_mutex.h include/fspr_lib.h include/fspr_shm.h include/fspr_global_mutex.h include/fspr_time.h include/fspr_pools.h OBJECTS_shmem_beos = shmem/beos/shm.lo -threadproc/beos/apr_proc_stub.lo: threadproc/beos/apr_proc_stub.c .make.dirs -threadproc/beos/thread.lo: threadproc/beos/thread.c .make.dirs include/apr_allocator.h include/apr_general.h include/apr_network_io.h include/apr_portable.h include/apr_inherit.h include/apr_file_info.h include/apr_thread_mutex.h include/apr_thread_proc.h include/apr_dso.h include/apr_tables.h include/apr_errno.h include/apr_proc_mutex.h include/apr_user.h include/apr_file_io.h include/apr_want.h include/apr_shm.h include/apr_global_mutex.h include/apr_time.h include/apr_pools.h -threadproc/beos/proc.lo: threadproc/beos/proc.c .make.dirs include/apr_allocator.h include/apr_general.h include/apr_thread_mutex.h include/apr_errno.h include/apr_want.h include/apr_pools.h include/apr_strings.h +threadproc/beos/fspr_proc_stub.lo: threadproc/beos/fspr_proc_stub.c .make.dirs +threadproc/beos/thread.lo: threadproc/beos/thread.c .make.dirs include/fspr_allocator.h include/fspr_general.h include/fspr_network_io.h include/fspr_portable.h include/fspr_inherit.h include/fspr_file_info.h include/fspr_thread_mutex.h include/fspr_thread_proc.h include/fspr_dso.h include/fspr_tables.h include/fspr_errno.h include/fspr_proc_mutex.h include/fspr_user.h include/fspr_file_io.h include/fspr_want.h include/fspr_shm.h include/fspr_global_mutex.h include/fspr_time.h include/fspr_pools.h +threadproc/beos/proc.lo: threadproc/beos/proc.c .make.dirs include/fspr_allocator.h include/fspr_general.h include/fspr_thread_mutex.h include/fspr_errno.h include/fspr_want.h include/fspr_pools.h include/fspr_strings.h threadproc/beos/threadpriv.lo: threadproc/beos/threadpriv.c .make.dirs threadproc/beos/threadproc_common.lo: threadproc/beos/threadproc_common.c .make.dirs -OBJECTS_threadproc_beos = threadproc/beos/apr_proc_stub.lo threadproc/beos/thread.lo threadproc/beos/proc.lo threadproc/beos/threadpriv.lo threadproc/beos/threadproc_common.lo +OBJECTS_threadproc_beos = threadproc/beos/fspr_proc_stub.lo threadproc/beos/thread.lo threadproc/beos/proc.lo threadproc/beos/threadpriv.lo threadproc/beos/threadproc_common.lo OBJECTS_beos = $(OBJECTS_all) $(OBJECTS_atomic_unix) $(OBJECTS_dso_beos) $(OBJECTS_file_io_unix) $(OBJECTS_locks_beos) $(OBJECTS_memory_unix) $(OBJECTS_misc_unix) $(OBJECTS_mmap_unix) $(OBJECTS_network_io_beos) $(OBJECTS_poll_unix) $(OBJECTS_random_unix) $(OBJECTS_shmem_beos) $(OBJECTS_support_unix) $(OBJECTS_threadproc_beos) $(OBJECTS_time_unix) $(OBJECTS_user_unix) -dso/os2/dso.lo: dso/os2/dso.c .make.dirs include/apr_allocator.h include/apr_general.h include/apr_network_io.h include/apr_portable.h include/apr_inherit.h include/apr_file_info.h include/apr_thread_mutex.h include/apr_thread_proc.h include/apr_dso.h include/apr_tables.h include/apr_errno.h include/apr_proc_mutex.h include/apr_user.h include/apr_file_io.h include/apr_strings.h include/apr_want.h include/apr_shm.h include/apr_global_mutex.h include/apr_time.h include/apr_pools.h +dso/os2/dso.lo: dso/os2/dso.c .make.dirs include/fspr_allocator.h include/fspr_general.h include/fspr_network_io.h include/fspr_portable.h include/fspr_inherit.h include/fspr_file_info.h include/fspr_thread_mutex.h include/fspr_thread_proc.h include/fspr_dso.h include/fspr_tables.h include/fspr_errno.h include/fspr_proc_mutex.h include/fspr_user.h include/fspr_file_io.h include/fspr_strings.h include/fspr_want.h include/fspr_shm.h include/fspr_global_mutex.h include/fspr_time.h include/fspr_pools.h OBJECTS_dso_os2 = dso/os2/dso.lo -file_io/os2/dir_make_recurse.lo: file_io/os2/dir_make_recurse.c .make.dirs include/apr_allocator.h include/apr_general.h include/apr_errno.h include/apr_inherit.h include/apr_file_info.h include/apr_user.h include/apr_file_io.h include/apr_strings.h include/apr_want.h include/apr_thread_mutex.h include/apr_lib.h include/apr_time.h include/apr_pools.h include/apr_tables.h -file_io/os2/filesys.lo: file_io/os2/filesys.c .make.dirs include/apr_allocator.h include/apr_general.h include/apr_errno.h include/apr_want.h include/apr_strings.h include/apr_thread_mutex.h include/apr_lib.h include/apr_pools.h +file_io/os2/dir_make_recurse.lo: file_io/os2/dir_make_recurse.c .make.dirs include/fspr_allocator.h include/fspr_general.h include/fspr_errno.h include/fspr_inherit.h include/fspr_file_info.h include/fspr_user.h include/fspr_file_io.h include/fspr_strings.h include/fspr_want.h include/fspr_thread_mutex.h include/fspr_lib.h include/fspr_time.h include/fspr_pools.h include/fspr_tables.h +file_io/os2/filesys.lo: file_io/os2/filesys.c .make.dirs include/fspr_allocator.h include/fspr_general.h include/fspr_errno.h include/fspr_want.h include/fspr_strings.h include/fspr_thread_mutex.h include/fspr_lib.h include/fspr_pools.h file_io/os2/flock.lo: file_io/os2/flock.c .make.dirs -file_io/os2/readwrite.lo: file_io/os2/readwrite.c .make.dirs include/apr_allocator.h include/apr_general.h include/apr_errno.h include/apr_inherit.h include/apr_file_info.h include/apr_user.h include/apr_file_io.h include/apr_strings.h include/apr_want.h include/apr_thread_mutex.h include/apr_lib.h include/apr_time.h include/apr_pools.h include/apr_tables.h +file_io/os2/readwrite.lo: file_io/os2/readwrite.c .make.dirs include/fspr_allocator.h include/fspr_general.h include/fspr_errno.h include/fspr_inherit.h include/fspr_file_info.h include/fspr_user.h include/fspr_file_io.h include/fspr_strings.h include/fspr_want.h include/fspr_thread_mutex.h include/fspr_lib.h include/fspr_time.h include/fspr_pools.h include/fspr_tables.h file_io/os2/filepath_util.lo: file_io/os2/filepath_util.c .make.dirs -file_io/os2/seek.lo: file_io/os2/seek.c .make.dirs include/apr_allocator.h include/apr_general.h include/apr_errno.h include/apr_inherit.h include/apr_file_info.h include/apr_user.h include/apr_file_io.h include/apr_want.h include/apr_thread_mutex.h include/apr_lib.h include/apr_time.h include/apr_pools.h include/apr_tables.h -file_io/os2/dir.lo: file_io/os2/dir.c .make.dirs include/apr_allocator.h include/apr_general.h include/apr_network_io.h include/apr_portable.h include/apr_inherit.h include/apr_file_info.h include/apr_thread_mutex.h include/apr_thread_proc.h include/apr_dso.h include/apr_tables.h include/apr_errno.h include/apr_proc_mutex.h include/apr_user.h include/apr_file_io.h include/apr_strings.h include/apr_want.h include/apr_lib.h include/apr_shm.h include/apr_global_mutex.h include/apr_time.h include/apr_pools.h +file_io/os2/seek.lo: file_io/os2/seek.c .make.dirs include/fspr_allocator.h include/fspr_general.h include/fspr_errno.h include/fspr_inherit.h include/fspr_file_info.h include/fspr_user.h include/fspr_file_io.h include/fspr_want.h include/fspr_thread_mutex.h include/fspr_lib.h include/fspr_time.h include/fspr_pools.h include/fspr_tables.h +file_io/os2/dir.lo: file_io/os2/dir.c .make.dirs include/fspr_allocator.h include/fspr_general.h include/fspr_network_io.h include/fspr_portable.h include/fspr_inherit.h include/fspr_file_info.h include/fspr_thread_mutex.h include/fspr_thread_proc.h include/fspr_dso.h include/fspr_tables.h include/fspr_errno.h include/fspr_proc_mutex.h include/fspr_user.h include/fspr_file_io.h include/fspr_strings.h include/fspr_want.h include/fspr_lib.h include/fspr_shm.h include/fspr_global_mutex.h include/fspr_time.h include/fspr_pools.h file_io/os2/mktemp.lo: file_io/os2/mktemp.c .make.dirs -file_io/os2/filedup.lo: file_io/os2/filedup.c .make.dirs include/apr_allocator.h include/apr_general.h include/apr_errno.h include/apr_inherit.h include/apr_file_info.h include/apr_user.h include/apr_file_io.h include/apr_strings.h include/apr_want.h include/apr_thread_mutex.h include/apr_lib.h include/apr_time.h include/apr_pools.h include/apr_tables.h +file_io/os2/filedup.lo: file_io/os2/filedup.c .make.dirs include/fspr_allocator.h include/fspr_general.h include/fspr_errno.h include/fspr_inherit.h include/fspr_file_info.h include/fspr_user.h include/fspr_file_io.h include/fspr_strings.h include/fspr_want.h include/fspr_thread_mutex.h include/fspr_lib.h include/fspr_time.h include/fspr_pools.h include/fspr_tables.h file_io/os2/tempdir.lo: file_io/os2/tempdir.c .make.dirs -file_io/os2/maperrorcode.lo: file_io/os2/maperrorcode.c .make.dirs include/apr_allocator.h include/apr_general.h include/apr_errno.h include/apr_inherit.h include/apr_file_info.h include/apr_user.h include/apr_file_io.h include/apr_want.h include/apr_thread_mutex.h include/apr_time.h include/apr_pools.h include/apr_tables.h +file_io/os2/maperrorcode.lo: file_io/os2/maperrorcode.c .make.dirs include/fspr_allocator.h include/fspr_general.h include/fspr_errno.h include/fspr_inherit.h include/fspr_file_info.h include/fspr_user.h include/fspr_file_io.h include/fspr_want.h include/fspr_thread_mutex.h include/fspr_time.h include/fspr_pools.h include/fspr_tables.h file_io/os2/filepath.lo: file_io/os2/filepath.c .make.dirs -file_io/os2/pipe.lo: file_io/os2/pipe.c .make.dirs include/apr_allocator.h include/apr_general.h include/apr_network_io.h include/apr_portable.h include/apr_inherit.h include/apr_file_info.h include/apr_thread_mutex.h include/apr_thread_proc.h include/apr_dso.h include/apr_tables.h include/apr_errno.h include/apr_want.h include/apr_user.h include/apr_file_io.h include/apr_strings.h include/apr_proc_mutex.h include/apr_lib.h include/apr_shm.h include/apr_global_mutex.h include/apr_time.h include/apr_pools.h -file_io/os2/open.lo: file_io/os2/open.c .make.dirs include/apr_allocator.h include/apr_inherit.h include/apr_file_info.h include/apr_thread_mutex.h include/apr_thread_proc.h include/apr_tables.h include/apr_errno.h include/apr_want.h include/apr_user.h include/apr_file_io.h include/apr_strings.h include/apr_shm.h include/apr_general.h include/apr_network_io.h include/apr_portable.h include/apr_dso.h include/apr_proc_mutex.h include/apr_lib.h include/apr_global_mutex.h include/apr_time.h include/apr_pools.h -file_io/os2/filestat.lo: file_io/os2/filestat.c .make.dirs include/apr_allocator.h include/apr_general.h include/apr_errno.h include/apr_inherit.h include/apr_file_info.h include/apr_user.h include/apr_file_io.h include/apr_strings.h include/apr_want.h include/apr_thread_mutex.h include/apr_lib.h include/apr_time.h include/apr_pools.h include/apr_tables.h +file_io/os2/pipe.lo: file_io/os2/pipe.c .make.dirs include/fspr_allocator.h include/fspr_general.h include/fspr_network_io.h include/fspr_portable.h include/fspr_inherit.h include/fspr_file_info.h include/fspr_thread_mutex.h include/fspr_thread_proc.h include/fspr_dso.h include/fspr_tables.h include/fspr_errno.h include/fspr_want.h include/fspr_user.h include/fspr_file_io.h include/fspr_strings.h include/fspr_proc_mutex.h include/fspr_lib.h include/fspr_shm.h include/fspr_global_mutex.h include/fspr_time.h include/fspr_pools.h +file_io/os2/open.lo: file_io/os2/open.c .make.dirs include/fspr_allocator.h include/fspr_inherit.h include/fspr_file_info.h include/fspr_thread_mutex.h include/fspr_thread_proc.h include/fspr_tables.h include/fspr_errno.h include/fspr_want.h include/fspr_user.h include/fspr_file_io.h include/fspr_strings.h include/fspr_shm.h include/fspr_general.h include/fspr_network_io.h include/fspr_portable.h include/fspr_dso.h include/fspr_proc_mutex.h include/fspr_lib.h include/fspr_global_mutex.h include/fspr_time.h include/fspr_pools.h +file_io/os2/filestat.lo: file_io/os2/filestat.c .make.dirs include/fspr_allocator.h include/fspr_general.h include/fspr_errno.h include/fspr_inherit.h include/fspr_file_info.h include/fspr_user.h include/fspr_file_io.h include/fspr_strings.h include/fspr_want.h include/fspr_thread_mutex.h include/fspr_lib.h include/fspr_time.h include/fspr_pools.h include/fspr_tables.h file_io/os2/copy.lo: file_io/os2/copy.c .make.dirs file_io/os2/fileacc.lo: file_io/os2/fileacc.c .make.dirs file_io/os2/fullrw.lo: file_io/os2/fullrw.c .make.dirs OBJECTS_file_io_os2 = file_io/os2/dir_make_recurse.lo file_io/os2/filesys.lo file_io/os2/flock.lo file_io/os2/readwrite.lo file_io/os2/filepath_util.lo file_io/os2/seek.lo file_io/os2/dir.lo file_io/os2/mktemp.lo file_io/os2/filedup.lo file_io/os2/tempdir.lo file_io/os2/maperrorcode.lo file_io/os2/filepath.lo file_io/os2/pipe.lo file_io/os2/open.lo file_io/os2/filestat.lo file_io/os2/copy.lo file_io/os2/fileacc.lo file_io/os2/fullrw.lo -locks/os2/thread_rwlock.lo: locks/os2/thread_rwlock.c .make.dirs include/apr_allocator.h include/apr_general.h include/apr_network_io.h include/apr_portable.h include/apr_inherit.h include/apr_file_info.h include/apr_thread_mutex.h include/apr_thread_proc.h include/apr_dso.h include/apr_tables.h include/apr_errno.h include/apr_want.h include/apr_user.h include/apr_file_io.h include/apr_strings.h include/apr_proc_mutex.h include/apr_lib.h include/apr_shm.h include/apr_global_mutex.h include/apr_time.h include/apr_pools.h -locks/os2/thread_mutex.lo: locks/os2/thread_mutex.c .make.dirs include/apr_allocator.h include/apr_general.h include/apr_network_io.h include/apr_portable.h include/apr_inherit.h include/apr_file_info.h include/apr_thread_mutex.h include/apr_thread_proc.h include/apr_dso.h include/apr_tables.h include/apr_errno.h include/apr_want.h include/apr_user.h include/apr_file_io.h include/apr_strings.h include/apr_proc_mutex.h include/apr_lib.h include/apr_shm.h include/apr_global_mutex.h include/apr_time.h include/apr_pools.h -locks/os2/thread_cond.lo: locks/os2/thread_cond.c .make.dirs include/apr_allocator.h include/apr_general.h include/apr_network_io.h include/apr_portable.h include/apr_inherit.h include/apr_file_info.h include/apr_thread_mutex.h include/apr_thread_proc.h include/apr_dso.h include/apr_tables.h include/apr_errno.h include/apr_want.h include/apr_user.h include/apr_file_io.h include/apr_strings.h include/apr_proc_mutex.h include/apr_lib.h include/apr_shm.h include/apr_global_mutex.h include/apr_time.h include/apr_pools.h -locks/os2/proc_mutex.lo: locks/os2/proc_mutex.c .make.dirs include/apr_allocator.h include/apr_general.h include/apr_network_io.h include/apr_portable.h include/apr_inherit.h include/apr_file_info.h include/apr_thread_mutex.h include/apr_thread_proc.h include/apr_dso.h include/apr_tables.h include/apr_errno.h include/apr_want.h include/apr_user.h include/apr_file_io.h include/apr_strings.h include/apr_proc_mutex.h include/apr_lib.h include/apr_shm.h include/apr_global_mutex.h include/apr_time.h include/apr_pools.h +locks/os2/thread_rwlock.lo: locks/os2/thread_rwlock.c .make.dirs include/fspr_allocator.h include/fspr_general.h include/fspr_network_io.h include/fspr_portable.h include/fspr_inherit.h include/fspr_file_info.h include/fspr_thread_mutex.h include/fspr_thread_proc.h include/fspr_dso.h include/fspr_tables.h include/fspr_errno.h include/fspr_want.h include/fspr_user.h include/fspr_file_io.h include/fspr_strings.h include/fspr_proc_mutex.h include/fspr_lib.h include/fspr_shm.h include/fspr_global_mutex.h include/fspr_time.h include/fspr_pools.h +locks/os2/thread_mutex.lo: locks/os2/thread_mutex.c .make.dirs include/fspr_allocator.h include/fspr_general.h include/fspr_network_io.h include/fspr_portable.h include/fspr_inherit.h include/fspr_file_info.h include/fspr_thread_mutex.h include/fspr_thread_proc.h include/fspr_dso.h include/fspr_tables.h include/fspr_errno.h include/fspr_want.h include/fspr_user.h include/fspr_file_io.h include/fspr_strings.h include/fspr_proc_mutex.h include/fspr_lib.h include/fspr_shm.h include/fspr_global_mutex.h include/fspr_time.h include/fspr_pools.h +locks/os2/thread_cond.lo: locks/os2/thread_cond.c .make.dirs include/fspr_allocator.h include/fspr_general.h include/fspr_network_io.h include/fspr_portable.h include/fspr_inherit.h include/fspr_file_info.h include/fspr_thread_mutex.h include/fspr_thread_proc.h include/fspr_dso.h include/fspr_tables.h include/fspr_errno.h include/fspr_want.h include/fspr_user.h include/fspr_file_io.h include/fspr_strings.h include/fspr_proc_mutex.h include/fspr_lib.h include/fspr_shm.h include/fspr_global_mutex.h include/fspr_time.h include/fspr_pools.h +locks/os2/proc_mutex.lo: locks/os2/proc_mutex.c .make.dirs include/fspr_allocator.h include/fspr_general.h include/fspr_network_io.h include/fspr_portable.h include/fspr_inherit.h include/fspr_file_info.h include/fspr_thread_mutex.h include/fspr_thread_proc.h include/fspr_dso.h include/fspr_tables.h include/fspr_errno.h include/fspr_want.h include/fspr_user.h include/fspr_file_io.h include/fspr_strings.h include/fspr_proc_mutex.h include/fspr_lib.h include/fspr_shm.h include/fspr_global_mutex.h include/fspr_time.h include/fspr_pools.h OBJECTS_locks_os2 = locks/os2/thread_rwlock.lo locks/os2/thread_mutex.lo locks/os2/thread_cond.lo locks/os2/proc_mutex.lo network_io/os2/sockaddr.lo: network_io/os2/sockaddr.c .make.dirs -network_io/os2/sockopt.lo: network_io/os2/sockopt.c .make.dirs include/apr_allocator.h include/apr_general.h include/apr_network_io.h include/apr_errno.h include/apr_want.h include/apr_file_info.h include/apr_user.h include/apr_file_io.h include/apr_strings.h include/apr_inherit.h include/apr_thread_mutex.h include/apr_lib.h include/apr_time.h include/apr_pools.h include/apr_tables.h -network_io/os2/sendrecv_udp.lo: network_io/os2/sendrecv_udp.c .make.dirs include/apr_support.h include/apr_general.h include/apr_network_io.h include/apr_inherit.h include/apr_file_info.h include/apr_allocator.h include/apr_thread_mutex.h include/apr_tables.h include/apr_errno.h include/apr_want.h include/apr_user.h include/apr_file_io.h include/apr_lib.h include/apr_time.h include/apr_pools.h -network_io/os2/sendrecv.lo: network_io/os2/sendrecv.c .make.dirs include/apr_allocator.h include/apr_general.h include/apr_network_io.h include/apr_errno.h include/apr_want.h include/apr_file_info.h include/apr_user.h include/apr_file_io.h include/apr_inherit.h include/apr_thread_mutex.h include/apr_lib.h include/apr_time.h include/apr_pools.h include/apr_tables.h -network_io/os2/os2calls.lo: network_io/os2/os2calls.c .make.dirs include/apr_allocator.h include/apr_inherit.h include/apr_file_info.h include/apr_thread_mutex.h include/apr_thread_proc.h include/apr_tables.h include/apr_errno.h include/apr_want.h include/apr_user.h include/apr_file_io.h include/apr_shm.h include/apr_general.h include/apr_network_io.h include/apr_portable.h include/apr_dso.h include/apr_proc_mutex.h include/apr_lib.h include/apr_global_mutex.h include/apr_time.h include/apr_pools.h -network_io/os2/sockets.lo: network_io/os2/sockets.c .make.dirs include/apr_allocator.h include/apr_general.h include/apr_network_io.h include/apr_portable.h include/apr_inherit.h include/apr_file_info.h include/apr_thread_mutex.h include/apr_thread_proc.h include/apr_dso.h include/apr_tables.h include/apr_errno.h include/apr_want.h include/apr_user.h include/apr_file_io.h include/apr_strings.h include/apr_proc_mutex.h include/apr_lib.h include/apr_shm.h include/apr_global_mutex.h include/apr_time.h include/apr_pools.h +network_io/os2/sockopt.lo: network_io/os2/sockopt.c .make.dirs include/fspr_allocator.h include/fspr_general.h include/fspr_network_io.h include/fspr_errno.h include/fspr_want.h include/fspr_file_info.h include/fspr_user.h include/fspr_file_io.h include/fspr_strings.h include/fspr_inherit.h include/fspr_thread_mutex.h include/fspr_lib.h include/fspr_time.h include/fspr_pools.h include/fspr_tables.h +network_io/os2/sendrecv_udp.lo: network_io/os2/sendrecv_udp.c .make.dirs include/fspr_support.h include/fspr_general.h include/fspr_network_io.h include/fspr_inherit.h include/fspr_file_info.h include/fspr_allocator.h include/fspr_thread_mutex.h include/fspr_tables.h include/fspr_errno.h include/fspr_want.h include/fspr_user.h include/fspr_file_io.h include/fspr_lib.h include/fspr_time.h include/fspr_pools.h +network_io/os2/sendrecv.lo: network_io/os2/sendrecv.c .make.dirs include/fspr_allocator.h include/fspr_general.h include/fspr_network_io.h include/fspr_errno.h include/fspr_want.h include/fspr_file_info.h include/fspr_user.h include/fspr_file_io.h include/fspr_inherit.h include/fspr_thread_mutex.h include/fspr_lib.h include/fspr_time.h include/fspr_pools.h include/fspr_tables.h +network_io/os2/os2calls.lo: network_io/os2/os2calls.c .make.dirs include/fspr_allocator.h include/fspr_inherit.h include/fspr_file_info.h include/fspr_thread_mutex.h include/fspr_thread_proc.h include/fspr_tables.h include/fspr_errno.h include/fspr_want.h include/fspr_user.h include/fspr_file_io.h include/fspr_shm.h include/fspr_general.h include/fspr_network_io.h include/fspr_portable.h include/fspr_dso.h include/fspr_proc_mutex.h include/fspr_lib.h include/fspr_global_mutex.h include/fspr_time.h include/fspr_pools.h +network_io/os2/sockets.lo: network_io/os2/sockets.c .make.dirs include/fspr_allocator.h include/fspr_general.h include/fspr_network_io.h include/fspr_portable.h include/fspr_inherit.h include/fspr_file_info.h include/fspr_thread_mutex.h include/fspr_thread_proc.h include/fspr_dso.h include/fspr_tables.h include/fspr_errno.h include/fspr_want.h include/fspr_user.h include/fspr_file_io.h include/fspr_strings.h include/fspr_proc_mutex.h include/fspr_lib.h include/fspr_shm.h include/fspr_global_mutex.h include/fspr_time.h include/fspr_pools.h network_io/os2/inet_ntop.lo: network_io/os2/inet_ntop.c .make.dirs network_io/os2/inet_pton.lo: network_io/os2/inet_pton.c .make.dirs OBJECTS_network_io_os2 = network_io/os2/sockaddr.lo network_io/os2/sockopt.lo network_io/os2/sendrecv_udp.lo network_io/os2/sendrecv.lo network_io/os2/os2calls.lo network_io/os2/sockets.lo network_io/os2/inet_ntop.lo network_io/os2/inet_pton.lo -poll/os2/pollset.lo: poll/os2/pollset.c .make.dirs include/apr_allocator.h include/apr_general.h include/apr_network_io.h include/apr_errno.h include/apr_inherit.h include/apr_file_info.h include/apr_user.h include/apr_file_io.h include/apr_want.h include/apr_thread_mutex.h include/apr_poll.h include/apr_time.h include/apr_pools.h include/apr_tables.h -poll/os2/poll.lo: poll/os2/poll.c .make.dirs include/apr_allocator.h include/apr_general.h include/apr_network_io.h include/apr_errno.h include/apr_inherit.h include/apr_file_info.h include/apr_user.h include/apr_file_io.h include/apr_want.h include/apr_thread_mutex.h include/apr_poll.h include/apr_time.h include/apr_pools.h include/apr_tables.h +poll/os2/pollset.lo: poll/os2/pollset.c .make.dirs include/fspr_allocator.h include/fspr_general.h include/fspr_network_io.h include/fspr_errno.h include/fspr_inherit.h include/fspr_file_info.h include/fspr_user.h include/fspr_file_io.h include/fspr_want.h include/fspr_thread_mutex.h include/fspr_poll.h include/fspr_time.h include/fspr_pools.h include/fspr_tables.h +poll/os2/poll.lo: poll/os2/poll.c .make.dirs include/fspr_allocator.h include/fspr_general.h include/fspr_network_io.h include/fspr_errno.h include/fspr_inherit.h include/fspr_file_info.h include/fspr_user.h include/fspr_file_io.h include/fspr_want.h include/fspr_thread_mutex.h include/fspr_poll.h include/fspr_time.h include/fspr_pools.h include/fspr_tables.h OBJECTS_poll_os2 = poll/os2/pollset.lo poll/os2/poll.lo -shmem/os2/shm.lo: shmem/os2/shm.c .make.dirs include/apr_allocator.h include/apr_general.h include/apr_network_io.h include/apr_portable.h include/apr_inherit.h include/apr_file_info.h include/apr_thread_mutex.h include/apr_thread_proc.h include/apr_dso.h include/apr_tables.h include/apr_errno.h include/apr_want.h include/apr_user.h include/apr_file_io.h include/apr_strings.h include/apr_proc_mutex.h include/apr_lib.h include/apr_shm.h include/apr_global_mutex.h include/apr_time.h include/apr_pools.h +shmem/os2/shm.lo: shmem/os2/shm.c .make.dirs include/fspr_allocator.h include/fspr_general.h include/fspr_network_io.h include/fspr_portable.h include/fspr_inherit.h include/fspr_file_info.h include/fspr_thread_mutex.h include/fspr_thread_proc.h include/fspr_dso.h include/fspr_tables.h include/fspr_errno.h include/fspr_want.h include/fspr_user.h include/fspr_file_io.h include/fspr_strings.h include/fspr_proc_mutex.h include/fspr_lib.h include/fspr_shm.h include/fspr_global_mutex.h include/fspr_time.h include/fspr_pools.h OBJECTS_shmem_os2 = shmem/os2/shm.lo -threadproc/os2/thread.lo: threadproc/os2/thread.c .make.dirs include/apr_allocator.h include/apr_inherit.h include/apr_file_info.h include/apr_thread_mutex.h include/apr_thread_proc.h include/apr_tables.h include/apr_errno.h include/apr_want.h include/apr_user.h include/apr_file_io.h include/apr_shm.h include/apr_general.h include/apr_network_io.h include/apr_portable.h include/apr_dso.h include/apr_proc_mutex.h include/apr_lib.h include/apr_global_mutex.h include/apr_time.h include/apr_pools.h +threadproc/os2/thread.lo: threadproc/os2/thread.c .make.dirs include/fspr_allocator.h include/fspr_inherit.h include/fspr_file_info.h include/fspr_thread_mutex.h include/fspr_thread_proc.h include/fspr_tables.h include/fspr_errno.h include/fspr_want.h include/fspr_user.h include/fspr_file_io.h include/fspr_shm.h include/fspr_general.h include/fspr_network_io.h include/fspr_portable.h include/fspr_dso.h include/fspr_proc_mutex.h include/fspr_lib.h include/fspr_global_mutex.h include/fspr_time.h include/fspr_pools.h threadproc/os2/signals.lo: threadproc/os2/signals.c .make.dirs -threadproc/os2/proc.lo: threadproc/os2/proc.c .make.dirs include/apr_allocator.h include/apr_general.h include/apr_network_io.h include/apr_portable.h include/apr_signal.h include/apr_file_info.h include/apr_thread_mutex.h include/apr_thread_proc.h include/apr_dso.h include/apr_proc_mutex.h include/apr_tables.h include/apr_errno.h include/apr_want.h include/apr_user.h include/apr_file_io.h include/apr_strings.h include/apr_inherit.h include/apr_lib.h include/apr_shm.h include/apr_global_mutex.h include/apr_time.h include/apr_pools.h -threadproc/os2/threadpriv.lo: threadproc/os2/threadpriv.c .make.dirs include/apr_allocator.h include/apr_inherit.h include/apr_file_info.h include/apr_thread_mutex.h include/apr_thread_proc.h include/apr_tables.h include/apr_errno.h include/apr_want.h include/apr_user.h include/apr_file_io.h include/apr_shm.h include/apr_general.h include/apr_network_io.h include/apr_portable.h include/apr_dso.h include/apr_proc_mutex.h include/apr_lib.h include/apr_global_mutex.h include/apr_time.h include/apr_pools.h +threadproc/os2/proc.lo: threadproc/os2/proc.c .make.dirs include/fspr_allocator.h include/fspr_general.h include/fspr_network_io.h include/fspr_portable.h include/fspr_signal.h include/fspr_file_info.h include/fspr_thread_mutex.h include/fspr_thread_proc.h include/fspr_dso.h include/fspr_proc_mutex.h include/fspr_tables.h include/fspr_errno.h include/fspr_want.h include/fspr_user.h include/fspr_file_io.h include/fspr_strings.h include/fspr_inherit.h include/fspr_lib.h include/fspr_shm.h include/fspr_global_mutex.h include/fspr_time.h include/fspr_pools.h +threadproc/os2/threadpriv.lo: threadproc/os2/threadpriv.c .make.dirs include/fspr_allocator.h include/fspr_inherit.h include/fspr_file_info.h include/fspr_thread_mutex.h include/fspr_thread_proc.h include/fspr_tables.h include/fspr_errno.h include/fspr_want.h include/fspr_user.h include/fspr_file_io.h include/fspr_shm.h include/fspr_general.h include/fspr_network_io.h include/fspr_portable.h include/fspr_dso.h include/fspr_proc_mutex.h include/fspr_lib.h include/fspr_global_mutex.h include/fspr_time.h include/fspr_pools.h OBJECTS_threadproc_os2 = threadproc/os2/thread.lo threadproc/os2/signals.lo threadproc/os2/proc.lo threadproc/os2/threadpriv.lo OBJECTS_os2 = $(OBJECTS_all) $(OBJECTS_atomic_unix) $(OBJECTS_dso_os2) $(OBJECTS_file_io_os2) $(OBJECTS_locks_os2) $(OBJECTS_memory_unix) $(OBJECTS_misc_unix) $(OBJECTS_mmap_unix) $(OBJECTS_network_io_os2) $(OBJECTS_poll_os2) $(OBJECTS_random_unix) $(OBJECTS_shmem_os2) $(OBJECTS_support_unix) $(OBJECTS_threadproc_os2) $(OBJECTS_time_unix) $(OBJECTS_user_unix) -atomic/os390/atomic.lo: atomic/os390/atomic.c .make.dirs include/apr_allocator.h include/apr_general.h include/apr_thread_mutex.h include/apr_errno.h include/apr_want.h include/apr_atomic.h include/apr_pools.h +atomic/os390/atomic.lo: atomic/os390/atomic.c .make.dirs include/fspr_allocator.h include/fspr_general.h include/fspr_thread_mutex.h include/fspr_errno.h include/fspr_want.h include/fspr_atomic.h include/fspr_pools.h OBJECTS_atomic_os390 = atomic/os390/atomic.lo -dso/os390/dso.lo: dso/os390/dso.c .make.dirs include/apr_allocator.h include/apr_general.h include/apr_network_io.h include/apr_portable.h include/apr_inherit.h include/apr_file_info.h include/apr_thread_mutex.h include/apr_thread_proc.h include/apr_dso.h include/apr_tables.h include/apr_errno.h include/apr_want.h include/apr_user.h include/apr_file_io.h include/apr_strings.h include/apr_proc_mutex.h include/apr_shm.h include/apr_global_mutex.h include/apr_time.h include/apr_pools.h +dso/os390/dso.lo: dso/os390/dso.c .make.dirs include/fspr_allocator.h include/fspr_general.h include/fspr_network_io.h include/fspr_portable.h include/fspr_inherit.h include/fspr_file_info.h include/fspr_thread_mutex.h include/fspr_thread_proc.h include/fspr_dso.h include/fspr_tables.h include/fspr_errno.h include/fspr_want.h include/fspr_user.h include/fspr_file_io.h include/fspr_strings.h include/fspr_proc_mutex.h include/fspr_shm.h include/fspr_global_mutex.h include/fspr_time.h include/fspr_pools.h OBJECTS_dso_os390 = dso/os390/dso.lo OBJECTS_os390 = $(OBJECTS_all) $(OBJECTS_atomic_os390) $(OBJECTS_dso_os390) $(OBJECTS_file_io_unix) $(OBJECTS_locks_unix) $(OBJECTS_memory_unix) $(OBJECTS_misc_unix) $(OBJECTS_mmap_unix) $(OBJECTS_network_io_unix) $(OBJECTS_poll_unix) $(OBJECTS_random_unix) $(OBJECTS_shmem_unix) $(OBJECTS_support_unix) $(OBJECTS_threadproc_unix) $(OBJECTS_time_unix) $(OBJECTS_user_unix) -HEADERS = $(top_srcdir)/include/apr_thread_mutex.h $(top_srcdir)/include/apr_env.h $(top_srcdir)/include/apr_poll.h $(top_srcdir)/include/apr_fnmatch.h $(top_srcdir)/include/apr_global_mutex.h $(top_srcdir)/include/apr_pools.h $(top_srcdir)/include/apr_want.h $(top_srcdir)/include/apr_file_io.h $(top_srcdir)/include/apr_version.h $(top_srcdir)/include/apr_mmap.h $(top_srcdir)/include/apr_dso.h $(top_srcdir)/include/apr_thread_proc.h $(top_srcdir)/include/apr_errno.h $(top_srcdir)/include/apr_shm.h $(top_srcdir)/include/apr_network_io.h $(top_srcdir)/include/apr_signal.h $(top_srcdir)/include/apr_user.h $(top_srcdir)/include/apr_support.h $(top_srcdir)/include/apr_atomic.h $(top_srcdir)/include/apr_random.h $(top_srcdir)/include/apr_thread_cond.h $(top_srcdir)/include/apr_thread_rwlock.h $(top_srcdir)/include/apr_getopt.h $(top_srcdir)/include/apr_inherit.h $(top_srcdir)/include/apr_strings.h $(top_srcdir)/include/apr_general.h $(top_srcdir)/include/apr_proc_mutex.h $(top_srcdir)/include/apr_tables.h $(top_srcdir)/include/apr_ring.h $(top_srcdir)/include/apr_file_info.h $(top_srcdir)/include/apr_allocator.h $(top_srcdir)/include/apr_portable.h $(top_srcdir)/include/apr_hash.h $(top_srcdir)/include/apr_time.h $(top_srcdir)/include/apr_lib.h +HEADERS = $(top_srcdir)/include/fspr_thread_mutex.h $(top_srcdir)/include/fspr_env.h $(top_srcdir)/include/fspr_poll.h $(top_srcdir)/include/fspr_fnmatch.h $(top_srcdir)/include/fspr_global_mutex.h $(top_srcdir)/include/fspr_pools.h $(top_srcdir)/include/fspr_want.h $(top_srcdir)/include/fspr_file_io.h $(top_srcdir)/include/fspr_version.h $(top_srcdir)/include/fspr_mmap.h $(top_srcdir)/include/fspr_dso.h $(top_srcdir)/include/fspr_thread_proc.h $(top_srcdir)/include/fspr_errno.h $(top_srcdir)/include/fspr_shm.h $(top_srcdir)/include/fspr_network_io.h $(top_srcdir)/include/fspr_signal.h $(top_srcdir)/include/fspr_user.h $(top_srcdir)/include/fspr_support.h $(top_srcdir)/include/fspr_atomic.h $(top_srcdir)/include/fspr_random.h $(top_srcdir)/include/fspr_thread_cond.h $(top_srcdir)/include/fspr_thread_rwlock.h $(top_srcdir)/include/fspr_getopt.h $(top_srcdir)/include/fspr_inherit.h $(top_srcdir)/include/fspr_strings.h $(top_srcdir)/include/fspr_general.h $(top_srcdir)/include/fspr_proc_mutex.h $(top_srcdir)/include/fspr_tables.h $(top_srcdir)/include/fspr_ring.h $(top_srcdir)/include/fspr_file_info.h $(top_srcdir)/include/fspr_allocator.h $(top_srcdir)/include/fspr_portable.h $(top_srcdir)/include/fspr_hash.h $(top_srcdir)/include/fspr_time.h $(top_srcdir)/include/fspr_lib.h SOURCE_DIRS = random/unix dso/os2 time/unix locks/unix user/unix locks/beos tables support/unix file_io/unix mmap/unix atomic/unix poll/os2 dso/os390 atomic/os390 dso/beos poll/unix passwd network_io/beos threadproc/os2 network_io/os2 threadproc/beos shmem/unix network_io/unix file_io/os2 dso/aix threadproc/unix misc/unix shmem/beos dso/unix locks/os2 shmem/os2 memory/unix strings $(EXTRA_SOURCE_DIRS) diff --git a/libs/apr/build/NWGNUenvironment.inc b/libs/apr/build/NWGNUenvironment.inc index fd54b487c93..53039ba9620 100644 --- a/libs/apr/build/NWGNUenvironment.inc +++ b/libs/apr/build/NWGNUenvironment.inc @@ -164,9 +164,9 @@ ifeq "$(RELEASE)" "optimized" CFLAGS += -O4,p endif -# -prefix apr_arch_pre_nw.h #include pre_nw.h for all files +# -prefix fspr_arch_pre_nw.h #include pre_nw.h for all files -CFLAGS += -prefix apr_arch_pre_nw.h +CFLAGS += -prefix fspr_arch_pre_nw.h PATH:=$(PATH);$(METROWERKS)\bin;$(METROWERKS)\Other Metrowerks Tools\Command Line Tools diff --git a/libs/apr/build/NWGNUmakefile b/libs/apr/build/NWGNUmakefile index 6f9b32dd043..a9aac49fcd3 100644 --- a/libs/apr/build/NWGNUmakefile +++ b/libs/apr/build/NWGNUmakefile @@ -16,10 +16,10 @@ include $(APR_WORK)\build\NWGNUhead.inc # build this level's files FILES_prebuild_headers = \ - $(APR)/include/apr.h \ + $(APR)/include/fspr.h \ $(APRUTIL)/include/apu.h \ $(APRUTIL)/include/apu_want.h \ - $(APRUTIL)/include/apr_ldap.h \ + $(APRUTIL)/include/fspr_ldap.h \ $(APRUTIL)/include/private/apu_config.h \ $(APRUTIL)/include/private/apu_select_dbm.h \ $(APRUTIL)/xml/expat/lib/expat.h \ @@ -83,9 +83,9 @@ clean :: $(CHK) nw_export.i $(DEL) nw_export.i $(CHK) $(NLM_NAME)_cc.opt $(DEL) $(NLM_NAME)_cc.opt $(CHK) NWGNUversion.inc $(DEL) NWGNUversion.inc - $(CHK) $(subst /,\,$(APR))\include\apr.h $(DEL) $(subst /,\,$(APR))\include\apr.h + $(CHK) $(subst /,\,$(APR))\include\fspr.h $(DEL) $(subst /,\,$(APR))\include\fspr.h $(CHK) $(subst /,\,$(APRUTIL))\include\apu.h $(DEL) $(subst /,\,$(APRUTIL))\include\apu.h - $(CHK) $(subst /,\,$(APRUTIL))\include\apr_ldap.h $(DEL) $(subst /,\,$(APRUTIL))\include\apr_ldap.h + $(CHK) $(subst /,\,$(APRUTIL))\include\fspr_ldap.h $(DEL) $(subst /,\,$(APRUTIL))\include\fspr_ldap.h $(CHK) $(subst /,\,$(APRUTIL))\include\private\apu_config.h $(DEL) $(subst /,\,$(APRUTIL))\include\private\apu_config.h $(CHK) $(subst /,\,$(APRUTIL))\include\private\apu_select_dbm.h $(DEL) $(subst /,\,$(APRUTIL))\include\private\apu_select_dbm.h $(CHK) $(subst /,\,$(APRUTIL))\xml\expat\lib\expat.h $(DEL) $(subst /,\,$(APRUTIL))\xml\expat\lib\expat.h diff --git a/libs/apr/build/NWGNUtail.inc b/libs/apr/build/NWGNUtail.inc index 641c091b248..2c3ccf36f95 100644 --- a/libs/apr/build/NWGNUtail.inc +++ b/libs/apr/build/NWGNUtail.inc @@ -88,9 +88,9 @@ endif # Generic compiler rules # -$(APR_WORK)\build\NWGNUversion.inc : $(APR_WORK)\include\apr_version.h $(APR_WORK)\build\nw_ver.awk +$(APR_WORK)\build\NWGNUversion.inc : $(APR_WORK)\include\fspr_version.h $(APR_WORK)\build\nw_ver.awk @echo Generating $(subst /,\,$@) - awk -f $(APR_WORK)\build\nw_ver.awk $(APR_WORK)\include\apr_version.h > $(APR_WORK)\build\NWGNUversion.inc + awk -f $(APR_WORK)\build\nw_ver.awk $(APR_WORK)\include\fspr_version.h > $(APR_WORK)\build\NWGNUversion.inc -include $(APR_WORK)\build\NWGNUversion.inc diff --git a/libs/apr/build/apr_app.dsp b/libs/apr/build/apr_app.dsp index ac060a503ff..55c84e3c481 100644 --- a/libs/apr/build/apr_app.dsp +++ b/libs/apr/build/apr_app.dsp @@ -83,7 +83,7 @@ LIB32=link.exe -lib # Name "apr_app - Win32 Debug" # Begin Source File -SOURCE=..\misc\win32\apr_app.c +SOURCE=..\misc\win32\fspr_app.c # End Source File # End Target # End Project diff --git a/libs/apr/build/apr_common.m4 b/libs/apr/build/apr_common.m4 index e8e9f51f08b..13d6be60dd0 100644 --- a/libs/apr/build/apr_common.m4 +++ b/libs/apr/build/apr_common.m4 @@ -338,7 +338,7 @@ AC_DEFUN([APR_CHECK_APR_DEFINE],[ apr_old_cppflags=$CPPFLAGS CPPFLAGS="$CPPFLAGS $INCLUDES" AC_EGREP_CPP(YES_IS_DEFINED, [ -#include +#include #if $1 YES_IS_DEFINED #endif @@ -403,7 +403,7 @@ ac_decision='' AC_DEFUN([APR_DECIDE],[dnl -dnl Define the flag (or not) in apr_private.h via autoheader +dnl Define the flag (or not) in fspr_private.h via autoheader AH_TEMPLATE($1, [Define if $2 will be used]) ac_decision='$1' ac_decision_msg='$2' diff --git a/libs/apr/build/find_apr.m4 b/libs/apr/build/find_apr.m4 index 048cb7bfc8b..1060965d8de 100644 --- a/libs/apr/build/find_apr.m4 +++ b/libs/apr/build/find_apr.m4 @@ -143,7 +143,7 @@ AC_DEFUN([APR_FIND_APR], [ if test "$apr_found" = "no" && test -d "$1"; then apr_temp_abs_srcdir="`cd $1 && pwd`" apr_found="reconfig" - apr_bundled_major="`sed -n '/#define.*APR_MAJOR_VERSION/s/^[^0-9]*\([0-9]*\).*$/\1/p' \"$1/include/apr_version.h\"`" + apr_bundled_major="`sed -n '/#define.*APR_MAJOR_VERSION/s/^[^0-9]*\([0-9]*\).*$/\1/p' \"$1/include/fspr_version.h\"`" case $apr_bundled_major in "") AC_MSG_ERROR([failed to find major version of bundled APR]) diff --git a/libs/apr/build/libapr_app.dsp b/libs/apr/build/libapr_app.dsp index 0cd962e5cd3..875dade39f5 100644 --- a/libs/apr/build/libapr_app.dsp +++ b/libs/apr/build/libapr_app.dsp @@ -83,7 +83,7 @@ LIB32=link.exe -lib # Name "libapr_app - Win32 Debug" # Begin Source File -SOURCE=..\misc\win32\apr_app.c +SOURCE=..\misc\win32\fspr_app.c # End Source File # Begin Source File diff --git a/libs/apr/build/make_exports.awk b/libs/apr/build/make_exports.awk index 1d12fc65abe..bd417e2a440 100644 --- a/libs/apr/build/make_exports.awk +++ b/libs/apr/build/make_exports.awk @@ -100,21 +100,21 @@ function add_symbol(symbol) { /^[ \t]*APR_POOL_DECLARE_ACCESSOR[^(]*[(][^)]*[)]/ { sub("[ \t]*APR_POOL_DECLARE_ACCESSOR[^(]*[(]", "", $0) sub("[)].*$", "", $0) - add_symbol("apr_" $0 "_pool_get") + add_symbol("fspr_" $0 "_pool_get") next } /^[ \t]*APR_DECLARE_INHERIT_SET[^(]*[(][^)]*[)]/ { sub("[ \t]*APR_DECLARE_INHERIT_SET[^(]*[(]", "", $0) sub("[)].*$", "", $0) - add_symbol("apr_" $0 "_inherit_set") + add_symbol("fspr_" $0 "_inherit_set") next } /^[ \t]*APR_DECLARE_INHERIT_UNSET[^(]*[(][^)]*[)]/ { sub("[ \t]*APR_DECLARE_INHERIT_UNSET[^(]*[(]", "", $0) sub("[)].*$", "", $0) - add_symbol("apr_" $0 "_inherit_unset") + add_symbol("fspr_" $0 "_inherit_unset") next } diff --git a/libs/apr/build/make_nw_export.awk b/libs/apr/build/make_nw_export.awk index 291ecc0b2c4..21cc6831579 100644 --- a/libs/apr/build/make_nw_export.awk +++ b/libs/apr/build/make_nw_export.awk @@ -6,8 +6,8 @@ BEGIN { } # List of functions that we don't support, yet?? -#/apr_##name##_set_inherit/{next} -#/apr_##name##_unset_inherit/{next} +#/fspr_##name##_set_inherit/{next} +#/fspr_##name##_unset_inherit/{next} function add_symbol (sym_name) { @@ -47,21 +47,21 @@ function add_symbol (sym_name) { /^[ \t]*APR_POOL_DECLARE_ACCESSOR[^(]*[(][^)]*[)]/ { sub("[ \t]*APR_POOL_DECLARE_ACCESSOR[^(]*[(]", "", $0) sub("[)].*$", "", $0) - add_symbol("apr_" $0 "_pool_get") + add_symbol("fspr_" $0 "_pool_get") next } /^[ \t]*APR_DECLARE_INHERIT_SET[^(]*[(][^)]*[)]/ { sub("[ \t]*APR_DECLARE_INHERIT_SET[^(]*[(]", "", $0) sub("[)].*$", "", $0) - add_symbol("apr_" $0 "_inherit_set") + add_symbol("fspr_" $0 "_inherit_set") next } /^[ \t]*APR_DECLARE_INHERIT_UNSET[^(]*[(][^)]*[)]/ { sub("[ \t]*APR_DECLARE_INHERIT_UNSET[^(]*[(]", "", $0) sub("[)].*$", "", $0) - add_symbol("apr_" $0 "_inherit_unset") + add_symbol("fspr_" $0 "_inherit_unset") next } diff --git a/libs/apr/build/nw_export.inc b/libs/apr/build/nw_export.inc index 58495cd075b..d9f3208d6a2 100644 --- a/libs/apr/build/nw_export.inc +++ b/libs/apr/build/nw_export.inc @@ -1,7 +1,7 @@ /* Must include apr.h first so that we can undefine the standard prototypes macros after it messes with them. */ -#include "apr.h" +#include "fspr.h" #undef APR_DECLARE #undef APR_DECLARE_NONSTD @@ -10,41 +10,41 @@ #undef APR_DECLARE_DATA /* Preprocess all of the standard APR headers. */ -#include "apr_allocator.h" -#include "apr_atomic.h" -#include "apr_dso.h" -#include "apr_env.h" -#include "apr_errno.h" -#include "apr_file_info.h" -#include "apr_file_io.h" -#include "apr_fnmatch.h" -#include "apr_general.h" -#include "apr_getopt.h" -#include "apr_global_mutex.h" -#include "apr_hash.h" -#include "apr_inherit.h" -#include "apr_lib.h" -#include "apr_mmap.h" -#include "apr_network_io.h" -#include "apr_poll.h" -#include "apr_pools.h" -#include "apr_portable.h" -#include "apr_proc_mutex.h" -#include "apr_ring.h" -#include "apr_random.h" -#include "apr_shm.h" -#include "apr_signal.h" -#include "apr_strings.h" -#include "apr_support.h" -#include "apr_tables.h" -#include "apr_thread_cond.h" -#include "apr_thread_mutex.h" -#include "apr_thread_proc.h" -#include "apr_thread_rwlock.h" -#include "apr_time.h" -#include "apr_user.h" -#include "apr_version.h" -#include "apr_want.h" +#include "fspr_allocator.h" +#include "fspr_atomic.h" +#include "fspr_dso.h" +#include "fspr_env.h" +#include "fspr_errno.h" +#include "fspr_file_info.h" +#include "fspr_file_io.h" +#include "fspr_fnmatch.h" +#include "fspr_general.h" +#include "fspr_getopt.h" +#include "fspr_global_mutex.h" +#include "fspr_hash.h" +#include "fspr_inherit.h" +#include "fspr_lib.h" +#include "fspr_mmap.h" +#include "fspr_network_io.h" +#include "fspr_poll.h" +#include "fspr_pools.h" +#include "fspr_portable.h" +#include "fspr_proc_mutex.h" +#include "fspr_ring.h" +#include "fspr_random.h" +#include "fspr_shm.h" +#include "fspr_signal.h" +#include "fspr_strings.h" +#include "fspr_support.h" +#include "fspr_tables.h" +#include "fspr_thread_cond.h" +#include "fspr_thread_mutex.h" +#include "fspr_thread_proc.h" +#include "fspr_thread_rwlock.h" +#include "fspr_time.h" +#include "fspr_user.h" +#include "fspr_version.h" +#include "fspr_want.h" /* Must include apu.h first so that we can undefine @@ -57,29 +57,29 @@ #undef APU_DECLARE_DATA /* Preprocess all of the standard APR headers. */ -#include "apr_anylock.h" -#include "apr_base64.h" -#include "apr_buckets.h" -#include "apr_date.h" -#include "apr_dbd.h" -#include "apr_dbm.h" -#include "apr_hooks.h" -#include "apr_ldap.h" -#include "apr_ldap_url.h" -#include "apr_md4.h" -#include "apr_md5.h" -#include "apr_optional.h" -#include "apr_optional_hooks.h" -#include "apr_queue.h" -#include "apr_reslist.h" -#include "apr_rmm.h" -#include "apr_sdbm.h" -#include "apr_sha1.h" -#include "apr_strmatch.h" -#include "apr_uri.h" -#include "apr_uuid.h" -#include "apr_xlate.h" -#include "apr_xml.h" +#include "fspr_anylock.h" +#include "fspr_base64.h" +#include "fspr_buckets.h" +#include "fspr_date.h" +#include "fspr_dbd.h" +#include "fspr_dbm.h" +#include "fspr_hooks.h" +#include "fspr_ldap.h" +#include "fspr_ldap_url.h" +#include "fspr_md4.h" +#include "fspr_md5.h" +#include "fspr_optional.h" +#include "fspr_optional_hooks.h" +#include "fspr_queue.h" +#include "fspr_reslist.h" +#include "fspr_rmm.h" +#include "fspr_sdbm.h" +#include "fspr_sha1.h" +#include "fspr_strmatch.h" +#include "fspr_uri.h" +#include "fspr_uuid.h" +#include "fspr_xlate.h" +#include "fspr_xml.h" #include "apu_version.h" #include "apu_want.h" diff --git a/libs/apr/build/prebuildNW.bat b/libs/apr/build/prebuildNW.bat index 941d920c9bf..7b3f3a7b082 100755 --- a/libs/apr/build/prebuildNW.bat +++ b/libs/apr/build/prebuildNW.bat @@ -24,7 +24,7 @@ goto Done @echo # "apr-util\uri\uri_delims.h" on the build machine. @echo Fixing up the APR headers -copy ..\include\apr.hnw ..\include\apr.h +copy ..\include\fspr.hnw ..\include\fspr.h @echo Fixing up the APR-Util headers copy ..\..\apr-util\include\apu.hnw ..\..\apr-util\include\apu.h diff --git a/libs/apr/configure.ac b/libs/apr/configure.ac index 2b8f551880c..b267825e099 100644 --- a/libs/apr/configure.ac +++ b/libs/apr/configure.ac @@ -7,7 +7,7 @@ dnl Use ./buildconf to prepare build files and run autoconf for APR. AC_PREREQ(2.50) AC_INIT(build/apr_common.m4) -AC_CONFIG_HEADER(include/arch/unix/apr_private.h) +AC_CONFIG_HEADER(include/arch/unix/fspr_private.h) AC_CONFIG_AUX_DIR(build) dnl @@ -24,7 +24,7 @@ CFLAGS="$CFLAGS $CONFIGURE_CFLAGS" CXXFLAGS="$CXXFLAGS $CONFIGURE_CXXFLAGS" LDFLAGS="$LDFLAGS $CONFIGURE_LDFLAGS" -dnl Hard-coded inclusion at the tail end of apr_private.h: +dnl Hard-coded inclusion at the tail end of fspr_private.h: AH_BOTTOM([ /* switch this on if we have a BeOS version below BONE */ #if BEOS && !HAVE_BONE_VERSION @@ -36,7 +36,7 @@ AH_BOTTOM([ /* * Include common private declarations. */ -#include "../apr_private_common.h" +#include "../fspr_private_common.h" ]) dnl Save user-defined environment settings for later restoration @@ -95,7 +95,7 @@ APR_MKDIR_P_CHECK($apr_builders/mkdir.sh) # get our version information get_version="$apr_builders/get-version.sh" -version_hdr="$apr_srcdir/include/apr_version.h" +version_hdr="$apr_srcdir/include/fspr_version.h" APR_MAJOR_VERSION="`$get_version major $version_hdr APR`" APR_DOTTED_VERSION="`$get_version all $version_hdr APR`" @@ -1169,7 +1169,7 @@ fi if test "$ac_cv_sizeof_int" = "4"; then int_value=int fi -# Now we need to find what apr_int64_t (sizeof == 8) will be. +# Now we need to find what fspr_int64_t (sizeof == 8) will be. # The first match is our preference. if test "$ac_cv_sizeof_int" = "8"; then int64_literal='#define APR_INT64_C(val) (val)' @@ -1243,12 +1243,12 @@ fi if test "$ac_cv_type_size_t" = "yes"; then size_t_value="size_t" else - size_t_value="apr_int32_t" + size_t_value="fspr_int32_t" fi if test "$ac_cv_type_ssize_t" = "yes"; then ssize_t_value="ssize_t" else - ssize_t_value="apr_int32_t" + ssize_t_value="fspr_int32_t" fi if test "$ac_cv_socklen_t" = "yes"; then socklen_t_value="socklen_t" @@ -1298,17 +1298,17 @@ else aprlfs=0 fi -AC_MSG_CHECKING([which type to use for apr_off_t]) +AC_MSG_CHECKING([which type to use for fspr_off_t]) if test "${ac_cv_sizeof_off_t}${apr_cv_use_lfs64}" = "4yes"; then # LFS is go! off_t_fmt='#define APR_OFF_T_FMT APR_INT64_T_FMT' off_t_value='off64_t' - off_t_strfn='apr_strtoi64' + off_t_strfn='fspr_strtoi64' elif test "${ac_cv_sizeof_off_t}x${ac_cv_sizeof_long}" = "4x4"; then # Special case: off_t may change size with _FILE_OFFSET_BITS # on 32-bit systems with LFS support. To avoid compatibility # issues when other packages do define _FILE_OFFSET_BITS, - # hard-code apr_off_t to long. + # hard-code fspr_off_t to long. off_t_value=long off_t_fmt='#define APR_OFF_T_FMT "ld"' off_t_strfn='strtol' @@ -1324,13 +1324,13 @@ elif test "$ac_cv_type_off_t" = "yes"; then off_t_strfn='strtoi' elif test "$ac_cv_sizeof_off_t" = "$ac_cv_sizeof_long_long"; then off_t_fmt='#define APR_OFF_T_FMT APR_INT64_T_FMT' - off_t_strfn='apr_strtoi64' + off_t_strfn='fspr_strtoi64' else AC_ERROR([could not determine the size of off_t]) fi else # Fallback on int - off_t_value=apr_int32_t + off_t_value=fspr_int32_t off_t_fmt=d off_t_strfn='strtoi' fi @@ -1440,7 +1440,7 @@ fi if test "$have_int64_strfn" = "1"; then AC_DEFINE_UNQUOTED(APR_INT64_STRFN, [$int64_strfn], - [Define as function which can be used for conversion of strings to apr_int64_t]) + [Define as function which can be used for conversion of strings to fspr_int64_t]) fi AC_SUBST(have_strnicmp) @@ -1451,11 +1451,11 @@ AC_SUBST(have_strdup) AC_SUBST(have_strstr) AC_SUBST(have_memchr) -if test "$off_t_strfn" = "apr_strtoi64" && test "$have_int64_strfn" = "1"; then +if test "$off_t_strfn" = "fspr_strtoi64" && test "$have_int64_strfn" = "1"; then off_t_strfn=$int64_strfn fi AC_DEFINE_UNQUOTED(APR_OFF_T_STRFN, [$off_t_strfn], - [Define as function used for conversion of strings to apr_off_t]) + [Define as function used for conversion of strings to fspr_off_t]) dnl ----------------------------- Checking for DSO support echo "${nl}Checking for DSO..." @@ -1949,7 +1949,7 @@ AC_SUBST(file_as_socket) if test "$ac_cv_func_poll $file_as_socket" = "yes 1"; then AC_DEFINE(WAITIO_USES_POLL, 1, - [Define if apr_wait_for_io_or_timeout() uses poll(2)]) + [Define if fspr_wait_for_io_or_timeout() uses poll(2)]) fi # Check the types only if we have gethostbyname_r @@ -2135,7 +2135,7 @@ AC_SUBST(INCLUDE_RULES) AC_SUBST(INCLUDE_OUTPUTS) AC_CONFIG_FILES([Makefile - include/apr.h + include/fspr.h build/apr_rules.mk build/pkg/pkginfo apr-$APR_MAJOR_VERSION-config:apr-config.in @@ -2163,7 +2163,7 @@ dnl This section is expanded by configure UNQUOTED so variable dnl references must be backslash-escaped as necessary. # Commands run at the beginning of config.status: -APR_SAVE_HEADERS="include/apr.h include/arch/unix/apr_private.h" +APR_SAVE_HEADERS="include/fspr.h include/arch/unix/fspr_private.h" APR_MAJOR_VERSION=$APR_MAJOR_VERSION for apri in \${APR_SAVE_HEADERS}; do diff --git a/libs/apr/docs/APRDesign.html b/libs/apr/docs/APRDesign.html index 7d1caeb8d4e..d4f6de2d3b5 100644 --- a/libs/apr/docs/APRDesign.html +++ b/libs/apr/docs/APRDesign.html @@ -22,10 +22,10 @@

Design of APR

APR On Windows and Netware

APR on Windows and Netware is different from APR on all other systems, -because those platforms don't use autoconf. On Unix, apr_private.h (private to +because those platforms don't use autoconf. On Unix, fspr_private.h (private to APR) and apr.h (public, used by applications that use APR) are generated by autoconf from acconfig.h and apr.h.in respectively. On Windows (and Netware), -apr_private.h and apr.h are created from apr_private.hw (apr_private.hwn) +fspr_private.h and apr.h are created from fspr_private.hw (fspr_private.hwn) and apr.hw (apr.hwn) respectively.

@@ -34,7 +34,7 @@

APR On Windows and Netware

these additions as well. A general rule of thumb, is that if it is a feature macro, such as APR_HAS_THREADS, Windows and Netware need it. In other words, if the definition is going to be used in a public APR - header file, such as apr_general.h, Windows needs it. + header file, such as fspr_general.h, Windows needs it. The only time it is safe to add a macro or test without also adding the macro to apr*.h[n]w, is if the macro tells APR how to build. For @@ -161,7 +161,7 @@

Creating an APR Type

is only one reasonable time implementation.
  • The second exception to the incomplete type rule can be found in -apr_portable.h. This file defines the native types for each platform. +fspr_portable.h. This file defines the native types for each platform. Using these types, it is possible to extract native types for any APR type.

    @@ -171,14 +171,14 @@

    Creating an APR Type

         struct ap_file_t {
    -        apr_pool_t *cntxt;
    +        fspr_pool_t *cntxt;
             int filedes;
             FILE *filehand;
             ...
         }
     
    -

    In include/apr_file_io.h:

    +

    In include/fspr_file_io.h:

    typedef struct ap_file_t ap_file_t; @@ -187,7 +187,7 @@

    Creating an APR Type

    field in this structure. Windows does not have a filedes field, so obviously, it is important that programs not be able to access these.

    -

    You may notice the apr_pool_t field. Most APR types have this field. This +

    You may notice the fspr_pool_t field. Most APR types have this field. This type is used to allocate memory within APR. Because every APR type has a pool, any APR function can allocate memory if it needs to. This is very important and it is one of the reasons that APR works. If you create a new type, you @@ -281,15 +281,15 @@

    APR Error reporting

    If your function has multiple return codes that all indicate success, but with different results, or if your function can only return PASS/FAIL, you -should still return an apr_status_t. In the first case, define one +should still return an fspr_status_t. In the first case, define one APR status code for each return value, an example of this is -apr_proc_wait, which can only return APR_CHILDDONE, +fspr_proc_wait, which can only return APR_CHILDDONE, APR_CHILDNOTDONE, or an error code. In the second case, please return APR_SUCCESS for PASS, and define a new APR status code for failure, an -example of this is apr_compare_users, which can only return +example of this is fspr_compare_users, which can only return APR_SUCCESS, APR_EMISMATCH, or an error code.

    -

    All of these definitions can be found in apr_errno.h for all platforms. When +

    All of these definitions can be found in fspr_errno.h for all platforms. When an error occurs in an APR function, the function must return an error code. If the error occurred in a system call and that system call uses errno to report an error, then the code is returned unchanged. For example:

    @@ -320,7 +320,7 @@

    APR Error reporting

    If the error occurs in an APR function but it is not due to a system call, but it is actually an APR error or just a status code from APR, then the -appropriate code should be returned. These codes are defined in apr_errno.h +appropriate code should be returned. These codes are defined in fspr_errno.h and should be self explanatory.

    No APR code should ever return a code between APR_OS_START_USEERR and diff --git a/libs/apr/docs/canonical_filenames.html b/libs/apr/docs/canonical_filenames.html index 10867d3796e..f1abad5bd8c 100644 --- a/libs/apr/docs/canonical_filenames.html +++ b/libs/apr/docs/canonical_filenames.html @@ -88,7 +88,7 @@

    Requirements

    Canonical API

    -Functions to manipulate the apr_canon_file_t (an opaque type) include: +Functions to manipulate the fspr_canon_file_t (an opaque type) include:
    • Create canon_file_t (from char* path and canon_file_t parent path) @@ -99,7 +99,7 @@

      Canonical API

    The path is corrected to the file system case only if is in absolute -form. The apr_canon_file_t should be preserved as long as possible and +form. The fspr_canon_file_t should be preserved as long as possible and used as the parent to create child entries to reduce the number of expensive stat and case canonicalization calls to the OS.

    diff --git a/libs/apr/docs/doxygen.conf b/libs/apr/docs/doxygen.conf index 29c2cbf6941..76adb8646ab 100644 --- a/libs/apr/docs/doxygen.conf +++ b/libs/apr/docs/doxygen.conf @@ -14,9 +14,9 @@ EXPAND_ONLY_PREDEF=YES PREDEFINED="APR_DECLARE(x)=x" \ "APR_DECLARE_NONSTD(x)=x" \ "APR_DECLARE_DATA" \ - "APR_POOL_DECLARE_ACCESSOR(x)=apr_pool_t* apr_##x##_pool_get (const apr_##x##_t *the##x)" \ - "APR_DECLARE_INHERIT_SET(x)=apr_status_t apr_##x##_inherit_set(apr_##x##_t *the##x)" \ - "APR_DECLARE_INHERIT_UNSET(x)=apr_status_t apr_##x##_inherit_unset(apr_##x##_t *the##x)" \ + "APR_POOL_DECLARE_ACCESSOR(x)=fspr_pool_t* fspr_##x##_pool_get (const fspr_##x##_t *the##x)" \ + "APR_DECLARE_INHERIT_SET(x)=fspr_status_t fspr_##x##_inherit_set(fspr_##x##_t *the##x)" \ + "APR_DECLARE_INHERIT_UNSET(x)=fspr_status_t fspr_##x##_inherit_unset(fspr_##x##_t *the##x)" \ "APR_HAS_THREADS" \ "__attribute__(x)=" \ DOXYGEN= diff --git a/libs/apr/docs/non_apr_programs b/libs/apr/docs/non_apr_programs index 5003a8bd550..4595f0e83a4 100644 --- a/libs/apr/docs/non_apr_programs +++ b/libs/apr/docs/non_apr_programs @@ -6,7 +6,7 @@ we don't expect them to migrate to using APR just because APR has been released. So, we have provided a way for non-APR'ized programs to interact very cleanly with APR. -There are a set of functions, all documented in apr_portable.h, which allow +There are a set of functions, all documented in fspr_portable.h, which allow a programmer to either get a native type from an APR type, or to setup an APR type from a native type. @@ -15,11 +15,11 @@ APR for file I/O, but you (in your infinite wisdom) want to use APR to make sure your section is portable. Assume the program provides a type foo_t with a file descriptor in it (fd). -void function_using_apr(foo_t non_apr_struct, ap_pool_t *p) +void function_using_apr(foo_t non_fspr_struct, ap_pool_t *p) { - ap_file_t *apr_file = NULL; + ap_file_t *fspr_file = NULL; - ap_put_os_file(&apr_file, &non_apr_struct->fd, p); + ap_put_os_file(&fspr_file, &non_fspr_struct->fd, p); ... } @@ -28,20 +28,20 @@ There are portable functions for each APR incomplete type. They are all called ap_put_os_foobar(), and they each take the same basic arguments, a pointer to a pointer to the incomplete type (the last pointer in that list should be NULL), a pointer to the native type, and a pool. Each of these can -be found in apr_portable.h. +be found in fspr_portable.h. If you have to do the exact opposite (take an APR type and convert it to a native type, there are functions for that too. For example: -void function_not_using_apr(apr_file_t *apr_file) +void function_not_using_apr(fspr_file_t *fspr_file) { int unix_file_desc; - ap_get_os_file(&unix_file_desc, apr_file); + ap_get_os_file(&unix_file_desc, fspr_file); ... } For each ap_put_os_foobar, there is a corresponding ap_get_os_file. These are -also documented in apr_portable.h. +also documented in fspr_portable.h. diff --git a/libs/apr/docs/pool-design.html b/libs/apr/docs/pool-design.html index 6ce6d81e6af..462afaa9c1a 100644 --- a/libs/apr/docs/pool-design.html +++ b/libs/apr/docs/pool-design.html @@ -60,13 +60,13 @@

    Using APR Pools

    -subpool = apr_create_subpool(pool);
    +subpool = fspr_create_subpool(pool);
     for (i = 0; i < n; ++i) {
    -  apr_pool_clear(subpool);
    +  fspr_pool_clear(subpool);
     
       do_operation(..., subpool);
     }
    -apr_pool_destroy(subpool);
    +fspr_pool_destroy(subpool);

    This pattern prevents the 'pool' from growing unbounded and diff --git a/libs/apr/docs/win32_builds.html b/libs/apr/docs/win32_builds.html index ad57d8e1384..664769fbafb 100644 --- a/libs/apr/docs/win32_builds.html +++ b/libs/apr/docs/win32_builds.html @@ -43,7 +43,7 @@

    Configuration and Flavors

    link with the /pdbtype:sept flag! At the time your application links to an APR library, the corresponding _src.pdb file should exist in the original path the library was built, or it may be sufficient to keep the _src.pdb file - in the same path as the library file. (E.g. apr.lib and apr_src.pdb should + in the same path as the library file. (E.g. apr.lib and fspr_src.pdb should reside together in your lib directory.) The later option is unconfirmed.

    In order to keep the symbols compiled into the static library, your application diff --git a/libs/apr/dso/aix/dso.c b/libs/apr/dso/aix/dso.c index 25f6262af86..f3449d38da2 100644 --- a/libs/apr/dso/aix/dso.c +++ b/libs/apr/dso/aix/dso.c @@ -49,8 +49,8 @@ #include #include #include -#include "apr_arch_dso.h" -#include "apr_portable.h" +#include "fspr_arch_dso.h" +#include "fspr_portable.h" #if APR_HAS_DSO @@ -97,26 +97,26 @@ struct dl_info { * add the basic "wrappers" here. */ -APR_DECLARE(apr_status_t) apr_os_dso_handle_put(apr_dso_handle_t **aprdso, - apr_os_dso_handle_t osdso, - apr_pool_t *pool) +APR_DECLARE(fspr_status_t) fspr_os_dso_handle_put(fspr_dso_handle_t **aprdso, + fspr_os_dso_handle_t osdso, + fspr_pool_t *pool) { - *aprdso = apr_pcalloc(pool, sizeof **aprdso); + *aprdso = fspr_pcalloc(pool, sizeof **aprdso); (*aprdso)->handle = osdso; (*aprdso)->pool = pool; return APR_SUCCESS; } -APR_DECLARE(apr_status_t) apr_os_dso_handle_get(apr_os_dso_handle_t *osdso, - apr_dso_handle_t *aprdso) +APR_DECLARE(fspr_status_t) fspr_os_dso_handle_get(fspr_os_dso_handle_t *osdso, + fspr_dso_handle_t *aprdso) { *osdso = aprdso->handle; return APR_SUCCESS; } -static apr_status_t dso_cleanup(void *thedso) +static fspr_status_t dso_cleanup(void *thedso) { - apr_dso_handle_t *dso = thedso; + fspr_dso_handle_t *dso = thedso; if (dso->handle != NULL && dlclose(dso->handle) != 0) return APR_EINIT; @@ -125,12 +125,12 @@ static apr_status_t dso_cleanup(void *thedso) return APR_SUCCESS; } -APR_DECLARE(apr_status_t) apr_dso_load(apr_dso_handle_t **res_handle, - const char *path, apr_pool_t *ctx) +APR_DECLARE(fspr_status_t) fspr_dso_load(fspr_dso_handle_t **res_handle, + const char *path, fspr_pool_t *ctx) { void *os_handle = dlopen((char *)path, RTLD_NOW | RTLD_GLOBAL); - *res_handle = apr_pcalloc(ctx, sizeof(*res_handle)); + *res_handle = fspr_pcalloc(ctx, sizeof(*res_handle)); if(os_handle == NULL) { (*res_handle)->errormsg = dlerror(); @@ -141,18 +141,18 @@ APR_DECLARE(apr_status_t) apr_dso_load(apr_dso_handle_t **res_handle, (*res_handle)->pool = ctx; (*res_handle)->errormsg = NULL; - apr_pool_cleanup_register(ctx, *res_handle, dso_cleanup, apr_pool_cleanup_null); + fspr_pool_cleanup_register(ctx, *res_handle, dso_cleanup, fspr_pool_cleanup_null); return APR_SUCCESS; } -APR_DECLARE(apr_status_t) apr_dso_unload(apr_dso_handle_t *handle) +APR_DECLARE(fspr_status_t) fspr_dso_unload(fspr_dso_handle_t *handle) { - return apr_pool_cleanup_run(handle->pool, handle, dso_cleanup); + return fspr_pool_cleanup_run(handle->pool, handle, dso_cleanup); } -APR_DECLARE(apr_status_t) apr_dso_sym(apr_dso_handle_sym_t *ressym, - apr_dso_handle_t *handle, +APR_DECLARE(fspr_status_t) fspr_dso_sym(fspr_dso_handle_sym_t *ressym, + fspr_dso_handle_t *handle, const char *symname) { void *retval = dlsym(handle->handle, symname); @@ -166,10 +166,10 @@ APR_DECLARE(apr_status_t) apr_dso_sym(apr_dso_handle_sym_t *ressym, return APR_SUCCESS; } -APR_DECLARE(const char *) apr_dso_error(apr_dso_handle_t *dso, char *buffer, apr_size_t buflen) +APR_DECLARE(const char *) fspr_dso_error(fspr_dso_handle_t *dso, char *buffer, fspr_size_t buflen) { if (dso->errormsg) { - apr_cpystrn(buffer, dso->errormsg, buflen); + fspr_cpystrn(buffer, dso->errormsg, buflen); return dso->errormsg; } return "No Error"; diff --git a/libs/apr/dso/beos/dso.c b/libs/apr/dso/beos/dso.c index 91dd1b4e81c..6ca214e8659 100644 --- a/libs/apr/dso/beos/dso.c +++ b/libs/apr/dso/beos/dso.c @@ -14,14 +14,14 @@ * limitations under the License. */ -#include "apr_arch_dso.h" -#include "apr_portable.h" +#include "fspr_arch_dso.h" +#include "fspr_portable.h" #if APR_HAS_DSO -static apr_status_t dso_cleanup(void *thedso) +static fspr_status_t dso_cleanup(void *thedso) { - apr_dso_handle_t *dso = thedso; + fspr_dso_handle_t *dso = thedso; if (dso->handle > 0 && unload_add_on(dso->handle) < B_NO_ERROR) return APR_EINIT; @@ -30,12 +30,12 @@ static apr_status_t dso_cleanup(void *thedso) return APR_SUCCESS; } -APR_DECLARE(apr_status_t) apr_dso_load(apr_dso_handle_t **res_handle, - const char *path, apr_pool_t *pool) +APR_DECLARE(fspr_status_t) fspr_dso_load(fspr_dso_handle_t **res_handle, + const char *path, fspr_pool_t *pool) { image_id newid = -1; - *res_handle = apr_pcalloc(pool, sizeof(*res_handle)); + *res_handle = fspr_pcalloc(pool, sizeof(*res_handle)); if((newid = load_add_on(path)) < B_NO_ERROR) { (*res_handle)->errormsg = strerror(newid); @@ -45,17 +45,17 @@ APR_DECLARE(apr_status_t) apr_dso_load(apr_dso_handle_t **res_handle, (*res_handle)->pool = pool; (*res_handle)->handle = newid; - apr_pool_cleanup_register(pool, *res_handle, dso_cleanup, apr_pool_cleanup_null); + fspr_pool_cleanup_register(pool, *res_handle, dso_cleanup, fspr_pool_cleanup_null); return APR_SUCCESS; } -APR_DECLARE(apr_status_t) apr_dso_unload(apr_dso_handle_t *handle) +APR_DECLARE(fspr_status_t) fspr_dso_unload(fspr_dso_handle_t *handle) { - return apr_pool_cleanup_run(handle->pool, handle, dso_cleanup); + return fspr_pool_cleanup_run(handle->pool, handle, dso_cleanup); } -APR_DECLARE(apr_status_t) apr_dso_sym(apr_dso_handle_sym_t *ressym, apr_dso_handle_t *handle, +APR_DECLARE(fspr_status_t) fspr_dso_sym(fspr_dso_handle_sym_t *ressym, fspr_dso_handle_t *handle, const char *symname) { int err; @@ -72,24 +72,24 @@ APR_DECLARE(apr_status_t) apr_dso_sym(apr_dso_handle_sym_t *ressym, apr_dso_hand return APR_SUCCESS; } -APR_DECLARE(const char *) apr_dso_error(apr_dso_handle_t *dso, char *buffer, apr_size_t buflen) +APR_DECLARE(const char *) fspr_dso_error(fspr_dso_handle_t *dso, char *buffer, fspr_size_t buflen) { strncpy(buffer, strerror(errno), buflen); return buffer; } -APR_DECLARE(apr_status_t) apr_os_dso_handle_put(apr_dso_handle_t **aprdso, - apr_os_dso_handle_t osdso, - apr_pool_t *pool) +APR_DECLARE(fspr_status_t) fspr_os_dso_handle_put(fspr_dso_handle_t **aprdso, + fspr_os_dso_handle_t osdso, + fspr_pool_t *pool) { - *aprdso = apr_pcalloc(pool, sizeof **aprdso); + *aprdso = fspr_pcalloc(pool, sizeof **aprdso); (*aprdso)->handle = osdso; (*aprdso)->pool = pool; return APR_SUCCESS; } -APR_DECLARE(apr_status_t) apr_os_dso_handle_get(apr_os_dso_handle_t *osdso, - apr_dso_handle_t *aprdso) +APR_DECLARE(fspr_status_t) fspr_os_dso_handle_get(fspr_os_dso_handle_t *osdso, + fspr_dso_handle_t *aprdso) { *osdso = aprdso->handle; return APR_SUCCESS; diff --git a/libs/apr/dso/netware/dso.c b/libs/apr/dso/netware/dso.c index 4cd2ad611ed..effe03eeea6 100644 --- a/libs/apr/dso/netware/dso.c +++ b/libs/apr/dso/netware/dso.c @@ -14,33 +14,33 @@ * limitations under the License. */ -#include "apr_arch_dso.h" -#include "apr_strings.h" -#include "apr_portable.h" +#include "fspr_arch_dso.h" +#include "fspr_strings.h" +#include "fspr_portable.h" #include #include -APR_DECLARE(apr_status_t) apr_os_dso_handle_put(apr_dso_handle_t **aprdso, - apr_os_dso_handle_t osdso, - apr_pool_t *pool) +APR_DECLARE(fspr_status_t) fspr_os_dso_handle_put(fspr_dso_handle_t **aprdso, + fspr_os_dso_handle_t osdso, + fspr_pool_t *pool) { - *aprdso = apr_pcalloc(pool, sizeof **aprdso); + *aprdso = fspr_pcalloc(pool, sizeof **aprdso); (*aprdso)->handle = osdso; (*aprdso)->pool = pool; return APR_SUCCESS; } -APR_DECLARE(apr_status_t) apr_os_dso_handle_get(apr_os_dso_handle_t *osdso, - apr_dso_handle_t *aprdso) +APR_DECLARE(fspr_status_t) fspr_os_dso_handle_get(fspr_os_dso_handle_t *osdso, + fspr_dso_handle_t *aprdso) { *osdso = aprdso->handle; return APR_SUCCESS; } -static apr_status_t dso_cleanup(void *thedso) +static fspr_status_t dso_cleanup(void *thedso) { - apr_dso_handle_t *dso = thedso; + fspr_dso_handle_t *dso = thedso; sym_list *symbol = NULL; void *NLMHandle = getnlmhandle(); @@ -65,22 +65,22 @@ static apr_status_t dso_cleanup(void *thedso) return APR_SUCCESS; } -APR_DECLARE(apr_status_t) apr_dso_load(apr_dso_handle_t **res_handle, - const char *path, apr_pool_t *pool) +APR_DECLARE(fspr_status_t) fspr_dso_load(fspr_dso_handle_t **res_handle, + const char *path, fspr_pool_t *pool) { void *os_handle = NULL; char *fullpath = NULL; - apr_status_t rv; + fspr_status_t rv; - if ((rv = apr_filepath_merge(&fullpath, NULL, path, + if ((rv = fspr_filepath_merge(&fullpath, NULL, path, APR_FILEPATH_NATIVE, pool)) != APR_SUCCESS) { return rv; } os_handle = dlopen(fullpath, RTLD_NOW | RTLD_LOCAL); - *res_handle = apr_pcalloc(pool, sizeof(**res_handle)); + *res_handle = fspr_pcalloc(pool, sizeof(**res_handle)); if(os_handle == NULL) { (*res_handle)->errormsg = dlerror(); @@ -91,20 +91,20 @@ APR_DECLARE(apr_status_t) apr_dso_load(apr_dso_handle_t **res_handle, (*res_handle)->pool = pool; (*res_handle)->errormsg = NULL; (*res_handle)->symbols = NULL; - (*res_handle)->path = apr_pstrdup(pool, fullpath); + (*res_handle)->path = fspr_pstrdup(pool, fullpath); - apr_pool_cleanup_register(pool, *res_handle, dso_cleanup, apr_pool_cleanup_null); + fspr_pool_cleanup_register(pool, *res_handle, dso_cleanup, fspr_pool_cleanup_null); return APR_SUCCESS; } -APR_DECLARE(apr_status_t) apr_dso_unload(apr_dso_handle_t *handle) +APR_DECLARE(fspr_status_t) fspr_dso_unload(fspr_dso_handle_t *handle) { - return apr_pool_cleanup_run(handle->pool, handle, dso_cleanup); + return fspr_pool_cleanup_run(handle->pool, handle, dso_cleanup); } -APR_DECLARE(apr_status_t) apr_dso_sym(apr_dso_handle_sym_t *ressym, - apr_dso_handle_t *handle, +APR_DECLARE(fspr_status_t) fspr_dso_sym(fspr_dso_handle_sym_t *ressym, + fspr_dso_handle_t *handle, const char *symname) { sym_list *symbol = NULL; @@ -115,21 +115,21 @@ APR_DECLARE(apr_status_t) apr_dso_sym(apr_dso_handle_sym_t *ressym, return APR_ESYMNOTFOUND; } - symbol = apr_pcalloc(handle->pool, sizeof(sym_list)); + symbol = fspr_pcalloc(handle->pool, sizeof(sym_list)); symbol->next = handle->symbols; handle->symbols = symbol; - symbol->symbol = apr_pstrdup(handle->pool, symname); + symbol->symbol = fspr_pstrdup(handle->pool, symname); *ressym = retval; return APR_SUCCESS; } -APR_DECLARE(const char *) apr_dso_error(apr_dso_handle_t *dso, char *buffer, - apr_size_t buflen) +APR_DECLARE(const char *) fspr_dso_error(fspr_dso_handle_t *dso, char *buffer, + fspr_size_t buflen) { if (dso->errormsg) { - apr_cpystrn(buffer, dso->errormsg, buflen); + fspr_cpystrn(buffer, dso->errormsg, buflen); return dso->errormsg; } return "No Error"; diff --git a/libs/apr/dso/os2/dso.c b/libs/apr/dso/os2/dso.c index 1a7f7de838a..0cc71842fb9 100644 --- a/libs/apr/dso/os2/dso.c +++ b/libs/apr/dso/os2/dso.c @@ -14,17 +14,17 @@ * limitations under the License. */ -#include "apr_arch_dso.h" -#include "apr_strings.h" -#include "apr_portable.h" +#include "fspr_arch_dso.h" +#include "fspr_strings.h" +#include "fspr_portable.h" #include #include #if APR_HAS_DSO -static apr_status_t dso_cleanup(void *thedso) +static fspr_status_t dso_cleanup(void *thedso) { - apr_dso_handle_t *dso = thedso; + fspr_dso_handle_t *dso = thedso; int rc; if (dso->handle == 0) @@ -39,39 +39,39 @@ static apr_status_t dso_cleanup(void *thedso) } -APR_DECLARE(apr_status_t) apr_dso_load(apr_dso_handle_t **res_handle, const char *path, apr_pool_t *ctx) +APR_DECLARE(fspr_status_t) fspr_dso_load(fspr_dso_handle_t **res_handle, const char *path, fspr_pool_t *ctx) { char failed_module[200]; HMODULE handle; int rc; - *res_handle = apr_pcalloc(ctx, sizeof(**res_handle)); + *res_handle = fspr_pcalloc(ctx, sizeof(**res_handle)); (*res_handle)->cont = ctx; (*res_handle)->load_error = APR_SUCCESS; (*res_handle)->failed_module = NULL; if ((rc = DosLoadModule(failed_module, sizeof(failed_module), path, &handle)) != 0) { (*res_handle)->load_error = APR_FROM_OS_ERROR(rc); - (*res_handle)->failed_module = apr_pstrdup(ctx, failed_module); + (*res_handle)->failed_module = fspr_pstrdup(ctx, failed_module); return APR_FROM_OS_ERROR(rc); } (*res_handle)->handle = handle; - apr_pool_cleanup_register(ctx, *res_handle, dso_cleanup, apr_pool_cleanup_null); + fspr_pool_cleanup_register(ctx, *res_handle, dso_cleanup, fspr_pool_cleanup_null); return APR_SUCCESS; } -APR_DECLARE(apr_status_t) apr_dso_unload(apr_dso_handle_t *handle) +APR_DECLARE(fspr_status_t) fspr_dso_unload(fspr_dso_handle_t *handle) { - return apr_pool_cleanup_run(handle->cont, handle, dso_cleanup); + return fspr_pool_cleanup_run(handle->cont, handle, dso_cleanup); } -APR_DECLARE(apr_status_t) apr_dso_sym(apr_dso_handle_sym_t *ressym, - apr_dso_handle_t *handle, +APR_DECLARE(fspr_status_t) fspr_dso_sym(fspr_dso_handle_sym_t *ressym, + fspr_dso_handle_t *handle, const char *symname) { PFN func; @@ -91,10 +91,10 @@ APR_DECLARE(apr_status_t) apr_dso_sym(apr_dso_handle_sym_t *ressym, -APR_DECLARE(const char *) apr_dso_error(apr_dso_handle_t *dso, char *buffer, apr_size_t buflen) +APR_DECLARE(const char *) fspr_dso_error(fspr_dso_handle_t *dso, char *buffer, fspr_size_t buflen) { char message[200]; - apr_strerror(dso->load_error, message, sizeof(message)); + fspr_strerror(dso->load_error, message, sizeof(message)); if (dso->failed_module != NULL) { strcat(message, " ("); @@ -102,17 +102,17 @@ APR_DECLARE(const char *) apr_dso_error(apr_dso_handle_t *dso, char *buffer, apr strcat(message, ")"); } - apr_cpystrn(buffer, message, buflen); + fspr_cpystrn(buffer, message, buflen); return buffer; } -APR_DECLARE(apr_status_t) apr_os_dso_handle_put(apr_dso_handle_t **aprdso, - apr_os_dso_handle_t osdso, - apr_pool_t *pool) +APR_DECLARE(fspr_status_t) fspr_os_dso_handle_put(fspr_dso_handle_t **aprdso, + fspr_os_dso_handle_t osdso, + fspr_pool_t *pool) { - *aprdso = apr_pcalloc(pool, sizeof **aprdso); + *aprdso = fspr_pcalloc(pool, sizeof **aprdso); (*aprdso)->handle = osdso; (*aprdso)->cont = pool; (*aprdso)->load_error = APR_SUCCESS; @@ -122,8 +122,8 @@ APR_DECLARE(apr_status_t) apr_os_dso_handle_put(apr_dso_handle_t **aprdso, -APR_DECLARE(apr_status_t) apr_os_dso_handle_get(apr_os_dso_handle_t *osdso, - apr_dso_handle_t *aprdso) +APR_DECLARE(fspr_status_t) fspr_os_dso_handle_get(fspr_os_dso_handle_t *osdso, + fspr_dso_handle_t *aprdso) { *osdso = aprdso->handle; return APR_SUCCESS; diff --git a/libs/apr/dso/os390/dso.c b/libs/apr/dso/os390/dso.c index 293d0653e75..7c7f9fb8329 100644 --- a/libs/apr/dso/os390/dso.c +++ b/libs/apr/dso/os390/dso.c @@ -14,34 +14,34 @@ * limitations under the License. */ -#include "apr_portable.h" -#include "apr_strings.h" -#include "apr_arch_dso.h" +#include "fspr_portable.h" +#include "fspr_strings.h" +#include "fspr_arch_dso.h" #include #include #if APR_HAS_DSO -APR_DECLARE(apr_status_t) apr_os_dso_handle_put(apr_dso_handle_t **aprdso, - apr_os_dso_handle_t osdso, - apr_pool_t *pool) +APR_DECLARE(fspr_status_t) fspr_os_dso_handle_put(fspr_dso_handle_t **aprdso, + fspr_os_dso_handle_t osdso, + fspr_pool_t *pool) { - *aprdso = apr_pcalloc(pool, sizeof **aprdso); + *aprdso = fspr_pcalloc(pool, sizeof **aprdso); (*aprdso)->handle = osdso; (*aprdso)->pool = pool; return APR_SUCCESS; } -APR_DECLARE(apr_status_t) apr_os_dso_handle_get(apr_os_dso_handle_t *osdso, - apr_dso_handle_t *aprdso) +APR_DECLARE(fspr_status_t) fspr_os_dso_handle_get(fspr_os_dso_handle_t *osdso, + fspr_dso_handle_t *aprdso) { *osdso = aprdso->handle; return APR_SUCCESS; } -static apr_status_t dso_cleanup(void *thedso) +static fspr_status_t dso_cleanup(void *thedso) { - apr_dso_handle_t *dso = thedso; + fspr_dso_handle_t *dso = thedso; int rc; if (dso->handle == 0) @@ -57,17 +57,17 @@ static apr_status_t dso_cleanup(void *thedso) return errno; } -APR_DECLARE(apr_status_t) apr_dso_load(apr_dso_handle_t **res_handle, - const char *path, apr_pool_t *ctx) +APR_DECLARE(fspr_status_t) fspr_dso_load(fspr_dso_handle_t **res_handle, + const char *path, fspr_pool_t *ctx) { dllhandle *handle; int rc; - *res_handle = apr_pcalloc(ctx, sizeof(*res_handle)); + *res_handle = fspr_pcalloc(ctx, sizeof(*res_handle)); (*res_handle)->pool = ctx; if ((handle = dllload(path)) != NULL) { (*res_handle)->handle = handle; - apr_pool_cleanup_register(ctx, *res_handle, dso_cleanup, apr_pool_cleanup_null); + fspr_pool_cleanup_register(ctx, *res_handle, dso_cleanup, fspr_pool_cleanup_null); return APR_SUCCESS; } @@ -75,13 +75,13 @@ APR_DECLARE(apr_status_t) apr_dso_load(apr_dso_handle_t **res_handle, return errno; } -APR_DECLARE(apr_status_t) apr_dso_unload(apr_dso_handle_t *handle) +APR_DECLARE(fspr_status_t) fspr_dso_unload(fspr_dso_handle_t *handle) { - return apr_pool_cleanup_run(handle->pool, handle, dso_cleanup); + return fspr_pool_cleanup_run(handle->pool, handle, dso_cleanup); } -APR_DECLARE(apr_status_t) apr_dso_sym(apr_dso_handle_sym_t *ressym, - apr_dso_handle_t *handle, +APR_DECLARE(fspr_status_t) fspr_dso_sym(fspr_dso_handle_sym_t *ressym, + fspr_dso_handle_t *handle, const char *symname) { void *func_ptr; @@ -99,10 +99,10 @@ APR_DECLARE(apr_status_t) apr_dso_sym(apr_dso_handle_sym_t *ressym, return errno; } -APR_DECLARE(const char *) apr_dso_error(apr_dso_handle_t *handle, char *buffer, - apr_size_t buflen) +APR_DECLARE(const char *) fspr_dso_error(fspr_dso_handle_t *handle, char *buffer, + fspr_size_t buflen) { - apr_cpystrn(buffer, strerror(handle->failing_errno), buflen); + fspr_cpystrn(buffer, strerror(handle->failing_errno), buflen); return buffer; } diff --git a/libs/apr/dso/unix/dso.c b/libs/apr/dso/unix/dso.c index 15d39d7d196..2e77a19bf5b 100644 --- a/libs/apr/dso/unix/dso.c +++ b/libs/apr/dso/unix/dso.c @@ -14,9 +14,9 @@ * limitations under the License. */ -#include "apr_arch_dso.h" -#include "apr_strings.h" -#include "apr_portable.h" +#include "fspr_arch_dso.h" +#include "fspr_strings.h" +#include "fspr_portable.h" #if APR_HAS_DSO @@ -38,26 +38,26 @@ #define DYLD_LIBRARY_HANDLE (void *)-1 #endif -APR_DECLARE(apr_status_t) apr_os_dso_handle_put(apr_dso_handle_t **aprdso, - apr_os_dso_handle_t osdso, - apr_pool_t *pool) +APR_DECLARE(fspr_status_t) fspr_os_dso_handle_put(fspr_dso_handle_t **aprdso, + fspr_os_dso_handle_t osdso, + fspr_pool_t *pool) { - *aprdso = apr_pcalloc(pool, sizeof **aprdso); + *aprdso = fspr_pcalloc(pool, sizeof **aprdso); (*aprdso)->handle = osdso; (*aprdso)->pool = pool; return APR_SUCCESS; } -APR_DECLARE(apr_status_t) apr_os_dso_handle_get(apr_os_dso_handle_t *osdso, - apr_dso_handle_t *aprdso) +APR_DECLARE(fspr_status_t) fspr_os_dso_handle_get(fspr_os_dso_handle_t *osdso, + fspr_dso_handle_t *aprdso) { *osdso = aprdso->handle; return APR_SUCCESS; } -static apr_status_t dso_cleanup(void *thedso) +static fspr_status_t dso_cleanup(void *thedso) { - apr_dso_handle_t *dso = thedso; + fspr_dso_handle_t *dso = thedso; if (dso->handle == NULL) return APR_SUCCESS; @@ -77,8 +77,8 @@ static apr_status_t dso_cleanup(void *thedso) return APR_SUCCESS; } -APR_DECLARE(apr_status_t) apr_dso_load(apr_dso_handle_t **res_handle, - const char *path, apr_pool_t *pool) +APR_DECLARE(fspr_status_t) fspr_dso_load(fspr_dso_handle_t **res_handle, + const char *path, fspr_pool_t *pool) { #if defined(DSO_USE_SHL) shl_t os_handle = shl_load(path, BIND_IMMEDIATE, 0L); @@ -140,7 +140,7 @@ APR_DECLARE(apr_status_t) apr_dso_load(apr_dso_handle_t **res_handle, #endif #endif /* DSO_USE_x */ - *res_handle = apr_pcalloc(pool, sizeof(**res_handle)); + *res_handle = fspr_pcalloc(pool, sizeof(**res_handle)); if(os_handle == NULL) { #if defined(DSO_USE_SHL) @@ -159,18 +159,18 @@ APR_DECLARE(apr_status_t) apr_dso_load(apr_dso_handle_t **res_handle, (*res_handle)->pool = pool; (*res_handle)->errormsg = NULL; - apr_pool_cleanup_register(pool, *res_handle, dso_cleanup, apr_pool_cleanup_null); + fspr_pool_cleanup_register(pool, *res_handle, dso_cleanup, fspr_pool_cleanup_null); return APR_SUCCESS; } -APR_DECLARE(apr_status_t) apr_dso_unload(apr_dso_handle_t *handle) +APR_DECLARE(fspr_status_t) fspr_dso_unload(fspr_dso_handle_t *handle) { - return apr_pool_cleanup_run(handle->pool, handle, dso_cleanup); + return fspr_pool_cleanup_run(handle->pool, handle, dso_cleanup); } -APR_DECLARE(apr_status_t) apr_dso_sym(apr_dso_handle_sym_t *ressym, - apr_dso_handle_t *handle, +APR_DECLARE(fspr_status_t) fspr_dso_sym(fspr_dso_handle_sym_t *ressym, + fspr_dso_handle_t *handle, const char *symname) { #if defined(DSO_USE_SHL) @@ -238,11 +238,11 @@ APR_DECLARE(apr_status_t) apr_dso_sym(apr_dso_handle_sym_t *ressym, #endif /* DSO_USE_x */ } -APR_DECLARE(const char *) apr_dso_error(apr_dso_handle_t *dso, char *buffer, - apr_size_t buflen) +APR_DECLARE(const char *) fspr_dso_error(fspr_dso_handle_t *dso, char *buffer, + fspr_size_t buflen) { if (dso->errormsg) { - apr_cpystrn(buffer, dso->errormsg, buflen); + fspr_cpystrn(buffer, dso->errormsg, buflen); return dso->errormsg; } return "No Error"; diff --git a/libs/apr/dso/win32/dso.c b/libs/apr/dso/win32/dso.c index d4a689387b3..928b88344b3 100644 --- a/libs/apr/dso/win32/dso.c +++ b/libs/apr/dso/win32/dso.c @@ -14,48 +14,48 @@ * limitations under the License. */ -#include "apr_arch_dso.h" -#include "apr_strings.h" -#include "apr_private.h" -#include "apr_arch_file_io.h" -#include "apr_arch_utf8.h" +#include "fspr_arch_dso.h" +#include "fspr_strings.h" +#include "fspr_private.h" +#include "fspr_arch_file_io.h" +#include "fspr_arch_utf8.h" #if APR_HAS_DSO -APR_DECLARE(apr_status_t) apr_os_dso_handle_put(apr_dso_handle_t **aprdso, - apr_os_dso_handle_t osdso, - apr_pool_t *pool) +APR_DECLARE(fspr_status_t) fspr_os_dso_handle_put(fspr_dso_handle_t **aprdso, + fspr_os_dso_handle_t osdso, + fspr_pool_t *pool) { - *aprdso = apr_pcalloc(pool, sizeof **aprdso); + *aprdso = fspr_pcalloc(pool, sizeof **aprdso); (*aprdso)->handle = osdso; (*aprdso)->cont = pool; return APR_SUCCESS; } -APR_DECLARE(apr_status_t) apr_os_dso_handle_get(apr_os_dso_handle_t *osdso, - apr_dso_handle_t *aprdso) +APR_DECLARE(fspr_status_t) fspr_os_dso_handle_get(fspr_os_dso_handle_t *osdso, + fspr_dso_handle_t *aprdso) { *osdso = aprdso->handle; return APR_SUCCESS; } -static apr_status_t dso_cleanup(void *thedso) +static fspr_status_t dso_cleanup(void *thedso) { - apr_dso_handle_t *dso = thedso; + fspr_dso_handle_t *dso = thedso; if (dso->handle != NULL && !FreeLibrary(dso->handle)) { - return apr_get_os_error(); + return fspr_get_os_error(); } dso->handle = NULL; return APR_SUCCESS; } -APR_DECLARE(apr_status_t) apr_dso_load(struct apr_dso_handle_t **res_handle, - const char *path, apr_pool_t *ctx) +APR_DECLARE(fspr_status_t) fspr_dso_load(struct fspr_dso_handle_t **res_handle, + const char *path, fspr_pool_t *ctx) { HINSTANCE os_handle; - apr_status_t rv; + fspr_status_t rv; #ifndef _WIN32_WCE UINT em; #endif @@ -63,11 +63,11 @@ APR_DECLARE(apr_status_t) apr_dso_load(struct apr_dso_handle_t **res_handle, #if APR_HAS_UNICODE_FS IF_WIN_OS_IS_UNICODE { - apr_wchar_t wpath[APR_PATH_MAX]; + fspr_wchar_t wpath[APR_PATH_MAX]; if ((rv = utf8_to_unicode_path(wpath, sizeof(wpath) - / sizeof(apr_wchar_t), path)) + / sizeof(fspr_wchar_t), path)) != APR_SUCCESS) { - *res_handle = apr_pcalloc(ctx, sizeof(**res_handle)); + *res_handle = fspr_pcalloc(ctx, sizeof(**res_handle)); return ((*res_handle)->load_error = rv); } /* Prevent ugly popups from killing our app */ @@ -78,7 +78,7 @@ APR_DECLARE(apr_status_t) apr_dso_load(struct apr_dso_handle_t **res_handle, if (!os_handle) os_handle = LoadLibraryExW(wpath, NULL, LOAD_WITH_ALTERED_SEARCH_PATH); if (!os_handle) - rv = apr_get_os_error(); + rv = fspr_get_os_error(); #ifndef _WIN32_WCE SetErrorMode(em); #endif @@ -94,7 +94,7 @@ APR_DECLARE(apr_status_t) apr_dso_load(struct apr_dso_handle_t **res_handle, * LoadLibrary in the MS PSDK also reveals that it -explicitly- states * that backslashes must be used for the LoadLibrary family of calls. */ - apr_cpystrn(fspec, path, sizeof(fspec)); + fspr_cpystrn(fspec, path, sizeof(fspec)); while ((p = strchr(p, '/')) != NULL) *p = '\\'; @@ -104,14 +104,14 @@ APR_DECLARE(apr_status_t) apr_dso_load(struct apr_dso_handle_t **res_handle, if (!os_handle) os_handle = LoadLibraryEx(path, NULL, 0); if (!os_handle) - rv = apr_get_os_error(); + rv = fspr_get_os_error(); else rv = APR_SUCCESS; SetErrorMode(em); } #endif - *res_handle = apr_pcalloc(ctx, sizeof(**res_handle)); + *res_handle = fspr_pcalloc(ctx, sizeof(**res_handle)); (*res_handle)->cont = ctx; if (rv) { @@ -121,27 +121,27 @@ APR_DECLARE(apr_status_t) apr_dso_load(struct apr_dso_handle_t **res_handle, (*res_handle)->handle = (void*)os_handle; (*res_handle)->load_error = APR_SUCCESS; - apr_pool_cleanup_register(ctx, *res_handle, dso_cleanup, apr_pool_cleanup_null); + fspr_pool_cleanup_register(ctx, *res_handle, dso_cleanup, fspr_pool_cleanup_null); return APR_SUCCESS; } -APR_DECLARE(apr_status_t) apr_dso_unload(struct apr_dso_handle_t *handle) +APR_DECLARE(fspr_status_t) fspr_dso_unload(struct fspr_dso_handle_t *handle) { - return apr_pool_cleanup_run(handle->cont, handle, dso_cleanup); + return fspr_pool_cleanup_run(handle->cont, handle, dso_cleanup); } -APR_DECLARE(apr_status_t) apr_dso_sym(apr_dso_handle_sym_t *ressym, - struct apr_dso_handle_t *handle, +APR_DECLARE(fspr_status_t) fspr_dso_sym(fspr_dso_handle_sym_t *ressym, + struct fspr_dso_handle_t *handle, const char *symname) { #ifdef _WIN32_WCE - apr_size_t symlen = strlen(symname) + 1; - apr_size_t wsymlen = 256; - apr_wchar_t wsymname[256]; - apr_status_t rv; + fspr_size_t symlen = strlen(symname) + 1; + fspr_size_t wsymlen = 256; + fspr_wchar_t wsymname[256]; + fspr_status_t rv; - rv = apr_conv_utf8_to_ucs2(wsymname, &wsymlen, symname, &symlen); + rv = fspr_conv_utf8_to_ucs2(wsymname, &wsymlen, symname, &symlen); if (rv != APR_SUCCESS) { return rv; } @@ -149,19 +149,19 @@ APR_DECLARE(apr_status_t) apr_dso_sym(apr_dso_handle_sym_t *ressym, return APR_ENAMETOOLONG; } - *ressym = (apr_dso_handle_sym_t)GetProcAddressW(handle->handle, wsymname); + *ressym = (fspr_dso_handle_sym_t)GetProcAddressW(handle->handle, wsymname); #else - *ressym = (apr_dso_handle_sym_t)GetProcAddress(handle->handle, symname); + *ressym = (fspr_dso_handle_sym_t)GetProcAddress(handle->handle, symname); #endif if (!*ressym) { - return apr_get_os_error(); + return fspr_get_os_error(); } return APR_SUCCESS; } -APR_DECLARE(const char *) apr_dso_error(apr_dso_handle_t *dso, char *buf, apr_size_t bufsize) +APR_DECLARE(const char *) fspr_dso_error(fspr_dso_handle_t *dso, char *buf, fspr_size_t bufsize) { - return apr_strerror(dso->load_error, buf, bufsize); + return fspr_strerror(dso->load_error, buf, bufsize); } #endif diff --git a/libs/apr/file_io/netware/filestat.c b/libs/apr/file_io/netware/filestat.c index a3f60e57dff..5b58ef5b50d 100644 --- a/libs/apr/file_io/netware/filestat.c +++ b/libs/apr/file_io/netware/filestat.c @@ -14,15 +14,15 @@ * limitations under the License. */ -#include "apr_arch_file_io.h" +#include "fspr_arch_file_io.h" #include "fsio.h" #include "nks/dirio.h" -#include "apr_file_io.h" -#include "apr_general.h" -#include "apr_strings.h" -#include "apr_errno.h" -#include "apr_hash.h" -#include "apr_thread_rwlock.h" +#include "fspr_file_io.h" +#include "fspr_general.h" +#include "fspr_strings.h" +#include "fspr_errno.h" +#include "fspr_hash.h" +#include "fspr_thread_rwlock.h" #ifdef HAVE_UTIME_H #include @@ -30,9 +30,9 @@ #define APR_HAS_PSA -static apr_filetype_e filetype_from_mode(mode_t mode) +static fspr_filetype_e filetype_from_mode(mode_t mode) { - apr_filetype_e type = APR_NOFILE; + fspr_filetype_e type = APR_NOFILE; if (S_ISREG(mode)) type = APR_REG; @@ -53,12 +53,12 @@ static apr_filetype_e filetype_from_mode(mode_t mode) return type; } -static void fill_out_finfo(apr_finfo_t *finfo, struct stat *info, - apr_int32_t wanted) +static void fill_out_finfo(fspr_finfo_t *finfo, struct stat *info, + fspr_int32_t wanted) { finfo->valid = APR_FINFO_MIN | APR_FINFO_IDENT | APR_FINFO_NLINK | APR_FINFO_OWNER | APR_FINFO_PROT; - finfo->protection = apr_unix_mode2perms(info->st_mode); + finfo->protection = fspr_unix_mode2perms(info->st_mode); finfo->filetype = filetype_from_mode(info->st_mode); finfo->user = info->st_uid; finfo->group = info->st_gid; @@ -66,9 +66,9 @@ static void fill_out_finfo(apr_finfo_t *finfo, struct stat *info, finfo->inode = info->st_ino; finfo->device = info->st_dev; finfo->nlink = info->st_nlink; - apr_time_ansi_put(&finfo->atime, info->st_atime.tv_sec); - apr_time_ansi_put(&finfo->mtime, info->st_mtime.tv_sec); - apr_time_ansi_put(&finfo->ctime, info->st_ctime.tv_sec); + fspr_time_ansi_put(&finfo->atime, info->st_atime.tv_sec); + fspr_time_ansi_put(&finfo->mtime, info->st_mtime.tv_sec); + fspr_time_ansi_put(&finfo->ctime, info->st_ctime.tv_sec); /* ### needs to be revisited * if (wanted & APR_FINFO_CSIZE) { * finfo->csize = info->st_blocks * 512; @@ -77,14 +77,14 @@ static void fill_out_finfo(apr_finfo_t *finfo, struct stat *info, */ } -APR_DECLARE(apr_status_t) apr_file_info_get(apr_finfo_t *finfo, - apr_int32_t wanted, - apr_file_t *thefile) +APR_DECLARE(fspr_status_t) fspr_file_info_get(fspr_finfo_t *finfo, + fspr_int32_t wanted, + fspr_file_t *thefile) { struct stat info; if (thefile->buffered) { - apr_status_t rv = apr_file_flush(thefile); + fspr_status_t rv = fspr_file_flush(thefile); if (rv != APR_SUCCESS) return rv; } @@ -100,30 +100,30 @@ APR_DECLARE(apr_status_t) apr_file_info_get(apr_finfo_t *finfo, } } -APR_DECLARE(apr_status_t) apr_file_perms_set(const char *fname, - apr_fileperms_t perms) +APR_DECLARE(fspr_status_t) fspr_file_perms_set(const char *fname, + fspr_fileperms_t perms) { - mode_t mode = apr_unix_perms2mode(perms); + mode_t mode = fspr_unix_perms2mode(perms); if (chmod(fname, mode) == -1) return errno; return APR_SUCCESS; } -APR_DECLARE(apr_status_t) apr_file_attrs_set(const char *fname, - apr_fileattrs_t attributes, - apr_fileattrs_t attr_mask, - apr_pool_t *pool) +APR_DECLARE(fspr_status_t) fspr_file_attrs_set(const char *fname, + fspr_fileattrs_t attributes, + fspr_fileattrs_t attr_mask, + fspr_pool_t *pool) { - apr_status_t status; - apr_finfo_t finfo; + fspr_status_t status; + fspr_finfo_t finfo; /* Don't do anything if we can't handle the requested attributes */ if (!(attr_mask & (APR_FILE_ATTR_READONLY | APR_FILE_ATTR_EXECUTABLE))) return APR_SUCCESS; - status = apr_stat(&finfo, fname, APR_FINFO_PROT, pool); + status = fspr_stat(&finfo, fname, APR_FINFO_PROT, pool); if (status) return status; @@ -162,21 +162,21 @@ APR_DECLARE(apr_status_t) apr_file_attrs_set(const char *fname, } } - return apr_file_perms_set(fname, finfo.protection); + return fspr_file_perms_set(fname, finfo.protection); } #ifndef APR_HAS_PSA -static apr_status_t stat_cache_cleanup(void *data) +static fspr_status_t stat_cache_cleanup(void *data) { - apr_pool_t *p = (apr_pool_t *)getGlobalPool(); - apr_hash_index_t *hi; - apr_hash_t *statCache = (apr_hash_t*)data; + fspr_pool_t *p = (fspr_pool_t *)getGlobalPool(); + fspr_hash_index_t *hi; + fspr_hash_t *statCache = (fspr_hash_t*)data; char *key; - apr_ssize_t keylen; + fspr_ssize_t keylen; NXPathCtx_t pathctx; - for (hi = apr_hash_first(p, statCache); hi; hi = apr_hash_next(hi)) { - apr_hash_this(hi, (const void**)&key, &keylen, (void**)&pathctx); + for (hi = fspr_hash_first(p, statCache); hi; hi = fspr_hash_next(hi)) { + fspr_hash_this(hi, (const void**)&key, &keylen, (void**)&pathctx); if (pathctx) { NXFreePathContext(pathctx); @@ -186,11 +186,11 @@ static apr_status_t stat_cache_cleanup(void *data) return APR_SUCCESS; } -int cstat (NXPathCtx_t ctx, char *path, struct stat *buf, unsigned long requestmap, apr_pool_t *p) +int cstat (NXPathCtx_t ctx, char *path, struct stat *buf, unsigned long requestmap, fspr_pool_t *p) { - apr_pool_t *gPool = (apr_pool_t *)getGlobalPool(); - apr_hash_t *statCache = NULL; - apr_thread_rwlock_t *rwlock = NULL; + fspr_pool_t *gPool = (fspr_pool_t *)getGlobalPool(); + fspr_hash_t *statCache = NULL; + fspr_thread_rwlock_t *rwlock = NULL; NXPathCtx_t pathctx = 0; char *ptr = NULL, *tr; @@ -205,22 +205,22 @@ int cstat (NXPathCtx_t ctx, char *path, struct stat *buf, unsigned long requestm if (!gPool) { char poolname[50]; - if (apr_pool_create(&gPool, NULL) != APR_SUCCESS) { + if (fspr_pool_create(&gPool, NULL) != APR_SUCCESS) { return getstat(ctx, path, buf, requestmap); } setGlobalPool(gPool); - apr_pool_tag(gPool, apr_pstrdup(gPool, "cstat_mem_pool")); + fspr_pool_tag(gPool, fspr_pstrdup(gPool, "cstat_mem_pool")); - statCache = apr_hash_make(gPool); - apr_pool_userdata_set ((void*)statCache, "STAT_CACHE", stat_cache_cleanup, gPool); + statCache = fspr_hash_make(gPool); + fspr_pool_userdata_set ((void*)statCache, "STAT_CACHE", stat_cache_cleanup, gPool); - apr_thread_rwlock_create(&rwlock, gPool); - apr_pool_userdata_set ((void*)rwlock, "STAT_CACHE_LOCK", apr_pool_cleanup_null, gPool); + fspr_thread_rwlock_create(&rwlock, gPool); + fspr_pool_userdata_set ((void*)rwlock, "STAT_CACHE_LOCK", fspr_pool_cleanup_null, gPool); } else { - apr_pool_userdata_get((void**)&statCache, "STAT_CACHE", gPool); - apr_pool_userdata_get((void**)&rwlock, "STAT_CACHE_LOCK", gPool); + fspr_pool_userdata_get((void**)&statCache, "STAT_CACHE", gPool); + fspr_pool_userdata_get((void**)&rwlock, "STAT_CACHE_LOCK", gPool); } if (!gPool || !statCache || !rwlock) { @@ -239,7 +239,7 @@ int cstat (NXPathCtx_t ctx, char *path, struct stat *buf, unsigned long requestm } if (ptr) { - ppath = apr_pstrndup (p, path, len); + ppath = fspr_pstrndup (p, path, len); strlwr(ppath); if (ptr[1] != '\0') { ptr++; @@ -249,19 +249,19 @@ int cstat (NXPathCtx_t ctx, char *path, struct stat *buf, unsigned long requestm slash, we need to make sure we stat the current directory with a dot */ if (((*ptr == '/') || (*ptr == '\\')) && (*(ptr+1) == '\0')) { - pinfo = apr_pstrdup (p, "."); + pinfo = fspr_pstrdup (p, "."); } else { - pinfo = apr_pstrdup (p, ptr); + pinfo = fspr_pstrdup (p, ptr); } } /* If we have a statCache then try to pull the information from the cache. Otherwise just stat the file and return.*/ if (statCache) { - apr_thread_rwlock_rdlock(rwlock); - pathctx = (NXPathCtx_t) apr_hash_get(statCache, ppath, APR_HASH_KEY_STRING); - apr_thread_rwlock_unlock(rwlock); + fspr_thread_rwlock_rdlock(rwlock); + pathctx = (NXPathCtx_t) fspr_hash_get(statCache, ppath, APR_HASH_KEY_STRING); + fspr_thread_rwlock_unlock(rwlock); if (pathctx) { return getstat(pathctx, pinfo, buf, requestmap); } @@ -270,9 +270,9 @@ int cstat (NXPathCtx_t ctx, char *path, struct stat *buf, unsigned long requestm err = NXCreatePathContext(0, ppath, 0, NULL, &pathctx); if (!err) { - apr_thread_rwlock_wrlock(rwlock); - apr_hash_set(statCache, apr_pstrdup(gPool,ppath) , APR_HASH_KEY_STRING, (void*)pathctx); - apr_thread_rwlock_unlock(rwlock); + fspr_thread_rwlock_wrlock(rwlock); + fspr_hash_set(statCache, fspr_pstrdup(gPool,ppath) , APR_HASH_KEY_STRING, (void*)pathctx); + fspr_thread_rwlock_unlock(rwlock); return getstat(pathctx, pinfo, buf, requestmap); } } @@ -282,9 +282,9 @@ int cstat (NXPathCtx_t ctx, char *path, struct stat *buf, unsigned long requestm } #endif -APR_DECLARE(apr_status_t) apr_stat(apr_finfo_t *finfo, +APR_DECLARE(fspr_status_t) fspr_stat(fspr_finfo_t *finfo, const char *fname, - apr_int32_t wanted, apr_pool_t *pool) + fspr_int32_t wanted, fspr_pool_t *pool) { struct stat info; int srv; @@ -305,7 +305,7 @@ APR_DECLARE(apr_status_t) apr_stat(apr_finfo_t *finfo, if (wanted & APR_FINFO_LINK) wanted &= ~APR_FINFO_LINK; if (wanted & APR_FINFO_NAME) { - finfo->name = apr_pstrdup(pool, info.st_name); + finfo->name = fspr_pstrdup(pool, info.st_name); finfo->valid |= APR_FINFO_NAME; } return (wanted & ~finfo->valid) ? APR_INCOMPLETE : APR_SUCCESS; @@ -345,14 +345,14 @@ APR_DECLARE(apr_status_t) apr_stat(apr_finfo_t *finfo, } } -APR_DECLARE(apr_status_t) apr_file_mtime_set(const char *fname, - apr_time_t mtime, - apr_pool_t *pool) +APR_DECLARE(fspr_status_t) fspr_file_mtime_set(const char *fname, + fspr_time_t mtime, + fspr_pool_t *pool) { - apr_status_t status; - apr_finfo_t finfo; + fspr_status_t status; + fspr_finfo_t finfo; - status = apr_stat(&finfo, fname, APR_FINFO_ATIME, pool); + status = fspr_stat(&finfo, fname, APR_FINFO_ATIME, pool); if (status) { return status; } @@ -361,10 +361,10 @@ APR_DECLARE(apr_status_t) apr_file_mtime_set(const char *fname, { struct timeval tvp[2]; - tvp[0].tv_sec = apr_time_sec(finfo.atime); - tvp[0].tv_usec = apr_time_usec(finfo.atime); - tvp[1].tv_sec = apr_time_sec(mtime); - tvp[1].tv_usec = apr_time_usec(mtime); + tvp[0].tv_sec = fspr_time_sec(finfo.atime); + tvp[0].tv_usec = fspr_time_usec(finfo.atime); + tvp[1].tv_sec = fspr_time_sec(mtime); + tvp[1].tv_usec = fspr_time_usec(mtime); if (utimes(fname, tvp) == -1) { return errno; diff --git a/libs/apr/file_io/netware/filesys.c b/libs/apr/file_io/netware/filesys.c index 05c44cecd57..f366f4644bc 100644 --- a/libs/apr/file_io/netware/filesys.c +++ b/libs/apr/file_io/netware/filesys.c @@ -14,21 +14,21 @@ * limitations under the License. */ -#include "apr.h" -#include "apr_arch_file_io.h" -#include "apr_strings.h" +#include "fspr.h" +#include "fspr_arch_file_io.h" +#include "fspr_strings.h" -apr_status_t filepath_root_case(char **rootpath, char *root, apr_pool_t *p) +fspr_status_t filepath_root_case(char **rootpath, char *root, fspr_pool_t *p) { /* See the Windows code to figure out what to do here. It probably checks to make sure that the root exists and case it correctly according to the file system. */ - *rootpath = apr_pstrdup(p, root); + *rootpath = fspr_pstrdup(p, root); return APR_SUCCESS; } -apr_status_t filepath_has_drive(const char *rootpath, int only, apr_pool_t *p) +fspr_status_t filepath_has_drive(const char *rootpath, int only, fspr_pool_t *p) { char *s; @@ -46,7 +46,7 @@ apr_status_t filepath_has_drive(const char *rootpath, int only, apr_pool_t *p) return 0; } -apr_status_t filepath_compare_drive(const char *path1, const char *path2, apr_pool_t *p) +fspr_status_t filepath_compare_drive(const char *path1, const char *path2, fspr_pool_t *p) { char *s1, *s2; @@ -64,8 +64,8 @@ apr_status_t filepath_compare_drive(const char *path1, const char *path2, apr_po return -1; } -APR_DECLARE(apr_status_t) apr_filepath_get(char **rootpath, apr_int32_t flags, - apr_pool_t *p) +APR_DECLARE(fspr_status_t) fspr_filepath_get(char **rootpath, fspr_int32_t flags, + fspr_pool_t *p) { char path[APR_PATH_MAX]; char *ptr; @@ -85,7 +85,7 @@ APR_DECLARE(apr_status_t) apr_filepath_get(char **rootpath, apr_int32_t flags, if (*ptr == ':') { ptr = path; } - *rootpath = apr_pstrdup(p, ptr); + *rootpath = fspr_pstrdup(p, ptr); if (!(flags & APR_FILEPATH_NATIVE)) { for (ptr = *rootpath; *ptr; ++ptr) { if (*ptr == '\\') @@ -95,8 +95,8 @@ APR_DECLARE(apr_status_t) apr_filepath_get(char **rootpath, apr_int32_t flags, return APR_SUCCESS; } -APR_DECLARE(apr_status_t) apr_filepath_set(const char *rootpath, - apr_pool_t *p) +APR_DECLARE(fspr_status_t) fspr_filepath_set(const char *rootpath, + fspr_pool_t *p) { if (chdir2(rootpath) != 0) return errno; diff --git a/libs/apr/file_io/netware/flock.c b/libs/apr/file_io/netware/flock.c index c083a0ed401..084d4d9bb76 100644 --- a/libs/apr/file_io/netware/flock.c +++ b/libs/apr/file_io/netware/flock.c @@ -15,10 +15,10 @@ */ #include -#include "apr_arch_file_io.h" +#include "fspr_arch_file_io.h" -apr_status_t apr_file_lock(apr_file_t *thefile, int type) +fspr_status_t fspr_file_lock(fspr_file_t *thefile, int type) { int fc; @@ -30,7 +30,7 @@ apr_status_t apr_file_lock(apr_file_t *thefile, int type) return APR_SUCCESS; } -apr_status_t apr_file_unlock(apr_file_t *thefile) +fspr_status_t fspr_file_unlock(fspr_file_t *thefile) { if(NXFileRangeUnlock(thefile->filedes,NX_RANGE_LOCK_CANCEL,0 , 0) == -1) return errno; diff --git a/libs/apr/file_io/netware/mktemp.c b/libs/apr/file_io/netware/mktemp.c index c5ffebd20d4..8ffa9474040 100644 --- a/libs/apr/file_io/netware/mktemp.c +++ b/libs/apr/file_io/netware/mktemp.c @@ -14,18 +14,18 @@ * limitations under the License. */ -#include "apr_private.h" -#include "apr_file_io.h" /* prototype of apr_mkstemp() */ -#include "apr_strings.h" /* prototype of apr_mkstemp() */ -#include "apr_arch_file_io.h" /* prototype of apr_mkstemp() */ -#include "apr_portable.h" /* for apr_os_file_put() */ +#include "fspr_private.h" +#include "fspr_file_io.h" /* prototype of fspr_mkstemp() */ +#include "fspr_strings.h" /* prototype of fspr_mkstemp() */ +#include "fspr_arch_file_io.h" /* prototype of fspr_mkstemp() */ +#include "fspr_portable.h" /* for fspr_os_file_put() */ #include /* for mkstemp() - Single Unix */ -APR_DECLARE(apr_status_t) apr_file_mktemp(apr_file_t **fp, char *template, apr_int32_t flags, apr_pool_t *p) +APR_DECLARE(fspr_status_t) fspr_file_mktemp(fspr_file_t **fp, char *template, fspr_int32_t flags, fspr_pool_t *p) { int fd; - apr_status_t rv; + fspr_status_t rv; flags = (!flags) ? APR_CREATE | APR_READ | APR_WRITE | APR_DELONCLOSE : flags & ~APR_EXCL; @@ -38,11 +38,11 @@ APR_DECLARE(apr_status_t) apr_file_mktemp(apr_file_t **fp, char *template, apr_i * Otherwise file locking will not allow the file to be shared. */ close(fd); - if ((rv = apr_file_open(fp, template, flags|APR_FILE_NOCLEANUP, + if ((rv = fspr_file_open(fp, template, flags|APR_FILE_NOCLEANUP, APR_UREAD | APR_UWRITE, p)) == APR_SUCCESS) { - apr_pool_cleanup_register((*fp)->pool, (void *)(*fp), - apr_unix_file_cleanup, apr_unix_file_cleanup); + fspr_pool_cleanup_register((*fp)->pool, (void *)(*fp), + fspr_unix_file_cleanup, fspr_unix_file_cleanup); } return rv; diff --git a/libs/apr/file_io/netware/pipe.c b/libs/apr/file_io/netware/pipe.c index 4b6b8268878..70ed4b8e129 100644 --- a/libs/apr/file_io/netware/pipe.c +++ b/libs/apr/file_io/netware/pipe.c @@ -18,12 +18,12 @@ #include #include -#include "apr_arch_file_io.h" -#include "apr_strings.h" -#include "apr_portable.h" -#include "apr_arch_inherit.h" +#include "fspr_arch_file_io.h" +#include "fspr_strings.h" +#include "fspr_portable.h" +#include "fspr_arch_inherit.h" -static apr_status_t pipeblock(apr_file_t *thepipe) +static fspr_status_t pipeblock(fspr_file_t *thepipe) { #ifdef USE_FLAGS int err; @@ -46,7 +46,7 @@ static apr_status_t pipeblock(apr_file_t *thepipe) return APR_SUCCESS; } -static apr_status_t pipenonblock(apr_file_t *thepipe) +static fspr_status_t pipenonblock(fspr_file_t *thepipe) { #ifdef USE_FLAGS int err; @@ -70,7 +70,7 @@ static apr_status_t pipenonblock(apr_file_t *thepipe) return APR_SUCCESS; } -APR_DECLARE(apr_status_t) apr_file_pipe_timeout_set(apr_file_t *thepipe, apr_interval_time_t timeout) +APR_DECLARE(fspr_status_t) fspr_file_pipe_timeout_set(fspr_file_t *thepipe, fspr_interval_time_t timeout) { if (thepipe->is_pipe == 1) { thepipe->timeout = timeout; @@ -89,7 +89,7 @@ APR_DECLARE(apr_status_t) apr_file_pipe_timeout_set(apr_file_t *thepipe, apr_int return APR_EINVAL; } -APR_DECLARE(apr_status_t) apr_file_pipe_timeout_get(apr_file_t *thepipe, apr_interval_time_t *timeout) +APR_DECLARE(fspr_status_t) fspr_file_pipe_timeout_get(fspr_file_t *thepipe, fspr_interval_time_t *timeout) { if (thepipe->is_pipe == 1) { *timeout = thepipe->timeout; @@ -98,14 +98,14 @@ APR_DECLARE(apr_status_t) apr_file_pipe_timeout_get(apr_file_t *thepipe, apr_int return APR_EINVAL; } -APR_DECLARE(apr_status_t) apr_os_pipe_put_ex(apr_file_t **file, - apr_os_file_t *thefile, +APR_DECLARE(fspr_status_t) fspr_os_pipe_put_ex(fspr_file_t **file, + fspr_os_file_t *thefile, int register_cleanup, - apr_pool_t *pool) + fspr_pool_t *pool) { int *dafile = thefile; - (*file) = apr_pcalloc(pool, sizeof(apr_file_t)); + (*file) = fspr_pcalloc(pool, sizeof(fspr_file_t)); (*file)->pool = pool; (*file)->eof_hit = 0; (*file)->is_pipe = 1; @@ -121,21 +121,21 @@ APR_DECLARE(apr_status_t) apr_os_pipe_put_ex(apr_file_t **file, (*file)->thlock = NULL; #endif if (register_cleanup) { - apr_pool_cleanup_register((*file)->pool, (void *)(*file), - apr_unix_file_cleanup, - apr_pool_cleanup_null); + fspr_pool_cleanup_register((*file)->pool, (void *)(*file), + fspr_unix_file_cleanup, + fspr_pool_cleanup_null); } return APR_SUCCESS; } -APR_DECLARE(apr_status_t) apr_os_pipe_put(apr_file_t **file, - apr_os_file_t *thefile, - apr_pool_t *pool) +APR_DECLARE(fspr_status_t) fspr_os_pipe_put(fspr_file_t **file, + fspr_os_file_t *thefile, + fspr_pool_t *pool) { - return apr_os_pipe_put_ex(file, thefile, 0, pool); + return fspr_os_pipe_put_ex(file, thefile, 0, pool); } -APR_DECLARE(apr_status_t) apr_file_pipe_create(apr_file_t **in, apr_file_t **out, apr_pool_t *pool) +APR_DECLARE(fspr_status_t) fspr_file_pipe_create(fspr_file_t **in, fspr_file_t **out, fspr_pool_t *pool) { int filedes[2]; int err; @@ -144,8 +144,8 @@ APR_DECLARE(apr_status_t) apr_file_pipe_create(apr_file_t **in, apr_file_t **out return errno; } - (*in) = (apr_file_t *)apr_pcalloc(pool, sizeof(apr_file_t)); - (*out) = (apr_file_t *)apr_pcalloc(pool, sizeof(apr_file_t)); + (*in) = (fspr_file_t *)fspr_pcalloc(pool, sizeof(fspr_file_t)); + (*out) = (fspr_file_t *)fspr_pcalloc(pool, sizeof(fspr_file_t)); (*in)->pool = (*out)->pool = pool; @@ -166,19 +166,19 @@ APR_DECLARE(apr_status_t) apr_file_pipe_create(apr_file_t **in, apr_file_t **out (*in)->ungetchar = -1; (*in)->thlock = (*out)->thlock = NULL; - (void) apr_pollset_create(&(*in)->pollset, 1, pool, 0); - (void) apr_pollset_create(&(*out)->pollset, 1, pool, 0); + (void) fspr_pollset_create(&(*in)->pollset, 1, pool, 0); + (void) fspr_pollset_create(&(*out)->pollset, 1, pool, 0); - apr_pool_cleanup_register((*in)->pool, (void *)(*in), apr_unix_file_cleanup, - apr_pool_cleanup_null); - apr_pool_cleanup_register((*out)->pool, (void *)(*out), apr_unix_file_cleanup, - apr_pool_cleanup_null); + fspr_pool_cleanup_register((*in)->pool, (void *)(*in), fspr_unix_file_cleanup, + fspr_pool_cleanup_null); + fspr_pool_cleanup_register((*out)->pool, (void *)(*out), fspr_unix_file_cleanup, + fspr_pool_cleanup_null); return APR_SUCCESS; } -APR_DECLARE(apr_status_t) apr_file_namedpipe_create(const char *filename, - apr_fileperms_t perm, apr_pool_t *pool) +APR_DECLARE(fspr_status_t) fspr_file_namedpipe_create(const char *filename, + fspr_fileperms_t perm, fspr_pool_t *pool) { return APR_ENOTIMPL; } diff --git a/libs/apr/file_io/os2/dir.c b/libs/apr/file_io/os2/dir.c index 3b08355f567..f237d215145 100644 --- a/libs/apr/file_io/os2/dir.c +++ b/libs/apr/file_io/os2/dir.c @@ -14,30 +14,30 @@ * limitations under the License. */ -#include "apr_arch_file_io.h" -#include "apr_file_io.h" -#include "apr_lib.h" -#include "apr_strings.h" -#include "apr_portable.h" +#include "fspr_arch_file_io.h" +#include "fspr_file_io.h" +#include "fspr_lib.h" +#include "fspr_strings.h" +#include "fspr_portable.h" #include -static apr_status_t dir_cleanup(void *thedir) +static fspr_status_t dir_cleanup(void *thedir) { - apr_dir_t *dir = thedir; - return apr_dir_close(dir); + fspr_dir_t *dir = thedir; + return fspr_dir_close(dir); } -APR_DECLARE(apr_status_t) apr_dir_open(apr_dir_t **new, const char *dirname, apr_pool_t *pool) +APR_DECLARE(fspr_status_t) fspr_dir_open(fspr_dir_t **new, const char *dirname, fspr_pool_t *pool) { - apr_dir_t *thedir = (apr_dir_t *)apr_palloc(pool, sizeof(apr_dir_t)); + fspr_dir_t *thedir = (fspr_dir_t *)fspr_palloc(pool, sizeof(fspr_dir_t)); if (thedir == NULL) return APR_ENOMEM; thedir->pool = pool; - thedir->dirname = apr_pstrdup(pool, dirname); + thedir->dirname = fspr_pstrdup(pool, dirname); if (thedir->dirname == NULL) return APR_ENOMEM; @@ -45,13 +45,13 @@ APR_DECLARE(apr_status_t) apr_dir_open(apr_dir_t **new, const char *dirname, apr thedir->handle = 0; thedir->validentry = FALSE; *new = thedir; - apr_pool_cleanup_register(pool, thedir, dir_cleanup, apr_pool_cleanup_null); + fspr_pool_cleanup_register(pool, thedir, dir_cleanup, fspr_pool_cleanup_null); return APR_SUCCESS; } -APR_DECLARE(apr_status_t) apr_dir_close(apr_dir_t *thedir) +APR_DECLARE(fspr_status_t) fspr_dir_close(fspr_dir_t *thedir) { int rv = 0; @@ -68,15 +68,15 @@ APR_DECLARE(apr_status_t) apr_dir_close(apr_dir_t *thedir) -APR_DECLARE(apr_status_t) apr_dir_read(apr_finfo_t *finfo, apr_int32_t wanted, - apr_dir_t *thedir) +APR_DECLARE(fspr_status_t) fspr_dir_read(fspr_finfo_t *finfo, fspr_int32_t wanted, + fspr_dir_t *thedir) { int rv; ULONG entries = 1; if (thedir->handle == 0) { thedir->handle = HDIR_CREATE; - rv = DosFindFirst(apr_pstrcat(thedir->pool, thedir->dirname, "/*", NULL), &thedir->handle, + rv = DosFindFirst(fspr_pstrcat(thedir->pool, thedir->dirname, "/*", NULL), &thedir->handle, FILE_ARCHIVED|FILE_DIRECTORY|FILE_SYSTEM|FILE_HIDDEN|FILE_READONLY, &thedir->entry, sizeof(thedir->entry), &entries, FIL_STANDARD); } else { @@ -98,11 +98,11 @@ APR_DECLARE(apr_status_t) apr_dir_read(apr_finfo_t *finfo, apr_int32_t wanted, /* Only directories & regular files show up in directory listings */ finfo->filetype = (thedir->entry.attrFile & FILE_DIRECTORY) ? APR_DIR : APR_REG; - apr_os2_time_to_apr_time(&finfo->mtime, thedir->entry.fdateLastWrite, + fspr_os2_time_to_fspr_time(&finfo->mtime, thedir->entry.fdateLastWrite, thedir->entry.ftimeLastWrite); - apr_os2_time_to_apr_time(&finfo->atime, thedir->entry.fdateLastAccess, + fspr_os2_time_to_fspr_time(&finfo->atime, thedir->entry.fdateLastAccess, thedir->entry.ftimeLastAccess); - apr_os2_time_to_apr_time(&finfo->ctime, thedir->entry.fdateCreation, + fspr_os2_time_to_fspr_time(&finfo->ctime, thedir->entry.fdateCreation, thedir->entry.ftimeCreation); finfo->name = thedir->entry.achName; @@ -123,28 +123,28 @@ APR_DECLARE(apr_status_t) apr_dir_read(apr_finfo_t *finfo, apr_int32_t wanted, -APR_DECLARE(apr_status_t) apr_dir_rewind(apr_dir_t *thedir) +APR_DECLARE(fspr_status_t) fspr_dir_rewind(fspr_dir_t *thedir) { - return apr_dir_close(thedir); + return fspr_dir_close(thedir); } -APR_DECLARE(apr_status_t) apr_dir_make(const char *path, apr_fileperms_t perm, apr_pool_t *pool) +APR_DECLARE(fspr_status_t) fspr_dir_make(const char *path, fspr_fileperms_t perm, fspr_pool_t *pool) { return APR_FROM_OS_ERROR(DosCreateDir(path, NULL)); } -APR_DECLARE(apr_status_t) apr_dir_remove(const char *path, apr_pool_t *pool) +APR_DECLARE(fspr_status_t) fspr_dir_remove(const char *path, fspr_pool_t *pool) { return APR_FROM_OS_ERROR(DosDeleteDir(path)); } -APR_DECLARE(apr_status_t) apr_os_dir_get(apr_os_dir_t **thedir, apr_dir_t *dir) +APR_DECLARE(fspr_status_t) fspr_os_dir_get(fspr_os_dir_t **thedir, fspr_dir_t *dir) { if (dir == NULL) { return APR_ENODIR; @@ -155,11 +155,11 @@ APR_DECLARE(apr_status_t) apr_os_dir_get(apr_os_dir_t **thedir, apr_dir_t *dir) -APR_DECLARE(apr_status_t) apr_os_dir_put(apr_dir_t **dir, apr_os_dir_t *thedir, - apr_pool_t *pool) +APR_DECLARE(fspr_status_t) fspr_os_dir_put(fspr_dir_t **dir, fspr_os_dir_t *thedir, + fspr_pool_t *pool) { if ((*dir) == NULL) { - (*dir) = (apr_dir_t *)apr_pcalloc(pool, sizeof(apr_dir_t)); + (*dir) = (fspr_dir_t *)fspr_pcalloc(pool, sizeof(fspr_dir_t)); (*dir)->pool = pool; } (*dir)->handle = *thedir; diff --git a/libs/apr/file_io/os2/dir_make_recurse.c b/libs/apr/file_io/os2/dir_make_recurse.c index 1f645b7dda7..fde99ace7ab 100644 --- a/libs/apr/file_io/os2/dir_make_recurse.c +++ b/libs/apr/file_io/os2/dir_make_recurse.c @@ -14,27 +14,27 @@ * limitations under the License. */ -#include "apr_file_io.h" -#include "apr_lib.h" -#include "apr_strings.h" +#include "fspr_file_io.h" +#include "fspr_lib.h" +#include "fspr_strings.h" #include #define IS_SEP(c) (c == '/' || c == '\\') /* Remove trailing separators that don't affect the meaning of PATH. */ -static const char *path_canonicalize(const char *path, apr_pool_t *pool) +static const char *path_canonicalize(const char *path, fspr_pool_t *pool) { /* At some point this could eliminate redundant components. For * now, it just makes sure there is no trailing slash. */ - apr_size_t len = strlen(path); - apr_size_t orig_len = len; + fspr_size_t len = strlen(path); + fspr_size_t orig_len = len; while ((len > 0) && IS_SEP(path[len - 1])) { len--; } if (len != orig_len) { - return apr_pstrndup(pool, path, len); + return fspr_pstrndup(pool, path, len); } else { return path; @@ -44,7 +44,7 @@ static const char *path_canonicalize(const char *path, apr_pool_t *pool) /* Remove one component off the end of PATH. */ -static char *path_remove_last_component(const char *path, apr_pool_t *pool) +static char *path_remove_last_component(const char *path, fspr_pool_t *pool) { const char *newpath = path_canonicalize(path, pool); int i; @@ -55,32 +55,32 @@ static char *path_remove_last_component(const char *path, apr_pool_t *pool) } } - return apr_pstrndup(pool, path, (i < 0) ? 0 : i); + return fspr_pstrndup(pool, path, (i < 0) ? 0 : i); } -apr_status_t apr_dir_make_recursive(const char *path, apr_fileperms_t perm, - apr_pool_t *pool) +fspr_status_t fspr_dir_make_recursive(const char *path, fspr_fileperms_t perm, + fspr_pool_t *pool) { - apr_status_t apr_err = APR_SUCCESS; + fspr_status_t fspr_err = APR_SUCCESS; - apr_err = apr_dir_make(path, perm, pool); /* Try to make PATH right out */ + fspr_err = fspr_dir_make(path, perm, pool); /* Try to make PATH right out */ - if (APR_STATUS_IS_EEXIST(apr_err)) { /* It's OK if PATH exists */ + if (APR_STATUS_IS_EEXIST(fspr_err)) { /* It's OK if PATH exists */ return APR_SUCCESS; } - if (APR_STATUS_IS_ENOENT(apr_err)) { /* Missing an intermediate dir */ + if (APR_STATUS_IS_ENOENT(fspr_err)) { /* Missing an intermediate dir */ char *dir; dir = path_remove_last_component(path, pool); - apr_err = apr_dir_make_recursive(dir, perm, pool); + fspr_err = fspr_dir_make_recursive(dir, perm, pool); - if (!apr_err) { - apr_err = apr_dir_make(path, perm, pool); + if (!fspr_err) { + fspr_err = fspr_dir_make(path, perm, pool); } } - return apr_err; + return fspr_err; } diff --git a/libs/apr/file_io/os2/filedup.c b/libs/apr/file_io/os2/filedup.c index 72b86e2faad..c19ade0e6eb 100644 --- a/libs/apr/file_io/os2/filedup.c +++ b/libs/apr/file_io/os2/filedup.c @@ -14,20 +14,20 @@ * limitations under the License. */ -#include "apr_arch_file_io.h" -#include "apr_file_io.h" -#include "apr_lib.h" -#include "apr_strings.h" +#include "fspr_arch_file_io.h" +#include "fspr_file_io.h" +#include "fspr_lib.h" +#include "fspr_strings.h" #include -#include "apr_arch_inherit.h" +#include "fspr_arch_inherit.h" -static apr_status_t file_dup(apr_file_t **new_file, apr_file_t *old_file, apr_pool_t *p) +static fspr_status_t file_dup(fspr_file_t **new_file, fspr_file_t *old_file, fspr_pool_t *p) { int rv; - apr_file_t *dup_file; + fspr_file_t *dup_file; if (*new_file == NULL) { - dup_file = (apr_file_t *)apr_palloc(p, sizeof(apr_file_t)); + dup_file = (fspr_file_t *)fspr_palloc(p, sizeof(fspr_file_t)); if (dup_file == NULL) { return APR_ENOMEM; @@ -45,7 +45,7 @@ static apr_status_t file_dup(apr_file_t **new_file, apr_file_t *old_file, apr_po return APR_FROM_OS_ERROR(rv); } - dup_file->fname = apr_pstrdup(dup_file->pool, old_file->fname); + dup_file->fname = fspr_pstrdup(dup_file->pool, old_file->fname); dup_file->buffered = old_file->buffered; dup_file->isopen = old_file->isopen; dup_file->flags = old_file->flags & ~APR_INHERIT; @@ -53,8 +53,8 @@ static apr_status_t file_dup(apr_file_t **new_file, apr_file_t *old_file, apr_po dup_file->pipe = old_file->pipe; if (*new_file == NULL) { - apr_pool_cleanup_register(dup_file->pool, dup_file, apr_file_cleanup, - apr_pool_cleanup_null); + fspr_pool_cleanup_register(dup_file->pool, dup_file, fspr_file_cleanup, + fspr_pool_cleanup_null); *new_file = dup_file; } @@ -63,10 +63,10 @@ static apr_status_t file_dup(apr_file_t **new_file, apr_file_t *old_file, apr_po -APR_DECLARE(apr_status_t) apr_file_dup(apr_file_t **new_file, apr_file_t *old_file, apr_pool_t *p) +APR_DECLARE(fspr_status_t) fspr_file_dup(fspr_file_t **new_file, fspr_file_t *old_file, fspr_pool_t *p) { if (*new_file) { - apr_file_close(*new_file); + fspr_file_close(*new_file); (*new_file)->filedes = -1; } @@ -75,23 +75,23 @@ APR_DECLARE(apr_status_t) apr_file_dup(apr_file_t **new_file, apr_file_t *old_fi -APR_DECLARE(apr_status_t) apr_file_dup2(apr_file_t *new_file, apr_file_t *old_file, apr_pool_t *p) +APR_DECLARE(fspr_status_t) fspr_file_dup2(fspr_file_t *new_file, fspr_file_t *old_file, fspr_pool_t *p) { return file_dup(&new_file, old_file, p); } -APR_DECLARE(apr_status_t) apr_file_setaside(apr_file_t **new_file, - apr_file_t *old_file, - apr_pool_t *p) +APR_DECLARE(fspr_status_t) fspr_file_setaside(fspr_file_t **new_file, + fspr_file_t *old_file, + fspr_pool_t *p) { - *new_file = (apr_file_t *)apr_palloc(p, sizeof(apr_file_t)); - memcpy(*new_file, old_file, sizeof(apr_file_t)); + *new_file = (fspr_file_t *)fspr_palloc(p, sizeof(fspr_file_t)); + memcpy(*new_file, old_file, sizeof(fspr_file_t)); (*new_file)->pool = p; if (old_file->buffered) { - (*new_file)->buffer = apr_palloc(p, APR_FILE_BUFSIZE); + (*new_file)->buffer = fspr_palloc(p, APR_FILE_BUFSIZE); if (old_file->direction == 1) { memcpy((*new_file)->buffer, old_file->buffer, old_file->bufpos); @@ -101,25 +101,25 @@ APR_DECLARE(apr_status_t) apr_file_setaside(apr_file_t **new_file, } if (old_file->mutex) { - apr_thread_mutex_create(&((*new_file)->mutex), + fspr_thread_mutex_create(&((*new_file)->mutex), APR_THREAD_MUTEX_DEFAULT, p); - apr_thread_mutex_destroy(old_file->mutex); + fspr_thread_mutex_destroy(old_file->mutex); } } if (old_file->fname) { - (*new_file)->fname = apr_pstrdup(p, old_file->fname); + (*new_file)->fname = fspr_pstrdup(p, old_file->fname); } if (!(old_file->flags & APR_FILE_NOCLEANUP)) { - apr_pool_cleanup_register(p, (void *)(*new_file), - apr_file_cleanup, - apr_file_cleanup); + fspr_pool_cleanup_register(p, (void *)(*new_file), + fspr_file_cleanup, + fspr_file_cleanup); } old_file->filedes = -1; - apr_pool_cleanup_kill(old_file->pool, (void *)old_file, - apr_file_cleanup); + fspr_pool_cleanup_kill(old_file->pool, (void *)old_file, + fspr_file_cleanup); return APR_SUCCESS; } diff --git a/libs/apr/file_io/os2/filestat.c b/libs/apr/file_io/os2/filestat.c index f31c7c1b50b..dd9b0f8e787 100644 --- a/libs/apr/file_io/os2/filestat.c +++ b/libs/apr/file_io/os2/filestat.c @@ -16,14 +16,14 @@ #define INCL_DOS #define INCL_DOSERRORS -#include "apr_arch_file_io.h" -#include "apr_file_io.h" -#include "apr_lib.h" +#include "fspr_arch_file_io.h" +#include "fspr_file_io.h" +#include "fspr_lib.h" #include -#include "apr_strings.h" +#include "fspr_strings.h" -static void FS3_to_finfo(apr_finfo_t *finfo, FILESTATUS3 *fstatus) +static void FS3_to_finfo(fspr_finfo_t *finfo, FILESTATUS3 *fstatus) { finfo->protection = (fstatus->attrFile & FILE_READONLY) ? 0x555 : 0x777; @@ -39,11 +39,11 @@ static void FS3_to_finfo(apr_finfo_t *finfo, FILESTATUS3 *fstatus) finfo->device = 0; finfo->size = fstatus->cbFile; finfo->csize = fstatus->cbFileAlloc; - apr_os2_time_to_apr_time(&finfo->atime, fstatus->fdateLastAccess, + fspr_os2_time_to_fspr_time(&finfo->atime, fstatus->fdateLastAccess, fstatus->ftimeLastAccess ); - apr_os2_time_to_apr_time(&finfo->mtime, fstatus->fdateLastWrite, + fspr_os2_time_to_fspr_time(&finfo->mtime, fstatus->fdateLastWrite, fstatus->ftimeLastWrite ); - apr_os2_time_to_apr_time(&finfo->ctime, fstatus->fdateCreation, + fspr_os2_time_to_fspr_time(&finfo->ctime, fstatus->fdateCreation, fstatus->ftimeCreation ); finfo->valid = APR_FINFO_TYPE | APR_FINFO_PROT | APR_FINFO_SIZE | APR_FINFO_CSIZE | APR_FINFO_MTIME @@ -52,7 +52,7 @@ static void FS3_to_finfo(apr_finfo_t *finfo, FILESTATUS3 *fstatus) -static apr_status_t handle_type(apr_filetype_e *ftype, HFILE file) +static fspr_status_t handle_type(fspr_filetype_e *ftype, HFILE file) { ULONG filetype, fileattr, rc; @@ -86,15 +86,15 @@ static apr_status_t handle_type(apr_filetype_e *ftype, HFILE file) -APR_DECLARE(apr_status_t) apr_file_info_get(apr_finfo_t *finfo, apr_int32_t wanted, - apr_file_t *thefile) +APR_DECLARE(fspr_status_t) fspr_file_info_get(fspr_finfo_t *finfo, fspr_int32_t wanted, + fspr_file_t *thefile) { ULONG rc; FILESTATUS3 fstatus; if (thefile->isopen) { if (thefile->buffered) { - apr_status_t rv = apr_file_flush(thefile); + fspr_status_t rv = fspr_file_flush(thefile); if (rv != APR_SUCCESS) { return rv; @@ -124,14 +124,14 @@ APR_DECLARE(apr_status_t) apr_file_info_get(apr_finfo_t *finfo, apr_int32_t want return APR_FROM_OS_ERROR(rc); } -APR_DECLARE(apr_status_t) apr_file_perms_set(const char *fname, apr_fileperms_t perms) +APR_DECLARE(fspr_status_t) fspr_file_perms_set(const char *fname, fspr_fileperms_t perms) { return APR_ENOTIMPL; } -APR_DECLARE(apr_status_t) apr_stat(apr_finfo_t *finfo, const char *fname, - apr_int32_t wanted, apr_pool_t *cont) +APR_DECLARE(fspr_status_t) fspr_stat(fspr_finfo_t *finfo, const char *fname, + fspr_int32_t wanted, fspr_pool_t *cont) { ULONG rc; FILESTATUS3 fstatus; @@ -153,18 +153,18 @@ APR_DECLARE(apr_status_t) apr_stat(apr_finfo_t *finfo, const char *fname, FILE_DIRECTORY|FILE_HIDDEN|FILE_SYSTEM|FILE_ARCHIVED, &ffb, sizeof(ffb), &count, FIL_STANDARD); if (rc == 0 && count == 1) { - finfo->name = apr_pstrdup(cont, ffb.achName); + finfo->name = fspr_pstrdup(cont, ffb.achName); finfo->valid |= APR_FINFO_NAME; } } } else if (rc == ERROR_INVALID_ACCESS) { - memset(finfo, 0, sizeof(apr_finfo_t)); + memset(finfo, 0, sizeof(fspr_finfo_t)); finfo->valid = APR_FINFO_TYPE | APR_FINFO_PROT; finfo->protection = 0666; finfo->filetype = APR_CHR; if (wanted & APR_FINFO_NAME) { - finfo->name = apr_pstrdup(cont, fname); + finfo->name = fspr_pstrdup(cont, fname); finfo->valid |= APR_FINFO_NAME; } } else { @@ -176,10 +176,10 @@ APR_DECLARE(apr_status_t) apr_stat(apr_finfo_t *finfo, const char *fname, -APR_DECLARE(apr_status_t) apr_file_attrs_set(const char *fname, - apr_fileattrs_t attributes, - apr_fileattrs_t attr_mask, - apr_pool_t *cont) +APR_DECLARE(fspr_status_t) fspr_file_attrs_set(const char *fname, + fspr_fileattrs_t attributes, + fspr_fileattrs_t attr_mask, + fspr_pool_t *cont) { FILESTATUS3 fs3; ULONG rc; @@ -221,9 +221,9 @@ APR_DECLARE(apr_status_t) apr_file_attrs_set(const char *fname, /* ### Somebody please write this! */ -APR_DECLARE(apr_status_t) apr_file_mtime_set(const char *fname, - apr_time_t mtime, - apr_pool_t *pool) +APR_DECLARE(fspr_status_t) fspr_file_mtime_set(const char *fname, + fspr_time_t mtime, + fspr_pool_t *pool) { FILESTATUS3 fs3; ULONG rc; @@ -233,7 +233,7 @@ APR_DECLARE(apr_status_t) apr_file_mtime_set(const char *fname, return APR_FROM_OS_ERROR(rc); } - apr_apr_time_to_os2_time(&fs3.fdateLastWrite, &fs3.ftimeLastWrite, mtime); + fspr_fspr_time_to_os2_time(&fs3.fdateLastWrite, &fs3.ftimeLastWrite, mtime); rc = DosSetPathInfo(fname, FIL_STANDARD, &fs3, sizeof(fs3), 0); return APR_FROM_OS_ERROR(rc); diff --git a/libs/apr/file_io/os2/filesys.c b/libs/apr/file_io/os2/filesys.c index ae43bc0a0fc..c2fbb9d2196 100644 --- a/libs/apr/file_io/os2/filesys.c +++ b/libs/apr/file_io/os2/filesys.c @@ -14,10 +14,10 @@ * limitations under the License. */ -#include "apr.h" -#include "apr_arch_file_io.h" -#include "apr_strings.h" -#include "apr_lib.h" +#include "fspr.h" +#include "fspr_arch_file_io.h" +#include "fspr_strings.h" +#include "fspr_lib.h" #include /* OS/2 Exceptions: @@ -52,9 +52,9 @@ const char c_is_fnchar[256] = #define IS_SLASH(c) (c == '/' || c == '\\') -apr_status_t filepath_root_test(char *path, apr_pool_t *p) +fspr_status_t filepath_root_test(char *path, fspr_pool_t *p) { - char drive = apr_toupper(path[0]); + char drive = fspr_toupper(path[0]); if (drive >= 'A' && drive <= 'Z' && path[1] == ':' && IS_SLASH(path[2])) return APR_SUCCESS; @@ -63,8 +63,8 @@ apr_status_t filepath_root_test(char *path, apr_pool_t *p) } -apr_status_t filepath_drive_get(char **rootpath, char drive, - apr_int32_t flags, apr_pool_t *p) +fspr_status_t filepath_drive_get(char **rootpath, char drive, + fspr_int32_t flags, fspr_pool_t *p) { char path[APR_PATH_MAX]; char *pos; @@ -75,7 +75,7 @@ apr_status_t filepath_drive_get(char **rootpath, char drive, path[1] = ':'; path[2] = '/'; - rc = DosQueryCurrentDir(apr_toupper(drive) - 'A', path+3, &bufsize); + rc = DosQueryCurrentDir(fspr_toupper(drive) - 'A', path+3, &bufsize); if (rc) { return APR_FROM_OS_ERROR(rc); @@ -88,16 +88,16 @@ apr_status_t filepath_drive_get(char **rootpath, char drive, } } - *rootpath = apr_pstrdup(p, path); + *rootpath = fspr_pstrdup(p, path); return APR_SUCCESS; } -apr_status_t filepath_root_case(char **rootpath, char *root, apr_pool_t *p) +fspr_status_t filepath_root_case(char **rootpath, char *root, fspr_pool_t *p) { - if (root[0] && apr_islower(root[0]) && root[1] == ':') { - *rootpath = apr_pstrdup(p, root); - (*rootpath)[0] = apr_toupper((*rootpath)[0]); + if (root[0] && fspr_islower(root[0]) && root[1] == ':') { + *rootpath = fspr_pstrdup(p, root); + (*rootpath)[0] = fspr_toupper((*rootpath)[0]); } else { *rootpath = root; @@ -106,8 +106,8 @@ apr_status_t filepath_root_case(char **rootpath, char *root, apr_pool_t *p) } -APR_DECLARE(apr_status_t) apr_filepath_get(char **defpath, apr_int32_t flags, - apr_pool_t *p) +APR_DECLARE(fspr_status_t) fspr_filepath_get(char **defpath, fspr_int32_t flags, + fspr_pool_t *p) { char path[APR_PATH_MAX]; ULONG drive; @@ -120,7 +120,7 @@ APR_DECLARE(apr_status_t) apr_filepath_get(char **defpath, apr_int32_t flags, strcpy(path+1, ":\\"); rv = DosQueryCurrentDir(drive, path+3, &pathlen); - *defpath = apr_pstrdup(p, path); + *defpath = fspr_pstrdup(p, path); if (!(flags & APR_FILEPATH_NATIVE)) { for (pos=*defpath; *pos; pos++) { @@ -134,12 +134,12 @@ APR_DECLARE(apr_status_t) apr_filepath_get(char **defpath, apr_int32_t flags, -APR_DECLARE(apr_status_t) apr_filepath_set(const char *path, apr_pool_t *p) +APR_DECLARE(fspr_status_t) fspr_filepath_set(const char *path, fspr_pool_t *p) { ULONG rv = 0; if (path[1] == ':') - rv = DosSetDefaultDisk(apr_toupper(path[0]) - '@'); + rv = DosSetDefaultDisk(fspr_toupper(path[0]) - '@'); if (rv == 0) rv = DosSetCurrentDir(path); diff --git a/libs/apr/file_io/os2/flock.c b/libs/apr/file_io/os2/flock.c index ec94022081a..6499589825a 100644 --- a/libs/apr/file_io/os2/flock.c +++ b/libs/apr/file_io/os2/flock.c @@ -14,9 +14,9 @@ * limitations under the License. */ -#include "apr_arch_file_io.h" +#include "fspr_arch_file_io.h" -APR_DECLARE(apr_status_t) apr_file_lock(apr_file_t *thefile, int type) +APR_DECLARE(fspr_status_t) fspr_file_lock(fspr_file_t *thefile, int type) { FILELOCK lockrange = { 0, 0x7fffffff }; ULONG rc; @@ -27,7 +27,7 @@ APR_DECLARE(apr_status_t) apr_file_lock(apr_file_t *thefile, int type) return APR_FROM_OS_ERROR(rc); } -APR_DECLARE(apr_status_t) apr_file_unlock(apr_file_t *thefile) +APR_DECLARE(fspr_status_t) fspr_file_unlock(fspr_file_t *thefile) { FILELOCK unlockrange = { 0, 0x7fffffff }; ULONG rc; diff --git a/libs/apr/file_io/os2/maperrorcode.c b/libs/apr/file_io/os2/maperrorcode.c index 282338bba03..2982eea0a67 100644 --- a/libs/apr/file_io/os2/maperrorcode.c +++ b/libs/apr/file_io/os2/maperrorcode.c @@ -15,11 +15,11 @@ */ #define INCL_DOSERRORS -#include "apr_arch_file_io.h" -#include "apr_file_io.h" +#include "fspr_arch_file_io.h" +#include "fspr_file_io.h" #include #include -#include "apr_errno.h" +#include "fspr_errno.h" static int errormap[][2] = { { NO_ERROR, APR_SUCCESS }, @@ -75,7 +75,7 @@ static int errormap[][2] = { #define MAPSIZE (sizeof(errormap)/sizeof(errormap[0])) -int apr_canonical_error(apr_status_t err) +int fspr_canonical_error(fspr_status_t err) { int rv = -1, index; @@ -89,7 +89,7 @@ int apr_canonical_error(apr_status_t err) if (index -apr_status_t apr_file_cleanup(void *thefile) +fspr_status_t fspr_file_cleanup(void *thefile) { - apr_file_t *file = thefile; - return apr_file_close(file); + fspr_file_t *file = thefile; + return fspr_file_close(file); } -APR_DECLARE(apr_status_t) apr_file_open(apr_file_t **new, const char *fname, apr_int32_t flag, apr_fileperms_t perm, apr_pool_t *pool) +APR_DECLARE(fspr_status_t) fspr_file_open(fspr_file_t **new, const char *fname, fspr_int32_t flag, fspr_fileperms_t perm, fspr_pool_t *pool) { int oflags = 0; int mflags = OPEN_FLAGS_FAIL_ON_ERROR|OPEN_SHARE_DENYNONE; int rv; ULONG action; - apr_file_t *dafile = (apr_file_t *)apr_palloc(pool, sizeof(apr_file_t)); + fspr_file_t *dafile = (fspr_file_t *)fspr_palloc(pool, sizeof(fspr_file_t)); dafile->pool = pool; dafile->isopen = FALSE; @@ -59,8 +59,8 @@ APR_DECLARE(apr_status_t) apr_file_open(apr_file_t **new, const char *fname, apr dafile->buffered = (flag & APR_BUFFERED) > 0; if (dafile->buffered) { - dafile->buffer = apr_palloc(pool, APR_FILE_BUFSIZE); - rv = apr_thread_mutex_create(&dafile->mutex, 0, pool); + dafile->buffer = fspr_palloc(pool, APR_FILE_BUFSIZE); + rv = fspr_thread_mutex_create(&dafile->mutex, 0, pool); if (rv) return rv; @@ -97,7 +97,7 @@ APR_DECLARE(apr_status_t) apr_file_open(apr_file_t **new, const char *fname, apr return APR_FROM_OS_ERROR(rv); dafile->isopen = TRUE; - dafile->fname = apr_pstrdup(pool, fname); + dafile->fname = fspr_pstrdup(pool, fname); dafile->filePtr = 0; dafile->bufpos = 0; dafile->dataRead = 0; @@ -105,7 +105,7 @@ APR_DECLARE(apr_status_t) apr_file_open(apr_file_t **new, const char *fname, apr dafile->pipe = FALSE; if (!(flag & APR_FILE_NOCLEANUP)) { - apr_pool_cleanup_register(dafile->pool, dafile, apr_file_cleanup, apr_file_cleanup); + fspr_pool_cleanup_register(dafile->pool, dafile, fspr_file_cleanup, fspr_file_cleanup); } *new = dafile; @@ -114,13 +114,13 @@ APR_DECLARE(apr_status_t) apr_file_open(apr_file_t **new, const char *fname, apr -APR_DECLARE(apr_status_t) apr_file_close(apr_file_t *file) +APR_DECLARE(fspr_status_t) fspr_file_close(fspr_file_t *file) { ULONG rc; - apr_status_t status; + fspr_status_t status; if (file && file->isopen) { - apr_file_flush(file); + fspr_file_flush(file); rc = DosClose(file->filedes); if (rc == 0) { @@ -136,14 +136,14 @@ APR_DECLARE(apr_status_t) apr_file_close(apr_file_t *file) } if (file->buffered) - apr_thread_mutex_destroy(file->mutex); + fspr_thread_mutex_destroy(file->mutex); return APR_SUCCESS; } -APR_DECLARE(apr_status_t) apr_file_remove(const char *path, apr_pool_t *pool) +APR_DECLARE(fspr_status_t) fspr_file_remove(const char *path, fspr_pool_t *pool) { ULONG rc = DosDelete(path); return APR_FROM_OS_ERROR(rc); @@ -151,8 +151,8 @@ APR_DECLARE(apr_status_t) apr_file_remove(const char *path, apr_pool_t *pool) -APR_DECLARE(apr_status_t) apr_file_rename(const char *from_path, const char *to_path, - apr_pool_t *p) +APR_DECLARE(fspr_status_t) fspr_file_rename(const char *from_path, const char *to_path, + fspr_pool_t *p) { ULONG rc = DosMove(from_path, to_path); @@ -169,7 +169,7 @@ APR_DECLARE(apr_status_t) apr_file_rename(const char *from_path, const char *to_ -APR_DECLARE(apr_status_t) apr_os_file_get(apr_os_file_t *thefile, apr_file_t *file) +APR_DECLARE(fspr_status_t) fspr_os_file_get(fspr_os_file_t *thefile, fspr_file_t *file) { *thefile = file->filedes; return APR_SUCCESS; @@ -177,11 +177,11 @@ APR_DECLARE(apr_status_t) apr_os_file_get(apr_os_file_t *thefile, apr_file_t *fi -APR_DECLARE(apr_status_t) apr_os_file_put(apr_file_t **file, apr_os_file_t *thefile, apr_int32_t flags, apr_pool_t *pool) +APR_DECLARE(fspr_status_t) fspr_os_file_put(fspr_file_t **file, fspr_os_file_t *thefile, fspr_int32_t flags, fspr_pool_t *pool) { - apr_os_file_t *dafile = thefile; + fspr_os_file_t *dafile = thefile; - (*file) = apr_palloc(pool, sizeof(apr_file_t)); + (*file) = fspr_palloc(pool, sizeof(fspr_file_t)); (*file)->pool = pool; (*file)->filedes = *dafile; (*file)->isopen = TRUE; @@ -191,10 +191,10 @@ APR_DECLARE(apr_status_t) apr_os_file_put(apr_file_t **file, apr_os_file_t *thef (*file)->buffered = (flags & APR_BUFFERED) > 0; if ((*file)->buffered) { - apr_status_t rv; + fspr_status_t rv; - (*file)->buffer = apr_palloc(pool, APR_FILE_BUFSIZE); - rv = apr_thread_mutex_create(&(*file)->mutex, 0, pool); + (*file)->buffer = fspr_palloc(pool, APR_FILE_BUFSIZE); + rv = fspr_thread_mutex_create(&(*file)->mutex, 0, pool); if (rv) return rv; @@ -204,7 +204,7 @@ APR_DECLARE(apr_status_t) apr_os_file_put(apr_file_t **file, apr_os_file_t *thef } -APR_DECLARE(apr_status_t) apr_file_eof(apr_file_t *fptr) +APR_DECLARE(fspr_status_t) fspr_file_eof(fspr_file_t *fptr) { if (!fptr->isopen || fptr->eof_hit == 1) { return APR_EOF; @@ -213,33 +213,33 @@ APR_DECLARE(apr_status_t) apr_file_eof(apr_file_t *fptr) } -APR_DECLARE(apr_status_t) apr_file_open_stderr(apr_file_t **thefile, apr_pool_t *pool) +APR_DECLARE(fspr_status_t) fspr_file_open_stderr(fspr_file_t **thefile, fspr_pool_t *pool) { - apr_os_file_t fd = 2; + fspr_os_file_t fd = 2; - return apr_os_file_put(thefile, &fd, 0, pool); + return fspr_os_file_put(thefile, &fd, 0, pool); } -APR_DECLARE(apr_status_t) apr_file_open_stdout(apr_file_t **thefile, apr_pool_t *pool) +APR_DECLARE(fspr_status_t) fspr_file_open_stdout(fspr_file_t **thefile, fspr_pool_t *pool) { - apr_os_file_t fd = 1; + fspr_os_file_t fd = 1; - return apr_os_file_put(thefile, &fd, 0, pool); + return fspr_os_file_put(thefile, &fd, 0, pool); } -APR_DECLARE(apr_status_t) apr_file_open_stdin(apr_file_t **thefile, apr_pool_t *pool) +APR_DECLARE(fspr_status_t) fspr_file_open_stdin(fspr_file_t **thefile, fspr_pool_t *pool) { - apr_os_file_t fd = 0; + fspr_os_file_t fd = 0; - return apr_os_file_put(thefile, &fd, 0, pool); + return fspr_os_file_put(thefile, &fd, 0, pool); } APR_POOL_IMPLEMENT_ACCESSOR(file); -APR_IMPLEMENT_INHERIT_SET(file, flags, pool, apr_file_cleanup) +APR_IMPLEMENT_INHERIT_SET(file, flags, pool, fspr_file_cleanup) -APR_IMPLEMENT_INHERIT_UNSET(file, flags, pool, apr_file_cleanup) +APR_IMPLEMENT_INHERIT_UNSET(file, flags, pool, fspr_file_cleanup) diff --git a/libs/apr/file_io/os2/pipe.c b/libs/apr/file_io/os2/pipe.c index ee2b2b004ec..007977aafcf 100644 --- a/libs/apr/file_io/os2/pipe.c +++ b/libs/apr/file_io/os2/pipe.c @@ -15,16 +15,16 @@ */ #define INCL_DOSERRORS -#include "apr_arch_file_io.h" -#include "apr_file_io.h" -#include "apr_general.h" -#include "apr_lib.h" -#include "apr_strings.h" -#include "apr_portable.h" +#include "fspr_arch_file_io.h" +#include "fspr_file_io.h" +#include "fspr_general.h" +#include "fspr_lib.h" +#include "fspr_strings.h" +#include "fspr_portable.h" #include #include -APR_DECLARE(apr_status_t) apr_file_pipe_create(apr_file_t **in, apr_file_t **out, apr_pool_t *pool) +APR_DECLARE(fspr_status_t) fspr_file_pipe_create(fspr_file_t **in, fspr_file_t **out, fspr_pool_t *pool) { ULONG filedes[2]; ULONG rc, action; @@ -54,7 +54,7 @@ APR_DECLARE(apr_status_t) apr_file_pipe_create(apr_file_t **in, apr_file_t **out return APR_FROM_OS_ERROR(rc); } - (*in) = (apr_file_t *)apr_palloc(pool, sizeof(apr_file_t)); + (*in) = (fspr_file_t *)fspr_palloc(pool, sizeof(fspr_file_t)); rc = DosCreateEventSem(NULL, &(*in)->pipeSem, DC_SEM_SHARED, FALSE); if (rc) { @@ -78,33 +78,33 @@ APR_DECLARE(apr_status_t) apr_file_pipe_create(apr_file_t **in, apr_file_t **out (*in)->pool = pool; (*in)->filedes = filedes[0]; - (*in)->fname = apr_pstrdup(pool, pipename); + (*in)->fname = fspr_pstrdup(pool, pipename); (*in)->isopen = TRUE; (*in)->buffered = FALSE; (*in)->flags = 0; (*in)->pipe = 1; (*in)->timeout = -1; (*in)->blocking = BLK_ON; - apr_pool_cleanup_register(pool, *in, apr_file_cleanup, apr_pool_cleanup_null); + fspr_pool_cleanup_register(pool, *in, fspr_file_cleanup, fspr_pool_cleanup_null); - (*out) = (apr_file_t *)apr_palloc(pool, sizeof(apr_file_t)); + (*out) = (fspr_file_t *)fspr_palloc(pool, sizeof(fspr_file_t)); (*out)->pool = pool; (*out)->filedes = filedes[1]; - (*out)->fname = apr_pstrdup(pool, pipename); + (*out)->fname = fspr_pstrdup(pool, pipename); (*out)->isopen = TRUE; (*out)->buffered = FALSE; (*out)->flags = 0; (*out)->pipe = 1; (*out)->timeout = -1; (*out)->blocking = BLK_ON; - apr_pool_cleanup_register(pool, *out, apr_file_cleanup, apr_pool_cleanup_null); + fspr_pool_cleanup_register(pool, *out, fspr_file_cleanup, fspr_pool_cleanup_null); return APR_SUCCESS; } -APR_DECLARE(apr_status_t) apr_file_namedpipe_create(const char *filename, apr_fileperms_t perm, apr_pool_t *pool) +APR_DECLARE(fspr_status_t) fspr_file_namedpipe_create(const char *filename, fspr_fileperms_t perm, fspr_pool_t *pool) { /* Not yet implemented, interface not suitable */ return APR_ENOTIMPL; @@ -112,7 +112,7 @@ APR_DECLARE(apr_status_t) apr_file_namedpipe_create(const char *filename, apr_fi -APR_DECLARE(apr_status_t) apr_file_pipe_timeout_set(apr_file_t *thepipe, apr_interval_time_t timeout) +APR_DECLARE(fspr_status_t) fspr_file_pipe_timeout_set(fspr_file_t *thepipe, fspr_interval_time_t timeout) { if (thepipe->pipe == 1) { thepipe->timeout = timeout; @@ -135,7 +135,7 @@ APR_DECLARE(apr_status_t) apr_file_pipe_timeout_set(apr_file_t *thepipe, apr_int -APR_DECLARE(apr_status_t) apr_file_pipe_timeout_get(apr_file_t *thepipe, apr_interval_time_t *timeout) +APR_DECLARE(fspr_status_t) fspr_file_pipe_timeout_get(fspr_file_t *thepipe, fspr_interval_time_t *timeout) { if (thepipe->pipe == 1) { *timeout = thepipe->timeout; @@ -146,12 +146,12 @@ APR_DECLARE(apr_status_t) apr_file_pipe_timeout_get(apr_file_t *thepipe, apr_int -APR_DECLARE(apr_status_t) apr_os_pipe_put_ex(apr_file_t **file, - apr_os_file_t *thefile, +APR_DECLARE(fspr_status_t) fspr_os_pipe_put_ex(fspr_file_t **file, + fspr_os_file_t *thefile, int register_cleanup, - apr_pool_t *pool) + fspr_pool_t *pool) { - (*file) = apr_pcalloc(pool, sizeof(apr_file_t)); + (*file) = fspr_pcalloc(pool, sizeof(fspr_file_t)); (*file)->pool = pool; (*file)->isopen = TRUE; (*file)->pipe = 1; @@ -160,8 +160,8 @@ APR_DECLARE(apr_status_t) apr_os_pipe_put_ex(apr_file_t **file, (*file)->filedes = *thefile; if (register_cleanup) { - apr_pool_cleanup_register(pool, *file, apr_file_cleanup, - apr_pool_cleanup_null); + fspr_pool_cleanup_register(pool, *file, fspr_file_cleanup, + fspr_pool_cleanup_null); } return APR_SUCCESS; @@ -169,9 +169,9 @@ APR_DECLARE(apr_status_t) apr_os_pipe_put_ex(apr_file_t **file, -APR_DECLARE(apr_status_t) apr_os_pipe_put(apr_file_t **file, - apr_os_file_t *thefile, - apr_pool_t *pool) +APR_DECLARE(fspr_status_t) fspr_os_pipe_put(fspr_file_t **file, + fspr_os_file_t *thefile, + fspr_pool_t *pool) { - return apr_os_pipe_put_ex(file, thefile, 0, pool); + return fspr_os_pipe_put_ex(file, thefile, 0, pool); } diff --git a/libs/apr/file_io/os2/readwrite.c b/libs/apr/file_io/os2/readwrite.c index f25a4210d6d..90d786755e0 100644 --- a/libs/apr/file_io/os2/readwrite.c +++ b/libs/apr/file_io/os2/readwrite.c @@ -17,14 +17,14 @@ #define INCL_DOS #define INCL_DOSERRORS -#include "apr_arch_file_io.h" -#include "apr_file_io.h" -#include "apr_lib.h" -#include "apr_strings.h" +#include "fspr_arch_file_io.h" +#include "fspr_file_io.h" +#include "fspr_lib.h" +#include "fspr_strings.h" #include -APR_DECLARE(apr_status_t) apr_file_read(apr_file_t *thefile, void *buf, apr_size_t *nbytes) +APR_DECLARE(fspr_status_t) fspr_file_read(fspr_file_t *thefile, void *buf, fspr_size_t *nbytes) { ULONG rc = 0; ULONG bytesread; @@ -39,13 +39,13 @@ APR_DECLARE(apr_status_t) apr_file_read(apr_file_t *thefile, void *buf, apr_size ULONG blocksize; ULONG size = *nbytes; - apr_thread_mutex_lock(thefile->mutex); + fspr_thread_mutex_lock(thefile->mutex); if (thefile->direction == 1) { - int rv = apr_file_flush(thefile); + int rv = fspr_file_flush(thefile); if (rv != APR_SUCCESS) { - apr_thread_mutex_unlock(thefile->mutex); + fspr_thread_mutex_unlock(thefile->mutex); return rv; } @@ -79,7 +79,7 @@ APR_DECLARE(apr_status_t) apr_file_read(apr_file_t *thefile, void *buf, apr_size } *nbytes = rc == 0 ? pos - (char *)buf : 0; - apr_thread_mutex_unlock(thefile->mutex); + fspr_thread_mutex_unlock(thefile->mutex); if (*nbytes == 0 && rc == 0 && thefile->eof_hit) { return APR_EOF; @@ -122,7 +122,7 @@ APR_DECLARE(apr_status_t) apr_file_read(apr_file_t *thefile, void *buf, apr_size -APR_DECLARE(apr_status_t) apr_file_write(apr_file_t *thefile, const void *buf, apr_size_t *nbytes) +APR_DECLARE(fspr_status_t) fspr_file_write(fspr_file_t *thefile, const void *buf, fspr_size_t *nbytes) { ULONG rc = 0; ULONG byteswritten; @@ -137,7 +137,7 @@ APR_DECLARE(apr_status_t) apr_file_write(apr_file_t *thefile, const void *buf, a int blocksize; int size = *nbytes; - apr_thread_mutex_lock(thefile->mutex); + fspr_thread_mutex_lock(thefile->mutex); if ( thefile->direction == 0 ) { // Position file pointer for writing at the offset we are logically reading from @@ -150,7 +150,7 @@ APR_DECLARE(apr_status_t) apr_file_write(apr_file_t *thefile, const void *buf, a while (rc == 0 && size > 0) { if (thefile->bufpos == APR_FILE_BUFSIZE) // write buffer is full - rc = apr_file_flush(thefile); + rc = fspr_file_flush(thefile); blocksize = size > APR_FILE_BUFSIZE - thefile->bufpos ? APR_FILE_BUFSIZE - thefile->bufpos : size; memcpy(thefile->buffer + thefile->bufpos, pos, blocksize); @@ -159,7 +159,7 @@ APR_DECLARE(apr_status_t) apr_file_write(apr_file_t *thefile, const void *buf, a size -= blocksize; } - apr_thread_mutex_unlock(thefile->mutex); + fspr_thread_mutex_unlock(thefile->mutex); return APR_FROM_OS_ERROR(rc); } else { if (thefile->flags & APR_APPEND) { @@ -194,7 +194,7 @@ APR_DECLARE(apr_status_t) apr_file_write(apr_file_t *thefile, const void *buf, a #ifdef HAVE_WRITEV -APR_DECLARE(apr_status_t) apr_file_writev(apr_file_t *thefile, const struct iovec *vec, apr_size_t nvec, apr_size_t *nbytes) +APR_DECLARE(fspr_status_t) fspr_file_writev(fspr_file_t *thefile, const struct iovec *vec, fspr_size_t nvec, fspr_size_t *nbytes) { int bytes; if ((bytes = writev(thefile->filedes, vec, nvec)) < 0) { @@ -210,7 +210,7 @@ APR_DECLARE(apr_status_t) apr_file_writev(apr_file_t *thefile, const struct iove -APR_DECLARE(apr_status_t) apr_file_putc(char ch, apr_file_t *thefile) +APR_DECLARE(fspr_status_t) fspr_file_putc(char ch, fspr_file_t *thefile) { ULONG rc; ULONG byteswritten; @@ -230,24 +230,24 @@ APR_DECLARE(apr_status_t) apr_file_putc(char ch, apr_file_t *thefile) -APR_DECLARE(apr_status_t) apr_file_ungetc(char ch, apr_file_t *thefile) +APR_DECLARE(fspr_status_t) fspr_file_ungetc(char ch, fspr_file_t *thefile) { - apr_off_t offset = -1; - return apr_file_seek(thefile, APR_CUR, &offset); + fspr_off_t offset = -1; + return fspr_file_seek(thefile, APR_CUR, &offset); } -APR_DECLARE(apr_status_t) apr_file_getc(char *ch, apr_file_t *thefile) +APR_DECLARE(fspr_status_t) fspr_file_getc(char *ch, fspr_file_t *thefile) { ULONG rc; - apr_size_t bytesread; + fspr_size_t bytesread; if (!thefile->isopen) { return APR_EBADF; } bytesread = 1; - rc = apr_file_read(thefile, ch, &bytesread); + rc = fspr_file_read(thefile, ch, &bytesread); if (rc) { return rc; @@ -263,16 +263,16 @@ APR_DECLARE(apr_status_t) apr_file_getc(char *ch, apr_file_t *thefile) -APR_DECLARE(apr_status_t) apr_file_puts(const char *str, apr_file_t *thefile) +APR_DECLARE(fspr_status_t) fspr_file_puts(const char *str, fspr_file_t *thefile) { - apr_size_t len; + fspr_size_t len; len = strlen(str); - return apr_file_write(thefile, str, &len); + return fspr_file_write(thefile, str, &len); } -APR_DECLARE(apr_status_t) apr_file_flush(apr_file_t *thefile) +APR_DECLARE(fspr_status_t) fspr_file_flush(fspr_file_t *thefile) { if (thefile->buffered) { ULONG written = 0; @@ -296,15 +296,15 @@ APR_DECLARE(apr_status_t) apr_file_flush(apr_file_t *thefile) } -APR_DECLARE(apr_status_t) apr_file_gets(char *str, int len, apr_file_t *thefile) +APR_DECLARE(fspr_status_t) fspr_file_gets(char *str, int len, fspr_file_t *thefile) { - apr_size_t readlen; - apr_status_t rv = APR_SUCCESS; + fspr_size_t readlen; + fspr_status_t rv = APR_SUCCESS; int i; for (i = 0; i < len-1; i++) { readlen = 1; - rv = apr_file_read(thefile, str+i, &readlen); + rv = fspr_file_read(thefile, str+i, &readlen); if (rv != APR_SUCCESS) { break; @@ -332,7 +332,7 @@ APR_DECLARE(apr_status_t) apr_file_gets(char *str, int len, apr_file_t *thefile) -APR_DECLARE_NONSTD(int) apr_file_printf(apr_file_t *fptr, +APR_DECLARE_NONSTD(int) fspr_file_printf(fspr_file_t *fptr, const char *format, ...) { int cc; @@ -345,8 +345,8 @@ APR_DECLARE_NONSTD(int) apr_file_printf(apr_file_t *fptr, return 0; } va_start(ap, format); - len = apr_vsnprintf(buf, HUGE_STRING_LEN, format, ap); - cc = apr_file_puts(buf, fptr); + len = fspr_vsnprintf(buf, HUGE_STRING_LEN, format, ap); + cc = fspr_file_puts(buf, fptr); va_end(ap); free(buf); return (cc == APR_SUCCESS) ? len : -1; @@ -354,7 +354,7 @@ APR_DECLARE_NONSTD(int) apr_file_printf(apr_file_t *fptr, -apr_status_t apr_file_check_read(apr_file_t *fd) +fspr_status_t fspr_file_check_read(fspr_file_t *fd) { int rc; diff --git a/libs/apr/file_io/os2/seek.c b/libs/apr/file_io/os2/seek.c index 6fdfe8e8260..61420de7cc6 100644 --- a/libs/apr/file_io/os2/seek.c +++ b/libs/apr/file_io/os2/seek.c @@ -14,20 +14,20 @@ * limitations under the License. */ -#include "apr_arch_file_io.h" -#include "apr_file_io.h" -#include "apr_lib.h" +#include "fspr_arch_file_io.h" +#include "fspr_file_io.h" +#include "fspr_lib.h" #include #include -static apr_status_t setptr(apr_file_t *thefile, unsigned long pos ) +static fspr_status_t setptr(fspr_file_t *thefile, unsigned long pos ) { long newbufpos; ULONG rc; if (thefile->direction == 1) { - apr_status_t rv = apr_file_flush(thefile); + fspr_status_t rv = fspr_file_flush(thefile); if (rv != APR_SUCCESS) { return rv; @@ -52,7 +52,7 @@ static apr_status_t setptr(apr_file_t *thefile, unsigned long pos ) -APR_DECLARE(apr_status_t) apr_file_seek(apr_file_t *thefile, apr_seek_where_t where, apr_off_t *offset) +APR_DECLARE(fspr_status_t) fspr_file_seek(fspr_file_t *thefile, fspr_seek_where_t where, fspr_off_t *offset) { if (!thefile->isopen) { return APR_EBADF; @@ -62,7 +62,7 @@ APR_DECLARE(apr_status_t) apr_file_seek(apr_file_t *thefile, apr_seek_where_t wh if (thefile->buffered) { int rc = EINVAL; - apr_finfo_t finfo; + fspr_finfo_t finfo; switch (where) { case APR_SET: @@ -74,7 +74,7 @@ APR_DECLARE(apr_status_t) apr_file_seek(apr_file_t *thefile, apr_seek_where_t wh break; case APR_END: - rc = apr_file_info_get(&finfo, APR_FINFO_NORM, thefile); + rc = fspr_file_info_get(&finfo, APR_FINFO_NORM, thefile); if (rc == APR_SUCCESS) rc = setptr(thefile, finfo.size + *offset); break; @@ -103,7 +103,7 @@ APR_DECLARE(apr_status_t) apr_file_seek(apr_file_t *thefile, apr_seek_where_t wh -APR_DECLARE(apr_status_t) apr_file_trunc(apr_file_t *fp, apr_off_t offset) +APR_DECLARE(fspr_status_t) fspr_file_trunc(fspr_file_t *fp, fspr_off_t offset) { int rc = DosSetFileSize(fp->filedes, offset); diff --git a/libs/apr/file_io/unix/copy.c b/libs/apr/file_io/unix/copy.c index 113a1081bdc..df5b1fec7f5 100644 --- a/libs/apr/file_io/unix/copy.c +++ b/libs/apr/file_io/unix/copy.c @@ -14,30 +14,30 @@ * limitations under the License. */ -#include "apr_arch_file_io.h" -#include "apr_file_io.h" +#include "fspr_arch_file_io.h" +#include "fspr_file_io.h" -static apr_status_t apr_file_transfer_contents(const char *from_path, +static fspr_status_t fspr_file_transfer_contents(const char *from_path, const char *to_path, - apr_int32_t flags, - apr_fileperms_t to_perms, - apr_pool_t *pool) + fspr_int32_t flags, + fspr_fileperms_t to_perms, + fspr_pool_t *pool) { - apr_file_t *s, *d; - apr_status_t status; - apr_finfo_t finfo; - apr_fileperms_t perms; + fspr_file_t *s, *d; + fspr_status_t status; + fspr_finfo_t finfo; + fspr_fileperms_t perms; /* Open source file. */ - status = apr_file_open(&s, from_path, APR_READ, APR_OS_DEFAULT, pool); + status = fspr_file_open(&s, from_path, APR_READ, APR_OS_DEFAULT, pool); if (status) return status; /* Maybe get its permissions. */ if (to_perms == APR_FILE_SOURCE_PERMS) { - status = apr_file_info_get(&finfo, APR_FINFO_PROT, s); + status = fspr_file_info_get(&finfo, APR_FINFO_PROT, s); if (status != APR_SUCCESS && status != APR_INCOMPLETE) { - apr_file_close(s); /* toss any error */ + fspr_file_close(s); /* toss any error */ return status; } perms = finfo.protection; @@ -46,66 +46,66 @@ static apr_status_t apr_file_transfer_contents(const char *from_path, perms = to_perms; /* Open dest file. */ - status = apr_file_open(&d, to_path, flags, perms, pool); + status = fspr_file_open(&d, to_path, flags, perms, pool); if (status) { - apr_file_close(s); /* toss any error */ + fspr_file_close(s); /* toss any error */ return status; } /* Copy bytes till the cows come home. */ while (1) { char buf[BUFSIZ]; - apr_size_t bytes_this_time = sizeof(buf); - apr_status_t read_err; - apr_status_t write_err; + fspr_size_t bytes_this_time = sizeof(buf); + fspr_status_t read_err; + fspr_status_t write_err; /* Read 'em. */ - read_err = apr_file_read(s, buf, &bytes_this_time); + read_err = fspr_file_read(s, buf, &bytes_this_time); if (read_err && !APR_STATUS_IS_EOF(read_err)) { - apr_file_close(s); /* toss any error */ - apr_file_close(d); /* toss any error */ + fspr_file_close(s); /* toss any error */ + fspr_file_close(d); /* toss any error */ return read_err; } /* Write 'em. */ - write_err = apr_file_write_full(d, buf, bytes_this_time, NULL); + write_err = fspr_file_write_full(d, buf, bytes_this_time, NULL); if (write_err) { - apr_file_close(s); /* toss any error */ - apr_file_close(d); /* toss any error */ + fspr_file_close(s); /* toss any error */ + fspr_file_close(d); /* toss any error */ return write_err; } if (read_err && APR_STATUS_IS_EOF(read_err)) { - status = apr_file_close(s); + status = fspr_file_close(s); if (status) { - apr_file_close(d); /* toss any error */ + fspr_file_close(d); /* toss any error */ return status; } /* return the results of this close: an error, or success */ - return apr_file_close(d); + return fspr_file_close(d); } } /* NOTREACHED */ } -APR_DECLARE(apr_status_t) apr_file_copy(const char *from_path, +APR_DECLARE(fspr_status_t) fspr_file_copy(const char *from_path, const char *to_path, - apr_fileperms_t perms, - apr_pool_t *pool) + fspr_fileperms_t perms, + fspr_pool_t *pool) { - return apr_file_transfer_contents(from_path, to_path, + return fspr_file_transfer_contents(from_path, to_path, (APR_WRITE | APR_CREATE | APR_TRUNCATE), perms, pool); } -APR_DECLARE(apr_status_t) apr_file_append(const char *from_path, +APR_DECLARE(fspr_status_t) fspr_file_append(const char *from_path, const char *to_path, - apr_fileperms_t perms, - apr_pool_t *pool) + fspr_fileperms_t perms, + fspr_pool_t *pool) { - return apr_file_transfer_contents(from_path, to_path, + return fspr_file_transfer_contents(from_path, to_path, (APR_WRITE | APR_CREATE | APR_APPEND), perms, pool); diff --git a/libs/apr/file_io/unix/dir.c b/libs/apr/file_io/unix/dir.c index e05dc993c5b..faba53d71d4 100644 --- a/libs/apr/file_io/unix/dir.c +++ b/libs/apr/file_io/unix/dir.c @@ -14,9 +14,9 @@ * limitations under the License. */ -#include "apr_arch_file_io.h" -#include "apr_strings.h" -#include "apr_portable.h" +#include "fspr_arch_file_io.h" +#include "fspr_strings.h" +#include "fspr_portable.h" #if APR_HAVE_SYS_SYSLIMITS_H #include #endif @@ -24,9 +24,9 @@ #include #endif -static apr_status_t dir_cleanup(void *thedir) +static fspr_status_t dir_cleanup(void *thedir) { - apr_dir_t *dir = thedir; + fspr_dir_t *dir = thedir; if (closedir(dir->dirstruct) == 0) { return APR_SUCCESS; } @@ -38,24 +38,24 @@ static apr_status_t dir_cleanup(void *thedir) #define PATH_SEPARATOR '/' /* Remove trailing separators that don't affect the meaning of PATH. */ -static const char *path_canonicalize (const char *path, apr_pool_t *pool) +static const char *path_canonicalize (const char *path, fspr_pool_t *pool) { /* At some point this could eliminate redundant components. For * now, it just makes sure there is no trailing slash. */ - apr_size_t len = strlen (path); - apr_size_t orig_len = len; + fspr_size_t len = strlen (path); + fspr_size_t orig_len = len; while ((len > 0) && (path[len - 1] == PATH_SEPARATOR)) len--; if (len != orig_len) - return apr_pstrndup (pool, path, len); + return fspr_pstrndup (pool, path, len); else return path; } /* Remove one component off the end of PATH. */ -static char *path_remove_last_component (const char *path, apr_pool_t *pool) +static char *path_remove_last_component (const char *path, fspr_pool_t *pool) { const char *newpath = path_canonicalize (path, pool); int i; @@ -65,18 +65,18 @@ static char *path_remove_last_component (const char *path, apr_pool_t *pool) break; } - return apr_pstrndup (pool, path, (i < 0) ? 0 : i); + return fspr_pstrndup (pool, path, (i < 0) ? 0 : i); } -apr_status_t apr_dir_open(apr_dir_t **new, const char *dirname, - apr_pool_t *pool) +fspr_status_t fspr_dir_open(fspr_dir_t **new, const char *dirname, + fspr_pool_t *pool) { /* On some platforms (e.g., Linux+GNU libc), d_name[] in struct * dirent is declared with enough storage for the name. On other * platforms (e.g., Solaris 8 for Intel), d_name is declared as a * one-byte array. Note: gcc evaluates this at compile time. */ - apr_size_t dirent_size = + fspr_size_t dirent_size = (sizeof((*new)->entry->d_name) > 1 ? sizeof(struct dirent) : sizeof (struct dirent) + 255); DIR *dir = opendir(dirname); @@ -85,25 +85,25 @@ apr_status_t apr_dir_open(apr_dir_t **new, const char *dirname, return errno; } - (*new) = (apr_dir_t *)apr_palloc(pool, sizeof(apr_dir_t)); + (*new) = (fspr_dir_t *)fspr_palloc(pool, sizeof(fspr_dir_t)); (*new)->pool = pool; - (*new)->dirname = apr_pstrdup(pool, dirname); + (*new)->dirname = fspr_pstrdup(pool, dirname); (*new)->dirstruct = dir; - (*new)->entry = apr_pcalloc(pool, dirent_size); + (*new)->entry = fspr_pcalloc(pool, dirent_size); - apr_pool_cleanup_register((*new)->pool, *new, dir_cleanup, - apr_pool_cleanup_null); + fspr_pool_cleanup_register((*new)->pool, *new, dir_cleanup, + fspr_pool_cleanup_null); return APR_SUCCESS; } -apr_status_t apr_dir_close(apr_dir_t *thedir) +fspr_status_t fspr_dir_close(fspr_dir_t *thedir) { - return apr_pool_cleanup_run(thedir->pool, thedir, dir_cleanup); + return fspr_pool_cleanup_run(thedir->pool, thedir, dir_cleanup); } #ifdef DIRENT_TYPE -static apr_filetype_e filetype_from_dirent_type(int type) +static fspr_filetype_e filetype_from_dirent_type(int type) { switch (type) { case DT_REG: @@ -130,12 +130,12 @@ static apr_filetype_e filetype_from_dirent_type(int type) } #endif -apr_status_t apr_dir_read(apr_finfo_t *finfo, apr_int32_t wanted, - apr_dir_t *thedir) +fspr_status_t fspr_dir_read(fspr_finfo_t *finfo, fspr_int32_t wanted, + fspr_dir_t *thedir) { - apr_status_t ret = 0; + fspr_status_t ret = 0; #ifdef DIRENT_TYPE - apr_filetype_e type; + fspr_filetype_e type; #endif #if APR_HAS_THREADS && defined(_POSIX_THREAD_SAFE_FUNCTIONS) \ && !defined(READDIR_IS_THREAD_SAFE) @@ -201,12 +201,12 @@ apr_status_t apr_dir_read(apr_finfo_t *finfo, apr_int32_t wanted, { char fspec[APR_PATH_MAX]; int off; - apr_cpystrn(fspec, thedir->dirname, sizeof(fspec)); + fspr_cpystrn(fspec, thedir->dirname, sizeof(fspec)); off = strlen(fspec); if ((fspec[off - 1] != '/') && (off + 1 < sizeof(fspec))) fspec[off++] = '/'; - apr_cpystrn(fspec + off, thedir->entry->d_name, sizeof(fspec) - off); - ret = apr_stat(finfo, fspec, APR_FINFO_LINK | wanted, thedir->pool); + fspr_cpystrn(fspec + off, thedir->entry->d_name, sizeof(fspec) - off); + ret = fspr_stat(finfo, fspec, APR_FINFO_LINK | wanted, thedir->pool); /* We passed a stack name that will disappear */ finfo->fname = NULL; } @@ -234,7 +234,7 @@ apr_status_t apr_dir_read(apr_finfo_t *finfo, apr_int32_t wanted, #endif } - finfo->name = apr_pstrdup(thedir->pool, thedir->entry->d_name); + finfo->name = fspr_pstrdup(thedir->pool, thedir->entry->d_name); finfo->valid |= APR_FINFO_NAME; if (wanted) @@ -243,16 +243,16 @@ apr_status_t apr_dir_read(apr_finfo_t *finfo, apr_int32_t wanted, return APR_SUCCESS; } -apr_status_t apr_dir_rewind(apr_dir_t *thedir) +fspr_status_t fspr_dir_rewind(fspr_dir_t *thedir) { rewinddir(thedir->dirstruct); return APR_SUCCESS; } -apr_status_t apr_dir_make(const char *path, apr_fileperms_t perm, - apr_pool_t *pool) +fspr_status_t fspr_dir_make(const char *path, fspr_fileperms_t perm, + fspr_pool_t *pool) { - mode_t mode = apr_unix_perms2mode(perm); + mode_t mode = fspr_unix_perms2mode(perm); if (mkdir(path, mode) == 0) { return APR_SUCCESS; @@ -262,35 +262,35 @@ apr_status_t apr_dir_make(const char *path, apr_fileperms_t perm, } } -apr_status_t apr_dir_make_recursive(const char *path, apr_fileperms_t perm, - apr_pool_t *pool) +fspr_status_t fspr_dir_make_recursive(const char *path, fspr_fileperms_t perm, + fspr_pool_t *pool) { - apr_status_t apr_err = 0; + fspr_status_t fspr_err = 0; - apr_err = apr_dir_make (path, perm, pool); /* Try to make PATH right out */ + fspr_err = fspr_dir_make (path, perm, pool); /* Try to make PATH right out */ - if (apr_err == EEXIST) /* It's OK if PATH exists */ + if (fspr_err == EEXIST) /* It's OK if PATH exists */ return APR_SUCCESS; - if (apr_err == ENOENT) { /* Missing an intermediate dir */ + if (fspr_err == ENOENT) { /* Missing an intermediate dir */ char *dir; dir = path_remove_last_component(path, pool); /* If there is no path left, give up. */ if (dir[0] == '\0') { - return apr_err; + return fspr_err; } - apr_err = apr_dir_make_recursive(dir, perm, pool); + fspr_err = fspr_dir_make_recursive(dir, perm, pool); - if (!apr_err) - apr_err = apr_dir_make (path, perm, pool); + if (!fspr_err) + fspr_err = fspr_dir_make (path, perm, pool); } - return apr_err; + return fspr_err; } -apr_status_t apr_dir_remove(const char *path, apr_pool_t *pool) +fspr_status_t fspr_dir_remove(const char *path, fspr_pool_t *pool) { if (rmdir(path) == 0) { return APR_SUCCESS; @@ -300,7 +300,7 @@ apr_status_t apr_dir_remove(const char *path, apr_pool_t *pool) } } -apr_status_t apr_os_dir_get(apr_os_dir_t **thedir, apr_dir_t *dir) +fspr_status_t fspr_os_dir_get(fspr_os_dir_t **thedir, fspr_dir_t *dir) { if (dir == NULL) { return APR_ENODIR; @@ -309,11 +309,11 @@ apr_status_t apr_os_dir_get(apr_os_dir_t **thedir, apr_dir_t *dir) return APR_SUCCESS; } -apr_status_t apr_os_dir_put(apr_dir_t **dir, apr_os_dir_t *thedir, - apr_pool_t *pool) +fspr_status_t fspr_os_dir_put(fspr_dir_t **dir, fspr_os_dir_t *thedir, + fspr_pool_t *pool) { if ((*dir) == NULL) { - (*dir) = (apr_dir_t *)apr_pcalloc(pool, sizeof(apr_dir_t)); + (*dir) = (fspr_dir_t *)fspr_pcalloc(pool, sizeof(fspr_dir_t)); (*dir)->pool = pool; } (*dir)->dirstruct = thedir; diff --git a/libs/apr/file_io/unix/fileacc.c b/libs/apr/file_io/unix/fileacc.c index 437f3589f55..b1efa0e8223 100644 --- a/libs/apr/file_io/unix/fileacc.c +++ b/libs/apr/file_io/unix/fileacc.c @@ -14,25 +14,25 @@ * limitations under the License. */ -#include "apr_strings.h" -#include "apr_arch_file_io.h" +#include "fspr_strings.h" +#include "fspr_arch_file_io.h" -/* A file to put ALL of the accessor functions for apr_file_t types. */ +/* A file to put ALL of the accessor functions for fspr_file_t types. */ -APR_DECLARE(apr_status_t) apr_file_name_get(const char **fname, - apr_file_t *thefile) +APR_DECLARE(fspr_status_t) fspr_file_name_get(const char **fname, + fspr_file_t *thefile) { *fname = thefile->fname; return APR_SUCCESS; } -APR_DECLARE(apr_int32_t) apr_file_flags_get(apr_file_t *f) +APR_DECLARE(fspr_int32_t) fspr_file_flags_get(fspr_file_t *f) { return f->flags; } #if !defined(OS2) && !defined(WIN32) -mode_t apr_unix_perms2mode(apr_fileperms_t perms) +mode_t fspr_unix_perms2mode(fspr_fileperms_t perms) { mode_t mode = 0; @@ -68,9 +68,9 @@ mode_t apr_unix_perms2mode(apr_fileperms_t perms) return mode; } -apr_fileperms_t apr_unix_mode2perms(mode_t mode) +fspr_fileperms_t fspr_unix_mode2perms(mode_t mode) { - apr_fileperms_t perms = 0; + fspr_fileperms_t perms = 0; if (mode & S_ISUID) perms |= APR_USETID; @@ -105,15 +105,15 @@ apr_fileperms_t apr_unix_mode2perms(mode_t mode) } #endif -APR_DECLARE(apr_status_t) apr_file_data_get(void **data, const char *key, - apr_file_t *file) +APR_DECLARE(fspr_status_t) fspr_file_data_get(void **data, const char *key, + fspr_file_t *file) { - return apr_pool_userdata_get(data, key, file->pool); + return fspr_pool_userdata_get(data, key, file->pool); } -APR_DECLARE(apr_status_t) apr_file_data_set(apr_file_t *file, void *data, +APR_DECLARE(fspr_status_t) fspr_file_data_set(fspr_file_t *file, void *data, const char *key, - apr_status_t (*cleanup)(void *)) + fspr_status_t (*cleanup)(void *)) { - return apr_pool_userdata_set(data, key, cleanup, file->pool); + return fspr_pool_userdata_set(data, key, cleanup, file->pool); } diff --git a/libs/apr/file_io/unix/filedup.c b/libs/apr/file_io/unix/filedup.c index f2b61efe03b..007421f91b1 100644 --- a/libs/apr/file_io/unix/filedup.c +++ b/libs/apr/file_io/unix/filedup.c @@ -14,14 +14,14 @@ * limitations under the License. */ -#include "apr_arch_file_io.h" -#include "apr_strings.h" -#include "apr_portable.h" -#include "apr_thread_mutex.h" -#include "apr_arch_inherit.h" +#include "fspr_arch_file_io.h" +#include "fspr_strings.h" +#include "fspr_portable.h" +#include "fspr_thread_mutex.h" +#include "fspr_arch_inherit.h" -static apr_status_t file_dup(apr_file_t **new_file, - apr_file_t *old_file, apr_pool_t *p, +static fspr_status_t file_dup(fspr_file_t **new_file, + fspr_file_t *old_file, fspr_pool_t *p, int which_dup) { int rv; @@ -40,12 +40,12 @@ static apr_status_t file_dup(apr_file_t **new_file, return errno; if (which_dup == 1) { - (*new_file) = (apr_file_t *)apr_pcalloc(p, sizeof(apr_file_t)); + (*new_file) = (fspr_file_t *)fspr_pcalloc(p, sizeof(fspr_file_t)); (*new_file)->pool = p; (*new_file)->filedes = rv; } - (*new_file)->fname = apr_pstrdup(p, old_file->fname); + (*new_file)->fname = fspr_pstrdup(p, old_file->fname); (*new_file)->buffered = old_file->buffered; /* If the existing socket in a dup2 is already buffered, we @@ -54,7 +54,7 @@ static apr_status_t file_dup(apr_file_t **new_file, */ #if APR_HAS_THREADS if ((*new_file)->buffered && !(*new_file)->thlock && old_file->thlock) { - apr_thread_mutex_create(&((*new_file)->thlock), + fspr_thread_mutex_create(&((*new_file)->thlock), APR_THREAD_MUTEX_DEFAULT, p); } #endif @@ -62,7 +62,7 @@ static apr_status_t file_dup(apr_file_t **new_file, * got one. */ if ((*new_file)->buffered && !(*new_file)->buffer) { - (*new_file)->buffer = apr_palloc(p, APR_FILE_BUFSIZE); + (*new_file)->buffer = fspr_palloc(p, APR_FILE_BUFSIZE); } /* this is the way dup() works */ @@ -71,29 +71,29 @@ static apr_status_t file_dup(apr_file_t **new_file, /* make sure unget behavior is consistent */ (*new_file)->ungetchar = old_file->ungetchar; - /* apr_file_dup2() retains the original cleanup, reflecting + /* fspr_file_dup2() retains the original cleanup, reflecting * the existing inherit and nocleanup flags. This means, - * that apr_file_dup2() cannot be called against an apr_file_t - * already closed with apr_file_close, because the expected + * that fspr_file_dup2() cannot be called against an fspr_file_t + * already closed with fspr_file_close, because the expected * cleanup was already killed. */ if (which_dup == 2) { return APR_SUCCESS; } - /* apr_file_dup() retains all old_file flags with the exceptions + /* fspr_file_dup() retains all old_file flags with the exceptions * of APR_INHERIT and APR_FILE_NOCLEANUP. - * The user must call apr_file_inherit_set() on the dupped - * apr_file_t when desired. + * The user must call fspr_file_inherit_set() on the dupped + * fspr_file_t when desired. */ (*new_file)->flags = old_file->flags & ~(APR_INHERIT | APR_FILE_NOCLEANUP); - apr_pool_cleanup_register((*new_file)->pool, (void *)(*new_file), - apr_unix_file_cleanup, - apr_unix_file_cleanup); + fspr_pool_cleanup_register((*new_file)->pool, (void *)(*new_file), + fspr_unix_file_cleanup, + fspr_unix_file_cleanup); #ifndef WAITIO_USES_POLL - /* Start out with no pollset. apr_wait_for_io_or_timeout() will + /* Start out with no pollset. fspr_wait_for_io_or_timeout() will * initialize the pollset if needed. */ (*new_file)->pollset = NULL; @@ -101,27 +101,27 @@ static apr_status_t file_dup(apr_file_t **new_file, return APR_SUCCESS; } -APR_DECLARE(apr_status_t) apr_file_dup(apr_file_t **new_file, - apr_file_t *old_file, apr_pool_t *p) +APR_DECLARE(fspr_status_t) fspr_file_dup(fspr_file_t **new_file, + fspr_file_t *old_file, fspr_pool_t *p) { return file_dup(new_file, old_file, p, 1); } -APR_DECLARE(apr_status_t) apr_file_dup2(apr_file_t *new_file, - apr_file_t *old_file, apr_pool_t *p) +APR_DECLARE(fspr_status_t) fspr_file_dup2(fspr_file_t *new_file, + fspr_file_t *old_file, fspr_pool_t *p) { return file_dup(&new_file, old_file, p, 2); } -APR_DECLARE(apr_status_t) apr_file_setaside(apr_file_t **new_file, - apr_file_t *old_file, - apr_pool_t *p) +APR_DECLARE(fspr_status_t) fspr_file_setaside(fspr_file_t **new_file, + fspr_file_t *old_file, + fspr_pool_t *p) { - *new_file = (apr_file_t *)apr_palloc(p, sizeof(apr_file_t)); - memcpy(*new_file, old_file, sizeof(apr_file_t)); + *new_file = (fspr_file_t *)fspr_palloc(p, sizeof(fspr_file_t)); + memcpy(*new_file, old_file, sizeof(fspr_file_t)); (*new_file)->pool = p; if (old_file->buffered) { - (*new_file)->buffer = apr_palloc(p, APR_FILE_BUFSIZE); + (*new_file)->buffer = fspr_palloc(p, APR_FILE_BUFSIZE); if (old_file->direction == 1) { memcpy((*new_file)->buffer, old_file->buffer, old_file->bufpos); } @@ -130,26 +130,26 @@ APR_DECLARE(apr_status_t) apr_file_setaside(apr_file_t **new_file, } #if APR_HAS_THREADS if (old_file->thlock) { - apr_thread_mutex_create(&((*new_file)->thlock), + fspr_thread_mutex_create(&((*new_file)->thlock), APR_THREAD_MUTEX_DEFAULT, p); - apr_thread_mutex_destroy(old_file->thlock); + fspr_thread_mutex_destroy(old_file->thlock); } #endif /* APR_HAS_THREADS */ } if (old_file->fname) { - (*new_file)->fname = apr_pstrdup(p, old_file->fname); + (*new_file)->fname = fspr_pstrdup(p, old_file->fname); } if (!(old_file->flags & APR_FILE_NOCLEANUP)) { - apr_pool_cleanup_register(p, (void *)(*new_file), - apr_unix_file_cleanup, + fspr_pool_cleanup_register(p, (void *)(*new_file), + fspr_unix_file_cleanup, ((*new_file)->flags & APR_INHERIT) - ? apr_pool_cleanup_null - : apr_unix_file_cleanup); + ? fspr_pool_cleanup_null + : fspr_unix_file_cleanup); } old_file->filedes = -1; - apr_pool_cleanup_kill(old_file->pool, (void *)old_file, - apr_unix_file_cleanup); + fspr_pool_cleanup_kill(old_file->pool, (void *)old_file, + fspr_unix_file_cleanup); #ifndef WAITIO_USES_POLL (*new_file)->pollset = NULL; #endif diff --git a/libs/apr/file_io/unix/filepath.c b/libs/apr/file_io/unix/filepath.c index 64f1b2fbd40..1e87b9f267d 100644 --- a/libs/apr/file_io/unix/filepath.c +++ b/libs/apr/file_io/unix/filepath.c @@ -14,13 +14,13 @@ * limitations under the License. */ -#include "apr.h" -#include "apr_private.h" -#include "apr_arch_file_io.h" -#include "apr_file_io.h" -#include "apr_strings.h" +#include "fspr.h" +#include "fspr_private.h" +#include "fspr_arch_file_io.h" +#include "fspr_file_io.h" +#include "fspr_strings.h" #define APR_WANT_STRFUNC -#include "apr_want.h" +#include "fspr_want.h" #if APR_HAVE_UNISTD_H #include #endif @@ -34,8 +34,8 @@ /* Any OS that requires/refuses trailing slashes should be dealt with here. */ -APR_DECLARE(apr_status_t) apr_filepath_get(char **defpath, apr_int32_t flags, - apr_pool_t *p) +APR_DECLARE(fspr_status_t) fspr_filepath_get(char **defpath, fspr_int32_t flags, + fspr_pool_t *p) { char path[APR_PATH_MAX]; @@ -45,7 +45,7 @@ APR_DECLARE(apr_status_t) apr_filepath_get(char **defpath, apr_int32_t flags, else return errno; } - *defpath = apr_pstrdup(p, path); + *defpath = fspr_pstrdup(p, path); return APR_SUCCESS; } @@ -53,7 +53,7 @@ APR_DECLARE(apr_status_t) apr_filepath_get(char **defpath, apr_int32_t flags, /* Any OS that requires/refuses trailing slashes should be dealt with here */ -APR_DECLARE(apr_status_t) apr_filepath_set(const char *path, apr_pool_t *p) +APR_DECLARE(fspr_status_t) fspr_filepath_set(const char *path, fspr_pool_t *p) { if (chdir(path) != 0) return errno; @@ -61,13 +61,13 @@ APR_DECLARE(apr_status_t) apr_filepath_set(const char *path, apr_pool_t *p) return APR_SUCCESS; } -APR_DECLARE(apr_status_t) apr_filepath_root(const char **rootpath, +APR_DECLARE(fspr_status_t) fspr_filepath_root(const char **rootpath, const char **inpath, - apr_int32_t flags, - apr_pool_t *p) + fspr_int32_t flags, + fspr_pool_t *p) { if (**inpath == '/') { - *rootpath = apr_pstrdup(p, "/"); + *rootpath = fspr_pstrdup(p, "/"); do { ++(*inpath); } while (**inpath == '/'); @@ -78,19 +78,19 @@ APR_DECLARE(apr_status_t) apr_filepath_root(const char **rootpath, return APR_ERELATIVE; } -APR_DECLARE(apr_status_t) apr_filepath_merge(char **newpath, +APR_DECLARE(fspr_status_t) fspr_filepath_merge(char **newpath, const char *rootpath, const char *addpath, - apr_int32_t flags, - apr_pool_t *p) + fspr_int32_t flags, + fspr_pool_t *p) { char *path; - apr_size_t rootlen; /* is the length of the src rootpath */ - apr_size_t maxlen; /* maximum total path length */ - apr_size_t keptlen; /* is the length of the retained rootpath */ - apr_size_t pathlen; /* is the length of the result path */ - apr_size_t seglen; /* is the end of the current segment */ - apr_status_t rv; + fspr_size_t rootlen; /* is the length of the src rootpath */ + fspr_size_t maxlen; /* maximum total path length */ + fspr_size_t keptlen; /* is the length of the retained rootpath */ + fspr_size_t pathlen; /* is the length of the result path */ + fspr_size_t seglen; /* is the end of the current segment */ + fspr_status_t rv; /* Treat null as an empty path. */ @@ -134,7 +134,7 @@ APR_DECLARE(apr_status_t) apr_filepath_merge(char **newpath, * passing the address of a char const* for a char** arg. */ char *getpath = NULL; - rv = apr_filepath_get(&getpath, flags, p); + rv = fspr_filepath_get(&getpath, flags, p); rootpath = getpath; if (rv != APR_SUCCESS) return errno; @@ -144,7 +144,7 @@ APR_DECLARE(apr_status_t) apr_filepath_merge(char **newpath, /* XXX: Any kernel subject to goofy, uncanonical results * must run the rootpath against the user's given flags. - * Simplest would be a recursive call to apr_filepath_merge + * Simplest would be a recursive call to fspr_filepath_merge * with an empty (not null) rootpath and addpath of the cwd. */ } @@ -156,7 +156,7 @@ APR_DECLARE(apr_status_t) apr_filepath_merge(char **newpath, if (maxlen > APR_PATH_MAX) { return APR_ENAMETOOLONG; } - path = (char *)apr_palloc(p, maxlen); + path = (char *)fspr_palloc(p, maxlen); if (addpath[0] == '/') { /* Ignore the given root path, strip off leading @@ -292,21 +292,21 @@ APR_DECLARE(apr_status_t) apr_filepath_merge(char **newpath, return APR_SUCCESS; } -APR_DECLARE(apr_status_t) apr_filepath_list_split(apr_array_header_t **pathelts, +APR_DECLARE(fspr_status_t) fspr_filepath_list_split(fspr_array_header_t **pathelts, const char *liststr, - apr_pool_t *p) + fspr_pool_t *p) { - return apr_filepath_list_split_impl(pathelts, liststr, ':', p); + return fspr_filepath_list_split_impl(pathelts, liststr, ':', p); } -APR_DECLARE(apr_status_t) apr_filepath_list_merge(char **liststr, - apr_array_header_t *pathelts, - apr_pool_t *p) +APR_DECLARE(fspr_status_t) fspr_filepath_list_merge(char **liststr, + fspr_array_header_t *pathelts, + fspr_pool_t *p) { - return apr_filepath_list_merge_impl(liststr, pathelts, ':', p); + return fspr_filepath_list_merge_impl(liststr, pathelts, ':', p); } -APR_DECLARE(apr_status_t) apr_filepath_encoding(int *style, apr_pool_t *p) +APR_DECLARE(fspr_status_t) fspr_filepath_encoding(int *style, fspr_pool_t *p) { *style = APR_FILEPATH_ENCODING_LOCALE; return APR_SUCCESS; diff --git a/libs/apr/file_io/unix/filepath_util.c b/libs/apr/file_io/unix/filepath_util.c index d8ccc567146..d81dc91ce3d 100644 --- a/libs/apr/file_io/unix/filepath_util.c +++ b/libs/apr/file_io/unix/filepath_util.c @@ -17,29 +17,29 @@ #define APR_WANT_STRFUNC #define APR_WANT_MEMFUNC -#include "apr_want.h" +#include "fspr_want.h" -#include "apr_errno.h" -#include "apr_pools.h" -#include "apr_strings.h" -#include "apr_tables.h" +#include "fspr_errno.h" +#include "fspr_pools.h" +#include "fspr_strings.h" +#include "fspr_tables.h" -#include "apr_private.h" +#include "fspr_private.h" -apr_status_t apr_filepath_list_split_impl(apr_array_header_t **pathelts, +fspr_status_t fspr_filepath_list_split_impl(fspr_array_header_t **pathelts, const char *liststr, char separator, - apr_pool_t *p) + fspr_pool_t *p) { char *path, *part, *ptr; char separator_string[2] = { '\0', '\0' }; - apr_array_header_t *elts; + fspr_array_header_t *elts; int nelts; separator_string[0] = separator; /* Count the number of path elements. We know there'll be at least one even if path is an empty string. */ - path = apr_pstrdup(p, liststr); + path = fspr_pstrdup(p, liststr); for (nelts = 0, ptr = path; ptr != NULL; ++nelts) { ptr = strchr(ptr, separator); @@ -48,14 +48,14 @@ apr_status_t apr_filepath_list_split_impl(apr_array_header_t **pathelts, } /* Split the path into the array. */ - elts = apr_array_make(p, nelts, sizeof(char*)); - while ((part = apr_strtok(path, separator_string, &ptr)) != NULL) + elts = fspr_array_make(p, nelts, sizeof(char*)); + while ((part = fspr_strtok(path, separator_string, &ptr)) != NULL) { if (*part == '\0') /* Ignore empty path components. */ continue; - *(char**)apr_array_push(elts) = part; - path = NULL; /* For the next call to apr_strtok */ + *(char**)fspr_array_push(elts) = part; + path = NULL; /* For the next call to fspr_strtok */ } *pathelts = elts; @@ -63,12 +63,12 @@ apr_status_t apr_filepath_list_split_impl(apr_array_header_t **pathelts, } -apr_status_t apr_filepath_list_merge_impl(char **liststr, - apr_array_header_t *pathelts, +fspr_status_t fspr_filepath_list_merge_impl(char **liststr, + fspr_array_header_t *pathelts, char separator, - apr_pool_t *p) + fspr_pool_t *p) { - apr_size_t path_size = 0; + fspr_size_t path_size = 0; char *path; int i; @@ -91,13 +91,13 @@ apr_status_t apr_filepath_list_merge_impl(char **liststr, path_size += (i - 1); /* Merge the path components */ - path = *liststr = apr_palloc(p, path_size + 1); + path = *liststr = fspr_palloc(p, path_size + 1); for (i = 0; i < pathelts->nelts; ++i) { /* ### Hmmmm. Calling strlen twice on the same string. Yuck. - But is is better than reallocation in apr_pstrcat? */ + But is is better than reallocation in fspr_pstrcat? */ const char *part = ((char**)pathelts->elts)[i]; - apr_size_t part_size = strlen(part); + fspr_size_t part_size = strlen(part); if (part_size == 0) /* Ignore empty path components. */ continue; diff --git a/libs/apr/file_io/unix/filestat.c b/libs/apr/file_io/unix/filestat.c index a34b22c3700..d5e92724d56 100644 --- a/libs/apr/file_io/unix/filestat.c +++ b/libs/apr/file_io/unix/filestat.c @@ -14,19 +14,19 @@ * limitations under the License. */ -#include "apr_arch_file_io.h" -#include "apr_file_io.h" -#include "apr_general.h" -#include "apr_strings.h" -#include "apr_errno.h" +#include "fspr_arch_file_io.h" +#include "fspr_file_io.h" +#include "fspr_general.h" +#include "fspr_strings.h" +#include "fspr_errno.h" #ifdef HAVE_UTIME #include #endif -static apr_filetype_e filetype_from_mode(mode_t mode) +static fspr_filetype_e filetype_from_mode(mode_t mode) { - apr_filetype_e type; + fspr_filetype_e type; switch (mode & S_IFMT) { case S_IFREG: @@ -67,12 +67,12 @@ static apr_filetype_e filetype_from_mode(mode_t mode) return type; } -static void fill_out_finfo(apr_finfo_t *finfo, struct_stat *info, - apr_int32_t wanted) +static void fill_out_finfo(fspr_finfo_t *finfo, struct_stat *info, + fspr_int32_t wanted) { finfo->valid = APR_FINFO_MIN | APR_FINFO_IDENT | APR_FINFO_NLINK | APR_FINFO_OWNER | APR_FINFO_PROT; - finfo->protection = apr_unix_mode2perms(info->st_mode); + finfo->protection = fspr_unix_mode2perms(info->st_mode); finfo->filetype = filetype_from_mode(info->st_mode); finfo->user = info->st_uid; finfo->group = info->st_gid; @@ -80,9 +80,9 @@ static void fill_out_finfo(apr_finfo_t *finfo, struct_stat *info, finfo->inode = info->st_ino; finfo->device = info->st_dev; finfo->nlink = info->st_nlink; - apr_time_ansi_put(&finfo->atime, info->st_atime); - apr_time_ansi_put(&finfo->mtime, info->st_mtime); - apr_time_ansi_put(&finfo->ctime, info->st_ctime); + fspr_time_ansi_put(&finfo->atime, info->st_atime); + fspr_time_ansi_put(&finfo->mtime, info->st_mtime); + fspr_time_ansi_put(&finfo->ctime, info->st_ctime); /* ### needs to be revisited * if (wanted & APR_FINFO_CSIZE) { * finfo->csize = info->st_blocks * 512; @@ -91,14 +91,14 @@ static void fill_out_finfo(apr_finfo_t *finfo, struct_stat *info, */ } -APR_DECLARE(apr_status_t) apr_file_info_get(apr_finfo_t *finfo, - apr_int32_t wanted, - apr_file_t *thefile) +APR_DECLARE(fspr_status_t) fspr_file_info_get(fspr_finfo_t *finfo, + fspr_int32_t wanted, + fspr_file_t *thefile) { struct_stat info; if (thefile->buffered) { - apr_status_t rv = apr_file_flush(thefile); + fspr_status_t rv = fspr_file_flush(thefile); if (rv != APR_SUCCESS) return rv; } @@ -114,30 +114,30 @@ APR_DECLARE(apr_status_t) apr_file_info_get(apr_finfo_t *finfo, } } -APR_DECLARE(apr_status_t) apr_file_perms_set(const char *fname, - apr_fileperms_t perms) +APR_DECLARE(fspr_status_t) fspr_file_perms_set(const char *fname, + fspr_fileperms_t perms) { - mode_t mode = apr_unix_perms2mode(perms); + mode_t mode = fspr_unix_perms2mode(perms); if (chmod(fname, mode) == -1) return errno; return APR_SUCCESS; } -APR_DECLARE(apr_status_t) apr_file_attrs_set(const char *fname, - apr_fileattrs_t attributes, - apr_fileattrs_t attr_mask, - apr_pool_t *pool) +APR_DECLARE(fspr_status_t) fspr_file_attrs_set(const char *fname, + fspr_fileattrs_t attributes, + fspr_fileattrs_t attr_mask, + fspr_pool_t *pool) { - apr_status_t status; - apr_finfo_t finfo = {0}; + fspr_status_t status; + fspr_finfo_t finfo = {0}; /* Don't do anything if we can't handle the requested attributes */ if (!(attr_mask & (APR_FILE_ATTR_READONLY | APR_FILE_ATTR_EXECUTABLE))) return APR_SUCCESS; - status = apr_stat(&finfo, fname, APR_FINFO_PROT, pool); + status = fspr_stat(&finfo, fname, APR_FINFO_PROT, pool); if (status) return status; @@ -176,18 +176,18 @@ APR_DECLARE(apr_status_t) apr_file_attrs_set(const char *fname, } } - return apr_file_perms_set(fname, finfo.protection); + return fspr_file_perms_set(fname, finfo.protection); } -APR_DECLARE(apr_status_t) apr_file_mtime_set(const char *fname, - apr_time_t mtime, - apr_pool_t *pool) +APR_DECLARE(fspr_status_t) fspr_file_mtime_set(const char *fname, + fspr_time_t mtime, + fspr_pool_t *pool) { - apr_status_t status; - apr_finfo_t finfo = {0}; + fspr_status_t status; + fspr_finfo_t finfo = {0}; - status = apr_stat(&finfo, fname, APR_FINFO_ATIME, pool); + status = fspr_stat(&finfo, fname, APR_FINFO_ATIME, pool); if (status) { return status; } @@ -196,10 +196,10 @@ APR_DECLARE(apr_status_t) apr_file_mtime_set(const char *fname, { struct timeval tvp[2]; - tvp[0].tv_sec = apr_time_sec(finfo.atime); - tvp[0].tv_usec = apr_time_usec(finfo.atime); - tvp[1].tv_sec = apr_time_sec(mtime); - tvp[1].tv_usec = apr_time_usec(mtime); + tvp[0].tv_sec = fspr_time_sec(finfo.atime); + tvp[0].tv_usec = fspr_time_usec(finfo.atime); + tvp[1].tv_sec = fspr_time_sec(mtime); + tvp[1].tv_usec = fspr_time_usec(mtime); if (utimes(fname, tvp) == -1) { return errno; @@ -224,9 +224,9 @@ APR_DECLARE(apr_status_t) apr_file_mtime_set(const char *fname, } -APR_DECLARE(apr_status_t) apr_stat(apr_finfo_t *finfo, +APR_DECLARE(fspr_status_t) fspr_stat(fspr_finfo_t *finfo, const char *fname, - apr_int32_t wanted, apr_pool_t *pool) + fspr_int32_t wanted, fspr_pool_t *pool) { struct_stat info; int srv; diff --git a/libs/apr/file_io/unix/flock.c b/libs/apr/file_io/unix/flock.c index f400a96701d..9081b5faf45 100644 --- a/libs/apr/file_io/unix/flock.c +++ b/libs/apr/file_io/unix/flock.c @@ -14,7 +14,7 @@ * limitations under the License. */ -#include "apr_arch_file_io.h" +#include "fspr_arch_file_io.h" #if APR_HAVE_FCNTL_H #include @@ -23,7 +23,7 @@ #include #endif -APR_DECLARE(apr_status_t) apr_file_lock(apr_file_t *thefile, int type) +APR_DECLARE(fspr_status_t) fspr_file_lock(fspr_file_t *thefile, int type) { int rc; @@ -82,7 +82,7 @@ APR_DECLARE(apr_status_t) apr_file_lock(apr_file_t *thefile, int type) return APR_SUCCESS; } -APR_DECLARE(apr_status_t) apr_file_unlock(apr_file_t *thefile) +APR_DECLARE(fspr_status_t) fspr_file_unlock(fspr_file_t *thefile) { int rc; diff --git a/libs/apr/file_io/unix/fullrw.c b/libs/apr/file_io/unix/fullrw.c index 9ad27ec99b3..9503e983ad9 100644 --- a/libs/apr/file_io/unix/fullrw.c +++ b/libs/apr/file_io/unix/fullrw.c @@ -14,20 +14,20 @@ * limitations under the License. */ -#include "apr_file_io.h" +#include "fspr_file_io.h" -APR_DECLARE(apr_status_t) apr_file_read_full(apr_file_t *thefile, void *buf, - apr_size_t nbytes, - apr_size_t *bytes_read) +APR_DECLARE(fspr_status_t) fspr_file_read_full(fspr_file_t *thefile, void *buf, + fspr_size_t nbytes, + fspr_size_t *bytes_read) { - apr_status_t status; - apr_size_t total_read = 0; + fspr_status_t status; + fspr_size_t total_read = 0; do { - apr_size_t amt = nbytes; + fspr_size_t amt = nbytes; - status = apr_file_read(thefile, buf, &amt); + status = fspr_file_read(thefile, buf, &amt); buf = (char *)buf + amt; nbytes -= amt; total_read += amt; @@ -39,18 +39,18 @@ APR_DECLARE(apr_status_t) apr_file_read_full(apr_file_t *thefile, void *buf, return status; } -APR_DECLARE(apr_status_t) apr_file_write_full(apr_file_t *thefile, +APR_DECLARE(fspr_status_t) fspr_file_write_full(fspr_file_t *thefile, const void *buf, - apr_size_t nbytes, - apr_size_t *bytes_written) + fspr_size_t nbytes, + fspr_size_t *bytes_written) { - apr_status_t status; - apr_size_t total_written = 0; + fspr_status_t status; + fspr_size_t total_written = 0; do { - apr_size_t amt = nbytes; + fspr_size_t amt = nbytes; - status = apr_file_write(thefile, buf, &amt); + status = fspr_file_write(thefile, buf, &amt); buf = (char *)buf + amt; nbytes -= amt; total_written += amt; @@ -62,18 +62,18 @@ APR_DECLARE(apr_status_t) apr_file_write_full(apr_file_t *thefile, return status; } -APR_DECLARE(apr_status_t) apr_file_writev_full(apr_file_t *thefile, +APR_DECLARE(fspr_status_t) fspr_file_writev_full(fspr_file_t *thefile, const struct iovec *vec, - apr_size_t nvec, - apr_size_t *bytes_written) + fspr_size_t nvec, + fspr_size_t *bytes_written) { - apr_status_t rv = APR_SUCCESS; - apr_size_t i; - apr_size_t amt = 0; - apr_size_t total = 0; + fspr_status_t rv = APR_SUCCESS; + fspr_size_t i; + fspr_size_t amt = 0; + fspr_size_t total = 0; for (i = 0; i < nvec && rv == APR_SUCCESS; i++) { - rv = apr_file_write_full(thefile, vec[i].iov_base, + rv = fspr_file_write_full(thefile, vec[i].iov_base, vec[i].iov_len, &amt); total += amt; } diff --git a/libs/apr/file_io/unix/mktemp.c b/libs/apr/file_io/unix/mktemp.c index 73c61dcfce4..2ea22e01b92 100644 --- a/libs/apr/file_io/unix/mktemp.c +++ b/libs/apr/file_io/unix/mktemp.c @@ -46,11 +46,11 @@ * SUCH DAMAGE. */ -#include "apr_private.h" -#include "apr_file_io.h" /* prototype of apr_mkstemp() */ -#include "apr_strings.h" /* prototype of apr_mkstemp() */ -#include "apr_arch_file_io.h" /* prototype of apr_mkstemp() */ -#include "apr_portable.h" /* for apr_os_file_put() */ +#include "fspr_private.h" +#include "fspr_file_io.h" /* prototype of fspr_mkstemp() */ +#include "fspr_strings.h" /* prototype of fspr_mkstemp() */ +#include "fspr_arch_file_io.h" /* prototype of fspr_mkstemp() */ +#include "fspr_portable.h" /* for fspr_os_file_put() */ #ifndef HAVE_MKSTEMP @@ -89,18 +89,18 @@ static const unsigned char padchar[] = "0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz"; -static apr_uint32_t randseed=0; +static fspr_uint32_t randseed=0; -static int gettemp(char *path, apr_file_t **doopen, apr_int32_t flags, apr_pool_t *p) +static int gettemp(char *path, fspr_file_t **doopen, fspr_int32_t flags, fspr_pool_t *p) { register char *start, *trv, *suffp; char *pad; - apr_finfo_t sbuf; - apr_status_t rv; - apr_uint32_t randnum; + fspr_finfo_t sbuf; + fspr_status_t rv; + fspr_uint32_t randnum; if (randseed==0) { - randseed = (int)apr_time_now(); + randseed = (int)fspr_time_now(); seedrandom(randseed); } @@ -127,7 +127,7 @@ static int gettemp(char *path, apr_file_t **doopen, apr_int32_t flags, apr_pool_ break; if (*trv == '/') { *trv = '\0'; - rv = apr_stat(&sbuf, path, APR_FINFO_TYPE, p); + rv = fspr_stat(&sbuf, path, APR_FINFO_TYPE, p); *trv = '/'; if (rv != APR_SUCCESS) return rv; @@ -139,7 +139,7 @@ static int gettemp(char *path, apr_file_t **doopen, apr_int32_t flags, apr_pool_ } for (;;) { - if ((rv = apr_file_open(doopen, path, flags, + if ((rv = fspr_file_open(doopen, path, flags, APR_UREAD | APR_UWRITE, p)) == APR_SUCCESS) return APR_SUCCESS; if (!APR_STATUS_IS_EEXIST(rv)) @@ -172,7 +172,7 @@ static int gettemp(char *path, apr_file_t **doopen, apr_int32_t flags, apr_pool_ #endif #endif /* !defined(HAVE_MKSTEMP) */ -APR_DECLARE(apr_status_t) apr_file_mktemp(apr_file_t **fp, char *template, apr_int32_t flags, apr_pool_t *p) +APR_DECLARE(fspr_status_t) fspr_file_mktemp(fspr_file_t **fp, char *template, fspr_int32_t flags, fspr_pool_t *p) { #ifdef HAVE_MKSTEMP int fd; @@ -197,13 +197,13 @@ APR_DECLARE(apr_status_t) apr_file_mktemp(apr_file_t **fp, char *template, apr_i * * We either have to unset the flags, or fix up the fd and other * xthread and inherit bits appropriately. Since gettemp() above - * calls apr_file_open, our flags are respected in that code path. + * calls fspr_file_open, our flags are respected in that code path. */ - apr_os_file_put(fp, &fd, flags, p); - (*fp)->fname = apr_pstrdup(p, template); + fspr_os_file_put(fp, &fd, flags, p); + (*fp)->fname = fspr_pstrdup(p, template); - apr_pool_cleanup_register((*fp)->pool, (void *)(*fp), - apr_unix_file_cleanup, apr_unix_file_cleanup); + fspr_pool_cleanup_register((*fp)->pool, (void *)(*fp), + fspr_unix_file_cleanup, fspr_unix_file_cleanup); #endif return APR_SUCCESS; } diff --git a/libs/apr/file_io/unix/open.c b/libs/apr/file_io/unix/open.c index ef3b9670ef2..c2b9cd1c54f 100644 --- a/libs/apr/file_io/unix/open.c +++ b/libs/apr/file_io/unix/open.c @@ -14,25 +14,25 @@ * limitations under the License. */ -#include "apr_arch_file_io.h" -#include "apr_strings.h" -#include "apr_portable.h" -#include "apr_thread_mutex.h" -#include "apr_arch_inherit.h" +#include "fspr_arch_file_io.h" +#include "fspr_strings.h" +#include "fspr_portable.h" +#include "fspr_thread_mutex.h" +#include "fspr_arch_inherit.h" #ifdef NETWARE #include "nks/dirio.h" -#include "apr_hash.h" +#include "fspr_hash.h" #include "fsio.h" #endif -apr_status_t apr_unix_file_cleanup(void *thefile) +fspr_status_t fspr_unix_file_cleanup(void *thefile) { - apr_file_t *file = thefile; - apr_status_t flush_rv = APR_SUCCESS, rv = APR_SUCCESS; + fspr_file_t *file = thefile; + fspr_status_t flush_rv = APR_SUCCESS, rv = APR_SUCCESS; if (file->buffered) { - flush_rv = apr_file_flush(file); + flush_rv = fspr_file_flush(file); } if (close(file->filedes) == 0) { file->filedes = -1; @@ -41,7 +41,7 @@ apr_status_t apr_unix_file_cleanup(void *thefile) } #if APR_HAS_THREADS if (file->thlock) { - rv = apr_thread_mutex_destroy(file->thlock); + rv = fspr_thread_mutex_destroy(file->thlock); } #endif } @@ -51,9 +51,9 @@ apr_status_t apr_unix_file_cleanup(void *thefile) } #ifndef WAITIO_USES_POLL if (file->pollset != NULL) { - int pollset_rv = apr_pollset_destroy(file->pollset); + int pollset_rv = fspr_pollset_destroy(file->pollset); /* If the file close failed, return its error value, - * not apr_pollset_destroy()'s. + * not fspr_pollset_destroy()'s. */ if (rv == APR_SUCCESS) { rv = pollset_rv; @@ -63,17 +63,17 @@ apr_status_t apr_unix_file_cleanup(void *thefile) return rv != APR_SUCCESS ? rv : flush_rv; } -APR_DECLARE(apr_status_t) apr_file_open(apr_file_t **new, +APR_DECLARE(fspr_status_t) fspr_file_open(fspr_file_t **new, const char *fname, - apr_int32_t flag, - apr_fileperms_t perm, - apr_pool_t *pool) + fspr_int32_t flag, + fspr_fileperms_t perm, + fspr_pool_t *pool) { - apr_os_file_t fd; + fspr_os_file_t fd; int oflags = 0; #if APR_HAS_THREADS - apr_thread_mutex_t *thlock; - apr_status_t rv; + fspr_thread_mutex_t *thlock; + fspr_status_t rv; #endif if ((flag & APR_READ) && (flag & APR_WRITE)) { @@ -121,7 +121,7 @@ APR_DECLARE(apr_status_t) apr_file_open(apr_file_t **new, #if APR_HAS_THREADS if ((flag & APR_BUFFERED) && (flag & APR_XTHREAD)) { - rv = apr_thread_mutex_create(&thlock, + rv = fspr_thread_mutex_create(&thlock, APR_THREAD_MUTEX_DEFAULT, pool); if (rv) { return rv; @@ -133,24 +133,24 @@ APR_DECLARE(apr_status_t) apr_file_open(apr_file_t **new, fd = open(fname, oflags, 0666); } else { - fd = open(fname, oflags, apr_unix_perms2mode(perm)); + fd = open(fname, oflags, fspr_unix_perms2mode(perm)); } if (fd < 0) { return errno; } - (*new) = (apr_file_t *)apr_pcalloc(pool, sizeof(apr_file_t)); + (*new) = (fspr_file_t *)fspr_pcalloc(pool, sizeof(fspr_file_t)); (*new)->pool = pool; (*new)->flags = flag; (*new)->filedes = fd; - (*new)->fname = apr_pstrdup(pool, fname); + (*new)->fname = fspr_pstrdup(pool, fname); (*new)->blocking = BLK_ON; (*new)->buffered = (flag & APR_BUFFERED) > 0; if ((*new)->buffered) { - (*new)->buffer = apr_palloc(pool, APR_FILE_BUFSIZE); + (*new)->buffer = fspr_palloc(pool, APR_FILE_BUFSIZE); #if APR_HAS_THREADS if ((*new)->flags & APR_XTHREAD) { (*new)->thlock = thlock; @@ -170,25 +170,25 @@ APR_DECLARE(apr_status_t) apr_file_open(apr_file_t **new, (*new)->dataRead = 0; (*new)->direction = 0; #ifndef WAITIO_USES_POLL - /* Start out with no pollset. apr_wait_for_io_or_timeout() will + /* Start out with no pollset. fspr_wait_for_io_or_timeout() will * initialize the pollset if needed. */ (*new)->pollset = NULL; #endif if (!(flag & APR_FILE_NOCLEANUP)) { - apr_pool_cleanup_register((*new)->pool, (void *)(*new), - apr_unix_file_cleanup, - apr_unix_file_cleanup); + fspr_pool_cleanup_register((*new)->pool, (void *)(*new), + fspr_unix_file_cleanup, + fspr_unix_file_cleanup); } return APR_SUCCESS; } -APR_DECLARE(apr_status_t) apr_file_close(apr_file_t *file) +APR_DECLARE(fspr_status_t) fspr_file_close(fspr_file_t *file) { - return apr_pool_cleanup_run(file->pool, file, apr_unix_file_cleanup); + return fspr_pool_cleanup_run(file->pool, file, fspr_unix_file_cleanup); } -APR_DECLARE(apr_status_t) apr_file_remove(const char *path, apr_pool_t *pool) +APR_DECLARE(fspr_status_t) fspr_file_remove(const char *path, fspr_pool_t *pool) { if (unlink(path) == 0) { return APR_SUCCESS; @@ -198,9 +198,9 @@ APR_DECLARE(apr_status_t) apr_file_remove(const char *path, apr_pool_t *pool) } } -APR_DECLARE(apr_status_t) apr_file_rename(const char *from_path, +APR_DECLARE(fspr_status_t) fspr_file_rename(const char *from_path, const char *to_path, - apr_pool_t *p) + fspr_pool_t *p) { if (rename(from_path, to_path) != 0) { return errno; @@ -208,20 +208,20 @@ APR_DECLARE(apr_status_t) apr_file_rename(const char *from_path, return APR_SUCCESS; } -APR_DECLARE(apr_status_t) apr_os_file_get(apr_os_file_t *thefile, - apr_file_t *file) +APR_DECLARE(fspr_status_t) fspr_os_file_get(fspr_os_file_t *thefile, + fspr_file_t *file) { *thefile = file->filedes; return APR_SUCCESS; } -APR_DECLARE(apr_status_t) apr_os_file_put(apr_file_t **file, - apr_os_file_t *thefile, - apr_int32_t flags, apr_pool_t *pool) +APR_DECLARE(fspr_status_t) fspr_os_file_put(fspr_file_t **file, + fspr_os_file_t *thefile, + fspr_int32_t flags, fspr_pool_t *pool) { int *dafile = thefile; - (*file) = apr_pcalloc(pool, sizeof(apr_file_t)); + (*file) = fspr_pcalloc(pool, sizeof(fspr_file_t)); (*file)->pool = pool; (*file)->eof_hit = 0; (*file)->blocking = BLK_UNKNOWN; /* in case it is a pipe */ @@ -232,18 +232,18 @@ APR_DECLARE(apr_status_t) apr_os_file_put(apr_file_t **file, (*file)->buffered = (flags & APR_BUFFERED) > 0; #ifndef WAITIO_USES_POLL - /* Start out with no pollset. apr_wait_for_io_or_timeout() will + /* Start out with no pollset. fspr_wait_for_io_or_timeout() will * initialize the pollset if needed. */ (*file)->pollset = NULL; #endif if ((*file)->buffered) { - (*file)->buffer = apr_palloc(pool, APR_FILE_BUFSIZE); + (*file)->buffer = fspr_palloc(pool, APR_FILE_BUFSIZE); #if APR_HAS_THREADS if ((*file)->flags & APR_XTHREAD) { - apr_status_t rv; - rv = apr_thread_mutex_create(&((*file)->thlock), + fspr_status_t rv; + rv = fspr_thread_mutex_create(&((*file)->thlock), APR_THREAD_MUTEX_DEFAULT, pool); if (rv) { return rv; @@ -254,7 +254,7 @@ APR_DECLARE(apr_status_t) apr_os_file_put(apr_file_t **file, return APR_SUCCESS; } -APR_DECLARE(apr_status_t) apr_file_eof(apr_file_t *fptr) +APR_DECLARE(fspr_status_t) fspr_file_eof(fspr_file_t *fptr) { if (fptr->eof_hit == 1) { return APR_EOF; @@ -262,32 +262,32 @@ APR_DECLARE(apr_status_t) apr_file_eof(apr_file_t *fptr) return APR_SUCCESS; } -APR_DECLARE(apr_status_t) apr_file_open_stderr(apr_file_t **thefile, - apr_pool_t *pool) +APR_DECLARE(fspr_status_t) fspr_file_open_stderr(fspr_file_t **thefile, + fspr_pool_t *pool) { int fd = STDERR_FILENO; - return apr_os_file_put(thefile, &fd, 0, pool); + return fspr_os_file_put(thefile, &fd, 0, pool); } -APR_DECLARE(apr_status_t) apr_file_open_stdout(apr_file_t **thefile, - apr_pool_t *pool) +APR_DECLARE(fspr_status_t) fspr_file_open_stdout(fspr_file_t **thefile, + fspr_pool_t *pool) { int fd = STDOUT_FILENO; - return apr_os_file_put(thefile, &fd, 0, pool); + return fspr_os_file_put(thefile, &fd, 0, pool); } -APR_DECLARE(apr_status_t) apr_file_open_stdin(apr_file_t **thefile, - apr_pool_t *pool) +APR_DECLARE(fspr_status_t) fspr_file_open_stdin(fspr_file_t **thefile, + fspr_pool_t *pool) { int fd = STDIN_FILENO; - return apr_os_file_put(thefile, &fd, 0, pool); + return fspr_os_file_put(thefile, &fd, 0, pool); } -APR_IMPLEMENT_INHERIT_SET(file, flags, pool, apr_unix_file_cleanup) +APR_IMPLEMENT_INHERIT_SET(file, flags, pool, fspr_unix_file_cleanup) -APR_IMPLEMENT_INHERIT_UNSET(file, flags, pool, apr_unix_file_cleanup) +APR_IMPLEMENT_INHERIT_UNSET(file, flags, pool, fspr_unix_file_cleanup) APR_POOL_IMPLEMENT_ACCESSOR(file) diff --git a/libs/apr/file_io/unix/pipe.c b/libs/apr/file_io/unix/pipe.c index 5411f5d4078..66086fbbf09 100644 --- a/libs/apr/file_io/unix/pipe.c +++ b/libs/apr/file_io/unix/pipe.c @@ -14,11 +14,11 @@ * limitations under the License. */ -#include "apr_arch_file_io.h" -#include "apr_strings.h" -#include "apr_portable.h" +#include "fspr_arch_file_io.h" +#include "fspr_strings.h" +#include "fspr_portable.h" -#include "apr_arch_inherit.h" +#include "fspr_arch_inherit.h" /* Figure out how to get pipe block/nonblock on BeOS... * Basically, BONE7 changed things again so that ioctl didn't work, @@ -33,7 +33,7 @@ #endif #endif -static apr_status_t pipeblock(apr_file_t *thepipe) +static fspr_status_t pipeblock(fspr_file_t *thepipe) { #if !BEOS_BLOCKING int fd_flags; @@ -69,7 +69,7 @@ static apr_status_t pipeblock(apr_file_t *thepipe) return APR_SUCCESS; } -static apr_status_t pipenonblock(apr_file_t *thepipe) +static fspr_status_t pipenonblock(fspr_file_t *thepipe) { #if !BEOS_BLOCKING int fd_flags = fcntl(thepipe->filedes, F_GETFL, 0); @@ -105,7 +105,7 @@ static apr_status_t pipenonblock(apr_file_t *thepipe) return APR_SUCCESS; } -APR_DECLARE(apr_status_t) apr_file_pipe_timeout_set(apr_file_t *thepipe, apr_interval_time_t timeout) +APR_DECLARE(fspr_status_t) fspr_file_pipe_timeout_set(fspr_file_t *thepipe, fspr_interval_time_t timeout) { if (thepipe->is_pipe == 1) { thepipe->timeout = timeout; @@ -124,7 +124,7 @@ APR_DECLARE(apr_status_t) apr_file_pipe_timeout_set(apr_file_t *thepipe, apr_int return APR_EINVAL; } -APR_DECLARE(apr_status_t) apr_file_pipe_timeout_get(apr_file_t *thepipe, apr_interval_time_t *timeout) +APR_DECLARE(fspr_status_t) fspr_file_pipe_timeout_get(fspr_file_t *thepipe, fspr_interval_time_t *timeout) { if (thepipe->is_pipe == 1) { *timeout = thepipe->timeout; @@ -133,14 +133,14 @@ APR_DECLARE(apr_status_t) apr_file_pipe_timeout_get(apr_file_t *thepipe, apr_int return APR_EINVAL; } -APR_DECLARE(apr_status_t) apr_os_pipe_put_ex(apr_file_t **file, - apr_os_file_t *thefile, +APR_DECLARE(fspr_status_t) fspr_os_pipe_put_ex(fspr_file_t **file, + fspr_os_file_t *thefile, int register_cleanup, - apr_pool_t *pool) + fspr_pool_t *pool) { int *dafile = thefile; - (*file) = apr_pcalloc(pool, sizeof(apr_file_t)); + (*file) = fspr_pcalloc(pool, sizeof(fspr_file_t)); (*file)->pool = pool; (*file)->eof_hit = 0; (*file)->is_pipe = 1; @@ -156,12 +156,12 @@ APR_DECLARE(apr_status_t) apr_os_pipe_put_ex(apr_file_t **file, (*file)->thlock = NULL; #endif if (register_cleanup) { - apr_pool_cleanup_register((*file)->pool, (void *)(*file), - apr_unix_file_cleanup, - apr_pool_cleanup_null); + fspr_pool_cleanup_register((*file)->pool, (void *)(*file), + fspr_unix_file_cleanup, + fspr_pool_cleanup_null); } #ifndef WAITIO_USES_POLL - /* Start out with no pollset. apr_wait_for_io_or_timeout() will + /* Start out with no pollset. fspr_wait_for_io_or_timeout() will * initialize the pollset if needed. */ (*file)->pollset = NULL; @@ -169,14 +169,14 @@ APR_DECLARE(apr_status_t) apr_os_pipe_put_ex(apr_file_t **file, return APR_SUCCESS; } -APR_DECLARE(apr_status_t) apr_os_pipe_put(apr_file_t **file, - apr_os_file_t *thefile, - apr_pool_t *pool) +APR_DECLARE(fspr_status_t) fspr_os_pipe_put(fspr_file_t **file, + fspr_os_file_t *thefile, + fspr_pool_t *pool) { - return apr_os_pipe_put_ex(file, thefile, 0, pool); + return fspr_os_pipe_put_ex(file, thefile, 0, pool); } -APR_DECLARE(apr_status_t) apr_file_pipe_create(apr_file_t **in, apr_file_t **out, apr_pool_t *pool) +APR_DECLARE(fspr_status_t) fspr_file_pipe_create(fspr_file_t **in, fspr_file_t **out, fspr_pool_t *pool) { int filedes[2]; @@ -184,7 +184,7 @@ APR_DECLARE(apr_status_t) apr_file_pipe_create(apr_file_t **in, apr_file_t **out return errno; } - (*in) = (apr_file_t *)apr_pcalloc(pool, sizeof(apr_file_t)); + (*in) = (fspr_file_t *)fspr_pcalloc(pool, sizeof(fspr_file_t)); (*in)->pool = pool; (*in)->filedes = filedes[0]; (*in)->is_pipe = 1; @@ -200,7 +200,7 @@ APR_DECLARE(apr_status_t) apr_file_pipe_create(apr_file_t **in, apr_file_t **out #ifndef WAITIO_USES_POLL (*in)->pollset = NULL; #endif - (*out) = (apr_file_t *)apr_pcalloc(pool, sizeof(apr_file_t)); + (*out) = (fspr_file_t *)fspr_pcalloc(pool, sizeof(fspr_file_t)); (*out)->pool = pool; (*out)->filedes = filedes[1]; (*out)->is_pipe = 1; @@ -215,17 +215,17 @@ APR_DECLARE(apr_status_t) apr_file_pipe_create(apr_file_t **in, apr_file_t **out #ifndef WAITIO_USES_POLL (*out)->pollset = NULL; #endif - apr_pool_cleanup_register((*in)->pool, (void *)(*in), apr_unix_file_cleanup, - apr_pool_cleanup_null); - apr_pool_cleanup_register((*out)->pool, (void *)(*out), apr_unix_file_cleanup, - apr_pool_cleanup_null); + fspr_pool_cleanup_register((*in)->pool, (void *)(*in), fspr_unix_file_cleanup, + fspr_pool_cleanup_null); + fspr_pool_cleanup_register((*out)->pool, (void *)(*out), fspr_unix_file_cleanup, + fspr_pool_cleanup_null); return APR_SUCCESS; } -APR_DECLARE(apr_status_t) apr_file_namedpipe_create(const char *filename, - apr_fileperms_t perm, apr_pool_t *pool) +APR_DECLARE(fspr_status_t) fspr_file_namedpipe_create(const char *filename, + fspr_fileperms_t perm, fspr_pool_t *pool) { - mode_t mode = apr_unix_perms2mode(perm); + mode_t mode = fspr_unix_perms2mode(perm); if (mkfifo(filename, mode) == -1) { return errno; diff --git a/libs/apr/file_io/unix/readwrite.c b/libs/apr/file_io/unix/readwrite.c index 1721582ba8e..2006b6f2742 100644 --- a/libs/apr/file_io/unix/readwrite.c +++ b/libs/apr/file_io/unix/readwrite.c @@ -14,10 +14,10 @@ * limitations under the License. */ -#include "apr_arch_file_io.h" -#include "apr_strings.h" -#include "apr_thread_mutex.h" -#include "apr_support.h" +#include "fspr_arch_file_io.h" +#include "fspr_strings.h" +#include "fspr_thread_mutex.h" +#include "fspr_support.h" /* The only case where we don't use wait_for_io_or_timeout is on * pre-BONE BeOS, so this check should be sufficient and simpler */ @@ -25,10 +25,10 @@ #define USE_WAIT_FOR_IO #endif -APR_DECLARE(apr_status_t) apr_file_read(apr_file_t *thefile, void *buf, apr_size_t *nbytes) +APR_DECLARE(fspr_status_t) fspr_file_read(fspr_file_t *thefile, void *buf, fspr_size_t *nbytes) { - apr_ssize_t rv; - apr_size_t bytes_read; + fspr_ssize_t rv; + fspr_size_t bytes_read; if (*nbytes <= 0) { *nbytes = 0; @@ -37,21 +37,21 @@ APR_DECLARE(apr_status_t) apr_file_read(apr_file_t *thefile, void *buf, apr_size if (thefile->buffered) { char *pos = (char *)buf; - apr_uint64_t blocksize; - apr_uint64_t size = *nbytes; + fspr_uint64_t blocksize; + fspr_uint64_t size = *nbytes; #if APR_HAS_THREADS if (thefile->thlock) { - apr_thread_mutex_lock(thefile->thlock); + fspr_thread_mutex_lock(thefile->thlock); } #endif if (thefile->direction == 1) { - rv = apr_file_flush(thefile); + rv = fspr_file_flush(thefile); if (rv) { #if APR_HAS_THREADS if (thefile->thlock) { - apr_thread_mutex_unlock(thefile->thlock); + fspr_thread_mutex_unlock(thefile->thlock); } #endif return rv; @@ -98,7 +98,7 @@ APR_DECLARE(apr_status_t) apr_file_read(apr_file_t *thefile, void *buf, apr_size } #if APR_HAS_THREADS if (thefile->thlock) { - apr_thread_mutex_unlock(thefile->thlock); + fspr_thread_mutex_unlock(thefile->thlock); } #endif return rv; @@ -124,7 +124,7 @@ APR_DECLARE(apr_status_t) apr_file_read(apr_file_t *thefile, void *buf, apr_size if (rv == -1 && (errno == EAGAIN || errno == EWOULDBLOCK) && thefile->timeout != 0) { - apr_status_t arv = apr_wait_for_io_or_timeout(thefile, NULL, 1); + fspr_status_t arv = fspr_wait_for_io_or_timeout(thefile, NULL, 1); if (arv != APR_SUCCESS) { *nbytes = bytes_read; return arv; @@ -149,9 +149,9 @@ APR_DECLARE(apr_status_t) apr_file_read(apr_file_t *thefile, void *buf, apr_size } } -APR_DECLARE(apr_status_t) apr_file_write(apr_file_t *thefile, const void *buf, apr_size_t *nbytes) +APR_DECLARE(fspr_status_t) fspr_file_write(fspr_file_t *thefile, const void *buf, fspr_size_t *nbytes) { - apr_size_t rv; + fspr_size_t rv; if (thefile->buffered) { char *pos = (char *)buf; @@ -160,7 +160,7 @@ APR_DECLARE(apr_status_t) apr_file_write(apr_file_t *thefile, const void *buf, a #if APR_HAS_THREADS if (thefile->thlock) { - apr_thread_mutex_lock(thefile->thlock); + fspr_thread_mutex_lock(thefile->thlock); } #endif @@ -168,7 +168,7 @@ APR_DECLARE(apr_status_t) apr_file_write(apr_file_t *thefile, const void *buf, a /* Position file pointer for writing at the offset we are * logically reading from */ - apr_int64_t offset = thefile->filePtr - thefile->dataRead + thefile->bufpos; + fspr_int64_t offset = thefile->filePtr - thefile->dataRead + thefile->bufpos; if (offset != thefile->filePtr) lseek(thefile->filedes, offset, SEEK_SET); thefile->bufpos = thefile->dataRead = 0; @@ -178,7 +178,7 @@ APR_DECLARE(apr_status_t) apr_file_write(apr_file_t *thefile, const void *buf, a rv = 0; while (rv == 0 && size > 0) { if (thefile->bufpos == APR_FILE_BUFSIZE) /* write buffer is full*/ - rv = apr_file_flush(thefile); + rv = fspr_file_flush(thefile); blocksize = size > APR_FILE_BUFSIZE - thefile->bufpos ? APR_FILE_BUFSIZE - thefile->bufpos : size; @@ -190,7 +190,7 @@ APR_DECLARE(apr_status_t) apr_file_write(apr_file_t *thefile, const void *buf, a #if APR_HAS_THREADS if (thefile->thlock) { - apr_thread_mutex_unlock(thefile->thlock); + fspr_thread_mutex_unlock(thefile->thlock); } #endif return rv; @@ -198,12 +198,12 @@ APR_DECLARE(apr_status_t) apr_file_write(apr_file_t *thefile, const void *buf, a else { do { rv = write(thefile->filedes, buf, *nbytes); - } while (rv == (apr_size_t)-1 && errno == EINTR); + } while (rv == (fspr_size_t)-1 && errno == EINTR); #ifdef USE_WAIT_FOR_IO - if (rv == (apr_size_t)-1 && + if (rv == (fspr_size_t)-1 && (errno == EAGAIN || errno == EWOULDBLOCK) && thefile->timeout != 0) { - apr_status_t arv = apr_wait_for_io_or_timeout(thefile, NULL, 0); + fspr_status_t arv = fspr_wait_for_io_or_timeout(thefile, NULL, 0); if (arv != APR_SUCCESS) { *nbytes = 0; return arv; @@ -212,8 +212,8 @@ APR_DECLARE(apr_status_t) apr_file_write(apr_file_t *thefile, const void *buf, a do { do { rv = write(thefile->filedes, buf, *nbytes); - } while (rv == (apr_size_t)-1 && errno == EINTR); - if (rv == (apr_size_t)-1 && + } while (rv == (fspr_size_t)-1 && errno == EINTR); + if (rv == (fspr_size_t)-1 && (errno == EAGAIN || errno == EWOULDBLOCK)) { *nbytes /= 2; /* yes, we'll loop if kernel lied * and we can't even write 1 byte @@ -226,7 +226,7 @@ APR_DECLARE(apr_status_t) apr_file_write(apr_file_t *thefile, const void *buf, a } } #endif - if (rv == (apr_size_t)-1) { + if (rv == (fspr_size_t)-1) { (*nbytes) = 0; return errno; } @@ -235,8 +235,8 @@ APR_DECLARE(apr_status_t) apr_file_write(apr_file_t *thefile, const void *buf, a } } -APR_DECLARE(apr_status_t) apr_file_writev(apr_file_t *thefile, const struct iovec *vec, - apr_size_t nvec, apr_size_t *nbytes) +APR_DECLARE(fspr_status_t) fspr_file_writev(fspr_file_t *thefile, const struct iovec *vec, + fspr_size_t nvec, fspr_size_t *nbytes) { #ifdef HAVE_WRITEV int bytes; @@ -261,49 +261,49 @@ APR_DECLARE(apr_status_t) apr_file_writev(apr_file_t *thefile, const struct iove * The only reasonable option, that maintains the semantics of a real * writev(), is to only write the first iovec. Callers of file_writev() * must deal with partial writes as they normally would. If you want to - * ensure an entire iovec is written, use apr_file_writev_full(). + * ensure an entire iovec is written, use fspr_file_writev_full(). */ *nbytes = vec[0].iov_len; - return apr_file_write(thefile, vec[0].iov_base, nbytes); + return fspr_file_write(thefile, vec[0].iov_base, nbytes); #endif } -APR_DECLARE(apr_status_t) apr_file_putc(char ch, apr_file_t *thefile) +APR_DECLARE(fspr_status_t) fspr_file_putc(char ch, fspr_file_t *thefile) { - apr_size_t nbytes = 1; + fspr_size_t nbytes = 1; - return apr_file_write(thefile, &ch, &nbytes); + return fspr_file_write(thefile, &ch, &nbytes); } -APR_DECLARE(apr_status_t) apr_file_ungetc(char ch, apr_file_t *thefile) +APR_DECLARE(fspr_status_t) fspr_file_ungetc(char ch, fspr_file_t *thefile) { thefile->ungetchar = (unsigned char)ch; return APR_SUCCESS; } -APR_DECLARE(apr_status_t) apr_file_getc(char *ch, apr_file_t *thefile) +APR_DECLARE(fspr_status_t) fspr_file_getc(char *ch, fspr_file_t *thefile) { - apr_size_t nbytes = 1; + fspr_size_t nbytes = 1; - return apr_file_read(thefile, ch, &nbytes); + return fspr_file_read(thefile, ch, &nbytes); } -APR_DECLARE(apr_status_t) apr_file_puts(const char *str, apr_file_t *thefile) +APR_DECLARE(fspr_status_t) fspr_file_puts(const char *str, fspr_file_t *thefile) { - return apr_file_write_full(thefile, str, strlen(str), NULL); + return fspr_file_write_full(thefile, str, strlen(str), NULL); } -APR_DECLARE(apr_status_t) apr_file_flush(apr_file_t *thefile) +APR_DECLARE(fspr_status_t) fspr_file_flush(fspr_file_t *thefile) { if (thefile->buffered) { - apr_int64_t written = 0; + fspr_int64_t written = 0; if (thefile->direction == 1 && thefile->bufpos) { do { written = write(thefile->filedes, thefile->buffer, thefile->bufpos); - } while (written == (apr_int64_t)-1 && errno == EINTR); - if (written == (apr_int64_t)-1) { + } while (written == (fspr_int64_t)-1 && errno == EINTR); + if (written == (fspr_int64_t)-1) { return errno; } thefile->filePtr += written; @@ -316,10 +316,10 @@ APR_DECLARE(apr_status_t) apr_file_flush(apr_file_t *thefile) return APR_SUCCESS; } -APR_DECLARE(apr_status_t) apr_file_gets(char *str, int len, apr_file_t *thefile) +APR_DECLARE(fspr_status_t) fspr_file_gets(char *str, int len, fspr_file_t *thefile) { - apr_status_t rv = APR_SUCCESS; /* get rid of gcc warning */ - apr_size_t nbytes; + fspr_status_t rv = APR_SUCCESS; /* get rid of gcc warning */ + fspr_size_t nbytes; const char *str_start = str; char *final = str + len - 1; @@ -330,22 +330,22 @@ APR_DECLARE(apr_status_t) apr_file_gets(char *str, int len, apr_file_t *thefile) } /* If we have an underlying buffer, we can be *much* more efficient - * and skip over the apr_file_read calls. + * and skip over the fspr_file_read calls. */ if (thefile->buffered) { #if APR_HAS_THREADS if (thefile->thlock) { - apr_thread_mutex_lock(thefile->thlock); + fspr_thread_mutex_lock(thefile->thlock); } #endif if (thefile->direction == 1) { - rv = apr_file_flush(thefile); + rv = fspr_file_flush(thefile); if (rv) { #if APR_HAS_THREADS if (thefile->thlock) { - apr_thread_mutex_unlock(thefile->thlock); + fspr_thread_mutex_unlock(thefile->thlock); } #endif return rv; @@ -357,14 +357,14 @@ APR_DECLARE(apr_status_t) apr_file_gets(char *str, int len, apr_file_t *thefile) } while (str < final) { /* leave room for trailing '\0' */ - /* Force ungetc leftover to call apr_file_read. */ + /* Force ungetc leftover to call fspr_file_read. */ if (thefile->bufpos < thefile->dataRead && thefile->ungetchar == -1) { *str = thefile->buffer[thefile->bufpos++]; } else { nbytes = 1; - rv = apr_file_read(thefile, str, &nbytes); + rv = fspr_file_read(thefile, str, &nbytes); if (rv != APR_SUCCESS) { break; } @@ -378,14 +378,14 @@ APR_DECLARE(apr_status_t) apr_file_gets(char *str, int len, apr_file_t *thefile) #if APR_HAS_THREADS if (thefile->thlock) { - apr_thread_mutex_unlock(thefile->thlock); + fspr_thread_mutex_unlock(thefile->thlock); } #endif } else { while (str < final) { /* leave room for trailing '\0' */ nbytes = 1; - rv = apr_file_read(thefile, str, &nbytes); + rv = fspr_file_read(thefile, str, &nbytes); if (rv != APR_SUCCESS) { break; } @@ -410,17 +410,17 @@ APR_DECLARE(apr_status_t) apr_file_gets(char *str, int len, apr_file_t *thefile) return rv; } -struct apr_file_printf_data { - apr_vformatter_buff_t vbuff; - apr_file_t *fptr; +struct fspr_file_printf_data { + fspr_vformatter_buff_t vbuff; + fspr_file_t *fptr; char *buf; }; -static int file_printf_flush(apr_vformatter_buff_t *buff) +static int file_printf_flush(fspr_vformatter_buff_t *buff) { - struct apr_file_printf_data *data = (struct apr_file_printf_data *)buff; + struct fspr_file_printf_data *data = (struct fspr_file_printf_data *)buff; - if (apr_file_write_full(data->fptr, data->buf, + if (fspr_file_write_full(data->fptr, data->buf, data->vbuff.curpos - data->buf, NULL)) { return -1; } @@ -429,10 +429,10 @@ static int file_printf_flush(apr_vformatter_buff_t *buff) return 0; } -APR_DECLARE_NONSTD(int) apr_file_printf(apr_file_t *fptr, +APR_DECLARE_NONSTD(int) fspr_file_printf(fspr_file_t *fptr, const char *format, ...) { - struct apr_file_printf_data data; + struct fspr_file_printf_data data; va_list ap; int count; @@ -445,10 +445,10 @@ APR_DECLARE_NONSTD(int) apr_file_printf(apr_file_t *fptr, data.vbuff.endpos = data.buf + HUGE_STRING_LEN; data.fptr = fptr; va_start(ap, format); - count = apr_vformatter(file_printf_flush, - (apr_vformatter_buff_t *)&data, format, ap); - /* apr_vformatter does not call flush for the last bits */ - if (count >= 0) file_printf_flush((apr_vformatter_buff_t *)&data); + count = fspr_vformatter(file_printf_flush, + (fspr_vformatter_buff_t *)&data, format, ap); + /* fspr_vformatter does not call flush for the last bits */ + if (count >= 0) file_printf_flush((fspr_vformatter_buff_t *)&data); va_end(ap); diff --git a/libs/apr/file_io/unix/seek.c b/libs/apr/file_io/unix/seek.c index d1fe484627f..c477d86e93a 100644 --- a/libs/apr/file_io/unix/seek.c +++ b/libs/apr/file_io/unix/seek.c @@ -14,15 +14,15 @@ * limitations under the License. */ -#include "apr_arch_file_io.h" +#include "fspr_arch_file_io.h" -static apr_status_t setptr(apr_file_t *thefile, apr_off_t pos ) +static fspr_status_t setptr(fspr_file_t *thefile, fspr_off_t pos ) { - apr_off_t newbufpos; - apr_status_t rv; + fspr_off_t newbufpos; + fspr_status_t rv; if (thefile->direction == 1) { - rv = apr_file_flush(thefile); + rv = fspr_file_flush(thefile); if (rv) { return rv; } @@ -49,15 +49,15 @@ static apr_status_t setptr(apr_file_t *thefile, apr_off_t pos ) } -APR_DECLARE(apr_status_t) apr_file_seek(apr_file_t *thefile, apr_seek_where_t where, apr_off_t *offset) +APR_DECLARE(fspr_status_t) fspr_file_seek(fspr_file_t *thefile, fspr_seek_where_t where, fspr_off_t *offset) { - apr_off_t rv; + fspr_off_t rv; thefile->eof_hit = 0; if (thefile->buffered) { int rc = EINVAL; - apr_finfo_t finfo; + fspr_finfo_t finfo; switch (where) { case APR_SET: @@ -69,7 +69,7 @@ APR_DECLARE(apr_status_t) apr_file_seek(apr_file_t *thefile, apr_seek_where_t wh break; case APR_END: - rc = apr_file_info_get(&finfo, APR_FINFO_SIZE, thefile); + rc = fspr_file_info_get(&finfo, APR_FINFO_SIZE, thefile); if (rc == APR_SUCCESS) rc = setptr(thefile, finfo.size + *offset); break; @@ -91,7 +91,7 @@ APR_DECLARE(apr_status_t) apr_file_seek(apr_file_t *thefile, apr_seek_where_t wh } } -apr_status_t apr_file_trunc(apr_file_t *fp, apr_off_t offset) +fspr_status_t fspr_file_trunc(fspr_file_t *fp, fspr_off_t offset) { if (ftruncate(fp->filedes, offset) == -1) { return errno; diff --git a/libs/apr/file_io/unix/tempdir.c b/libs/apr/file_io/unix/tempdir.c index 1138e2c9006..6a0091d5dc9 100644 --- a/libs/apr/file_io/unix/tempdir.c +++ b/libs/apr/file_io/unix/tempdir.c @@ -13,22 +13,22 @@ * See the License for the specific language governing permissions and * limitations under the License. */ -#include "apr_private.h" -#include "apr_file_io.h" -#include "apr_strings.h" -#include "apr_env.h" +#include "fspr_private.h" +#include "fspr_file_io.h" +#include "fspr_strings.h" +#include "fspr_env.h" /* Try to open a temporary file in the temporary dir, write to it, and then close it. */ -static int test_tempdir(const char *temp_dir, apr_pool_t *p) +static int test_tempdir(const char *temp_dir, fspr_pool_t *p) { - apr_file_t *dummy_file; - char *path = apr_pstrcat(p, temp_dir, "/apr-tmp.XXXXXX", NULL); + fspr_file_t *dummy_file; + char *path = fspr_pstrcat(p, temp_dir, "/apr-tmp.XXXXXX", NULL); - if (apr_file_mktemp(&dummy_file, path, 0, p) == APR_SUCCESS) { - if (apr_file_putc('!', dummy_file) == APR_SUCCESS) { - if (apr_file_close(dummy_file) == APR_SUCCESS) { + if (fspr_file_mktemp(&dummy_file, path, 0, p) == APR_SUCCESS) { + if (fspr_file_putc('!', dummy_file) == APR_SUCCESS) { + if (fspr_file_close(dummy_file) == APR_SUCCESS) { return 1; } } @@ -37,10 +37,10 @@ static int test_tempdir(const char *temp_dir, apr_pool_t *p) } -APR_DECLARE(apr_status_t) apr_temp_dir_get(const char **temp_dir, - apr_pool_t *p) +APR_DECLARE(fspr_status_t) fspr_temp_dir_get(const char **temp_dir, + fspr_pool_t *p) { - apr_status_t apr_err; + fspr_status_t fspr_err; const char *try_dirs[] = { "/tmp", "/usr/tmp", "/var/tmp" }; const char *try_envs[] = { "TMP", "TEMP", "TMPDIR" }; const char *dir; @@ -69,9 +69,9 @@ APR_DECLARE(apr_status_t) apr_temp_dir_get(const char **temp_dir, /* Try the environment first. */ for (i = 0; i < (sizeof(try_envs) / sizeof(const char *)); i++) { char *value; - apr_err = apr_env_get(&value, try_envs[i], p); - if ((apr_err == APR_SUCCESS) && value) { - apr_size_t len = strlen(value); + fspr_err = fspr_env_get(&value, try_envs[i], p); + if ((fspr_err == APR_SUCCESS) && value) { + fspr_size_t len = strlen(value); if (len && (len < APR_PATH_MAX) && test_tempdir(value, p)) { dir = value; goto end; @@ -114,7 +114,7 @@ APR_DECLARE(apr_status_t) apr_temp_dir_get(const char **temp_dir, #endif /* Finally, try the current working directory. */ - if (APR_SUCCESS == apr_filepath_get(&cwd, APR_FILEPATH_NATIVE, p)) { + if (APR_SUCCESS == fspr_filepath_get(&cwd, APR_FILEPATH_NATIVE, p)) { if (test_tempdir(cwd, p)) { dir = cwd; goto end; @@ -125,6 +125,6 @@ APR_DECLARE(apr_status_t) apr_temp_dir_get(const char **temp_dir, return APR_EGENERAL; end: - *temp_dir = apr_pstrdup(p, dir); + *temp_dir = fspr_pstrdup(p, dir); return APR_SUCCESS; } diff --git a/libs/apr/file_io/win32/dir.c b/libs/apr/file_io/win32/dir.c index 76fe42bca89..809f9e08fd6 100644 --- a/libs/apr/file_io/win32/dir.c +++ b/libs/apr/file_io/win32/dir.c @@ -14,12 +14,12 @@ * limitations under the License. */ -#include "apr.h" -#include "apr_arch_file_io.h" -#include "apr_file_io.h" -#include "apr_strings.h" -#include "apr_portable.h" -#include "apr_arch_atime.h" +#include "fspr.h" +#include "fspr_arch_file_io.h" +#include "fspr_file_io.h" +#include "fspr_strings.h" +#include "fspr_portable.h" +#include "fspr_arch_atime.h" #if APR_HAVE_ERRNO_H #include @@ -35,27 +35,27 @@ #endif -static apr_status_t dir_cleanup(void *thedir) +static fspr_status_t dir_cleanup(void *thedir) { - apr_dir_t *dir = thedir; + fspr_dir_t *dir = thedir; if (dir->dirhand != INVALID_HANDLE_VALUE && !FindClose(dir->dirhand)) { - return apr_get_os_error(); + return fspr_get_os_error(); } dir->dirhand = INVALID_HANDLE_VALUE; return APR_SUCCESS; } -APR_DECLARE(apr_status_t) apr_dir_open(apr_dir_t **new, const char *dirname, - apr_pool_t *pool) +APR_DECLARE(fspr_status_t) fspr_dir_open(fspr_dir_t **new, const char *dirname, + fspr_pool_t *pool) { - apr_status_t rv; + fspr_status_t rv; - apr_size_t len = strlen(dirname); - (*new) = apr_pcalloc(pool, sizeof(apr_dir_t)); + fspr_size_t len = strlen(dirname); + (*new) = fspr_pcalloc(pool, sizeof(fspr_dir_t)); /* Leave room here to add and pop the '*' wildcard for FindFirstFile * and double-null terminate so we have one character to change. */ - (*new)->dirname = apr_palloc(pool, len + 3); + (*new)->dirname = fspr_palloc(pool, len + 3); memcpy((*new)->dirname, dirname, len); if (len && (*new)->dirname[len - 1] != '/') { (*new)->dirname[len++] = '/'; @@ -68,8 +68,8 @@ APR_DECLARE(apr_status_t) apr_dir_open(apr_dir_t **new, const char *dirname, { /* Create a buffer for the longest file name we will ever see */ - (*new)->w.entry = apr_pcalloc(pool, sizeof(WIN32_FIND_DATAW)); - (*new)->name = apr_pcalloc(pool, APR_FILE_MAX * 3 + 1); + (*new)->w.entry = fspr_pcalloc(pool, sizeof(WIN32_FIND_DATAW)); + (*new)->name = fspr_pcalloc(pool, APR_FILE_MAX * 3 + 1); } #endif #if APR_HAS_ANSI_FS @@ -85,16 +85,16 @@ APR_DECLARE(apr_status_t) apr_dir_open(apr_dir_t **new, const char *dirname, (*new) = NULL; return APR_ENAMETOOLONG; } - (*new)->n.entry = apr_pcalloc(pool, sizeof(WIN32_FIND_DATAW)); + (*new)->n.entry = fspr_pcalloc(pool, sizeof(WIN32_FIND_DATAW)); } #endif (*new)->rootlen = len - 1; (*new)->pool = pool; (*new)->dirhand = INVALID_HANDLE_VALUE; - apr_pool_cleanup_register((*new)->pool, (void *)(*new), dir_cleanup, - apr_pool_cleanup_null); + fspr_pool_cleanup_register((*new)->pool, (void *)(*new), dir_cleanup, + fspr_pool_cleanup_null); - rv = apr_dir_read(NULL, 0, *new); + rv = fspr_dir_read(NULL, 0, *new); if (rv != APR_SUCCESS) { dir_cleanup(*new); *new = NULL; @@ -103,33 +103,33 @@ APR_DECLARE(apr_status_t) apr_dir_open(apr_dir_t **new, const char *dirname, return rv; } -APR_DECLARE(apr_status_t) apr_dir_close(apr_dir_t *dir) +APR_DECLARE(fspr_status_t) fspr_dir_close(fspr_dir_t *dir) { - apr_pool_cleanup_kill(dir->pool, dir, dir_cleanup); + fspr_pool_cleanup_kill(dir->pool, dir, dir_cleanup); return dir_cleanup(dir); } -APR_DECLARE(apr_status_t) apr_dir_read(apr_finfo_t *finfo, apr_int32_t wanted, - apr_dir_t *thedir) +APR_DECLARE(fspr_status_t) fspr_dir_read(fspr_finfo_t *finfo, fspr_int32_t wanted, + fspr_dir_t *thedir) { - apr_status_t rv; + fspr_status_t rv; char *fname; /* The while loops below allow us to skip all invalid file names, so that * we aren't reporting any files where their absolute paths are too long. */ #if APR_HAS_UNICODE_FS - apr_wchar_t wdirname[APR_PATH_MAX]; - apr_wchar_t *eos = NULL; + fspr_wchar_t wdirname[APR_PATH_MAX]; + fspr_wchar_t *eos = NULL; IF_WIN_OS_IS_UNICODE { - /* This code path is always be invoked by apr_dir_open or - * apr_dir_rewind, so return without filling out the finfo. + /* This code path is always be invoked by fspr_dir_open or + * fspr_dir_rewind, so return without filling out the finfo. */ if (thedir->dirhand == INVALID_HANDLE_VALUE) { - apr_status_t rv; + fspr_status_t rv; if (rv = utf8_to_unicode_path(wdirname, sizeof(wdirname) - / sizeof(apr_wchar_t), + / sizeof(fspr_wchar_t), thedir->dirname)) { return rv; } @@ -139,27 +139,27 @@ APR_DECLARE(apr_status_t) apr_dir_read(apr_finfo_t *finfo, apr_int32_t wanted, thedir->dirhand = FindFirstFileW(wdirname, thedir->w.entry); eos[0] = '\0'; if (thedir->dirhand == INVALID_HANDLE_VALUE) { - return apr_get_os_error(); + return fspr_get_os_error(); } thedir->bof = 1; return APR_SUCCESS; } else if (thedir->bof) { /* Noop - we already called FindFirstFileW from - * either apr_dir_open or apr_dir_rewind ... use + * either fspr_dir_open or fspr_dir_rewind ... use * that first record. */ thedir->bof = 0; } else if (!FindNextFileW(thedir->dirhand, thedir->w.entry)) { - return apr_get_os_error(); + return fspr_get_os_error(); } while (thedir->rootlen && thedir->rootlen + wcslen(thedir->w.entry->cFileName) >= APR_PATH_MAX) { if (!FindNextFileW(thedir->dirhand, thedir->w.entry)) { - return apr_get_os_error(); + return fspr_get_os_error(); } } if (rv = unicode_to_utf8_path(thedir->name, APR_FILE_MAX * 3 + 1, @@ -171,8 +171,8 @@ APR_DECLARE(apr_status_t) apr_dir_read(apr_finfo_t *finfo, apr_int32_t wanted, #if APR_HAS_ANSI_FS ELSE_WIN_OS_IS_ANSI { - /* This code path is always be invoked by apr_dir_open or - * apr_dir_rewind, so return without filling out the finfo. + /* This code path is always be invoked by fspr_dir_open or + * fspr_dir_rewind, so return without filling out the finfo. */ if (thedir->dirhand == INVALID_HANDLE_VALUE) { /* '/' terminated, so add the '*' and pop it when we finish */ @@ -183,26 +183,26 @@ APR_DECLARE(apr_status_t) apr_dir_read(apr_finfo_t *finfo, apr_int32_t wanted, thedir->n.entry); eop[0] = '\0'; if (thedir->dirhand == INVALID_HANDLE_VALUE) { - return apr_get_os_error(); + return fspr_get_os_error(); } thedir->bof = 1; return APR_SUCCESS; } else if (thedir->bof) { /* Noop - we already called FindFirstFileW from - * either apr_dir_open or apr_dir_rewind ... use + * either fspr_dir_open or fspr_dir_rewind ... use * that first record. */ thedir->bof = 0; } else if (!FindNextFile(thedir->dirhand, thedir->n.entry)) { - return apr_get_os_error(); + return fspr_get_os_error(); } while (thedir->rootlen && thedir->rootlen + strlen(thedir->n.entry->cFileName) >= MAX_PATH) { if (!FindNextFileW(thedir->dirhand, thedir->w.entry)) { - return apr_get_os_error(); + return fspr_get_os_error(); } } fname = thedir->n.entry->cFileName; @@ -244,11 +244,11 @@ APR_DECLARE(apr_status_t) apr_dir_read(apr_finfo_t *finfo, apr_int32_t wanted, #else char fspec[APR_PATH_MAX]; #endif - apr_size_t dirlen = strlen(thedir->dirname); + fspr_size_t dirlen = strlen(thedir->dirname); if (dirlen >= sizeof(fspec)) dirlen = sizeof(fspec) - 1; - apr_cpystrn(fspec, thedir->dirname, sizeof(fspec)); - apr_cpystrn(fspec + dirlen, fname, sizeof(fspec) - dirlen); + fspr_cpystrn(fspec, thedir->dirname, sizeof(fspec)); + fspr_cpystrn(fspec + dirlen, fname, sizeof(fspec) - dirlen); return more_finfo(finfo, fspec, wanted, MORE_OF_FSPEC); } #endif @@ -257,66 +257,66 @@ APR_DECLARE(apr_status_t) apr_dir_read(apr_finfo_t *finfo, apr_int32_t wanted, return APR_SUCCESS; } -APR_DECLARE(apr_status_t) apr_dir_rewind(apr_dir_t *dir) +APR_DECLARE(fspr_status_t) fspr_dir_rewind(fspr_dir_t *dir) { - apr_status_t rv; + fspr_status_t rv; /* this will mark the handle as invalid and we'll open it - * again if apr_dir_read() is subsequently called + * again if fspr_dir_read() is subsequently called */ rv = dir_cleanup(dir); if (rv == APR_SUCCESS) - rv = apr_dir_read(NULL, 0, dir); + rv = fspr_dir_read(NULL, 0, dir); return rv; } -APR_DECLARE(apr_status_t) apr_dir_make(const char *path, apr_fileperms_t perm, - apr_pool_t *pool) +APR_DECLARE(fspr_status_t) fspr_dir_make(const char *path, fspr_fileperms_t perm, + fspr_pool_t *pool) { #if APR_HAS_UNICODE_FS IF_WIN_OS_IS_UNICODE { - apr_wchar_t wpath[APR_PATH_MAX]; - apr_status_t rv; + fspr_wchar_t wpath[APR_PATH_MAX]; + fspr_status_t rv; if (rv = utf8_to_unicode_path(wpath, sizeof(wpath) - / sizeof(apr_wchar_t), path)) { + / sizeof(fspr_wchar_t), path)) { return rv; } if (!CreateDirectoryW(wpath, NULL)) { - return apr_get_os_error(); + return fspr_get_os_error(); } } #endif #if APR_HAS_ANSI_FS ELSE_WIN_OS_IS_ANSI if (!CreateDirectory(path, NULL)) { - return apr_get_os_error(); + return fspr_get_os_error(); } #endif return APR_SUCCESS; } -static apr_status_t dir_make_parent(char *path, - apr_fileperms_t perm, - apr_pool_t *pool) +static fspr_status_t dir_make_parent(char *path, + fspr_fileperms_t perm, + fspr_pool_t *pool) { - apr_status_t rv; + fspr_status_t rv; char *ch = strrchr(path, '\\'); if (!ch) { return APR_ENOENT; } *ch = '\0'; - rv = apr_dir_make (path, perm, pool); /* Try to make straight off */ + rv = fspr_dir_make (path, perm, pool); /* Try to make straight off */ if (APR_STATUS_IS_ENOENT(rv)) { /* Missing an intermediate dir */ rv = dir_make_parent(path, perm, pool); if (rv == APR_SUCCESS) { - rv = apr_dir_make (path, perm, pool); /* And complete the path */ + rv = fspr_dir_make (path, perm, pool); /* And complete the path */ } } @@ -324,13 +324,13 @@ static apr_status_t dir_make_parent(char *path, return rv; } -APR_DECLARE(apr_status_t) apr_dir_make_recursive(const char *path, - apr_fileperms_t perm, - apr_pool_t *pool) +APR_DECLARE(fspr_status_t) fspr_dir_make_recursive(const char *path, + fspr_fileperms_t perm, + fspr_pool_t *pool) { - apr_status_t rv = 0; + fspr_status_t rv = 0; - rv = apr_dir_make (path, perm, pool); /* Try to make PATH right out */ + rv = fspr_dir_make (path, perm, pool); /* Try to make PATH right out */ if (APR_STATUS_IS_EEXIST(rv)) /* It's OK if PATH exists */ return APR_SUCCESS; @@ -338,45 +338,45 @@ APR_DECLARE(apr_status_t) apr_dir_make_recursive(const char *path, if (APR_STATUS_IS_ENOENT(rv)) { /* Missing an intermediate dir */ char *dir; - rv = apr_filepath_merge(&dir, "", path, APR_FILEPATH_NATIVE, pool); + rv = fspr_filepath_merge(&dir, "", path, APR_FILEPATH_NATIVE, pool); if (rv == APR_SUCCESS) rv = dir_make_parent(dir, perm, pool); /* Make intermediate dirs */ if (rv == APR_SUCCESS) - rv = apr_dir_make (dir, perm, pool); /* And complete the path */ + rv = fspr_dir_make (dir, perm, pool); /* And complete the path */ } return rv; } -APR_DECLARE(apr_status_t) apr_dir_remove(const char *path, apr_pool_t *pool) +APR_DECLARE(fspr_status_t) fspr_dir_remove(const char *path, fspr_pool_t *pool) { #if APR_HAS_UNICODE_FS IF_WIN_OS_IS_UNICODE { - apr_wchar_t wpath[APR_PATH_MAX]; - apr_status_t rv; + fspr_wchar_t wpath[APR_PATH_MAX]; + fspr_status_t rv; if (rv = utf8_to_unicode_path(wpath, sizeof(wpath) - / sizeof(apr_wchar_t), path)) { + / sizeof(fspr_wchar_t), path)) { return rv; } if (!RemoveDirectoryW(wpath)) { - return apr_get_os_error(); + return fspr_get_os_error(); } } #endif #if APR_HAS_ANSI_FS ELSE_WIN_OS_IS_ANSI if (!RemoveDirectory(path)) { - return apr_get_os_error(); + return fspr_get_os_error(); } #endif return APR_SUCCESS; } -APR_DECLARE(apr_status_t) apr_os_dir_get(apr_os_dir_t **thedir, - apr_dir_t *dir) +APR_DECLARE(fspr_status_t) fspr_os_dir_get(fspr_os_dir_t **thedir, + fspr_dir_t *dir) { if (dir == NULL) { return APR_ENODIR; @@ -385,9 +385,9 @@ APR_DECLARE(apr_status_t) apr_os_dir_get(apr_os_dir_t **thedir, return APR_SUCCESS; } -APR_DECLARE(apr_status_t) apr_os_dir_put(apr_dir_t **dir, - apr_os_dir_t *thedir, - apr_pool_t *pool) +APR_DECLARE(fspr_status_t) fspr_os_dir_put(fspr_dir_t **dir, + fspr_os_dir_t *thedir, + fspr_pool_t *pool) { return APR_ENOTIMPL; } diff --git a/libs/apr/file_io/win32/filedup.c b/libs/apr/file_io/win32/filedup.c index 69e4d913478..f1d5cb08ea0 100644 --- a/libs/apr/file_io/win32/filedup.c +++ b/libs/apr/file_io/win32/filedup.c @@ -14,15 +14,15 @@ * limitations under the License. */ -#include "win32/apr_arch_file_io.h" -#include "apr_file_io.h" -#include "apr_general.h" -#include "apr_strings.h" +#include "win32/fspr_arch_file_io.h" +#include "fspr_file_io.h" +#include "fspr_general.h" +#include "fspr_strings.h" #include -#include "apr_arch_inherit.h" +#include "fspr_arch_inherit.h" -APR_DECLARE(apr_status_t) apr_file_dup(apr_file_t **new_file, - apr_file_t *old_file, apr_pool_t *p) +APR_DECLARE(fspr_status_t) fspr_file_dup(fspr_file_t **new_file, + fspr_file_t *old_file, fspr_pool_t *p) { #ifdef _WIN32_WCE return APR_ENOTIMPL; @@ -33,31 +33,31 @@ APR_DECLARE(apr_status_t) apr_file_dup(apr_file_t **new_file, if (!DuplicateHandle(hproc, old_file->filehand, hproc, &newhand, 0, FALSE, DUPLICATE_SAME_ACCESS)) { - return apr_get_os_error(); + return fspr_get_os_error(); } - (*new_file) = (apr_file_t *) apr_pcalloc(p, sizeof(apr_file_t)); + (*new_file) = (fspr_file_t *) fspr_pcalloc(p, sizeof(fspr_file_t)); (*new_file)->filehand = newhand; (*new_file)->flags = old_file->flags & ~APR_INHERIT; (*new_file)->pool = p; - (*new_file)->fname = apr_pstrdup(p, old_file->fname); + (*new_file)->fname = fspr_pstrdup(p, old_file->fname); (*new_file)->append = old_file->append; (*new_file)->buffered = FALSE; (*new_file)->ungetchar = old_file->ungetchar; #if APR_HAS_THREADS if (old_file->mutex) { - apr_thread_mutex_create(&((*new_file)->mutex), + fspr_thread_mutex_create(&((*new_file)->mutex), APR_THREAD_MUTEX_DEFAULT, p); } #endif - apr_pool_cleanup_register((*new_file)->pool, (void *)(*new_file), file_cleanup, - apr_pool_cleanup_null); + fspr_pool_cleanup_register((*new_file)->pool, (void *)(*new_file), file_cleanup, + fspr_pool_cleanup_null); /* Create a pollset with room for one descriptor. */ /* ### check return codes */ - (void) apr_pollset_create(&(*new_file)->pollset, 1, p, 0); + (void) fspr_pollset_create(&(*new_file)->pollset, 1, p, 0); return APR_SUCCESS; #endif /* !defined(_WIN32_WCE) */ @@ -67,8 +67,8 @@ APR_DECLARE(apr_status_t) apr_file_dup(apr_file_t **new_file, #define stdout_handle 0x02 #define stderr_handle 0x04 -APR_DECLARE(apr_status_t) apr_file_dup2(apr_file_t *new_file, - apr_file_t *old_file, apr_pool_t *p) +APR_DECLARE(fspr_status_t) fspr_file_dup2(fspr_file_t *new_file, + fspr_file_t *old_file, fspr_pool_t *p) { #ifdef _WIN32_WCE return APR_ENOTIMPL; @@ -76,7 +76,7 @@ APR_DECLARE(apr_status_t) apr_file_dup2(apr_file_t *new_file, DWORD stdhandle = 0; HANDLE hproc = GetCurrentProcess(); HANDLE newhand = NULL; - apr_int32_t newflags; + fspr_int32_t newflags; /* dup2 is not supported literaly with native Windows handles. * We can, however, emulate dup2 for the standard i/o handles, @@ -97,12 +97,12 @@ APR_DECLARE(apr_status_t) apr_file_dup2(apr_file_t *new_file, if (!DuplicateHandle(hproc, old_file->filehand, hproc, &newhand, 0, TRUE, DUPLICATE_SAME_ACCESS)) { - return apr_get_os_error(); + return fspr_get_os_error(); } if (((stdhandle & stderr_handle) && !SetStdHandle(STD_ERROR_HANDLE, newhand)) || ((stdhandle & stdout_handle) && !SetStdHandle(STD_OUTPUT_HANDLE, newhand)) || ((stdhandle & stdin_handle) && !SetStdHandle(STD_INPUT_HANDLE, newhand))) { - return apr_get_os_error(); + return fspr_get_os_error(); } newflags = old_file->flags | APR_INHERIT; } @@ -110,7 +110,7 @@ APR_DECLARE(apr_status_t) apr_file_dup2(apr_file_t *new_file, if (!DuplicateHandle(hproc, old_file->filehand, hproc, &newhand, 0, FALSE, DUPLICATE_SAME_ACCESS)) { - return apr_get_os_error(); + return fspr_get_os_error(); } newflags = old_file->flags & ~APR_INHERIT; } @@ -121,14 +121,14 @@ APR_DECLARE(apr_status_t) apr_file_dup2(apr_file_t *new_file, new_file->flags = newflags; new_file->filehand = newhand; - new_file->fname = apr_pstrdup(new_file->pool, old_file->fname); + new_file->fname = fspr_pstrdup(new_file->pool, old_file->fname); new_file->append = old_file->append; new_file->buffered = FALSE; new_file->ungetchar = old_file->ungetchar; #if APR_HAS_THREADS if (old_file->mutex) { - apr_thread_mutex_create(&(new_file->mutex), + fspr_thread_mutex_create(&(new_file->mutex), APR_THREAD_MUTEX_DEFAULT, p); } #endif @@ -137,15 +137,15 @@ APR_DECLARE(apr_status_t) apr_file_dup2(apr_file_t *new_file, #endif /* !defined(_WIN32_WCE) */ } -APR_DECLARE(apr_status_t) apr_file_setaside(apr_file_t **new_file, - apr_file_t *old_file, - apr_pool_t *p) +APR_DECLARE(fspr_status_t) fspr_file_setaside(fspr_file_t **new_file, + fspr_file_t *old_file, + fspr_pool_t *p) { - *new_file = (apr_file_t *)apr_palloc(p, sizeof(apr_file_t)); - memcpy(*new_file, old_file, sizeof(apr_file_t)); + *new_file = (fspr_file_t *)fspr_palloc(p, sizeof(fspr_file_t)); + memcpy(*new_file, old_file, sizeof(fspr_file_t)); (*new_file)->pool = p; if (old_file->buffered) { - (*new_file)->buffer = apr_palloc(p, APR_FILE_BUFSIZE); + (*new_file)->buffer = fspr_palloc(p, APR_FILE_BUFSIZE); if (old_file->direction == 1) { memcpy((*new_file)->buffer, old_file->buffer, old_file->bufpos); } @@ -154,26 +154,26 @@ APR_DECLARE(apr_status_t) apr_file_setaside(apr_file_t **new_file, } } if (old_file->mutex) { - apr_thread_mutex_create(&((*new_file)->mutex), + fspr_thread_mutex_create(&((*new_file)->mutex), APR_THREAD_MUTEX_DEFAULT, p); - apr_thread_mutex_destroy(old_file->mutex); + fspr_thread_mutex_destroy(old_file->mutex); } if (old_file->fname) { - (*new_file)->fname = apr_pstrdup(p, old_file->fname); + (*new_file)->fname = fspr_pstrdup(p, old_file->fname); } if (!(old_file->flags & APR_FILE_NOCLEANUP)) { - apr_pool_cleanup_register(p, (void *)(*new_file), + fspr_pool_cleanup_register(p, (void *)(*new_file), file_cleanup, file_cleanup); } old_file->filehand = INVALID_HANDLE_VALUE; - apr_pool_cleanup_kill(old_file->pool, (void *)old_file, + fspr_pool_cleanup_kill(old_file->pool, (void *)old_file, file_cleanup); /* Create a pollset with room for one descriptor. */ /* ### check return codes */ - (void) apr_pollset_create(&(*new_file)->pollset, 1, p, 0); + (void) fspr_pollset_create(&(*new_file)->pollset, 1, p, 0); return APR_SUCCESS; } diff --git a/libs/apr/file_io/win32/filepath.c b/libs/apr/file_io/win32/filepath.c index 766e35f8d82..353cb2649e3 100644 --- a/libs/apr/file_io/win32/filepath.c +++ b/libs/apr/file_io/win32/filepath.c @@ -14,11 +14,11 @@ * limitations under the License. */ -#include "apr.h" -#include "apr_private.h" -#include "apr_arch_file_io.h" -#include "apr_strings.h" -#include "apr_lib.h" +#include "fspr.h" +#include "fspr_private.h" +#include "fspr_arch_file_io.h" +#include "fspr_strings.h" +#include "fspr_lib.h" #include #include @@ -37,10 +37,10 @@ * OS2 appears immune from the nonsense :) */ -APR_DECLARE(apr_status_t) apr_filepath_root(const char **rootpath, +APR_DECLARE(fspr_status_t) fspr_filepath_root(const char **rootpath, const char **inpath, - apr_int32_t flags, - apr_pool_t *p) + fspr_int32_t flags, + fspr_pool_t *p) { const char *testpath = *inpath; char *newpath; @@ -78,7 +78,7 @@ APR_DECLARE(apr_status_t) apr_filepath_root(const char **rootpath, Otherwise we either have an incomplete or relative path */ if (volume && strlen(volume) > 0) { - newpath = apr_pcalloc(p, strlen(server)+strlen(volume)+5); + newpath = fspr_pcalloc(p, strlen(server)+strlen(volume)+5); construct(newpath, server, volume, NULL, NULL, NULL, PATH_NETWARE); /* NetWare doesn't add the root slash so we need to add it manually. @@ -106,7 +106,7 @@ APR_DECLARE(apr_status_t) apr_filepath_root(const char **rootpath, in same manner as unix although this path will be incomplete. */ - *rootpath = apr_pstrdup(p, seperator); + *rootpath = fspr_pstrdup(p, seperator); do { ++(*inpath); } while ((**inpath == '/') || (**inpath == '\\')); @@ -133,12 +133,12 @@ APR_DECLARE(apr_status_t) apr_filepath_root(const char **rootpath, && (testpath[3] == '/' || testpath[3] == '\\')) { if (IS_FNCHAR(testpath[4]) && testpath[5] == ':') { - apr_status_t rv; + fspr_status_t rv; testpath += 4; /* given '//?/C: or //./C: let us try this * all over again from the drive designator */ - rv = apr_filepath_root(rootpath, &testpath, flags, p); + rv = fspr_filepath_root(rootpath, &testpath, flags, p); if (!rv || rv == APR_EINCOMPLETE) *inpath = testpath; return rv; @@ -170,7 +170,7 @@ APR_DECLARE(apr_status_t) apr_filepath_root(const char **rootpath, } while (*delim1 && *delim1 != '/' && *delim1 != '\\'); if (*delim1) { - apr_status_t rv; + fspr_status_t rv; delim2 = delim1 + 1; while (*delim2 && *delim2 != '/' && *delim2 != '\\') { /* Protect against //machine/X/ where X is illegal */ @@ -181,7 +181,7 @@ APR_DECLARE(apr_status_t) apr_filepath_root(const char **rootpath, /* Copy the '//machine/[share[/]]' path, always providing * an extra byte for the trailing slash. */ - newpath = apr_pstrmemdup(p, testpath, delim2 - testpath + 1); + newpath = fspr_pstrmemdup(p, testpath, delim2 - testpath + 1); if (delim2 == delim1 + 1) { /* We found simply \\machine\, so give up already @@ -196,7 +196,7 @@ APR_DECLARE(apr_status_t) apr_filepath_root(const char **rootpath, * Win32 will argue about slashed in UNC paths, * so use backslashes till we finish testing, * and add the trailing backslash [required]. - * apr_pstrmemdup above guarentees us the new + * fspr_pstrmemdup above guarentees us the new * trailing null character. */ newpath[0] = '\\'; @@ -246,7 +246,7 @@ APR_DECLARE(apr_status_t) apr_filepath_root(const char **rootpath, */ delim1 = strchr(testpath, '\0'); if (delim1 > testpath + 2) { - newpath = apr_pstrndup(p, testpath, delim1 - testpath + 1); + newpath = fspr_pstrndup(p, testpath, delim1 - testpath + 1); if (flags & APR_FILEPATH_TRUENAME) newpath[delim1 - testpath] = seperator[0]; else @@ -254,7 +254,7 @@ APR_DECLARE(apr_status_t) apr_filepath_root(const char **rootpath, newpath[delim1 - testpath + 1] = '\0'; } else { - newpath = apr_pstrndup(p, testpath, delim1 - testpath); + newpath = fspr_pstrndup(p, testpath, delim1 - testpath); } if (flags & APR_FILEPATH_TRUENAME) { newpath[0] = seperator[0]; @@ -268,7 +268,7 @@ APR_DECLARE(apr_status_t) apr_filepath_root(const char **rootpath, /* Left with a path of '/', what drive are we asking about? */ *inpath = testpath + 1; - newpath = apr_palloc(p, 2); + newpath = fspr_palloc(p, 2); if (flags & APR_FILEPATH_TRUENAME) newpath[0] = seperator[0]; else @@ -281,20 +281,20 @@ APR_DECLARE(apr_status_t) apr_filepath_root(const char **rootpath, /* Evaluate path of 'd:[/]' */ if (IS_FNCHAR(*testpath) && testpath[1] == ':') { - apr_status_t rv; + fspr_status_t rv; /* Validate that D:\ drive exists, test must be rooted * Note that posix/win32 insists a drive letter is upper case, * so who are we to argue with a 'feature'. * It is a safe fold, since only A-Z is legal, and has no * side effects of legal mis-mapped non-us-ascii codes. */ - newpath = apr_palloc(p, 4); + newpath = fspr_palloc(p, 4); newpath[0] = testpath[0]; newpath[1] = testpath[1]; newpath[2] = seperator[0]; newpath[3] = '\0'; if (flags & APR_FILEPATH_TRUENAME) { - newpath[0] = apr_toupper(newpath[0]); + newpath[0] = fspr_toupper(newpath[0]); rv = filepath_root_test(newpath, p); if (rv) return rv; @@ -328,24 +328,24 @@ APR_DECLARE(apr_status_t) apr_filepath_root(const char **rootpath, } -APR_DECLARE(apr_status_t) apr_filepath_merge(char **newpath, +APR_DECLARE(fspr_status_t) fspr_filepath_merge(char **newpath, const char *basepath, const char *addpath, - apr_int32_t flags, - apr_pool_t *p) + fspr_int32_t flags, + fspr_pool_t *p) { char path[APR_PATH_MAX]; /* isn't null term */ const char *baseroot = NULL; const char *addroot; - apr_size_t rootlen; /* the length of the root portion of path, d:/ is 3 */ - apr_size_t baselen; /* the length of basepath (excluding baseroot) */ - apr_size_t keptlen; /* the length of the retained basepath (incl root) */ - apr_size_t pathlen; /* the length of the result path */ - apr_size_t segend; /* the end of the current segment */ - apr_size_t seglen; /* the length of the segment (excl trailing chars) */ - apr_status_t basetype = 0; /* from parsing the basepath's baseroot */ - apr_status_t addtype; /* from parsing the addpath's addroot */ - apr_status_t rv; + fspr_size_t rootlen; /* the length of the root portion of path, d:/ is 3 */ + fspr_size_t baselen; /* the length of basepath (excluding baseroot) */ + fspr_size_t keptlen; /* the length of the retained basepath (incl root) */ + fspr_size_t pathlen; /* the length of the result path */ + fspr_size_t segend; /* the end of the current segment */ + fspr_size_t seglen; /* the length of the segment (excl trailing chars) */ + fspr_status_t basetype = 0; /* from parsing the basepath's baseroot */ + fspr_status_t addtype; /* from parsing the addpath's addroot */ + fspr_status_t rv; #ifndef NETWARE int fixunc = 0; /* flag to complete an incomplete UNC basepath */ #endif @@ -359,7 +359,7 @@ APR_DECLARE(apr_status_t) apr_filepath_merge(char **newpath, else { /* This call _should_ test the path */ - addtype = apr_filepath_root(&addroot, &addpath, + addtype = fspr_filepath_root(&addroot, &addpath, APR_FILEPATH_TRUENAME | (flags & APR_FILEPATH_NATIVE), p); @@ -370,7 +370,7 @@ APR_DECLARE(apr_status_t) apr_filepath_merge(char **newpath, addroot = ""; } else if (addtype != APR_EINCOMPLETE) { - /* apr_filepath_root was incomprehensible so fail already + /* fspr_filepath_root was incomprehensible so fail already */ return addtype; } @@ -425,7 +425,7 @@ APR_DECLARE(apr_status_t) apr_filepath_merge(char **newpath, rv = filepath_drive_get(&getpath, addroot[0], flags, p); else #endif - rv = apr_filepath_get(&getpath, flags, p); + rv = fspr_filepath_get(&getpath, flags, p); if (rv != APR_SUCCESS) return rv; basepath = getpath; @@ -434,7 +434,7 @@ APR_DECLARE(apr_status_t) apr_filepath_merge(char **newpath, if (!baseroot) { /* This call should _not_ test the path */ - basetype = apr_filepath_root(&baseroot, &basepath, + basetype = fspr_filepath_root(&baseroot, &basepath, (flags & APR_FILEPATH_NATIVE), p); if (basetype == APR_SUCCESS) { basetype = APR_EABSOLUTE; @@ -443,7 +443,7 @@ APR_DECLARE(apr_status_t) apr_filepath_merge(char **newpath, baseroot = ""; } else if (basetype != APR_EINCOMPLETE) { - /* apr_filepath_root was incomprehensible so fail already + /* fspr_filepath_root was incomprehensible so fail already */ return basetype; } @@ -740,8 +740,8 @@ APR_DECLARE(apr_status_t) apr_filepath_merge(char **newpath, if (fixunc) { const char *testpath = path; const char *testroot; - apr_status_t testtype; - apr_size_t i = (addpath[segend] != '\0'); + fspr_status_t testtype; + fspr_size_t i = (addpath[segend] != '\0'); /* This isn't legal unless the unc path is complete! */ @@ -764,7 +764,7 @@ APR_DECLARE(apr_status_t) apr_filepath_merge(char **newpath, path[pathlen] = '\0'; /* This call _should_ test the path */ - testtype = apr_filepath_root(&testroot, &testpath, + testtype = fspr_filepath_root(&testroot, &testpath, APR_FILEPATH_TRUENAME | (flags & APR_FILEPATH_NATIVE), p); @@ -774,7 +774,7 @@ APR_DECLARE(apr_status_t) apr_filepath_merge(char **newpath, fixunc = 0; } else if (testtype != APR_EINCOMPLETE) { - /* apr_filepath_root was very unexpected so fail already + /* fspr_filepath_root was very unexpected so fail already */ return testtype; } @@ -784,7 +784,7 @@ APR_DECLARE(apr_status_t) apr_filepath_merge(char **newpath, { /* An actual segment, append it to the destination path */ - apr_size_t i = (addpath[segend] != '\0'); + fspr_size_t i = (addpath[segend] != '\0'); if (pathlen + seglen + i >= sizeof(path)) return APR_ENAMETOOLONG; memcpy(path + pathlen, addpath, seglen + i); @@ -835,7 +835,7 @@ APR_DECLARE(apr_status_t) apr_filepath_merge(char **newpath, } /* Go through all the new segments */ while (keptlen < pathlen) { - apr_finfo_t finfo; + fspr_finfo_t finfo; char saveslash = 0; seglen = 0; /* find any slash and set it aside for a minute. */ @@ -848,10 +848,10 @@ APR_DECLARE(apr_status_t) apr_filepath_merge(char **newpath, } /* Null term for stat! */ path[keptlen + seglen] = '\0'; - if ((rv = apr_stat(&finfo, path, + if ((rv = fspr_stat(&finfo, path, APR_FINFO_LINK | APR_FINFO_TYPE | APR_FINFO_NAME, p)) == APR_SUCCESS) { - apr_size_t namelen = strlen(finfo.name); + fspr_size_t namelen = strlen(finfo.name); #if defined(OS2) /* only has case folding, never aliases that change the length */ @@ -949,28 +949,28 @@ APR_DECLARE(apr_status_t) apr_filepath_merge(char **newpath, } } - *newpath = apr_pmemdup(p, path, pathlen + 1); + *newpath = fspr_pmemdup(p, path, pathlen + 1); (*newpath)[pathlen] = '\0'; return APR_SUCCESS; } -APR_DECLARE(apr_status_t) apr_filepath_list_split(apr_array_header_t **pathelts, +APR_DECLARE(fspr_status_t) fspr_filepath_list_split(fspr_array_header_t **pathelts, const char *liststr, - apr_pool_t *p) + fspr_pool_t *p) { - return apr_filepath_list_split_impl(pathelts, liststr, ';', p); + return fspr_filepath_list_split_impl(pathelts, liststr, ';', p); } -APR_DECLARE(apr_status_t) apr_filepath_list_merge(char **liststr, - apr_array_header_t *pathelts, - apr_pool_t *p) +APR_DECLARE(fspr_status_t) fspr_filepath_list_merge(char **liststr, + fspr_array_header_t *pathelts, + fspr_pool_t *p) { - return apr_filepath_list_merge_impl(liststr, pathelts, ';', p); + return fspr_filepath_list_merge_impl(liststr, pathelts, ';', p); } -APR_DECLARE(apr_status_t) apr_filepath_encoding(int *style, apr_pool_t *p) +APR_DECLARE(fspr_status_t) fspr_filepath_encoding(int *style, fspr_pool_t *p) { #if APR_HAS_UNICODE_FS IF_WIN_OS_IS_UNICODE diff --git a/libs/apr/file_io/win32/filestat.c b/libs/apr/file_io/win32/filestat.c index af93bb933b4..1972ccf3b38 100644 --- a/libs/apr/file_io/win32/filestat.c +++ b/libs/apr/file_io/win32/filestat.c @@ -14,28 +14,28 @@ * limitations under the License. */ -#include "apr.h" +#include "fspr.h" #include -#include "apr_private.h" -#include "apr_arch_file_io.h" -#include "apr_file_io.h" -#include "apr_general.h" -#include "apr_strings.h" -#include "apr_errno.h" -#include "apr_time.h" +#include "fspr_private.h" +#include "fspr_arch_file_io.h" +#include "fspr_file_io.h" +#include "fspr_general.h" +#include "fspr_strings.h" +#include "fspr_errno.h" +#include "fspr_time.h" #include -#include "apr_arch_atime.h" -#include "apr_arch_misc.h" +#include "fspr_arch_atime.h" +#include "fspr_arch_misc.h" /* We have to assure that the file name contains no '*'s, or other * wildcards when using FindFirstFile to recover the true file name. */ -static apr_status_t test_safe_name(const char *name) +static fspr_status_t test_safe_name(const char *name) { /* Only accept ':' in the second position of the filename, * as the drive letter delimiter: */ - if (apr_isalpha(*name) && (name[1] == ':')) { + if (fspr_isalpha(*name) && (name[1] == ':')) { name += 2; } while (*name) { @@ -50,12 +50,12 @@ static apr_status_t test_safe_name(const char *name) return APR_SUCCESS; } -static apr_status_t free_localheap(void *heap) { +static fspr_status_t free_localheap(void *heap) { LocalFree(heap); return APR_SUCCESS; } -static apr_gid_t worldid = NULL; +static fspr_gid_t worldid = NULL; static void free_world(void) { @@ -72,13 +72,13 @@ typedef enum prot_scope_e { prot_scope_user = 8 } prot_scope_e; -static apr_fileperms_t convert_prot(ACCESS_MASK acc, prot_scope_e scope) +static fspr_fileperms_t convert_prot(ACCESS_MASK acc, prot_scope_e scope) { /* These choices are based on the single filesystem bit that controls * the given behavior. They are -not- recommended for any set protection * function, such a function should -set- use GENERIC_READ/WRITE/EXECUTE */ - apr_fileperms_t prot = 0; + fspr_fileperms_t prot = 0; if (acc & FILE_EXECUTE) prot |= APR_WEXECUTE; if (acc & FILE_WRITE_DATA) @@ -88,7 +88,7 @@ static apr_fileperms_t convert_prot(ACCESS_MASK acc, prot_scope_e scope) return (prot << scope); } -static void resolve_prot(apr_finfo_t *finfo, apr_int32_t wanted, PACL dacl) +static void resolve_prot(fspr_finfo_t *finfo, fspr_int32_t wanted, PACL dacl) { TRUSTEE_W ident = {NULL, NO_MULTIPLE_TRUSTEE, TRUSTEE_IS_SID}; ACCESS_MASK acc; @@ -139,11 +139,11 @@ static void resolve_prot(apr_finfo_t *finfo, apr_int32_t wanted, PACL dacl) } } -static apr_status_t resolve_ident(apr_finfo_t *finfo, const char *fname, - apr_int32_t wanted, apr_pool_t *pool) +static fspr_status_t resolve_ident(fspr_finfo_t *finfo, const char *fname, + fspr_int32_t wanted, fspr_pool_t *pool) { - apr_file_t *thefile = NULL; - apr_status_t rv; + fspr_file_t *thefile = NULL; + fspr_status_t rv; /* * NT5 (W2K) only supports symlinks in the same manner as mount points. * This code should eventually take that into account, for now treat @@ -153,28 +153,28 @@ static apr_status_t resolve_ident(apr_finfo_t *finfo, const char *fname, * user, group or permissions. */ - if ((rv = apr_file_open(&thefile, fname, APR_OPENINFO + if ((rv = fspr_file_open(&thefile, fname, APR_OPENINFO | ((wanted & APR_FINFO_LINK) ? APR_OPENLINK : 0) | ((wanted & (APR_FINFO_PROT | APR_FINFO_OWNER)) ? APR_READCONTROL : 0), APR_OS_DEFAULT, pool)) == APR_SUCCESS) { - rv = apr_file_info_get(finfo, wanted, thefile); + rv = fspr_file_info_get(finfo, wanted, thefile); finfo->filehand = NULL; - apr_file_close(thefile); + fspr_file_close(thefile); } else if (APR_STATUS_IS_EACCES(rv) && (wanted & (APR_FINFO_PROT | APR_FINFO_OWNER))) { /* We have a backup plan. Perhaps we couldn't grab READ_CONTROL? * proceed without asking for that permission... */ - if ((rv = apr_file_open(&thefile, fname, APR_OPENINFO + if ((rv = fspr_file_open(&thefile, fname, APR_OPENINFO | ((wanted & APR_FINFO_LINK) ? APR_OPENLINK : 0), APR_OS_DEFAULT, pool)) == APR_SUCCESS) { - rv = apr_file_info_get(finfo, wanted & ~(APR_FINFO_PROT + rv = fspr_file_info_get(finfo, wanted & ~(APR_FINFO_PROT | APR_FINFO_OWNER), thefile); finfo->filehand = NULL; - apr_file_close(thefile); + fspr_file_close(thefile); } } @@ -188,7 +188,7 @@ static apr_status_t resolve_ident(apr_finfo_t *finfo, const char *fname, return rv; } -static void guess_protection_bits(apr_finfo_t *finfo) +static void guess_protection_bits(fspr_finfo_t *finfo) { /* Read, write execute for owner. In the Win9x environment, any * readable file is executable (well, not entirely 100% true, but @@ -207,20 +207,20 @@ static void guess_protection_bits(apr_finfo_t *finfo) finfo->valid |= APR_FINFO_UPROT | APR_FINFO_GPROT | APR_FINFO_WPROT; } -apr_status_t more_finfo(apr_finfo_t *finfo, const void *ufile, - apr_int32_t wanted, int whatfile) +fspr_status_t more_finfo(fspr_finfo_t *finfo, const void *ufile, + fspr_int32_t wanted, int whatfile) { PSID user = NULL, grp = NULL; PACL dacl = NULL; - apr_status_t rv; + fspr_status_t rv; - if (apr_os_level < APR_WIN_NT) + if (fspr_os_level < APR_WIN_NT) guess_protection_bits(finfo); else if (wanted & (APR_FINFO_PROT | APR_FINFO_OWNER)) { /* On NT this request is incredibly expensive, but accurate. * Since the WinNT-only functions below are protected by the - * (apr_os_level < APR_WIN_NT) case above, we need no extra + * (fspr_os_level < APR_WIN_NT) case above, we need no extra * tests, but remember GetNamedSecurityInfo & GetSecurityInfo * are not supported on 9x. */ @@ -233,7 +233,7 @@ apr_status_t more_finfo(apr_finfo_t *finfo, const void *ufile, if (wanted & APR_FINFO_PROT) sinf |= DACL_SECURITY_INFORMATION; if (whatfile == MORE_OF_WFSPEC) { - apr_wchar_t *wfile = (apr_wchar_t*) ufile; + fspr_wchar_t *wfile = (fspr_wchar_t*) ufile; int fix = 0; if (wcsncmp(wfile, L"\\\\?\\", 4) == 0) { fix = 4; @@ -266,8 +266,8 @@ apr_status_t more_finfo(apr_finfo_t *finfo, const void *ufile, else return APR_INCOMPLETE; if (rv == ERROR_SUCCESS) - apr_pool_cleanup_register(finfo->pool, pdesc, free_localheap, - apr_pool_cleanup_null); + fspr_pool_cleanup_register(finfo->pool, pdesc, free_localheap, + fspr_pool_cleanup_null); else user = grp = dacl = NULL; @@ -303,9 +303,9 @@ apr_status_t more_finfo(apr_finfo_t *finfo, const void *ufile, * if this is a CHR filetype. If it's reasonably certain it can't be, * then the function returns 0. */ -int fillin_fileinfo(apr_finfo_t *finfo, +int fillin_fileinfo(fspr_finfo_t *finfo, WIN32_FILE_ATTRIBUTE_DATA *wininfo, - int byhandle, apr_int32_t wanted) + int byhandle, fspr_int32_t wanted) { DWORD *sizes = &wininfo->nFileSizeHigh + byhandle; int warn = 0; @@ -317,10 +317,10 @@ int fillin_fileinfo(apr_finfo_t *finfo, FileTimeToAprTime(&finfo->mtime, &wininfo->ftLastWriteTime); #if APR_HAS_LARGE_FILES - finfo->size = (apr_off_t)sizes[1] - | ((apr_off_t)sizes[0] << 32); + finfo->size = (fspr_off_t)sizes[1] + | ((fspr_off_t)sizes[0] << 32); #else - finfo->size = (apr_off_t)sizes[1]; + finfo->size = (fspr_off_t)sizes[1]; if (finfo->size < 0 || sizes[0]) finfo->size = 0x7fffffff; #endif @@ -369,20 +369,20 @@ int fillin_fileinfo(apr_finfo_t *finfo, } -APR_DECLARE(apr_status_t) apr_file_info_get(apr_finfo_t *finfo, apr_int32_t wanted, - apr_file_t *thefile) +APR_DECLARE(fspr_status_t) fspr_file_info_get(fspr_finfo_t *finfo, fspr_int32_t wanted, + fspr_file_t *thefile) { BY_HANDLE_FILE_INFORMATION FileInfo; if (thefile->buffered) { /* XXX: flush here is not mutex protected */ - apr_status_t rv = apr_file_flush(thefile); + fspr_status_t rv = fspr_file_flush(thefile); if (rv != APR_SUCCESS) return rv; } if (!GetFileInformationByHandle(thefile->filehand, &FileInfo)) { - return apr_get_os_error(); + return fspr_get_os_error(); } fillin_fileinfo(finfo, (WIN32_FILE_ATTRIBUTE_DATA *) &FileInfo, 1, wanted); @@ -416,8 +416,8 @@ APR_DECLARE(apr_status_t) apr_file_info_get(apr_finfo_t *finfo, apr_int32_t want finfo->fname = thefile->fname; /* Extra goodies known only by GetFileInformationByHandle() */ - finfo->inode = (apr_ino_t)FileInfo.nFileIndexLow - | ((apr_ino_t)FileInfo.nFileIndexHigh << 32); + finfo->inode = (fspr_ino_t)FileInfo.nFileIndexLow + | ((fspr_ino_t)FileInfo.nFileIndexHigh << 32); finfo->device = FileInfo.dwVolumeSerialNumber; finfo->nlink = FileInfo.nNumberOfLinks; @@ -432,21 +432,21 @@ APR_DECLARE(apr_status_t) apr_file_info_get(apr_finfo_t *finfo, apr_int32_t want return APR_SUCCESS; } -APR_DECLARE(apr_status_t) apr_file_perms_set(const char *fname, - apr_fileperms_t perms) +APR_DECLARE(fspr_status_t) fspr_file_perms_set(const char *fname, + fspr_fileperms_t perms) { return APR_ENOTIMPL; } -APR_DECLARE(apr_status_t) apr_stat(apr_finfo_t *finfo, const char *fname, - apr_int32_t wanted, apr_pool_t *pool) +APR_DECLARE(fspr_status_t) fspr_stat(fspr_finfo_t *finfo, const char *fname, + fspr_int32_t wanted, fspr_pool_t *pool) { /* XXX: is constant - needs testing - which requires a lighter-weight root test fn */ int isroot = 0; - apr_status_t ident_rv = 0; - apr_status_t rv; + fspr_status_t ident_rv = 0; + fspr_status_t rv; #if APR_HAS_UNICODE_FS - apr_wchar_t wfname[APR_PATH_MAX]; + fspr_wchar_t wfname[APR_PATH_MAX]; #endif char *filename = NULL; @@ -489,12 +489,12 @@ APR_DECLARE(apr_status_t) apr_stat(apr_finfo_t *finfo, const char *fname, } if (rv = utf8_to_unicode_path(wfname, sizeof(wfname) - / sizeof(apr_wchar_t), fname)) + / sizeof(fspr_wchar_t), fname)) return rv; if (!(wanted & APR_FINFO_NAME)) { if (!GetFileAttributesExW(wfname, GetFileExInfoStandard, &FileInfo.i)) - return apr_get_os_error(); + return fspr_get_os_error(); } else { /* Guard against bogus wildcards and retrieve by name @@ -508,13 +508,13 @@ APR_DECLARE(apr_status_t) apr_stat(apr_finfo_t *finfo, const char *fname, } hFind = FindFirstFileW(wfname, &FileInfo.w); if (hFind == INVALID_HANDLE_VALUE) - return apr_get_os_error(); + return fspr_get_os_error(); FindClose(hFind); if (unicode_to_utf8_path(tmpname, sizeof(tmpname), FileInfo.w.cFileName)) { return APR_ENAMETOOLONG; } - filename = apr_pstrdup(pool, tmpname); + filename = fspr_pstrdup(pool, tmpname); } } #endif @@ -523,17 +523,17 @@ APR_DECLARE(apr_status_t) apr_stat(apr_finfo_t *finfo, const char *fname, { char *root = NULL; const char *test = fname; - rv = apr_filepath_root(&root, &test, APR_FILEPATH_NATIVE, pool); + rv = fspr_filepath_root(&root, &test, APR_FILEPATH_NATIVE, pool); isroot = (root && *root && !(*test)); - if ((apr_os_level >= APR_WIN_98) && (!(wanted & APR_FINFO_NAME) || isroot)) + if ((fspr_os_level >= APR_WIN_98) && (!(wanted & APR_FINFO_NAME) || isroot)) { /* cannot use FindFile on a Win98 root, it returns \* * GetFileAttributesExA is not available on Win95 */ if (!GetFileAttributesExA(fname, GetFileExInfoStandard, &FileInfo.i)) { - return apr_get_os_error(); + return fspr_get_os_error(); } } else if (isroot) { @@ -543,7 +543,7 @@ APR_DECLARE(apr_status_t) apr_stat(apr_finfo_t *finfo, const char *fname, { finfo->pool = pool; finfo->filetype = 0; - finfo->mtime = apr_time_now(); + finfo->mtime = fspr_time_now(); finfo->protection |= APR_WREAD | APR_WEXECUTE | APR_WWRITE; finfo->protection |= (finfo->protection << prot_scope_group) | (finfo->protection << prot_scope_user); @@ -567,10 +567,10 @@ APR_DECLARE(apr_status_t) apr_stat(apr_finfo_t *finfo, const char *fname, } hFind = FindFirstFileA(fname, &FileInfo.n); if (hFind == INVALID_HANDLE_VALUE) { - return apr_get_os_error(); + return fspr_get_os_error(); } FindClose(hFind); - filename = apr_pstrdup(pool, FileInfo.n.cFileName); + filename = fspr_pstrdup(pool, FileInfo.n.cFileName); } } #endif @@ -583,12 +583,12 @@ APR_DECLARE(apr_status_t) apr_stat(apr_finfo_t *finfo, const char *fname, * to reliably translate char devices to the path '\\.\device' * so go ask for the full path. */ - if (apr_os_level >= APR_WIN_NT) + if (fspr_os_level >= APR_WIN_NT) { #if APR_HAS_UNICODE_FS - apr_wchar_t tmpname[APR_FILE_MAX]; - apr_wchar_t *tmpoff = NULL; - if (GetFullPathNameW(wfname, sizeof(tmpname) / sizeof(apr_wchar_t), + fspr_wchar_t tmpname[APR_FILE_MAX]; + fspr_wchar_t *tmpoff = NULL; + if (GetFullPathNameW(wfname, sizeof(tmpname) / sizeof(fspr_wchar_t), tmpname, &tmpoff)) { if (!wcsncmp(tmpname, L"\\\\.\\", 4)) { @@ -646,7 +646,7 @@ APR_DECLARE(apr_status_t) apr_stat(apr_finfo_t *finfo, const char *fname, if (wanted &= ~finfo->valid) { /* Caller wants more than APR_FINFO_MIN | APR_FINFO_NAME */ #if APR_HAS_UNICODE_FS - if (apr_os_level >= APR_WIN_NT) + if (fspr_os_level >= APR_WIN_NT) return more_finfo(finfo, wfname, wanted, MORE_OF_WFSPEC); #endif return more_finfo(finfo, fname, wanted, MORE_OF_FSPEC); @@ -655,15 +655,15 @@ APR_DECLARE(apr_status_t) apr_stat(apr_finfo_t *finfo, const char *fname, return APR_SUCCESS; } -APR_DECLARE(apr_status_t) apr_file_attrs_set(const char *fname, - apr_fileattrs_t attributes, - apr_fileattrs_t attr_mask, - apr_pool_t *pool) +APR_DECLARE(fspr_status_t) fspr_file_attrs_set(const char *fname, + fspr_fileattrs_t attributes, + fspr_fileattrs_t attr_mask, + fspr_pool_t *pool) { DWORD flags; - apr_status_t rv; + fspr_status_t rv; #if APR_HAS_UNICODE_FS - apr_wchar_t wfname[APR_PATH_MAX]; + fspr_wchar_t wfname[APR_PATH_MAX]; #endif /* Don't do anything if we can't handle the requested attributes */ @@ -689,7 +689,7 @@ APR_DECLARE(apr_status_t) apr_file_attrs_set(const char *fname, #endif if (flags == 0xFFFFFFFF) - return apr_get_os_error(); + return fspr_get_os_error(); if (attr_mask & APR_FILE_ATTR_READONLY) { @@ -721,20 +721,20 @@ APR_DECLARE(apr_status_t) apr_file_attrs_set(const char *fname, #endif if (rv == 0) - return apr_get_os_error(); + return fspr_get_os_error(); return APR_SUCCESS; } -APR_DECLARE(apr_status_t) apr_file_mtime_set(const char *fname, - apr_time_t mtime, - apr_pool_t *pool) +APR_DECLARE(fspr_status_t) fspr_file_mtime_set(const char *fname, + fspr_time_t mtime, + fspr_pool_t *pool) { - apr_file_t *thefile; - apr_status_t rv; + fspr_file_t *thefile; + fspr_status_t rv; - rv = apr_file_open(&thefile, fname, + rv = fspr_file_open(&thefile, fname, APR_READ | APR_WRITEATTRS, APR_OS_DEFAULT, pool); if (!rv) @@ -745,16 +745,16 @@ APR_DECLARE(apr_status_t) apr_file_mtime_set(const char *fname, if (!GetFileTime(thefile->filehand, &file_ctime, &file_atime, &file_mtime)) - rv = apr_get_os_error(); + rv = fspr_get_os_error(); else { AprTimeToFileTime(&file_mtime, mtime); if (!SetFileTime(thefile->filehand, &file_ctime, &file_atime, &file_mtime)) - rv = apr_get_os_error(); + rv = fspr_get_os_error(); } - apr_file_close(thefile); + fspr_file_close(thefile); } return rv; diff --git a/libs/apr/file_io/win32/filesys.c b/libs/apr/file_io/win32/filesys.c index ad31e3387ac..0694cefac9c 100644 --- a/libs/apr/file_io/win32/filesys.c +++ b/libs/apr/file_io/win32/filesys.c @@ -14,9 +14,9 @@ * limitations under the License. */ -#include "apr.h" -#include "apr_arch_file_io.h" -#include "apr_strings.h" +#include "fspr.h" +#include "fspr_arch_file_io.h" +#include "fspr_strings.h" /* Win32 Exceptions: * @@ -38,7 +38,7 @@ * Oddly, \x7f _is_ acceptable ;) */ -/* apr_c_is_fnchar[] maps Win32's file name and shell escape symbols +/* fspr_c_is_fnchar[] maps Win32's file name and shell escape symbols * * element & 1 == valid file name character [excluding delimiters] * element & 2 == character should be shell (caret) escaped from cmd.exe @@ -46,7 +46,7 @@ * this must be in-sync with Apache httpd's gen_test_char.c for cgi escaping. */ -const char apr_c_is_fnchar[256] = +const char fspr_c_is_fnchar[256] = {/* Reject all ctrl codes... Escape \n and \r (ascii 10 and 13) */ 0,0,0,0,0,0,0,0,0,0,2,0,0,2,0,0, 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, /* ! " # $ % & ' ( ) * + , - . / 0 1 2 3 4 5 6 7 8 9 : ; < = > ? */ @@ -63,15 +63,15 @@ const char apr_c_is_fnchar[256] = }; -apr_status_t filepath_root_test(char *path, apr_pool_t *p) +fspr_status_t filepath_root_test(char *path, fspr_pool_t *p) { - apr_status_t rv; + fspr_status_t rv; #if APR_HAS_UNICODE_FS - if (apr_os_level >= APR_WIN_NT) + if (fspr_os_level >= APR_WIN_NT) { - apr_wchar_t wpath[APR_PATH_MAX]; + fspr_wchar_t wpath[APR_PATH_MAX]; if (rv = utf8_to_unicode_path(wpath, sizeof(wpath) - / sizeof(apr_wchar_t), path)) + / sizeof(fspr_wchar_t), path)) return rv; rv = GetDriveTypeW(wpath); } @@ -85,24 +85,24 @@ apr_status_t filepath_root_test(char *path, apr_pool_t *p) } -apr_status_t filepath_drive_get(char **rootpath, char drive, - apr_int32_t flags, apr_pool_t *p) +fspr_status_t filepath_drive_get(char **rootpath, char drive, + fspr_int32_t flags, fspr_pool_t *p) { char path[APR_PATH_MAX]; #if APR_HAS_UNICODE_FS IF_WIN_OS_IS_UNICODE { - apr_wchar_t *ignored; - apr_wchar_t wdrive[8]; - apr_wchar_t wpath[APR_PATH_MAX]; - apr_status_t rv; + fspr_wchar_t *ignored; + fspr_wchar_t wdrive[8]; + fspr_wchar_t wpath[APR_PATH_MAX]; + fspr_status_t rv; /* ???: This needs review, apparently "\\?\d:." returns "\\?\d:" * as if that is useful for anything. */ wcscpy(wdrive, L"D:."); - wdrive[0] = (apr_wchar_t)(unsigned char)drive; - if (!GetFullPathNameW(wdrive, sizeof(wpath) / sizeof(apr_wchar_t), wpath, &ignored)) - return apr_get_os_error(); + wdrive[0] = (fspr_wchar_t)(unsigned char)drive; + if (!GetFullPathNameW(wdrive, sizeof(wpath) / sizeof(fspr_wchar_t), wpath, &ignored)) + return fspr_get_os_error(); if ((rv = unicode_to_utf8_path(path, sizeof(path), wpath))) return rv; } @@ -117,7 +117,7 @@ apr_status_t filepath_drive_get(char **rootpath, char drive, drivestr[2] = '.';; drivestr[3] = '\0'; if (!GetFullPathName(drivestr, sizeof(path), path, &ignored)) - return apr_get_os_error(); + return fspr_get_os_error(); } #endif if (!(flags & APR_FILEPATH_NATIVE)) { @@ -126,34 +126,34 @@ apr_status_t filepath_drive_get(char **rootpath, char drive, **rootpath = '/'; } } - *rootpath = apr_pstrdup(p, path); + *rootpath = fspr_pstrdup(p, path); return APR_SUCCESS; } -apr_status_t filepath_root_case(char **rootpath, char *root, apr_pool_t *p) +fspr_status_t filepath_root_case(char **rootpath, char *root, fspr_pool_t *p) { #if APR_HAS_UNICODE_FS IF_WIN_OS_IS_UNICODE { - apr_wchar_t *ignored; - apr_wchar_t wpath[APR_PATH_MAX]; - apr_status_t rv; - apr_wchar_t wroot[APR_PATH_MAX]; + fspr_wchar_t *ignored; + fspr_wchar_t wpath[APR_PATH_MAX]; + fspr_status_t rv; + fspr_wchar_t wroot[APR_PATH_MAX]; /* ???: This needs review, apparently "\\?\d:." returns "\\?\d:" * as if that is useful for anything. */ if (rv = utf8_to_unicode_path(wroot, sizeof(wroot) - / sizeof(apr_wchar_t), root)) + / sizeof(fspr_wchar_t), root)) return rv; - if (!GetFullPathNameW(wroot, sizeof(wpath) / sizeof(apr_wchar_t), wpath, &ignored)) - return apr_get_os_error(); + if (!GetFullPathNameW(wroot, sizeof(wpath) / sizeof(fspr_wchar_t), wpath, &ignored)) + return fspr_get_os_error(); /* Borrow wroot as a char buffer (twice as big as necessary) */ if ((rv = unicode_to_utf8_path((char*)wroot, sizeof(wroot), wpath))) return rv; - *rootpath = apr_pstrdup(p, (char*)wroot); + *rootpath = fspr_pstrdup(p, (char*)wroot); } #endif #if APR_HAS_ANSI_FS @@ -162,25 +162,25 @@ apr_status_t filepath_root_case(char **rootpath, char *root, apr_pool_t *p) char path[APR_PATH_MAX]; char *ignored; if (!GetFullPathName(root, sizeof(path), path, &ignored)) - return apr_get_os_error(); - *rootpath = apr_pstrdup(p, path); + return fspr_get_os_error(); + *rootpath = fspr_pstrdup(p, path); } #endif return APR_SUCCESS; } -APR_DECLARE(apr_status_t) apr_filepath_get(char **rootpath, apr_int32_t flags, - apr_pool_t *p) +APR_DECLARE(fspr_status_t) fspr_filepath_get(char **rootpath, fspr_int32_t flags, + fspr_pool_t *p) { char path[APR_PATH_MAX]; #if APR_HAS_UNICODE_FS IF_WIN_OS_IS_UNICODE { - apr_wchar_t wpath[APR_PATH_MAX]; - apr_status_t rv; - if (!GetCurrentDirectoryW(sizeof(wpath) / sizeof(apr_wchar_t), wpath)) - return apr_get_os_error(); + fspr_wchar_t wpath[APR_PATH_MAX]; + fspr_status_t rv; + if (!GetCurrentDirectoryW(sizeof(wpath) / sizeof(fspr_wchar_t), wpath)) + return fspr_get_os_error(); if ((rv = unicode_to_utf8_path(path, sizeof(path), wpath))) return rv; } @@ -189,7 +189,7 @@ APR_DECLARE(apr_status_t) apr_filepath_get(char **rootpath, apr_int32_t flags, ELSE_WIN_OS_IS_ANSI { if (!GetCurrentDirectory(sizeof(path), path)) - return apr_get_os_error(); + return fspr_get_os_error(); } #endif if (!(flags & APR_FILEPATH_NATIVE)) { @@ -198,31 +198,31 @@ APR_DECLARE(apr_status_t) apr_filepath_get(char **rootpath, apr_int32_t flags, **rootpath = '/'; } } - *rootpath = apr_pstrdup(p, path); + *rootpath = fspr_pstrdup(p, path); return APR_SUCCESS; } -APR_DECLARE(apr_status_t) apr_filepath_set(const char *rootpath, - apr_pool_t *p) +APR_DECLARE(fspr_status_t) fspr_filepath_set(const char *rootpath, + fspr_pool_t *p) { #if APR_HAS_UNICODE_FS IF_WIN_OS_IS_UNICODE { - apr_wchar_t wpath[APR_PATH_MAX]; - apr_status_t rv; + fspr_wchar_t wpath[APR_PATH_MAX]; + fspr_status_t rv; if (rv = utf8_to_unicode_path(wpath, sizeof(wpath) - / sizeof(apr_wchar_t), rootpath)) + / sizeof(fspr_wchar_t), rootpath)) return rv; if (!SetCurrentDirectoryW(wpath)) - return apr_get_os_error(); + return fspr_get_os_error(); } #endif #if APR_HAS_ANSI_FS ELSE_WIN_OS_IS_ANSI { if (!SetCurrentDirectory(rootpath)) - return apr_get_os_error(); + return fspr_get_os_error(); } #endif return APR_SUCCESS; diff --git a/libs/apr/file_io/win32/flock.c b/libs/apr/file_io/win32/flock.c index e08e08a7a40..17b84596427 100644 --- a/libs/apr/file_io/win32/flock.c +++ b/libs/apr/file_io/win32/flock.c @@ -14,9 +14,9 @@ * limitations under the License. */ -#include "apr_arch_file_io.h" +#include "fspr_arch_file_io.h" -APR_DECLARE(apr_status_t) apr_file_lock(apr_file_t *thefile, int type) +APR_DECLARE(fspr_status_t) fspr_file_lock(fspr_file_t *thefile, int type) { #ifdef _WIN32_WCE /* The File locking is unsuported on WCE */ @@ -28,12 +28,12 @@ APR_DECLARE(apr_status_t) apr_file_lock(apr_file_t *thefile, int type) flags = ((type & APR_FLOCK_NONBLOCK) ? LOCKFILE_FAIL_IMMEDIATELY : 0) + (((type & APR_FLOCK_TYPEMASK) == APR_FLOCK_SHARED) ? 0 : LOCKFILE_EXCLUSIVE_LOCK); - if (apr_os_level >= APR_WIN_NT) { + if (fspr_os_level >= APR_WIN_NT) { /* Syntax is correct, len is passed for LengthLow and LengthHigh*/ OVERLAPPED offset; memset (&offset, 0, sizeof(offset)); if (!LockFileEx(thefile->filehand, flags, 0, len, len, &offset)) - return apr_get_os_error(); + return fspr_get_os_error(); } else { /* On Win9x, LockFile() never blocks. Hack in a crufty poll. @@ -62,23 +62,23 @@ APR_DECLARE(apr_status_t) apr_file_lock(apr_file_t *thefile, int type) #endif /* !defined(_WIN32_WCE) */ } -APR_DECLARE(apr_status_t) apr_file_unlock(apr_file_t *thefile) +APR_DECLARE(fspr_status_t) fspr_file_unlock(fspr_file_t *thefile) { #ifdef _WIN32_WCE return APR_ENOTIMPL; #else DWORD len = 0xffffffff; - if (apr_os_level >= APR_WIN_NT) { + if (fspr_os_level >= APR_WIN_NT) { /* Syntax is correct, len is passed for LengthLow and LengthHigh*/ OVERLAPPED offset; memset (&offset, 0, sizeof(offset)); if (!UnlockFileEx(thefile->filehand, 0, len, len, &offset)) - return apr_get_os_error(); + return fspr_get_os_error(); } else { if (!UnlockFile(thefile->filehand, 0, 0, len, 0)) - return apr_get_os_error(); + return fspr_get_os_error(); } return APR_SUCCESS; diff --git a/libs/apr/file_io/win32/open.c b/libs/apr/file_io/win32/open.c index b3a5176729d..2ed23c1d33c 100644 --- a/libs/apr/file_io/win32/open.c +++ b/libs/apr/file_io/win32/open.c @@ -14,13 +14,13 @@ * limitations under the License. */ -#include "apr_private.h" -#include "apr_arch_file_io.h" -#include "apr_file_io.h" -#include "apr_general.h" -#include "apr_strings.h" -#include "apr_portable.h" -#include "apr_thread_mutex.h" +#include "fspr_private.h" +#include "fspr_arch_file_io.h" +#include "fspr_file_io.h" +#include "fspr_general.h" +#include "fspr_strings.h" +#include "fspr_portable.h" +#include "fspr_thread_mutex.h" #if APR_HAVE_ERRNO_H #include #endif @@ -29,11 +29,11 @@ #if APR_HAVE_SYS_STAT_H #include #endif -#include "apr_arch_misc.h" -#include "apr_arch_inherit.h" +#include "fspr_arch_misc.h" +#include "fspr_arch_inherit.h" #if APR_HAS_UNICODE_FS -apr_status_t utf8_to_unicode_path(apr_wchar_t* retstr, apr_size_t retlen, +fspr_status_t utf8_to_unicode_path(fspr_wchar_t* retstr, fspr_size_t retlen, const char* srcstr) { /* TODO: The computations could preconvert the string to determine @@ -48,9 +48,9 @@ apr_status_t utf8_to_unicode_path(apr_wchar_t* retstr, apr_size_t retlen, * Note that the \\?\ form only works for local drive paths, and * \\?\UNC\ is needed UNC paths. */ - apr_size_t srcremains = strlen(srcstr) + 1; - apr_wchar_t *t = retstr; - apr_status_t rv; + fspr_size_t srcremains = strlen(srcstr) + 1; + fspr_wchar_t *t = retstr; + fspr_status_t rv; /* This is correct, we don't twist the filename if it is will * definately be shorter than MAX_PATH. It merits some @@ -81,7 +81,7 @@ apr_status_t utf8_to_unicode_path(apr_wchar_t* retstr, apr_size_t retlen, } } - if (rv = apr_conv_utf8_to_ucs2(srcstr, &srcremains, t, &retlen)) { + if (rv = fspr_conv_utf8_to_ucs2(srcstr, &srcremains, t, &retlen)) { return (rv == APR_INCOMPLETE) ? APR_EINVAL : rv; } if (srcremains) { @@ -93,8 +93,8 @@ apr_status_t utf8_to_unicode_path(apr_wchar_t* retstr, apr_size_t retlen, return APR_SUCCESS; } -apr_status_t unicode_to_utf8_path(char* retstr, apr_size_t retlen, - const apr_wchar_t* srcstr) +fspr_status_t unicode_to_utf8_path(char* retstr, fspr_size_t retlen, + const fspr_wchar_t* srcstr) { /* Skip the leading 4 characters if the path begins \\?\, or substitute * // for the \\?\UNC\ path prefix, allocating the maximum string @@ -102,8 +102,8 @@ apr_status_t unicode_to_utf8_path(char* retstr, apr_size_t retlen, * then transform \\'s back into /'s since the \\?\ form never * allows '/' path seperators, and APR always uses '/'s. */ - apr_size_t srcremains = wcslen(srcstr) + 1; - apr_status_t rv; + fspr_size_t srcremains = wcslen(srcstr) + 1; + fspr_status_t rv; char *t = retstr; if (srcstr[0] == L'\\' && srcstr[1] == L'\\' && srcstr[2] == L'?' && srcstr[3] == L'\\') { @@ -122,7 +122,7 @@ apr_status_t unicode_to_utf8_path(char* retstr, apr_size_t retlen, } } - if (rv = apr_conv_ucs2_to_utf8(srcstr, &srcremains, t, &retlen)) { + if (rv = fspr_conv_ucs2_to_utf8(srcstr, &srcremains, t, &retlen)) { return rv; } if (srcremains) { @@ -132,17 +132,17 @@ apr_status_t unicode_to_utf8_path(char* retstr, apr_size_t retlen, } #endif -void *res_name_from_filename(const char *file, int global, apr_pool_t *pool) +void *res_name_from_filename(const char *file, int global, fspr_pool_t *pool) { #if APR_HAS_UNICODE_FS IF_WIN_OS_IS_UNICODE { - apr_wchar_t *wpre, *wfile, *ch; - apr_size_t n = strlen(file) + 1; - apr_size_t r, d; - apr_status_t rv; + fspr_wchar_t *wpre, *wfile, *ch; + fspr_size_t n = strlen(file) + 1; + fspr_size_t r, d; + fspr_status_t rv; - if (apr_os_level >= APR_WIN_2000) { + if (fspr_os_level >= APR_WIN_2000) { if (global) wpre = L"Global\\"; else @@ -161,10 +161,10 @@ void *res_name_from_filename(const char *file, int global, apr_pool_t *pool) --n; } } - wfile = apr_palloc(pool, (r + n) * sizeof(apr_wchar_t)); + wfile = fspr_palloc(pool, (r + n) * sizeof(fspr_wchar_t)); wcscpy(wfile, wpre); d = n; - if (rv = apr_conv_utf8_to_ucs2(file, &n, wfile + r, &d)) { + if (rv = fspr_conv_utf8_to_ucs2(file, &n, wfile + r, &d)) { return NULL; } for (ch = wfile + r; *ch; ++ch) { @@ -178,14 +178,14 @@ void *res_name_from_filename(const char *file, int global, apr_pool_t *pool) ELSE_WIN_OS_IS_ANSI { char *nfile, *ch; - apr_size_t n = strlen(file) + 1; + fspr_size_t n = strlen(file) + 1; #if !APR_HAS_UNICODE_FS - apr_status_t rv; - apr_size_t r, d; + fspr_status_t rv; + fspr_size_t r, d; char *pre; - if (apr_os_level >= APR_WIN_2000) { + if (fspr_os_level >= APR_WIN_2000) { if (global) pre = "Global\\"; else @@ -199,16 +199,16 @@ void *res_name_from_filename(const char *file, int global, apr_pool_t *pool) file += n - 256 - r; n = 256; } - nfile = apr_palloc(pool, (r + n) * sizeof(apr_wchar_t)); + nfile = fspr_palloc(pool, (r + n) * sizeof(fspr_wchar_t)); memcpy(nfile, pre, r); memcpy(nfile + r, file, n); #else - const apr_size_t r = 0; + const fspr_size_t r = 0; if (n > 256) { file += n - 256; n = 256; } - nfile = apr_pmemdup(pool, file, n); + nfile = fspr_pmemdup(pool, file, n); #endif for (ch = nfile + r; *ch; ++ch) { if (*ch == ':' || *ch == '/' || *ch == '\\') @@ -220,10 +220,10 @@ void *res_name_from_filename(const char *file, int global, apr_pool_t *pool) } -apr_status_t file_cleanup(void *thefile) +fspr_status_t file_cleanup(void *thefile) { - apr_file_t *file = thefile; - apr_status_t flush_rv = APR_SUCCESS; + fspr_file_t *file = thefile; + fspr_status_t flush_rv = APR_SUCCESS; if (file->filehand != INVALID_HANDLE_VALUE) { @@ -243,7 +243,7 @@ apr_status_t file_cleanup(void *thefile) if (file->buffered) { /* XXX: flush here is not mutex protected */ - flush_rv = apr_file_flush((apr_file_t *)thefile); + flush_rv = fspr_file_flush((fspr_file_t *)thefile); } CloseHandle(file->filehand); file->filehand = INVALID_HANDLE_VALUE; @@ -255,16 +255,16 @@ apr_status_t file_cleanup(void *thefile) return flush_rv; } -APR_DECLARE(apr_status_t) apr_file_open(apr_file_t **new, const char *fname, - apr_int32_t flag, apr_fileperms_t perm, - apr_pool_t *pool) +APR_DECLARE(fspr_status_t) fspr_file_open(fspr_file_t **new, const char *fname, + fspr_int32_t flag, fspr_fileperms_t perm, + fspr_pool_t *pool) { HANDLE handle = INVALID_HANDLE_VALUE; DWORD oflags = 0; DWORD createflags = 0; DWORD attributes = 0; DWORD sharemode = FILE_SHARE_READ | FILE_SHARE_WRITE; - apr_status_t rv; + fspr_status_t rv; if (flag & APR_READ) { oflags |= GENERIC_READ; @@ -276,7 +276,7 @@ APR_DECLARE(apr_status_t) apr_file_open(apr_file_t **new, const char *fname, oflags |= FILE_WRITE_ATTRIBUTES; } - if (apr_os_level >= APR_WIN_NT) + if (fspr_os_level >= APR_WIN_NT) sharemode |= FILE_SHARE_DELETE; if (flag & APR_CREATE) { @@ -310,7 +310,7 @@ APR_DECLARE(apr_status_t) apr_file_open(apr_file_t **new, const char *fname, attributes |= FILE_FLAG_OPEN_REPARSE_POINT; } - /* Without READ or WRITE, we fail unless apr called apr_file_open + /* Without READ or WRITE, we fail unless apr called fspr_file_open * internally with the private APR_OPENINFO flag. * * With the APR_OPENINFO flag on NT, use the option flag @@ -319,7 +319,7 @@ APR_DECLARE(apr_status_t) apr_file_open(apr_file_t **new, const char *fname, */ if (!(flag & (APR_READ | APR_WRITE))) { if (flag & APR_OPENINFO) { - if (apr_os_level >= APR_WIN_NT) { + if (fspr_os_level >= APR_WIN_NT) { attributes |= FILE_FLAG_BACKUP_SEMANTICS; } } @@ -340,7 +340,7 @@ APR_DECLARE(apr_status_t) apr_file_open(apr_file_t **new, const char *fname, #if APR_HAS_UNICODE_FS IF_WIN_OS_IS_UNICODE { - apr_wchar_t wfname[APR_PATH_MAX]; + fspr_wchar_t wfname[APR_PATH_MAX]; if (flag & APR_SENDFILE_ENABLED) { /* This feature is required to enable sendfile operations @@ -351,7 +351,7 @@ APR_DECLARE(apr_status_t) apr_file_open(apr_file_t **new, const char *fname, } if (rv = utf8_to_unicode_path(wfname, sizeof(wfname) - / sizeof(apr_wchar_t), fname)) + / sizeof(fspr_wchar_t), fname)) return rv; handle = CreateFileW(wfname, oflags, sharemode, NULL, createflags, attributes, 0); @@ -370,13 +370,13 @@ APR_DECLARE(apr_status_t) apr_file_open(apr_file_t **new, const char *fname, } #endif if (handle == INVALID_HANDLE_VALUE) { - return apr_get_os_error(); + return fspr_get_os_error(); } - (*new) = (apr_file_t *)apr_pcalloc(pool, sizeof(apr_file_t)); + (*new) = (fspr_file_t *)fspr_pcalloc(pool, sizeof(fspr_file_t)); (*new)->pool = pool; (*new)->filehand = handle; - (*new)->fname = apr_pstrdup(pool, fname); + (*new)->fname = fspr_pstrdup(pool, fname); (*new)->flags = flag; (*new)->timeout = -1; (*new)->ungetchar = -1; @@ -387,15 +387,15 @@ APR_DECLARE(apr_status_t) apr_file_open(apr_file_t **new, const char *fname, } if (flag & APR_BUFFERED) { (*new)->buffered = 1; - (*new)->buffer = apr_palloc(pool, APR_FILE_BUFSIZE); + (*new)->buffer = fspr_palloc(pool, APR_FILE_BUFSIZE); } /* Need the mutex to handled buffered and O_APPEND style file i/o */ if ((*new)->buffered || (*new)->append) { - rv = apr_thread_mutex_create(&(*new)->mutex, + rv = fspr_thread_mutex_create(&(*new)->mutex, APR_THREAD_MUTEX_DEFAULT, pool); if (rv) { if (file_cleanup(*new) == APR_SUCCESS) { - apr_pool_cleanup_kill(pool, *new, file_cleanup); + fspr_pool_cleanup_kill(pool, *new, file_cleanup); } return rv; } @@ -403,23 +403,23 @@ APR_DECLARE(apr_status_t) apr_file_open(apr_file_t **new, const char *fname, /* Create a pollset with room for one descriptor. */ /* ### check return codes */ - (void) apr_pollset_create(&(*new)->pollset, 1, pool, 0); + (void) fspr_pollset_create(&(*new)->pollset, 1, pool, 0); if (!(flag & APR_FILE_NOCLEANUP)) { - apr_pool_cleanup_register((*new)->pool, (void *)(*new), file_cleanup, - apr_pool_cleanup_null); + fspr_pool_cleanup_register((*new)->pool, (void *)(*new), file_cleanup, + fspr_pool_cleanup_null); } return APR_SUCCESS; } -APR_DECLARE(apr_status_t) apr_file_close(apr_file_t *file) +APR_DECLARE(fspr_status_t) fspr_file_close(fspr_file_t *file) { - apr_status_t stat; + fspr_status_t stat; if ((stat = file_cleanup(file)) == APR_SUCCESS) { - apr_pool_cleanup_kill(file->pool, file, file_cleanup); + fspr_pool_cleanup_kill(file->pool, file, file_cleanup); if (file->mutex) { - apr_thread_mutex_destroy(file->mutex); + fspr_thread_mutex_destroy(file->mutex); } return APR_SUCCESS; @@ -427,15 +427,15 @@ APR_DECLARE(apr_status_t) apr_file_close(apr_file_t *file) return stat; } -APR_DECLARE(apr_status_t) apr_file_remove(const char *path, apr_pool_t *pool) +APR_DECLARE(fspr_status_t) fspr_file_remove(const char *path, fspr_pool_t *pool) { #if APR_HAS_UNICODE_FS IF_WIN_OS_IS_UNICODE { - apr_wchar_t wpath[APR_PATH_MAX]; - apr_status_t rv; + fspr_wchar_t wpath[APR_PATH_MAX]; + fspr_status_t rv; if (rv = utf8_to_unicode_path(wpath, sizeof(wpath) - / sizeof(apr_wchar_t), path)) { + / sizeof(fspr_wchar_t), path)) { return rv; } if (DeleteFileW(wpath)) @@ -447,24 +447,24 @@ APR_DECLARE(apr_status_t) apr_file_remove(const char *path, apr_pool_t *pool) if (DeleteFile(path)) return APR_SUCCESS; #endif - return apr_get_os_error(); + return fspr_get_os_error(); } -APR_DECLARE(apr_status_t) apr_file_rename(const char *frompath, +APR_DECLARE(fspr_status_t) fspr_file_rename(const char *frompath, const char *topath, - apr_pool_t *pool) + fspr_pool_t *pool) { IF_WIN_OS_IS_UNICODE { #if APR_HAS_UNICODE_FS - apr_wchar_t wfrompath[APR_PATH_MAX], wtopath[APR_PATH_MAX]; - apr_status_t rv; + fspr_wchar_t wfrompath[APR_PATH_MAX], wtopath[APR_PATH_MAX]; + fspr_status_t rv; if (rv = utf8_to_unicode_path(wfrompath, sizeof(wfrompath) - / sizeof(apr_wchar_t), frompath)) { + / sizeof(fspr_wchar_t), frompath)) { return rv; } if (rv = utf8_to_unicode_path(wtopath, sizeof(wtopath) - / sizeof(apr_wchar_t), topath)) { + / sizeof(fspr_wchar_t), topath)) { return rv; } #ifndef _WIN32_WCE @@ -496,28 +496,28 @@ APR_DECLARE(apr_status_t) apr_file_rename(const char *frompath, { CloseHandle(handle); if (!DeleteFile(topath)) - return apr_get_os_error(); + return fspr_get_os_error(); } if (MoveFile(frompath, topath)) return APR_SUCCESS; } #endif - return apr_get_os_error(); + return fspr_get_os_error(); } -APR_DECLARE(apr_status_t) apr_os_file_get(apr_os_file_t *thefile, - apr_file_t *file) +APR_DECLARE(fspr_status_t) fspr_os_file_get(fspr_os_file_t *thefile, + fspr_file_t *file) { *thefile = file->filehand; return APR_SUCCESS; } -APR_DECLARE(apr_status_t) apr_os_file_put(apr_file_t **file, - apr_os_file_t *thefile, - apr_int32_t flags, - apr_pool_t *pool) +APR_DECLARE(fspr_status_t) fspr_os_file_put(fspr_file_t **file, + fspr_os_file_t *thefile, + fspr_int32_t flags, + fspr_pool_t *pool) { - (*file) = apr_pcalloc(pool, sizeof(apr_file_t)); + (*file) = fspr_pcalloc(pool, sizeof(fspr_file_t)); (*file)->pool = pool; (*file)->filehand = *thefile; (*file)->ungetchar = -1; /* no char avail */ @@ -529,16 +529,16 @@ APR_DECLARE(apr_status_t) apr_os_file_put(apr_file_t **file, } if (flags & APR_BUFFERED) { (*file)->buffered = 1; - (*file)->buffer = apr_palloc(pool, APR_FILE_BUFSIZE); + (*file)->buffer = fspr_palloc(pool, APR_FILE_BUFSIZE); } if ((*file)->append || (*file)->buffered) { - apr_status_t rv; - rv = apr_thread_mutex_create(&(*file)->mutex, + fspr_status_t rv; + rv = fspr_thread_mutex_create(&(*file)->mutex, APR_THREAD_MUTEX_DEFAULT, pool); if (rv) { if (file_cleanup(*file) == APR_SUCCESS) { - apr_pool_cleanup_kill(pool, *file, file_cleanup); + fspr_pool_cleanup_kill(pool, *file, file_cleanup); } return rv; } @@ -546,7 +546,7 @@ APR_DECLARE(apr_status_t) apr_os_file_put(apr_file_t **file, /* Create a pollset with room for one descriptor. */ /* ### check return codes */ - (void) apr_pollset_create(&(*file)->pollset, 1, pool, 0); + (void) fspr_pollset_create(&(*file)->pollset, 1, pool, 0); /* XXX... we pcalloc above so all others are zeroed. * Should we be testing if thefile is a handle to @@ -557,7 +557,7 @@ APR_DECLARE(apr_status_t) apr_os_file_put(apr_file_t **file, return APR_SUCCESS; } -APR_DECLARE(apr_status_t) apr_file_eof(apr_file_t *fptr) +APR_DECLARE(fspr_status_t) fspr_file_eof(fspr_file_t *fptr) { if (fptr->eof_hit == 1) { return APR_EOF; @@ -565,66 +565,66 @@ APR_DECLARE(apr_status_t) apr_file_eof(apr_file_t *fptr) return APR_SUCCESS; } -APR_DECLARE(apr_status_t) apr_file_open_stderr(apr_file_t **thefile, apr_pool_t *pool) +APR_DECLARE(fspr_status_t) fspr_file_open_stderr(fspr_file_t **thefile, fspr_pool_t *pool) { #ifdef _WIN32_WCE return APR_ENOTIMPL; #else - apr_os_file_t file_handle; + fspr_os_file_t file_handle; - apr_set_os_error(APR_SUCCESS); + fspr_set_os_error(APR_SUCCESS); file_handle = GetStdHandle(STD_ERROR_HANDLE); if (!file_handle || (file_handle == INVALID_HANDLE_VALUE)) { - apr_status_t rv = apr_get_os_error(); + fspr_status_t rv = fspr_get_os_error(); if (rv == APR_SUCCESS) { return APR_EINVAL; } return rv; } - return apr_os_file_put(thefile, &file_handle, 0, pool); + return fspr_os_file_put(thefile, &file_handle, 0, pool); #endif } -APR_DECLARE(apr_status_t) apr_file_open_stdout(apr_file_t **thefile, apr_pool_t *pool) +APR_DECLARE(fspr_status_t) fspr_file_open_stdout(fspr_file_t **thefile, fspr_pool_t *pool) { #ifdef _WIN32_WCE return APR_ENOTIMPL; #else - apr_os_file_t file_handle; + fspr_os_file_t file_handle; - apr_set_os_error(APR_SUCCESS); + fspr_set_os_error(APR_SUCCESS); file_handle = GetStdHandle(STD_OUTPUT_HANDLE); if (!file_handle || (file_handle == INVALID_HANDLE_VALUE)) { - apr_status_t rv = apr_get_os_error(); + fspr_status_t rv = fspr_get_os_error(); if (rv == APR_SUCCESS) { return APR_EINVAL; } return rv; } - return apr_os_file_put(thefile, &file_handle, 0, pool); + return fspr_os_file_put(thefile, &file_handle, 0, pool); #endif } -APR_DECLARE(apr_status_t) apr_file_open_stdin(apr_file_t **thefile, apr_pool_t *pool) +APR_DECLARE(fspr_status_t) fspr_file_open_stdin(fspr_file_t **thefile, fspr_pool_t *pool) { #ifdef _WIN32_WCE return APR_ENOTIMPL; #else - apr_os_file_t file_handle; + fspr_os_file_t file_handle; - apr_set_os_error(APR_SUCCESS); + fspr_set_os_error(APR_SUCCESS); file_handle = GetStdHandle(STD_INPUT_HANDLE); if (!file_handle || (file_handle == INVALID_HANDLE_VALUE)) { - apr_status_t rv = apr_get_os_error(); + fspr_status_t rv = fspr_get_os_error(); if (rv == APR_SUCCESS) { return APR_EINVAL; } return rv; } - return apr_os_file_put(thefile, &file_handle, 0, pool); + return fspr_os_file_put(thefile, &file_handle, 0, pool); #endif } diff --git a/libs/apr/file_io/win32/pipe.c b/libs/apr/file_io/win32/pipe.c index cda79e3af34..a9da026a37d 100644 --- a/libs/apr/file_io/win32/pipe.c +++ b/libs/apr/file_io/win32/pipe.c @@ -14,10 +14,10 @@ * limitations under the License. */ -#include "win32/apr_arch_file_io.h" -#include "apr_file_io.h" -#include "apr_general.h" -#include "apr_strings.h" +#include "win32/fspr_arch_file_io.h" +#include "fspr_file_io.h" +#include "fspr_general.h" +#include "fspr_strings.h" #if APR_HAVE_ERRNO_H #include #endif @@ -29,9 +29,9 @@ #if APR_HAVE_SYS_STAT_H #include #endif -#include "apr_arch_misc.h" +#include "fspr_arch_misc.h" -APR_DECLARE(apr_status_t) apr_file_pipe_timeout_set(apr_file_t *thepipe, apr_interval_time_t timeout) +APR_DECLARE(fspr_status_t) fspr_file_pipe_timeout_set(fspr_file_t *thepipe, fspr_interval_time_t timeout) { /* Always OK to unset timeouts */ if (timeout == -1) { @@ -50,30 +50,30 @@ APR_DECLARE(apr_status_t) apr_file_pipe_timeout_set(apr_file_t *thepipe, apr_int return APR_SUCCESS; } -APR_DECLARE(apr_status_t) apr_file_pipe_timeout_get(apr_file_t *thepipe, apr_interval_time_t *timeout) +APR_DECLARE(fspr_status_t) fspr_file_pipe_timeout_get(fspr_file_t *thepipe, fspr_interval_time_t *timeout) { /* Always OK to get the timeout (even if it's unset ... -1) */ *timeout = thepipe->timeout; return APR_SUCCESS; } -APR_DECLARE(apr_status_t) apr_file_pipe_create(apr_file_t **in, apr_file_t **out, apr_pool_t *p) +APR_DECLARE(fspr_status_t) fspr_file_pipe_create(fspr_file_t **in, fspr_file_t **out, fspr_pool_t *p) { /* Unix creates full blocking pipes. */ - return apr_create_nt_pipe(in, out, APR_FULL_BLOCK, p); + return fspr_create_nt_pipe(in, out, APR_FULL_BLOCK, p); } -/* apr_create_nt_pipe() - * An internal (for now) APR function used by apr_proc_create() +/* fspr_create_nt_pipe() + * An internal (for now) APR function used by fspr_proc_create() * when setting up pipes to communicate with the child process. - * apr_create_nt_pipe() allows setting the blocking mode of each end of + * fspr_create_nt_pipe() allows setting the blocking mode of each end of * the pipe when the pipe is created (rather than after the pipe is created). * A pipe handle must be opened in full async i/o mode in order to * emulate Unix non-blocking pipes with timeouts. * * In general, we don't want to enable child side pipe handles for async i/o. * This prevents us from enabling both ends of the pipe for async i/o in - * apr_file_pipe_create. + * fspr_file_pipe_create. * * Why not use NamedPipes on NT which support setting pipe state to * non-blocking? On NT, even though you can set a pipe non-blocking, @@ -81,9 +81,9 @@ APR_DECLARE(apr_status_t) apr_file_pipe_create(apr_file_t **in, apr_file_t **out * WaitForSinglelObject, et. al. will not detect pipe i/o). On NT, you * have to poll the pipe to detect i/o on a non-blocking pipe. */ -apr_status_t apr_create_nt_pipe(apr_file_t **in, apr_file_t **out, - apr_int32_t blocking_mode, - apr_pool_t *p) +fspr_status_t fspr_create_nt_pipe(fspr_file_t **in, fspr_file_t **out, + fspr_int32_t blocking_mode, + fspr_pool_t *p) { #ifdef _WIN32_WCE return APR_ENOTIMPL; @@ -98,7 +98,7 @@ apr_status_t apr_create_nt_pipe(apr_file_t **in, apr_file_t **out, sa.bInheritHandle = TRUE; sa.lpSecurityDescriptor = NULL; - (*in) = (apr_file_t *)apr_pcalloc(p, sizeof(apr_file_t)); + (*in) = (fspr_file_t *)fspr_pcalloc(p, sizeof(fspr_file_t)); (*in)->pool = p; (*in)->fname = NULL; (*in)->pipe = 1; @@ -110,9 +110,9 @@ apr_status_t apr_create_nt_pipe(apr_file_t **in, apr_file_t **out, (*in)->dataRead = 0; (*in)->direction = 0; (*in)->pOverlapped = NULL; - (void) apr_pollset_create(&(*in)->pollset, 1, p, 0); + (void) fspr_pollset_create(&(*in)->pollset, 1, p, 0); - (*out) = (apr_file_t *)apr_pcalloc(p, sizeof(apr_file_t)); + (*out) = (fspr_file_t *)fspr_pcalloc(p, sizeof(fspr_file_t)); (*out)->pool = p; (*out)->fname = NULL; (*out)->pipe = 1; @@ -124,15 +124,15 @@ apr_status_t apr_create_nt_pipe(apr_file_t **in, apr_file_t **out, (*out)->dataRead = 0; (*out)->direction = 0; (*out)->pOverlapped = NULL; - (void) apr_pollset_create(&(*out)->pollset, 1, p, 0); + (void) fspr_pollset_create(&(*out)->pollset, 1, p, 0); - if (apr_os_level >= APR_WIN_NT) { + if (fspr_os_level >= APR_WIN_NT) { /* Create the read end of the pipe */ dwOpenMode = PIPE_ACCESS_INBOUND; if (blocking_mode == APR_WRITE_BLOCK /* READ_NONBLOCK */ || blocking_mode == APR_FULL_NONBLOCK) { dwOpenMode |= FILE_FLAG_OVERLAPPED; - (*in)->pOverlapped = (OVERLAPPED*) apr_pcalloc(p, sizeof(OVERLAPPED)); + (*in)->pOverlapped = (OVERLAPPED*) fspr_pcalloc(p, sizeof(OVERLAPPED)); (*in)->pOverlapped->hEvent = CreateEvent(NULL, FALSE, FALSE, NULL); } @@ -154,7 +154,7 @@ apr_status_t apr_create_nt_pipe(apr_file_t **in, apr_file_t **out, if (blocking_mode == APR_READ_BLOCK /* WRITE_NONBLOCK */ || blocking_mode == APR_FULL_NONBLOCK) { dwOpenMode |= FILE_FLAG_OVERLAPPED; - (*out)->pOverlapped = (OVERLAPPED*) apr_pcalloc(p, sizeof(OVERLAPPED)); + (*out)->pOverlapped = (OVERLAPPED*) fspr_pcalloc(p, sizeof(OVERLAPPED)); (*out)->pOverlapped->hEvent = CreateEvent(NULL, FALSE, FALSE, NULL); } @@ -169,22 +169,22 @@ apr_status_t apr_create_nt_pipe(apr_file_t **in, apr_file_t **out, else { /* Pipes on Win9* are blocking. Live with it. */ if (!CreatePipe(&(*in)->filehand, &(*out)->filehand, &sa, 65536)) { - return apr_get_os_error(); + return fspr_get_os_error(); } } - apr_pool_cleanup_register((*in)->pool, (void *)(*in), file_cleanup, - apr_pool_cleanup_null); - apr_pool_cleanup_register((*out)->pool, (void *)(*out), file_cleanup, - apr_pool_cleanup_null); + fspr_pool_cleanup_register((*in)->pool, (void *)(*in), file_cleanup, + fspr_pool_cleanup_null); + fspr_pool_cleanup_register((*out)->pool, (void *)(*out), file_cleanup, + fspr_pool_cleanup_null); return APR_SUCCESS; #endif /* _WIN32_WCE */ } -APR_DECLARE(apr_status_t) apr_file_namedpipe_create(const char *filename, - apr_fileperms_t perm, - apr_pool_t *pool) +APR_DECLARE(fspr_status_t) fspr_file_namedpipe_create(const char *filename, + fspr_fileperms_t perm, + fspr_pool_t *pool) { /* Not yet implemented, interface not suitable. * Win32 requires the named pipe to be *opened* at the time it's @@ -200,31 +200,31 @@ APR_DECLARE(apr_status_t) apr_file_namedpipe_create(const char *filename, * would be to handle stdio-style or blocking pipes. Win32 doesn't have * select() blocking for pipes anyways :( */ -APR_DECLARE(apr_status_t) apr_os_pipe_put_ex(apr_file_t **file, - apr_os_file_t *thefile, +APR_DECLARE(fspr_status_t) fspr_os_pipe_put_ex(fspr_file_t **file, + fspr_os_file_t *thefile, int register_cleanup, - apr_pool_t *pool) + fspr_pool_t *pool) { - (*file) = apr_pcalloc(pool, sizeof(apr_file_t)); + (*file) = fspr_pcalloc(pool, sizeof(fspr_file_t)); (*file)->pool = pool; (*file)->pipe = 1; (*file)->timeout = -1; (*file)->ungetchar = -1; (*file)->filehand = *thefile; - (void) apr_pollset_create(&(*file)->pollset, 1, pool, 0); + (void) fspr_pollset_create(&(*file)->pollset, 1, pool, 0); if (register_cleanup) { - apr_pool_cleanup_register(pool, *file, file_cleanup, - apr_pool_cleanup_null); + fspr_pool_cleanup_register(pool, *file, file_cleanup, + fspr_pool_cleanup_null); } return APR_SUCCESS; } -APR_DECLARE(apr_status_t) apr_os_pipe_put(apr_file_t **file, - apr_os_file_t *thefile, - apr_pool_t *pool) +APR_DECLARE(fspr_status_t) fspr_os_pipe_put(fspr_file_t **file, + fspr_os_file_t *thefile, + fspr_pool_t *pool) { - return apr_os_pipe_put_ex(file, thefile, 0, pool); + return fspr_os_pipe_put_ex(file, thefile, 0, pool); } diff --git a/libs/apr/file_io/win32/readwrite.c b/libs/apr/file_io/win32/readwrite.c index d15ac7c1acc..a0acc26943d 100644 --- a/libs/apr/file_io/win32/readwrite.c +++ b/libs/apr/file_io/win32/readwrite.c @@ -14,23 +14,23 @@ * limitations under the License. */ -#include "win32/apr_arch_file_io.h" -#include "apr_file_io.h" -#include "apr_general.h" -#include "apr_strings.h" -#include "apr_lib.h" -#include "apr_errno.h" +#include "win32/fspr_arch_file_io.h" +#include "fspr_file_io.h" +#include "fspr_general.h" +#include "fspr_strings.h" +#include "fspr_lib.h" +#include "fspr_errno.h" #include -#include "apr_arch_atime.h" -#include "apr_arch_misc.h" +#include "fspr_arch_atime.h" +#include "fspr_arch_misc.h" /* * read_with_timeout() * Uses async i/o to emulate unix non-blocking i/o with timeouts. */ -static apr_status_t read_with_timeout(apr_file_t *file, void *buf, apr_size_t len_in, apr_size_t *nbytes) +static fspr_status_t read_with_timeout(fspr_file_t *file, void *buf, fspr_size_t len_in, fspr_size_t *nbytes) { - apr_status_t rv; + fspr_status_t rv; DWORD len = (DWORD)len_in; DWORD bytesread = 0; @@ -42,7 +42,7 @@ static apr_status_t read_with_timeout(apr_file_t *file, void *buf, apr_size_t le if (file->pipe) { DWORD bytes; if (!PeekNamedPipe(file->filehand, NULL, 0, NULL, &bytes, NULL)) { - rv = apr_get_os_error(); + rv = fspr_get_os_error(); if (rv == APR_FROM_OS_ERROR(ERROR_BROKEN_PIPE)) { rv = APR_EOF; } @@ -77,7 +77,7 @@ static apr_status_t read_with_timeout(apr_file_t *file, void *buf, apr_size_t le *nbytes = bytesread; if (!rv) { - rv = apr_get_os_error(); + rv = fspr_get_os_error(); if (rv == APR_FROM_OS_ERROR(ERROR_IO_PENDING)) { /* Wait for the pending i/o */ if (file->timeout > 0) { @@ -101,7 +101,7 @@ static apr_status_t read_with_timeout(apr_file_t *file, void *buf, apr_size_t le break; case WAIT_FAILED: - rv = apr_get_os_error(); + rv = fspr_get_os_error(); break; default: @@ -109,7 +109,7 @@ static apr_status_t read_with_timeout(apr_file_t *file, void *buf, apr_size_t le } if (rv != APR_SUCCESS) { - if (apr_os_level >= APR_WIN_98) { + if (fspr_os_level >= APR_WIN_98) { CancelIo(file->filehand); } } @@ -131,9 +131,9 @@ static apr_status_t read_with_timeout(apr_file_t *file, void *buf, apr_size_t le return rv; } -APR_DECLARE(apr_status_t) apr_file_read(apr_file_t *thefile, void *buf, apr_size_t *len) +APR_DECLARE(fspr_status_t) fspr_file_read(fspr_file_t *thefile, void *buf, fspr_size_t *len) { - apr_status_t rv; + fspr_status_t rv; DWORD bytes_read = 0; if (*len <= 0) { @@ -143,14 +143,14 @@ APR_DECLARE(apr_status_t) apr_file_read(apr_file_t *thefile, void *buf, apr_size /* If the file is open for xthread support, allocate and * initialize the overlapped and io completion event (hEvent). - * Threads should NOT share an apr_file_t or its hEvent. + * Threads should NOT share an fspr_file_t or its hEvent. */ if ((thefile->flags & APR_XTHREAD) && !thefile->pOverlapped ) { - thefile->pOverlapped = (OVERLAPPED*) apr_pcalloc(thefile->pool, + thefile->pOverlapped = (OVERLAPPED*) fspr_pcalloc(thefile->pool, sizeof(OVERLAPPED)); thefile->pOverlapped->hEvent = CreateEvent(NULL, FALSE, FALSE, NULL); if (!thefile->pOverlapped->hEvent) { - rv = apr_get_os_error(); + rv = fspr_get_os_error(); return rv; } } @@ -169,15 +169,15 @@ APR_DECLARE(apr_status_t) apr_file_read(apr_file_t *thefile, void *buf, apr_size } if (thefile->buffered) { char *pos = (char *)buf; - apr_size_t blocksize; - apr_size_t size = *len; + fspr_size_t blocksize; + fspr_size_t size = *len; - apr_thread_mutex_lock(thefile->mutex); + fspr_thread_mutex_lock(thefile->mutex); if (thefile->direction == 1) { - rv = apr_file_flush(thefile); + rv = fspr_file_flush(thefile); if (rv != APR_SUCCESS) { - apr_thread_mutex_unlock(thefile->mutex); + fspr_thread_mutex_unlock(thefile->mutex); return rv; } thefile->bufpos = 0; @@ -188,7 +188,7 @@ APR_DECLARE(apr_status_t) apr_file_read(apr_file_t *thefile, void *buf, apr_size rv = 0; while (rv == 0 && size > 0) { if (thefile->bufpos >= thefile->dataRead) { - apr_size_t read; + fspr_size_t read; rv = read_with_timeout(thefile, thefile->buffer, APR_FILE_BUFSIZE, &read); if (read == 0) { @@ -214,10 +214,10 @@ APR_DECLARE(apr_status_t) apr_file_read(apr_file_t *thefile, void *buf, apr_size if (*len) { rv = APR_SUCCESS; } - apr_thread_mutex_unlock(thefile->mutex); + fspr_thread_mutex_unlock(thefile->mutex); } else { /* Unbuffered i/o */ - apr_size_t nbytes; + fspr_size_t nbytes; rv = read_with_timeout(thefile, buf, *len, &nbytes); if (rv == APR_EOF) thefile->eof_hit = TRUE; @@ -227,35 +227,35 @@ APR_DECLARE(apr_status_t) apr_file_read(apr_file_t *thefile, void *buf, apr_size return rv; } -APR_DECLARE(apr_status_t) apr_file_write(apr_file_t *thefile, const void *buf, apr_size_t *nbytes) +APR_DECLARE(fspr_status_t) fspr_file_write(fspr_file_t *thefile, const void *buf, fspr_size_t *nbytes) { - apr_status_t rv; + fspr_status_t rv; DWORD bwrote; /* If the file is open for xthread support, allocate and * initialize the overlapped and io completion event (hEvent). - * Threads should NOT share an apr_file_t or its hEvent. + * Threads should NOT share an fspr_file_t or its hEvent. */ if ((thefile->flags & APR_XTHREAD) && !thefile->pOverlapped ) { - thefile->pOverlapped = (OVERLAPPED*) apr_pcalloc(thefile->pool, + thefile->pOverlapped = (OVERLAPPED*) fspr_pcalloc(thefile->pool, sizeof(OVERLAPPED)); thefile->pOverlapped->hEvent = CreateEvent(NULL, FALSE, FALSE, NULL); if (!thefile->pOverlapped->hEvent) { - rv = apr_get_os_error(); + rv = fspr_get_os_error(); return rv; } } if (thefile->buffered) { char *pos = (char *)buf; - apr_size_t blocksize; - apr_size_t size = *nbytes; + fspr_size_t blocksize; + fspr_size_t size = *nbytes; - apr_thread_mutex_lock(thefile->mutex); + fspr_thread_mutex_lock(thefile->mutex); if (thefile->direction == 0) { // Position file pointer for writing at the offset we are logically reading from - apr_off_t offset = thefile->filePtr - thefile->dataRead + thefile->bufpos; + fspr_off_t offset = thefile->filePtr - thefile->dataRead + thefile->bufpos; DWORD offlo = (DWORD)offset; DWORD offhi = (DWORD)(offset >> 32); if (offset != thefile->filePtr) @@ -267,7 +267,7 @@ APR_DECLARE(apr_status_t) apr_file_write(apr_file_t *thefile, const void *buf, a rv = 0; while (rv == 0 && size > 0) { if (thefile->bufpos == APR_FILE_BUFSIZE) // write buffer is full - rv = apr_file_flush(thefile); + rv = fspr_file_flush(thefile); blocksize = size > APR_FILE_BUFSIZE - thefile->bufpos ? APR_FILE_BUFSIZE - thefile->bufpos : size; memcpy(thefile->buffer + thefile->bufpos, pos, blocksize); @@ -276,27 +276,27 @@ APR_DECLARE(apr_status_t) apr_file_write(apr_file_t *thefile, const void *buf, a size -= blocksize; } - apr_thread_mutex_unlock(thefile->mutex); + fspr_thread_mutex_unlock(thefile->mutex); return rv; } else { if (!thefile->pipe) { - apr_off_t offset = 0; - apr_status_t rc; + fspr_off_t offset = 0; + fspr_status_t rc; if (thefile->append) { - /* apr_file_lock will mutex the file across processes. - * The call to apr_thread_mutex_lock is added to avoid + /* fspr_file_lock will mutex the file across processes. + * The call to fspr_thread_mutex_lock is added to avoid * a race condition between LockFile and WriteFile * that occasionally leads to deadlocked threads. */ - apr_thread_mutex_lock(thefile->mutex); - rc = apr_file_lock(thefile, APR_FLOCK_EXCLUSIVE); + fspr_thread_mutex_lock(thefile->mutex); + rc = fspr_file_lock(thefile, APR_FLOCK_EXCLUSIVE); if (rc != APR_SUCCESS) { - apr_thread_mutex_unlock(thefile->mutex); + fspr_thread_mutex_unlock(thefile->mutex); return rc; } - rc = apr_file_seek(thefile, APR_END, &offset); + rc = fspr_file_seek(thefile, APR_END, &offset); if (rc != APR_SUCCESS) { - apr_thread_mutex_unlock(thefile->mutex); + fspr_thread_mutex_unlock(thefile->mutex); return rc; } } @@ -307,8 +307,8 @@ APR_DECLARE(apr_status_t) apr_file_write(apr_file_t *thefile, const void *buf, a rv = WriteFile(thefile->filehand, buf, (DWORD)*nbytes, &bwrote, thefile->pOverlapped); if (thefile->append) { - apr_file_unlock(thefile); - apr_thread_mutex_unlock(thefile->mutex); + fspr_file_unlock(thefile); + fspr_thread_mutex_unlock(thefile->mutex); } } else { @@ -321,7 +321,7 @@ APR_DECLARE(apr_status_t) apr_file_write(apr_file_t *thefile, const void *buf, a } else { (*nbytes) = 0; - rv = apr_get_os_error(); + rv = fspr_get_os_error(); if (rv == APR_FROM_OS_ERROR(ERROR_IO_PENDING)) { DWORD timeout_ms; @@ -348,13 +348,13 @@ APR_DECLARE(apr_status_t) apr_file_write(apr_file_t *thefile, const void *buf, a rv = APR_TIMEUP; break; case WAIT_FAILED: - rv = apr_get_os_error(); + rv = fspr_get_os_error(); break; default: break; } if (rv != APR_SUCCESS) { - if (apr_os_level >= APR_WIN_98) + if (fspr_os_level >= APR_WIN_98) CancelIo(thefile->filehand); } } @@ -368,21 +368,21 @@ APR_DECLARE(apr_status_t) apr_file_write(apr_file_t *thefile, const void *buf, a /* ToDo: Write for it anyway and test the oslevel! * Too bad WriteFileGather() is not supported on 95&98 (or NT prior to SP2) */ -APR_DECLARE(apr_status_t) apr_file_writev(apr_file_t *thefile, +APR_DECLARE(fspr_status_t) fspr_file_writev(fspr_file_t *thefile, const struct iovec *vec, - apr_size_t nvec, - apr_size_t *nbytes) + fspr_size_t nvec, + fspr_size_t *nbytes) { - apr_status_t rv = APR_SUCCESS; - apr_size_t i; - apr_size_t bwrote = 0; + fspr_status_t rv = APR_SUCCESS; + fspr_size_t i; + fspr_size_t bwrote = 0; char *buf; *nbytes = 0; for (i = 0; i < nvec; i++) { buf = vec[i].iov_base; bwrote = vec[i].iov_len; - rv = apr_file_write(thefile, buf, &bwrote); + rv = fspr_file_write(thefile, buf, &bwrote); *nbytes += bwrote; if (rv != APR_SUCCESS) { break; @@ -391,26 +391,26 @@ APR_DECLARE(apr_status_t) apr_file_writev(apr_file_t *thefile, return rv; } -APR_DECLARE(apr_status_t) apr_file_putc(char ch, apr_file_t *thefile) +APR_DECLARE(fspr_status_t) fspr_file_putc(char ch, fspr_file_t *thefile) { - apr_size_t len = 1; + fspr_size_t len = 1; - return apr_file_write(thefile, &ch, &len); + return fspr_file_write(thefile, &ch, &len); } -APR_DECLARE(apr_status_t) apr_file_ungetc(char ch, apr_file_t *thefile) +APR_DECLARE(fspr_status_t) fspr_file_ungetc(char ch, fspr_file_t *thefile) { thefile->ungetchar = (unsigned char) ch; return APR_SUCCESS; } -APR_DECLARE(apr_status_t) apr_file_getc(char *ch, apr_file_t *thefile) +APR_DECLARE(fspr_status_t) fspr_file_getc(char *ch, fspr_file_t *thefile) { - apr_status_t rc; - apr_size_t bread; + fspr_status_t rc; + fspr_size_t bread; bread = 1; - rc = apr_file_read(thefile, ch, &bread); + rc = fspr_file_read(thefile, ch, &bread); if (rc) { return rc; @@ -423,22 +423,22 @@ APR_DECLARE(apr_status_t) apr_file_getc(char *ch, apr_file_t *thefile) return APR_SUCCESS; } -APR_DECLARE(apr_status_t) apr_file_puts(const char *str, apr_file_t *thefile) +APR_DECLARE(fspr_status_t) fspr_file_puts(const char *str, fspr_file_t *thefile) { - apr_size_t len = strlen(str); + fspr_size_t len = strlen(str); - return apr_file_write(thefile, str, &len); + return fspr_file_write(thefile, str, &len); } -APR_DECLARE(apr_status_t) apr_file_gets(char *str, int len, apr_file_t *thefile) +APR_DECLARE(fspr_status_t) fspr_file_gets(char *str, int len, fspr_file_t *thefile) { - apr_size_t readlen; - apr_status_t rv = APR_SUCCESS; + fspr_size_t readlen; + fspr_status_t rv = APR_SUCCESS; int i; for (i = 0; i < len-1; i++) { readlen = 1; - rv = apr_file_read(thefile, str+i, &readlen); + rv = fspr_file_read(thefile, str+i, &readlen); if (rv != APR_SUCCESS && rv != APR_EOF) return rv; @@ -459,13 +459,13 @@ APR_DECLARE(apr_status_t) apr_file_gets(char *str, int len, apr_file_t *thefile) return rv; } -APR_DECLARE(apr_status_t) apr_file_flush(apr_file_t *thefile) +APR_DECLARE(fspr_status_t) fspr_file_flush(fspr_file_t *thefile) { if (thefile->buffered) { DWORD numbytes, written = 0; - apr_status_t rc = 0; + fspr_status_t rc = 0; char *buffer; - apr_size_t bytesleft; + fspr_size_t bytesleft; if (thefile->direction == 1 && thefile->bufpos) { buffer = thefile->buffer; @@ -480,7 +480,7 @@ APR_DECLARE(apr_status_t) apr_file_flush(apr_file_t *thefile) } if (!WriteFile(thefile->filehand, buffer, numbytes, &written, NULL)) { - rc = apr_get_os_error(); + rc = fspr_get_os_error(); thefile->filePtr += written; break; } @@ -504,17 +504,17 @@ APR_DECLARE(apr_status_t) apr_file_flush(apr_file_t *thefile) return APR_SUCCESS; } -struct apr_file_printf_data { - apr_vformatter_buff_t vbuff; - apr_file_t *fptr; +struct fspr_file_printf_data { + fspr_vformatter_buff_t vbuff; + fspr_file_t *fptr; char *buf; }; -static int file_printf_flush(apr_vformatter_buff_t *buff) +static int file_printf_flush(fspr_vformatter_buff_t *buff) { - struct apr_file_printf_data *data = (struct apr_file_printf_data *)buff; + struct fspr_file_printf_data *data = (struct fspr_file_printf_data *)buff; - if (apr_file_write_full(data->fptr, data->buf, + if (fspr_file_write_full(data->fptr, data->buf, data->vbuff.curpos - data->buf, NULL)) { return -1; } @@ -523,10 +523,10 @@ static int file_printf_flush(apr_vformatter_buff_t *buff) return 0; } -APR_DECLARE_NONSTD(int) apr_file_printf(apr_file_t *fptr, +APR_DECLARE_NONSTD(int) fspr_file_printf(fspr_file_t *fptr, const char *format, ...) { - struct apr_file_printf_data data; + struct fspr_file_printf_data data; va_list ap; int count; @@ -538,10 +538,10 @@ APR_DECLARE_NONSTD(int) apr_file_printf(apr_file_t *fptr, data.vbuff.endpos = data.buf + HUGE_STRING_LEN; data.fptr = fptr; va_start(ap, format); - count = apr_vformatter(file_printf_flush, - (apr_vformatter_buff_t *)&data, format, ap); - /* apr_vformatter does not call flush for the last bits */ - if (count >= 0) file_printf_flush((apr_vformatter_buff_t *)&data); + count = fspr_vformatter(file_printf_flush, + (fspr_vformatter_buff_t *)&data, format, ap); + /* fspr_vformatter does not call flush for the last bits */ + if (count >= 0) file_printf_flush((fspr_vformatter_buff_t *)&data); va_end(ap); diff --git a/libs/apr/file_io/win32/seek.c b/libs/apr/file_io/win32/seek.c index 2566d061cfc..1bd59de25e0 100644 --- a/libs/apr/file_io/win32/seek.c +++ b/libs/apr/file_io/win32/seek.c @@ -14,20 +14,20 @@ * limitations under the License. */ -#include "win32/apr_arch_file_io.h" -#include "apr_file_io.h" +#include "win32/fspr_arch_file_io.h" +#include "fspr_file_io.h" #include #include -static apr_status_t setptr(apr_file_t *thefile, apr_off_t pos ) +static fspr_status_t setptr(fspr_file_t *thefile, fspr_off_t pos ) { - apr_size_t newbufpos; - apr_status_t rv; + fspr_size_t newbufpos; + fspr_status_t rv; DWORD rc; if (thefile->direction == 1) { /* XXX: flush here is not mutex protected */ - rv = apr_file_flush(thefile); + rv = fspr_file_flush(thefile); if (rv != APR_SUCCESS) return rv; thefile->bufpos = thefile->dataRead = 0; @@ -37,11 +37,11 @@ static apr_status_t setptr(apr_file_t *thefile, apr_off_t pos ) /* We may be truncating to size here. * XXX: testing an 'unsigned' as >= 0 below indicates a bug */ - newbufpos = (apr_size_t)(pos - (thefile->filePtr + newbufpos = (fspr_size_t)(pos - (thefile->filePtr - thefile->dataRead)); if (newbufpos >= 0 && newbufpos <= thefile->dataRead) { - thefile->bufpos = (apr_size_t)newbufpos; + thefile->bufpos = (fspr_size_t)newbufpos; rv = APR_SUCCESS; } else { DWORD offlo = (DWORD)pos; @@ -54,7 +54,7 @@ static apr_status_t setptr(apr_file_t *thefile, apr_off_t pos ) * to confirm this. INVALID_SET_FILE_POINTER is too recently * added for us to rely on it as a constant. */ - rv = apr_get_os_error(); + rv = fspr_get_os_error(); else rv = APR_SUCCESS; @@ -70,10 +70,10 @@ static apr_status_t setptr(apr_file_t *thefile, apr_off_t pos ) } -APR_DECLARE(apr_status_t) apr_file_seek(apr_file_t *thefile, apr_seek_where_t where, apr_off_t *offset) +APR_DECLARE(fspr_status_t) fspr_file_seek(fspr_file_t *thefile, fspr_seek_where_t where, fspr_off_t *offset) { - apr_finfo_t finfo; - apr_status_t rc = APR_SUCCESS; + fspr_finfo_t finfo; + fspr_status_t rc = APR_SUCCESS; thefile->eof_hit = 0; @@ -89,7 +89,7 @@ APR_DECLARE(apr_status_t) apr_file_seek(apr_file_t *thefile, apr_seek_where_t wh break; case APR_END: - rc = apr_file_info_get(&finfo, APR_FINFO_SIZE, thefile); + rc = fspr_file_info_get(&finfo, APR_FINFO_SIZE, thefile); if (rc == APR_SUCCESS) rc = setptr(thefile, finfo.size + *offset); break; @@ -115,7 +115,7 @@ APR_DECLARE(apr_status_t) apr_file_seek(apr_file_t *thefile, apr_seek_where_t wh break; case APR_END: - rc = apr_file_info_get(&finfo, APR_FINFO_SIZE, thefile); + rc = fspr_file_info_get(&finfo, APR_FINFO_SIZE, thefile); if (rc == APR_SUCCESS && finfo.size + *offset >= 0) thefile->filePtr = finfo.size + *offset; break; @@ -144,31 +144,31 @@ APR_DECLARE(apr_status_t) apr_file_seek(apr_file_t *thefile, apr_seek_where_t wh offlo = SetFilePointer(thefile->filehand, (LONG)offlo, (LONG*)&offhi, howmove); if (offlo == 0xFFFFFFFF) - rc = apr_get_os_error(); + rc = fspr_get_os_error(); else rc = APR_SUCCESS; /* Since we can land at 0xffffffff we will measure our APR_SUCCESS */ if (rc == APR_SUCCESS) - *offset = ((apr_off_t)offhi << 32) | offlo; + *offset = ((fspr_off_t)offhi << 32) | offlo; return rc; } } -APR_DECLARE(apr_status_t) apr_file_trunc(apr_file_t *thefile, apr_off_t offset) +APR_DECLARE(fspr_status_t) fspr_file_trunc(fspr_file_t *thefile, fspr_off_t offset) { - apr_status_t rv; + fspr_status_t rv; DWORD offlo = (DWORD)offset; DWORD offhi = (DWORD)(offset >> 32); DWORD rc; rc = SetFilePointer(thefile->filehand, offlo, &offhi, FILE_BEGIN); if (rc == 0xFFFFFFFF) - if ((rv = apr_get_os_error()) != APR_SUCCESS) + if ((rv = fspr_get_os_error()) != APR_SUCCESS) return rv; if (!SetEndOfFile(thefile->filehand)) - return apr_get_os_error(); + return fspr_get_os_error(); if (thefile->buffered) { return setptr(thefile, offset); diff --git a/libs/apr/helpers/apr_rename.pl b/libs/apr/helpers/apr_rename.pl index 25b9d52d4c0..5254978574f 100755 --- a/libs/apr/helpers/apr_rename.pl +++ b/libs/apr/helpers/apr_rename.pl @@ -8,7 +8,7 @@ my $dir = shift || '.'; my %names; -my $prefix = 'apr_'; +my $prefix = 'fspr_'; while () { chomp; @@ -41,7 +41,7 @@ sub replace { while () { for (m/[^_\"]*$prefix($pattern)\b/og) { $found++; - print " $file:$. apr_$_ -> apr_$names{$_}\n"; + print " $file:$. fspr_$_ -> fspr_$names{$_}\n"; } push @lines, $_ if $replace; } @@ -66,41 +66,41 @@ sub replace { } __DATA__ -apr_time_t: -apr_implode_gmt apr_time_exp_gmt_get - -apr_socket_t: -apr_close_socket apr_socket_close -apr_create_socket apr_socket_create -apr_get_sockaddr apr_socket_addr_get -apr_get_socketdata apr_socket_data_get -apr_set_socketdata apr_socket_data_set -apr_shutdown apr_socket_shutdown -apr_bind apr_socket_bind -apr_listen apr_socket_listen -apr_accept apr_socket_accept -apr_connect apr_socket_connect -apr_send apr_socket_send -apr_sendv apr_socket_sendv -apr_sendto apr_socket_sendto -apr_recvfrom apr_socket_recvfrom -apr_sendfile apr_socket_sendfile -apr_recv apr_socket_recv - -apr_filepath_*: -apr_filename_of_pathname apr_filepath_name_get - -apr_gid_t: -apr_get_groupid apr_gid_get -apr_get_groupname apr_gid_name_get -apr_group_name_get apr_gid_name_get -apr_compare_groups apr_gid_compare - -apr_uid_t: -apr_get_home_directory apr_uid_homepath_get -apr_get_userid apr_uid_get -apr_current_userid apr_uid_current -apr_compare_users apr_uid_compare -apr_get_username apr_uid_name_get -apr_compare_users apr_uid_compare +fspr_time_t: +fspr_implode_gmt fspr_time_exp_gmt_get + +fspr_socket_t: +fspr_close_socket fspr_socket_close +fspr_create_socket fspr_socket_create +fspr_get_sockaddr fspr_socket_addr_get +fspr_get_socketdata fspr_socket_data_get +fspr_set_socketdata fspr_socket_data_set +fspr_shutdown fspr_socket_shutdown +fspr_bind fspr_socket_bind +fspr_listen fspr_socket_listen +fspr_accept fspr_socket_accept +fspr_connect fspr_socket_connect +fspr_send fspr_socket_send +fspr_sendv fspr_socket_sendv +fspr_sendto fspr_socket_sendto +fspr_recvfrom fspr_socket_recvfrom +fspr_sendfile fspr_socket_sendfile +fspr_recv fspr_socket_recv + +fspr_filepath_*: +fspr_filename_of_pathname fspr_filepath_name_get + +fspr_gid_t: +fspr_get_groupid fspr_gid_get +fspr_get_groupname fspr_gid_name_get +fspr_group_name_get fspr_gid_name_get +fspr_compare_groups fspr_gid_compare + +fspr_uid_t: +fspr_get_home_directory fspr_uid_homepath_get +fspr_get_userid fspr_uid_get +fspr_current_userid fspr_uid_current +fspr_compare_users fspr_uid_compare +fspr_get_username fspr_uid_name_get +fspr_compare_users fspr_uid_compare diff --git a/libs/apr/include/apr_random.h b/libs/apr/include/apr_random.h deleted file mode 100644 index 9c0eac23ada..00000000000 --- a/libs/apr/include/apr_random.h +++ /dev/null @@ -1,74 +0,0 @@ -/* Licensed to the Apache Software Foundation (ASF) under one or more - * contributor license agreements. See the NOTICE file distributed with - * this work for additional information regarding copyright ownership. - * The ASF licenses this file to You under the Apache License, Version 2.0 - * (the "License"); you may not use this file except in compliance with - * the License. You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -#ifndef APR_RANDOM_H -#define APR_RANDOM_H - -#include - -typedef struct apr_crypto_hash_t apr_crypto_hash_t; - -typedef void apr_crypto_hash_init_t(apr_crypto_hash_t *hash); -typedef void apr_crypto_hash_add_t(apr_crypto_hash_t *hash,const void *data, - apr_size_t bytes); -typedef void apr_crypto_hash_finish_t(apr_crypto_hash_t *hash, - unsigned char *result); - -/* FIXME: make this opaque */ -struct apr_crypto_hash_t { - apr_crypto_hash_init_t *init; - apr_crypto_hash_add_t *add; - apr_crypto_hash_finish_t *finish; - apr_size_t size; - void *data; -}; - -APR_DECLARE(apr_crypto_hash_t *) apr_crypto_sha256_new(apr_pool_t *p); - -typedef struct apr_random_t apr_random_t; - -APR_DECLARE(void) apr_random_init(apr_random_t *g,apr_pool_t *p, - apr_crypto_hash_t *pool_hash, - apr_crypto_hash_t *key_hash, - apr_crypto_hash_t *prng_hash); -APR_DECLARE(apr_random_t *) apr_random_standard_new(apr_pool_t *p); -APR_DECLARE(void) apr_random_add_entropy(apr_random_t *g, - const void *entropy_, - apr_size_t bytes); -APR_DECLARE(apr_status_t) apr_random_insecure_bytes(apr_random_t *g, - void *random, - apr_size_t bytes); -APR_DECLARE(apr_status_t) apr_random_secure_bytes(apr_random_t *g, - void *random, - apr_size_t bytes); -APR_DECLARE(void) apr_random_barrier(apr_random_t *g); -APR_DECLARE(apr_status_t) apr_random_secure_ready(apr_random_t *r); -APR_DECLARE(apr_status_t) apr_random_insecure_ready(apr_random_t *r); - -/* Call this in the child after forking to mix the randomness - pools. Note that its generally a bad idea to fork a process with a - real PRNG in it - better to have the PRNG externally and get the - randomness from there. However, if you really must do it, then you - should supply all your entropy to all the PRNGs - don't worry, they - won't produce the same output. - - Note that apr_proc_fork() calls this for you, so only weird - applications need ever call it themselves. -*/ -struct apr_proc_t; -APR_DECLARE(void) apr_random_after_fork(struct apr_proc_t *proc); - -#endif /* ndef APR_RANDOM_H */ diff --git a/libs/apr/include/arch/aix/apr_arch_dso.h b/libs/apr/include/arch/aix/fspr_arch_dso.h similarity index 86% rename from libs/apr/include/arch/aix/apr_arch_dso.h rename to libs/apr/include/arch/aix/fspr_arch_dso.h index d1cac684f6e..04a2700285d 100644 --- a/libs/apr/include/arch/aix/apr_arch_dso.h +++ b/libs/apr/include/arch/aix/fspr_arch_dso.h @@ -17,11 +17,11 @@ #ifndef DSO_H #define DSO_H -#include "apr_private.h" -#include "apr_general.h" -#include "apr_pools.h" -#include "apr_dso.h" -#include "apr.h" +#include "fspr_private.h" +#include "fspr_general.h" +#include "fspr_pools.h" +#include "fspr_dso.h" +#include "fspr.h" #if APR_HAS_DSO @@ -30,8 +30,8 @@ void *dlsym(void *handle, const char *symbol); const char *dlerror(void); int dlclose(void *handle); -struct apr_dso_handle_t { - apr_pool_t *pool; +struct fspr_dso_handle_t { + fspr_pool_t *pool; void *handle; const char *errormsg; }; diff --git a/libs/apr/include/arch/beos/apr_arch_dso.h b/libs/apr/include/arch/beos/fspr_arch_dso.h similarity index 85% rename from libs/apr/include/arch/beos/apr_arch_dso.h rename to libs/apr/include/arch/beos/fspr_arch_dso.h index fbc5c2ff013..0be76ade03a 100644 --- a/libs/apr/include/arch/beos/apr_arch_dso.h +++ b/libs/apr/include/arch/beos/fspr_arch_dso.h @@ -17,20 +17,20 @@ #ifndef DSO_H #define DSO_H -#include "apr_private.h" -#include "apr_general.h" -#include "apr_pools.h" -#include "apr_errno.h" -#include "apr_dso.h" -#include "apr.h" +#include "fspr_private.h" +#include "fspr_general.h" +#include "fspr_pools.h" +#include "fspr_errno.h" +#include "fspr_dso.h" +#include "fspr.h" #include #include #if APR_HAS_DSO -struct apr_dso_handle_t { +struct fspr_dso_handle_t { image_id handle; /* Handle to the DSO loaded */ - apr_pool_t *pool; + fspr_pool_t *pool; const char *errormsg; /* if the load fails, we have an error * message here :) */ diff --git a/libs/apr/include/arch/beos/apr_arch_proc_mutex.h b/libs/apr/include/arch/beos/fspr_arch_proc_mutex.h similarity index 82% rename from libs/apr/include/arch/beos/apr_arch_proc_mutex.h rename to libs/apr/include/arch/beos/fspr_arch_proc_mutex.h index c60d8c6228a..c0a08b465ae 100644 --- a/libs/apr/include/arch/beos/apr_arch_proc_mutex.h +++ b/libs/apr/include/arch/beos/fspr_arch_proc_mutex.h @@ -17,15 +17,15 @@ #ifndef PROC_MUTEX_H #define PROC_MUTEX_H -#include "apr_pools.h" -#include "apr_proc_mutex.h" -#include "apr_file_io.h" -#include "apr_general.h" -#include "apr_lib.h" -#include "apr_portable.h" +#include "fspr_pools.h" +#include "fspr_proc_mutex.h" +#include "fspr_file_io.h" +#include "fspr_general.h" +#include "fspr_lib.h" +#include "fspr_portable.h" -struct apr_proc_mutex_t { - apr_pool_t *pool; +struct fspr_proc_mutex_t { + fspr_pool_t *pool; /* Our lock :) */ sem_id Lock; diff --git a/libs/apr/include/arch/beos/apr_arch_thread_cond.h b/libs/apr/include/arch/beos/fspr_arch_thread_cond.h similarity index 81% rename from libs/apr/include/arch/beos/apr_arch_thread_cond.h rename to libs/apr/include/arch/beos/fspr_arch_thread_cond.h index c9420b53cb0..f18aba7d6ce 100644 --- a/libs/apr/include/arch/beos/apr_arch_thread_cond.h +++ b/libs/apr/include/arch/beos/fspr_arch_thread_cond.h @@ -18,23 +18,23 @@ #define THREAD_COND_H #include -#include "apr_pools.h" -#include "apr_thread_cond.h" -#include "apr_file_io.h" -#include "apr_general.h" -#include "apr_lib.h" -#include "apr_portable.h" -#include "apr_ring.h" +#include "fspr_pools.h" +#include "fspr_thread_cond.h" +#include "fspr_file_io.h" +#include "fspr_general.h" +#include "fspr_lib.h" +#include "fspr_portable.h" +#include "fspr_ring.h" struct waiter_t { APR_RING_ENTRY(waiter_t) link; sem_id sem; }; -struct apr_thread_cond_t { - apr_pool_t *pool; +struct fspr_thread_cond_t { + fspr_pool_t *pool; sem_id lock; - apr_thread_mutex_t *condlock; + fspr_thread_mutex_t *condlock; thread_id owner; /* active list */ APR_RING_HEAD(active_list, waiter_t) alist; diff --git a/libs/apr/include/arch/beos/apr_arch_thread_mutex.h b/libs/apr/include/arch/beos/fspr_arch_thread_mutex.h similarity index 81% rename from libs/apr/include/arch/beos/apr_arch_thread_mutex.h rename to libs/apr/include/arch/beos/fspr_arch_thread_mutex.h index bb7d4ae80ba..f2fbb22388b 100644 --- a/libs/apr/include/arch/beos/apr_arch_thread_mutex.h +++ b/libs/apr/include/arch/beos/fspr_arch_thread_mutex.h @@ -18,15 +18,15 @@ #define THREAD_MUTEX_H #include -#include "apr_pools.h" -#include "apr_thread_mutex.h" -#include "apr_file_io.h" -#include "apr_general.h" -#include "apr_lib.h" -#include "apr_portable.h" +#include "fspr_pools.h" +#include "fspr_thread_mutex.h" +#include "fspr_file_io.h" +#include "fspr_general.h" +#include "fspr_lib.h" +#include "fspr_portable.h" -struct apr_thread_mutex_t { - apr_pool_t *pool; +struct fspr_thread_mutex_t { + fspr_pool_t *pool; /* Our lock :) */ sem_id Lock; @@ -34,7 +34,7 @@ struct apr_thread_mutex_t { /* If we nest locks we need these... */ int nested; - apr_os_thread_t owner; + fspr_os_thread_t owner; int owner_ref; }; diff --git a/libs/apr/include/arch/beos/apr_arch_thread_rwlock.h b/libs/apr/include/arch/beos/fspr_arch_thread_rwlock.h similarity index 84% rename from libs/apr/include/arch/beos/apr_arch_thread_rwlock.h rename to libs/apr/include/arch/beos/fspr_arch_thread_rwlock.h index 694b0d50465..9a7849fbd5f 100644 --- a/libs/apr/include/arch/beos/apr_arch_thread_rwlock.h +++ b/libs/apr/include/arch/beos/fspr_arch_thread_rwlock.h @@ -18,15 +18,15 @@ #define THREAD_RWLOCK_H #include -#include "apr_pools.h" -#include "apr_thread_rwlock.h" -#include "apr_file_io.h" -#include "apr_general.h" -#include "apr_lib.h" -#include "apr_portable.h" +#include "fspr_pools.h" +#include "fspr_thread_rwlock.h" +#include "fspr_file_io.h" +#include "fspr_general.h" +#include "fspr_lib.h" +#include "fspr_portable.h" -struct apr_thread_rwlock_t { - apr_pool_t *pool; +struct fspr_thread_rwlock_t { + fspr_pool_t *pool; /* Our lock :) */ sem_id Lock; diff --git a/libs/apr/include/arch/beos/apr_arch_threadproc.h b/libs/apr/include/arch/beos/fspr_arch_threadproc.h similarity index 71% rename from libs/apr/include/arch/beos/apr_arch_threadproc.h rename to libs/apr/include/arch/beos/fspr_arch_threadproc.h index 13de0536345..aa55461a4a0 100644 --- a/libs/apr/include/arch/beos/apr_arch_threadproc.h +++ b/libs/apr/include/arch/beos/fspr_arch_threadproc.h @@ -14,12 +14,12 @@ * limitations under the License. */ -#include "apr_thread_proc.h" -#include "apr_arch_file_io.h" -#include "apr_file_io.h" -#include "apr_thread_proc.h" -#include "apr_general.h" -#include "apr_portable.h" +#include "fspr_thread_proc.h" +#include "fspr_arch_file_io.h" +#include "fspr_file_io.h" +#include "fspr_thread_proc.h" +#include "fspr_general.h" +#include "fspr_portable.h" #include #include #include @@ -39,23 +39,23 @@ #define BEOS_MAX_DATAKEYS 128 -struct apr_thread_t { - apr_pool_t *pool; +struct fspr_thread_t { + fspr_pool_t *pool; thread_id td; void *data; - apr_thread_start_t func; - apr_status_t exitval; + fspr_thread_start_t func; + fspr_status_t exitval; }; -struct apr_threadattr_t { - apr_pool_t *pool; +struct fspr_threadattr_t { + fspr_pool_t *pool; int32 attr; int detached; int joinable; }; -struct apr_threadkey_t { - apr_pool_t *pool; +struct fspr_threadkey_t { + fspr_pool_t *pool; int32 key; }; @@ -73,20 +73,20 @@ struct beos_key { void (* destructor) (void *); }; -struct apr_procattr_t { - apr_pool_t *pool; - apr_file_t *parent_in; - apr_file_t *child_in; - apr_file_t *parent_out; - apr_file_t *child_out; - apr_file_t *parent_err; - apr_file_t *child_err; +struct fspr_procattr_t { + fspr_pool_t *pool; + fspr_file_t *parent_in; + fspr_file_t *child_in; + fspr_file_t *parent_out; + fspr_file_t *child_out; + fspr_file_t *parent_err; + fspr_file_t *child_err; char *currdir; - apr_int32_t cmdtype; - apr_int32_t detached; + fspr_int32_t cmdtype; + fspr_int32_t detached; }; -struct apr_thread_once_t { +struct fspr_thread_once_t { sem_id sem; int hit; }; diff --git a/libs/apr/include/arch/apr_private_common.h b/libs/apr/include/arch/fspr_private_common.h similarity index 75% rename from libs/apr/include/arch/apr_private_common.h rename to libs/apr/include/arch/fspr_private_common.h index 9cd52ecf22c..2213744b1c6 100644 --- a/libs/apr/include/arch/apr_private_common.h +++ b/libs/apr/include/arch/fspr_private_common.h @@ -21,22 +21,22 @@ #ifndef APR_PRIVATE_COMMON_H #define APR_PRIVATE_COMMON_H -#include "apr_pools.h" -#include "apr_tables.h" +#include "fspr_pools.h" +#include "fspr_tables.h" -apr_status_t apr_filepath_list_split_impl(apr_array_header_t **pathelts, +fspr_status_t fspr_filepath_list_split_impl(fspr_array_header_t **pathelts, const char *liststr, char separator, - apr_pool_t *p); + fspr_pool_t *p); -apr_status_t apr_filepath_list_merge_impl(char **liststr, - apr_array_header_t *pathelts, +fspr_status_t fspr_filepath_list_merge_impl(char **liststr, + fspr_array_header_t *pathelts, char separator, - apr_pool_t *p); + fspr_pool_t *p); /* temporary defines to handle 64bit compile mismatches */ #define APR_INT_TRUNC_CAST int -#define APR_UINT32_TRUNC_CAST apr_uint32_t +#define APR_UINT32_TRUNC_CAST fspr_uint32_t #define APR_UINT32_MAX 0xFFFFFFFFUL #endif /*APR_PRIVATE_COMMON_H*/ diff --git a/libs/apr/include/arch/netware/apr_arch_dso.h b/libs/apr/include/arch/netware/fspr_arch_dso.h similarity index 86% rename from libs/apr/include/arch/netware/apr_arch_dso.h rename to libs/apr/include/arch/netware/fspr_arch_dso.h index ea0fe8c254c..54bf22f72ff 100644 --- a/libs/apr/include/arch/netware/apr_arch_dso.h +++ b/libs/apr/include/arch/netware/fspr_arch_dso.h @@ -17,11 +17,11 @@ #ifndef DSO_H #define DSO_H -#include "apr_private.h" -#include "apr_general.h" -#include "apr_pools.h" -#include "apr_dso.h" -#include "apr.h" +#include "fspr_private.h" +#include "fspr_general.h" +#include "fspr_pools.h" +#include "fspr_dso.h" +#include "fspr.h" #include @@ -32,8 +32,8 @@ struct sym_list { char *symbol; }; -struct apr_dso_handle_t { - apr_pool_t *pool; +struct fspr_dso_handle_t { + fspr_pool_t *pool; void *handle; const char *errormsg; sym_list *symbols; diff --git a/libs/apr/include/arch/netware/apr_arch_file_io.h b/libs/apr/include/arch/netware/fspr_arch_file_io.h similarity index 76% rename from libs/apr/include/arch/netware/apr_arch_file_io.h rename to libs/apr/include/arch/netware/fspr_arch_file_io.h index 6b2bfeca442..d1172e21531 100644 --- a/libs/apr/include/arch/netware/apr_arch_file_io.h +++ b/libs/apr/include/arch/netware/fspr_arch_file_io.h @@ -17,15 +17,15 @@ #ifndef FILE_IO_H #define FILE_IO_H -#include "apr.h" -#include "apr_private.h" -#include "apr_general.h" -#include "apr_tables.h" -#include "apr_file_io.h" -#include "apr_file_info.h" -#include "apr_errno.h" -#include "apr_lib.h" -#include "apr_poll.h" +#include "fspr.h" +#include "fspr_private.h" +#include "fspr_general.h" +#include "fspr_tables.h" +#include "fspr_file_io.h" +#include "fspr_file_info.h" +#include "fspr_errno.h" +#include "fspr_lib.h" +#include "fspr_poll.h" /* System headers the file I/O library needs */ #if APR_HAVE_FCNTL_H @@ -78,45 +78,45 @@ typedef struct stat struct_stat; -struct apr_file_t { - apr_pool_t *pool; +struct fspr_file_t { + fspr_pool_t *pool; int filedes; char *fname; - apr_int32_t flags; + fspr_int32_t flags; int eof_hit; int is_pipe; - apr_interval_time_t timeout; + fspr_interval_time_t timeout; int buffered; enum {BLK_UNKNOWN, BLK_OFF, BLK_ON } blocking; int ungetchar; /* Last char provided by an unget op. (-1 = no char)*/ /* if there is a timeout set, then this pollset is used */ - apr_pollset_t *pollset; + fspr_pollset_t *pollset; /* Stuff for buffered mode */ char *buffer; int bufpos; /* Read/Write position in buffer */ - apr_off_t dataRead; /* amount of valid data read into buffer */ + fspr_off_t dataRead; /* amount of valid data read into buffer */ int direction; /* buffer being used for 0 = read, 1 = write */ - apr_off_t filePtr; /* position in file of handle */ + fspr_off_t filePtr; /* position in file of handle */ #if APR_HAS_THREADS - struct apr_thread_mutex_t *thlock; + struct fspr_thread_mutex_t *thlock; #endif }; -struct apr_dir_t { - apr_pool_t *pool; +struct fspr_dir_t { + fspr_pool_t *pool; char *dirname; DIR *dirstruct; struct dirent *entry; }; -typedef struct apr_stat_entry_t apr_stat_entry_t; +typedef struct fspr_stat_entry_t fspr_stat_entry_t; -struct apr_stat_entry_t { +struct fspr_stat_entry_t { struct stat info; char *casedName; - apr_time_t expire; + fspr_time_t expire; NXPathCtx_t pathCtx; }; @@ -131,21 +131,21 @@ struct apr_stat_entry_t { * we need to fold the case to canonical form. This function is * supposed to do so. */ -apr_status_t filepath_root_case(char **rootpath, char *root, apr_pool_t *p); +fspr_status_t filepath_root_case(char **rootpath, char *root, fspr_pool_t *p); /* This function check to see of the given path includes a drive/volume * specifier. If the _only_ parameter is set to DRIVE_ONLY then it * check to see of the path only contains a drive/volume specifier and * nothing else. */ -apr_status_t filepath_has_drive(const char *rootpath, int only, apr_pool_t *p); +fspr_status_t filepath_has_drive(const char *rootpath, int only, fspr_pool_t *p); /* This function compares the drive/volume specifiers for each given path. * It returns zero if they match or non-zero if not. */ -apr_status_t filepath_compare_drive(const char *path1, const char *path2, apr_pool_t *p); +fspr_status_t filepath_compare_drive(const char *path1, const char *path2, fspr_pool_t *p); -apr_status_t apr_unix_file_cleanup(void *); +fspr_status_t fspr_unix_file_cleanup(void *); #endif /* ! FILE_IO_H */ diff --git a/libs/apr/include/arch/netware/apr_arch_global_mutex.h b/libs/apr/include/arch/netware/fspr_arch_global_mutex.h similarity index 85% rename from libs/apr/include/arch/netware/apr_arch_global_mutex.h rename to libs/apr/include/arch/netware/fspr_arch_global_mutex.h index 4167d378211..bceaddb5b6f 100644 --- a/libs/apr/include/arch/netware/apr_arch_global_mutex.h +++ b/libs/apr/include/arch/netware/fspr_arch_global_mutex.h @@ -17,12 +17,12 @@ #ifndef GLOBAL_MUTEX_H #define GLOBAL_MUTEX_H -#include "apr_global_mutex.h" -#include "apr_thread_mutex.h" +#include "fspr_global_mutex.h" +#include "fspr_thread_mutex.h" -struct apr_global_mutex_t { - apr_pool_t *pool; - apr_thread_mutex_t *mutex; +struct fspr_global_mutex_t { + fspr_pool_t *pool; + fspr_thread_mutex_t *mutex; }; #endif /* GLOBAL_MUTEX_H */ diff --git a/libs/apr/include/arch/netware/apr_arch_internal_time.h b/libs/apr/include/arch/netware/fspr_arch_internal_time.h similarity index 94% rename from libs/apr/include/arch/netware/apr_arch_internal_time.h rename to libs/apr/include/arch/netware/fspr_arch_internal_time.h index 59f1067208a..8f43fb1cce9 100644 --- a/libs/apr/include/arch/netware/apr_arch_internal_time.h +++ b/libs/apr/include/arch/netware/fspr_arch_internal_time.h @@ -17,10 +17,10 @@ #ifndef TIME_INTERNAL_H #define TIME_INTERNAL_H -#include "apr.h" +#include "fspr.h" #define TZONE (*___timezone()) -void apr_netware_setup_time(void); +void fspr_netware_setup_time(void); #endif /* TIME_INTERNAL_H */ diff --git a/libs/apr/include/arch/netware/apr_arch_networkio.h b/libs/apr/include/arch/netware/fspr_arch_networkio.h similarity index 93% rename from libs/apr/include/arch/netware/apr_arch_networkio.h rename to libs/apr/include/arch/netware/fspr_arch_networkio.h index 63f17abe595..07795309966 100644 --- a/libs/apr/include/arch/netware/apr_arch_networkio.h +++ b/libs/apr/include/arch/netware/fspr_arch_networkio.h @@ -22,9 +22,9 @@ arch/netware and then arch/unix. But in this specific case we want arch/win32. */ -#include <../win32/apr_arch_networkio.h> +#include <../win32/fspr_arch_networkio.h> #else -#include <../unix/apr_arch_networkio.h> +#include <../unix/fspr_arch_networkio.h> #endif #endif /* ! NETWORK_IO_H */ diff --git a/libs/apr/include/arch/netware/apr_arch_pre_nw.h b/libs/apr/include/arch/netware/fspr_arch_pre_nw.h similarity index 100% rename from libs/apr/include/arch/netware/apr_arch_pre_nw.h rename to libs/apr/include/arch/netware/fspr_arch_pre_nw.h diff --git a/libs/apr/include/arch/netware/apr_arch_proc_mutex.h b/libs/apr/include/arch/netware/fspr_arch_proc_mutex.h similarity index 86% rename from libs/apr/include/arch/netware/apr_arch_proc_mutex.h rename to libs/apr/include/arch/netware/fspr_arch_proc_mutex.h index 7a634c2e50d..169a6c292e1 100644 --- a/libs/apr/include/arch/netware/apr_arch_proc_mutex.h +++ b/libs/apr/include/arch/netware/fspr_arch_proc_mutex.h @@ -17,12 +17,12 @@ #ifndef PROC_MUTEX_H #define PROC_MUTEX_H -#include "apr_proc_mutex.h" -#include "apr_thread_mutex.h" +#include "fspr_proc_mutex.h" +#include "fspr_thread_mutex.h" -struct apr_proc_mutex_t { - apr_pool_t *pool; - apr_thread_mutex_t *mutex; +struct fspr_proc_mutex_t { + fspr_pool_t *pool; + fspr_thread_mutex_t *mutex; }; #endif /* PROC_MUTEX_H */ diff --git a/libs/apr/include/arch/netware/apr_arch_thread_cond.h b/libs/apr/include/arch/netware/fspr_arch_thread_cond.h similarity index 91% rename from libs/apr/include/arch/netware/apr_arch_thread_cond.h rename to libs/apr/include/arch/netware/fspr_arch_thread_cond.h index b11a5f86a74..ec0e69018fd 100644 --- a/libs/apr/include/arch/netware/apr_arch_thread_cond.h +++ b/libs/apr/include/arch/netware/fspr_arch_thread_cond.h @@ -17,11 +17,11 @@ #ifndef THREAD_COND_H #define THREAD_COND_H -#include "apr_thread_cond.h" +#include "fspr_thread_cond.h" #include -struct apr_thread_cond_t { - apr_pool_t *pool; +struct fspr_thread_cond_t { + fspr_pool_t *pool; NXCond_t *cond; }; diff --git a/libs/apr/include/arch/netware/apr_arch_thread_mutex.h b/libs/apr/include/arch/netware/fspr_arch_thread_mutex.h similarity index 91% rename from libs/apr/include/arch/netware/apr_arch_thread_mutex.h rename to libs/apr/include/arch/netware/fspr_arch_thread_mutex.h index 0453799c2da..7691795a3d1 100644 --- a/libs/apr/include/arch/netware/apr_arch_thread_mutex.h +++ b/libs/apr/include/arch/netware/fspr_arch_thread_mutex.h @@ -17,11 +17,11 @@ #ifndef THREAD_MUTEX_H #define THREAD_MUTEX_H -#include "apr_thread_mutex.h" +#include "fspr_thread_mutex.h" #include -struct apr_thread_mutex_t { - apr_pool_t *pool; +struct fspr_thread_mutex_t { + fspr_pool_t *pool; NXMutex_t *mutex; }; diff --git a/libs/apr/include/arch/netware/apr_arch_thread_rwlock.h b/libs/apr/include/arch/netware/fspr_arch_thread_rwlock.h similarity index 91% rename from libs/apr/include/arch/netware/apr_arch_thread_rwlock.h rename to libs/apr/include/arch/netware/fspr_arch_thread_rwlock.h index d2dbd42f798..56df1296568 100644 --- a/libs/apr/include/arch/netware/apr_arch_thread_rwlock.h +++ b/libs/apr/include/arch/netware/fspr_arch_thread_rwlock.h @@ -17,11 +17,11 @@ #ifndef THREAD_RWLOCK_H #define THREAD_RWLOCK_H -#include "apr_thread_rwlock.h" +#include "fspr_thread_rwlock.h" #include -struct apr_thread_rwlock_t { - apr_pool_t *pool; +struct fspr_thread_rwlock_t { + fspr_pool_t *pool; NXRwLock_t *rwlock; }; diff --git a/libs/apr/include/arch/netware/apr_arch_threadproc.h b/libs/apr/include/arch/netware/fspr_arch_threadproc.h similarity index 59% rename from libs/apr/include/arch/netware/apr_arch_threadproc.h rename to libs/apr/include/arch/netware/fspr_arch_threadproc.h index 713ed295af0..5dd85058f75 100644 --- a/libs/apr/include/arch/netware/apr_arch_threadproc.h +++ b/libs/apr/include/arch/netware/fspr_arch_threadproc.h @@ -14,9 +14,9 @@ * limitations under the License. */ -#include "apr.h" -#include "apr_thread_proc.h" -#include "apr_file_io.h" +#include "fspr.h" +#include "fspr_thread_proc.h" +#include "fspr_file_io.h" #include @@ -26,52 +26,52 @@ #define SHELL_PATH "" #define APR_DEFAULT_STACK_SIZE 65536 -struct apr_thread_t { - apr_pool_t *pool; +struct fspr_thread_t { + fspr_pool_t *pool; NXContext_t ctx; NXThreadId_t td; char *thread_name; - apr_int32_t cancel; - apr_int32_t cancel_how; + fspr_int32_t cancel; + fspr_int32_t cancel_how; void *data; - apr_thread_start_t func; - apr_status_t exitval; + fspr_thread_start_t func; + fspr_status_t exitval; }; -struct apr_threadattr_t { - apr_pool_t *pool; - apr_size_t stack_size; - apr_int32_t detach; +struct fspr_threadattr_t { + fspr_pool_t *pool; + fspr_size_t stack_size; + fspr_int32_t detach; char *thread_name; }; -struct apr_threadkey_t { - apr_pool_t *pool; +struct fspr_threadkey_t { + fspr_pool_t *pool; NXKey_t key; }; -struct apr_procattr_t { - apr_pool_t *pool; - apr_file_t *parent_in; - apr_file_t *child_in; - apr_file_t *parent_out; - apr_file_t *child_out; - apr_file_t *parent_err; - apr_file_t *child_err; +struct fspr_procattr_t { + fspr_pool_t *pool; + fspr_file_t *parent_in; + fspr_file_t *child_in; + fspr_file_t *parent_out; + fspr_file_t *child_out; + fspr_file_t *parent_err; + fspr_file_t *child_err; char *currdir; - apr_int32_t cmdtype; - apr_int32_t detached; - apr_int32_t addrspace; + fspr_int32_t cmdtype; + fspr_int32_t detached; + fspr_int32_t addrspace; }; -struct apr_thread_once_t { +struct fspr_thread_once_t { unsigned long value; }; -//struct apr_proc_t { -// apr_pool_t *pool; +//struct fspr_proc_t { +// fspr_pool_t *pool; // pid_t pid; -// apr_procattr_t *attr; +// fspr_procattr_t *attr; //}; #endif /* ! THREAD_PROC_H */ diff --git a/libs/apr/include/arch/netware/apr_private.h b/libs/apr/include/arch/netware/fspr_private.h similarity index 98% rename from libs/apr/include/arch/netware/apr_private.h rename to libs/apr/include/arch/netware/fspr_private.h index ad659b5988b..a200fcc6a10 100644 --- a/libs/apr/include/arch/netware/apr_private.h +++ b/libs/apr/include/arch/netware/fspr_private.h @@ -28,7 +28,7 @@ /* Include the public APR symbols, include our idea of the 'right' * subset of the Windows.h header. This saves us repetition. */ -#include "apr.h" +#include "fspr.h" #include #include @@ -185,7 +185,7 @@ void* getStatCache(); /* * Include common private declarations. */ -#include "../apr_private_common.h" +#include "../fspr_private_common.h" #endif /*APR_PRIVATE_H*/ #endif /*NETWARE*/ diff --git a/libs/apr/include/arch/os2/apr_arch_os2calls.h b/libs/apr/include/arch/os2/apr_arch_os2calls.h deleted file mode 100644 index 3c739bfd19f..00000000000 --- a/libs/apr/include/arch/os2/apr_arch_os2calls.h +++ /dev/null @@ -1,59 +0,0 @@ -/* Licensed to the Apache Software Foundation (ASF) under one or more - * contributor license agreements. See the NOTICE file distributed with - * this work for additional information regarding copyright ownership. - * The ASF licenses this file to You under the Apache License, Version 2.0 - * (the "License"); you may not use this file except in compliance with - * the License. You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -#include "apr_errno.h" -#include -#include - -extern int (*apr_os2_socket)(int, int, int); -extern int (*apr_os2_select)(int *, int, int, int, long); -extern int (*apr_os2_sock_errno)(); -extern int (*apr_os2_accept)(int, struct sockaddr *, int *); -extern int (*apr_os2_bind)(int, struct sockaddr *, int); -extern int (*apr_os2_connect)(int, struct sockaddr *, int); -extern int (*apr_os2_getpeername)(int, struct sockaddr *, int *); -extern int (*apr_os2_getsockname)(int, struct sockaddr *, int *); -extern int (*apr_os2_getsockopt)(int, int, int, char *, int *); -extern int (*apr_os2_ioctl)(int, int, caddr_t, int); -extern int (*apr_os2_listen)(int, int); -extern int (*apr_os2_recv)(int, char *, int, int); -extern int (*apr_os2_send)(int, const char *, int, int); -extern int (*apr_os2_setsockopt)(int, int, int, char *, int); -extern int (*apr_os2_shutdown)(int, int); -extern int (*apr_os2_soclose)(int); -extern int (*apr_os2_writev)(int, struct iovec *, int); -extern int (*apr_os2_sendto)(int, const char *, int, int, const struct sockaddr *, int); -extern int (*apr_os2_recvfrom)(int, char *, int, int, struct sockaddr *, int *); - -#define socket apr_os2_socket -#define select apr_os2_select -#define sock_errno apr_os2_sock_errno -#define accept apr_os2_accept -#define bind apr_os2_bind -#define connect apr_os2_connect -#define getpeername apr_os2_getpeername -#define getsockname apr_os2_getsockname -#define getsockopt apr_os2_getsockopt -#define ioctl apr_os2_ioctl -#define listen apr_os2_listen -#define recv apr_os2_recv -#define send apr_os2_send -#define setsockopt apr_os2_setsockopt -#define shutdown apr_os2_shutdown -#define soclose apr_os2_soclose -#define writev apr_os2_writev -#define sendto apr_os2_sendto -#define recvfrom apr_os2_recvfrom diff --git a/libs/apr/include/arch/os2/apr_arch_dso.h b/libs/apr/include/arch/os2/fspr_arch_dso.h similarity index 79% rename from libs/apr/include/arch/os2/apr_arch_dso.h rename to libs/apr/include/arch/os2/fspr_arch_dso.h index 2bda6b7c663..ee6eb45ae7f 100644 --- a/libs/apr/include/arch/os2/apr_arch_dso.h +++ b/libs/apr/include/arch/os2/fspr_arch_dso.h @@ -17,18 +17,18 @@ #ifndef DSO_H #define DSO_H -#include "apr_private.h" -#include "apr_general.h" -#include "apr_pools.h" -#include "apr_dso.h" -#include "apr.h" +#include "fspr_private.h" +#include "fspr_general.h" +#include "fspr_pools.h" +#include "fspr_dso.h" +#include "fspr.h" #if APR_HAS_DSO -struct apr_dso_handle_t { - apr_pool_t *cont; /* Context for returning error strings */ +struct fspr_dso_handle_t { + fspr_pool_t *cont; /* Context for returning error strings */ HMODULE handle; /* Handle to the DSO loaded */ - apr_status_t load_error; + fspr_status_t load_error; char *failed_module; }; diff --git a/libs/apr/include/arch/os2/apr_arch_file_io.h b/libs/apr/include/arch/os2/fspr_arch_file_io.h similarity index 67% rename from libs/apr/include/arch/os2/apr_arch_file_io.h rename to libs/apr/include/arch/os2/fspr_arch_file_io.h index a8884c34dc3..8f2c2da0f66 100644 --- a/libs/apr/include/arch/os2/apr_arch_file_io.h +++ b/libs/apr/include/arch/os2/fspr_arch_file_io.h @@ -17,13 +17,13 @@ #ifndef FILE_IO_H #define FILE_IO_H -#include "apr_private.h" -#include "apr_general.h" -#include "apr_thread_mutex.h" -#include "apr_file_io.h" -#include "apr_file_info.h" -#include "apr_errno.h" -#include "apr_poll.h" +#include "fspr_private.h" +#include "fspr_general.h" +#include "fspr_thread_mutex.h" +#include "fspr_file_io.h" +#include "fspr_file_info.h" +#include "fspr_errno.h" +#include "fspr_poll.h" /* We have an implementation of mkstemp but it's not very multi-threading * friendly & is part of the POSIX emulation rather than native so don't @@ -33,14 +33,14 @@ #define APR_FILE_BUFSIZE 4096 -struct apr_file_t { - apr_pool_t *pool; +struct fspr_file_t { + fspr_pool_t *pool; HFILE filedes; char * fname; int isopen; int buffered; int eof_hit; - apr_int32_t flags; + fspr_int32_t flags; int timeout; int pipe; HEV pipeSem; @@ -52,32 +52,32 @@ struct apr_file_t { unsigned long dataRead; // amount of valid data read into buffer int direction; // buffer being used for 0 = read, 1 = write unsigned long filePtr; // position in file of handle - apr_thread_mutex_t *mutex;// mutex semaphore, must be owned to access the above fields + fspr_thread_mutex_t *mutex;// mutex semaphore, must be owned to access the above fields }; -struct apr_dir_t { - apr_pool_t *pool; +struct fspr_dir_t { + fspr_pool_t *pool; char *dirname; ULONG handle; FILEFINDBUF3 entry; int validentry; }; -apr_status_t apr_file_cleanup(void *); -apr_status_t apr_os2_time_to_apr_time(apr_time_t *result, FDATE os2date, +fspr_status_t fspr_file_cleanup(void *); +fspr_status_t fspr_os2_time_to_fspr_time(fspr_time_t *result, FDATE os2date, FTIME os2time); -apr_status_t apr_apr_time_to_os2_time(FDATE *os2date, FTIME *os2time, - apr_time_t aprtime); +fspr_status_t fspr_fspr_time_to_os2_time(FDATE *os2date, FTIME *os2time, + fspr_time_t aprtime); /* see win32/fileio.h for description of these */ extern const char c_is_fnchar[256]; #define IS_FNCHAR(c) c_is_fnchar[(unsigned char)c] -apr_status_t filepath_root_test(char *path, apr_pool_t *p); -apr_status_t filepath_drive_get(char **rootpath, char drive, - apr_int32_t flags, apr_pool_t *p); -apr_status_t filepath_root_case(char **rootpath, char *root, apr_pool_t *p); +fspr_status_t filepath_root_test(char *path, fspr_pool_t *p); +fspr_status_t filepath_drive_get(char **rootpath, char drive, + fspr_int32_t flags, fspr_pool_t *p); +fspr_status_t filepath_root_case(char **rootpath, char *root, fspr_pool_t *p); #endif /* ! FILE_IO_H */ diff --git a/libs/apr/include/arch/os2/apr_arch_networkio.h b/libs/apr/include/arch/os2/fspr_arch_networkio.h similarity index 80% rename from libs/apr/include/arch/os2/apr_arch_networkio.h rename to libs/apr/include/arch/os2/fspr_arch_networkio.h index 10c6de81fbb..9fd277ab8d3 100644 --- a/libs/apr/include/arch/os2/apr_arch_networkio.h +++ b/libs/apr/include/arch/os2/fspr_arch_networkio.h @@ -17,11 +17,11 @@ #ifndef NETWORK_IO_H #define NETWORK_IO_H -#include "apr_private.h" -#include "apr_network_io.h" -#include "apr_general.h" -#include "apr_arch_os2calls.h" -#include "apr_poll.h" +#include "fspr_private.h" +#include "fspr_network_io.h" +#include "fspr_general.h" +#include "fspr_arch_os2calls.h" +#include "fspr_poll.h" #if APR_HAVE_NETDB_H #include @@ -34,24 +34,24 @@ struct sock_userdata_t { void *data; }; -struct apr_socket_t { - apr_pool_t *pool; +struct fspr_socket_t { + fspr_pool_t *pool; int socketdes; int type; int protocol; - apr_sockaddr_t *local_addr; - apr_sockaddr_t *remote_addr; - apr_interval_time_t timeout; + fspr_sockaddr_t *local_addr; + fspr_sockaddr_t *remote_addr; + fspr_interval_time_t timeout; int nonblock; int local_port_unknown; int local_interface_unknown; int remote_addr_unknown; - apr_int32_t options; - apr_int32_t inherit; + fspr_int32_t options; + fspr_int32_t inherit; sock_userdata_t *userdata; /* if there is a timeout set, then this pollset is used */ - apr_pollset_t *pollset; + fspr_pollset_t *pollset; }; /* Error codes returned from sock_errno() */ @@ -68,9 +68,9 @@ struct apr_socket_t { #define SOCEPIPE (SOCBASEERR+32) /* Broken pipe */ #define SOCEOS2ERR (SOCBASEERR+100) /* OS/2 Error */ -const char *apr_inet_ntop(int af, const void *src, char *dst, apr_size_t size); -int apr_inet_pton(int af, const char *src, void *dst); -void apr_sockaddr_vars_set(apr_sockaddr_t *, int, apr_port_t); +const char *fspr_inet_ntop(int af, const void *src, char *dst, fspr_size_t size); +int fspr_inet_pton(int af, const char *src, void *dst); +void fspr_sockaddr_vars_set(fspr_sockaddr_t *, int, fspr_port_t); #endif /* ! NETWORK_IO_H */ diff --git a/libs/apr/include/arch/os2/fspr_arch_os2calls.h b/libs/apr/include/arch/os2/fspr_arch_os2calls.h new file mode 100644 index 00000000000..335662ffce6 --- /dev/null +++ b/libs/apr/include/arch/os2/fspr_arch_os2calls.h @@ -0,0 +1,59 @@ +/* Licensed to the Apache Software Foundation (ASF) under one or more + * contributor license agreements. See the NOTICE file distributed with + * this work for additional information regarding copyright ownership. + * The ASF licenses this file to You under the Apache License, Version 2.0 + * (the "License"); you may not use this file except in compliance with + * the License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +#include "fspr_errno.h" +#include +#include + +extern int (*fspr_os2_socket)(int, int, int); +extern int (*fspr_os2_select)(int *, int, int, int, long); +extern int (*fspr_os2_sock_errno)(); +extern int (*fspr_os2_accept)(int, struct sockaddr *, int *); +extern int (*fspr_os2_bind)(int, struct sockaddr *, int); +extern int (*fspr_os2_connect)(int, struct sockaddr *, int); +extern int (*fspr_os2_getpeername)(int, struct sockaddr *, int *); +extern int (*fspr_os2_getsockname)(int, struct sockaddr *, int *); +extern int (*fspr_os2_getsockopt)(int, int, int, char *, int *); +extern int (*fspr_os2_ioctl)(int, int, caddr_t, int); +extern int (*fspr_os2_listen)(int, int); +extern int (*fspr_os2_recv)(int, char *, int, int); +extern int (*fspr_os2_send)(int, const char *, int, int); +extern int (*fspr_os2_setsockopt)(int, int, int, char *, int); +extern int (*fspr_os2_shutdown)(int, int); +extern int (*fspr_os2_soclose)(int); +extern int (*fspr_os2_writev)(int, struct iovec *, int); +extern int (*fspr_os2_sendto)(int, const char *, int, int, const struct sockaddr *, int); +extern int (*fspr_os2_recvfrom)(int, char *, int, int, struct sockaddr *, int *); + +#define socket fspr_os2_socket +#define select fspr_os2_select +#define sock_errno fspr_os2_sock_errno +#define accept fspr_os2_accept +#define bind fspr_os2_bind +#define connect fspr_os2_connect +#define getpeername fspr_os2_getpeername +#define getsockname fspr_os2_getsockname +#define getsockopt fspr_os2_getsockopt +#define ioctl fspr_os2_ioctl +#define listen fspr_os2_listen +#define recv fspr_os2_recv +#define send fspr_os2_send +#define setsockopt fspr_os2_setsockopt +#define shutdown fspr_os2_shutdown +#define soclose fspr_os2_soclose +#define writev fspr_os2_writev +#define sendto fspr_os2_sendto +#define recvfrom fspr_os2_recvfrom diff --git a/libs/apr/include/arch/os2/apr_arch_proc_mutex.h b/libs/apr/include/arch/os2/fspr_arch_proc_mutex.h similarity index 89% rename from libs/apr/include/arch/os2/apr_arch_proc_mutex.h rename to libs/apr/include/arch/os2/fspr_arch_proc_mutex.h index 8caf3369dcc..5270fbf277c 100644 --- a/libs/apr/include/arch/os2/apr_arch_proc_mutex.h +++ b/libs/apr/include/arch/os2/fspr_arch_proc_mutex.h @@ -17,11 +17,11 @@ #ifndef PROC_MUTEX_H #define PROC_MUTEX_H -#include "apr_proc_mutex.h" -#include "apr_file_io.h" +#include "fspr_proc_mutex.h" +#include "fspr_file_io.h" -struct apr_proc_mutex_t { - apr_pool_t *pool; +struct fspr_proc_mutex_t { + fspr_pool_t *pool; HMTX hMutex; TID owner; int lock_count; diff --git a/libs/apr/include/arch/os2/apr_arch_thread_cond.h b/libs/apr/include/arch/os2/fspr_arch_thread_cond.h similarity index 89% rename from libs/apr/include/arch/os2/apr_arch_thread_cond.h rename to libs/apr/include/arch/os2/fspr_arch_thread_cond.h index 648b85d148b..6a2ecd8e018 100644 --- a/libs/apr/include/arch/os2/apr_arch_thread_cond.h +++ b/libs/apr/include/arch/os2/fspr_arch_thread_cond.h @@ -17,11 +17,11 @@ #ifndef THREAD_COND_H #define THREAD_COND_H -#include "apr_thread_cond.h" -#include "apr_file_io.h" +#include "fspr_thread_cond.h" +#include "fspr_file_io.h" -struct apr_thread_cond_t { - apr_pool_t *pool; +struct fspr_thread_cond_t { + fspr_pool_t *pool; }; #endif /* THREAD_COND_H */ diff --git a/libs/apr/include/arch/os2/apr_arch_thread_mutex.h b/libs/apr/include/arch/os2/fspr_arch_thread_mutex.h similarity index 89% rename from libs/apr/include/arch/os2/apr_arch_thread_mutex.h rename to libs/apr/include/arch/os2/fspr_arch_thread_mutex.h index 3ae2a41db78..fc6aeed45a5 100644 --- a/libs/apr/include/arch/os2/apr_arch_thread_mutex.h +++ b/libs/apr/include/arch/os2/fspr_arch_thread_mutex.h @@ -17,11 +17,11 @@ #ifndef THREAD_MUTEX_H #define THREAD_MUTEX_H -#include "apr_thread_mutex.h" -#include "apr_file_io.h" +#include "fspr_thread_mutex.h" +#include "fspr_file_io.h" -struct apr_thread_mutex_t { - apr_pool_t *pool; +struct fspr_thread_mutex_t { + fspr_pool_t *pool; HMTX hMutex; }; diff --git a/libs/apr/include/arch/os2/apr_arch_thread_rwlock.h b/libs/apr/include/arch/os2/fspr_arch_thread_rwlock.h similarity index 89% rename from libs/apr/include/arch/os2/apr_arch_thread_rwlock.h rename to libs/apr/include/arch/os2/fspr_arch_thread_rwlock.h index 7187d5cb2e5..fa721bf5a29 100644 --- a/libs/apr/include/arch/os2/apr_arch_thread_rwlock.h +++ b/libs/apr/include/arch/os2/fspr_arch_thread_rwlock.h @@ -17,11 +17,11 @@ #ifndef THREAD_RWLOCK_H #define THREAD_RWLOCK_H -#include "apr_thread_rwlock.h" -#include "apr_file_io.h" +#include "fspr_thread_rwlock.h" +#include "fspr_file_io.h" -struct apr_thread_rwlock_t { - apr_pool_t *pool; +struct fspr_thread_rwlock_t { + fspr_pool_t *pool; int readers; HMTX write_lock; HEV read_done; diff --git a/libs/apr/include/arch/os2/apr_arch_threadproc.h b/libs/apr/include/arch/os2/fspr_arch_threadproc.h similarity index 64% rename from libs/apr/include/arch/os2/apr_arch_threadproc.h rename to libs/apr/include/arch/os2/fspr_arch_threadproc.h index c8017adbff3..ac1aa39c109 100644 --- a/libs/apr/include/arch/os2/apr_arch_threadproc.h +++ b/libs/apr/include/arch/os2/fspr_arch_threadproc.h @@ -14,8 +14,8 @@ * limitations under the License. */ -#include "apr_thread_proc.h" -#include "apr_file_io.h" +#include "fspr_thread_proc.h" +#include "fspr_file_io.h" #ifndef THREAD_PROC_H #define THREAD_PROC_H @@ -25,40 +25,40 @@ #define SHELL_PATH "cmd.exe" #define APR_THREAD_STACKSIZE 65536 -struct apr_threadattr_t { - apr_pool_t *pool; +struct fspr_threadattr_t { + fspr_pool_t *pool; unsigned long attr; - apr_size_t stacksize; + fspr_size_t stacksize; }; -struct apr_thread_t { - apr_pool_t *pool; - struct apr_threadattr_t *attr; +struct fspr_thread_t { + fspr_pool_t *pool; + struct fspr_threadattr_t *attr; unsigned long tid; - apr_thread_start_t func; + fspr_thread_start_t func; void *data; - apr_status_t exitval; + fspr_status_t exitval; }; -struct apr_threadkey_t { - apr_pool_t *pool; +struct fspr_threadkey_t { + fspr_pool_t *pool; unsigned long *key; }; -struct apr_procattr_t { - apr_pool_t *pool; - apr_file_t *parent_in; - apr_file_t *child_in; - apr_file_t *parent_out; - apr_file_t *child_out; - apr_file_t *parent_err; - apr_file_t *child_err; +struct fspr_procattr_t { + fspr_pool_t *pool; + fspr_file_t *parent_in; + fspr_file_t *child_in; + fspr_file_t *parent_out; + fspr_file_t *child_out; + fspr_file_t *parent_err; + fspr_file_t *child_err; char *currdir; - apr_int32_t cmdtype; - apr_int32_t detached; + fspr_int32_t cmdtype; + fspr_int32_t detached; }; -struct apr_thread_once_t { +struct fspr_thread_once_t { unsigned long sem; char hit; }; diff --git a/libs/apr/include/arch/os390/apr_arch_dso.h b/libs/apr/include/arch/os390/fspr_arch_dso.h similarity index 86% rename from libs/apr/include/arch/os390/apr_arch_dso.h rename to libs/apr/include/arch/os390/fspr_arch_dso.h index 4263297b407..5fb8845ff67 100644 --- a/libs/apr/include/arch/os390/apr_arch_dso.h +++ b/libs/apr/include/arch/os390/fspr_arch_dso.h @@ -17,21 +17,21 @@ #ifndef DSO_H #define DSO_H -#include "apr_private.h" -#include "apr_general.h" -#include "apr_pools.h" -#include "apr_dso.h" -#include "apr.h" +#include "fspr_private.h" +#include "fspr_general.h" +#include "fspr_pools.h" +#include "fspr_dso.h" +#include "fspr.h" #if APR_HAS_DSO #include -struct apr_dso_handle_t { +struct fspr_dso_handle_t { dllhandle *handle; /* Handle to the DSO loaded */ int failing_errno; /* Don't save the buffer returned by strerror(); it gets reused */ - apr_pool_t *pool; + fspr_pool_t *pool; }; #endif diff --git a/libs/apr/include/arch/unix/apr_arch_dso.h b/libs/apr/include/arch/unix/fspr_arch_dso.h similarity index 88% rename from libs/apr/include/arch/unix/apr_arch_dso.h rename to libs/apr/include/arch/unix/fspr_arch_dso.h index d82182d48b8..c65ccfcccae 100644 --- a/libs/apr/include/arch/unix/apr_arch_dso.h +++ b/libs/apr/include/arch/unix/fspr_arch_dso.h @@ -17,11 +17,11 @@ #ifndef DSO_H #define DSO_H -#include "apr_private.h" -#include "apr_general.h" -#include "apr_pools.h" -#include "apr_dso.h" -#include "apr.h" +#include "fspr_private.h" +#include "fspr_general.h" +#include "fspr_pools.h" +#include "fspr_dso.h" +#include "fspr.h" #if APR_HAS_DSO @@ -52,8 +52,8 @@ #define DLSYM_NEEDS_UNDERSCORE #endif -struct apr_dso_handle_t { - apr_pool_t *pool; +struct fspr_dso_handle_t { + fspr_pool_t *pool; void *handle; const char *errormsg; }; diff --git a/libs/apr/include/arch/unix/apr_arch_file_io.h b/libs/apr/include/arch/unix/fspr_arch_file_io.h similarity index 80% rename from libs/apr/include/arch/unix/apr_arch_file_io.h rename to libs/apr/include/arch/unix/fspr_arch_file_io.h index 05ef8ed7418..70a1cf99848 100644 --- a/libs/apr/include/arch/unix/apr_arch_file_io.h +++ b/libs/apr/include/arch/unix/fspr_arch_file_io.h @@ -17,17 +17,17 @@ #ifndef FILE_IO_H #define FILE_IO_H -#include "apr.h" -#include "apr_private.h" -#include "apr_general.h" -#include "apr_tables.h" -#include "apr_file_io.h" -#include "apr_file_info.h" -#include "apr_errno.h" -#include "apr_lib.h" -#include "apr_thread_mutex.h" +#include "fspr.h" +#include "fspr_private.h" +#include "fspr_general.h" +#include "fspr_tables.h" +#include "fspr_file_io.h" +#include "fspr_file_info.h" +#include "fspr_errno.h" +#include "fspr_lib.h" +#include "fspr_thread_mutex.h" #ifndef WAITIO_USES_POLL -#include "apr_poll.h" +#include "fspr_poll.h" #endif /* System headers the file I/O library needs */ @@ -84,29 +84,29 @@ #define APR_FILE_BUFSIZE 4096 -struct apr_file_t { - apr_pool_t *pool; +struct fspr_file_t { + fspr_pool_t *pool; int filedes; char *fname; - apr_int32_t flags; + fspr_int32_t flags; int eof_hit; int is_pipe; - apr_interval_time_t timeout; + fspr_interval_time_t timeout; int buffered; enum {BLK_UNKNOWN, BLK_OFF, BLK_ON } blocking; int ungetchar; /* Last char provided by an unget op. (-1 = no char)*/ #ifndef WAITIO_USES_POLL /* if there is a timeout set, then this pollset is used */ - apr_pollset_t *pollset; + fspr_pollset_t *pollset; #endif /* Stuff for buffered mode */ char *buffer; int bufpos; /* Read/Write position in buffer */ unsigned long dataRead; /* amount of valid data read into buffer */ int direction; /* buffer being used for 0 = read, 1 = write */ - apr_off_t filePtr; /* position in file of handle */ + fspr_off_t filePtr; /* position in file of handle */ #if APR_HAS_THREADS - struct apr_thread_mutex_t *thlock; + struct fspr_thread_mutex_t *thlock; #endif }; @@ -121,17 +121,17 @@ typedef struct stat64 struct_stat; typedef struct stat struct_stat; #endif -struct apr_dir_t { - apr_pool_t *pool; +struct fspr_dir_t { + fspr_pool_t *pool; char *dirname; DIR *dirstruct; struct dirent *entry; }; -apr_status_t apr_unix_file_cleanup(void *); +fspr_status_t fspr_unix_file_cleanup(void *); -mode_t apr_unix_perms2mode(apr_fileperms_t perms); -apr_fileperms_t apr_unix_mode2perms(mode_t mode); +mode_t fspr_unix_perms2mode(fspr_fileperms_t perms); +fspr_fileperms_t fspr_unix_mode2perms(mode_t mode); #endif /* ! FILE_IO_H */ diff --git a/libs/apr/include/arch/unix/apr_arch_global_mutex.h b/libs/apr/include/arch/unix/fspr_arch_global_mutex.h similarity index 74% rename from libs/apr/include/arch/unix/apr_arch_global_mutex.h rename to libs/apr/include/arch/unix/fspr_arch_global_mutex.h index 3add9ecfa75..85c8c687455 100644 --- a/libs/apr/include/arch/unix/apr_arch_global_mutex.h +++ b/libs/apr/include/arch/unix/fspr_arch_global_mutex.h @@ -17,19 +17,19 @@ #ifndef GLOBAL_MUTEX_H #define GLOBAL_MUTEX_H -#include "apr.h" -#include "apr_private.h" -#include "apr_general.h" -#include "apr_lib.h" -#include "apr_global_mutex.h" -#include "apr_arch_proc_mutex.h" -#include "apr_arch_thread_mutex.h" +#include "fspr.h" +#include "fspr_private.h" +#include "fspr_general.h" +#include "fspr_lib.h" +#include "fspr_global_mutex.h" +#include "fspr_arch_proc_mutex.h" +#include "fspr_arch_thread_mutex.h" -struct apr_global_mutex_t { - apr_pool_t *pool; - apr_proc_mutex_t *proc_mutex; +struct fspr_global_mutex_t { + fspr_pool_t *pool; + fspr_proc_mutex_t *proc_mutex; #if APR_HAS_THREADS - apr_thread_mutex_t *thread_mutex; + fspr_thread_mutex_t *thread_mutex; #endif /* APR_HAS_THREADS */ }; diff --git a/libs/apr/include/arch/unix/apr_arch_inherit.h b/libs/apr/include/arch/unix/fspr_arch_inherit.h similarity index 85% rename from libs/apr/include/arch/unix/apr_arch_inherit.h rename to libs/apr/include/arch/unix/fspr_arch_inherit.h index 9a6bdbca588..50c9ca9c192 100644 --- a/libs/apr/include/arch/unix/apr_arch_inherit.h +++ b/libs/apr/include/arch/unix/fspr_arch_inherit.h @@ -17,32 +17,32 @@ #ifndef INHERIT_H #define INHERIT_H -#include "apr_inherit.h" +#include "fspr_inherit.h" #define APR_INHERIT (1 << 24) /* Must not conflict with other bits */ #define APR_IMPLEMENT_INHERIT_SET(name, flag, pool, cleanup) \ -apr_status_t apr_##name##_inherit_set(apr_##name##_t *the##name) \ +fspr_status_t fspr_##name##_inherit_set(fspr_##name##_t *the##name) \ { \ if (the##name->flag & APR_FILE_NOCLEANUP) \ return APR_EINVAL; \ if (!(the##name->flag & APR_INHERIT)) { \ the##name->flag |= APR_INHERIT; \ - apr_pool_child_cleanup_set(the##name->pool, \ + fspr_pool_child_cleanup_set(the##name->pool, \ (void *)the##name, \ - cleanup, apr_pool_cleanup_null); \ + cleanup, fspr_pool_cleanup_null); \ } \ return APR_SUCCESS; \ } #define APR_IMPLEMENT_INHERIT_UNSET(name, flag, pool, cleanup) \ -apr_status_t apr_##name##_inherit_unset(apr_##name##_t *the##name) \ +fspr_status_t fspr_##name##_inherit_unset(fspr_##name##_t *the##name) \ { \ if (the##name->flag & APR_FILE_NOCLEANUP) \ return APR_EINVAL; \ if (the##name->flag & APR_INHERIT) { \ the##name->flag &= ~APR_INHERIT; \ - apr_pool_child_cleanup_set(the##name->pool, \ + fspr_pool_child_cleanup_set(the##name->pool, \ (void *)the##name, \ cleanup, cleanup); \ } \ diff --git a/libs/apr/include/arch/unix/apr_arch_internal_time.h b/libs/apr/include/arch/unix/fspr_arch_internal_time.h similarity index 94% rename from libs/apr/include/arch/unix/apr_arch_internal_time.h rename to libs/apr/include/arch/unix/fspr_arch_internal_time.h index 6e12c67439a..4ea5d3e95d5 100644 --- a/libs/apr/include/arch/unix/apr_arch_internal_time.h +++ b/libs/apr/include/arch/unix/fspr_arch_internal_time.h @@ -17,8 +17,8 @@ #ifndef TIME_INTERNAL_H #define TIME_INTERNAL_H -#include "apr.h" +#include "fspr.h" -void apr_unix_setup_time(void); +void fspr_unix_setup_time(void); #endif /* TIME_INTERNAL_H */ diff --git a/libs/apr/include/arch/unix/apr_arch_misc.h b/libs/apr/include/arch/unix/fspr_arch_misc.h similarity index 76% rename from libs/apr/include/arch/unix/apr_arch_misc.h rename to libs/apr/include/arch/unix/fspr_arch_misc.h index 823512506c6..70b3b5531d1 100644 --- a/libs/apr/include/arch/unix/apr_arch_misc.h +++ b/libs/apr/include/arch/unix/fspr_arch_misc.h @@ -17,16 +17,16 @@ #ifndef MISC_H #define MISC_H -#include "apr.h" -#include "apr_portable.h" -#include "apr_private.h" -#include "apr_general.h" -#include "apr_pools.h" -#include "apr_getopt.h" -#include "apr_thread_proc.h" -#include "apr_file_io.h" -#include "apr_errno.h" -#include "apr_getopt.h" +#include "fspr.h" +#include "fspr_portable.h" +#include "fspr_private.h" +#include "fspr_general.h" +#include "fspr_pools.h" +#include "fspr_getopt.h" +#include "fspr_thread_proc.h" +#include "fspr_file_io.h" +#include "fspr_errno.h" +#include "fspr_getopt.h" #if APR_HAVE_STDIO_H #include @@ -49,13 +49,13 @@ #include #endif -struct apr_other_child_rec_t { - apr_pool_t *p; - struct apr_other_child_rec_t *next; - apr_proc_t *proc; +struct fspr_other_child_rec_t { + fspr_pool_t *p; + struct fspr_other_child_rec_t *next; + fspr_proc_t *proc; void (*maintenance) (int, void *, int); void *data; - apr_os_file_t write_fd; + fspr_os_file_t write_fd; }; #if defined(WIN32) || defined(NETWARE) diff --git a/libs/apr/include/arch/unix/apr_arch_networkio.h b/libs/apr/include/arch/unix/fspr_arch_networkio.h similarity index 80% rename from libs/apr/include/arch/unix/apr_arch_networkio.h rename to libs/apr/include/arch/unix/fspr_arch_networkio.h index 91018f7c6bd..facbfe4382f 100644 --- a/libs/apr/include/arch/unix/apr_arch_networkio.h +++ b/libs/apr/include/arch/unix/fspr_arch_networkio.h @@ -17,14 +17,14 @@ #ifndef NETWORK_IO_H #define NETWORK_IO_H -#include "apr.h" -#include "apr_private.h" -#include "apr_network_io.h" -#include "apr_errno.h" -#include "apr_general.h" -#include "apr_lib.h" +#include "fspr.h" +#include "fspr_private.h" +#include "fspr_network_io.h" +#include "fspr_errno.h" +#include "fspr_general.h" +#include "fspr_lib.h" #ifndef WAITIO_USES_POLL -#include "apr_poll.h" +#include "fspr_poll.h" #endif /* System headers the network I/O library needs */ @@ -100,37 +100,37 @@ struct sock_userdata_t { void *data; }; -struct apr_socket_t { - apr_pool_t *pool; +struct fspr_socket_t { + fspr_pool_t *pool; int socketdes; int type; int protocol; - apr_sockaddr_t *local_addr; - apr_sockaddr_t *remote_addr; - apr_interval_time_t timeout; + fspr_sockaddr_t *local_addr; + fspr_sockaddr_t *remote_addr; + fspr_interval_time_t timeout; #ifndef HAVE_POLL int connected; #endif int local_port_unknown; int local_interface_unknown; int remote_addr_unknown; - apr_int32_t options; - apr_int32_t inherit; + fspr_int32_t options; + fspr_int32_t inherit; sock_userdata_t *userdata; #ifndef WAITIO_USES_POLL /* if there is a timeout set, then this pollset is used */ - apr_pollset_t *pollset; + fspr_pollset_t *pollset; #endif }; -const char *apr_inet_ntop(int af, const void *src, char *dst, apr_size_t size); -int apr_inet_pton(int af, const char *src, void *dst); -void apr_sockaddr_vars_set(apr_sockaddr_t *, int, apr_port_t); +const char *fspr_inet_ntop(int af, const void *src, char *dst, fspr_size_t size); +int fspr_inet_pton(int af, const char *src, void *dst); +void fspr_sockaddr_vars_set(fspr_sockaddr_t *, int, fspr_port_t); -#define apr_is_option_set(skt, option) \ +#define fspr_is_option_set(skt, option) \ (((skt)->options & (option)) == (option)) -#define apr_set_option(skt, option, on) \ +#define fspr_set_option(skt, option, on) \ do { \ if (on) \ (skt)->options |= (option); \ diff --git a/libs/apr/include/arch/unix/apr_arch_poll_private.h b/libs/apr/include/arch/unix/fspr_arch_poll_private.h similarity index 83% rename from libs/apr/include/arch/unix/apr_arch_poll_private.h rename to libs/apr/include/arch/unix/fspr_arch_poll_private.h index f176eac0e54..93ad7b891c7 100644 --- a/libs/apr/include/arch/unix/apr_arch_poll_private.h +++ b/libs/apr/include/arch/unix/fspr_arch_poll_private.h @@ -17,12 +17,12 @@ #ifndef APR_ARCH_POLL_PRIVATE_H #define APR_ARCH_POLL_PRIVATE_H -#include "apr.h" -#include "apr_poll.h" -#include "apr_time.h" -#include "apr_portable.h" -#include "apr_arch_networkio.h" -#include "apr_arch_file_io.h" +#include "fspr.h" +#include "fspr_poll.h" +#include "fspr_time.h" +#include "fspr_portable.h" +#include "fspr_arch_networkio.h" +#include "fspr_arch_file_io.h" #if HAVE_POLL_H #include @@ -52,7 +52,7 @@ #define HAS_PIPES(dt) (dt == APR_POLL_FILE) ? 1 : 0 #endif -/* Choose the best method platform specific to use in apr_pollset */ +/* Choose the best method platform specific to use in fspr_pollset */ #ifdef HAVE_KQUEUE #define POLLSET_USES_KQUEUE #elif defined(HAVE_PORT_CREATE) @@ -73,16 +73,16 @@ #if defined(POLLSET_USES_KQUEUE) || defined(POLLSET_USES_EPOLL) || defined(POLLSET_USES_PORT) -#include "apr_ring.h" +#include "fspr_ring.h" #if APR_HAS_THREADS -#include "apr_thread_mutex.h" +#include "fspr_thread_mutex.h" #define pollset_lock_rings() \ if (pollset->flags & APR_POLLSET_THREADSAFE) \ - apr_thread_mutex_lock(pollset->ring_lock); + fspr_thread_mutex_lock(pollset->ring_lock); #define pollset_unlock_rings() \ if (pollset->flags & APR_POLLSET_THREADSAFE) \ - apr_thread_mutex_unlock(pollset->ring_lock); + fspr_thread_mutex_unlock(pollset->ring_lock); #else #define pollset_lock_rings() #define pollset_unlock_rings() @@ -92,7 +92,7 @@ typedef struct pfd_elem_t pfd_elem_t; struct pfd_elem_t { APR_RING_ENTRY(pfd_elem_t) link; - apr_pollfd_t pfd; + fspr_pollfd_t pfd; }; #endif diff --git a/libs/apr/include/arch/unix/apr_arch_proc_mutex.h b/libs/apr/include/arch/unix/fspr_arch_proc_mutex.h similarity index 68% rename from libs/apr/include/arch/unix/apr_arch_proc_mutex.h rename to libs/apr/include/arch/unix/fspr_arch_proc_mutex.h index a307d946579..8f21801c7a3 100644 --- a/libs/apr/include/arch/unix/apr_arch_proc_mutex.h +++ b/libs/apr/include/arch/unix/fspr_arch_proc_mutex.h @@ -23,15 +23,15 @@ #endif #endif -#include "apr.h" -#include "apr_private.h" -#include "apr_general.h" -#include "apr_lib.h" -#include "apr_proc_mutex.h" -#include "apr_pools.h" -#include "apr_portable.h" -#include "apr_file_io.h" -#include "apr_arch_file_io.h" +#include "fspr.h" +#include "fspr_private.h" +#include "fspr_general.h" +#include "fspr_lib.h" +#include "fspr_proc_mutex.h" +#include "fspr_pools.h" +#include "fspr_portable.h" +#include "fspr_file_io.h" +#include "fspr_arch_file_io.h" /* System headers required by Locks library */ #if APR_HAVE_SYS_TYPES_H @@ -73,19 +73,19 @@ #endif /* End System Headers */ -struct apr_proc_mutex_unix_lock_methods_t { +struct fspr_proc_mutex_unix_lock_methods_t { unsigned int flags; - apr_status_t (*create)(apr_proc_mutex_t *, const char *); - apr_status_t (*acquire)(apr_proc_mutex_t *); - apr_status_t (*tryacquire)(apr_proc_mutex_t *); - apr_status_t (*release)(apr_proc_mutex_t *); - apr_status_t (*cleanup)(void *); - apr_status_t (*child_init)(apr_proc_mutex_t **, apr_pool_t *, const char *); + fspr_status_t (*create)(fspr_proc_mutex_t *, const char *); + fspr_status_t (*acquire)(fspr_proc_mutex_t *); + fspr_status_t (*tryacquire)(fspr_proc_mutex_t *); + fspr_status_t (*release)(fspr_proc_mutex_t *); + fspr_status_t (*cleanup)(void *); + fspr_status_t (*child_init)(fspr_proc_mutex_t **, fspr_pool_t *, const char *); const char *name; }; -typedef struct apr_proc_mutex_unix_lock_methods_t apr_proc_mutex_unix_lock_methods_t; +typedef struct fspr_proc_mutex_unix_lock_methods_t fspr_proc_mutex_unix_lock_methods_t; -/* bit values for flags field in apr_unix_lock_methods_t */ +/* bit values for flags field in fspr_unix_lock_methods_t */ #define APR_PROCESS_LOCK_MECH_IS_GLOBAL 1 #if !APR_HAVE_UNION_SEMUN && defined(APR_HAS_SYSVSEM_SERIALIZE) @@ -96,14 +96,14 @@ union semun { }; #endif -struct apr_proc_mutex_t { - apr_pool_t *pool; - const apr_proc_mutex_unix_lock_methods_t *meth; - const apr_proc_mutex_unix_lock_methods_t *inter_meth; +struct fspr_proc_mutex_t { + fspr_pool_t *pool; + const fspr_proc_mutex_unix_lock_methods_t *meth; + const fspr_proc_mutex_unix_lock_methods_t *inter_meth; int curr_locked; char *fname; #if APR_HAS_SYSVSEM_SERIALIZE || APR_HAS_FCNTL_SERIALIZE || APR_HAS_FLOCK_SERIALIZE - apr_file_t *interproc; + fspr_file_t *interproc; #endif #if APR_HAS_POSIXSEM_SERIALIZE sem_t *psem_interproc; @@ -113,7 +113,7 @@ struct apr_proc_mutex_t { #endif }; -void apr_proc_mutex_unix_setup_lock(void); +void fspr_proc_mutex_unix_setup_lock(void); #endif /* PROC_MUTEX_H */ diff --git a/libs/apr/include/arch/unix/apr_arch_shm.h b/libs/apr/include/arch/unix/fspr_arch_shm.h similarity index 81% rename from libs/apr/include/arch/unix/apr_arch_shm.h rename to libs/apr/include/arch/unix/fspr_arch_shm.h index dbd9b9bc5c4..39b344ccdf4 100644 --- a/libs/apr/include/arch/unix/apr_arch_shm.h +++ b/libs/apr/include/arch/unix/fspr_arch_shm.h @@ -17,15 +17,15 @@ #ifndef SHM_H #define SHM_H -#include "apr.h" -#include "apr_private.h" -#include "apr_general.h" -#include "apr_lib.h" -#include "apr_shm.h" -#include "apr_pools.h" -#include "apr_file_io.h" -#include "apr_network_io.h" -#include "apr_portable.h" +#include "fspr.h" +#include "fspr_private.h" +#include "fspr_general.h" +#include "fspr_lib.h" +#include "fspr_shm.h" +#include "fspr_pools.h" +#include "fspr_file_io.h" +#include "fspr_network_io.h" +#include "fspr_portable.h" #ifdef HAVE_SYS_MMAN_H #include @@ -55,12 +55,12 @@ #define MAP_FAILED ((void *)-1) #endif -struct apr_shm_t { - apr_pool_t *pool; +struct fspr_shm_t { + fspr_pool_t *pool; void *base; /* base real address */ void *usable; /* base usable address */ - apr_size_t reqsize; /* requested segment size */ - apr_size_t realsize; /* actual segment size */ + fspr_size_t reqsize; /* requested segment size */ + fspr_size_t realsize; /* actual segment size */ const char *filename; /* NULL if anonymous */ #if APR_USE_SHMEM_SHMGET || APR_USE_SHMEM_SHMGET_ANON int shmid; /* shmem ID returned from shmget() */ diff --git a/libs/apr/include/arch/unix/apr_arch_thread_cond.h b/libs/apr/include/arch/unix/fspr_arch_thread_cond.h similarity index 82% rename from libs/apr/include/arch/unix/apr_arch_thread_cond.h rename to libs/apr/include/arch/unix/fspr_arch_thread_cond.h index 5c2b51d1f4b..369bc23b17f 100644 --- a/libs/apr/include/arch/unix/apr_arch_thread_cond.h +++ b/libs/apr/include/arch/unix/fspr_arch_thread_cond.h @@ -17,13 +17,13 @@ #ifndef THREAD_COND_H #define THREAD_COND_H -#include "apr.h" -#include "apr_private.h" -#include "apr_general.h" -#include "apr_lib.h" -#include "apr_thread_mutex.h" -#include "apr_thread_cond.h" -#include "apr_pools.h" +#include "fspr.h" +#include "fspr_private.h" +#include "fspr_general.h" +#include "fspr_lib.h" +#include "fspr_thread_mutex.h" +#include "fspr_thread_cond.h" +#include "fspr_pools.h" #if APR_HAVE_PTHREAD_H #include @@ -32,8 +32,8 @@ /* XXX: Should we have a better autoconf search, something like * APR_HAS_PTHREAD_COND? -aaron */ #if APR_HAS_THREADS -struct apr_thread_cond_t { - apr_pool_t *pool; +struct fspr_thread_cond_t { + fspr_pool_t *pool; pthread_cond_t cond; }; #endif diff --git a/libs/apr/include/arch/unix/apr_arch_thread_mutex.h b/libs/apr/include/arch/unix/fspr_arch_thread_mutex.h similarity index 83% rename from libs/apr/include/arch/unix/apr_arch_thread_mutex.h rename to libs/apr/include/arch/unix/fspr_arch_thread_mutex.h index 0f9798701e3..b11bd4ae1b9 100644 --- a/libs/apr/include/arch/unix/apr_arch_thread_mutex.h +++ b/libs/apr/include/arch/unix/fspr_arch_thread_mutex.h @@ -23,20 +23,20 @@ #endif #endif -#include "apr.h" -#include "apr_private.h" -#include "apr_general.h" -#include "apr_thread_mutex.h" -#include "apr_portable.h" -#include "apr_atomic.h" +#include "fspr.h" +#include "fspr_private.h" +#include "fspr_general.h" +#include "fspr_thread_mutex.h" +#include "fspr_portable.h" +#include "fspr_atomic.h" #if APR_HAVE_PTHREAD_H #include #endif #if APR_HAS_THREADS -struct apr_thread_mutex_t { - apr_pool_t *pool; +struct fspr_thread_mutex_t { + fspr_pool_t *pool; pthread_mutex_t mutex; }; #endif diff --git a/libs/apr/include/arch/unix/apr_arch_thread_rwlock.h b/libs/apr/include/arch/unix/fspr_arch_thread_rwlock.h similarity index 82% rename from libs/apr/include/arch/unix/apr_arch_thread_rwlock.h rename to libs/apr/include/arch/unix/fspr_arch_thread_rwlock.h index 2cb43af6a35..06a7e2a232e 100644 --- a/libs/apr/include/arch/unix/apr_arch_thread_rwlock.h +++ b/libs/apr/include/arch/unix/fspr_arch_thread_rwlock.h @@ -17,11 +17,11 @@ #ifndef THREAD_RWLOCK_H #define THREAD_RWLOCK_H -#include "apr.h" -#include "apr_private.h" -#include "apr_general.h" -#include "apr_thread_rwlock.h" -#include "apr_pools.h" +#include "fspr.h" +#include "fspr_private.h" +#include "fspr_general.h" +#include "fspr_thread_rwlock.h" +#include "fspr_pools.h" #if APR_HAVE_PTHREAD_H /* this gives us pthread_rwlock_t */ @@ -31,15 +31,15 @@ #if APR_HAS_THREADS #ifdef HAVE_PTHREAD_RWLOCKS -struct apr_thread_rwlock_t { - apr_pool_t *pool; +struct fspr_thread_rwlock_t { + fspr_pool_t *pool; pthread_rwlock_t rwlock; }; #else -struct apr_thread_rwlock_t { - apr_pool_t *pool; +struct fspr_thread_rwlock_t { + fspr_pool_t *pool; }; #endif diff --git a/libs/apr/include/arch/unix/apr_arch_threadproc.h b/libs/apr/include/arch/unix/fspr_arch_threadproc.h similarity index 71% rename from libs/apr/include/arch/unix/apr_arch_threadproc.h rename to libs/apr/include/arch/unix/fspr_arch_threadproc.h index 348c6c55d37..2573421b506 100644 --- a/libs/apr/include/arch/unix/apr_arch_threadproc.h +++ b/libs/apr/include/arch/unix/fspr_arch_threadproc.h @@ -14,11 +14,11 @@ * limitations under the License. */ -#include "apr.h" -#include "apr_private.h" -#include "apr_thread_proc.h" -#include "apr_file_io.h" -#include "apr_arch_file_io.h" +#include "fspr.h" +#include "fspr_private.h" +#include "fspr_thread_proc.h" +#include "fspr_file_io.h" +#include "fspr_arch_file_io.h" /* System headers required for thread/process library */ #if APR_HAVE_PTHREAD_H @@ -49,43 +49,43 @@ #if APR_HAS_THREADS -struct apr_thread_t { - apr_pool_t *pool; +struct fspr_thread_t { + fspr_pool_t *pool; pthread_t *td; void *data; - apr_thread_start_t func; - apr_status_t exitval; + fspr_thread_start_t func; + fspr_status_t exitval; int priority; }; -struct apr_threadattr_t { - apr_pool_t *pool; +struct fspr_threadattr_t { + fspr_pool_t *pool; pthread_attr_t attr; int priority; }; -struct apr_threadkey_t { - apr_pool_t *pool; +struct fspr_threadkey_t { + fspr_pool_t *pool; pthread_key_t key; }; -struct apr_thread_once_t { +struct fspr_thread_once_t { pthread_once_t once; }; #endif -struct apr_procattr_t { - apr_pool_t *pool; - apr_file_t *parent_in; - apr_file_t *child_in; - apr_file_t *parent_out; - apr_file_t *child_out; - apr_file_t *parent_err; - apr_file_t *child_err; +struct fspr_procattr_t { + fspr_pool_t *pool; + fspr_file_t *parent_in; + fspr_file_t *child_in; + fspr_file_t *parent_out; + fspr_file_t *child_out; + fspr_file_t *parent_err; + fspr_file_t *child_err; char *currdir; - apr_int32_t cmdtype; - apr_int32_t detached; + fspr_int32_t cmdtype; + fspr_int32_t detached; #ifdef RLIMIT_CPU struct rlimit *limit_cpu; #endif @@ -98,10 +98,10 @@ struct apr_procattr_t { #ifdef RLIMIT_NOFILE struct rlimit *limit_nofile; #endif - apr_child_errfn_t *errfn; - apr_int32_t errchk; - apr_uid_t uid; - apr_gid_t gid; + fspr_child_errfn_t *errfn; + fspr_int32_t errchk; + fspr_uid_t uid; + fspr_gid_t gid; }; #endif /* ! THREAD_PROC_H */ diff --git a/libs/apr/include/arch/win32/apr_arch_atime.h b/libs/apr/include/arch/win32/fspr_arch_atime.h similarity index 87% rename from libs/apr/include/arch/win32/apr_arch_atime.h rename to libs/apr/include/arch/win32/fspr_arch_atime.h index 47b75a95654..c1a47d12a94 100644 --- a/libs/apr/include/arch/win32/apr_arch_atime.h +++ b/libs/apr/include/arch/win32/fspr_arch_atime.h @@ -17,15 +17,15 @@ #ifndef ATIME_H #define ATIME_H -#include "apr_private.h" -#include "apr_time.h" +#include "fspr_private.h" +#include "fspr_time.h" #if APR_HAVE_TIME_H #include #endif struct atime_t { - apr_pool_t *cntxt; - apr_time_t currtime; + fspr_pool_t *cntxt; + fspr_time_t currtime; SYSTEMTIME *explodedtime; }; @@ -36,7 +36,7 @@ struct atime_t { #define APR_DELTA_EPOCH_IN_USEC APR_TIME_C(11644473600000000); -__inline void FileTimeToAprTime(apr_time_t *result, FILETIME *input) +__inline void FileTimeToAprTime(fspr_time_t *result, FILETIME *input) { /* Convert FILETIME one 64 bit number so we can work with it. */ *result = input->dwHighDateTime; @@ -48,7 +48,7 @@ __inline void FileTimeToAprTime(apr_time_t *result, FILETIME *input) } -__inline void AprTimeToFileTime(LPFILETIME pft, apr_time_t t) +__inline void AprTimeToFileTime(LPFILETIME pft, fspr_time_t t) { LONGLONG ll; t += APR_DELTA_EPOCH_IN_USEC; diff --git a/libs/apr/include/arch/win32/apr_arch_dso.h b/libs/apr/include/arch/win32/fspr_arch_dso.h similarity index 81% rename from libs/apr/include/arch/win32/apr_arch_dso.h rename to libs/apr/include/arch/win32/fspr_arch_dso.h index e2e4e40f2ea..983b42eca70 100644 --- a/libs/apr/include/arch/win32/apr_arch_dso.h +++ b/libs/apr/include/arch/win32/fspr_arch_dso.h @@ -17,18 +17,18 @@ #ifndef DSO_H #define DSO_H -#include "apr_private.h" -#include "apr_general.h" -#include "apr_pools.h" -#include "apr_dso.h" -#include "apr.h" +#include "fspr_private.h" +#include "fspr_general.h" +#include "fspr_pools.h" +#include "fspr_dso.h" +#include "fspr.h" #if APR_HAS_DSO -struct apr_dso_handle_t { - apr_pool_t *cont; +struct fspr_dso_handle_t { + fspr_pool_t *cont; void *handle; - apr_status_t load_error; + fspr_status_t load_error; }; #endif diff --git a/libs/apr/include/arch/win32/apr_arch_file_io.h b/libs/apr/include/arch/win32/fspr_arch_file_io.h similarity index 72% rename from libs/apr/include/arch/win32/apr_arch_file_io.h rename to libs/apr/include/arch/win32/fspr_arch_file_io.h index 35c3c072ec7..852d89dd659 100644 --- a/libs/apr/include/arch/win32/apr_arch_file_io.h +++ b/libs/apr/include/arch/win32/fspr_arch_file_io.h @@ -17,17 +17,17 @@ #ifndef FILE_IO_H #define FILE_IO_H -#include "apr.h" -#include "apr_private.h" -#include "apr_pools.h" -#include "apr_general.h" -#include "apr_tables.h" -#include "apr_thread_mutex.h" -#include "apr_file_io.h" -#include "apr_file_info.h" -#include "apr_errno.h" -#include "apr_arch_misc.h" -#include "apr_poll.h" +#include "fspr.h" +#include "fspr_private.h" +#include "fspr_pools.h" +#include "fspr_general.h" +#include "fspr_tables.h" +#include "fspr_thread_mutex.h" +#include "fspr_file_io.h" +#include "fspr_file_info.h" +#include "fspr_errno.h" +#include "fspr_arch_misc.h" +#include "fspr_poll.h" #ifdef HAVE_SYS_STAT_H #include @@ -49,10 +49,10 @@ #endif #if APR_HAS_UNICODE_FS -#include "arch/win32/apr_arch_utf8.h" +#include "arch/win32/fspr_arch_utf8.h" #include -typedef apr_uint16_t apr_wchar_t; +typedef fspr_uint16_t fspr_wchar_t; /* Helper functions for the WinNT ApiW() functions. APR treats all * resource identifiers (files, etc) by their UTF-8 name, to provide @@ -66,10 +66,10 @@ typedef apr_uint16_t apr_wchar_t; * Ascii API calls. So we tack them on in utf8_to_unicode_path, and * strip them right back off in unicode_to_utf8_path. */ -apr_status_t utf8_to_unicode_path(apr_wchar_t* dststr, apr_size_t dstchars, +fspr_status_t utf8_to_unicode_path(fspr_wchar_t* dststr, fspr_size_t dstchars, const char* srcstr); -apr_status_t unicode_to_utf8_path(char* dststr, apr_size_t dstchars, - const apr_wchar_t* srcstr); +fspr_status_t unicode_to_utf8_path(char* dststr, fspr_size_t dstchars, + const fspr_wchar_t* srcstr); #endif /* APR_HAS_UNICODE_FS */ @@ -80,7 +80,7 @@ apr_status_t unicode_to_utf8_path(char* dststr, apr_size_t dstchars, * and return the appropriate char* or wchar* for ApiA or ApiW calls. */ -void *res_name_from_filename(const char *file, int global, apr_pool_t *pool); +void *res_name_from_filename(const char *file, int global, fspr_pool_t *pool); #define APR_FILE_MAX MAX_PATH @@ -95,7 +95,7 @@ void *res_name_from_filename(const char *file, int global, apr_pool_t *pool); #define S_IFWHT 0160000 /* Whiteout */ #endif -/* Internal Flags for apr_file_open */ +/* Internal Flags for fspr_file_open */ #define APR_OPENINFO 0x00100000 /* Open without READ or WRITE access */ #define APR_OPENLINK 0x00200000 /* Open a link itself, if supported */ #define APR_READCONTROL 0x00400000 /* Read the file's owner/perms */ @@ -128,20 +128,20 @@ void *res_name_from_filename(const char *file, int global, apr_pool_t *pool); /* Sneak the Readonly bit through finfo->protection for internal use _only_ */ #define APR_FREADONLY 0x10000000 -/* Private function for apr_stat/lstat/getfileinfo/dir_read */ -int fillin_fileinfo(apr_finfo_t *finfo, WIN32_FILE_ATTRIBUTE_DATA *wininfo, - int byhandle, apr_int32_t wanted); +/* Private function for fspr_stat/lstat/getfileinfo/dir_read */ +int fillin_fileinfo(fspr_finfo_t *finfo, WIN32_FILE_ATTRIBUTE_DATA *wininfo, + int byhandle, fspr_int32_t wanted); -/* Private function that extends apr_stat/lstat/getfileinfo/dir_read */ -apr_status_t more_finfo(apr_finfo_t *finfo, const void *ufile, - apr_int32_t wanted, int whatfile); +/* Private function that extends fspr_stat/lstat/getfileinfo/dir_read */ +fspr_status_t more_finfo(fspr_finfo_t *finfo, const void *ufile, + fspr_int32_t wanted, int whatfile); /* whatfile types for the ufile arg */ #define MORE_OF_HANDLE 0 #define MORE_OF_FSPEC 1 #define MORE_OF_WFSPEC 2 -/* quick run-down of fields in windows' apr_file_t structure that may have +/* quick run-down of fields in windows' fspr_file_t structure that may have * obvious uses. * fname -- the filename as passed to the open call. * dwFileAttricutes -- Attributes used to open the file. @@ -150,19 +150,19 @@ apr_status_t more_finfo(apr_finfo_t *finfo, const void *ufile, * correctly when writing to a file with this flag set TRUE. */ -// for apr_poll.c; +// for fspr_poll.c; #define filedes filehand -struct apr_file_t { - apr_pool_t *pool; +struct fspr_file_t { + fspr_pool_t *pool; HANDLE filehand; BOOLEAN pipe; // Is this a pipe of a file? OVERLAPPED *pOverlapped; - apr_interval_time_t timeout; - apr_int32_t flags; + fspr_interval_time_t timeout; + fspr_int32_t flags; /* File specific info */ - apr_finfo_t *finfo; + fspr_finfo_t *finfo; char *fname; DWORD dwFileAttributes; int eof_hit; @@ -172,22 +172,22 @@ struct apr_file_t { /* Stuff for buffered mode */ char *buffer; - apr_size_t bufpos; // Read/Write position in buffer - apr_size_t dataRead; // amount of valid data read into buffer + fspr_size_t bufpos; // Read/Write position in buffer + fspr_size_t dataRead; // amount of valid data read into buffer int direction; // buffer being used for 0 = read, 1 = write - apr_off_t filePtr; // position in file of handle - apr_thread_mutex_t *mutex; // mutex semaphore, must be owned to access the above fields + fspr_off_t filePtr; // position in file of handle + fspr_thread_mutex_t *mutex; // mutex semaphore, must be owned to access the above fields /* if there is a timeout set, then this pollset is used */ - apr_pollset_t *pollset; + fspr_pollset_t *pollset; /* Pipe specific info */ }; -struct apr_dir_t { - apr_pool_t *pool; +struct fspr_dir_t { + fspr_pool_t *pool; HANDLE dirhand; - apr_size_t rootlen; + fspr_size_t rootlen; char *dirname; char *name; union { @@ -209,21 +209,21 @@ struct apr_dir_t { * or can confound the cmd.exe shell. Here's the list * [declared in filesys.c] */ -extern const char apr_c_is_fnchar[256]; +extern const char fspr_c_is_fnchar[256]; -#define IS_FNCHAR(c) (apr_c_is_fnchar[(unsigned char)(c)] & 1) -#define IS_SHCHAR(c) ((apr_c_is_fnchar[(unsigned char)(c)] & 2) == 2) +#define IS_FNCHAR(c) (fspr_c_is_fnchar[(unsigned char)(c)] & 1) +#define IS_SHCHAR(c) ((fspr_c_is_fnchar[(unsigned char)(c)] & 2) == 2) /* If the user passes APR_FILEPATH_TRUENAME to either - * apr_filepath_root or apr_filepath_merge, this fn determines + * fspr_filepath_root or fspr_filepath_merge, this fn determines * that the root really exists. It's expensive, wouldn't want * to do this too frequenly. */ -apr_status_t filepath_root_test(char *path, apr_pool_t *p); +fspr_status_t filepath_root_test(char *path, fspr_pool_t *p); -/* The apr_filepath_merge wants to canonicalize the cwd to the +/* The fspr_filepath_merge wants to canonicalize the cwd to the * addpath if the user passes NULL as the old root path (this * isn't true of an empty string "", which won't be concatenated. * @@ -233,18 +233,18 @@ apr_status_t filepath_root_test(char *path, apr_pool_t *p); * If flags includes the bit APR_FILEPATH_NATIVE, the path returned * is in the os-native format. */ -apr_status_t filepath_drive_get(char **rootpath, char drive, - apr_int32_t flags, apr_pool_t *p); +fspr_status_t filepath_drive_get(char **rootpath, char drive, + fspr_int32_t flags, fspr_pool_t *p); /* If the user passes d: vs. D: (or //mach/share vs. //MACH/SHARE), * we need to fold the case to canonical form. This function is * supposed to do so. */ -apr_status_t filepath_root_case(char **rootpath, char *root, apr_pool_t *p); +fspr_status_t filepath_root_case(char **rootpath, char *root, fspr_pool_t *p); -apr_status_t file_cleanup(void *); +fspr_status_t file_cleanup(void *); /** * Internal function to create a Win32/NT pipe that respects some async @@ -259,20 +259,20 @@ apr_status_t file_cleanup(void *); * APR_FULL_NONBLOCK * * @remark It so happens that APR_FULL_BLOCK and APR_FULL_NONBLOCK - * are common to apr_procattr_io_set() in, out and err modes. + * are common to fspr_procattr_io_set() in, out and err modes. * Because APR_CHILD_BLOCK and APR_WRITE_BLOCK share the same value, * as do APR_PARENT_BLOCK and APR_READ_BLOCK, it's possible to use * that value directly for creating the stdout/stderr pipes. When * creating the stdin pipe, the values must be transposed. - * @see apr_procattr_io_set + * @see fspr_procattr_io_set */ -apr_status_t apr_create_nt_pipe(apr_file_t **in, apr_file_t **out, - apr_int32_t blocking_mode, - apr_pool_t *p); +fspr_status_t fspr_create_nt_pipe(fspr_file_t **in, fspr_file_t **out, + fspr_int32_t blocking_mode, + fspr_pool_t *p); -/** @see apr_create_nt_pipe */ +/** @see fspr_create_nt_pipe */ #define APR_READ_BLOCK 3 -/** @see apr_create_nt_pipe */ +/** @see fspr_create_nt_pipe */ #define APR_WRITE_BLOCK 4 #endif /* ! FILE_IO_H */ diff --git a/libs/apr/include/arch/win32/apr_arch_inherit.h b/libs/apr/include/arch/win32/fspr_arch_inherit.h similarity index 87% rename from libs/apr/include/arch/win32/apr_arch_inherit.h rename to libs/apr/include/arch/win32/fspr_arch_inherit.h index 97c7d05d0aa..02d9e055060 100644 --- a/libs/apr/include/arch/win32/apr_arch_inherit.h +++ b/libs/apr/include/arch/win32/fspr_arch_inherit.h @@ -17,19 +17,19 @@ #ifndef INHERIT_H #define INHERIT_H -#include "apr_inherit.h" +#include "fspr_inherit.h" #define APR_INHERIT (1 << 24) /* Must not conflict with other bits */ #define APR_IMPLEMENT_INHERIT_SET(name, flag, pool, cleanup) \ -APR_DECLARE(apr_status_t) apr_##name##_inherit_set(apr_##name##_t *the##name) \ +APR_DECLARE(fspr_status_t) fspr_##name##_inherit_set(fspr_##name##_t *the##name) \ { \ IF_WIN_OS_IS_UNICODE \ { \ if (!SetHandleInformation(the##name->filehand, \ HANDLE_FLAG_INHERIT, \ HANDLE_FLAG_INHERIT)) \ - return apr_get_os_error(); \ + return fspr_get_os_error(); \ } \ ELSE_WIN_OS_IS_ANSI \ { \ @@ -37,7 +37,7 @@ APR_DECLARE(apr_status_t) apr_##name##_inherit_set(apr_##name##_t *the##name) \ if (!DuplicateHandle(hproc, the##name->filehand, \ hproc, &temp, 0, TRUE, \ DUPLICATE_SAME_ACCESS)) \ - return apr_get_os_error(); \ + return fspr_get_os_error(); \ CloseHandle(the##name->filehand); \ the##name->filehand = temp; \ } \ @@ -45,13 +45,13 @@ APR_DECLARE(apr_status_t) apr_##name##_inherit_set(apr_##name##_t *the##name) \ } #define APR_IMPLEMENT_INHERIT_UNSET(name, flag, pool, cleanup) \ -APR_DECLARE(apr_status_t) apr_##name##_inherit_unset(apr_##name##_t *the##name)\ +APR_DECLARE(fspr_status_t) fspr_##name##_inherit_unset(fspr_##name##_t *the##name)\ { \ IF_WIN_OS_IS_UNICODE \ { \ if (!SetHandleInformation(the##name->filehand, \ HANDLE_FLAG_INHERIT, 0)) \ - return apr_get_os_error(); \ + return fspr_get_os_error(); \ } \ ELSE_WIN_OS_IS_ANSI \ { \ @@ -59,7 +59,7 @@ APR_DECLARE(apr_status_t) apr_##name##_inherit_unset(apr_##name##_t *the##name)\ if (!DuplicateHandle(hproc, the##name->filehand, \ hproc, &temp, 0, FALSE, \ DUPLICATE_SAME_ACCESS)) \ - return apr_get_os_error(); \ + return fspr_get_os_error(); \ CloseHandle(the##name->filehand); \ the##name->filehand = temp; \ } \ diff --git a/libs/apr/include/arch/win32/apr_arch_misc.h b/libs/apr/include/arch/win32/fspr_arch_misc.h similarity index 78% rename from libs/apr/include/arch/win32/apr_arch_misc.h rename to libs/apr/include/arch/win32/fspr_arch_misc.h index 6db6a1b9d2c..89f01d1f6d4 100644 --- a/libs/apr/include/arch/win32/apr_arch_misc.h +++ b/libs/apr/include/arch/win32/fspr_arch_misc.h @@ -17,16 +17,16 @@ #ifndef MISC_H #define MISC_H -#include "apr.h" -#include "apr_portable.h" -#include "apr_private.h" -#include "apr_general.h" -#include "apr_pools.h" -#include "apr_getopt.h" -#include "apr_thread_proc.h" -#include "apr_file_io.h" -#include "apr_errno.h" -#include "apr_getopt.h" +#include "fspr.h" +#include "fspr_portable.h" +#include "fspr_private.h" +#include "fspr_general.h" +#include "fspr_pools.h" +#include "fspr_getopt.h" +#include "fspr_thread_proc.h" +#include "fspr_file_io.h" +#include "fspr_errno.h" +#include "fspr_getopt.h" #if APR_HAVE_STDIO_H #include @@ -46,26 +46,26 @@ #include #endif -struct apr_other_child_rec_t { - apr_pool_t *p; - struct apr_other_child_rec_t *next; - apr_proc_t *proc; +struct fspr_other_child_rec_t { + fspr_pool_t *p; + struct fspr_other_child_rec_t *next; + fspr_proc_t *proc; void (*maintenance) (int, void *, int); void *data; - apr_os_file_t write_fd; + fspr_os_file_t write_fd; }; #define WSAHighByte 2 #define WSALowByte 0 -/* start.c and apr_app.c helpers and communication within misc.c +/* start.c and fspr_app.c helpers and communication within misc.c * - * They are not for public consumption, although apr_app_init_complete + * They are not for public consumption, although fspr_app_init_complete * must be an exported symbol to avoid reinitialization. */ -extern int APR_DECLARE_DATA apr_app_init_complete; +extern int APR_DECLARE_DATA fspr_app_init_complete; -int apr_wastrtoastr(char const * const * *retarr, +int fspr_wastrtoastr(char const * const * *retarr, wchar_t const * const *arr, int args); /* Platform specific designation of run time os version. @@ -104,11 +104,11 @@ typedef enum { APR_WIN_XP_SP1 = 61, APR_WIN_XP_SP2 = 62, APR_WIN_2003 = 70 -} apr_oslevel_e; +} fspr_oslevel_e; -extern APR_DECLARE_DATA apr_oslevel_e apr_os_level; +extern APR_DECLARE_DATA fspr_oslevel_e fspr_os_level; -apr_status_t apr_get_oslevel(apr_oslevel_e *); +fspr_status_t fspr_get_oslevel(fspr_oslevel_e *); /* The APR_HAS_ANSI_FS symbol is PRIVATE, and internal to APR. * APR only supports char data for filenames. Like most applications, @@ -131,7 +131,7 @@ apr_status_t apr_get_oslevel(apr_oslevel_e *); * build which supports only WINNT or WCE. */ #if APR_HAS_ANSI_FS && APR_HAS_UNICODE_FS -#define IF_WIN_OS_IS_UNICODE if (apr_os_level >= APR_WIN_UNICODE) +#define IF_WIN_OS_IS_UNICODE if (fspr_os_level >= APR_WIN_UNICODE) #define ELSE_WIN_OS_IS_ANSI else #else /* APR_HAS_UNICODE_FS */ #define IF_WIN_OS_IS_UNICODE @@ -146,26 +146,26 @@ typedef enum { DLL_SHSTDAPI = 4, // shell32 From ShellAPI.h DLL_NTDLL = 5, // shell32 From our real kernel DLL_defined = 6 // must define as last idx_ + 1 -} apr_dlltoken_e; +} fspr_dlltoken_e; -FARPROC apr_load_dll_func(apr_dlltoken_e fnLib, char *fnName, int ordinal); +FARPROC fspr_load_dll_func(fspr_dlltoken_e fnLib, char *fnName, int ordinal); -/* The apr_load_dll_func call WILL fault if the function cannot be loaded */ +/* The fspr_load_dll_func call WILL fault if the function cannot be loaded */ #define APR_DECLARE_LATE_DLL_FUNC(lib, rettype, calltype, fn, ord, args, names) \ - typedef rettype (calltype *apr_winapi_fpt_##fn) args; \ - static apr_winapi_fpt_##fn apr_winapi_pfn_##fn = NULL; \ - __inline rettype apr_winapi_##fn args \ - { if (!apr_winapi_pfn_##fn) \ - apr_winapi_pfn_##fn = (apr_winapi_fpt_##fn) \ - apr_load_dll_func(lib, #fn, ord); \ - return (*(apr_winapi_pfn_##fn)) names; }; \ + typedef rettype (calltype *fspr_winapi_fpt_##fn) args; \ + static fspr_winapi_fpt_##fn fspr_winapi_pfn_##fn = NULL; \ + __inline rettype fspr_winapi_##fn args \ + { if (!fspr_winapi_pfn_##fn) \ + fspr_winapi_pfn_##fn = (fspr_winapi_fpt_##fn) \ + fspr_load_dll_func(lib, #fn, ord); \ + return (*(fspr_winapi_pfn_##fn)) names; }; \ /* Provide late bound declarations of every API function missing from * one or more supported releases of the Win32 API * - * lib is the enumerated token from apr_dlltoken_e, and must correspond - * to the string table entry in start.c used by the apr_load_dll_func(). + * lib is the enumerated token from fspr_dlltoken_e, and must correspond + * to the string table entry in start.c used by the fspr_load_dll_func(). * Token names (attempt to) follow Windows.h declarations prefixed by DLL_ * in order to facilitate comparison. Use the exact declaration syntax * and names from Windows.h to prevent ambigutity and bugs. @@ -190,9 +190,9 @@ APR_DECLARE_LATE_DLL_FUNC(DLL_WINBASEAPI, BOOL, WINAPI, GetFileAttributesExA, 0, IN GET_FILEEX_INFO_LEVELS fInfoLevelId, OUT LPVOID lpFileInformation), (lpFileName, fInfoLevelId, lpFileInformation)); -#define GetFileAttributesExA apr_winapi_GetFileAttributesExA +#define GetFileAttributesExA fspr_winapi_GetFileAttributesExA #undef GetFileAttributesEx -#define GetFileAttributesEx apr_winapi_GetFileAttributesExA +#define GetFileAttributesEx fspr_winapi_GetFileAttributesExA #ifdef GetFileAttributesExW #undef GetFileAttributesExW @@ -202,29 +202,29 @@ APR_DECLARE_LATE_DLL_FUNC(DLL_WINBASEAPI, BOOL, WINAPI, GetFileAttributesExW, 0, IN GET_FILEEX_INFO_LEVELS fInfoLevelId, OUT LPVOID lpFileInformation), (lpFileName, fInfoLevelId, lpFileInformation)); -#define GetFileAttributesExW apr_winapi_GetFileAttributesExW +#define GetFileAttributesExW fspr_winapi_GetFileAttributesExW APR_DECLARE_LATE_DLL_FUNC(DLL_WINBASEAPI, BOOL, WINAPI, CancelIo, 0, ( IN HANDLE hFile), (hFile)); -#define CancelIo apr_winapi_CancelIo +#define CancelIo fspr_winapi_CancelIo APR_DECLARE_LATE_DLL_FUNC(DLL_WINBASEAPI, BOOL, WINAPI, TryEnterCriticalSection, 0, ( LPCRITICAL_SECTION lpCriticalSection), (lpCriticalSection)); -#define TryEnterCriticalSection apr_winapi_TryEnterCriticalSection +#define TryEnterCriticalSection fspr_winapi_TryEnterCriticalSection APR_DECLARE_LATE_DLL_FUNC(DLL_WINBASEAPI, BOOL, WINAPI, SwitchToThread, 0, ( void), ()); -#define SwitchToThread apr_winapi_SwitchToThread +#define SwitchToThread fspr_winapi_SwitchToThread APR_DECLARE_LATE_DLL_FUNC(DLL_WINADVAPI, BOOL, WINAPI, GetEffectiveRightsFromAclW, 0, ( IN PACL pacl, IN PTRUSTEE_W pTrustee, OUT PACCESS_MASK pAccessRights), (pacl, pTrustee, pAccessRights)); -#define GetEffectiveRightsFromAclW apr_winapi_GetEffectiveRightsFromAclW +#define GetEffectiveRightsFromAclW fspr_winapi_GetEffectiveRightsFromAclW APR_DECLARE_LATE_DLL_FUNC(DLL_WINADVAPI, BOOL, WINAPI, GetNamedSecurityInfoW, 0, ( IN LPWSTR pObjectName, @@ -237,7 +237,7 @@ APR_DECLARE_LATE_DLL_FUNC(DLL_WINADVAPI, BOOL, WINAPI, GetNamedSecurityInfoW, 0, OUT PSECURITY_DESCRIPTOR *ppSecurityDescriptor), (pObjectName, ObjectType, SecurityInfo, ppsidOwner, ppsidGroup, ppDacl, ppSacl, ppSecurityDescriptor)); -#define GetNamedSecurityInfoW apr_winapi_GetNamedSecurityInfoW +#define GetNamedSecurityInfoW fspr_winapi_GetNamedSecurityInfoW APR_DECLARE_LATE_DLL_FUNC(DLL_WINADVAPI, BOOL, WINAPI, GetNamedSecurityInfoA, 0, ( IN LPSTR pObjectName, @@ -250,9 +250,9 @@ APR_DECLARE_LATE_DLL_FUNC(DLL_WINADVAPI, BOOL, WINAPI, GetNamedSecurityInfoA, 0, OUT PSECURITY_DESCRIPTOR *ppSecurityDescriptor), (pObjectName, ObjectType, SecurityInfo, ppsidOwner, ppsidGroup, ppDacl, ppSacl, ppSecurityDescriptor)); -#define GetNamedSecurityInfoA apr_winapi_GetNamedSecurityInfoA +#define GetNamedSecurityInfoA fspr_winapi_GetNamedSecurityInfoA #undef GetNamedSecurityInfo -#define GetNamedSecurityInfo apr_winapi_GetNamedSecurityInfoA +#define GetNamedSecurityInfo fspr_winapi_GetNamedSecurityInfoA APR_DECLARE_LATE_DLL_FUNC(DLL_WINADVAPI, BOOL, WINAPI, GetSecurityInfo, 0, ( IN HANDLE handle, @@ -265,13 +265,13 @@ APR_DECLARE_LATE_DLL_FUNC(DLL_WINADVAPI, BOOL, WINAPI, GetSecurityInfo, 0, ( OUT PSECURITY_DESCRIPTOR *ppSecurityDescriptor), (handle, ObjectType, SecurityInfo, ppsidOwner, ppsidGroup, ppDacl, ppSacl, ppSecurityDescriptor)); -#define GetSecurityInfo apr_winapi_GetSecurityInfo +#define GetSecurityInfo fspr_winapi_GetSecurityInfo APR_DECLARE_LATE_DLL_FUNC(DLL_SHSTDAPI, LPWSTR *, WINAPI, CommandLineToArgvW, 0, ( LPCWSTR lpCmdLine, int *pNumArgs), (lpCmdLine, pNumArgs)); -#define CommandLineToArgvW apr_winapi_CommandLineToArgvW +#define CommandLineToArgvW fspr_winapi_CommandLineToArgvW #endif /* !defined(_WIN32_WCE) && !defined(WINNT) */ @@ -282,14 +282,14 @@ APR_DECLARE_LATE_DLL_FUNC(DLL_NTDLL, DWORD, WINAPI, NtQueryTimerResolution, 0, ( ULONG *pMinRes, /* Maximum NS Resolution */ ULONG *pCurRes), /* Current NS Resolution */ (pMaxRes, pMinRes, pCurRes)); -#define QueryTimerResolution apr_winapi_NtQueryTimerResolution +#define QueryTimerResolution fspr_winapi_NtQueryTimerResolution APR_DECLARE_LATE_DLL_FUNC(DLL_NTDLL, DWORD, WINAPI, NtSetTimerResolution, 0, ( ULONG ReqRes, /* Requested NS Clock Resolution */ BOOL Acquire, /* Aquire (1) or Release (0) our interest */ ULONG *pNewRes), /* The NS Clock Resolution granted */ (ReqRes, Acquire, pNewRes)); -#define SetTimerResolution apr_winapi_NtSetTimerResolution +#define SetTimerResolution fspr_winapi_NtSetTimerResolution /* ### These are ULONG_PTR values, but that's int32 for all we care * until the Win64 port is prepared. @@ -310,7 +310,7 @@ APR_DECLARE_LATE_DLL_FUNC(DLL_NTDLL, DWORD, WINAPI, NtQueryInformationProcess, 0 ULONG LenPI, /* Use sizeof(PBI) */ ULONG *pSizePI), /* returns pPI buffer used (may pass NULL) */ (hProcess, info, pPI, LenPI, pSizePI)); -#define QueryInformationProcess apr_winapi_NtQueryInformationProcess +#define QueryInformationProcess fspr_winapi_NtQueryInformationProcess APR_DECLARE_LATE_DLL_FUNC(DLL_NTDLL, DWORD, WINAPI, NtQueryObject, 0, ( HANDLE hObject, /* Obvious */ @@ -319,7 +319,7 @@ APR_DECLARE_LATE_DLL_FUNC(DLL_NTDLL, DWORD, WINAPI, NtQueryObject, 0, ( ULONG LenOI, /* Use sizeof(PBI) */ ULONG *pSizeOI), /* returns pPI buffer used (may pass NULL) */ (hObject, info, pOI, LenOI, pSizeOI)); -#define QueryObject apr_winapi_NtQueryObject +#define QueryObject fspr_winapi_NtQueryObject #endif /* !defined(_WIN32_WCE) */ diff --git a/libs/apr/include/arch/win32/apr_arch_networkio.h b/libs/apr/include/arch/win32/fspr_arch_networkio.h similarity index 74% rename from libs/apr/include/arch/win32/apr_arch_networkio.h rename to libs/apr/include/arch/win32/fspr_arch_networkio.h index bb58dde224e..d125adc0671 100644 --- a/libs/apr/include/arch/win32/apr_arch_networkio.h +++ b/libs/apr/include/arch/win32/fspr_arch_networkio.h @@ -17,9 +17,9 @@ #ifndef NETWORK_IO_H #define NETWORK_IO_H -#include "apr_network_io.h" -#include "apr_general.h" -#include "apr_poll.h" +#include "fspr_network_io.h" +#include "fspr_general.h" +#include "fspr_poll.h" #ifdef _MSC_VER #undef MCAST_JOIN_SOURCE_GROUP #endif @@ -31,24 +31,24 @@ struct sock_userdata_t { void *data; }; -struct apr_socket_t { - apr_pool_t *pool; +struct fspr_socket_t { + fspr_pool_t *pool; SOCKET socketdes; int type; /* SOCK_STREAM, SOCK_DGRAM */ int protocol; - apr_sockaddr_t *local_addr; - apr_sockaddr_t *remote_addr; + fspr_sockaddr_t *local_addr; + fspr_sockaddr_t *remote_addr; int timeout_ms; /* MUST MATCH if timeout > 0 */ - apr_interval_time_t timeout; - apr_int32_t disconnected; + fspr_interval_time_t timeout; + fspr_int32_t disconnected; int local_port_unknown; int local_interface_unknown; int remote_addr_unknown; - apr_int32_t options; - apr_int32_t inherit; + fspr_int32_t options; + fspr_int32_t inherit; #if APR_HAS_SENDFILE /* As of 07.20.04, the overlapped structure is only used by - * apr_socket_sendfile and that's where it will be allocated + * fspr_socket_sendfile and that's where it will be allocated * and initialized. */ OVERLAPPED *overlapped; @@ -56,7 +56,7 @@ struct apr_socket_t { sock_userdata_t *userdata; /* if there is a timeout set, then this pollset is used */ - apr_pollset_t *pollset; + fspr_pollset_t *pollset; }; #ifdef _WIN32_WCE @@ -71,16 +71,16 @@ typedef struct _WSABUF { #define HAVE_STRUCT_IPMREQ #endif -apr_status_t status_from_res_error(int); +fspr_status_t status_from_res_error(int); -const char *apr_inet_ntop(int af, const void *src, char *dst, apr_size_t size); -int apr_inet_pton(int af, const char *src, void *dst); -void apr_sockaddr_vars_set(apr_sockaddr_t *, int, apr_port_t); +const char *fspr_inet_ntop(int af, const void *src, char *dst, fspr_size_t size); +int fspr_inet_pton(int af, const char *src, void *dst); +void fspr_sockaddr_vars_set(fspr_sockaddr_t *, int, fspr_port_t); -#define apr_is_option_set(skt, option) \ +#define fspr_is_option_set(skt, option) \ (((skt)->options & (option)) == (option)) -#define apr_set_option(skt, option, on) \ +#define fspr_set_option(skt, option, on) \ do { \ if (on) \ (skt)->options |= (option); \ diff --git a/libs/apr/include/arch/win32/apr_arch_proc_mutex.h b/libs/apr/include/arch/win32/fspr_arch_proc_mutex.h similarity index 92% rename from libs/apr/include/arch/win32/apr_arch_proc_mutex.h rename to libs/apr/include/arch/win32/fspr_arch_proc_mutex.h index 4e3e3993996..cde7698a095 100644 --- a/libs/apr/include/arch/win32/apr_arch_proc_mutex.h +++ b/libs/apr/include/arch/win32/fspr_arch_proc_mutex.h @@ -17,10 +17,10 @@ #ifndef PROC_MUTEX_H #define PROC_MUTEX_H -#include "apr_proc_mutex.h" +#include "fspr_proc_mutex.h" -struct apr_proc_mutex_t { - apr_pool_t *pool; +struct fspr_proc_mutex_t { + fspr_pool_t *pool; HANDLE handle; const char *fname; }; diff --git a/libs/apr/include/arch/win32/apr_arch_thread_cond.h b/libs/apr/include/arch/win32/fspr_arch_thread_cond.h similarity index 92% rename from libs/apr/include/arch/win32/apr_arch_thread_cond.h rename to libs/apr/include/arch/win32/fspr_arch_thread_cond.h index c7f69f80646..482ddf40210 100644 --- a/libs/apr/include/arch/win32/apr_arch_thread_cond.h +++ b/libs/apr/include/arch/win32/fspr_arch_thread_cond.h @@ -17,10 +17,10 @@ #ifndef THREAD_COND_H #define THREAD_COND_H -#include "apr_thread_cond.h" +#include "fspr_thread_cond.h" -struct apr_thread_cond_t { - apr_pool_t *pool; +struct fspr_thread_cond_t { + fspr_pool_t *pool; HANDLE semaphore; CRITICAL_SECTION csection; unsigned long num_waiting; diff --git a/libs/apr/include/arch/win32/apr_arch_thread_mutex.h b/libs/apr/include/arch/win32/fspr_arch_thread_mutex.h similarity index 94% rename from libs/apr/include/arch/win32/apr_arch_thread_mutex.h rename to libs/apr/include/arch/win32/fspr_arch_thread_mutex.h index 13d3c1cbd57..c74255b86fc 100644 --- a/libs/apr/include/arch/win32/apr_arch_thread_mutex.h +++ b/libs/apr/include/arch/win32/fspr_arch_thread_mutex.h @@ -17,7 +17,7 @@ #ifndef THREAD_MUTEX_H #define THREAD_MUTEX_H -#include "apr_pools.h" +#include "fspr_pools.h" typedef enum thread_mutex_type { thread_mutex_critical_section, @@ -29,8 +29,8 @@ typedef enum thread_mutex_type { * and nested_mutex on Win9x only. Otherwise critical_section * is used for NT nexted mutexes providing optimal performance. */ -struct apr_thread_mutex_t { - apr_pool_t *pool; +struct fspr_thread_mutex_t { + fspr_pool_t *pool; thread_mutex_type type; HANDLE handle; CRITICAL_SECTION section; diff --git a/libs/apr/include/arch/win32/apr_arch_thread_rwlock.h b/libs/apr/include/arch/win32/fspr_arch_thread_rwlock.h similarity index 92% rename from libs/apr/include/arch/win32/apr_arch_thread_rwlock.h rename to libs/apr/include/arch/win32/fspr_arch_thread_rwlock.h index 0a6889df838..28e8f953fe0 100644 --- a/libs/apr/include/arch/win32/apr_arch_thread_rwlock.h +++ b/libs/apr/include/arch/win32/fspr_arch_thread_rwlock.h @@ -17,10 +17,10 @@ #ifndef THREAD_RWLOCK_H #define THREAD_RWLOCK_H -#include "apr_thread_rwlock.h" +#include "fspr_thread_rwlock.h" -struct apr_thread_rwlock_t { - apr_pool_t *pool; +struct fspr_thread_rwlock_t { + fspr_pool_t *pool; HANDLE write_mutex; HANDLE read_event; LONG readers; diff --git a/libs/apr/include/arch/win32/apr_arch_threadproc.h b/libs/apr/include/arch/win32/fspr_arch_threadproc.h similarity index 60% rename from libs/apr/include/arch/win32/apr_arch_threadproc.h rename to libs/apr/include/arch/win32/fspr_arch_threadproc.h index 056090bf11c..47d9cff910c 100644 --- a/libs/apr/include/arch/win32/apr_arch_threadproc.h +++ b/libs/apr/include/arch/win32/fspr_arch_threadproc.h @@ -14,50 +14,50 @@ * limitations under the License. */ -#include "apr_private.h" -#include "apr_thread_proc.h" -#include "apr_file_io.h" +#include "fspr_private.h" +#include "fspr_thread_proc.h" +#include "fspr_file_io.h" #ifndef THREAD_PROC_H #define THREAD_PROC_H #define SHELL_PATH "cmd.exe" -struct apr_thread_t { - apr_pool_t *pool; +struct fspr_thread_t { + fspr_pool_t *pool; HANDLE td; - apr_int32_t cancel; - apr_int32_t cancel_how; + fspr_int32_t cancel; + fspr_int32_t cancel_how; void *data; - apr_thread_start_t func; - apr_status_t exitval; + fspr_thread_start_t func; + fspr_status_t exitval; }; -struct apr_threadattr_t { - apr_pool_t *pool; - apr_int32_t detach; - apr_size_t stacksize; +struct fspr_threadattr_t { + fspr_pool_t *pool; + fspr_int32_t detach; + fspr_size_t stacksize; int priority; }; -struct apr_threadkey_t { - apr_pool_t *pool; +struct fspr_threadkey_t { + fspr_pool_t *pool; DWORD key; }; -struct apr_procattr_t { - apr_pool_t *pool; - apr_file_t *parent_in; - apr_file_t *child_in; - apr_file_t *parent_out; - apr_file_t *child_out; - apr_file_t *parent_err; - apr_file_t *child_err; +struct fspr_procattr_t { + fspr_pool_t *pool; + fspr_file_t *parent_in; + fspr_file_t *child_in; + fspr_file_t *parent_out; + fspr_file_t *child_out; + fspr_file_t *parent_err; + fspr_file_t *child_err; char *currdir; - apr_int32_t cmdtype; - apr_int32_t detached; - apr_child_errfn_t *errfn; - apr_int32_t errchk; + fspr_int32_t cmdtype; + fspr_int32_t detached; + fspr_child_errfn_t *errfn; + fspr_int32_t errchk; #ifndef _WIN32_WCE HANDLE user_token; LPSECURITY_ATTRIBUTES sa; @@ -65,7 +65,7 @@ struct apr_procattr_t { #endif }; -struct apr_thread_once_t { +struct fspr_thread_once_t { long value; }; diff --git a/libs/apr/include/arch/win32/apr_arch_utf8.h b/libs/apr/include/arch/win32/fspr_arch_utf8.h similarity index 76% rename from libs/apr/include/arch/win32/apr_arch_utf8.h rename to libs/apr/include/arch/win32/fspr_arch_utf8.h index 84f8bf775ef..435ee03006a 100644 --- a/libs/apr/include/arch/win32/apr_arch_utf8.h +++ b/libs/apr/include/arch/win32/fspr_arch_utf8.h @@ -17,13 +17,13 @@ #ifndef UTF8_H #define UTF8_H -#include "apr.h" -#include "apr_lib.h" -#include "apr_errno.h" +#include "fspr.h" +#include "fspr_lib.h" +#include "fspr_errno.h" /* If we ever support anything more exciting than char... this could move. */ -typedef apr_uint16_t apr_wchar_t; +typedef fspr_uint16_t fspr_wchar_t; /** * An APR internal function for fast utf-8 octet-encoded Unicode conversion @@ -34,10 +34,10 @@ typedef apr_uint16_t apr_wchar_t; * when the character code is invalid (in or out of context) and the later * when more characters were expected, but insufficient characters remain. */ -APR_DECLARE(apr_status_t) apr_conv_utf8_to_ucs2(const char *in, - apr_size_t *inbytes, - apr_wchar_t *out, - apr_size_t *outwords); +APR_DECLARE(fspr_status_t) fspr_conv_utf8_to_ucs2(const char *in, + fspr_size_t *inbytes, + fspr_wchar_t *out, + fspr_size_t *outwords); /** * An APR internal function for fast ucs-2 wide Unicode format conversion to @@ -48,9 +48,9 @@ APR_DECLARE(apr_status_t) apr_conv_utf8_to_ucs2(const char *in, * when the character code is invalid (in or out of context) and the later * when more words were expected, but insufficient words remain. */ -APR_DECLARE(apr_status_t) apr_conv_ucs2_to_utf8(const apr_wchar_t *in, - apr_size_t *inwords, +APR_DECLARE(fspr_status_t) fspr_conv_ucs2_to_utf8(const fspr_wchar_t *in, + fspr_size_t *inwords, char *out, - apr_size_t *outbytes); + fspr_size_t *outbytes); #endif /* def UTF8_H */ diff --git a/libs/apr/include/arch/win32/apr_dbg_win32_handles.h b/libs/apr/include/arch/win32/fspr_dbg_win32_handles.h similarity index 62% rename from libs/apr/include/arch/win32/apr_dbg_win32_handles.h rename to libs/apr/include/arch/win32/fspr_dbg_win32_handles.h index 471cd66dbfc..ba576016a8a 100644 --- a/libs/apr/include/arch/win32/apr_dbg_win32_handles.h +++ b/libs/apr/include/arch/win32/fspr_dbg_win32_handles.h @@ -23,18 +23,18 @@ extern "C" { /* USAGE: * - * Add the following include to apr_private.h for internal debugging, + * Add the following include to fspr_private.h for internal debugging, * or copy this header into apr/include add the include below to apr.h * for really global debugging; * - * #include "apr_dbg_win32_handles.h" + * #include "fspr_dbg_win32_handles.h" * - * apr_dbg_log is the crux of this function ... it uses Win32 API and + * fspr_dbg_log is the crux of this function ... it uses Win32 API and * no apr calls itself to log all activity to a file named for the * executing application with a .pid suffix. Ergo several instances * may be executing and logged at once. * - * HANDLE apr_dbg_log(char* fn, HANDLE ha, char* fl, int ln, int nh + * HANDLE fspr_dbg_log(char* fn, HANDLE ha, char* fl, int ln, int nh * [, HANDLE *hv, char *dsc...]) * * returns: the handle passed in ha, which is cast back to the real return type. @@ -42,7 +42,7 @@ extern "C" { * formats one line into the debug log file if nh is zero; * ha (hex) seq(hex) tid(hex) fn fl ln * xxxxxxxx xxxxxxxx xxxxxxxx func() sourcefile:lineno - * The macro apr_dbg_rv makes this simple to implement for many APIs + * The macro fspr_dbg_rv makes this simple to implement for many APIs * that simply take args that don't interest us, and return a handle. * * formats multiple lines (nh) into the debug log file for each hv/dsc pair @@ -53,67 +53,67 @@ extern "C" { * treated as a handle. */ -APR_DECLARE_NONSTD(HANDLE) apr_dbg_log(char* fn, HANDLE ha, char* fl, int ln, +APR_DECLARE_NONSTD(HANDLE) fspr_dbg_log(char* fn, HANDLE ha, char* fl, int ln, int nh,/* HANDLE *hv, char *dsc */...); -#define apr_dbg_rv(fn, args) (apr_dbg_log(#fn,(fn) args,__FILE__,__LINE__,0)) +#define fspr_dbg_rv(fn, args) (fspr_dbg_log(#fn,(fn) args,__FILE__,__LINE__,0)) #define CloseHandle(h) \ - ((BOOL)apr_dbg_log("CloseHandle", \ + ((BOOL)fspr_dbg_log("CloseHandle", \ (HANDLE)(CloseHandle)(h), \ __FILE__,__LINE__,1, \ &(h),"")) -#define CreateEventA(sd,b1,b2,nm) apr_dbg_rv(CreateEventA,(sd,b1,b2,nm)) -#define CreateEventW(sd,b1,b2,nm) apr_dbg_rv(CreateEventW,(sd,b1,b2,nm)) +#define CreateEventA(sd,b1,b2,nm) fspr_dbg_rv(CreateEventA,(sd,b1,b2,nm)) +#define CreateEventW(sd,b1,b2,nm) fspr_dbg_rv(CreateEventW,(sd,b1,b2,nm)) -#define CreateFileA(nm,d1,d2,sd,d3,d4,h) apr_dbg_rv(CreateFileA,(nm,d1,d2,sd,d3,d4,h)) -#define CreateFileW(nm,d1,d2,sd,d3,d4,h) apr_dbg_rv(CreateFileW,(nm,d1,d2,sd,d3,d4,h)) +#define CreateFileA(nm,d1,d2,sd,d3,d4,h) fspr_dbg_rv(CreateFileA,(nm,d1,d2,sd,d3,d4,h)) +#define CreateFileW(nm,d1,d2,sd,d3,d4,h) fspr_dbg_rv(CreateFileW,(nm,d1,d2,sd,d3,d4,h)) -#define CreateFileMappingA(fh,sd,d1,d2,d3,nm) apr_dbg_rv(CreateFileMappingA,(fh,sd,d1,d2,d3,nm)) -#define CreateFileMappingW(fh,sd,d1,d2,d3,nm) apr_dbg_rv(CreateFileMappingW,(fh,sd,d1,d2,d3,nm)) +#define CreateFileMappingA(fh,sd,d1,d2,d3,nm) fspr_dbg_rv(CreateFileMappingA,(fh,sd,d1,d2,d3,nm)) +#define CreateFileMappingW(fh,sd,d1,d2,d3,nm) fspr_dbg_rv(CreateFileMappingW,(fh,sd,d1,d2,d3,nm)) -#define CreateMutexA(sd,b,nm) apr_dbg_rv(CreateMutexA,(sd,b,nm)) -#define CreateMutexW(sd,b,nm) apr_dbg_rv(CreateMutexW,(sd,b,nm)) +#define CreateMutexA(sd,b,nm) fspr_dbg_rv(CreateMutexA,(sd,b,nm)) +#define CreateMutexW(sd,b,nm) fspr_dbg_rv(CreateMutexW,(sd,b,nm)) -#define CreateIoCompletionPort(h1,h2,pd1,d2) apr_dbg_rv(CreateIoCompletionPort,(h1,h2,pd1,d2)) +#define CreateIoCompletionPort(h1,h2,pd1,d2) fspr_dbg_rv(CreateIoCompletionPort,(h1,h2,pd1,d2)) -#define CreateNamedPipeA(nm,d1,d2,d3,d4,d5,d6,sd) apr_dbg_rv(CreateNamedPipeA,(nm,d1,d2,d3,d4,d5,d6,sd)) -#define CreateNamedPipeW(nm,d1,d2,d3,d4,d5,d6,sd) apr_dbg_rv(CreateNamedPipeW,(nm,d1,d2,d3,d4,d5,d6,sd)) +#define CreateNamedPipeA(nm,d1,d2,d3,d4,d5,d6,sd) fspr_dbg_rv(CreateNamedPipeA,(nm,d1,d2,d3,d4,d5,d6,sd)) +#define CreateNamedPipeW(nm,d1,d2,d3,d4,d5,d6,sd) fspr_dbg_rv(CreateNamedPipeW,(nm,d1,d2,d3,d4,d5,d6,sd)) #define CreatePipe(ph1,ph2,sd,d) \ - ((BOOL)apr_dbg_log("CreatePipe", \ + ((BOOL)fspr_dbg_log("CreatePipe", \ (HANDLE)(CreatePipe)(ph1,ph2,sd,d), \ __FILE__,__LINE__,2, \ (ph1),"hRead", \ (ph2),"hWrite")) #define CreateProcessA(s1,s2,sd1,sd2,b,d1,s3,s4,pd2,hr) \ - ((BOOL)apr_dbg_log("CreateProcessA", \ + ((BOOL)fspr_dbg_log("CreateProcessA", \ (HANDLE)(CreateProcessA)(s1,s2,sd1,sd2,b,d1,s3,s4,pd2,hr), \ __FILE__,__LINE__,2, \ &((hr)->hProcess),"hProcess", \ &((hr)->hThread),"hThread")) #define CreateProcessW(s1,s2,sd1,sd2,b,d1,s3,s4,pd2,hr) \ - ((BOOL)apr_dbg_log("CreateProcessW", \ + ((BOOL)fspr_dbg_log("CreateProcessW", \ (HANDLE)(CreateProcessW)(s1,s2,sd1,sd2,b,d1,s3,s4,pd2,hr), \ __FILE__,__LINE__,2, \ &((hr)->hProcess),"hProcess", \ &((hr)->hThread),"hThread")) -#define CreateSemaphoreA(sd,d1,d2,nm) apr_dbg_rv(CreateSemaphoreA,(sd,d1,d2,nm)) -#define CreateSemaphoreW(sd,d1,d2,nm) apr_dbg_rv(CreateSemaphoreW,(sd,d1,d2,nm)) +#define CreateSemaphoreA(sd,d1,d2,nm) fspr_dbg_rv(CreateSemaphoreA,(sd,d1,d2,nm)) +#define CreateSemaphoreW(sd,d1,d2,nm) fspr_dbg_rv(CreateSemaphoreW,(sd,d1,d2,nm)) -#define CreateThread(sd,d1,fn,pv,d2,pd3) apr_dbg_rv(CreateThread,(sd,d1,fn,pv,d2,pd3)) +#define CreateThread(sd,d1,fn,pv,d2,pd3) fspr_dbg_rv(CreateThread,(sd,d1,fn,pv,d2,pd3)) #define DeregisterEventSource(h) \ - ((BOOL)apr_dbg_log("DeregisterEventSource", \ + ((BOOL)fspr_dbg_log("DeregisterEventSource", \ (HANDLE)(DeregisterEventSource)(h), \ __FILE__,__LINE__,1, \ &(h),"")) #define DuplicateHandle(h1,h2,h3,ph4,d1,b,d2) \ - ((BOOL)apr_dbg_log("DuplicateHandle", \ + ((BOOL)fspr_dbg_log("DuplicateHandle", \ (HANDLE)(DuplicateHandle)(h1,h2,h3,ph4,d1,b,d2), \ __FILE__,__LINE__,2, \ (ph4),((h3)==GetCurrentProcess()) \ @@ -122,91 +122,91 @@ APR_DECLARE_NONSTD(HANDLE) apr_dbg_log(char* fn, HANDLE ha, char* fl, int ln, ? "Source" : "EXTERN Source")) #define GetCurrentProcess() \ - (apr_dbg_log("GetCurrentProcess", \ + (fspr_dbg_log("GetCurrentProcess", \ (GetCurrentProcess)(),__FILE__,__LINE__,0)) #define GetCurrentThread() \ - (apr_dbg_log("GetCurrentThread", \ + (fspr_dbg_log("GetCurrentThread", \ (GetCurrentThread)(),__FILE__,__LINE__,0)) -#define GetModuleHandleA(nm) apr_dbg_rv(GetModuleHandleA,(nm)) -#define GetModuleHandleW(nm) apr_dbg_rv(GetModuleHandleW,(nm)) +#define GetModuleHandleA(nm) fspr_dbg_rv(GetModuleHandleA,(nm)) +#define GetModuleHandleW(nm) fspr_dbg_rv(GetModuleHandleW,(nm)) -#define GetStdHandle(d) apr_dbg_rv(GetStdHandle,(d)) +#define GetStdHandle(d) fspr_dbg_rv(GetStdHandle,(d)) -#define LoadLibraryA(nm) apr_dbg_rv(LoadLibraryA,(nm)) -#define LoadLibraryW(nm) apr_dbg_rv(LoadLibraryW,(nm)) +#define LoadLibraryA(nm) fspr_dbg_rv(LoadLibraryA,(nm)) +#define LoadLibraryW(nm) fspr_dbg_rv(LoadLibraryW,(nm)) -#define LoadLibraryExA(nm,h,d) apr_dbg_rv(LoadLibraryExA,(nm,h,d)) -#define LoadLibraryExW(nm,h,d) apr_dbg_rv(LoadLibraryExW,(nm,h,d)) +#define LoadLibraryExA(nm,h,d) fspr_dbg_rv(LoadLibraryExA,(nm,h,d)) +#define LoadLibraryExW(nm,h,d) fspr_dbg_rv(LoadLibraryExW,(nm,h,d)) -#define OpenEventA(d,b,nm) apr_dbg_rv(OpenEventA,(d,b,nm)) -#define OpenEventW(d,b,nm) apr_dbg_rv(OpenEventW,(d,b,nm)) +#define OpenEventA(d,b,nm) fspr_dbg_rv(OpenEventA,(d,b,nm)) +#define OpenEventW(d,b,nm) fspr_dbg_rv(OpenEventW,(d,b,nm)) -#define OpenFileMappingA(d,b,nm) apr_dbg_rv(OpenFileMappingA,(d,b,nm)) -#define OpenFileMappingW(d,b,nm) apr_dbg_rv(OpenFileMappingW,(d,b,nm)) +#define OpenFileMappingA(d,b,nm) fspr_dbg_rv(OpenFileMappingA,(d,b,nm)) +#define OpenFileMappingW(d,b,nm) fspr_dbg_rv(OpenFileMappingW,(d,b,nm)) -#define RegisterEventSourceA(s1,s2) apr_dbg_rv(RegisterEventSourceA,(s1,s2)) -#define RegisterEventSourceW(s1,s2) apr_dbg_rv(RegisterEventSourceW,(s1,s2)) +#define RegisterEventSourceA(s1,s2) fspr_dbg_rv(RegisterEventSourceA,(s1,s2)) +#define RegisterEventSourceW(s1,s2) fspr_dbg_rv(RegisterEventSourceW,(s1,s2)) #define SetEvent(h) \ - ((BOOL)apr_dbg_log("SetEvent", \ + ((BOOL)fspr_dbg_log("SetEvent", \ (HANDLE)(SetEvent)(h), \ __FILE__,__LINE__,1, \ &(h),"")) #define SetStdHandle(d,h) \ - ((BOOL)apr_dbg_log("SetStdHandle", \ + ((BOOL)fspr_dbg_log("SetStdHandle", \ (HANDLE)(SetStdHandle)(d,h), \ __FILE__,__LINE__,1,&(h),"")) #define socket(i1,i2,i3) \ - ((SOCKET)apr_dbg_log("socket", \ + ((SOCKET)fspr_dbg_log("socket", \ (HANDLE)(socket)(i1,i2,i3), \ __FILE__,__LINE__,0)) #define WaitForSingleObject(h,d) \ - ((DWORD)apr_dbg_log("WaitForSingleObject", \ + ((DWORD)fspr_dbg_log("WaitForSingleObject", \ (HANDLE)(WaitForSingleObject)(h,d), \ __FILE__,__LINE__,1,&(h),"Signaled")) #define WaitForSingleObjectEx(h,d,b) \ - ((DWORD)apr_dbg_log("WaitForSingleObjectEx", \ + ((DWORD)fspr_dbg_log("WaitForSingleObjectEx", \ (HANDLE)(WaitForSingleObjectEx)(h,d,b), \ __FILE__,__LINE__,1,&(h),"Signaled")) #define WaitForMultipleObjects(d1,ah,b,d2) \ - ((DWORD)apr_dbg_log("WaitForMultipleObjects", \ + ((DWORD)fspr_dbg_log("WaitForMultipleObjects", \ (HANDLE)(WaitForMultipleObjects)(d1,ah,b,d2), \ __FILE__,__LINE__,1,ah,"Signaled")) #define WaitForMultipleObjectsEx(d1,ah,b1,d2,b2) \ - ((DWORD)apr_dbg_log("WaitForMultipleObjectsEx", \ + ((DWORD)fspr_dbg_log("WaitForMultipleObjectsEx", \ (HANDLE)(WaitForMultipleObjectsEx)(d1,ah,b1,d2,b2), \ __FILE__,__LINE__,1,ah,"Signaled")) #define WSASocketA(i1,i2,i3,pi,g,dw) \ - ((SOCKET)apr_dbg_log("WSASocketA", \ + ((SOCKET)fspr_dbg_log("WSASocketA", \ (HANDLE)(WSASocketA)(i1,i2,i3,pi,g,dw), \ __FILE__,__LINE__,0)) #define WSASocketW(i1,i2,i3,pi,g,dw) \ - ((SOCKET)apr_dbg_log("WSASocketW", \ + ((SOCKET)fspr_dbg_log("WSASocketW", \ (HANDLE)(WSASocketW)(i1,i2,i3,pi,g,dw), \ __FILE__,__LINE__,0)) #define closesocket(sh) \ - ((int)apr_dbg_log("closesocket", \ + ((int)fspr_dbg_log("closesocket", \ (HANDLE)(closesocket)(sh), \ __FILE__,__LINE__,1,&(sh),"")) #define _beginthread(fn,d,pv) \ - ((unsigned long)apr_dbg_log("_beginthread", \ + ((unsigned long)fspr_dbg_log("_beginthread", \ (HANDLE)(_beginthread)(fn,d,pv), \ __FILE__,__LINE__,0)) #define _beginthreadex(sd,d1,fn,pv,d2,pd3) \ - ((unsigned long)apr_dbg_log("_beginthreadex", \ + ((unsigned long)fspr_dbg_log("_beginthreadex", \ (HANDLE)(_beginthreadex)(sd,d1,fn,pv,d2,pd3), \ __FILE__,__LINE__,0)) diff --git a/libs/apr/include/arch/win32/apr_private.h b/libs/apr/include/arch/win32/fspr_private.h similarity index 97% rename from libs/apr/include/arch/win32/apr_private.h rename to libs/apr/include/arch/win32/fspr_private.h index 0dc5f989634..53af7067efd 100644 --- a/libs/apr/include/arch/win32/apr_private.h +++ b/libs/apr/include/arch/win32/fspr_private.h @@ -28,7 +28,7 @@ /* Include the public APR symbols, include our idea of the 'right' * subset of the Windows.h header. This saves us repetition. */ -#include "apr.h" +#include "fspr.h" /* * Add a _very_few_ declarations missing from the restricted set of headers @@ -153,7 +153,7 @@ APR_DECLARE_DATA int errno; #ifdef APR_INT64_STRFN #define APR_OFF_T_STRFN APR_INT64_STRFN #else -#define APR_OFF_T_STRFN apr_strtoi64 +#define APR_OFF_T_STRFN fspr_strtoi64 #endif #else #define APR_OFF_T_STRFN strtoi @@ -165,7 +165,7 @@ APR_DECLARE_DATA int errno; /* * Include common private declarations. */ -#include "../apr_private_common.h" +#include "../fspr_private_common.h" #endif /*APR_PRIVATE_H*/ #endif /*WIN32*/ diff --git a/libs/apr/include/apr.h.in b/libs/apr/include/fspr.h.in similarity index 92% rename from libs/apr/include/apr.h.in rename to libs/apr/include/fspr.h.in index 2a916184b71..4c0e80b4008 100644 --- a/libs/apr/include/apr.h.in +++ b/libs/apr/include/fspr.h.in @@ -38,7 +38,7 @@ * @{ */ /** - * @defgroup apr_platform Platform Definitions + * @defgroup fspr_platform Platform Definitions * @{ */ @@ -152,7 +152,7 @@ extern "C" { #endif /** - * @addtogroup apr_platform + * @addtogroup fspr_platform * @ingroup APR * @{ */ @@ -254,21 +254,21 @@ extern "C" { /* Typedefs that APR needs. */ -typedef unsigned char apr_byte_t; +typedef unsigned char fspr_byte_t; -typedef @short_value@ apr_int16_t; -typedef unsigned @short_value@ apr_uint16_t; +typedef @short_value@ fspr_int16_t; +typedef unsigned @short_value@ fspr_uint16_t; -typedef @int_value@ apr_int32_t; -typedef unsigned @int_value@ apr_uint32_t; +typedef @int_value@ fspr_int32_t; +typedef unsigned @int_value@ fspr_uint32_t; -typedef @long_value@ apr_int64_t; -typedef unsigned @long_value@ apr_uint64_t; +typedef @long_value@ fspr_int64_t; +typedef unsigned @long_value@ fspr_uint64_t; -typedef @size_t_value@ apr_size_t; -typedef @ssize_t_value@ apr_ssize_t; -typedef @off_t_value@ apr_off_t; -typedef @socklen_t_value@ apr_socklen_t; +typedef @size_t_value@ fspr_size_t; +typedef @ssize_t_value@ fspr_ssize_t; +typedef @off_t_value@ fspr_off_t; +typedef @socklen_t_value@ fspr_socklen_t; #define APR_SIZEOF_VOIDP @voidp_size@ @@ -286,7 +286,7 @@ typedef @socklen_t_value@ apr_socklen_t; * so that they follow the platform's calling convention. * @example */ -/** void* APR_THREAD_FUNC my_thread_entry_fn(apr_thread_t *thd, void *data); +/** void* APR_THREAD_FUNC my_thread_entry_fn(fspr_thread_t *thd, void *data); */ #define APR_THREAD_FUNC @@ -298,7 +298,7 @@ typedef @socklen_t_value@ apr_socklen_t; * @remark Both the declaration and implementations must use the same macro. * @example */ -/** APR_DECLARE(rettype) apr_func(args) +/** APR_DECLARE(rettype) fspr_func(args) * @see APR_DECLARE_NONSTD @see APR_DECLARE_DATA * @remark Note that when APR compiles the library itself, it passes the * symbol -DAPR_DECLARE_EXPORT to the compiler on some platforms (e.g. Win32) @@ -319,7 +319,7 @@ typedef @socklen_t_value@ apr_socklen_t; * @remark Both the declaration and implementations must use the same macro. * @example */ -/** APR_DECLARE_NONSTD(rettype) apr_func(args, ...); +/** APR_DECLARE_NONSTD(rettype) fspr_func(args, ...); */ #define APR_DECLARE_NONSTD(type) type @@ -331,8 +331,8 @@ typedef @socklen_t_value@ apr_socklen_t; * but both must include the macro. * @example */ -/** extern APR_DECLARE_DATA type apr_variable;\n - * APR_DECLARE_DATA type apr_variable = value; +/** extern APR_DECLARE_DATA type fspr_variable;\n + * APR_DECLARE_DATA type fspr_variable = value; */ #define APR_DECLARE_DATA @@ -373,9 +373,9 @@ typedef @socklen_t_value@ apr_socklen_t; #if APR_HAVE_SYS_WAIT_H #ifdef WEXITSTATUS -#define apr_wait_t int +#define fspr_wait_t int #else -#define apr_wait_t union wait +#define fspr_wait_t union wait #define WEXITSTATUS(status) (int)((status).w_retcode) #define WTERMSIG(status) (int)((status).w_termsig) #endif /* !WEXITSTATUS */ diff --git a/libs/apr/include/apr.hnw b/libs/apr/include/fspr.hnw similarity index 91% rename from libs/apr/include/apr.hnw rename to libs/apr/include/fspr.hnw index 6f1e1559e51..774103f8359 100644 --- a/libs/apr/include/apr.hnw +++ b/libs/apr/include/fspr.hnw @@ -73,7 +73,7 @@ extern "C" { #endif /** - * @defgroup apr_platform Platform Definitions + * @defgroup fspr_platform Platform Definitions * @ingroup APR * @{ */ @@ -232,28 +232,28 @@ extern "C" { /* Typedefs that APR needs. */ -typedef unsigned char apr_byte_t; +typedef unsigned char fspr_byte_t; -typedef short apr_int16_t; -typedef unsigned short apr_uint16_t; +typedef short fspr_int16_t; +typedef unsigned short fspr_uint16_t; -typedef int apr_int32_t; -typedef unsigned int apr_uint32_t; +typedef int fspr_int32_t; +typedef unsigned int fspr_uint32_t; -typedef long long apr_int64_t; -typedef unsigned long long apr_uint64_t; +typedef long long fspr_int64_t; +typedef unsigned long long fspr_uint64_t; -typedef size_t apr_size_t; -typedef ssize_t apr_ssize_t; +typedef size_t fspr_size_t; +typedef ssize_t fspr_ssize_t; #if APR_HAS_LARGE_FILES -typedef off64_t apr_off_t; +typedef off64_t fspr_off_t; #else -typedef off_t apr_off_t; +typedef off_t fspr_off_t; #endif #ifdef USE_WINSOCK -typedef int apr_socklen_t; +typedef int fspr_socklen_t; #else -typedef size_t apr_socklen_t; +typedef size_t fspr_socklen_t; #endif /* Are we big endian? */ @@ -280,7 +280,7 @@ typedef size_t apr_socklen_t; * so that they follow the platform's calling convention. * @example */ -/** void* APR_THREAD_FUNC my_thread_entry_fn(apr_thread_t *thd, void *data); +/** void* APR_THREAD_FUNC my_thread_entry_fn(fspr_thread_t *thd, void *data); */ #define APR_THREAD_FUNC @@ -292,7 +292,7 @@ typedef size_t apr_socklen_t; * @remark Both the declaration and implementations must use the same macro. * @example */ -/** APR_DECLARE(rettype) apr_func(args) +/** APR_DECLARE(rettype) fspr_func(args) * @see APR_DECLARE_NONSTD @see APR_DECLARE_DATA * @remark Note that when APR compiles the library itself, it passes the * symbol -DAPR_DECLARE_EXPORT to the compiler on some platforms (e.g. Win32) @@ -313,7 +313,7 @@ typedef size_t apr_socklen_t; * @remark Both the declaration and implementations must use the same macro. * @example */ -/** APR_DECLARE_NONSTD(rettype) apr_func(args, ...); +/** APR_DECLARE_NONSTD(rettype) fspr_func(args, ...); */ #define APR_DECLARE_NONSTD(type) type @@ -325,8 +325,8 @@ typedef size_t apr_socklen_t; * but both must include the macro. * @example */ -/** extern APR_DECLARE_DATA type apr_variable;\n - * APR_DECLARE_DATA type apr_variable = value; +/** extern APR_DECLARE_DATA type fspr_variable;\n + * APR_DECLARE_DATA type fspr_variable = value; */ #define APR_DECLARE_DATA @@ -345,7 +345,7 @@ typedef size_t apr_socklen_t; /* Local machine definition for console and log output. */ #define APR_EOL_STR "\r\n" -typedef int apr_wait_t; +typedef int fspr_wait_t; #define APR_PATH_MAX PATH_MAX diff --git a/libs/apr/include/apr.hw b/libs/apr/include/fspr.hw similarity index 92% rename from libs/apr/include/apr.hw rename to libs/apr/include/fspr.hw index aa47ec0374e..e061ae49bf9 100644 --- a/libs/apr/include/apr.hw +++ b/libs/apr/include/fspr.hw @@ -106,7 +106,7 @@ #endif /* !_WINDOWS_ */ /** - * @defgroup apr_platform Platform Definitions + * @defgroup fspr_platform Platform Definitions * @ingroup APR * @{ */ @@ -275,7 +275,7 @@ extern "C" { #endif /** - * @addtogroup apr_platform + * @addtogroup fspr_platform * @ingroup APR * @{ */ @@ -322,29 +322,29 @@ extern "C" { /* Typedefs that APR needs. */ -typedef unsigned char apr_byte_t; +typedef unsigned char fspr_byte_t; -typedef short apr_int16_t; -typedef unsigned short apr_uint16_t; +typedef short fspr_int16_t; +typedef unsigned short fspr_uint16_t; -typedef int apr_int32_t; -typedef unsigned int apr_uint32_t; +typedef int fspr_int32_t; +typedef unsigned int fspr_uint32_t; -typedef __int64 apr_int64_t; -typedef unsigned __int64 apr_uint64_t; +typedef __int64 fspr_int64_t; +typedef unsigned __int64 fspr_uint64_t; -typedef size_t apr_size_t; +typedef size_t fspr_size_t; #if APR_HAVE_STDDEF_H -typedef ptrdiff_t apr_ssize_t; +typedef ptrdiff_t fspr_ssize_t; #else -typedef int apr_ssize_t; +typedef int fspr_ssize_t; #endif #if APR_HAS_LARGE_FILES -typedef __int64 apr_off_t; +typedef __int64 fspr_off_t; #else -typedef int apr_off_t; +typedef int fspr_off_t; #endif -typedef int apr_socklen_t; +typedef int fspr_socklen_t; /* Are we big endian? */ /* XXX: Fatal assumption on Alpha platforms */ @@ -356,7 +356,7 @@ typedef int apr_socklen_t; #define APR_SIZEOF_VOIDP 4 #endif -/* XXX These simply don't belong here, perhaps in apr_portable.h +/* XXX These simply don't belong here, perhaps in fspr_portable.h * based on some APR_HAVE_PID/GID/UID? */ typedef int pid_t; @@ -378,8 +378,8 @@ typedef int gid_t; #ifndef WS2TCPIP_INLINE #define IN6_IS_ADDR_V4MAPPED(a) \ - ( (*(const apr_uint64_t *)(const void *)(&(a)->s6_addr[0]) == 0) \ - && (*(const apr_uint32_t *)(const void *)(&(a)->s6_addr[8]) == ntohl(0x0000ffff))) + ( (*(const fspr_uint64_t *)(const void *)(&(a)->s6_addr[0]) == 0) \ + && (*(const fspr_uint32_t *)(const void *)(&(a)->s6_addr[8]) == ntohl(0x0000ffff))) #endif #endif /* APR_HAS_IPV6 */ @@ -391,7 +391,7 @@ typedef int gid_t; * so that they follow the platform's calling convention. * @example */ -/** void* APR_THREAD_FUNC my_thread_entry_fn(apr_thread_t *thd, void *data); +/** void* APR_THREAD_FUNC my_thread_entry_fn(fspr_thread_t *thd, void *data); */ #define APR_THREAD_FUNC __stdcall @@ -406,7 +406,7 @@ typedef int gid_t; * @remark Both the declaration and implementations must use the same macro. * @example */ -/** APR_DECLARE(rettype) apr_func(args) +/** APR_DECLARE(rettype) fspr_func(args) * @see APR_DECLARE_NONSTD @see APR_DECLARE_DATA * @remark Note that when APR compiles the library itself, it passes the * symbol -DAPR_DECLARE_EXPORT to the compiler on some platforms (e.g. Win32) @@ -427,7 +427,7 @@ typedef int gid_t; * @remark Both the declaration and implementations must use the same macro. * @example */ -/** APR_DECLARE_NONSTD(rettype) apr_func(args, ...); +/** APR_DECLARE_NONSTD(rettype) fspr_func(args, ...); */ #define APR_DECLARE_NONSTD(type) type @@ -439,8 +439,8 @@ typedef int gid_t; * but both must include the macro. * @example */ -/** extern APR_DECLARE_DATA type apr_variable;\n - * APR_DECLARE_DATA type apr_variable = value; +/** extern APR_DECLARE_DATA type fspr_variable;\n + * APR_DECLARE_DATA type fspr_variable = value; */ #define APR_DECLARE_DATA @@ -484,12 +484,12 @@ typedef int gid_t; /* No difference between PROC and GLOBAL mutex */ #define APR_PROC_MUTEX_IS_GLOBAL 1 -typedef int apr_wait_t; +typedef int fspr_wait_t; /* struct iovec is needed to emulate Unix writev */ struct iovec { char* iov_base; - apr_size_t iov_len; + fspr_size_t iov_len; }; /* Nasty Win32 .h ommissions we really need */ diff --git a/libs/apr/include/apr_allocator.h b/libs/apr/include/fspr_allocator.h similarity index 65% rename from libs/apr/include/apr_allocator.h rename to libs/apr/include/fspr_allocator.h index 5aaeb1b2faf..17de2cb2855 100644 --- a/libs/apr/include/apr_allocator.h +++ b/libs/apr/include/fspr_allocator.h @@ -18,50 +18,50 @@ #define APR_ALLOCATOR_H /** - * @file apr_allocator.h + * @file fspr_allocator.h * @brief APR Internal Memory Allocation */ -#include "apr.h" -#include "apr_errno.h" +#include "fspr.h" +#include "fspr_errno.h" #define APR_WANT_MEMFUNC /**< For no good reason? */ -#include "apr_want.h" +#include "fspr_want.h" #ifdef __cplusplus extern "C" { #endif /** - * @defgroup apr_allocator Internal Memory Allocation + * @defgroup fspr_allocator Internal Memory Allocation * @ingroup APR * @{ */ /** the allocator structure */ -typedef struct apr_allocator_t apr_allocator_t; +typedef struct fspr_allocator_t fspr_allocator_t; /** the structure which holds information about the allocation */ -typedef struct apr_memnode_t apr_memnode_t; +typedef struct fspr_memnode_t fspr_memnode_t; /** basic memory node structure * @note The next, ref and first_avail fields are available for use by the - * caller of apr_allocator_alloc(), the remaining fields are read-only. + * caller of fspr_allocator_alloc(), the remaining fields are read-only. * The next field has to be used with caution and sensibly set when the - * memnode is passed back to apr_allocator_free(). See apr_allocator_free() + * memnode is passed back to fspr_allocator_free(). See fspr_allocator_free() * for details. * The ref and first_avail fields will be properly restored by - * apr_allocator_free(). + * fspr_allocator_free(). */ -struct apr_memnode_t { - apr_memnode_t *next; /**< next memnode */ - apr_memnode_t **ref; /**< reference to self */ - apr_uint32_t index; /**< size */ - apr_uint32_t free_index; /**< how much free */ +struct fspr_memnode_t { + fspr_memnode_t *next; /**< next memnode */ + fspr_memnode_t **ref; /**< reference to self */ + fspr_uint32_t index; /**< size */ + fspr_uint32_t free_index; /**< how much free */ char *first_avail; /**< pointer to first free memory */ char *endp; /**< pointer to end of free memory */ }; /** The base size of a memory node - aligned. */ -#define APR_MEMNODE_T_SIZE APR_ALIGN_DEFAULT(sizeof(apr_memnode_t)) +#define APR_MEMNODE_T_SIZE APR_ALIGN_DEFAULT(sizeof(fspr_memnode_t)) /** Symbolic constants */ #define APR_ALLOCATOR_MAX_FREE_UNLIMITED 0 @@ -71,7 +71,7 @@ struct apr_memnode_t { * @param allocator The allocator we have just created. * */ -APR_DECLARE(apr_status_t) apr_allocator_create(apr_allocator_t **allocator); +APR_DECLARE(fspr_status_t) fspr_allocator_create(fspr_allocator_t **allocator); /** * Destroy an allocator @@ -79,7 +79,7 @@ APR_DECLARE(apr_status_t) apr_allocator_create(apr_allocator_t **allocator); * @remark Any memnodes not given back to the allocator prior to destroying * will _not_ be free()d. */ -APR_DECLARE(void) apr_allocator_destroy(apr_allocator_t *allocator); +APR_DECLARE(void) fspr_allocator_destroy(fspr_allocator_t *allocator); /** * Allocate a block of mem from the allocator @@ -87,8 +87,8 @@ APR_DECLARE(void) apr_allocator_destroy(apr_allocator_t *allocator); * @param size The size of the mem to allocate (excluding the * memnode structure) */ -APR_DECLARE(apr_memnode_t *) apr_allocator_alloc(apr_allocator_t *allocator, - apr_size_t size); +APR_DECLARE(fspr_memnode_t *) fspr_allocator_alloc(fspr_allocator_t *allocator, + fspr_size_t size); /** * Free a list of blocks of mem, giving them back to the allocator. @@ -97,10 +97,10 @@ APR_DECLARE(apr_memnode_t *) apr_allocator_alloc(apr_allocator_t *allocator, * @param allocator The allocator to give the mem back to * @param memnode The memory node to return */ -APR_DECLARE(void) apr_allocator_free(apr_allocator_t *allocator, - apr_memnode_t *memnode); +APR_DECLARE(void) fspr_allocator_free(fspr_allocator_t *allocator, + fspr_memnode_t *memnode); -#include "apr_pools.h" +#include "fspr_pools.h" /** * Set the owner of the allocator @@ -113,14 +113,14 @@ APR_DECLARE(void) apr_allocator_free(apr_allocator_t *allocator, * you can make a pool an owner, but if the pool doesn't use the allocator * the allocator will never be destroyed. */ -APR_DECLARE(void) apr_allocator_owner_set(apr_allocator_t *allocator, - apr_pool_t *pool); +APR_DECLARE(void) fspr_allocator_owner_set(fspr_allocator_t *allocator, + fspr_pool_t *pool); /** * Get the current owner of the allocator * @param allocator The allocator to get the owner from */ -APR_DECLARE(apr_pool_t *) apr_allocator_owner_get(apr_allocator_t *allocator); +APR_DECLARE(fspr_pool_t *) fspr_allocator_owner_get(fspr_allocator_t *allocator); /** * Set the current threshold at which the allocator should start @@ -128,10 +128,10 @@ APR_DECLARE(apr_pool_t *) apr_allocator_owner_get(apr_allocator_t *allocator); * @param allocator The allocator the set the threshold on * @param size The threshold. 0 == unlimited. */ -APR_DECLARE(void) apr_allocator_max_free_set(apr_allocator_t *allocator, - apr_size_t size); +APR_DECLARE(void) fspr_allocator_max_free_set(fspr_allocator_t *allocator, + fspr_size_t size); -#include "apr_thread_mutex.h" +#include "fspr_thread_mutex.h" #if APR_HAS_THREADS /** @@ -139,15 +139,15 @@ APR_DECLARE(void) apr_allocator_max_free_set(apr_allocator_t *allocator, * @param allocator The allocator to set the mutex for * @param mutex The mutex */ -APR_DECLARE(void) apr_allocator_mutex_set(apr_allocator_t *allocator, - apr_thread_mutex_t *mutex); +APR_DECLARE(void) fspr_allocator_mutex_set(fspr_allocator_t *allocator, + fspr_thread_mutex_t *mutex); /** * Get the mutex currently set for the allocator * @param allocator The allocator */ -APR_DECLARE(apr_thread_mutex_t *) apr_allocator_mutex_get( - apr_allocator_t *allocator); +APR_DECLARE(fspr_thread_mutex_t *) fspr_allocator_mutex_get( + fspr_allocator_t *allocator); #endif /* APR_HAS_THREADS */ diff --git a/libs/apr/include/apr_atomic.h b/libs/apr/include/fspr_atomic.h similarity index 64% rename from libs/apr/include/apr_atomic.h rename to libs/apr/include/fspr_atomic.h index b169ff3dc1b..c06069ccc94 100644 --- a/libs/apr/include/apr_atomic.h +++ b/libs/apr/include/fspr_atomic.h @@ -18,19 +18,19 @@ #define APR_ATOMIC_H /** - * @file apr_atomic.h + * @file fspr_atomic.h * @brief APR Atomic Operations */ -#include "apr.h" -#include "apr_pools.h" +#include "fspr.h" +#include "fspr_pools.h" #ifdef __cplusplus extern "C" { #endif /** - * @defgroup apr_atomic Atomic Operations + * @defgroup fspr_atomic Atomic Operations * @ingroup APR * @{ */ @@ -41,7 +41,7 @@ extern "C" { * @param p pool * @return APR_SUCCESS on successful completion */ -APR_DECLARE(apr_status_t) apr_atomic_init(apr_pool_t *p); +APR_DECLARE(fspr_status_t) fspr_atomic_init(fspr_pool_t *p); /* * Atomic operations on 32-bit values @@ -50,65 +50,65 @@ APR_DECLARE(apr_status_t) apr_atomic_init(apr_pool_t *p); */ /** - * atomically read an apr_uint32_t from memory + * atomically read an fspr_uint32_t from memory * @param mem the pointer */ -APR_DECLARE(apr_uint32_t) apr_atomic_read32(volatile apr_uint32_t *mem); +APR_DECLARE(fspr_uint32_t) fspr_atomic_read32(volatile fspr_uint32_t *mem); /** - * atomically set an apr_uint32_t in memory + * atomically set an fspr_uint32_t in memory * @param mem pointer to the object * @param val value that the object will assume */ -APR_DECLARE(void) apr_atomic_set32(volatile apr_uint32_t *mem, apr_uint32_t val); +APR_DECLARE(void) fspr_atomic_set32(volatile fspr_uint32_t *mem, fspr_uint32_t val); /** - * atomically add 'val' to an apr_uint32_t + * atomically add 'val' to an fspr_uint32_t * @param mem pointer to the object * @param val amount to add * @return old value pointed to by mem */ -APR_DECLARE(apr_uint32_t) apr_atomic_add32(volatile apr_uint32_t *mem, apr_uint32_t val); +APR_DECLARE(fspr_uint32_t) fspr_atomic_add32(volatile fspr_uint32_t *mem, fspr_uint32_t val); /** - * atomically subtract 'val' from an apr_uint32_t + * atomically subtract 'val' from an fspr_uint32_t * @param mem pointer to the object * @param val amount to subtract */ -APR_DECLARE(void) apr_atomic_sub32(volatile apr_uint32_t *mem, apr_uint32_t val); +APR_DECLARE(void) fspr_atomic_sub32(volatile fspr_uint32_t *mem, fspr_uint32_t val); /** - * atomically increment an apr_uint32_t by 1 + * atomically increment an fspr_uint32_t by 1 * @param mem pointer to the object * @return old value pointed to by mem */ -APR_DECLARE(apr_uint32_t) apr_atomic_inc32(volatile apr_uint32_t *mem); +APR_DECLARE(fspr_uint32_t) fspr_atomic_inc32(volatile fspr_uint32_t *mem); /** - * atomically decrement an apr_uint32_t by 1 + * atomically decrement an fspr_uint32_t by 1 * @param mem pointer to the atomic value * @return zero if the value becomes zero on decrement, otherwise non-zero */ -APR_DECLARE(int) apr_atomic_dec32(volatile apr_uint32_t *mem); +APR_DECLARE(int) fspr_atomic_dec32(volatile fspr_uint32_t *mem); /** - * compare an apr_uint32_t's value with 'cmp'. + * compare an fspr_uint32_t's value with 'cmp'. * If they are the same swap the value with 'with' * @param mem pointer to the value * @param with what to swap it with * @param cmp the value to compare it to * @return the old value of *mem */ -APR_DECLARE(apr_uint32_t) apr_atomic_cas32(volatile apr_uint32_t *mem, apr_uint32_t with, - apr_uint32_t cmp); +APR_DECLARE(fspr_uint32_t) fspr_atomic_cas32(volatile fspr_uint32_t *mem, fspr_uint32_t with, + fspr_uint32_t cmp); /** - * exchange an apr_uint32_t's value with 'val'. + * exchange an fspr_uint32_t's value with 'val'. * @param mem pointer to the value * @param val what to swap it with * @return the old value of *mem */ -APR_DECLARE(apr_uint32_t) apr_atomic_xchg32(volatile apr_uint32_t *mem, apr_uint32_t val); +APR_DECLARE(fspr_uint32_t) fspr_atomic_xchg32(volatile fspr_uint32_t *mem, fspr_uint32_t val); /** * compare the pointer's value with cmp. @@ -118,7 +118,7 @@ APR_DECLARE(apr_uint32_t) apr_atomic_xchg32(volatile apr_uint32_t *mem, apr_uint * @param cmp the value to compare it to * @return the old value of the pointer */ -APR_DECLARE(void*) apr_atomic_casptr(volatile void **mem, void *with, const void *cmp); +APR_DECLARE(void*) fspr_atomic_casptr(volatile void **mem, void *with, const void *cmp); /** @} */ diff --git a/libs/apr/include/apr_dso.h b/libs/apr/include/fspr_dso.h similarity index 74% rename from libs/apr/include/apr_dso.h rename to libs/apr/include/fspr_dso.h index ac701cfdf55..b43ad240404 100644 --- a/libs/apr/include/apr_dso.h +++ b/libs/apr/include/fspr_dso.h @@ -18,20 +18,20 @@ #define APR_DSO_DOT_H /** - * @file apr_dso.h + * @file fspr_dso.h * @brief APR Dynamic Object Handling Routines */ -#include "apr.h" -#include "apr_pools.h" -#include "apr_errno.h" +#include "fspr.h" +#include "fspr_pools.h" +#include "fspr_errno.h" #ifdef __cplusplus extern "C" { #endif /** - * @defgroup apr_dso Dynamic Object Handling + * @defgroup fspr_dso Dynamic Object Handling * @ingroup APR * @{ */ @@ -41,12 +41,12 @@ extern "C" { /** * Structure for referencing dynamic objects */ -typedef struct apr_dso_handle_t apr_dso_handle_t; +typedef struct fspr_dso_handle_t fspr_dso_handle_t; /** * Structure for referencing symbols from dynamic objects */ -typedef void * apr_dso_handle_sym_t; +typedef void * fspr_dso_handle_sym_t; /** * Load a DSO library. @@ -56,14 +56,14 @@ typedef void * apr_dso_handle_sym_t; * @bug We aught to provide an alternative to RTLD_GLOBAL, which * is the only supported method of loading DSOs today. */ -APR_DECLARE(apr_status_t) apr_dso_load(apr_dso_handle_t **res_handle, - const char *path, apr_pool_t *ctx); +APR_DECLARE(fspr_status_t) fspr_dso_load(fspr_dso_handle_t **res_handle, + const char *path, fspr_pool_t *ctx); /** * Close a DSO library. * @param handle handle to close. */ -APR_DECLARE(apr_status_t) apr_dso_unload(apr_dso_handle_t *handle); +APR_DECLARE(fspr_status_t) fspr_dso_unload(fspr_dso_handle_t *handle); /** * Load a symbol from a DSO handle. @@ -71,8 +71,8 @@ APR_DECLARE(apr_status_t) apr_dso_unload(apr_dso_handle_t *handle); * @param handle handle to load the symbol from. * @param symname Name of the symbol to load. */ -APR_DECLARE(apr_status_t) apr_dso_sym(apr_dso_handle_sym_t *ressym, - apr_dso_handle_t *handle, +APR_DECLARE(fspr_status_t) fspr_dso_sym(fspr_dso_handle_sym_t *ressym, + fspr_dso_handle_t *handle, const char *symname); /** @@ -81,7 +81,7 @@ APR_DECLARE(apr_status_t) apr_dso_sym(apr_dso_handle_sym_t *ressym, * @param buf Location to store the dso error * @param bufsize The size of the provided buffer */ -APR_DECLARE(const char *) apr_dso_error(apr_dso_handle_t *dso, char *buf, apr_size_t bufsize); +APR_DECLARE(const char *) fspr_dso_error(fspr_dso_handle_t *dso, char *buf, fspr_size_t bufsize); #endif /* APR_HAS_DSO */ diff --git a/libs/apr/include/apr_env.h b/libs/apr/include/fspr_env.h similarity index 77% rename from libs/apr/include/apr_env.h rename to libs/apr/include/fspr_env.h index 05419c37c16..d6f7ad67507 100644 --- a/libs/apr/include/apr_env.h +++ b/libs/apr/include/fspr_env.h @@ -17,18 +17,18 @@ #ifndef APR_ENV_H #define APR_ENV_H /** - * @file apr_env.h + * @file fspr_env.h * @brief APR Environment functions */ -#include "apr_errno.h" -#include "apr_pools.h" +#include "fspr_errno.h" +#include "fspr_pools.h" #ifdef __cplusplus extern "C" { #endif /* __cplusplus */ /** - * @defgroup apr_env Functions for manupulating the environment + * @defgroup fspr_env Functions for manupulating the environment * @ingroup APR * @{ */ @@ -39,8 +39,8 @@ extern "C" { * @param envvar the name of the environment variable * @param pool where to allocate @a value and any temporary storage from */ -APR_DECLARE(apr_status_t) apr_env_get(char **value, const char *envvar, - apr_pool_t *pool); +APR_DECLARE(fspr_status_t) fspr_env_get(char **value, const char *envvar, + fspr_pool_t *pool); /** * Set the value of an environment variable @@ -48,15 +48,15 @@ APR_DECLARE(apr_status_t) apr_env_get(char **value, const char *envvar, * @param value the value to set * @param pool where to allocate temporary storage from */ -APR_DECLARE(apr_status_t) apr_env_set(const char *envvar, const char *value, - apr_pool_t *pool); +APR_DECLARE(fspr_status_t) fspr_env_set(const char *envvar, const char *value, + fspr_pool_t *pool); /** * Delete a variable from the environment * @param envvar the name of the environment variable * @param pool where to allocate temporary storage from */ -APR_DECLARE(apr_status_t) apr_env_delete(const char *envvar, apr_pool_t *pool); +APR_DECLARE(fspr_status_t) fspr_env_delete(const char *envvar, fspr_pool_t *pool); /** @} */ diff --git a/libs/apr/include/apr_errno.h b/libs/apr/include/fspr_errno.h similarity index 95% rename from libs/apr/include/apr_errno.h rename to libs/apr/include/fspr_errno.h index c74e44df95f..13441ae3246 100644 --- a/libs/apr/include/apr_errno.h +++ b/libs/apr/include/fspr_errno.h @@ -18,11 +18,11 @@ #define APR_ERRNO_H /** - * @file apr_errno.h + * @file fspr_errno.h * @brief APR Error Codes */ -#include "apr.h" +#include "fspr.h" #if APR_HAVE_ERRNO_H #include @@ -33,7 +33,7 @@ extern "C" { #endif /* __cplusplus */ /** - * @defgroup apr_errno Error Codes + * @defgroup fspr_errno Error Codes * @ingroup APR * @{ */ @@ -41,7 +41,7 @@ extern "C" { /** * Type for specifying an error or status code. */ -typedef int apr_status_t; +typedef int fspr_status_t; /** * Return a human readable string describing the specified error. @@ -49,14 +49,14 @@ typedef int apr_status_t; * @param buf A buffer to hold the error string. * @param bufsize Size of the buffer to hold the string. */ -APR_DECLARE(char *) apr_strerror(apr_status_t statcode, char *buf, - apr_size_t bufsize); +APR_DECLARE(char *) fspr_strerror(fspr_status_t statcode, char *buf, + fspr_size_t bufsize); #if defined(DOXYGEN) /** * @def APR_FROM_OS_ERROR(os_err_type syserr) - * Fold a platform specific error into an apr_status_t code. - * @return apr_status_t + * Fold a platform specific error into an fspr_status_t code. + * @return fspr_status_t * @param e The platform os error code. * @warning macro implementation; the syserr argument may be evaluated * multiple times. @@ -64,46 +64,46 @@ APR_DECLARE(char *) apr_strerror(apr_status_t statcode, char *buf, #define APR_FROM_OS_ERROR(e) (e == 0 ? APR_SUCCESS : e + APR_OS_START_SYSERR) /** - * @def APR_TO_OS_ERROR(apr_status_t statcode) + * @def APR_TO_OS_ERROR(fspr_status_t statcode) * @return os_err_type - * Fold an apr_status_t code back to the native platform defined error. - * @param e The apr_status_t folded platform os error code. + * Fold an fspr_status_t code back to the native platform defined error. + * @param e The fspr_status_t folded platform os error code. * @warning macro implementation; the statcode argument may be evaluated - * multiple times. If the statcode was not created by apr_get_os_error + * multiple times. If the statcode was not created by fspr_get_os_error * or APR_FROM_OS_ERROR, the results are undefined. */ #define APR_TO_OS_ERROR(e) (e == 0 ? APR_SUCCESS : e - APR_OS_START_SYSERR) -/** @def apr_get_os_error() - * @return apr_status_t the last platform error, folded into apr_status_t, on most platforms +/** @def fspr_get_os_error() + * @return fspr_status_t the last platform error, folded into fspr_status_t, on most platforms * @remark This retrieves errno, or calls a GetLastError() style function, and * folds it with APR_FROM_OS_ERROR. Some platforms (such as OS2) have no * such mechanism, so this call may be unsupported. Do NOT use this * call for socket errors from socket, send, recv etc! */ -/** @def apr_set_os_error(e) - * Reset the last platform error, unfolded from an apr_status_t, on some platforms +/** @def fspr_set_os_error(e) + * Reset the last platform error, unfolded from an fspr_status_t, on some platforms * @param e The OS error folded in a prior call to APR_FROM_OS_ERROR() * @warning This is a macro implementation; the statcode argument may be evaluated - * multiple times. If the statcode was not created by apr_get_os_error + * multiple times. If the statcode was not created by fspr_get_os_error * or APR_FROM_OS_ERROR, the results are undefined. This macro sets * errno, or calls a SetLastError() style function, unfolding statcode * with APR_TO_OS_ERROR. Some platforms (such as OS2) have no such * mechanism, so this call may be unsupported. */ -/** @def apr_get_netos_error() - * Return the last socket error, folded into apr_status_t, on all platforms +/** @def fspr_get_netos_error() + * Return the last socket error, folded into fspr_status_t, on all platforms * @remark This retrieves errno or calls a GetLastSocketError() style function, * and folds it with APR_FROM_OS_ERROR. */ -/** @def apr_set_netos_error(e) - * Reset the last socket error, unfolded from an apr_status_t +/** @def fspr_set_netos_error(e) + * Reset the last socket error, unfolded from an fspr_status_t * @param e The socket error folded in a prior call to APR_FROM_OS_ERROR() * @warning This is a macro implementation; the statcode argument may be evaluated - * multiple times. If the statcode was not created by apr_get_os_error + * multiple times. If the statcode was not created by fspr_get_os_error * or APR_FROM_OS_ERROR, the results are undefined. This macro sets * errno, or calls a WSASetLastError() style function, unfolding * socketcode with APR_TO_OS_ERROR. @@ -146,12 +146,12 @@ APR_DECLARE(char *) apr_strerror(apr_status_t statcode, char *buf, + (APR_OS_ERRSPACE_SIZE * 10)) /** * APR_OS_START_EAIERR folds EAI_ error codes from getaddrinfo() into - * apr_status_t values. + * fspr_status_t values. */ #define APR_OS_START_EAIERR (APR_OS_START_CANONERR + APR_OS_ERRSPACE_SIZE) /** * APR_OS_START_SYSERR folds platform-specific system error values into - * apr_status_t values. + * fspr_status_t values. */ #define APR_OS_START_SYSERR (APR_OS_START_EAIERR + APR_OS_ERRSPACE_SIZE) @@ -176,7 +176,7 @@ APR_DECLARE(char *) apr_strerror(apr_status_t statcode, char *buf, * APR_ENOTHDKEY APR was not given a thread key structure * APR_ENOSHMAVAIL There is no more shared memory available * APR_EDSOOPEN APR was unable to open the dso object. For more - * information call apr_dso_error(). + * information call fspr_dso_error(). * APR_EGENERAL General failure (specific information not available) * APR_EBADIP The specified IP address is invalid * APR_EBADMASK The specified netmask is invalid @@ -327,7 +327,7 @@ APR_DECLARE(char *) apr_strerror(apr_status_t statcode, char *buf, /* empty slot: +18 */ /** * APR was unable to open the dso object. - * For more information call apr_dso_error(). + * For more information call fspr_dso_error(). */ #if defined(WIN32) #define APR_STATUS_IS_EDSOOPEN(s) ((s) == APR_EDSOOPEN \ @@ -348,7 +348,7 @@ APR_DECLARE(char *) apr_strerror(apr_status_t statcode, char *buf, /** The given path contained wildcards. */ #define APR_STATUS_IS_EPATHWILD(s) ((s) == APR_EPATHWILD) /** Could not find the requested symbol. - * For more information call apr_dso_error(). + * For more information call fspr_dso_error(). */ #if defined(WIN32) #define APR_STATUS_IS_ESYMNOTFOUND(s) ((s) == APR_ESYMNOTFOUND \ @@ -775,14 +775,14 @@ APR_DECLARE(char *) apr_strerror(apr_status_t statcode, char *buf, * The API calls always return a result codes which * should be filtered through APR_FROM_OS_ERROR(). * - * #define apr_get_os_error() (APR_FROM_OS_ERROR(GetLastError())) - * #define apr_set_os_error(e) (SetLastError(APR_TO_OS_ERROR(e))) + * #define fspr_get_os_error() (APR_FROM_OS_ERROR(GetLastError())) + * #define fspr_set_os_error(e) (SetLastError(APR_TO_OS_ERROR(e))) */ /* A special case, only socket calls require this; */ -#define apr_get_netos_error() (APR_FROM_OS_ERROR(errno)) -#define apr_set_netos_error(e) (errno = APR_TO_OS_ERROR(e)) +#define fspr_get_netos_error() (APR_FROM_OS_ERROR(errno)) +#define fspr_set_netos_error(e) (errno = APR_TO_OS_ERROR(e)) /* And this needs to be greped away for good: */ @@ -938,13 +938,13 @@ APR_DECLARE(char *) apr_strerror(apr_status_t statcode, char *buf, #define APR_FROM_OS_ERROR(e) (e == 0 ? APR_SUCCESS : e + APR_OS_START_SYSERR) #define APR_TO_OS_ERROR(e) (e == 0 ? APR_SUCCESS : e - APR_OS_START_SYSERR) -#define apr_get_os_error() (APR_FROM_OS_ERROR(GetLastError())) -#define apr_set_os_error(e) (SetLastError(APR_TO_OS_ERROR(e))) +#define fspr_get_os_error() (APR_FROM_OS_ERROR(GetLastError())) +#define fspr_set_os_error(e) (SetLastError(APR_TO_OS_ERROR(e))) /* A special case, only socket calls require this: */ -#define apr_get_netos_error() (APR_FROM_OS_ERROR(WSAGetLastError())) -#define apr_set_netos_error(e) (WSASetLastError(APR_TO_OS_ERROR(e))) +#define fspr_get_netos_error() (APR_FROM_OS_ERROR(WSAGetLastError())) +#define fspr_set_netos_error(e) (WSASetLastError(APR_TO_OS_ERROR(e))) /* APR CANONICAL ERROR TESTS */ #define APR_STATUS_IS_EACCES(s) ((s) == APR_EACCES \ @@ -1051,12 +1051,12 @@ APR_DECLARE(char *) apr_strerror(apr_status_t statcode, char *buf, #define APR_FROM_OS_ERROR(e) (e == 0 ? APR_SUCCESS : e + APR_OS_START_SYSERR) #define APR_TO_OS_ERROR(e) (e == 0 ? APR_SUCCESS : e - APR_OS_START_SYSERR) -#define apr_get_os_error() (errno) -#define apr_set_os_error(e) (errno = (e)) +#define fspr_get_os_error() (errno) +#define fspr_set_os_error(e) (errno = (e)) /* A special case, only socket calls require this: */ -#define apr_get_netos_error() (APR_FROM_OS_ERROR(WSAGetLastError())) -#define apr_set_netos_error(e) (WSASetLastError(APR_TO_OS_ERROR(e))) +#define fspr_get_netos_error() (APR_FROM_OS_ERROR(WSAGetLastError())) +#define fspr_set_netos_error(e) (WSASetLastError(APR_TO_OS_ERROR(e))) /* APR CANONICAL ERROR TESTS */ #define APR_STATUS_IS_EACCES(s) ((s) == APR_EACCES) @@ -1113,13 +1113,13 @@ APR_DECLARE(char *) apr_strerror(apr_status_t statcode, char *buf, #define APR_FROM_OS_ERROR(e) (e) #define APR_TO_OS_ERROR(e) (e) -#define apr_get_os_error() (errno) -#define apr_set_os_error(e) (errno = (e)) +#define fspr_get_os_error() (errno) +#define fspr_set_os_error(e) (errno = (e)) /* A special case, only socket calls require this: */ -#define apr_get_netos_error() (errno) -#define apr_set_netos_error(e) (errno = (e)) +#define fspr_get_netos_error() (errno) +#define fspr_set_netos_error(e) (errno = (e)) /** * @addtogroup APR_STATUS_IS diff --git a/libs/apr/include/apr_file_info.h b/libs/apr/include/fspr_file_info.h similarity index 78% rename from libs/apr/include/apr_file_info.h rename to libs/apr/include/fspr_file_info.h index 94146f0ae3d..44a75ee3489 100644 --- a/libs/apr/include/apr_file_info.h +++ b/libs/apr/include/fspr_file_info.h @@ -18,16 +18,16 @@ #define APR_FILE_INFO_H /** - * @file apr_file_info.h + * @file fspr_file_info.h * @brief APR File Information */ -#include "apr.h" -#include "apr_user.h" -#include "apr_pools.h" -#include "apr_tables.h" -#include "apr_time.h" -#include "apr_errno.h" +#include "fspr.h" +#include "fspr_user.h" +#include "fspr_pools.h" +#include "fspr_tables.h" +#include "fspr_time.h" +#include "fspr_errno.h" #if APR_HAVE_SYS_UIO_H #include @@ -38,7 +38,7 @@ extern "C" { #endif /* __cplusplus */ /** - * @defgroup apr_file_info File Information + * @defgroup fspr_file_info File Information * @ingroup APR * @{ */ @@ -48,8 +48,8 @@ extern "C" { * so the APR_NOFILE value must be distinct from APR_UNKFILE. */ -/** apr_filetype_e values for the filetype member of the - * apr_file_info_t structure +/** fspr_filetype_e values for the filetype member of the + * fspr_file_info_t structure * @warning: Not all of the filetypes below can be determined. * For example, a given platform might not correctly report * a socket descriptor as APR_SOCK if that type isn't @@ -69,10 +69,10 @@ typedef enum { APR_LNK, /**< a symbolic link */ APR_SOCK, /**< a [unix domain] socket */ APR_UNKFILE = 127 /**< a file of some other unknown type */ -} apr_filetype_e; +} fspr_filetype_e; /** - * @defgroup apr_file_permissions File Permissions flags + * @defgroup fspr_file_permissions File Permissions flags * @{ */ @@ -93,7 +93,7 @@ typedef enum { #define APR_FPROT_OS_DEFAULT 0x0FFF /**< use OS's default permissions */ -/* additional permission flags for apr_file_copy and apr_file_append */ +/* additional permission flags for fspr_file_copy and fspr_file_append */ #define APR_FPROT_FILE_SOURCE_PERMS 0x1000 /**< Copy source file's permissions */ /* backcompat */ @@ -118,35 +118,35 @@ typedef enum { /** * Structure for referencing directories. */ -typedef struct apr_dir_t apr_dir_t; +typedef struct fspr_dir_t fspr_dir_t; /** * Structure for determining file permissions. */ -typedef apr_int32_t apr_fileperms_t; +typedef fspr_int32_t fspr_fileperms_t; #if (defined WIN32) || (defined NETWARE) /** * Structure for determining the inode of the file. */ -typedef apr_uint64_t apr_ino_t; +typedef fspr_uint64_t fspr_ino_t; /** * Structure for determining the device the file is on. */ -typedef apr_uint32_t apr_dev_t; +typedef fspr_uint32_t fspr_dev_t; #else /** The inode of the file. */ -typedef ino_t apr_ino_t; +typedef ino_t fspr_ino_t; /** * Structure for determining the device the file is on. */ -typedef dev_t apr_dev_t; +typedef dev_t fspr_dev_t; #endif /** - * @defgroup apr_file_stat Stat Functions + * @defgroup fspr_file_stat Stat Functions * @{ */ /** file info structure */ -typedef struct apr_finfo_t apr_finfo_t; +typedef struct fspr_finfo_t fspr_finfo_t; #define APR_FINFO_LINK 0x00000001 /**< Stat the link not the file itself if it is a link */ #define APR_FINFO_MTIME 0x00000010 /**< Modification Time */ @@ -170,52 +170,52 @@ typedef struct apr_finfo_t apr_finfo_t; #define APR_FINFO_IDENT 0x00003000 /**< dev and inode */ #define APR_FINFO_OWNER 0x00030000 /**< user and group */ #define APR_FINFO_PROT 0x00700000 /**< all protections */ -#define APR_FINFO_NORM 0x0073b170 /**< an atomic unix apr_stat() */ -#define APR_FINFO_DIRENT 0x02000000 /**< an atomic unix apr_dir_read() */ +#define APR_FINFO_NORM 0x0073b170 /**< an atomic unix fspr_stat() */ +#define APR_FINFO_DIRENT 0x02000000 /**< an atomic unix fspr_dir_read() */ /** * The file information structure. This is analogous to the POSIX * stat structure. */ -struct apr_finfo_t { +struct fspr_finfo_t { /** Allocates memory and closes lingering handles in the specified pool */ - apr_pool_t *pool; - /** The bitmask describing valid fields of this apr_finfo_t structure + fspr_pool_t *pool; + /** The bitmask describing valid fields of this fspr_finfo_t structure * including all available 'wanted' fields and potentially more */ - apr_int32_t valid; + fspr_int32_t valid; /** The access permissions of the file. Mimics Unix access rights. */ - apr_fileperms_t protection; + fspr_fileperms_t protection; /** The type of file. One of APR_REG, APR_DIR, APR_CHR, APR_BLK, APR_PIPE, * APR_LNK or APR_SOCK. If the type is undetermined, the value is APR_NOFILE. * If the type cannot be determined, the value is APR_UNKFILE. */ - apr_filetype_e filetype; + fspr_filetype_e filetype; /** The user id that owns the file */ - apr_uid_t user; + fspr_uid_t user; /** The group id that owns the file */ - apr_gid_t group; + fspr_gid_t group; /** The inode of the file. */ - apr_ino_t inode; + fspr_ino_t inode; /** The id of the device the file is on. */ - apr_dev_t device; + fspr_dev_t device; /** The number of hard links to the file. */ - apr_int32_t nlink; + fspr_int32_t nlink; /** The size of the file */ - apr_off_t size; + fspr_off_t size; /** The storage size consumed by the file */ - apr_off_t csize; + fspr_off_t csize; /** The time the file was last accessed */ - apr_time_t atime; + fspr_time_t atime; /** The time the file was last modified */ - apr_time_t mtime; + fspr_time_t mtime; /** The time the file was created, or the inode was last changed */ - apr_time_t ctime; + fspr_time_t ctime; /** The pathname of the file (possibly unrooted) */ const char *fname; /** The file's name (no path) in filesystem case */ const char *name; - /** The file's handle, if accessed (can be submitted to apr_duphandle) */ - struct apr_file_t *filehand; + /** The file's handle, if accessed (can be submitted to fspr_duphandle) */ + struct fspr_file_t *filehand; }; /** @@ -224,7 +224,7 @@ struct apr_finfo_t { * @param finfo Where to store the information about the file, which is * never touched if the call fails. * @param fname The name of the file to stat. - * @param wanted The desired apr_finfo_t fields, as a bit flag of APR_FINFO_ + * @param wanted The desired fspr_finfo_t fields, as a bit flag of APR_FINFO_ values * @param pool the pool to use to allocate the new file. * @@ -232,12 +232,12 @@ struct apr_finfo_t { * not be filled in, and you need to check the @c finfo->valid bitmask * to verify that what you're looking for is there. */ -APR_DECLARE(apr_status_t) apr_stat(apr_finfo_t *finfo, const char *fname, - apr_int32_t wanted, apr_pool_t *pool); +APR_DECLARE(fspr_status_t) fspr_stat(fspr_finfo_t *finfo, const char *fname, + fspr_int32_t wanted, fspr_pool_t *pool); /** @} */ /** - * @defgroup apr_dir Directory Manipulation Functions + * @defgroup fspr_dir Directory Manipulation Functions * @{ */ @@ -247,58 +247,58 @@ APR_DECLARE(apr_status_t) apr_stat(apr_finfo_t *finfo, const char *fname, * @param dirname The full path to the directory (use / on all systems) * @param pool The pool to use. */ -APR_DECLARE(apr_status_t) apr_dir_open(apr_dir_t **new_dir, +APR_DECLARE(fspr_status_t) fspr_dir_open(fspr_dir_t **new_dir, const char *dirname, - apr_pool_t *pool); + fspr_pool_t *pool); /** * close the specified directory. * @param thedir the directory descriptor to close. */ -APR_DECLARE(apr_status_t) apr_dir_close(apr_dir_t *thedir); +APR_DECLARE(fspr_status_t) fspr_dir_close(fspr_dir_t *thedir); /** * Read the next entry from the specified directory. - * @param finfo the file info structure and filled in by apr_dir_read - * @param wanted The desired apr_finfo_t fields, as a bit flag of APR_FINFO_ + * @param finfo the file info structure and filled in by fspr_dir_read + * @param wanted The desired fspr_finfo_t fields, as a bit flag of APR_FINFO_ values - * @param thedir the directory descriptor returned from apr_dir_open + * @param thedir the directory descriptor returned from fspr_dir_open * @remark No ordering is guaranteed for the entries read. * * @note If @c APR_INCOMPLETE is returned all the fields in @a finfo may * not be filled in, and you need to check the @c finfo->valid bitmask * to verify that what you're looking for is there. */ -APR_DECLARE(apr_status_t) apr_dir_read(apr_finfo_t *finfo, apr_int32_t wanted, - apr_dir_t *thedir); +APR_DECLARE(fspr_status_t) fspr_dir_read(fspr_finfo_t *finfo, fspr_int32_t wanted, + fspr_dir_t *thedir); /** * Rewind the directory to the first entry. * @param thedir the directory descriptor to rewind. */ -APR_DECLARE(apr_status_t) apr_dir_rewind(apr_dir_t *thedir); +APR_DECLARE(fspr_status_t) fspr_dir_rewind(fspr_dir_t *thedir); /** @} */ /** - * @defgroup apr_filepath Filepath Manipulation Functions + * @defgroup fspr_filepath Filepath Manipulation Functions * @{ */ -/** Cause apr_filepath_merge to fail if addpath is above rootpath */ +/** Cause fspr_filepath_merge to fail if addpath is above rootpath */ #define APR_FILEPATH_NOTABOVEROOT 0x01 /** internal: Only meaningful with APR_FILEPATH_NOTABOVEROOT */ #define APR_FILEPATH_SECUREROOTTEST 0x02 -/** Cause apr_filepath_merge to fail if addpath is above rootpath, +/** Cause fspr_filepath_merge to fail if addpath is above rootpath, * even given a rootpath /foo/bar and an addpath ../bar/bash */ #define APR_FILEPATH_SECUREROOT 0x03 -/** Fail apr_filepath_merge if the merged path is relative */ +/** Fail fspr_filepath_merge if the merged path is relative */ #define APR_FILEPATH_NOTRELATIVE 0x04 -/** Fail apr_filepath_merge if the merged path is absolute */ +/** Fail fspr_filepath_merge if the merged path is absolute */ #define APR_FILEPATH_NOTABSOLUTE 0x08 /** Return the file system's native path format (e.g. path delimiters @@ -334,10 +334,10 @@ APR_DECLARE(apr_status_t) apr_dir_rewind(apr_dir_t *thedir); * the drive letter), or APR_EBADPATH if the root is simply invalid. * APR_SUCCESS is returned if filepath is an absolute path. */ -APR_DECLARE(apr_status_t) apr_filepath_root(const char **rootpath, +APR_DECLARE(fspr_status_t) fspr_filepath_root(const char **rootpath, const char **filepath, - apr_int32_t flags, - apr_pool_t *p); + fspr_int32_t flags, + fspr_pool_t *p); /** * Merge additional file path onto the previously processed rootpath @@ -352,11 +352,11 @@ APR_DECLARE(apr_status_t) apr_filepath_root(const char **rootpath, * result code will be APR_EPATHWILD, and all further segments will not * reflect the true filenames including the wildcard and following segments. */ -APR_DECLARE(apr_status_t) apr_filepath_merge(char **newpath, +APR_DECLARE(fspr_status_t) fspr_filepath_merge(char **newpath, const char *rootpath, const char *addpath, - apr_int32_t flags, - apr_pool_t *p); + fspr_int32_t flags, + fspr_pool_t *p); /** * Split a search path into separate components @@ -367,9 +367,9 @@ APR_DECLARE(apr_status_t) apr_filepath_merge(char **newpath, * @remark the path separator in @a liststr is system specific; * e.g., ':' on Unix, ';' on Windows, etc. */ -APR_DECLARE(apr_status_t) apr_filepath_list_split(apr_array_header_t **pathelts, +APR_DECLARE(fspr_status_t) fspr_filepath_list_split(fspr_array_header_t **pathelts, const char *liststr, - apr_pool_t *p); + fspr_pool_t *p); /** * Merge a list of search path components into a single search path @@ -380,9 +380,9 @@ APR_DECLARE(apr_status_t) apr_filepath_list_split(apr_array_header_t **pathelts, * @remark the path separator in @a liststr is system specific; * e.g., ':' on Unix, ';' on Windows, etc. */ -APR_DECLARE(apr_status_t) apr_filepath_list_merge(char **liststr, - apr_array_header_t *pathelts, - apr_pool_t *p); +APR_DECLARE(fspr_status_t) fspr_filepath_list_merge(char **liststr, + fspr_array_header_t *pathelts, + fspr_pool_t *p); /** * Return the default file path (for relative file names) @@ -391,15 +391,15 @@ APR_DECLARE(apr_status_t) apr_filepath_list_merge(char **liststr, * default file path in os-native format. * @param p the pool to allocate the default path string from */ -APR_DECLARE(apr_status_t) apr_filepath_get(char **path, apr_int32_t flags, - apr_pool_t *p); +APR_DECLARE(fspr_status_t) fspr_filepath_get(char **path, fspr_int32_t flags, + fspr_pool_t *p); /** * Set the default file path (for relative file names) * @param path the default path returned * @param p the pool to allocate any working storage */ -APR_DECLARE(apr_status_t) apr_filepath_set(const char *path, apr_pool_t *p); +APR_DECLARE(fspr_status_t) fspr_filepath_set(const char *path, fspr_pool_t *p); /** The FilePath character encoding is unknown */ #define APR_FILEPATH_ENCODING_UNKNOWN 0 @@ -414,10 +414,10 @@ APR_DECLARE(apr_status_t) apr_filepath_set(const char *path, apr_pool_t *p); * Determine the encoding used internally by the FilePath functions * @param style points to a variable which receives the encoding style flag * @param p the pool to allocate any working storage - * @remark Use @c apr_os_locale_encoding and/or @c apr_os_default_encoding + * @remark Use @c fspr_os_locale_encoding and/or @c fspr_os_default_encoding * to get the name of the path encoding if it's not UTF-8. */ -APR_DECLARE(apr_status_t) apr_filepath_encoding(int *style, apr_pool_t *p); +APR_DECLARE(fspr_status_t) fspr_filepath_encoding(int *style, fspr_pool_t *p); /** @} */ /** @} */ diff --git a/libs/apr/include/apr_file_io.h b/libs/apr/include/fspr_file_io.h similarity index 72% rename from libs/apr/include/apr_file_io.h rename to libs/apr/include/fspr_file_io.h index b8146eea65f..d19901e2b8e 100644 --- a/libs/apr/include/apr_file_io.h +++ b/libs/apr/include/fspr_file_io.h @@ -18,33 +18,33 @@ #define APR_FILE_IO_H /** - * @file apr_file_io.h + * @file fspr_file_io.h * @brief APR File I/O Handling */ -#include "apr.h" -#include "apr_pools.h" -#include "apr_time.h" -#include "apr_errno.h" -#include "apr_file_info.h" -#include "apr_inherit.h" +#include "fspr.h" +#include "fspr_pools.h" +#include "fspr_time.h" +#include "fspr_errno.h" +#include "fspr_file_info.h" +#include "fspr_inherit.h" #define APR_WANT_STDIO /**< for SEEK_* */ -#define APR_WANT_IOVEC /**< for apr_file_writev */ -#include "apr_want.h" +#define APR_WANT_IOVEC /**< for fspr_file_writev */ +#include "fspr_want.h" #ifdef __cplusplus extern "C" { #endif /* __cplusplus */ /** - * @defgroup apr_file_io File I/O Handling Functions + * @defgroup fspr_file_io File I/O Handling Functions * @ingroup APR * @{ */ /** - * @defgroup apr_file_open_flags File Open Flags/Routines + * @defgroup fspr_file_open_flags File Open Flags/Routines * @{ */ @@ -73,7 +73,7 @@ extern "C" { when the file is opened */ #define APR_FOPEN_SENDFILE_ENABLED 0x01000 /**< Advisory flag that this file should support - apr_socket_sendfile operation */ + fspr_socket_sendfile operation */ #define APR_FOPEN_LARGEFILE 0x04000 /**< Platform dependent flag to enable large file support; WARNING see below. */ @@ -94,12 +94,12 @@ extern "C" { #define APR_LARGEFILE APR_FOPEN_LARGEFILE /**< @deprecated @see APR_FOPEN_LARGEFILE */ /** @warning The APR_LARGEFILE flag only has effect on some platforms - * where sizeof(apr_off_t) == 4. Where implemented, it allows opening + * where sizeof(fspr_off_t) == 4. Where implemented, it allows opening * and writing to a file which exceeds the size which can be - * represented by apr_off_t (2 gigabytes). When a file's size does - * exceed 2Gb, apr_file_info_get() will fail with an error on the - * descriptor, likewise apr_stat()/apr_lstat() will fail on the - * filename. apr_dir_read() will fail with APR_INCOMPLETE on a + * represented by fspr_off_t (2 gigabytes). When a file's size does + * exceed 2Gb, fspr_file_info_get() will fail with an error on the + * descriptor, likewise fspr_stat()/fspr_lstat() will fail on the + * filename. fspr_dir_read() will fail with APR_INCOMPLETE on a * directory entry for a large file depending on the particular * APR_FINFO_* flags. Generally, it is not recommended to use this * flag. */ @@ -107,11 +107,11 @@ extern "C" { /** @} */ /** - * @defgroup apr_file_seek_flags File Seek Flags + * @defgroup fspr_file_seek_flags File Seek Flags * @{ */ -/* flags for apr_file_seek */ +/* flags for fspr_file_seek */ /** Set the file position */ #define APR_SET SEEK_SET /** Current */ @@ -121,18 +121,18 @@ extern "C" { /** @} */ /** - * @defgroup apr_file_attrs_set_flags File Attribute Flags + * @defgroup fspr_file_attrs_set_flags File Attribute Flags * @{ */ -/* flags for apr_file_attrs_set */ +/* flags for fspr_file_attrs_set */ #define APR_FILE_ATTR_READONLY 0x01 /**< File is read-only */ #define APR_FILE_ATTR_EXECUTABLE 0x02 /**< File is executable */ #define APR_FILE_ATTR_HIDDEN 0x04 /**< File is hidden */ /** @} */ /** - * @defgroup apr_file_writev{_full} max iovec size + * @defgroup fspr_file_writev{_full} max iovec size * @{ */ #if defined(DOXYGEN) @@ -148,19 +148,19 @@ extern "C" { /** @} */ /** File attributes */ -typedef apr_uint32_t apr_fileattrs_t; +typedef fspr_uint32_t fspr_fileattrs_t; -/** Type to pass as whence argument to apr_file_seek. */ -typedef int apr_seek_where_t; +/** Type to pass as whence argument to fspr_file_seek. */ +typedef int fspr_seek_where_t; /** * Structure for referencing files. */ -typedef struct apr_file_t apr_file_t; +typedef struct fspr_file_t fspr_file_t; /* File lock types/flags */ /** - * @defgroup apr_file_lock_types File Lock Types + * @defgroup fspr_file_lock_types File Lock Types * @{ */ @@ -203,29 +203,29 @@ typedef struct apr_file_t apr_file_t; * writes across process/machines * APR_FILE_NOCLEANUP Do not register a cleanup with the pool * passed in on the pool argument (see below). - * The apr_os_file_t handle in apr_file_t will not + * The fspr_os_file_t handle in fspr_file_t will not * be closed when the pool is destroyed. * APR_SENDFILE_ENABLED Open with appropriate platform semantics * for sendfile operations. Advisory only, - * apr_socket_sendfile does not check this flag. + * fspr_socket_sendfile does not check this flag. * * @param perm Access permissions for file. * @param pool The pool to use. * @remark If perm is APR_OS_DEFAULT and the file is being created, * appropriate default permissions will be used. * @remark By default, the returned file descriptor will not be - * inherited by child processes created by apr_proc_create(). This - * can be changed using apr_file_inherit_set(). + * inherited by child processes created by fspr_proc_create(). This + * can be changed using fspr_file_inherit_set(). */ -APR_DECLARE(apr_status_t) apr_file_open(apr_file_t **newf, const char *fname, - apr_int32_t flag, apr_fileperms_t perm, - apr_pool_t *pool); +APR_DECLARE(fspr_status_t) fspr_file_open(fspr_file_t **newf, const char *fname, + fspr_int32_t flag, fspr_fileperms_t perm, + fspr_pool_t *pool); /** * Close the specified file. * @param file The file descriptor to close. */ -APR_DECLARE(apr_status_t) apr_file_close(apr_file_t *file); +APR_DECLARE(fspr_status_t) fspr_file_close(fspr_file_t *file); /** * Delete the specified file. @@ -234,7 +234,7 @@ APR_DECLARE(apr_status_t) apr_file_close(apr_file_t *file); * @remark If the file is open, it won't be removed until all * instances are closed. */ -APR_DECLARE(apr_status_t) apr_file_remove(const char *path, apr_pool_t *pool); +APR_DECLARE(fspr_status_t) fspr_file_remove(const char *path, fspr_pool_t *pool); /** * Rename the specified file. @@ -245,9 +245,9 @@ APR_DECLARE(apr_status_t) apr_file_remove(const char *path, apr_pool_t *pool); * overwritten. Moving files or directories across devices may not be * possible. */ -APR_DECLARE(apr_status_t) apr_file_rename(const char *from_path, +APR_DECLARE(fspr_status_t) fspr_file_rename(const char *from_path, const char *to_path, - apr_pool_t *pool); + fspr_pool_t *pool); /** * Copy the specified file to another file. @@ -261,10 +261,10 @@ APR_DECLARE(apr_status_t) apr_file_rename(const char *from_path, * @remark The new file does not need to exist, it will be created if required. * @warning If the new file already exists, its contents will be overwritten. */ -APR_DECLARE(apr_status_t) apr_file_copy(const char *from_path, +APR_DECLARE(fspr_status_t) fspr_file_copy(const char *from_path, const char *to_path, - apr_fileperms_t perms, - apr_pool_t *pool); + fspr_fileperms_t perms, + fspr_pool_t *pool); /** * Append the specified file to another file. @@ -277,55 +277,55 @@ APR_DECLARE(apr_status_t) apr_file_copy(const char *from_path, * @param pool The pool to use. * @remark The new file does not need to exist, it will be created if required. */ -APR_DECLARE(apr_status_t) apr_file_append(const char *from_path, +APR_DECLARE(fspr_status_t) fspr_file_append(const char *from_path, const char *to_path, - apr_fileperms_t perms, - apr_pool_t *pool); + fspr_fileperms_t perms, + fspr_pool_t *pool); /** * Are we at the end of the file * @param fptr The apr file we are testing. * @remark Returns APR_EOF if we are at the end of file, APR_SUCCESS otherwise. */ -APR_DECLARE(apr_status_t) apr_file_eof(apr_file_t *fptr); +APR_DECLARE(fspr_status_t) fspr_file_eof(fspr_file_t *fptr); /** * Open standard error as an apr file pointer. * @param thefile The apr file to use as stderr. * @param pool The pool to allocate the file out of. * - * @remark The only reason that the apr_file_open_std* functions exist + * @remark The only reason that the fspr_file_open_std* functions exist * is that you may not always have a stderr/out/in on Windows. This * is generally a problem with newer versions of Windows and services. * * @remark The other problem is that the C library functions generally work - * differently on Windows and Unix. So, by using apr_file_open_std* + * differently on Windows and Unix. So, by using fspr_file_open_std* * functions, you can get a handle to an APR struct that works with * the APR functions which are supposed to work identically on all * platforms. */ -APR_DECLARE(apr_status_t) apr_file_open_stderr(apr_file_t **thefile, - apr_pool_t *pool); +APR_DECLARE(fspr_status_t) fspr_file_open_stderr(fspr_file_t **thefile, + fspr_pool_t *pool); /** * open standard output as an apr file pointer. * @param thefile The apr file to use as stdout. * @param pool The pool to allocate the file out of. * - * @remark See remarks for apr_file_open_stdout. + * @remark See remarks for fspr_file_open_stdout. */ -APR_DECLARE(apr_status_t) apr_file_open_stdout(apr_file_t **thefile, - apr_pool_t *pool); +APR_DECLARE(fspr_status_t) fspr_file_open_stdout(fspr_file_t **thefile, + fspr_pool_t *pool); /** * open standard input as an apr file pointer. * @param thefile The apr file to use as stdin. * @param pool The pool to allocate the file out of. * - * @remark See remarks for apr_file_open_stdout. + * @remark See remarks for fspr_file_open_stdout. */ -APR_DECLARE(apr_status_t) apr_file_open_stdin(apr_file_t **thefile, - apr_pool_t *pool); +APR_DECLARE(fspr_status_t) fspr_file_open_stdin(fspr_file_t **thefile, + fspr_pool_t *pool); /** * Read data from the specified file. @@ -334,7 +334,7 @@ APR_DECLARE(apr_status_t) apr_file_open_stdin(apr_file_t **thefile, * @param nbytes On entry, the number of bytes to read; on exit, the number * of bytes read. * - * @remark apr_file_read will read up to the specified number of + * @remark fspr_file_read will read up to the specified number of * bytes, but never more. If there isn't enough data to fill that * number of bytes, all of the available data is read. The third * argument is modified to reflect the number of bytes read. If a @@ -344,8 +344,8 @@ APR_DECLARE(apr_status_t) apr_file_open_stdin(apr_file_t **thefile, * @remark It is not possible for both bytes to be read and an APR_EOF * or other error to be returned. APR_EINTR is never returned. */ -APR_DECLARE(apr_status_t) apr_file_read(apr_file_t *thefile, void *buf, - apr_size_t *nbytes); +APR_DECLARE(fspr_status_t) fspr_file_read(fspr_file_t *thefile, void *buf, + fspr_size_t *nbytes); /** * Write data to the specified file. @@ -354,7 +354,7 @@ APR_DECLARE(apr_status_t) apr_file_read(apr_file_t *thefile, void *buf, * @param nbytes On entry, the number of bytes to write; on exit, the number * of bytes written. * - * @remark apr_file_write will write up to the specified number of + * @remark fspr_file_write will write up to the specified number of * bytes, but never more. If the OS cannot write that many bytes, it * will write as many as it can. The third argument is modified to * reflect the * number of bytes written. @@ -362,8 +362,8 @@ APR_DECLARE(apr_status_t) apr_file_read(apr_file_t *thefile, void *buf, * @remark It is possible for both bytes to be written and an error to * be returned. APR_EINTR is never returned. */ -APR_DECLARE(apr_status_t) apr_file_write(apr_file_t *thefile, const void *buf, - apr_size_t *nbytes); +APR_DECLARE(fspr_status_t) fspr_file_write(fspr_file_t *thefile, const void *buf, + fspr_size_t *nbytes); /** * Write data from iovec array to the specified file. @@ -377,12 +377,12 @@ APR_DECLARE(apr_status_t) apr_file_write(apr_file_t *thefile, const void *buf, * @remark It is possible for both bytes to be written and an error to * be returned. APR_EINTR is never returned. * - * @remark apr_file_writev is available even if the underlying + * @remark fspr_file_writev is available even if the underlying * operating system doesn't provide writev(). */ -APR_DECLARE(apr_status_t) apr_file_writev(apr_file_t *thefile, +APR_DECLARE(fspr_status_t) fspr_file_writev(fspr_file_t *thefile, const struct iovec *vec, - apr_size_t nvec, apr_size_t *nbytes); + fspr_size_t nvec, fspr_size_t *nbytes); /** * Read data from the specified file, ensuring that the buffer is filled @@ -392,7 +392,7 @@ APR_DECLARE(apr_status_t) apr_file_writev(apr_file_t *thefile, * @param nbytes The number of bytes to read. * @param bytes_read If non-NULL, this will contain the number of bytes read. * - * @remark apr_file_read will read up to the specified number of + * @remark fspr_file_read will read up to the specified number of * bytes, but never more. If there isn't enough data to fill that * number of bytes, then the process/thread will block until it is * available or EOF is reached. If a char was put back into the @@ -404,9 +404,9 @@ APR_DECLARE(apr_status_t) apr_file_writev(apr_file_t *thefile, * * @remark APR_EINTR is never returned. */ -APR_DECLARE(apr_status_t) apr_file_read_full(apr_file_t *thefile, void *buf, - apr_size_t nbytes, - apr_size_t *bytes_read); +APR_DECLARE(fspr_status_t) fspr_file_read_full(fspr_file_t *thefile, void *buf, + fspr_size_t nbytes, + fspr_size_t *bytes_read); /** * Write data to the specified file, ensuring that all of the data is @@ -416,7 +416,7 @@ APR_DECLARE(apr_status_t) apr_file_read_full(apr_file_t *thefile, void *buf, * @param nbytes The number of bytes to write. * @param bytes_written If non-NULL, set to the number of bytes written. * - * @remark apr_file_write will write up to the specified number of + * @remark fspr_file_write will write up to the specified number of * bytes, but never more. If the OS cannot write that many bytes, the * process/thread will block until they can be written. Exceptional * error such as "out of space" or "pipe closed" will terminate with @@ -428,10 +428,10 @@ APR_DECLARE(apr_status_t) apr_file_read_full(apr_file_t *thefile, void *buf, * * @remark APR_EINTR is never returned. */ -APR_DECLARE(apr_status_t) apr_file_write_full(apr_file_t *thefile, +APR_DECLARE(fspr_status_t) fspr_file_write_full(fspr_file_t *thefile, const void *buf, - apr_size_t nbytes, - apr_size_t *bytes_written); + fspr_size_t nbytes, + fspr_size_t *bytes_written); /** @@ -444,33 +444,33 @@ APR_DECLARE(apr_status_t) apr_file_write_full(apr_file_t *thefile, * will fail with APR_EINVAL. * @param nbytes The number of bytes written. * - * @remark apr_file_writev_full is available even if the underlying + * @remark fspr_file_writev_full is available even if the underlying * operating system doesn't provide writev(). */ -APR_DECLARE(apr_status_t) apr_file_writev_full(apr_file_t *thefile, +APR_DECLARE(fspr_status_t) fspr_file_writev_full(fspr_file_t *thefile, const struct iovec *vec, - apr_size_t nvec, - apr_size_t *nbytes); + fspr_size_t nvec, + fspr_size_t *nbytes); /** * Write a character into the specified file. * @param ch The character to write. * @param thefile The file descriptor to write to */ -APR_DECLARE(apr_status_t) apr_file_putc(char ch, apr_file_t *thefile); +APR_DECLARE(fspr_status_t) fspr_file_putc(char ch, fspr_file_t *thefile); /** * Read a character from the specified file. * @param ch The character to read into * @param thefile The file descriptor to read from */ -APR_DECLARE(apr_status_t) apr_file_getc(char *ch, apr_file_t *thefile); +APR_DECLARE(fspr_status_t) fspr_file_getc(char *ch, fspr_file_t *thefile); /** * Put a character back onto a specified stream. * @param ch The character to write. * @param thefile The file descriptor to write to */ -APR_DECLARE(apr_status_t) apr_file_ungetc(char ch, apr_file_t *thefile); +APR_DECLARE(fspr_status_t) fspr_file_ungetc(char ch, fspr_file_t *thefile); /** * Read a string from the specified file. @@ -479,32 +479,32 @@ APR_DECLARE(apr_status_t) apr_file_ungetc(char ch, apr_file_t *thefile); * @param thefile The file descriptor to read from * @remark The buffer will be NUL-terminated if any characters are stored. */ -APR_DECLARE(apr_status_t) apr_file_gets(char *str, int len, - apr_file_t *thefile); +APR_DECLARE(fspr_status_t) fspr_file_gets(char *str, int len, + fspr_file_t *thefile); /** * Write the string into the specified file. * @param str The string to write. * @param thefile The file descriptor to write to */ -APR_DECLARE(apr_status_t) apr_file_puts(const char *str, apr_file_t *thefile); +APR_DECLARE(fspr_status_t) fspr_file_puts(const char *str, fspr_file_t *thefile); /** * Flush the file's buffer. * @param thefile The file descriptor to flush */ -APR_DECLARE(apr_status_t) apr_file_flush(apr_file_t *thefile); +APR_DECLARE(fspr_status_t) fspr_file_flush(fspr_file_t *thefile); /** * Duplicate the specified file descriptor. * @param new_file The structure to duplicate into. * @param old_file The file to duplicate. * @param p The pool to use for the new file. - * @remark *new_file must point to a valid apr_file_t, or point to NULL. + * @remark *new_file must point to a valid fspr_file_t, or point to NULL. */ -APR_DECLARE(apr_status_t) apr_file_dup(apr_file_t **new_file, - apr_file_t *old_file, - apr_pool_t *p); +APR_DECLARE(fspr_status_t) fspr_file_dup(fspr_file_t **new_file, + fspr_file_t *old_file, + fspr_pool_t *p); /** * Duplicate the specified file descriptor and close the original @@ -512,26 +512,26 @@ APR_DECLARE(apr_status_t) apr_file_dup(apr_file_t **new_file, * @param old_file The file to duplicate * @param p The pool to use for the new file * - * @remark new_file MUST point at a valid apr_file_t. It cannot be NULL. + * @remark new_file MUST point at a valid fspr_file_t. It cannot be NULL. */ -APR_DECLARE(apr_status_t) apr_file_dup2(apr_file_t *new_file, - apr_file_t *old_file, - apr_pool_t *p); +APR_DECLARE(fspr_status_t) fspr_file_dup2(fspr_file_t *new_file, + fspr_file_t *old_file, + fspr_pool_t *p); /** * Move the specified file descriptor to a new pool - * @param new_file Pointer in which to return the new apr_file_t + * @param new_file Pointer in which to return the new fspr_file_t * @param old_file The file to move * @param p The pool to which the descriptor is to be moved - * @remark Unlike apr_file_dup2(), this function doesn't do an + * @remark Unlike fspr_file_dup2(), this function doesn't do an * OS dup() operation on the underlying descriptor; it just - * moves the descriptor's apr_file_t wrapper to a new pool. + * moves the descriptor's fspr_file_t wrapper to a new pool. * @remark The new pool need not be an ancestor of old_file's pool. * @remark After calling this function, old_file may not be used */ -APR_DECLARE(apr_status_t) apr_file_setaside(apr_file_t **new_file, - apr_file_t *old_file, - apr_pool_t *p); +APR_DECLARE(fspr_status_t) fspr_file_setaside(fspr_file_t **new_file, + fspr_file_t *old_file, + fspr_pool_t *p); /** * Move the read/write file offset to a specified byte within a file. @@ -546,9 +546,9 @@ APR_DECLARE(apr_status_t) apr_file_setaside(apr_file_t **new_file, * @remark The third argument is modified to be the offset the pointer was actually moved to. */ -APR_DECLARE(apr_status_t) apr_file_seek(apr_file_t *thefile, - apr_seek_where_t where, - apr_off_t *offset); +APR_DECLARE(fspr_status_t) fspr_file_seek(fspr_file_t *thefile, + fspr_seek_where_t where, + fspr_off_t *offset); /** * Create an anonymous pipe. @@ -556,12 +556,12 @@ APR_DECLARE(apr_status_t) apr_file_seek(apr_file_t *thefile, * @param out The file descriptor to use as output from the pipe. * @param pool The pool to operate on. * @remark By default, the returned file descriptors will be inherited - * by child processes created using apr_proc_create(). This can be - * changed using apr_file_inherit_unset(). + * by child processes created using fspr_proc_create(). This can be + * changed using fspr_file_inherit_unset(). */ -APR_DECLARE(apr_status_t) apr_file_pipe_create(apr_file_t **in, - apr_file_t **out, - apr_pool_t *pool); +APR_DECLARE(fspr_status_t) fspr_file_pipe_create(fspr_file_t **in, + fspr_file_t **out, + fspr_pool_t *pool); /** * Create a named pipe. @@ -569,17 +569,17 @@ APR_DECLARE(apr_status_t) apr_file_pipe_create(apr_file_t **in, * @param perm The permissions for the newly created pipe. * @param pool The pool to operate on. */ -APR_DECLARE(apr_status_t) apr_file_namedpipe_create(const char *filename, - apr_fileperms_t perm, - apr_pool_t *pool); +APR_DECLARE(fspr_status_t) fspr_file_namedpipe_create(const char *filename, + fspr_fileperms_t perm, + fspr_pool_t *pool); /** * Get the timeout value for a pipe or manipulate the blocking state. * @param thepipe The pipe we are getting a timeout for. * @param timeout The current timeout value in microseconds. */ -APR_DECLARE(apr_status_t) apr_file_pipe_timeout_get(apr_file_t *thepipe, - apr_interval_time_t *timeout); +APR_DECLARE(fspr_status_t) fspr_file_pipe_timeout_get(fspr_file_t *thepipe, + fspr_interval_time_t *timeout); /** * Set the timeout value for a pipe or manipulate the blocking state. @@ -587,8 +587,8 @@ APR_DECLARE(apr_status_t) apr_file_pipe_timeout_get(apr_file_t *thepipe, * @param timeout The timeout value in microseconds. Values < 0 mean wait * forever, 0 means do not wait at all. */ -APR_DECLARE(apr_status_t) apr_file_pipe_timeout_set(apr_file_t *thepipe, - apr_interval_time_t timeout); +APR_DECLARE(fspr_status_t) fspr_file_pipe_timeout_set(fspr_file_t *thepipe, + fspr_interval_time_t timeout); /** file (un)locking functions. */ @@ -601,13 +601,13 @@ APR_DECLARE(apr_status_t) apr_file_pipe_timeout_set(apr_file_t *thepipe, * @param thefile The file to lock. * @param type The type of lock to establish on the file. */ -APR_DECLARE(apr_status_t) apr_file_lock(apr_file_t *thefile, int type); +APR_DECLARE(fspr_status_t) fspr_file_lock(fspr_file_t *thefile, int type); /** * Remove any outstanding locks on the file. * @param thefile The file to unlock. */ -APR_DECLARE(apr_status_t) apr_file_unlock(apr_file_t *thefile); +APR_DECLARE(fspr_status_t) fspr_file_unlock(fspr_file_t *thefile); /**accessor and general file_io functions. */ @@ -616,8 +616,8 @@ APR_DECLARE(apr_status_t) apr_file_unlock(apr_file_t *thefile); * @param new_path The path of the file. * @param thefile The currently open file. */ -APR_DECLARE(apr_status_t) apr_file_name_get(const char **new_path, - apr_file_t *thefile); +APR_DECLARE(fspr_status_t) fspr_file_name_get(const char **new_path, + fspr_file_t *thefile); /** * Return the data associated with the current file. @@ -625,8 +625,8 @@ APR_DECLARE(apr_status_t) apr_file_name_get(const char **new_path, * @param key The key to use for retreiving data associated with this file. * @param file The currently open file. */ -APR_DECLARE(apr_status_t) apr_file_data_get(void **data, const char *key, - apr_file_t *file); +APR_DECLARE(fspr_status_t) fspr_file_data_get(void **data, const char *key, + fspr_file_t *file); /** * Set the data associated with the current file. @@ -635,9 +635,9 @@ APR_DECLARE(apr_status_t) apr_file_data_get(void **data, const char *key, * @param key The key to use for assocaiteing data with the file. * @param cleanup The cleanup routine to use when the file is destroyed. */ -APR_DECLARE(apr_status_t) apr_file_data_set(apr_file_t *file, void *data, +APR_DECLARE(fspr_status_t) fspr_file_data_set(fspr_file_t *file, void *data, const char *key, - apr_status_t (*cleanup)(void *)); + fspr_status_t (*cleanup)(void *)); /** * Write a string to a file using a printf format. @@ -646,7 +646,7 @@ APR_DECLARE(apr_status_t) apr_file_data_set(apr_file_t *file, void *data, * @param ... The values to substitute in the format string * @return The number of bytes written */ -APR_DECLARE_NONSTD(int) apr_file_printf(apr_file_t *fptr, +APR_DECLARE_NONSTD(int) fspr_file_printf(fspr_file_t *fptr, const char *format, ...) __attribute__((format(printf,2,3))); @@ -662,8 +662,8 @@ APR_DECLARE_NONSTD(int) apr_file_printf(apr_file_t *fptr, * @warning Platforms which do not implement this feature will return * APR_ENOTIMPL. */ -APR_DECLARE(apr_status_t) apr_file_perms_set(const char *fname, - apr_fileperms_t perms); +APR_DECLARE(fspr_status_t) fspr_file_perms_set(const char *fname, + fspr_fileperms_t perms); /** * Set attributes of the specified file. @@ -683,10 +683,10 @@ APR_DECLARE(apr_status_t) apr_file_perms_set(const char *fname, * @warning Platforms which do not implement this feature will return * APR_ENOTIMPL. */ -APR_DECLARE(apr_status_t) apr_file_attrs_set(const char *fname, - apr_fileattrs_t attributes, - apr_fileattrs_t attr_mask, - apr_pool_t *pool); +APR_DECLARE(fspr_status_t) fspr_file_attrs_set(const char *fname, + fspr_fileattrs_t attributes, + fspr_fileattrs_t attr_mask, + fspr_pool_t *pool); /** * Set the mtime of the specified file. @@ -696,9 +696,9 @@ APR_DECLARE(apr_status_t) apr_file_attrs_set(const char *fname, * @warning Platforms which do not implement this feature will return * APR_ENOTIMPL. */ -APR_DECLARE(apr_status_t) apr_file_mtime_set(const char *fname, - apr_time_t mtime, - apr_pool_t *pool); +APR_DECLARE(fspr_status_t) fspr_file_mtime_set(const char *fname, + fspr_time_t mtime, + fspr_pool_t *pool); /** * Create a new directory on the file system. @@ -706,8 +706,8 @@ APR_DECLARE(apr_status_t) apr_file_mtime_set(const char *fname, * @param perm Permissions for the new direcoty. * @param pool the pool to use. */ -APR_DECLARE(apr_status_t) apr_dir_make(const char *path, apr_fileperms_t perm, - apr_pool_t *pool); +APR_DECLARE(fspr_status_t) fspr_dir_make(const char *path, fspr_fileperms_t perm, + fspr_pool_t *pool); /** Creates a new directory on the file system, but behaves like * 'mkdir -p'. Creates intermediate directories as required. No error @@ -716,26 +716,26 @@ APR_DECLARE(apr_status_t) apr_dir_make(const char *path, apr_fileperms_t perm, * @param perm Permissions for the new direcoty. * @param pool the pool to use. */ -APR_DECLARE(apr_status_t) apr_dir_make_recursive(const char *path, - apr_fileperms_t perm, - apr_pool_t *pool); +APR_DECLARE(fspr_status_t) fspr_dir_make_recursive(const char *path, + fspr_fileperms_t perm, + fspr_pool_t *pool); /** * Remove directory from the file system. * @param path the path for the directory to be removed. (use / on all systems) * @param pool the pool to use. */ -APR_DECLARE(apr_status_t) apr_dir_remove(const char *path, apr_pool_t *pool); +APR_DECLARE(fspr_status_t) fspr_dir_remove(const char *path, fspr_pool_t *pool); /** * get the specified file's stats. * @param finfo Where to store the information about the file. - * @param wanted The desired apr_finfo_t fields, as a bit flag of APR_FINFO_ values + * @param wanted The desired fspr_finfo_t fields, as a bit flag of APR_FINFO_ values * @param thefile The file to get information about. */ -APR_DECLARE(apr_status_t) apr_file_info_get(apr_finfo_t *finfo, - apr_int32_t wanted, - apr_file_t *thefile); +APR_DECLARE(fspr_status_t) fspr_file_info_get(fspr_finfo_t *finfo, + fspr_int32_t wanted, + fspr_file_t *thefile); /** @@ -743,14 +743,14 @@ APR_DECLARE(apr_status_t) apr_file_info_get(apr_finfo_t *finfo, * @param fp The file to truncate * @param offset The offset to truncate to. */ -APR_DECLARE(apr_status_t) apr_file_trunc(apr_file_t *fp, apr_off_t offset); +APR_DECLARE(fspr_status_t) fspr_file_trunc(fspr_file_t *fp, fspr_off_t offset); /** - * Retrieve the flags that were passed into apr_file_open() + * Retrieve the flags that were passed into fspr_file_open() * when the file was opened. - * @return apr_int32_t the flags + * @return fspr_int32_t the flags */ -APR_DECLARE(apr_int32_t) apr_file_flags_get(apr_file_t *f); +APR_DECLARE(fspr_int32_t) fspr_file_flags_get(fspr_file_t *f); /** * Get the pool used by the file. @@ -784,8 +784,8 @@ APR_DECLARE_INHERIT_UNSET(file); * array. * */ -APR_DECLARE(apr_status_t) apr_file_mktemp(apr_file_t **fp, char *templ, - apr_int32_t flags, apr_pool_t *p); +APR_DECLARE(fspr_status_t) fspr_file_mktemp(fspr_file_t **fp, char *templ, + fspr_int32_t flags, fspr_pool_t *p); /** @@ -800,8 +800,8 @@ APR_DECLARE(apr_status_t) apr_file_mktemp(apr_file_t **fp, char *templ, * is successful. * */ -APR_DECLARE(apr_status_t) apr_temp_dir_get(const char **temp_dir, - apr_pool_t *p); +APR_DECLARE(fspr_status_t) fspr_temp_dir_get(const char **temp_dir, + fspr_pool_t *p); /** @} */ diff --git a/libs/apr/include/apr_fnmatch.h b/libs/apr/include/fspr_fnmatch.h similarity index 89% rename from libs/apr/include/apr_fnmatch.h rename to libs/apr/include/fspr_fnmatch.h index 7a2811aac8f..18c0f138d72 100644 --- a/libs/apr/include/apr_fnmatch.h +++ b/libs/apr/include/fspr_fnmatch.h @@ -38,19 +38,19 @@ #define _APR_FNMATCH_H_ /** - * @file apr_fnmatch.h + * @file fspr_fnmatch.h * @brief APR FNMatch Functions */ -#include "apr_errno.h" -#include "apr_tables.h" +#include "fspr_errno.h" +#include "fspr_tables.h" #ifdef __cplusplus extern "C" { #endif /** - * @defgroup apr_fnmatch Filename Matching Functions + * @defgroup fspr_fnmatch Filename Matching Functions * @ingroup APR * @{ */ @@ -78,7 +78,7 @@ extern "C" { * */ -APR_DECLARE(apr_status_t) apr_fnmatch(const char *pattern, +APR_DECLARE(fspr_status_t) fspr_fnmatch(const char *pattern, const char *strings, int flags); /** @@ -86,7 +86,7 @@ APR_DECLARE(apr_status_t) apr_fnmatch(const char *pattern, * @param pattern The pattern to search for glob characters. * @return non-zero if pattern has any glob characters in it */ -APR_DECLARE(int) apr_fnmatch_test(const char *pattern); +APR_DECLARE(int) fspr_fnmatch_test(const char *pattern); /** * Find all files that match a specified pattern. @@ -95,9 +95,9 @@ APR_DECLARE(int) apr_fnmatch_test(const char *pattern); * @param p The pool to use. * @return non-zero if pattern has any glob characters in it */ -APR_DECLARE(apr_status_t) apr_match_glob(const char *pattern, - apr_array_header_t **result, - apr_pool_t *p); +APR_DECLARE(fspr_status_t) fspr_match_glob(const char *pattern, + fspr_array_header_t **result, + fspr_pool_t *p); /** @} */ diff --git a/libs/apr/include/apr_general.h b/libs/apr/include/fspr_general.h similarity index 80% rename from libs/apr/include/apr_general.h rename to libs/apr/include/fspr_general.h index 3a956288e3b..103f69f1dfa 100644 --- a/libs/apr/include/apr_general.h +++ b/libs/apr/include/fspr_general.h @@ -18,16 +18,16 @@ #define APR_GENERAL_H /** - * @file apr_general.h + * @file fspr_general.h * This is collection of oddballs that didn't fit anywhere else, * and might move to more appropriate headers with the release * of APR 1.0. * @brief APR Miscellaneous library routines */ -#include "apr.h" -#include "apr_pools.h" -#include "apr_errno.h" +#include "fspr.h" +#include "fspr_pools.h" +#include "fspr_errno.h" #if !defined(_ANSI_SOURCE) && defined(_DARWIN_C_SOURCE) #define NSIG __DARWIN_NSIG @@ -42,7 +42,7 @@ extern "C" { #endif /* __cplusplus */ /** - * @defgroup apr_general Miscellaneous library routines + * @defgroup fspr_general Miscellaneous library routines * @ingroup APR * This is collection of oddballs that didn't fit anywhere else, * and might move to more appropriate headers with the release @@ -69,7 +69,7 @@ extern "C" { #define APR_ASCII_TAB '\011' /** signal numbers typedef */ -typedef int apr_signum_t; +typedef int fspr_signum_t; /** * Finding offsets of elements within structures. @@ -148,7 +148,7 @@ int strncasecmp(const char *a, const char *b, size_t n); * String and memory functions */ -/* APR_STRINGIFY is defined here, and also in apr_release.h, so wrap it */ +/* APR_STRINGIFY is defined here, and also in fspr_release.h, so wrap it */ #ifndef APR_STRINGIFY /** Properly quote a value as a string in the C preprocessor */ #define APR_STRINGIFY(n) APR_STRINGIFY_HELPER(n) @@ -167,17 +167,17 @@ void *memchr(const void *s, int c, size_t n); /** @} */ /** - * @defgroup apr_library Library initialization and termination + * @defgroup fspr_library Library initialization and termination * @{ */ /** * Setup any APR internal data structures. This MUST be the first function * called for any APR library. - * @remark See apr_app_initialize if this is an application, rather than + * @remark See fspr_app_initialize if this is an application, rather than * a library consumer of apr. */ -APR_DECLARE(apr_status_t) apr_initialize(void); +APR_DECLARE(fspr_status_t) fspr_initialize(void); /** * Set up an application with normalized argc, argv (and optionally env) in @@ -187,11 +187,11 @@ APR_DECLARE(apr_status_t) apr_initialize(void); * @param argc Pointer to the argc that may be corrected * @param argv Pointer to the argv that may be corrected * @param env Pointer to the env that may be corrected, may be NULL - * @remark See apr_initialize if this is a library consumer of apr. - * Otherwise, this call is identical to apr_initialize, and must be closed - * with a call to apr_terminate at the end of program execution. + * @remark See fspr_initialize if this is a library consumer of apr. + * Otherwise, this call is identical to fspr_initialize, and must be closed + * with a call to fspr_terminate at the end of program execution. */ -APR_DECLARE(apr_status_t) apr_app_initialize(int *argc, +APR_DECLARE(fspr_status_t) fspr_app_initialize(int *argc, char const * const * *argv, char const * const * *env); @@ -202,25 +202,25 @@ APR_DECLARE(apr_status_t) apr_app_initialize(int *argc, * has stopped using APR services. The APR developers suggest using * atexit to ensure this is called. When using APR from a language * other than C that has problems with the calling convention, use - * apr_terminate2() instead. + * fspr_terminate2() instead. */ -APR_DECLARE_NONSTD(void) apr_terminate(void); +APR_DECLARE_NONSTD(void) fspr_terminate(void); /** * Tear down any APR internal data structures which aren't torn down - * automatically, same as apr_terminate - * @remark An APR program must call either the apr_terminate or apr_terminate2 + * automatically, same as fspr_terminate + * @remark An APR program must call either the fspr_terminate or fspr_terminate2 * function once it it has finished using APR services. The APR - * developers suggest using atexit(apr_terminate) to ensure this is done. - * apr_terminate2 exists to allow non-c language apps to tear down apr, - * while apr_terminate is recommended from c language applications. + * developers suggest using atexit(fspr_terminate) to ensure this is done. + * fspr_terminate2 exists to allow non-c language apps to tear down apr, + * while fspr_terminate is recommended from c language applications. */ -APR_DECLARE(void) apr_terminate2(void); +APR_DECLARE(void) fspr_terminate2(void); /** @} */ /** - * @defgroup apr_random Random Functions + * @defgroup fspr_random Random Functions * @{ */ @@ -232,8 +232,8 @@ APR_DECLARE(void) apr_terminate2(void); * @param buf Buffer to fill with random bytes * @param length Length of buffer in bytes */ -APR_DECLARE(apr_status_t) apr_generate_random_bytes(unsigned char * buf, - apr_size_t length); +APR_DECLARE(fspr_status_t) fspr_generate_random_bytes(unsigned char * buf, + fspr_size_t length); #endif /** @} */ diff --git a/libs/apr/include/apr_getopt.h b/libs/apr/include/fspr_getopt.h similarity index 78% rename from libs/apr/include/apr_getopt.h rename to libs/apr/include/fspr_getopt.h index 131aa4b38d6..5299fa7ae34 100644 --- a/libs/apr/include/apr_getopt.h +++ b/libs/apr/include/fspr_getopt.h @@ -18,18 +18,18 @@ #define APR_GETOPT_H /** - * @file apr_getopt.h + * @file fspr_getopt.h * @brief APR Command Arguments (getopt) */ -#include "apr_pools.h" +#include "fspr_pools.h" #ifdef __cplusplus extern "C" { #endif /* __cplusplus */ /** - * @defgroup apr_getopt Command Argument Parsing + * @defgroup fspr_getopt Command Argument Parsing * @ingroup APR * @{ */ @@ -37,19 +37,19 @@ extern "C" { /** * defintion of a error function */ -typedef void (apr_getopt_err_fn_t)(void *arg, const char *err, ...); +typedef void (fspr_getopt_err_fn_t)(void *arg, const char *err, ...); -/** @see apr_getopt_t */ -typedef struct apr_getopt_t apr_getopt_t; +/** @see fspr_getopt_t */ +typedef struct fspr_getopt_t fspr_getopt_t; /** * Structure to store command line argument information. */ -struct apr_getopt_t { +struct fspr_getopt_t { /** context for processing */ - apr_pool_t *cont; + fspr_pool_t *cont; /** function to print error message (NULL == no messages) */ - apr_getopt_err_fn_t *errfn; + fspr_getopt_err_fn_t *errfn; /** user defined first arg to pass to error message */ void *errarg; /** index into parent argv vector */ @@ -72,13 +72,13 @@ struct apr_getopt_t { int skip_end; }; -/** @see apr_getopt_option_t */ -typedef struct apr_getopt_option_t apr_getopt_option_t; +/** @see fspr_getopt_option_t */ +typedef struct fspr_getopt_option_t fspr_getopt_option_t; /** * Structure used to describe options that getopt should search for. */ -struct apr_getopt_option_t { +struct fspr_getopt_option_t { /** long option name, or NULL if option has no long name */ const char *name; /** option letter, or a value greater than 255 if option has no letter */ @@ -90,20 +90,20 @@ struct apr_getopt_option_t { }; /** - * Initialize the arguments for parsing by apr_getopt(). - * @param os The options structure created for apr_getopt() + * Initialize the arguments for parsing by fspr_getopt(). + * @param os The options structure created for fspr_getopt() * @param cont The pool to operate on * @param argc The number of arguments to parse * @param argv The array of arguments to parse * @remark Arguments 2 and 3 are most commonly argc and argv from main(argc, argv) * The errfn is initialized to fprintf(stderr... but may be overridden. */ -APR_DECLARE(apr_status_t) apr_getopt_init(apr_getopt_t **os, apr_pool_t *cont, +APR_DECLARE(fspr_status_t) fspr_getopt_init(fspr_getopt_t **os, fspr_pool_t *cont, int argc, const char * const *argv); /** - * Parse the options initialized by apr_getopt_init(). - * @param os The apr_opt_t structure returned by apr_getopt_init() + * Parse the options initialized by fspr_getopt_init(). + * @param os The fspr_opt_t structure returned by fspr_getopt_init() * @param opts A string of characters that are acceptable options to the * program. Characters followed by ":" are required to have an * option associated @@ -117,19 +117,19 @@ APR_DECLARE(apr_status_t) apr_getopt_init(apr_getopt_t **os, apr_pool_t *cont, * APR_SUCCESS -- The next option was found. * */ -APR_DECLARE(apr_status_t) apr_getopt(apr_getopt_t *os, const char *opts, +APR_DECLARE(fspr_status_t) fspr_getopt(fspr_getopt_t *os, const char *opts, char *option_ch, const char **option_arg); /** - * Parse the options initialized by apr_getopt_init(), accepting long + * Parse the options initialized by fspr_getopt_init(), accepting long * options beginning with "--" in addition to single-character * options beginning with "-". - * @param os The apr_getopt_t structure created by apr_getopt_init() - * @param opts A pointer to a list of apr_getopt_option_t structures, which + * @param os The fspr_getopt_t structure created by fspr_getopt_init() + * @param opts A pointer to a list of fspr_getopt_option_t structures, which * can be initialized with { "name", optch, has_args }. has_args * is nonzero if the option requires an argument. A structure * with an optch value of 0 terminates the list. - * @param option_ch Receives the value of "optch" from the apr_getopt_option_t + * @param option_ch Receives the value of "optch" from the fspr_getopt_option_t * structure corresponding to the next option matched. * @param option_arg Receives the argument following the option, if any. * @return There are four potential status values on exit. They are: @@ -145,8 +145,8 @@ APR_DECLARE(apr_status_t) apr_getopt(apr_getopt_t *os, const char *opts, * after arguments, and os->argv will be permuted to leave non-option arguments * at the end (the original argv is unaffected). */ -APR_DECLARE(apr_status_t) apr_getopt_long(apr_getopt_t *os, - const apr_getopt_option_t *opts, +APR_DECLARE(fspr_status_t) fspr_getopt_long(fspr_getopt_t *os, + const fspr_getopt_option_t *opts, int *option_ch, const char **option_arg); /** @} */ diff --git a/libs/apr/include/apr_global_mutex.h b/libs/apr/include/fspr_global_mutex.h similarity index 71% rename from libs/apr/include/apr_global_mutex.h rename to libs/apr/include/fspr_global_mutex.h index 9316001ce62..3e82a3e7ddc 100644 --- a/libs/apr/include/apr_global_mutex.h +++ b/libs/apr/include/fspr_global_mutex.h @@ -18,16 +18,16 @@ #define APR_GLOBAL_MUTEX_H /** - * @file apr_global_mutex.h + * @file fspr_global_mutex.h * @brief APR Global Locking Routines */ -#include "apr.h" -#include "apr_proc_mutex.h" /* only for apr_lockmech_e */ -#include "apr_pools.h" -#include "apr_errno.h" +#include "fspr.h" +#include "fspr_proc_mutex.h" /* only for fspr_lockmech_e */ +#include "fspr_pools.h" +#include "fspr_errno.h" #if APR_PROC_MUTEX_IS_GLOBAL -#include "apr_proc_mutex.h" +#include "fspr_proc_mutex.h" #endif #ifdef __cplusplus @@ -43,7 +43,7 @@ extern "C" { #if !APR_PROC_MUTEX_IS_GLOBAL || defined(DOXYGEN) /** Opaque global mutex structure. */ -typedef struct apr_global_mutex_t apr_global_mutex_t; +typedef struct fspr_global_mutex_t fspr_global_mutex_t; /* Function definitions */ @@ -51,7 +51,7 @@ typedef struct apr_global_mutex_t apr_global_mutex_t; * Create and initialize a mutex that can be used to synchronize both * processes and threads. Note: There is considerable overhead in using * this API if only cross-process or cross-thread mutual exclusion is - * required. See apr_proc_mutex.h and apr_thread_mutex.h for more + * required. See fspr_proc_mutex.h and fspr_thread_mutex.h for more * specialized lock routines. * @param mutex the memory address where the newly created mutex will be * stored. @@ -71,10 +71,10 @@ typedef struct apr_global_mutex_t apr_global_mutex_t; * @warning Check APR_HAS_foo_SERIALIZE defines to see if the platform supports * APR_LOCK_foo. Only APR_LOCK_DEFAULT is portable. */ -APR_DECLARE(apr_status_t) apr_global_mutex_create(apr_global_mutex_t **mutex, +APR_DECLARE(fspr_status_t) fspr_global_mutex_create(fspr_global_mutex_t **mutex, const char *fname, - apr_lockmech_e mech, - apr_pool_t *pool); + fspr_lockmech_e mech, + fspr_pool_t *pool); /** * Re-open a mutex in a child process. @@ -82,22 +82,22 @@ APR_DECLARE(apr_status_t) apr_global_mutex_create(apr_global_mutex_t **mutex, * @param fname A file name to use if the mutex mechanism requires one. This * argument should always be provided. The mutex code itself will * determine if it should be used. This filename should be the - * same one that was passed to apr_global_mutex_create(). + * same one that was passed to fspr_global_mutex_create(). * @param pool The pool to operate on. * @remark This function must be called to maintain portability, even * if the underlying lock mechanism does not require it. */ -APR_DECLARE(apr_status_t) apr_global_mutex_child_init( - apr_global_mutex_t **mutex, +APR_DECLARE(fspr_status_t) fspr_global_mutex_child_init( + fspr_global_mutex_t **mutex, const char *fname, - apr_pool_t *pool); + fspr_pool_t *pool); /** * Acquire the lock for the given mutex. If the mutex is already locked, * the current thread will be put to sleep until the lock becomes available. * @param mutex the mutex on which to acquire the lock. */ -APR_DECLARE(apr_status_t) apr_global_mutex_lock(apr_global_mutex_t *mutex); +APR_DECLARE(fspr_status_t) fspr_global_mutex_lock(fspr_global_mutex_t *mutex); /** * Attempt to acquire the lock for the given mutex. If the mutex has already @@ -106,23 +106,23 @@ APR_DECLARE(apr_status_t) apr_global_mutex_lock(apr_global_mutex_t *mutex); * if the return value was APR_EBUSY, for portability reasons. * @param mutex the mutex on which to attempt the lock acquiring. */ -APR_DECLARE(apr_status_t) apr_global_mutex_trylock(apr_global_mutex_t *mutex); +APR_DECLARE(fspr_status_t) fspr_global_mutex_trylock(fspr_global_mutex_t *mutex); /** * Release the lock for the given mutex. * @param mutex the mutex from which to release the lock. */ -APR_DECLARE(apr_status_t) apr_global_mutex_unlock(apr_global_mutex_t *mutex); +APR_DECLARE(fspr_status_t) fspr_global_mutex_unlock(fspr_global_mutex_t *mutex); /** * Destroy the mutex and free the memory associated with the lock. * @param mutex the mutex to destroy. */ -APR_DECLARE(apr_status_t) apr_global_mutex_destroy(apr_global_mutex_t *mutex); +APR_DECLARE(fspr_status_t) fspr_global_mutex_destroy(fspr_global_mutex_t *mutex); /** * Get the pool used by this global_mutex. - * @return apr_pool_t the pool + * @return fspr_pool_t the pool */ APR_POOL_DECLARE_ACCESSOR(global_mutex); @@ -130,17 +130,17 @@ APR_POOL_DECLARE_ACCESSOR(global_mutex); /* Some platforms [e.g. Win32] have cross process locks that are truly * global locks, since there isn't the concept of cross-process locks. - * Define these platforms in terms of an apr_proc_mutex_t. + * Define these platforms in terms of an fspr_proc_mutex_t. */ -#define apr_global_mutex_t apr_proc_mutex_t -#define apr_global_mutex_create apr_proc_mutex_create -#define apr_global_mutex_child_init apr_proc_mutex_child_init -#define apr_global_mutex_lock apr_proc_mutex_lock -#define apr_global_mutex_trylock apr_proc_mutex_trylock -#define apr_global_mutex_unlock apr_proc_mutex_unlock -#define apr_global_mutex_destroy apr_proc_mutex_destroy -#define apr_global_mutex_pool_get apr_proc_mutex_pool_get +#define fspr_global_mutex_t fspr_proc_mutex_t +#define fspr_global_mutex_create fspr_proc_mutex_create +#define fspr_global_mutex_child_init fspr_proc_mutex_child_init +#define fspr_global_mutex_lock fspr_proc_mutex_lock +#define fspr_global_mutex_trylock fspr_proc_mutex_trylock +#define fspr_global_mutex_unlock fspr_proc_mutex_unlock +#define fspr_global_mutex_destroy fspr_proc_mutex_destroy +#define fspr_global_mutex_pool_get fspr_proc_mutex_pool_get #endif diff --git a/libs/apr/include/apr_hash.h b/libs/apr/include/fspr_hash.h similarity index 69% rename from libs/apr/include/apr_hash.h rename to libs/apr/include/fspr_hash.h index 353709b145d..fca4458cb37 100644 --- a/libs/apr/include/apr_hash.h +++ b/libs/apr/include/fspr_hash.h @@ -18,43 +18,43 @@ #define APR_HASH_H /** - * @file apr_hash.h + * @file fspr_hash.h * @brief APR Hash Tables */ -#include "apr_pools.h" +#include "fspr_pools.h" #ifdef __cplusplus extern "C" { #endif /** - * @defgroup apr_hash Hash Tables + * @defgroup fspr_hash Hash Tables * @ingroup APR * @{ */ /** - * When passing a key to apr_hash_set or apr_hash_get, this value can be - * passed to indicate a string-valued key, and have apr_hash compute the + * When passing a key to fspr_hash_set or fspr_hash_get, this value can be + * passed to indicate a string-valued key, and have fspr_hash compute the * length automatically. * - * @remark apr_hash will use strlen(key) for the length. The NUL terminator + * @remark fspr_hash will use strlen(key) for the length. The NUL terminator * is not included in the hash value (why throw a constant in?). * Since the hash table merely references the provided key (rather - * than copying it), apr_hash_this() will return the NUL-term'd key. + * than copying it), fspr_hash_this() will return the NUL-term'd key. */ #define APR_HASH_KEY_STRING (-1) /** * Abstract type for hash tables. */ -typedef struct apr_hash_t apr_hash_t; +typedef struct fspr_hash_t fspr_hash_t; /** * Abstract type for scanning hash tables. */ -typedef struct apr_hash_index_t apr_hash_index_t; +typedef struct fspr_hash_index_t fspr_hash_index_t; /** * Callback functions for calculating hash values. @@ -62,20 +62,20 @@ typedef struct apr_hash_index_t apr_hash_index_t; * @param klen The length of the key, or APR_HASH_KEY_STRING to use the string * length. If APR_HASH_KEY_STRING then returns the actual key length. */ -typedef unsigned int (*apr_hashfunc_t)(const char *key, apr_ssize_t *klen); +typedef unsigned int (*fspr_hashfunc_t)(const char *key, fspr_ssize_t *klen); /** * The default hash function. */ -APR_DECLARE_NONSTD(unsigned int) apr_hashfunc_default(const char *key, - apr_ssize_t *klen); +APR_DECLARE_NONSTD(unsigned int) fspr_hashfunc_default(const char *key, + fspr_ssize_t *klen); /** * Create a hash table. * @param pool The pool to allocate the hash table out of * @return The hash table just created */ -APR_DECLARE(apr_hash_t *) apr_hash_make(apr_pool_t *pool); +APR_DECLARE(fspr_hash_t *) fspr_hash_make(fspr_pool_t *pool); /** * Create a hash table with a custom hash function @@ -83,8 +83,8 @@ APR_DECLARE(apr_hash_t *) apr_hash_make(apr_pool_t *pool); * @param hash_func A custom hash function. * @return The hash table just created */ -APR_DECLARE(apr_hash_t *) apr_hash_make_custom(apr_pool_t *pool, - apr_hashfunc_t hash_func); +APR_DECLARE(fspr_hash_t *) fspr_hash_make_custom(fspr_pool_t *pool, + fspr_hashfunc_t hash_func); /** * Make a copy of a hash table @@ -93,8 +93,8 @@ APR_DECLARE(apr_hash_t *) apr_hash_make_custom(apr_pool_t *pool, * @return The hash table just created * @remark Makes a shallow copy */ -APR_DECLARE(apr_hash_t *) apr_hash_copy(apr_pool_t *pool, - const apr_hash_t *h); +APR_DECLARE(fspr_hash_t *) fspr_hash_copy(fspr_pool_t *pool, + const fspr_hash_t *h); /** * Associate a value with a key in a hash table. @@ -104,8 +104,8 @@ APR_DECLARE(apr_hash_t *) apr_hash_copy(apr_pool_t *pool, * @param val Value to associate with the key * @remark If the value is NULL the hash entry is deleted. */ -APR_DECLARE(void) apr_hash_set(apr_hash_t *ht, const void *key, - apr_ssize_t klen, const void *val); +APR_DECLARE(void) fspr_hash_set(fspr_hash_t *ht, const void *key, + fspr_ssize_t klen, const void *val); /** * Look up the value associated with a key in a hash table. @@ -114,12 +114,12 @@ APR_DECLARE(void) apr_hash_set(apr_hash_t *ht, const void *key, * @param klen Length of the key. Can be APR_HASH_KEY_STRING to use the string length. * @return Returns NULL if the key is not present. */ -APR_DECLARE(void *) apr_hash_get(apr_hash_t *ht, const void *key, - apr_ssize_t klen); +APR_DECLARE(void *) fspr_hash_get(fspr_hash_t *ht, const void *key, + fspr_ssize_t klen); /** * Start iterating over the entries in a hash table. - * @param p The pool to allocate the apr_hash_index_t iterator. If this + * @param p The pool to allocate the fspr_hash_index_t iterator. If this * pool is NULL, then an internal, non-thread-safe iterator is used. * @param ht The hash table * @remark There is no restriction on adding or deleting hash entries during @@ -132,20 +132,20 @@ APR_DECLARE(void *) apr_hash_get(apr_hash_t *ht, const void *key, /** *

      * 
    - * int sum_values(apr_pool_t *p, apr_hash_t *ht)
    + * int sum_values(fspr_pool_t *p, fspr_hash_t *ht)
      * {
    - *     apr_hash_index_t *hi;
    + *     fspr_hash_index_t *hi;
      *     void *val;
      *     int sum = 0;
    - *     for (hi = apr_hash_first(p, ht); hi; hi = apr_hash_next(hi)) {
    - *         apr_hash_this(hi, NULL, NULL, &val);
    + *     for (hi = fspr_hash_first(p, ht); hi; hi = fspr_hash_next(hi)) {
    + *         fspr_hash_this(hi, NULL, NULL, &val);
      *         sum += *(int *)val;
      *     }
      *     return sum;
      * }
      * 
    */ -APR_DECLARE(apr_hash_index_t *) apr_hash_first(apr_pool_t *p, apr_hash_t *ht); +APR_DECLARE(fspr_hash_index_t *) fspr_hash_first(fspr_pool_t *p, fspr_hash_t *ht); /** * Continue iterating over the entries in a hash table. @@ -153,7 +153,7 @@ APR_DECLARE(apr_hash_index_t *) apr_hash_first(apr_pool_t *p, apr_hash_t *ht); * @return a pointer to the updated iteration state. NULL if there are no more * entries. */ -APR_DECLARE(apr_hash_index_t *) apr_hash_next(apr_hash_index_t *hi); +APR_DECLARE(fspr_hash_index_t *) fspr_hash_next(fspr_hash_index_t *hi); /** * Get the current entry's details from the iteration state. @@ -164,21 +164,21 @@ APR_DECLARE(apr_hash_index_t *) apr_hash_next(apr_hash_index_t *hi); * @remark The return pointers should point to a variable that will be set to the * corresponding data, or they may be NULL if the data isn't interesting. */ -APR_DECLARE(void) apr_hash_this(apr_hash_index_t *hi, const void **key, - apr_ssize_t *klen, void **val); +APR_DECLARE(void) fspr_hash_this(fspr_hash_index_t *hi, const void **key, + fspr_ssize_t *klen, void **val); /** * Get the number of key/value pairs in the hash table. * @param ht The hash table * @return The number of key/value pairs in the hash table. */ -APR_DECLARE(unsigned int) apr_hash_count(apr_hash_t *ht); +APR_DECLARE(unsigned int) fspr_hash_count(fspr_hash_t *ht); /** * Clear any key/value pairs in the hash table. * @param ht The hash table */ -APR_DECLARE(void) apr_hash_clear(apr_hash_t *ht); +APR_DECLARE(void) fspr_hash_clear(fspr_hash_t *ht); /** * Merge two hash tables into one new hash table. The values of the overlay @@ -189,9 +189,9 @@ APR_DECLARE(void) apr_hash_clear(apr_hash_t *ht); * @param base The table that represents the initial values of the new table * @return A new hash table containing all of the data from the two passed in */ -APR_DECLARE(apr_hash_t *) apr_hash_overlay(apr_pool_t *p, - const apr_hash_t *overlay, - const apr_hash_t *base); +APR_DECLARE(fspr_hash_t *) fspr_hash_overlay(fspr_pool_t *p, + const fspr_hash_t *overlay, + const fspr_hash_t *base); /** * Merge two hash tables into one new hash table. If the same key @@ -203,16 +203,16 @@ APR_DECLARE(apr_hash_t *) apr_hash_overlay(apr_pool_t *p, * @param h2 The second of the tables to merge * @param merger A callback function to merge values, or NULL to * make values from h1 override values from h2 (same semantics as - * apr_hash_overlay()) + * fspr_hash_overlay()) * @param data Client data to pass to the merger function * @return A new hash table containing all of the data from the two passed in */ -APR_DECLARE(apr_hash_t *) apr_hash_merge(apr_pool_t *p, - const apr_hash_t *h1, - const apr_hash_t *h2, - void * (*merger)(apr_pool_t *p, +APR_DECLARE(fspr_hash_t *) fspr_hash_merge(fspr_pool_t *p, + const fspr_hash_t *h1, + const fspr_hash_t *h2, + void * (*merger)(fspr_pool_t *p, const void *key, - apr_ssize_t klen, + fspr_ssize_t klen, const void *h1_val, const void *h2_val, const void *data), diff --git a/libs/apr/include/apr_inherit.h b/libs/apr/include/fspr_inherit.h similarity index 70% rename from libs/apr/include/apr_inherit.h rename to libs/apr/include/fspr_inherit.h index b7f7480f1ff..c73cd8aa609 100644 --- a/libs/apr/include/apr_inherit.h +++ b/libs/apr/include/fspr_inherit.h @@ -18,34 +18,34 @@ #define APR_INHERIT_H /** - * @file apr_inherit.h + * @file fspr_inherit.h * @brief APR File Handle Inheritance Helpers * @remark This internal header includes internal declaration helpers - * for other headers to declare apr_foo_inherit_[un]set functions. + * for other headers to declare fspr_foo_inherit_[un]set functions. */ /** - * Prototype for type-specific declarations of apr_foo_inherit_set + * Prototype for type-specific declarations of fspr_foo_inherit_set * functions. * @remark Doxygen unwraps this macro (via doxygen.conf) to provide - * actual help for each specific occurance of apr_foo_inherit_set. + * actual help for each specific occurance of fspr_foo_inherit_set. * @remark the linkage is specified for APR. It would be possible to expand * the macros to support other linkages. */ #define APR_DECLARE_INHERIT_SET(type) \ - APR_DECLARE(apr_status_t) apr_##type##_inherit_set( \ - apr_##type##_t *the##type) + APR_DECLARE(fspr_status_t) fspr_##type##_inherit_set( \ + fspr_##type##_t *the##type) /** - * Prototype for type-specific declarations of apr_foo_inherit_unset + * Prototype for type-specific declarations of fspr_foo_inherit_unset * functions. * @remark Doxygen unwraps this macro (via doxygen.conf) to provide - * actual help for each specific occurance of apr_foo_inherit_unset. + * actual help for each specific occurance of fspr_foo_inherit_unset. * @remark the linkage is specified for APR. It would be possible to expand * the macros to support other linkages. */ #define APR_DECLARE_INHERIT_UNSET(type) \ - APR_DECLARE(apr_status_t) apr_##type##_inherit_unset( \ - apr_##type##_t *the##type) + APR_DECLARE(fspr_status_t) fspr_##type##_inherit_unset( \ + fspr_##type##_t *the##type) #endif /* ! APR_INHERIT_H */ diff --git a/libs/apr/include/apr_lib.h b/libs/apr/include/fspr_lib.h similarity index 65% rename from libs/apr/include/apr_lib.h rename to libs/apr/include/fspr_lib.h index ed25d869f50..6642950ecf2 100644 --- a/libs/apr/include/apr_lib.h +++ b/libs/apr/include/fspr_lib.h @@ -18,15 +18,15 @@ #define APR_LIB_H /** - * @file apr_lib.h + * @file fspr_lib.h * This is collection of oddballs that didn't fit anywhere else, * and might move to more appropriate headers with the release * of APR 1.0. * @brief APR general purpose library routines */ -#include "apr.h" -#include "apr_errno.h" +#include "fspr.h" +#include "fspr_errno.h" #if APR_HAVE_CTYPE_H #include @@ -40,7 +40,7 @@ extern "C" { #endif /* __cplusplus */ /** - * @defgroup apr_lib General Purpose Library Routines + * @defgroup fspr_lib General Purpose Library Routines * @ingroup APR * This is collection of oddballs that didn't fit anywhere else, * and might move to more appropriate headers with the release @@ -55,13 +55,13 @@ extern "C" { * Define the structures used by the APR general-purpose library. */ -/** @see apr_vformatter_buff_t */ -typedef struct apr_vformatter_buff_t apr_vformatter_buff_t; +/** @see fspr_vformatter_buff_t */ +typedef struct fspr_vformatter_buff_t fspr_vformatter_buff_t; /** * Structure used by the variable-formatter routines. */ -struct apr_vformatter_buff_t { +struct fspr_vformatter_buff_t { /** The current position */ char *curpos; /** The end position of the format string */ @@ -81,26 +81,26 @@ struct apr_vformatter_buff_t { * "bs\\path\\stuff" -> "stuff" * */ -APR_DECLARE(const char *) apr_filepath_name_get(const char *pathname); +APR_DECLARE(const char *) fspr_filepath_name_get(const char *pathname); /** - * apr_killpg + * fspr_killpg * Small utility macros to make things easier to read. Not usually a * goal, to be sure.. */ #ifdef WIN32 -#define apr_killpg(x, y) +#define fspr_killpg(x, y) #else /* WIN32 */ #ifdef NO_KILLPG -#define apr_killpg(x, y) (kill (-(x), (y))) +#define fspr_killpg(x, y) (kill (-(x), (y))) #else /* NO_KILLPG */ -#define apr_killpg(x, y) (killpg ((x), (y))) +#define fspr_killpg(x, y) (killpg ((x), (y))) #endif /* NO_KILLPG */ #endif /* WIN32 */ /** - * apr_vformatter() is a generic printf-style formatting routine + * fspr_vformatter() is a generic printf-style formatting routine * with some extensions. * @param flush_func The function to call when the buffer is full * @param c The buffer to write to @@ -112,11 +112,11 @@ APR_DECLARE(const char *) apr_filepath_name_get(const char *pathname); * The extensions are: * * %%pA takes a struct in_addr *, and prints it as a.b.c.d - * %%pI takes an apr_sockaddr_t * and prints it as a.b.c.d:port or + * %%pI takes an fspr_sockaddr_t * and prints it as a.b.c.d:port or * [ipv6-address]:port - * %%pT takes an apr_os_thread_t * and prints it in decimal + * %%pT takes an fspr_os_thread_t * and prints it in decimal * ('0' is printed if !APR_HAS_THREADS) - * %%pt takes an apr_os_thread_t * and prints it in hexadecimal + * %%pt takes an fspr_os_thread_t * and prints it in hexadecimal * ('0' is printed if !APR_HAS_THREADS) * %%pp takes a void * and outputs it in hex * @@ -126,44 +126,44 @@ APR_DECLARE(const char *) apr_filepath_name_get(const char *pathname); * work as expected at all, but that seems to be a fair trade-off * for the increased robustness of having printf-warnings work. * - * Additionally, apr_vformatter allows for arbitrary output methods - * using the apr_vformatter_buff and flush_func. + * Additionally, fspr_vformatter allows for arbitrary output methods + * using the fspr_vformatter_buff and flush_func. * - * The apr_vformatter_buff has two elements curpos and endpos. - * curpos is where apr_vformatter will write the next byte of output. + * The fspr_vformatter_buff has two elements curpos and endpos. + * curpos is where fspr_vformatter will write the next byte of output. * It proceeds writing output to curpos, and updating curpos, until * either the end of output is reached, or curpos == endpos (i.e. the * buffer is full). * - * If the end of output is reached, apr_vformatter returns the + * If the end of output is reached, fspr_vformatter returns the * number of bytes written. * * When the buffer is full, the flush_func is called. The flush_func * can return -1 to indicate that no further output should be attempted, - * and apr_vformatter will return immediately with -1. Otherwise + * and fspr_vformatter will return immediately with -1. Otherwise * the flush_func should flush the buffer in whatever manner is - * appropriate, re apr_pool_t nitialize curpos and endpos, and return 0. + * appropriate, re fspr_pool_t nitialize curpos and endpos, and return 0. * * Note that flush_func is only invoked as a result of attempting to * write another byte at curpos when curpos >= endpos. So for * example, it's possible when the output exactly matches the buffer * space available that curpos == endpos will be true when - * apr_vformatter returns. + * fspr_vformatter returns. * - * apr_vformatter does not call out to any other code, it is entirely + * fspr_vformatter does not call out to any other code, it is entirely * self-contained. This allows the callers to do things which are - * otherwise "unsafe". For example, apr_psprintf uses the "scratch" + * otherwise "unsafe". For example, fspr_psprintf uses the "scratch" * space at the unallocated end of a block, and doesn't actually - * complete the allocation until apr_vformatter returns. apr_psprintf - * would be completely broken if apr_vformatter were to call anything + * complete the allocation until fspr_vformatter returns. fspr_psprintf + * would be completely broken if fspr_vformatter were to call anything * that used this same pool. Similarly http_bprintf() uses the "scratch" * space at the end of its output buffer, and doesn't actually note * that the space is in use until it either has to flush the buffer - * or until apr_vformatter returns. + * or until fspr_vformatter returns. * */ -APR_DECLARE(int) apr_vformatter(int (*flush_func)(apr_vformatter_buff_t *b), - apr_vformatter_buff_t *c, const char *fmt, +APR_DECLARE(int) fspr_vformatter(int (*flush_func)(fspr_vformatter_buff_t *b), + fspr_vformatter_buff_t *c, const char *fmt, va_list ap); /** @@ -174,16 +174,16 @@ APR_DECLARE(int) apr_vformatter(int (*flush_func)(apr_vformatter_buff_t *b), * @remark If the password entered must be truncated to fit in * the provided buffer, APR_ENAMETOOLONG will be returned. * Note that the bufsize paramater is passed by reference for no - * reason; its value will never be modified by the apr_password_get() + * reason; its value will never be modified by the fspr_password_get() * function. */ -APR_DECLARE(apr_status_t) apr_password_get(const char *prompt, char *pwbuf, - apr_size_t *bufsize); +APR_DECLARE(fspr_status_t) fspr_password_get(const char *prompt, char *pwbuf, + fspr_size_t *bufsize); /** @} */ /** - * @defgroup apr_ctype ctype functions + * @defgroup fspr_ctype ctype functions * These macros allow correct support of 8-bit characters on systems which * support 8-bit characters. Pretty dumb how the cast is required, but * that's legacy libc for ya. These new macros do not support EOF like @@ -191,37 +191,37 @@ APR_DECLARE(apr_status_t) apr_password_get(const char *prompt, char *pwbuf, * @{ */ /** @see isalnum */ -#define apr_isalnum(c) (isalnum(((unsigned char)(c)))) +#define fspr_isalnum(c) (isalnum(((unsigned char)(c)))) /** @see isalpha */ -#define apr_isalpha(c) (isalpha(((unsigned char)(c)))) +#define fspr_isalpha(c) (isalpha(((unsigned char)(c)))) /** @see iscntrl */ -#define apr_iscntrl(c) (iscntrl(((unsigned char)(c)))) +#define fspr_iscntrl(c) (iscntrl(((unsigned char)(c)))) /** @see isdigit */ -#define apr_isdigit(c) (isdigit(((unsigned char)(c)))) +#define fspr_isdigit(c) (isdigit(((unsigned char)(c)))) /** @see isgraph */ -#define apr_isgraph(c) (isgraph(((unsigned char)(c)))) +#define fspr_isgraph(c) (isgraph(((unsigned char)(c)))) /** @see islower*/ -#define apr_islower(c) (islower(((unsigned char)(c)))) +#define fspr_islower(c) (islower(((unsigned char)(c)))) /** @see isascii */ #ifdef isascii -#define apr_isascii(c) (isascii(((unsigned char)(c)))) +#define fspr_isascii(c) (isascii(((unsigned char)(c)))) #else -#define apr_isascii(c) (((c) & ~0x7f)==0) +#define fspr_isascii(c) (((c) & ~0x7f)==0) #endif /** @see isprint */ -#define apr_isprint(c) (isprint(((unsigned char)(c)))) +#define fspr_isprint(c) (isprint(((unsigned char)(c)))) /** @see ispunct */ -#define apr_ispunct(c) (ispunct(((unsigned char)(c)))) +#define fspr_ispunct(c) (ispunct(((unsigned char)(c)))) /** @see isspace */ -#define apr_isspace(c) (isspace(((unsigned char)(c)))) +#define fspr_isspace(c) (isspace(((unsigned char)(c)))) /** @see isupper */ -#define apr_isupper(c) (isupper(((unsigned char)(c)))) +#define fspr_isupper(c) (isupper(((unsigned char)(c)))) /** @see isxdigit */ -#define apr_isxdigit(c) (isxdigit(((unsigned char)(c)))) +#define fspr_isxdigit(c) (isxdigit(((unsigned char)(c)))) /** @see tolower */ -#define apr_tolower(c) (tolower(((unsigned char)(c)))) +#define fspr_tolower(c) (tolower(((unsigned char)(c)))) /** @see toupper */ -#define apr_toupper(c) (toupper(((unsigned char)(c)))) +#define fspr_toupper(c) (toupper(((unsigned char)(c)))) /** @} */ diff --git a/libs/apr/include/apr_mmap.h b/libs/apr/include/fspr_mmap.h similarity index 76% rename from libs/apr/include/apr_mmap.h rename to libs/apr/include/fspr_mmap.h index 77d697f5b55..88b99b8fe1e 100644 --- a/libs/apr/include/apr_mmap.h +++ b/libs/apr/include/fspr_mmap.h @@ -18,15 +18,15 @@ #define APR_MMAP_H /** - * @file apr_mmap.h + * @file fspr_mmap.h * @brief APR MMAP routines */ -#include "apr.h" -#include "apr_pools.h" -#include "apr_errno.h" -#include "apr_ring.h" -#include "apr_file_io.h" /* for apr_file_t */ +#include "fspr.h" +#include "fspr_pools.h" +#include "fspr_errno.h" +#include "fspr_ring.h" +#include "fspr_file_io.h" /* for fspr_file_t */ #ifdef BEOS #include @@ -37,7 +37,7 @@ extern "C" { #endif /* __cplusplus */ /** - * @defgroup apr_mmap MMAP (Memory Map) Routines + * @defgroup fspr_mmap MMAP (Memory Map) Routines * @ingroup APR * @{ */ @@ -47,8 +47,8 @@ extern "C" { /** MMap opened for writing */ #define APR_MMAP_WRITE 2 -/** @see apr_mmap_t */ -typedef struct apr_mmap_t apr_mmap_t; +/** @see fspr_mmap_t */ +typedef struct fspr_mmap_t fspr_mmap_t; /** * @remark @@ -59,9 +59,9 @@ typedef struct apr_mmap_t apr_mmap_t; * Apache. */ /** The MMAP structure */ -struct apr_mmap_t { +struct fspr_mmap_t { /** The pool the mmap structure was allocated out of. */ - apr_pool_t *cntxt; + fspr_pool_t *cntxt; #ifdef BEOS /** An area ID. Only valid on BeOS */ area_id area; @@ -72,17 +72,17 @@ struct apr_mmap_t { /** The start of the real memory page area (mapped view) */ void *mv; /** The physical start, size and offset */ - apr_off_t pstart; - apr_size_t psize; - apr_off_t poffset; + fspr_off_t pstart; + fspr_size_t psize; + fspr_off_t poffset; #endif /** The start of the memory mapped area */ void *mm; /** The amount of data in the mmap */ - apr_size_t size; - /** ring of apr_mmap_t's that reference the same + fspr_size_t size; + /** ring of fspr_mmap_t's that reference the same * mmap'ed region; acts in place of a reference count */ - APR_RING_ENTRY(apr_mmap_t) link; + APR_RING_ENTRY(fspr_mmap_t) link; }; #if APR_HAS_MMAP || defined(DOXYGEN) @@ -130,10 +130,10 @@ struct apr_mmap_t { * * @param cntxt The pool to use when creating the mmap. */ -APR_DECLARE(apr_status_t) apr_mmap_create(apr_mmap_t **newmmap, - apr_file_t *file, apr_off_t offset, - apr_size_t size, apr_int32_t flag, - apr_pool_t *cntxt); +APR_DECLARE(fspr_status_t) fspr_mmap_create(fspr_mmap_t **newmmap, + fspr_file_t *file, fspr_off_t offset, + fspr_size_t size, fspr_int32_t flag, + fspr_pool_t *cntxt); /** * Duplicate the specified MMAP. @@ -141,15 +141,15 @@ APR_DECLARE(apr_status_t) apr_mmap_create(apr_mmap_t **newmmap, * @param old_mmap The mmap to duplicate. * @param p The pool to use for new_mmap. */ -APR_DECLARE(apr_status_t) apr_mmap_dup(apr_mmap_t **new_mmap, - apr_mmap_t *old_mmap, - apr_pool_t *p); +APR_DECLARE(fspr_status_t) fspr_mmap_dup(fspr_mmap_t **new_mmap, + fspr_mmap_t *old_mmap, + fspr_pool_t *p); /** * Remove a mmap'ed. * @param mm The mmap'ed file. */ -APR_DECLARE(apr_status_t) apr_mmap_delete(apr_mmap_t *mm); +APR_DECLARE(fspr_status_t) fspr_mmap_delete(fspr_mmap_t *mm); /** * Move the pointer into the mmap'ed file to the specified offset. @@ -157,8 +157,8 @@ APR_DECLARE(apr_status_t) apr_mmap_delete(apr_mmap_t *mm); * @param mm The mmap'ed file. * @param offset The offset to move to. */ -APR_DECLARE(apr_status_t) apr_mmap_offset(void **addr, apr_mmap_t *mm, - apr_off_t offset); +APR_DECLARE(fspr_status_t) fspr_mmap_offset(void **addr, fspr_mmap_t *mm, + fspr_off_t offset); #endif /* APR_HAS_MMAP */ diff --git a/libs/apr/include/apr_network_io.h b/libs/apr/include/fspr_network_io.h similarity index 72% rename from libs/apr/include/apr_network_io.h rename to libs/apr/include/fspr_network_io.h index 1d65f1cb092..384b3291432 100644 --- a/libs/apr/include/apr_network_io.h +++ b/libs/apr/include/fspr_network_io.h @@ -17,15 +17,15 @@ #ifndef APR_NETWORK_IO_H #define APR_NETWORK_IO_H /** - * @file apr_network_io.h + * @file fspr_network_io.h * @brief APR Network library */ -#include "apr.h" -#include "apr_pools.h" -#include "apr_file_io.h" -#include "apr_errno.h" -#include "apr_inherit.h" +#include "fspr.h" +#include "fspr_pools.h" +#include "fspr_file_io.h" +#include "fspr_errno.h" +#include "fspr_inherit.h" #if APR_HAVE_NETINET_IN_H #include @@ -36,7 +36,7 @@ extern "C" { #endif /* __cplusplus */ /** - * @defgroup apr_network_io Network Routines + * @defgroup fspr_network_io Network Routines * @ingroup APR * @{ */ @@ -57,7 +57,7 @@ extern "C" { #endif /** - * @defgroup apr_sockopt Socket option definitions + * @defgroup fspr_sockopt Socket option definitions * @{ */ #define APR_SO_LINGER 1 /**< Linger */ @@ -81,7 +81,7 @@ extern "C" { #define APR_INCOMPLETE_READ 4096 /**< Set on non-blocking sockets * (timeout != 0) on which the * previous read() did not fill a buffer - * completely. the next apr_socket_recv() + * completely. the next fspr_socket_recv() * will first call select()/poll() rather than * going straight into read(). (Can also * be set by an application to force a @@ -97,7 +97,7 @@ extern "C" { */ #define APR_TCP_DEFER_ACCEPT 32768 /**< Delay accepting of new connections * until data is available. - * @see apr_socket_accept_filter + * @see fspr_socket_accept_filter */ /** @} */ @@ -107,10 +107,10 @@ typedef enum { APR_SHUTDOWN_READ, /**< no longer allow read request */ APR_SHUTDOWN_WRITE, /**< no longer allow write requests */ APR_SHUTDOWN_READWRITE /**< no longer allow read or write requests */ -} apr_shutdown_how_e; +} fspr_shutdown_how_e; -#define APR_IPV4_ADDR_OK 0x01 /**< @see apr_sockaddr_info_get() */ -#define APR_IPV6_ADDR_OK 0x02 /**< @see apr_sockaddr_info_get() */ +#define APR_IPV4_ADDR_OK 0x01 /**< @see fspr_sockaddr_info_get() */ +#define APR_IPV6_ADDR_OK 0x02 /**< @see fspr_sockaddr_info_get() */ #if (!APR_HAVE_IN_ADDR) /** @@ -118,7 +118,7 @@ typedef enum { * define it ourselves, if the platform doesn't provide it. */ struct in_addr { - apr_uint32_t s_addr; /**< storage to hold the IP# */ + fspr_uint32_t s_addr; /**< storage to hold the IP# */ }; #endif @@ -169,7 +169,7 @@ struct in_addr { typedef enum { APR_LOCAL, APR_REMOTE -} apr_interface_e; +} fspr_interface_e; /** * The specific declaration of inet_addr's ... some platforms fall back @@ -177,49 +177,49 @@ typedef enum { */ #if APR_HAVE_INET_ADDR -#define apr_inet_addr inet_addr +#define fspr_inet_addr inet_addr #elif APR_HAVE_INET_NETWORK /* only DGUX, as far as I know */ /** * @warning * not generally safe... inet_network() and inet_addr() perform * different functions */ -#define apr_inet_addr inet_network +#define fspr_inet_addr inet_network #endif /** A structure to represent sockets */ -typedef struct apr_socket_t apr_socket_t; +typedef struct fspr_socket_t fspr_socket_t; /** - * A structure to encapsulate headers and trailers for apr_socket_sendfile + * A structure to encapsulate headers and trailers for fspr_socket_sendfile */ -typedef struct apr_hdtr_t apr_hdtr_t; +typedef struct fspr_hdtr_t fspr_hdtr_t; /** A structure to represent in_addr */ -typedef struct in_addr apr_in_addr_t; +typedef struct in_addr fspr_in_addr_t; /** A structure to represent an IP subnet */ -typedef struct apr_ipsubnet_t apr_ipsubnet_t; +typedef struct fspr_ipsubnet_t fspr_ipsubnet_t; -/** @remark use apr_uint16_t just in case some system has a short that isn't 16 bits... */ -typedef apr_uint16_t apr_port_t; +/** @remark use fspr_uint16_t just in case some system has a short that isn't 16 bits... */ +typedef fspr_uint16_t fspr_port_t; /** @remark It's defined here as I think it should all be platform safe... - * @see apr_sockaddr_t + * @see fspr_sockaddr_t */ -typedef struct apr_sockaddr_t apr_sockaddr_t; +typedef struct fspr_sockaddr_t fspr_sockaddr_t; /** * APRs socket address type, used to ensure protocol independence */ -struct apr_sockaddr_t { +struct fspr_sockaddr_t { /** The pool to use... */ - apr_pool_t *pool; + fspr_pool_t *pool; /** The hostname */ char *hostname; /** Either a string of the port number or the service name for the port */ char *servname; /** The numeric port */ - apr_port_t port; + fspr_port_t port; /** The family */ - apr_int32_t family; + fspr_int32_t family; /** How big is the sockaddr we're using? */ - apr_socklen_t salen; + fspr_socklen_t salen; /** How big is the ip address structure we're using? */ int ipaddr_len; /** How big should the address buffer be? 16 for v4 or 46 for v6 @@ -228,9 +228,9 @@ struct apr_sockaddr_t { /** This points to the IP address structure within the appropriate * sockaddr structure. */ void *ipaddr_ptr; - /** If multiple addresses were found by apr_sockaddr_info_get(), this + /** If multiple addresses were found by fspr_sockaddr_info_get(), this * points to a representation of the next address. */ - apr_sockaddr_t *next; + fspr_sockaddr_t *next; /** Union of either IPv4 or IPv6 sockaddr. */ union { /** IPv4 sockaddr structure */ @@ -251,13 +251,13 @@ struct apr_sockaddr_t { /** * Support reusing the socket on platforms which support it (from disconnect, * specifically Win32. - * @remark Optional flag passed into apr_socket_sendfile() + * @remark Optional flag passed into fspr_socket_sendfile() */ #define APR_SENDFILE_DISCONNECT_SOCKET 1 #endif -/** A structure to encapsulate headers and trailers for apr_socket_sendfile */ -struct apr_hdtr_t { +/** A structure to encapsulate headers and trailers for fspr_socket_sendfile */ +struct fspr_hdtr_t { /** An iovec to store the headers sent before the file. */ struct iovec* headers; /** number of headers in the iovec */ @@ -278,10 +278,10 @@ struct apr_hdtr_t { * @param protocol The protocol of the socket (e.g., APR_PROTO_TCP). * @param cont The pool to use */ -APR_DECLARE(apr_status_t) apr_socket_create(apr_socket_t **new_sock, +APR_DECLARE(fspr_status_t) fspr_socket_create(fspr_socket_t **new_sock, int family, int type, int protocol, - apr_pool_t *cont); + fspr_pool_t *cont); /** * Shutdown either reading, writing, or both sides of a socket. @@ -292,18 +292,18 @@ APR_DECLARE(apr_status_t) apr_socket_create(apr_socket_t **new_sock, * APR_SHUTDOWN_WRITE no longer allow write requests * APR_SHUTDOWN_READWRITE no longer allow read or write requests * - * @see apr_shutdown_how_e + * @see fspr_shutdown_how_e * @remark This does not actually close the socket descriptor, it just * controls which calls are still valid on the socket. */ -APR_DECLARE(apr_status_t) apr_socket_shutdown(apr_socket_t *thesocket, - apr_shutdown_how_e how); +APR_DECLARE(fspr_status_t) fspr_socket_shutdown(fspr_socket_t *thesocket, + fspr_shutdown_how_e how); /** * Close a socket. * @param thesocket The socket to close */ -APR_DECLARE(apr_status_t) apr_socket_close(apr_socket_t *thesocket); +APR_DECLARE(fspr_status_t) fspr_socket_close(fspr_socket_t *thesocket); /** * Bind the socket to its associated port @@ -312,8 +312,8 @@ APR_DECLARE(apr_status_t) apr_socket_close(apr_socket_t *thesocket); * @remark This may be where we will find out if there is any other process * using the selected port. */ -APR_DECLARE(apr_status_t) apr_socket_bind(apr_socket_t *sock, - apr_sockaddr_t *sa); +APR_DECLARE(fspr_status_t) fspr_socket_bind(fspr_socket_t *sock, + fspr_sockaddr_t *sa); /** * Listen to a bound socket for connections. @@ -322,8 +322,8 @@ APR_DECLARE(apr_status_t) apr_socket_bind(apr_socket_t *sock, * listen queue. If this value is less than zero, the listen * queue size is set to zero. */ -APR_DECLARE(apr_status_t) apr_socket_listen(apr_socket_t *sock, - apr_int32_t backlog); +APR_DECLARE(fspr_status_t) fspr_socket_listen(fspr_socket_t *sock, + fspr_int32_t backlog); /** * Accept a new connection request @@ -333,9 +333,9 @@ APR_DECLARE(apr_status_t) apr_socket_listen(apr_socket_t *sock, * @param sock The socket we are listening on. * @param connection_pool The pool for the new socket. */ -APR_DECLARE(apr_status_t) apr_socket_accept(apr_socket_t **new_sock, - apr_socket_t *sock, - apr_pool_t *connection_pool); +APR_DECLARE(fspr_status_t) fspr_socket_accept(fspr_socket_t **new_sock, + fspr_socket_t *sock, + fspr_pool_t *connection_pool); /** * Issue a connection request to a socket either on the same machine @@ -343,12 +343,12 @@ APR_DECLARE(apr_status_t) apr_socket_accept(apr_socket_t **new_sock, * @param sock The socket we wish to use for our side of the connection * @param sa The address of the machine we wish to connect to. */ -APR_DECLARE(apr_status_t) apr_socket_connect(apr_socket_t *sock, - apr_sockaddr_t *sa); +APR_DECLARE(fspr_status_t) fspr_socket_connect(fspr_socket_t *sock, + fspr_sockaddr_t *sa); /** - * Create apr_sockaddr_t from hostname, address family, and port. - * @param sa The new apr_sockaddr_t. + * Create fspr_sockaddr_t from hostname, address family, and port. + * @param sa The new fspr_sockaddr_t. * @param hostname The hostname or numeric address string to resolve/parse, or * NULL to build an address that corresponds to 0.0.0.0 or :: * @param family The address family to use, or APR_UNSPEC if the system should @@ -367,24 +367,24 @@ APR_DECLARE(apr_status_t) apr_socket_connect(apr_socket_t *sock, * isn't NULL and APR_HAVE_IPV6; mutually exclusive * with APR_IPV4_ADDR_OK * - * @param p The pool for the apr_sockaddr_t and associated storage. + * @param p The pool for the fspr_sockaddr_t and associated storage. */ -APR_DECLARE(apr_status_t) apr_sockaddr_info_get(apr_sockaddr_t **sa, +APR_DECLARE(fspr_status_t) fspr_sockaddr_info_get(fspr_sockaddr_t **sa, const char *hostname, - apr_int32_t family, - apr_port_t port, - apr_int32_t flags, - apr_pool_t *p); + fspr_int32_t family, + fspr_port_t port, + fspr_int32_t flags, + fspr_pool_t *p); /** - * Look up the host name from an apr_sockaddr_t. + * Look up the host name from an fspr_sockaddr_t. * @param hostname The hostname. - * @param sa The apr_sockaddr_t. + * @param sa The fspr_sockaddr_t. * @param flags Special processing flags. */ -APR_DECLARE(apr_status_t) apr_getnameinfo(char **hostname, - apr_sockaddr_t *sa, - apr_int32_t flags); +APR_DECLARE(fspr_status_t) fspr_getnameinfo(char **hostname, + fspr_sockaddr_t *sa, + fspr_int32_t flags); /** * Parse hostname/IP address with scope id and port. @@ -416,11 +416,11 @@ APR_DECLARE(apr_status_t) apr_getnameinfo(char **hostname, * required, check for addr == NULL in addition to checking the * return code. */ -APR_DECLARE(apr_status_t) apr_parse_addr_port(char **addr, +APR_DECLARE(fspr_status_t) fspr_parse_addr_port(char **addr, char **scope_id, - apr_port_t *port, + fspr_port_t *port, const char *str, - apr_pool_t *p); + fspr_pool_t *p); /** * Get name of the current machine @@ -430,7 +430,7 @@ APR_DECLARE(apr_status_t) apr_parse_addr_port(char **addr, * @param cont The pool to use. * @remark If the buffer was not large enough, an error will be returned. */ -APR_DECLARE(apr_status_t) apr_gethostname(char *buf, int len, apr_pool_t *cont); +APR_DECLARE(fspr_status_t) fspr_gethostname(char *buf, int len, fspr_pool_t *cont); /** * Return the data associated with the current socket @@ -438,8 +438,8 @@ APR_DECLARE(apr_status_t) apr_gethostname(char *buf, int len, apr_pool_t *cont); * @param key The key to associate with the user data. * @param sock The currently open socket. */ -APR_DECLARE(apr_status_t) apr_socket_data_get(void **data, const char *key, - apr_socket_t *sock); +APR_DECLARE(fspr_status_t) fspr_socket_data_get(void **data, const char *key, + fspr_socket_t *sock); /** * Set the data associated with the current socket. @@ -448,9 +448,9 @@ APR_DECLARE(apr_status_t) apr_socket_data_get(void **data, const char *key, * @param key The key to associate with the data. * @param cleanup The cleanup to call when the socket is destroyed. */ -APR_DECLARE(apr_status_t) apr_socket_data_set(apr_socket_t *sock, void *data, +APR_DECLARE(fspr_status_t) fspr_socket_data_set(fspr_socket_t *sock, void *data, const char *key, - apr_status_t (*cleanup)(void*)); + fspr_status_t (*cleanup)(void*)); /** * Send data over a network. @@ -461,7 +461,7 @@ APR_DECLARE(apr_status_t) apr_socket_data_set(apr_socket_t *sock, void *data, * @remark *
      * This functions acts like a blocking write by default.  To change 
    - * this behavior, use apr_socket_timeout_set() or the APR_SO_NONBLOCK
    + * this behavior, use fspr_socket_timeout_set() or the APR_SO_NONBLOCK
      * socket option.
      *
      * It is possible for both bytes to be sent and an error to be returned.
    @@ -469,8 +469,8 @@ APR_DECLARE(apr_status_t) apr_socket_data_set(apr_socket_t *sock, void *data,
      * APR_EINTR is never returned.
      * 
    */ -APR_DECLARE(apr_status_t) apr_socket_send(apr_socket_t *sock, const char *buf, - apr_size_t *len); +APR_DECLARE(fspr_status_t) fspr_socket_send(fspr_socket_t *sock, const char *buf, + fspr_size_t *len); /** * Send multiple packets of data over a network. @@ -481,7 +481,7 @@ APR_DECLARE(apr_status_t) apr_socket_send(apr_socket_t *sock, const char *buf, * @remark *
      * This functions acts like a blocking write by default.  To change 
    - * this behavior, use apr_socket_timeout_set() or the APR_SO_NONBLOCK
    + * this behavior, use fspr_socket_timeout_set() or the APR_SO_NONBLOCK
      * socket option.
      * The number of bytes actually sent is stored in argument 3.
      *
    @@ -490,34 +490,34 @@ APR_DECLARE(apr_status_t) apr_socket_send(apr_socket_t *sock, const char *buf,
      * APR_EINTR is never returned.
      * 
    */ -APR_DECLARE(apr_status_t) apr_socket_sendv(apr_socket_t *sock, +APR_DECLARE(fspr_status_t) fspr_socket_sendv(fspr_socket_t *sock, const struct iovec *vec, - apr_int32_t nvec, apr_size_t *len); + fspr_int32_t nvec, fspr_size_t *len); /** * @param sock The socket to send from - * @param where The apr_sockaddr_t describing where to send the data + * @param where The fspr_sockaddr_t describing where to send the data * @param flags The flags to use * @param buf The data to send * @param len The length of the data to send */ -APR_DECLARE(apr_status_t) apr_socket_sendto(apr_socket_t *sock, - apr_sockaddr_t *where, - apr_int32_t flags, const char *buf, - apr_size_t *len); +APR_DECLARE(fspr_status_t) fspr_socket_sendto(fspr_socket_t *sock, + fspr_sockaddr_t *where, + fspr_int32_t flags, const char *buf, + fspr_size_t *len); /** - * @param from The apr_sockaddr_t to fill in the recipient info + * @param from The fspr_sockaddr_t to fill in the recipient info * @param sock The socket to use * @param flags The flags to use * @param buf The buffer to use * @param len The length of the available buffer */ -APR_DECLARE(apr_status_t) apr_socket_recvfrom(apr_sockaddr_t *from, - apr_socket_t *sock, - apr_int32_t flags, char *buf, - apr_size_t *len); +APR_DECLARE(fspr_status_t) fspr_socket_recvfrom(fspr_sockaddr_t *from, + fspr_socket_t *sock, + fspr_int32_t flags, char *buf, + fspr_size_t *len); #if APR_HAS_SENDFILE || defined(DOXYGEN) @@ -533,18 +533,18 @@ APR_DECLARE(apr_status_t) apr_socket_recvfrom(apr_sockaddr_t *from, * including headers, file, and trailers * @param flags APR flags that are mapped to OS specific flags * @remark This functions acts like a blocking write by default. To change - * this behavior, use apr_socket_timeout_set() or the + * this behavior, use fspr_socket_timeout_set() or the * APR_SO_NONBLOCK socket option. * The number of bytes actually sent is stored in the len parameter. * The offset parameter is passed by reference for no reason; its - * value will never be modified by the apr_socket_sendfile() function. + * value will never be modified by the fspr_socket_sendfile() function. */ -APR_DECLARE(apr_status_t) apr_socket_sendfile(apr_socket_t *sock, - apr_file_t *file, - apr_hdtr_t *hdtr, - apr_off_t *offset, - apr_size_t *len, - apr_int32_t flags); +APR_DECLARE(fspr_status_t) fspr_socket_sendfile(fspr_socket_t *sock, + fspr_file_t *file, + fspr_hdtr_t *hdtr, + fspr_off_t *offset, + fspr_size_t *len, + fspr_int32_t flags); #endif /* APR_HAS_SENDFILE */ @@ -557,7 +557,7 @@ APR_DECLARE(apr_status_t) apr_socket_sendfile(apr_socket_t *sock, * @remark *
      * This functions acts like a blocking read by default.  To change 
    - * this behavior, use apr_socket_timeout_set() or the APR_SO_NONBLOCK
    + * this behavior, use fspr_socket_timeout_set() or the APR_SO_NONBLOCK
      * socket option.
      * The number of bytes actually received is stored in argument 3.
      *
    @@ -567,8 +567,8 @@ APR_DECLARE(apr_status_t) apr_socket_sendfile(apr_socket_t *sock,
      * APR_EINTR is never returned.
      * 
    */ -APR_DECLARE(apr_status_t) apr_socket_recv(apr_socket_t *sock, - char *buf, apr_size_t *len); +APR_DECLARE(fspr_status_t) fspr_socket_recv(fspr_socket_t *sock, + char *buf, fspr_size_t *len); /** * Setup socket options for the specified socket @@ -592,8 +592,8 @@ APR_DECLARE(apr_status_t) apr_socket_recv(apr_socket_t *sock, * * @param on Value for the option. */ -APR_DECLARE(apr_status_t) apr_socket_opt_set(apr_socket_t *sock, - apr_int32_t opt, apr_int32_t on); +APR_DECLARE(fspr_status_t) fspr_socket_opt_set(fspr_socket_t *sock, + fspr_int32_t opt, fspr_int32_t on); /** * Setup socket timeout for the specified socket @@ -606,8 +606,8 @@ APR_DECLARE(apr_status_t) apr_socket_opt_set(apr_socket_t *sock, * t < 0 -- read and write calls block * */ -APR_DECLARE(apr_status_t) apr_socket_timeout_set(apr_socket_t *sock, - apr_interval_time_t t); +APR_DECLARE(fspr_status_t) fspr_socket_timeout_set(fspr_socket_t *sock, + fspr_interval_time_t t); /** * Query socket options for the specified socket @@ -628,14 +628,14 @@ APR_DECLARE(apr_status_t) apr_socket_timeout_set(apr_socket_t *sock, * * @param on Socket option returned on the call. */ -APR_DECLARE(apr_status_t) apr_socket_opt_get(apr_socket_t *sock, - apr_int32_t opt, apr_int32_t *on); +APR_DECLARE(fspr_status_t) fspr_socket_opt_get(fspr_socket_t *sock, + fspr_int32_t opt, fspr_int32_t *on); /** * Get Socket fd for the socket passed * @param sock The socket to quesry for the socket fd */ -APR_DECLARE(int) apr_socket_fd_get(apr_socket_t *sock); +APR_DECLARE(int) fspr_socket_fd_get(fspr_socket_t *sock); /** @@ -643,8 +643,8 @@ APR_DECLARE(int) apr_socket_fd_get(apr_socket_t *sock); * @param sock The socket to query * @param t Socket timeout returned from the query. */ -APR_DECLARE(apr_status_t) apr_socket_timeout_get(apr_socket_t *sock, - apr_interval_time_t *t); +APR_DECLARE(fspr_status_t) fspr_socket_timeout_get(fspr_socket_t *sock, + fspr_interval_time_t *t); /** * Query the specified socket if at the OOB/Urgent data mark @@ -652,28 +652,28 @@ APR_DECLARE(apr_status_t) apr_socket_timeout_get(apr_socket_t *sock, * @param atmark Is set to true if socket is at the OOB/urgent mark, * otherwise is set to false. */ -APR_DECLARE(apr_status_t) apr_socket_atmark(apr_socket_t *sock, +APR_DECLARE(fspr_status_t) fspr_socket_atmark(fspr_socket_t *sock, int *atmark); /** - * Return an apr_sockaddr_t from an apr_socket_t - * @param sa The returned apr_sockaddr_t. - * @param which Which interface do we want the apr_sockaddr_t for? + * Return an fspr_sockaddr_t from an fspr_socket_t + * @param sa The returned fspr_sockaddr_t. + * @param which Which interface do we want the fspr_sockaddr_t for? * @param sock The socket to use */ -APR_DECLARE(apr_status_t) apr_socket_addr_get(apr_sockaddr_t **sa, - apr_interface_e which, - apr_socket_t *sock); +APR_DECLARE(fspr_status_t) fspr_socket_addr_get(fspr_sockaddr_t **sa, + fspr_interface_e which, + fspr_socket_t *sock); /** * Return the IP address (in numeric address string format) in * an APR socket address. APR will allocate storage for the IP address - * string from the pool of the apr_sockaddr_t. + * string from the pool of the fspr_sockaddr_t. * @param addr The IP address. * @param sockaddr The socket address to reference. */ -APR_DECLARE(apr_status_t) apr_sockaddr_ip_get(char **addr, - apr_sockaddr_t *sockaddr); +APR_DECLARE(fspr_status_t) fspr_sockaddr_ip_get(char **addr, + fspr_sockaddr_t *sockaddr); /** * See if the IP addresses in two APR socket addresses are @@ -685,23 +685,23 @@ APR_DECLARE(apr_status_t) apr_sockaddr_ip_get(char **addr, * @remark The return value will be non-zero if the addresses * are equivalent. */ -APR_DECLARE(int) apr_sockaddr_equal(const apr_sockaddr_t *addr1, - const apr_sockaddr_t *addr2); +APR_DECLARE(int) fspr_sockaddr_equal(const fspr_sockaddr_t *addr1, + const fspr_sockaddr_t *addr2); /** * Return the type of the socket. * @param sock The socket to query. * @param type The returned type (e.g., SOCK_STREAM). */ -APR_DECLARE(apr_status_t) apr_socket_type_get(apr_socket_t *sock, +APR_DECLARE(fspr_status_t) fspr_socket_type_get(fspr_socket_t *sock, int *type); /** - * Given an apr_sockaddr_t and a service name, set the port for the service - * @param sockaddr The apr_sockaddr_t that will have its port set + * Given an fspr_sockaddr_t and a service name, set the port for the service + * @param sockaddr The fspr_sockaddr_t that will have its port set * @param servname The name of the service you wish to use */ -APR_DECLARE(apr_status_t) apr_getservbyname(apr_sockaddr_t *sockaddr, +APR_DECLARE(fspr_status_t) fspr_getservbyname(fspr_sockaddr_t *sockaddr, const char *servname); /** * Build an ip-subnet representation from an IP address and optional netmask or @@ -711,19 +711,19 @@ APR_DECLARE(apr_status_t) apr_getservbyname(apr_sockaddr_t *sockaddr, * @param mask_or_numbits The input netmask or number-of-bits string, or NULL * @param p The pool to allocate from */ -APR_DECLARE(apr_status_t) apr_ipsubnet_create(apr_ipsubnet_t **ipsub, +APR_DECLARE(fspr_status_t) fspr_ipsubnet_create(fspr_ipsubnet_t **ipsub, const char *ipstr, const char *mask_or_numbits, - apr_pool_t *p); + fspr_pool_t *p); /** - * Test the IP address in an apr_sockaddr_t against a pre-built ip-subnet + * Test the IP address in an fspr_sockaddr_t against a pre-built ip-subnet * representation. * @param ipsub The ip-subnet representation * @param sa The socket address to test * @return non-zero if the socket address is within the subnet, 0 otherwise */ -APR_DECLARE(int) apr_ipsubnet_test(apr_ipsubnet_t *ipsub, apr_sockaddr_t *sa); +APR_DECLARE(int) fspr_ipsubnet_test(fspr_ipsubnet_t *ipsub, fspr_sockaddr_t *sa); #if APR_HAS_SO_ACCEPTFILTER || defined(DOXYGEN) /** @@ -733,7 +733,7 @@ APR_DECLARE(int) apr_ipsubnet_test(apr_ipsubnet_t *ipsub, apr_sockaddr_t *sa); * @param args Any extra args to the accept filter. Passing NULL here removes * the accept filter. */ -apr_status_t apr_socket_accept_filter(apr_socket_t *sock, char *name, +fspr_status_t fspr_socket_accept_filter(fspr_socket_t *sock, char *name, char *args); #endif @@ -742,7 +742,7 @@ apr_status_t apr_socket_accept_filter(apr_socket_t *sock, char *name, * @param sock The socket to query. * @param protocol The returned protocol (e.g., APR_PROTO_TCP). */ -APR_DECLARE(apr_status_t) apr_socket_protocol_get(apr_socket_t *sock, +APR_DECLARE(fspr_status_t) fspr_socket_protocol_get(fspr_socket_t *sock, int *protocol); /** @@ -761,7 +761,7 @@ APR_DECLARE_INHERIT_SET(socket); APR_DECLARE_INHERIT_UNSET(socket); /** - * @defgroup apr_mcast IP Multicast + * @defgroup fspr_mcast IP Multicast * @{ */ @@ -774,14 +774,14 @@ APR_DECLARE_INHERIT_UNSET(socket); * @param source Source Address to accept transmissions from (non-NULL * implies Source-Specific Multicast) */ -APR_DECLARE(apr_status_t) apr_mcast_join(apr_socket_t *sock, - apr_sockaddr_t *join, - apr_sockaddr_t *iface, - apr_sockaddr_t *source); +APR_DECLARE(fspr_status_t) fspr_mcast_join(fspr_socket_t *sock, + fspr_sockaddr_t *join, + fspr_sockaddr_t *iface, + fspr_sockaddr_t *source); /** * Leave a Multicast Group. All arguments must be the same as - * apr_mcast_join. + * fspr_mcast_join. * @param sock The socket to leave a multicast group * @param addr The address of the multicast group to leave * @param iface Address of the interface to use. If NULL is passed, the @@ -789,10 +789,10 @@ APR_DECLARE(apr_status_t) apr_mcast_join(apr_socket_t *sock, * @param source Source Address to accept transmissions from (non-NULL * implies Source-Specific Multicast) */ -APR_DECLARE(apr_status_t) apr_mcast_leave(apr_socket_t *sock, - apr_sockaddr_t *addr, - apr_sockaddr_t *iface, - apr_sockaddr_t *source); +APR_DECLARE(fspr_status_t) fspr_mcast_leave(fspr_socket_t *sock, + fspr_sockaddr_t *addr, + fspr_sockaddr_t *iface, + fspr_sockaddr_t *source); /** * Set the Multicast Time to Live (ttl) for a multicast transmission. @@ -801,16 +801,16 @@ APR_DECLARE(apr_status_t) apr_mcast_leave(apr_socket_t *sock, * @remark If the TTL is 0, packets will only be seen by sockets on * the local machine, and only when multicast loopback is enabled. */ -APR_DECLARE(apr_status_t) apr_mcast_hops(apr_socket_t *sock, - apr_byte_t ttl); +APR_DECLARE(fspr_status_t) fspr_mcast_hops(fspr_socket_t *sock, + fspr_byte_t ttl); /** * Toggle IP Multicast Loopback * @param sock The socket to set multicast loopback * @param opt 0=disable, 1=enable */ -APR_DECLARE(apr_status_t) apr_mcast_loopback(apr_socket_t *sock, - apr_byte_t opt); +APR_DECLARE(fspr_status_t) fspr_mcast_loopback(fspr_socket_t *sock, + fspr_byte_t opt); /** @@ -818,8 +818,8 @@ APR_DECLARE(apr_status_t) apr_mcast_loopback(apr_socket_t *sock, * @param sock The socket to set the multicast interface on * @param iface Address of the interface to use for Multicast */ -APR_DECLARE(apr_status_t) apr_mcast_interface(apr_socket_t *sock, - apr_sockaddr_t *iface); +APR_DECLARE(fspr_status_t) fspr_mcast_interface(fspr_socket_t *sock, + fspr_sockaddr_t *iface); /** @} */ diff --git a/libs/apr/include/apr_poll.h b/libs/apr/include/fspr_poll.h similarity index 65% rename from libs/apr/include/apr_poll.h rename to libs/apr/include/fspr_poll.h index c5266495f9d..a3fa5c42f2b 100644 --- a/libs/apr/include/apr_poll.h +++ b/libs/apr/include/fspr_poll.h @@ -17,15 +17,15 @@ #ifndef APR_POLL_H #define APR_POLL_H /** - * @file apr_poll.h + * @file fspr_poll.h * @brief APR Poll interface */ -#include "apr.h" -#include "apr_pools.h" -#include "apr_errno.h" -#include "apr_inherit.h" -#include "apr_file_io.h" -#include "apr_network_io.h" +#include "fspr.h" +#include "fspr_pools.h" +#include "fspr_errno.h" +#include "fspr_inherit.h" +#include "fspr_file_io.h" +#include "fspr_network_io.h" #if APR_HAVE_NETINET_IN_H #include @@ -36,7 +36,7 @@ extern "C" { #endif /* __cplusplus */ /** - * @defgroup apr_poll Poll Routines + * @defgroup fspr_poll Poll Routines * @ingroup APR * @{ */ @@ -56,30 +56,30 @@ extern "C" { */ #define APR_POLLSET_THREADSAFE 0x001 /**< Adding or Removing a Descriptor is thread safe */ -/** Used in apr_pollfd_t to determine what the apr_descriptor is */ +/** Used in fspr_pollfd_t to determine what the fspr_descriptor is */ typedef enum { APR_NO_DESC, /**< nothing here */ APR_POLL_SOCKET, /**< descriptor refers to a socket */ APR_POLL_FILE, /**< descriptor refers to a file */ APR_POLL_LASTDESC /**< descriptor is the last one in the list */ -} apr_datatype_e ; +} fspr_datatype_e ; /** Union of either an APR file or socket. */ typedef union { - apr_file_t *f; /**< file */ - apr_socket_t *s; /**< socket */ -} apr_descriptor; + fspr_file_t *f; /**< file */ + fspr_socket_t *s; /**< socket */ +} fspr_descriptor; -/** @see apr_pollfd_t */ -typedef struct apr_pollfd_t apr_pollfd_t; +/** @see fspr_pollfd_t */ +typedef struct fspr_pollfd_t fspr_pollfd_t; /** Poll descriptor set. */ -struct apr_pollfd_t { - apr_pool_t *p; /**< associated pool */ - apr_datatype_e desc_type; /**< descriptor type */ - apr_int16_t reqevents; /**< requested events */ - apr_int16_t rtnevents; /**< returned events */ - apr_descriptor desc; /**< @see apr_descriptor */ +struct fspr_pollfd_t { + fspr_pool_t *p; /**< associated pool */ + fspr_datatype_e desc_type; /**< descriptor type */ + fspr_int16_t reqevents; /**< requested events */ + fspr_int16_t rtnevents; /**< returned events */ + fspr_descriptor desc; /**< @see fspr_descriptor */ void *client_data; /**< allows app to associate context */ }; @@ -89,7 +89,7 @@ struct apr_pollfd_t { */ /** Opaque structure used for pollset API */ -typedef struct apr_pollset_t apr_pollset_t; +typedef struct fspr_pollset_t fspr_pollset_t; /** * Setup a pollset object @@ -100,21 +100,21 @@ typedef struct apr_pollset_t apr_pollset_t; * * @remark If flags equals APR_POLLSET_THREADSAFE, then a pollset is * created on which it is safe to make concurrent calls to - * apr_pollset_add(), apr_pollset_remove() and apr_pollset_poll() from + * fspr_pollset_add(), fspr_pollset_remove() and fspr_pollset_poll() from * separate threads. This feature is only supported on some - * platforms; the apr_pollset_create() call will fail with + * platforms; the fspr_pollset_create() call will fail with * APR_ENOTIMPL on platforms where it is not supported. */ -APR_DECLARE(apr_status_t) apr_pollset_create(apr_pollset_t **pollset, - apr_uint32_t size, - apr_pool_t *p, - apr_uint32_t flags); +APR_DECLARE(fspr_status_t) fspr_pollset_create(fspr_pollset_t **pollset, + fspr_uint32_t size, + fspr_pool_t *p, + fspr_uint32_t flags); /** * Destroy a pollset object * @param pollset The pollset to destroy */ -APR_DECLARE(apr_status_t) apr_pollset_destroy(apr_pollset_t *pollset); +APR_DECLARE(fspr_status_t) fspr_pollset_destroy(fspr_pollset_t *pollset); /** * Add a socket or file descriptor to a pollset @@ -122,36 +122,36 @@ APR_DECLARE(apr_status_t) apr_pollset_destroy(apr_pollset_t *pollset); * @param descriptor The descriptor to add * @remark If you set client_data in the descriptor, that value * will be returned in the client_data field whenever this - * descriptor is signalled in apr_pollset_poll(). + * descriptor is signalled in fspr_pollset_poll(). * @remark If the pollset has been created with APR_POLLSET_THREADSAFE - * and thread T1 is blocked in a call to apr_pollset_poll() for - * this same pollset that is being modified via apr_pollset_add() - * in thread T2, the currently executing apr_pollset_poll() call in + * and thread T1 is blocked in a call to fspr_pollset_poll() for + * this same pollset that is being modified via fspr_pollset_add() + * in thread T2, the currently executing fspr_pollset_poll() call in * T1 will either: (1) automatically include the newly added descriptor * in the set of descriptors it is watching or (2) return immediately * with APR_EINTR. Option (1) is recommended, but option (2) is * allowed for implementations where option (1) is impossible * or impractical. */ -APR_DECLARE(apr_status_t) apr_pollset_add(apr_pollset_t *pollset, - const apr_pollfd_t *descriptor); +APR_DECLARE(fspr_status_t) fspr_pollset_add(fspr_pollset_t *pollset, + const fspr_pollfd_t *descriptor); /** * Remove a descriptor from a pollset * @param pollset The pollset from which to remove the descriptor * @param descriptor The descriptor to remove * @remark If the pollset has been created with APR_POLLSET_THREADSAFE - * and thread T1 is blocked in a call to apr_pollset_poll() for - * this same pollset that is being modified via apr_pollset_remove() - * in thread T2, the currently executing apr_pollset_poll() call in + * and thread T1 is blocked in a call to fspr_pollset_poll() for + * this same pollset that is being modified via fspr_pollset_remove() + * in thread T2, the currently executing fspr_pollset_poll() call in * T1 will either: (1) automatically exclude the newly added descriptor * in the set of descriptors it is watching or (2) return immediately * with APR_EINTR. Option (1) is recommended, but option (2) is * allowed for implementations where option (1) is impossible * or impractical. */ -APR_DECLARE(apr_status_t) apr_pollset_remove(apr_pollset_t *pollset, - const apr_pollfd_t *descriptor); +APR_DECLARE(fspr_status_t) fspr_pollset_remove(fspr_pollset_t *pollset, + const fspr_pollfd_t *descriptor); /** * Block for activity on the descriptor(s) in a pollset @@ -160,10 +160,10 @@ APR_DECLARE(apr_status_t) apr_pollset_remove(apr_pollset_t *pollset, * @param num Number of signalled descriptors (output parameter) * @param descriptors Array of signalled descriptors (output parameter) */ -APR_DECLARE(apr_status_t) apr_pollset_poll(apr_pollset_t *pollset, - apr_interval_time_t timeout, - apr_int32_t *num, - const apr_pollfd_t **descriptors); +APR_DECLARE(fspr_status_t) fspr_pollset_poll(fspr_pollset_t *pollset, + fspr_interval_time_t timeout, + fspr_int32_t *num, + const fspr_pollfd_t **descriptors); /** @@ -178,12 +178,12 @@ APR_DECLARE(apr_status_t) apr_pollset_poll(apr_pollset_t *pollset, * @remark The number of descriptors signalled is returned in the third argument. * This is a blocking call, and it will not return until either a * descriptor has been signalled, or the timeout has expired. - * @remark The rtnevents field in the apr_pollfd_t array will only be filled- + * @remark The rtnevents field in the fspr_pollfd_t array will only be filled- * in if the return value is APR_SUCCESS. */ -APR_DECLARE(apr_status_t) apr_poll(apr_pollfd_t *aprset, apr_int32_t numsock, - apr_int32_t *nsds, - apr_interval_time_t timeout); +APR_DECLARE(fspr_status_t) fspr_poll(fspr_pollfd_t *aprset, fspr_int32_t numsock, + fspr_int32_t *nsds, + fspr_interval_time_t timeout); /** @} */ diff --git a/libs/apr/include/apr_pools.h b/libs/apr/include/fspr_pools.h similarity index 70% rename from libs/apr/include/apr_pools.h rename to libs/apr/include/fspr_pools.h index 9b7f15685af..5764b96d162 100644 --- a/libs/apr/include/apr_pools.h +++ b/libs/apr/include/fspr_pools.h @@ -18,7 +18,7 @@ #define APR_POOLS_H /** - * @file apr_pools.h + * @file fspr_pools.h * @brief APR memory allocation * * Resource allocation routines... @@ -30,61 +30,61 @@ * Instead, we maintain pools, and allocate items (both memory and I/O * handlers) from the pools --- currently there are two, one for per * transaction info, and one for config info. When a transaction is over, - * we can delete everything in the per-transaction apr_pool_t without fear, + * we can delete everything in the per-transaction fspr_pool_t without fear, * and without thinking too hard about it either. */ -#include "apr.h" -#include "apr_errno.h" -#include "apr_general.h" /* for APR_STRINGIFY */ +#include "fspr.h" +#include "fspr_errno.h" +#include "fspr_general.h" /* for APR_STRINGIFY */ #define APR_WANT_MEMFUNC /**< for no good reason? */ -#include "apr_want.h" +#include "fspr_want.h" #ifdef __cplusplus extern "C" { #endif /** - * @defgroup apr_pools Memory Pool Functions + * @defgroup fspr_pools Memory Pool Functions * @ingroup APR * @{ */ /** The fundamental pool type */ -typedef struct apr_pool_t apr_pool_t; +typedef struct fspr_pool_t fspr_pool_t; /** - * Declaration helper macro to construct apr_foo_pool_get()s. + * Declaration helper macro to construct fspr_foo_pool_get()s. * * This standardized macro is used by opaque (APR) data types to return - * the apr_pool_t that is associated with the data type. + * the fspr_pool_t that is associated with the data type. * * APR_POOL_DECLARE_ACCESSOR() is used in a header file to declare the * accessor function. A typical usage and result would be: *
      *    APR_POOL_DECLARE_ACCESSOR(file);
      * becomes:
    - *    APR_DECLARE(apr_pool_t *) apr_file_pool_get(apr_file_t *ob);
    + *    APR_DECLARE(fspr_pool_t *) fspr_file_pool_get(fspr_file_t *ob);
      * 
    * @remark Doxygen unwraps this macro (via doxygen.conf) to provide - * actual help for each specific occurance of apr_foo_pool_get. + * actual help for each specific occurance of fspr_foo_pool_get. * @remark the linkage is specified for APR. It would be possible to expand * the macros to support other linkages. */ #define APR_POOL_DECLARE_ACCESSOR(type) \ - APR_DECLARE(apr_pool_t *) apr_##type##_pool_get \ - (const apr_##type##_t *the##type) + APR_DECLARE(fspr_pool_t *) fspr_##type##_pool_get \ + (const fspr_##type##_t *the##type) /** - * Implementation helper macro to provide apr_foo_pool_get()s. + * Implementation helper macro to provide fspr_foo_pool_get()s. * * In the implementation, the APR_POOL_IMPLEMENT_ACCESSOR() is used to * actually define the function. It assumes the field is named "pool". */ #define APR_POOL_IMPLEMENT_ACCESSOR(type) \ - APR_DECLARE(apr_pool_t *) apr_##type##_pool_get \ - (const apr_##type##_t *the##type) \ + APR_DECLARE(fspr_pool_t *) fspr_##type##_pool_get \ + (const fspr_##type##_t *the##type) \ { return the##type->pool; } @@ -116,7 +116,7 @@ typedef struct apr_pool_t apr_pool_t; * combination with the verbose flag above, * it will output OWNER in such an event * prior to aborting. Use the debug - * function apr_pool_owner_set() to switch + * function fspr_pool_owner_set() to switch * a pools ownership. * * When no debug level was specified, assume general debug mode. @@ -139,7 +139,7 @@ typedef struct apr_pool_t apr_pool_t; /** A function that is called when allocation fails. */ -typedef int (*apr_abortfunc_t)(int retcode); +typedef int (*fspr_abortfunc_t)(int retcode); /* * APR memory structure manipulators (pools, tables, and arrays). @@ -152,74 +152,74 @@ typedef int (*apr_abortfunc_t)(int retcode); /** * Setup all of the internal structures required to use pools * @remark Programs do NOT need to call this directly. APR will call this - * automatically from apr_initialize. + * automatically from fspr_initialize. * @internal */ -APR_DECLARE(apr_status_t) apr_pool_initialize(void); +APR_DECLARE(fspr_status_t) fspr_pool_initialize(void); /** * Tear down all of the internal structures required to use pools * @remark Programs do NOT need to call this directly. APR will call this - * automatically from apr_terminate. + * automatically from fspr_terminate. * @internal */ -APR_DECLARE(void) apr_pool_terminate(void); +APR_DECLARE(void) fspr_pool_terminate(void); /* * Pool creation/destruction */ -#include "apr_allocator.h" +#include "fspr_allocator.h" /** * Create a new pool. * @param newpool The pool we have just created. * @param parent The parent pool. If this is NULL, the new pool is a root * pool. If it is non-NULL, the new pool will inherit all - * of its parent pool's attributes, except the apr_pool_t will + * of its parent pool's attributes, except the fspr_pool_t will * be a sub-pool. * @param abort_fn A function to use if the pool cannot allocate more memory. * @param allocator The allocator to use with the new pool. If NULL the * allocator of the parent pool will be used. */ -APR_DECLARE(apr_status_t) apr_pool_create_ex(apr_pool_t **newpool, - apr_pool_t *parent, - apr_abortfunc_t abort_fn, - apr_allocator_t *allocator); +APR_DECLARE(fspr_status_t) fspr_pool_create_ex(fspr_pool_t **newpool, + fspr_pool_t *parent, + fspr_abortfunc_t abort_fn, + fspr_allocator_t *allocator); /** - * Debug version of apr_pool_create_ex. - * @param newpool @see apr_pool_create. - * @param parent @see apr_pool_create. - * @param abort_fn @see apr_pool_create. - * @param allocator @see apr_pool_create. + * Debug version of fspr_pool_create_ex. + * @param newpool @see fspr_pool_create. + * @param parent @see fspr_pool_create. + * @param abort_fn @see fspr_pool_create. + * @param allocator @see fspr_pool_create. * @param file_line Where the function is called from. * This is usually APR_POOL__FILE_LINE__. * @remark Only available when APR_POOL_DEBUG is defined. - * Call this directly if you have you apr_pool_create_ex + * Call this directly if you have you fspr_pool_create_ex * calls in a wrapper function and wish to override * the file_line argument to reflect the caller of * your wrapper function. If you do not have - * apr_pool_create_ex in a wrapper, trust the macro - * and don't call apr_pool_create_ex_debug directly. + * fspr_pool_create_ex in a wrapper, trust the macro + * and don't call fspr_pool_create_ex_debug directly. */ -APR_DECLARE(apr_status_t) apr_pool_create_ex_debug(apr_pool_t **newpool, - apr_pool_t *parent, - apr_abortfunc_t abort_fn, - apr_allocator_t *allocator, +APR_DECLARE(fspr_status_t) fspr_pool_create_ex_debug(fspr_pool_t **newpool, + fspr_pool_t *parent, + fspr_abortfunc_t abort_fn, + fspr_allocator_t *allocator, const char *file_line); #if APR_POOL_DEBUG -#define apr_pool_create_ex(newpool, parent, abort_fn, allocator) \ - apr_pool_create_ex_debug(newpool, parent, abort_fn, allocator, \ +#define fspr_pool_create_ex(newpool, parent, abort_fn, allocator) \ + fspr_pool_create_ex_debug(newpool, parent, abort_fn, allocator, \ APR_POOL__FILE_LINE__) -APR_DECLARE(int) apr_pool_walk_tree_debug(apr_pool_t *pool, - int(*fn)(apr_pool_t *pool, void *data), +APR_DECLARE(int) fspr_pool_walk_tree_debug(fspr_pool_t *pool, + int(*fn)(fspr_pool_t *pool, void *data), void *data); -APR_DECLARE(void) apr_pool_get_stats(apr_pool_t *pool, unsigned int *alloc, unsigned int *total_alloc, unsigned int *clear); +APR_DECLARE(void) fspr_pool_get_stats(fspr_pool_t *pool, unsigned int *alloc, unsigned int *total_alloc, unsigned int *clear); #endif /** @@ -227,20 +227,20 @@ APR_DECLARE(void) apr_pool_get_stats(apr_pool_t *pool, unsigned int *alloc, unsi * @param newpool The pool we have just created. * @param parent The parent pool. If this is NULL, the new pool is a root * pool. If it is non-NULL, the new pool will inherit all - * of its parent pool's attributes, except the apr_pool_t will + * of its parent pool's attributes, except the fspr_pool_t will * be a sub-pool. */ #if defined(DOXYGEN) -APR_DECLARE(apr_status_t) apr_pool_create(apr_pool_t **newpool, - apr_pool_t *parent); +APR_DECLARE(fspr_status_t) fspr_pool_create(fspr_pool_t **newpool, + fspr_pool_t *parent); #else #if APR_POOL_DEBUG -#define apr_pool_create(newpool, parent) \ - apr_pool_create_ex_debug(newpool, parent, NULL, NULL, \ +#define fspr_pool_create(newpool, parent) \ + fspr_pool_create_ex_debug(newpool, parent, NULL, NULL, \ APR_POOL__FILE_LINE__) #else -#define apr_pool_create(newpool, parent) \ - apr_pool_create_ex(newpool, parent, NULL, NULL) +#define fspr_pool_create(newpool, parent) \ + fspr_pool_create_ex(newpool, parent, NULL, NULL) #endif #endif @@ -248,7 +248,7 @@ APR_DECLARE(apr_status_t) apr_pool_create(apr_pool_t **newpool, * Find the pools allocator * @param pool The pool to get the allocator from. */ -APR_DECLARE(apr_allocator_t *) apr_pool_allocator_get(apr_pool_t *pool); +APR_DECLARE(fspr_allocator_t *) fspr_pool_allocator_get(fspr_pool_t *pool); /** * Clear all memory in the pool and run all the cleanups. This also destroys all @@ -256,58 +256,58 @@ APR_DECLARE(apr_allocator_t *) apr_pool_allocator_get(apr_pool_t *pool); * @param p The pool to clear * @remark This does not actually free the memory, it just allows the pool * to re-use this memory for the next allocation. - * @see apr_pool_destroy() + * @see fspr_pool_destroy() */ -APR_DECLARE(void) apr_pool_clear(apr_pool_t *p); +APR_DECLARE(void) fspr_pool_clear(fspr_pool_t *p); /** - * Debug version of apr_pool_clear. - * @param p See: apr_pool_clear. + * Debug version of fspr_pool_clear. + * @param p See: fspr_pool_clear. * @param file_line Where the function is called from. * This is usually APR_POOL__FILE_LINE__. * @remark Only available when APR_POOL_DEBUG is defined. - * Call this directly if you have you apr_pool_clear + * Call this directly if you have you fspr_pool_clear * calls in a wrapper function and wish to override * the file_line argument to reflect the caller of * your wrapper function. If you do not have - * apr_pool_clear in a wrapper, trust the macro - * and don't call apr_pool_destroy_clear directly. + * fspr_pool_clear in a wrapper, trust the macro + * and don't call fspr_pool_destroy_clear directly. */ -APR_DECLARE(void) apr_pool_clear_debug(apr_pool_t *p, +APR_DECLARE(void) fspr_pool_clear_debug(fspr_pool_t *p, const char *file_line); #if APR_POOL_DEBUG -#define apr_pool_clear(p) \ - apr_pool_clear_debug(p, APR_POOL__FILE_LINE__) +#define fspr_pool_clear(p) \ + fspr_pool_clear_debug(p, APR_POOL__FILE_LINE__) #endif /** - * Destroy the pool. This takes similar action as apr_pool_clear() and then + * Destroy the pool. This takes similar action as fspr_pool_clear() and then * frees all the memory. * @param p The pool to destroy * @remark This will actually free the memory */ -APR_DECLARE(void) apr_pool_destroy(apr_pool_t *p); +APR_DECLARE(void) fspr_pool_destroy(fspr_pool_t *p); /** - * Debug version of apr_pool_destroy. - * @param p See: apr_pool_destroy. + * Debug version of fspr_pool_destroy. + * @param p See: fspr_pool_destroy. * @param file_line Where the function is called from. * This is usually APR_POOL__FILE_LINE__. * @remark Only available when APR_POOL_DEBUG is defined. - * Call this directly if you have you apr_pool_destroy + * Call this directly if you have you fspr_pool_destroy * calls in a wrapper function and wish to override * the file_line argument to reflect the caller of * your wrapper function. If you do not have - * apr_pool_destroy in a wrapper, trust the macro - * and don't call apr_pool_destroy_debug directly. + * fspr_pool_destroy in a wrapper, trust the macro + * and don't call fspr_pool_destroy_debug directly. */ -APR_DECLARE(void) apr_pool_destroy_debug(apr_pool_t *p, +APR_DECLARE(void) fspr_pool_destroy_debug(fspr_pool_t *p, const char *file_line); #if APR_POOL_DEBUG -#define apr_pool_destroy(p) \ - apr_pool_destroy_debug(p, APR_POOL__FILE_LINE__) +#define fspr_pool_destroy(p) \ + fspr_pool_destroy_debug(p, APR_POOL__FILE_LINE__) #endif @@ -321,22 +321,22 @@ APR_DECLARE(void) apr_pool_destroy_debug(apr_pool_t *p, * @param size The amount of memory to allocate * @return The allocated memory */ -APR_DECLARE(void *) apr_palloc(apr_pool_t *p, apr_size_t size); +APR_DECLARE(void *) fspr_palloc(fspr_pool_t *p, fspr_size_t size); /** - * Debug version of apr_palloc - * @param p See: apr_palloc - * @param size See: apr_palloc + * Debug version of fspr_palloc + * @param p See: fspr_palloc + * @param size See: fspr_palloc * @param file_line Where the function is called from. * This is usually APR_POOL__FILE_LINE__. - * @return See: apr_palloc + * @return See: fspr_palloc */ -APR_DECLARE(void *) apr_palloc_debug(apr_pool_t *p, apr_size_t size, +APR_DECLARE(void *) fspr_palloc_debug(fspr_pool_t *p, fspr_size_t size, const char *file_line); #if APR_POOL_DEBUG -#define apr_palloc(p, size) \ - apr_palloc_debug(p, size, APR_POOL__FILE_LINE__) +#define fspr_palloc(p, size) \ + fspr_palloc_debug(p, size, APR_POOL__FILE_LINE__) #endif /** @@ -346,25 +346,25 @@ APR_DECLARE(void *) apr_palloc_debug(apr_pool_t *p, apr_size_t size, * @return The allocated memory */ #if defined(DOXYGEN) -APR_DECLARE(void *) apr_pcalloc(apr_pool_t *p, apr_size_t size); +APR_DECLARE(void *) fspr_pcalloc(fspr_pool_t *p, fspr_size_t size); #elif !APR_POOL_DEBUG -#define apr_pcalloc(p, size) memset(apr_palloc(p, size), 0, size) +#define fspr_pcalloc(p, size) memset(fspr_palloc(p, size), 0, size) #endif /** - * Debug version of apr_pcalloc - * @param p See: apr_pcalloc - * @param size See: apr_pcalloc + * Debug version of fspr_pcalloc + * @param p See: fspr_pcalloc + * @param size See: fspr_pcalloc * @param file_line Where the function is called from. * This is usually APR_POOL__FILE_LINE__. - * @return See: apr_pcalloc + * @return See: fspr_pcalloc */ -APR_DECLARE(void *) apr_pcalloc_debug(apr_pool_t *p, apr_size_t size, +APR_DECLARE(void *) fspr_pcalloc_debug(fspr_pool_t *p, fspr_size_t size, const char *file_line); #if APR_POOL_DEBUG -#define apr_pcalloc(p, size) \ - apr_pcalloc_debug(p, size, APR_POOL__FILE_LINE__) +#define fspr_pcalloc(p, size) \ + fspr_pcalloc_debug(p, size, APR_POOL__FILE_LINE__) #endif @@ -380,22 +380,22 @@ APR_DECLARE(void *) apr_pcalloc_debug(apr_pool_t *p, apr_size_t size, * then APR will return an error and expect the calling program to * deal with the error accordingly. */ -APR_DECLARE(void) apr_pool_abort_set(apr_abortfunc_t abortfunc, - apr_pool_t *pool); +APR_DECLARE(void) fspr_pool_abort_set(fspr_abortfunc_t abortfunc, + fspr_pool_t *pool); /** * Get the abort function associated with the specified pool. * @param pool The pool for retrieving the abort function. * @return The abort function for the given pool. */ -APR_DECLARE(apr_abortfunc_t) apr_pool_abort_get(apr_pool_t *pool); +APR_DECLARE(fspr_abortfunc_t) fspr_pool_abort_get(fspr_pool_t *pool); /** * Get the parent pool of the specified pool. * @param pool The pool for retrieving the parent pool. * @return The parent of the given pool. */ -APR_DECLARE(apr_pool_t *) apr_pool_parent_get(apr_pool_t *pool); +APR_DECLARE(fspr_pool_t *) fspr_pool_parent_get(fspr_pool_t *pool); /** * Determine if pool a is an ancestor of pool b. @@ -405,17 +405,17 @@ APR_DECLARE(apr_pool_t *) apr_pool_parent_get(apr_pool_t *pool); * of all pools. * @remark if compiled with APR_POOL_DEBUG, this function will also * return true if A is a pool which has been guaranteed by the caller - * (using apr_pool_join) to have a lifetime at least as long as some + * (using fspr_pool_join) to have a lifetime at least as long as some * ancestor of pool B. */ -APR_DECLARE(int) apr_pool_is_ancestor(apr_pool_t *a, apr_pool_t *b); +APR_DECLARE(int) fspr_pool_is_ancestor(fspr_pool_t *a, fspr_pool_t *b); /** * Tag a pool (give it a name) * @param pool The pool to tag * @param tag The tag */ -APR_DECLARE(const char *) apr_pool_tag(apr_pool_t *pool, const char *tag); +APR_DECLARE(const char *) fspr_pool_tag(fspr_pool_t *pool, const char *tag); #if APR_HAS_THREADS /** @@ -424,8 +424,8 @@ APR_DECLARE(const char *) apr_pool_tag(apr_pool_t *pool, const char *tag); * @param mutex The mutex * @remark The mutex does not protect the destroy operation just the low level allocs. */ -APR_DECLARE(void) apr_pool_mutex_set(apr_pool_t *pool, - apr_thread_mutex_t *mutex); +APR_DECLARE(void) fspr_pool_mutex_set(fspr_pool_t *pool, + fspr_thread_mutex_t *mutex); #endif @@ -453,11 +453,11 @@ APR_DECLARE(void) apr_pool_mutex_set(apr_pool_t *pool, * */ -APR_DECLARE(apr_status_t) apr_pool_userdata_set( +APR_DECLARE(fspr_status_t) fspr_pool_userdata_set( const void *data, const char *key, - apr_status_t (*cleanup)(void *), - apr_pool_t *pool); + fspr_status_t (*cleanup)(void *), + fspr_pool_t *pool); /** * Set the data associated with the current pool @@ -465,24 +465,24 @@ APR_DECLARE(apr_status_t) apr_pool_userdata_set( * @param key The key to use for association * @param cleanup The cleanup program to use to cleanup the data (NULL if none) * @param pool The current pool - * @note same as apr_pool_userdata_set(), except that this version doesn't + * @note same as fspr_pool_userdata_set(), except that this version doesn't * make a copy of the key (this function is useful, for example, when * the key is a string literal) * @warning This should NOT be used if the key could change addresses by - * any means between the apr_pool_userdata_setn() call and a - * subsequent apr_pool_userdata_get() on that key, such as if a + * any means between the fspr_pool_userdata_setn() call and a + * subsequent fspr_pool_userdata_get() on that key, such as if a * static string is used as a userdata key in a DSO and the DSO could * be unloaded and reloaded between the _setn() and the _get(). You - * MUST use apr_pool_userdata_set() in such cases. + * MUST use fspr_pool_userdata_set() in such cases. * @warning More generally, the key and the data to be attached to the * pool should have a life span at least as long as the pool itself. * */ -APR_DECLARE(apr_status_t) apr_pool_userdata_setn( +APR_DECLARE(fspr_status_t) fspr_pool_userdata_setn( const void *data, const char *key, - apr_status_t (*cleanup)(void *), - apr_pool_t *pool); + fspr_status_t (*cleanup)(void *), + fspr_pool_t *pool); /** * Return the data associated with the current pool. @@ -490,8 +490,8 @@ APR_DECLARE(apr_status_t) apr_pool_userdata_setn( * @param key The key for the data to retrieve * @param pool The current pool. */ -APR_DECLARE(apr_status_t) apr_pool_userdata_get(void **data, const char *key, - apr_pool_t *pool); +APR_DECLARE(fspr_status_t) fspr_pool_userdata_get(void **data, const char *key, + fspr_pool_t *pool); /** @@ -517,11 +517,11 @@ APR_DECLARE(apr_status_t) apr_pool_userdata_get(void **data, const char *key, * @param child_cleanup The function to call when a child process is about * to exec - this function is called in the child, obviously! */ -APR_DECLARE(void) apr_pool_cleanup_register( - apr_pool_t *p, +APR_DECLARE(void) fspr_pool_cleanup_register( + fspr_pool_t *p, const void *data, - apr_status_t (*plain_cleanup)(void *), - apr_status_t (*child_cleanup)(void *)); + fspr_status_t (*plain_cleanup)(void *), + fspr_status_t (*child_cleanup)(void *)); /** * Remove a previously registered cleanup function. @@ -535,8 +535,8 @@ APR_DECLARE(void) apr_pool_cleanup_register( * @remarks For some strange reason only the plain_cleanup is handled by this * function */ -APR_DECLARE(void) apr_pool_cleanup_kill(apr_pool_t *p, const void *data, - apr_status_t (*cleanup)(void *)); +APR_DECLARE(void) fspr_pool_cleanup_kill(fspr_pool_t *p, const void *data, + fspr_status_t (*cleanup)(void *)); /** * Replace the child cleanup function of a previously registered cleanup. @@ -550,11 +550,11 @@ APR_DECLARE(void) apr_pool_cleanup_kill(apr_pool_t *p, const void *data, * @param plain_cleanup The plain cleanup function of the registered cleanup * @param child_cleanup The function to register as the child cleanup */ -APR_DECLARE(void) apr_pool_child_cleanup_set( - apr_pool_t *p, +APR_DECLARE(void) fspr_pool_child_cleanup_set( + fspr_pool_t *p, const void *data, - apr_status_t (*plain_cleanup)(void *), - apr_status_t (*child_cleanup)(void *)); + fspr_status_t (*plain_cleanup)(void *), + fspr_status_t (*child_cleanup)(void *)); /** * Run the specified cleanup function immediately and unregister it. @@ -567,19 +567,19 @@ APR_DECLARE(void) apr_pool_child_cleanup_set( * @param data The data to remove from cleanup * @param cleanup The function to remove from cleanup */ -APR_DECLARE(apr_status_t) apr_pool_cleanup_run( - apr_pool_t *p, +APR_DECLARE(fspr_status_t) fspr_pool_cleanup_run( + fspr_pool_t *p, void *data, - apr_status_t (*cleanup)(void *)); + fspr_status_t (*cleanup)(void *)); /** * An empty cleanup function. * - * Passed to apr_pool_cleanup_register() when no cleanup is required. + * Passed to fspr_pool_cleanup_register() when no cleanup is required. * * @param data The data to cleanup, will not be used by this function. */ -APR_DECLARE_NONSTD(apr_status_t) apr_pool_cleanup_null(void *data); +APR_DECLARE_NONSTD(fspr_status_t) fspr_pool_cleanup_null(void *data); /** * Run all registered child cleanups, in preparation for an exec() @@ -587,7 +587,7 @@ APR_DECLARE_NONSTD(apr_status_t) apr_pool_cleanup_null(void *data); * buffers, *don't* wait for subprocesses, and *don't* free any * memory. */ -APR_DECLARE(void) apr_pool_cleanup_for_exec(void); +APR_DECLARE(void) fspr_pool_cleanup_for_exec(void); /** @} */ @@ -615,7 +615,7 @@ APR_DECLARE(void) apr_pool_cleanup_for_exec(void); * if the data is allocated in any ancestor of T's pool. This is the * basis on which the APR_POOL_DEBUG code works -- it tests these ancestor * relationships for all data inserted into tables. APR_POOL_DEBUG also - * provides tools (apr_pool_find, and apr_pool_is_ancestor) for other + * provides tools (fspr_pool_find, and fspr_pool_is_ancestor) for other * folks to implement similar restrictions for their own data * structures. * @@ -626,7 +626,7 @@ APR_DECLARE(void) apr_pool_cleanup_for_exec(void); * is, the caller guarantees they won't destroy the sub pool * individually prior to destroying the parent pool. * - * In this case the caller must call apr_pool_join() to indicate this + * In this case the caller must call fspr_pool_join() to indicate this * guarantee to the APR_POOL_DEBUG code. * * These functions are only implemented when #APR_POOL_DEBUG is set. @@ -639,14 +639,14 @@ APR_DECLARE(void) apr_pool_cleanup_for_exec(void); * @param p The parent pool * @param sub The subpool */ -APR_DECLARE(void) apr_pool_join(apr_pool_t *p, apr_pool_t *sub); +APR_DECLARE(void) fspr_pool_join(fspr_pool_t *p, fspr_pool_t *sub); /** * Find a pool from something allocated in it. * @param mem The thing allocated in the pool * @return The pool it is allocated in */ -APR_DECLARE(apr_pool_t *) apr_pool_find(const void *mem); +APR_DECLARE(fspr_pool_t *) fspr_pool_find(const void *mem); /** * Report the number of bytes currently in the pool @@ -654,28 +654,28 @@ APR_DECLARE(apr_pool_t *) apr_pool_find(const void *mem); * @param recurse Recurse/include the subpools' sizes * @return The number of bytes */ -APR_DECLARE(apr_size_t) apr_pool_num_bytes(apr_pool_t *p, int recurse); +APR_DECLARE(fspr_size_t) fspr_pool_num_bytes(fspr_pool_t *p, int recurse); /** * Lock a pool * @param pool The pool to lock * @param flag The flag */ -APR_DECLARE(void) apr_pool_lock(apr_pool_t *pool, int flag); +APR_DECLARE(void) fspr_pool_lock(fspr_pool_t *pool, int flag); /* @} */ #else /* APR_POOL_DEBUG or DOXYGEN */ -#ifdef apr_pool_join -#undef apr_pool_join +#ifdef fspr_pool_join +#undef fspr_pool_join #endif -#define apr_pool_join(a,b) +#define fspr_pool_join(a,b) -#ifdef apr_pool_lock -#undef apr_pool_lock +#ifdef fspr_pool_lock +#undef fspr_pool_lock #endif -#define apr_pool_lock(pool, lock) +#define fspr_pool_lock(pool, lock) #endif /* APR_POOL_DEBUG or DOXYGEN */ diff --git a/libs/apr/include/apr_portable.h b/libs/apr/include/fspr_portable.h similarity index 51% rename from libs/apr/include/apr_portable.h rename to libs/apr/include/fspr_portable.h index b1b21e37b7e..d4118d0cfe1 100644 --- a/libs/apr/include/apr_portable.h +++ b/libs/apr/include/fspr_portable.h @@ -21,21 +21,21 @@ #ifndef APR_PORTABLE_H #define APR_PORTABLE_H /** - * @file apr_portable.h + * @file fspr_portable.h * @brief APR Portability Routines */ -#include "apr.h" -#include "apr_pools.h" -#include "apr_thread_proc.h" -#include "apr_file_io.h" -#include "apr_network_io.h" -#include "apr_errno.h" -#include "apr_global_mutex.h" -#include "apr_proc_mutex.h" -#include "apr_time.h" -#include "apr_dso.h" -#include "apr_shm.h" +#include "fspr.h" +#include "fspr_pools.h" +#include "fspr_thread_proc.h" +#include "fspr_file_io.h" +#include "fspr_network_io.h" +#include "fspr_errno.h" +#include "fspr_global_mutex.h" +#include "fspr_proc_mutex.h" +#include "fspr_time.h" +#include "fspr_dso.h" +#include "fspr_shm.h" #if APR_HAVE_DIRENT_H #include @@ -52,71 +52,71 @@ extern "C" { #endif /* __cplusplus */ /** - * @defgroup apr_portabile Portability Routines + * @defgroup fspr_portabile Portability Routines * @ingroup APR * @{ */ #ifdef WIN32 /* The primitives for Windows types */ -typedef HANDLE apr_os_file_t; -typedef HANDLE apr_os_dir_t; -typedef SOCKET apr_os_sock_t; -typedef HANDLE apr_os_proc_mutex_t; -typedef HANDLE apr_os_thread_t; -typedef HANDLE apr_os_proc_t; -typedef DWORD apr_os_threadkey_t; -typedef FILETIME apr_os_imp_time_t; -typedef SYSTEMTIME apr_os_exp_time_t; -typedef HANDLE apr_os_dso_handle_t; -typedef HANDLE apr_os_shm_t; +typedef HANDLE fspr_os_file_t; +typedef HANDLE fspr_os_dir_t; +typedef SOCKET fspr_os_sock_t; +typedef HANDLE fspr_os_proc_mutex_t; +typedef HANDLE fspr_os_thread_t; +typedef HANDLE fspr_os_proc_t; +typedef DWORD fspr_os_threadkey_t; +typedef FILETIME fspr_os_imp_time_t; +typedef SYSTEMTIME fspr_os_exp_time_t; +typedef HANDLE fspr_os_dso_handle_t; +typedef HANDLE fspr_os_shm_t; #elif defined(OS2) -typedef HFILE apr_os_file_t; -typedef HDIR apr_os_dir_t; -typedef int apr_os_sock_t; -typedef HMTX apr_os_proc_mutex_t; -typedef TID apr_os_thread_t; -typedef PID apr_os_proc_t; -typedef PULONG apr_os_threadkey_t; -typedef struct timeval apr_os_imp_time_t; -typedef struct tm apr_os_exp_time_t; -typedef HMODULE apr_os_dso_handle_t; -typedef void* apr_os_shm_t; +typedef HFILE fspr_os_file_t; +typedef HDIR fspr_os_dir_t; +typedef int fspr_os_sock_t; +typedef HMTX fspr_os_proc_mutex_t; +typedef TID fspr_os_thread_t; +typedef PID fspr_os_proc_t; +typedef PULONG fspr_os_threadkey_t; +typedef struct timeval fspr_os_imp_time_t; +typedef struct tm fspr_os_exp_time_t; +typedef HMODULE fspr_os_dso_handle_t; +typedef void* fspr_os_shm_t; #elif defined(__BEOS__) #include #include -struct apr_os_proc_mutex_t { +struct fspr_os_proc_mutex_t { sem_id sem; int32 ben; }; -typedef int apr_os_file_t; -typedef DIR apr_os_dir_t; -typedef int apr_os_sock_t; -typedef struct apr_os_proc_mutex_t apr_os_proc_mutex_t; -typedef thread_id apr_os_thread_t; -typedef thread_id apr_os_proc_t; -typedef int apr_os_threadkey_t; -typedef struct timeval apr_os_imp_time_t; -typedef struct tm apr_os_exp_time_t; -typedef image_id apr_os_dso_handle_t; -typedef void* apr_os_shm_t; +typedef int fspr_os_file_t; +typedef DIR fspr_os_dir_t; +typedef int fspr_os_sock_t; +typedef struct fspr_os_proc_mutex_t fspr_os_proc_mutex_t; +typedef thread_id fspr_os_thread_t; +typedef thread_id fspr_os_proc_t; +typedef int fspr_os_threadkey_t; +typedef struct timeval fspr_os_imp_time_t; +typedef struct tm fspr_os_exp_time_t; +typedef image_id fspr_os_dso_handle_t; +typedef void* fspr_os_shm_t; #elif defined(NETWARE) -typedef int apr_os_file_t; -typedef DIR apr_os_dir_t; -typedef int apr_os_sock_t; -typedef NXMutex_t apr_os_proc_mutex_t; -typedef NXThreadId_t apr_os_thread_t; -typedef long apr_os_proc_t; -typedef NXKey_t apr_os_threadkey_t; -typedef struct timeval apr_os_imp_time_t; -typedef struct tm apr_os_exp_time_t; -typedef void * apr_os_dso_handle_t; -typedef void* apr_os_shm_t; +typedef int fspr_os_file_t; +typedef DIR fspr_os_dir_t; +typedef int fspr_os_sock_t; +typedef NXMutex_t fspr_os_proc_mutex_t; +typedef NXThreadId_t fspr_os_thread_t; +typedef long fspr_os_proc_t; +typedef NXKey_t fspr_os_threadkey_t; +typedef struct timeval fspr_os_imp_time_t; +typedef struct tm fspr_os_exp_time_t; +typedef void * fspr_os_dso_handle_t; +typedef void* fspr_os_shm_t; #else /* Any other OS should go above this one. This is the lowest common @@ -124,7 +124,7 @@ typedef void* apr_os_shm_t; */ /** Basic OS process mutex structure. */ -struct apr_os_proc_mutex_t { +struct fspr_os_proc_mutex_t { #if APR_HAS_SYSVSEM_SERIALIZE || APR_HAS_FCNTL_SERIALIZE || APR_HAS_FLOCK_SERIALIZE /** Value used for SYS V Semaphore, FCNTL and FLOCK serialization */ int crossproc; @@ -142,46 +142,46 @@ struct apr_os_proc_mutex_t { #endif }; -typedef int apr_os_file_t; /**< native file */ -typedef DIR apr_os_dir_t; /**< native dir */ -typedef int apr_os_sock_t; /**< native dir */ -typedef struct apr_os_proc_mutex_t apr_os_proc_mutex_t; /**< native proces +typedef int fspr_os_file_t; /**< native file */ +typedef DIR fspr_os_dir_t; /**< native dir */ +typedef int fspr_os_sock_t; /**< native dir */ +typedef struct fspr_os_proc_mutex_t fspr_os_proc_mutex_t; /**< native proces * mutex */ #if APR_HAS_THREADS && APR_HAVE_PTHREAD_H -typedef pthread_t apr_os_thread_t; /**< native thread */ -typedef pthread_key_t apr_os_threadkey_t; /**< native thread address +typedef pthread_t fspr_os_thread_t; /**< native thread */ +typedef pthread_key_t fspr_os_threadkey_t; /**< native thread address * space */ #endif -typedef pid_t apr_os_proc_t; /**< native pid */ -typedef struct timeval apr_os_imp_time_t; /**< native timeval */ -typedef struct tm apr_os_exp_time_t; /**< native tm */ -/** @var apr_os_dso_handle_t +typedef pid_t fspr_os_proc_t; /**< native pid */ +typedef struct timeval fspr_os_imp_time_t; /**< native timeval */ +typedef struct tm fspr_os_exp_time_t; /**< native tm */ +/** @var fspr_os_dso_handle_t * native dso types */ #if defined(HPUX) || defined(HPUX10) || defined(HPUX11) #include -typedef shl_t apr_os_dso_handle_t; +typedef shl_t fspr_os_dso_handle_t; #elif defined(DARWIN) #include -typedef NSModule apr_os_dso_handle_t; +typedef NSModule fspr_os_dso_handle_t; #else -typedef void * apr_os_dso_handle_t; +typedef void * fspr_os_dso_handle_t; #endif -typedef void* apr_os_shm_t; /**< native SHM */ +typedef void* fspr_os_shm_t; /**< native SHM */ #endif /** - * @typedef apr_os_sock_info_t + * @typedef fspr_os_sock_info_t * @brief alias for local OS socket */ /** * everything APR needs to know about an active socket to construct * an APR socket from it; currently, this is platform-independent */ -struct apr_os_sock_info_t { - apr_os_sock_t *os_sock; /**< always required */ +struct fspr_os_sock_info_t { + fspr_os_sock_t *os_sock; /**< always required */ struct sockaddr *local; /**< NULL if not yet bound */ struct sockaddr *remote; /**< NULL if not connected */ int family; /**< always required (APR_INET, APR_INET6, etc.) */ @@ -189,28 +189,28 @@ struct apr_os_sock_info_t { int protocol; /**< 0 or actual protocol (APR_PROTO_SCTP, APR_PROTO_TCP, etc.) */ }; -typedef struct apr_os_sock_info_t apr_os_sock_info_t; +typedef struct fspr_os_sock_info_t fspr_os_sock_info_t; #if APR_PROC_MUTEX_IS_GLOBAL || defined(DOXYGEN) /** Opaque global mutex type */ -#define apr_os_global_mutex_t apr_os_proc_mutex_t -/** @return apr_os_global_mutex */ -#define apr_os_global_mutex_get apr_os_proc_mutex_get +#define fspr_os_global_mutex_t fspr_os_proc_mutex_t +/** @return fspr_os_global_mutex */ +#define fspr_os_global_mutex_get fspr_os_proc_mutex_get #else /** Thread and process mutex for those platforms where process mutexes * are not held in threads. */ - struct apr_os_global_mutex_t { - apr_pool_t *pool; - apr_proc_mutex_t *proc_mutex; + struct fspr_os_global_mutex_t { + fspr_pool_t *pool; + fspr_proc_mutex_t *proc_mutex; #if APR_HAS_THREADS - apr_thread_mutex_t *thread_mutex; + fspr_thread_mutex_t *thread_mutex; #endif /* APR_HAS_THREADS */ }; - typedef struct apr_os_global_mutex_t apr_os_global_mutex_t; + typedef struct fspr_os_global_mutex_t fspr_os_global_mutex_t; -APR_DECLARE(apr_status_t) apr_os_global_mutex_get(apr_os_global_mutex_t *ospmutex, - apr_global_mutex_t *pmutex); +APR_DECLARE(fspr_status_t) fspr_os_global_mutex_get(fspr_os_global_mutex_t *ospmutex, + fspr_global_mutex_t *pmutex); #endif @@ -221,60 +221,60 @@ APR_DECLARE(apr_status_t) apr_os_global_mutex_get(apr_os_global_mutex_t *ospmute * @remark On Unix, it is only possible to get a file descriptor from * an apr file type. */ -APR_DECLARE(apr_status_t) apr_os_file_get(apr_os_file_t *thefile, - apr_file_t *file); +APR_DECLARE(fspr_status_t) fspr_os_file_get(fspr_os_file_t *thefile, + fspr_file_t *file); /** * convert the dir from apr type to os specific type. * @param thedir The os specific dir we are converting to * @param dir The apr dir to convert. */ -APR_DECLARE(apr_status_t) apr_os_dir_get(apr_os_dir_t **thedir, - apr_dir_t *dir); +APR_DECLARE(fspr_status_t) fspr_os_dir_get(fspr_os_dir_t **thedir, + fspr_dir_t *dir); /** * Convert the socket from an apr type to an OS specific socket * @param thesock The socket to convert. * @param sock The os specifc equivelant of the apr socket.. */ -APR_DECLARE(apr_status_t) apr_os_sock_get(apr_os_sock_t *thesock, - apr_socket_t *sock); +APR_DECLARE(fspr_status_t) fspr_os_sock_get(fspr_os_sock_t *thesock, + fspr_socket_t *sock); /** * Convert the proc mutex from os specific type to apr type * @param ospmutex The os specific proc mutex we are converting to. * @param pmutex The apr proc mutex to convert. */ -APR_DECLARE(apr_status_t) apr_os_proc_mutex_get(apr_os_proc_mutex_t *ospmutex, - apr_proc_mutex_t *pmutex); +APR_DECLARE(fspr_status_t) fspr_os_proc_mutex_get(fspr_os_proc_mutex_t *ospmutex, + fspr_proc_mutex_t *pmutex); /** * Get the exploded time in the platforms native format. * @param ostime the native time format * @param aprtime the time to convert */ -APR_DECLARE(apr_status_t) apr_os_exp_time_get(apr_os_exp_time_t **ostime, - apr_time_exp_t *aprtime); +APR_DECLARE(fspr_status_t) fspr_os_exp_time_get(fspr_os_exp_time_t **ostime, + fspr_time_exp_t *aprtime); /** * Get the imploded time in the platforms native format. * @param ostime the native time format * @param aprtime the time to convert */ -APR_DECLARE(apr_status_t) apr_os_imp_time_get(apr_os_imp_time_t **ostime, - apr_time_t *aprtime); +APR_DECLARE(fspr_status_t) fspr_os_imp_time_get(fspr_os_imp_time_t **ostime, + fspr_time_t *aprtime); /** * convert the shm from apr type to os specific type. * @param osshm The os specific shm representation * @param shm The apr shm to convert. */ -APR_DECLARE(apr_status_t) apr_os_shm_get(apr_os_shm_t *osshm, - apr_shm_t *shm); +APR_DECLARE(fspr_status_t) fspr_os_shm_get(fspr_os_shm_t *osshm, + fspr_shm_t *shm); #if APR_HAS_THREADS || defined(DOXYGEN) /** - * @defgroup apr_os_thread Thread portability Routines + * @defgroup fspr_os_thread Thread portability Routines * @{ */ /** @@ -282,16 +282,16 @@ APR_DECLARE(apr_status_t) apr_os_shm_get(apr_os_shm_t *osshm, * @param thethd The apr thread to convert * @param thd The os specific thread we are converting to */ -APR_DECLARE(apr_status_t) apr_os_thread_get(apr_os_thread_t **thethd, - apr_thread_t *thd); +APR_DECLARE(fspr_status_t) fspr_os_thread_get(fspr_os_thread_t **thethd, + fspr_thread_t *thd); /** * convert the thread private memory key to os specific type from an apr type. * @param thekey The apr handle we are converting from. * @param key The os specific handle we are converting to. */ -APR_DECLARE(apr_status_t) apr_os_threadkey_get(apr_os_threadkey_t *thekey, - apr_threadkey_t *key); +APR_DECLARE(fspr_status_t) fspr_os_threadkey_get(fspr_os_threadkey_t *thekey, + fspr_threadkey_t *key); /** * convert the thread from os specific type to apr type. @@ -299,9 +299,9 @@ APR_DECLARE(apr_status_t) apr_os_threadkey_get(apr_os_threadkey_t *thekey, * @param thethd The os specific thread to convert * @param cont The pool to use if it is needed. */ -APR_DECLARE(apr_status_t) apr_os_thread_put(apr_thread_t **thd, - apr_os_thread_t *thethd, - apr_pool_t *cont); +APR_DECLARE(fspr_status_t) fspr_os_thread_put(fspr_thread_t **thd, + fspr_os_thread_t *thethd, + fspr_pool_t *cont); /** * convert the thread private memory key from os specific type to apr type. @@ -309,21 +309,21 @@ APR_DECLARE(apr_status_t) apr_os_thread_put(apr_thread_t **thd, * @param thekey The os specific handle to convert * @param cont The pool to use if it is needed. */ -APR_DECLARE(apr_status_t) apr_os_threadkey_put(apr_threadkey_t **key, - apr_os_threadkey_t *thekey, - apr_pool_t *cont); +APR_DECLARE(fspr_status_t) fspr_os_threadkey_put(fspr_threadkey_t **key, + fspr_os_threadkey_t *thekey, + fspr_pool_t *cont); /** * Get the thread ID */ -APR_DECLARE(apr_os_thread_t) apr_os_thread_current(void); +APR_DECLARE(fspr_os_thread_t) fspr_os_thread_current(void); /** * Compare two thread id's * @param tid1 1st Thread ID to compare * @param tid2 2nd Thread ID to compare */ -APR_DECLARE(int) apr_os_thread_equal(apr_os_thread_t tid1, - apr_os_thread_t tid2); +APR_DECLARE(int) fspr_os_thread_equal(fspr_os_thread_t tid1, + fspr_os_thread_t tid2); /** @} */ #endif /* APR_HAS_THREADS */ @@ -337,9 +337,9 @@ APR_DECLARE(int) apr_os_thread_equal(apr_os_thread_t tid1, * @remark On Unix, it is only possible to put a file descriptor into * an apr file type. */ -APR_DECLARE(apr_status_t) apr_os_file_put(apr_file_t **file, - apr_os_file_t *thefile, - apr_int32_t flags, apr_pool_t *cont); +APR_DECLARE(fspr_status_t) fspr_os_file_put(fspr_file_t **file, + fspr_os_file_t *thefile, + fspr_int32_t flags, fspr_pool_t *cont); /** * convert the file from os specific type to apr type. @@ -349,24 +349,24 @@ APR_DECLARE(apr_status_t) apr_os_file_put(apr_file_t **file, * @remark On Unix, it is only possible to put a file descriptor into * an apr file type. */ -APR_DECLARE(apr_status_t) apr_os_pipe_put(apr_file_t **file, - apr_os_file_t *thefile, - apr_pool_t *cont); +APR_DECLARE(fspr_status_t) fspr_os_pipe_put(fspr_file_t **file, + fspr_os_file_t *thefile, + fspr_pool_t *cont); /** * convert the file from os specific type to apr type. * @param file The apr file we are converting to. * @param thefile The os specific pipe to convert - * @param register_cleanup A cleanup will be registered on the apr_file_t - * to issue apr_file_close(). + * @param register_cleanup A cleanup will be registered on the fspr_file_t + * to issue fspr_file_close(). * @param cont The pool to use if it is needed. * @remark On Unix, it is only possible to put a file descriptor into * an apr file type. */ -APR_DECLARE(apr_status_t) apr_os_pipe_put_ex(apr_file_t **file, - apr_os_file_t *thefile, +APR_DECLARE(fspr_status_t) fspr_os_pipe_put_ex(fspr_file_t **file, + fspr_os_file_t *thefile, int register_cleanup, - apr_pool_t *cont); + fspr_pool_t *cont); /** * convert the dir from os specific type to apr type. @@ -374,35 +374,35 @@ APR_DECLARE(apr_status_t) apr_os_pipe_put_ex(apr_file_t **file, * @param thedir The os specific dir to convert * @param cont The pool to use when creating to apr directory. */ -APR_DECLARE(apr_status_t) apr_os_dir_put(apr_dir_t **dir, - apr_os_dir_t *thedir, - apr_pool_t *cont); +APR_DECLARE(fspr_status_t) fspr_os_dir_put(fspr_dir_t **dir, + fspr_os_dir_t *thedir, + fspr_pool_t *cont); /** * Convert a socket from the os specific type to the apr type * @param sock The pool to use. * @param thesock The socket to convert to. * @param cont The socket we are converting to an apr type. - * @remark If it is a true socket, it is best to call apr_os_sock_make() + * @remark If it is a true socket, it is best to call fspr_os_sock_make() * and provide APR with more information about the socket. */ -APR_DECLARE(apr_status_t) apr_os_sock_put(apr_socket_t **sock, - apr_os_sock_t *thesock, - apr_pool_t *cont); +APR_DECLARE(fspr_status_t) fspr_os_sock_put(fspr_socket_t **sock, + fspr_os_sock_t *thesock, + fspr_pool_t *cont); /** * Create a socket from an existing descriptor and local and remote * socket addresses. - * @param apr_sock The new socket that has been set up + * @param fspr_sock The new socket that has been set up * @param os_sock_info The os representation of the socket handle and * other characteristics of the socket * @param cont The pool to use * @remark If you only know the descriptor/handle or if it isn't really - * a true socket, use apr_os_sock_put() instead. + * a true socket, use fspr_os_sock_put() instead. */ -APR_DECLARE(apr_status_t) apr_os_sock_make(apr_socket_t **apr_sock, - apr_os_sock_info_t *os_sock_info, - apr_pool_t *cont); +APR_DECLARE(fspr_status_t) fspr_os_sock_make(fspr_socket_t **fspr_sock, + fspr_os_sock_info_t *os_sock_info, + fspr_pool_t *cont); /** * Convert the proc mutex from os specific type to apr type @@ -410,9 +410,9 @@ APR_DECLARE(apr_status_t) apr_os_sock_make(apr_socket_t **apr_sock, * @param ospmutex The os specific proc mutex to convert. * @param cont The pool to use if it is needed. */ -APR_DECLARE(apr_status_t) apr_os_proc_mutex_put(apr_proc_mutex_t **pmutex, - apr_os_proc_mutex_t *ospmutex, - apr_pool_t *cont); +APR_DECLARE(fspr_status_t) fspr_os_proc_mutex_put(fspr_proc_mutex_t **pmutex, + fspr_os_proc_mutex_t *ospmutex, + fspr_pool_t *cont); /** * Put the imploded time in the APR format. @@ -420,9 +420,9 @@ APR_DECLARE(apr_status_t) apr_os_proc_mutex_put(apr_proc_mutex_t **pmutex, * @param ostime the time to convert * @param cont the pool to use if necessary */ -APR_DECLARE(apr_status_t) apr_os_imp_time_put(apr_time_t *aprtime, - apr_os_imp_time_t **ostime, - apr_pool_t *cont); +APR_DECLARE(fspr_status_t) fspr_os_imp_time_put(fspr_time_t *aprtime, + fspr_os_imp_time_t **ostime, + fspr_pool_t *cont); /** * Put the exploded time in the APR format. @@ -430,9 +430,9 @@ APR_DECLARE(apr_status_t) apr_os_imp_time_put(apr_time_t *aprtime, * @param ostime the time to convert * @param cont the pool to use if necessary */ -APR_DECLARE(apr_status_t) apr_os_exp_time_put(apr_time_exp_t *aprtime, - apr_os_exp_time_t **ostime, - apr_pool_t *cont); +APR_DECLARE(fspr_status_t) fspr_os_exp_time_put(fspr_time_exp_t *aprtime, + fspr_os_exp_time_t **ostime, + fspr_pool_t *cont); /** * convert the shared memory from os specific type to apr type. @@ -443,14 +443,14 @@ APR_DECLARE(apr_status_t) apr_os_exp_time_put(apr_time_exp_t *aprtime, * the memory block mapped. On non-fork architectures, this is typically * some internal handle to pass the mapping from process to process. */ -APR_DECLARE(apr_status_t) apr_os_shm_put(apr_shm_t **shm, - apr_os_shm_t *osshm, - apr_pool_t *cont); +APR_DECLARE(fspr_status_t) fspr_os_shm_put(fspr_shm_t **shm, + fspr_os_shm_t *osshm, + fspr_pool_t *cont); #if APR_HAS_DSO || defined(DOXYGEN) /** - * @defgroup apr_os_dso DSO (Dynamic Loading) Portabiliity Routines + * @defgroup fspr_os_dso DSO (Dynamic Loading) Portabiliity Routines * @{ */ /** @@ -459,23 +459,23 @@ APR_DECLARE(apr_status_t) apr_os_shm_put(apr_shm_t **shm, * @param thedso the os specific handle to convert * @param pool the pool to use if it is needed */ -APR_DECLARE(apr_status_t) apr_os_dso_handle_put(apr_dso_handle_t **dso, - apr_os_dso_handle_t thedso, - apr_pool_t *pool); +APR_DECLARE(fspr_status_t) fspr_os_dso_handle_put(fspr_dso_handle_t **dso, + fspr_os_dso_handle_t thedso, + fspr_pool_t *pool); /** * convert the apr dso handle into an os specific one * @param aprdso The apr dso handle to convert * @param dso The os specific dso to return */ -APR_DECLARE(apr_status_t) apr_os_dso_handle_get(apr_os_dso_handle_t *dso, - apr_dso_handle_t *aprdso); +APR_DECLARE(fspr_status_t) fspr_os_dso_handle_get(fspr_os_dso_handle_t *dso, + fspr_dso_handle_t *aprdso); #if APR_HAS_OS_UUID /** - * Private: apr-util's apr_uuid module when supported by the platform + * Private: apr-util's fspr_uuid module when supported by the platform */ -APR_DECLARE(apr_status_t) apr_os_uuid_get(unsigned char *uuid_data); +APR_DECLARE(fspr_status_t) fspr_os_uuid_get(unsigned char *uuid_data); #endif /** @} */ @@ -486,16 +486,16 @@ APR_DECLARE(apr_status_t) apr_os_uuid_get(unsigned char *uuid_data); * Get the name of the system default characer set. * @param pool the pool to allocate the name from, if needed */ -APR_DECLARE(const char*) apr_os_default_encoding(apr_pool_t *pool); +APR_DECLARE(const char*) fspr_os_default_encoding(fspr_pool_t *pool); /** * Get the name of the current locale character set. * @param pool the pool to allocate the name from, if needed - * @remark Defers to apr_os_default_encoding if the current locale's + * @remark Defers to fspr_os_default_encoding if the current locale's * data can't be retreved on this system. */ -APR_DECLARE(const char*) apr_os_locale_encoding(apr_pool_t *pool); +APR_DECLARE(const char*) fspr_os_locale_encoding(fspr_pool_t *pool); /** @} */ diff --git a/libs/apr/include/apr_proc_mutex.h b/libs/apr/include/fspr_proc_mutex.h similarity index 78% rename from libs/apr/include/apr_proc_mutex.h rename to libs/apr/include/fspr_proc_mutex.h index ceb9c82a8dc..9e1b6d6b480 100644 --- a/libs/apr/include/apr_proc_mutex.h +++ b/libs/apr/include/fspr_proc_mutex.h @@ -18,20 +18,20 @@ #define APR_PROC_MUTEX_H /** - * @file apr_proc_mutex.h + * @file fspr_proc_mutex.h * @brief APR Process Locking Routines */ -#include "apr.h" -#include "apr_pools.h" -#include "apr_errno.h" +#include "fspr.h" +#include "fspr_pools.h" +#include "fspr_errno.h" #ifdef __cplusplus extern "C" { #endif /* __cplusplus */ /** - * @defgroup apr_proc_mutex Process Locking Routines + * @defgroup fspr_proc_mutex Process Locking Routines * @ingroup APR * @{ */ @@ -48,10 +48,10 @@ typedef enum { APR_LOCK_PROC_PTHREAD, /**< POSIX pthread process-based locking */ APR_LOCK_POSIXSEM, /**< POSIX semaphore process-based locking */ APR_LOCK_DEFAULT /**< Use the default process lock */ -} apr_lockmech_e; +} fspr_lockmech_e; /** Opaque structure representing a process mutex. */ -typedef struct apr_proc_mutex_t apr_proc_mutex_t; +typedef struct fspr_proc_mutex_t fspr_proc_mutex_t; /* Function definitions */ @@ -72,14 +72,14 @@ typedef struct apr_proc_mutex_t apr_proc_mutex_t; * APR_LOCK_DEFAULT pick the default mechanism for the platform * * @param pool the pool from which to allocate the mutex. - * @see apr_lockmech_e + * @see fspr_lockmech_e * @warning Check APR_HAS_foo_SERIALIZE defines to see if the platform supports * APR_LOCK_foo. Only APR_LOCK_DEFAULT is portable. */ -APR_DECLARE(apr_status_t) apr_proc_mutex_create(apr_proc_mutex_t **mutex, +APR_DECLARE(fspr_status_t) fspr_proc_mutex_create(fspr_proc_mutex_t **mutex, const char *fname, - apr_lockmech_e mech, - apr_pool_t *pool); + fspr_lockmech_e mech, + fspr_pool_t *pool); /** * Re-open a mutex in a child process. @@ -87,21 +87,21 @@ APR_DECLARE(apr_status_t) apr_proc_mutex_create(apr_proc_mutex_t **mutex, * @param fname A file name to use if the mutex mechanism requires one. This * argument should always be provided. The mutex code itself will * determine if it should be used. This filename should be the - * same one that was passed to apr_proc_mutex_create(). + * same one that was passed to fspr_proc_mutex_create(). * @param pool The pool to operate on. * @remark This function must be called to maintain portability, even * if the underlying lock mechanism does not require it. */ -APR_DECLARE(apr_status_t) apr_proc_mutex_child_init(apr_proc_mutex_t **mutex, +APR_DECLARE(fspr_status_t) fspr_proc_mutex_child_init(fspr_proc_mutex_t **mutex, const char *fname, - apr_pool_t *pool); + fspr_pool_t *pool); /** * Acquire the lock for the given mutex. If the mutex is already locked, * the current thread will be put to sleep until the lock becomes available. * @param mutex the mutex on which to acquire the lock. */ -APR_DECLARE(apr_status_t) apr_proc_mutex_lock(apr_proc_mutex_t *mutex); +APR_DECLARE(fspr_status_t) fspr_proc_mutex_lock(fspr_proc_mutex_t *mutex); /** * Attempt to acquire the lock for the given mutex. If the mutex has already @@ -110,19 +110,19 @@ APR_DECLARE(apr_status_t) apr_proc_mutex_lock(apr_proc_mutex_t *mutex); * if the return value was APR_EBUSY, for portability reasons. * @param mutex the mutex on which to attempt the lock acquiring. */ -APR_DECLARE(apr_status_t) apr_proc_mutex_trylock(apr_proc_mutex_t *mutex); +APR_DECLARE(fspr_status_t) fspr_proc_mutex_trylock(fspr_proc_mutex_t *mutex); /** * Release the lock for the given mutex. * @param mutex the mutex from which to release the lock. */ -APR_DECLARE(apr_status_t) apr_proc_mutex_unlock(apr_proc_mutex_t *mutex); +APR_DECLARE(fspr_status_t) fspr_proc_mutex_unlock(fspr_proc_mutex_t *mutex); /** * Destroy the mutex and free the memory associated with the lock. * @param mutex the mutex to destroy. */ -APR_DECLARE(apr_status_t) apr_proc_mutex_destroy(apr_proc_mutex_t *mutex); +APR_DECLARE(fspr_status_t) fspr_proc_mutex_destroy(fspr_proc_mutex_t *mutex); /** * Destroy the mutex and free the memory associated with the lock. @@ -130,30 +130,30 @@ APR_DECLARE(apr_status_t) apr_proc_mutex_destroy(apr_proc_mutex_t *mutex); * @note This function is generally used to kill a cleanup on an already * created mutex */ -APR_DECLARE(apr_status_t) apr_proc_mutex_cleanup(void *mutex); +APR_DECLARE(fspr_status_t) fspr_proc_mutex_cleanup(void *mutex); /** * Return the name of the lockfile for the mutex, or NULL * if the mutex doesn't use a lock file */ -APR_DECLARE(const char *) apr_proc_mutex_lockfile(apr_proc_mutex_t *mutex); +APR_DECLARE(const char *) fspr_proc_mutex_lockfile(fspr_proc_mutex_t *mutex); /** * Display the name of the mutex, as it relates to the actual method used. * This matches the valid options for Apache's AcceptMutex directive * @param mutex the name of the mutex */ -APR_DECLARE(const char *) apr_proc_mutex_name(apr_proc_mutex_t *mutex); +APR_DECLARE(const char *) fspr_proc_mutex_name(fspr_proc_mutex_t *mutex); /** * Display the name of the default mutex: APR_LOCK_DEFAULT */ -APR_DECLARE(const char *) apr_proc_mutex_defname(void); +APR_DECLARE(const char *) fspr_proc_mutex_defname(void); /** * Get the pool used by this proc_mutex. - * @return apr_pool_t the pool + * @return fspr_pool_t the pool */ APR_POOL_DECLARE_ACCESSOR(proc_mutex); diff --git a/libs/apr/include/fspr_random.h b/libs/apr/include/fspr_random.h new file mode 100644 index 00000000000..7ba2c78dbf2 --- /dev/null +++ b/libs/apr/include/fspr_random.h @@ -0,0 +1,74 @@ +/* Licensed to the Apache Software Foundation (ASF) under one or more + * contributor license agreements. See the NOTICE file distributed with + * this work for additional information regarding copyright ownership. + * The ASF licenses this file to You under the Apache License, Version 2.0 + * (the "License"); you may not use this file except in compliance with + * the License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +#ifndef APR_RANDOM_H +#define APR_RANDOM_H + +#include + +typedef struct fspr_crypto_hash_t fspr_crypto_hash_t; + +typedef void fspr_crypto_hash_init_t(fspr_crypto_hash_t *hash); +typedef void fspr_crypto_hash_add_t(fspr_crypto_hash_t *hash,const void *data, + fspr_size_t bytes); +typedef void fspr_crypto_hash_finish_t(fspr_crypto_hash_t *hash, + unsigned char *result); + +/* FIXME: make this opaque */ +struct fspr_crypto_hash_t { + fspr_crypto_hash_init_t *init; + fspr_crypto_hash_add_t *add; + fspr_crypto_hash_finish_t *finish; + fspr_size_t size; + void *data; +}; + +APR_DECLARE(fspr_crypto_hash_t *) fspr_crypto_sha256_new(fspr_pool_t *p); + +typedef struct fspr_random_t fspr_random_t; + +APR_DECLARE(void) fspr_random_init(fspr_random_t *g,fspr_pool_t *p, + fspr_crypto_hash_t *pool_hash, + fspr_crypto_hash_t *key_hash, + fspr_crypto_hash_t *prng_hash); +APR_DECLARE(fspr_random_t *) fspr_random_standard_new(fspr_pool_t *p); +APR_DECLARE(void) fspr_random_add_entropy(fspr_random_t *g, + const void *entropy_, + fspr_size_t bytes); +APR_DECLARE(fspr_status_t) fspr_random_insecure_bytes(fspr_random_t *g, + void *random, + fspr_size_t bytes); +APR_DECLARE(fspr_status_t) fspr_random_secure_bytes(fspr_random_t *g, + void *random, + fspr_size_t bytes); +APR_DECLARE(void) fspr_random_barrier(fspr_random_t *g); +APR_DECLARE(fspr_status_t) fspr_random_secure_ready(fspr_random_t *r); +APR_DECLARE(fspr_status_t) fspr_random_insecure_ready(fspr_random_t *r); + +/* Call this in the child after forking to mix the randomness + pools. Note that its generally a bad idea to fork a process with a + real PRNG in it - better to have the PRNG externally and get the + randomness from there. However, if you really must do it, then you + should supply all your entropy to all the PRNGs - don't worry, they + won't produce the same output. + + Note that fspr_proc_fork() calls this for you, so only weird + applications need ever call it themselves. +*/ +struct fspr_proc_t; +APR_DECLARE(void) fspr_random_after_fork(struct fspr_proc_t *proc); + +#endif /* ndef APR_RANDOM_H */ diff --git a/libs/apr/include/apr_ring.h b/libs/apr/include/fspr_ring.h similarity index 99% rename from libs/apr/include/apr_ring.h rename to libs/apr/include/fspr_ring.h index a360254a388..4af513b41e2 100644 --- a/libs/apr/include/apr_ring.h +++ b/libs/apr/include/fspr_ring.h @@ -28,17 +28,17 @@ #define APR_RING_H /** - * @file apr_ring.h + * @file fspr_ring.h * @brief APR Rings */ /* * for offsetof() */ -#include "apr_general.h" +#include "fspr_general.h" /** - * @defgroup apr_ring Ring Macro Implementations + * @defgroup fspr_ring Ring Macro Implementations * @ingroup APR * A ring is a kind of doubly-linked list that can be manipulated * without knowing where its head is. diff --git a/libs/apr/include/apr_shm.h b/libs/apr/include/fspr_shm.h similarity index 81% rename from libs/apr/include/apr_shm.h rename to libs/apr/include/fspr_shm.h index 4875ee1ff87..81bfd994ab9 100644 --- a/libs/apr/include/apr_shm.h +++ b/libs/apr/include/fspr_shm.h @@ -18,20 +18,20 @@ #define APR_SHM_H /** - * @file apr_shm.h + * @file fspr_shm.h * @brief APR Shared Memory Routines */ -#include "apr.h" -#include "apr_pools.h" -#include "apr_errno.h" +#include "fspr.h" +#include "fspr_pools.h" +#include "fspr_errno.h" #ifdef __cplusplus extern "C" { #endif /* __cplusplus */ /** - * @defgroup apr_shm Shared Memory Routines + * @defgroup fspr_shm Shared Memory Routines * @ingroup APR * @{ */ @@ -40,7 +40,7 @@ extern "C" { * Private, platform-specific data struture representing a shared memory * segment. */ -typedef struct apr_shm_t apr_shm_t; +typedef struct fspr_shm_t fspr_shm_t; /** * Create and make accessable a shared memory segment. @@ -61,14 +61,14 @@ typedef struct apr_shm_t apr_shm_t; * about the segment within the actual segment. In order to supply * the caller with the requested size it may be necessary for the * implementation to request a slightly greater segment length - * from the subsystem. In all cases, the apr_shm_baseaddr_get() + * from the subsystem. In all cases, the fspr_shm_baseaddr_get() * function will return the first usable byte of memory. * */ -APR_DECLARE(apr_status_t) apr_shm_create(apr_shm_t **m, - apr_size_t reqsize, +APR_DECLARE(fspr_status_t) fspr_shm_create(fspr_shm_t **m, + fspr_size_t reqsize, const char *filename, - apr_pool_t *pool); + fspr_pool_t *pool); /** * Remove shared memory segment associated with a filename. @@ -79,14 +79,14 @@ APR_DECLARE(apr_status_t) apr_shm_create(apr_shm_t **m, * name-based shared memory segments, and will return APR_ENOTIMPL on * platforms without such support. */ -APR_DECLARE(apr_status_t) apr_shm_remove(const char *filename, - apr_pool_t *pool); +APR_DECLARE(fspr_status_t) fspr_shm_remove(const char *filename, + fspr_pool_t *pool); /** * Destroy a shared memory segment and associated memory. * @param m The shared memory segment structure to destroy. */ -APR_DECLARE(apr_status_t) apr_shm_destroy(apr_shm_t *m); +APR_DECLARE(fspr_status_t) fspr_shm_destroy(fspr_shm_t *m); /** * Attach to a shared memory segment that was created @@ -97,16 +97,16 @@ APR_DECLARE(apr_status_t) apr_shm_destroy(apr_shm_t *m); * @param pool the pool from which to allocate the shared memory * structure for this process. */ -APR_DECLARE(apr_status_t) apr_shm_attach(apr_shm_t **m, +APR_DECLARE(fspr_status_t) fspr_shm_attach(fspr_shm_t **m, const char *filename, - apr_pool_t *pool); + fspr_pool_t *pool); /** * Detach from a shared memory segment without destroying it. * @param m The shared memory structure representing the segment * to detach from. */ -APR_DECLARE(apr_status_t) apr_shm_detach(apr_shm_t *m); +APR_DECLARE(fspr_status_t) fspr_shm_detach(fspr_shm_t *m); /** * Retrieve the base address of the shared memory segment. @@ -117,14 +117,14 @@ APR_DECLARE(apr_status_t) apr_shm_detach(apr_shm_t *m); * the base address. * @return address, aligned by APR_ALIGN_DEFAULT. */ -APR_DECLARE(void *) apr_shm_baseaddr_get(const apr_shm_t *m); +APR_DECLARE(void *) fspr_shm_baseaddr_get(const fspr_shm_t *m); /** * Retrieve the length of a shared memory segment in bytes. * @param m The shared memory segment from which to retrieve * the segment length. */ -APR_DECLARE(apr_size_t) apr_shm_size_get(const apr_shm_t *m); +APR_DECLARE(fspr_size_t) fspr_shm_size_get(const fspr_shm_t *m); /** * Get the pool used by this shared memory segment. diff --git a/libs/apr/include/apr_signal.h b/libs/apr/include/fspr_signal.h similarity index 81% rename from libs/apr/include/apr_signal.h rename to libs/apr/include/fspr_signal.h index 991cbadbaeb..6a53efa24db 100644 --- a/libs/apr/include/apr_signal.h +++ b/libs/apr/include/fspr_signal.h @@ -18,12 +18,12 @@ #define APR_SIGNAL_H /** - * @file apr_signal.h + * @file fspr_signal.h * @brief APR Signal Handling */ -#include "apr.h" -#include "apr_pools.h" +#include "fspr.h" +#include "fspr_pools.h" #if APR_HAVE_SIGNAL_H #include @@ -34,7 +34,7 @@ extern "C" { #endif /* __cplusplus */ /** - * @defgroup apr_signal Handling + * @defgroup fspr_signal Handling * @ingroup APR * @{ */ @@ -54,21 +54,21 @@ extern "C" { #endif /** Function prototype for signal handlers */ -typedef void apr_sigfunc_t(int); +typedef void fspr_sigfunc_t(int); /** * Set the signal handler function for a given signal * @param signo The signal (eg... SIGWINCH) * @param func the function to get called */ -APR_DECLARE(apr_sigfunc_t *) apr_signal(int signo, apr_sigfunc_t * func); +APR_DECLARE(fspr_sigfunc_t *) fspr_signal(int signo, fspr_sigfunc_t * func); #if defined(SIG_IGN) && !defined(SIG_ERR) -#define SIG_ERR ((apr_sigfunc_t *) -1) +#define SIG_ERR ((fspr_sigfunc_t *) -1) #endif #else /* !APR_HAVE_SIGACTION */ -#define apr_signal(a, b) signal(a, b) +#define fspr_signal(a, b) signal(a, b) #endif @@ -77,28 +77,28 @@ APR_DECLARE(apr_sigfunc_t *) apr_signal(int signo, apr_sigfunc_t * func); * @param signum The signal number * @return The description of the signal */ -APR_DECLARE(const char *) apr_signal_description_get(int signum); +APR_DECLARE(const char *) fspr_signal_description_get(int signum); /** * APR-private function for initializing the signal package * @internal * @param pglobal The internal, global pool */ -void apr_signal_init(apr_pool_t *pglobal); +void fspr_signal_init(fspr_pool_t *pglobal); /** * Block the delivery of a particular signal * @param signum The signal number * @return status */ -APR_DECLARE(apr_status_t) apr_signal_block(int signum); +APR_DECLARE(fspr_status_t) fspr_signal_block(int signum); /** * Enable the delivery of a particular signal * @param signum The signal number * @return status */ -APR_DECLARE(apr_status_t) apr_signal_unblock(int signum); +APR_DECLARE(fspr_status_t) fspr_signal_unblock(int signum); /** @} */ diff --git a/libs/apr/include/apr_strings.h b/libs/apr/include/fspr_strings.h similarity index 77% rename from libs/apr/include/apr_strings.h rename to libs/apr/include/fspr_strings.h index fcfb7777a2a..27a15bdb797 100644 --- a/libs/apr/include/apr_strings.h +++ b/libs/apr/include/fspr_strings.h @@ -41,15 +41,15 @@ #define APR_STRINGS_H /** - * @file apr_strings.h + * @file fspr_strings.h * @brief APR Strings library */ -#include "apr.h" -#include "apr_errno.h" -#include "apr_pools.h" +#include "fspr.h" +#include "fspr_errno.h" +#include "fspr_pools.h" #define APR_WANT_IOVEC -#include "apr_want.h" +#include "fspr_want.h" #if APR_HAVE_STDARG_H #include @@ -60,7 +60,7 @@ extern "C" { #endif /* __cplusplus */ /** - * @defgroup apr_strings String routines + * @defgroup fspr_strings String routines * @ingroup APR * @{ */ @@ -73,7 +73,7 @@ extern "C" { * this returns <0, if they are equivalent it returns 0, and if the * first string is greater than second string it retuns >0. */ -APR_DECLARE(int) apr_strnatcmp(char const *a, char const *b); +APR_DECLARE(int) fspr_strnatcmp(char const *a, char const *b); /** * Do a natural order comparison of two strings ignoring the case of the @@ -84,7 +84,7 @@ APR_DECLARE(int) apr_strnatcmp(char const *a, char const *b); * this returns <0, if they are equivalent it returns 0, and if the * first string is greater than second string it retuns >0. */ -APR_DECLARE(int) apr_strnatcasecmp(char const *a, char const *b); +APR_DECLARE(int) fspr_strnatcasecmp(char const *a, char const *b); /** * duplicate a string into memory allocated out of a pool @@ -92,7 +92,7 @@ APR_DECLARE(int) apr_strnatcasecmp(char const *a, char const *b); * @param s The string to duplicate * @return The new string */ -APR_DECLARE(char *) apr_pstrdup(apr_pool_t *p, const char *s); +APR_DECLARE(char *) fspr_pstrdup(fspr_pool_t *p, const char *s); /** * Create a null-terminated string by making a copy of a sequence @@ -101,12 +101,12 @@ APR_DECLARE(char *) apr_pstrdup(apr_pool_t *p, const char *s); * @param s The block of characters to duplicate * @param n The number of characters to duplicate * @return The new string - * @remark This is a faster alternative to apr_pstrndup, for use + * @remark This is a faster alternative to fspr_pstrndup, for use * when you know that the string being duplicated really * has 'n' or more characters. If the string might contain - * fewer characters, use apr_pstrndup. + * fewer characters, use fspr_pstrndup. */ -APR_DECLARE(char *) apr_pstrmemdup(apr_pool_t *p, const char *s, apr_size_t n); +APR_DECLARE(char *) fspr_pstrmemdup(fspr_pool_t *p, const char *s, fspr_size_t n); /** * Duplicate at most n characters of a string into memory allocated @@ -118,7 +118,7 @@ APR_DECLARE(char *) apr_pstrmemdup(apr_pool_t *p, const char *s, apr_size_t n); * @remark The amount of memory allocated from the pool is the length * of the returned string including the NUL terminator */ -APR_DECLARE(char *) apr_pstrndup(apr_pool_t *p, const char *s, apr_size_t n); +APR_DECLARE(char *) fspr_pstrndup(fspr_pool_t *p, const char *s, fspr_size_t n); /** * Duplicate a block of memory. @@ -128,7 +128,7 @@ APR_DECLARE(char *) apr_pstrndup(apr_pool_t *p, const char *s, apr_size_t n); * @param n The number of bytes to duplicate * @return The new block of memory */ -APR_DECLARE(void *) apr_pmemdup(apr_pool_t *p, const void *m, apr_size_t n); +APR_DECLARE(void *) fspr_pmemdup(fspr_pool_t *p, const void *m, fspr_size_t n); /** * Concatenate multiple strings, allocating memory out a pool @@ -136,7 +136,7 @@ APR_DECLARE(void *) apr_pmemdup(apr_pool_t *p, const void *m, apr_size_t n); * @param ... The strings to concatenate. The final string must be NULL * @return The new string */ -APR_DECLARE_NONSTD(char *) apr_pstrcat(apr_pool_t *p, ...); +APR_DECLARE_NONSTD(char *) fspr_pstrcat(fspr_pool_t *p, ...); /** * Concatenate multiple strings specified in a writev-style vector @@ -146,8 +146,8 @@ APR_DECLARE_NONSTD(char *) apr_pstrcat(apr_pool_t *p, ...); * @param nbytes (output) strlen of new string (pass in NULL to omit) * @return The new string */ -APR_DECLARE(char *) apr_pstrcatv(apr_pool_t *p, const struct iovec *vec, - apr_size_t nvec, apr_size_t *nbytes); +APR_DECLARE(char *) fspr_pstrcatv(fspr_pool_t *p, const struct iovec *vec, + fspr_size_t nvec, fspr_size_t *nbytes); /** * printf-style style printing routine. The data is output to a string @@ -157,7 +157,7 @@ APR_DECLARE(char *) apr_pstrcatv(apr_pool_t *p, const struct iovec *vec, * @param ap The arguments to use while printing the data * @return The new string */ -APR_DECLARE(char *) apr_pvsprintf(apr_pool_t *p, const char *fmt, va_list ap); +APR_DECLARE(char *) fspr_pvsprintf(fspr_pool_t *p, const char *fmt, va_list ap); /** * printf-style style printing routine. The data is output to a string @@ -167,7 +167,7 @@ APR_DECLARE(char *) apr_pvsprintf(apr_pool_t *p, const char *fmt, va_list ap); * @param ... The arguments to use while printing the data * @return The new string */ -APR_DECLARE_NONSTD(char *) apr_psprintf(apr_pool_t *p, const char *fmt, ...) +APR_DECLARE_NONSTD(char *) fspr_psprintf(fspr_pool_t *p, const char *fmt, ...) __attribute__((format(printf,2,3))); /** @@ -184,16 +184,16 @@ APR_DECLARE_NONSTD(char *) apr_psprintf(apr_pool_t *p, const char *fmt, ...) * @remark *
      * Note the differences between this function and strncpy():
    - *  1) strncpy() doesn't always NUL terminate; apr_cpystrn() does.
    + *  1) strncpy() doesn't always NUL terminate; fspr_cpystrn() does.
      *  2) strncpy() pads the destination string with NULs, which is often 
    - *     unnecessary; apr_cpystrn() does not.
    + *     unnecessary; fspr_cpystrn() does not.
      *  3) strncpy() returns a pointer to the beginning of the dst string;
    - *     apr_cpystrn() returns a pointer to the NUL terminator of dst, 
    + *     fspr_cpystrn() returns a pointer to the NUL terminator of dst, 
      *     to allow a check for truncation.
      * 
    */ -APR_DECLARE(char *) apr_cpystrn(char *dst, const char *src, - apr_size_t dst_size); +APR_DECLARE(char *) fspr_cpystrn(char *dst, const char *src, + fspr_size_t dst_size); /** * Strip spaces from a string @@ -202,7 +202,7 @@ APR_DECLARE(char *) apr_cpystrn(char *dst, const char *src, * @param src The string to rid the spaces from. * @return The destination string, dest. */ -APR_DECLARE(char *) apr_collapse_spaces(char *dest, const char *src); +APR_DECLARE(char *) fspr_collapse_spaces(char *dest, const char *src); /** * Convert the arguments to a program from one string to an array of @@ -211,66 +211,66 @@ APR_DECLARE(char *) apr_collapse_spaces(char *dest, const char *src); * @param argv_out Output location. This is a pointer to an array of strings. * @param token_context Pool to use. */ -APR_DECLARE(apr_status_t) apr_tokenize_to_argv(const char *arg_str, +APR_DECLARE(fspr_status_t) fspr_tokenize_to_argv(const char *arg_str, char ***argv_out, - apr_pool_t *token_context); + fspr_pool_t *token_context); /** * Split a string into separate null-terminated tokens. The tokens are * delimited in the string by one or more characters from the sep * argument. * @param str The string to separate; this should be specified on the - * first call to apr_strtok() for a given string, and NULL + * first call to fspr_strtok() for a given string, and NULL * on subsequent calls. * @param sep The set of delimiters - * @param last Internal state saved by apr_strtok() between calls. + * @param last Internal state saved by fspr_strtok() between calls. * @return The next token from the string */ -APR_DECLARE(char *) apr_strtok(char *str, const char *sep, char **last); +APR_DECLARE(char *) fspr_strtok(char *str, const char *sep, char **last); /** * @defgroup APR_Strings_Snprintf snprintf implementations * @warning - * These are snprintf implementations based on apr_vformatter(). + * These are snprintf implementations based on fspr_vformatter(). * * Note that various standards and implementations disagree on the return * value of snprintf, and side-effects due to %n in the formatting string. - * apr_snprintf (and apr_vsnprintf) behaves as follows: + * fspr_snprintf (and fspr_vsnprintf) behaves as follows: * * Process the format string until the entire string is exhausted, or * the buffer fills. If the buffer fills then stop processing immediately * (so no further %n arguments are processed), and return the buffer * length. In all cases the buffer is NUL terminated. It will return the * number of characters inserted into the buffer, not including the - * terminating NUL. As a special case, if len is 0, apr_snprintf will + * terminating NUL. As a special case, if len is 0, fspr_snprintf will * return the number of characters that would have been inserted if * the buffer had been infinite (in this case, *buffer can be NULL) * - * In no event does apr_snprintf return a negative number. + * In no event does fspr_snprintf return a negative number. * @{ */ /** - * snprintf routine based on apr_vformatter. This means it understands the + * snprintf routine based on fspr_vformatter. This means it understands the * same extensions. * @param buf The buffer to write to * @param len The size of the buffer * @param format The format string * @param ... The arguments to use to fill out the format string. */ -APR_DECLARE_NONSTD(int) apr_snprintf(char *buf, apr_size_t len, +APR_DECLARE_NONSTD(int) fspr_snprintf(char *buf, fspr_size_t len, const char *format, ...) __attribute__((format(printf,3,4))); /** - * vsnprintf routine based on apr_vformatter. This means it understands the + * vsnprintf routine based on fspr_vformatter. This means it understands the * same extensions. * @param buf The buffer to write to * @param len The size of the buffer * @param format The format string * @param ap The arguments to use to fill out the format string. */ -APR_DECLARE(int) apr_vsnprintf(char *buf, apr_size_t len, const char *format, +APR_DECLARE(int) fspr_vsnprintf(char *buf, fspr_size_t len, const char *format, va_list ap); /** @} */ @@ -280,7 +280,7 @@ APR_DECLARE(int) apr_vsnprintf(char *buf, apr_size_t len, const char *format, * @param n The number to format * @return The string representation of the number */ -APR_DECLARE(char *) apr_itoa(apr_pool_t *p, int n); +APR_DECLARE(char *) fspr_itoa(fspr_pool_t *p, int n); /** * create a string representation of a long, allocated from a pool @@ -288,18 +288,18 @@ APR_DECLARE(char *) apr_itoa(apr_pool_t *p, int n); * @param n The number to format * @return The string representation of the number */ -APR_DECLARE(char *) apr_ltoa(apr_pool_t *p, long n); +APR_DECLARE(char *) fspr_ltoa(fspr_pool_t *p, long n); /** - * create a string representation of an apr_off_t, allocated from a pool + * create a string representation of an fspr_off_t, allocated from a pool * @param p The pool from which to allocate * @param n The number to format * @return The string representation of the number */ -APR_DECLARE(char *) apr_off_t_toa(apr_pool_t *p, apr_off_t n); +APR_DECLARE(char *) fspr_off_t_toa(fspr_pool_t *p, fspr_off_t n); /** - * Convert a numeric string into an apr_off_t numeric value. + * Convert a numeric string into an fspr_off_t numeric value. * @param offset The value of the parsed string. * @param buf The string to parse. It may contain optional whitespace, * followed by an optional '+' (positive, default) or '-' (negative) @@ -312,7 +312,7 @@ APR_DECLARE(char *) apr_off_t_toa(apr_pool_t *p, apr_off_t n); * digits are prefixed with '0x', in which case it will be treated as * base 16. */ -APR_DECLARE(apr_status_t) apr_strtoff(apr_off_t *offset, const char *buf, +APR_DECLARE(fspr_status_t) fspr_strtoff(fspr_off_t *offset, const char *buf, char **end, int base); /** @@ -330,25 +330,25 @@ APR_DECLARE(apr_status_t) apr_strtoff(apr_off_t *offset, const char *buf, * @return The numeric value of the string. On overflow, errno is set * to ERANGE. */ -APR_DECLARE(apr_int64_t) apr_strtoi64(const char *buf, char **end, int base); +APR_DECLARE(fspr_int64_t) fspr_strtoi64(const char *buf, char **end, int base); /** * parse a base-10 numeric string into a 64-bit numeric value. - * Equivalent to apr_strtoi64(buf, (char**)NULL, 10). + * Equivalent to fspr_strtoi64(buf, (char**)NULL, 10). * @param buf The string to parse * @return The numeric value of the string */ -APR_DECLARE(apr_int64_t) apr_atoi64(const char *buf); +APR_DECLARE(fspr_int64_t) fspr_atoi64(const char *buf); /** - * Format a binary size (magnitiudes are 2^10 rather than 10^3) from an apr_off_t, + * Format a binary size (magnitiudes are 2^10 rather than 10^3) from an fspr_off_t, * as bytes, K, M, T, etc, to a four character compacted human readable string. * @param size The size to format * @param buf The 5 byte text buffer (counting the trailing null) - * @return The buf passed to apr_strfsize() - * @remark All negative sizes report ' - ', apr_strfsize only formats positive values. + * @return The buf passed to fspr_strfsize() + * @remark All negative sizes report ' - ', fspr_strfsize only formats positive values. */ -APR_DECLARE(char *) apr_strfsize(apr_off_t size, char *buf); +APR_DECLARE(char *) fspr_strfsize(fspr_off_t size, char *buf); /** @} */ diff --git a/libs/apr/include/apr_support.h b/libs/apr/include/fspr_support.h similarity index 83% rename from libs/apr/include/apr_support.h rename to libs/apr/include/fspr_support.h index a6115172d13..3fa0611d28e 100644 --- a/libs/apr/include/apr_support.h +++ b/libs/apr/include/fspr_support.h @@ -18,20 +18,20 @@ #define APR_SUPPORT_H /** - * @file apr_support.h + * @file fspr_support.h * @brief APR Support functions */ -#include "apr.h" -#include "apr_network_io.h" -#include "apr_file_io.h" +#include "fspr.h" +#include "fspr_network_io.h" +#include "fspr_file_io.h" #ifdef __cplusplus extern "C" { #endif /* __cplusplus */ /** - * @defgroup apr_support Internal APR support functions + * @defgroup fspr_support Internal APR support functions * @ingroup APR * @{ */ @@ -41,7 +41,7 @@ extern "C" { * * Uses POOL for temporary allocations. */ -apr_status_t apr_wait_for_io_or_timeout(apr_file_t *f, apr_socket_t *s, +fspr_status_t fspr_wait_for_io_or_timeout(fspr_file_t *f, fspr_socket_t *s, int for_read); /** @} */ diff --git a/libs/apr/include/apr_tables.h b/libs/apr/include/fspr_tables.h similarity index 74% rename from libs/apr/include/apr_tables.h rename to libs/apr/include/fspr_tables.h index 632f5b71b49..93d7f3bf877 100644 --- a/libs/apr/include/apr_tables.h +++ b/libs/apr/include/fspr_tables.h @@ -18,12 +18,12 @@ #define APR_TABLES_H /** - * @file apr_tables.h + * @file fspr_tables.h * @brief APR Table library */ -#include "apr.h" -#include "apr_pools.h" +#include "fspr.h" +#include "fspr_pools.h" #if APR_HAVE_STDARG_H #include /* for va_list */ @@ -34,7 +34,7 @@ extern "C" { #endif /* __cplusplus */ /** - * @defgroup apr_tables Table and Array Functions + * @defgroup fspr_tables Table and Array Functions * @ingroup APR * Tables are used to store entirely opaque structures * for applications, while Arrays are usually used to @@ -43,15 +43,15 @@ extern "C" { */ /** the table abstract data type */ -typedef struct apr_table_t apr_table_t; +typedef struct fspr_table_t fspr_table_t; -/** @see apr_array_header_t */ -typedef struct apr_array_header_t apr_array_header_t; +/** @see fspr_array_header_t */ +typedef struct fspr_array_header_t fspr_array_header_t; /** An opaque array type */ -struct apr_array_header_t { +struct fspr_array_header_t { /** The pool the array is allocated out of */ - apr_pool_t *pool; + fspr_pool_t *pool; /** The amount of memory allocated for each element of the array */ int elt_size; /** The number of active elements in the array */ @@ -65,10 +65,10 @@ struct apr_array_header_t { /** * The (opaque) structure for string-content tables. */ -typedef struct apr_table_entry_t apr_table_entry_t; +typedef struct fspr_table_entry_t fspr_table_entry_t; /** The type for each entry in a string-content table */ -struct apr_table_entry_t { +struct fspr_table_entry_t { /** The key for the current table entry */ char *key; /* maybe NULL in future; * check when iterating thru table_elts @@ -76,8 +76,8 @@ struct apr_table_entry_t { /** The value for the current table entry */ char *val; - /** A checksum for the key, for use by the apr_table internals */ - apr_uint32_t key_checksum; + /** A checksum for the key, for use by the fspr_table internals */ + fspr_uint32_t key_checksum; }; /** @@ -85,21 +85,21 @@ struct apr_table_entry_t { * @param t The table * @return An array containing the contents of the table */ -APR_DECLARE(const apr_array_header_t *) apr_table_elts(const apr_table_t *t); +APR_DECLARE(const fspr_array_header_t *) fspr_table_elts(const fspr_table_t *t); /** * Determine if the table is empty * @param t The table to check * @return True if empty, False otherwise */ -APR_DECLARE(int) apr_is_empty_table(const apr_table_t *t); +APR_DECLARE(int) fspr_is_empty_table(const fspr_table_t *t); /** * Determine if the array is empty * @param a The array to check * @return True if empty, False otherwise */ -APR_DECLARE(int) apr_is_empty_array(const apr_array_header_t *a); +APR_DECLARE(int) fspr_is_empty_array(const fspr_array_header_t *a); /** * Create an array @@ -108,7 +108,7 @@ APR_DECLARE(int) apr_is_empty_array(const apr_array_header_t *a); * @param elt_size The size of each element in the array. * @return The new array */ -APR_DECLARE(apr_array_header_t *) apr_array_make(apr_pool_t *p, +APR_DECLARE(fspr_array_header_t *) fspr_array_make(fspr_pool_t *p, int nelts, int elt_size); /** @@ -118,7 +118,7 @@ APR_DECLARE(apr_array_header_t *) apr_array_make(apr_pool_t *p, * @remark If there are no free spots in the array, then this function will * allocate new space for the new element. */ -APR_DECLARE(void *) apr_array_push(apr_array_header_t *arr); +APR_DECLARE(void *) fspr_array_push(fspr_array_header_t *arr); /** A helper macro for accessing a member of an APR array. * @@ -137,7 +137,7 @@ APR_DECLARE(void *) apr_array_push(apr_array_header_t *arr); * * @return the location where the new object should be placed */ -#define APR_ARRAY_PUSH(ary,type) (*((type *)apr_array_push(ary))) +#define APR_ARRAY_PUSH(ary,type) (*((type *)fspr_array_push(ary))) /** * Remove an element from an array (as a first-in, last-out stack) @@ -145,7 +145,7 @@ APR_DECLARE(void *) apr_array_push(apr_array_header_t *arr); * @return Location of the element in the array. * @remark If there are no elements in the array, NULL is returned. */ -APR_DECLARE(void *) apr_array_pop(apr_array_header_t *arr); +APR_DECLARE(void *) fspr_array_pop(fspr_array_header_t *arr); /** * Remove all elements from an array. @@ -153,7 +153,7 @@ APR_DECLARE(void *) apr_array_pop(apr_array_header_t *arr); * @remark As the underlying storage is allocated from a pool, no * memory is freed by this operation, but is available for reuse. */ -APR_DECLARE(void) apr_array_clear(apr_array_header_t *arr); +APR_DECLARE(void) fspr_array_clear(fspr_array_header_t *arr); /** * Concatenate two arrays together @@ -161,30 +161,30 @@ APR_DECLARE(void) apr_array_clear(apr_array_header_t *arr); * array * @param src The source array to add to the destination array */ -APR_DECLARE(void) apr_array_cat(apr_array_header_t *dst, - const apr_array_header_t *src); +APR_DECLARE(void) fspr_array_cat(fspr_array_header_t *dst, + const fspr_array_header_t *src); /** * Copy the entire array * @param p The pool to allocate the copy of the array out of * @param arr The array to copy * @return An exact copy of the array passed in - * @remark The alternate apr_array_copy_hdr copies only the header, and arranges + * @remark The alternate fspr_array_copy_hdr copies only the header, and arranges * for the elements to be copied if (and only if) the code subsequently * does a push or arraycat. */ -APR_DECLARE(apr_array_header_t *) apr_array_copy(apr_pool_t *p, - const apr_array_header_t *arr); +APR_DECLARE(fspr_array_header_t *) fspr_array_copy(fspr_pool_t *p, + const fspr_array_header_t *arr); /** * Copy the headers of the array, and arrange for the elements to be copied if * and only if the code subsequently does a push or arraycat. * @param p The pool to allocate the copy of the array out of * @param arr The array to copy * @return An exact copy of the array passed in - * @remark The alternate apr_array_copy copies the *entire* array. + * @remark The alternate fspr_array_copy copies the *entire* array. */ -APR_DECLARE(apr_array_header_t *) apr_array_copy_hdr(apr_pool_t *p, - const apr_array_header_t *arr); +APR_DECLARE(fspr_array_header_t *) fspr_array_copy_hdr(fspr_pool_t *p, + const fspr_array_header_t *arr); /** * Append one array to the end of another, creating a new array in the process. @@ -193,12 +193,12 @@ APR_DECLARE(apr_array_header_t *) apr_array_copy_hdr(apr_pool_t *p, * @param second The array to put second in the new array. * @return A new array containing the data from the two arrays passed in. */ -APR_DECLARE(apr_array_header_t *) apr_array_append(apr_pool_t *p, - const apr_array_header_t *first, - const apr_array_header_t *second); +APR_DECLARE(fspr_array_header_t *) fspr_array_append(fspr_pool_t *p, + const fspr_array_header_t *first, + const fspr_array_header_t *second); /** - * Generates a new string from the apr_pool_t containing the concatenated + * Generates a new string from the fspr_pool_t containing the concatenated * sequence of substrings referenced as elements within the array. The string * will be empty if all substrings are empty or null, or if there are no * elements in the array. If sep is non-NUL, it will be inserted between @@ -208,8 +208,8 @@ APR_DECLARE(apr_array_header_t *) apr_array_append(apr_pool_t *p, * @param sep The separator to use * @return A string containing all of the data in the array. */ -APR_DECLARE(char *) apr_array_pstrcat(apr_pool_t *p, - const apr_array_header_t *arr, +APR_DECLARE(char *) fspr_array_pstrcat(fspr_pool_t *p, + const fspr_array_header_t *arr, const char sep); /** @@ -219,7 +219,7 @@ APR_DECLARE(char *) apr_array_pstrcat(apr_pool_t *p, * @return The new table. * @warning This table can only store text data */ -APR_DECLARE(apr_table_t *) apr_table_make(apr_pool_t *p, int nelts); +APR_DECLARE(fspr_table_t *) fspr_table_make(fspr_pool_t *p, int nelts); /** * Create a new table and copy another table into it @@ -227,14 +227,14 @@ APR_DECLARE(apr_table_t *) apr_table_make(apr_pool_t *p, int nelts); * @param t The table to copy * @return A copy of the table passed in */ -APR_DECLARE(apr_table_t *) apr_table_copy(apr_pool_t *p, - const apr_table_t *t); +APR_DECLARE(fspr_table_t *) fspr_table_copy(fspr_pool_t *p, + const fspr_table_t *t); /** * Delete all of the elements from a table * @param t The table to clear */ -APR_DECLARE(void) apr_table_clear(apr_table_t *t); +APR_DECLARE(void) fspr_table_clear(fspr_table_t *t); /** * Get the value associated with a given key from the table. After this call, @@ -243,7 +243,7 @@ APR_DECLARE(void) apr_table_clear(apr_table_t *t); * @param key The key to search for * @return The value associated with the key, or NULL if the key does not exist. */ -APR_DECLARE(const char *) apr_table_get(const apr_table_t *t, const char *key); +APR_DECLARE(const char *) fspr_table_get(const fspr_table_t *t, const char *key); /** * Add a key/value pair to a table, if another element already exists with the @@ -254,7 +254,7 @@ APR_DECLARE(const char *) apr_table_get(const apr_table_t *t, const char *key); * @remark When adding data, this function makes a copy of both the key and the * value. */ -APR_DECLARE(void) apr_table_set(apr_table_t *t, const char *key, +APR_DECLARE(void) fspr_table_set(fspr_table_t *t, const char *key, const char *val); /** @@ -267,7 +267,7 @@ APR_DECLARE(void) apr_table_set(apr_table_t *t, const char *key, * the value, so care should be taken to ensure that the values will * not change after they have been added.. */ -APR_DECLARE(void) apr_table_setn(apr_table_t *t, const char *key, +APR_DECLARE(void) fspr_table_setn(fspr_table_t *t, const char *key, const char *val); /** @@ -275,7 +275,7 @@ APR_DECLARE(void) apr_table_setn(apr_table_t *t, const char *key, * @param t The table to remove data from * @param key The key of the data being removed */ -APR_DECLARE(void) apr_table_unset(apr_table_t *t, const char *key); +APR_DECLARE(void) fspr_table_unset(fspr_table_t *t, const char *key); /** * Add data to a table by merging the value with data that has already been @@ -283,9 +283,9 @@ APR_DECLARE(void) apr_table_unset(apr_table_t *t, const char *key); * @param t The table to search for the data * @param key The key to merge data for * @param val The data to add - * @remark If the key is not found, then this function acts like apr_table_add + * @remark If the key is not found, then this function acts like fspr_table_add */ -APR_DECLARE(void) apr_table_merge(apr_table_t *t, const char *key, +APR_DECLARE(void) fspr_table_merge(fspr_table_t *t, const char *key, const char *val); /** @@ -294,9 +294,9 @@ APR_DECLARE(void) apr_table_merge(apr_table_t *t, const char *key, * @param t The table to search for the data * @param key The key to merge data for * @param val The data to add - * @remark If the key is not found, then this function acts like apr_table_addn + * @remark If the key is not found, then this function acts like fspr_table_addn */ -APR_DECLARE(void) apr_table_mergen(apr_table_t *t, const char *key, +APR_DECLARE(void) fspr_table_mergen(fspr_table_t *t, const char *key, const char *val); /** @@ -308,7 +308,7 @@ APR_DECLARE(void) apr_table_mergen(apr_table_t *t, const char *key, * @remark When adding data, this function makes a copy of both the key and the * value. */ -APR_DECLARE(void) apr_table_add(apr_table_t *t, const char *key, +APR_DECLARE(void) fspr_table_add(fspr_table_t *t, const char *key, const char *val); /** @@ -321,7 +321,7 @@ APR_DECLARE(void) apr_table_add(apr_table_t *t, const char *key, * value, so care should be taken to ensure that the values will not * change after they have been added.. */ -APR_DECLARE(void) apr_table_addn(apr_table_t *t, const char *key, +APR_DECLARE(void) fspr_table_addn(fspr_table_t *t, const char *key, const char *val); /** @@ -331,21 +331,21 @@ APR_DECLARE(void) apr_table_addn(apr_table_t *t, const char *key, * @param base The table to add at the end of the new table * @return A new table containing all of the data from the two passed in */ -APR_DECLARE(apr_table_t *) apr_table_overlay(apr_pool_t *p, - const apr_table_t *overlay, - const apr_table_t *base); +APR_DECLARE(fspr_table_t *) fspr_table_overlay(fspr_pool_t *p, + const fspr_table_t *overlay, + const fspr_table_t *base); /** - * Declaration prototype for the iterator callback function of apr_table_do() - * and apr_table_vdo(). - * @param rec The data passed as the first argument to apr_table_[v]do() + * Declaration prototype for the iterator callback function of fspr_table_do() + * and fspr_table_vdo(). + * @param rec The data passed as the first argument to fspr_table_[v]do() * @param key The key from this iteration of the table * @param value The value from this iteration of the table * @remark Iteration continues while this callback function returns non-zero. - * To export the callback function for apr_table_[v]do() it must be declared + * To export the callback function for fspr_table_[v]do() it must be declared * in the _NONSTD convention. */ -typedef int (apr_table_do_callback_fn_t)(void *rec, const char *key, +typedef int (fspr_table_do_callback_fn_t)(void *rec, const char *key, const char *value); /** @@ -362,10 +362,10 @@ typedef int (apr_table_do_callback_fn_t)(void *rec, const char *key, * are run. * @return FALSE if one of the comp() iterations returned zero; TRUE if all * iterations returned non-zero - * @see apr_table_do_callback_fn_t + * @see fspr_table_do_callback_fn_t */ -APR_DECLARE_NONSTD(int) apr_table_do(apr_table_do_callback_fn_t *comp, - void *rec, const apr_table_t *t, ...); +APR_DECLARE_NONSTD(int) fspr_table_do(fspr_table_do_callback_fn_t *comp, + void *rec, const fspr_table_t *t, ...); /** * Iterate over a table running the provided function once for every @@ -381,14 +381,14 @@ APR_DECLARE_NONSTD(int) apr_table_do(apr_table_do_callback_fn_t *comp, * whose key matches are run. * @return FALSE if one of the comp() iterations returned zero; TRUE if all * iterations returned non-zero - * @see apr_table_do_callback_fn_t + * @see fspr_table_do_callback_fn_t */ -APR_DECLARE(int) apr_table_vdo(apr_table_do_callback_fn_t *comp, - void *rec, const apr_table_t *t, va_list vp); +APR_DECLARE(int) fspr_table_vdo(fspr_table_do_callback_fn_t *comp, + void *rec, const fspr_table_t *t, va_list vp); -/** flag for overlap to use apr_table_setn */ +/** flag for overlap to use fspr_table_setn */ #define APR_OVERLAP_TABLES_SET (0) -/** flag for overlap to use apr_table_mergen */ +/** flag for overlap to use fspr_table_mergen */ #define APR_OVERLAP_TABLES_MERGE (1) /** * For each element in table b, either use setn or mergen to add the data @@ -396,25 +396,25 @@ APR_DECLARE(int) apr_table_vdo(apr_table_do_callback_fn_t *comp, * @param a The table to add the data to. * @param b The table to iterate over, adding its data to table a * @param flags How to add the table to table a. One of: - * APR_OVERLAP_TABLES_SET Use apr_table_setn - * APR_OVERLAP_TABLES_MERGE Use apr_table_mergen + * APR_OVERLAP_TABLES_SET Use fspr_table_setn + * APR_OVERLAP_TABLES_MERGE Use fspr_table_mergen * @remark This function is highly optimized, and uses less memory and CPU cycles * than a function that just loops through table b calling other functions. */ /** *
    - * Conceptually, apr_table_overlap does this:
    + * Conceptually, fspr_table_overlap does this:
      *
    - *  apr_array_header_t *barr = apr_table_elts(b);
    - *  apr_table_entry_t *belt = (apr_table_entry_t *)barr->elts;
    + *  fspr_array_header_t *barr = fspr_table_elts(b);
    + *  fspr_table_entry_t *belt = (fspr_table_entry_t *)barr->elts;
      *  int i;
      *
      *  for (i = 0; i < barr->nelts; ++i) {
      *      if (flags & APR_OVERLAP_TABLES_MERGE) {
    - *          apr_table_mergen(a, belt[i].key, belt[i].val);
    + *          fspr_table_mergen(a, belt[i].key, belt[i].val);
      *      }
      *      else {
    - *          apr_table_setn(a, belt[i].key, belt[i].val);
    + *          fspr_table_setn(a, belt[i].key, belt[i].val);
      *      }
      *  }
      *
    @@ -427,7 +427,7 @@ APR_DECLARE(int) apr_table_vdo(apr_table_do_callback_fn_t *comp,
      * 
    */ -APR_DECLARE(void) apr_table_overlap(apr_table_t *a, const apr_table_t *b, +APR_DECLARE(void) fspr_table_overlap(fspr_table_t *a, const fspr_table_t *b, unsigned flags); /** @@ -438,7 +438,7 @@ APR_DECLARE(void) apr_table_overlap(apr_table_t *a, const apr_table_t *b, * @param flags APR_OVERLAP_TABLES_MERGE to merge, or * APR_OVERLAP_TABLES_SET to overwrite */ -APR_DECLARE(void) apr_table_compress(apr_table_t *t, unsigned flags); +APR_DECLARE(void) fspr_table_compress(fspr_table_t *t, unsigned flags); /** @} */ diff --git a/libs/apr/include/apr_thread_cond.h b/libs/apr/include/fspr_thread_cond.h similarity index 79% rename from libs/apr/include/apr_thread_cond.h rename to libs/apr/include/fspr_thread_cond.h index 3744b090425..7ece46e2814 100644 --- a/libs/apr/include/apr_thread_cond.h +++ b/libs/apr/include/fspr_thread_cond.h @@ -18,15 +18,15 @@ #define APR_THREAD_COND_H /** - * @file apr_thread_cond.h + * @file fspr_thread_cond.h * @brief APR Condition Variable Routines */ -#include "apr.h" -#include "apr_pools.h" -#include "apr_errno.h" -#include "apr_time.h" -#include "apr_thread_mutex.h" +#include "fspr.h" +#include "fspr_pools.h" +#include "fspr_errno.h" +#include "fspr_time.h" +#include "fspr_thread_mutex.h" #ifdef __cplusplus extern "C" { @@ -35,13 +35,13 @@ extern "C" { #if APR_HAS_THREADS || defined(DOXYGEN) /** - * @defgroup apr_thread_cond Condition Variable Routines + * @defgroup fspr_thread_cond Condition Variable Routines * @ingroup APR * @{ */ /** Opaque structure for thread condition variables */ -typedef struct apr_thread_cond_t apr_thread_cond_t; +typedef struct fspr_thread_cond_t fspr_thread_cond_t; /** * Note: destroying a condition variable (or likewise, destroying or @@ -56,8 +56,8 @@ typedef struct apr_thread_cond_t apr_thread_cond_t; * will be stored. * @param pool the pool from which to allocate the mutex. */ -APR_DECLARE(apr_status_t) apr_thread_cond_create(apr_thread_cond_t **cond, - apr_pool_t *pool); +APR_DECLARE(fspr_status_t) fspr_thread_cond_create(fspr_thread_cond_t **cond, + fspr_pool_t *pool); /** * Put the active calling thread to sleep until signaled to wake up. Each @@ -71,8 +71,8 @@ APR_DECLARE(apr_status_t) apr_thread_cond_create(apr_thread_cond_t **cond, * is released while the thread is asleep, and is again acquired before * returning from this function. */ -APR_DECLARE(apr_status_t) apr_thread_cond_wait(apr_thread_cond_t *cond, - apr_thread_mutex_t *mutex); +APR_DECLARE(fspr_status_t) fspr_thread_cond_wait(fspr_thread_cond_t *cond, + fspr_thread_mutex_t *mutex); /** * Put the active calling thread to sleep until signaled to wake up or @@ -90,9 +90,9 @@ APR_DECLARE(apr_status_t) apr_thread_cond_wait(apr_thread_cond_t *cond, * will wake up before this time, otherwise the error APR_TIMEUP * is returned. */ -APR_DECLARE(apr_status_t) apr_thread_cond_timedwait(apr_thread_cond_t *cond, - apr_thread_mutex_t *mutex, - apr_interval_time_t timeout); +APR_DECLARE(fspr_status_t) fspr_thread_cond_timedwait(fspr_thread_cond_t *cond, + fspr_thread_mutex_t *mutex, + fspr_interval_time_t timeout); /** * Signals a single thread, if one exists, that is blocking on the given @@ -101,7 +101,7 @@ APR_DECLARE(apr_status_t) apr_thread_cond_timedwait(apr_thread_cond_t *cond, * is desired, that mutex must be locked while calling this function. * @param cond the condition variable on which to produce the signal. */ -APR_DECLARE(apr_status_t) apr_thread_cond_signal(apr_thread_cond_t *cond); +APR_DECLARE(fspr_status_t) fspr_thread_cond_signal(fspr_thread_cond_t *cond); /** * Signals all threads blocking on the given condition variable. @@ -109,17 +109,17 @@ APR_DECLARE(apr_status_t) apr_thread_cond_signal(apr_thread_cond_t *cond); * the associated mutex. This will happen in a serialized manner. * @param cond the condition variable on which to produce the broadcast. */ -APR_DECLARE(apr_status_t) apr_thread_cond_broadcast(apr_thread_cond_t *cond); +APR_DECLARE(fspr_status_t) fspr_thread_cond_broadcast(fspr_thread_cond_t *cond); /** * Destroy the condition variable and free the associated memory. * @param cond the condition variable to destroy. */ -APR_DECLARE(apr_status_t) apr_thread_cond_destroy(apr_thread_cond_t *cond); +APR_DECLARE(fspr_status_t) fspr_thread_cond_destroy(fspr_thread_cond_t *cond); /** * Get the pool used by this thread_cond. - * @return apr_pool_t the pool + * @return fspr_pool_t the pool */ APR_POOL_DECLARE_ACCESSOR(thread_cond); diff --git a/libs/apr/include/apr_thread_mutex.h b/libs/apr/include/fspr_thread_mutex.h similarity index 81% rename from libs/apr/include/apr_thread_mutex.h rename to libs/apr/include/fspr_thread_mutex.h index 4596dce5d22..0edf7942d60 100644 --- a/libs/apr/include/apr_thread_mutex.h +++ b/libs/apr/include/fspr_thread_mutex.h @@ -18,12 +18,12 @@ #define APR_THREAD_MUTEX_H /** - * @file apr_thread_mutex.h + * @file fspr_thread_mutex.h * @brief APR Thread Mutex Routines */ -#include "apr.h" -#include "apr_errno.h" +#include "fspr.h" +#include "fspr_errno.h" #ifdef __cplusplus extern "C" { @@ -32,20 +32,20 @@ extern "C" { #if APR_HAS_THREADS || defined(DOXYGEN) /** - * @defgroup apr_thread_mutex Thread Mutex Routines + * @defgroup fspr_thread_mutex Thread Mutex Routines * @ingroup APR * @{ */ /** Opaque thread-local mutex structure */ -typedef struct apr_thread_mutex_t apr_thread_mutex_t; +typedef struct fspr_thread_mutex_t fspr_thread_mutex_t; #define APR_THREAD_MUTEX_DEFAULT 0x0 /**< platform-optimal lock behavior */ #define APR_THREAD_MUTEX_NESTED 0x1 /**< enable nested (recursive) locks */ #define APR_THREAD_MUTEX_UNNESTED 0x2 /**< disable nested locks */ /* Delayed the include to avoid a circular reference */ -#include "apr_pools.h" +#include "fspr_pools.h" /** * Create and initialize a mutex that can be used to synchronize threads. @@ -62,15 +62,15 @@ typedef struct apr_thread_mutex_t apr_thread_mutex_t; * most optimial mutex based on a given platform's performance charateristics, * it will behave as either a nested or an unnested lock. */ -APR_DECLARE(apr_status_t) apr_thread_mutex_create(apr_thread_mutex_t **mutex, +APR_DECLARE(fspr_status_t) fspr_thread_mutex_create(fspr_thread_mutex_t **mutex, unsigned int flags, - apr_pool_t *pool); + fspr_pool_t *pool); /** * Acquire the lock for the given mutex. If the mutex is already locked, * the current thread will be put to sleep until the lock becomes available. * @param mutex the mutex on which to acquire the lock. */ -APR_DECLARE(apr_status_t) apr_thread_mutex_lock(apr_thread_mutex_t *mutex); +APR_DECLARE(fspr_status_t) fspr_thread_mutex_lock(fspr_thread_mutex_t *mutex); /** * Attempt to acquire the lock for the given mutex. If the mutex has already @@ -79,23 +79,23 @@ APR_DECLARE(apr_status_t) apr_thread_mutex_lock(apr_thread_mutex_t *mutex); * if the return value was APR_EBUSY, for portability reasons. * @param mutex the mutex on which to attempt the lock acquiring. */ -APR_DECLARE(apr_status_t) apr_thread_mutex_trylock(apr_thread_mutex_t *mutex); +APR_DECLARE(fspr_status_t) fspr_thread_mutex_trylock(fspr_thread_mutex_t *mutex); /** * Release the lock for the given mutex. * @param mutex the mutex from which to release the lock. */ -APR_DECLARE(apr_status_t) apr_thread_mutex_unlock(apr_thread_mutex_t *mutex); +APR_DECLARE(fspr_status_t) fspr_thread_mutex_unlock(fspr_thread_mutex_t *mutex); /** * Destroy the mutex and free the memory associated with the lock. * @param mutex the mutex to destroy. */ -APR_DECLARE(apr_status_t) apr_thread_mutex_destroy(apr_thread_mutex_t *mutex); +APR_DECLARE(fspr_status_t) fspr_thread_mutex_destroy(fspr_thread_mutex_t *mutex); /** * Get the pool used by this thread_mutex. - * @return apr_pool_t the pool + * @return fspr_pool_t the pool */ APR_POOL_DECLARE_ACCESSOR(thread_mutex); diff --git a/libs/apr/include/apr_thread_proc.h b/libs/apr/include/fspr_thread_proc.h similarity index 71% rename from libs/apr/include/apr_thread_proc.h rename to libs/apr/include/fspr_thread_proc.h index c7930901b2f..842f0450922 100644 --- a/libs/apr/include/apr_thread_proc.h +++ b/libs/apr/include/fspr_thread_proc.h @@ -18,14 +18,14 @@ #define APR_THREAD_PROC_H /** - * @file apr_thread_proc.h + * @file fspr_thread_proc.h * @brief APR Thread and Process Library */ -#include "apr.h" -#include "apr_file_io.h" -#include "apr_pools.h" -#include "apr_errno.h" +#include "fspr.h" +#include "fspr_file_io.h" +#include "fspr_pools.h" +#include "fspr_errno.h" #if APR_HAVE_STRUCT_RLIMIT #include @@ -37,7 +37,7 @@ extern "C" { #endif /* __cplusplus */ /** - * @defgroup apr_thread_proc Threads and Process Functions + * @defgroup fspr_thread_proc Threads and Process Functions * @ingroup APR * @{ */ @@ -50,12 +50,12 @@ typedef enum { APR_SHELLCMD_ENV /**< use the shell to invoke the program, * replicating our environment */ -} apr_cmdtype_e; +} fspr_cmdtype_e; typedef enum { APR_WAIT, /**< wait for the specified process to finish */ APR_NOWAIT /**< do not wait -- just see if it has finished */ -} apr_wait_how_e; +} fspr_wait_how_e; /* I am specifically calling out the values so that the macros below make * more sense. Yes, I know I don't need to, but I am hoping this makes what @@ -66,7 +66,7 @@ typedef enum { APR_PROC_EXIT = 1, /**< process exited normally */ APR_PROC_SIGNAL = 2, /**< process exited due to a signal */ APR_PROC_SIGNAL_CORE = 4 /**< process exited and dumped a core file */ -} apr_exit_why_e; +} fspr_exit_why_e; /** did we exit the process */ #define APR_PROC_CHECK_EXIT(x) (x & APR_PROC_EXIT) @@ -75,25 +75,25 @@ typedef enum { /** did we get core */ #define APR_PROC_CHECK_CORE_DUMP(x) (x & APR_PROC_SIGNAL_CORE) -/** @see apr_procattr_io_set */ +/** @see fspr_procattr_io_set */ #define APR_NO_PIPE 0 -/** @see apr_procattr_io_set */ +/** @see fspr_procattr_io_set */ #define APR_FULL_BLOCK 1 -/** @see apr_procattr_io_set */ +/** @see fspr_procattr_io_set */ #define APR_FULL_NONBLOCK 2 -/** @see apr_procattr_io_set */ +/** @see fspr_procattr_io_set */ #define APR_PARENT_BLOCK 3 -/** @see apr_procattr_io_set */ +/** @see fspr_procattr_io_set */ #define APR_CHILD_BLOCK 4 -/** @see apr_procattr_limit_set */ +/** @see fspr_procattr_limit_set */ #define APR_LIMIT_CPU 0 -/** @see apr_procattr_limit_set */ +/** @see fspr_procattr_limit_set */ #define APR_LIMIT_MEM 1 -/** @see apr_procattr_limit_set */ +/** @see fspr_procattr_limit_set */ #define APR_LIMIT_NPROC 2 -/** @see apr_procattr_limit_set */ +/** @see fspr_procattr_limit_set */ #define APR_LIMIT_NOFILE 3 /** @@ -119,15 +119,15 @@ typedef enum { /** @} */ /** The APR process type */ -typedef struct apr_proc_t { +typedef struct fspr_proc_t { /** The process ID */ pid_t pid; /** Parent's side of pipe to child's stdin */ - apr_file_t *in; + fspr_file_t *in; /** Parent's side of pipe to child's stdout */ - apr_file_t *out; + fspr_file_t *out; /** Parent's side of pipe to child's stdouterr */ - apr_file_t *err; + fspr_file_t *err; #if APR_HAS_PROC_INVOKED || defined(DOXYGEN) /** Diagnositics/debugging string of the command invoked for * this process [only present if APR_HAS_PROC_INVOKED is true] @@ -147,51 +147,51 @@ typedef struct apr_proc_t { */ HANDLE hproc; #endif -} apr_proc_t; +} fspr_proc_t; /** * The prototype for APR child errfn functions. (See the description - * of apr_procattr_child_errfn_set() for more information.) + * of fspr_procattr_child_errfn_set() for more information.) * It is passed the following parameters: - * @param pool Pool associated with the apr_proc_t. If your child + * @param pool Pool associated with the fspr_proc_t. If your child * error function needs user data, associate it with this * pool. * @param err APR error code describing the error * @param description Text description of type of processing which failed */ -typedef void (apr_child_errfn_t)(apr_pool_t *proc, apr_status_t err, +typedef void (fspr_child_errfn_t)(fspr_pool_t *proc, fspr_status_t err, const char *description); /** Opaque Thread structure. */ -typedef struct apr_thread_t apr_thread_t; +typedef struct fspr_thread_t fspr_thread_t; /** Opaque Thread attributes structure. */ -typedef struct apr_threadattr_t apr_threadattr_t; +typedef struct fspr_threadattr_t fspr_threadattr_t; /** Opaque Process attributes structure. */ -typedef struct apr_procattr_t apr_procattr_t; +typedef struct fspr_procattr_t fspr_procattr_t; /** Opaque control variable for one-time atomic variables. */ -typedef struct apr_thread_once_t apr_thread_once_t; +typedef struct fspr_thread_once_t fspr_thread_once_t; /** Opaque thread private address space. */ -typedef struct apr_threadkey_t apr_threadkey_t; +typedef struct fspr_threadkey_t fspr_threadkey_t; /** Opaque record of child process. */ -typedef struct apr_other_child_rec_t apr_other_child_rec_t; +typedef struct fspr_other_child_rec_t fspr_other_child_rec_t; /** * The prototype for any APR thread worker functions. */ -typedef void *(APR_THREAD_FUNC *apr_thread_start_t)(apr_thread_t*, void*); +typedef void *(APR_THREAD_FUNC *fspr_thread_start_t)(fspr_thread_t*, void*); typedef enum { APR_KILL_NEVER, /**< process is never sent any signals */ - APR_KILL_ALWAYS, /**< process is sent SIGKILL on apr_pool_t cleanup */ + APR_KILL_ALWAYS, /**< process is sent SIGKILL on fspr_pool_t cleanup */ APR_KILL_AFTER_TIMEOUT, /**< SIGTERM, wait 3 seconds, SIGKILL */ APR_JUST_WAIT, /**< wait forever for the process to complete */ APR_KILL_ONLY_ONCE /**< send SIGTERM and then wait */ -} apr_kill_conditions_e; +} fspr_kill_conditions_e; /* Thread Function definitions */ @@ -202,16 +202,16 @@ typedef enum { * @param new_attr The newly created threadattr. * @param cont The pool to use */ -APR_DECLARE(apr_status_t) apr_threadattr_create(apr_threadattr_t **new_attr, - apr_pool_t *cont); +APR_DECLARE(fspr_status_t) fspr_threadattr_create(fspr_threadattr_t **new_attr, + fspr_pool_t *cont); /** * Set if newly created threads should be created in detached state. * @param attr The threadattr to affect * @param on Non-zero if detached threads should be created. */ -APR_DECLARE(apr_status_t) apr_threadattr_detach_set(apr_threadattr_t *attr, - apr_int32_t on); +APR_DECLARE(fspr_status_t) fspr_threadattr_detach_set(fspr_threadattr_t *attr, + fspr_int32_t on); /** * Get the detach state for this threadattr. @@ -219,15 +219,15 @@ APR_DECLARE(apr_status_t) apr_threadattr_detach_set(apr_threadattr_t *attr, * @return APR_DETACH if threads are to be detached, or APR_NOTDETACH * if threads are to be joinable. */ -APR_DECLARE(apr_status_t) apr_threadattr_detach_get(apr_threadattr_t *attr); +APR_DECLARE(fspr_status_t) fspr_threadattr_detach_get(fspr_threadattr_t *attr); /** * Set the stack size of newly created threads. * @param attr The threadattr to affect * @param stacksize The stack size in bytes */ -APR_DECLARE(apr_status_t) apr_threadattr_stacksize_set(apr_threadattr_t *attr, - apr_size_t stacksize); +APR_DECLARE(fspr_status_t) fspr_threadattr_stacksize_set(fspr_threadattr_t *attr, + fspr_size_t stacksize); /** * Set the stack guard area size of newly created threads. @@ -239,8 +239,8 @@ APR_DECLARE(apr_status_t) apr_threadattr_stacksize_set(apr_threadattr_t *attr, * and increases memory management overhead. Setting the guard area * size to zero hence trades off reliable behaviour on stack overflow * for performance. */ -APR_DECLARE(apr_status_t) apr_threadattr_guardsize_set(apr_threadattr_t *attr, - apr_size_t guardsize); +APR_DECLARE(fspr_status_t) fspr_threadattr_guardsize_set(fspr_threadattr_t *attr, + fspr_size_t guardsize); /** * Create a new thread of execution @@ -250,40 +250,40 @@ APR_DECLARE(apr_status_t) apr_threadattr_guardsize_set(apr_threadattr_t *attr, * @param data Any data to be passed to the starting function * @param cont The pool to use */ -APR_DECLARE(apr_status_t) apr_thread_create(apr_thread_t **new_thread, - apr_threadattr_t *attr, - apr_thread_start_t func, - void *data, apr_pool_t *cont); +APR_DECLARE(fspr_status_t) fspr_thread_create(fspr_thread_t **new_thread, + fspr_threadattr_t *attr, + fspr_thread_start_t func, + void *data, fspr_pool_t *cont); /** * stop the current thread * @param thd The thread to stop * @param retval The return value to pass back to any thread that cares */ -APR_DECLARE(apr_status_t) apr_thread_exit(apr_thread_t *thd, - apr_status_t retval); +APR_DECLARE(fspr_status_t) fspr_thread_exit(fspr_thread_t *thd, + fspr_status_t retval); /** * block until the desired thread stops executing. * @param retval The return value from the dead thread. * @param thd The thread to join */ -APR_DECLARE(apr_status_t) apr_thread_join(apr_status_t *retval, - apr_thread_t *thd); +APR_DECLARE(fspr_status_t) fspr_thread_join(fspr_status_t *retval, + fspr_thread_t *thd); /** * force the current thread to yield the processor */ -APR_DECLARE(void) apr_thread_yield(void); +APR_DECLARE(void) fspr_thread_yield(void); /** - * Initialize the control variable for apr_thread_once. If this isn't - * called, apr_initialize won't work. + * Initialize the control variable for fspr_thread_once. If this isn't + * called, fspr_initialize won't work. * @param control The control variable to initialize * @param p The pool to allocate data from. */ -APR_DECLARE(apr_status_t) apr_thread_once_init(apr_thread_once_t **control, - apr_pool_t *p); +APR_DECLARE(fspr_status_t) fspr_thread_once_init(fspr_thread_once_t **control, + fspr_pool_t *p); /** * Run the specified function one time, regardless of how many threads @@ -294,14 +294,14 @@ APR_DECLARE(apr_status_t) apr_thread_once_init(apr_thread_once_t **control, * if the function has ever been called before. * @param func The function to call. */ -APR_DECLARE(apr_status_t) apr_thread_once(apr_thread_once_t *control, +APR_DECLARE(fspr_status_t) fspr_thread_once(fspr_thread_once_t *control, void (*func)(void)); /** * detach a thread * @param thd The thread to detach */ -APR_DECLARE(apr_status_t) apr_thread_detach(apr_thread_t *thd); +APR_DECLARE(fspr_status_t) fspr_thread_detach(fspr_thread_t *thd); /** * Return the pool associated with the current thread. @@ -309,8 +309,8 @@ APR_DECLARE(apr_status_t) apr_thread_detach(apr_thread_t *thd); * @param key The key to associate with the data * @param thread The currently open thread. */ -APR_DECLARE(apr_status_t) apr_thread_data_get(void **data, const char *key, - apr_thread_t *thread); +APR_DECLARE(fspr_status_t) fspr_thread_data_get(void **data, const char *key, + fspr_thread_t *thread); /** * Return the pool associated with the current thread. @@ -319,9 +319,9 @@ APR_DECLARE(apr_status_t) apr_thread_data_get(void **data, const char *key, * @param cleanup The cleanup routine to use when the thread is destroyed. * @param thread The currently open thread. */ -APR_DECLARE(apr_status_t) apr_thread_data_set(void *data, const char *key, - apr_status_t (*cleanup) (void *), - apr_thread_t *thread); +APR_DECLARE(fspr_status_t) fspr_thread_data_set(void *data, const char *key, + fspr_status_t (*cleanup) (void *), + fspr_thread_t *thread); /** * Create and initialize a new thread private address space @@ -329,31 +329,31 @@ APR_DECLARE(apr_status_t) apr_thread_data_set(void *data, const char *key, * @param dest The destructor to use when freeing the private memory. * @param cont The pool to use */ -APR_DECLARE(apr_status_t) apr_threadkey_private_create(apr_threadkey_t **key, +APR_DECLARE(fspr_status_t) fspr_threadkey_private_create(fspr_threadkey_t **key, void (*dest)(void *), - apr_pool_t *cont); + fspr_pool_t *cont); /** * Get a pointer to the thread private memory * @param new_mem The data stored in private memory * @param key The handle for the desired thread private memory */ -APR_DECLARE(apr_status_t) apr_threadkey_private_get(void **new_mem, - apr_threadkey_t *key); +APR_DECLARE(fspr_status_t) fspr_threadkey_private_get(void **new_mem, + fspr_threadkey_t *key); /** * Set the data to be stored in thread private memory * @param priv The data to be stored in private memory * @param key The handle for the desired thread private memory */ -APR_DECLARE(apr_status_t) apr_threadkey_private_set(void *priv, - apr_threadkey_t *key); +APR_DECLARE(fspr_status_t) fspr_threadkey_private_set(void *priv, + fspr_threadkey_t *key); /** * Free the thread private memory * @param key The handle for the desired thread private memory */ -APR_DECLARE(apr_status_t) apr_threadkey_private_delete(apr_threadkey_t *key); +APR_DECLARE(fspr_status_t) fspr_threadkey_private_delete(fspr_threadkey_t *key); /** * Return the pool associated with the current threadkey. @@ -361,8 +361,8 @@ APR_DECLARE(apr_status_t) apr_threadkey_private_delete(apr_threadkey_t *key); * @param key The key associated with the data * @param threadkey The currently open threadkey. */ -APR_DECLARE(apr_status_t) apr_threadkey_data_get(void **data, const char *key, - apr_threadkey_t *threadkey); +APR_DECLARE(fspr_status_t) fspr_threadkey_data_get(void **data, const char *key, + fspr_threadkey_t *threadkey); /** * Return the pool associated with the current threadkey. @@ -371,9 +371,9 @@ APR_DECLARE(apr_status_t) apr_threadkey_data_get(void **data, const char *key, * @param cleanup The cleanup routine to use when the file is destroyed. * @param threadkey The currently open threadkey. */ -APR_DECLARE(apr_status_t) apr_threadkey_data_set(void *data, const char *key, - apr_status_t (*cleanup) (void *), - apr_threadkey_t *threadkey); +APR_DECLARE(fspr_status_t) fspr_threadkey_data_set(void *data, const char *key, + fspr_status_t (*cleanup) (void *), + fspr_threadkey_t *threadkey); #endif @@ -382,8 +382,8 @@ APR_DECLARE(apr_status_t) apr_threadkey_data_set(void *data, const char *key, * @param new_attr The newly created procattr. * @param cont The pool to use */ -APR_DECLARE(apr_status_t) apr_procattr_create(apr_procattr_t **new_attr, - apr_pool_t *cont); +APR_DECLARE(fspr_status_t) fspr_procattr_create(fspr_procattr_t **new_attr, + fspr_pool_t *cont); /** * Determine if any of stdin, stdout, or stderr should be linked to pipes @@ -393,15 +393,15 @@ APR_DECLARE(apr_status_t) apr_procattr_create(apr_procattr_t **new_attr, * @param out Should stdout be a pipe back to the parent? * @param err Should stderr be a pipe back to the parent? */ -APR_DECLARE(apr_status_t) apr_procattr_io_set(apr_procattr_t *attr, - apr_int32_t in, apr_int32_t out, - apr_int32_t err); +APR_DECLARE(fspr_status_t) fspr_procattr_io_set(fspr_procattr_t *attr, + fspr_int32_t in, fspr_int32_t out, + fspr_int32_t err); /** - * Set the child_in and/or parent_in values to existing apr_file_t values. + * Set the child_in and/or parent_in values to existing fspr_file_t values. * @param attr The procattr we care about. - * @param child_in apr_file_t value to use as child_in. Must be a valid file. - * @param parent_in apr_file_t value to use as parent_in. Must be a valid file. + * @param child_in fspr_file_t value to use as child_in. Must be a valid file. + * @param parent_in fspr_file_t value to use as parent_in. Must be a valid file. * @remark This is NOT a required initializer function. This is * useful if you have already opened a pipe (or multiple files) * that you wish to use, perhaps persistently across multiple @@ -409,37 +409,37 @@ APR_DECLARE(apr_status_t) apr_procattr_io_set(apr_procattr_t *attr, * extra function calls by not creating your own pipe since this * creates one in the process space for you. */ -APR_DECLARE(apr_status_t) apr_procattr_child_in_set(struct apr_procattr_t *attr, - apr_file_t *child_in, - apr_file_t *parent_in); +APR_DECLARE(fspr_status_t) fspr_procattr_child_in_set(struct fspr_procattr_t *attr, + fspr_file_t *child_in, + fspr_file_t *parent_in); /** - * Set the child_out and parent_out values to existing apr_file_t values. + * Set the child_out and parent_out values to existing fspr_file_t values. * @param attr The procattr we care about. - * @param child_out apr_file_t value to use as child_out. Must be a valid file. - * @param parent_out apr_file_t value to use as parent_out. Must be a valid file. + * @param child_out fspr_file_t value to use as child_out. Must be a valid file. + * @param parent_out fspr_file_t value to use as parent_out. Must be a valid file. * @remark This is NOT a required initializer function. This is * useful if you have already opened a pipe (or multiple files) * that you wish to use, perhaps persistently across multiple * process invocations - such as a log file. */ -APR_DECLARE(apr_status_t) apr_procattr_child_out_set(struct apr_procattr_t *attr, - apr_file_t *child_out, - apr_file_t *parent_out); +APR_DECLARE(fspr_status_t) fspr_procattr_child_out_set(struct fspr_procattr_t *attr, + fspr_file_t *child_out, + fspr_file_t *parent_out); /** - * Set the child_err and parent_err values to existing apr_file_t values. + * Set the child_err and parent_err values to existing fspr_file_t values. * @param attr The procattr we care about. - * @param child_err apr_file_t value to use as child_err. Must be a valid file. - * @param parent_err apr_file_t value to use as parent_err. Must be a valid file. + * @param child_err fspr_file_t value to use as child_err. Must be a valid file. + * @param parent_err fspr_file_t value to use as parent_err. Must be a valid file. * @remark This is NOT a required initializer function. This is * useful if you have already opened a pipe (or multiple files) * that you wish to use, perhaps persistently across multiple * process invocations - such as a log file. */ -APR_DECLARE(apr_status_t) apr_procattr_child_err_set(struct apr_procattr_t *attr, - apr_file_t *child_err, - apr_file_t *parent_err); +APR_DECLARE(fspr_status_t) fspr_procattr_child_err_set(struct fspr_procattr_t *attr, + fspr_file_t *child_err, + fspr_file_t *parent_err); /** * Set which directory the child process should start executing in. @@ -448,7 +448,7 @@ APR_DECLARE(apr_status_t) apr_procattr_child_err_set(struct apr_procattr_t *attr * the parent currently resides in, when the createprocess call * is made. */ -APR_DECLARE(apr_status_t) apr_procattr_dir_set(apr_procattr_t *attr, +APR_DECLARE(fspr_status_t) fspr_procattr_dir_set(fspr_procattr_t *attr, const char *dir); /** @@ -462,16 +462,16 @@ APR_DECLARE(apr_status_t) apr_procattr_dir_set(apr_procattr_t *attr, * APR_PROGRAM_PATH -- Executable program on PATH, copy env * */ -APR_DECLARE(apr_status_t) apr_procattr_cmdtype_set(apr_procattr_t *attr, - apr_cmdtype_e cmd); +APR_DECLARE(fspr_status_t) fspr_procattr_cmdtype_set(fspr_procattr_t *attr, + fspr_cmdtype_e cmd); /** * Determine if the child should start in detached state. * @param attr The procattr we care about. * @param detach Should the child start in detached state? Default is no. */ -APR_DECLARE(apr_status_t) apr_procattr_detach_set(apr_procattr_t *attr, - apr_int32_t detach); +APR_DECLARE(fspr_status_t) fspr_procattr_detach_set(fspr_procattr_t *attr, + fspr_int32_t detach); #if APR_HAVE_STRUCT_RLIMIT /** @@ -486,8 +486,8 @@ APR_DECLARE(apr_status_t) apr_procattr_detach_set(apr_procattr_t *attr, * * @param limit Value to set the limit to. */ -APR_DECLARE(apr_status_t) apr_procattr_limit_set(apr_procattr_t *attr, - apr_int32_t what, +APR_DECLARE(fspr_status_t) fspr_procattr_limit_set(fspr_procattr_t *attr, + fspr_int32_t what, struct rlimit *limit); #endif @@ -496,29 +496,29 @@ APR_DECLARE(apr_status_t) apr_procattr_limit_set(apr_procattr_t *attr, * encounters an error in the child prior to running the specified program. * @param attr The procattr describing the child process to be created. * @param errfn The function to call in the child process. - * @remark At the present time, it will only be called from apr_proc_create() + * @remark At the present time, it will only be called from fspr_proc_create() * on platforms where fork() is used. It will never be called on other - * platforms, on those platforms apr_proc_create() will return the error + * platforms, on those platforms fspr_proc_create() will return the error * in the parent process rather than invoke the callback in the now-forked * child process. */ -APR_DECLARE(apr_status_t) apr_procattr_child_errfn_set(apr_procattr_t *attr, - apr_child_errfn_t *errfn); +APR_DECLARE(fspr_status_t) fspr_procattr_child_errfn_set(fspr_procattr_t *attr, + fspr_child_errfn_t *errfn); /** - * Specify that apr_proc_create() should do whatever it can to report - * failures to the caller of apr_proc_create(), rather than find out in + * Specify that fspr_proc_create() should do whatever it can to report + * failures to the caller of fspr_proc_create(), rather than find out in * the child. * @param attr The procattr describing the child process to be created. * @param chk Flag to indicate whether or not extra work should be done * to try to report failures to the caller. - * @remark This flag only affects apr_proc_create() on platforms where + * @remark This flag only affects fspr_proc_create() on platforms where * fork() is used. This leads to extra overhead in the calling * process, but that may help the application handle such * errors more gracefully. */ -APR_DECLARE(apr_status_t) apr_procattr_error_check_set(apr_procattr_t *attr, - apr_int32_t chk); +APR_DECLARE(fspr_status_t) fspr_procattr_error_check_set(fspr_procattr_t *attr, + fspr_int32_t chk); /** * Determine if the child should start in its own address space or using the @@ -527,8 +527,8 @@ APR_DECLARE(apr_status_t) apr_procattr_error_check_set(apr_procattr_t *attr, * @param addrspace Should the child start in its own address space? Default * is no on NetWare and yes on other platforms. */ -APR_DECLARE(apr_status_t) apr_procattr_addrspace_set(apr_procattr_t *attr, - apr_int32_t addrspace); +APR_DECLARE(fspr_status_t) fspr_procattr_addrspace_set(fspr_procattr_t *attr, + fspr_int32_t addrspace); /** * Set the username used for running process @@ -538,7 +538,7 @@ APR_DECLARE(apr_status_t) apr_procattr_addrspace_set(apr_procattr_t *attr, * or any other platform having * APR_PROCATTR_USER_SET_REQUIRES_PASSWORD set. */ -APR_DECLARE(apr_status_t) apr_procattr_user_set(apr_procattr_t *attr, +APR_DECLARE(fspr_status_t) fspr_procattr_user_set(fspr_procattr_t *attr, const char *username, const char *password); @@ -547,7 +547,7 @@ APR_DECLARE(apr_status_t) apr_procattr_user_set(apr_procattr_t *attr, * @param attr The procattr we care about. * @param groupname The group name used */ -APR_DECLARE(apr_status_t) apr_procattr_group_set(apr_procattr_t *attr, +APR_DECLARE(fspr_status_t) fspr_procattr_group_set(fspr_procattr_t *attr, const char *groupname); @@ -560,7 +560,7 @@ APR_DECLARE(apr_status_t) apr_procattr_group_set(apr_procattr_t *attr, * @remark returns APR_INCHILD for the child, and APR_INPARENT for the parent * or an error. */ -APR_DECLARE(apr_status_t) apr_proc_fork(apr_proc_t *proc, apr_pool_t *cont); +APR_DECLARE(fspr_status_t) fspr_proc_fork(fspr_proc_t *proc, fspr_pool_t *cont); #endif /** @@ -577,14 +577,14 @@ APR_DECLARE(apr_status_t) apr_proc_fork(apr_proc_t *proc, apr_pool_t *cont); * process * @param pool The pool to use. * @note This function returns without waiting for the new process to terminate; - * use apr_proc_wait for that. + * use fspr_proc_wait for that. */ -APR_DECLARE(apr_status_t) apr_proc_create(apr_proc_t *new_proc, +APR_DECLARE(fspr_status_t) fspr_proc_create(fspr_proc_t *new_proc, const char *progname, const char * const *args, const char * const *env, - apr_procattr_t *attr, - apr_pool_t *pool); + fspr_procattr_t *attr, + fspr_pool_t *pool); /** * Wait for a child process to die @@ -612,9 +612,9 @@ APR_DECLARE(apr_status_t) apr_proc_create(apr_proc_t *new_proc, * APR_CHILD_NOTDONE -- child is still running. * */ -APR_DECLARE(apr_status_t) apr_proc_wait(apr_proc_t *proc, - int *exitcode, apr_exit_why_e *exitwhy, - apr_wait_how_e waithow); +APR_DECLARE(fspr_status_t) fspr_proc_wait(fspr_proc_t *proc, + int *exitcode, fspr_exit_why_e *exitwhy, + fspr_wait_how_e waithow); /** * Wait for any current child process to die and return information @@ -642,11 +642,11 @@ APR_DECLARE(apr_status_t) apr_proc_wait(apr_proc_t *proc, * @bug Passing proc as a *proc rather than **proc was an odd choice * for some platforms... this should be revisited in 1.0 */ -APR_DECLARE(apr_status_t) apr_proc_wait_all_procs(apr_proc_t *proc, +APR_DECLARE(fspr_status_t) fspr_proc_wait_all_procs(fspr_proc_t *proc, int *exitcode, - apr_exit_why_e *exitwhy, - apr_wait_how_e waithow, - apr_pool_t *p); + fspr_exit_why_e *exitwhy, + fspr_wait_how_e waithow, + fspr_pool_t *p); #define APR_PROC_DETACH_FOREGROUND 0 /**< Do not detach */ #define APR_PROC_DETACH_DAEMONIZE 1 /**< Detach */ @@ -657,7 +657,7 @@ APR_DECLARE(apr_status_t) apr_proc_wait_all_procs(apr_proc_t *proc, * and become a background process, else it will * stay in the foreground. */ -APR_DECLARE(apr_status_t) apr_proc_detach(int daemonize); +APR_DECLARE(fspr_status_t) fspr_proc_detach(int daemonize); /** * Register an other_child -- a child associated to its registered @@ -676,12 +676,12 @@ APR_DECLARE(apr_status_t) apr_proc_detach(int daemonize); * proc->in/out/err handles should be health checked. * @bug no platform currently tests the pipes health. */ -APR_DECLARE(void) apr_proc_other_child_register(apr_proc_t *proc, +APR_DECLARE(void) fspr_proc_other_child_register(fspr_proc_t *proc, void (*maintenance) (int reason, void *, int status), - void *data, apr_file_t *write_fd, - apr_pool_t *p); + void *data, fspr_file_t *write_fd, + fspr_pool_t *p); /** * Stop watching the specified other child. @@ -692,7 +692,7 @@ APR_DECLARE(void) apr_proc_other_child_register(apr_proc_t *proc, * themself by loading ocr->next before calling any maintenance * function. */ -APR_DECLARE(void) apr_proc_other_child_unregister(void *data); +APR_DECLARE(void) fspr_proc_other_child_unregister(void *data); /** * Notify the maintenance callback of a registered other child process @@ -702,10 +702,10 @@ APR_DECLARE(void) apr_proc_other_child_unregister(void *data); * @param status The status to pass to the maintenance function * @remark An example of code using this behavior; *
    - * rv = apr_proc_wait_all_procs(&proc, &exitcode, &status, APR_WAIT, p);
    + * rv = fspr_proc_wait_all_procs(&proc, &exitcode, &status, APR_WAIT, p);
      * if (APR_STATUS_IS_CHILD_DONE(rv)) {
      * #if APR_HAS_OTHER_CHILD
    - *     if (apr_proc_other_child_alert(&proc, APR_OC_REASON_DEATH, status)
    + *     if (fspr_proc_other_child_alert(&proc, APR_OC_REASON_DEATH, status)
      *             == APR_SUCCESS) {
      *         ;  (already handled)
      *     }
    @@ -714,7 +714,7 @@ APR_DECLARE(void) apr_proc_other_child_unregister(void *data);
      *         [... handling non-otherchild processes death ...]
      * 
    */ -APR_DECLARE(apr_status_t) apr_proc_other_child_alert(apr_proc_t *proc, +APR_DECLARE(fspr_status_t) fspr_proc_other_child_alert(fspr_proc_t *proc, int reason, int status); @@ -725,7 +725,7 @@ APR_DECLARE(apr_status_t) apr_proc_other_child_alert(apr_proc_t *proc, * @param ocr The registered other child * @param reason The reason code (e.g. APR_OC_REASON_RESTART) if still running */ -APR_DECLARE(void) apr_proc_other_child_refresh(apr_other_child_rec_t *ocr, +APR_DECLARE(void) fspr_proc_other_child_refresh(fspr_other_child_rec_t *ocr, int reason); /** @@ -734,14 +734,14 @@ APR_DECLARE(void) apr_proc_other_child_refresh(apr_other_child_rec_t *ocr, * code if the process is no longer healthy. * @param reason The reason code (e.g. APR_OC_REASON_RESTART) to running processes */ -APR_DECLARE(void) apr_proc_other_child_refresh_all(int reason); +APR_DECLARE(void) fspr_proc_other_child_refresh_all(int reason); /** * Terminate a process. * @param proc The process to terminate. * @param sig How to kill the process. */ -APR_DECLARE(apr_status_t) apr_proc_kill(apr_proc_t *proc, int sig); +APR_DECLARE(fspr_status_t) fspr_proc_kill(fspr_proc_t *proc, int sig); /** * Register a process to be killed when a pool dies. @@ -750,14 +750,14 @@ APR_DECLARE(apr_status_t) apr_proc_kill(apr_proc_t *proc, int sig); * @param how How to kill the process, one of: *
      *         APR_KILL_NEVER         -- process is never sent any signals
    - *         APR_KILL_ALWAYS        -- process is sent SIGKILL on apr_pool_t cleanup
    + *         APR_KILL_ALWAYS        -- process is sent SIGKILL on fspr_pool_t cleanup
      *         APR_KILL_AFTER_TIMEOUT -- SIGTERM, wait 3 seconds, SIGKILL
      *         APR_JUST_WAIT          -- wait forever for the process to complete
      *         APR_KILL_ONLY_ONCE     -- send SIGTERM and then wait
      * 
    */ -APR_DECLARE(void) apr_pool_note_subprocess(apr_pool_t *a, apr_proc_t *proc, - apr_kill_conditions_e how); +APR_DECLARE(void) fspr_pool_note_subprocess(fspr_pool_t *a, fspr_proc_t *proc, + fspr_kill_conditions_e how); #if APR_HAS_THREADS @@ -767,22 +767,22 @@ APR_DECLARE(void) apr_pool_note_subprocess(apr_pool_t *a, apr_proc_t *proc, * Setup the process for a single thread to be used for all signal handling. * @warning This must be called before any threads are created */ -APR_DECLARE(apr_status_t) apr_setup_signal_thread(void); +APR_DECLARE(fspr_status_t) fspr_setup_signal_thread(void); /** * Make the current thread listen for signals. This thread will loop * forever, calling a provided function whenever it receives a signal. That * functions should return 1 if the signal has been handled, 0 otherwise. * @param signal_handler The function to call when a signal is received - * apr_status_t apr_signal_thread((int)(*signal_handler)(int signum)) + * fspr_status_t fspr_signal_thread((int)(*signal_handler)(int signum)) */ -APR_DECLARE(apr_status_t) apr_signal_thread(int(*signal_handler)(int signum)); +APR_DECLARE(fspr_status_t) fspr_signal_thread(int(*signal_handler)(int signum)); #endif /* (APR_HAVE_SIGWAIT || APR_HAVE_SIGSUSPEND) && !defined(OS2) */ /** * Get the child-pool used by the thread from the thread info. - * @return apr_pool_t the pool + * @return fspr_pool_t the pool */ APR_POOL_DECLARE_ACCESSOR(thread); diff --git a/libs/apr/include/apr_thread_rwlock.h b/libs/apr/include/fspr_thread_rwlock.h similarity index 78% rename from libs/apr/include/apr_thread_rwlock.h rename to libs/apr/include/fspr_thread_rwlock.h index 0bd958fbfa3..57f36fce316 100644 --- a/libs/apr/include/apr_thread_rwlock.h +++ b/libs/apr/include/fspr_thread_rwlock.h @@ -18,13 +18,13 @@ #define APR_THREAD_RWLOCK_H /** - * @file apr_thread_rwlock.h + * @file fspr_thread_rwlock.h * @brief APR Reader/Writer Lock Routines */ -#include "apr.h" -#include "apr_pools.h" -#include "apr_errno.h" +#include "fspr.h" +#include "fspr_pools.h" +#include "fspr_errno.h" #ifdef __cplusplus extern "C" { @@ -33,13 +33,13 @@ extern "C" { #if APR_HAS_THREADS /** - * @defgroup apr_thread_rwlock Reader/Writer Lock Routines + * @defgroup fspr_thread_rwlock Reader/Writer Lock Routines * @ingroup APR * @{ */ /** Opaque read-write thread-safe lock. */ -typedef struct apr_thread_rwlock_t apr_thread_rwlock_t; +typedef struct fspr_thread_rwlock_t fspr_thread_rwlock_t; /** * Note: The following operations have undefined results: unlocking a @@ -57,19 +57,19 @@ typedef struct apr_thread_rwlock_t apr_thread_rwlock_t; * will be stored. * @param pool the pool from which to allocate the mutex. */ -APR_DECLARE(apr_status_t) apr_thread_rwlock_create(apr_thread_rwlock_t **rwlock, - apr_pool_t *pool); +APR_DECLARE(fspr_status_t) fspr_thread_rwlock_create(fspr_thread_rwlock_t **rwlock, + fspr_pool_t *pool); /** * Acquire a shared-read lock on the given read-write lock. This will allow * multiple threads to enter the same critical section while they have acquired * the read lock. * @param rwlock the read-write lock on which to acquire the shared read. */ -APR_DECLARE(apr_status_t) apr_thread_rwlock_rdlock(apr_thread_rwlock_t *rwlock); +APR_DECLARE(fspr_status_t) fspr_thread_rwlock_rdlock(fspr_thread_rwlock_t *rwlock); /** * Attempt to acquire the shared-read lock on the given read-write lock. This - * is the same as apr_thread_rwlock_rdlock(), only that the function fails + * is the same as fspr_thread_rwlock_rdlock(), only that the function fails * if there is another thread holding the write lock, or if there are any * write threads blocking on the lock. If the function fails for this case, * APR_EBUSY will be returned. Note: it is important that the @@ -77,7 +77,7 @@ APR_DECLARE(apr_status_t) apr_thread_rwlock_rdlock(apr_thread_rwlock_t *rwlock); * APR_EBUSY, for portability reasons. * @param rwlock the rwlock on which to attempt the shared read. */ -APR_DECLARE(apr_status_t) apr_thread_rwlock_tryrdlock(apr_thread_rwlock_t *rwlock); +APR_DECLARE(fspr_status_t) fspr_thread_rwlock_tryrdlock(fspr_thread_rwlock_t *rwlock); /** * Acquire an exclusive-write lock on the given read-write lock. This will @@ -86,35 +86,35 @@ APR_DECLARE(apr_status_t) apr_thread_rwlock_tryrdlock(apr_thread_rwlock_t *rwloc * sleep until it can have exclusive access to the lock. * @param rwlock the read-write lock on which to acquire the exclusive write. */ -APR_DECLARE(apr_status_t) apr_thread_rwlock_wrlock(apr_thread_rwlock_t *rwlock); +APR_DECLARE(fspr_status_t) fspr_thread_rwlock_wrlock(fspr_thread_rwlock_t *rwlock); /** * Attempt to acquire the exclusive-write lock on the given read-write lock. - * This is the same as apr_thread_rwlock_wrlock(), only that the function fails + * This is the same as fspr_thread_rwlock_wrlock(), only that the function fails * if there is any other thread holding the lock (for reading or writing), * in which case the function will return APR_EBUSY. Note: it is important * that the APR_STATUS_IS_EBUSY(s) macro be used to determine if the return * value was APR_EBUSY, for portability reasons. * @param rwlock the rwlock on which to attempt the exclusive write. */ -APR_DECLARE(apr_status_t) apr_thread_rwlock_trywrlock(apr_thread_rwlock_t *rwlock); +APR_DECLARE(fspr_status_t) fspr_thread_rwlock_trywrlock(fspr_thread_rwlock_t *rwlock); /** * Release either the read or write lock currently held by the calling thread * associated with the given read-write lock. * @param rwlock the read-write lock to be released (unlocked). */ -APR_DECLARE(apr_status_t) apr_thread_rwlock_unlock(apr_thread_rwlock_t *rwlock); +APR_DECLARE(fspr_status_t) fspr_thread_rwlock_unlock(fspr_thread_rwlock_t *rwlock); /** * Destroy the read-write lock and free the associated memory. * @param rwlock the rwlock to destroy. */ -APR_DECLARE(apr_status_t) apr_thread_rwlock_destroy(apr_thread_rwlock_t *rwlock); +APR_DECLARE(fspr_status_t) fspr_thread_rwlock_destroy(fspr_thread_rwlock_t *rwlock); /** * Get the pool used by this thread_rwlock. - * @return apr_pool_t the pool + * @return fspr_pool_t the pool */ APR_POOL_DECLARE_ACCESSOR(thread_rwlock); diff --git a/libs/apr/include/apr_time.h b/libs/apr/include/fspr_time.h similarity index 56% rename from libs/apr/include/apr_time.h rename to libs/apr/include/fspr_time.h index 253aa72b4ad..acf66864699 100644 --- a/libs/apr/include/apr_time.h +++ b/libs/apr/include/fspr_time.h @@ -18,111 +18,111 @@ #define APR_TIME_H /** - * @file apr_time.h + * @file fspr_time.h * @brief APR Time Library */ -#include "apr.h" -#include "apr_pools.h" -#include "apr_errno.h" +#include "fspr.h" +#include "fspr_pools.h" +#include "fspr_errno.h" #ifdef __cplusplus extern "C" { #endif /* __cplusplus */ /** - * @defgroup apr_time Time Routines + * @defgroup fspr_time Time Routines * @ingroup APR * @{ */ /** month names */ -APR_DECLARE_DATA extern const char apr_month_snames[12][4]; +APR_DECLARE_DATA extern const char fspr_month_snames[12][4]; /** day names */ -APR_DECLARE_DATA extern const char apr_day_snames[7][4]; +APR_DECLARE_DATA extern const char fspr_day_snames[7][4]; /** number of microseconds since 00:00:00 january 1, 1970 UTC */ -typedef apr_int64_t apr_time_t; +typedef fspr_int64_t fspr_time_t; -/** mechanism to properly type apr_time_t literals */ +/** mechanism to properly type fspr_time_t literals */ #define APR_TIME_C(val) APR_INT64_C(val) -/** mechanism to properly print apr_time_t values */ +/** mechanism to properly print fspr_time_t values */ #define APR_TIME_T_FMT APR_INT64_T_FMT /** intervals for I/O timeouts, in microseconds */ -typedef apr_int64_t apr_interval_time_t; +typedef fspr_int64_t fspr_interval_time_t; /** short interval for I/O timeouts, in microseconds */ -typedef apr_int32_t apr_short_interval_time_t; +typedef fspr_int32_t fspr_short_interval_time_t; /** number of microseconds per second */ #define APR_USEC_PER_SEC APR_TIME_C(1000000) -/** @return apr_time_t as a second */ -#define apr_time_sec(time) ((time) / APR_USEC_PER_SEC) +/** @return fspr_time_t as a second */ +#define fspr_time_sec(time) ((time) / APR_USEC_PER_SEC) -/** @return apr_time_t as a usec */ -#define apr_time_usec(time) ((time) % APR_USEC_PER_SEC) +/** @return fspr_time_t as a usec */ +#define fspr_time_usec(time) ((time) % APR_USEC_PER_SEC) -/** @return apr_time_t as a msec */ -#define apr_time_msec(time) (((time) / 1000) % 1000) +/** @return fspr_time_t as a msec */ +#define fspr_time_msec(time) (((time) / 1000) % 1000) -/** @return apr_time_t as a msec */ -#define apr_time_as_msec(time) ((time) / 1000) +/** @return fspr_time_t as a msec */ +#define fspr_time_as_msec(time) ((time) / 1000) -/** @return a second as an apr_time_t */ -#define apr_time_from_sec(sec) ((apr_time_t)(sec) * APR_USEC_PER_SEC) +/** @return a second as an fspr_time_t */ +#define fspr_time_from_sec(sec) ((fspr_time_t)(sec) * APR_USEC_PER_SEC) -/** @return a second and usec combination as an apr_time_t */ -#define apr_time_make(sec, usec) ((apr_time_t)(sec) * APR_USEC_PER_SEC \ - + (apr_time_t)(usec)) +/** @return a second and usec combination as an fspr_time_t */ +#define fspr_time_make(sec, usec) ((fspr_time_t)(sec) * APR_USEC_PER_SEC \ + + (fspr_time_t)(usec)) /** * @return the current time */ -APR_DECLARE(apr_time_t) apr_time_now(void); +APR_DECLARE(fspr_time_t) fspr_time_now(void); -/** @see apr_time_exp_t */ -typedef struct apr_time_exp_t apr_time_exp_t; +/** @see fspr_time_exp_t */ +typedef struct fspr_time_exp_t fspr_time_exp_t; /** * a structure similar to ANSI struct tm with the following differences: * - tm_usec isn't an ANSI field * - tm_gmtoff isn't an ANSI field (it's a bsdism) */ -struct apr_time_exp_t { +struct fspr_time_exp_t { /** microseconds past tm_sec */ - apr_int32_t tm_usec; + fspr_int32_t tm_usec; /** (0-61) seconds past tm_min */ - apr_int32_t tm_sec; + fspr_int32_t tm_sec; /** (0-59) minutes past tm_hour */ - apr_int32_t tm_min; + fspr_int32_t tm_min; /** (0-23) hours past midnight */ - apr_int32_t tm_hour; + fspr_int32_t tm_hour; /** (1-31) day of the month */ - apr_int32_t tm_mday; + fspr_int32_t tm_mday; /** (0-11) month of the year */ - apr_int32_t tm_mon; + fspr_int32_t tm_mon; /** year since 1900 */ - apr_int32_t tm_year; + fspr_int32_t tm_year; /** (0-6) days since sunday */ - apr_int32_t tm_wday; + fspr_int32_t tm_wday; /** (0-365) days since jan 1 */ - apr_int32_t tm_yday; + fspr_int32_t tm_yday; /** daylight saving time */ - apr_int32_t tm_isdst; + fspr_int32_t tm_isdst; /** seconds east of UTC */ - apr_int32_t tm_gmtoff; + fspr_int32_t tm_gmtoff; }; /** - * convert an ansi time_t to an apr_time_t - * @param result the resulting apr_time_t + * convert an ansi time_t to an fspr_time_t + * @param result the resulting fspr_time_t * @param input the time_t to convert */ -APR_DECLARE(apr_status_t) apr_time_ansi_put(apr_time_t *result, +APR_DECLARE(fspr_status_t) fspr_time_ansi_put(fspr_time_t *result, time_t input); /** @@ -132,76 +132,76 @@ APR_DECLARE(apr_status_t) apr_time_ansi_put(apr_time_t *result, * @param input the time to explode * @param offs the number of seconds offset to apply */ -APR_DECLARE(apr_status_t) apr_time_exp_tz(apr_time_exp_t *result, - apr_time_t input, - apr_int32_t offs); +APR_DECLARE(fspr_status_t) fspr_time_exp_tz(fspr_time_exp_t *result, + fspr_time_t input, + fspr_int32_t offs); /** * convert a time to its human readable components in GMT timezone * @param result the exploded time * @param input the time to explode */ -APR_DECLARE(apr_status_t) apr_time_exp_gmt(apr_time_exp_t *result, - apr_time_t input); +APR_DECLARE(fspr_status_t) fspr_time_exp_gmt(fspr_time_exp_t *result, + fspr_time_t input); /** * convert a time to its human readable components in local timezone * @param result the exploded time * @param input the time to explode */ -APR_DECLARE(apr_status_t) apr_time_exp_lt(apr_time_exp_t *result, - apr_time_t input); +APR_DECLARE(fspr_status_t) fspr_time_exp_lt(fspr_time_exp_t *result, + fspr_time_t input); /** - * Convert time value from human readable format to a numeric apr_time_t + * Convert time value from human readable format to a numeric fspr_time_t * e.g. elapsed usec since epoch * @param result the resulting imploded time * @param input the input exploded time */ -APR_DECLARE(apr_status_t) apr_time_exp_get(apr_time_t *result, - apr_time_exp_t *input); +APR_DECLARE(fspr_status_t) fspr_time_exp_get(fspr_time_t *result, + fspr_time_exp_t *input); /** - * Convert time value from human readable format to a numeric apr_time_t that + * Convert time value from human readable format to a numeric fspr_time_t that * always represents GMT * @param result the resulting imploded time * @param input the input exploded time */ -APR_DECLARE(apr_status_t) apr_time_exp_gmt_get(apr_time_t *result, - apr_time_exp_t *input); +APR_DECLARE(fspr_status_t) fspr_time_exp_gmt_get(fspr_time_t *result, + fspr_time_exp_t *input); /** * Sleep for the specified number of micro-seconds. * @param t desired amount of time to sleep. * @warning May sleep for longer than the specified time. */ -APR_DECLARE(void) apr_sleep(apr_interval_time_t t); +APR_DECLARE(void) fspr_sleep(fspr_interval_time_t t); /** length of a RFC822 Date */ #define APR_RFC822_DATE_LEN (30) /** - * apr_rfc822_date formats dates in the RFC822 + * fspr_rfc822_date formats dates in the RFC822 * format in an efficient manner. It is a fixed length * format which requires the indicated amount of storage, * including the trailing NUL terminator. * @param date_str String to write to. * @param t the time to convert */ -APR_DECLARE(apr_status_t) apr_rfc822_date(char *date_str, apr_time_t t); +APR_DECLARE(fspr_status_t) fspr_rfc822_date(char *date_str, fspr_time_t t); /** length of a CTIME date */ #define APR_CTIME_LEN (25) /** - * apr_ctime formats dates in the ctime() format + * fspr_ctime formats dates in the ctime() format * in an efficient manner. it is a fixed length format * and requires the indicated amount of storage including * the trailing NUL terminator. - * Unlike ANSI/ISO C ctime(), apr_ctime() does not include + * Unlike ANSI/ISO C ctime(), fspr_ctime() does not include * a \n at the end of the string. * @param date_str String to write to. * @param t the time to convert */ -APR_DECLARE(apr_status_t) apr_ctime(char *date_str, apr_time_t t); +APR_DECLARE(fspr_status_t) fspr_ctime(char *date_str, fspr_time_t t); /** * formats the exploded time according to the format specified @@ -211,9 +211,9 @@ APR_DECLARE(apr_status_t) apr_ctime(char *date_str, apr_time_t t); * @param format The format for the time string * @param tm The time to convert */ -APR_DECLARE(apr_status_t) apr_strftime(char *s, apr_size_t *retsize, - apr_size_t max, const char *format, - apr_time_exp_t *tm); +APR_DECLARE(fspr_status_t) fspr_strftime(char *s, fspr_size_t *retsize, + fspr_size_t max, const char *format, + fspr_time_exp_t *tm); /** * Improve the clock resolution for the lifetime of the given pool. @@ -221,7 +221,7 @@ APR_DECLARE(apr_status_t) apr_strftime(char *s, apr_size_t *retsize, * time-sensitive applications, and has no impact on most platforms. * @param p The pool to associate the finer clock resolution */ -APR_DECLARE(void) apr_time_clock_hires(apr_pool_t *p); +APR_DECLARE(void) fspr_time_clock_hires(fspr_pool_t *p); /** @} */ diff --git a/libs/apr/include/apr_user.h b/libs/apr/include/fspr_user.h similarity index 65% rename from libs/apr/include/apr_user.h rename to libs/apr/include/fspr_user.h index 0179e22644c..68c7c753de9 100644 --- a/libs/apr/include/apr_user.h +++ b/libs/apr/include/fspr_user.h @@ -18,20 +18,20 @@ #define APR_USER_H /** - * @file apr_user.h + * @file fspr_user.h * @brief APR User ID Services */ -#include "apr.h" -#include "apr_errno.h" -#include "apr_pools.h" +#include "fspr.h" +#include "fspr_errno.h" +#include "fspr_pools.h" #ifdef __cplusplus extern "C" { #endif /* __cplusplus */ /** - * @defgroup apr_user User and Group ID Services + * @defgroup fspr_user User and Group ID Services * @ingroup APR * @{ */ @@ -40,18 +40,18 @@ extern "C" { * Structure for determining user ownership. */ #ifdef WIN32 -typedef PSID apr_uid_t; +typedef PSID fspr_uid_t; #else -typedef uid_t apr_uid_t; +typedef uid_t fspr_uid_t; #endif /** * Structure for determining group ownership. */ #ifdef WIN32 -typedef PSID apr_gid_t; +typedef PSID fspr_gid_t; #else -typedef gid_t apr_gid_t; +typedef gid_t fspr_gid_t; #endif #if APR_HAS_USER @@ -63,9 +63,9 @@ typedef gid_t apr_gid_t; * @param p The pool from which to allocate working space * @remark This function is available only if APR_HAS_USER is defined. */ -APR_DECLARE(apr_status_t) apr_uid_current(apr_uid_t *userid, - apr_gid_t *groupid, - apr_pool_t *p); +APR_DECLARE(fspr_status_t) fspr_uid_current(fspr_uid_t *userid, + fspr_gid_t *groupid, + fspr_pool_t *p); /** * Get the user name for a specified userid @@ -74,8 +74,8 @@ APR_DECLARE(apr_status_t) apr_uid_current(apr_uid_t *userid, * @param p The pool from which to allocate the string * @remark This function is available only if APR_HAS_USER is defined. */ -APR_DECLARE(apr_status_t) apr_uid_name_get(char **username, apr_uid_t userid, - apr_pool_t *p); +APR_DECLARE(fspr_status_t) fspr_uid_name_get(char **username, fspr_uid_t userid, + fspr_pool_t *p); /** * Get the userid (and groupid) for the specified username @@ -85,8 +85,8 @@ APR_DECLARE(apr_status_t) apr_uid_name_get(char **username, apr_uid_t userid, * @param p The pool from which to allocate working space * @remark This function is available only if APR_HAS_USER is defined. */ -APR_DECLARE(apr_status_t) apr_uid_get(apr_uid_t *userid, apr_gid_t *groupid, - const char *username, apr_pool_t *p); +APR_DECLARE(fspr_status_t) fspr_uid_get(fspr_uid_t *userid, fspr_gid_t *groupid, + const char *username, fspr_pool_t *p); /** * Get the home directory for the named user @@ -95,22 +95,22 @@ APR_DECLARE(apr_status_t) apr_uid_get(apr_uid_t *userid, apr_gid_t *groupid, * @param p The pool from which to allocate the string * @remark This function is available only if APR_HAS_USER is defined. */ -APR_DECLARE(apr_status_t) apr_uid_homepath_get(char **dirname, +APR_DECLARE(fspr_status_t) fspr_uid_homepath_get(char **dirname, const char *username, - apr_pool_t *p); + fspr_pool_t *p); /** * Compare two user identifiers for equality. * @param left One uid to test * @param right Another uid to test - * @return APR_SUCCESS if the apr_uid_t strutures identify the same user, - * APR_EMISMATCH if not, APR_BADARG if an apr_uid_t is invalid. + * @return APR_SUCCESS if the fspr_uid_t strutures identify the same user, + * APR_EMISMATCH if not, APR_BADARG if an fspr_uid_t is invalid. * @remark This function is available only if APR_HAS_USER is defined. */ #if defined(WIN32) -APR_DECLARE(apr_status_t) apr_uid_compare(apr_uid_t left, apr_uid_t right); +APR_DECLARE(fspr_status_t) fspr_uid_compare(fspr_uid_t left, fspr_uid_t right); #else -#define apr_uid_compare(left,right) (((left) == (right)) ? APR_SUCCESS : APR_EMISMATCH) +#define fspr_uid_compare(left,right) (((left) == (right)) ? APR_SUCCESS : APR_EMISMATCH) #endif /** @@ -120,8 +120,8 @@ APR_DECLARE(apr_status_t) apr_uid_compare(apr_uid_t left, apr_uid_t right); * @param p The pool from which to allocate the string * @remark This function is available only if APR_HAS_USER is defined. */ -APR_DECLARE(apr_status_t) apr_gid_name_get(char **groupname, - apr_gid_t groupid, apr_pool_t *p); +APR_DECLARE(fspr_status_t) fspr_gid_name_get(char **groupname, + fspr_gid_t groupid, fspr_pool_t *p); /** * Get the groupid for a specified group name @@ -130,21 +130,21 @@ APR_DECLARE(apr_status_t) apr_gid_name_get(char **groupname, * @param p The pool from which to allocate the string * @remark This function is available only if APR_HAS_USER is defined. */ -APR_DECLARE(apr_status_t) apr_gid_get(apr_gid_t *groupid, - const char *groupname, apr_pool_t *p); +APR_DECLARE(fspr_status_t) fspr_gid_get(fspr_gid_t *groupid, + const char *groupname, fspr_pool_t *p); /** * Compare two group identifiers for equality. * @param left One gid to test * @param right Another gid to test - * @return APR_SUCCESS if the apr_gid_t strutures identify the same group, - * APR_EMISMATCH if not, APR_BADARG if an apr_gid_t is invalid. + * @return APR_SUCCESS if the fspr_gid_t strutures identify the same group, + * APR_EMISMATCH if not, APR_BADARG if an fspr_gid_t is invalid. * @remark This function is available only if APR_HAS_USER is defined. */ #if defined(WIN32) -APR_DECLARE(apr_status_t) apr_gid_compare(apr_gid_t left, apr_gid_t right); +APR_DECLARE(fspr_status_t) fspr_gid_compare(fspr_gid_t left, fspr_gid_t right); #else -#define apr_gid_compare(left,right) (((left) == (right)) ? APR_SUCCESS : APR_EMISMATCH) +#define fspr_gid_compare(left,right) (((left) == (right)) ? APR_SUCCESS : APR_EMISMATCH) #endif #endif /* ! APR_HAS_USER */ diff --git a/libs/apr/include/apr_version.h b/libs/apr/include/fspr_version.h similarity index 93% rename from libs/apr/include/apr_version.h rename to libs/apr/include/fspr_version.h index a3bd6b893b2..7d5b05f77c1 100644 --- a/libs/apr/include/apr_version.h +++ b/libs/apr/include/fspr_version.h @@ -18,7 +18,7 @@ #define APR_VERSION_H /** - * @file apr_version.h + * @file fspr_version.h * @brief APR Versioning Interface * * APR's Version @@ -76,7 +76,7 @@ #define APR_IS_DEV_STRING "" #endif -/* APR_STRINGIFY is defined here, and also in apr_general.h, so wrap it */ +/* APR_STRINGIFY is defined here, and also in fspr_general.h, so wrap it */ #ifndef APR_STRINGIFY /** Properly quote a value as a string in the C preprocessor */ #define APR_STRINGIFY(n) APR_STRINGIFY_HELPER(n) @@ -102,11 +102,11 @@ /* The C language API to access the version at run time, * as opposed to compile time. APR_VERSION_ONLY may be defined - * externally when preprocessing apr_version.h to obtain strictly + * externally when preprocessing fspr_version.h to obtain strictly * the C Preprocessor macro declarations. */ -#include "apr.h" +#include "fspr.h" #ifdef __cplusplus extern "C" { @@ -121,7 +121,7 @@ typedef struct { int minor; /**< minor number */ int patch; /**< patch number */ int is_dev; /**< is development (1 or 0) */ -} apr_version_t; +} fspr_version_t; /** * Return APR's version information information in a numeric form. @@ -129,10 +129,10 @@ typedef struct { * @param pvsn Pointer to a version structure for returning the version * information. */ -APR_DECLARE(void) apr_version(apr_version_t *pvsn); +APR_DECLARE(void) fspr_version(fspr_version_t *pvsn); /** Return APR's version information as a string. */ -APR_DECLARE(const char *) apr_version_string(void); +APR_DECLARE(const char *) fspr_version_string(void); #ifdef __cplusplus } diff --git a/libs/apr/include/apr_want.h b/libs/apr/include/fspr_want.h similarity index 94% rename from libs/apr/include/apr_want.h rename to libs/apr/include/fspr_want.h index 39cc4fcb6b5..238c2b1a2f0 100644 --- a/libs/apr/include/apr_want.h +++ b/libs/apr/include/fspr_want.h @@ -14,9 +14,9 @@ * limitations under the License. */ -#include "apr.h" /* configuration data */ +#include "fspr.h" /* configuration data */ /** - * @file apr_want.h + * @file fspr_want.h * @brief APR Standard Headers Support * *
    @@ -32,12 +32,12 @@
      *
      *   #define APR_WANT_STRFUNC
      *   #define APR_WANT_MEMFUNC
    - *   #include "apr_want.h"
    + *   #include "fspr_want.h"
      *
      * The appropriate headers will be included.
      *
      * Note: it is safe to use this in a header (it won't interfere with other
    - *       headers' or source files' use of apr_want.h)
    + *       headers' or source files' use of fspr_want.h)
      * 
    */ diff --git a/libs/apr/libapr.dsp b/libs/apr/libapr.dsp index be347a77672..b4dbace5a9e 100644 --- a/libs/apr/libapr.dsp +++ b/libs/apr/libapr.dsp @@ -43,7 +43,7 @@ RSC=rc.exe # PROP Ignore_Export_Lib 0 # PROP Target_Dir "" # ADD BASE CPP /nologo /MD /W3 /O2 /D "WIN32" /D "NDEBUG" /D "_WINDOWS" /FD /c -# ADD CPP /nologo /MD /W3 /O2 /Oy- /Zi /I "./include" /I "./include/arch" /I "./include/arch/win32" /I "./include/arch/unix" /D "NDEBUG" /D "APR_DECLARE_EXPORT" /D "WIN32" /D "_WINDOWS" /Fd"Release\libapr_src" /FD /c +# ADD CPP /nologo /MD /W3 /O2 /Oy- /Zi /I "./include" /I "./include/arch" /I "./include/arch/win32" /I "./include/arch/unix" /D "NDEBUG" /D "APR_DECLARE_EXPORT" /D "WIN32" /D "_WINDOWS" /Fd"Release\libfspr_src" /FD /c # ADD BASE MTL /nologo /D "NDEBUG" /mktyplib203 /o /win32 "NUL" # ADD MTL /nologo /D "NDEBUG" /mktyplib203 /o /win32 "NUL" # ADD BASE RSC /l 0x409 /d "NDEBUG" @@ -75,7 +75,7 @@ PostBuild_Cmds=if exist $(OUTDIR)\libapr-1.dll.manifest mt.exe -manifest $(OUTDI # PROP Ignore_Export_Lib 0 # PROP Target_Dir "" # ADD BASE CPP /nologo /MDd /W3 /EHsc /Zi /Od /D "WIN32" /D "_DEBUG" /D "_WINDOWS" /FD /c -# ADD CPP /nologo /MDd /W3 /EHsc /Zi /Od /I "./include" /I "./include/arch" /I "./include/arch/win32" /I "./include/arch/unix" /D "_DEBUG" /D "APR_DECLARE_EXPORT" /D "WIN32" /D "_WINDOWS" /Fd"Debug\libapr_src" /FD /c +# ADD CPP /nologo /MDd /W3 /EHsc /Zi /Od /I "./include" /I "./include/arch" /I "./include/arch/win32" /I "./include/arch/unix" /D "_DEBUG" /D "APR_DECLARE_EXPORT" /D "WIN32" /D "_WINDOWS" /Fd"Debug\libfspr_src" /FD /c # ADD BASE MTL /nologo /D "_DEBUG" /mktyplib203 /o /win32 "NUL" # ADD MTL /nologo /D "_DEBUG" /mktyplib203 /o /win32 "NUL" # ADD BASE RSC /l 0x409 /d "_DEBUG" @@ -107,7 +107,7 @@ PostBuild_Cmds=if exist $(OUTDIR)\libapr-1.dll.manifest mt.exe -manifest $(OUTDI # PROP Default_Filter "" # Begin Source File -SOURCE=.\atomic\win32\apr_atomic.c +SOURCE=.\atomic\win32\fspr_atomic.c # End Source File # End Group # Begin Group "dso" @@ -211,7 +211,7 @@ SOURCE=.\locks\win32\thread_rwlock.c # PROP Default_Filter "" # Begin Source File -SOURCE=.\memory\unix\apr_pools.c +SOURCE=.\memory\unix\fspr_pools.c # End Source File # End Group # Begin Group "misc" @@ -219,7 +219,7 @@ SOURCE=.\memory\unix\apr_pools.c # PROP Default_Filter "" # Begin Source File -SOURCE=.\misc\win32\apr_app.c +SOURCE=.\misc\win32\fspr_app.c # PROP Exclude_From_Build 1 # End Source File # Begin Source File @@ -320,7 +320,7 @@ SOURCE=.\network_io\win32\sockopt.c # PROP Default_Filter "" # Begin Source File -SOURCE=.\passwd\apr_getpass.c +SOURCE=.\passwd\fspr_getpass.c # End Source File # End Group # Begin Group "random" @@ -328,7 +328,7 @@ SOURCE=.\passwd\apr_getpass.c # PROP Default_Filter "" # Begin Source File -SOURCE=.\random\unix\apr_random.c +SOURCE=.\random\unix\fspr_random.c # End Source File # Begin Source File @@ -352,27 +352,27 @@ SOURCE=.\shmem\win32\shm.c # PROP Default_Filter "" # Begin Source File -SOURCE=.\strings\apr_cpystrn.c +SOURCE=.\strings\fspr_cpystrn.c # End Source File # Begin Source File -SOURCE=.\strings\apr_fnmatch.c +SOURCE=.\strings\fspr_fnmatch.c # End Source File # Begin Source File -SOURCE=.\strings\apr_snprintf.c +SOURCE=.\strings\fspr_snprintf.c # End Source File # Begin Source File -SOURCE=.\strings\apr_strings.c +SOURCE=.\strings\fspr_strings.c # End Source File # Begin Source File -SOURCE=.\strings\apr_strnatcmp.c +SOURCE=.\strings\fspr_strnatcmp.c # End Source File # Begin Source File -SOURCE=.\strings\apr_strtok.c +SOURCE=.\strings\fspr_strtok.c # End Source File # End Group # Begin Group "tables" @@ -380,11 +380,11 @@ SOURCE=.\strings\apr_strtok.c # PROP Default_Filter "" # Begin Source File -SOURCE=.\tables\apr_hash.c +SOURCE=.\tables\fspr_hash.c # End Source File # Begin Source File -SOURCE=.\tables\apr_tables.c +SOURCE=.\tables\fspr_tables.c # End Source File # End Group # Begin Group "threadproc" @@ -441,51 +441,51 @@ SOURCE=.\user\win32\userinfo.c # PROP Default_Filter "" # Begin Source File -SOURCE=.\include\arch\win32\apr_arch_atime.h +SOURCE=.\include\arch\win32\fspr_arch_atime.h # End Source File # Begin Source File -SOURCE=.\include\arch\win32\apr_arch_dso.h +SOURCE=.\include\arch\win32\fspr_arch_dso.h # End Source File # Begin Source File -SOURCE=.\include\arch\win32\apr_arch_file_io.h +SOURCE=.\include\arch\win32\fspr_arch_file_io.h # End Source File # Begin Source File -SOURCE=.\include\arch\win32\apr_arch_inherit.h +SOURCE=.\include\arch\win32\fspr_arch_inherit.h # End Source File # Begin Source File -SOURCE=.\include\arch\win32\apr_arch_misc.h +SOURCE=.\include\arch\win32\fspr_arch_misc.h # End Source File # Begin Source File -SOURCE=.\include\arch\win32\apr_arch_networkio.h +SOURCE=.\include\arch\win32\fspr_arch_networkio.h # End Source File # Begin Source File -SOURCE=.\include\arch\win32\apr_arch_thread_mutex.h +SOURCE=.\include\arch\win32\fspr_arch_thread_mutex.h # End Source File # Begin Source File -SOURCE=.\include\arch\win32\apr_arch_thread_rwlock.h +SOURCE=.\include\arch\win32\fspr_arch_thread_rwlock.h # End Source File # Begin Source File -SOURCE=.\include\arch\win32\apr_arch_threadproc.h +SOURCE=.\include\arch\win32\fspr_arch_threadproc.h # End Source File # Begin Source File -SOURCE=.\include\arch\win32\apr_arch_utf8.h +SOURCE=.\include\arch\win32\fspr_arch_utf8.h # End Source File # Begin Source File -SOURCE=.\include\arch\win32\apr_private.h +SOURCE=.\include\arch\win32\fspr_private.h # End Source File # Begin Source File -SOURCE=.\include\arch\apr_private_common.h +SOURCE=.\include\arch\fspr_private_common.h # End Source File # End Group # Begin Group "Public Header Files" @@ -493,35 +493,35 @@ SOURCE=.\include\arch\apr_private_common.h # PROP Default_Filter "" # Begin Source File -SOURCE=.\include\apr.h.in +SOURCE=.\include\fspr.h.in # PROP Exclude_From_Build 1 # End Source File # Begin Source File -SOURCE=.\include\apr.hnw +SOURCE=.\include\fspr.hnw # PROP Exclude_From_Build 1 # End Source File # Begin Source File -SOURCE=.\include\apr.hw +SOURCE=.\include\fspr.hw !IF "$(CFG)" == "libapr - Win32 Release" # Begin Custom Build - Creating apr.h from apr.hw -InputPath=.\include\apr.hw +InputPath=.\include\fspr.hw -".\include\apr.h" : $(SOURCE) "$(INTDIR)" "$(OUTDIR)" - type .\include\apr.hw > .\include\apr.h +".\include\fspr.h" : $(SOURCE) "$(INTDIR)" "$(OUTDIR)" + type .\include\fspr.hw > .\include\fspr.h # End Custom Build !ELSEIF "$(CFG)" == "libapr - Win32 Debug" # Begin Custom Build - Creating apr.h from apr.hw -InputPath=.\include\apr.hw +InputPath=.\include\fspr.hw -".\include\apr.h" : $(SOURCE) "$(INTDIR)" "$(OUTDIR)" - type .\include\apr.hw > .\include\apr.h +".\include\fspr.h" : $(SOURCE) "$(INTDIR)" "$(OUTDIR)" + type .\include\fspr.hw > .\include\fspr.h # End Custom Build @@ -530,139 +530,139 @@ InputPath=.\include\apr.hw # End Source File # Begin Source File -SOURCE=.\include\apr_allocator.h +SOURCE=.\include\fspr_allocator.h # End Source File # Begin Source File -SOURCE=.\include\apr_atomic.h +SOURCE=.\include\fspr_atomic.h # End Source File # Begin Source File -SOURCE=.\include\apr_dso.h +SOURCE=.\include\fspr_dso.h # End Source File # Begin Source File -SOURCE=.\include\apr_env.h +SOURCE=.\include\fspr_env.h # End Source File # Begin Source File -SOURCE=.\include\apr_errno.h +SOURCE=.\include\fspr_errno.h # End Source File # Begin Source File -SOURCE=.\include\apr_file_info.h +SOURCE=.\include\fspr_file_info.h # End Source File # Begin Source File -SOURCE=.\include\apr_file_io.h +SOURCE=.\include\fspr_file_io.h # End Source File # Begin Source File -SOURCE=.\include\apr_fnmatch.h +SOURCE=.\include\fspr_fnmatch.h # End Source File # Begin Source File -SOURCE=.\include\apr_general.h +SOURCE=.\include\fspr_general.h # End Source File # Begin Source File -SOURCE=.\include\apr_getopt.h +SOURCE=.\include\fspr_getopt.h # End Source File # Begin Source File -SOURCE=.\include\apr_global_mutex.h +SOURCE=.\include\fspr_global_mutex.h # End Source File # Begin Source File -SOURCE=.\include\apr_hash.h +SOURCE=.\include\fspr_hash.h # End Source File # Begin Source File -SOURCE=.\include\apr_inherit.h +SOURCE=.\include\fspr_inherit.h # End Source File # Begin Source File -SOURCE=.\include\apr_lib.h +SOURCE=.\include\fspr_lib.h # End Source File # Begin Source File -SOURCE=.\include\apr_mmap.h +SOURCE=.\include\fspr_mmap.h # End Source File # Begin Source File -SOURCE=.\include\apr_network_io.h +SOURCE=.\include\fspr_network_io.h # End Source File # Begin Source File -SOURCE=.\include\apr_poll.h +SOURCE=.\include\fspr_poll.h # End Source File # Begin Source File -SOURCE=.\include\apr_pools.h +SOURCE=.\include\fspr_pools.h # End Source File # Begin Source File -SOURCE=.\include\apr_portable.h +SOURCE=.\include\fspr_portable.h # End Source File # Begin Source File -SOURCE=.\include\apr_proc_mutex.h +SOURCE=.\include\fspr_proc_mutex.h # End Source File # Begin Source File -SOURCE=.\include\apr_ring.h +SOURCE=.\include\fspr_ring.h # End Source File # Begin Source File -SOURCE=.\include\apr_shm.h +SOURCE=.\include\fspr_shm.h # End Source File # Begin Source File -SOURCE=.\include\apr_signal.h +SOURCE=.\include\fspr_signal.h # End Source File # Begin Source File -SOURCE=.\include\apr_strings.h +SOURCE=.\include\fspr_strings.h # End Source File # Begin Source File -SOURCE=.\include\apr_support.h +SOURCE=.\include\fspr_support.h # End Source File # Begin Source File -SOURCE=.\include\apr_tables.h +SOURCE=.\include\fspr_tables.h # End Source File # Begin Source File -SOURCE=.\include\apr_thread_cond.h +SOURCE=.\include\fspr_thread_cond.h # End Source File # Begin Source File -SOURCE=.\include\apr_thread_mutex.h +SOURCE=.\include\fspr_thread_mutex.h # End Source File # Begin Source File -SOURCE=.\include\apr_thread_proc.h +SOURCE=.\include\fspr_thread_proc.h # End Source File # Begin Source File -SOURCE=.\include\apr_thread_rwlock.h +SOURCE=.\include\fspr_thread_rwlock.h # End Source File # Begin Source File -SOURCE=.\include\apr_time.h +SOURCE=.\include\fspr_time.h # End Source File # Begin Source File -SOURCE=.\include\apr_user.h +SOURCE=.\include\fspr_user.h # End Source File # Begin Source File -SOURCE=.\include\apr_version.h +SOURCE=.\include\fspr_version.h # End Source File # Begin Source File -SOURCE=.\include\apr_want.h +SOURCE=.\include\fspr_want.h # End Source File # End Group # Begin Source File diff --git a/libs/apr/libapr.rc b/libs/apr/libapr.rc index 925868d1e51..b06b68a1056 100644 --- a/libs/apr/libapr.rc +++ b/libs/apr/libapr.rc @@ -1,4 +1,4 @@ -#include "apr_version.h" +#include "fspr_version.h" #define APR_COPYRIGHT "Copyright 2000-2005 The Apache Software " \ "Foundation or its licensors, as applicable." diff --git a/libs/apr/locks/beos/proc_mutex.c b/libs/apr/locks/beos/proc_mutex.c index ce2a580bacc..b7227d2ff2f 100644 --- a/libs/apr/locks/beos/proc_mutex.c +++ b/libs/apr/locks/beos/proc_mutex.c @@ -18,13 +18,13 @@ * Stephen Beaulieu */ -#include "apr_arch_proc_mutex.h" -#include "apr_strings.h" -#include "apr_portable.h" +#include "fspr_arch_proc_mutex.h" +#include "fspr_strings.h" +#include "fspr_portable.h" -static apr_status_t _proc_mutex_cleanup(void * data) +static fspr_status_t _proc_mutex_cleanup(void * data) { - apr_proc_mutex_t *lock = (apr_proc_mutex_t*)data; + fspr_proc_mutex_t *lock = (fspr_proc_mutex_t*)data; if (lock->LockCount != 0) { /* we're still locked... */ while (atomic_add(&lock->LockCount , -1) > 1){ @@ -39,19 +39,19 @@ static apr_status_t _proc_mutex_cleanup(void * data) return APR_SUCCESS; } -APR_DECLARE(apr_status_t) apr_proc_mutex_create(apr_proc_mutex_t **mutex, +APR_DECLARE(fspr_status_t) fspr_proc_mutex_create(fspr_proc_mutex_t **mutex, const char *fname, - apr_lockmech_e mech, - apr_pool_t *pool) + fspr_lockmech_e mech, + fspr_pool_t *pool) { - apr_proc_mutex_t *new; - apr_status_t stat = APR_SUCCESS; + fspr_proc_mutex_t *new; + fspr_status_t stat = APR_SUCCESS; if (mech != APR_LOCK_DEFAULT) { return APR_ENOTIMPL; } - new = (apr_proc_mutex_t *)apr_pcalloc(pool, sizeof(apr_proc_mutex_t)); + new = (fspr_proc_mutex_t *)fspr_pcalloc(pool, sizeof(fspr_proc_mutex_t)); if (new == NULL){ return APR_ENOMEM; } @@ -64,21 +64,21 @@ APR_DECLARE(apr_status_t) apr_proc_mutex_create(apr_proc_mutex_t **mutex, new->Lock = stat; new->pool = pool; - apr_pool_cleanup_register(new->pool, (void *)new, _proc_mutex_cleanup, - apr_pool_cleanup_null); + fspr_pool_cleanup_register(new->pool, (void *)new, _proc_mutex_cleanup, + fspr_pool_cleanup_null); (*mutex) = new; return APR_SUCCESS; } -APR_DECLARE(apr_status_t) apr_proc_mutex_child_init(apr_proc_mutex_t **mutex, +APR_DECLARE(fspr_status_t) fspr_proc_mutex_child_init(fspr_proc_mutex_t **mutex, const char *fname, - apr_pool_t *pool) + fspr_pool_t *pool) { return APR_SUCCESS; } -APR_DECLARE(apr_status_t) apr_proc_mutex_lock(apr_proc_mutex_t *mutex) +APR_DECLARE(fspr_status_t) fspr_proc_mutex_lock(fspr_proc_mutex_t *mutex) { int32 stat; @@ -91,12 +91,12 @@ APR_DECLARE(apr_status_t) apr_proc_mutex_lock(apr_proc_mutex_t *mutex) return APR_SUCCESS; } -APR_DECLARE(apr_status_t) apr_proc_mutex_trylock(apr_proc_mutex_t *mutex) +APR_DECLARE(fspr_status_t) fspr_proc_mutex_trylock(fspr_proc_mutex_t *mutex) { return APR_ENOTIMPL; } -APR_DECLARE(apr_status_t) apr_proc_mutex_unlock(apr_proc_mutex_t *mutex) +APR_DECLARE(fspr_status_t) fspr_proc_mutex_unlock(fspr_proc_mutex_t *mutex) { int32 stat; @@ -109,58 +109,58 @@ APR_DECLARE(apr_status_t) apr_proc_mutex_unlock(apr_proc_mutex_t *mutex) return APR_SUCCESS; } -APR_DECLARE(apr_status_t) apr_proc_mutex_destroy(apr_proc_mutex_t *mutex) +APR_DECLARE(fspr_status_t) fspr_proc_mutex_destroy(fspr_proc_mutex_t *mutex) { - apr_status_t stat; + fspr_status_t stat; if ((stat = _proc_mutex_cleanup(mutex)) == APR_SUCCESS) { - apr_pool_cleanup_kill(mutex->pool, mutex, _proc_mutex_cleanup); + fspr_pool_cleanup_kill(mutex->pool, mutex, _proc_mutex_cleanup); return APR_SUCCESS; } return stat; } -APR_DECLARE(apr_status_t) apr_proc_mutex_cleanup(void *mutex) +APR_DECLARE(fspr_status_t) fspr_proc_mutex_cleanup(void *mutex) { return _proc_mutex_cleanup(mutex); } -APR_DECLARE(const char *) apr_proc_mutex_lockfile(apr_proc_mutex_t *mutex) +APR_DECLARE(const char *) fspr_proc_mutex_lockfile(fspr_proc_mutex_t *mutex) { return NULL; } -APR_DECLARE(const char *) apr_proc_mutex_name(apr_proc_mutex_t *mutex) +APR_DECLARE(const char *) fspr_proc_mutex_name(fspr_proc_mutex_t *mutex) { return "beossem"; } -APR_DECLARE(const char *) apr_proc_mutex_defname(void) +APR_DECLARE(const char *) fspr_proc_mutex_defname(void) { return "beossem"; } APR_POOL_IMPLEMENT_ACCESSOR(proc_mutex) -/* Implement OS-specific accessors defined in apr_portable.h */ +/* Implement OS-specific accessors defined in fspr_portable.h */ -APR_DECLARE(apr_status_t) apr_os_proc_mutex_get(apr_os_proc_mutex_t *ospmutex, - apr_proc_mutex_t *pmutex) +APR_DECLARE(fspr_status_t) fspr_os_proc_mutex_get(fspr_os_proc_mutex_t *ospmutex, + fspr_proc_mutex_t *pmutex) { ospmutex->sem = pmutex->Lock; ospmutex->ben = pmutex->LockCount; return APR_SUCCESS; } -APR_DECLARE(apr_status_t) apr_os_proc_mutex_put(apr_proc_mutex_t **pmutex, - apr_os_proc_mutex_t *ospmutex, - apr_pool_t *pool) +APR_DECLARE(fspr_status_t) fspr_os_proc_mutex_put(fspr_proc_mutex_t **pmutex, + fspr_os_proc_mutex_t *ospmutex, + fspr_pool_t *pool) { if (pool == NULL) { return APR_ENOPOOL; } if ((*pmutex) == NULL) { - (*pmutex) = (apr_proc_mutex_t *)apr_pcalloc(pool, sizeof(apr_proc_mutex_t)); + (*pmutex) = (fspr_proc_mutex_t *)fspr_pcalloc(pool, sizeof(fspr_proc_mutex_t)); (*pmutex)->pool = pool; } (*pmutex)->Lock = ospmutex->sem; diff --git a/libs/apr/locks/beos/thread_cond.c b/libs/apr/locks/beos/thread_cond.c index e3ea4600039..6585f61f120 100644 --- a/libs/apr/locks/beos/thread_cond.c +++ b/libs/apr/locks/beos/thread_cond.c @@ -14,15 +14,15 @@ * limitations under the License. */ -#include "apr_arch_thread_mutex.h" -#include "apr_arch_thread_cond.h" -#include "apr_strings.h" -#include "apr_portable.h" +#include "fspr_arch_thread_mutex.h" +#include "fspr_arch_thread_cond.h" +#include "fspr_strings.h" +#include "fspr_portable.h" -static apr_status_t thread_cond_cleanup(void *data) +static fspr_status_t thread_cond_cleanup(void *data) { struct waiter *w; - apr_thread_cond_t *cond = (apr_thread_cond_t *)data; + fspr_thread_cond_t *cond = (fspr_thread_cond_t *)data; acquire_sem(cond->lock); delete_sem(cond->lock); @@ -30,10 +30,10 @@ static apr_status_t thread_cond_cleanup(void *data) return APR_SUCCESS; } -static struct waiter_t *make_waiter(apr_pool_t *pool) +static struct waiter_t *make_waiter(fspr_pool_t *pool) { struct waiter_t *w = (struct waiter_t*) - apr_palloc(pool, sizeof(struct waiter_t)); + fspr_palloc(pool, sizeof(struct waiter_t)); if (w == NULL) return NULL; @@ -46,14 +46,14 @@ static struct waiter_t *make_waiter(apr_pool_t *pool) return w; } -APR_DECLARE(apr_status_t) apr_thread_cond_create(apr_thread_cond_t **cond, - apr_pool_t *pool) +APR_DECLARE(fspr_status_t) fspr_thread_cond_create(fspr_thread_cond_t **cond, + fspr_pool_t *pool) { - apr_thread_cond_t *new_cond; + fspr_thread_cond_t *new_cond; sem_id rv; int i; - new_cond = (apr_thread_cond_t *)apr_palloc(pool, sizeof(apr_thread_cond_t)); + new_cond = (fspr_thread_cond_t *)fspr_palloc(pool, sizeof(fspr_thread_cond_t)); if (new_cond == NULL) return APR_ENOMEM; @@ -71,21 +71,21 @@ APR_DECLARE(apr_status_t) apr_thread_cond_create(apr_thread_cond_t **cond, APR_RING_INSERT_TAIL(&new_cond->flist, nw, waiter_t, link); } - apr_pool_cleanup_register(new_cond->pool, + fspr_pool_cleanup_register(new_cond->pool, (void *)new_cond, thread_cond_cleanup, - apr_pool_cleanup_null); + fspr_pool_cleanup_null); *cond = new_cond; return APR_SUCCESS; } -static apr_status_t do_wait(apr_thread_cond_t *cond, apr_thread_mutex_t *mutex, +static fspr_status_t do_wait(fspr_thread_cond_t *cond, fspr_thread_mutex_t *mutex, int timeout) { struct waiter_t *wait; thread_id cth = find_thread(NULL); - apr_status_t rv; + fspr_status_t rv; int flags = B_RELATIVE_TIMEOUT; /* We must be the owner of the mutex or we can't do this... */ @@ -104,14 +104,14 @@ static apr_status_t do_wait(apr_thread_cond_t *cond, apr_thread_mutex_t *mutex, cond->condlock = mutex; release_sem(cond->lock); - apr_thread_mutex_unlock(cond->condlock); + fspr_thread_mutex_unlock(cond->condlock); if (timeout == 0) flags = 0; rv = acquire_sem_etc(wait->sem, 1, flags, timeout); - apr_thread_mutex_lock(cond->condlock); + fspr_thread_mutex_lock(cond->condlock); if (rv != B_OK) if (rv == B_TIMED_OUT) @@ -126,20 +126,20 @@ static apr_status_t do_wait(apr_thread_cond_t *cond, apr_thread_mutex_t *mutex, return APR_SUCCESS; } -APR_DECLARE(apr_status_t) apr_thread_cond_wait(apr_thread_cond_t *cond, - apr_thread_mutex_t *mutex) +APR_DECLARE(fspr_status_t) fspr_thread_cond_wait(fspr_thread_cond_t *cond, + fspr_thread_mutex_t *mutex) { return do_wait(cond, mutex, 0); } -APR_DECLARE(apr_status_t) apr_thread_cond_timedwait(apr_thread_cond_t *cond, - apr_thread_mutex_t *mutex, - apr_interval_time_t timeout) +APR_DECLARE(fspr_status_t) fspr_thread_cond_timedwait(fspr_thread_cond_t *cond, + fspr_thread_mutex_t *mutex, + fspr_interval_time_t timeout) { return do_wait(cond, mutex, timeout); } -APR_DECLARE(apr_status_t) apr_thread_cond_signal(apr_thread_cond_t *cond) +APR_DECLARE(fspr_status_t) fspr_thread_cond_signal(fspr_thread_cond_t *cond) { struct waiter_t *wake; @@ -155,7 +155,7 @@ APR_DECLARE(apr_status_t) apr_thread_cond_signal(apr_thread_cond_t *cond) return APR_SUCCESS; } -APR_DECLARE(apr_status_t) apr_thread_cond_broadcast(apr_thread_cond_t *cond) +APR_DECLARE(fspr_status_t) fspr_thread_cond_broadcast(fspr_thread_cond_t *cond) { struct waiter_t *wake; @@ -171,11 +171,11 @@ APR_DECLARE(apr_status_t) apr_thread_cond_broadcast(apr_thread_cond_t *cond) return APR_SUCCESS; } -APR_DECLARE(apr_status_t) apr_thread_cond_destroy(apr_thread_cond_t *cond) +APR_DECLARE(fspr_status_t) fspr_thread_cond_destroy(fspr_thread_cond_t *cond) { - apr_status_t stat; + fspr_status_t stat; if ((stat = thread_cond_cleanup(cond)) == APR_SUCCESS) { - apr_pool_cleanup_kill(cond->pool, cond, thread_cond_cleanup); + fspr_pool_cleanup_kill(cond->pool, cond, thread_cond_cleanup); return APR_SUCCESS; } return stat; diff --git a/libs/apr/locks/beos/thread_mutex.c b/libs/apr/locks/beos/thread_mutex.c index b87f76606ff..4604939802b 100644 --- a/libs/apr/locks/beos/thread_mutex.c +++ b/libs/apr/locks/beos/thread_mutex.c @@ -18,13 +18,13 @@ * Stephen Beaulieu */ -#include "apr_arch_thread_mutex.h" -#include "apr_strings.h" -#include "apr_portable.h" +#include "fspr_arch_thread_mutex.h" +#include "fspr_strings.h" +#include "fspr_portable.h" -static apr_status_t _thread_mutex_cleanup(void * data) +static fspr_status_t _thread_mutex_cleanup(void * data) { - apr_thread_mutex_t *lock = (apr_thread_mutex_t*)data; + fspr_thread_mutex_t *lock = (fspr_thread_mutex_t*)data; if (lock->LockCount != 0) { /* we're still locked... */ while (atomic_add(&lock->LockCount , -1) > 1){ @@ -39,14 +39,14 @@ static apr_status_t _thread_mutex_cleanup(void * data) return APR_SUCCESS; } -APR_DECLARE(apr_status_t) apr_thread_mutex_create(apr_thread_mutex_t **mutex, +APR_DECLARE(fspr_status_t) fspr_thread_mutex_create(fspr_thread_mutex_t **mutex, unsigned int flags, - apr_pool_t *pool) + fspr_pool_t *pool) { - apr_thread_mutex_t *new_m; - apr_status_t stat = APR_SUCCESS; + fspr_thread_mutex_t *new_m; + fspr_status_t stat = APR_SUCCESS; - new_m = (apr_thread_mutex_t *)apr_pcalloc(pool, sizeof(apr_thread_mutex_t)); + new_m = (fspr_thread_mutex_t *)fspr_pcalloc(pool, sizeof(fspr_thread_mutex_t)); if (new_m == NULL){ return APR_ENOMEM; } @@ -64,24 +64,24 @@ APR_DECLARE(apr_status_t) apr_thread_mutex_create(apr_thread_mutex_t **mutex, */ new_m->nested = flags & APR_THREAD_MUTEX_NESTED; - apr_pool_cleanup_register(new_m->pool, (void *)new_m, _thread_mutex_cleanup, - apr_pool_cleanup_null); + fspr_pool_cleanup_register(new_m->pool, (void *)new_m, _thread_mutex_cleanup, + fspr_pool_cleanup_null); (*mutex) = new_m; return APR_SUCCESS; } #if APR_HAS_CREATE_LOCKS_NP -APR_DECLARE(apr_status_t) apr_thread_mutex_create_np(apr_thread_mutex_t **mutex, +APR_DECLARE(fspr_status_t) fspr_thread_mutex_create_np(fspr_thread_mutex_t **mutex, const char *fname, - apr_lockmech_e_np mech, - apr_pool_t *pool) + fspr_lockmech_e_np mech, + fspr_pool_t *pool) { return APR_ENOTIMPL; } #endif -APR_DECLARE(apr_status_t) apr_thread_mutex_lock(apr_thread_mutex_t *mutex) +APR_DECLARE(fspr_status_t) fspr_thread_mutex_lock(fspr_thread_mutex_t *mutex) { int32 stat; thread_id me = find_thread(NULL); @@ -105,12 +105,12 @@ APR_DECLARE(apr_status_t) apr_thread_mutex_lock(apr_thread_mutex_t *mutex) return APR_SUCCESS; } -APR_DECLARE(apr_status_t) apr_thread_mutex_trylock(apr_thread_mutex_t *mutex) +APR_DECLARE(fspr_status_t) fspr_thread_mutex_trylock(fspr_thread_mutex_t *mutex) { return APR_ENOTIMPL; } -APR_DECLARE(apr_status_t) apr_thread_mutex_unlock(apr_thread_mutex_t *mutex) +APR_DECLARE(fspr_status_t) fspr_thread_mutex_unlock(fspr_thread_mutex_t *mutex) { int32 stat; @@ -133,11 +133,11 @@ APR_DECLARE(apr_status_t) apr_thread_mutex_unlock(apr_thread_mutex_t *mutex) return APR_SUCCESS; } -APR_DECLARE(apr_status_t) apr_thread_mutex_destroy(apr_thread_mutex_t *mutex) +APR_DECLARE(fspr_status_t) fspr_thread_mutex_destroy(fspr_thread_mutex_t *mutex) { - apr_status_t stat; + fspr_status_t stat; if ((stat = _thread_mutex_cleanup(mutex)) == APR_SUCCESS) { - apr_pool_cleanup_kill(mutex->pool, mutex, _thread_mutex_cleanup); + fspr_pool_cleanup_kill(mutex->pool, mutex, _thread_mutex_cleanup); return APR_SUCCESS; } return stat; diff --git a/libs/apr/locks/beos/thread_rwlock.c b/libs/apr/locks/beos/thread_rwlock.c index a540b445574..d006b3183a3 100644 --- a/libs/apr/locks/beos/thread_rwlock.c +++ b/libs/apr/locks/beos/thread_rwlock.c @@ -18,15 +18,15 @@ * Stephen Beaulieu */ -#include "apr_arch_thread_rwlock.h" -#include "apr_strings.h" -#include "apr_portable.h" +#include "fspr_arch_thread_rwlock.h" +#include "fspr_strings.h" +#include "fspr_portable.h" #define BIG_NUM 100000 -static apr_status_t _thread_rw_cleanup(void * data) +static fspr_status_t _thread_rw_cleanup(void * data) { - apr_thread_rwlock_t *mutex = (apr_thread_rwlock_t*)data; + fspr_thread_rwlock_t *mutex = (fspr_thread_rwlock_t*)data; if (mutex->ReadCount != 0) { while (atomic_add(&mutex->ReadCount , -1) > 1){ @@ -50,12 +50,12 @@ static apr_status_t _thread_rw_cleanup(void * data) return APR_SUCCESS; } -APR_DECLARE(apr_status_t) apr_thread_rwlock_create(apr_thread_rwlock_t **rwlock, - apr_pool_t *pool) +APR_DECLARE(fspr_status_t) fspr_thread_rwlock_create(fspr_thread_rwlock_t **rwlock, + fspr_pool_t *pool) { - apr_thread_rwlock_t *new; + fspr_thread_rwlock_t *new; - new = (apr_thread_rwlock_t *)apr_pcalloc(pool, sizeof(apr_thread_rwlock_t)); + new = (fspr_thread_rwlock_t *)fspr_pcalloc(pool, sizeof(fspr_thread_rwlock_t)); if (new == NULL){ return APR_ENOMEM; } @@ -74,13 +74,13 @@ APR_DECLARE(apr_status_t) apr_thread_rwlock_create(apr_thread_rwlock_t **rwlock, return -1; } - apr_pool_cleanup_register(new->pool, (void *)new, _thread_rw_cleanup, - apr_pool_cleanup_null); + fspr_pool_cleanup_register(new->pool, (void *)new, _thread_rw_cleanup, + fspr_pool_cleanup_null); (*rwlock) = new; return APR_SUCCESS; } -APR_DECLARE(apr_status_t) apr_thread_rwlock_rdlock(apr_thread_rwlock_t *rwlock) +APR_DECLARE(fspr_status_t) fspr_thread_rwlock_rdlock(fspr_thread_rwlock_t *rwlock) { int32 rv = APR_SUCCESS; @@ -100,12 +100,12 @@ APR_DECLARE(apr_status_t) apr_thread_rwlock_rdlock(apr_thread_rwlock_t *rwlock) return rv; } -APR_DECLARE(apr_status_t) apr_thread_rwlock_tryrdlock(apr_thread_rwlock_t *rwlock) +APR_DECLARE(fspr_status_t) fspr_thread_rwlock_tryrdlock(fspr_thread_rwlock_t *rwlock) { return APR_ENOTIMPL; } -APR_DECLARE(apr_status_t) apr_thread_rwlock_wrlock(apr_thread_rwlock_t *rwlock) +APR_DECLARE(fspr_status_t) fspr_thread_rwlock_wrlock(fspr_thread_rwlock_t *rwlock) { int rv = APR_SUCCESS; @@ -136,14 +136,14 @@ APR_DECLARE(apr_status_t) apr_thread_rwlock_wrlock(apr_thread_rwlock_t *rwlock) return rv; } -APR_DECLARE(apr_status_t) apr_thread_rwlock_trywrlock(apr_thread_rwlock_t *rwlock) +APR_DECLARE(fspr_status_t) fspr_thread_rwlock_trywrlock(fspr_thread_rwlock_t *rwlock) { return APR_ENOTIMPL; } -APR_DECLARE(apr_status_t) apr_thread_rwlock_unlock(apr_thread_rwlock_t *rwlock) +APR_DECLARE(fspr_status_t) fspr_thread_rwlock_unlock(fspr_thread_rwlock_t *rwlock) { - apr_status_t rv = APR_SUCCESS; + fspr_status_t rv = APR_SUCCESS; int32 readers; /* we know we hold the lock, so don't check it :) */ @@ -176,11 +176,11 @@ APR_DECLARE(apr_status_t) apr_thread_rwlock_unlock(apr_thread_rwlock_t *rwlock) return rv; } -APR_DECLARE(apr_status_t) apr_thread_rwlock_destroy(apr_thread_rwlock_t *rwlock) +APR_DECLARE(fspr_status_t) fspr_thread_rwlock_destroy(fspr_thread_rwlock_t *rwlock) { - apr_status_t stat; + fspr_status_t stat; if ((stat = _thread_rw_cleanup(rwlock)) == APR_SUCCESS) { - apr_pool_cleanup_kill(rwlock->pool, rwlock, _thread_rw_cleanup); + fspr_pool_cleanup_kill(rwlock->pool, rwlock, _thread_rw_cleanup); return APR_SUCCESS; } return stat; diff --git a/libs/apr/locks/netware/proc_mutex.c b/libs/apr/locks/netware/proc_mutex.c index 77411d0bf2d..31bbd9ca054 100644 --- a/libs/apr/locks/netware/proc_mutex.c +++ b/libs/apr/locks/netware/proc_mutex.c @@ -14,27 +14,27 @@ * limitations under the License. */ -#include "apr.h" -#include "apr_private.h" -#include "apr_portable.h" -#include "apr_arch_proc_mutex.h" -#include "apr_arch_thread_mutex.h" +#include "fspr.h" +#include "fspr_private.h" +#include "fspr_portable.h" +#include "fspr_arch_proc_mutex.h" +#include "fspr_arch_thread_mutex.h" -APR_DECLARE(apr_status_t) apr_proc_mutex_create(apr_proc_mutex_t **mutex, +APR_DECLARE(fspr_status_t) fspr_proc_mutex_create(fspr_proc_mutex_t **mutex, const char *fname, - apr_lockmech_e mech, - apr_pool_t *pool) + fspr_lockmech_e mech, + fspr_pool_t *pool) { - apr_status_t ret; - apr_proc_mutex_t *new_mutex = NULL; - new_mutex = (apr_proc_mutex_t *)apr_pcalloc(pool, sizeof(apr_proc_mutex_t)); + fspr_status_t ret; + fspr_proc_mutex_t *new_mutex = NULL; + new_mutex = (fspr_proc_mutex_t *)fspr_pcalloc(pool, sizeof(fspr_proc_mutex_t)); if(new_mutex ==NULL) { return APR_ENOMEM; } new_mutex->pool = pool; - ret = apr_thread_mutex_create(&(new_mutex->mutex), APR_THREAD_MUTEX_DEFAULT, pool); + ret = fspr_thread_mutex_create(&(new_mutex->mutex), APR_THREAD_MUTEX_DEFAULT, pool); if (ret == APR_SUCCESS) *mutex = new_mutex; @@ -42,76 +42,76 @@ APR_DECLARE(apr_status_t) apr_proc_mutex_create(apr_proc_mutex_t **mutex, return ret; } -APR_DECLARE(apr_status_t) apr_proc_mutex_child_init(apr_proc_mutex_t **mutex, +APR_DECLARE(fspr_status_t) fspr_proc_mutex_child_init(fspr_proc_mutex_t **mutex, const char *fname, - apr_pool_t *pool) + fspr_pool_t *pool) { return APR_SUCCESS; } -APR_DECLARE(apr_status_t) apr_proc_mutex_lock(apr_proc_mutex_t *mutex) +APR_DECLARE(fspr_status_t) fspr_proc_mutex_lock(fspr_proc_mutex_t *mutex) { if (mutex) - return apr_thread_mutex_lock(mutex->mutex); + return fspr_thread_mutex_lock(mutex->mutex); return APR_ENOLOCK; } -APR_DECLARE(apr_status_t) apr_proc_mutex_trylock(apr_proc_mutex_t *mutex) +APR_DECLARE(fspr_status_t) fspr_proc_mutex_trylock(fspr_proc_mutex_t *mutex) { if (mutex) - return apr_thread_mutex_trylock(mutex->mutex); + return fspr_thread_mutex_trylock(mutex->mutex); return APR_ENOLOCK; } -APR_DECLARE(apr_status_t) apr_proc_mutex_unlock(apr_proc_mutex_t *mutex) +APR_DECLARE(fspr_status_t) fspr_proc_mutex_unlock(fspr_proc_mutex_t *mutex) { if (mutex) - return apr_thread_mutex_unlock(mutex->mutex); + return fspr_thread_mutex_unlock(mutex->mutex); return APR_ENOLOCK; } -APR_DECLARE(apr_status_t) apr_proc_mutex_cleanup(void *mutex) +APR_DECLARE(fspr_status_t) fspr_proc_mutex_cleanup(void *mutex) { - return apr_proc_mutex_destroy(mutex); + return fspr_proc_mutex_destroy(mutex); } -APR_DECLARE(apr_status_t) apr_proc_mutex_destroy(apr_proc_mutex_t *mutex) +APR_DECLARE(fspr_status_t) fspr_proc_mutex_destroy(fspr_proc_mutex_t *mutex) { if (mutex) - return apr_thread_mutex_destroy(mutex->mutex); + return fspr_thread_mutex_destroy(mutex->mutex); return APR_ENOLOCK; } -APR_DECLARE(const char *) apr_proc_mutex_lockfile(apr_proc_mutex_t *mutex) +APR_DECLARE(const char *) fspr_proc_mutex_lockfile(fspr_proc_mutex_t *mutex) { return NULL; } -APR_DECLARE(const char *) apr_proc_mutex_name(apr_proc_mutex_t *mutex) +APR_DECLARE(const char *) fspr_proc_mutex_name(fspr_proc_mutex_t *mutex) { return "netwarethread"; } -APR_DECLARE(const char *) apr_proc_mutex_defname(void) +APR_DECLARE(const char *) fspr_proc_mutex_defname(void) { return "netwarethread"; } APR_POOL_IMPLEMENT_ACCESSOR(proc_mutex) -/* Implement OS-specific accessors defined in apr_portable.h */ +/* Implement OS-specific accessors defined in fspr_portable.h */ -apr_status_t apr_os_proc_mutex_get(apr_os_proc_mutex_t *ospmutex, - apr_proc_mutex_t *pmutex) +fspr_status_t fspr_os_proc_mutex_get(fspr_os_proc_mutex_t *ospmutex, + fspr_proc_mutex_t *pmutex) { if (pmutex) ospmutex = pmutex->mutex->mutex; return APR_ENOLOCK; } -apr_status_t apr_os_proc_mutex_put(apr_proc_mutex_t **pmutex, - apr_os_proc_mutex_t *ospmutex, - apr_pool_t *pool) +fspr_status_t fspr_os_proc_mutex_put(fspr_proc_mutex_t **pmutex, + fspr_os_proc_mutex_t *ospmutex, + fspr_pool_t *pool) { return APR_ENOTIMPL; } diff --git a/libs/apr/locks/netware/thread_cond.c b/libs/apr/locks/netware/thread_cond.c index dcb21edc9e0..19f4649fe52 100644 --- a/libs/apr/locks/netware/thread_cond.c +++ b/libs/apr/locks/netware/thread_cond.c @@ -16,28 +16,28 @@ #include -#include "apr.h" -#include "apr_private.h" -#include "apr_general.h" -#include "apr_strings.h" -#include "apr_arch_thread_mutex.h" -#include "apr_arch_thread_cond.h" -#include "apr_portable.h" +#include "fspr.h" +#include "fspr_private.h" +#include "fspr_general.h" +#include "fspr_strings.h" +#include "fspr_arch_thread_mutex.h" +#include "fspr_arch_thread_cond.h" +#include "fspr_portable.h" -static apr_status_t thread_cond_cleanup(void *data) +static fspr_status_t thread_cond_cleanup(void *data) { - apr_thread_cond_t *cond = (apr_thread_cond_t *)data; + fspr_thread_cond_t *cond = (fspr_thread_cond_t *)data; NXCondFree(cond->cond); return APR_SUCCESS; } -APR_DECLARE(apr_status_t) apr_thread_cond_create(apr_thread_cond_t **cond, - apr_pool_t *pool) +APR_DECLARE(fspr_status_t) fspr_thread_cond_create(fspr_thread_cond_t **cond, + fspr_pool_t *pool) { - apr_thread_cond_t *new_cond = NULL; + fspr_thread_cond_t *new_cond = NULL; - new_cond = (apr_thread_cond_t *)apr_pcalloc(pool, sizeof(apr_thread_cond_t)); + new_cond = (fspr_thread_cond_t *)fspr_pcalloc(pool, sizeof(fspr_thread_cond_t)); if(new_cond ==NULL) { return APR_ENOMEM; @@ -49,24 +49,24 @@ APR_DECLARE(apr_status_t) apr_thread_cond_create(apr_thread_cond_t **cond, if(new_cond->cond == NULL) return APR_ENOMEM; - apr_pool_cleanup_register(new_cond->pool, new_cond, + fspr_pool_cleanup_register(new_cond->pool, new_cond, (void*)thread_cond_cleanup, - apr_pool_cleanup_null); + fspr_pool_cleanup_null); *cond = new_cond; return APR_SUCCESS; } -APR_DECLARE(apr_status_t) apr_thread_cond_wait(apr_thread_cond_t *cond, - apr_thread_mutex_t *mutex) +APR_DECLARE(fspr_status_t) fspr_thread_cond_wait(fspr_thread_cond_t *cond, + fspr_thread_mutex_t *mutex) { if (NXCondWait(cond->cond, mutex->mutex) != 0) return APR_EINTR; return APR_SUCCESS; } -APR_DECLARE(apr_status_t) apr_thread_cond_timedwait(apr_thread_cond_t *cond, - apr_thread_mutex_t *mutex, - apr_interval_time_t timeout){ +APR_DECLARE(fspr_status_t) fspr_thread_cond_timedwait(fspr_thread_cond_t *cond, + fspr_thread_mutex_t *mutex, + fspr_interval_time_t timeout){ if (NXCondTimedWait(cond->cond, mutex->mutex, (timeout*1000)/NXGetSystemTick()) == NX_ETIMEDOUT) { return APR_TIMEUP; @@ -74,23 +74,23 @@ APR_DECLARE(apr_status_t) apr_thread_cond_timedwait(apr_thread_cond_t *cond, return APR_SUCCESS; } -APR_DECLARE(apr_status_t) apr_thread_cond_signal(apr_thread_cond_t *cond) +APR_DECLARE(fspr_status_t) fspr_thread_cond_signal(fspr_thread_cond_t *cond) { NXCondSignal(cond->cond); return APR_SUCCESS; } -APR_DECLARE(apr_status_t) apr_thread_cond_broadcast(apr_thread_cond_t *cond) +APR_DECLARE(fspr_status_t) fspr_thread_cond_broadcast(fspr_thread_cond_t *cond) { NXCondBroadcast(cond->cond); return APR_SUCCESS; } -APR_DECLARE(apr_status_t) apr_thread_cond_destroy(apr_thread_cond_t *cond) +APR_DECLARE(fspr_status_t) fspr_thread_cond_destroy(fspr_thread_cond_t *cond) { - apr_status_t stat; + fspr_status_t stat; if ((stat = thread_cond_cleanup(cond)) == APR_SUCCESS) { - apr_pool_cleanup_kill(cond->pool, cond, thread_cond_cleanup); + fspr_pool_cleanup_kill(cond->pool, cond, thread_cond_cleanup); return APR_SUCCESS; } return stat; diff --git a/libs/apr/locks/netware/thread_mutex.c b/libs/apr/locks/netware/thread_mutex.c index 98bf33bd223..8607211a4b9 100644 --- a/libs/apr/locks/netware/thread_mutex.c +++ b/libs/apr/locks/netware/thread_mutex.c @@ -14,33 +14,33 @@ * limitations under the License. */ -#include "apr.h" -#include "apr_private.h" -#include "apr_general.h" -#include "apr_strings.h" -#include "apr_arch_thread_mutex.h" -#include "apr_portable.h" +#include "fspr.h" +#include "fspr_private.h" +#include "fspr_general.h" +#include "fspr_strings.h" +#include "fspr_arch_thread_mutex.h" +#include "fspr_portable.h" -static apr_status_t thread_mutex_cleanup(void *data) +static fspr_status_t thread_mutex_cleanup(void *data) { - apr_thread_mutex_t *mutex = (apr_thread_mutex_t *)data; + fspr_thread_mutex_t *mutex = (fspr_thread_mutex_t *)data; NXMutexFree(mutex->mutex); return APR_SUCCESS; } -APR_DECLARE(apr_status_t) apr_thread_mutex_create(apr_thread_mutex_t **mutex, +APR_DECLARE(fspr_status_t) fspr_thread_mutex_create(fspr_thread_mutex_t **mutex, unsigned int flags, - apr_pool_t *pool) + fspr_pool_t *pool) { - apr_thread_mutex_t *new_mutex = NULL; + fspr_thread_mutex_t *new_mutex = NULL; /* XXX: Implement _UNNESTED flavor and favor _DEFAULT for performance */ if (flags & APR_THREAD_MUTEX_UNNESTED) { return APR_ENOTIMPL; } - new_mutex = (apr_thread_mutex_t *)apr_pcalloc(pool, sizeof(apr_thread_mutex_t)); + new_mutex = (fspr_thread_mutex_t *)fspr_pcalloc(pool, sizeof(fspr_thread_mutex_t)); if(new_mutex ==NULL) { return APR_ENOMEM; @@ -52,37 +52,37 @@ APR_DECLARE(apr_status_t) apr_thread_mutex_create(apr_thread_mutex_t **mutex, if(new_mutex->mutex == NULL) return APR_ENOMEM; - apr_pool_cleanup_register(new_mutex->pool, new_mutex, + fspr_pool_cleanup_register(new_mutex->pool, new_mutex, (void*)thread_mutex_cleanup, - apr_pool_cleanup_null); + fspr_pool_cleanup_null); *mutex = new_mutex; return APR_SUCCESS; } -APR_DECLARE(apr_status_t) apr_thread_mutex_lock(apr_thread_mutex_t *mutex) +APR_DECLARE(fspr_status_t) fspr_thread_mutex_lock(fspr_thread_mutex_t *mutex) { NXLock(mutex->mutex); return APR_SUCCESS; } -APR_DECLARE(apr_status_t) apr_thread_mutex_trylock(apr_thread_mutex_t *mutex) +APR_DECLARE(fspr_status_t) fspr_thread_mutex_trylock(fspr_thread_mutex_t *mutex) { if (!NXTryLock(mutex->mutex)) return APR_EBUSY; return APR_SUCCESS; } -APR_DECLARE(apr_status_t) apr_thread_mutex_unlock(apr_thread_mutex_t *mutex) +APR_DECLARE(fspr_status_t) fspr_thread_mutex_unlock(fspr_thread_mutex_t *mutex) { NXUnlock(mutex->mutex); return APR_SUCCESS; } -APR_DECLARE(apr_status_t) apr_thread_mutex_destroy(apr_thread_mutex_t *mutex) +APR_DECLARE(fspr_status_t) fspr_thread_mutex_destroy(fspr_thread_mutex_t *mutex) { - apr_status_t stat; + fspr_status_t stat; if ((stat = thread_mutex_cleanup(mutex)) == APR_SUCCESS) { - apr_pool_cleanup_kill(mutex->pool, mutex, thread_mutex_cleanup); + fspr_pool_cleanup_kill(mutex->pool, mutex, thread_mutex_cleanup); return APR_SUCCESS; } return stat; diff --git a/libs/apr/locks/netware/thread_rwlock.c b/libs/apr/locks/netware/thread_rwlock.c index d0bf3ddf342..d0f094d2df7 100644 --- a/libs/apr/locks/netware/thread_rwlock.c +++ b/libs/apr/locks/netware/thread_rwlock.c @@ -14,85 +14,85 @@ * limitations under the License. */ -#include "apr.h" -#include "apr_private.h" -#include "apr_general.h" -#include "apr_strings.h" -#include "apr_arch_thread_rwlock.h" -#include "apr_portable.h" +#include "fspr.h" +#include "fspr_private.h" +#include "fspr_general.h" +#include "fspr_strings.h" +#include "fspr_arch_thread_rwlock.h" +#include "fspr_portable.h" -static apr_status_t thread_rwlock_cleanup(void *data) +static fspr_status_t thread_rwlock_cleanup(void *data) { - apr_thread_rwlock_t *rwlock = (apr_thread_rwlock_t *)data; + fspr_thread_rwlock_t *rwlock = (fspr_thread_rwlock_t *)data; NXRwLockFree (rwlock->rwlock); return APR_SUCCESS; } -APR_DECLARE(apr_status_t) apr_thread_rwlock_create(apr_thread_rwlock_t **rwlock, - apr_pool_t *pool) +APR_DECLARE(fspr_status_t) fspr_thread_rwlock_create(fspr_thread_rwlock_t **rwlock, + fspr_pool_t *pool) { - apr_thread_rwlock_t *new_rwlock = NULL; + fspr_thread_rwlock_t *new_rwlock = NULL; NXHierarchy_t hierarchy = 1; //for libc NKS NXRwLockAlloc NXLockInfo_t *info; //for libc NKS NXRwLockAlloc - new_rwlock = (apr_thread_rwlock_t *)apr_pcalloc(pool, sizeof(apr_thread_rwlock_t)); + new_rwlock = (fspr_thread_rwlock_t *)fspr_pcalloc(pool, sizeof(fspr_thread_rwlock_t)); if(new_rwlock ==NULL) { return APR_ENOMEM; } new_rwlock->pool = pool; - info = (NXLockInfo_t *)apr_pcalloc(pool, sizeof(NXLockInfo_t)); + info = (NXLockInfo_t *)fspr_pcalloc(pool, sizeof(NXLockInfo_t)); new_rwlock->rwlock = NXRwLockAlloc(hierarchy, info); if(new_rwlock->rwlock == NULL) return APR_ENOMEM; - apr_pool_cleanup_register(new_rwlock->pool, new_rwlock, thread_rwlock_cleanup, - apr_pool_cleanup_null); + fspr_pool_cleanup_register(new_rwlock->pool, new_rwlock, thread_rwlock_cleanup, + fspr_pool_cleanup_null); *rwlock = new_rwlock; return APR_SUCCESS; } -APR_DECLARE(apr_status_t) apr_thread_rwlock_rdlock(apr_thread_rwlock_t *rwlock) +APR_DECLARE(fspr_status_t) fspr_thread_rwlock_rdlock(fspr_thread_rwlock_t *rwlock) { NXRdLock(rwlock->rwlock); return APR_SUCCESS; } -APR_DECLARE(apr_status_t) apr_thread_rwlock_tryrdlock(apr_thread_rwlock_t *rwlock) +APR_DECLARE(fspr_status_t) fspr_thread_rwlock_tryrdlock(fspr_thread_rwlock_t *rwlock) { if (!NXTryRdLock(rwlock->rwlock)) return APR_EBUSY; return APR_SUCCESS; } -APR_DECLARE(apr_status_t) apr_thread_rwlock_wrlock(apr_thread_rwlock_t *rwlock) +APR_DECLARE(fspr_status_t) fspr_thread_rwlock_wrlock(fspr_thread_rwlock_t *rwlock) { NXWrLock(rwlock->rwlock); return APR_SUCCESS; } -APR_DECLARE(apr_status_t) apr_thread_rwlock_trywrlock(apr_thread_rwlock_t *rwlock) +APR_DECLARE(fspr_status_t) fspr_thread_rwlock_trywrlock(fspr_thread_rwlock_t *rwlock) { if (!NXTryWrLock(rwlock->rwlock)) return APR_EBUSY; return APR_SUCCESS; } -APR_DECLARE(apr_status_t) apr_thread_rwlock_unlock(apr_thread_rwlock_t *rwlock) +APR_DECLARE(fspr_status_t) fspr_thread_rwlock_unlock(fspr_thread_rwlock_t *rwlock) { NXRwUnlock(rwlock->rwlock); return APR_SUCCESS; } -APR_DECLARE(apr_status_t) apr_thread_rwlock_destroy(apr_thread_rwlock_t *rwlock) +APR_DECLARE(fspr_status_t) fspr_thread_rwlock_destroy(fspr_thread_rwlock_t *rwlock) { - apr_status_t stat; + fspr_status_t stat; if ((stat = thread_rwlock_cleanup(rwlock)) == APR_SUCCESS) { - apr_pool_cleanup_kill(rwlock->pool, rwlock, thread_rwlock_cleanup); + fspr_pool_cleanup_kill(rwlock->pool, rwlock, thread_rwlock_cleanup); return APR_SUCCESS; } return stat; diff --git a/libs/apr/locks/os2/proc_mutex.c b/libs/apr/locks/os2/proc_mutex.c index 5a49356355a..695dc0931e7 100644 --- a/libs/apr/locks/os2/proc_mutex.c +++ b/libs/apr/locks/os2/proc_mutex.c @@ -14,18 +14,18 @@ * limitations under the License. */ -#include "apr_general.h" -#include "apr_lib.h" -#include "apr_strings.h" -#include "apr_portable.h" -#include "apr_arch_proc_mutex.h" -#include "apr_arch_file_io.h" +#include "fspr_general.h" +#include "fspr_lib.h" +#include "fspr_strings.h" +#include "fspr_portable.h" +#include "fspr_arch_proc_mutex.h" +#include "fspr_arch_file_io.h" #include #include #define CurrentTid (*_threadid) -static char *fixed_name(const char *fname, apr_pool_t *pool) +static char *fixed_name(const char *fname, fspr_pool_t *pool) { char *semname; @@ -37,7 +37,7 @@ static char *fixed_name(const char *fname, apr_pool_t *pool) fname++; } - semname = apr_pstrcat(pool, "/SEM32/", fname, NULL); + semname = fspr_pstrcat(pool, "/SEM32/", fname, NULL); if (semname[8] == ':') { semname[8] = '$'; @@ -49,34 +49,34 @@ static char *fixed_name(const char *fname, apr_pool_t *pool) -APR_DECLARE(apr_status_t) apr_proc_mutex_cleanup(void *vmutex) +APR_DECLARE(fspr_status_t) fspr_proc_mutex_cleanup(void *vmutex) { - apr_proc_mutex_t *mutex = vmutex; - return apr_proc_mutex_destroy(mutex); + fspr_proc_mutex_t *mutex = vmutex; + return fspr_proc_mutex_destroy(mutex); } -APR_DECLARE(const char *) apr_proc_mutex_lockfile(apr_proc_mutex_t *mutex) +APR_DECLARE(const char *) fspr_proc_mutex_lockfile(fspr_proc_mutex_t *mutex) { return NULL; } -APR_DECLARE(const char *) apr_proc_mutex_name(apr_proc_mutex_t *mutex) +APR_DECLARE(const char *) fspr_proc_mutex_name(fspr_proc_mutex_t *mutex) { return "os2sem"; } -APR_DECLARE(const char *) apr_proc_mutex_defname(void) +APR_DECLARE(const char *) fspr_proc_mutex_defname(void) { return "os2sem"; } -APR_DECLARE(apr_status_t) apr_proc_mutex_create(apr_proc_mutex_t **mutex, +APR_DECLARE(fspr_status_t) fspr_proc_mutex_create(fspr_proc_mutex_t **mutex, const char *fname, - apr_lockmech_e mech, - apr_pool_t *pool) + fspr_lockmech_e mech, + fspr_pool_t *pool) { - apr_proc_mutex_t *new; + fspr_proc_mutex_t *new; ULONG rc; char *semname; @@ -84,7 +84,7 @@ APR_DECLARE(apr_status_t) apr_proc_mutex_create(apr_proc_mutex_t **mutex, return APR_ENOTIMPL; } - new = (apr_proc_mutex_t *)apr_palloc(pool, sizeof(apr_proc_mutex_t)); + new = (fspr_proc_mutex_t *)fspr_palloc(pool, sizeof(fspr_proc_mutex_t)); new->pool = pool; new->owner = 0; new->lock_count = 0; @@ -94,7 +94,7 @@ APR_DECLARE(apr_status_t) apr_proc_mutex_create(apr_proc_mutex_t **mutex, rc = DosCreateMutexSem(semname, &(new->hMutex), DC_SEM_SHARED, FALSE); if (!rc) { - apr_pool_cleanup_register(pool, new, apr_proc_mutex_cleanup, apr_pool_cleanup_null); + fspr_pool_cleanup_register(pool, new, fspr_proc_mutex_cleanup, fspr_pool_cleanup_null); } return APR_FROM_OS_ERROR(rc); @@ -102,15 +102,15 @@ APR_DECLARE(apr_status_t) apr_proc_mutex_create(apr_proc_mutex_t **mutex, -APR_DECLARE(apr_status_t) apr_proc_mutex_child_init(apr_proc_mutex_t **mutex, +APR_DECLARE(fspr_status_t) fspr_proc_mutex_child_init(fspr_proc_mutex_t **mutex, const char *fname, - apr_pool_t *pool) + fspr_pool_t *pool) { - apr_proc_mutex_t *new; + fspr_proc_mutex_t *new; ULONG rc; char *semname; - new = (apr_proc_mutex_t *)apr_palloc(pool, sizeof(apr_proc_mutex_t)); + new = (fspr_proc_mutex_t *)fspr_palloc(pool, sizeof(fspr_proc_mutex_t)); new->pool = pool; new->owner = 0; new->lock_count = 0; @@ -120,7 +120,7 @@ APR_DECLARE(apr_status_t) apr_proc_mutex_child_init(apr_proc_mutex_t **mutex, *mutex = new; if (!rc) { - apr_pool_cleanup_register(pool, new, apr_proc_mutex_cleanup, apr_pool_cleanup_null); + fspr_pool_cleanup_register(pool, new, fspr_proc_mutex_cleanup, fspr_pool_cleanup_null); } return APR_FROM_OS_ERROR(rc); @@ -128,7 +128,7 @@ APR_DECLARE(apr_status_t) apr_proc_mutex_child_init(apr_proc_mutex_t **mutex, -APR_DECLARE(apr_status_t) apr_proc_mutex_lock(apr_proc_mutex_t *mutex) +APR_DECLARE(fspr_status_t) fspr_proc_mutex_lock(fspr_proc_mutex_t *mutex) { ULONG rc = DosRequestMutexSem(mutex->hMutex, SEM_INDEFINITE_WAIT); @@ -142,7 +142,7 @@ APR_DECLARE(apr_status_t) apr_proc_mutex_lock(apr_proc_mutex_t *mutex) -APR_DECLARE(apr_status_t) apr_proc_mutex_trylock(apr_proc_mutex_t *mutex) +APR_DECLARE(fspr_status_t) fspr_proc_mutex_trylock(fspr_proc_mutex_t *mutex) { ULONG rc = DosRequestMutexSem(mutex->hMutex, SEM_IMMEDIATE_RETURN); @@ -156,7 +156,7 @@ APR_DECLARE(apr_status_t) apr_proc_mutex_trylock(apr_proc_mutex_t *mutex) -APR_DECLARE(apr_status_t) apr_proc_mutex_unlock(apr_proc_mutex_t *mutex) +APR_DECLARE(fspr_status_t) fspr_proc_mutex_unlock(fspr_proc_mutex_t *mutex) { ULONG rc; @@ -171,14 +171,14 @@ APR_DECLARE(apr_status_t) apr_proc_mutex_unlock(apr_proc_mutex_t *mutex) -APR_DECLARE(apr_status_t) apr_proc_mutex_destroy(apr_proc_mutex_t *mutex) +APR_DECLARE(fspr_status_t) fspr_proc_mutex_destroy(fspr_proc_mutex_t *mutex) { ULONG rc; - apr_status_t status = APR_SUCCESS; + fspr_status_t status = APR_SUCCESS; if (mutex->owner == CurrentTid) { while (mutex->lock_count > 0 && status == APR_SUCCESS) { - status = apr_proc_mutex_unlock(mutex); + status = fspr_proc_mutex_unlock(mutex); } } @@ -205,10 +205,10 @@ APR_POOL_IMPLEMENT_ACCESSOR(proc_mutex) -/* Implement OS-specific accessors defined in apr_portable.h */ +/* Implement OS-specific accessors defined in fspr_portable.h */ -APR_DECLARE(apr_status_t) apr_os_proc_mutex_get(apr_os_proc_mutex_t *ospmutex, - apr_proc_mutex_t *pmutex) +APR_DECLARE(fspr_status_t) fspr_os_proc_mutex_get(fspr_os_proc_mutex_t *ospmutex, + fspr_proc_mutex_t *pmutex) { *ospmutex = pmutex->hMutex; return APR_ENOTIMPL; @@ -216,13 +216,13 @@ APR_DECLARE(apr_status_t) apr_os_proc_mutex_get(apr_os_proc_mutex_t *ospmutex, -APR_DECLARE(apr_status_t) apr_os_proc_mutex_put(apr_proc_mutex_t **pmutex, - apr_os_proc_mutex_t *ospmutex, - apr_pool_t *pool) +APR_DECLARE(fspr_status_t) fspr_os_proc_mutex_put(fspr_proc_mutex_t **pmutex, + fspr_os_proc_mutex_t *ospmutex, + fspr_pool_t *pool) { - apr_proc_mutex_t *new; + fspr_proc_mutex_t *new; - new = (apr_proc_mutex_t *)apr_palloc(pool, sizeof(apr_proc_mutex_t)); + new = (fspr_proc_mutex_t *)fspr_palloc(pool, sizeof(fspr_proc_mutex_t)); new->pool = pool; new->owner = 0; new->lock_count = 0; diff --git a/libs/apr/locks/os2/thread_cond.c b/libs/apr/locks/os2/thread_cond.c index ec6034f55d9..509d159363c 100644 --- a/libs/apr/locks/os2/thread_cond.c +++ b/libs/apr/locks/os2/thread_cond.c @@ -14,44 +14,44 @@ * limitations under the License. */ -#include "apr_general.h" -#include "apr_lib.h" -#include "apr_strings.h" -#include "apr_portable.h" -#include "apr_arch_thread_mutex.h" -#include "apr_arch_thread_cond.h" -#include "apr_arch_file_io.h" +#include "fspr_general.h" +#include "fspr_lib.h" +#include "fspr_strings.h" +#include "fspr_portable.h" +#include "fspr_arch_thread_mutex.h" +#include "fspr_arch_thread_cond.h" +#include "fspr_arch_file_io.h" #include -APR_DECLARE(apr_status_t) apr_thread_cond_create(apr_thread_cond_t **cond, - apr_pool_t *pool) +APR_DECLARE(fspr_status_t) fspr_thread_cond_create(fspr_thread_cond_t **cond, + fspr_pool_t *pool) { return APR_ENOTIMPL; } -APR_DECLARE(apr_status_t) apr_thread_cond_wait(apr_thread_cond_t *cond, - apr_thread_mutex_t *mutex) +APR_DECLARE(fspr_status_t) fspr_thread_cond_wait(fspr_thread_cond_t *cond, + fspr_thread_mutex_t *mutex) { return APR_ENOTIMPL; } -APR_DECLARE(apr_status_t) apr_thread_cond_timedwait(apr_thread_cond_t *cond, - apr_thread_mutex_t *mutex, - apr_interval_time_t timeout){ +APR_DECLARE(fspr_status_t) fspr_thread_cond_timedwait(fspr_thread_cond_t *cond, + fspr_thread_mutex_t *mutex, + fspr_interval_time_t timeout){ return APR_ENOTIMPL; } -APR_DECLARE(apr_status_t) apr_thread_cond_signal(apr_thread_cond_t *cond) +APR_DECLARE(fspr_status_t) fspr_thread_cond_signal(fspr_thread_cond_t *cond) { return APR_ENOTIMPL; } -APR_DECLARE(apr_status_t) apr_thread_cond_broadcast(apr_thread_cond_t *cond) +APR_DECLARE(fspr_status_t) fspr_thread_cond_broadcast(fspr_thread_cond_t *cond) { return APR_ENOTIMPL; } -APR_DECLARE(apr_status_t) apr_thread_cond_destroy(apr_thread_cond_t *cond) +APR_DECLARE(fspr_status_t) fspr_thread_cond_destroy(fspr_thread_cond_t *cond) { return APR_ENOTIMPL; } diff --git a/libs/apr/locks/os2/thread_mutex.c b/libs/apr/locks/os2/thread_mutex.c index 5d8436be4f5..873820ded2b 100644 --- a/libs/apr/locks/os2/thread_mutex.c +++ b/libs/apr/locks/os2/thread_mutex.c @@ -14,19 +14,19 @@ * limitations under the License. */ -#include "apr_general.h" -#include "apr_lib.h" -#include "apr_strings.h" -#include "apr_portable.h" -#include "apr_arch_thread_mutex.h" -#include "apr_arch_file_io.h" +#include "fspr_general.h" +#include "fspr_lib.h" +#include "fspr_strings.h" +#include "fspr_portable.h" +#include "fspr_arch_thread_mutex.h" +#include "fspr_arch_file_io.h" #include #include -static apr_status_t thread_mutex_cleanup(void *themutex) +static fspr_status_t thread_mutex_cleanup(void *themutex) { - apr_thread_mutex_t *mutex = themutex; - return apr_thread_mutex_destroy(mutex); + fspr_thread_mutex_t *mutex = themutex; + return fspr_thread_mutex_destroy(mutex); } @@ -34,28 +34,28 @@ static apr_status_t thread_mutex_cleanup(void *themutex) /* XXX: Need to respect APR_THREAD_MUTEX_[UN]NESTED flags argument * or return APR_ENOTIMPL!!! */ -APR_DECLARE(apr_status_t) apr_thread_mutex_create(apr_thread_mutex_t **mutex, +APR_DECLARE(fspr_status_t) fspr_thread_mutex_create(fspr_thread_mutex_t **mutex, unsigned int flags, - apr_pool_t *pool) + fspr_pool_t *pool) { - apr_thread_mutex_t *new_mutex; + fspr_thread_mutex_t *new_mutex; ULONG rc; - new_mutex = (apr_thread_mutex_t *)apr_palloc(pool, sizeof(apr_thread_mutex_t)); + new_mutex = (fspr_thread_mutex_t *)fspr_palloc(pool, sizeof(fspr_thread_mutex_t)); new_mutex->pool = pool; rc = DosCreateMutexSem(NULL, &(new_mutex->hMutex), 0, FALSE); *mutex = new_mutex; if (!rc) - apr_pool_cleanup_register(pool, new_mutex, thread_mutex_cleanup, apr_pool_cleanup_null); + fspr_pool_cleanup_register(pool, new_mutex, thread_mutex_cleanup, fspr_pool_cleanup_null); return APR_OS2_STATUS(rc); } -APR_DECLARE(apr_status_t) apr_thread_mutex_lock(apr_thread_mutex_t *mutex) +APR_DECLARE(fspr_status_t) fspr_thread_mutex_lock(fspr_thread_mutex_t *mutex) { ULONG rc = DosRequestMutexSem(mutex->hMutex, SEM_INDEFINITE_WAIT); return APR_OS2_STATUS(rc); @@ -63,7 +63,7 @@ APR_DECLARE(apr_status_t) apr_thread_mutex_lock(apr_thread_mutex_t *mutex) -APR_DECLARE(apr_status_t) apr_thread_mutex_trylock(apr_thread_mutex_t *mutex) +APR_DECLARE(fspr_status_t) fspr_thread_mutex_trylock(fspr_thread_mutex_t *mutex) { ULONG rc = DosRequestMutexSem(mutex->hMutex, SEM_IMMEDIATE_RETURN); return APR_OS2_STATUS(rc); @@ -71,7 +71,7 @@ APR_DECLARE(apr_status_t) apr_thread_mutex_trylock(apr_thread_mutex_t *mutex) -APR_DECLARE(apr_status_t) apr_thread_mutex_unlock(apr_thread_mutex_t *mutex) +APR_DECLARE(fspr_status_t) fspr_thread_mutex_unlock(fspr_thread_mutex_t *mutex) { ULONG rc = DosReleaseMutexSem(mutex->hMutex); return APR_OS2_STATUS(rc); @@ -79,7 +79,7 @@ APR_DECLARE(apr_status_t) apr_thread_mutex_unlock(apr_thread_mutex_t *mutex) -APR_DECLARE(apr_status_t) apr_thread_mutex_destroy(apr_thread_mutex_t *mutex) +APR_DECLARE(fspr_status_t) fspr_thread_mutex_destroy(fspr_thread_mutex_t *mutex) { ULONG rc; diff --git a/libs/apr/locks/os2/thread_rwlock.c b/libs/apr/locks/os2/thread_rwlock.c index 195a56bda3e..6d7ad2280ff 100644 --- a/libs/apr/locks/os2/thread_rwlock.c +++ b/libs/apr/locks/os2/thread_rwlock.c @@ -14,29 +14,29 @@ * limitations under the License. */ -#include "apr_general.h" -#include "apr_lib.h" -#include "apr_strings.h" -#include "apr_portable.h" -#include "apr_arch_thread_rwlock.h" -#include "apr_arch_file_io.h" +#include "fspr_general.h" +#include "fspr_lib.h" +#include "fspr_strings.h" +#include "fspr_portable.h" +#include "fspr_arch_thread_rwlock.h" +#include "fspr_arch_file_io.h" #include -static apr_status_t thread_rwlock_cleanup(void *therwlock) +static fspr_status_t thread_rwlock_cleanup(void *therwlock) { - apr_thread_rwlock_t *rwlock = therwlock; - return apr_thread_rwlock_destroy(rwlock); + fspr_thread_rwlock_t *rwlock = therwlock; + return fspr_thread_rwlock_destroy(rwlock); } -APR_DECLARE(apr_status_t) apr_thread_rwlock_create(apr_thread_rwlock_t **rwlock, - apr_pool_t *pool) +APR_DECLARE(fspr_status_t) fspr_thread_rwlock_create(fspr_thread_rwlock_t **rwlock, + fspr_pool_t *pool) { - apr_thread_rwlock_t *new_rwlock; + fspr_thread_rwlock_t *new_rwlock; ULONG rc; - new_rwlock = (apr_thread_rwlock_t *)apr_palloc(pool, sizeof(apr_thread_rwlock_t)); + new_rwlock = (fspr_thread_rwlock_t *)fspr_palloc(pool, sizeof(fspr_thread_rwlock_t)); new_rwlock->pool = pool; new_rwlock->readers = 0; @@ -53,15 +53,15 @@ APR_DECLARE(apr_status_t) apr_thread_rwlock_create(apr_thread_rwlock_t **rwlock, *rwlock = new_rwlock; if (!rc) - apr_pool_cleanup_register(pool, new_rwlock, thread_rwlock_cleanup, - apr_pool_cleanup_null); + fspr_pool_cleanup_register(pool, new_rwlock, thread_rwlock_cleanup, + fspr_pool_cleanup_null); return APR_FROM_OS_ERROR(rc); } -APR_DECLARE(apr_status_t) apr_thread_rwlock_rdlock(apr_thread_rwlock_t *rwlock) +APR_DECLARE(fspr_status_t) fspr_thread_rwlock_rdlock(fspr_thread_rwlock_t *rwlock) { ULONG rc, posts; @@ -82,7 +82,7 @@ APR_DECLARE(apr_status_t) apr_thread_rwlock_rdlock(apr_thread_rwlock_t *rwlock) -APR_DECLARE(apr_status_t) apr_thread_rwlock_tryrdlock(apr_thread_rwlock_t *rwlock) +APR_DECLARE(fspr_status_t) fspr_thread_rwlock_tryrdlock(fspr_thread_rwlock_t *rwlock) { /* As above but with different wait time */ ULONG rc, posts; @@ -100,7 +100,7 @@ APR_DECLARE(apr_status_t) apr_thread_rwlock_tryrdlock(apr_thread_rwlock_t *rwloc -APR_DECLARE(apr_status_t) apr_thread_rwlock_wrlock(apr_thread_rwlock_t *rwlock) +APR_DECLARE(fspr_status_t) fspr_thread_rwlock_wrlock(fspr_thread_rwlock_t *rwlock) { ULONG rc; @@ -125,7 +125,7 @@ APR_DECLARE(apr_status_t) apr_thread_rwlock_wrlock(apr_thread_rwlock_t *rwlock) -APR_DECLARE(apr_status_t) apr_thread_rwlock_trywrlock(apr_thread_rwlock_t *rwlock) +APR_DECLARE(fspr_status_t) fspr_thread_rwlock_trywrlock(fspr_thread_rwlock_t *rwlock) { ULONG rc; @@ -149,7 +149,7 @@ APR_DECLARE(apr_status_t) apr_thread_rwlock_trywrlock(apr_thread_rwlock_t *rwloc -APR_DECLARE(apr_status_t) apr_thread_rwlock_unlock(apr_thread_rwlock_t *rwlock) +APR_DECLARE(fspr_status_t) fspr_thread_rwlock_unlock(fspr_thread_rwlock_t *rwlock) { ULONG rc; @@ -176,7 +176,7 @@ APR_DECLARE(apr_status_t) apr_thread_rwlock_unlock(apr_thread_rwlock_t *rwlock) -APR_DECLARE(apr_status_t) apr_thread_rwlock_destroy(apr_thread_rwlock_t *rwlock) +APR_DECLARE(fspr_status_t) fspr_thread_rwlock_destroy(fspr_thread_rwlock_t *rwlock) { ULONG rc; diff --git a/libs/apr/locks/unix/global_mutex.c b/libs/apr/locks/unix/global_mutex.c index bfe360aa998..193482a62dd 100644 --- a/libs/apr/locks/unix/global_mutex.c +++ b/libs/apr/locks/unix/global_mutex.c @@ -14,27 +14,27 @@ * limitations under the License. */ -#include "apr.h" -#include "apr_strings.h" -#include "apr_arch_global_mutex.h" -#include "apr_proc_mutex.h" -#include "apr_thread_mutex.h" -#include "apr_portable.h" - -static apr_status_t global_mutex_cleanup(void *data) +#include "fspr.h" +#include "fspr_strings.h" +#include "fspr_arch_global_mutex.h" +#include "fspr_proc_mutex.h" +#include "fspr_thread_mutex.h" +#include "fspr_portable.h" + +static fspr_status_t global_mutex_cleanup(void *data) { - apr_global_mutex_t *m = (apr_global_mutex_t *)data; - apr_status_t rv; + fspr_global_mutex_t *m = (fspr_global_mutex_t *)data; + fspr_status_t rv; - rv = apr_proc_mutex_destroy(m->proc_mutex); + rv = fspr_proc_mutex_destroy(m->proc_mutex); #if APR_HAS_THREADS if (m->thread_mutex) { if (rv != APR_SUCCESS) { - (void)apr_thread_mutex_destroy(m->thread_mutex); + (void)fspr_thread_mutex_destroy(m->thread_mutex); } else { - rv = apr_thread_mutex_destroy(m->thread_mutex); + rv = fspr_thread_mutex_destroy(m->thread_mutex); } } #endif /* APR_HAS_THREADS */ @@ -42,18 +42,18 @@ static apr_status_t global_mutex_cleanup(void *data) return rv; } -APR_DECLARE(apr_status_t) apr_global_mutex_create(apr_global_mutex_t **mutex, +APR_DECLARE(fspr_status_t) fspr_global_mutex_create(fspr_global_mutex_t **mutex, const char *fname, - apr_lockmech_e mech, - apr_pool_t *pool) + fspr_lockmech_e mech, + fspr_pool_t *pool) { - apr_status_t rv; - apr_global_mutex_t *m; + fspr_status_t rv; + fspr_global_mutex_t *m; - m = (apr_global_mutex_t *)apr_palloc(pool, sizeof(*m)); + m = (fspr_global_mutex_t *)fspr_palloc(pool, sizeof(*m)); m->pool = pool; - rv = apr_proc_mutex_create(&m->proc_mutex, fname, mech, m->pool); + rv = fspr_proc_mutex_create(&m->proc_mutex, fname, mech, m->pool); if (rv != APR_SUCCESS) { return rv; } @@ -63,51 +63,51 @@ APR_DECLARE(apr_status_t) apr_global_mutex_create(apr_global_mutex_t **mutex, m->thread_mutex = NULL; /* We don't need a thread lock. */ } else { - rv = apr_thread_mutex_create(&m->thread_mutex, + rv = fspr_thread_mutex_create(&m->thread_mutex, APR_THREAD_MUTEX_DEFAULT, m->pool); if (rv != APR_SUCCESS) { - rv = apr_proc_mutex_destroy(m->proc_mutex); + rv = fspr_proc_mutex_destroy(m->proc_mutex); return rv; } } #endif /* APR_HAS_THREADS */ - apr_pool_cleanup_register(m->pool, (void *)m, - global_mutex_cleanup, apr_pool_cleanup_null); + fspr_pool_cleanup_register(m->pool, (void *)m, + global_mutex_cleanup, fspr_pool_cleanup_null); *mutex = m; return APR_SUCCESS; } -APR_DECLARE(apr_status_t) apr_global_mutex_child_init( - apr_global_mutex_t **mutex, +APR_DECLARE(fspr_status_t) fspr_global_mutex_child_init( + fspr_global_mutex_t **mutex, const char *fname, - apr_pool_t *pool) + fspr_pool_t *pool) { - apr_status_t rv; + fspr_status_t rv; - rv = apr_proc_mutex_child_init(&((*mutex)->proc_mutex), fname, pool); + rv = fspr_proc_mutex_child_init(&((*mutex)->proc_mutex), fname, pool); return rv; } -APR_DECLARE(apr_status_t) apr_global_mutex_lock(apr_global_mutex_t *mutex) +APR_DECLARE(fspr_status_t) fspr_global_mutex_lock(fspr_global_mutex_t *mutex) { - apr_status_t rv; + fspr_status_t rv; #if APR_HAS_THREADS if (mutex->thread_mutex) { - rv = apr_thread_mutex_lock(mutex->thread_mutex); + rv = fspr_thread_mutex_lock(mutex->thread_mutex); if (rv != APR_SUCCESS) { return rv; } } #endif /* APR_HAS_THREADS */ - rv = apr_proc_mutex_lock(mutex->proc_mutex); + rv = fspr_proc_mutex_lock(mutex->proc_mutex); #if APR_HAS_THREADS if (rv != APR_SUCCESS) { if (mutex->thread_mutex) { - (void)apr_thread_mutex_unlock(mutex->thread_mutex); + (void)fspr_thread_mutex_unlock(mutex->thread_mutex); } } #endif /* APR_HAS_THREADS */ @@ -115,25 +115,25 @@ APR_DECLARE(apr_status_t) apr_global_mutex_lock(apr_global_mutex_t *mutex) return rv; } -APR_DECLARE(apr_status_t) apr_global_mutex_trylock(apr_global_mutex_t *mutex) +APR_DECLARE(fspr_status_t) fspr_global_mutex_trylock(fspr_global_mutex_t *mutex) { - apr_status_t rv; + fspr_status_t rv; #if APR_HAS_THREADS if (mutex->thread_mutex) { - rv = apr_thread_mutex_trylock(mutex->thread_mutex); + rv = fspr_thread_mutex_trylock(mutex->thread_mutex); if (rv != APR_SUCCESS) { return rv; } } #endif /* APR_HAS_THREADS */ - rv = apr_proc_mutex_trylock(mutex->proc_mutex); + rv = fspr_proc_mutex_trylock(mutex->proc_mutex); #if APR_HAS_THREADS if (rv != APR_SUCCESS) { if (mutex->thread_mutex) { - (void)apr_thread_mutex_unlock(mutex->thread_mutex); + (void)fspr_thread_mutex_unlock(mutex->thread_mutex); } } #endif /* APR_HAS_THREADS */ @@ -141,26 +141,26 @@ APR_DECLARE(apr_status_t) apr_global_mutex_trylock(apr_global_mutex_t *mutex) return rv; } -APR_DECLARE(apr_status_t) apr_global_mutex_unlock(apr_global_mutex_t *mutex) +APR_DECLARE(fspr_status_t) fspr_global_mutex_unlock(fspr_global_mutex_t *mutex) { - apr_status_t rv; + fspr_status_t rv; - rv = apr_proc_mutex_unlock(mutex->proc_mutex); + rv = fspr_proc_mutex_unlock(mutex->proc_mutex); #if APR_HAS_THREADS if (mutex->thread_mutex) { if (rv != APR_SUCCESS) { - (void)apr_thread_mutex_unlock(mutex->thread_mutex); + (void)fspr_thread_mutex_unlock(mutex->thread_mutex); } else { - rv = apr_thread_mutex_unlock(mutex->thread_mutex); + rv = fspr_thread_mutex_unlock(mutex->thread_mutex); } } #endif /* APR_HAS_THREADS */ return rv; } -APR_DECLARE(apr_status_t) apr_os_global_mutex_get(apr_os_global_mutex_t *ospmutex, - apr_global_mutex_t *pmutex) +APR_DECLARE(fspr_status_t) fspr_os_global_mutex_get(fspr_os_global_mutex_t *ospmutex, + fspr_global_mutex_t *pmutex) { ospmutex->pool = pmutex->pool; ospmutex->proc_mutex = pmutex->proc_mutex; @@ -170,9 +170,9 @@ APR_DECLARE(apr_status_t) apr_os_global_mutex_get(apr_os_global_mutex_t *ospmute return APR_SUCCESS; } -APR_DECLARE(apr_status_t) apr_global_mutex_destroy(apr_global_mutex_t *mutex) +APR_DECLARE(fspr_status_t) fspr_global_mutex_destroy(fspr_global_mutex_t *mutex) { - return apr_pool_cleanup_run(mutex->pool, mutex, global_mutex_cleanup); + return fspr_pool_cleanup_run(mutex->pool, mutex, global_mutex_cleanup); } APR_POOL_IMPLEMENT_ACCESSOR(global_mutex) diff --git a/libs/apr/locks/unix/proc_mutex.c b/libs/apr/locks/unix/proc_mutex.c index 26b2f9029a0..cebceadf7c6 100644 --- a/libs/apr/locks/unix/proc_mutex.c +++ b/libs/apr/locks/unix/proc_mutex.c @@ -14,25 +14,25 @@ * limitations under the License. */ -#include "apr.h" -#include "apr_strings.h" -#include "apr_arch_proc_mutex.h" -#include "apr_arch_file_io.h" /* for apr_mkstemp() */ +#include "fspr.h" +#include "fspr_strings.h" +#include "fspr_arch_proc_mutex.h" +#include "fspr_arch_file_io.h" /* for fspr_mkstemp() */ -APR_DECLARE(apr_status_t) apr_proc_mutex_destroy(apr_proc_mutex_t *mutex) +APR_DECLARE(fspr_status_t) fspr_proc_mutex_destroy(fspr_proc_mutex_t *mutex) { - return apr_pool_cleanup_run(mutex->pool, mutex, apr_proc_mutex_cleanup); + return fspr_pool_cleanup_run(mutex->pool, mutex, fspr_proc_mutex_cleanup); } -static apr_status_t proc_mutex_no_tryacquire(apr_proc_mutex_t *new_mutex) +static fspr_status_t proc_mutex_no_tryacquire(fspr_proc_mutex_t *new_mutex) { return APR_ENOTIMPL; } #if APR_HAS_POSIXSEM_SERIALIZE || APR_HAS_FCNTL_SERIALIZE || \ APR_HAS_PROC_PTHREAD_SERIALIZE || APR_HAS_SYSVSEM_SERIALIZE -static apr_status_t proc_mutex_no_child_init(apr_proc_mutex_t **mutex, - apr_pool_t *cont, +static fspr_status_t proc_mutex_no_child_init(fspr_proc_mutex_t **mutex, + fspr_pool_t *cont, const char *fname) { return APR_SUCCESS; @@ -45,9 +45,9 @@ static apr_status_t proc_mutex_no_child_init(apr_proc_mutex_t **mutex, #define SEM_FAILED (-1) #endif -static apr_status_t proc_mutex_posix_cleanup(void *mutex_) +static fspr_status_t proc_mutex_posix_cleanup(void *mutex_) { - apr_proc_mutex_t *mutex = mutex_; + fspr_proc_mutex_t *mutex = mutex_; if (sem_close(mutex->psem_interproc) < 0) { return errno; @@ -56,16 +56,16 @@ static apr_status_t proc_mutex_posix_cleanup(void *mutex_) return APR_SUCCESS; } -static apr_status_t proc_mutex_posix_create(apr_proc_mutex_t *new_mutex, +static fspr_status_t proc_mutex_posix_create(fspr_proc_mutex_t *new_mutex, const char *fname) { sem_t *psem; char semname[31]; - apr_time_t now; + fspr_time_t now; unsigned long sec; unsigned long usec; - new_mutex->interproc = apr_palloc(new_mutex->pool, + new_mutex->interproc = fspr_palloc(new_mutex->pool, sizeof(*new_mutex->interproc)); /* * This bogusness is to follow what appears to be the @@ -92,10 +92,10 @@ static apr_status_t proc_mutex_posix_create(apr_proc_mutex_t *new_mutex, * help here however... * */ - now = apr_time_now(); - sec = apr_time_sec(now); - usec = apr_time_usec(now); - apr_snprintf(semname, sizeof(semname), "/ApR.%lxZ%lx", sec, usec); + now = fspr_time_now(); + sec = fspr_time_sec(now); + usec = fspr_time_usec(now); + fspr_snprintf(semname, sizeof(semname), "/ApR.%lxZ%lx", sec, usec); psem = sem_open(semname, O_CREAT, 0644, 1); if ((psem == (sem_t *)SEM_FAILED) && (errno == ENAMETOOLONG)) { /* Oh well, good try */ @@ -109,14 +109,14 @@ static apr_status_t proc_mutex_posix_create(apr_proc_mutex_t *new_mutex, /* Ahhh. The joys of Posix sems. Predelete it... */ sem_unlink(semname); new_mutex->psem_interproc = psem; - new_mutex->fname = apr_pstrdup(new_mutex->pool, semname); - apr_pool_cleanup_register(new_mutex->pool, (void *)new_mutex, - apr_proc_mutex_cleanup, - apr_pool_cleanup_null); + new_mutex->fname = fspr_pstrdup(new_mutex->pool, semname); + fspr_pool_cleanup_register(new_mutex->pool, (void *)new_mutex, + fspr_proc_mutex_cleanup, + fspr_pool_cleanup_null); return APR_SUCCESS; } -static apr_status_t proc_mutex_posix_acquire(apr_proc_mutex_t *mutex) +static fspr_status_t proc_mutex_posix_acquire(fspr_proc_mutex_t *mutex) { if (sem_wait(mutex->psem_interproc) < 0) { return errno; @@ -125,7 +125,7 @@ static apr_status_t proc_mutex_posix_acquire(apr_proc_mutex_t *mutex) return APR_SUCCESS; } -static apr_status_t proc_mutex_posix_release(apr_proc_mutex_t *mutex) +static fspr_status_t proc_mutex_posix_release(fspr_proc_mutex_t *mutex) { mutex->curr_locked = 0; if (sem_post(mutex->psem_interproc) < 0) { @@ -136,7 +136,7 @@ static apr_status_t proc_mutex_posix_release(apr_proc_mutex_t *mutex) return APR_SUCCESS; } -static const apr_proc_mutex_unix_lock_methods_t mutex_posixsem_methods = +static const fspr_proc_mutex_unix_lock_methods_t mutex_posixsem_methods = { #if APR_PROCESS_LOCK_IS_GLOBAL || !APR_HAS_THREADS || defined(POSIXSEM_IS_GLOBAL) APR_PROCESS_LOCK_MECH_IS_GLOBAL, @@ -169,9 +169,9 @@ static void proc_mutex_sysv_setup(void) proc_mutex_op_off.sem_flg = SEM_UNDO; } -static apr_status_t proc_mutex_sysv_cleanup(void *mutex_) +static fspr_status_t proc_mutex_sysv_cleanup(void *mutex_) { - apr_proc_mutex_t *mutex=mutex_; + fspr_proc_mutex_t *mutex=mutex_; union semun ick; if (mutex->interproc->filedes != -1) { @@ -181,13 +181,13 @@ static apr_status_t proc_mutex_sysv_cleanup(void *mutex_) return APR_SUCCESS; } -static apr_status_t proc_mutex_sysv_create(apr_proc_mutex_t *new_mutex, +static fspr_status_t proc_mutex_sysv_create(fspr_proc_mutex_t *new_mutex, const char *fname) { union semun ick; - apr_status_t rv; + fspr_status_t rv; - new_mutex->interproc = apr_palloc(new_mutex->pool, sizeof(*new_mutex->interproc)); + new_mutex->interproc = fspr_palloc(new_mutex->pool, sizeof(*new_mutex->interproc)); new_mutex->interproc->filedes = semget(IPC_PRIVATE, 1, IPC_CREAT | 0600); if (new_mutex->interproc->filedes < 0) { @@ -202,13 +202,13 @@ static apr_status_t proc_mutex_sysv_create(apr_proc_mutex_t *new_mutex, return rv; } new_mutex->curr_locked = 0; - apr_pool_cleanup_register(new_mutex->pool, - (void *)new_mutex, apr_proc_mutex_cleanup, - apr_pool_cleanup_null); + fspr_pool_cleanup_register(new_mutex->pool, + (void *)new_mutex, fspr_proc_mutex_cleanup, + fspr_pool_cleanup_null); return APR_SUCCESS; } -static apr_status_t proc_mutex_sysv_acquire(apr_proc_mutex_t *mutex) +static fspr_status_t proc_mutex_sysv_acquire(fspr_proc_mutex_t *mutex) { int rc; @@ -222,7 +222,7 @@ static apr_status_t proc_mutex_sysv_acquire(apr_proc_mutex_t *mutex) return APR_SUCCESS; } -static apr_status_t proc_mutex_sysv_release(apr_proc_mutex_t *mutex) +static fspr_status_t proc_mutex_sysv_release(fspr_proc_mutex_t *mutex) { int rc; @@ -236,7 +236,7 @@ static apr_status_t proc_mutex_sysv_release(apr_proc_mutex_t *mutex) return APR_SUCCESS; } -static const apr_proc_mutex_unix_lock_methods_t mutex_sysv_methods = +static const fspr_proc_mutex_unix_lock_methods_t mutex_sysv_methods = { #if APR_PROCESS_LOCK_IS_GLOBAL || !APR_HAS_THREADS || defined(SYSVSEM_IS_GLOBAL) APR_PROCESS_LOCK_MECH_IS_GLOBAL, @@ -256,10 +256,10 @@ static const apr_proc_mutex_unix_lock_methods_t mutex_sysv_methods = #if APR_HAS_PROC_PTHREAD_SERIALIZE -static apr_status_t proc_mutex_proc_pthread_cleanup(void *mutex_) +static fspr_status_t proc_mutex_proc_pthread_cleanup(void *mutex_) { - apr_proc_mutex_t *mutex=mutex_; - apr_status_t rv; + fspr_proc_mutex_t *mutex=mutex_; + fspr_status_t rv; if (mutex->curr_locked == 1) { if ((rv = pthread_mutex_unlock(mutex->pthread_interproc))) { @@ -284,10 +284,10 @@ static apr_status_t proc_mutex_proc_pthread_cleanup(void *mutex_) return APR_SUCCESS; } -static apr_status_t proc_mutex_proc_pthread_create(apr_proc_mutex_t *new_mutex, +static fspr_status_t proc_mutex_proc_pthread_create(fspr_proc_mutex_t *new_mutex, const char *fname) { - apr_status_t rv; + fspr_status_t rv; int fd; pthread_mutexattr_t mattr; @@ -364,16 +364,16 @@ static apr_status_t proc_mutex_proc_pthread_create(apr_proc_mutex_t *new_mutex, return rv; } - apr_pool_cleanup_register(new_mutex->pool, + fspr_pool_cleanup_register(new_mutex->pool, (void *)new_mutex, - apr_proc_mutex_cleanup, - apr_pool_cleanup_null); + fspr_proc_mutex_cleanup, + fspr_pool_cleanup_null); return APR_SUCCESS; } -static apr_status_t proc_mutex_proc_pthread_acquire(apr_proc_mutex_t *mutex) +static fspr_status_t proc_mutex_proc_pthread_acquire(fspr_proc_mutex_t *mutex) { - apr_status_t rv; + fspr_status_t rv; if ((rv = pthread_mutex_lock(mutex->pthread_interproc))) { #ifdef PTHREAD_SETS_ERRNO @@ -394,11 +394,11 @@ static apr_status_t proc_mutex_proc_pthread_acquire(apr_proc_mutex_t *mutex) return APR_SUCCESS; } -/* TODO: Add proc_mutex_proc_pthread_tryacquire(apr_proc_mutex_t *mutex) */ +/* TODO: Add proc_mutex_proc_pthread_tryacquire(fspr_proc_mutex_t *mutex) */ -static apr_status_t proc_mutex_proc_pthread_release(apr_proc_mutex_t *mutex) +static fspr_status_t proc_mutex_proc_pthread_release(fspr_proc_mutex_t *mutex) { - apr_status_t rv; + fspr_status_t rv; mutex->curr_locked = 0; if ((rv = pthread_mutex_unlock(mutex->pthread_interproc))) { @@ -410,7 +410,7 @@ static apr_status_t proc_mutex_proc_pthread_release(apr_proc_mutex_t *mutex) return APR_SUCCESS; } -static const apr_proc_mutex_unix_lock_methods_t mutex_proc_pthread_methods = +static const fspr_proc_mutex_unix_lock_methods_t mutex_proc_pthread_methods = { APR_PROCESS_LOCK_MECH_IS_GLOBAL, proc_mutex_proc_pthread_create, @@ -429,7 +429,7 @@ static const apr_proc_mutex_unix_lock_methods_t mutex_proc_pthread_methods = static struct flock proc_mutex_lock_it; static struct flock proc_mutex_unlock_it; -static apr_status_t proc_mutex_fcntl_release(apr_proc_mutex_t *); +static fspr_status_t proc_mutex_fcntl_release(fspr_proc_mutex_t *); static void proc_mutex_fcntl_setup(void) { @@ -445,10 +445,10 @@ static void proc_mutex_fcntl_setup(void) proc_mutex_unlock_it.l_pid = 0; /* pid not actually interesting */ } -static apr_status_t proc_mutex_fcntl_cleanup(void *mutex_) +static fspr_status_t proc_mutex_fcntl_cleanup(void *mutex_) { - apr_status_t status; - apr_proc_mutex_t *mutex=mutex_; + fspr_status_t status; + fspr_proc_mutex_t *mutex=mutex_; if (mutex->curr_locked == 1) { status = proc_mutex_fcntl_release(mutex); @@ -456,24 +456,24 @@ static apr_status_t proc_mutex_fcntl_cleanup(void *mutex_) return status; } - return apr_file_close(mutex->interproc); + return fspr_file_close(mutex->interproc); } -static apr_status_t proc_mutex_fcntl_create(apr_proc_mutex_t *new_mutex, +static fspr_status_t proc_mutex_fcntl_create(fspr_proc_mutex_t *new_mutex, const char *fname) { int rv; if (fname) { - new_mutex->fname = apr_pstrdup(new_mutex->pool, fname); - rv = apr_file_open(&new_mutex->interproc, new_mutex->fname, + new_mutex->fname = fspr_pstrdup(new_mutex->pool, fname); + rv = fspr_file_open(&new_mutex->interproc, new_mutex->fname, APR_CREATE | APR_WRITE | APR_EXCL, APR_UREAD | APR_UWRITE | APR_GREAD | APR_WREAD, new_mutex->pool); } else { - new_mutex->fname = apr_pstrdup(new_mutex->pool, "/tmp/aprXXXXXX"); - rv = apr_file_mktemp(&new_mutex->interproc, new_mutex->fname, + new_mutex->fname = fspr_pstrdup(new_mutex->pool, "/tmp/aprXXXXXX"); + rv = fspr_file_mktemp(&new_mutex->interproc, new_mutex->fname, APR_CREATE | APR_WRITE | APR_EXCL, new_mutex->pool); } @@ -484,14 +484,14 @@ static apr_status_t proc_mutex_fcntl_create(apr_proc_mutex_t *new_mutex, new_mutex->curr_locked = 0; unlink(new_mutex->fname); - apr_pool_cleanup_register(new_mutex->pool, + fspr_pool_cleanup_register(new_mutex->pool, (void*)new_mutex, - apr_proc_mutex_cleanup, - apr_pool_cleanup_null); + fspr_proc_mutex_cleanup, + fspr_pool_cleanup_null); return APR_SUCCESS; } -static apr_status_t proc_mutex_fcntl_acquire(apr_proc_mutex_t *mutex) +static fspr_status_t proc_mutex_fcntl_acquire(fspr_proc_mutex_t *mutex) { int rc; @@ -505,7 +505,7 @@ static apr_status_t proc_mutex_fcntl_acquire(apr_proc_mutex_t *mutex) return APR_SUCCESS; } -static apr_status_t proc_mutex_fcntl_release(apr_proc_mutex_t *mutex) +static fspr_status_t proc_mutex_fcntl_release(fspr_proc_mutex_t *mutex) { int rc; @@ -519,7 +519,7 @@ static apr_status_t proc_mutex_fcntl_release(apr_proc_mutex_t *mutex) return APR_SUCCESS; } -static const apr_proc_mutex_unix_lock_methods_t mutex_fcntl_methods = +static const fspr_proc_mutex_unix_lock_methods_t mutex_fcntl_methods = { #if APR_PROCESS_LOCK_IS_GLOBAL || !APR_HAS_THREADS || defined(FCNTL_IS_GLOBAL) APR_PROCESS_LOCK_MECH_IS_GLOBAL, @@ -539,12 +539,12 @@ static const apr_proc_mutex_unix_lock_methods_t mutex_fcntl_methods = #if APR_HAS_FLOCK_SERIALIZE -static apr_status_t proc_mutex_flock_release(apr_proc_mutex_t *); +static fspr_status_t proc_mutex_flock_release(fspr_proc_mutex_t *); -static apr_status_t proc_mutex_flock_cleanup(void *mutex_) +static fspr_status_t proc_mutex_flock_cleanup(void *mutex_) { - apr_status_t status; - apr_proc_mutex_t *mutex=mutex_; + fspr_status_t status; + fspr_proc_mutex_t *mutex=mutex_; if (mutex->curr_locked == 1) { status = proc_mutex_flock_release(mutex); @@ -552,27 +552,27 @@ static apr_status_t proc_mutex_flock_cleanup(void *mutex_) return status; } if (mutex->interproc) { /* if it was opened properly */ - apr_file_close(mutex->interproc); + fspr_file_close(mutex->interproc); } unlink(mutex->fname); return APR_SUCCESS; } -static apr_status_t proc_mutex_flock_create(apr_proc_mutex_t *new_mutex, +static fspr_status_t proc_mutex_flock_create(fspr_proc_mutex_t *new_mutex, const char *fname) { int rv; if (fname) { - new_mutex->fname = apr_pstrdup(new_mutex->pool, fname); - rv = apr_file_open(&new_mutex->interproc, new_mutex->fname, + new_mutex->fname = fspr_pstrdup(new_mutex->pool, fname); + rv = fspr_file_open(&new_mutex->interproc, new_mutex->fname, APR_CREATE | APR_WRITE | APR_EXCL, APR_UREAD | APR_UWRITE, new_mutex->pool); } else { - new_mutex->fname = apr_pstrdup(new_mutex->pool, "/tmp/aprXXXXXX"); - rv = apr_file_mktemp(&new_mutex->interproc, new_mutex->fname, + new_mutex->fname = fspr_pstrdup(new_mutex->pool, "/tmp/aprXXXXXX"); + rv = fspr_file_mktemp(&new_mutex->interproc, new_mutex->fname, APR_CREATE | APR_WRITE | APR_EXCL, new_mutex->pool); } @@ -582,13 +582,13 @@ static apr_status_t proc_mutex_flock_create(apr_proc_mutex_t *new_mutex, return errno; } new_mutex->curr_locked = 0; - apr_pool_cleanup_register(new_mutex->pool, (void *)new_mutex, - apr_proc_mutex_cleanup, - apr_pool_cleanup_null); + fspr_pool_cleanup_register(new_mutex->pool, (void *)new_mutex, + fspr_proc_mutex_cleanup, + fspr_pool_cleanup_null); return APR_SUCCESS; } -static apr_status_t proc_mutex_flock_acquire(apr_proc_mutex_t *mutex) +static fspr_status_t proc_mutex_flock_acquire(fspr_proc_mutex_t *mutex) { int rc; @@ -602,7 +602,7 @@ static apr_status_t proc_mutex_flock_acquire(apr_proc_mutex_t *mutex) return APR_SUCCESS; } -static apr_status_t proc_mutex_flock_release(apr_proc_mutex_t *mutex) +static fspr_status_t proc_mutex_flock_release(fspr_proc_mutex_t *mutex) { int rc; @@ -616,22 +616,22 @@ static apr_status_t proc_mutex_flock_release(apr_proc_mutex_t *mutex) return APR_SUCCESS; } -static apr_status_t proc_mutex_flock_child_init(apr_proc_mutex_t **mutex, - apr_pool_t *pool, +static fspr_status_t proc_mutex_flock_child_init(fspr_proc_mutex_t **mutex, + fspr_pool_t *pool, const char *fname) { - apr_proc_mutex_t *new_mutex; + fspr_proc_mutex_t *new_mutex; int rv; - new_mutex = (apr_proc_mutex_t *)apr_palloc(pool, sizeof(apr_proc_mutex_t)); + new_mutex = (fspr_proc_mutex_t *)fspr_palloc(pool, sizeof(fspr_proc_mutex_t)); memcpy(new_mutex, *mutex, sizeof *new_mutex); new_mutex->pool = pool; if (!fname) { fname = (*mutex)->fname; } - new_mutex->fname = apr_pstrdup(pool, fname); - rv = apr_file_open(&new_mutex->interproc, new_mutex->fname, + new_mutex->fname = fspr_pstrdup(pool, fname); + rv = fspr_file_open(&new_mutex->interproc, new_mutex->fname, APR_WRITE, 0, new_mutex->pool); if (rv != APR_SUCCESS) { return rv; @@ -640,7 +640,7 @@ static apr_status_t proc_mutex_flock_child_init(apr_proc_mutex_t **mutex, return APR_SUCCESS; } -static const apr_proc_mutex_unix_lock_methods_t mutex_flock_methods = +static const fspr_proc_mutex_unix_lock_methods_t mutex_flock_methods = { #if APR_PROCESS_LOCK_IS_GLOBAL || !APR_HAS_THREADS || defined(FLOCK_IS_GLOBAL) APR_PROCESS_LOCK_MECH_IS_GLOBAL, @@ -658,7 +658,7 @@ static const apr_proc_mutex_unix_lock_methods_t mutex_flock_methods = #endif /* flock implementation */ -void apr_proc_mutex_unix_setup_lock(void) +void fspr_proc_mutex_unix_setup_lock(void) { /* setup only needed for sysvsem and fnctl */ #if APR_HAS_SYSVSEM_SERIALIZE @@ -669,7 +669,7 @@ void apr_proc_mutex_unix_setup_lock(void) #endif } -static apr_status_t proc_mutex_choose_method(apr_proc_mutex_t *new_mutex, apr_lockmech_e mech) +static fspr_status_t proc_mutex_choose_method(fspr_proc_mutex_t *new_mutex, fspr_lockmech_e mech) { switch (mech) { case APR_LOCK_FCNTL: @@ -728,22 +728,21 @@ static apr_status_t proc_mutex_choose_method(apr_proc_mutex_t *new_mutex, apr_lo return APR_SUCCESS; } -APR_DECLARE(const char *) apr_proc_mutex_defname(void) +APR_DECLARE(const char *) fspr_proc_mutex_defname(void) { - apr_status_t rv; - apr_proc_mutex_t mutex; + fspr_proc_mutex_t mutex; - if ((rv = proc_mutex_choose_method(&mutex, APR_LOCK_DEFAULT)) != APR_SUCCESS) { + if (proc_mutex_choose_method(&mutex, APR_LOCK_DEFAULT) != APR_SUCCESS) { return "unknown"; } mutex.meth = mutex.inter_meth; - return apr_proc_mutex_name(&mutex); + return fspr_proc_mutex_name(&mutex); } -static apr_status_t proc_mutex_create(apr_proc_mutex_t *new_mutex, apr_lockmech_e mech, const char *fname) +static fspr_status_t proc_mutex_create(fspr_proc_mutex_t *new_mutex, fspr_lockmech_e mech, const char *fname) { - apr_status_t rv; + fspr_status_t rv; if ((rv = proc_mutex_choose_method(new_mutex, mech)) != APR_SUCCESS) { return rv; @@ -758,15 +757,15 @@ static apr_status_t proc_mutex_create(apr_proc_mutex_t *new_mutex, apr_lockmech_ return APR_SUCCESS; } -APR_DECLARE(apr_status_t) apr_proc_mutex_create(apr_proc_mutex_t **mutex, +APR_DECLARE(fspr_status_t) fspr_proc_mutex_create(fspr_proc_mutex_t **mutex, const char *fname, - apr_lockmech_e mech, - apr_pool_t *pool) + fspr_lockmech_e mech, + fspr_pool_t *pool) { - apr_proc_mutex_t *new_mutex; - apr_status_t rv; + fspr_proc_mutex_t *new_mutex; + fspr_status_t rv; - new_mutex = apr_pcalloc(pool, sizeof(apr_proc_mutex_t)); + new_mutex = fspr_pcalloc(pool, sizeof(fspr_proc_mutex_t)); new_mutex->pool = pool; if ((rv = proc_mutex_create(new_mutex, mech, fname)) != APR_SUCCESS) @@ -776,39 +775,39 @@ APR_DECLARE(apr_status_t) apr_proc_mutex_create(apr_proc_mutex_t **mutex, return APR_SUCCESS; } -APR_DECLARE(apr_status_t) apr_proc_mutex_child_init(apr_proc_mutex_t **mutex, +APR_DECLARE(fspr_status_t) fspr_proc_mutex_child_init(fspr_proc_mutex_t **mutex, const char *fname, - apr_pool_t *pool) + fspr_pool_t *pool) { return (*mutex)->meth->child_init(mutex, pool, fname); } -APR_DECLARE(apr_status_t) apr_proc_mutex_lock(apr_proc_mutex_t *mutex) +APR_DECLARE(fspr_status_t) fspr_proc_mutex_lock(fspr_proc_mutex_t *mutex) { return mutex->meth->acquire(mutex); } -APR_DECLARE(apr_status_t) apr_proc_mutex_trylock(apr_proc_mutex_t *mutex) +APR_DECLARE(fspr_status_t) fspr_proc_mutex_trylock(fspr_proc_mutex_t *mutex) { return mutex->meth->tryacquire(mutex); } -APR_DECLARE(apr_status_t) apr_proc_mutex_unlock(apr_proc_mutex_t *mutex) +APR_DECLARE(fspr_status_t) fspr_proc_mutex_unlock(fspr_proc_mutex_t *mutex) { return mutex->meth->release(mutex); } -APR_DECLARE(apr_status_t) apr_proc_mutex_cleanup(void *mutex) +APR_DECLARE(fspr_status_t) fspr_proc_mutex_cleanup(void *mutex) { - return ((apr_proc_mutex_t *)mutex)->meth->cleanup(mutex); + return ((fspr_proc_mutex_t *)mutex)->meth->cleanup(mutex); } -APR_DECLARE(const char *) apr_proc_mutex_name(apr_proc_mutex_t *mutex) +APR_DECLARE(const char *) fspr_proc_mutex_name(fspr_proc_mutex_t *mutex) { return mutex->meth->name; } -APR_DECLARE(const char *) apr_proc_mutex_lockfile(apr_proc_mutex_t *mutex) +APR_DECLARE(const char *) fspr_proc_mutex_lockfile(fspr_proc_mutex_t *mutex) { /* POSIX sems use the fname field but don't use a file, * so be careful. */ @@ -827,10 +826,10 @@ APR_DECLARE(const char *) apr_proc_mutex_lockfile(apr_proc_mutex_t *mutex) APR_POOL_IMPLEMENT_ACCESSOR(proc_mutex) -/* Implement OS-specific accessors defined in apr_portable.h */ +/* Implement OS-specific accessors defined in fspr_portable.h */ -APR_DECLARE(apr_status_t) apr_os_proc_mutex_get(apr_os_proc_mutex_t *ospmutex, - apr_proc_mutex_t *pmutex) +APR_DECLARE(fspr_status_t) fspr_os_proc_mutex_get(fspr_os_proc_mutex_t *ospmutex, + fspr_proc_mutex_t *pmutex) { #if APR_HAS_SYSVSEM_SERIALIZE || APR_HAS_FCNTL_SERIALIZE || APR_HAS_FLOCK_SERIALIZE || APR_HAS_POSIXSEM_SERIALIZE ospmutex->crossproc = pmutex->interproc->filedes; @@ -841,20 +840,20 @@ APR_DECLARE(apr_status_t) apr_os_proc_mutex_get(apr_os_proc_mutex_t *ospmutex, return APR_SUCCESS; } -APR_DECLARE(apr_status_t) apr_os_proc_mutex_put(apr_proc_mutex_t **pmutex, - apr_os_proc_mutex_t *ospmutex, - apr_pool_t *pool) +APR_DECLARE(fspr_status_t) fspr_os_proc_mutex_put(fspr_proc_mutex_t **pmutex, + fspr_os_proc_mutex_t *ospmutex, + fspr_pool_t *pool) { if (pool == NULL) { return APR_ENOPOOL; } if ((*pmutex) == NULL) { - (*pmutex) = (apr_proc_mutex_t *)apr_pcalloc(pool, - sizeof(apr_proc_mutex_t)); + (*pmutex) = (fspr_proc_mutex_t *)fspr_pcalloc(pool, + sizeof(fspr_proc_mutex_t)); (*pmutex)->pool = pool; } #if APR_HAS_SYSVSEM_SERIALIZE || APR_HAS_FCNTL_SERIALIZE || APR_HAS_FLOCK_SERIALIZE || APR_HAS_POSIXSEM_SERIALIZE - apr_os_file_put(&(*pmutex)->interproc, &ospmutex->crossproc, 0, pool); + fspr_os_file_put(&(*pmutex)->interproc, &ospmutex->crossproc, 0, pool); #endif #if APR_HAS_PROC_PTHREAD_SERIALIZE (*pmutex)->pthread_interproc = ospmutex->pthread_interproc; diff --git a/libs/apr/locks/unix/thread_cond.c b/libs/apr/locks/unix/thread_cond.c index 227c1d7f649..46f5e88e895 100644 --- a/libs/apr/locks/unix/thread_cond.c +++ b/libs/apr/locks/unix/thread_cond.c @@ -14,17 +14,17 @@ * limitations under the License. */ -#include "apr.h" +#include "fspr.h" #if APR_HAS_THREADS -#include "apr_arch_thread_mutex.h" -#include "apr_arch_thread_cond.h" +#include "fspr_arch_thread_mutex.h" +#include "fspr_arch_thread_cond.h" -static apr_status_t thread_cond_cleanup(void *data) +static fspr_status_t thread_cond_cleanup(void *data) { - apr_thread_cond_t *cond = (apr_thread_cond_t *)data; - apr_status_t rv; + fspr_thread_cond_t *cond = (fspr_thread_cond_t *)data; + fspr_status_t rv; rv = pthread_cond_destroy(&cond->cond); #ifdef PTHREAD_SETS_ERRNO @@ -35,13 +35,13 @@ static apr_status_t thread_cond_cleanup(void *data) return rv; } -APR_DECLARE(apr_status_t) apr_thread_cond_create(apr_thread_cond_t **cond, - apr_pool_t *pool) +APR_DECLARE(fspr_status_t) fspr_thread_cond_create(fspr_thread_cond_t **cond, + fspr_pool_t *pool) { - apr_thread_cond_t *new_cond; - apr_status_t rv; + fspr_thread_cond_t *new_cond; + fspr_status_t rv; - new_cond = apr_palloc(pool, sizeof(apr_thread_cond_t)); + new_cond = fspr_palloc(pool, sizeof(fspr_thread_cond_t)); new_cond->pool = pool; @@ -52,18 +52,18 @@ APR_DECLARE(apr_status_t) apr_thread_cond_create(apr_thread_cond_t **cond, return rv; } - apr_pool_cleanup_register(new_cond->pool, + fspr_pool_cleanup_register(new_cond->pool, (void *)new_cond, thread_cond_cleanup, - apr_pool_cleanup_null); + fspr_pool_cleanup_null); *cond = new_cond; return APR_SUCCESS; } -APR_DECLARE(apr_status_t) apr_thread_cond_wait(apr_thread_cond_t *cond, - apr_thread_mutex_t *mutex) +APR_DECLARE(fspr_status_t) fspr_thread_cond_wait(fspr_thread_cond_t *cond, + fspr_thread_mutex_t *mutex) { - apr_status_t rv; + fspr_status_t rv; rv = pthread_cond_wait(&cond->cond, &mutex->mutex); #ifdef PTHREAD_SETS_ERRNO @@ -74,17 +74,17 @@ APR_DECLARE(apr_status_t) apr_thread_cond_wait(apr_thread_cond_t *cond, return rv; } -APR_DECLARE(apr_status_t) apr_thread_cond_timedwait(apr_thread_cond_t *cond, - apr_thread_mutex_t *mutex, - apr_interval_time_t timeout) +APR_DECLARE(fspr_status_t) fspr_thread_cond_timedwait(fspr_thread_cond_t *cond, + fspr_thread_mutex_t *mutex, + fspr_interval_time_t timeout) { - apr_status_t rv; - apr_time_t then; + fspr_status_t rv; + fspr_time_t then; struct timespec abstime; - then = apr_time_now() + timeout; - abstime.tv_sec = apr_time_sec(then); - abstime.tv_nsec = apr_time_usec(then) * 1000; /* nanoseconds */ + then = fspr_time_now() + timeout; + abstime.tv_sec = fspr_time_sec(then); + abstime.tv_nsec = fspr_time_usec(then) * 1000; /* nanoseconds */ rv = pthread_cond_timedwait(&cond->cond, &mutex->mutex, &abstime); #ifdef PTHREAD_SETS_ERRNO @@ -99,9 +99,9 @@ APR_DECLARE(apr_status_t) apr_thread_cond_timedwait(apr_thread_cond_t *cond, } -APR_DECLARE(apr_status_t) apr_thread_cond_signal(apr_thread_cond_t *cond) +APR_DECLARE(fspr_status_t) fspr_thread_cond_signal(fspr_thread_cond_t *cond) { - apr_status_t rv; + fspr_status_t rv; rv = pthread_cond_signal(&cond->cond); #ifdef PTHREAD_SETS_ERRNO @@ -112,9 +112,9 @@ APR_DECLARE(apr_status_t) apr_thread_cond_signal(apr_thread_cond_t *cond) return rv; } -APR_DECLARE(apr_status_t) apr_thread_cond_broadcast(apr_thread_cond_t *cond) +APR_DECLARE(fspr_status_t) fspr_thread_cond_broadcast(fspr_thread_cond_t *cond) { - apr_status_t rv; + fspr_status_t rv; rv = pthread_cond_broadcast(&cond->cond); #ifdef PTHREAD_SETS_ERRNO @@ -125,9 +125,9 @@ APR_DECLARE(apr_status_t) apr_thread_cond_broadcast(apr_thread_cond_t *cond) return rv; } -APR_DECLARE(apr_status_t) apr_thread_cond_destroy(apr_thread_cond_t *cond) +APR_DECLARE(fspr_status_t) fspr_thread_cond_destroy(fspr_thread_cond_t *cond) { - return apr_pool_cleanup_run(cond->pool, cond, thread_cond_cleanup); + return fspr_pool_cleanup_run(cond->pool, cond, thread_cond_cleanup); } APR_POOL_IMPLEMENT_ACCESSOR(thread_cond) diff --git a/libs/apr/locks/unix/thread_mutex.c b/libs/apr/locks/unix/thread_mutex.c index e146a28f593..30786f883f7 100644 --- a/libs/apr/locks/unix/thread_mutex.c +++ b/libs/apr/locks/unix/thread_mutex.c @@ -14,16 +14,16 @@ * limitations under the License. */ -#include "apr_arch_thread_mutex.h" +#include "fspr_arch_thread_mutex.h" #define APR_WANT_MEMFUNC -#include "apr_want.h" +#include "fspr_want.h" #if APR_HAS_THREADS -static apr_status_t thread_mutex_cleanup(void *data) +static fspr_status_t thread_mutex_cleanup(void *data) { - apr_thread_mutex_t *mutex = data; - apr_status_t rv; + fspr_thread_mutex_t *mutex = data; + fspr_status_t rv; rv = pthread_mutex_destroy(&mutex->mutex); #ifdef PTHREAD_SETS_ERRNO @@ -34,12 +34,12 @@ static apr_status_t thread_mutex_cleanup(void *data) return rv; } -APR_DECLARE(apr_status_t) apr_thread_mutex_create(apr_thread_mutex_t **mutex, +APR_DECLARE(fspr_status_t) fspr_thread_mutex_create(fspr_thread_mutex_t **mutex, unsigned int flags, - apr_pool_t *pool) + fspr_pool_t *pool) { - apr_thread_mutex_t *new_mutex; - apr_status_t rv; + fspr_thread_mutex_t *new_mutex; + fspr_status_t rv; #ifndef HAVE_PTHREAD_MUTEX_RECURSIVE if (flags & APR_THREAD_MUTEX_NESTED) { @@ -47,7 +47,7 @@ APR_DECLARE(apr_status_t) apr_thread_mutex_create(apr_thread_mutex_t **mutex, } #endif - new_mutex = apr_pcalloc(pool, sizeof(apr_thread_mutex_t)); + new_mutex = fspr_pcalloc(pool, sizeof(fspr_thread_mutex_t)); new_mutex->pool = pool; #ifdef HAVE_PTHREAD_MUTEX_RECURSIVE @@ -77,17 +77,17 @@ APR_DECLARE(apr_status_t) apr_thread_mutex_create(apr_thread_mutex_t **mutex, return rv; } - apr_pool_cleanup_register(new_mutex->pool, + fspr_pool_cleanup_register(new_mutex->pool, new_mutex, thread_mutex_cleanup, - apr_pool_cleanup_null); + fspr_pool_cleanup_null); *mutex = new_mutex; return APR_SUCCESS; } -APR_DECLARE(apr_status_t) apr_thread_mutex_lock(apr_thread_mutex_t *mutex) +APR_DECLARE(fspr_status_t) fspr_thread_mutex_lock(fspr_thread_mutex_t *mutex) { - apr_status_t rv; + fspr_status_t rv; rv = pthread_mutex_lock(&mutex->mutex); #ifdef PTHREAD_SETS_ERRNO @@ -99,9 +99,9 @@ APR_DECLARE(apr_status_t) apr_thread_mutex_lock(apr_thread_mutex_t *mutex) return rv; } -APR_DECLARE(apr_status_t) apr_thread_mutex_trylock(apr_thread_mutex_t *mutex) +APR_DECLARE(fspr_status_t) fspr_thread_mutex_trylock(fspr_thread_mutex_t *mutex) { - apr_status_t rv; + fspr_status_t rv; rv = pthread_mutex_trylock(&mutex->mutex); if (rv) { @@ -114,9 +114,9 @@ APR_DECLARE(apr_status_t) apr_thread_mutex_trylock(apr_thread_mutex_t *mutex) return APR_SUCCESS; } -APR_DECLARE(apr_status_t) apr_thread_mutex_unlock(apr_thread_mutex_t *mutex) +APR_DECLARE(fspr_status_t) fspr_thread_mutex_unlock(fspr_thread_mutex_t *mutex) { - apr_status_t status; + fspr_status_t status; status = pthread_mutex_unlock(&mutex->mutex); #ifdef PTHREAD_SETS_ERRNO @@ -128,9 +128,9 @@ APR_DECLARE(apr_status_t) apr_thread_mutex_unlock(apr_thread_mutex_t *mutex) return status; } -APR_DECLARE(apr_status_t) apr_thread_mutex_destroy(apr_thread_mutex_t *mutex) +APR_DECLARE(fspr_status_t) fspr_thread_mutex_destroy(fspr_thread_mutex_t *mutex) { - return apr_pool_cleanup_run(mutex->pool, mutex, thread_mutex_cleanup); + return fspr_pool_cleanup_run(mutex->pool, mutex, thread_mutex_cleanup); } APR_POOL_IMPLEMENT_ACCESSOR(thread_mutex) diff --git a/libs/apr/locks/unix/thread_rwlock.c b/libs/apr/locks/unix/thread_rwlock.c index 4b28bb618ce..533174cff9f 100644 --- a/libs/apr/locks/unix/thread_rwlock.c +++ b/libs/apr/locks/unix/thread_rwlock.c @@ -14,8 +14,8 @@ * limitations under the License. */ -#include "apr_arch_thread_rwlock.h" -#include "apr_private.h" +#include "fspr_arch_thread_rwlock.h" +#include "fspr_private.h" #if APR_HAS_THREADS @@ -23,10 +23,10 @@ /* The rwlock must be initialized but not locked by any thread when * cleanup is called. */ -static apr_status_t thread_rwlock_cleanup(void *data) +static fspr_status_t thread_rwlock_cleanup(void *data) { - apr_thread_rwlock_t *rwlock = (apr_thread_rwlock_t *)data; - apr_status_t stat; + fspr_thread_rwlock_t *rwlock = (fspr_thread_rwlock_t *)data; + fspr_status_t stat; stat = pthread_rwlock_destroy(&rwlock->rwlock); #ifdef PTHREAD_SETS_ERRNO @@ -37,13 +37,13 @@ static apr_status_t thread_rwlock_cleanup(void *data) return stat; } -APR_DECLARE(apr_status_t) apr_thread_rwlock_create(apr_thread_rwlock_t **rwlock, - apr_pool_t *pool) +APR_DECLARE(fspr_status_t) fspr_thread_rwlock_create(fspr_thread_rwlock_t **rwlock, + fspr_pool_t *pool) { - apr_thread_rwlock_t *new_rwlock; - apr_status_t stat; + fspr_thread_rwlock_t *new_rwlock; + fspr_status_t stat; - new_rwlock = apr_palloc(pool, sizeof(apr_thread_rwlock_t)); + new_rwlock = fspr_palloc(pool, sizeof(fspr_thread_rwlock_t)); new_rwlock->pool = pool; if ((stat = pthread_rwlock_init(&new_rwlock->rwlock, NULL))) { @@ -53,17 +53,17 @@ APR_DECLARE(apr_status_t) apr_thread_rwlock_create(apr_thread_rwlock_t **rwlock, return stat; } - apr_pool_cleanup_register(new_rwlock->pool, + fspr_pool_cleanup_register(new_rwlock->pool, (void *)new_rwlock, thread_rwlock_cleanup, - apr_pool_cleanup_null); + fspr_pool_cleanup_null); *rwlock = new_rwlock; return APR_SUCCESS; } -APR_DECLARE(apr_status_t) apr_thread_rwlock_rdlock(apr_thread_rwlock_t *rwlock) +APR_DECLARE(fspr_status_t) fspr_thread_rwlock_rdlock(fspr_thread_rwlock_t *rwlock) { - apr_status_t stat; + fspr_status_t stat; stat = pthread_rwlock_rdlock(&rwlock->rwlock); #ifdef PTHREAD_SETS_ERRNO @@ -74,9 +74,9 @@ APR_DECLARE(apr_status_t) apr_thread_rwlock_rdlock(apr_thread_rwlock_t *rwlock) return stat; } -APR_DECLARE(apr_status_t) apr_thread_rwlock_tryrdlock(apr_thread_rwlock_t *rwlock) +APR_DECLARE(fspr_status_t) fspr_thread_rwlock_tryrdlock(fspr_thread_rwlock_t *rwlock) { - apr_status_t stat; + fspr_status_t stat; stat = pthread_rwlock_tryrdlock(&rwlock->rwlock); #ifdef PTHREAD_SETS_ERRNO @@ -90,9 +90,9 @@ APR_DECLARE(apr_status_t) apr_thread_rwlock_tryrdlock(apr_thread_rwlock_t *rwloc return stat; } -APR_DECLARE(apr_status_t) apr_thread_rwlock_wrlock(apr_thread_rwlock_t *rwlock) +APR_DECLARE(fspr_status_t) fspr_thread_rwlock_wrlock(fspr_thread_rwlock_t *rwlock) { - apr_status_t stat; + fspr_status_t stat; stat = pthread_rwlock_wrlock(&rwlock->rwlock); #ifdef PTHREAD_SETS_ERRNO @@ -103,9 +103,9 @@ APR_DECLARE(apr_status_t) apr_thread_rwlock_wrlock(apr_thread_rwlock_t *rwlock) return stat; } -APR_DECLARE(apr_status_t) apr_thread_rwlock_trywrlock(apr_thread_rwlock_t *rwlock) +APR_DECLARE(fspr_status_t) fspr_thread_rwlock_trywrlock(fspr_thread_rwlock_t *rwlock) { - apr_status_t stat; + fspr_status_t stat; stat = pthread_rwlock_trywrlock(&rwlock->rwlock); #ifdef PTHREAD_SETS_ERRNO @@ -119,9 +119,9 @@ APR_DECLARE(apr_status_t) apr_thread_rwlock_trywrlock(apr_thread_rwlock_t *rwloc return stat; } -APR_DECLARE(apr_status_t) apr_thread_rwlock_unlock(apr_thread_rwlock_t *rwlock) +APR_DECLARE(fspr_status_t) fspr_thread_rwlock_unlock(fspr_thread_rwlock_t *rwlock) { - apr_status_t stat; + fspr_status_t stat; stat = pthread_rwlock_unlock(&rwlock->rwlock); #ifdef PTHREAD_SETS_ERRNO @@ -132,45 +132,45 @@ APR_DECLARE(apr_status_t) apr_thread_rwlock_unlock(apr_thread_rwlock_t *rwlock) return stat; } -APR_DECLARE(apr_status_t) apr_thread_rwlock_destroy(apr_thread_rwlock_t *rwlock) +APR_DECLARE(fspr_status_t) fspr_thread_rwlock_destroy(fspr_thread_rwlock_t *rwlock) { - return apr_pool_cleanup_run(rwlock->pool, rwlock, thread_rwlock_cleanup); + return fspr_pool_cleanup_run(rwlock->pool, rwlock, thread_rwlock_cleanup); } #else /* HAVE_PTHREAD_RWLOCKS */ -APR_DECLARE(apr_status_t) apr_thread_rwlock_create(apr_thread_rwlock_t **rwlock, - apr_pool_t *pool) +APR_DECLARE(fspr_status_t) fspr_thread_rwlock_create(fspr_thread_rwlock_t **rwlock, + fspr_pool_t *pool) { return APR_ENOTIMPL; } -APR_DECLARE(apr_status_t) apr_thread_rwlock_rdlock(apr_thread_rwlock_t *rwlock) +APR_DECLARE(fspr_status_t) fspr_thread_rwlock_rdlock(fspr_thread_rwlock_t *rwlock) { return APR_ENOTIMPL; } -APR_DECLARE(apr_status_t) apr_thread_rwlock_tryrdlock(apr_thread_rwlock_t *rwlock) +APR_DECLARE(fspr_status_t) fspr_thread_rwlock_tryrdlock(fspr_thread_rwlock_t *rwlock) { return APR_ENOTIMPL; } -APR_DECLARE(apr_status_t) apr_thread_rwlock_wrlock(apr_thread_rwlock_t *rwlock) +APR_DECLARE(fspr_status_t) fspr_thread_rwlock_wrlock(fspr_thread_rwlock_t *rwlock) { return APR_ENOTIMPL; } -APR_DECLARE(apr_status_t) apr_thread_rwlock_trywrlock(apr_thread_rwlock_t *rwlock) +APR_DECLARE(fspr_status_t) fspr_thread_rwlock_trywrlock(fspr_thread_rwlock_t *rwlock) { return APR_ENOTIMPL; } -APR_DECLARE(apr_status_t) apr_thread_rwlock_unlock(apr_thread_rwlock_t *rwlock) +APR_DECLARE(fspr_status_t) fspr_thread_rwlock_unlock(fspr_thread_rwlock_t *rwlock) { return APR_ENOTIMPL; } -APR_DECLARE(apr_status_t) apr_thread_rwlock_destroy(apr_thread_rwlock_t *rwlock) +APR_DECLARE(fspr_status_t) fspr_thread_rwlock_destroy(fspr_thread_rwlock_t *rwlock) { return APR_ENOTIMPL; } diff --git a/libs/apr/locks/win32/proc_mutex.c b/libs/apr/locks/win32/proc_mutex.c index 9620a60d007..94e497e92a0 100644 --- a/libs/apr/locks/win32/proc_mutex.c +++ b/libs/apr/locks/win32/proc_mutex.c @@ -14,31 +14,31 @@ * limitations under the License. */ -#include "apr.h" -#include "apr_private.h" -#include "apr_general.h" -#include "apr_strings.h" -#include "apr_portable.h" -#include "apr_arch_file_io.h" -#include "apr_arch_proc_mutex.h" -#include "apr_arch_misc.h" - -static apr_status_t proc_mutex_cleanup(void *mutex_) +#include "fspr.h" +#include "fspr_private.h" +#include "fspr_general.h" +#include "fspr_strings.h" +#include "fspr_portable.h" +#include "fspr_arch_file_io.h" +#include "fspr_arch_proc_mutex.h" +#include "fspr_arch_misc.h" + +static fspr_status_t proc_mutex_cleanup(void *mutex_) { - apr_proc_mutex_t *mutex = mutex_; + fspr_proc_mutex_t *mutex = mutex_; if (mutex->handle) { if (CloseHandle(mutex->handle) == 0) { - return apr_get_os_error(); + return fspr_get_os_error(); } } return APR_SUCCESS; } -APR_DECLARE(apr_status_t) apr_proc_mutex_create(apr_proc_mutex_t **mutex, +APR_DECLARE(fspr_status_t) fspr_proc_mutex_create(fspr_proc_mutex_t **mutex, const char *fname, - apr_lockmech_e mech, - apr_pool_t *pool) + fspr_lockmech_e mech, + fspr_pool_t *pool) { HANDLE hMutex; void *mutexkey; @@ -68,21 +68,21 @@ APR_DECLARE(apr_status_t) apr_proc_mutex_create(apr_proc_mutex_t **mutex, #endif if (!hMutex) { - return apr_get_os_error(); + return fspr_get_os_error(); } - *mutex = (apr_proc_mutex_t *)apr_palloc(pool, sizeof(apr_proc_mutex_t)); + *mutex = (fspr_proc_mutex_t *)fspr_palloc(pool, sizeof(fspr_proc_mutex_t)); (*mutex)->pool = pool; (*mutex)->handle = hMutex; (*mutex)->fname = fname; - apr_pool_cleanup_register((*mutex)->pool, *mutex, - proc_mutex_cleanup, apr_pool_cleanup_null); + fspr_pool_cleanup_register((*mutex)->pool, *mutex, + proc_mutex_cleanup, fspr_pool_cleanup_null); return APR_SUCCESS; } -APR_DECLARE(apr_status_t) apr_proc_mutex_child_init(apr_proc_mutex_t **mutex, +APR_DECLARE(fspr_status_t) fspr_proc_mutex_child_init(fspr_proc_mutex_t **mutex, const char *fname, - apr_pool_t *pool) + fspr_pool_t *pool) { HANDLE hMutex; void *mutexkey; @@ -112,19 +112,19 @@ APR_DECLARE(apr_status_t) apr_proc_mutex_child_init(apr_proc_mutex_t **mutex, #endif if (!hMutex) { - return apr_get_os_error(); + return fspr_get_os_error(); } - *mutex = (apr_proc_mutex_t *)apr_palloc(pool, sizeof(apr_proc_mutex_t)); + *mutex = (fspr_proc_mutex_t *)fspr_palloc(pool, sizeof(fspr_proc_mutex_t)); (*mutex)->pool = pool; (*mutex)->handle = hMutex; (*mutex)->fname = fname; - apr_pool_cleanup_register((*mutex)->pool, *mutex, - proc_mutex_cleanup, apr_pool_cleanup_null); + fspr_pool_cleanup_register((*mutex)->pool, *mutex, + proc_mutex_cleanup, fspr_pool_cleanup_null); return APR_SUCCESS; } -APR_DECLARE(apr_status_t) apr_proc_mutex_lock(apr_proc_mutex_t *mutex) +APR_DECLARE(fspr_status_t) fspr_proc_mutex_lock(fspr_proc_mutex_t *mutex) { DWORD rv; @@ -136,10 +136,10 @@ APR_DECLARE(apr_status_t) apr_proc_mutex_lock(apr_proc_mutex_t *mutex) else if (rv == WAIT_TIMEOUT) { return APR_EBUSY; } - return apr_get_os_error(); + return fspr_get_os_error(); } -APR_DECLARE(apr_status_t) apr_proc_mutex_trylock(apr_proc_mutex_t *mutex) +APR_DECLARE(fspr_status_t) fspr_proc_mutex_trylock(fspr_proc_mutex_t *mutex) { DWORD rv; @@ -151,69 +151,69 @@ APR_DECLARE(apr_status_t) apr_proc_mutex_trylock(apr_proc_mutex_t *mutex) else if (rv == WAIT_TIMEOUT) { return APR_EBUSY; } - return apr_get_os_error(); + return fspr_get_os_error(); } -APR_DECLARE(apr_status_t) apr_proc_mutex_unlock(apr_proc_mutex_t *mutex) +APR_DECLARE(fspr_status_t) fspr_proc_mutex_unlock(fspr_proc_mutex_t *mutex) { if (ReleaseMutex(mutex->handle) == 0) { - return apr_get_os_error(); + return fspr_get_os_error(); } return APR_SUCCESS; } -APR_DECLARE(apr_status_t) apr_proc_mutex_destroy(apr_proc_mutex_t *mutex) +APR_DECLARE(fspr_status_t) fspr_proc_mutex_destroy(fspr_proc_mutex_t *mutex) { - apr_status_t stat; + fspr_status_t stat; stat = proc_mutex_cleanup(mutex); if (stat == APR_SUCCESS) { - apr_pool_cleanup_kill(mutex->pool, mutex, proc_mutex_cleanup); + fspr_pool_cleanup_kill(mutex->pool, mutex, proc_mutex_cleanup); } return stat; } -APR_DECLARE(apr_status_t) apr_proc_mutex_cleanup(void *mutex) +APR_DECLARE(fspr_status_t) fspr_proc_mutex_cleanup(void *mutex) { - return apr_proc_mutex_destroy((apr_proc_mutex_t *)mutex); + return fspr_proc_mutex_destroy((fspr_proc_mutex_t *)mutex); } -APR_DECLARE(const char *) apr_proc_mutex_lockfile(apr_proc_mutex_t *mutex) +APR_DECLARE(const char *) fspr_proc_mutex_lockfile(fspr_proc_mutex_t *mutex) { return NULL; } -APR_DECLARE(const char *) apr_proc_mutex_name(apr_proc_mutex_t *mutex) +APR_DECLARE(const char *) fspr_proc_mutex_name(fspr_proc_mutex_t *mutex) { return mutex->fname; } -APR_DECLARE(const char *) apr_proc_mutex_defname(void) +APR_DECLARE(const char *) fspr_proc_mutex_defname(void) { return "win32mutex"; } APR_POOL_IMPLEMENT_ACCESSOR(proc_mutex) -/* Implement OS-specific accessors defined in apr_portable.h */ +/* Implement OS-specific accessors defined in fspr_portable.h */ -APR_DECLARE(apr_status_t) apr_os_proc_mutex_get(apr_os_proc_mutex_t *ospmutex, - apr_proc_mutex_t *mutex) +APR_DECLARE(fspr_status_t) fspr_os_proc_mutex_get(fspr_os_proc_mutex_t *ospmutex, + fspr_proc_mutex_t *mutex) { *ospmutex = mutex->handle; return APR_SUCCESS; } -APR_DECLARE(apr_status_t) apr_os_proc_mutex_put(apr_proc_mutex_t **pmutex, - apr_os_proc_mutex_t *ospmutex, - apr_pool_t *pool) +APR_DECLARE(fspr_status_t) fspr_os_proc_mutex_put(fspr_proc_mutex_t **pmutex, + fspr_os_proc_mutex_t *ospmutex, + fspr_pool_t *pool) { if (pool == NULL) { return APR_ENOPOOL; } if ((*pmutex) == NULL) { - (*pmutex) = (apr_proc_mutex_t *)apr_palloc(pool, - sizeof(apr_proc_mutex_t)); + (*pmutex) = (fspr_proc_mutex_t *)fspr_palloc(pool, + sizeof(fspr_proc_mutex_t)); (*pmutex)->pool = pool; } (*pmutex)->handle = *ospmutex; diff --git a/libs/apr/locks/win32/thread_cond.c b/libs/apr/locks/win32/thread_cond.c index 60286e542d1..dbcca776fac 100644 --- a/libs/apr/locks/win32/thread_cond.c +++ b/libs/apr/locks/win32/thread_cond.c @@ -14,59 +14,59 @@ * limitations under the License. */ -#include "apr.h" -#include "apr_private.h" -#include "apr_general.h" -#include "apr_strings.h" -#include "apr_arch_thread_mutex.h" -#include "apr_arch_thread_cond.h" -#include "apr_portable.h" +#include "fspr.h" +#include "fspr_private.h" +#include "fspr_general.h" +#include "fspr_strings.h" +#include "fspr_arch_thread_mutex.h" +#include "fspr_arch_thread_cond.h" +#include "fspr_portable.h" #include -static apr_status_t thread_cond_cleanup(void *data) +static fspr_status_t thread_cond_cleanup(void *data) { - apr_thread_cond_t *cond = data; + fspr_thread_cond_t *cond = data; CloseHandle(cond->semaphore); DeleteCriticalSection(&cond->csection); return APR_SUCCESS; } -APR_DECLARE(apr_status_t) apr_thread_cond_create(apr_thread_cond_t **cond, - apr_pool_t *pool) +APR_DECLARE(fspr_status_t) fspr_thread_cond_create(fspr_thread_cond_t **cond, + fspr_pool_t *pool) { - apr_thread_cond_t *cv; + fspr_thread_cond_t *cv; - cv = apr_pcalloc(pool, sizeof(**cond)); + cv = fspr_pcalloc(pool, sizeof(**cond)); if (cv == NULL) { return APR_ENOMEM; } cv->semaphore = CreateSemaphore(NULL, 0, LONG_MAX, NULL); if (cv->semaphore == NULL) { - return apr_get_os_error(); + return fspr_get_os_error(); } *cond = cv; cv->pool = pool; InitializeCriticalSection(&cv->csection); - apr_pool_cleanup_register(cv->pool, cv, thread_cond_cleanup, - apr_pool_cleanup_null); + fspr_pool_cleanup_register(cv->pool, cv, thread_cond_cleanup, + fspr_pool_cleanup_null); return APR_SUCCESS; } -APR_DECLARE(apr_status_t) apr_thread_cond_destroy(apr_thread_cond_t *cond) +APR_DECLARE(fspr_status_t) fspr_thread_cond_destroy(fspr_thread_cond_t *cond) { - return apr_pool_cleanup_run(cond->pool, cond, thread_cond_cleanup); + return fspr_pool_cleanup_run(cond->pool, cond, thread_cond_cleanup); } -static APR_INLINE apr_status_t _thread_cond_timedwait(apr_thread_cond_t *cond, - apr_thread_mutex_t *mutex, +static APR_INLINE fspr_status_t _thread_cond_timedwait(fspr_thread_cond_t *cond, + fspr_thread_mutex_t *mutex, DWORD timeout_ms ) { DWORD res; - apr_status_t rv; + fspr_status_t rv; unsigned int wake = 0; unsigned long generation; @@ -75,7 +75,7 @@ static APR_INLINE apr_status_t _thread_cond_timedwait(apr_thread_cond_t *cond, generation = cond->generation; LeaveCriticalSection(&cond->csection); - apr_thread_mutex_unlock(mutex); + fspr_thread_mutex_unlock(mutex); do { res = WaitForSingleObject(cond->semaphore, timeout_ms); @@ -107,27 +107,27 @@ static APR_INLINE apr_status_t _thread_cond_timedwait(apr_thread_cond_t *cond, } while (1); LeaveCriticalSection(&cond->csection); - apr_thread_mutex_lock(mutex); + fspr_thread_mutex_lock(mutex); return rv; } -APR_DECLARE(apr_status_t) apr_thread_cond_wait(apr_thread_cond_t *cond, - apr_thread_mutex_t *mutex) +APR_DECLARE(fspr_status_t) fspr_thread_cond_wait(fspr_thread_cond_t *cond, + fspr_thread_mutex_t *mutex) { return _thread_cond_timedwait(cond, mutex, INFINITE); } -APR_DECLARE(apr_status_t) apr_thread_cond_timedwait(apr_thread_cond_t *cond, - apr_thread_mutex_t *mutex, - apr_interval_time_t timeout) +APR_DECLARE(fspr_status_t) fspr_thread_cond_timedwait(fspr_thread_cond_t *cond, + fspr_thread_mutex_t *mutex, + fspr_interval_time_t timeout) { - DWORD timeout_ms = (DWORD) apr_time_as_msec(timeout); + DWORD timeout_ms = (DWORD) fspr_time_as_msec(timeout); return _thread_cond_timedwait(cond, mutex, timeout_ms); } -APR_DECLARE(apr_status_t) apr_thread_cond_signal(apr_thread_cond_t *cond) +APR_DECLARE(fspr_status_t) fspr_thread_cond_signal(fspr_thread_cond_t *cond) { unsigned int wake = 0; @@ -146,7 +146,7 @@ APR_DECLARE(apr_status_t) apr_thread_cond_signal(apr_thread_cond_t *cond) return APR_SUCCESS; } -APR_DECLARE(apr_status_t) apr_thread_cond_broadcast(apr_thread_cond_t *cond) +APR_DECLARE(fspr_status_t) fspr_thread_cond_broadcast(fspr_thread_cond_t *cond) { unsigned long num_wake = 0; diff --git a/libs/apr/locks/win32/thread_mutex.c b/libs/apr/locks/win32/thread_mutex.c index 9b10d7278d8..6f86edb782a 100644 --- a/libs/apr/locks/win32/thread_mutex.c +++ b/libs/apr/locks/win32/thread_mutex.c @@ -14,18 +14,18 @@ * limitations under the License. */ -#include "apr.h" -#include "apr_private.h" -#include "apr_general.h" -#include "apr_strings.h" -#include "apr_arch_thread_mutex.h" -#include "apr_thread_mutex.h" -#include "apr_portable.h" -#include "apr_arch_misc.h" +#include "fspr.h" +#include "fspr_private.h" +#include "fspr_general.h" +#include "fspr_strings.h" +#include "fspr_arch_thread_mutex.h" +#include "fspr_thread_mutex.h" +#include "fspr_portable.h" +#include "fspr_arch_misc.h" -static apr_status_t thread_mutex_cleanup(void *data) +static fspr_status_t thread_mutex_cleanup(void *data) { - apr_thread_mutex_t *lock = data; + fspr_thread_mutex_t *lock = data; if (lock->type == thread_mutex_critical_section) { lock->type = -1; @@ -33,17 +33,17 @@ static apr_status_t thread_mutex_cleanup(void *data) } else { if (!CloseHandle(lock->handle)) { - return apr_get_os_error(); + return fspr_get_os_error(); } } return APR_SUCCESS; } -APR_DECLARE(apr_status_t) apr_thread_mutex_create(apr_thread_mutex_t **mutex, +APR_DECLARE(fspr_status_t) fspr_thread_mutex_create(fspr_thread_mutex_t **mutex, unsigned int flags, - apr_pool_t *pool) + fspr_pool_t *pool) { - (*mutex) = (apr_thread_mutex_t *)apr_palloc(pool, sizeof(**mutex)); + (*mutex) = (fspr_thread_mutex_t *)fspr_palloc(pool, sizeof(**mutex)); (*mutex)->pool = pool; @@ -74,12 +74,12 @@ APR_DECLARE(apr_status_t) apr_thread_mutex_create(apr_thread_mutex_t **mutex, #endif } - apr_pool_cleanup_register((*mutex)->pool, (*mutex), thread_mutex_cleanup, - apr_pool_cleanup_null); + fspr_pool_cleanup_register((*mutex)->pool, (*mutex), thread_mutex_cleanup, + fspr_pool_cleanup_null); return APR_SUCCESS; } -APR_DECLARE(apr_status_t) apr_thread_mutex_lock(apr_thread_mutex_t *mutex) +APR_DECLARE(fspr_status_t) fspr_thread_mutex_lock(fspr_thread_mutex_t *mutex) { if (mutex->type == thread_mutex_critical_section) { EnterCriticalSection(&mutex->section); @@ -87,13 +87,13 @@ APR_DECLARE(apr_status_t) apr_thread_mutex_lock(apr_thread_mutex_t *mutex) else { DWORD rv = WaitForSingleObject(mutex->handle, INFINITE); if ((rv != WAIT_OBJECT_0) && (rv != WAIT_ABANDONED)) { - return (rv == WAIT_TIMEOUT) ? APR_EBUSY : apr_get_os_error(); + return (rv == WAIT_TIMEOUT) ? APR_EBUSY : fspr_get_os_error(); } } return APR_SUCCESS; } -APR_DECLARE(apr_status_t) apr_thread_mutex_trylock(apr_thread_mutex_t *mutex) +APR_DECLARE(fspr_status_t) fspr_thread_mutex_trylock(fspr_thread_mutex_t *mutex) { if (mutex->type == thread_mutex_critical_section) { if (!TryEnterCriticalSection(&mutex->section)) { @@ -103,33 +103,33 @@ APR_DECLARE(apr_status_t) apr_thread_mutex_trylock(apr_thread_mutex_t *mutex) else { DWORD rv = WaitForSingleObject(mutex->handle, 0); if ((rv != WAIT_OBJECT_0) && (rv != WAIT_ABANDONED)) { - return (rv == WAIT_TIMEOUT) ? APR_EBUSY : apr_get_os_error(); + return (rv == WAIT_TIMEOUT) ? APR_EBUSY : fspr_get_os_error(); } } return APR_SUCCESS; } -APR_DECLARE(apr_status_t) apr_thread_mutex_unlock(apr_thread_mutex_t *mutex) +APR_DECLARE(fspr_status_t) fspr_thread_mutex_unlock(fspr_thread_mutex_t *mutex) { if (mutex->type == thread_mutex_critical_section) { LeaveCriticalSection(&mutex->section); } else if (mutex->type == thread_mutex_unnested_event) { if (!SetEvent(mutex->handle)) { - return apr_get_os_error(); + return fspr_get_os_error(); } } else if (mutex->type == thread_mutex_nested_mutex) { if (!ReleaseMutex(mutex->handle)) { - return apr_get_os_error(); + return fspr_get_os_error(); } } return APR_SUCCESS; } -APR_DECLARE(apr_status_t) apr_thread_mutex_destroy(apr_thread_mutex_t *mutex) +APR_DECLARE(fspr_status_t) fspr_thread_mutex_destroy(fspr_thread_mutex_t *mutex) { - return apr_pool_cleanup_run(mutex->pool, mutex, thread_mutex_cleanup); + return fspr_pool_cleanup_run(mutex->pool, mutex, thread_mutex_cleanup); } APR_POOL_IMPLEMENT_ACCESSOR(thread_mutex) diff --git a/libs/apr/locks/win32/thread_rwlock.c b/libs/apr/locks/win32/thread_rwlock.c index 4995ca2deee..c8242adb854 100644 --- a/libs/apr/locks/win32/thread_rwlock.c +++ b/libs/apr/locks/win32/thread_rwlock.c @@ -14,56 +14,56 @@ * limitations under the License. */ -#include "apr.h" -#include "apr_private.h" -#include "apr_general.h" -#include "apr_strings.h" -#include "win32/apr_arch_thread_rwlock.h" -#include "apr_portable.h" - -static apr_status_t thread_rwlock_cleanup(void *data) +#include "fspr.h" +#include "fspr_private.h" +#include "fspr_general.h" +#include "fspr_strings.h" +#include "win32/fspr_arch_thread_rwlock.h" +#include "fspr_portable.h" + +static fspr_status_t thread_rwlock_cleanup(void *data) { - apr_thread_rwlock_t *rwlock = data; + fspr_thread_rwlock_t *rwlock = data; if (! CloseHandle(rwlock->read_event)) - return apr_get_os_error(); + return fspr_get_os_error(); DeleteCriticalSection(&rwlock->read_section); if (! CloseHandle(rwlock->write_mutex)) - return apr_get_os_error(); + return fspr_get_os_error(); return APR_SUCCESS; } -APR_DECLARE(apr_status_t)apr_thread_rwlock_create(apr_thread_rwlock_t **rwlock, - apr_pool_t *pool) +APR_DECLARE(fspr_status_t)fspr_thread_rwlock_create(fspr_thread_rwlock_t **rwlock, + fspr_pool_t *pool) { - *rwlock = apr_palloc(pool, sizeof(**rwlock)); + *rwlock = fspr_palloc(pool, sizeof(**rwlock)); (*rwlock)->pool = pool; (*rwlock)->readers = 0; if (! ((*rwlock)->read_event = CreateEvent(NULL, TRUE, FALSE, NULL))) { *rwlock = NULL; - return apr_get_os_error(); + return fspr_get_os_error(); } if (! ((*rwlock)->write_mutex = CreateMutex(NULL, FALSE, NULL))) { CloseHandle((*rwlock)->read_event); *rwlock = NULL; - return apr_get_os_error(); + return fspr_get_os_error(); } InitializeCriticalSection(&(*rwlock)->read_section); - apr_pool_cleanup_register(pool, *rwlock, thread_rwlock_cleanup, - apr_pool_cleanup_null); + fspr_pool_cleanup_register(pool, *rwlock, thread_rwlock_cleanup, + fspr_pool_cleanup_null); return APR_SUCCESS; } -static apr_status_t apr_thread_rwlock_rdlock_core(apr_thread_rwlock_t *rwlock, +static fspr_status_t fspr_thread_rwlock_rdlock_core(fspr_thread_rwlock_t *rwlock, DWORD milliseconds) { DWORD code; @@ -83,31 +83,31 @@ static apr_status_t apr_thread_rwlock_rdlock_core(apr_thread_rwlock_t *rwlock, if (! ResetEvent(rwlock->read_event)) { LeaveCriticalSection(&rwlock->read_section); - return apr_get_os_error(); + return fspr_get_os_error(); } if (! ReleaseMutex(rwlock->write_mutex)) { LeaveCriticalSection(&rwlock->read_section); - return apr_get_os_error(); + return fspr_get_os_error(); } LeaveCriticalSection(&rwlock->read_section); return APR_SUCCESS; } -APR_DECLARE(apr_status_t) apr_thread_rwlock_rdlock(apr_thread_rwlock_t *rwlock) +APR_DECLARE(fspr_status_t) fspr_thread_rwlock_rdlock(fspr_thread_rwlock_t *rwlock) { - return apr_thread_rwlock_rdlock_core(rwlock, INFINITE); + return fspr_thread_rwlock_rdlock_core(rwlock, INFINITE); } -APR_DECLARE(apr_status_t) -apr_thread_rwlock_tryrdlock(apr_thread_rwlock_t *rwlock) +APR_DECLARE(fspr_status_t) +fspr_thread_rwlock_tryrdlock(fspr_thread_rwlock_t *rwlock) { - return apr_thread_rwlock_rdlock_core(rwlock, 0); + return fspr_thread_rwlock_rdlock_core(rwlock, 0); } -static apr_status_t -apr_thread_rwlock_wrlock_core(apr_thread_rwlock_t *rwlock, DWORD milliseconds) +static fspr_status_t +fspr_thread_rwlock_wrlock_core(fspr_thread_rwlock_t *rwlock, DWORD milliseconds) { DWORD code = WaitForSingleObject(rwlock->write_mutex, milliseconds); @@ -128,7 +128,7 @@ apr_thread_rwlock_wrlock_core(apr_thread_rwlock_t *rwlock, DWORD milliseconds) if (code == WAIT_FAILED || code == WAIT_TIMEOUT) { /* Unable to wait for readers to finish, release write lock: */ if (! ReleaseMutex(rwlock->write_mutex)) - return apr_get_os_error(); + return fspr_get_os_error(); return APR_FROM_OS_ERROR(code); } @@ -137,30 +137,30 @@ apr_thread_rwlock_wrlock_core(apr_thread_rwlock_t *rwlock, DWORD milliseconds) return APR_SUCCESS; } -APR_DECLARE(apr_status_t) apr_thread_rwlock_wrlock(apr_thread_rwlock_t *rwlock) +APR_DECLARE(fspr_status_t) fspr_thread_rwlock_wrlock(fspr_thread_rwlock_t *rwlock) { - return apr_thread_rwlock_wrlock_core(rwlock, INFINITE); + return fspr_thread_rwlock_wrlock_core(rwlock, INFINITE); } -APR_DECLARE(apr_status_t)apr_thread_rwlock_trywrlock(apr_thread_rwlock_t *rwlock) +APR_DECLARE(fspr_status_t)fspr_thread_rwlock_trywrlock(fspr_thread_rwlock_t *rwlock) { - return apr_thread_rwlock_wrlock_core(rwlock, 0); + return fspr_thread_rwlock_wrlock_core(rwlock, 0); } -APR_DECLARE(apr_status_t) apr_thread_rwlock_unlock(apr_thread_rwlock_t *rwlock) +APR_DECLARE(fspr_status_t) fspr_thread_rwlock_unlock(fspr_thread_rwlock_t *rwlock) { - apr_status_t rv = 0; + fspr_status_t rv = 0; /* First, guess that we're unlocking a writer */ if (! ReleaseMutex(rwlock->write_mutex)) - rv = apr_get_os_error(); + rv = fspr_get_os_error(); if (rv == APR_FROM_OS_ERROR(ERROR_NOT_OWNER)) { /* Nope, we must have a read lock */ if (rwlock->readers && ! InterlockedDecrement(&rwlock->readers) && ! SetEvent(rwlock->read_event)) { - rv = apr_get_os_error(); + rv = fspr_get_os_error(); } else { rv = 0; @@ -170,9 +170,9 @@ APR_DECLARE(apr_status_t) apr_thread_rwlock_unlock(apr_thread_rwlock_t *rwlock) return rv; } -APR_DECLARE(apr_status_t) apr_thread_rwlock_destroy(apr_thread_rwlock_t *rwlock) +APR_DECLARE(fspr_status_t) fspr_thread_rwlock_destroy(fspr_thread_rwlock_t *rwlock) { - return apr_pool_cleanup_run(rwlock->pool, rwlock, thread_rwlock_cleanup); + return fspr_pool_cleanup_run(rwlock->pool, rwlock, thread_rwlock_cleanup); } APR_POOL_IMPLEMENT_ACCESSOR(thread_rwlock) diff --git a/libs/apr/memory/unix/apr_pools.c b/libs/apr/memory/unix/fspr_pools.c similarity index 67% rename from libs/apr/memory/unix/apr_pools.c rename to libs/apr/memory/unix/fspr_pools.c index 7e37a5d0a07..9f67b7ec534 100644 --- a/libs/apr/memory/unix/apr_pools.c +++ b/libs/apr/memory/unix/fspr_pools.c @@ -14,22 +14,22 @@ * limitations under the License. */ -#include "apr.h" -#include "apr_private.h" - -#include "apr_atomic.h" -#include "apr_portable.h" /* for get_os_proc */ -#include "apr_strings.h" -#include "apr_general.h" -#include "apr_pools.h" -#include "apr_allocator.h" -#include "apr_lib.h" -#include "apr_thread_mutex.h" -#include "apr_hash.h" -#include "apr_time.h" +#include "fspr.h" +#include "fspr_private.h" + +#include "fspr_atomic.h" +#include "fspr_portable.h" /* for get_os_proc */ +#include "fspr_strings.h" +#include "fspr_general.h" +#include "fspr_pools.h" +#include "fspr_allocator.h" +#include "fspr_lib.h" +#include "fspr_thread_mutex.h" +#include "fspr_hash.h" +#include "fspr_time.h" #define APR_WANT_MEMFUNC -#include "apr_want.h" -#include "apr_env.h" +#include "fspr_want.h" +#include "fspr_env.h" #if APR_HAVE_STDLIB_H #include /* for malloc, free and abort */ @@ -64,27 +64,27 @@ * Allocator */ -struct apr_allocator_t { - apr_uint32_t max_index; - apr_uint32_t max_free_index; - apr_uint32_t current_free_index; +struct fspr_allocator_t { + fspr_uint32_t max_index; + fspr_uint32_t max_free_index; + fspr_uint32_t current_free_index; #if APR_HAS_THREADS - apr_thread_mutex_t *mutex; + fspr_thread_mutex_t *mutex; #endif /* APR_HAS_THREADS */ - apr_pool_t *owner; - apr_memnode_t *free[MAX_INDEX]; + fspr_pool_t *owner; + fspr_memnode_t *free[MAX_INDEX]; }; -#define SIZEOF_ALLOCATOR_T APR_ALIGN_DEFAULT(sizeof(apr_allocator_t)) +#define SIZEOF_ALLOCATOR_T APR_ALIGN_DEFAULT(sizeof(fspr_allocator_t)) /* * Allocator */ -APR_DECLARE(apr_status_t) apr_allocator_create(apr_allocator_t **allocator) +APR_DECLARE(fspr_status_t) fspr_allocator_create(fspr_allocator_t **allocator) { - apr_allocator_t *new_allocator; + fspr_allocator_t *new_allocator; *allocator = NULL; @@ -99,10 +99,10 @@ APR_DECLARE(apr_status_t) apr_allocator_create(apr_allocator_t **allocator) return APR_SUCCESS; } -APR_DECLARE(void) apr_allocator_destroy(apr_allocator_t *allocator) +APR_DECLARE(void) fspr_allocator_destroy(fspr_allocator_t *allocator) { - apr_uint32_t index; - apr_memnode_t *node, **ref; + fspr_uint32_t index; + fspr_memnode_t *node, **ref; for (index = 0; index < MAX_INDEX; index++) { ref = &allocator->free[index]; @@ -116,42 +116,42 @@ APR_DECLARE(void) apr_allocator_destroy(apr_allocator_t *allocator) } #if APR_HAS_THREADS -APR_DECLARE(void) apr_allocator_mutex_set(apr_allocator_t *allocator, - apr_thread_mutex_t *mutex) +APR_DECLARE(void) fspr_allocator_mutex_set(fspr_allocator_t *allocator, + fspr_thread_mutex_t *mutex) { allocator->mutex = mutex; } -APR_DECLARE(apr_thread_mutex_t *) apr_allocator_mutex_get( - apr_allocator_t *allocator) +APR_DECLARE(fspr_thread_mutex_t *) fspr_allocator_mutex_get( + fspr_allocator_t *allocator) { return allocator->mutex; } #endif /* APR_HAS_THREADS */ -APR_DECLARE(void) apr_allocator_owner_set(apr_allocator_t *allocator, - apr_pool_t *pool) +APR_DECLARE(void) fspr_allocator_owner_set(fspr_allocator_t *allocator, + fspr_pool_t *pool) { allocator->owner = pool; } -APR_DECLARE(apr_pool_t *) apr_allocator_owner_get(apr_allocator_t *allocator) +APR_DECLARE(fspr_pool_t *) fspr_allocator_owner_get(fspr_allocator_t *allocator) { return allocator->owner; } -APR_DECLARE(void) apr_allocator_max_free_set(apr_allocator_t *allocator, - apr_size_t in_size) +APR_DECLARE(void) fspr_allocator_max_free_set(fspr_allocator_t *allocator, + fspr_size_t in_size) { - apr_uint32_t max_free_index; - apr_uint32_t size = (APR_UINT32_TRUNC_CAST)in_size; + fspr_uint32_t max_free_index; + fspr_uint32_t size = (APR_UINT32_TRUNC_CAST)in_size; #if APR_HAS_THREADS - apr_thread_mutex_t *mutex; + fspr_thread_mutex_t *mutex; - mutex = apr_allocator_mutex_get(allocator); + mutex = fspr_allocator_mutex_get(allocator); if (mutex != NULL) - apr_thread_mutex_lock(mutex); + fspr_thread_mutex_lock(mutex); #endif /* APR_HAS_THREADS */ max_free_index = APR_ALIGN(size, BOUNDARY_SIZE) >> BOUNDARY_INDEX; @@ -163,16 +163,16 @@ APR_DECLARE(void) apr_allocator_max_free_set(apr_allocator_t *allocator, #if APR_HAS_THREADS if (mutex != NULL) - apr_thread_mutex_unlock(mutex); + fspr_thread_mutex_unlock(mutex); #endif } static APR_INLINE -apr_memnode_t *allocator_alloc(apr_allocator_t *allocator, apr_size_t size) +fspr_memnode_t *allocator_alloc(fspr_allocator_t *allocator, fspr_size_t size) { - apr_memnode_t *node, **ref; - apr_uint32_t max_index; - apr_size_t i, index; + fspr_memnode_t *node, **ref; + fspr_uint32_t max_index; + fspr_size_t i, index; /* Round up the block size to the next boundary, but always * allocate at least a certain size (MIN_ALLOC). @@ -196,7 +196,7 @@ apr_memnode_t *allocator_alloc(apr_allocator_t *allocator, apr_size_t size) if (index <= allocator->max_index) { #if APR_HAS_THREADS if (allocator->mutex) - apr_thread_mutex_lock(allocator->mutex); + fspr_thread_mutex_lock(allocator->mutex); #endif /* APR_HAS_THREADS */ /* Walk the free list to see if there are @@ -239,7 +239,7 @@ apr_memnode_t *allocator_alloc(apr_allocator_t *allocator, apr_size_t size) #if APR_HAS_THREADS if (allocator->mutex) - apr_thread_mutex_unlock(allocator->mutex); + fspr_thread_mutex_unlock(allocator->mutex); #endif /* APR_HAS_THREADS */ node->next = NULL; @@ -250,7 +250,7 @@ apr_memnode_t *allocator_alloc(apr_allocator_t *allocator, apr_size_t size) #if APR_HAS_THREADS if (allocator->mutex) - apr_thread_mutex_unlock(allocator->mutex); + fspr_thread_mutex_unlock(allocator->mutex); #endif /* APR_HAS_THREADS */ } @@ -260,7 +260,7 @@ apr_memnode_t *allocator_alloc(apr_allocator_t *allocator, apr_size_t size) else if (allocator->free[0]) { #if APR_HAS_THREADS if (allocator->mutex) - apr_thread_mutex_lock(allocator->mutex); + fspr_thread_mutex_lock(allocator->mutex); #endif /* APR_HAS_THREADS */ /* Walk the free list to see if there are @@ -279,7 +279,7 @@ apr_memnode_t *allocator_alloc(apr_allocator_t *allocator, apr_size_t size) #if APR_HAS_THREADS if (allocator->mutex) - apr_thread_mutex_unlock(allocator->mutex); + fspr_thread_mutex_unlock(allocator->mutex); #endif /* APR_HAS_THREADS */ node->next = NULL; @@ -290,7 +290,7 @@ apr_memnode_t *allocator_alloc(apr_allocator_t *allocator, apr_size_t size) #if APR_HAS_THREADS if (allocator->mutex) - apr_thread_mutex_unlock(allocator->mutex); + fspr_thread_mutex_unlock(allocator->mutex); #endif /* APR_HAS_THREADS */ } @@ -309,15 +309,15 @@ apr_memnode_t *allocator_alloc(apr_allocator_t *allocator, apr_size_t size) } static APR_INLINE -void allocator_free(apr_allocator_t *allocator, apr_memnode_t *node) +void allocator_free(fspr_allocator_t *allocator, fspr_memnode_t *node) { - apr_memnode_t *next, *freelist = NULL; - apr_uint32_t index, max_index; - apr_uint32_t max_free_index, current_free_index; + fspr_memnode_t *next, *freelist = NULL; + fspr_uint32_t index, max_index; + fspr_uint32_t max_free_index, current_free_index; #if APR_HAS_THREADS if (allocator->mutex) - apr_thread_mutex_lock(allocator->mutex); + fspr_thread_mutex_lock(allocator->mutex); #endif /* APR_HAS_THREADS */ max_index = allocator->max_index; @@ -362,7 +362,7 @@ void allocator_free(apr_allocator_t *allocator, apr_memnode_t *node) #if APR_HAS_THREADS if (allocator->mutex) - apr_thread_mutex_unlock(allocator->mutex); + fspr_thread_mutex_unlock(allocator->mutex); #endif /* APR_HAS_THREADS */ while (freelist != NULL) { @@ -372,14 +372,14 @@ void allocator_free(apr_allocator_t *allocator, apr_memnode_t *node) } } -APR_DECLARE(apr_memnode_t *) apr_allocator_alloc(apr_allocator_t *allocator, - apr_size_t size) +APR_DECLARE(fspr_memnode_t *) fspr_allocator_alloc(fspr_allocator_t *allocator, + fspr_size_t size) { return allocator_alloc(allocator, size); } -APR_DECLARE(void) apr_allocator_free(apr_allocator_t *allocator, - apr_memnode_t *node) +APR_DECLARE(void) fspr_allocator_free(fspr_allocator_t *allocator, + fspr_memnode_t *node) { allocator_free(allocator, node); } @@ -409,8 +409,8 @@ typedef struct cleanup_t cleanup_t; /** A list of processes */ struct process_chain { /** The process ID */ - apr_proc_t *proc; - apr_kill_conditions_e kill_how; + fspr_proc_t *proc; + fspr_kill_conditions_e kill_how; /** The next process in the list */ struct process_chain *next; }; @@ -422,7 +422,7 @@ typedef struct debug_node_t debug_node_t; struct debug_node_t { debug_node_t *next; - apr_uint32_t index; + fspr_uint32_t index; void *beginp[64]; void *endp[64]; }; @@ -431,68 +431,68 @@ struct debug_node_t { #endif /* APR_POOL_DEBUG */ -/* The ref field in the apr_pool_t struct holds a +/* The ref field in the fspr_pool_t struct holds a * pointer to the pointer referencing this pool. * It is used for parent, child, sibling management. - * Look at apr_pool_create_ex() and apr_pool_destroy() + * Look at fspr_pool_create_ex() and fspr_pool_destroy() * to see how it is used. */ -struct apr_pool_t { - apr_pool_t *parent; - apr_pool_t *child; - apr_pool_t *sibling; - apr_pool_t **ref; +struct fspr_pool_t { + fspr_pool_t *parent; + fspr_pool_t *child; + fspr_pool_t *sibling; + fspr_pool_t **ref; cleanup_t *cleanups; cleanup_t *free_cleanups; - apr_allocator_t *allocator; + fspr_allocator_t *allocator; struct process_chain *subprocesses; - apr_abortfunc_t abort_fn; - apr_hash_t *user_data; + fspr_abortfunc_t abort_fn; + fspr_hash_t *user_data; const char *tag; #if APR_HAS_THREADS - apr_thread_mutex_t *user_mutex; + fspr_thread_mutex_t *user_mutex; #endif #if !APR_POOL_DEBUG - apr_memnode_t *active; - apr_memnode_t *self; /* The node containing the pool itself */ + fspr_memnode_t *active; + fspr_memnode_t *self; /* The node containing the pool itself */ char *self_first_avail; #else /* APR_POOL_DEBUG */ - apr_pool_t *joined; /* the caller has guaranteed that this pool + fspr_pool_t *joined; /* the caller has guaranteed that this pool * will survive as long as ->joined */ debug_node_t *nodes; const char *file_line; - apr_uint32_t creation_flags; + fspr_uint32_t creation_flags; unsigned int stat_alloc; unsigned int stat_total_alloc; unsigned int stat_clear; #if APR_HAS_THREADS - apr_os_thread_t owner; - apr_thread_mutex_t *mutex; + fspr_os_thread_t owner; + fspr_thread_mutex_t *mutex; #endif /* APR_HAS_THREADS */ #endif /* APR_POOL_DEBUG */ #ifdef NETWARE - apr_os_proc_t owner_proc; + fspr_os_proc_t owner_proc; #endif /* defined(NETWARE) */ }; -#define SIZEOF_POOL_T APR_ALIGN_DEFAULT(sizeof(apr_pool_t)) +#define SIZEOF_POOL_T APR_ALIGN_DEFAULT(sizeof(fspr_pool_t)) /* * Variables */ -static apr_byte_t apr_pools_initialized = 0; -static apr_pool_t *global_pool = NULL; +static fspr_byte_t fspr_pools_initialized = 0; +static fspr_pool_t *global_pool = NULL; #if !APR_POOL_DEBUG -static apr_allocator_t *global_allocator = NULL; +static fspr_allocator_t *global_allocator = NULL; #endif /* !APR_POOL_DEBUG */ #if (APR_POOL_DEBUG & APR_POOL_DEBUG_VERBOSE_ALL) -static apr_file_t *file_stderr = NULL; +static fspr_file_t *file_stderr = NULL; #endif /* (APR_POOL_DEBUG & APR_POOL_DEBUG_VERBOSE_ALL) */ /* @@ -504,13 +504,13 @@ static void run_child_cleanups(cleanup_t **c); static void free_proc_chain(struct process_chain *procs); #if APR_POOL_DEBUG -static void pool_destroy_debug(apr_pool_t *pool, const char *file_line); +static void pool_destroy_debug(fspr_pool_t *pool, const char *file_line); #endif #if APR_HAS_THREADS -APR_DECLARE(void) apr_pool_mutex_set(apr_pool_t *pool, - apr_thread_mutex_t *mutex) +APR_DECLARE(void) fspr_pool_mutex_set(fspr_pool_t *pool, + fspr_thread_mutex_t *mutex) { pool->user_mutex = mutex; } @@ -522,63 +522,63 @@ APR_DECLARE(void) apr_pool_mutex_set(apr_pool_t *pool, * Initialization */ -APR_DECLARE(apr_status_t) apr_pool_initialize(void) +APR_DECLARE(fspr_status_t) fspr_pool_initialize(void) { - apr_status_t rv; + fspr_status_t rv; - if (apr_pools_initialized++) + if (fspr_pools_initialized++) return APR_SUCCESS; - if ((rv = apr_allocator_create(&global_allocator)) != APR_SUCCESS) { - apr_pools_initialized = 0; + if ((rv = fspr_allocator_create(&global_allocator)) != APR_SUCCESS) { + fspr_pools_initialized = 0; return rv; } - if ((rv = apr_pool_create_ex(&global_pool, NULL, NULL, + if ((rv = fspr_pool_create_ex(&global_pool, NULL, NULL, global_allocator)) != APR_SUCCESS) { - apr_allocator_destroy(global_allocator); + fspr_allocator_destroy(global_allocator); global_allocator = NULL; - apr_pools_initialized = 0; + fspr_pools_initialized = 0; return rv; } - apr_pool_tag(global_pool, "apr_global_pool"); + fspr_pool_tag(global_pool, "fspr_global_pool"); /* This has to happen here because mutexes might be backed by - * atomics. It used to be snug and safe in apr_initialize(). + * atomics. It used to be snug and safe in fspr_initialize(). */ - if ((rv = apr_atomic_init(global_pool)) != APR_SUCCESS) { + if ((rv = fspr_atomic_init(global_pool)) != APR_SUCCESS) { return rv; } #if APR_HAS_THREADS { - apr_thread_mutex_t *mutex; + fspr_thread_mutex_t *mutex; - if ((rv = apr_thread_mutex_create(&mutex, + if ((rv = fspr_thread_mutex_create(&mutex, APR_THREAD_MUTEX_DEFAULT, global_pool)) != APR_SUCCESS) { return rv; } - apr_allocator_mutex_set(global_allocator, mutex); + fspr_allocator_mutex_set(global_allocator, mutex); } #endif /* APR_HAS_THREADS */ - apr_allocator_owner_set(global_allocator, global_pool); + fspr_allocator_owner_set(global_allocator, global_pool); return APR_SUCCESS; } -APR_DECLARE(void) apr_pool_terminate(void) +APR_DECLARE(void) fspr_pool_terminate(void) { - if (!apr_pools_initialized) + if (!fspr_pools_initialized) return; - if (--apr_pools_initialized) + if (--fspr_pools_initialized) return; - apr_pool_destroy(global_pool); /* This will also destroy the mutex */ + fspr_pool_destroy(global_pool); /* This will also destroy the mutex */ global_pool = NULL; global_allocator = NULL; @@ -604,19 +604,19 @@ APR_DECLARE(void) apr_pool_terminate(void) * Memory allocation */ -APR_DECLARE(void *) apr_palloc(apr_pool_t *pool, apr_size_t size) +APR_DECLARE(void *) fspr_palloc(fspr_pool_t *pool, fspr_size_t size) { - apr_memnode_t *active, *node; + fspr_memnode_t *active, *node; void *mem = NULL; - apr_size_t free_index; + fspr_size_t free_index; #if APR_HAS_THREADS - if (pool->user_mutex) apr_thread_mutex_lock(pool->user_mutex); + if (pool->user_mutex) fspr_thread_mutex_lock(pool->user_mutex); #endif size = APR_ALIGN_DEFAULT(size); active = pool->active; /* If the active node has enough bytes left, use it. */ - if (size < (apr_size_t)(active->endp - active->first_avail)) { + if (size < (fspr_size_t)(active->endp - active->first_avail)) { mem = active->first_avail; active->first_avail += size; @@ -624,7 +624,7 @@ APR_DECLARE(void *) apr_palloc(apr_pool_t *pool, apr_size_t size) } node = active->next; - if (size < (apr_size_t)(node->endp - node->first_avail)) { + if (size < (fspr_size_t)(node->endp - node->first_avail)) { list_remove(node); } else { @@ -664,26 +664,26 @@ APR_DECLARE(void *) apr_palloc(apr_pool_t *pool, apr_size_t size) end: #if APR_HAS_THREADS - if (pool->user_mutex) apr_thread_mutex_unlock(pool->user_mutex); + if (pool->user_mutex) fspr_thread_mutex_unlock(pool->user_mutex); #endif return mem; } -/* Provide an implementation of apr_pcalloc for backward compatibility - * with code built before apr_pcalloc was a macro +/* Provide an implementation of fspr_pcalloc for backward compatibility + * with code built before fspr_pcalloc was a macro */ -#ifdef apr_pcalloc -#undef apr_pcalloc +#ifdef fspr_pcalloc +#undef fspr_pcalloc #endif -APR_DECLARE(void *) apr_pcalloc(apr_pool_t *pool, apr_size_t size); -APR_DECLARE(void *) apr_pcalloc(apr_pool_t *pool, apr_size_t size) +APR_DECLARE(void *) fspr_pcalloc(fspr_pool_t *pool, fspr_size_t size); +APR_DECLARE(void *) fspr_pcalloc(fspr_pool_t *pool, fspr_size_t size) { void *mem; size = APR_ALIGN_DEFAULT(size); - if ((mem = apr_palloc(pool, size)) != NULL) { + if ((mem = fspr_palloc(pool, size)) != NULL) { memset(mem, 0, size); } @@ -695,17 +695,17 @@ APR_DECLARE(void *) apr_pcalloc(apr_pool_t *pool, apr_size_t size) * Pool creation/destruction */ -APR_DECLARE(void) apr_pool_clear(apr_pool_t *pool) +APR_DECLARE(void) fspr_pool_clear(fspr_pool_t *pool) { - apr_memnode_t *active; + fspr_memnode_t *active; #if APR_HAS_THREADS - if (pool->user_mutex) apr_thread_mutex_lock(pool->user_mutex); + if (pool->user_mutex) fspr_thread_mutex_lock(pool->user_mutex); #endif /* Destroy the subpools. The subpools will detach themselves from * this pool thus this loop is safe and easy. */ while (pool->child) - apr_pool_destroy(pool->child); + fspr_pool_destroy(pool->child); /* Run cleanups */ run_cleanups(&pool->cleanups); @@ -735,20 +735,20 @@ APR_DECLARE(void) apr_pool_clear(apr_pool_t *pool) end: #if APR_HAS_THREADS - if (pool->user_mutex) apr_thread_mutex_unlock(pool->user_mutex); + if (pool->user_mutex) fspr_thread_mutex_unlock(pool->user_mutex); #endif } -APR_DECLARE(void) apr_pool_destroy(apr_pool_t *pool) +APR_DECLARE(void) fspr_pool_destroy(fspr_pool_t *pool) { - apr_memnode_t *active; - apr_allocator_t *allocator; + fspr_memnode_t *active; + fspr_allocator_t *allocator; /* Destroy the subpools. The subpools will detach themselve from * this pool thus this loop is safe and easy. */ while (pool->child) - apr_pool_destroy(pool->child); + fspr_pool_destroy(pool->child); /* Run cleanups */ run_cleanups(&pool->cleanups); @@ -759,10 +759,10 @@ APR_DECLARE(void) apr_pool_destroy(apr_pool_t *pool) /* Remove the pool from the parents child list */ if (pool->parent) { #if APR_HAS_THREADS - apr_thread_mutex_t *mutex; + fspr_thread_mutex_t *mutex; - if ((mutex = apr_allocator_mutex_get(pool->parent->allocator)) != NULL) - apr_thread_mutex_lock(mutex); + if ((mutex = fspr_allocator_mutex_get(pool->parent->allocator)) != NULL) + fspr_thread_mutex_lock(mutex); #endif /* APR_HAS_THREADS */ if ((*pool->ref = pool->sibling) != NULL) @@ -770,7 +770,7 @@ APR_DECLARE(void) apr_pool_destroy(apr_pool_t *pool) #if APR_HAS_THREADS if (mutex) - apr_thread_mutex_unlock(mutex); + fspr_thread_mutex_unlock(mutex); #endif /* APR_HAS_THREADS */ } @@ -782,11 +782,11 @@ APR_DECLARE(void) apr_pool_destroy(apr_pool_t *pool) *active->ref = NULL; #if APR_HAS_THREADS - if (apr_allocator_owner_get(allocator) == pool) { + if (fspr_allocator_owner_get(allocator) == pool) { /* Make sure to remove the lock, since it is highly likely to * be invalid now. */ - apr_allocator_mutex_set(allocator, NULL); + fspr_allocator_mutex_set(allocator, NULL); } #endif /* APR_HAS_THREADS */ @@ -800,18 +800,18 @@ APR_DECLARE(void) apr_pool_destroy(apr_pool_t *pool) * and the allocator). Don't worry about destroying the optional mutex * in the allocator, it will have been destroyed by the cleanup function. */ - if (apr_allocator_owner_get(allocator) == pool) { - apr_allocator_destroy(allocator); + if (fspr_allocator_owner_get(allocator) == pool) { + fspr_allocator_destroy(allocator); } } -APR_DECLARE(apr_status_t) apr_pool_create_ex(apr_pool_t **newpool, - apr_pool_t *parent, - apr_abortfunc_t abort_fn, - apr_allocator_t *allocator) +APR_DECLARE(fspr_status_t) fspr_pool_create_ex(fspr_pool_t **newpool, + fspr_pool_t *parent, + fspr_abortfunc_t abort_fn, + fspr_allocator_t *allocator) { - apr_pool_t *pool; - apr_memnode_t *node; + fspr_pool_t *pool; + fspr_memnode_t *node; *newpool = NULL; @@ -844,7 +844,7 @@ APR_DECLARE(apr_status_t) apr_pool_create_ex(apr_pool_t **newpool, node->next = node; node->ref = &node->next; - pool = (apr_pool_t *)node->first_avail; + pool = (fspr_pool_t *)node->first_avail; node->first_avail = pool->self_first_avail = (char *)pool + SIZEOF_POOL_T; pool->allocator = allocator; @@ -860,15 +860,15 @@ APR_DECLARE(apr_status_t) apr_pool_create_ex(apr_pool_t **newpool, pool->user_mutex = NULL; #endif #ifdef NETWARE - pool->owner_proc = (apr_os_proc_t)getnlmhandle(); + pool->owner_proc = (fspr_os_proc_t)getnlmhandle(); #endif /* defined(NETWARE) */ if ((pool->parent = parent) != NULL) { #if APR_HAS_THREADS - apr_thread_mutex_t *mutex; + fspr_thread_mutex_t *mutex; - if ((mutex = apr_allocator_mutex_get(parent->allocator)) != NULL) - apr_thread_mutex_lock(mutex); + if ((mutex = fspr_allocator_mutex_get(parent->allocator)) != NULL) + fspr_thread_mutex_lock(mutex); #endif /* APR_HAS_THREADS */ if ((pool->sibling = parent->child) != NULL) @@ -879,7 +879,7 @@ APR_DECLARE(apr_status_t) apr_pool_create_ex(apr_pool_t **newpool, #if APR_HAS_THREADS if (mutex) - apr_thread_mutex_unlock(mutex); + fspr_thread_mutex_unlock(mutex); #endif /* APR_HAS_THREADS */ } else { @@ -898,37 +898,37 @@ APR_DECLARE(apr_status_t) apr_pool_create_ex(apr_pool_t **newpool, */ /* - * apr_psprintf is implemented by writing directly into the current + * fspr_psprintf is implemented by writing directly into the current * block of the pool, starting right at first_avail. If there's * insufficient room, then a new block is allocated and the earlier * output is copied over. The new block isn't linked into the pool * until all the output is done. * * Note that this is completely safe because nothing else can - * allocate in this apr_pool_t while apr_psprintf is running. alarms are - * blocked, and the only thing outside of apr_pools.c that's invoked - * is apr_vformatter -- which was purposefully written to be + * allocate in this fspr_pool_t while fspr_psprintf is running. alarms are + * blocked, and the only thing outside of fspr_pools.c that's invoked + * is fspr_vformatter -- which was purposefully written to be * self-contained with no callouts. */ struct psprintf_data { - apr_vformatter_buff_t vbuff; - apr_memnode_t *node; - apr_pool_t *pool; - apr_byte_t got_a_new_node; - apr_memnode_t *free; + fspr_vformatter_buff_t vbuff; + fspr_memnode_t *node; + fspr_pool_t *pool; + fspr_byte_t got_a_new_node; + fspr_memnode_t *free; }; #define APR_PSPRINTF_MIN_STRINGSIZE 32 -static int psprintf_flush(apr_vformatter_buff_t *vbuff) +static int psprintf_flush(fspr_vformatter_buff_t *vbuff) { struct psprintf_data *ps = (struct psprintf_data *)vbuff; - apr_memnode_t *node, *active; - apr_size_t cur_len, size; + fspr_memnode_t *node, *active; + fspr_size_t cur_len, size; char *strp; - apr_pool_t *pool; - apr_size_t free_index; + fspr_pool_t *pool; + fspr_size_t free_index; pool = ps->pool; active = ps->node; @@ -946,7 +946,7 @@ static int psprintf_flush(apr_vformatter_buff_t *vbuff) node = active->next; if (!ps->got_a_new_node - && size < (apr_size_t)(node->endp - node->first_avail)) { + && size < (fspr_size_t)(node->endp - node->first_avail)) { list_remove(node); list_insert(node, active); @@ -993,19 +993,19 @@ static int psprintf_flush(apr_vformatter_buff_t *vbuff) return 0; } -APR_DECLARE(char *) apr_pvsprintf(apr_pool_t *pool, const char *fmt, va_list ap) +APR_DECLARE(char *) fspr_pvsprintf(fspr_pool_t *pool, const char *fmt, va_list ap) { struct psprintf_data ps; char *strp; - apr_size_t size; - apr_memnode_t *active, *node; - apr_size_t free_index; + fspr_size_t size; + fspr_memnode_t *active, *node; + fspr_size_t free_index; #if APR_HAS_THREADS - if (pool->user_mutex) apr_thread_mutex_lock(pool->user_mutex); + if (pool->user_mutex) fspr_thread_mutex_lock(pool->user_mutex); #endif - ps.node = active = pool->active; + ps.node = pool->active; ps.pool = pool; ps.vbuff.curpos = ps.node->first_avail; @@ -1014,7 +1014,7 @@ APR_DECLARE(char *) apr_pvsprintf(apr_pool_t *pool, const char *fmt, va_list ap) ps.got_a_new_node = 0; ps.free = NULL; - /* Make sure that the first node passed to apr_vformatter has at least + /* Make sure that the first node passed to fspr_vformatter has at least * room to hold the NUL terminator. */ if (ps.node->first_avail == ps.node->endp) { @@ -1028,7 +1028,7 @@ APR_DECLARE(char *) apr_pvsprintf(apr_pool_t *pool, const char *fmt, va_list ap) } } - if (apr_vformatter(psprintf_flush, &ps.vbuff, fmt, ap) == -1) { + if (fspr_vformatter(psprintf_flush, &ps.vbuff, fmt, ap) == -1) { if (pool->abort_fn) pool->abort_fn(APR_ENOMEM); @@ -1082,7 +1082,7 @@ APR_DECLARE(char *) apr_pvsprintf(apr_pool_t *pool, const char *fmt, va_list ap) end: #if APR_HAS_THREADS - if (pool->user_mutex) apr_thread_mutex_unlock(pool->user_mutex); + if (pool->user_mutex) fspr_thread_mutex_unlock(pool->user_mutex); #endif return strp; @@ -1100,12 +1100,12 @@ APR_DECLARE(char *) apr_pvsprintf(apr_pool_t *pool, const char *fmt, va_list ap) * anything other than 0, abort the traversal and return the value * returned by fn. */ -static int apr_pool_walk_tree(apr_pool_t *pool, - int (*fn)(apr_pool_t *pool, void *data), +static int fspr_pool_walk_tree(fspr_pool_t *pool, + int (*fn)(fspr_pool_t *pool, void *data), void *data) { int rv; - apr_pool_t *child; + fspr_pool_t *child; rv = fn(pool, data); if (rv) @@ -1113,13 +1113,13 @@ static int apr_pool_walk_tree(apr_pool_t *pool, #if APR_HAS_THREADS if (pool->mutex) { - apr_thread_mutex_lock(pool->mutex); + fspr_thread_mutex_lock(pool->mutex); } #endif /* APR_HAS_THREADS */ child = pool->child; while (child) { - rv = apr_pool_walk_tree(child, fn, data); + rv = fspr_pool_walk_tree(child, fn, data); if (rv) break; @@ -1128,21 +1128,21 @@ static int apr_pool_walk_tree(apr_pool_t *pool, #if APR_HAS_THREADS if (pool->mutex) { - apr_thread_mutex_unlock(pool->mutex); + fspr_thread_mutex_unlock(pool->mutex); } #endif /* APR_HAS_THREADS */ return rv; } -APR_DECLARE(int) apr_pool_walk_tree_debug(apr_pool_t *pool, - int(*fn)(apr_pool_t *pool, void *data), +APR_DECLARE(int) fspr_pool_walk_tree_debug(fspr_pool_t *pool, + int(*fn)(fspr_pool_t *pool, void *data), void *data) { - return apr_pool_walk_tree(pool, fn, data); + return fspr_pool_walk_tree(pool, fn, data); } -APR_DECLARE(void) apr_pool_get_stats(apr_pool_t *pool, unsigned int *alloc, unsigned int *total_alloc, unsigned int *clear) +APR_DECLARE(void) fspr_pool_get_stats(fspr_pool_t *pool, unsigned int *alloc, unsigned int *total_alloc, unsigned int *clear) { if (pool) { *alloc = pool->stat_alloc; @@ -1152,12 +1152,12 @@ APR_DECLARE(void) apr_pool_get_stats(apr_pool_t *pool, unsigned int *alloc, unsi } #if (APR_POOL_DEBUG & APR_POOL_DEBUG_VERBOSE_ALL) -static void apr_pool_log_event(apr_pool_t *pool, const char *event, +static void fspr_pool_log_event(fspr_pool_t *pool, const char *event, const char *file_line, int deref) { if (file_stderr) { if (deref) { - apr_file_printf(file_stderr, + fspr_file_printf(file_stderr, "POOL DEBUG: " "[%lu" #if APR_HAS_THREADS @@ -1172,18 +1172,18 @@ static void apr_pool_log_event(apr_pool_t *pool, const char *event, "\n", (unsigned long)getpid(), #if APR_HAS_THREADS - (unsigned long)apr_os_thread_current(), + (unsigned long)fspr_os_thread_current(), #endif /* APR_HAS_THREADS */ event, - (unsigned long)apr_pool_num_bytes(pool, 0), - (unsigned long)apr_pool_num_bytes(pool, 1), - (unsigned long)apr_pool_num_bytes(global_pool, 1), + (unsigned long)fspr_pool_num_bytes(pool, 0), + (unsigned long)fspr_pool_num_bytes(pool, 1), + (unsigned long)fspr_pool_num_bytes(global_pool, 1), (unsigned int)pool, pool->tag, file_line, pool->stat_alloc, pool->stat_total_alloc, pool->stat_clear); } else { - apr_file_printf(file_stderr, + fspr_file_printf(file_stderr, "POOL DEBUG: " "[%lu" #if APR_HAS_THREADS @@ -1197,7 +1197,7 @@ static void apr_pool_log_event(apr_pool_t *pool, const char *event, "\n", (unsigned long)getpid(), #if APR_HAS_THREADS - (unsigned long)apr_os_thread_current(), + (unsigned long)fspr_os_thread_current(), #endif /* APR_HAS_THREADS */ event, (unsigned int)pool, @@ -1208,26 +1208,26 @@ static void apr_pool_log_event(apr_pool_t *pool, const char *event, #endif /* (APR_POOL_DEBUG & APR_POOL_DEBUG_VERBOSE_ALL) */ #if (APR_POOL_DEBUG & APR_POOL_DEBUG_LIFETIME) -static int pool_is_child_of(apr_pool_t *parent, void *data) +static int pool_is_child_of(fspr_pool_t *parent, void *data) { - apr_pool_t *pool = (apr_pool_t *)data; + fspr_pool_t *pool = (fspr_pool_t *)data; return (pool == parent); } -static int apr_pool_is_child_of(apr_pool_t *pool, apr_pool_t *parent) +static int fspr_pool_is_child_of(fspr_pool_t *pool, fspr_pool_t *parent) { if (parent == NULL) return 0; - return apr_pool_walk_tree(parent, pool_is_child_of, pool); + return fspr_pool_walk_tree(parent, pool_is_child_of, pool); } #endif /* (APR_POOL_DEBUG & APR_POOL_DEBUG_LIFETIME) */ -static void apr_pool_check_integrity(apr_pool_t *pool) +static void fspr_pool_check_integrity(fspr_pool_t *pool) { /* Rule of thumb: use of the global pool is always - * ok, since the only user is apr_pools.c. Unless + * ok, since the only user is fspr_pools.c. Unless * people have searched for the top level parent and * started to use that... */ @@ -1240,10 +1240,10 @@ static void apr_pool_check_integrity(apr_pool_t *pool) * destroyed, in which case we abort(). */ #if (APR_POOL_DEBUG & APR_POOL_DEBUG_LIFETIME) - if (!apr_pool_is_child_of(pool, global_pool)) { + if (!fspr_pool_is_child_of(pool, global_pool)) { #if (APR_POOL_DEBUG & APR_POOL_DEBUG_VERBOSE_ALL) - apr_pool_log_event(pool, "LIFE", - __FILE__ ":apr_pool_integrity check", 0); + fspr_pool_log_event(pool, "LIFE", + __FILE__ ":fspr_pool_integrity check", 0); #endif /* (APR_POOL_DEBUG & APR_POOL_DEBUG_VERBOSE_ALL) */ abort(); } @@ -1251,10 +1251,10 @@ static void apr_pool_check_integrity(apr_pool_t *pool) #if (APR_POOL_DEBUG & APR_POOL_DEBUG_OWNER) #if APR_HAS_THREADS - if (!apr_os_thread_equal(pool->owner, apr_os_thread_current())) { + if (!fspr_os_thread_equal(pool->owner, fspr_os_thread_current())) { #if (APR_POOL_DEBUG & APR_POOL_DEBUG_VERBOSE_ALL) - apr_pool_log_event(pool, "THREAD", - __FILE__ ":apr_pool_integrity check", 0); + fspr_pool_log_event(pool, "THREAD", + __FILE__ ":fspr_pool_integrity check", 0); #endif /* (APR_POOL_DEBUG & APR_POOL_DEBUG_VERBOSE_ALL) */ abort(); } @@ -1267,14 +1267,14 @@ static void apr_pool_check_integrity(apr_pool_t *pool) * Initialization (debug) */ -APR_DECLARE(apr_status_t) apr_pool_initialize(void) +APR_DECLARE(fspr_status_t) fspr_pool_initialize(void) { - apr_status_t rv; + fspr_status_t rv; #if (APR_POOL_DEBUG & APR_POOL_DEBUG_VERBOSE_ALL) char *logpath; #endif - if (apr_pools_initialized++) + if (fspr_pools_initialized++) return APR_SUCCESS; /* Since the debug code works a bit differently then the @@ -1282,35 +1282,35 @@ APR_DECLARE(apr_status_t) apr_pool_initialize(void) * pools code has got this lock embedded in the global * allocator, a concept unknown to debug mode. */ - if ((rv = apr_pool_create_ex(&global_pool, NULL, NULL, + if ((rv = fspr_pool_create_ex(&global_pool, NULL, NULL, NULL)) != APR_SUCCESS) { return rv; } - apr_pool_tag(global_pool, "APR global pool"); + fspr_pool_tag(global_pool, "APR global pool"); - apr_pools_initialized = 1; + fspr_pools_initialized = 1; /* This has to happen here because mutexes might be backed by - * atomics. It used to be snug and safe in apr_initialize(). + * atomics. It used to be snug and safe in fspr_initialize(). */ - if ((rv = apr_atomic_init(global_pool)) != APR_SUCCESS) { + if ((rv = fspr_atomic_init(global_pool)) != APR_SUCCESS) { return rv; } #if (APR_POOL_DEBUG & APR_POOL_DEBUG_VERBOSE_ALL) - rv = apr_env_get(&logpath, "APR_POOL_DEBUG_LOG", global_pool); + rv = fspr_env_get(&logpath, "APR_POOL_DEBUG_LOG", global_pool); if (rv == APR_SUCCESS) { - apr_file_open(&file_stderr, logpath, APR_APPEND|APR_WRITE|APR_CREATE, + fspr_file_open(&file_stderr, logpath, APR_APPEND|APR_WRITE|APR_CREATE, APR_OS_DEFAULT, global_pool); } else { - apr_file_open_stderr(&file_stderr, global_pool); + fspr_file_open_stderr(&file_stderr, global_pool); } if (file_stderr) { - apr_file_printf(file_stderr, + fspr_file_printf(file_stderr, "POOL DEBUG: [PID" #if APR_HAS_THREADS "/TID" @@ -1318,21 +1318,21 @@ APR_DECLARE(apr_status_t) apr_pool_initialize(void) "] ACTION (SIZE /POOL SIZE /TOTAL SIZE) " "POOL \"TAG\" <__FILE__:__LINE__> (ALLOCS/TOTAL ALLOCS/CLEARS)\n"); - apr_pool_log_event(global_pool, "GLOBAL", __FILE__ ":apr_pool_initialize", 0); + fspr_pool_log_event(global_pool, "GLOBAL", __FILE__ ":fspr_pool_initialize", 0); } #endif /* (APR_POOL_DEBUG & APR_POOL_DEBUG_VERBOSE_ALL) */ return APR_SUCCESS; } -APR_DECLARE(void) apr_pool_terminate(void) +APR_DECLARE(void) fspr_pool_terminate(void) { - if (!apr_pools_initialized) + if (!fspr_pools_initialized) return; - apr_pools_initialized = 0; + fspr_pools_initialized = 0; - apr_pool_destroy(global_pool); /* This will also destroy the mutex */ + fspr_pool_destroy(global_pool); /* This will also destroy the mutex */ global_pool = NULL; #if (APR_POOL_DEBUG & APR_POOL_DEBUG_VERBOSE_ALL) @@ -1345,7 +1345,7 @@ APR_DECLARE(void) apr_pool_terminate(void) * Memory allocation (debug) */ -static void *pool_alloc(apr_pool_t *pool, apr_size_t size) +static void *pool_alloc(fspr_pool_t *pool, fspr_size_t size) { debug_node_t *node; void *mem; @@ -1383,34 +1383,34 @@ static void *pool_alloc(apr_pool_t *pool, apr_size_t size) return mem; } -APR_DECLARE(void *) apr_palloc_debug(apr_pool_t *pool, apr_size_t size, +APR_DECLARE(void *) fspr_palloc_debug(fspr_pool_t *pool, fspr_size_t size, const char *file_line) { void *mem; - apr_pool_check_integrity(pool); + fspr_pool_check_integrity(pool); mem = pool_alloc(pool, size); #if (APR_POOL_DEBUG & APR_POOL_DEBUG_VERBOSE_ALLOC) - apr_pool_log_event(pool, "PALLOC", file_line, 1); + fspr_pool_log_event(pool, "PALLOC", file_line, 1); #endif /* (APR_POOL_DEBUG & APR_POOL_DEBUG_VERBOSE_ALLOC) */ return mem; } -APR_DECLARE(void *) apr_pcalloc_debug(apr_pool_t *pool, apr_size_t size, +APR_DECLARE(void *) fspr_pcalloc_debug(fspr_pool_t *pool, fspr_size_t size, const char *file_line) { void *mem; - apr_pool_check_integrity(pool); + fspr_pool_check_integrity(pool); mem = pool_alloc(pool, size); memset(mem, 0, size); #if (APR_POOL_DEBUG & APR_POOL_DEBUG_VERBOSE_ALLOC) - apr_pool_log_event(pool, "PCALLOC", file_line, 1); + fspr_pool_log_event(pool, "PCALLOC", file_line, 1); #endif /* (APR_POOL_DEBUG & APR_POOL_DEBUG_VERBOSE_ALLOC) */ return mem; @@ -1423,10 +1423,10 @@ APR_DECLARE(void *) apr_pcalloc_debug(apr_pool_t *pool, apr_size_t size, #define POOL_POISON_BYTE 'A' -static void pool_clear_debug(apr_pool_t *pool, const char *file_line) +static void pool_clear_debug(fspr_pool_t *pool, const char *file_line) { debug_node_t *node; - apr_uint32_t index; + fspr_uint32_t index; /* Destroy the subpools. The subpools will detach themselves from * this pool thus this loop is safe and easy. @@ -1469,17 +1469,17 @@ static void pool_clear_debug(apr_pool_t *pool, const char *file_line) pool->stat_clear++; } -APR_DECLARE(void) apr_pool_clear_debug(apr_pool_t *pool, +APR_DECLARE(void) fspr_pool_clear_debug(fspr_pool_t *pool, const char *file_line) { #if APR_HAS_THREADS - apr_thread_mutex_t *mutex = NULL; + fspr_thread_mutex_t *mutex = NULL; #endif - apr_pool_check_integrity(pool); + fspr_pool_check_integrity(pool); #if (APR_POOL_DEBUG & APR_POOL_DEBUG_VERBOSE) - apr_pool_log_event(pool, "CLEAR", file_line, 1); + fspr_pool_log_event(pool, "CLEAR", file_line, 1); #endif /* (APR_POOL_DEBUG & APR_POOL_DEBUG_VERBOSE) */ #if APR_HAS_THREADS @@ -1487,11 +1487,11 @@ APR_DECLARE(void) apr_pool_clear_debug(apr_pool_t *pool, mutex = pool->parent->mutex; /* Lock the parent mutex before clearing so that if we have our - * own mutex it won't be accessed by apr_pool_walk_tree after + * own mutex it won't be accessed by fspr_pool_walk_tree after * it has been destroyed. */ if (mutex != NULL && mutex != pool->mutex) { - apr_thread_mutex_lock(mutex); + fspr_thread_mutex_lock(mutex); } #endif @@ -1503,21 +1503,21 @@ APR_DECLARE(void) apr_pool_clear_debug(apr_pool_t *pool, * the mutex we obtained above. */ if (mutex != pool->mutex) { - (void)apr_thread_mutex_create(&pool->mutex, + (void)fspr_thread_mutex_create(&pool->mutex, APR_THREAD_MUTEX_NESTED, pool); if (mutex != NULL) - (void)apr_thread_mutex_unlock(mutex); + (void)fspr_thread_mutex_unlock(mutex); } #endif /* APR_HAS_THREADS */ } -static void pool_destroy_debug(apr_pool_t *pool, const char *file_line) +static void pool_destroy_debug(fspr_pool_t *pool, const char *file_line) { - apr_pool_check_integrity(pool); + fspr_pool_check_integrity(pool); #if (APR_POOL_DEBUG & APR_POOL_DEBUG_VERBOSE) - apr_pool_log_event(pool, "DESTROY", file_line, 1); + fspr_pool_log_event(pool, "DESTROY", file_line, 1); #endif /* (APR_POOL_DEBUG & APR_POOL_DEBUG_VERBOSE) */ pool_clear_debug(pool, file_line); @@ -1525,10 +1525,10 @@ static void pool_destroy_debug(apr_pool_t *pool, const char *file_line) /* Remove the pool from the parents child list */ if (pool->parent) { #if APR_HAS_THREADS - apr_thread_mutex_t *mutex; + fspr_thread_mutex_t *mutex; if ((mutex = pool->parent->mutex) != NULL) - apr_thread_mutex_lock(mutex); + fspr_thread_mutex_lock(mutex); #endif /* APR_HAS_THREADS */ if ((*pool->ref = pool->sibling) != NULL) @@ -1536,28 +1536,28 @@ static void pool_destroy_debug(apr_pool_t *pool, const char *file_line) #if APR_HAS_THREADS if (mutex) - apr_thread_mutex_unlock(mutex); + fspr_thread_mutex_unlock(mutex); #endif /* APR_HAS_THREADS */ } if (pool->allocator != NULL - && apr_allocator_owner_get(pool->allocator) == pool) { - apr_allocator_destroy(pool->allocator); + && fspr_allocator_owner_get(pool->allocator) == pool) { + fspr_allocator_destroy(pool->allocator); } /* Free the pool itself */ free(pool); } -APR_DECLARE(void) apr_pool_destroy_debug(apr_pool_t *pool, +APR_DECLARE(void) fspr_pool_destroy_debug(fspr_pool_t *pool, const char *file_line) { if (pool->joined) { /* Joined pools must not be explicitly destroyed; the caller * has broken the guarantee. */ #if (APR_POOL_DEBUG & APR_POOL_DEBUG_VERBOSE_ALL) - apr_pool_log_event(pool, "LIFE", - __FILE__ ":apr_pool_destroy abort on joined", 0); + fspr_pool_log_event(pool, "LIFE", + __FILE__ ":fspr_pool_destroy abort on joined", 0); #endif /* (APR_POOL_DEBUG & APR_POOL_DEBUG_VERBOSE_ALL) */ abort(); @@ -1565,13 +1565,13 @@ APR_DECLARE(void) apr_pool_destroy_debug(apr_pool_t *pool, pool_destroy_debug(pool, file_line); } -APR_DECLARE(apr_status_t) apr_pool_create_ex_debug(apr_pool_t **newpool, - apr_pool_t *parent, - apr_abortfunc_t abort_fn, - apr_allocator_t *allocator, +APR_DECLARE(fspr_status_t) fspr_pool_create_ex_debug(fspr_pool_t **newpool, + fspr_pool_t *parent, + fspr_abortfunc_t abort_fn, + fspr_allocator_t *allocator, const char *file_line) { - apr_pool_t *pool; + fspr_pool_t *pool; *newpool = NULL; @@ -1579,7 +1579,7 @@ APR_DECLARE(apr_status_t) apr_pool_create_ex_debug(apr_pool_t **newpool, parent = global_pool; } else { - apr_pool_check_integrity(parent); + fspr_pool_check_integrity(parent); if (!allocator) allocator = parent->allocator; @@ -1605,7 +1605,7 @@ APR_DECLARE(apr_status_t) apr_pool_create_ex_debug(apr_pool_t **newpool, if ((pool->parent = parent) != NULL) { #if APR_HAS_THREADS if (parent->mutex) - apr_thread_mutex_lock(parent->mutex); + fspr_thread_mutex_lock(parent->mutex); #endif /* APR_HAS_THREADS */ if ((pool->sibling = parent->child) != NULL) pool->sibling->ref = &pool->sibling; @@ -1615,7 +1615,7 @@ APR_DECLARE(apr_status_t) apr_pool_create_ex_debug(apr_pool_t **newpool, #if APR_HAS_THREADS if (parent->mutex) - apr_thread_mutex_unlock(parent->mutex); + fspr_thread_mutex_unlock(parent->mutex); #endif /* APR_HAS_THREADS */ } else { @@ -1624,26 +1624,26 @@ APR_DECLARE(apr_status_t) apr_pool_create_ex_debug(apr_pool_t **newpool, } #if APR_HAS_THREADS - pool->owner = apr_os_thread_current(); + pool->owner = fspr_os_thread_current(); #endif /* APR_HAS_THREADS */ #ifdef NETWARE - pool->owner_proc = (apr_os_proc_t)getnlmhandle(); + pool->owner_proc = (fspr_os_proc_t)getnlmhandle(); #endif /* defined(NETWARE) */ if (parent == NULL || parent->allocator != allocator) { #if APR_HAS_THREADS - apr_status_t rv; + fspr_status_t rv; /* No matter what the creation flags say, always create - * a lock. Without it integrity_check and apr_pool_num_bytes + * a lock. Without it integrity_check and fspr_pool_num_bytes * blow up (because they traverse pools child lists that * possibly belong to another thread, in combination with * the pool having no lock). However, this might actually * hide problems like creating a child pool of a pool * belonging to another thread. */ - if ((rv = apr_thread_mutex_create(&pool->mutex, + if ((rv = fspr_thread_mutex_create(&pool->mutex, APR_THREAD_MUTEX_NESTED, pool)) != APR_SUCCESS) { free(pool); return rv; @@ -1660,7 +1660,7 @@ APR_DECLARE(apr_status_t) apr_pool_create_ex_debug(apr_pool_t **newpool, *newpool = pool; #if (APR_POOL_DEBUG & APR_POOL_DEBUG_VERBOSE) - apr_pool_log_event(pool, "CREATE", file_line, 1); + fspr_pool_log_event(pool, "CREATE", file_line, 1); #endif /* (APR_POOL_DEBUG & APR_POOL_DEBUG_VERBOSE) */ return APR_SUCCESS; @@ -1672,15 +1672,15 @@ APR_DECLARE(apr_status_t) apr_pool_create_ex_debug(apr_pool_t **newpool, */ struct psprintf_data { - apr_vformatter_buff_t vbuff; + fspr_vformatter_buff_t vbuff; char *mem; - apr_size_t size; + fspr_size_t size; }; -static int psprintf_flush(apr_vformatter_buff_t *vbuff) +static int psprintf_flush(fspr_vformatter_buff_t *vbuff) { struct psprintf_data *ps = (struct psprintf_data *)vbuff; - apr_size_t size; + fspr_size_t size; size = ps->vbuff.curpos - ps->mem; @@ -1694,12 +1694,12 @@ static int psprintf_flush(apr_vformatter_buff_t *vbuff) return 0; } -APR_DECLARE(char *) apr_pvsprintf(apr_pool_t *pool, const char *fmt, va_list ap) +APR_DECLARE(char *) fspr_pvsprintf(fspr_pool_t *pool, const char *fmt, va_list ap) { struct psprintf_data ps; debug_node_t *node; - apr_pool_check_integrity(pool); + fspr_pool_check_integrity(pool); ps.size = 64; ps.mem = malloc(ps.size); @@ -1708,7 +1708,7 @@ APR_DECLARE(char *) apr_pvsprintf(apr_pool_t *pool, const char *fmt, va_list ap) /* Save a byte for the NUL terminator */ ps.vbuff.endpos = ps.mem + ps.size - 1; - if (apr_vformatter(psprintf_flush, &ps.vbuff, fmt, ap) == -1) { + if (fspr_vformatter(psprintf_flush, &ps.vbuff, fmt, ap) == -1) { if (pool->abort_fn) pool->abort_fn(APR_ENOMEM); @@ -1746,7 +1746,7 @@ APR_DECLARE(char *) apr_pvsprintf(apr_pool_t *pool, const char *fmt, va_list ap) * Debug functions */ -APR_DECLARE(void) apr_pool_join(apr_pool_t *p, apr_pool_t *sub) +APR_DECLARE(void) fspr_pool_join(fspr_pool_t *p, fspr_pool_t *sub) { #if APR_POOL_DEBUG if (sub->parent != p) { @@ -1756,11 +1756,11 @@ APR_DECLARE(void) apr_pool_join(apr_pool_t *p, apr_pool_t *sub) #endif } -static int pool_find(apr_pool_t *pool, void *data) +static int pool_find(fspr_pool_t *pool, void *data) { void **pmem = (void **)data; debug_node_t *node; - apr_uint32_t index; + fspr_uint32_t index; node = pool->nodes; @@ -1779,21 +1779,21 @@ static int pool_find(apr_pool_t *pool, void *data) return 0; } -APR_DECLARE(apr_pool_t *) apr_pool_find(const void *mem) +APR_DECLARE(fspr_pool_t *) fspr_pool_find(const void *mem) { void *pool = (void *)mem; - if (apr_pool_walk_tree(global_pool, pool_find, &pool)) + if (fspr_pool_walk_tree(global_pool, pool_find, &pool)) return pool; return NULL; } -static int pool_num_bytes(apr_pool_t *pool, void *data) +static int pool_num_bytes(fspr_pool_t *pool, void *data) { - apr_size_t *psize = (apr_size_t *)data; + fspr_size_t *psize = (fspr_size_t *)data; debug_node_t *node; - apr_uint32_t index; + fspr_uint32_t index; node = pool->nodes; @@ -1808,9 +1808,9 @@ static int pool_num_bytes(apr_pool_t *pool, void *data) return 0; } -APR_DECLARE(apr_size_t) apr_pool_num_bytes(apr_pool_t *pool, int recurse) +APR_DECLARE(fspr_size_t) fspr_pool_num_bytes(fspr_pool_t *pool, int recurse) { - apr_size_t size = 0; + fspr_size_t size = 0; if (!recurse) { pool_num_bytes(pool, &size); @@ -1818,12 +1818,12 @@ APR_DECLARE(apr_size_t) apr_pool_num_bytes(apr_pool_t *pool, int recurse) return size; } - apr_pool_walk_tree(pool, pool_num_bytes, &size); + fspr_pool_walk_tree(pool, pool_num_bytes, &size); return size; } -APR_DECLARE(void) apr_pool_lock(apr_pool_t *pool, int flag) +APR_DECLARE(void) fspr_pool_lock(fspr_pool_t *pool, int flag) { } @@ -1832,12 +1832,12 @@ APR_DECLARE(void) apr_pool_lock(apr_pool_t *pool, int flag) #ifdef NETWARE void netware_pool_proc_cleanup () { - apr_pool_t *pool = global_pool->child; - apr_os_proc_t owner_proc = (apr_os_proc_t)getnlmhandle(); + fspr_pool_t *pool = global_pool->child; + fspr_os_proc_t owner_proc = (fspr_os_proc_t)getnlmhandle(); while (pool) { if (pool->owner_proc == owner_proc) { - apr_pool_destroy (pool); + fspr_pool_destroy (pool); pool = global_pool->child; } else { @@ -1853,13 +1853,13 @@ void netware_pool_proc_cleanup () * "Print" functions (common) */ -APR_DECLARE_NONSTD(char *) apr_psprintf(apr_pool_t *p, const char *fmt, ...) +APR_DECLARE_NONSTD(char *) fspr_psprintf(fspr_pool_t *p, const char *fmt, ...) { va_list ap; char *res; va_start(ap, fmt); - res = apr_pvsprintf(p, fmt, ap); + res = fspr_pvsprintf(p, fmt, ap); va_end(ap); return res; } @@ -1868,18 +1868,18 @@ APR_DECLARE_NONSTD(char *) apr_psprintf(apr_pool_t *p, const char *fmt, ...) * Pool Properties */ -APR_DECLARE(void) apr_pool_abort_set(apr_abortfunc_t abort_fn, - apr_pool_t *pool) +APR_DECLARE(void) fspr_pool_abort_set(fspr_abortfunc_t abort_fn, + fspr_pool_t *pool) { pool->abort_fn = abort_fn; } -APR_DECLARE(apr_abortfunc_t) apr_pool_abort_get(apr_pool_t *pool) +APR_DECLARE(fspr_abortfunc_t) fspr_pool_abort_get(fspr_pool_t *pool) { return pool->abort_fn; } -APR_DECLARE(apr_pool_t *) apr_pool_parent_get(apr_pool_t *pool) +APR_DECLARE(fspr_pool_t *) fspr_pool_parent_get(fspr_pool_t *pool) { #ifdef NETWARE /* On NetWare, don't return the global_pool, return the application pool @@ -1891,7 +1891,7 @@ APR_DECLARE(apr_pool_t *) apr_pool_parent_get(apr_pool_t *pool) return pool->parent; } -APR_DECLARE(apr_allocator_t *) apr_pool_allocator_get(apr_pool_t *pool) +APR_DECLARE(fspr_allocator_t *) fspr_pool_allocator_get(fspr_pool_t *pool) { return pool->allocator; } @@ -1899,7 +1899,7 @@ APR_DECLARE(apr_allocator_t *) apr_pool_allocator_get(apr_pool_t *pool) /* return TRUE if a is an ancestor of b * NULL is considered an ancestor of all pools */ -APR_DECLARE(int) apr_pool_is_ancestor(apr_pool_t *a, apr_pool_t *b) +APR_DECLARE(int) fspr_pool_is_ancestor(fspr_pool_t *a, fspr_pool_t *b) { if (a == NULL) return 1; @@ -1922,7 +1922,7 @@ APR_DECLARE(int) apr_pool_is_ancestor(apr_pool_t *a, apr_pool_t *b) return 0; } -APR_DECLARE(const char *) apr_pool_tag(apr_pool_t *pool, const char *tag) +APR_DECLARE(const char *) fspr_pool_tag(fspr_pool_t *pool, const char *tag) { if (tag) { pool->tag = tag; @@ -1936,63 +1936,63 @@ APR_DECLARE(const char *) apr_pool_tag(apr_pool_t *pool, const char *tag) * User data management */ -APR_DECLARE(apr_status_t) apr_pool_userdata_set(const void *data, const char *key, - apr_status_t (*cleanup) (void *), - apr_pool_t *pool) +APR_DECLARE(fspr_status_t) fspr_pool_userdata_set(const void *data, const char *key, + fspr_status_t (*cleanup) (void *), + fspr_pool_t *pool) { #if APR_POOL_DEBUG - apr_pool_check_integrity(pool); + fspr_pool_check_integrity(pool); #endif /* APR_POOL_DEBUG */ if (pool->user_data == NULL) - pool->user_data = apr_hash_make(pool); + pool->user_data = fspr_hash_make(pool); - if (apr_hash_get(pool->user_data, key, APR_HASH_KEY_STRING) == NULL) { - char *new_key = apr_pstrdup(pool, key); - apr_hash_set(pool->user_data, new_key, APR_HASH_KEY_STRING, data); + if (fspr_hash_get(pool->user_data, key, APR_HASH_KEY_STRING) == NULL) { + char *new_key = fspr_pstrdup(pool, key); + fspr_hash_set(pool->user_data, new_key, APR_HASH_KEY_STRING, data); } else { - apr_hash_set(pool->user_data, key, APR_HASH_KEY_STRING, data); + fspr_hash_set(pool->user_data, key, APR_HASH_KEY_STRING, data); } if (cleanup) - apr_pool_cleanup_register(pool, data, cleanup, cleanup); + fspr_pool_cleanup_register(pool, data, cleanup, cleanup); return APR_SUCCESS; } -APR_DECLARE(apr_status_t) apr_pool_userdata_setn(const void *data, +APR_DECLARE(fspr_status_t) fspr_pool_userdata_setn(const void *data, const char *key, - apr_status_t (*cleanup)(void *), - apr_pool_t *pool) + fspr_status_t (*cleanup)(void *), + fspr_pool_t *pool) { #if APR_POOL_DEBUG - apr_pool_check_integrity(pool); + fspr_pool_check_integrity(pool); #endif /* APR_POOL_DEBUG */ if (pool->user_data == NULL) - pool->user_data = apr_hash_make(pool); + pool->user_data = fspr_hash_make(pool); - apr_hash_set(pool->user_data, key, APR_HASH_KEY_STRING, data); + fspr_hash_set(pool->user_data, key, APR_HASH_KEY_STRING, data); if (cleanup) - apr_pool_cleanup_register(pool, data, cleanup, cleanup); + fspr_pool_cleanup_register(pool, data, cleanup, cleanup); return APR_SUCCESS; } -APR_DECLARE(apr_status_t) apr_pool_userdata_get(void **data, const char *key, - apr_pool_t *pool) +APR_DECLARE(fspr_status_t) fspr_pool_userdata_get(void **data, const char *key, + fspr_pool_t *pool) { #if APR_POOL_DEBUG - apr_pool_check_integrity(pool); + fspr_pool_check_integrity(pool); #endif /* APR_POOL_DEBUG */ if (pool->user_data == NULL) { *data = NULL; } else { - *data = apr_hash_get(pool->user_data, key, APR_HASH_KEY_STRING); + *data = fspr_hash_get(pool->user_data, key, APR_HASH_KEY_STRING); } return APR_SUCCESS; @@ -2006,18 +2006,18 @@ APR_DECLARE(apr_status_t) apr_pool_userdata_get(void **data, const char *key, struct cleanup_t { struct cleanup_t *next; const void *data; - apr_status_t (*plain_cleanup_fn)(void *data); - apr_status_t (*child_cleanup_fn)(void *data); + fspr_status_t (*plain_cleanup_fn)(void *data); + fspr_status_t (*child_cleanup_fn)(void *data); }; -APR_DECLARE(void) apr_pool_cleanup_register(apr_pool_t *p, const void *data, - apr_status_t (*plain_cleanup_fn)(void *data), - apr_status_t (*child_cleanup_fn)(void *data)) +APR_DECLARE(void) fspr_pool_cleanup_register(fspr_pool_t *p, const void *data, + fspr_status_t (*plain_cleanup_fn)(void *data), + fspr_status_t (*child_cleanup_fn)(void *data)) { cleanup_t *c; #if APR_POOL_DEBUG - apr_pool_check_integrity(p); + fspr_pool_check_integrity(p); #endif /* APR_POOL_DEBUG */ if (p != NULL) { @@ -2026,7 +2026,7 @@ APR_DECLARE(void) apr_pool_cleanup_register(apr_pool_t *p, const void *data, c = p->free_cleanups; p->free_cleanups = c->next; } else { - c = apr_palloc(p, sizeof(cleanup_t)); + c = fspr_palloc(p, sizeof(cleanup_t)); } c->data = data; c->plain_cleanup_fn = plain_cleanup_fn; @@ -2036,13 +2036,13 @@ APR_DECLARE(void) apr_pool_cleanup_register(apr_pool_t *p, const void *data, } } -APR_DECLARE(void) apr_pool_cleanup_kill(apr_pool_t *p, const void *data, - apr_status_t (*cleanup_fn)(void *)) +APR_DECLARE(void) fspr_pool_cleanup_kill(fspr_pool_t *p, const void *data, + fspr_status_t (*cleanup_fn)(void *)) { cleanup_t *c, **lastp; #if APR_POOL_DEBUG - apr_pool_check_integrity(p); + fspr_pool_check_integrity(p); #endif /* APR_POOL_DEBUG */ if (p == NULL) @@ -2069,14 +2069,14 @@ APR_DECLARE(void) apr_pool_cleanup_kill(apr_pool_t *p, const void *data, } } -APR_DECLARE(void) apr_pool_child_cleanup_set(apr_pool_t *p, const void *data, - apr_status_t (*plain_cleanup_fn)(void *), - apr_status_t (*child_cleanup_fn)(void *)) +APR_DECLARE(void) fspr_pool_child_cleanup_set(fspr_pool_t *p, const void *data, + fspr_status_t (*plain_cleanup_fn)(void *), + fspr_status_t (*child_cleanup_fn)(void *)) { cleanup_t *c; #if APR_POOL_DEBUG - apr_pool_check_integrity(p); + fspr_pool_check_integrity(p); #endif /* APR_POOL_DEBUG */ if (p == NULL) @@ -2093,10 +2093,10 @@ APR_DECLARE(void) apr_pool_child_cleanup_set(apr_pool_t *p, const void *data, } } -APR_DECLARE(apr_status_t) apr_pool_cleanup_run(apr_pool_t *p, void *data, - apr_status_t (*cleanup_fn)(void *)) +APR_DECLARE(fspr_status_t) fspr_pool_cleanup_run(fspr_pool_t *p, void *data, + fspr_status_t (*cleanup_fn)(void *)) { - apr_pool_cleanup_kill(p, data, cleanup_fn); + fspr_pool_cleanup_kill(p, data, cleanup_fn); return (*cleanup_fn)(data); } @@ -2122,7 +2122,7 @@ static void run_child_cleanups(cleanup_t **cref) } } -static void cleanup_pool_for_exec(apr_pool_t *p) +static void cleanup_pool_for_exec(fspr_pool_t *p) { run_child_cleanups(&p->cleanups); @@ -2130,7 +2130,7 @@ static void cleanup_pool_for_exec(apr_pool_t *p) cleanup_pool_for_exec(p); } -APR_DECLARE(void) apr_pool_cleanup_for_exec(void) +APR_DECLARE(void) fspr_pool_cleanup_for_exec(void) { #if !defined(WIN32) && !defined(OS2) /* @@ -2146,7 +2146,7 @@ APR_DECLARE(void) apr_pool_cleanup_for_exec(void) #endif /* !defined(WIN32) && !defined(OS2) */ } -APR_DECLARE_NONSTD(apr_status_t) apr_pool_cleanup_null(void *data) +APR_DECLARE_NONSTD(fspr_status_t) fspr_pool_cleanup_null(void *data) { /* do nothing cleanup routine */ return APR_SUCCESS; @@ -2159,10 +2159,10 @@ APR_DECLARE_NONSTD(apr_status_t) apr_pool_cleanup_null(void *data) * we might want to fold support for that into the generic interface. * For now, it's a special case. */ -APR_DECLARE(void) apr_pool_note_subprocess(apr_pool_t *pool, apr_proc_t *proc, - apr_kill_conditions_e how) +APR_DECLARE(void) fspr_pool_note_subprocess(fspr_pool_t *pool, fspr_proc_t *proc, + fspr_kill_conditions_e how) { - struct process_chain *pc = apr_palloc(pool, sizeof(struct process_chain)); + struct process_chain *pc = fspr_palloc(pool, sizeof(struct process_chain)); pc->proc = proc; pc->kill_how = how; @@ -2178,7 +2178,7 @@ static void free_proc_chain(struct process_chain *procs) */ struct process_chain *pc; int need_timeout = 0; - apr_time_t timeout_interval; + fspr_time_t timeout_interval; if (!procs) return; /* No work. Whew! */ @@ -2193,7 +2193,7 @@ static void free_proc_chain(struct process_chain *procs) #ifndef NEED_WAITPID /* Pick up all defunct processes */ for (pc = procs; pc; pc = pc->next) { - if (apr_proc_wait(pc->proc, NULL, NULL, APR_NOWAIT) != APR_CHILD_NOTDONE) + if (fspr_proc_wait(pc->proc, NULL, NULL, APR_NOWAIT) != APR_CHILD_NOTDONE) pc->kill_how = APR_KILL_NEVER; } #endif /* !defined(NEED_WAITPID) */ @@ -2204,11 +2204,11 @@ static void free_proc_chain(struct process_chain *procs) || (pc->kill_how == APR_KILL_ONLY_ONCE)) { /* * Subprocess may be dead already. Only need the timeout if not. - * Note: apr_proc_kill on Windows is TerminateProcess(), which is + * Note: fspr_proc_kill on Windows is TerminateProcess(), which is * similar to a SIGKILL, so always give the process a timeout * under Windows before killing it. */ - if (apr_proc_kill(pc->proc, SIGTERM) == APR_SUCCESS) + if (fspr_proc_kill(pc->proc, SIGTERM) == APR_SUCCESS) need_timeout = 1; } else if (pc->kill_how == APR_KILL_ALWAYS) { @@ -2217,7 +2217,7 @@ static void free_proc_chain(struct process_chain *procs) need_timeout = 1; pc->kill_how = APR_KILL_ALWAYS; #endif - apr_proc_kill(pc->proc, SIGKILL); + fspr_proc_kill(pc->proc, SIGKILL); } } @@ -2227,14 +2227,14 @@ static void free_proc_chain(struct process_chain *procs) */ if (need_timeout) { timeout_interval = TIMEOUT_INTERVAL; - apr_sleep(timeout_interval); + fspr_sleep(timeout_interval); do { /* check the status of the subprocesses */ need_timeout = 0; for (pc = procs; pc; pc = pc->next) { if (pc->kill_how == APR_KILL_AFTER_TIMEOUT) { - if (apr_proc_wait(pc->proc, NULL, NULL, APR_NOWAIT) + if (fspr_proc_wait(pc->proc, NULL, NULL, APR_NOWAIT) == APR_CHILD_NOTDONE) need_timeout = 1; /* subprocess is still active */ else @@ -2245,7 +2245,7 @@ static void free_proc_chain(struct process_chain *procs) if (timeout_interval >= TIMEOUT_USECS) { break; } - apr_sleep(timeout_interval); + fspr_sleep(timeout_interval); timeout_interval *= 2; } } while (need_timeout); @@ -2257,13 +2257,13 @@ static void free_proc_chain(struct process_chain *procs) */ for (pc = procs; pc; pc = pc->next) { if (pc->kill_how == APR_KILL_AFTER_TIMEOUT) - apr_proc_kill(pc->proc, SIGKILL); + fspr_proc_kill(pc->proc, SIGKILL); } /* Now wait for all the signaled processes to die */ for (pc = procs; pc; pc = pc->next) { if (pc->kill_how != APR_KILL_NEVER) - (void)apr_proc_wait(pc->proc, NULL, NULL, APR_WAIT); + (void)fspr_proc_wait(pc->proc, NULL, NULL, APR_WAIT); } } @@ -2274,85 +2274,85 @@ static void free_proc_chain(struct process_chain *procs) */ #if !APR_POOL_DEBUG -APR_DECLARE(void *) apr_palloc_debug(apr_pool_t *pool, apr_size_t size, +APR_DECLARE(void *) fspr_palloc_debug(fspr_pool_t *pool, fspr_size_t size, const char *file_line) { - return apr_palloc(pool, size); + return fspr_palloc(pool, size); } -APR_DECLARE(void *) apr_pcalloc_debug(apr_pool_t *pool, apr_size_t size, +APR_DECLARE(void *) fspr_pcalloc_debug(fspr_pool_t *pool, fspr_size_t size, const char *file_line) { - return apr_pcalloc(pool, size); + return fspr_pcalloc(pool, size); } -APR_DECLARE(void) apr_pool_clear_debug(apr_pool_t *pool, +APR_DECLARE(void) fspr_pool_clear_debug(fspr_pool_t *pool, const char *file_line) { - apr_pool_clear(pool); + fspr_pool_clear(pool); } -APR_DECLARE(void) apr_pool_destroy_debug(apr_pool_t *pool, +APR_DECLARE(void) fspr_pool_destroy_debug(fspr_pool_t *pool, const char *file_line) { - apr_pool_destroy(pool); + fspr_pool_destroy(pool); } -APR_DECLARE(apr_status_t) apr_pool_create_ex_debug(apr_pool_t **newpool, - apr_pool_t *parent, - apr_abortfunc_t abort_fn, - apr_allocator_t *allocator, +APR_DECLARE(fspr_status_t) fspr_pool_create_ex_debug(fspr_pool_t **newpool, + fspr_pool_t *parent, + fspr_abortfunc_t abort_fn, + fspr_allocator_t *allocator, const char *file_line) { - return apr_pool_create_ex(newpool, parent, abort_fn, allocator); + return fspr_pool_create_ex(newpool, parent, abort_fn, allocator); } #else /* APR_POOL_DEBUG */ -#undef apr_palloc -APR_DECLARE(void *) apr_palloc(apr_pool_t *pool, apr_size_t size); +#undef fspr_palloc +APR_DECLARE(void *) fspr_palloc(fspr_pool_t *pool, fspr_size_t size); -APR_DECLARE(void *) apr_palloc(apr_pool_t *pool, apr_size_t size) +APR_DECLARE(void *) fspr_palloc(fspr_pool_t *pool, fspr_size_t size) { - return apr_palloc_debug(pool, size, "undefined"); + return fspr_palloc_debug(pool, size, "undefined"); } -#undef apr_pcalloc -APR_DECLARE(void *) apr_pcalloc(apr_pool_t *pool, apr_size_t size); +#undef fspr_pcalloc +APR_DECLARE(void *) fspr_pcalloc(fspr_pool_t *pool, fspr_size_t size); -APR_DECLARE(void *) apr_pcalloc(apr_pool_t *pool, apr_size_t size) +APR_DECLARE(void *) fspr_pcalloc(fspr_pool_t *pool, fspr_size_t size) { - return apr_pcalloc_debug(pool, size, "undefined"); + return fspr_pcalloc_debug(pool, size, "undefined"); } -#undef apr_pool_clear -APR_DECLARE(void) apr_pool_clear(apr_pool_t *pool); +#undef fspr_pool_clear +APR_DECLARE(void) fspr_pool_clear(fspr_pool_t *pool); -APR_DECLARE(void) apr_pool_clear(apr_pool_t *pool) +APR_DECLARE(void) fspr_pool_clear(fspr_pool_t *pool) { - apr_pool_clear_debug(pool, "undefined"); + fspr_pool_clear_debug(pool, "undefined"); } -#undef apr_pool_destroy -APR_DECLARE(void) apr_pool_destroy(apr_pool_t *pool); +#undef fspr_pool_destroy +APR_DECLARE(void) fspr_pool_destroy(fspr_pool_t *pool); -APR_DECLARE(void) apr_pool_destroy(apr_pool_t *pool) +APR_DECLARE(void) fspr_pool_destroy(fspr_pool_t *pool) { - apr_pool_destroy_debug(pool, "undefined"); + fspr_pool_destroy_debug(pool, "undefined"); } -#undef apr_pool_create_ex -APR_DECLARE(apr_status_t) apr_pool_create_ex(apr_pool_t **newpool, - apr_pool_t *parent, - apr_abortfunc_t abort_fn, - apr_allocator_t *allocator); +#undef fspr_pool_create_ex +APR_DECLARE(fspr_status_t) fspr_pool_create_ex(fspr_pool_t **newpool, + fspr_pool_t *parent, + fspr_abortfunc_t abort_fn, + fspr_allocator_t *allocator); -APR_DECLARE(apr_status_t) apr_pool_create_ex(apr_pool_t **newpool, - apr_pool_t *parent, - apr_abortfunc_t abort_fn, - apr_allocator_t *allocator) +APR_DECLARE(fspr_status_t) fspr_pool_create_ex(fspr_pool_t **newpool, + fspr_pool_t *parent, + fspr_abortfunc_t abort_fn, + fspr_allocator_t *allocator) { - return apr_pool_create_ex_debug(newpool, parent, + return fspr_pool_create_ex_debug(newpool, parent, abort_fn, allocator, "undefined"); } diff --git a/libs/apr/misc/netware/charset.c b/libs/apr/misc/netware/charset.c index b79add10b55..f8f376d86b7 100644 --- a/libs/apr/misc/netware/charset.c +++ b/libs/apr/misc/netware/charset.c @@ -14,21 +14,21 @@ * limitations under the License. */ -#include "apr.h" -#include "apr_strings.h" -#include "apr_portable.h" +#include "fspr.h" +#include "fspr_strings.h" +#include "fspr_portable.h" /* static struct utsname sysinfo; */ /* XXX This needs to be fixed to produce the correct system language */ -APR_DECLARE(const char*) apr_os_default_encoding (apr_pool_t *pool) +APR_DECLARE(const char*) fspr_os_default_encoding (fspr_pool_t *pool) { - return apr_pstrdup(pool, "CP1252"); + return fspr_pstrdup(pool, "CP1252"); } -APR_DECLARE(const char*) apr_os_locale_encoding (apr_pool_t *pool) +APR_DECLARE(const char*) fspr_os_locale_encoding (fspr_pool_t *pool) { - return apr_os_default_encoding(pool); + return fspr_os_default_encoding(pool); } diff --git a/libs/apr/misc/netware/libprews.c b/libs/apr/misc/netware/libprews.c index 624bf22cfa4..11fec7e7bcb 100644 --- a/libs/apr/misc/netware/libprews.c +++ b/libs/apr/misc/netware/libprews.c @@ -20,8 +20,8 @@ #include "novsock2.h" #endif -#include "apr_pools.h" -#include "apr_private.h" +#include "fspr_pools.h" +#include "fspr_private.h" /* library-private data...*/ @@ -51,7 +51,7 @@ int _NonAppStart #ifdef USE_WINSOCK WSADATA wsaData; #endif - apr_status_t status; + fspr_status_t status; NX_LOCK_INFO_ALLOC(liblock, "Per-Application Data Lock", 0); @@ -83,9 +83,9 @@ int _NonAppStart return -1; } - apr_netware_setup_time(); + fspr_netware_setup_time(); - if ((status = apr_pool_initialize()) != APR_SUCCESS) + if ((status = fspr_pool_initialize()) != APR_SUCCESS) return status; #ifdef USE_WINSOCK @@ -97,7 +97,7 @@ int _NonAppStart void _NonAppStop( void ) { - apr_pool_terminate(); + fspr_pool_terminate(); #ifdef USE_WINSOCK WSACleanup(); diff --git a/libs/apr/misc/netware/rand.c b/libs/apr/misc/netware/rand.c index a2baae7ecd3..f9bee2153a9 100644 --- a/libs/apr/misc/netware/rand.c +++ b/libs/apr/misc/netware/rand.c @@ -15,9 +15,9 @@ */ #define APR_WANT_MEMFUNC -#include "apr_want.h" -#include "apr_general.h" -#include "apr_private.h" +#include "fspr_want.h" +#include "fspr_general.h" +#include "fspr_private.h" #if APR_HAS_RANDOM @@ -56,8 +56,8 @@ static int NXSeedRandomInternal( size_t width, void *seed ) return APR_SUCCESS; } -APR_DECLARE(apr_status_t) apr_generate_random_bytes(unsigned char *buf, - apr_size_t length) +APR_DECLARE(fspr_status_t) fspr_generate_random_bytes(unsigned char *buf, + fspr_size_t length) { if (NXSeedRandom(length, buf) != 0) { return NXSeedRandomInternal (length, buf); diff --git a/libs/apr/misc/netware/start.c b/libs/apr/misc/netware/start.c index c8ccc1c1c49..7636b2beea2 100644 --- a/libs/apr/misc/netware/start.c +++ b/libs/apr/misc/netware/start.c @@ -14,14 +14,14 @@ * limitations under the License. */ -#include "apr.h" -#include "apr_general.h" -#include "apr_pools.h" -#include "apr_signal.h" +#include "fspr.h" +#include "fspr_general.h" +#include "fspr_pools.h" +#include "fspr_signal.h" -#include "apr_arch_misc.h" /* for WSAHighByte / WSALowByte */ -#include "apr_arch_proc_mutex.h" /* for apr_proc_mutex_unix_setup_lock() */ -#include "apr_arch_internal_time.h" +#include "fspr_arch_misc.h" /* for WSAHighByte / WSALowByte */ +#include "fspr_arch_proc_mutex.h" /* for fspr_proc_mutex_unix_setup_lock() */ +#include "fspr_arch_internal_time.h" #ifdef USE_WINSOCK /* @@ -108,7 +108,7 @@ static int RegisterAppWithWinSock (void *nlm_handle) -APR_DECLARE(apr_status_t) apr_app_initialize(int *argc, +APR_DECLARE(fspr_status_t) fspr_app_initialize(int *argc, const char * const * *argv, const char * const * *env) { @@ -117,12 +117,12 @@ APR_DECLARE(apr_status_t) apr_app_initialize(int *argc, * control manager into the process, and it's required to fix the char* * data passed in from win32 unicode into utf-8, win32's apr internal fmt. */ - return apr_initialize(); + return fspr_initialize(); } -APR_DECLARE(apr_status_t) apr_initialize(void) +APR_DECLARE(fspr_status_t) fspr_initialize(void) { - apr_pool_t *pool; + fspr_pool_t *pool; int err; void *nlmhandle = getnlmhandle(); @@ -132,15 +132,15 @@ APR_DECLARE(apr_status_t) apr_initialize(void) return APR_SUCCESS; } - /* apr_pool_initialize() is being called from the library + /* fspr_pool_initialize() is being called from the library startup code since all of the memory resources belong to the library rather than the application. */ - if (apr_pool_create(&pool, NULL) != APR_SUCCESS) { + if (fspr_pool_create(&pool, NULL) != APR_SUCCESS) { return APR_ENOPOOL; } - apr_pool_tag(pool, "apr_initilialize"); + fspr_pool_tag(pool, "fspr_initilialize"); #ifdef USE_WINSOCK err = RegisterAppWithWinSock (nlmhandle); @@ -150,12 +150,12 @@ APR_DECLARE(apr_status_t) apr_initialize(void) } #endif - apr_signal_init(pool); + fspr_signal_init(pool); return APR_SUCCESS; } -APR_DECLARE_NONSTD(void) apr_terminate(void) +APR_DECLARE_NONSTD(void) fspr_terminate(void) { APP_DATA *app_data; @@ -169,7 +169,7 @@ APR_DECLARE_NONSTD(void) apr_terminate(void) return; } - /* apr_pool_terminate() is being called from the + /* fspr_pool_terminate() is being called from the library shutdown code since the memory resources belong to the library rather than the application */ @@ -182,7 +182,7 @@ APR_DECLARE_NONSTD(void) apr_terminate(void) #endif } -APR_DECLARE(void) apr_terminate2(void) +APR_DECLARE(void) fspr_terminate2(void) { - apr_terminate(); + fspr_terminate(); } diff --git a/libs/apr/misc/unix/charset.c b/libs/apr/misc/unix/charset.c index a66724d7201..02991a7d78f 100644 --- a/libs/apr/misc/unix/charset.c +++ b/libs/apr/misc/unix/charset.c @@ -14,10 +14,10 @@ * limitations under the License. */ -#include "apr.h" -#include "apr_private.h" -#include "apr_strings.h" -#include "apr_portable.h" +#include "fspr.h" +#include "fspr_private.h" +#include "fspr_strings.h" +#include "fspr_portable.h" #ifdef HAVE_LANGINFO_H #include @@ -33,7 +33,7 @@ * unpacked. */ -APR_DECLARE(const char*) apr_os_default_encoding (apr_pool_t *pool) +APR_DECLARE(const char*) fspr_os_default_encoding (fspr_pool_t *pool) { #ifdef __MVS__ # ifdef __CODESET__ @@ -63,7 +63,7 @@ APR_DECLARE(const char*) apr_os_default_encoding (apr_pool_t *pool) } -APR_DECLARE(const char*) apr_os_locale_encoding (apr_pool_t *pool) +APR_DECLARE(const char*) fspr_os_locale_encoding (fspr_pool_t *pool) { #if defined(HAVE_NL_LANGINFO) && defined(CODESET) const char *charset; @@ -72,12 +72,12 @@ APR_DECLARE(const char*) apr_os_locale_encoding (apr_pool_t *pool) if (charset && *charset) { #ifdef _OSD_POSIX /* Bug workaround - delete as soon as fixed in OSD_POSIX */ /* Some versions of OSD_POSIX return nl_langinfo(CODESET)="^[nN]" */ - /* Ignore the bogus information and use apr_os_default_encoding() */ + /* Ignore the bogus information and use fspr_os_default_encoding() */ if (charset[0] != '^') #endif return charset; } #endif - return apr_os_default_encoding(pool); + return fspr_os_default_encoding(pool); } diff --git a/libs/apr/misc/unix/env.c b/libs/apr/misc/unix/env.c index 9ba6b61e783..37b64f107dd 100644 --- a/libs/apr/misc/unix/env.c +++ b/libs/apr/misc/unix/env.c @@ -15,10 +15,10 @@ */ #define APR_WANT_STRFUNC -#include "apr_want.h" -#include "apr.h" -#include "apr_private.h" -#include "apr_env.h" +#include "fspr_want.h" +#include "fspr.h" +#include "fspr_private.h" +#include "fspr_env.h" #if APR_HAVE_UNISTD_H #include @@ -27,9 +27,9 @@ #include #endif -APR_DECLARE(apr_status_t) apr_env_get(char **value, +APR_DECLARE(fspr_status_t) fspr_env_get(char **value, const char *envvar, - apr_pool_t *pool) + fspr_pool_t *pool) { #ifdef HAVE_GETENV @@ -45,9 +45,9 @@ APR_DECLARE(apr_status_t) apr_env_get(char **value, } -APR_DECLARE(apr_status_t) apr_env_set(const char *envvar, +APR_DECLARE(fspr_status_t) fspr_env_set(const char *envvar, const char *value, - apr_pool_t *pool) + fspr_pool_t *pool) { #if defined(HAVE_SETENV) @@ -57,9 +57,9 @@ APR_DECLARE(apr_status_t) apr_env_set(const char *envvar, #elif defined(HAVE_PUTENV) - apr_size_t elen = strlen(envvar); - apr_size_t vlen = strlen(value); - char *env = apr_palloc(pool, elen + vlen + 2); + fspr_size_t elen = strlen(envvar); + fspr_size_t vlen = strlen(value); + char *env = fspr_palloc(pool, elen + vlen + 2); char *p = env + elen; memcpy(env, envvar, elen); @@ -77,7 +77,7 @@ APR_DECLARE(apr_status_t) apr_env_set(const char *envvar, } -APR_DECLARE(apr_status_t) apr_env_delete(const char *envvar, apr_pool_t *pool) +APR_DECLARE(fspr_status_t) fspr_env_delete(const char *envvar, fspr_pool_t *pool) { #ifdef HAVE_UNSETENV diff --git a/libs/apr/misc/unix/errorcodes.c b/libs/apr/misc/unix/errorcodes.c index e953d109279..3be0b25b93c 100644 --- a/libs/apr/misc/unix/errorcodes.c +++ b/libs/apr/misc/unix/errorcodes.c @@ -14,10 +14,10 @@ * limitations under the License. */ -#include "apr_arch_misc.h" -#include "apr_strings.h" -#include "apr_lib.h" -#include "apr_dso.h" +#include "fspr_arch_misc.h" +#include "fspr_strings.h" +#include "fspr_lib.h" +#include "fspr_dso.h" #if APR_HAVE_NETDB_H #include @@ -27,16 +27,16 @@ #endif /* - * stuffbuffer - like apr_cpystrn() but returns the address of the + * stuffbuffer - like fspr_cpystrn() but returns the address of the * dest buffer instead of the address of the terminating '\0' */ -static char *stuffbuffer(char *buf, apr_size_t bufsize, const char *s) +static char *stuffbuffer(char *buf, fspr_size_t bufsize, const char *s) { - apr_cpystrn(buf,s,bufsize); + fspr_cpystrn(buf,s,bufsize); return buf; } -static char *apr_error_string(apr_status_t statcode) +static char *fspr_error_string(fspr_status_t statcode) { switch (statcode) { case APR_ENOPOOL: @@ -141,9 +141,9 @@ static char *apr_error_string(apr_status_t statcode) #ifdef OS2 #include -int apr_canonical_error(apr_status_t err); +int fspr_canonical_error(fspr_status_t err); -static char *apr_os_strerror(char* buf, apr_size_t bufsize, int err) +static char *fspr_os_strerror(char* buf, fspr_size_t bufsize, int err) { char result[200]; unsigned char message[HUGE_STRING_LEN]; @@ -153,7 +153,7 @@ static char *apr_os_strerror(char* buf, apr_size_t bufsize, int err) if (err >= 10000 && err < 12000) { /* socket error codes */ return stuffbuffer(buf, bufsize, - strerror(apr_canonical_error(err+APR_OS_START_SYSERR))); + strerror(fspr_canonical_error(err+APR_OS_START_SYSERR))); } else if (DosGetMessage(NULL, 0, message, HUGE_STRING_LEN, err, "OSO001.MSG", &len) == 0) { @@ -166,9 +166,9 @@ static char *apr_os_strerror(char* buf, apr_size_t bufsize, int err) for (c=0; ccont = cont; (*os)->reset = 0; - (*os)->errfn = (apr_getopt_err_fn_t*)(fprintf); + (*os)->errfn = (fspr_getopt_err_fn_t*)(fprintf); (*os)->errarg = (void*)(stderr); (*os)->place = EMSG; @@ -55,7 +55,7 @@ APR_DECLARE(apr_status_t) apr_getopt_init(apr_getopt_t **os, apr_pool_t *cont, that's the primary purpose of this function. But people might want to use this function with arrays other than the main argv, and we shouldn't touch the caller's data. So we copy. */ - argv_buff = apr_palloc(cont, (argc + 1) * sizeof(const char *)); + argv_buff = fspr_palloc(cont, (argc + 1) * sizeof(const char *)); memcpy(argv_buff, argv, argc * sizeof(const char *)); (*os)->argv = argv_buff; (*os)->argv[argc] = NULL; @@ -68,7 +68,7 @@ APR_DECLARE(apr_status_t) apr_getopt_init(apr_getopt_t **os, apr_pool_t *cont, return APR_SUCCESS; } -APR_DECLARE(apr_status_t) apr_getopt(apr_getopt_t *os, const char *opts, +APR_DECLARE(fspr_status_t) fspr_getopt(fspr_getopt_t *os, const char *opts, char *optch, const char **optarg) { const char *oli; /* option letter list index */ @@ -101,7 +101,7 @@ APR_DECLARE(apr_status_t) apr_getopt(apr_getopt_t *os, const char *opts, ++os->ind; if (os->errfn && *opts != ':') { (os->errfn)(os->errarg, "%s: illegal option -- %c\n", - apr_filepath_name_get(*os->argv), os->opt); + fspr_filepath_name_get(*os->argv), os->opt); } *optch = os->opt; return (APR_BADCH); @@ -123,7 +123,7 @@ APR_DECLARE(apr_status_t) apr_getopt(apr_getopt_t *os, const char *opts, if (os->errfn) { (os->errfn)(os->errarg, "%s: option requires an argument -- %c\n", - apr_filepath_name_get(*os->argv), os->opt); + fspr_filepath_name_get(*os->argv), os->opt); } *optch = os->opt; return (APR_BADCH); @@ -155,7 +155,7 @@ static void reverse(const char **argv, int start, int len) * non-option arguments, os->skip_end is where we stopped, and os->ind * is where we are now. */ -static void permute(apr_getopt_t *os) +static void permute(fspr_getopt_t *os) { int len1 = os->skip_end - os->skip_start; int len2 = os->ind - os->skip_end; @@ -178,27 +178,27 @@ static void permute(apr_getopt_t *os) } /* Helper function to print out an error involving a long option */ -static apr_status_t serr(apr_getopt_t *os, const char *err, const char *str, - apr_status_t status) +static fspr_status_t serr(fspr_getopt_t *os, const char *err, const char *str, + fspr_status_t status) { if (os->errfn) (os->errfn)(os->errarg, "%s: %s: %s\n", - apr_filepath_name_get(*os->argv), err, str); + fspr_filepath_name_get(*os->argv), err, str); return status; } /* Helper function to print out an error involving a short option */ -static apr_status_t cerr(apr_getopt_t *os, const char *err, int ch, - apr_status_t status) +static fspr_status_t cerr(fspr_getopt_t *os, const char *err, int ch, + fspr_status_t status) { if (os->errfn) (os->errfn)(os->errarg, "%s: %s: %c\n", - apr_filepath_name_get(*os->argv), err, ch); + fspr_filepath_name_get(*os->argv), err, ch); return status; } -APR_DECLARE(apr_status_t) apr_getopt_long(apr_getopt_t *os, - const apr_getopt_option_t *opts, +APR_DECLARE(fspr_status_t) fspr_getopt_long(fspr_getopt_t *os, + const fspr_getopt_option_t *opts, int *optch, const char **optarg) { const char *p; @@ -232,7 +232,7 @@ APR_DECLARE(apr_status_t) apr_getopt_long(apr_getopt_t *os, p = os->argv[os->ind++] + 1; if (*p == '-' && p[1] != '\0') { /* Long option */ /* Search for the long option name in the caller's table. */ - apr_size_t len = 0; + fspr_size_t len = 0; p++; for (i = 0; ; i++) { diff --git a/libs/apr/misc/unix/otherchild.c b/libs/apr/misc/unix/otherchild.c index c97cfdd6446..147ff6b808d 100644 --- a/libs/apr/misc/unix/otherchild.c +++ b/libs/apr/misc/unix/otherchild.c @@ -14,10 +14,10 @@ * limitations under the License. */ -#include "apr.h" -#include "apr_arch_misc.h" -#include "apr_arch_threadproc.h" -#include "apr_arch_file_io.h" +#include "fspr.h" +#include "fspr_arch_misc.h" +#include "fspr_arch_threadproc.h" +#include "fspr_arch_file_io.h" #if APR_HAS_OTHER_CHILD @@ -34,11 +34,11 @@ #include /* for fd_set definition! */ #endif -static apr_other_child_rec_t *other_children = NULL; +static fspr_other_child_rec_t *other_children = NULL; -static apr_status_t other_child_cleanup(void *data) +static fspr_status_t other_child_cleanup(void *data) { - apr_other_child_rec_t **pocr, *nocr; + fspr_other_child_rec_t **pocr, *nocr; for (pocr = &other_children; *pocr; pocr = &(*pocr)->next) { if ((*pocr)->data == data) { @@ -52,24 +52,24 @@ static apr_status_t other_child_cleanup(void *data) return APR_SUCCESS; } -APR_DECLARE(void) apr_proc_other_child_register(apr_proc_t *proc, +APR_DECLARE(void) fspr_proc_other_child_register(fspr_proc_t *proc, void (*maintenance) (int reason, void *, int status), - void *data, apr_file_t *write_fd, apr_pool_t *p) + void *data, fspr_file_t *write_fd, fspr_pool_t *p) { - apr_other_child_rec_t *ocr; + fspr_other_child_rec_t *ocr; - ocr = apr_palloc(p, sizeof(*ocr)); + ocr = fspr_palloc(p, sizeof(*ocr)); ocr->p = p; ocr->proc = proc; ocr->maintenance = maintenance; ocr->data = data; if (write_fd == NULL) { - ocr->write_fd = (apr_os_file_t) -1; + ocr->write_fd = (fspr_os_file_t) -1; } else { #ifdef WIN32 - /* This should either go away as part of eliminating apr_proc_probe_writable_fds - * or write_fd should point to an apr_file_t + /* This should either go away as part of eliminating fspr_proc_probe_writable_fds + * or write_fd should point to an fspr_file_t */ ocr->write_fd = write_fd->filehand; #else @@ -79,13 +79,13 @@ APR_DECLARE(void) apr_proc_other_child_register(apr_proc_t *proc, } ocr->next = other_children; other_children = ocr; - apr_pool_cleanup_register(p, ocr->data, other_child_cleanup, - apr_pool_cleanup_null); + fspr_pool_cleanup_register(p, ocr->data, other_child_cleanup, + fspr_pool_cleanup_null); } -APR_DECLARE(void) apr_proc_other_child_unregister(void *data) +APR_DECLARE(void) fspr_proc_other_child_unregister(void *data) { - apr_other_child_rec_t *cur; + fspr_other_child_rec_t *cur; cur = other_children; while (cur) { @@ -96,15 +96,15 @@ APR_DECLARE(void) apr_proc_other_child_unregister(void *data) } /* segfault if this function called with invalid parm */ - if (cur) apr_pool_cleanup_kill(cur->p, cur->data, other_child_cleanup); + if (cur) fspr_pool_cleanup_kill(cur->p, cur->data, other_child_cleanup); other_child_cleanup(data); } -APR_DECLARE(apr_status_t) apr_proc_other_child_alert(apr_proc_t *proc, +APR_DECLARE(fspr_status_t) fspr_proc_other_child_alert(fspr_proc_t *proc, int reason, int status) { - apr_other_child_rec_t *ocr, *nocr; + fspr_other_child_rec_t *ocr, *nocr; for (ocr = other_children; ocr; ocr = nocr) { nocr = ocr->next; @@ -118,7 +118,7 @@ APR_DECLARE(apr_status_t) apr_proc_other_child_alert(apr_proc_t *proc, return APR_EPROC_UNKNOWN; } -APR_DECLARE(void) apr_proc_other_child_refresh(apr_other_child_rec_t *ocr, +APR_DECLARE(void) fspr_proc_other_child_refresh(fspr_other_child_rec_t *ocr, int reason) { /* Todo: @@ -131,7 +131,7 @@ APR_DECLARE(void) apr_proc_other_child_refresh(apr_other_child_rec_t *ocr, return; if (!ocr->proc->hproc) { - /* Already mopped up, perhaps we apr_proc_kill'ed it, + /* Already mopped up, perhaps we fspr_proc_kill'ed it, * they should have already unregistered! */ ocr->proc = NULL; @@ -176,44 +176,44 @@ APR_DECLARE(void) apr_proc_other_child_refresh(apr_other_child_rec_t *ocr, #endif } -APR_DECLARE(void) apr_proc_other_child_refresh_all(int reason) +APR_DECLARE(void) fspr_proc_other_child_refresh_all(int reason) { - apr_other_child_rec_t *ocr, *next_ocr; + fspr_other_child_rec_t *ocr, *next_ocr; for (ocr = other_children; ocr; ocr = next_ocr) { next_ocr = ocr->next; - apr_proc_other_child_refresh(ocr, reason); + fspr_proc_other_child_refresh(ocr, reason); } } #else /* !APR_HAS_OTHER_CHILD */ -APR_DECLARE(void) apr_proc_other_child_register(apr_proc_t *proc, +APR_DECLARE(void) fspr_proc_other_child_register(fspr_proc_t *proc, void (*maintenance) (int reason, void *, int status), - void *data, apr_file_t *write_fd, apr_pool_t *p) + void *data, fspr_file_t *write_fd, fspr_pool_t *p) { return; } -APR_DECLARE(void) apr_proc_other_child_unregister(void *data) +APR_DECLARE(void) fspr_proc_other_child_unregister(void *data) { return; } -APR_DECLARE(apr_status_t) apr_proc_other_child_alert(apr_proc_t *proc, +APR_DECLARE(fspr_status_t) fspr_proc_other_child_alert(fspr_proc_t *proc, int reason, int status) { return APR_ENOTIMPL; } -APR_DECLARE(void) apr_proc_other_child_refresh(apr_other_child_rec_t *ocr, +APR_DECLARE(void) fspr_proc_other_child_refresh(fspr_other_child_rec_t *ocr, int reason) { return; } -APR_DECLARE(void) apr_proc_other_child_refresh_all(int reason) +APR_DECLARE(void) fspr_proc_other_child_refresh_all(int reason) { return; } diff --git a/libs/apr/misc/unix/rand.c b/libs/apr/misc/unix/rand.c index 7af77eb5afc..d0b5cc12947 100644 --- a/libs/apr/misc/unix/rand.c +++ b/libs/apr/misc/unix/rand.c @@ -15,10 +15,10 @@ */ #define APR_WANT_MEMFUNC -#include "apr_want.h" -#include "apr_general.h" +#include "fspr_want.h" +#include "fspr_general.h" -#include "apr_arch_misc.h" +#include "fspr_arch_misc.h" #include #if APR_HAVE_SYS_TYPES_H #include @@ -51,7 +51,7 @@ #if defined(HAVE_UUID_CREATE) -APR_DECLARE(apr_status_t) apr_os_uuid_get(unsigned char *uuid_data) +APR_DECLARE(fspr_status_t) fspr_os_uuid_get(unsigned char *uuid_data) { uint32_t rv; uuid_t g; @@ -68,7 +68,7 @@ APR_DECLARE(apr_status_t) apr_os_uuid_get(unsigned char *uuid_data) #elif defined(HAVE_UUID_GENERATE) -APR_DECLARE(apr_status_t) apr_os_uuid_get(unsigned char *uuid_data) +APR_DECLARE(fspr_status_t) fspr_os_uuid_get(unsigned char *uuid_data) { uuid_t g; @@ -84,8 +84,8 @@ APR_DECLARE(apr_status_t) apr_os_uuid_get(unsigned char *uuid_data) #if APR_HAS_RANDOM -APR_DECLARE(apr_status_t) apr_generate_random_bytes(unsigned char *buf, - apr_size_t length) +APR_DECLARE(fspr_status_t) fspr_generate_random_bytes(unsigned char *buf, + fspr_size_t length) { #ifdef DEV_RANDOM @@ -95,7 +95,7 @@ APR_DECLARE(apr_status_t) apr_generate_random_bytes(unsigned char *buf, * gives EOF, so reading 'length' bytes may require opening the * device several times. */ do { - apr_ssize_t rc; + fspr_ssize_t rc; if (fd == -1) if ((fd = open(DEV_RANDOM, O_RDONLY)) == -1) @@ -145,8 +145,8 @@ APR_DECLARE(apr_status_t) apr_generate_random_bytes(unsigned char *buf, int egd_socket, egd_path_len, rv, bad_errno; struct sockaddr_un addr; - apr_socklen_t egd_addr_len; - apr_size_t resp_expected; + fspr_socklen_t egd_addr_len; + fspr_size_t resp_expected; unsigned char req[2], resp[255]; unsigned char *curbuf = buf; @@ -178,7 +178,7 @@ APR_DECLARE(apr_status_t) apr_generate_random_bytes(unsigned char *buf, /* EGD can only return 255 bytes of data at a time. Silly. */ while (length > 0) { - apr_ssize_t srv; + fspr_ssize_t srv; req[0] = 2; /* We'll block for now. */ req[1] = length > 255 ? 255: length; diff --git a/libs/apr/misc/unix/start.c b/libs/apr/misc/unix/start.c index 4b8ad990de6..b7b239587c9 100644 --- a/libs/apr/misc/unix/start.c +++ b/libs/apr/misc/unix/start.c @@ -14,17 +14,17 @@ * limitations under the License. */ -#include "apr.h" -#include "apr_general.h" -#include "apr_pools.h" -#include "apr_signal.h" -#include "apr_atomic.h" +#include "fspr.h" +#include "fspr_general.h" +#include "fspr_pools.h" +#include "fspr_signal.h" +#include "fspr_atomic.h" -#include "apr_arch_proc_mutex.h" /* for apr_proc_mutex_unix_setup_lock() */ -#include "apr_arch_internal_time.h" +#include "fspr_arch_proc_mutex.h" /* for fspr_proc_mutex_unix_setup_lock() */ +#include "fspr_arch_internal_time.h" -APR_DECLARE(apr_status_t) apr_app_initialize(int *argc, +APR_DECLARE(fspr_status_t) fspr_app_initialize(int *argc, const char * const * *argv, const char * const * *env) { @@ -33,57 +33,57 @@ APR_DECLARE(apr_status_t) apr_app_initialize(int *argc, * control manager into the process, and it's required to fix the char* * data passed in from win32 unicode into utf-8, win32's apr internal fmt. */ - return apr_initialize(); + return fspr_initialize(); } static int initialized = 0; -APR_DECLARE(apr_status_t) apr_initialize(void) +APR_DECLARE(fspr_status_t) fspr_initialize(void) { - apr_pool_t *pool; - apr_status_t status; + fspr_pool_t *pool; + fspr_status_t status; if (initialized++) { return APR_SUCCESS; } #if !defined(BEOS) && !defined(OS2) - apr_proc_mutex_unix_setup_lock(); - apr_unix_setup_time(); + fspr_proc_mutex_unix_setup_lock(); + fspr_unix_setup_time(); #endif - if ((status = apr_pool_initialize()) != APR_SUCCESS) + if ((status = fspr_pool_initialize()) != APR_SUCCESS) return status; - if (apr_pool_create(&pool, NULL) != APR_SUCCESS) { + if (fspr_pool_create(&pool, NULL) != APR_SUCCESS) { return APR_ENOPOOL; } - apr_pool_tag(pool, "apr_initialize"); + fspr_pool_tag(pool, "fspr_initialize"); - /* apr_atomic_init() used to be called from here aswell. + /* fspr_atomic_init() used to be called from here aswell. * Pools rely on mutexes though, which can be backed by * atomics. Due to this circular dependency - * apr_pool_initialize() is taking care of calling - * apr_atomic_init() at the correct time. + * fspr_pool_initialize() is taking care of calling + * fspr_atomic_init() at the correct time. */ - apr_signal_init(pool); + fspr_signal_init(pool); return APR_SUCCESS; } -APR_DECLARE_NONSTD(void) apr_terminate(void) +APR_DECLARE_NONSTD(void) fspr_terminate(void) { initialized--; if (initialized) { return; } - apr_pool_terminate(); + fspr_pool_terminate(); } -APR_DECLARE(void) apr_terminate2(void) +APR_DECLARE(void) fspr_terminate2(void) { - apr_terminate(); + fspr_terminate(); } diff --git a/libs/apr/misc/unix/version.c b/libs/apr/misc/unix/version.c index 2f111bf9dc0..39fb71c5b3b 100644 --- a/libs/apr/misc/unix/version.c +++ b/libs/apr/misc/unix/version.c @@ -14,10 +14,10 @@ * limitations under the License. */ -#include "apr_version.h" -#include "apr_general.h" /* for APR_STRINGIFY */ +#include "fspr_version.h" +#include "fspr_general.h" /* for APR_STRINGIFY */ -APR_DECLARE(void) apr_version(apr_version_t *pvsn) +APR_DECLARE(void) fspr_version(fspr_version_t *pvsn) { pvsn->major = APR_MAJOR_VERSION; pvsn->minor = APR_MINOR_VERSION; @@ -29,7 +29,7 @@ APR_DECLARE(void) apr_version(apr_version_t *pvsn) #endif } -APR_DECLARE(const char *) apr_version_string(void) +APR_DECLARE(const char *) fspr_version_string(void) { return APR_VERSION_STRING; } diff --git a/libs/apr/misc/win32/charset.c b/libs/apr/misc/win32/charset.c index d54d6e645c7..041b60bd09d 100644 --- a/libs/apr/misc/win32/charset.c +++ b/libs/apr/misc/win32/charset.c @@ -14,22 +14,22 @@ * limitations under the License. */ -#include "apr.h" -#include "apr_strings.h" -#include "apr_portable.h" +#include "fspr.h" +#include "fspr_strings.h" +#include "fspr_portable.h" -APR_DECLARE(const char*) apr_os_default_encoding (apr_pool_t *pool) +APR_DECLARE(const char*) fspr_os_default_encoding (fspr_pool_t *pool) { - return apr_psprintf(pool, "CP%u", (unsigned) GetACP()); + return fspr_psprintf(pool, "CP%u", (unsigned) GetACP()); } -APR_DECLARE(const char*) apr_os_locale_encoding (apr_pool_t *pool) +APR_DECLARE(const char*) fspr_os_locale_encoding (fspr_pool_t *pool) { LCID locale = GetThreadLocale(); int len = GetLocaleInfo(locale, LOCALE_IDEFAULTANSICODEPAGE, NULL, 0); - char *cp = apr_palloc(pool, len + 2); + char *cp = fspr_palloc(pool, len + 2); if (0 < GetLocaleInfo(locale, LOCALE_IDEFAULTANSICODEPAGE, cp + 2, len)) { /* Fix up the returned number to make a valid codepage name of @@ -39,5 +39,5 @@ APR_DECLARE(const char*) apr_os_locale_encoding (apr_pool_t *pool) return cp; } - return apr_os_default_encoding(pool); + return fspr_os_default_encoding(pool); } diff --git a/libs/apr/misc/win32/env.c b/libs/apr/misc/win32/env.c index e99ff8d4765..7b174bba1d8 100644 --- a/libs/apr/misc/win32/env.c +++ b/libs/apr/misc/win32/env.c @@ -15,26 +15,26 @@ */ #define APR_WANT_STRFUNC -#include "apr_want.h" -#include "apr.h" -#include "apr_arch_misc.h" -#include "apr_arch_utf8.h" -#include "apr_env.h" -#include "apr_errno.h" -#include "apr_pools.h" -#include "apr_strings.h" +#include "fspr_want.h" +#include "fspr.h" +#include "fspr_arch_misc.h" +#include "fspr_arch_utf8.h" +#include "fspr_env.h" +#include "fspr_errno.h" +#include "fspr_pools.h" +#include "fspr_strings.h" #if APR_HAS_UNICODE_FS -static apr_status_t widen_envvar_name (apr_wchar_t *buffer, - apr_size_t bufflen, +static fspr_status_t widen_envvar_name (fspr_wchar_t *buffer, + fspr_size_t bufflen, const char *envvar) { - apr_size_t inchars; - apr_status_t status; + fspr_size_t inchars; + fspr_status_t status; inchars = strlen(envvar) + 1; - status = apr_conv_utf8_to_ucs2(envvar, &inchars, buffer, &bufflen); + status = fspr_conv_utf8_to_ucs2(envvar, &inchars, buffer, &bufflen); if (status == APR_INCOMPLETE) status = APR_ENAMETOOLONG; @@ -43,9 +43,9 @@ static apr_status_t widen_envvar_name (apr_wchar_t *buffer, #endif -APR_DECLARE(apr_status_t) apr_env_get(char **value, +APR_DECLARE(fspr_status_t) fspr_env_get(char **value, const char *envvar, - apr_pool_t *pool) + fspr_pool_t *pool) { char *val = NULL; DWORD size; @@ -53,10 +53,10 @@ APR_DECLARE(apr_status_t) apr_env_get(char **value, #if APR_HAS_UNICODE_FS IF_WIN_OS_IS_UNICODE { - apr_wchar_t wenvvar[APR_PATH_MAX]; - apr_size_t inchars, outchars; - apr_wchar_t *wvalue, dummy; - apr_status_t status; + fspr_wchar_t wenvvar[APR_PATH_MAX]; + fspr_size_t inchars, outchars; + fspr_wchar_t *wvalue, dummy; + fspr_status_t status; status = widen_envvar_name(wenvvar, APR_PATH_MAX, envvar); if (status) @@ -70,11 +70,11 @@ APR_DECLARE(apr_status_t) apr_env_get(char **value, if (size == 0) { /* The environment value exists, but is zero-length. */ - *value = apr_pstrdup(pool, ""); + *value = fspr_pstrdup(pool, ""); return APR_SUCCESS; } - wvalue = apr_palloc(pool, size * sizeof(*wvalue)); + wvalue = fspr_palloc(pool, size * sizeof(*wvalue)); size = GetEnvironmentVariableW(wenvvar, wvalue, size); if (size == 0) /* Mid-air collision?. Somebody must've changed the env. var. */ @@ -82,8 +82,8 @@ APR_DECLARE(apr_status_t) apr_env_get(char **value, inchars = wcslen(wvalue) + 1; outchars = 3 * inchars; /* Enougn for any UTF-8 representation */ - val = apr_palloc(pool, outchars); - status = apr_conv_ucs2_to_utf8(wvalue, &inchars, val, &outchars); + val = fspr_palloc(pool, outchars); + status = fspr_conv_ucs2_to_utf8(wvalue, &inchars, val, &outchars); if (status) return status; } @@ -101,11 +101,11 @@ APR_DECLARE(apr_status_t) apr_env_get(char **value, if (size == 0) { /* The environment value exists, but is zero-length. */ - *value = apr_pstrdup(pool, ""); + *value = fspr_pstrdup(pool, ""); return APR_SUCCESS; } - val = apr_palloc(pool, size); + val = fspr_palloc(pool, size); size = GetEnvironmentVariableA(envvar, val, size); if (size == 0) /* Mid-air collision?. Somebody must've changed the env. var. */ @@ -118,37 +118,37 @@ APR_DECLARE(apr_status_t) apr_env_get(char **value, } -APR_DECLARE(apr_status_t) apr_env_set(const char *envvar, +APR_DECLARE(fspr_status_t) fspr_env_set(const char *envvar, const char *value, - apr_pool_t *pool) + fspr_pool_t *pool) { #if APR_HAS_UNICODE_FS IF_WIN_OS_IS_UNICODE { - apr_wchar_t wenvvar[APR_PATH_MAX]; - apr_wchar_t *wvalue; - apr_size_t inchars, outchars; - apr_status_t status; + fspr_wchar_t wenvvar[APR_PATH_MAX]; + fspr_wchar_t *wvalue; + fspr_size_t inchars, outchars; + fspr_status_t status; status = widen_envvar_name(wenvvar, APR_PATH_MAX, envvar); if (status) return status; outchars = inchars = strlen(value) + 1; - wvalue = apr_palloc(pool, outchars * sizeof(*wvalue)); - status = apr_conv_utf8_to_ucs2(value, &inchars, wvalue, &outchars); + wvalue = fspr_palloc(pool, outchars * sizeof(*wvalue)); + status = fspr_conv_utf8_to_ucs2(value, &inchars, wvalue, &outchars); if (status) return status; if (!SetEnvironmentVariableW(wenvvar, wvalue)) - return apr_get_os_error(); + return fspr_get_os_error(); } #endif #if APR_HAS_ANSI_FS ELSE_WIN_OS_IS_ANSI { if (!SetEnvironmentVariableA(envvar, value)) - return apr_get_os_error(); + return fspr_get_os_error(); } #endif @@ -156,27 +156,27 @@ APR_DECLARE(apr_status_t) apr_env_set(const char *envvar, } -APR_DECLARE(apr_status_t) apr_env_delete(const char *envvar, apr_pool_t *pool) +APR_DECLARE(fspr_status_t) fspr_env_delete(const char *envvar, fspr_pool_t *pool) { #if APR_HAS_UNICODE_FS IF_WIN_OS_IS_UNICODE { - apr_wchar_t wenvvar[APR_PATH_MAX]; - apr_status_t status; + fspr_wchar_t wenvvar[APR_PATH_MAX]; + fspr_status_t status; status = widen_envvar_name(wenvvar, APR_PATH_MAX, envvar); if (status) return status; if (!SetEnvironmentVariableW(wenvvar, NULL)) - return apr_get_os_error(); + return fspr_get_os_error(); } #endif #if APR_HAS_ANSI_FS ELSE_WIN_OS_IS_ANSI { if (!SetEnvironmentVariableA(envvar, NULL)) - return apr_get_os_error(); + return fspr_get_os_error(); } #endif diff --git a/libs/apr/misc/win32/apr_app.c b/libs/apr/misc/win32/fspr_app.c similarity index 90% rename from libs/apr/misc/win32/apr_app.c rename to libs/apr/misc/win32/fspr_app.c index baac96e8113..d6b580c0075 100644 --- a/libs/apr/misc/win32/apr_app.c +++ b/libs/apr/misc/win32/fspr_app.c @@ -24,7 +24,7 @@ * * This module is only compatible with Unicode-only executables. * Mixed (Win9x backwards compatible) binaries should refer instead - * to the apr_startup.c module. + * to the fspr_startup.c module. * * _dbg_malloc/realloc is used in place of the usual API, in order * to convince the MSVCRT that they created these entities. If we @@ -33,14 +33,14 @@ * since we are single threaded [so far]. */ -#include "apr_general.h" +#include "fspr_general.h" #include "ShellAPI.h" #include "crtdbg.h" #include "wchar.h" -#include "apr_arch_file_io.h" +#include "fspr_arch_file_io.h" #include "assert.h" -#include "apr_private.h" -#include "apr_arch_misc.h" +#include "fspr_private.h" +#include "fspr_arch_misc.h" /* This symbol is _private_, although it must be exported. */ @@ -53,9 +53,9 @@ int wmain(int argc, const wchar_t **wargv, const wchar_t **wenv) char **env; int dupenv; - (void)apr_wastrtoastr(&argv, wargv, argc); + (void)fspr_wastrtoastr(&argv, wargv, argc); - dupenv = apr_wastrtoastr(&env, wenv, -1); + dupenv = fspr_wastrtoastr(&env, wenv, -1); _environ = _malloc_dbg((dupenv + 1) * sizeof (char *), _CRT_BLOCK, __FILE__, __LINE__ ); @@ -74,7 +74,7 @@ int wmain(int argc, const wchar_t **wargv, const wchar_t **wenv) free((wchar_t **)wenv); } - apr_app_init_complete = 1; + fspr_app_init_complete = 1; return main(argc, argv, env); } diff --git a/libs/apr/misc/win32/internal.c b/libs/apr/misc/win32/internal.c index b045bd42585..22c9122a65a 100644 --- a/libs/apr/misc/win32/internal.c +++ b/libs/apr/misc/win32/internal.c @@ -14,10 +14,10 @@ * limitations under the License. */ -#include "apr_private.h" +#include "fspr_private.h" -#include "apr_arch_misc.h" -#include "apr_arch_file_io.h" +#include "fspr_arch_misc.h" +#include "fspr_arch_file_io.h" #include #include @@ -30,7 +30,7 @@ */ -/* Shared by apr_app.c and start.c +/* Shared by fspr_app.c and start.c * * An internal apr function to convert an array of strings (either * a counted or NULL terminated list, such as an argv[argc] or env[] @@ -38,10 +38,10 @@ * These are allocated from the MSVCRT's _CRT_BLOCK to trick the system * into trusting our store. */ -int apr_wastrtoastr(char const * const * *retarr, +int fspr_wastrtoastr(char const * const * *retarr, wchar_t const * const *arr, int args) { - apr_size_t elesize = 0; + fspr_size_t elesize = 0; char **newarr; char *elements; char *ele; @@ -57,7 +57,7 @@ int apr_wastrtoastr(char const * const * *retarr, for (arg = 0; arg < args; ++arg) { newarr[arg] = (void*)(wcslen(arr[arg]) + 1); - elesize += (apr_size_t)newarr[arg]; + elesize += (fspr_size_t)newarr[arg]; } /* This is a safe max allocation, we will realloc after @@ -70,11 +70,11 @@ int apr_wastrtoastr(char const * const * *retarr, _CRT_BLOCK, __FILE__, __LINE__); for (arg = 0; arg < args; ++arg) { - apr_size_t len = (apr_size_t)newarr[arg]; - apr_size_t newlen = elesize; + fspr_size_t len = (fspr_size_t)newarr[arg]; + fspr_size_t newlen = elesize; newarr[arg] = ele; - (void)apr_conv_ucs2_to_utf8(arr[arg], &len, + (void)fspr_conv_ucs2_to_utf8(arr[arg], &len, newarr[arg], &elesize); newlen -= elesize; @@ -91,7 +91,7 @@ int apr_wastrtoastr(char const * const * *retarr, _CRT_BLOCK, __FILE__, __LINE__); if (ele != elements) { - apr_size_t diff = ele - elements; + fspr_size_t diff = ele - elements; for (arg = 0; arg < args; ++arg) { newarr[arg] += diff; } diff --git a/libs/apr/misc/win32/misc.c b/libs/apr/misc/win32/misc.c index 9975eef613e..ad7bfdfbcb5 100644 --- a/libs/apr/misc/win32/misc.c +++ b/libs/apr/misc/win32/misc.c @@ -14,18 +14,18 @@ * limitations under the License. */ -#include "apr_private.h" -#include "apr_arch_misc.h" +#include "fspr_private.h" +#include "fspr_arch_misc.h" #include "crtdbg.h" -#include "apr_arch_file_io.h" +#include "fspr_arch_file_io.h" #include "assert.h" -#include "apr_lib.h" +#include "fspr_lib.h" -APR_DECLARE_DATA apr_oslevel_e apr_os_level = APR_WIN_UNK; +APR_DECLARE_DATA fspr_oslevel_e fspr_os_level = APR_WIN_UNK; -apr_status_t apr_get_oslevel(apr_oslevel_e *level) +fspr_status_t fspr_get_oslevel(fspr_oslevel_e *level) { - if (apr_os_level == APR_WIN_UNK) + if (fspr_os_level == APR_WIN_UNK) { static OSVERSIONINFO oslev; oslev.dwOSVersionInfoSize = sizeof(OSVERSIONINFO); @@ -36,7 +36,7 @@ apr_status_t apr_get_oslevel(apr_oslevel_e *level) static unsigned int servpack = 0; char *pservpack; if (pservpack = oslev.szCSDVersion) { - while (*pservpack && !apr_isdigit(*pservpack)) { + while (*pservpack && !fspr_isdigit(*pservpack)) { pservpack++; } if (*pservpack) @@ -44,63 +44,63 @@ apr_status_t apr_get_oslevel(apr_oslevel_e *level) } if (oslev.dwMajorVersion < 3) { - apr_os_level = APR_WIN_UNSUP; + fspr_os_level = APR_WIN_UNSUP; } else if (oslev.dwMajorVersion == 3) { if (oslev.dwMajorVersion < 50) { - apr_os_level = APR_WIN_UNSUP; + fspr_os_level = APR_WIN_UNSUP; } else if (oslev.dwMajorVersion == 50) { - apr_os_level = APR_WIN_NT_3_5; + fspr_os_level = APR_WIN_NT_3_5; } else { - apr_os_level = APR_WIN_NT_3_51; + fspr_os_level = APR_WIN_NT_3_51; } } else if (oslev.dwMajorVersion == 4) { if (servpack < 2) - apr_os_level = APR_WIN_NT_4; + fspr_os_level = APR_WIN_NT_4; else if (servpack <= 2) - apr_os_level = APR_WIN_NT_4_SP2; + fspr_os_level = APR_WIN_NT_4_SP2; else if (servpack <= 3) - apr_os_level = APR_WIN_NT_4_SP3; + fspr_os_level = APR_WIN_NT_4_SP3; else if (servpack <= 4) - apr_os_level = APR_WIN_NT_4_SP4; + fspr_os_level = APR_WIN_NT_4_SP4; else if (servpack <= 5) - apr_os_level = APR_WIN_NT_4_SP5; + fspr_os_level = APR_WIN_NT_4_SP5; else - apr_os_level = APR_WIN_NT_4_SP6; + fspr_os_level = APR_WIN_NT_4_SP6; } else if (oslev.dwMajorVersion == 5) { if (oslev.dwMinorVersion == 0) { if (servpack == 0) - apr_os_level = APR_WIN_2000; + fspr_os_level = APR_WIN_2000; else if (servpack == 1) - apr_os_level = APR_WIN_2000_SP1; + fspr_os_level = APR_WIN_2000_SP1; else - apr_os_level = APR_WIN_2000_SP2; + fspr_os_level = APR_WIN_2000_SP2; } else if (oslev.dwMinorVersion == 2) { - apr_os_level = APR_WIN_2003; + fspr_os_level = APR_WIN_2003; } else { if (servpack < 1) - apr_os_level = APR_WIN_XP; + fspr_os_level = APR_WIN_XP; else if (servpack == 1) - apr_os_level = APR_WIN_XP_SP1; + fspr_os_level = APR_WIN_XP_SP1; else - apr_os_level = APR_WIN_XP_SP2; + fspr_os_level = APR_WIN_XP_SP2; } } else { - apr_os_level = APR_WIN_XP; + fspr_os_level = APR_WIN_XP; } } #ifndef WINNT else if (oslev.dwPlatformId == VER_PLATFORM_WIN32_WINDOWS) { char *prevision; if (prevision = oslev.szCSDVersion) { - while (*prevision && !apr_isupper(*prevision)) { + while (*prevision && !fspr_isupper(*prevision)) { prevision++; } } @@ -108,18 +108,18 @@ apr_status_t apr_get_oslevel(apr_oslevel_e *level) if (oslev.dwMinorVersion < 10) { if (*prevision < 'C') - apr_os_level = APR_WIN_95; + fspr_os_level = APR_WIN_95; else - apr_os_level = APR_WIN_95_OSR2; + fspr_os_level = APR_WIN_95_OSR2; } else if (oslev.dwMinorVersion < 90) { if (*prevision < 'A') - apr_os_level = APR_WIN_98; + fspr_os_level = APR_WIN_98; else - apr_os_level = APR_WIN_98_SE; + fspr_os_level = APR_WIN_98_SE; } else { - apr_os_level = APR_WIN_ME; + fspr_os_level = APR_WIN_ME; } } #endif @@ -127,21 +127,21 @@ apr_status_t apr_get_oslevel(apr_oslevel_e *level) else if (oslev.dwPlatformId == VER_PLATFORM_WIN32_CE) { if (oslev.dwMajorVersion < 3) { - apr_os_level = APR_WIN_UNSUP; + fspr_os_level = APR_WIN_UNSUP; } else { - apr_os_level = APR_WIN_CE_3; + fspr_os_level = APR_WIN_CE_3; } } #endif else { - apr_os_level = APR_WIN_UNSUP; + fspr_os_level = APR_WIN_UNSUP; } } - *level = apr_os_level; + *level = fspr_os_level; - if (apr_os_level < APR_WIN_UNSUP) { + if (fspr_os_level < APR_WIN_UNSUP) { return APR_EGENERAL; } @@ -158,7 +158,7 @@ static const char* const lateDllName[DLL_defined] = { static HMODULE lateDllHandle[DLL_defined] = { NULL, NULL, NULL, NULL, NULL, NULL }; -FARPROC apr_load_dll_func(apr_dlltoken_e fnLib, char* fnName, int ordinal) +FARPROC fspr_load_dll_func(fspr_dlltoken_e fnLib, char* fnName, int ordinal) { if (!lateDllHandle[fnLib]) { lateDllHandle[fnLib] = LoadLibrary(lateDllName[fnLib]); @@ -171,9 +171,9 @@ FARPROC apr_load_dll_func(apr_dlltoken_e fnLib, char* fnName, int ordinal) return GetProcAddress(lateDllHandle[fnLib], fnName); } -/* Declared in include/arch/win32/apr_dbg_win32_handles.h +/* Declared in include/arch/win32/fspr_dbg_win32_handles.h */ -APR_DECLARE_NONSTD(HANDLE) apr_dbg_log(char* fn, HANDLE ha, char* fl, int ln, +APR_DECLARE_NONSTD(HANDLE) fspr_dbg_log(char* fn, HANDLE ha, char* fl, int ln, int nh, /* HANDLE hv, char *dsc */...) { static DWORD tlsid = 0xFFFFFFFF; diff --git a/libs/apr/misc/win32/rand.c b/libs/apr/misc/win32/rand.c index fb50fb9b325..130c87b85bd 100644 --- a/libs/apr/misc/win32/rand.c +++ b/libs/apr/misc/win32/rand.c @@ -14,42 +14,42 @@ * limitations under the License. */ -#include "apr.h" -#include "apr_private.h" -#include "apr_general.h" -#include "apr_portable.h" -#include "apr_arch_misc.h" +#include "fspr.h" +#include "fspr_private.h" +#include "fspr_general.h" +#include "fspr_portable.h" +#include "fspr_arch_misc.h" #include -APR_DECLARE(apr_status_t) apr_generate_random_bytes(unsigned char * buf, - apr_size_t length) +APR_DECLARE(fspr_status_t) fspr_generate_random_bytes(unsigned char * buf, + fspr_size_t length) { HCRYPTPROV hProv; - apr_status_t res = APR_SUCCESS; + fspr_status_t res = APR_SUCCESS; /* 0x40 bit = CRYPT_SILENT, only introduced in more recent PSDKs * and will only work for Win2K and later. */ DWORD flags = CRYPT_VERIFYCONTEXT - | ((apr_os_level >= APR_WIN_2000) ? 0x40 : 0); + | ((fspr_os_level >= APR_WIN_2000) ? 0x40 : 0); if (!CryptAcquireContext(&hProv, NULL, NULL, PROV_RSA_FULL, flags)) { - return apr_get_os_error(); + return fspr_get_os_error(); } /* XXX: An ugly hack for Win64, randomness is such that noone should * ever expect > 2^31 bytes of data at once without the prng * coming to a complete halt. */ if (!CryptGenRandom(hProv, (DWORD)length, buf)) { - res = apr_get_os_error(); + res = fspr_get_os_error(); } CryptReleaseContext(hProv, 0); return res; } -APR_DECLARE(apr_status_t) apr_os_uuid_get(unsigned char *uuid_data) +APR_DECLARE(fspr_status_t) fspr_os_uuid_get(unsigned char *uuid_data) { /* Note: this call doesn't actually require CoInitialize() first * @@ -59,7 +59,7 @@ APR_DECLARE(apr_status_t) apr_os_uuid_get(unsigned char *uuid_data) * be appropriate in all cases. * * Note that Win2000, XP and later no longer suffer from this problem, - * a scrambling fix is only needed for (apr_os_level < APR_WIN_2000) + * a scrambling fix is only needed for (fspr_os_level < APR_WIN_2000) */ if (FAILED(UuidCreate((UUID *)uuid_data))) { return APR_EGENERAL; diff --git a/libs/apr/misc/win32/start.c b/libs/apr/misc/win32/start.c index f51b749d2c6..4a87e23c1e3 100644 --- a/libs/apr/misc/win32/start.c +++ b/libs/apr/misc/win32/start.c @@ -14,23 +14,23 @@ * limitations under the License. */ -#include "apr_private.h" -#include "apr_general.h" -#include "apr_pools.h" -#include "apr_signal.h" +#include "fspr_private.h" +#include "fspr_general.h" +#include "fspr_pools.h" +#include "fspr_signal.h" #include "ShellAPI.h" -#include "apr_arch_misc.h" /* for WSAHighByte / WSALowByte */ +#include "fspr_arch_misc.h" /* for WSAHighByte / WSALowByte */ #include "wchar.h" -#include "apr_arch_file_io.h" +#include "fspr_arch_file_io.h" #include "crtdbg.h" #include "assert.h" /* This symbol is _private_, although it must be exported. */ -int APR_DECLARE_DATA apr_app_init_complete = 0; +int APR_DECLARE_DATA fspr_app_init_complete = 0; -/* Used by apr_app_initialize to reprocess the environment +/* Used by fspr_app_initialize to reprocess the environment * * An internal apr function to convert a double-null terminated set * of single-null terminated strings from wide Unicode to narrow utf-8 @@ -40,10 +40,10 @@ int APR_DECLARE_DATA apr_app_init_complete = 0; static int warrsztoastr(const char * const * *retarr, const wchar_t * arrsz, int args) { - const apr_wchar_t *wch; - apr_size_t totlen; - apr_size_t newlen; - apr_size_t wsize; + const fspr_wchar_t *wch; + fspr_size_t totlen; + fspr_size_t newlen; + fspr_size_t wsize; char **newarr; int arg; @@ -66,7 +66,7 @@ static int warrsztoastr(const char * const * *retarr, newarr[0] = _malloc_dbg(newlen * sizeof(char), _CRT_BLOCK, __FILE__, __LINE__); - (void)apr_conv_ucs2_to_utf8(arrsz, &wsize, + (void)fspr_conv_ucs2_to_utf8(arrsz, &wsize, newarr[0], &newlen); assert(newlen && !wsize); @@ -91,11 +91,11 @@ static int warrsztoastr(const char * const * *retarr, /* Reprocess the arguments to main() for a completely apr-ized application */ -APR_DECLARE(apr_status_t) apr_app_initialize(int *argc, +APR_DECLARE(fspr_status_t) fspr_app_initialize(int *argc, const char * const * *argv, const char * const * *env) { - apr_status_t rv = apr_initialize(); + fspr_status_t rv = fspr_initialize(); if (rv != APR_SUCCESS) { return rv; @@ -104,22 +104,22 @@ APR_DECLARE(apr_status_t) apr_app_initialize(int *argc, #if APR_HAS_UNICODE_FS IF_WIN_OS_IS_UNICODE { - apr_wchar_t **wstrs; - apr_wchar_t *sysstr; + fspr_wchar_t **wstrs; + fspr_wchar_t *sysstr; int wstrc; int dupenv; - if (apr_app_init_complete) { + if (fspr_app_init_complete) { return rv; } - apr_app_init_complete = 1; + fspr_app_init_complete = 1; sysstr = GetCommandLineW(); if (sysstr) { wstrs = CommandLineToArgvW(sysstr, &wstrc); if (wstrs) { - *argc = apr_wastrtoastr(argv, wstrs, wstrc); + *argc = fspr_wastrtoastr(argv, wstrs, wstrc); GlobalFree(wstrs); } } @@ -145,7 +145,7 @@ APR_DECLARE(apr_status_t) apr_app_initialize(int *argc, * Reset _wenviron for good measure. */ if (_wenviron) { - apr_wchar_t **wenv = _wenviron; + fspr_wchar_t **wenv = _wenviron; _wenviron = NULL; free(wenv); } @@ -158,35 +158,35 @@ APR_DECLARE(apr_status_t) apr_app_initialize(int *argc, static int initialized = 0; /* Provide to win32/thread.c */ -extern DWORD tls_apr_thread; +extern DWORD tls_fspr_thread; -APR_DECLARE(apr_status_t) apr_initialize(void) +APR_DECLARE(fspr_status_t) fspr_initialize(void) { - apr_pool_t *pool; - apr_status_t status; + fspr_pool_t *pool; + fspr_status_t status; int iVersionRequested; WSADATA wsaData; int err; - apr_oslevel_e osver; + fspr_oslevel_e osver; if (initialized++) { return APR_SUCCESS; } - /* Initialize apr_os_level global */ - if (apr_get_oslevel(&osver) != APR_SUCCESS) { + /* Initialize fspr_os_level global */ + if (fspr_get_oslevel(&osver) != APR_SUCCESS) { return APR_EEXIST; } - tls_apr_thread = TlsAlloc(); - if ((status = apr_pool_initialize()) != APR_SUCCESS) + tls_fspr_thread = TlsAlloc(); + if ((status = fspr_pool_initialize()) != APR_SUCCESS) return status; - if (apr_pool_create(&pool, NULL) != APR_SUCCESS) { + if (fspr_pool_create(&pool, NULL) != APR_SUCCESS) { return APR_ENOPOOL; } - apr_pool_tag(pool, "apr_initialize"); + fspr_pool_tag(pool, "fspr_initialize"); iVersionRequested = MAKEWORD(WSAHighByte, WSALowByte); err = WSAStartup((WORD) iVersionRequested, &wsaData); @@ -199,25 +199,25 @@ APR_DECLARE(apr_status_t) apr_initialize(void) return APR_EEXIST; } - apr_signal_init(pool); + fspr_signal_init(pool); return APR_SUCCESS; } -APR_DECLARE_NONSTD(void) apr_terminate(void) +APR_DECLARE_NONSTD(void) fspr_terminate(void) { initialized--; if (initialized) { return; } - apr_pool_terminate(); + fspr_pool_terminate(); WSACleanup(); - TlsFree(tls_apr_thread); + TlsFree(tls_fspr_thread); } -APR_DECLARE(void) apr_terminate2(void) +APR_DECLARE(void) fspr_terminate2(void) { - apr_terminate(); + fspr_terminate(); } diff --git a/libs/apr/misc/win32/utf8.c b/libs/apr/misc/win32/utf8.c index b37dba44dad..57167235c4e 100644 --- a/libs/apr/misc/win32/utf8.c +++ b/libs/apr/misc/win32/utf8.c @@ -14,10 +14,10 @@ * limitations under the License. */ -#include "apr.h" -#include "apr_private.h" -#include "apr_errno.h" -#include "apr_arch_utf8.h" +#include "fspr.h" +#include "fspr_private.h" +#include "fspr_errno.h" +#include "fspr_arch_utf8.h" /* Implement the design principal specified by RFC 2718 2.2.5 * Guidelines for new URL Schemes - within the APR. @@ -58,18 +58,18 @@ * W1 = 110110yyyyyyyyyy * W2 = 110111xxxxxxxxxx * - * apr_conv_utf8_to_ucs2 out bytes:sizeof(in) * 1 <= Req <= sizeof(in) * 2 + * fspr_conv_utf8_to_ucs2 out bytes:sizeof(in) * 1 <= Req <= sizeof(in) * 2 * - * apr_conv_ucs2_to_utf8 out words:sizeof(in) / 2 <= Req <= sizeof(in) * 3 / 2 + * fspr_conv_ucs2_to_utf8 out words:sizeof(in) / 2 <= Req <= sizeof(in) * 3 / 2 */ -APR_DECLARE(apr_status_t) apr_conv_utf8_to_ucs2(const char *in, - apr_size_t *inbytes, - apr_wchar_t *out, - apr_size_t *outwords) +APR_DECLARE(fspr_status_t) fspr_conv_utf8_to_ucs2(const char *in, + fspr_size_t *inbytes, + fspr_wchar_t *out, + fspr_size_t *outwords) { - apr_int64_t newch, mask; - apr_size_t expect, eating; + fspr_int64_t newch, mask; + fspr_size_t expect, eating; int ch; while (*inbytes && *outwords) @@ -138,7 +138,7 @@ APR_DECLARE(apr_status_t) apr_conv_utf8_to_ucs2(const char *in, /* Where the boolean (expect > 2) is true, we will need * an extra word for the output. */ - if (*outwords < (apr_size_t)(expect > 2) + 1) + if (*outwords < (fspr_size_t)(expect > 2) + 1) break; /* buffer full */ while (expect--) { @@ -156,14 +156,14 @@ APR_DECLARE(apr_status_t) apr_conv_utf8_to_ucs2(const char *in, if (newch < 0x10000) { --*outwords; - *(out++) = (apr_wchar_t) newch; + *(out++) = (fspr_wchar_t) newch; } else { *outwords -= 2; newch -= 0x10000; - *(out++) = (apr_wchar_t) (0xD800 | (newch >> 10)); - *(out++) = (apr_wchar_t) (0xDC00 | (newch & 0x03FF)); + *(out++) = (fspr_wchar_t) (0xD800 | (newch >> 10)); + *(out++) = (fspr_wchar_t) (0xDC00 | (newch & 0x03FF)); } } } @@ -174,13 +174,13 @@ APR_DECLARE(apr_status_t) apr_conv_utf8_to_ucs2(const char *in, return APR_SUCCESS; } -APR_DECLARE(apr_status_t) apr_conv_ucs2_to_utf8(const apr_wchar_t *in, - apr_size_t *inwords, +APR_DECLARE(fspr_status_t) fspr_conv_ucs2_to_utf8(const fspr_wchar_t *in, + fspr_size_t *inwords, char *out, - apr_size_t *outbytes) + fspr_size_t *outbytes) { - apr_int64_t newch, require; - apr_size_t need; + fspr_int64_t newch, require; + fspr_size_t need; char *invout; int ch; diff --git a/libs/apr/mmap/unix/common.c b/libs/apr/mmap/unix/common.c index a9789928809..a9b0b4c2f64 100644 --- a/libs/apr/mmap/unix/common.c +++ b/libs/apr/mmap/unix/common.c @@ -23,15 +23,15 @@ * */ -#include "apr.h" -#include "apr_private.h" -#include "apr_mmap.h" -#include "apr_errno.h" +#include "fspr.h" +#include "fspr_private.h" +#include "fspr_mmap.h" +#include "fspr_errno.h" #if APR_HAS_MMAP || defined(BEOS) -APR_DECLARE(apr_status_t) apr_mmap_offset(void **addr, apr_mmap_t *mmap, - apr_off_t offset) +APR_DECLARE(fspr_status_t) fspr_mmap_offset(void **addr, fspr_mmap_t *mmap, + fspr_off_t offset) { if (offset < 0 || offset > mmap->size) return APR_EINVAL; diff --git a/libs/apr/mmap/unix/mmap.c b/libs/apr/mmap/unix/mmap.c index 67195709674..e86938bde5e 100644 --- a/libs/apr/mmap/unix/mmap.c +++ b/libs/apr/mmap/unix/mmap.c @@ -14,14 +14,14 @@ * limitations under the License. */ -#include "apr.h" -#include "apr_private.h" -#include "apr_general.h" -#include "apr_strings.h" -#include "apr_mmap.h" -#include "apr_errno.h" -#include "apr_arch_file_io.h" -#include "apr_portable.h" +#include "fspr.h" +#include "fspr_private.h" +#include "fspr_general.h" +#include "fspr_strings.h" +#include "fspr_mmap.h" +#include "fspr_errno.h" +#include "fspr_arch_file_io.h" +#include "fspr_portable.h" /* System headers required for the mmap library */ #ifdef BEOS @@ -42,10 +42,10 @@ #if APR_HAS_MMAP || defined(BEOS) -static apr_status_t mmap_cleanup(void *themmap) +static fspr_status_t mmap_cleanup(void *themmap) { - apr_mmap_t *mm = themmap; - apr_mmap_t *next = APR_RING_NEXT(mm,link); + fspr_mmap_t *mm = themmap; + fspr_mmap_t *next = APR_RING_NEXT(mm,link); int rv = 0; /* we no longer refer to the mmaped region */ @@ -71,24 +71,24 @@ static apr_status_t mmap_cleanup(void *themmap) return errno; } -APR_DECLARE(apr_status_t) apr_mmap_create(apr_mmap_t **new, - apr_file_t *file, apr_off_t offset, - apr_size_t size, apr_int32_t flag, - apr_pool_t *cont) +APR_DECLARE(fspr_status_t) fspr_mmap_create(fspr_mmap_t **new, + fspr_file_t *file, fspr_off_t offset, + fspr_size_t size, fspr_int32_t flag, + fspr_pool_t *cont) { void *mm; #ifdef BEOS area_id aid = -1; uint32 pages = 0; #else - apr_int32_t native_flags = 0; + fspr_int32_t native_flags = 0; #endif #if APR_HAS_LARGE_FILES && defined(HAVE_MMAP64) #define mmap mmap64 #elif APR_HAS_LARGE_FILES && SIZEOF_OFF_T == 4 /* LFS but no mmap64: check for overflow */ - if ((apr_int64_t)offset + size > INT_MAX) + if ((fspr_int64_t)offset + size > INT_MAX) return APR_EINVAL; #endif @@ -97,18 +97,18 @@ APR_DECLARE(apr_status_t) apr_mmap_create(apr_mmap_t **new, if (file == NULL || file->filedes == -1 || file->buffered) return APR_EBADF; - (*new) = (apr_mmap_t *)apr_pcalloc(cont, sizeof(apr_mmap_t)); + (*new) = (fspr_mmap_t *)fspr_pcalloc(cont, sizeof(fspr_mmap_t)); #ifdef BEOS /* XXX: mmap shouldn't really change the seek offset */ - apr_file_seek(file, APR_SET, &offset); + fspr_file_seek(file, APR_SET, &offset); /* There seems to be some strange interactions that mean our area must * be set as READ & WRITE or writev will fail! Go figure... * So we ignore the value in flags and always ask for both READ and WRITE */ pages = (size + B_PAGE_SIZE -1) / B_PAGE_SIZE; - aid = create_area("apr_mmap", &mm , B_ANY_ADDRESS, pages * B_PAGE_SIZE, + aid = create_area("fspr_mmap", &mm , B_ANY_ADDRESS, pages * B_PAGE_SIZE, B_NO_LOCK, B_WRITE_AREA|B_READ_AREA); if (aid < B_NO_ERROR) { @@ -145,28 +145,28 @@ APR_DECLARE(apr_status_t) apr_mmap_create(apr_mmap_t **new, APR_RING_ELEM_INIT(*new, link); /* register the cleanup... */ - apr_pool_cleanup_register((*new)->cntxt, (void*)(*new), mmap_cleanup, - apr_pool_cleanup_null); + fspr_pool_cleanup_register((*new)->cntxt, (void*)(*new), mmap_cleanup, + fspr_pool_cleanup_null); return APR_SUCCESS; } -APR_DECLARE(apr_status_t) apr_mmap_dup(apr_mmap_t **new_mmap, - apr_mmap_t *old_mmap, - apr_pool_t *p) +APR_DECLARE(fspr_status_t) fspr_mmap_dup(fspr_mmap_t **new_mmap, + fspr_mmap_t *old_mmap, + fspr_pool_t *p) { - *new_mmap = (apr_mmap_t *)apr_pmemdup(p, old_mmap, sizeof(apr_mmap_t)); + *new_mmap = (fspr_mmap_t *)fspr_pmemdup(p, old_mmap, sizeof(fspr_mmap_t)); (*new_mmap)->cntxt = p; APR_RING_INSERT_AFTER(old_mmap, *new_mmap, link); - apr_pool_cleanup_register(p, *new_mmap, mmap_cleanup, - apr_pool_cleanup_null); + fspr_pool_cleanup_register(p, *new_mmap, mmap_cleanup, + fspr_pool_cleanup_null); return APR_SUCCESS; } -APR_DECLARE(apr_status_t) apr_mmap_delete(apr_mmap_t *mm) +APR_DECLARE(fspr_status_t) fspr_mmap_delete(fspr_mmap_t *mm) { - return apr_pool_cleanup_run(mm->cntxt, mm, mmap_cleanup); + return fspr_pool_cleanup_run(mm->cntxt, mm, mmap_cleanup); } #endif diff --git a/libs/apr/mmap/win32/mmap.c b/libs/apr/mmap/win32/mmap.c index 134417707f8..495b168438d 100644 --- a/libs/apr/mmap/win32/mmap.c +++ b/libs/apr/mmap/win32/mmap.c @@ -14,22 +14,22 @@ * limitations under the License. */ -#include "apr.h" -#include "apr_private.h" -#include "apr_general.h" -#include "apr_mmap.h" -#include "apr_errno.h" -#include "apr_arch_file_io.h" -#include "apr_portable.h" -#include "apr_strings.h" +#include "fspr.h" +#include "fspr_private.h" +#include "fspr_general.h" +#include "fspr_mmap.h" +#include "fspr_errno.h" +#include "fspr_arch_file_io.h" +#include "fspr_portable.h" +#include "fspr_strings.h" #if APR_HAS_MMAP -static apr_status_t mmap_cleanup(void *themmap) +static fspr_status_t mmap_cleanup(void *themmap) { - apr_mmap_t *mm = themmap; - apr_mmap_t *next = APR_RING_NEXT(mm,link); - apr_status_t rv = 0; + fspr_mmap_t *mm = themmap; + fspr_mmap_t *next = APR_RING_NEXT(mm,link); + fspr_status_t rv = 0; /* we no longer refer to the mmaped region */ APR_RING_REMOVE(mm,link); @@ -44,7 +44,7 @@ static apr_status_t mmap_cleanup(void *themmap) if (mm->mv) { if (!UnmapViewOfFile(mm->mv)) { - apr_status_t rv = apr_get_os_error(); + fspr_status_t rv = fspr_get_os_error(); CloseHandle(mm->mhandle); mm->mv = NULL; mm->mhandle = NULL; @@ -56,7 +56,7 @@ static apr_status_t mmap_cleanup(void *themmap) { if (!CloseHandle(mm->mhandle)) { - apr_status_t rv = apr_get_os_error(); + fspr_status_t rv = fspr_get_os_error(); CloseHandle(mm->mhandle); mm->mhandle = NULL; return rv; @@ -66,9 +66,9 @@ static apr_status_t mmap_cleanup(void *themmap) return APR_SUCCESS; } -APR_DECLARE(apr_status_t) apr_mmap_create(apr_mmap_t **new, apr_file_t *file, - apr_off_t offset, apr_size_t size, - apr_int32_t flag, apr_pool_t *cont) +APR_DECLARE(fspr_status_t) fspr_mmap_create(fspr_mmap_t **new, fspr_file_t *file, + fspr_off_t offset, fspr_size_t size, + fspr_int32_t flag, fspr_pool_t *cont) { static DWORD memblock = 0; DWORD fmaccess = 0; @@ -100,10 +100,10 @@ APR_DECLARE(apr_status_t) apr_mmap_create(apr_mmap_t **new, apr_file_t *file, memblock = si.dwAllocationGranularity; } - *new = apr_pcalloc(cont, sizeof(apr_mmap_t)); + *new = fspr_pcalloc(cont, sizeof(fspr_mmap_t)); (*new)->pstart = (offset / memblock) * memblock; (*new)->poffset = offset - (*new)->pstart; - (*new)->psize = (apr_size_t)((*new)->poffset) + size; + (*new)->psize = (fspr_size_t)((*new)->poffset) + size; /* The size of the CreateFileMapping object is the current size * of the size of the mmap object (e.g. file size), not the size * of the mapped region! @@ -114,7 +114,7 @@ APR_DECLARE(apr_status_t) apr_mmap_create(apr_mmap_t **new, apr_file_t *file, if (!(*new)->mhandle || (*new)->mhandle == INVALID_HANDLE_VALUE) { *new = NULL; - return apr_get_os_error(); + return fspr_get_os_error(); } offlo = (DWORD)(*new)->pstart; @@ -123,7 +123,7 @@ APR_DECLARE(apr_status_t) apr_mmap_create(apr_mmap_t **new, apr_file_t *file, offlo, (*new)->psize); if (!(*new)->mv) { - apr_status_t rv = apr_get_os_error(); + fspr_status_t rv = fspr_get_os_error(); CloseHandle((*new)->mhandle); *new = NULL; return rv; @@ -135,28 +135,28 @@ APR_DECLARE(apr_status_t) apr_mmap_create(apr_mmap_t **new, apr_file_t *file, APR_RING_ELEM_INIT(*new, link); /* register the cleanup... */ - apr_pool_cleanup_register((*new)->cntxt, (void*)(*new), mmap_cleanup, - apr_pool_cleanup_null); + fspr_pool_cleanup_register((*new)->cntxt, (void*)(*new), mmap_cleanup, + fspr_pool_cleanup_null); return APR_SUCCESS; } -APR_DECLARE(apr_status_t) apr_mmap_dup(apr_mmap_t **new_mmap, - apr_mmap_t *old_mmap, - apr_pool_t *p) +APR_DECLARE(fspr_status_t) fspr_mmap_dup(fspr_mmap_t **new_mmap, + fspr_mmap_t *old_mmap, + fspr_pool_t *p) { - *new_mmap = (apr_mmap_t *)apr_pmemdup(p, old_mmap, sizeof(apr_mmap_t)); + *new_mmap = (fspr_mmap_t *)fspr_pmemdup(p, old_mmap, sizeof(fspr_mmap_t)); (*new_mmap)->cntxt = p; APR_RING_INSERT_AFTER(old_mmap, *new_mmap, link); - apr_pool_cleanup_register(p, *new_mmap, mmap_cleanup, - apr_pool_cleanup_null); + fspr_pool_cleanup_register(p, *new_mmap, mmap_cleanup, + fspr_pool_cleanup_null); return APR_SUCCESS; } -APR_DECLARE(apr_status_t) apr_mmap_delete(apr_mmap_t *mm) +APR_DECLARE(fspr_status_t) fspr_mmap_delete(fspr_mmap_t *mm) { - return apr_pool_cleanup_run(mm->cntxt, mm, mmap_cleanup); + return fspr_pool_cleanup_run(mm->cntxt, mm, mmap_cleanup); } #endif diff --git a/libs/apr/network_io/beos/sendrecv.c b/libs/apr/network_io/beos/sendrecv.c index 1aeb426e9c3..618b2c6a8ba 100644 --- a/libs/apr/network_io/beos/sendrecv.c +++ b/libs/apr/network_io/beos/sendrecv.c @@ -14,14 +14,14 @@ * limitations under the License. */ -#include "apr_private.h" +#include "fspr_private.h" #if BEOS_BONE /* BONE uses the unix code - woohoo */ #include "../unix/sendrecv.c" #else -#include "apr_arch_networkio.h" -#include "apr_time.h" +#include "fspr_arch_networkio.h" +#include "fspr_time.h" -static apr_status_t wait_for_io_or_timeout(apr_socket_t *sock, int for_read) +static fspr_status_t wait_for_io_or_timeout(fspr_socket_t *sock, int for_read) { struct timeval tv, *tvptr; fd_set fdset; @@ -57,23 +57,23 @@ static apr_status_t wait_for_io_or_timeout(apr_socket_t *sock, int for_read) #define SEND_WAIT APR_USEC_PER_SEC / 10 -APR_DECLARE(apr_status_t) apr_socket_send(apr_socket_t *sock, const char *buf, - apr_size_t *len) +APR_DECLARE(fspr_status_t) fspr_socket_send(fspr_socket_t *sock, const char *buf, + fspr_size_t *len) { - apr_ssize_t rv; + fspr_ssize_t rv; do { rv = send(sock->socketdes, buf, (*len), 0); } while (rv == -1 && errno == EINTR); if (rv == -1 && errno == EWOULDBLOCK && sock->timeout > 0) { - apr_int32_t snooze_val = SEND_WAIT; - apr_int32_t zzz = 0; + fspr_int32_t snooze_val = SEND_WAIT; + fspr_int32_t zzz = 0; do { rv = send(sock->socketdes, buf, (*len), 0); if (rv == -1 && errno == EWOULDBLOCK){ - apr_sleep (snooze_val); + fspr_sleep (snooze_val); zzz += snooze_val; snooze_val += SEND_WAIT; /* have we passed our timeout value */ @@ -91,17 +91,17 @@ APR_DECLARE(apr_status_t) apr_socket_send(apr_socket_t *sock, const char *buf, return APR_SUCCESS; } -APR_DECLARE(apr_status_t) apr_socket_recv(apr_socket_t *sock, char *buf, - apr_size_t *len) +APR_DECLARE(fspr_status_t) fspr_socket_recv(fspr_socket_t *sock, char *buf, + fspr_size_t *len) { - apr_ssize_t rv; + fspr_ssize_t rv; do { rv = recv(sock->socketdes, buf, (*len), 0); } while (rv == -1 && errno == EINTR); if (rv == -1 && errno == EWOULDBLOCK && sock->timeout > 0) { - apr_status_t arv = wait_for_io_or_timeout(sock, 1); + fspr_status_t arv = wait_for_io_or_timeout(sock, 1); if (arv != APR_SUCCESS) { *len = 0; return arv; @@ -124,20 +124,20 @@ APR_DECLARE(apr_status_t) apr_socket_recv(apr_socket_t *sock, char *buf, /* BeOS doesn't have writev for sockets so we use the following instead... */ -APR_DECLARE(apr_status_t) apr_socket_sendv(apr_socket_t * sock, +APR_DECLARE(fspr_status_t) fspr_socket_sendv(fspr_socket_t * sock, const struct iovec *vec, - apr_int32_t nvec, apr_size_t *len) + fspr_int32_t nvec, fspr_size_t *len) { *len = vec[0].iov_len; - return apr_socket_send(sock, vec[0].iov_base, len); + return fspr_socket_send(sock, vec[0].iov_base, len); } -APR_DECLARE(apr_status_t) apr_socket_sendto(apr_socket_t *sock, - apr_sockaddr_t *where, - apr_int32_t flags, const char *buf, - apr_size_t *len) +APR_DECLARE(fspr_status_t) fspr_socket_sendto(fspr_socket_t *sock, + fspr_sockaddr_t *where, + fspr_int32_t flags, const char *buf, + fspr_size_t *len) { - apr_ssize_t rv; + fspr_ssize_t rv; do { rv = sendto(sock->socketdes, buf, (*len), flags, @@ -147,7 +147,7 @@ APR_DECLARE(apr_status_t) apr_socket_sendto(apr_socket_t *sock, if (rv == -1 && (errno == EAGAIN || errno == EWOULDBLOCK) && sock->timeout != 0) { - apr_status_t arv = wait_for_io_or_timeout(sock, 0); + fspr_status_t arv = wait_for_io_or_timeout(sock, 0); if (arv != APR_SUCCESS) { *len = 0; return arv; @@ -167,12 +167,12 @@ APR_DECLARE(apr_status_t) apr_socket_sendto(apr_socket_t *sock, return APR_SUCCESS; } -APR_DECLARE(apr_status_t) apr_socket_recvfrom(apr_sockaddr_t *from, - apr_socket_t *sock, - apr_int32_t flags, char *buf, - apr_size_t *len) +APR_DECLARE(fspr_status_t) fspr_socket_recvfrom(fspr_sockaddr_t *from, + fspr_socket_t *sock, + fspr_int32_t flags, char *buf, + fspr_size_t *len) { - apr_ssize_t rv; + fspr_ssize_t rv; if (from == NULL){ return APR_ENOMEM; @@ -188,7 +188,7 @@ APR_DECLARE(apr_status_t) apr_socket_recvfrom(apr_sockaddr_t *from, if (rv == -1 && (errno == EAGAIN || errno == EWOULDBLOCK) && sock->timeout != 0) { - apr_status_t arv = wait_for_io_or_timeout(sock, 1); + fspr_status_t arv = wait_for_io_or_timeout(sock, 1); if (arv != APR_SUCCESS) { *len = 0; return arv; diff --git a/libs/apr/network_io/os2/os2calls.c b/libs/apr/network_io/os2/os2calls.c index 6bf1fcd02eb..b68e93e294a 100644 --- a/libs/apr/network_io/os2/os2calls.c +++ b/libs/apr/network_io/os2/os2calls.c @@ -14,33 +14,33 @@ * limitations under the License. */ -#include "apr_arch_networkio.h" -#include "apr_network_io.h" -#include "apr_portable.h" -#include "apr_general.h" -#include "apr_lib.h" +#include "fspr_arch_networkio.h" +#include "fspr_network_io.h" +#include "fspr_portable.h" +#include "fspr_general.h" +#include "fspr_lib.h" static int os2_socket_init(int, int ,int); -int (*apr_os2_socket)(int, int, int) = os2_socket_init; -int (*apr_os2_select)(int *, int, int, int, long) = NULL; -int (*apr_os2_sock_errno)() = NULL; -int (*apr_os2_accept)(int, struct sockaddr *, int *) = NULL; -int (*apr_os2_bind)(int, struct sockaddr *, int) = NULL; -int (*apr_os2_connect)(int, struct sockaddr *, int) = NULL; -int (*apr_os2_getpeername)(int, struct sockaddr *, int *) = NULL; -int (*apr_os2_getsockname)(int, struct sockaddr *, int *) = NULL; -int (*apr_os2_getsockopt)(int, int, int, char *, int *) = NULL; -int (*apr_os2_ioctl)(int, int, caddr_t, int) = NULL; -int (*apr_os2_listen)(int, int) = NULL; -int (*apr_os2_recv)(int, char *, int, int) = NULL; -int (*apr_os2_send)(int, const char *, int, int) = NULL; -int (*apr_os2_setsockopt)(int, int, int, char *, int) = NULL; -int (*apr_os2_shutdown)(int, int) = NULL; -int (*apr_os2_soclose)(int) = NULL; -int (*apr_os2_writev)(int, struct iovec *, int) = NULL; -int (*apr_os2_sendto)(int, const char *, int, int, const struct sockaddr *, int); -int (*apr_os2_recvfrom)(int, char *, int, int, struct sockaddr *, int *); +int (*fspr_os2_socket)(int, int, int) = os2_socket_init; +int (*fspr_os2_select)(int *, int, int, int, long) = NULL; +int (*fspr_os2_sock_errno)() = NULL; +int (*fspr_os2_accept)(int, struct sockaddr *, int *) = NULL; +int (*fspr_os2_bind)(int, struct sockaddr *, int) = NULL; +int (*fspr_os2_connect)(int, struct sockaddr *, int) = NULL; +int (*fspr_os2_getpeername)(int, struct sockaddr *, int *) = NULL; +int (*fspr_os2_getsockname)(int, struct sockaddr *, int *) = NULL; +int (*fspr_os2_getsockopt)(int, int, int, char *, int *) = NULL; +int (*fspr_os2_ioctl)(int, int, caddr_t, int) = NULL; +int (*fspr_os2_listen)(int, int) = NULL; +int (*fspr_os2_recv)(int, char *, int, int) = NULL; +int (*fspr_os2_send)(int, const char *, int, int) = NULL; +int (*fspr_os2_setsockopt)(int, int, int, char *, int) = NULL; +int (*fspr_os2_shutdown)(int, int) = NULL; +int (*fspr_os2_soclose)(int) = NULL; +int (*fspr_os2_writev)(int, struct iovec *, int) = NULL; +int (*fspr_os2_sendto)(int, const char *, int, int, const struct sockaddr *, int); +int (*fspr_os2_recvfrom)(int, char *, int, int, struct sockaddr *, int *); static HMODULE hSO32DLL; @@ -48,7 +48,7 @@ static int os2_fn_link() { DosEnterCritSec(); /* Stop two threads doing this at the same time */ - if (apr_os2_socket == os2_socket_init) { + if (fspr_os2_socket == os2_socket_init) { ULONG rc; char errorstr[200]; @@ -57,61 +57,61 @@ static int os2_fn_link() if (rc) return APR_OS2_STATUS(rc); - rc = DosQueryProcAddr(hSO32DLL, 0, "SOCKET", &apr_os2_socket); + rc = DosQueryProcAddr(hSO32DLL, 0, "SOCKET", &fspr_os2_socket); if (!rc) - rc = DosQueryProcAddr(hSO32DLL, 0, "SELECT", &apr_os2_select); + rc = DosQueryProcAddr(hSO32DLL, 0, "SELECT", &fspr_os2_select); if (!rc) - rc = DosQueryProcAddr(hSO32DLL, 0, "SOCK_ERRNO", &apr_os2_sock_errno); + rc = DosQueryProcAddr(hSO32DLL, 0, "SOCK_ERRNO", &fspr_os2_sock_errno); if (!rc) - rc = DosQueryProcAddr(hSO32DLL, 0, "ACCEPT", &apr_os2_accept); + rc = DosQueryProcAddr(hSO32DLL, 0, "ACCEPT", &fspr_os2_accept); if (!rc) - rc = DosQueryProcAddr(hSO32DLL, 0, "BIND", &apr_os2_bind); + rc = DosQueryProcAddr(hSO32DLL, 0, "BIND", &fspr_os2_bind); if (!rc) - rc = DosQueryProcAddr(hSO32DLL, 0, "CONNECT", &apr_os2_connect); + rc = DosQueryProcAddr(hSO32DLL, 0, "CONNECT", &fspr_os2_connect); if (!rc) - rc = DosQueryProcAddr(hSO32DLL, 0, "GETPEERNAME", &apr_os2_getpeername); + rc = DosQueryProcAddr(hSO32DLL, 0, "GETPEERNAME", &fspr_os2_getpeername); if (!rc) - rc = DosQueryProcAddr(hSO32DLL, 0, "GETSOCKNAME", &apr_os2_getsockname); + rc = DosQueryProcAddr(hSO32DLL, 0, "GETSOCKNAME", &fspr_os2_getsockname); if (!rc) - rc = DosQueryProcAddr(hSO32DLL, 0, "GETSOCKOPT", &apr_os2_getsockopt); + rc = DosQueryProcAddr(hSO32DLL, 0, "GETSOCKOPT", &fspr_os2_getsockopt); if (!rc) - rc = DosQueryProcAddr(hSO32DLL, 0, "IOCTL", &apr_os2_ioctl); + rc = DosQueryProcAddr(hSO32DLL, 0, "IOCTL", &fspr_os2_ioctl); if (!rc) - rc = DosQueryProcAddr(hSO32DLL, 0, "LISTEN", &apr_os2_listen); + rc = DosQueryProcAddr(hSO32DLL, 0, "LISTEN", &fspr_os2_listen); if (!rc) - rc = DosQueryProcAddr(hSO32DLL, 0, "RECV", &apr_os2_recv); + rc = DosQueryProcAddr(hSO32DLL, 0, "RECV", &fspr_os2_recv); if (!rc) - rc = DosQueryProcAddr(hSO32DLL, 0, "SEND", &apr_os2_send); + rc = DosQueryProcAddr(hSO32DLL, 0, "SEND", &fspr_os2_send); if (!rc) - rc = DosQueryProcAddr(hSO32DLL, 0, "SETSOCKOPT", &apr_os2_setsockopt); + rc = DosQueryProcAddr(hSO32DLL, 0, "SETSOCKOPT", &fspr_os2_setsockopt); if (!rc) - rc = DosQueryProcAddr(hSO32DLL, 0, "SHUTDOWN", &apr_os2_shutdown); + rc = DosQueryProcAddr(hSO32DLL, 0, "SHUTDOWN", &fspr_os2_shutdown); if (!rc) - rc = DosQueryProcAddr(hSO32DLL, 0, "SOCLOSE", &apr_os2_soclose); + rc = DosQueryProcAddr(hSO32DLL, 0, "SOCLOSE", &fspr_os2_soclose); if (!rc) - rc = DosQueryProcAddr(hSO32DLL, 0, "WRITEV", &apr_os2_writev); + rc = DosQueryProcAddr(hSO32DLL, 0, "WRITEV", &fspr_os2_writev); if (!rc) - rc = DosQueryProcAddr(hSO32DLL, 0, "SENDTO", &apr_os2_sendto); + rc = DosQueryProcAddr(hSO32DLL, 0, "SENDTO", &fspr_os2_sendto); if (!rc) - rc = DosQueryProcAddr(hSO32DLL, 0, "RECVFROM", &apr_os2_recvfrom); + rc = DosQueryProcAddr(hSO32DLL, 0, "RECVFROM", &fspr_os2_recvfrom); if (rc) return APR_OS2_STATUS(rc); @@ -127,6 +127,6 @@ static int os2_socket_init(int domain, int type, int protocol) { int rc = os2_fn_link(); if (rc == APR_SUCCESS) - return apr_os2_socket(domain, type, protocol); + return fspr_os2_socket(domain, type, protocol); return rc; } diff --git a/libs/apr/network_io/os2/sendrecv.c b/libs/apr/network_io/os2/sendrecv.c index 839ff3f8313..8f0fbf805c5 100644 --- a/libs/apr/network_io/os2/sendrecv.c +++ b/libs/apr/network_io/os2/sendrecv.c @@ -14,17 +14,17 @@ * limitations under the License. */ -#include "apr_arch_networkio.h" -#include "apr_errno.h" -#include "apr_general.h" -#include "apr_network_io.h" -#include "apr_lib.h" +#include "fspr_arch_networkio.h" +#include "fspr_errno.h" +#include "fspr_general.h" +#include "fspr_network_io.h" +#include "fspr_lib.h" #include -APR_DECLARE(apr_status_t) apr_socket_send(apr_socket_t *sock, const char *buf, - apr_size_t *len) +APR_DECLARE(fspr_status_t) fspr_socket_send(fspr_socket_t *sock, const char *buf, + fspr_size_t *len) { - apr_ssize_t rv; + fspr_ssize_t rv; int fds, err = 0; if (*len > 65536) { @@ -65,10 +65,10 @@ APR_DECLARE(apr_status_t) apr_socket_send(apr_socket_t *sock, const char *buf, -APR_DECLARE(apr_status_t) apr_socket_recv(apr_socket_t *sock, char *buf, - apr_size_t *len) +APR_DECLARE(fspr_status_t) fspr_socket_recv(fspr_socket_t *sock, char *buf, + fspr_size_t *len) { - apr_ssize_t rv; + fspr_ssize_t rv; int fds, err = 0; do { @@ -105,11 +105,11 @@ APR_DECLARE(apr_status_t) apr_socket_recv(apr_socket_t *sock, char *buf, -APR_DECLARE(apr_status_t) apr_socket_sendv(apr_socket_t *sock, +APR_DECLARE(fspr_status_t) fspr_socket_sendv(fspr_socket_t *sock, const struct iovec *vec, - apr_int32_t nvec, apr_size_t *len) + fspr_int32_t nvec, fspr_size_t *len) { - apr_status_t rv; + fspr_status_t rv; struct iovec *tmpvec; int fds, err = 0; int nv_tosend, total = 0; diff --git a/libs/apr/network_io/os2/sendrecv_udp.c b/libs/apr/network_io/os2/sendrecv_udp.c index c0dcd8562ec..7a8d0c36db0 100644 --- a/libs/apr/network_io/os2/sendrecv_udp.c +++ b/libs/apr/network_io/os2/sendrecv_udp.c @@ -14,21 +14,21 @@ * limitations under the License. */ -#include "apr_arch_networkio.h" -#include "apr_errno.h" -#include "apr_general.h" -#include "apr_network_io.h" -#include "apr_support.h" -#include "apr_lib.h" +#include "fspr_arch_networkio.h" +#include "fspr_errno.h" +#include "fspr_general.h" +#include "fspr_network_io.h" +#include "fspr_support.h" +#include "fspr_lib.h" #include -APR_DECLARE(apr_status_t) apr_socket_sendto(apr_socket_t *sock, - apr_sockaddr_t *where, - apr_int32_t flags, const char *buf, - apr_size_t *len) +APR_DECLARE(fspr_status_t) fspr_socket_sendto(fspr_socket_t *sock, + fspr_sockaddr_t *where, + fspr_int32_t flags, const char *buf, + fspr_size_t *len) { - apr_ssize_t rv; + fspr_ssize_t rv; int serrno; do { @@ -38,7 +38,7 @@ APR_DECLARE(apr_status_t) apr_socket_sendto(apr_socket_t *sock, } while (rv == -1 && (serrno = sock_errno()) == EINTR); if (rv == -1 && serrno == SOCEWOULDBLOCK && sock->timeout != 0) { - apr_status_t arv = apr_wait_for_io_or_timeout(NULL, sock, 0); + fspr_status_t arv = fspr_wait_for_io_or_timeout(NULL, sock, 0); if (arv != APR_SUCCESS) { *len = 0; @@ -63,12 +63,12 @@ APR_DECLARE(apr_status_t) apr_socket_sendto(apr_socket_t *sock, -APR_DECLARE(apr_status_t) apr_socket_recvfrom(apr_sockaddr_t *from, - apr_socket_t *sock, - apr_int32_t flags, char *buf, - apr_size_t *len) +APR_DECLARE(fspr_status_t) fspr_socket_recvfrom(fspr_sockaddr_t *from, + fspr_socket_t *sock, + fspr_int32_t flags, char *buf, + fspr_size_t *len) { - apr_ssize_t rv; + fspr_ssize_t rv; int serrno; do { @@ -77,7 +77,7 @@ APR_DECLARE(apr_status_t) apr_socket_recvfrom(apr_sockaddr_t *from, } while (rv == -1 && (serrno = sock_errno()) == EINTR); if (rv == -1 && serrno == SOCEWOULDBLOCK && sock->timeout != 0) { - apr_status_t arv = apr_wait_for_io_or_timeout(NULL, sock, 1); + fspr_status_t arv = fspr_wait_for_io_or_timeout(NULL, sock, 1); if (arv != APR_SUCCESS) { *len = 0; diff --git a/libs/apr/network_io/os2/sockets.c b/libs/apr/network_io/os2/sockets.c index bb951e4c866..1035889b4be 100644 --- a/libs/apr/network_io/os2/sockets.c +++ b/libs/apr/network_io/os2/sockets.c @@ -14,13 +14,13 @@ * limitations under the License. */ -#include "apr_arch_networkio.h" -#include "apr_arch_inherit.h" -#include "apr_network_io.h" -#include "apr_general.h" -#include "apr_portable.h" -#include "apr_lib.h" -#include "apr_strings.h" +#include "fspr_arch_networkio.h" +#include "fspr_arch_inherit.h" +#include "fspr_network_io.h" +#include "fspr_general.h" +#include "fspr_portable.h" +#include "fspr_lib.h" +#include "fspr_strings.h" #include #include #include @@ -28,11 +28,11 @@ #include #include #include -#include "apr_arch_os2calls.h" +#include "fspr_arch_os2calls.h" -static apr_status_t socket_cleanup(void *sock) +static fspr_status_t socket_cleanup(void *sock) { - apr_socket_t *thesocket = sock; + fspr_socket_t *thesocket = sock; if (thesocket->socketdes < 0) { return APR_EINVALSOCK; @@ -47,43 +47,43 @@ static apr_status_t socket_cleanup(void *sock) } } -static void set_socket_vars(apr_socket_t *sock, int family, int type, int protocol) +static void set_socket_vars(fspr_socket_t *sock, int family, int type, int protocol) { sock->type = type; sock->protocol = protocol; - apr_sockaddr_vars_set(sock->local_addr, family, 0); - apr_sockaddr_vars_set(sock->remote_addr, family, 0); + fspr_sockaddr_vars_set(sock->local_addr, family, 0); + fspr_sockaddr_vars_set(sock->remote_addr, family, 0); } -static void alloc_socket(apr_socket_t **new, apr_pool_t *p) +static void alloc_socket(fspr_socket_t **new, fspr_pool_t *p) { - *new = (apr_socket_t *)apr_pcalloc(p, sizeof(apr_socket_t)); + *new = (fspr_socket_t *)fspr_pcalloc(p, sizeof(fspr_socket_t)); (*new)->pool = p; - (*new)->local_addr = (apr_sockaddr_t *)apr_pcalloc((*new)->pool, - sizeof(apr_sockaddr_t)); + (*new)->local_addr = (fspr_sockaddr_t *)fspr_pcalloc((*new)->pool, + sizeof(fspr_sockaddr_t)); (*new)->local_addr->pool = p; - (*new)->remote_addr = (apr_sockaddr_t *)apr_pcalloc((*new)->pool, - sizeof(apr_sockaddr_t)); + (*new)->remote_addr = (fspr_sockaddr_t *)fspr_pcalloc((*new)->pool, + sizeof(fspr_sockaddr_t)); (*new)->remote_addr->pool = p; (*new)->remote_addr_unknown = 1; /* Create a pollset with room for one descriptor. */ /* ### check return codes */ - (void) apr_pollset_create(&(*new)->pollset, 1, p, 0); + (void) fspr_pollset_create(&(*new)->pollset, 1, p, 0); } -APR_DECLARE(apr_status_t) apr_socket_protocol_get(apr_socket_t *sock, int *protocol) +APR_DECLARE(fspr_status_t) fspr_socket_protocol_get(fspr_socket_t *sock, int *protocol) { *protocol = sock->protocol; return APR_SUCCESS; } -APR_DECLARE(apr_status_t) apr_socket_create(apr_socket_t **new, int family, int type, - int protocol, apr_pool_t *cont) +APR_DECLARE(fspr_status_t) fspr_socket_create(fspr_socket_t **new, int family, int type, + int protocol, fspr_pool_t *cont) { int downgrade = (family == AF_UNSPEC); - apr_pollfd_t pfd; + fspr_pollfd_t pfd; if (family == AF_UNSPEC) { #if APR_HAVE_IPV6 @@ -110,14 +110,14 @@ APR_DECLARE(apr_status_t) apr_socket_create(apr_socket_t **new, int family, int (*new)->timeout = -1; (*new)->nonblock = FALSE; - apr_pool_cleanup_register((*new)->pool, (void *)(*new), - socket_cleanup, apr_pool_cleanup_null); + fspr_pool_cleanup_register((*new)->pool, (void *)(*new), + socket_cleanup, fspr_pool_cleanup_null); return APR_SUCCESS; } -APR_DECLARE(apr_status_t) apr_socket_shutdown(apr_socket_t *thesocket, - apr_shutdown_how_e how) +APR_DECLARE(fspr_status_t) fspr_socket_shutdown(fspr_socket_t *thesocket, + fspr_shutdown_how_e how) { if (shutdown(thesocket->socketdes, how) == 0) { return APR_SUCCESS; @@ -127,14 +127,14 @@ APR_DECLARE(apr_status_t) apr_socket_shutdown(apr_socket_t *thesocket, } } -APR_DECLARE(apr_status_t) apr_socket_close(apr_socket_t *thesocket) +APR_DECLARE(fspr_status_t) fspr_socket_close(fspr_socket_t *thesocket) { - apr_pool_cleanup_kill(thesocket->pool, thesocket, socket_cleanup); + fspr_pool_cleanup_kill(thesocket->pool, thesocket, socket_cleanup); return socket_cleanup(thesocket); } -APR_DECLARE(apr_status_t) apr_socket_bind(apr_socket_t *sock, - apr_sockaddr_t *sa) +APR_DECLARE(fspr_status_t) fspr_socket_bind(fspr_socket_t *sock, + fspr_sockaddr_t *sa) { if (bind(sock->socketdes, (struct sockaddr *)&sa->sa, @@ -150,8 +150,8 @@ APR_DECLARE(apr_status_t) apr_socket_bind(apr_socket_t *sock, } } -APR_DECLARE(apr_status_t) apr_socket_listen(apr_socket_t *sock, - apr_int32_t backlog) +APR_DECLARE(fspr_status_t) fspr_socket_listen(fspr_socket_t *sock, + fspr_int32_t backlog) { if (listen(sock->socketdes, backlog) == -1) return APR_OS2_STATUS(sock_errno()); @@ -159,9 +159,9 @@ APR_DECLARE(apr_status_t) apr_socket_listen(apr_socket_t *sock, return APR_SUCCESS; } -APR_DECLARE(apr_status_t) apr_socket_accept(apr_socket_t **new, - apr_socket_t *sock, - apr_pool_t *connection_context) +APR_DECLARE(fspr_status_t) fspr_socket_accept(fspr_socket_t **new, + fspr_socket_t *sock, + fspr_pool_t *connection_context) { alloc_socket(new, connection_context); set_socket_vars(*new, sock->local_addr->sa.sin.sin_family, SOCK_STREAM, sock->protocol); @@ -186,13 +186,13 @@ APR_DECLARE(apr_status_t) apr_socket_accept(apr_socket_t **new, (*new)->local_addr->ipaddr_ptr = &(*new)->local_addr->sa.sin.sin_addr; } - apr_pool_cleanup_register((*new)->pool, (void *)(*new), - socket_cleanup, apr_pool_cleanup_null); + fspr_pool_cleanup_register((*new)->pool, (void *)(*new), + socket_cleanup, fspr_pool_cleanup_null); return APR_SUCCESS; } -APR_DECLARE(apr_status_t) apr_socket_connect(apr_socket_t *sock, - apr_sockaddr_t *sa) +APR_DECLARE(fspr_status_t) fspr_socket_connect(fspr_socket_t *sock, + fspr_sockaddr_t *sa) { if ((connect(sock->socketdes, (struct sockaddr *)&sa->sa.sin, sa->salen) < 0) && @@ -208,14 +208,14 @@ APR_DECLARE(apr_status_t) apr_socket_connect(apr_socket_t *sock, } } -APR_DECLARE(apr_status_t) apr_socket_type_get(apr_socket_t *sock, int *type) +APR_DECLARE(fspr_status_t) fspr_socket_type_get(fspr_socket_t *sock, int *type) { *type = sock->type; return APR_SUCCESS; } -APR_DECLARE(apr_status_t) apr_socket_data_get(void **data, const char *key, - apr_socket_t *sock) +APR_DECLARE(fspr_status_t) fspr_socket_data_get(void **data, const char *key, + fspr_socket_t *sock) { sock_userdata_t *cur = sock->userdata; @@ -234,65 +234,65 @@ APR_DECLARE(apr_status_t) apr_socket_data_get(void **data, const char *key, -APR_DECLARE(apr_status_t) apr_socket_data_set(apr_socket_t *sock, void *data, const char *key, - apr_status_t (*cleanup) (void *)) +APR_DECLARE(fspr_status_t) fspr_socket_data_set(fspr_socket_t *sock, void *data, const char *key, + fspr_status_t (*cleanup) (void *)) { - sock_userdata_t *new = apr_palloc(sock->pool, sizeof(sock_userdata_t)); + sock_userdata_t *new = fspr_palloc(sock->pool, sizeof(sock_userdata_t)); - new->key = apr_pstrdup(sock->pool, key); + new->key = fspr_pstrdup(sock->pool, key); new->data = data; new->next = sock->userdata; sock->userdata = new; if (cleanup) { - apr_pool_cleanup_register(sock->pool, data, cleanup, cleanup); + fspr_pool_cleanup_register(sock->pool, data, cleanup, cleanup); } return APR_SUCCESS; } -APR_DECLARE(apr_status_t) apr_os_sock_get(apr_os_sock_t *thesock, apr_socket_t *sock) +APR_DECLARE(fspr_status_t) fspr_os_sock_get(fspr_os_sock_t *thesock, fspr_socket_t *sock) { *thesock = sock->socketdes; return APR_SUCCESS; } -APR_DECLARE(apr_status_t) apr_os_sock_make(apr_socket_t **apr_sock, - apr_os_sock_info_t *os_sock_info, - apr_pool_t *cont) +APR_DECLARE(fspr_status_t) fspr_os_sock_make(fspr_socket_t **fspr_sock, + fspr_os_sock_info_t *os_sock_info, + fspr_pool_t *cont) { - alloc_socket(apr_sock, cont); - set_socket_vars(*apr_sock, os_sock_info->family, os_sock_info->type, os_sock_info->protocol); - (*apr_sock)->timeout = -1; - (*apr_sock)->socketdes = *os_sock_info->os_sock; + alloc_socket(fspr_sock, cont); + set_socket_vars(*fspr_sock, os_sock_info->family, os_sock_info->type, os_sock_info->protocol); + (*fspr_sock)->timeout = -1; + (*fspr_sock)->socketdes = *os_sock_info->os_sock; if (os_sock_info->local) { - memcpy(&(*apr_sock)->local_addr->sa.sin, + memcpy(&(*fspr_sock)->local_addr->sa.sin, os_sock_info->local, - (*apr_sock)->local_addr->salen); + (*fspr_sock)->local_addr->salen); /* XXX IPv6 - this assumes sin_port and sin6_port at same offset */ - (*apr_sock)->local_addr->port = ntohs((*apr_sock)->local_addr->sa.sin.sin_port); + (*fspr_sock)->local_addr->port = ntohs((*fspr_sock)->local_addr->sa.sin.sin_port); } else { - (*apr_sock)->local_port_unknown = (*apr_sock)->local_interface_unknown = 1; + (*fspr_sock)->local_port_unknown = (*fspr_sock)->local_interface_unknown = 1; } if (os_sock_info->remote) { - memcpy(&(*apr_sock)->remote_addr->sa.sin, + memcpy(&(*fspr_sock)->remote_addr->sa.sin, os_sock_info->remote, - (*apr_sock)->remote_addr->salen); + (*fspr_sock)->remote_addr->salen); /* XXX IPv6 - this assumes sin_port and sin6_port at same offset */ - (*apr_sock)->remote_addr->port = ntohs((*apr_sock)->remote_addr->sa.sin.sin_port); + (*fspr_sock)->remote_addr->port = ntohs((*fspr_sock)->remote_addr->sa.sin.sin_port); } else { - (*apr_sock)->remote_addr_unknown = 1; + (*fspr_sock)->remote_addr_unknown = 1; } - apr_pool_cleanup_register((*apr_sock)->pool, (void *)(*apr_sock), - socket_cleanup, apr_pool_cleanup_null); + fspr_pool_cleanup_register((*fspr_sock)->pool, (void *)(*fspr_sock), + socket_cleanup, fspr_pool_cleanup_null); return APR_SUCCESS; } -APR_DECLARE(apr_status_t) apr_os_sock_put(apr_socket_t **sock, apr_os_sock_t *thesock, apr_pool_t *cont) +APR_DECLARE(fspr_status_t) fspr_os_sock_put(fspr_socket_t **sock, fspr_os_sock_t *thesock, fspr_pool_t *cont) { if (cont == NULL) { return APR_ENOPOOL; diff --git a/libs/apr/network_io/os2/sockopt.c b/libs/apr/network_io/os2/sockopt.c index 85ff35331a1..4123de5eca6 100644 --- a/libs/apr/network_io/os2/sockopt.c +++ b/libs/apr/network_io/os2/sockopt.c @@ -14,11 +14,11 @@ * limitations under the License. */ -#include "apr_arch_networkio.h" -#include "apr_network_io.h" -#include "apr_general.h" -#include "apr_lib.h" -#include "apr_strings.h" +#include "fspr_arch_networkio.h" +#include "fspr_network_io.h" +#include "fspr_general.h" +#include "fspr_lib.h" +#include "fspr_strings.h" #include #include #include @@ -29,16 +29,16 @@ #include -APR_DECLARE(apr_status_t) apr_socket_timeout_set(apr_socket_t *sock, - apr_interval_time_t t) +APR_DECLARE(fspr_status_t) fspr_socket_timeout_set(fspr_socket_t *sock, + fspr_interval_time_t t) { sock->timeout = t; return APR_SUCCESS; } -APR_DECLARE(apr_status_t) apr_socket_opt_set(apr_socket_t *sock, - apr_int32_t opt, apr_int32_t on) +APR_DECLARE(fspr_status_t) fspr_socket_opt_set(fspr_socket_t *sock, + fspr_int32_t opt, fspr_int32_t on) { int one; struct linger li; @@ -91,16 +91,16 @@ APR_DECLARE(apr_status_t) apr_socket_opt_set(apr_socket_t *sock, } -APR_DECLARE(apr_status_t) apr_socket_timeout_get(apr_socket_t *sock, - apr_interval_time_t *t) +APR_DECLARE(fspr_status_t) fspr_socket_timeout_get(fspr_socket_t *sock, + fspr_interval_time_t *t) { *t = sock->timeout; return APR_SUCCESS; } -APR_DECLARE(apr_status_t) apr_socket_opt_get(apr_socket_t *sock, - apr_int32_t opt, apr_int32_t *on) +APR_DECLARE(fspr_status_t) fspr_socket_opt_get(fspr_socket_t *sock, + fspr_int32_t opt, fspr_int32_t *on) { switch(opt) { default: @@ -110,7 +110,7 @@ APR_DECLARE(apr_status_t) apr_socket_opt_get(apr_socket_t *sock, } -APR_DECLARE(int) apr_socket_fd_get(apr_socket_t *sock) +APR_DECLARE(int) fspr_socket_fd_get(fspr_socket_t *sock) { if (sock) { return sock->socketdes; @@ -120,7 +120,7 @@ APR_DECLARE(int) apr_socket_fd_get(apr_socket_t *sock) } -APR_DECLARE(apr_status_t) apr_socket_atmark(apr_socket_t *sock, int *atmark) +APR_DECLARE(fspr_status_t) fspr_socket_atmark(fspr_socket_t *sock, int *atmark) { int oobmark; @@ -134,8 +134,8 @@ APR_DECLARE(apr_status_t) apr_socket_atmark(apr_socket_t *sock, int *atmark) } -APR_DECLARE(apr_status_t) apr_gethostname(char *buf, apr_int32_t len, - apr_pool_t *cont) +APR_DECLARE(fspr_status_t) fspr_gethostname(char *buf, fspr_int32_t len, + fspr_pool_t *cont) { if (gethostname(buf, len) == -1) { buf[0] = '\0'; diff --git a/libs/apr/network_io/unix/inet_ntop.c b/libs/apr/network_io/unix/inet_ntop.c index a96eb18f7a6..cdf1d081769 100644 --- a/libs/apr/network_io/unix/inet_ntop.c +++ b/libs/apr/network_io/unix/inet_ntop.c @@ -14,9 +14,9 @@ * SOFTWARE. */ -#include "apr_private.h" -#include "apr_arch_networkio.h" -#include "apr_strings.h" +#include "fspr_private.h" +#include "fspr_arch_networkio.h" +#include "fspr_strings.h" #if APR_HAVE_SYS_TYPES_H #include @@ -41,7 +41,7 @@ #endif #ifndef INT16SZ -#define INT16SZ sizeof(apr_int16_t) +#define INT16SZ sizeof(fspr_int16_t) #endif #ifndef __P @@ -57,9 +57,9 @@ * sizeof(int) < 4. sizeof(int) > 4 is fine; all the world's not a VAX. */ -static const char *inet_ntop4 __P((const unsigned char *src, char *dst, apr_size_t size)); +static const char *inet_ntop4 __P((const unsigned char *src, char *dst, fspr_size_t size)); #if APR_HAVE_IPV6 -static const char *inet_ntop6 __P((const unsigned char *src, char *dst, apr_size_t size)); +static const char *inet_ntop6 __P((const unsigned char *src, char *dst, fspr_size_t size)); #endif /* char * @@ -71,7 +71,7 @@ static const char *inet_ntop6 __P((const unsigned char *src, char *dst, apr_size * Paul Vixie, 1996. */ const char * -apr_inet_ntop(int af, const void *src, char *dst, apr_size_t size) +fspr_inet_ntop(int af, const void *src, char *dst, fspr_size_t size) { switch (af) { case AF_INET: @@ -99,9 +99,9 @@ apr_inet_ntop(int af, const void *src, char *dst, apr_size_t size) * Paul Vixie, 1996. */ static const char * -inet_ntop4(const unsigned char *src, char *dst, apr_size_t size) +inet_ntop4(const unsigned char *src, char *dst, fspr_size_t size) { - const apr_size_t MIN_SIZE = 16; /* space for 255.255.255.255\0 */ + const fspr_size_t MIN_SIZE = 16; /* space for 255.255.255.255\0 */ int n = 0; char *next = dst; @@ -137,7 +137,7 @@ inet_ntop4(const unsigned char *src, char *dst, apr_size_t size) * Paul Vixie, 1996. */ static const char * -inet_ntop6(const unsigned char *src, char *dst, apr_size_t size) +inet_ntop6(const unsigned char *src, char *dst, fspr_size_t size) { /* * Note that int32_t and int16_t need only be "at least" large enough @@ -224,7 +224,7 @@ inet_ntop6(const unsigned char *src, char *dst, apr_size_t size) tp += strlen(tp); break; } - tp += apr_snprintf(tp, sizeof tmp - (tp - tmp), "%x", words[i]); + tp += fspr_snprintf(tp, sizeof tmp - (tp - tmp), "%x", words[i]); i++; } /* Was it a trailing run of 0x00's? */ @@ -236,7 +236,7 @@ inet_ntop6(const unsigned char *src, char *dst, apr_size_t size) /* * Check for overflow, copy, and we're done. */ - if ((apr_size_t)(tp - tmp) > size) { + if ((fspr_size_t)(tp - tmp) > size) { errno = ENOSPC; return (NULL); } diff --git a/libs/apr/network_io/unix/inet_pton.c b/libs/apr/network_io/unix/inet_pton.c index 22b15390fc3..890691b533d 100644 --- a/libs/apr/network_io/unix/inet_pton.c +++ b/libs/apr/network_io/unix/inet_pton.c @@ -14,8 +14,8 @@ * SOFTWARE. */ -#include "apr_private.h" -#include "apr_arch_networkio.h" +#include "fspr_private.h" +#include "fspr_arch_networkio.h" #if APR_HAVE_SYS_TYPES_H #include @@ -39,7 +39,7 @@ #endif #ifndef INT16SZ -#define INT16SZ sizeof(apr_int16_t) +#define INT16SZ sizeof(fspr_int16_t) #endif #ifndef INADDRSZ @@ -76,7 +76,7 @@ static int inet_pton6 __P((const char *src, unsigned char *dst)); * Paul Vixie, 1996. */ int -apr_inet_pton(int af, const char *src, void *dst) +fspr_inet_pton(int af, const char *src, void *dst) { switch (af) { case AF_INET: diff --git a/libs/apr/network_io/unix/multicast.c b/libs/apr/network_io/unix/multicast.c index 7f8f759dd7b..5047e3b9280 100644 --- a/libs/apr/network_io/unix/multicast.c +++ b/libs/apr/network_io/unix/multicast.c @@ -14,11 +14,11 @@ * limitations under the License. */ -#include "apr_arch_networkio.h" -#include "apr_network_io.h" -#include "apr_support.h" -#include "apr_portable.h" -#include "apr_arch_inherit.h" +#include "fspr_arch_networkio.h" +#include "fspr_network_io.h" +#include "fspr_support.h" +#include "fspr_portable.h" +#include "fspr_arch_inherit.h" #ifdef HAVE_GETIFADDRS #include @@ -27,12 +27,12 @@ #ifdef HAVE_STRUCT_IPMREQ /* Only UDP and Raw Sockets can be used for Multicast */ -static apr_status_t mcast_check_type(apr_socket_t *sock) +static fspr_status_t mcast_check_type(fspr_socket_t *sock) { int type; - apr_status_t rv; + fspr_status_t rv; - rv = apr_socket_type_get(sock, &type); + rv = fspr_socket_type_get(sock, &type); if (rv != APR_SUCCESS) { return rv; @@ -45,8 +45,8 @@ static apr_status_t mcast_check_type(apr_socket_t *sock) } } -static void fill_mip_v4(struct ip_mreq *mip, apr_sockaddr_t *mcast, - apr_sockaddr_t *iface) +static void fill_mip_v4(struct ip_mreq *mip, fspr_sockaddr_t *mcast, + fspr_sockaddr_t *iface) { mip->imr_multiaddr = mcast->sa.sin.sin_addr; if (iface == NULL) { @@ -57,7 +57,7 @@ static void fill_mip_v4(struct ip_mreq *mip, apr_sockaddr_t *mcast, } } -static unsigned int find_if_index(const apr_sockaddr_t *iface) +static unsigned int find_if_index(const fspr_sockaddr_t *iface) { unsigned int index = 0; #if defined(HAVE_GETIFADDRS) && APR_HAVE_IPV6 @@ -92,8 +92,8 @@ static unsigned int find_if_index(const apr_sockaddr_t *iface) } #if APR_HAVE_IPV6 -static void fill_mip_v6(struct ipv6_mreq *mip, const apr_sockaddr_t *mcast, - const apr_sockaddr_t *iface) +static void fill_mip_v6(struct ipv6_mreq *mip, const fspr_sockaddr_t *mcast, + const fspr_sockaddr_t *iface) { memcpy(&mip->ipv6mr_multiaddr, mcast->ipaddr_ptr, sizeof(mip->ipv6mr_multiaddr)); @@ -107,7 +107,7 @@ static void fill_mip_v6(struct ipv6_mreq *mip, const apr_sockaddr_t *mcast, } #endif -static int sock_is_ipv4(apr_socket_t *sock) +static int sock_is_ipv4(fspr_socket_t *sock) { if (sock->local_addr->family == APR_INET) return 1; @@ -115,7 +115,7 @@ static int sock_is_ipv4(apr_socket_t *sock) } #if APR_HAVE_IPV6 -static int sock_is_ipv6(apr_socket_t *sock) +static int sock_is_ipv6(fspr_socket_t *sock) { if (sock->local_addr->family == APR_INET6) return 1; @@ -123,12 +123,12 @@ static int sock_is_ipv6(apr_socket_t *sock) } #endif -static apr_status_t do_mcast(int type, apr_socket_t *sock, - apr_sockaddr_t *mcast, apr_sockaddr_t *iface, - apr_sockaddr_t *source) +static fspr_status_t do_mcast(int type, fspr_socket_t *sock, + fspr_sockaddr_t *mcast, fspr_sockaddr_t *iface, + fspr_sockaddr_t *source) { struct ip_mreq mip4; - apr_status_t rv = APR_SUCCESS; + fspr_status_t rv = APR_SUCCESS; #if APR_HAVE_IPV6 struct ipv6_mreq mip6; #endif @@ -214,10 +214,10 @@ static apr_status_t do_mcast(int type, apr_socket_t *sock, return rv; } -static apr_status_t do_mcast_opt(int type, apr_socket_t *sock, - apr_byte_t value) +static fspr_status_t do_mcast_opt(int type, fspr_socket_t *sock, + fspr_byte_t value) { - apr_status_t rv = APR_SUCCESS; + fspr_status_t rv = APR_SUCCESS; rv = mcast_check_type(sock); @@ -262,10 +262,10 @@ static apr_status_t do_mcast_opt(int type, apr_socket_t *sock, } #endif -APR_DECLARE(apr_status_t) apr_mcast_join(apr_socket_t *sock, - apr_sockaddr_t *join, - apr_sockaddr_t *iface, - apr_sockaddr_t *source) +APR_DECLARE(fspr_status_t) fspr_mcast_join(fspr_socket_t *sock, + fspr_sockaddr_t *join, + fspr_sockaddr_t *iface, + fspr_sockaddr_t *source) { #if defined(IP_ADD_MEMBERSHIP) && defined(HAVE_STRUCT_IPMREQ) return do_mcast(IP_ADD_MEMBERSHIP, sock, join, iface, source); @@ -274,10 +274,10 @@ APR_DECLARE(apr_status_t) apr_mcast_join(apr_socket_t *sock, #endif } -APR_DECLARE(apr_status_t) apr_mcast_leave(apr_socket_t *sock, - apr_sockaddr_t *addr, - apr_sockaddr_t *iface, - apr_sockaddr_t *source) +APR_DECLARE(fspr_status_t) fspr_mcast_leave(fspr_socket_t *sock, + fspr_sockaddr_t *addr, + fspr_sockaddr_t *iface, + fspr_sockaddr_t *source) { #if defined(IP_DROP_MEMBERSHIP) && defined(HAVE_STRUCT_IPMREQ) return do_mcast(IP_DROP_MEMBERSHIP, sock, addr, iface, source); @@ -286,7 +286,7 @@ APR_DECLARE(apr_status_t) apr_mcast_leave(apr_socket_t *sock, #endif } -APR_DECLARE(apr_status_t) apr_mcast_hops(apr_socket_t *sock, apr_byte_t ttl) +APR_DECLARE(fspr_status_t) fspr_mcast_hops(fspr_socket_t *sock, fspr_byte_t ttl) { #if defined(IP_MULTICAST_TTL) && defined(HAVE_STRUCT_IPMREQ) return do_mcast_opt(IP_MULTICAST_TTL, sock, ttl); @@ -295,8 +295,8 @@ APR_DECLARE(apr_status_t) apr_mcast_hops(apr_socket_t *sock, apr_byte_t ttl) #endif } -APR_DECLARE(apr_status_t) apr_mcast_loopback(apr_socket_t *sock, - apr_byte_t opt) +APR_DECLARE(fspr_status_t) fspr_mcast_loopback(fspr_socket_t *sock, + fspr_byte_t opt) { #if defined(IP_MULTICAST_LOOP) && defined(HAVE_STRUCT_IPMREQ) return do_mcast_opt(IP_MULTICAST_LOOP, sock, opt); @@ -305,11 +305,11 @@ APR_DECLARE(apr_status_t) apr_mcast_loopback(apr_socket_t *sock, #endif } -APR_DECLARE(apr_status_t) apr_mcast_interface(apr_socket_t *sock, - apr_sockaddr_t *iface) +APR_DECLARE(fspr_status_t) fspr_mcast_interface(fspr_socket_t *sock, + fspr_sockaddr_t *iface) { #if defined(IP_MULTICAST_IF) && defined(HAVE_STRUCT_IPMREQ) - apr_status_t rv = APR_SUCCESS; + fspr_status_t rv = APR_SUCCESS; if (sock_is_ipv4(sock)) { if (setsockopt(sock->socketdes, IPPROTO_IP, IP_MULTICAST_IF, diff --git a/libs/apr/network_io/unix/sendrecv.c b/libs/apr/network_io/unix/sendrecv.c index ca7230accca..2015bf0bfc4 100644 --- a/libs/apr/network_io/unix/sendrecv.c +++ b/libs/apr/network_io/unix/sendrecv.c @@ -14,12 +14,12 @@ * limitations under the License. */ -#include "apr_arch_networkio.h" -#include "apr_support.h" +#include "fspr_arch_networkio.h" +#include "fspr_support.h" #if APR_HAS_SENDFILE -/* This file is needed to allow us access to the apr_file_t internals. */ -#include "apr_arch_file_io.h" +/* This file is needed to allow us access to the fspr_file_t internals. */ +#include "fspr_arch_file_io.h" #endif /* APR_HAS_SENDFILE */ /* osreldate.h is only needed on FreeBSD for sendfile detection */ @@ -29,10 +29,10 @@ #include /* assert() */ -apr_status_t apr_socket_send(apr_socket_t *sock, const char *buf, - apr_size_t *len) +fspr_status_t fspr_socket_send(fspr_socket_t *sock, const char *buf, + fspr_size_t *len) { - apr_ssize_t rv; + fspr_ssize_t rv; if (sock->options & APR_INCOMPLETE_WRITE) { sock->options &= ~APR_INCOMPLETE_WRITE; @@ -45,9 +45,9 @@ apr_status_t apr_socket_send(apr_socket_t *sock, const char *buf, while (rv == -1 && (errno == EAGAIN || errno == EWOULDBLOCK) && (sock->timeout > 0)) { - apr_status_t arv; + fspr_status_t arv; do_select: - arv = apr_wait_for_io_or_timeout(NULL, sock, 0); + arv = fspr_wait_for_io_or_timeout(NULL, sock, 0); if (arv != APR_SUCCESS) { *len = 0; return arv; @@ -69,10 +69,10 @@ apr_status_t apr_socket_send(apr_socket_t *sock, const char *buf, return APR_SUCCESS; } -apr_status_t apr_socket_recv(apr_socket_t *sock, char *buf, apr_size_t *len) +fspr_status_t fspr_socket_recv(fspr_socket_t *sock, char *buf, fspr_size_t *len) { - apr_ssize_t rv; - apr_status_t arv; + fspr_ssize_t rv; + fspr_status_t arv; if (sock->options & APR_INCOMPLETE_READ) { sock->options &= ~APR_INCOMPLETE_READ; @@ -86,7 +86,7 @@ apr_status_t apr_socket_recv(apr_socket_t *sock, char *buf, apr_size_t *len) while ((rv == -1) && (errno == EAGAIN || errno == EWOULDBLOCK) && (sock->timeout > 0)) { do_select: - arv = apr_wait_for_io_or_timeout(NULL, sock, 1); + arv = fspr_wait_for_io_or_timeout(NULL, sock, 1); if (arv != APR_SUCCESS) { *len = 0; return arv; @@ -111,11 +111,11 @@ apr_status_t apr_socket_recv(apr_socket_t *sock, char *buf, apr_size_t *len) return APR_SUCCESS; } -apr_status_t apr_socket_sendto(apr_socket_t *sock, apr_sockaddr_t *where, - apr_int32_t flags, const char *buf, - apr_size_t *len) +fspr_status_t fspr_socket_sendto(fspr_socket_t *sock, fspr_sockaddr_t *where, + fspr_int32_t flags, const char *buf, + fspr_size_t *len) { - apr_ssize_t rv; + fspr_ssize_t rv; do { rv = sendto(sock->socketdes, buf, (*len), flags, @@ -125,7 +125,7 @@ apr_status_t apr_socket_sendto(apr_socket_t *sock, apr_sockaddr_t *where, while ((rv == -1) && (errno == EAGAIN || errno == EWOULDBLOCK) && (sock->timeout > 0)) { - apr_status_t arv = apr_wait_for_io_or_timeout(NULL, sock, 0); + fspr_status_t arv = fspr_wait_for_io_or_timeout(NULL, sock, 0); if (arv != APR_SUCCESS) { *len = 0; return arv; @@ -145,11 +145,11 @@ apr_status_t apr_socket_sendto(apr_socket_t *sock, apr_sockaddr_t *where, return APR_SUCCESS; } -apr_status_t apr_socket_recvfrom(apr_sockaddr_t *from, apr_socket_t *sock, - apr_int32_t flags, char *buf, - apr_size_t *len) +fspr_status_t fspr_socket_recvfrom(fspr_sockaddr_t *from, fspr_socket_t *sock, + fspr_int32_t flags, char *buf, + fspr_size_t *len) { - apr_ssize_t rv; + fspr_ssize_t rv; from->salen = sizeof(from->sa); @@ -160,7 +160,7 @@ apr_status_t apr_socket_recvfrom(apr_sockaddr_t *from, apr_socket_t *sock, while ((rv == -1) && (errno == EAGAIN || errno == EWOULDBLOCK) && (sock->timeout > 0)) { - apr_status_t arv = apr_wait_for_io_or_timeout(NULL, sock, 1); + fspr_status_t arv = fspr_wait_for_io_or_timeout(NULL, sock, 1); if (arv != APR_SUCCESS) { *len = 0; return arv; @@ -176,7 +176,7 @@ apr_status_t apr_socket_recvfrom(apr_sockaddr_t *from, apr_socket_t *sock, return errno; } - apr_sockaddr_vars_set(from, from->sa.sin.sin_family, ntohs(from->sa.sin.sin_port)); + fspr_sockaddr_vars_set(from, from->sa.sin.sin_family, ntohs(from->sa.sin.sin_port)); (*len) = rv; if (rv == 0 && sock->type == SOCK_STREAM) { @@ -186,13 +186,13 @@ apr_status_t apr_socket_recvfrom(apr_sockaddr_t *from, apr_socket_t *sock, return APR_SUCCESS; } -apr_status_t apr_socket_sendv(apr_socket_t * sock, const struct iovec *vec, - apr_int32_t nvec, apr_size_t *len) +fspr_status_t fspr_socket_sendv(fspr_socket_t * sock, const struct iovec *vec, + fspr_int32_t nvec, fspr_size_t *len) { #ifdef HAVE_WRITEV - apr_ssize_t rv; - apr_size_t requested_len = 0; - apr_int32_t i; + fspr_ssize_t rv; + fspr_size_t requested_len = 0; + fspr_int32_t i; for (i = 0; i < nvec; i++) { requested_len += vec[i].iov_len; @@ -209,9 +209,9 @@ apr_status_t apr_socket_sendv(apr_socket_t * sock, const struct iovec *vec, while ((rv == -1) && (errno == EAGAIN || errno == EWOULDBLOCK) && (sock->timeout > 0)) { - apr_status_t arv; + fspr_status_t arv; do_select: - arv = apr_wait_for_io_or_timeout(NULL, sock, 0); + arv = fspr_wait_for_io_or_timeout(NULL, sock, 0); if (arv != APR_SUCCESS) { *len = 0; return arv; @@ -233,7 +233,7 @@ apr_status_t apr_socket_sendv(apr_socket_t * sock, const struct iovec *vec, return APR_SUCCESS; #else *len = vec[0].iov_len; - return apr_socket_send(sock, vec[0].iov_base, len); + return fspr_socket_send(sock, vec[0].iov_base, len); #endif } @@ -245,27 +245,27 @@ apr_status_t apr_socket_sendv(apr_socket_t * sock, const struct iovec *vec, /* TODO: what should flags be? int_32? */ /* Define a structure to pass in when we have a NULL header value */ -static apr_hdtr_t no_hdtr; +static fspr_hdtr_t no_hdtr; #if defined(__linux__) && defined(HAVE_WRITEV) -apr_status_t apr_socket_sendfile(apr_socket_t *sock, apr_file_t *file, - apr_hdtr_t *hdtr, apr_off_t *offset, - apr_size_t *len, apr_int32_t flags) +fspr_status_t fspr_socket_sendfile(fspr_socket_t *sock, fspr_file_t *file, + fspr_hdtr_t *hdtr, fspr_off_t *offset, + fspr_size_t *len, fspr_int32_t flags) { int rv, nbytes = 0, total_hdrbytes, i; - apr_status_t arv; + fspr_status_t arv; #if APR_HAS_LARGE_FILES && defined(HAVE_SENDFILE64) - apr_off_t off = *offset; + fspr_off_t off = *offset; #define sendfile sendfile64 #elif APR_HAS_LARGE_FILES && SIZEOF_OFF_T == 4 - /* 64-bit apr_off_t but no sendfile64(): fail if trying to send + /* 64-bit fspr_off_t but no sendfile64(): fail if trying to send * past the 2Gb limit. */ off_t off; - if ((apr_int64_t)*offset + *len > INT_MAX) { + if ((fspr_int64_t)*offset + *len > INT_MAX) { return EINVAL; } @@ -292,16 +292,16 @@ apr_status_t apr_socket_sendfile(apr_socket_t *sock, apr_file_t *file, assert(flags==0); if (hdtr->numheaders > 0) { - apr_size_t hdrbytes; + fspr_size_t hdrbytes; /* cork before writing headers */ - rv = apr_socket_opt_set(sock, APR_TCP_NOPUSH, 1); + rv = fspr_socket_opt_set(sock, APR_TCP_NOPUSH, 1); if (rv != APR_SUCCESS) { return rv; } /* Now write the headers */ - arv = apr_socket_sendv(sock, hdtr->headers, hdtr->numheaders, + arv = fspr_socket_sendv(sock, hdtr->headers, hdtr->numheaders, &hdrbytes); if (arv != APR_SUCCESS) { *len = 0; @@ -319,7 +319,7 @@ apr_status_t apr_socket_sendfile(apr_socket_t *sock, apr_file_t *file, } if (hdrbytes < total_hdrbytes) { *len = hdrbytes; - return apr_socket_opt_set(sock, APR_TCP_NOPUSH, 0); + return fspr_socket_opt_set(sock, APR_TCP_NOPUSH, 0); } } @@ -338,7 +338,7 @@ apr_status_t apr_socket_sendfile(apr_socket_t *sock, apr_file_t *file, while ((rv == -1) && (errno == EAGAIN || errno == EWOULDBLOCK) && (sock->timeout > 0)) { do_select: - arv = apr_wait_for_io_or_timeout(NULL, sock, 0); + arv = fspr_wait_for_io_or_timeout(NULL, sock, 0); if (arv != APR_SUCCESS) { *len = 0; return arv; @@ -356,7 +356,7 @@ apr_status_t apr_socket_sendfile(apr_socket_t *sock, apr_file_t *file, if (rv == -1) { *len = nbytes; rv = errno; - apr_socket_opt_set(sock, APR_TCP_NOPUSH, 0); + fspr_socket_opt_set(sock, APR_TCP_NOPUSH, 0); return rv; } @@ -364,7 +364,7 @@ apr_status_t apr_socket_sendfile(apr_socket_t *sock, apr_file_t *file, if (rv < *len) { *len = nbytes; - arv = apr_socket_opt_set(sock, APR_TCP_NOPUSH, 0); + arv = fspr_socket_opt_set(sock, APR_TCP_NOPUSH, 0); if (rv > 0) { /* If this was a partial write, return now with the @@ -388,19 +388,19 @@ apr_status_t apr_socket_sendfile(apr_socket_t *sock, apr_file_t *file, /* Now write the footers */ if (hdtr->numtrailers > 0) { - apr_size_t trbytes; - arv = apr_socket_sendv(sock, hdtr->trailers, hdtr->numtrailers, + fspr_size_t trbytes; + arv = fspr_socket_sendv(sock, hdtr->trailers, hdtr->numtrailers, &trbytes); nbytes += trbytes; if (arv != APR_SUCCESS) { *len = nbytes; rv = errno; - apr_socket_opt_set(sock, APR_TCP_NOPUSH, 0); + fspr_socket_opt_set(sock, APR_TCP_NOPUSH, 0); return rv; } } - apr_socket_opt_set(sock, APR_TCP_NOPUSH, 0); + fspr_socket_opt_set(sock, APR_TCP_NOPUSH, 0); (*len) = nbytes; return rv < 0 ? errno : APR_SUCCESS; @@ -409,11 +409,11 @@ apr_status_t apr_socket_sendfile(apr_socket_t *sock, apr_file_t *file, #elif defined(DARWIN) /* OS/X Release 10.5 or greater */ -apr_status_t apr_socket_sendfile(apr_socket_t * sock, apr_file_t * file, - apr_hdtr_t * hdtr, apr_off_t * offset, - apr_size_t * len, apr_int32_t flags) +fspr_status_t fspr_socket_sendfile(fspr_socket_t * sock, fspr_file_t * file, + fspr_hdtr_t * hdtr, fspr_off_t * offset, + fspr_size_t * len, fspr_int32_t flags) { - apr_off_t nbytes = *len; + fspr_off_t nbytes = *len; int rv; struct sf_hdtr headerstruct; @@ -432,9 +432,9 @@ apr_status_t apr_socket_sendfile(apr_socket_t * sock, apr_file_t * file, /* BSD can send the headers/footers as part of the system call */ do { if (sock->options & APR_INCOMPLETE_WRITE) { - apr_status_t arv; + fspr_status_t arv; sock->options &= ~APR_INCOMPLETE_WRITE; - arv = apr_wait_for_io_or_timeout(NULL, sock, 0); + arv = fspr_wait_for_io_or_timeout(NULL, sock, 0); if (arv != APR_SUCCESS) { *len = 0; return arv; @@ -494,7 +494,7 @@ apr_status_t apr_socket_sendfile(apr_socket_t * sock, apr_file_t * file, } if ((rv == -1) && (errno == EAGAIN) && (sock->timeout > 0)) { - apr_status_t arv = apr_wait_for_io_or_timeout(NULL, sock, 0); + fspr_status_t arv = fspr_wait_for_io_or_timeout(NULL, sock, 0); if (arv != APR_SUCCESS) { *len = 0; return arv; @@ -512,9 +512,9 @@ apr_status_t apr_socket_sendfile(apr_socket_t * sock, apr_file_t * file, #elif defined(__FreeBSD__) || defined(__DragonFly__) /* Release 3.1 or greater */ -apr_status_t apr_socket_sendfile(apr_socket_t * sock, apr_file_t * file, - apr_hdtr_t * hdtr, apr_off_t * offset, - apr_size_t * len, apr_int32_t flags) +fspr_status_t fspr_socket_sendfile(fspr_socket_t * sock, fspr_file_t * file, + fspr_hdtr_t * hdtr, fspr_off_t * offset, + fspr_size_t * len, fspr_int32_t flags) { off_t nbytes = 0; int rv; @@ -522,7 +522,7 @@ apr_status_t apr_socket_sendfile(apr_socket_t * sock, apr_file_t * file, int i; #endif struct sf_hdtr headerstruct; - apr_size_t bytes_to_send = *len; + fspr_size_t bytes_to_send = *len; /* Ignore flags for now. */ flags = 0; @@ -555,9 +555,9 @@ apr_status_t apr_socket_sendfile(apr_socket_t * sock, apr_file_t * file, /* FreeBSD can send the headers/footers as part of the system call */ do { if (sock->options & APR_INCOMPLETE_WRITE) { - apr_status_t arv; + fspr_status_t arv; sock->options &= ~APR_INCOMPLETE_WRITE; - arv = apr_wait_for_io_or_timeout(NULL, sock, 0); + arv = fspr_wait_for_io_or_timeout(NULL, sock, 0); if (arv != APR_SUCCESS) { *len = 0; return arv; @@ -618,7 +618,7 @@ apr_status_t apr_socket_sendfile(apr_socket_t * sock, apr_file_t * file, } if ((rv == -1) && (errno == EAGAIN) && (sock->timeout > 0)) { - apr_status_t arv = apr_wait_for_io_or_timeout(NULL, sock, 0); + fspr_status_t arv = fspr_wait_for_io_or_timeout(NULL, sock, 0); if (arv != APR_SUCCESS) { *len = 0; return arv; @@ -639,13 +639,13 @@ apr_status_t apr_socket_sendfile(apr_socket_t * sock, apr_file_t * file, sendfile(int fd, int s, off_t offset, off_t *len, struct sf_hdtr *hdtr, int flags); */ -apr_status_t apr_socket_sendfile(apr_socket_t * sock, apr_file_t * file, - apr_hdtr_t * hdtr, apr_off_t * offset, - apr_size_t * len, apr_int32_t flags) +fspr_status_t fspr_socket_sendfile(fspr_socket_t * sock, fspr_file_t * file, + fspr_hdtr_t * hdtr, fspr_off_t * offset, + fspr_size_t * len, fspr_int32_t flags) { int rv, i; struct sf_hdtr headerstruct; - apr_off_t bytes_to_send = *len; + fspr_off_t bytes_to_send = *len; /* Ignore flags for now. */ flags = 0; @@ -670,9 +670,9 @@ apr_status_t apr_socket_sendfile(apr_socket_t * sock, apr_file_t * file, do { if (sock->options & APR_INCOMPLETE_WRITE) { - apr_status_t arv; + fspr_status_t arv; sock->options &= ~APR_INCOMPLETE_WRITE; - arv = apr_wait_for_io_or_timeout(NULL, sock, 0); + arv = fspr_wait_for_io_or_timeout(NULL, sock, 0); if (arv != APR_SUCCESS) { *len = 0; return arv; @@ -736,7 +736,7 @@ apr_status_t apr_socket_sendfile(apr_socket_t * sock, apr_file_t * file, } if ((rv == -1) && (errno == EAGAIN) && (sock->timeout > 0)) { - apr_status_t arv = apr_wait_for_io_or_timeout(NULL, sock, 0); + fspr_status_t arv = fspr_wait_for_io_or_timeout(NULL, sock, 0); if (arv != APR_SUCCESS) { *len = 0; return arv; @@ -767,32 +767,32 @@ apr_status_t apr_socket_sendfile(apr_socket_t * sock, apr_file_t * file, * if nbytes == 0, the rest of the file (from offset) is sent */ -apr_status_t apr_socket_sendfile(apr_socket_t *sock, apr_file_t *file, - apr_hdtr_t *hdtr, apr_off_t *offset, - apr_size_t *len, apr_int32_t flags) +fspr_status_t fspr_socket_sendfile(fspr_socket_t *sock, fspr_file_t *file, + fspr_hdtr_t *hdtr, fspr_off_t *offset, + fspr_size_t *len, fspr_int32_t flags) { int i; - apr_ssize_t rc; - apr_size_t nbytes = *len, headerlen, trailerlen; + fspr_ssize_t rc; + fspr_size_t nbytes = *len, headerlen, trailerlen; struct iovec hdtrarray[2]; char *headerbuf, *trailerbuf; #if APR_HAS_LARGE_FILES && defined(HAVE_SENDFILE64) /* later HP-UXes have a sendfile64() */ #define sendfile sendfile64 - apr_off_t off = *offset; + fspr_off_t off = *offset; #elif APR_HAS_LARGE_FILES && SIZEOF_OFF_T == 4 /* HP-UX 11.00 doesn't have a sendfile64(): fail if trying to send * past the 2Gb limit */ off_t off; - if ((apr_int64_t)*offset + *len > INT_MAX) { + if ((fspr_int64_t)*offset + *len > INT_MAX) { return EINVAL; } off = *offset; #else - apr_off_t off = *offset; + fspr_off_t off = *offset; #endif if (!hdtr) { @@ -821,7 +821,7 @@ apr_status_t apr_socket_sendfile(apr_socket_t *sock, apr_file_t *file, } /* XXX: BUHHH? wow, what a memory leak! */ - headerbuf = hdtrarray[0].iov_base = apr_palloc(sock->pool, headerlen); + headerbuf = hdtrarray[0].iov_base = fspr_palloc(sock->pool, headerlen); hdtrarray[0].iov_len = headerlen; for (i = 0; i < hdtr->numheaders; i++) { @@ -846,7 +846,7 @@ apr_status_t apr_socket_sendfile(apr_socket_t *sock, apr_file_t *file, } /* XXX: BUHHH? wow, what a memory leak! */ - trailerbuf = hdtrarray[1].iov_base = apr_palloc(sock->pool, trailerlen); + trailerbuf = hdtrarray[1].iov_base = fspr_palloc(sock->pool, trailerlen); hdtrarray[1].iov_len = trailerlen; for (i = 0; i < hdtr->numtrailers; i++) { @@ -872,7 +872,7 @@ apr_status_t apr_socket_sendfile(apr_socket_t *sock, apr_file_t *file, while ((rc == -1) && (errno == EAGAIN || errno == EWOULDBLOCK) && (sock->timeout > 0)) { - apr_status_t arv = apr_wait_for_io_or_timeout(NULL, sock, 0); + fspr_status_t arv = fspr_wait_for_io_or_timeout(NULL, sock, 0); if (arv != APR_SUCCESS) { *len = 0; @@ -915,13 +915,13 @@ apr_status_t apr_socket_sendfile(apr_socket_t *sock, apr_file_t *file, * AIX - version 4.3.2 with APAR IX85388, or version 4.3.3 and above * OS/390 - V2R7 and above */ -apr_status_t apr_socket_sendfile(apr_socket_t * sock, apr_file_t * file, - apr_hdtr_t * hdtr, apr_off_t * offset, - apr_size_t * len, apr_int32_t flags) +fspr_status_t fspr_socket_sendfile(fspr_socket_t * sock, fspr_file_t * file, + fspr_hdtr_t * hdtr, fspr_off_t * offset, + fspr_size_t * len, fspr_int32_t flags) { int i, ptr, rv = 0; void * hbuf=NULL, * tbuf=NULL; - apr_status_t arv; + fspr_status_t arv; struct sf_parms parms; if (!hdtr) { @@ -951,13 +951,13 @@ apr_status_t apr_socket_sendfile(apr_socket_t * sock, apr_file_t * file, parms.header_length += hdtr->headers[i].iov_len; } #if 0 - /* Keepalives make apr_palloc a bad idea */ + /* Keepalives make fspr_palloc a bad idea */ hbuf = malloc(parms.header_length); #else /* but headers are small, so maybe we can hold on to the * memory for the life of the socket... */ - hbuf = apr_palloc(sock->pool, parms.header_length); + hbuf = fspr_palloc(sock->pool, parms.header_length); #endif ptr = 0; for (i = 0; i < hdtr->numheaders; i++) { @@ -980,10 +980,10 @@ apr_status_t apr_socket_sendfile(apr_socket_t * sock, apr_file_t * file, parms.trailer_length += hdtr->trailers[i].iov_len; } #if 0 - /* Keepalives make apr_palloc a bad idea */ + /* Keepalives make fspr_palloc a bad idea */ tbuf = malloc(parms.trailer_length); #else - tbuf = apr_palloc(sock->pool, parms.trailer_length); + tbuf = fspr_palloc(sock->pool, parms.trailer_length); #endif ptr = 0; for (i = 0; i < hdtr->numtrailers; i++) { @@ -1020,7 +1020,7 @@ apr_status_t apr_socket_sendfile(apr_socket_t * sock, apr_file_t * file, while ((rv == -1) && (errno == EAGAIN || errno == EWOULDBLOCK) && (sock->timeout > 0)) { do_select: - arv = apr_wait_for_io_or_timeout(NULL, sock, 0); + arv = fspr_wait_for_io_or_timeout(NULL, sock, 0); if (arv != APR_SUCCESS) { *len = 0; return arv; @@ -1077,15 +1077,15 @@ apr_status_t apr_socket_sendfile(apr_socket_t * sock, apr_file_t * file, #define sendfilev sendfilev64 #endif -apr_status_t apr_socket_sendfile(apr_socket_t *sock, apr_file_t *file, - apr_hdtr_t *hdtr, apr_off_t *offset, - apr_size_t *len, apr_int32_t flags) +fspr_status_t fspr_socket_sendfile(fspr_socket_t *sock, fspr_file_t *file, + fspr_hdtr_t *hdtr, fspr_off_t *offset, + fspr_size_t *len, fspr_int32_t flags) { - apr_status_t rv, arv; - apr_size_t nbytes; + fspr_status_t rv, arv; + fspr_size_t nbytes; sendfilevec_t *sfv; int vecs, curvec, i, repeat; - apr_size_t requested_len = 0; + fspr_size_t requested_len = 0; if (!hdtr) { hdtr = &no_hdtr; @@ -1096,7 +1096,7 @@ apr_status_t apr_socket_sendfile(apr_socket_t *sock, apr_file_t *file, /* Calculate how much space we need. */ vecs = hdtr->numheaders + hdtr->numtrailers + 1; - sfv = apr_palloc(sock->pool, sizeof(sendfilevec_t) * vecs); + sfv = fspr_palloc(sock->pool, sizeof(sendfilevec_t) * vecs); curvec = 0; @@ -1140,7 +1140,7 @@ apr_status_t apr_socket_sendfile(apr_socket_t *sock, apr_file_t *file, */ if (sock->options & APR_INCOMPLETE_WRITE) { sock->options &= ~APR_INCOMPLETE_WRITE; - arv = apr_wait_for_io_or_timeout(NULL, sock, 0); + arv = fspr_wait_for_io_or_timeout(NULL, sock, 0); if (arv != APR_SUCCESS) { *len = 0; return arv; @@ -1170,7 +1170,7 @@ apr_status_t apr_socket_sendfile(apr_socket_t *sock, apr_file_t *file, rv = 0; } else if (!arv && (sock->timeout > 0)) { - apr_status_t t = apr_wait_for_io_or_timeout(NULL, sock, 0); + fspr_status_t t = fspr_wait_for_io_or_timeout(NULL, sock, 0); if (t != APR_SUCCESS) { *len = 0; @@ -1198,7 +1198,7 @@ apr_status_t apr_socket_sendfile(apr_socket_t *sock, apr_file_t *file, #else #error APR has detected sendfile on your system, but nobody has written a #error version of it for APR yet. To get past this, either write -#error apr_socket_sendfile or change APR_HAS_SENDFILE in apr.h to 0. +#error fspr_socket_sendfile or change APR_HAS_SENDFILE in apr.h to 0. #endif /* __linux__, __FreeBSD__, __DragonFly__, __HPUX__, _AIX, __MVS__, Tru64/OSF1 */ diff --git a/libs/apr/network_io/unix/sockaddr.c b/libs/apr/network_io/unix/sockaddr.c index 33d2400a74c..fd9aae8108e 100644 --- a/libs/apr/network_io/unix/sockaddr.c +++ b/libs/apr/network_io/unix/sockaddr.c @@ -14,28 +14,28 @@ * limitations under the License. */ -#include "apr_arch_networkio.h" -#include "apr_strings.h" -#include "apr.h" -#include "apr_lib.h" -#include "apr_strings.h" -#include "apr_private.h" +#include "fspr_arch_networkio.h" +#include "fspr_strings.h" +#include "fspr.h" +#include "fspr_lib.h" +#include "fspr_strings.h" +#include "fspr_private.h" #if APR_HAVE_STDLIB_H #include #endif #define APR_WANT_STRFUNC -#include "apr_want.h" +#include "fspr_want.h" -struct apr_ipsubnet_t { +struct fspr_ipsubnet_t { int family; #if APR_HAVE_IPV6 - apr_uint32_t sub[4]; /* big enough for IPv4 and IPv6 addresses */ - apr_uint32_t mask[4]; + fspr_uint32_t sub[4]; /* big enough for IPv4 and IPv6 addresses */ + fspr_uint32_t mask[4]; #else - apr_uint32_t sub[1]; - apr_uint32_t mask[1]; + fspr_uint32_t sub[1]; + fspr_uint32_t mask[1]; #endif }; @@ -68,12 +68,12 @@ static void *getservbyname(const char *name, const char *proto) } #endif -static apr_status_t get_local_addr(apr_socket_t *sock) +static fspr_status_t get_local_addr(fspr_socket_t *sock) { sock->local_addr->salen = sizeof(sock->local_addr->sa); if (getsockname(sock->socketdes, (struct sockaddr *)&sock->local_addr->sa, &sock->local_addr->salen) < 0) { - return apr_get_netos_error(); + return fspr_get_netos_error(); } else { sock->local_port_unknown = sock->local_interface_unknown = 0; @@ -83,12 +83,12 @@ static apr_status_t get_local_addr(apr_socket_t *sock) } } -static apr_status_t get_remote_addr(apr_socket_t *sock) +static fspr_status_t get_remote_addr(fspr_socket_t *sock) { sock->remote_addr->salen = sizeof(sock->remote_addr->sa); if (getpeername(sock->socketdes, (struct sockaddr *)&sock->remote_addr->sa, &sock->remote_addr->salen) < 0) { - return apr_get_netos_error(); + return fspr_get_netos_error(); } else { sock->remote_addr_unknown = 0; @@ -98,11 +98,11 @@ static apr_status_t get_remote_addr(apr_socket_t *sock) } } -APR_DECLARE(apr_status_t) apr_sockaddr_ip_get(char **addr, - apr_sockaddr_t *sockaddr) +APR_DECLARE(fspr_status_t) fspr_sockaddr_ip_get(char **addr, + fspr_sockaddr_t *sockaddr) { - *addr = apr_palloc(sockaddr->pool, sockaddr->addr_str_len); - apr_inet_ntop(sockaddr->family, + *addr = fspr_palloc(sockaddr->pool, sockaddr->addr_str_len); + fspr_inet_ntop(sockaddr->family, sockaddr->ipaddr_ptr, *addr, sockaddr->addr_str_len); @@ -119,7 +119,7 @@ APR_DECLARE(apr_status_t) apr_sockaddr_ip_get(char **addr, return APR_SUCCESS; } -void apr_sockaddr_vars_set(apr_sockaddr_t *addr, int family, apr_port_t port) +void fspr_sockaddr_vars_set(fspr_sockaddr_t *addr, int family, fspr_port_t port) { addr->family = family; addr->sa.sin.sin_family = family; @@ -145,13 +145,13 @@ void apr_sockaddr_vars_set(apr_sockaddr_t *addr, int family, apr_port_t port) #endif } -APR_DECLARE(apr_status_t) apr_socket_addr_get(apr_sockaddr_t **sa, - apr_interface_e which, - apr_socket_t *sock) +APR_DECLARE(fspr_status_t) fspr_socket_addr_get(fspr_sockaddr_t **sa, + fspr_interface_e which, + fspr_socket_t *sock) { if (which == APR_LOCAL) { if (sock->local_interface_unknown || sock->local_port_unknown) { - apr_status_t rv = get_local_addr(sock); + fspr_status_t rv = get_local_addr(sock); if (rv != APR_SUCCESS) { return rv; @@ -161,7 +161,7 @@ APR_DECLARE(apr_status_t) apr_socket_addr_get(apr_sockaddr_t **sa, } else if (which == APR_REMOTE) { if (sock->remote_addr_unknown) { - apr_status_t rv = get_remote_addr(sock); + fspr_status_t rv = get_remote_addr(sock); if (rv != APR_SUCCESS) { return rv; @@ -176,15 +176,15 @@ APR_DECLARE(apr_status_t) apr_socket_addr_get(apr_sockaddr_t **sa, return APR_SUCCESS; } -APR_DECLARE(apr_status_t) apr_parse_addr_port(char **addr, +APR_DECLARE(fspr_status_t) fspr_parse_addr_port(char **addr, char **scope_id, - apr_port_t *port, + fspr_port_t *port, const char *str, - apr_pool_t *p) + fspr_pool_t *p) { const char *ch, *lastchar; int big_port; - apr_size_t addrlen; + fspr_size_t addrlen; *addr = NULL; /* assume not specified */ *scope_id = NULL; /* assume not specified */ @@ -194,7 +194,7 @@ APR_DECLARE(apr_status_t) apr_parse_addr_port(char **addr, * is specified in the string. */ ch = lastchar = str + strlen(str) - 1; - while (ch >= str && apr_isdigit(*ch)) { + while (ch >= str && fspr_isdigit(*ch)) { --ch; } @@ -245,7 +245,7 @@ APR_DECLARE(apr_status_t) apr_parse_addr_port(char **addr, return APR_EINVAL; } addrlen = scope_delim - str - 1; - *scope_id = apr_palloc(p, end_bracket - scope_delim); + *scope_id = fspr_palloc(p, end_bracket - scope_delim); memcpy(*scope_id, scope_delim + 1, end_bracket - scope_delim - 1); (*scope_id)[end_bracket - scope_delim - 1] = '\0'; } @@ -253,12 +253,12 @@ APR_DECLARE(apr_status_t) apr_parse_addr_port(char **addr, addrlen = addrlen - 2; /* minus 2 for '[' and ']' */ } - *addr = apr_palloc(p, addrlen + 1); + *addr = fspr_palloc(p, addrlen + 1); memcpy(*addr, str + 1, addrlen); (*addr)[addrlen] = '\0'; - if (apr_inet_pton(AF_INET6, *addr, &ipaddr) != 1) { + if (fspr_inet_pton(AF_INET6, *addr, &ipaddr) != 1) { *addr = NULL; *scope_id = NULL; *port = 0; @@ -271,7 +271,7 @@ APR_DECLARE(apr_status_t) apr_parse_addr_port(char **addr, /* XXX If '%' is not a valid char in a DNS name, we *could* check * for bogus scope ids first. */ - *addr = apr_palloc(p, addrlen + 1); + *addr = fspr_palloc(p, addrlen + 1); memcpy(*addr, str, addrlen); (*addr)[addrlen] = '\0'; } @@ -280,13 +280,13 @@ APR_DECLARE(apr_status_t) apr_parse_addr_port(char **addr, #if defined(HAVE_GETADDRINFO) -static apr_status_t call_resolver(apr_sockaddr_t **sa, - const char *hostname, apr_int32_t family, - apr_port_t port, apr_int32_t flags, - apr_pool_t *p) +static fspr_status_t call_resolver(fspr_sockaddr_t **sa, + const char *hostname, fspr_int32_t family, + fspr_port_t port, fspr_int32_t flags, + fspr_pool_t *p) { struct addrinfo hints, *ai, *ai_list; - apr_sockaddr_t *prev_sa; + fspr_sockaddr_t *prev_sa; int error; char *servname = NULL; @@ -331,7 +331,7 @@ static apr_status_t call_resolver(apr_sockaddr_t **sa, } else #endif /* _AIX */ - servname = apr_itoa(p, port); + servname = fspr_itoa(p, port); #endif /* OSF1 */ } error = getaddrinfo(hostname, servname, &hints, &ai_list); @@ -365,7 +365,7 @@ static apr_status_t call_resolver(apr_sockaddr_t **sa, prev_sa = NULL; ai = ai_list; while (ai) { /* while more addresses to report */ - apr_sockaddr_t *new_sa; + fspr_sockaddr_t *new_sa; /* Ignore anything bogus: getaddrinfo in some old versions of * glibc will return AF_UNIX entries for APR_UNSPEC+AI_PASSIVE @@ -375,15 +375,15 @@ static apr_status_t call_resolver(apr_sockaddr_t **sa, continue; } - new_sa = apr_pcalloc(p, sizeof(apr_sockaddr_t)); + new_sa = fspr_pcalloc(p, sizeof(fspr_sockaddr_t)); new_sa->pool = p; memcpy(&new_sa->sa, ai->ai_addr, ai->ai_addrlen); - apr_sockaddr_vars_set(new_sa, ai->ai_family, port); + fspr_sockaddr_vars_set(new_sa, ai->ai_family, port); if (!prev_sa) { /* first element in new list */ if (hostname) { - new_sa->hostname = apr_pstrdup(p, hostname); + new_sa->hostname = fspr_pstrdup(p, hostname); } *sa = new_sa; } @@ -399,13 +399,13 @@ static apr_status_t call_resolver(apr_sockaddr_t **sa, return APR_SUCCESS; } -static apr_status_t find_addresses(apr_sockaddr_t **sa, - const char *hostname, apr_int32_t family, - apr_port_t port, apr_int32_t flags, - apr_pool_t *p) +static fspr_status_t find_addresses(fspr_sockaddr_t **sa, + const char *hostname, fspr_int32_t family, + fspr_port_t port, fspr_int32_t flags, + fspr_pool_t *p) { if (flags & APR_IPV4_ADDR_OK) { - apr_status_t error = call_resolver(sa, hostname, AF_INET, port, flags, p); + fspr_status_t error = call_resolver(sa, hostname, AF_INET, port, flags, p); #if APR_HAVE_IPV6 if (error) { @@ -417,7 +417,7 @@ static apr_status_t find_addresses(apr_sockaddr_t **sa, } #if APR_HAVE_IPV6 else if (flags & APR_IPV6_ADDR_OK) { - apr_status_t error = call_resolver(sa, hostname, AF_INET6, port, flags, p); + fspr_status_t error = call_resolver(sa, hostname, AF_INET6, port, flags, p); if (error) { family = AF_INET; /* try again */ @@ -433,13 +433,13 @@ static apr_status_t find_addresses(apr_sockaddr_t **sa, #else /* end of HAVE_GETADDRINFO code */ -static apr_status_t find_addresses(apr_sockaddr_t **sa, - const char *hostname, apr_int32_t family, - apr_port_t port, apr_int32_t flags, - apr_pool_t *p) +static fspr_status_t find_addresses(fspr_sockaddr_t **sa, + const char *hostname, fspr_int32_t family, + fspr_port_t port, fspr_int32_t flags, + fspr_pool_t *p) { struct hostent *hp; - apr_sockaddr_t *prev_sa; + fspr_sockaddr_t *prev_sa; int curaddr; #if APR_HAS_THREADS && !defined(GETHOSTBYNAME_IS_THREAD_SAFE) && \ defined(HAVE_GETHOSTBYNAME_R) && !defined(BEOS) @@ -498,7 +498,7 @@ static apr_status_t find_addresses(apr_sockaddr_t **sa, if (!hp) { #ifdef WIN32 - return apr_get_netos_error(); + return fspr_get_netos_error(); #else return (h_errno + APR_OS_START_SYSERR); #endif @@ -508,15 +508,15 @@ static apr_status_t find_addresses(apr_sockaddr_t **sa, prev_sa = NULL; curaddr = 0; while (hp->h_addr_list[curaddr]) { - apr_sockaddr_t *new_sa = apr_pcalloc(p, sizeof(apr_sockaddr_t)); + fspr_sockaddr_t *new_sa = fspr_pcalloc(p, sizeof(fspr_sockaddr_t)); new_sa->pool = p; new_sa->sa.sin.sin_addr = *(struct in_addr *)hp->h_addr_list[curaddr]; - apr_sockaddr_vars_set(new_sa, AF_INET, port); + fspr_sockaddr_vars_set(new_sa, AF_INET, port); if (!prev_sa) { /* first element in new list */ if (orig_hostname) { - new_sa->hostname = apr_pstrdup(p, orig_hostname); + new_sa->hostname = fspr_pstrdup(p, orig_hostname); } *sa = new_sa; } @@ -534,12 +534,12 @@ static apr_status_t find_addresses(apr_sockaddr_t **sa, #endif /* end of !HAVE_GETADDRINFO code */ -APR_DECLARE(apr_status_t) apr_sockaddr_info_get(apr_sockaddr_t **sa, +APR_DECLARE(fspr_status_t) fspr_sockaddr_info_get(fspr_sockaddr_t **sa, const char *hostname, - apr_int32_t family, apr_port_t port, - apr_int32_t flags, apr_pool_t *p) + fspr_int32_t family, fspr_port_t port, + fspr_int32_t flags, fspr_pool_t *p) { - apr_int32_t masked; + fspr_int32_t masked; *sa = NULL; if ((masked = flags & (APR_IPV4_ADDR_OK | APR_IPV6_ADDR_OK))) { @@ -568,9 +568,9 @@ APR_DECLARE(apr_status_t) apr_sockaddr_info_get(apr_sockaddr_t **sa, return find_addresses(sa, hostname, family, port, flags, p); } -APR_DECLARE(apr_status_t) apr_getnameinfo(char **hostname, - apr_sockaddr_t *sockaddr, - apr_int32_t flags) +APR_DECLARE(fspr_status_t) fspr_getnameinfo(char **hostname, + fspr_sockaddr_t *sockaddr, + fspr_int32_t flags) { #if defined(HAVE_GETNAMEINFO) int rc; @@ -597,7 +597,7 @@ APR_DECLARE(apr_status_t) apr_getnameinfo(char **hostname, struct sockaddr_in tmpsa; tmpsa.sin_family = AF_INET; tmpsa.sin_port = 0; - tmpsa.sin_addr.s_addr = ((apr_uint32_t *)sockaddr->ipaddr_ptr)[3]; + tmpsa.sin_addr.s_addr = ((fspr_uint32_t *)sockaddr->ipaddr_ptr)[3]; #ifdef SIN6_LEN tmpsa.sin_len = sizeof(tmpsa); #endif @@ -635,7 +635,7 @@ APR_DECLARE(apr_status_t) apr_getnameinfo(char **hostname, return rc + APR_OS_START_EAIERR; /* return the EAI_ error */ } } - *hostname = sockaddr->hostname = apr_pstrdup(sockaddr->pool, + *hostname = sockaddr->hostname = fspr_pstrdup(sockaddr->pool, tmphostname); return APR_SUCCESS; #else @@ -678,12 +678,12 @@ APR_DECLARE(apr_status_t) apr_getnameinfo(char **hostname, #endif if (hptr) { - *hostname = sockaddr->hostname = apr_pstrdup(sockaddr->pool, hptr->h_name); + *hostname = sockaddr->hostname = fspr_pstrdup(sockaddr->pool, hptr->h_name); return APR_SUCCESS; } *hostname = NULL; #if defined(WIN32) - return apr_get_netos_error(); + return fspr_get_netos_error(); #elif defined(OS2) return h_errno; #else @@ -692,7 +692,7 @@ APR_DECLARE(apr_status_t) apr_getnameinfo(char **hostname, #endif } -APR_DECLARE(apr_status_t) apr_getservbyname(apr_sockaddr_t *sockaddr, +APR_DECLARE(fspr_status_t) fspr_getservbyname(fspr_sockaddr_t *sockaddr, const char *servname) { struct servent *se; @@ -702,7 +702,7 @@ APR_DECLARE(apr_status_t) apr_getservbyname(apr_sockaddr_t *sockaddr, if ((se = getservbyname(servname, NULL)) != NULL){ sockaddr->port = htons(se->s_port); - sockaddr->servname = apr_pstrdup(sockaddr->pool, servname); + sockaddr->servname = fspr_pstrdup(sockaddr->pool, servname); sockaddr->sa.sin.sin_port = se->s_port; return APR_SUCCESS; } @@ -717,8 +717,8 @@ APR_DECLARE(apr_status_t) apr_getservbyname(apr_sockaddr_t *sockaddr, &((struct in6_addr *)(b)->ipaddr_ptr)->s6_addr[12], \ (a)->ipaddr_len)) -APR_DECLARE(int) apr_sockaddr_equal(const apr_sockaddr_t *addr1, - const apr_sockaddr_t *addr2) +APR_DECLARE(int) fspr_sockaddr_equal(const fspr_sockaddr_t *addr1, + const fspr_sockaddr_t *addr2) { if (addr1->ipaddr_len == addr2->ipaddr_len && !memcmp(addr1->ipaddr_ptr, addr2->ipaddr_ptr, addr1->ipaddr_len)) { @@ -735,7 +735,7 @@ APR_DECLARE(int) apr_sockaddr_equal(const apr_sockaddr_t *addr1, return 0; /* not equal */ } -static apr_status_t parse_network(apr_ipsubnet_t *ipsub, const char *network) +static fspr_status_t parse_network(fspr_ipsubnet_t *ipsub, const char *network) { /* legacy syntax for ip addrs: a.b.c. ==> a.b.c.0/24 for example */ int shift; @@ -757,10 +757,10 @@ static apr_status_t parse_network(apr_ipsubnet_t *ipsub, const char *network) shift = 24; while (*s) { t = s; - if (!apr_isdigit(*t)) { + if (!fspr_isdigit(*t)) { return APR_EBADIP; } - while (apr_isdigit(*t)) { + while (fspr_isdigit(*t)) { ++t; } if (*t == '.') { @@ -793,7 +793,7 @@ static apr_status_t parse_network(apr_ipsubnet_t *ipsub, const char *network) * APR_BADMASK mask portion is not valid */ -static apr_status_t parse_ip(apr_ipsubnet_t *ipsub, const char *ipstr, int network_allowed) +static fspr_status_t parse_ip(fspr_ipsubnet_t *ipsub, const char *ipstr, int network_allowed) { /* supported flavors of IP: * @@ -810,10 +810,10 @@ static apr_status_t parse_ip(apr_ipsubnet_t *ipsub, const char *ipstr, int netwo int rc; #if APR_HAVE_IPV6 - rc = apr_inet_pton(AF_INET6, ipstr, ipsub->sub); + rc = fspr_inet_pton(AF_INET6, ipstr, ipsub->sub); if (rc == 1) { if (IN6_IS_ADDR_V4MAPPED((struct in6_addr *)ipsub->sub)) { - /* apr_ipsubnet_test() assumes that we don't create IPv4-mapped IPv6 + /* fspr_ipsubnet_test() assumes that we don't create IPv4-mapped IPv6 * addresses; this of course forces the user to specify IPv4 addresses * in a.b.c.d style instead of ::ffff:a.b.c.d style. */ @@ -824,7 +824,7 @@ static apr_status_t parse_ip(apr_ipsubnet_t *ipsub, const char *ipstr, int netwo else #endif { - rc = apr_inet_pton(AF_INET, ipstr, ipsub->sub); + rc = fspr_inet_pton(AF_INET, ipstr, ipsub->sub); if (rc == 1) { ipsub->family = AF_INET; } @@ -848,28 +848,28 @@ static int looks_like_ip(const char *ipstr) } /* simple IPv4 address string check */ - while ((*ipstr == '.') || apr_isdigit(*ipstr)) + while ((*ipstr == '.') || fspr_isdigit(*ipstr)) ipstr++; return (*ipstr == '\0'); } -static void fix_subnet(apr_ipsubnet_t *ipsub) +static void fix_subnet(fspr_ipsubnet_t *ipsub) { /* in case caller specified more bits in network address than are * valid according to the mask, turn off the extra bits */ int i; - for (i = 0; i < sizeof ipsub->mask / sizeof(apr_int32_t); i++) { + for (i = 0; i < sizeof ipsub->mask / sizeof(fspr_int32_t); i++) { ipsub->sub[i] &= ipsub->mask[i]; } } /* be sure not to store any IPv4 address as a v4-mapped IPv6 address */ -APR_DECLARE(apr_status_t) apr_ipsubnet_create(apr_ipsubnet_t **ipsub, const char *ipstr, - const char *mask_or_numbits, apr_pool_t *p) +APR_DECLARE(fspr_status_t) fspr_ipsubnet_create(fspr_ipsubnet_t **ipsub, const char *ipstr, + const char *mask_or_numbits, fspr_pool_t *p) { - apr_status_t rv; + fspr_status_t rv; char *endptr; long bits, maxbits = 32; @@ -882,7 +882,7 @@ APR_DECLARE(apr_status_t) apr_ipsubnet_create(apr_ipsubnet_t **ipsub, const char return APR_EINVAL; } - *ipsub = apr_pcalloc(p, sizeof(apr_ipsubnet_t)); + *ipsub = fspr_pcalloc(p, sizeof(fspr_ipsubnet_t)); /* assume ipstr is an individual IP address, not a subnet */ memset((*ipsub)->mask, 0xFF, sizeof (*ipsub)->mask); @@ -902,7 +902,7 @@ APR_DECLARE(apr_status_t) apr_ipsubnet_create(apr_ipsubnet_t **ipsub, const char if (*endptr == '\0' && bits > 0 && bits <= maxbits) { /* valid num-bits string; fill in mask appropriately */ int cur_entry = 0; - apr_int32_t cur_bit_value; + fspr_int32_t cur_bit_value; memset((*ipsub)->mask, 0, sizeof (*ipsub)->mask); while (bits > 32) { @@ -918,7 +918,7 @@ APR_DECLARE(apr_status_t) apr_ipsubnet_create(apr_ipsubnet_t **ipsub, const char } (*ipsub)->mask[cur_entry] = htonl((*ipsub)->mask[cur_entry]); } - else if (apr_inet_pton(AF_INET, mask_or_numbits, (*ipsub)->mask) == 1 && + else if (fspr_inet_pton(AF_INET, mask_or_numbits, (*ipsub)->mask) == 1 && (*ipsub)->family == AF_INET) { /* valid IPv4 netmask */ } @@ -932,7 +932,7 @@ APR_DECLARE(apr_status_t) apr_ipsubnet_create(apr_ipsubnet_t **ipsub, const char return APR_SUCCESS; } -APR_DECLARE(int) apr_ipsubnet_test(apr_ipsubnet_t *ipsub, apr_sockaddr_t *sa) +APR_DECLARE(int) fspr_ipsubnet_test(fspr_ipsubnet_t *ipsub, fspr_sockaddr_t *sa) { #if APR_HAVE_IPV6 /* XXX This line will segv on Win32 build with APR_HAVE_IPV6, @@ -946,12 +946,12 @@ APR_DECLARE(int) apr_ipsubnet_test(apr_ipsubnet_t *ipsub, apr_sockaddr_t *sa) } else if (IN6_IS_ADDR_V4MAPPED((struct in6_addr *)sa->ipaddr_ptr)) { if (ipsub->family == AF_INET && - (((apr_uint32_t *)sa->ipaddr_ptr)[3] & ipsub->mask[0]) == ipsub->sub[0]) { + (((fspr_uint32_t *)sa->ipaddr_ptr)[3] & ipsub->mask[0]) == ipsub->sub[0]) { return 1; } } else { - apr_uint32_t *addr = (apr_uint32_t *)sa->ipaddr_ptr; + fspr_uint32_t *addr = (fspr_uint32_t *)sa->ipaddr_ptr; if ((addr[0] & ipsub->mask[0]) == ipsub->sub[0] && (addr[1] & ipsub->mask[1]) == ipsub->sub[1] && diff --git a/libs/apr/network_io/unix/sockets.c b/libs/apr/network_io/unix/sockets.c index 72dab7b89cf..6475599cfd7 100644 --- a/libs/apr/network_io/unix/sockets.c +++ b/libs/apr/network_io/unix/sockets.c @@ -14,12 +14,12 @@ * limitations under the License. */ -#include "apr_arch_networkio.h" -#include "apr_network_io.h" -#include "apr_strings.h" -#include "apr_support.h" -#include "apr_portable.h" -#include "apr_arch_inherit.h" +#include "fspr_arch_networkio.h" +#include "fspr_network_io.h" +#include "fspr_strings.h" +#include "fspr_support.h" +#include "fspr_portable.h" +#include "fspr_arch_inherit.h" #ifdef BEOS_R5 #undef close @@ -28,9 +28,9 @@ static char generic_inaddr_any[16] = {0}; /* big enough for IPv4 or IPv6 */ -static apr_status_t socket_cleanup(void *sock) +static fspr_status_t socket_cleanup(void *sock) { - apr_socket_t *thesocket = sock; + fspr_socket_t *thesocket = sock; if (!thesocket) { return APR_ENOTSOCK; @@ -49,12 +49,12 @@ static apr_status_t socket_cleanup(void *sock) } } -static void set_socket_vars(apr_socket_t *sock, int family, int type, int protocol) +static void set_socket_vars(fspr_socket_t *sock, int family, int type, int protocol) { sock->type = type; sock->protocol = protocol; - apr_sockaddr_vars_set(sock->local_addr, family, 0); - apr_sockaddr_vars_set(sock->remote_addr, family, 0); + fspr_sockaddr_vars_set(sock->local_addr, family, 0); + fspr_sockaddr_vars_set(sock->remote_addr, family, 0); sock->options = 0; #if defined(BEOS) && !defined(BEOS_BONE) /* BeOS pre-BONE has TCP_NODELAY on by default and it can't be @@ -64,32 +64,32 @@ static void set_socket_vars(apr_socket_t *sock, int family, int type, int protoc #endif } -static void alloc_socket(apr_socket_t **new, apr_pool_t *p) +static void alloc_socket(fspr_socket_t **new, fspr_pool_t *p) { - *new = (apr_socket_t *)apr_pcalloc(p, sizeof(apr_socket_t)); + *new = (fspr_socket_t *)fspr_pcalloc(p, sizeof(fspr_socket_t)); (*new)->pool = p; - (*new)->local_addr = (apr_sockaddr_t *)apr_pcalloc((*new)->pool, - sizeof(apr_sockaddr_t)); + (*new)->local_addr = (fspr_sockaddr_t *)fspr_pcalloc((*new)->pool, + sizeof(fspr_sockaddr_t)); (*new)->local_addr->pool = p; - (*new)->remote_addr = (apr_sockaddr_t *)apr_pcalloc((*new)->pool, - sizeof(apr_sockaddr_t)); + (*new)->remote_addr = (fspr_sockaddr_t *)fspr_pcalloc((*new)->pool, + sizeof(fspr_sockaddr_t)); (*new)->remote_addr->pool = p; (*new)->remote_addr_unknown = 1; #ifndef WAITIO_USES_POLL /* Create a pollset with room for one descriptor. */ /* ### check return codes */ - (void) apr_pollset_create(&(*new)->pollset, 1, p, 0); + (void) fspr_pollset_create(&(*new)->pollset, 1, p, 0); #endif } -apr_status_t apr_socket_protocol_get(apr_socket_t *sock, int *protocol) +fspr_status_t fspr_socket_protocol_get(fspr_socket_t *sock, int *protocol) { *protocol = sock->protocol; return APR_SUCCESS; } -apr_status_t apr_socket_create(apr_socket_t **new, int ofamily, int type, - int protocol, apr_pool_t *cont) +fspr_status_t fspr_socket_create(fspr_socket_t **new, int ofamily, int type, + int protocol, fspr_pool_t *cont) { int family = ofamily; @@ -140,24 +140,24 @@ apr_status_t apr_socket_create(apr_socket_t **new, int ofamily, int type, (*new)->timeout = -1; (*new)->inherit = 0; - apr_pool_cleanup_register((*new)->pool, (void *)(*new), socket_cleanup, + fspr_pool_cleanup_register((*new)->pool, (void *)(*new), socket_cleanup, socket_cleanup); return APR_SUCCESS; } -apr_status_t apr_socket_shutdown(apr_socket_t *thesocket, - apr_shutdown_how_e how) +fspr_status_t fspr_socket_shutdown(fspr_socket_t *thesocket, + fspr_shutdown_how_e how) { return (shutdown(thesocket->socketdes, how) == -1) ? errno : APR_SUCCESS; } -apr_status_t apr_socket_close(apr_socket_t *thesocket) +fspr_status_t fspr_socket_close(fspr_socket_t *thesocket) { - return apr_pool_cleanup_run(thesocket->pool, thesocket, socket_cleanup); + return fspr_pool_cleanup_run(thesocket->pool, thesocket, socket_cleanup); } -apr_status_t apr_socket_bind(apr_socket_t *sock, apr_sockaddr_t *sa) +fspr_status_t fspr_socket_bind(fspr_socket_t *sock, fspr_sockaddr_t *sa) { if (bind(sock->socketdes, (struct sockaddr *)&sa->sa, sa->salen) == -1) { @@ -173,7 +173,7 @@ apr_status_t apr_socket_bind(apr_socket_t *sock, apr_sockaddr_t *sa) } } -apr_status_t apr_socket_listen(apr_socket_t *sock, apr_int32_t backlog) +fspr_status_t fspr_socket_listen(fspr_socket_t *sock, fspr_int32_t backlog) { if (listen(sock->socketdes, backlog) == -1) return errno; @@ -181,8 +181,8 @@ apr_status_t apr_socket_listen(apr_socket_t *sock, apr_int32_t backlog) return APR_SUCCESS; } -apr_status_t apr_socket_accept(apr_socket_t **new, apr_socket_t *sock, - apr_pool_t *connection_context) +fspr_status_t fspr_socket_accept(fspr_socket_t **new, fspr_socket_t *sock, + fspr_pool_t *connection_context) { alloc_socket(new, connection_context); set_socket_vars(*new, sock->local_addr->sa.sin.sin_family, SOCK_STREAM, sock->protocol); @@ -232,13 +232,13 @@ apr_status_t apr_socket_accept(apr_socket_t **new, apr_socket_t *sock, } #if APR_TCP_NODELAY_INHERITED - if (apr_is_option_set(sock, APR_TCP_NODELAY) == 1) { - apr_set_option(*new, APR_TCP_NODELAY, 1); + if (fspr_is_option_set(sock, APR_TCP_NODELAY) == 1) { + fspr_set_option(*new, APR_TCP_NODELAY, 1); } #endif /* TCP_NODELAY_INHERITED */ #if APR_O_NONBLOCK_INHERITED - if (apr_is_option_set(sock, APR_SO_NONBLOCK) == 1) { - apr_set_option(*new, APR_SO_NONBLOCK, 1); + if (fspr_is_option_set(sock, APR_SO_NONBLOCK) == 1) { + fspr_set_option(*new, APR_SO_NONBLOCK, 1); } #endif /* APR_O_NONBLOCK_INHERITED */ @@ -256,12 +256,12 @@ apr_status_t apr_socket_accept(apr_socket_t **new, apr_socket_t *sock, } (*new)->inherit = 0; - apr_pool_cleanup_register((*new)->pool, (void *)(*new), socket_cleanup, + fspr_pool_cleanup_register((*new)->pool, (void *)(*new), socket_cleanup, socket_cleanup); return APR_SUCCESS; } -apr_status_t apr_socket_connect(apr_socket_t *sock, apr_sockaddr_t *sa) +fspr_status_t fspr_socket_connect(fspr_socket_t *sock, fspr_sockaddr_t *sa) { int rc; @@ -276,7 +276,7 @@ apr_status_t apr_socket_connect(apr_socket_t *sock, apr_sockaddr_t *sa) */ if ((rc == -1) && (errno == EINPROGRESS || errno == EALREADY) && (sock->timeout > 0)) { - rc = apr_wait_for_io_or_timeout(NULL, sock, 0); + rc = fspr_wait_for_io_or_timeout(NULL, sock, 0); if (rc != APR_SUCCESS) { return rc; } @@ -284,7 +284,7 @@ apr_status_t apr_socket_connect(apr_socket_t *sock, apr_sockaddr_t *sa) #ifdef SO_ERROR { int error; - apr_socklen_t len = sizeof(error); + fspr_socklen_t len = sizeof(error); if ((rc = getsockopt(sock->socketdes, SOL_SOCKET, SO_ERROR, (char *)&error, &len)) < 0) { return errno; @@ -328,13 +328,13 @@ apr_status_t apr_socket_connect(apr_socket_t *sock, apr_sockaddr_t *sa) return APR_SUCCESS; } -apr_status_t apr_socket_type_get(apr_socket_t *sock, int *type) +fspr_status_t fspr_socket_type_get(fspr_socket_t *sock, int *type) { *type = sock->type; return APR_SUCCESS; } -apr_status_t apr_socket_data_get(void **data, const char *key, apr_socket_t *sock) +fspr_status_t fspr_socket_data_get(void **data, const char *key, fspr_socket_t *sock) { sock_userdata_t *cur = sock->userdata; @@ -351,76 +351,76 @@ apr_status_t apr_socket_data_get(void **data, const char *key, apr_socket_t *soc return APR_SUCCESS; } -apr_status_t apr_socket_data_set(apr_socket_t *sock, void *data, const char *key, - apr_status_t (*cleanup) (void *)) +fspr_status_t fspr_socket_data_set(fspr_socket_t *sock, void *data, const char *key, + fspr_status_t (*cleanup) (void *)) { - sock_userdata_t *new = apr_palloc(sock->pool, sizeof(sock_userdata_t)); + sock_userdata_t *new = fspr_palloc(sock->pool, sizeof(sock_userdata_t)); - new->key = apr_pstrdup(sock->pool, key); + new->key = fspr_pstrdup(sock->pool, key); new->data = data; new->next = sock->userdata; sock->userdata = new; if (cleanup) { - apr_pool_cleanup_register(sock->pool, data, cleanup, cleanup); + fspr_pool_cleanup_register(sock->pool, data, cleanup, cleanup); } return APR_SUCCESS; } -apr_status_t apr_os_sock_get(apr_os_sock_t *thesock, apr_socket_t *sock) +fspr_status_t fspr_os_sock_get(fspr_os_sock_t *thesock, fspr_socket_t *sock) { *thesock = sock->socketdes; return APR_SUCCESS; } -apr_status_t apr_os_sock_make(apr_socket_t **apr_sock, - apr_os_sock_info_t *os_sock_info, - apr_pool_t *cont) +fspr_status_t fspr_os_sock_make(fspr_socket_t **fspr_sock, + fspr_os_sock_info_t *os_sock_info, + fspr_pool_t *cont) { - alloc_socket(apr_sock, cont); - set_socket_vars(*apr_sock, os_sock_info->family, os_sock_info->type, os_sock_info->protocol); - (*apr_sock)->timeout = -1; - (*apr_sock)->socketdes = *os_sock_info->os_sock; + alloc_socket(fspr_sock, cont); + set_socket_vars(*fspr_sock, os_sock_info->family, os_sock_info->type, os_sock_info->protocol); + (*fspr_sock)->timeout = -1; + (*fspr_sock)->socketdes = *os_sock_info->os_sock; if (os_sock_info->local) { - memcpy(&(*apr_sock)->local_addr->sa.sin, + memcpy(&(*fspr_sock)->local_addr->sa.sin, os_sock_info->local, - (*apr_sock)->local_addr->salen); + (*fspr_sock)->local_addr->salen); /* XXX IPv6 - this assumes sin_port and sin6_port at same offset */ - (*apr_sock)->local_addr->port = ntohs((*apr_sock)->local_addr->sa.sin.sin_port); + (*fspr_sock)->local_addr->port = ntohs((*fspr_sock)->local_addr->sa.sin.sin_port); } else { - (*apr_sock)->local_port_unknown = (*apr_sock)->local_interface_unknown = 1; + (*fspr_sock)->local_port_unknown = (*fspr_sock)->local_interface_unknown = 1; } if (os_sock_info->remote) { #ifndef HAVE_POLL - (*apr_sock)->connected = 1; + (*fspr_sock)->connected = 1; #endif - memcpy(&(*apr_sock)->remote_addr->sa.sin, + memcpy(&(*fspr_sock)->remote_addr->sa.sin, os_sock_info->remote, - (*apr_sock)->remote_addr->salen); + (*fspr_sock)->remote_addr->salen); /* XXX IPv6 - this assumes sin_port and sin6_port at same offset */ - (*apr_sock)->remote_addr->port = ntohs((*apr_sock)->remote_addr->sa.sin.sin_port); + (*fspr_sock)->remote_addr->port = ntohs((*fspr_sock)->remote_addr->sa.sin.sin_port); } else { - (*apr_sock)->remote_addr_unknown = 1; + (*fspr_sock)->remote_addr_unknown = 1; } - (*apr_sock)->inherit = 0; - apr_pool_cleanup_register((*apr_sock)->pool, (void *)(*apr_sock), + (*fspr_sock)->inherit = 0; + fspr_pool_cleanup_register((*fspr_sock)->pool, (void *)(*fspr_sock), socket_cleanup, socket_cleanup); return APR_SUCCESS; } -apr_status_t apr_os_sock_put(apr_socket_t **sock, apr_os_sock_t *thesock, - apr_pool_t *cont) +fspr_status_t fspr_os_sock_put(fspr_socket_t **sock, fspr_os_sock_t *thesock, + fspr_pool_t *cont) { /* XXX Bogus assumption that *sock points at anything legit */ if ((*sock) == NULL) { alloc_socket(sock, cont); /* XXX IPv6 figure out the family here! */ /* XXX figure out the actual socket type here */ - /* *or* just decide that apr_os_sock_put() has to be told the family and type */ + /* *or* just decide that fspr_os_sock_put() has to be told the family and type */ set_socket_vars(*sock, APR_INET, SOCK_STREAM, 0); (*sock)->timeout = -1; } diff --git a/libs/apr/network_io/unix/sockopt.c b/libs/apr/network_io/unix/sockopt.c index 344b0484b4d..87f27f70144 100644 --- a/libs/apr/network_io/unix/sockopt.c +++ b/libs/apr/network_io/unix/sockopt.c @@ -14,11 +14,11 @@ * limitations under the License. */ -#include "apr_arch_networkio.h" -#include "apr_strings.h" +#include "fspr_arch_networkio.h" +#include "fspr_strings.h" -static apr_status_t soblock(int sd) +static fspr_status_t soblock(int sd) { /* BeOS uses setsockopt at present for non blocking... */ #ifndef BEOS @@ -45,7 +45,7 @@ static apr_status_t soblock(int sd) return APR_SUCCESS; } -static apr_status_t sononblock(int sd) +static fspr_status_t sononblock(int sd) { #ifndef BEOS int fd_flags; @@ -72,9 +72,9 @@ static apr_status_t sononblock(int sd) } -apr_status_t apr_socket_timeout_set(apr_socket_t *sock, apr_interval_time_t t) +fspr_status_t fspr_socket_timeout_set(fspr_socket_t *sock, fspr_interval_time_t t) { - apr_status_t stat; + fspr_status_t stat; /* If our new timeout is non-negative and our old timeout was * negative, then we need to ensure that we are non-blocking. @@ -84,19 +84,19 @@ apr_status_t apr_socket_timeout_set(apr_socket_t *sock, apr_interval_time_t t) * socket. */ if (t >= 0 && sock->timeout < 0) { - if (apr_is_option_set(sock, APR_SO_NONBLOCK) != 1) { + if (fspr_is_option_set(sock, APR_SO_NONBLOCK) != 1) { if ((stat = sononblock(sock->socketdes)) != APR_SUCCESS) { return stat; } - apr_set_option(sock, APR_SO_NONBLOCK, 1); + fspr_set_option(sock, APR_SO_NONBLOCK, 1); } } else if (t < 0 && sock->timeout >= 0) { - if (apr_is_option_set(sock, APR_SO_NONBLOCK) != 0) { + if (fspr_is_option_set(sock, APR_SO_NONBLOCK) != 0) { if ((stat = soblock(sock->socketdes)) != APR_SUCCESS) { return stat; } - apr_set_option(sock, APR_SO_NONBLOCK, 0); + fspr_set_option(sock, APR_SO_NONBLOCK, 0); } } /* must disable the incomplete read support if we disable @@ -110,11 +110,11 @@ apr_status_t apr_socket_timeout_set(apr_socket_t *sock, apr_interval_time_t t) } -apr_status_t apr_socket_opt_set(apr_socket_t *sock, - apr_int32_t opt, apr_int32_t on) +fspr_status_t fspr_socket_opt_set(fspr_socket_t *sock, + fspr_int32_t opt, fspr_int32_t on) { int one; - apr_status_t rv; + fspr_status_t rv; if (on) one = 1; @@ -123,30 +123,30 @@ apr_status_t apr_socket_opt_set(apr_socket_t *sock, switch(opt) { case APR_SO_KEEPALIVE: #ifdef SO_KEEPALIVE - if (on != apr_is_option_set(sock, APR_SO_KEEPALIVE)) { + if (on != fspr_is_option_set(sock, APR_SO_KEEPALIVE)) { if (setsockopt(sock->socketdes, SOL_SOCKET, SO_KEEPALIVE, (void *)&one, sizeof(int)) == -1) { return errno; } - apr_set_option(sock, APR_SO_KEEPALIVE, on); + fspr_set_option(sock, APR_SO_KEEPALIVE, on); } #else return APR_ENOTIMPL; #endif break; case APR_SO_DEBUG: - if (on != apr_is_option_set(sock, APR_SO_DEBUG)) { + if (on != fspr_is_option_set(sock, APR_SO_DEBUG)) { if (setsockopt(sock->socketdes, SOL_SOCKET, SO_DEBUG, (void *)&one, sizeof(int)) == -1) { return errno; } - apr_set_option(sock, APR_SO_DEBUG, on); + fspr_set_option(sock, APR_SO_DEBUG, on); } break; case APR_SO_REUSEADDR: - if (on != apr_is_option_set(sock, APR_SO_REUSEADDR)) { + if (on != fspr_is_option_set(sock, APR_SO_REUSEADDR)) { if (setsockopt(sock->socketdes, SOL_SOCKET, SO_REUSEADDR, (void *)&one, sizeof(int)) == -1) { return errno; } - apr_set_option(sock, APR_SO_REUSEADDR, on); + fspr_set_option(sock, APR_SO_REUSEADDR, on); } break; case APR_SO_SNDBUF: @@ -168,7 +168,7 @@ apr_status_t apr_socket_opt_set(apr_socket_t *sock, #endif break; case APR_SO_NONBLOCK: - if (apr_is_option_set(sock, APR_SO_NONBLOCK) != on) { + if (fspr_is_option_set(sock, APR_SO_NONBLOCK) != on) { if (on) { if ((rv = sononblock(sock->socketdes)) != APR_SUCCESS) return rv; @@ -177,19 +177,19 @@ apr_status_t apr_socket_opt_set(apr_socket_t *sock, if ((rv = soblock(sock->socketdes)) != APR_SUCCESS) return rv; } - apr_set_option(sock, APR_SO_NONBLOCK, on); + fspr_set_option(sock, APR_SO_NONBLOCK, on); } break; case APR_SO_LINGER: #ifdef SO_LINGER - if (apr_is_option_set(sock, APR_SO_LINGER) != on) { + if (fspr_is_option_set(sock, APR_SO_LINGER) != on) { struct linger li; li.l_onoff = on; li.l_linger = APR_MAX_SECS_TO_LINGER; if (setsockopt(sock->socketdes, SOL_SOCKET, SO_LINGER, (char *) &li, sizeof(struct linger)) == -1) { return errno; } - apr_set_option(sock, APR_SO_LINGER, on); + fspr_set_option(sock, APR_SO_LINGER, on); } #else return APR_ENOTIMPL; @@ -197,7 +197,7 @@ apr_status_t apr_socket_opt_set(apr_socket_t *sock, break; case APR_TCP_DEFER_ACCEPT: #if defined(TCP_DEFER_ACCEPT) - if (apr_is_option_set(sock, APR_TCP_DEFER_ACCEPT) != on) { + if (fspr_is_option_set(sock, APR_TCP_DEFER_ACCEPT) != on) { int optlevel = IPPROTO_TCP; int optname = TCP_DEFER_ACCEPT; @@ -205,7 +205,7 @@ apr_status_t apr_socket_opt_set(apr_socket_t *sock, (void *)&on, sizeof(int)) == -1) { return errno; } - apr_set_option(sock, APR_TCP_DEFER_ACCEPT, on); + fspr_set_option(sock, APR_TCP_DEFER_ACCEPT, on); } #else return APR_ENOTIMPL; @@ -213,7 +213,7 @@ apr_status_t apr_socket_opt_set(apr_socket_t *sock, break; case APR_TCP_NODELAY: #if defined(TCP_NODELAY) - if (apr_is_option_set(sock, APR_TCP_NODELAY) != on) { + if (fspr_is_option_set(sock, APR_TCP_NODELAY) != on) { int optlevel = IPPROTO_TCP; int optname = TCP_NODELAY; @@ -226,7 +226,7 @@ apr_status_t apr_socket_opt_set(apr_socket_t *sock, if (setsockopt(sock->socketdes, optlevel, optname, (void *)&on, sizeof(int)) == -1) { return errno; } - apr_set_option(sock, APR_TCP_NODELAY, on); + fspr_set_option(sock, APR_TCP_NODELAY, on); } #else /* BeOS pre-BONE has TCP_NODELAY set by default. @@ -248,7 +248,7 @@ apr_status_t apr_socket_opt_set(apr_socket_t *sock, * and TCP_CORK takes preference, which is the desired * behaviour. On older kernels, TCP_NODELAY must be toggled * to "off" whilst TCP_CORK is in effect. */ - if (apr_is_option_set(sock, APR_TCP_NOPUSH) != on) { + if (fspr_is_option_set(sock, APR_TCP_NOPUSH) != on) { #ifndef HAVE_TCP_NODELAY_WITH_CORK int optlevel = IPPROTO_TCP; int optname = TCP_NODELAY; @@ -260,7 +260,7 @@ apr_status_t apr_socket_opt_set(apr_socket_t *sock, } #endif /* OK we're going to change some settings here... */ - if (apr_is_option_set(sock, APR_TCP_NODELAY) == 1 && on) { + if (fspr_is_option_set(sock, APR_TCP_NODELAY) == 1 && on) { /* Now toggle TCP_NODELAY to off, if TCP_CORK is being * turned on: */ int tmpflag = 0; @@ -268,10 +268,10 @@ apr_status_t apr_socket_opt_set(apr_socket_t *sock, (void*)&tmpflag, sizeof(int)) == -1) { return errno; } - apr_set_option(sock, APR_RESET_NODELAY, 1); - apr_set_option(sock, APR_TCP_NODELAY, 0); + fspr_set_option(sock, APR_RESET_NODELAY, 1); + fspr_set_option(sock, APR_TCP_NODELAY, 0); } else if (on) { - apr_set_option(sock, APR_RESET_NODELAY, 0); + fspr_set_option(sock, APR_RESET_NODELAY, 0); } #endif /* HAVE_TCP_NODELAY_WITH_CORK */ @@ -280,9 +280,9 @@ apr_status_t apr_socket_opt_set(apr_socket_t *sock, (void*)&on, sizeof(int)) == -1) { return errno; } - apr_set_option(sock, APR_TCP_NOPUSH, on); + fspr_set_option(sock, APR_TCP_NOPUSH, on); #ifndef HAVE_TCP_NODELAY_WITH_CORK - if (!on && apr_is_option_set(sock, APR_RESET_NODELAY)) { + if (!on && fspr_is_option_set(sock, APR_RESET_NODELAY)) { /* Now, if TCP_CORK was just turned off, turn * TCP_NODELAY back on again if it was earlier toggled * to off: */ @@ -291,8 +291,8 @@ apr_status_t apr_socket_opt_set(apr_socket_t *sock, (void*)&tmpflag, sizeof(int)) == -1) { return errno; } - apr_set_option(sock, APR_RESET_NODELAY,0); - apr_set_option(sock, APR_TCP_NODELAY, 1); + fspr_set_option(sock, APR_RESET_NODELAY,0); + fspr_set_option(sock, APR_TCP_NODELAY, 1); } #endif /* HAVE_TCP_NODELAY_WITH_CORK */ } @@ -301,7 +301,7 @@ apr_status_t apr_socket_opt_set(apr_socket_t *sock, #endif break; case APR_INCOMPLETE_READ: - apr_set_option(sock, APR_INCOMPLETE_READ, on); + fspr_set_option(sock, APR_INCOMPLETE_READ, on); break; case APR_IPV6_V6ONLY: #if APR_HAVE_IPV6 && defined(IPV6_V6ONLY) @@ -313,7 +313,7 @@ apr_status_t apr_socket_opt_set(apr_socket_t *sock, (void *)&on, sizeof(int)) == -1) { return errno; } - apr_set_option(sock, APR_IPV6_V6ONLY, on); + fspr_set_option(sock, APR_IPV6_V6ONLY, on); #else return APR_ENOTIMPL; #endif @@ -326,25 +326,25 @@ apr_status_t apr_socket_opt_set(apr_socket_t *sock, } -apr_status_t apr_socket_timeout_get(apr_socket_t *sock, apr_interval_time_t *t) +fspr_status_t fspr_socket_timeout_get(fspr_socket_t *sock, fspr_interval_time_t *t) { *t = sock->timeout; return APR_SUCCESS; } -apr_status_t apr_socket_opt_get(apr_socket_t *sock, - apr_int32_t opt, apr_int32_t *on) +fspr_status_t fspr_socket_opt_get(fspr_socket_t *sock, + fspr_int32_t opt, fspr_int32_t *on) { switch(opt) { default: - *on = apr_is_option_set(sock, opt); + *on = fspr_is_option_set(sock, opt); } return APR_SUCCESS; } -int apr_socket_fd_get(apr_socket_t *sock) +int fspr_socket_fd_get(fspr_socket_t *sock) { if (sock) { return sock->socketdes; @@ -354,13 +354,13 @@ int apr_socket_fd_get(apr_socket_t *sock) } -apr_status_t apr_socket_atmark(apr_socket_t *sock, int *atmark) +fspr_status_t fspr_socket_atmark(fspr_socket_t *sock, int *atmark) { #ifndef BEOS_R5 int oobmark; if (ioctl(sock->socketdes, SIOCATMARK, (void*) &oobmark) < 0) - return apr_get_netos_error(); + return fspr_get_netos_error(); *atmark = (oobmark != 0); @@ -370,7 +370,7 @@ apr_status_t apr_socket_atmark(apr_socket_t *sock, int *atmark) #endif } -apr_status_t apr_gethostname(char *buf, apr_int32_t len, apr_pool_t *cont) +fspr_status_t fspr_gethostname(char *buf, fspr_int32_t len, fspr_pool_t *cont) { #ifdef BEOS_R5 if (gethostname(buf, len) == 0) { @@ -391,7 +391,7 @@ apr_status_t apr_gethostname(char *buf, apr_int32_t len, apr_pool_t *cont) } #if APR_HAS_SO_ACCEPTFILTER -apr_status_t apr_socket_accept_filter(apr_socket_t *sock, char *name, +fspr_status_t fspr_socket_accept_filter(fspr_socket_t *sock, char *name, char *args) { struct accept_filter_arg af; diff --git a/libs/apr/network_io/win32/sendrecv.c b/libs/apr/network_io/win32/sendrecv.c index faab51d4926..63891a50c67 100644 --- a/libs/apr/network_io/win32/sendrecv.c +++ b/libs/apr/network_io/win32/sendrecv.c @@ -14,12 +14,12 @@ * limitations under the License. */ -#include "apr_arch_networkio.h" -#include "apr_errno.h" -#include "apr_general.h" -#include "apr_network_io.h" -#include "apr_lib.h" -#include "apr_arch_file_io.h" +#include "fspr_arch_networkio.h" +#include "fspr_errno.h" +#include "fspr_general.h" +#include "fspr_network_io.h" +#include "fspr_lib.h" +#include "fspr_arch_file_io.h" #if APR_HAVE_TIME_H #include #endif @@ -27,19 +27,19 @@ /* MAX_SEGMENT_SIZE is the maximum amount of data that will be sent to a client * in one call of TransmitFile. This number must be small enough to give the * slowest client time to receive the data before the socket timeout triggers. - * The same problem can exist with apr_socket_send(). In that case, we rely on + * The same problem can exist with fspr_socket_send(). In that case, we rely on * the application to adjust socket timeouts and max send segment * sizes appropriately. - * For example, Apache will in most cases call apr_socket_send() with less + * For example, Apache will in most cases call fspr_socket_send() with less * than 8193 bytes. */ #define MAX_SEGMENT_SIZE 65536 #define WSABUF_ON_STACK 50 -APR_DECLARE(apr_status_t) apr_socket_send(apr_socket_t *sock, const char *buf, - apr_size_t *len) +APR_DECLARE(fspr_status_t) fspr_socket_send(fspr_socket_t *sock, const char *buf, + fspr_size_t *len) { - apr_ssize_t rv; + fspr_ssize_t rv; WSABUF wsaData; int lasterror; DWORD dwBytes = 0; @@ -54,7 +54,7 @@ APR_DECLARE(apr_status_t) apr_socket_send(apr_socket_t *sock, const char *buf, dwBytes = rv; #endif if (rv == SOCKET_ERROR) { - lasterror = apr_get_netos_error(); + lasterror = fspr_get_netos_error(); *len = 0; return lasterror; } @@ -65,10 +65,10 @@ APR_DECLARE(apr_status_t) apr_socket_send(apr_socket_t *sock, const char *buf, } -APR_DECLARE(apr_status_t) apr_socket_recv(apr_socket_t *sock, char *buf, - apr_size_t *len) +APR_DECLARE(fspr_status_t) fspr_socket_recv(fspr_socket_t *sock, char *buf, + fspr_size_t *len) { - apr_ssize_t rv; + fspr_ssize_t rv; WSABUF wsaData; int lasterror; DWORD dwBytes = 0; @@ -84,7 +84,7 @@ APR_DECLARE(apr_status_t) apr_socket_recv(apr_socket_t *sock, char *buf, dwBytes = rv; #endif if (rv == SOCKET_ERROR) { - lasterror = apr_get_netos_error(); + lasterror = fspr_get_netos_error(); *len = 0; return lasterror; } @@ -94,14 +94,14 @@ APR_DECLARE(apr_status_t) apr_socket_recv(apr_socket_t *sock, char *buf, } -APR_DECLARE(apr_status_t) apr_socket_sendv(apr_socket_t *sock, +APR_DECLARE(fspr_status_t) fspr_socket_sendv(fspr_socket_t *sock, const struct iovec *vec, - apr_int32_t in_vec, apr_size_t *nbytes) + fspr_int32_t in_vec, fspr_size_t *nbytes) { - apr_status_t rc = APR_SUCCESS; - apr_ssize_t rv; - apr_size_t cur_len; - apr_int32_t nvec = 0; + fspr_status_t rc = APR_SUCCESS; + fspr_ssize_t rv; + fspr_size_t cur_len; + fspr_int32_t nvec = 0; int i, j = 0; DWORD dwBytes = 0; WSABUF *pWsaBuf; @@ -143,13 +143,13 @@ APR_DECLARE(apr_status_t) apr_socket_sendv(apr_socket_t *sock, #ifndef _WIN32_WCE rv = WSASend(sock->socketdes, pWsaBuf, nvec, &dwBytes, 0, NULL, NULL); if (rv == SOCKET_ERROR) { - rc = apr_get_netos_error(); + rc = fspr_get_netos_error(); } #else for (i = 0; i < nvec; i++) { rv = send(sock->socketdes, pWsaBuf[i].buf, pWsaBuf[i].len, 0); if (rv == SOCKET_ERROR) { - rc = apr_get_netos_error(); + rc = fspr_get_netos_error(); break; } dwBytes += rv; @@ -163,19 +163,19 @@ APR_DECLARE(apr_status_t) apr_socket_sendv(apr_socket_t *sock, } -APR_DECLARE(apr_status_t) apr_socket_sendto(apr_socket_t *sock, - apr_sockaddr_t *where, - apr_int32_t flags, const char *buf, - apr_size_t *len) +APR_DECLARE(fspr_status_t) fspr_socket_sendto(fspr_socket_t *sock, + fspr_sockaddr_t *where, + fspr_int32_t flags, const char *buf, + fspr_size_t *len) { - apr_ssize_t rv; + fspr_ssize_t rv; rv = sendto(sock->socketdes, buf, (int)*len, flags, (const struct sockaddr*)&where->sa, where->salen); if (rv == SOCKET_ERROR) { *len = 0; - return apr_get_netos_error(); + return fspr_get_netos_error(); } *len = rv; @@ -183,18 +183,18 @@ APR_DECLARE(apr_status_t) apr_socket_sendto(apr_socket_t *sock, } -APR_DECLARE(apr_status_t) apr_socket_recvfrom(apr_sockaddr_t *from, - apr_socket_t *sock, - apr_int32_t flags, - char *buf, apr_size_t *len) +APR_DECLARE(fspr_status_t) fspr_socket_recvfrom(fspr_sockaddr_t *from, + fspr_socket_t *sock, + fspr_int32_t flags, + char *buf, fspr_size_t *len) { - apr_ssize_t rv; + fspr_ssize_t rv; rv = recvfrom(sock->socketdes, buf, (int)*len, flags, (struct sockaddr*)&from->sa, &from->salen); if (rv == SOCKET_ERROR) { (*len) = 0; - return apr_get_netos_error(); + return fspr_get_netos_error(); } (*len) = rv; if (rv == 0 && sock->type == SOCK_STREAM) @@ -204,9 +204,9 @@ APR_DECLARE(apr_status_t) apr_socket_recvfrom(apr_sockaddr_t *from, } -static apr_status_t collapse_iovec(char **off, apr_size_t *len, +static fspr_status_t collapse_iovec(char **off, fspr_size_t *len, struct iovec *iovec, int numvec, - char *buf, apr_size_t buflen) + char *buf, fspr_size_t buflen) { if (numvec == 1) { *off = iovec[0].iov_base; @@ -236,8 +236,8 @@ static apr_status_t collapse_iovec(char **off, apr_size_t *len, #if APR_HAS_SENDFILE /* - * apr_status_t apr_socket_sendfile(apr_socket_t *, apr_file_t *, apr_hdtr_t *, - * apr_off_t *, apr_size_t *, apr_int32_t flags) + * fspr_status_t fspr_socket_sendfile(fspr_socket_t *, fspr_file_t *, fspr_hdtr_t *, + * fspr_off_t *, fspr_size_t *, fspr_int32_t flags) * Send a file from an open file descriptor to a socket, along with * optional headers and trailers * arg 1) The socket to which we're writing @@ -247,26 +247,26 @@ static apr_status_t collapse_iovec(char **off, apr_size_t *len, * arg 5) Number of bytes to send out of the file * arg 6) APR flags that are mapped to OS specific flags */ -APR_DECLARE(apr_status_t) apr_socket_sendfile(apr_socket_t *sock, - apr_file_t *file, - apr_hdtr_t *hdtr, - apr_off_t *offset, - apr_size_t *len, - apr_int32_t flags) +APR_DECLARE(fspr_status_t) fspr_socket_sendfile(fspr_socket_t *sock, + fspr_file_t *file, + fspr_hdtr_t *hdtr, + fspr_off_t *offset, + fspr_size_t *len, + fspr_int32_t flags) { - apr_status_t status = APR_SUCCESS; - apr_status_t rv; - apr_off_t curoff = *offset; + fspr_status_t status = APR_SUCCESS; + fspr_status_t rv; + fspr_off_t curoff = *offset; DWORD dwFlags = 0; - apr_size_t nbytes; + fspr_size_t nbytes; TRANSMIT_FILE_BUFFERS tfb, *ptfb = NULL; int ptr = 0; - apr_size_t bytes_to_send; /* Bytes to send out of the file (not including headers) */ + fspr_size_t bytes_to_send; /* Bytes to send out of the file (not including headers) */ int disconnected = 0; int sendv_trailers = 0; char hdtrbuf[4096]; - if (apr_os_level < APR_WIN_NT) { + if (fspr_os_level < APR_WIN_NT) { return APR_ENOTIMPL; } @@ -277,14 +277,14 @@ APR_DECLARE(apr_status_t) apr_socket_sendfile(apr_socket_t *sock, /* Handle the goofy case of sending headers/trailers and a zero byte file */ if (!bytes_to_send && hdtr) { if (hdtr->numheaders) { - rv = apr_socket_sendv(sock, hdtr->headers, hdtr->numheaders, + rv = fspr_socket_sendv(sock, hdtr->headers, hdtr->numheaders, &nbytes); if (rv != APR_SUCCESS) return rv; *len += nbytes; } if (hdtr->numtrailers) { - rv = apr_socket_sendv(sock, hdtr->trailers, hdtr->numtrailers, + rv = fspr_socket_sendv(sock, hdtr->trailers, hdtr->numtrailers, &nbytes); if (rv != APR_SUCCESS) return rv; @@ -297,7 +297,7 @@ APR_DECLARE(apr_status_t) apr_socket_sendfile(apr_socket_t *sock, /* Collapse the headers into a single buffer */ if (hdtr && hdtr->numheaders) { - apr_size_t head_length = tfb.HeadLength; + fspr_size_t head_length = tfb.HeadLength; ptfb = &tfb; nbytes = 0; rv = collapse_iovec((char **)&ptfb->Head, &head_length, @@ -308,7 +308,7 @@ APR_DECLARE(apr_status_t) apr_socket_sendfile(apr_socket_t *sock, /* If not enough buffer, punt to sendv */ if (rv == APR_INCOMPLETE) { - rv = apr_socket_sendv(sock, hdtr->headers, hdtr->numheaders, &nbytes); + rv = fspr_socket_sendv(sock, hdtr->headers, hdtr->numheaders, &nbytes); if (rv != APR_SUCCESS) return rv; *len += nbytes; @@ -319,7 +319,7 @@ APR_DECLARE(apr_status_t) apr_socket_sendfile(apr_socket_t *sock, /* Initialize the overlapped structure used on TransmitFile */ if (!sock->overlapped) { - sock->overlapped = apr_pcalloc(sock->pool, sizeof(OVERLAPPED)); + sock->overlapped = fspr_pcalloc(sock->pool, sizeof(OVERLAPPED)); sock->overlapped->hEvent = CreateEvent(NULL, FALSE, FALSE, NULL); } while (bytes_to_send) { @@ -333,7 +333,7 @@ APR_DECLARE(apr_status_t) apr_socket_sendfile(apr_socket_t *sock, xmitbytes = (DWORD)bytes_to_send; /* Collapse the trailers into a single buffer */ if (hdtr && hdtr->numtrailers) { - apr_size_t tail_length = tfb.TailLength; + fspr_size_t tail_length = tfb.TailLength; ptfb = &tfb; rv = collapse_iovec((char**) &ptfb->Tail, &tail_length, hdtr->trailers, hdtr->numtrailers, @@ -369,7 +369,7 @@ APR_DECLARE(apr_status_t) apr_socket_sendfile(apr_socket_t *sock, ptfb, /* header and trailer buffers */ dwFlags); /* flags to control various aspects of TransmitFile */ if (!rv) { - status = apr_get_netos_error(); + status = fspr_get_netos_error(); if ((status == APR_FROM_OS_ERROR(ERROR_IO_PENDING)) || (status == APR_FROM_OS_ERROR(WSA_IO_PENDING))) { @@ -384,7 +384,7 @@ APR_DECLARE(apr_status_t) apr_socket_sendfile(apr_socket_t *sock, &xmitbytes, FALSE, &dwFlags)) { - status = apr_get_netos_error(); + status = fspr_get_netos_error(); } /* Ugly code alert: WSAGetOverlappedResult returns * a count of all bytes sent. This loop only @@ -408,7 +408,7 @@ APR_DECLARE(apr_status_t) apr_socket_sendfile(apr_socket_t *sock, status = APR_FROM_OS_ERROR(WAIT_TIMEOUT); } else - status = apr_get_os_error(); + status = fspr_get_os_error(); } } if (status != APR_SUCCESS) @@ -427,7 +427,7 @@ APR_DECLARE(apr_status_t) apr_socket_sendfile(apr_socket_t *sock, if (status == APR_SUCCESS) { if (sendv_trailers) { - rv = apr_socket_sendv(sock, hdtr->trailers, hdtr->numtrailers, &nbytes); + rv = fspr_socket_sendv(sock, hdtr->trailers, hdtr->numtrailers, &nbytes); if (rv != APR_SUCCESS) return rv; *len += nbytes; @@ -436,7 +436,7 @@ APR_DECLARE(apr_status_t) apr_socket_sendfile(apr_socket_t *sock, /* Mark the socket as disconnected, but do not close it. * Note: The application must have stored the socket prior to making - * the call to apr_socket_sendfile in order to either reuse it + * the call to fspr_socket_sendfile in order to either reuse it * or close it. */ if (disconnected) { diff --git a/libs/apr/network_io/win32/sockets.c b/libs/apr/network_io/win32/sockets.c index eed351b04a6..0a649c6f2d8 100644 --- a/libs/apr/network_io/win32/sockets.c +++ b/libs/apr/network_io/win32/sockets.c @@ -14,25 +14,25 @@ * limitations under the License. */ -#include "apr_arch_networkio.h" -#include "apr_network_io.h" -#include "apr_general.h" -#include "apr_lib.h" -#include "apr_portable.h" -#include "apr_strings.h" +#include "fspr_arch_networkio.h" +#include "fspr_network_io.h" +#include "fspr_general.h" +#include "fspr_lib.h" +#include "fspr_portable.h" +#include "fspr_strings.h" #include -#include "apr_arch_inherit.h" -#include "apr_arch_misc.h" +#include "fspr_arch_inherit.h" +#include "fspr_arch_misc.h" static char generic_inaddr_any[16] = {0}; /* big enough for IPv4 or IPv6 */ -static apr_status_t socket_cleanup(void *sock) +static fspr_status_t socket_cleanup(void *sock) { - apr_socket_t *thesocket = sock; + fspr_socket_t *thesocket = sock; if (thesocket->socketdes != INVALID_SOCKET) { if (closesocket(thesocket->socketdes) == SOCKET_ERROR) { - return apr_get_netos_error(); + return fspr_get_netos_error(); } thesocket->socketdes = INVALID_SOCKET; } @@ -45,41 +45,41 @@ static apr_status_t socket_cleanup(void *sock) return APR_SUCCESS; } -static void set_socket_vars(apr_socket_t *sock, int family, int type, int protocol) +static void set_socket_vars(fspr_socket_t *sock, int family, int type, int protocol) { sock->type = type; sock->protocol = protocol; - apr_sockaddr_vars_set(sock->local_addr, family, 0); - apr_sockaddr_vars_set(sock->remote_addr, family, 0); + fspr_sockaddr_vars_set(sock->local_addr, family, 0); + fspr_sockaddr_vars_set(sock->remote_addr, family, 0); } -static void alloc_socket(apr_socket_t **new, apr_pool_t *p) +static void alloc_socket(fspr_socket_t **new, fspr_pool_t *p) { - *new = (apr_socket_t *)apr_pcalloc(p, sizeof(apr_socket_t)); + *new = (fspr_socket_t *)fspr_pcalloc(p, sizeof(fspr_socket_t)); (*new)->pool = p; - (*new)->local_addr = (apr_sockaddr_t *)apr_pcalloc((*new)->pool, - sizeof(apr_sockaddr_t)); + (*new)->local_addr = (fspr_sockaddr_t *)fspr_pcalloc((*new)->pool, + sizeof(fspr_sockaddr_t)); (*new)->local_addr->pool = p; - (*new)->remote_addr = (apr_sockaddr_t *)apr_pcalloc((*new)->pool, - sizeof(apr_sockaddr_t)); + (*new)->remote_addr = (fspr_sockaddr_t *)fspr_pcalloc((*new)->pool, + sizeof(fspr_sockaddr_t)); (*new)->remote_addr->pool = p; (*new)->remote_addr_unknown = 1; /* Create a pollset with room for one descriptor. */ /* ### check return codes */ - (void) apr_pollset_create(&(*new)->pollset, 1, p, 0); + (void) fspr_pollset_create(&(*new)->pollset, 1, p, 0); } -APR_DECLARE(apr_status_t) apr_socket_protocol_get(apr_socket_t *sock, +APR_DECLARE(fspr_status_t) fspr_socket_protocol_get(fspr_socket_t *sock, int *protocol) { *protocol = sock->protocol; return APR_SUCCESS; } -APR_DECLARE(apr_status_t) apr_socket_create(apr_socket_t **new, int family, +APR_DECLARE(fspr_status_t) fspr_socket_create(fspr_socket_t **new, int family, int type, int protocol, - apr_pool_t *cont) + fspr_pool_t *cont) { int downgrade = (family == AF_UNSPEC); @@ -105,7 +105,7 @@ APR_DECLARE(apr_status_t) apr_socket_create(apr_socket_t **new, int family, #endif if ((*new)->socketdes == INVALID_SOCKET) { - return apr_get_netos_error(); + return fspr_get_netos_error(); } #ifdef WIN32 @@ -148,14 +148,14 @@ APR_DECLARE(apr_status_t) apr_socket_create(apr_socket_t **new, int family, (*new)->timeout = -1; (*new)->disconnected = 0; - apr_pool_cleanup_register((*new)->pool, (void *)(*new), - socket_cleanup, apr_pool_cleanup_null); + fspr_pool_cleanup_register((*new)->pool, (void *)(*new), + socket_cleanup, fspr_pool_cleanup_null); return APR_SUCCESS; } -APR_DECLARE(apr_status_t) apr_socket_shutdown(apr_socket_t *thesocket, - apr_shutdown_how_e how) +APR_DECLARE(fspr_status_t) fspr_socket_shutdown(fspr_socket_t *thesocket, + fspr_shutdown_how_e how) { int winhow = 0; @@ -181,23 +181,23 @@ APR_DECLARE(apr_status_t) apr_socket_shutdown(apr_socket_t *thesocket, return APR_SUCCESS; } else { - return apr_get_netos_error(); + return fspr_get_netos_error(); } } -APR_DECLARE(apr_status_t) apr_socket_close(apr_socket_t *thesocket) +APR_DECLARE(fspr_status_t) fspr_socket_close(fspr_socket_t *thesocket) { - apr_pool_cleanup_kill(thesocket->pool, thesocket, socket_cleanup); + fspr_pool_cleanup_kill(thesocket->pool, thesocket, socket_cleanup); return socket_cleanup(thesocket); } -APR_DECLARE(apr_status_t) apr_socket_bind(apr_socket_t *sock, - apr_sockaddr_t *sa) +APR_DECLARE(fspr_status_t) fspr_socket_bind(fspr_socket_t *sock, + fspr_sockaddr_t *sa) { if (bind(sock->socketdes, (struct sockaddr *)&sa->sa, sa->salen) == -1) { - return apr_get_netos_error(); + return fspr_get_netos_error(); } else { sock->local_addr = sa; @@ -208,17 +208,17 @@ APR_DECLARE(apr_status_t) apr_socket_bind(apr_socket_t *sock, } } -APR_DECLARE(apr_status_t) apr_socket_listen(apr_socket_t *sock, - apr_int32_t backlog) +APR_DECLARE(fspr_status_t) fspr_socket_listen(fspr_socket_t *sock, + fspr_int32_t backlog) { if (listen(sock->socketdes, backlog) == SOCKET_ERROR) - return apr_get_netos_error(); + return fspr_get_netos_error(); else return APR_SUCCESS; } -APR_DECLARE(apr_status_t) apr_socket_accept(apr_socket_t **new, - apr_socket_t *sock, apr_pool_t *p) +APR_DECLARE(fspr_status_t) fspr_socket_accept(fspr_socket_t **new, + fspr_socket_t *sock, fspr_pool_t *p) { SOCKET s; #if APR_HAVE_IPV6 @@ -232,7 +232,7 @@ APR_DECLARE(apr_status_t) apr_socket_accept(apr_socket_t **new, us to work with nonblocking sockets. */ s = accept(sock->socketdes, (struct sockaddr *)&sa, &salen); if (s == INVALID_SOCKET) { - return apr_get_netos_error(); + return fspr_get_netos_error(); } alloc_socket(new, p); @@ -270,13 +270,13 @@ APR_DECLARE(apr_status_t) apr_socket_accept(apr_socket_t **new, } #if APR_TCP_NODELAY_INHERITED - if (apr_is_option_set(sock, APR_TCP_NODELAY) == 1) { - apr_set_option(*new, APR_TCP_NODELAY, 1); + if (fspr_is_option_set(sock, APR_TCP_NODELAY) == 1) { + fspr_set_option(*new, APR_TCP_NODELAY, 1); } #endif /* TCP_NODELAY_INHERITED */ #if APR_O_NONBLOCK_INHERITED - if (apr_is_option_set(sock, APR_SO_NONBLOCK) == 1) { - apr_set_option(*new, APR_SO_NONBLOCK, 1); + if (fspr_is_option_set(sock, APR_SO_NONBLOCK) == 1) { + fspr_set_option(*new, APR_SO_NONBLOCK, 1); } #endif /* APR_O_NONBLOCK_INHERITED */ @@ -293,15 +293,15 @@ APR_DECLARE(apr_status_t) apr_socket_accept(apr_socket_t **new, (*new)->local_interface_unknown = 1; } - apr_pool_cleanup_register((*new)->pool, (void *)(*new), - socket_cleanup, apr_pool_cleanup_null); + fspr_pool_cleanup_register((*new)->pool, (void *)(*new), + socket_cleanup, fspr_pool_cleanup_null); return APR_SUCCESS; } -APR_DECLARE(apr_status_t) apr_socket_connect(apr_socket_t *sock, - apr_sockaddr_t *sa) +APR_DECLARE(fspr_status_t) fspr_socket_connect(fspr_socket_t *sock, + fspr_sockaddr_t *sa) { - apr_status_t rv; + fspr_status_t rv; if ((sock->socketdes == INVALID_SOCKET) || (!sock->local_addr)) { return APR_ENOTSOCK; @@ -313,7 +313,7 @@ APR_DECLARE(apr_status_t) apr_socket_connect(apr_socket_t *sock, struct timeval tv, *tvptr; fd_set wfdset, efdset; - rv = apr_get_netos_error(); + rv = fspr_get_netos_error(); if (rv != APR_FROM_OS_ERROR(WSAEWOULDBLOCK)) { return rv; } @@ -338,13 +338,13 @@ APR_DECLARE(apr_status_t) apr_socket_connect(apr_socket_t *sock, } else { /* casts for winsock/timeval definition */ - tv.tv_sec = (long)apr_time_sec(sock->timeout); - tv.tv_usec = (int)apr_time_usec(sock->timeout); + tv.tv_sec = (long)fspr_time_sec(sock->timeout); + tv.tv_usec = (int)fspr_time_usec(sock->timeout); tvptr = &tv; } rc = select(FD_SETSIZE+1, NULL, &wfdset, &efdset, tvptr); if (rc == SOCKET_ERROR) { - return apr_get_netos_error(); + return fspr_get_netos_error(); } else if (!rc) { return APR_FROM_OS_ERROR(WSAETIMEDOUT); @@ -354,7 +354,7 @@ APR_DECLARE(apr_status_t) apr_socket_connect(apr_socket_t *sock, /* The connect failed. */ int rclen = sizeof(rc); if (getsockopt(sock->socketdes, SOL_SOCKET, SO_ERROR, (char*) &rc, &rclen)) { - return apr_get_netos_error(); + return fspr_get_netos_error(); } return APR_FROM_OS_ERROR(rc); } @@ -375,14 +375,14 @@ APR_DECLARE(apr_status_t) apr_socket_connect(apr_socket_t *sock, return APR_SUCCESS; } -APR_DECLARE(apr_status_t) apr_socket_type_get(apr_socket_t *sock, int *type) +APR_DECLARE(fspr_status_t) fspr_socket_type_get(fspr_socket_t *sock, int *type) { *type = sock->type; return APR_SUCCESS; } -APR_DECLARE(apr_status_t) apr_socket_data_get(void **data, const char *key, - apr_socket_t *sock) +APR_DECLARE(fspr_status_t) fspr_socket_data_get(void **data, const char *key, + fspr_socket_t *sock) { sock_userdata_t *cur = sock->userdata; @@ -399,77 +399,77 @@ APR_DECLARE(apr_status_t) apr_socket_data_get(void **data, const char *key, return APR_SUCCESS; } -APR_DECLARE(apr_status_t) apr_socket_data_set(apr_socket_t *sock, void *data, +APR_DECLARE(fspr_status_t) fspr_socket_data_set(fspr_socket_t *sock, void *data, const char *key, - apr_status_t (*cleanup)(void *)) + fspr_status_t (*cleanup)(void *)) { - sock_userdata_t *new = apr_palloc(sock->pool, sizeof(sock_userdata_t)); + sock_userdata_t *new = fspr_palloc(sock->pool, sizeof(sock_userdata_t)); - new->key = apr_pstrdup(sock->pool, key); + new->key = fspr_pstrdup(sock->pool, key); new->data = data; new->next = sock->userdata; sock->userdata = new; if (cleanup) { - apr_pool_cleanup_register(sock->pool, data, cleanup, cleanup); + fspr_pool_cleanup_register(sock->pool, data, cleanup, cleanup); } return APR_SUCCESS; } -APR_DECLARE(apr_status_t) apr_os_sock_get(apr_os_sock_t *thesock, - apr_socket_t *sock) +APR_DECLARE(fspr_status_t) fspr_os_sock_get(fspr_os_sock_t *thesock, + fspr_socket_t *sock) { *thesock = sock->socketdes; return APR_SUCCESS; } -APR_DECLARE(apr_status_t) apr_os_sock_make(apr_socket_t **apr_sock, - apr_os_sock_info_t *os_sock_info, - apr_pool_t *cont) +APR_DECLARE(fspr_status_t) fspr_os_sock_make(fspr_socket_t **fspr_sock, + fspr_os_sock_info_t *os_sock_info, + fspr_pool_t *cont) { - alloc_socket(apr_sock, cont); - set_socket_vars(*apr_sock, os_sock_info->family, os_sock_info->type, os_sock_info->protocol); - (*apr_sock)->timeout = -1; - (*apr_sock)->disconnected = 0; - (*apr_sock)->socketdes = *os_sock_info->os_sock; + alloc_socket(fspr_sock, cont); + set_socket_vars(*fspr_sock, os_sock_info->family, os_sock_info->type, os_sock_info->protocol); + (*fspr_sock)->timeout = -1; + (*fspr_sock)->disconnected = 0; + (*fspr_sock)->socketdes = *os_sock_info->os_sock; if (os_sock_info->local) { - memcpy(&(*apr_sock)->local_addr->sa.sin, + memcpy(&(*fspr_sock)->local_addr->sa.sin, os_sock_info->local, - (*apr_sock)->local_addr->salen); - (*apr_sock)->local_addr->pool = cont; + (*fspr_sock)->local_addr->salen); + (*fspr_sock)->local_addr->pool = cont; /* XXX IPv6 - this assumes sin_port and sin6_port at same offset */ - (*apr_sock)->local_addr->port = ntohs((*apr_sock)->local_addr->sa.sin.sin_port); + (*fspr_sock)->local_addr->port = ntohs((*fspr_sock)->local_addr->sa.sin.sin_port); } else { - (*apr_sock)->local_port_unknown = (*apr_sock)->local_interface_unknown = 1; + (*fspr_sock)->local_port_unknown = (*fspr_sock)->local_interface_unknown = 1; } if (os_sock_info->remote) { - memcpy(&(*apr_sock)->remote_addr->sa.sin, + memcpy(&(*fspr_sock)->remote_addr->sa.sin, os_sock_info->remote, - (*apr_sock)->remote_addr->salen); - (*apr_sock)->remote_addr->pool = cont; + (*fspr_sock)->remote_addr->salen); + (*fspr_sock)->remote_addr->pool = cont; /* XXX IPv6 - this assumes sin_port and sin6_port at same offset */ - (*apr_sock)->remote_addr->port = ntohs((*apr_sock)->remote_addr->sa.sin.sin_port); + (*fspr_sock)->remote_addr->port = ntohs((*fspr_sock)->remote_addr->sa.sin.sin_port); } else { - (*apr_sock)->remote_addr_unknown = 1; + (*fspr_sock)->remote_addr_unknown = 1; } - apr_pool_cleanup_register((*apr_sock)->pool, (void *)(*apr_sock), - socket_cleanup, apr_pool_cleanup_null); + fspr_pool_cleanup_register((*fspr_sock)->pool, (void *)(*fspr_sock), + socket_cleanup, fspr_pool_cleanup_null); return APR_SUCCESS; } -APR_DECLARE(apr_status_t) apr_os_sock_put(apr_socket_t **sock, - apr_os_sock_t *thesock, - apr_pool_t *cont) +APR_DECLARE(fspr_status_t) fspr_os_sock_put(fspr_socket_t **sock, + fspr_os_sock_t *thesock, + fspr_pool_t *cont) { if ((*sock) == NULL) { alloc_socket(sock, cont); /* XXX figure out the actual socket type here */ - /* *or* just decide that apr_os_sock_put() has to be told the family and type */ + /* *or* just decide that fspr_os_sock_put() has to be told the family and type */ set_socket_vars(*sock, AF_INET, SOCK_STREAM, 0); (*sock)->timeout = -1; (*sock)->disconnected = 0; @@ -486,12 +486,12 @@ APR_DECLARE(apr_status_t) apr_os_sock_put(apr_socket_t **sock, * This is not trivial to implement. */ -APR_DECLARE(apr_status_t) apr_socket_inherit_set(apr_socket_t *socket) +APR_DECLARE(fspr_status_t) fspr_socket_inherit_set(fspr_socket_t *socket) { return APR_ENOTIMPL; } -APR_DECLARE(apr_status_t) apr_socket_inherit_unset(apr_socket_t *socket) +APR_DECLARE(fspr_status_t) fspr_socket_inherit_unset(fspr_socket_t *socket) { return APR_ENOTIMPL; } diff --git a/libs/apr/network_io/win32/sockopt.c b/libs/apr/network_io/win32/sockopt.c index 05ba19c9b88..ee92233836b 100644 --- a/libs/apr/network_io/win32/sockopt.c +++ b/libs/apr/network_io/win32/sockopt.c @@ -14,36 +14,36 @@ * limitations under the License. */ -#include "apr_arch_networkio.h" -#include "apr_network_io.h" -#include "apr_general.h" -#include "apr_strings.h" +#include "fspr_arch_networkio.h" +#include "fspr_network_io.h" +#include "fspr_general.h" +#include "fspr_strings.h" #include -apr_status_t soblock(SOCKET sd) +fspr_status_t soblock(SOCKET sd) { u_long zero = 0; if (ioctlsocket(sd, FIONBIO, &zero) == SOCKET_ERROR) { - return apr_get_netos_error(); + return fspr_get_netos_error(); } return APR_SUCCESS; } -apr_status_t sononblock(SOCKET sd) +fspr_status_t sononblock(SOCKET sd) { u_long one = 1; if (ioctlsocket(sd, FIONBIO, &one) == SOCKET_ERROR) { - return apr_get_netos_error(); + return fspr_get_netos_error(); } return APR_SUCCESS; } -APR_DECLARE(apr_status_t) apr_socket_timeout_set(apr_socket_t *sock, apr_interval_time_t t) +APR_DECLARE(fspr_status_t) fspr_socket_timeout_set(fspr_socket_t *sock, fspr_interval_time_t t) { - apr_status_t stat; + fspr_status_t stat; if (t == 0) { /* Set the socket non-blocking if it was previously blocking */ @@ -62,7 +62,7 @@ APR_DECLARE(apr_status_t) apr_socket_timeout_set(apr_socket_t *sock, apr_interva if (sock->timeout != t) { /* Win32 timeouts are in msec, represented as int */ - sock->timeout_ms = (int)apr_time_as_msec(t); + sock->timeout_ms = (int)fspr_time_as_msec(t); setsockopt(sock->socketdes, SOL_SOCKET, SO_RCVTIMEO, (char *) &sock->timeout_ms, sizeof(sock->timeout_ms)); @@ -86,56 +86,56 @@ APR_DECLARE(apr_status_t) apr_socket_timeout_set(apr_socket_t *sock, apr_interva } -APR_DECLARE(apr_status_t) apr_socket_opt_set(apr_socket_t *sock, - apr_int32_t opt, apr_int32_t on) +APR_DECLARE(fspr_status_t) fspr_socket_opt_set(fspr_socket_t *sock, + fspr_int32_t opt, fspr_int32_t on) { int one; - apr_status_t stat; + fspr_status_t stat; one = on ? 1 : 0; switch (opt) { case APR_SO_KEEPALIVE: - if (on != apr_is_option_set(sock, APR_SO_KEEPALIVE)) { + if (on != fspr_is_option_set(sock, APR_SO_KEEPALIVE)) { if (setsockopt(sock->socketdes, SOL_SOCKET, SO_KEEPALIVE, (void *)&one, sizeof(int)) == -1) { - return apr_get_netos_error(); + return fspr_get_netos_error(); } - apr_set_option(sock, APR_SO_KEEPALIVE, on); + fspr_set_option(sock, APR_SO_KEEPALIVE, on); } break; case APR_SO_DEBUG: - if (on != apr_is_option_set(sock, APR_SO_DEBUG)) { + if (on != fspr_is_option_set(sock, APR_SO_DEBUG)) { if (setsockopt(sock->socketdes, SOL_SOCKET, SO_DEBUG, (void *)&one, sizeof(int)) == -1) { - return apr_get_netos_error(); + return fspr_get_netos_error(); } - apr_set_option(sock, APR_SO_DEBUG, on); + fspr_set_option(sock, APR_SO_DEBUG, on); } break; case APR_SO_SNDBUF: if (setsockopt(sock->socketdes, SOL_SOCKET, SO_SNDBUF, (void *)&on, sizeof(int)) == -1) { - return apr_get_netos_error(); + return fspr_get_netos_error(); } break; case APR_SO_RCVBUF: if (setsockopt(sock->socketdes, SOL_SOCKET, SO_RCVBUF, (void *)&on, sizeof(int)) == -1) { - return apr_get_netos_error(); + return fspr_get_netos_error(); } break; case APR_SO_REUSEADDR: - if (on != apr_is_option_set(sock, APR_SO_REUSEADDR)) { + if (on != fspr_is_option_set(sock, APR_SO_REUSEADDR)) { if (setsockopt(sock->socketdes, SOL_SOCKET, SO_REUSEADDR, (void *)&one, sizeof(int)) == -1) { - return apr_get_netos_error(); + return fspr_get_netos_error(); } - apr_set_option(sock, APR_SO_REUSEADDR, on); + fspr_set_option(sock, APR_SO_REUSEADDR, on); } break; case APR_SO_NONBLOCK: - if (apr_is_option_set(sock, APR_SO_NONBLOCK) != on) { + if (fspr_is_option_set(sock, APR_SO_NONBLOCK) != on) { if (on) { if ((stat = sononblock(sock->socketdes)) != APR_SUCCESS) return stat; @@ -144,26 +144,26 @@ APR_DECLARE(apr_status_t) apr_socket_opt_set(apr_socket_t *sock, if ((stat = soblock(sock->socketdes)) != APR_SUCCESS) return stat; } - apr_set_option(sock, APR_SO_NONBLOCK, on); + fspr_set_option(sock, APR_SO_NONBLOCK, on); } break; case APR_SO_LINGER: { - if (apr_is_option_set(sock, APR_SO_LINGER) != on) { + if (fspr_is_option_set(sock, APR_SO_LINGER) != on) { struct linger li; li.l_onoff = on; li.l_linger = APR_MAX_SECS_TO_LINGER; if (setsockopt(sock->socketdes, SOL_SOCKET, SO_LINGER, (char *) &li, sizeof(struct linger)) == -1) { - return apr_get_netos_error(); + return fspr_get_netos_error(); } - apr_set_option(sock, APR_SO_LINGER, on); + fspr_set_option(sock, APR_SO_LINGER, on); } break; } case APR_TCP_DEFER_ACCEPT: #if defined(TCP_DEFER_ACCEPT) - if (apr_is_option_set(sock, APR_TCP_DEFER_ACCEPT) != on) { + if (fspr_is_option_set(sock, APR_TCP_DEFER_ACCEPT) != on) { int optlevel = IPPROTO_TCP; int optname = TCP_DEFER_ACCEPT; @@ -171,13 +171,13 @@ APR_DECLARE(apr_status_t) apr_socket_opt_set(apr_socket_t *sock, (void *)&on, sizeof(int)) == -1) { return errno; } - apr_set_option(sock, APR_TCP_DEFER_ACCEPT, on); + fspr_set_option(sock, APR_TCP_DEFER_ACCEPT, on); } #else return APR_ENOTIMPL; #endif case APR_TCP_NODELAY: - if (apr_is_option_set(sock, APR_TCP_NODELAY) != on) { + if (fspr_is_option_set(sock, APR_TCP_NODELAY) != on) { int optlevel = IPPROTO_TCP; int optname = TCP_NODELAY; @@ -189,9 +189,9 @@ APR_DECLARE(apr_status_t) apr_socket_opt_set(apr_socket_t *sock, #endif if (setsockopt(sock->socketdes, optlevel, optname, (void *)&on, sizeof(int)) == -1) { - return apr_get_netos_error(); + return fspr_get_netos_error(); } - apr_set_option(sock, APR_TCP_NODELAY, on); + fspr_set_option(sock, APR_TCP_NODELAY, on); } break; case APR_IPV6_V6ONLY: @@ -202,9 +202,9 @@ APR_DECLARE(apr_status_t) apr_socket_opt_set(apr_socket_t *sock, */ if (setsockopt(sock->socketdes, IPPROTO_IPV6, IPV6_V6ONLY, (void *)&on, sizeof(int)) == -1) { - return apr_get_netos_error(); + return fspr_get_netos_error(); } - apr_set_option(sock, APR_IPV6_V6ONLY, on); + fspr_set_option(sock, APR_IPV6_V6ONLY, on); #else return APR_ENOTIMPL; #endif @@ -217,15 +217,15 @@ APR_DECLARE(apr_status_t) apr_socket_opt_set(apr_socket_t *sock, } -APR_DECLARE(apr_status_t) apr_socket_timeout_get(apr_socket_t *sock, apr_interval_time_t *t) +APR_DECLARE(fspr_status_t) fspr_socket_timeout_get(fspr_socket_t *sock, fspr_interval_time_t *t) { *t = sock->timeout; return APR_SUCCESS; } -APR_DECLARE(apr_status_t) apr_socket_opt_get(apr_socket_t *sock, - apr_int32_t opt, apr_int32_t *on) +APR_DECLARE(fspr_status_t) fspr_socket_opt_get(fspr_socket_t *sock, + fspr_int32_t opt, fspr_int32_t *on) { switch (opt) { case APR_SO_DISCONNECTED: @@ -237,14 +237,14 @@ APR_DECLARE(apr_status_t) apr_socket_opt_get(apr_socket_t *sock, case APR_SO_NONBLOCK: case APR_SO_LINGER: default: - *on = apr_is_option_set(sock, opt); + *on = fspr_is_option_set(sock, opt); break; } return APR_SUCCESS; } -APR_DECLARE(int) apr_socket_fd_get(apr_socket_t *sock) +APR_DECLARE(int) fspr_socket_fd_get(fspr_socket_t *sock) { if (sock) { return sock->socketdes; @@ -254,12 +254,12 @@ APR_DECLARE(int) apr_socket_fd_get(apr_socket_t *sock) } -APR_DECLARE(apr_status_t) apr_socket_atmark(apr_socket_t *sock, int *atmark) +APR_DECLARE(fspr_status_t) fspr_socket_atmark(fspr_socket_t *sock, int *atmark) { u_long oobmark; if (ioctlsocket(sock->socketdes, SIOCATMARK, (void*) &oobmark) < 0) - return apr_get_netos_error(); + return fspr_get_netos_error(); *atmark = (oobmark != 0); @@ -267,12 +267,12 @@ APR_DECLARE(apr_status_t) apr_socket_atmark(apr_socket_t *sock, int *atmark) } -APR_DECLARE(apr_status_t) apr_gethostname(char *buf, int len, - apr_pool_t *cont) +APR_DECLARE(fspr_status_t) fspr_gethostname(char *buf, int len, + fspr_pool_t *cont) { if (gethostname(buf, len) == -1) { buf[0] = '\0'; - return apr_get_netos_error(); + return fspr_get_netos_error(); } else if (!memchr(buf, '\0', len)) { /* buffer too small */ buf[0] = '\0'; diff --git a/libs/apr/passwd/apr_getpass.c b/libs/apr/passwd/fspr_getpass.c similarity index 93% rename from libs/apr/passwd/apr_getpass.c rename to libs/apr/passwd/fspr_getpass.c index 7e897749486..c03087f027a 100644 --- a/libs/apr/passwd/apr_getpass.c +++ b/libs/apr/passwd/fspr_getpass.c @@ -14,15 +14,15 @@ * limitations under the License. */ -/* apr_password_get.c: abstraction to provide for obtaining a password from the +/* fspr_password_get.c: abstraction to provide for obtaining a password from the * command line in whatever way the OS supports. In the best case, it's a * wrapper for the system library's getpass() routine; otherwise, we * use one we define ourselves. */ -#include "apr_private.h" -#include "apr_strings.h" -#include "apr_lib.h" -#include "apr_errno.h" +#include "fspr_private.h" +#include "fspr_strings.h" +#include "fspr_lib.h" +#include "fspr_errno.h" #if APR_HAVE_SYS_TYPES_H #include #endif @@ -179,7 +179,7 @@ static char *getpass(const char *prompt) fputs(prompt, stderr); n = 0; } - else if ((n < sizeof(password) - 1) && !apr_iscntrl(ch)) { + else if ((n < sizeof(password) - 1) && !fspr_iscntrl(ch)) { password[n++] = ch; fputc('*', stderr); } @@ -213,21 +213,21 @@ static char *getpass(const char *prompt) * smaller than our own. */ -APR_DECLARE(apr_status_t) apr_password_get(const char *prompt, char *pwbuf, apr_size_t *bufsiz) +APR_DECLARE(fspr_status_t) fspr_password_get(const char *prompt, char *pwbuf, fspr_size_t *bufsiz) { #ifdef HAVE_GETPASSPHRASE char *pw_got = getpassphrase(prompt); #else char *pw_got = getpass(prompt); #endif - apr_status_t rv = APR_SUCCESS; + fspr_status_t rv = APR_SUCCESS; if (!pw_got) return APR_EINVAL; if (strlen(pw_got) >= *bufsiz) { rv = APR_ENAMETOOLONG; } - apr_cpystrn(pwbuf, pw_got, *bufsiz); + fspr_cpystrn(pwbuf, pw_got, *bufsiz); memset(pw_got, 0, strlen(pw_got)); return rv; } diff --git a/libs/apr/poll/os2/poll.c b/libs/apr/poll/os2/poll.c index 3c36e5e688e..f27b17e9755 100644 --- a/libs/apr/poll/os2/poll.c +++ b/libs/apr/poll/os2/poll.c @@ -14,12 +14,12 @@ * limitations under the License. */ -#include "apr.h" -#include "apr_poll.h" -#include "apr_arch_networkio.h" +#include "fspr.h" +#include "fspr_poll.h" +#include "fspr_arch_networkio.h" -APR_DECLARE(apr_status_t) apr_poll(apr_pollfd_t *aprset, apr_int32_t num, - apr_int32_t *nsds, apr_interval_time_t timeout) +APR_DECLARE(fspr_status_t) fspr_poll(fspr_pollfd_t *aprset, fspr_int32_t num, + fspr_int32_t *nsds, fspr_interval_time_t timeout) { int *pollset; int i; diff --git a/libs/apr/poll/os2/pollset.c b/libs/apr/poll/os2/pollset.c index 0680c29c099..69f5f10cae4 100644 --- a/libs/apr/poll/os2/pollset.c +++ b/libs/apr/poll/os2/pollset.c @@ -14,46 +14,46 @@ * limitations under the License. */ -#include "apr.h" -#include "apr_poll.h" -#include "apr_arch_networkio.h" +#include "fspr.h" +#include "fspr_poll.h" +#include "fspr_arch_networkio.h" -struct apr_pollset_t { - apr_pool_t *pool; - apr_uint32_t nelts; - apr_uint32_t nalloc; +struct fspr_pollset_t { + fspr_pool_t *pool; + fspr_uint32_t nelts; + fspr_uint32_t nalloc; int *pollset; int num_read; int num_write; int num_except; int num_total; - apr_pollfd_t *query_set; - apr_pollfd_t *result_set; + fspr_pollfd_t *query_set; + fspr_pollfd_t *result_set; }; -APR_DECLARE(apr_status_t) apr_pollset_create(apr_pollset_t **pollset, - apr_uint32_t size, - apr_pool_t *p, - apr_uint32_t flags) +APR_DECLARE(fspr_status_t) fspr_pollset_create(fspr_pollset_t **pollset, + fspr_uint32_t size, + fspr_pool_t *p, + fspr_uint32_t flags) { - *pollset = apr_palloc(p, sizeof(**pollset)); + *pollset = fspr_palloc(p, sizeof(**pollset)); (*pollset)->pool = p; (*pollset)->nelts = 0; (*pollset)->nalloc = size; - (*pollset)->pollset = apr_palloc(p, size * sizeof(int) * 3); - (*pollset)->query_set = apr_palloc(p, size * sizeof(apr_pollfd_t)); - (*pollset)->result_set = apr_palloc(p, size * sizeof(apr_pollfd_t)); + (*pollset)->pollset = fspr_palloc(p, size * sizeof(int) * 3); + (*pollset)->query_set = fspr_palloc(p, size * sizeof(fspr_pollfd_t)); + (*pollset)->result_set = fspr_palloc(p, size * sizeof(fspr_pollfd_t)); (*pollset)->num_read = -1; return APR_SUCCESS; } -APR_DECLARE(apr_status_t) apr_pollset_destroy(apr_pollset_t *pollset) +APR_DECLARE(fspr_status_t) fspr_pollset_destroy(fspr_pollset_t *pollset) { /* A no-op function for now. If we later implement /dev/poll * support, we'll need to close the /dev/poll fd here @@ -63,8 +63,8 @@ APR_DECLARE(apr_status_t) apr_pollset_destroy(apr_pollset_t *pollset) -APR_DECLARE(apr_status_t) apr_pollset_add(apr_pollset_t *pollset, - const apr_pollfd_t *descriptor) +APR_DECLARE(fspr_status_t) fspr_pollset_add(fspr_pollset_t *pollset, + const fspr_pollfd_t *descriptor) { if (pollset->nelts == pollset->nalloc) { return APR_ENOMEM; @@ -83,16 +83,16 @@ APR_DECLARE(apr_status_t) apr_pollset_add(apr_pollset_t *pollset, -APR_DECLARE(apr_status_t) apr_pollset_remove(apr_pollset_t *pollset, - const apr_pollfd_t *descriptor) +APR_DECLARE(fspr_status_t) fspr_pollset_remove(fspr_pollset_t *pollset, + const fspr_pollfd_t *descriptor) { - apr_uint32_t i; + fspr_uint32_t i; for (i = 0; i < pollset->nelts; i++) { if (descriptor->desc.s == pollset->query_set[i].desc.s) { /* Found an instance of the fd: remove this and any other copies */ - apr_uint32_t dst = i; - apr_uint32_t old_nelts = pollset->nelts; + fspr_uint32_t dst = i; + fspr_uint32_t old_nelts = pollset->nelts; pollset->nelts--; for (i++; i < old_nelts; i++) { @@ -116,7 +116,7 @@ APR_DECLARE(apr_status_t) apr_pollset_remove(apr_pollset_t *pollset, -static void make_pollset(apr_pollset_t *pollset) +static void make_pollset(fspr_pollset_t *pollset) { int i; int pos = 0; @@ -151,13 +151,13 @@ static void make_pollset(apr_pollset_t *pollset) -APR_DECLARE(apr_status_t) apr_pollset_poll(apr_pollset_t *pollset, - apr_interval_time_t timeout, - apr_int32_t *num, - const apr_pollfd_t **descriptors) +APR_DECLARE(fspr_status_t) fspr_pollset_poll(fspr_pollset_t *pollset, + fspr_interval_time_t timeout, + fspr_int32_t *num, + const fspr_pollfd_t **descriptors) { int rv; - apr_uint32_t i; + fspr_uint32_t i; int *pollresult; int read_pos, write_pos, except_pos; diff --git a/libs/apr/poll/unix/epoll.c b/libs/apr/poll/unix/epoll.c index 388c67c0412..cf9e47392b7 100644 --- a/libs/apr/poll/unix/epoll.c +++ b/libs/apr/poll/unix/epoll.c @@ -14,13 +14,13 @@ * limitations under the License. */ -#include "apr_arch_poll_private.h" +#include "fspr_arch_poll_private.h" #ifdef POLLSET_USES_EPOLL -static apr_int16_t get_epoll_event(apr_int16_t event) +static fspr_int16_t get_epoll_event(fspr_int16_t event) { - apr_int16_t rv = 0; + fspr_int16_t rv = 0; if (event & APR_POLLIN) rv |= EPOLLIN; @@ -37,9 +37,9 @@ static apr_int16_t get_epoll_event(apr_int16_t event) return rv; } -static apr_int16_t get_epoll_revent(apr_int16_t event) +static fspr_int16_t get_epoll_revent(fspr_int16_t event) { - apr_int16_t rv = 0; + fspr_int16_t rv = 0; if (event & EPOLLIN) rv |= APR_POLLIN; @@ -56,18 +56,18 @@ static apr_int16_t get_epoll_revent(apr_int16_t event) return rv; } -struct apr_pollset_t +struct fspr_pollset_t { - apr_pool_t *pool; - apr_uint32_t nelts; - apr_uint32_t nalloc; + fspr_pool_t *pool; + fspr_uint32_t nelts; + fspr_uint32_t nalloc; int epoll_fd; struct epoll_event *pollset; - apr_pollfd_t *result_set; - apr_uint32_t flags; + fspr_pollfd_t *result_set; + fspr_uint32_t flags; #if APR_HAS_THREADS /* A thread mutex to protect operations on the rings */ - apr_thread_mutex_t *ring_lock; + fspr_thread_mutex_t *ring_lock; #endif /* A ring containing all of the pollfd_t that are active */ APR_RING_HEAD(pfd_query_ring_t, pfd_elem_t) query_ring; @@ -78,19 +78,19 @@ struct apr_pollset_t APR_RING_HEAD(pfd_dead_ring_t, pfd_elem_t) dead_ring; }; -static apr_status_t backend_cleanup(void *p_) +static fspr_status_t backend_cleanup(void *p_) { - apr_pollset_t *pollset = (apr_pollset_t *) p_; + fspr_pollset_t *pollset = (fspr_pollset_t *) p_; close(pollset->epoll_fd); return APR_SUCCESS; } -APR_DECLARE(apr_status_t) apr_pollset_create(apr_pollset_t **pollset, - apr_uint32_t size, - apr_pool_t *p, - apr_uint32_t flags) +APR_DECLARE(fspr_status_t) fspr_pollset_create(fspr_pollset_t **pollset, + fspr_uint32_t size, + fspr_pool_t *p, + fspr_uint32_t flags) { - apr_status_t rv; + fspr_status_t rv; int fd; fd = epoll_create(size); @@ -99,10 +99,10 @@ APR_DECLARE(apr_status_t) apr_pollset_create(apr_pollset_t **pollset, return errno; } - *pollset = apr_palloc(p, sizeof(**pollset)); + *pollset = fspr_palloc(p, sizeof(**pollset)); #if APR_HAS_THREADS if (flags & APR_POLLSET_THREADSAFE && - ((rv = apr_thread_mutex_create(&(*pollset)->ring_lock, + ((rv = fspr_thread_mutex_create(&(*pollset)->ring_lock, APR_THREAD_MUTEX_DEFAULT, p) != APR_SUCCESS))) { *pollset = NULL; @@ -119,9 +119,9 @@ APR_DECLARE(apr_status_t) apr_pollset_create(apr_pollset_t **pollset, (*pollset)->flags = flags; (*pollset)->pool = p; (*pollset)->epoll_fd = fd; - (*pollset)->pollset = apr_palloc(p, size * sizeof(struct epoll_event)); - apr_pool_cleanup_register(p, *pollset, backend_cleanup, backend_cleanup); - (*pollset)->result_set = apr_palloc(p, size * sizeof(apr_pollfd_t)); + (*pollset)->pollset = fspr_palloc(p, size * sizeof(struct epoll_event)); + fspr_pool_cleanup_register(p, *pollset, backend_cleanup, backend_cleanup); + (*pollset)->result_set = fspr_palloc(p, size * sizeof(fspr_pollfd_t)); APR_RING_INIT(&(*pollset)->query_ring, pfd_elem_t, link); APR_RING_INIT(&(*pollset)->free_ring, pfd_elem_t, link); @@ -130,18 +130,18 @@ APR_DECLARE(apr_status_t) apr_pollset_create(apr_pollset_t **pollset, return APR_SUCCESS; } -APR_DECLARE(apr_status_t) apr_pollset_destroy(apr_pollset_t *pollset) +APR_DECLARE(fspr_status_t) fspr_pollset_destroy(fspr_pollset_t *pollset) { - return apr_pool_cleanup_run(pollset->pool, pollset, backend_cleanup); + return fspr_pool_cleanup_run(pollset->pool, pollset, backend_cleanup); } -APR_DECLARE(apr_status_t) apr_pollset_add(apr_pollset_t *pollset, - const apr_pollfd_t *descriptor) +APR_DECLARE(fspr_status_t) fspr_pollset_add(fspr_pollset_t *pollset, + const fspr_pollfd_t *descriptor) { struct epoll_event ev; int ret = -1; pfd_elem_t *elem; - apr_status_t rv = APR_SUCCESS; + fspr_status_t rv = APR_SUCCESS; pollset_lock_rings(); @@ -150,7 +150,7 @@ APR_DECLARE(apr_status_t) apr_pollset_add(apr_pollset_t *pollset, APR_RING_REMOVE(elem, link); } else { - elem = (pfd_elem_t *) apr_palloc(pollset->pool, sizeof(pfd_elem_t)); + elem = (pfd_elem_t *) fspr_palloc(pollset->pool, sizeof(pfd_elem_t)); APR_RING_ELEM_INIT(elem, link); } elem->pfd = *descriptor; @@ -180,11 +180,11 @@ APR_DECLARE(apr_status_t) apr_pollset_add(apr_pollset_t *pollset, return rv; } -APR_DECLARE(apr_status_t) apr_pollset_remove(apr_pollset_t *pollset, - const apr_pollfd_t *descriptor) +APR_DECLARE(fspr_status_t) fspr_pollset_remove(fspr_pollset_t *pollset, + const fspr_pollfd_t *descriptor) { pfd_elem_t *ep; - apr_status_t rv = APR_SUCCESS; + fspr_status_t rv = APR_SUCCESS; struct epoll_event ev; int ret = -1; @@ -224,13 +224,13 @@ APR_DECLARE(apr_status_t) apr_pollset_remove(apr_pollset_t *pollset, return rv; } -APR_DECLARE(apr_status_t) apr_pollset_poll(apr_pollset_t *pollset, - apr_interval_time_t timeout, - apr_int32_t *num, - const apr_pollfd_t **descriptors) +APR_DECLARE(fspr_status_t) fspr_pollset_poll(fspr_pollset_t *pollset, + fspr_interval_time_t timeout, + fspr_int32_t *num, + const fspr_pollfd_t **descriptors) { int ret, i; - apr_status_t rv = APR_SUCCESS; + fspr_status_t rv = APR_SUCCESS; if (timeout > 0) { timeout /= 1000; @@ -241,7 +241,7 @@ APR_DECLARE(apr_status_t) apr_pollset_poll(apr_pollset_t *pollset, (*num) = ret; if (ret < 0) { - rv = apr_get_netos_error(); + rv = fspr_get_netos_error(); } else if (ret == 0) { rv = APR_TIMEUP; diff --git a/libs/apr/poll/unix/kqueue.c b/libs/apr/poll/unix/kqueue.c index a8bea919c30..29387910079 100644 --- a/libs/apr/poll/unix/kqueue.c +++ b/libs/apr/poll/unix/kqueue.c @@ -14,13 +14,13 @@ * limitations under the License. */ -#include "apr_arch_poll_private.h" +#include "fspr_arch_poll_private.h" #ifdef POLLSET_USES_KQUEUE -static apr_int16_t get_kqueue_revent(apr_int16_t event, apr_int16_t flags) +static fspr_int16_t get_kqueue_revent(fspr_int16_t event, fspr_int16_t flags) { - apr_int16_t rv = 0; + fspr_int16_t rv = 0; if (event == EVFILT_READ) rv |= APR_POLLIN; @@ -34,19 +34,19 @@ static apr_int16_t get_kqueue_revent(apr_int16_t event, apr_int16_t flags) return rv; } -struct apr_pollset_t +struct fspr_pollset_t { - apr_pool_t *pool; - apr_uint32_t nelts; - apr_uint32_t nalloc; + fspr_pool_t *pool; + fspr_uint32_t nelts; + fspr_uint32_t nalloc; int kqueue_fd; struct kevent kevent; struct kevent *ke_set; - apr_pollfd_t *result_set; - apr_uint32_t flags; + fspr_pollfd_t *result_set; + fspr_uint32_t flags; #if APR_HAS_THREADS /* A thread mutex to protect operations on the rings */ - apr_thread_mutex_t *ring_lock; + fspr_thread_mutex_t *ring_lock; #endif /* A ring containing all of the pollfd_t that are active */ APR_RING_HEAD(pfd_query_ring_t, pfd_elem_t) query_ring; @@ -57,23 +57,23 @@ struct apr_pollset_t APR_RING_HEAD(pfd_dead_ring_t, pfd_elem_t) dead_ring; }; -static apr_status_t backend_cleanup(void *p_) +static fspr_status_t backend_cleanup(void *p_) { - apr_pollset_t *pollset = (apr_pollset_t *) p_; + fspr_pollset_t *pollset = (fspr_pollset_t *) p_; close(pollset->kqueue_fd); return APR_SUCCESS; } -APR_DECLARE(apr_status_t) apr_pollset_create(apr_pollset_t **pollset, - apr_uint32_t size, - apr_pool_t *p, - apr_uint32_t flags) +APR_DECLARE(fspr_status_t) fspr_pollset_create(fspr_pollset_t **pollset, + fspr_uint32_t size, + fspr_pool_t *p, + fspr_uint32_t flags) { - apr_status_t rv = APR_SUCCESS; - *pollset = apr_palloc(p, sizeof(**pollset)); + fspr_status_t rv = APR_SUCCESS; + *pollset = fspr_palloc(p, sizeof(**pollset)); #if APR_HAS_THREADS if (flags & APR_POLLSET_THREADSAFE && - ((rv = apr_thread_mutex_create(&(*pollset)->ring_lock, + ((rv = fspr_thread_mutex_create(&(*pollset)->ring_lock, APR_THREAD_MUTEX_DEFAULT, p) != APR_SUCCESS))) { *pollset = NULL; @@ -91,7 +91,7 @@ APR_DECLARE(apr_status_t) apr_pollset_create(apr_pollset_t **pollset, (*pollset)->pool = p; (*pollset)->ke_set = - (struct kevent *) apr_palloc(p, size * sizeof(struct kevent)); + (struct kevent *) fspr_palloc(p, size * sizeof(struct kevent)); memset((*pollset)->ke_set, 0, size * sizeof(struct kevent)); @@ -101,10 +101,10 @@ APR_DECLARE(apr_status_t) apr_pollset_create(apr_pollset_t **pollset, return APR_ENOMEM; } - apr_pool_cleanup_register(p, (void *) (*pollset), backend_cleanup, - apr_pool_cleanup_null); + fspr_pool_cleanup_register(p, (void *) (*pollset), backend_cleanup, + fspr_pool_cleanup_null); - (*pollset)->result_set = apr_palloc(p, size * sizeof(apr_pollfd_t)); + (*pollset)->result_set = fspr_palloc(p, size * sizeof(fspr_pollfd_t)); APR_RING_INIT(&(*pollset)->query_ring, pfd_elem_t, link); APR_RING_INIT(&(*pollset)->free_ring, pfd_elem_t, link); @@ -113,17 +113,17 @@ APR_DECLARE(apr_status_t) apr_pollset_create(apr_pollset_t **pollset, return rv; } -APR_DECLARE(apr_status_t) apr_pollset_destroy(apr_pollset_t * pollset) +APR_DECLARE(fspr_status_t) fspr_pollset_destroy(fspr_pollset_t * pollset) { - return apr_pool_cleanup_run(pollset->pool, pollset, backend_cleanup); + return fspr_pool_cleanup_run(pollset->pool, pollset, backend_cleanup); } -APR_DECLARE(apr_status_t) apr_pollset_add(apr_pollset_t *pollset, - const apr_pollfd_t *descriptor) +APR_DECLARE(fspr_status_t) fspr_pollset_add(fspr_pollset_t *pollset, + const fspr_pollfd_t *descriptor) { - apr_os_sock_t fd; + fspr_os_sock_t fd; pfd_elem_t *elem; - apr_status_t rv = APR_SUCCESS; + fspr_status_t rv = APR_SUCCESS; pollset_lock_rings(); @@ -132,7 +132,7 @@ APR_DECLARE(apr_status_t) apr_pollset_add(apr_pollset_t *pollset, APR_RING_REMOVE(elem, link); } else { - elem = (pfd_elem_t *) apr_palloc(pollset->pool, sizeof(pfd_elem_t)); + elem = (pfd_elem_t *) fspr_palloc(pollset->pool, sizeof(pfd_elem_t)); APR_RING_ELEM_INIT(elem, link); } elem->pfd = *descriptor; @@ -175,12 +175,12 @@ APR_DECLARE(apr_status_t) apr_pollset_add(apr_pollset_t *pollset, return rv; } -APR_DECLARE(apr_status_t) apr_pollset_remove(apr_pollset_t *pollset, - const apr_pollfd_t *descriptor) +APR_DECLARE(fspr_status_t) fspr_pollset_remove(fspr_pollset_t *pollset, + const fspr_pollfd_t *descriptor) { pfd_elem_t *ep; - apr_status_t rv = APR_SUCCESS; - apr_os_sock_t fd; + fspr_status_t rv = APR_SUCCESS; + fspr_os_sock_t fd; pollset_lock_rings(); @@ -229,21 +229,21 @@ APR_DECLARE(apr_status_t) apr_pollset_remove(apr_pollset_t *pollset, return rv; } -APR_DECLARE(apr_status_t) apr_pollset_poll(apr_pollset_t *pollset, - apr_interval_time_t timeout, - apr_int32_t *num, - const apr_pollfd_t **descriptors) +APR_DECLARE(fspr_status_t) fspr_pollset_poll(fspr_pollset_t *pollset, + fspr_interval_time_t timeout, + fspr_int32_t *num, + const fspr_pollfd_t **descriptors) { int ret, i; struct timespec tv, *tvptr; - apr_status_t rv = APR_SUCCESS; + fspr_status_t rv = APR_SUCCESS; if (timeout < 0) { tvptr = NULL; } else { - tv.tv_sec = (long) apr_time_sec(timeout); - tv.tv_nsec = (long) apr_time_msec(timeout); + tv.tv_sec = (long) fspr_time_sec(timeout); + tv.tv_nsec = (long) fspr_time_msec(timeout); tvptr = &tv; } @@ -251,7 +251,7 @@ APR_DECLARE(apr_status_t) apr_pollset_poll(apr_pollset_t *pollset, tvptr); (*num) = ret; if (ret < 0) { - rv = apr_get_netos_error(); + rv = fspr_get_netos_error(); } else if (ret == 0) { rv = APR_TIMEUP; diff --git a/libs/apr/poll/unix/poll.c b/libs/apr/poll/unix/poll.c index d27a9998d46..6b2a3c9fc04 100644 --- a/libs/apr/poll/unix/poll.c +++ b/libs/apr/poll/unix/poll.c @@ -14,13 +14,13 @@ * limitations under the License. */ -#include "apr_arch_poll_private.h" +#include "fspr_arch_poll_private.h" #if defined(POLL_USES_POLL) || defined(POLLSET_USES_POLL) -static apr_int16_t get_event(apr_int16_t event) +static fspr_int16_t get_event(fspr_int16_t event) { - apr_int16_t rv = 0; + fspr_int16_t rv = 0; if (event & APR_POLLIN) rv |= POLLIN; @@ -38,9 +38,9 @@ static apr_int16_t get_event(apr_int16_t event) return rv; } -static apr_int16_t get_revent(apr_int16_t event) +static fspr_int16_t get_revent(fspr_int16_t event) { - apr_int16_t rv = 0; + fspr_int16_t rv = 0; if (event & POLLIN) rv |= APR_POLLIN; @@ -65,9 +65,9 @@ static apr_int16_t get_revent(apr_int16_t event) #define SMALL_POLLSET_LIMIT 8 -APR_DECLARE(apr_status_t) apr_poll(apr_pollfd_t *aprset, apr_int32_t num, - apr_int32_t *nsds, - apr_interval_time_t timeout) +APR_DECLARE(fspr_status_t) fspr_poll(fspr_pollfd_t *aprset, fspr_int32_t num, + fspr_int32_t *nsds, + fspr_interval_time_t timeout) { int i, num_to_poll; #ifdef HAVE_VLA @@ -89,7 +89,7 @@ APR_DECLARE(apr_status_t) apr_poll(apr_pollfd_t *aprset, apr_int32_t num, * mapping. */ pollset = malloc(sizeof(struct pollfd) * num); - /* The other option is adding an apr_pool_abort() fn to invoke + /* The other option is adding an fspr_pool_abort() fn to invoke * the pool's out of memory handler */ if (!pollset) @@ -133,7 +133,7 @@ APR_DECLARE(apr_status_t) apr_poll(apr_pollfd_t *aprset, apr_int32_t num, #endif if ((*nsds) < 0) { - return apr_get_netos_error(); + return fspr_get_netos_error(); } if ((*nsds) == 0) { return APR_TIMEUP; @@ -147,43 +147,43 @@ APR_DECLARE(apr_status_t) apr_poll(apr_pollfd_t *aprset, apr_int32_t num, #ifdef POLLSET_USES_POLL -struct apr_pollset_t +struct fspr_pollset_t { - apr_pool_t *pool; - apr_uint32_t nelts; - apr_uint32_t nalloc; + fspr_pool_t *pool; + fspr_uint32_t nelts; + fspr_uint32_t nalloc; struct pollfd *pollset; - apr_pollfd_t *query_set; - apr_pollfd_t *result_set; + fspr_pollfd_t *query_set; + fspr_pollfd_t *result_set; }; -APR_DECLARE(apr_status_t) apr_pollset_create(apr_pollset_t **pollset, - apr_uint32_t size, - apr_pool_t *p, - apr_uint32_t flags) +APR_DECLARE(fspr_status_t) fspr_pollset_create(fspr_pollset_t **pollset, + fspr_uint32_t size, + fspr_pool_t *p, + fspr_uint32_t flags) { if (flags & APR_POLLSET_THREADSAFE) { *pollset = NULL; return APR_ENOTIMPL; } - *pollset = apr_palloc(p, sizeof(**pollset)); + *pollset = fspr_palloc(p, sizeof(**pollset)); (*pollset)->nelts = 0; (*pollset)->nalloc = size; (*pollset)->pool = p; - (*pollset)->pollset = apr_palloc(p, size * sizeof(struct pollfd)); - (*pollset)->query_set = apr_palloc(p, size * sizeof(apr_pollfd_t)); - (*pollset)->result_set = apr_palloc(p, size * sizeof(apr_pollfd_t)); + (*pollset)->pollset = fspr_palloc(p, size * sizeof(struct pollfd)); + (*pollset)->query_set = fspr_palloc(p, size * sizeof(fspr_pollfd_t)); + (*pollset)->result_set = fspr_palloc(p, size * sizeof(fspr_pollfd_t)); return APR_SUCCESS; } -APR_DECLARE(apr_status_t) apr_pollset_destroy(apr_pollset_t *pollset) +APR_DECLARE(fspr_status_t) fspr_pollset_destroy(fspr_pollset_t *pollset) { return APR_SUCCESS; } -APR_DECLARE(apr_status_t) apr_pollset_add(apr_pollset_t *pollset, - const apr_pollfd_t *descriptor) +APR_DECLARE(fspr_status_t) fspr_pollset_add(fspr_pollset_t *pollset, + const fspr_pollfd_t *descriptor) { if (pollset->nelts == pollset->nalloc) { return APR_ENOMEM; @@ -205,16 +205,16 @@ APR_DECLARE(apr_status_t) apr_pollset_add(apr_pollset_t *pollset, return APR_SUCCESS; } -APR_DECLARE(apr_status_t) apr_pollset_remove(apr_pollset_t *pollset, - const apr_pollfd_t *descriptor) +APR_DECLARE(fspr_status_t) fspr_pollset_remove(fspr_pollset_t *pollset, + const fspr_pollfd_t *descriptor) { - apr_uint32_t i; + fspr_uint32_t i; for (i = 0; i < pollset->nelts; i++) { if (descriptor->desc.s == pollset->query_set[i].desc.s) { /* Found an instance of the fd: remove this and any other copies */ - apr_uint32_t dst = i; - apr_uint32_t old_nelts = pollset->nelts; + fspr_uint32_t dst = i; + fspr_uint32_t old_nelts = pollset->nelts; pollset->nelts--; for (i++; i < old_nelts; i++) { if (descriptor->desc.s == pollset->query_set[i].desc.s) { @@ -233,13 +233,13 @@ APR_DECLARE(apr_status_t) apr_pollset_remove(apr_pollset_t *pollset, return APR_NOTFOUND; } -APR_DECLARE(apr_status_t) apr_pollset_poll(apr_pollset_t *pollset, - apr_interval_time_t timeout, - apr_int32_t *num, - const apr_pollfd_t **descriptors) +APR_DECLARE(fspr_status_t) fspr_pollset_poll(fspr_pollset_t *pollset, + fspr_interval_time_t timeout, + fspr_int32_t *num, + const fspr_pollfd_t **descriptors) { int rv; - apr_uint32_t i, j; + fspr_uint32_t i, j; if (timeout > 0) { timeout /= 1000; @@ -247,7 +247,7 @@ APR_DECLARE(apr_status_t) apr_pollset_poll(apr_pollset_t *pollset, rv = poll(pollset->pollset, pollset->nelts, timeout); (*num) = rv; if (rv < 0) { - return apr_get_netos_error(); + return fspr_get_netos_error(); } if (rv == 0) { return APR_TIMEUP; diff --git a/libs/apr/poll/unix/port.c b/libs/apr/poll/unix/port.c index f668912b3f8..626a690d400 100644 --- a/libs/apr/poll/unix/port.c +++ b/libs/apr/poll/unix/port.c @@ -14,13 +14,13 @@ * limitations under the License. */ -#include "apr_arch_poll_private.h" +#include "fspr_arch_poll_private.h" #ifdef POLLSET_USES_PORT -static apr_int16_t get_event(apr_int16_t event) +static fspr_int16_t get_event(fspr_int16_t event) { - apr_int16_t rv = 0; + fspr_int16_t rv = 0; if (event & APR_POLLIN) rv |= POLLIN; @@ -38,9 +38,9 @@ static apr_int16_t get_event(apr_int16_t event) return rv; } -static apr_int16_t get_revent(apr_int16_t event) +static fspr_int16_t get_revent(fspr_int16_t event) { - apr_int16_t rv = 0; + fspr_int16_t rv = 0; if (event & POLLIN) rv |= APR_POLLIN; @@ -59,18 +59,18 @@ static apr_int16_t get_revent(apr_int16_t event) } -struct apr_pollset_t +struct fspr_pollset_t { - apr_pool_t *pool; - apr_uint32_t nelts; - apr_uint32_t nalloc; + fspr_pool_t *pool; + fspr_uint32_t nelts; + fspr_uint32_t nalloc; int port_fd; port_event_t *port_set; - apr_pollfd_t *result_set; - apr_uint32_t flags; + fspr_pollfd_t *result_set; + fspr_uint32_t flags; #if APR_HAS_THREADS /* A thread mutex to protect operations on the rings */ - apr_thread_mutex_t *ring_lock; + fspr_thread_mutex_t *ring_lock; #endif /* A ring containing all of the pollfd_t that are active */ APR_RING_HEAD(pfd_query_ring_t, pfd_elem_t) query_ring; @@ -82,23 +82,23 @@ struct apr_pollset_t APR_RING_HEAD(pfd_dead_ring_t, pfd_elem_t) dead_ring; }; -static apr_status_t backend_cleanup(void *p_) +static fspr_status_t backend_cleanup(void *p_) { - apr_pollset_t *pollset = (apr_pollset_t *) p_; + fspr_pollset_t *pollset = (fspr_pollset_t *) p_; close(pollset->port_fd); return APR_SUCCESS; } -APR_DECLARE(apr_status_t) apr_pollset_create(apr_pollset_t **pollset, - apr_uint32_t size, - apr_pool_t *p, - apr_uint32_t flags) +APR_DECLARE(fspr_status_t) fspr_pollset_create(fspr_pollset_t **pollset, + fspr_uint32_t size, + fspr_pool_t *p, + fspr_uint32_t flags) { - apr_status_t rv = APR_SUCCESS; - *pollset = apr_palloc(p, sizeof(**pollset)); + fspr_status_t rv = APR_SUCCESS; + *pollset = fspr_palloc(p, sizeof(**pollset)); #if APR_HAS_THREADS if (flags & APR_POLLSET_THREADSAFE && - ((rv = apr_thread_mutex_create(&(*pollset)->ring_lock, + ((rv = fspr_thread_mutex_create(&(*pollset)->ring_lock, APR_THREAD_MUTEX_DEFAULT, p) != APR_SUCCESS))) { *pollset = NULL; @@ -115,7 +115,7 @@ APR_DECLARE(apr_status_t) apr_pollset_create(apr_pollset_t **pollset, (*pollset)->flags = flags; (*pollset)->pool = p; - (*pollset)->port_set = apr_palloc(p, size * sizeof(port_event_t)); + (*pollset)->port_set = fspr_palloc(p, size * sizeof(port_event_t)); (*pollset)->port_fd = port_create(); @@ -123,10 +123,10 @@ APR_DECLARE(apr_status_t) apr_pollset_create(apr_pollset_t **pollset, return APR_ENOMEM; } - apr_pool_cleanup_register(p, (void *) (*pollset), backend_cleanup, - apr_pool_cleanup_null); + fspr_pool_cleanup_register(p, (void *) (*pollset), backend_cleanup, + fspr_pool_cleanup_null); - (*pollset)->result_set = apr_palloc(p, size * sizeof(apr_pollfd_t)); + (*pollset)->result_set = fspr_palloc(p, size * sizeof(fspr_pollfd_t)); APR_RING_INIT(&(*pollset)->query_ring, pfd_elem_t, link); APR_RING_INIT(&(*pollset)->add_ring, pfd_elem_t, link); @@ -136,18 +136,18 @@ APR_DECLARE(apr_status_t) apr_pollset_create(apr_pollset_t **pollset, return rv; } -APR_DECLARE(apr_status_t) apr_pollset_destroy(apr_pollset_t *pollset) +APR_DECLARE(fspr_status_t) fspr_pollset_destroy(fspr_pollset_t *pollset) { - return apr_pool_cleanup_run(pollset->pool, pollset, backend_cleanup); + return fspr_pool_cleanup_run(pollset->pool, pollset, backend_cleanup); } -APR_DECLARE(apr_status_t) apr_pollset_add(apr_pollset_t *pollset, - const apr_pollfd_t *descriptor) +APR_DECLARE(fspr_status_t) fspr_pollset_add(fspr_pollset_t *pollset, + const fspr_pollfd_t *descriptor) { - apr_os_sock_t fd; + fspr_os_sock_t fd; pfd_elem_t *elem; int res; - apr_status_t rv = APR_SUCCESS; + fspr_status_t rv = APR_SUCCESS; pollset_lock_rings(); @@ -156,7 +156,7 @@ APR_DECLARE(apr_status_t) apr_pollset_add(apr_pollset_t *pollset, APR_RING_REMOVE(elem, link); } else { - elem = (pfd_elem_t *) apr_palloc(pollset->pool, sizeof(pfd_elem_t)); + elem = (pfd_elem_t *) fspr_palloc(pollset->pool, sizeof(pfd_elem_t)); APR_RING_ELEM_INIT(elem, link); } elem->pfd = *descriptor; @@ -185,12 +185,12 @@ APR_DECLARE(apr_status_t) apr_pollset_add(apr_pollset_t *pollset, return rv; } -APR_DECLARE(apr_status_t) apr_pollset_remove(apr_pollset_t *pollset, - const apr_pollfd_t *descriptor) +APR_DECLARE(fspr_status_t) fspr_pollset_remove(fspr_pollset_t *pollset, + const fspr_pollfd_t *descriptor) { - apr_os_sock_t fd; + fspr_os_sock_t fd; pfd_elem_t *ep; - apr_status_t rv = APR_SUCCESS; + fspr_status_t rv = APR_SUCCESS; int res; pollset_lock_rings(); @@ -243,24 +243,24 @@ APR_DECLARE(apr_status_t) apr_pollset_remove(apr_pollset_t *pollset, return rv; } -APR_DECLARE(apr_status_t) apr_pollset_poll(apr_pollset_t *pollset, - apr_interval_time_t timeout, - apr_int32_t *num, - const apr_pollfd_t **descriptors) +APR_DECLARE(fspr_status_t) fspr_pollset_poll(fspr_pollset_t *pollset, + fspr_interval_time_t timeout, + fspr_int32_t *num, + const fspr_pollfd_t **descriptors) { - apr_os_sock_t fd; + fspr_os_sock_t fd; int ret, i; unsigned int nget; pfd_elem_t *ep; struct timespec tv, *tvptr; - apr_status_t rv = APR_SUCCESS; + fspr_status_t rv = APR_SUCCESS; if (timeout < 0) { tvptr = NULL; } else { - tv.tv_sec = (long) apr_time_sec(timeout); - tv.tv_nsec = (long) apr_time_msec(timeout); + tv.tv_sec = (long) fspr_time_sec(timeout); + tv.tv_nsec = (long) fspr_time_msec(timeout); tvptr = &tv; } diff --git a/libs/apr/poll/unix/select.c b/libs/apr/poll/unix/select.c index ca35b77db9c..fecdaf845ac 100644 --- a/libs/apr/poll/unix/select.c +++ b/libs/apr/poll/unix/select.c @@ -19,34 +19,34 @@ #define FD_SETSIZE 1024 #endif -#include "apr.h" -#include "apr_poll.h" -#include "apr_time.h" -#include "apr_portable.h" -#include "apr_arch_networkio.h" -#include "apr_arch_file_io.h" -#include "apr_arch_poll_private.h" +#include "fspr.h" +#include "fspr_poll.h" +#include "fspr_time.h" +#include "fspr_portable.h" +#include "fspr_arch_networkio.h" +#include "fspr_arch_file_io.h" +#include "fspr_arch_poll_private.h" #ifdef POLL_USES_SELECT -APR_DECLARE(apr_status_t) apr_poll(apr_pollfd_t *aprset, int num, - apr_int32_t *nsds, - apr_interval_time_t timeout) +APR_DECLARE(fspr_status_t) fspr_poll(fspr_pollfd_t *aprset, int num, + fspr_int32_t *nsds, + fspr_interval_time_t timeout) { fd_set readset, writeset, exceptset; int rv, i; int maxfd = -1; struct timeval tv, *tvptr; #ifdef NETWARE - apr_datatype_e set_type = APR_NO_DESC; + fspr_datatype_e set_type = APR_NO_DESC; #endif if (timeout < 0) { tvptr = NULL; } else { - tv.tv_sec = (long) apr_time_sec(timeout); - tv.tv_usec = (long) apr_time_usec(timeout); + tv.tv_sec = (long) fspr_time_sec(timeout); + tv.tv_usec = (long) fspr_time_usec(timeout); tvptr = &tv; } @@ -55,7 +55,7 @@ APR_DECLARE(apr_status_t) apr_poll(apr_pollfd_t *aprset, int num, FD_ZERO(&exceptset); for (i = 0; i < num; i++) { - apr_os_sock_t fd; + fspr_os_sock_t fd; aprset[i].rtnevents = 0; @@ -128,12 +128,12 @@ APR_DECLARE(apr_status_t) apr_poll(apr_pollfd_t *aprset, int num, return APR_TIMEUP; } if ((*nsds) < 0) { - return apr_get_netos_error(); + return fspr_get_netos_error(); } (*nsds) = 0; for (i = 0; i < num; i++) { - apr_os_sock_t fd; + fspr_os_sock_t fd; if (aprset[i].desc_type == APR_POLL_SOCKET) { fd = aprset[i].desc.s->socketdes; @@ -169,25 +169,25 @@ APR_DECLARE(apr_status_t) apr_poll(apr_pollfd_t *aprset, int num, #ifdef POLLSET_USES_SELECT -struct apr_pollset_t +struct fspr_pollset_t { - apr_pool_t *pool; + fspr_pool_t *pool; - apr_uint32_t nelts; - apr_uint32_t nalloc; + fspr_uint32_t nelts; + fspr_uint32_t nalloc; fd_set readset, writeset, exceptset; int maxfd; - apr_pollfd_t *query_set; - apr_pollfd_t *result_set; + fspr_pollfd_t *query_set; + fspr_pollfd_t *result_set; #ifdef NETWARE int set_type; #endif }; -APR_DECLARE(apr_status_t) apr_pollset_create(apr_pollset_t **pollset, - apr_uint32_t size, - apr_pool_t *p, - apr_uint32_t flags) +APR_DECLARE(fspr_status_t) fspr_pollset_create(fspr_pollset_t **pollset, + fspr_uint32_t size, + fspr_pool_t *p, + fspr_uint32_t flags) { if (flags & APR_POLLSET_THREADSAFE) { *pollset = NULL; @@ -199,7 +199,7 @@ APR_DECLARE(apr_status_t) apr_pollset_create(apr_pollset_t **pollset, return APR_EINVAL; } #endif - *pollset = apr_palloc(p, sizeof(**pollset)); + *pollset = fspr_palloc(p, sizeof(**pollset)); (*pollset)->nelts = 0; (*pollset)->nalloc = size; (*pollset)->pool = p; @@ -210,21 +210,21 @@ APR_DECLARE(apr_status_t) apr_pollset_create(apr_pollset_t **pollset, #ifdef NETWARE (*pollset)->set_type = APR_NO_DESC; #endif - (*pollset)->query_set = apr_palloc(p, size * sizeof(apr_pollfd_t)); - (*pollset)->result_set = apr_palloc(p, size * sizeof(apr_pollfd_t)); + (*pollset)->query_set = fspr_palloc(p, size * sizeof(fspr_pollfd_t)); + (*pollset)->result_set = fspr_palloc(p, size * sizeof(fspr_pollfd_t)); return APR_SUCCESS; } -APR_DECLARE(apr_status_t) apr_pollset_destroy(apr_pollset_t * pollset) +APR_DECLARE(fspr_status_t) fspr_pollset_destroy(fspr_pollset_t * pollset) { return APR_SUCCESS; } -APR_DECLARE(apr_status_t) apr_pollset_add(apr_pollset_t *pollset, - const apr_pollfd_t *descriptor) +APR_DECLARE(fspr_status_t) fspr_pollset_add(fspr_pollset_t *pollset, + const fspr_pollfd_t *descriptor) { - apr_os_sock_t fd; + fspr_os_sock_t fd; if (pollset->nelts == pollset->nalloc) { return APR_ENOMEM; @@ -285,11 +285,11 @@ APR_DECLARE(apr_status_t) apr_pollset_add(apr_pollset_t *pollset, return APR_SUCCESS; } -APR_DECLARE(apr_status_t) apr_pollset_remove(apr_pollset_t * pollset, - const apr_pollfd_t * descriptor) +APR_DECLARE(fspr_status_t) fspr_pollset_remove(fspr_pollset_t * pollset, + const fspr_pollfd_t * descriptor) { - apr_uint32_t i; - apr_os_sock_t fd; + fspr_uint32_t i; + fspr_os_sock_t fd; if (descriptor->desc_type == APR_POLL_SOCKET) { fd = descriptor->desc.s->socketdes; @@ -305,8 +305,8 @@ APR_DECLARE(apr_status_t) apr_pollset_remove(apr_pollset_t * pollset, for (i = 0; i < pollset->nelts; i++) { if (descriptor->desc.s == pollset->query_set[i].desc.s) { /* Found an instance of the fd: remove this and any other copies */ - apr_uint32_t dst = i; - apr_uint32_t old_nelts = pollset->nelts; + fspr_uint32_t dst = i; + fspr_uint32_t old_nelts = pollset->nelts; pollset->nelts--; for (i++; i < old_nelts; i++) { if (descriptor->desc.s == pollset->query_set[i].desc.s) { @@ -330,13 +330,13 @@ APR_DECLARE(apr_status_t) apr_pollset_remove(apr_pollset_t * pollset, return APR_NOTFOUND; } -APR_DECLARE(apr_status_t) apr_pollset_poll(apr_pollset_t *pollset, - apr_interval_time_t timeout, - apr_int32_t *num, - const apr_pollfd_t **descriptors) +APR_DECLARE(fspr_status_t) fspr_pollset_poll(fspr_pollset_t *pollset, + fspr_interval_time_t timeout, + fspr_int32_t *num, + const fspr_pollfd_t **descriptors) { int rv; - apr_uint32_t i, j; + fspr_uint32_t i, j; struct timeval tv, *tvptr; fd_set readset, writeset, exceptset; @@ -344,8 +344,8 @@ APR_DECLARE(apr_status_t) apr_pollset_poll(apr_pollset_t *pollset, tvptr = NULL; } else { - tv.tv_sec = (long) apr_time_sec(timeout); - tv.tv_usec = (long) apr_time_usec(timeout); + tv.tv_sec = (long) fspr_time_sec(timeout); + tv.tv_usec = (long) fspr_time_usec(timeout); tvptr = &tv; } @@ -365,14 +365,14 @@ APR_DECLARE(apr_status_t) apr_pollset_poll(apr_pollset_t *pollset, (*num) = rv; if (rv < 0) { - return apr_get_netos_error(); + return fspr_get_netos_error(); } if (rv == 0) { return APR_TIMEUP; } j = 0; for (i = 0; i < pollset->nelts; i++) { - apr_os_sock_t fd; + fspr_os_sock_t fd; if (pollset->query_set[i].desc_type == APR_POLL_SOCKET) { fd = pollset->query_set[i].desc.s->socketdes; } diff --git a/libs/apr/random/unix/apr_random.c b/libs/apr/random/unix/fspr_random.c similarity index 71% rename from libs/apr/random/unix/apr_random.c rename to libs/apr/random/unix/fspr_random.c index f574b590d47..5657624512e 100644 --- a/libs/apr/random/unix/apr_random.c +++ b/libs/apr/random/unix/fspr_random.c @@ -17,10 +17,10 @@ * See the paper "???" by Ben Laurie for an explanation of this PRNG. */ -#include "apr.h" -#include "apr_pools.h" -#include "apr_random.h" -#include "apr_thread_proc.h" +#include "fspr.h" +#include "fspr_pools.h" +#include "fspr_random.h" +#include "fspr_thread_proc.h" #include #ifdef min @@ -35,11 +35,11 @@ #define APR_RANDOM_DEFAULT_G_FOR_INSECURE 32 #define APR_RANDOM_DEFAULT_G_FOR_SECURE 320 -typedef struct apr_random_pool_t { +typedef struct fspr_random_pool_t { unsigned char *pool; unsigned int bytes; unsigned int pool_size; -} apr_random_pool_t; +} fspr_random_pool_t; #define hash_init(h) (h)->init(h) #define hash_add(h,b,n) (h)->add(h,b,n) @@ -50,18 +50,18 @@ typedef struct apr_random_pool_t { #define crypt_setkey(c,k) (c)->set_key((c)->data,k) #define crypt_crypt(c,out,in) (c)->crypt((c)->date,out,in) -struct apr_random_t { - apr_pool_t *apr_pool; - apr_crypto_hash_t *pool_hash; +struct fspr_random_t { + fspr_pool_t *fspr_pool; + fspr_crypto_hash_t *pool_hash; unsigned int npools; - apr_random_pool_t *pools; + fspr_random_pool_t *pools; unsigned int next_pool; unsigned int generation; - apr_size_t rehash_size; - apr_size_t reseed_size; - apr_crypto_hash_t *key_hash; + fspr_size_t rehash_size; + fspr_size_t reseed_size; + fspr_crypto_hash_t *key_hash; #define K_size(g) ((g)->key_hash->size) - apr_crypto_hash_t *prng_hash; + fspr_crypto_hash_t *prng_hash; #define B_size(g) ((g)->prng_hash->size) unsigned char *H; @@ -71,33 +71,33 @@ struct apr_random_t { ? (g)->H_waiting : (g)->H) unsigned char *randomness; - apr_size_t random_bytes; + fspr_size_t random_bytes; unsigned int g_for_insecure; unsigned int g_for_secure; unsigned int secure_base; unsigned int insecure_started:1; unsigned int secure_started:1; - apr_random_t *next; + fspr_random_t *next; }; -static apr_random_t *all_random; +static fspr_random_t *all_random; -APR_DECLARE(void) apr_random_init(apr_random_t *g,apr_pool_t *p, - apr_crypto_hash_t *pool_hash, - apr_crypto_hash_t *key_hash, - apr_crypto_hash_t *prng_hash) +APR_DECLARE(void) fspr_random_init(fspr_random_t *g,fspr_pool_t *p, + fspr_crypto_hash_t *pool_hash, + fspr_crypto_hash_t *key_hash, + fspr_crypto_hash_t *prng_hash) { unsigned int n; - g->apr_pool = p; + g->fspr_pool = p; g->pool_hash = pool_hash; g->key_hash = key_hash; g->prng_hash = prng_hash; g->npools = APR_RANDOM_DEFAULT_POOLS; - g->pools = apr_palloc(p,g->npools*sizeof *g->pools); + g->pools = fspr_palloc(p,g->npools*sizeof *g->pools); for (n = 0; n < g->npools; ++n) { g->pools[n].bytes = g->pools[n].pool_size = 0; g->pools[n].pool = NULL; @@ -112,10 +112,10 @@ APR_DECLARE(void) apr_random_init(apr_random_t *g,apr_pool_t *p, /2)*g->pool_hash->size*2; g->reseed_size = APR_RANDOM_DEFAULT_RESEED_SIZE; - g->H = apr_pcalloc(p,H_size(g)); - g->H_waiting = apr_pcalloc(p,H_size(g)); + g->H = fspr_pcalloc(p,H_size(g)); + g->H_waiting = fspr_pcalloc(p,H_size(g)); - g->randomness = apr_palloc(p,B_size(g)); + g->randomness = fspr_palloc(p,B_size(g)); g->random_bytes = 0; g->g_for_insecure = APR_RANDOM_DEFAULT_G_FOR_INSECURE; @@ -127,7 +127,7 @@ APR_DECLARE(void) apr_random_init(apr_random_t *g,apr_pool_t *p, all_random = g; } -static void mix_pid(apr_random_t *g,unsigned char *H,pid_t pid) +static void mix_pid(fspr_random_t *g,unsigned char *H,pid_t pid) { hash_init(g->key_hash); hash_add(g->key_hash,H,H_size(g)); @@ -135,7 +135,7 @@ static void mix_pid(apr_random_t *g,unsigned char *H,pid_t pid) hash_finish(g->key_hash,H); } -static void mixer(apr_random_t *g,pid_t pid) +static void mixer(fspr_random_t *g,pid_t pid) { unsigned char *H = H_current(g); @@ -151,24 +151,24 @@ static void mixer(apr_random_t *g,pid_t pid) g->random_bytes = 0; } -APR_DECLARE(void) apr_random_after_fork(apr_proc_t *proc) +APR_DECLARE(void) fspr_random_after_fork(fspr_proc_t *proc) { - apr_random_t *r; + fspr_random_t *r; for (r = all_random; r; r = r->next) mixer(r,proc->pid); } -APR_DECLARE(apr_random_t *) apr_random_standard_new(apr_pool_t *p) +APR_DECLARE(fspr_random_t *) fspr_random_standard_new(fspr_pool_t *p) { - apr_random_t *r = apr_palloc(p,sizeof *r); + fspr_random_t *r = fspr_palloc(p,sizeof *r); - apr_random_init(r,p,apr_crypto_sha256_new(p),apr_crypto_sha256_new(p), - apr_crypto_sha256_new(p)); + fspr_random_init(r,p,fspr_crypto_sha256_new(p),fspr_crypto_sha256_new(p), + fspr_crypto_sha256_new(p)); return r; } -static void rekey(apr_random_t *g) +static void rekey(fspr_random_t *g) { unsigned int n; unsigned char *H = H_current(g); @@ -197,20 +197,20 @@ static void rekey(apr_random_t *g) } } -APR_DECLARE(void) apr_random_add_entropy(apr_random_t *g,const void *entropy_, - apr_size_t bytes) +APR_DECLARE(void) fspr_random_add_entropy(fspr_random_t *g,const void *entropy_, + fspr_size_t bytes) { unsigned int n; const unsigned char *entropy = entropy_; for (n = 0; n < bytes; ++n) { - apr_random_pool_t *p = &g->pools[g->next_pool]; + fspr_random_pool_t *p = &g->pools[g->next_pool]; if (++g->next_pool == g->npools) g->next_pool = 0; if (p->pool_size < p->bytes+1) { - unsigned char *np = apr_palloc(g->apr_pool,(p->bytes+1)*2); + unsigned char *np = fspr_palloc(g->fspr_pool,(p->bytes+1)*2); memcpy(np,p->pool,p->bytes); p->pool = np; @@ -233,23 +233,23 @@ APR_DECLARE(void) apr_random_add_entropy(apr_random_t *g,const void *entropy_, } /* This will give g->B_size bytes of randomness */ -static void apr_random_block(apr_random_t *g,unsigned char *random) +static void fspr_random_block(fspr_random_t *g,unsigned char *random) { /* FIXME: in principle, these are different hashes */ hash(g->prng_hash,g->H,g->H,H_size(g)); hash(g->prng_hash,random,g->H,B_size(g)); } -static void apr_random_bytes(apr_random_t *g,unsigned char *random, - apr_size_t bytes) +static void fspr_random_bytes(fspr_random_t *g,unsigned char *random, + fspr_size_t bytes) { - apr_size_t n; + fspr_size_t n; for (n = 0; n < bytes; ) { int l; if (g->random_bytes == 0) { - apr_random_block(g,g->randomness); + fspr_random_block(g,g->randomness); g->random_bytes = B_size(g); } l = min(bytes-n,g->random_bytes); @@ -259,40 +259,40 @@ static void apr_random_bytes(apr_random_t *g,unsigned char *random, } } -APR_DECLARE(apr_status_t) apr_random_secure_bytes(apr_random_t *g, +APR_DECLARE(fspr_status_t) fspr_random_secure_bytes(fspr_random_t *g, void *random, - apr_size_t bytes) + fspr_size_t bytes) { if (!g->secure_started) return APR_ENOTENOUGHENTROPY; - apr_random_bytes(g,random,bytes); + fspr_random_bytes(g,random,bytes); return APR_SUCCESS; } -APR_DECLARE(apr_status_t) apr_random_insecure_bytes(apr_random_t *g, +APR_DECLARE(fspr_status_t) fspr_random_insecure_bytes(fspr_random_t *g, void *random, - apr_size_t bytes) + fspr_size_t bytes) { if (!g->insecure_started) return APR_ENOTENOUGHENTROPY; - apr_random_bytes(g,random,bytes); + fspr_random_bytes(g,random,bytes); return APR_SUCCESS; } -APR_DECLARE(void) apr_random_barrier(apr_random_t *g) +APR_DECLARE(void) fspr_random_barrier(fspr_random_t *g) { g->secure_started = 0; g->secure_base = g->generation; } -APR_DECLARE(apr_status_t) apr_random_secure_ready(apr_random_t *r) +APR_DECLARE(fspr_status_t) fspr_random_secure_ready(fspr_random_t *r) { if (!r->secure_started) return APR_ENOTENOUGHENTROPY; return APR_SUCCESS; } -APR_DECLARE(apr_status_t) apr_random_insecure_ready(apr_random_t *r) +APR_DECLARE(fspr_status_t) fspr_random_insecure_ready(fspr_random_t *r) { if (!r->insecure_started) return APR_ENOTENOUGHENTROPY; diff --git a/libs/apr/random/unix/sha2.c b/libs/apr/random/unix/sha2.c index b8bd241d85f..5a3f2178227 100644 --- a/libs/apr/random/unix/sha2.c +++ b/libs/apr/random/unix/sha2.c @@ -45,9 +45,9 @@ */ /*** SHA-256/384/512 Machine Architecture Definitions *****************/ -typedef apr_byte_t sha2_byte; /* Exactly 1 byte */ -typedef apr_uint32_t sha2_word32; /* Exactly 4 bytes */ -typedef apr_uint64_t sha2_word64; /* Exactly 8 bytes */ +typedef fspr_byte_t sha2_byte; /* Exactly 1 byte */ +typedef fspr_uint32_t sha2_word32; /* Exactly 4 bytes */ +typedef fspr_uint64_t sha2_word64; /* Exactly 8 bytes */ /*** SHA-256/384/512 Various Length Definitions ***********************/ /* NOTE: Most of these are in sha2.h */ @@ -150,9 +150,9 @@ typedef apr_uint64_t sha2_word64; /* Exactly 8 bytes */ * library -- they are intended for private internal visibility/use * only. */ -void apr__SHA512_Last(SHA512_CTX*); -void apr__SHA256_Transform(SHA256_CTX*, const sha2_word32*); -void apr__SHA512_Transform(SHA512_CTX*, const sha2_word64*); +void fspr__SHA512_Last(SHA512_CTX*); +void fspr__SHA256_Transform(SHA256_CTX*, const sha2_word32*); +void fspr__SHA512_Transform(SHA512_CTX*, const sha2_word64*); /*** SHA-XYZ INITIAL HASH VALUES AND CONSTANTS ************************/ @@ -264,7 +264,7 @@ static const char *sha2_hex_digits = "0123456789abcdef"; /*** SHA-256: *********************************************************/ -void apr__SHA256_Init(SHA256_CTX* context) { +void fspr__SHA256_Init(SHA256_CTX* context) { if (context == (SHA256_CTX*)0) { return; } @@ -310,7 +310,7 @@ void apr__SHA256_Init(SHA256_CTX* context) { (h) = T1 + Sigma0_256(a) + Maj((a), (b), (c)); \ j++ -void apr__SHA256_Transform(SHA256_CTX* context, const sha2_word32* data) { +void fspr__SHA256_Transform(SHA256_CTX* context, const sha2_word32* data) { sha2_word32 a, b, c, d, e, f, g, h, s0, s1; sha2_word32 T1, *W256; int j; @@ -368,7 +368,7 @@ void apr__SHA256_Transform(SHA256_CTX* context, const sha2_word32* data) { #else /* SHA2_UNROLL_TRANSFORM */ -void apr__SHA256_Transform(SHA256_CTX* context, const sha2_word32* data) { +void fspr__SHA256_Transform(SHA256_CTX* context, const sha2_word32* data) { sha2_word32 a, b, c, d, e, f, g, h, s0, s1; sha2_word32 T1, T2, *W256; int j; @@ -458,7 +458,7 @@ void apr__SHA256_Transform(SHA256_CTX* context, const sha2_word32* data) { #endif /* SHA2_UNROLL_TRANSFORM */ -void apr__SHA256_Update(SHA256_CTX* context, const sha2_byte *data, size_t len) { +void fspr__SHA256_Update(SHA256_CTX* context, const sha2_byte *data, size_t len) { unsigned int freespace, usedspace; if (len == 0) { @@ -481,7 +481,7 @@ void apr__SHA256_Update(SHA256_CTX* context, const sha2_byte *data, size_t len) context->bitcount += freespace << 3; len -= freespace; data += freespace; - apr__SHA256_Transform(context, (sha2_word32*)context->buffer); + fspr__SHA256_Transform(context, (sha2_word32*)context->buffer); } else { /* The buffer is not yet full */ MEMCPY_BCOPY(&context->buffer[usedspace], data, len); @@ -495,7 +495,7 @@ void apr__SHA256_Update(SHA256_CTX* context, const sha2_byte *data, size_t len) } while (len >= SHA256_BLOCK_LENGTH) { /* Process as many complete blocks as we can */ - apr__SHA256_Transform(context, (sha2_word32*)data); + fspr__SHA256_Transform(context, (sha2_word32*)data); context->bitcount += SHA256_BLOCK_LENGTH << 3; len -= SHA256_BLOCK_LENGTH; data += SHA256_BLOCK_LENGTH; @@ -511,7 +511,7 @@ void apr__SHA256_Update(SHA256_CTX* context, const sha2_byte *data, size_t len) assert(freespace==0); } -void apr__SHA256_Final(sha2_byte digest[], SHA256_CTX* context) { +void fspr__SHA256_Final(sha2_byte digest[], SHA256_CTX* context) { sha2_word32 *d = (sha2_word32*)digest; unsigned int usedspace; @@ -538,7 +538,7 @@ void apr__SHA256_Final(sha2_byte digest[], SHA256_CTX* context) { MEMSET_BZERO(&context->buffer[usedspace], SHA256_BLOCK_LENGTH - usedspace); } /* Do second-to-last transform: */ - apr__SHA256_Transform(context, (sha2_word32*)context->buffer); + fspr__SHA256_Transform(context, (sha2_word32*)context->buffer); /* And set-up for the last transform: */ MEMSET_BZERO(context->buffer, SHA256_SHORT_BLOCK_LENGTH); @@ -554,7 +554,7 @@ void apr__SHA256_Final(sha2_byte digest[], SHA256_CTX* context) { *(sha2_word64*)&context->buffer[SHA256_SHORT_BLOCK_LENGTH] = context->bitcount; /* Final transform: */ - apr__SHA256_Transform(context, (sha2_word32*)context->buffer); + fspr__SHA256_Transform(context, (sha2_word32*)context->buffer); #if !APR_IS_BIGENDIAN { @@ -576,7 +576,7 @@ void apr__SHA256_Final(sha2_byte digest[], SHA256_CTX* context) { assert(usedspace==0); } -char *apr__SHA256_End(SHA256_CTX* context, char buffer[]) { +char *fspr__SHA256_End(SHA256_CTX* context, char buffer[]) { sha2_byte digest[SHA256_DIGEST_LENGTH], *d = digest; int i; @@ -584,7 +584,7 @@ char *apr__SHA256_End(SHA256_CTX* context, char buffer[]) { assert(context != (SHA256_CTX*)0); if (buffer != (char*)0) { - apr__SHA256_Final(digest, context); + fspr__SHA256_Final(digest, context); for (i = 0; i < SHA256_DIGEST_LENGTH; i++) { *buffer++ = sha2_hex_digits[(*d & 0xf0) >> 4]; @@ -599,17 +599,17 @@ char *apr__SHA256_End(SHA256_CTX* context, char buffer[]) { return buffer; } -char* apr__SHA256_Data(const sha2_byte* data, size_t len, char digest[SHA256_DIGEST_STRING_LENGTH]) { +char* fspr__SHA256_Data(const sha2_byte* data, size_t len, char digest[SHA256_DIGEST_STRING_LENGTH]) { SHA256_CTX context; - apr__SHA256_Init(&context); - apr__SHA256_Update(&context, data, len); - return apr__SHA256_End(&context, digest); + fspr__SHA256_Init(&context); + fspr__SHA256_Update(&context, data, len); + return fspr__SHA256_End(&context, digest); } /*** SHA-512: *********************************************************/ -void apr__SHA512_Init(SHA512_CTX* context) { +void fspr__SHA512_Init(SHA512_CTX* context) { if (context == (SHA512_CTX*)0) { return; } @@ -654,7 +654,7 @@ void apr__SHA512_Init(SHA512_CTX* context) { (h) = T1 + Sigma0_512(a) + Maj((a), (b), (c)); \ j++ -void apr__SHA512_Transform(SHA512_CTX* context, const sha2_word64* data) { +void fspr__SHA512_Transform(SHA512_CTX* context, const sha2_word64* data) { sha2_word64 a, b, c, d, e, f, g, h, s0, s1; sha2_word64 T1, *W512 = (sha2_word64*)context->buffer; int j; @@ -709,7 +709,7 @@ void apr__SHA512_Transform(SHA512_CTX* context, const sha2_word64* data) { #else /* SHA2_UNROLL_TRANSFORM */ -void apr__SHA512_Transform(SHA512_CTX* context, const sha2_word64* data) { +void fspr__SHA512_Transform(SHA512_CTX* context, const sha2_word64* data) { sha2_word64 a, b, c, d, e, f, g, h, s0, s1; sha2_word64 T1, T2, *W512 = (sha2_word64*)context->buffer; int j; @@ -797,7 +797,7 @@ void apr__SHA512_Transform(SHA512_CTX* context, const sha2_word64* data) { #endif /* SHA2_UNROLL_TRANSFORM */ -void apr__SHA512_Update(SHA512_CTX* context, const sha2_byte *data, size_t len) { +void fspr__SHA512_Update(SHA512_CTX* context, const sha2_byte *data, size_t len) { unsigned int freespace, usedspace; if (len == 0) { @@ -820,7 +820,7 @@ void apr__SHA512_Update(SHA512_CTX* context, const sha2_byte *data, size_t len) ADDINC128(context->bitcount, freespace << 3); len -= freespace; data += freespace; - apr__SHA512_Transform(context, (sha2_word64*)context->buffer); + fspr__SHA512_Transform(context, (sha2_word64*)context->buffer); } else { /* The buffer is not yet full */ MEMCPY_BCOPY(&context->buffer[usedspace], data, len); @@ -834,7 +834,7 @@ void apr__SHA512_Update(SHA512_CTX* context, const sha2_byte *data, size_t len) } while (len >= SHA512_BLOCK_LENGTH) { /* Process as many complete blocks as we can */ - apr__SHA512_Transform(context, (sha2_word64*)data); + fspr__SHA512_Transform(context, (sha2_word64*)data); ADDINC128(context->bitcount, SHA512_BLOCK_LENGTH << 3); len -= SHA512_BLOCK_LENGTH; data += SHA512_BLOCK_LENGTH; @@ -850,7 +850,7 @@ void apr__SHA512_Update(SHA512_CTX* context, const sha2_byte *data, size_t len) assert(freespace==0); } -void apr__SHA512_Last(SHA512_CTX* context) { +void fspr__SHA512_Last(SHA512_CTX* context) { unsigned int usedspace; usedspace = (unsigned int)((context->bitcount[0] >> 3) @@ -872,7 +872,7 @@ void apr__SHA512_Last(SHA512_CTX* context) { MEMSET_BZERO(&context->buffer[usedspace], SHA512_BLOCK_LENGTH - usedspace); } /* Do second-to-last transform: */ - apr__SHA512_Transform(context, (sha2_word64*)context->buffer); + fspr__SHA512_Transform(context, (sha2_word64*)context->buffer); /* And set-up for the last transform: */ MEMSET_BZERO(context->buffer, SHA512_BLOCK_LENGTH - 2); @@ -889,10 +889,10 @@ void apr__SHA512_Last(SHA512_CTX* context) { *(sha2_word64*)&context->buffer[SHA512_SHORT_BLOCK_LENGTH+8] = context->bitcount[0]; /* Final transform: */ - apr__SHA512_Transform(context, (sha2_word64*)context->buffer); + fspr__SHA512_Transform(context, (sha2_word64*)context->buffer); } -void apr__SHA512_Final(sha2_byte digest[], SHA512_CTX* context) { +void fspr__SHA512_Final(sha2_byte digest[], SHA512_CTX* context) { sha2_word64 *d = (sha2_word64*)digest; /* Sanity check: */ @@ -900,7 +900,7 @@ void apr__SHA512_Final(sha2_byte digest[], SHA512_CTX* context) { /* If no digest buffer is passed, we don't bother doing this: */ if (digest != (sha2_byte*)0) { - apr__SHA512_Last(context); + fspr__SHA512_Last(context); /* Save the hash data for output: */ #if !APR_IS_BIGENDIAN @@ -921,7 +921,7 @@ void apr__SHA512_Final(sha2_byte digest[], SHA512_CTX* context) { MEMSET_BZERO(context, sizeof(*context)); } -char *apr__SHA512_End(SHA512_CTX* context, char buffer[]) { +char *fspr__SHA512_End(SHA512_CTX* context, char buffer[]) { sha2_byte digest[SHA512_DIGEST_LENGTH], *d = digest; int i; @@ -929,7 +929,7 @@ char *apr__SHA512_End(SHA512_CTX* context, char buffer[]) { assert(context != (SHA512_CTX*)0); if (buffer != (char*)0) { - apr__SHA512_Final(digest, context); + fspr__SHA512_Final(digest, context); for (i = 0; i < SHA512_DIGEST_LENGTH; i++) { *buffer++ = sha2_hex_digits[(*d & 0xf0) >> 4]; @@ -944,17 +944,17 @@ char *apr__SHA512_End(SHA512_CTX* context, char buffer[]) { return buffer; } -char* apr__SHA512_Data(const sha2_byte* data, size_t len, char digest[SHA512_DIGEST_STRING_LENGTH]) { +char* fspr__SHA512_Data(const sha2_byte* data, size_t len, char digest[SHA512_DIGEST_STRING_LENGTH]) { SHA512_CTX context; - apr__SHA512_Init(&context); - apr__SHA512_Update(&context, data, len); - return apr__SHA512_End(&context, digest); + fspr__SHA512_Init(&context); + fspr__SHA512_Update(&context, data, len); + return fspr__SHA512_End(&context, digest); } /*** SHA-384: *********************************************************/ -void apr__SHA384_Init(SHA384_CTX* context) { +void fspr__SHA384_Init(SHA384_CTX* context) { if (context == (SHA384_CTX*)0) { return; } @@ -963,11 +963,11 @@ void apr__SHA384_Init(SHA384_CTX* context) { context->bitcount[0] = context->bitcount[1] = 0; } -void apr__SHA384_Update(SHA384_CTX* context, const sha2_byte* data, size_t len) { - apr__SHA512_Update((SHA512_CTX*)context, data, len); +void fspr__SHA384_Update(SHA384_CTX* context, const sha2_byte* data, size_t len) { + fspr__SHA512_Update((SHA512_CTX*)context, data, len); } -void apr__SHA384_Final(sha2_byte digest[], SHA384_CTX* context) { +void fspr__SHA384_Final(sha2_byte digest[], SHA384_CTX* context) { sha2_word64 *d = (sha2_word64*)digest; /* Sanity check: */ @@ -975,7 +975,7 @@ void apr__SHA384_Final(sha2_byte digest[], SHA384_CTX* context) { /* If no digest buffer is passed, we don't bother doing this: */ if (digest != (sha2_byte*)0) { - apr__SHA512_Last((SHA512_CTX*)context); + fspr__SHA512_Last((SHA512_CTX*)context); /* Save the hash data for output: */ #if !APR_IS_BIGENDIAN @@ -996,7 +996,7 @@ void apr__SHA384_Final(sha2_byte digest[], SHA384_CTX* context) { MEMSET_BZERO(context, sizeof(*context)); } -char *apr__SHA384_End(SHA384_CTX* context, char buffer[]) { +char *fspr__SHA384_End(SHA384_CTX* context, char buffer[]) { sha2_byte digest[SHA384_DIGEST_LENGTH], *d = digest; int i; @@ -1004,7 +1004,7 @@ char *apr__SHA384_End(SHA384_CTX* context, char buffer[]) { assert(context != (SHA384_CTX*)0); if (buffer != (char*)0) { - apr__SHA384_Final(digest, context); + fspr__SHA384_Final(digest, context); for (i = 0; i < SHA384_DIGEST_LENGTH; i++) { *buffer++ = sha2_hex_digits[(*d & 0xf0) >> 4]; @@ -1019,11 +1019,11 @@ char *apr__SHA384_End(SHA384_CTX* context, char buffer[]) { return buffer; } -char* apr__SHA384_Data(const sha2_byte* data, size_t len, char digest[SHA384_DIGEST_STRING_LENGTH]) { +char* fspr__SHA384_Data(const sha2_byte* data, size_t len, char digest[SHA384_DIGEST_STRING_LENGTH]) { SHA384_CTX context; - apr__SHA384_Init(&context); - apr__SHA384_Update(&context, data, len); - return apr__SHA384_End(&context, digest); + fspr__SHA384_Init(&context); + fspr__SHA384_Update(&context, data, len); + return fspr__SHA384_End(&context, digest); } diff --git a/libs/apr/random/unix/sha2.h b/libs/apr/random/unix/sha2.h index 9f0d93e1e01..0696d4e0b1f 100644 --- a/libs/apr/random/unix/sha2.h +++ b/libs/apr/random/unix/sha2.h @@ -27,7 +27,7 @@ extern "C" { #endif -#include "apr.h" +#include "fspr.h" /*** SHA-256/384/512 Various Length Definitions ***********************/ #define SHA256_BLOCK_LENGTH 64 @@ -43,39 +43,39 @@ extern "C" { /*** SHA-256/384/512 Context Structures *******************************/ typedef struct _SHA256_CTX { - apr_uint32_t state[8]; - apr_uint64_t bitcount; - apr_byte_t buffer[SHA256_BLOCK_LENGTH]; + fspr_uint32_t state[8]; + fspr_uint64_t bitcount; + fspr_byte_t buffer[SHA256_BLOCK_LENGTH]; } SHA256_CTX; typedef struct _SHA512_CTX { - apr_uint64_t state[8]; - apr_uint64_t bitcount[2]; - apr_byte_t buffer[SHA512_BLOCK_LENGTH]; + fspr_uint64_t state[8]; + fspr_uint64_t bitcount[2]; + fspr_byte_t buffer[SHA512_BLOCK_LENGTH]; } SHA512_CTX; typedef SHA512_CTX SHA384_CTX; /*** SHA-256/384/512 Function Prototypes ******************************/ -void apr__SHA256_Init(SHA256_CTX *); -void apr__SHA256_Update(SHA256_CTX *, const apr_byte_t *, size_t); -void apr__SHA256_Final(apr_byte_t [SHA256_DIGEST_LENGTH], SHA256_CTX *); -char* apr__SHA256_End(SHA256_CTX *, char [SHA256_DIGEST_STRING_LENGTH]); -char* apr__SHA256_Data(const apr_byte_t *, size_t, +void fspr__SHA256_Init(SHA256_CTX *); +void fspr__SHA256_Update(SHA256_CTX *, const fspr_byte_t *, size_t); +void fspr__SHA256_Final(fspr_byte_t [SHA256_DIGEST_LENGTH], SHA256_CTX *); +char* fspr__SHA256_End(SHA256_CTX *, char [SHA256_DIGEST_STRING_LENGTH]); +char* fspr__SHA256_Data(const fspr_byte_t *, size_t, char [SHA256_DIGEST_STRING_LENGTH]); -void apr__SHA384_Init(SHA384_CTX *); -void apr__SHA384_Update(SHA384_CTX *, const apr_byte_t *, size_t); -void apr__SHA384_Final(apr_byte_t [SHA384_DIGEST_LENGTH], SHA384_CTX *); -char* apr__SHA384_End(SHA384_CTX *, char [SHA384_DIGEST_STRING_LENGTH]); -char* apr__SHA384_Data(const apr_byte_t *, size_t, +void fspr__SHA384_Init(SHA384_CTX *); +void fspr__SHA384_Update(SHA384_CTX *, const fspr_byte_t *, size_t); +void fspr__SHA384_Final(fspr_byte_t [SHA384_DIGEST_LENGTH], SHA384_CTX *); +char* fspr__SHA384_End(SHA384_CTX *, char [SHA384_DIGEST_STRING_LENGTH]); +char* fspr__SHA384_Data(const fspr_byte_t *, size_t, char [SHA384_DIGEST_STRING_LENGTH]); -void apr__SHA512_Init(SHA512_CTX *); -void apr__SHA512_Update(SHA512_CTX *, const apr_byte_t *, size_t); -void apr__SHA512_Final(apr_byte_t [SHA512_DIGEST_LENGTH], SHA512_CTX *); -char* apr__SHA512_End(SHA512_CTX *, char [SHA512_DIGEST_STRING_LENGTH]); -char* apr__SHA512_Data(const apr_byte_t *, size_t, +void fspr__SHA512_Init(SHA512_CTX *); +void fspr__SHA512_Update(SHA512_CTX *, const fspr_byte_t *, size_t); +void fspr__SHA512_Final(fspr_byte_t [SHA512_DIGEST_LENGTH], SHA512_CTX *); +char* fspr__SHA512_End(SHA512_CTX *, char [SHA512_DIGEST_STRING_LENGTH]); +char* fspr__SHA512_Data(const fspr_byte_t *, size_t, char [SHA512_DIGEST_STRING_LENGTH]); #ifdef __cplusplus diff --git a/libs/apr/random/unix/sha2_glue.c b/libs/apr/random/unix/sha2_glue.c index 4909a8fe1f8..17bc4bd3567 100644 --- a/libs/apr/random/unix/sha2_glue.c +++ b/libs/apr/random/unix/sha2_glue.c @@ -1,29 +1,29 @@ -#include -#include -#include +#include +#include +#include #include "sha2.h" -static void sha256_init(apr_crypto_hash_t *h) +static void sha256_init(fspr_crypto_hash_t *h) { - apr__SHA256_Init(h->data); + fspr__SHA256_Init(h->data); } -static void sha256_add(apr_crypto_hash_t *h,const void *data, - apr_size_t bytes) +static void sha256_add(fspr_crypto_hash_t *h,const void *data, + fspr_size_t bytes) { - apr__SHA256_Update(h->data,data,bytes); + fspr__SHA256_Update(h->data,data,bytes); } -static void sha256_finish(apr_crypto_hash_t *h,unsigned char *result) +static void sha256_finish(fspr_crypto_hash_t *h,unsigned char *result) { - apr__SHA256_Final(result,h->data); + fspr__SHA256_Final(result,h->data); } -APR_DECLARE(apr_crypto_hash_t *) apr_crypto_sha256_new(apr_pool_t *p) +APR_DECLARE(fspr_crypto_hash_t *) fspr_crypto_sha256_new(fspr_pool_t *p) { - apr_crypto_hash_t *h=apr_palloc(p,sizeof *h); + fspr_crypto_hash_t *h=fspr_palloc(p,sizeof *h); - h->data=apr_palloc(p,sizeof(SHA256_CTX)); + h->data=fspr_palloc(p,sizeof(SHA256_CTX)); h->init=sha256_init; h->add=sha256_add; h->finish=sha256_finish; diff --git a/libs/apr/renames_pending b/libs/apr/renames_pending index ca007a729c1..58757f69b20 100644 --- a/libs/apr/renames_pending +++ b/libs/apr/renames_pending @@ -1,39 +1,39 @@ Pending symbol renames for APR [for some discussion yet] -apr_file_info_t from apr_finfo_t -apr_file_attrs_t from apr_fileattrs_t -apr_file_seek_where_t from apr_seek_where_t +fspr_file_info_t from fspr_finfo_t +fspr_file_attrs_t from fspr_fileattrs_t +fspr_file_seek_where_t from fspr_seek_where_t -#apr_filepath_name_get from apr_filename_of_pathname +#fspr_filepath_name_get from fspr_filename_of_pathname -apr_lock_mech_e from apr_lockmech_e +fspr_lock_mech_e from fspr_lockmech_e -#apr_gid_get from apr_get_groupid -#apr_gid_name_get from apr_get_groupname -#apr_gid_name_get from apr_group_name_get -#apr_gid_compare from apr_compare_groups +#fspr_gid_get from fspr_get_groupid +#fspr_gid_name_get from fspr_get_groupname +#fspr_gid_name_get from fspr_group_name_get +#fspr_gid_compare from fspr_compare_groups -#apr_socket_shutdown from apr_shutdown -#apr_socket_bind from apr_bind -#apr_socket_listen from apr_listen -#apr_socket_accept from apr_accept -#apr_socket_connect from apr_connect -#apr_socket_send from apr_send -#apr_socket_sendv from apr_sendv -#apr_socket_sendto from apr_sendto -#apr_socket_recvfrom from apr_recvfrom -#apr_socket_sendfile from apr_sendfile -#apr_socket_recv from apr_recv -#apr_socket_inherit_set from apr_socket_set_inherit -#apr_socket_inherit_unset from apr_socket_unset_inherit +#fspr_socket_shutdown from fspr_shutdown +#fspr_socket_bind from fspr_bind +#fspr_socket_listen from fspr_listen +#fspr_socket_accept from fspr_accept +#fspr_socket_connect from fspr_connect +#fspr_socket_send from fspr_send +#fspr_socket_sendv from fspr_sendv +#fspr_socket_sendto from fspr_sendto +#fspr_socket_recvfrom from fspr_recvfrom +#fspr_socket_sendfile from fspr_sendfile +#fspr_socket_recv from fspr_recv +#fspr_socket_inherit_set from fspr_socket_set_inherit +#fspr_socket_inherit_unset from fspr_socket_unset_inherit -#apr_time_exp_gmt_get from apr_implode_gmt -apr_time_interval_t from apr_interval_time_t -apr_time_interval_short_t from apr_short_interval_time_t +#fspr_time_exp_gmt_get from fspr_implode_gmt +fspr_time_interval_t from fspr_interval_time_t +fspr_time_interval_short_t from fspr_short_interval_time_t -#apr_uid_homepath_get from apr_get_home_directory -#apr_uid_get from apr_get_userid -#apr_uid_current from apr_current_userid -#apr_uid_compare from apr_compare_users -#apr_uid_name_get from apr_get_username +#fspr_uid_homepath_get from fspr_get_home_directory +#fspr_uid_get from fspr_get_userid +#fspr_uid_current from fspr_current_userid +#fspr_uid_compare from fspr_compare_users +#fspr_uid_name_get from fspr_get_username diff --git a/libs/apr/shmem/beos/shm.c b/libs/apr/shmem/beos/shm.c index 1f06f78acd2..f8cb22db293 100644 --- a/libs/apr/shmem/beos/shm.c +++ b/libs/apr/shmem/beos/shm.c @@ -14,44 +14,44 @@ * limitations under the License. */ -#include "apr_general.h" -#include "apr_shm.h" -#include "apr_errno.h" -#include "apr_lib.h" -#include "apr_strings.h" +#include "fspr_general.h" +#include "fspr_shm.h" +#include "fspr_errno.h" +#include "fspr_lib.h" +#include "fspr_strings.h" #include #include #include -#include "apr_portable.h" +#include "fspr_portable.h" -struct apr_shm_t { - apr_pool_t *pool; +struct fspr_shm_t { + fspr_pool_t *pool; void *memblock; void *ptr; - apr_size_t reqsize; - apr_size_t avail; + fspr_size_t reqsize; + fspr_size_t avail; area_id aid; }; -APR_DECLARE(apr_status_t) apr_shm_create(apr_shm_t **m, - apr_size_t reqsize, +APR_DECLARE(fspr_status_t) fspr_shm_create(fspr_shm_t **m, + fspr_size_t reqsize, const char *filename, - apr_pool_t *p) + fspr_pool_t *p) { - apr_size_t pagesize; + fspr_size_t pagesize; area_id newid; char *addr; char shname[B_OS_NAME_LENGTH]; - (*m) = (apr_shm_t *)apr_pcalloc(p, sizeof(apr_shm_t)); + (*m) = (fspr_shm_t *)fspr_pcalloc(p, sizeof(fspr_shm_t)); /* we MUST allocate in pages, so calculate how big an area we need... */ pagesize = ((reqsize + B_PAGE_SIZE - 1) / B_PAGE_SIZE) * B_PAGE_SIZE; if (!filename) { int num = 0; - snprintf(shname, B_OS_NAME_LENGTH, "apr_shmem_%ld", find_thread(NULL)); + snprintf(shname, B_OS_NAME_LENGTH, "fspr_shmem_%ld", find_thread(NULL)); while (find_area(shname) >= 0) - snprintf(shname, B_OS_NAME_LENGTH, "apr_shmem_%ld_%d", + snprintf(shname, B_OS_NAME_LENGTH, "fspr_shmem_%ld_%d", find_thread(NULL), num++); } newid = create_area(filename ? filename : shname, @@ -71,7 +71,7 @@ APR_DECLARE(apr_status_t) apr_shm_create(apr_shm_t **m, return APR_SUCCESS; } -APR_DECLARE(apr_status_t) apr_shm_destroy(apr_shm_t *m) +APR_DECLARE(fspr_status_t) fspr_shm_destroy(fspr_shm_t *m) { delete_area(m->aid); m->avail = 0; @@ -79,8 +79,8 @@ APR_DECLARE(apr_status_t) apr_shm_destroy(apr_shm_t *m) return APR_SUCCESS; } -APR_DECLARE(apr_status_t) apr_shm_remove(const char *filename, - apr_pool_t *pool) +APR_DECLARE(fspr_status_t) fspr_shm_remove(const char *filename, + fspr_pool_t *pool) { area_id deleteme = find_area(filename); @@ -91,19 +91,19 @@ APR_DECLARE(apr_status_t) apr_shm_remove(const char *filename, return APR_SUCCESS; } -APR_DECLARE(apr_status_t) apr_shm_attach(apr_shm_t **m, +APR_DECLARE(fspr_status_t) fspr_shm_attach(fspr_shm_t **m, const char *filename, - apr_pool_t *pool) + fspr_pool_t *pool) { area_info ai; thread_info ti; - apr_shm_t *new_m; + fspr_shm_t *new_m; area_id deleteme = find_area(filename); if (deleteme == B_NAME_NOT_FOUND) return APR_EINVAL; - new_m = (apr_shm_t*)apr_palloc(pool, sizeof(apr_shm_t*)); + new_m = (fspr_shm_t*)fspr_palloc(pool, sizeof(fspr_shm_t*)); if (new_m == NULL) return APR_ENOMEM; new_m->pool = pool; @@ -133,33 +133,33 @@ APR_DECLARE(apr_status_t) apr_shm_attach(apr_shm_t **m, return APR_SUCCESS; } -APR_DECLARE(apr_status_t) apr_shm_detach(apr_shm_t *m) +APR_DECLARE(fspr_status_t) fspr_shm_detach(fspr_shm_t *m) { delete_area(m->aid); return APR_SUCCESS; } -APR_DECLARE(void *) apr_shm_baseaddr_get(const apr_shm_t *m) +APR_DECLARE(void *) fspr_shm_baseaddr_get(const fspr_shm_t *m) { return m->memblock; } -APR_DECLARE(apr_size_t) apr_shm_size_get(const apr_shm_t *m) +APR_DECLARE(fspr_size_t) fspr_shm_size_get(const fspr_shm_t *m) { return m->reqsize; } APR_POOL_IMPLEMENT_ACCESSOR(shm) -APR_DECLARE(apr_status_t) apr_os_shm_get(apr_os_shm_t *osshm, - apr_shm_t *shm) +APR_DECLARE(fspr_status_t) fspr_os_shm_get(fspr_os_shm_t *osshm, + fspr_shm_t *shm) { return APR_ENOTIMPL; } -APR_DECLARE(apr_status_t) apr_os_shm_put(apr_shm_t **m, - apr_os_shm_t *osshm, - apr_pool_t *pool) +APR_DECLARE(fspr_status_t) fspr_os_shm_put(fspr_shm_t **m, + fspr_os_shm_t *osshm, + fspr_pool_t *pool) { return APR_ENOTIMPL; } diff --git a/libs/apr/shmem/os2/shm.c b/libs/apr/shmem/os2/shm.c index 340cae40743..c08f5178185 100644 --- a/libs/apr/shmem/os2/shm.c +++ b/libs/apr/shmem/os2/shm.c @@ -14,32 +14,32 @@ * limitations under the License. */ -#include "apr_general.h" -#include "apr_shm.h" -#include "apr_errno.h" -#include "apr_lib.h" -#include "apr_strings.h" -#include "apr_portable.h" - -struct apr_shm_t { - apr_pool_t *pool; +#include "fspr_general.h" +#include "fspr_shm.h" +#include "fspr_errno.h" +#include "fspr_lib.h" +#include "fspr_strings.h" +#include "fspr_portable.h" + +struct fspr_shm_t { + fspr_pool_t *pool; void *memblock; }; -APR_DECLARE(apr_status_t) apr_shm_create(apr_shm_t **m, - apr_size_t reqsize, +APR_DECLARE(fspr_status_t) fspr_shm_create(fspr_shm_t **m, + fspr_size_t reqsize, const char *filename, - apr_pool_t *pool) + fspr_pool_t *pool) { int rc; - apr_shm_t *newm = (apr_shm_t *)apr_palloc(pool, sizeof(apr_shm_t)); + fspr_shm_t *newm = (fspr_shm_t *)fspr_palloc(pool, sizeof(fspr_shm_t)); char *name = NULL; ULONG flags = PAG_COMMIT|PAG_READ|PAG_WRITE; newm->pool = pool; if (filename) { - name = apr_pstrcat(pool, "\\SHAREMEM\\", filename, NULL); + name = fspr_pstrcat(pool, "\\SHAREMEM\\", filename, NULL); } if (name == NULL) { @@ -56,29 +56,29 @@ APR_DECLARE(apr_status_t) apr_shm_create(apr_shm_t **m, return APR_SUCCESS; } -APR_DECLARE(apr_status_t) apr_shm_destroy(apr_shm_t *m) +APR_DECLARE(fspr_status_t) fspr_shm_destroy(fspr_shm_t *m) { DosFreeMem(m->memblock); return APR_SUCCESS; } -APR_DECLARE(apr_status_t) apr_shm_remove(const char *filename, - apr_pool_t *pool) +APR_DECLARE(fspr_status_t) fspr_shm_remove(const char *filename, + fspr_pool_t *pool) { return APR_ENOTIMPL; } -APR_DECLARE(apr_status_t) apr_shm_attach(apr_shm_t **m, +APR_DECLARE(fspr_status_t) fspr_shm_attach(fspr_shm_t **m, const char *filename, - apr_pool_t *pool) + fspr_pool_t *pool) { int rc; - apr_shm_t *newm = (apr_shm_t *)apr_palloc(pool, sizeof(apr_shm_t)); + fspr_shm_t *newm = (fspr_shm_t *)fspr_palloc(pool, sizeof(fspr_shm_t)); char *name = NULL; ULONG flags = PAG_READ|PAG_WRITE; newm->pool = pool; - name = apr_pstrcat(pool, "\\SHAREMEM\\", filename, NULL); + name = fspr_pstrcat(pool, "\\SHAREMEM\\", filename, NULL); rc = DosGetNamedSharedMem(&(newm->memblock), name, flags); @@ -90,7 +90,7 @@ APR_DECLARE(apr_status_t) apr_shm_attach(apr_shm_t **m, return APR_SUCCESS; } -APR_DECLARE(apr_status_t) apr_shm_detach(apr_shm_t *m) +APR_DECLARE(fspr_status_t) fspr_shm_detach(fspr_shm_t *m) { int rc = 0; @@ -101,12 +101,12 @@ APR_DECLARE(apr_status_t) apr_shm_detach(apr_shm_t *m) return APR_FROM_OS_ERROR(rc); } -APR_DECLARE(void *) apr_shm_baseaddr_get(const apr_shm_t *m) +APR_DECLARE(void *) fspr_shm_baseaddr_get(const fspr_shm_t *m) { return m->memblock; } -APR_DECLARE(apr_size_t) apr_shm_size_get(const apr_shm_t *m) +APR_DECLARE(fspr_size_t) fspr_shm_size_get(const fspr_shm_t *m) { ULONG flags, size = 0x1000000; DosQueryMem(m->memblock, &size, &flags); @@ -115,19 +115,19 @@ APR_DECLARE(apr_size_t) apr_shm_size_get(const apr_shm_t *m) APR_POOL_IMPLEMENT_ACCESSOR(shm) -APR_DECLARE(apr_status_t) apr_os_shm_get(apr_os_shm_t *osshm, - apr_shm_t *shm) +APR_DECLARE(fspr_status_t) fspr_os_shm_get(fspr_os_shm_t *osshm, + fspr_shm_t *shm) { *osshm = shm->memblock; return APR_SUCCESS; } -APR_DECLARE(apr_status_t) apr_os_shm_put(apr_shm_t **m, - apr_os_shm_t *osshm, - apr_pool_t *pool) +APR_DECLARE(fspr_status_t) fspr_os_shm_put(fspr_shm_t **m, + fspr_os_shm_t *osshm, + fspr_pool_t *pool) { int rc; - apr_shm_t *newm = (apr_shm_t *)apr_palloc(pool, sizeof(apr_shm_t)); + fspr_shm_t *newm = (fspr_shm_t *)fspr_palloc(pool, sizeof(fspr_shm_t)); ULONG flags = PAG_COMMIT|PAG_READ|PAG_WRITE; newm->pool = pool; diff --git a/libs/apr/shmem/unix/shm.c b/libs/apr/shmem/unix/shm.c index 95d1c053f0e..36b16d91ccf 100644 --- a/libs/apr/shmem/unix/shm.c +++ b/libs/apr/shmem/unix/shm.c @@ -14,16 +14,16 @@ * limitations under the License. */ -#include "apr_arch_shm.h" +#include "fspr_arch_shm.h" -#include "apr_general.h" -#include "apr_errno.h" -#include "apr_user.h" -#include "apr_strings.h" +#include "fspr_general.h" +#include "fspr_errno.h" +#include "fspr_user.h" +#include "fspr_strings.h" -static apr_status_t shm_cleanup_owner(void *m_) +static fspr_status_t shm_cleanup_owner(void *m_) { - apr_shm_t *m = (apr_shm_t *)m_; + fspr_shm_t *m = (fspr_shm_t *)m_; /* anonymous shared memory */ if (m->filename == NULL) { @@ -49,7 +49,7 @@ static apr_status_t shm_cleanup_owner(void *m_) if (munmap(m->base, m->realsize) == -1) { return errno; } - return apr_file_remove(m->filename, m->pool); + return fspr_file_remove(m->filename, m->pool); #endif #if APR_USE_SHMEM_MMAP_SHM if (munmap(m->base, m->realsize) == -1) { @@ -70,55 +70,55 @@ static apr_status_t shm_cleanup_owner(void *m_) if (shmdt(m->base) == -1) { return errno; } - return apr_file_remove(m->filename, m->pool); + return fspr_file_remove(m->filename, m->pool); #endif } return APR_ENOTIMPL; } -APR_DECLARE(apr_status_t) apr_shm_create(apr_shm_t **m, - apr_size_t reqsize, +APR_DECLARE(fspr_status_t) fspr_shm_create(fspr_shm_t **m, + fspr_size_t reqsize, const char *filename, - apr_pool_t *pool) + fspr_pool_t *pool) { - apr_shm_t *new_m; - apr_status_t status; + fspr_shm_t *new_m; + fspr_status_t status; #if APR_USE_SHMEM_SHMGET || APR_USE_SHMEM_SHMGET_ANON struct shmid_ds shmbuf; - apr_uid_t uid; - apr_gid_t gid; + fspr_uid_t uid; + fspr_gid_t gid; #endif #if APR_USE_SHMEM_MMAP_TMP || APR_USE_SHMEM_MMAP_SHM || \ APR_USE_SHMEM_MMAP_ZERO int tmpfd; #endif #if APR_USE_SHMEM_SHMGET - apr_size_t nbytes; + fspr_size_t nbytes; key_t shmkey; #endif #if APR_USE_SHMEM_MMAP_ZERO || APR_USE_SHMEM_SHMGET || \ APR_USE_SHMEM_MMAP_TMP || APR_USE_SHMEM_MMAP_SHM - apr_file_t *file; /* file where metadata is stored */ + fspr_file_t *file; /* file where metadata is stored */ #endif /* Check if they want anonymous or name-based shared memory */ if (filename == NULL) { #if APR_USE_SHMEM_MMAP_ZERO || APR_USE_SHMEM_MMAP_ANON - new_m = apr_palloc(pool, sizeof(apr_shm_t)); + new_m = fspr_palloc(pool, sizeof(fspr_shm_t)); new_m->pool = pool; new_m->reqsize = reqsize; new_m->realsize = reqsize + - APR_ALIGN_DEFAULT(sizeof(apr_size_t)); /* room for metadata */ + APR_ALIGN_DEFAULT(sizeof(fspr_size_t)); /* room for metadata */ new_m->filename = NULL; #if APR_USE_SHMEM_MMAP_ZERO - status = apr_file_open(&file, "/dev/zero", APR_READ | APR_WRITE, + status = fspr_file_open(&file, "/dev/zero", APR_READ | APR_WRITE, APR_OS_DEFAULT, pool); if (status != APR_SUCCESS) { return status; } - status = apr_os_file_get(&tmpfd, file); + status = fspr_os_file_get(&tmpfd, file); if (status != APR_SUCCESS) { return status; } @@ -129,18 +129,18 @@ APR_DECLARE(apr_status_t) apr_shm_create(apr_shm_t **m, return errno; } - status = apr_file_close(file); + status = fspr_file_close(file); if (status != APR_SUCCESS) { return status; } /* store the real size in the metadata */ - *(apr_size_t*)(new_m->base) = new_m->realsize; + *(fspr_size_t*)(new_m->base) = new_m->realsize; /* metadata isn't usable */ - new_m->usable = (char *)new_m->base + APR_ALIGN_DEFAULT(sizeof(apr_size_t)); + new_m->usable = (char *)new_m->base + APR_ALIGN_DEFAULT(sizeof(fspr_size_t)); - apr_pool_cleanup_register(new_m->pool, new_m, shm_cleanup_owner, - apr_pool_cleanup_null); + fspr_pool_cleanup_register(new_m->pool, new_m, shm_cleanup_owner, + fspr_pool_cleanup_null); *m = new_m; return APR_SUCCESS; @@ -152,12 +152,12 @@ APR_DECLARE(apr_status_t) apr_shm_create(apr_shm_t **m, } /* store the real size in the metadata */ - *(apr_size_t*)(new_m->base) = new_m->realsize; + *(fspr_size_t*)(new_m->base) = new_m->realsize; /* metadata isn't usable */ - new_m->usable = (char *)new_m->base + APR_ALIGN_DEFAULT(sizeof(apr_size_t)); + new_m->usable = (char *)new_m->base + APR_ALIGN_DEFAULT(sizeof(fspr_size_t)); - apr_pool_cleanup_register(new_m->pool, new_m, shm_cleanup_owner, - apr_pool_cleanup_null); + fspr_pool_cleanup_register(new_m->pool, new_m, shm_cleanup_owner, + fspr_pool_cleanup_null); *m = new_m; return APR_SUCCESS; @@ -165,7 +165,7 @@ APR_DECLARE(apr_status_t) apr_shm_create(apr_shm_t **m, #endif /* APR_USE_SHMEM_MMAP_ZERO || APR_USE_SHMEM_MMAP_ANON */ #if APR_USE_SHMEM_SHMGET_ANON - new_m = apr_palloc(pool, sizeof(apr_shm_t)); + new_m = fspr_palloc(pool, sizeof(fspr_shm_t)); new_m->pool = pool; new_m->reqsize = reqsize; new_m->realsize = reqsize; @@ -184,7 +184,7 @@ APR_DECLARE(apr_status_t) apr_shm_create(apr_shm_t **m, if (shmctl(new_m->shmid, IPC_STAT, &shmbuf) == -1) { return errno; } - apr_uid_current(&uid, &gid, pool); + fspr_uid_current(&uid, &gid, pool); shmbuf.shm_perm.uid = uid; shmbuf.shm_perm.gid = gid; if (shmctl(new_m->shmid, IPC_SET, &shmbuf) == -1) { @@ -199,8 +199,8 @@ APR_DECLARE(apr_status_t) apr_shm_create(apr_shm_t **m, return errno; } - apr_pool_cleanup_register(new_m->pool, new_m, shm_cleanup_owner, - apr_pool_cleanup_null); + fspr_pool_cleanup_register(new_m->pool, new_m, shm_cleanup_owner, + fspr_pool_cleanup_null); *m = new_m; return APR_SUCCESS; #endif /* APR_USE_SHMEM_SHMGET_ANON */ @@ -210,38 +210,38 @@ APR_DECLARE(apr_status_t) apr_shm_create(apr_shm_t **m, /* Name-based shared memory */ else { - new_m = apr_palloc(pool, sizeof(apr_shm_t)); + new_m = fspr_palloc(pool, sizeof(fspr_shm_t)); new_m->pool = pool; new_m->reqsize = reqsize; - new_m->filename = apr_pstrdup(pool, filename); + new_m->filename = fspr_pstrdup(pool, filename); #if APR_USE_SHMEM_MMAP_TMP || APR_USE_SHMEM_MMAP_SHM new_m->realsize = reqsize + - APR_ALIGN_DEFAULT(sizeof(apr_size_t)); /* room for metadata */ + APR_ALIGN_DEFAULT(sizeof(fspr_size_t)); /* room for metadata */ /* FIXME: Ignore error for now. * - * status = apr_file_remove(file, pool);*/ + * status = fspr_file_remove(file, pool);*/ status = APR_SUCCESS; #if APR_USE_SHMEM_MMAP_TMP /* FIXME: Is APR_OS_DEFAULT sufficient? */ - status = apr_file_open(&file, filename, + status = fspr_file_open(&file, filename, APR_READ | APR_WRITE | APR_CREATE | APR_EXCL, APR_OS_DEFAULT, pool); if (status != APR_SUCCESS) { return status; } - status = apr_os_file_get(&tmpfd, file); + status = fspr_os_file_get(&tmpfd, file); if (status != APR_SUCCESS) { - apr_file_close(file); /* ignore errors, we're failing */ - apr_file_remove(new_m->filename, new_m->pool); + fspr_file_close(file); /* ignore errors, we're failing */ + fspr_file_remove(new_m->filename, new_m->pool); return status; } - status = apr_file_trunc(file, new_m->realsize); + status = fspr_file_trunc(file, new_m->realsize); if (status != APR_SUCCESS) { - apr_file_close(file); /* ignore errors, we're failing */ - apr_file_remove(new_m->filename, new_m->pool); + fspr_file_close(file); /* ignore errors, we're failing */ + fspr_file_remove(new_m->filename, new_m->pool); return status; } @@ -249,7 +249,7 @@ APR_DECLARE(apr_status_t) apr_shm_create(apr_shm_t **m, MAP_SHARED, tmpfd, 0); /* FIXME: check for errors */ - status = apr_file_close(file); + status = fspr_file_close(file); if (status != APR_SUCCESS) { return status; } @@ -260,14 +260,14 @@ APR_DECLARE(apr_status_t) apr_shm_create(apr_shm_t **m, return errno; } - status = apr_os_file_put(&file, &tmpfd, + status = fspr_os_file_put(&file, &tmpfd, APR_READ | APR_WRITE | APR_CREATE | APR_EXCL, pool); if (status != APR_SUCCESS) { return status; } - status = apr_file_trunc(file, new_m->realsize); + status = fspr_file_trunc(file, new_m->realsize); if (status != APR_SUCCESS) { shm_unlink(filename); /* we're failing, remove the object */ return status; @@ -277,19 +277,19 @@ APR_DECLARE(apr_status_t) apr_shm_create(apr_shm_t **m, /* FIXME: check for errors */ - status = apr_file_close(file); + status = fspr_file_close(file); if (status != APR_SUCCESS) { return status; } #endif /* APR_USE_SHMEM_MMAP_SHM */ /* store the real size in the metadata */ - *(apr_size_t*)(new_m->base) = new_m->realsize; + *(fspr_size_t*)(new_m->base) = new_m->realsize; /* metadata isn't usable */ - new_m->usable = (char *)new_m->base + APR_ALIGN_DEFAULT(sizeof(apr_size_t)); + new_m->usable = (char *)new_m->base + APR_ALIGN_DEFAULT(sizeof(fspr_size_t)); - apr_pool_cleanup_register(new_m->pool, new_m, shm_cleanup_owner, - apr_pool_cleanup_null); + fspr_pool_cleanup_register(new_m->pool, new_m, shm_cleanup_owner, + fspr_pool_cleanup_null); *m = new_m; return APR_SUCCESS; @@ -299,7 +299,7 @@ APR_DECLARE(apr_status_t) apr_shm_create(apr_shm_t **m, new_m->realsize = reqsize; /* FIXME: APR_OS_DEFAULT is too permissive, switch to 600 I think. */ - status = apr_file_open(&file, filename, + status = fspr_file_open(&file, filename, APR_WRITE | APR_CREATE | APR_EXCL, APR_OS_DEFAULT, pool); if (status != APR_SUCCESS) { @@ -326,7 +326,7 @@ APR_DECLARE(apr_status_t) apr_shm_create(apr_shm_t **m, if (shmctl(new_m->shmid, IPC_STAT, &shmbuf) == -1) { return errno; } - apr_uid_current(&uid, &gid, pool); + fspr_uid_current(&uid, &gid, pool); shmbuf.shm_perm.uid = uid; shmbuf.shm_perm.gid = gid; if (shmctl(new_m->shmid, IPC_SET, &shmbuf) == -1) { @@ -334,18 +334,18 @@ APR_DECLARE(apr_status_t) apr_shm_create(apr_shm_t **m, } nbytes = sizeof(reqsize); - status = apr_file_write(file, (const void *)&reqsize, + status = fspr_file_write(file, (const void *)&reqsize, &nbytes); if (status != APR_SUCCESS) { return status; } - status = apr_file_close(file); + status = fspr_file_close(file); if (status != APR_SUCCESS) { return status; } - apr_pool_cleanup_register(new_m->pool, new_m, shm_cleanup_owner, - apr_pool_cleanup_null); + fspr_pool_cleanup_register(new_m->pool, new_m, shm_cleanup_owner, + fspr_pool_cleanup_null); *m = new_m; return APR_SUCCESS; @@ -355,18 +355,18 @@ APR_DECLARE(apr_status_t) apr_shm_create(apr_shm_t **m, return APR_ENOTIMPL; } -APR_DECLARE(apr_status_t) apr_shm_remove(const char *filename, - apr_pool_t *pool) +APR_DECLARE(fspr_status_t) fspr_shm_remove(const char *filename, + fspr_pool_t *pool) { #if APR_USE_SHMEM_SHMGET - apr_status_t status; - apr_file_t *file; + fspr_status_t status; + fspr_file_t *file; key_t shmkey; int shmid; #endif #if APR_USE_SHMEM_MMAP_TMP - return apr_file_remove(filename, pool); + return fspr_file_remove(filename, pool); #endif #if APR_USE_SHMEM_MMAP_SHM if (shm_unlink(filename) == -1) { @@ -376,7 +376,7 @@ APR_DECLARE(apr_status_t) apr_shm_remove(const char *filename, #endif #if APR_USE_SHMEM_SHMGET /* Presume that the file already exists; just open for writing */ - status = apr_file_open(&file, filename, APR_WRITE, + status = fspr_file_open(&file, filename, APR_WRITE, APR_OS_DEFAULT, pool); if (status) { return status; @@ -389,7 +389,7 @@ APR_DECLARE(apr_status_t) apr_shm_remove(const char *filename, goto shm_remove_failed; } - apr_file_close(file); + fspr_file_close(file); if ((shmid = shmget(shmkey, 0, SHM_R | SHM_W)) < 0) { goto shm_remove_failed; @@ -401,12 +401,12 @@ APR_DECLARE(apr_status_t) apr_shm_remove(const char *filename, if (shmctl(shmid, IPC_RMID, NULL) == -1) { goto shm_remove_failed; } - return apr_file_remove(filename, pool); + return fspr_file_remove(filename, pool); shm_remove_failed: status = errno; /* ensure the file has been removed anyway. */ - apr_file_remove(filename, pool); + fspr_file_remove(filename, pool); return status; #endif @@ -414,14 +414,14 @@ APR_DECLARE(apr_status_t) apr_shm_remove(const char *filename, return APR_ENOTIMPL; } -APR_DECLARE(apr_status_t) apr_shm_destroy(apr_shm_t *m) +APR_DECLARE(fspr_status_t) fspr_shm_destroy(fspr_shm_t *m) { - return apr_pool_cleanup_run(m->pool, m, shm_cleanup_owner); + return fspr_pool_cleanup_run(m->pool, m, shm_cleanup_owner); } -static apr_status_t shm_cleanup_attach(void *m_) +static fspr_status_t shm_cleanup_attach(void *m_) { - apr_shm_t *m = (apr_shm_t *)m_; + fspr_shm_t *m = (fspr_shm_t *)m_; if (m->filename == NULL) { /* It doesn't make sense to detach from an anonymous memory segment. */ @@ -445,9 +445,9 @@ static apr_status_t shm_cleanup_attach(void *m_) return APR_ENOTIMPL; } -APR_DECLARE(apr_status_t) apr_shm_attach(apr_shm_t **m, +APR_DECLARE(fspr_status_t) fspr_shm_attach(fspr_shm_t **m, const char *filename, - apr_pool_t *pool) + fspr_pool_t *pool) { if (filename == NULL) { /* It doesn't make sense to attach to a segment if you don't know @@ -456,88 +456,88 @@ APR_DECLARE(apr_status_t) apr_shm_attach(apr_shm_t **m, } else { #if APR_USE_SHMEM_MMAP_TMP || APR_USE_SHMEM_MMAP_SHM - apr_shm_t *new_m; - apr_status_t status; + fspr_shm_t *new_m; + fspr_status_t status; int tmpfd; - apr_file_t *file; /* file where metadata is stored */ - apr_size_t nbytes; + fspr_file_t *file; /* file where metadata is stored */ + fspr_size_t nbytes; - new_m = apr_palloc(pool, sizeof(apr_shm_t)); + new_m = fspr_palloc(pool, sizeof(fspr_shm_t)); new_m->pool = pool; - new_m->filename = apr_pstrdup(pool, filename); + new_m->filename = fspr_pstrdup(pool, filename); - status = apr_file_open(&file, filename, + status = fspr_file_open(&file, filename, APR_READ | APR_WRITE, APR_OS_DEFAULT, pool); if (status != APR_SUCCESS) { return status; } - status = apr_os_file_get(&tmpfd, file); + status = fspr_os_file_get(&tmpfd, file); if (status != APR_SUCCESS) { return status; } nbytes = sizeof(new_m->realsize); - status = apr_file_read(file, (void *)&(new_m->realsize), + status = fspr_file_read(file, (void *)&(new_m->realsize), &nbytes); if (status != APR_SUCCESS) { return status; } - status = apr_os_file_get(&tmpfd, file); + status = fspr_os_file_get(&tmpfd, file); if (status != APR_SUCCESS) { - apr_file_close(file); /* ignore errors, we're failing */ - apr_file_remove(new_m->filename, new_m->pool); + fspr_file_close(file); /* ignore errors, we're failing */ + fspr_file_remove(new_m->filename, new_m->pool); return status; } - new_m->reqsize = new_m->realsize - sizeof(apr_size_t); + new_m->reqsize = new_m->realsize - sizeof(fspr_size_t); new_m->base = mmap(NULL, new_m->realsize, PROT_READ | PROT_WRITE, MAP_SHARED, tmpfd, 0); /* FIXME: check for errors */ - status = apr_file_close(file); + status = fspr_file_close(file); if (status != APR_SUCCESS) { return status; } /* metadata isn't part of the usable segment */ - new_m->usable = (char *)new_m->base + APR_ALIGN_DEFAULT(sizeof(apr_size_t)); + new_m->usable = (char *)new_m->base + APR_ALIGN_DEFAULT(sizeof(fspr_size_t)); - apr_pool_cleanup_register(new_m->pool, new_m, shm_cleanup_attach, - apr_pool_cleanup_null); + fspr_pool_cleanup_register(new_m->pool, new_m, shm_cleanup_attach, + fspr_pool_cleanup_null); *m = new_m; return APR_SUCCESS; #endif /* APR_USE_SHMEM_MMAP_TMP || APR_USE_SHMEM_MMAP_SHM */ #if APR_USE_SHMEM_SHMGET - apr_shm_t *new_m; - apr_status_t status; - apr_file_t *file; /* file where metadata is stored */ - apr_size_t nbytes; + fspr_shm_t *new_m; + fspr_status_t status; + fspr_file_t *file; /* file where metadata is stored */ + fspr_size_t nbytes; key_t shmkey; - new_m = apr_palloc(pool, sizeof(apr_shm_t)); + new_m = fspr_palloc(pool, sizeof(fspr_shm_t)); - status = apr_file_open(&file, filename, + status = fspr_file_open(&file, filename, APR_READ, APR_OS_DEFAULT, pool); if (status != APR_SUCCESS) { return status; } nbytes = sizeof(new_m->reqsize); - status = apr_file_read(file, (void *)&(new_m->reqsize), + status = fspr_file_read(file, (void *)&(new_m->reqsize), &nbytes); if (status != APR_SUCCESS) { return status; } - status = apr_file_close(file); + status = fspr_file_close(file); if (status != APR_SUCCESS) { return status; } - new_m->filename = apr_pstrdup(pool, filename); + new_m->filename = fspr_pstrdup(pool, filename); new_m->pool = pool; shmkey = ftok(filename, 1); if (shmkey == (key_t)-1) { @@ -552,8 +552,8 @@ APR_DECLARE(apr_status_t) apr_shm_attach(apr_shm_t **m, new_m->usable = new_m->base; new_m->realsize = new_m->reqsize; - apr_pool_cleanup_register(new_m->pool, new_m, shm_cleanup_attach, - apr_pool_cleanup_null); + fspr_pool_cleanup_register(new_m->pool, new_m, shm_cleanup_attach, + fspr_pool_cleanup_null); *m = new_m; return APR_SUCCESS; @@ -563,34 +563,34 @@ APR_DECLARE(apr_status_t) apr_shm_attach(apr_shm_t **m, return APR_ENOTIMPL; } -APR_DECLARE(apr_status_t) apr_shm_detach(apr_shm_t *m) +APR_DECLARE(fspr_status_t) fspr_shm_detach(fspr_shm_t *m) { - apr_status_t rv = shm_cleanup_attach(m); - apr_pool_cleanup_kill(m->pool, m, shm_cleanup_attach); + fspr_status_t rv = shm_cleanup_attach(m); + fspr_pool_cleanup_kill(m->pool, m, shm_cleanup_attach); return rv; } -APR_DECLARE(void *) apr_shm_baseaddr_get(const apr_shm_t *m) +APR_DECLARE(void *) fspr_shm_baseaddr_get(const fspr_shm_t *m) { return m->usable; } -APR_DECLARE(apr_size_t) apr_shm_size_get(const apr_shm_t *m) +APR_DECLARE(fspr_size_t) fspr_shm_size_get(const fspr_shm_t *m) { return m->reqsize; } APR_POOL_IMPLEMENT_ACCESSOR(shm) -APR_DECLARE(apr_status_t) apr_os_shm_get(apr_os_shm_t *osshm, - apr_shm_t *shm) +APR_DECLARE(fspr_status_t) fspr_os_shm_get(fspr_os_shm_t *osshm, + fspr_shm_t *shm) { return APR_ENOTIMPL; } -APR_DECLARE(apr_status_t) apr_os_shm_put(apr_shm_t **m, - apr_os_shm_t *osshm, - apr_pool_t *pool) +APR_DECLARE(fspr_status_t) fspr_os_shm_put(fspr_shm_t **m, + fspr_os_shm_t *osshm, + fspr_pool_t *pool) { return APR_ENOTIMPL; } diff --git a/libs/apr/shmem/win32/shm.c b/libs/apr/shmem/win32/shm.c index 36af7439641..15578f553e9 100644 --- a/libs/apr/shmem/win32/shm.c +++ b/libs/apr/shmem/win32/shm.c @@ -14,54 +14,54 @@ * limitations under the License. */ -#include "apr_general.h" -#include "apr_errno.h" -#include "apr_file_io.h" -#include "apr_shm.h" -#include "apr_arch_file_io.h" +#include "fspr_general.h" +#include "fspr_errno.h" +#include "fspr_file_io.h" +#include "fspr_shm.h" +#include "fspr_arch_file_io.h" #include "limits.h" typedef struct memblock_t { - apr_size_t size; - apr_size_t length; + fspr_size_t size; + fspr_size_t length; } memblock_t; -struct apr_shm_t { - apr_pool_t *pool; +struct fspr_shm_t { + fspr_pool_t *pool; memblock_t *memblk; void *usrmem; - apr_size_t size; - apr_size_t length; + fspr_size_t size; + fspr_size_t length; HANDLE hMap; }; -static apr_status_t shm_cleanup(void* shm) +static fspr_status_t shm_cleanup(void* shm) { - apr_status_t rv = APR_SUCCESS; - apr_shm_t *m = shm; + fspr_status_t rv = APR_SUCCESS; + fspr_shm_t *m = shm; if (UnmapViewOfFile(m->memblk)) { - rv = apr_get_os_error(); + rv = fspr_get_os_error(); } if (CloseHandle(m->hMap)) { - return (rv != APR_SUCCESS) ? rv : apr_get_os_error(); + return (rv != APR_SUCCESS) ? rv : fspr_get_os_error(); } /* ### Do we want to make a point of unlinking m->file here? - * Need to add the fname to the apr_shm_t, in that case. + * Need to add the fname to the fspr_shm_t, in that case. */ return rv; } -APR_DECLARE(apr_status_t) apr_shm_create(apr_shm_t **m, - apr_size_t reqsize, +APR_DECLARE(fspr_status_t) fspr_shm_create(fspr_shm_t **m, + fspr_size_t reqsize, const char *file, - apr_pool_t *pool) + fspr_pool_t *pool) { - static apr_size_t memblock = 0; + static fspr_size_t memblock = 0; HANDLE hMap, hFile; - apr_status_t rv; - apr_size_t size; - apr_file_t *f; + fspr_status_t rv; + fspr_size_t size; + fspr_file_t *f; void *base; void *mapkey; DWORD err, sizelo, sizehi; @@ -97,14 +97,14 @@ APR_DECLARE(apr_status_t) apr_shm_create(apr_shm_t **m, * ever did. Ignore that error here, but fail later when * we discover we aren't the creator of the file map object. */ - rv = apr_file_open(&f, file, + rv = fspr_file_open(&f, file, APR_READ | APR_WRITE | APR_BINARY | APR_CREATE, APR_UREAD | APR_UWRITE, pool); if ((rv != APR_SUCCESS) - || ((rv = apr_os_file_get(&hFile, f)) != APR_SUCCESS)) { + || ((rv = fspr_os_file_get(&hFile, f)) != APR_SUCCESS)) { return rv; } - rv = apr_file_trunc(f, size); + rv = fspr_file_trunc(f, size); /* res_name_from_filename turns file into a pseudo-name * without slashes or backslashes, and prepends the \global @@ -127,10 +127,10 @@ APR_DECLARE(apr_status_t) apr_shm_create(apr_shm_t **m, sizehi, sizelo, mapkey); } #endif - err = apr_get_os_error(); + err = fspr_get_os_error(); if (file) { - apr_file_close(f); + fspr_file_close(f); } if (hMap && err == ERROR_ALREADY_EXISTS) { @@ -145,10 +145,10 @@ APR_DECLARE(apr_status_t) apr_shm_create(apr_shm_t **m, 0, 0, size); if (!base) { CloseHandle(hMap); - return apr_get_os_error(); + return fspr_get_os_error(); } - *m = (apr_shm_t *) apr_palloc(pool, sizeof(apr_shm_t)); + *m = (fspr_shm_t *) fspr_palloc(pool, sizeof(fspr_shm_t)); (*m)->pool = pool; (*m)->hMap = hMap; (*m)->memblk = base; @@ -160,27 +160,27 @@ APR_DECLARE(apr_status_t) apr_shm_create(apr_shm_t **m, (*m)->memblk->length = (*m)->length; (*m)->memblk->size = (*m)->size; - apr_pool_cleanup_register((*m)->pool, *m, - shm_cleanup, apr_pool_cleanup_null); + fspr_pool_cleanup_register((*m)->pool, *m, + shm_cleanup, fspr_pool_cleanup_null); return APR_SUCCESS; } -APR_DECLARE(apr_status_t) apr_shm_destroy(apr_shm_t *m) +APR_DECLARE(fspr_status_t) fspr_shm_destroy(fspr_shm_t *m) { - apr_status_t rv = shm_cleanup(m); - apr_pool_cleanup_kill(m->pool, m, shm_cleanup); + fspr_status_t rv = shm_cleanup(m); + fspr_pool_cleanup_kill(m->pool, m, shm_cleanup); return rv; } -APR_DECLARE(apr_status_t) apr_shm_remove(const char *filename, - apr_pool_t *pool) +APR_DECLARE(fspr_status_t) fspr_shm_remove(const char *filename, + fspr_pool_t *pool) { return APR_ENOTIMPL; } -APR_DECLARE(apr_status_t) apr_shm_attach(apr_shm_t **m, +APR_DECLARE(fspr_status_t) fspr_shm_attach(fspr_shm_t **m, const char *file, - apr_pool_t *pool) + fspr_pool_t *pool) { HANDLE hMap; void *mapkey; @@ -207,7 +207,7 @@ APR_DECLARE(apr_status_t) apr_shm_attach(apr_shm_t **m, * opening the existing shmem and reading its size from the header */ hMap = CreateFileMappingW(INVALID_HANDLE_VALUE, NULL, - PAGE_READWRITE, 0, sizeof(apr_shm_t), mapkey); + PAGE_READWRITE, 0, sizeof(fspr_shm_t), mapkey); #endif } #endif @@ -219,16 +219,16 @@ APR_DECLARE(apr_status_t) apr_shm_attach(apr_shm_t **m, #endif if (!hMap) { - return apr_get_os_error(); + return fspr_get_os_error(); } base = MapViewOfFile(hMap, FILE_MAP_READ | FILE_MAP_WRITE, 0, 0, 0); if (!base) { CloseHandle(hMap); - return apr_get_os_error(); + return fspr_get_os_error(); } - *m = (apr_shm_t *) apr_palloc(pool, sizeof(apr_shm_t)); + *m = (fspr_shm_t *) fspr_palloc(pool, sizeof(fspr_shm_t)); (*m)->pool = pool; (*m)->memblk = base; /* Real (*m)->mem->size could be recovered with VirtualQuery */ @@ -241,59 +241,59 @@ APR_DECLARE(apr_status_t) apr_shm_attach(apr_shm_t **m, hMap = CreateFileMappingW(INVALID_HANDLE_VALUE, NULL, PAGE_READWRITE, 0, (*m)->size, mapkey); if (!hMap) { - return apr_get_os_error(); + return fspr_get_os_error(); } base = MapViewOfFile(hMap, FILE_MAP_READ | FILE_MAP_WRITE, 0, 0, 0); if (!base) { CloseHandle(hMap); - return apr_get_os_error(); + return fspr_get_os_error(); } #endif (*m)->hMap = hMap; (*m)->length = (*m)->memblk->length; (*m)->usrmem = (char*)base + sizeof(memblock_t); - apr_pool_cleanup_register((*m)->pool, *m, - shm_cleanup, apr_pool_cleanup_null); + fspr_pool_cleanup_register((*m)->pool, *m, + shm_cleanup, fspr_pool_cleanup_null); return APR_SUCCESS; } -APR_DECLARE(apr_status_t) apr_shm_detach(apr_shm_t *m) +APR_DECLARE(fspr_status_t) fspr_shm_detach(fspr_shm_t *m) { - apr_status_t rv = shm_cleanup(m); - apr_pool_cleanup_kill(m->pool, m, shm_cleanup); + fspr_status_t rv = shm_cleanup(m); + fspr_pool_cleanup_kill(m->pool, m, shm_cleanup); return rv; } -APR_DECLARE(void *) apr_shm_baseaddr_get(const apr_shm_t *m) +APR_DECLARE(void *) fspr_shm_baseaddr_get(const fspr_shm_t *m) { return m->usrmem; } -APR_DECLARE(apr_size_t) apr_shm_size_get(const apr_shm_t *m) +APR_DECLARE(fspr_size_t) fspr_shm_size_get(const fspr_shm_t *m) { return m->length; } APR_POOL_IMPLEMENT_ACCESSOR(shm) -APR_DECLARE(apr_status_t) apr_os_shm_get(apr_os_shm_t *osshm, - apr_shm_t *shm) +APR_DECLARE(fspr_status_t) fspr_os_shm_get(fspr_os_shm_t *osshm, + fspr_shm_t *shm) { *osshm = shm->hMap; return APR_SUCCESS; } -APR_DECLARE(apr_status_t) apr_os_shm_put(apr_shm_t **m, - apr_os_shm_t *osshm, - apr_pool_t *pool) +APR_DECLARE(fspr_status_t) fspr_os_shm_put(fspr_shm_t **m, + fspr_os_shm_t *osshm, + fspr_pool_t *pool) { void* base; base = MapViewOfFile(*osshm, FILE_MAP_READ | FILE_MAP_WRITE, 0, 0, 0); if (!base) { - return apr_get_os_error(); + return fspr_get_os_error(); } - *m = (apr_shm_t *) apr_palloc(pool, sizeof(apr_shm_t)); + *m = (fspr_shm_t *) fspr_palloc(pool, sizeof(fspr_shm_t)); (*m)->pool = pool; (*m)->hMap = *osshm; (*m)->memblk = base; @@ -302,8 +302,8 @@ APR_DECLARE(apr_status_t) apr_os_shm_put(apr_shm_t **m, (*m)->size = (*m)->memblk->size; (*m)->length = (*m)->memblk->length; - apr_pool_cleanup_register((*m)->pool, *m, - shm_cleanup, apr_pool_cleanup_null); + fspr_pool_cleanup_register((*m)->pool, *m, + shm_cleanup, fspr_pool_cleanup_null); return APR_SUCCESS; } diff --git a/libs/apr/strings/apr_cpystrn.c b/libs/apr/strings/fspr_cpystrn.c similarity index 89% rename from libs/apr/strings/apr_cpystrn.c rename to libs/apr/strings/fspr_cpystrn.c index 888b2e5db6a..704ebca6230 100644 --- a/libs/apr/strings/apr_cpystrn.c +++ b/libs/apr/strings/fspr_cpystrn.c @@ -14,10 +14,10 @@ * limitations under the License. */ -#include "apr.h" -#include "apr_strings.h" -#include "apr_private.h" -#include "apr_lib.h" +#include "fspr.h" +#include "fspr_strings.h" +#include "fspr_private.h" +#include "fspr_lib.h" #if APR_HAVE_SYS_TYPES_H #include @@ -39,10 +39,10 @@ * the destination string, we return a pointer to the * terminating '\0' to allow us to "check" for truncation * - * apr_cpystrn() follows the same call structure as strncpy(). + * fspr_cpystrn() follows the same call structure as strncpy(). */ -APR_DECLARE(char *) apr_cpystrn(char *dst, const char *src, apr_size_t dst_size) +APR_DECLARE(char *) fspr_cpystrn(char *dst, const char *src, fspr_size_t dst_size) { char *d, *end; @@ -70,7 +70,7 @@ APR_DECLARE(char *) apr_cpystrn(char *dst, const char *src, apr_size_t dst_size) * This function provides a way to parse a generic argument string * into a standard argv[] form of argument list. It respects the * usual "whitespace" and quoteing rules. In the future this could - * be expanded to include support for the apr_call_exec command line + * be expanded to include support for the fspr_call_exec command line * string processing (including converting '+' to ' ' and doing the * url processing. It does not currently support this function. * @@ -82,9 +82,9 @@ APR_DECLARE(char *) apr_cpystrn(char *dst, const char *src, apr_size_t dst_size) * pool and filled in with copies of the tokens * found during parsing of the arg_str. */ -APR_DECLARE(apr_status_t) apr_tokenize_to_argv(const char *arg_str, +APR_DECLARE(fspr_status_t) fspr_tokenize_to_argv(const char *arg_str, char ***argv_out, - apr_pool_t *token_context) + fspr_pool_t *token_context) { const char *cp; const char *ct; @@ -165,7 +165,7 @@ APR_DECLARE(apr_status_t) apr_tokenize_to_argv(const char *arg_str, numargs++; SKIP_WHITESPACE(ct); } - *argv_out = apr_palloc(token_context, numargs * sizeof(char*)); + *argv_out = fspr_palloc(token_context, numargs * sizeof(char*)); /* determine first argument */ for (argnum = 0; argnum < (numargs-1); argnum++) { @@ -174,8 +174,8 @@ APR_DECLARE(apr_status_t) apr_tokenize_to_argv(const char *arg_str, ct = cp; DETERMINE_NEXTSTRING(cp, isquoted); cp++; - (*argv_out)[argnum] = apr_palloc(token_context, cp - ct); - apr_cpystrn((*argv_out)[argnum], ct, cp - ct); + (*argv_out)[argnum] = fspr_palloc(token_context, cp - ct); + fspr_cpystrn((*argv_out)[argnum], ct, cp - ct); cleaned = dirty = (*argv_out)[argnum]; REMOVE_ESCAPE_CHARS(cleaned, dirty, escaped); } @@ -194,7 +194,7 @@ APR_DECLARE(apr_status_t) apr_tokenize_to_argv(const char *arg_str, * Corrected Win32 to accept "a/b\\stuff", "a:stuff" */ -APR_DECLARE(const char *) apr_filepath_name_get(const char *pathname) +APR_DECLARE(const char *) fspr_filepath_name_get(const char *pathname) { const char path_separator = '/'; const char *s = strrchr(pathname, path_separator); @@ -216,10 +216,10 @@ APR_DECLARE(const char *) apr_filepath_name_get(const char *pathname) * collapse in place (src == dest) is legal. * returns terminating null ptr to dest string. */ -APR_DECLARE(char *) apr_collapse_spaces(char *dest, const char *src) +APR_DECLARE(char *) fspr_collapse_spaces(char *dest, const char *src) { while (*src) { - if (!apr_isspace(*src)) + if (!fspr_isspace(*src)) *dest++ = *src; ++src; } @@ -247,7 +247,7 @@ int strcasecmp(const char *a, const char *b) const char *p = a; const char *q = b; for (p = a, q = b; *p && *q; p++, q++) { - int diff = apr_tolower(*p) - apr_tolower(*q); + int diff = fspr_tolower(*p) - fspr_tolower(*q); if (diff) return diff; } @@ -272,7 +272,7 @@ int strncasecmp(const char *a, const char *b, size_t n) return 0; /* Match up to n characters */ if (!(*p && *q)) return *p - *q; - diff = apr_tolower(*p) - apr_tolower(*q); + diff = fspr_tolower(*p) - fspr_tolower(*q); if (diff) return diff; } diff --git a/libs/apr/strings/apr_fnmatch.c b/libs/apr/strings/fspr_fnmatch.c similarity index 84% rename from libs/apr/strings/apr_fnmatch.c rename to libs/apr/strings/fspr_fnmatch.c index 7c41ea6585e..d65570cf676 100644 --- a/libs/apr/strings/apr_fnmatch.c +++ b/libs/apr/strings/fspr_fnmatch.c @@ -43,13 +43,13 @@ static char sccsid[] = "@(#)fnmatch.c 8.2 (Berkeley) 4/16/94"; * Compares a filename or pathname to a pattern. */ #ifndef WIN32 -#include "apr_private.h" +#include "fspr_private.h" #endif -#include "apr_file_info.h" -#include "apr_fnmatch.h" -#include "apr_tables.h" -#include "apr_lib.h" -#include "apr_strings.h" +#include "fspr_file_info.h" +#include "fspr_fnmatch.h" +#include "fspr_tables.h" +#include "fspr_lib.h" +#include "fspr_strings.h" #include #if APR_HAVE_CTYPE_H # include @@ -59,7 +59,7 @@ static char sccsid[] = "@(#)fnmatch.c 8.2 (Berkeley) 4/16/94"; static const char *rangematch(const char *, int, int); -APR_DECLARE(apr_status_t) apr_fnmatch(const char *pattern, const char *string, int flags) +APR_DECLARE(fspr_status_t) fspr_fnmatch(const char *pattern, const char *string, int flags) { const char *stringstart; char c, test; @@ -113,7 +113,7 @@ APR_DECLARE(apr_status_t) apr_fnmatch(const char *pattern, const char *string, i /* General case, use recursion. */ while ((test = *string) != EOS) { - if (!apr_fnmatch(pattern, string, flags & ~APR_FNM_PERIOD)) { + if (!fspr_fnmatch(pattern, string, flags & ~APR_FNM_PERIOD)) { return (APR_SUCCESS); } if (test == '/' && flags & APR_FNM_PATHNAME) { @@ -149,7 +149,7 @@ APR_DECLARE(apr_status_t) apr_fnmatch(const char *pattern, const char *string, i /* FALLTHROUGH */ default: if (flags & APR_FNM_CASE_BLIND) { - if (apr_tolower(c) != apr_tolower(*string)) { + if (fspr_tolower(c) != fspr_tolower(*string)) { return (APR_FNM_NOMATCH); } } @@ -196,14 +196,14 @@ static const char *rangematch(const char *pattern, int test, int flags) } if ((c <= test && test <= c2) || ((flags & APR_FNM_CASE_BLIND) - && ((apr_tolower(c) <= apr_tolower(test)) - && (apr_tolower(test) <= apr_tolower(c2))))) { + && ((fspr_tolower(c) <= fspr_tolower(test)) + && (fspr_tolower(test) <= fspr_tolower(c2))))) { ok = 1; } } else if ((c == test) || ((flags & APR_FNM_CASE_BLIND) - && (apr_tolower(c) == apr_tolower(test)))) { + && (fspr_tolower(c) == fspr_tolower(test)))) { ok = 1; } } @@ -213,7 +213,7 @@ static const char *rangematch(const char *pattern, int test, int flags) /* This function is an Apache addition */ /* return non-zero if pattern has any glob chars in it */ -APR_DECLARE(int) apr_fnmatch_test(const char *pattern) +APR_DECLARE(int) fspr_fnmatch_test(const char *pattern) { int nesting; @@ -246,13 +246,13 @@ APR_DECLARE(int) apr_fnmatch_test(const char *pattern) } /* Find all files matching the specified pattern */ -APR_DECLARE(apr_status_t) apr_match_glob(const char *pattern, - apr_array_header_t **result, - apr_pool_t *p) +APR_DECLARE(fspr_status_t) fspr_match_glob(const char *pattern, + fspr_array_header_t **result, + fspr_pool_t *p) { - apr_dir_t *dir; - apr_finfo_t finfo; - apr_status_t rv; + fspr_dir_t *dir; + fspr_finfo_t finfo; + fspr_status_t rv; char *path; /* XXX So, this is kind of bogus. Basically, I need to strip any leading @@ -261,7 +261,7 @@ APR_DECLARE(apr_status_t) apr_match_glob(const char *pattern, * return anything, then we look for '\'. This means that we could * screw up on unix if the pattern is something like "foo\.*" That '\' * isn't a directory delimiter, it is a part of the filename. To fix this, - * we really need apr_filepath_basename, which will be coming as soon as + * we really need fspr_filepath_basename, which will be coming as soon as * I get to it. rbb */ char *idx = strrchr(pattern, '/'); @@ -273,21 +273,21 @@ APR_DECLARE(apr_status_t) apr_match_glob(const char *pattern, path = "."; } else { - path = apr_pstrndup(p, pattern, idx - pattern); + path = fspr_pstrndup(p, pattern, idx - pattern); pattern = idx + 1; } - *result = apr_array_make(p, 0, sizeof(char *)); - rv = apr_dir_open(&dir, path, p); + *result = fspr_array_make(p, 0, sizeof(char *)); + rv = fspr_dir_open(&dir, path, p); if (rv != APR_SUCCESS) { return rv; } - while (apr_dir_read(&finfo, APR_FINFO_NAME, dir) == APR_SUCCESS) { - if (apr_fnmatch(pattern, finfo.name, 0) == APR_SUCCESS) { - *(const char **)apr_array_push(*result) = apr_pstrdup(p, finfo.name); + while (fspr_dir_read(&finfo, APR_FINFO_NAME, dir) == APR_SUCCESS) { + if (fspr_fnmatch(pattern, finfo.name, 0) == APR_SUCCESS) { + *(const char **)fspr_array_push(*result) = fspr_pstrdup(p, finfo.name); } } - apr_dir_close(dir); + fspr_dir_close(dir); return APR_SUCCESS; } diff --git a/libs/apr/strings/apr_snprintf.c b/libs/apr/strings/fspr_snprintf.c similarity index 90% rename from libs/apr/strings/apr_snprintf.c rename to libs/apr/strings/fspr_snprintf.c index 611f2d7972b..cc7d2faf671 100644 --- a/libs/apr/strings/apr_snprintf.c +++ b/libs/apr/strings/fspr_snprintf.c @@ -14,13 +14,13 @@ * limitations under the License. */ -#include "apr.h" -#include "apr_private.h" +#include "fspr.h" +#include "fspr_private.h" -#include "apr_lib.h" -#include "apr_strings.h" -#include "apr_network_io.h" -#include "apr_portable.h" +#include "fspr_lib.h" +#include "fspr_strings.h" +#include "fspr_network_io.h" +#include "fspr_portable.h" #include #if APR_HAVE_CTYPE_H #include @@ -56,12 +56,12 @@ typedef enum { typedef WIDE_INT wide_int; typedef unsigned WIDE_INT u_wide_int; -typedef apr_int64_t widest_int; +typedef fspr_int64_t widest_int; #ifdef __TANDEM /* Although Tandem supports "long long" there is no unsigned variant. */ typedef unsigned long u_widest_int; #else -typedef apr_uint64_t u_widest_int; +typedef fspr_uint64_t u_widest_int; #endif typedef int bool_int; @@ -84,7 +84,7 @@ typedef int bool_int; */ /* - * apr_ecvt converts to decimal + * fspr_ecvt converts to decimal * the number of digits is specified by ndigit * decpt is set to the position of the decimal point * sign is set to 0 for positive, 1 for negative @@ -93,7 +93,7 @@ typedef int bool_int; #define NDIG 80 /* buf must have at least NDIG bytes */ -static char *apr_cvt(double arg, int ndigits, int *decpt, int *sign, +static char *fspr_cvt(double arg, int ndigits, int *decpt, int *sign, int eflag, char *buf) { register int r2; @@ -167,29 +167,29 @@ static char *apr_cvt(double arg, int ndigits, int *decpt, int *sign, return (buf); } -static char *apr_ecvt(double arg, int ndigits, int *decpt, int *sign, char *buf) +static char *fspr_ecvt(double arg, int ndigits, int *decpt, int *sign, char *buf) { - return (apr_cvt(arg, ndigits, decpt, sign, 1, buf)); + return (fspr_cvt(arg, ndigits, decpt, sign, 1, buf)); } -static char *apr_fcvt(double arg, int ndigits, int *decpt, int *sign, char *buf) +static char *fspr_fcvt(double arg, int ndigits, int *decpt, int *sign, char *buf) { - return (apr_cvt(arg, ndigits, decpt, sign, 0, buf)); + return (fspr_cvt(arg, ndigits, decpt, sign, 0, buf)); } /* - * apr_gcvt - Floating output conversion to + * fspr_gcvt - Floating output conversion to * minimal length string */ -static char *apr_gcvt(double number, int ndigit, char *buf, boolean_e altform) +static char *fspr_gcvt(double number, int ndigit, char *buf, boolean_e altform) { int sign, decpt; register char *p1, *p2; register int i; char buf1[NDIG]; - p1 = apr_ecvt(number, ndigit, &decpt, &sign, buf1); + p1 = fspr_ecvt(number, ndigit, &decpt, &sign, buf1); p2 = buf; if (sign) *p2++ = '-'; @@ -270,7 +270,7 @@ static char *apr_gcvt(double number, int ndigit, char *buf, boolean_e altform) #define STR_TO_DEC(str, num) \ num = NUM(*str++); \ - while (apr_isdigit(*str)) \ + while (fspr_isdigit(*str)) \ { \ num *= 10 ; \ num += NUM(*str++); \ @@ -288,7 +288,7 @@ static char *apr_gcvt(double number, int ndigit, char *buf, boolean_e altform) */ #define FIX_PRECISION(adjust, precision, s, s_len) \ if (adjust) { \ - apr_size_t p = (precision + 1 < NUM_BUF_SIZE) \ + fspr_size_t p = (precision + 1 < NUM_BUF_SIZE) \ ? precision : NUM_BUF_SIZE - 1; \ while (s_len < p) \ { \ @@ -338,7 +338,7 @@ while (width > len) */ static char *conv_10(register wide_int num, register bool_int is_unsigned, register bool_int *is_negative, char *buf_end, - register apr_size_t *len) + register fspr_size_t *len) { register char *p = buf_end; register u_wide_int magnitude; @@ -385,7 +385,7 @@ static char *conv_10(register wide_int num, register bool_int is_unsigned, static char *conv_10_quad(widest_int num, register bool_int is_unsigned, register bool_int *is_negative, char *buf_end, - register apr_size_t *len) + register fspr_size_t *len) { register char *p = buf_end; u_widest_int magnitude; @@ -442,12 +442,12 @@ static char *conv_10_quad(widest_int num, register bool_int is_unsigned, -static char *conv_in_addr(struct in_addr *ia, char *buf_end, apr_size_t *len) +static char *conv_in_addr(struct in_addr *ia, char *buf_end, fspr_size_t *len) { unsigned addr = ntohl(ia->s_addr); char *p = buf_end; bool_int is_negative; - apr_size_t sub_len; + fspr_size_t sub_len; p = conv_10((addr & 0x000000FF) , TRUE, &is_negative, p, &sub_len); *--p = '.'; @@ -463,16 +463,16 @@ static char *conv_in_addr(struct in_addr *ia, char *buf_end, apr_size_t *len) -static char *conv_apr_sockaddr(apr_sockaddr_t *sa, char *buf_end, apr_size_t *len) +static char *conv_fspr_sockaddr(fspr_sockaddr_t *sa, char *buf_end, fspr_size_t *len) { char *p = buf_end; bool_int is_negative; - apr_size_t sub_len; + fspr_size_t sub_len; char *ipaddr_str; p = conv_10(sa->port, TRUE, &is_negative, p, &sub_len); *--p = ':'; - apr_sockaddr_ip_get(&ipaddr_str, sa); + fspr_sockaddr_ip_get(&ipaddr_str, sa); sub_len = strlen(ipaddr_str); #if APR_HAVE_IPV6 if (sa->family == APR_INET6 && @@ -496,20 +496,20 @@ static char *conv_apr_sockaddr(apr_sockaddr_t *sa, char *buf_end, apr_size_t *le #if APR_HAS_THREADS -static char *conv_os_thread_t(apr_os_thread_t *tid, char *buf_end, apr_size_t *len) +static char *conv_os_thread_t(fspr_os_thread_t *tid, char *buf_end, fspr_size_t *len) { union { - apr_os_thread_t tid; - apr_uint64_t alignme; + fspr_os_thread_t tid; + fspr_uint64_t alignme; } u; int is_negative; u.tid = *tid; switch(sizeof(u.tid)) { - case sizeof(apr_int32_t): - return conv_10(*(apr_uint32_t *)&u.tid, TRUE, &is_negative, buf_end, len); - case sizeof(apr_int64_t): - return conv_10_quad(*(apr_uint64_t *)&u.tid, TRUE, &is_negative, buf_end, len); + case sizeof(fspr_int32_t): + return conv_10(*(fspr_uint32_t *)&u.tid, TRUE, &is_negative, buf_end, len); + case sizeof(fspr_int64_t): + return conv_10_quad(*(fspr_uint64_t *)&u.tid, TRUE, &is_negative, buf_end, len); default: /* not implemented; stick 0 in the buffer */ return conv_10(0, TRUE, &is_negative, buf_end, len); @@ -527,7 +527,7 @@ static char *conv_os_thread_t(apr_os_thread_t *tid, char *buf_end, apr_size_t *l */ static char *conv_fp(register char format, register double num, boolean_e add_dp, int precision, bool_int *is_negative, - char *buf, apr_size_t *len) + char *buf, fspr_size_t *len) { register char *s = buf; register char *p; @@ -535,14 +535,14 @@ static char *conv_fp(register char format, register double num, char buf1[NDIG]; if (format == 'f') - p = apr_fcvt(num, precision, &decimal_point, is_negative, buf1); + p = fspr_fcvt(num, precision, &decimal_point, is_negative, buf1); else /* either e or E format */ - p = apr_ecvt(num, precision + 1, &decimal_point, is_negative, buf1); + p = fspr_ecvt(num, precision + 1, &decimal_point, is_negative, buf1); /* * Check for Infinity and NaN */ - if (apr_isalpha(*p)) { + if (fspr_isalpha(*p)) { *len = strlen(p); memcpy(buf, p, *len + 1); *is_negative = FALSE; @@ -581,7 +581,7 @@ static char *conv_fp(register char format, register double num, if (format != 'f') { char temp[EXPONENT_LENGTH]; /* for exponent conversion */ - apr_size_t t_len; + fspr_size_t t_len; bool_int exponent_is_negative; *s++ = format; /* either e or E */ @@ -625,7 +625,7 @@ static char *conv_fp(register char format, register double num, * the number isn't quad size. */ static char *conv_p2(register u_wide_int num, register int nbits, - char format, char *buf_end, register apr_size_t *len) + char format, char *buf_end, register fspr_size_t *len) { register int mask = (1 << nbits) - 1; register char *p = buf_end; @@ -644,7 +644,7 @@ static char *conv_p2(register u_wide_int num, register int nbits, } static char *conv_p2_quad(u_widest_int num, register int nbits, - char format, char *buf_end, register apr_size_t *len) + char format, char *buf_end, register fspr_size_t *len) { register int mask = (1 << nbits) - 1; register char *p = buf_end; @@ -666,20 +666,20 @@ static char *conv_p2_quad(u_widest_int num, register int nbits, } #if APR_HAS_THREADS -static char *conv_os_thread_t_hex(apr_os_thread_t *tid, char *buf_end, apr_size_t *len) +static char *conv_os_thread_t_hex(fspr_os_thread_t *tid, char *buf_end, fspr_size_t *len) { union { - apr_os_thread_t tid; - apr_uint64_t alignme; + fspr_os_thread_t tid; + fspr_uint64_t alignme; } u; int is_negative; u.tid = *tid; switch(sizeof(u.tid)) { - case sizeof(apr_int32_t): - return conv_p2(*(apr_uint32_t *)&u.tid, 4, 'x', buf_end, len); - case sizeof(apr_int64_t): - return conv_p2_quad(*(apr_uint64_t *)&u.tid, 4, 'x', buf_end, len); + case sizeof(fspr_int32_t): + return conv_p2(*(fspr_uint32_t *)&u.tid, 4, 'x', buf_end, len); + case sizeof(fspr_int64_t): + return conv_p2_quad(*(fspr_uint64_t *)&u.tid, 4, 'x', buf_end, len); default: /* not implemented; stick 0 in the buffer */ return conv_10(0, TRUE, &is_negative, buf_end, len); @@ -690,20 +690,20 @@ static char *conv_os_thread_t_hex(apr_os_thread_t *tid, char *buf_end, apr_size_ /* * Do format conversion placing the output in buffer */ -APR_DECLARE(int) apr_vformatter(int (*flush_func)(apr_vformatter_buff_t *), - apr_vformatter_buff_t *vbuff, const char *fmt, va_list ap) +APR_DECLARE(int) fspr_vformatter(int (*flush_func)(fspr_vformatter_buff_t *), + fspr_vformatter_buff_t *vbuff, const char *fmt, va_list ap) { register char *sp; register char *bep; register int cc = 0; - register apr_size_t i; + register fspr_size_t i; register char *s = NULL; char *q; - apr_size_t s_len; + fspr_size_t s_len; - register apr_size_t min_width = 0; - apr_size_t precision = 0; + register fspr_size_t min_width = 0; + fspr_size_t precision = 0; enum { LEFT, RIGHT } adjust; @@ -756,7 +756,7 @@ APR_DECLARE(int) apr_vformatter(int (*flush_func)(apr_vformatter_buff_t *), /* * Try to avoid checking for flags, width or precision */ - if (!apr_islower(*fmt)) { + if (!fspr_islower(*fmt)) { /* * Recognize flags: -, #, BLANK, + */ @@ -778,7 +778,7 @@ APR_DECLARE(int) apr_vformatter(int (*flush_func)(apr_vformatter_buff_t *), /* * Check if a width was specified */ - if (apr_isdigit(*fmt)) { + if (fspr_isdigit(*fmt)) { STR_TO_DEC(fmt, min_width); adjust_width = YES; } @@ -788,10 +788,10 @@ APR_DECLARE(int) apr_vformatter(int (*flush_func)(apr_vformatter_buff_t *), adjust_width = YES; if (v < 0) { adjust = LEFT; - min_width = (apr_size_t)(-v); + min_width = (fspr_size_t)(-v); } else - min_width = (apr_size_t)v; + min_width = (fspr_size_t)v; } else adjust_width = NO; @@ -802,13 +802,13 @@ APR_DECLARE(int) apr_vformatter(int (*flush_func)(apr_vformatter_buff_t *), if (*fmt == '.') { adjust_precision = YES; fmt++; - if (apr_isdigit(*fmt)) { + if (fspr_isdigit(*fmt)) { STR_TO_DEC(fmt, precision); } else if (*fmt == '*') { int v = va_arg(ap, int); fmt++; - precision = (v < 0) ? 0 : (apr_size_t)v; + precision = (v < 0) ? 0 : (fspr_size_t)v; } else precision = 0; @@ -1058,7 +1058,7 @@ APR_DECLARE(int) apr_vformatter(int (*flush_func)(apr_vformatter_buff_t *), /* * * We use &num_buf[ 1 ], so that we have room for the sign */ - s = apr_gcvt(va_arg(ap, double), precision, &num_buf[1], + s = fspr_gcvt(va_arg(ap, double), precision, &num_buf[1], alternate_form); if (*s == '-') prefix_char = *s++; @@ -1069,7 +1069,7 @@ APR_DECLARE(int) apr_vformatter(int (*flush_func)(apr_vformatter_buff_t *), s_len = strlen(s); - if (alternate_form && (q = strchr(s, '.')) == NULL) { + if (alternate_form && strchr(s, '.') == NULL) { s[s_len++] = '.'; s[s_len] = '\0'; /* delimit for following strchr() */ } @@ -1140,14 +1140,14 @@ APR_DECLARE(int) apr_vformatter(int (*flush_func)(apr_vformatter_buff_t *), pad_char = ' '; break; - /* print an apr_sockaddr_t as a.b.c.d:port */ + /* print an fspr_sockaddr_t as a.b.c.d:port */ case 'I': { - apr_sockaddr_t *sa; + fspr_sockaddr_t *sa; - sa = va_arg(ap, apr_sockaddr_t *); + sa = va_arg(ap, fspr_sockaddr_t *); if (sa != NULL) { - s = conv_apr_sockaddr(sa, &num_buf[NUM_BUF_SIZE], &s_len); + s = conv_fspr_sockaddr(sa, &num_buf[NUM_BUF_SIZE], &s_len); if (adjust_precision && precision < s_len) s_len = precision; } @@ -1181,9 +1181,9 @@ APR_DECLARE(int) apr_vformatter(int (*flush_func)(apr_vformatter_buff_t *), case 'T': #if APR_HAS_THREADS { - apr_os_thread_t *tid; + fspr_os_thread_t *tid; - tid = va_arg(ap, apr_os_thread_t *); + tid = va_arg(ap, fspr_os_thread_t *); if (tid != NULL) { s = conv_os_thread_t(tid, &num_buf[NUM_BUF_SIZE], &s_len); if (adjust_precision && precision < s_len) @@ -1206,9 +1206,9 @@ APR_DECLARE(int) apr_vformatter(int (*flush_func)(apr_vformatter_buff_t *), case 't': #if APR_HAS_THREADS { - apr_os_thread_t *tid; + fspr_os_thread_t *tid; - tid = va_arg(ap, apr_os_thread_t *); + tid = va_arg(ap, fspr_os_thread_t *); if (tid != NULL) { s = conv_os_thread_t_hex(tid, &num_buf[NUM_BUF_SIZE], &s_len); if (adjust_precision && precision < s_len) @@ -1304,21 +1304,21 @@ APR_DECLARE(int) apr_vformatter(int (*flush_func)(apr_vformatter_buff_t *), } -static int snprintf_flush(apr_vformatter_buff_t *vbuff) +static int snprintf_flush(fspr_vformatter_buff_t *vbuff) { /* if the buffer fills we have to abort immediately, there is no way - * to "flush" an apr_snprintf... there's nowhere to flush it to. + * to "flush" an fspr_snprintf... there's nowhere to flush it to. */ return -1; } -APR_DECLARE_NONSTD(int) apr_snprintf(char *buf, apr_size_t len, +APR_DECLARE_NONSTD(int) fspr_snprintf(char *buf, fspr_size_t len, const char *format, ...) { int cc; va_list ap; - apr_vformatter_buff_t vbuff; + fspr_vformatter_buff_t vbuff; if (len == 0) { /* NOTE: This is a special case; we just want to return the number @@ -1336,7 +1336,7 @@ APR_DECLARE_NONSTD(int) apr_snprintf(char *buf, apr_size_t len, vbuff.endpos = buf + len - 1; } va_start(ap, format); - cc = apr_vformatter(snprintf_flush, &vbuff, format, ap); + cc = fspr_vformatter(snprintf_flush, &vbuff, format, ap); va_end(ap); if (len != 0) { *vbuff.curpos = '\0'; @@ -1345,11 +1345,11 @@ APR_DECLARE_NONSTD(int) apr_snprintf(char *buf, apr_size_t len, } -APR_DECLARE(int) apr_vsnprintf(char *buf, apr_size_t len, const char *format, +APR_DECLARE(int) fspr_vsnprintf(char *buf, fspr_size_t len, const char *format, va_list ap) { int cc; - apr_vformatter_buff_t vbuff; + fspr_vformatter_buff_t vbuff; if (len == 0) { /* See above note */ @@ -1360,7 +1360,7 @@ APR_DECLARE(int) apr_vsnprintf(char *buf, apr_size_t len, const char *format, vbuff.curpos = buf; vbuff.endpos = buf + len - 1; } - cc = apr_vformatter(snprintf_flush, &vbuff, format, ap); + cc = fspr_vformatter(snprintf_flush, &vbuff, format, ap); if (len != 0) { *vbuff.curpos = '\0'; } diff --git a/libs/apr/strings/apr_strings.c b/libs/apr/strings/fspr_strings.c similarity index 82% rename from libs/apr/strings/apr_strings.c rename to libs/apr/strings/fspr_strings.c index 771d351f19d..48dd08b9534 100644 --- a/libs/apr/strings/apr_strings.c +++ b/libs/apr/strings/fspr_strings.c @@ -46,14 +46,14 @@ * SUCH DAMAGE. */ -#include "apr.h" -#include "apr_strings.h" -#include "apr_general.h" -#include "apr_private.h" -#include "apr_lib.h" +#include "fspr.h" +#include "fspr_strings.h" +#include "fspr_general.h" +#include "fspr_private.h" +#include "fspr_lib.h" #define APR_WANT_STDIO #define APR_WANT_STRFUNC -#include "apr_want.h" +#include "fspr_want.h" #ifdef HAVE_STDDEF_H #include /* NULL */ @@ -63,24 +63,24 @@ #include /* strtol and strtoll */ #endif -/** this is used to cache lengths in apr_pstrcat */ +/** this is used to cache lengths in fspr_pstrcat */ #define MAX_SAVED_LENGTHS 6 -APR_DECLARE(char *) apr_pstrdup(apr_pool_t *a, const char *s) +APR_DECLARE(char *) fspr_pstrdup(fspr_pool_t *a, const char *s) { char *res; - apr_size_t len; + fspr_size_t len; if (s == NULL) { return NULL; } len = strlen(s) + 1; - res = apr_palloc(a, len); + res = fspr_palloc(a, len); memcpy(res, s, len); return res; } -APR_DECLARE(char *) apr_pstrndup(apr_pool_t *a, const char *s, apr_size_t n) +APR_DECLARE(char *) fspr_pstrndup(fspr_pool_t *a, const char *s, fspr_size_t n) { char *res; const char *end; @@ -91,51 +91,51 @@ APR_DECLARE(char *) apr_pstrndup(apr_pool_t *a, const char *s, apr_size_t n) end = memchr(s, '\0', n); if (end != NULL) n = end - s; - res = apr_palloc(a, n + 1); + res = fspr_palloc(a, n + 1); memcpy(res, s, n); res[n] = '\0'; return res; } -APR_DECLARE(char *) apr_pstrmemdup(apr_pool_t *a, const char *s, apr_size_t n) +APR_DECLARE(char *) fspr_pstrmemdup(fspr_pool_t *a, const char *s, fspr_size_t n) { char *res; if (s == NULL) { return NULL; } - res = apr_palloc(a, n + 1); + res = fspr_palloc(a, n + 1); memcpy(res, s, n); res[n] = '\0'; return res; } -APR_DECLARE(void *) apr_pmemdup(apr_pool_t *a, const void *m, apr_size_t n) +APR_DECLARE(void *) fspr_pmemdup(fspr_pool_t *a, const void *m, fspr_size_t n) { void *res; if (m == NULL) return NULL; - res = apr_palloc(a, n); + res = fspr_palloc(a, n); memcpy(res, m, n); return res; } -APR_DECLARE_NONSTD(char *) apr_pstrcat(apr_pool_t *a, ...) +APR_DECLARE_NONSTD(char *) fspr_pstrcat(fspr_pool_t *a, ...) { char *cp, *argp, *res; - apr_size_t saved_lengths[MAX_SAVED_LENGTHS] = { 0 }; + fspr_size_t saved_lengths[MAX_SAVED_LENGTHS] = { 0 }; int nargs = 0; /* Pass one --- find length of required string */ - apr_size_t len = 0; + fspr_size_t len = 0; va_list adummy; va_start(adummy, a); while ((cp = va_arg(adummy, char *)) != NULL) { - apr_size_t cplen = strlen(cp); + fspr_size_t cplen = strlen(cp); if (nargs < MAX_SAVED_LENGTHS) { saved_lengths[nargs++] = cplen; } @@ -146,7 +146,7 @@ APR_DECLARE_NONSTD(char *) apr_pstrcat(apr_pool_t *a, ...) /* Allocate the required string */ - res = (char *) apr_palloc(a, len + 1); + res = (char *) fspr_palloc(a, len + 1); cp = res; /* Pass two --- copy the argument strings into the result space */ @@ -175,11 +175,11 @@ APR_DECLARE_NONSTD(char *) apr_pstrcat(apr_pool_t *a, ...) return res; } -APR_DECLARE(char *) apr_pstrcatv(apr_pool_t *a, const struct iovec *vec, - apr_size_t nvec, apr_size_t *nbytes) +APR_DECLARE(char *) fspr_pstrcatv(fspr_pool_t *a, const struct iovec *vec, + fspr_size_t nvec, fspr_size_t *nbytes) { - apr_size_t i; - apr_size_t len; + fspr_size_t i; + fspr_size_t len; const struct iovec *src; char *res; char *dst; @@ -196,7 +196,7 @@ APR_DECLARE(char *) apr_pstrcatv(apr_pool_t *a, const struct iovec *vec, } /* Allocate the required string */ - res = (char *) apr_palloc(a, len + 1); + res = (char *) fspr_palloc(a, len + 1); /* Pass two --- copy the argument strings into the result space */ src = vec; @@ -234,7 +234,7 @@ void *memchr(const void *s, int c, size_t n) #define INT64_MIN (-APR_INT64_C(0x7fffffffffffffff) - APR_INT64_C(1)) #endif -APR_DECLARE(apr_status_t) apr_strtoff(apr_off_t *offset, const char *nptr, +APR_DECLARE(fspr_status_t) fspr_strtoff(fspr_off_t *offset, const char *nptr, char **endptr, int base) { errno = 0; @@ -242,14 +242,14 @@ APR_DECLARE(apr_status_t) apr_strtoff(apr_off_t *offset, const char *nptr, return APR_FROM_OS_ERROR(errno); } -APR_DECLARE(apr_int64_t) apr_strtoi64(const char *nptr, char **endptr, int base) +APR_DECLARE(fspr_int64_t) fspr_strtoi64(const char *nptr, char **endptr, int base) { #ifdef APR_INT64_STRFN return APR_INT64_STRFN(nptr, endptr, base); #else const char *s; - apr_int64_t acc; - apr_int64_t val; + fspr_int64_t acc; + fspr_int64_t val; int neg, any; char c; @@ -261,7 +261,7 @@ APR_DECLARE(apr_int64_t) apr_strtoi64(const char *nptr, char **endptr, int base) s = nptr; do { c = *s++; - } while (apr_isspace(c)); + } while (fspr_isspace(c)); if (c == '-') { neg = 1; c = *s++; @@ -319,7 +319,7 @@ APR_DECLARE(apr_int64_t) apr_strtoi64(const char *nptr, char **endptr, int base) else if (c >= 's' && c <= 'z') c -= 'z' - 28; #else -#error "CANNOT COMPILE apr_strtoi64(), only ASCII and EBCDIC supported" +#error "CANNOT COMPILE fspr_strtoi64(), only ASCII and EBCDIC supported" #endif else break; @@ -351,15 +351,15 @@ APR_DECLARE(apr_int64_t) apr_strtoi64(const char *nptr, char **endptr, int base) #endif } -APR_DECLARE(apr_int64_t) apr_atoi64(const char *buf) +APR_DECLARE(fspr_int64_t) fspr_atoi64(const char *buf) { - return apr_strtoi64(buf, NULL, 10); + return fspr_strtoi64(buf, NULL, 10); } -APR_DECLARE(char *) apr_itoa(apr_pool_t *p, int n) +APR_DECLARE(char *) fspr_itoa(fspr_pool_t *p, int n) { const int BUFFER_SIZE = sizeof(int) * 3 + 2; - char *buf = apr_palloc(p, BUFFER_SIZE); + char *buf = fspr_palloc(p, BUFFER_SIZE); char *start = buf + BUFFER_SIZE - 1; int negative; if (n < 0) { @@ -380,10 +380,10 @@ APR_DECLARE(char *) apr_itoa(apr_pool_t *p, int n) return start; } -APR_DECLARE(char *) apr_ltoa(apr_pool_t *p, long n) +APR_DECLARE(char *) fspr_ltoa(fspr_pool_t *p, long n) { const int BUFFER_SIZE = sizeof(long) * 3 + 2; - char *buf = apr_palloc(p, BUFFER_SIZE); + char *buf = fspr_palloc(p, BUFFER_SIZE); char *start = buf + BUFFER_SIZE - 1; int negative; if (n < 0) { @@ -404,10 +404,10 @@ APR_DECLARE(char *) apr_ltoa(apr_pool_t *p, long n) return start; } -APR_DECLARE(char *) apr_off_t_toa(apr_pool_t *p, apr_off_t n) +APR_DECLARE(char *) fspr_off_t_toa(fspr_pool_t *p, fspr_off_t n) { - const int BUFFER_SIZE = sizeof(apr_off_t) * 3 + 2; - char *buf = apr_palloc(p, BUFFER_SIZE); + const int BUFFER_SIZE = sizeof(fspr_off_t) * 3 + 2; + char *buf = fspr_palloc(p, BUFFER_SIZE); char *start = buf + BUFFER_SIZE - 1; int negative; if (n < 0) { @@ -428,7 +428,7 @@ APR_DECLARE(char *) apr_off_t_toa(apr_pool_t *p, apr_off_t n) return start; } -APR_DECLARE(char *) apr_strfsize(apr_off_t size, char *buf) +APR_DECLARE(char *) fspr_strfsize(fspr_off_t size, char *buf) { const char ord[] = "KMGTPE"; const char *o = ord; @@ -438,7 +438,7 @@ APR_DECLARE(char *) apr_strfsize(apr_off_t size, char *buf) return strcpy(buf, " - "); } if (size < 973) { - if (apr_snprintf(buf, 5, "%3d ", (int) size) < 0) + if (fspr_snprintf(buf, 5, "%3d ", (int) size) < 0) return strcpy(buf, "****"); return buf; } @@ -452,13 +452,13 @@ APR_DECLARE(char *) apr_strfsize(apr_off_t size, char *buf) if (size < 9 || (size == 9 && remain < 973)) { if ((remain = ((remain * 5) + 256) / 512) >= 10) ++size, remain = 0; - if (apr_snprintf(buf, 5, "%d.%d%c", (int) size, remain, *o) < 0) + if (fspr_snprintf(buf, 5, "%d.%d%c", (int) size, remain, *o) < 0) return strcpy(buf, "****"); return buf; } if (remain >= 512) ++size; - if (apr_snprintf(buf, 5, "%3d%c", (int) size, *o) < 0) + if (fspr_snprintf(buf, 5, "%3d%c", (int) size, *o) < 0) return strcpy(buf, "****"); return buf; } while (1); diff --git a/libs/apr/strings/apr_strnatcmp.c b/libs/apr/strings/fspr_strnatcmp.c similarity index 84% rename from libs/apr/strings/apr_strnatcmp.c rename to libs/apr/strings/fspr_strnatcmp.c index 0e960e8a90b..f80b8e4aec8 100644 --- a/libs/apr/strings/apr_strnatcmp.c +++ b/libs/apr/strings/fspr_strnatcmp.c @@ -22,8 +22,8 @@ #include #include -#include "apr_strings.h" -#include "apr_lib.h" /* for apr_is*() */ +#include "fspr_strings.h" +#include "fspr_lib.h" /* for fspr_is*() */ #if defined(__GNUC__) # define UNUSED __attribute__((__unused__)) @@ -43,11 +43,11 @@ compare_right(char const *a, char const *b) both numbers to know that they have the same magnitude, so we remember it in BIAS. */ for (;; a++, b++) { - if (!apr_isdigit(*a) && !apr_isdigit(*b)) + if (!fspr_isdigit(*a) && !fspr_isdigit(*b)) break; - else if (!apr_isdigit(*a)) + else if (!fspr_isdigit(*a)) return -1; - else if (!apr_isdigit(*b)) + else if (!fspr_isdigit(*b)) return +1; else if (*a < *b) { if (!bias) @@ -69,11 +69,11 @@ compare_left(char const *a, char const *b) /* Compare two left-aligned numbers: the first to have a different value wins. */ for (;; a++, b++) { - if (!apr_isdigit(*a) && !apr_isdigit(*b)) + if (!fspr_isdigit(*a) && !fspr_isdigit(*b)) break; - else if (!apr_isdigit(*a)) + else if (!fspr_isdigit(*a)) return -1; - else if (!apr_isdigit(*b)) + else if (!fspr_isdigit(*b)) return +1; else if (*a < *b) return -1; @@ -95,14 +95,14 @@ static int strnatcmp0(char const *a, char const *b, int fold_case) ca = a[ai]; cb = b[bi]; /* skip over leading spaces or zeros */ - while (apr_isspace(ca)) + while (fspr_isspace(ca)) ca = a[++ai]; - while (apr_isspace(cb)) + while (fspr_isspace(cb)) cb = b[++bi]; /* process run of digits */ - if (apr_isdigit(ca) && apr_isdigit(cb)) { + if (fspr_isdigit(ca) && fspr_isdigit(cb)) { fractional = (ca == '0' || cb == '0'); if (fractional) { @@ -121,8 +121,8 @@ static int strnatcmp0(char const *a, char const *b, int fold_case) } if (fold_case) { - ca = apr_toupper(ca); - cb = apr_toupper(cb); + ca = fspr_toupper(ca); + cb = fspr_toupper(cb); } if (ca < cb) @@ -136,14 +136,14 @@ static int strnatcmp0(char const *a, char const *b, int fold_case) -APR_DECLARE(int) apr_strnatcmp(char const *a, char const *b) +APR_DECLARE(int) fspr_strnatcmp(char const *a, char const *b) { return strnatcmp0(a, b, 0); } /* Compare, recognizing numeric string and ignoring case. */ -APR_DECLARE(int) apr_strnatcasecmp(char const *a, char const *b) +APR_DECLARE(int) fspr_strnatcasecmp(char const *a, char const *b) { return strnatcmp0(a, b, 1); } diff --git a/libs/apr/strings/apr_strtok.c b/libs/apr/strings/fspr_strtok.c similarity index 91% rename from libs/apr/strings/apr_strtok.c rename to libs/apr/strings/fspr_strtok.c index 517b319d47f..eb7d5687bc6 100644 --- a/libs/apr/strings/apr_strtok.c +++ b/libs/apr/strings/fspr_strtok.c @@ -18,13 +18,13 @@ #include /* for NULL */ #endif -#include "apr.h" -#include "apr_strings.h" +#include "fspr.h" +#include "fspr_strings.h" #define APR_WANT_STRFUNC /* for strchr() */ -#include "apr_want.h" +#include "fspr_want.h" -APR_DECLARE(char *) apr_strtok(char *str, const char *sep, char **last) +APR_DECLARE(char *) fspr_strtok(char *str, const char *sep, char **last) { char *token; diff --git a/libs/apr/support/unix/waitio.c b/libs/apr/support/unix/waitio.c index 7232cdd9cea..70594824aa6 100644 --- a/libs/apr/support/unix/waitio.c +++ b/libs/apr/support/unix/waitio.c @@ -14,11 +14,11 @@ * limitations under the License. */ -#include "apr_arch_file_io.h" -#include "apr_arch_networkio.h" -#include "apr_poll.h" -#include "apr_errno.h" -#include "apr_support.h" +#include "fspr_arch_file_io.h" +#include "fspr_arch_networkio.h" +#include "fspr_poll.h" +#include "fspr_errno.h" +#include "fspr_support.h" /* The only case where we don't use wait_for_io_or_timeout is on * pre-BONE BeOS, so this check should be sufficient and simpler */ @@ -37,7 +37,7 @@ #include #endif -apr_status_t apr_wait_for_io_or_timeout(apr_file_t *f, apr_socket_t *s, +fspr_status_t fspr_wait_for_io_or_timeout(fspr_file_t *f, fspr_socket_t *s, int for_read) { struct pollfd pfd; @@ -63,14 +63,14 @@ apr_status_t apr_wait_for_io_or_timeout(apr_file_t *f, apr_socket_t *s, #else /* !WAITIO_USES_POLL */ -apr_status_t apr_wait_for_io_or_timeout(apr_file_t *f, apr_socket_t *s, +fspr_status_t fspr_wait_for_io_or_timeout(fspr_file_t *f, fspr_socket_t *s, int for_read) { - apr_interval_time_t timeout; - apr_pollfd_t pfd; + fspr_interval_time_t timeout; + fspr_pollfd_t pfd; int type = for_read ? APR_POLLIN : APR_POLLOUT; - apr_pollset_t *pollset; - apr_status_t status; + fspr_pollset_t *pollset; + fspr_status_t status; /* TODO - timeout should be less each time through this loop */ if (f) { @@ -79,7 +79,7 @@ apr_status_t apr_wait_for_io_or_timeout(apr_file_t *f, apr_socket_t *s, pollset = f->pollset; if (pollset == NULL) { - status = apr_pollset_create(&(f->pollset), 1, f->pool, 0); + status = fspr_pollset_create(&(f->pollset), 1, f->pool, 0); if (status != APR_SUCCESS) { return status; } @@ -100,16 +100,16 @@ apr_status_t apr_wait_for_io_or_timeout(apr_file_t *f, apr_socket_t *s, * object with the correct reqevents value. Ignore the status result * on the remove, because it might not be in there (yet). */ - (void) apr_pollset_remove(pollset, &pfd); + (void) fspr_pollset_remove(pollset, &pfd); /* ### check status code */ - (void) apr_pollset_add(pollset, &pfd); + (void) fspr_pollset_add(pollset, &pfd); do { int numdesc; - const apr_pollfd_t *pdesc; + const fspr_pollfd_t *pdesc; - status = apr_pollset_poll(pollset, timeout, &numdesc, &pdesc); + status = fspr_pollset_poll(pollset, timeout, &numdesc, &pdesc); if (numdesc == 1 && (pdesc[0].rtnevents & type) != 0) { return APR_SUCCESS; diff --git a/libs/apr/tables/apr_hash.c b/libs/apr/tables/fspr_hash.c similarity index 72% rename from libs/apr/tables/apr_hash.c rename to libs/apr/tables/fspr_hash.c index 0e707601f51..259d66562b9 100644 --- a/libs/apr/tables/apr_hash.c +++ b/libs/apr/tables/fspr_hash.c @@ -14,12 +14,12 @@ * limitations under the License. */ -#include "apr_private.h" +#include "fspr_private.h" -#include "apr_general.h" -#include "apr_pools.h" +#include "fspr_general.h" +#include "fspr_pools.h" -#include "apr_hash.h" +#include "fspr_hash.h" #if APR_HAVE_STDLIB_H #include @@ -43,13 +43,13 @@ * isn't too bad given that pools have a low allocation overhead. */ -typedef struct apr_hash_entry_t apr_hash_entry_t; +typedef struct fspr_hash_entry_t fspr_hash_entry_t; -struct apr_hash_entry_t { - apr_hash_entry_t *next; +struct fspr_hash_entry_t { + fspr_hash_entry_t *next; unsigned int hash; const void *key; - apr_ssize_t klen; + fspr_ssize_t klen; const void *val; }; @@ -58,11 +58,11 @@ struct apr_hash_entry_t { * * We keep a pointer to the next hash entry here to allow the current * hash entry to be freed or otherwise mangled between calls to - * apr_hash_next(). + * fspr_hash_next(). */ -struct apr_hash_index_t { - apr_hash_t *ht; - apr_hash_entry_t *this, *next; +struct fspr_hash_index_t { + fspr_hash_t *ht; + fspr_hash_entry_t *this, *next; unsigned int index; }; @@ -73,13 +73,13 @@ struct apr_hash_index_t { * The count of hash entries may be greater depending on the chosen * collision rate. */ -struct apr_hash_t { - apr_pool_t *pool; - apr_hash_entry_t **array; - apr_hash_index_t iterator; /* For apr_hash_first(NULL, ...) */ +struct fspr_hash_t { + fspr_pool_t *pool; + fspr_hash_entry_t **array; + fspr_hash_index_t iterator; /* For fspr_hash_first(NULL, ...) */ unsigned int count, max; - apr_hashfunc_t hash_func; - apr_hash_entry_t *free; /* List of recycled entries */ + fspr_hashfunc_t hash_func; + fspr_hash_entry_t *free; /* List of recycled entries */ }; #define INITIAL_MAX 15 /* tunable == 2^n - 1 */ @@ -89,28 +89,28 @@ struct apr_hash_t { * Hash creation functions. */ -static apr_hash_entry_t **alloc_array(apr_hash_t *ht, unsigned int max) +static fspr_hash_entry_t **alloc_array(fspr_hash_t *ht, unsigned int max) { - return apr_pcalloc(ht->pool, sizeof(*ht->array) * (max + 1)); + return fspr_pcalloc(ht->pool, sizeof(*ht->array) * (max + 1)); } -APR_DECLARE(apr_hash_t *) apr_hash_make(apr_pool_t *pool) +APR_DECLARE(fspr_hash_t *) fspr_hash_make(fspr_pool_t *pool) { - apr_hash_t *ht; - ht = apr_palloc(pool, sizeof(apr_hash_t)); + fspr_hash_t *ht; + ht = fspr_palloc(pool, sizeof(fspr_hash_t)); ht->pool = pool; ht->free = NULL; ht->count = 0; ht->max = INITIAL_MAX; ht->array = alloc_array(ht, ht->max); - ht->hash_func = apr_hashfunc_default; + ht->hash_func = fspr_hashfunc_default; return ht; } -APR_DECLARE(apr_hash_t *) apr_hash_make_custom(apr_pool_t *pool, - apr_hashfunc_t hash_func) +APR_DECLARE(fspr_hash_t *) fspr_hash_make_custom(fspr_pool_t *pool, + fspr_hashfunc_t hash_func) { - apr_hash_t *ht = apr_hash_make(pool); + fspr_hash_t *ht = fspr_hash_make(pool); ht->hash_func = hash_func; return ht; } @@ -120,7 +120,7 @@ APR_DECLARE(apr_hash_t *) apr_hash_make_custom(apr_pool_t *pool, * Hash iteration functions. */ -APR_DECLARE(apr_hash_index_t *) apr_hash_next(apr_hash_index_t *hi) +APR_DECLARE(fspr_hash_index_t *) fspr_hash_next(fspr_hash_index_t *hi) { hi->this = hi->next; while (!hi->this) { @@ -133,11 +133,11 @@ APR_DECLARE(apr_hash_index_t *) apr_hash_next(apr_hash_index_t *hi) return hi; } -APR_DECLARE(apr_hash_index_t *) apr_hash_first(apr_pool_t *p, apr_hash_t *ht) +APR_DECLARE(fspr_hash_index_t *) fspr_hash_first(fspr_pool_t *p, fspr_hash_t *ht) { - apr_hash_index_t *hi; + fspr_hash_index_t *hi; if (p) - hi = apr_palloc(p, sizeof(*hi)); + hi = fspr_palloc(p, sizeof(*hi)); else hi = &ht->iterator; @@ -145,12 +145,12 @@ APR_DECLARE(apr_hash_index_t *) apr_hash_first(apr_pool_t *p, apr_hash_t *ht) hi->index = 0; hi->this = NULL; hi->next = NULL; - return apr_hash_next(hi); + return fspr_hash_next(hi); } -APR_DECLARE(void) apr_hash_this(apr_hash_index_t *hi, +APR_DECLARE(void) fspr_hash_this(fspr_hash_index_t *hi, const void **key, - apr_ssize_t *klen, + fspr_ssize_t *klen, void **val) { if (key) *key = hi->this->key; @@ -163,15 +163,15 @@ APR_DECLARE(void) apr_hash_this(apr_hash_index_t *hi, * Expanding a hash table */ -static void expand_array(apr_hash_t *ht) +static void expand_array(fspr_hash_t *ht) { - apr_hash_index_t *hi; - apr_hash_entry_t **new_array; + fspr_hash_index_t *hi; + fspr_hash_entry_t **new_array; unsigned int new_max; new_max = ht->max * 2 + 1; new_array = alloc_array(ht, new_max); - for (hi = apr_hash_first(NULL, ht); hi; hi = apr_hash_next(hi)) { + for (hi = fspr_hash_first(NULL, ht); hi; hi = fspr_hash_next(hi)) { unsigned int i = hi->this->hash & new_max; hi->this->next = new_array[i]; new_array[i] = hi->this; @@ -180,13 +180,13 @@ static void expand_array(apr_hash_t *ht) ht->max = new_max; } -APR_DECLARE_NONSTD(unsigned int) apr_hashfunc_default(const char *char_key, - apr_ssize_t *klen) +APR_DECLARE_NONSTD(unsigned int) fspr_hashfunc_default(const char *char_key, + fspr_ssize_t *klen) { unsigned int hash = 0; const unsigned char *key = (const unsigned char *)char_key; const unsigned char *p; - apr_ssize_t i; + fspr_ssize_t i; /* * This is the popular `times 33' hash algorithm which is used by @@ -251,12 +251,12 @@ APR_DECLARE_NONSTD(unsigned int) apr_hashfunc_default(const char *char_key, * that hash entries can be removed. */ -static apr_hash_entry_t **find_entry(apr_hash_t *ht, +static fspr_hash_entry_t **find_entry(fspr_hash_t *ht, const void *key, - apr_ssize_t klen, + fspr_ssize_t klen, const void *val) { - apr_hash_entry_t **hep, *he; + fspr_hash_entry_t **hep, *he; unsigned int hash; hash = ht->hash_func(key, &klen); @@ -276,7 +276,7 @@ static apr_hash_entry_t **find_entry(apr_hash_t *ht, if ((he = ht->free) != NULL) ht->free = he->next; else - he = apr_palloc(ht->pool, sizeof(*he)); + he = fspr_palloc(ht->pool, sizeof(*he)); he->next = NULL; he->hash = hash; he->key = key; @@ -287,29 +287,29 @@ static apr_hash_entry_t **find_entry(apr_hash_t *ht, return hep; } -APR_DECLARE(apr_hash_t *) apr_hash_copy(apr_pool_t *pool, - const apr_hash_t *orig) +APR_DECLARE(fspr_hash_t *) fspr_hash_copy(fspr_pool_t *pool, + const fspr_hash_t *orig) { - apr_hash_t *ht; - apr_hash_entry_t *new_vals; + fspr_hash_t *ht; + fspr_hash_entry_t *new_vals; unsigned int i, j; - ht = apr_palloc(pool, sizeof(apr_hash_t) + + ht = fspr_palloc(pool, sizeof(fspr_hash_t) + sizeof(*ht->array) * (orig->max + 1) + - sizeof(apr_hash_entry_t) * orig->count); + sizeof(fspr_hash_entry_t) * orig->count); ht->pool = pool; ht->free = NULL; ht->count = orig->count; ht->max = orig->max; ht->hash_func = orig->hash_func; - ht->array = (apr_hash_entry_t **)((char *)ht + sizeof(apr_hash_t)); + ht->array = (fspr_hash_entry_t **)((char *)ht + sizeof(fspr_hash_t)); - new_vals = (apr_hash_entry_t *)((char *)(ht) + sizeof(apr_hash_t) + + new_vals = (fspr_hash_entry_t *)((char *)(ht) + sizeof(fspr_hash_t) + sizeof(*ht->array) * (orig->max + 1)); j = 0; for (i = 0; i <= ht->max; i++) { - apr_hash_entry_t **new_entry = &(ht->array[i]); - apr_hash_entry_t *orig_entry = orig->array[i]; + fspr_hash_entry_t **new_entry = &(ht->array[i]); + fspr_hash_entry_t *orig_entry = orig->array[i]; while (orig_entry) { *new_entry = &new_vals[j++]; (*new_entry)->hash = orig_entry->hash; @@ -324,11 +324,11 @@ APR_DECLARE(apr_hash_t *) apr_hash_copy(apr_pool_t *pool, return ht; } -APR_DECLARE(void *) apr_hash_get(apr_hash_t *ht, +APR_DECLARE(void *) fspr_hash_get(fspr_hash_t *ht, const void *key, - apr_ssize_t klen) + fspr_ssize_t klen) { - apr_hash_entry_t *he; + fspr_hash_entry_t *he; he = *find_entry(ht, key, klen, NULL); if (he) return (void *)he->val; @@ -336,17 +336,17 @@ APR_DECLARE(void *) apr_hash_get(apr_hash_t *ht, return NULL; } -APR_DECLARE(void) apr_hash_set(apr_hash_t *ht, +APR_DECLARE(void) fspr_hash_set(fspr_hash_t *ht, const void *key, - apr_ssize_t klen, + fspr_ssize_t klen, const void *val) { - apr_hash_entry_t **hep; + fspr_hash_entry_t **hep; hep = find_entry(ht, key, klen, val); if (*hep) { if (!val) { /* delete entry */ - apr_hash_entry_t *old = *hep; + fspr_hash_entry_t *old = *hep; *hep = (*hep)->next; old->next = ht->free; ht->free = old; @@ -364,40 +364,40 @@ APR_DECLARE(void) apr_hash_set(apr_hash_t *ht, /* else key not present and val==NULL */ } -APR_DECLARE(unsigned int) apr_hash_count(apr_hash_t *ht) +APR_DECLARE(unsigned int) fspr_hash_count(fspr_hash_t *ht) { return ht->count; } -APR_DECLARE(void) apr_hash_clear(apr_hash_t *ht) +APR_DECLARE(void) fspr_hash_clear(fspr_hash_t *ht) { - apr_hash_index_t *hi; - for (hi = apr_hash_first(NULL, ht); hi; hi = apr_hash_next(hi)) - apr_hash_set(ht, hi->this->key, hi->this->klen, NULL); + fspr_hash_index_t *hi; + for (hi = fspr_hash_first(NULL, ht); hi; hi = fspr_hash_next(hi)) + fspr_hash_set(ht, hi->this->key, hi->this->klen, NULL); } -APR_DECLARE(apr_hash_t*) apr_hash_overlay(apr_pool_t *p, - const apr_hash_t *overlay, - const apr_hash_t *base) +APR_DECLARE(fspr_hash_t*) fspr_hash_overlay(fspr_pool_t *p, + const fspr_hash_t *overlay, + const fspr_hash_t *base) { - return apr_hash_merge(p, overlay, base, NULL, NULL); + return fspr_hash_merge(p, overlay, base, NULL, NULL); } -APR_DECLARE(apr_hash_t *) apr_hash_merge(apr_pool_t *p, - const apr_hash_t *overlay, - const apr_hash_t *base, - void * (*merger)(apr_pool_t *p, +APR_DECLARE(fspr_hash_t *) fspr_hash_merge(fspr_pool_t *p, + const fspr_hash_t *overlay, + const fspr_hash_t *base, + void * (*merger)(fspr_pool_t *p, const void *key, - apr_ssize_t klen, + fspr_ssize_t klen, const void *h1_val, const void *h2_val, const void *data), const void *data) { - apr_hash_t *res; - apr_hash_entry_t *new_vals = NULL; - apr_hash_entry_t *iter; - apr_hash_entry_t *ent; + fspr_hash_t *res; + fspr_hash_entry_t *new_vals = NULL; + fspr_hash_entry_t *iter; + fspr_hash_entry_t *ent; unsigned int i,j,k; #if APR_POOL_DEBUG @@ -405,19 +405,19 @@ APR_DECLARE(apr_hash_t *) apr_hash_merge(apr_pool_t *p, * overlay->a.pool and base->a.pool have a life span at least * as long as p */ - if (!apr_pool_is_ancestor(overlay->pool, p)) { + if (!fspr_pool_is_ancestor(overlay->pool, p)) { fprintf(stderr, - "apr_hash_merge: overlay's pool is not an ancestor of p\n"); + "fspr_hash_merge: overlay's pool is not an ancestor of p\n"); abort(); } - if (!apr_pool_is_ancestor(base->pool, p)) { + if (!fspr_pool_is_ancestor(base->pool, p)) { fprintf(stderr, - "apr_hash_merge: base's pool is not an ancestor of p\n"); + "fspr_hash_merge: base's pool is not an ancestor of p\n"); abort(); } #endif - res = apr_palloc(p, sizeof(apr_hash_t)); + res = fspr_palloc(p, sizeof(fspr_hash_t)); res->pool = p; res->free = NULL; res->hash_func = base->hash_func; @@ -428,7 +428,7 @@ APR_DECLARE(apr_hash_t *) apr_hash_merge(apr_pool_t *p, } res->array = alloc_array(res, res->max); if (base->count + overlay->count) { - new_vals = apr_palloc(p, sizeof(apr_hash_entry_t) * + new_vals = fspr_palloc(p, sizeof(fspr_hash_entry_t) * (base->count + overlay->count)); } j = 0; diff --git a/libs/apr/tables/apr_tables.c b/libs/apr/tables/fspr_tables.c similarity index 71% rename from libs/apr/tables/apr_tables.c rename to libs/apr/tables/fspr_tables.c index 5a1dfa26196..46153d8c386 100644 --- a/libs/apr/tables/apr_tables.c +++ b/libs/apr/tables/fspr_tables.c @@ -21,13 +21,13 @@ * rst --- 4/95 --- 6/95 */ -#include "apr_private.h" +#include "fspr_private.h" -#include "apr_general.h" -#include "apr_pools.h" -#include "apr_tables.h" -#include "apr_strings.h" -#include "apr_lib.h" +#include "fspr_general.h" +#include "fspr_pools.h" +#include "fspr_tables.h" +#include "fspr_strings.h" +#include "fspr_lib.h" #if APR_HAVE_STDLIB_H #include #endif @@ -43,7 +43,7 @@ #endif /***************************************************************** - * This file contains array and apr_table_t functions only. + * This file contains array and fspr_table_t functions only. */ /***************************************************************** @@ -51,7 +51,7 @@ * The 'array' functions... */ -static void make_array_core(apr_array_header_t *res, apr_pool_t *p, +static void make_array_core(fspr_array_header_t *res, fspr_pool_t *p, int nelts, int elt_size, int clear) { /* @@ -63,10 +63,10 @@ static void make_array_core(apr_array_header_t *res, apr_pool_t *p, } if (clear) { - res->elts = apr_pcalloc(p, nelts * elt_size); + res->elts = fspr_pcalloc(p, nelts * elt_size); } else { - res->elts = apr_palloc(p, nelts * elt_size); + res->elts = fspr_palloc(p, nelts * elt_size); } res->pool = p; @@ -75,42 +75,42 @@ static void make_array_core(apr_array_header_t *res, apr_pool_t *p, res->nalloc = nelts; /* ...but this many allocated */ } -APR_DECLARE(int) apr_is_empty_array(const apr_array_header_t *a) +APR_DECLARE(int) fspr_is_empty_array(const fspr_array_header_t *a) { return ((a == NULL) || (a->nelts == 0)); } -APR_DECLARE(apr_array_header_t *) apr_array_make(apr_pool_t *p, +APR_DECLARE(fspr_array_header_t *) fspr_array_make(fspr_pool_t *p, int nelts, int elt_size) { - apr_array_header_t *res; + fspr_array_header_t *res; - res = (apr_array_header_t *) apr_palloc(p, sizeof(apr_array_header_t)); + res = (fspr_array_header_t *) fspr_palloc(p, sizeof(fspr_array_header_t)); make_array_core(res, p, nelts, elt_size, 1); return res; } -APR_DECLARE(void) apr_array_clear(apr_array_header_t *arr) +APR_DECLARE(void) fspr_array_clear(fspr_array_header_t *arr) { arr->nelts = 0; } -APR_DECLARE(void *) apr_array_pop(apr_array_header_t *arr) +APR_DECLARE(void *) fspr_array_pop(fspr_array_header_t *arr) { - if (apr_is_empty_array(arr)) { + if (fspr_is_empty_array(arr)) { return NULL; } return arr->elts + (arr->elt_size * (--arr->nelts)); } -APR_DECLARE(void *) apr_array_push(apr_array_header_t *arr) +APR_DECLARE(void *) fspr_array_push(fspr_array_header_t *arr) { if (arr->nelts == arr->nalloc) { int new_size = (arr->nalloc <= 0) ? 1 : arr->nalloc * 2; char *new_data; - new_data = apr_palloc(arr->pool, arr->elt_size * new_size); + new_data = fspr_palloc(arr->pool, arr->elt_size * new_size); memcpy(new_data, arr->elts, arr->nalloc * arr->elt_size); memset(new_data + arr->nalloc * arr->elt_size, 0, @@ -123,13 +123,13 @@ APR_DECLARE(void *) apr_array_push(apr_array_header_t *arr) return arr->elts + (arr->elt_size * (arr->nelts - 1)); } -static void *apr_array_push_noclear(apr_array_header_t *arr) +static void *fspr_array_push_noclear(fspr_array_header_t *arr) { if (arr->nelts == arr->nalloc) { int new_size = (arr->nalloc <= 0) ? 1 : arr->nalloc * 2; char *new_data; - new_data = apr_palloc(arr->pool, arr->elt_size * new_size); + new_data = fspr_palloc(arr->pool, arr->elt_size * new_size); memcpy(new_data, arr->elts, arr->nalloc * arr->elt_size); arr->elts = new_data; @@ -140,8 +140,8 @@ static void *apr_array_push_noclear(apr_array_header_t *arr) return arr->elts + (arr->elt_size * (arr->nelts - 1)); } -APR_DECLARE(void) apr_array_cat(apr_array_header_t *dst, - const apr_array_header_t *src) +APR_DECLARE(void) fspr_array_cat(fspr_array_header_t *dst, + const fspr_array_header_t *src) { int elt_size = dst->elt_size; @@ -153,7 +153,7 @@ APR_DECLARE(void) apr_array_cat(apr_array_header_t *dst, new_size *= 2; } - new_data = apr_pcalloc(dst->pool, elt_size * new_size); + new_data = fspr_pcalloc(dst->pool, elt_size * new_size); memcpy(new_data, dst->elts, dst->nalloc * elt_size); dst->elts = new_data; @@ -165,11 +165,11 @@ APR_DECLARE(void) apr_array_cat(apr_array_header_t *dst, dst->nelts += src->nelts; } -APR_DECLARE(apr_array_header_t *) apr_array_copy(apr_pool_t *p, - const apr_array_header_t *arr) +APR_DECLARE(fspr_array_header_t *) fspr_array_copy(fspr_pool_t *p, + const fspr_array_header_t *arr) { - apr_array_header_t *res = - (apr_array_header_t *) apr_palloc(p, sizeof(apr_array_header_t)); + fspr_array_header_t *res = + (fspr_array_header_t *) fspr_palloc(p, sizeof(fspr_array_header_t)); make_array_core(res, p, arr->nalloc, arr->elt_size, 0); memcpy(res->elts, arr->elts, arr->elt_size * arr->nelts); @@ -186,8 +186,8 @@ APR_DECLARE(apr_array_header_t *) apr_array_copy(apr_pool_t *p, * overhead of the full copy only where it is really needed. */ -static APR_INLINE void copy_array_hdr_core(apr_array_header_t *res, - const apr_array_header_t *arr) +static APR_INLINE void copy_array_hdr_core(fspr_array_header_t *res, + const fspr_array_header_t *arr) { res->elts = arr->elts; res->elt_size = arr->elt_size; @@ -195,13 +195,13 @@ static APR_INLINE void copy_array_hdr_core(apr_array_header_t *res, res->nalloc = arr->nelts; /* Force overflow on push */ } -APR_DECLARE(apr_array_header_t *) - apr_array_copy_hdr(apr_pool_t *p, - const apr_array_header_t *arr) +APR_DECLARE(fspr_array_header_t *) + fspr_array_copy_hdr(fspr_pool_t *p, + const fspr_array_header_t *arr) { - apr_array_header_t *res; + fspr_array_header_t *res; - res = (apr_array_header_t *) apr_palloc(p, sizeof(apr_array_header_t)); + res = (fspr_array_header_t *) fspr_palloc(p, sizeof(fspr_array_header_t)); res->pool = p; copy_array_hdr_core(res, arr); return res; @@ -209,33 +209,33 @@ APR_DECLARE(apr_array_header_t *) /* The above is used here to avoid consing multiple new array bodies... */ -APR_DECLARE(apr_array_header_t *) - apr_array_append(apr_pool_t *p, - const apr_array_header_t *first, - const apr_array_header_t *second) +APR_DECLARE(fspr_array_header_t *) + fspr_array_append(fspr_pool_t *p, + const fspr_array_header_t *first, + const fspr_array_header_t *second) { - apr_array_header_t *res = apr_array_copy_hdr(p, first); + fspr_array_header_t *res = fspr_array_copy_hdr(p, first); - apr_array_cat(res, second); + fspr_array_cat(res, second); return res; } -/* apr_array_pstrcat generates a new string from the apr_pool_t containing +/* fspr_array_pstrcat generates a new string from the fspr_pool_t containing * the concatenated sequence of substrings referenced as elements within * the array. The string will be empty if all substrings are empty or null, * or if there are no elements in the array. * If sep is non-NUL, it will be inserted between elements as a separator. */ -APR_DECLARE(char *) apr_array_pstrcat(apr_pool_t *p, - const apr_array_header_t *arr, +APR_DECLARE(char *) fspr_array_pstrcat(fspr_pool_t *p, + const fspr_array_header_t *arr, const char sep) { char *cp, *res, **strpp; - apr_size_t len; + fspr_size_t len; int i; if (arr->nelts <= 0 || arr->elts == NULL) { /* Empty table? */ - return (char *) apr_pcalloc(p, 1); + return (char *) fspr_pcalloc(p, 1); } /* Pass one --- find length of required string */ @@ -255,7 +255,7 @@ APR_DECLARE(char *) apr_array_pstrcat(apr_pool_t *p, /* Allocate the required string */ - res = (char *) apr_palloc(p, len + 1); + res = (char *) fspr_palloc(p, len + 1); cp = res; /* Pass two --- copy the argument strings into the result space */ @@ -308,35 +308,35 @@ APR_DECLARE(char *) apr_array_pstrcat(apr_pool_t *p, #define COMPUTE_KEY_CHECKSUM(key, checksum) \ { \ const char *k = (key); \ - apr_uint32_t c = (apr_uint32_t)*k; \ + fspr_uint32_t c = (fspr_uint32_t)*k; \ (checksum) = c; \ (checksum) <<= 8; \ if (c) { \ - c = (apr_uint32_t)*++k; \ + c = (fspr_uint32_t)*++k; \ checksum |= c; \ } \ (checksum) <<= 8; \ if (c) { \ - c = (apr_uint32_t)*++k; \ + c = (fspr_uint32_t)*++k; \ checksum |= c; \ } \ (checksum) <<= 8; \ if (c) { \ - c = (apr_uint32_t)*++k; \ + c = (fspr_uint32_t)*++k; \ checksum |= c; \ } \ checksum &= CASE_MASK; \ } /** The opaque string-content table type */ -struct apr_table_t { +struct fspr_table_t { /* This has to be first to promote backwards compatibility with - * older modules which cast a apr_table_t * to an apr_array_header_t *... - * they should use the apr_table_elts() function for most of the + * older modules which cast a fspr_table_t * to an fspr_array_header_t *... + * they should use the fspr_table_elts() function for most of the * cases they do this for. */ /** The underlying array for the table */ - apr_array_header_t a; + fspr_array_header_t a; #ifdef MAKE_TABLE_PROFILE /** Who created the array. */ void *creator; @@ -352,7 +352,7 @@ struct apr_table_t { * of index_initialized will be zero. (Check this before * trying to use index_first[i] or index_last[i]!) */ - apr_uint32_t index_initialized; + fspr_uint32_t index_initialized; int index_first[TABLE_HASH_SIZE]; int index_last[TABLE_HASH_SIZE]; }; @@ -362,32 +362,32 @@ struct apr_table_t { * and table_elts() in alloc.h */ #ifdef MAKE_TABLE_PROFILE -static apr_table_entry_t *table_push(apr_table_t *t) +static fspr_table_entry_t *table_push(fspr_table_t *t) { if (t->a.nelts == t->a.nalloc) { return NULL; } - return (apr_table_entry_t *) apr_array_push_noclear(&t->a); + return (fspr_table_entry_t *) fspr_array_push_noclear(&t->a); } #else /* MAKE_TABLE_PROFILE */ -#define table_push(t) ((apr_table_entry_t *) apr_array_push_noclear(&(t)->a)) +#define table_push(t) ((fspr_table_entry_t *) fspr_array_push_noclear(&(t)->a)) #endif /* MAKE_TABLE_PROFILE */ -APR_DECLARE(const apr_array_header_t *) apr_table_elts(const apr_table_t *t) +APR_DECLARE(const fspr_array_header_t *) fspr_table_elts(const fspr_table_t *t) { - return (const apr_array_header_t *)t; + return (const fspr_array_header_t *)t; } -APR_DECLARE(int) apr_is_empty_table(const apr_table_t *t) +APR_DECLARE(int) fspr_is_empty_table(const fspr_table_t *t) { return ((t == NULL) || (t->a.nelts == 0)); } -APR_DECLARE(apr_table_t *) apr_table_make(apr_pool_t *p, int nelts) +APR_DECLARE(fspr_table_t *) fspr_table_make(fspr_pool_t *p, int nelts) { - apr_table_t *t = apr_palloc(p, sizeof(apr_table_t)); + fspr_table_t *t = fspr_palloc(p, sizeof(fspr_table_t)); - make_array_core(&t->a, p, nelts, sizeof(apr_table_entry_t), 0); + make_array_core(&t->a, p, nelts, sizeof(fspr_table_entry_t), 0); #ifdef MAKE_TABLE_PROFILE t->creator = __builtin_return_address(0); #endif @@ -395,21 +395,21 @@ APR_DECLARE(apr_table_t *) apr_table_make(apr_pool_t *p, int nelts) return t; } -APR_DECLARE(apr_table_t *) apr_table_copy(apr_pool_t *p, const apr_table_t *t) +APR_DECLARE(fspr_table_t *) fspr_table_copy(fspr_pool_t *p, const fspr_table_t *t) { - apr_table_t *new = apr_palloc(p, sizeof(apr_table_t)); + fspr_table_t *new = fspr_palloc(p, sizeof(fspr_table_t)); #if APR_POOL_DEBUG /* we don't copy keys and values, so it's necessary that t->a.pool * have a life span at least as long as p */ - if (!apr_pool_is_ancestor(t->a.pool, p)) { - fprintf(stderr, "apr_table_copy: t's pool is not an ancestor of p\n"); + if (!fspr_pool_is_ancestor(t->a.pool, p)) { + fprintf(stderr, "fspr_table_copy: t's pool is not an ancestor of p\n"); abort(); } #endif - make_array_core(&new->a, p, t->a.nalloc, sizeof(apr_table_entry_t), 0); - memcpy(new->a.elts, t->a.elts, t->a.nelts * sizeof(apr_table_entry_t)); + make_array_core(&new->a, p, t->a.nalloc, sizeof(fspr_table_entry_t), 0); + memcpy(new->a.elts, t->a.elts, t->a.nelts * sizeof(fspr_table_entry_t)); new->a.nelts = t->a.nelts; memcpy(new->index_first, t->index_first, sizeof(int) * TABLE_HASH_SIZE); memcpy(new->index_last, t->index_last, sizeof(int) * TABLE_HASH_SIZE); @@ -417,11 +417,11 @@ APR_DECLARE(apr_table_t *) apr_table_copy(apr_pool_t *p, const apr_table_t *t) return new; } -static void table_reindex(apr_table_t *t) +static void table_reindex(fspr_table_t *t) { int i; int hash; - apr_table_entry_t *next_elt = (apr_table_entry_t *) t->a.elts; + fspr_table_entry_t *next_elt = (fspr_table_entry_t *) t->a.elts; t->index_initialized = 0; for (i = 0; i < t->a.nelts; i++, next_elt++) { @@ -434,17 +434,17 @@ static void table_reindex(apr_table_t *t) } } -APR_DECLARE(void) apr_table_clear(apr_table_t *t) +APR_DECLARE(void) fspr_table_clear(fspr_table_t *t) { t->a.nelts = 0; t->index_initialized = 0; } -APR_DECLARE(const char *) apr_table_get(const apr_table_t *t, const char *key) +APR_DECLARE(const char *) fspr_table_get(const fspr_table_t *t, const char *key) { - apr_table_entry_t *next_elt; - apr_table_entry_t *end_elt; - apr_uint32_t checksum; + fspr_table_entry_t *next_elt; + fspr_table_entry_t *end_elt; + fspr_uint32_t checksum; int hash; if (key == NULL) { @@ -456,8 +456,8 @@ APR_DECLARE(const char *) apr_table_get(const apr_table_t *t, const char *key) return NULL; } COMPUTE_KEY_CHECKSUM(key, checksum); - next_elt = ((apr_table_entry_t *) t->a.elts) + t->index_first[hash];; - end_elt = ((apr_table_entry_t *) t->a.elts) + t->index_last[hash]; + next_elt = ((fspr_table_entry_t *) t->a.elts) + t->index_first[hash];; + end_elt = ((fspr_table_entry_t *) t->a.elts) + t->index_last[hash]; for (; next_elt <= end_elt; next_elt++) { if ((checksum == next_elt->key_checksum) && @@ -469,13 +469,13 @@ APR_DECLARE(const char *) apr_table_get(const apr_table_t *t, const char *key) return NULL; } -APR_DECLARE(void) apr_table_set(apr_table_t *t, const char *key, +APR_DECLARE(void) fspr_table_set(fspr_table_t *t, const char *key, const char *val) { - apr_table_entry_t *next_elt; - apr_table_entry_t *end_elt; - apr_table_entry_t *table_end; - apr_uint32_t checksum; + fspr_table_entry_t *next_elt; + fspr_table_entry_t *end_elt; + fspr_table_entry_t *table_end; + fspr_uint32_t checksum; int hash; COMPUTE_KEY_CHECKSUM(key, checksum); @@ -485,9 +485,9 @@ APR_DECLARE(void) apr_table_set(apr_table_t *t, const char *key, TABLE_SET_INDEX_INITIALIZED(t, hash); goto add_new_elt; } - next_elt = ((apr_table_entry_t *) t->a.elts) + t->index_first[hash];; - end_elt = ((apr_table_entry_t *) t->a.elts) + t->index_last[hash]; - table_end =((apr_table_entry_t *) t->a.elts) + t->a.nelts; + next_elt = ((fspr_table_entry_t *) t->a.elts) + t->index_first[hash];; + end_elt = ((fspr_table_entry_t *) t->a.elts) + t->index_last[hash]; + table_end =((fspr_table_entry_t *) t->a.elts) + t->a.nelts; for (; next_elt <= end_elt; next_elt++) { if ((checksum == next_elt->key_checksum) && @@ -496,9 +496,9 @@ APR_DECLARE(void) apr_table_set(apr_table_t *t, const char *key, /* Found an existing entry with the same key, so overwrite it */ int must_reindex = 0; - apr_table_entry_t *dst_elt = NULL; + fspr_table_entry_t *dst_elt = NULL; - next_elt->val = apr_pstrdup(t->a.pool, val); + next_elt->val = fspr_pstrdup(t->a.pool, val); /* Remove any other instances of this key */ for (next_elt++; next_elt <= end_elt; next_elt++) { @@ -535,19 +535,19 @@ APR_DECLARE(void) apr_table_set(apr_table_t *t, const char *key, add_new_elt: t->index_last[hash] = t->a.nelts; - next_elt = (apr_table_entry_t *) table_push(t); - next_elt->key = apr_pstrdup(t->a.pool, key); - next_elt->val = apr_pstrdup(t->a.pool, val); + next_elt = (fspr_table_entry_t *) table_push(t); + next_elt->key = fspr_pstrdup(t->a.pool, key); + next_elt->val = fspr_pstrdup(t->a.pool, val); next_elt->key_checksum = checksum; } -APR_DECLARE(void) apr_table_setn(apr_table_t *t, const char *key, +APR_DECLARE(void) fspr_table_setn(fspr_table_t *t, const char *key, const char *val) { - apr_table_entry_t *next_elt; - apr_table_entry_t *end_elt; - apr_table_entry_t *table_end; - apr_uint32_t checksum; + fspr_table_entry_t *next_elt; + fspr_table_entry_t *end_elt; + fspr_table_entry_t *table_end; + fspr_uint32_t checksum; int hash; COMPUTE_KEY_CHECKSUM(key, checksum); @@ -557,9 +557,9 @@ APR_DECLARE(void) apr_table_setn(apr_table_t *t, const char *key, TABLE_SET_INDEX_INITIALIZED(t, hash); goto add_new_elt; } - next_elt = ((apr_table_entry_t *) t->a.elts) + t->index_first[hash];; - end_elt = ((apr_table_entry_t *) t->a.elts) + t->index_last[hash]; - table_end =((apr_table_entry_t *) t->a.elts) + t->a.nelts; + next_elt = ((fspr_table_entry_t *) t->a.elts) + t->index_first[hash];; + end_elt = ((fspr_table_entry_t *) t->a.elts) + t->index_last[hash]; + table_end =((fspr_table_entry_t *) t->a.elts) + t->a.nelts; for (; next_elt <= end_elt; next_elt++) { if ((checksum == next_elt->key_checksum) && @@ -568,7 +568,7 @@ APR_DECLARE(void) apr_table_setn(apr_table_t *t, const char *key, /* Found an existing entry with the same key, so overwrite it */ int must_reindex = 0; - apr_table_entry_t *dst_elt = NULL; + fspr_table_entry_t *dst_elt = NULL; next_elt->val = (char *)val; @@ -607,18 +607,18 @@ APR_DECLARE(void) apr_table_setn(apr_table_t *t, const char *key, add_new_elt: t->index_last[hash] = t->a.nelts; - next_elt = (apr_table_entry_t *) table_push(t); + next_elt = (fspr_table_entry_t *) table_push(t); next_elt->key = (char *)key; next_elt->val = (char *)val; next_elt->key_checksum = checksum; } -APR_DECLARE(void) apr_table_unset(apr_table_t *t, const char *key) +APR_DECLARE(void) fspr_table_unset(fspr_table_t *t, const char *key) { - apr_table_entry_t *next_elt; - apr_table_entry_t *end_elt; - apr_table_entry_t *dst_elt; - apr_uint32_t checksum; + fspr_table_entry_t *next_elt; + fspr_table_entry_t *end_elt; + fspr_table_entry_t *dst_elt; + fspr_uint32_t checksum; int hash; int must_reindex; @@ -627,8 +627,8 @@ APR_DECLARE(void) apr_table_unset(apr_table_t *t, const char *key) return; } COMPUTE_KEY_CHECKSUM(key, checksum); - next_elt = ((apr_table_entry_t *) t->a.elts) + t->index_first[hash]; - end_elt = ((apr_table_entry_t *) t->a.elts) + t->index_last[hash]; + next_elt = ((fspr_table_entry_t *) t->a.elts) + t->index_first[hash]; + end_elt = ((fspr_table_entry_t *) t->a.elts) + t->index_last[hash]; must_reindex = 0; for (; next_elt <= end_elt; next_elt++) { if ((checksum == next_elt->key_checksum) && @@ -637,7 +637,7 @@ APR_DECLARE(void) apr_table_unset(apr_table_t *t, const char *key) /* Found a match: remove this entry, plus any additional * matches for the same key that might follow */ - apr_table_entry_t *table_end = ((apr_table_entry_t *) t->a.elts) + + fspr_table_entry_t *table_end = ((fspr_table_entry_t *) t->a.elts) + t->a.nelts; t->a.nelts--; dst_elt = next_elt; @@ -667,12 +667,12 @@ APR_DECLARE(void) apr_table_unset(apr_table_t *t, const char *key) } } -APR_DECLARE(void) apr_table_merge(apr_table_t *t, const char *key, +APR_DECLARE(void) fspr_table_merge(fspr_table_t *t, const char *key, const char *val) { - apr_table_entry_t *next_elt; - apr_table_entry_t *end_elt; - apr_uint32_t checksum; + fspr_table_entry_t *next_elt; + fspr_table_entry_t *end_elt; + fspr_uint32_t checksum; int hash; COMPUTE_KEY_CHECKSUM(key, checksum); @@ -682,15 +682,15 @@ APR_DECLARE(void) apr_table_merge(apr_table_t *t, const char *key, TABLE_SET_INDEX_INITIALIZED(t, hash); goto add_new_elt; } - next_elt = ((apr_table_entry_t *) t->a.elts) + t->index_first[hash]; - end_elt = ((apr_table_entry_t *) t->a.elts) + t->index_last[hash]; + next_elt = ((fspr_table_entry_t *) t->a.elts) + t->index_first[hash]; + end_elt = ((fspr_table_entry_t *) t->a.elts) + t->index_last[hash]; for (; next_elt <= end_elt; next_elt++) { if ((checksum == next_elt->key_checksum) && !strcasecmp(next_elt->key, key)) { /* Found an existing entry with the same key, so merge with it */ - next_elt->val = apr_pstrcat(t->a.pool, next_elt->val, ", ", + next_elt->val = fspr_pstrcat(t->a.pool, next_elt->val, ", ", val, NULL); return; } @@ -698,28 +698,28 @@ APR_DECLARE(void) apr_table_merge(apr_table_t *t, const char *key, add_new_elt: t->index_last[hash] = t->a.nelts; - next_elt = (apr_table_entry_t *) table_push(t); - next_elt->key = apr_pstrdup(t->a.pool, key); - next_elt->val = apr_pstrdup(t->a.pool, val); + next_elt = (fspr_table_entry_t *) table_push(t); + next_elt->key = fspr_pstrdup(t->a.pool, key); + next_elt->val = fspr_pstrdup(t->a.pool, val); next_elt->key_checksum = checksum; } -APR_DECLARE(void) apr_table_mergen(apr_table_t *t, const char *key, +APR_DECLARE(void) fspr_table_mergen(fspr_table_t *t, const char *key, const char *val) { - apr_table_entry_t *next_elt; - apr_table_entry_t *end_elt; - apr_uint32_t checksum; + fspr_table_entry_t *next_elt; + fspr_table_entry_t *end_elt; + fspr_uint32_t checksum; int hash; #if APR_POOL_DEBUG { - if (!apr_pool_is_ancestor(apr_pool_find(key), t->a.pool)) { - fprintf(stderr, "apr_table_mergen: key not in ancestor pool of t\n"); + if (!fspr_pool_is_ancestor(fspr_pool_find(key), t->a.pool)) { + fprintf(stderr, "fspr_table_mergen: key not in ancestor pool of t\n"); abort(); } - if (!apr_pool_is_ancestor(apr_pool_find(val), t->a.pool)) { - fprintf(stderr, "apr_table_mergen: key not in ancestor pool of t\n"); + if (!fspr_pool_is_ancestor(fspr_pool_find(val), t->a.pool)) { + fprintf(stderr, "fspr_table_mergen: key not in ancestor pool of t\n"); abort(); } } @@ -732,15 +732,15 @@ APR_DECLARE(void) apr_table_mergen(apr_table_t *t, const char *key, TABLE_SET_INDEX_INITIALIZED(t, hash); goto add_new_elt; } - next_elt = ((apr_table_entry_t *) t->a.elts) + t->index_first[hash];; - end_elt = ((apr_table_entry_t *) t->a.elts) + t->index_last[hash]; + next_elt = ((fspr_table_entry_t *) t->a.elts) + t->index_first[hash];; + end_elt = ((fspr_table_entry_t *) t->a.elts) + t->index_last[hash]; for (; next_elt <= end_elt; next_elt++) { if ((checksum == next_elt->key_checksum) && !strcasecmp(next_elt->key, key)) { /* Found an existing entry with the same key, so merge with it */ - next_elt->val = apr_pstrcat(t->a.pool, next_elt->val, ", ", + next_elt->val = fspr_pstrcat(t->a.pool, next_elt->val, ", ", val, NULL); return; } @@ -748,17 +748,17 @@ APR_DECLARE(void) apr_table_mergen(apr_table_t *t, const char *key, add_new_elt: t->index_last[hash] = t->a.nelts; - next_elt = (apr_table_entry_t *) table_push(t); + next_elt = (fspr_table_entry_t *) table_push(t); next_elt->key = (char *)key; next_elt->val = (char *)val; next_elt->key_checksum = checksum; } -APR_DECLARE(void) apr_table_add(apr_table_t *t, const char *key, +APR_DECLARE(void) fspr_table_add(fspr_table_t *t, const char *key, const char *val) { - apr_table_entry_t *elts; - apr_uint32_t checksum; + fspr_table_entry_t *elts; + fspr_uint32_t checksum; int hash; hash = TABLE_HASH(key); @@ -768,27 +768,27 @@ APR_DECLARE(void) apr_table_add(apr_table_t *t, const char *key, TABLE_SET_INDEX_INITIALIZED(t, hash); } COMPUTE_KEY_CHECKSUM(key, checksum); - elts = (apr_table_entry_t *) table_push(t); - elts->key = apr_pstrdup(t->a.pool, key); - elts->val = apr_pstrdup(t->a.pool, val); + elts = (fspr_table_entry_t *) table_push(t); + elts->key = fspr_pstrdup(t->a.pool, key); + elts->val = fspr_pstrdup(t->a.pool, val); elts->key_checksum = checksum; } -APR_DECLARE(void) apr_table_addn(apr_table_t *t, const char *key, +APR_DECLARE(void) fspr_table_addn(fspr_table_t *t, const char *key, const char *val) { - apr_table_entry_t *elts; - apr_uint32_t checksum; + fspr_table_entry_t *elts; + fspr_uint32_t checksum; int hash; #if APR_POOL_DEBUG { - if (!apr_pool_is_ancestor(apr_pool_find(key), t->a.pool)) { - fprintf(stderr, "apr_table_addn: key not in ancestor pool of t\n"); + if (!fspr_pool_is_ancestor(fspr_pool_find(key), t->a.pool)) { + fprintf(stderr, "fspr_table_addn: key not in ancestor pool of t\n"); abort(); } - if (!apr_pool_is_ancestor(apr_pool_find(val), t->a.pool)) { - fprintf(stderr, "apr_table_addn: key not in ancestor pool of t\n"); + if (!fspr_pool_is_ancestor(fspr_pool_find(val), t->a.pool)) { + fprintf(stderr, "fspr_table_addn: key not in ancestor pool of t\n"); abort(); } } @@ -801,40 +801,40 @@ APR_DECLARE(void) apr_table_addn(apr_table_t *t, const char *key, TABLE_SET_INDEX_INITIALIZED(t, hash); } COMPUTE_KEY_CHECKSUM(key, checksum); - elts = (apr_table_entry_t *) table_push(t); + elts = (fspr_table_entry_t *) table_push(t); elts->key = (char *)key; elts->val = (char *)val; elts->key_checksum = checksum; } -APR_DECLARE(apr_table_t *) apr_table_overlay(apr_pool_t *p, - const apr_table_t *overlay, - const apr_table_t *base) +APR_DECLARE(fspr_table_t *) fspr_table_overlay(fspr_pool_t *p, + const fspr_table_t *overlay, + const fspr_table_t *base) { - apr_table_t *res; + fspr_table_t *res; #if APR_POOL_DEBUG /* we don't copy keys and values, so it's necessary that * overlay->a.pool and base->a.pool have a life span at least * as long as p */ - if (!apr_pool_is_ancestor(overlay->a.pool, p)) { + if (!fspr_pool_is_ancestor(overlay->a.pool, p)) { fprintf(stderr, - "apr_table_overlay: overlay's pool is not an ancestor of p\n"); + "fspr_table_overlay: overlay's pool is not an ancestor of p\n"); abort(); } - if (!apr_pool_is_ancestor(base->a.pool, p)) { + if (!fspr_pool_is_ancestor(base->a.pool, p)) { fprintf(stderr, - "apr_table_overlay: base's pool is not an ancestor of p\n"); + "fspr_table_overlay: base's pool is not an ancestor of p\n"); abort(); } #endif - res = apr_palloc(p, sizeof(apr_table_t)); + res = fspr_palloc(p, sizeof(fspr_table_t)); /* behave like append_arrays */ res->a.pool = p; copy_array_hdr_core(&res->a, &overlay->a); - apr_array_cat(&res->a, &base->a); + fspr_array_cat(&res->a, &base->a); table_reindex(res); return res; } @@ -844,7 +844,7 @@ APR_DECLARE(apr_table_t *) apr_table_overlay(apr_pool_t *p, * For each key value given as a vararg: * run the function pointed to as * int comp(void *r, char *key, char *value); - * on each valid key-value pair in the apr_table_t t that matches the vararg key, + * on each valid key-value pair in the fspr_table_t t that matches the vararg key, * or once for every valid key-value pair if the vararg list is empty, * until the function returns false (0) or we finish the table. * @@ -854,42 +854,42 @@ APR_DECLARE(apr_table_t *) apr_table_overlay(apr_pool_t *p, * only one traversal will be made and will cut short if comp returns 0. * * Note that the table_get and table_merge functions assume that each key in - * the apr_table_t is unique (i.e., no multiple entries with the same key). This + * the fspr_table_t is unique (i.e., no multiple entries with the same key). This * function does not make that assumption, since it (unfortunately) isn't * true for some of Apache's tables. * * Note that rec is simply passed-on to the comp function, so that the * caller can pass additional info for the task. * - * ADDENDUM for apr_table_vdo(): + * ADDENDUM for fspr_table_vdo(): * * The caching api will allow a user to walk the header values: * - * apr_status_t apr_cache_el_header_walk(apr_cache_el *el, + * fspr_status_t fspr_cache_el_header_walk(fspr_cache_el *el, * int (*comp)(void *, const char *, const char *), void *rec, ...); * * So it can be ..., however from there I use a callback that use a va_list: * - * apr_status_t (*cache_el_header_walk)(apr_cache_el *el, + * fspr_status_t (*cache_el_header_walk)(fspr_cache_el *el, * int (*comp)(void *, const char *, const char *), void *rec, va_list); * * To pass those ...'s on down to the actual module that will handle walking - * their headers, in the file case this is actually just an apr_table - and - * rather than reimplementing apr_table_do (which IMHO would be bad) I just + * their headers, in the file case this is actually just an fspr_table - and + * rather than reimplementing fspr_table_do (which IMHO would be bad) I just * called it with the va_list. For mod_shmem_cache I don't need it since I - * can't use apr_table's, but mod_file_cache should (though a good hash would + * can't use fspr_table's, but mod_file_cache should (though a good hash would * be better, but that's a different issue :). * * So to make mod_file_cache easier to maintain, it's a good thing */ -APR_DECLARE_NONSTD(int) apr_table_do(apr_table_do_callback_fn_t *comp, - void *rec, const apr_table_t *t, ...) +APR_DECLARE_NONSTD(int) fspr_table_do(fspr_table_do_callback_fn_t *comp, + void *rec, const fspr_table_t *t, ...) { int rv; va_list vp; va_start(vp, t); - rv = apr_table_vdo(comp, rec, t, vp); + rv = fspr_table_vdo(comp, rec, t, vp); va_end(vp); return rv; @@ -905,12 +905,12 @@ APR_DECLARE_NONSTD(int) apr_table_do(apr_table_do_callback_fn_t *comp, * * Note also that this behavior is at odds with the behavior seen if an * empty va_list is passed in -- in that case, a zero return value terminates - * the entire apr_table_vdo (which is what I think should happen in + * the entire fspr_table_vdo (which is what I think should happen in * both cases). * * If nobody objects soon, I'm going to change the order of the nested * loops in this function so that any zero return value from the (*comp) - * function will cause a full termination of apr_table_vdo. I'm hesitant + * function will cause a full termination of fspr_table_vdo. I'm hesitant * at the moment because these (funky) semantics have been around for a * very long time, and although Apache doesn't seem to use them at all, * some third-party vendor might. I can only think of one possible reason @@ -925,11 +925,11 @@ APR_DECLARE_NONSTD(int) apr_table_do(apr_table_do_callback_fn_t *comp, * * Sigh. --JCW, 06/28/02 */ -APR_DECLARE(int) apr_table_vdo(apr_table_do_callback_fn_t *comp, - void *rec, const apr_table_t *t, va_list vp) +APR_DECLARE(int) fspr_table_vdo(fspr_table_do_callback_fn_t *comp, + void *rec, const fspr_table_t *t, va_list vp) { char *argp; - apr_table_entry_t *elts = (apr_table_entry_t *) t->a.elts; + fspr_table_entry_t *elts = (fspr_table_entry_t *) t->a.elts; int vdorv = 1; argp = va_arg(vp, char *); @@ -939,7 +939,7 @@ APR_DECLARE(int) apr_table_vdo(apr_table_do_callback_fn_t *comp, /* Scan for entries that match the next key */ int hash = TABLE_HASH(argp); if (TABLE_INDEX_IS_INITIALIZED(t, hash)) { - apr_uint32_t checksum; + fspr_uint32_t checksum; COMPUTE_KEY_CHECKSUM(argp, checksum); for (i = t->index_first[hash]; rv && (i <= t->index_last[hash]); ++i) { @@ -966,22 +966,22 @@ APR_DECLARE(int) apr_table_vdo(apr_table_do_callback_fn_t *comp, return vdorv; } -static apr_table_entry_t **table_mergesort(apr_pool_t *pool, - apr_table_entry_t **values, - apr_size_t n) +static fspr_table_entry_t **table_mergesort(fspr_pool_t *pool, + fspr_table_entry_t **values, + fspr_size_t n) { /* Bottom-up mergesort, based on design in Sedgewick's "Algorithms * in C," chapter 8 */ - apr_table_entry_t **values_tmp = - (apr_table_entry_t **)apr_palloc(pool, n * sizeof(apr_table_entry_t*)); - apr_size_t i; - apr_size_t blocksize; + fspr_table_entry_t **values_tmp = + (fspr_table_entry_t **)fspr_palloc(pool, n * sizeof(fspr_table_entry_t*)); + fspr_size_t i; + fspr_size_t blocksize; /* First pass: sort pairs of elements (blocksize=1) */ for (i = 0; i + 1 < n; i += 2) { if (strcasecmp(values[i]->key, values[i + 1]->key) > 0) { - apr_table_entry_t *swap = values[i]; + fspr_table_entry_t *swap = values[i]; values[i] = values[i + 1]; values[i + 1] = swap; } @@ -990,9 +990,9 @@ static apr_table_entry_t **table_mergesort(apr_pool_t *pool, /* Merge successively larger blocks */ blocksize = 2; while (blocksize < n) { - apr_table_entry_t **dst = values_tmp; - apr_size_t next_start; - apr_table_entry_t **swap; + fspr_table_entry_t **dst = values_tmp; + fspr_size_t next_start; + fspr_table_entry_t **swap; /* Merge consecutive pairs blocks of the next blocksize. * Within a block, elements are in sorted order due to @@ -1001,10 +1001,10 @@ static apr_table_entry_t **table_mergesort(apr_pool_t *pool, for (next_start = 0; next_start + blocksize < n; next_start += (blocksize + blocksize)) { - apr_size_t block1_start = next_start; - apr_size_t block2_start = block1_start + blocksize; - apr_size_t block1_end = block2_start; - apr_size_t block2_end = block2_start + blocksize; + fspr_size_t block1_start = next_start; + fspr_size_t block2_start = block1_start + blocksize; + fspr_size_t block1_end = block2_start; + fspr_size_t block2_end = block2_start + blocksize; if (block2_end > n) { /* The last block may be smaller than blocksize */ block2_end = n; @@ -1060,13 +1060,13 @@ static apr_table_entry_t **table_mergesort(apr_pool_t *pool, return values; } -APR_DECLARE(void) apr_table_compress(apr_table_t *t, unsigned flags) +APR_DECLARE(void) fspr_table_compress(fspr_table_t *t, unsigned flags) { - apr_table_entry_t **sort_array; - apr_table_entry_t **sort_next; - apr_table_entry_t **sort_end; - apr_table_entry_t *table_next; - apr_table_entry_t **last; + fspr_table_entry_t **sort_array; + fspr_table_entry_t **sort_next; + fspr_table_entry_t **sort_end; + fspr_table_entry_t *table_next; + fspr_table_entry_t **last; int i; int dups_found; @@ -1078,10 +1078,10 @@ APR_DECLARE(void) apr_table_compress(apr_table_t *t, unsigned flags) * array and sort to allow for easy detection of * duplicate keys */ - sort_array = (apr_table_entry_t **) - apr_palloc(t->a.pool, t->a.nelts * sizeof(apr_table_entry_t*)); + sort_array = (fspr_table_entry_t **) + fspr_palloc(t->a.pool, t->a.nelts * sizeof(fspr_table_entry_t*)); sort_next = sort_array; - table_next = (apr_table_entry_t *)t->a.elts; + table_next = (fspr_table_entry_t *)t->a.elts; i = t->a.nelts; do { *sort_next++ = table_next++; @@ -1102,7 +1102,7 @@ APR_DECLARE(void) apr_table_compress(apr_table_t *t, unsigned flags) while (sort_next < sort_end) { if (((*sort_next)->key_checksum == (*last)->key_checksum) && !strcasecmp((*sort_next)->key, (*last)->key)) { - apr_table_entry_t **dup_last = sort_next + 1; + fspr_table_entry_t **dup_last = sort_next + 1; dups_found = 1; while ((dup_last < sort_end) && ((*dup_last)->key_checksum == (*last)->key_checksum) && @@ -1113,15 +1113,15 @@ APR_DECLARE(void) apr_table_compress(apr_table_t *t, unsigned flags) * all have the same key */ if (flags == APR_OVERLAP_TABLES_MERGE) { - apr_size_t len = 0; - apr_table_entry_t **next = last; + fspr_size_t len = 0; + fspr_table_entry_t **next = last; char *new_val; char *val_dst; do { len += strlen((*next)->val); len += 2; /* for ", " or trailing null */ } while (++next <= dup_last); - new_val = (char *)apr_palloc(t->a.pool, len); + new_val = (char *)fspr_palloc(t->a.pool, len); val_dst = new_val; next = last; for (;;) { @@ -1153,9 +1153,9 @@ APR_DECLARE(void) apr_table_compress(apr_table_t *t, unsigned flags) /* Shift elements to the left to fill holes left by removing duplicates */ if (dups_found) { - apr_table_entry_t *src = (apr_table_entry_t *)t->a.elts; - apr_table_entry_t *dst = (apr_table_entry_t *)t->a.elts; - apr_table_entry_t *last_elt = src + t->a.nelts; + fspr_table_entry_t *src = (fspr_table_entry_t *)t->a.elts; + fspr_table_entry_t *dst = (fspr_table_entry_t *)t->a.elts; + fspr_table_entry_t *last_elt = src + t->a.nelts; do { if (src->key) { *dst++ = *src; @@ -1167,12 +1167,12 @@ APR_DECLARE(void) apr_table_compress(apr_table_t *t, unsigned flags) table_reindex(t); } -static void apr_table_cat(apr_table_t *t, const apr_table_t *s) +static void fspr_table_cat(fspr_table_t *t, const fspr_table_t *s) { const int n = t->a.nelts; register int idx; - apr_array_cat(&t->a,&s->a); + fspr_array_cat(&t->a,&s->a); if (n == 0) { memcpy(t->index_first,s->index_first,sizeof(int) * TABLE_HASH_SIZE); @@ -1193,7 +1193,7 @@ static void apr_table_cat(apr_table_t *t, const apr_table_t *s) t->index_initialized |= s->index_initialized; } -APR_DECLARE(void) apr_table_overlap(apr_table_t *a, const apr_table_t *b, +APR_DECLARE(void) fspr_table_overlap(fspr_table_t *a, const fspr_table_t *b, unsigned flags) { if (a->a.nelts + b->a.nelts == 0) { @@ -1203,13 +1203,13 @@ APR_DECLARE(void) apr_table_overlap(apr_table_t *a, const apr_table_t *b, #if APR_POOL_DEBUG /* Since the keys and values are not copied, it's required that * b->a.pool has a lifetime at least as long as a->a.pool. */ - if (!apr_pool_is_ancestor(b->a.pool, a->a.pool)) { - fprintf(stderr, "apr_table_overlap: b's pool is not an ancestor of a's\n"); + if (!fspr_pool_is_ancestor(b->a.pool, a->a.pool)) { + fprintf(stderr, "fspr_table_overlap: b's pool is not an ancestor of a's\n"); abort(); } #endif - apr_table_cat(a, b); + fspr_table_cat(a, b); - apr_table_compress(a, flags); + fspr_table_compress(a, flags); } diff --git a/libs/apr/test/globalmutexchild.c b/libs/apr/test/globalmutexchild.c index 4b8737b02bd..194cfb54adb 100644 --- a/libs/apr/test/globalmutexchild.c +++ b/libs/apr/test/globalmutexchild.c @@ -15,12 +15,12 @@ */ #include "testglobalmutex.h" -#include "apr_pools.h" -#include "apr_file_io.h" -#include "apr_general.h" -#include "apr_global_mutex.h" -#include "apr_strings.h" -#include "apr.h" +#include "fspr_pools.h" +#include "fspr_file_io.h" +#include "fspr_general.h" +#include "fspr_global_mutex.h" +#include "fspr_strings.h" +#include "fspr.h" #if APR_HAVE_STDLIB_H #include @@ -29,36 +29,36 @@ int main(int argc, const char * const argv[]) { - apr_pool_t *p; + fspr_pool_t *p; int i = 0; - apr_lockmech_e mech; - apr_global_mutex_t *global_lock; - apr_status_t rv; + fspr_lockmech_e mech; + fspr_global_mutex_t *global_lock; + fspr_status_t rv; - apr_initialize(); - atexit(apr_terminate); + fspr_initialize(); + atexit(fspr_terminate); - apr_pool_create(&p, NULL); + fspr_pool_create(&p, NULL); if (argc >= 2) { - mech = (apr_lockmech_e)apr_strtoi64(argv[1], NULL, 0); + mech = (fspr_lockmech_e)fspr_strtoi64(argv[1], NULL, 0); } else { mech = APR_LOCK_DEFAULT; } - rv = apr_global_mutex_create(&global_lock, LOCKNAME, mech, p); + rv = fspr_global_mutex_create(&global_lock, LOCKNAME, mech, p); if (rv != APR_SUCCESS) { exit(-rv); } - apr_global_mutex_child_init(&global_lock, LOCKNAME, p); + fspr_global_mutex_child_init(&global_lock, LOCKNAME, p); while (1) { - apr_global_mutex_lock(global_lock); + fspr_global_mutex_lock(global_lock); if (i == MAX_ITER) { - apr_global_mutex_unlock(global_lock); + fspr_global_mutex_unlock(global_lock); exit(i); } i++; - apr_global_mutex_unlock(global_lock); + fspr_global_mutex_unlock(global_lock); } exit(0); } diff --git a/libs/apr/test/internal/testregex.c b/libs/apr/test/internal/testregex.c index 20dcfdebe7b..7a46b78364e 100644 --- a/libs/apr/test/internal/testregex.c +++ b/libs/apr/test/internal/testregex.c @@ -15,25 +15,25 @@ */ -#include "apr_strings.h" -#include "apr_pools.h" -#include "apr_general.h" -#include "apr_hash.h" -#include "apr_lib.h" -#include "apr_time.h" +#include "fspr_strings.h" +#include "fspr_pools.h" +#include "fspr_general.h" +#include "fspr_hash.h" +#include "fspr_lib.h" +#include "fspr_time.h" #include #include #include int main( int argc, char** argv) { - apr_pool_t *context; + fspr_pool_t *context; regex_t regex; int rc; int i; int iters; - apr_time_t now; - apr_time_t end; - apr_hash_t *h; + fspr_time_t now; + fspr_time_t end; + fspr_hash_t *h; if (argc !=4 ) { @@ -42,9 +42,9 @@ int main( int argc, char** argv) { } iters = atoi( argv[3]); - apr_initialize() ; - atexit(apr_terminate); - if (apr_pool_create(&context, NULL) != APR_SUCCESS) { + fspr_initialize() ; + atexit(fspr_terminate); + if (fspr_pool_create(&context, NULL) != APR_SUCCESS) { fprintf(stderr, "Something went wrong\n"); exit(-1); } @@ -63,29 +63,29 @@ int main( int argc, char** argv) { else { fprintf(stderr,"No Match\n"); } - now = apr_time_now(); + now = fspr_time_now(); for (i=0;i #include @@ -54,15 +54,15 @@ void displaynw(struct testval *f, struct testval *l) void test_nrange(struct testval *p) { struct testval f, l, s; - apr_status_t rc; + fspr_status_t rc; int success = 0; memcpy (&s, p, sizeof(s)); ++s.nl; do { - apr_size_t nl = s.nl, wl = sizeof(s.w) / 2; - rc = apr_conv_utf8_to_ucs2(s.n, &nl, s.w, &wl); + fspr_size_t nl = s.nl, wl = sizeof(s.w) / 2; + rc = fspr_conv_utf8_to_ucs2(s.n, &nl, s.w, &wl); s.wl = (sizeof(s.w) / 2) - wl; if (!nl && rc == APR_SUCCESS) { if (!success) { @@ -106,15 +106,15 @@ void test_nrange(struct testval *p) void test_wrange(struct testval *p) { struct testval f, l, s; - apr_status_t rc; + fspr_status_t rc; int success = 0; memcpy (&s, p, sizeof(s)); ++s.wl; do { - apr_size_t nl = sizeof(s.n), wl = s.wl; - rc = apr_conv_ucs2_to_utf8(s.w, &wl, s.n, &nl); + fspr_size_t nl = sizeof(s.n), wl = s.wl; + rc = fspr_conv_ucs2_to_utf8(s.w, &wl, s.n, &nl); s.nl = sizeof(s.n) - nl; if (!wl && rc == APR_SUCCESS) { if (!success) { @@ -146,7 +146,7 @@ void test_wrange(struct testval *p) do { int wl = s.wl, nl = sizeof(s.n); - rc = apr_conv_ucs2_to_utf8(s.w, &wl, s.n, &nl); + rc = fspr_conv_ucs2_to_utf8(s.w, &wl, s.n, &nl); s.nl = sizeof(s.n) - s.nl; if (rc == APR_INCOMPLETE) { test_wrange(&s); @@ -164,11 +164,11 @@ int main(int argc, char **argv) struct testval s; memset (&s, 0, sizeof(s)); - if (argc < 2 || apr_tolower(*argv[1]) != 'w') { + if (argc < 2 || fspr_tolower(*argv[1]) != 'w') { printf ("\n\nTesting Narrow Char Ranges\n"); test_nrange(&s); } - if (argc < 2 || apr_tolower(*argv[1]) != 'n') { + if (argc < 2 || fspr_tolower(*argv[1]) != 'n') { printf ("\n\nTesting Wide Char Ranges\n"); test_wrange(&s); } diff --git a/libs/apr/test/mod_test.c b/libs/apr/test/mod_test.c index 2178e94059c..ecae249f9fd 100644 --- a/libs/apr/test/mod_test.c +++ b/libs/apr/test/mod_test.c @@ -14,14 +14,14 @@ * limitations under the License. */ -#include "apr_strings.h" +#include "fspr_strings.h" void print_hello(char str[256]); int count_reps(int reps); void print_hello(char str[256]) { - apr_cpystrn(str, "Hello - I'm a DSO!\n", strlen("Hello - I'm a DSO!\n") + 1); + fspr_cpystrn(str, "Hello - I'm a DSO!\n", strlen("Hello - I'm a DSO!\n") + 1); } int count_reps(int reps) diff --git a/libs/apr/test/occhild.c b/libs/apr/test/occhild.c index a96885d8271..09954d1ac53 100644 --- a/libs/apr/test/occhild.c +++ b/libs/apr/test/occhild.c @@ -1,6 +1,6 @@ -#include "apr.h" -#include "apr_file_io.h" -#include "apr.h" +#include "fspr.h" +#include "fspr_file_io.h" +#include "fspr.h" #if APR_HAVE_STDLIB_H #include @@ -9,18 +9,18 @@ int main(void) { char buf[256]; - apr_file_t *err; - apr_pool_t *p; + fspr_file_t *err; + fspr_pool_t *p; - apr_initialize(); - atexit(apr_terminate); + fspr_initialize(); + atexit(fspr_terminate); - apr_pool_create(&p, NULL); - apr_file_open_stdin(&err, p); + fspr_pool_create(&p, NULL); + fspr_file_open_stdin(&err, p); while (1) { - apr_size_t length = 256; - apr_file_read(err, buf, &length); + fspr_size_t length = 256; + fspr_file_read(err, buf, &length); } exit(0); /* just to keep the compiler happy */ } diff --git a/libs/apr/test/proc_child.c b/libs/apr/test/proc_child.c index 405bb7f5b6c..b712dddceee 100644 --- a/libs/apr/test/proc_child.c +++ b/libs/apr/test/proc_child.c @@ -1,4 +1,4 @@ -#include "apr.h" +#include "fspr.h" #include #if APR_HAVE_UNISTD_H #include @@ -11,7 +11,7 @@ int main(void) { char buf[256]; - apr_ssize_t bytes; + fspr_ssize_t bytes; bytes = read(STDIN_FILENO, buf, 256); if (bytes > 0) diff --git a/libs/apr/test/readchild.c b/libs/apr/test/readchild.c index f8443cceb8e..92eb1af06c4 100644 --- a/libs/apr/test/readchild.c +++ b/libs/apr/test/readchild.c @@ -16,31 +16,31 @@ #include -#include "apr_file_io.h" +#include "fspr_file_io.h" int main(int argc, char *argv[]) { - apr_file_t *in, *out; - apr_size_t nbytes, total_bytes; - apr_pool_t *p; + fspr_file_t *in, *out; + fspr_size_t nbytes, total_bytes; + fspr_pool_t *p; char buf[128]; - apr_status_t rv; + fspr_status_t rv; - apr_initialize(); - atexit(apr_terminate); - apr_pool_create(&p, NULL); + fspr_initialize(); + atexit(fspr_terminate); + fspr_pool_create(&p, NULL); - apr_file_open_stdin(&in, p); - apr_file_open_stdout(&out, p); + fspr_file_open_stdin(&in, p); + fspr_file_open_stdout(&out, p); total_bytes = 0; nbytes = sizeof(buf); - while ((rv = apr_file_read(in, buf, &nbytes)) == APR_SUCCESS) { + while ((rv = fspr_file_read(in, buf, &nbytes)) == APR_SUCCESS) { total_bytes += nbytes; nbytes = sizeof(buf); } - apr_file_printf(out, "%" APR_SIZE_T_FMT " bytes were read\n", + fspr_file_printf(out, "%" APR_SIZE_T_FMT " bytes were read\n", total_bytes); return 0; } diff --git a/libs/apr/test/sendfile.c b/libs/apr/test/sendfile.c index cfa1fb8a765..a788ba98b9d 100644 --- a/libs/apr/test/sendfile.c +++ b/libs/apr/test/sendfile.c @@ -19,10 +19,10 @@ #include #include #include -#include "apr_network_io.h" -#include "apr_errno.h" -#include "apr_general.h" -#include "apr_poll.h" +#include "fspr_network_io.h" +#include "fspr_errno.h" +#include "fspr_general.h" +#include "fspr_poll.h" #if !APR_HAS_SENDFILE int main(void) @@ -53,103 +53,103 @@ int main(void) typedef enum {BLK, NONBLK, TIMEOUT} client_socket_mode_t; -static void apr_setup(apr_pool_t **p, apr_socket_t **sock, int *family) +static void fspr_setup(fspr_pool_t **p, fspr_socket_t **sock, int *family) { char buf[120]; - apr_status_t rv; + fspr_status_t rv; - rv = apr_initialize(); + rv = fspr_initialize(); if (rv != APR_SUCCESS) { - fprintf(stderr, "apr_initialize()->%d/%s\n", + fprintf(stderr, "fspr_initialize()->%d/%s\n", rv, - apr_strerror(rv, buf, sizeof buf)); + fspr_strerror(rv, buf, sizeof buf)); exit(1); } - atexit(apr_terminate); + atexit(fspr_terminate); - rv = apr_pool_create(p, NULL); + rv = fspr_pool_create(p, NULL); if (rv != APR_SUCCESS) { - fprintf(stderr, "apr_pool_create()->%d/%s\n", + fprintf(stderr, "fspr_pool_create()->%d/%s\n", rv, - apr_strerror(rv, buf, sizeof buf)); + fspr_strerror(rv, buf, sizeof buf)); exit(1); } *sock = NULL; - rv = apr_socket_create(sock, *family, SOCK_STREAM, 0, *p); + rv = fspr_socket_create(sock, *family, SOCK_STREAM, 0, *p); if (rv != APR_SUCCESS) { - fprintf(stderr, "apr_socket_create()->%d/%s\n", + fprintf(stderr, "fspr_socket_create()->%d/%s\n", rv, - apr_strerror(rv, buf, sizeof buf)); + fspr_strerror(rv, buf, sizeof buf)); exit(1); } if (*family == APR_UNSPEC) { - apr_sockaddr_t *localsa; + fspr_sockaddr_t *localsa; - rv = apr_socket_addr_get(&localsa, APR_LOCAL, *sock); + rv = fspr_socket_addr_get(&localsa, APR_LOCAL, *sock); if (rv != APR_SUCCESS) { - fprintf(stderr, "apr_socket_addr_get()->%d/%s\n", + fprintf(stderr, "fspr_socket_addr_get()->%d/%s\n", rv, - apr_strerror(rv, buf, sizeof buf)); + fspr_strerror(rv, buf, sizeof buf)); exit(1); } *family = localsa->family; } } -static void create_testfile(apr_pool_t *p, const char *fname) +static void create_testfile(fspr_pool_t *p, const char *fname) { - apr_file_t *f = NULL; - apr_status_t rv; + fspr_file_t *f = NULL; + fspr_status_t rv; char buf[120]; int i; - apr_finfo_t finfo; + fspr_finfo_t finfo; printf("Creating a test file...\n"); - rv = apr_file_open(&f, fname, + rv = fspr_file_open(&f, fname, APR_CREATE | APR_WRITE | APR_TRUNCATE | APR_BUFFERED, APR_UREAD | APR_UWRITE, p); if (rv) { - fprintf(stderr, "apr_file_open()->%d/%s\n", - rv, apr_strerror(rv, buf, sizeof buf)); + fprintf(stderr, "fspr_file_open()->%d/%s\n", + rv, fspr_strerror(rv, buf, sizeof buf)); exit(1); } buf[0] = FILE_DATA_CHAR; buf[1] = '\0'; for (i = 0; i < FILE_LENGTH; i++) { - /* exercise apr_file_putc() and apr_file_puts() on buffered files */ + /* exercise fspr_file_putc() and fspr_file_puts() on buffered files */ if ((i % 2) == 0) { - rv = apr_file_putc(buf[0], f); + rv = fspr_file_putc(buf[0], f); if (rv) { - fprintf(stderr, "apr_file_putc()->%d/%s\n", - rv, apr_strerror(rv, buf, sizeof buf)); + fprintf(stderr, "fspr_file_putc()->%d/%s\n", + rv, fspr_strerror(rv, buf, sizeof buf)); exit(1); } } else { - rv = apr_file_puts(buf, f); + rv = fspr_file_puts(buf, f); if (rv) { - fprintf(stderr, "apr_file_puts()->%d/%s\n", - rv, apr_strerror(rv, buf, sizeof buf)); + fprintf(stderr, "fspr_file_puts()->%d/%s\n", + rv, fspr_strerror(rv, buf, sizeof buf)); exit(1); } } } - rv = apr_file_close(f); + rv = fspr_file_close(f); if (rv) { - fprintf(stderr, "apr_file_close()->%d/%s\n", - rv, apr_strerror(rv, buf, sizeof buf)); + fprintf(stderr, "fspr_file_close()->%d/%s\n", + rv, fspr_strerror(rv, buf, sizeof buf)); exit(1); } - rv = apr_stat(&finfo, fname, APR_FINFO_NORM, p); + rv = fspr_stat(&finfo, fname, APR_FINFO_NORM, p); if (rv != APR_SUCCESS && rv != APR_INCOMPLETE) { - fprintf(stderr, "apr_stat()->%d/%s\n", - rv, apr_strerror(rv, buf, sizeof buf)); + fprintf(stderr, "fspr_stat()->%d/%s\n", + rv, fspr_strerror(rv, buf, sizeof buf)); exit(1); } @@ -166,52 +166,52 @@ static void create_testfile(apr_pool_t *p, const char *fname) static int client(client_socket_mode_t socket_mode, char *host) { - apr_status_t rv, tmprv; - apr_socket_t *sock; - apr_pool_t *p; + fspr_status_t rv, tmprv; + fspr_socket_t *sock; + fspr_pool_t *p; char buf[120]; - apr_file_t *f = NULL; - apr_size_t len; - apr_size_t expected_len; - apr_off_t current_file_offset; - apr_hdtr_t hdtr; + fspr_file_t *f = NULL; + fspr_size_t len; + fspr_size_t expected_len; + fspr_off_t current_file_offset; + fspr_hdtr_t hdtr; struct iovec headers[3]; struct iovec trailers[3]; - apr_size_t bytes_read; - apr_pollset_t *pset; - apr_int32_t nsocks; + fspr_size_t bytes_read; + fspr_pollset_t *pset; + fspr_int32_t nsocks; int i; int family; - apr_sockaddr_t *destsa; + fspr_sockaddr_t *destsa; family = APR_INET; - apr_setup(&p, &sock, &family); + fspr_setup(&p, &sock, &family); create_testfile(p, TESTFILE); - rv = apr_file_open(&f, TESTFILE, APR_READ, 0, p); + rv = fspr_file_open(&f, TESTFILE, APR_READ, 0, p); if (rv != APR_SUCCESS) { - fprintf(stderr, "apr_file_open()->%d/%s\n", + fprintf(stderr, "fspr_file_open()->%d/%s\n", rv, - apr_strerror(rv, buf, sizeof buf)); + fspr_strerror(rv, buf, sizeof buf)); exit(1); } if (!host) { host = "127.0.0.1"; } - rv = apr_sockaddr_info_get(&destsa, host, family, TESTSF_PORT, 0, p); + rv = fspr_sockaddr_info_get(&destsa, host, family, TESTSF_PORT, 0, p); if (rv != APR_SUCCESS) { - fprintf(stderr, "apr_sockaddr_info_get()->%d/%s\n", + fprintf(stderr, "fspr_sockaddr_info_get()->%d/%s\n", rv, - apr_strerror(rv, buf, sizeof buf)); + fspr_strerror(rv, buf, sizeof buf)); exit(1); } - rv = apr_socket_connect(sock, destsa); + rv = fspr_socket_connect(sock, destsa); if (rv != APR_SUCCESS) { - fprintf(stderr, "apr_socket_connect()->%d/%s\n", + fprintf(stderr, "fspr_socket_connect()->%d/%s\n", rv, - apr_strerror(rv, buf, sizeof buf)); + fspr_strerror(rv, buf, sizeof buf)); exit(1); } @@ -221,21 +221,21 @@ static int client(client_socket_mode_t socket_mode, char *host) break; case NONBLK: /* set it non-blocking */ - rv = apr_socket_opt_set(sock, APR_SO_NONBLOCK, 1); + rv = fspr_socket_opt_set(sock, APR_SO_NONBLOCK, 1); if (rv != APR_SUCCESS) { - fprintf(stderr, "apr_socket_opt_set(APR_SO_NONBLOCK)->%d/%s\n", + fprintf(stderr, "fspr_socket_opt_set(APR_SO_NONBLOCK)->%d/%s\n", rv, - apr_strerror(rv, buf, sizeof buf)); + fspr_strerror(rv, buf, sizeof buf)); exit(1); } break; case TIMEOUT: /* set a timeout */ - rv = apr_socket_timeout_set(sock, 100 * APR_USEC_PER_SEC); + rv = fspr_socket_timeout_set(sock, 100 * APR_USEC_PER_SEC); if (rv != APR_SUCCESS) { - fprintf(stderr, "apr_socket_opt_set(APR_SO_NONBLOCK)->%d/%s\n", + fprintf(stderr, "fspr_socket_opt_set(APR_SO_NONBLOCK)->%d/%s\n", rv, - apr_strerror(rv, buf, sizeof buf)); + fspr_strerror(rv, buf, sizeof buf)); exit(1); } break; @@ -275,36 +275,36 @@ static int client(client_socket_mode_t socket_mode, char *host) if (socket_mode == BLK) { current_file_offset = 0; len = FILE_LENGTH; - rv = apr_socket_sendfile(sock, f, &hdtr, ¤t_file_offset, &len, 0); + rv = fspr_socket_sendfile(sock, f, &hdtr, ¤t_file_offset, &len, 0); if (rv != APR_SUCCESS) { - fprintf(stderr, "apr_socket_sendfile()->%d/%s\n", + fprintf(stderr, "fspr_socket_sendfile()->%d/%s\n", rv, - apr_strerror(rv, buf, sizeof buf)); + fspr_strerror(rv, buf, sizeof buf)); exit(1); } - printf("apr_socket_sendfile() updated offset with %ld\n", + printf("fspr_socket_sendfile() updated offset with %ld\n", (long int)current_file_offset); - printf("apr_socket_sendfile() updated len with %ld\n", + printf("fspr_socket_sendfile() updated len with %ld\n", (long int)len); printf("bytes really sent: %" APR_SIZE_T_FMT "\n", expected_len); if (len != expected_len) { - fprintf(stderr, "apr_socket_sendfile() didn't report the correct " + fprintf(stderr, "fspr_socket_sendfile() didn't report the correct " "number of bytes sent!\n"); exit(1); } } else { /* non-blocking... wooooooo */ - apr_size_t total_bytes_sent; - apr_pollfd_t pfd; + fspr_size_t total_bytes_sent; + fspr_pollfd_t pfd; pset = NULL; - rv = apr_pollset_create(&pset, 1, p, 0); + rv = fspr_pollset_create(&pset, 1, p, 0); assert(!rv); pfd.p = p; pfd.desc_type = APR_POLL_SOCKET; @@ -313,17 +313,17 @@ static int client(client_socket_mode_t socket_mode, char *host) pfd.desc.s = sock; pfd.client_data = NULL; - rv = apr_pollset_add(pset, &pfd); + rv = fspr_pollset_add(pset, &pfd); assert(!rv); total_bytes_sent = 0; current_file_offset = 0; len = FILE_LENGTH; do { - apr_size_t tmplen; + fspr_size_t tmplen; tmplen = len; /* bytes remaining to send from the file */ - printf("Calling apr_socket_sendfile()...\n"); + printf("Calling fspr_socket_sendfile()...\n"); printf("Headers (%d):\n", hdtr.numheaders); for (i = 0; i < hdtr.numheaders; i++) { printf("\t%ld bytes (%c)\n", @@ -338,13 +338,13 @@ static int client(client_socket_mode_t socket_mode, char *host) (long)hdtr.trailers[i].iov_len); } - rv = apr_socket_sendfile(sock, f, &hdtr, ¤t_file_offset, &tmplen, 0); - printf("apr_socket_sendfile()->%d, sent %ld bytes\n", rv, (long)tmplen); + rv = fspr_socket_sendfile(sock, f, &hdtr, ¤t_file_offset, &tmplen, 0); + printf("fspr_socket_sendfile()->%d, sent %ld bytes\n", rv, (long)tmplen); if (rv) { if (APR_STATUS_IS_EAGAIN(rv)) { assert(tmplen == 0); nsocks = 1; - tmprv = apr_pollset_poll(pset, -1, &nsocks, NULL); + tmprv = fspr_pollset_poll(pset, -1, &nsocks, NULL); assert(!tmprv); assert(nsocks == 1); /* continue; */ @@ -426,43 +426,43 @@ static int client(client_socket_mode_t socket_mode, char *host) } current_file_offset = 0; - rv = apr_file_seek(f, APR_CUR, ¤t_file_offset); + rv = fspr_file_seek(f, APR_CUR, ¤t_file_offset); if (rv != APR_SUCCESS) { - fprintf(stderr, "apr_file_seek()->%d/%s\n", + fprintf(stderr, "fspr_file_seek()->%d/%s\n", rv, - apr_strerror(rv, buf, sizeof buf)); + fspr_strerror(rv, buf, sizeof buf)); exit(1); } - printf("After apr_socket_sendfile(), the kernel file pointer is " + printf("After fspr_socket_sendfile(), the kernel file pointer is " "at offset %ld.\n", (long int)current_file_offset); - rv = apr_socket_shutdown(sock, APR_SHUTDOWN_WRITE); + rv = fspr_socket_shutdown(sock, APR_SHUTDOWN_WRITE); if (rv != APR_SUCCESS) { - fprintf(stderr, "apr_socket_shutdown()->%d/%s\n", + fprintf(stderr, "fspr_socket_shutdown()->%d/%s\n", rv, - apr_strerror(rv, buf, sizeof buf)); + fspr_strerror(rv, buf, sizeof buf)); exit(1); } /* in case this is the non-blocking test, set socket timeout; * we're just waiting for EOF */ - rv = apr_socket_timeout_set(sock, apr_time_from_sec(3)); + rv = fspr_socket_timeout_set(sock, fspr_time_from_sec(3)); if (rv != APR_SUCCESS) { - fprintf(stderr, "apr_socket_timeout_set()->%d/%s\n", + fprintf(stderr, "fspr_socket_timeout_set()->%d/%s\n", rv, - apr_strerror(rv, buf, sizeof buf)); + fspr_strerror(rv, buf, sizeof buf)); exit(1); } bytes_read = 1; - rv = apr_socket_recv(sock, buf, &bytes_read); + rv = fspr_socket_recv(sock, buf, &bytes_read); if (rv != APR_EOF) { - fprintf(stderr, "apr_socket_recv()->%d/%s (expected APR_EOF)\n", + fprintf(stderr, "fspr_socket_recv()->%d/%s (expected APR_EOF)\n", rv, - apr_strerror(rv, buf, sizeof buf)); + fspr_strerror(rv, buf, sizeof buf)); exit(1); } if (bytes_read != 0) { @@ -472,13 +472,13 @@ static int client(client_socket_mode_t socket_mode, char *host) exit(1); } - printf("client: apr_socket_sendfile() worked as expected!\n"); + printf("client: fspr_socket_sendfile() worked as expected!\n"); - rv = apr_file_remove(TESTFILE, p); + rv = fspr_file_remove(TESTFILE, p); if (rv != APR_SUCCESS) { - fprintf(stderr, "apr_file_remove()->%d/%s\n", + fprintf(stderr, "fspr_file_remove()->%d/%s\n", rv, - apr_strerror(rv, buf, sizeof buf)); + fspr_strerror(rv, buf, sizeof buf)); exit(1); } @@ -487,58 +487,58 @@ static int client(client_socket_mode_t socket_mode, char *host) static int server(void) { - apr_status_t rv; - apr_socket_t *sock; - apr_pool_t *p; + fspr_status_t rv; + fspr_socket_t *sock; + fspr_pool_t *p; char buf[120]; int i; - apr_socket_t *newsock = NULL; - apr_size_t bytes_read; - apr_sockaddr_t *localsa; + fspr_socket_t *newsock = NULL; + fspr_size_t bytes_read; + fspr_sockaddr_t *localsa; int family; family = APR_UNSPEC; - apr_setup(&p, &sock, &family); + fspr_setup(&p, &sock, &family); - rv = apr_socket_opt_set(sock, APR_SO_REUSEADDR, 1); + rv = fspr_socket_opt_set(sock, APR_SO_REUSEADDR, 1); if (rv != APR_SUCCESS) { - fprintf(stderr, "apr_socket_opt_set()->%d/%s\n", + fprintf(stderr, "fspr_socket_opt_set()->%d/%s\n", rv, - apr_strerror(rv, buf, sizeof buf)); + fspr_strerror(rv, buf, sizeof buf)); exit(1); } - rv = apr_sockaddr_info_get(&localsa, NULL, family, TESTSF_PORT, 0, p); + rv = fspr_sockaddr_info_get(&localsa, NULL, family, TESTSF_PORT, 0, p); if (rv != APR_SUCCESS) { - fprintf(stderr, "apr_sockaddr_info_get()->%d/%s\n", + fprintf(stderr, "fspr_sockaddr_info_get()->%d/%s\n", rv, - apr_strerror(rv, buf, sizeof buf)); + fspr_strerror(rv, buf, sizeof buf)); exit(1); } - rv = apr_socket_bind(sock, localsa); + rv = fspr_socket_bind(sock, localsa); if (rv != APR_SUCCESS) { - fprintf(stderr, "apr_socket_bind()->%d/%s\n", + fprintf(stderr, "fspr_socket_bind()->%d/%s\n", rv, - apr_strerror(rv, buf, sizeof buf)); + fspr_strerror(rv, buf, sizeof buf)); exit(1); } - rv = apr_socket_listen(sock, 5); + rv = fspr_socket_listen(sock, 5); if (rv != APR_SUCCESS) { - fprintf(stderr, "apr_socket_listen()->%d/%s\n", + fprintf(stderr, "fspr_socket_listen()->%d/%s\n", rv, - apr_strerror(rv, buf, sizeof buf)); + fspr_strerror(rv, buf, sizeof buf)); exit(1); } printf("Waiting for a client to connect...\n"); - rv = apr_socket_accept(&newsock, sock, p); + rv = fspr_socket_accept(&newsock, sock, p); if (rv != APR_SUCCESS) { - fprintf(stderr, "apr_socket_accept()->%d/%s\n", + fprintf(stderr, "fspr_socket_accept()->%d/%s\n", rv, - apr_strerror(rv, buf, sizeof buf)); + fspr_strerror(rv, buf, sizeof buf)); exit(1); } @@ -546,11 +546,11 @@ static int server(void) assert(sizeof buf > strlen(HDR1)); bytes_read = strlen(HDR1); - rv = apr_socket_recv(newsock, buf, &bytes_read); + rv = fspr_socket_recv(newsock, buf, &bytes_read); if (rv != APR_SUCCESS) { - fprintf(stderr, "apr_socket_recv()->%d/%s\n", + fprintf(stderr, "fspr_socket_recv()->%d/%s\n", rv, - apr_strerror(rv, buf, sizeof buf)); + fspr_strerror(rv, buf, sizeof buf)); exit(1); } if (bytes_read != strlen(HDR1)) { @@ -566,11 +566,11 @@ static int server(void) assert(sizeof buf > strlen(HDR2)); bytes_read = strlen(HDR2); - rv = apr_socket_recv(newsock, buf, &bytes_read); + rv = fspr_socket_recv(newsock, buf, &bytes_read); if (rv != APR_SUCCESS) { - fprintf(stderr, "apr_socket_recv()->%d/%s\n", + fprintf(stderr, "fspr_socket_recv()->%d/%s\n", rv, - apr_strerror(rv, buf, sizeof buf)); + fspr_strerror(rv, buf, sizeof buf)); exit(1); } if (bytes_read != strlen(HDR2)) { @@ -586,15 +586,15 @@ static int server(void) for (i = 0; i < HDR3_LEN; i++) { bytes_read = 1; - rv = apr_socket_recv(newsock, buf, &bytes_read); + rv = fspr_socket_recv(newsock, buf, &bytes_read); if (rv != APR_SUCCESS) { - fprintf(stderr, "apr_socket_recv()->%d/%s\n", + fprintf(stderr, "fspr_socket_recv()->%d/%s\n", rv, - apr_strerror(rv, buf, sizeof buf)); + fspr_strerror(rv, buf, sizeof buf)); exit(1); } if (bytes_read != 1) { - fprintf(stderr, "apr_socket_recv()->%ld bytes instead of 1\n", + fprintf(stderr, "fspr_socket_recv()->%ld bytes instead of 1\n", (long int)bytes_read); exit(1); } @@ -611,15 +611,15 @@ static int server(void) for (i = 0; i < FILE_LENGTH; i++) { bytes_read = 1; - rv = apr_socket_recv(newsock, buf, &bytes_read); + rv = fspr_socket_recv(newsock, buf, &bytes_read); if (rv != APR_SUCCESS) { - fprintf(stderr, "apr_socket_recv()->%d/%s\n", + fprintf(stderr, "fspr_socket_recv()->%d/%s\n", rv, - apr_strerror(rv, buf, sizeof buf)); + fspr_strerror(rv, buf, sizeof buf)); exit(1); } if (bytes_read != 1) { - fprintf(stderr, "apr_socket_recv()->%ld bytes instead of 1\n", + fprintf(stderr, "fspr_socket_recv()->%ld bytes instead of 1\n", (long int)bytes_read); exit(1); } @@ -636,11 +636,11 @@ static int server(void) assert(sizeof buf > strlen(TRL1)); bytes_read = strlen(TRL1); - rv = apr_socket_recv(newsock, buf, &bytes_read); + rv = fspr_socket_recv(newsock, buf, &bytes_read); if (rv != APR_SUCCESS) { - fprintf(stderr, "apr_socket_recv()->%d/%s\n", + fprintf(stderr, "fspr_socket_recv()->%d/%s\n", rv, - apr_strerror(rv, buf, sizeof buf)); + fspr_strerror(rv, buf, sizeof buf)); exit(1); } if (bytes_read != strlen(TRL1)) { @@ -656,11 +656,11 @@ static int server(void) assert(sizeof buf > strlen(TRL2)); bytes_read = strlen(TRL2); - rv = apr_socket_recv(newsock, buf, &bytes_read); + rv = fspr_socket_recv(newsock, buf, &bytes_read); if (rv != APR_SUCCESS) { - fprintf(stderr, "apr_socket_recv()->%d/%s\n", + fprintf(stderr, "fspr_socket_recv()->%d/%s\n", rv, - apr_strerror(rv, buf, sizeof buf)); + fspr_strerror(rv, buf, sizeof buf)); exit(1); } if (bytes_read != strlen(TRL2)) { @@ -676,15 +676,15 @@ static int server(void) for (i = 0; i < TRL3_LEN; i++) { bytes_read = 1; - rv = apr_socket_recv(newsock, buf, &bytes_read); + rv = fspr_socket_recv(newsock, buf, &bytes_read); if (rv != APR_SUCCESS) { - fprintf(stderr, "apr_socket_recv()->%d/%s\n", + fprintf(stderr, "fspr_socket_recv()->%d/%s\n", rv, - apr_strerror(rv, buf, sizeof buf)); + fspr_strerror(rv, buf, sizeof buf)); exit(1); } if (bytes_read != 1) { - fprintf(stderr, "apr_socket_recv()->%ld bytes instead of 1\n", + fprintf(stderr, "fspr_socket_recv()->%ld bytes instead of 1\n", (long int)bytes_read); exit(1); } @@ -700,11 +700,11 @@ static int server(void) } bytes_read = 1; - rv = apr_socket_recv(newsock, buf, &bytes_read); + rv = fspr_socket_recv(newsock, buf, &bytes_read); if (rv != APR_EOF) { - fprintf(stderr, "apr_socket_recv()->%d/%s (expected APR_EOF)\n", + fprintf(stderr, "fspr_socket_recv()->%d/%s (expected APR_EOF)\n", rv, - apr_strerror(rv, buf, sizeof buf)); + fspr_strerror(rv, buf, sizeof buf)); exit(1); } if (bytes_read != 0) { @@ -714,7 +714,7 @@ static int server(void) exit(1); } - printf("server: apr_socket_sendfile() worked as expected!\n"); + printf("server: fspr_socket_sendfile() worked as expected!\n"); return 0; } diff --git a/libs/apr/test/sockchild.c b/libs/apr/test/sockchild.c index 5c15d113fbe..d1d5e3a8b46 100644 --- a/libs/apr/test/sockchild.c +++ b/libs/apr/test/sockchild.c @@ -16,49 +16,49 @@ #include #include "testsock.h" -#include "apr_network_io.h" -#include "apr_pools.h" +#include "fspr_network_io.h" +#include "fspr_pools.h" int main(int argc, char *argv[]) { - apr_pool_t *p; - apr_socket_t *sock; - apr_status_t rv; - apr_sockaddr_t *remote_sa; + fspr_pool_t *p; + fspr_socket_t *sock; + fspr_status_t rv; + fspr_sockaddr_t *remote_sa; - apr_initialize(); - atexit(apr_terminate); - apr_pool_create(&p, NULL); + fspr_initialize(); + atexit(fspr_terminate); + fspr_pool_create(&p, NULL); if (argc < 2) { exit(-1); } - rv = apr_sockaddr_info_get(&remote_sa, "127.0.0.1", APR_UNSPEC, 8021, 0, p); + rv = fspr_sockaddr_info_get(&remote_sa, "127.0.0.1", APR_UNSPEC, 8021, 0, p); if (rv != APR_SUCCESS) { exit(-1); } - if (apr_socket_create(&sock, remote_sa->family, SOCK_STREAM, 0, + if (fspr_socket_create(&sock, remote_sa->family, SOCK_STREAM, 0, p) != APR_SUCCESS) { exit(-1); } - rv = apr_socket_timeout_set(sock, apr_time_from_sec(3)); + rv = fspr_socket_timeout_set(sock, fspr_time_from_sec(3)); if (rv) { exit(-1); } - apr_socket_connect(sock, remote_sa); + fspr_socket_connect(sock, remote_sa); if (!strcmp("read", argv[1])) { char datarecv[STRLEN]; - apr_size_t length = STRLEN; - apr_status_t rv; + fspr_size_t length = STRLEN; + fspr_status_t rv; memset(datarecv, 0, STRLEN); - rv = apr_socket_recv(sock, datarecv, &length); - apr_socket_close(sock); + rv = fspr_socket_recv(sock, datarecv, &length); + fspr_socket_close(sock); if (APR_STATUS_IS_TIMEUP(rv)) { exit(SOCKET_TIMEOUT); } @@ -70,10 +70,10 @@ int main(int argc, char *argv[]) exit(length); } else if (!strcmp("write", argv[1])) { - apr_size_t length = strlen(DATASTR); - apr_socket_send(sock, DATASTR, &length); + fspr_size_t length = strlen(DATASTR); + fspr_socket_send(sock, DATASTR, &length); - apr_socket_close(sock); + fspr_socket_close(sock); exit(length); } exit(-1); diff --git a/libs/apr/test/testapp.c b/libs/apr/test/testapp.c index 77607aa388f..53b3dfedb3e 100644 --- a/libs/apr/test/testapp.c +++ b/libs/apr/test/testapp.c @@ -1,10 +1,10 @@ -#include -#include +#include +#include int main(int argc, const char * const * argv, const char * const *env) { - apr_app_initialize(&argc, &argv, &env); + fspr_app_initialize(&argc, &argv, &env); - apr_terminate(); + fspr_terminate(); } diff --git a/libs/apr/test/testargs.c b/libs/apr/test/testargs.c index cb501924f1b..9aab69e4f2c 100644 --- a/libs/apr/test/testargs.c +++ b/libs/apr/test/testargs.c @@ -14,19 +14,19 @@ * limitations under the License. */ -#include "apr_errno.h" -#include "apr_general.h" -#include "apr_getopt.h" -#include "apr_strings.h" +#include "fspr_errno.h" +#include "fspr_general.h" +#include "fspr_getopt.h" +#include "fspr_strings.h" #include "testutil.h" static void format_arg(char *str, char option, const char *arg) { if (arg) { - apr_snprintf(str, 8196, "%soption: %c with %s\n", str, option, arg); + fspr_snprintf(str, 8196, "%soption: %c with %s\n", str, option, arg); } else { - apr_snprintf(str, 8196, "%soption: %c\n", str, option); + fspr_snprintf(str, 8196, "%soption: %c\n", str, option); } } @@ -35,7 +35,7 @@ static void unknown_arg(void *str, const char *err, ...) va_list va; va_start(va, err); - apr_vsnprintf(str, 8196, err, va); + fspr_vsnprintf(str, 8196, err, va); va_end(va); } @@ -43,17 +43,17 @@ static void no_options_found(abts_case *tc, void *data) { int largc = 5; const char * const largv[] = {"testprog", "-a", "-b", "-c", "-d"}; - apr_getopt_t *opt; - apr_status_t rv; + fspr_getopt_t *opt; + fspr_status_t rv; char ch; const char *optarg; char str[8196]; str[0] = '\0'; - rv = apr_getopt_init(&opt, p, largc, largv); + rv = fspr_getopt_init(&opt, p, largc, largv); ABTS_INT_EQUAL(tc, APR_SUCCESS, rv); - while (apr_getopt(opt, "abcd", &ch, &optarg) == APR_SUCCESS) { + while (fspr_getopt(opt, "abcd", &ch, &optarg) == APR_SUCCESS) { switch (ch) { case 'a': case 'b': @@ -73,20 +73,20 @@ static void no_options(abts_case *tc, void *data) { int largc = 5; const char * const largv[] = {"testprog", "-a", "-b", "-c", "-d"}; - apr_getopt_t *opt; - apr_status_t rv; + fspr_getopt_t *opt; + fspr_status_t rv; char ch; const char *optarg; char str[8196]; str[0] = '\0'; - rv = apr_getopt_init(&opt, p, largc, largv); + rv = fspr_getopt_init(&opt, p, largc, largv); ABTS_INT_EQUAL(tc, APR_SUCCESS, rv); opt->errfn = unknown_arg; opt->errarg = str; - while (apr_getopt(opt, "efgh", &ch, &optarg) == APR_SUCCESS) { + while (fspr_getopt(opt, "efgh", &ch, &optarg) == APR_SUCCESS) { switch (ch) { case 'a': case 'b': @@ -105,20 +105,20 @@ static void required_option(abts_case *tc, void *data) { int largc = 3; const char * const largv[] = {"testprog", "-a", "foo"}; - apr_getopt_t *opt; - apr_status_t rv; + fspr_getopt_t *opt; + fspr_status_t rv; char ch; const char *optarg; char str[8196]; str[0] = '\0'; - rv = apr_getopt_init(&opt, p, largc, largv); + rv = fspr_getopt_init(&opt, p, largc, largv); ABTS_INT_EQUAL(tc, APR_SUCCESS, rv); opt->errfn = unknown_arg; opt->errarg = str; - while (apr_getopt(opt, "a:", &ch, &optarg) == APR_SUCCESS) { + while (fspr_getopt(opt, "a:", &ch, &optarg) == APR_SUCCESS) { switch (ch) { case 'a': format_arg(str, ch, optarg); @@ -134,20 +134,20 @@ static void required_option_notgiven(abts_case *tc, void *data) { int largc = 2; const char * const largv[] = {"testprog", "-a"}; - apr_getopt_t *opt; - apr_status_t rv; + fspr_getopt_t *opt; + fspr_status_t rv; char ch; const char *optarg; char str[8196]; str[0] = '\0'; - rv = apr_getopt_init(&opt, p, largc, largv); + rv = fspr_getopt_init(&opt, p, largc, largv); ABTS_INT_EQUAL(tc, APR_SUCCESS, rv); opt->errfn = unknown_arg; opt->errarg = str; - while (apr_getopt(opt, "a:", &ch, &optarg) == APR_SUCCESS) { + while (fspr_getopt(opt, "a:", &ch, &optarg) == APR_SUCCESS) { switch (ch) { case 'a': format_arg(str, ch, optarg); @@ -163,20 +163,20 @@ static void optional_option(abts_case *tc, void *data) { int largc = 3; const char * const largv[] = {"testprog", "-a", "foo"}; - apr_getopt_t *opt; - apr_status_t rv; + fspr_getopt_t *opt; + fspr_status_t rv; char ch; const char *optarg; char str[8196]; str[0] = '\0'; - rv = apr_getopt_init(&opt, p, largc, largv); + rv = fspr_getopt_init(&opt, p, largc, largv); ABTS_INT_EQUAL(tc, APR_SUCCESS, rv); opt->errfn = unknown_arg; opt->errarg = str; - while (apr_getopt(opt, "a::", &ch, &optarg) == APR_SUCCESS) { + while (fspr_getopt(opt, "a::", &ch, &optarg) == APR_SUCCESS) { switch (ch) { case 'a': format_arg(str, ch, optarg); @@ -192,20 +192,20 @@ static void optional_option_notgiven(abts_case *tc, void *data) { int largc = 2; const char * const largv[] = {"testprog", "-a"}; - apr_getopt_t *opt; - apr_status_t rv; + fspr_getopt_t *opt; + fspr_status_t rv; char ch; const char *optarg; char str[8196]; str[0] = '\0'; - rv = apr_getopt_init(&opt, p, largc, largv); + rv = fspr_getopt_init(&opt, p, largc, largv); ABTS_INT_EQUAL(tc, APR_SUCCESS, rv); opt->errfn = unknown_arg; opt->errarg = str; - while (apr_getopt(opt, "a::", &ch, &optarg) == APR_SUCCESS) { + while (fspr_getopt(opt, "a::", &ch, &optarg) == APR_SUCCESS) { switch (ch) { case 'a': format_arg(str, ch, optarg); diff --git a/libs/apr/test/testatomic.c b/libs/apr/test/testatomic.c index 7fae5c759f7..c3ae0957984 100644 --- a/libs/apr/test/testatomic.c +++ b/libs/apr/test/testatomic.c @@ -15,12 +15,12 @@ */ #include "testutil.h" -#include "apr_strings.h" -#include "apr_thread_proc.h" -#include "apr_errno.h" -#include "apr_general.h" -#include "apr_atomic.h" -#include "apr_time.h" +#include "fspr_strings.h" +#include "fspr_thread_proc.h" +#include "fspr_errno.h" +#include "fspr_general.h" +#include "fspr_atomic.h" +#include "fspr_time.h" /* Use pthread_setconcurrency where it is available and not a nullop, * i.e. platforms using M:N or M:1 thread models: */ @@ -36,46 +36,46 @@ static void test_init(abts_case *tc, void *data) { - APR_ASSERT_SUCCESS(tc, "Could not initliaze atomics", apr_atomic_init(p)); + APR_ASSERT_SUCCESS(tc, "Could not initliaze atomics", fspr_atomic_init(p)); } static void test_set32(abts_case *tc, void *data) { - apr_uint32_t y32; - apr_atomic_set32(&y32, 2); + fspr_uint32_t y32; + fspr_atomic_set32(&y32, 2); ABTS_INT_EQUAL(tc, 2, y32); } static void test_read32(abts_case *tc, void *data) { - apr_uint32_t y32; - apr_atomic_set32(&y32, 2); - ABTS_INT_EQUAL(tc, 2, apr_atomic_read32(&y32)); + fspr_uint32_t y32; + fspr_atomic_set32(&y32, 2); + ABTS_INT_EQUAL(tc, 2, fspr_atomic_read32(&y32)); } static void test_dec32(abts_case *tc, void *data) { - apr_uint32_t y32; + fspr_uint32_t y32; int rv; - apr_atomic_set32(&y32, 2); + fspr_atomic_set32(&y32, 2); - rv = apr_atomic_dec32(&y32); + rv = fspr_atomic_dec32(&y32); ABTS_INT_EQUAL(tc, 1, y32); ABTS_ASSERT(tc, "atomic_dec returned zero when it shouldn't", rv != 0); - rv = apr_atomic_dec32(&y32); + rv = fspr_atomic_dec32(&y32); ABTS_INT_EQUAL(tc, 0, y32); ABTS_ASSERT(tc, "atomic_dec didn't returned zero when it should", rv == 0); } static void test_xchg32(abts_case *tc, void *data) { - apr_uint32_t oldval; - apr_uint32_t y32; + fspr_uint32_t oldval; + fspr_uint32_t y32; - apr_atomic_set32(&y32, 100); - oldval = apr_atomic_xchg32(&y32, 50); + fspr_atomic_set32(&y32, 100); + oldval = fspr_atomic_xchg32(&y32, 50); ABTS_INT_EQUAL(tc, 100, oldval); ABTS_INT_EQUAL(tc, 50, y32); @@ -83,182 +83,182 @@ static void test_xchg32(abts_case *tc, void *data) static void test_cas_equal(abts_case *tc, void *data) { - apr_uint32_t casval = 0; - apr_uint32_t oldval; + fspr_uint32_t casval = 0; + fspr_uint32_t oldval; - oldval = apr_atomic_cas32(&casval, 12, 0); + oldval = fspr_atomic_cas32(&casval, 12, 0); ABTS_INT_EQUAL(tc, 0, oldval); ABTS_INT_EQUAL(tc, 12, casval); } static void test_cas_equal_nonnull(abts_case *tc, void *data) { - apr_uint32_t casval = 12; - apr_uint32_t oldval; + fspr_uint32_t casval = 12; + fspr_uint32_t oldval; - oldval = apr_atomic_cas32(&casval, 23, 12); + oldval = fspr_atomic_cas32(&casval, 23, 12); ABTS_INT_EQUAL(tc, 12, oldval); ABTS_INT_EQUAL(tc, 23, casval); } static void test_cas_notequal(abts_case *tc, void *data) { - apr_uint32_t casval = 12; - apr_uint32_t oldval; + fspr_uint32_t casval = 12; + fspr_uint32_t oldval; - oldval = apr_atomic_cas32(&casval, 23, 2); + oldval = fspr_atomic_cas32(&casval, 23, 2); ABTS_INT_EQUAL(tc, 12, oldval); ABTS_INT_EQUAL(tc, 12, casval); } static void test_add32(abts_case *tc, void *data) { - apr_uint32_t oldval; - apr_uint32_t y32; + fspr_uint32_t oldval; + fspr_uint32_t y32; - apr_atomic_set32(&y32, 23); - oldval = apr_atomic_add32(&y32, 4); + fspr_atomic_set32(&y32, 23); + oldval = fspr_atomic_add32(&y32, 4); ABTS_INT_EQUAL(tc, 23, oldval); ABTS_INT_EQUAL(tc, 27, y32); } static void test_inc32(abts_case *tc, void *data) { - apr_uint32_t oldval; - apr_uint32_t y32; + fspr_uint32_t oldval; + fspr_uint32_t y32; - apr_atomic_set32(&y32, 23); - oldval = apr_atomic_inc32(&y32); + fspr_atomic_set32(&y32, 23); + oldval = fspr_atomic_inc32(&y32); ABTS_INT_EQUAL(tc, 23, oldval); ABTS_INT_EQUAL(tc, 24, y32); } static void test_set_add_inc_sub(abts_case *tc, void *data) { - apr_uint32_t y32; + fspr_uint32_t y32; - apr_atomic_set32(&y32, 0); - apr_atomic_add32(&y32, 20); - apr_atomic_inc32(&y32); - apr_atomic_sub32(&y32, 10); + fspr_atomic_set32(&y32, 0); + fspr_atomic_add32(&y32, 20); + fspr_atomic_inc32(&y32); + fspr_atomic_sub32(&y32, 10); ABTS_INT_EQUAL(tc, 11, y32); } static void test_wrap_zero(abts_case *tc, void *data) { - apr_uint32_t y32; - apr_uint32_t rv; - apr_uint32_t minus1 = -1; + fspr_uint32_t y32; + fspr_uint32_t rv; + fspr_uint32_t minus1 = -1; char *str; - apr_atomic_set32(&y32, 0); - rv = apr_atomic_dec32(&y32); + fspr_atomic_set32(&y32, 0); + rv = fspr_atomic_dec32(&y32); - ABTS_ASSERT(tc, "apr_atomic_dec32 on zero returned zero.", rv != 0); - str = apr_psprintf(p, "zero wrap failed: 0 - 1 = %d", y32); + ABTS_ASSERT(tc, "fspr_atomic_dec32 on zero returned zero.", rv != 0); + str = fspr_psprintf(p, "zero wrap failed: 0 - 1 = %d", y32); ABTS_ASSERT(tc, str, y32 == minus1); } static void test_inc_neg1(abts_case *tc, void *data) { - apr_uint32_t y32 = -1; - apr_uint32_t minus1 = -1; - apr_uint32_t rv; + fspr_uint32_t y32 = -1; + fspr_uint32_t minus1 = -1; + fspr_uint32_t rv; char *str; - rv = apr_atomic_inc32(&y32); + rv = fspr_atomic_inc32(&y32); - ABTS_ASSERT(tc, "apr_atomic_dec32 on zero returned zero.", rv == minus1); - str = apr_psprintf(p, "zero wrap failed: -1 + 1 = %d", y32); + ABTS_ASSERT(tc, "fspr_atomic_dec32 on zero returned zero.", rv == minus1); + str = fspr_psprintf(p, "zero wrap failed: -1 + 1 = %d", y32); ABTS_ASSERT(tc, str, y32 == 0); } #if APR_HAS_THREADS -void * APR_THREAD_FUNC thread_func_mutex(apr_thread_t *thd, void *data); -void * APR_THREAD_FUNC thread_func_atomic(apr_thread_t *thd, void *data); -void * APR_THREAD_FUNC thread_func_none(apr_thread_t *thd, void *data); +void * APR_THREAD_FUNC thread_func_mutex(fspr_thread_t *thd, void *data); +void * APR_THREAD_FUNC thread_func_atomic(fspr_thread_t *thd, void *data); +void * APR_THREAD_FUNC thread_func_none(fspr_thread_t *thd, void *data); -apr_thread_mutex_t *thread_lock; -volatile apr_uint32_t x = 0; /* mutex locks */ -volatile apr_uint32_t y = 0; /* atomic operations */ -volatile apr_uint32_t z = 0; /* no locks */ -apr_status_t exit_ret_val = 123; /* just some made up number to check on later */ +fspr_thread_mutex_t *thread_lock; +volatile fspr_uint32_t x = 0; /* mutex locks */ +volatile fspr_uint32_t y = 0; /* atomic operations */ +volatile fspr_uint32_t z = 0; /* no locks */ +fspr_status_t exit_ret_val = 123; /* just some made up number to check on later */ #define NUM_THREADS 40 #define NUM_ITERATIONS 20000 -void * APR_THREAD_FUNC thread_func_mutex(apr_thread_t *thd, void *data) +void * APR_THREAD_FUNC thread_func_mutex(fspr_thread_t *thd, void *data) { int i; for (i = 0; i < NUM_ITERATIONS; i++) { - apr_thread_mutex_lock(thread_lock); + fspr_thread_mutex_lock(thread_lock); x++; - apr_thread_mutex_unlock(thread_lock); + fspr_thread_mutex_unlock(thread_lock); } - apr_thread_exit(thd, exit_ret_val); + fspr_thread_exit(thd, exit_ret_val); return NULL; } -void * APR_THREAD_FUNC thread_func_atomic(apr_thread_t *thd, void *data) +void * APR_THREAD_FUNC thread_func_atomic(fspr_thread_t *thd, void *data) { int i; for (i = 0; i < NUM_ITERATIONS ; i++) { - apr_atomic_inc32(&y); - apr_atomic_add32(&y, 2); - apr_atomic_dec32(&y); - apr_atomic_dec32(&y); + fspr_atomic_inc32(&y); + fspr_atomic_add32(&y, 2); + fspr_atomic_dec32(&y); + fspr_atomic_dec32(&y); } - apr_thread_exit(thd, exit_ret_val); + fspr_thread_exit(thd, exit_ret_val); return NULL; } -void * APR_THREAD_FUNC thread_func_none(apr_thread_t *thd, void *data) +void * APR_THREAD_FUNC thread_func_none(fspr_thread_t *thd, void *data) { int i; for (i = 0; i < NUM_ITERATIONS ; i++) { z++; } - apr_thread_exit(thd, exit_ret_val); + fspr_thread_exit(thd, exit_ret_val); return NULL; } static void test_atomics_threaded(abts_case *tc, void *data) { - apr_thread_t *t1[NUM_THREADS]; - apr_thread_t *t2[NUM_THREADS]; - apr_thread_t *t3[NUM_THREADS]; - apr_status_t s1[NUM_THREADS]; - apr_status_t s2[NUM_THREADS]; - apr_status_t s3[NUM_THREADS]; - apr_status_t rv; + fspr_thread_t *t1[NUM_THREADS]; + fspr_thread_t *t2[NUM_THREADS]; + fspr_thread_t *t3[NUM_THREADS]; + fspr_status_t s1[NUM_THREADS]; + fspr_status_t s2[NUM_THREADS]; + fspr_status_t s3[NUM_THREADS]; + fspr_status_t rv; int i; #ifdef HAVE_PTHREAD_SETCONCURRENCY pthread_setconcurrency(8); #endif - rv = apr_thread_mutex_create(&thread_lock, APR_THREAD_MUTEX_DEFAULT, p); + rv = fspr_thread_mutex_create(&thread_lock, APR_THREAD_MUTEX_DEFAULT, p); APR_ASSERT_SUCCESS(tc, "Could not create lock", rv); for (i = 0; i < NUM_THREADS; i++) { - apr_status_t r1, r2, r3; - r1 = apr_thread_create(&t1[i], NULL, thread_func_mutex, NULL, p); - r2 = apr_thread_create(&t2[i], NULL, thread_func_atomic, NULL, p); - r3 = apr_thread_create(&t3[i], NULL, thread_func_none, NULL, p); + fspr_status_t r1, r2, r3; + r1 = fspr_thread_create(&t1[i], NULL, thread_func_mutex, NULL, p); + r2 = fspr_thread_create(&t2[i], NULL, thread_func_atomic, NULL, p); + r3 = fspr_thread_create(&t3[i], NULL, thread_func_none, NULL, p); ABTS_ASSERT(tc, "Failed creating threads", r1 == APR_SUCCESS && r2 == APR_SUCCESS && r3 == APR_SUCCESS); } for (i = 0; i < NUM_THREADS; i++) { - apr_thread_join(&s1[i], t1[i]); - apr_thread_join(&s2[i], t2[i]); - apr_thread_join(&s3[i], t3[i]); + fspr_thread_join(&s1[i], t1[i]); + fspr_thread_join(&s2[i], t2[i]); + fspr_thread_join(&s3[i], t3[i]); ABTS_ASSERT(tc, "Invalid return value from thread_join", s1[i] == exit_ret_val && s2[i] == exit_ret_val && @@ -266,7 +266,7 @@ static void test_atomics_threaded(abts_case *tc, void *data) } ABTS_INT_EQUAL(tc, x, NUM_THREADS * NUM_ITERATIONS); - ABTS_INT_EQUAL(tc, apr_atomic_read32(&y), NUM_THREADS * NUM_ITERATIONS); + ABTS_INT_EQUAL(tc, fspr_atomic_read32(&y), NUM_THREADS * NUM_ITERATIONS); /* Comment out this test, because I have no clue what this test is * actually telling us. We are checking something that may or may not * be true, and it isn't really testing APR at all. diff --git a/libs/apr/test/testdir.c b/libs/apr/test/testdir.c index 82f145d6f1f..97c21cc3659 100644 --- a/libs/apr/test/testdir.c +++ b/libs/apr/test/testdir.c @@ -17,204 +17,204 @@ #include #include #include -#include "apr_file_io.h" -#include "apr_file_info.h" -#include "apr_errno.h" -#include "apr_general.h" -#include "apr_lib.h" +#include "fspr_file_io.h" +#include "fspr_file_info.h" +#include "fspr_errno.h" +#include "fspr_general.h" +#include "fspr_lib.h" #include "testutil.h" static void test_mkdir(abts_case *tc, void *data) { - apr_status_t rv; - apr_finfo_t finfo; + fspr_status_t rv; + fspr_finfo_t finfo; - rv = apr_dir_make("data/testdir", APR_UREAD | APR_UWRITE | APR_UEXECUTE, p); + rv = fspr_dir_make("data/testdir", APR_UREAD | APR_UWRITE | APR_UEXECUTE, p); ABTS_INT_EQUAL(tc, APR_SUCCESS, rv); - rv = apr_stat(&finfo, "data/testdir", APR_FINFO_TYPE, p); + rv = fspr_stat(&finfo, "data/testdir", APR_FINFO_TYPE, p); ABTS_INT_EQUAL(tc, APR_SUCCESS, rv); ABTS_INT_EQUAL(tc, APR_DIR, finfo.filetype); } static void test_mkdir_recurs(abts_case *tc, void *data) { - apr_status_t rv; - apr_finfo_t finfo; + fspr_status_t rv; + fspr_finfo_t finfo; - rv = apr_dir_make_recursive("data/one/two/three", + rv = fspr_dir_make_recursive("data/one/two/three", APR_UREAD | APR_UWRITE | APR_UEXECUTE, p); ABTS_INT_EQUAL(tc, APR_SUCCESS, rv); - rv = apr_stat(&finfo, "data/one", APR_FINFO_TYPE, p); + rv = fspr_stat(&finfo, "data/one", APR_FINFO_TYPE, p); ABTS_INT_EQUAL(tc, APR_SUCCESS, rv); ABTS_INT_EQUAL(tc, APR_DIR, finfo.filetype); - rv = apr_stat(&finfo, "data/one/two", APR_FINFO_TYPE, p); + rv = fspr_stat(&finfo, "data/one/two", APR_FINFO_TYPE, p); ABTS_INT_EQUAL(tc, APR_SUCCESS, rv); ABTS_INT_EQUAL(tc, APR_DIR, finfo.filetype); - rv = apr_stat(&finfo, "data/one/two/three", APR_FINFO_TYPE, p); + rv = fspr_stat(&finfo, "data/one/two/three", APR_FINFO_TYPE, p); ABTS_INT_EQUAL(tc, APR_SUCCESS, rv); ABTS_INT_EQUAL(tc, APR_DIR, finfo.filetype); } static void test_remove(abts_case *tc, void *data) { - apr_status_t rv; - apr_finfo_t finfo; + fspr_status_t rv; + fspr_finfo_t finfo; - rv = apr_dir_remove("data/testdir", p); + rv = fspr_dir_remove("data/testdir", p); ABTS_INT_EQUAL(tc, APR_SUCCESS, rv); - rv = apr_stat(&finfo, "data/testdir", APR_FINFO_TYPE, p); + rv = fspr_stat(&finfo, "data/testdir", APR_FINFO_TYPE, p); ABTS_INT_EQUAL(tc, 1, APR_STATUS_IS_ENOENT(rv)); } static void test_removeall_fail(abts_case *tc, void *data) { - apr_status_t rv; + fspr_status_t rv; - rv = apr_dir_remove("data/one", p); + rv = fspr_dir_remove("data/one", p); ABTS_INT_EQUAL(tc, 1, APR_STATUS_IS_ENOTEMPTY(rv)); } static void test_removeall(abts_case *tc, void *data) { - apr_status_t rv; + fspr_status_t rv; - rv = apr_dir_remove("data/one/two/three", p); + rv = fspr_dir_remove("data/one/two/three", p); ABTS_INT_EQUAL(tc, APR_SUCCESS, rv); - rv = apr_dir_remove("data/one/two", p); + rv = fspr_dir_remove("data/one/two", p); ABTS_INT_EQUAL(tc, APR_SUCCESS, rv); - rv = apr_dir_remove("data/one", p); + rv = fspr_dir_remove("data/one", p); ABTS_INT_EQUAL(tc, APR_SUCCESS, rv); } static void test_remove_notthere(abts_case *tc, void *data) { - apr_status_t rv; + fspr_status_t rv; - rv = apr_dir_remove("data/notthere", p); + rv = fspr_dir_remove("data/notthere", p); ABTS_INT_EQUAL(tc, 1, APR_STATUS_IS_ENOENT(rv)); } static void test_mkdir_twice(abts_case *tc, void *data) { - apr_status_t rv; + fspr_status_t rv; - rv = apr_dir_make("data/testdir", APR_UREAD | APR_UWRITE | APR_UEXECUTE, p); + rv = fspr_dir_make("data/testdir", APR_UREAD | APR_UWRITE | APR_UEXECUTE, p); ABTS_INT_EQUAL(tc, APR_SUCCESS, rv); - rv = apr_dir_make("data/testdir", APR_UREAD | APR_UWRITE | APR_UEXECUTE, p); + rv = fspr_dir_make("data/testdir", APR_UREAD | APR_UWRITE | APR_UEXECUTE, p); ABTS_INT_EQUAL(tc, 1, APR_STATUS_IS_EEXIST(rv)); - rv = apr_dir_remove("data/testdir", p); + rv = fspr_dir_remove("data/testdir", p); ABTS_INT_EQUAL(tc, APR_SUCCESS, rv); } static void test_opendir(abts_case *tc, void *data) { - apr_status_t rv; - apr_dir_t *dir; + fspr_status_t rv; + fspr_dir_t *dir; - rv = apr_dir_open(&dir, "data", p); + rv = fspr_dir_open(&dir, "data", p); ABTS_INT_EQUAL(tc, APR_SUCCESS, rv); - apr_dir_close(dir); + fspr_dir_close(dir); } static void test_opendir_notthere(abts_case *tc, void *data) { - apr_status_t rv; - apr_dir_t *dir; + fspr_status_t rv; + fspr_dir_t *dir; - rv = apr_dir_open(&dir, "notthere", p); + rv = fspr_dir_open(&dir, "notthere", p); ABTS_INT_EQUAL(tc, 1, APR_STATUS_IS_ENOENT(rv)); } static void test_closedir(abts_case *tc, void *data) { - apr_status_t rv; - apr_dir_t *dir; + fspr_status_t rv; + fspr_dir_t *dir; - rv = apr_dir_open(&dir, "data", p); + rv = fspr_dir_open(&dir, "data", p); ABTS_INT_EQUAL(tc, APR_SUCCESS, rv); - rv = apr_dir_close(dir); + rv = fspr_dir_close(dir); ABTS_INT_EQUAL(tc, APR_SUCCESS, rv); } static void test_rewind(abts_case *tc, void *data) { - apr_dir_t *dir; - apr_finfo_t first, second; + fspr_dir_t *dir; + fspr_finfo_t first, second; - APR_ASSERT_SUCCESS(tc, "apr_dir_open failed", apr_dir_open(&dir, "data", p)); + APR_ASSERT_SUCCESS(tc, "fspr_dir_open failed", fspr_dir_open(&dir, "data", p)); - APR_ASSERT_SUCCESS(tc, "apr_dir_read failed", - apr_dir_read(&first, APR_FINFO_DIRENT, dir)); + APR_ASSERT_SUCCESS(tc, "fspr_dir_read failed", + fspr_dir_read(&first, APR_FINFO_DIRENT, dir)); - APR_ASSERT_SUCCESS(tc, "apr_dir_rewind failed", apr_dir_rewind(dir)); + APR_ASSERT_SUCCESS(tc, "fspr_dir_rewind failed", fspr_dir_rewind(dir)); - APR_ASSERT_SUCCESS(tc, "second apr_dir_read failed", - apr_dir_read(&second, APR_FINFO_DIRENT, dir)); + APR_ASSERT_SUCCESS(tc, "second fspr_dir_read failed", + fspr_dir_read(&second, APR_FINFO_DIRENT, dir)); - APR_ASSERT_SUCCESS(tc, "apr_dir_close failed", apr_dir_close(dir)); + APR_ASSERT_SUCCESS(tc, "fspr_dir_close failed", fspr_dir_close(dir)); ABTS_STR_EQUAL(tc, first.name, second.name); } -/* Test for a (fixed) bug in apr_dir_read(). This bug only happened +/* Test for a (fixed) bug in fspr_dir_read(). This bug only happened in threadless cases. */ static void test_uncleared_errno(abts_case *tc, void *data) { - apr_file_t *thefile = NULL; - apr_finfo_t finfo; - apr_int32_t finfo_flags = APR_FINFO_TYPE | APR_FINFO_NAME; - apr_dir_t *this_dir; - apr_status_t rv; + fspr_file_t *thefile = NULL; + fspr_finfo_t finfo; + fspr_int32_t finfo_flags = APR_FINFO_TYPE | APR_FINFO_NAME; + fspr_dir_t *this_dir; + fspr_status_t rv; - rv = apr_dir_make("dir1", APR_OS_DEFAULT, p); + rv = fspr_dir_make("dir1", APR_OS_DEFAULT, p); ABTS_INT_EQUAL(tc, APR_SUCCESS, rv); - rv = apr_dir_make("dir2", APR_OS_DEFAULT, p); + rv = fspr_dir_make("dir2", APR_OS_DEFAULT, p); ABTS_INT_EQUAL(tc, APR_SUCCESS, rv); - rv = apr_file_open(&thefile, "dir1/file1", + rv = fspr_file_open(&thefile, "dir1/file1", APR_READ | APR_WRITE | APR_CREATE, APR_OS_DEFAULT, p); ABTS_INT_EQUAL(tc, APR_SUCCESS, rv); - rv = apr_file_close(thefile); + rv = fspr_file_close(thefile); ABTS_INT_EQUAL(tc, APR_SUCCESS, rv); /* Try to remove dir1. This should fail because it's not empty. However, on a platform with threads disabled (such as FreeBSD), `errno' will be set as a result. */ - rv = apr_dir_remove("dir1", p); + rv = fspr_dir_remove("dir1", p); ABTS_INT_EQUAL(tc, 1, APR_STATUS_IS_ENOTEMPTY(rv)); /* Read `.' and `..' out of dir2. */ - rv = apr_dir_open(&this_dir, "dir2", p); + rv = fspr_dir_open(&this_dir, "dir2", p); ABTS_INT_EQUAL(tc, APR_SUCCESS, rv); - rv = apr_dir_read(&finfo, finfo_flags, this_dir); + rv = fspr_dir_read(&finfo, finfo_flags, this_dir); ABTS_INT_EQUAL(tc, APR_SUCCESS, rv); - rv = apr_dir_read(&finfo, finfo_flags, this_dir); + rv = fspr_dir_read(&finfo, finfo_flags, this_dir); ABTS_INT_EQUAL(tc, APR_SUCCESS, rv); /* Now, when we attempt to do a third read of empty dir2, and the underlying system readdir() returns NULL, the old value of errno shouldn't cause a false alarm. We should get an ENOENT - back from apr_dir_read, and *not* the old errno. */ - rv = apr_dir_read(&finfo, finfo_flags, this_dir); + back from fspr_dir_read, and *not* the old errno. */ + rv = fspr_dir_read(&finfo, finfo_flags, this_dir); ABTS_INT_EQUAL(tc, 1, APR_STATUS_IS_ENOENT(rv)); - rv = apr_dir_close(this_dir); + rv = fspr_dir_close(this_dir); ABTS_INT_EQUAL(tc, APR_SUCCESS, rv); /* Cleanup */ - rv = apr_file_remove("dir1/file1", p); + rv = fspr_file_remove("dir1/file1", p); ABTS_INT_EQUAL(tc, APR_SUCCESS, rv); - rv = apr_dir_remove("dir1", p); + rv = fspr_dir_remove("dir1", p); ABTS_INT_EQUAL(tc, APR_SUCCESS, rv); - rv = apr_dir_remove("dir2", p); + rv = fspr_dir_remove("dir2", p); ABTS_INT_EQUAL(tc, APR_SUCCESS, rv); } @@ -222,30 +222,30 @@ static void test_uncleared_errno(abts_case *tc, void *data) static void test_rmkdir_nocwd(abts_case *tc, void *data) { char *cwd, *path; - apr_status_t rv; + fspr_status_t rv; APR_ASSERT_SUCCESS(tc, "make temp dir", - apr_dir_make("dir3", APR_OS_DEFAULT, p)); + fspr_dir_make("dir3", APR_OS_DEFAULT, p)); - APR_ASSERT_SUCCESS(tc, "obtain cwd", apr_filepath_get(&cwd, 0, p)); + APR_ASSERT_SUCCESS(tc, "obtain cwd", fspr_filepath_get(&cwd, 0, p)); APR_ASSERT_SUCCESS(tc, "determine path to temp dir", - apr_filepath_merge(&path, cwd, "dir3", 0, p)); + fspr_filepath_merge(&path, cwd, "dir3", 0, p)); - APR_ASSERT_SUCCESS(tc, "change to temp dir", apr_filepath_set(path, p)); + APR_ASSERT_SUCCESS(tc, "change to temp dir", fspr_filepath_set(path, p)); - rv = apr_dir_remove(path, p); + rv = fspr_dir_remove(path, p); /* Some platforms cannot remove a directory which is in use. */ if (rv == APR_SUCCESS) { ABTS_ASSERT(tc, "fail to create dir", - apr_dir_make_recursive("foobar", APR_OS_DEFAULT, + fspr_dir_make_recursive("foobar", APR_OS_DEFAULT, p) != APR_SUCCESS); } - APR_ASSERT_SUCCESS(tc, "restore cwd", apr_filepath_set(cwd, p)); + APR_ASSERT_SUCCESS(tc, "restore cwd", fspr_filepath_set(cwd, p)); if (rv) { - apr_dir_remove(path, p); + fspr_dir_remove(path, p); ABTS_NOT_IMPL(tc, "cannot remove in-use directory"); } } diff --git a/libs/apr/test/testdso.c b/libs/apr/test/testdso.c index b87bdf70e10..aaeffcfee00 100644 --- a/libs/apr/test/testdso.c +++ b/libs/apr/test/testdso.c @@ -16,13 +16,13 @@ #include "testutil.h" -#include "apr_general.h" -#include "apr_pools.h" -#include "apr_errno.h" -#include "apr_dso.h" -#include "apr_strings.h" -#include "apr_file_info.h" -#include "apr.h" +#include "fspr_general.h" +#include "fspr_pools.h" +#include "fspr_errno.h" +#include "fspr_dso.h" +#include "fspr_strings.h" +#include "fspr_file_info.h" +#include "fspr.h" #if APR_HAVE_UNISTD_H #include #endif @@ -53,32 +53,32 @@ static char *modname; static void test_load_module(abts_case *tc, void *data) { - apr_dso_handle_t *h = NULL; - apr_status_t status; + fspr_dso_handle_t *h = NULL; + fspr_status_t status; char errstr[256]; - status = apr_dso_load(&h, modname, p); - ABTS_ASSERT(tc, apr_dso_error(h, errstr, 256), APR_SUCCESS == status); + status = fspr_dso_load(&h, modname, p); + ABTS_ASSERT(tc, fspr_dso_error(h, errstr, 256), APR_SUCCESS == status); ABTS_PTR_NOTNULL(tc, h); - apr_dso_unload(h); + fspr_dso_unload(h); } static void test_dso_sym(abts_case *tc, void *data) { - apr_dso_handle_t *h = NULL; - apr_dso_handle_sym_t func1 = NULL; - apr_status_t status; + fspr_dso_handle_t *h = NULL; + fspr_dso_handle_sym_t func1 = NULL; + fspr_status_t status; void (*function)(char str[256]); char teststr[256]; char errstr[256]; - status = apr_dso_load(&h, modname, p); - ABTS_ASSERT(tc, apr_dso_error(h, errstr, 256), APR_SUCCESS == status); + status = fspr_dso_load(&h, modname, p); + ABTS_ASSERT(tc, fspr_dso_error(h, errstr, 256), APR_SUCCESS == status); ABTS_PTR_NOTNULL(tc, h); - status = apr_dso_sym(&func1, h, "print_hello"); - ABTS_ASSERT(tc, apr_dso_error(h, errstr, 256), APR_SUCCESS == status); + status = fspr_dso_sym(&func1, h, "print_hello"); + ABTS_ASSERT(tc, fspr_dso_error(h, errstr, 256), APR_SUCCESS == status); ABTS_PTR_NOTNULL(tc, func1); if (!tc->failed) { @@ -87,23 +87,23 @@ static void test_dso_sym(abts_case *tc, void *data) ABTS_STR_EQUAL(tc, "Hello - I'm a DSO!\n", teststr); } - apr_dso_unload(h); + fspr_dso_unload(h); } static void test_dso_sym_return_value(abts_case *tc, void *data) { - apr_dso_handle_t *h = NULL; - apr_dso_handle_sym_t func1 = NULL; - apr_status_t status; + fspr_dso_handle_t *h = NULL; + fspr_dso_handle_sym_t func1 = NULL; + fspr_status_t status; int (*function)(int); char errstr[256]; - status = apr_dso_load(&h, modname, p); - ABTS_ASSERT(tc, apr_dso_error(h, errstr, 256), APR_SUCCESS == status); + status = fspr_dso_load(&h, modname, p); + ABTS_ASSERT(tc, fspr_dso_error(h, errstr, 256), APR_SUCCESS == status); ABTS_PTR_NOTNULL(tc, h); - status = apr_dso_sym(&func1, h, "count_reps"); - ABTS_ASSERT(tc, apr_dso_error(h, errstr, 256), APR_SUCCESS == status); + status = fspr_dso_sym(&func1, h, "count_reps"); + ABTS_ASSERT(tc, fspr_dso_error(h, errstr, 256), APR_SUCCESS == status); ABTS_PTR_NOTNULL(tc, func1); if (!tc->failed) { @@ -112,24 +112,24 @@ static void test_dso_sym_return_value(abts_case *tc, void *data) ABTS_INT_EQUAL(tc, 5, status); } - apr_dso_unload(h); + fspr_dso_unload(h); } static void test_unload_module(abts_case *tc, void *data) { - apr_dso_handle_t *h = NULL; - apr_status_t status; + fspr_dso_handle_t *h = NULL; + fspr_status_t status; char errstr[256]; - apr_dso_handle_sym_t func1 = NULL; + fspr_dso_handle_sym_t func1 = NULL; - status = apr_dso_load(&h, modname, p); - ABTS_ASSERT(tc, apr_dso_error(h, errstr, 256), APR_SUCCESS == status); + status = fspr_dso_load(&h, modname, p); + ABTS_ASSERT(tc, fspr_dso_error(h, errstr, 256), APR_SUCCESS == status); ABTS_PTR_NOTNULL(tc, h); - status = apr_dso_unload(h); - ABTS_ASSERT(tc, apr_dso_error(h, errstr, 256), APR_SUCCESS == status); + status = fspr_dso_unload(h); + ABTS_ASSERT(tc, fspr_dso_error(h, errstr, 256), APR_SUCCESS == status); - status = apr_dso_sym(&func1, h, "print_hello"); + status = fspr_dso_sym(&func1, h, "print_hello"); ABTS_INT_EQUAL(tc, 1, APR_STATUS_IS_ESYMNOTFOUND(status)); } @@ -139,32 +139,32 @@ static char *libname; static void test_load_library(abts_case *tc, void *data) { - apr_dso_handle_t *h = NULL; - apr_status_t status; + fspr_dso_handle_t *h = NULL; + fspr_status_t status; char errstr[256]; - status = apr_dso_load(&h, libname, p); - ABTS_ASSERT(tc, apr_dso_error(h, errstr, 256), APR_SUCCESS == status); + status = fspr_dso_load(&h, libname, p); + ABTS_ASSERT(tc, fspr_dso_error(h, errstr, 256), APR_SUCCESS == status); ABTS_PTR_NOTNULL(tc, h); - apr_dso_unload(h); + fspr_dso_unload(h); } static void test_dso_sym_library(abts_case *tc, void *data) { - apr_dso_handle_t *h = NULL; - apr_dso_handle_sym_t func1 = NULL; - apr_status_t status; + fspr_dso_handle_t *h = NULL; + fspr_dso_handle_sym_t func1 = NULL; + fspr_status_t status; void (*function)(char str[256]); char teststr[256]; char errstr[256]; - status = apr_dso_load(&h, libname, p); - ABTS_ASSERT(tc, apr_dso_error(h, errstr, 256), APR_SUCCESS == status); + status = fspr_dso_load(&h, libname, p); + ABTS_ASSERT(tc, fspr_dso_error(h, errstr, 256), APR_SUCCESS == status); ABTS_PTR_NOTNULL(tc, h); - status = apr_dso_sym(&func1, h, "print_hello"); - ABTS_ASSERT(tc, apr_dso_error(h, errstr, 256), APR_SUCCESS == status); + status = fspr_dso_sym(&func1, h, "print_hello"); + ABTS_ASSERT(tc, fspr_dso_error(h, errstr, 256), APR_SUCCESS == status); ABTS_PTR_NOTNULL(tc, func1); if (!tc->failed) { @@ -173,23 +173,23 @@ static void test_dso_sym_library(abts_case *tc, void *data) ABTS_STR_EQUAL(tc, "Hello - I'm a DSO!\n", teststr); } - apr_dso_unload(h); + fspr_dso_unload(h); } static void test_dso_sym_return_value_library(abts_case *tc, void *data) { - apr_dso_handle_t *h = NULL; - apr_dso_handle_sym_t func1 = NULL; - apr_status_t status; + fspr_dso_handle_t *h = NULL; + fspr_dso_handle_sym_t func1 = NULL; + fspr_status_t status; int (*function)(int); char errstr[256]; - status = apr_dso_load(&h, libname, p); - ABTS_ASSERT(tc, apr_dso_error(h, errstr, 256), APR_SUCCESS == status); + status = fspr_dso_load(&h, libname, p); + ABTS_ASSERT(tc, fspr_dso_error(h, errstr, 256), APR_SUCCESS == status); ABTS_PTR_NOTNULL(tc, h); - status = apr_dso_sym(&func1, h, "count_reps"); - ABTS_ASSERT(tc, apr_dso_error(h, errstr, 256), APR_SUCCESS == status); + status = fspr_dso_sym(&func1, h, "count_reps"); + ABTS_ASSERT(tc, fspr_dso_error(h, errstr, 256), APR_SUCCESS == status); ABTS_PTR_NOTNULL(tc, func1); if (!tc->failed) { @@ -198,24 +198,24 @@ static void test_dso_sym_return_value_library(abts_case *tc, void *data) ABTS_INT_EQUAL(tc, 5, status); } - apr_dso_unload(h); + fspr_dso_unload(h); } static void test_unload_library(abts_case *tc, void *data) { - apr_dso_handle_t *h = NULL; - apr_status_t status; + fspr_dso_handle_t *h = NULL; + fspr_status_t status; char errstr[256]; - apr_dso_handle_sym_t func1 = NULL; + fspr_dso_handle_sym_t func1 = NULL; - status = apr_dso_load(&h, libname, p); - ABTS_ASSERT(tc, apr_dso_error(h, errstr, 256), APR_SUCCESS == status); + status = fspr_dso_load(&h, libname, p); + ABTS_ASSERT(tc, fspr_dso_error(h, errstr, 256), APR_SUCCESS == status); ABTS_PTR_NOTNULL(tc, h); - status = apr_dso_unload(h); - ABTS_ASSERT(tc, apr_dso_error(h, errstr, 256), APR_SUCCESS == status); + status = fspr_dso_unload(h); + ABTS_ASSERT(tc, fspr_dso_error(h, errstr, 256), APR_SUCCESS == status); - status = apr_dso_sym(&func1, h, "print_hello"); + status = fspr_dso_sym(&func1, h, "print_hello"); ABTS_INT_EQUAL(tc, 1, APR_STATUS_IS_ESYMNOTFOUND(status)); } @@ -223,10 +223,10 @@ static void test_unload_library(abts_case *tc, void *data) static void test_load_notthere(abts_case *tc, void *data) { - apr_dso_handle_t *h = NULL; - apr_status_t status; + fspr_dso_handle_t *h = NULL; + fspr_status_t status; - status = apr_dso_load(&h, "No_File.so", p); + status = fspr_dso_load(&h, "No_File.so", p); ABTS_INT_EQUAL(tc, 1, APR_STATUS_IS_EDSOOPEN(status)); ABTS_PTR_NOTNULL(tc, h); @@ -239,7 +239,7 @@ abts_suite *testdso(abts_suite *suite) suite = ADD_SUITE(suite) #if APR_HAS_DSO - apr_filepath_merge(&modname, NULL, MOD_NAME, 0, p); + fspr_filepath_merge(&modname, NULL, MOD_NAME, 0, p); abts_run_test(suite, test_load_module, NULL); abts_run_test(suite, test_dso_sym, NULL); @@ -247,7 +247,7 @@ abts_suite *testdso(abts_suite *suite) abts_run_test(suite, test_unload_module, NULL); #ifdef LIB_NAME - apr_filepath_merge(&libname, NULL, LIB_NAME, 0, p); + fspr_filepath_merge(&libname, NULL, LIB_NAME, 0, p); abts_run_test(suite, test_load_library, NULL); abts_run_test(suite, test_dso_sym_library, NULL); diff --git a/libs/apr/test/testdup.c b/libs/apr/test/testdup.c index 9d064ec0d8d..a6fd1c8e839 100644 --- a/libs/apr/test/testdup.c +++ b/libs/apr/test/testdup.c @@ -15,10 +15,10 @@ */ -#include "apr_general.h" -#include "apr_pools.h" -#include "apr_errno.h" -#include "apr_file_io.h" +#include "fspr_general.h" +#include "fspr_pools.h" +#include "fspr_errno.h" +#include "fspr_file_io.h" #include "testutil.h" #define TEST "Testing\n" @@ -27,155 +27,155 @@ static void test_file_dup(abts_case *tc, void *data) { - apr_file_t *file1 = NULL; - apr_file_t *file3 = NULL; - apr_status_t rv; - apr_finfo_t finfo; + fspr_file_t *file1 = NULL; + fspr_file_t *file3 = NULL; + fspr_status_t rv; + fspr_finfo_t finfo; /* First, create a new file, empty... */ - rv = apr_file_open(&file1, FILEPATH "testdup.file", + rv = fspr_file_open(&file1, FILEPATH "testdup.file", APR_READ | APR_WRITE | APR_CREATE | APR_DELONCLOSE, APR_OS_DEFAULT, p); ABTS_INT_EQUAL(tc, APR_SUCCESS, rv); ABTS_PTR_NOTNULL(tc, file1); - rv = apr_file_dup(&file3, file1, p); + rv = fspr_file_dup(&file3, file1, p); ABTS_INT_EQUAL(tc, APR_SUCCESS, rv); ABTS_PTR_NOTNULL(tc, file3); - rv = apr_file_close(file1); + rv = fspr_file_close(file1); ABTS_INT_EQUAL(tc, APR_SUCCESS, rv); /* cleanup after ourselves */ - rv = apr_file_close(file3); + rv = fspr_file_close(file3); ABTS_INT_EQUAL(tc, APR_SUCCESS, rv); - rv = apr_stat(&finfo, FILEPATH "testdup.file", APR_FINFO_NORM, p); + rv = fspr_stat(&finfo, FILEPATH "testdup.file", APR_FINFO_NORM, p); ABTS_INT_EQUAL(tc, 1, APR_STATUS_IS_ENOENT(rv)); } static void test_file_readwrite(abts_case *tc, void *data) { - apr_file_t *file1 = NULL; - apr_file_t *file3 = NULL; - apr_status_t rv; - apr_finfo_t finfo; - apr_size_t txtlen = sizeof(TEST); + fspr_file_t *file1 = NULL; + fspr_file_t *file3 = NULL; + fspr_status_t rv; + fspr_finfo_t finfo; + fspr_size_t txtlen = sizeof(TEST); char buff[50]; - apr_off_t fpos; + fspr_off_t fpos; /* First, create a new file, empty... */ - rv = apr_file_open(&file1, FILEPATH "testdup.readwrite.file", + rv = fspr_file_open(&file1, FILEPATH "testdup.readwrite.file", APR_READ | APR_WRITE | APR_CREATE | APR_DELONCLOSE, APR_OS_DEFAULT, p); ABTS_INT_EQUAL(tc, APR_SUCCESS, rv); ABTS_PTR_NOTNULL(tc, file1); - rv = apr_file_dup(&file3, file1, p); + rv = fspr_file_dup(&file3, file1, p); ABTS_INT_EQUAL(tc, APR_SUCCESS, rv); ABTS_PTR_NOTNULL(tc, file3); - rv = apr_file_write(file3, TEST, &txtlen); + rv = fspr_file_write(file3, TEST, &txtlen); ABTS_INT_EQUAL(tc, APR_SUCCESS, rv); ABTS_INT_EQUAL(tc, sizeof(TEST), txtlen); fpos = 0; - rv = apr_file_seek(file1, APR_SET, &fpos); + rv = fspr_file_seek(file1, APR_SET, &fpos); ABTS_INT_EQUAL(tc, APR_SUCCESS, rv); ABTS_ASSERT(tc, "File position mismatch, expected 0", fpos == 0); txtlen = 50; - rv = apr_file_read(file1, buff, &txtlen); + rv = fspr_file_read(file1, buff, &txtlen); ABTS_INT_EQUAL(tc, APR_SUCCESS, rv); ABTS_STR_EQUAL(tc, TEST, buff); /* cleanup after ourselves */ - rv = apr_file_close(file1); + rv = fspr_file_close(file1); ABTS_INT_EQUAL(tc, APR_SUCCESS, rv); - rv = apr_file_close(file3); + rv = fspr_file_close(file3); ABTS_INT_EQUAL(tc, APR_SUCCESS, rv); - rv = apr_stat(&finfo, FILEPATH "testdup.readwrite.file", APR_FINFO_NORM, p); + rv = fspr_stat(&finfo, FILEPATH "testdup.readwrite.file", APR_FINFO_NORM, p); ABTS_INT_EQUAL(tc, 1, APR_STATUS_IS_ENOENT(rv)); } static void test_dup2(abts_case *tc, void *data) { - apr_file_t *testfile = NULL; - apr_file_t *errfile = NULL; - apr_file_t *saveerr = NULL; - apr_status_t rv; + fspr_file_t *testfile = NULL; + fspr_file_t *errfile = NULL; + fspr_file_t *saveerr = NULL; + fspr_status_t rv; - rv = apr_file_open(&testfile, FILEPATH "testdup2.file", + rv = fspr_file_open(&testfile, FILEPATH "testdup2.file", APR_READ | APR_WRITE | APR_CREATE | APR_DELONCLOSE, APR_OS_DEFAULT, p); ABTS_INT_EQUAL(tc, APR_SUCCESS, rv); ABTS_PTR_NOTNULL(tc, testfile); - rv = apr_file_open_stderr(&errfile, p); + rv = fspr_file_open_stderr(&errfile, p); ABTS_INT_EQUAL(tc, APR_SUCCESS, rv); /* Set aside the real errfile */ - rv = apr_file_dup(&saveerr, errfile, p); + rv = fspr_file_dup(&saveerr, errfile, p); ABTS_INT_EQUAL(tc, APR_SUCCESS, rv); ABTS_PTR_NOTNULL(tc, saveerr); - rv = apr_file_dup2(errfile, testfile, p); + rv = fspr_file_dup2(errfile, testfile, p); ABTS_INT_EQUAL(tc, APR_SUCCESS, rv); ABTS_PTR_NOTNULL(tc, errfile); - apr_file_close(testfile); + fspr_file_close(testfile); - rv = apr_file_dup2(errfile, saveerr, p); + rv = fspr_file_dup2(errfile, saveerr, p); ABTS_INT_EQUAL(tc, APR_SUCCESS, rv); ABTS_PTR_NOTNULL(tc, errfile); } static void test_dup2_readwrite(abts_case *tc, void *data) { - apr_file_t *errfile = NULL; - apr_file_t *testfile = NULL; - apr_file_t *saveerr = NULL; - apr_status_t rv; - apr_size_t txtlen = sizeof(TEST); + fspr_file_t *errfile = NULL; + fspr_file_t *testfile = NULL; + fspr_file_t *saveerr = NULL; + fspr_status_t rv; + fspr_size_t txtlen = sizeof(TEST); char buff[50]; - apr_off_t fpos; + fspr_off_t fpos; - rv = apr_file_open(&testfile, FILEPATH "testdup2.readwrite.file", + rv = fspr_file_open(&testfile, FILEPATH "testdup2.readwrite.file", APR_READ | APR_WRITE | APR_CREATE | APR_DELONCLOSE, APR_OS_DEFAULT, p); ABTS_INT_EQUAL(tc, APR_SUCCESS, rv); ABTS_PTR_NOTNULL(tc, testfile); - rv = apr_file_open_stderr(&errfile, p); + rv = fspr_file_open_stderr(&errfile, p); ABTS_INT_EQUAL(tc, APR_SUCCESS, rv); /* Set aside the real errfile */ - rv = apr_file_dup(&saveerr, errfile, p); + rv = fspr_file_dup(&saveerr, errfile, p); ABTS_INT_EQUAL(tc, APR_SUCCESS, rv); ABTS_PTR_NOTNULL(tc, saveerr); - rv = apr_file_dup2(errfile, testfile, p); + rv = fspr_file_dup2(errfile, testfile, p); ABTS_INT_EQUAL(tc, APR_SUCCESS, rv); ABTS_PTR_NOTNULL(tc, errfile); txtlen = sizeof(TEST2); - rv = apr_file_write(errfile, TEST2, &txtlen); + rv = fspr_file_write(errfile, TEST2, &txtlen); ABTS_INT_EQUAL(tc, APR_SUCCESS, rv); ABTS_INT_EQUAL(tc, sizeof(TEST2), txtlen); fpos = 0; - rv = apr_file_seek(testfile, APR_SET, &fpos); + rv = fspr_file_seek(testfile, APR_SET, &fpos); ABTS_INT_EQUAL(tc, APR_SUCCESS, rv); ABTS_ASSERT(tc, "File position mismatch, expected 0", fpos == 0); txtlen = 50; - rv = apr_file_read(testfile, buff, &txtlen); + rv = fspr_file_read(testfile, buff, &txtlen); ABTS_INT_EQUAL(tc, APR_SUCCESS, rv); ABTS_STR_EQUAL(tc, TEST2, buff); - apr_file_close(testfile); + fspr_file_close(testfile); - rv = apr_file_dup2(errfile, saveerr, p); + rv = fspr_file_dup2(errfile, saveerr, p); ABTS_INT_EQUAL(tc, APR_SUCCESS, rv); ABTS_PTR_NOTNULL(tc, errfile); } diff --git a/libs/apr/test/testenv.c b/libs/apr/test/testenv.c index d292c26e7d2..91aa889e430 100644 --- a/libs/apr/test/testenv.c +++ b/libs/apr/test/testenv.c @@ -14,12 +14,12 @@ * limitations under the License. */ -#include "apr_env.h" -#include "apr_errno.h" +#include "fspr_env.h" +#include "fspr_errno.h" #include "testutil.h" -#define TEST_ENVVAR_NAME "apr_test_envvar" -#define TEST_ENVVAR2_NAME "apr_test_envvar2" +#define TEST_ENVVAR_NAME "fspr_test_envvar" +#define TEST_ENVVAR2_NAME "fspr_test_envvar2" #define TEST_ENVVAR_VALUE "Just a value that we'll check" static int have_env_set; @@ -28,12 +28,12 @@ static int have_env_del; static void test_setenv(abts_case *tc, void *data) { - apr_status_t rv; + fspr_status_t rv; - rv = apr_env_set(TEST_ENVVAR_NAME, TEST_ENVVAR_VALUE, p); + rv = fspr_env_set(TEST_ENVVAR_NAME, TEST_ENVVAR_VALUE, p); have_env_set = (rv != APR_ENOTIMPL); if (!have_env_set) { - ABTS_NOT_IMPL(tc, "apr_env_set"); + ABTS_NOT_IMPL(tc, "fspr_env_set"); } else { APR_ASSERT_SUCCESS(tc, "set environment variable", rv); } @@ -42,17 +42,17 @@ static void test_setenv(abts_case *tc, void *data) static void test_getenv(abts_case *tc, void *data) { char *value; - apr_status_t rv; + fspr_status_t rv; if (!have_env_set) { - ABTS_NOT_IMPL(tc, "apr_env_set (skip test for apr_env_get)"); + ABTS_NOT_IMPL(tc, "fspr_env_set (skip test for fspr_env_get)"); return; } - rv = apr_env_get(&value, TEST_ENVVAR_NAME, p); + rv = fspr_env_get(&value, TEST_ENVVAR_NAME, p); have_env_get = (rv != APR_ENOTIMPL); if (!have_env_get) { - ABTS_NOT_IMPL(tc, "apr_env_get"); + ABTS_NOT_IMPL(tc, "fspr_env_get"); return; } APR_ASSERT_SUCCESS(tc, "get environment variable", rv); @@ -62,26 +62,26 @@ static void test_getenv(abts_case *tc, void *data) static void test_delenv(abts_case *tc, void *data) { char *value; - apr_status_t rv; + fspr_status_t rv; if (!have_env_set) { - ABTS_NOT_IMPL(tc, "apr_env_set (skip test for apr_env_delete)"); + ABTS_NOT_IMPL(tc, "fspr_env_set (skip test for fspr_env_delete)"); return; } - rv = apr_env_delete(TEST_ENVVAR_NAME, p); + rv = fspr_env_delete(TEST_ENVVAR_NAME, p); have_env_del = (rv != APR_ENOTIMPL); if (!have_env_del) { - ABTS_NOT_IMPL(tc, "apr_env_delete"); + ABTS_NOT_IMPL(tc, "fspr_env_delete"); return; } APR_ASSERT_SUCCESS(tc, "delete environment variable", rv); if (!have_env_get) { - ABTS_NOT_IMPL(tc, "apr_env_get (skip sanity check for apr_env_delete)"); + ABTS_NOT_IMPL(tc, "fspr_env_get (skip sanity check for fspr_env_delete)"); return; } - rv = apr_env_get(&value, TEST_ENVVAR_NAME, p); + rv = fspr_env_get(&value, TEST_ENVVAR_NAME, p); ABTS_INT_EQUAL(tc, APR_ENOENT, rv); } @@ -89,45 +89,45 @@ static void test_delenv(abts_case *tc, void *data) static void test_emptyenv(abts_case *tc, void *data) { char *value; - apr_status_t rv; + fspr_status_t rv; if (!(have_env_set && have_env_get)) { - ABTS_NOT_IMPL(tc, "apr_env_set (skip test_emptyenv)"); + ABTS_NOT_IMPL(tc, "fspr_env_set (skip test_emptyenv)"); return; } /** Set empty string and test that rv != ENOENT) */ - rv = apr_env_set(TEST_ENVVAR_NAME, "", p); + rv = fspr_env_set(TEST_ENVVAR_NAME, "", p); APR_ASSERT_SUCCESS(tc, "set environment variable", rv); - rv = apr_env_get(&value, TEST_ENVVAR_NAME, p); + rv = fspr_env_get(&value, TEST_ENVVAR_NAME, p); APR_ASSERT_SUCCESS(tc, "get environment variable", rv); ABTS_STR_EQUAL(tc, "", value); if (!have_env_del) { - ABTS_NOT_IMPL(tc, "apr_env_del (skip recycle test_emptyenv)"); + ABTS_NOT_IMPL(tc, "fspr_env_del (skip recycle test_emptyenv)"); return; } /** Delete and retest */ - rv = apr_env_delete(TEST_ENVVAR_NAME, p); + rv = fspr_env_delete(TEST_ENVVAR_NAME, p); APR_ASSERT_SUCCESS(tc, "delete environment variable", rv); - rv = apr_env_get(&value, TEST_ENVVAR_NAME, p); + rv = fspr_env_get(&value, TEST_ENVVAR_NAME, p); ABTS_INT_EQUAL(tc, APR_ENOENT, rv); /** Set second variable + test*/ - rv = apr_env_set(TEST_ENVVAR2_NAME, TEST_ENVVAR_VALUE, p); + rv = fspr_env_set(TEST_ENVVAR2_NAME, TEST_ENVVAR_VALUE, p); APR_ASSERT_SUCCESS(tc, "set second environment variable", rv); - rv = apr_env_get(&value, TEST_ENVVAR2_NAME, p); + rv = fspr_env_get(&value, TEST_ENVVAR2_NAME, p); APR_ASSERT_SUCCESS(tc, "get second environment variable", rv); ABTS_STR_EQUAL(tc, TEST_ENVVAR_VALUE, value); /** Finally, test ENOENT (first variable) followed by second != ENOENT) */ - rv = apr_env_get(&value, TEST_ENVVAR_NAME, p); + rv = fspr_env_get(&value, TEST_ENVVAR_NAME, p); ABTS_INT_EQUAL(tc, APR_ENOENT, rv); - rv = apr_env_get(&value, TEST_ENVVAR2_NAME, p); + rv = fspr_env_get(&value, TEST_ENVVAR2_NAME, p); APR_ASSERT_SUCCESS(tc, "verify second environment variable", rv); ABTS_STR_EQUAL(tc, TEST_ENVVAR_VALUE, value); /** Cleanup */ - apr_env_delete(TEST_ENVVAR2_NAME, p); + fspr_env_delete(TEST_ENVVAR2_NAME, p); } abts_suite *testenv(abts_suite *suite) diff --git a/libs/apr/test/testfile.c b/libs/apr/test/testfile.c index 2ffc82643d6..7e2be1204c1 100644 --- a/libs/apr/test/testfile.c +++ b/libs/apr/test/testfile.c @@ -14,13 +14,13 @@ * limitations under the License. */ -#include "apr_file_io.h" -#include "apr_file_info.h" -#include "apr_network_io.h" -#include "apr_errno.h" -#include "apr_general.h" -#include "apr_poll.h" -#include "apr_lib.h" +#include "fspr_file_io.h" +#include "fspr_file_info.h" +#include "fspr_network_io.h" +#include "fspr_errno.h" +#include "fspr_general.h" +#include "fspr_poll.h" +#include "fspr_lib.h" #include "testutil.h" #define DIRNAME "data" @@ -34,10 +34,10 @@ static void test_open_noreadwrite(abts_case *tc, void *data) { - apr_status_t rv; - apr_file_t *thefile = NULL; + fspr_status_t rv; + fspr_file_t *thefile = NULL; - rv = apr_file_open(&thefile, FILENAME, + rv = fspr_file_open(&thefile, FILENAME, APR_CREATE | APR_EXCL, APR_UREAD | APR_UWRITE | APR_GREAD, p); ABTS_TRUE(tc, rv != APR_SUCCESS); @@ -47,10 +47,10 @@ static void test_open_noreadwrite(abts_case *tc, void *data) static void test_open_excl(abts_case *tc, void *data) { - apr_status_t rv; - apr_file_t *thefile = NULL; + fspr_status_t rv; + fspr_file_t *thefile = NULL; - rv = apr_file_open(&thefile, FILENAME, + rv = fspr_file_open(&thefile, FILENAME, APR_CREATE | APR_EXCL | APR_WRITE, APR_UREAD | APR_UWRITE | APR_GREAD, p); ABTS_TRUE(tc, rv != APR_SUCCESS); @@ -60,111 +60,111 @@ static void test_open_excl(abts_case *tc, void *data) static void test_open_read(abts_case *tc, void *data) { - apr_status_t rv; - apr_file_t *filetest = NULL; + fspr_status_t rv; + fspr_file_t *filetest = NULL; - rv = apr_file_open(&filetest, FILENAME, + rv = fspr_file_open(&filetest, FILENAME, APR_READ, APR_UREAD | APR_UWRITE | APR_GREAD, p); ABTS_INT_EQUAL(tc, APR_SUCCESS, rv); ABTS_PTR_NOTNULL(tc, filetest); - apr_file_close(filetest); + fspr_file_close(filetest); } static void test_read(abts_case *tc, void *data) { - apr_status_t rv; - apr_size_t nbytes = 256; - char *str = apr_pcalloc(p, nbytes + 1); - apr_file_t *filetest = NULL; + fspr_status_t rv; + fspr_size_t nbytes = 256; + char *str = fspr_pcalloc(p, nbytes + 1); + fspr_file_t *filetest = NULL; - rv = apr_file_open(&filetest, FILENAME, + rv = fspr_file_open(&filetest, FILENAME, APR_READ, APR_UREAD | APR_UWRITE | APR_GREAD, p); APR_ASSERT_SUCCESS(tc, "Opening test file " FILENAME, rv); - rv = apr_file_read(filetest, str, &nbytes); + rv = fspr_file_read(filetest, str, &nbytes); ABTS_INT_EQUAL(tc, APR_SUCCESS, rv); ABTS_INT_EQUAL(tc, strlen(TESTSTR), nbytes); ABTS_STR_EQUAL(tc, TESTSTR, str); - apr_file_close(filetest); + fspr_file_close(filetest); } static void test_readzero(abts_case *tc, void *data) { - apr_status_t rv; - apr_size_t nbytes = 0; + fspr_status_t rv; + fspr_size_t nbytes = 0; char *str = NULL; - apr_file_t *filetest; + fspr_file_t *filetest; - rv = apr_file_open(&filetest, FILENAME, APR_READ, APR_OS_DEFAULT, p); + rv = fspr_file_open(&filetest, FILENAME, APR_READ, APR_OS_DEFAULT, p); APR_ASSERT_SUCCESS(tc, "Opening test file " FILENAME, rv); - rv = apr_file_read(filetest, str, &nbytes); + rv = fspr_file_read(filetest, str, &nbytes); ABTS_INT_EQUAL(tc, APR_SUCCESS, rv); ABTS_INT_EQUAL(tc, 0, nbytes); - apr_file_close(filetest); + fspr_file_close(filetest); } static void test_filename(abts_case *tc, void *data) { const char *str; - apr_status_t rv; - apr_file_t *filetest = NULL; + fspr_status_t rv; + fspr_file_t *filetest = NULL; - rv = apr_file_open(&filetest, FILENAME, + rv = fspr_file_open(&filetest, FILENAME, APR_READ, APR_UREAD | APR_UWRITE | APR_GREAD, p); APR_ASSERT_SUCCESS(tc, "Opening test file " FILENAME, rv); - rv = apr_file_name_get(&str, filetest); + rv = fspr_file_name_get(&str, filetest); ABTS_INT_EQUAL(tc, APR_SUCCESS, rv); ABTS_STR_EQUAL(tc, FILENAME, str); - apr_file_close(filetest); + fspr_file_close(filetest); } static void test_fileclose(abts_case *tc, void *data) { char str; - apr_status_t rv; - apr_size_t one = 1; - apr_file_t *filetest = NULL; + fspr_status_t rv; + fspr_size_t one = 1; + fspr_file_t *filetest = NULL; - rv = apr_file_open(&filetest, FILENAME, + rv = fspr_file_open(&filetest, FILENAME, APR_READ, APR_UREAD | APR_UWRITE | APR_GREAD, p); APR_ASSERT_SUCCESS(tc, "Opening test file " FILENAME, rv); - rv = apr_file_close(filetest); + rv = fspr_file_close(filetest); ABTS_INT_EQUAL(tc, APR_SUCCESS, rv); /* We just closed the file, so this should fail */ - rv = apr_file_read(filetest, &str, &one); + rv = fspr_file_read(filetest, &str, &one); ABTS_INT_EQUAL(tc, 1, APR_STATUS_IS_EBADF(rv)); } static void test_file_remove(abts_case *tc, void *data) { - apr_status_t rv; - apr_file_t *filetest = NULL; + fspr_status_t rv; + fspr_file_t *filetest = NULL; - rv = apr_file_remove(FILENAME, p); + rv = fspr_file_remove(FILENAME, p); ABTS_INT_EQUAL(tc, APR_SUCCESS, rv); - rv = apr_file_open(&filetest, FILENAME, APR_READ, + rv = fspr_file_open(&filetest, FILENAME, APR_READ, APR_UREAD | APR_UWRITE | APR_GREAD, p); ABTS_INT_EQUAL(tc, 1, APR_STATUS_IS_ENOENT(rv)); } static void test_open_write(abts_case *tc, void *data) { - apr_status_t rv; - apr_file_t *filetest = NULL; + fspr_status_t rv; + fspr_file_t *filetest = NULL; filetest = NULL; - rv = apr_file_open(&filetest, FILENAME, + rv = fspr_file_open(&filetest, FILENAME, APR_WRITE, APR_UREAD | APR_UWRITE | APR_GREAD, p); ABTS_INT_EQUAL(tc, 1, APR_STATUS_IS_ENOENT(rv)); @@ -173,229 +173,229 @@ static void test_open_write(abts_case *tc, void *data) static void test_open_writecreate(abts_case *tc, void *data) { - apr_status_t rv; - apr_file_t *filetest = NULL; + fspr_status_t rv; + fspr_file_t *filetest = NULL; filetest = NULL; - rv = apr_file_open(&filetest, FILENAME, + rv = fspr_file_open(&filetest, FILENAME, APR_WRITE | APR_CREATE, APR_UREAD | APR_UWRITE | APR_GREAD, p); ABTS_INT_EQUAL(tc, APR_SUCCESS, rv); - apr_file_close(filetest); + fspr_file_close(filetest); } static void test_write(abts_case *tc, void *data) { - apr_status_t rv; - apr_size_t bytes = strlen(TESTSTR); - apr_file_t *filetest = NULL; + fspr_status_t rv; + fspr_size_t bytes = strlen(TESTSTR); + fspr_file_t *filetest = NULL; - rv = apr_file_open(&filetest, FILENAME, + rv = fspr_file_open(&filetest, FILENAME, APR_WRITE | APR_CREATE, APR_UREAD | APR_UWRITE | APR_GREAD, p); ABTS_INT_EQUAL(tc, APR_SUCCESS, rv); - rv = apr_file_write(filetest, TESTSTR, &bytes); + rv = fspr_file_write(filetest, TESTSTR, &bytes); ABTS_INT_EQUAL(tc, APR_SUCCESS, rv); - apr_file_close(filetest); + fspr_file_close(filetest); } static void test_open_readwrite(abts_case *tc, void *data) { - apr_status_t rv; - apr_file_t *filetest = NULL; + fspr_status_t rv; + fspr_file_t *filetest = NULL; filetest = NULL; - rv = apr_file_open(&filetest, FILENAME, + rv = fspr_file_open(&filetest, FILENAME, APR_READ | APR_WRITE, APR_UREAD | APR_UWRITE | APR_GREAD, p); ABTS_INT_EQUAL(tc, APR_SUCCESS, rv); ABTS_PTR_NOTNULL(tc, filetest); - apr_file_close(filetest); + fspr_file_close(filetest); } static void test_seek(abts_case *tc, void *data) { - apr_status_t rv; - apr_off_t offset = 5; - apr_size_t nbytes = 256; - char *str = apr_pcalloc(p, nbytes + 1); - apr_file_t *filetest = NULL; + fspr_status_t rv; + fspr_off_t offset = 5; + fspr_size_t nbytes = 256; + char *str = fspr_pcalloc(p, nbytes + 1); + fspr_file_t *filetest = NULL; - rv = apr_file_open(&filetest, FILENAME, + rv = fspr_file_open(&filetest, FILENAME, APR_READ, APR_UREAD | APR_UWRITE | APR_GREAD, p); APR_ASSERT_SUCCESS(tc, "Open test file " FILENAME, rv); - rv = apr_file_read(filetest, str, &nbytes); + rv = fspr_file_read(filetest, str, &nbytes); ABTS_INT_EQUAL(tc, APR_SUCCESS, rv); ABTS_INT_EQUAL(tc, strlen(TESTSTR), nbytes); ABTS_STR_EQUAL(tc, TESTSTR, str); memset(str, 0, nbytes + 1); - rv = apr_file_seek(filetest, SEEK_SET, &offset); + rv = fspr_file_seek(filetest, SEEK_SET, &offset); ABTS_INT_EQUAL(tc, APR_SUCCESS, rv); - rv = apr_file_read(filetest, str, &nbytes); + rv = fspr_file_read(filetest, str, &nbytes); ABTS_INT_EQUAL(tc, APR_SUCCESS, rv); ABTS_INT_EQUAL(tc, strlen(TESTSTR) - 5, nbytes); ABTS_STR_EQUAL(tc, TESTSTR + 5, str); - apr_file_close(filetest); + fspr_file_close(filetest); /* Test for regression of sign error bug with SEEK_END and buffered files. */ - rv = apr_file_open(&filetest, FILENAME, + rv = fspr_file_open(&filetest, FILENAME, APR_READ | APR_BUFFERED, APR_UREAD | APR_UWRITE | APR_GREAD, p); APR_ASSERT_SUCCESS(tc, "Open test file " FILENAME, rv); offset = -5; - rv = apr_file_seek(filetest, SEEK_END, &offset); + rv = fspr_file_seek(filetest, SEEK_END, &offset); ABTS_INT_EQUAL(tc, APR_SUCCESS, rv); ABTS_INT_EQUAL(tc, strlen(TESTSTR) - 5, nbytes); memset(str, 0, nbytes + 1); nbytes = 256; - rv = apr_file_read(filetest, str, &nbytes); + rv = fspr_file_read(filetest, str, &nbytes); ABTS_INT_EQUAL(tc, APR_SUCCESS, rv); ABTS_INT_EQUAL(tc, 5, nbytes); ABTS_STR_EQUAL(tc, TESTSTR + strlen(TESTSTR) - 5, str); - apr_file_close(filetest); + fspr_file_close(filetest); } static void test_userdata_set(abts_case *tc, void *data) { - apr_status_t rv; - apr_file_t *filetest = NULL; + fspr_status_t rv; + fspr_file_t *filetest = NULL; - rv = apr_file_open(&filetest, FILENAME, + rv = fspr_file_open(&filetest, FILENAME, APR_WRITE, APR_UREAD | APR_UWRITE | APR_GREAD, p); ABTS_INT_EQUAL(tc, APR_SUCCESS, rv); - rv = apr_file_data_set(filetest, "This is a test", - "test", apr_pool_cleanup_null); + rv = fspr_file_data_set(filetest, "This is a test", + "test", fspr_pool_cleanup_null); ABTS_INT_EQUAL(tc, APR_SUCCESS, rv); - apr_file_close(filetest); + fspr_file_close(filetest); } static void test_userdata_get(abts_case *tc, void *data) { - apr_status_t rv; + fspr_status_t rv; void *udata; char *teststr; - apr_file_t *filetest = NULL; + fspr_file_t *filetest = NULL; - rv = apr_file_open(&filetest, FILENAME, + rv = fspr_file_open(&filetest, FILENAME, APR_WRITE, APR_UREAD | APR_UWRITE | APR_GREAD, p); ABTS_INT_EQUAL(tc, APR_SUCCESS, rv); - rv = apr_file_data_set(filetest, "This is a test", - "test", apr_pool_cleanup_null); + rv = fspr_file_data_set(filetest, "This is a test", + "test", fspr_pool_cleanup_null); ABTS_INT_EQUAL(tc, APR_SUCCESS, rv); - rv = apr_file_data_get(&udata, "test", filetest); + rv = fspr_file_data_get(&udata, "test", filetest); ABTS_INT_EQUAL(tc, APR_SUCCESS, rv); teststr = udata; ABTS_STR_EQUAL(tc, "This is a test", teststr); - apr_file_close(filetest); + fspr_file_close(filetest); } static void test_userdata_getnokey(abts_case *tc, void *data) { - apr_status_t rv; + fspr_status_t rv; void *teststr; - apr_file_t *filetest = NULL; + fspr_file_t *filetest = NULL; - rv = apr_file_open(&filetest, FILENAME, + rv = fspr_file_open(&filetest, FILENAME, APR_WRITE, APR_UREAD | APR_UWRITE | APR_GREAD, p); ABTS_INT_EQUAL(tc, APR_SUCCESS, rv); - rv = apr_file_data_get(&teststr, "nokey", filetest); + rv = fspr_file_data_get(&teststr, "nokey", filetest); ABTS_INT_EQUAL(tc, APR_SUCCESS, rv); ABTS_PTR_EQUAL(tc, NULL, teststr); - apr_file_close(filetest); + fspr_file_close(filetest); } static void test_getc(abts_case *tc, void *data) { - apr_file_t *f = NULL; - apr_status_t rv; + fspr_file_t *f = NULL; + fspr_status_t rv; char ch; - rv = apr_file_open(&f, FILENAME, APR_READ, 0, p); + rv = fspr_file_open(&f, FILENAME, APR_READ, 0, p); ABTS_INT_EQUAL(tc, APR_SUCCESS, rv); - apr_file_getc(&ch, f); + fspr_file_getc(&ch, f); ABTS_INT_EQUAL(tc, APR_SUCCESS, rv); ABTS_INT_EQUAL(tc, (int)TESTSTR[0], (int)ch); - apr_file_close(f); + fspr_file_close(f); } static void test_ungetc(abts_case *tc, void *data) { - apr_file_t *f = NULL; - apr_status_t rv; + fspr_file_t *f = NULL; + fspr_status_t rv; char ch; - rv = apr_file_open(&f, FILENAME, APR_READ, 0, p); + rv = fspr_file_open(&f, FILENAME, APR_READ, 0, p); ABTS_INT_EQUAL(tc, APR_SUCCESS, rv); - apr_file_getc(&ch, f); + fspr_file_getc(&ch, f); ABTS_INT_EQUAL(tc, APR_SUCCESS, rv); ABTS_INT_EQUAL(tc, (int)TESTSTR[0], (int)ch); - apr_file_ungetc('X', f); + fspr_file_ungetc('X', f); ABTS_INT_EQUAL(tc, APR_SUCCESS, rv); - apr_file_getc(&ch, f); + fspr_file_getc(&ch, f); ABTS_INT_EQUAL(tc, APR_SUCCESS, rv); ABTS_INT_EQUAL(tc, 'X', (int)ch); - apr_file_close(f); + fspr_file_close(f); } static void test_gets(abts_case *tc, void *data) { - apr_file_t *f = NULL; - apr_status_t rv; - char *str = apr_palloc(p, 256); + fspr_file_t *f = NULL; + fspr_status_t rv; + char *str = fspr_palloc(p, 256); - rv = apr_file_open(&f, FILENAME, APR_READ, 0, p); + rv = fspr_file_open(&f, FILENAME, APR_READ, 0, p); ABTS_INT_EQUAL(tc, APR_SUCCESS, rv); - rv = apr_file_gets(str, 256, f); + rv = fspr_file_gets(str, 256, f); /* Only one line in the test file, so APR will encounter EOF on the first * call to gets, but we should get APR_SUCCESS on this call and * APR_EOF on the next. */ ABTS_INT_EQUAL(tc, APR_SUCCESS, rv); ABTS_STR_EQUAL(tc, TESTSTR, str); - rv = apr_file_gets(str, 256, f); + rv = fspr_file_gets(str, 256, f); ABTS_INT_EQUAL(tc, APR_EOF, rv); ABTS_STR_EQUAL(tc, "", str); - apr_file_close(f); + fspr_file_close(f); } static void test_bigread(abts_case *tc, void *data) { - apr_file_t *f = NULL; - apr_status_t rv; + fspr_file_t *f = NULL; + fspr_status_t rv; char buf[APR_BUFFERSIZE * 2]; - apr_size_t nbytes; + fspr_size_t nbytes; /* Create a test file with known content. */ - rv = apr_file_open(&f, "data/created_file", + rv = fspr_file_open(&f, "data/created_file", APR_CREATE | APR_WRITE | APR_TRUNCATE, APR_UREAD | APR_UWRITE, p); ABTS_INT_EQUAL(tc, APR_SUCCESS, rv); @@ -403,26 +403,26 @@ static void test_bigread(abts_case *tc, void *data) nbytes = APR_BUFFERSIZE; memset(buf, 0xFE, nbytes); - rv = apr_file_write(f, buf, &nbytes); + rv = fspr_file_write(f, buf, &nbytes); ABTS_INT_EQUAL(tc, APR_SUCCESS, rv); ABTS_INT_EQUAL(tc, APR_BUFFERSIZE, nbytes); - rv = apr_file_close(f); + rv = fspr_file_close(f); ABTS_INT_EQUAL(tc, APR_SUCCESS, rv); f = NULL; - rv = apr_file_open(&f, "data/created_file", APR_READ, 0, p); + rv = fspr_file_open(&f, "data/created_file", APR_READ, 0, p); ABTS_INT_EQUAL(tc, APR_SUCCESS, rv); nbytes = sizeof buf; - rv = apr_file_read(f, buf, &nbytes); + rv = fspr_file_read(f, buf, &nbytes); ABTS_INT_EQUAL(tc, APR_SUCCESS, rv); ABTS_INT_EQUAL(tc, APR_BUFFERSIZE, nbytes); - rv = apr_file_close(f); + rv = fspr_file_close(f); ABTS_INT_EQUAL(tc, APR_SUCCESS, rv); - rv = apr_file_remove("data/created_file", p); + rv = fspr_file_remove("data/created_file", p); ABTS_INT_EQUAL(tc, APR_SUCCESS, rv); } @@ -431,80 +431,80 @@ static void test_bigread(abts_case *tc, void *data) */ static void test_mod_neg(abts_case *tc, void *data) { - apr_status_t rv; - apr_file_t *f; + fspr_status_t rv; + fspr_file_t *f; const char *s; int i; - apr_size_t nbytes; + fspr_size_t nbytes; char buf[8192]; - apr_off_t cur; + fspr_off_t cur; const char *fname = "data/modneg.dat"; - rv = apr_file_open(&f, fname, + rv = fspr_file_open(&f, fname, APR_CREATE | APR_WRITE, APR_UREAD | APR_UWRITE, p); ABTS_INT_EQUAL(tc, APR_SUCCESS, rv); s = "body56789\n"; nbytes = strlen(s); - rv = apr_file_write(f, s, &nbytes); + rv = fspr_file_write(f, s, &nbytes); ABTS_INT_EQUAL(tc, APR_SUCCESS, rv); ABTS_INT_EQUAL(tc, strlen(s), nbytes); for (i = 0; i < 7980; i++) { s = "0"; nbytes = strlen(s); - rv = apr_file_write(f, s, &nbytes); + rv = fspr_file_write(f, s, &nbytes); ABTS_INT_EQUAL(tc, APR_SUCCESS, rv); ABTS_INT_EQUAL(tc, strlen(s), nbytes); } s = "end456789\n"; nbytes = strlen(s); - rv = apr_file_write(f, s, &nbytes); + rv = fspr_file_write(f, s, &nbytes); ABTS_INT_EQUAL(tc, APR_SUCCESS, rv); ABTS_INT_EQUAL(tc, strlen(s), nbytes); for (i = 0; i < 10000; i++) { s = "1"; nbytes = strlen(s); - rv = apr_file_write(f, s, &nbytes); + rv = fspr_file_write(f, s, &nbytes); ABTS_INT_EQUAL(tc, APR_SUCCESS, rv); ABTS_INT_EQUAL(tc, strlen(s), nbytes); } - rv = apr_file_close(f); + rv = fspr_file_close(f); ABTS_INT_EQUAL(tc, APR_SUCCESS, rv); - rv = apr_file_open(&f, fname, APR_READ, 0, p); + rv = fspr_file_open(&f, fname, APR_READ, 0, p); ABTS_INT_EQUAL(tc, APR_SUCCESS, rv); - rv = apr_file_gets(buf, 11, f); + rv = fspr_file_gets(buf, 11, f); ABTS_INT_EQUAL(tc, APR_SUCCESS, rv); ABTS_STR_EQUAL(tc, "body56789\n", buf); cur = 0; - rv = apr_file_seek(f, APR_CUR, &cur); + rv = fspr_file_seek(f, APR_CUR, &cur); ABTS_INT_EQUAL(tc, APR_SUCCESS, rv); ABTS_ASSERT(tc, "File Pointer Mismatch, expected 10", cur == 10); nbytes = sizeof(buf); - rv = apr_file_read(f, buf, &nbytes); + rv = fspr_file_read(f, buf, &nbytes); ABTS_INT_EQUAL(tc, APR_SUCCESS, rv); ABTS_INT_EQUAL(tc, nbytes, sizeof(buf)); - cur = -((apr_off_t)nbytes - 7980); - rv = apr_file_seek(f, APR_CUR, &cur); + cur = -((fspr_off_t)nbytes - 7980); + rv = fspr_file_seek(f, APR_CUR, &cur); ABTS_INT_EQUAL(tc, APR_SUCCESS, rv); ABTS_ASSERT(tc, "File Pointer Mismatch, expected 7990", cur == 7990); - rv = apr_file_gets(buf, 11, f); + rv = fspr_file_gets(buf, 11, f); ABTS_INT_EQUAL(tc, APR_SUCCESS, rv); ABTS_STR_EQUAL(tc, "end456789\n", buf); - rv = apr_file_close(f); + rv = fspr_file_close(f); ABTS_INT_EQUAL(tc, APR_SUCCESS, rv); - rv = apr_file_remove(fname, p); + rv = fspr_file_remove(fname, p); ABTS_INT_EQUAL(tc, APR_SUCCESS, rv); } @@ -513,21 +513,21 @@ static void test_mod_neg(abts_case *tc, void *data) static void file_contents_equal(abts_case *tc, const char *fname, const void *expect, - apr_size_t expectlen) + fspr_size_t expectlen) { - void *actual = apr_palloc(p, expectlen); - apr_file_t *f; + void *actual = fspr_palloc(p, expectlen); + fspr_file_t *f; APR_ASSERT_SUCCESS(tc, "open file", - apr_file_open(&f, fname, APR_READ|APR_BUFFERED, + fspr_file_open(&f, fname, APR_READ|APR_BUFFERED, 0, p)); APR_ASSERT_SUCCESS(tc, "read from file", - apr_file_read_full(f, actual, expectlen, NULL)); + fspr_file_read_full(f, actual, expectlen, NULL)); ABTS_ASSERT(tc, "matched expected file contents", memcmp(expect, actual, expectlen) == 0); - APR_ASSERT_SUCCESS(tc, "close file", apr_file_close(f)); + APR_ASSERT_SUCCESS(tc, "close file", fspr_file_close(f)); } #define LINE1 "this is a line of text\n" @@ -535,34 +535,34 @@ static void file_contents_equal(abts_case *tc, static void test_puts(abts_case *tc, void *data) { - apr_file_t *f; + fspr_file_t *f; const char *fname = "data/testputs.txt"; APR_ASSERT_SUCCESS(tc, "open file for writing", - apr_file_open(&f, fname, + fspr_file_open(&f, fname, APR_WRITE|APR_CREATE|APR_TRUNCATE, APR_OS_DEFAULT, p)); APR_ASSERT_SUCCESS(tc, "write line to file", - apr_file_puts(LINE1, f)); + fspr_file_puts(LINE1, f)); APR_ASSERT_SUCCESS(tc, "write second line to file", - apr_file_puts(LINE2, f)); + fspr_file_puts(LINE2, f)); APR_ASSERT_SUCCESS(tc, "close for writing", - apr_file_close(f)); + fspr_file_close(f)); file_contents_equal(tc, fname, LINE1 LINE2, strlen(LINE1 LINE2)); } static void test_writev(abts_case *tc, void *data) { - apr_file_t *f; - apr_size_t nbytes; + fspr_file_t *f; + fspr_size_t nbytes; struct iovec vec[5]; const char *fname = "data/testwritev.txt"; APR_ASSERT_SUCCESS(tc, "open file for writing", - apr_file_open(&f, fname, + fspr_file_open(&f, fname, APR_WRITE|APR_CREATE|APR_TRUNCATE, APR_OS_DEFAULT, p)); @@ -570,7 +570,7 @@ static void test_writev(abts_case *tc, void *data) vec[0].iov_len = strlen(LINE1); APR_ASSERT_SUCCESS(tc, "writev of size 1 to file", - apr_file_writev(f, vec, 1, &nbytes)); + fspr_file_writev(f, vec, 1, &nbytes)); file_contents_equal(tc, fname, LINE1, strlen(LINE1)); @@ -586,10 +586,10 @@ static void test_writev(abts_case *tc, void *data) vec[4].iov_len = strlen(LINE2); APR_ASSERT_SUCCESS(tc, "writev of size 5 to file", - apr_file_writev(f, vec, 5, &nbytes)); + fspr_file_writev(f, vec, 5, &nbytes)); APR_ASSERT_SUCCESS(tc, "close for writing", - apr_file_close(f)); + fspr_file_close(f)); file_contents_equal(tc, fname, LINE1 LINE1 LINE2 LINE1 LINE1 LINE2, strlen(LINE1)*4 + strlen(LINE2)*2); @@ -598,13 +598,13 @@ static void test_writev(abts_case *tc, void *data) static void test_writev_full(abts_case *tc, void *data) { - apr_file_t *f; - apr_size_t nbytes; + fspr_file_t *f; + fspr_size_t nbytes; struct iovec vec[5]; const char *fname = "data/testwritev_full.txt"; APR_ASSERT_SUCCESS(tc, "open file for writing", - apr_file_open(&f, fname, + fspr_file_open(&f, fname, APR_WRITE|APR_CREATE|APR_TRUNCATE, APR_OS_DEFAULT, p)); @@ -620,12 +620,12 @@ static void test_writev_full(abts_case *tc, void *data) vec[4].iov_len = strlen(LINE2); APR_ASSERT_SUCCESS(tc, "writev_full of size 5 to file", - apr_file_writev_full(f, vec, 5, &nbytes)); + fspr_file_writev_full(f, vec, 5, &nbytes)); ABTS_INT_EQUAL(tc, strlen(LINE1)*3 + strlen(LINE2)*2, nbytes); APR_ASSERT_SUCCESS(tc, "close for writing", - apr_file_close(f)); + fspr_file_close(f)); file_contents_equal(tc, fname, LINE1 LINE2 LINE1 LINE1 LINE2, strlen(LINE1)*3 + strlen(LINE2)*2); @@ -634,54 +634,54 @@ static void test_writev_full(abts_case *tc, void *data) static void test_truncate(abts_case *tc, void *data) { - apr_status_t rv; - apr_file_t *f; + fspr_status_t rv; + fspr_file_t *f; const char *fname = "data/testtruncate.dat"; const char *s; - apr_size_t nbytes; - apr_finfo_t finfo; + fspr_size_t nbytes; + fspr_finfo_t finfo; - apr_file_remove(fname, p); + fspr_file_remove(fname, p); - rv = apr_file_open(&f, fname, + rv = fspr_file_open(&f, fname, APR_CREATE | APR_WRITE, APR_UREAD | APR_UWRITE, p); ABTS_INT_EQUAL(tc, APR_SUCCESS, rv); s = "some data"; nbytes = strlen(s); - rv = apr_file_write(f, s, &nbytes); + rv = fspr_file_write(f, s, &nbytes); ABTS_INT_EQUAL(tc, APR_SUCCESS, rv); ABTS_INT_EQUAL(tc, strlen(s), nbytes); - rv = apr_file_close(f); + rv = fspr_file_close(f); ABTS_INT_EQUAL(tc, APR_SUCCESS, rv); - rv = apr_file_open(&f, fname, + rv = fspr_file_open(&f, fname, APR_TRUNCATE | APR_WRITE, APR_UREAD | APR_UWRITE, p); ABTS_INT_EQUAL(tc, APR_SUCCESS, rv); - rv = apr_file_close(f); + rv = fspr_file_close(f); ABTS_INT_EQUAL(tc, APR_SUCCESS, rv); - rv = apr_stat(&finfo, fname, APR_FINFO_SIZE, p); + rv = fspr_stat(&finfo, fname, APR_FINFO_SIZE, p); ABTS_INT_EQUAL(tc, APR_SUCCESS, rv); ABTS_ASSERT(tc, "File size mismatch, expected 0 (empty)", finfo.size == 0); - rv = apr_file_remove(fname, p); + rv = fspr_file_remove(fname, p); ABTS_INT_EQUAL(tc, APR_SUCCESS, rv); } static void test_bigfprintf(abts_case *tc, void *data) { - apr_file_t *f; + fspr_file_t *f; const char *fname = "data/testbigfprintf.dat"; char *to_write; int i; - apr_file_remove(fname, p); + fspr_file_remove(fname, p); APR_ASSERT_SUCCESS(tc, "open test file", - apr_file_open(&f, fname, + fspr_file_open(&f, fname, APR_CREATE|APR_WRITE, APR_UREAD|APR_UWRITE, p)); @@ -693,10 +693,10 @@ static void test_bigfprintf(abts_case *tc, void *data) strcpy(to_write + HUGE_STRING_LEN, "42"); - i = apr_file_printf(f, "%s", to_write); + i = fspr_file_printf(f, "%s", to_write); ABTS_INT_EQUAL(tc, HUGE_STRING_LEN + 2, i); - apr_file_close(f); + fspr_file_close(f); file_contents_equal(tc, fname, to_write, HUGE_STRING_LEN + 2); @@ -705,16 +705,16 @@ static void test_bigfprintf(abts_case *tc, void *data) static void test_fail_write_flush(abts_case *tc, void *data) { - apr_file_t *f; + fspr_file_t *f; const char *fname = "data/testflush.dat"; - apr_status_t rv; + fspr_status_t rv; char buf[APR_BUFFERSIZE]; int n; - apr_file_remove(fname, p); + fspr_file_remove(fname, p); APR_ASSERT_SUCCESS(tc, "open test file", - apr_file_open(&f, fname, + fspr_file_open(&f, fname, APR_CREATE|APR_READ|APR_BUFFERED, APR_UREAD|APR_UWRITE, p)); @@ -724,110 +724,110 @@ static void test_fail_write_flush(abts_case *tc, void *data) * internal buffer and actually tries to write to the file, which * was opened read-only and hence should be unwritable. */ for (n = 0, rv = APR_SUCCESS; n < 4 && rv == APR_SUCCESS; n++) { - apr_size_t bytes = sizeof buf; - rv = apr_file_write(f, buf, &bytes); + fspr_size_t bytes = sizeof buf; + rv = fspr_file_write(f, buf, &bytes); } ABTS_ASSERT(tc, "failed to write to read-only buffered fd", rv != APR_SUCCESS); - apr_file_close(f); + fspr_file_close(f); } static void test_fail_read_flush(abts_case *tc, void *data) { - apr_file_t *f; + fspr_file_t *f; const char *fname = "data/testflush.dat"; - apr_status_t rv; + fspr_status_t rv; char buf[2]; - apr_file_remove(fname, p); + fspr_file_remove(fname, p); APR_ASSERT_SUCCESS(tc, "open test file", - apr_file_open(&f, fname, + fspr_file_open(&f, fname, APR_CREATE|APR_READ|APR_BUFFERED, APR_UREAD|APR_UWRITE, p)); /* this write should be buffered. */ APR_ASSERT_SUCCESS(tc, "buffered write should succeed", - apr_file_puts("hello", f)); + fspr_file_puts("hello", f)); /* Now, trying a read should fail since the write must be flushed, * and should fail with something other than EOF since the file is * opened read-only. */ - rv = apr_file_read_full(f, buf, 2, NULL); + rv = fspr_file_read_full(f, buf, 2, NULL); ABTS_ASSERT(tc, "read should flush buffered write and fail", rv != APR_SUCCESS && rv != APR_EOF); /* Likewise for gets */ - rv = apr_file_gets(buf, 2, f); + rv = fspr_file_gets(buf, 2, f); ABTS_ASSERT(tc, "gets should flush buffered write and fail", rv != APR_SUCCESS && rv != APR_EOF); /* Likewise for seek. */ { - apr_off_t offset = 0; + fspr_off_t offset = 0; - rv = apr_file_seek(f, APR_SET, &offset); + rv = fspr_file_seek(f, APR_SET, &offset); } ABTS_ASSERT(tc, "seek should flush buffered write and fail", rv != APR_SUCCESS && rv != APR_EOF); - apr_file_close(f); + fspr_file_close(f); } static void test_xthread(abts_case *tc, void *data) { - apr_file_t *f; + fspr_file_t *f; const char *fname = "data/testxthread.dat"; - apr_status_t rv; - apr_int32_t flags = APR_CREATE|APR_READ|APR_WRITE|APR_APPEND|APR_XTHREAD; + fspr_status_t rv; + fspr_int32_t flags = APR_CREATE|APR_READ|APR_WRITE|APR_APPEND|APR_XTHREAD; char buf[128] = { 0 }; /* Test for bug 38438, opening file with append + xthread and seeking to the end of the file resulted in writes going to the beginning not the end. */ - apr_file_remove(fname, p); + fspr_file_remove(fname, p); APR_ASSERT_SUCCESS(tc, "open test file", - apr_file_open(&f, fname, flags, + fspr_file_open(&f, fname, flags, APR_UREAD|APR_UWRITE, p)); APR_ASSERT_SUCCESS(tc, "write should succeed", - apr_file_puts("hello", f)); + fspr_file_puts("hello", f)); - apr_file_close(f); + fspr_file_close(f); APR_ASSERT_SUCCESS(tc, "open test file", - apr_file_open(&f, fname, flags, + fspr_file_open(&f, fname, flags, APR_UREAD|APR_UWRITE, p)); /* Seek to the end. */ { - apr_off_t offset = 0; + fspr_off_t offset = 0; - rv = apr_file_seek(f, APR_END, &offset); + rv = fspr_file_seek(f, APR_END, &offset); } APR_ASSERT_SUCCESS(tc, "more writes should succeed", - apr_file_puts("world", f)); + fspr_file_puts("world", f)); /* Back to the beginning. */ { - apr_off_t offset = 0; + fspr_off_t offset = 0; - rv = apr_file_seek(f, APR_SET, &offset); + rv = fspr_file_seek(f, APR_SET, &offset); } - apr_file_read_full(f, buf, sizeof(buf), NULL); + fspr_file_read_full(f, buf, sizeof(buf), NULL); ABTS_STR_EQUAL(tc, "helloworld", buf); - apr_file_close(f); + fspr_file_close(f); } abts_suite *testfile(abts_suite *suite) diff --git a/libs/apr/test/testfilecopy.c b/libs/apr/test/testfilecopy.c index 730b1f01954..17d9fdda6bb 100644 --- a/libs/apr/test/testfilecopy.c +++ b/libs/apr/test/testfilecopy.c @@ -15,34 +15,34 @@ */ #include "testutil.h" -#include "apr_file_io.h" -#include "apr_file_info.h" -#include "apr_errno.h" -#include "apr_pools.h" +#include "fspr_file_io.h" +#include "fspr_file_info.h" +#include "fspr_errno.h" +#include "fspr_pools.h" static void copy_helper(abts_case *tc, const char *from, const char * to, - apr_fileperms_t perms, int append, apr_pool_t *p) + fspr_fileperms_t perms, int append, fspr_pool_t *p) { - apr_status_t rv; - apr_status_t dest_rv; - apr_finfo_t copy; - apr_finfo_t orig; - apr_finfo_t dest; + fspr_status_t rv; + fspr_status_t dest_rv; + fspr_finfo_t copy; + fspr_finfo_t orig; + fspr_finfo_t dest; - dest_rv = apr_stat(&dest, to, APR_FINFO_SIZE, p); + dest_rv = fspr_stat(&dest, to, APR_FINFO_SIZE, p); if (!append) { - rv = apr_file_copy(from, to, perms, p); + rv = fspr_file_copy(from, to, perms, p); } else { - rv = apr_file_append(from, to, perms, p); + rv = fspr_file_append(from, to, perms, p); } APR_ASSERT_SUCCESS(tc, "Error copying file", rv); - rv = apr_stat(&orig, from, APR_FINFO_SIZE, p); + rv = fspr_stat(&orig, from, APR_FINFO_SIZE, p); APR_ASSERT_SUCCESS(tc, "Couldn't stat original file", rv); - rv = apr_stat(©, to, APR_FINFO_SIZE, p); + rv = fspr_stat(©, to, APR_FINFO_SIZE, p); APR_ASSERT_SUCCESS(tc, "Couldn't stat copy file", rv); if (!append) { @@ -57,23 +57,23 @@ static void copy_helper(abts_case *tc, const char *from, const char * to, static void copy_short_file(abts_case *tc, void *data) { - apr_status_t rv; + fspr_status_t rv; /* make absolutely sure that the dest file doesn't exist. */ - apr_file_remove("data/file_copy.txt", p); + fspr_file_remove("data/file_copy.txt", p); copy_helper(tc, "data/file_datafile.txt", "data/file_copy.txt", APR_FILE_SOURCE_PERMS, 0, p); - rv = apr_file_remove("data/file_copy.txt", p); + rv = fspr_file_remove("data/file_copy.txt", p); APR_ASSERT_SUCCESS(tc, "Couldn't remove copy file", rv); } static void copy_over_existing(abts_case *tc, void *data) { - apr_status_t rv; + fspr_status_t rv; /* make absolutely sure that the dest file doesn't exist. */ - apr_file_remove("data/file_copy.txt", p); + fspr_file_remove("data/file_copy.txt", p); /* This is a cheat. I don't want to create a new file, so I just copy * one file, then I copy another. If the second copy succeeds, then @@ -85,29 +85,29 @@ static void copy_over_existing(abts_case *tc, void *data) copy_helper(tc, "data/mmap_datafile.txt", "data/file_copy.txt", APR_FILE_SOURCE_PERMS, 0, p); - rv = apr_file_remove("data/file_copy.txt", p); + rv = fspr_file_remove("data/file_copy.txt", p); APR_ASSERT_SUCCESS(tc, "Couldn't remove copy file", rv); } static void append_nonexist(abts_case *tc, void *data) { - apr_status_t rv; + fspr_status_t rv; /* make absolutely sure that the dest file doesn't exist. */ - apr_file_remove("data/file_copy.txt", p); + fspr_file_remove("data/file_copy.txt", p); copy_helper(tc, "data/file_datafile.txt", "data/file_copy.txt", APR_FILE_SOURCE_PERMS, 0, p); - rv = apr_file_remove("data/file_copy.txt", p); + rv = fspr_file_remove("data/file_copy.txt", p); APR_ASSERT_SUCCESS(tc, "Couldn't remove copy file", rv); } static void append_exist(abts_case *tc, void *data) { - apr_status_t rv; + fspr_status_t rv; /* make absolutely sure that the dest file doesn't exist. */ - apr_file_remove("data/file_copy.txt", p); + fspr_file_remove("data/file_copy.txt", p); /* This is a cheat. I don't want to create a new file, so I just copy * one file, then I copy another. If the second copy succeeds, then @@ -119,7 +119,7 @@ static void append_exist(abts_case *tc, void *data) copy_helper(tc, "data/mmap_datafile.txt", "data/file_copy.txt", APR_FILE_SOURCE_PERMS, 1, p); - rv = apr_file_remove("data/file_copy.txt", p); + rv = fspr_file_remove("data/file_copy.txt", p); APR_ASSERT_SUCCESS(tc, "Couldn't remove copy file", rv); } diff --git a/libs/apr/test/testfileinfo.c b/libs/apr/test/testfileinfo.c index f437d7dddc1..0fb02b991d3 100644 --- a/libs/apr/test/testfileinfo.c +++ b/libs/apr/test/testfileinfo.c @@ -14,13 +14,13 @@ * limitations under the License. */ -#include "apr_file_io.h" -#include "apr_file_info.h" -#include "apr_strings.h" -#include "apr_errno.h" -#include "apr_general.h" -#include "apr_poll.h" -#include "apr_lib.h" +#include "fspr_file_io.h" +#include "fspr_file_info.h" +#include "fspr_strings.h" +#include "fspr_errno.h" +#include "fspr_general.h" +#include "fspr_poll.h" +#include "fspr_lib.h" #include "testutil.h" #define FILENAME "data/file_datafile.txt" @@ -29,7 +29,7 @@ static const struct view_fileinfo { - apr_int32_t bits; + fspr_int32_t bits; char *description; } vfi[] = { {APR_FINFO_MTIME, "MTIME"}, @@ -48,99 +48,99 @@ static const struct view_fileinfo {0, NULL} }; -static void finfo_equal(abts_case *tc, apr_finfo_t *f1, apr_finfo_t *f2) +static void finfo_equal(abts_case *tc, fspr_finfo_t *f1, fspr_finfo_t *f2) { /* Minimum supported flags across all platforms (APR_FINFO_MIN) */ - ABTS_ASSERT(tc, "apr_stat and apr_getfileinfo must return APR_FINFO_TYPE", + ABTS_ASSERT(tc, "fspr_stat and fspr_getfileinfo must return APR_FINFO_TYPE", (f1->valid & f2->valid & APR_FINFO_TYPE)); - ABTS_ASSERT(tc, "apr_stat and apr_getfileinfo differ in filetype", + ABTS_ASSERT(tc, "fspr_stat and fspr_getfileinfo differ in filetype", f1->filetype == f2->filetype); - ABTS_ASSERT(tc, "apr_stat and apr_getfileinfo must return APR_FINFO_SIZE", + ABTS_ASSERT(tc, "fspr_stat and fspr_getfileinfo must return APR_FINFO_SIZE", (f1->valid & f2->valid & APR_FINFO_SIZE)); - ABTS_ASSERT(tc, "apr_stat and apr_getfileinfo differ in size", + ABTS_ASSERT(tc, "fspr_stat and fspr_getfileinfo differ in size", f1->size == f2->size); - ABTS_ASSERT(tc, "apr_stat and apr_getfileinfo must return APR_FINFO_ATIME", + ABTS_ASSERT(tc, "fspr_stat and fspr_getfileinfo must return APR_FINFO_ATIME", (f1->valid & f2->valid & APR_FINFO_ATIME)); - ABTS_ASSERT(tc, "apr_stat and apr_getfileinfo differ in atime", + ABTS_ASSERT(tc, "fspr_stat and fspr_getfileinfo differ in atime", f1->atime == f2->atime); - ABTS_ASSERT(tc, "apr_stat and apr_getfileinfo must return APR_FINFO_MTIME", + ABTS_ASSERT(tc, "fspr_stat and fspr_getfileinfo must return APR_FINFO_MTIME", (f1->valid & f2->valid & APR_FINFO_MTIME)); - ABTS_ASSERT(tc, "apr_stat and apr_getfileinfo differ in mtime", + ABTS_ASSERT(tc, "fspr_stat and fspr_getfileinfo differ in mtime", f1->mtime == f2->mtime); - ABTS_ASSERT(tc, "apr_stat and apr_getfileinfo must return APR_FINFO_CTIME", + ABTS_ASSERT(tc, "fspr_stat and fspr_getfileinfo must return APR_FINFO_CTIME", (f1->valid & f2->valid & APR_FINFO_CTIME)); - ABTS_ASSERT(tc, "apr_stat and apr_getfileinfo differ in ctime", + ABTS_ASSERT(tc, "fspr_stat and fspr_getfileinfo differ in ctime", f1->ctime == f2->ctime); if (f1->valid & f2->valid & APR_FINFO_NAME) - ABTS_ASSERT(tc, "apr_stat and apr_getfileinfo differ in name", + ABTS_ASSERT(tc, "fspr_stat and fspr_getfileinfo differ in name", !strcmp(f1->name, f2->name)); if (f1->fname && f2->fname) - ABTS_ASSERT(tc, "apr_stat and apr_getfileinfo differ in fname", + ABTS_ASSERT(tc, "fspr_stat and fspr_getfileinfo differ in fname", !strcmp(f1->fname, f2->fname)); /* Additional supported flags not supported on all platforms */ if (f1->valid & f2->valid & APR_FINFO_USER) - ABTS_ASSERT(tc, "apr_stat and apr_getfileinfo differ in user", - !apr_uid_compare(f1->user, f2->user)); + ABTS_ASSERT(tc, "fspr_stat and fspr_getfileinfo differ in user", + !fspr_uid_compare(f1->user, f2->user)); if (f1->valid & f2->valid & APR_FINFO_GROUP) - ABTS_ASSERT(tc, "apr_stat and apr_getfileinfo differ in group", - !apr_gid_compare(f1->group, f2->group)); + ABTS_ASSERT(tc, "fspr_stat and fspr_getfileinfo differ in group", + !fspr_gid_compare(f1->group, f2->group)); if (f1->valid & f2->valid & APR_FINFO_INODE) - ABTS_ASSERT(tc, "apr_stat and apr_getfileinfo differ in inode", + ABTS_ASSERT(tc, "fspr_stat and fspr_getfileinfo differ in inode", f1->inode == f2->inode); if (f1->valid & f2->valid & APR_FINFO_DEV) - ABTS_ASSERT(tc, "apr_stat and apr_getfileinfo differ in device", + ABTS_ASSERT(tc, "fspr_stat and fspr_getfileinfo differ in device", f1->device == f2->device); if (f1->valid & f2->valid & APR_FINFO_NLINK) - ABTS_ASSERT(tc, "apr_stat and apr_getfileinfo differ in nlink", + ABTS_ASSERT(tc, "fspr_stat and fspr_getfileinfo differ in nlink", f1->nlink == f2->nlink); if (f1->valid & f2->valid & APR_FINFO_CSIZE) - ABTS_ASSERT(tc, "apr_stat and apr_getfileinfo differ in csize", + ABTS_ASSERT(tc, "fspr_stat and fspr_getfileinfo differ in csize", f1->csize == f2->csize); if (f1->valid & f2->valid & APR_FINFO_PROT) - ABTS_ASSERT(tc, "apr_stat and apr_getfileinfo differ in protection", + ABTS_ASSERT(tc, "fspr_stat and fspr_getfileinfo differ in protection", f1->protection == f2->protection); } static void test_info_get(abts_case *tc, void *data) { - apr_file_t *thefile; - apr_finfo_t finfo; - apr_status_t rv; + fspr_file_t *thefile; + fspr_finfo_t finfo; + fspr_status_t rv; - rv = apr_file_open(&thefile, FILENAME, APR_READ, APR_OS_DEFAULT, p); + rv = fspr_file_open(&thefile, FILENAME, APR_READ, APR_OS_DEFAULT, p); ABTS_INT_EQUAL(tc, APR_SUCCESS, rv); - rv = apr_file_info_get(&finfo, APR_FINFO_NORM, thefile); + rv = fspr_file_info_get(&finfo, APR_FINFO_NORM, thefile); if (rv == APR_INCOMPLETE) { char *str; int i; - str = apr_pstrdup(p, "APR_INCOMPLETE: Missing "); + str = fspr_pstrdup(p, "APR_INCOMPLETE: Missing "); for (i = 0; vfi[i].bits; ++i) { if (vfi[i].bits & ~finfo.valid) { - str = apr_pstrcat(p, str, vfi[i].description, " ", NULL); + str = fspr_pstrcat(p, str, vfi[i].description, " ", NULL); } } ABTS_FAIL(tc, str); } ABTS_INT_EQUAL(tc, APR_SUCCESS, rv); - apr_file_close(thefile); + fspr_file_close(thefile); } static void test_stat(abts_case *tc, void *data) { - apr_finfo_t finfo; - apr_status_t rv; + fspr_finfo_t finfo; + fspr_status_t rv; - rv = apr_stat(&finfo, FILENAME, APR_FINFO_NORM, p); + rv = fspr_stat(&finfo, FILENAME, APR_FINFO_NORM, p); if (rv == APR_INCOMPLETE) { char *str; int i; - str = apr_pstrdup(p, "APR_INCOMPLETE: Missing "); + str = fspr_pstrdup(p, "APR_INCOMPLETE: Missing "); for (i = 0; vfi[i].bits; ++i) { if (vfi[i].bits & ~finfo.valid) { - str = apr_pstrcat(p, str, vfi[i].description, " ", NULL); + str = fspr_pstrcat(p, str, vfi[i].description, " ", NULL); } } ABTS_FAIL(tc, str); @@ -150,36 +150,36 @@ static void test_stat(abts_case *tc, void *data) static void test_stat_eq_finfo(abts_case *tc, void *data) { - apr_file_t *thefile; - apr_finfo_t finfo; - apr_finfo_t stat_finfo; - apr_status_t rv; + fspr_file_t *thefile; + fspr_finfo_t finfo; + fspr_finfo_t stat_finfo; + fspr_status_t rv; - rv = apr_file_open(&thefile, FILENAME, APR_READ, APR_OS_DEFAULT, p); + rv = fspr_file_open(&thefile, FILENAME, APR_READ, APR_OS_DEFAULT, p); ABTS_INT_EQUAL(tc, APR_SUCCESS, rv); - rv = apr_file_info_get(&finfo, APR_FINFO_NORM, thefile); + rv = fspr_file_info_get(&finfo, APR_FINFO_NORM, thefile); /* Opening the file may have toggled the atime member (time last - * accessed), so fetch our apr_stat() after getting the fileinfo + * accessed), so fetch our fspr_stat() after getting the fileinfo * of the open file... */ - rv = apr_stat(&stat_finfo, FILENAME, APR_FINFO_NORM, p); + rv = fspr_stat(&stat_finfo, FILENAME, APR_FINFO_NORM, p); ABTS_INT_EQUAL(tc, APR_SUCCESS, rv); - apr_file_close(thefile); + fspr_file_close(thefile); finfo_equal(tc, &stat_finfo, &finfo); } static void test_buffered_write_size(abts_case *tc, void *data) { - const apr_size_t data_len = strlen(NEWFILEDATA); - apr_file_t *thefile; - apr_finfo_t finfo; - apr_status_t rv; - apr_size_t bytes; + const fspr_size_t data_len = strlen(NEWFILEDATA); + fspr_file_t *thefile; + fspr_finfo_t finfo; + fspr_status_t rv; + fspr_size_t bytes; - rv = apr_file_open(&thefile, NEWFILENAME, + rv = fspr_file_open(&thefile, NEWFILENAME, APR_READ | APR_WRITE | APR_CREATE | APR_TRUNCATE | APR_BUFFERED | APR_DELONCLOSE, APR_OS_DEFAULT, p); @@ -187,46 +187,46 @@ static void test_buffered_write_size(abts_case *tc, void *data) /* A funny thing happened to me the other day: I wrote something * into a buffered file, then asked for its size using - * apr_file_info_get; and guess what? The size was 0! That's not a + * fspr_file_info_get; and guess what? The size was 0! That's not a * nice way to behave. */ bytes = data_len; - rv = apr_file_write(thefile, NEWFILEDATA, &bytes); + rv = fspr_file_write(thefile, NEWFILEDATA, &bytes); APR_ASSERT_SUCCESS(tc, "write file contents", rv); ABTS_TRUE(tc, data_len == bytes); - rv = apr_file_info_get(&finfo, APR_FINFO_SIZE, thefile); + rv = fspr_file_info_get(&finfo, APR_FINFO_SIZE, thefile); APR_ASSERT_SUCCESS(tc, "get file size", rv); - ABTS_TRUE(tc, bytes == (apr_size_t) finfo.size); - apr_file_close(thefile); + ABTS_TRUE(tc, bytes == (fspr_size_t) finfo.size); + fspr_file_close(thefile); } static void test_mtime_set(abts_case *tc, void *data) { - apr_file_t *thefile; - apr_finfo_t finfo; - apr_time_t epoch = 0; - apr_status_t rv; + fspr_file_t *thefile; + fspr_finfo_t finfo; + fspr_time_t epoch = 0; + fspr_status_t rv; /* This test sort of depends on the system clock being at least * marginally ccorrect; We'll be setting the modification time to * the epoch. */ - rv = apr_file_open(&thefile, NEWFILENAME, + rv = fspr_file_open(&thefile, NEWFILENAME, APR_READ | APR_WRITE | APR_CREATE | APR_TRUNCATE | APR_BUFFERED | APR_DELONCLOSE, APR_OS_DEFAULT, p); APR_ASSERT_SUCCESS(tc, "open file", rv); /* Check that the current mtime is not the epoch */ - rv = apr_stat(&finfo, NEWFILENAME, APR_FINFO_MTIME, p); + rv = fspr_stat(&finfo, NEWFILENAME, APR_FINFO_MTIME, p); if (rv == APR_INCOMPLETE) { char *str; int i; - str = apr_pstrdup(p, "APR_INCOMPLETE: Missing "); + str = fspr_pstrdup(p, "APR_INCOMPLETE: Missing "); for (i = 0; vfi[i].bits; ++i) { if (vfi[i].bits & ~finfo.valid) { - str = apr_pstrcat(p, str, vfi[i].description, " ", NULL); + str = fspr_pstrcat(p, str, vfi[i].description, " ", NULL); } } ABTS_FAIL(tc, str); @@ -235,17 +235,17 @@ static void test_mtime_set(abts_case *tc, void *data) ABTS_TRUE(tc, finfo.mtime != epoch); /* Reset the mtime to the epoch and verify the result. - * Note: we blindly assume that if the first apr_stat succeeded, + * Note: we blindly assume that if the first fspr_stat succeeded, * the second one will, too. */ - rv = apr_file_mtime_set(NEWFILENAME, epoch, p); + rv = fspr_file_mtime_set(NEWFILENAME, epoch, p); APR_ASSERT_SUCCESS(tc, "set mtime", rv); - rv = apr_stat(&finfo, NEWFILENAME, APR_FINFO_MTIME, p); + rv = fspr_stat(&finfo, NEWFILENAME, APR_FINFO_MTIME, p); APR_ASSERT_SUCCESS(tc, "get modified mtime", rv); ABTS_TRUE(tc, finfo.mtime == epoch); - apr_file_close(thefile); + fspr_file_close(thefile); } abts_suite *testfileinfo(abts_suite *suite) diff --git a/libs/apr/test/testflock.c b/libs/apr/test/testflock.c index 6eac94a7a00..545ba300ce4 100644 --- a/libs/apr/test/testflock.c +++ b/libs/apr/test/testflock.c @@ -16,39 +16,39 @@ #include "testflock.h" #include "testutil.h" -#include "apr_pools.h" -#include "apr_thread_proc.h" -#include "apr_file_io.h" -#include "apr_file_info.h" -#include "apr_general.h" -#include "apr_strings.h" +#include "fspr_pools.h" +#include "fspr_thread_proc.h" +#include "fspr_file_io.h" +#include "fspr_file_info.h" +#include "fspr_general.h" +#include "fspr_strings.h" static int launch_reader(abts_case *tc) { - apr_proc_t proc = {0}; - apr_procattr_t *procattr; + fspr_proc_t proc = {0}; + fspr_procattr_t *procattr; const char *args[2]; - apr_status_t rv; - apr_exit_why_e why; + fspr_status_t rv; + fspr_exit_why_e why; int exitcode; - rv = apr_procattr_create(&procattr, p); + rv = fspr_procattr_create(&procattr, p); APR_ASSERT_SUCCESS(tc, "Couldn't create procattr", rv); - rv = apr_procattr_io_set(procattr, APR_NO_PIPE, APR_NO_PIPE, + rv = fspr_procattr_io_set(procattr, APR_NO_PIPE, APR_NO_PIPE, APR_NO_PIPE); APR_ASSERT_SUCCESS(tc, "Couldn't set io in procattr", rv); - rv = apr_procattr_error_check_set(procattr, 1); + rv = fspr_procattr_error_check_set(procattr, 1); APR_ASSERT_SUCCESS(tc, "Couldn't set error check in procattr", rv); args[0] = "tryread" EXTENSION; args[1] = NULL; - rv = apr_proc_create(&proc, "./tryread" EXTENSION, args, NULL, procattr, p); + rv = fspr_proc_create(&proc, "./tryread" EXTENSION, args, NULL, procattr, p); APR_ASSERT_SUCCESS(tc, "Couldn't launch program", rv); ABTS_ASSERT(tc, "wait for child process", - apr_proc_wait(&proc, &exitcode, &why, APR_WAIT) == APR_CHILD_DONE); + fspr_proc_wait(&proc, &exitcode, &why, APR_WAIT) == APR_CHILD_DONE); ABTS_ASSERT(tc, "child terminated normally", why == APR_PROC_EXIT); return exitcode; @@ -56,23 +56,23 @@ static int launch_reader(abts_case *tc) static void test_withlock(abts_case *tc, void *data) { - apr_file_t *file; - apr_status_t rv; + fspr_file_t *file; + fspr_status_t rv; int code; - rv = apr_file_open(&file, TESTFILE, APR_WRITE|APR_CREATE, + rv = fspr_file_open(&file, TESTFILE, APR_WRITE|APR_CREATE, APR_OS_DEFAULT, p); APR_ASSERT_SUCCESS(tc, "Could not create file.", rv); ABTS_PTR_NOTNULL(tc, file); - rv = apr_file_lock(file, APR_FLOCK_EXCLUSIVE); + rv = fspr_file_lock(file, APR_FLOCK_EXCLUSIVE); APR_ASSERT_SUCCESS(tc, "Could not lock the file.", rv); ABTS_PTR_NOTNULL(tc, file); code = launch_reader(tc); ABTS_INT_EQUAL(tc, FAILED_READ, code); - (void) apr_file_close(file); + (void) fspr_file_close(file); } static void test_withoutlock(abts_case *tc, void *data) @@ -86,7 +86,7 @@ static void test_withoutlock(abts_case *tc, void *data) static void remove_lockfile(abts_case *tc, void *data) { APR_ASSERT_SUCCESS(tc, "Couldn't remove lock file.", - apr_file_remove(TESTFILE, p)); + fspr_file_remove(TESTFILE, p)); } abts_suite *testflock(abts_suite *suite) diff --git a/libs/apr/test/testfmt.c b/libs/apr/test/testfmt.c index 9ddb639f0f3..5e345c45e84 100644 --- a/libs/apr/test/testfmt.c +++ b/libs/apr/test/testfmt.c @@ -15,40 +15,40 @@ */ #include "testutil.h" -#include "apr.h" -#include "apr_portable.h" -#include "apr_strings.h" +#include "fspr.h" +#include "fspr_portable.h" +#include "fspr_strings.h" static void ssize_t_fmt(abts_case *tc, void *data) { char buf[100]; - apr_ssize_t var = 0; + fspr_ssize_t var = 0; sprintf(buf, "%" APR_SSIZE_T_FMT, var); ABTS_STR_EQUAL(tc, "0", buf); - apr_snprintf(buf, sizeof(buf), "%" APR_SSIZE_T_FMT, var); + fspr_snprintf(buf, sizeof(buf), "%" APR_SSIZE_T_FMT, var); ABTS_STR_EQUAL(tc, "0", buf); } static void size_t_fmt(abts_case *tc, void *data) { char buf[100]; - apr_size_t var = 0; + fspr_size_t var = 0; sprintf(buf, "%" APR_SIZE_T_FMT, var); ABTS_STR_EQUAL(tc, "0", buf); - apr_snprintf(buf, sizeof(buf), "%" APR_SIZE_T_FMT, var); + fspr_snprintf(buf, sizeof(buf), "%" APR_SIZE_T_FMT, var); ABTS_STR_EQUAL(tc, "0", buf); } static void off_t_fmt(abts_case *tc, void *data) { char buf[100]; - apr_off_t var = 0; + fspr_off_t var = 0; sprintf(buf, "%" APR_OFF_T_FMT, var); ABTS_STR_EQUAL(tc, "0", buf); - apr_snprintf(buf, sizeof(buf), "%" APR_OFF_T_FMT, var); + fspr_snprintf(buf, sizeof(buf), "%" APR_OFF_T_FMT, var); ABTS_STR_EQUAL(tc, "0", buf); } @@ -59,61 +59,61 @@ static void pid_t_fmt(abts_case *tc, void *data) sprintf(buf, "%" APR_PID_T_FMT, var); ABTS_STR_EQUAL(tc, "0", buf); - apr_snprintf(buf, sizeof(buf), "%" APR_PID_T_FMT, var); + fspr_snprintf(buf, sizeof(buf), "%" APR_PID_T_FMT, var); ABTS_STR_EQUAL(tc, "0", buf); } static void int64_t_fmt(abts_case *tc, void *data) { char buf[100]; - apr_int64_t var = 0; + fspr_int64_t var = 0; sprintf(buf, "%" APR_INT64_T_FMT, var); ABTS_STR_EQUAL(tc, "0", buf); - apr_snprintf(buf, sizeof(buf), "%" APR_INT64_T_FMT, var); + fspr_snprintf(buf, sizeof(buf), "%" APR_INT64_T_FMT, var); ABTS_STR_EQUAL(tc, "0", buf); } static void uint64_t_fmt(abts_case *tc, void *data) { char buf[100]; - apr_uint64_t var = APR_UINT64_C(14000000); + fspr_uint64_t var = APR_UINT64_C(14000000); sprintf(buf, "%" APR_UINT64_T_FMT, var); ABTS_STR_EQUAL(tc, "14000000", buf); - apr_snprintf(buf, sizeof(buf), "%" APR_UINT64_T_FMT, var); + fspr_snprintf(buf, sizeof(buf), "%" APR_UINT64_T_FMT, var); ABTS_STR_EQUAL(tc, "14000000", buf); } static void uint64_t_hex_fmt(abts_case *tc, void *data) { char buf[100]; - apr_uint64_t var = APR_UINT64_C(14000000); + fspr_uint64_t var = APR_UINT64_C(14000000); sprintf(buf, "%" APR_UINT64_T_HEX_FMT, var); ABTS_STR_EQUAL(tc, "d59f80", buf); - apr_snprintf(buf, sizeof(buf), "%" APR_UINT64_T_HEX_FMT, var); + fspr_snprintf(buf, sizeof(buf), "%" APR_UINT64_T_HEX_FMT, var); ABTS_STR_EQUAL(tc, "d59f80", buf); } static void more_int64_fmts(abts_case *tc, void *data) { char buf[100]; - apr_int64_t i = APR_INT64_C(-42); - apr_int64_t ibig = APR_INT64_C(-314159265358979323); - apr_uint64_t ui = APR_UINT64_C(42); - apr_uint64_t big = APR_UINT64_C(3141592653589793238); + fspr_int64_t i = APR_INT64_C(-42); + fspr_int64_t ibig = APR_INT64_C(-314159265358979323); + fspr_uint64_t ui = APR_UINT64_C(42); + fspr_uint64_t big = APR_UINT64_C(3141592653589793238); - apr_snprintf(buf, sizeof buf, "%" APR_INT64_T_FMT, i); + fspr_snprintf(buf, sizeof buf, "%" APR_INT64_T_FMT, i); ABTS_STR_EQUAL(tc, buf, "-42"); - apr_snprintf(buf, sizeof buf, "%" APR_UINT64_T_FMT, ui); + fspr_snprintf(buf, sizeof buf, "%" APR_UINT64_T_FMT, ui); ABTS_STR_EQUAL(tc, buf, "42"); - apr_snprintf(buf, sizeof buf, "%" APR_UINT64_T_FMT, big); + fspr_snprintf(buf, sizeof buf, "%" APR_UINT64_T_FMT, big); ABTS_STR_EQUAL(tc, buf, "3141592653589793238"); - apr_snprintf(buf, sizeof buf, "%" APR_INT64_T_FMT, ibig); + fspr_snprintf(buf, sizeof buf, "%" APR_INT64_T_FMT, ibig); ABTS_STR_EQUAL(tc, buf, "-314159265358979323"); } diff --git a/libs/apr/test/testfnmatch.c b/libs/apr/test/testfnmatch.c index b54502fd295..41f8bb34b29 100644 --- a/libs/apr/test/testfnmatch.c +++ b/libs/apr/test/testfnmatch.c @@ -15,9 +15,9 @@ */ #include "testutil.h" -#include "apr_file_info.h" -#include "apr_fnmatch.h" -#include "apr_tables.h" +#include "fspr_file_info.h" +#include "fspr_fnmatch.h" +#include "fspr_tables.h" /* XXX NUM_FILES must be equal to the nummber of expected files with a * .txt extension in the data directory at the time testfnmatch @@ -29,10 +29,10 @@ static void test_glob(abts_case *tc, void *data) { int i; char **list; - apr_array_header_t *result; + fspr_array_header_t *result; APR_ASSERT_SUCCESS(tc, "glob match against data/*.txt", - apr_match_glob("data\\*.txt", &result, p)); + fspr_match_glob("data\\*.txt", &result, p)); ABTS_INT_EQUAL(tc, NUM_FILES, result->nelts); @@ -47,11 +47,11 @@ static void test_glob_currdir(abts_case *tc, void *data) { int i; char **list; - apr_array_header_t *result; - apr_filepath_set("data", p); + fspr_array_header_t *result; + fspr_filepath_set("data", p); APR_ASSERT_SUCCESS(tc, "glob match against *.txt with data as current", - apr_match_glob("*.txt", &result, p)); + fspr_match_glob("*.txt", &result, p)); ABTS_INT_EQUAL(tc, NUM_FILES, result->nelts); @@ -61,7 +61,7 @@ static void test_glob_currdir(abts_case *tc, void *data) char *dot = strrchr(list[i], '.'); ABTS_STR_EQUAL(tc, dot, ".txt"); } - apr_filepath_set("..", p); + fspr_filepath_set("..", p); } abts_suite *testfnmatch(abts_suite *suite) diff --git a/libs/apr/test/testglobalmutex.c b/libs/apr/test/testglobalmutex.c index a10742d92fe..b0d2f509769 100644 --- a/libs/apr/test/testglobalmutex.c +++ b/libs/apr/test/testglobalmutex.c @@ -15,51 +15,51 @@ */ #include "testglobalmutex.h" -#include "apr_thread_proc.h" -#include "apr_global_mutex.h" -#include "apr_strings.h" -#include "apr_errno.h" +#include "fspr_thread_proc.h" +#include "fspr_global_mutex.h" +#include "fspr_strings.h" +#include "fspr_errno.h" #include "testutil.h" -static void launch_child(abts_case *tc, apr_lockmech_e mech, - apr_proc_t *proc, apr_pool_t *p) +static void launch_child(abts_case *tc, fspr_lockmech_e mech, + fspr_proc_t *proc, fspr_pool_t *p) { - apr_procattr_t *procattr; + fspr_procattr_t *procattr; const char *args[3]; - apr_status_t rv; + fspr_status_t rv; - rv = apr_procattr_create(&procattr, p); + rv = fspr_procattr_create(&procattr, p); APR_ASSERT_SUCCESS(tc, "Couldn't create procattr", rv); - rv = apr_procattr_io_set(procattr, APR_NO_PIPE, APR_NO_PIPE, + rv = fspr_procattr_io_set(procattr, APR_NO_PIPE, APR_NO_PIPE, APR_NO_PIPE); APR_ASSERT_SUCCESS(tc, "Couldn't set io in procattr", rv); - rv = apr_procattr_error_check_set(procattr, 1); + rv = fspr_procattr_error_check_set(procattr, 1); APR_ASSERT_SUCCESS(tc, "Couldn't set error check in procattr", rv); args[0] = "globalmutexchild" EXTENSION; - args[1] = (const char*)apr_itoa(p, (int)mech); + args[1] = (const char*)fspr_itoa(p, (int)mech); args[2] = NULL; - rv = apr_proc_create(proc, "./globalmutexchild" EXTENSION, args, NULL, + rv = fspr_proc_create(proc, "./globalmutexchild" EXTENSION, args, NULL, procattr, p); APR_ASSERT_SUCCESS(tc, "Couldn't launch program", rv); } -static int wait_child(abts_case *tc, apr_proc_t *proc) +static int wait_child(abts_case *tc, fspr_proc_t *proc) { int exitcode; - apr_exit_why_e why; + fspr_exit_why_e why; ABTS_ASSERT(tc, "Error waiting for child process", - apr_proc_wait(proc, &exitcode, &why, APR_WAIT) == APR_CHILD_DONE); + fspr_proc_wait(proc, &exitcode, &why, APR_WAIT) == APR_CHILD_DONE); ABTS_ASSERT(tc, "child didn't terminate normally", why == APR_PROC_EXIT); return exitcode; } /* return symbolic name for a locking meechanism */ -static const char *mutexname(apr_lockmech_e mech) +static const char *mutexname(fspr_lockmech_e mech) { switch (mech) { case APR_LOCK_FCNTL: return "fcntl"; @@ -74,15 +74,15 @@ static const char *mutexname(apr_lockmech_e mech) static void test_exclusive(abts_case *tc, void *data) { - apr_lockmech_e mech = *(apr_lockmech_e *)data; - apr_proc_t p1, p2, p3, p4; - apr_status_t rv; - apr_global_mutex_t *global_lock; + fspr_lockmech_e mech = *(fspr_lockmech_e *)data; + fspr_proc_t p1, p2, p3, p4; + fspr_status_t rv; + fspr_global_mutex_t *global_lock; int x = 0; abts_log_message("lock mechanism is: "); abts_log_message(mutexname(mech)); - rv = apr_global_mutex_create(&global_lock, LOCKNAME, mech, p); + rv = fspr_global_mutex_create(&global_lock, LOCKNAME, mech, p); APR_ASSERT_SUCCESS(tc, "Error creating mutex", rv); launch_child(tc, mech, &p1, p); @@ -105,7 +105,7 @@ static void test_exclusive(abts_case *tc, void *data) abts_suite *testglobalmutex(abts_suite *suite) { - apr_lockmech_e mech = APR_LOCK_DEFAULT; + fspr_lockmech_e mech = APR_LOCK_DEFAULT; suite = ADD_SUITE(suite) abts_run_test(suite, test_exclusive, &mech); diff --git a/libs/apr/test/testglobalmutex.h b/libs/apr/test/testglobalmutex.h index 027062843dc..a23df50fe40 100644 --- a/libs/apr/test/testglobalmutex.h +++ b/libs/apr/test/testglobalmutex.h @@ -21,7 +21,7 @@ #define MAX_ITER 255 #define MAX_COUNTER (MAX_ITER * 4) -#define LOCKNAME "data/apr_globalmutex.lock" +#define LOCKNAME "data/fspr_globalmutex.lock" #endif diff --git a/libs/apr/test/testhash.c b/libs/apr/test/testhash.c index c9b1cdb07c1..924d722e6ec 100644 --- a/libs/apr/test/testhash.c +++ b/libs/apr/test/testhash.c @@ -15,41 +15,41 @@ */ #include "testutil.h" -#include "apr.h" -#include "apr_strings.h" -#include "apr_general.h" -#include "apr_pools.h" -#include "apr_hash.h" +#include "fspr.h" +#include "fspr_strings.h" +#include "fspr_general.h" +#include "fspr_pools.h" +#include "fspr_hash.h" -static void dump_hash(apr_pool_t *p, apr_hash_t *h, char *str) +static void dump_hash(fspr_pool_t *p, fspr_hash_t *h, char *str) { - apr_hash_index_t *hi; + fspr_hash_index_t *hi; char *val, *key; - apr_ssize_t len; + fspr_ssize_t len; int i = 0; str[0] = '\0'; - for (hi = apr_hash_first(p, h); hi; hi = apr_hash_next(hi)) { - apr_hash_this(hi,(void*) &key, &len, (void*) &val); - apr_snprintf(str, 8196, "%sKey %s (%" APR_SSIZE_T_FMT ") Value %s\n", + for (hi = fspr_hash_first(p, h); hi; hi = fspr_hash_next(hi)) { + fspr_hash_this(hi,(void*) &key, &len, (void*) &val); + fspr_snprintf(str, 8196, "%sKey %s (%" APR_SSIZE_T_FMT ") Value %s\n", str, key, len, val); i++; } - apr_snprintf(str, 8196, "%s#entries %d\n", str, i); + fspr_snprintf(str, 8196, "%s#entries %d\n", str, i); } -static void sum_hash(apr_pool_t *p, apr_hash_t *h, int *pcount, int *keySum, int *valSum) +static void sum_hash(fspr_pool_t *p, fspr_hash_t *h, int *pcount, int *keySum, int *valSum) { - apr_hash_index_t *hi; + fspr_hash_index_t *hi; void *val, *key; int count = 0; *keySum = 0; *valSum = 0; *pcount = 0; - for (hi = apr_hash_first(p, h); hi; hi = apr_hash_next(hi)) { - apr_hash_this(hi, (void*)&key, NULL, &val); + for (hi = fspr_hash_first(p, h); hi; hi = fspr_hash_next(hi)) { + fspr_hash_this(hi, (void*)&key, NULL, &val); *valSum += *(int *)val; *keySum += *(int *)key; count++; @@ -59,60 +59,60 @@ static void sum_hash(apr_pool_t *p, apr_hash_t *h, int *pcount, int *keySum, int static void hash_make(abts_case *tc, void *data) { - apr_hash_t *h = NULL; + fspr_hash_t *h = NULL; - h = apr_hash_make(p); + h = fspr_hash_make(p); ABTS_PTR_NOTNULL(tc, h); } static void hash_set(abts_case *tc, void *data) { - apr_hash_t *h = NULL; + fspr_hash_t *h = NULL; char *result = NULL; - h = apr_hash_make(p); + h = fspr_hash_make(p); ABTS_PTR_NOTNULL(tc, h); - apr_hash_set(h, "key", APR_HASH_KEY_STRING, "value"); - result = apr_hash_get(h, "key", APR_HASH_KEY_STRING); + fspr_hash_set(h, "key", APR_HASH_KEY_STRING, "value"); + result = fspr_hash_get(h, "key", APR_HASH_KEY_STRING); ABTS_STR_EQUAL(tc, "value", result); } static void hash_reset(abts_case *tc, void *data) { - apr_hash_t *h = NULL; + fspr_hash_t *h = NULL; char *result = NULL; - h = apr_hash_make(p); + h = fspr_hash_make(p); ABTS_PTR_NOTNULL(tc, h); - apr_hash_set(h, "key", APR_HASH_KEY_STRING, "value"); - result = apr_hash_get(h, "key", APR_HASH_KEY_STRING); + fspr_hash_set(h, "key", APR_HASH_KEY_STRING, "value"); + result = fspr_hash_get(h, "key", APR_HASH_KEY_STRING); ABTS_STR_EQUAL(tc, "value", result); - apr_hash_set(h, "key", APR_HASH_KEY_STRING, "new"); - result = apr_hash_get(h, "key", APR_HASH_KEY_STRING); + fspr_hash_set(h, "key", APR_HASH_KEY_STRING, "new"); + result = fspr_hash_get(h, "key", APR_HASH_KEY_STRING); ABTS_STR_EQUAL(tc, "new", result); } static void same_value(abts_case *tc, void *data) { - apr_hash_t *h = NULL; + fspr_hash_t *h = NULL; char *result = NULL; - h = apr_hash_make(p); + h = fspr_hash_make(p); ABTS_PTR_NOTNULL(tc, h); - apr_hash_set(h, "same1", APR_HASH_KEY_STRING, "same"); - result = apr_hash_get(h, "same1", APR_HASH_KEY_STRING); + fspr_hash_set(h, "same1", APR_HASH_KEY_STRING, "same"); + result = fspr_hash_get(h, "same1", APR_HASH_KEY_STRING); ABTS_STR_EQUAL(tc, "same", result); - apr_hash_set(h, "same2", APR_HASH_KEY_STRING, "same"); - result = apr_hash_get(h, "same2", APR_HASH_KEY_STRING); + fspr_hash_set(h, "same2", APR_HASH_KEY_STRING, "same"); + result = fspr_hash_get(h, "same2", APR_HASH_KEY_STRING); ABTS_STR_EQUAL(tc, "same", result); } -static unsigned int hash_custom( const char *key, apr_ssize_t *klen) +static unsigned int hash_custom( const char *key, fspr_ssize_t *klen) { unsigned int hash = 0; while( *klen ) { @@ -124,55 +124,55 @@ static unsigned int hash_custom( const char *key, apr_ssize_t *klen) static void same_value_custom(abts_case *tc, void *data) { - apr_hash_t *h = NULL; + fspr_hash_t *h = NULL; char *result = NULL; - h = apr_hash_make_custom(p, hash_custom); + h = fspr_hash_make_custom(p, hash_custom); ABTS_PTR_NOTNULL(tc, h); - apr_hash_set(h, "same1", 5, "same"); - result = apr_hash_get(h, "same1", 5); + fspr_hash_set(h, "same1", 5, "same"); + result = fspr_hash_get(h, "same1", 5); ABTS_STR_EQUAL(tc, "same", result); - apr_hash_set(h, "same2", 5, "same"); - result = apr_hash_get(h, "same2", 5); + fspr_hash_set(h, "same2", 5, "same"); + result = fspr_hash_get(h, "same2", 5); ABTS_STR_EQUAL(tc, "same", result); } static void key_space(abts_case *tc, void *data) { - apr_hash_t *h = NULL; + fspr_hash_t *h = NULL; char *result = NULL; - h = apr_hash_make(p); + h = fspr_hash_make(p); ABTS_PTR_NOTNULL(tc, h); - apr_hash_set(h, "key with space", APR_HASH_KEY_STRING, "value"); - result = apr_hash_get(h, "key with space", APR_HASH_KEY_STRING); + fspr_hash_set(h, "key with space", APR_HASH_KEY_STRING, "value"); + result = fspr_hash_get(h, "key with space", APR_HASH_KEY_STRING); ABTS_STR_EQUAL(tc, "value", result); } /* This is kind of a hack, but I am just keeping an existing test. This is - * really testing apr_hash_first, apr_hash_next, and apr_hash_this which + * really testing fspr_hash_first, fspr_hash_next, and fspr_hash_this which * should be tested in three separate tests, but this will do for now. */ static void hash_traverse(abts_case *tc, void *data) { - apr_hash_t *h; + fspr_hash_t *h; char str[8196]; - h = apr_hash_make(p); + h = fspr_hash_make(p); ABTS_PTR_NOTNULL(tc, h); - apr_hash_set(h, "OVERWRITE", APR_HASH_KEY_STRING, "should not see this"); - apr_hash_set(h, "FOO3", APR_HASH_KEY_STRING, "bar3"); - apr_hash_set(h, "FOO3", APR_HASH_KEY_STRING, "bar3"); - apr_hash_set(h, "FOO1", APR_HASH_KEY_STRING, "bar1"); - apr_hash_set(h, "FOO2", APR_HASH_KEY_STRING, "bar2"); - apr_hash_set(h, "FOO4", APR_HASH_KEY_STRING, "bar4"); - apr_hash_set(h, "SAME1", APR_HASH_KEY_STRING, "same"); - apr_hash_set(h, "SAME2", APR_HASH_KEY_STRING, "same"); - apr_hash_set(h, "OVERWRITE", APR_HASH_KEY_STRING, "Overwrite key"); + fspr_hash_set(h, "OVERWRITE", APR_HASH_KEY_STRING, "should not see this"); + fspr_hash_set(h, "FOO3", APR_HASH_KEY_STRING, "bar3"); + fspr_hash_set(h, "FOO3", APR_HASH_KEY_STRING, "bar3"); + fspr_hash_set(h, "FOO1", APR_HASH_KEY_STRING, "bar1"); + fspr_hash_set(h, "FOO2", APR_HASH_KEY_STRING, "bar2"); + fspr_hash_set(h, "FOO4", APR_HASH_KEY_STRING, "bar4"); + fspr_hash_set(h, "SAME1", APR_HASH_KEY_STRING, "same"); + fspr_hash_set(h, "SAME2", APR_HASH_KEY_STRING, "same"); + fspr_hash_set(h, "OVERWRITE", APR_HASH_KEY_STRING, "Overwrite key"); dump_hash(p, h, str); ABTS_STR_EQUAL(tc, "Key FOO1 (4) Value bar1\n" @@ -186,16 +186,16 @@ static void hash_traverse(abts_case *tc, void *data) } /* This is kind of a hack, but I am just keeping an existing test. This is - * really testing apr_hash_first, apr_hash_next, and apr_hash_this which + * really testing fspr_hash_first, fspr_hash_next, and fspr_hash_this which * should be tested in three separate tests, but this will do for now. */ static void summation_test(abts_case *tc, void *data) { - apr_hash_t *h; + fspr_hash_t *h; int sumKeys, sumVal, trySumKey, trySumVal; int i, j, *val, *key; - h =apr_hash_make(p); + h =fspr_hash_make(p); ABTS_PTR_NOTNULL(tc, h); sumKeys = 0; @@ -207,11 +207,11 @@ static void summation_test(abts_case *tc, void *data) j = i * 10 + 1; sumKeys += j; sumVal += i; - key = apr_palloc(p, sizeof(int)); + key = fspr_palloc(p, sizeof(int)); *key = j; - val = apr_palloc(p, sizeof(int)); + val = fspr_palloc(p, sizeof(int)); *val = i; - apr_hash_set(h, key, sizeof(int), val); + fspr_hash_set(h, key, sizeof(int), val); } sum_hash(p, h, &i, &trySumKey, &trySumVal); @@ -222,96 +222,96 @@ static void summation_test(abts_case *tc, void *data) static void delete_key(abts_case *tc, void *data) { - apr_hash_t *h = NULL; + fspr_hash_t *h = NULL; char *result = NULL; - h = apr_hash_make(p); + h = fspr_hash_make(p); ABTS_PTR_NOTNULL(tc, h); - apr_hash_set(h, "key", APR_HASH_KEY_STRING, "value"); - apr_hash_set(h, "key2", APR_HASH_KEY_STRING, "value2"); + fspr_hash_set(h, "key", APR_HASH_KEY_STRING, "value"); + fspr_hash_set(h, "key2", APR_HASH_KEY_STRING, "value2"); - result = apr_hash_get(h, "key", APR_HASH_KEY_STRING); + result = fspr_hash_get(h, "key", APR_HASH_KEY_STRING); ABTS_STR_EQUAL(tc, "value", result); - result = apr_hash_get(h, "key2", APR_HASH_KEY_STRING); + result = fspr_hash_get(h, "key2", APR_HASH_KEY_STRING); ABTS_STR_EQUAL(tc, "value2", result); - apr_hash_set(h, "key", APR_HASH_KEY_STRING, NULL); + fspr_hash_set(h, "key", APR_HASH_KEY_STRING, NULL); - result = apr_hash_get(h, "key", APR_HASH_KEY_STRING); + result = fspr_hash_get(h, "key", APR_HASH_KEY_STRING); ABTS_PTR_EQUAL(tc, NULL, result); - result = apr_hash_get(h, "key2", APR_HASH_KEY_STRING); + result = fspr_hash_get(h, "key2", APR_HASH_KEY_STRING); ABTS_STR_EQUAL(tc, "value2", result); } static void hash_count_0(abts_case *tc, void *data) { - apr_hash_t *h = NULL; + fspr_hash_t *h = NULL; int count; - h = apr_hash_make(p); + h = fspr_hash_make(p); ABTS_PTR_NOTNULL(tc, h); - count = apr_hash_count(h); + count = fspr_hash_count(h); ABTS_INT_EQUAL(tc, 0, count); } static void hash_count_1(abts_case *tc, void *data) { - apr_hash_t *h = NULL; + fspr_hash_t *h = NULL; int count; - h = apr_hash_make(p); + h = fspr_hash_make(p); ABTS_PTR_NOTNULL(tc, h); - apr_hash_set(h, "key", APR_HASH_KEY_STRING, "value"); + fspr_hash_set(h, "key", APR_HASH_KEY_STRING, "value"); - count = apr_hash_count(h); + count = fspr_hash_count(h); ABTS_INT_EQUAL(tc, 1, count); } static void hash_count_5(abts_case *tc, void *data) { - apr_hash_t *h = NULL; + fspr_hash_t *h = NULL; int count; - h = apr_hash_make(p); + h = fspr_hash_make(p); ABTS_PTR_NOTNULL(tc, h); - apr_hash_set(h, "key1", APR_HASH_KEY_STRING, "value1"); - apr_hash_set(h, "key2", APR_HASH_KEY_STRING, "value2"); - apr_hash_set(h, "key3", APR_HASH_KEY_STRING, "value3"); - apr_hash_set(h, "key4", APR_HASH_KEY_STRING, "value4"); - apr_hash_set(h, "key5", APR_HASH_KEY_STRING, "value5"); + fspr_hash_set(h, "key1", APR_HASH_KEY_STRING, "value1"); + fspr_hash_set(h, "key2", APR_HASH_KEY_STRING, "value2"); + fspr_hash_set(h, "key3", APR_HASH_KEY_STRING, "value3"); + fspr_hash_set(h, "key4", APR_HASH_KEY_STRING, "value4"); + fspr_hash_set(h, "key5", APR_HASH_KEY_STRING, "value5"); - count = apr_hash_count(h); + count = fspr_hash_count(h); ABTS_INT_EQUAL(tc, 5, count); } static void overlay_empty(abts_case *tc, void *data) { - apr_hash_t *base = NULL; - apr_hash_t *overlay = NULL; - apr_hash_t *result = NULL; + fspr_hash_t *base = NULL; + fspr_hash_t *overlay = NULL; + fspr_hash_t *result = NULL; int count; char str[8196]; - base = apr_hash_make(p); - overlay = apr_hash_make(p); + base = fspr_hash_make(p); + overlay = fspr_hash_make(p); ABTS_PTR_NOTNULL(tc, base); ABTS_PTR_NOTNULL(tc, overlay); - apr_hash_set(base, "key1", APR_HASH_KEY_STRING, "value1"); - apr_hash_set(base, "key2", APR_HASH_KEY_STRING, "value2"); - apr_hash_set(base, "key3", APR_HASH_KEY_STRING, "value3"); - apr_hash_set(base, "key4", APR_HASH_KEY_STRING, "value4"); - apr_hash_set(base, "key5", APR_HASH_KEY_STRING, "value5"); + fspr_hash_set(base, "key1", APR_HASH_KEY_STRING, "value1"); + fspr_hash_set(base, "key2", APR_HASH_KEY_STRING, "value2"); + fspr_hash_set(base, "key3", APR_HASH_KEY_STRING, "value3"); + fspr_hash_set(base, "key4", APR_HASH_KEY_STRING, "value4"); + fspr_hash_set(base, "key5", APR_HASH_KEY_STRING, "value5"); - result = apr_hash_overlay(p, overlay, base); + result = fspr_hash_overlay(p, overlay, base); - count = apr_hash_count(result); + count = fspr_hash_count(result); ABTS_INT_EQUAL(tc, 5, count); dump_hash(p, result, str); @@ -325,32 +325,32 @@ static void overlay_empty(abts_case *tc, void *data) static void overlay_2unique(abts_case *tc, void *data) { - apr_hash_t *base = NULL; - apr_hash_t *overlay = NULL; - apr_hash_t *result = NULL; + fspr_hash_t *base = NULL; + fspr_hash_t *overlay = NULL; + fspr_hash_t *result = NULL; int count; char str[8196]; - base = apr_hash_make(p); - overlay = apr_hash_make(p); + base = fspr_hash_make(p); + overlay = fspr_hash_make(p); ABTS_PTR_NOTNULL(tc, base); ABTS_PTR_NOTNULL(tc, overlay); - apr_hash_set(base, "base1", APR_HASH_KEY_STRING, "value1"); - apr_hash_set(base, "base2", APR_HASH_KEY_STRING, "value2"); - apr_hash_set(base, "base3", APR_HASH_KEY_STRING, "value3"); - apr_hash_set(base, "base4", APR_HASH_KEY_STRING, "value4"); - apr_hash_set(base, "base5", APR_HASH_KEY_STRING, "value5"); + fspr_hash_set(base, "base1", APR_HASH_KEY_STRING, "value1"); + fspr_hash_set(base, "base2", APR_HASH_KEY_STRING, "value2"); + fspr_hash_set(base, "base3", APR_HASH_KEY_STRING, "value3"); + fspr_hash_set(base, "base4", APR_HASH_KEY_STRING, "value4"); + fspr_hash_set(base, "base5", APR_HASH_KEY_STRING, "value5"); - apr_hash_set(overlay, "overlay1", APR_HASH_KEY_STRING, "value1"); - apr_hash_set(overlay, "overlay2", APR_HASH_KEY_STRING, "value2"); - apr_hash_set(overlay, "overlay3", APR_HASH_KEY_STRING, "value3"); - apr_hash_set(overlay, "overlay4", APR_HASH_KEY_STRING, "value4"); - apr_hash_set(overlay, "overlay5", APR_HASH_KEY_STRING, "value5"); + fspr_hash_set(overlay, "overlay1", APR_HASH_KEY_STRING, "value1"); + fspr_hash_set(overlay, "overlay2", APR_HASH_KEY_STRING, "value2"); + fspr_hash_set(overlay, "overlay3", APR_HASH_KEY_STRING, "value3"); + fspr_hash_set(overlay, "overlay4", APR_HASH_KEY_STRING, "value4"); + fspr_hash_set(overlay, "overlay5", APR_HASH_KEY_STRING, "value5"); - result = apr_hash_overlay(p, overlay, base); + result = fspr_hash_overlay(p, overlay, base); - count = apr_hash_count(result); + count = fspr_hash_count(result); ABTS_INT_EQUAL(tc, 10, count); dump_hash(p, result, str); @@ -372,23 +372,23 @@ static void overlay_2unique(abts_case *tc, void *data) static void overlay_same(abts_case *tc, void *data) { - apr_hash_t *base = NULL; - apr_hash_t *result = NULL; + fspr_hash_t *base = NULL; + fspr_hash_t *result = NULL; int count; char str[8196]; - base = apr_hash_make(p); + base = fspr_hash_make(p); ABTS_PTR_NOTNULL(tc, base); - apr_hash_set(base, "base1", APR_HASH_KEY_STRING, "value1"); - apr_hash_set(base, "base2", APR_HASH_KEY_STRING, "value2"); - apr_hash_set(base, "base3", APR_HASH_KEY_STRING, "value3"); - apr_hash_set(base, "base4", APR_HASH_KEY_STRING, "value4"); - apr_hash_set(base, "base5", APR_HASH_KEY_STRING, "value5"); + fspr_hash_set(base, "base1", APR_HASH_KEY_STRING, "value1"); + fspr_hash_set(base, "base2", APR_HASH_KEY_STRING, "value2"); + fspr_hash_set(base, "base3", APR_HASH_KEY_STRING, "value3"); + fspr_hash_set(base, "base4", APR_HASH_KEY_STRING, "value4"); + fspr_hash_set(base, "base5", APR_HASH_KEY_STRING, "value5"); - result = apr_hash_overlay(p, base, base); + result = fspr_hash_overlay(p, base, base); - count = apr_hash_count(result); + count = fspr_hash_count(result); ABTS_INT_EQUAL(tc, 5, count); dump_hash(p, result, str); diff --git a/libs/apr/test/testipsub.c b/libs/apr/test/testipsub.c index 1411cd05a7c..bdf5b78a649 100644 --- a/libs/apr/test/testipsub.c +++ b/libs/apr/test/testipsub.c @@ -15,16 +15,16 @@ */ #include "testutil.h" -#include "apr_general.h" -#include "apr_network_io.h" -#include "apr_errno.h" +#include "fspr_general.h" +#include "fspr_network_io.h" +#include "fspr_errno.h" static void test_bad_input(abts_case *tc, void *data) { struct { const char *ipstr; const char *mask; - apr_status_t expected_rv; + fspr_status_t expected_rv; } testcases[] = { /* so we have a few good inputs in here; sue me */ @@ -63,11 +63,11 @@ static void test_bad_input(abts_case *tc, void *data) #endif }; int i; - apr_ipsubnet_t *ipsub; - apr_status_t rv; + fspr_ipsubnet_t *ipsub; + fspr_status_t rv; for (i = 0; i < (sizeof testcases / sizeof testcases[0]); i++) { - rv = apr_ipsubnet_create(&ipsub, testcases[i].ipstr, testcases[i].mask, p); + rv = fspr_ipsubnet_create(&ipsub, testcases[i].ipstr, testcases[i].mask, p); ABTS_INT_EQUAL(tc, rv, testcases[i].expected_rv); } } @@ -79,18 +79,18 @@ static void test_singleton_subnets(abts_case *tc, void *data) "198.144.203.195", "192.18.97.241", "198.137.240.91", "62.156.179.119", "204.177.92.181" }; - apr_ipsubnet_t *ipsub; - apr_sockaddr_t *sa; - apr_status_t rv; + fspr_ipsubnet_t *ipsub; + fspr_sockaddr_t *sa; + fspr_status_t rv; int i, j, rc; for (i = 0; i < sizeof v4addrs / sizeof v4addrs[0]; i++) { - rv = apr_ipsubnet_create(&ipsub, v4addrs[i], NULL, p); + rv = fspr_ipsubnet_create(&ipsub, v4addrs[i], NULL, p); ABTS_TRUE(tc, rv == APR_SUCCESS); for (j = 0; j < sizeof v4addrs / sizeof v4addrs[0]; j++) { - rv = apr_sockaddr_info_get(&sa, v4addrs[j], APR_INET, 0, 0, p); + rv = fspr_sockaddr_info_get(&sa, v4addrs[j], APR_INET, 0, 0, p); ABTS_TRUE(tc, rv == APR_SUCCESS); - rc = apr_ipsubnet_test(ipsub, sa); + rc = fspr_ipsubnet_test(ipsub, sa); if (!strcmp(v4addrs[i], v4addrs[j])) { ABTS_TRUE(tc, rc != 0); } @@ -124,21 +124,21 @@ static void test_interesting_subnets(abts_case *tc, void *data) ,{"127.0.0.1", "8", APR_INET6, "::ffff:127.0.0.1", "fe80::1"} #endif }; - apr_ipsubnet_t *ipsub; - apr_sockaddr_t *sa; - apr_status_t rv; + fspr_ipsubnet_t *ipsub; + fspr_sockaddr_t *sa; + fspr_status_t rv; int i, rc; for (i = 0; i < sizeof testcases / sizeof testcases[0]; i++) { - rv = apr_ipsubnet_create(&ipsub, testcases[i].ipstr, testcases[i].mask, p); + rv = fspr_ipsubnet_create(&ipsub, testcases[i].ipstr, testcases[i].mask, p); ABTS_TRUE(tc, rv == APR_SUCCESS); - rv = apr_sockaddr_info_get(&sa, testcases[i].in_subnet, testcases[i].family, 0, 0, p); + rv = fspr_sockaddr_info_get(&sa, testcases[i].in_subnet, testcases[i].family, 0, 0, p); ABTS_TRUE(tc, rv == APR_SUCCESS); - rc = apr_ipsubnet_test(ipsub, sa); + rc = fspr_ipsubnet_test(ipsub, sa); ABTS_TRUE(tc, rc != 0); - rv = apr_sockaddr_info_get(&sa, testcases[i].not_in_subnet, testcases[i].family, 0, 0, p); + rv = fspr_sockaddr_info_get(&sa, testcases[i].not_in_subnet, testcases[i].family, 0, 0, p); ABTS_TRUE(tc, rv == APR_SUCCESS); - rc = apr_ipsubnet_test(ipsub, sa); + rc = fspr_ipsubnet_test(ipsub, sa); ABTS_TRUE(tc, rc == 0); } } @@ -147,7 +147,7 @@ static void test_badmask_str(abts_case *tc, void *data) { char buf[128]; - ABTS_STR_EQUAL(tc, apr_strerror(APR_EBADMASK, buf, sizeof buf), + ABTS_STR_EQUAL(tc, fspr_strerror(APR_EBADMASK, buf, sizeof buf), "The specified network mask is invalid."); } @@ -155,7 +155,7 @@ static void test_badip_str(abts_case *tc, void *data) { char buf[128]; - ABTS_STR_EQUAL(tc, apr_strerror(APR_EBADIP, buf, sizeof buf), + ABTS_STR_EQUAL(tc, fspr_strerror(APR_EBADIP, buf, sizeof buf), "The specified IP address is invalid."); } diff --git a/libs/apr/test/testlfs.c b/libs/apr/test/testlfs.c index c502400eef5..08b0521584c 100644 --- a/libs/apr/test/testlfs.c +++ b/libs/apr/test/testlfs.c @@ -14,14 +14,14 @@ * limitations under the License. */ -#include "apr_file_io.h" -#include "apr_file_info.h" -#include "apr_errno.h" -#include "apr_general.h" -#include "apr_poll.h" -#include "apr_strings.h" -#include "apr_lib.h" -#include "apr_mmap.h" +#include "fspr_file_io.h" +#include "fspr_file_info.h" +#include "fspr_errno.h" +#include "fspr_general.h" +#include "fspr_poll.h" +#include "fspr_strings.h" +#include "fspr_lib.h" +#include "fspr_mmap.h" #include "testutil.h" /* Only enable these tests by default on platforms which support sparse @@ -37,7 +37,7 @@ static void test_nolfs(abts_case *tc, void *data) /* Tests which create an 8Gb sparse file and then check it can be used * as normal. */ -static apr_off_t eightGb = APR_INT64_C(2) << 32; +static fspr_off_t eightGb = APR_INT64_C(2) << 32; static int madefile = 0; @@ -49,22 +49,22 @@ static int madefile = 0; static void test_open(abts_case *tc, void *data) { - apr_file_t *f; - apr_status_t rv; + fspr_file_t *f; + fspr_status_t rv; - rv = apr_dir_make(TESTDIR, APR_OS_DEFAULT, p); + rv = fspr_dir_make(TESTDIR, APR_OS_DEFAULT, p); if (rv && !APR_STATUS_IS_EEXIST(rv)) { APR_ASSERT_SUCCESS(tc, "make test directory", rv); } APR_ASSERT_SUCCESS(tc, "open file", - apr_file_open(&f, TESTFN, + fspr_file_open(&f, TESTFN, APR_CREATE | APR_WRITE | APR_TRUNCATE, APR_OS_DEFAULT, p)); - rv = apr_file_trunc(f, eightGb); + rv = fspr_file_trunc(f, eightGb); - APR_ASSERT_SUCCESS(tc, "close large file", apr_file_close(f)); + APR_ASSERT_SUCCESS(tc, "close large file", fspr_file_close(f)); /* 8Gb may pass rlimits or filesystem limits */ @@ -84,178 +84,178 @@ static void test_open(abts_case *tc, void *data) static void test_reopen(abts_case *tc, void *data) { - apr_file_t *fh; - apr_finfo_t finfo; + fspr_file_t *fh; + fspr_finfo_t finfo; PRECOND; APR_ASSERT_SUCCESS(tc, "re-open 8Gb file", - apr_file_open(&fh, TESTFN, APR_READ, APR_OS_DEFAULT, p)); + fspr_file_open(&fh, TESTFN, APR_READ, APR_OS_DEFAULT, p)); APR_ASSERT_SUCCESS(tc, "file_info_get failed", - apr_file_info_get(&finfo, APR_FINFO_NORM, fh)); + fspr_file_info_get(&finfo, APR_FINFO_NORM, fh)); ABTS_ASSERT(tc, "file_info_get gave incorrect size", finfo.size == eightGb); - APR_ASSERT_SUCCESS(tc, "re-close large file", apr_file_close(fh)); + APR_ASSERT_SUCCESS(tc, "re-close large file", fspr_file_close(fh)); } static void test_stat(abts_case *tc, void *data) { - apr_finfo_t finfo; + fspr_finfo_t finfo; PRECOND; APR_ASSERT_SUCCESS(tc, "stat large file", - apr_stat(&finfo, TESTFN, APR_FINFO_NORM, p)); + fspr_stat(&finfo, TESTFN, APR_FINFO_NORM, p)); ABTS_ASSERT(tc, "stat gave incorrect size", finfo.size == eightGb); } static void test_readdir(abts_case *tc, void *data) { - apr_dir_t *dh; - apr_status_t rv; + fspr_dir_t *dh; + fspr_status_t rv; PRECOND; APR_ASSERT_SUCCESS(tc, "open test directory", - apr_dir_open(&dh, TESTDIR, p)); + fspr_dir_open(&dh, TESTDIR, p)); do { - apr_finfo_t finfo; + fspr_finfo_t finfo; - rv = apr_dir_read(&finfo, APR_FINFO_NORM, dh); + rv = fspr_dir_read(&finfo, APR_FINFO_NORM, dh); if (rv == APR_SUCCESS && strcmp(finfo.name, TESTFILE) == 0) { - ABTS_ASSERT(tc, "apr_dir_read gave incorrect size for large file", + ABTS_ASSERT(tc, "fspr_dir_read gave incorrect size for large file", finfo.size == eightGb); } } while (rv == APR_SUCCESS); if (!APR_STATUS_IS_ENOENT(rv)) { - APR_ASSERT_SUCCESS(tc, "apr_dir_read failed", rv); + APR_ASSERT_SUCCESS(tc, "fspr_dir_read failed", rv); } APR_ASSERT_SUCCESS(tc, "close test directory", - apr_dir_close(dh)); + fspr_dir_close(dh)); } #define TESTSTR "Hello, world." static void test_append(abts_case *tc, void *data) { - apr_file_t *fh; - apr_finfo_t finfo; + fspr_file_t *fh; + fspr_finfo_t finfo; PRECOND; APR_ASSERT_SUCCESS(tc, "open 8Gb file for append", - apr_file_open(&fh, TESTFN, APR_WRITE | APR_APPEND, + fspr_file_open(&fh, TESTFN, APR_WRITE | APR_APPEND, APR_OS_DEFAULT, p)); APR_ASSERT_SUCCESS(tc, "append to 8Gb file", - apr_file_write_full(fh, TESTSTR, strlen(TESTSTR), NULL)); + fspr_file_write_full(fh, TESTSTR, strlen(TESTSTR), NULL)); APR_ASSERT_SUCCESS(tc, "file_info_get failed", - apr_file_info_get(&finfo, APR_FINFO_NORM, fh)); + fspr_file_info_get(&finfo, APR_FINFO_NORM, fh)); ABTS_ASSERT(tc, "file_info_get gave incorrect size", finfo.size == eightGb + strlen(TESTSTR)); - APR_ASSERT_SUCCESS(tc, "close 8Gb file", apr_file_close(fh)); + APR_ASSERT_SUCCESS(tc, "close 8Gb file", fspr_file_close(fh)); } static void test_seek(abts_case *tc, void *data) { - apr_file_t *fh; - apr_off_t pos; + fspr_file_t *fh; + fspr_off_t pos; PRECOND; APR_ASSERT_SUCCESS(tc, "open 8Gb file for writing", - apr_file_open(&fh, TESTFN, APR_WRITE, + fspr_file_open(&fh, TESTFN, APR_WRITE, APR_OS_DEFAULT, p)); pos = 0; APR_ASSERT_SUCCESS(tc, "relative seek to end", - apr_file_seek(fh, APR_END, &pos)); + fspr_file_seek(fh, APR_END, &pos)); ABTS_ASSERT(tc, "seek to END gave 8Gb", pos == eightGb); pos = eightGb; - APR_ASSERT_SUCCESS(tc, "seek to 8Gb", apr_file_seek(fh, APR_SET, &pos)); + APR_ASSERT_SUCCESS(tc, "seek to 8Gb", fspr_file_seek(fh, APR_SET, &pos)); ABTS_ASSERT(tc, "seek gave 8Gb offset", pos == eightGb); pos = 0; - APR_ASSERT_SUCCESS(tc, "relative seek to 0", apr_file_seek(fh, APR_CUR, &pos)); + APR_ASSERT_SUCCESS(tc, "relative seek to 0", fspr_file_seek(fh, APR_CUR, &pos)); ABTS_ASSERT(tc, "relative seek gave 8Gb offset", pos == eightGb); - apr_file_close(fh); + fspr_file_close(fh); } static void test_write(abts_case *tc, void *data) { - apr_file_t *fh; - apr_off_t pos = eightGb - 4; + fspr_file_t *fh; + fspr_off_t pos = eightGb - 4; PRECOND; APR_ASSERT_SUCCESS(tc, "re-open 8Gb file", - apr_file_open(&fh, TESTFN, APR_WRITE, APR_OS_DEFAULT, p)); + fspr_file_open(&fh, TESTFN, APR_WRITE, APR_OS_DEFAULT, p)); APR_ASSERT_SUCCESS(tc, "seek to 8Gb - 4", - apr_file_seek(fh, APR_SET, &pos)); + fspr_file_seek(fh, APR_SET, &pos)); ABTS_ASSERT(tc, "seek gave 8Gb-4 offset", pos == eightGb - 4); APR_ASSERT_SUCCESS(tc, "write magic string to 8Gb-4", - apr_file_write_full(fh, "FISH", 4, NULL)); + fspr_file_write_full(fh, "FISH", 4, NULL)); - APR_ASSERT_SUCCESS(tc, "close 8Gb file", apr_file_close(fh)); + APR_ASSERT_SUCCESS(tc, "close 8Gb file", fspr_file_close(fh)); } #if APR_HAS_MMAP static void test_mmap(abts_case *tc, void *data) { - apr_mmap_t *map; - apr_file_t *fh; - apr_size_t len = 16384; /* hopefully a multiple of the page size */ - apr_off_t off = eightGb - len; + fspr_mmap_t *map; + fspr_file_t *fh; + fspr_size_t len = 16384; /* hopefully a multiple of the page size */ + fspr_off_t off = eightGb - len; void *ptr; PRECOND; APR_ASSERT_SUCCESS(tc, "open 8gb file for mmap", - apr_file_open(&fh, TESTFN, APR_READ, APR_OS_DEFAULT, p)); + fspr_file_open(&fh, TESTFN, APR_READ, APR_OS_DEFAULT, p)); APR_ASSERT_SUCCESS(tc, "mmap 8Gb file", - apr_mmap_create(&map, fh, off, len, APR_MMAP_READ, p)); + fspr_mmap_create(&map, fh, off, len, APR_MMAP_READ, p)); - APR_ASSERT_SUCCESS(tc, "close file", apr_file_close(fh)); + APR_ASSERT_SUCCESS(tc, "close file", fspr_file_close(fh)); ABTS_ASSERT(tc, "mapped a 16K block", map->size == len); APR_ASSERT_SUCCESS(tc, "get pointer into mmaped region", - apr_mmap_offset(&ptr, map, len - 4)); + fspr_mmap_offset(&ptr, map, len - 4)); ABTS_ASSERT(tc, "pointer was not NULL", ptr != NULL); ABTS_ASSERT(tc, "found the magic string", memcmp(ptr, "FISH", 4) == 0); - APR_ASSERT_SUCCESS(tc, "delete mmap handle", apr_mmap_delete(map)); + APR_ASSERT_SUCCESS(tc, "delete mmap handle", fspr_mmap_delete(map)); } #endif /* APR_HAS_MMAP */ static void test_format(abts_case *tc, void *data) { - apr_off_t off; + fspr_off_t off; PRECOND; - off = apr_atoi64(apr_off_t_toa(p, eightGb)); + off = fspr_atoi64(fspr_off_t_toa(p, eightGb)); - ABTS_ASSERT(tc, "apr_atoi64 parsed apr_off_t_toa result incorrectly", + ABTS_ASSERT(tc, "fspr_atoi64 parsed fspr_off_t_toa result incorrectly", off == eightGb); } diff --git a/libs/apr/test/testlock.c b/libs/apr/test/testlock.c index dddb52f76a9..51dfc5602ce 100644 --- a/libs/apr/test/testlock.c +++ b/libs/apr/test/testlock.c @@ -14,14 +14,14 @@ * limitations under the License. */ -#include "apr_thread_proc.h" -#include "apr_file_io.h" -#include "apr_thread_mutex.h" -#include "apr_thread_rwlock.h" -#include "apr_thread_cond.h" -#include "apr_errno.h" -#include "apr_general.h" -#include "apr_getopt.h" +#include "fspr_thread_proc.h" +#include "fspr_file_io.h" +#include "fspr_thread_mutex.h" +#include "fspr_thread_rwlock.h" +#include "fspr_thread_cond.h" +#include "fspr_errno.h" +#include "fspr_general.h" +#include "fspr_getopt.h" #include "testutil.h" #if APR_HAS_THREADS @@ -30,67 +30,67 @@ #define MAX_COUNTER 100000 #define MAX_RETRY 5 -static void *APR_THREAD_FUNC thread_rwlock_func(apr_thread_t *thd, void *data); -static void *APR_THREAD_FUNC thread_mutex_function(apr_thread_t *thd, void *data); -static void *APR_THREAD_FUNC thread_cond_producer(apr_thread_t *thd, void *data); -static void *APR_THREAD_FUNC thread_cond_consumer(apr_thread_t *thd, void *data); +static void *APR_THREAD_FUNC thread_rwlock_func(fspr_thread_t *thd, void *data); +static void *APR_THREAD_FUNC thread_mutex_function(fspr_thread_t *thd, void *data); +static void *APR_THREAD_FUNC thread_cond_producer(fspr_thread_t *thd, void *data); +static void *APR_THREAD_FUNC thread_cond_consumer(fspr_thread_t *thd, void *data); -static apr_thread_mutex_t *thread_mutex; -static apr_thread_rwlock_t *rwlock; +static fspr_thread_mutex_t *thread_mutex; +static fspr_thread_rwlock_t *rwlock; static int i = 0, x = 0; static int buff[MAX_COUNTER]; struct { - apr_thread_mutex_t *mutex; + fspr_thread_mutex_t *mutex; int nput; int nval; } put; struct { - apr_thread_mutex_t *mutex; - apr_thread_cond_t *cond; + fspr_thread_mutex_t *mutex; + fspr_thread_cond_t *cond; int nready; } nready; -static apr_thread_mutex_t *timeout_mutex; -static apr_thread_cond_t *timeout_cond; +static fspr_thread_mutex_t *timeout_mutex; +static fspr_thread_cond_t *timeout_cond; -static void *APR_THREAD_FUNC thread_rwlock_func(apr_thread_t *thd, void *data) +static void *APR_THREAD_FUNC thread_rwlock_func(fspr_thread_t *thd, void *data) { int exitLoop = 1; while (1) { - apr_thread_rwlock_rdlock(rwlock); + fspr_thread_rwlock_rdlock(rwlock); if (i == MAX_ITER) exitLoop = 0; - apr_thread_rwlock_unlock(rwlock); + fspr_thread_rwlock_unlock(rwlock); if (!exitLoop) break; - apr_thread_rwlock_wrlock(rwlock); + fspr_thread_rwlock_wrlock(rwlock); if (i != MAX_ITER) { i++; x++; } - apr_thread_rwlock_unlock(rwlock); + fspr_thread_rwlock_unlock(rwlock); } return NULL; } -static void *APR_THREAD_FUNC thread_mutex_function(apr_thread_t *thd, void *data) +static void *APR_THREAD_FUNC thread_mutex_function(fspr_thread_t *thd, void *data) { int exitLoop = 1; /* slight delay to allow things to settle */ - apr_sleep (1); + fspr_sleep (1); while (1) { - apr_thread_mutex_lock(thread_mutex); + fspr_thread_mutex_lock(thread_mutex); if (i == MAX_ITER) exitLoop = 0; else @@ -98,7 +98,7 @@ static void *APR_THREAD_FUNC thread_mutex_function(apr_thread_t *thd, void *data i++; x++; } - apr_thread_mutex_unlock(thread_mutex); + fspr_thread_mutex_unlock(thread_mutex); if (!exitLoop) break; @@ -106,24 +106,24 @@ static void *APR_THREAD_FUNC thread_mutex_function(apr_thread_t *thd, void *data return NULL; } -static void *APR_THREAD_FUNC thread_cond_producer(apr_thread_t *thd, void *data) +static void *APR_THREAD_FUNC thread_cond_producer(fspr_thread_t *thd, void *data) { for (;;) { - apr_thread_mutex_lock(put.mutex); + fspr_thread_mutex_lock(put.mutex); if (put.nput >= MAX_COUNTER) { - apr_thread_mutex_unlock(put.mutex); + fspr_thread_mutex_unlock(put.mutex); return NULL; } buff[put.nput] = put.nval; put.nput++; put.nval++; - apr_thread_mutex_unlock(put.mutex); + fspr_thread_mutex_unlock(put.mutex); - apr_thread_mutex_lock(nready.mutex); + fspr_thread_mutex_lock(nready.mutex); if (nready.nready == 0) - apr_thread_cond_signal(nready.cond); + fspr_thread_cond_signal(nready.cond); nready.nready++; - apr_thread_mutex_unlock(nready.mutex); + fspr_thread_mutex_unlock(nready.mutex); *((int *) data) += 1; } @@ -131,16 +131,16 @@ static void *APR_THREAD_FUNC thread_cond_producer(apr_thread_t *thd, void *data) return NULL; } -static void *APR_THREAD_FUNC thread_cond_consumer(apr_thread_t *thd, void *data) +static void *APR_THREAD_FUNC thread_cond_consumer(fspr_thread_t *thd, void *data) { int i; for (i = 0; i < MAX_COUNTER; i++) { - apr_thread_mutex_lock(nready.mutex); + fspr_thread_mutex_lock(nready.mutex); while (nready.nready == 0) - apr_thread_cond_wait(nready.cond, nready.mutex); + fspr_thread_cond_wait(nready.cond, nready.mutex); nready.nready--; - apr_thread_mutex_unlock(nready.mutex); + fspr_thread_mutex_unlock(nready.mutex); if (buff[i] != i) printf("buff[%d] = %d\n", i, buff[i]); @@ -151,39 +151,39 @@ static void *APR_THREAD_FUNC thread_cond_consumer(apr_thread_t *thd, void *data) static void test_thread_mutex(abts_case *tc, void *data) { - apr_thread_t *t1, *t2, *t3, *t4; - apr_status_t s1, s2, s3, s4; + fspr_thread_t *t1, *t2, *t3, *t4; + fspr_status_t s1, s2, s3, s4; - s1 = apr_thread_mutex_create(&thread_mutex, APR_THREAD_MUTEX_DEFAULT, p); + s1 = fspr_thread_mutex_create(&thread_mutex, APR_THREAD_MUTEX_DEFAULT, p); ABTS_INT_EQUAL(tc, APR_SUCCESS, s1); ABTS_PTR_NOTNULL(tc, thread_mutex); i = 0; x = 0; - s1 = apr_thread_create(&t1, NULL, thread_mutex_function, NULL, p); + s1 = fspr_thread_create(&t1, NULL, thread_mutex_function, NULL, p); ABTS_INT_EQUAL(tc, APR_SUCCESS, s1); - s2 = apr_thread_create(&t2, NULL, thread_mutex_function, NULL, p); + s2 = fspr_thread_create(&t2, NULL, thread_mutex_function, NULL, p); ABTS_INT_EQUAL(tc, APR_SUCCESS, s2); - s3 = apr_thread_create(&t3, NULL, thread_mutex_function, NULL, p); + s3 = fspr_thread_create(&t3, NULL, thread_mutex_function, NULL, p); ABTS_INT_EQUAL(tc, APR_SUCCESS, s3); - s4 = apr_thread_create(&t4, NULL, thread_mutex_function, NULL, p); + s4 = fspr_thread_create(&t4, NULL, thread_mutex_function, NULL, p); ABTS_INT_EQUAL(tc, APR_SUCCESS, s4); - apr_thread_join(&s1, t1); - apr_thread_join(&s2, t2); - apr_thread_join(&s3, t3); - apr_thread_join(&s4, t4); + fspr_thread_join(&s1, t1); + fspr_thread_join(&s2, t2); + fspr_thread_join(&s3, t3); + fspr_thread_join(&s4, t4); ABTS_INT_EQUAL(tc, MAX_ITER, x); } static void test_thread_rwlock(abts_case *tc, void *data) { - apr_thread_t *t1, *t2, *t3, *t4; - apr_status_t s1, s2, s3, s4; + fspr_thread_t *t1, *t2, *t3, *t4; + fspr_status_t s1, s2, s3, s4; - s1 = apr_thread_rwlock_create(&rwlock, p); + s1 = fspr_thread_rwlock_create(&rwlock, p); if (s1 == APR_ENOTIMPL) { ABTS_NOT_IMPL(tc, "rwlocks not implemented"); return; @@ -194,44 +194,44 @@ static void test_thread_rwlock(abts_case *tc, void *data) i = 0; x = 0; - s1 = apr_thread_create(&t1, NULL, thread_rwlock_func, NULL, p); + s1 = fspr_thread_create(&t1, NULL, thread_rwlock_func, NULL, p); APR_ASSERT_SUCCESS(tc, "create thread 1", s1); - s2 = apr_thread_create(&t2, NULL, thread_rwlock_func, NULL, p); + s2 = fspr_thread_create(&t2, NULL, thread_rwlock_func, NULL, p); APR_ASSERT_SUCCESS(tc, "create thread 2", s2); - s3 = apr_thread_create(&t3, NULL, thread_rwlock_func, NULL, p); + s3 = fspr_thread_create(&t3, NULL, thread_rwlock_func, NULL, p); APR_ASSERT_SUCCESS(tc, "create thread 3", s3); - s4 = apr_thread_create(&t4, NULL, thread_rwlock_func, NULL, p); + s4 = fspr_thread_create(&t4, NULL, thread_rwlock_func, NULL, p); APR_ASSERT_SUCCESS(tc, "create thread 4", s4); - apr_thread_join(&s1, t1); - apr_thread_join(&s2, t2); - apr_thread_join(&s3, t3); - apr_thread_join(&s4, t4); + fspr_thread_join(&s1, t1); + fspr_thread_join(&s2, t2); + fspr_thread_join(&s3, t3); + fspr_thread_join(&s4, t4); ABTS_INT_EQUAL(tc, MAX_ITER, x); - apr_thread_rwlock_destroy(rwlock); + fspr_thread_rwlock_destroy(rwlock); } static void test_cond(abts_case *tc, void *data) { - apr_thread_t *p1, *p2, *p3, *p4, *c1; - apr_status_t s0, s1, s2, s3, s4; + fspr_thread_t *p1, *p2, *p3, *p4, *c1; + fspr_status_t s0, s1, s2, s3, s4; int count1, count2, count3, count4; int sum; APR_ASSERT_SUCCESS(tc, "create put mutex", - apr_thread_mutex_create(&put.mutex, + fspr_thread_mutex_create(&put.mutex, APR_THREAD_MUTEX_DEFAULT, p)); ABTS_PTR_NOTNULL(tc, put.mutex); APR_ASSERT_SUCCESS(tc, "create nready mutex", - apr_thread_mutex_create(&nready.mutex, + fspr_thread_mutex_create(&nready.mutex, APR_THREAD_MUTEX_DEFAULT, p)); ABTS_PTR_NOTNULL(tc, nready.mutex); APR_ASSERT_SUCCESS(tc, "create condvar", - apr_thread_cond_create(&nready.cond, p)); + fspr_thread_cond_create(&nready.cond, p)); ABTS_PTR_NOTNULL(tc, nready.cond); count1 = count2 = count3 = count4 = 0; @@ -240,25 +240,25 @@ static void test_cond(abts_case *tc, void *data) i = 0; x = 0; - s0 = apr_thread_create(&p1, NULL, thread_cond_producer, &count1, p); + s0 = fspr_thread_create(&p1, NULL, thread_cond_producer, &count1, p); ABTS_INT_EQUAL(tc, APR_SUCCESS, s0); - s1 = apr_thread_create(&p2, NULL, thread_cond_producer, &count2, p); + s1 = fspr_thread_create(&p2, NULL, thread_cond_producer, &count2, p); ABTS_INT_EQUAL(tc, APR_SUCCESS, s1); - s2 = apr_thread_create(&p3, NULL, thread_cond_producer, &count3, p); + s2 = fspr_thread_create(&p3, NULL, thread_cond_producer, &count3, p); ABTS_INT_EQUAL(tc, APR_SUCCESS, s2); - s3 = apr_thread_create(&p4, NULL, thread_cond_producer, &count4, p); + s3 = fspr_thread_create(&p4, NULL, thread_cond_producer, &count4, p); ABTS_INT_EQUAL(tc, APR_SUCCESS, s3); - s4 = apr_thread_create(&c1, NULL, thread_cond_consumer, NULL, p); + s4 = fspr_thread_create(&c1, NULL, thread_cond_consumer, NULL, p); ABTS_INT_EQUAL(tc, APR_SUCCESS, s4); - apr_thread_join(&s0, p1); - apr_thread_join(&s1, p2); - apr_thread_join(&s2, p3); - apr_thread_join(&s3, p4); - apr_thread_join(&s4, c1); + fspr_thread_join(&s0, p1); + fspr_thread_join(&s1, p2); + fspr_thread_join(&s2, p3); + fspr_thread_join(&s3, p4); + fspr_thread_join(&s4, c1); APR_ASSERT_SUCCESS(tc, "destroy condvar", - apr_thread_cond_destroy(nready.cond)); + fspr_thread_cond_destroy(nready.cond)); sum = count1 + count2 + count3 + count4; /* @@ -270,28 +270,28 @@ static void test_cond(abts_case *tc, void *data) static void test_timeoutcond(abts_case *tc, void *data) { - apr_status_t s; - apr_interval_time_t timeout; - apr_time_t begin, end; + fspr_status_t s; + fspr_interval_time_t timeout; + fspr_time_t begin, end; int i; - s = apr_thread_mutex_create(&timeout_mutex, APR_THREAD_MUTEX_DEFAULT, p); + s = fspr_thread_mutex_create(&timeout_mutex, APR_THREAD_MUTEX_DEFAULT, p); ABTS_INT_EQUAL(tc, APR_SUCCESS, s); ABTS_PTR_NOTNULL(tc, timeout_mutex); - s = apr_thread_cond_create(&timeout_cond, p); + s = fspr_thread_cond_create(&timeout_cond, p); ABTS_INT_EQUAL(tc, APR_SUCCESS, s); ABTS_PTR_NOTNULL(tc, timeout_cond); - timeout = apr_time_from_sec(5); + timeout = fspr_time_from_sec(5); for (i = 0; i < MAX_RETRY; i++) { - apr_thread_mutex_lock(timeout_mutex); + fspr_thread_mutex_lock(timeout_mutex); - begin = apr_time_now(); - s = apr_thread_cond_timedwait(timeout_cond, timeout_mutex, timeout); - end = apr_time_now(); - apr_thread_mutex_unlock(timeout_mutex); + begin = fspr_time_now(); + s = fspr_thread_cond_timedwait(timeout_cond, timeout_mutex, timeout); + end = fspr_time_now(); + fspr_thread_mutex_unlock(timeout_mutex); if (s != APR_SUCCESS && !APR_STATUS_IS_TIMEUP(s)) { continue; @@ -302,7 +302,7 @@ static void test_timeoutcond(abts_case *tc, void *data) } ABTS_ASSERT(tc, "Too many retries", i < MAX_RETRY); APR_ASSERT_SUCCESS(tc, "Unable to destroy the conditional", - apr_thread_cond_destroy(timeout_cond)); + fspr_thread_cond_destroy(timeout_cond)); } #endif /* !APR_HAS_THREADS */ diff --git a/libs/apr/test/testlockperf.c b/libs/apr/test/testlockperf.c index e0bf75ae83d..afee9c3db66 100644 --- a/libs/apr/test/testlockperf.c +++ b/libs/apr/test/testlockperf.c @@ -14,13 +14,13 @@ * limitations under the License. */ -#include "apr_thread_proc.h" -#include "apr_thread_mutex.h" -#include "apr_thread_rwlock.h" -#include "apr_file_io.h" -#include "apr_errno.h" -#include "apr_general.h" -#include "apr_getopt.h" +#include "fspr_thread_proc.h" +#include "fspr_thread_mutex.h" +#include "fspr_thread_rwlock.h" +#include "fspr_file_io.h" +#include "fspr_errno.h" +#include "fspr_general.h" +#include "fspr_getopt.h" #include "errno.h" #include #include @@ -40,66 +40,66 @@ int main(void) static long mutex_counter; -static apr_thread_mutex_t *thread_lock; -void * APR_THREAD_FUNC thread_mutex_func(apr_thread_t *thd, void *data); -apr_status_t test_thread_mutex(int num_threads); /* apr_thread_mutex_t */ +static fspr_thread_mutex_t *thread_lock; +void * APR_THREAD_FUNC thread_mutex_func(fspr_thread_t *thd, void *data); +fspr_status_t test_thread_mutex(int num_threads); /* fspr_thread_mutex_t */ -static apr_thread_rwlock_t *thread_rwlock; -void * APR_THREAD_FUNC thread_rwlock_func(apr_thread_t *thd, void *data); -apr_status_t test_thread_rwlock(int num_threads); /* apr_thread_rwlock_t */ +static fspr_thread_rwlock_t *thread_rwlock; +void * APR_THREAD_FUNC thread_rwlock_func(fspr_thread_t *thd, void *data); +fspr_status_t test_thread_rwlock(int num_threads); /* fspr_thread_rwlock_t */ int test_thread_mutex_nested(int num_threads); -apr_pool_t *pool; +fspr_pool_t *pool; int i = 0, x = 0; -void * APR_THREAD_FUNC thread_mutex_func(apr_thread_t *thd, void *data) +void * APR_THREAD_FUNC thread_mutex_func(fspr_thread_t *thd, void *data) { int i; for (i = 0; i < MAX_COUNTER; i++) { - apr_thread_mutex_lock(thread_lock); + fspr_thread_mutex_lock(thread_lock); mutex_counter++; - apr_thread_mutex_unlock(thread_lock); + fspr_thread_mutex_unlock(thread_lock); } return NULL; } -void * APR_THREAD_FUNC thread_rwlock_func(apr_thread_t *thd, void *data) +void * APR_THREAD_FUNC thread_rwlock_func(fspr_thread_t *thd, void *data) { int i; for (i = 0; i < MAX_COUNTER; i++) { - apr_thread_rwlock_wrlock(thread_rwlock); + fspr_thread_rwlock_wrlock(thread_rwlock); mutex_counter++; - apr_thread_rwlock_unlock(thread_rwlock); + fspr_thread_rwlock_unlock(thread_rwlock); } return NULL; } int test_thread_mutex(int num_threads) { - apr_thread_t *t[MAX_THREADS]; - apr_status_t s[MAX_THREADS]; - apr_time_t time_start, time_stop; + fspr_thread_t *t[MAX_THREADS]; + fspr_status_t s[MAX_THREADS]; + fspr_time_t time_start, time_stop; int i; mutex_counter = 0; - printf("apr_thread_mutex_t Tests\n"); - printf("%-60s", " Initializing the apr_thread_mutex_t (UNNESTED)"); - s[0] = apr_thread_mutex_create(&thread_lock, APR_THREAD_MUTEX_UNNESTED, pool); + printf("fspr_thread_mutex_t Tests\n"); + printf("%-60s", " Initializing the fspr_thread_mutex_t (UNNESTED)"); + s[0] = fspr_thread_mutex_create(&thread_lock, APR_THREAD_MUTEX_UNNESTED, pool); if (s[0] != APR_SUCCESS) { printf("Failed!\n"); return s[0]; } printf("OK\n"); - apr_thread_mutex_lock(thread_lock); + fspr_thread_mutex_lock(thread_lock); /* set_concurrency(4)? -aaron */ printf(" Starting %d threads ", num_threads); for (i = 0; i < num_threads; ++i) { - s[i] = apr_thread_create(&t[i], NULL, thread_mutex_func, NULL, pool); + s[i] = fspr_thread_create(&t[i], NULL, thread_mutex_func, NULL, pool); if (s[i] != APR_SUCCESS) { printf("Failed!\n"); return s[i]; @@ -107,16 +107,16 @@ int test_thread_mutex(int num_threads) } printf("OK\n"); - time_start = apr_time_now(); - apr_thread_mutex_unlock(thread_lock); + time_start = fspr_time_now(); + fspr_thread_mutex_unlock(thread_lock); /* printf("%-60s", " Waiting for threads to exit"); */ for (i = 0; i < num_threads; ++i) { - apr_thread_join(&s[i], t[i]); + fspr_thread_join(&s[i], t[i]); } /* printf("OK\n"); */ - time_stop = apr_time_now(); + time_stop = fspr_time_now(); printf("microseconds: %" APR_INT64_T_FMT " usec\n", (time_stop - time_start)); if (mutex_counter != MAX_COUNTER * num_threads) @@ -127,27 +127,27 @@ int test_thread_mutex(int num_threads) int test_thread_mutex_nested(int num_threads) { - apr_thread_t *t[MAX_THREADS]; - apr_status_t s[MAX_THREADS]; - apr_time_t time_start, time_stop; + fspr_thread_t *t[MAX_THREADS]; + fspr_status_t s[MAX_THREADS]; + fspr_time_t time_start, time_stop; int i; mutex_counter = 0; - printf("apr_thread_mutex_t Tests\n"); - printf("%-60s", " Initializing the apr_thread_mutex_t (NESTED)"); - s[0] = apr_thread_mutex_create(&thread_lock, APR_THREAD_MUTEX_NESTED, pool); + printf("fspr_thread_mutex_t Tests\n"); + printf("%-60s", " Initializing the fspr_thread_mutex_t (NESTED)"); + s[0] = fspr_thread_mutex_create(&thread_lock, APR_THREAD_MUTEX_NESTED, pool); if (s[0] != APR_SUCCESS) { printf("Failed!\n"); return s[0]; } printf("OK\n"); - apr_thread_mutex_lock(thread_lock); + fspr_thread_mutex_lock(thread_lock); /* set_concurrency(4)? -aaron */ printf(" Starting %d threads ", num_threads); for (i = 0; i < num_threads; ++i) { - s[i] = apr_thread_create(&t[i], NULL, thread_mutex_func, NULL, pool); + s[i] = fspr_thread_create(&t[i], NULL, thread_mutex_func, NULL, pool); if (s[i] != APR_SUCCESS) { printf("Failed!\n"); return s[i]; @@ -155,16 +155,16 @@ int test_thread_mutex_nested(int num_threads) } printf("OK\n"); - time_start = apr_time_now(); - apr_thread_mutex_unlock(thread_lock); + time_start = fspr_time_now(); + fspr_thread_mutex_unlock(thread_lock); /* printf("%-60s", " Waiting for threads to exit"); */ for (i = 0; i < num_threads; ++i) { - apr_thread_join(&s[i], t[i]); + fspr_thread_join(&s[i], t[i]); } /* printf("OK\n"); */ - time_stop = apr_time_now(); + time_stop = fspr_time_now(); printf("microseconds: %" APR_INT64_T_FMT " usec\n", (time_stop - time_start)); if (mutex_counter != MAX_COUNTER * num_threads) @@ -175,27 +175,27 @@ int test_thread_mutex_nested(int num_threads) int test_thread_rwlock(int num_threads) { - apr_thread_t *t[MAX_THREADS]; - apr_status_t s[MAX_THREADS]; - apr_time_t time_start, time_stop; + fspr_thread_t *t[MAX_THREADS]; + fspr_status_t s[MAX_THREADS]; + fspr_time_t time_start, time_stop; int i; mutex_counter = 0; - printf("apr_thread_rwlock_t Tests\n"); - printf("%-60s", " Initializing the apr_thread_rwlock_t"); - s[0] = apr_thread_rwlock_create(&thread_rwlock, pool); + printf("fspr_thread_rwlock_t Tests\n"); + printf("%-60s", " Initializing the fspr_thread_rwlock_t"); + s[0] = fspr_thread_rwlock_create(&thread_rwlock, pool); if (s[0] != APR_SUCCESS) { printf("Failed!\n"); return s[0]; } printf("OK\n"); - apr_thread_rwlock_wrlock(thread_rwlock); + fspr_thread_rwlock_wrlock(thread_rwlock); /* set_concurrency(4)? -aaron */ printf(" Starting %d threads ", num_threads); for (i = 0; i < num_threads; ++i) { - s[i] = apr_thread_create(&t[i], NULL, thread_rwlock_func, NULL, pool); + s[i] = fspr_thread_create(&t[i], NULL, thread_rwlock_func, NULL, pool); if (s[i] != APR_SUCCESS) { printf("Failed!\n"); return s[i]; @@ -203,16 +203,16 @@ int test_thread_rwlock(int num_threads) } printf("OK\n"); - time_start = apr_time_now(); - apr_thread_rwlock_unlock(thread_rwlock); + time_start = fspr_time_now(); + fspr_thread_rwlock_unlock(thread_rwlock); /* printf("%-60s", " Waiting for threads to exit"); */ for (i = 0; i < num_threads; ++i) { - apr_thread_join(&s[i], t[i]); + fspr_thread_join(&s[i], t[i]); } /* printf("OK\n"); */ - time_stop = apr_time_now(); + time_stop = fspr_time_now(); printf("microseconds: %" APR_INT64_T_FMT " usec\n", (time_stop - time_start)); if (mutex_counter != MAX_COUNTER * num_threads) @@ -223,28 +223,28 @@ int test_thread_rwlock(int num_threads) int main(int argc, const char * const *argv) { - apr_status_t rv; + fspr_status_t rv; char errmsg[200]; const char *lockname = "multi.lock"; - apr_getopt_t *opt; + fspr_getopt_t *opt; char optchar; const char *optarg; printf("APR Lock Performance Test\n==============\n\n"); - apr_initialize(); - atexit(apr_terminate); + fspr_initialize(); + atexit(fspr_terminate); - if (apr_pool_create(&pool, NULL) != APR_SUCCESS) + if (fspr_pool_create(&pool, NULL) != APR_SUCCESS) exit(-1); - if ((rv = apr_getopt_init(&opt, pool, argc, argv)) != APR_SUCCESS) { + if ((rv = fspr_getopt_init(&opt, pool, argc, argv)) != APR_SUCCESS) { fprintf(stderr, "Could not set up to parse options: [%d] %s\n", - rv, apr_strerror(rv, errmsg, sizeof errmsg)); + rv, fspr_strerror(rv, errmsg, sizeof errmsg)); exit(-1); } - while ((rv = apr_getopt(opt, "f:", &optchar, &optarg)) == APR_SUCCESS) { + while ((rv = fspr_getopt(opt, "f:", &optchar, &optarg)) == APR_SUCCESS) { if (optchar == 'f') { lockname = optarg; } @@ -252,26 +252,26 @@ int main(int argc, const char * const *argv) if (rv != APR_SUCCESS && rv != APR_EOF) { fprintf(stderr, "Could not parse options: [%d] %s\n", - rv, apr_strerror(rv, errmsg, sizeof errmsg)); + rv, fspr_strerror(rv, errmsg, sizeof errmsg)); exit(-1); } for (i = 1; i <= MAX_THREADS; ++i) { if ((rv = test_thread_mutex(i)) != APR_SUCCESS) { fprintf(stderr,"thread_mutex test failed : [%d] %s\n", - rv, apr_strerror(rv, (char*)errmsg, 200)); + rv, fspr_strerror(rv, (char*)errmsg, 200)); exit(-3); } if ((rv = test_thread_mutex_nested(i)) != APR_SUCCESS) { fprintf(stderr,"thread_mutex (NESTED) test failed : [%d] %s\n", - rv, apr_strerror(rv, (char*)errmsg, 200)); + rv, fspr_strerror(rv, (char*)errmsg, 200)); exit(-4); } if ((rv = test_thread_rwlock(i)) != APR_SUCCESS) { fprintf(stderr,"thread_rwlock test failed : [%d] %s\n", - rv, apr_strerror(rv, (char*)errmsg, 200)); + rv, fspr_strerror(rv, (char*)errmsg, 200)); exit(-6); } } diff --git a/libs/apr/test/testmmap.c b/libs/apr/test/testmmap.c index 61b7481e5a8..1e42d5e073d 100644 --- a/libs/apr/test/testmmap.c +++ b/libs/apr/test/testmmap.c @@ -15,12 +15,12 @@ */ #include "testutil.h" -#include "apr_mmap.h" -#include "apr_errno.h" -#include "apr_general.h" -#include "apr_lib.h" -#include "apr_file_io.h" -#include "apr_strings.h" +#include "fspr_mmap.h" +#include "fspr_errno.h" +#include "fspr_general.h" +#include "fspr_lib.h" +#include "fspr_file_io.h" +#include "fspr_strings.h" /* hmmm, what is a truly portable define for the max path * length on a platform? @@ -36,17 +36,17 @@ static void not_implemented(abts_case *tc, void *data) #else -static apr_mmap_t *themmap = NULL; -static apr_file_t *thefile = NULL; +static fspr_mmap_t *themmap = NULL; +static fspr_file_t *thefile = NULL; static char *file1; -static apr_finfo_t finfo; +static fspr_finfo_t finfo; static int fsize; static void create_filename(abts_case *tc, void *data) { char *oldfileptr; - apr_filepath_get(&file1, 0, p); + fspr_filepath_get(&file1, 0, p); #ifndef NETWARE #ifdef WIN32 ABTS_TRUE(tc, file1[1] == ':'); @@ -57,41 +57,41 @@ static void create_filename(abts_case *tc, void *data) ABTS_TRUE(tc, file1[strlen(file1) - 1] != '/'); oldfileptr = file1; - file1 = apr_pstrcat(p, file1,"/data/mmap_datafile.txt" ,NULL); + file1 = fspr_pstrcat(p, file1,"/data/mmap_datafile.txt" ,NULL); ABTS_TRUE(tc, oldfileptr != file1); } static void test_file_close(abts_case *tc, void *data) { - apr_status_t rv; + fspr_status_t rv; - rv = apr_file_close(thefile); + rv = fspr_file_close(thefile); ABTS_INT_EQUAL(tc, rv, APR_SUCCESS); } static void test_file_open(abts_case *tc, void *data) { - apr_status_t rv; + fspr_status_t rv; - rv = apr_file_open(&thefile, file1, APR_READ, APR_UREAD | APR_GREAD, p); + rv = fspr_file_open(&thefile, file1, APR_READ, APR_UREAD | APR_GREAD, p); ABTS_INT_EQUAL(tc, rv, APR_SUCCESS); ABTS_PTR_NOTNULL(tc, thefile); } static void test_get_filesize(abts_case *tc, void *data) { - apr_status_t rv; + fspr_status_t rv; - rv = apr_file_info_get(&finfo, APR_FINFO_NORM, thefile); + rv = fspr_file_info_get(&finfo, APR_FINFO_NORM, thefile); ABTS_INT_EQUAL(tc, rv, APR_SUCCESS); ABTS_ASSERT(tc, "File size mismatch", fsize == finfo.size); } static void test_mmap_create(abts_case *tc, void *data) { - apr_status_t rv; + fspr_status_t rv; - rv = apr_mmap_create(&themmap, thefile, 0, (apr_size_t) finfo.size, + rv = fspr_mmap_create(&themmap, thefile, 0, (fspr_size_t) finfo.size, APR_MMAP_READ, p); ABTS_PTR_NOTNULL(tc, themmap); ABTS_INT_EQUAL(tc, rv, APR_SUCCESS); @@ -110,20 +110,20 @@ static void test_mmap_contents(abts_case *tc, void *data) static void test_mmap_delete(abts_case *tc, void *data) { - apr_status_t rv; + fspr_status_t rv; ABTS_PTR_NOTNULL(tc, themmap); - rv = apr_mmap_delete(themmap); + rv = fspr_mmap_delete(themmap); ABTS_INT_EQUAL(tc, rv, APR_SUCCESS); } static void test_mmap_offset(abts_case *tc, void *data) { - apr_status_t rv; + fspr_status_t rv; void *addr; ABTS_PTR_NOTNULL(tc, themmap); - rv = apr_mmap_offset(&addr, themmap, 5); + rv = fspr_mmap_offset(&addr, themmap, 5); /* Must use nEquals since the string is not guaranteed to be NULL terminated */ ABTS_STR_NEQUAL(tc, addr, TEST_STRING + 5, fsize-5); diff --git a/libs/apr/test/testmutexscope.c b/libs/apr/test/testmutexscope.c index 0ea08cc634a..0d8cb30d6ce 100644 --- a/libs/apr/test/testmutexscope.c +++ b/libs/apr/test/testmutexscope.c @@ -19,11 +19,11 @@ #include #include -#include "apr.h" -#include "apr_general.h" -#include "apr_proc_mutex.h" -#include "apr_global_mutex.h" -#include "apr_thread_proc.h" +#include "fspr.h" +#include "fspr_general.h" +#include "fspr_proc_mutex.h" +#include "fspr_global_mutex.h" +#include "fspr_thread_proc.h" #if !APR_HAS_THREADS int main(void) @@ -34,23 +34,23 @@ int main(void) #else /* APR_HAS_THREADS */ -static apr_thread_mutex_t *thread_mutex; -static apr_proc_mutex_t *proc_mutex; -static apr_global_mutex_t *global_mutex; -static apr_pool_t *p; +static fspr_thread_mutex_t *thread_mutex; +static fspr_proc_mutex_t *proc_mutex; +static fspr_global_mutex_t *global_mutex; +static fspr_pool_t *p; static volatile int counter; typedef enum {TEST_GLOBAL, TEST_PROC} test_mode_e; -static void lock_init(apr_lockmech_e mech, test_mode_e test_mode) +static void lock_init(fspr_lockmech_e mech, test_mode_e test_mode) { if (test_mode == TEST_PROC) { - assert(apr_proc_mutex_create(&proc_mutex, + assert(fspr_proc_mutex_create(&proc_mutex, NULL, mech, p) == APR_SUCCESS); } else { - assert(apr_global_mutex_create(&global_mutex, + assert(fspr_global_mutex_create(&global_mutex, NULL, mech, p) == APR_SUCCESS); @@ -60,62 +60,62 @@ static void lock_init(apr_lockmech_e mech, test_mode_e test_mode) static void lock_destroy(test_mode_e test_mode) { if (test_mode == TEST_PROC) { - assert(apr_proc_mutex_destroy(proc_mutex) == APR_SUCCESS); + assert(fspr_proc_mutex_destroy(proc_mutex) == APR_SUCCESS); } else { - assert(apr_global_mutex_destroy(global_mutex) == APR_SUCCESS); + assert(fspr_global_mutex_destroy(global_mutex) == APR_SUCCESS); } } static void lock_grab(test_mode_e test_mode) { if (test_mode == TEST_PROC) { - assert(apr_proc_mutex_lock(proc_mutex) == APR_SUCCESS); + assert(fspr_proc_mutex_lock(proc_mutex) == APR_SUCCESS); } else { - assert(apr_global_mutex_lock(global_mutex) == APR_SUCCESS); + assert(fspr_global_mutex_lock(global_mutex) == APR_SUCCESS); } } static void lock_release(test_mode_e test_mode) { if (test_mode == TEST_PROC) { - assert(apr_proc_mutex_unlock(proc_mutex) == APR_SUCCESS); + assert(fspr_proc_mutex_unlock(proc_mutex) == APR_SUCCESS); } else { - assert(apr_global_mutex_unlock(global_mutex) == APR_SUCCESS); + assert(fspr_global_mutex_unlock(global_mutex) == APR_SUCCESS); } } -static void * APR_THREAD_FUNC eachThread(apr_thread_t *id, void *p) +static void * APR_THREAD_FUNC eachThread(fspr_thread_t *id, void *p) { test_mode_e test_mode = (test_mode_e)p; lock_grab(test_mode); ++counter; - assert(apr_thread_mutex_lock(thread_mutex) == APR_SUCCESS); - assert(apr_thread_mutex_unlock(thread_mutex) == APR_SUCCESS); + assert(fspr_thread_mutex_lock(thread_mutex) == APR_SUCCESS); + assert(fspr_thread_mutex_unlock(thread_mutex) == APR_SUCCESS); lock_release(test_mode); return NULL; } -static void test_mech_mode(apr_lockmech_e mech, const char *mech_name, +static void test_mech_mode(fspr_lockmech_e mech, const char *mech_name, test_mode_e test_mode) { - apr_thread_t *threads[20]; + fspr_thread_t *threads[20]; int numThreads = 5; int i; - apr_status_t rv; + fspr_status_t rv; printf("Trying %s mutexes with mechanism `%s'...\n", test_mode == TEST_GLOBAL ? "global" : "proc", mech_name); assert(numThreads <= sizeof(threads) / sizeof(threads[0])); - assert(apr_pool_create(&p, NULL) == APR_SUCCESS); + assert(fspr_pool_create(&p, NULL) == APR_SUCCESS); - assert(apr_thread_mutex_create(&thread_mutex, 0, p) == APR_SUCCESS); - assert(apr_thread_mutex_lock(thread_mutex) == APR_SUCCESS); + assert(fspr_thread_mutex_create(&thread_mutex, 0, p) == APR_SUCCESS); + assert(fspr_thread_mutex_lock(thread_mutex) == APR_SUCCESS); lock_init(mech, test_mode); @@ -124,19 +124,19 @@ static void test_mech_mode(apr_lockmech_e mech, const char *mech_name, i = 0; while (i < numThreads) { - rv = apr_thread_create(&threads[i], + rv = fspr_thread_create(&threads[i], NULL, eachThread, (void *)test_mode, p); if (rv != APR_SUCCESS) { - fprintf(stderr, "apr_thread_create->%d\n", rv); + fprintf(stderr, "fspr_thread_create->%d\n", rv); exit(1); } ++i; } - apr_sleep(apr_time_from_sec(5)); + fspr_sleep(fspr_time_from_sec(5)); if (test_mode == TEST_PROC) { printf(" Mutex mechanism `%s' is %sglobal in scope on this platform.\n", @@ -144,7 +144,7 @@ static void test_mech_mode(apr_lockmech_e mech, const char *mech_name, } else { if (counter != 1) { - fprintf(stderr, "\n!!!apr_global_mutex operations are broken on this " + fprintf(stderr, "\n!!!fspr_global_mutex operations are broken on this " "platform for mutex mechanism `%s'!\n" "They don't block out threads within the same process.\n", mech_name); @@ -156,25 +156,25 @@ static void test_mech_mode(apr_lockmech_e mech, const char *mech_name, } } - assert(apr_thread_mutex_unlock(thread_mutex) == APR_SUCCESS); + assert(fspr_thread_mutex_unlock(thread_mutex) == APR_SUCCESS); i = 0; while (i < numThreads) { - apr_status_t ignored; + fspr_status_t ignored; - rv = apr_thread_join(&ignored, + rv = fspr_thread_join(&ignored, threads[i]); assert(rv == APR_SUCCESS); ++i; } lock_destroy(test_mode); - apr_thread_mutex_destroy(thread_mutex); - apr_pool_destroy(p); + fspr_thread_mutex_destroy(thread_mutex); + fspr_pool_destroy(p); } -static void test_mech(apr_lockmech_e mech, const char *mech_name) +static void test_mech(fspr_lockmech_e mech, const char *mech_name) { test_mech_mode(mech, mech_name, TEST_PROC); test_mech_mode(mech, mech_name, TEST_GLOBAL); @@ -183,7 +183,7 @@ static void test_mech(apr_lockmech_e mech, const char *mech_name) int main(void) { struct { - apr_lockmech_e mech; + fspr_lockmech_e mech; const char *mech_name; } lockmechs[] = { {APR_LOCK_DEFAULT, "default"} @@ -205,13 +205,13 @@ int main(void) }; int i; - assert(apr_initialize() == APR_SUCCESS); + assert(fspr_initialize() == APR_SUCCESS); for (i = 0; i < sizeof(lockmechs) / sizeof(lockmechs[0]); i++) { test_mech(lockmechs[i].mech, lockmechs[i].mech_name); } - apr_terminate(); + fspr_terminate(); return 0; } diff --git a/libs/apr/test/testnames.c b/libs/apr/test/testnames.c index fca79f3ee89..e35e4d7bf47 100644 --- a/libs/apr/test/testnames.c +++ b/libs/apr/test/testnames.c @@ -15,12 +15,12 @@ */ #include "testutil.h" -#include "apr_file_io.h" -#include "apr_file_info.h" -#include "apr_errno.h" -#include "apr_general.h" -#include "apr_pools.h" -#include "apr_lib.h" +#include "fspr_file_io.h" +#include "fspr_file_info.h" +#include "fspr_errno.h" +#include "fspr_general.h" +#include "fspr_pools.h" +#include "fspr_lib.h" #if WIN32 #define ABS_ROOT "C:/" @@ -32,13 +32,13 @@ static void merge_aboveroot(abts_case *tc, void *data) { - apr_status_t rv; + fspr_status_t rv; char *dstpath = NULL; char errmsg[256]; - rv = apr_filepath_merge(&dstpath, ABS_ROOT"foo", ABS_ROOT"bar", APR_FILEPATH_NOTABOVEROOT, + rv = fspr_filepath_merge(&dstpath, ABS_ROOT"foo", ABS_ROOT"bar", APR_FILEPATH_NOTABOVEROOT, p); - apr_strerror(rv, errmsg, sizeof(errmsg)); + fspr_strerror(rv, errmsg, sizeof(errmsg)); ABTS_INT_EQUAL(tc, 1, APR_STATUS_IS_EABOVEROOT(rv)); ABTS_PTR_EQUAL(tc, NULL, dstpath); ABTS_STR_EQUAL(tc, "The given path was above the root path", errmsg); @@ -46,10 +46,10 @@ static void merge_aboveroot(abts_case *tc, void *data) static void merge_belowroot(abts_case *tc, void *data) { - apr_status_t rv; + fspr_status_t rv; char *dstpath = NULL; - rv = apr_filepath_merge(&dstpath, ABS_ROOT"foo", ABS_ROOT"foo/bar", + rv = fspr_filepath_merge(&dstpath, ABS_ROOT"foo", ABS_ROOT"foo/bar", APR_FILEPATH_NOTABOVEROOT, p); ABTS_PTR_NOTNULL(tc, dstpath); ABTS_INT_EQUAL(tc, APR_SUCCESS, rv); @@ -58,10 +58,10 @@ static void merge_belowroot(abts_case *tc, void *data) static void merge_noflag(abts_case *tc, void *data) { - apr_status_t rv; + fspr_status_t rv; char *dstpath = NULL; - rv = apr_filepath_merge(&dstpath, ABS_ROOT"foo", ABS_ROOT"foo/bar", 0, p); + rv = fspr_filepath_merge(&dstpath, ABS_ROOT"foo", ABS_ROOT"foo/bar", 0, p); ABTS_PTR_NOTNULL(tc, dstpath); ABTS_INT_EQUAL(tc, APR_SUCCESS, rv); ABTS_STR_EQUAL(tc, ABS_ROOT"foo/bar", dstpath); @@ -69,15 +69,15 @@ static void merge_noflag(abts_case *tc, void *data) static void merge_dotdot(abts_case *tc, void *data) { - apr_status_t rv; + fspr_status_t rv; char *dstpath = NULL; - rv = apr_filepath_merge(&dstpath, ABS_ROOT"foo/bar", "../baz", 0, p); + rv = fspr_filepath_merge(&dstpath, ABS_ROOT"foo/bar", "../baz", 0, p); ABTS_PTR_NOTNULL(tc, dstpath); ABTS_INT_EQUAL(tc, APR_SUCCESS, rv); ABTS_STR_EQUAL(tc, ABS_ROOT"foo/baz", dstpath); - rv = apr_filepath_merge(&dstpath, "", "../test", 0, p); + rv = fspr_filepath_merge(&dstpath, "", "../test", 0, p); ABTS_INT_EQUAL(tc, 0, APR_SUCCESS); ABTS_STR_EQUAL(tc, "../test", dstpath); @@ -86,23 +86,23 @@ static void merge_dotdot(abts_case *tc, void *data) * return ../test unless a previously fixed bug remains or the developer changes * the case of the test directory: */ - rv = apr_filepath_merge(&dstpath, "", "../test", APR_FILEPATH_TRUENAME, p); + rv = fspr_filepath_merge(&dstpath, "", "../test", APR_FILEPATH_TRUENAME, p); ABTS_INT_EQUAL(tc, 0, APR_SUCCESS); ABTS_STR_EQUAL(tc, "../test", dstpath); } static void merge_dotdot_dotdot_dotdot(abts_case *tc, void *data) { - apr_status_t rv; + fspr_status_t rv; char *dstpath = NULL; - rv = apr_filepath_merge(&dstpath, "", + rv = fspr_filepath_merge(&dstpath, "", "../../..", APR_FILEPATH_TRUENAME, p); ABTS_PTR_NOTNULL(tc, dstpath); ABTS_INT_EQUAL(tc, APR_SUCCESS, rv); ABTS_STR_EQUAL(tc, "../../..", dstpath); - rv = apr_filepath_merge(&dstpath, "", + rv = fspr_filepath_merge(&dstpath, "", "../../../", APR_FILEPATH_TRUENAME, p); ABTS_PTR_NOTNULL(tc, dstpath); ABTS_INT_EQUAL(tc, APR_SUCCESS, rv); @@ -111,10 +111,10 @@ static void merge_dotdot_dotdot_dotdot(abts_case *tc, void *data) static void merge_secure(abts_case *tc, void *data) { - apr_status_t rv; + fspr_status_t rv; char *dstpath = NULL; - rv = apr_filepath_merge(&dstpath, ABS_ROOT"foo/bar", "../bar/baz", 0, p); + rv = fspr_filepath_merge(&dstpath, ABS_ROOT"foo/bar", "../bar/baz", 0, p); ABTS_PTR_NOTNULL(tc, dstpath); ABTS_INT_EQUAL(tc, APR_SUCCESS, rv); ABTS_STR_EQUAL(tc, ABS_ROOT"foo/bar/baz", dstpath); @@ -122,10 +122,10 @@ static void merge_secure(abts_case *tc, void *data) static void merge_notrel(abts_case *tc, void *data) { - apr_status_t rv; + fspr_status_t rv; char *dstpath = NULL; - rv = apr_filepath_merge(&dstpath, ABS_ROOT"foo/bar", "../baz", + rv = fspr_filepath_merge(&dstpath, ABS_ROOT"foo/bar", "../baz", APR_FILEPATH_NOTRELATIVE, p); ABTS_PTR_NOTNULL(tc, dstpath); ABTS_INT_EQUAL(tc, APR_SUCCESS, rv); @@ -134,13 +134,13 @@ static void merge_notrel(abts_case *tc, void *data) static void merge_notrelfail(abts_case *tc, void *data) { - apr_status_t rv; + fspr_status_t rv; char *dstpath = NULL; char errmsg[256]; - rv = apr_filepath_merge(&dstpath, "foo/bar", "../baz", + rv = fspr_filepath_merge(&dstpath, "foo/bar", "../baz", APR_FILEPATH_NOTRELATIVE, p); - apr_strerror(rv, errmsg, sizeof(errmsg)); + fspr_strerror(rv, errmsg, sizeof(errmsg)); ABTS_PTR_EQUAL(tc, NULL, dstpath); ABTS_INT_EQUAL(tc, 1, APR_STATUS_IS_ERELATIVE(rv)); @@ -149,13 +149,13 @@ static void merge_notrelfail(abts_case *tc, void *data) static void merge_notabsfail(abts_case *tc, void *data) { - apr_status_t rv; + fspr_status_t rv; char *dstpath = NULL; char errmsg[256]; - rv = apr_filepath_merge(&dstpath, ABS_ROOT"foo/bar", "../baz", + rv = fspr_filepath_merge(&dstpath, ABS_ROOT"foo/bar", "../baz", APR_FILEPATH_NOTABSOLUTE, p); - apr_strerror(rv, errmsg, sizeof(errmsg)); + fspr_strerror(rv, errmsg, sizeof(errmsg)); ABTS_PTR_EQUAL(tc, NULL, dstpath); ABTS_INT_EQUAL(tc, 1, APR_STATUS_IS_EABSOLUTE(rv)); @@ -164,10 +164,10 @@ static void merge_notabsfail(abts_case *tc, void *data) static void merge_notabs(abts_case *tc, void *data) { - apr_status_t rv; + fspr_status_t rv; char *dstpath = NULL; - rv = apr_filepath_merge(&dstpath, "foo/bar", "../baz", + rv = fspr_filepath_merge(&dstpath, "foo/bar", "../baz", APR_FILEPATH_NOTABSOLUTE, p); ABTS_PTR_NOTNULL(tc, dstpath); @@ -177,11 +177,11 @@ static void merge_notabs(abts_case *tc, void *data) static void root_absolute(abts_case *tc, void *data) { - apr_status_t rv; + fspr_status_t rv; const char *root = NULL; const char *path = ABS_ROOT"foo/bar"; - rv = apr_filepath_root(&root, &path, 0, p); + rv = fspr_filepath_root(&root, &path, 0, p); ABTS_PTR_NOTNULL(tc, root); ABTS_INT_EQUAL(tc, APR_SUCCESS, rv); @@ -190,13 +190,13 @@ static void root_absolute(abts_case *tc, void *data) static void root_relative(abts_case *tc, void *data) { - apr_status_t rv; + fspr_status_t rv; const char *root = NULL; const char *path = "foo/bar"; char errmsg[256]; - rv = apr_filepath_root(&root, &path, 0, p); - apr_strerror(rv, errmsg, sizeof(errmsg)); + rv = fspr_filepath_root(&root, &path, 0, p); + fspr_strerror(rv, errmsg, sizeof(errmsg)); ABTS_PTR_EQUAL(tc, NULL, root); ABTS_INT_EQUAL(tc, 1, APR_STATUS_IS_ERELATIVE(rv)); @@ -205,11 +205,11 @@ static void root_relative(abts_case *tc, void *data) static void root_from_slash(abts_case *tc, void *data) { - apr_status_t rv; + fspr_status_t rv; const char *root = NULL; const char *path = "//"; - rv = apr_filepath_root(&root, &path, APR_FILEPATH_TRUENAME, p); + rv = fspr_filepath_root(&root, &path, APR_FILEPATH_TRUENAME, p); #if defined(WIN32) || defined(OS2) ABTS_INT_EQUAL(tc, APR_EINCOMPLETE, rv); @@ -223,15 +223,15 @@ static void root_from_slash(abts_case *tc, void *data) static void root_from_cwd_and_back(abts_case *tc, void *data) { - apr_status_t rv; + fspr_status_t rv; const char *root = NULL; const char *path = "//"; char *origpath; char *testpath; - ABTS_INT_EQUAL(tc, APR_SUCCESS, apr_filepath_get(&origpath, 0, p)); + ABTS_INT_EQUAL(tc, APR_SUCCESS, fspr_filepath_get(&origpath, 0, p)); path = origpath; - rv = apr_filepath_root(&root, &path, APR_FILEPATH_TRUENAME, p); + rv = fspr_filepath_root(&root, &path, APR_FILEPATH_TRUENAME, p); #if defined(WIN32) || defined(OS2) ABTS_INT_EQUAL(tc, origpath[0], root[0]); @@ -257,7 +257,7 @@ static void root_from_cwd_and_back(abts_case *tc, void *data) ABTS_STR_EQUAL(tc, origpath + 1, path); #endif - rv = apr_filepath_merge(&testpath, root, path, + rv = fspr_filepath_merge(&testpath, root, path, APR_FILEPATH_TRUENAME | APR_FILEPATH_NOTABOVEROOT | APR_FILEPATH_NOTRELATIVE, p); diff --git a/libs/apr/test/testoc.c b/libs/apr/test/testoc.c index 9dbaff8c377..c067f78f835 100644 --- a/libs/apr/test/testoc.c +++ b/libs/apr/test/testoc.c @@ -15,11 +15,11 @@ */ #include "testutil.h" -#include "apr_thread_proc.h" -#include "apr_errno.h" -#include "apr_general.h" -#include "apr_lib.h" -#include "apr_strings.h" +#include "fspr_thread_proc.h" +#include "fspr_errno.h" +#include "fspr_general.h" +#include "fspr_lib.h" +#include "fspr_strings.h" #if APR_HAS_OTHER_CHILD @@ -29,19 +29,19 @@ static void ocmaint(int reason, void *data, int status) { switch (reason) { case APR_OC_REASON_DEATH: - apr_cpystrn(reasonstr, "APR_OC_REASON_DEATH", + fspr_cpystrn(reasonstr, "APR_OC_REASON_DEATH", strlen("APR_OC_REASON_DEATH") + 1); break; case APR_OC_REASON_LOST: - apr_cpystrn(reasonstr, "APR_OC_REASON_LOST", + fspr_cpystrn(reasonstr, "APR_OC_REASON_LOST", strlen("APR_OC_REASON_LOST") + 1); break; case APR_OC_REASON_UNWRITABLE: - apr_cpystrn(reasonstr, "APR_OC_REASON_UNWRITEABLE", + fspr_cpystrn(reasonstr, "APR_OC_REASON_UNWRITEABLE", strlen("APR_OC_REASON_UNWRITEABLE") + 1); break; case APR_OC_REASON_RESTART: - apr_cpystrn(reasonstr, "APR_OC_REASON_RESTART", + fspr_cpystrn(reasonstr, "APR_OC_REASON_RESTART", strlen("APR_OC_REASON_RESTART") + 1); break; } @@ -56,24 +56,24 @@ static void ocmaint(int reason, void *data, int status) */ static void test_child_kill(abts_case *tc, void *data) { - apr_file_t *std = NULL; - apr_proc_t newproc; - apr_procattr_t *procattr = NULL; + fspr_file_t *std = NULL; + fspr_proc_t newproc; + fspr_procattr_t *procattr = NULL; const char *args[3]; - apr_status_t rv; + fspr_status_t rv; - args[0] = apr_pstrdup(p, "occhild" EXTENSION); - args[1] = apr_pstrdup(p, "-X"); + args[0] = fspr_pstrdup(p, "occhild" EXTENSION); + args[1] = fspr_pstrdup(p, "-X"); args[2] = NULL; - rv = apr_procattr_create(&procattr, p); + rv = fspr_procattr_create(&procattr, p); ABTS_INT_EQUAL(tc, APR_SUCCESS, rv); - rv = apr_procattr_io_set(procattr, APR_FULL_BLOCK, APR_NO_PIPE, + rv = fspr_procattr_io_set(procattr, APR_FULL_BLOCK, APR_NO_PIPE, APR_NO_PIPE); ABTS_INT_EQUAL(tc, APR_SUCCESS, rv); - rv = apr_proc_create(&newproc, "./occhild" EXTENSION, args, NULL, procattr, p); + rv = fspr_proc_create(&newproc, "./occhild" EXTENSION, args, NULL, procattr, p); ABTS_INT_EQUAL(tc, APR_SUCCESS, rv); ABTS_PTR_NOTNULL(tc, newproc.in); ABTS_PTR_EQUAL(tc, NULL, newproc.out); @@ -81,16 +81,16 @@ static void test_child_kill(abts_case *tc, void *data) std = newproc.in; - apr_proc_other_child_register(&newproc, ocmaint, NULL, std, p); + fspr_proc_other_child_register(&newproc, ocmaint, NULL, std, p); - apr_sleep(apr_time_from_sec(1)); - rv = apr_proc_kill(&newproc, SIGKILL); + fspr_sleep(fspr_time_from_sec(1)); + rv = fspr_proc_kill(&newproc, SIGKILL); ABTS_INT_EQUAL(tc, APR_SUCCESS, rv); /* allow time for things to settle... */ - apr_sleep(apr_time_from_sec(3)); + fspr_sleep(fspr_time_from_sec(3)); - apr_proc_other_child_refresh_all(APR_OC_REASON_RUNNING); + fspr_proc_other_child_refresh_all(APR_OC_REASON_RUNNING); ABTS_STR_EQUAL(tc, "APR_OC_REASON_DEATH", reasonstr); } #else diff --git a/libs/apr/test/testpath.c b/libs/apr/test/testpath.c index b05ae9917e0..6de85b84008 100644 --- a/libs/apr/test/testpath.c +++ b/libs/apr/test/testpath.c @@ -15,10 +15,10 @@ */ #include "testutil.h" -#include "apr_file_info.h" -#include "apr_errno.h" -#include "apr_pools.h" -#include "apr_tables.h" +#include "fspr_file_info.h" +#include "fspr_errno.h" +#include "fspr_pools.h" +#include "fspr_tables.h" #if defined(WIN32) || defined(NETWARE) || defined(OS2) #define PSEP ";" @@ -46,11 +46,11 @@ static const int parts_out_count = sizeof(parts_out)/sizeof(*parts_out); static void list_split_multi(abts_case *tc, void *data) { int i; - apr_status_t rv; - apr_array_header_t *pathelts; + fspr_status_t rv; + fspr_array_header_t *pathelts; pathelts = NULL; - rv = apr_filepath_list_split(&pathelts, path_in, p); + rv = fspr_filepath_list_split(&pathelts, path_in, p); ABTS_PTR_NOTNULL(tc, pathelts); ABTS_INT_EQUAL(tc, APR_SUCCESS, rv); ABTS_INT_EQUAL(tc, parts_out_count, pathelts->nelts); @@ -61,13 +61,13 @@ static void list_split_multi(abts_case *tc, void *data) static void list_split_single(abts_case *tc, void *data) { int i; - apr_status_t rv; - apr_array_header_t *pathelts; + fspr_status_t rv; + fspr_array_header_t *pathelts; for (i = 0; i < parts_in_count; ++i) { pathelts = NULL; - rv = apr_filepath_list_split(&pathelts, parts_in[i], p); + rv = fspr_filepath_list_split(&pathelts, parts_in[i], p); ABTS_PTR_NOTNULL(tc, pathelts); ABTS_INT_EQUAL(tc, APR_SUCCESS, rv); if (parts_in[i][0] == '\0') @@ -84,15 +84,15 @@ static void list_merge_multi(abts_case *tc, void *data) { int i; char *liststr; - apr_status_t rv; - apr_array_header_t *pathelts; + fspr_status_t rv; + fspr_array_header_t *pathelts; - pathelts = apr_array_make(p, parts_in_count, sizeof(const char*)); + pathelts = fspr_array_make(p, parts_in_count, sizeof(const char*)); for (i = 0; i < parts_in_count; ++i) - *(const char**)apr_array_push(pathelts) = parts_in[i]; + *(const char**)fspr_array_push(pathelts) = parts_in[i]; liststr = NULL; - rv = apr_filepath_list_merge(&liststr, pathelts, p); + rv = fspr_filepath_list_merge(&liststr, pathelts, p); ABTS_PTR_NOTNULL(tc, liststr); ABTS_INT_EQUAL(tc, APR_SUCCESS, rv); ABTS_STR_EQUAL(tc, liststr, path_out); @@ -102,16 +102,16 @@ static void list_merge_single(abts_case *tc, void *data) { int i; char *liststr; - apr_status_t rv; - apr_array_header_t *pathelts; + fspr_status_t rv; + fspr_array_header_t *pathelts; - pathelts = apr_array_make(p, 1, sizeof(const char*)); - apr_array_push(pathelts); + pathelts = fspr_array_make(p, 1, sizeof(const char*)); + fspr_array_push(pathelts); for (i = 0; i < parts_in_count; ++i) { *(const char**)pathelts->elts = parts_in[i]; liststr = NULL; - rv = apr_filepath_list_merge(&liststr, pathelts, p); + rv = fspr_filepath_list_merge(&liststr, pathelts, p); if (parts_in[i][0] == '\0') ABTS_PTR_EQUAL(tc, NULL, liststr); else diff --git a/libs/apr/test/testpipe.c b/libs/apr/test/testpipe.c index db3c77ffc3f..add6c384a71 100644 --- a/libs/apr/test/testpipe.c +++ b/libs/apr/test/testpipe.c @@ -17,21 +17,21 @@ #include #include "testutil.h" -#include "apr_file_io.h" -#include "apr_errno.h" -#include "apr_general.h" -#include "apr_lib.h" -#include "apr_thread_proc.h" -#include "apr_strings.h" +#include "fspr_file_io.h" +#include "fspr_errno.h" +#include "fspr_general.h" +#include "fspr_lib.h" +#include "fspr_thread_proc.h" +#include "fspr_strings.h" -static apr_file_t *readp = NULL; -static apr_file_t *writep = NULL; +static fspr_file_t *readp = NULL; +static fspr_file_t *writep = NULL; static void create_pipe(abts_case *tc, void *data) { - apr_status_t rv; + fspr_status_t rv; - rv = apr_file_pipe_create(&readp, &writep, p); + rv = fspr_file_pipe_create(&readp, &writep, p); ABTS_INT_EQUAL(tc, APR_SUCCESS, rv); ABTS_PTR_NOTNULL(tc, readp); ABTS_PTR_NOTNULL(tc, writep); @@ -39,60 +39,60 @@ static void create_pipe(abts_case *tc, void *data) static void close_pipe(abts_case *tc, void *data) { - apr_status_t rv; - apr_size_t nbytes = 256; + fspr_status_t rv; + fspr_size_t nbytes = 256; char buf[256]; - rv = apr_file_close(readp); - rv = apr_file_close(writep); + rv = fspr_file_close(readp); + rv = fspr_file_close(writep); ABTS_INT_EQUAL(tc, APR_SUCCESS, rv); - rv = apr_file_read(readp, buf, &nbytes); + rv = fspr_file_read(readp, buf, &nbytes); ABTS_INT_EQUAL(tc, 1, APR_STATUS_IS_EBADF(rv)); } static void set_timeout(abts_case *tc, void *data) { - apr_status_t rv; - apr_interval_time_t timeout; + fspr_status_t rv; + fspr_interval_time_t timeout; - rv = apr_file_pipe_create(&readp, &writep, p); + rv = fspr_file_pipe_create(&readp, &writep, p); ABTS_INT_EQUAL(tc, APR_SUCCESS, rv); ABTS_PTR_NOTNULL(tc, readp); ABTS_PTR_NOTNULL(tc, writep); - rv = apr_file_pipe_timeout_get(readp, &timeout); + rv = fspr_file_pipe_timeout_get(readp, &timeout); ABTS_INT_EQUAL(tc, APR_SUCCESS, rv); ABTS_ASSERT(tc, "Timeout mismatch, expected -1", timeout == -1); - rv = apr_file_pipe_timeout_set(readp, apr_time_from_sec(1)); + rv = fspr_file_pipe_timeout_set(readp, fspr_time_from_sec(1)); ABTS_INT_EQUAL(tc, APR_SUCCESS, rv); - rv = apr_file_pipe_timeout_get(readp, &timeout); + rv = fspr_file_pipe_timeout_get(readp, &timeout); ABTS_INT_EQUAL(tc, APR_SUCCESS, rv); ABTS_ASSERT(tc, "Timeout mismatch, expected 1 second", - timeout == apr_time_from_sec(1)); + timeout == fspr_time_from_sec(1)); } static void read_write(abts_case *tc, void *data) { - apr_status_t rv; + fspr_status_t rv; char *buf; - apr_size_t nbytes; + fspr_size_t nbytes; nbytes = strlen("this is a test"); - buf = (char *)apr_palloc(p, nbytes + 1); + buf = (char *)fspr_palloc(p, nbytes + 1); - rv = apr_file_pipe_create(&readp, &writep, p); + rv = fspr_file_pipe_create(&readp, &writep, p); ABTS_INT_EQUAL(tc, APR_SUCCESS, rv); ABTS_PTR_NOTNULL(tc, readp); ABTS_PTR_NOTNULL(tc, writep); - rv = apr_file_pipe_timeout_set(readp, apr_time_from_sec(1)); + rv = fspr_file_pipe_timeout_set(readp, fspr_time_from_sec(1)); ABTS_INT_EQUAL(tc, APR_SUCCESS, rv); if (!rv) { - rv = apr_file_read(readp, buf, &nbytes); + rv = fspr_file_read(readp, buf, &nbytes); ABTS_INT_EQUAL(tc, 1, APR_STATUS_IS_TIMEUP(rv)); ABTS_INT_EQUAL(tc, 0, nbytes); } @@ -100,25 +100,25 @@ static void read_write(abts_case *tc, void *data) static void read_write_notimeout(abts_case *tc, void *data) { - apr_status_t rv; + fspr_status_t rv; char *buf = "this is a test"; char *input; - apr_size_t nbytes; + fspr_size_t nbytes; nbytes = strlen("this is a test"); - rv = apr_file_pipe_create(&readp, &writep, p); + rv = fspr_file_pipe_create(&readp, &writep, p); ABTS_INT_EQUAL(tc, APR_SUCCESS, rv); ABTS_PTR_NOTNULL(tc, readp); ABTS_PTR_NOTNULL(tc, writep); - rv = apr_file_write(writep, buf, &nbytes); + rv = fspr_file_write(writep, buf, &nbytes); ABTS_INT_EQUAL(tc, strlen("this is a test"), nbytes); ABTS_INT_EQUAL(tc, APR_SUCCESS, rv); nbytes = 256; - input = apr_pcalloc(p, nbytes + 1); - rv = apr_file_read(readp, input, &nbytes); + input = fspr_pcalloc(p, nbytes + 1); + rv = fspr_file_read(readp, input, &nbytes); ABTS_INT_EQUAL(tc, APR_SUCCESS, rv); ABTS_INT_EQUAL(tc, strlen("this is a test"), nbytes); ABTS_STR_EQUAL(tc, "this is a test", input); @@ -131,54 +131,54 @@ static void test_pipe_writefull(abts_case *tc, void *data) int bytes_per_iteration = 8000; char *buf = (char *)malloc(bytes_per_iteration); char responsebuf[128]; - apr_size_t nbytes; + fspr_size_t nbytes; int bytes_processed; - apr_proc_t proc = {0}; - apr_procattr_t *procattr; + fspr_proc_t proc = {0}; + fspr_procattr_t *procattr; const char *args[2]; - apr_status_t rv; - apr_exit_why_e why; + fspr_status_t rv; + fspr_exit_why_e why; - rv = apr_procattr_create(&procattr, p); + rv = fspr_procattr_create(&procattr, p); ABTS_INT_EQUAL(tc, APR_SUCCESS, rv); - rv = apr_procattr_io_set(procattr, APR_CHILD_BLOCK, APR_CHILD_BLOCK, + rv = fspr_procattr_io_set(procattr, APR_CHILD_BLOCK, APR_CHILD_BLOCK, APR_CHILD_BLOCK); ABTS_INT_EQUAL(tc, APR_SUCCESS, rv); - rv = apr_procattr_error_check_set(procattr, 1); + rv = fspr_procattr_error_check_set(procattr, 1); ABTS_INT_EQUAL(tc, APR_SUCCESS, rv); args[0] = "readchild" EXTENSION; args[1] = NULL; - rv = apr_proc_create(&proc, "./readchild" EXTENSION, args, NULL, procattr, p); + rv = fspr_proc_create(&proc, "./readchild" EXTENSION, args, NULL, procattr, p); ABTS_INT_EQUAL(tc, APR_SUCCESS, rv); - rv = apr_file_pipe_timeout_set(proc.in, apr_time_from_sec(10)); + rv = fspr_file_pipe_timeout_set(proc.in, fspr_time_from_sec(10)); ABTS_INT_EQUAL(tc, APR_SUCCESS, rv); - rv = apr_file_pipe_timeout_set(proc.out, apr_time_from_sec(10)); + rv = fspr_file_pipe_timeout_set(proc.out, fspr_time_from_sec(10)); ABTS_INT_EQUAL(tc, APR_SUCCESS, rv); i = iterations; do { - rv = apr_file_write_full(proc.in, buf, bytes_per_iteration, NULL); + rv = fspr_file_write_full(proc.in, buf, bytes_per_iteration, NULL); ABTS_INT_EQUAL(tc, APR_SUCCESS, rv); } while (--i); free(buf); - rv = apr_file_close(proc.in); + rv = fspr_file_close(proc.in); ABTS_INT_EQUAL(tc, APR_SUCCESS, rv); nbytes = sizeof(responsebuf); - rv = apr_file_read(proc.out, responsebuf, &nbytes); + rv = fspr_file_read(proc.out, responsebuf, &nbytes); ABTS_INT_EQUAL(tc, APR_SUCCESS, rv); - bytes_processed = (int)apr_strtoi64(responsebuf, NULL, 10); + bytes_processed = (int)fspr_strtoi64(responsebuf, NULL, 10); ABTS_INT_EQUAL(tc, iterations * bytes_per_iteration, bytes_processed); ABTS_ASSERT(tc, "wait for child process", - apr_proc_wait(&proc, NULL, &why, APR_WAIT) == APR_CHILD_DONE); + fspr_proc_wait(&proc, NULL, &why, APR_WAIT) == APR_CHILD_DONE); ABTS_ASSERT(tc, "child terminated normally", why == APR_PROC_EXIT); } diff --git a/libs/apr/test/testpoll.c b/libs/apr/test/testpoll.c index 36dd8a06bff..1b1424614a2 100644 --- a/libs/apr/test/testpoll.c +++ b/libs/apr/test/testpoll.c @@ -15,12 +15,12 @@ */ #include "testutil.h" -#include "apr_strings.h" -#include "apr_errno.h" -#include "apr_general.h" -#include "apr_lib.h" -#include "apr_network_io.h" -#include "apr_poll.h" +#include "fspr_strings.h" +#include "fspr_errno.h" +#include "fspr_general.h" +#include "fspr_lib.h" +#include "fspr_network_io.h" +#include "fspr_poll.h" #define SMALL_NUM_SOCKETS 3 /* We can't use 64 here, because some platforms *ahem* Solaris *ahem* have @@ -29,83 +29,83 @@ */ #define LARGE_NUM_SOCKETS 50 -static apr_socket_t *s[LARGE_NUM_SOCKETS]; -static apr_sockaddr_t *sa[LARGE_NUM_SOCKETS]; -static apr_pollset_t *pollset; +static fspr_socket_t *s[LARGE_NUM_SOCKETS]; +static fspr_sockaddr_t *sa[LARGE_NUM_SOCKETS]; +static fspr_pollset_t *pollset; /* ###: tests surrounded by ifdef OLD_POLL_INTERFACE either need to be * converted to use the pollset interface or removed. */ #ifdef OLD_POLL_INTERFACE -static apr_pollfd_t *pollarray; -static apr_pollfd_t *pollarray_large; +static fspr_pollfd_t *pollarray; +static fspr_pollfd_t *pollarray_large; #endif -static void make_socket(apr_socket_t **sock, apr_sockaddr_t **sa, - apr_port_t port, apr_pool_t *p, abts_case *tc) +static void make_socket(fspr_socket_t **sock, fspr_sockaddr_t **sa, + fspr_port_t port, fspr_pool_t *p, abts_case *tc) { - apr_status_t rv; + fspr_status_t rv; - rv = apr_sockaddr_info_get(sa, "127.0.0.1", APR_UNSPEC, port, 0, p); + rv = fspr_sockaddr_info_get(sa, "127.0.0.1", APR_UNSPEC, port, 0, p); ABTS_INT_EQUAL(tc, APR_SUCCESS, rv); - rv = apr_socket_create(sock, (*sa)->family, SOCK_DGRAM, 0, p); + rv = fspr_socket_create(sock, (*sa)->family, SOCK_DGRAM, 0, p); ABTS_INT_EQUAL(tc, APR_SUCCESS, rv); - rv =apr_socket_bind((*sock), (*sa)); + rv =fspr_socket_bind((*sock), (*sa)); ABTS_INT_EQUAL(tc, APR_SUCCESS, rv); } #ifdef OLD_POLL_INTERFACE -static void check_sockets(const apr_pollfd_t *pollarray, - apr_socket_t **sockarray, int which, int pollin, +static void check_sockets(const fspr_pollfd_t *pollarray, + fspr_socket_t **sockarray, int which, int pollin, abts_case *tc) { - apr_status_t rv; - apr_int16_t event; + fspr_status_t rv; + fspr_int16_t event; char *str; - rv = apr_poll_revents_get(&event, sockarray[which], - (apr_pollfd_t *)pollarray); + rv = fspr_poll_revents_get(&event, sockarray[which], + (fspr_pollfd_t *)pollarray); ABTS_INT_EQUAL(tc, APR_SUCCESS, rv); if (pollin) { - str = apr_psprintf(p, "Socket %d not signalled when it should be", + str = fspr_psprintf(p, "Socket %d not signalled when it should be", which); ABTS_ASSERT(tc, str, event & APR_POLLIN); } else { - str = apr_psprintf(p, "Socket %d signalled when it should not be", + str = fspr_psprintf(p, "Socket %d signalled when it should not be", which); ABTS_ASSERT(tc, str, !(event & APR_POLLIN)); } } #endif -static void send_msg(apr_socket_t **sockarray, apr_sockaddr_t **sas, int which, +static void send_msg(fspr_socket_t **sockarray, fspr_sockaddr_t **sas, int which, abts_case *tc) { - apr_size_t len = 5; - apr_status_t rv; + fspr_size_t len = 5; + fspr_status_t rv; ABTS_PTR_NOTNULL(tc, sockarray[which]); - rv = apr_socket_sendto(sockarray[which], sas[which], 0, "hello", &len); + rv = fspr_socket_sendto(sockarray[which], sas[which], 0, "hello", &len); ABTS_INT_EQUAL(tc, APR_SUCCESS, rv); ABTS_INT_EQUAL(tc, strlen("hello"), len); } -static void recv_msg(apr_socket_t **sockarray, int which, apr_pool_t *p, +static void recv_msg(fspr_socket_t **sockarray, int which, fspr_pool_t *p, abts_case *tc) { - apr_size_t buflen = 5; - char *buffer = apr_pcalloc(p, sizeof(char) * (buflen + 1)); - apr_sockaddr_t *recsa; - apr_status_t rv; + fspr_size_t buflen = 5; + char *buffer = fspr_pcalloc(p, sizeof(char) * (buflen + 1)); + fspr_sockaddr_t *recsa; + fspr_status_t rv; ABTS_PTR_NOTNULL(tc, sockarray[which]); - apr_sockaddr_info_get(&recsa, "127.0.0.1", APR_UNSPEC, 7770, 0, p); + fspr_sockaddr_info_get(&recsa, "127.0.0.1", APR_UNSPEC, 7770, 0, p); - rv = apr_socket_recvfrom(recsa, sockarray[which], 0, buffer, &buflen); + rv = fspr_socket_recvfrom(recsa, sockarray[which], 0, buffer, &buflen); ABTS_INT_EQUAL(tc, APR_SUCCESS, rv); ABTS_INT_EQUAL(tc, strlen("hello"), buflen); ABTS_STR_EQUAL(tc, "hello", buffer); @@ -124,17 +124,17 @@ static void create_all_sockets(abts_case *tc, void *data) #ifdef OLD_POLL_INTERFACE static void setup_small_poll(abts_case *tc, void *data) { - apr_status_t rv; + fspr_status_t rv; int i; - rv = apr_poll_setup(&pollarray, SMALL_NUM_SOCKETS, p); + rv = fspr_poll_setup(&pollarray, SMALL_NUM_SOCKETS, p); ABTS_INT_EQUAL(tc, APR_SUCCESS, rv); for (i = 0; i < SMALL_NUM_SOCKETS;i++){ ABTS_INT_EQUAL(tc, 0, pollarray[i].reqevents); ABTS_INT_EQUAL(tc, 0, pollarray[i].rtnevents); - rv = apr_poll_socket_add(pollarray, s[i], APR_POLLIN); + rv = fspr_poll_socket_add(pollarray, s[i], APR_POLLIN); ABTS_INT_EQUAL(tc, APR_SUCCESS, rv); ABTS_PTR_EQUAL(tc, s[i], pollarray[i].desc.s); } @@ -142,17 +142,17 @@ static void setup_small_poll(abts_case *tc, void *data) static void setup_large_poll(abts_case *tc, void *data) { - apr_status_t rv; + fspr_status_t rv; int i; - rv = apr_poll_setup(&pollarray_large, LARGE_NUM_SOCKETS, p); + rv = fspr_poll_setup(&pollarray_large, LARGE_NUM_SOCKETS, p); ABTS_INT_EQUAL(tc, APR_SUCCESS, rv); for (i = 0; i < LARGE_NUM_SOCKETS;i++){ ABTS_INT_EQUAL(tc, 0, pollarray_large[i].reqevents); ABTS_INT_EQUAL(tc, 0, pollarray_large[i].rtnevents); - rv = apr_poll_socket_add(pollarray_large, s[i], APR_POLLIN); + rv = fspr_poll_socket_add(pollarray_large, s[i], APR_POLLIN); ABTS_INT_EQUAL(tc, APR_SUCCESS, rv); ABTS_PTR_EQUAL(tc, s[i], pollarray_large[i].desc.s); } @@ -160,10 +160,10 @@ static void setup_large_poll(abts_case *tc, void *data) static void nomessage(abts_case *tc, void *data) { - apr_status_t rv; + fspr_status_t rv; int srv = SMALL_NUM_SOCKETS; - rv = apr_poll(pollarray, SMALL_NUM_SOCKETS, &srv, 2 * APR_USEC_PER_SEC); + rv = fspr_poll(pollarray, SMALL_NUM_SOCKETS, &srv, 2 * APR_USEC_PER_SEC); ABTS_INT_EQUAL(tc, 1, APR_STATUS_IS_TIMEUP(rv)); check_sockets(pollarray, s, 0, 0, tc); check_sockets(pollarray, s, 1, 0, tc); @@ -172,12 +172,12 @@ static void nomessage(abts_case *tc, void *data) static void send_2(abts_case *tc, void *data) { - apr_status_t rv; + fspr_status_t rv; int srv = SMALL_NUM_SOCKETS; send_msg(s, sa, 2, tc); - rv = apr_poll(pollarray, SMALL_NUM_SOCKETS, &srv, 2 * APR_USEC_PER_SEC); + rv = fspr_poll(pollarray, SMALL_NUM_SOCKETS, &srv, 2 * APR_USEC_PER_SEC); ABTS_INT_EQUAL(tc, APR_SUCCESS, rv); check_sockets(pollarray, s, 0, 0, tc); check_sockets(pollarray, s, 1, 0, tc); @@ -186,13 +186,13 @@ static void send_2(abts_case *tc, void *data) static void recv_2_send_1(abts_case *tc, void *data) { - apr_status_t rv; + fspr_status_t rv; int srv = SMALL_NUM_SOCKETS; recv_msg(s, 2, p, tc); send_msg(s, sa, 1, tc); - rv = apr_poll(pollarray, SMALL_NUM_SOCKETS, &srv, 2 * APR_USEC_PER_SEC); + rv = fspr_poll(pollarray, SMALL_NUM_SOCKETS, &srv, 2 * APR_USEC_PER_SEC); ABTS_INT_EQUAL(tc, APR_SUCCESS, rv); check_sockets(pollarray, s, 0, 0, tc); check_sockets(pollarray, s, 1, 1, tc); @@ -201,12 +201,12 @@ static void recv_2_send_1(abts_case *tc, void *data) static void send_2_signaled_1(abts_case *tc, void *data) { - apr_status_t rv; + fspr_status_t rv; int srv = SMALL_NUM_SOCKETS; send_msg(s, sa, 2, tc); - rv = apr_poll(pollarray, SMALL_NUM_SOCKETS, &srv, 2 * APR_USEC_PER_SEC); + rv = fspr_poll(pollarray, SMALL_NUM_SOCKETS, &srv, 2 * APR_USEC_PER_SEC); ABTS_INT_EQUAL(tc, APR_SUCCESS, rv); check_sockets(pollarray, s, 0, 0, tc); check_sockets(pollarray, s, 1, 1, tc); @@ -215,13 +215,13 @@ static void send_2_signaled_1(abts_case *tc, void *data) static void recv_1_send_0(abts_case *tc, void *data) { - apr_status_t rv; + fspr_status_t rv; int srv = SMALL_NUM_SOCKETS; recv_msg(s, 1, p, tc); send_msg(s, sa, 0, tc); - rv = apr_poll(pollarray, SMALL_NUM_SOCKETS, &srv, 2 * APR_USEC_PER_SEC); + rv = fspr_poll(pollarray, SMALL_NUM_SOCKETS, &srv, 2 * APR_USEC_PER_SEC); ABTS_INT_EQUAL(tc, APR_SUCCESS, rv); check_sockets(pollarray, s, 0, 1, tc); check_sockets(pollarray, s, 1, 0, tc); @@ -230,13 +230,13 @@ static void recv_1_send_0(abts_case *tc, void *data) static void clear_all_signalled(abts_case *tc, void *data) { - apr_status_t rv; + fspr_status_t rv; int srv = SMALL_NUM_SOCKETS; recv_msg(s, 0, p, tc); recv_msg(s, 2, p, tc); - rv = apr_poll(pollarray, SMALL_NUM_SOCKETS, &srv, 2 * APR_USEC_PER_SEC); + rv = fspr_poll(pollarray, SMALL_NUM_SOCKETS, &srv, 2 * APR_USEC_PER_SEC); ABTS_INT_EQUAL(tc, 1, APR_STATUS_IS_TIMEUP(rv)); check_sockets(pollarray, s, 0, 0, tc); check_sockets(pollarray, s, 1, 0, tc); @@ -245,13 +245,13 @@ static void clear_all_signalled(abts_case *tc, void *data) static void send_large_pollarray(abts_case *tc, void *data) { - apr_status_t rv; + fspr_status_t rv; int lrv = LARGE_NUM_SOCKETS; int i; send_msg(s, sa, LARGE_NUM_SOCKETS - 1, tc); - rv = apr_poll(pollarray_large, LARGE_NUM_SOCKETS, &lrv, + rv = fspr_poll(pollarray_large, LARGE_NUM_SOCKETS, &lrv, 2 * APR_USEC_PER_SEC); ABTS_INT_EQUAL(tc, APR_SUCCESS, rv); @@ -267,13 +267,13 @@ static void send_large_pollarray(abts_case *tc, void *data) static void recv_large_pollarray(abts_case *tc, void *data) { - apr_status_t rv; + fspr_status_t rv; int lrv = LARGE_NUM_SOCKETS; int i; recv_msg(s, LARGE_NUM_SOCKETS - 1, p, tc); - rv = apr_poll(pollarray_large, LARGE_NUM_SOCKETS, &lrv, + rv = fspr_poll(pollarray_large, LARGE_NUM_SOCKETS, &lrv, 2 * APR_USEC_PER_SEC); ABTS_INT_EQUAL(tc, 1, APR_STATUS_IS_TIMEUP(rv)); @@ -285,29 +285,29 @@ static void recv_large_pollarray(abts_case *tc, void *data) static void setup_pollset(abts_case *tc, void *data) { - apr_status_t rv; - rv = apr_pollset_create(&pollset, LARGE_NUM_SOCKETS, p, 0); + fspr_status_t rv; + rv = fspr_pollset_create(&pollset, LARGE_NUM_SOCKETS, p, 0); ABTS_INT_EQUAL(tc, APR_SUCCESS, rv); } static void multi_event_pollset(abts_case *tc, void *data) { - apr_status_t rv; - apr_pollfd_t socket_pollfd; + fspr_status_t rv; + fspr_pollfd_t socket_pollfd; int lrv; - const apr_pollfd_t *descs = NULL; + const fspr_pollfd_t *descs = NULL; ABTS_PTR_NOTNULL(tc, s[0]); socket_pollfd.desc_type = APR_POLL_SOCKET; socket_pollfd.reqevents = APR_POLLIN | APR_POLLOUT; socket_pollfd.desc.s = s[0]; socket_pollfd.client_data = s[0]; - rv = apr_pollset_add(pollset, &socket_pollfd); + rv = fspr_pollset_add(pollset, &socket_pollfd); ABTS_INT_EQUAL(tc, APR_SUCCESS, rv); send_msg(s, sa, 0, tc); - rv = apr_pollset_poll(pollset, 0, &lrv, &descs); + rv = fspr_pollset_poll(pollset, 0, &lrv, &descs); ABTS_INT_EQUAL(tc, 0, APR_STATUS_IS_TIMEUP(rv)); if (lrv == 1) { ABTS_PTR_EQUAL(tc, s[0], descs[0].desc.s); @@ -331,24 +331,24 @@ static void multi_event_pollset(abts_case *tc, void *data) recv_msg(s, 0, p, tc); - rv = apr_pollset_poll(pollset, 0, &lrv, &descs); + rv = fspr_pollset_poll(pollset, 0, &lrv, &descs); ABTS_INT_EQUAL(tc, 0, APR_STATUS_IS_TIMEUP(rv)); ABTS_INT_EQUAL(tc, 1, lrv); ABTS_PTR_EQUAL(tc, s[0], descs[0].desc.s); ABTS_INT_EQUAL(tc, APR_POLLOUT, descs[0].rtnevents); ABTS_PTR_EQUAL(tc, s[0], descs[0].client_data); - rv = apr_pollset_remove(pollset, &socket_pollfd); + rv = fspr_pollset_remove(pollset, &socket_pollfd); ABTS_INT_EQUAL(tc, APR_SUCCESS, rv); } static void add_sockets_pollset(abts_case *tc, void *data) { - apr_status_t rv; + fspr_status_t rv; int i; for (i = 0; i < LARGE_NUM_SOCKETS;i++){ - apr_pollfd_t socket_pollfd; + fspr_pollfd_t socket_pollfd; ABTS_PTR_NOTNULL(tc, s[i]); @@ -356,18 +356,18 @@ static void add_sockets_pollset(abts_case *tc, void *data) socket_pollfd.reqevents = APR_POLLIN; socket_pollfd.desc.s = s[i]; socket_pollfd.client_data = s[i]; - rv = apr_pollset_add(pollset, &socket_pollfd); + rv = fspr_pollset_add(pollset, &socket_pollfd); ABTS_INT_EQUAL(tc, APR_SUCCESS, rv); } } static void nomessage_pollset(abts_case *tc, void *data) { - apr_status_t rv; + fspr_status_t rv; int lrv; - const apr_pollfd_t *descs = NULL; + const fspr_pollfd_t *descs = NULL; - rv = apr_pollset_poll(pollset, 0, &lrv, &descs); + rv = fspr_pollset_poll(pollset, 0, &lrv, &descs); ABTS_INT_EQUAL(tc, 1, APR_STATUS_IS_TIMEUP(rv)); ABTS_INT_EQUAL(tc, 0, lrv); ABTS_PTR_EQUAL(tc, NULL, descs); @@ -375,12 +375,12 @@ static void nomessage_pollset(abts_case *tc, void *data) static void send0_pollset(abts_case *tc, void *data) { - apr_status_t rv; - const apr_pollfd_t *descs = NULL; + fspr_status_t rv; + const fspr_pollfd_t *descs = NULL; int num; send_msg(s, sa, 0, tc); - rv = apr_pollset_poll(pollset, 0, &num, &descs); + rv = fspr_pollset_poll(pollset, 0, &num, &descs); ABTS_INT_EQUAL(tc, APR_SUCCESS, rv); ABTS_INT_EQUAL(tc, 1, num); ABTS_PTR_NOTNULL(tc, descs); @@ -391,12 +391,12 @@ static void send0_pollset(abts_case *tc, void *data) static void recv0_pollset(abts_case *tc, void *data) { - apr_status_t rv; + fspr_status_t rv; int lrv; - const apr_pollfd_t *descs = NULL; + const fspr_pollfd_t *descs = NULL; recv_msg(s, 0, p, tc); - rv = apr_pollset_poll(pollset, 0, &lrv, &descs); + rv = fspr_pollset_poll(pollset, 0, &lrv, &descs); ABTS_INT_EQUAL(tc, 1, APR_STATUS_IS_TIMEUP(rv)); ABTS_INT_EQUAL(tc, 0, lrv); ABTS_PTR_EQUAL(tc, NULL, descs); @@ -404,13 +404,13 @@ static void recv0_pollset(abts_case *tc, void *data) static void send_middle_pollset(abts_case *tc, void *data) { - apr_status_t rv; - const apr_pollfd_t *descs = NULL; + fspr_status_t rv; + const fspr_pollfd_t *descs = NULL; int num; send_msg(s, sa, 2, tc); send_msg(s, sa, 5, tc); - rv = apr_pollset_poll(pollset, 0, &num, &descs); + rv = fspr_pollset_poll(pollset, 0, &num, &descs); ABTS_INT_EQUAL(tc, APR_SUCCESS, rv); ABTS_INT_EQUAL(tc, 2, num); ABTS_PTR_NOTNULL(tc, descs); @@ -422,14 +422,14 @@ static void send_middle_pollset(abts_case *tc, void *data) static void clear_middle_pollset(abts_case *tc, void *data) { - apr_status_t rv; + fspr_status_t rv; int lrv; - const apr_pollfd_t *descs = NULL; + const fspr_pollfd_t *descs = NULL; recv_msg(s, 2, p, tc); recv_msg(s, 5, p, tc); - rv = apr_pollset_poll(pollset, 0, &lrv, &descs); + rv = fspr_pollset_poll(pollset, 0, &lrv, &descs); ABTS_INT_EQUAL(tc, 1, APR_STATUS_IS_TIMEUP(rv)); ABTS_INT_EQUAL(tc, 0, lrv); ABTS_PTR_EQUAL(tc, NULL, descs); @@ -437,12 +437,12 @@ static void clear_middle_pollset(abts_case *tc, void *data) static void send_last_pollset(abts_case *tc, void *data) { - apr_status_t rv; - const apr_pollfd_t *descs = NULL; + fspr_status_t rv; + const fspr_pollfd_t *descs = NULL; int num; send_msg(s, sa, LARGE_NUM_SOCKETS - 1, tc); - rv = apr_pollset_poll(pollset, 0, &num, &descs); + rv = fspr_pollset_poll(pollset, 0, &num, &descs); ABTS_INT_EQUAL(tc, APR_SUCCESS, rv); ABTS_INT_EQUAL(tc, 1, num); ABTS_PTR_NOTNULL(tc, descs); @@ -453,13 +453,13 @@ static void send_last_pollset(abts_case *tc, void *data) static void clear_last_pollset(abts_case *tc, void *data) { - apr_status_t rv; + fspr_status_t rv; int lrv; - const apr_pollfd_t *descs = NULL; + const fspr_pollfd_t *descs = NULL; recv_msg(s, LARGE_NUM_SOCKETS - 1, p, tc); - rv = apr_pollset_poll(pollset, 0, &lrv, &descs); + rv = fspr_pollset_poll(pollset, 0, &lrv, &descs); ABTS_INT_EQUAL(tc, 1, APR_STATUS_IS_TIMEUP(rv)); ABTS_INT_EQUAL(tc, 0, lrv); ABTS_PTR_EQUAL(tc, NULL, descs); @@ -467,24 +467,24 @@ static void clear_last_pollset(abts_case *tc, void *data) static void close_all_sockets(abts_case *tc, void *data) { - apr_status_t rv; + fspr_status_t rv; int i; for (i = 0; i < LARGE_NUM_SOCKETS; i++){ - rv = apr_socket_close(s[i]); + rv = fspr_socket_close(s[i]); ABTS_INT_EQUAL(tc, APR_SUCCESS, rv); } } static void pollset_remove(abts_case *tc, void *data) { - apr_status_t rv; - apr_pollset_t *pollset; - const apr_pollfd_t *hot_files; - apr_pollfd_t pfd; - apr_int32_t num; + fspr_status_t rv; + fspr_pollset_t *pollset; + const fspr_pollfd_t *hot_files; + fspr_pollfd_t pfd; + fspr_int32_t num; - rv = apr_pollset_create(&pollset, 5, p, 0); + rv = fspr_pollset_create(&pollset, 5, p, 0); ABTS_INT_EQUAL(tc, APR_SUCCESS, rv); pfd.p = p; @@ -493,36 +493,36 @@ static void pollset_remove(abts_case *tc, void *data) pfd.desc.s = s[0]; pfd.client_data = (void *)1; - rv = apr_pollset_add(pollset, &pfd); + rv = fspr_pollset_add(pollset, &pfd); ABTS_INT_EQUAL(tc, APR_SUCCESS, rv); pfd.desc.s = s[1]; pfd.client_data = (void *)2; - rv = apr_pollset_add(pollset, &pfd); + rv = fspr_pollset_add(pollset, &pfd); ABTS_INT_EQUAL(tc, APR_SUCCESS, rv); pfd.desc.s = s[2]; pfd.client_data = (void *)3; - rv = apr_pollset_add(pollset, &pfd); + rv = fspr_pollset_add(pollset, &pfd); ABTS_INT_EQUAL(tc, APR_SUCCESS, rv); pfd.desc.s = s[3]; pfd.client_data = (void *)4; - rv = apr_pollset_add(pollset, &pfd); + rv = fspr_pollset_add(pollset, &pfd); ABTS_INT_EQUAL(tc, APR_SUCCESS, rv); - rv = apr_pollset_poll(pollset, 1000, &num, &hot_files); + rv = fspr_pollset_poll(pollset, 1000, &num, &hot_files); ABTS_INT_EQUAL(tc, APR_SUCCESS, rv); ABTS_INT_EQUAL(tc, 4, num); /* now remove the pollset element referring to desc s[1] */ pfd.desc.s = s[1]; pfd.client_data = (void *)999; /* not used on this call */ - rv = apr_pollset_remove(pollset, &pfd); + rv = fspr_pollset_remove(pollset, &pfd); ABTS_INT_EQUAL(tc, APR_SUCCESS, rv); /* this time only three should match */ - rv = apr_pollset_poll(pollset, 1000, &num, &hot_files); + rv = fspr_pollset_poll(pollset, 1000, &num, &hot_files); ABTS_INT_EQUAL(tc, APR_SUCCESS, rv); ABTS_INT_EQUAL(tc, 3, num); ABTS_PTR_EQUAL(tc, (void *)1, hot_files[0].client_data); @@ -535,11 +535,11 @@ static void pollset_remove(abts_case *tc, void *data) /* now remove the pollset elements referring to desc s[2] */ pfd.desc.s = s[2]; pfd.client_data = (void *)999; /* not used on this call */ - rv = apr_pollset_remove(pollset, &pfd); + rv = fspr_pollset_remove(pollset, &pfd); ABTS_INT_EQUAL(tc, APR_SUCCESS, rv); /* this time only two should match */ - rv = apr_pollset_poll(pollset, 1000, &num, &hot_files); + rv = fspr_pollset_poll(pollset, 1000, &num, &hot_files); ABTS_INT_EQUAL(tc, APR_SUCCESS, rv); ABTS_INT_EQUAL(tc, 2, num); ABTS_ASSERT(tc, "Incorrect socket in result set", diff --git a/libs/apr/test/testpools.c b/libs/apr/test/testpools.c index cb45552e772..9354dd44f82 100644 --- a/libs/apr/test/testpools.c +++ b/libs/apr/test/testpools.c @@ -15,10 +15,10 @@ */ -#include "apr_general.h" -#include "apr_pools.h" -#include "apr_errno.h" -#include "apr_file_io.h" +#include "fspr_general.h" +#include "fspr_pools.h" +#include "fspr_errno.h" +#include "fspr_file_io.h" #include #include #include @@ -29,15 +29,15 @@ #define ALLOC_BYTES 1024 -static apr_pool_t *pmain = NULL; -static apr_pool_t *pchild = NULL; +static fspr_pool_t *pmain = NULL; +static fspr_pool_t *pchild = NULL; static void alloc_bytes(abts_case *tc, void *data) { int i; char *alloc; - alloc = apr_palloc(pmain, ALLOC_BYTES); + alloc = fspr_palloc(pmain, ALLOC_BYTES); ABTS_PTR_NOTNULL(tc, alloc); for (i=0;i #include @@ -32,47 +32,47 @@ #define CHILDREN 6 #define MAX_COUNTER (MAX_ITER * CHILDREN) -static apr_proc_mutex_t *proc_lock; +static fspr_proc_mutex_t *proc_lock; static volatile int *x; /* a slower more racy way to implement (*x)++ */ static int increment(int n) { - apr_sleep(1); + fspr_sleep(1); return n+1; } -static void make_child(abts_case *tc, apr_proc_t **proc, apr_pool_t *p) +static void make_child(abts_case *tc, fspr_proc_t **proc, fspr_pool_t *p) { - apr_status_t rv; + fspr_status_t rv; - *proc = apr_pcalloc(p, sizeof(**proc)); + *proc = fspr_pcalloc(p, sizeof(**proc)); /* slight delay to allow things to settle */ - apr_sleep (1); + fspr_sleep (1); - rv = apr_proc_fork(*proc, p); + rv = fspr_proc_fork(*proc, p); if (rv == APR_INCHILD) { int i = 0; - /* The parent process has setup all processes to call apr_terminate + /* The parent process has setup all processes to call fspr_terminate * at exit. But, that means that all processes must also call - * apr_initialize at startup. You cannot have an unequal number - * of apr_terminate and apr_initialize calls. If you do, bad things + * fspr_initialize at startup. You cannot have an unequal number + * of fspr_terminate and fspr_initialize calls. If you do, bad things * will happen. In this case, the bad thing is that if the mutex * is a semaphore, it will be destroyed before all of the processes * die. That means that the test will most likely fail. */ - apr_initialize(); + fspr_initialize(); - if (apr_proc_mutex_child_init(&proc_lock, NULL, p)) + if (fspr_proc_mutex_child_init(&proc_lock, NULL, p)) exit(1); do { - if (apr_proc_mutex_lock(proc_lock)) + if (fspr_proc_mutex_lock(proc_lock)) exit(1); i++; *x = increment(*x); - if (apr_proc_mutex_unlock(proc_lock)) + if (fspr_proc_mutex_unlock(proc_lock)) exit(1); } while (i < MAX_ITER); exit(0); @@ -82,25 +82,25 @@ static void make_child(abts_case *tc, apr_proc_t **proc, apr_pool_t *p) } /* Wait for a child process and check it terminated with success. */ -static void await_child(abts_case *tc, apr_proc_t *proc) +static void await_child(abts_case *tc, fspr_proc_t *proc) { int code; - apr_exit_why_e why; - apr_status_t rv; + fspr_exit_why_e why; + fspr_status_t rv; - rv = apr_proc_wait(proc, &code, &why, APR_WAIT); + rv = fspr_proc_wait(proc, &code, &why, APR_WAIT); ABTS_ASSERT(tc, "child did not terminate with success", rv == APR_CHILD_DONE && why == APR_PROC_EXIT && code == 0); } static void test_exclusive(abts_case *tc, const char *lockname, - apr_lockmech_e mech) + fspr_lockmech_e mech) { - apr_proc_t *child[CHILDREN]; - apr_status_t rv; + fspr_proc_t *child[CHILDREN]; + fspr_status_t rv; int n; - rv = apr_proc_mutex_create(&proc_lock, lockname, mech, p); + rv = fspr_proc_mutex_create(&proc_lock, lockname, mech, p); APR_ASSERT_SUCCESS(tc, "create the mutex", rv); if (rv != APR_SUCCESS) return; @@ -118,25 +118,25 @@ static void test_exclusive(abts_case *tc, const char *lockname, static void proc_mutex(abts_case *tc, void *data) { #if APR_HAS_FORK - apr_status_t rv; + fspr_status_t rv; const char *shmname = "tpm.shm"; - apr_shm_t *shm; - apr_lockmech_e *mech = data; + fspr_shm_t *shm; + fspr_lockmech_e *mech = data; /* Use anonymous shm if available. */ - rv = apr_shm_create(&shm, sizeof(int), NULL, p); + rv = fspr_shm_create(&shm, sizeof(int), NULL, p); if (rv == APR_ENOTIMPL) { - apr_file_remove(shmname, p); - rv = apr_shm_create(&shm, sizeof(int), shmname, p); + fspr_file_remove(shmname, p); + rv = fspr_shm_create(&shm, sizeof(int), shmname, p); } APR_ASSERT_SUCCESS(tc, "create shm segment", rv); if (rv != APR_SUCCESS) return; - x = apr_shm_baseaddr_get(shm); + x = fspr_shm_baseaddr_get(shm); test_exclusive(tc, NULL, *mech); - rv = apr_shm_destroy(shm); + rv = fspr_shm_destroy(shm); APR_ASSERT_SUCCESS(tc, "Error destroying shared memory block", rv); #else ABTS_NOT_IMPL(tc, "APR lacks fork() support"); @@ -146,7 +146,7 @@ static void proc_mutex(abts_case *tc, void *data) abts_suite *testprocmutex(abts_suite *suite) { - apr_lockmech_e mech = APR_LOCK_DEFAULT; + fspr_lockmech_e mech = APR_LOCK_DEFAULT; suite = ADD_SUITE(suite) abts_run_test(suite, proc_mutex, &mech); diff --git a/libs/apr/test/testrand.c b/libs/apr/test/testrand.c index befed087450..346d8fb3a93 100644 --- a/libs/apr/test/testrand.c +++ b/libs/apr/test/testrand.c @@ -14,7 +14,7 @@ * limitations under the License. */ -#include "apr_general.h" +#include "fspr_general.h" #include #include #include @@ -23,15 +23,15 @@ static void rand_exists(abts_case *tc, void *data) { #if !APR_HAS_RANDOM - ABTS_NOT_IMPL(tc, "apr_generate_random_bytes"); + ABTS_NOT_IMPL(tc, "fspr_generate_random_bytes"); #else unsigned char c[42]; /* There must be a better way to test random-ness, but I don't know * what it is right now. */ - APR_ASSERT_SUCCESS(tc, "apr_generate_random_bytes failed", - apr_generate_random_bytes(c, sizeof c)); + APR_ASSERT_SUCCESS(tc, "fspr_generate_random_bytes failed", + fspr_generate_random_bytes(c, sizeof c)); #endif } diff --git a/libs/apr/test/testrand2.c b/libs/apr/test/testrand2.c index f9f8286400d..e233d18b6b6 100644 --- a/libs/apr/test/testrand2.c +++ b/libs/apr/test/testrand2.c @@ -14,9 +14,9 @@ * limitations under the License. */ -#include "apr_general.h" -#include "apr_random.h" -#include "apr_thread_proc.h" +#include "fspr_general.h" +#include "fspr_random.h" +#include "fspr_thread_proc.h" #include #include #include @@ -43,15 +43,15 @@ static void hexdump(const unsigned char *b,int n) printf("\n"); } -static apr_random_t *r; +static fspr_random_t *r; -typedef apr_status_t APR_THREAD_FUNC rnd_fn(apr_random_t *r,void *b,apr_size_t n); +typedef fspr_status_t APR_THREAD_FUNC rnd_fn(fspr_random_t *r,void *b,fspr_size_t n); -static void rand_run_kat(abts_case *tc,rnd_fn *f,apr_random_t *r, +static void rand_run_kat(abts_case *tc,rnd_fn *f,fspr_random_t *r, const unsigned char expected[128]) { unsigned char c[128]; - apr_status_t rv; + fspr_status_t rv; rv=f(r,c,128); ABTS_INT_EQUAL(tc,0,rv); @@ -65,11 +65,11 @@ static void rand_run_kat(abts_case *tc,rnd_fn *f,apr_random_t *r, } } -static int rand_check_kat(rnd_fn *f,apr_random_t *r, +static int rand_check_kat(rnd_fn *f,fspr_random_t *r, const unsigned char expected[128]) { unsigned char c[128]; - apr_status_t rv; + fspr_status_t rv; rv=f(r,c,128); if(rv) @@ -79,18 +79,18 @@ static int rand_check_kat(rnd_fn *f,apr_random_t *r, return 0; } -static void rand_add_zeroes(apr_random_t *r) +static void rand_add_zeroes(fspr_random_t *r) { static unsigned char c[2048]; - apr_random_add_entropy(r,c,sizeof c); + fspr_random_add_entropy(r,c,sizeof c); } -static void rand_run_seed_short(abts_case *tc,rnd_fn *f,apr_random_t *r, +static void rand_run_seed_short(abts_case *tc,rnd_fn *f,fspr_random_t *r, int count) { int i; - apr_status_t rv; + fspr_status_t rv; char c[1]; for(i=0 ; i < count ; ++i) @@ -101,8 +101,8 @@ static void rand_run_seed_short(abts_case *tc,rnd_fn *f,apr_random_t *r, static void rand_seed_short(abts_case *tc, void *data) { - r=apr_random_standard_new(p); - rand_run_seed_short(tc,apr_random_insecure_bytes,r,32); + r=fspr_random_standard_new(p); + rand_run_seed_short(tc,fspr_random_insecure_bytes,r,32); } static void rand_kat(abts_case *tc, void *data) @@ -126,12 +126,12 @@ static void rand_kat(abts_case *tc, void *data) 0x87,0xec,0x2e,0xb1,0x2d,0x6a,0xbd,0x46 }; rand_add_zeroes(r); - rand_run_kat(tc,apr_random_insecure_bytes,r,expected); + rand_run_kat(tc,fspr_random_insecure_bytes,r,expected); } static void rand_seed_short2(abts_case *tc, void *data) { - rand_run_seed_short(tc,apr_random_secure_bytes,r,320); + rand_run_seed_short(tc,fspr_random_secure_bytes,r,320); } static void rand_kat2(abts_case *tc, void *data) @@ -155,13 +155,13 @@ static void rand_kat2(abts_case *tc, void *data) 0xed,0xd2,0xde,0xce,0x18,0x70,0x57,0x12 }; rand_add_zeroes(r); - rand_run_kat(tc,apr_random_secure_bytes,r,expected); + rand_run_kat(tc,fspr_random_secure_bytes,r,expected); } static void rand_barrier(abts_case *tc, void *data) { - apr_random_barrier(r); - rand_run_seed_short(tc,apr_random_secure_bytes,r,320); + fspr_random_barrier(r); + rand_run_seed_short(tc,fspr_random_secure_bytes,r,320); } static void rand_kat3(abts_case *tc, void *data) @@ -184,7 +184,7 @@ static void rand_kat3(abts_case *tc, void *data) 0x04,0xbf,0x32,0xd6,0xdc,0xb7,0x31,0x01, 0x29,0x51,0x51,0xb3,0x19,0x6e,0xe4,0xf8 }; - rand_run_kat(tc,apr_random_insecure_bytes,r,expected); + rand_run_kat(tc,fspr_random_insecure_bytes,r,expected); } static void rand_kat4(abts_case *tc, void *data) @@ -208,14 +208,14 @@ static void rand_kat4(abts_case *tc, void *data) 0x17,0x35,0x5f,0x35,0x8d,0x55,0x0c,0x07 }; rand_add_zeroes(r); - rand_run_kat(tc,apr_random_secure_bytes,r,expected); + rand_run_kat(tc,fspr_random_secure_bytes,r,expected); } #if APR_HAS_FORK static void rand_fork(abts_case *tc, void *data) { - apr_proc_t proc; - apr_status_t rv; + fspr_proc_t proc; + fspr_status_t rv; unsigned char expected[128]= { 0xac,0x93,0xd2,0x5c,0xc7,0xf5,0x8d,0xc2, 0xd8,0x8d,0xb6,0x7a,0x94,0xe1,0x83,0x4c, @@ -234,22 +234,22 @@ static void rand_fork(abts_case *tc, void *data) 0x32,0x8a,0x54,0x01,0xd0,0xaf,0x3f,0x13, 0xc1,0x7f,0x10,0x2e,0x08,0x1c,0x28,0x4b, }; - rv=apr_proc_fork(&proc,p); + rv=fspr_proc_fork(&proc,p); if(rv == APR_INCHILD) { int n; - n=rand_check_kat(apr_random_secure_bytes,r,expected); + n=rand_check_kat(fspr_random_secure_bytes,r,expected); exit(n); } else if(rv == APR_INPARENT) { int exitcode; - apr_exit_why_e why; + fspr_exit_why_e why; - rand_run_kat(tc,apr_random_secure_bytes,r,expected); - apr_proc_wait(&proc,&exitcode,&why,APR_WAIT); + rand_run_kat(tc,fspr_random_secure_bytes,r,expected); + fspr_proc_wait(&proc,&exitcode,&why,APR_WAIT); if(why != APR_PROC_EXIT) { ABTS_FAIL(tc,"Child terminated abnormally"); diff --git a/libs/apr/test/testshm.c b/libs/apr/test/testshm.c index 3691dd52ce1..7839156583d 100644 --- a/libs/apr/test/testshm.c +++ b/libs/apr/test/testshm.c @@ -15,15 +15,15 @@ */ #include "testutil.h" -#include "apr_shm.h" -#include "apr_errno.h" -#include "apr_general.h" -#include "apr_lib.h" -#include "apr_strings.h" -#include "apr_thread_proc.h" -#include "apr_time.h" +#include "fspr_shm.h" +#include "fspr_errno.h" +#include "fspr_general.h" +#include "fspr_lib.h" +#include "fspr_strings.h" +#include "fspr_thread_proc.h" +#include "fspr_time.h" #include "testshm.h" -#include "apr.h" +#include "fspr.h" #if APR_HAVE_STDLIB_H #include @@ -35,9 +35,9 @@ static int msgwait(int sleep_sec, int first_box, int last_box) { int i; int recvd = 0; - apr_time_t start = apr_time_now(); - apr_interval_time_t sleep_duration = apr_time_from_sec(sleep_sec); - while (apr_time_now() - start < sleep_duration) { + fspr_time_t start = fspr_time_now(); + fspr_interval_time_t sleep_duration = fspr_time_from_sec(sleep_sec); + while (fspr_time_now() - start < sleep_duration) { for (i = first_box; i < last_box; i++) { if (boxes[i].msgavail && !strcmp(boxes[i].msg, MSG)) { recvd++; @@ -48,84 +48,84 @@ static int msgwait(int sleep_sec, int first_box, int last_box) memset(boxes[i].msg, 0, 1024); } } - apr_sleep(apr_time_make(0, 10000)); /* 10ms */ + fspr_sleep(fspr_time_make(0, 10000)); /* 10ms */ } return recvd; } static void msgput(int boxnum, char *msg) { - apr_cpystrn(boxes[boxnum].msg, msg, strlen(msg) + 1); + fspr_cpystrn(boxes[boxnum].msg, msg, strlen(msg) + 1); boxes[boxnum].msgavail = 1; } static void test_anon_create(abts_case *tc, void *data) { - apr_status_t rv; - apr_shm_t *shm = NULL; + fspr_status_t rv; + fspr_shm_t *shm = NULL; - rv = apr_shm_create(&shm, SHARED_SIZE, NULL, p); + rv = fspr_shm_create(&shm, SHARED_SIZE, NULL, p); APR_ASSERT_SUCCESS(tc, "Error allocating shared memory block", rv); ABTS_PTR_NOTNULL(tc, shm); - rv = apr_shm_destroy(shm); + rv = fspr_shm_destroy(shm); APR_ASSERT_SUCCESS(tc, "Error destroying shared memory block", rv); } static void test_check_size(abts_case *tc, void *data) { - apr_status_t rv; - apr_shm_t *shm = NULL; - apr_size_t retsize; + fspr_status_t rv; + fspr_shm_t *shm = NULL; + fspr_size_t retsize; - rv = apr_shm_create(&shm, SHARED_SIZE, NULL, p); + rv = fspr_shm_create(&shm, SHARED_SIZE, NULL, p); APR_ASSERT_SUCCESS(tc, "Error allocating shared memory block", rv); ABTS_PTR_NOTNULL(tc, shm); - retsize = apr_shm_size_get(shm); + retsize = fspr_shm_size_get(shm); ABTS_INT_EQUAL(tc, SHARED_SIZE, retsize); - rv = apr_shm_destroy(shm); + rv = fspr_shm_destroy(shm); APR_ASSERT_SUCCESS(tc, "Error destroying shared memory block", rv); } static void test_shm_allocate(abts_case *tc, void *data) { - apr_status_t rv; - apr_shm_t *shm = NULL; + fspr_status_t rv; + fspr_shm_t *shm = NULL; - rv = apr_shm_create(&shm, SHARED_SIZE, NULL, p); + rv = fspr_shm_create(&shm, SHARED_SIZE, NULL, p); APR_ASSERT_SUCCESS(tc, "Error allocating shared memory block", rv); ABTS_PTR_NOTNULL(tc, shm); - boxes = apr_shm_baseaddr_get(shm); + boxes = fspr_shm_baseaddr_get(shm); ABTS_PTR_NOTNULL(tc, boxes); - rv = apr_shm_destroy(shm); + rv = fspr_shm_destroy(shm); APR_ASSERT_SUCCESS(tc, "Error destroying shared memory block", rv); } #if APR_HAS_FORK static void test_anon(abts_case *tc, void *data) { - apr_proc_t proc; - apr_status_t rv; - apr_shm_t *shm; - apr_size_t retsize; + fspr_proc_t proc; + fspr_status_t rv; + fspr_shm_t *shm; + fspr_size_t retsize; int cnt, i; int recvd; - rv = apr_shm_create(&shm, SHARED_SIZE, NULL, p); + rv = fspr_shm_create(&shm, SHARED_SIZE, NULL, p); APR_ASSERT_SUCCESS(tc, "Error allocating shared memory block", rv); ABTS_PTR_NOTNULL(tc, shm); - retsize = apr_shm_size_get(shm); + retsize = fspr_shm_size_get(shm); ABTS_INT_EQUAL(tc, SHARED_SIZE, retsize); - boxes = apr_shm_baseaddr_get(shm); + boxes = fspr_shm_baseaddr_get(shm); ABTS_PTR_NOTNULL(tc, boxes); - rv = apr_proc_fork(&proc, p); + rv = fspr_proc_fork(&proc, p); if (rv == APR_INCHILD) { /* child */ int num = msgwait(5, 0, N_BOXES); /* exit with the number of messages received so that the parent @@ -141,69 +141,69 @@ static void test_anon(abts_case *tc, void *data) i += N_BOXES; /* start over at the top */ } msgput(i, MSG); - apr_sleep(apr_time_make(0, 10000)); + fspr_sleep(fspr_time_make(0, 10000)); } } else { - ABTS_FAIL(tc, "apr_proc_fork failed"); + ABTS_FAIL(tc, "fspr_proc_fork failed"); } /* wait for the child */ - rv = apr_proc_wait(&proc, &recvd, NULL, APR_WAIT); + rv = fspr_proc_wait(&proc, &recvd, NULL, APR_WAIT); ABTS_INT_EQUAL(tc, N_MESSAGES, recvd); - rv = apr_shm_destroy(shm); + rv = fspr_shm_destroy(shm); APR_ASSERT_SUCCESS(tc, "Error destroying shared memory block", rv); } #endif static void test_named(abts_case *tc, void *data) { - apr_status_t rv; - apr_shm_t *shm = NULL; - apr_size_t retsize; - apr_proc_t pidproducer, pidconsumer; - apr_procattr_t *attr1 = NULL, *attr2 = NULL; + fspr_status_t rv; + fspr_shm_t *shm = NULL; + fspr_size_t retsize; + fspr_proc_t pidproducer, pidconsumer; + fspr_procattr_t *attr1 = NULL, *attr2 = NULL; int sent, received; - apr_exit_why_e why; + fspr_exit_why_e why; const char *args[4]; - apr_shm_remove(SHARED_FILENAME, p); + fspr_shm_remove(SHARED_FILENAME, p); - rv = apr_shm_create(&shm, SHARED_SIZE, SHARED_FILENAME, p); + rv = fspr_shm_create(&shm, SHARED_SIZE, SHARED_FILENAME, p); APR_ASSERT_SUCCESS(tc, "Error allocating shared memory block", rv); if (rv != APR_SUCCESS) { return; } ABTS_PTR_NOTNULL(tc, shm); - retsize = apr_shm_size_get(shm); + retsize = fspr_shm_size_get(shm); ABTS_INT_EQUAL(tc, SHARED_SIZE, retsize); - boxes = apr_shm_baseaddr_get(shm); + boxes = fspr_shm_baseaddr_get(shm); ABTS_PTR_NOTNULL(tc, boxes); - rv = apr_procattr_create(&attr1, p); + rv = fspr_procattr_create(&attr1, p); ABTS_PTR_NOTNULL(tc, attr1); APR_ASSERT_SUCCESS(tc, "Couldn't create attr1", rv); - args[0] = apr_pstrdup(p, "testshmproducer" EXTENSION); + args[0] = fspr_pstrdup(p, "testshmproducer" EXTENSION); args[1] = NULL; - rv = apr_proc_create(&pidproducer, "./testshmproducer" EXTENSION, args, + rv = fspr_proc_create(&pidproducer, "./testshmproducer" EXTENSION, args, NULL, attr1, p); APR_ASSERT_SUCCESS(tc, "Couldn't launch producer", rv); - rv = apr_procattr_create(&attr2, p); + rv = fspr_procattr_create(&attr2, p); ABTS_PTR_NOTNULL(tc, attr2); APR_ASSERT_SUCCESS(tc, "Couldn't create attr2", rv); - args[0] = apr_pstrdup(p, "testshmconsumer" EXTENSION); - rv = apr_proc_create(&pidconsumer, "./testshmconsumer" EXTENSION, args, + args[0] = fspr_pstrdup(p, "testshmconsumer" EXTENSION); + rv = fspr_proc_create(&pidconsumer, "./testshmconsumer" EXTENSION, args, NULL, attr2, p); APR_ASSERT_SUCCESS(tc, "Couldn't launch consumer", rv); - rv = apr_proc_wait(&pidconsumer, &received, &why, APR_WAIT); + rv = fspr_proc_wait(&pidconsumer, &received, &why, APR_WAIT); ABTS_INT_EQUAL(tc, APR_CHILD_DONE, rv); ABTS_INT_EQUAL(tc, APR_PROC_EXIT, why); - rv = apr_proc_wait(&pidproducer, &sent, &why, APR_WAIT); + rv = fspr_proc_wait(&pidproducer, &sent, &why, APR_WAIT); ABTS_INT_EQUAL(tc, APR_CHILD_DONE, rv); ABTS_INT_EQUAL(tc, APR_PROC_EXIT, why); @@ -212,7 +212,7 @@ static void test_named(abts_case *tc, void *data) * without having to cleanup manually. */ APR_ASSERT_SUCCESS(tc, "Error destroying shared memory", - apr_shm_destroy(shm)); + fspr_shm_destroy(shm)); ABTS_INT_EQUAL(tc, sent, received); @@ -220,32 +220,32 @@ static void test_named(abts_case *tc, void *data) static void test_named_remove(abts_case *tc, void *data) { - apr_status_t rv; - apr_shm_t *shm; + fspr_status_t rv; + fspr_shm_t *shm; - apr_shm_remove(SHARED_FILENAME, p); + fspr_shm_remove(SHARED_FILENAME, p); - rv = apr_shm_create(&shm, SHARED_SIZE, SHARED_FILENAME, p); + rv = fspr_shm_create(&shm, SHARED_SIZE, SHARED_FILENAME, p); APR_ASSERT_SUCCESS(tc, "Error allocating shared memory block", rv); if (rv != APR_SUCCESS) { return; } ABTS_PTR_NOTNULL(tc, shm); - rv = apr_shm_remove(SHARED_FILENAME, p); + rv = fspr_shm_remove(SHARED_FILENAME, p); APR_ASSERT_SUCCESS(tc, "Error removing shared memory block", rv); if (rv != APR_SUCCESS) { return ; } - rv = apr_shm_create(&shm, SHARED_SIZE, SHARED_FILENAME, p); + rv = fspr_shm_create(&shm, SHARED_SIZE, SHARED_FILENAME, p); APR_ASSERT_SUCCESS(tc, "Error allocating shared memory block", rv); if (rv != APR_SUCCESS) { return; } ABTS_PTR_NOTNULL(tc, shm); - rv = apr_shm_destroy(shm); + rv = fspr_shm_destroy(shm); APR_ASSERT_SUCCESS(tc, "Error destroying shared memory block", rv); } diff --git a/libs/apr/test/testshm.h b/libs/apr/test/testshm.h index 5b24a9d4271..efcfc062de1 100644 --- a/libs/apr/test/testshm.h +++ b/libs/apr/test/testshm.h @@ -24,7 +24,7 @@ typedef struct mbox { mbox *boxes; #define N_BOXES 10 -#define SHARED_SIZE (apr_size_t)(N_BOXES * sizeof(mbox)) +#define SHARED_SIZE (fspr_size_t)(N_BOXES * sizeof(mbox)) #define SHARED_FILENAME "data/apr.testshm.shm" #define N_MESSAGES 100 #define MSG "Sending a message" diff --git a/libs/apr/test/testshmconsumer.c b/libs/apr/test/testshmconsumer.c index 6a2a3c30d3e..5e67e837b9d 100644 --- a/libs/apr/test/testshmconsumer.c +++ b/libs/apr/test/testshmconsumer.c @@ -14,14 +14,14 @@ * limitations under the License. */ -#include "apr_shm.h" -#include "apr_errno.h" -#include "apr_general.h" -#include "apr_lib.h" -#include "apr_strings.h" -#include "apr_time.h" +#include "fspr_shm.h" +#include "fspr_errno.h" +#include "fspr_general.h" +#include "fspr_lib.h" +#include "fspr_strings.h" +#include "fspr_time.h" #include "testshm.h" -#include "apr.h" +#include "fspr.h" #if APR_HAVE_STDLIB_H #include @@ -34,9 +34,9 @@ static int msgwait(int sleep_sec, int first_box, int last_box) { int i; int recvd = 0; - apr_time_t start = apr_time_now(); - apr_interval_time_t sleep_duration = apr_time_from_sec(sleep_sec); - while (apr_time_now() - start < sleep_duration) { + fspr_time_t start = fspr_time_now(); + fspr_interval_time_t sleep_duration = fspr_time_from_sec(sleep_sec); + while (fspr_time_now() - start < sleep_duration) { for (i = first_box; i < last_box; i++) { if (boxes[i].msgavail && !strcmp(boxes[i].msg, MSG)) { recvd++; @@ -44,35 +44,35 @@ static int msgwait(int sleep_sec, int first_box, int last_box) memset(boxes[i].msg, 0, 1024); } } - apr_sleep(apr_time_from_sec(1)); + fspr_sleep(fspr_time_from_sec(1)); } return recvd; } int main(void) { - apr_status_t rv; - apr_pool_t *pool; - apr_shm_t *shm; + fspr_status_t rv; + fspr_pool_t *pool; + fspr_shm_t *shm; int recvd; - apr_initialize(); + fspr_initialize(); - if (apr_pool_create(&pool, NULL) != APR_SUCCESS) { + if (fspr_pool_create(&pool, NULL) != APR_SUCCESS) { exit(-1); } - rv = apr_shm_attach(&shm, SHARED_FILENAME, pool); + rv = fspr_shm_attach(&shm, SHARED_FILENAME, pool); if (rv != APR_SUCCESS) { exit(-2); } - boxes = apr_shm_baseaddr_get(shm); + boxes = fspr_shm_baseaddr_get(shm); /* consume messages on all of the boxes */ recvd = msgwait(30, 0, N_BOXES); /* wait for 30 seconds for messages */ - rv = apr_shm_detach(shm); + rv = fspr_shm_detach(shm); if (rv != APR_SUCCESS) { exit(-3); } diff --git a/libs/apr/test/testshmproducer.c b/libs/apr/test/testshmproducer.c index 58eb94fcd3f..70073db7bd3 100644 --- a/libs/apr/test/testshmproducer.c +++ b/libs/apr/test/testshmproducer.c @@ -14,14 +14,14 @@ * limitations under the License. */ -#include "apr_shm.h" -#include "apr_errno.h" -#include "apr_general.h" -#include "apr_lib.h" -#include "apr_strings.h" -#include "apr_time.h" +#include "fspr_shm.h" +#include "fspr_errno.h" +#include "fspr_general.h" +#include "fspr_lib.h" +#include "fspr_strings.h" +#include "fspr_time.h" #include "testshm.h" -#include "apr.h" +#include "fspr.h" #if APR_HAVE_STDLIB_H #include @@ -31,30 +31,30 @@ #if APR_HAS_SHARED_MEMORY static void msgput(int boxnum, char *msg) { - apr_cpystrn(boxes[boxnum].msg, msg, strlen(msg) + 1); + fspr_cpystrn(boxes[boxnum].msg, msg, strlen(msg) + 1); boxes[boxnum].msgavail = 1; } int main(void) { - apr_status_t rv; - apr_pool_t *pool; - apr_shm_t *shm; + fspr_status_t rv; + fspr_pool_t *pool; + fspr_shm_t *shm; int i; int sent = 0; - apr_initialize(); + fspr_initialize(); - if (apr_pool_create(&pool, NULL) != APR_SUCCESS) { + if (fspr_pool_create(&pool, NULL) != APR_SUCCESS) { exit(-1); } - rv = apr_shm_attach(&shm, SHARED_FILENAME, pool); + rv = fspr_shm_attach(&shm, SHARED_FILENAME, pool); if (rv != APR_SUCCESS) { exit(-2); } - boxes = apr_shm_baseaddr_get(shm); + boxes = fspr_shm_baseaddr_get(shm); /* produce messages on all of the boxes, in descending order, * Yes, we could just return N_BOXES, but I want to have a double-check @@ -64,10 +64,10 @@ int main(void) */ for (i = N_BOXES - 1, sent = 0; i >= 0; i--, sent++) { msgput(i, MSG); - apr_sleep(apr_time_from_sec(1)); + fspr_sleep(fspr_time_from_sec(1)); } - rv = apr_shm_detach(shm); + rv = fspr_shm_detach(shm); if (rv != APR_SUCCESS) { exit(-3); } diff --git a/libs/apr/test/testsleep.c b/libs/apr/test/testsleep.c index d50cc1b49db..6112a859078 100644 --- a/libs/apr/test/testsleep.c +++ b/libs/apr/test/testsleep.c @@ -15,10 +15,10 @@ */ #include "time.h" -#include "apr_thread_proc.h" -#include "apr_errno.h" -#include "apr_general.h" -#include "apr_lib.h" +#include "fspr_thread_proc.h" +#include "fspr_errno.h" +#include "fspr_general.h" +#include "fspr_lib.h" #include #include #include @@ -32,7 +32,7 @@ static void sleep_one(abts_case *tc, void *data) time_t posttime; time_t timediff; - apr_sleep(apr_time_from_sec(SLEEP_INTERVAL)); + fspr_sleep(fspr_time_from_sec(SLEEP_INTERVAL)); posttime = time(NULL); /* normalize the timediff. We should have slept for SLEEP_INTERVAL, so diff --git a/libs/apr/test/testsock.c b/libs/apr/test/testsock.c index 7c1759e924d..f731630dc36 100644 --- a/libs/apr/test/testsock.c +++ b/libs/apr/test/testsock.c @@ -16,45 +16,45 @@ #include "testutil.h" #include "testsock.h" -#include "apr_thread_proc.h" -#include "apr_network_io.h" -#include "apr_errno.h" -#include "apr_general.h" -#include "apr_lib.h" -#include "apr_strings.h" -#include "apr_poll.h" - -static void launch_child(abts_case *tc, apr_proc_t *proc, const char *arg1, apr_pool_t *p) +#include "fspr_thread_proc.h" +#include "fspr_network_io.h" +#include "fspr_errno.h" +#include "fspr_general.h" +#include "fspr_lib.h" +#include "fspr_strings.h" +#include "fspr_poll.h" + +static void launch_child(abts_case *tc, fspr_proc_t *proc, const char *arg1, fspr_pool_t *p) { - apr_procattr_t *procattr; + fspr_procattr_t *procattr; const char *args[3]; - apr_status_t rv; + fspr_status_t rv; - rv = apr_procattr_create(&procattr, p); + rv = fspr_procattr_create(&procattr, p); APR_ASSERT_SUCCESS(tc, "Couldn't create procattr", rv); - rv = apr_procattr_io_set(procattr, APR_NO_PIPE, APR_NO_PIPE, + rv = fspr_procattr_io_set(procattr, APR_NO_PIPE, APR_NO_PIPE, APR_NO_PIPE); APR_ASSERT_SUCCESS(tc, "Couldn't set io in procattr", rv); - rv = apr_procattr_error_check_set(procattr, 1); + rv = fspr_procattr_error_check_set(procattr, 1); APR_ASSERT_SUCCESS(tc, "Couldn't set error check in procattr", rv); args[0] = "sockchild" EXTENSION; args[1] = arg1; args[2] = NULL; - rv = apr_proc_create(proc, "./sockchild" EXTENSION, args, NULL, + rv = fspr_proc_create(proc, "./sockchild" EXTENSION, args, NULL, procattr, p); APR_ASSERT_SUCCESS(tc, "Couldn't launch program", rv); } -static int wait_child(abts_case *tc, apr_proc_t *proc) +static int wait_child(abts_case *tc, fspr_proc_t *proc) { int exitcode; - apr_exit_why_e why; + fspr_exit_why_e why; ABTS_ASSERT(tc, "Error waiting for child process", - apr_proc_wait(proc, &exitcode, &why, APR_WAIT) == APR_CHILD_DONE); + fspr_proc_wait(proc, &exitcode, &why, APR_WAIT) == APR_CHILD_DONE); ABTS_ASSERT(tc, "child terminated normally", why == APR_PROC_EXIT); return exitcode; @@ -62,37 +62,37 @@ static int wait_child(abts_case *tc, apr_proc_t *proc) static void test_addr_info(abts_case *tc, void *data) { - apr_status_t rv; - apr_sockaddr_t *sa; + fspr_status_t rv; + fspr_sockaddr_t *sa; - rv = apr_sockaddr_info_get(&sa, NULL, APR_UNSPEC, 80, 0, p); + rv = fspr_sockaddr_info_get(&sa, NULL, APR_UNSPEC, 80, 0, p); APR_ASSERT_SUCCESS(tc, "Problem generating sockaddr", rv); - rv = apr_sockaddr_info_get(&sa, "127.0.0.1", APR_UNSPEC, 80, 0, p); + rv = fspr_sockaddr_info_get(&sa, "127.0.0.1", APR_UNSPEC, 80, 0, p); APR_ASSERT_SUCCESS(tc, "Problem generating sockaddr", rv); ABTS_STR_EQUAL(tc, "127.0.0.1", sa->hostname); } -static apr_socket_t *setup_socket(abts_case *tc) +static fspr_socket_t *setup_socket(abts_case *tc) { - apr_status_t rv; - apr_sockaddr_t *sa; - apr_socket_t *sock; + fspr_status_t rv; + fspr_sockaddr_t *sa; + fspr_socket_t *sock; - rv = apr_sockaddr_info_get(&sa, "127.0.0.1", APR_INET, 8021, 0, p); + rv = fspr_sockaddr_info_get(&sa, "127.0.0.1", APR_INET, 8021, 0, p); APR_ASSERT_SUCCESS(tc, "Problem generating sockaddr", rv); - rv = apr_socket_create(&sock, sa->family, SOCK_STREAM, APR_PROTO_TCP, p); + rv = fspr_socket_create(&sock, sa->family, SOCK_STREAM, APR_PROTO_TCP, p); APR_ASSERT_SUCCESS(tc, "Problem creating socket", rv); - rv = apr_socket_opt_set(sock, APR_SO_REUSEADDR, 1); + rv = fspr_socket_opt_set(sock, APR_SO_REUSEADDR, 1); APR_ASSERT_SUCCESS(tc, "Could not set REUSEADDR on socket", rv); - rv = apr_socket_bind(sock, sa); + rv = fspr_socket_bind(sock, sa); APR_ASSERT_SUCCESS(tc, "Problem binding to port", rv); if (rv) return NULL; - rv = apr_socket_listen(sock, 5); + rv = fspr_socket_listen(sock, 5); APR_ASSERT_SUCCESS(tc, "Problem listening on socket", rv); return sock; @@ -100,55 +100,55 @@ static apr_socket_t *setup_socket(abts_case *tc) static void test_create_bind_listen(abts_case *tc, void *data) { - apr_status_t rv; - apr_socket_t *sock = setup_socket(tc); + fspr_status_t rv; + fspr_socket_t *sock = setup_socket(tc); if (!sock) return; - rv = apr_socket_close(sock); + rv = fspr_socket_close(sock); APR_ASSERT_SUCCESS(tc, "Problem closing socket", rv); } static void test_send(abts_case *tc, void *data) { - apr_status_t rv; - apr_socket_t *sock; - apr_socket_t *sock2; - apr_proc_t proc; + fspr_status_t rv; + fspr_socket_t *sock; + fspr_socket_t *sock2; + fspr_proc_t proc; int protocol; - apr_size_t length; + fspr_size_t length; sock = setup_socket(tc); if (!sock) return; launch_child(tc, &proc, "read", p); - rv = apr_socket_accept(&sock2, sock, p); + rv = fspr_socket_accept(&sock2, sock, p); APR_ASSERT_SUCCESS(tc, "Problem with receiving connection", rv); - apr_socket_protocol_get(sock2, &protocol); + fspr_socket_protocol_get(sock2, &protocol); ABTS_INT_EQUAL(tc, APR_PROTO_TCP, protocol); length = strlen(DATASTR); - apr_socket_send(sock2, DATASTR, &length); + fspr_socket_send(sock2, DATASTR, &length); /* Make sure that the client received the data we sent */ ABTS_INT_EQUAL(tc, strlen(DATASTR), wait_child(tc, &proc)); - rv = apr_socket_close(sock2); + rv = fspr_socket_close(sock2); APR_ASSERT_SUCCESS(tc, "Problem closing connected socket", rv); - rv = apr_socket_close(sock); + rv = fspr_socket_close(sock); APR_ASSERT_SUCCESS(tc, "Problem closing socket", rv); } static void test_recv(abts_case *tc, void *data) { - apr_status_t rv; - apr_socket_t *sock; - apr_socket_t *sock2; - apr_proc_t proc; + fspr_status_t rv; + fspr_socket_t *sock; + fspr_socket_t *sock2; + fspr_proc_t proc; int protocol; - apr_size_t length = STRLEN; + fspr_size_t length = STRLEN; char datastr[STRLEN]; sock = setup_socket(tc); @@ -156,31 +156,31 @@ static void test_recv(abts_case *tc, void *data) launch_child(tc, &proc, "write", p); - rv = apr_socket_accept(&sock2, sock, p); + rv = fspr_socket_accept(&sock2, sock, p); APR_ASSERT_SUCCESS(tc, "Problem with receiving connection", rv); - apr_socket_protocol_get(sock2, &protocol); + fspr_socket_protocol_get(sock2, &protocol); ABTS_INT_EQUAL(tc, APR_PROTO_TCP, protocol); memset(datastr, 0, STRLEN); - apr_socket_recv(sock2, datastr, &length); + fspr_socket_recv(sock2, datastr, &length); /* Make sure that the server received the data we sent */ ABTS_STR_EQUAL(tc, DATASTR, datastr); ABTS_INT_EQUAL(tc, strlen(datastr), wait_child(tc, &proc)); - rv = apr_socket_close(sock2); + rv = fspr_socket_close(sock2); APR_ASSERT_SUCCESS(tc, "Problem closing connected socket", rv); - rv = apr_socket_close(sock); + rv = fspr_socket_close(sock); APR_ASSERT_SUCCESS(tc, "Problem closing socket", rv); } static void test_timeout(abts_case *tc, void *data) { - apr_status_t rv; - apr_socket_t *sock; - apr_socket_t *sock2; - apr_proc_t proc; + fspr_status_t rv; + fspr_socket_t *sock; + fspr_socket_t *sock2; + fspr_proc_t proc; int protocol; int exit; @@ -189,10 +189,10 @@ static void test_timeout(abts_case *tc, void *data) launch_child(tc, &proc, "read", p); - rv = apr_socket_accept(&sock2, sock, p); + rv = fspr_socket_accept(&sock2, sock, p); APR_ASSERT_SUCCESS(tc, "Problem with receiving connection", rv); - apr_socket_protocol_get(sock2, &protocol); + fspr_socket_protocol_get(sock2, &protocol); ABTS_INT_EQUAL(tc, APR_PROTO_TCP, protocol); exit = wait_child(tc, &proc); @@ -201,57 +201,57 @@ static void test_timeout(abts_case *tc, void *data) /* We didn't write any data, so make sure the child program returns * an error. */ - rv = apr_socket_close(sock2); + rv = fspr_socket_close(sock2); APR_ASSERT_SUCCESS(tc, "Problem closing connected socket", rv); - rv = apr_socket_close(sock); + rv = fspr_socket_close(sock); APR_ASSERT_SUCCESS(tc, "Problem closing socket", rv); } static void test_get_addr(abts_case *tc, void *data) { - apr_status_t rv; - apr_socket_t *ld, *sd, *cd; - apr_sockaddr_t *sa, *ca; + fspr_status_t rv; + fspr_socket_t *ld, *sd, *cd; + fspr_sockaddr_t *sa, *ca; char a[128], b[128]; ld = setup_socket(tc); APR_ASSERT_SUCCESS(tc, "get local address of bound socket", - apr_socket_addr_get(&sa, APR_LOCAL, ld)); + fspr_socket_addr_get(&sa, APR_LOCAL, ld)); - rv = apr_socket_create(&cd, sa->family, SOCK_STREAM, + rv = fspr_socket_create(&cd, sa->family, SOCK_STREAM, APR_PROTO_TCP, p); APR_ASSERT_SUCCESS(tc, "create client socket", rv); APR_ASSERT_SUCCESS(tc, "enable non-block mode", - apr_socket_opt_set(cd, APR_SO_NONBLOCK, 1)); + fspr_socket_opt_set(cd, APR_SO_NONBLOCK, 1)); /* It is valid for a connect() on a socket with NONBLOCK set to * succeed (if the connection can be established synchronously), * but if it does, this test cannot proceed. */ - rv = apr_socket_connect(cd, sa); + rv = fspr_socket_connect(cd, sa); if (rv == APR_SUCCESS) { - apr_socket_close(ld); - apr_socket_close(cd); + fspr_socket_close(ld); + fspr_socket_close(cd); ABTS_NOT_IMPL(tc, "Cannot test if connect completes " "synchronously"); return; } if (!APR_STATUS_IS_EINPROGRESS(rv)) { - apr_socket_close(ld); - apr_socket_close(cd); + fspr_socket_close(ld); + fspr_socket_close(cd); APR_ASSERT_SUCCESS(tc, "connect to listener", rv); return; } APR_ASSERT_SUCCESS(tc, "accept connection", - apr_socket_accept(&sd, ld, p)); + fspr_socket_accept(&sd, ld, p)); { /* wait for writability */ - apr_pollfd_t pfd; + fspr_pollfd_t pfd; int n; pfd.p = p; @@ -261,24 +261,24 @@ static void test_get_addr(abts_case *tc, void *data) pfd.client_data = NULL; APR_ASSERT_SUCCESS(tc, "poll for connect completion", - apr_poll(&pfd, 1, &n, 5 * APR_USEC_PER_SEC)); + fspr_poll(&pfd, 1, &n, 5 * APR_USEC_PER_SEC)); } APR_ASSERT_SUCCESS(tc, "get local address of server socket", - apr_socket_addr_get(&sa, APR_LOCAL, sd)); + fspr_socket_addr_get(&sa, APR_LOCAL, sd)); APR_ASSERT_SUCCESS(tc, "get remote address of client socket", - apr_socket_addr_get(&ca, APR_REMOTE, cd)); + fspr_socket_addr_get(&ca, APR_REMOTE, cd)); - apr_snprintf(a, sizeof(a), "%pI", sa); - apr_snprintf(b, sizeof(b), "%pI", ca); + fspr_snprintf(a, sizeof(a), "%pI", sa); + fspr_snprintf(b, sizeof(b), "%pI", ca); ABTS_STR_EQUAL(tc, a, b); - apr_socket_close(cd); - apr_socket_close(sd); - apr_socket_close(ld); + fspr_socket_close(cd); + fspr_socket_close(sd); + fspr_socket_close(ld); } abts_suite *testsock(abts_suite *suite) diff --git a/libs/apr/test/testsockets.c b/libs/apr/test/testsockets.c index 6328af8d9b2..9337886ab7e 100644 --- a/libs/apr/test/testsockets.c +++ b/libs/apr/test/testsockets.c @@ -14,46 +14,46 @@ * limitations under the License. */ -#include "apr_network_io.h" -#include "apr_errno.h" -#include "apr_general.h" -#include "apr_lib.h" +#include "fspr_network_io.h" +#include "fspr_errno.h" +#include "fspr_general.h" +#include "fspr_lib.h" #include "testutil.h" #define STRLEN 21 static void tcp_socket(abts_case *tc, void *data) { - apr_status_t rv; - apr_socket_t *sock = NULL; + fspr_status_t rv; + fspr_socket_t *sock = NULL; int type; - rv = apr_socket_create(&sock, APR_INET, SOCK_STREAM, 0, p); + rv = fspr_socket_create(&sock, APR_INET, SOCK_STREAM, 0, p); ABTS_INT_EQUAL(tc, APR_SUCCESS, rv); ABTS_PTR_NOTNULL(tc, sock); - rv = apr_socket_type_get(sock, &type); + rv = fspr_socket_type_get(sock, &type); ABTS_INT_EQUAL(tc, APR_SUCCESS, rv); ABTS_INT_EQUAL(tc, SOCK_STREAM, type); - apr_socket_close(sock); + fspr_socket_close(sock); } static void udp_socket(abts_case *tc, void *data) { - apr_status_t rv; - apr_socket_t *sock = NULL; + fspr_status_t rv; + fspr_socket_t *sock = NULL; int type; - rv = apr_socket_create(&sock, APR_INET, SOCK_DGRAM, 0, p); + rv = fspr_socket_create(&sock, APR_INET, SOCK_DGRAM, 0, p); ABTS_INT_EQUAL(tc, APR_SUCCESS, rv); ABTS_PTR_NOTNULL(tc, sock); - rv = apr_socket_type_get(sock, &type); + rv = fspr_socket_type_get(sock, &type); ABTS_INT_EQUAL(tc, APR_SUCCESS, rv); ABTS_INT_EQUAL(tc, SOCK_DGRAM, type); - apr_socket_close(sock); + fspr_socket_close(sock); } /* On recent Linux systems, whilst IPv6 is always supported by glibc, @@ -68,17 +68,17 @@ static void udp_socket(abts_case *tc, void *data) static void tcp6_socket(abts_case *tc, void *data) { #if APR_HAVE_IPV6 - apr_status_t rv; - apr_socket_t *sock = NULL; + fspr_status_t rv; + fspr_socket_t *sock = NULL; - rv = apr_socket_create(&sock, APR_INET6, SOCK_STREAM, 0, p); + rv = fspr_socket_create(&sock, APR_INET6, SOCK_STREAM, 0, p); if (V6_NOT_ENABLED(rv)) { ABTS_NOT_IMPL(tc, "IPv6 not enabled"); return; } ABTS_INT_EQUAL(tc, APR_SUCCESS, rv); ABTS_PTR_NOTNULL(tc, sock); - apr_socket_close(sock); + fspr_socket_close(sock); #else ABTS_NOT_IMPL(tc, "IPv6"); #endif @@ -87,17 +87,17 @@ static void tcp6_socket(abts_case *tc, void *data) static void udp6_socket(abts_case *tc, void *data) { #if APR_HAVE_IPV6 - apr_status_t rv; - apr_socket_t *sock = NULL; + fspr_status_t rv; + fspr_socket_t *sock = NULL; - rv = apr_socket_create(&sock, APR_INET6, SOCK_DGRAM, 0, p); + rv = fspr_socket_create(&sock, APR_INET6, SOCK_DGRAM, 0, p); if (V6_NOT_ENABLED(rv)) { ABTS_NOT_IMPL(tc, "IPv6 not enabled"); return; } ABTS_INT_EQUAL(tc, APR_SUCCESS, rv); ABTS_PTR_NOTNULL(tc, sock); - apr_socket_close(sock); + fspr_socket_close(sock); #else ABTS_NOT_IMPL(tc, "IPv6"); #endif @@ -105,91 +105,91 @@ static void udp6_socket(abts_case *tc, void *data) static void sendto_receivefrom(abts_case *tc, void *data) { - apr_status_t rv; - apr_socket_t *sock = NULL; - apr_socket_t *sock2 = NULL; + fspr_status_t rv; + fspr_socket_t *sock = NULL; + fspr_socket_t *sock2 = NULL; char sendbuf[STRLEN] = "APR_INET, SOCK_DGRAM"; char recvbuf[80]; char *ip_addr; - apr_port_t fromport; - apr_sockaddr_t *from; - apr_sockaddr_t *to; - apr_size_t len = 30; + fspr_port_t fromport; + fspr_sockaddr_t *from; + fspr_sockaddr_t *to; + fspr_size_t len = 30; int family; const char *addr; #if APR_HAVE_IPV6 family = APR_INET6; addr = "::1"; - rv = apr_socket_create(&sock, family, SOCK_DGRAM, 0, p); + rv = fspr_socket_create(&sock, family, SOCK_DGRAM, 0, p); if (V6_NOT_ENABLED(rv)) { #endif family = APR_INET; addr = "127.0.0.1"; - rv = apr_socket_create(&sock, family, SOCK_DGRAM, 0, p); + rv = fspr_socket_create(&sock, family, SOCK_DGRAM, 0, p); #if APR_HAVE_IPV6 } #endif ABTS_INT_EQUAL(tc, APR_SUCCESS, rv); - rv = apr_socket_create(&sock2, family, SOCK_DGRAM, 0, p); + rv = fspr_socket_create(&sock2, family, SOCK_DGRAM, 0, p); ABTS_INT_EQUAL(tc, APR_SUCCESS, rv); - rv = apr_sockaddr_info_get(&to, addr, APR_UNSPEC, 7772, 0, p); + rv = fspr_sockaddr_info_get(&to, addr, APR_UNSPEC, 7772, 0, p); ABTS_INT_EQUAL(tc, APR_SUCCESS, rv); - rv = apr_sockaddr_info_get(&from, addr, APR_UNSPEC, 7771, 0, p); + rv = fspr_sockaddr_info_get(&from, addr, APR_UNSPEC, 7771, 0, p); ABTS_INT_EQUAL(tc, APR_SUCCESS, rv); - rv = apr_socket_opt_set(sock, APR_SO_REUSEADDR, 1); + rv = fspr_socket_opt_set(sock, APR_SO_REUSEADDR, 1); APR_ASSERT_SUCCESS(tc, "Could not set REUSEADDR on socket", rv); - rv = apr_socket_opt_set(sock2, APR_SO_REUSEADDR, 1); + rv = fspr_socket_opt_set(sock2, APR_SO_REUSEADDR, 1); APR_ASSERT_SUCCESS(tc, "Could not set REUSEADDR on socket2", rv); - rv = apr_socket_bind(sock, to); + rv = fspr_socket_bind(sock, to); ABTS_INT_EQUAL(tc, APR_SUCCESS, rv); - rv = apr_socket_bind(sock2, from); + rv = fspr_socket_bind(sock2, from); ABTS_INT_EQUAL(tc, APR_SUCCESS, rv); len = STRLEN; - rv = apr_socket_sendto(sock2, to, 0, sendbuf, &len); + rv = fspr_socket_sendto(sock2, to, 0, sendbuf, &len); ABTS_INT_EQUAL(tc, APR_SUCCESS, rv); ABTS_INT_EQUAL(tc, STRLEN, len); len = 80; - rv = apr_socket_recvfrom(from, sock, 0, recvbuf, &len); + rv = fspr_socket_recvfrom(from, sock, 0, recvbuf, &len); ABTS_INT_EQUAL(tc, APR_SUCCESS, rv); ABTS_INT_EQUAL(tc, STRLEN, len); ABTS_STR_EQUAL(tc, "APR_INET, SOCK_DGRAM", recvbuf); - apr_sockaddr_ip_get(&ip_addr, from); + fspr_sockaddr_ip_get(&ip_addr, from); fromport = from->port; ABTS_STR_EQUAL(tc, addr, ip_addr); ABTS_INT_EQUAL(tc, 7771, fromport); - apr_socket_close(sock); - apr_socket_close(sock2); + fspr_socket_close(sock); + fspr_socket_close(sock2); } static void socket_userdata(abts_case *tc, void *data) { - apr_socket_t *sock1, *sock2; - apr_status_t rv; + fspr_socket_t *sock1, *sock2; + fspr_status_t rv; void *user; const char *key = "GENERICKEY"; - rv = apr_socket_create(&sock1, AF_INET, SOCK_STREAM, 0, p); + rv = fspr_socket_create(&sock1, AF_INET, SOCK_STREAM, 0, p); ABTS_INT_EQUAL(tc, APR_SUCCESS, rv); - rv = apr_socket_create(&sock2, AF_INET, SOCK_STREAM, 0, p); + rv = fspr_socket_create(&sock2, AF_INET, SOCK_STREAM, 0, p); ABTS_INT_EQUAL(tc, APR_SUCCESS, rv); - rv = apr_socket_data_set(sock1, "SOCK1", key, NULL); + rv = fspr_socket_data_set(sock1, "SOCK1", key, NULL); ABTS_INT_EQUAL(tc, APR_SUCCESS, rv); - rv = apr_socket_data_set(sock2, "SOCK2", key, NULL); + rv = fspr_socket_data_set(sock2, "SOCK2", key, NULL); ABTS_INT_EQUAL(tc, APR_SUCCESS, rv); - rv = apr_socket_data_get(&user, key, sock1); + rv = fspr_socket_data_get(&user, key, sock1); ABTS_INT_EQUAL(tc, APR_SUCCESS, rv); ABTS_STR_EQUAL(tc, "SOCK1", user); - rv = apr_socket_data_get(&user, key, sock2); + rv = fspr_socket_data_get(&user, key, sock2); ABTS_INT_EQUAL(tc, APR_SUCCESS, rv); ABTS_STR_EQUAL(tc, "SOCK2", user); } diff --git a/libs/apr/test/testsockopt.c b/libs/apr/test/testsockopt.c index 203e2c39ff7..9328bfd3409 100644 --- a/libs/apr/test/testsockopt.c +++ b/libs/apr/test/testsockopt.c @@ -14,45 +14,45 @@ * limitations under the License. */ -#include "apr_network_io.h" -#include "apr_errno.h" -#include "apr_general.h" -#include "apr_lib.h" +#include "fspr_network_io.h" +#include "fspr_errno.h" +#include "fspr_general.h" +#include "fspr_lib.h" #include "testutil.h" -static apr_socket_t *sock = NULL; +static fspr_socket_t *sock = NULL; static void create_socket(abts_case *tc, void *data) { - apr_status_t rv; + fspr_status_t rv; - rv = apr_socket_create(&sock, APR_INET, SOCK_STREAM, 0, p); + rv = fspr_socket_create(&sock, APR_INET, SOCK_STREAM, 0, p); ABTS_INT_EQUAL(tc, APR_SUCCESS, rv); ABTS_PTR_NOTNULL(tc, sock); } static void set_keepalive(abts_case *tc, void *data) { - apr_status_t rv; - apr_int32_t ck; + fspr_status_t rv; + fspr_int32_t ck; - rv = apr_socket_opt_set(sock, APR_SO_KEEPALIVE, 1); + rv = fspr_socket_opt_set(sock, APR_SO_KEEPALIVE, 1); ABTS_INT_EQUAL(tc, APR_SUCCESS, rv); - rv = apr_socket_opt_get(sock, APR_SO_KEEPALIVE, &ck); + rv = fspr_socket_opt_get(sock, APR_SO_KEEPALIVE, &ck); ABTS_INT_EQUAL(tc, APR_SUCCESS, rv); ABTS_INT_EQUAL(tc, 1, ck); } static void set_debug(abts_case *tc, void *data) { - apr_status_t rv1, rv2; - apr_int32_t ck; + fspr_status_t rv1, rv2; + fspr_int32_t ck; /* On some platforms APR_SO_DEBUG can only be set as root; just test * for get/set consistency of this option. */ - rv1 = apr_socket_opt_set(sock, APR_SO_DEBUG, 1); - rv2 = apr_socket_opt_get(sock, APR_SO_DEBUG, &ck); + rv1 = fspr_socket_opt_set(sock, APR_SO_DEBUG, 1); + rv2 = fspr_socket_opt_get(sock, APR_SO_DEBUG, &ck); APR_ASSERT_SUCCESS(tc, "get SO_DEBUG option", rv2); if (rv1 == APR_SUCCESS) { ABTS_INT_EQUAL(tc, 1, ck); @@ -63,17 +63,17 @@ static void set_debug(abts_case *tc, void *data) static void remove_keepalive(abts_case *tc, void *data) { - apr_status_t rv; - apr_int32_t ck; + fspr_status_t rv; + fspr_int32_t ck; - rv = apr_socket_opt_get(sock, APR_SO_KEEPALIVE, &ck); + rv = fspr_socket_opt_get(sock, APR_SO_KEEPALIVE, &ck); ABTS_INT_EQUAL(tc, APR_SUCCESS, rv); ABTS_INT_EQUAL(tc, 1, ck); - rv = apr_socket_opt_set(sock, APR_SO_KEEPALIVE, 0); + rv = fspr_socket_opt_set(sock, APR_SO_KEEPALIVE, 0); ABTS_INT_EQUAL(tc, APR_SUCCESS, rv); - rv = apr_socket_opt_get(sock, APR_SO_KEEPALIVE, &ck); + rv = fspr_socket_opt_get(sock, APR_SO_KEEPALIVE, &ck); ABTS_INT_EQUAL(tc, APR_SUCCESS, rv); ABTS_INT_EQUAL(tc, 0, ck); } @@ -83,33 +83,33 @@ static void corkable(abts_case *tc, void *data) #if !APR_HAVE_CORKABLE_TCP ABTS_NOT_IMPL(tc, "TCP isn't corkable"); #else - apr_status_t rv; - apr_int32_t ck; + fspr_status_t rv; + fspr_int32_t ck; - rv = apr_socket_opt_set(sock, APR_TCP_NODELAY, 1); + rv = fspr_socket_opt_set(sock, APR_TCP_NODELAY, 1); ABTS_INT_EQUAL(tc, APR_SUCCESS, rv); - rv = apr_socket_opt_get(sock, APR_TCP_NODELAY, &ck); + rv = fspr_socket_opt_get(sock, APR_TCP_NODELAY, &ck); ABTS_INT_EQUAL(tc, APR_SUCCESS, rv); ABTS_INT_EQUAL(tc, 1, ck); - rv = apr_socket_opt_set(sock, APR_TCP_NOPUSH, 1); + rv = fspr_socket_opt_set(sock, APR_TCP_NOPUSH, 1); ABTS_INT_EQUAL(tc, APR_SUCCESS, rv); - rv = apr_socket_opt_get(sock, APR_TCP_NOPUSH, &ck); + rv = fspr_socket_opt_get(sock, APR_TCP_NOPUSH, &ck); ABTS_INT_EQUAL(tc, APR_SUCCESS, rv); ABTS_INT_EQUAL(tc, 1, ck); - rv = apr_socket_opt_get(sock, APR_TCP_NODELAY, &ck); + rv = fspr_socket_opt_get(sock, APR_TCP_NODELAY, &ck); ABTS_INT_EQUAL(tc, APR_SUCCESS, rv); /* TCP_NODELAY is now in an unknown state; it may be zero if * TCP_NOPUSH and TCP_NODELAY are mutually exclusive on this * platform, e.g. Linux < 2.6. */ - rv = apr_socket_opt_set(sock, APR_TCP_NOPUSH, 0); + rv = fspr_socket_opt_set(sock, APR_TCP_NOPUSH, 0); ABTS_INT_EQUAL(tc, APR_SUCCESS, rv); - rv = apr_socket_opt_get(sock, APR_TCP_NODELAY, &ck); + rv = fspr_socket_opt_get(sock, APR_TCP_NODELAY, &ck); ABTS_INT_EQUAL(tc, APR_SUCCESS, rv); ABTS_INT_EQUAL(tc, 1, ck); #endif @@ -117,9 +117,9 @@ static void corkable(abts_case *tc, void *data) static void close_socket(abts_case *tc, void *data) { - apr_status_t rv; + fspr_status_t rv; - rv = apr_socket_close(sock); + rv = fspr_socket_close(sock); ABTS_INT_EQUAL(tc, APR_SUCCESS, rv); } diff --git a/libs/apr/test/teststr.c b/libs/apr/test/teststr.c index ec382c343a6..4ed57dec4fc 100644 --- a/libs/apr/test/teststr.c +++ b/libs/apr/test/teststr.c @@ -25,9 +25,9 @@ #include #endif -#include "apr_general.h" -#include "apr_strings.h" -#include "apr_errno.h" +#include "fspr_general.h" +#include "fspr_strings.h" +#include "fspr_errno.h" /* I haven't bothered to check for APR_ENOTIMPL here, AFAIK, all string * functions exist on all platforms. @@ -49,7 +49,7 @@ static void test_strtok(abts_case *tc, void *data) " \r\n\3\2\1" }, { - NULL, /* but who cares if apr_strtok() segfaults? */ + NULL, /* but who cares if fspr_strtok() segfaults? */ " \t" }, #if 0 /* don't do this... you deserve to segfault */ @@ -74,11 +74,11 @@ static void test_strtok(abts_case *tc, void *data) char *str1, *str2; char *state; - str1 = apr_pstrdup(p, cases[curtc].input); - str2 = apr_pstrdup(p, cases[curtc].input); + str1 = fspr_pstrdup(p, cases[curtc].input); + str2 = fspr_pstrdup(p, cases[curtc].input); do { - retval1 = apr_strtok(str1, cases[curtc].sep, &state); + retval1 = fspr_strtok(str1, cases[curtc].sep, &state); retval2 = strtok(str2, cases[curtc].sep); if (!retval1) { @@ -97,7 +97,7 @@ static void test_strtok(abts_case *tc, void *data) static void snprintf_noNULL(abts_case *tc, void *data) { char buff[100]; - char *testing = apr_palloc(p, 10); + char *testing = fspr_palloc(p, 10); testing[0] = 't'; testing[1] = 'e'; @@ -108,7 +108,7 @@ static void snprintf_noNULL(abts_case *tc, void *data) testing[6] = 'g'; /* If this test fails, we are going to seg fault. */ - apr_snprintf(buff, sizeof(buff), "%.*s", 7, testing); + fspr_snprintf(buff, sizeof(buff), "%.*s", 7, testing); ABTS_STR_NEQUAL(tc, buff, testing, 7); } @@ -116,7 +116,7 @@ static void snprintf_0NULL(abts_case *tc, void *data) { int rv; - rv = apr_snprintf(NULL, 0, "%sBAR", "FOO"); + rv = fspr_snprintf(NULL, 0, "%sBAR", "FOO"); ABTS_INT_EQUAL(tc, 6, rv); } @@ -125,7 +125,7 @@ static void snprintf_0nonNULL(abts_case *tc, void *data) int rv; char *buff = "testing"; - rv = apr_snprintf(buff, 0, "%sBAR", "FOO"); + rv = fspr_snprintf(buff, 0, "%sBAR", "FOO"); ABTS_INT_EQUAL(tc, 6, rv); ABTS_ASSERT(tc, "buff unmangled", strcmp(buff, "FOOBAR") != 0); } @@ -135,15 +135,15 @@ static void snprintf_underflow(abts_case *tc, void *data) char buf[20]; int rv; - rv = apr_snprintf(buf, sizeof buf, "%.2f", (double)0.0001); + rv = fspr_snprintf(buf, sizeof buf, "%.2f", (double)0.0001); ABTS_INT_EQUAL(tc, 4, rv); ABTS_STR_EQUAL(tc, "0.00", buf); - rv = apr_snprintf(buf, sizeof buf, "%.2f", (double)0.001); + rv = fspr_snprintf(buf, sizeof buf, "%.2f", (double)0.001); ABTS_INT_EQUAL(tc, 4, rv); ABTS_STR_EQUAL(tc, "0.00", buf); - rv = apr_snprintf(buf, sizeof buf, "%.2f", (double)0.01); + rv = fspr_snprintf(buf, sizeof buf, "%.2f", (double)0.01); ABTS_INT_EQUAL(tc, 4, rv); ABTS_STR_EQUAL(tc, "0.01", buf); } @@ -151,20 +151,20 @@ static void snprintf_underflow(abts_case *tc, void *data) static void string_error(abts_case *tc, void *data) { char buf[128], *rv; - apr_status_t n; + fspr_status_t n; buf[0] = '\0'; - rv = apr_strerror(APR_ENOENT, buf, sizeof buf); + rv = fspr_strerror(APR_ENOENT, buf, sizeof buf); ABTS_PTR_EQUAL(tc, buf, rv); ABTS_TRUE(tc, strlen(buf) > 0); - rv = apr_strerror(APR_TIMEUP, buf, sizeof buf); + rv = fspr_strerror(APR_TIMEUP, buf, sizeof buf); ABTS_PTR_EQUAL(tc, buf, rv); ABTS_STR_EQUAL(tc, "The timeout specified has expired", buf); /* throw some randomish numbers at it to check for robustness */ for (n = 1; n < 1000000; n *= 2) { - apr_strerror(n, buf, sizeof buf); + fspr_strerror(n, buf, sizeof buf); } } @@ -176,10 +176,10 @@ static void string_long(abts_case *tc, void *data) memset(s, 'A', SIZE); s[SIZE] = '\0'; - apr_psprintf(p, "%s", s); + fspr_psprintf(p, "%s", s); } -/* ### FIXME: apr.h/apr_strings.h should provide these! */ +/* ### FIXME: apr.h/fspr_strings.h should provide these! */ #define MY_LLONG_MAX (APR_INT64_C(9223372036854775807)) #define MY_LLONG_MIN (-MY_LLONG_MAX - APR_INT64_C(1)) @@ -188,7 +188,7 @@ static void string_strtoi64(abts_case *tc, void *data) static const struct { int errnum, base; const char *in, *end; - apr_int64_t result; + fspr_int64_t result; } ts[] = { /* base 10 tests */ @@ -243,22 +243,22 @@ static void string_strtoi64(abts_case *tc, void *data) for (n = 0; n < sizeof(ts)/sizeof(ts[0]); n++) { char *end = "end ptr not changed"; - apr_int64_t result; + fspr_int64_t result; int errnum; errno = 0; - result = apr_strtoi64(ts[n].in, &end, ts[n].base); + result = fspr_strtoi64(ts[n].in, &end, ts[n].base); errnum = errno; ABTS_ASSERT(tc, - apr_psprintf(p, "for '%s': result was %" APR_INT64_T_FMT + fspr_psprintf(p, "for '%s': result was %" APR_INT64_T_FMT " not %" APR_INT64_T_FMT, ts[n].in, result, ts[n].result), result == ts[n].result); if (ts[n].errnum != -1) { ABTS_ASSERT(tc, - apr_psprintf(p, "for '%s': errno was %d not %d", ts[n].in, + fspr_psprintf(p, "for '%s': errno was %d not %d", ts[n].in, errnum, ts[n].errnum), ts[n].errnum == errnum); } @@ -268,7 +268,7 @@ static void string_strtoi64(abts_case *tc, void *data) ABTS_PTR_EQUAL(tc, ts[n].in + strlen(ts[n].in), end); } else if (ts[n].end != (void *)-1) { ABTS_ASSERT(tc, - apr_psprintf(p, "for '%s', end was '%s' not '%s'", + fspr_psprintf(p, "for '%s', end was '%s' not '%s'", ts[n].in, end, ts[n].end), strcmp(ts[n].end, end) == 0); } @@ -277,14 +277,14 @@ static void string_strtoi64(abts_case *tc, void *data) static void string_strtoff(abts_case *tc, void *data) { - apr_off_t off; + fspr_off_t off; ABTS_ASSERT(tc, "strtoff fails on out-of-range integer", - apr_strtoff(&off, "999999999999999999999999999999", + fspr_strtoff(&off, "999999999999999999999999999999", NULL, 10) != APR_SUCCESS); ABTS_ASSERT(tc, "strtoff failed for 1234", - apr_strtoff(&off, "1234", NULL, 10) == APR_SUCCESS); + fspr_strtoff(&off, "1234", NULL, 10) == APR_SUCCESS); ABTS_ASSERT(tc, "strtoff failed to parse 1234", off == 1234); } @@ -292,25 +292,25 @@ static void string_strtoff(abts_case *tc, void *data) /* random-ish checks for strfsize buffer overflows */ static void overflow_strfsize(abts_case *tc, void *data) { - apr_off_t off; + fspr_off_t off; char buf[7]; buf[5] = '$'; buf[6] = '@'; for (off = -9999; off < 20000; off++) { - apr_strfsize(off, buf); + fspr_strfsize(off, buf); } for (; off < 9999999; off += 9) { - apr_strfsize(off, buf); + fspr_strfsize(off, buf); } for (; off < 999999999; off += 999) { - apr_strfsize(off, buf); + fspr_strfsize(off, buf); } for (off = 1; off < LONG_MAX && off > 0; off *= 2) { - apr_strfsize(off, buf); - apr_strfsize(off + 1, buf); - apr_strfsize(off - 1, buf); + fspr_strfsize(off, buf); + fspr_strfsize(off + 1, buf); + fspr_strfsize(off - 1, buf); } ABTS_ASSERT(tc, "strfsize overflowed", buf[5] == '$'); @@ -320,7 +320,7 @@ static void overflow_strfsize(abts_case *tc, void *data) static void string_strfsize(abts_case *tc, void *data) { static const struct { - apr_off_t size; + fspr_off_t size; const char *buf; } ts[] = { { -1, " - " }, @@ -334,14 +334,14 @@ static void string_strfsize(abts_case *tc, void *data) { 103809024, " 99M" }, { 1047527424, "1.0G" } /* "999M" would be more correct */ }; - apr_size_t n; + fspr_size_t n; for (n = 0; n < sizeof(ts)/sizeof(ts[0]); n++) { char buf[6], *ret; buf[5] = '%'; - ret = apr_strfsize(ts[n].size, buf); + ret = fspr_strfsize(ts[n].size, buf); ABTS_ASSERT(tc, "strfsize returned wrong buffer", ret == buf); ABTS_ASSERT(tc, "strfsize overflowed", buf[5] == '%'); @@ -357,10 +357,10 @@ static void snprintf_overflow(abts_case *tc, void *data) buf[2] = '4'; buf[3] = '2'; - rv = apr_snprintf(buf, 2, "%s", "a"); + rv = fspr_snprintf(buf, 2, "%s", "a"); ABTS_INT_EQUAL(tc, 1, rv); - rv = apr_snprintf(buf, 2, "%s", "abcd"); + rv = fspr_snprintf(buf, 2, "%s", "abcd"); ABTS_INT_EQUAL(tc, 1, rv); ABTS_STR_EQUAL(tc, buf, "a"); diff --git a/libs/apr/test/teststrnatcmp.c b/libs/apr/test/teststrnatcmp.c index 3a5e4c67ba7..7e62742a0c5 100644 --- a/libs/apr/test/teststrnatcmp.c +++ b/libs/apr/test/teststrnatcmp.c @@ -14,50 +14,50 @@ * limitations under the License. */ -#include "apr_file_io.h" -#include "apr_errno.h" -#include "apr_strings.h" +#include "fspr_file_io.h" +#include "fspr_errno.h" +#include "fspr_strings.h" #include "testutil.h" static void less0(abts_case *tc, void *data) { - int rv = apr_strnatcmp("a", "b"); + int rv = fspr_strnatcmp("a", "b"); ABTS_ASSERT(tc, "didn't compare simple strings properly", rv < 0); } static void str_equal(abts_case *tc, void *data) { - int rv = apr_strnatcmp("a", "a"); + int rv = fspr_strnatcmp("a", "a"); ABTS_ASSERT(tc, "didn't compare simple strings properly", rv == 0); } static void more0(abts_case *tc, void *data) { - int rv = apr_strnatcmp("b", "a"); + int rv = fspr_strnatcmp("b", "a"); ABTS_ASSERT(tc, "didn't compare simple strings properly", rv > 0); } static void less_ignore_case(abts_case *tc, void *data) { - int rv = apr_strnatcasecmp("a", "B"); + int rv = fspr_strnatcasecmp("a", "B"); ABTS_ASSERT(tc, "didn't compare simple strings properly", rv < 0); } static void str_equal_ignore_case(abts_case *tc, void *data) { - int rv = apr_strnatcasecmp("a", "A"); + int rv = fspr_strnatcasecmp("a", "A"); ABTS_ASSERT(tc, "didn't compare simple strings properly", rv == 0); } static void more_ignore_case(abts_case *tc, void *data) { - int rv = apr_strnatcasecmp("b", "A"); + int rv = fspr_strnatcasecmp("b", "A"); ABTS_ASSERT(tc, "didn't compare simple strings properly", rv > 0); } static void natcmp(abts_case *tc, void *data) { - int rv = apr_strnatcasecmp("a2", "a10"); + int rv = fspr_strnatcasecmp("a2", "a10"); ABTS_ASSERT(tc, "didn't compare simple strings properly", rv < 0); } diff --git a/libs/apr/test/testtable.c b/libs/apr/test/testtable.c index d377eaf5a15..e9696d768d9 100644 --- a/libs/apr/test/testtable.c +++ b/libs/apr/test/testtable.c @@ -15,11 +15,11 @@ */ #include "testutil.h" -#include "apr.h" -#include "apr_strings.h" -#include "apr_general.h" -#include "apr_pools.h" -#include "apr_tables.h" +#include "fspr.h" +#include "fspr_strings.h" +#include "fspr_general.h" +#include "fspr_pools.h" +#include "fspr_tables.h" #if APR_HAVE_STDIO_H #include #endif @@ -30,11 +30,11 @@ #include #endif -static apr_table_t *t1 = NULL; +static fspr_table_t *t1 = NULL; static void table_make(abts_case *tc, void *data) { - t1 = apr_table_make(p, 5); + t1 = fspr_table_make(p, 5); ABTS_PTR_NOTNULL(tc, t1); } @@ -42,8 +42,8 @@ static void table_get(abts_case *tc, void *data) { const char *val; - apr_table_set(t1, "foo", "bar"); - val = apr_table_get(t1, "foo"); + fspr_table_set(t1, "foo", "bar"); + val = fspr_table_get(t1, "foo"); ABTS_STR_EQUAL(tc, val, "bar"); } @@ -51,9 +51,9 @@ static void table_set(abts_case *tc, void *data) { const char *val; - apr_table_set(t1, "setkey", "bar"); - apr_table_set(t1, "setkey", "2ndtry"); - val = apr_table_get(t1, "setkey"); + fspr_table_set(t1, "setkey", "bar"); + fspr_table_set(t1, "setkey", "2ndtry"); + val = fspr_table_get(t1, "setkey"); ABTS_STR_EQUAL(tc, val, "2ndtry"); } @@ -61,7 +61,7 @@ static void table_getnotthere(abts_case *tc, void *data) { const char *val; - val = apr_table_get(t1, "keynotthere"); + val = fspr_table_get(t1, "keynotthere"); ABTS_PTR_EQUAL(tc, NULL, (void *)val); } @@ -69,9 +69,9 @@ static void table_add(abts_case *tc, void *data) { const char *val; - apr_table_add(t1, "addkey", "bar"); - apr_table_add(t1, "addkey", "foo"); - val = apr_table_get(t1, "addkey"); + fspr_table_add(t1, "addkey", "bar"); + fspr_table_add(t1, "addkey", "foo"); + val = fspr_table_get(t1, "addkey"); ABTS_STR_EQUAL(tc, val, "bar"); } @@ -79,94 +79,94 @@ static void table_add(abts_case *tc, void *data) static void table_nelts(abts_case *tc, void *data) { const char *val; - apr_table_t *t = apr_table_make(p, 1); + fspr_table_t *t = fspr_table_make(p, 1); - apr_table_set(t, "abc", "def"); - apr_table_set(t, "def", "abc"); - apr_table_set(t, "foo", "zzz"); - val = apr_table_get(t, "foo"); + fspr_table_set(t, "abc", "def"); + fspr_table_set(t, "def", "abc"); + fspr_table_set(t, "foo", "zzz"); + val = fspr_table_get(t, "foo"); ABTS_STR_EQUAL(tc, val, "zzz"); - val = apr_table_get(t, "abc"); + val = fspr_table_get(t, "abc"); ABTS_STR_EQUAL(tc, val, "def"); - val = apr_table_get(t, "def"); + val = fspr_table_get(t, "def"); ABTS_STR_EQUAL(tc, val, "abc"); - ABTS_INT_EQUAL(tc, 3, apr_table_elts(t)->nelts); + ABTS_INT_EQUAL(tc, 3, fspr_table_elts(t)->nelts); } static void table_clear(abts_case *tc, void *data) { - apr_table_clear(t1); - ABTS_INT_EQUAL(tc, 0, apr_table_elts(t1)->nelts); + fspr_table_clear(t1); + ABTS_INT_EQUAL(tc, 0, fspr_table_elts(t1)->nelts); } static void table_unset(abts_case *tc, void *data) { const char *val; - apr_table_t *t = apr_table_make(p, 1); + fspr_table_t *t = fspr_table_make(p, 1); - apr_table_set(t, "a", "1"); - apr_table_set(t, "b", "2"); - apr_table_unset(t, "b"); - ABTS_INT_EQUAL(tc, 1, apr_table_elts(t)->nelts); - val = apr_table_get(t, "a"); + fspr_table_set(t, "a", "1"); + fspr_table_set(t, "b", "2"); + fspr_table_unset(t, "b"); + ABTS_INT_EQUAL(tc, 1, fspr_table_elts(t)->nelts); + val = fspr_table_get(t, "a"); ABTS_STR_EQUAL(tc, val, "1"); - val = apr_table_get(t, "b"); + val = fspr_table_get(t, "b"); ABTS_PTR_EQUAL(tc, (void *)val, (void *)NULL); } static void table_overlap(abts_case *tc, void *data) { const char *val; - apr_table_t *t1 = apr_table_make(p, 1); - apr_table_t *t2 = apr_table_make(p, 1); - - apr_table_addn(t1, "a", "0"); - apr_table_addn(t1, "g", "7"); - apr_table_addn(t2, "a", "1"); - apr_table_addn(t2, "b", "2"); - apr_table_addn(t2, "c", "3"); - apr_table_addn(t2, "b", "2.0"); - apr_table_addn(t2, "d", "4"); - apr_table_addn(t2, "e", "5"); - apr_table_addn(t2, "b", "2."); - apr_table_addn(t2, "f", "6"); - apr_table_overlap(t1, t2, APR_OVERLAP_TABLES_SET); + fspr_table_t *t1 = fspr_table_make(p, 1); + fspr_table_t *t2 = fspr_table_make(p, 1); + + fspr_table_addn(t1, "a", "0"); + fspr_table_addn(t1, "g", "7"); + fspr_table_addn(t2, "a", "1"); + fspr_table_addn(t2, "b", "2"); + fspr_table_addn(t2, "c", "3"); + fspr_table_addn(t2, "b", "2.0"); + fspr_table_addn(t2, "d", "4"); + fspr_table_addn(t2, "e", "5"); + fspr_table_addn(t2, "b", "2."); + fspr_table_addn(t2, "f", "6"); + fspr_table_overlap(t1, t2, APR_OVERLAP_TABLES_SET); - ABTS_INT_EQUAL(tc, apr_table_elts(t1)->nelts, 7); - val = apr_table_get(t1, "a"); + ABTS_INT_EQUAL(tc, fspr_table_elts(t1)->nelts, 7); + val = fspr_table_get(t1, "a"); ABTS_STR_EQUAL(tc, val, "1"); - val = apr_table_get(t1, "b"); + val = fspr_table_get(t1, "b"); ABTS_STR_EQUAL(tc, val, "2."); - val = apr_table_get(t1, "c"); + val = fspr_table_get(t1, "c"); ABTS_STR_EQUAL(tc, val, "3"); - val = apr_table_get(t1, "d"); + val = fspr_table_get(t1, "d"); ABTS_STR_EQUAL(tc, val, "4"); - val = apr_table_get(t1, "e"); + val = fspr_table_get(t1, "e"); ABTS_STR_EQUAL(tc, val, "5"); - val = apr_table_get(t1, "f"); + val = fspr_table_get(t1, "f"); ABTS_STR_EQUAL(tc, val, "6"); - val = apr_table_get(t1, "g"); + val = fspr_table_get(t1, "g"); ABTS_STR_EQUAL(tc, val, "7"); } static void table_overlap2(abts_case *tc, void *data) { - apr_pool_t *subp; - apr_table_t *t1, *t2; + fspr_pool_t *subp; + fspr_table_t *t1, *t2; - apr_pool_create(&subp, p); + fspr_pool_create(&subp, p); - t1 = apr_table_make(subp, 1); - t2 = apr_table_make(p, 1); - apr_table_addn(t1, "t1", "one"); - apr_table_addn(t2, "t2", "two"); + t1 = fspr_table_make(subp, 1); + t2 = fspr_table_make(p, 1); + fspr_table_addn(t1, "t1", "one"); + fspr_table_addn(t2, "t2", "two"); - apr_table_overlap(t1, t2, APR_OVERLAP_TABLES_SET); + fspr_table_overlap(t1, t2, APR_OVERLAP_TABLES_SET); - ABTS_INT_EQUAL(tc, 2, apr_table_elts(t1)->nelts); + ABTS_INT_EQUAL(tc, 2, fspr_table_elts(t1)->nelts); - ABTS_STR_EQUAL(tc, apr_table_get(t1, "t1"), "one"); - ABTS_STR_EQUAL(tc, apr_table_get(t1, "t2"), "two"); + ABTS_STR_EQUAL(tc, fspr_table_get(t1, "t1"), "one"); + ABTS_STR_EQUAL(tc, fspr_table_get(t1, "t2"), "two"); } diff --git a/libs/apr/test/testtemp.c b/libs/apr/test/testtemp.c index 1f1143ee359..6d94c193e91 100644 --- a/libs/apr/test/testtemp.c +++ b/libs/apr/test/testtemp.c @@ -15,31 +15,31 @@ */ #include "testutil.h" -#include "apr_file_io.h" -#include "apr_strings.h" +#include "fspr_file_io.h" +#include "fspr_strings.h" static void test_temp_dir(abts_case *tc, void *data) { const char *tempdir = NULL; - apr_status_t rv; + fspr_status_t rv; - rv = apr_temp_dir_get(&tempdir, p); + rv = fspr_temp_dir_get(&tempdir, p); APR_ASSERT_SUCCESS(tc, "Error finding Temporary Directory", rv); ABTS_PTR_NOTNULL(tc, tempdir); } static void test_mktemp(abts_case *tc, void *data) { - apr_file_t *f = NULL; + fspr_file_t *f = NULL; const char *tempdir = NULL; char *filetemplate; - apr_status_t rv; + fspr_status_t rv; - rv = apr_temp_dir_get(&tempdir, p); + rv = fspr_temp_dir_get(&tempdir, p); APR_ASSERT_SUCCESS(tc, "Error finding Temporary Directory", rv); - filetemplate = apr_pstrcat(p, tempdir, "/tempfileXXXXXX", NULL); - rv = apr_file_mktemp(&f, filetemplate, 0, p); + filetemplate = fspr_pstrcat(p, tempdir, "/tempfileXXXXXX", NULL); + rv = fspr_file_mktemp(&f, filetemplate, 0, p); APR_ASSERT_SUCCESS(tc, "Error opening Temporary file", rv); } diff --git a/libs/apr/test/testthread.c b/libs/apr/test/testthread.c index 35ef293bec2..a5709aac744 100644 --- a/libs/apr/test/testthread.c +++ b/libs/apr/test/testthread.c @@ -14,84 +14,84 @@ * limitations under the License. */ -#include "apr_thread_proc.h" -#include "apr_errno.h" -#include "apr_general.h" +#include "fspr_thread_proc.h" +#include "fspr_errno.h" +#include "fspr_general.h" #include "errno.h" -#include "apr_time.h" +#include "fspr_time.h" #include "testutil.h" #if APR_HAS_THREADS -static apr_thread_mutex_t *thread_lock; -static apr_thread_once_t *control = NULL; +static fspr_thread_mutex_t *thread_lock; +static fspr_thread_once_t *control = NULL; static int x = 0; static int value = 0; -static apr_thread_t *t1; -static apr_thread_t *t2; -static apr_thread_t *t3; -static apr_thread_t *t4; +static fspr_thread_t *t1; +static fspr_thread_t *t2; +static fspr_thread_t *t3; +static fspr_thread_t *t4; /* just some made up number to check on later */ -static apr_status_t exit_ret_val = 123; +static fspr_status_t exit_ret_val = 123; static void init_func(void) { value++; } -static void * APR_THREAD_FUNC thread_func1(apr_thread_t *thd, void *data) +static void * APR_THREAD_FUNC thread_func1(fspr_thread_t *thd, void *data) { int i; - apr_thread_once(control, init_func); + fspr_thread_once(control, init_func); for (i = 0; i < 10000; i++) { - apr_thread_mutex_lock(thread_lock); + fspr_thread_mutex_lock(thread_lock); x++; - apr_thread_mutex_unlock(thread_lock); + fspr_thread_mutex_unlock(thread_lock); } - apr_thread_exit(thd, exit_ret_val); + fspr_thread_exit(thd, exit_ret_val); return NULL; } static void thread_init(abts_case *tc, void *data) { - apr_status_t rv; + fspr_status_t rv; - rv = apr_thread_once_init(&control, p); + rv = fspr_thread_once_init(&control, p); ABTS_INT_EQUAL(tc, APR_SUCCESS, rv); - rv = apr_thread_mutex_create(&thread_lock, APR_THREAD_MUTEX_DEFAULT, p); + rv = fspr_thread_mutex_create(&thread_lock, APR_THREAD_MUTEX_DEFAULT, p); ABTS_INT_EQUAL(tc, APR_SUCCESS, rv); } static void create_threads(abts_case *tc, void *data) { - apr_status_t rv; + fspr_status_t rv; - rv = apr_thread_create(&t1, NULL, thread_func1, NULL, p); + rv = fspr_thread_create(&t1, NULL, thread_func1, NULL, p); ABTS_INT_EQUAL(tc, APR_SUCCESS, rv); - rv = apr_thread_create(&t2, NULL, thread_func1, NULL, p); + rv = fspr_thread_create(&t2, NULL, thread_func1, NULL, p); ABTS_INT_EQUAL(tc, APR_SUCCESS, rv); - rv = apr_thread_create(&t3, NULL, thread_func1, NULL, p); + rv = fspr_thread_create(&t3, NULL, thread_func1, NULL, p); ABTS_INT_EQUAL(tc, APR_SUCCESS, rv); - rv = apr_thread_create(&t4, NULL, thread_func1, NULL, p); + rv = fspr_thread_create(&t4, NULL, thread_func1, NULL, p); ABTS_INT_EQUAL(tc, APR_SUCCESS, rv); } static void join_threads(abts_case *tc, void *data) { - apr_status_t s; + fspr_status_t s; - apr_thread_join(&s, t1); + fspr_thread_join(&s, t1); ABTS_INT_EQUAL(tc, exit_ret_val, s); - apr_thread_join(&s, t2); + fspr_thread_join(&s, t2); ABTS_INT_EQUAL(tc, exit_ret_val, s); - apr_thread_join(&s, t3); + fspr_thread_join(&s, t3); ABTS_INT_EQUAL(tc, exit_ret_val, s); - apr_thread_join(&s, t4); + fspr_thread_join(&s, t4); ABTS_INT_EQUAL(tc, exit_ret_val, s); } diff --git a/libs/apr/test/testtime.c b/libs/apr/test/testtime.c index 84b47726956..2922d095d69 100644 --- a/libs/apr/test/testtime.c +++ b/libs/apr/test/testtime.c @@ -14,12 +14,12 @@ * limitations under the License. */ -#include "apr_time.h" -#include "apr_errno.h" -#include "apr_general.h" -#include "apr_lib.h" +#include "fspr_time.h" +#include "fspr_errno.h" +#include "fspr_general.h" +#include "fspr_lib.h" #include "testutil.h" -#include "apr_strings.h" +#include "fspr_strings.h" #include #define STR_SIZE 45 @@ -30,11 +30,11 @@ * 2002-08-14 12:05:36.186711 -25200 [257 Sat]. * Which happens to be when I wrote the new tests. */ -static apr_time_t now = APR_INT64_C(1032030336186711); +static fspr_time_t now = APR_INT64_C(1032030336186711); -static char* print_time (apr_pool_t *pool, const apr_time_exp_t *xt) +static char* print_time (fspr_pool_t *pool, const fspr_time_exp_t *xt) { - return apr_psprintf (pool, + return fspr_psprintf (pool, "%04d-%02d-%02d %02d:%02d:%02d.%06d %+05d [%d %s]%s", xt->tm_year + 1900, xt->tm_mon, @@ -45,18 +45,18 @@ static char* print_time (apr_pool_t *pool, const apr_time_exp_t *xt) xt->tm_usec, xt->tm_gmtoff, xt->tm_yday + 1, - apr_day_snames[xt->tm_wday], + fspr_day_snames[xt->tm_wday], (xt->tm_isdst ? " DST" : "")); } static void test_now(abts_case *tc, void *data) { - apr_time_t timediff; - apr_time_t current; + fspr_time_t timediff; + fspr_time_t current; time_t os_now; - current = apr_time_now(); + current = fspr_time_now(); time(&os_now); timediff = os_now - (current / APR_USEC_PER_SEC); @@ -64,18 +64,18 @@ static void test_now(abts_case *tc, void *data) * that the time will be slightly off, so accept anything between -1 and * 1 second. */ - ABTS_ASSERT(tc, "apr_time and OS time do not agree", + ABTS_ASSERT(tc, "fspr_time and OS time do not agree", (timediff > -2) && (timediff < 2)); } static void test_gmtstr(abts_case *tc, void *data) { - apr_status_t rv; - apr_time_exp_t xt; + fspr_status_t rv; + fspr_time_exp_t xt; - rv = apr_time_exp_gmt(&xt, now); + rv = fspr_time_exp_gmt(&xt, now); if (rv == APR_ENOTIMPL) { - ABTS_NOT_IMPL(tc, "apr_time_exp_gmt"); + ABTS_NOT_IMPL(tc, "fspr_time_exp_gmt"); } ABTS_TRUE(tc, rv == APR_SUCCESS); ABTS_STR_EQUAL(tc, "2002-08-14 19:05:36.186711 +0000 [257 Sat]", @@ -84,14 +84,14 @@ static void test_gmtstr(abts_case *tc, void *data) static void test_exp_lt(abts_case *tc, void *data) { - apr_status_t rv; - apr_time_exp_t xt; - time_t posix_secs = (time_t)apr_time_sec(now); + fspr_status_t rv; + fspr_time_exp_t xt; + time_t posix_secs = (time_t)fspr_time_sec(now); struct tm *posix_exp = localtime(&posix_secs); - rv = apr_time_exp_lt(&xt, now); + rv = fspr_time_exp_lt(&xt, now); if (rv == APR_ENOTIMPL) { - ABTS_NOT_IMPL(tc, "apr_time_exp_lt"); + ABTS_NOT_IMPL(tc, "fspr_time_exp_lt"); } ABTS_TRUE(tc, rv == APR_SUCCESS); @@ -112,51 +112,51 @@ static void test_exp_lt(abts_case *tc, void *data) static void test_exp_get_gmt(abts_case *tc, void *data) { - apr_status_t rv; - apr_time_exp_t xt; - apr_time_t imp; - apr_int64_t hr_off_64; + fspr_status_t rv; + fspr_time_exp_t xt; + fspr_time_t imp; + fspr_int64_t hr_off_64; - rv = apr_time_exp_gmt(&xt, now); + rv = fspr_time_exp_gmt(&xt, now); ABTS_TRUE(tc, rv == APR_SUCCESS); - rv = apr_time_exp_get(&imp, &xt); + rv = fspr_time_exp_get(&imp, &xt); if (rv == APR_ENOTIMPL) { - ABTS_NOT_IMPL(tc, "apr_time_exp_get"); + ABTS_NOT_IMPL(tc, "fspr_time_exp_get"); } ABTS_TRUE(tc, rv == APR_SUCCESS); - hr_off_64 = (apr_int64_t) xt.tm_gmtoff * APR_USEC_PER_SEC; + hr_off_64 = (fspr_int64_t) xt.tm_gmtoff * APR_USEC_PER_SEC; ABTS_TRUE(tc, now + hr_off_64 == imp); } static void test_exp_get_lt(abts_case *tc, void *data) { - apr_status_t rv; - apr_time_exp_t xt; - apr_time_t imp; - apr_int64_t hr_off_64; + fspr_status_t rv; + fspr_time_exp_t xt; + fspr_time_t imp; + fspr_int64_t hr_off_64; - rv = apr_time_exp_lt(&xt, now); + rv = fspr_time_exp_lt(&xt, now); ABTS_TRUE(tc, rv == APR_SUCCESS); - rv = apr_time_exp_get(&imp, &xt); + rv = fspr_time_exp_get(&imp, &xt); if (rv == APR_ENOTIMPL) { - ABTS_NOT_IMPL(tc, "apr_time_exp_get"); + ABTS_NOT_IMPL(tc, "fspr_time_exp_get"); } ABTS_TRUE(tc, rv == APR_SUCCESS); - hr_off_64 = (apr_int64_t) xt.tm_gmtoff * APR_USEC_PER_SEC; + hr_off_64 = (fspr_int64_t) xt.tm_gmtoff * APR_USEC_PER_SEC; ABTS_TRUE(tc, now + hr_off_64 == imp); } static void test_imp_gmt(abts_case *tc, void *data) { - apr_status_t rv; - apr_time_exp_t xt; - apr_time_t imp; + fspr_status_t rv; + fspr_time_exp_t xt; + fspr_time_t imp; - rv = apr_time_exp_gmt(&xt, now); + rv = fspr_time_exp_gmt(&xt, now); ABTS_TRUE(tc, rv == APR_SUCCESS); - rv = apr_time_exp_gmt_get(&imp, &xt); + rv = fspr_time_exp_gmt_get(&imp, &xt); if (rv == APR_ENOTIMPL) { - ABTS_NOT_IMPL(tc, "apr_time_exp_gmt_get"); + ABTS_NOT_IMPL(tc, "fspr_time_exp_gmt_get"); } ABTS_TRUE(tc, rv == APR_SUCCESS); ABTS_TRUE(tc, now == imp); @@ -164,12 +164,12 @@ static void test_imp_gmt(abts_case *tc, void *data) static void test_rfcstr(abts_case *tc, void *data) { - apr_status_t rv; + fspr_status_t rv; char str[STR_SIZE]; - rv = apr_rfc822_date(str, now); + rv = fspr_rfc822_date(str, now); if (rv == APR_ENOTIMPL) { - ABTS_NOT_IMPL(tc, "apr_rfc822_date"); + ABTS_NOT_IMPL(tc, "fspr_rfc822_date"); } ABTS_TRUE(tc, rv == APR_SUCCESS); ABTS_STR_EQUAL(tc, "Sat, 14 Sep 2002 19:05:36 GMT", str); @@ -177,35 +177,35 @@ static void test_rfcstr(abts_case *tc, void *data) static void test_ctime(abts_case *tc, void *data) { - apr_status_t rv; - char apr_str[STR_SIZE]; + fspr_status_t rv; + char fspr_str[STR_SIZE]; char libc_str[STR_SIZE]; - apr_time_t now_sec = apr_time_sec(now); + fspr_time_t now_sec = fspr_time_sec(now); time_t posix_sec = (time_t) now_sec; - rv = apr_ctime(apr_str, now); + rv = fspr_ctime(fspr_str, now); if (rv == APR_ENOTIMPL) { - ABTS_NOT_IMPL(tc, "apr_ctime"); + ABTS_NOT_IMPL(tc, "fspr_ctime"); } ABTS_TRUE(tc, rv == APR_SUCCESS); strcpy(libc_str, ctime(&posix_sec)); *strchr(libc_str, '\n') = '\0'; - ABTS_STR_EQUAL(tc, libc_str, apr_str); + ABTS_STR_EQUAL(tc, libc_str, fspr_str); } static void test_strftime(abts_case *tc, void *data) { - apr_status_t rv; - apr_time_exp_t xt; + fspr_status_t rv; + fspr_time_exp_t xt; char *str = NULL; - apr_size_t sz; + fspr_size_t sz; - rv = apr_time_exp_gmt(&xt, now); - str = apr_palloc(p, STR_SIZE + 1); - rv = apr_strftime(str, &sz, STR_SIZE, "%R %A %d %B %Y", &xt); + rv = fspr_time_exp_gmt(&xt, now); + str = fspr_palloc(p, STR_SIZE + 1); + rv = fspr_strftime(str, &sz, STR_SIZE, "%R %A %d %B %Y", &xt); if (rv == APR_ENOTIMPL) { - ABTS_NOT_IMPL(tc, "apr_strftime"); + ABTS_NOT_IMPL(tc, "fspr_strftime"); } ABTS_TRUE(tc, rv == APR_SUCCESS); ABTS_STR_EQUAL(tc, "19:05 Saturday 14 September 2002", str); @@ -213,15 +213,15 @@ static void test_strftime(abts_case *tc, void *data) static void test_strftimesmall(abts_case *tc, void *data) { - apr_status_t rv; - apr_time_exp_t xt; + fspr_status_t rv; + fspr_time_exp_t xt; char str[STR_SIZE]; - apr_size_t sz; + fspr_size_t sz; - rv = apr_time_exp_gmt(&xt, now); - rv = apr_strftime(str, &sz, STR_SIZE, "%T", &xt); + rv = fspr_time_exp_gmt(&xt, now); + rv = fspr_strftime(str, &sz, STR_SIZE, "%T", &xt); if (rv == APR_ENOTIMPL) { - ABTS_NOT_IMPL(tc, "apr_strftime"); + ABTS_NOT_IMPL(tc, "fspr_strftime"); } ABTS_TRUE(tc, rv == APR_SUCCESS); ABTS_STR_EQUAL(tc, "19:05:36", str); @@ -229,13 +229,13 @@ static void test_strftimesmall(abts_case *tc, void *data) static void test_exp_tz(abts_case *tc, void *data) { - apr_status_t rv; - apr_time_exp_t xt; - apr_int32_t hr_off = -5 * 3600; /* 5 hours in seconds */ + fspr_status_t rv; + fspr_time_exp_t xt; + fspr_int32_t hr_off = -5 * 3600; /* 5 hours in seconds */ - rv = apr_time_exp_tz(&xt, now, hr_off); + rv = fspr_time_exp_tz(&xt, now, hr_off); if (rv == APR_ENOTIMPL) { - ABTS_NOT_IMPL(tc, "apr_time_exp_tz"); + ABTS_NOT_IMPL(tc, "fspr_time_exp_tz"); } ABTS_TRUE(tc, rv == APR_SUCCESS); ABTS_TRUE(tc, (xt.tm_usec == 186711) && @@ -251,16 +251,16 @@ static void test_exp_tz(abts_case *tc, void *data) static void test_strftimeoffset(abts_case *tc, void *data) { - apr_status_t rv; - apr_time_exp_t xt; + fspr_status_t rv; + fspr_time_exp_t xt; char str[STR_SIZE]; - apr_size_t sz; - apr_int32_t hr_off = -5 * 3600; /* 5 hours in seconds */ + fspr_size_t sz; + fspr_int32_t hr_off = -5 * 3600; /* 5 hours in seconds */ - apr_time_exp_tz(&xt, now, hr_off); - rv = apr_strftime(str, &sz, STR_SIZE, "%T", &xt); + fspr_time_exp_tz(&xt, now, hr_off); + rv = fspr_strftime(str, &sz, STR_SIZE, "%T", &xt); if (rv == APR_ENOTIMPL) { - ABTS_NOT_IMPL(tc, "apr_strftime"); + ABTS_NOT_IMPL(tc, "fspr_strftime"); } ABTS_TRUE(tc, rv == APR_SUCCESS); } @@ -268,8 +268,8 @@ static void test_strftimeoffset(abts_case *tc, void *data) /* 0.9.4 and earlier rejected valid dates in 2038 */ static void test_2038(abts_case *tc, void *data) { - apr_time_exp_t xt; - apr_time_t t; + fspr_time_exp_t xt; + fspr_time_t t; /* 2038-01-19T03:14:07.000000Z */ xt.tm_year = 138; @@ -280,7 +280,7 @@ static void test_2038(abts_case *tc, void *data) xt.tm_sec = 7; APR_ASSERT_SUCCESS(tc, "explode January 19th, 2038", - apr_time_exp_get(&t, &xt)); + fspr_time_exp_get(&t, &xt)); } abts_suite *testtime(abts_suite *suite) diff --git a/libs/apr/test/testud.c b/libs/apr/test/testud.c index 77cd28faa99..22f30787cf0 100644 --- a/libs/apr/test/testud.c +++ b/libs/apr/test/testud.c @@ -16,18 +16,18 @@ #include #include -#include "apr_file_io.h" -#include "apr_errno.h" -#include "apr_general.h" -#include "apr_lib.h" -#include "apr_strings.h" +#include "fspr_file_io.h" +#include "fspr_errno.h" +#include "fspr_general.h" +#include "fspr_lib.h" +#include "fspr_strings.h" #include "testutil.h" -static apr_pool_t *pool; +static fspr_pool_t *pool; static char *testdata; static int cleanup_called = 0; -static apr_status_t string_cleanup(void *data) +static fspr_status_t string_cleanup(void *data) { cleanup_called = 1; return APR_SUCCESS; @@ -35,38 +35,38 @@ static apr_status_t string_cleanup(void *data) static void set_userdata(abts_case *tc, void *data) { - apr_status_t rv; + fspr_status_t rv; - rv = apr_pool_userdata_set(testdata, "TEST", string_cleanup, pool); + rv = fspr_pool_userdata_set(testdata, "TEST", string_cleanup, pool); ABTS_INT_EQUAL(tc, rv, APR_SUCCESS); } static void get_userdata(abts_case *tc, void *data) { - apr_status_t rv; + fspr_status_t rv; void *retdata; - rv = apr_pool_userdata_get(&retdata, "TEST", pool); + rv = fspr_pool_userdata_get(&retdata, "TEST", pool); ABTS_INT_EQUAL(tc, rv, APR_SUCCESS); ABTS_STR_EQUAL(tc, retdata, testdata); } static void get_nonexistkey(abts_case *tc, void *data) { - apr_status_t rv; + fspr_status_t rv; void *retdata; - rv = apr_pool_userdata_get(&retdata, "DOESNTEXIST", pool); + rv = fspr_pool_userdata_get(&retdata, "DOESNTEXIST", pool); ABTS_INT_EQUAL(tc, rv, APR_SUCCESS); ABTS_PTR_EQUAL(tc, retdata, NULL); } static void post_pool_clear(abts_case *tc, void *data) { - apr_status_t rv; + fspr_status_t rv; void *retdata; - rv = apr_pool_userdata_get(&retdata, "DOESNTEXIST", pool); + rv = fspr_pool_userdata_get(&retdata, "DOESNTEXIST", pool); ABTS_INT_EQUAL(tc, rv, APR_SUCCESS); ABTS_PTR_EQUAL(tc, retdata, NULL); } @@ -75,14 +75,14 @@ abts_suite *testud(abts_suite *suite) { suite = ADD_SUITE(suite) - apr_pool_create(&pool, p); - testdata = apr_pstrdup(pool, "This is a test\n"); + fspr_pool_create(&pool, p); + testdata = fspr_pstrdup(pool, "This is a test\n"); abts_run_test(suite, set_userdata, NULL); abts_run_test(suite, get_userdata, NULL); abts_run_test(suite, get_nonexistkey, NULL); - apr_pool_clear(pool); + fspr_pool_clear(pool); abts_run_test(suite, post_pool_clear, NULL); diff --git a/libs/apr/test/testuser.c b/libs/apr/test/testuser.c index 834abaf3a78..49f285b8390 100644 --- a/libs/apr/test/testuser.c +++ b/libs/apr/test/testuser.c @@ -15,59 +15,59 @@ */ #include "testutil.h" -#include "apr_errno.h" -#include "apr_general.h" -#include "apr_user.h" +#include "fspr_errno.h" +#include "fspr_general.h" +#include "fspr_user.h" #if APR_HAS_USER static void uid_current(abts_case *tc, void *data) { - apr_uid_t uid; - apr_gid_t gid; + fspr_uid_t uid; + fspr_gid_t gid; - APR_ASSERT_SUCCESS(tc, "apr_uid_current failed", - apr_uid_current(&uid, &gid, p)); + APR_ASSERT_SUCCESS(tc, "fspr_uid_current failed", + fspr_uid_current(&uid, &gid, p)); } static void username(abts_case *tc, void *data) { - apr_uid_t uid; - apr_gid_t gid; - apr_uid_t retreived_uid; - apr_gid_t retreived_gid; + fspr_uid_t uid; + fspr_gid_t gid; + fspr_uid_t retreived_uid; + fspr_gid_t retreived_gid; char *uname = NULL; - APR_ASSERT_SUCCESS(tc, "apr_uid_current failed", - apr_uid_current(&uid, &gid, p)); + APR_ASSERT_SUCCESS(tc, "fspr_uid_current failed", + fspr_uid_current(&uid, &gid, p)); - APR_ASSERT_SUCCESS(tc, "apr_uid_name_get failed", - apr_uid_name_get(&uname, uid, p)); + APR_ASSERT_SUCCESS(tc, "fspr_uid_name_get failed", + fspr_uid_name_get(&uname, uid, p)); ABTS_PTR_NOTNULL(tc, uname); - APR_ASSERT_SUCCESS(tc, "apr_uid_get failed", - apr_uid_get(&retreived_uid, &retreived_gid, uname, p)); + APR_ASSERT_SUCCESS(tc, "fspr_uid_get failed", + fspr_uid_get(&retreived_uid, &retreived_gid, uname, p)); - APR_ASSERT_SUCCESS(tc, "apr_uid_compare failed", - apr_uid_compare(uid, retreived_uid)); + APR_ASSERT_SUCCESS(tc, "fspr_uid_compare failed", + fspr_uid_compare(uid, retreived_uid)); #ifdef WIN32 /* ### this fudge was added for Win32 but makes the test return NotImpl * on Unix if run as root, when !gid is also true. */ if (!gid || !retreived_gid) { /* The function had no way to recover the gid (this would have been - * an ENOTIMPL if apr_uid_ functions didn't try to double-up and - * also return apr_gid_t values, which was bogus. + * an ENOTIMPL if fspr_uid_ functions didn't try to double-up and + * also return fspr_gid_t values, which was bogus. */ if (!gid) { - ABTS_NOT_IMPL(tc, "Groups from apr_uid_current"); + ABTS_NOT_IMPL(tc, "Groups from fspr_uid_current"); } else { - ABTS_NOT_IMPL(tc, "Groups from apr_uid_get"); + ABTS_NOT_IMPL(tc, "Groups from fspr_uid_get"); } } else { #endif - APR_ASSERT_SUCCESS(tc, "apr_gid_compare failed", - apr_gid_compare(gid, retreived_gid)); + APR_ASSERT_SUCCESS(tc, "fspr_gid_compare failed", + fspr_gid_compare(gid, retreived_gid)); #ifdef WIN32 } #endif @@ -75,67 +75,67 @@ static void username(abts_case *tc, void *data) static void groupname(abts_case *tc, void *data) { - apr_uid_t uid; - apr_gid_t gid; - apr_gid_t retreived_gid; + fspr_uid_t uid; + fspr_gid_t gid; + fspr_gid_t retreived_gid; char *gname = NULL; - APR_ASSERT_SUCCESS(tc, "apr_uid_current failed", - apr_uid_current(&uid, &gid, p)); + APR_ASSERT_SUCCESS(tc, "fspr_uid_current failed", + fspr_uid_current(&uid, &gid, p)); - APR_ASSERT_SUCCESS(tc, "apr_gid_name_get failed", - apr_gid_name_get(&gname, gid, p)); + APR_ASSERT_SUCCESS(tc, "fspr_gid_name_get failed", + fspr_gid_name_get(&gname, gid, p)); ABTS_PTR_NOTNULL(tc, gname); - APR_ASSERT_SUCCESS(tc, "apr_gid_get failed", - apr_gid_get(&retreived_gid, gname, p)); + APR_ASSERT_SUCCESS(tc, "fspr_gid_get failed", + fspr_gid_get(&retreived_gid, gname, p)); - APR_ASSERT_SUCCESS(tc, "apr_gid_compare failed", - apr_gid_compare(gid, retreived_gid)); + APR_ASSERT_SUCCESS(tc, "fspr_gid_compare failed", + fspr_gid_compare(gid, retreived_gid)); } #ifndef WIN32 static void fail_userinfo(abts_case *tc, void *data) { - apr_uid_t uid; - apr_gid_t gid; - apr_status_t rv; + fspr_uid_t uid; + fspr_gid_t gid; + fspr_status_t rv; char *tmp; errno = 0; gid = uid = 9999999; tmp = NULL; - rv = apr_uid_name_get(&tmp, uid, p); - ABTS_ASSERT(tc, "apr_uid_name_get should fail or " + rv = fspr_uid_name_get(&tmp, uid, p); + ABTS_ASSERT(tc, "fspr_uid_name_get should fail or " "return a user name", rv != APR_SUCCESS || tmp != NULL); errno = 0; tmp = NULL; - rv = apr_gid_name_get(&tmp, gid, p); - ABTS_ASSERT(tc, "apr_gid_name_get should fail or " + rv = fspr_gid_name_get(&tmp, gid, p); + ABTS_ASSERT(tc, "fspr_gid_name_get should fail or " "return a group name", rv != APR_SUCCESS || tmp != NULL); gid = 424242; errno = 0; - rv = apr_gid_get(&gid, "I_AM_NOT_A_GROUP", p); - ABTS_ASSERT(tc, "apr_gid_get should fail or " + rv = fspr_gid_get(&gid, "I_AM_NOT_A_GROUP", p); + ABTS_ASSERT(tc, "fspr_gid_get should fail or " "set a group number", rv != APR_SUCCESS || gid == 424242); gid = uid = 424242; errno = 0; - rv = apr_uid_get(&uid, &gid, "I_AM_NOT_A_USER", p); - ABTS_ASSERT(tc, "apr_gid_get should fail or " + rv = fspr_uid_get(&uid, &gid, "I_AM_NOT_A_USER", p); + ABTS_ASSERT(tc, "fspr_gid_get should fail or " "set a user and group number", rv != APR_SUCCESS || uid == 424242 || gid == 4242442); errno = 0; tmp = NULL; - rv = apr_uid_homepath_get(&tmp, "I_AM_NOT_A_USER", p); - ABTS_ASSERT(tc, "apr_uid_homepath_get should fail or " + rv = fspr_uid_homepath_get(&tmp, "I_AM_NOT_A_USER", p); + ABTS_ASSERT(tc, "fspr_uid_homepath_get should fail or " "set a path name", rv != APR_SUCCESS || tmp != NULL); } diff --git a/libs/apr/test/testutil.c b/libs/apr/test/testutil.c index c433e92c398..2b094cc8ec0 100644 --- a/libs/apr/test/testutil.c +++ b/libs/apr/test/testutil.c @@ -19,11 +19,11 @@ #include "abts.h" #include "testutil.h" -#include "apr_pools.h" +#include "fspr_pools.h" -apr_pool_t *p; +fspr_pool_t *p; -void apr_assert_success(abts_case* tc, const char* context, apr_status_t rv, +void fspr_assert_success(abts_case* tc, const char* context, fspr_status_t rv, int lineno) { if (rv == APR_ENOTIMPL) { @@ -31,14 +31,14 @@ void apr_assert_success(abts_case* tc, const char* context, apr_status_t rv, } else if (rv != APR_SUCCESS) { char buf[STRING_MAX], ebuf[128]; sprintf(buf, "%s (%d): %s\n", context, rv, - apr_strerror(rv, ebuf, sizeof ebuf)); + fspr_strerror(rv, ebuf, sizeof ebuf)); abts_fail(tc, buf, lineno); } } void initialize(void) { - apr_initialize(); - atexit(apr_terminate); + fspr_initialize(); + atexit(fspr_terminate); - apr_pool_create(&p, NULL); + fspr_pool_create(&p, NULL); } diff --git a/libs/apr/test/testutil.h b/libs/apr/test/testutil.h index 96394c5eb03..9ad91824459 100644 --- a/libs/apr/test/testutil.h +++ b/libs/apr/test/testutil.h @@ -14,7 +14,7 @@ * limitations under the License. */ -#include "apr_pools.h" +#include "fspr_pools.h" #include "abts.h" #ifndef APR_TEST_UTIL @@ -35,14 +35,14 @@ * a bit more consistent... */ -extern apr_pool_t *p; +extern fspr_pool_t *p; /* Assert that RV is an APR_SUCCESS value; else fail giving strerror * for RV and CONTEXT message. */ -void apr_assert_success(abts_case* tc, const char *context, - apr_status_t rv, int lineno); +void fspr_assert_success(abts_case* tc, const char *context, + fspr_status_t rv, int lineno); #define APR_ASSERT_SUCCESS(tc, ctxt, rv) \ - apr_assert_success(tc, ctxt, rv, __LINE__) + fspr_assert_success(tc, ctxt, rv, __LINE__) void initialize(void); diff --git a/libs/apr/test/testvsn.c b/libs/apr/test/testvsn.c index dbc218a13fe..32ffafc95e6 100644 --- a/libs/apr/test/testvsn.c +++ b/libs/apr/test/testvsn.c @@ -17,13 +17,13 @@ #include #include "testutil.h" -#include "apr_version.h" -#include "apr_general.h" +#include "fspr_version.h" +#include "fspr_general.h" static void test_strings(abts_case *tc, void *data) { - ABTS_STR_EQUAL(tc, APR_VERSION_STRING, apr_version_string()); + ABTS_STR_EQUAL(tc, APR_VERSION_STRING, fspr_version_string()); } #ifdef APR_IS_DEV_VERSION @@ -34,9 +34,9 @@ static void test_strings(abts_case *tc, void *data) static void test_ints(abts_case *tc, void *data) { - apr_version_t vsn; + fspr_version_t vsn; - apr_version(&vsn); + fspr_version(&vsn); ABTS_INT_EQUAL(tc, APR_MAJOR_VERSION, vsn.major); ABTS_INT_EQUAL(tc, APR_MINOR_VERSION, vsn.minor); diff --git a/libs/apr/test/tryread.c b/libs/apr/test/tryread.c index 729f8e699b9..6ff6ce0399c 100644 --- a/libs/apr/test/tryread.c +++ b/libs/apr/test/tryread.c @@ -15,10 +15,10 @@ */ #include "testflock.h" -#include "apr_pools.h" -#include "apr_file_io.h" -#include "apr_general.h" -#include "apr.h" +#include "fspr_pools.h" +#include "fspr_file_io.h" +#include "fspr_general.h" +#include "fspr.h" #if APR_HAVE_STDLIB_H #include @@ -26,19 +26,19 @@ int main(int argc, const char * const *argv) { - apr_file_t *file; - apr_status_t status; - apr_pool_t *p; + fspr_file_t *file; + fspr_status_t status; + fspr_pool_t *p; - apr_initialize(); - apr_pool_create(&p, NULL); + fspr_initialize(); + fspr_pool_create(&p, NULL); - if (apr_file_open(&file, TESTFILE, APR_WRITE, APR_OS_DEFAULT, p) + if (fspr_file_open(&file, TESTFILE, APR_WRITE, APR_OS_DEFAULT, p) != APR_SUCCESS) { exit(UNEXPECTED_ERROR); } - status = apr_file_lock(file, APR_FLOCK_EXCLUSIVE | APR_FLOCK_NONBLOCK); + status = fspr_file_lock(file, APR_FLOCK_EXCLUSIVE | APR_FLOCK_NONBLOCK); if (status == APR_SUCCESS) { exit(SUCCESSFUL_READ); } diff --git a/libs/apr/threadproc/beos/apr_proc_stub.c b/libs/apr/threadproc/beos/fspr_proc_stub.c similarity index 100% rename from libs/apr/threadproc/beos/apr_proc_stub.c rename to libs/apr/threadproc/beos/fspr_proc_stub.c diff --git a/libs/apr/threadproc/beos/proc.c b/libs/apr/threadproc/beos/proc.c index 7af73036f52..fb2012e0652 100644 --- a/libs/apr/threadproc/beos/proc.c +++ b/libs/apr/threadproc/beos/proc.c @@ -14,8 +14,8 @@ * limitations under the License. */ -#include "apr_arch_threadproc.h" -#include "apr_strings.h" +#include "fspr_arch_threadproc.h" +#include "fspr_strings.h" struct send_pipe { int in; @@ -23,10 +23,10 @@ struct send_pipe { int err; }; -APR_DECLARE(apr_status_t) apr_procattr_create(apr_procattr_t **new, apr_pool_t *pool) +APR_DECLARE(fspr_status_t) fspr_procattr_create(fspr_procattr_t **new, fspr_pool_t *pool) { - (*new) = (apr_procattr_t *)apr_palloc(pool, - sizeof(apr_procattr_t)); + (*new) = (fspr_procattr_t *)fspr_palloc(pool, + sizeof(fspr_procattr_t)); if ((*new) == NULL) { return APR_ENOMEM; @@ -44,65 +44,65 @@ APR_DECLARE(apr_status_t) apr_procattr_create(apr_procattr_t **new, apr_pool_t * return APR_SUCCESS; } -APR_DECLARE(apr_status_t) apr_procattr_io_set(apr_procattr_t *attr, apr_int32_t in, - apr_int32_t out, apr_int32_t err) +APR_DECLARE(fspr_status_t) fspr_procattr_io_set(fspr_procattr_t *attr, fspr_int32_t in, + fspr_int32_t out, fspr_int32_t err) { - apr_status_t status; + fspr_status_t status; if (in != 0) { - if ((status = apr_file_pipe_create(&attr->child_in, &attr->parent_in, + if ((status = fspr_file_pipe_create(&attr->child_in, &attr->parent_in, attr->pool)) != APR_SUCCESS) { return status; } switch (in) { case APR_FULL_BLOCK: - apr_file_pipe_timeout_set(attr->child_in, -1); - apr_file_pipe_timeout_set(attr->parent_in, -1); + fspr_file_pipe_timeout_set(attr->child_in, -1); + fspr_file_pipe_timeout_set(attr->parent_in, -1); break; case APR_PARENT_BLOCK: - apr_file_pipe_timeout_set(attr->child_in, -1); + fspr_file_pipe_timeout_set(attr->child_in, -1); break; case APR_CHILD_BLOCK: - apr_file_pipe_timeout_set(attr->parent_in, -1); + fspr_file_pipe_timeout_set(attr->parent_in, -1); break; default: break; } } if (out) { - if ((status = apr_file_pipe_create(&attr->parent_out, &attr->child_out, + if ((status = fspr_file_pipe_create(&attr->parent_out, &attr->child_out, attr->pool)) != APR_SUCCESS) { return status; } switch (out) { case APR_FULL_BLOCK: - apr_file_pipe_timeout_set(attr->child_out, -1); - apr_file_pipe_timeout_set(attr->parent_out, -1); + fspr_file_pipe_timeout_set(attr->child_out, -1); + fspr_file_pipe_timeout_set(attr->parent_out, -1); break; case APR_PARENT_BLOCK: - apr_file_pipe_timeout_set(attr->child_out, -1); + fspr_file_pipe_timeout_set(attr->child_out, -1); break; case APR_CHILD_BLOCK: - apr_file_pipe_timeout_set(attr->parent_out, -1); + fspr_file_pipe_timeout_set(attr->parent_out, -1); break; default: break; } } if (err) { - if ((status = apr_file_pipe_create(&attr->parent_err, &attr->child_err, + if ((status = fspr_file_pipe_create(&attr->parent_err, &attr->child_err, attr->pool)) != APR_SUCCESS) { return status; } switch (err) { case APR_FULL_BLOCK: - apr_file_pipe_timeout_set(attr->child_err, -1); - apr_file_pipe_timeout_set(attr->parent_err, -1); + fspr_file_pipe_timeout_set(attr->child_err, -1); + fspr_file_pipe_timeout_set(attr->parent_err, -1); break; case APR_PARENT_BLOCK: - apr_file_pipe_timeout_set(attr->child_err, -1); + fspr_file_pipe_timeout_set(attr->child_err, -1); break; case APR_CHILD_BLOCK: - apr_file_pipe_timeout_set(attr->parent_err, -1); + fspr_file_pipe_timeout_set(attr->parent_err, -1); break; default: break; @@ -111,17 +111,17 @@ APR_DECLARE(apr_status_t) apr_procattr_io_set(apr_procattr_t *attr, apr_int32_t return APR_SUCCESS; } -APR_DECLARE(apr_status_t) apr_procattr_dir_set(apr_procattr_t *attr, +APR_DECLARE(fspr_status_t) fspr_procattr_dir_set(fspr_procattr_t *attr, const char *dir) { char * cwd; if (dir[0] != '/') { cwd = (char*)malloc(sizeof(char) * PATH_MAX); getcwd(cwd, PATH_MAX); - attr->currdir = (char *)apr_pstrcat(attr->pool, cwd, "/", dir, NULL); + attr->currdir = (char *)fspr_pstrcat(attr->pool, cwd, "/", dir, NULL); free(cwd); } else { - attr->currdir = (char *)apr_pstrdup(attr->pool, dir); + attr->currdir = (char *)fspr_pstrdup(attr->pool, dir); } if (attr->currdir) { return APR_SUCCESS; @@ -129,20 +129,20 @@ APR_DECLARE(apr_status_t) apr_procattr_dir_set(apr_procattr_t *attr, return APR_ENOMEM; } -APR_DECLARE(apr_status_t) apr_procattr_cmdtype_set(apr_procattr_t *attr, - apr_cmdtype_e cmd) +APR_DECLARE(fspr_status_t) fspr_procattr_cmdtype_set(fspr_procattr_t *attr, + fspr_cmdtype_e cmd) { attr->cmdtype = cmd; return APR_SUCCESS; } -APR_DECLARE(apr_status_t) apr_procattr_detach_set(apr_procattr_t *attr, apr_int32_t detach) +APR_DECLARE(fspr_status_t) fspr_procattr_detach_set(fspr_procattr_t *attr, fspr_int32_t detach) { attr->detached = detach; return APR_SUCCESS; } -APR_DECLARE(apr_status_t) apr_proc_fork(apr_proc_t *proc, apr_pool_t *pool) +APR_DECLARE(fspr_status_t) fspr_proc_fork(fspr_proc_t *proc, fspr_pool_t *pool) { int pid; @@ -195,32 +195,32 @@ APR_DECLARE(apr_status_t) apr_proc_fork(apr_proc_t *proc, apr_pool_t *pool) return APR_INPARENT; } -APR_DECLARE(apr_status_t) apr_procattr_child_errfn_set(apr_procattr_t *attr, - apr_child_errfn_t *errfn) +APR_DECLARE(fspr_status_t) fspr_procattr_child_errfn_set(fspr_procattr_t *attr, + fspr_child_errfn_t *errfn) { /* won't ever be called on this platform, so don't save the function pointer */ return APR_SUCCESS; } -APR_DECLARE(apr_status_t) apr_procattr_error_check_set(apr_procattr_t *attr, - apr_int32_t chk) +APR_DECLARE(fspr_status_t) fspr_procattr_error_check_set(fspr_procattr_t *attr, + fspr_int32_t chk) { /* won't ever be used on this platform, so don't save the flag */ return APR_SUCCESS; } -APR_DECLARE(apr_status_t) apr_procattr_addrspace_set(apr_procattr_t *attr, - apr_int32_t addrspace) +APR_DECLARE(fspr_status_t) fspr_procattr_addrspace_set(fspr_procattr_t *attr, + fspr_int32_t addrspace) { /* won't ever be used on this platform, so don't save the flag */ return APR_SUCCESS; } -APR_DECLARE(apr_status_t) apr_proc_create(apr_proc_t *new, const char *progname, +APR_DECLARE(fspr_status_t) fspr_proc_create(fspr_proc_t *new, const char *progname, const char * const *args, const char * const *env, - apr_procattr_t *attr, - apr_pool_t *pool) + fspr_procattr_t *attr, + fspr_pool_t *pool) { int i=0,nargs=0; char **newargs = NULL; @@ -228,7 +228,7 @@ APR_DECLARE(apr_status_t) apr_proc_create(apr_proc_t *new, const char *progname, struct send_pipe *sp; char * dir = NULL; - sp = (struct send_pipe *)apr_palloc(pool, sizeof(struct send_pipe)); + sp = (struct send_pipe *)fspr_palloc(pool, sizeof(struct send_pipe)); new->in = attr->parent_in; new->err = attr->parent_err; @@ -243,7 +243,7 @@ APR_DECLARE(apr_status_t) apr_proc_create(apr_proc_t *new, const char *progname, } newargs = (char**)malloc(sizeof(char *) * (i + 4)); - newargs[0] = strdup("/boot/home/config/bin/apr_proc_stub"); + newargs[0] = strdup("/boot/home/config/bin/fspr_proc_stub"); if (attr->currdir == NULL) { /* we require the directory , so use a temp. variable */ dir = malloc(sizeof(char) * PATH_MAX); @@ -278,13 +278,13 @@ APR_DECLARE(apr_status_t) apr_proc_create(apr_proc_t *new, const char *progname, resume_thread(newproc); if (attr->child_in) { - apr_file_close(attr->child_in); + fspr_file_close(attr->child_in); } if (attr->child_out) { - apr_file_close(attr->child_out); + fspr_file_close(attr->child_out); } if (attr->child_err) { - apr_file_close(attr->child_err); + fspr_file_close(attr->child_err); } send_data(newproc, 0, (void*)sp, sizeof(struct send_pipe)); @@ -298,26 +298,26 @@ APR_DECLARE(apr_status_t) apr_proc_create(apr_proc_t *new, const char *progname, return APR_SUCCESS; } -APR_DECLARE(apr_status_t) apr_proc_wait_all_procs(apr_proc_t *proc, +APR_DECLARE(fspr_status_t) fspr_proc_wait_all_procs(fspr_proc_t *proc, int *exitcode, - apr_exit_why_e *exitwhy, - apr_wait_how_e waithow, - apr_pool_t *p) + fspr_exit_why_e *exitwhy, + fspr_wait_how_e waithow, + fspr_pool_t *p) { proc->pid = -1; - return apr_proc_wait(proc, exitcode, exitwhy, waithow); + return fspr_proc_wait(proc, exitcode, exitwhy, waithow); } -APR_DECLARE(apr_status_t) apr_proc_wait(apr_proc_t *proc, +APR_DECLARE(fspr_status_t) fspr_proc_wait(fspr_proc_t *proc, int *exitcode, - apr_exit_why_e *exitwhy, - apr_wait_how_e waithow) + fspr_exit_why_e *exitwhy, + fspr_wait_how_e waithow) { pid_t pstatus; int waitpid_options = WUNTRACED; int exit_int; int ignore; - apr_exit_why_e ignorewhy; + fspr_exit_why_e ignorewhy; if (exitcode == NULL) { exitcode = &ignore; @@ -354,65 +354,65 @@ APR_DECLARE(apr_status_t) apr_proc_wait(apr_proc_t *proc, return errno; } -APR_DECLARE(apr_status_t) apr_procattr_child_in_set(apr_procattr_t *attr, apr_file_t *child_in, - apr_file_t *parent_in) +APR_DECLARE(fspr_status_t) fspr_procattr_child_in_set(fspr_procattr_t *attr, fspr_file_t *child_in, + fspr_file_t *parent_in) { if (attr->child_in == NULL && attr->parent_in == NULL) - apr_file_pipe_create(&attr->child_in, &attr->parent_in, attr->pool); + fspr_file_pipe_create(&attr->child_in, &attr->parent_in, attr->pool); if (child_in != NULL) - apr_file_dup(&attr->child_in, child_in, attr->pool); + fspr_file_dup(&attr->child_in, child_in, attr->pool); if (parent_in != NULL) - apr_file_dup(&attr->parent_in, parent_in, attr->pool); + fspr_file_dup(&attr->parent_in, parent_in, attr->pool); return APR_SUCCESS; } -APR_DECLARE(apr_status_t) apr_procattr_child_out_set(apr_procattr_t *attr, apr_file_t *child_out, - apr_file_t *parent_out) +APR_DECLARE(fspr_status_t) fspr_procattr_child_out_set(fspr_procattr_t *attr, fspr_file_t *child_out, + fspr_file_t *parent_out) { if (attr->child_out == NULL && attr->parent_out == NULL) - apr_file_pipe_create(&attr->child_out, &attr->parent_out, attr->pool); + fspr_file_pipe_create(&attr->child_out, &attr->parent_out, attr->pool); if (child_out != NULL) - apr_file_dup(&attr->child_out, child_out, attr->pool); + fspr_file_dup(&attr->child_out, child_out, attr->pool); if (parent_out != NULL) - apr_file_dup(&attr->parent_out, parent_out, attr->pool); + fspr_file_dup(&attr->parent_out, parent_out, attr->pool); return APR_SUCCESS; } -APR_DECLARE(apr_status_t) apr_procattr_child_err_set(apr_procattr_t *attr, apr_file_t *child_err, - apr_file_t *parent_err) +APR_DECLARE(fspr_status_t) fspr_procattr_child_err_set(fspr_procattr_t *attr, fspr_file_t *child_err, + fspr_file_t *parent_err) { if (attr->child_err == NULL && attr->parent_err == NULL) - apr_file_pipe_create(&attr->child_err, &attr->parent_err, attr->pool); + fspr_file_pipe_create(&attr->child_err, &attr->parent_err, attr->pool); if (child_err != NULL) - apr_file_dup(&attr->child_err, child_err, attr->pool); + fspr_file_dup(&attr->child_err, child_err, attr->pool); if (parent_err != NULL) - apr_file_dup(&attr->parent_err, parent_err, attr->pool); + fspr_file_dup(&attr->parent_err, parent_err, attr->pool); return APR_SUCCESS; } -APR_DECLARE(apr_status_t) apr_procattr_limit_set(apr_procattr_t *attr, apr_int32_t what, +APR_DECLARE(fspr_status_t) fspr_procattr_limit_set(fspr_procattr_t *attr, fspr_int32_t what, void *limit) { return APR_ENOTIMPL; } -APR_DECLARE(apr_status_t) apr_procattr_user_set(apr_procattr_t *attr, +APR_DECLARE(fspr_status_t) fspr_procattr_user_set(fspr_procattr_t *attr, const char *username, const char *password) { return APR_ENOTIMPL; } -APR_DECLARE(apr_status_t) apr_procattr_group_set(apr_procattr_t *attr, +APR_DECLARE(fspr_status_t) fspr_procattr_group_set(fspr_procattr_t *attr, const char *groupname) { return APR_ENOTIMPL; diff --git a/libs/apr/threadproc/beos/thread.c b/libs/apr/threadproc/beos/thread.c index 629c86def7f..79248cc0c5c 100644 --- a/libs/apr/threadproc/beos/thread.c +++ b/libs/apr/threadproc/beos/thread.c @@ -14,13 +14,13 @@ * limitations under the License. */ -#include "apr_arch_threadproc.h" -#include "apr_portable.h" +#include "fspr_arch_threadproc.h" +#include "fspr_portable.h" -APR_DECLARE(apr_status_t) apr_threadattr_create(apr_threadattr_t **new, apr_pool_t *pool) +APR_DECLARE(fspr_status_t) fspr_threadattr_create(fspr_threadattr_t **new, fspr_pool_t *pool) { - (*new) = (apr_threadattr_t *)apr_palloc(pool, - sizeof(apr_threadattr_t)); + (*new) = (fspr_threadattr_t *)fspr_palloc(pool, + sizeof(fspr_threadattr_t)); if ((*new) == NULL) { return APR_ENOMEM; @@ -32,7 +32,7 @@ APR_DECLARE(apr_status_t) apr_threadattr_create(apr_threadattr_t **new, apr_pool return APR_SUCCESS; } -APR_DECLARE(apr_status_t) apr_threadattr_detach_set(apr_threadattr_t *attr, apr_int32_t on) +APR_DECLARE(fspr_status_t) fspr_threadattr_detach_set(fspr_threadattr_t *attr, fspr_int32_t on) { if (on == 1){ attr->detached = 1; @@ -42,7 +42,7 @@ APR_DECLARE(apr_status_t) apr_threadattr_detach_set(apr_threadattr_t *attr, apr_ return APR_SUCCESS; } -APR_DECLARE(apr_status_t) apr_threadattr_detach_get(apr_threadattr_t *attr) +APR_DECLARE(fspr_status_t) fspr_threadattr_detach_get(fspr_threadattr_t *attr) { if (attr->detached == 1){ return APR_DETACH; @@ -50,32 +50,32 @@ APR_DECLARE(apr_status_t) apr_threadattr_detach_get(apr_threadattr_t *attr) return APR_NOTDETACH; } -APR_DECLARE(apr_status_t) apr_threadattr_stacksize_set(apr_threadattr_t *attr, - apr_size_t stacksize) +APR_DECLARE(fspr_status_t) fspr_threadattr_stacksize_set(fspr_threadattr_t *attr, + fspr_size_t stacksize) { return APR_ENOTIMPL; } -APR_DECLARE(apr_status_t) apr_threadattr_guardsize_set(apr_threadattr_t *attr, - apr_size_t size) +APR_DECLARE(fspr_status_t) fspr_threadattr_guardsize_set(fspr_threadattr_t *attr, + fspr_size_t size) { return APR_ENOTIMPL; } static void *dummy_worker(void *opaque) { - apr_thread_t *thd = (apr_thread_t*)opaque; + fspr_thread_t *thd = (fspr_thread_t*)opaque; return thd->func(thd, thd->data); } -APR_DECLARE(apr_status_t) apr_thread_create(apr_thread_t **new, apr_threadattr_t *attr, - apr_thread_start_t func, void *data, - apr_pool_t *pool) +APR_DECLARE(fspr_status_t) fspr_thread_create(fspr_thread_t **new, fspr_threadattr_t *attr, + fspr_thread_start_t func, void *data, + fspr_pool_t *pool) { int32 temp; - apr_status_t stat; + fspr_status_t stat; - (*new) = (apr_thread_t *)apr_palloc(pool, sizeof(apr_thread_t)); + (*new) = (fspr_thread_t *)fspr_palloc(pool, sizeof(fspr_thread_t)); if ((*new) == NULL) { return APR_ENOMEM; } @@ -91,7 +91,7 @@ APR_DECLARE(apr_status_t) apr_thread_create(apr_thread_t **new, apr_threadattr_t else temp = B_NORMAL_PRIORITY; - stat = apr_pool_create(&(*new)->pool, pool); + stat = fspr_pool_create(&(*new)->pool, pool); if (stat != APR_SUCCESS) { return stat; } @@ -110,26 +110,26 @@ APR_DECLARE(apr_status_t) apr_thread_create(apr_thread_t **new, apr_threadattr_t } } -APR_DECLARE(apr_os_thread_t) apr_os_thread_current(void) +APR_DECLARE(fspr_os_thread_t) fspr_os_thread_current(void) { return find_thread(NULL); } -int apr_os_thread_equal(apr_os_thread_t tid1, apr_os_thread_t tid2) +int fspr_os_thread_equal(fspr_os_thread_t tid1, fspr_os_thread_t tid2) { return tid1 == tid2; } -APR_DECLARE(apr_status_t) apr_thread_exit(apr_thread_t *thd, apr_status_t retval) +APR_DECLARE(fspr_status_t) fspr_thread_exit(fspr_thread_t *thd, fspr_status_t retval) { - apr_pool_destroy(thd->pool); + fspr_pool_destroy(thd->pool); thd->exitval = retval; exit_thread ((status_t)(retval)); /* This will never be reached... */ return APR_SUCCESS; } -APR_DECLARE(apr_status_t) apr_thread_join(apr_status_t *retval, apr_thread_t *thd) +APR_DECLARE(fspr_status_t) fspr_thread_join(fspr_status_t *retval, fspr_thread_t *thd) { status_t rv = 0, ret; ret = wait_for_thread(thd->td, &rv); @@ -149,7 +149,7 @@ APR_DECLARE(apr_status_t) apr_thread_join(apr_status_t *retval, apr_thread_t *th } } -APR_DECLARE(apr_status_t) apr_thread_detach(apr_thread_t *thd) +APR_DECLARE(fspr_status_t) fspr_thread_detach(fspr_thread_t *thd) { if (suspend_thread(thd->td) == B_NO_ERROR){ return APR_SUCCESS; @@ -159,45 +159,45 @@ APR_DECLARE(apr_status_t) apr_thread_detach(apr_thread_t *thd) } } -void apr_thread_yield() +void fspr_thread_yield() { } -APR_DECLARE(apr_status_t) apr_thread_data_get(void **data, const char *key, apr_thread_t *thread) +APR_DECLARE(fspr_status_t) fspr_thread_data_get(void **data, const char *key, fspr_thread_t *thread) { - return apr_pool_userdata_get(data, key, thread->pool); + return fspr_pool_userdata_get(data, key, thread->pool); } -APR_DECLARE(apr_status_t) apr_thread_data_set(void *data, const char *key, - apr_status_t (*cleanup) (void *), - apr_thread_t *thread) +APR_DECLARE(fspr_status_t) fspr_thread_data_set(void *data, const char *key, + fspr_status_t (*cleanup) (void *), + fspr_thread_t *thread) { - return apr_pool_userdata_set(data, key, cleanup, thread->pool); + return fspr_pool_userdata_set(data, key, cleanup, thread->pool); } -APR_DECLARE(apr_status_t) apr_os_thread_get(apr_os_thread_t **thethd, apr_thread_t *thd) +APR_DECLARE(fspr_status_t) fspr_os_thread_get(fspr_os_thread_t **thethd, fspr_thread_t *thd) { *thethd = &thd->td; return APR_SUCCESS; } -APR_DECLARE(apr_status_t) apr_os_thread_put(apr_thread_t **thd, apr_os_thread_t *thethd, - apr_pool_t *pool) +APR_DECLARE(fspr_status_t) fspr_os_thread_put(fspr_thread_t **thd, fspr_os_thread_t *thethd, + fspr_pool_t *pool) { if (pool == NULL) { return APR_ENOPOOL; } if ((*thd) == NULL) { - (*thd) = (apr_thread_t *)apr_pcalloc(pool, sizeof(apr_thread_t)); + (*thd) = (fspr_thread_t *)fspr_pcalloc(pool, sizeof(fspr_thread_t)); (*thd)->pool = pool; } (*thd)->td = *thethd; return APR_SUCCESS; } -static apr_status_t thread_once_cleanup(void *vcontrol) +static fspr_status_t thread_once_cleanup(void *vcontrol) { - apr_thread_once_t *control = (apr_thread_once_t *)vcontrol; + fspr_thread_once_t *control = (fspr_thread_once_t *)vcontrol; if (control->sem) { release_sem(control->sem); @@ -207,23 +207,23 @@ static apr_status_t thread_once_cleanup(void *vcontrol) return APR_SUCCESS; } -APR_DECLARE(apr_status_t) apr_thread_once_init(apr_thread_once_t **control, - apr_pool_t *p) +APR_DECLARE(fspr_status_t) fspr_thread_once_init(fspr_thread_once_t **control, + fspr_pool_t *p) { int rc; - *control = (apr_thread_once_t *)apr_pcalloc(p, sizeof(apr_thread_once_t)); + *control = (fspr_thread_once_t *)fspr_pcalloc(p, sizeof(fspr_thread_once_t)); (*control)->hit = 0; /* we haven't done it yet... */ rc = ((*control)->sem = create_sem(1, "thread_once")); if (rc < 0) return rc; - apr_pool_cleanup_register(p, control, thread_once_cleanup, apr_pool_cleanup_null); + fspr_pool_cleanup_register(p, control, thread_once_cleanup, fspr_pool_cleanup_null); return APR_SUCCESS; } -APR_DECLARE(apr_status_t) apr_thread_once(apr_thread_once_t *control, +APR_DECLARE(fspr_status_t) fspr_thread_once(fspr_thread_once_t *control, void (*func)(void)) { if (!control->hit) { diff --git a/libs/apr/threadproc/beos/threadpriv.c b/libs/apr/threadproc/beos/threadpriv.c index 442235f7dd6..a50d62caa6d 100644 --- a/libs/apr/threadproc/beos/threadpriv.c +++ b/libs/apr/threadproc/beos/threadpriv.c @@ -14,16 +14,16 @@ * limitations under the License. */ -#include "apr_arch_threadproc.h" +#include "fspr_arch_threadproc.h" static struct beos_key key_table[BEOS_MAX_DATAKEYS]; static struct beos_private_data *beos_data[BEOS_MAX_DATAKEYS]; static sem_id lock; -APR_DECLARE(apr_status_t) apr_threadkey_private_create(apr_threadkey_t **key, - void (*dest)(void *), apr_pool_t *pool) +APR_DECLARE(fspr_status_t) fspr_threadkey_private_create(fspr_threadkey_t **key, + void (*dest)(void *), fspr_pool_t *pool) { - (*key) = (apr_threadkey_t *)apr_palloc(pool, sizeof(apr_threadkey_t)); + (*key) = (fspr_threadkey_t *)fspr_palloc(pool, sizeof(fspr_threadkey_t)); if ((*key) == NULL) { return APR_ENOMEM; } @@ -44,7 +44,7 @@ APR_DECLARE(apr_status_t) apr_threadkey_private_create(apr_threadkey_t **key, return APR_ENOMEM; } -APR_DECLARE(apr_status_t) apr_threadkey_private_get(void **new, apr_threadkey_t *key) +APR_DECLARE(fspr_status_t) fspr_threadkey_private_get(void **new, fspr_threadkey_t *key) { thread_id tid; int i, index=0; @@ -76,7 +76,7 @@ APR_DECLARE(apr_status_t) apr_threadkey_private_get(void **new, apr_threadkey_t return APR_SUCCESS; } -APR_DECLARE(apr_status_t) apr_threadkey_private_set(void *priv, apr_threadkey_t *key) +APR_DECLARE(fspr_status_t) fspr_threadkey_private_set(void *priv, fspr_threadkey_t *key) { thread_id tid; int i,index = 0, ret = 0; @@ -131,7 +131,7 @@ APR_DECLARE(apr_status_t) apr_threadkey_private_set(void *priv, apr_threadkey_t return APR_ENOMEM; } -APR_DECLARE(apr_status_t) apr_threadkey_private_delete(apr_threadkey_t *key) +APR_DECLARE(fspr_status_t) fspr_threadkey_private_delete(fspr_threadkey_t *key) { if (key->key < BEOS_MAX_DATAKEYS){ acquire_sem(key_table[key->key].lock); @@ -146,33 +146,33 @@ APR_DECLARE(apr_status_t) apr_threadkey_private_delete(apr_threadkey_t *key) return APR_SUCCESS; } -APR_DECLARE(apr_status_t) apr_threadkey_data_get(void **data, const char *key, - apr_threadkey_t *threadkey) +APR_DECLARE(fspr_status_t) fspr_threadkey_data_get(void **data, const char *key, + fspr_threadkey_t *threadkey) { - return apr_pool_userdata_get(data, key, threadkey->pool); + return fspr_pool_userdata_get(data, key, threadkey->pool); } -APR_DECLARE(apr_status_t) apr_threadkey_data_set(void *data, const char *key, - apr_status_t (*cleanup) (void *), - apr_threadkey_t *threadkey) +APR_DECLARE(fspr_status_t) fspr_threadkey_data_set(void *data, const char *key, + fspr_status_t (*cleanup) (void *), + fspr_threadkey_t *threadkey) { - return apr_pool_userdata_set(data, key, cleanup, threadkey->pool); + return fspr_pool_userdata_set(data, key, cleanup, threadkey->pool); } -APR_DECLARE(apr_status_t) apr_os_threadkey_get(apr_os_threadkey_t *thekey, apr_threadkey_t *key) +APR_DECLARE(fspr_status_t) fspr_os_threadkey_get(fspr_os_threadkey_t *thekey, fspr_threadkey_t *key) { *thekey = key->key; return APR_SUCCESS; } -APR_DECLARE(apr_status_t) apr_os_threadkey_put(apr_threadkey_t **key, - apr_os_threadkey_t *thekey, apr_pool_t *pool) +APR_DECLARE(fspr_status_t) fspr_os_threadkey_put(fspr_threadkey_t **key, + fspr_os_threadkey_t *thekey, fspr_pool_t *pool) { if (pool == NULL) { return APR_ENOPOOL; } if ((*key) == NULL) { - (*key) = (apr_threadkey_t *)apr_pcalloc(pool, sizeof(apr_threadkey_t)); + (*key) = (fspr_threadkey_t *)fspr_pcalloc(pool, sizeof(fspr_threadkey_t)); (*key)->pool = pool; } (*key)->key = *thekey; diff --git a/libs/apr/threadproc/netware/proc.c b/libs/apr/threadproc/netware/proc.c index 0f707769994..58fb1474532 100644 --- a/libs/apr/threadproc/netware/proc.c +++ b/libs/apr/threadproc/netware/proc.c @@ -14,16 +14,16 @@ * limitations under the License. */ -#include "apr_arch_threadproc.h" -#include "apr_arch_file_io.h" -#include "apr_strings.h" -#include "apr_portable.h" +#include "fspr_arch_threadproc.h" +#include "fspr_arch_file_io.h" +#include "fspr_strings.h" +#include "fspr_portable.h" #include -apr_status_t apr_netware_proc_cleanup(void *theproc) +fspr_status_t fspr_netware_proc_cleanup(void *theproc) { - apr_proc_t *proc = theproc; + fspr_proc_t *proc = theproc; int exit_int; int waitpid_options = WUNTRACED | WNOHANG; @@ -35,9 +35,9 @@ apr_status_t apr_netware_proc_cleanup(void *theproc) return APR_SUCCESS; } -APR_DECLARE(apr_status_t) apr_procattr_create(apr_procattr_t **new,apr_pool_t *pool) +APR_DECLARE(fspr_status_t) fspr_procattr_create(fspr_procattr_t **new,fspr_pool_t *pool) { - (*new) = (apr_procattr_t *)apr_pcalloc(pool, sizeof(apr_procattr_t)); + (*new) = (fspr_procattr_t *)fspr_pcalloc(pool, sizeof(fspr_procattr_t)); if ((*new) == NULL) { return APR_ENOMEM; @@ -45,18 +45,18 @@ APR_DECLARE(apr_status_t) apr_procattr_create(apr_procattr_t **new,apr_pool_t *p (*new)->pool = pool; (*new)->cmdtype = APR_PROGRAM; /* Default to a current path since NetWare doesn't handle it very well */ - apr_filepath_get(&((*new)->currdir), APR_FILEPATH_NATIVE, pool); + fspr_filepath_get(&((*new)->currdir), APR_FILEPATH_NATIVE, pool); (*new)->detached = 1; return APR_SUCCESS; } -APR_DECLARE(apr_status_t) apr_procattr_io_set(apr_procattr_t *attr, apr_int32_t in, - apr_int32_t out, apr_int32_t err) +APR_DECLARE(fspr_status_t) fspr_procattr_io_set(fspr_procattr_t *attr, fspr_int32_t in, + fspr_int32_t out, fspr_int32_t err) { - apr_status_t status; + fspr_status_t status; if (in != 0) { - if ((status = apr_file_pipe_create(&attr->child_in, &attr->parent_in, + if ((status = fspr_file_pipe_create(&attr->child_in, &attr->parent_in, attr->pool)) != APR_SUCCESS) { return status; } @@ -64,18 +64,18 @@ APR_DECLARE(apr_status_t) apr_procattr_io_set(apr_procattr_t *attr, apr_int32_t case APR_FULL_BLOCK: break; case APR_PARENT_BLOCK: - apr_file_pipe_timeout_set(attr->child_in, 0); + fspr_file_pipe_timeout_set(attr->child_in, 0); break; case APR_CHILD_BLOCK: - apr_file_pipe_timeout_set(attr->parent_in, 0); + fspr_file_pipe_timeout_set(attr->parent_in, 0); break; default: - apr_file_pipe_timeout_set(attr->child_in, 0); - apr_file_pipe_timeout_set(attr->parent_in, 0); + fspr_file_pipe_timeout_set(attr->child_in, 0); + fspr_file_pipe_timeout_set(attr->parent_in, 0); } } if (out) { - if ((status = apr_file_pipe_create(&attr->parent_out, &attr->child_out, + if ((status = fspr_file_pipe_create(&attr->parent_out, &attr->child_out, attr->pool)) != APR_SUCCESS) { return status; } @@ -83,18 +83,18 @@ APR_DECLARE(apr_status_t) apr_procattr_io_set(apr_procattr_t *attr, apr_int32_t case APR_FULL_BLOCK: break; case APR_PARENT_BLOCK: - apr_file_pipe_timeout_set(attr->child_out, 0); + fspr_file_pipe_timeout_set(attr->child_out, 0); break; case APR_CHILD_BLOCK: - apr_file_pipe_timeout_set(attr->parent_out, 0); + fspr_file_pipe_timeout_set(attr->parent_out, 0); break; default: - apr_file_pipe_timeout_set(attr->child_out, 0); - apr_file_pipe_timeout_set(attr->parent_out, 0); + fspr_file_pipe_timeout_set(attr->child_out, 0); + fspr_file_pipe_timeout_set(attr->parent_out, 0); } } if (err) { - if ((status = apr_file_pipe_create(&attr->parent_err, &attr->child_err, + if ((status = fspr_file_pipe_create(&attr->parent_err, &attr->child_err, attr->pool)) != APR_SUCCESS) { return status; } @@ -102,90 +102,90 @@ APR_DECLARE(apr_status_t) apr_procattr_io_set(apr_procattr_t *attr, apr_int32_t case APR_FULL_BLOCK: break; case APR_PARENT_BLOCK: - apr_file_pipe_timeout_set(attr->child_err, 0); + fspr_file_pipe_timeout_set(attr->child_err, 0); break; case APR_CHILD_BLOCK: - apr_file_pipe_timeout_set(attr->parent_err, 0); + fspr_file_pipe_timeout_set(attr->parent_err, 0); break; default: - apr_file_pipe_timeout_set(attr->child_err, 0); - apr_file_pipe_timeout_set(attr->parent_err, 0); + fspr_file_pipe_timeout_set(attr->child_err, 0); + fspr_file_pipe_timeout_set(attr->parent_err, 0); } } return APR_SUCCESS; } -APR_DECLARE(apr_status_t) apr_procattr_child_in_set(apr_procattr_t *attr, apr_file_t *child_in, - apr_file_t *parent_in) +APR_DECLARE(fspr_status_t) fspr_procattr_child_in_set(fspr_procattr_t *attr, fspr_file_t *child_in, + fspr_file_t *parent_in) { if (attr->child_in == NULL && attr->parent_in == NULL) - apr_file_pipe_create(&attr->child_in, &attr->parent_in, attr->pool); + fspr_file_pipe_create(&attr->child_in, &attr->parent_in, attr->pool); if (child_in != NULL) - apr_file_dup2(attr->child_in, child_in, attr->pool); + fspr_file_dup2(attr->child_in, child_in, attr->pool); if (parent_in != NULL) - apr_file_dup2(attr->parent_in, parent_in, attr->pool); + fspr_file_dup2(attr->parent_in, parent_in, attr->pool); return APR_SUCCESS; } -APR_DECLARE(apr_status_t) apr_procattr_child_out_set(apr_procattr_t *attr, apr_file_t *child_out, - apr_file_t *parent_out) +APR_DECLARE(fspr_status_t) fspr_procattr_child_out_set(fspr_procattr_t *attr, fspr_file_t *child_out, + fspr_file_t *parent_out) { if (attr->child_out == NULL && attr->parent_out == NULL) - apr_file_pipe_create(&attr->child_out, &attr->parent_out, attr->pool); + fspr_file_pipe_create(&attr->child_out, &attr->parent_out, attr->pool); if (child_out != NULL) - apr_file_dup2(attr->child_out, child_out, attr->pool); + fspr_file_dup2(attr->child_out, child_out, attr->pool); if (parent_out != NULL) - apr_file_dup2(attr->parent_out, parent_out, attr->pool); + fspr_file_dup2(attr->parent_out, parent_out, attr->pool); return APR_SUCCESS; } -APR_DECLARE(apr_status_t) apr_procattr_child_err_set(apr_procattr_t *attr, apr_file_t *child_err, - apr_file_t *parent_err) +APR_DECLARE(fspr_status_t) fspr_procattr_child_err_set(fspr_procattr_t *attr, fspr_file_t *child_err, + fspr_file_t *parent_err) { if (attr->child_err == NULL && attr->parent_err == NULL) - apr_file_pipe_create(&attr->child_err, &attr->parent_err, attr->pool); + fspr_file_pipe_create(&attr->child_err, &attr->parent_err, attr->pool); if (child_err != NULL) - apr_file_dup2(attr->child_err, child_err, attr->pool); + fspr_file_dup2(attr->child_err, child_err, attr->pool); if (parent_err != NULL) - apr_file_dup2(attr->parent_err, parent_err, attr->pool); + fspr_file_dup2(attr->parent_err, parent_err, attr->pool); return APR_SUCCESS; } -APR_DECLARE(apr_status_t) apr_procattr_dir_set(apr_procattr_t *attr, +APR_DECLARE(fspr_status_t) fspr_procattr_dir_set(fspr_procattr_t *attr, const char *dir) { - return apr_filepath_merge(&attr->currdir, NULL, dir, + return fspr_filepath_merge(&attr->currdir, NULL, dir, APR_FILEPATH_NATIVE, attr->pool); } -APR_DECLARE(apr_status_t) apr_procattr_cmdtype_set(apr_procattr_t *attr, - apr_cmdtype_e cmd) +APR_DECLARE(fspr_status_t) fspr_procattr_cmdtype_set(fspr_procattr_t *attr, + fspr_cmdtype_e cmd) { /* won't ever be called on this platform, so don't save the function pointer */ return APR_SUCCESS; } -APR_DECLARE(apr_status_t) apr_procattr_detach_set(apr_procattr_t *attr, apr_int32_t detach) +APR_DECLARE(fspr_status_t) fspr_procattr_detach_set(fspr_procattr_t *attr, fspr_int32_t detach) { attr->detached = detach; return APR_SUCCESS; } #if APR_HAS_FORK -APR_DECLARE(apr_status_t) apr_proc_fork(apr_proc_t *proc, apr_pool_t *pool) +APR_DECLARE(fspr_status_t) fspr_proc_fork(fspr_proc_t *proc, fspr_pool_t *pool) { int pid; @@ -207,7 +207,7 @@ APR_DECLARE(apr_status_t) apr_proc_fork(apr_proc_t *proc, apr_pool_t *pool) } #endif -static apr_status_t limit_proc(apr_procattr_t *attr) +static fspr_status_t limit_proc(fspr_procattr_t *attr) { #if APR_HAVE_STRUCT_RLIMIT && APR_HAVE_SETRLIMIT #ifdef RLIMIT_CPU @@ -252,33 +252,33 @@ static apr_status_t limit_proc(apr_procattr_t *attr) return APR_SUCCESS; } -APR_DECLARE(apr_status_t) apr_procattr_child_errfn_set(apr_procattr_t *attr, - apr_child_errfn_t *errfn) +APR_DECLARE(fspr_status_t) fspr_procattr_child_errfn_set(fspr_procattr_t *attr, + fspr_child_errfn_t *errfn) { /* won't ever be called on this platform, so don't save the function pointer */ return APR_SUCCESS; } -APR_DECLARE(apr_status_t) apr_procattr_error_check_set(apr_procattr_t *attr, - apr_int32_t chk) +APR_DECLARE(fspr_status_t) fspr_procattr_error_check_set(fspr_procattr_t *attr, + fspr_int32_t chk) { /* won't ever be used on this platform, so don't save the flag */ return APR_SUCCESS; } -APR_DECLARE(apr_status_t) apr_procattr_addrspace_set(apr_procattr_t *attr, - apr_int32_t addrspace) +APR_DECLARE(fspr_status_t) fspr_procattr_addrspace_set(fspr_procattr_t *attr, + fspr_int32_t addrspace) { attr->addrspace = addrspace; return APR_SUCCESS; } -APR_DECLARE(apr_status_t) apr_proc_create(apr_proc_t *newproc, +APR_DECLARE(fspr_status_t) fspr_proc_create(fspr_proc_t *newproc, const char *progname, const char * const *args, const char * const *env, - apr_procattr_t *attr, - apr_pool_t *pool) + fspr_procattr_t *attr, + fspr_pool_t *pool) { wiring_t wire; int addr_space; @@ -299,9 +299,9 @@ APR_DECLARE(apr_status_t) apr_proc_create(apr_proc_t *newproc, if (attr->currdir) { char *fullpath = NULL; - apr_status_t rv; + fspr_status_t rv; - if ((rv = apr_filepath_merge(&fullpath, attr->currdir, progname, + if ((rv = fspr_filepath_merge(&fullpath, attr->currdir, progname, APR_FILEPATH_NATIVE, pool)) != APR_SUCCESS) { return rv; } @@ -314,47 +314,47 @@ APR_DECLARE(apr_status_t) apr_proc_create(apr_proc_t *newproc, } if (attr->child_in) { - apr_pool_cleanup_kill(apr_file_pool_get(attr->child_in), - attr->child_in, apr_unix_file_cleanup); - apr_file_close(attr->child_in); + fspr_pool_cleanup_kill(fspr_file_pool_get(attr->child_in), + attr->child_in, fspr_unix_file_cleanup); + fspr_file_close(attr->child_in); } if (attr->child_out) { - apr_pool_cleanup_kill(apr_file_pool_get(attr->child_out), - attr->child_out, apr_unix_file_cleanup); - apr_file_close(attr->child_out); + fspr_pool_cleanup_kill(fspr_file_pool_get(attr->child_out), + attr->child_out, fspr_unix_file_cleanup); + fspr_file_close(attr->child_out); } if (attr->child_err) { - apr_pool_cleanup_kill(apr_file_pool_get(attr->child_err), - attr->child_err, apr_unix_file_cleanup); - apr_file_close(attr->child_err); + fspr_pool_cleanup_kill(fspr_file_pool_get(attr->child_err), + attr->child_err, fspr_unix_file_cleanup); + fspr_file_close(attr->child_err); } - apr_pool_cleanup_register(pool, (void *)newproc, apr_netware_proc_cleanup, - apr_pool_cleanup_null); + fspr_pool_cleanup_register(pool, (void *)newproc, fspr_netware_proc_cleanup, + fspr_pool_cleanup_null); return APR_SUCCESS; } -APR_DECLARE(apr_status_t) apr_proc_wait_all_procs(apr_proc_t *proc, +APR_DECLARE(fspr_status_t) fspr_proc_wait_all_procs(fspr_proc_t *proc, int *exitcode, - apr_exit_why_e *exitwhy, - apr_wait_how_e waithow, - apr_pool_t *p) + fspr_exit_why_e *exitwhy, + fspr_wait_how_e waithow, + fspr_pool_t *p) { proc->pid = -1; - return apr_proc_wait(proc, exitcode, exitwhy, waithow); + return fspr_proc_wait(proc, exitcode, exitwhy, waithow); } -APR_DECLARE(apr_status_t) apr_proc_wait(apr_proc_t *proc, - int *exitcode, apr_exit_why_e *exitwhy, - apr_wait_how_e waithow) +APR_DECLARE(fspr_status_t) fspr_proc_wait(fspr_proc_t *proc, + int *exitcode, fspr_exit_why_e *exitwhy, + fspr_wait_how_e waithow) { pid_t pstatus; int waitpid_options = WUNTRACED; int exit_int; int ignore; - apr_exit_why_e ignorewhy; + fspr_exit_why_e ignorewhy; if (exitcode == NULL) { exitcode = &ignore; @@ -407,7 +407,7 @@ APR_DECLARE(apr_status_t) apr_proc_wait(apr_proc_t *proc, return errno; } -APR_DECLARE(apr_status_t) apr_procattr_limit_set(apr_procattr_t *attr, apr_int32_t what, +APR_DECLARE(fspr_status_t) fspr_procattr_limit_set(fspr_procattr_t *attr, fspr_int32_t what, struct rlimit *limit) { switch(what) { @@ -436,7 +436,7 @@ APR_DECLARE(apr_status_t) apr_procattr_limit_set(apr_procattr_t *attr, apr_int32 return APR_SUCCESS; } -APR_DECLARE(apr_status_t) apr_procattr_user_set(apr_procattr_t *attr, +APR_DECLARE(fspr_status_t) fspr_procattr_user_set(fspr_procattr_t *attr, const char *username, const char *password) { @@ -444,7 +444,7 @@ APR_DECLARE(apr_status_t) apr_procattr_user_set(apr_procattr_t *attr, return APR_SUCCESS; } -APR_DECLARE(apr_status_t) apr_procattr_group_set(apr_procattr_t *attr, +APR_DECLARE(fspr_status_t) fspr_procattr_group_set(fspr_procattr_t *attr, const char *groupname) { /* Always return SUCCESS because NetWare threads don't run within a group */ diff --git a/libs/apr/threadproc/netware/procsup.c b/libs/apr/threadproc/netware/procsup.c index 72fa1d9764d..07b67f65c89 100644 --- a/libs/apr/threadproc/netware/procsup.c +++ b/libs/apr/threadproc/netware/procsup.c @@ -14,9 +14,9 @@ * limitations under the License. */ -#include "apr_arch_threadproc.h" +#include "fspr_arch_threadproc.h" -apr_status_t apr_proc_detach(int daemonize) +fspr_status_t fspr_proc_detach(int daemonize) { #if 0 int x; diff --git a/libs/apr/threadproc/netware/signals.c b/libs/apr/threadproc/netware/signals.c index bc660af7dc9..a50519a0e60 100644 --- a/libs/apr/threadproc/netware/signals.c +++ b/libs/apr/threadproc/netware/signals.c @@ -14,29 +14,29 @@ * limitations under the License. */ -#include "apr_arch_threadproc.h" +#include "fspr_arch_threadproc.h" #include -#include "apr_private.h" -#include "apr_pools.h" -#include "apr_signal.h" -#include "apr_strings.h" +#include "fspr_private.h" +#include "fspr_pools.h" +#include "fspr_signal.h" +#include "fspr_strings.h" #include #if APR_HAS_THREADS && APR_HAVE_PTHREAD_H #include #endif -APR_DECLARE(apr_status_t) apr_proc_kill(apr_proc_t *proc, int signum) +APR_DECLARE(fspr_status_t) fspr_proc_kill(fspr_proc_t *proc, int signum) { return APR_ENOTIMPL; } -void apr_signal_init(apr_pool_t *pglobal) +void fspr_signal_init(fspr_pool_t *pglobal) { } -const char *apr_signal_description_get(int signum) +const char *fspr_signal_description_get(int signum) { switch (signum) { @@ -64,19 +64,19 @@ static void *signal_thread_func(void *signal_handler) return NULL; } -APR_DECLARE(apr_status_t) apr_setup_signal_thread(void) +APR_DECLARE(fspr_status_t) fspr_setup_signal_thread(void) { int rv = 0; return rv; } -APR_DECLARE(apr_status_t) apr_signal_block(int signum) +APR_DECLARE(fspr_status_t) fspr_signal_block(int signum) { return APR_ENOTIMPL; } -APR_DECLARE(apr_status_t) apr_signal_unblock(int signum) +APR_DECLARE(fspr_status_t) fspr_signal_unblock(int signum) { return APR_ENOTIMPL; } diff --git a/libs/apr/threadproc/netware/thread.c b/libs/apr/threadproc/netware/thread.c index dcf4993db9b..6bcddac2c2b 100644 --- a/libs/apr/threadproc/netware/thread.c +++ b/libs/apr/threadproc/netware/thread.c @@ -14,18 +14,18 @@ * limitations under the License. */ -#include "apr.h" -#include "apr_portable.h" -#include "apr_strings.h" -#include "apr_arch_threadproc.h" +#include "fspr.h" +#include "fspr_portable.h" +#include "fspr_strings.h" +#include "fspr_arch_threadproc.h" static int thread_count = 0; -apr_status_t apr_threadattr_create(apr_threadattr_t **new, - apr_pool_t *pool) +fspr_status_t fspr_threadattr_create(fspr_threadattr_t **new, + fspr_pool_t *pool) { - (*new) = (apr_threadattr_t *)apr_palloc(pool, - sizeof(apr_threadattr_t)); + (*new) = (fspr_threadattr_t *)fspr_palloc(pool, + sizeof(fspr_threadattr_t)); if ((*new) == NULL) { return APR_ENOMEM; @@ -38,45 +38,45 @@ apr_status_t apr_threadattr_create(apr_threadattr_t **new, return APR_SUCCESS; } -apr_status_t apr_threadattr_detach_set(apr_threadattr_t *attr,apr_int32_t on) +fspr_status_t fspr_threadattr_detach_set(fspr_threadattr_t *attr,fspr_int32_t on) { attr->detach = on; return APR_SUCCESS; } -apr_status_t apr_threadattr_detach_get(apr_threadattr_t *attr) +fspr_status_t fspr_threadattr_detach_get(fspr_threadattr_t *attr) { if (attr->detach == 1) return APR_DETACH; return APR_NOTDETACH; } -APR_DECLARE(apr_status_t) apr_threadattr_stacksize_set(apr_threadattr_t *attr, - apr_size_t stacksize) +APR_DECLARE(fspr_status_t) fspr_threadattr_stacksize_set(fspr_threadattr_t *attr, + fspr_size_t stacksize) { attr->stack_size = stacksize; return APR_SUCCESS; } -APR_DECLARE(apr_status_t) apr_threadattr_guardsize_set(apr_threadattr_t *attr, - apr_size_t size) +APR_DECLARE(fspr_status_t) fspr_threadattr_guardsize_set(fspr_threadattr_t *attr, + fspr_size_t size) { return APR_ENOTIMPL; } static void *dummy_worker(void *opaque) { - apr_thread_t *thd = (apr_thread_t *)opaque; + fspr_thread_t *thd = (fspr_thread_t *)opaque; return thd->func(thd, thd->data); } -apr_status_t apr_thread_create(apr_thread_t **new, - apr_threadattr_t *attr, - apr_thread_start_t func, +fspr_status_t fspr_thread_create(fspr_thread_t **new, + fspr_threadattr_t *attr, + fspr_thread_start_t func, void *data, - apr_pool_t *pool) + fspr_pool_t *pool) { - apr_status_t stat; + fspr_status_t stat; long flags = NX_THR_BIND_CONTEXT; char threadName[NX_MAX_OBJECT_NAME_LEN+1]; size_t stack_size = APR_DEFAULT_STACK_SIZE; @@ -97,7 +97,7 @@ apr_status_t apr_thread_create(apr_thread_t **new, stack_size = attr->stack_size; } - (*new) = (apr_thread_t *)apr_palloc(pool, sizeof(apr_thread_t)); + (*new) = (fspr_thread_t *)fspr_palloc(pool, sizeof(fspr_thread_t)); if ((*new) == NULL) { return APR_ENOMEM; @@ -106,9 +106,9 @@ apr_status_t apr_thread_create(apr_thread_t **new, (*new)->pool = pool; (*new)->data = data; (*new)->func = func; - (*new)->thread_name = (char*)apr_pstrdup(pool, threadName); + (*new)->thread_name = (char*)fspr_pstrdup(pool, threadName); - stat = apr_pool_create(&(*new)->pool, pool); + stat = fspr_pool_create(&(*new)->pool, pool); if (stat != APR_SUCCESS) { return stat; } @@ -141,34 +141,34 @@ apr_status_t apr_thread_create(apr_thread_t **new, return(stat);// if error } -apr_os_thread_t apr_os_thread_current() +fspr_os_thread_t fspr_os_thread_current() { return NXThreadGetId(); } -int apr_os_thread_equal(apr_os_thread_t tid1, apr_os_thread_t tid2) +int fspr_os_thread_equal(fspr_os_thread_t tid1, fspr_os_thread_t tid2) { return (tid1 == tid2); } -void apr_thread_yield() +void fspr_thread_yield() { NXThreadYield(); } -apr_status_t apr_thread_exit(apr_thread_t *thd, - apr_status_t retval) +fspr_status_t fspr_thread_exit(fspr_thread_t *thd, + fspr_status_t retval) { thd->exitval = retval; - apr_pool_destroy(thd->pool); + fspr_pool_destroy(thd->pool); NXThreadExit(NULL); return APR_SUCCESS; } -apr_status_t apr_thread_join(apr_status_t *retval, - apr_thread_t *thd) +fspr_status_t fspr_thread_join(fspr_status_t *retval, + fspr_thread_t *thd) { - apr_status_t stat; + fspr_status_t stat; NXThreadId_t dthr; if ((stat = NXThreadJoin(thd->td, &dthr, NULL)) == 0) { @@ -180,16 +180,16 @@ apr_status_t apr_thread_join(apr_status_t *retval, } } -apr_status_t apr_thread_detach(apr_thread_t *thd) +fspr_status_t fspr_thread_detach(fspr_thread_t *thd) { return APR_SUCCESS; } -apr_status_t apr_thread_data_get(void **data, const char *key, - apr_thread_t *thread) +fspr_status_t fspr_thread_data_get(void **data, const char *key, + fspr_thread_t *thread) { if (thread != NULL) { - return apr_pool_userdata_get(data, key, thread->pool); + return fspr_pool_userdata_get(data, key, thread->pool); } else { data = NULL; @@ -197,12 +197,12 @@ apr_status_t apr_thread_data_get(void **data, const char *key, } } -apr_status_t apr_thread_data_set(void *data, const char *key, - apr_status_t (*cleanup) (void *), - apr_thread_t *thread) +fspr_status_t fspr_thread_data_set(void *data, const char *key, + fspr_status_t (*cleanup) (void *), + fspr_thread_t *thread) { if (thread != NULL) { - return apr_pool_userdata_set(data, key, cleanup, thread->pool); + return fspr_pool_userdata_set(data, key, cleanup, thread->pool); } else { data = NULL; @@ -210,8 +210,8 @@ apr_status_t apr_thread_data_set(void *data, const char *key, } } -APR_DECLARE(apr_status_t) apr_os_thread_get(apr_os_thread_t **thethd, - apr_thread_t *thd) +APR_DECLARE(fspr_status_t) fspr_os_thread_get(fspr_os_thread_t **thethd, + fspr_thread_t *thd) { if (thd == NULL) { return APR_ENOTHREAD; @@ -220,29 +220,29 @@ APR_DECLARE(apr_status_t) apr_os_thread_get(apr_os_thread_t **thethd, return APR_SUCCESS; } -APR_DECLARE(apr_status_t) apr_os_thread_put(apr_thread_t **thd, - apr_os_thread_t *thethd, - apr_pool_t *pool) +APR_DECLARE(fspr_status_t) fspr_os_thread_put(fspr_thread_t **thd, + fspr_os_thread_t *thethd, + fspr_pool_t *pool) { if (pool == NULL) { return APR_ENOPOOL; } if ((*thd) == NULL) { - (*thd) = (apr_thread_t *)apr_palloc(pool, sizeof(apr_thread_t)); + (*thd) = (fspr_thread_t *)fspr_palloc(pool, sizeof(fspr_thread_t)); (*thd)->pool = pool; } (*thd)->td = *thethd; return APR_SUCCESS; } -APR_DECLARE(apr_status_t) apr_thread_once_init(apr_thread_once_t **control, - apr_pool_t *p) +APR_DECLARE(fspr_status_t) fspr_thread_once_init(fspr_thread_once_t **control, + fspr_pool_t *p) { - (*control) = apr_pcalloc(p, sizeof(**control)); + (*control) = fspr_pcalloc(p, sizeof(**control)); return APR_SUCCESS; } -APR_DECLARE(apr_status_t) apr_thread_once(apr_thread_once_t *control, +APR_DECLARE(fspr_status_t) fspr_thread_once(fspr_thread_once_t *control, void (*func)(void)) { if (!atomic_xchg(&control->value, 1)) { diff --git a/libs/apr/threadproc/netware/threadpriv.c b/libs/apr/threadproc/netware/threadpriv.c index 54680a56342..3813fdfc389 100644 --- a/libs/apr/threadproc/netware/threadpriv.c +++ b/libs/apr/threadproc/netware/threadpriv.c @@ -14,15 +14,15 @@ * limitations under the License. */ -#include "apr_portable.h" -#include "apr_arch_threadproc.h" +#include "fspr_portable.h" +#include "fspr_arch_threadproc.h" -apr_status_t apr_threadkey_private_create(apr_threadkey_t **key, - void (*dest)(void *), apr_pool_t *pool) +fspr_status_t fspr_threadkey_private_create(fspr_threadkey_t **key, + void (*dest)(void *), fspr_pool_t *pool) { - apr_status_t stat; + fspr_status_t stat; - (*key) = (apr_threadkey_t *)apr_palloc(pool, sizeof(apr_threadkey_t)); + (*key) = (fspr_threadkey_t *)fspr_palloc(pool, sizeof(fspr_threadkey_t)); if ((*key) == NULL) { return APR_ENOMEM; } @@ -35,9 +35,9 @@ apr_status_t apr_threadkey_private_create(apr_threadkey_t **key, return stat; } -apr_status_t apr_threadkey_private_get(void **new, apr_threadkey_t *key) +fspr_status_t fspr_threadkey_private_get(void **new, fspr_threadkey_t *key) { - apr_status_t stat; + fspr_status_t stat; if ((stat = NXKeyGetValue(key->key, new)) == 0) { return APR_SUCCESS; @@ -47,9 +47,9 @@ apr_status_t apr_threadkey_private_get(void **new, apr_threadkey_t *key) } } -apr_status_t apr_threadkey_private_set(void *priv, apr_threadkey_t *key) +fspr_status_t fspr_threadkey_private_set(void *priv, fspr_threadkey_t *key) { - apr_status_t stat; + fspr_status_t stat; if ((stat = NXKeySetValue(key->key, priv)) == 0) { return APR_SUCCESS; } @@ -58,42 +58,42 @@ apr_status_t apr_threadkey_private_set(void *priv, apr_threadkey_t *key) } } -apr_status_t apr_threadkey_private_delete(apr_threadkey_t *key) +fspr_status_t fspr_threadkey_private_delete(fspr_threadkey_t *key) { - apr_status_t stat; + fspr_status_t stat; if ((stat = NXKeyDelete(key->key)) == 0) { return APR_SUCCESS; } return stat; } -apr_status_t apr_threadkey_data_get(void **data, const char *key, apr_threadkey_t *threadkey) +fspr_status_t fspr_threadkey_data_get(void **data, const char *key, fspr_threadkey_t *threadkey) { - return apr_pool_userdata_get(data, key, threadkey->pool); + return fspr_pool_userdata_get(data, key, threadkey->pool); } -apr_status_t apr_threadkey_data_set(void *data, - const char *key, apr_status_t (*cleanup) (void *), - apr_threadkey_t *threadkey) +fspr_status_t fspr_threadkey_data_set(void *data, + const char *key, fspr_status_t (*cleanup) (void *), + fspr_threadkey_t *threadkey) { - return apr_pool_userdata_set(data, key, cleanup, threadkey->pool); + return fspr_pool_userdata_set(data, key, cleanup, threadkey->pool); } -apr_status_t apr_os_threadkey_get(apr_os_threadkey_t *thekey, - apr_threadkey_t *key) +fspr_status_t fspr_os_threadkey_get(fspr_os_threadkey_t *thekey, + fspr_threadkey_t *key) { thekey = &(key->key); return APR_SUCCESS; } -apr_status_t apr_os_threadkey_put(apr_threadkey_t **key, - apr_os_threadkey_t *thekey, apr_pool_t *pool) +fspr_status_t fspr_os_threadkey_put(fspr_threadkey_t **key, + fspr_os_threadkey_t *thekey, fspr_pool_t *pool) { if (pool == NULL) { return APR_ENOPOOL; } if ((*key) == NULL) { - (*key) = (apr_threadkey_t *)apr_palloc(pool, sizeof(apr_threadkey_t)); + (*key) = (fspr_threadkey_t *)fspr_palloc(pool, sizeof(fspr_threadkey_t)); (*key)->pool = pool; } (*key)->key = *thekey; diff --git a/libs/apr/threadproc/os2/proc.c b/libs/apr/threadproc/os2/proc.c index 20dfffb8b8b..8448a33bc58 100644 --- a/libs/apr/threadproc/os2/proc.c +++ b/libs/apr/threadproc/os2/proc.c @@ -17,16 +17,16 @@ #define INCL_DOS #define INCL_DOSERRORS -#include "apr_arch_threadproc.h" -#include "apr_arch_file_io.h" -#include "apr_private.h" -#include "apr_thread_proc.h" -#include "apr_file_io.h" -#include "apr_general.h" -#include "apr_lib.h" -#include "apr_portable.h" -#include "apr_strings.h" -#include "apr_signal.h" +#include "fspr_arch_threadproc.h" +#include "fspr_arch_file_io.h" +#include "fspr_private.h" +#include "fspr_thread_proc.h" +#include "fspr_file_io.h" +#include "fspr_general.h" +#include "fspr_lib.h" +#include "fspr_portable.h" +#include "fspr_strings.h" +#include "fspr_signal.h" #include #include #include @@ -34,10 +34,10 @@ #include #include -APR_DECLARE(apr_status_t) apr_procattr_create(apr_procattr_t **new, apr_pool_t *pool) +APR_DECLARE(fspr_status_t) fspr_procattr_create(fspr_procattr_t **new, fspr_pool_t *pool) { - (*new) = (apr_procattr_t *)apr_palloc(pool, - sizeof(apr_procattr_t)); + (*new) = (fspr_procattr_t *)fspr_palloc(pool, + sizeof(fspr_procattr_t)); if ((*new) == NULL) { return APR_ENOMEM; @@ -55,12 +55,12 @@ APR_DECLARE(apr_status_t) apr_procattr_create(apr_procattr_t **new, apr_pool_t * return APR_SUCCESS; } -APR_DECLARE(apr_status_t) apr_procattr_io_set(apr_procattr_t *attr, apr_int32_t in, - apr_int32_t out, apr_int32_t err) +APR_DECLARE(fspr_status_t) fspr_procattr_io_set(fspr_procattr_t *attr, fspr_int32_t in, + fspr_int32_t out, fspr_int32_t err) { - apr_status_t stat; + fspr_status_t stat; if (in) { - if ((stat = apr_file_pipe_create(&attr->child_in, &attr->parent_in, + if ((stat = fspr_file_pipe_create(&attr->child_in, &attr->parent_in, attr->pool)) != APR_SUCCESS) { return stat; } @@ -68,18 +68,18 @@ APR_DECLARE(apr_status_t) apr_procattr_io_set(apr_procattr_t *attr, apr_int32_t case APR_FULL_BLOCK: break; case APR_PARENT_BLOCK: - apr_file_pipe_timeout_set(attr->child_in, 0); + fspr_file_pipe_timeout_set(attr->child_in, 0); break; case APR_CHILD_BLOCK: - apr_file_pipe_timeout_set(attr->parent_in, 0); + fspr_file_pipe_timeout_set(attr->parent_in, 0); break; default: - apr_file_pipe_timeout_set(attr->child_in, 0); - apr_file_pipe_timeout_set(attr->parent_in, 0); + fspr_file_pipe_timeout_set(attr->child_in, 0); + fspr_file_pipe_timeout_set(attr->parent_in, 0); } } if (out) { - if ((stat = apr_file_pipe_create(&attr->parent_out, &attr->child_out, + if ((stat = fspr_file_pipe_create(&attr->parent_out, &attr->child_out, attr->pool)) != APR_SUCCESS) { return stat; } @@ -87,18 +87,18 @@ APR_DECLARE(apr_status_t) apr_procattr_io_set(apr_procattr_t *attr, apr_int32_t case APR_FULL_BLOCK: break; case APR_PARENT_BLOCK: - apr_file_pipe_timeout_set(attr->child_out, 0); + fspr_file_pipe_timeout_set(attr->child_out, 0); break; case APR_CHILD_BLOCK: - apr_file_pipe_timeout_set(attr->parent_out, 0); + fspr_file_pipe_timeout_set(attr->parent_out, 0); break; default: - apr_file_pipe_timeout_set(attr->child_out, 0); - apr_file_pipe_timeout_set(attr->parent_out, 0); + fspr_file_pipe_timeout_set(attr->child_out, 0); + fspr_file_pipe_timeout_set(attr->parent_out, 0); } } if (err) { - if ((stat = apr_file_pipe_create(&attr->parent_err, &attr->child_err, + if ((stat = fspr_file_pipe_create(&attr->parent_err, &attr->child_err, attr->pool)) != APR_SUCCESS) { return stat; } @@ -106,90 +106,90 @@ APR_DECLARE(apr_status_t) apr_procattr_io_set(apr_procattr_t *attr, apr_int32_t case APR_FULL_BLOCK: break; case APR_PARENT_BLOCK: - apr_file_pipe_timeout_set(attr->child_err, 0); + fspr_file_pipe_timeout_set(attr->child_err, 0); break; case APR_CHILD_BLOCK: - apr_file_pipe_timeout_set(attr->parent_err, 0); + fspr_file_pipe_timeout_set(attr->parent_err, 0); break; default: - apr_file_pipe_timeout_set(attr->child_err, 0); - apr_file_pipe_timeout_set(attr->parent_err, 0); + fspr_file_pipe_timeout_set(attr->child_err, 0); + fspr_file_pipe_timeout_set(attr->parent_err, 0); } } return APR_SUCCESS; } -APR_DECLARE(apr_status_t) apr_procattr_child_in_set(apr_procattr_t *attr, apr_file_t *child_in, - apr_file_t *parent_in) +APR_DECLARE(fspr_status_t) fspr_procattr_child_in_set(fspr_procattr_t *attr, fspr_file_t *child_in, + fspr_file_t *parent_in) { if (attr->child_in == NULL && attr->parent_in == NULL) - apr_file_pipe_create(&attr->child_in, &attr->parent_in, attr->pool); + fspr_file_pipe_create(&attr->child_in, &attr->parent_in, attr->pool); if (child_in != NULL) - apr_file_dup(&attr->child_in, child_in, attr->pool); + fspr_file_dup(&attr->child_in, child_in, attr->pool); if (parent_in != NULL) - apr_file_dup(&attr->parent_in, parent_in, attr->pool); + fspr_file_dup(&attr->parent_in, parent_in, attr->pool); return APR_SUCCESS; } -APR_DECLARE(apr_status_t) apr_procattr_child_out_set(apr_procattr_t *attr, apr_file_t *child_out, - apr_file_t *parent_out) +APR_DECLARE(fspr_status_t) fspr_procattr_child_out_set(fspr_procattr_t *attr, fspr_file_t *child_out, + fspr_file_t *parent_out) { if (attr->child_out == NULL && attr->parent_out == NULL) - apr_file_pipe_create(&attr->child_out, &attr->parent_out, attr->pool); + fspr_file_pipe_create(&attr->child_out, &attr->parent_out, attr->pool); if (child_out != NULL) - apr_file_dup(&attr->child_out, child_out, attr->pool); + fspr_file_dup(&attr->child_out, child_out, attr->pool); if (parent_out != NULL) - apr_file_dup(&attr->parent_out, parent_out, attr->pool); + fspr_file_dup(&attr->parent_out, parent_out, attr->pool); return APR_SUCCESS; } -APR_DECLARE(apr_status_t) apr_procattr_child_err_set(apr_procattr_t *attr, apr_file_t *child_err, - apr_file_t *parent_err) +APR_DECLARE(fspr_status_t) fspr_procattr_child_err_set(fspr_procattr_t *attr, fspr_file_t *child_err, + fspr_file_t *parent_err) { if (attr->child_err == NULL && attr->parent_err == NULL) - apr_file_pipe_create(&attr->child_err, &attr->parent_err, attr->pool); + fspr_file_pipe_create(&attr->child_err, &attr->parent_err, attr->pool); if (child_err != NULL) - apr_file_dup(&attr->child_err, child_err, attr->pool); + fspr_file_dup(&attr->child_err, child_err, attr->pool); if (parent_err != NULL) - apr_file_dup(&attr->parent_err, parent_err, attr->pool); + fspr_file_dup(&attr->parent_err, parent_err, attr->pool); return APR_SUCCESS; } -APR_DECLARE(apr_status_t) apr_procattr_dir_set(apr_procattr_t *attr, const char *dir) +APR_DECLARE(fspr_status_t) fspr_procattr_dir_set(fspr_procattr_t *attr, const char *dir) { - attr->currdir = apr_pstrdup(attr->pool, dir); + attr->currdir = fspr_pstrdup(attr->pool, dir); if (attr->currdir) { return APR_SUCCESS; } return APR_ENOMEM; } -APR_DECLARE(apr_status_t) apr_procattr_cmdtype_set(apr_procattr_t *attr, - apr_cmdtype_e cmd) +APR_DECLARE(fspr_status_t) fspr_procattr_cmdtype_set(fspr_procattr_t *attr, + fspr_cmdtype_e cmd) { attr->cmdtype = cmd; return APR_SUCCESS; } -APR_DECLARE(apr_status_t) apr_procattr_detach_set(apr_procattr_t *attr, apr_int32_t detach) +APR_DECLARE(fspr_status_t) fspr_procattr_detach_set(fspr_procattr_t *attr, fspr_int32_t detach) { attr->detached = detach; return APR_SUCCESS; } -APR_DECLARE(apr_status_t) apr_proc_fork(apr_proc_t *proc, apr_pool_t *pool) +APR_DECLARE(fspr_status_t) fspr_proc_fork(fspr_proc_t *proc, fspr_pool_t *pool) { int pid; @@ -215,7 +215,7 @@ APR_DECLARE(apr_status_t) apr_proc_fork(apr_proc_t *proc, apr_pool_t *pool) /* quotes in the string are doubled up. * Used to escape quotes in args passed to OS/2's cmd.exe */ -static char *double_quotes(apr_pool_t *pool, const char *str) +static char *double_quotes(fspr_pool_t *pool, const char *str) { int num_quotes = 0; int len = 0; @@ -225,7 +225,7 @@ static char *double_quotes(apr_pool_t *pool, const char *str) num_quotes += str[len++] == '\"'; } - quote_doubled_str = apr_palloc(pool, len + num_quotes + 1); + quote_doubled_str = fspr_palloc(pool, len + num_quotes + 1); dest = quote_doubled_str; while (*str) { @@ -240,8 +240,8 @@ static char *double_quotes(apr_pool_t *pool, const char *str) -APR_DECLARE(apr_status_t) apr_procattr_child_errfn_set(apr_procattr_t *attr, - apr_child_errfn_t *errfn) +APR_DECLARE(fspr_status_t) fspr_procattr_child_errfn_set(fspr_procattr_t *attr, + fspr_child_errfn_t *errfn) { /* won't ever be called on this platform, so don't save the function pointer */ return APR_SUCCESS; @@ -249,15 +249,15 @@ APR_DECLARE(apr_status_t) apr_procattr_child_errfn_set(apr_procattr_t *attr, -APR_DECLARE(apr_status_t) apr_procattr_error_check_set(apr_procattr_t *attr, - apr_int32_t chk) +APR_DECLARE(fspr_status_t) fspr_procattr_error_check_set(fspr_procattr_t *attr, + fspr_int32_t chk) { /* won't ever be used on this platform, so don't save the flag */ return APR_SUCCESS; } -APR_DECLARE(apr_status_t) apr_procattr_addrspace_set(apr_procattr_t *attr, - apr_int32_t addrspace) +APR_DECLARE(fspr_status_t) fspr_procattr_addrspace_set(fspr_procattr_t *attr, + fspr_int32_t addrspace) { /* won't ever be used on this platform, so don't save the flag */ return APR_SUCCESS; @@ -265,13 +265,13 @@ APR_DECLARE(apr_status_t) apr_procattr_addrspace_set(apr_procattr_t *attr, -APR_DECLARE(apr_status_t) apr_proc_create(apr_proc_t *proc, const char *progname, +APR_DECLARE(fspr_status_t) fspr_proc_create(fspr_proc_t *proc, const char *progname, const char * const *args, const char * const *env, - apr_procattr_t *attr, apr_pool_t *pool) + fspr_procattr_t *attr, fspr_pool_t *pool) { int i, arg, numargs, cmdlen; - apr_status_t status; + fspr_status_t status; const char **newargs; char savedir[300]; HFILE save_in, save_out, save_err, dup; @@ -279,7 +279,7 @@ APR_DECLARE(apr_status_t) apr_proc_create(apr_proc_t *proc, const char *progname char *extension, *newprogname, *extra_arg = NULL, *cmdline, *cmdline_pos; char interpreter[1024]; char error_object[260]; - apr_file_t *progfile; + fspr_file_t *progfile; int env_len, e; char *env_block, *env_block_pos; RESULTCODES rescodes; @@ -314,7 +314,7 @@ APR_DECLARE(apr_status_t) apr_proc_create(apr_proc_t *proc, const char *progname DosSetFHState(attr->parent_err->filedes, OPEN_FLAGS_NOINHERIT); } - apr_signal(SIGCHLD, SIG_DFL); /*not sure if this is needed or not */ + fspr_signal(SIGCHLD, SIG_DFL); /*not sure if this is needed or not */ if (attr->currdir != NULL) { _getcwd2(savedir, sizeof(savedir)); @@ -340,21 +340,21 @@ APR_DECLARE(apr_status_t) apr_proc_create(apr_proc_t *proc, const char *progname strcpy(interpreter, "#!" SHELL_PATH); extra_arg = "/C"; } else if (stricmp(extension, ".exe") != 0) { - status = apr_file_open(&progfile, progname, APR_READ|APR_BUFFERED, 0, pool); + status = fspr_file_open(&progfile, progname, APR_READ|APR_BUFFERED, 0, pool); if (status != APR_SUCCESS && APR_STATUS_IS_ENOENT(status)) { - progname = apr_pstrcat(pool, progname, ".exe", NULL); + progname = fspr_pstrcat(pool, progname, ".exe", NULL); } if (status == APR_SUCCESS) { - status = apr_file_gets(interpreter, sizeof(interpreter), progfile); + status = fspr_file_gets(interpreter, sizeof(interpreter), progfile); if (status == APR_SUCCESS) { if (interpreter[0] == '#' && interpreter[1] == '!') { /* delete CR/LF & any other whitespace off the end */ int end = strlen(interpreter) - 1; - while (end >= 0 && apr_isspace(interpreter[end])) { + while (end >= 0 && fspr_isspace(interpreter[end])) { interpreter[end] = '\0'; end--; } @@ -376,7 +376,7 @@ APR_DECLARE(apr_status_t) apr_proc_create(apr_proc_t *proc, const char *progname } } - apr_file_close(progfile); + fspr_file_close(progfile); } } @@ -386,7 +386,7 @@ APR_DECLARE(apr_status_t) apr_proc_create(apr_proc_t *proc, const char *progname i++; } - newargs = (const char **)apr_palloc(pool, sizeof (char *) * (i + 4)); + newargs = (const char **)fspr_palloc(pool, sizeof (char *) * (i + 4)); numargs = 0; if (interpreter[0]) @@ -394,7 +394,7 @@ APR_DECLARE(apr_status_t) apr_proc_create(apr_proc_t *proc, const char *progname if (extra_arg) newargs[numargs++] = "/c"; - newargs[numargs++] = newprogname = apr_pstrdup(pool, progname); + newargs[numargs++] = newprogname = fspr_pstrdup(pool, progname); arg = 1; while (args && args[arg]) { @@ -412,14 +412,14 @@ APR_DECLARE(apr_status_t) apr_proc_create(apr_proc_t *proc, const char *progname for (i=0; i\" ")) - a = apr_pstrcat(pool, "\"", double_quotes(pool, a), "\"", NULL); + a = fspr_pstrcat(pool, "\"", double_quotes(pool, a), "\"", NULL); if (i) *(cmdline_pos++) = ' '; @@ -441,7 +441,7 @@ APR_DECLARE(apr_status_t) apr_proc_create(apr_proc_t *proc, const char *progname for (env_len=1, e=0; env[e]; e++) env_len += strlen(env[e]) + 1; - env_block = apr_palloc(pool, env_len); + env_block = fspr_palloc(pool, env_len); env_block_pos = env_block; for (e=0; env[e]; e++) { @@ -464,21 +464,21 @@ APR_DECLARE(apr_status_t) apr_proc_create(apr_proc_t *proc, const char *progname } if (attr->child_in) { - apr_file_close(attr->child_in); + fspr_file_close(attr->child_in); dup = STDIN_FILENO; DosDupHandle(save_in, &dup); DosClose(save_in); } if (attr->child_out) { - apr_file_close(attr->child_out); + fspr_file_close(attr->child_out); dup = STDOUT_FILENO; DosDupHandle(save_out, &dup); DosClose(save_out); } if (attr->child_err) { - apr_file_close(attr->child_err); + fspr_file_close(attr->child_err); dup = STDERR_FILENO; DosDupHandle(save_err, &dup); DosClose(save_err); @@ -497,10 +497,10 @@ APR_DECLARE(apr_status_t) apr_proc_create(apr_proc_t *proc, const char *progname static void proces_result_codes(RESULTCODES codes, int *exitcode, - apr_exit_why_e *exitwhy) + fspr_exit_why_e *exitwhy) { int result = 0; - apr_exit_why_e why = APR_PROC_EXIT; + fspr_exit_why_e why = APR_PROC_EXIT; switch (codes.codeTerminate) { case TC_EXIT: /* Normal exit */ @@ -553,11 +553,11 @@ static void proces_result_codes(RESULTCODES codes, -APR_DECLARE(apr_status_t) apr_proc_wait_all_procs(apr_proc_t *proc, +APR_DECLARE(fspr_status_t) fspr_proc_wait_all_procs(fspr_proc_t *proc, int *exitcode, - apr_exit_why_e *exitwhy, - apr_wait_how_e waithow, - apr_pool_t *p) + fspr_exit_why_e *exitwhy, + fspr_wait_how_e waithow, + fspr_pool_t *p) { RESULTCODES codes; ULONG rc; @@ -578,9 +578,9 @@ APR_DECLARE(apr_status_t) apr_proc_wait_all_procs(apr_proc_t *proc, -APR_DECLARE(apr_status_t) apr_proc_wait(apr_proc_t *proc, - int *exitcode, apr_exit_why_e *exitwhy, - apr_wait_how_e waithow) +APR_DECLARE(fspr_status_t) fspr_proc_wait(fspr_proc_t *proc, + int *exitcode, fspr_exit_why_e *exitwhy, + fspr_wait_how_e waithow) { RESULTCODES codes; ULONG rc; @@ -599,19 +599,19 @@ APR_DECLARE(apr_status_t) apr_proc_wait(apr_proc_t *proc, -APR_DECLARE(apr_status_t) apr_proc_detach(int daemonize) +APR_DECLARE(fspr_status_t) fspr_proc_detach(int daemonize) { return APR_ENOTIMPL; } -APR_DECLARE(apr_status_t) apr_procattr_user_set(apr_procattr_t *attr, +APR_DECLARE(fspr_status_t) fspr_procattr_user_set(fspr_procattr_t *attr, const char *username, const char *password) { return APR_ENOTIMPL; } -APR_DECLARE(apr_status_t) apr_procattr_group_set(apr_procattr_t *attr, +APR_DECLARE(fspr_status_t) fspr_procattr_group_set(fspr_procattr_t *attr, const char *groupname) { return APR_ENOTIMPL; diff --git a/libs/apr/threadproc/os2/thread.c b/libs/apr/threadproc/os2/thread.c index c1c35219d0e..bed45d3ffdf 100644 --- a/libs/apr/threadproc/os2/thread.c +++ b/libs/apr/threadproc/os2/thread.c @@ -16,17 +16,17 @@ #define INCL_DOSERRORS #define INCL_DOS -#include "apr_arch_threadproc.h" -#include "apr_thread_proc.h" -#include "apr_general.h" -#include "apr_lib.h" -#include "apr_portable.h" -#include "apr_arch_file_io.h" +#include "fspr_arch_threadproc.h" +#include "fspr_thread_proc.h" +#include "fspr_general.h" +#include "fspr_lib.h" +#include "fspr_portable.h" +#include "fspr_arch_file_io.h" #include -APR_DECLARE(apr_status_t) apr_threadattr_create(apr_threadattr_t **new, apr_pool_t *pool) +APR_DECLARE(fspr_status_t) fspr_threadattr_create(fspr_threadattr_t **new, fspr_pool_t *pool) { - (*new) = (apr_threadattr_t *)apr_palloc(pool, sizeof(apr_threadattr_t)); + (*new) = (fspr_threadattr_t *)fspr_palloc(pool, sizeof(fspr_threadattr_t)); if ((*new) == NULL) { return APR_ENOMEM; @@ -40,7 +40,7 @@ APR_DECLARE(apr_status_t) apr_threadattr_create(apr_threadattr_t **new, apr_pool -APR_DECLARE(apr_status_t) apr_threadattr_detach_set(apr_threadattr_t *attr, apr_int32_t on) +APR_DECLARE(fspr_status_t) fspr_threadattr_detach_set(fspr_threadattr_t *attr, fspr_int32_t on) { attr->attr |= APR_THREADATTR_DETACHED; return APR_SUCCESS; @@ -48,40 +48,40 @@ APR_DECLARE(apr_status_t) apr_threadattr_detach_set(apr_threadattr_t *attr, apr_ -APR_DECLARE(apr_status_t) apr_threadattr_detach_get(apr_threadattr_t *attr) +APR_DECLARE(fspr_status_t) fspr_threadattr_detach_get(fspr_threadattr_t *attr) { return (attr->attr & APR_THREADATTR_DETACHED) ? APR_DETACH : APR_NOTDETACH; } -APR_DECLARE(apr_status_t) apr_threadattr_stacksize_set(apr_threadattr_t *attr, - apr_size_t stacksize) +APR_DECLARE(fspr_status_t) fspr_threadattr_stacksize_set(fspr_threadattr_t *attr, + fspr_size_t stacksize) { attr->stacksize = stacksize; return APR_SUCCESS; } -APR_DECLARE(apr_status_t) apr_threadattr_guardsize_set(apr_threadattr_t *attr, - apr_size_t size) +APR_DECLARE(fspr_status_t) fspr_threadattr_guardsize_set(fspr_threadattr_t *attr, + fspr_size_t size) { return APR_ENOTIMPL; } -static void apr_thread_begin(void *arg) +static void fspr_thread_begin(void *arg) { - apr_thread_t *thread = (apr_thread_t *)arg; + fspr_thread_t *thread = (fspr_thread_t *)arg; thread->exitval = thread->func(thread, thread->data); } -APR_DECLARE(apr_status_t) apr_thread_create(apr_thread_t **new, apr_threadattr_t *attr, - apr_thread_start_t func, void *data, - apr_pool_t *pool) +APR_DECLARE(fspr_status_t) fspr_thread_create(fspr_thread_t **new, fspr_threadattr_t *attr, + fspr_thread_start_t func, void *data, + fspr_pool_t *pool) { - apr_status_t stat; - apr_thread_t *thread; + fspr_status_t stat; + fspr_thread_t *thread; - thread = (apr_thread_t *)apr_palloc(pool, sizeof(apr_thread_t)); + thread = (fspr_thread_t *)fspr_palloc(pool, sizeof(fspr_thread_t)); *new = thread; if (thread == NULL) { @@ -92,21 +92,21 @@ APR_DECLARE(apr_status_t) apr_thread_create(apr_thread_t **new, apr_threadattr_t thread->attr = attr; thread->func = func; thread->data = data; - stat = apr_pool_create(&thread->pool, pool); + stat = fspr_pool_create(&thread->pool, pool); if (stat != APR_SUCCESS) { return stat; } if (attr == NULL) { - stat = apr_threadattr_create(&thread->attr, thread->pool); + stat = fspr_threadattr_create(&thread->attr, thread->pool); if (stat != APR_SUCCESS) { return stat; } } - thread->tid = _beginthread(apr_thread_begin, NULL, + thread->tid = _beginthread(fspr_thread_begin, NULL, thread->attr->stacksize > 0 ? thread->attr->stacksize : APR_THREAD_STACKSIZE, thread); @@ -120,7 +120,7 @@ APR_DECLARE(apr_status_t) apr_thread_create(apr_thread_t **new, apr_threadattr_t -APR_DECLARE(apr_os_thread_t) apr_os_thread_current() +APR_DECLARE(fspr_os_thread_t) fspr_os_thread_current() { PIB *ppib; TIB *ptib; @@ -130,7 +130,7 @@ APR_DECLARE(apr_os_thread_t) apr_os_thread_current() -APR_DECLARE(apr_status_t) apr_thread_exit(apr_thread_t *thd, apr_status_t retval) +APR_DECLARE(fspr_status_t) fspr_thread_exit(fspr_thread_t *thd, fspr_status_t retval) { thd->exitval = retval; _endthread(); @@ -139,7 +139,7 @@ APR_DECLARE(apr_status_t) apr_thread_exit(apr_thread_t *thd, apr_status_t retval -APR_DECLARE(apr_status_t) apr_thread_join(apr_status_t *retval, apr_thread_t *thd) +APR_DECLARE(fspr_status_t) fspr_thread_join(fspr_status_t *retval, fspr_thread_t *thd) { ULONG rc; TID waittid = thd->tid; @@ -158,7 +158,7 @@ APR_DECLARE(apr_status_t) apr_thread_join(apr_status_t *retval, apr_thread_t *th -APR_DECLARE(apr_status_t) apr_thread_detach(apr_thread_t *thd) +APR_DECLARE(fspr_status_t) fspr_thread_detach(fspr_thread_t *thd) { thd->attr->attr |= APR_THREADATTR_DETACHED; return APR_SUCCESS; @@ -166,14 +166,14 @@ APR_DECLARE(apr_status_t) apr_thread_detach(apr_thread_t *thd) -void apr_thread_yield() +void fspr_thread_yield() { DosSleep(0); } -APR_DECLARE(apr_status_t) apr_os_thread_get(apr_os_thread_t **thethd, apr_thread_t *thd) +APR_DECLARE(fspr_status_t) fspr_os_thread_get(fspr_os_thread_t **thethd, fspr_thread_t *thd) { *thethd = &thd->tid; return APR_SUCCESS; @@ -181,11 +181,11 @@ APR_DECLARE(apr_status_t) apr_os_thread_get(apr_os_thread_t **thethd, apr_thread -APR_DECLARE(apr_status_t) apr_os_thread_put(apr_thread_t **thd, apr_os_thread_t *thethd, - apr_pool_t *pool) +APR_DECLARE(fspr_status_t) fspr_os_thread_put(fspr_thread_t **thd, fspr_os_thread_t *thethd, + fspr_pool_t *pool) { if ((*thd) == NULL) { - (*thd) = (apr_thread_t *)apr_pcalloc(pool, sizeof(apr_thread_t)); + (*thd) = (fspr_thread_t *)fspr_pcalloc(pool, sizeof(fspr_thread_t)); (*thd)->pool = pool; } (*thd)->tid = *thethd; @@ -194,34 +194,34 @@ APR_DECLARE(apr_status_t) apr_os_thread_put(apr_thread_t **thd, apr_os_thread_t -int apr_os_thread_equal(apr_os_thread_t tid1, apr_os_thread_t tid2) +int fspr_os_thread_equal(fspr_os_thread_t tid1, fspr_os_thread_t tid2) { return tid1 == tid2; } -APR_DECLARE(apr_status_t) apr_thread_data_get(void **data, const char *key, apr_thread_t *thread) +APR_DECLARE(fspr_status_t) fspr_thread_data_get(void **data, const char *key, fspr_thread_t *thread) { - return apr_pool_userdata_get(data, key, thread->pool); + return fspr_pool_userdata_get(data, key, thread->pool); } -APR_DECLARE(apr_status_t) apr_thread_data_set(void *data, const char *key, - apr_status_t (*cleanup) (void *), - apr_thread_t *thread) +APR_DECLARE(fspr_status_t) fspr_thread_data_set(void *data, const char *key, + fspr_status_t (*cleanup) (void *), + fspr_thread_t *thread) { - return apr_pool_userdata_set(data, key, cleanup, thread->pool); + return fspr_pool_userdata_set(data, key, cleanup, thread->pool); } APR_POOL_IMPLEMENT_ACCESSOR(thread) -static apr_status_t thread_once_cleanup(void *vcontrol) +static fspr_status_t thread_once_cleanup(void *vcontrol) { - apr_thread_once_t *control = (apr_thread_once_t *)vcontrol; + fspr_thread_once_t *control = (fspr_thread_once_t *)vcontrol; if (control->sem) { DosCloseEventSem(control->sem); @@ -232,19 +232,19 @@ static apr_status_t thread_once_cleanup(void *vcontrol) -APR_DECLARE(apr_status_t) apr_thread_once_init(apr_thread_once_t **control, - apr_pool_t *p) +APR_DECLARE(fspr_status_t) fspr_thread_once_init(fspr_thread_once_t **control, + fspr_pool_t *p) { ULONG rc; - *control = (apr_thread_once_t *)apr_pcalloc(p, sizeof(apr_thread_once_t)); + *control = (fspr_thread_once_t *)fspr_pcalloc(p, sizeof(fspr_thread_once_t)); rc = DosCreateEventSem(NULL, &(*control)->sem, 0, TRUE); - apr_pool_cleanup_register(p, control, thread_once_cleanup, apr_pool_cleanup_null); + fspr_pool_cleanup_register(p, control, thread_once_cleanup, fspr_pool_cleanup_null); return APR_FROM_OS_ERROR(rc); } -APR_DECLARE(apr_status_t) apr_thread_once(apr_thread_once_t *control, +APR_DECLARE(fspr_status_t) fspr_thread_once(fspr_thread_once_t *control, void (*func)(void)) { if (!control->hit) { diff --git a/libs/apr/threadproc/os2/threadpriv.c b/libs/apr/threadproc/os2/threadpriv.c index 107ec10d712..2e315abedd7 100644 --- a/libs/apr/threadproc/os2/threadpriv.c +++ b/libs/apr/threadproc/os2/threadpriv.c @@ -14,19 +14,19 @@ * limitations under the License. */ -#include "apr_arch_threadproc.h" -#include "apr_thread_proc.h" -#include "apr_portable.h" -#include "apr_general.h" -#include "apr_errno.h" -#include "apr_lib.h" -#include "apr_arch_file_io.h" +#include "fspr_arch_threadproc.h" +#include "fspr_thread_proc.h" +#include "fspr_portable.h" +#include "fspr_general.h" +#include "fspr_errno.h" +#include "fspr_lib.h" +#include "fspr_arch_file_io.h" -APR_DECLARE(apr_status_t) apr_threadkey_private_create(apr_threadkey_t **key, +APR_DECLARE(fspr_status_t) fspr_threadkey_private_create(fspr_threadkey_t **key, void (*dest)(void *), - apr_pool_t *pool) + fspr_pool_t *pool) { - (*key) = (apr_threadkey_t *)apr_palloc(pool, sizeof(apr_threadkey_t)); + (*key) = (fspr_threadkey_t *)fspr_palloc(pool, sizeof(fspr_threadkey_t)); if ((*key) == NULL) { return APR_ENOMEM; @@ -36,51 +36,51 @@ APR_DECLARE(apr_status_t) apr_threadkey_private_create(apr_threadkey_t **key, return APR_OS2_STATUS(DosAllocThreadLocalMemory(1, &((*key)->key))); } -APR_DECLARE(apr_status_t) apr_threadkey_private_get(void **new, apr_threadkey_t *key) +APR_DECLARE(fspr_status_t) fspr_threadkey_private_get(void **new, fspr_threadkey_t *key) { (*new) = (void *)*(key->key); return APR_SUCCESS; } -APR_DECLARE(apr_status_t) apr_threadkey_private_set(void *priv, apr_threadkey_t *key) +APR_DECLARE(fspr_status_t) fspr_threadkey_private_set(void *priv, fspr_threadkey_t *key) { *(key->key) = (ULONG)priv; return APR_SUCCESS; } -APR_DECLARE(apr_status_t) apr_threadkey_private_delete(apr_threadkey_t *key) +APR_DECLARE(fspr_status_t) fspr_threadkey_private_delete(fspr_threadkey_t *key) { return APR_OS2_STATUS(DosFreeThreadLocalMemory(key->key)); } -APR_DECLARE(apr_status_t) apr_threadkey_data_get(void **data, const char *key, - apr_threadkey_t *threadkey) +APR_DECLARE(fspr_status_t) fspr_threadkey_data_get(void **data, const char *key, + fspr_threadkey_t *threadkey) { - return apr_pool_userdata_get(data, key, threadkey->pool); + return fspr_pool_userdata_get(data, key, threadkey->pool); } -APR_DECLARE(apr_status_t) apr_threadkey_data_set(void *data, const char *key, - apr_status_t (*cleanup) (void *), - apr_threadkey_t *threadkey) +APR_DECLARE(fspr_status_t) fspr_threadkey_data_set(void *data, const char *key, + fspr_status_t (*cleanup) (void *), + fspr_threadkey_t *threadkey) { - return apr_pool_userdata_set(data, key, cleanup, threadkey->pool); + return fspr_pool_userdata_set(data, key, cleanup, threadkey->pool); } -APR_DECLARE(apr_status_t) apr_os_threadkey_get(apr_os_threadkey_t *thekey, apr_threadkey_t *key) +APR_DECLARE(fspr_status_t) fspr_os_threadkey_get(fspr_os_threadkey_t *thekey, fspr_threadkey_t *key) { *thekey = key->key; return APR_SUCCESS; } -APR_DECLARE(apr_status_t) apr_os_threadkey_put(apr_threadkey_t **key, - apr_os_threadkey_t *thekey, - apr_pool_t *pool) +APR_DECLARE(fspr_status_t) fspr_os_threadkey_put(fspr_threadkey_t **key, + fspr_os_threadkey_t *thekey, + fspr_pool_t *pool) { if (pool == NULL) { return APR_ENOPOOL; } if ((*key) == NULL) { - (*key) = (apr_threadkey_t *)apr_pcalloc(pool, sizeof(apr_threadkey_t)); + (*key) = (fspr_threadkey_t *)fspr_pcalloc(pool, sizeof(fspr_threadkey_t)); (*key)->pool = pool; } (*key)->key = *thekey; diff --git a/libs/apr/threadproc/unix/proc.c b/libs/apr/threadproc/unix/proc.c index 0f3437aee01..3781876edb9 100644 --- a/libs/apr/threadproc/unix/proc.c +++ b/libs/apr/threadproc/unix/proc.c @@ -14,16 +14,16 @@ * limitations under the License. */ -#include "apr_arch_threadproc.h" -#include "apr_strings.h" -#include "apr_portable.h" -#include "apr_signal.h" -#include "apr_random.h" - -APR_DECLARE(apr_status_t) apr_procattr_create(apr_procattr_t **new, - apr_pool_t *pool) +#include "fspr_arch_threadproc.h" +#include "fspr_strings.h" +#include "fspr_portable.h" +#include "fspr_signal.h" +#include "fspr_random.h" + +APR_DECLARE(fspr_status_t) fspr_procattr_create(fspr_procattr_t **new, + fspr_pool_t *pool) { - (*new) = (apr_procattr_t *)apr_pcalloc(pool, sizeof(apr_procattr_t)); + (*new) = (fspr_procattr_t *)fspr_pcalloc(pool, sizeof(fspr_procattr_t)); if ((*new) == NULL) { return APR_ENOMEM; @@ -34,14 +34,14 @@ APR_DECLARE(apr_status_t) apr_procattr_create(apr_procattr_t **new, return APR_SUCCESS; } -APR_DECLARE(apr_status_t) apr_procattr_io_set(apr_procattr_t *attr, - apr_int32_t in, - apr_int32_t out, - apr_int32_t err) +APR_DECLARE(fspr_status_t) fspr_procattr_io_set(fspr_procattr_t *attr, + fspr_int32_t in, + fspr_int32_t out, + fspr_int32_t err) { - apr_status_t status; + fspr_status_t status; if (in != 0) { - if ((status = apr_file_pipe_create(&attr->child_in, &attr->parent_in, + if ((status = fspr_file_pipe_create(&attr->child_in, &attr->parent_in, attr->pool)) != APR_SUCCESS) { return status; } @@ -50,19 +50,19 @@ APR_DECLARE(apr_status_t) apr_procattr_io_set(apr_procattr_t *attr, case APR_FULL_BLOCK: break; case APR_PARENT_BLOCK: - apr_file_pipe_timeout_set(attr->child_in, 0); + fspr_file_pipe_timeout_set(attr->child_in, 0); break; case APR_CHILD_BLOCK: - apr_file_pipe_timeout_set(attr->parent_in, 0); + fspr_file_pipe_timeout_set(attr->parent_in, 0); break; default: - apr_file_pipe_timeout_set(attr->child_in, 0); - apr_file_pipe_timeout_set(attr->parent_in, 0); + fspr_file_pipe_timeout_set(attr->child_in, 0); + fspr_file_pipe_timeout_set(attr->parent_in, 0); } } if (out) { - if ((status = apr_file_pipe_create(&attr->parent_out, &attr->child_out, + if ((status = fspr_file_pipe_create(&attr->parent_out, &attr->child_out, attr->pool)) != APR_SUCCESS) { return status; } @@ -71,19 +71,19 @@ APR_DECLARE(apr_status_t) apr_procattr_io_set(apr_procattr_t *attr, case APR_FULL_BLOCK: break; case APR_PARENT_BLOCK: - apr_file_pipe_timeout_set(attr->child_out, 0); + fspr_file_pipe_timeout_set(attr->child_out, 0); break; case APR_CHILD_BLOCK: - apr_file_pipe_timeout_set(attr->parent_out, 0); + fspr_file_pipe_timeout_set(attr->parent_out, 0); break; default: - apr_file_pipe_timeout_set(attr->child_out, 0); - apr_file_pipe_timeout_set(attr->parent_out, 0); + fspr_file_pipe_timeout_set(attr->child_out, 0); + fspr_file_pipe_timeout_set(attr->parent_out, 0); } } if (err) { - if ((status = apr_file_pipe_create(&attr->parent_err, &attr->child_err, + if ((status = fspr_file_pipe_create(&attr->parent_err, &attr->child_err, attr->pool)) != APR_SUCCESS) { return status; } @@ -92,14 +92,14 @@ APR_DECLARE(apr_status_t) apr_procattr_io_set(apr_procattr_t *attr, case APR_FULL_BLOCK: break; case APR_PARENT_BLOCK: - apr_file_pipe_timeout_set(attr->child_err, 0); + fspr_file_pipe_timeout_set(attr->child_err, 0); break; case APR_CHILD_BLOCK: - apr_file_pipe_timeout_set(attr->parent_err, 0); + fspr_file_pipe_timeout_set(attr->parent_err, 0); break; default: - apr_file_pipe_timeout_set(attr->child_err, 0); - apr_file_pipe_timeout_set(attr->parent_err, 0); + fspr_file_pipe_timeout_set(attr->child_err, 0); + fspr_file_pipe_timeout_set(attr->parent_err, 0); } } @@ -107,67 +107,67 @@ APR_DECLARE(apr_status_t) apr_procattr_io_set(apr_procattr_t *attr, } -APR_DECLARE(apr_status_t) apr_procattr_child_in_set(apr_procattr_t *attr, - apr_file_t *child_in, - apr_file_t *parent_in) +APR_DECLARE(fspr_status_t) fspr_procattr_child_in_set(fspr_procattr_t *attr, + fspr_file_t *child_in, + fspr_file_t *parent_in) { - apr_status_t rv = APR_SUCCESS; + fspr_status_t rv = APR_SUCCESS; if (attr->child_in == NULL && attr->parent_in == NULL) - rv = apr_file_pipe_create(&attr->child_in, &attr->parent_in, attr->pool); + rv = fspr_file_pipe_create(&attr->child_in, &attr->parent_in, attr->pool); if (child_in != NULL && rv == APR_SUCCESS) - rv = apr_file_dup2(attr->child_in, child_in, attr->pool); + rv = fspr_file_dup2(attr->child_in, child_in, attr->pool); if (parent_in != NULL && rv == APR_SUCCESS) - rv = apr_file_dup2(attr->parent_in, parent_in, attr->pool); + rv = fspr_file_dup2(attr->parent_in, parent_in, attr->pool); return rv; } -APR_DECLARE(apr_status_t) apr_procattr_child_out_set(apr_procattr_t *attr, - apr_file_t *child_out, - apr_file_t *parent_out) +APR_DECLARE(fspr_status_t) fspr_procattr_child_out_set(fspr_procattr_t *attr, + fspr_file_t *child_out, + fspr_file_t *parent_out) { - apr_status_t rv = APR_SUCCESS; + fspr_status_t rv = APR_SUCCESS; if (attr->child_out == NULL && attr->parent_out == NULL) - rv = apr_file_pipe_create(&attr->child_out, &attr->parent_out, attr->pool); + rv = fspr_file_pipe_create(&attr->child_out, &attr->parent_out, attr->pool); if (child_out != NULL && rv == APR_SUCCESS) - rv = apr_file_dup2(attr->child_out, child_out, attr->pool); + rv = fspr_file_dup2(attr->child_out, child_out, attr->pool); if (parent_out != NULL && rv == APR_SUCCESS) - rv = apr_file_dup2(attr->parent_out, parent_out, attr->pool); + rv = fspr_file_dup2(attr->parent_out, parent_out, attr->pool); return rv; } -APR_DECLARE(apr_status_t) apr_procattr_child_err_set(apr_procattr_t *attr, - apr_file_t *child_err, - apr_file_t *parent_err) +APR_DECLARE(fspr_status_t) fspr_procattr_child_err_set(fspr_procattr_t *attr, + fspr_file_t *child_err, + fspr_file_t *parent_err) { - apr_status_t rv = APR_SUCCESS; + fspr_status_t rv = APR_SUCCESS; if (attr->child_err == NULL && attr->parent_err == NULL) - rv = apr_file_pipe_create(&attr->child_err, &attr->parent_err, attr->pool); + rv = fspr_file_pipe_create(&attr->child_err, &attr->parent_err, attr->pool); if (child_err != NULL && rv == APR_SUCCESS) - rv = apr_file_dup2(attr->child_err, child_err, attr->pool); + rv = fspr_file_dup2(attr->child_err, child_err, attr->pool); if (parent_err != NULL && rv == APR_SUCCESS) - rv = apr_file_dup2(attr->parent_err, parent_err, attr->pool); + rv = fspr_file_dup2(attr->parent_err, parent_err, attr->pool); return rv; } -APR_DECLARE(apr_status_t) apr_procattr_dir_set(apr_procattr_t *attr, +APR_DECLARE(fspr_status_t) fspr_procattr_dir_set(fspr_procattr_t *attr, const char *dir) { - attr->currdir = apr_pstrdup(attr->pool, dir); + attr->currdir = fspr_pstrdup(attr->pool, dir); if (attr->currdir) { return APR_SUCCESS; } @@ -175,21 +175,21 @@ APR_DECLARE(apr_status_t) apr_procattr_dir_set(apr_procattr_t *attr, return APR_ENOMEM; } -APR_DECLARE(apr_status_t) apr_procattr_cmdtype_set(apr_procattr_t *attr, - apr_cmdtype_e cmd) +APR_DECLARE(fspr_status_t) fspr_procattr_cmdtype_set(fspr_procattr_t *attr, + fspr_cmdtype_e cmd) { attr->cmdtype = cmd; return APR_SUCCESS; } -APR_DECLARE(apr_status_t) apr_procattr_detach_set(apr_procattr_t *attr, - apr_int32_t detach) +APR_DECLARE(fspr_status_t) fspr_procattr_detach_set(fspr_procattr_t *attr, + fspr_int32_t detach) { attr->detached = detach; return APR_SUCCESS; } -APR_DECLARE(apr_status_t) apr_proc_fork(apr_proc_t *proc, apr_pool_t *pool) +APR_DECLARE(fspr_status_t) fspr_proc_fork(fspr_proc_t *proc, fspr_pool_t *pool) { int pid; @@ -202,7 +202,7 @@ APR_DECLARE(apr_status_t) apr_proc_fork(apr_proc_t *proc, apr_pool_t *pool) proc->out = NULL; proc->err = NULL; - apr_random_after_fork(proc); + fspr_random_after_fork(proc); return APR_INCHILD; } @@ -215,7 +215,7 @@ APR_DECLARE(apr_status_t) apr_proc_fork(apr_proc_t *proc, apr_pool_t *pool) return APR_INPARENT; } -static apr_status_t limit_proc(apr_procattr_t *attr) +static fspr_status_t limit_proc(fspr_procattr_t *attr) { #if APR_HAVE_STRUCT_RLIMIT && APR_HAVE_SETRLIMIT #ifdef RLIMIT_CPU @@ -267,35 +267,35 @@ static apr_status_t limit_proc(apr_procattr_t *attr) return APR_SUCCESS; } -APR_DECLARE(apr_status_t) apr_procattr_child_errfn_set(apr_procattr_t *attr, - apr_child_errfn_t *errfn) +APR_DECLARE(fspr_status_t) fspr_procattr_child_errfn_set(fspr_procattr_t *attr, + fspr_child_errfn_t *errfn) { attr->errfn = errfn; return APR_SUCCESS; } -APR_DECLARE(apr_status_t) apr_procattr_error_check_set(apr_procattr_t *attr, - apr_int32_t chk) +APR_DECLARE(fspr_status_t) fspr_procattr_error_check_set(fspr_procattr_t *attr, + fspr_int32_t chk) { attr->errchk = chk; return APR_SUCCESS; } -APR_DECLARE(apr_status_t) apr_procattr_addrspace_set(apr_procattr_t *attr, - apr_int32_t addrspace) +APR_DECLARE(fspr_status_t) fspr_procattr_addrspace_set(fspr_procattr_t *attr, + fspr_int32_t addrspace) { /* won't ever be used on this platform, so don't save the flag */ return APR_SUCCESS; } -APR_DECLARE(apr_status_t) apr_procattr_user_set(apr_procattr_t *attr, +APR_DECLARE(fspr_status_t) fspr_procattr_user_set(fspr_procattr_t *attr, const char *username, const char *password) { - apr_status_t rv; - apr_gid_t gid; + fspr_status_t rv; + fspr_gid_t gid; - if ((rv = apr_uid_get(&attr->uid, &gid, username, + if ((rv = fspr_uid_get(&attr->uid, &gid, username, attr->pool)) != APR_SUCCESS) { attr->uid = -1; return rv; @@ -308,22 +308,22 @@ APR_DECLARE(apr_status_t) apr_procattr_user_set(apr_procattr_t *attr, return APR_SUCCESS; } -APR_DECLARE(apr_status_t) apr_procattr_group_set(apr_procattr_t *attr, +APR_DECLARE(fspr_status_t) fspr_procattr_group_set(fspr_procattr_t *attr, const char *groupname) { - apr_status_t rv; + fspr_status_t rv; - if ((rv = apr_gid_get(&attr->gid, groupname, attr->pool)) != APR_SUCCESS) + if ((rv = fspr_gid_get(&attr->gid, groupname, attr->pool)) != APR_SUCCESS) attr->gid = -1; return rv; } -APR_DECLARE(apr_status_t) apr_proc_create(apr_proc_t *new, +APR_DECLARE(fspr_status_t) fspr_proc_create(fspr_proc_t *new, const char *progname, const char * const *args, const char * const *env, - apr_procattr_t *attr, - apr_pool_t *pool) + fspr_procattr_t *attr, + fspr_pool_t *pool) { int i; const char * const empty_envp[] = {NULL}; @@ -369,7 +369,6 @@ APR_DECLARE(apr_status_t) apr_proc_create(apr_proc_t *new, return errno; } else if (new->pid == 0) { - int status; /* child process */ /* @@ -386,41 +385,41 @@ APR_DECLARE(apr_status_t) apr_proc_create(apr_proc_t *new, */ if (attr->child_in) { - apr_pool_cleanup_kill(apr_file_pool_get(attr->child_in), - attr->child_in, apr_unix_file_cleanup); + fspr_pool_cleanup_kill(fspr_file_pool_get(attr->child_in), + attr->child_in, fspr_unix_file_cleanup); } if (attr->child_out) { - apr_pool_cleanup_kill(apr_file_pool_get(attr->child_out), - attr->child_out, apr_unix_file_cleanup); + fspr_pool_cleanup_kill(fspr_file_pool_get(attr->child_out), + attr->child_out, fspr_unix_file_cleanup); } if (attr->child_err) { - apr_pool_cleanup_kill(apr_file_pool_get(attr->child_err), - attr->child_err, apr_unix_file_cleanup); + fspr_pool_cleanup_kill(fspr_file_pool_get(attr->child_err), + attr->child_err, fspr_unix_file_cleanup); } - apr_pool_cleanup_for_exec(); + fspr_pool_cleanup_for_exec(); if (attr->child_in) { - apr_file_close(attr->parent_in); + fspr_file_close(attr->parent_in); dup2(attr->child_in->filedes, STDIN_FILENO); - apr_file_close(attr->child_in); + fspr_file_close(attr->child_in); } if (attr->child_out) { - apr_file_close(attr->parent_out); + fspr_file_close(attr->parent_out); dup2(attr->child_out->filedes, STDOUT_FILENO); - apr_file_close(attr->child_out); + fspr_file_close(attr->child_out); } if (attr->child_err) { - apr_file_close(attr->parent_err); + fspr_file_close(attr->parent_err); dup2(attr->child_err->filedes, STDERR_FILENO); - apr_file_close(attr->child_err); + fspr_file_close(attr->child_err); } - apr_signal(SIGCHLD, SIG_DFL); /* not sure if this is needed or not */ + fspr_signal(SIGCHLD, SIG_DFL); /* not sure if this is needed or not */ if (attr->currdir != NULL) { if (chdir(attr->currdir) == -1) { @@ -433,7 +432,7 @@ APR_DECLARE(apr_status_t) apr_proc_create(apr_proc_t *new, /* Only try to switch if we are running as root */ if (attr->gid != -1 && !geteuid()) { - if ((status = setgid(attr->gid))) { + if (setgid(attr->gid)) { if (attr->errfn) { attr->errfn(pool, errno, "setting of group failed"); } @@ -442,7 +441,7 @@ APR_DECLARE(apr_status_t) apr_proc_create(apr_proc_t *new, } if (attr->uid != -1 && !geteuid()) { - if ((status = setuid(attr->uid))) { + if (setuid(attr->uid)) { if (attr->errfn) { attr->errfn(pool, errno, "setting of user failed"); } @@ -450,7 +449,7 @@ APR_DECLARE(apr_status_t) apr_proc_create(apr_proc_t *new, } } - if ((status = limit_proc(attr)) != APR_SUCCESS) { + if (limit_proc(attr) != APR_SUCCESS) { if (attr->errfn) { attr->errfn(pool, errno, "setting of resource limits failed"); } @@ -486,7 +485,7 @@ APR_DECLARE(apr_status_t) apr_proc_create(apr_proc_t *new, { char *ch, *onearg; - ch = onearg = apr_palloc(pool, onearg_len); + ch = onearg = fspr_palloc(pool, onearg_len); i = 0; while (args[i]) { size_t len = strlen(args[i]); @@ -506,7 +505,7 @@ APR_DECLARE(apr_status_t) apr_proc_create(apr_proc_t *new, newargs[3] = NULL; if (attr->detached) { - apr_proc_detach(APR_PROC_DETACH_DAEMONIZE); + fspr_proc_detach(APR_PROC_DETACH_DAEMONIZE); } if (attr->cmdtype == APR_SHELLCMD) { @@ -518,14 +517,14 @@ APR_DECLARE(apr_status_t) apr_proc_create(apr_proc_t *new, } else if (attr->cmdtype == APR_PROGRAM) { if (attr->detached) { - apr_proc_detach(APR_PROC_DETACH_DAEMONIZE); + fspr_proc_detach(APR_PROC_DETACH_DAEMONIZE); } execve(progname, (char * const *)args, (char * const *)env); } else if (attr->cmdtype == APR_PROGRAM_ENV) { if (attr->detached) { - apr_proc_detach(APR_PROC_DETACH_DAEMONIZE); + fspr_proc_detach(APR_PROC_DETACH_DAEMONIZE); } execv(progname, (char * const *)args); @@ -533,7 +532,7 @@ APR_DECLARE(apr_status_t) apr_proc_create(apr_proc_t *new, else { /* APR_PROGRAM_PATH */ if (attr->detached) { - apr_proc_detach(APR_PROC_DETACH_DAEMONIZE); + fspr_proc_detach(APR_PROC_DETACH_DAEMONIZE); } execvp(progname, (char * const *)args); @@ -541,7 +540,7 @@ APR_DECLARE(apr_status_t) apr_proc_create(apr_proc_t *new, if (attr->errfn) { char *desc; - desc = apr_psprintf(pool, "exec of '%s' failed", + desc = fspr_psprintf(pool, "exec of '%s' failed", progname); attr->errfn(pool, errno, desc); } @@ -552,39 +551,39 @@ APR_DECLARE(apr_status_t) apr_proc_create(apr_proc_t *new, /* Parent process */ if (attr->child_in) { - apr_file_close(attr->child_in); + fspr_file_close(attr->child_in); } if (attr->child_out) { - apr_file_close(attr->child_out); + fspr_file_close(attr->child_out); } if (attr->child_err) { - apr_file_close(attr->child_err); + fspr_file_close(attr->child_err); } return APR_SUCCESS; } -APR_DECLARE(apr_status_t) apr_proc_wait_all_procs(apr_proc_t *proc, +APR_DECLARE(fspr_status_t) fspr_proc_wait_all_procs(fspr_proc_t *proc, int *exitcode, - apr_exit_why_e *exitwhy, - apr_wait_how_e waithow, - apr_pool_t *p) + fspr_exit_why_e *exitwhy, + fspr_wait_how_e waithow, + fspr_pool_t *p) { proc->pid = -1; - return apr_proc_wait(proc, exitcode, exitwhy, waithow); + return fspr_proc_wait(proc, exitcode, exitwhy, waithow); } -APR_DECLARE(apr_status_t) apr_proc_wait(apr_proc_t *proc, - int *exitcode, apr_exit_why_e *exitwhy, - apr_wait_how_e waithow) +APR_DECLARE(fspr_status_t) fspr_proc_wait(fspr_proc_t *proc, + int *exitcode, fspr_exit_why_e *exitwhy, + fspr_wait_how_e waithow) { pid_t pstatus; int waitpid_options = WUNTRACED; int exit_int; int ignore; - apr_exit_why_e ignorewhy; + fspr_exit_why_e ignorewhy; if (exitcode == NULL) { exitcode = &ignore; @@ -634,8 +633,8 @@ APR_DECLARE(apr_status_t) apr_proc_wait(apr_proc_t *proc, return errno; } -APR_DECLARE(apr_status_t) apr_procattr_limit_set(apr_procattr_t *attr, - apr_int32_t what, +APR_DECLARE(fspr_status_t) fspr_procattr_limit_set(fspr_procattr_t *attr, + fspr_int32_t what, struct rlimit *limit) { switch(what) { diff --git a/libs/apr/threadproc/unix/procsup.c b/libs/apr/threadproc/unix/procsup.c index caf13bfa73f..d37828c5150 100644 --- a/libs/apr/threadproc/unix/procsup.c +++ b/libs/apr/threadproc/unix/procsup.c @@ -14,9 +14,9 @@ * limitations under the License. */ -#include "apr_arch_threadproc.h" +#include "fspr_arch_threadproc.h" -APR_DECLARE(apr_status_t) apr_proc_detach(int daemonize) +APR_DECLARE(fspr_status_t) fspr_proc_detach(int daemonize) { int x; diff --git a/libs/apr/threadproc/unix/signals.c b/libs/apr/threadproc/unix/signals.c index f44c3d7859c..44da95a335e 100644 --- a/libs/apr/threadproc/unix/signals.c +++ b/libs/apr/threadproc/unix/signals.c @@ -15,11 +15,11 @@ */ #define INCL_DOSEXCEPTIONS /* for OS2 */ -#include "apr_arch_threadproc.h" -#include "apr_private.h" -#include "apr_pools.h" -#include "apr_signal.h" -#include "apr_strings.h" +#include "fspr_arch_threadproc.h" +#include "fspr_private.h" +#include "fspr_pools.h" +#include "fspr_signal.h" +#include "fspr_strings.h" #include #if APR_HAS_THREADS && APR_HAVE_PTHREAD_H @@ -27,12 +27,12 @@ #endif #ifdef SIGWAIT_TAKES_ONE_ARG -#define apr_sigwait(a,b) ((*(b)=sigwait((a)))<0?-1:0) +#define fspr_sigwait(a,b) ((*(b)=sigwait((a)))<0?-1:0) #else -#define apr_sigwait(a,b) sigwait((a),(b)) +#define fspr_sigwait(a,b) sigwait((a),(b)) #endif -APR_DECLARE(apr_status_t) apr_proc_kill(apr_proc_t *proc, int signum) +APR_DECLARE(fspr_status_t) fspr_proc_kill(fspr_proc_t *proc, int signum) { #ifdef OS2 /* SIGTERM's don't work too well in OS/2 (only affects other EMX @@ -71,7 +71,7 @@ static void avoid_zombies(int signo) * from W. Richard Stevens' "Advanced Programming in the UNIX Environment" * (the version that does not automatically restart system calls). */ -APR_DECLARE(apr_sigfunc_t *) apr_signal(int signo, apr_sigfunc_t * func) +APR_DECLARE(fspr_sigfunc_t *) fspr_signal(int signo, fspr_sigfunc_t * func) { struct sigaction act, oact; @@ -111,10 +111,10 @@ APR_DECLARE(apr_sigfunc_t *) apr_signal(int signo, apr_sigfunc_t * func) * on the version of autoconf used. */ #if defined(SYS_SIGLIST_DECLARED) || HAVE_DECL_SYS_SIGLIST -void apr_signal_init(apr_pool_t *pglobal) +void fspr_signal_init(fspr_pool_t *pglobal) { } -const char *apr_signal_description_get(int signum) +const char *fspr_signal_description_get(int signum) { return sys_siglist[signum]; } @@ -145,7 +145,7 @@ static const char *signal_description[APR_NUMSIG]; } \ } while (0) -void apr_signal_init(apr_pool_t *pglobal) +void fspr_signal_init(fspr_pool_t *pglobal) { int sig; @@ -256,10 +256,10 @@ void apr_signal_init(apr_pool_t *pglobal) for (sig = 0; sig < APR_NUMSIG; ++sig) if (signal_description[sig] == NULL) - signal_description[sig] = apr_psprintf(pglobal, "signal #%d", sig); + signal_description[sig] = fspr_psprintf(pglobal, "signal #%d", sig); } -const char *apr_signal_description_get(int signum) +const char *fspr_signal_description_get(int signum) { return signum < APR_NUMSIG @@ -316,7 +316,7 @@ static void remove_sync_sigs(sigset_t *sig_mask) #endif } -APR_DECLARE(apr_status_t) apr_signal_thread(int(*signal_handler)(int signum)) +APR_DECLARE(fspr_status_t) fspr_signal_thread(int(*signal_handler)(int signum)) { sigset_t sig_mask; #if APR_HAVE_SIGWAIT @@ -380,7 +380,7 @@ APR_DECLARE(apr_status_t) apr_signal_thread(int(*signal_handler)(int signum)) #if APR_HAVE_SIGWAIT int signal_received; - if (apr_sigwait(&sig_mask, &signal_received) != 0) + if (fspr_sigwait(&sig_mask, &signal_received) != 0) { /* handle sigwait() error here */ } @@ -391,12 +391,12 @@ APR_DECLARE(apr_status_t) apr_signal_thread(int(*signal_handler)(int signum)) #elif HAVE_SIGSUSPEND sigsuspend(&sig_mask); #else -#error No apr_sigwait() and no sigsuspend() +#error No fspr_sigwait() and no sigsuspend() #endif } } -APR_DECLARE(apr_status_t) apr_setup_signal_thread(void) +APR_DECLARE(fspr_status_t) fspr_setup_signal_thread(void) { sigset_t sig_mask; int rv; @@ -432,7 +432,7 @@ APR_DECLARE(apr_status_t) apr_setup_signal_thread(void) #endif /* APR_HAS_THREADS && ... */ -APR_DECLARE(apr_status_t) apr_signal_block(int signum) +APR_DECLARE(fspr_status_t) fspr_signal_block(int signum) { #if APR_HAVE_SIGACTION sigset_t sig_mask; @@ -459,7 +459,7 @@ APR_DECLARE(apr_status_t) apr_signal_block(int signum) #endif } -APR_DECLARE(apr_status_t) apr_signal_unblock(int signum) +APR_DECLARE(fspr_status_t) fspr_signal_unblock(int signum) { #if APR_HAVE_SIGACTION sigset_t sig_mask; diff --git a/libs/apr/threadproc/unix/thread.c b/libs/apr/threadproc/unix/thread.c index 165dddc2380..0deaefa1a87 100644 --- a/libs/apr/threadproc/unix/thread.c +++ b/libs/apr/threadproc/unix/thread.c @@ -14,19 +14,19 @@ * limitations under the License. */ -#include "apr.h" -#include "apr_portable.h" -#include "apr_arch_threadproc.h" +#include "fspr.h" +#include "fspr_portable.h" +#include "fspr_arch_threadproc.h" #if APR_HAS_THREADS #if APR_HAVE_PTHREAD_H /* Destroy the threadattr object */ -static apr_status_t threadattr_cleanup(void *data) +static fspr_status_t threadattr_cleanup(void *data) { - apr_threadattr_t *attr = data; - apr_status_t rv; + fspr_threadattr_t *attr = data; + fspr_status_t rv; rv = pthread_attr_destroy(&attr->attr); #ifdef PTHREAD_SETS_ERRNO @@ -37,18 +37,18 @@ static apr_status_t threadattr_cleanup(void *data) return rv; } -APR_DECLARE(apr_status_t) apr_threadattr_create(apr_threadattr_t **new, - apr_pool_t *pool) +APR_DECLARE(fspr_status_t) fspr_threadattr_create(fspr_threadattr_t **new, + fspr_pool_t *pool) { - apr_status_t stat; + fspr_status_t stat; - (*new) = apr_palloc(pool, sizeof(apr_threadattr_t)); + (*new) = fspr_palloc(pool, sizeof(fspr_threadattr_t)); (*new)->pool = pool; stat = pthread_attr_init(&(*new)->attr); if (stat == 0) { - apr_pool_cleanup_register(pool, *new, threadattr_cleanup, - apr_pool_cleanup_null); + fspr_pool_cleanup_register(pool, *new, threadattr_cleanup, + fspr_pool_cleanup_null); return APR_SUCCESS; } #ifdef PTHREAD_SETS_ERRNO @@ -60,10 +60,10 @@ APR_DECLARE(apr_status_t) apr_threadattr_create(apr_threadattr_t **new, #define DETACH_ARG(v) ((v) ? PTHREAD_CREATE_DETACHED : PTHREAD_CREATE_JOINABLE) -APR_DECLARE(apr_status_t) apr_threadattr_detach_set(apr_threadattr_t *attr, - apr_int32_t on) +APR_DECLARE(fspr_status_t) fspr_threadattr_detach_set(fspr_threadattr_t *attr, + fspr_int32_t on) { - apr_status_t stat; + fspr_status_t stat; #ifdef PTHREAD_ATTR_SETDETACHSTATE_ARG2_ADDR int arg = DETACH_ARG(v); @@ -83,7 +83,7 @@ APR_DECLARE(apr_status_t) apr_threadattr_detach_set(apr_threadattr_t *attr, } } -APR_DECLARE(apr_status_t) apr_threadattr_detach_get(apr_threadattr_t *attr) +APR_DECLARE(fspr_status_t) fspr_threadattr_detach_get(fspr_threadattr_t *attr) { int state; @@ -97,8 +97,8 @@ APR_DECLARE(apr_status_t) apr_threadattr_detach_get(apr_threadattr_t *attr) return APR_NOTDETACH; } -APR_DECLARE(apr_status_t) apr_threadattr_stacksize_set(apr_threadattr_t *attr, - apr_size_t stacksize) +APR_DECLARE(fspr_status_t) fspr_threadattr_stacksize_set(fspr_threadattr_t *attr, + fspr_size_t stacksize) { int stat; @@ -113,11 +113,11 @@ APR_DECLARE(apr_status_t) apr_threadattr_stacksize_set(apr_threadattr_t *attr, return stat; } -APR_DECLARE(apr_status_t) apr_threadattr_guardsize_set(apr_threadattr_t *attr, - apr_size_t size) +APR_DECLARE(fspr_status_t) fspr_threadattr_guardsize_set(fspr_threadattr_t *attr, + fspr_size_t size) { #ifdef HAVE_PTHREAD_ATTR_SETGUARDSIZE - apr_status_t rv; + fspr_status_t rv; rv = pthread_attr_setguardsize(&attr->attr, size); if (rv == 0) { @@ -134,7 +134,7 @@ APR_DECLARE(apr_status_t) apr_threadattr_guardsize_set(apr_threadattr_t *attr, static void *dummy_worker(void *opaque) { - apr_thread_t *thread = (apr_thread_t*)opaque; + fspr_thread_t *thread = (fspr_thread_t*)opaque; #ifdef HAVE_PTHREAD_SETSCHEDPARAM if (thread->priority) { @@ -151,23 +151,23 @@ static void *dummy_worker(void *opaque) return thread->func(thread, thread->data); } -APR_DECLARE(apr_status_t) apr_thread_create(apr_thread_t **new, - apr_threadattr_t *attr, - apr_thread_start_t func, +APR_DECLARE(fspr_status_t) fspr_thread_create(fspr_thread_t **new, + fspr_threadattr_t *attr, + fspr_thread_start_t func, void *data, - apr_pool_t *pool) + fspr_pool_t *pool) { - apr_status_t stat; + fspr_status_t stat; pthread_attr_t *temp; pthread_t tt; - (*new) = (apr_thread_t *)apr_pcalloc(pool, sizeof(apr_thread_t)); + (*new) = (fspr_thread_t *)fspr_pcalloc(pool, sizeof(fspr_thread_t)); if ((*new) == NULL) { return APR_ENOMEM; } - (*new)->td = (pthread_t *)apr_pcalloc(pool, sizeof(pthread_t)); + (*new)->td = (pthread_t *)fspr_pcalloc(pool, sizeof(pthread_t)); if ((*new)->td == NULL) { return APR_ENOMEM; @@ -182,7 +182,7 @@ APR_DECLARE(apr_status_t) apr_thread_create(apr_thread_t **new, else temp = NULL; - stat = apr_pool_create(&(*new)->pool, pool); + stat = fspr_pool_create(&(*new)->pool, pool); if (stat != APR_SUCCESS) { return stat; } @@ -205,31 +205,31 @@ APR_DECLARE(apr_status_t) apr_thread_create(apr_thread_t **new, } } -APR_DECLARE(apr_os_thread_t) apr_os_thread_current(void) +APR_DECLARE(fspr_os_thread_t) fspr_os_thread_current(void) { return pthread_self(); } -APR_DECLARE(int) apr_os_thread_equal(apr_os_thread_t tid1, - apr_os_thread_t tid2) +APR_DECLARE(int) fspr_os_thread_equal(fspr_os_thread_t tid1, + fspr_os_thread_t tid2) { return pthread_equal(tid1, tid2); } -APR_DECLARE(apr_status_t) apr_thread_exit(apr_thread_t *thd, - apr_status_t retval) +APR_DECLARE(fspr_status_t) fspr_thread_exit(fspr_thread_t *thd, + fspr_status_t retval) { thd->exitval = retval; - apr_pool_destroy(thd->pool); + fspr_pool_destroy(thd->pool); pthread_exit(NULL); return APR_SUCCESS; } -APR_DECLARE(apr_status_t) apr_thread_join(apr_status_t *retval, - apr_thread_t *thd) +APR_DECLARE(fspr_status_t) fspr_thread_join(fspr_status_t *retval, + fspr_thread_t *thd) { - apr_status_t stat; - apr_status_t *thread_stat; + fspr_status_t stat; + fspr_status_t *thread_stat; if ((stat = pthread_join(*thd->td,(void *)&thread_stat)) == 0) { *retval = thd->exitval; @@ -244,9 +244,9 @@ APR_DECLARE(apr_status_t) apr_thread_join(apr_status_t *retval, } } -APR_DECLARE(apr_status_t) apr_thread_detach(apr_thread_t *thd) +APR_DECLARE(fspr_status_t) fspr_thread_detach(fspr_thread_t *thd) { - apr_status_t stat; + fspr_status_t stat; #ifdef PTHREAD_DETACH_ARG1_ADDR if ((stat = pthread_detach(thd->td)) == 0) { @@ -265,40 +265,40 @@ APR_DECLARE(apr_status_t) apr_thread_detach(apr_thread_t *thd) } } -void apr_thread_yield() +void fspr_thread_yield() { } -APR_DECLARE(apr_status_t) apr_thread_data_get(void **data, const char *key, - apr_thread_t *thread) +APR_DECLARE(fspr_status_t) fspr_thread_data_get(void **data, const char *key, + fspr_thread_t *thread) { - return apr_pool_userdata_get(data, key, thread->pool); + return fspr_pool_userdata_get(data, key, thread->pool); } -APR_DECLARE(apr_status_t) apr_thread_data_set(void *data, const char *key, - apr_status_t (*cleanup)(void *), - apr_thread_t *thread) +APR_DECLARE(fspr_status_t) fspr_thread_data_set(void *data, const char *key, + fspr_status_t (*cleanup)(void *), + fspr_thread_t *thread) { - return apr_pool_userdata_set(data, key, cleanup, thread->pool); + return fspr_pool_userdata_set(data, key, cleanup, thread->pool); } -APR_DECLARE(apr_status_t) apr_os_thread_get(apr_os_thread_t **thethd, - apr_thread_t *thd) +APR_DECLARE(fspr_status_t) fspr_os_thread_get(fspr_os_thread_t **thethd, + fspr_thread_t *thd) { *thethd = thd->td; return APR_SUCCESS; } -APR_DECLARE(apr_status_t) apr_os_thread_put(apr_thread_t **thd, - apr_os_thread_t *thethd, - apr_pool_t *pool) +APR_DECLARE(fspr_status_t) fspr_os_thread_put(fspr_thread_t **thd, + fspr_os_thread_t *thethd, + fspr_pool_t *pool) { if (pool == NULL) { return APR_ENOPOOL; } if ((*thd) == NULL) { - (*thd) = (apr_thread_t *)apr_pcalloc(pool, sizeof(apr_thread_t)); + (*thd) = (fspr_thread_t *)fspr_pcalloc(pool, sizeof(fspr_thread_t)); (*thd)->pool = pool; } @@ -306,17 +306,17 @@ APR_DECLARE(apr_status_t) apr_os_thread_put(apr_thread_t **thd, return APR_SUCCESS; } -APR_DECLARE(apr_status_t) apr_thread_once_init(apr_thread_once_t **control, - apr_pool_t *p) +APR_DECLARE(fspr_status_t) fspr_thread_once_init(fspr_thread_once_t **control, + fspr_pool_t *p) { static const pthread_once_t once_init = PTHREAD_ONCE_INIT; - *control = apr_palloc(p, sizeof(**control)); + *control = fspr_palloc(p, sizeof(**control)); (*control)->once = once_init; return APR_SUCCESS; } -APR_DECLARE(apr_status_t) apr_thread_once(apr_thread_once_t *control, +APR_DECLARE(fspr_status_t) fspr_thread_once(fspr_thread_once_t *control, void (*func)(void)) { return pthread_once(&control->once, func); @@ -330,9 +330,9 @@ APR_POOL_IMPLEMENT_ACCESSOR(thread) #if !APR_HAS_THREADS /* avoid warning for no prototype */ -APR_DECLARE(apr_status_t) apr_os_thread_get(void); +APR_DECLARE(fspr_status_t) fspr_os_thread_get(void); -APR_DECLARE(apr_status_t) apr_os_thread_get(void) +APR_DECLARE(fspr_status_t) fspr_os_thread_get(void) { return APR_ENOTIMPL; } diff --git a/libs/apr/threadproc/unix/threadpriv.c b/libs/apr/threadproc/unix/threadpriv.c index c2785203801..fcc0e4d753c 100644 --- a/libs/apr/threadproc/unix/threadpriv.c +++ b/libs/apr/threadproc/unix/threadpriv.c @@ -14,18 +14,18 @@ * limitations under the License. */ -#include "apr.h" -#include "apr_portable.h" -#include "apr_arch_threadproc.h" +#include "fspr.h" +#include "fspr_portable.h" +#include "fspr_arch_threadproc.h" #if APR_HAS_THREADS #if APR_HAVE_PTHREAD_H -APR_DECLARE(apr_status_t) apr_threadkey_private_create(apr_threadkey_t **key, +APR_DECLARE(fspr_status_t) fspr_threadkey_private_create(fspr_threadkey_t **key, void (*dest)(void *), - apr_pool_t *pool) + fspr_pool_t *pool) { - (*key) = (apr_threadkey_t *)apr_pcalloc(pool, sizeof(apr_threadkey_t)); + (*key) = (fspr_threadkey_t *)fspr_pcalloc(pool, sizeof(fspr_threadkey_t)); if ((*key) == NULL) { return APR_ENOMEM; @@ -37,8 +37,8 @@ APR_DECLARE(apr_status_t) apr_threadkey_private_create(apr_threadkey_t **key, } -APR_DECLARE(apr_status_t) apr_threadkey_private_get(void **new, - apr_threadkey_t *key) +APR_DECLARE(fspr_status_t) fspr_threadkey_private_get(void **new, + fspr_threadkey_t *key) { #ifdef PTHREAD_GETSPECIFIC_TAKES_TWO_ARGS if (pthread_getspecific(key->key,new)) @@ -49,10 +49,10 @@ APR_DECLARE(apr_status_t) apr_threadkey_private_get(void **new, return APR_SUCCESS; } -APR_DECLARE(apr_status_t) apr_threadkey_private_set(void *priv, - apr_threadkey_t *key) +APR_DECLARE(fspr_status_t) fspr_threadkey_private_set(void *priv, + fspr_threadkey_t *key) { - apr_status_t stat; + fspr_status_t stat; if ((stat = pthread_setspecific(key->key, priv)) == 0) { return APR_SUCCESS; @@ -62,10 +62,10 @@ APR_DECLARE(apr_status_t) apr_threadkey_private_set(void *priv, } } -APR_DECLARE(apr_status_t) apr_threadkey_private_delete(apr_threadkey_t *key) +APR_DECLARE(fspr_status_t) fspr_threadkey_private_delete(fspr_threadkey_t *key) { #ifdef HAVE_PTHREAD_KEY_DELETE - apr_status_t stat; + fspr_status_t stat; if ((stat = pthread_key_delete(key->key)) == 0) { return APR_SUCCESS; @@ -77,36 +77,36 @@ APR_DECLARE(apr_status_t) apr_threadkey_private_delete(apr_threadkey_t *key) #endif } -APR_DECLARE(apr_status_t) apr_threadkey_data_get(void **data, const char *key, - apr_threadkey_t *threadkey) +APR_DECLARE(fspr_status_t) fspr_threadkey_data_get(void **data, const char *key, + fspr_threadkey_t *threadkey) { - return apr_pool_userdata_get(data, key, threadkey->pool); + return fspr_pool_userdata_get(data, key, threadkey->pool); } -APR_DECLARE(apr_status_t) apr_threadkey_data_set(void *data, const char *key, - apr_status_t (*cleanup)(void *), - apr_threadkey_t *threadkey) +APR_DECLARE(fspr_status_t) fspr_threadkey_data_set(void *data, const char *key, + fspr_status_t (*cleanup)(void *), + fspr_threadkey_t *threadkey) { - return apr_pool_userdata_set(data, key, cleanup, threadkey->pool); + return fspr_pool_userdata_set(data, key, cleanup, threadkey->pool); } -APR_DECLARE(apr_status_t) apr_os_threadkey_get(apr_os_threadkey_t *thekey, - apr_threadkey_t *key) +APR_DECLARE(fspr_status_t) fspr_os_threadkey_get(fspr_os_threadkey_t *thekey, + fspr_threadkey_t *key) { *thekey = key->key; return APR_SUCCESS; } -APR_DECLARE(apr_status_t) apr_os_threadkey_put(apr_threadkey_t **key, - apr_os_threadkey_t *thekey, - apr_pool_t *pool) +APR_DECLARE(fspr_status_t) fspr_os_threadkey_put(fspr_threadkey_t **key, + fspr_os_threadkey_t *thekey, + fspr_pool_t *pool) { if (pool == NULL) { return APR_ENOPOOL; } if ((*key) == NULL) { - (*key) = (apr_threadkey_t *)apr_pcalloc(pool, sizeof(apr_threadkey_t)); + (*key) = (fspr_threadkey_t *)fspr_pcalloc(pool, sizeof(fspr_threadkey_t)); (*key)->pool = pool; } @@ -119,9 +119,9 @@ APR_DECLARE(apr_status_t) apr_os_threadkey_put(apr_threadkey_t **key, #if !APR_HAS_THREADS /* avoid warning for no prototype */ -APR_DECLARE(apr_status_t) apr_os_threadkey_get(void); +APR_DECLARE(fspr_status_t) fspr_os_threadkey_get(void); -APR_DECLARE(apr_status_t) apr_os_threadkey_get(void) +APR_DECLARE(fspr_status_t) fspr_os_threadkey_get(void) { return APR_ENOTIMPL; } diff --git a/libs/apr/threadproc/win32/proc.c b/libs/apr/threadproc/win32/proc.c index 014dfc84283..24f725d3dd2 100644 --- a/libs/apr/threadproc/win32/proc.c +++ b/libs/apr/threadproc/win32/proc.c @@ -14,15 +14,15 @@ * limitations under the License. */ -#include "win32/apr_arch_threadproc.h" -#include "win32/apr_arch_file_io.h" - -#include "apr_thread_proc.h" -#include "apr_file_io.h" -#include "apr_general.h" -#include "apr_strings.h" -#include "apr_portable.h" -#include "apr_lib.h" +#include "win32/fspr_arch_threadproc.h" +#include "win32/fspr_arch_file_io.h" + +#include "fspr_thread_proc.h" +#include "fspr_file_io.h" +#include "fspr_general.h" +#include "fspr_strings.h" +#include "fspr_portable.h" +#include "fspr_lib.h" #include #if APR_HAVE_SIGNAL_H #include @@ -52,21 +52,21 @@ * */ -APR_DECLARE(apr_status_t) apr_procattr_create(apr_procattr_t **new, - apr_pool_t *pool) +APR_DECLARE(fspr_status_t) fspr_procattr_create(fspr_procattr_t **new, + fspr_pool_t *pool) { - (*new) = (apr_procattr_t *)apr_pcalloc(pool, sizeof(apr_procattr_t)); + (*new) = (fspr_procattr_t *)fspr_pcalloc(pool, sizeof(fspr_procattr_t)); (*new)->pool = pool; (*new)->cmdtype = APR_PROGRAM; return APR_SUCCESS; } -APR_DECLARE(apr_status_t) apr_procattr_io_set(apr_procattr_t *attr, - apr_int32_t in, - apr_int32_t out, - apr_int32_t err) +APR_DECLARE(fspr_status_t) fspr_procattr_io_set(fspr_procattr_t *attr, + fspr_int32_t in, + fspr_int32_t out, + fspr_int32_t err) { - apr_status_t stat = APR_SUCCESS; + fspr_status_t stat = APR_SUCCESS; if (in) { /* APR_CHILD_BLOCK maps to APR_WRITE_BLOCK, while @@ -79,138 +79,138 @@ APR_DECLARE(apr_status_t) apr_procattr_io_set(apr_procattr_t *attr, in = APR_READ_BLOCK; else if (in == APR_PARENT_BLOCK) in = APR_WRITE_BLOCK; - stat = apr_create_nt_pipe(&attr->child_in, &attr->parent_in, in, + stat = fspr_create_nt_pipe(&attr->child_in, &attr->parent_in, in, attr->pool); if (stat == APR_SUCCESS) - stat = apr_file_inherit_unset(attr->parent_in); + stat = fspr_file_inherit_unset(attr->parent_in); } if (out && stat == APR_SUCCESS) { - stat = apr_create_nt_pipe(&attr->parent_out, &attr->child_out, out, + stat = fspr_create_nt_pipe(&attr->parent_out, &attr->child_out, out, attr->pool); if (stat == APR_SUCCESS) - stat = apr_file_inherit_unset(attr->parent_out); + stat = fspr_file_inherit_unset(attr->parent_out); } if (err && stat == APR_SUCCESS) { - stat = apr_create_nt_pipe(&attr->parent_err, &attr->child_err, err, + stat = fspr_create_nt_pipe(&attr->parent_err, &attr->child_err, err, attr->pool); if (stat == APR_SUCCESS) - stat = apr_file_inherit_unset(attr->parent_err); + stat = fspr_file_inherit_unset(attr->parent_err); } return stat; } -APR_DECLARE(apr_status_t) apr_procattr_child_in_set(apr_procattr_t *attr, - apr_file_t *child_in, - apr_file_t *parent_in) +APR_DECLARE(fspr_status_t) fspr_procattr_child_in_set(fspr_procattr_t *attr, + fspr_file_t *child_in, + fspr_file_t *parent_in) { - apr_status_t rv = APR_SUCCESS; + fspr_status_t rv = APR_SUCCESS; if (child_in) { if (attr->child_in == NULL) - rv = apr_file_dup(&attr->child_in, child_in, attr->pool); + rv = fspr_file_dup(&attr->child_in, child_in, attr->pool); else - rv = apr_file_dup2(attr->child_in, child_in, attr->pool); + rv = fspr_file_dup2(attr->child_in, child_in, attr->pool); if (rv == APR_SUCCESS) - rv = apr_file_inherit_set(attr->child_in); + rv = fspr_file_inherit_set(attr->child_in); } if (parent_in && rv == APR_SUCCESS) { if (attr->parent_in == NULL) - rv = apr_file_dup(&attr->parent_in, parent_in, attr->pool); + rv = fspr_file_dup(&attr->parent_in, parent_in, attr->pool); else - rv = apr_file_dup2(attr->parent_in, parent_in, attr->pool); + rv = fspr_file_dup2(attr->parent_in, parent_in, attr->pool); } return rv; } -APR_DECLARE(apr_status_t) apr_procattr_child_out_set(apr_procattr_t *attr, - apr_file_t *child_out, - apr_file_t *parent_out) +APR_DECLARE(fspr_status_t) fspr_procattr_child_out_set(fspr_procattr_t *attr, + fspr_file_t *child_out, + fspr_file_t *parent_out) { - apr_status_t rv = APR_SUCCESS; + fspr_status_t rv = APR_SUCCESS; if (child_out) { if (attr->child_out == NULL) - rv = apr_file_dup(&attr->child_out, child_out, attr->pool); + rv = fspr_file_dup(&attr->child_out, child_out, attr->pool); else - rv = apr_file_dup2(attr->child_out, child_out, attr->pool); + rv = fspr_file_dup2(attr->child_out, child_out, attr->pool); if (rv == APR_SUCCESS) - rv = apr_file_inherit_set(attr->child_out); + rv = fspr_file_inherit_set(attr->child_out); } if (parent_out && rv == APR_SUCCESS) { if (attr->parent_out == NULL) - rv = apr_file_dup(&attr->parent_out, parent_out, attr->pool); + rv = fspr_file_dup(&attr->parent_out, parent_out, attr->pool); else - rv = apr_file_dup2(attr->parent_out, parent_out, attr->pool); + rv = fspr_file_dup2(attr->parent_out, parent_out, attr->pool); } return rv; } -APR_DECLARE(apr_status_t) apr_procattr_child_err_set(apr_procattr_t *attr, - apr_file_t *child_err, - apr_file_t *parent_err) +APR_DECLARE(fspr_status_t) fspr_procattr_child_err_set(fspr_procattr_t *attr, + fspr_file_t *child_err, + fspr_file_t *parent_err) { - apr_status_t rv = APR_SUCCESS; + fspr_status_t rv = APR_SUCCESS; if (child_err) { if (attr->child_err == NULL) - rv = apr_file_dup(&attr->child_err, child_err, attr->pool); + rv = fspr_file_dup(&attr->child_err, child_err, attr->pool); else - rv = apr_file_dup2(attr->child_err, child_err, attr->pool); + rv = fspr_file_dup2(attr->child_err, child_err, attr->pool); if (rv == APR_SUCCESS) - rv = apr_file_inherit_set(attr->child_err); + rv = fspr_file_inherit_set(attr->child_err); } if (parent_err && rv == APR_SUCCESS) { if (attr->parent_err == NULL) - rv = apr_file_dup(&attr->parent_err, parent_err, attr->pool); + rv = fspr_file_dup(&attr->parent_err, parent_err, attr->pool); else - rv = apr_file_dup2(attr->parent_err, parent_err, attr->pool); + rv = fspr_file_dup2(attr->parent_err, parent_err, attr->pool); } return rv; } -APR_DECLARE(apr_status_t) apr_procattr_dir_set(apr_procattr_t *attr, +APR_DECLARE(fspr_status_t) fspr_procattr_dir_set(fspr_procattr_t *attr, const char *dir) { /* curr dir must be in native format, there are all sorts of bugs in * the NT library loading code that flunk the '/' parsing test. */ - return apr_filepath_merge(&attr->currdir, NULL, dir, + return fspr_filepath_merge(&attr->currdir, NULL, dir, APR_FILEPATH_NATIVE, attr->pool); } -APR_DECLARE(apr_status_t) apr_procattr_cmdtype_set(apr_procattr_t *attr, - apr_cmdtype_e cmd) +APR_DECLARE(fspr_status_t) fspr_procattr_cmdtype_set(fspr_procattr_t *attr, + fspr_cmdtype_e cmd) { attr->cmdtype = cmd; return APR_SUCCESS; } -APR_DECLARE(apr_status_t) apr_procattr_detach_set(apr_procattr_t *attr, - apr_int32_t det) +APR_DECLARE(fspr_status_t) fspr_procattr_detach_set(fspr_procattr_t *attr, + fspr_int32_t det) { attr->detached = det; return APR_SUCCESS; } -static apr_status_t attr_cleanup(void *theattr) +static fspr_status_t attr_cleanup(void *theattr) { - apr_procattr_t *attr = (apr_procattr_t *)theattr; + fspr_procattr_t *attr = (fspr_procattr_t *)theattr; if (attr->user_token) CloseHandle(attr->user_token); attr->user_token = NULL; return APR_SUCCESS; } -APR_DECLARE(apr_status_t) apr_procattr_user_set(apr_procattr_t *attr, +APR_DECLARE(fspr_status_t) fspr_procattr_user_set(fspr_procattr_t *attr, const char *username, const char *password) { @@ -218,18 +218,18 @@ APR_DECLARE(apr_status_t) apr_procattr_user_set(apr_procattr_t *attr, return APR_ENOTIMPL; #else HANDLE user; - apr_wchar_t *wusername = NULL; - apr_wchar_t *wpassword = NULL; - apr_status_t rv; - apr_size_t len, wlen; + fspr_wchar_t *wusername = NULL; + fspr_wchar_t *wpassword = NULL; + fspr_status_t rv; + fspr_size_t len, wlen; - if (apr_os_level >= APR_WIN_NT_4) + if (fspr_os_level >= APR_WIN_NT_4) { if (attr->user_token) { /* Cannot set that twice */ if (attr->errfn) { attr->errfn(attr->pool, 0, - apr_pstrcat(attr->pool, + fspr_pstrcat(attr->pool, "function called twice" " on username: ", username, NULL)); } @@ -237,12 +237,12 @@ APR_DECLARE(apr_status_t) apr_procattr_user_set(apr_procattr_t *attr, } len = strlen(username) + 1; wlen = len; - wusername = apr_palloc(attr->pool, wlen * sizeof(apr_wchar_t)); - if ((rv = apr_conv_utf8_to_ucs2(username, &len, wusername, &wlen)) + wusername = fspr_palloc(attr->pool, wlen * sizeof(fspr_wchar_t)); + if ((rv = fspr_conv_utf8_to_ucs2(username, &len, wusername, &wlen)) != APR_SUCCESS) { if (attr->errfn) { attr->errfn(attr->pool, rv, - apr_pstrcat(attr->pool, + fspr_pstrcat(attr->pool, "utf8 to ucs2 conversion failed" " on username: ", username, NULL)); } @@ -251,12 +251,12 @@ APR_DECLARE(apr_status_t) apr_procattr_user_set(apr_procattr_t *attr, if (password) { len = strlen(password) + 1; wlen = len; - wpassword = apr_palloc(attr->pool, wlen * sizeof(apr_wchar_t)); - if ((rv = apr_conv_utf8_to_ucs2(password, &len, wpassword, &wlen)) + wpassword = fspr_palloc(attr->pool, wlen * sizeof(fspr_wchar_t)); + if ((rv = fspr_conv_utf8_to_ucs2(password, &len, wpassword, &wlen)) != APR_SUCCESS) { if (attr->errfn) { attr->errfn(attr->pool, rv, - apr_pstrcat(attr->pool, + fspr_pstrcat(attr->pool, "utf8 to ucs2 conversion failed" " on password: ", password, NULL)); } @@ -270,10 +270,10 @@ APR_DECLARE(apr_status_t) apr_procattr_user_set(apr_procattr_t *attr, LOGON32_PROVIDER_DEFAULT, &user)) { /* Logon Failed */ - return apr_get_os_error(); + return fspr_get_os_error(); } if (wpassword) - memset(wpassword, 0, wlen * sizeof(apr_wchar_t)); + memset(wpassword, 0, wlen * sizeof(fspr_wchar_t)); /* Get the primary token for user */ if (!DuplicateTokenEx(user, TOKEN_QUERY | TOKEN_DUPLICATE | TOKEN_ASSIGN_PRIMARY, @@ -282,24 +282,24 @@ APR_DECLARE(apr_status_t) apr_procattr_user_set(apr_procattr_t *attr, TokenPrimary, &(attr->user_token))) { /* Failed to duplicate the user token */ - rv = apr_get_os_error(); + rv = fspr_get_os_error(); CloseHandle(user); return rv; } CloseHandle(user); - attr->sd = apr_pcalloc(attr->pool, SECURITY_DESCRIPTOR_MIN_LENGTH); + attr->sd = fspr_pcalloc(attr->pool, SECURITY_DESCRIPTOR_MIN_LENGTH); InitializeSecurityDescriptor(attr->sd, SECURITY_DESCRIPTOR_REVISION); SetSecurityDescriptorDacl(attr->sd, -1, 0, 0); - attr->sa = apr_palloc(attr->pool, sizeof(SECURITY_ATTRIBUTES)); + attr->sa = fspr_palloc(attr->pool, sizeof(SECURITY_ATTRIBUTES)); attr->sa->nLength = sizeof (SECURITY_ATTRIBUTES); attr->sa->lpSecurityDescriptor = attr->sd; attr->sa->bInheritHandle = TRUE; /* register the cleanup */ - apr_pool_cleanup_register(attr->pool, (void *)attr, + fspr_pool_cleanup_register(attr->pool, (void *)attr, attr_cleanup, - apr_pool_cleanup_null); + fspr_pool_cleanup_null); return APR_SUCCESS; } else @@ -307,7 +307,7 @@ APR_DECLARE(apr_status_t) apr_procattr_user_set(apr_procattr_t *attr, #endif } -APR_DECLARE(apr_status_t) apr_procattr_group_set(apr_procattr_t *attr, +APR_DECLARE(fspr_status_t) fspr_procattr_group_set(fspr_procattr_t *attr, const char *groupname) { /* Always return SUCCESS cause groups are irrelevant */ @@ -318,20 +318,20 @@ static const char* has_space(const char *str) { const char *ch; for (ch = str; *ch; ++ch) { - if (apr_isspace(*ch)) { + if (fspr_isspace(*ch)) { return ch; } } return NULL; } -static char *apr_caret_escape_args(apr_pool_t *p, const char *str) +static char *fspr_caret_escape_args(fspr_pool_t *p, const char *str) { char *cmd; unsigned char *d; const unsigned char *s; - cmd = apr_palloc(p, 2 * strlen(str) + 1); /* Be safe */ + cmd = fspr_palloc(p, 2 * strlen(str) + 1); /* Be safe */ d = (unsigned char *)cmd; s = (const unsigned char *)str; for (; *s; ++s) { @@ -356,36 +356,36 @@ static char *apr_caret_escape_args(apr_pool_t *p, const char *str) return cmd; } -APR_DECLARE(apr_status_t) apr_procattr_child_errfn_set(apr_procattr_t *attr, - apr_child_errfn_t *errfn) +APR_DECLARE(fspr_status_t) fspr_procattr_child_errfn_set(fspr_procattr_t *attr, + fspr_child_errfn_t *errfn) { attr->errfn = errfn; return APR_SUCCESS; } -APR_DECLARE(apr_status_t) apr_procattr_error_check_set(apr_procattr_t *attr, - apr_int32_t chk) +APR_DECLARE(fspr_status_t) fspr_procattr_error_check_set(fspr_procattr_t *attr, + fspr_int32_t chk) { attr->errchk = chk; return APR_SUCCESS; } -APR_DECLARE(apr_status_t) apr_procattr_addrspace_set(apr_procattr_t *attr, - apr_int32_t addrspace) +APR_DECLARE(fspr_status_t) fspr_procattr_addrspace_set(fspr_procattr_t *attr, + fspr_int32_t addrspace) { /* won't ever be used on this platform, so don't save the flag */ return APR_SUCCESS; } -APR_DECLARE(apr_status_t) apr_proc_create(apr_proc_t *new, +APR_DECLARE(fspr_status_t) fspr_proc_create(fspr_proc_t *new, const char *progname, const char * const *args, const char * const *env, - apr_procattr_t *attr, - apr_pool_t *pool) + fspr_procattr_t *attr, + fspr_pool_t *pool) { - apr_status_t rv; - apr_size_t i; + fspr_status_t rv; + fspr_size_t i; const char *argv0; char *cmdline; char *pEnvBlock; @@ -404,7 +404,7 @@ APR_DECLARE(apr_status_t) apr_proc_create(apr_proc_t *new, * not manage the stdio handles properly when running old 16 * bit executables if the detached attribute is set. */ - if (apr_os_level >= APR_WIN_NT) { + if (fspr_os_level >= APR_WIN_NT) { /* * XXX DETACHED_PROCESS won't on Win9x at all; on NT/W2K * 16 bit executables fail (MS KB: Q150956) @@ -418,16 +418,16 @@ APR_DECLARE(apr_status_t) apr_proc_create(apr_proc_t *new, * XXX progname must be NULL if this is a 16 bit app running in WOW */ if (progname[0] == '\"') { - progname = apr_pstrndup(pool, progname + 1, strlen(progname) - 2); + progname = fspr_pstrndup(pool, progname + 1, strlen(progname) - 2); } if (attr->cmdtype == APR_PROGRAM || attr->cmdtype == APR_PROGRAM_ENV) { char *fullpath = NULL; - if ((rv = apr_filepath_merge(&fullpath, attr->currdir, progname, + if ((rv = fspr_filepath_merge(&fullpath, attr->currdir, progname, APR_FILEPATH_NATIVE, pool)) != APR_SUCCESS) { if (attr->errfn) { attr->errfn(pool, rv, - apr_pstrcat(pool, "filepath_merge failed.", + fspr_pstrcat(pool, "filepath_merge failed.", " currdir: ", attr->currdir, " progname: ", progname, NULL)); } @@ -437,21 +437,21 @@ APR_DECLARE(apr_status_t) apr_proc_create(apr_proc_t *new, } else { /* Do not fail if the path isn't parseable for APR_PROGRAM_PATH - * or APR_SHELLCMD. We only invoke apr_filepath_merge (with no + * or APR_SHELLCMD. We only invoke fspr_filepath_merge (with no * left hand side expression) in order to correct the path slash * delimiters. But the filename doesn't need to be in the CWD, * nor does it need to be a filename at all (it could be a * built-in shell command.) */ char *fullpath = NULL; - if ((rv = apr_filepath_merge(&fullpath, "", progname, + if ((rv = fspr_filepath_merge(&fullpath, "", progname, APR_FILEPATH_NATIVE, pool)) == APR_SUCCESS) { progname = fullpath; } } if (has_space(progname)) { - argv0 = apr_pstrcat(pool, "\"", progname, "\"", NULL); + argv0 = fspr_pstrcat(pool, "\"", progname, "\"", NULL); } else { argv0 = progname; @@ -461,10 +461,10 @@ APR_DECLARE(apr_status_t) apr_proc_create(apr_proc_t *new, cmdline = ""; for (i = 1; args && args[i]; ++i) { if (has_space(args[i]) || !args[i][0]) { - cmdline = apr_pstrcat(pool, cmdline, " \"", args[i], "\"", NULL); + cmdline = fspr_pstrcat(pool, cmdline, " \"", args[i], "\"", NULL); } else { - cmdline = apr_pstrcat(pool, cmdline, " ", args[i], NULL); + cmdline = fspr_pstrcat(pool, cmdline, " ", args[i], NULL); } } @@ -478,22 +478,22 @@ APR_DECLARE(apr_status_t) apr_proc_create(apr_proc_t *new, return APR_EINVAL; } if (shellcmd[0] == '"') { - progname = apr_pstrndup(pool, shellcmd + 1, strlen(shellcmd) - 2); + progname = fspr_pstrndup(pool, shellcmd + 1, strlen(shellcmd) - 2); } else { progname = shellcmd; if (has_space(shellcmd)) { - shellcmd = apr_pstrcat(pool, "\"", shellcmd, "\"", NULL); + shellcmd = fspr_pstrcat(pool, "\"", shellcmd, "\"", NULL); } } /* Command.com does not support a quoted command, while cmd.exe demands one. */ i = strlen(progname); if (i >= 11 && strcasecmp(progname + i - 11, "command.com") == 0) { - cmdline = apr_pstrcat(pool, shellcmd, " /C ", argv0, cmdline, NULL); + cmdline = fspr_pstrcat(pool, shellcmd, " /C ", argv0, cmdline, NULL); } else { - cmdline = apr_pstrcat(pool, shellcmd, " /C \"", argv0, cmdline, "\"", NULL); + cmdline = fspr_pstrcat(pool, shellcmd, " /C \"", argv0, cmdline, "\"", NULL); } } else @@ -517,12 +517,12 @@ APR_DECLARE(apr_status_t) apr_proc_create(apr_proc_t *new, return APR_EINVAL; } if (shellcmd[0] == '"') { - progname = apr_pstrndup(pool, shellcmd + 1, strlen(shellcmd) - 2); + progname = fspr_pstrndup(pool, shellcmd + 1, strlen(shellcmd) - 2); } else { progname = shellcmd; if (has_space(shellcmd)) { - shellcmd = apr_pstrcat(pool, "\"", shellcmd, "\"", NULL); + shellcmd = fspr_pstrcat(pool, "\"", shellcmd, "\"", NULL); } } i = strlen(progname); @@ -532,7 +532,7 @@ APR_DECLARE(apr_status_t) apr_proc_create(apr_proc_t *new, * until this moment in all four code paths, with some flags * to toggle 'which flavor' is needed. */ - cmdline = apr_pstrcat(pool, shellcmd, " /C ", argv0, cmdline, NULL); + cmdline = fspr_pstrcat(pool, shellcmd, " /C ", argv0, cmdline, NULL); } else { /* We must protect the cmdline args from any interpolation - this @@ -542,16 +542,16 @@ APR_DECLARE(apr_status_t) apr_proc_create(apr_proc_t *new, * the shift-state to be toggled, and the application will * not see the caret escapes. */ - cmdline = apr_caret_escape_args(pool, cmdline); + cmdline = fspr_caret_escape_args(pool, cmdline); /* * Our app name must always be quoted so the quotes surrounding * the entire /c "command args" are unambigious. */ if (*argv0 != '"') { - cmdline = apr_pstrcat(pool, shellcmd, " /C \"\"", argv0, "\"", cmdline, "\"", NULL); + cmdline = fspr_pstrcat(pool, shellcmd, " /C \"\"", argv0, "\"", cmdline, "\"", NULL); } else { - cmdline = apr_pstrcat(pool, shellcmd, " /C \"", argv0, cmdline, "\"", NULL); + cmdline = fspr_pstrcat(pool, shellcmd, " /C \"", argv0, cmdline, "\"", NULL); } } } @@ -563,7 +563,7 @@ APR_DECLARE(apr_status_t) apr_proc_create(apr_proc_t *new, * would succeed, but "c:\bin\aprtest" or "aprtest.exe" * can fail. */ - cmdline = apr_pstrcat(pool, argv0, cmdline, NULL); + cmdline = fspr_pstrcat(pool, argv0, cmdline, NULL); if (attr->cmdtype == APR_PROGRAM_PATH) { progname = NULL; @@ -576,7 +576,7 @@ APR_DECLARE(apr_status_t) apr_proc_create(apr_proc_t *new, pEnvBlock = NULL; } else { - apr_size_t iEnvBlockLen; + fspr_size_t iEnvBlockLen; /* * Win32's CreateProcess call requires that the environment * be passed in an environment block, a null terminated block of @@ -594,20 +594,20 @@ APR_DECLARE(apr_status_t) apr_proc_create(apr_proc_t *new, #if APR_HAS_UNICODE_FS IF_WIN_OS_IS_UNICODE { - apr_wchar_t *pNext; - pEnvBlock = (char *)apr_palloc(pool, iEnvBlockLen * 2); + fspr_wchar_t *pNext; + pEnvBlock = (char *)fspr_palloc(pool, iEnvBlockLen * 2); dwCreationFlags |= CREATE_UNICODE_ENVIRONMENT; i = 0; - pNext = (apr_wchar_t*)pEnvBlock; + pNext = (fspr_wchar_t*)pEnvBlock; while (env[i]) { - apr_size_t in = strlen(env[i]) + 1; - if ((rv = apr_conv_utf8_to_ucs2(env[i], &in, + fspr_size_t in = strlen(env[i]) + 1; + if ((rv = fspr_conv_utf8_to_ucs2(env[i], &in, pNext, &iEnvBlockLen)) != APR_SUCCESS) { if (attr->errfn) { attr->errfn(pool, rv, - apr_pstrcat(pool, + fspr_pstrcat(pool, "utf8 to ucs2 conversion failed" " on this string: ", env[i], NULL)); } @@ -625,7 +625,7 @@ APR_DECLARE(apr_status_t) apr_proc_create(apr_proc_t *new, ELSE_WIN_OS_IS_ANSI { char *pNext; - pEnvBlock = (char *)apr_palloc(pool, iEnvBlockLen); + pEnvBlock = (char *)fspr_palloc(pool, iEnvBlockLen); i = 0; pNext = pEnvBlock; @@ -647,19 +647,19 @@ APR_DECLARE(apr_status_t) apr_proc_create(apr_proc_t *new, IF_WIN_OS_IS_UNICODE { STARTUPINFOW si; - apr_wchar_t *wprg = NULL; - apr_wchar_t *wcmd = NULL; - apr_wchar_t *wcwd = NULL; + fspr_wchar_t *wprg = NULL; + fspr_wchar_t *wcmd = NULL; + fspr_wchar_t *wcwd = NULL; if (progname) { - apr_size_t nprg = strlen(progname) + 1; - apr_size_t nwprg = nprg + 6; - wprg = apr_palloc(pool, nwprg * sizeof(wprg[0])); - if ((rv = apr_conv_utf8_to_ucs2(progname, &nprg, wprg, &nwprg)) + fspr_size_t nprg = strlen(progname) + 1; + fspr_size_t nwprg = nprg + 6; + wprg = fspr_palloc(pool, nwprg * sizeof(wprg[0])); + if ((rv = fspr_conv_utf8_to_ucs2(progname, &nprg, wprg, &nwprg)) != APR_SUCCESS) { if (attr->errfn) { attr->errfn(pool, rv, - apr_pstrcat(pool, + fspr_pstrcat(pool, "utf8 to ucs2 conversion failed" " on progname: ", progname, NULL)); } @@ -668,14 +668,14 @@ APR_DECLARE(apr_status_t) apr_proc_create(apr_proc_t *new, } if (cmdline) { - apr_size_t ncmd = strlen(cmdline) + 1; - apr_size_t nwcmd = ncmd; - wcmd = apr_palloc(pool, nwcmd * sizeof(wcmd[0])); - if ((rv = apr_conv_utf8_to_ucs2(cmdline, &ncmd, wcmd, &nwcmd)) + fspr_size_t ncmd = strlen(cmdline) + 1; + fspr_size_t nwcmd = ncmd; + wcmd = fspr_palloc(pool, nwcmd * sizeof(wcmd[0])); + if ((rv = fspr_conv_utf8_to_ucs2(cmdline, &ncmd, wcmd, &nwcmd)) != APR_SUCCESS) { if (attr->errfn) { attr->errfn(pool, rv, - apr_pstrcat(pool, + fspr_pstrcat(pool, "utf8 to ucs2 conversion failed" " on cmdline: ", cmdline, NULL)); } @@ -685,15 +685,15 @@ APR_DECLARE(apr_status_t) apr_proc_create(apr_proc_t *new, if (attr->currdir) { - apr_size_t ncwd = strlen(attr->currdir) + 1; - apr_size_t nwcwd = ncwd; - wcwd = apr_palloc(pool, ncwd * sizeof(wcwd[0])); - if ((rv = apr_conv_utf8_to_ucs2(attr->currdir, &ncwd, + fspr_size_t ncwd = strlen(attr->currdir) + 1; + fspr_size_t nwcwd = ncwd; + wcwd = fspr_palloc(pool, ncwd * sizeof(wcwd[0])); + if ((rv = fspr_conv_utf8_to_ucs2(attr->currdir, &ncwd, wcwd, &nwcwd)) != APR_SUCCESS) { if (attr->errfn) { attr->errfn(pool, rv, - apr_pstrcat(pool, + fspr_pstrcat(pool, "utf8 to ucs2 conversion failed" " on currdir: ", attr->currdir, NULL)); } @@ -732,7 +732,7 @@ APR_DECLARE(apr_status_t) apr_proc_create(apr_proc_t *new, si.lpDesktop = L"Winsta0\\Default"; if (!ImpersonateLoggedOnUser(attr->user_token)) { /* failed to impersonate the logged user */ - rv = apr_get_os_error(); + rv = fspr_get_os_error(); CloseHandle(attr->user_token); attr->user_token = NULL; return rv; @@ -814,43 +814,43 @@ APR_DECLARE(apr_status_t) apr_proc_create(apr_proc_t *new, /* Check CreateProcess result */ if (!rv) - return apr_get_os_error(); + return fspr_get_os_error(); - /* XXX Orphaned handle warning - no fix due to broken apr_proc_t api. + /* XXX Orphaned handle warning - no fix due to broken fspr_proc_t api. */ new->hproc = pi.hProcess; new->pid = pi.dwProcessId; if (attr->child_in) { - apr_file_close(attr->child_in); + fspr_file_close(attr->child_in); } if (attr->child_out) { - apr_file_close(attr->child_out); + fspr_file_close(attr->child_out); } if (attr->child_err) { - apr_file_close(attr->child_err); + fspr_file_close(attr->child_err); } CloseHandle(pi.hThread); return APR_SUCCESS; } -APR_DECLARE(apr_status_t) apr_proc_wait_all_procs(apr_proc_t *proc, +APR_DECLARE(fspr_status_t) fspr_proc_wait_all_procs(fspr_proc_t *proc, int *exitcode, - apr_exit_why_e *exitwhy, - apr_wait_how_e waithow, - apr_pool_t *p) + fspr_exit_why_e *exitwhy, + fspr_wait_how_e waithow, + fspr_pool_t *p) { - /* Unix does apr_proc_wait(proc(-1), exitcode, exitwhy, waithow) - * but Win32's apr_proc_wait won't work that way. We can either + /* Unix does fspr_proc_wait(proc(-1), exitcode, exitwhy, waithow) + * but Win32's fspr_proc_wait won't work that way. We can either * register all APR created processes in some sort of AsyncWait * thread, or simply walk from the global process pool for all - * apr_pool_note_subprocess()es registered with APR. + * fspr_pool_note_subprocess()es registered with APR. */ return APR_ENOTIMPL; } -static apr_exit_why_e why_from_exit_code(DWORD exit) { +static fspr_exit_why_e why_from_exit_code(DWORD exit) { /* See WinNT.h STATUS_ACCESS_VIOLATION and family for how * this class of failures was determined */ @@ -863,9 +863,9 @@ static apr_exit_why_e why_from_exit_code(DWORD exit) { /* ### No way to tell if Dr Watson grabbed a core, AFAICT. */ } -APR_DECLARE(apr_status_t) apr_proc_wait(apr_proc_t *proc, - int *exitcode, apr_exit_why_e *exitwhy, - apr_wait_how_e waithow) +APR_DECLARE(fspr_status_t) fspr_proc_wait(fspr_proc_t *proc, + int *exitcode, fspr_exit_why_e *exitwhy, + fspr_wait_how_e waithow) { DWORD stat; DWORD time; @@ -889,10 +889,10 @@ APR_DECLARE(apr_status_t) apr_proc_wait(apr_proc_t *proc, else if (stat == WAIT_TIMEOUT) { return APR_CHILD_NOTDONE; } - return apr_get_os_error(); + return fspr_get_os_error(); } -APR_DECLARE(apr_status_t) apr_proc_detach(int daemonize) +APR_DECLARE(fspr_status_t) fspr_proc_detach(int daemonize) { return APR_ENOTIMPL; } diff --git a/libs/apr/threadproc/win32/signals.c b/libs/apr/threadproc/win32/signals.c index 5e714931dce..c733c4dbd8e 100644 --- a/libs/apr/threadproc/win32/signals.c +++ b/libs/apr/threadproc/win32/signals.c @@ -14,11 +14,11 @@ * limitations under the License. */ -#include "win32/apr_arch_threadproc.h" -#include "win32/apr_arch_file_io.h" -#include "apr_thread_proc.h" -#include "apr_file_io.h" -#include "apr_general.h" +#include "win32/fspr_arch_threadproc.h" +#include "win32/fspr_arch_file_io.h" +#include "fspr_thread_proc.h" +#include "fspr_file_io.h" +#include "fspr_general.h" #if APR_HAVE_SIGNAL_H #include #endif @@ -32,35 +32,35 @@ * ### Actually, closing the input handle to the proc should also do fine * for most console apps. This definately needs improvement... */ -APR_DECLARE(apr_status_t) apr_proc_kill(apr_proc_t *proc, int signal) +APR_DECLARE(fspr_status_t) fspr_proc_kill(fspr_proc_t *proc, int signal) { if (proc->hproc != NULL) { if (TerminateProcess(proc->hproc, signal) == 0) { - return apr_get_os_error(); + return fspr_get_os_error(); } - /* On unix, SIGKILL leaves a apr_proc_wait()able pid lying around, - * so we will leave hproc alone until the app calls apr_proc_wait(). + /* On unix, SIGKILL leaves a fspr_proc_wait()able pid lying around, + * so we will leave hproc alone until the app calls fspr_proc_wait(). */ return APR_SUCCESS; } return APR_EPROC_UNKNOWN; } -void apr_signal_init(apr_pool_t *pglobal) +void fspr_signal_init(fspr_pool_t *pglobal) { } -const char *apr_signal_description_get(int signum) +const char *fspr_signal_description_get(int signum) { return "unknown signal (not supported)"; } -APR_DECLARE(apr_status_t) apr_signal_block(int signum) +APR_DECLARE(fspr_status_t) fspr_signal_block(int signum) { return APR_ENOTIMPL; } -APR_DECLARE(apr_status_t) apr_signal_unblock(int signum) +APR_DECLARE(fspr_status_t) fspr_signal_unblock(int signum) { return APR_ENOTIMPL; } diff --git a/libs/apr/threadproc/win32/thread.c b/libs/apr/threadproc/win32/thread.c index 280213f2a11..e049c272db9 100644 --- a/libs/apr/threadproc/win32/thread.c +++ b/libs/apr/threadproc/win32/thread.c @@ -14,25 +14,25 @@ * limitations under the License. */ -#include "apr_private.h" -#include "win32/apr_arch_threadproc.h" -#include "apr_thread_proc.h" -#include "apr_general.h" -#include "apr_lib.h" -#include "apr_portable.h" +#include "fspr_private.h" +#include "win32/fspr_arch_threadproc.h" +#include "fspr_thread_proc.h" +#include "fspr_general.h" +#include "fspr_lib.h" +#include "fspr_portable.h" #if APR_HAVE_PROCESS_H #include #endif -#include "apr_arch_misc.h" +#include "fspr_arch_misc.h" -/* Chosen for us by apr_initialize */ -DWORD tls_apr_thread = 0; +/* Chosen for us by fspr_initialize */ +DWORD tls_fspr_thread = 0; -APR_DECLARE(apr_status_t) apr_threadattr_create(apr_threadattr_t **new, - apr_pool_t *pool) +APR_DECLARE(fspr_status_t) fspr_threadattr_create(fspr_threadattr_t **new, + fspr_pool_t *pool) { - (*new) = (apr_threadattr_t *)apr_palloc(pool, - sizeof(apr_threadattr_t)); + (*new) = (fspr_threadattr_t *)fspr_palloc(pool, + sizeof(fspr_threadattr_t)); if ((*new) == NULL) { return APR_ENOMEM; @@ -45,51 +45,51 @@ APR_DECLARE(apr_status_t) apr_threadattr_create(apr_threadattr_t **new, return APR_SUCCESS; } -APR_DECLARE(apr_status_t) apr_threadattr_detach_set(apr_threadattr_t *attr, - apr_int32_t on) +APR_DECLARE(fspr_status_t) fspr_threadattr_detach_set(fspr_threadattr_t *attr, + fspr_int32_t on) { attr->detach = on; return APR_SUCCESS; } -APR_DECLARE(apr_status_t) apr_threadattr_detach_get(apr_threadattr_t *attr) +APR_DECLARE(fspr_status_t) fspr_threadattr_detach_get(fspr_threadattr_t *attr) { if (attr->detach == 1) return APR_DETACH; return APR_NOTDETACH; } -APR_DECLARE(apr_status_t) apr_threadattr_stacksize_set(apr_threadattr_t *attr, - apr_size_t stacksize) +APR_DECLARE(fspr_status_t) fspr_threadattr_stacksize_set(fspr_threadattr_t *attr, + fspr_size_t stacksize) { attr->stacksize = stacksize; return APR_SUCCESS; } -APR_DECLARE(apr_status_t) apr_threadattr_guardsize_set(apr_threadattr_t *attr, - apr_size_t size) +APR_DECLARE(fspr_status_t) fspr_threadattr_guardsize_set(fspr_threadattr_t *attr, + fspr_size_t size) { return APR_ENOTIMPL; } static void *dummy_worker(void *opaque) { - apr_thread_t *thd = (apr_thread_t *)opaque; - TlsSetValue(tls_apr_thread, thd->td); + fspr_thread_t *thd = (fspr_thread_t *)opaque; + TlsSetValue(tls_fspr_thread, thd->td); return thd->func(thd, thd->data); } -APR_DECLARE(apr_status_t) apr_thread_create(apr_thread_t **new, - apr_threadattr_t *attr, - apr_thread_start_t func, - void *data, apr_pool_t *pool) +APR_DECLARE(fspr_status_t) fspr_thread_create(fspr_thread_t **new, + fspr_threadattr_t *attr, + fspr_thread_start_t func, + void *data, fspr_pool_t *pool) { - apr_status_t stat; + fspr_status_t stat; unsigned temp; HANDLE handle; int priority = THREAD_PRIORITY_NORMAL; - (*new) = (apr_thread_t *)apr_palloc(pool, sizeof(apr_thread_t)); + (*new) = (fspr_thread_t *)fspr_palloc(pool, sizeof(fspr_thread_t)); if ((*new) == NULL) { return APR_ENOMEM; @@ -99,7 +99,7 @@ APR_DECLARE(apr_status_t) apr_thread_create(apr_thread_t **new, (*new)->data = data; (*new)->func = func; (*new)->td = NULL; - stat = apr_pool_create(&(*new)->pool, pool); + stat = fspr_pool_create(&(*new)->pool, pool); if (stat != APR_SUCCESS) { return stat; } @@ -131,7 +131,7 @@ APR_DECLARE(apr_status_t) apr_thread_create(apr_thread_t **new, attr && attr->stacksize > 0 ? attr->stacksize : 0, (unsigned int (APR_THREAD_FUNC *)(void *))dummy_worker, (*new), 0, &temp)) == 0) { - return apr_get_os_error(); + return fspr_get_os_error(); } #endif @@ -148,11 +148,11 @@ APR_DECLARE(apr_status_t) apr_thread_create(apr_thread_t **new, return APR_SUCCESS; } -APR_DECLARE(apr_status_t) apr_thread_exit(apr_thread_t *thd, - apr_status_t retval) +APR_DECLARE(fspr_status_t) fspr_thread_exit(fspr_thread_t *thd, + fspr_status_t retval) { thd->exitval = retval; - apr_pool_destroy(thd->pool); + fspr_pool_destroy(thd->pool); thd->pool = NULL; #ifndef _WIN32_WCE _endthreadex(0); @@ -162,10 +162,10 @@ APR_DECLARE(apr_status_t) apr_thread_exit(apr_thread_t *thd, return APR_SUCCESS; } -APR_DECLARE(apr_status_t) apr_thread_join(apr_status_t *retval, - apr_thread_t *thd) +APR_DECLARE(fspr_status_t) fspr_thread_join(fspr_status_t *retval, + fspr_thread_t *thd) { - apr_status_t rv = APR_SUCCESS; + fspr_status_t rv = APR_SUCCESS; if (!thd->td) { /* Can not join on detached threads */ @@ -180,25 +180,25 @@ APR_DECLARE(apr_status_t) apr_thread_join(apr_status_t *retval, rv = APR_INCOMPLETE; } else - rv = apr_get_os_error(); + rv = fspr_get_os_error(); CloseHandle(thd->td); thd->td = NULL; return rv; } -APR_DECLARE(apr_status_t) apr_thread_detach(apr_thread_t *thd) +APR_DECLARE(fspr_status_t) fspr_thread_detach(fspr_thread_t *thd) { if (thd->td && CloseHandle(thd->td)) { thd->td = NULL; return APR_SUCCESS; } else { - return apr_get_os_error(); + return fspr_get_os_error(); } } -APR_DECLARE(void) apr_thread_yield() +APR_DECLARE(void) fspr_thread_yield() { /* SwitchToThread is not supported on Win9x, but since it's * primarily a noop (entering time consuming code, therefore @@ -206,29 +206,29 @@ APR_DECLARE(void) apr_thread_yield() * we won't worry too much if it's not available. */ #ifndef _WIN32_WCE - if (apr_os_level >= APR_WIN_NT) { + if (fspr_os_level >= APR_WIN_NT) { SwitchToThread(); } #endif } -APR_DECLARE(apr_status_t) apr_thread_data_get(void **data, const char *key, - apr_thread_t *thread) +APR_DECLARE(fspr_status_t) fspr_thread_data_get(void **data, const char *key, + fspr_thread_t *thread) { - return apr_pool_userdata_get(data, key, thread->pool); + return fspr_pool_userdata_get(data, key, thread->pool); } -APR_DECLARE(apr_status_t) apr_thread_data_set(void *data, const char *key, - apr_status_t (*cleanup) (void *), - apr_thread_t *thread) +APR_DECLARE(fspr_status_t) fspr_thread_data_set(void *data, const char *key, + fspr_status_t (*cleanup) (void *), + fspr_thread_t *thread) { - return apr_pool_userdata_set(data, key, cleanup, thread->pool); + return fspr_pool_userdata_set(data, key, cleanup, thread->pool); } -APR_DECLARE(apr_os_thread_t) apr_os_thread_current(void) +APR_DECLARE(fspr_os_thread_t) fspr_os_thread_current(void) { - HANDLE hthread = (HANDLE)TlsGetValue(tls_apr_thread); + HANDLE hthread = (HANDLE)TlsGetValue(tls_fspr_thread); HANDLE hproc; if (hthread) { @@ -242,12 +242,12 @@ APR_DECLARE(apr_os_thread_t) apr_os_thread_current(void) DUPLICATE_SAME_ACCESS)) { return NULL; } - TlsSetValue(tls_apr_thread, hthread); + TlsSetValue(tls_fspr_thread, hthread); return hthread; } -APR_DECLARE(apr_status_t) apr_os_thread_get(apr_os_thread_t **thethd, - apr_thread_t *thd) +APR_DECLARE(fspr_status_t) fspr_os_thread_get(fspr_os_thread_t **thethd, + fspr_thread_t *thd) { if (thd == NULL) { return APR_ENOTHREAD; @@ -256,29 +256,29 @@ APR_DECLARE(apr_status_t) apr_os_thread_get(apr_os_thread_t **thethd, return APR_SUCCESS; } -APR_DECLARE(apr_status_t) apr_os_thread_put(apr_thread_t **thd, - apr_os_thread_t *thethd, - apr_pool_t *pool) +APR_DECLARE(fspr_status_t) fspr_os_thread_put(fspr_thread_t **thd, + fspr_os_thread_t *thethd, + fspr_pool_t *pool) { if (pool == NULL) { return APR_ENOPOOL; } if ((*thd) == NULL) { - (*thd) = (apr_thread_t *)apr_palloc(pool, sizeof(apr_thread_t)); + (*thd) = (fspr_thread_t *)fspr_palloc(pool, sizeof(fspr_thread_t)); (*thd)->pool = pool; } (*thd)->td = thethd; return APR_SUCCESS; } -APR_DECLARE(apr_status_t) apr_thread_once_init(apr_thread_once_t **control, - apr_pool_t *p) +APR_DECLARE(fspr_status_t) fspr_thread_once_init(fspr_thread_once_t **control, + fspr_pool_t *p) { - (*control) = apr_pcalloc(p, sizeof(**control)); + (*control) = fspr_pcalloc(p, sizeof(**control)); return APR_SUCCESS; } -APR_DECLARE(apr_status_t) apr_thread_once(apr_thread_once_t *control, +APR_DECLARE(fspr_status_t) fspr_thread_once(fspr_thread_once_t *control, void (*func)(void)) { if (!InterlockedExchange(&control->value, 1)) { @@ -287,11 +287,11 @@ APR_DECLARE(apr_status_t) apr_thread_once(apr_thread_once_t *control, return APR_SUCCESS; } -APR_DECLARE(int) apr_os_thread_equal(apr_os_thread_t tid1, - apr_os_thread_t tid2) +APR_DECLARE(int) fspr_os_thread_equal(fspr_os_thread_t tid1, + fspr_os_thread_t tid2) { /* Since the only tid's we support our are own, and - * apr_os_thread_current returns the identical handle + * fspr_os_thread_current returns the identical handle * to the one we created initially, the test is simple. */ return (tid1 == tid2); diff --git a/libs/apr/threadproc/win32/threadpriv.c b/libs/apr/threadproc/win32/threadpriv.c index 9ddc24fbd10..3f9530ab6e4 100644 --- a/libs/apr/threadproc/win32/threadpriv.c +++ b/libs/apr/threadproc/win32/threadpriv.c @@ -14,18 +14,18 @@ * limitations under the License. */ -#include "win32/apr_arch_threadproc.h" -#include "apr_thread_proc.h" -#include "apr_general.h" -#include "apr_lib.h" -#include "apr_errno.h" -#include "apr_portable.h" +#include "win32/fspr_arch_threadproc.h" +#include "fspr_thread_proc.h" +#include "fspr_general.h" +#include "fspr_lib.h" +#include "fspr_errno.h" +#include "fspr_portable.h" -APR_DECLARE(apr_status_t) apr_threadkey_private_create(apr_threadkey_t **key, +APR_DECLARE(fspr_status_t) fspr_threadkey_private_create(fspr_threadkey_t **key, void (*dest)(void *), - apr_pool_t *pool) + fspr_pool_t *pool) { - (*key) = (apr_threadkey_t *)apr_palloc(pool, sizeof(apr_threadkey_t)); + (*key) = (fspr_threadkey_t *)fspr_palloc(pool, sizeof(fspr_threadkey_t)); if ((*key) == NULL) { return APR_ENOMEM; } @@ -35,64 +35,64 @@ APR_DECLARE(apr_status_t) apr_threadkey_private_create(apr_threadkey_t **key, if (((*key)->key = TlsAlloc()) != 0xFFFFFFFF) { return APR_SUCCESS; } - return apr_get_os_error(); + return fspr_get_os_error(); } -APR_DECLARE(apr_status_t) apr_threadkey_private_get(void **new, - apr_threadkey_t *key) +APR_DECLARE(fspr_status_t) fspr_threadkey_private_get(void **new, + fspr_threadkey_t *key) { if ((*new) = TlsGetValue(key->key)) { return APR_SUCCESS; } - return apr_get_os_error(); + return fspr_get_os_error(); } -APR_DECLARE(apr_status_t) apr_threadkey_private_set(void *priv, - apr_threadkey_t *key) +APR_DECLARE(fspr_status_t) fspr_threadkey_private_set(void *priv, + fspr_threadkey_t *key) { if (TlsSetValue(key->key, priv)) { return APR_SUCCESS; } - return apr_get_os_error(); + return fspr_get_os_error(); } -APR_DECLARE(apr_status_t) apr_threadkey_private_delete(apr_threadkey_t *key) +APR_DECLARE(fspr_status_t) fspr_threadkey_private_delete(fspr_threadkey_t *key) { if (TlsFree(key->key)) { return APR_SUCCESS; } - return apr_get_os_error(); + return fspr_get_os_error(); } -APR_DECLARE(apr_status_t) apr_threadkey_data_get(void **data, const char *key, - apr_threadkey_t *threadkey) +APR_DECLARE(fspr_status_t) fspr_threadkey_data_get(void **data, const char *key, + fspr_threadkey_t *threadkey) { - return apr_pool_userdata_get(data, key, threadkey->pool); + return fspr_pool_userdata_get(data, key, threadkey->pool); } -APR_DECLARE(apr_status_t) apr_threadkey_data_set(void *data, const char *key, - apr_status_t (*cleanup)(void *), - apr_threadkey_t *threadkey) +APR_DECLARE(fspr_status_t) fspr_threadkey_data_set(void *data, const char *key, + fspr_status_t (*cleanup)(void *), + fspr_threadkey_t *threadkey) { - return apr_pool_userdata_set(data, key, cleanup, threadkey->pool); + return fspr_pool_userdata_set(data, key, cleanup, threadkey->pool); } -APR_DECLARE(apr_status_t) apr_os_threadkey_get(apr_os_threadkey_t *thekey, - apr_threadkey_t *key) +APR_DECLARE(fspr_status_t) fspr_os_threadkey_get(fspr_os_threadkey_t *thekey, + fspr_threadkey_t *key) { *thekey = key->key; return APR_SUCCESS; } -APR_DECLARE(apr_status_t) apr_os_threadkey_put(apr_threadkey_t **key, - apr_os_threadkey_t *thekey, - apr_pool_t *pool) +APR_DECLARE(fspr_status_t) fspr_os_threadkey_put(fspr_threadkey_t **key, + fspr_os_threadkey_t *thekey, + fspr_pool_t *pool) { if (pool == NULL) { return APR_ENOPOOL; } if ((*key) == NULL) { - (*key) = (apr_threadkey_t *)apr_palloc(pool, sizeof(apr_threadkey_t)); + (*key) = (fspr_threadkey_t *)fspr_palloc(pool, sizeof(fspr_threadkey_t)); (*key)->pool = pool; } (*key)->key = *thekey; diff --git a/libs/apr/time/unix/time.c b/libs/apr/time/unix/time.c index dfa45e690c6..8e77d740d3d 100644 --- a/libs/apr/time/unix/time.c +++ b/libs/apr/time/unix/time.c @@ -14,14 +14,14 @@ * limitations under the License. */ -#include "apr_portable.h" -#include "apr_time.h" -#include "apr_lib.h" -#include "apr_private.h" -#include "apr_strings.h" +#include "fspr_portable.h" +#include "fspr_time.h" +#include "fspr_lib.h" +#include "fspr_private.h" +#include "fspr_strings.h" /* private APR headers */ -#include "apr_arch_internal_time.h" +#include "fspr_arch_internal_time.h" /* System Headers required for time library */ #if APR_HAVE_SYS_TIME_H @@ -36,11 +36,11 @@ /* End System Headers */ #if !defined(HAVE_STRUCT_TM_TM_GMTOFF) && !defined(HAVE_STRUCT_TM___TM_GMTOFF) -static apr_int32_t server_gmt_offset; +static fspr_int32_t server_gmt_offset; #define NO_GMTOFF_IN_STRUCT_TM #endif -static apr_int32_t get_offset(struct tm *tm) +static fspr_int32_t get_offset(struct tm *tm) { #if defined(HAVE_STRUCT_TM_TM_GMTOFF) return tm->tm_gmtoff; @@ -63,23 +63,23 @@ static apr_int32_t get_offset(struct tm *tm) #endif } -APR_DECLARE(apr_status_t) apr_time_ansi_put(apr_time_t *result, +APR_DECLARE(fspr_status_t) fspr_time_ansi_put(fspr_time_t *result, time_t input) { - *result = (apr_time_t)input * APR_USEC_PER_SEC; + *result = (fspr_time_t)input * APR_USEC_PER_SEC; return APR_SUCCESS; } /* NB NB NB NB This returns GMT!!!!!!!!!! */ -APR_DECLARE(apr_time_t) apr_time_now(void) +APR_DECLARE(fspr_time_t) fspr_time_now(void) { struct timeval tv; gettimeofday(&tv, NULL); return tv.tv_sec * APR_USEC_PER_SEC + tv.tv_usec; } -static void explode_time(apr_time_exp_t *xt, apr_time_t t, - apr_int32_t offset, int use_localtime) +static void explode_time(fspr_time_exp_t *xt, fspr_time_t t, + fspr_int32_t offset, int use_localtime) { struct tm tm; time_t tt = (t / APR_USEC_PER_SEC) + offset; @@ -109,36 +109,36 @@ static void explode_time(apr_time_exp_t *xt, apr_time_t t, xt->tm_gmtoff = get_offset(&tm); } -APR_DECLARE(apr_status_t) apr_time_exp_tz(apr_time_exp_t *result, - apr_time_t input, apr_int32_t offs) +APR_DECLARE(fspr_status_t) fspr_time_exp_tz(fspr_time_exp_t *result, + fspr_time_t input, fspr_int32_t offs) { explode_time(result, input, offs, 0); result->tm_gmtoff = offs; return APR_SUCCESS; } -APR_DECLARE(apr_status_t) apr_time_exp_gmt(apr_time_exp_t *result, - apr_time_t input) +APR_DECLARE(fspr_status_t) fspr_time_exp_gmt(fspr_time_exp_t *result, + fspr_time_t input) { - return apr_time_exp_tz(result, input, 0); + return fspr_time_exp_tz(result, input, 0); } -APR_DECLARE(apr_status_t) apr_time_exp_lt(apr_time_exp_t *result, - apr_time_t input) +APR_DECLARE(fspr_status_t) fspr_time_exp_lt(fspr_time_exp_t *result, + fspr_time_t input) { #if defined(__EMX__) /* EMX gcc (OS/2) has a timezone global we can use */ - return apr_time_exp_tz(result, input, -timezone); + return fspr_time_exp_tz(result, input, -timezone); #else explode_time(result, input, 0, 1); return APR_SUCCESS; #endif /* __EMX__ */ } -APR_DECLARE(apr_status_t) apr_time_exp_get(apr_time_t *t, apr_time_exp_t *xt) +APR_DECLARE(fspr_status_t) fspr_time_exp_get(fspr_time_t *t, fspr_time_exp_t *xt) { - apr_time_t year = xt->tm_year; - apr_time_t days; + fspr_time_t year = xt->tm_year; + fspr_time_t days; static const int dayoffset[12] = {306, 337, 0, 31, 61, 92, 122, 153, 184, 214, 245, 275}; @@ -161,25 +161,25 @@ APR_DECLARE(apr_status_t) apr_time_exp_get(apr_time_t *t, apr_time_exp_t *xt) return APR_SUCCESS; } -APR_DECLARE(apr_status_t) apr_time_exp_gmt_get(apr_time_t *t, - apr_time_exp_t *xt) +APR_DECLARE(fspr_status_t) fspr_time_exp_gmt_get(fspr_time_t *t, + fspr_time_exp_t *xt) { - apr_status_t status = apr_time_exp_get(t, xt); + fspr_status_t status = fspr_time_exp_get(t, xt); if (status == APR_SUCCESS) - *t -= (apr_time_t) xt->tm_gmtoff * APR_USEC_PER_SEC; + *t -= (fspr_time_t) xt->tm_gmtoff * APR_USEC_PER_SEC; return status; } -APR_DECLARE(apr_status_t) apr_os_imp_time_get(apr_os_imp_time_t **ostime, - apr_time_t *aprtime) +APR_DECLARE(fspr_status_t) fspr_os_imp_time_get(fspr_os_imp_time_t **ostime, + fspr_time_t *aprtime) { (*ostime)->tv_usec = *aprtime % APR_USEC_PER_SEC; (*ostime)->tv_sec = *aprtime / APR_USEC_PER_SEC; return APR_SUCCESS; } -APR_DECLARE(apr_status_t) apr_os_exp_time_get(apr_os_exp_time_t **ostime, - apr_time_exp_t *aprtime) +APR_DECLARE(fspr_status_t) fspr_os_exp_time_get(fspr_os_exp_time_t **ostime, + fspr_time_exp_t *aprtime) { (*ostime)->tm_sec = aprtime->tm_sec; (*ostime)->tm_min = aprtime->tm_min; @@ -200,17 +200,17 @@ APR_DECLARE(apr_status_t) apr_os_exp_time_get(apr_os_exp_time_t **ostime, return APR_SUCCESS; } -APR_DECLARE(apr_status_t) apr_os_imp_time_put(apr_time_t *aprtime, - apr_os_imp_time_t **ostime, - apr_pool_t *cont) +APR_DECLARE(fspr_status_t) fspr_os_imp_time_put(fspr_time_t *aprtime, + fspr_os_imp_time_t **ostime, + fspr_pool_t *cont) { *aprtime = (*ostime)->tv_sec * APR_USEC_PER_SEC + (*ostime)->tv_usec; return APR_SUCCESS; } -APR_DECLARE(apr_status_t) apr_os_exp_time_put(apr_time_exp_t *aprtime, - apr_os_exp_time_t **ostime, - apr_pool_t *cont) +APR_DECLARE(fspr_status_t) fspr_os_exp_time_put(fspr_time_exp_t *aprtime, + fspr_os_exp_time_t **ostime, + fspr_pool_t *cont) { aprtime->tm_sec = (*ostime)->tm_sec; aprtime->tm_min = (*ostime)->tm_min; @@ -231,7 +231,7 @@ APR_DECLARE(apr_status_t) apr_os_exp_time_put(apr_time_exp_t *aprtime, return APR_SUCCESS; } -APR_DECLARE(void) apr_sleep(apr_interval_time_t t) +APR_DECLARE(void) fspr_sleep(fspr_interval_time_t t) { #ifdef OS2 DosSleep(t/1000); @@ -248,7 +248,7 @@ APR_DECLARE(void) apr_sleep(apr_interval_time_t t) } #ifdef OS2 -APR_DECLARE(apr_status_t) apr_os2_time_to_apr_time(apr_time_t *result, +APR_DECLARE(fspr_status_t) fspr_os2_time_to_fspr_time(fspr_time_t *result, FDATE os2date, FTIME os2time) { @@ -268,9 +268,9 @@ APR_DECLARE(apr_status_t) apr_os2_time_to_apr_time(apr_time_t *result, return APR_SUCCESS; } -APR_DECLARE(apr_status_t) apr_apr_time_to_os2_time(FDATE *os2date, +APR_DECLARE(fspr_status_t) fspr_fspr_time_to_os2_time(FDATE *os2date, FTIME *os2time, - apr_time_t aprtime) + fspr_time_t aprtime) { time_t ansitime = aprtime / APR_USEC_PER_SEC; struct tm *lt; @@ -287,13 +287,13 @@ APR_DECLARE(apr_status_t) apr_apr_time_to_os2_time(FDATE *os2date, #endif #ifdef NETWARE -APR_DECLARE(void) apr_netware_setup_time(void) +APR_DECLARE(void) fspr_netware_setup_time(void) { tzset(); server_gmt_offset = -TZONE; } #else -APR_DECLARE(void) apr_unix_setup_time(void) +APR_DECLARE(void) fspr_unix_setup_time(void) { #ifdef NO_GMTOFF_IN_STRUCT_TM /* Precompute the offset from GMT on systems where it's not @@ -334,14 +334,14 @@ APR_DECLARE(void) apr_unix_setup_time(void) #endif t.tm_isdst = 0; /* we know this GMT time isn't daylight-savings */ t2 = mktime(&t); - server_gmt_offset = (apr_int32_t) difftime(t1, t2); + server_gmt_offset = (fspr_int32_t) difftime(t1, t2); #endif /* NO_GMTOFF_IN_STRUCT_TM */ } #endif /* A noop on all known Unix implementations */ -APR_DECLARE(void) apr_time_clock_hires(apr_pool_t *p) +APR_DECLARE(void) fspr_time_clock_hires(fspr_pool_t *p) { return; } diff --git a/libs/apr/time/unix/timestr.c b/libs/apr/time/unix/timestr.c index f74febac192..3519f26d23d 100644 --- a/libs/apr/time/unix/timestr.c +++ b/libs/apr/time/unix/timestr.c @@ -14,10 +14,10 @@ * limitations under the License. */ -#include "apr_portable.h" -#include "apr_time.h" -#include "apr_lib.h" -#include "apr_private.h" +#include "fspr_portable.h" +#include "fspr_time.h" +#include "fspr_lib.h" +#include "fspr_private.h" /* System Headers required for time library */ #if APR_HAVE_SYS_TIME_H #include @@ -30,27 +30,27 @@ #endif /* End System Headers */ -APR_DECLARE_DATA const char apr_month_snames[12][4] = +APR_DECLARE_DATA const char fspr_month_snames[12][4] = { "Jan", "Feb", "Mar", "Apr", "May", "Jun", "Jul", "Aug", "Sep", "Oct", "Nov", "Dec" }; -APR_DECLARE_DATA const char apr_day_snames[7][4] = +APR_DECLARE_DATA const char fspr_day_snames[7][4] = { "Sun", "Mon", "Tue", "Wed", "Thu", "Fri", "Sat" }; -apr_status_t apr_rfc822_date(char *date_str, apr_time_t t) +fspr_status_t fspr_rfc822_date(char *date_str, fspr_time_t t) { - apr_time_exp_t xt; + fspr_time_exp_t xt; const char *s; int real_year; - apr_time_exp_gmt(&xt, t); + fspr_time_exp_gmt(&xt, t); /* example: "Sat, 08 Jan 2000 18:31:41 GMT" */ /* 12345678901234567890123456789 */ - s = &apr_day_snames[xt.tm_wday][0]; + s = &fspr_day_snames[xt.tm_wday][0]; *date_str++ = *s++; *date_str++ = *s++; *date_str++ = *s++; @@ -59,7 +59,7 @@ apr_status_t apr_rfc822_date(char *date_str, apr_time_t t) *date_str++ = xt.tm_mday / 10 + '0'; *date_str++ = xt.tm_mday % 10 + '0'; *date_str++ = ' '; - s = &apr_month_snames[xt.tm_mon][0]; + s = &fspr_month_snames[xt.tm_mon][0]; *date_str++ = *s++; *date_str++ = *s++; *date_str++ = *s++; @@ -87,22 +87,22 @@ apr_status_t apr_rfc822_date(char *date_str, apr_time_t t) return APR_SUCCESS; } -apr_status_t apr_ctime(char *date_str, apr_time_t t) +fspr_status_t fspr_ctime(char *date_str, fspr_time_t t) { - apr_time_exp_t xt; + fspr_time_exp_t xt; const char *s; int real_year; /* example: "Wed Jun 30 21:49:08 1993" */ /* 123456789012345678901234 */ - apr_time_exp_lt(&xt, t); - s = &apr_day_snames[xt.tm_wday][0]; + fspr_time_exp_lt(&xt, t); + s = &fspr_day_snames[xt.tm_wday][0]; *date_str++ = *s++; *date_str++ = *s++; *date_str++ = *s++; *date_str++ = ' '; - s = &apr_month_snames[xt.tm_mon][0]; + s = &fspr_month_snames[xt.tm_mon][0]; *date_str++ = *s++; *date_str++ = *s++; *date_str++ = *s++; @@ -129,8 +129,8 @@ apr_status_t apr_ctime(char *date_str, apr_time_t t) return APR_SUCCESS; } -apr_status_t apr_strftime(char *s, apr_size_t *retsize, apr_size_t max, - const char *format, apr_time_exp_t *xt) +fspr_status_t fspr_strftime(char *s, fspr_size_t *retsize, fspr_size_t max, + const char *format, fspr_time_exp_t *xt) { struct tm tm; memset(&tm, 0, sizeof tm); diff --git a/libs/apr/time/win32/access.c b/libs/apr/time/win32/access.c index cd25e2f0bf2..189e06d19c6 100644 --- a/libs/apr/time/win32/access.c +++ b/libs/apr/time/win32/access.c @@ -14,12 +14,12 @@ * limitations under the License. */ -#include "win32/apr_arch_atime.h" -#include "apr_time.h" -#include "apr_general.h" -#include "apr_lib.h" +#include "win32/fspr_arch_atime.h" +#include "fspr_time.h" +#include "fspr_general.h" +#include "fspr_lib.h" -apr_status_t apr_get_curtime(struct atime_t *time, apr_time_t *rv) +fspr_status_t fspr_get_curtime(struct atime_t *time, fspr_time_t *rv) { if (time) { (*rv) = time->currtime; @@ -28,7 +28,7 @@ apr_status_t apr_get_curtime(struct atime_t *time, apr_time_t *rv) return APR_ENOTIME; } -apr_status_t apr_get_sec(struct atime_t *time, apr_int32_t *rv) +fspr_status_t fspr_get_sec(struct atime_t *time, fspr_int32_t *rv) { if (time) { (*rv) = time->explodedtime->wSecond; @@ -37,7 +37,7 @@ apr_status_t apr_get_sec(struct atime_t *time, apr_int32_t *rv) return APR_ENOTIME; } -apr_status_t apr_get_min(struct atime_t *time, apr_int32_t *rv) +fspr_status_t fspr_get_min(struct atime_t *time, fspr_int32_t *rv) { if (time) { (*rv) = time->explodedtime->wMinute; @@ -46,7 +46,7 @@ apr_status_t apr_get_min(struct atime_t *time, apr_int32_t *rv) return APR_ENOTIME; } -apr_status_t apr_get_hour(struct atime_t *time, apr_int32_t *rv) +fspr_status_t fspr_get_hour(struct atime_t *time, fspr_int32_t *rv) { if (time) { (*rv) = time->explodedtime->wHour; @@ -55,7 +55,7 @@ apr_status_t apr_get_hour(struct atime_t *time, apr_int32_t *rv) return APR_ENOTIME; } -apr_status_t apr_get_mday(struct atime_t *time, apr_int32_t *rv) +fspr_status_t fspr_get_mday(struct atime_t *time, fspr_int32_t *rv) { if (time) { (*rv) = time->explodedtime->wDay; @@ -64,7 +64,7 @@ apr_status_t apr_get_mday(struct atime_t *time, apr_int32_t *rv) return APR_ENOTIME; } -apr_status_t apr_get_mon(struct atime_t *time, apr_int32_t *rv) +fspr_status_t fspr_get_mon(struct atime_t *time, fspr_int32_t *rv) { if (time) { (*rv) = time->explodedtime->wMonth; @@ -73,7 +73,7 @@ apr_status_t apr_get_mon(struct atime_t *time, apr_int32_t *rv) return APR_ENOTIME; } -apr_status_t apr_get_year(struct atime_t *time, apr_int32_t *rv) +fspr_status_t fspr_get_year(struct atime_t *time, fspr_int32_t *rv) { if (time) { (*rv) = time->explodedtime->wYear; @@ -82,7 +82,7 @@ apr_status_t apr_get_year(struct atime_t *time, apr_int32_t *rv) return APR_ENOTIME; } -apr_status_t apr_get_wday(struct atime_t *time, apr_int32_t *rv) +fspr_status_t fspr_get_wday(struct atime_t *time, fspr_int32_t *rv) { if (time) { (*rv) = time->explodedtime->wDayOfWeek; @@ -91,13 +91,13 @@ apr_status_t apr_get_wday(struct atime_t *time, apr_int32_t *rv) return APR_ENOTIME; } -apr_status_t apr_set_sec(struct atime_t *time, apr_int32_t value) +fspr_status_t fspr_set_sec(struct atime_t *time, fspr_int32_t value) { if (!time) { return APR_ENOTIME; } if (time->explodedtime == NULL) { - time->explodedtime = (SYSTEMTIME *)apr_pcalloc(time->cntxt, + time->explodedtime = (SYSTEMTIME *)fspr_pcalloc(time->cntxt, sizeof(SYSTEMTIME)); } if (time->explodedtime == NULL) { @@ -107,13 +107,13 @@ apr_status_t apr_set_sec(struct atime_t *time, apr_int32_t value) return APR_SUCCESS; } -apr_status_t apr_set_min(struct atime_t *time, apr_int32_t value) +fspr_status_t fspr_set_min(struct atime_t *time, fspr_int32_t value) { if (!time) { return APR_ENOTIME; } if (time->explodedtime == NULL) { - time->explodedtime = (SYSTEMTIME *)apr_pcalloc(time->cntxt, + time->explodedtime = (SYSTEMTIME *)fspr_pcalloc(time->cntxt, sizeof(SYSTEMTIME)); } if (time->explodedtime == NULL) { @@ -123,13 +123,13 @@ apr_status_t apr_set_min(struct atime_t *time, apr_int32_t value) return APR_SUCCESS; } -apr_status_t apr_set_hour(struct atime_t *time, apr_int32_t value) +fspr_status_t fspr_set_hour(struct atime_t *time, fspr_int32_t value) { if (!time) { return APR_ENOTIME; } if (time->explodedtime == NULL) { - time->explodedtime = (SYSTEMTIME *)apr_pcalloc(time->cntxt, + time->explodedtime = (SYSTEMTIME *)fspr_pcalloc(time->cntxt, sizeof(SYSTEMTIME)); } if (time->explodedtime == NULL) { @@ -139,13 +139,13 @@ apr_status_t apr_set_hour(struct atime_t *time, apr_int32_t value) return APR_SUCCESS; } -apr_status_t apr_set_mday(struct atime_t *time, apr_int32_t value) +fspr_status_t fspr_set_mday(struct atime_t *time, fspr_int32_t value) { if (!time) { return APR_ENOTIME; } if (time->explodedtime == NULL) { - time->explodedtime = (SYSTEMTIME *)apr_pcalloc(time->cntxt, + time->explodedtime = (SYSTEMTIME *)fspr_pcalloc(time->cntxt, sizeof(SYSTEMTIME)); } if (time->explodedtime == NULL) { @@ -155,13 +155,13 @@ apr_status_t apr_set_mday(struct atime_t *time, apr_int32_t value) return APR_SUCCESS; } -apr_status_t apr_set_mon(struct atime_t *time, apr_int32_t value) +fspr_status_t fspr_set_mon(struct atime_t *time, fspr_int32_t value) { if (!time) { return APR_ENOTIME; } if (time->explodedtime == NULL) { - time->explodedtime = (SYSTEMTIME *)apr_pcalloc(time->cntxt, + time->explodedtime = (SYSTEMTIME *)fspr_pcalloc(time->cntxt, sizeof(SYSTEMTIME)); } if (time->explodedtime == NULL) { @@ -171,13 +171,13 @@ apr_status_t apr_set_mon(struct atime_t *time, apr_int32_t value) return APR_SUCCESS; } -apr_status_t apr_set_year(struct atime_t *time, apr_int32_t value) +fspr_status_t fspr_set_year(struct atime_t *time, fspr_int32_t value) { if (!time) { return APR_ENOTIME; } if (time->explodedtime == NULL) { - time->explodedtime = (SYSTEMTIME *)apr_pcalloc(time->cntxt, + time->explodedtime = (SYSTEMTIME *)fspr_pcalloc(time->cntxt, sizeof(SYSTEMTIME)); } if (time->explodedtime == NULL) { @@ -187,13 +187,13 @@ apr_status_t apr_set_year(struct atime_t *time, apr_int32_t value) return APR_SUCCESS; } -apr_status_t apr_set_wday(struct atime_t *time, apr_int32_t value) +fspr_status_t fspr_set_wday(struct atime_t *time, fspr_int32_t value) { if (!time) { return APR_ENOTIME; } if (time->explodedtime == NULL) { - time->explodedtime = (SYSTEMTIME *)apr_pcalloc(time->cntxt, + time->explodedtime = (SYSTEMTIME *)fspr_pcalloc(time->cntxt, sizeof(SYSTEMTIME)); } if (time->explodedtime == NULL) { diff --git a/libs/apr/time/win32/time.c b/libs/apr/time/win32/time.c index 6a2b2737de5..3dd473a8b4e 100644 --- a/libs/apr/time/win32/time.c +++ b/libs/apr/time/win32/time.c @@ -14,11 +14,11 @@ * limitations under the License. */ -#include "win32/apr_arch_atime.h" -#include "apr_time.h" -#include "apr_general.h" -#include "apr_lib.h" -#include "apr_portable.h" +#include "win32/fspr_arch_atime.h" +#include "fspr_time.h" +#include "fspr_general.h" +#include "fspr_lib.h" +#include "fspr_portable.h" #if APR_HAVE_TIME_H #include #endif @@ -27,7 +27,7 @@ #endif #include #include -#include "apr_arch_misc.h" +#include "fspr_arch_misc.h" /* Leap year is any year divisible by four, but not by 100 unless also * divisible by 400 @@ -49,7 +49,7 @@ static DWORD get_local_timezone(TIME_ZONE_INFORMATION **tzresult) return result; } -static void SystemTimeToAprExpTime(apr_time_exp_t *xt, SYSTEMTIME *tm) +static void SystemTimeToAprExpTime(fspr_time_exp_t *xt, SYSTEMTIME *tm) { static const int dayoffset[12] = {0, 31, 59, 90, 120, 151, 182, 212, 243, 273, 304, 334}; @@ -76,15 +76,15 @@ static void SystemTimeToAprExpTime(apr_time_exp_t *xt, SYSTEMTIME *tm) xt->tm_yday++; } -APR_DECLARE(apr_status_t) apr_time_ansi_put(apr_time_t *result, +APR_DECLARE(fspr_status_t) fspr_time_ansi_put(fspr_time_t *result, time_t input) { - *result = (apr_time_t) input * APR_USEC_PER_SEC; + *result = (fspr_time_t) input * APR_USEC_PER_SEC; return APR_SUCCESS; } /* Return micro-seconds since the Unix epoch (jan. 1, 1970) UTC */ -APR_DECLARE(apr_time_t) apr_time_now(void) +APR_DECLARE(fspr_time_t) fspr_time_now(void) { LONGLONG aprtime = 0; FILETIME time; @@ -99,8 +99,8 @@ APR_DECLARE(apr_time_t) apr_time_now(void) return aprtime; } -APR_DECLARE(apr_status_t) apr_time_exp_gmt(apr_time_exp_t *result, - apr_time_t input) +APR_DECLARE(fspr_status_t) fspr_time_exp_gmt(fspr_time_exp_t *result, + fspr_time_t input) { FILETIME ft; SYSTEMTIME st; @@ -110,13 +110,13 @@ APR_DECLARE(apr_status_t) apr_time_exp_gmt(apr_time_exp_t *result, * generally UTC, so no timezone info needed */ SystemTimeToAprExpTime(result, &st); - result->tm_usec = (apr_int32_t) (input % APR_USEC_PER_SEC); + result->tm_usec = (fspr_int32_t) (input % APR_USEC_PER_SEC); return APR_SUCCESS; } -APR_DECLARE(apr_status_t) apr_time_exp_tz(apr_time_exp_t *result, - apr_time_t input, - apr_int32_t offs) +APR_DECLARE(fspr_status_t) fspr_time_exp_tz(fspr_time_exp_t *result, + fspr_time_t input, + fspr_int32_t offs) { FILETIME ft; SYSTEMTIME st; @@ -126,13 +126,13 @@ APR_DECLARE(apr_status_t) apr_time_exp_tz(apr_time_exp_t *result, * generally UTC, so we will simply note the offs used. */ SystemTimeToAprExpTime(result, &st); - result->tm_usec = (apr_int32_t) (input % APR_USEC_PER_SEC); + result->tm_usec = (fspr_int32_t) (input % APR_USEC_PER_SEC); result->tm_gmtoff = offs; return APR_SUCCESS; } -APR_DECLARE(apr_status_t) apr_time_exp_lt(apr_time_exp_t *result, - apr_time_t input) +APR_DECLARE(fspr_status_t) fspr_time_exp_lt(fspr_time_exp_t *result, + fspr_time_t input) { SYSTEMTIME st; FILETIME ft, localft; @@ -144,7 +144,7 @@ APR_DECLARE(apr_status_t) apr_time_exp_lt(apr_time_exp_t *result, { TIME_ZONE_INFORMATION *tz; SYSTEMTIME localst; - apr_time_t localtime; + fspr_time_t localtime; get_local_timezone(&tz); @@ -158,7 +158,7 @@ APR_DECLARE(apr_status_t) apr_time_exp_lt(apr_time_exp_t *result, */ SystemTimeToTzSpecificLocalTime(tz, &st, &localst); SystemTimeToAprExpTime(result, &localst); - result->tm_usec = (apr_int32_t) (input % APR_USEC_PER_SEC); + result->tm_usec = (fspr_int32_t) (input % APR_USEC_PER_SEC); /* Recover the resulting time as an apr time and use the @@ -166,8 +166,8 @@ APR_DECLARE(apr_status_t) apr_time_exp_lt(apr_time_exp_t *result, */ SystemTimeToFileTime(&localst, &localft); FileTimeToAprTime(&localtime, &localft); - result->tm_gmtoff = (int)apr_time_sec(localtime) - - (int)apr_time_sec(input); + result->tm_gmtoff = (int)fspr_time_sec(localtime) + - (int)fspr_time_sec(input); /* To compute the dst flag, we compare the expected * local (standard) timezone bias to the delta. @@ -189,7 +189,7 @@ APR_DECLARE(apr_status_t) apr_time_exp_lt(apr_time_exp_t *result, FileTimeToLocalFileTime(&ft, &localft); FileTimeToSystemTime(&localft, &st); SystemTimeToAprExpTime(result, &st); - result->tm_usec = (apr_int32_t) (input % APR_USEC_PER_SEC); + result->tm_usec = (fspr_int32_t) (input % APR_USEC_PER_SEC); switch (GetTimeZoneInformation(&tz)) { case TIME_ZONE_ID_UNKNOWN: @@ -216,11 +216,11 @@ APR_DECLARE(apr_status_t) apr_time_exp_lt(apr_time_exp_t *result, return APR_SUCCESS; } -APR_DECLARE(apr_status_t) apr_time_exp_get(apr_time_t *t, - apr_time_exp_t *xt) +APR_DECLARE(fspr_status_t) fspr_time_exp_get(fspr_time_t *t, + fspr_time_exp_t *xt) { - apr_time_t year = xt->tm_year; - apr_time_t days; + fspr_time_t year = xt->tm_year; + fspr_time_t days; static const int dayoffset[12] = {306, 337, 0, 31, 61, 92, 122, 153, 184, 214, 245, 275}; @@ -244,25 +244,25 @@ APR_DECLARE(apr_status_t) apr_time_exp_get(apr_time_t *t, return APR_SUCCESS; } -APR_DECLARE(apr_status_t) apr_time_exp_gmt_get(apr_time_t *t, - apr_time_exp_t *xt) +APR_DECLARE(fspr_status_t) fspr_time_exp_gmt_get(fspr_time_t *t, + fspr_time_exp_t *xt) { - apr_status_t status = apr_time_exp_get(t, xt); + fspr_status_t status = fspr_time_exp_get(t, xt); if (status == APR_SUCCESS) - *t -= (apr_time_t) xt->tm_gmtoff * APR_USEC_PER_SEC; + *t -= (fspr_time_t) xt->tm_gmtoff * APR_USEC_PER_SEC; return status; } -APR_DECLARE(apr_status_t) apr_os_imp_time_get(apr_os_imp_time_t **ostime, - apr_time_t *aprtime) +APR_DECLARE(fspr_status_t) fspr_os_imp_time_get(fspr_os_imp_time_t **ostime, + fspr_time_t *aprtime) { - /* TODO: Consider not passing in pointer to apr_time_t (e.g., call by value) */ + /* TODO: Consider not passing in pointer to fspr_time_t (e.g., call by value) */ AprTimeToFileTime(*ostime, *aprtime); return APR_SUCCESS; } -APR_DECLARE(apr_status_t) apr_os_exp_time_get(apr_os_exp_time_t **ostime, - apr_time_exp_t *aprexptime) +APR_DECLARE(fspr_status_t) fspr_os_exp_time_get(fspr_os_exp_time_t **ostime, + fspr_time_exp_t *aprexptime) { (*ostime)->wYear = aprexptime->tm_year + 1900; (*ostime)->wMonth = aprexptime->tm_mon + 1; @@ -275,9 +275,9 @@ APR_DECLARE(apr_status_t) apr_os_exp_time_get(apr_os_exp_time_t **ostime, return APR_SUCCESS; } -APR_DECLARE(apr_status_t) apr_os_imp_time_put(apr_time_t *aprtime, - apr_os_imp_time_t **ostime, - apr_pool_t *cont) +APR_DECLARE(fspr_status_t) fspr_os_imp_time_put(fspr_time_t *aprtime, + fspr_os_imp_time_t **ostime, + fspr_pool_t *cont) { /* XXX: sanity failure, what is file time, gmt or local ? */ @@ -285,9 +285,9 @@ APR_DECLARE(apr_status_t) apr_os_imp_time_put(apr_time_t *aprtime, return APR_SUCCESS; } -APR_DECLARE(apr_status_t) apr_os_exp_time_put(apr_time_exp_t *aprtime, - apr_os_exp_time_t **ostime, - apr_pool_t *cont) +APR_DECLARE(fspr_status_t) fspr_os_exp_time_put(fspr_time_exp_t *aprtime, + fspr_os_exp_time_t **ostime, + fspr_pool_t *cont) { /* The Platform SDK documents that SYSTEMTIME/FILETIME are * generally UTC, so no timezone info needed @@ -296,7 +296,7 @@ APR_DECLARE(apr_status_t) apr_os_exp_time_put(apr_time_exp_t *aprtime, return APR_SUCCESS; } -APR_DECLARE(void) apr_sleep(apr_interval_time_t t) +APR_DECLARE(void) fspr_sleep(fspr_interval_time_t t) { /* One of the few sane situations for a cast, Sleep * is in ms, not us, and passed as a DWORD value @@ -305,14 +305,14 @@ APR_DECLARE(void) apr_sleep(apr_interval_time_t t) } -static apr_status_t clock_restore(void *unsetres) +static fspr_status_t clock_restore(void *unsetres) { ULONG newRes; SetTimerResolution((ULONG)unsetres, FALSE, &newRes); return APR_SUCCESS; } -APR_DECLARE(void) apr_time_clock_hires(apr_pool_t *p) +APR_DECLARE(void) fspr_time_clock_hires(fspr_pool_t *p) { ULONG newRes; /* Timer resolution is stated in 100ns units. Note that TRUE requests the @@ -320,7 +320,7 @@ APR_DECLARE(void) apr_time_clock_hires(apr_pool_t *p) */ if (SetTimerResolution(10000, TRUE, &newRes) == 0 /* STATUS_SUCCESS */) { /* register the cleanup... */ - apr_pool_cleanup_register(p, (void*)10000, clock_restore, - apr_pool_cleanup_null); + fspr_pool_cleanup_register(p, (void*)10000, clock_restore, + fspr_pool_cleanup_null); } } diff --git a/libs/apr/time/win32/timestr.c b/libs/apr/time/win32/timestr.c index af1526497bb..606291e0bed 100644 --- a/libs/apr/time/win32/timestr.c +++ b/libs/apr/time/win32/timestr.c @@ -14,31 +14,31 @@ * limitations under the License. */ -#include "win32/apr_arch_atime.h" -#include "apr_portable.h" -#include "apr_strings.h" +#include "win32/fspr_arch_atime.h" +#include "fspr_portable.h" +#include "fspr_strings.h" -APR_DECLARE_DATA const char apr_month_snames[12][4] = +APR_DECLARE_DATA const char fspr_month_snames[12][4] = { "Jan", "Feb", "Mar", "Apr", "May", "Jun", "Jul", "Aug", "Sep", "Oct", "Nov", "Dec" }; -APR_DECLARE_DATA const char apr_day_snames[7][4] = +APR_DECLARE_DATA const char fspr_day_snames[7][4] = { "Sun", "Mon", "Tue", "Wed", "Thu", "Fri", "Sat" }; -APR_DECLARE(apr_status_t) apr_rfc822_date(char *date_str, apr_time_t t) +APR_DECLARE(fspr_status_t) fspr_rfc822_date(char *date_str, fspr_time_t t) { - apr_time_exp_t xt; + fspr_time_exp_t xt; const char *s; int real_year; - apr_time_exp_gmt(&xt, t); + fspr_time_exp_gmt(&xt, t); /* example: "Sat, 08 Jan 2000 18:31:41 GMT" */ /* 12345678901234567890123456789 */ - s = &apr_day_snames[xt.tm_wday][0]; + s = &fspr_day_snames[xt.tm_wday][0]; *date_str++ = *s++; *date_str++ = *s++; *date_str++ = *s++; @@ -47,7 +47,7 @@ APR_DECLARE(apr_status_t) apr_rfc822_date(char *date_str, apr_time_t t) *date_str++ = xt.tm_mday / 10 + '0'; *date_str++ = xt.tm_mday % 10 + '0'; *date_str++ = ' '; - s = &apr_month_snames[xt.tm_mon][0]; + s = &fspr_month_snames[xt.tm_mon][0]; *date_str++ = *s++; *date_str++ = *s++; *date_str++ = *s++; @@ -75,22 +75,22 @@ APR_DECLARE(apr_status_t) apr_rfc822_date(char *date_str, apr_time_t t) return APR_SUCCESS; } -APR_DECLARE(apr_status_t) apr_ctime(char *date_str, apr_time_t t) +APR_DECLARE(fspr_status_t) fspr_ctime(char *date_str, fspr_time_t t) { - apr_time_exp_t xt; + fspr_time_exp_t xt; const char *s; int real_year; /* example: "Wed Jun 30 21:49:08 1993" */ /* 123456789012345678901234 */ - apr_time_exp_lt(&xt, t); - s = &apr_day_snames[xt.tm_wday][0]; + fspr_time_exp_lt(&xt, t); + s = &fspr_day_snames[xt.tm_wday][0]; *date_str++ = *s++; *date_str++ = *s++; *date_str++ = *s++; *date_str++ = ' '; - s = &apr_month_snames[xt.tm_mon][0]; + s = &fspr_month_snames[xt.tm_mon][0]; *date_str++ = *s++; *date_str++ = *s++; *date_str++ = *s++; @@ -120,7 +120,7 @@ APR_DECLARE(apr_status_t) apr_ctime(char *date_str, apr_time_t t) #ifndef _WIN32_WCE -apr_size_t win32_strftime_extra(char *s, size_t max, const char *format, +fspr_size_t win32_strftime_extra(char *s, size_t max, const char *format, const struct tm *tm) { /* If the new format string is bigger than max, the result string won't fit @@ -128,7 +128,7 @@ apr_size_t win32_strftime_extra(char *s, size_t max, const char *format, * enough */ char *new_format = (char *) malloc(max + 11); size_t i, j, format_length = strlen(format); - apr_size_t return_value; + fspr_size_t return_value; int length_written; for (i = 0, j = 0; (i < format_length && j < max);) { @@ -138,7 +138,7 @@ apr_size_t win32_strftime_extra(char *s, size_t max, const char *format, } switch (format[i+1]) { case 'C': - length_written = apr_snprintf(new_format + j, max - j, "%2d", + length_written = fspr_snprintf(new_format + j, max - j, "%2d", (tm->tm_year + 1970)/100); j = (length_written == -1) ? max : (j + length_written); i += 2; @@ -166,7 +166,7 @@ apr_size_t win32_strftime_extra(char *s, size_t max, const char *format, j += 8; break; case 'e': - length_written = apr_snprintf(new_format + j, max - j, "%2d", + length_written = fspr_snprintf(new_format + j, max - j, "%2d", tm->tm_mday); j = (length_written == -1) ? max : (j + length_written); i += 2; @@ -192,9 +192,9 @@ apr_size_t win32_strftime_extra(char *s, size_t max, const char *format, #endif -APR_DECLARE(apr_status_t) apr_strftime(char *s, apr_size_t *retsize, - apr_size_t max, const char *format, - apr_time_exp_t *xt) +APR_DECLARE(fspr_status_t) fspr_strftime(char *s, fspr_size_t *retsize, + fspr_size_t max, const char *format, + fspr_time_exp_t *xt) { #ifdef _WIN32_WCE return APR_ENOTIMPL; diff --git a/libs/apr/user/netware/groupinfo.c b/libs/apr/user/netware/groupinfo.c index e7cfd9b2677..86a22df5020 100644 --- a/libs/apr/user/netware/groupinfo.c +++ b/libs/apr/user/netware/groupinfo.c @@ -14,10 +14,10 @@ * limitations under the License. */ -#include "apr_strings.h" -#include "apr_portable.h" -#include "apr_user.h" -#include "apr_private.h" +#include "fspr_strings.h" +#include "fspr_portable.h" +#include "fspr_user.h" +#include "fspr_private.h" #ifdef HAVE_GRP_H #include #endif @@ -28,14 +28,14 @@ #include /* for _POSIX_THREAD_SAFE_FUNCTIONS */ #endif -APR_DECLARE(apr_status_t) apr_gid_name_get(char **groupname, apr_gid_t groupid, - apr_pool_t *p) +APR_DECLARE(fspr_status_t) fspr_gid_name_get(char **groupname, fspr_gid_t groupid, + fspr_pool_t *p) { return APR_ENOTIMPL; } -APR_DECLARE(apr_status_t) apr_gid_get(apr_gid_t *groupid, - const char *groupname, apr_pool_t *p) +APR_DECLARE(fspr_status_t) fspr_gid_get(fspr_gid_t *groupid, + const char *groupname, fspr_pool_t *p) { return APR_ENOTIMPL; } diff --git a/libs/apr/user/netware/userinfo.c b/libs/apr/user/netware/userinfo.c index b58991b8ea5..c5677dab7e2 100644 --- a/libs/apr/user/netware/userinfo.c +++ b/libs/apr/user/netware/userinfo.c @@ -14,10 +14,10 @@ * limitations under the License. */ -#include "apr_strings.h" -#include "apr_portable.h" -#include "apr_user.h" -#include "apr_private.h" +#include "fspr_strings.h" +#include "fspr_portable.h" +#include "fspr_user.h" +#include "fspr_private.h" #ifdef HAVE_PWD_H #include #endif @@ -30,25 +30,25 @@ #define PWBUF_SIZE 512 -static apr_status_t getpwnam_safe(const char *username, +static fspr_status_t getpwnam_safe(const char *username, struct passwd *pw, char pwbuf[PWBUF_SIZE]) { return APR_ENOTIMPL; } -APR_DECLARE(apr_status_t) apr_uid_homepath_get(char **dirname, +APR_DECLARE(fspr_status_t) fspr_uid_homepath_get(char **dirname, const char *username, - apr_pool_t *p) + fspr_pool_t *p) { return APR_ENOTIMPL; } -APR_DECLARE(apr_status_t) apr_uid_current(apr_uid_t *uid, - apr_gid_t *gid, - apr_pool_t *p) +APR_DECLARE(fspr_status_t) fspr_uid_current(fspr_uid_t *uid, + fspr_gid_t *gid, + fspr_pool_t *p) { return APR_ENOTIMPL; } @@ -56,14 +56,14 @@ APR_DECLARE(apr_status_t) apr_uid_current(apr_uid_t *uid, -APR_DECLARE(apr_status_t) apr_uid_get(apr_uid_t *uid, apr_gid_t *gid, - const char *username, apr_pool_t *p) +APR_DECLARE(fspr_status_t) fspr_uid_get(fspr_uid_t *uid, fspr_gid_t *gid, + const char *username, fspr_pool_t *p) { return APR_ENOTIMPL; } -APR_DECLARE(apr_status_t) apr_uid_name_get(char **username, apr_uid_t userid, - apr_pool_t *p) +APR_DECLARE(fspr_status_t) fspr_uid_name_get(char **username, fspr_uid_t userid, + fspr_pool_t *p) { return APR_ENOTIMPL; } diff --git a/libs/apr/user/unix/groupinfo.c b/libs/apr/user/unix/groupinfo.c index 89ae966b678..994eda17a38 100644 --- a/libs/apr/user/unix/groupinfo.c +++ b/libs/apr/user/unix/groupinfo.c @@ -14,10 +14,10 @@ * limitations under the License. */ -#include "apr_strings.h" -#include "apr_portable.h" -#include "apr_user.h" -#include "apr_private.h" +#include "fspr_strings.h" +#include "fspr_portable.h" +#include "fspr_user.h" +#include "fspr_private.h" #ifdef HAVE_GRP_H #include #endif @@ -28,15 +28,15 @@ #include /* for _POSIX_THREAD_SAFE_FUNCTIONS */ #endif -APR_DECLARE(apr_status_t) apr_gid_name_get(char **groupname, apr_gid_t groupid, - apr_pool_t *p) +APR_DECLARE(fspr_status_t) fspr_gid_name_get(char **groupname, fspr_gid_t groupid, + fspr_pool_t *p) { struct group *gr; #if APR_HAS_THREADS && defined(_POSIX_THREAD_SAFE_FUNCTIONS) && defined(HAVE_GETGRGID_R) struct group grp; char grbuf[512]; - apr_status_t rv; + fspr_status_t rv; /* See comment in getpwnam_safe on error handling. */ rv = getgrgid_r(groupid, &grp, grbuf, sizeof(grbuf), &gr); @@ -52,19 +52,19 @@ APR_DECLARE(apr_status_t) apr_gid_name_get(char **groupname, apr_gid_t groupid, return errno ? errno : APR_ENOENT; } #endif - *groupname = apr_pstrdup(p, gr->gr_name); + *groupname = fspr_pstrdup(p, gr->gr_name); return APR_SUCCESS; } -APR_DECLARE(apr_status_t) apr_gid_get(apr_gid_t *groupid, - const char *groupname, apr_pool_t *p) +APR_DECLARE(fspr_status_t) fspr_gid_get(fspr_gid_t *groupid, + const char *groupname, fspr_pool_t *p) { struct group *gr; #if APR_HAS_THREADS && defined(_POSIX_THREAD_SAFE_FUNCTIONS) && defined(HAVE_GETGRNAM_R) struct group grp; char grbuf[512]; - apr_status_t rv; + fspr_status_t rv; /* See comment in getpwnam_safe on error handling. */ rv = getgrnam_r(groupname, &grp, grbuf, sizeof(grbuf), &gr); diff --git a/libs/apr/user/unix/userinfo.c b/libs/apr/user/unix/userinfo.c index 8b1d6db8083..3cb6c5abb79 100644 --- a/libs/apr/user/unix/userinfo.c +++ b/libs/apr/user/unix/userinfo.c @@ -14,10 +14,10 @@ * limitations under the License. */ -#include "apr_strings.h" -#include "apr_portable.h" -#include "apr_user.h" -#include "apr_private.h" +#include "fspr_strings.h" +#include "fspr_portable.h" +#include "fspr_user.h" +#include "fspr_private.h" #ifdef HAVE_PWD_H #include #endif @@ -28,17 +28,17 @@ #include /* for _POSIX_THREAD_SAFE_FUNCTIONS */ #endif #define APR_WANT_MEMFUNC -#include "apr_want.h" +#include "fspr_want.h" #define PWBUF_SIZE 512 -static apr_status_t getpwnam_safe(const char *username, +static fspr_status_t getpwnam_safe(const char *username, struct passwd *pw, char pwbuf[PWBUF_SIZE]) { struct passwd *pwptr; #if APR_HAS_THREADS && defined(_POSIX_THREAD_SAFE_FUNCTIONS) && defined(HAVE_GETPWNAM_R) - apr_status_t rv; + fspr_status_t rv; /* POSIX defines getpwnam_r() et al to return the error number * rather than set errno, and requires pwptr to be set to NULL if @@ -66,31 +66,31 @@ static apr_status_t getpwnam_safe(const char *username, return APR_SUCCESS; } -APR_DECLARE(apr_status_t) apr_uid_homepath_get(char **dirname, +APR_DECLARE(fspr_status_t) fspr_uid_homepath_get(char **dirname, const char *username, - apr_pool_t *p) + fspr_pool_t *p) { struct passwd pw; char pwbuf[PWBUF_SIZE]; - apr_status_t rv; + fspr_status_t rv; if ((rv = getpwnam_safe(username, &pw, pwbuf)) != APR_SUCCESS) return rv; #ifdef OS2 /* Need to manually add user name for OS/2 */ - *dirname = apr_pstrcat(p, pw.pw_dir, pw.pw_name, NULL); + *dirname = fspr_pstrcat(p, pw.pw_dir, pw.pw_name, NULL); #else - *dirname = apr_pstrdup(p, pw.pw_dir); + *dirname = fspr_pstrdup(p, pw.pw_dir); #endif return APR_SUCCESS; } -APR_DECLARE(apr_status_t) apr_uid_current(apr_uid_t *uid, - apr_gid_t *gid, - apr_pool_t *p) +APR_DECLARE(fspr_status_t) fspr_uid_current(fspr_uid_t *uid, + fspr_gid_t *gid, + fspr_pool_t *p) { *uid = getuid(); *gid = getgid(); @@ -101,12 +101,12 @@ APR_DECLARE(apr_status_t) apr_uid_current(apr_uid_t *uid, -APR_DECLARE(apr_status_t) apr_uid_get(apr_uid_t *uid, apr_gid_t *gid, - const char *username, apr_pool_t *p) +APR_DECLARE(fspr_status_t) fspr_uid_get(fspr_uid_t *uid, fspr_gid_t *gid, + const char *username, fspr_pool_t *p) { struct passwd pw; char pwbuf[PWBUF_SIZE]; - apr_status_t rv; + fspr_status_t rv; if ((rv = getpwnam_safe(username, &pw, pwbuf)) != APR_SUCCESS) return rv; @@ -117,14 +117,14 @@ APR_DECLARE(apr_status_t) apr_uid_get(apr_uid_t *uid, apr_gid_t *gid, return APR_SUCCESS; } -APR_DECLARE(apr_status_t) apr_uid_name_get(char **username, apr_uid_t userid, - apr_pool_t *p) +APR_DECLARE(fspr_status_t) fspr_uid_name_get(char **username, fspr_uid_t userid, + fspr_pool_t *p) { struct passwd *pw; #if APR_HAS_THREADS && defined(_POSIX_THREAD_SAFE_FUNCTIONS) && defined(HAVE_GETPWUID_R) struct passwd pwd; char pwbuf[PWBUF_SIZE]; - apr_status_t rv; + fspr_status_t rv; rv = getpwuid_r(userid, &pwd, pwbuf, sizeof(pwbuf), &pw); if (rv) { @@ -141,6 +141,6 @@ APR_DECLARE(apr_status_t) apr_uid_name_get(char **username, apr_uid_t userid, return errno ? errno : APR_ENOENT; } #endif - *username = apr_pstrdup(p, pw->pw_name); + *username = fspr_pstrdup(p, pw->pw_name); return APR_SUCCESS; } diff --git a/libs/apr/user/win32/groupinfo.c b/libs/apr/user/win32/groupinfo.c index 7739a5428dd..5ed18ee3235 100644 --- a/libs/apr/user/win32/groupinfo.c +++ b/libs/apr/user/win32/groupinfo.c @@ -14,16 +14,16 @@ * limitations under the License. */ -#include "apr_strings.h" -#include "apr_portable.h" -#include "apr_user.h" -#include "apr_private.h" +#include "fspr_strings.h" +#include "fspr_portable.h" +#include "fspr_user.h" +#include "fspr_private.h" #if APR_HAVE_SYS_TYPES_H #include #endif -APR_DECLARE(apr_status_t) apr_gid_get(apr_gid_t *gid, - const char *groupname, apr_pool_t *p) +APR_DECLARE(fspr_status_t) fspr_gid_get(fspr_gid_t *gid, + const char *groupname, fspr_pool_t *p) { #ifdef _WIN32_WCE return APR_ENOTIMPL; @@ -37,11 +37,11 @@ APR_DECLARE(apr_status_t) apr_gid_get(apr_gid_t *gid, char *pos; if (pos = strchr(groupname, '/')) { - domain = apr_pstrndup(p, groupname, pos - groupname); + domain = fspr_pstrndup(p, groupname, pos - groupname); groupname = pos + 1; } else if (pos = strchr(groupname, '\\')) { - domain = apr_pstrndup(p, groupname, pos - groupname); + domain = fspr_pstrndup(p, groupname, pos - groupname); groupname = pos + 1; } else { @@ -54,22 +54,22 @@ APR_DECLARE(apr_status_t) apr_gid_get(apr_gid_t *gid, if (sidlen) { /* Give it back on the second pass */ - *gid = apr_palloc(p, sidlen); + *gid = fspr_palloc(p, sidlen); domlen = sizeof(anydomain); rv = LookupAccountName(domain, groupname, *gid, &sidlen, anydomain, &domlen, &sidtype); } if (!sidlen || !rv) { - return apr_get_os_error(); + return fspr_get_os_error(); } return APR_SUCCESS; #endif } -APR_DECLARE(apr_status_t) apr_gid_name_get(char **groupname, apr_gid_t groupid, apr_pool_t *p) +APR_DECLARE(fspr_status_t) fspr_gid_name_get(char **groupname, fspr_gid_t groupid, fspr_pool_t *p) { #ifdef _WIN32_WCE - *groupname = apr_pstrdup(p, "Administrators"); + *groupname = fspr_pstrdup(p, "Administrators"); #else SID_NAME_USE type; char name[MAX_PATH], domain[MAX_PATH]; @@ -77,16 +77,16 @@ APR_DECLARE(apr_status_t) apr_gid_name_get(char **groupname, apr_gid_t groupid, if (!groupid) return APR_EINVAL; if (!LookupAccountSid(NULL, groupid, name, &cbname, domain, &cbdomain, &type)) - return apr_get_os_error(); + return fspr_get_os_error(); if (type != SidTypeGroup && type != SidTypeWellKnownGroup && type != SidTypeAlias) return APR_EINVAL; - *groupname = apr_pstrdup(p, name); + *groupname = fspr_pstrdup(p, name); #endif return APR_SUCCESS; } -APR_DECLARE(apr_status_t) apr_gid_compare(apr_gid_t left, apr_gid_t right) +APR_DECLARE(fspr_status_t) fspr_gid_compare(fspr_gid_t left, fspr_gid_t right) { if (!left || !right) return APR_EINVAL; diff --git a/libs/apr/user/win32/userinfo.c b/libs/apr/user/win32/userinfo.c index aae3f9bec08..28b243d8289 100644 --- a/libs/apr/user/win32/userinfo.c +++ b/libs/apr/user/win32/userinfo.c @@ -14,11 +14,11 @@ * limitations under the License. */ -#include "apr_private.h" -#include "apr_strings.h" -#include "apr_portable.h" -#include "apr_user.h" -#include "apr_arch_file_io.h" +#include "fspr_private.h" +#include "fspr_strings.h" +#include "fspr_portable.h" +#include "fspr_user.h" +#include "fspr_arch_file_io.h" #if APR_HAVE_SYS_TYPES_H #include #endif @@ -30,7 +30,7 @@ * depends on IsValidSid(), which internally we better test long * before we get here! */ -void get_sid_string(char *buf, apr_size_t blen, apr_uid_t id) +void get_sid_string(char *buf, fspr_size_t blen, fspr_uid_t id) { PSID_IDENTIFIER_AUTHORITY psia; DWORD nsa; @@ -45,10 +45,10 @@ void get_sid_string(char *buf, apr_size_t blen, apr_uid_t id) + ((DWORD)(psia->Value[3]) << 16) + ((DWORD)(psia->Value[2]) << 24); sa = (DWORD)(psia->Value[1]) + ((DWORD)(psia->Value[0]) << 8); if (sa) { - slen = apr_snprintf(buf, blen, "S-%lu-0x%04x%08x", + slen = fspr_snprintf(buf, blen, "S-%lu-0x%04x%08x", SID_REVISION, sa, nsa); } else { - slen = apr_snprintf(buf, blen, "S-%lu-%lu", + slen = fspr_snprintf(buf, blen, "S-%lu-%lu", SID_REVISION, nsa); } @@ -56,7 +56,7 @@ void get_sid_string(char *buf, apr_size_t blen, apr_uid_t id) */ nsa = *GetSidSubAuthorityCount(id); for (sa = 0; sa < nsa; ++sa) { - slen += apr_snprintf(buf + slen, blen - slen, "-%lu", + slen += fspr_snprintf(buf + slen, blen - slen, "-%lu", *GetSidSubAuthority(id, sa)); } } @@ -64,26 +64,26 @@ void get_sid_string(char *buf, apr_size_t blen, apr_uid_t id) /* Query the ProfileImagePath from the version-specific branch, where the * regkey uses the user's name on 9x, and user's sid string on NT. */ -APR_DECLARE(apr_status_t) apr_uid_homepath_get(char **dirname, +APR_DECLARE(fspr_status_t) fspr_uid_homepath_get(char **dirname, const char *username, - apr_pool_t *p) + fspr_pool_t *p) { #ifdef _WIN32_WCE - *dirname = apr_pstrdup(p, "/My Documents"); + *dirname = fspr_pstrdup(p, "/My Documents"); return APR_SUCCESS; #else - apr_status_t rv; + fspr_status_t rv; char regkey[MAX_PATH * 2]; char *fixch; DWORD keylen; DWORD type; HKEY key; - if (apr_os_level >= APR_WIN_NT) { - apr_uid_t uid; - apr_gid_t gid; + if (fspr_os_level >= APR_WIN_NT) { + fspr_uid_t uid; + fspr_gid_t gid; - if ((rv = apr_uid_get(&uid, &gid, username, p)) != APR_SUCCESS) + if ((rv = fspr_uid_get(&uid, &gid, username, p)) != APR_SUCCESS) return rv; strcpy(regkey, "SOFTWARE\\Microsoft\\Windows NT\\CurrentVersion\\" @@ -95,7 +95,7 @@ APR_DECLARE(apr_status_t) apr_uid_homepath_get(char **dirname, strcpy(regkey, "SOFTWARE\\Microsoft\\Windows\\CurrentVersion\\" "ProfileList\\"); keylen = (DWORD)strlen(regkey); - apr_cpystrn(regkey + keylen, username, sizeof(regkey) - keylen); + fspr_cpystrn(regkey + keylen, username, sizeof(regkey) - keylen); } if ((rv = RegOpenKeyEx(HKEY_LOCAL_MACHINE, regkey, 0, @@ -114,18 +114,18 @@ APR_DECLARE(apr_status_t) apr_uid_homepath_get(char **dirname, if (type == REG_SZ) { char retdir[MAX_PATH]; if ((rv = unicode_to_utf8_path(retdir, sizeof(retdir), - (apr_wchar_t*)regkey)) != APR_SUCCESS) + (fspr_wchar_t*)regkey)) != APR_SUCCESS) return rv; - *dirname = apr_pstrdup(p, retdir); + *dirname = fspr_pstrdup(p, retdir); } else if (type == REG_EXPAND_SZ) { - apr_wchar_t path[MAX_PATH]; + fspr_wchar_t path[MAX_PATH]; char retdir[MAX_PATH]; - ExpandEnvironmentStringsW((apr_wchar_t*)regkey, path, sizeof(path)); + ExpandEnvironmentStringsW((fspr_wchar_t*)regkey, path, sizeof(path)); if ((rv = unicode_to_utf8_path(retdir, sizeof(retdir), path)) != APR_SUCCESS) return rv; - *dirname = apr_pstrdup(p, retdir); + *dirname = fspr_pstrdup(p, retdir); } else return APR_ENOENT; @@ -141,12 +141,12 @@ APR_DECLARE(apr_status_t) apr_uid_homepath_get(char **dirname, if (rv != ERROR_SUCCESS) return APR_FROM_OS_ERROR(rv); if (type == REG_SZ) { - *dirname = apr_pstrdup(p, regkey); + *dirname = fspr_pstrdup(p, regkey); } else if (type == REG_EXPAND_SZ) { char path[MAX_PATH]; ExpandEnvironmentStrings(regkey, path, sizeof(path)); - *dirname = apr_pstrdup(p, path); + *dirname = fspr_pstrdup(p, path); } else return APR_ENOENT; @@ -159,9 +159,9 @@ APR_DECLARE(apr_status_t) apr_uid_homepath_get(char **dirname, #endif /* _WIN32_WCE */ } -APR_DECLARE(apr_status_t) apr_uid_current(apr_uid_t *uid, - apr_gid_t *gid, - apr_pool_t *p) +APR_DECLARE(fspr_status_t) fspr_uid_current(fspr_uid_t *uid, + fspr_gid_t *gid, + fspr_pool_t *p) { #ifdef _WIN32_WCE return APR_ENOTIMPL; @@ -172,32 +172,32 @@ APR_DECLARE(apr_status_t) apr_uid_current(apr_uid_t *uid, TOKEN_PRIMARY_GROUP *grp; if(!OpenProcessToken(GetCurrentProcess(), STANDARD_RIGHTS_READ | READ_CONTROL | TOKEN_QUERY, &threadtok)) { - return apr_get_os_error(); + return fspr_get_os_error(); } *uid = NULL; if (!GetTokenInformation(threadtok, TokenUser, NULL, 0, &needed) && (GetLastError() == ERROR_INSUFFICIENT_BUFFER) - && (usr = apr_palloc(p, needed)) + && (usr = fspr_palloc(p, needed)) && GetTokenInformation(threadtok, TokenUser, usr, needed, &needed)) *uid = usr->User.Sid; else - return apr_get_os_error(); + return fspr_get_os_error(); if (!GetTokenInformation(threadtok, TokenPrimaryGroup, NULL, 0, &needed) && (GetLastError() == ERROR_INSUFFICIENT_BUFFER) - && (grp = apr_palloc(p, needed)) + && (grp = fspr_palloc(p, needed)) && GetTokenInformation(threadtok, TokenPrimaryGroup, grp, needed, &needed)) *gid = grp->PrimaryGroup; else - return apr_get_os_error(); + return fspr_get_os_error(); return APR_SUCCESS; #endif } -APR_DECLARE(apr_status_t) apr_uid_get(apr_uid_t *uid, apr_gid_t *gid, - const char *username, apr_pool_t *p) +APR_DECLARE(fspr_status_t) fspr_uid_get(fspr_uid_t *uid, fspr_gid_t *gid, + const char *username, fspr_pool_t *p) { #ifdef _WIN32_WCE return APR_ENOTIMPL; @@ -211,11 +211,11 @@ APR_DECLARE(apr_status_t) apr_uid_get(apr_uid_t *uid, apr_gid_t *gid, char *pos; if (pos = strchr(username, '/')) { - domain = apr_pstrndup(p, username, pos - username); + domain = fspr_pstrndup(p, username, pos - username); username = pos + 1; } else if (pos = strchr(username, '\\')) { - domain = apr_pstrndup(p, username, pos - username); + domain = fspr_pstrndup(p, username, pos - username); username = pos + 1; } else { @@ -228,13 +228,13 @@ APR_DECLARE(apr_status_t) apr_uid_get(apr_uid_t *uid, apr_gid_t *gid, if (sidlen) { /* Give it back on the second pass */ - *uid = apr_palloc(p, sidlen); + *uid = fspr_palloc(p, sidlen); domlen = sizeof(anydomain); rv = LookupAccountName(domain, username, *uid, &sidlen, anydomain, &domlen, &sidtype); } if (!sidlen || !rv) { - return apr_get_os_error(); + return fspr_get_os_error(); } /* There doesn't seem to be a simple way to retrieve the primary group sid */ @@ -243,11 +243,11 @@ APR_DECLARE(apr_status_t) apr_uid_get(apr_uid_t *uid, apr_gid_t *gid, #endif } -APR_DECLARE(apr_status_t) apr_uid_name_get(char **username, apr_uid_t userid, - apr_pool_t *p) +APR_DECLARE(fspr_status_t) fspr_uid_name_get(char **username, fspr_uid_t userid, + fspr_pool_t *p) { #ifdef _WIN32_WCE - *username = apr_pstrdup(p, "Administrator"); + *username = fspr_pstrdup(p, "Administrator"); return APR_SUCCESS; #else SID_NAME_USE type; @@ -256,15 +256,15 @@ APR_DECLARE(apr_status_t) apr_uid_name_get(char **username, apr_uid_t userid, if (!userid) return APR_EINVAL; if (!LookupAccountSid(NULL, userid, name, &cbname, domain, &cbdomain, &type)) - return apr_get_os_error(); + return fspr_get_os_error(); if (type != SidTypeUser && type != SidTypeAlias && type != SidTypeWellKnownGroup) return APR_EINVAL; - *username = apr_pstrdup(p, name); + *username = fspr_pstrdup(p, name); return APR_SUCCESS; #endif } -APR_DECLARE(apr_status_t) apr_uid_compare(apr_uid_t left, apr_uid_t right) +APR_DECLARE(fspr_status_t) fspr_uid_compare(fspr_uid_t left, fspr_uid_t right) { if (!left || !right) return APR_EINVAL; diff --git a/libs/esl/fs_cli.c b/libs/esl/fs_cli.c index 76e85b450d5..973df741e02 100644 --- a/libs/esl/fs_cli.c +++ b/libs/esl/fs_cli.c @@ -632,7 +632,8 @@ static const char *usage_str = " -b, --batchmode Batch mode\n" " -t, --timeout Timeout for API commands (in milliseconds)\n" " -T, --connect-timeout Timeout for socket connection (in milliseconds)\n" - " -n, --no-color Disable color\n\n"; + " -n, --no-color Disable color\n" + " -s, --set-log-uuid Set UUID to filter log events\n\n"; static int usage(char *name){ printf(usage_str, name); @@ -1468,6 +1469,7 @@ int main(int argc, char *argv[]) {"reconnect", 0, 0, 'R'}, {"timeout", 1, 0, 't'}, {"connect-timeout", 1, 0, 'T'}, + {"set-log-uuid", 1, 0, 's'}, {0, 0, 0, 0} }; char temp_host[128]; @@ -1483,6 +1485,7 @@ int main(int argc, char *argv[]) int argv_exec = 0; char argv_command[1024] = ""; char argv_loglevel[127] = ""; + char argv_filter_uuid[64] = {0}; int argv_log_uuid = 0; int argv_log_uuid_short = 0; int argv_quiet = 0; @@ -1539,7 +1542,7 @@ int main(int argc, char *argv[]) esl_global_set_default_logger(6); /* default debug level to 6 (info) */ for(;;) { int option_index = 0; - opt = getopt_long(argc, argv, "H:P:u:p:d:x:l:USt:T:qQrRhib?n", options, &option_index); + opt = getopt_long(argc, argv, "H:P:u:p:d:x:l:USt:T:qQrRhib?ns:", options, &option_index); if (opt == -1) break; switch (opt) { case 'H': @@ -1614,6 +1617,11 @@ int main(int argc, char *argv[]) case 'T': connect_timeout = atoi(optarg); break; + case 's': + esl_set_string(argv_filter_uuid, optarg); + filter_uuid = strdup(argv_filter_uuid); + break; + case 'h': case '?': print_banner(stdout, is_color); diff --git a/libs/esl/src/esl.c b/libs/esl/src/esl.c index e23144b9c0b..825d89dd54f 100644 --- a/libs/esl/src/esl.c +++ b/libs/esl/src/esl.c @@ -1444,7 +1444,7 @@ ESL_DECLARE(esl_status_t) esl_recv_event(esl_handle_t *handle, int check_q, esl_ } } - if (beg && (cl = esl_event_get_header(handle->last_ievent, "content-length"))) { + if (beg && esl_event_get_header(handle->last_ievent, "content-length")) { handle->last_ievent->body = strdup(beg); } diff --git a/libs/esl/src/esl_event.c b/libs/esl/src/esl_event.c index 8a88395ec27..cca7899d801 100644 --- a/libs/esl/src/esl_event.c +++ b/libs/esl/src/esl_event.c @@ -484,11 +484,14 @@ static esl_status_t esl_event_base_add_header(esl_event_t *event, esl_stack_t st exists = 1; } + FREE(data); goto redraw; } } else if (tmp_header) { free_header(&tmp_header); } + + FREE(data); goto end; } else { if ((stack & ESL_STACK_PUSH) || (stack & ESL_STACK_UNSHIFT)) { diff --git a/libs/iksemel/src/stream.c b/libs/iksemel/src/stream.c index e05e5d06ef6..f304f67c64d 100644 --- a/libs/iksemel/src/stream.c +++ b/libs/iksemel/src/stream.c @@ -879,11 +879,11 @@ iks_send_raw (iksparser *prs, const char *xmlstr) } else #elif HAVE_SSL if (data->flags & SF_SECURE) { - int r, err; + int r; do { r = SSL_write(data->ssl, xmlstr, strlen (xmlstr)); - } while (r == -1 && (err = SSL_get_error(data->ssl, r)) == SSL_ERROR_WANT_WRITE); + } while (r == -1 && SSL_get_error(data->ssl, r) == SSL_ERROR_WANT_WRITE); if (r < 0) { return IKS_NET_RWERR; diff --git a/libs/iksemel/tools/iksroster.c b/libs/iksemel/tools/iksroster.c index e97f81cd157..71237972b3c 100644 --- a/libs/iksemel/tools/iksroster.c +++ b/libs/iksemel/tools/iksroster.c @@ -299,6 +299,7 @@ main (int argc, char *argv[]) strtok (to_pw, "\r\n"); break; case 'f': + if (file) free(file); file = strdup (optarg); break; case 't': diff --git a/libs/libdingaling/.update b/libs/libdingaling/.update deleted file mode 100644 index 84faa7df3c6..00000000000 --- a/libs/libdingaling/.update +++ /dev/null @@ -1 +0,0 @@ -Fri Mar 9 17:53:09 CST 2007 diff --git a/libs/libdingaling/AUTHORS b/libs/libdingaling/AUTHORS deleted file mode 100644 index 3d05d943aaa..00000000000 --- a/libs/libdingaling/AUTHORS +++ /dev/null @@ -1,18 +0,0 @@ -The Initial Developer of the Original Code is -Anthony Minessale II -Portions created by the Initial Developer are Copyright (C) -the Initial Developer. All Rights Reserved. - -The PRIMARY AUTHORS are (and/or have been): - - Anthony Minessale II - Primary developer of all core components - and many of the included modules. Much of freeswitch is based on his work. - - Michael Jerris - Windows porter and responsible for the - windows\msvc build system. - - -And here is an inevitably incomplete list of MUCH-APPRECIATED CONTRIBUTORS -- -people who have submitted patches, reported bugs, and generally made Freeswitch -that much better: - diff --git a/libs/libdingaling/COPYING b/libs/libdingaling/COPYING deleted file mode 100644 index 1bf2b1279dd..00000000000 --- a/libs/libdingaling/COPYING +++ /dev/null @@ -1,471 +0,0 @@ - MOZILLA PUBLIC LICENSE - Version 1.1 - - --------------- - -1. Definitions. - - 1.0.1. "Commercial Use" means distribution or otherwise making the - Covered Code available to a third party. - - 1.1. "Contributor" means each entity that creates or contributes to - the creation of Modifications. - - 1.2. "Contributor Version" means the combination of the Original - Code, prior Modifications used by a Contributor, and the Modifications - made by that particular Contributor. - - 1.3. "Covered Code" means the Original Code or Modifications or the - combination of the Original Code and Modifications, in each case - including portions thereof. - - 1.4. "Electronic Distribution Mechanism" means a mechanism generally - accepted in the software development community for the electronic - transfer of data. - - 1.5. "Executable" means Covered Code in any form other than Source - Code. - - 1.6. "Initial Developer" means the individual or entity identified - as the Initial Developer in the Source Code notice required by Exhibit - A. - - 1.7. "Larger Work" means a work which combines Covered Code or - portions thereof with code not governed by the terms of this License. - - 1.8. "License" means this document. - - 1.8.1. "Licensable" means having the right to grant, to the maximum - extent possible, whether at the time of the initial grant or - subsequently acquired, any and all of the rights conveyed herein. - - 1.9. "Modifications" means any addition to or deletion from the - substance or structure of either the Original Code or any previous - Modifications. When Covered Code is released as a series of files, a - Modification is: - A. Any addition to or deletion from the contents of a file - containing Original Code or previous Modifications. - - B. Any new file that contains any part of the Original Code or - previous Modifications. - - 1.10. "Original Code" means Source Code of computer software code - which is described in the Source Code notice required by Exhibit A as - Original Code, and which, at the time of its release under this - License is not already Covered Code governed by this License. - - 1.10.1. "Patent Claims" means any patent claim(s), now owned or - hereafter acquired, including without limitation, method, process, - and apparatus claims, in any patent Licensable by grantor. - - 1.11. "Source Code" means the preferred form of the Covered Code for - making modifications to it, including all modules it contains, plus - any associated interface definition files, scripts used to control - compilation and installation of an Executable, or source code - differential comparisons against either the Original Code or another - well known, available Covered Code of the Contributor's choice. The - Source Code can be in a compressed or archival form, provided the - appropriate decompression or de-archiving software is widely available - for no charge. - - 1.12. "You" (or "Your") means an individual or a legal entity - exercising rights under, and complying with all of the terms of, this - License or a future version of this License issued under Section 6.1. - For legal entities, "You" includes any entity which controls, is - controlled by, or is under common control with You. For purposes of - this definition, "control" means (a) the power, direct or indirect, - to cause the direction or management of such entity, whether by - contract or otherwise, or (b) ownership of more than fifty percent - (50%) of the outstanding shares or beneficial ownership of such - entity. - -2. Source Code License. - - 2.1. The Initial Developer Grant. - The Initial Developer hereby grants You a world-wide, royalty-free, - non-exclusive license, subject to third party intellectual property - claims: - (a) under intellectual property rights (other than patent or - trademark) Licensable by Initial Developer to use, reproduce, - modify, display, perform, sublicense and distribute the Original - Code (or portions thereof) with or without Modifications, and/or - as part of a Larger Work; and - - (b) under Patents Claims infringed by the making, using or - selling of Original Code, to make, have made, use, practice, - sell, and offer for sale, and/or otherwise dispose of the - Original Code (or portions thereof). - - (c) the licenses granted in this Section 2.1(a) and (b) are - effective on the date Initial Developer first distributes - Original Code under the terms of this License. - - (d) Notwithstanding Section 2.1(b) above, no patent license is - granted: 1) for code that You delete from the Original Code; 2) - separate from the Original Code; or 3) for infringements caused - by: i) the modification of the Original Code or ii) the - combination of the Original Code with other software or devices. - - 2.2. Contributor Grant. - Subject to third party intellectual property claims, each Contributor - hereby grants You a world-wide, royalty-free, non-exclusive license - - (a) under intellectual property rights (other than patent or - trademark) Licensable by Contributor, to use, reproduce, modify, - display, perform, sublicense and distribute the Modifications - created by such Contributor (or portions thereof) either on an - unmodified basis, with other Modifications, as Covered Code - and/or as part of a Larger Work; and - - (b) under Patent Claims infringed by the making, using, or - selling of Modifications made by that Contributor either alone - and/or in combination with its Contributor Version (or portions - of such combination), to make, use, sell, offer for sale, have - made, and/or otherwise dispose of: 1) Modifications made by that - Contributor (or portions thereof); and 2) the combination of - Modifications made by that Contributor with its Contributor - Version (or portions of such combination). - - (c) the licenses granted in Sections 2.2(a) and 2.2(b) are - effective on the date Contributor first makes Commercial Use of - the Covered Code. - - (d) Notwithstanding Section 2.2(b) above, no patent license is - granted: 1) for any code that Contributor has deleted from the - Contributor Version; 2) separate from the Contributor Version; - 3) for infringements caused by: i) third party modifications of - Contributor Version or ii) the combination of Modifications made - by that Contributor with other software (except as part of the - Contributor Version) or other devices; or 4) under Patent Claims - infringed by Covered Code in the absence of Modifications made by - that Contributor. - -3. Distribution Obligations. - - 3.1. Application of License. - The Modifications which You create or to which You contribute are - governed by the terms of this License, including without limitation - Section 2.2. The Source Code version of Covered Code may be - distributed only under the terms of this License or a future version - of this License released under Section 6.1, and You must include a - copy of this License with every copy of the Source Code You - distribute. You may not offer or impose any terms on any Source Code - version that alters or restricts the applicable version of this - License or the recipients' rights hereunder. However, You may include - an additional document offering the additional rights described in - Section 3.5. - - 3.2. Availability of Source Code. - Any Modification which You create or to which You contribute must be - made available in Source Code form under the terms of this License - either on the same media as an Executable version or via an accepted - Electronic Distribution Mechanism to anyone to whom you made an - Executable version available; and if made available via Electronic - Distribution Mechanism, must remain available for at least twelve (12) - months after the date it initially became available, or at least six - (6) months after a subsequent version of that particular Modification - has been made available to such recipients. You are responsible for - ensuring that the Source Code version remains available even if the - Electronic Distribution Mechanism is maintained by a third party. - - 3.3. Description of Modifications. - You must cause all Covered Code to which You contribute to contain a - file documenting the changes You made to create that Covered Code and - the date of any change. You must include a prominent statement that - the Modification is derived, directly or indirectly, from Original - Code provided by the Initial Developer and including the name of the - Initial Developer in (a) the Source Code, and (b) in any notice in an - Executable version or related documentation in which You describe the - origin or ownership of the Covered Code. - - 3.4. Intellectual Property Matters - (a) Third Party Claims. - If Contributor has knowledge that a license under a third party's - intellectual property rights is required to exercise the rights - granted by such Contributor under Sections 2.1 or 2.2, - Contributor must include a text file with the Source Code - distribution titled "LEGAL" which describes the claim and the - party making the claim in sufficient detail that a recipient will - know whom to contact. If Contributor obtains such knowledge after - the Modification is made available as described in Section 3.2, - Contributor shall promptly modify the LEGAL file in all copies - Contributor makes available thereafter and shall take other steps - (such as notifying appropriate mailing lists or newsgroups) - reasonably calculated to inform those who received the Covered - Code that new knowledge has been obtained. - - (b) Contributor APIs. - If Contributor's Modifications include an application programming - interface and Contributor has knowledge of patent licenses which - are reasonably necessary to implement that API, Contributor must - also include this information in the LEGAL file. - - (c) Representations. - Contributor represents that, except as disclosed pursuant to - Section 3.4(a) above, Contributor believes that Contributor's - Modifications are Contributor's original creation(s) and/or - Contributor has sufficient rights to grant the rights conveyed by - this License. - - 3.5. Required Notices. - You must duplicate the notice in Exhibit A in each file of the Source - Code. If it is not possible to put such notice in a particular Source - Code file due to its structure, then You must include such notice in a - location (such as a relevant directory) where a user would be likely - to look for such a notice. If You created one or more Modification(s) - You may add your name as a Contributor to the notice described in - Exhibit A. You must also duplicate this License in any documentation - for the Source Code where You describe recipients' rights or ownership - rights relating to Covered Code. You may choose to offer, and to - charge a fee for, warranty, support, indemnity or liability - obligations to one or more recipients of Covered Code. However, You - may do so only on Your own behalf, and not on behalf of the Initial - Developer or any Contributor. You must make it absolutely clear than - any such warranty, support, indemnity or liability obligation is - offered by You alone, and You hereby agree to indemnify the Initial - Developer and every Contributor for any liability incurred by the - Initial Developer or such Contributor as a result of warranty, - support, indemnity or liability terms You offer. - - 3.6. Distribution of Executable Versions. - You may distribute Covered Code in Executable form only if the - requirements of Section 3.1-3.5 have been met for that Covered Code, - and if You include a notice stating that the Source Code version of - the Covered Code is available under the terms of this License, - including a description of how and where You have fulfilled the - obligations of Section 3.2. The notice must be conspicuously included - in any notice in an Executable version, related documentation or - collateral in which You describe recipients' rights relating to the - Covered Code. You may distribute the Executable version of Covered - Code or ownership rights under a license of Your choice, which may - contain terms different from this License, provided that You are in - compliance with the terms of this License and that the license for the - Executable version does not attempt to limit or alter the recipient's - rights in the Source Code version from the rights set forth in this - License. If You distribute the Executable version under a different - license You must make it absolutely clear that any terms which differ - from this License are offered by You alone, not by the Initial - Developer or any Contributor. You hereby agree to indemnify the - Initial Developer and every Contributor for any liability incurred by - the Initial Developer or such Contributor as a result of any such - terms You offer. - - 3.7. Larger Works. - You may create a Larger Work by combining Covered Code with other code - not governed by the terms of this License and distribute the Larger - Work as a single product. In such a case, You must make sure the - requirements of this License are fulfilled for the Covered Code. - -4. Inability to Comply Due to Statute or Regulation. - - If it is impossible for You to comply with any of the terms of this - License with respect to some or all of the Covered Code due to - statute, judicial order, or regulation then You must: (a) comply with - the terms of this License to the maximum extent possible; and (b) - describe the limitations and the code they affect. Such description - must be included in the LEGAL file described in Section 3.4 and must - be included with all distributions of the Source Code. Except to the - extent prohibited by statute or regulation, such description must be - sufficiently detailed for a recipient of ordinary skill to be able to - understand it. - -5. Application of this License. - - This License applies to code to which the Initial Developer has - attached the notice in Exhibit A and to related Covered Code. - -6. Versions of the License. - - 6.1. New Versions. - Netscape Communications Corporation ("Netscape") may publish revised - and/or new versions of the License from time to time. Each version - will be given a distinguishing version number. - - 6.2. Effect of New Versions. - Once Covered Code has been published under a particular version of the - License, You may always continue to use it under the terms of that - version. You may also choose to use such Covered Code under the terms - of any subsequent version of the License published by Netscape. No one - other than Netscape has the right to modify the terms applicable to - Covered Code created under this License. - - 6.3. Derivative Works. - If You create or use a modified version of this License (which you may - only do in order to apply it to code which is not already Covered Code - governed by this License), You must (a) rename Your license so that - the phrases "Mozilla", "MOZILLAPL", "MOZPL", "Netscape", - "MPL", "NPL" or any confusingly similar phrase do not appear in your - license (except to note that your license differs from this License) - and (b) otherwise make it clear that Your version of the license - contains terms which differ from the Mozilla Public License and - Netscape Public License. (Filling in the name of the Initial - Developer, Original Code or Contributor in the notice described in - Exhibit A shall not of themselves be deemed to be modifications of - this License.) - -7. DISCLAIMER OF WARRANTY. - - COVERED CODE IS PROVIDED UNDER THIS LICENSE ON AN "AS IS" BASIS, - WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING, - WITHOUT LIMITATION, WARRANTIES THAT THE COVERED CODE IS FREE OF - DEFECTS, MERCHANTABLE, FIT FOR A PARTICULAR PURPOSE OR NON-INFRINGING. - THE ENTIRE RISK AS TO THE QUALITY AND PERFORMANCE OF THE COVERED CODE - IS WITH YOU. SHOULD ANY COVERED CODE PROVE DEFECTIVE IN ANY RESPECT, - YOU (NOT THE INITIAL DEVELOPER OR ANY OTHER CONTRIBUTOR) ASSUME THE - COST OF ANY NECESSARY SERVICING, REPAIR OR CORRECTION. THIS DISCLAIMER - OF WARRANTY CONSTITUTES AN ESSENTIAL PART OF THIS LICENSE. NO USE OF - ANY COVERED CODE IS AUTHORIZED HEREUNDER EXCEPT UNDER THIS DISCLAIMER. - -8. TERMINATION. - - 8.1. This License and the rights granted hereunder will terminate - automatically if You fail to comply with terms herein and fail to cure - such breach within 30 days of becoming aware of the breach. All - sublicenses to the Covered Code which are properly granted shall - survive any termination of this License. Provisions which, by their - nature, must remain in effect beyond the termination of this License - shall survive. - - 8.2. If You initiate litigation by asserting a patent infringement - claim (excluding declatory judgment actions) against Initial Developer - or a Contributor (the Initial Developer or Contributor against whom - You file such action is referred to as "Participant") alleging that: - - (a) such Participant's Contributor Version directly or indirectly - infringes any patent, then any and all rights granted by such - Participant to You under Sections 2.1 and/or 2.2 of this License - shall, upon 60 days notice from Participant terminate prospectively, - unless if within 60 days after receipt of notice You either: (i) - agree in writing to pay Participant a mutually agreeable reasonable - royalty for Your past and future use of Modifications made by such - Participant, or (ii) withdraw Your litigation claim with respect to - the Contributor Version against such Participant. If within 60 days - of notice, a reasonable royalty and payment arrangement are not - mutually agreed upon in writing by the parties or the litigation claim - is not withdrawn, the rights granted by Participant to You under - Sections 2.1 and/or 2.2 automatically terminate at the expiration of - the 60 day notice period specified above. - - (b) any software, hardware, or device, other than such Participant's - Contributor Version, directly or indirectly infringes any patent, then - any rights granted to You by such Participant under Sections 2.1(b) - and 2.2(b) are revoked effective as of the date You first made, used, - sold, distributed, or had made, Modifications made by that - Participant. - - 8.3. If You assert a patent infringement claim against Participant - alleging that such Participant's Contributor Version directly or - indirectly infringes any patent where such claim is resolved (such as - by license or settlement) prior to the initiation of patent - infringement litigation, then the reasonable value of the licenses - granted by such Participant under Sections 2.1 or 2.2 shall be taken - into account in determining the amount or value of any payment or - license. - - 8.4. In the event of termination under Sections 8.1 or 8.2 above, - all end user license agreements (excluding distributors and resellers) - which have been validly granted by You or any distributor hereunder - prior to termination shall survive termination. - -9. LIMITATION OF LIABILITY. - - UNDER NO CIRCUMSTANCES AND UNDER NO LEGAL THEORY, WHETHER TORT - (INCLUDING NEGLIGENCE), CONTRACT, OR OTHERWISE, SHALL YOU, THE INITIAL - DEVELOPER, ANY OTHER CONTRIBUTOR, OR ANY DISTRIBUTOR OF COVERED CODE, - OR ANY SUPPLIER OF ANY OF SUCH PARTIES, BE LIABLE TO ANY PERSON FOR - ANY INDIRECT, SPECIAL, INCIDENTAL, OR CONSEQUENTIAL DAMAGES OF ANY - CHARACTER INCLUDING, WITHOUT LIMITATION, DAMAGES FOR LOSS OF GOODWILL, - WORK STOPPAGE, COMPUTER FAILURE OR MALFUNCTION, OR ANY AND ALL OTHER - COMMERCIAL DAMAGES OR LOSSES, EVEN IF SUCH PARTY SHALL HAVE BEEN - INFORMED OF THE POSSIBILITY OF SUCH DAMAGES. THIS LIMITATION OF - LIABILITY SHALL NOT APPLY TO LIABILITY FOR DEATH OR PERSONAL INJURY - RESULTING FROM SUCH PARTY'S NEGLIGENCE TO THE EXTENT APPLICABLE LAW - PROHIBITS SUCH LIMITATION. SOME JURISDICTIONS DO NOT ALLOW THE - EXCLUSION OR LIMITATION OF INCIDENTAL OR CONSEQUENTIAL DAMAGES, SO - THIS EXCLUSION AND LIMITATION MAY NOT APPLY TO YOU. - -10. U.S. GOVERNMENT END USERS. - - The Covered Code is a "commercial item," as that term is defined in - 48 C.F.R. 2.101 (Oct. 1995), consisting of "commercial computer - software" and "commercial computer software documentation," as such - terms are used in 48 C.F.R. 12.212 (Sept. 1995). Consistent with 48 - C.F.R. 12.212 and 48 C.F.R. 227.7202-1 through 227.7202-4 (June 1995), - all U.S. Government End Users acquire Covered Code with only those - rights set forth herein. - -11. MISCELLANEOUS. - - This License represents the complete agreement concerning subject - matter hereof. If any provision of this License is held to be - unenforceable, such provision shall be reformed only to the extent - necessary to make it enforceable. This License shall be governed by - California law provisions (except to the extent applicable law, if - any, provides otherwise), excluding its conflict-of-law provisions. - With respect to disputes in which at least one party is a citizen of, - or an entity chartered or registered to do business in the United - States of America, any litigation relating to this License shall be - subject to the jurisdiction of the Federal Courts of the Northern - District of California, with venue lying in Santa Clara County, - California, with the losing party responsible for costs, including - without limitation, court costs and reasonable attorneys' fees and - expenses. The application of the United Nations Convention on - Contracts for the International Sale of Goods is expressly excluded. - Any law or regulation which provides that the language of a contract - shall be construed against the drafter shall not apply to this - License. - -12. RESPONSIBILITY FOR CLAIMS. - - As between Initial Developer and the Contributors, each party is - responsible for claims and damages arising, directly or indirectly, - out of its utilization of rights under this License and You agree to - work with Initial Developer and Contributors to distribute such - responsibility on an equitable basis. Nothing herein is intended or - shall be deemed to constitute any admission of liability. - -13. MULTIPLE-LICENSED CODE. - - Initial Developer may designate portions of the Covered Code as - "Multiple-Licensed". "Multiple-Licensed" means that the Initial - Developer permits you to utilize portions of the Covered Code under - Your choice of the NPL or the alternative licenses, if any, specified - by the Initial Developer in the file described in Exhibit A. - -EXHIBIT A -Mozilla Public License. - - ``The contents of this file are subject to the Mozilla Public License - Version 1.1 (the "License"); you may not use this file except in - compliance with the License. You may obtain a copy of the License at - http://www.mozilla.org/MPL/ - - Software distributed under the License is distributed on an "AS IS" - basis, WITHOUT WARRANTY OF ANY KIND, either express or implied. See the - License for the specific language governing rights and limitations - under the License. - - The Original Code is ______________________________________. - - The Initial Developer of the Original Code is ________________________. - Portions created by ______________________ are Copyright (C) ______ - _______________________. All Rights Reserved. - - Contributor(s): ______________________________________. - - Alternatively, the contents of this file may be used under the terms - of the _____ license (the "[___] License"), in which case the - provisions of [______] License are applicable instead of those - above. If you wish to allow use of your version of this file only - under the terms of the [____] License and not to allow others to use - your version of this file under the MPL, indicate your decision by - deleting the provisions above and replace them with the notice and - other provisions required by the [___] License. If you do not delete - the provisions above, a recipient may use your version of this file - under either the MPL or the [___] License." - - [NOTE: The text of this Exhibit A may differ slightly from the text of - the notices in the Source Code files of the Original Code. You should - use the text of this Exhibit A rather than the text found in the - Original Code Source Code for Your Modifications.] - - diff --git a/libs/libdingaling/ChangeLog b/libs/libdingaling/ChangeLog deleted file mode 100644 index e69de29bb2d..00000000000 diff --git a/libs/libdingaling/INSTALL b/libs/libdingaling/INSTALL deleted file mode 100644 index 095b1eb4063..00000000000 --- a/libs/libdingaling/INSTALL +++ /dev/null @@ -1,231 +0,0 @@ -Installation Instructions -************************* - -Copyright (C) 1994, 1995, 1996, 1999, 2000, 2001, 2002, 2004 Free -Software Foundation, Inc. - -This file is free documentation; the Free Software Foundation gives -unlimited permission to copy, distribute and modify it. - -Basic Installation -================== - -These are generic installation instructions. - - The `configure' shell script attempts to guess correct values for -various system-dependent variables used during compilation. It uses -those values to create a `Makefile' in each directory of the package. -It may also create one or more `.h' files containing system-dependent -definitions. Finally, it creates a shell script `config.status' that -you can run in the future to recreate the current configuration, and a -file `config.log' containing compiler output (useful mainly for -debugging `configure'). - - It can also use an optional file (typically called `config.cache' -and enabled with `--cache-file=config.cache' or simply `-C') that saves -the results of its tests to speed up reconfiguring. (Caching is -disabled by default to prevent problems with accidental use of stale -cache files.) - - If you need to do unusual things to compile the package, please try -to figure out how `configure' could check whether to do them, and mail -diffs or instructions to the address given in the `README' so they can -be considered for the next release. If you are using the cache, and at -some point `config.cache' contains results you don't want to keep, you -may remove or edit it. - - The file `configure.ac' (or `configure.in') is used to create -`configure' by a program called `autoconf'. You only need -`configure.ac' if you want to change it or regenerate `configure' using -a newer version of `autoconf'. - -The simplest way to compile this package is: - - 1. `cd' to the directory containing the package's source code and type - `./configure' to configure the package for your system. If you're - using `csh' on an old version of System V, you might need to type - `sh ./configure' instead to prevent `csh' from trying to execute - `configure' itself. - - Running `configure' takes awhile. While running, it prints some - messages telling which features it is checking for. - - 2. Type `make' to compile the package. - - 3. Optionally, type `make check' to run any self-tests that come with - the package. - - 4. Type `make install' to install the programs and any data files and - documentation. - - 5. You can remove the program binaries and object files from the - source code directory by typing `make clean'. To also remove the - files that `configure' created (so you can compile the package for - a different kind of computer), type `make distclean'. There is - also a `make maintainer-clean' target, but that is intended mainly - for the package's developers. If you use it, you may have to get - all sorts of other programs in order to regenerate files that came - with the distribution. - -Compilers and Options -===================== - -Some systems require unusual options for compilation or linking that the -`configure' script does not know about. Run `./configure --help' for -details on some of the pertinent environment variables. - - You can give `configure' initial values for configuration parameters -by setting variables in the command line or in the environment. Here -is an example: - - ./configure CC=c89 CFLAGS=-O2 LIBS=-lposix - - *Note Defining Variables::, for more details. - -Compiling For Multiple Architectures -==================================== - -You can compile the package for more than one kind of computer at the -same time, by placing the object files for each architecture in their -own directory. To do this, you must use a version of `make' that -supports the `VPATH' variable, such as GNU `make'. `cd' to the -directory where you want the object files and executables to go and run -the `configure' script. `configure' automatically checks for the -source code in the directory that `configure' is in and in `..'. - - If you have to use a `make' that does not support the `VPATH' -variable, you have to compile the package for one architecture at a -time in the source code directory. After you have installed the -package for one architecture, use `make distclean' before reconfiguring -for another architecture. - -Installation Names -================== - -By default, `make install' will install the package's files in -`/usr/local/bin', `/usr/local/man', etc. You can specify an -installation prefix other than `/usr/local' by giving `configure' the -option `--prefix=PREFIX'. - - You can specify separate installation prefixes for -architecture-specific files and architecture-independent files. If you -give `configure' the option `--exec-prefix=PREFIX', the package will -use PREFIX as the prefix for installing programs and libraries. -Documentation and other data files will still use the regular prefix. - - In addition, if you use an unusual directory layout you can give -options like `--bindir=DIR' to specify different values for particular -kinds of files. Run `configure --help' for a list of the directories -you can set and what kinds of files go in them. - - If the package supports it, you can cause programs to be installed -with an extra prefix or suffix on their names by giving `configure' the -option `--program-prefix=PREFIX' or `--program-suffix=SUFFIX'. - -Optional Features -================= - -Some packages pay attention to `--enable-FEATURE' options to -`configure', where FEATURE indicates an optional part of the package. -They may also pay attention to `--with-PACKAGE' options, where PACKAGE -is something like `gnu-as' or `x' (for the X Window System). The -`README' should mention any `--enable-' and `--with-' options that the -package recognizes. - - For packages that use the X Window System, `configure' can usually -find the X include and library files automatically, but if it doesn't, -you can use the `configure' options `--x-includes=DIR' and -`--x-libraries=DIR' to specify their locations. - -Specifying the System Type -========================== - -There may be some features `configure' cannot figure out automatically, -but needs to determine by the type of machine the package will run on. -Usually, assuming the package is built to be run on the _same_ -architectures, `configure' can figure that out, but if it prints a -message saying it cannot guess the machine type, give it the -`--build=TYPE' option. TYPE can either be a short name for the system -type, such as `sun4', or a canonical name which has the form: - - CPU-COMPANY-SYSTEM - -where SYSTEM can have one of these forms: - - OS KERNEL-OS - - See the file `config.sub' for the possible values of each field. If -`config.sub' isn't included in this package, then this package doesn't -need to know the machine type. - - If you are _building_ compiler tools for cross-compiling, you should -use the `--target=TYPE' option to select the type of system they will -produce code for. - - If you want to _use_ a cross compiler, that generates code for a -platform different from the build platform, you should specify the -"host" platform (i.e., that on which the generated programs will -eventually be run) with `--host=TYPE'. - -Sharing Defaults -================ - -If you want to set default values for `configure' scripts to share, you -can create a site shell script called `config.site' that gives default -values for variables like `CC', `cache_file', and `prefix'. -`configure' looks for `PREFIX/share/config.site' if it exists, then -`PREFIX/etc/config.site' if it exists. Or, you can set the -`CONFIG_SITE' environment variable to the location of the site script. -A warning: not all `configure' scripts look for a site script. - -Defining Variables -================== - -Variables not defined in a site shell script can be set in the -environment passed to `configure'. However, some packages may run -configure again during the build, and the customized values of these -variables may be lost. In order to avoid this problem, you should set -them in the `configure' command line, using `VAR=value'. For example: - - ./configure CC=/usr/local2/bin/gcc - -will cause the specified gcc to be used as the C compiler (unless it is -overridden in the site shell script). - -`configure' Invocation -====================== - -`configure' recognizes the following options to control how it operates. - -`--help' -`-h' - Print a summary of the options to `configure', and exit. - -`--version' -`-V' - Print the version of Autoconf used to generate the `configure' - script, and exit. - -`--cache-file=FILE' - Enable the cache: use and save the results of the tests in FILE, - traditionally `config.cache'. FILE defaults to `/dev/null' to - disable caching. - -`--config-cache' -`-C' - Alias for `--cache-file=config.cache'. - -`--quiet' -`--silent' -`-q' - Do not print messages saying which checks are being made. To - suppress all normal output, redirect it to `/dev/null' (any error - messages will still be shown). - -`--srcdir=DIR' - Look for the package's source code in directory DIR. Usually - `configure' can determine that directory automatically. - -`configure' also accepts some other, not widely useful, options. Run -`configure --help' for more details. - diff --git a/libs/libdingaling/Makefile.am b/libs/libdingaling/Makefile.am deleted file mode 100644 index 37bf42cb310..00000000000 --- a/libs/libdingaling/Makefile.am +++ /dev/null @@ -1,42 +0,0 @@ -EXTRA_DIST = -SUBDIRS = -AUTOMAKE_OPTIONS = foreign -NAME=dingaling -PREFIX=$(prefix) -TOUCH_TARGET=@if test -f "$@" ; then touch "$@" ; fi ; - -AM_CFLAGS = $(new_AM_CFLAGS) -I./src -I$(prefix)/include -AM_CPPFLAGS = $(AM_CFLAGS) -AM_LDFLAGS = $(new_AM_LDFLAGS) - -AM_CFLAGS += `../apr/apr-1-config --cflags --cppflags --includes || $(prefix)/bin/apr-1-config --cflags --cppflags --includes` -AM_CFLAGS += `../apr-util/apu-1-config --includes || $(prefix)/bin/apu-1-config --includes` -AM_CFLAGS += -I../iksemel/include - -lib_LTLIBRARIES = libdingaling.la -libdingaling_la_SOURCES = src/libdingaling.c src/sha1.c -libdingaling_la_CFLAGS = $(AM_CFLAGS) -libdingaling_la_LDFLAGS = $(AM_LDFLAGS) -libdingaling_la_LIBADD = ../iksemel/src/libiksemel.la ../apr/libapr-1.la ../apr-util/libaprutil-1.la -library_includedir = $(prefix)/include -library_include_HEADERS = src/libdingaling.h - -$(libdingaling_la_SOURCES): $(libdingaling_la_LIBADD) - -../apr/libapr-1.la: ../apr ../apr/.update - cd ../apr && $(MAKE) - $(TOUCH_TARGET) - -../apr-util/libaprutil-1.la: ../apr-util ../apr-util/.update - cd ../apr-util && $(MAKE) - $(TOUCH_TARGET) - -../iksemel/src/libiksemel.la: ../iksemel ../iksemel/.update - cd ../iksemel && $(MAKE) - $(TOUCH_TARGET) - -dox: - cd docs && doxygen $(PWD)/docs/Doxygen.conf - -doxclean: - rm -fr docs/html/ docs/man/ docs/perlmod/ docs/xml/ diff --git a/libs/libdingaling/NEWS b/libs/libdingaling/NEWS deleted file mode 100644 index eef3e09d2be..00000000000 --- a/libs/libdingaling/NEWS +++ /dev/null @@ -1 +0,0 @@ -Developed on UNIX where the motto is "no news is good news!". diff --git a/libs/libdingaling/README b/libs/libdingaling/README deleted file mode 100644 index 95e0a39bcf0..00000000000 --- a/libs/libdingaling/README +++ /dev/null @@ -1,8 +0,0 @@ -Install is common: - -./configure --with-prefix= -make -make install - - - diff --git a/libs/libdingaling/acsite.m4 b/libs/libdingaling/acsite.m4 deleted file mode 100644 index 80f8cf4138b..00000000000 --- a/libs/libdingaling/acsite.m4 +++ /dev/null @@ -1,6 +0,0 @@ -m4_include([build/config/ax_compiler_vendor.m4]) -m4_include([build/config/ax_cflags_warn_all_ansi.m4]) -m4_include([build/config/ax_cc_maxopt.m4]) -m4_include([build/config/ax_check_compiler_flags.m4]) -m4_include([build/config/ac_gcc_archflag.m4]) -m4_include([build/config/ac_gcc_x86_cpuid.m4]) diff --git a/libs/libdingaling/build/config/ac_cflags_gcc_option.m4 b/libs/libdingaling/build/config/ac_cflags_gcc_option.m4 deleted file mode 100644 index e651a5e6c58..00000000000 --- a/libs/libdingaling/build/config/ac_cflags_gcc_option.m4 +++ /dev/null @@ -1,142 +0,0 @@ -AC_DEFUN([AX_CFLAGS_GCC_OPTION_OLD], [dnl -AS_VAR_PUSHDEF([FLAGS],[CFLAGS])dnl -AS_VAR_PUSHDEF([VAR],[ac_cv_cflags_gcc_option_$2])dnl -AC_CACHE_CHECK([m4_ifval($1,$1,FLAGS) for gcc m4_ifval($2,$2,-option)], -VAR,[VAR="no, unknown" - AC_LANG_SAVE - AC_LANG_C - ac_save_[]FLAGS="$[]FLAGS" -for ac_arg dnl -in "-pedantic % m4_ifval($2,$2,-option)" dnl GCC - # -do FLAGS="$ac_save_[]FLAGS "`echo $ac_arg | sed -e 's,%%.*,,' -e 's,%,,'` - AC_TRY_COMPILE([],[return 0;], - [VAR=`echo $ac_arg | sed -e 's,.*% *,,'` ; break]) -done - FLAGS="$ac_save_[]FLAGS" - AC_LANG_RESTORE -]) -case ".$VAR" in - .ok|.ok,*) m4_ifvaln($3,$3) ;; - .|.no|.no,*) m4_ifvaln($4,$4) ;; - *) m4_ifvaln($3,$3,[ - if echo " $[]m4_ifval($1,$1,FLAGS) " | grep " $VAR " 2>&1 >/dev/null - then AC_RUN_LOG([: m4_ifval($1,$1,FLAGS) does contain $VAR]) - else AC_RUN_LOG([: m4_ifval($1,$1,FLAGS)="$m4_ifval($1,$1,FLAGS) $VAR"]) - m4_ifval($1,$1,FLAGS)="$m4_ifval($1,$1,FLAGS) $VAR" - fi ]) ;; -esac -AS_VAR_POPDEF([VAR])dnl -AS_VAR_POPDEF([FLAGS])dnl -]) - - -dnl the only difference - the LANG selection... and the default FLAGS - -AC_DEFUN([AX_CXXFLAGS_GCC_OPTION_OLD], [dnl -AS_VAR_PUSHDEF([FLAGS],[CXXFLAGS])dnl -AS_VAR_PUSHDEF([VAR],[ac_cv_cxxflags_gcc_option_$2])dnl -AC_CACHE_CHECK([m4_ifval($1,$1,FLAGS) for gcc m4_ifval($2,$2,-option)], -VAR,[VAR="no, unknown" - AC_LANG_SAVE - AC_LANG_CXX - ac_save_[]FLAGS="$[]FLAGS" -for ac_arg dnl -in "-pedantic % m4_ifval($2,$2,-option)" dnl GCC - # -do FLAGS="$ac_save_[]FLAGS "`echo $ac_arg | sed -e 's,%%.*,,' -e 's,%,,'` - AC_TRY_COMPILE([],[return 0;], - [VAR=`echo $ac_arg | sed -e 's,.*% *,,'` ; break]) -done - FLAGS="$ac_save_[]FLAGS" - AC_LANG_RESTORE -]) -case ".$VAR" in - .ok|.ok,*) m4_ifvaln($3,$3) ;; - .|.no|.no,*) m4_ifvaln($4,$4) ;; - *) m4_ifvaln($3,$3,[ - if echo " $[]m4_ifval($1,$1,FLAGS) " | grep " $VAR " 2>&1 >/dev/null - then AC_RUN_LOG([: m4_ifval($1,$1,FLAGS) does contain $VAR]) - else AC_RUN_LOG([: m4_ifval($1,$1,FLAGS)="$m4_ifval($1,$1,FLAGS) $VAR"]) - m4_ifval($1,$1,FLAGS)="$m4_ifval($1,$1,FLAGS) $VAR" - fi ]) ;; -esac -AS_VAR_POPDEF([VAR])dnl -AS_VAR_POPDEF([FLAGS])dnl -]) - -dnl ------------------------------------------------------------------------- - -AC_DEFUN([AX_CFLAGS_GCC_OPTION_NEW], [dnl -AS_VAR_PUSHDEF([FLAGS],[CFLAGS])dnl -AS_VAR_PUSHDEF([VAR],[ac_cv_cflags_gcc_option_$1])dnl -AC_CACHE_CHECK([m4_ifval($2,$2,FLAGS) for gcc m4_ifval($1,$1,-option)], -VAR,[VAR="no, unknown" - AC_LANG_SAVE - AC_LANG_C - ac_save_[]FLAGS="$[]FLAGS" -for ac_arg dnl -in "-pedantic % m4_ifval($1,$1,-option)" dnl GCC - # -do FLAGS="$ac_save_[]FLAGS "`echo $ac_arg | sed -e 's,%%.*,,' -e 's,%,,'` - AC_TRY_COMPILE([],[return 0;], - [VAR=`echo $ac_arg | sed -e 's,.*% *,,'` ; break]) -done - FLAGS="$ac_save_[]FLAGS" - AC_LANG_RESTORE -]) -case ".$VAR" in - .ok|.ok,*) m4_ifvaln($3,$3) ;; - .|.no|.no,*) m4_ifvaln($4,$4) ;; - *) m4_ifvaln($3,$3,[ - if echo " $[]m4_ifval($2,$2,FLAGS) " | grep " $VAR " 2>&1 >/dev/null - then AC_RUN_LOG([: m4_ifval($2,$2,FLAGS) does contain $VAR]) - else AC_RUN_LOG([: m4_ifval($2,$2,FLAGS)="$m4_ifval($2,$2,FLAGS) $VAR"]) - m4_ifval($2,$2,FLAGS)="$m4_ifval($2,$2,FLAGS) $VAR" - fi ]) ;; -esac -AS_VAR_POPDEF([VAR])dnl -AS_VAR_POPDEF([FLAGS])dnl -]) - - -dnl the only difference - the LANG selection... and the default FLAGS - -AC_DEFUN([AX_CXXFLAGS_GCC_OPTION_NEW], [dnl -AS_VAR_PUSHDEF([FLAGS],[CXXFLAGS])dnl -AS_VAR_PUSHDEF([VAR],[ac_cv_cxxflags_gcc_option_$1])dnl -AC_CACHE_CHECK([m4_ifval($2,$2,FLAGS) for gcc m4_ifval($1,$1,-option)], -VAR,[VAR="no, unknown" - AC_LANG_SAVE - AC_LANG_CXX - ac_save_[]FLAGS="$[]FLAGS" -for ac_arg dnl -in "-pedantic % m4_ifval($1,$1,-option)" dnl GCC - # -do FLAGS="$ac_save_[]FLAGS "`echo $ac_arg | sed -e 's,%%.*,,' -e 's,%,,'` - AC_TRY_COMPILE([],[return 0;], - [VAR=`echo $ac_arg | sed -e 's,.*% *,,'` ; break]) -done - FLAGS="$ac_save_[]FLAGS" - AC_LANG_RESTORE -]) -case ".$VAR" in - .ok|.ok,*) m4_ifvaln($3,$3) ;; - .|.no|.no,*) m4_ifvaln($4,$4) ;; - *) m4_ifvaln($3,$3,[ - if echo " $[]m4_ifval($2,$2,FLAGS) " | grep " $VAR " 2>&1 >/dev/null - then AC_RUN_LOG([: m4_ifval($2,$2,FLAGS) does contain $VAR]) - else AC_RUN_LOG([: m4_ifval($2,$2,FLAGS)="$m4_ifval($2,$2,FLAGS) $VAR"]) - m4_ifval($2,$2,FLAGS)="$m4_ifval($2,$2,FLAGS) $VAR" - fi ]) ;; -esac -AS_VAR_POPDEF([VAR])dnl -AS_VAR_POPDEF([FLAGS])dnl -]) - -AC_DEFUN([AX_CFLAGS_GCC_OPTION],[ifelse(m4_bregexp([$2],[-]),-1, -[AX_CFLAGS_GCC_OPTION_NEW($@)],[AX_CFLAGS_GCC_OPTION_OLD($@)])]) - -AC_DEFUN([AX_CXXFLAGS_GCC_OPTION],[ifelse(m4_bregexp([$2],[-]),-1, -[AX_CXXFLAGS_GCC_OPTION_NEW($@)],[AX_CXXFLAGS_GCC_OPTION_OLD($@)])]) - diff --git a/libs/libdingaling/build/config/ac_cflags_sun_option.m4 b/libs/libdingaling/build/config/ac_cflags_sun_option.m4 deleted file mode 100644 index a09e6fb695d..00000000000 --- a/libs/libdingaling/build/config/ac_cflags_sun_option.m4 +++ /dev/null @@ -1,140 +0,0 @@ -AC_DEFUN([AX_CFLAGS_SUN_OPTION_OLD], [dnl -AS_VAR_PUSHDEF([FLAGS],[CFLAGS])dnl -AS_VAR_PUSHDEF([VAR],[ac_cv_cflags_sun_option_$2])dnl -AC_CACHE_CHECK([m4_ifval($1,$1,FLAGS) for sun/cc m4_ifval($2,$2,-option)], -VAR,[VAR="no, unknown" - AC_LANG_SAVE - AC_LANG_C - ac_save_[]FLAGS="$[]FLAGS" -for ac_arg dnl -in "+xstrconst % -xc99=all m4_ifval($2,$2,-option)" dnl Solaris C - # -do FLAGS="$ac_save_[]FLAGS "`echo $ac_arg | sed -e 's,%%.*,,' -e 's,%,,'` - AC_TRY_COMPILE([],[return 0;], - [VAR=`echo $ac_arg | sed -e 's,.*% *,,'` ; break]) -done - FLAGS="$ac_save_[]FLAGS" - AC_LANG_RESTORE -]) -case ".$VAR" in - .ok|.ok,*) m4_ifvaln($3,$3) ;; - .|.no|.no,*) m4_ifvaln($4,$4) ;; - *) m4_ifvaln($3,$3,[ - if echo " $[]m4_ifval($1,$1,FLAGS) " | grep " $VAR " 2>&1 >/dev/null - then AC_RUN_LOG([: m4_ifval($1,$1,FLAGS) does contain $VAR]) - else AC_RUN_LOG([: m4_ifval($1,$1,FLAGS)="$m4_ifval($1,$1,FLAGS) $VAR"]) - m4_ifval($1,$1,FLAGS)="$m4_ifval($1,$1,FLAGS) $VAR" - fi ]) ;; -esac -AS_VAR_POPDEF([VAR])dnl -AS_VAR_POPDEF([FLAGS])dnl -]) - -dnl the only difference - the LANG selection... and the default FLAGS - -AC_DEFUN([AX_CXXFLAGS_SUN_OPTION_OLD], [dnl -AS_VAR_PUSHDEF([FLAGS],[CXXFLAGS])dnl -AS_VAR_PUSHDEF([VAR],[ac_cv_cxxflags_sun_option_$2])dnl -AC_CACHE_CHECK([m4_ifval($1,$1,FLAGS) for sun/cc m4_ifval($2,$2,-option)], -VAR,[VAR="no, unknown" - AC_LANG_SAVE - AC_LANG_CXX - ac_save_[]FLAGS="$[]FLAGS" -for ac_arg dnl -in "+xstrconst % -xc99=all m4_ifval($2,$2,-option)" dnl Solaris C - # -do FLAGS="$ac_save_[]FLAGS "`echo $ac_arg | sed -e 's,%%.*,,' -e 's,%,,'` - AC_TRY_COMPILE([],[return 0;], - [VAR=`echo $ac_arg | sed -e 's,.*% *,,'` ; break]) -done - FLAGS="$ac_save_[]FLAGS" - AC_LANG_RESTORE -]) -case ".$VAR" in - .ok|.ok,*) m4_ifvaln($3,$3) ;; - .|.no|.no,*) m4_ifvaln($4,$4) ;; - *) m4_ifvaln($3,$3,[ - if echo " $[]m4_ifval($1,$1,FLAGS) " | grep " $VAR " 2>&1 >/dev/null - then AC_RUN_LOG([: m4_ifval($1,$1,FLAGS) does contain $VAR]) - else AC_RUN_LOG([: m4_ifval($1,$1,FLAGS)="$m4_ifval($1,$1,FLAGS) $VAR"]) - m4_ifval($1,$1,FLAGS)="$m4_ifval($1,$1,FLAGS) $VAR" - fi ]) ;; -esac -AS_VAR_POPDEF([VAR])dnl -AS_VAR_POPDEF([FLAGS])dnl -]) - -dnl ----------------------------------------------------------------------- - -AC_DEFUN([AX_CFLAGS_SUN_OPTION_NEW], [dnl -AS_VAR_PUSHDEF([FLAGS],[CFLAGS])dnl -AS_VAR_PUSHDEF([VAR],[ac_cv_cflags_sun_option_$1])dnl -AC_CACHE_CHECK([m4_ifval($2,$2,FLAGS) for sun/cc m4_ifval($1,$1,-option)], -VAR,[VAR="no, unknown" - AC_LANG_SAVE - AC_LANG_C - ac_save_[]FLAGS="$[]FLAGS" -for ac_arg dnl -in "+xstrconst % -xc99=all m4_ifval($1,$1,-option)" dnl Solaris C - # -do FLAGS="$ac_save_[]FLAGS "`echo $ac_arg | sed -e 's,%%.*,,' -e 's,%,,'` - AC_TRY_COMPILE([],[return 0;], - [VAR=`echo $ac_arg | sed -e 's,.*% *,,'` ; break]) -done - FLAGS="$ac_save_[]FLAGS" - AC_LANG_RESTORE -]) -case ".$VAR" in - .ok|.ok,*) m4_ifvaln($3,$3) ;; - .|.no|.no,*) m4_ifvaln($4,$4) ;; - *) m4_ifvaln($3,$3,[ - if echo " $[]m4_ifval($2,$2,FLAGS) " | grep " $VAR " 2>&1 >/dev/null - then AC_RUN_LOG([: m4_ifval($2,$2,FLAGS) does contain $VAR]) - else AC_RUN_LOG([: m4_ifval($2,$2,FLAGS)="$m4_ifval($2,$2,FLAGS) $VAR"]) - m4_ifval($2,$2,FLAGS)="$m4_ifval($2,$2,FLAGS) $VAR" - fi ]) ;; -esac -AS_VAR_POPDEF([VAR])dnl -AS_VAR_POPDEF([FLAGS])dnl -]) - -dnl the only difference - the LANG selection... and the default FLAGS - -AC_DEFUN([AX_CXXFLAGS_SUN_OPTION_NEW], [dnl -AS_VAR_PUSHDEF([FLAGS],[CXXFLAGS])dnl -AS_VAR_PUSHDEF([VAR],[ac_cv_cxxflags_sun_option_$1])dnl -AC_CACHE_CHECK([m4_ifval($2,$2,FLAGS) for sun/cc m4_ifval($1,$1,-option)], -VAR,[VAR="no, unknown" - AC_LANG_SAVE - AC_LANG_CXX - ac_save_[]FLAGS="$[]FLAGS" -for ac_arg dnl -in "+xstrconst % -xc99=all m4_ifval($1,$1,-option)" dnl Solaris C - # -do FLAGS="$ac_save_[]FLAGS "`echo $ac_arg | sed -e 's,%%.*,,' -e 's,%,,'` - AC_TRY_COMPILE([],[return 0;], - [VAR=`echo $ac_arg | sed -e 's,.*% *,,'` ; break]) -done - FLAGS="$ac_save_[]FLAGS" - AC_LANG_RESTORE -]) -case ".$VAR" in - .ok|.ok,*) m4_ifvaln($3,$3) ;; - .|.no|.no,*) m4_ifvaln($4,$4) ;; - *) m4_ifvaln($3,$3,[ - if echo " $[]m4_ifval($2,$2,FLAGS) " | grep " $VAR " 2>&1 >/dev/null - then AC_RUN_LOG([: m4_ifval($2,$2,FLAGS) does contain $VAR]) - else AC_RUN_LOG([: m4_ifval($2,$2,FLAGS)="$m4_ifval($2,$2,FLAGS) $VAR"]) - m4_ifval($2,$2,FLAGS)="$m4_ifval($2,$2,FLAGS) $VAR" - fi ]) ;; -esac -AS_VAR_POPDEF([VAR])dnl -AS_VAR_POPDEF([FLAGS])dnl -]) - -AC_DEFUN([AX_CFLAGS_SUN_OPTION],[ifelse(m4_regexp([$2],[-]),-1, -[AX_CFLAGS_SUN_OPTION_NEW($@)],[AX_CFLAGS_SUN_OPTION_OLD($@)])]) - -AC_DEFUN([AX_CXXFLAGS_SUN_OPTION],[ifelse(m4_regexp([$2],[-]),-1, -[AX_CXXFLAGS_SUN_OPTION_NEW($@)],[AX_CXXFLAGS_SUN_OPTION_OLD($@)])]) - diff --git a/libs/libdingaling/build/config/ac_gcc_archflag.m4 b/libs/libdingaling/build/config/ac_gcc_archflag.m4 deleted file mode 100644 index b38a5649027..00000000000 --- a/libs/libdingaling/build/config/ac_gcc_archflag.m4 +++ /dev/null @@ -1,148 +0,0 @@ -AC_DEFUN([AX_GCC_ARCHFLAG], -[AC_REQUIRE([AC_PROG_CC]) - -AC_ARG_WITH(gcc-arch, [AC_HELP_STRING([--with-gcc-arch=], [use architecture for gcc -march/-mtune, instead of guessing])], - ax_gcc_arch=$withval, ax_gcc_arch=yes) - -AC_MSG_CHECKING([for gcc architecture flag]) -AC_MSG_RESULT([]) -AC_CACHE_VAL(ax_cv_gcc_archflag, -[ -ax_cv_gcc_archflag="unknown" - -if test "$GCC" = yes; then - -if test "x$ax_gcc_arch" = xyes; then -ax_gcc_arch="" -if test "$cross_compiling" = no; then -case $host_cpu in - i[[3456]]86*|x86_64*) # use cpuid codes, in part from x86info-1.7 by D. Jones - AX_GCC_X86_CPUID(0) - AX_GCC_X86_CPUID(1) - case $ax_cv_gcc_x86_cpuid_0 in - *:756e6547:*:*) # Intel - case $ax_cv_gcc_x86_cpuid_1 in - *5[[48]]?:*:*:*) ax_gcc_arch="pentium-mmx pentium" ;; - *5??:*:*:*) ax_gcc_arch=pentium ;; - *6[[3456]]?:*:*:*) ax_gcc_arch="pentium2 pentiumpro" ;; - *6a?:*[[01]]:*:*) ax_gcc_arch="pentium2 pentiumpro" ;; - *6a?:*[[234]]:*:*) ax_gcc_arch="pentium3 pentiumpro" ;; - *6[[9d]]?:*:*:*) ax_gcc_arch="pentium-m pentium3 pentiumpro" ;; - *6[[78b]]?:*:*:*) ax_gcc_arch="pentium3 pentiumpro" ;; - *6??:*:*:*) ax_gcc_arch=pentiumpro ;; - *f3[[347]]:*:*:*|*f4[1347]:*:*:*) - case $host_cpu in - x86_64*) ax_gcc_arch="nocona pentium4 pentiumpro" ;; - *) ax_gcc_arch="prescott pentium4 pentiumpro" ;; - esac ;; - *f??:*:*:*) ax_gcc_arch="pentium4 pentiumpro";; - esac ;; - *:68747541:*:*) # AMD - case $ax_cv_gcc_x86_cpuid_1 in - *5[[67]]?:*:*:*) ax_gcc_arch=k6 ;; - *5[[8d]]?:*:*:*) ax_gcc_arch="k6-2 k6" ;; - *5[[9]]?:*:*:*) ax_gcc_arch="k6-3 k6" ;; - *60?:*:*:*) ax_gcc_arch=k7 ;; - *6[[12]]?:*:*:*) ax_gcc_arch="athlon k7" ;; - *6[[34]]?:*:*:*) ax_gcc_arch="athlon-tbird k7" ;; - *67?:*:*:*) ax_gcc_arch="athlon-4 athlon k7" ;; - *6[[68a]]?:*:*:*) - AX_GCC_X86_CPUID(0x80000006) # L2 cache size - case $ax_cv_gcc_x86_cpuid_0x80000006 in - *:*:*[[1-9a-f]]??????:*) # (L2 = ecx >> 16) >= 256 - ax_gcc_arch="athlon-xp athlon-4 athlon k7" ;; - *) ax_gcc_arch="athlon-4 athlon k7" ;; - esac ;; - *f[[4cef8b]]?:*:*:*) ax_gcc_arch="athlon64 k8" ;; - *f5?:*:*:*) ax_gcc_arch="opteron k8" ;; - *f7?:*:*:*) ax_gcc_arch="athlon-fx opteron k8" ;; - *f??:*:*:*) ax_gcc_arch="k8" ;; - esac ;; - *:746e6543:*:*) # IDT - case $ax_cv_gcc_x86_cpuid_1 in - *54?:*:*:*) ax_gcc_arch=winchip-c6 ;; - *58?:*:*:*) ax_gcc_arch=winchip2 ;; - *6[[78]]?:*:*:*) ax_gcc_arch=c3 ;; - *69?:*:*:*) ax_gcc_arch="c3-2 c3" ;; - esac ;; - esac - if test x"$ax_gcc_arch" = x; then # fallback - case $host_cpu in - i586*) ax_gcc_arch=pentium ;; - i686*) ax_gcc_arch=pentiumpro ;; - esac - fi - ;; - - sparc*) - AC_PATH_PROG([PRTDIAG], [prtdiag], [prtdiag], [$PATH:/usr/platform/`uname -i`/sbin/:/usr/platform/`uname -m`/sbin/]) - cputype=`(((grep cpu /proc/cpuinfo | cut -d: -f2) ; ($PRTDIAG -v |grep -i sparc) ; grep -i cpu /var/run/dmesg.boot ) | head -n 1) 2> /dev/null` - cputype=`echo "$cputype" | tr -d ' -' |tr $as_cr_LETTERS $as_cr_letters` - case $cputype in - *ultrasparciv*) ax_gcc_arch="ultrasparc4 ultrasparc3 ultrasparc v9" ;; - *ultrasparciii*) ax_gcc_arch="ultrasparc3 ultrasparc v9" ;; - *ultrasparc*) ax_gcc_arch="ultrasparc v9" ;; - *supersparc*|*tms390z5[[05]]*) ax_gcc_arch="supersparc v8" ;; - *hypersparc*|*rt62[[056]]*) ax_gcc_arch="hypersparc v8" ;; - *cypress*) ax_gcc_arch=cypress ;; - esac ;; - - alphaev5) ax_gcc_arch=ev5 ;; - alphaev56) ax_gcc_arch=ev56 ;; - alphapca56) ax_gcc_arch="pca56 ev56" ;; - alphapca57) ax_gcc_arch="pca57 pca56 ev56" ;; - alphaev6) ax_gcc_arch=ev6 ;; - alphaev67) ax_gcc_arch=ev67 ;; - alphaev68) ax_gcc_arch="ev68 ev67" ;; - alphaev69) ax_gcc_arch="ev69 ev68 ev67" ;; - alphaev7) ax_gcc_arch="ev7 ev69 ev68 ev67" ;; - alphaev79) ax_gcc_arch="ev79 ev7 ev69 ev68 ev67" ;; - - powerpc*) - cputype=`((grep cpu /proc/cpuinfo | head -n 1 | cut -d: -f2 | cut -d, -f1 | sed 's/ //g') ; /usr/bin/machine ; /bin/machine; grep CPU /var/run/dmesg.boot | head -n 1 | cut -d" " -f2) 2> /dev/null` - cputype=`echo $cputype | sed -e 's/ppc//g;s/ *//g'` - case $cputype in - *750*) ax_gcc_arch="750 G3" ;; - *740[[0-9]]*) ax_gcc_arch="$cputype 7400 G4" ;; - *74[[4-5]][[0-9]]*) ax_gcc_arch="$cputype 7450 G4" ;; - *74[[0-9]][[0-9]]*) ax_gcc_arch="$cputype G4" ;; - *970*) ax_gcc_arch="970 G5 power4";; - *POWER4*|*power4*|*gq*) ax_gcc_arch="power4 970";; - *POWER5*|*power5*|*gr*|*gs*) ax_gcc_arch="power5 power4 970";; - 603ev|8240) ax_gcc_arch="$cputype 603e 603";; - *) ax_gcc_arch=$cputype ;; - esac - ax_gcc_arch="$ax_gcc_arch powerpc" - ;; -esac -fi # not cross-compiling -fi # guess arch - -if test "x$ax_gcc_arch" != x -a "x$ax_gcc_arch" != xno; then -for arch in $ax_gcc_arch; do - if test "x[]m4_default([$1],yes)" = xyes; then # if we require portable code - flags="-mtune=$arch" - # -mcpu=$arch and m$arch generate nonportable code on every arch except - # x86. And some other arches (e.g. Alpha) don't accept -mtune. Grrr. - case $host_cpu in i*86|x86_64*) flags="$flags -mcpu=$arch -m$arch";; esac - else - flags="-march=$arch -mcpu=$arch -m$arch" - fi - for flag in $flags; do - AX_CHECK_COMPILER_FLAGS($flag, [ax_cv_gcc_archflag=$flag; break]) - done - test "x$ax_cv_gcc_archflag" = xunknown || break -done -fi - -fi # $GCC=yes -]) -AC_MSG_CHECKING([for gcc architecture flag]) -AC_MSG_RESULT($ax_cv_gcc_archflag) -if test "x$ax_cv_gcc_archflag" = xunknown; then - m4_default([$3],:) -else - m4_default([$2], [CFLAGS="$CFLAGS $ax_cv_gcc_archflag"]) -fi -]) - diff --git a/libs/libdingaling/build/config/ac_gcc_x86_cpuid.m4 b/libs/libdingaling/build/config/ac_gcc_x86_cpuid.m4 deleted file mode 100644 index 3cf22d0dde2..00000000000 --- a/libs/libdingaling/build/config/ac_gcc_x86_cpuid.m4 +++ /dev/null @@ -1,21 +0,0 @@ -AC_DEFUN([AX_GCC_X86_CPUID], -[AC_REQUIRE([AC_PROG_CC]) -AC_LANG_PUSH([C]) -AC_CACHE_CHECK(for x86 cpuid $1 output, ax_cv_gcc_x86_cpuid_$1, - [AC_RUN_IFELSE([AC_LANG_PROGRAM([#include ], [ - int op = $1, eax, ebx, ecx, edx; - FILE *f; - __asm__("cpuid" - : "=a" (eax), "=b" (ebx), "=c" (ecx), "=d" (edx) - : "a" (op)); - f = fopen("conftest_cpuid", "w"); if (!f) return 1; - fprintf(f, "%x:%x:%x:%x\n", eax, ebx, ecx, edx); - fclose(f); - return 0; -])], - [ax_cv_gcc_x86_cpuid_$1=`cat conftest_cpuid`; rm -f conftest_cpuid], - [ax_cv_gcc_x86_cpuid_$1=unknown; rm -f conftest_cpuid], - [ax_cv_gcc_x86_cpuid_$1=unknown])]) -AC_LANG_POP([C]) -]) - diff --git a/libs/libdingaling/build/config/ac_prog_gzip.m4 b/libs/libdingaling/build/config/ac_prog_gzip.m4 deleted file mode 100644 index f37a4cc9ce2..00000000000 --- a/libs/libdingaling/build/config/ac_prog_gzip.m4 +++ /dev/null @@ -1,9 +0,0 @@ -AC_DEFUN([AC_PROG_GZIP],[ -AC_CHECK_PROGS(gzip,[gzip],no) -export gzip; -if test $gzip = "no" ; -then - AC_MSG_ERROR([Unable to find the gzip application]); -fi -AC_SUBST(gzip) -]) diff --git a/libs/libdingaling/build/config/ac_prog_wget.m4 b/libs/libdingaling/build/config/ac_prog_wget.m4 deleted file mode 100644 index 56b6b8334f3..00000000000 --- a/libs/libdingaling/build/config/ac_prog_wget.m4 +++ /dev/null @@ -1,9 +0,0 @@ -AC_DEFUN([AC_PROG_WGET],[ -AC_CHECK_PROGS(wget,[wget],no) -export wget; -if test $wget = "no" ; -then - AC_MSG_ERROR([Unable to find the wget application]); -fi -AC_SUBST(wget) -]) diff --git a/libs/libdingaling/build/config/ax_cc_maxopt.m4 b/libs/libdingaling/build/config/ax_cc_maxopt.m4 deleted file mode 100644 index 6205ee84c89..00000000000 --- a/libs/libdingaling/build/config/ax_cc_maxopt.m4 +++ /dev/null @@ -1,120 +0,0 @@ -AC_DEFUN([AX_CC_MAXOPT], -[ -AC_REQUIRE([AC_PROG_CC]) -AC_REQUIRE([AX_COMPILER_VENDOR]) - -AC_ARG_ENABLE(portable-binary, [AC_HELP_STRING([--enable-portable-binary], [disable compiler optimizations that would produce unportable binaries])], - acx_maxopt_portable=$withval, acx_maxopt_portable=no) - -# Try to determine "good" native compiler flags if none specified via CFLAGS -if test "$ac_test_CFLAGS" != "set"; then - CFLAGS="" - case $ax_cv_c_compiler_vendor in - dec) CFLAGS="-newc -w0 -O5 -ansi_alias -ansi_args -fp_reorder -tune host" - if test "x$acx_maxopt_portable" = xno; then - CFLAGS="$CFLAGS -arch host" - fi;; - - sun) CFLAGS="-native -fast -xO5 -dalign -xc99=all" - if test "x$acx_maxopt_portable" = xyes; then - CFLAGS="$CFLAGS -xarch=generic" - fi;; - - hp) CFLAGS="+Oall +Optrs_ansi +DSnative" - if test "x$acx_maxopt_portable" = xyes; then - CFLAGS="$CFLAGS +DAportable" - fi;; - - ibm) if test "x$acx_maxopt_portable" = xno; then - xlc_opt="-qarch=auto -qtune=auto" - else - xlc_opt="-qtune=auto" - fi - AX_CHECK_COMPILER_FLAGS($xlc_opt, - CFLAGS="-O3 -qansialias -w $xlc_opt", - [CFLAGS="-O3 -qansialias -w" - echo "******************************************************" - echo "* You seem to have the IBM C compiler. It is *" - echo "* recommended for best performance that you use: *" - echo "* *" - echo "* CFLAGS=-O3 -qarch=xxx -qtune=xxx -qansialias -w *" - echo "* ^^^ ^^^ *" - echo "* where xxx is pwr2, pwr3, 604, or whatever kind of *" - echo "* CPU you have. (Set the CFLAGS environment var. *" - echo "* and re-run configure.) For more info, man cc. *" - echo "******************************************************"]) - ;; - - intel) CFLAGS="-O3 -ansi_alias" - if test "x$acx_maxopt_portable" = xno; then - icc_archflag=unknown - icc_flags="" - case $host_cpu in - i686*|x86_64*) - # icc accepts gcc assembly syntax, so these should work: - AX_GCC_X86_CPUID(0) - AX_GCC_X86_CPUID(1) - case $ax_cv_gcc_x86_cpuid_0 in # see AX_GCC_ARCHFLAG - *:756e6547:*:*) # Intel - case $ax_cv_gcc_x86_cpuid_1 in - *6a?:*[[234]]:*:*|*6[[789b]]?:*:*:*) icc_flags="-xK";; - *f3[[347]]:*:*:*|*f4[1347]:*:*:*) icc_flags="-xP -xN -xW -xK";; - *f??:*:*:*) icc_flags="-xN -xW -xK";; - esac ;; - esac ;; - esac - if test "x$icc_flags" != x; then - for flag in $icc_flags; do - AX_CHECK_COMPILER_FLAGS($flag, [icc_archflag=$flag; break]) - done - fi - AC_MSG_CHECKING([for icc architecture flag]) - AC_MSG_RESULT($icc_archflag) - if test "x$icc_archflag" != xunknown; then - CFLAGS="$CFLAGS $icc_archflag" - fi - fi - ;; - - gnu) - # default optimization flags for gcc on all systems - CFLAGS="-O3 -fomit-frame-pointer" - - # -malign-double for x86 systems - AX_CHECK_COMPILER_FLAGS(-malign-double, CFLAGS="$CFLAGS -malign-double") - - # -fstrict-aliasing for gcc-2.95+ - AX_CHECK_COMPILER_FLAGS(-fstrict-aliasing, - CFLAGS="$CFLAGS -fstrict-aliasing") - - # note that we enable "unsafe" fp optimization with other compilers, too - AX_CHECK_COMPILER_FLAGS(-ffast-math, CFLAGS="$CFLAGS -ffast-math") - - AX_GCC_ARCHFLAG($acx_maxopt_portable) - ;; - esac - - if test -z "$CFLAGS"; then - echo "" - echo "********************************************************" - echo "* WARNING: Don't know the best CFLAGS for this system *" - echo "* Use ./configure CFLAGS=... to specify your own flags *" - echo "* (otherwise, a default of CFLAGS=-O3 will be used) *" - echo "********************************************************" - echo "" - CFLAGS="-O3" - fi - - AX_CHECK_COMPILER_FLAGS($CFLAGS, [], [ - echo "" - echo "********************************************************" - echo "* WARNING: The guessed CFLAGS don't seem to work with *" - echo "* your compiler. *" - echo "* Use ./configure CFLAGS=... to specify your own flags *" - echo "********************************************************" - echo "" - CFLAGS="" - ]) - -fi -]) diff --git a/libs/libdingaling/build/config/ax_cflags_warn_all_ansi.m4 b/libs/libdingaling/build/config/ax_cflags_warn_all_ansi.m4 deleted file mode 100644 index 5b354644574..00000000000 --- a/libs/libdingaling/build/config/ax_cflags_warn_all_ansi.m4 +++ /dev/null @@ -1,94 +0,0 @@ -AC_DEFUN([AX_CFLAGS_WARN_ALL_ANSI],[dnl -AS_VAR_PUSHDEF([FLAGS],[CFLAGS])dnl -AS_VAR_PUSHDEF([VAR],[ac_cv_cflags_warn_all_ansi])dnl -AC_CACHE_CHECK([m4_ifval($1,$1,FLAGS) for maximum ansi warnings], -VAR,[VAR="no, unknown" - AC_LANG_SAVE - AC_LANG_C - ac_save_[]FLAGS="$[]FLAGS" -# IRIX C compiler: -# -use_readonly_const is the default for IRIX C, -# puts them into .rodata, but they are copied later. -# need to be "-G0 -rdatashared" for strictmode but -# I am not sure what effect that has really. - guidod -for ac_arg dnl -in "-pedantic % -Wall -std=c99 -pedantic" dnl GCC - "-xstrconst % -v -xc99=all" dnl Solaris C - "-std1 % -verbose -w0 -warnprotos -std1" dnl Digital Unix - " % -qlanglvl=ansi -qsrcmsg -qinfo=all:noppt:noppc:noobs:nocnd" dnl AIX - " % -ansi -ansiE -fullwarn" dnl IRIX - "+ESlit % +w1 -Aa" dnl HP-UX C - "-Xc % -pvctl[,]fullmsg -Xc" dnl NEC SX-5 (Super-UX 10) - "-h conform % -h msglevel 2 -h conform" dnl Cray C (Unicos) - # -do FLAGS="$ac_save_[]FLAGS "`echo $ac_arg | sed -e 's,%%.*,,' -e 's,%,,'` - AC_TRY_COMPILE([],[return 0;], - [VAR=`echo $ac_arg | sed -e 's,.*% *,,'` ; break]) -done - FLAGS="$ac_save_[]FLAGS" - AC_LANG_RESTORE -]) -case ".$VAR" in - .ok|.ok,*) m4_ifvaln($3,$3) ;; - .|.no|.no,*) m4_ifvaln($4,$4,[m4_ifval($2,[ - AC_RUN_LOG([: m4_ifval($1,$1,FLAGS)="$m4_ifval($1,$1,FLAGS) $2"]) - m4_ifval($1,$1,FLAGS)="$m4_ifval($1,$1,FLAGS) $2"])]) ;; - *) m4_ifvaln($3,$3,[ - if echo " $[]m4_ifval($1,$1,FLAGS) " | grep " $VAR " 2>&1 >/dev/null - then AC_RUN_LOG([: m4_ifval($1,$1,FLAGS) does contain $VAR]) - else AC_RUN_LOG([: m4_ifval($1,$1,FLAGS)="$m4_ifval($1,$1,FLAGS) $VAR"]) - m4_ifval($1,$1,FLAGS)="$m4_ifval($1,$1,FLAGS) $VAR" - fi ]) ;; -esac -AS_VAR_POPDEF([VAR])dnl -AS_VAR_POPDEF([FLAGS])dnl -]) - -dnl the only difference - the LANG selection... and the default FLAGS - -AC_DEFUN([AX_CXXFLAGS_WARN_ALL_ANSI],[dnl -AS_VAR_PUSHDEF([FLAGS],[CXXFLAGS])dnl -AS_VAR_PUSHDEF([VAR],[ac_cv_cxxflags_warn_all_ansi])dnl -AC_CACHE_CHECK([m4_ifval($1,$1,FLAGS) for maximum ansi warnings], -VAR,[VAR="no, unknown" - AC_LANG_SAVE - AC_LANG_CXX - ac_save_[]FLAGS="$[]FLAGS" -# IRIX C compiler: -# -use_readonly_const is the default for IRIX C, -# puts them into .rodata, but they are copied later. -# need to be "-G0 -rdatashared" for strictmode but -# I am not sure what effect that has really. - guidod -for ac_arg dnl -in "-pedantic % -Wall -ansi -pedantic" dnl GCC - "-xstrconst % -v -Xc" dnl Solaris C - "-std1 % -verbose -w0 -warnprotos -std1" dnl Digital Unix - " % -qlanglvl=ansi -qsrcmsg -qinfo=all:noppt:noppc:noobs:nocnd" dnl AIX - " % -ansi -ansiE -fullwarn" dnl IRIX - "+ESlit % +w1 -Aa" dnl HP-UX C - "-Xc % -pvctl[,]fullmsg -Xc" dnl NEC SX-5 (Super-UX 10) - "-h conform % -h msglevel 2 -h conform" dnl Cray C (Unicos) - # -do FLAGS="$ac_save_[]FLAGS "`echo $ac_arg | sed -e 's,%%.*,,' -e 's,%,,'` - AC_TRY_COMPILE([],[return 0;], - [VAR=`echo $ac_arg | sed -e 's,.*% *,,'` ; break]) -done - FLAGS="$ac_save_[]FLAGS" - AC_LANG_RESTORE -]) -case ".$VAR" in - .ok|.ok,*) m4_ifvaln($3,$3) ;; - .|.no|.no,*) m4_ifvaln($4,$4,[m4_ifval($2,[ - AC_RUN_LOG([: m4_ifval($1,$1,FLAGS)="$m4_ifval($1,$1,FLAGS) $2"]) - m4_ifval($1,$1,FLAGS)="$m4_ifval($1,$1,FLAGS) $2"])]) ;; - *) m4_ifvaln($3,$3,[ - if echo " $[]m4_ifval($1,$1,FLAGS) " | grep " $VAR " 2>&1 >/dev/null - then AC_RUN_LOG([: m4_ifval($1,$1,FLAGS) does contain $VAR]) - else AC_RUN_LOG([: m4_ifval($1,$1,FLAGS)="$m4_ifval($1,$1,FLAGS) $VAR"]) - m4_ifval($1,$1,FLAGS)="$m4_ifval($1,$1,FLAGS) $VAR" - fi ]) ;; -esac -AS_VAR_POPDEF([VAR])dnl -AS_VAR_POPDEF([FLAGS])dnl -]) - diff --git a/libs/libdingaling/build/config/ax_check_compiler_flags.m4 b/libs/libdingaling/build/config/ax_check_compiler_flags.m4 deleted file mode 100644 index 73377b7c59d..00000000000 --- a/libs/libdingaling/build/config/ax_check_compiler_flags.m4 +++ /dev/null @@ -1,26 +0,0 @@ -AC_DEFUN([AX_CHECK_COMPILER_FLAGS], -[AC_PREREQ(2.59) dnl for _AC_LANG_PREFIX -AC_MSG_CHECKING([whether _AC_LANG compiler accepts $1]) -dnl Some hackery here since AC_CACHE_VAL can't handle a non-literal varname: -AS_LITERAL_IF([$1], - [AC_CACHE_VAL(AS_TR_SH(ax_cv_[]_AC_LANG_ABBREV[]_flags_$1), [ - ax_save_FLAGS=$[]_AC_LANG_PREFIX[]FLAGS - _AC_LANG_PREFIX[]FLAGS="$1" - AC_COMPILE_IFELSE([AC_LANG_PROGRAM()], - AS_TR_SH(ax_cv_[]_AC_LANG_ABBREV[]_flags_$1)=yes, - AS_TR_SH(ax_cv_[]_AC_LANG_ABBREV[]_flags_$1)=no) - _AC_LANG_PREFIX[]FLAGS=$ax_save_FLAGS])], - [ax_save_FLAGS=$[]_AC_LANG_PREFIX[]FLAGS - _AC_LANG_PREFIX[]FLAGS="$1" - AC_COMPILE_IFELSE([AC_LANG_PROGRAM()], - eval AS_TR_SH(ax_cv_[]_AC_LANG_ABBREV[]_flags_$1)=yes, - eval AS_TR_SH(ax_cv_[]_AC_LANG_ABBREV[]_flags_$1)=no) - _AC_LANG_PREFIX[]FLAGS=$ax_save_FLAGS]) -eval ax_check_compiler_flags=$AS_TR_SH(ax_cv_[]_AC_LANG_ABBREV[]_flags_$1) -AC_MSG_RESULT($ax_check_compiler_flags) -if test "x$ax_check_compiler_flags" = xyes; then - m4_default([$2], :) -else - m4_default([$3], :) -fi -])dnl AX_CHECK_COMPILER_FLAG diff --git a/libs/libdingaling/build/config/ax_compiler_vendor.m4 b/libs/libdingaling/build/config/ax_compiler_vendor.m4 deleted file mode 100644 index a24a58da0f7..00000000000 --- a/libs/libdingaling/build/config/ax_compiler_vendor.m4 +++ /dev/null @@ -1,15 +0,0 @@ -AC_DEFUN([AX_COMPILER_VENDOR], -[ -AC_CACHE_CHECK([for _AC_LANG compiler vendor], ax_cv_[]_AC_LANG_ABBREV[]_compiler_vendor, - [ax_cv_[]_AC_LANG_ABBREV[]_compiler_vendor=unknown - # note: don't check for gcc first since some other compilers define __GNUC__ - for ventest in intel:__ICC,__ECC,__INTEL_COMPILER ibm:__xlc__,__xlC__,__IBMC__,__IBMCPP__ gnu:__GNUC__ sun:__SUNPRO_C,__SUNPRO_CC hp:__HP_cc,__HP_aCC dec:__DECC,__DECCXX,__DECC_VER,__DECCXX_VER borland:__BORLANDC__,__TURBOC__ comeau:__COMO__ cray:_CRAYC kai:__KCC lcc:__LCC__ metrowerks:__MWERKS__ sgi:__sgi,sgi microsoft:_MSC_VER watcom:__WATCOMC__ portland:__PGI; do - vencpp="defined("`echo $ventest | cut -d: -f2 | sed 's/,/) || defined(/g'`")" - AC_COMPILE_IFELSE([AC_LANG_PROGRAM(,[ -#if !($vencpp) - thisisanerror; -#endif -])], [ax_cv_]_AC_LANG_ABBREV[_compiler_vendor=`echo $ventest | cut -d: -f1`; break]) - done - ]) -]) diff --git a/libs/libdingaling/compile b/libs/libdingaling/compile deleted file mode 100755 index 1b1d2321695..00000000000 --- a/libs/libdingaling/compile +++ /dev/null @@ -1,142 +0,0 @@ -#! /bin/sh -# Wrapper for compilers which do not understand `-c -o'. - -scriptversion=2005-05-14.22 - -# Copyright (C) 1999, 2000, 2003, 2004, 2005 Free Software Foundation, Inc. -# Written by Tom Tromey . -# -# 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, 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., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. - -# As a special exception to the GNU General Public License, if you -# distribute this file as part of a program that contains a -# configuration script generated by Autoconf, you may include it under -# the same distribution terms that you use for the rest of that program. - -# This file is maintained in Automake, please report -# bugs to or send patches to -# . - -case $1 in - '') - echo "$0: No command. Try \`$0 --help' for more information." 1>&2 - exit 1; - ;; - -h | --h*) - cat <<\EOF -Usage: compile [--help] [--version] PROGRAM [ARGS] - -Wrapper for compilers which do not understand `-c -o'. -Remove `-o dest.o' from ARGS, run PROGRAM with the remaining -arguments, and rename the output as expected. - -If you are trying to build a whole package this is not the -right script to run: please start by reading the file `INSTALL'. - -Report bugs to . -EOF - exit $? - ;; - -v | --v*) - echo "compile $scriptversion" - exit $? - ;; -esac - -ofile= -cfile= -eat= - -for arg -do - if test -n "$eat"; then - eat= - else - case $1 in - -o) - # configure might choose to run compile as `compile cc -o foo foo.c'. - # So we strip `-o arg' only if arg is an object. - eat=1 - case $2 in - *.o | *.obj) - ofile=$2 - ;; - *) - set x "$@" -o "$2" - shift - ;; - esac - ;; - *.c) - cfile=$1 - set x "$@" "$1" - shift - ;; - *) - set x "$@" "$1" - shift - ;; - esac - fi - shift -done - -if test -z "$ofile" || test -z "$cfile"; then - # If no `-o' option was seen then we might have been invoked from a - # pattern rule where we don't need one. That is ok -- this is a - # normal compilation that the losing compiler can handle. If no - # `.c' file was seen then we are probably linking. That is also - # ok. - exec "$@" -fi - -# Name of file we expect compiler to create. -cofile=`echo "$cfile" | sed -e 's|^.*/||' -e 's/\.c$/.o/'` - -# Create the lock directory. -# Note: use `[/.-]' here to ensure that we don't use the same name -# that we are using for the .o file. Also, base the name on the expected -# object file name, since that is what matters with a parallel build. -lockdir=`echo "$cofile" | sed -e 's|[/.-]|_|g'`.d -while true; do - if mkdir "$lockdir" >/dev/null 2>&1; then - break - fi - sleep 1 -done -# FIXME: race condition here if user kills between mkdir and trap. -trap "rmdir '$lockdir'; exit 1" 1 2 15 - -# Run the compile. -"$@" -ret=$? - -if test -f "$cofile"; then - mv "$cofile" "$ofile" -elif test -f "${cofile}bj"; then - mv "${cofile}bj" "$ofile" -fi - -rmdir "$lockdir" -exit $ret - -# Local Variables: -# mode: shell-script -# sh-indentation: 2 -# eval: (add-hook 'write-file-hooks 'time-stamp) -# time-stamp-start: "scriptversion=" -# time-stamp-format: "%:y-%02m-%02d.%02H" -# time-stamp-end: "$" -# End: diff --git a/libs/libdingaling/config.guess b/libs/libdingaling/config.guess deleted file mode 100644 index 1f5c50c0d15..00000000000 --- a/libs/libdingaling/config.guess +++ /dev/null @@ -1,1420 +0,0 @@ -#! /bin/sh -# Attempt to guess a canonical system name. -# Copyright 1992-2014 Free Software Foundation, Inc. - -timestamp='2014-03-23' - -# This file 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 3 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, see . -# -# As a special exception to the GNU General Public License, if you -# distribute this file as part of a program that contains a -# configuration script generated by Autoconf, you may include it under -# the same distribution terms that you use for the rest of that -# program. This Exception is an additional permission under section 7 -# of the GNU General Public License, version 3 ("GPLv3"). -# -# Originally written by Per Bothner. -# -# You can get the latest version of this script from: -# http://git.savannah.gnu.org/gitweb/?p=config.git;a=blob_plain;f=config.guess;hb=HEAD -# -# Please send patches with a ChangeLog entry to config-patches@gnu.org. - - -me=`echo "$0" | sed -e 's,.*/,,'` - -usage="\ -Usage: $0 [OPTION] - -Output the configuration name of the system \`$me' is run on. - -Operation modes: - -h, --help print this help, then exit - -t, --time-stamp print date of last modification, then exit - -v, --version print version number, then exit - -Report bugs and patches to ." - -version="\ -GNU config.guess ($timestamp) - -Originally written by Per Bothner. -Copyright 1992-2014 Free Software Foundation, Inc. - -This is free software; see the source for copying conditions. There is NO -warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE." - -help=" -Try \`$me --help' for more information." - -# Parse command line -while test $# -gt 0 ; do - case $1 in - --time-stamp | --time* | -t ) - echo "$timestamp" ; exit ;; - --version | -v ) - echo "$version" ; exit ;; - --help | --h* | -h ) - echo "$usage"; exit ;; - -- ) # Stop option processing - shift; break ;; - - ) # Use stdin as input. - break ;; - -* ) - echo "$me: invalid option $1$help" >&2 - exit 1 ;; - * ) - break ;; - esac -done - -if test $# != 0; then - echo "$me: too many arguments$help" >&2 - exit 1 -fi - -trap 'exit 1' 1 2 15 - -# CC_FOR_BUILD -- compiler used by this script. Note that the use of a -# compiler to aid in system detection is discouraged as it requires -# temporary files to be created and, as you can see below, it is a -# headache to deal with in a portable fashion. - -# Historically, `CC_FOR_BUILD' used to be named `HOST_CC'. We still -# use `HOST_CC' if defined, but it is deprecated. - -# Portable tmp directory creation inspired by the Autoconf team. - -set_cc_for_build=' -trap "exitcode=\$?; (rm -f \$tmpfiles 2>/dev/null; rmdir \$tmp 2>/dev/null) && exit \$exitcode" 0 ; -trap "rm -f \$tmpfiles 2>/dev/null; rmdir \$tmp 2>/dev/null; exit 1" 1 2 13 15 ; -: ${TMPDIR=/tmp} ; - { tmp=`(umask 077 && mktemp -d "$TMPDIR/cgXXXXXX") 2>/dev/null` && test -n "$tmp" && test -d "$tmp" ; } || - { test -n "$RANDOM" && tmp=$TMPDIR/cg$$-$RANDOM && (umask 077 && mkdir $tmp) ; } || - { tmp=$TMPDIR/cg-$$ && (umask 077 && mkdir $tmp) && echo "Warning: creating insecure temp directory" >&2 ; } || - { echo "$me: cannot create a temporary directory in $TMPDIR" >&2 ; exit 1 ; } ; -dummy=$tmp/dummy ; -tmpfiles="$dummy.c $dummy.o $dummy.rel $dummy" ; -case $CC_FOR_BUILD,$HOST_CC,$CC in - ,,) echo "int x;" > $dummy.c ; - for c in cc gcc c89 c99 ; do - if ($c -c -o $dummy.o $dummy.c) >/dev/null 2>&1 ; then - CC_FOR_BUILD="$c"; break ; - fi ; - done ; - if test x"$CC_FOR_BUILD" = x ; then - CC_FOR_BUILD=no_compiler_found ; - fi - ;; - ,,*) CC_FOR_BUILD=$CC ;; - ,*,*) CC_FOR_BUILD=$HOST_CC ;; -esac ; set_cc_for_build= ;' - -# This is needed to find uname on a Pyramid OSx when run in the BSD universe. -# (ghazi@noc.rutgers.edu 1994-08-24) -if (test -f /.attbin/uname) >/dev/null 2>&1 ; then - PATH=$PATH:/.attbin ; export PATH -fi - -UNAME_MACHINE=`(uname -m) 2>/dev/null` || UNAME_MACHINE=unknown -UNAME_RELEASE=`(uname -r) 2>/dev/null` || UNAME_RELEASE=unknown -UNAME_SYSTEM=`(uname -s) 2>/dev/null` || UNAME_SYSTEM=unknown -UNAME_VERSION=`(uname -v) 2>/dev/null` || UNAME_VERSION=unknown - -case "${UNAME_SYSTEM}" in -Linux|GNU|GNU/*) - # If the system lacks a compiler, then just pick glibc. - # We could probably try harder. - LIBC=gnu - - eval $set_cc_for_build - cat <<-EOF > $dummy.c - #include - #if defined(__UCLIBC__) - LIBC=uclibc - #elif defined(__dietlibc__) - LIBC=dietlibc - #else - LIBC=gnu - #endif - EOF - eval `$CC_FOR_BUILD -E $dummy.c 2>/dev/null | grep '^LIBC' | sed 's, ,,g'` - ;; -esac - -# Note: order is significant - the case branches are not exclusive. - -case "${UNAME_MACHINE}:${UNAME_SYSTEM}:${UNAME_RELEASE}:${UNAME_VERSION}" in - *:NetBSD:*:*) - # NetBSD (nbsd) targets should (where applicable) match one or - # more of the tuples: *-*-netbsdelf*, *-*-netbsdaout*, - # *-*-netbsdecoff* and *-*-netbsd*. For targets that recently - # switched to ELF, *-*-netbsd* would select the old - # object file format. This provides both forward - # compatibility and a consistent mechanism for selecting the - # object file format. - # - # Note: NetBSD doesn't particularly care about the vendor - # portion of the name. We always set it to "unknown". - sysctl="sysctl -n hw.machine_arch" - UNAME_MACHINE_ARCH=`(/sbin/$sysctl 2>/dev/null || \ - /usr/sbin/$sysctl 2>/dev/null || echo unknown)` - case "${UNAME_MACHINE_ARCH}" in - armeb) machine=armeb-unknown ;; - arm*) machine=arm-unknown ;; - sh3el) machine=shl-unknown ;; - sh3eb) machine=sh-unknown ;; - sh5el) machine=sh5le-unknown ;; - *) machine=${UNAME_MACHINE_ARCH}-unknown ;; - esac - # The Operating System including object format, if it has switched - # to ELF recently, or will in the future. - case "${UNAME_MACHINE_ARCH}" in - arm*|i386|m68k|ns32k|sh3*|sparc|vax) - eval $set_cc_for_build - if echo __ELF__ | $CC_FOR_BUILD -E - 2>/dev/null \ - | grep -q __ELF__ - then - # Once all utilities can be ECOFF (netbsdecoff) or a.out (netbsdaout). - # Return netbsd for either. FIX? - os=netbsd - else - os=netbsdelf - fi - ;; - *) - os=netbsd - ;; - esac - # The OS release - # Debian GNU/NetBSD machines have a different userland, and - # thus, need a distinct triplet. However, they do not need - # kernel version information, so it can be replaced with a - # suitable tag, in the style of linux-gnu. - case "${UNAME_VERSION}" in - Debian*) - release='-gnu' - ;; - *) - release=`echo ${UNAME_RELEASE}|sed -e 's/[-_].*/\./'` - ;; - esac - # Since CPU_TYPE-MANUFACTURER-KERNEL-OPERATING_SYSTEM: - # contains redundant information, the shorter form: - # CPU_TYPE-MANUFACTURER-OPERATING_SYSTEM is used. - echo "${machine}-${os}${release}" - exit ;; - *:Bitrig:*:*) - UNAME_MACHINE_ARCH=`arch | sed 's/Bitrig.//'` - echo ${UNAME_MACHINE_ARCH}-unknown-bitrig${UNAME_RELEASE} - exit ;; - *:OpenBSD:*:*) - UNAME_MACHINE_ARCH=`arch | sed 's/OpenBSD.//'` - echo ${UNAME_MACHINE_ARCH}-unknown-openbsd${UNAME_RELEASE} - exit ;; - *:ekkoBSD:*:*) - echo ${UNAME_MACHINE}-unknown-ekkobsd${UNAME_RELEASE} - exit ;; - *:SolidBSD:*:*) - echo ${UNAME_MACHINE}-unknown-solidbsd${UNAME_RELEASE} - exit ;; - macppc:MirBSD:*:*) - echo powerpc-unknown-mirbsd${UNAME_RELEASE} - exit ;; - *:MirBSD:*:*) - echo ${UNAME_MACHINE}-unknown-mirbsd${UNAME_RELEASE} - exit ;; - alpha:OSF1:*:*) - case $UNAME_RELEASE in - *4.0) - UNAME_RELEASE=`/usr/sbin/sizer -v | awk '{print $3}'` - ;; - *5.*) - UNAME_RELEASE=`/usr/sbin/sizer -v | awk '{print $4}'` - ;; - esac - # According to Compaq, /usr/sbin/psrinfo has been available on - # OSF/1 and Tru64 systems produced since 1995. I hope that - # covers most systems running today. This code pipes the CPU - # types through head -n 1, so we only detect the type of CPU 0. - ALPHA_CPU_TYPE=`/usr/sbin/psrinfo -v | sed -n -e 's/^ The alpha \(.*\) processor.*$/\1/p' | head -n 1` - case "$ALPHA_CPU_TYPE" in - "EV4 (21064)") - UNAME_MACHINE="alpha" ;; - "EV4.5 (21064)") - UNAME_MACHINE="alpha" ;; - "LCA4 (21066/21068)") - UNAME_MACHINE="alpha" ;; - "EV5 (21164)") - UNAME_MACHINE="alphaev5" ;; - "EV5.6 (21164A)") - UNAME_MACHINE="alphaev56" ;; - "EV5.6 (21164PC)") - UNAME_MACHINE="alphapca56" ;; - "EV5.7 (21164PC)") - UNAME_MACHINE="alphapca57" ;; - "EV6 (21264)") - UNAME_MACHINE="alphaev6" ;; - "EV6.7 (21264A)") - UNAME_MACHINE="alphaev67" ;; - "EV6.8CB (21264C)") - UNAME_MACHINE="alphaev68" ;; - "EV6.8AL (21264B)") - UNAME_MACHINE="alphaev68" ;; - "EV6.8CX (21264D)") - UNAME_MACHINE="alphaev68" ;; - "EV6.9A (21264/EV69A)") - UNAME_MACHINE="alphaev69" ;; - "EV7 (21364)") - UNAME_MACHINE="alphaev7" ;; - "EV7.9 (21364A)") - UNAME_MACHINE="alphaev79" ;; - esac - # A Pn.n version is a patched version. - # A Vn.n version is a released version. - # A Tn.n version is a released field test version. - # A Xn.n version is an unreleased experimental baselevel. - # 1.2 uses "1.2" for uname -r. - echo ${UNAME_MACHINE}-dec-osf`echo ${UNAME_RELEASE} | sed -e 's/^[PVTX]//' | tr 'ABCDEFGHIJKLMNOPQRSTUVWXYZ' 'abcdefghijklmnopqrstuvwxyz'` - # Reset EXIT trap before exiting to avoid spurious non-zero exit code. - exitcode=$? - trap '' 0 - exit $exitcode ;; - Alpha\ *:Windows_NT*:*) - # How do we know it's Interix rather than the generic POSIX subsystem? - # Should we change UNAME_MACHINE based on the output of uname instead - # of the specific Alpha model? - echo alpha-pc-interix - exit ;; - 21064:Windows_NT:50:3) - echo alpha-dec-winnt3.5 - exit ;; - Amiga*:UNIX_System_V:4.0:*) - echo m68k-unknown-sysv4 - exit ;; - *:[Aa]miga[Oo][Ss]:*:*) - echo ${UNAME_MACHINE}-unknown-amigaos - exit ;; - *:[Mm]orph[Oo][Ss]:*:*) - echo ${UNAME_MACHINE}-unknown-morphos - exit ;; - *:OS/390:*:*) - echo i370-ibm-openedition - exit ;; - *:z/VM:*:*) - echo s390-ibm-zvmoe - exit ;; - *:OS400:*:*) - echo powerpc-ibm-os400 - exit ;; - arm:RISC*:1.[012]*:*|arm:riscix:1.[012]*:*) - echo arm-acorn-riscix${UNAME_RELEASE} - exit ;; - arm*:riscos:*:*|arm*:RISCOS:*:*) - echo arm-unknown-riscos - exit ;; - SR2?01:HI-UX/MPP:*:* | SR8000:HI-UX/MPP:*:*) - echo hppa1.1-hitachi-hiuxmpp - exit ;; - Pyramid*:OSx*:*:* | MIS*:OSx*:*:* | MIS*:SMP_DC-OSx*:*:*) - # akee@wpdis03.wpafb.af.mil (Earle F. Ake) contributed MIS and NILE. - if test "`(/bin/universe) 2>/dev/null`" = att ; then - echo pyramid-pyramid-sysv3 - else - echo pyramid-pyramid-bsd - fi - exit ;; - NILE*:*:*:dcosx) - echo pyramid-pyramid-svr4 - exit ;; - DRS?6000:unix:4.0:6*) - echo sparc-icl-nx6 - exit ;; - DRS?6000:UNIX_SV:4.2*:7* | DRS?6000:isis:4.2*:7*) - case `/usr/bin/uname -p` in - sparc) echo sparc-icl-nx7; exit ;; - esac ;; - s390x:SunOS:*:*) - echo ${UNAME_MACHINE}-ibm-solaris2`echo ${UNAME_RELEASE}|sed -e 's/[^.]*//'` - exit ;; - sun4H:SunOS:5.*:*) - echo sparc-hal-solaris2`echo ${UNAME_RELEASE}|sed -e 's/[^.]*//'` - exit ;; - sun4*:SunOS:5.*:* | tadpole*:SunOS:5.*:*) - echo sparc-sun-solaris2`echo ${UNAME_RELEASE}|sed -e 's/[^.]*//'` - exit ;; - i86pc:AuroraUX:5.*:* | i86xen:AuroraUX:5.*:*) - echo i386-pc-auroraux${UNAME_RELEASE} - exit ;; - i86pc:SunOS:5.*:* | i86xen:SunOS:5.*:*) - eval $set_cc_for_build - SUN_ARCH="i386" - # If there is a compiler, see if it is configured for 64-bit objects. - # Note that the Sun cc does not turn __LP64__ into 1 like gcc does. - # This test works for both compilers. - if [ "$CC_FOR_BUILD" != 'no_compiler_found' ]; then - if (echo '#ifdef __amd64'; echo IS_64BIT_ARCH; echo '#endif') | \ - (CCOPTS= $CC_FOR_BUILD -E - 2>/dev/null) | \ - grep IS_64BIT_ARCH >/dev/null - then - SUN_ARCH="x86_64" - fi - fi - echo ${SUN_ARCH}-pc-solaris2`echo ${UNAME_RELEASE}|sed -e 's/[^.]*//'` - exit ;; - sun4*:SunOS:6*:*) - # According to config.sub, this is the proper way to canonicalize - # SunOS6. Hard to guess exactly what SunOS6 will be like, but - # it's likely to be more like Solaris than SunOS4. - echo sparc-sun-solaris3`echo ${UNAME_RELEASE}|sed -e 's/[^.]*//'` - exit ;; - sun4*:SunOS:*:*) - case "`/usr/bin/arch -k`" in - Series*|S4*) - UNAME_RELEASE=`uname -v` - ;; - esac - # Japanese Language versions have a version number like `4.1.3-JL'. - echo sparc-sun-sunos`echo ${UNAME_RELEASE}|sed -e 's/-/_/'` - exit ;; - sun3*:SunOS:*:*) - echo m68k-sun-sunos${UNAME_RELEASE} - exit ;; - sun*:*:4.2BSD:*) - UNAME_RELEASE=`(sed 1q /etc/motd | awk '{print substr($5,1,3)}') 2>/dev/null` - test "x${UNAME_RELEASE}" = "x" && UNAME_RELEASE=3 - case "`/bin/arch`" in - sun3) - echo m68k-sun-sunos${UNAME_RELEASE} - ;; - sun4) - echo sparc-sun-sunos${UNAME_RELEASE} - ;; - esac - exit ;; - aushp:SunOS:*:*) - echo sparc-auspex-sunos${UNAME_RELEASE} - exit ;; - # The situation for MiNT is a little confusing. The machine name - # can be virtually everything (everything which is not - # "atarist" or "atariste" at least should have a processor - # > m68000). The system name ranges from "MiNT" over "FreeMiNT" - # to the lowercase version "mint" (or "freemint"). Finally - # the system name "TOS" denotes a system which is actually not - # MiNT. But MiNT is downward compatible to TOS, so this should - # be no problem. - atarist[e]:*MiNT:*:* | atarist[e]:*mint:*:* | atarist[e]:*TOS:*:*) - echo m68k-atari-mint${UNAME_RELEASE} - exit ;; - atari*:*MiNT:*:* | atari*:*mint:*:* | atarist[e]:*TOS:*:*) - echo m68k-atari-mint${UNAME_RELEASE} - exit ;; - *falcon*:*MiNT:*:* | *falcon*:*mint:*:* | *falcon*:*TOS:*:*) - echo m68k-atari-mint${UNAME_RELEASE} - exit ;; - milan*:*MiNT:*:* | milan*:*mint:*:* | *milan*:*TOS:*:*) - echo m68k-milan-mint${UNAME_RELEASE} - exit ;; - hades*:*MiNT:*:* | hades*:*mint:*:* | *hades*:*TOS:*:*) - echo m68k-hades-mint${UNAME_RELEASE} - exit ;; - *:*MiNT:*:* | *:*mint:*:* | *:*TOS:*:*) - echo m68k-unknown-mint${UNAME_RELEASE} - exit ;; - m68k:machten:*:*) - echo m68k-apple-machten${UNAME_RELEASE} - exit ;; - powerpc:machten:*:*) - echo powerpc-apple-machten${UNAME_RELEASE} - exit ;; - RISC*:Mach:*:*) - echo mips-dec-mach_bsd4.3 - exit ;; - RISC*:ULTRIX:*:*) - echo mips-dec-ultrix${UNAME_RELEASE} - exit ;; - VAX*:ULTRIX*:*:*) - echo vax-dec-ultrix${UNAME_RELEASE} - exit ;; - 2020:CLIX:*:* | 2430:CLIX:*:*) - echo clipper-intergraph-clix${UNAME_RELEASE} - exit ;; - mips:*:*:UMIPS | mips:*:*:RISCos) - eval $set_cc_for_build - sed 's/^ //' << EOF >$dummy.c -#ifdef __cplusplus -#include /* for printf() prototype */ - int main (int argc, char *argv[]) { -#else - int main (argc, argv) int argc; char *argv[]; { -#endif - #if defined (host_mips) && defined (MIPSEB) - #if defined (SYSTYPE_SYSV) - printf ("mips-mips-riscos%ssysv\n", argv[1]); exit (0); - #endif - #if defined (SYSTYPE_SVR4) - printf ("mips-mips-riscos%ssvr4\n", argv[1]); exit (0); - #endif - #if defined (SYSTYPE_BSD43) || defined(SYSTYPE_BSD) - printf ("mips-mips-riscos%sbsd\n", argv[1]); exit (0); - #endif - #endif - exit (-1); - } -EOF - $CC_FOR_BUILD -o $dummy $dummy.c && - dummyarg=`echo "${UNAME_RELEASE}" | sed -n 's/\([0-9]*\).*/\1/p'` && - SYSTEM_NAME=`$dummy $dummyarg` && - { echo "$SYSTEM_NAME"; exit; } - echo mips-mips-riscos${UNAME_RELEASE} - exit ;; - Motorola:PowerMAX_OS:*:*) - echo powerpc-motorola-powermax - exit ;; - Motorola:*:4.3:PL8-*) - echo powerpc-harris-powermax - exit ;; - Night_Hawk:*:*:PowerMAX_OS | Synergy:PowerMAX_OS:*:*) - echo powerpc-harris-powermax - exit ;; - Night_Hawk:Power_UNIX:*:*) - echo powerpc-harris-powerunix - exit ;; - m88k:CX/UX:7*:*) - echo m88k-harris-cxux7 - exit ;; - m88k:*:4*:R4*) - echo m88k-motorola-sysv4 - exit ;; - m88k:*:3*:R3*) - echo m88k-motorola-sysv3 - exit ;; - AViiON:dgux:*:*) - # DG/UX returns AViiON for all architectures - UNAME_PROCESSOR=`/usr/bin/uname -p` - if [ $UNAME_PROCESSOR = mc88100 ] || [ $UNAME_PROCESSOR = mc88110 ] - then - if [ ${TARGET_BINARY_INTERFACE}x = m88kdguxelfx ] || \ - [ ${TARGET_BINARY_INTERFACE}x = x ] - then - echo m88k-dg-dgux${UNAME_RELEASE} - else - echo m88k-dg-dguxbcs${UNAME_RELEASE} - fi - else - echo i586-dg-dgux${UNAME_RELEASE} - fi - exit ;; - M88*:DolphinOS:*:*) # DolphinOS (SVR3) - echo m88k-dolphin-sysv3 - exit ;; - M88*:*:R3*:*) - # Delta 88k system running SVR3 - echo m88k-motorola-sysv3 - exit ;; - XD88*:*:*:*) # Tektronix XD88 system running UTekV (SVR3) - echo m88k-tektronix-sysv3 - exit ;; - Tek43[0-9][0-9]:UTek:*:*) # Tektronix 4300 system running UTek (BSD) - echo m68k-tektronix-bsd - exit ;; - *:IRIX*:*:*) - echo mips-sgi-irix`echo ${UNAME_RELEASE}|sed -e 's/-/_/g'` - exit ;; - ????????:AIX?:[12].1:2) # AIX 2.2.1 or AIX 2.1.1 is RT/PC AIX. - echo romp-ibm-aix # uname -m gives an 8 hex-code CPU id - exit ;; # Note that: echo "'`uname -s`'" gives 'AIX ' - i*86:AIX:*:*) - echo i386-ibm-aix - exit ;; - ia64:AIX:*:*) - if [ -x /usr/bin/oslevel ] ; then - IBM_REV=`/usr/bin/oslevel` - else - IBM_REV=${UNAME_VERSION}.${UNAME_RELEASE} - fi - echo ${UNAME_MACHINE}-ibm-aix${IBM_REV} - exit ;; - *:AIX:2:3) - if grep bos325 /usr/include/stdio.h >/dev/null 2>&1; then - eval $set_cc_for_build - sed 's/^ //' << EOF >$dummy.c - #include - - main() - { - if (!__power_pc()) - exit(1); - puts("powerpc-ibm-aix3.2.5"); - exit(0); - } -EOF - if $CC_FOR_BUILD -o $dummy $dummy.c && SYSTEM_NAME=`$dummy` - then - echo "$SYSTEM_NAME" - else - echo rs6000-ibm-aix3.2.5 - fi - elif grep bos324 /usr/include/stdio.h >/dev/null 2>&1; then - echo rs6000-ibm-aix3.2.4 - else - echo rs6000-ibm-aix3.2 - fi - exit ;; - *:AIX:*:[4567]) - IBM_CPU_ID=`/usr/sbin/lsdev -C -c processor -S available | sed 1q | awk '{ print $1 }'` - if /usr/sbin/lsattr -El ${IBM_CPU_ID} | grep ' POWER' >/dev/null 2>&1; then - IBM_ARCH=rs6000 - else - IBM_ARCH=powerpc - fi - if [ -x /usr/bin/oslevel ] ; then - IBM_REV=`/usr/bin/oslevel` - else - IBM_REV=${UNAME_VERSION}.${UNAME_RELEASE} - fi - echo ${IBM_ARCH}-ibm-aix${IBM_REV} - exit ;; - *:AIX:*:*) - echo rs6000-ibm-aix - exit ;; - ibmrt:4.4BSD:*|romp-ibm:BSD:*) - echo romp-ibm-bsd4.4 - exit ;; - ibmrt:*BSD:*|romp-ibm:BSD:*) # covers RT/PC BSD and - echo romp-ibm-bsd${UNAME_RELEASE} # 4.3 with uname added to - exit ;; # report: romp-ibm BSD 4.3 - *:BOSX:*:*) - echo rs6000-bull-bosx - exit ;; - DPX/2?00:B.O.S.:*:*) - echo m68k-bull-sysv3 - exit ;; - 9000/[34]??:4.3bsd:1.*:*) - echo m68k-hp-bsd - exit ;; - hp300:4.4BSD:*:* | 9000/[34]??:4.3bsd:2.*:*) - echo m68k-hp-bsd4.4 - exit ;; - 9000/[34678]??:HP-UX:*:*) - HPUX_REV=`echo ${UNAME_RELEASE}|sed -e 's/[^.]*.[0B]*//'` - case "${UNAME_MACHINE}" in - 9000/31? ) HP_ARCH=m68000 ;; - 9000/[34]?? ) HP_ARCH=m68k ;; - 9000/[678][0-9][0-9]) - if [ -x /usr/bin/getconf ]; then - sc_cpu_version=`/usr/bin/getconf SC_CPU_VERSION 2>/dev/null` - sc_kernel_bits=`/usr/bin/getconf SC_KERNEL_BITS 2>/dev/null` - case "${sc_cpu_version}" in - 523) HP_ARCH="hppa1.0" ;; # CPU_PA_RISC1_0 - 528) HP_ARCH="hppa1.1" ;; # CPU_PA_RISC1_1 - 532) # CPU_PA_RISC2_0 - case "${sc_kernel_bits}" in - 32) HP_ARCH="hppa2.0n" ;; - 64) HP_ARCH="hppa2.0w" ;; - '') HP_ARCH="hppa2.0" ;; # HP-UX 10.20 - esac ;; - esac - fi - if [ "${HP_ARCH}" = "" ]; then - eval $set_cc_for_build - sed 's/^ //' << EOF >$dummy.c - - #define _HPUX_SOURCE - #include - #include - - int main () - { - #if defined(_SC_KERNEL_BITS) - long bits = sysconf(_SC_KERNEL_BITS); - #endif - long cpu = sysconf (_SC_CPU_VERSION); - - switch (cpu) - { - case CPU_PA_RISC1_0: puts ("hppa1.0"); break; - case CPU_PA_RISC1_1: puts ("hppa1.1"); break; - case CPU_PA_RISC2_0: - #if defined(_SC_KERNEL_BITS) - switch (bits) - { - case 64: puts ("hppa2.0w"); break; - case 32: puts ("hppa2.0n"); break; - default: puts ("hppa2.0"); break; - } break; - #else /* !defined(_SC_KERNEL_BITS) */ - puts ("hppa2.0"); break; - #endif - default: puts ("hppa1.0"); break; - } - exit (0); - } -EOF - (CCOPTS= $CC_FOR_BUILD -o $dummy $dummy.c 2>/dev/null) && HP_ARCH=`$dummy` - test -z "$HP_ARCH" && HP_ARCH=hppa - fi ;; - esac - if [ ${HP_ARCH} = "hppa2.0w" ] - then - eval $set_cc_for_build - - # hppa2.0w-hp-hpux* has a 64-bit kernel and a compiler generating - # 32-bit code. hppa64-hp-hpux* has the same kernel and a compiler - # generating 64-bit code. GNU and HP use different nomenclature: - # - # $ CC_FOR_BUILD=cc ./config.guess - # => hppa2.0w-hp-hpux11.23 - # $ CC_FOR_BUILD="cc +DA2.0w" ./config.guess - # => hppa64-hp-hpux11.23 - - if echo __LP64__ | (CCOPTS= $CC_FOR_BUILD -E - 2>/dev/null) | - grep -q __LP64__ - then - HP_ARCH="hppa2.0w" - else - HP_ARCH="hppa64" - fi - fi - echo ${HP_ARCH}-hp-hpux${HPUX_REV} - exit ;; - ia64:HP-UX:*:*) - HPUX_REV=`echo ${UNAME_RELEASE}|sed -e 's/[^.]*.[0B]*//'` - echo ia64-hp-hpux${HPUX_REV} - exit ;; - 3050*:HI-UX:*:*) - eval $set_cc_for_build - sed 's/^ //' << EOF >$dummy.c - #include - int - main () - { - long cpu = sysconf (_SC_CPU_VERSION); - /* The order matters, because CPU_IS_HP_MC68K erroneously returns - true for CPU_PA_RISC1_0. CPU_IS_PA_RISC returns correct - results, however. */ - if (CPU_IS_PA_RISC (cpu)) - { - switch (cpu) - { - case CPU_PA_RISC1_0: puts ("hppa1.0-hitachi-hiuxwe2"); break; - case CPU_PA_RISC1_1: puts ("hppa1.1-hitachi-hiuxwe2"); break; - case CPU_PA_RISC2_0: puts ("hppa2.0-hitachi-hiuxwe2"); break; - default: puts ("hppa-hitachi-hiuxwe2"); break; - } - } - else if (CPU_IS_HP_MC68K (cpu)) - puts ("m68k-hitachi-hiuxwe2"); - else puts ("unknown-hitachi-hiuxwe2"); - exit (0); - } -EOF - $CC_FOR_BUILD -o $dummy $dummy.c && SYSTEM_NAME=`$dummy` && - { echo "$SYSTEM_NAME"; exit; } - echo unknown-hitachi-hiuxwe2 - exit ;; - 9000/7??:4.3bsd:*:* | 9000/8?[79]:4.3bsd:*:* ) - echo hppa1.1-hp-bsd - exit ;; - 9000/8??:4.3bsd:*:*) - echo hppa1.0-hp-bsd - exit ;; - *9??*:MPE/iX:*:* | *3000*:MPE/iX:*:*) - echo hppa1.0-hp-mpeix - exit ;; - hp7??:OSF1:*:* | hp8?[79]:OSF1:*:* ) - echo hppa1.1-hp-osf - exit ;; - hp8??:OSF1:*:*) - echo hppa1.0-hp-osf - exit ;; - i*86:OSF1:*:*) - if [ -x /usr/sbin/sysversion ] ; then - echo ${UNAME_MACHINE}-unknown-osf1mk - else - echo ${UNAME_MACHINE}-unknown-osf1 - fi - exit ;; - parisc*:Lites*:*:*) - echo hppa1.1-hp-lites - exit ;; - C1*:ConvexOS:*:* | convex:ConvexOS:C1*:*) - echo c1-convex-bsd - exit ;; - C2*:ConvexOS:*:* | convex:ConvexOS:C2*:*) - if getsysinfo -f scalar_acc - then echo c32-convex-bsd - else echo c2-convex-bsd - fi - exit ;; - C34*:ConvexOS:*:* | convex:ConvexOS:C34*:*) - echo c34-convex-bsd - exit ;; - C38*:ConvexOS:*:* | convex:ConvexOS:C38*:*) - echo c38-convex-bsd - exit ;; - C4*:ConvexOS:*:* | convex:ConvexOS:C4*:*) - echo c4-convex-bsd - exit ;; - CRAY*Y-MP:*:*:*) - echo ymp-cray-unicos${UNAME_RELEASE} | sed -e 's/\.[^.]*$/.X/' - exit ;; - CRAY*[A-Z]90:*:*:*) - echo ${UNAME_MACHINE}-cray-unicos${UNAME_RELEASE} \ - | sed -e 's/CRAY.*\([A-Z]90\)/\1/' \ - -e y/ABCDEFGHIJKLMNOPQRSTUVWXYZ/abcdefghijklmnopqrstuvwxyz/ \ - -e 's/\.[^.]*$/.X/' - exit ;; - CRAY*TS:*:*:*) - echo t90-cray-unicos${UNAME_RELEASE} | sed -e 's/\.[^.]*$/.X/' - exit ;; - CRAY*T3E:*:*:*) - echo alphaev5-cray-unicosmk${UNAME_RELEASE} | sed -e 's/\.[^.]*$/.X/' - exit ;; - CRAY*SV1:*:*:*) - echo sv1-cray-unicos${UNAME_RELEASE} | sed -e 's/\.[^.]*$/.X/' - exit ;; - *:UNICOS/mp:*:*) - echo craynv-cray-unicosmp${UNAME_RELEASE} | sed -e 's/\.[^.]*$/.X/' - exit ;; - F30[01]:UNIX_System_V:*:* | F700:UNIX_System_V:*:*) - FUJITSU_PROC=`uname -m | tr 'ABCDEFGHIJKLMNOPQRSTUVWXYZ' 'abcdefghijklmnopqrstuvwxyz'` - FUJITSU_SYS=`uname -p | tr 'ABCDEFGHIJKLMNOPQRSTUVWXYZ' 'abcdefghijklmnopqrstuvwxyz' | sed -e 's/\///'` - FUJITSU_REL=`echo ${UNAME_RELEASE} | sed -e 's/ /_/'` - echo "${FUJITSU_PROC}-fujitsu-${FUJITSU_SYS}${FUJITSU_REL}" - exit ;; - 5000:UNIX_System_V:4.*:*) - FUJITSU_SYS=`uname -p | tr 'ABCDEFGHIJKLMNOPQRSTUVWXYZ' 'abcdefghijklmnopqrstuvwxyz' | sed -e 's/\///'` - FUJITSU_REL=`echo ${UNAME_RELEASE} | tr 'ABCDEFGHIJKLMNOPQRSTUVWXYZ' 'abcdefghijklmnopqrstuvwxyz' | sed -e 's/ /_/'` - echo "sparc-fujitsu-${FUJITSU_SYS}${FUJITSU_REL}" - exit ;; - i*86:BSD/386:*:* | i*86:BSD/OS:*:* | *:Ascend\ Embedded/OS:*:*) - echo ${UNAME_MACHINE}-pc-bsdi${UNAME_RELEASE} - exit ;; - sparc*:BSD/OS:*:*) - echo sparc-unknown-bsdi${UNAME_RELEASE} - exit ;; - *:BSD/OS:*:*) - echo ${UNAME_MACHINE}-unknown-bsdi${UNAME_RELEASE} - exit ;; - *:FreeBSD:*:*) - UNAME_PROCESSOR=`/usr/bin/uname -p` - case ${UNAME_PROCESSOR} in - amd64) - echo x86_64-unknown-freebsd`echo ${UNAME_RELEASE}|sed -e 's/[-(].*//'` ;; - *) - echo ${UNAME_PROCESSOR}-unknown-freebsd`echo ${UNAME_RELEASE}|sed -e 's/[-(].*//'` ;; - esac - exit ;; - i*:CYGWIN*:*) - echo ${UNAME_MACHINE}-pc-cygwin - exit ;; - *:MINGW64*:*) - echo ${UNAME_MACHINE}-pc-mingw64 - exit ;; - *:MINGW*:*) - echo ${UNAME_MACHINE}-pc-mingw32 - exit ;; - *:MSYS*:*) - echo ${UNAME_MACHINE}-pc-msys - exit ;; - i*:windows32*:*) - # uname -m includes "-pc" on this system. - echo ${UNAME_MACHINE}-mingw32 - exit ;; - i*:PW*:*) - echo ${UNAME_MACHINE}-pc-pw32 - exit ;; - *:Interix*:*) - case ${UNAME_MACHINE} in - x86) - echo i586-pc-interix${UNAME_RELEASE} - exit ;; - authenticamd | genuineintel | EM64T) - echo x86_64-unknown-interix${UNAME_RELEASE} - exit ;; - IA64) - echo ia64-unknown-interix${UNAME_RELEASE} - exit ;; - esac ;; - [345]86:Windows_95:* | [345]86:Windows_98:* | [345]86:Windows_NT:*) - echo i${UNAME_MACHINE}-pc-mks - exit ;; - 8664:Windows_NT:*) - echo x86_64-pc-mks - exit ;; - i*:Windows_NT*:* | Pentium*:Windows_NT*:*) - # How do we know it's Interix rather than the generic POSIX subsystem? - # It also conflicts with pre-2.0 versions of AT&T UWIN. Should we - # UNAME_MACHINE based on the output of uname instead of i386? - echo i586-pc-interix - exit ;; - i*:UWIN*:*) - echo ${UNAME_MACHINE}-pc-uwin - exit ;; - amd64:CYGWIN*:*:* | x86_64:CYGWIN*:*:*) - echo x86_64-unknown-cygwin - exit ;; - p*:CYGWIN*:*) - echo powerpcle-unknown-cygwin - exit ;; - prep*:SunOS:5.*:*) - echo powerpcle-unknown-solaris2`echo ${UNAME_RELEASE}|sed -e 's/[^.]*//'` - exit ;; - *:GNU:*:*) - # the GNU system - echo `echo ${UNAME_MACHINE}|sed -e 's,[-/].*$,,'`-unknown-${LIBC}`echo ${UNAME_RELEASE}|sed -e 's,/.*$,,'` - exit ;; - *:GNU/*:*:*) - # other systems with GNU libc and userland - echo ${UNAME_MACHINE}-unknown-`echo ${UNAME_SYSTEM} | sed 's,^[^/]*/,,' | tr '[A-Z]' '[a-z]'``echo ${UNAME_RELEASE}|sed -e 's/[-(].*//'`-${LIBC} - exit ;; - i*86:Minix:*:*) - echo ${UNAME_MACHINE}-pc-minix - exit ;; - aarch64:Linux:*:*) - echo ${UNAME_MACHINE}-unknown-linux-${LIBC} - exit ;; - aarch64_be:Linux:*:*) - UNAME_MACHINE=aarch64_be - echo ${UNAME_MACHINE}-unknown-linux-${LIBC} - exit ;; - alpha:Linux:*:*) - case `sed -n '/^cpu model/s/^.*: \(.*\)/\1/p' < /proc/cpuinfo` in - EV5) UNAME_MACHINE=alphaev5 ;; - EV56) UNAME_MACHINE=alphaev56 ;; - PCA56) UNAME_MACHINE=alphapca56 ;; - PCA57) UNAME_MACHINE=alphapca56 ;; - EV6) UNAME_MACHINE=alphaev6 ;; - EV67) UNAME_MACHINE=alphaev67 ;; - EV68*) UNAME_MACHINE=alphaev68 ;; - esac - objdump --private-headers /bin/sh | grep -q ld.so.1 - if test "$?" = 0 ; then LIBC="gnulibc1" ; fi - echo ${UNAME_MACHINE}-unknown-linux-${LIBC} - exit ;; - arc:Linux:*:* | arceb:Linux:*:*) - echo ${UNAME_MACHINE}-unknown-linux-${LIBC} - exit ;; - arm*:Linux:*:*) - eval $set_cc_for_build - if echo __ARM_EABI__ | $CC_FOR_BUILD -E - 2>/dev/null \ - | grep -q __ARM_EABI__ - then - echo ${UNAME_MACHINE}-unknown-linux-${LIBC} - else - if echo __ARM_PCS_VFP | $CC_FOR_BUILD -E - 2>/dev/null \ - | grep -q __ARM_PCS_VFP - then - echo ${UNAME_MACHINE}-unknown-linux-${LIBC}eabi - else - echo ${UNAME_MACHINE}-unknown-linux-${LIBC}eabihf - fi - fi - exit ;; - avr32*:Linux:*:*) - echo ${UNAME_MACHINE}-unknown-linux-${LIBC} - exit ;; - cris:Linux:*:*) - echo ${UNAME_MACHINE}-axis-linux-${LIBC} - exit ;; - crisv32:Linux:*:*) - echo ${UNAME_MACHINE}-axis-linux-${LIBC} - exit ;; - frv:Linux:*:*) - echo ${UNAME_MACHINE}-unknown-linux-${LIBC} - exit ;; - hexagon:Linux:*:*) - echo ${UNAME_MACHINE}-unknown-linux-${LIBC} - exit ;; - i*86:Linux:*:*) - echo ${UNAME_MACHINE}-pc-linux-${LIBC} - exit ;; - ia64:Linux:*:*) - echo ${UNAME_MACHINE}-unknown-linux-${LIBC} - exit ;; - m32r*:Linux:*:*) - echo ${UNAME_MACHINE}-unknown-linux-${LIBC} - exit ;; - m68*:Linux:*:*) - echo ${UNAME_MACHINE}-unknown-linux-${LIBC} - exit ;; - mips:Linux:*:* | mips64:Linux:*:*) - eval $set_cc_for_build - sed 's/^ //' << EOF >$dummy.c - #undef CPU - #undef ${UNAME_MACHINE} - #undef ${UNAME_MACHINE}el - #if defined(__MIPSEL__) || defined(__MIPSEL) || defined(_MIPSEL) || defined(MIPSEL) - CPU=${UNAME_MACHINE}el - #else - #if defined(__MIPSEB__) || defined(__MIPSEB) || defined(_MIPSEB) || defined(MIPSEB) - CPU=${UNAME_MACHINE} - #else - CPU= - #endif - #endif -EOF - eval `$CC_FOR_BUILD -E $dummy.c 2>/dev/null | grep '^CPU'` - test x"${CPU}" != x && { echo "${CPU}-unknown-linux-${LIBC}"; exit; } - ;; - openrisc*:Linux:*:*) - echo or1k-unknown-linux-${LIBC} - exit ;; - or32:Linux:*:* | or1k*:Linux:*:*) - echo ${UNAME_MACHINE}-unknown-linux-${LIBC} - exit ;; - padre:Linux:*:*) - echo sparc-unknown-linux-${LIBC} - exit ;; - parisc64:Linux:*:* | hppa64:Linux:*:*) - echo hppa64-unknown-linux-${LIBC} - exit ;; - parisc:Linux:*:* | hppa:Linux:*:*) - # Look for CPU level - case `grep '^cpu[^a-z]*:' /proc/cpuinfo 2>/dev/null | cut -d' ' -f2` in - PA7*) echo hppa1.1-unknown-linux-${LIBC} ;; - PA8*) echo hppa2.0-unknown-linux-${LIBC} ;; - *) echo hppa-unknown-linux-${LIBC} ;; - esac - exit ;; - ppc64:Linux:*:*) - echo powerpc64-unknown-linux-${LIBC} - exit ;; - ppc:Linux:*:*) - echo powerpc-unknown-linux-${LIBC} - exit ;; - ppc64le:Linux:*:*) - echo powerpc64le-unknown-linux-${LIBC} - exit ;; - ppcle:Linux:*:*) - echo powerpcle-unknown-linux-${LIBC} - exit ;; - s390:Linux:*:* | s390x:Linux:*:*) - echo ${UNAME_MACHINE}-ibm-linux-${LIBC} - exit ;; - sh64*:Linux:*:*) - echo ${UNAME_MACHINE}-unknown-linux-${LIBC} - exit ;; - sh*:Linux:*:*) - echo ${UNAME_MACHINE}-unknown-linux-${LIBC} - exit ;; - sparc:Linux:*:* | sparc64:Linux:*:*) - echo ${UNAME_MACHINE}-unknown-linux-${LIBC} - exit ;; - tile*:Linux:*:*) - echo ${UNAME_MACHINE}-unknown-linux-${LIBC} - exit ;; - vax:Linux:*:*) - echo ${UNAME_MACHINE}-dec-linux-${LIBC} - exit ;; - x86_64:Linux:*:*) - echo ${UNAME_MACHINE}-unknown-linux-${LIBC} - exit ;; - xtensa*:Linux:*:*) - echo ${UNAME_MACHINE}-unknown-linux-${LIBC} - exit ;; - i*86:DYNIX/ptx:4*:*) - # ptx 4.0 does uname -s correctly, with DYNIX/ptx in there. - # earlier versions are messed up and put the nodename in both - # sysname and nodename. - echo i386-sequent-sysv4 - exit ;; - i*86:UNIX_SV:4.2MP:2.*) - # Unixware is an offshoot of SVR4, but it has its own version - # number series starting with 2... - # I am not positive that other SVR4 systems won't match this, - # I just have to hope. -- rms. - # Use sysv4.2uw... so that sysv4* matches it. - echo ${UNAME_MACHINE}-pc-sysv4.2uw${UNAME_VERSION} - exit ;; - i*86:OS/2:*:*) - # If we were able to find `uname', then EMX Unix compatibility - # is probably installed. - echo ${UNAME_MACHINE}-pc-os2-emx - exit ;; - i*86:XTS-300:*:STOP) - echo ${UNAME_MACHINE}-unknown-stop - exit ;; - i*86:atheos:*:*) - echo ${UNAME_MACHINE}-unknown-atheos - exit ;; - i*86:syllable:*:*) - echo ${UNAME_MACHINE}-pc-syllable - exit ;; - i*86:LynxOS:2.*:* | i*86:LynxOS:3.[01]*:* | i*86:LynxOS:4.[02]*:*) - echo i386-unknown-lynxos${UNAME_RELEASE} - exit ;; - i*86:*DOS:*:*) - echo ${UNAME_MACHINE}-pc-msdosdjgpp - exit ;; - i*86:*:4.*:* | i*86:SYSTEM_V:4.*:*) - UNAME_REL=`echo ${UNAME_RELEASE} | sed 's/\/MP$//'` - if grep Novell /usr/include/link.h >/dev/null 2>/dev/null; then - echo ${UNAME_MACHINE}-univel-sysv${UNAME_REL} - else - echo ${UNAME_MACHINE}-pc-sysv${UNAME_REL} - fi - exit ;; - i*86:*:5:[678]*) - # UnixWare 7.x, OpenUNIX and OpenServer 6. - case `/bin/uname -X | grep "^Machine"` in - *486*) UNAME_MACHINE=i486 ;; - *Pentium) UNAME_MACHINE=i586 ;; - *Pent*|*Celeron) UNAME_MACHINE=i686 ;; - esac - echo ${UNAME_MACHINE}-unknown-sysv${UNAME_RELEASE}${UNAME_SYSTEM}${UNAME_VERSION} - exit ;; - i*86:*:3.2:*) - if test -f /usr/options/cb.name; then - UNAME_REL=`sed -n 's/.*Version //p' /dev/null >/dev/null ; then - UNAME_REL=`(/bin/uname -X|grep Release|sed -e 's/.*= //')` - (/bin/uname -X|grep i80486 >/dev/null) && UNAME_MACHINE=i486 - (/bin/uname -X|grep '^Machine.*Pentium' >/dev/null) \ - && UNAME_MACHINE=i586 - (/bin/uname -X|grep '^Machine.*Pent *II' >/dev/null) \ - && UNAME_MACHINE=i686 - (/bin/uname -X|grep '^Machine.*Pentium Pro' >/dev/null) \ - && UNAME_MACHINE=i686 - echo ${UNAME_MACHINE}-pc-sco$UNAME_REL - else - echo ${UNAME_MACHINE}-pc-sysv32 - fi - exit ;; - pc:*:*:*) - # Left here for compatibility: - # uname -m prints for DJGPP always 'pc', but it prints nothing about - # the processor, so we play safe by assuming i586. - # Note: whatever this is, it MUST be the same as what config.sub - # prints for the "djgpp" host, or else GDB configury will decide that - # this is a cross-build. - echo i586-pc-msdosdjgpp - exit ;; - Intel:Mach:3*:*) - echo i386-pc-mach3 - exit ;; - paragon:*:*:*) - echo i860-intel-osf1 - exit ;; - i860:*:4.*:*) # i860-SVR4 - if grep Stardent /usr/include/sys/uadmin.h >/dev/null 2>&1 ; then - echo i860-stardent-sysv${UNAME_RELEASE} # Stardent Vistra i860-SVR4 - else # Add other i860-SVR4 vendors below as they are discovered. - echo i860-unknown-sysv${UNAME_RELEASE} # Unknown i860-SVR4 - fi - exit ;; - mini*:CTIX:SYS*5:*) - # "miniframe" - echo m68010-convergent-sysv - exit ;; - mc68k:UNIX:SYSTEM5:3.51m) - echo m68k-convergent-sysv - exit ;; - M680?0:D-NIX:5.3:*) - echo m68k-diab-dnix - exit ;; - M68*:*:R3V[5678]*:*) - test -r /sysV68 && { echo 'm68k-motorola-sysv'; exit; } ;; - 3[345]??:*:4.0:3.0 | 3[34]??A:*:4.0:3.0 | 3[34]??,*:*:4.0:3.0 | 3[34]??/*:*:4.0:3.0 | 4400:*:4.0:3.0 | 4850:*:4.0:3.0 | SKA40:*:4.0:3.0 | SDS2:*:4.0:3.0 | SHG2:*:4.0:3.0 | S7501*:*:4.0:3.0) - OS_REL='' - test -r /etc/.relid \ - && OS_REL=.`sed -n 's/[^ ]* [^ ]* \([0-9][0-9]\).*/\1/p' < /etc/.relid` - /bin/uname -p 2>/dev/null | grep 86 >/dev/null \ - && { echo i486-ncr-sysv4.3${OS_REL}; exit; } - /bin/uname -p 2>/dev/null | /bin/grep entium >/dev/null \ - && { echo i586-ncr-sysv4.3${OS_REL}; exit; } ;; - 3[34]??:*:4.0:* | 3[34]??,*:*:4.0:*) - /bin/uname -p 2>/dev/null | grep 86 >/dev/null \ - && { echo i486-ncr-sysv4; exit; } ;; - NCR*:*:4.2:* | MPRAS*:*:4.2:*) - OS_REL='.3' - test -r /etc/.relid \ - && OS_REL=.`sed -n 's/[^ ]* [^ ]* \([0-9][0-9]\).*/\1/p' < /etc/.relid` - /bin/uname -p 2>/dev/null | grep 86 >/dev/null \ - && { echo i486-ncr-sysv4.3${OS_REL}; exit; } - /bin/uname -p 2>/dev/null | /bin/grep entium >/dev/null \ - && { echo i586-ncr-sysv4.3${OS_REL}; exit; } - /bin/uname -p 2>/dev/null | /bin/grep pteron >/dev/null \ - && { echo i586-ncr-sysv4.3${OS_REL}; exit; } ;; - m68*:LynxOS:2.*:* | m68*:LynxOS:3.0*:*) - echo m68k-unknown-lynxos${UNAME_RELEASE} - exit ;; - mc68030:UNIX_System_V:4.*:*) - echo m68k-atari-sysv4 - exit ;; - TSUNAMI:LynxOS:2.*:*) - echo sparc-unknown-lynxos${UNAME_RELEASE} - exit ;; - rs6000:LynxOS:2.*:*) - echo rs6000-unknown-lynxos${UNAME_RELEASE} - exit ;; - PowerPC:LynxOS:2.*:* | PowerPC:LynxOS:3.[01]*:* | PowerPC:LynxOS:4.[02]*:*) - echo powerpc-unknown-lynxos${UNAME_RELEASE} - exit ;; - SM[BE]S:UNIX_SV:*:*) - echo mips-dde-sysv${UNAME_RELEASE} - exit ;; - RM*:ReliantUNIX-*:*:*) - echo mips-sni-sysv4 - exit ;; - RM*:SINIX-*:*:*) - echo mips-sni-sysv4 - exit ;; - *:SINIX-*:*:*) - if uname -p 2>/dev/null >/dev/null ; then - UNAME_MACHINE=`(uname -p) 2>/dev/null` - echo ${UNAME_MACHINE}-sni-sysv4 - else - echo ns32k-sni-sysv - fi - exit ;; - PENTIUM:*:4.0*:*) # Unisys `ClearPath HMP IX 4000' SVR4/MP effort - # says - echo i586-unisys-sysv4 - exit ;; - *:UNIX_System_V:4*:FTX*) - # From Gerald Hewes . - # How about differentiating between stratus architectures? -djm - echo hppa1.1-stratus-sysv4 - exit ;; - *:*:*:FTX*) - # From seanf@swdc.stratus.com. - echo i860-stratus-sysv4 - exit ;; - i*86:VOS:*:*) - # From Paul.Green@stratus.com. - echo ${UNAME_MACHINE}-stratus-vos - exit ;; - *:VOS:*:*) - # From Paul.Green@stratus.com. - echo hppa1.1-stratus-vos - exit ;; - mc68*:A/UX:*:*) - echo m68k-apple-aux${UNAME_RELEASE} - exit ;; - news*:NEWS-OS:6*:*) - echo mips-sony-newsos6 - exit ;; - R[34]000:*System_V*:*:* | R4000:UNIX_SYSV:*:* | R*000:UNIX_SV:*:*) - if [ -d /usr/nec ]; then - echo mips-nec-sysv${UNAME_RELEASE} - else - echo mips-unknown-sysv${UNAME_RELEASE} - fi - exit ;; - BeBox:BeOS:*:*) # BeOS running on hardware made by Be, PPC only. - echo powerpc-be-beos - exit ;; - BeMac:BeOS:*:*) # BeOS running on Mac or Mac clone, PPC only. - echo powerpc-apple-beos - exit ;; - BePC:BeOS:*:*) # BeOS running on Intel PC compatible. - echo i586-pc-beos - exit ;; - BePC:Haiku:*:*) # Haiku running on Intel PC compatible. - echo i586-pc-haiku - exit ;; - x86_64:Haiku:*:*) - echo x86_64-unknown-haiku - exit ;; - SX-4:SUPER-UX:*:*) - echo sx4-nec-superux${UNAME_RELEASE} - exit ;; - SX-5:SUPER-UX:*:*) - echo sx5-nec-superux${UNAME_RELEASE} - exit ;; - SX-6:SUPER-UX:*:*) - echo sx6-nec-superux${UNAME_RELEASE} - exit ;; - SX-7:SUPER-UX:*:*) - echo sx7-nec-superux${UNAME_RELEASE} - exit ;; - SX-8:SUPER-UX:*:*) - echo sx8-nec-superux${UNAME_RELEASE} - exit ;; - SX-8R:SUPER-UX:*:*) - echo sx8r-nec-superux${UNAME_RELEASE} - exit ;; - Power*:Rhapsody:*:*) - echo powerpc-apple-rhapsody${UNAME_RELEASE} - exit ;; - *:Rhapsody:*:*) - echo ${UNAME_MACHINE}-apple-rhapsody${UNAME_RELEASE} - exit ;; - *:Darwin:*:*) - UNAME_PROCESSOR=`uname -p` || UNAME_PROCESSOR=unknown - eval $set_cc_for_build - if test "$UNAME_PROCESSOR" = unknown ; then - UNAME_PROCESSOR=powerpc - fi - if test `echo "$UNAME_RELEASE" | sed -e 's/\..*//'` -le 10 ; then - if [ "$CC_FOR_BUILD" != 'no_compiler_found' ]; then - if (echo '#ifdef __LP64__'; echo IS_64BIT_ARCH; echo '#endif') | \ - (CCOPTS= $CC_FOR_BUILD -E - 2>/dev/null) | \ - grep IS_64BIT_ARCH >/dev/null - then - case $UNAME_PROCESSOR in - i386) UNAME_PROCESSOR=x86_64 ;; - powerpc) UNAME_PROCESSOR=powerpc64 ;; - esac - fi - fi - elif test "$UNAME_PROCESSOR" = i386 ; then - # Avoid executing cc on OS X 10.9, as it ships with a stub - # that puts up a graphical alert prompting to install - # developer tools. Any system running Mac OS X 10.7 or - # later (Darwin 11 and later) is required to have a 64-bit - # processor. This is not true of the ARM version of Darwin - # that Apple uses in portable devices. - UNAME_PROCESSOR=x86_64 - fi - echo ${UNAME_PROCESSOR}-apple-darwin${UNAME_RELEASE} - exit ;; - *:procnto*:*:* | *:QNX:[0123456789]*:*) - UNAME_PROCESSOR=`uname -p` - if test "$UNAME_PROCESSOR" = "x86"; then - UNAME_PROCESSOR=i386 - UNAME_MACHINE=pc - fi - echo ${UNAME_PROCESSOR}-${UNAME_MACHINE}-nto-qnx${UNAME_RELEASE} - exit ;; - *:QNX:*:4*) - echo i386-pc-qnx - exit ;; - NEO-?:NONSTOP_KERNEL:*:*) - echo neo-tandem-nsk${UNAME_RELEASE} - exit ;; - NSE-*:NONSTOP_KERNEL:*:*) - echo nse-tandem-nsk${UNAME_RELEASE} - exit ;; - NSR-?:NONSTOP_KERNEL:*:*) - echo nsr-tandem-nsk${UNAME_RELEASE} - exit ;; - *:NonStop-UX:*:*) - echo mips-compaq-nonstopux - exit ;; - BS2000:POSIX*:*:*) - echo bs2000-siemens-sysv - exit ;; - DS/*:UNIX_System_V:*:*) - echo ${UNAME_MACHINE}-${UNAME_SYSTEM}-${UNAME_RELEASE} - exit ;; - *:Plan9:*:*) - # "uname -m" is not consistent, so use $cputype instead. 386 - # is converted to i386 for consistency with other x86 - # operating systems. - if test "$cputype" = "386"; then - UNAME_MACHINE=i386 - else - UNAME_MACHINE="$cputype" - fi - echo ${UNAME_MACHINE}-unknown-plan9 - exit ;; - *:TOPS-10:*:*) - echo pdp10-unknown-tops10 - exit ;; - *:TENEX:*:*) - echo pdp10-unknown-tenex - exit ;; - KS10:TOPS-20:*:* | KL10:TOPS-20:*:* | TYPE4:TOPS-20:*:*) - echo pdp10-dec-tops20 - exit ;; - XKL-1:TOPS-20:*:* | TYPE5:TOPS-20:*:*) - echo pdp10-xkl-tops20 - exit ;; - *:TOPS-20:*:*) - echo pdp10-unknown-tops20 - exit ;; - *:ITS:*:*) - echo pdp10-unknown-its - exit ;; - SEI:*:*:SEIUX) - echo mips-sei-seiux${UNAME_RELEASE} - exit ;; - *:DragonFly:*:*) - echo ${UNAME_MACHINE}-unknown-dragonfly`echo ${UNAME_RELEASE}|sed -e 's/[-(].*//'` - exit ;; - *:*VMS:*:*) - UNAME_MACHINE=`(uname -p) 2>/dev/null` - case "${UNAME_MACHINE}" in - A*) echo alpha-dec-vms ; exit ;; - I*) echo ia64-dec-vms ; exit ;; - V*) echo vax-dec-vms ; exit ;; - esac ;; - *:XENIX:*:SysV) - echo i386-pc-xenix - exit ;; - i*86:skyos:*:*) - echo ${UNAME_MACHINE}-pc-skyos`echo ${UNAME_RELEASE}` | sed -e 's/ .*$//' - exit ;; - i*86:rdos:*:*) - echo ${UNAME_MACHINE}-pc-rdos - exit ;; - i*86:AROS:*:*) - echo ${UNAME_MACHINE}-pc-aros - exit ;; - x86_64:VMkernel:*:*) - echo ${UNAME_MACHINE}-unknown-esx - exit ;; -esac - -cat >&2 < in order to provide the needed -information to handle your system. - -config.guess timestamp = $timestamp - -uname -m = `(uname -m) 2>/dev/null || echo unknown` -uname -r = `(uname -r) 2>/dev/null || echo unknown` -uname -s = `(uname -s) 2>/dev/null || echo unknown` -uname -v = `(uname -v) 2>/dev/null || echo unknown` - -/usr/bin/uname -p = `(/usr/bin/uname -p) 2>/dev/null` -/bin/uname -X = `(/bin/uname -X) 2>/dev/null` - -hostinfo = `(hostinfo) 2>/dev/null` -/bin/universe = `(/bin/universe) 2>/dev/null` -/usr/bin/arch -k = `(/usr/bin/arch -k) 2>/dev/null` -/bin/arch = `(/bin/arch) 2>/dev/null` -/usr/bin/oslevel = `(/usr/bin/oslevel) 2>/dev/null` -/usr/convex/getsysinfo = `(/usr/convex/getsysinfo) 2>/dev/null` - -UNAME_MACHINE = ${UNAME_MACHINE} -UNAME_RELEASE = ${UNAME_RELEASE} -UNAME_SYSTEM = ${UNAME_SYSTEM} -UNAME_VERSION = ${UNAME_VERSION} -EOF - -exit 1 - -# Local variables: -# eval: (add-hook 'write-file-hooks 'time-stamp) -# time-stamp-start: "timestamp='" -# time-stamp-format: "%:y-%02m-%02d" -# time-stamp-end: "'" -# End: diff --git a/libs/libdingaling/config.sub b/libs/libdingaling/config.sub deleted file mode 100644 index bba4efb8057..00000000000 --- a/libs/libdingaling/config.sub +++ /dev/null @@ -1,1799 +0,0 @@ -#! /bin/sh -# Configuration validation subroutine script. -# Copyright 1992-2014 Free Software Foundation, Inc. - -timestamp='2014-09-11' - -# This file 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 3 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, see . -# -# As a special exception to the GNU General Public License, if you -# distribute this file as part of a program that contains a -# configuration script generated by Autoconf, you may include it under -# the same distribution terms that you use for the rest of that -# program. This Exception is an additional permission under section 7 -# of the GNU General Public License, version 3 ("GPLv3"). - - -# Please send patches with a ChangeLog entry to config-patches@gnu.org. -# -# Configuration subroutine to validate and canonicalize a configuration type. -# Supply the specified configuration type as an argument. -# If it is invalid, we print an error message on stderr and exit with code 1. -# Otherwise, we print the canonical config type on stdout and succeed. - -# You can get the latest version of this script from: -# http://git.savannah.gnu.org/gitweb/?p=config.git;a=blob_plain;f=config.sub;hb=HEAD - -# This file is supposed to be the same for all GNU packages -# and recognize all the CPU types, system types and aliases -# that are meaningful with *any* GNU software. -# Each package is responsible for reporting which valid configurations -# it does not support. The user should be able to distinguish -# a failure to support a valid configuration from a meaningless -# configuration. - -# The goal of this file is to map all the various variations of a given -# machine specification into a single specification in the form: -# CPU_TYPE-MANUFACTURER-OPERATING_SYSTEM -# or in some cases, the newer four-part form: -# CPU_TYPE-MANUFACTURER-KERNEL-OPERATING_SYSTEM -# It is wrong to echo any other type of specification. - -me=`echo "$0" | sed -e 's,.*/,,'` - -usage="\ -Usage: $0 [OPTION] CPU-MFR-OPSYS - $0 [OPTION] ALIAS - -Canonicalize a configuration name. - -Operation modes: - -h, --help print this help, then exit - -t, --time-stamp print date of last modification, then exit - -v, --version print version number, then exit - -Report bugs and patches to ." - -version="\ -GNU config.sub ($timestamp) - -Copyright 1992-2014 Free Software Foundation, Inc. - -This is free software; see the source for copying conditions. There is NO -warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE." - -help=" -Try \`$me --help' for more information." - -# Parse command line -while test $# -gt 0 ; do - case $1 in - --time-stamp | --time* | -t ) - echo "$timestamp" ; exit ;; - --version | -v ) - echo "$version" ; exit ;; - --help | --h* | -h ) - echo "$usage"; exit ;; - -- ) # Stop option processing - shift; break ;; - - ) # Use stdin as input. - break ;; - -* ) - echo "$me: invalid option $1$help" - exit 1 ;; - - *local*) - # First pass through any local machine types. - echo $1 - exit ;; - - * ) - break ;; - esac -done - -case $# in - 0) echo "$me: missing argument$help" >&2 - exit 1;; - 1) ;; - *) echo "$me: too many arguments$help" >&2 - exit 1;; -esac - -# Separate what the user gave into CPU-COMPANY and OS or KERNEL-OS (if any). -# Here we must recognize all the valid KERNEL-OS combinations. -maybe_os=`echo $1 | sed 's/^\(.*\)-\([^-]*-[^-]*\)$/\2/'` -case $maybe_os in - nto-qnx* | linux-gnu* | linux-android* | linux-dietlibc | linux-newlib* | \ - linux-musl* | linux-uclibc* | uclinux-uclibc* | uclinux-gnu* | kfreebsd*-gnu* | \ - knetbsd*-gnu* | netbsd*-gnu* | \ - kopensolaris*-gnu* | \ - storm-chaos* | os2-emx* | rtmk-nova*) - os=-$maybe_os - basic_machine=`echo $1 | sed 's/^\(.*\)-\([^-]*-[^-]*\)$/\1/'` - ;; - android-linux) - os=-linux-android - basic_machine=`echo $1 | sed 's/^\(.*\)-\([^-]*-[^-]*\)$/\1/'`-unknown - ;; - *) - basic_machine=`echo $1 | sed 's/-[^-]*$//'` - if [ $basic_machine != $1 ] - then os=`echo $1 | sed 's/.*-/-/'` - else os=; fi - ;; -esac - -### Let's recognize common machines as not being operating systems so -### that things like config.sub decstation-3100 work. We also -### recognize some manufacturers as not being operating systems, so we -### can provide default operating systems below. -case $os in - -sun*os*) - # Prevent following clause from handling this invalid input. - ;; - -dec* | -mips* | -sequent* | -encore* | -pc532* | -sgi* | -sony* | \ - -att* | -7300* | -3300* | -delta* | -motorola* | -sun[234]* | \ - -unicom* | -ibm* | -next | -hp | -isi* | -apollo | -altos* | \ - -convergent* | -ncr* | -news | -32* | -3600* | -3100* | -hitachi* |\ - -c[123]* | -convex* | -sun | -crds | -omron* | -dg | -ultra | -tti* | \ - -harris | -dolphin | -highlevel | -gould | -cbm | -ns | -masscomp | \ - -apple | -axis | -knuth | -cray | -microblaze*) - os= - basic_machine=$1 - ;; - -bluegene*) - os=-cnk - ;; - -sim | -cisco | -oki | -wec | -winbond) - os= - basic_machine=$1 - ;; - -scout) - ;; - -wrs) - os=-vxworks - basic_machine=$1 - ;; - -chorusos*) - os=-chorusos - basic_machine=$1 - ;; - -chorusrdb) - os=-chorusrdb - basic_machine=$1 - ;; - -hiux*) - os=-hiuxwe2 - ;; - -sco6) - os=-sco5v6 - basic_machine=`echo $1 | sed -e 's/86-.*/86-pc/'` - ;; - -sco5) - os=-sco3.2v5 - basic_machine=`echo $1 | sed -e 's/86-.*/86-pc/'` - ;; - -sco4) - os=-sco3.2v4 - basic_machine=`echo $1 | sed -e 's/86-.*/86-pc/'` - ;; - -sco3.2.[4-9]*) - os=`echo $os | sed -e 's/sco3.2./sco3.2v/'` - basic_machine=`echo $1 | sed -e 's/86-.*/86-pc/'` - ;; - -sco3.2v[4-9]*) - # Don't forget version if it is 3.2v4 or newer. - basic_machine=`echo $1 | sed -e 's/86-.*/86-pc/'` - ;; - -sco5v6*) - # Don't forget version if it is 3.2v4 or newer. - basic_machine=`echo $1 | sed -e 's/86-.*/86-pc/'` - ;; - -sco*) - os=-sco3.2v2 - basic_machine=`echo $1 | sed -e 's/86-.*/86-pc/'` - ;; - -udk*) - basic_machine=`echo $1 | sed -e 's/86-.*/86-pc/'` - ;; - -isc) - os=-isc2.2 - basic_machine=`echo $1 | sed -e 's/86-.*/86-pc/'` - ;; - -clix*) - basic_machine=clipper-intergraph - ;; - -isc*) - basic_machine=`echo $1 | sed -e 's/86-.*/86-pc/'` - ;; - -lynx*178) - os=-lynxos178 - ;; - -lynx*5) - os=-lynxos5 - ;; - -lynx*) - os=-lynxos - ;; - -ptx*) - basic_machine=`echo $1 | sed -e 's/86-.*/86-sequent/'` - ;; - -windowsnt*) - os=`echo $os | sed -e 's/windowsnt/winnt/'` - ;; - -psos*) - os=-psos - ;; - -mint | -mint[0-9]*) - basic_machine=m68k-atari - os=-mint - ;; -esac - -# Decode aliases for certain CPU-COMPANY combinations. -case $basic_machine in - # Recognize the basic CPU types without company name. - # Some are omitted here because they have special meanings below. - 1750a | 580 \ - | a29k \ - | aarch64 | aarch64_be \ - | alpha | alphaev[4-8] | alphaev56 | alphaev6[78] | alphapca5[67] \ - | alpha64 | alpha64ev[4-8] | alpha64ev56 | alpha64ev6[78] | alpha64pca5[67] \ - | am33_2.0 \ - | arc | arceb \ - | arm | arm[bl]e | arme[lb] | armv[2-8] | armv[3-8][lb] | armv7[arm] \ - | avr | avr32 \ - | be32 | be64 \ - | bfin \ - | c4x | c8051 | clipper \ - | d10v | d30v | dlx | dsp16xx \ - | epiphany \ - | fido | fr30 | frv \ - | h8300 | h8500 | hppa | hppa1.[01] | hppa2.0 | hppa2.0[nw] | hppa64 \ - | hexagon \ - | i370 | i860 | i960 | ia64 \ - | ip2k | iq2000 \ - | k1om \ - | le32 | le64 \ - | lm32 \ - | m32c | m32r | m32rle | m68000 | m68k | m88k \ - | maxq | mb | microblaze | microblazeel | mcore | mep | metag \ - | mips | mipsbe | mipseb | mipsel | mipsle \ - | mips16 \ - | mips64 | mips64el \ - | mips64octeon | mips64octeonel \ - | mips64orion | mips64orionel \ - | mips64r5900 | mips64r5900el \ - | mips64vr | mips64vrel \ - | mips64vr4100 | mips64vr4100el \ - | mips64vr4300 | mips64vr4300el \ - | mips64vr5000 | mips64vr5000el \ - | mips64vr5900 | mips64vr5900el \ - | mipsisa32 | mipsisa32el \ - | mipsisa32r2 | mipsisa32r2el \ - | mipsisa32r6 | mipsisa32r6el \ - | mipsisa64 | mipsisa64el \ - | mipsisa64r2 | mipsisa64r2el \ - | mipsisa64r6 | mipsisa64r6el \ - | mipsisa64sb1 | mipsisa64sb1el \ - | mipsisa64sr71k | mipsisa64sr71kel \ - | mipsr5900 | mipsr5900el \ - | mipstx39 | mipstx39el \ - | mn10200 | mn10300 \ - | moxie \ - | mt \ - | msp430 \ - | nds32 | nds32le | nds32be \ - | nios | nios2 | nios2eb | nios2el \ - | ns16k | ns32k \ - | open8 | or1k | or1knd | or32 \ - | pdp10 | pdp11 | pj | pjl \ - | powerpc | powerpc64 | powerpc64le | powerpcle \ - | pyramid \ - | riscv32 | riscv64 \ - | rl78 | rx \ - | score \ - | sh | sh[1234] | sh[24]a | sh[24]aeb | sh[23]e | sh[34]eb | sheb | shbe | shle | sh[1234]le | sh3ele \ - | sh64 | sh64le \ - | sparc | sparc64 | sparc64b | sparc64v | sparc86x | sparclet | sparclite \ - | sparcv8 | sparcv9 | sparcv9b | sparcv9v \ - | spu \ - | tahoe | tic4x | tic54x | tic55x | tic6x | tic80 | tron \ - | ubicom32 \ - | v850 | v850e | v850e1 | v850e2 | v850es | v850e2v3 \ - | we32k \ - | x86 | xc16x | xstormy16 | xtensa \ - | z8k | z80) - basic_machine=$basic_machine-unknown - ;; - c54x) - basic_machine=tic54x-unknown - ;; - c55x) - basic_machine=tic55x-unknown - ;; - c6x) - basic_machine=tic6x-unknown - ;; - m6811 | m68hc11 | m6812 | m68hc12 | m68hcs12x | nvptx | picochip) - basic_machine=$basic_machine-unknown - os=-none - ;; - m88110 | m680[12346]0 | m683?2 | m68360 | m5200 | v70 | w65 | z8k) - ;; - ms1) - basic_machine=mt-unknown - ;; - - strongarm | thumb | xscale) - basic_machine=arm-unknown - ;; - xgate) - basic_machine=$basic_machine-unknown - os=-none - ;; - xscaleeb) - basic_machine=armeb-unknown - ;; - - xscaleel) - basic_machine=armel-unknown - ;; - - # We use `pc' rather than `unknown' - # because (1) that's what they normally are, and - # (2) the word "unknown" tends to confuse beginning users. - i*86 | x86_64) - basic_machine=$basic_machine-pc - ;; - # Object if more than one company name word. - *-*-*) - echo Invalid configuration \`$1\': machine \`$basic_machine\' not recognized 1>&2 - exit 1 - ;; - # Recognize the basic CPU types with company name. - 580-* \ - | a29k-* \ - | aarch64-* | aarch64_be-* \ - | alpha-* | alphaev[4-8]-* | alphaev56-* | alphaev6[78]-* \ - | alpha64-* | alpha64ev[4-8]-* | alpha64ev56-* | alpha64ev6[78]-* \ - | alphapca5[67]-* | alpha64pca5[67]-* | arc-* | arceb-* \ - | arm-* | armbe-* | armle-* | armeb-* | armv*-* \ - | avr-* | avr32-* \ - | be32-* | be64-* \ - | bfin-* | bs2000-* \ - | c[123]* | c30-* | [cjt]90-* | c4x-* \ - | c8051-* | clipper-* | craynv-* | cydra-* \ - | d10v-* | d30v-* | dlx-* \ - | elxsi-* \ - | f30[01]-* | f700-* | fido-* | fr30-* | frv-* | fx80-* \ - | h8300-* | h8500-* \ - | hppa-* | hppa1.[01]-* | hppa2.0-* | hppa2.0[nw]-* | hppa64-* \ - | hexagon-* \ - | i*86-* | i860-* | i960-* | ia64-* \ - | ip2k-* | iq2000-* \ - | k1om-* \ - | le32-* | le64-* \ - | lm32-* \ - | m32c-* | m32r-* | m32rle-* \ - | m68000-* | m680[012346]0-* | m68360-* | m683?2-* | m68k-* \ - | m88110-* | m88k-* | maxq-* | mcore-* | metag-* \ - | microblaze-* | microblazeel-* \ - | mips-* | mipsbe-* | mipseb-* | mipsel-* | mipsle-* \ - | mips16-* \ - | mips64-* | mips64el-* \ - | mips64octeon-* | mips64octeonel-* \ - | mips64orion-* | mips64orionel-* \ - | mips64r5900-* | mips64r5900el-* \ - | mips64vr-* | mips64vrel-* \ - | mips64vr4100-* | mips64vr4100el-* \ - | mips64vr4300-* | mips64vr4300el-* \ - | mips64vr5000-* | mips64vr5000el-* \ - | mips64vr5900-* | mips64vr5900el-* \ - | mipsisa32-* | mipsisa32el-* \ - | mipsisa32r2-* | mipsisa32r2el-* \ - | mipsisa32r6-* | mipsisa32r6el-* \ - | mipsisa64-* | mipsisa64el-* \ - | mipsisa64r2-* | mipsisa64r2el-* \ - | mipsisa64r6-* | mipsisa64r6el-* \ - | mipsisa64sb1-* | mipsisa64sb1el-* \ - | mipsisa64sr71k-* | mipsisa64sr71kel-* \ - | mipsr5900-* | mipsr5900el-* \ - | mipstx39-* | mipstx39el-* \ - | mmix-* \ - | mt-* \ - | msp430-* \ - | nds32-* | nds32le-* | nds32be-* \ - | nios-* | nios2-* | nios2eb-* | nios2el-* \ - | none-* | np1-* | ns16k-* | ns32k-* \ - | open8-* \ - | or1k*-* \ - | orion-* \ - | pdp10-* | pdp11-* | pj-* | pjl-* | pn-* | power-* \ - | powerpc-* | powerpc64-* | powerpc64le-* | powerpcle-* \ - | pyramid-* \ - | rl78-* | romp-* | rs6000-* | rx-* \ - | sh-* | sh[1234]-* | sh[24]a-* | sh[24]aeb-* | sh[23]e-* | sh[34]eb-* | sheb-* | shbe-* \ - | shle-* | sh[1234]le-* | sh3ele-* | sh64-* | sh64le-* \ - | sparc-* | sparc64-* | sparc64b-* | sparc64v-* | sparc86x-* | sparclet-* \ - | sparclite-* \ - | sparcv8-* | sparcv9-* | sparcv9b-* | sparcv9v-* | sv1-* | sx?-* \ - | tahoe-* \ - | tic30-* | tic4x-* | tic54x-* | tic55x-* | tic6x-* | tic80-* \ - | tile*-* \ - | tron-* \ - | ubicom32-* \ - | v850-* | v850e-* | v850e1-* | v850es-* | v850e2-* | v850e2v3-* \ - | vax-* \ - | we32k-* \ - | x86-* | x86_64-* | xc16x-* | xps100-* \ - | xstormy16-* | xtensa*-* \ - | ymp-* \ - | z8k-* | z80-*) - ;; - # Recognize the basic CPU types without company name, with glob match. - xtensa*) - basic_machine=$basic_machine-unknown - ;; - # Recognize the various machine names and aliases which stand - # for a CPU type and a company and sometimes even an OS. - 386bsd) - basic_machine=i386-unknown - os=-bsd - ;; - 3b1 | 7300 | 7300-att | att-7300 | pc7300 | safari | unixpc) - basic_machine=m68000-att - ;; - 3b*) - basic_machine=we32k-att - ;; - a29khif) - basic_machine=a29k-amd - os=-udi - ;; - abacus) - basic_machine=abacus-unknown - ;; - adobe68k) - basic_machine=m68010-adobe - os=-scout - ;; - alliant | fx80) - basic_machine=fx80-alliant - ;; - altos | altos3068) - basic_machine=m68k-altos - ;; - am29k) - basic_machine=a29k-none - os=-bsd - ;; - amd64) - basic_machine=x86_64-pc - ;; - amd64-*) - basic_machine=x86_64-`echo $basic_machine | sed 's/^[^-]*-//'` - ;; - amdahl) - basic_machine=580-amdahl - os=-sysv - ;; - amiga | amiga-*) - basic_machine=m68k-unknown - ;; - amigaos | amigados) - basic_machine=m68k-unknown - os=-amigaos - ;; - amigaunix | amix) - basic_machine=m68k-unknown - os=-sysv4 - ;; - apollo68) - basic_machine=m68k-apollo - os=-sysv - ;; - apollo68bsd) - basic_machine=m68k-apollo - os=-bsd - ;; - aros) - basic_machine=i386-pc - os=-aros - ;; - aux) - basic_machine=m68k-apple - os=-aux - ;; - balance) - basic_machine=ns32k-sequent - os=-dynix - ;; - blackfin) - basic_machine=bfin-unknown - os=-linux - ;; - blackfin-*) - basic_machine=bfin-`echo $basic_machine | sed 's/^[^-]*-//'` - os=-linux - ;; - bluegene*) - basic_machine=powerpc-ibm - os=-cnk - ;; - c54x-*) - basic_machine=tic54x-`echo $basic_machine | sed 's/^[^-]*-//'` - ;; - c55x-*) - basic_machine=tic55x-`echo $basic_machine | sed 's/^[^-]*-//'` - ;; - c6x-*) - basic_machine=tic6x-`echo $basic_machine | sed 's/^[^-]*-//'` - ;; - c90) - basic_machine=c90-cray - os=-unicos - ;; - cegcc) - basic_machine=arm-unknown - os=-cegcc - ;; - convex-c1) - basic_machine=c1-convex - os=-bsd - ;; - convex-c2) - basic_machine=c2-convex - os=-bsd - ;; - convex-c32) - basic_machine=c32-convex - os=-bsd - ;; - convex-c34) - basic_machine=c34-convex - os=-bsd - ;; - convex-c38) - basic_machine=c38-convex - os=-bsd - ;; - cray | j90) - basic_machine=j90-cray - os=-unicos - ;; - craynv) - basic_machine=craynv-cray - os=-unicosmp - ;; - cr16 | cr16-*) - basic_machine=cr16-unknown - os=-elf - ;; - crds | unos) - basic_machine=m68k-crds - ;; - crisv32 | crisv32-* | etraxfs*) - basic_machine=crisv32-axis - ;; - cris | cris-* | etrax*) - basic_machine=cris-axis - ;; - crx) - basic_machine=crx-unknown - os=-elf - ;; - da30 | da30-*) - basic_machine=m68k-da30 - ;; - decstation | decstation-3100 | pmax | pmax-* | pmin | dec3100 | decstatn) - basic_machine=mips-dec - ;; - decsystem10* | dec10*) - basic_machine=pdp10-dec - os=-tops10 - ;; - decsystem20* | dec20*) - basic_machine=pdp10-dec - os=-tops20 - ;; - delta | 3300 | motorola-3300 | motorola-delta \ - | 3300-motorola | delta-motorola) - basic_machine=m68k-motorola - ;; - delta88) - basic_machine=m88k-motorola - os=-sysv3 - ;; - dicos) - basic_machine=i686-pc - os=-dicos - ;; - djgpp) - basic_machine=i586-pc - os=-msdosdjgpp - ;; - dpx20 | dpx20-*) - basic_machine=rs6000-bull - os=-bosx - ;; - dpx2* | dpx2*-bull) - basic_machine=m68k-bull - os=-sysv3 - ;; - ebmon29k) - basic_machine=a29k-amd - os=-ebmon - ;; - elxsi) - basic_machine=elxsi-elxsi - os=-bsd - ;; - encore | umax | mmax) - basic_machine=ns32k-encore - ;; - es1800 | OSE68k | ose68k | ose | OSE) - basic_machine=m68k-ericsson - os=-ose - ;; - fx2800) - basic_machine=i860-alliant - ;; - genix) - basic_machine=ns32k-ns - ;; - gmicro) - basic_machine=tron-gmicro - os=-sysv - ;; - go32) - basic_machine=i386-pc - os=-go32 - ;; - h3050r* | hiux*) - basic_machine=hppa1.1-hitachi - os=-hiuxwe2 - ;; - h8300hms) - basic_machine=h8300-hitachi - os=-hms - ;; - h8300xray) - basic_machine=h8300-hitachi - os=-xray - ;; - h8500hms) - basic_machine=h8500-hitachi - os=-hms - ;; - harris) - basic_machine=m88k-harris - os=-sysv3 - ;; - hp300-*) - basic_machine=m68k-hp - ;; - hp300bsd) - basic_machine=m68k-hp - os=-bsd - ;; - hp300hpux) - basic_machine=m68k-hp - os=-hpux - ;; - hp3k9[0-9][0-9] | hp9[0-9][0-9]) - basic_machine=hppa1.0-hp - ;; - hp9k2[0-9][0-9] | hp9k31[0-9]) - basic_machine=m68000-hp - ;; - hp9k3[2-9][0-9]) - basic_machine=m68k-hp - ;; - hp9k6[0-9][0-9] | hp6[0-9][0-9]) - basic_machine=hppa1.0-hp - ;; - hp9k7[0-79][0-9] | hp7[0-79][0-9]) - basic_machine=hppa1.1-hp - ;; - hp9k78[0-9] | hp78[0-9]) - # FIXME: really hppa2.0-hp - basic_machine=hppa1.1-hp - ;; - hp9k8[67]1 | hp8[67]1 | hp9k80[24] | hp80[24] | hp9k8[78]9 | hp8[78]9 | hp9k893 | hp893) - # FIXME: really hppa2.0-hp - basic_machine=hppa1.1-hp - ;; - hp9k8[0-9][13679] | hp8[0-9][13679]) - basic_machine=hppa1.1-hp - ;; - hp9k8[0-9][0-9] | hp8[0-9][0-9]) - basic_machine=hppa1.0-hp - ;; - hppa-next) - os=-nextstep3 - ;; - hppaosf) - basic_machine=hppa1.1-hp - os=-osf - ;; - hppro) - basic_machine=hppa1.1-hp - os=-proelf - ;; - i370-ibm* | ibm*) - basic_machine=i370-ibm - ;; - i*86v32) - basic_machine=`echo $1 | sed -e 's/86.*/86-pc/'` - os=-sysv32 - ;; - i*86v4*) - basic_machine=`echo $1 | sed -e 's/86.*/86-pc/'` - os=-sysv4 - ;; - i*86v) - basic_machine=`echo $1 | sed -e 's/86.*/86-pc/'` - os=-sysv - ;; - i*86sol2) - basic_machine=`echo $1 | sed -e 's/86.*/86-pc/'` - os=-solaris2 - ;; - i386mach) - basic_machine=i386-mach - os=-mach - ;; - i386-vsta | vsta) - basic_machine=i386-unknown - os=-vsta - ;; - iris | iris4d) - basic_machine=mips-sgi - case $os in - -irix*) - ;; - *) - os=-irix4 - ;; - esac - ;; - isi68 | isi) - basic_machine=m68k-isi - os=-sysv - ;; - m68knommu) - basic_machine=m68k-unknown - os=-linux - ;; - m68knommu-*) - basic_machine=m68k-`echo $basic_machine | sed 's/^[^-]*-//'` - os=-linux - ;; - m88k-omron*) - basic_machine=m88k-omron - ;; - magnum | m3230) - basic_machine=mips-mips - os=-sysv - ;; - merlin) - basic_machine=ns32k-utek - os=-sysv - ;; - microblaze*) - basic_machine=microblaze-xilinx - ;; - mingw64) - basic_machine=x86_64-pc - os=-mingw64 - ;; - mingw32) - basic_machine=i686-pc - os=-mingw32 - ;; - mingw32ce) - basic_machine=arm-unknown - os=-mingw32ce - ;; - miniframe) - basic_machine=m68000-convergent - ;; - *mint | -mint[0-9]* | *MiNT | *MiNT[0-9]*) - basic_machine=m68k-atari - os=-mint - ;; - mips3*-*) - basic_machine=`echo $basic_machine | sed -e 's/mips3/mips64/'` - ;; - mips3*) - basic_machine=`echo $basic_machine | sed -e 's/mips3/mips64/'`-unknown - ;; - monitor) - basic_machine=m68k-rom68k - os=-coff - ;; - morphos) - basic_machine=powerpc-unknown - os=-morphos - ;; - moxiebox) - basic_machine=moxie-unknown - os=-moxiebox - ;; - msdos) - basic_machine=i386-pc - os=-msdos - ;; - ms1-*) - basic_machine=`echo $basic_machine | sed -e 's/ms1-/mt-/'` - ;; - msys) - basic_machine=i686-pc - os=-msys - ;; - mvs) - basic_machine=i370-ibm - os=-mvs - ;; - nacl) - basic_machine=le32-unknown - os=-nacl - ;; - ncr3000) - basic_machine=i486-ncr - os=-sysv4 - ;; - netbsd386) - basic_machine=i386-unknown - os=-netbsd - ;; - netwinder) - basic_machine=armv4l-rebel - os=-linux - ;; - news | news700 | news800 | news900) - basic_machine=m68k-sony - os=-newsos - ;; - news1000) - basic_machine=m68030-sony - os=-newsos - ;; - news-3600 | risc-news) - basic_machine=mips-sony - os=-newsos - ;; - necv70) - basic_machine=v70-nec - os=-sysv - ;; - next | m*-next ) - basic_machine=m68k-next - case $os in - -nextstep* ) - ;; - -ns2*) - os=-nextstep2 - ;; - *) - os=-nextstep3 - ;; - esac - ;; - nh3000) - basic_machine=m68k-harris - os=-cxux - ;; - nh[45]000) - basic_machine=m88k-harris - os=-cxux - ;; - nindy960) - basic_machine=i960-intel - os=-nindy - ;; - mon960) - basic_machine=i960-intel - os=-mon960 - ;; - nonstopux) - basic_machine=mips-compaq - os=-nonstopux - ;; - np1) - basic_machine=np1-gould - ;; - neo-tandem) - basic_machine=neo-tandem - ;; - nse-tandem) - basic_machine=nse-tandem - ;; - nsr-tandem) - basic_machine=nsr-tandem - ;; - op50n-* | op60c-*) - basic_machine=hppa1.1-oki - os=-proelf - ;; - openrisc | openrisc-*) - basic_machine=or32-unknown - ;; - os400) - basic_machine=powerpc-ibm - os=-os400 - ;; - OSE68000 | ose68000) - basic_machine=m68000-ericsson - os=-ose - ;; - os68k) - basic_machine=m68k-none - os=-os68k - ;; - pa-hitachi) - basic_machine=hppa1.1-hitachi - os=-hiuxwe2 - ;; - paragon) - basic_machine=i860-intel - os=-osf - ;; - parisc) - basic_machine=hppa-unknown - os=-linux - ;; - parisc-*) - basic_machine=hppa-`echo $basic_machine | sed 's/^[^-]*-//'` - os=-linux - ;; - pbd) - basic_machine=sparc-tti - ;; - pbb) - basic_machine=m68k-tti - ;; - pc532 | pc532-*) - basic_machine=ns32k-pc532 - ;; - pc98) - basic_machine=i386-pc - ;; - pc98-*) - basic_machine=i386-`echo $basic_machine | sed 's/^[^-]*-//'` - ;; - pentium | p5 | k5 | k6 | nexgen | viac3) - basic_machine=i586-pc - ;; - pentiumpro | p6 | 6x86 | athlon | athlon_*) - basic_machine=i686-pc - ;; - pentiumii | pentium2 | pentiumiii | pentium3) - basic_machine=i686-pc - ;; - pentium4) - basic_machine=i786-pc - ;; - pentium-* | p5-* | k5-* | k6-* | nexgen-* | viac3-*) - basic_machine=i586-`echo $basic_machine | sed 's/^[^-]*-//'` - ;; - pentiumpro-* | p6-* | 6x86-* | athlon-*) - basic_machine=i686-`echo $basic_machine | sed 's/^[^-]*-//'` - ;; - pentiumii-* | pentium2-* | pentiumiii-* | pentium3-*) - basic_machine=i686-`echo $basic_machine | sed 's/^[^-]*-//'` - ;; - pentium4-*) - basic_machine=i786-`echo $basic_machine | sed 's/^[^-]*-//'` - ;; - pn) - basic_machine=pn-gould - ;; - power) basic_machine=power-ibm - ;; - ppc | ppcbe) basic_machine=powerpc-unknown - ;; - ppc-* | ppcbe-*) - basic_machine=powerpc-`echo $basic_machine | sed 's/^[^-]*-//'` - ;; - ppcle | powerpclittle | ppc-le | powerpc-little) - basic_machine=powerpcle-unknown - ;; - ppcle-* | powerpclittle-*) - basic_machine=powerpcle-`echo $basic_machine | sed 's/^[^-]*-//'` - ;; - ppc64) basic_machine=powerpc64-unknown - ;; - ppc64-*) basic_machine=powerpc64-`echo $basic_machine | sed 's/^[^-]*-//'` - ;; - ppc64le | powerpc64little | ppc64-le | powerpc64-little) - basic_machine=powerpc64le-unknown - ;; - ppc64le-* | powerpc64little-*) - basic_machine=powerpc64le-`echo $basic_machine | sed 's/^[^-]*-//'` - ;; - ps2) - basic_machine=i386-ibm - ;; - pw32) - basic_machine=i586-unknown - os=-pw32 - ;; - rdos | rdos64) - basic_machine=x86_64-pc - os=-rdos - ;; - rdos32) - basic_machine=i386-pc - os=-rdos - ;; - rom68k) - basic_machine=m68k-rom68k - os=-coff - ;; - rm[46]00) - basic_machine=mips-siemens - ;; - rtpc | rtpc-*) - basic_machine=romp-ibm - ;; - s390 | s390-*) - basic_machine=s390-ibm - ;; - s390x | s390x-*) - basic_machine=s390x-ibm - ;; - sa29200) - basic_machine=a29k-amd - os=-udi - ;; - sb1) - basic_machine=mipsisa64sb1-unknown - ;; - sb1el) - basic_machine=mipsisa64sb1el-unknown - ;; - sde) - basic_machine=mipsisa32-sde - os=-elf - ;; - sei) - basic_machine=mips-sei - os=-seiux - ;; - sequent) - basic_machine=i386-sequent - ;; - sh) - basic_machine=sh-hitachi - os=-hms - ;; - sh5el) - basic_machine=sh5le-unknown - ;; - sh64) - basic_machine=sh64-unknown - ;; - sparclite-wrs | simso-wrs) - basic_machine=sparclite-wrs - os=-vxworks - ;; - sps7) - basic_machine=m68k-bull - os=-sysv2 - ;; - spur) - basic_machine=spur-unknown - ;; - st2000) - basic_machine=m68k-tandem - ;; - stratus) - basic_machine=i860-stratus - os=-sysv4 - ;; - strongarm-* | thumb-*) - basic_machine=arm-`echo $basic_machine | sed 's/^[^-]*-//'` - ;; - sun2) - basic_machine=m68000-sun - ;; - sun2os3) - basic_machine=m68000-sun - os=-sunos3 - ;; - sun2os4) - basic_machine=m68000-sun - os=-sunos4 - ;; - sun3os3) - basic_machine=m68k-sun - os=-sunos3 - ;; - sun3os4) - basic_machine=m68k-sun - os=-sunos4 - ;; - sun4os3) - basic_machine=sparc-sun - os=-sunos3 - ;; - sun4os4) - basic_machine=sparc-sun - os=-sunos4 - ;; - sun4sol2) - basic_machine=sparc-sun - os=-solaris2 - ;; - sun3 | sun3-*) - basic_machine=m68k-sun - ;; - sun4) - basic_machine=sparc-sun - ;; - sun386 | sun386i | roadrunner) - basic_machine=i386-sun - ;; - sv1) - basic_machine=sv1-cray - os=-unicos - ;; - symmetry) - basic_machine=i386-sequent - os=-dynix - ;; - t3e) - basic_machine=alphaev5-cray - os=-unicos - ;; - t90) - basic_machine=t90-cray - os=-unicos - ;; - tile*) - basic_machine=$basic_machine-unknown - os=-linux-gnu - ;; - tx39) - basic_machine=mipstx39-unknown - ;; - tx39el) - basic_machine=mipstx39el-unknown - ;; - toad1) - basic_machine=pdp10-xkl - os=-tops20 - ;; - tower | tower-32) - basic_machine=m68k-ncr - ;; - tpf) - basic_machine=s390x-ibm - os=-tpf - ;; - udi29k) - basic_machine=a29k-amd - os=-udi - ;; - ultra3) - basic_machine=a29k-nyu - os=-sym1 - ;; - v810 | necv810) - basic_machine=v810-nec - os=-none - ;; - vaxv) - basic_machine=vax-dec - os=-sysv - ;; - vms) - basic_machine=vax-dec - os=-vms - ;; - vpp*|vx|vx-*) - basic_machine=f301-fujitsu - ;; - vxworks960) - basic_machine=i960-wrs - os=-vxworks - ;; - vxworks68) - basic_machine=m68k-wrs - os=-vxworks - ;; - vxworks29k) - basic_machine=a29k-wrs - os=-vxworks - ;; - w65*) - basic_machine=w65-wdc - os=-none - ;; - w89k-*) - basic_machine=hppa1.1-winbond - os=-proelf - ;; - xbox) - basic_machine=i686-pc - os=-mingw32 - ;; - xps | xps100) - basic_machine=xps100-honeywell - ;; - xscale-* | xscalee[bl]-*) - basic_machine=`echo $basic_machine | sed 's/^xscale/arm/'` - ;; - ymp) - basic_machine=ymp-cray - os=-unicos - ;; - z8k-*-coff) - basic_machine=z8k-unknown - os=-sim - ;; - z80-*-coff) - basic_machine=z80-unknown - os=-sim - ;; - none) - basic_machine=none-none - os=-none - ;; - -# Here we handle the default manufacturer of certain CPU types. It is in -# some cases the only manufacturer, in others, it is the most popular. - w89k) - basic_machine=hppa1.1-winbond - ;; - op50n) - basic_machine=hppa1.1-oki - ;; - op60c) - basic_machine=hppa1.1-oki - ;; - romp) - basic_machine=romp-ibm - ;; - mmix) - basic_machine=mmix-knuth - ;; - rs6000) - basic_machine=rs6000-ibm - ;; - vax) - basic_machine=vax-dec - ;; - pdp10) - # there are many clones, so DEC is not a safe bet - basic_machine=pdp10-unknown - ;; - pdp11) - basic_machine=pdp11-dec - ;; - we32k) - basic_machine=we32k-att - ;; - sh[1234] | sh[24]a | sh[24]aeb | sh[34]eb | sh[1234]le | sh[23]ele) - basic_machine=sh-unknown - ;; - sparc | sparcv8 | sparcv9 | sparcv9b | sparcv9v) - basic_machine=sparc-sun - ;; - cydra) - basic_machine=cydra-cydrome - ;; - orion) - basic_machine=orion-highlevel - ;; - orion105) - basic_machine=clipper-highlevel - ;; - mac | mpw | mac-mpw) - basic_machine=m68k-apple - ;; - pmac | pmac-mpw) - basic_machine=powerpc-apple - ;; - *-unknown) - # Make sure to match an already-canonicalized machine name. - ;; - *) - echo Invalid configuration \`$1\': machine \`$basic_machine\' not recognized 1>&2 - exit 1 - ;; -esac - -# Here we canonicalize certain aliases for manufacturers. -case $basic_machine in - *-digital*) - basic_machine=`echo $basic_machine | sed 's/digital.*/dec/'` - ;; - *-commodore*) - basic_machine=`echo $basic_machine | sed 's/commodore.*/cbm/'` - ;; - *) - ;; -esac - -# Decode manufacturer-specific aliases for certain operating systems. - -if [ x"$os" != x"" ] -then -case $os in - # First match some system type aliases - # that might get confused with valid system types. - # -solaris* is a basic system type, with this one exception. - -auroraux) - os=-auroraux - ;; - -solaris1 | -solaris1.*) - os=`echo $os | sed -e 's|solaris1|sunos4|'` - ;; - -solaris) - os=-solaris2 - ;; - -svr4*) - os=-sysv4 - ;; - -unixware*) - os=-sysv4.2uw - ;; - -gnu/linux*) - os=`echo $os | sed -e 's|gnu/linux|linux-gnu|'` - ;; - # First accept the basic system types. - # The portable systems comes first. - # Each alternative MUST END IN A *, to match a version number. - # -sysv* is not here because it comes later, after sysvr4. - -gnu* | -bsd* | -mach* | -minix* | -genix* | -ultrix* | -irix* \ - | -*vms* | -sco* | -esix* | -isc* | -aix* | -cnk* | -sunos | -sunos[34]*\ - | -hpux* | -unos* | -osf* | -luna* | -dgux* | -auroraux* | -solaris* \ - | -sym* | -kopensolaris* | -plan9* \ - | -amigaos* | -amigados* | -msdos* | -newsos* | -unicos* | -aof* \ - | -aos* | -aros* \ - | -nindy* | -vxsim* | -vxworks* | -ebmon* | -hms* | -mvs* \ - | -clix* | -riscos* | -uniplus* | -iris* | -rtu* | -xenix* \ - | -hiux* | -386bsd* | -knetbsd* | -mirbsd* | -netbsd* \ - | -bitrig* | -openbsd* | -solidbsd* \ - | -ekkobsd* | -kfreebsd* | -freebsd* | -riscix* | -lynxos* \ - | -bosx* | -nextstep* | -cxux* | -aout* | -elf* | -oabi* \ - | -ptx* | -coff* | -ecoff* | -winnt* | -domain* | -vsta* \ - | -udi* | -eabi* | -lites* | -ieee* | -go32* | -aux* \ - | -chorusos* | -chorusrdb* | -cegcc* \ - | -cygwin* | -msys* | -pe* | -psos* | -moss* | -proelf* | -rtems* \ - | -mingw32* | -mingw64* | -linux-gnu* | -linux-android* \ - | -linux-newlib* | -linux-musl* | -linux-uclibc* \ - | -uxpv* | -beos* | -mpeix* | -udk* | -moxiebox* \ - | -interix* | -uwin* | -mks* | -rhapsody* | -darwin* | -opened* \ - | -openstep* | -oskit* | -conix* | -pw32* | -nonstopux* \ - | -storm-chaos* | -tops10* | -tenex* | -tops20* | -its* \ - | -os2* | -vos* | -palmos* | -uclinux* | -nucleus* \ - | -morphos* | -superux* | -rtmk* | -rtmk-nova* | -windiss* \ - | -powermax* | -dnix* | -nx6 | -nx7 | -sei* | -dragonfly* \ - | -skyos* | -haiku* | -rdos* | -toppers* | -drops* | -es* | -tirtos*) - # Remember, each alternative MUST END IN *, to match a version number. - ;; - -qnx*) - case $basic_machine in - x86-* | i*86-*) - ;; - *) - os=-nto$os - ;; - esac - ;; - -nto-qnx*) - ;; - -nto*) - os=`echo $os | sed -e 's|nto|nto-qnx|'` - ;; - -sim | -es1800* | -hms* | -xray | -os68k* | -none* | -v88r* \ - | -windows* | -osx | -abug | -netware* | -os9* | -beos* | -haiku* \ - | -macos* | -mpw* | -magic* | -mmixware* | -mon960* | -lnews*) - ;; - -mac*) - os=`echo $os | sed -e 's|mac|macos|'` - ;; - -linux-dietlibc) - os=-linux-dietlibc - ;; - -linux*) - os=`echo $os | sed -e 's|linux|linux-gnu|'` - ;; - -sunos5*) - os=`echo $os | sed -e 's|sunos5|solaris2|'` - ;; - -sunos6*) - os=`echo $os | sed -e 's|sunos6|solaris3|'` - ;; - -opened*) - os=-openedition - ;; - -os400*) - os=-os400 - ;; - -wince*) - os=-wince - ;; - -osfrose*) - os=-osfrose - ;; - -osf*) - os=-osf - ;; - -utek*) - os=-bsd - ;; - -dynix*) - os=-bsd - ;; - -acis*) - os=-aos - ;; - -atheos*) - os=-atheos - ;; - -syllable*) - os=-syllable - ;; - -386bsd) - os=-bsd - ;; - -ctix* | -uts*) - os=-sysv - ;; - -nova*) - os=-rtmk-nova - ;; - -ns2 ) - os=-nextstep2 - ;; - -nsk*) - os=-nsk - ;; - # Preserve the version number of sinix5. - -sinix5.*) - os=`echo $os | sed -e 's|sinix|sysv|'` - ;; - -sinix*) - os=-sysv4 - ;; - -tpf*) - os=-tpf - ;; - -triton*) - os=-sysv3 - ;; - -oss*) - os=-sysv3 - ;; - -svr4) - os=-sysv4 - ;; - -svr3) - os=-sysv3 - ;; - -sysvr4) - os=-sysv4 - ;; - # This must come after -sysvr4. - -sysv*) - ;; - -ose*) - os=-ose - ;; - -es1800*) - os=-ose - ;; - -xenix) - os=-xenix - ;; - -*mint | -mint[0-9]* | -*MiNT | -MiNT[0-9]*) - os=-mint - ;; - -aros*) - os=-aros - ;; - -zvmoe) - os=-zvmoe - ;; - -dicos*) - os=-dicos - ;; - -nacl*) - ;; - -none) - ;; - *) - # Get rid of the `-' at the beginning of $os. - os=`echo $os | sed 's/[^-]*-//'` - echo Invalid configuration \`$1\': system \`$os\' not recognized 1>&2 - exit 1 - ;; -esac -else - -# Here we handle the default operating systems that come with various machines. -# The value should be what the vendor currently ships out the door with their -# machine or put another way, the most popular os provided with the machine. - -# Note that if you're going to try to match "-MANUFACTURER" here (say, -# "-sun"), then you have to tell the case statement up towards the top -# that MANUFACTURER isn't an operating system. Otherwise, code above -# will signal an error saying that MANUFACTURER isn't an operating -# system, and we'll never get to this point. - -case $basic_machine in - score-*) - os=-elf - ;; - spu-*) - os=-elf - ;; - *-acorn) - os=-riscix1.2 - ;; - arm*-rebel) - os=-linux - ;; - arm*-semi) - os=-aout - ;; - c4x-* | tic4x-*) - os=-coff - ;; - c8051-*) - os=-elf - ;; - hexagon-*) - os=-elf - ;; - tic54x-*) - os=-coff - ;; - tic55x-*) - os=-coff - ;; - tic6x-*) - os=-coff - ;; - # This must come before the *-dec entry. - pdp10-*) - os=-tops20 - ;; - pdp11-*) - os=-none - ;; - *-dec | vax-*) - os=-ultrix4.2 - ;; - m68*-apollo) - os=-domain - ;; - i386-sun) - os=-sunos4.0.2 - ;; - m68000-sun) - os=-sunos3 - ;; - m68*-cisco) - os=-aout - ;; - mep-*) - os=-elf - ;; - mips*-cisco) - os=-elf - ;; - mips*-*) - os=-elf - ;; - or32-*) - os=-coff - ;; - *-tti) # must be before sparc entry or we get the wrong os. - os=-sysv3 - ;; - sparc-* | *-sun) - os=-sunos4.1.1 - ;; - *-be) - os=-beos - ;; - *-haiku) - os=-haiku - ;; - *-ibm) - os=-aix - ;; - *-knuth) - os=-mmixware - ;; - *-wec) - os=-proelf - ;; - *-winbond) - os=-proelf - ;; - *-oki) - os=-proelf - ;; - *-hp) - os=-hpux - ;; - *-hitachi) - os=-hiux - ;; - i860-* | *-att | *-ncr | *-altos | *-motorola | *-convergent) - os=-sysv - ;; - *-cbm) - os=-amigaos - ;; - *-dg) - os=-dgux - ;; - *-dolphin) - os=-sysv3 - ;; - m68k-ccur) - os=-rtu - ;; - m88k-omron*) - os=-luna - ;; - *-next ) - os=-nextstep - ;; - *-sequent) - os=-ptx - ;; - *-crds) - os=-unos - ;; - *-ns) - os=-genix - ;; - i370-*) - os=-mvs - ;; - *-next) - os=-nextstep3 - ;; - *-gould) - os=-sysv - ;; - *-highlevel) - os=-bsd - ;; - *-encore) - os=-bsd - ;; - *-sgi) - os=-irix - ;; - *-siemens) - os=-sysv4 - ;; - *-masscomp) - os=-rtu - ;; - f30[01]-fujitsu | f700-fujitsu) - os=-uxpv - ;; - *-rom68k) - os=-coff - ;; - *-*bug) - os=-coff - ;; - *-apple) - os=-macos - ;; - *-atari*) - os=-mint - ;; - *) - os=-none - ;; -esac -fi - -# Here we handle the case where we know the os, and the CPU type, but not the -# manufacturer. We pick the logical manufacturer. -vendor=unknown -case $basic_machine in - *-unknown) - case $os in - -riscix*) - vendor=acorn - ;; - -sunos*) - vendor=sun - ;; - -cnk*|-aix*) - vendor=ibm - ;; - -beos*) - vendor=be - ;; - -hpux*) - vendor=hp - ;; - -mpeix*) - vendor=hp - ;; - -hiux*) - vendor=hitachi - ;; - -unos*) - vendor=crds - ;; - -dgux*) - vendor=dg - ;; - -luna*) - vendor=omron - ;; - -genix*) - vendor=ns - ;; - -mvs* | -opened*) - vendor=ibm - ;; - -os400*) - vendor=ibm - ;; - -ptx*) - vendor=sequent - ;; - -tpf*) - vendor=ibm - ;; - -vxsim* | -vxworks* | -windiss*) - vendor=wrs - ;; - -aux*) - vendor=apple - ;; - -hms*) - vendor=hitachi - ;; - -mpw* | -macos*) - vendor=apple - ;; - -*mint | -mint[0-9]* | -*MiNT | -MiNT[0-9]*) - vendor=atari - ;; - -vos*) - vendor=stratus - ;; - esac - basic_machine=`echo $basic_machine | sed "s/unknown/$vendor/"` - ;; -esac - -echo $basic_machine$os -exit - -# Local variables: -# eval: (add-hook 'write-file-hooks 'time-stamp) -# time-stamp-start: "timestamp='" -# time-stamp-format: "%:y-%02m-%02d" -# time-stamp-end: "'" -# End: diff --git a/libs/libdingaling/configure.ac b/libs/libdingaling/configure.ac deleted file mode 100755 index 0d7e832fa1f..00000000000 --- a/libs/libdingaling/configure.ac +++ /dev/null @@ -1,149 +0,0 @@ -# -*- Autoconf -*- -# Process this file with autoconf to produce a configure script. - - -AC_INIT(libdingaling, 0.1) -AC_CONFIG_AUX_DIR(build) -AM_INIT_AUTOMAKE -AC_CONFIG_SRCDIR([src]) -AC_CONFIG_HEADERS([src/config.h]) - -CFLAGS="$CFLAGS $CONFIGURE_CFLAGS" -CXXFLAGS="$CXXFLAGS $CONFIGURE_CXXFLAGS" -LDFLAGS="$LDFLAGS $CONFIGURE_LDFLAGS" - -#Set default language -AC_LANG_C -# Checks for programs. -AC_PROG_CC -AC_PROG_MAKE_SET -AC_PROG_LIBTOOL -AC_PROG_INSTALL - -#Check for compiler vendor -AX_COMPILER_VENDOR - -# Optimize -AC_ARG_ENABLE(optimization, -[AC_HELP_STRING([--enable-optimization],[Set if you want us to add max optimising compiler flags])],[enable_optimizer="$enableval"],[enable_optimizer="no"]) - -if test "${enable_optimizer}" = "yes" ; then - AC_DEFINE([OPTIMZER],[],[Enable Optimization.]) - AX_CC_MAXOPT -fi - -# Enable debugging -AC_ARG_ENABLE(debug, -[AC_HELP_STRING([--enable-debug],[build with debug information])],[enable_debug="$enable_debug"],[enable_debug="yes"]) - -if test "${enable_debug}" = "yes"; then - AC_DEFINE([DEBUG],[],[Enable extra debugging.]) - AX_CFLAGS_WARN_ALL_ANSI -fi - -AM_CONDITIONAL([WANT_DEBUG],[test "${enable_debug}" = "yes"]) - - -case "$host" in - *-solaris2*) - if test "x${ax_cv_c_compiler_vendor}" = "xsun" ; then - SOLINK="-Bdynamic -dy -G" - new_AM_CFLAGS="-KPIC -DPIC" - new_AM_LDFLAGS="-R${prefix}/lib" - FUNC_DEF=__func__ - IN_LINE="" - elif test "x${ax_cv_c_compiler_vendor}" = "xgnu" ; then - SOLINK="-Bdynamic -dy -G" - new_AM_CFLAGS="-fPIC" - new_AM_LDFLAGS="" - IN_LINE=inline - fi - ;; - *-darwin*) - if test "x${ax_cv_c_compiler_vendor}"="xgnu" ; then - SOLINK="-dynamic -bundle -force-flat-namespace" - new_AM_CFLAGS="-DMACOSX" - new_AM_LDFLAGS="" - fi - IN_LINE=inline - ;; - x86_64-*-linux-gnu) - if test "x${ax_cv_c_compiler_vendor}" = "xsun" ; then - SOLINK="-Bdynamic -dy -G" - new_AM_CFLAGS="-KPIC -DPIC" - new_AM_LDFLAGS="-R${prefix}/lib" - FUNC_DEF=__func__ - elif test "x${ax_cv_c_compiler_vendor}"="xgnu" ; then - SOLINK="-shared -Xlinker -x" - new_AM_CFLAGS="-fPIC" - new_AM_LDFLAGS="" - fi - IN_LINE=inline - ;; - i*6-*-linux-gnu) - if test "x${ax_cv_c_compiler_vendor}" = "xsun" ; then - SOLINK="-Bdynamic -dy -G" - new_AM_CFLAGS="-KPIC -DPIC" - new_AM_LDFLAGS="-R${prefix}/lib" - FUNC_DEF=__func__ - elif test "x${ax_cv_c_compiler_vendor}"="xgnu" ; then - SOLINK="-shared -Xlinker -x" - new_AM_CFLAGS="-fpic" - new_AM_LDFLAGS="" - fi - IN_LINE=inline - ;; - *) - if test "x${ax_cv_c_compiler_vendor}" = "xsun" ; then - SOLINK="-Bdynamic -dy -G" - new_AM_CFLAGS="-KPIC -DPIC" - new_AM_LDFLAGS="-R${prefix}/lib" - FUNC_DEF=__func__ - elif test "x${ax_cv_c_compiler_vendor}"="xgnu" ; then - SOLINK="-shared -Xlinker -x" - new_AM_CFLAGS="-fPIC" - new_AM_LDFLAGS="" - fi - IN_LINE=inline -esac - -# Enable 64 bit build -AC_ARG_ENABLE(64, -[AC_HELP_STRING([--enable-64],[build with 64 bit support])],[enable_64="$enable_64"],[enable_64="no"]) - -if test "x${ax_cv_c_compiler_vendor}" = "xsun" ; then - if test "${enable_64}" = "yes"; then - new_AM_CFLAGS="$new_AM_CFLAGS -m64" - fi -fi - -AC_SUBST(new_AM_CFLAGS) -AC_SUBST(new_AM_LDFLAGS) -AC_SUBST(SOLINK) -AC_DEFINE_UNQUOTED([__inline__],[$IN_LINE],[sunpro is bad at inline]) - -# Checks for header files. -AC_HEADER_DIRENT -AC_HEADER_STDC -#AC_CHECK_HEADERS([arpa/inet.h fcntl.h netdb.h netinet/in.h stdlib.h string.h sys/ioctl.h sys/socket.h sys/time.h unistd.h]) - -# Checks for typedefs, structures, and compiler characteristics. -AC_C_CONST -AC_C_INLINE -AC_TYPE_SIZE_T -AC_HEADER_TIME -AC_STRUCT_TM - -# Checks for library functions. -AC_PROG_GCC_TRADITIONAL -AC_TYPE_SIGNAL -AC_FUNC_STRFTIME -#AC_CHECK_FUNCS([gethostname gettimeofday localtime_r memmove memset socket strcasecmp strchr strdup strncasecmp strstr]) - -AC_C_BIGENDIAN(AC_DEFINE([__BYTE_ORDER],__BIG_ENDIAN,[Big Endian]),AC_DEFINE([__BYTE_ORDER],__LITTLE_ENDIAN,[Little Endian])) -AC_DEFINE([__LITTLE_ENDIAN],1234,[for the places where it is not defined]) -AC_DEFINE([__BIG_ENDIAN],4321,[for the places where it is not defined]) - -AC_CONFIG_FILES([Makefile]) - -AC_OUTPUT diff --git a/libs/libdingaling/configure.gnu b/libs/libdingaling/configure.gnu deleted file mode 100644 index 53c204581f4..00000000000 --- a/libs/libdingaling/configure.gnu +++ /dev/null @@ -1,4 +0,0 @@ -#! /bin/sh -srcpath=$(dirname $0 2>/dev/null ) || srcpath="." -$srcpath/configure "$@" --disable-shared - diff --git a/libs/libdingaling/depcomp b/libs/libdingaling/depcomp deleted file mode 100644 index 04701da536f..00000000000 --- a/libs/libdingaling/depcomp +++ /dev/null @@ -1,530 +0,0 @@ -#! /bin/sh -# depcomp - compile a program generating dependencies as side-effects - -scriptversion=2005-07-09.11 - -# Copyright (C) 1999, 2000, 2003, 2004, 2005 Free Software Foundation, Inc. - -# 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, 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., 51 Franklin Street, Fifth Floor, Boston, MA -# 02110-1301, USA. - -# As a special exception to the GNU General Public License, if you -# distribute this file as part of a program that contains a -# configuration script generated by Autoconf, you may include it under -# the same distribution terms that you use for the rest of that program. - -# Originally written by Alexandre Oliva . - -case $1 in - '') - echo "$0: No command. Try \`$0 --help' for more information." 1>&2 - exit 1; - ;; - -h | --h*) - cat <<\EOF -Usage: depcomp [--help] [--version] PROGRAM [ARGS] - -Run PROGRAMS ARGS to compile a file, generating dependencies -as side-effects. - -Environment variables: - depmode Dependency tracking mode. - source Source file read by `PROGRAMS ARGS'. - object Object file output by `PROGRAMS ARGS'. - DEPDIR directory where to store dependencies. - depfile Dependency file to output. - tmpdepfile Temporary file to use when outputing dependencies. - libtool Whether libtool is used (yes/no). - -Report bugs to . -EOF - exit $? - ;; - -v | --v*) - echo "depcomp $scriptversion" - exit $? - ;; -esac - -if test -z "$depmode" || test -z "$source" || test -z "$object"; then - echo "depcomp: Variables source, object and depmode must be set" 1>&2 - exit 1 -fi - -# Dependencies for sub/bar.o or sub/bar.obj go into sub/.deps/bar.Po. -depfile=${depfile-`echo "$object" | - sed 's|[^\\/]*$|'${DEPDIR-.deps}'/&|;s|\.\([^.]*\)$|.P\1|;s|Pobj$|Po|'`} -tmpdepfile=${tmpdepfile-`echo "$depfile" | sed 's/\.\([^.]*\)$/.T\1/'`} - -rm -f "$tmpdepfile" - -# Some modes work just like other modes, but use different flags. We -# parameterize here, but still list the modes in the big case below, -# to make depend.m4 easier to write. Note that we *cannot* use a case -# here, because this file can only contain one case statement. -if test "$depmode" = hp; then - # HP compiler uses -M and no extra arg. - gccflag=-M - depmode=gcc -fi - -if test "$depmode" = dashXmstdout; then - # This is just like dashmstdout with a different argument. - dashmflag=-xM - depmode=dashmstdout -fi - -case "$depmode" in -gcc3) -## gcc 3 implements dependency tracking that does exactly what -## we want. Yay! Note: for some reason libtool 1.4 doesn't like -## it if -MD -MP comes after the -MF stuff. Hmm. - "$@" -MT "$object" -MD -MP -MF "$tmpdepfile" - stat=$? - if test $stat -eq 0; then : - else - rm -f "$tmpdepfile" - exit $stat - fi - mv "$tmpdepfile" "$depfile" - ;; - -gcc) -## There are various ways to get dependency output from gcc. Here's -## why we pick this rather obscure method: -## - Don't want to use -MD because we'd like the dependencies to end -## up in a subdir. Having to rename by hand is ugly. -## (We might end up doing this anyway to support other compilers.) -## - The DEPENDENCIES_OUTPUT environment variable makes gcc act like -## -MM, not -M (despite what the docs say). -## - Using -M directly means running the compiler twice (even worse -## than renaming). - if test -z "$gccflag"; then - gccflag=-MD, - fi - "$@" -Wp,"$gccflag$tmpdepfile" - stat=$? - if test $stat -eq 0; then : - else - rm -f "$tmpdepfile" - exit $stat - fi - rm -f "$depfile" - echo "$object : \\" > "$depfile" - alpha=ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz -## The second -e expression handles DOS-style file names with drive letters. - sed -e 's/^[^:]*: / /' \ - -e 's/^['$alpha']:\/[^:]*: / /' < "$tmpdepfile" >> "$depfile" -## This next piece of magic avoids the `deleted header file' problem. -## The problem is that when a header file which appears in a .P file -## is deleted, the dependency causes make to die (because there is -## typically no way to rebuild the header). We avoid this by adding -## dummy dependencies for each header file. Too bad gcc doesn't do -## this for us directly. - tr ' ' ' -' < "$tmpdepfile" | -## Some versions of gcc put a space before the `:'. On the theory -## that the space means something, we add a space to the output as -## well. -## Some versions of the HPUX 10.20 sed can't process this invocation -## correctly. Breaking it into two sed invocations is a workaround. - sed -e 's/^\\$//' -e '/^$/d' -e '/:$/d' | sed -e 's/$/ :/' >> "$depfile" - rm -f "$tmpdepfile" - ;; - -hp) - # This case exists only to let depend.m4 do its work. It works by - # looking at the text of this script. This case will never be run, - # since it is checked for above. - exit 1 - ;; - -sgi) - if test "$libtool" = yes; then - "$@" "-Wp,-MDupdate,$tmpdepfile" - else - "$@" -MDupdate "$tmpdepfile" - fi - stat=$? - if test $stat -eq 0; then : - else - rm -f "$tmpdepfile" - exit $stat - fi - rm -f "$depfile" - - if test -f "$tmpdepfile"; then # yes, the sourcefile depend on other files - echo "$object : \\" > "$depfile" - - # Clip off the initial element (the dependent). Don't try to be - # clever and replace this with sed code, as IRIX sed won't handle - # lines with more than a fixed number of characters (4096 in - # IRIX 6.2 sed, 8192 in IRIX 6.5). We also remove comment lines; - # the IRIX cc adds comments like `#:fec' to the end of the - # dependency line. - tr ' ' ' -' < "$tmpdepfile" \ - | sed -e 's/^.*\.o://' -e 's/#.*$//' -e '/^$/ d' | \ - tr ' -' ' ' >> $depfile - echo >> $depfile - - # The second pass generates a dummy entry for each header file. - tr ' ' ' -' < "$tmpdepfile" \ - | sed -e 's/^.*\.o://' -e 's/#.*$//' -e '/^$/ d' -e 's/$/:/' \ - >> $depfile - else - # The sourcefile does not contain any dependencies, so just - # store a dummy comment line, to avoid errors with the Makefile - # "include basename.Plo" scheme. - echo "#dummy" > "$depfile" - fi - rm -f "$tmpdepfile" - ;; - -aix) - # The C for AIX Compiler uses -M and outputs the dependencies - # in a .u file. In older versions, this file always lives in the - # current directory. Also, the AIX compiler puts `$object:' at the - # start of each line; $object doesn't have directory information. - # Version 6 uses the directory in both cases. - stripped=`echo "$object" | sed 's/\(.*\)\..*$/\1/'` - tmpdepfile="$stripped.u" - if test "$libtool" = yes; then - "$@" -Wc,-M - else - "$@" -M - fi - stat=$? - - if test -f "$tmpdepfile"; then : - else - stripped=`echo "$stripped" | sed 's,^.*/,,'` - tmpdepfile="$stripped.u" - fi - - if test $stat -eq 0; then : - else - rm -f "$tmpdepfile" - exit $stat - fi - - if test -f "$tmpdepfile"; then - outname="$stripped.o" - # Each line is of the form `foo.o: dependent.h'. - # Do two passes, one to just change these to - # `$object: dependent.h' and one to simply `dependent.h:'. - sed -e "s,^$outname:,$object :," < "$tmpdepfile" > "$depfile" - sed -e "s,^$outname: \(.*\)$,\1:," < "$tmpdepfile" >> "$depfile" - else - # The sourcefile does not contain any dependencies, so just - # store a dummy comment line, to avoid errors with the Makefile - # "include basename.Plo" scheme. - echo "#dummy" > "$depfile" - fi - rm -f "$tmpdepfile" - ;; - -icc) - # Intel's C compiler understands `-MD -MF file'. However on - # icc -MD -MF foo.d -c -o sub/foo.o sub/foo.c - # ICC 7.0 will fill foo.d with something like - # foo.o: sub/foo.c - # foo.o: sub/foo.h - # which is wrong. We want: - # sub/foo.o: sub/foo.c - # sub/foo.o: sub/foo.h - # sub/foo.c: - # sub/foo.h: - # ICC 7.1 will output - # foo.o: sub/foo.c sub/foo.h - # and will wrap long lines using \ : - # foo.o: sub/foo.c ... \ - # sub/foo.h ... \ - # ... - - "$@" -MD -MF "$tmpdepfile" - stat=$? - if test $stat -eq 0; then : - else - rm -f "$tmpdepfile" - exit $stat - fi - rm -f "$depfile" - # Each line is of the form `foo.o: dependent.h', - # or `foo.o: dep1.h dep2.h \', or ` dep3.h dep4.h \'. - # Do two passes, one to just change these to - # `$object: dependent.h' and one to simply `dependent.h:'. - sed "s,^[^:]*:,$object :," < "$tmpdepfile" > "$depfile" - # Some versions of the HPUX 10.20 sed can't process this invocation - # correctly. Breaking it into two sed invocations is a workaround. - sed 's,^[^:]*: \(.*\)$,\1,;s/^\\$//;/^$/d;/:$/d' < "$tmpdepfile" | - sed -e 's/$/ :/' >> "$depfile" - rm -f "$tmpdepfile" - ;; - -tru64) - # The Tru64 compiler uses -MD to generate dependencies as a side - # effect. `cc -MD -o foo.o ...' puts the dependencies into `foo.o.d'. - # At least on Alpha/Redhat 6.1, Compaq CCC V6.2-504 seems to put - # dependencies in `foo.d' instead, so we check for that too. - # Subdirectories are respected. - dir=`echo "$object" | sed -e 's|/[^/]*$|/|'` - test "x$dir" = "x$object" && dir= - base=`echo "$object" | sed -e 's|^.*/||' -e 's/\.o$//' -e 's/\.lo$//'` - - if test "$libtool" = yes; then - # With Tru64 cc, shared objects can also be used to make a - # static library. This mecanism is used in libtool 1.4 series to - # handle both shared and static libraries in a single compilation. - # With libtool 1.4, dependencies were output in $dir.libs/$base.lo.d. - # - # With libtool 1.5 this exception was removed, and libtool now - # generates 2 separate objects for the 2 libraries. These two - # compilations output dependencies in in $dir.libs/$base.o.d and - # in $dir$base.o.d. We have to check for both files, because - # one of the two compilations can be disabled. We should prefer - # $dir$base.o.d over $dir.libs/$base.o.d because the latter is - # automatically cleaned when .libs/ is deleted, while ignoring - # the former would cause a distcleancheck panic. - tmpdepfile1=$dir.libs/$base.lo.d # libtool 1.4 - tmpdepfile2=$dir$base.o.d # libtool 1.5 - tmpdepfile3=$dir.libs/$base.o.d # libtool 1.5 - tmpdepfile4=$dir.libs/$base.d # Compaq CCC V6.2-504 - "$@" -Wc,-MD - else - tmpdepfile1=$dir$base.o.d - tmpdepfile2=$dir$base.d - tmpdepfile3=$dir$base.d - tmpdepfile4=$dir$base.d - "$@" -MD - fi - - stat=$? - if test $stat -eq 0; then : - else - rm -f "$tmpdepfile1" "$tmpdepfile2" "$tmpdepfile3" "$tmpdepfile4" - exit $stat - fi - - for tmpdepfile in "$tmpdepfile1" "$tmpdepfile2" "$tmpdepfile3" "$tmpdepfile4" - do - test -f "$tmpdepfile" && break - done - if test -f "$tmpdepfile"; then - sed -e "s,^.*\.[a-z]*:,$object:," < "$tmpdepfile" > "$depfile" - # That's a tab and a space in the []. - sed -e 's,^.*\.[a-z]*:[ ]*,,' -e 's,$,:,' < "$tmpdepfile" >> "$depfile" - else - echo "#dummy" > "$depfile" - fi - rm -f "$tmpdepfile" - ;; - -#nosideeffect) - # This comment above is used by automake to tell side-effect - # dependency tracking mechanisms from slower ones. - -dashmstdout) - # Important note: in order to support this mode, a compiler *must* - # always write the preprocessed file to stdout, regardless of -o. - "$@" || exit $? - - # Remove the call to Libtool. - if test "$libtool" = yes; then - while test $1 != '--mode=compile'; do - shift - done - shift - fi - - # Remove `-o $object'. - IFS=" " - for arg - do - case $arg in - -o) - shift - ;; - $object) - shift - ;; - *) - set fnord "$@" "$arg" - shift # fnord - shift # $arg - ;; - esac - done - - test -z "$dashmflag" && dashmflag=-M - # Require at least two characters before searching for `:' - # in the target name. This is to cope with DOS-style filenames: - # a dependency such as `c:/foo/bar' could be seen as target `c' otherwise. - "$@" $dashmflag | - sed 's:^[ ]*[^: ][^:][^:]*\:[ ]*:'"$object"'\: :' > "$tmpdepfile" - rm -f "$depfile" - cat < "$tmpdepfile" > "$depfile" - tr ' ' ' -' < "$tmpdepfile" | \ -## Some versions of the HPUX 10.20 sed can't process this invocation -## correctly. Breaking it into two sed invocations is a workaround. - sed -e 's/^\\$//' -e '/^$/d' -e '/:$/d' | sed -e 's/$/ :/' >> "$depfile" - rm -f "$tmpdepfile" - ;; - -dashXmstdout) - # This case only exists to satisfy depend.m4. It is never actually - # run, as this mode is specially recognized in the preamble. - exit 1 - ;; - -makedepend) - "$@" || exit $? - # Remove any Libtool call - if test "$libtool" = yes; then - while test $1 != '--mode=compile'; do - shift - done - shift - fi - # X makedepend - shift - cleared=no - for arg in "$@"; do - case $cleared in - no) - set ""; shift - cleared=yes ;; - esac - case "$arg" in - -D*|-I*) - set fnord "$@" "$arg"; shift ;; - # Strip any option that makedepend may not understand. Remove - # the object too, otherwise makedepend will parse it as a source file. - -*|$object) - ;; - *) - set fnord "$@" "$arg"; shift ;; - esac - done - obj_suffix="`echo $object | sed 's/^.*\././'`" - touch "$tmpdepfile" - ${MAKEDEPEND-makedepend} -o"$obj_suffix" -f"$tmpdepfile" "$@" - rm -f "$depfile" - cat < "$tmpdepfile" > "$depfile" - sed '1,2d' "$tmpdepfile" | tr ' ' ' -' | \ -## Some versions of the HPUX 10.20 sed can't process this invocation -## correctly. Breaking it into two sed invocations is a workaround. - sed -e 's/^\\$//' -e '/^$/d' -e '/:$/d' | sed -e 's/$/ :/' >> "$depfile" - rm -f "$tmpdepfile" "$tmpdepfile".bak - ;; - -cpp) - # Important note: in order to support this mode, a compiler *must* - # always write the preprocessed file to stdout. - "$@" || exit $? - - # Remove the call to Libtool. - if test "$libtool" = yes; then - while test $1 != '--mode=compile'; do - shift - done - shift - fi - - # Remove `-o $object'. - IFS=" " - for arg - do - case $arg in - -o) - shift - ;; - $object) - shift - ;; - *) - set fnord "$@" "$arg" - shift # fnord - shift # $arg - ;; - esac - done - - "$@" -E | - sed -n -e '/^# [0-9][0-9]* "\([^"]*\)".*/ s:: \1 \\:p' \ - -e '/^#line [0-9][0-9]* "\([^"]*\)".*/ s:: \1 \\:p' | - sed '$ s: \\$::' > "$tmpdepfile" - rm -f "$depfile" - echo "$object : \\" > "$depfile" - cat < "$tmpdepfile" >> "$depfile" - sed < "$tmpdepfile" '/^$/d;s/^ //;s/ \\$//;s/$/ :/' >> "$depfile" - rm -f "$tmpdepfile" - ;; - -msvisualcpp) - # Important note: in order to support this mode, a compiler *must* - # always write the preprocessed file to stdout, regardless of -o, - # because we must use -o when running libtool. - "$@" || exit $? - IFS=" " - for arg - do - case "$arg" in - "-Gm"|"/Gm"|"-Gi"|"/Gi"|"-ZI"|"/ZI") - set fnord "$@" - shift - shift - ;; - *) - set fnord "$@" "$arg" - shift - shift - ;; - esac - done - "$@" -E | - sed -n '/^#line [0-9][0-9]* "\([^"]*\)"/ s::echo "`cygpath -u \\"\1\\"`":p' | sort | uniq > "$tmpdepfile" - rm -f "$depfile" - echo "$object : \\" > "$depfile" - . "$tmpdepfile" | sed 's% %\\ %g' | sed -n '/^\(.*\)$/ s:: \1 \\:p' >> "$depfile" - echo " " >> "$depfile" - . "$tmpdepfile" | sed 's% %\\ %g' | sed -n '/^\(.*\)$/ s::\1\::p' >> "$depfile" - rm -f "$tmpdepfile" - ;; - -none) - exec "$@" - ;; - -*) - echo "Unknown depmode $depmode" 1>&2 - exit 1 - ;; -esac - -exit 0 - -# Local Variables: -# mode: shell-script -# sh-indentation: 2 -# eval: (add-hook 'write-file-hooks 'time-stamp) -# time-stamp-start: "scriptversion=" -# time-stamp-format: "%:y-%02m-%02d.%02H" -# time-stamp-end: "$" -# End: diff --git a/libs/libdingaling/doc b/libs/libdingaling/doc deleted file mode 100644 index ab09daa6274..00000000000 --- a/libs/libdingaling/doc +++ /dev/null @@ -1 +0,0 @@ -http://iksemel.jabberstudio.org/iksemel.html diff --git a/libs/libdingaling/docs/Doxygen.conf b/libs/libdingaling/docs/Doxygen.conf deleted file mode 100644 index 8b5886ff4f6..00000000000 --- a/libs/libdingaling/docs/Doxygen.conf +++ /dev/null @@ -1,264 +0,0 @@ -# Doxyfile 1.4.6 - -#--------------------------------------------------------------------------- -# Project related configuration options -#--------------------------------------------------------------------------- -PROJECT_NAME = LibDingaLing -PROJECT_NUMBER = -OUTPUT_DIRECTORY = . -CREATE_SUBDIRS = NO -OUTPUT_LANGUAGE = English -USE_WINDOWS_ENCODING = YES -BRIEF_MEMBER_DESC = YES -REPEAT_BRIEF = YES -ABBREVIATE_BRIEF = "The $name class" \ - "The $name widget" \ - "The $name file" \ - is \ - provides \ - specifies \ - contains \ - represents \ - a \ - an \ - the -ALWAYS_DETAILED_SEC = NO -INLINE_INHERITED_MEMB = NO -FULL_PATH_NAMES = NO -STRIP_FROM_PATH = -STRIP_FROM_INC_PATH = -SHORT_NAMES = NO -JAVADOC_AUTOBRIEF = NO -MULTILINE_CPP_IS_BRIEF = NO -DETAILS_AT_TOP = NO -INHERIT_DOCS = YES -SEPARATE_MEMBER_PAGES = NO -TAB_SIZE = 8 -ALIASES = -OPTIMIZE_OUTPUT_FOR_C = YES -OPTIMIZE_OUTPUT_JAVA = NO -DISTRIBUTE_GROUP_DOC = NO -SUBGROUPING = YES -IGNORE_PREFIX = ldl_ - -#--------------------------------------------------------------------------- -# Build related configuration options -#--------------------------------------------------------------------------- -EXTRACT_ALL = NO -EXTRACT_PRIVATE = NO -EXTRACT_STATIC = NO -EXTRACT_LOCAL_CLASSES = YES -EXTRACT_LOCAL_METHODS = NO -HIDE_UNDOC_MEMBERS = YES -HIDE_UNDOC_CLASSES = YES -HIDE_FRIEND_COMPOUNDS = NO -HIDE_IN_BODY_DOCS = NO -INTERNAL_DOCS = NO -CASE_SENSE_NAMES = NO -HIDE_SCOPE_NAMES = NO -SHOW_INCLUDE_FILES = YES -INLINE_INFO = YES -SORT_MEMBER_DOCS = YES -SORT_BRIEF_DOCS = NO -SORT_BY_SCOPE_NAME = NO -GENERATE_TODOLIST = YES -GENERATE_TESTLIST = YES -GENERATE_BUGLIST = YES -GENERATE_DEPRECATEDLIST= YES -ENABLED_SECTIONS = -MAX_INITIALIZER_LINES = 30 -SHOW_USED_FILES = YES -SHOW_DIRECTORIES = NO -FILE_VERSION_FILTER = -#--------------------------------------------------------------------------- -# configuration options related to warning and progress messages -#--------------------------------------------------------------------------- -QUIET = NO -WARNINGS = YES -WARN_IF_UNDOCUMENTED = YES -WARN_IF_DOC_ERROR = YES -WARN_NO_PARAMDOC = NO -WARN_FORMAT = "$file:$line: $text" -WARN_LOGFILE = -#--------------------------------------------------------------------------- -# configuration options related to the input files -#--------------------------------------------------------------------------- -INPUT = ../src -FILE_PATTERNS = *.c \ - *.cc \ - *.cxx \ - *.cpp \ - *.c++ \ - *.d \ - *.java \ - *.ii \ - *.ixx \ - *.ipp \ - *.i++ \ - *.inl \ - *.h \ - *.hh \ - *.hxx \ - *.hpp \ - *.h++ \ - *.idl \ - *.odl \ - *.cs \ - *.php \ - *.php3 \ - *.inc \ - *.m \ - *.mm \ - *.dox \ - *.py -RECURSIVE = NO -EXCLUDE = -EXCLUDE_SYMLINKS = NO -EXCLUDE_PATTERNS = -EXAMPLE_PATH = -EXAMPLE_PATTERNS = -EXAMPLE_RECURSIVE = NO -IMAGE_PATH = -INPUT_FILTER = -FILTER_PATTERNS = -FILTER_SOURCE_FILES = NO -#--------------------------------------------------------------------------- -# configuration options related to source browsing -#--------------------------------------------------------------------------- -SOURCE_BROWSER = NO -INLINE_SOURCES = YES -STRIP_CODE_COMMENTS = YES -REFERENCED_BY_RELATION = YES -REFERENCES_RELATION = YES -USE_HTAGS = YES -VERBATIM_HEADERS = NO -#--------------------------------------------------------------------------- -# configuration options related to the alphabetical class index -#--------------------------------------------------------------------------- -ALPHABETICAL_INDEX = YES -COLS_IN_ALPHA_INDEX = 1 -IGNORE_PREFIX = ldl_ -#--------------------------------------------------------------------------- -# configuration options related to the HTML output -#--------------------------------------------------------------------------- -GENERATE_HTML = YES -HTML_OUTPUT = html -HTML_FILE_EXTENSION = .html -HTML_HEADER = -HTML_FOOTER = -HTML_STYLESHEET = -HTML_ALIGN_MEMBERS = YES -GENERATE_HTMLHELP = NO -CHM_FILE = libDingaLing.chm -HHC_LOCATION = -GENERATE_CHI = YES -BINARY_TOC = NO -TOC_EXPAND = NO -DISABLE_INDEX = NO -ENUM_VALUES_PER_LINE = 4 -GENERATE_TREEVIEW = YES -TREEVIEW_WIDTH = 250 - -#--------------------------------------------------------------------------- -# configuration options related to the LaTeX output -#--------------------------------------------------------------------------- -GENERATE_LATEX = NO -LATEX_OUTPUT = latex -LATEX_CMD_NAME = latex -MAKEINDEX_CMD_NAME = makeindex -COMPACT_LATEX = NO -PAPER_TYPE = a4wide -EXTRA_PACKAGES = -LATEX_HEADER = -PDF_HYPERLINKS = NO -USE_PDFLATEX = NO -LATEX_BATCHMODE = NO -LATEX_HIDE_INDICES = NO -#--------------------------------------------------------------------------- -# configuration options related to the RTF output -#--------------------------------------------------------------------------- -GENERATE_RTF = NO -RTF_OUTPUT = rtf -COMPACT_RTF = NO -RTF_HYPERLINKS = NO -RTF_STYLESHEET_FILE = -RTF_EXTENSIONS_FILE = -#--------------------------------------------------------------------------- -# configuration options related to the man page output -#--------------------------------------------------------------------------- -GENERATE_MAN = YES -MAN_OUTPUT = man -MAN_EXTENSION = .3 -MAN_LINKS = NO -#--------------------------------------------------------------------------- -# configuration options related to the XML output -#--------------------------------------------------------------------------- -GENERATE_XML = YES -XML_OUTPUT = xml -XML_SCHEMA = -XML_DTD = -XML_PROGRAMLISTING = YES -#--------------------------------------------------------------------------- -# configuration options for the AutoGen Definitions output -#--------------------------------------------------------------------------- -GENERATE_AUTOGEN_DEF = NO -#--------------------------------------------------------------------------- -# configuration options related to the Perl module output -#--------------------------------------------------------------------------- -GENERATE_PERLMOD = YES -PERLMOD_LATEX = NO -PERLMOD_PRETTY = YES -PERLMOD_MAKEVAR_PREFIX = -#--------------------------------------------------------------------------- -# Configuration options related to the preprocessor -#--------------------------------------------------------------------------- -ENABLE_PREPROCESSING = YES -MACRO_EXPANSION = YES -EXPAND_ONLY_PREDEF = NO -SEARCH_INCLUDES = NO -INCLUDE_PATH = -INCLUDE_FILE_PATTERNS = *.h -PREDEFINED = SWITCH_DECLARE(x)=x \ - APR_DECLARE(x)=x \ - DoxyDefine(x)=x - -EXPAND_AS_DEFINED = NO -SKIP_FUNCTION_MACROS = NO -#--------------------------------------------------------------------------- -# Configuration::additions related to external references -#--------------------------------------------------------------------------- -TAGFILES = -GENERATE_TAGFILE = -ALLEXTERNALS = NO -EXTERNAL_GROUPS = YES -PERL_PATH = /usr/bin/perl -#--------------------------------------------------------------------------- -# Configuration options related to the dot tool -#--------------------------------------------------------------------------- -CLASS_DIAGRAMS = YES -HIDE_UNDOC_RELATIONS = YES -HAVE_DOT = YES -CLASS_GRAPH = YES -COLLABORATION_GRAPH = YES -GROUP_GRAPHS = YES -UML_LOOK = YES -TEMPLATE_RELATIONS = YES -INCLUDE_GRAPH = YES -INCLUDED_BY_GRAPH = YES -CALL_GRAPH = YES -GRAPHICAL_HIERARCHY = YES -DIRECTORY_GRAPH = YES -DOT_IMAGE_FORMAT = jpg -DOT_PATH = -DOTFILE_DIRS = -MAX_DOT_GRAPH_WIDTH = 1024 -MAX_DOT_GRAPH_HEIGHT = 1024 -MAX_DOT_GRAPH_DEPTH = 1000 -DOT_TRANSPARENT = NO -DOT_MULTI_TARGETS = NO -GENERATE_LEGEND = YES -DOT_CLEANUP = YES -#--------------------------------------------------------------------------- -# Configuration::additions related to the search engine -#--------------------------------------------------------------------------- -SEARCHENGINE = NO diff --git a/libs/libdingaling/docs/docs.vcproj b/libs/libdingaling/docs/docs.vcproj deleted file mode 100644 index be9173ec071..00000000000 --- a/libs/libdingaling/docs/docs.vcproj +++ /dev/null @@ -1,178 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/libs/libdingaling/install-sh b/libs/libdingaling/install-sh deleted file mode 100644 index 4d4a9519eaf..00000000000 --- a/libs/libdingaling/install-sh +++ /dev/null @@ -1,323 +0,0 @@ -#!/bin/sh -# install - install a program, script, or datafile - -scriptversion=2005-05-14.22 - -# This originates from X11R5 (mit/util/scripts/install.sh), which was -# later released in X11R6 (xc/config/util/install.sh) with the -# following copyright and license. -# -# Copyright (C) 1994 X Consortium -# -# Permission is hereby granted, free of charge, to any person obtaining a copy -# of this software and associated documentation files (the "Software"), to -# deal in the Software without restriction, including without limitation the -# rights to use, copy, modify, merge, publish, distribute, sublicense, and/or -# sell copies of the Software, and to permit persons to whom the Software is -# furnished to do so, subject to the following conditions: -# -# The above copyright notice and this permission notice shall be included in -# all copies or substantial portions of the Software. -# -# THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR -# IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, -# FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE -# X CONSORTIUM BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN -# AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNEC- -# TION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. -# -# Except as contained in this notice, the name of the X Consortium shall not -# be used in advertising or otherwise to promote the sale, use or other deal- -# ings in this Software without prior written authorization from the X Consor- -# tium. -# -# -# FSF changes to this file are in the public domain. -# -# Calling this script install-sh is preferred over install.sh, to prevent -# `make' implicit rules from creating a file called install from it -# when there is no Makefile. -# -# This script is compatible with the BSD install script, but was written -# from scratch. It can only install one file at a time, a restriction -# shared with many OS's install programs. - -# set DOITPROG to echo to test this script - -# Don't use :- since 4.3BSD and earlier shells don't like it. -doit="${DOITPROG-}" - -# put in absolute paths if you don't have them in your path; or use env. vars. - -mvprog="${MVPROG-mv}" -cpprog="${CPPROG-cp}" -chmodprog="${CHMODPROG-chmod}" -chownprog="${CHOWNPROG-chown}" -chgrpprog="${CHGRPPROG-chgrp}" -stripprog="${STRIPPROG-strip}" -rmprog="${RMPROG-rm}" -mkdirprog="${MKDIRPROG-mkdir}" - -chmodcmd="$chmodprog 0755" -chowncmd= -chgrpcmd= -stripcmd= -rmcmd="$rmprog -f" -mvcmd="$mvprog" -src= -dst= -dir_arg= -dstarg= -no_target_directory= - -usage="Usage: $0 [OPTION]... [-T] SRCFILE DSTFILE - or: $0 [OPTION]... SRCFILES... DIRECTORY - or: $0 [OPTION]... -t DIRECTORY SRCFILES... - or: $0 [OPTION]... -d DIRECTORIES... - -In the 1st form, copy SRCFILE to DSTFILE. -In the 2nd and 3rd, copy all SRCFILES to DIRECTORY. -In the 4th, create DIRECTORIES. - -Options: --c (ignored) --d create directories instead of installing files. --g GROUP $chgrpprog installed files to GROUP. --m MODE $chmodprog installed files to MODE. --o USER $chownprog installed files to USER. --s $stripprog installed files. --t DIRECTORY install into DIRECTORY. --T report an error if DSTFILE is a directory. ---help display this help and exit. ---version display version info and exit. - -Environment variables override the default commands: - CHGRPPROG CHMODPROG CHOWNPROG CPPROG MKDIRPROG MVPROG RMPROG STRIPPROG -" - -while test -n "$1"; do - case $1 in - -c) shift - continue;; - - -d) dir_arg=true - shift - continue;; - - -g) chgrpcmd="$chgrpprog $2" - shift - shift - continue;; - - --help) echo "$usage"; exit $?;; - - -m) chmodcmd="$chmodprog $2" - shift - shift - continue;; - - -o) chowncmd="$chownprog $2" - shift - shift - continue;; - - -s) stripcmd=$stripprog - shift - continue;; - - -t) dstarg=$2 - shift - shift - continue;; - - -T) no_target_directory=true - shift - continue;; - - --version) echo "$0 $scriptversion"; exit $?;; - - *) # When -d is used, all remaining arguments are directories to create. - # When -t is used, the destination is already specified. - test -n "$dir_arg$dstarg" && break - # Otherwise, the last argument is the destination. Remove it from $@. - for arg - do - if test -n "$dstarg"; then - # $@ is not empty: it contains at least $arg. - set fnord "$@" "$dstarg" - shift # fnord - fi - shift # arg - dstarg=$arg - done - break;; - esac -done - -if test -z "$1"; then - if test -z "$dir_arg"; then - echo "$0: no input file specified." >&2 - exit 1 - fi - # It's OK to call `install-sh -d' without argument. - # This can happen when creating conditional directories. - exit 0 -fi - -for src -do - # Protect names starting with `-'. - case $src in - -*) src=./$src ;; - esac - - if test -n "$dir_arg"; then - dst=$src - src= - - if test -d "$dst"; then - mkdircmd=: - chmodcmd= - else - mkdircmd=$mkdirprog - fi - else - # Waiting for this to be detected by the "$cpprog $src $dsttmp" command - # might cause directories to be created, which would be especially bad - # if $src (and thus $dsttmp) contains '*'. - if test ! -f "$src" && test ! -d "$src"; then - echo "$0: $src does not exist." >&2 - exit 1 - fi - - if test -z "$dstarg"; then - echo "$0: no destination specified." >&2 - exit 1 - fi - - dst=$dstarg - # Protect names starting with `-'. - case $dst in - -*) dst=./$dst ;; - esac - - # If destination is a directory, append the input filename; won't work - # if double slashes aren't ignored. - if test -d "$dst"; then - if test -n "$no_target_directory"; then - echo "$0: $dstarg: Is a directory" >&2 - exit 1 - fi - dst=$dst/`basename "$src"` - fi - fi - - # This sed command emulates the dirname command. - dstdir=`echo "$dst" | sed -e 's,/*$,,;s,[^/]*$,,;s,/*$,,;s,^$,.,'` - - # Make sure that the destination directory exists. - - # Skip lots of stat calls in the usual case. - if test ! -d "$dstdir"; then - defaultIFS=' - ' - IFS="${IFS-$defaultIFS}" - - oIFS=$IFS - # Some sh's can't handle IFS=/ for some reason. - IFS='%' - set x `echo "$dstdir" | sed -e 's@/@%@g' -e 's@^%@/@'` - shift - IFS=$oIFS - - pathcomp= - - while test $# -ne 0 ; do - pathcomp=$pathcomp$1 - shift - if test ! -d "$pathcomp"; then - $mkdirprog "$pathcomp" - # mkdir can fail with a `File exist' error in case several - # install-sh are creating the directory concurrently. This - # is OK. - test -d "$pathcomp" || exit - fi - pathcomp=$pathcomp/ - done - fi - - if test -n "$dir_arg"; then - $doit $mkdircmd "$dst" \ - && { test -z "$chowncmd" || $doit $chowncmd "$dst"; } \ - && { test -z "$chgrpcmd" || $doit $chgrpcmd "$dst"; } \ - && { test -z "$stripcmd" || $doit $stripcmd "$dst"; } \ - && { test -z "$chmodcmd" || $doit $chmodcmd "$dst"; } - - else - dstfile=`basename "$dst"` - - # Make a couple of temp file names in the proper directory. - dsttmp=$dstdir/_inst.$$_ - rmtmp=$dstdir/_rm.$$_ - - # Trap to clean up those temp files at exit. - trap 'ret=$?; rm -f "$dsttmp" "$rmtmp" && exit $ret' 0 - trap '(exit $?); exit' 1 2 13 15 - - # Copy the file name to the temp name. - $doit $cpprog "$src" "$dsttmp" && - - # and set any options; do chmod last to preserve setuid bits. - # - # If any of these fail, we abort the whole thing. If we want to - # ignore errors from any of these, just make sure not to ignore - # errors from the above "$doit $cpprog $src $dsttmp" command. - # - { test -z "$chowncmd" || $doit $chowncmd "$dsttmp"; } \ - && { test -z "$chgrpcmd" || $doit $chgrpcmd "$dsttmp"; } \ - && { test -z "$stripcmd" || $doit $stripcmd "$dsttmp"; } \ - && { test -z "$chmodcmd" || $doit $chmodcmd "$dsttmp"; } && - - # Now rename the file to the real destination. - { $doit $mvcmd -f "$dsttmp" "$dstdir/$dstfile" 2>/dev/null \ - || { - # The rename failed, perhaps because mv can't rename something else - # to itself, or perhaps because mv is so ancient that it does not - # support -f. - - # Now remove or move aside any old file at destination location. - # We try this two ways since rm can't unlink itself on some - # systems and the destination file might be busy for other - # reasons. In this case, the final cleanup might fail but the new - # file should still install successfully. - { - if test -f "$dstdir/$dstfile"; then - $doit $rmcmd -f "$dstdir/$dstfile" 2>/dev/null \ - || $doit $mvcmd -f "$dstdir/$dstfile" "$rmtmp" 2>/dev/null \ - || { - echo "$0: cannot unlink or rename $dstdir/$dstfile" >&2 - (exit 1); exit 1 - } - else - : - fi - } && - - # Now rename the file to the real destination. - $doit $mvcmd "$dsttmp" "$dstdir/$dstfile" - } - } - fi || { (exit 1); exit 1; } -done - -# The final little trick to "correctly" pass the exit status to the exit trap. -{ - (exit 0); exit 0 -} - -# Local variables: -# eval: (add-hook 'write-file-hooks 'time-stamp) -# time-stamp-start: "scriptversion=" -# time-stamp-format: "%:y-%02m-%02d.%02H" -# time-stamp-end: "$" -# End: diff --git a/libs/libdingaling/libdingaling.2008.vcproj b/libs/libdingaling/libdingaling.2008.vcproj deleted file mode 100644 index bf22a7e5e6c..00000000000 --- a/libs/libdingaling/libdingaling.2008.vcproj +++ /dev/null @@ -1,621 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/libs/libdingaling/libdingaling.2010.vcxproj.filters b/libs/libdingaling/libdingaling.2010.vcxproj.filters deleted file mode 100644 index 18ef8e8b1a3..00000000000 --- a/libs/libdingaling/libdingaling.2010.vcxproj.filters +++ /dev/null @@ -1,38 +0,0 @@ - - - - - {4FC737F1-C7A5-4376-A066-2A32D752A2FF} - cpp;c;cc;cxx;def;odl;idl;hpj;bat;asm;asmx - - - {93995380-89BD-4b04-88EB-625FBE52EBFB} - h;hpp;hxx;hm;inl;inc;xsd - - - {67DA6AB6-F800-4c08-8B7A-83BB121AAD01} - rc;ico;cur;bmp;dlg;rc2;rct;bin;rgs;gif;jpg;jpeg;jpe;resx;tiff;tif;png;wav - - - - - Source Files - - - Source Files - - - - - Header Files - - - Header Files - - - - - Source Files - - - \ No newline at end of file diff --git a/libs/libdingaling/libdingaling.2017.vcxproj b/libs/libdingaling/libdingaling.2017.vcxproj deleted file mode 100644 index 899855def19..00000000000 --- a/libs/libdingaling/libdingaling.2017.vcxproj +++ /dev/null @@ -1,303 +0,0 @@ - - - - - Debug DLL - Win32 - - - Debug DLL - x64 - - - Debug - Win32 - - - Debug - x64 - - - Release DLL - Win32 - - - Release DLL - x64 - - - Release - Win32 - - - Release - x64 - - - - libdingaling - {1906D736-08BD-4EE1-924F-B536249B9A54} - libdingaling - Win32Proj - - - - DynamicLibrary - Unicode - true - $(DefaultPlatformToolset) - - - DynamicLibrary - Unicode - $(DefaultPlatformToolset) - - - StaticLibrary - Unicode - true - $(DefaultPlatformToolset) - - - StaticLibrary - Unicode - $(DefaultPlatformToolset) - - - DynamicLibrary - Unicode - true - $(DefaultPlatformToolset) - - - DynamicLibrary - Unicode - $(DefaultPlatformToolset) - - - StaticLibrary - Unicode - true - $(DefaultPlatformToolset) - - - StaticLibrary - Unicode - $(DefaultPlatformToolset) - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - <_ProjectFileVersion>10.0.30319.1 - $(SolutionDir)Debug\ - $(Configuration)\ - $(SolutionDir)Release\ - $(Configuration)\ - $(SolutionDir)$(Platform)\$(Configuration)\ - $(Platform)\$(Configuration)\ - $(SolutionDir)$(Platform)\$(Configuration)\ - $(Platform)\$(Configuration)\ - - - - Disabled - .;.\src;..\iksemel\include;..\include;..\apr\include;..\iksemel-1.2\include;%(AdditionalIncludeDirectories) - WIN32;_DEBUG;_LIB;_CRT_SECURE_NO_DEPRECATE;_CRT_NONSTDC_NO_DEPRECATE;%(PreprocessorDefinitions) - true - EnableFastChecks - MultiThreadedDebugDLL - Level4 - 4718;4456;4457;4701;4702;4703;4100;4706;%(DisableSpecificWarnings) - - - - - .;.\src;..\iksemel\include;..\include;..\apr\include;..\iksemel-1.2\include;%(AdditionalIncludeDirectories) - WIN32;NDEBUG;_LIB;_CRT_SECURE_NO_DEPRECATE;_CRT_NONSTDC_NO_DEPRECATE;%(PreprocessorDefinitions) - MultiThreadedDLL - Level4 - 4718;4456;4457;4701;4702;4703;4100;%(DisableSpecificWarnings) - - - - - Disabled - .;.\src;..\iksemel\include;..\include;..\apr\include;..\iksemel-1.2\include;%(AdditionalIncludeDirectories) - WIN32;_DEBUG;_LIB;_CRT_SECURE_NO_DEPRECATE;_CRT_NONSTDC_NO_DEPRECATE;APR_DECLARE_STATIC;APU_DECLARE_STATIC;%(PreprocessorDefinitions) - true - EnableFastChecks - MultiThreadedDebugDLL - - - Level4 - EditAndContinue - 4718;4456;4457;4701;4702;4703;4100;%(DisableSpecificWarnings) - - - libapr-1.lib;libaprutil-1.lib;iksemel.lib;Ws2_32.lib;%(AdditionalDependencies) - ..\apr\Debug;..\apr-util\Debug;..\iksemel\Debug;%(AdditionalLibraryDirectories) - .\src\dingaling.def - true - false - false - false - - - - - - - .;.\src;..\iksemel\include;..\include;..\apr\include;..\iksemel-1.2\include;%(AdditionalIncludeDirectories) - WIN32;NDEBUG;_LIB;_CRT_SECURE_NO_DEPRECATE;_CRT_NONSTDC_NO_DEPRECATE;APR_DECLARE_STATIC;APU_DECLARE_STATIC;%(PreprocessorDefinitions) - MultiThreadedDLL - - - Level4 - ProgramDatabase - 4718;4456;4457;4701;4702;4703;4100;%(DisableSpecificWarnings) - - - libapr-1.lib;libaprutil-1.lib;iksemel.lib;Ws2_32.lib;%(AdditionalDependencies) - ..\apr\Release;..\apr-util\Release;..\iksemel\Release;%(AdditionalLibraryDirectories) - .\src\dingaling.def - false - - - - - - - X64 - - - Disabled - .;.\src;..\iksemel\include;..\include;..\apr\include;..\iksemel-1.2\include;%(AdditionalIncludeDirectories) - WIN32;_DEBUG;_LIB;_CRT_SECURE_NO_DEPRECATE;_CRT_NONSTDC_NO_DEPRECATE;%(PreprocessorDefinitions) - true - EnableFastChecks - MultiThreadedDebugDLL - Level4 - 4718;4456;4457;4701;4702;4703;4100;4706;%(DisableSpecificWarnings) - - - - - X64 - - - .;.\src;..\iksemel\include;..\include;..\apr\include;..\iksemel-1.2\include;%(AdditionalIncludeDirectories) - WIN32;NDEBUG;_LIB;_CRT_SECURE_NO_DEPRECATE;_CRT_NONSTDC_NO_DEPRECATE;%(PreprocessorDefinitions) - MultiThreadedDLL - Level4 - 4718;4456;4457;4701;4702;4703;4100;%(DisableSpecificWarnings) - - - - - X64 - - - Disabled - .;.\src;..\iksemel\include;..\include;..\apr\include;..\iksemel-1.2\include;%(AdditionalIncludeDirectories) - WIN32;_DEBUG;_LIB;_CRT_SECURE_NO_DEPRECATE;_CRT_NONSTDC_NO_DEPRECATE;APR_DECLARE_STATIC;APU_DECLARE_STATIC;%(PreprocessorDefinitions) - true - EnableFastChecks - MultiThreadedDebugDLL - - - Level4 - ProgramDatabase - 4718;4456;4457;4701;4702;4703;4100;%(DisableSpecificWarnings) - - - libapr-1.lib;libaprutil-1.lib;iksemel.lib;Ws2_32.lib;%(AdditionalDependencies) - ..\apr\Debug;..\apr-util\Debug;..\iksemel\Debug;%(AdditionalLibraryDirectories) - .\src\dingaling.def - true - false - false - false - - - MachineX64 - - - - - X64 - - - .;.\src;..\iksemel\include;..\include;..\apr\include;..\iksemel-1.2\include;%(AdditionalIncludeDirectories) - WIN32;NDEBUG;_LIB;_CRT_SECURE_NO_DEPRECATE;_CRT_NONSTDC_NO_DEPRECATE;APR_DECLARE_STATIC;APU_DECLARE_STATIC;%(PreprocessorDefinitions) - MultiThreadedDLL - - - Level4 - ProgramDatabase - 4718;4456;4457;4701;4702;4703;4100;%(DisableSpecificWarnings) - - - libapr-1.lib;libaprutil-1.lib;iksemel.lib;Ws2_32.lib;%(AdditionalDependencies) - ..\apr\Release;..\apr-util\Release;..\iksemel\Release;%(AdditionalLibraryDirectories) - .\src\dingaling.def - false - - - MachineX64 - - - - - - - - - - - - - - - - {f057da7f-79e5-4b00-845c-ef446ef055e3} - false - - - {e727e8f6-935d-46fe-8b0e-37834748a0e3} - false - - - - - - \ No newline at end of file diff --git a/libs/libdingaling/libdingaling.vcproj b/libs/libdingaling/libdingaling.vcproj deleted file mode 100644 index 3cb660b406b..00000000000 --- a/libs/libdingaling/libdingaling.vcproj +++ /dev/null @@ -1,343 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/libs/libdingaling/ltmain.sh b/libs/libdingaling/ltmain.sh deleted file mode 100755 index 9e71d27d86d..00000000000 --- a/libs/libdingaling/ltmain.sh +++ /dev/null @@ -1,6530 +0,0 @@ -# ltmain.sh - Provide generalized library-building support services. -# NOTE: Changing this file will not affect anything until you rerun configure. -# -# Copyright (C) 1996, 1997, 1998, 1999, 2000, 2001, 2003, 2004, 2005 -# Free Software Foundation, Inc. -# Originally by Gordon Matzigkeit , 1996 -# -# 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., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. -# -# As a special exception to the GNU General Public License, if you -# distribute this file as part of a program that contains a -# configuration script generated by Autoconf, you may include it under -# the same distribution terms that you use for the rest of that program. - -basename="s,^.*/,,g" - -# Work around backward compatibility issue on IRIX 6.5. On IRIX 6.4+, sh -# is ksh but when the shell is invoked as "sh" and the current value of -# the _XPG environment variable is not equal to 1 (one), the special -# positional parameter $0, within a function call, is the name of the -# function. -progpath="$0" - -# The name of this program: -progname=`echo "$progpath" | $SED $basename` -modename="$progname" - -# Global variables: -EXIT_SUCCESS=0 -EXIT_FAILURE=1 - -PROGRAM=ltmain.sh -PACKAGE=libtool -VERSION=1.5.20 -TIMESTAMP=" (1.1220.2.287 2005/08/31 18:54:15)" - -# See if we are running on zsh, and set the options which allow our -# commands through without removal of \ escapes. -if test -n "${ZSH_VERSION+set}" ; then - setopt NO_GLOB_SUBST -fi - -# Check that we have a working $echo. -if test "X$1" = X--no-reexec; then - # Discard the --no-reexec flag, and continue. - shift -elif test "X$1" = X--fallback-echo; then - # Avoid inline document here, it may be left over - : -elif test "X`($echo '\t') 2>/dev/null`" = 'X\t'; then - # Yippee, $echo works! - : -else - # Restart under the correct shell, and then maybe $echo will work. - exec $SHELL "$progpath" --no-reexec ${1+"$@"} -fi - -if test "X$1" = X--fallback-echo; then - # used as fallback echo - shift - cat <&2 - $echo "Fatal configuration error. See the $PACKAGE docs for more information." 1>&2 - exit $EXIT_FAILURE -fi - -# Global variables. -mode=$default_mode -nonopt= -prev= -prevopt= -run= -show="$echo" -show_help= -execute_dlfiles= -lo2o="s/\\.lo\$/.${objext}/" -o2lo="s/\\.${objext}\$/.lo/" - -##################################### -# Shell function definitions: -# This seems to be the best place for them - -# func_win32_libid arg -# return the library type of file 'arg' -# -# Need a lot of goo to handle *both* DLLs and import libs -# Has to be a shell function in order to 'eat' the argument -# that is supplied when $file_magic_command is called. -func_win32_libid () -{ - win32_libid_type="unknown" - win32_fileres=`file -L $1 2>/dev/null` - case $win32_fileres in - *ar\ archive\ import\ library*) # definitely import - win32_libid_type="x86 archive import" - ;; - *ar\ archive*) # could be an import, or static - if eval $OBJDUMP -f $1 | $SED -e '10q' 2>/dev/null | \ - $EGREP -e 'file format pe-i386(.*architecture: i386)?' >/dev/null ; then - win32_nmres=`eval $NM -f posix -A $1 | \ - sed -n -e '1,100{/ I /{x;/import/!{s/^/import/;h;p;};x;};}'` - if test "X$win32_nmres" = "Ximport" ; then - win32_libid_type="x86 archive import" - else - win32_libid_type="x86 archive static" - fi - fi - ;; - *DLL*) - win32_libid_type="x86 DLL" - ;; - *executable*) # but shell scripts are "executable" too... - case $win32_fileres in - *MS\ Windows\ PE\ Intel*) - win32_libid_type="x86 DLL" - ;; - esac - ;; - esac - $echo $win32_libid_type -} - - -# func_infer_tag arg -# Infer tagged configuration to use if any are available and -# if one wasn't chosen via the "--tag" command line option. -# Only attempt this if the compiler in the base compile -# command doesn't match the default compiler. -# arg is usually of the form 'gcc ...' -func_infer_tag () -{ - if test -n "$available_tags" && test -z "$tagname"; then - CC_quoted= - for arg in $CC; do - case $arg in - *[\[\~\#\^\&\*\(\)\{\}\|\;\<\>\?\'\ \ ]*|*]*|"") - arg="\"$arg\"" - ;; - esac - CC_quoted="$CC_quoted $arg" - done - case $@ in - # Blanks in the command may have been stripped by the calling shell, - # but not from the CC environment variable when configure was run. - " $CC "* | "$CC "* | " `$echo $CC` "* | "`$echo $CC` "* | " $CC_quoted"* | "$CC_quoted "* | " `$echo $CC_quoted` "* | "`$echo $CC_quoted` "*) ;; - # Blanks at the start of $base_compile will cause this to fail - # if we don't check for them as well. - *) - for z in $available_tags; do - if grep "^# ### BEGIN LIBTOOL TAG CONFIG: $z$" < "$progpath" > /dev/null; then - # Evaluate the configuration. - eval "`${SED} -n -e '/^# ### BEGIN LIBTOOL TAG CONFIG: '$z'$/,/^# ### END LIBTOOL TAG CONFIG: '$z'$/p' < $progpath`" - CC_quoted= - for arg in $CC; do - # Double-quote args containing other shell metacharacters. - case $arg in - *[\[\~\#\^\&\*\(\)\{\}\|\;\<\>\?\'\ \ ]*|*]*|"") - arg="\"$arg\"" - ;; - esac - CC_quoted="$CC_quoted $arg" - done - case "$@ " in - " $CC "* | "$CC "* | " `$echo $CC` "* | "`$echo $CC` "* | " $CC_quoted"* | "$CC_quoted "* | " `$echo $CC_quoted` "* | "`$echo $CC_quoted` "*) - # The compiler in the base compile command matches - # the one in the tagged configuration. - # Assume this is the tagged configuration we want. - tagname=$z - break - ;; - esac - fi - done - # If $tagname still isn't set, then no tagged configuration - # was found and let the user know that the "--tag" command - # line option must be used. - if test -z "$tagname"; then - $echo "$modename: unable to infer tagged configuration" - $echo "$modename: specify a tag with \`--tag'" 1>&2 - exit $EXIT_FAILURE -# else -# $echo "$modename: using $tagname tagged configuration" - fi - ;; - esac - fi -} - - -# func_extract_an_archive dir oldlib -func_extract_an_archive () -{ - f_ex_an_ar_dir="$1"; shift - f_ex_an_ar_oldlib="$1" - - $show "(cd $f_ex_an_ar_dir && $AR x $f_ex_an_ar_oldlib)" - $run eval "(cd \$f_ex_an_ar_dir && $AR x \$f_ex_an_ar_oldlib)" || exit $? - if ($AR t "$f_ex_an_ar_oldlib" | sort | sort -uc >/dev/null 2>&1); then - : - else - $echo "$modename: ERROR: object name conflicts: $f_ex_an_ar_dir/$f_ex_an_ar_oldlib" 1>&2 - exit $EXIT_FAILURE - fi -} - -# func_extract_archives gentop oldlib ... -func_extract_archives () -{ - my_gentop="$1"; shift - my_oldlibs=${1+"$@"} - my_oldobjs="" - my_xlib="" - my_xabs="" - my_xdir="" - my_status="" - - $show "${rm}r $my_gentop" - $run ${rm}r "$my_gentop" - $show "$mkdir $my_gentop" - $run $mkdir "$my_gentop" - my_status=$? - if test "$my_status" -ne 0 && test ! -d "$my_gentop"; then - exit $my_status - fi - - for my_xlib in $my_oldlibs; do - # Extract the objects. - case $my_xlib in - [\\/]* | [A-Za-z]:[\\/]*) my_xabs="$my_xlib" ;; - *) my_xabs=`pwd`"/$my_xlib" ;; - esac - my_xlib=`$echo "X$my_xlib" | $Xsed -e 's%^.*/%%'` - my_xdir="$my_gentop/$my_xlib" - - $show "${rm}r $my_xdir" - $run ${rm}r "$my_xdir" - $show "$mkdir $my_xdir" - $run $mkdir "$my_xdir" - status=$? - if test "$status" -ne 0 && test ! -d "$my_xdir"; then - exit $status - fi - case $host in - *-darwin*) - $show "Extracting $my_xabs" - # Do not bother doing anything if just a dry run - if test -z "$run"; then - darwin_orig_dir=`pwd` - cd $my_xdir || exit $? - darwin_archive=$my_xabs - darwin_curdir=`pwd` - darwin_base_archive=`$echo "X$darwin_archive" | $Xsed -e 's%^.*/%%'` - darwin_arches=`lipo -info "$darwin_archive" 2>/dev/null | $EGREP Architectures 2>/dev/null` - if test -n "$darwin_arches"; then - darwin_arches=`echo "$darwin_arches" | $SED -e 's/.*are://'` - darwin_arch= - $show "$darwin_base_archive has multiple architectures $darwin_arches" - for darwin_arch in $darwin_arches ; do - mkdir -p "unfat-$$/${darwin_base_archive}-${darwin_arch}" - lipo -thin $darwin_arch -output "unfat-$$/${darwin_base_archive}-${darwin_arch}/${darwin_base_archive}" "${darwin_archive}" - cd "unfat-$$/${darwin_base_archive}-${darwin_arch}" - func_extract_an_archive "`pwd`" "${darwin_base_archive}" - cd "$darwin_curdir" - $rm "unfat-$$/${darwin_base_archive}-${darwin_arch}/${darwin_base_archive}" - done # $darwin_arches - ## Okay now we have a bunch of thin objects, gotta fatten them up :) - darwin_filelist=`find unfat-$$ -type f -name \*.o -print -o -name \*.lo -print| xargs basename | sort -u | $NL2SP` - darwin_file= - darwin_files= - for darwin_file in $darwin_filelist; do - darwin_files=`find unfat-$$ -name $darwin_file -print | $NL2SP` - lipo -create -output "$darwin_file" $darwin_files - done # $darwin_filelist - ${rm}r unfat-$$ - cd "$darwin_orig_dir" - else - cd "$darwin_orig_dir" - func_extract_an_archive "$my_xdir" "$my_xabs" - fi # $darwin_arches - fi # $run - ;; - *) - func_extract_an_archive "$my_xdir" "$my_xabs" - ;; - esac - my_oldobjs="$my_oldobjs "`find $my_xdir -name \*.$objext -print -o -name \*.lo -print | $NL2SP` - done - func_extract_archives_result="$my_oldobjs" -} -# End of Shell function definitions -##################################### - -# Darwin sucks -eval std_shrext=\"$shrext_cmds\" - -# Parse our command line options once, thoroughly. -while test "$#" -gt 0 -do - arg="$1" - shift - - case $arg in - -*=*) optarg=`$echo "X$arg" | $Xsed -e 's/[-_a-zA-Z0-9]*=//'` ;; - *) optarg= ;; - esac - - # If the previous option needs an argument, assign it. - if test -n "$prev"; then - case $prev in - execute_dlfiles) - execute_dlfiles="$execute_dlfiles $arg" - ;; - tag) - tagname="$arg" - preserve_args="${preserve_args}=$arg" - - # Check whether tagname contains only valid characters - case $tagname in - *[!-_A-Za-z0-9,/]*) - $echo "$progname: invalid tag name: $tagname" 1>&2 - exit $EXIT_FAILURE - ;; - esac - - case $tagname in - CC) - # Don't test for the "default" C tag, as we know, it's there, but - # not specially marked. - ;; - *) - if grep "^# ### BEGIN LIBTOOL TAG CONFIG: $tagname$" < "$progpath" > /dev/null; then - taglist="$taglist $tagname" - # Evaluate the configuration. - eval "`${SED} -n -e '/^# ### BEGIN LIBTOOL TAG CONFIG: '$tagname'$/,/^# ### END LIBTOOL TAG CONFIG: '$tagname'$/p' < $progpath`" - else - $echo "$progname: ignoring unknown tag $tagname" 1>&2 - fi - ;; - esac - ;; - *) - eval "$prev=\$arg" - ;; - esac - - prev= - prevopt= - continue - fi - - # Have we seen a non-optional argument yet? - case $arg in - --help) - show_help=yes - ;; - - --version) - $echo "$PROGRAM (GNU $PACKAGE) $VERSION$TIMESTAMP" - $echo - $echo "Copyright (C) 2005 Free Software Foundation, Inc." - $echo "This is free software; see the source for copying conditions. There is NO" - $echo "warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE." - exit $? - ;; - - --config) - ${SED} -e '1,/^# ### BEGIN LIBTOOL CONFIG/d' -e '/^# ### END LIBTOOL CONFIG/,$d' $progpath - # Now print the configurations for the tags. - for tagname in $taglist; do - ${SED} -n -e "/^# ### BEGIN LIBTOOL TAG CONFIG: $tagname$/,/^# ### END LIBTOOL TAG CONFIG: $tagname$/p" < "$progpath" - done - exit $? - ;; - - --debug) - $echo "$progname: enabling shell trace mode" - set -x - preserve_args="$preserve_args $arg" - ;; - - --dry-run | -n) - run=: - ;; - - --features) - $echo "host: $host" - if test "$build_libtool_libs" = yes; then - $echo "enable shared libraries" - else - $echo "disable shared libraries" - fi - if test "$build_old_libs" = yes; then - $echo "enable static libraries" - else - $echo "disable static libraries" - fi - exit $? - ;; - - --finish) mode="finish" ;; - - --mode) prevopt="--mode" prev=mode ;; - --mode=*) mode="$optarg" ;; - - --preserve-dup-deps) duplicate_deps="yes" ;; - - --quiet | --silent) - show=: - preserve_args="$preserve_args $arg" - ;; - - --tag) prevopt="--tag" prev=tag ;; - --tag=*) - set tag "$optarg" ${1+"$@"} - shift - prev=tag - preserve_args="$preserve_args --tag" - ;; - - -dlopen) - prevopt="-dlopen" - prev=execute_dlfiles - ;; - - -*) - $echo "$modename: unrecognized option \`$arg'" 1>&2 - $echo "$help" 1>&2 - exit $EXIT_FAILURE - ;; - - *) - nonopt="$arg" - break - ;; - esac -done - -if test -n "$prevopt"; then - $echo "$modename: option \`$prevopt' requires an argument" 1>&2 - $echo "$help" 1>&2 - exit $EXIT_FAILURE -fi - -# If this variable is set in any of the actions, the command in it -# will be execed at the end. This prevents here-documents from being -# left over by shells. -exec_cmd= - -if test -z "$show_help"; then - - # Infer the operation mode. - if test -z "$mode"; then - $echo "*** Warning: inferring the mode of operation is deprecated." 1>&2 - $echo "*** Future versions of Libtool will require --mode=MODE be specified." 1>&2 - case $nonopt in - *cc | cc* | *++ | gcc* | *-gcc* | g++* | xlc*) - mode=link - for arg - do - case $arg in - -c) - mode=compile - break - ;; - esac - done - ;; - *db | *dbx | *strace | *truss) - mode=execute - ;; - *install*|cp|mv) - mode=install - ;; - *rm) - mode=uninstall - ;; - *) - # If we have no mode, but dlfiles were specified, then do execute mode. - test -n "$execute_dlfiles" && mode=execute - - # Just use the default operation mode. - if test -z "$mode"; then - if test -n "$nonopt"; then - $echo "$modename: warning: cannot infer operation mode from \`$nonopt'" 1>&2 - else - $echo "$modename: warning: cannot infer operation mode without MODE-ARGS" 1>&2 - fi - fi - ;; - esac - fi - - # Only execute mode is allowed to have -dlopen flags. - if test -n "$execute_dlfiles" && test "$mode" != execute; then - $echo "$modename: unrecognized option \`-dlopen'" 1>&2 - $echo "$help" 1>&2 - exit $EXIT_FAILURE - fi - - # Change the help message to a mode-specific one. - generic_help="$help" - help="Try \`$modename --help --mode=$mode' for more information." - - # These modes are in order of execution frequency so that they run quickly. - case $mode in - # libtool compile mode - compile) - modename="$modename: compile" - # Get the compilation command and the source file. - base_compile= - srcfile="$nonopt" # always keep a non-empty value in "srcfile" - suppress_opt=yes - suppress_output= - arg_mode=normal - libobj= - later= - - for arg - do - case $arg_mode in - arg ) - # do not "continue". Instead, add this to base_compile - lastarg="$arg" - arg_mode=normal - ;; - - target ) - libobj="$arg" - arg_mode=normal - continue - ;; - - normal ) - # Accept any command-line options. - case $arg in - -o) - if test -n "$libobj" ; then - $echo "$modename: you cannot specify \`-o' more than once" 1>&2 - exit $EXIT_FAILURE - fi - arg_mode=target - continue - ;; - - -static | -prefer-pic | -prefer-non-pic) - later="$later $arg" - continue - ;; - - -no-suppress) - suppress_opt=no - continue - ;; - - -Xcompiler) - arg_mode=arg # the next one goes into the "base_compile" arg list - continue # The current "srcfile" will either be retained or - ;; # replaced later. I would guess that would be a bug. - - -Wc,*) - args=`$echo "X$arg" | $Xsed -e "s/^-Wc,//"` - lastarg= - save_ifs="$IFS"; IFS=',' - for arg in $args; do - IFS="$save_ifs" - - # Double-quote args containing other shell metacharacters. - # Many Bourne shells cannot handle close brackets correctly - # in scan sets, so we specify it separately. - case $arg in - *[\[\~\#\^\&\*\(\)\{\}\|\;\<\>\?\'\ \ ]*|*]*|"") - arg="\"$arg\"" - ;; - esac - lastarg="$lastarg $arg" - done - IFS="$save_ifs" - lastarg=`$echo "X$lastarg" | $Xsed -e "s/^ //"` - - # Add the arguments to base_compile. - base_compile="$base_compile $lastarg" - continue - ;; - - * ) - # Accept the current argument as the source file. - # The previous "srcfile" becomes the current argument. - # - lastarg="$srcfile" - srcfile="$arg" - ;; - esac # case $arg - ;; - esac # case $arg_mode - - # Aesthetically quote the previous argument. - lastarg=`$echo "X$lastarg" | $Xsed -e "$sed_quote_subst"` - - case $lastarg in - # Double-quote args containing other shell metacharacters. - # Many Bourne shells cannot handle close brackets correctly - # in scan sets, and some SunOS ksh mistreat backslash-escaping - # in scan sets (worked around with variable expansion), - # and furthermore cannot handle '|' '&' '(' ')' in scan sets - # at all, so we specify them separately. - *[\[\~\#\^\&\*\(\)\{\}\|\;\<\>\?\'\ \ ]*|*]*|"") - lastarg="\"$lastarg\"" - ;; - esac - - base_compile="$base_compile $lastarg" - done # for arg - - case $arg_mode in - arg) - $echo "$modename: you must specify an argument for -Xcompile" - exit $EXIT_FAILURE - ;; - target) - $echo "$modename: you must specify a target with \`-o'" 1>&2 - exit $EXIT_FAILURE - ;; - *) - # Get the name of the library object. - [ -z "$libobj" ] && libobj=`$echo "X$srcfile" | $Xsed -e 's%^.*/%%'` - ;; - esac - - # Recognize several different file suffixes. - # If the user specifies -o file.o, it is replaced with file.lo - xform='[cCFSifmso]' - case $libobj in - *.ada) xform=ada ;; - *.adb) xform=adb ;; - *.ads) xform=ads ;; - *.asm) xform=asm ;; - *.c++) xform=c++ ;; - *.cc) xform=cc ;; - *.ii) xform=ii ;; - *.class) xform=class ;; - *.cpp) xform=cpp ;; - *.cxx) xform=cxx ;; - *.f90) xform=f90 ;; - *.for) xform=for ;; - *.java) xform=java ;; - esac - - libobj=`$echo "X$libobj" | $Xsed -e "s/\.$xform$/.lo/"` - - case $libobj in - *.lo) obj=`$echo "X$libobj" | $Xsed -e "$lo2o"` ;; - *) - $echo "$modename: cannot determine name of library object from \`$libobj'" 1>&2 - exit $EXIT_FAILURE - ;; - esac - - func_infer_tag $base_compile - - for arg in $later; do - case $arg in - -static) - build_old_libs=yes - continue - ;; - - -prefer-pic) - pic_mode=yes - continue - ;; - - -prefer-non-pic) - pic_mode=no - continue - ;; - esac - done - - qlibobj=`$echo "X$libobj" | $Xsed -e "$sed_quote_subst"` - case $qlibobj in - *[\[\~\#\^\&\*\(\)\{\}\|\;\<\>\?\'\ \ ]*|*]*|"") - qlibobj="\"$qlibobj\"" ;; - esac - test "X$libobj" != "X$qlibobj" \ - && $echo "X$libobj" | grep '[]~#^*{};<>?"'"'"' &()|`$[]' \ - && $echo "$modename: libobj name \`$libobj' may not contain shell special characters." - objname=`$echo "X$obj" | $Xsed -e 's%^.*/%%'` - xdir=`$echo "X$obj" | $Xsed -e 's%/[^/]*$%%'` - if test "X$xdir" = "X$obj"; then - xdir= - else - xdir=$xdir/ - fi - lobj=${xdir}$objdir/$objname - - if test -z "$base_compile"; then - $echo "$modename: you must specify a compilation command" 1>&2 - $echo "$help" 1>&2 - exit $EXIT_FAILURE - fi - - # Delete any leftover library objects. - if test "$build_old_libs" = yes; then - removelist="$obj $lobj $libobj ${libobj}T" - else - removelist="$lobj $libobj ${libobj}T" - fi - - $run $rm $removelist - trap "$run $rm $removelist; exit $EXIT_FAILURE" 1 2 15 - - # On Cygwin there's no "real" PIC flag so we must build both object types - case $host_os in - cygwin* | mingw* | pw32* | os2*) - pic_mode=default - ;; - esac - if test "$pic_mode" = no && test "$deplibs_check_method" != pass_all; then - # non-PIC code in shared libraries is not supported - pic_mode=default - fi - - # Calculate the filename of the output object if compiler does - # not support -o with -c - if test "$compiler_c_o" = no; then - output_obj=`$echo "X$srcfile" | $Xsed -e 's%^.*/%%' -e 's%\.[^.]*$%%'`.${objext} - lockfile="$output_obj.lock" - removelist="$removelist $output_obj $lockfile" - trap "$run $rm $removelist; exit $EXIT_FAILURE" 1 2 15 - else - output_obj= - need_locks=no - lockfile= - fi - - # Lock this critical section if it is needed - # We use this script file to make the link, it avoids creating a new file - if test "$need_locks" = yes; then - until $run ln "$progpath" "$lockfile" 2>/dev/null; do - $show "Waiting for $lockfile to be removed" - sleep 2 - done - elif test "$need_locks" = warn; then - if test -f "$lockfile"; then - $echo "\ -*** ERROR, $lockfile exists and contains: -`cat $lockfile 2>/dev/null` - -This indicates that another process is trying to use the same -temporary object file, and libtool could not work around it because -your compiler does not support \`-c' and \`-o' together. If you -repeat this compilation, it may succeed, by chance, but you had better -avoid parallel builds (make -j) in this platform, or get a better -compiler." - - $run $rm $removelist - exit $EXIT_FAILURE - fi - $echo "$srcfile" > "$lockfile" - fi - - if test -n "$fix_srcfile_path"; then - eval srcfile=\"$fix_srcfile_path\" - fi - qsrcfile=`$echo "X$srcfile" | $Xsed -e "$sed_quote_subst"` - case $qsrcfile in - *[\[\~\#\^\&\*\(\)\{\}\|\;\<\>\?\'\ \ ]*|*]*|"") - qsrcfile="\"$qsrcfile\"" ;; - esac - - $run $rm "$libobj" "${libobj}T" - - # Create a libtool object file (analogous to a ".la" file), - # but don't create it if we're doing a dry run. - test -z "$run" && cat > ${libobj}T </dev/null`" != "X$srcfile"; then - $echo "\ -*** ERROR, $lockfile contains: -`cat $lockfile 2>/dev/null` - -but it should contain: -$srcfile - -This indicates that another process is trying to use the same -temporary object file, and libtool could not work around it because -your compiler does not support \`-c' and \`-o' together. If you -repeat this compilation, it may succeed, by chance, but you had better -avoid parallel builds (make -j) in this platform, or get a better -compiler." - - $run $rm $removelist - exit $EXIT_FAILURE - fi - - # Just move the object if needed, then go on to compile the next one - if test -n "$output_obj" && test "X$output_obj" != "X$lobj"; then - $show "$mv $output_obj $lobj" - if $run $mv $output_obj $lobj; then : - else - error=$? - $run $rm $removelist - exit $error - fi - fi - - # Append the name of the PIC object to the libtool object file. - test -z "$run" && cat >> ${libobj}T <> ${libobj}T </dev/null`" != "X$srcfile"; then - $echo "\ -*** ERROR, $lockfile contains: -`cat $lockfile 2>/dev/null` - -but it should contain: -$srcfile - -This indicates that another process is trying to use the same -temporary object file, and libtool could not work around it because -your compiler does not support \`-c' and \`-o' together. If you -repeat this compilation, it may succeed, by chance, but you had better -avoid parallel builds (make -j) in this platform, or get a better -compiler." - - $run $rm $removelist - exit $EXIT_FAILURE - fi - - # Just move the object if needed - if test -n "$output_obj" && test "X$output_obj" != "X$obj"; then - $show "$mv $output_obj $obj" - if $run $mv $output_obj $obj; then : - else - error=$? - $run $rm $removelist - exit $error - fi - fi - - # Append the name of the non-PIC object the libtool object file. - # Only append if the libtool object file exists. - test -z "$run" && cat >> ${libobj}T <> ${libobj}T <&2 - fi - if test -n "$link_static_flag"; then - dlopen_self=$dlopen_self_static - fi - else - if test -z "$pic_flag" && test -n "$link_static_flag"; then - dlopen_self=$dlopen_self_static - fi - fi - build_libtool_libs=no - build_old_libs=yes - prefer_static_libs=yes - break - ;; - esac - done - - # See if our shared archives depend on static archives. - test -n "$old_archive_from_new_cmds" && build_old_libs=yes - - # Go through the arguments, transforming them on the way. - while test "$#" -gt 0; do - arg="$1" - shift - case $arg in - *[\[\~\#\^\&\*\(\)\{\}\|\;\<\>\?\'\ \ ]*|*]*|"") - qarg=\"`$echo "X$arg" | $Xsed -e "$sed_quote_subst"`\" ### testsuite: skip nested quoting test - ;; - *) qarg=$arg ;; - esac - libtool_args="$libtool_args $qarg" - - # If the previous option needs an argument, assign it. - if test -n "$prev"; then - case $prev in - output) - compile_command="$compile_command @OUTPUT@" - finalize_command="$finalize_command @OUTPUT@" - ;; - esac - - case $prev in - dlfiles|dlprefiles) - if test "$preload" = no; then - # Add the symbol object into the linking commands. - compile_command="$compile_command @SYMFILE@" - finalize_command="$finalize_command @SYMFILE@" - preload=yes - fi - case $arg in - *.la | *.lo) ;; # We handle these cases below. - force) - if test "$dlself" = no; then - dlself=needless - export_dynamic=yes - fi - prev= - continue - ;; - self) - if test "$prev" = dlprefiles; then - dlself=yes - elif test "$prev" = dlfiles && test "$dlopen_self" != yes; then - dlself=yes - else - dlself=needless - export_dynamic=yes - fi - prev= - continue - ;; - *) - if test "$prev" = dlfiles; then - dlfiles="$dlfiles $arg" - else - dlprefiles="$dlprefiles $arg" - fi - prev= - continue - ;; - esac - ;; - expsyms) - export_symbols="$arg" - if test ! -f "$arg"; then - $echo "$modename: symbol file \`$arg' does not exist" - exit $EXIT_FAILURE - fi - prev= - continue - ;; - expsyms_regex) - export_symbols_regex="$arg" - prev= - continue - ;; - inst_prefix) - inst_prefix_dir="$arg" - prev= - continue - ;; - precious_regex) - precious_files_regex="$arg" - prev= - continue - ;; - release) - release="-$arg" - prev= - continue - ;; - objectlist) - if test -f "$arg"; then - save_arg=$arg - moreargs= - for fil in `cat $save_arg` - do -# moreargs="$moreargs $fil" - arg=$fil - # A libtool-controlled object. - - # Check to see that this really is a libtool object. - if (${SED} -e '2q' $arg | grep "^# Generated by .*$PACKAGE") >/dev/null 2>&1; then - pic_object= - non_pic_object= - - # Read the .lo file - # If there is no directory component, then add one. - case $arg in - */* | *\\*) . $arg ;; - *) . ./$arg ;; - esac - - if test -z "$pic_object" || \ - test -z "$non_pic_object" || - test "$pic_object" = none && \ - test "$non_pic_object" = none; then - $echo "$modename: cannot find name of object for \`$arg'" 1>&2 - exit $EXIT_FAILURE - fi - - # Extract subdirectory from the argument. - xdir=`$echo "X$arg" | $Xsed -e 's%/[^/]*$%%'` - if test "X$xdir" = "X$arg"; then - xdir= - else - xdir="$xdir/" - fi - - if test "$pic_object" != none; then - # Prepend the subdirectory the object is found in. - pic_object="$xdir$pic_object" - - if test "$prev" = dlfiles; then - if test "$build_libtool_libs" = yes && test "$dlopen_support" = yes; then - dlfiles="$dlfiles $pic_object" - prev= - continue - else - # If libtool objects are unsupported, then we need to preload. - prev=dlprefiles - fi - fi - - # CHECK ME: I think I busted this. -Ossama - if test "$prev" = dlprefiles; then - # Preload the old-style object. - dlprefiles="$dlprefiles $pic_object" - prev= - fi - - # A PIC object. - libobjs="$libobjs $pic_object" - arg="$pic_object" - fi - - # Non-PIC object. - if test "$non_pic_object" != none; then - # Prepend the subdirectory the object is found in. - non_pic_object="$xdir$non_pic_object" - - # A standard non-PIC object - non_pic_objects="$non_pic_objects $non_pic_object" - if test -z "$pic_object" || test "$pic_object" = none ; then - arg="$non_pic_object" - fi - fi - else - # Only an error if not doing a dry-run. - if test -z "$run"; then - $echo "$modename: \`$arg' is not a valid libtool object" 1>&2 - exit $EXIT_FAILURE - else - # Dry-run case. - - # Extract subdirectory from the argument. - xdir=`$echo "X$arg" | $Xsed -e 's%/[^/]*$%%'` - if test "X$xdir" = "X$arg"; then - xdir= - else - xdir="$xdir/" - fi - - pic_object=`$echo "X${xdir}${objdir}/${arg}" | $Xsed -e "$lo2o"` - non_pic_object=`$echo "X${xdir}${arg}" | $Xsed -e "$lo2o"` - libobjs="$libobjs $pic_object" - non_pic_objects="$non_pic_objects $non_pic_object" - fi - fi - done - else - $echo "$modename: link input file \`$save_arg' does not exist" - exit $EXIT_FAILURE - fi - arg=$save_arg - prev= - continue - ;; - rpath | xrpath) - # We need an absolute path. - case $arg in - [\\/]* | [A-Za-z]:[\\/]*) ;; - *) - $echo "$modename: only absolute run-paths are allowed" 1>&2 - exit $EXIT_FAILURE - ;; - esac - if test "$prev" = rpath; then - case "$rpath " in - *" $arg "*) ;; - *) rpath="$rpath $arg" ;; - esac - else - case "$xrpath " in - *" $arg "*) ;; - *) xrpath="$xrpath $arg" ;; - esac - fi - prev= - continue - ;; - xcompiler) - compiler_flags="$compiler_flags $qarg" - prev= - compile_command="$compile_command $qarg" - finalize_command="$finalize_command $qarg" - continue - ;; - xlinker) - linker_flags="$linker_flags $qarg" - compiler_flags="$compiler_flags $wl$qarg" - prev= - compile_command="$compile_command $wl$qarg" - finalize_command="$finalize_command $wl$qarg" - continue - ;; - xcclinker) - linker_flags="$linker_flags $qarg" - compiler_flags="$compiler_flags $qarg" - prev= - compile_command="$compile_command $qarg" - finalize_command="$finalize_command $qarg" - continue - ;; - shrext) - shrext_cmds="$arg" - prev= - continue - ;; - darwin_framework) - compiler_flags="$compiler_flags $arg" - compile_command="$compile_command $arg" - finalize_command="$finalize_command $arg" - prev= - continue - ;; - *) - eval "$prev=\"\$arg\"" - prev= - continue - ;; - esac - fi # test -n "$prev" - - prevarg="$arg" - - case $arg in - -all-static) - if test -n "$link_static_flag"; then - compile_command="$compile_command $link_static_flag" - finalize_command="$finalize_command $link_static_flag" - fi - continue - ;; - - -allow-undefined) - # FIXME: remove this flag sometime in the future. - $echo "$modename: \`-allow-undefined' is deprecated because it is the default" 1>&2 - continue - ;; - - -avoid-version) - avoid_version=yes - continue - ;; - - -dlopen) - prev=dlfiles - continue - ;; - - -dlpreopen) - prev=dlprefiles - continue - ;; - - -export-dynamic) - export_dynamic=yes - continue - ;; - - -export-symbols | -export-symbols-regex) - if test -n "$export_symbols" || test -n "$export_symbols_regex"; then - $echo "$modename: more than one -exported-symbols argument is not allowed" - exit $EXIT_FAILURE - fi - if test "X$arg" = "X-export-symbols"; then - prev=expsyms - else - prev=expsyms_regex - fi - continue - ;; - - -framework|-arch) - prev=darwin_framework - compiler_flags="$compiler_flags $arg" - compile_command="$compile_command $arg" - finalize_command="$finalize_command $arg" - continue - ;; - - -inst-prefix-dir) - prev=inst_prefix - continue - ;; - - # The native IRIX linker understands -LANG:*, -LIST:* and -LNO:* - # so, if we see these flags be careful not to treat them like -L - -L[A-Z][A-Z]*:*) - case $with_gcc/$host in - no/*-*-irix* | /*-*-irix*) - compile_command="$compile_command $arg" - finalize_command="$finalize_command $arg" - ;; - esac - continue - ;; - - -L*) - dir=`$echo "X$arg" | $Xsed -e 's/^-L//'` - # We need an absolute path. - case $dir in - [\\/]* | [A-Za-z]:[\\/]*) ;; - *) - absdir=`cd "$dir" && pwd` - if test -z "$absdir"; then - $echo "$modename: cannot determine absolute directory name of \`$dir'" 1>&2 - exit $EXIT_FAILURE - fi - dir="$absdir" - ;; - esac - case "$deplibs " in - *" -L$dir "*) ;; - *) - deplibs="$deplibs -L$dir" - lib_search_path="$lib_search_path $dir" - ;; - esac - case $host in - *-*-cygwin* | *-*-mingw* | *-*-pw32* | *-*-os2*) - case :$dllsearchpath: in - *":$dir:"*) ;; - *) dllsearchpath="$dllsearchpath:$dir";; - esac - ;; - esac - continue - ;; - - -l*) - if test "X$arg" = "X-lc" || test "X$arg" = "X-lm"; then - case $host in - *-*-cygwin* | *-*-pw32* | *-*-beos*) - # These systems don't actually have a C or math library (as such) - continue - ;; - *-*-mingw* | *-*-os2*) - # These systems don't actually have a C library (as such) - test "X$arg" = "X-lc" && continue - ;; - *-*-openbsd* | *-*-freebsd* | *-*-dragonfly*) - # Do not include libc due to us having libc/libc_r. - test "X$arg" = "X-lc" && continue - ;; - *-*-rhapsody* | *-*-darwin1.[012]) - # Rhapsody C and math libraries are in the System framework - deplibs="$deplibs -framework System" - continue - esac - elif test "X$arg" = "X-lc_r"; then - case $host in - *-*-openbsd* | *-*-freebsd* | *-*-dragonfly*) - # Do not include libc_r directly, use -pthread flag. - continue - ;; - esac - fi - deplibs="$deplibs $arg" - continue - ;; - - # Tru64 UNIX uses -model [arg] to determine the layout of C++ - # classes, name mangling, and exception handling. - -model) - compile_command="$compile_command $arg" - compiler_flags="$compiler_flags $arg" - finalize_command="$finalize_command $arg" - prev=xcompiler - continue - ;; - - -mt|-mthreads|-kthread|-Kthread|-pthread|-pthreads|--thread-safe) - compiler_flags="$compiler_flags $arg" - compile_command="$compile_command $arg" - finalize_command="$finalize_command $arg" - continue - ;; - - -module) - module=yes - continue - ;; - - # -64, -mips[0-9] enable 64-bit mode on the SGI compiler - # -r[0-9][0-9]* specifies the processor on the SGI compiler - # -xarch=*, -xtarget=* enable 64-bit mode on the Sun compiler - # +DA*, +DD* enable 64-bit mode on the HP compiler - # -q* pass through compiler args for the IBM compiler - # -m* pass through architecture-specific compiler args for GCC - -64|-mips[0-9]|-r[0-9][0-9]*|-xarch=*|-xtarget=*|+DA*|+DD*|-q*|-m*) - - # Unknown arguments in both finalize_command and compile_command need - # to be aesthetically quoted because they are evaled later. - arg=`$echo "X$arg" | $Xsed -e "$sed_quote_subst"` - case $arg in - *[\[\~\#\^\&\*\(\)\{\}\|\;\<\>\?\'\ \ ]*|*]*|"") - arg="\"$arg\"" - ;; - esac - compile_command="$compile_command $arg" - finalize_command="$finalize_command $arg" - if test "$with_gcc" = "yes" ; then - compiler_flags="$compiler_flags $arg" - fi - continue - ;; - - -shrext) - prev=shrext - continue - ;; - - -no-fast-install) - fast_install=no - continue - ;; - - -no-install) - case $host in - *-*-cygwin* | *-*-mingw* | *-*-pw32* | *-*-os2*) - # The PATH hackery in wrapper scripts is required on Windows - # in order for the loader to find any dlls it needs. - $echo "$modename: warning: \`-no-install' is ignored for $host" 1>&2 - $echo "$modename: warning: assuming \`-no-fast-install' instead" 1>&2 - fast_install=no - ;; - *) no_install=yes ;; - esac - continue - ;; - - -no-undefined) - allow_undefined=no - continue - ;; - - -objectlist) - prev=objectlist - continue - ;; - - -o) prev=output ;; - - -precious-files-regex) - prev=precious_regex - continue - ;; - - -release) - prev=release - continue - ;; - - -rpath) - prev=rpath - continue - ;; - - -R) - prev=xrpath - continue - ;; - - -R*) - dir=`$echo "X$arg" | $Xsed -e 's/^-R//'` - # We need an absolute path. - case $dir in - [\\/]* | [A-Za-z]:[\\/]*) ;; - *) - $echo "$modename: only absolute run-paths are allowed" 1>&2 - exit $EXIT_FAILURE - ;; - esac - case "$xrpath " in - *" $dir "*) ;; - *) xrpath="$xrpath $dir" ;; - esac - continue - ;; - - -static) - # The effects of -static are defined in a previous loop. - # We used to do the same as -all-static on platforms that - # didn't have a PIC flag, but the assumption that the effects - # would be equivalent was wrong. It would break on at least - # Digital Unix and AIX. - continue - ;; - - -thread-safe) - thread_safe=yes - continue - ;; - - -version-info) - prev=vinfo - continue - ;; - -version-number) - prev=vinfo - vinfo_number=yes - continue - ;; - - -Wc,*) - args=`$echo "X$arg" | $Xsed -e "$sed_quote_subst" -e 's/^-Wc,//'` - arg= - save_ifs="$IFS"; IFS=',' - for flag in $args; do - IFS="$save_ifs" - case $flag in - *[\[\~\#\^\&\*\(\)\{\}\|\;\<\>\?\'\ \ ]*|*]*|"") - flag="\"$flag\"" - ;; - esac - arg="$arg $wl$flag" - compiler_flags="$compiler_flags $flag" - done - IFS="$save_ifs" - arg=`$echo "X$arg" | $Xsed -e "s/^ //"` - ;; - - -Wl,*) - args=`$echo "X$arg" | $Xsed -e "$sed_quote_subst" -e 's/^-Wl,//'` - arg= - save_ifs="$IFS"; IFS=',' - for flag in $args; do - IFS="$save_ifs" - case $flag in - *[\[\~\#\^\&\*\(\)\{\}\|\;\<\>\?\'\ \ ]*|*]*|"") - flag="\"$flag\"" - ;; - esac - arg="$arg $wl$flag" - compiler_flags="$compiler_flags $wl$flag" - linker_flags="$linker_flags $flag" - done - IFS="$save_ifs" - arg=`$echo "X$arg" | $Xsed -e "s/^ //"` - ;; - - -Xcompiler) - prev=xcompiler - continue - ;; - - -Xlinker) - prev=xlinker - continue - ;; - - -XCClinker) - prev=xcclinker - continue - ;; - - # Some other compiler flag. - -* | +*) - # Unknown arguments in both finalize_command and compile_command need - # to be aesthetically quoted because they are evaled later. - arg=`$echo "X$arg" | $Xsed -e "$sed_quote_subst"` - case $arg in - *[\[\~\#\^\&\*\(\)\{\}\|\;\<\>\?\'\ \ ]*|*]*|"") - arg="\"$arg\"" - ;; - esac - ;; - - *.$objext) - # A standard object. - objs="$objs $arg" - ;; - - *.lo) - # A libtool-controlled object. - - # Check to see that this really is a libtool object. - if (${SED} -e '2q' $arg | grep "^# Generated by .*$PACKAGE") >/dev/null 2>&1; then - pic_object= - non_pic_object= - - # Read the .lo file - # If there is no directory component, then add one. - case $arg in - */* | *\\*) . $arg ;; - *) . ./$arg ;; - esac - - if test -z "$pic_object" || \ - test -z "$non_pic_object" || - test "$pic_object" = none && \ - test "$non_pic_object" = none; then - $echo "$modename: cannot find name of object for \`$arg'" 1>&2 - exit $EXIT_FAILURE - fi - - # Extract subdirectory from the argument. - xdir=`$echo "X$arg" | $Xsed -e 's%/[^/]*$%%'` - if test "X$xdir" = "X$arg"; then - xdir= - else - xdir="$xdir/" - fi - - if test "$pic_object" != none; then - # Prepend the subdirectory the object is found in. - pic_object="$xdir$pic_object" - - if test "$prev" = dlfiles; then - if test "$build_libtool_libs" = yes && test "$dlopen_support" = yes; then - dlfiles="$dlfiles $pic_object" - prev= - continue - else - # If libtool objects are unsupported, then we need to preload. - prev=dlprefiles - fi - fi - - # CHECK ME: I think I busted this. -Ossama - if test "$prev" = dlprefiles; then - # Preload the old-style object. - dlprefiles="$dlprefiles $pic_object" - prev= - fi - - # A PIC object. - libobjs="$libobjs $pic_object" - arg="$pic_object" - fi - - # Non-PIC object. - if test "$non_pic_object" != none; then - # Prepend the subdirectory the object is found in. - non_pic_object="$xdir$non_pic_object" - - # A standard non-PIC object - non_pic_objects="$non_pic_objects $non_pic_object" - if test -z "$pic_object" || test "$pic_object" = none ; then - arg="$non_pic_object" - fi - fi - else - # Only an error if not doing a dry-run. - if test -z "$run"; then - $echo "$modename: \`$arg' is not a valid libtool object" 1>&2 - exit $EXIT_FAILURE - else - # Dry-run case. - - # Extract subdirectory from the argument. - xdir=`$echo "X$arg" | $Xsed -e 's%/[^/]*$%%'` - if test "X$xdir" = "X$arg"; then - xdir= - else - xdir="$xdir/" - fi - - pic_object=`$echo "X${xdir}${objdir}/${arg}" | $Xsed -e "$lo2o"` - non_pic_object=`$echo "X${xdir}${arg}" | $Xsed -e "$lo2o"` - libobjs="$libobjs $pic_object" - non_pic_objects="$non_pic_objects $non_pic_object" - fi - fi - ;; - - *.$libext) - # An archive. - deplibs="$deplibs $arg" - old_deplibs="$old_deplibs $arg" - continue - ;; - - *.la) - # A libtool-controlled library. - - if test "$prev" = dlfiles; then - # This library was specified with -dlopen. - dlfiles="$dlfiles $arg" - prev= - elif test "$prev" = dlprefiles; then - # The library was specified with -dlpreopen. - dlprefiles="$dlprefiles $arg" - prev= - else - deplibs="$deplibs $arg" - fi - continue - ;; - - # Some other compiler argument. - *) - # Unknown arguments in both finalize_command and compile_command need - # to be aesthetically quoted because they are evaled later. - arg=`$echo "X$arg" | $Xsed -e "$sed_quote_subst"` - case $arg in - *[\[\~\#\^\&\*\(\)\{\}\|\;\<\>\?\'\ \ ]*|*]*|"") - arg="\"$arg\"" - ;; - esac - ;; - esac # arg - - # Now actually substitute the argument into the commands. - if test -n "$arg"; then - compile_command="$compile_command $arg" - finalize_command="$finalize_command $arg" - fi - done # argument parsing loop - - if test -n "$prev"; then - $echo "$modename: the \`$prevarg' option requires an argument" 1>&2 - $echo "$help" 1>&2 - exit $EXIT_FAILURE - fi - - if test "$export_dynamic" = yes && test -n "$export_dynamic_flag_spec"; then - eval arg=\"$export_dynamic_flag_spec\" - compile_command="$compile_command $arg" - finalize_command="$finalize_command $arg" - fi - - oldlibs= - # calculate the name of the file, without its directory - outputname=`$echo "X$output" | $Xsed -e 's%^.*/%%'` - libobjs_save="$libobjs" - - if test -n "$shlibpath_var"; then - # get the directories listed in $shlibpath_var - eval shlib_search_path=\`\$echo \"X\${$shlibpath_var}\" \| \$Xsed -e \'s/:/ /g\'\` - else - shlib_search_path= - fi - eval sys_lib_search_path=\"$sys_lib_search_path_spec\" - eval sys_lib_dlsearch_path=\"$sys_lib_dlsearch_path_spec\" - - output_objdir=`$echo "X$output" | $Xsed -e 's%/[^/]*$%%'` - if test "X$output_objdir" = "X$output"; then - output_objdir="$objdir" - else - output_objdir="$output_objdir/$objdir" - fi - # Create the object directory. - if test ! -d "$output_objdir"; then - $show "$mkdir $output_objdir" - $run $mkdir $output_objdir - status=$? - if test "$status" -ne 0 && test ! -d "$output_objdir"; then - exit $status - fi - fi - - # Determine the type of output - case $output in - "") - $echo "$modename: you must specify an output file" 1>&2 - $echo "$help" 1>&2 - exit $EXIT_FAILURE - ;; - *.$libext) linkmode=oldlib ;; - *.lo | *.$objext) linkmode=obj ;; - *.la) linkmode=lib ;; - *) linkmode=prog ;; # Anything else should be a program. - esac - - case $host in - *cygwin* | *mingw* | *pw32*) - # don't eliminate duplications in $postdeps and $predeps - duplicate_compiler_generated_deps=yes - ;; - *) - duplicate_compiler_generated_deps=$duplicate_deps - ;; - esac - specialdeplibs= - - libs= - # Find all interdependent deplibs by searching for libraries - # that are linked more than once (e.g. -la -lb -la) - for deplib in $deplibs; do - if test "X$duplicate_deps" = "Xyes" ; then - case "$libs " in - *" $deplib "*) specialdeplibs="$specialdeplibs $deplib" ;; - esac - fi - libs="$libs $deplib" - done - - if test "$linkmode" = lib; then - libs="$predeps $libs $compiler_lib_search_path $postdeps" - - # Compute libraries that are listed more than once in $predeps - # $postdeps and mark them as special (i.e., whose duplicates are - # not to be eliminated). - pre_post_deps= - if test "X$duplicate_compiler_generated_deps" = "Xyes" ; then - for pre_post_dep in $predeps $postdeps; do - case "$pre_post_deps " in - *" $pre_post_dep "*) specialdeplibs="$specialdeplibs $pre_post_deps" ;; - esac - pre_post_deps="$pre_post_deps $pre_post_dep" - done - fi - pre_post_deps= - fi - - deplibs= - newdependency_libs= - newlib_search_path= - need_relink=no # whether we're linking any uninstalled libtool libraries - notinst_deplibs= # not-installed libtool libraries - notinst_path= # paths that contain not-installed libtool libraries - case $linkmode in - lib) - passes="conv link" - for file in $dlfiles $dlprefiles; do - case $file in - *.la) ;; - *) - $echo "$modename: libraries can \`-dlopen' only libtool libraries: $file" 1>&2 - exit $EXIT_FAILURE - ;; - esac - done - ;; - prog) - compile_deplibs= - finalize_deplibs= - alldeplibs=no - newdlfiles= - newdlprefiles= - passes="conv scan dlopen dlpreopen link" - ;; - *) passes="conv" - ;; - esac - for pass in $passes; do - if test "$linkmode,$pass" = "lib,link" || - test "$linkmode,$pass" = "prog,scan"; then - libs="$deplibs" - deplibs= - fi - if test "$linkmode" = prog; then - case $pass in - dlopen) libs="$dlfiles" ;; - dlpreopen) libs="$dlprefiles" ;; - link) libs="$deplibs %DEPLIBS% $dependency_libs" ;; - esac - fi - if test "$pass" = dlopen; then - # Collect dlpreopened libraries - save_deplibs="$deplibs" - deplibs= - fi - for deplib in $libs; do - lib= - found=no - case $deplib in - -mt|-mthreads|-kthread|-Kthread|-pthread|-pthreads|--thread-safe) - if test "$linkmode,$pass" = "prog,link"; then - compile_deplibs="$deplib $compile_deplibs" - finalize_deplibs="$deplib $finalize_deplibs" - else - compiler_flags="$compiler_flags $deplib" - fi - continue - ;; - -l*) - if test "$linkmode" != lib && test "$linkmode" != prog; then - $echo "$modename: warning: \`-l' is ignored for archives/objects" 1>&2 - continue - fi - name=`$echo "X$deplib" | $Xsed -e 's/^-l//'` - for searchdir in $newlib_search_path $lib_search_path $sys_lib_search_path $shlib_search_path; do - for search_ext in .la $std_shrext .so .a; do - # Search the libtool library - lib="$searchdir/lib${name}${search_ext}" - if test -f "$lib"; then - if test "$search_ext" = ".la"; then - found=yes - else - found=no - fi - break 2 - fi - done - done - if test "$found" != yes; then - # deplib doesn't seem to be a libtool library - if test "$linkmode,$pass" = "prog,link"; then - compile_deplibs="$deplib $compile_deplibs" - finalize_deplibs="$deplib $finalize_deplibs" - else - deplibs="$deplib $deplibs" - test "$linkmode" = lib && newdependency_libs="$deplib $newdependency_libs" - fi - continue - else # deplib is a libtool library - # If $allow_libtool_libs_with_static_runtimes && $deplib is a stdlib, - # We need to do some special things here, and not later. - if test "X$allow_libtool_libs_with_static_runtimes" = "Xyes" ; then - case " $predeps $postdeps " in - *" $deplib "*) - if (${SED} -e '2q' $lib | - grep "^# Generated by .*$PACKAGE") >/dev/null 2>&1; then - library_names= - old_library= - case $lib in - */* | *\\*) . $lib ;; - *) . ./$lib ;; - esac - for l in $old_library $library_names; do - ll="$l" - done - if test "X$ll" = "X$old_library" ; then # only static version available - found=no - ladir=`$echo "X$lib" | $Xsed -e 's%/[^/]*$%%'` - test "X$ladir" = "X$lib" && ladir="." - lib=$ladir/$old_library - if test "$linkmode,$pass" = "prog,link"; then - compile_deplibs="$deplib $compile_deplibs" - finalize_deplibs="$deplib $finalize_deplibs" - else - deplibs="$deplib $deplibs" - test "$linkmode" = lib && newdependency_libs="$deplib $newdependency_libs" - fi - continue - fi - fi - ;; - *) ;; - esac - fi - fi - ;; # -l - -L*) - case $linkmode in - lib) - deplibs="$deplib $deplibs" - test "$pass" = conv && continue - newdependency_libs="$deplib $newdependency_libs" - newlib_search_path="$newlib_search_path "`$echo "X$deplib" | $Xsed -e 's/^-L//'` - ;; - prog) - if test "$pass" = conv; then - deplibs="$deplib $deplibs" - continue - fi - if test "$pass" = scan; then - deplibs="$deplib $deplibs" - else - compile_deplibs="$deplib $compile_deplibs" - finalize_deplibs="$deplib $finalize_deplibs" - fi - newlib_search_path="$newlib_search_path "`$echo "X$deplib" | $Xsed -e 's/^-L//'` - ;; - *) - $echo "$modename: warning: \`-L' is ignored for archives/objects" 1>&2 - ;; - esac # linkmode - continue - ;; # -L - -R*) - if test "$pass" = link; then - dir=`$echo "X$deplib" | $Xsed -e 's/^-R//'` - # Make sure the xrpath contains only unique directories. - case "$xrpath " in - *" $dir "*) ;; - *) xrpath="$xrpath $dir" ;; - esac - fi - deplibs="$deplib $deplibs" - continue - ;; - *.la) lib="$deplib" ;; - *.$libext) - if test "$pass" = conv; then - deplibs="$deplib $deplibs" - continue - fi - case $linkmode in - lib) - valid_a_lib=no - case $deplibs_check_method in - match_pattern*) - set dummy $deplibs_check_method - match_pattern_regex=`expr "$deplibs_check_method" : "$2 \(.*\)"` - if eval $echo \"$deplib\" 2>/dev/null \ - | $SED 10q \ - | $EGREP "$match_pattern_regex" > /dev/null; then - valid_a_lib=yes - fi - ;; - pass_all) - valid_a_lib=yes - ;; - esac - if test "$valid_a_lib" != yes; then - $echo - $echo "*** Warning: Trying to link with static lib archive $deplib." - $echo "*** I have the capability to make that library automatically link in when" - $echo "*** you link to this library. But I can only do this if you have a" - $echo "*** shared version of the library, which you do not appear to have" - $echo "*** because the file extensions .$libext of this argument makes me believe" - $echo "*** that it is just a static archive that I should not used here." - else - $echo - $echo "*** Warning: Linking the shared library $output against the" - $echo "*** static library $deplib is not portable!" - deplibs="$deplib $deplibs" - fi - continue - ;; - prog) - if test "$pass" != link; then - deplibs="$deplib $deplibs" - else - compile_deplibs="$deplib $compile_deplibs" - finalize_deplibs="$deplib $finalize_deplibs" - fi - continue - ;; - esac # linkmode - ;; # *.$libext - *.lo | *.$objext) - if test "$pass" = conv; then - deplibs="$deplib $deplibs" - elif test "$linkmode" = prog; then - if test "$pass" = dlpreopen || test "$dlopen_support" != yes || test "$build_libtool_libs" = no; then - # If there is no dlopen support or we're linking statically, - # we need to preload. - newdlprefiles="$newdlprefiles $deplib" - compile_deplibs="$deplib $compile_deplibs" - finalize_deplibs="$deplib $finalize_deplibs" - else - newdlfiles="$newdlfiles $deplib" - fi - fi - continue - ;; - %DEPLIBS%) - alldeplibs=yes - continue - ;; - esac # case $deplib - if test "$found" = yes || test -f "$lib"; then : - else - $echo "$modename: cannot find the library \`$lib'" 1>&2 - exit $EXIT_FAILURE - fi - - # Check to see that this really is a libtool archive. - if (${SED} -e '2q' $lib | grep "^# Generated by .*$PACKAGE") >/dev/null 2>&1; then : - else - $echo "$modename: \`$lib' is not a valid libtool archive" 1>&2 - exit $EXIT_FAILURE - fi - - ladir=`$echo "X$lib" | $Xsed -e 's%/[^/]*$%%'` - test "X$ladir" = "X$lib" && ladir="." - - dlname= - dlopen= - dlpreopen= - libdir= - library_names= - old_library= - # If the library was installed with an old release of libtool, - # it will not redefine variables installed, or shouldnotlink - installed=yes - shouldnotlink=no - avoidtemprpath= - - - # Read the .la file - case $lib in - */* | *\\*) . $lib ;; - *) . ./$lib ;; - esac - - if test "$linkmode,$pass" = "lib,link" || - test "$linkmode,$pass" = "prog,scan" || - { test "$linkmode" != prog && test "$linkmode" != lib; }; then - test -n "$dlopen" && dlfiles="$dlfiles $dlopen" - test -n "$dlpreopen" && dlprefiles="$dlprefiles $dlpreopen" - fi - - if test "$pass" = conv; then - # Only check for convenience libraries - deplibs="$lib $deplibs" - if test -z "$libdir"; then - if test -z "$old_library"; then - $echo "$modename: cannot find name of link library for \`$lib'" 1>&2 - exit $EXIT_FAILURE - fi - # It is a libtool convenience library, so add in its objects. - convenience="$convenience $ladir/$objdir/$old_library" - old_convenience="$old_convenience $ladir/$objdir/$old_library" - tmp_libs= - for deplib in $dependency_libs; do - deplibs="$deplib $deplibs" - if test "X$duplicate_deps" = "Xyes" ; then - case "$tmp_libs " in - *" $deplib "*) specialdeplibs="$specialdeplibs $deplib" ;; - esac - fi - tmp_libs="$tmp_libs $deplib" - done - elif test "$linkmode" != prog && test "$linkmode" != lib; then - $echo "$modename: \`$lib' is not a convenience library" 1>&2 - exit $EXIT_FAILURE - fi - continue - fi # $pass = conv - - - # Get the name of the library we link against. - linklib= - for l in $old_library $library_names; do - linklib="$l" - done - if test -z "$linklib"; then - $echo "$modename: cannot find name of link library for \`$lib'" 1>&2 - exit $EXIT_FAILURE - fi - - # This library was specified with -dlopen. - if test "$pass" = dlopen; then - if test -z "$libdir"; then - $echo "$modename: cannot -dlopen a convenience library: \`$lib'" 1>&2 - exit $EXIT_FAILURE - fi - if test -z "$dlname" || - test "$dlopen_support" != yes || - test "$build_libtool_libs" = no; then - # If there is no dlname, no dlopen support or we're linking - # statically, we need to preload. We also need to preload any - # dependent libraries so libltdl's deplib preloader doesn't - # bomb out in the load deplibs phase. - dlprefiles="$dlprefiles $lib $dependency_libs" - else - newdlfiles="$newdlfiles $lib" - fi - continue - fi # $pass = dlopen - - # We need an absolute path. - case $ladir in - [\\/]* | [A-Za-z]:[\\/]*) abs_ladir="$ladir" ;; - *) - abs_ladir=`cd "$ladir" && pwd` - if test -z "$abs_ladir"; then - $echo "$modename: warning: cannot determine absolute directory name of \`$ladir'" 1>&2 - $echo "$modename: passing it literally to the linker, although it might fail" 1>&2 - abs_ladir="$ladir" - fi - ;; - esac - laname=`$echo "X$lib" | $Xsed -e 's%^.*/%%'` - - # Find the relevant object directory and library name. - if test "X$installed" = Xyes; then - if test ! -f "$libdir/$linklib" && test -f "$abs_ladir/$linklib"; then - $echo "$modename: warning: library \`$lib' was moved." 1>&2 - dir="$ladir" - absdir="$abs_ladir" - libdir="$abs_ladir" - else - dir="$libdir" - absdir="$libdir" - fi - test "X$hardcode_automatic" = Xyes && avoidtemprpath=yes - else - if test ! -f "$ladir/$objdir/$linklib" && test -f "$abs_ladir/$linklib"; then - dir="$ladir" - absdir="$abs_ladir" - # Remove this search path later - notinst_path="$notinst_path $abs_ladir" - else - dir="$ladir/$objdir" - absdir="$abs_ladir/$objdir" - # Remove this search path later - notinst_path="$notinst_path $abs_ladir" - fi - fi # $installed = yes - name=`$echo "X$laname" | $Xsed -e 's/\.la$//' -e 's/^lib//'` - - # This library was specified with -dlpreopen. - if test "$pass" = dlpreopen; then - if test -z "$libdir"; then - $echo "$modename: cannot -dlpreopen a convenience library: \`$lib'" 1>&2 - exit $EXIT_FAILURE - fi - # Prefer using a static library (so that no silly _DYNAMIC symbols - # are required to link). - if test -n "$old_library"; then - newdlprefiles="$newdlprefiles $dir/$old_library" - # Otherwise, use the dlname, so that lt_dlopen finds it. - elif test -n "$dlname"; then - newdlprefiles="$newdlprefiles $dir/$dlname" - else - newdlprefiles="$newdlprefiles $dir/$linklib" - fi - fi # $pass = dlpreopen - - if test -z "$libdir"; then - # Link the convenience library - if test "$linkmode" = lib; then - deplibs="$dir/$old_library $deplibs" - elif test "$linkmode,$pass" = "prog,link"; then - compile_deplibs="$dir/$old_library $compile_deplibs" - finalize_deplibs="$dir/$old_library $finalize_deplibs" - else - deplibs="$lib $deplibs" # used for prog,scan pass - fi - continue - fi - - - if test "$linkmode" = prog && test "$pass" != link; then - newlib_search_path="$newlib_search_path $ladir" - deplibs="$lib $deplibs" - - linkalldeplibs=no - if test "$link_all_deplibs" != no || test -z "$library_names" || - test "$build_libtool_libs" = no; then - linkalldeplibs=yes - fi - - tmp_libs= - for deplib in $dependency_libs; do - case $deplib in - -L*) newlib_search_path="$newlib_search_path "`$echo "X$deplib" | $Xsed -e 's/^-L//'`;; ### testsuite: skip nested quoting test - esac - # Need to link against all dependency_libs? - if test "$linkalldeplibs" = yes; then - deplibs="$deplib $deplibs" - else - # Need to hardcode shared library paths - # or/and link against static libraries - newdependency_libs="$deplib $newdependency_libs" - fi - if test "X$duplicate_deps" = "Xyes" ; then - case "$tmp_libs " in - *" $deplib "*) specialdeplibs="$specialdeplibs $deplib" ;; - esac - fi - tmp_libs="$tmp_libs $deplib" - done # for deplib - continue - fi # $linkmode = prog... - - if test "$linkmode,$pass" = "prog,link"; then - if test -n "$library_names" && - { test "$prefer_static_libs" = no || test -z "$old_library"; }; then - # We need to hardcode the library path - if test -n "$shlibpath_var" && test -z "$avoidtemprpath" ; then - # Make sure the rpath contains only unique directories. - case "$temp_rpath " in - *" $dir "*) ;; - *" $absdir "*) ;; - *) temp_rpath="$temp_rpath $absdir" ;; - esac - fi - - # Hardcode the library path. - # Skip directories that are in the system default run-time - # search path. - case " $sys_lib_dlsearch_path " in - *" $absdir "*) ;; - *) - case "$compile_rpath " in - *" $absdir "*) ;; - *) compile_rpath="$compile_rpath $absdir" - esac - ;; - esac - case " $sys_lib_dlsearch_path " in - *" $libdir "*) ;; - *) - case "$finalize_rpath " in - *" $libdir "*) ;; - *) finalize_rpath="$finalize_rpath $libdir" - esac - ;; - esac - fi # $linkmode,$pass = prog,link... - - if test "$alldeplibs" = yes && - { test "$deplibs_check_method" = pass_all || - { test "$build_libtool_libs" = yes && - test -n "$library_names"; }; }; then - # We only need to search for static libraries - continue - fi - fi - - link_static=no # Whether the deplib will be linked statically - if test -n "$library_names" && - { test "$prefer_static_libs" = no || test -z "$old_library"; }; then - if test "$installed" = no; then - notinst_deplibs="$notinst_deplibs $lib" - need_relink=yes - fi - # This is a shared library - - # Warn about portability, can't link against -module's on - # some systems (darwin) - if test "$shouldnotlink" = yes && test "$pass" = link ; then - $echo - if test "$linkmode" = prog; then - $echo "*** Warning: Linking the executable $output against the loadable module" - else - $echo "*** Warning: Linking the shared library $output against the loadable module" - fi - $echo "*** $linklib is not portable!" - fi - if test "$linkmode" = lib && - test "$hardcode_into_libs" = yes; then - # Hardcode the library path. - # Skip directories that are in the system default run-time - # search path. - case " $sys_lib_dlsearch_path " in - *" $absdir "*) ;; - *) - case "$compile_rpath " in - *" $absdir "*) ;; - *) compile_rpath="$compile_rpath $absdir" - esac - ;; - esac - case " $sys_lib_dlsearch_path " in - *" $libdir "*) ;; - *) - case "$finalize_rpath " in - *" $libdir "*) ;; - *) finalize_rpath="$finalize_rpath $libdir" - esac - ;; - esac - fi - - if test -n "$old_archive_from_expsyms_cmds"; then - # figure out the soname - set dummy $library_names - realname="$2" - shift; shift - libname=`eval \\$echo \"$libname_spec\"` - # use dlname if we got it. it's perfectly good, no? - if test -n "$dlname"; then - soname="$dlname" - elif test -n "$soname_spec"; then - # bleh windows - case $host in - *cygwin* | mingw*) - major=`expr $current - $age` - versuffix="-$major" - ;; - esac - eval soname=\"$soname_spec\" - else - soname="$realname" - fi - - # Make a new name for the extract_expsyms_cmds to use - soroot="$soname" - soname=`$echo $soroot | ${SED} -e 's/^.*\///'` - newlib="libimp-`$echo $soname | ${SED} 's/^lib//;s/\.dll$//'`.a" - - # If the library has no export list, then create one now - if test -f "$output_objdir/$soname-def"; then : - else - $show "extracting exported symbol list from \`$soname'" - save_ifs="$IFS"; IFS='~' - cmds=$extract_expsyms_cmds - for cmd in $cmds; do - IFS="$save_ifs" - eval cmd=\"$cmd\" - $show "$cmd" - $run eval "$cmd" || exit $? - done - IFS="$save_ifs" - fi - - # Create $newlib - if test -f "$output_objdir/$newlib"; then :; else - $show "generating import library for \`$soname'" - save_ifs="$IFS"; IFS='~' - cmds=$old_archive_from_expsyms_cmds - for cmd in $cmds; do - IFS="$save_ifs" - eval cmd=\"$cmd\" - $show "$cmd" - $run eval "$cmd" || exit $? - done - IFS="$save_ifs" - fi - # make sure the library variables are pointing to the new library - dir=$output_objdir - linklib=$newlib - fi # test -n "$old_archive_from_expsyms_cmds" - - if test "$linkmode" = prog || test "$mode" != relink; then - add_shlibpath= - add_dir= - add= - lib_linked=yes - case $hardcode_action in - immediate | unsupported) - if test "$hardcode_direct" = no; then - add="$dir/$linklib" - case $host in - *-*-sco3.2v5* ) add_dir="-L$dir" ;; - *-*-darwin* ) - # if the lib is a module then we can not link against - # it, someone is ignoring the new warnings I added - if /usr/bin/file -L $add 2> /dev/null | $EGREP "bundle" >/dev/null ; then - $echo "** Warning, lib $linklib is a module, not a shared library" - if test -z "$old_library" ; then - $echo - $echo "** And there doesn't seem to be a static archive available" - $echo "** The link will probably fail, sorry" - else - add="$dir/$old_library" - fi - fi - esac - elif test "$hardcode_minus_L" = no; then - case $host in - *-*-sunos*) add_shlibpath="$dir" ;; - esac - add_dir="-L$dir" - add="-l$name" - elif test "$hardcode_shlibpath_var" = no; then - add_shlibpath="$dir" - add="-l$name" - else - lib_linked=no - fi - ;; - relink) - if test "$hardcode_direct" = yes; then - add="$dir/$linklib" - elif test "$hardcode_minus_L" = yes; then - add_dir="-L$dir" - # Try looking first in the location we're being installed to. - if test -n "$inst_prefix_dir"; then - case $libdir in - [\\/]*) - add_dir="$add_dir -L$inst_prefix_dir$libdir" - ;; - esac - fi - add="-l$name" - elif test "$hardcode_shlibpath_var" = yes; then - add_shlibpath="$dir" - add="-l$name" - else - lib_linked=no - fi - ;; - *) lib_linked=no ;; - esac - - if test "$lib_linked" != yes; then - $echo "$modename: configuration error: unsupported hardcode properties" - exit $EXIT_FAILURE - fi - - if test -n "$add_shlibpath"; then - case :$compile_shlibpath: in - *":$add_shlibpath:"*) ;; - *) compile_shlibpath="$compile_shlibpath$add_shlibpath:" ;; - esac - fi - if test "$linkmode" = prog; then - test -n "$add_dir" && compile_deplibs="$add_dir $compile_deplibs" - test -n "$add" && compile_deplibs="$add $compile_deplibs" - else - test -n "$add_dir" && deplibs="$add_dir $deplibs" - test -n "$add" && deplibs="$add $deplibs" - if test "$hardcode_direct" != yes && \ - test "$hardcode_minus_L" != yes && \ - test "$hardcode_shlibpath_var" = yes; then - case :$finalize_shlibpath: in - *":$libdir:"*) ;; - *) finalize_shlibpath="$finalize_shlibpath$libdir:" ;; - esac - fi - fi - fi - - if test "$linkmode" = prog || test "$mode" = relink; then - add_shlibpath= - add_dir= - add= - # Finalize command for both is simple: just hardcode it. - if test "$hardcode_direct" = yes; then - add="$libdir/$linklib" - elif test "$hardcode_minus_L" = yes; then - add_dir="-L$libdir" - add="-l$name" - elif test "$hardcode_shlibpath_var" = yes; then - case :$finalize_shlibpath: in - *":$libdir:"*) ;; - *) finalize_shlibpath="$finalize_shlibpath$libdir:" ;; - esac - add="-l$name" - elif test "$hardcode_automatic" = yes; then - if test -n "$inst_prefix_dir" && - test -f "$inst_prefix_dir$libdir/$linklib" ; then - add="$inst_prefix_dir$libdir/$linklib" - else - add="$libdir/$linklib" - fi - else - # We cannot seem to hardcode it, guess we'll fake it. - add_dir="-L$libdir" - # Try looking first in the location we're being installed to. - if test -n "$inst_prefix_dir"; then - case $libdir in - [\\/]*) - add_dir="$add_dir -L$inst_prefix_dir$libdir" - ;; - esac - fi - add="-l$name" - fi - - if test "$linkmode" = prog; then - test -n "$add_dir" && finalize_deplibs="$add_dir $finalize_deplibs" - test -n "$add" && finalize_deplibs="$add $finalize_deplibs" - else - test -n "$add_dir" && deplibs="$add_dir $deplibs" - test -n "$add" && deplibs="$add $deplibs" - fi - fi - elif test "$linkmode" = prog; then - # Here we assume that one of hardcode_direct or hardcode_minus_L - # is not unsupported. This is valid on all known static and - # shared platforms. - if test "$hardcode_direct" != unsupported; then - test -n "$old_library" && linklib="$old_library" - compile_deplibs="$dir/$linklib $compile_deplibs" - finalize_deplibs="$dir/$linklib $finalize_deplibs" - else - compile_deplibs="-l$name -L$dir $compile_deplibs" - finalize_deplibs="-l$name -L$dir $finalize_deplibs" - fi - elif test "$build_libtool_libs" = yes; then - # Not a shared library - if test "$deplibs_check_method" != pass_all; then - # We're trying link a shared library against a static one - # but the system doesn't support it. - - # Just print a warning and add the library to dependency_libs so - # that the program can be linked against the static library. - $echo - $echo "*** Warning: This system can not link to static lib archive $lib." - $echo "*** I have the capability to make that library automatically link in when" - $echo "*** you link to this library. But I can only do this if you have a" - $echo "*** shared version of the library, which you do not appear to have." - if test "$module" = yes; then - $echo "*** But as you try to build a module library, libtool will still create " - $echo "*** a static module, that should work as long as the dlopening application" - $echo "*** is linked with the -dlopen flag to resolve symbols at runtime." - if test -z "$global_symbol_pipe"; then - $echo - $echo "*** However, this would only work if libtool was able to extract symbol" - $echo "*** lists from a program, using \`nm' or equivalent, but libtool could" - $echo "*** not find such a program. So, this module is probably useless." - $echo "*** \`nm' from GNU binutils and a full rebuild may help." - fi - if test "$build_old_libs" = no; then - build_libtool_libs=module - build_old_libs=yes - else - build_libtool_libs=no - fi - fi - else - deplibs="$dir/$old_library $deplibs" - link_static=yes - fi - fi # link shared/static library? - - if test "$linkmode" = lib; then - if test -n "$dependency_libs" && - { test "$hardcode_into_libs" != yes || - test "$build_old_libs" = yes || - test "$link_static" = yes; }; then - # Extract -R from dependency_libs - temp_deplibs= - for libdir in $dependency_libs; do - case $libdir in - -R*) temp_xrpath=`$echo "X$libdir" | $Xsed -e 's/^-R//'` - case " $xrpath " in - *" $temp_xrpath "*) ;; - *) xrpath="$xrpath $temp_xrpath";; - esac;; - *) temp_deplibs="$temp_deplibs $libdir";; - esac - done - dependency_libs="$temp_deplibs" - fi - - newlib_search_path="$newlib_search_path $absdir" - # Link against this library - test "$link_static" = no && newdependency_libs="$abs_ladir/$laname $newdependency_libs" - # ... and its dependency_libs - tmp_libs= - for deplib in $dependency_libs; do - newdependency_libs="$deplib $newdependency_libs" - if test "X$duplicate_deps" = "Xyes" ; then - case "$tmp_libs " in - *" $deplib "*) specialdeplibs="$specialdeplibs $deplib" ;; - esac - fi - tmp_libs="$tmp_libs $deplib" - done - - if test "$link_all_deplibs" != no; then - # Add the search paths of all dependency libraries - for deplib in $dependency_libs; do - case $deplib in - -L*) path="$deplib" ;; - *.la) - dir=`$echo "X$deplib" | $Xsed -e 's%/[^/]*$%%'` - test "X$dir" = "X$deplib" && dir="." - # We need an absolute path. - case $dir in - [\\/]* | [A-Za-z]:[\\/]*) absdir="$dir" ;; - *) - absdir=`cd "$dir" && pwd` - if test -z "$absdir"; then - $echo "$modename: warning: cannot determine absolute directory name of \`$dir'" 1>&2 - absdir="$dir" - fi - ;; - esac - if grep "^installed=no" $deplib > /dev/null; then - path="$absdir/$objdir" - else - eval libdir=`${SED} -n -e 's/^libdir=\(.*\)$/\1/p' $deplib` - if test -z "$libdir"; then - $echo "$modename: \`$deplib' is not a valid libtool archive" 1>&2 - exit $EXIT_FAILURE - fi - if test "$absdir" != "$libdir"; then - $echo "$modename: warning: \`$deplib' seems to be moved" 1>&2 - fi - path="$absdir" - fi - depdepl= - case $host in - *-*-darwin*) - # we do not want to link against static libs, - # but need to link against shared - eval deplibrary_names=`${SED} -n -e 's/^library_names=\(.*\)$/\1/p' $deplib` - if test -n "$deplibrary_names" ; then - for tmp in $deplibrary_names ; do - depdepl=$tmp - done - if test -f "$path/$depdepl" ; then - depdepl="$path/$depdepl" - fi - # do not add paths which are already there - case " $newlib_search_path " in - *" $path "*) ;; - *) newlib_search_path="$newlib_search_path $path";; - esac - fi - path="" - ;; - *) - path="-L$path" - ;; - esac - ;; - -l*) - case $host in - *-*-darwin*) - # Again, we only want to link against shared libraries - eval tmp_libs=`$echo "X$deplib" | $Xsed -e "s,^\-l,,"` - for tmp in $newlib_search_path ; do - if test -f "$tmp/lib$tmp_libs.dylib" ; then - eval depdepl="$tmp/lib$tmp_libs.dylib" - break - fi - done - path="" - ;; - *) continue ;; - esac - ;; - *) continue ;; - esac - case " $deplibs " in - *" $path "*) ;; - *) deplibs="$path $deplibs" ;; - esac - case " $deplibs " in - *" $depdepl "*) ;; - *) deplibs="$depdepl $deplibs" ;; - esac - done - fi # link_all_deplibs != no - fi # linkmode = lib - done # for deplib in $libs - dependency_libs="$newdependency_libs" - if test "$pass" = dlpreopen; then - # Link the dlpreopened libraries before other libraries - for deplib in $save_deplibs; do - deplibs="$deplib $deplibs" - done - fi - if test "$pass" != dlopen; then - if test "$pass" != conv; then - # Make sure lib_search_path contains only unique directories. - lib_search_path= - for dir in $newlib_search_path; do - case "$lib_search_path " in - *" $dir "*) ;; - *) lib_search_path="$lib_search_path $dir" ;; - esac - done - newlib_search_path= - fi - - if test "$linkmode,$pass" != "prog,link"; then - vars="deplibs" - else - vars="compile_deplibs finalize_deplibs" - fi - for var in $vars dependency_libs; do - # Add libraries to $var in reverse order - eval tmp_libs=\"\$$var\" - new_libs= - for deplib in $tmp_libs; do - # FIXME: Pedantically, this is the right thing to do, so - # that some nasty dependency loop isn't accidentally - # broken: - #new_libs="$deplib $new_libs" - # Pragmatically, this seems to cause very few problems in - # practice: - case $deplib in - -L*) new_libs="$deplib $new_libs" ;; - -R*) ;; - *) - # And here is the reason: when a library appears more - # than once as an explicit dependence of a library, or - # is implicitly linked in more than once by the - # compiler, it is considered special, and multiple - # occurrences thereof are not removed. Compare this - # with having the same library being listed as a - # dependency of multiple other libraries: in this case, - # we know (pedantically, we assume) the library does not - # need to be listed more than once, so we keep only the - # last copy. This is not always right, but it is rare - # enough that we require users that really mean to play - # such unportable linking tricks to link the library - # using -Wl,-lname, so that libtool does not consider it - # for duplicate removal. - case " $specialdeplibs " in - *" $deplib "*) new_libs="$deplib $new_libs" ;; - *) - case " $new_libs " in - *" $deplib "*) ;; - *) new_libs="$deplib $new_libs" ;; - esac - ;; - esac - ;; - esac - done - tmp_libs= - for deplib in $new_libs; do - case $deplib in - -L*) - case " $tmp_libs " in - *" $deplib "*) ;; - *) tmp_libs="$tmp_libs $deplib" ;; - esac - ;; - *) tmp_libs="$tmp_libs $deplib" ;; - esac - done - eval $var=\"$tmp_libs\" - done # for var - fi - # Last step: remove runtime libs from dependency_libs - # (they stay in deplibs) - tmp_libs= - for i in $dependency_libs ; do - case " $predeps $postdeps $compiler_lib_search_path " in - *" $i "*) - i="" - ;; - esac - if test -n "$i" ; then - tmp_libs="$tmp_libs $i" - fi - done - dependency_libs=$tmp_libs - done # for pass - if test "$linkmode" = prog; then - dlfiles="$newdlfiles" - dlprefiles="$newdlprefiles" - fi - - case $linkmode in - oldlib) - if test -n "$deplibs"; then - $echo "$modename: warning: \`-l' and \`-L' are ignored for archives" 1>&2 - fi - - if test -n "$dlfiles$dlprefiles" || test "$dlself" != no; then - $echo "$modename: warning: \`-dlopen' is ignored for archives" 1>&2 - fi - - if test -n "$rpath"; then - $echo "$modename: warning: \`-rpath' is ignored for archives" 1>&2 - fi - - if test -n "$xrpath"; then - $echo "$modename: warning: \`-R' is ignored for archives" 1>&2 - fi - - if test -n "$vinfo"; then - $echo "$modename: warning: \`-version-info/-version-number' is ignored for archives" 1>&2 - fi - - if test -n "$release"; then - $echo "$modename: warning: \`-release' is ignored for archives" 1>&2 - fi - - if test -n "$export_symbols" || test -n "$export_symbols_regex"; then - $echo "$modename: warning: \`-export-symbols' is ignored for archives" 1>&2 - fi - - # Now set the variables for building old libraries. - build_libtool_libs=no - oldlibs="$output" - objs="$objs$old_deplibs" - ;; - - lib) - # Make sure we only generate libraries of the form `libNAME.la'. - case $outputname in - lib*) - name=`$echo "X$outputname" | $Xsed -e 's/\.la$//' -e 's/^lib//'` - eval shared_ext=\"$shrext_cmds\" - eval libname=\"$libname_spec\" - ;; - *) - if test "$module" = no; then - $echo "$modename: libtool library \`$output' must begin with \`lib'" 1>&2 - $echo "$help" 1>&2 - exit $EXIT_FAILURE - fi - if test "$need_lib_prefix" != no; then - # Add the "lib" prefix for modules if required - name=`$echo "X$outputname" | $Xsed -e 's/\.la$//'` - eval shared_ext=\"$shrext_cmds\" - eval libname=\"$libname_spec\" - else - libname=`$echo "X$outputname" | $Xsed -e 's/\.la$//'` - fi - ;; - esac - - if test -n "$objs"; then - if test "$deplibs_check_method" != pass_all; then - $echo "$modename: cannot build libtool library \`$output' from non-libtool objects on this host:$objs" 2>&1 - exit $EXIT_FAILURE - else - $echo - $echo "*** Warning: Linking the shared library $output against the non-libtool" - $echo "*** objects $objs is not portable!" - libobjs="$libobjs $objs" - fi - fi - - if test "$dlself" != no; then - $echo "$modename: warning: \`-dlopen self' is ignored for libtool libraries" 1>&2 - fi - - set dummy $rpath - if test "$#" -gt 2; then - $echo "$modename: warning: ignoring multiple \`-rpath's for a libtool library" 1>&2 - fi - install_libdir="$2" - - oldlibs= - if test -z "$rpath"; then - if test "$build_libtool_libs" = yes; then - # Building a libtool convenience library. - # Some compilers have problems with a `.al' extension so - # convenience libraries should have the same extension an - # archive normally would. - oldlibs="$output_objdir/$libname.$libext $oldlibs" - build_libtool_libs=convenience - build_old_libs=yes - fi - - if test -n "$vinfo"; then - $echo "$modename: warning: \`-version-info/-version-number' is ignored for convenience libraries" 1>&2 - fi - - if test -n "$release"; then - $echo "$modename: warning: \`-release' is ignored for convenience libraries" 1>&2 - fi - else - - # Parse the version information argument. - save_ifs="$IFS"; IFS=':' - set dummy $vinfo 0 0 0 - IFS="$save_ifs" - - if test -n "$8"; then - $echo "$modename: too many parameters to \`-version-info'" 1>&2 - $echo "$help" 1>&2 - exit $EXIT_FAILURE - fi - - # convert absolute version numbers to libtool ages - # this retains compatibility with .la files and attempts - # to make the code below a bit more comprehensible - - case $vinfo_number in - yes) - number_major="$2" - number_minor="$3" - number_revision="$4" - # - # There are really only two kinds -- those that - # use the current revision as the major version - # and those that subtract age and use age as - # a minor version. But, then there is irix - # which has an extra 1 added just for fun - # - case $version_type in - darwin|linux|osf|windows) - current=`expr $number_major + $number_minor` - age="$number_minor" - revision="$number_revision" - ;; - freebsd-aout|freebsd-elf|sunos) - current="$number_major" - revision="$number_minor" - age="0" - ;; - irix|nonstopux) - current=`expr $number_major + $number_minor - 1` - age="$number_minor" - revision="$number_minor" - ;; - esac - ;; - no) - current="$2" - revision="$3" - age="$4" - ;; - esac - - # Check that each of the things are valid numbers. - case $current in - 0|[1-9]|[1-9][0-9]|[1-9][0-9][0-9]|[1-9][0-9][0-9][0-9]|[1-9][0-9][0-9][0-9][0-9]) ;; - *) - $echo "$modename: CURRENT \`$current' must be a nonnegative integer" 1>&2 - $echo "$modename: \`$vinfo' is not valid version information" 1>&2 - exit $EXIT_FAILURE - ;; - esac - - case $revision in - 0|[1-9]|[1-9][0-9]|[1-9][0-9][0-9]|[1-9][0-9][0-9][0-9]|[1-9][0-9][0-9][0-9][0-9]) ;; - *) - $echo "$modename: REVISION \`$revision' must be a nonnegative integer" 1>&2 - $echo "$modename: \`$vinfo' is not valid version information" 1>&2 - exit $EXIT_FAILURE - ;; - esac - - case $age in - 0|[1-9]|[1-9][0-9]|[1-9][0-9][0-9]|[1-9][0-9][0-9][0-9]|[1-9][0-9][0-9][0-9][0-9]) ;; - *) - $echo "$modename: AGE \`$age' must be a nonnegative integer" 1>&2 - $echo "$modename: \`$vinfo' is not valid version information" 1>&2 - exit $EXIT_FAILURE - ;; - esac - - if test "$age" -gt "$current"; then - $echo "$modename: AGE \`$age' is greater than the current interface number \`$current'" 1>&2 - $echo "$modename: \`$vinfo' is not valid version information" 1>&2 - exit $EXIT_FAILURE - fi - - # Calculate the version variables. - major= - versuffix= - verstring= - case $version_type in - none) ;; - - darwin) - # Like Linux, but with the current version available in - # verstring for coding it into the library header - major=.`expr $current - $age` - versuffix="$major.$age.$revision" - # Darwin ld doesn't like 0 for these options... - minor_current=`expr $current + 1` - verstring="${wl}-compatibility_version ${wl}$minor_current ${wl}-current_version ${wl}$minor_current.$revision" - ;; - - freebsd-aout) - major=".$current" - versuffix=".$current.$revision"; - ;; - - freebsd-elf) - major=".$current" - versuffix=".$current"; - ;; - - irix | nonstopux) - major=`expr $current - $age + 1` - - case $version_type in - nonstopux) verstring_prefix=nonstopux ;; - *) verstring_prefix=sgi ;; - esac - verstring="$verstring_prefix$major.$revision" - - # Add in all the interfaces that we are compatible with. - loop=$revision - while test "$loop" -ne 0; do - iface=`expr $revision - $loop` - loop=`expr $loop - 1` - verstring="$verstring_prefix$major.$iface:$verstring" - done - - # Before this point, $major must not contain `.'. - major=.$major - versuffix="$major.$revision" - ;; - - linux) - major=.`expr $current - $age` - versuffix="$major.$age.$revision" - ;; - - osf) - major=.`expr $current - $age` - versuffix=".$current.$age.$revision" - verstring="$current.$age.$revision" - - # Add in all the interfaces that we are compatible with. - loop=$age - while test "$loop" -ne 0; do - iface=`expr $current - $loop` - loop=`expr $loop - 1` - verstring="$verstring:${iface}.0" - done - - # Make executables depend on our current version. - verstring="$verstring:${current}.0" - ;; - - sunos) - major=".$current" - versuffix=".$current.$revision" - ;; - - windows) - # Use '-' rather than '.', since we only want one - # extension on DOS 8.3 filesystems. - major=`expr $current - $age` - versuffix="-$major" - ;; - - *) - $echo "$modename: unknown library version type \`$version_type'" 1>&2 - $echo "Fatal configuration error. See the $PACKAGE docs for more information." 1>&2 - exit $EXIT_FAILURE - ;; - esac - - # Clear the version info if we defaulted, and they specified a release. - if test -z "$vinfo" && test -n "$release"; then - major= - case $version_type in - darwin) - # we can't check for "0.0" in archive_cmds due to quoting - # problems, so we reset it completely - verstring= - ;; - *) - verstring="0.0" - ;; - esac - if test "$need_version" = no; then - versuffix= - else - versuffix=".0.0" - fi - fi - - # Remove version info from name if versioning should be avoided - if test "$avoid_version" = yes && test "$need_version" = no; then - major= - versuffix= - verstring="" - fi - - # Check to see if the archive will have undefined symbols. - if test "$allow_undefined" = yes; then - if test "$allow_undefined_flag" = unsupported; then - $echo "$modename: warning: undefined symbols not allowed in $host shared libraries" 1>&2 - build_libtool_libs=no - build_old_libs=yes - fi - else - # Don't allow undefined symbols. - allow_undefined_flag="$no_undefined_flag" - fi - fi - - if test "$mode" != relink; then - # Remove our outputs, but don't remove object files since they - # may have been created when compiling PIC objects. - removelist= - tempremovelist=`$echo "$output_objdir/*"` - for p in $tempremovelist; do - case $p in - *.$objext) - ;; - $output_objdir/$outputname | $output_objdir/$libname.* | $output_objdir/${libname}${release}.*) - if test "X$precious_files_regex" != "X"; then - if echo $p | $EGREP -e "$precious_files_regex" >/dev/null 2>&1 - then - continue - fi - fi - removelist="$removelist $p" - ;; - *) ;; - esac - done - if test -n "$removelist"; then - $show "${rm}r $removelist" - $run ${rm}r $removelist - fi - fi - - # Now set the variables for building old libraries. - if test "$build_old_libs" = yes && test "$build_libtool_libs" != convenience ; then - oldlibs="$oldlibs $output_objdir/$libname.$libext" - - # Transform .lo files to .o files. - oldobjs="$objs "`$echo "X$libobjs" | $SP2NL | $Xsed -e '/\.'${libext}'$/d' -e "$lo2o" | $NL2SP` - fi - - # Eliminate all temporary directories. - for path in $notinst_path; do - lib_search_path=`$echo "$lib_search_path " | ${SED} -e 's% $path % %g'` - deplibs=`$echo "$deplibs " | ${SED} -e 's% -L$path % %g'` - dependency_libs=`$echo "$dependency_libs " | ${SED} -e 's% -L$path % %g'` - done - - if test -n "$xrpath"; then - # If the user specified any rpath flags, then add them. - temp_xrpath= - for libdir in $xrpath; do - temp_xrpath="$temp_xrpath -R$libdir" - case "$finalize_rpath " in - *" $libdir "*) ;; - *) finalize_rpath="$finalize_rpath $libdir" ;; - esac - done - if test "$hardcode_into_libs" != yes || test "$build_old_libs" = yes; then - dependency_libs="$temp_xrpath $dependency_libs" - fi - fi - - # Make sure dlfiles contains only unique files that won't be dlpreopened - old_dlfiles="$dlfiles" - dlfiles= - for lib in $old_dlfiles; do - case " $dlprefiles $dlfiles " in - *" $lib "*) ;; - *) dlfiles="$dlfiles $lib" ;; - esac - done - - # Make sure dlprefiles contains only unique files - old_dlprefiles="$dlprefiles" - dlprefiles= - for lib in $old_dlprefiles; do - case "$dlprefiles " in - *" $lib "*) ;; - *) dlprefiles="$dlprefiles $lib" ;; - esac - done - - if test "$build_libtool_libs" = yes; then - if test -n "$rpath"; then - case $host in - *-*-cygwin* | *-*-mingw* | *-*-pw32* | *-*-os2* | *-*-beos*) - # these systems don't actually have a c library (as such)! - ;; - *-*-rhapsody* | *-*-darwin1.[012]) - # Rhapsody C library is in the System framework - deplibs="$deplibs -framework System" - ;; - *-*-netbsd*) - # Don't link with libc until the a.out ld.so is fixed. - ;; - *-*-openbsd* | *-*-freebsd* | *-*-dragonfly*) - # Do not include libc due to us having libc/libc_r. - test "X$arg" = "X-lc" && continue - ;; - *) - # Add libc to deplibs on all other systems if necessary. - if test "$build_libtool_need_lc" = "yes"; then - deplibs="$deplibs -lc" - fi - ;; - esac - fi - - # Transform deplibs into only deplibs that can be linked in shared. - name_save=$name - libname_save=$libname - release_save=$release - versuffix_save=$versuffix - major_save=$major - # I'm not sure if I'm treating the release correctly. I think - # release should show up in the -l (ie -lgmp5) so we don't want to - # add it in twice. Is that correct? - release="" - versuffix="" - major="" - newdeplibs= - droppeddeps=no - case $deplibs_check_method in - pass_all) - # Don't check for shared/static. Everything works. - # This might be a little naive. We might want to check - # whether the library exists or not. But this is on - # osf3 & osf4 and I'm not really sure... Just - # implementing what was already the behavior. - newdeplibs=$deplibs - ;; - test_compile) - # This code stresses the "libraries are programs" paradigm to its - # limits. Maybe even breaks it. We compile a program, linking it - # against the deplibs as a proxy for the library. Then we can check - # whether they linked in statically or dynamically with ldd. - $rm conftest.c - cat > conftest.c </dev/null` - for potent_lib in $potential_libs; do - # Follow soft links. - if ls -lLd "$potent_lib" 2>/dev/null \ - | grep " -> " >/dev/null; then - continue - fi - # The statement above tries to avoid entering an - # endless loop below, in case of cyclic links. - # We might still enter an endless loop, since a link - # loop can be closed while we follow links, - # but so what? - potlib="$potent_lib" - while test -h "$potlib" 2>/dev/null; do - potliblink=`ls -ld $potlib | ${SED} 's/.* -> //'` - case $potliblink in - [\\/]* | [A-Za-z]:[\\/]*) potlib="$potliblink";; - *) potlib=`$echo "X$potlib" | $Xsed -e 's,[^/]*$,,'`"$potliblink";; - esac - done - if eval $file_magic_cmd \"\$potlib\" 2>/dev/null \ - | ${SED} 10q \ - | $EGREP "$file_magic_regex" > /dev/null; then - newdeplibs="$newdeplibs $a_deplib" - a_deplib="" - break 2 - fi - done - done - fi - if test -n "$a_deplib" ; then - droppeddeps=yes - $echo - $echo "*** Warning: linker path does not have real file for library $a_deplib." - $echo "*** I have the capability to make that library automatically link in when" - $echo "*** you link to this library. But I can only do this if you have a" - $echo "*** shared version of the library, which you do not appear to have" - $echo "*** because I did check the linker path looking for a file starting" - if test -z "$potlib" ; then - $echo "*** with $libname but no candidates were found. (...for file magic test)" - else - $echo "*** with $libname and none of the candidates passed a file format test" - $echo "*** using a file magic. Last file checked: $potlib" - fi - fi - else - # Add a -L argument. - newdeplibs="$newdeplibs $a_deplib" - fi - done # Gone through all deplibs. - ;; - match_pattern*) - set dummy $deplibs_check_method - match_pattern_regex=`expr "$deplibs_check_method" : "$2 \(.*\)"` - for a_deplib in $deplibs; do - name=`expr $a_deplib : '-l\(.*\)'` - # If $name is empty we are operating on a -L argument. - if test -n "$name" && test "$name" != "0"; then - if test "X$allow_libtool_libs_with_static_runtimes" = "Xyes" ; then - case " $predeps $postdeps " in - *" $a_deplib "*) - newdeplibs="$newdeplibs $a_deplib" - a_deplib="" - ;; - esac - fi - if test -n "$a_deplib" ; then - libname=`eval \\$echo \"$libname_spec\"` - for i in $lib_search_path $sys_lib_search_path $shlib_search_path; do - potential_libs=`ls $i/$libname[.-]* 2>/dev/null` - for potent_lib in $potential_libs; do - potlib="$potent_lib" # see symlink-check above in file_magic test - if eval $echo \"$potent_lib\" 2>/dev/null \ - | ${SED} 10q \ - | $EGREP "$match_pattern_regex" > /dev/null; then - newdeplibs="$newdeplibs $a_deplib" - a_deplib="" - break 2 - fi - done - done - fi - if test -n "$a_deplib" ; then - droppeddeps=yes - $echo - $echo "*** Warning: linker path does not have real file for library $a_deplib." - $echo "*** I have the capability to make that library automatically link in when" - $echo "*** you link to this library. But I can only do this if you have a" - $echo "*** shared version of the library, which you do not appear to have" - $echo "*** because I did check the linker path looking for a file starting" - if test -z "$potlib" ; then - $echo "*** with $libname but no candidates were found. (...for regex pattern test)" - else - $echo "*** with $libname and none of the candidates passed a file format test" - $echo "*** using a regex pattern. Last file checked: $potlib" - fi - fi - else - # Add a -L argument. - newdeplibs="$newdeplibs $a_deplib" - fi - done # Gone through all deplibs. - ;; - none | unknown | *) - newdeplibs="" - tmp_deplibs=`$echo "X $deplibs" | $Xsed -e 's/ -lc$//' \ - -e 's/ -[LR][^ ]*//g'` - if test "X$allow_libtool_libs_with_static_runtimes" = "Xyes" ; then - for i in $predeps $postdeps ; do - # can't use Xsed below, because $i might contain '/' - tmp_deplibs=`$echo "X $tmp_deplibs" | ${SED} -e "1s,^X,," -e "s,$i,,"` - done - fi - if $echo "X $tmp_deplibs" | $Xsed -e 's/[ ]//g' \ - | grep . >/dev/null; then - $echo - if test "X$deplibs_check_method" = "Xnone"; then - $echo "*** Warning: inter-library dependencies are not supported in this platform." - else - $echo "*** Warning: inter-library dependencies are not known to be supported." - fi - $echo "*** All declared inter-library dependencies are being dropped." - droppeddeps=yes - fi - ;; - esac - versuffix=$versuffix_save - major=$major_save - release=$release_save - libname=$libname_save - name=$name_save - - case $host in - *-*-rhapsody* | *-*-darwin1.[012]) - # On Rhapsody replace the C library is the System framework - newdeplibs=`$echo "X $newdeplibs" | $Xsed -e 's/ -lc / -framework System /'` - ;; - esac - - if test "$droppeddeps" = yes; then - if test "$module" = yes; then - $echo - $echo "*** Warning: libtool could not satisfy all declared inter-library" - $echo "*** dependencies of module $libname. Therefore, libtool will create" - $echo "*** a static module, that should work as long as the dlopening" - $echo "*** application is linked with the -dlopen flag." - if test -z "$global_symbol_pipe"; then - $echo - $echo "*** However, this would only work if libtool was able to extract symbol" - $echo "*** lists from a program, using \`nm' or equivalent, but libtool could" - $echo "*** not find such a program. So, this module is probably useless." - $echo "*** \`nm' from GNU binutils and a full rebuild may help." - fi - if test "$build_old_libs" = no; then - oldlibs="$output_objdir/$libname.$libext" - build_libtool_libs=module - build_old_libs=yes - else - build_libtool_libs=no - fi - else - $echo "*** The inter-library dependencies that have been dropped here will be" - $echo "*** automatically added whenever a program is linked with this library" - $echo "*** or is declared to -dlopen it." - - if test "$allow_undefined" = no; then - $echo - $echo "*** Since this library must not contain undefined symbols," - $echo "*** because either the platform does not support them or" - $echo "*** it was explicitly requested with -no-undefined," - $echo "*** libtool will only create a static version of it." - if test "$build_old_libs" = no; then - oldlibs="$output_objdir/$libname.$libext" - build_libtool_libs=module - build_old_libs=yes - else - build_libtool_libs=no - fi - fi - fi - fi - # Done checking deplibs! - deplibs=$newdeplibs - fi - - # All the library-specific variables (install_libdir is set above). - library_names= - old_library= - dlname= - - # Test again, we may have decided not to build it any more - if test "$build_libtool_libs" = yes; then - if test "$hardcode_into_libs" = yes; then - # Hardcode the library paths - hardcode_libdirs= - dep_rpath= - rpath="$finalize_rpath" - test "$mode" != relink && rpath="$compile_rpath$rpath" - for libdir in $rpath; do - if test -n "$hardcode_libdir_flag_spec"; then - if test -n "$hardcode_libdir_separator"; then - if test -z "$hardcode_libdirs"; then - hardcode_libdirs="$libdir" - else - # Just accumulate the unique libdirs. - case $hardcode_libdir_separator$hardcode_libdirs$hardcode_libdir_separator in - *"$hardcode_libdir_separator$libdir$hardcode_libdir_separator"*) - ;; - *) - hardcode_libdirs="$hardcode_libdirs$hardcode_libdir_separator$libdir" - ;; - esac - fi - else - eval flag=\"$hardcode_libdir_flag_spec\" - dep_rpath="$dep_rpath $flag" - fi - elif test -n "$runpath_var"; then - case "$perm_rpath " in - *" $libdir "*) ;; - *) perm_rpath="$perm_rpath $libdir" ;; - esac - fi - done - # Substitute the hardcoded libdirs into the rpath. - if test -n "$hardcode_libdir_separator" && - test -n "$hardcode_libdirs"; then - libdir="$hardcode_libdirs" - if test -n "$hardcode_libdir_flag_spec_ld"; then - eval dep_rpath=\"$hardcode_libdir_flag_spec_ld\" - else - eval dep_rpath=\"$hardcode_libdir_flag_spec\" - fi - fi - if test -n "$runpath_var" && test -n "$perm_rpath"; then - # We should set the runpath_var. - rpath= - for dir in $perm_rpath; do - rpath="$rpath$dir:" - done - eval "$runpath_var='$rpath\$$runpath_var'; export $runpath_var" - fi - test -n "$dep_rpath" && deplibs="$dep_rpath $deplibs" - fi - - shlibpath="$finalize_shlibpath" - test "$mode" != relink && shlibpath="$compile_shlibpath$shlibpath" - if test -n "$shlibpath"; then - eval "$shlibpath_var='$shlibpath\$$shlibpath_var'; export $shlibpath_var" - fi - - # Get the real and link names of the library. - eval shared_ext=\"$shrext_cmds\" - eval library_names=\"$library_names_spec\" - set dummy $library_names - realname="$2" - shift; shift - - if test -n "$soname_spec"; then - eval soname=\"$soname_spec\" - else - soname="$realname" - fi - if test -z "$dlname"; then - dlname=$soname - fi - - lib="$output_objdir/$realname" - for link - do - linknames="$linknames $link" - done - - # Use standard objects if they are pic - test -z "$pic_flag" && libobjs=`$echo "X$libobjs" | $SP2NL | $Xsed -e "$lo2o" | $NL2SP` - - # Prepare the list of exported symbols - if test -z "$export_symbols"; then - if test "$always_export_symbols" = yes || test -n "$export_symbols_regex"; then - $show "generating symbol list for \`$libname.la'" - export_symbols="$output_objdir/$libname.exp" - $run $rm $export_symbols - cmds=$export_symbols_cmds - save_ifs="$IFS"; IFS='~' - for cmd in $cmds; do - IFS="$save_ifs" - eval cmd=\"$cmd\" - if len=`expr "X$cmd" : ".*"` && - test "$len" -le "$max_cmd_len" || test "$max_cmd_len" -le -1; then - $show "$cmd" - $run eval "$cmd" || exit $? - skipped_export=false - else - # The command line is too long to execute in one step. - $show "using reloadable object file for export list..." - skipped_export=: - # Break out early, otherwise skipped_export may be - # set to false by a later but shorter cmd. - break - fi - done - IFS="$save_ifs" - if test -n "$export_symbols_regex"; then - $show "$EGREP -e \"$export_symbols_regex\" \"$export_symbols\" > \"${export_symbols}T\"" - $run eval '$EGREP -e "$export_symbols_regex" "$export_symbols" > "${export_symbols}T"' - $show "$mv \"${export_symbols}T\" \"$export_symbols\"" - $run eval '$mv "${export_symbols}T" "$export_symbols"' - fi - fi - fi - - if test -n "$export_symbols" && test -n "$include_expsyms"; then - $run eval '$echo "X$include_expsyms" | $SP2NL >> "$export_symbols"' - fi - - tmp_deplibs= - for test_deplib in $deplibs; do - case " $convenience " in - *" $test_deplib "*) ;; - *) - tmp_deplibs="$tmp_deplibs $test_deplib" - ;; - esac - done - deplibs="$tmp_deplibs" - - if test -n "$convenience"; then - if test -n "$whole_archive_flag_spec"; then - save_libobjs=$libobjs - eval libobjs=\"\$libobjs $whole_archive_flag_spec\" - else - gentop="$output_objdir/${outputname}x" - generated="$generated $gentop" - - func_extract_archives $gentop $convenience - libobjs="$libobjs $func_extract_archives_result" - fi - fi - - if test "$thread_safe" = yes && test -n "$thread_safe_flag_spec"; then - eval flag=\"$thread_safe_flag_spec\" - linker_flags="$linker_flags $flag" - fi - - # Make a backup of the uninstalled library when relinking - if test "$mode" = relink; then - $run eval '(cd $output_objdir && $rm ${realname}U && $mv $realname ${realname}U)' || exit $? - fi - - # Do each of the archive commands. - if test "$module" = yes && test -n "$module_cmds" ; then - if test -n "$export_symbols" && test -n "$module_expsym_cmds"; then - eval test_cmds=\"$module_expsym_cmds\" - cmds=$module_expsym_cmds - else - eval test_cmds=\"$module_cmds\" - cmds=$module_cmds - fi - else - if test -n "$export_symbols" && test -n "$archive_expsym_cmds"; then - eval test_cmds=\"$archive_expsym_cmds\" - cmds=$archive_expsym_cmds - else - eval test_cmds=\"$archive_cmds\" - cmds=$archive_cmds - fi - fi - - if test "X$skipped_export" != "X:" && - len=`expr "X$test_cmds" : ".*" 2>/dev/null` && - test "$len" -le "$max_cmd_len" || test "$max_cmd_len" -le -1; then - : - else - # The command line is too long to link in one step, link piecewise. - $echo "creating reloadable object files..." - - # Save the value of $output and $libobjs because we want to - # use them later. If we have whole_archive_flag_spec, we - # want to use save_libobjs as it was before - # whole_archive_flag_spec was expanded, because we can't - # assume the linker understands whole_archive_flag_spec. - # This may have to be revisited, in case too many - # convenience libraries get linked in and end up exceeding - # the spec. - if test -z "$convenience" || test -z "$whole_archive_flag_spec"; then - save_libobjs=$libobjs - fi - save_output=$output - output_la=`$echo "X$output" | $Xsed -e "$basename"` - - # Clear the reloadable object creation command queue and - # initialize k to one. - test_cmds= - concat_cmds= - objlist= - delfiles= - last_robj= - k=1 - output=$output_objdir/$output_la-${k}.$objext - # Loop over the list of objects to be linked. - for obj in $save_libobjs - do - eval test_cmds=\"$reload_cmds $objlist $last_robj\" - if test "X$objlist" = X || - { len=`expr "X$test_cmds" : ".*" 2>/dev/null` && - test "$len" -le "$max_cmd_len"; }; then - objlist="$objlist $obj" - else - # The command $test_cmds is almost too long, add a - # command to the queue. - if test "$k" -eq 1 ; then - # The first file doesn't have a previous command to add. - eval concat_cmds=\"$reload_cmds $objlist $last_robj\" - else - # All subsequent reloadable object files will link in - # the last one created. - eval concat_cmds=\"\$concat_cmds~$reload_cmds $objlist $last_robj\" - fi - last_robj=$output_objdir/$output_la-${k}.$objext - k=`expr $k + 1` - output=$output_objdir/$output_la-${k}.$objext - objlist=$obj - len=1 - fi - done - # Handle the remaining objects by creating one last - # reloadable object file. All subsequent reloadable object - # files will link in the last one created. - test -z "$concat_cmds" || concat_cmds=$concat_cmds~ - eval concat_cmds=\"\${concat_cmds}$reload_cmds $objlist $last_robj\" - - if ${skipped_export-false}; then - $show "generating symbol list for \`$libname.la'" - export_symbols="$output_objdir/$libname.exp" - $run $rm $export_symbols - libobjs=$output - # Append the command to create the export file. - eval concat_cmds=\"\$concat_cmds~$export_symbols_cmds\" - fi - - # Set up a command to remove the reloadable object files - # after they are used. - i=0 - while test "$i" -lt "$k" - do - i=`expr $i + 1` - delfiles="$delfiles $output_objdir/$output_la-${i}.$objext" - done - - $echo "creating a temporary reloadable object file: $output" - - # Loop through the commands generated above and execute them. - save_ifs="$IFS"; IFS='~' - for cmd in $concat_cmds; do - IFS="$save_ifs" - $show "$cmd" - $run eval "$cmd" || exit $? - done - IFS="$save_ifs" - - libobjs=$output - # Restore the value of output. - output=$save_output - - if test -n "$convenience" && test -n "$whole_archive_flag_spec"; then - eval libobjs=\"\$libobjs $whole_archive_flag_spec\" - fi - # Expand the library linking commands again to reset the - # value of $libobjs for piecewise linking. - - # Do each of the archive commands. - if test "$module" = yes && test -n "$module_cmds" ; then - if test -n "$export_symbols" && test -n "$module_expsym_cmds"; then - cmds=$module_expsym_cmds - else - cmds=$module_cmds - fi - else - if test -n "$export_symbols" && test -n "$archive_expsym_cmds"; then - cmds=$archive_expsym_cmds - else - cmds=$archive_cmds - fi - fi - - # Append the command to remove the reloadable object files - # to the just-reset $cmds. - eval cmds=\"\$cmds~\$rm $delfiles\" - fi - save_ifs="$IFS"; IFS='~' - for cmd in $cmds; do - IFS="$save_ifs" - eval cmd=\"$cmd\" - $show "$cmd" - $run eval "$cmd" || { - lt_exit=$? - - # Restore the uninstalled library and exit - if test "$mode" = relink; then - $run eval '(cd $output_objdir && $rm ${realname}T && $mv ${realname}U $realname)' - fi - - exit $lt_exit - } - done - IFS="$save_ifs" - - # Restore the uninstalled library and exit - if test "$mode" = relink; then - $run eval '(cd $output_objdir && $rm ${realname}T && $mv $realname ${realname}T && $mv "$realname"U $realname)' || exit $? - - if test -n "$convenience"; then - if test -z "$whole_archive_flag_spec"; then - $show "${rm}r $gentop" - $run ${rm}r "$gentop" - fi - fi - - exit $EXIT_SUCCESS - fi - - # Create links to the real library. - for linkname in $linknames; do - if test "$realname" != "$linkname"; then - $show "(cd $output_objdir && $rm $linkname && $LN_S $realname $linkname)" - $run eval '(cd $output_objdir && $rm $linkname && $LN_S $realname $linkname)' || exit $? - fi - done - - # If -module or -export-dynamic was specified, set the dlname. - if test "$module" = yes || test "$export_dynamic" = yes; then - # On all known operating systems, these are identical. - dlname="$soname" - fi - fi - ;; - - obj) - if test -n "$deplibs"; then - $echo "$modename: warning: \`-l' and \`-L' are ignored for objects" 1>&2 - fi - - if test -n "$dlfiles$dlprefiles" || test "$dlself" != no; then - $echo "$modename: warning: \`-dlopen' is ignored for objects" 1>&2 - fi - - if test -n "$rpath"; then - $echo "$modename: warning: \`-rpath' is ignored for objects" 1>&2 - fi - - if test -n "$xrpath"; then - $echo "$modename: warning: \`-R' is ignored for objects" 1>&2 - fi - - if test -n "$vinfo"; then - $echo "$modename: warning: \`-version-info' is ignored for objects" 1>&2 - fi - - if test -n "$release"; then - $echo "$modename: warning: \`-release' is ignored for objects" 1>&2 - fi - - case $output in - *.lo) - if test -n "$objs$old_deplibs"; then - $echo "$modename: cannot build library object \`$output' from non-libtool objects" 1>&2 - exit $EXIT_FAILURE - fi - libobj="$output" - obj=`$echo "X$output" | $Xsed -e "$lo2o"` - ;; - *) - libobj= - obj="$output" - ;; - esac - - # Delete the old objects. - $run $rm $obj $libobj - - # Objects from convenience libraries. This assumes - # single-version convenience libraries. Whenever we create - # different ones for PIC/non-PIC, this we'll have to duplicate - # the extraction. - reload_conv_objs= - gentop= - # reload_cmds runs $LD directly, so let us get rid of - # -Wl from whole_archive_flag_spec - wl= - - if test -n "$convenience"; then - if test -n "$whole_archive_flag_spec"; then - eval reload_conv_objs=\"\$reload_objs $whole_archive_flag_spec\" - else - gentop="$output_objdir/${obj}x" - generated="$generated $gentop" - - func_extract_archives $gentop $convenience - reload_conv_objs="$reload_objs $func_extract_archives_result" - fi - fi - - # Create the old-style object. - reload_objs="$objs$old_deplibs "`$echo "X$libobjs" | $SP2NL | $Xsed -e '/\.'${libext}$'/d' -e '/\.lib$/d' -e "$lo2o" | $NL2SP`" $reload_conv_objs" ### testsuite: skip nested quoting test - - output="$obj" - cmds=$reload_cmds - save_ifs="$IFS"; IFS='~' - for cmd in $cmds; do - IFS="$save_ifs" - eval cmd=\"$cmd\" - $show "$cmd" - $run eval "$cmd" || exit $? - done - IFS="$save_ifs" - - # Exit if we aren't doing a library object file. - if test -z "$libobj"; then - if test -n "$gentop"; then - $show "${rm}r $gentop" - $run ${rm}r $gentop - fi - - exit $EXIT_SUCCESS - fi - - if test "$build_libtool_libs" != yes; then - if test -n "$gentop"; then - $show "${rm}r $gentop" - $run ${rm}r $gentop - fi - - # Create an invalid libtool object if no PIC, so that we don't - # accidentally link it into a program. - # $show "echo timestamp > $libobj" - # $run eval "echo timestamp > $libobj" || exit $? - exit $EXIT_SUCCESS - fi - - if test -n "$pic_flag" || test "$pic_mode" != default; then - # Only do commands if we really have different PIC objects. - reload_objs="$libobjs $reload_conv_objs" - output="$libobj" - cmds=$reload_cmds - save_ifs="$IFS"; IFS='~' - for cmd in $cmds; do - IFS="$save_ifs" - eval cmd=\"$cmd\" - $show "$cmd" - $run eval "$cmd" || exit $? - done - IFS="$save_ifs" - fi - - if test -n "$gentop"; then - $show "${rm}r $gentop" - $run ${rm}r $gentop - fi - - exit $EXIT_SUCCESS - ;; - - prog) - case $host in - *cygwin*) output=`$echo $output | ${SED} -e 's,.exe$,,;s,$,.exe,'` ;; - esac - if test -n "$vinfo"; then - $echo "$modename: warning: \`-version-info' is ignored for programs" 1>&2 - fi - - if test -n "$release"; then - $echo "$modename: warning: \`-release' is ignored for programs" 1>&2 - fi - - if test "$preload" = yes; then - if test "$dlopen_support" = unknown && test "$dlopen_self" = unknown && - test "$dlopen_self_static" = unknown; then - $echo "$modename: warning: \`AC_LIBTOOL_DLOPEN' not used. Assuming no dlopen support." - fi - fi - - case $host in - *-*-rhapsody* | *-*-darwin1.[012]) - # On Rhapsody replace the C library is the System framework - compile_deplibs=`$echo "X $compile_deplibs" | $Xsed -e 's/ -lc / -framework System /'` - finalize_deplibs=`$echo "X $finalize_deplibs" | $Xsed -e 's/ -lc / -framework System /'` - ;; - esac - - case $host in - *darwin*) - # Don't allow lazy linking, it breaks C++ global constructors - if test "$tagname" = CXX ; then - compile_command="$compile_command ${wl}-bind_at_load" - finalize_command="$finalize_command ${wl}-bind_at_load" - fi - ;; - esac - - compile_command="$compile_command $compile_deplibs" - finalize_command="$finalize_command $finalize_deplibs" - - if test -n "$rpath$xrpath"; then - # If the user specified any rpath flags, then add them. - for libdir in $rpath $xrpath; do - # This is the magic to use -rpath. - case "$finalize_rpath " in - *" $libdir "*) ;; - *) finalize_rpath="$finalize_rpath $libdir" ;; - esac - done - fi - - # Now hardcode the library paths - rpath= - hardcode_libdirs= - for libdir in $compile_rpath $finalize_rpath; do - if test -n "$hardcode_libdir_flag_spec"; then - if test -n "$hardcode_libdir_separator"; then - if test -z "$hardcode_libdirs"; then - hardcode_libdirs="$libdir" - else - # Just accumulate the unique libdirs. - case $hardcode_libdir_separator$hardcode_libdirs$hardcode_libdir_separator in - *"$hardcode_libdir_separator$libdir$hardcode_libdir_separator"*) - ;; - *) - hardcode_libdirs="$hardcode_libdirs$hardcode_libdir_separator$libdir" - ;; - esac - fi - else - eval flag=\"$hardcode_libdir_flag_spec\" - rpath="$rpath $flag" - fi - elif test -n "$runpath_var"; then - case "$perm_rpath " in - *" $libdir "*) ;; - *) perm_rpath="$perm_rpath $libdir" ;; - esac - fi - case $host in - *-*-cygwin* | *-*-mingw* | *-*-pw32* | *-*-os2*) - case :$dllsearchpath: in - *":$libdir:"*) ;; - *) dllsearchpath="$dllsearchpath:$libdir";; - esac - ;; - esac - done - # Substitute the hardcoded libdirs into the rpath. - if test -n "$hardcode_libdir_separator" && - test -n "$hardcode_libdirs"; then - libdir="$hardcode_libdirs" - eval rpath=\" $hardcode_libdir_flag_spec\" - fi - compile_rpath="$rpath" - - rpath= - hardcode_libdirs= - for libdir in $finalize_rpath; do - if test -n "$hardcode_libdir_flag_spec"; then - if test -n "$hardcode_libdir_separator"; then - if test -z "$hardcode_libdirs"; then - hardcode_libdirs="$libdir" - else - # Just accumulate the unique libdirs. - case $hardcode_libdir_separator$hardcode_libdirs$hardcode_libdir_separator in - *"$hardcode_libdir_separator$libdir$hardcode_libdir_separator"*) - ;; - *) - hardcode_libdirs="$hardcode_libdirs$hardcode_libdir_separator$libdir" - ;; - esac - fi - else - eval flag=\"$hardcode_libdir_flag_spec\" - rpath="$rpath $flag" - fi - elif test -n "$runpath_var"; then - case "$finalize_perm_rpath " in - *" $libdir "*) ;; - *) finalize_perm_rpath="$finalize_perm_rpath $libdir" ;; - esac - fi - done - # Substitute the hardcoded libdirs into the rpath. - if test -n "$hardcode_libdir_separator" && - test -n "$hardcode_libdirs"; then - libdir="$hardcode_libdirs" - eval rpath=\" $hardcode_libdir_flag_spec\" - fi - finalize_rpath="$rpath" - - if test -n "$libobjs" && test "$build_old_libs" = yes; then - # Transform all the library objects into standard objects. - compile_command=`$echo "X$compile_command" | $SP2NL | $Xsed -e "$lo2o" | $NL2SP` - finalize_command=`$echo "X$finalize_command" | $SP2NL | $Xsed -e "$lo2o" | $NL2SP` - fi - - dlsyms= - if test -n "$dlfiles$dlprefiles" || test "$dlself" != no; then - if test -n "$NM" && test -n "$global_symbol_pipe"; then - dlsyms="${outputname}S.c" - else - $echo "$modename: not configured to extract global symbols from dlpreopened files" 1>&2 - fi - fi - - if test -n "$dlsyms"; then - case $dlsyms in - "") ;; - *.c) - # Discover the nlist of each of the dlfiles. - nlist="$output_objdir/${outputname}.nm" - - $show "$rm $nlist ${nlist}S ${nlist}T" - $run $rm "$nlist" "${nlist}S" "${nlist}T" - - # Parse the name list into a source file. - $show "creating $output_objdir/$dlsyms" - - test -z "$run" && $echo > "$output_objdir/$dlsyms" "\ -/* $dlsyms - symbol resolution table for \`$outputname' dlsym emulation. */ -/* Generated by $PROGRAM - GNU $PACKAGE $VERSION$TIMESTAMP */ - -#ifdef __cplusplus -extern \"C\" { -#endif - -/* Prevent the only kind of declaration conflicts we can make. */ -#define lt_preloaded_symbols some_other_symbol - -/* External symbol declarations for the compiler. */\ -" - - if test "$dlself" = yes; then - $show "generating symbol list for \`$output'" - - test -z "$run" && $echo ': @PROGRAM@ ' > "$nlist" - - # Add our own program objects to the symbol list. - progfiles=`$echo "X$objs$old_deplibs" | $SP2NL | $Xsed -e "$lo2o" | $NL2SP` - for arg in $progfiles; do - $show "extracting global C symbols from \`$arg'" - $run eval "$NM $arg | $global_symbol_pipe >> '$nlist'" - done - - if test -n "$exclude_expsyms"; then - $run eval '$EGREP -v " ($exclude_expsyms)$" "$nlist" > "$nlist"T' - $run eval '$mv "$nlist"T "$nlist"' - fi - - if test -n "$export_symbols_regex"; then - $run eval '$EGREP -e "$export_symbols_regex" "$nlist" > "$nlist"T' - $run eval '$mv "$nlist"T "$nlist"' - fi - - # Prepare the list of exported symbols - if test -z "$export_symbols"; then - export_symbols="$output_objdir/$outputname.exp" - $run $rm $export_symbols - $run eval "${SED} -n -e '/^: @PROGRAM@ $/d' -e 's/^.* \(.*\)$/\1/p' "'< "$nlist" > "$export_symbols"' - else - $run eval "${SED} -e 's/\([ ][.*^$]\)/\\\1/g' -e 's/^/ /' -e 's/$/$/'"' < "$export_symbols" > "$output_objdir/$outputname.exp"' - $run eval 'grep -f "$output_objdir/$outputname.exp" < "$nlist" > "$nlist"T' - $run eval 'mv "$nlist"T "$nlist"' - fi - fi - - for arg in $dlprefiles; do - $show "extracting global C symbols from \`$arg'" - name=`$echo "$arg" | ${SED} -e 's%^.*/%%'` - $run eval '$echo ": $name " >> "$nlist"' - $run eval "$NM $arg | $global_symbol_pipe >> '$nlist'" - done - - if test -z "$run"; then - # Make sure we have at least an empty file. - test -f "$nlist" || : > "$nlist" - - if test -n "$exclude_expsyms"; then - $EGREP -v " ($exclude_expsyms)$" "$nlist" > "$nlist"T - $mv "$nlist"T "$nlist" - fi - - # Try sorting and uniquifying the output. - if grep -v "^: " < "$nlist" | - if sort -k 3 /dev/null 2>&1; then - sort -k 3 - else - sort +2 - fi | - uniq > "$nlist"S; then - : - else - grep -v "^: " < "$nlist" > "$nlist"S - fi - - if test -f "$nlist"S; then - eval "$global_symbol_to_cdecl"' < "$nlist"S >> "$output_objdir/$dlsyms"' - else - $echo '/* NONE */' >> "$output_objdir/$dlsyms" - fi - - $echo >> "$output_objdir/$dlsyms" "\ - -#undef lt_preloaded_symbols - -#if defined (__STDC__) && __STDC__ -# define lt_ptr void * -#else -# define lt_ptr char * -# define const -#endif - -/* The mapping between symbol names and symbols. */ -" - - case $host in - *cygwin* | *mingw* ) - $echo >> "$output_objdir/$dlsyms" "\ -/* DATA imports from DLLs on WIN32 can't be const, because - runtime relocations are performed -- see ld's documentation - on pseudo-relocs */ -struct { -" - ;; - * ) - $echo >> "$output_objdir/$dlsyms" "\ -const struct { -" - ;; - esac - - - $echo >> "$output_objdir/$dlsyms" "\ - const char *name; - lt_ptr address; -} -lt_preloaded_symbols[] = -{\ -" - - eval "$global_symbol_to_c_name_address" < "$nlist" >> "$output_objdir/$dlsyms" - - $echo >> "$output_objdir/$dlsyms" "\ - {0, (lt_ptr) 0} -}; - -/* This works around a problem in FreeBSD linker */ -#ifdef FREEBSD_WORKAROUND -static const void *lt_preloaded_setup() { - return lt_preloaded_symbols; -} -#endif - -#ifdef __cplusplus -} -#endif\ -" - fi - - pic_flag_for_symtable= - case $host in - # compiling the symbol table file with pic_flag works around - # a FreeBSD bug that causes programs to crash when -lm is - # linked before any other PIC object. But we must not use - # pic_flag when linking with -static. The problem exists in - # FreeBSD 2.2.6 and is fixed in FreeBSD 3.1. - *-*-freebsd2*|*-*-freebsd3.0*|*-*-freebsdelf3.0*) - case "$compile_command " in - *" -static "*) ;; - *) pic_flag_for_symtable=" $pic_flag -DFREEBSD_WORKAROUND";; - esac;; - *-*-hpux*) - case "$compile_command " in - *" -static "*) ;; - *) pic_flag_for_symtable=" $pic_flag";; - esac - esac - - # Now compile the dynamic symbol file. - $show "(cd $output_objdir && $LTCC -c$no_builtin_flag$pic_flag_for_symtable \"$dlsyms\")" - $run eval '(cd $output_objdir && $LTCC -c$no_builtin_flag$pic_flag_for_symtable "$dlsyms")' || exit $? - - # Clean up the generated files. - $show "$rm $output_objdir/$dlsyms $nlist ${nlist}S ${nlist}T" - $run $rm "$output_objdir/$dlsyms" "$nlist" "${nlist}S" "${nlist}T" - - # Transform the symbol file into the correct name. - compile_command=`$echo "X$compile_command" | $Xsed -e "s%@SYMFILE@%$output_objdir/${outputname}S.${objext}%"` - finalize_command=`$echo "X$finalize_command" | $Xsed -e "s%@SYMFILE@%$output_objdir/${outputname}S.${objext}%"` - ;; - *) - $echo "$modename: unknown suffix for \`$dlsyms'" 1>&2 - exit $EXIT_FAILURE - ;; - esac - else - # We keep going just in case the user didn't refer to - # lt_preloaded_symbols. The linker will fail if global_symbol_pipe - # really was required. - - # Nullify the symbol file. - compile_command=`$echo "X$compile_command" | $Xsed -e "s% @SYMFILE@%%"` - finalize_command=`$echo "X$finalize_command" | $Xsed -e "s% @SYMFILE@%%"` - fi - - if test "$need_relink" = no || test "$build_libtool_libs" != yes; then - # Replace the output file specification. - compile_command=`$echo "X$compile_command" | $Xsed -e 's%@OUTPUT@%'"$output"'%g'` - link_command="$compile_command$compile_rpath" - - # We have no uninstalled library dependencies, so finalize right now. - $show "$link_command" - $run eval "$link_command" - status=$? - - # Delete the generated files. - if test -n "$dlsyms"; then - $show "$rm $output_objdir/${outputname}S.${objext}" - $run $rm "$output_objdir/${outputname}S.${objext}" - fi - - exit $status - fi - - if test -n "$shlibpath_var"; then - # We should set the shlibpath_var - rpath= - for dir in $temp_rpath; do - case $dir in - [\\/]* | [A-Za-z]:[\\/]*) - # Absolute path. - rpath="$rpath$dir:" - ;; - *) - # Relative path: add a thisdir entry. - rpath="$rpath\$thisdir/$dir:" - ;; - esac - done - temp_rpath="$rpath" - fi - - if test -n "$compile_shlibpath$finalize_shlibpath"; then - compile_command="$shlibpath_var=\"$compile_shlibpath$finalize_shlibpath\$$shlibpath_var\" $compile_command" - fi - if test -n "$finalize_shlibpath"; then - finalize_command="$shlibpath_var=\"$finalize_shlibpath\$$shlibpath_var\" $finalize_command" - fi - - compile_var= - finalize_var= - if test -n "$runpath_var"; then - if test -n "$perm_rpath"; then - # We should set the runpath_var. - rpath= - for dir in $perm_rpath; do - rpath="$rpath$dir:" - done - compile_var="$runpath_var=\"$rpath\$$runpath_var\" " - fi - if test -n "$finalize_perm_rpath"; then - # We should set the runpath_var. - rpath= - for dir in $finalize_perm_rpath; do - rpath="$rpath$dir:" - done - finalize_var="$runpath_var=\"$rpath\$$runpath_var\" " - fi - fi - - if test "$no_install" = yes; then - # We don't need to create a wrapper script. - link_command="$compile_var$compile_command$compile_rpath" - # Replace the output file specification. - link_command=`$echo "X$link_command" | $Xsed -e 's%@OUTPUT@%'"$output"'%g'` - # Delete the old output file. - $run $rm $output - # Link the executable and exit - $show "$link_command" - $run eval "$link_command" || exit $? - exit $EXIT_SUCCESS - fi - - if test "$hardcode_action" = relink; then - # Fast installation is not supported - link_command="$compile_var$compile_command$compile_rpath" - relink_command="$finalize_var$finalize_command$finalize_rpath" - - $echo "$modename: warning: this platform does not like uninstalled shared libraries" 1>&2 - $echo "$modename: \`$output' will be relinked during installation" 1>&2 - else - if test "$fast_install" != no; then - link_command="$finalize_var$compile_command$finalize_rpath" - if test "$fast_install" = yes; then - relink_command=`$echo "X$compile_var$compile_command$compile_rpath" | $Xsed -e 's%@OUTPUT@%\$progdir/\$file%g'` - else - # fast_install is set to needless - relink_command= - fi - else - link_command="$compile_var$compile_command$compile_rpath" - relink_command="$finalize_var$finalize_command$finalize_rpath" - fi - fi - - # Replace the output file specification. - link_command=`$echo "X$link_command" | $Xsed -e 's%@OUTPUT@%'"$output_objdir/$outputname"'%g'` - - # Delete the old output files. - $run $rm $output $output_objdir/$outputname $output_objdir/lt-$outputname - - $show "$link_command" - $run eval "$link_command" || exit $? - - # Now create the wrapper script. - $show "creating $output" - - # Quote the relink command for shipping. - if test -n "$relink_command"; then - # Preserve any variables that may affect compiler behavior - for var in $variables_saved_for_relink; do - if eval test -z \"\${$var+set}\"; then - relink_command="{ test -z \"\${$var+set}\" || unset $var || { $var=; export $var; }; }; $relink_command" - elif eval var_value=\$$var; test -z "$var_value"; then - relink_command="$var=; export $var; $relink_command" - else - var_value=`$echo "X$var_value" | $Xsed -e "$sed_quote_subst"` - relink_command="$var=\"$var_value\"; export $var; $relink_command" - fi - done - relink_command="(cd `pwd`; $relink_command)" - relink_command=`$echo "X$relink_command" | $Xsed -e "$sed_quote_subst"` - fi - - # Quote $echo for shipping. - if test "X$echo" = "X$SHELL $progpath --fallback-echo"; then - case $progpath in - [\\/]* | [A-Za-z]:[\\/]*) qecho="$SHELL $progpath --fallback-echo";; - *) qecho="$SHELL `pwd`/$progpath --fallback-echo";; - esac - qecho=`$echo "X$qecho" | $Xsed -e "$sed_quote_subst"` - else - qecho=`$echo "X$echo" | $Xsed -e "$sed_quote_subst"` - fi - - # Only actually do things if our run command is non-null. - if test -z "$run"; then - # win32 will think the script is a binary if it has - # a .exe suffix, so we strip it off here. - case $output in - *.exe) output=`$echo $output|${SED} 's,.exe$,,'` ;; - esac - # test for cygwin because mv fails w/o .exe extensions - case $host in - *cygwin*) - exeext=.exe - outputname=`$echo $outputname|${SED} 's,.exe$,,'` ;; - *) exeext= ;; - esac - case $host in - *cygwin* | *mingw* ) - cwrappersource=`$echo ${objdir}/lt-${outputname}.c` - cwrapper=`$echo ${output}.exe` - $rm $cwrappersource $cwrapper - trap "$rm $cwrappersource $cwrapper; exit $EXIT_FAILURE" 1 2 15 - - cat > $cwrappersource <> $cwrappersource<<"EOF" -#include -#include -#include -#include -#include -#include - -#if defined(PATH_MAX) -# define LT_PATHMAX PATH_MAX -#elif defined(MAXPATHLEN) -# define LT_PATHMAX MAXPATHLEN -#else -# define LT_PATHMAX 1024 -#endif - -#ifndef DIR_SEPARATOR -#define DIR_SEPARATOR '/' -#endif - -#if defined (_WIN32) || defined (__MSDOS__) || defined (__DJGPP__) || \ - defined (__OS2__) -#define HAVE_DOS_BASED_FILE_SYSTEM -#ifndef DIR_SEPARATOR_2 -#define DIR_SEPARATOR_2 '\\' -#endif -#endif - -#ifndef DIR_SEPARATOR_2 -# define IS_DIR_SEPARATOR(ch) ((ch) == DIR_SEPARATOR) -#else /* DIR_SEPARATOR_2 */ -# define IS_DIR_SEPARATOR(ch) \ - (((ch) == DIR_SEPARATOR) || ((ch) == DIR_SEPARATOR_2)) -#endif /* DIR_SEPARATOR_2 */ - -#define XMALLOC(type, num) ((type *) xmalloc ((num) * sizeof(type))) -#define XFREE(stale) do { \ - if (stale) { free ((void *) stale); stale = 0; } \ -} while (0) - -const char *program_name = NULL; - -void * xmalloc (size_t num); -char * xstrdup (const char *string); -char * basename (const char *name); -char * fnqualify(const char *path); -char * strendzap(char *str, const char *pat); -void lt_fatal (const char *message, ...); - -int -main (int argc, char *argv[]) -{ - char **newargz; - int i; - - program_name = (char *) xstrdup ((char *) basename (argv[0])); - newargz = XMALLOC(char *, argc+2); -EOF - - cat >> $cwrappersource <> $cwrappersource <<"EOF" - newargz[1] = fnqualify(argv[0]); - /* we know the script has the same name, without the .exe */ - /* so make sure newargz[1] doesn't end in .exe */ - strendzap(newargz[1],".exe"); - for (i = 1; i < argc; i++) - newargz[i+1] = xstrdup(argv[i]); - newargz[argc+1] = NULL; -EOF - - cat >> $cwrappersource <> $cwrappersource <<"EOF" - return 127; -} - -void * -xmalloc (size_t num) -{ - void * p = (void *) malloc (num); - if (!p) - lt_fatal ("Memory exhausted"); - - return p; -} - -char * -xstrdup (const char *string) -{ - return string ? strcpy ((char *) xmalloc (strlen (string) + 1), string) : NULL -; -} - -char * -basename (const char *name) -{ - const char *base; - -#if defined (HAVE_DOS_BASED_FILE_SYSTEM) - /* Skip over the disk name in MSDOS pathnames. */ - if (isalpha (name[0]) && name[1] == ':') - name += 2; -#endif - - for (base = name; *name; name++) - if (IS_DIR_SEPARATOR (*name)) - base = name + 1; - return (char *) base; -} - -char * -fnqualify(const char *path) -{ - size_t size; - char *p; - char tmp[LT_PATHMAX + 1]; - - assert(path != NULL); - - /* Is it qualified already? */ -#if defined (HAVE_DOS_BASED_FILE_SYSTEM) - if (isalpha (path[0]) && path[1] == ':') - return xstrdup (path); -#endif - if (IS_DIR_SEPARATOR (path[0])) - return xstrdup (path); - - /* prepend the current directory */ - /* doesn't handle '~' */ - if (getcwd (tmp, LT_PATHMAX) == NULL) - lt_fatal ("getcwd failed"); - size = strlen(tmp) + 1 + strlen(path) + 1; /* +2 for '/' and '\0' */ - p = XMALLOC(char, size); - sprintf(p, "%s%c%s", tmp, DIR_SEPARATOR, path); - return p; -} - -char * -strendzap(char *str, const char *pat) -{ - size_t len, patlen; - - assert(str != NULL); - assert(pat != NULL); - - len = strlen(str); - patlen = strlen(pat); - - if (patlen <= len) - { - str += len - patlen; - if (strcmp(str, pat) == 0) - *str = '\0'; - } - return str; -} - -static void -lt_error_core (int exit_status, const char * mode, - const char * message, va_list ap) -{ - fprintf (stderr, "%s: %s: ", program_name, mode); - vfprintf (stderr, message, ap); - fprintf (stderr, ".\n"); - - if (exit_status >= 0) - exit (exit_status); -} - -void -lt_fatal (const char *message, ...) -{ - va_list ap; - va_start (ap, message); - lt_error_core (EXIT_FAILURE, "FATAL", message, ap); - va_end (ap); -} -EOF - # we should really use a build-platform specific compiler - # here, but OTOH, the wrappers (shell script and this C one) - # are only useful if you want to execute the "real" binary. - # Since the "real" binary is built for $host, then this - # wrapper might as well be built for $host, too. - $run $LTCC -s -o $cwrapper $cwrappersource - ;; - esac - $rm $output - trap "$rm $output; exit $EXIT_FAILURE" 1 2 15 - - $echo > $output "\ -#! $SHELL - -# $output - temporary wrapper script for $objdir/$outputname -# Generated by $PROGRAM - GNU $PACKAGE $VERSION$TIMESTAMP -# -# The $output program cannot be directly executed until all the libtool -# libraries that it depends on are installed. -# -# This wrapper script should never be moved out of the build directory. -# If it is, it will not operate correctly. - -# Sed substitution that helps us do robust quoting. It backslashifies -# metacharacters that are still active within double-quoted strings. -Xsed='${SED} -e 1s/^X//' -sed_quote_subst='$sed_quote_subst' - -# The HP-UX ksh and POSIX shell print the target directory to stdout -# if CDPATH is set. -(unset CDPATH) >/dev/null 2>&1 && unset CDPATH - -relink_command=\"$relink_command\" - -# This environment variable determines our operation mode. -if test \"\$libtool_install_magic\" = \"$magic\"; then - # install mode needs the following variable: - notinst_deplibs='$notinst_deplibs' -else - # When we are sourced in execute mode, \$file and \$echo are already set. - if test \"\$libtool_execute_magic\" != \"$magic\"; then - echo=\"$qecho\" - file=\"\$0\" - # Make sure echo works. - if test \"X\$1\" = X--no-reexec; then - # Discard the --no-reexec flag, and continue. - shift - elif test \"X\`(\$echo '\t') 2>/dev/null\`\" = 'X\t'; then - # Yippee, \$echo works! - : - else - # Restart under the correct shell, and then maybe \$echo will work. - exec $SHELL \"\$0\" --no-reexec \${1+\"\$@\"} - fi - fi\ -" - $echo >> $output "\ - - # Find the directory that this script lives in. - thisdir=\`\$echo \"X\$file\" | \$Xsed -e 's%/[^/]*$%%'\` - test \"x\$thisdir\" = \"x\$file\" && thisdir=. - - # Follow symbolic links until we get to the real thisdir. - file=\`ls -ld \"\$file\" | ${SED} -n 's/.*-> //p'\` - while test -n \"\$file\"; do - destdir=\`\$echo \"X\$file\" | \$Xsed -e 's%/[^/]*\$%%'\` - - # If there was a directory component, then change thisdir. - if test \"x\$destdir\" != \"x\$file\"; then - case \"\$destdir\" in - [\\\\/]* | [A-Za-z]:[\\\\/]*) thisdir=\"\$destdir\" ;; - *) thisdir=\"\$thisdir/\$destdir\" ;; - esac - fi - - file=\`\$echo \"X\$file\" | \$Xsed -e 's%^.*/%%'\` - file=\`ls -ld \"\$thisdir/\$file\" | ${SED} -n 's/.*-> //p'\` - done - - # Try to get the absolute directory name. - absdir=\`cd \"\$thisdir\" && pwd\` - test -n \"\$absdir\" && thisdir=\"\$absdir\" -" - - if test "$fast_install" = yes; then - $echo >> $output "\ - program=lt-'$outputname'$exeext - progdir=\"\$thisdir/$objdir\" - - if test ! -f \"\$progdir/\$program\" || \\ - { file=\`ls -1dt \"\$progdir/\$program\" \"\$progdir/../\$program\" 2>/dev/null | ${SED} 1q\`; \\ - test \"X\$file\" != \"X\$progdir/\$program\"; }; then - - file=\"\$\$-\$program\" - - if test ! -d \"\$progdir\"; then - $mkdir \"\$progdir\" - else - $rm \"\$progdir/\$file\" - fi" - - $echo >> $output "\ - - # relink executable if necessary - if test -n \"\$relink_command\"; then - if relink_command_output=\`eval \$relink_command 2>&1\`; then : - else - $echo \"\$relink_command_output\" >&2 - $rm \"\$progdir/\$file\" - exit $EXIT_FAILURE - fi - fi - - $mv \"\$progdir/\$file\" \"\$progdir/\$program\" 2>/dev/null || - { $rm \"\$progdir/\$program\"; - $mv \"\$progdir/\$file\" \"\$progdir/\$program\"; } - $rm \"\$progdir/\$file\" - fi" - else - $echo >> $output "\ - program='$outputname' - progdir=\"\$thisdir/$objdir\" -" - fi - - $echo >> $output "\ - - if test -f \"\$progdir/\$program\"; then" - - # Export our shlibpath_var if we have one. - if test "$shlibpath_overrides_runpath" = yes && test -n "$shlibpath_var" && test -n "$temp_rpath"; then - $echo >> $output "\ - # Add our own library path to $shlibpath_var - $shlibpath_var=\"$temp_rpath\$$shlibpath_var\" - - # Some systems cannot cope with colon-terminated $shlibpath_var - # The second colon is a workaround for a bug in BeOS R4 sed - $shlibpath_var=\`\$echo \"X\$$shlibpath_var\" | \$Xsed -e 's/::*\$//'\` - - export $shlibpath_var -" - fi - - # fixup the dll searchpath if we need to. - if test -n "$dllsearchpath"; then - $echo >> $output "\ - # Add the dll search path components to the executable PATH - PATH=$dllsearchpath:\$PATH -" - fi - - $echo >> $output "\ - if test \"\$libtool_execute_magic\" != \"$magic\"; then - # Run the actual program with our arguments. -" - case $host in - # Backslashes separate directories on plain windows - *-*-mingw | *-*-os2*) - $echo >> $output "\ - exec \"\$progdir\\\\\$program\" \${1+\"\$@\"} -" - ;; - - *) - $echo >> $output "\ - exec \"\$progdir/\$program\" \${1+\"\$@\"} -" - ;; - esac - $echo >> $output "\ - \$echo \"\$0: cannot exec \$program \${1+\"\$@\"}\" - exit $EXIT_FAILURE - fi - else - # The program doesn't exist. - \$echo \"\$0: error: \\\`\$progdir/\$program' does not exist\" 1>&2 - \$echo \"This script is just a wrapper for \$program.\" 1>&2 - $echo \"See the $PACKAGE documentation for more information.\" 1>&2 - exit $EXIT_FAILURE - fi -fi\ -" - chmod +x $output - fi - exit $EXIT_SUCCESS - ;; - esac - - # See if we need to build an old-fashioned archive. - for oldlib in $oldlibs; do - - if test "$build_libtool_libs" = convenience; then - oldobjs="$libobjs_save" - addlibs="$convenience" - build_libtool_libs=no - else - if test "$build_libtool_libs" = module; then - oldobjs="$libobjs_save" - build_libtool_libs=no - else - oldobjs="$old_deplibs $non_pic_objects" - fi - addlibs="$old_convenience" - fi - - if test -n "$addlibs"; then - gentop="$output_objdir/${outputname}x" - generated="$generated $gentop" - - func_extract_archives $gentop $addlibs - oldobjs="$oldobjs $func_extract_archives_result" - fi - - # Do each command in the archive commands. - if test -n "$old_archive_from_new_cmds" && test "$build_libtool_libs" = yes; then - cmds=$old_archive_from_new_cmds - else - # POSIX demands no paths to be encoded in archives. We have - # to avoid creating archives with duplicate basenames if we - # might have to extract them afterwards, e.g., when creating a - # static archive out of a convenience library, or when linking - # the entirety of a libtool archive into another (currently - # not supported by libtool). - if (for obj in $oldobjs - do - $echo "X$obj" | $Xsed -e 's%^.*/%%' - done | sort | sort -uc >/dev/null 2>&1); then - : - else - $echo "copying selected object files to avoid basename conflicts..." - - if test -z "$gentop"; then - gentop="$output_objdir/${outputname}x" - generated="$generated $gentop" - - $show "${rm}r $gentop" - $run ${rm}r "$gentop" - $show "$mkdir $gentop" - $run $mkdir "$gentop" - status=$? - if test "$status" -ne 0 && test ! -d "$gentop"; then - exit $status - fi - fi - - save_oldobjs=$oldobjs - oldobjs= - counter=1 - for obj in $save_oldobjs - do - objbase=`$echo "X$obj" | $Xsed -e 's%^.*/%%'` - case " $oldobjs " in - " ") oldobjs=$obj ;; - *[\ /]"$objbase "*) - while :; do - # Make sure we don't pick an alternate name that also - # overlaps. - newobj=lt$counter-$objbase - counter=`expr $counter + 1` - case " $oldobjs " in - *[\ /]"$newobj "*) ;; - *) if test ! -f "$gentop/$newobj"; then break; fi ;; - esac - done - $show "ln $obj $gentop/$newobj || cp $obj $gentop/$newobj" - $run ln "$obj" "$gentop/$newobj" || - $run cp "$obj" "$gentop/$newobj" - oldobjs="$oldobjs $gentop/$newobj" - ;; - *) oldobjs="$oldobjs $obj" ;; - esac - done - fi - - eval cmds=\"$old_archive_cmds\" - - if len=`expr "X$cmds" : ".*"` && - test "$len" -le "$max_cmd_len" || test "$max_cmd_len" -le -1; then - cmds=$old_archive_cmds - else - # the command line is too long to link in one step, link in parts - $echo "using piecewise archive linking..." - save_RANLIB=$RANLIB - RANLIB=: - objlist= - concat_cmds= - save_oldobjs=$oldobjs - - # Is there a better way of finding the last object in the list? - for obj in $save_oldobjs - do - last_oldobj=$obj - done - for obj in $save_oldobjs - do - oldobjs="$objlist $obj" - objlist="$objlist $obj" - eval test_cmds=\"$old_archive_cmds\" - if len=`expr "X$test_cmds" : ".*" 2>/dev/null` && - test "$len" -le "$max_cmd_len"; then - : - else - # the above command should be used before it gets too long - oldobjs=$objlist - if test "$obj" = "$last_oldobj" ; then - RANLIB=$save_RANLIB - fi - test -z "$concat_cmds" || concat_cmds=$concat_cmds~ - eval concat_cmds=\"\${concat_cmds}$old_archive_cmds\" - objlist= - fi - done - RANLIB=$save_RANLIB - oldobjs=$objlist - if test "X$oldobjs" = "X" ; then - eval cmds=\"\$concat_cmds\" - else - eval cmds=\"\$concat_cmds~\$old_archive_cmds\" - fi - fi - fi - save_ifs="$IFS"; IFS='~' - for cmd in $cmds; do - eval cmd=\"$cmd\" - IFS="$save_ifs" - $show "$cmd" - $run eval "$cmd" || exit $? - done - IFS="$save_ifs" - done - - if test -n "$generated"; then - $show "${rm}r$generated" - $run ${rm}r$generated - fi - - # Now create the libtool archive. - case $output in - *.la) - old_library= - test "$build_old_libs" = yes && old_library="$libname.$libext" - $show "creating $output" - - # Preserve any variables that may affect compiler behavior - for var in $variables_saved_for_relink; do - if eval test -z \"\${$var+set}\"; then - relink_command="{ test -z \"\${$var+set}\" || unset $var || { $var=; export $var; }; }; $relink_command" - elif eval var_value=\$$var; test -z "$var_value"; then - relink_command="$var=; export $var; $relink_command" - else - var_value=`$echo "X$var_value" | $Xsed -e "$sed_quote_subst"` - relink_command="$var=\"$var_value\"; export $var; $relink_command" - fi - done - # Quote the link command for shipping. - relink_command="(cd `pwd`; $SHELL $progpath $preserve_args --mode=relink $libtool_args @inst_prefix_dir@)" - relink_command=`$echo "X$relink_command" | $Xsed -e "$sed_quote_subst"` - if test "$hardcode_automatic" = yes ; then - relink_command= - fi - - - # Only create the output if not a dry run. - if test -z "$run"; then - for installed in no yes; do - if test "$installed" = yes; then - if test -z "$install_libdir"; then - break - fi - output="$output_objdir/$outputname"i - # Replace all uninstalled libtool libraries with the installed ones - newdependency_libs= - for deplib in $dependency_libs; do - case $deplib in - *.la) - name=`$echo "X$deplib" | $Xsed -e 's%^.*/%%'` - eval libdir=`${SED} -n -e 's/^libdir=\(.*\)$/\1/p' $deplib` - if test -z "$libdir"; then - $echo "$modename: \`$deplib' is not a valid libtool archive" 1>&2 - exit $EXIT_FAILURE - fi - newdependency_libs="$newdependency_libs $libdir/$name" - ;; - *) newdependency_libs="$newdependency_libs $deplib" ;; - esac - done - dependency_libs="$newdependency_libs" - newdlfiles= - for lib in $dlfiles; do - name=`$echo "X$lib" | $Xsed -e 's%^.*/%%'` - eval libdir=`${SED} -n -e 's/^libdir=\(.*\)$/\1/p' $lib` - if test -z "$libdir"; then - $echo "$modename: \`$lib' is not a valid libtool archive" 1>&2 - exit $EXIT_FAILURE - fi - newdlfiles="$newdlfiles $libdir/$name" - done - dlfiles="$newdlfiles" - newdlprefiles= - for lib in $dlprefiles; do - name=`$echo "X$lib" | $Xsed -e 's%^.*/%%'` - eval libdir=`${SED} -n -e 's/^libdir=\(.*\)$/\1/p' $lib` - if test -z "$libdir"; then - $echo "$modename: \`$lib' is not a valid libtool archive" 1>&2 - exit $EXIT_FAILURE - fi - newdlprefiles="$newdlprefiles $libdir/$name" - done - dlprefiles="$newdlprefiles" - else - newdlfiles= - for lib in $dlfiles; do - case $lib in - [\\/]* | [A-Za-z]:[\\/]*) abs="$lib" ;; - *) abs=`pwd`"/$lib" ;; - esac - newdlfiles="$newdlfiles $abs" - done - dlfiles="$newdlfiles" - newdlprefiles= - for lib in $dlprefiles; do - case $lib in - [\\/]* | [A-Za-z]:[\\/]*) abs="$lib" ;; - *) abs=`pwd`"/$lib" ;; - esac - newdlprefiles="$newdlprefiles $abs" - done - dlprefiles="$newdlprefiles" - fi - $rm $output - # place dlname in correct position for cygwin - tdlname=$dlname - case $host,$output,$installed,$module,$dlname in - *cygwin*,*lai,yes,no,*.dll | *mingw*,*lai,yes,no,*.dll) tdlname=../bin/$dlname ;; - esac - $echo > $output "\ -# $outputname - a libtool library file -# Generated by $PROGRAM - GNU $PACKAGE $VERSION$TIMESTAMP -# -# Please DO NOT delete this file! -# It is necessary for linking the library. - -# The name that we can dlopen(3). -dlname='$tdlname' - -# Names of this library. -library_names='$library_names' - -# The name of the static archive. -old_library='$old_library' - -# Libraries that this one depends upon. -dependency_libs='$dependency_libs' - -# Version information for $libname. -current=$current -age=$age -revision=$revision - -# Is this an already installed library? -installed=$installed - -# Should we warn about portability when linking against -modules? -shouldnotlink=$module - -# Files to dlopen/dlpreopen -dlopen='$dlfiles' -dlpreopen='$dlprefiles' - -# Directory that this library needs to be installed in: -libdir='$install_libdir'" - if test "$installed" = no && test "$need_relink" = yes; then - $echo >> $output "\ -relink_command=\"$relink_command\"" - fi - done - fi - - # Do a symbolic link so that the libtool archive can be found in - # LD_LIBRARY_PATH before the program is installed. - $show "(cd $output_objdir && $rm $outputname && $LN_S ../$outputname $outputname)" - $run eval '(cd $output_objdir && $rm $outputname && $LN_S ../$outputname $outputname)' || exit $? - ;; - esac - exit $EXIT_SUCCESS - ;; - - # libtool install mode - install) - modename="$modename: install" - - # There may be an optional sh(1) argument at the beginning of - # install_prog (especially on Windows NT). - if test "$nonopt" = "$SHELL" || test "$nonopt" = /bin/sh || - # Allow the use of GNU shtool's install command. - $echo "X$nonopt" | grep shtool > /dev/null; then - # Aesthetically quote it. - arg=`$echo "X$nonopt" | $Xsed -e "$sed_quote_subst"` - case $arg in - *[\[\~\#\^\&\*\(\)\{\}\|\;\<\>\?\'\ \ ]*|*]*|"") - arg="\"$arg\"" - ;; - esac - install_prog="$arg " - arg="$1" - shift - else - install_prog= - arg=$nonopt - fi - - # The real first argument should be the name of the installation program. - # Aesthetically quote it. - arg=`$echo "X$arg" | $Xsed -e "$sed_quote_subst"` - case $arg in - *[\[\~\#\^\&\*\(\)\{\}\|\;\<\>\?\'\ \ ]*|*]*|"") - arg="\"$arg\"" - ;; - esac - install_prog="$install_prog$arg" - - # We need to accept at least all the BSD install flags. - dest= - files= - opts= - prev= - install_type= - isdir=no - stripme= - for arg - do - if test -n "$dest"; then - files="$files $dest" - dest=$arg - continue - fi - - case $arg in - -d) isdir=yes ;; - -f) - case " $install_prog " in - *[\\\ /]cp\ *) ;; - *) prev=$arg ;; - esac - ;; - -g | -m | -o) prev=$arg ;; - -s) - stripme=" -s" - continue - ;; - -*) - ;; - *) - # If the previous option needed an argument, then skip it. - if test -n "$prev"; then - prev= - else - dest=$arg - continue - fi - ;; - esac - - # Aesthetically quote the argument. - arg=`$echo "X$arg" | $Xsed -e "$sed_quote_subst"` - case $arg in - *[\[\~\#\^\&\*\(\)\{\}\|\;\<\>\?\'\ \ ]*|*]*|"") - arg="\"$arg\"" - ;; - esac - install_prog="$install_prog $arg" - done - - if test -z "$install_prog"; then - $echo "$modename: you must specify an install program" 1>&2 - $echo "$help" 1>&2 - exit $EXIT_FAILURE - fi - - if test -n "$prev"; then - $echo "$modename: the \`$prev' option requires an argument" 1>&2 - $echo "$help" 1>&2 - exit $EXIT_FAILURE - fi - - if test -z "$files"; then - if test -z "$dest"; then - $echo "$modename: no file or destination specified" 1>&2 - else - $echo "$modename: you must specify a destination" 1>&2 - fi - $echo "$help" 1>&2 - exit $EXIT_FAILURE - fi - - # Strip any trailing slash from the destination. - dest=`$echo "X$dest" | $Xsed -e 's%/$%%'` - - # Check to see that the destination is a directory. - test -d "$dest" && isdir=yes - if test "$isdir" = yes; then - destdir="$dest" - destname= - else - destdir=`$echo "X$dest" | $Xsed -e 's%/[^/]*$%%'` - test "X$destdir" = "X$dest" && destdir=. - destname=`$echo "X$dest" | $Xsed -e 's%^.*/%%'` - - # Not a directory, so check to see that there is only one file specified. - set dummy $files - if test "$#" -gt 2; then - $echo "$modename: \`$dest' is not a directory" 1>&2 - $echo "$help" 1>&2 - exit $EXIT_FAILURE - fi - fi - case $destdir in - [\\/]* | [A-Za-z]:[\\/]*) ;; - *) - for file in $files; do - case $file in - *.lo) ;; - *) - $echo "$modename: \`$destdir' must be an absolute directory name" 1>&2 - $echo "$help" 1>&2 - exit $EXIT_FAILURE - ;; - esac - done - ;; - esac - - # This variable tells wrapper scripts just to set variables rather - # than running their programs. - libtool_install_magic="$magic" - - staticlibs= - future_libdirs= - current_libdirs= - for file in $files; do - - # Do each installation. - case $file in - *.$libext) - # Do the static libraries later. - staticlibs="$staticlibs $file" - ;; - - *.la) - # Check to see that this really is a libtool archive. - if (${SED} -e '2q' $file | grep "^# Generated by .*$PACKAGE") >/dev/null 2>&1; then : - else - $echo "$modename: \`$file' is not a valid libtool archive" 1>&2 - $echo "$help" 1>&2 - exit $EXIT_FAILURE - fi - - library_names= - old_library= - relink_command= - # If there is no directory component, then add one. - case $file in - */* | *\\*) . $file ;; - *) . ./$file ;; - esac - - # Add the libdir to current_libdirs if it is the destination. - if test "X$destdir" = "X$libdir"; then - case "$current_libdirs " in - *" $libdir "*) ;; - *) current_libdirs="$current_libdirs $libdir" ;; - esac - else - # Note the libdir as a future libdir. - case "$future_libdirs " in - *" $libdir "*) ;; - *) future_libdirs="$future_libdirs $libdir" ;; - esac - fi - - dir=`$echo "X$file" | $Xsed -e 's%/[^/]*$%%'`/ - test "X$dir" = "X$file/" && dir= - dir="$dir$objdir" - - if test -n "$relink_command"; then - # Determine the prefix the user has applied to our future dir. - inst_prefix_dir=`$echo "$destdir" | $SED "s%$libdir\$%%"` - - # Don't allow the user to place us outside of our expected - # location b/c this prevents finding dependent libraries that - # are installed to the same prefix. - # At present, this check doesn't affect windows .dll's that - # are installed into $libdir/../bin (currently, that works fine) - # but it's something to keep an eye on. - if test "$inst_prefix_dir" = "$destdir"; then - $echo "$modename: error: cannot install \`$file' to a directory not ending in $libdir" 1>&2 - exit $EXIT_FAILURE - fi - - if test -n "$inst_prefix_dir"; then - # Stick the inst_prefix_dir data into the link command. - relink_command=`$echo "$relink_command" | $SED "s%@inst_prefix_dir@%-inst-prefix-dir $inst_prefix_dir%"` - else - relink_command=`$echo "$relink_command" | $SED "s%@inst_prefix_dir@%%"` - fi - - $echo "$modename: warning: relinking \`$file'" 1>&2 - $show "$relink_command" - if $run eval "$relink_command"; then : - else - $echo "$modename: error: relink \`$file' with the above command before installing it" 1>&2 - exit $EXIT_FAILURE - fi - fi - - # See the names of the shared library. - set dummy $library_names - if test -n "$2"; then - realname="$2" - shift - shift - - srcname="$realname" - test -n "$relink_command" && srcname="$realname"T - - # Install the shared library and build the symlinks. - $show "$install_prog $dir/$srcname $destdir/$realname" - $run eval "$install_prog $dir/$srcname $destdir/$realname" || exit $? - if test -n "$stripme" && test -n "$striplib"; then - $show "$striplib $destdir/$realname" - $run eval "$striplib $destdir/$realname" || exit $? - fi - - if test "$#" -gt 0; then - # Delete the old symlinks, and create new ones. - # Try `ln -sf' first, because the `ln' binary might depend on - # the symlink we replace! Solaris /bin/ln does not understand -f, - # so we also need to try rm && ln -s. - for linkname - do - if test "$linkname" != "$realname"; then - $show "(cd $destdir && { $LN_S -f $realname $linkname || { $rm $linkname && $LN_S $realname $linkname; }; })" - $run eval "(cd $destdir && { $LN_S -f $realname $linkname || { $rm $linkname && $LN_S $realname $linkname; }; })" - fi - done - fi - - # Do each command in the postinstall commands. - lib="$destdir/$realname" - cmds=$postinstall_cmds - save_ifs="$IFS"; IFS='~' - for cmd in $cmds; do - IFS="$save_ifs" - eval cmd=\"$cmd\" - $show "$cmd" - $run eval "$cmd" || { - lt_exit=$? - - # Restore the uninstalled library and exit - if test "$mode" = relink; then - $run eval '(cd $output_objdir && $rm ${realname}T && $mv ${realname}U $realname)' - fi - - exit $lt_exit - } - done - IFS="$save_ifs" - fi - - # Install the pseudo-library for information purposes. - name=`$echo "X$file" | $Xsed -e 's%^.*/%%'` - instname="$dir/$name"i - $show "$install_prog $instname $destdir/$name" - $run eval "$install_prog $instname $destdir/$name" || exit $? - - # Maybe install the static library, too. - test -n "$old_library" && staticlibs="$staticlibs $dir/$old_library" - ;; - - *.lo) - # Install (i.e. copy) a libtool object. - - # Figure out destination file name, if it wasn't already specified. - if test -n "$destname"; then - destfile="$destdir/$destname" - else - destfile=`$echo "X$file" | $Xsed -e 's%^.*/%%'` - destfile="$destdir/$destfile" - fi - - # Deduce the name of the destination old-style object file. - case $destfile in - *.lo) - staticdest=`$echo "X$destfile" | $Xsed -e "$lo2o"` - ;; - *.$objext) - staticdest="$destfile" - destfile= - ;; - *) - $echo "$modename: cannot copy a libtool object to \`$destfile'" 1>&2 - $echo "$help" 1>&2 - exit $EXIT_FAILURE - ;; - esac - - # Install the libtool object if requested. - if test -n "$destfile"; then - $show "$install_prog $file $destfile" - $run eval "$install_prog $file $destfile" || exit $? - fi - - # Install the old object if enabled. - if test "$build_old_libs" = yes; then - # Deduce the name of the old-style object file. - staticobj=`$echo "X$file" | $Xsed -e "$lo2o"` - - $show "$install_prog $staticobj $staticdest" - $run eval "$install_prog \$staticobj \$staticdest" || exit $? - fi - exit $EXIT_SUCCESS - ;; - - *) - # Figure out destination file name, if it wasn't already specified. - if test -n "$destname"; then - destfile="$destdir/$destname" - else - destfile=`$echo "X$file" | $Xsed -e 's%^.*/%%'` - destfile="$destdir/$destfile" - fi - - # If the file is missing, and there is a .exe on the end, strip it - # because it is most likely a libtool script we actually want to - # install - stripped_ext="" - case $file in - *.exe) - if test ! -f "$file"; then - file=`$echo $file|${SED} 's,.exe$,,'` - stripped_ext=".exe" - fi - ;; - esac - - # Do a test to see if this is really a libtool program. - case $host in - *cygwin*|*mingw*) - wrapper=`$echo $file | ${SED} -e 's,.exe$,,'` - ;; - *) - wrapper=$file - ;; - esac - if (${SED} -e '4q' $wrapper | grep "^# Generated by .*$PACKAGE")>/dev/null 2>&1; then - notinst_deplibs= - relink_command= - - # Note that it is not necessary on cygwin/mingw to append a dot to - # foo even if both foo and FILE.exe exist: automatic-append-.exe - # behavior happens only for exec(3), not for open(2)! Also, sourcing - # `FILE.' does not work on cygwin managed mounts. - # - # If there is no directory component, then add one. - case $wrapper in - */* | *\\*) . ${wrapper} ;; - *) . ./${wrapper} ;; - esac - - # Check the variables that should have been set. - if test -z "$notinst_deplibs"; then - $echo "$modename: invalid libtool wrapper script \`$wrapper'" 1>&2 - exit $EXIT_FAILURE - fi - - finalize=yes - for lib in $notinst_deplibs; do - # Check to see that each library is installed. - libdir= - if test -f "$lib"; then - # If there is no directory component, then add one. - case $lib in - */* | *\\*) . $lib ;; - *) . ./$lib ;; - esac - fi - libfile="$libdir/"`$echo "X$lib" | $Xsed -e 's%^.*/%%g'` ### testsuite: skip nested quoting test - if test -n "$libdir" && test ! -f "$libfile"; then - $echo "$modename: warning: \`$lib' has not been installed in \`$libdir'" 1>&2 - finalize=no - fi - done - - relink_command= - # Note that it is not necessary on cygwin/mingw to append a dot to - # foo even if both foo and FILE.exe exist: automatic-append-.exe - # behavior happens only for exec(3), not for open(2)! Also, sourcing - # `FILE.' does not work on cygwin managed mounts. - # - # If there is no directory component, then add one. - case $wrapper in - */* | *\\*) . ${wrapper} ;; - *) . ./${wrapper} ;; - esac - - outputname= - if test "$fast_install" = no && test -n "$relink_command"; then - if test "$finalize" = yes && test -z "$run"; then - tmpdir="/tmp" - test -n "$TMPDIR" && tmpdir="$TMPDIR" - tmpdir="$tmpdir/libtool-$$" - save_umask=`umask` - umask 0077 - if $mkdir "$tmpdir"; then - umask $save_umask - else - umask $save_umask - $echo "$modename: error: cannot create temporary directory \`$tmpdir'" 1>&2 - continue - fi - file=`$echo "X$file$stripped_ext" | $Xsed -e 's%^.*/%%'` - outputname="$tmpdir/$file" - # Replace the output file specification. - relink_command=`$echo "X$relink_command" | $Xsed -e 's%@OUTPUT@%'"$outputname"'%g'` - - $show "$relink_command" - if $run eval "$relink_command"; then : - else - $echo "$modename: error: relink \`$file' with the above command before installing it" 1>&2 - ${rm}r "$tmpdir" - continue - fi - file="$outputname" - else - $echo "$modename: warning: cannot relink \`$file'" 1>&2 - fi - else - # Install the binary that we compiled earlier. - file=`$echo "X$file$stripped_ext" | $Xsed -e "s%\([^/]*\)$%$objdir/\1%"` - fi - fi - - # remove .exe since cygwin /usr/bin/install will append another - # one anyway - case $install_prog,$host in - */usr/bin/install*,*cygwin*) - case $file:$destfile in - *.exe:*.exe) - # this is ok - ;; - *.exe:*) - destfile=$destfile.exe - ;; - *:*.exe) - destfile=`$echo $destfile | ${SED} -e 's,.exe$,,'` - ;; - esac - ;; - esac - $show "$install_prog$stripme $file $destfile" - $run eval "$install_prog\$stripme \$file \$destfile" || exit $? - test -n "$outputname" && ${rm}r "$tmpdir" - ;; - esac - done - - for file in $staticlibs; do - name=`$echo "X$file" | $Xsed -e 's%^.*/%%'` - - # Set up the ranlib parameters. - oldlib="$destdir/$name" - - $show "$install_prog $file $oldlib" - $run eval "$install_prog \$file \$oldlib" || exit $? - - if test -n "$stripme" && test -n "$old_striplib"; then - $show "$old_striplib $oldlib" - $run eval "$old_striplib $oldlib" || exit $? - fi - - # Do each command in the postinstall commands. - cmds=$old_postinstall_cmds - save_ifs="$IFS"; IFS='~' - for cmd in $cmds; do - IFS="$save_ifs" - eval cmd=\"$cmd\" - $show "$cmd" - $run eval "$cmd" || exit $? - done - IFS="$save_ifs" - done - - if test -n "$future_libdirs"; then - $echo "$modename: warning: remember to run \`$progname --finish$future_libdirs'" 1>&2 - fi - - if test -n "$current_libdirs"; then - # Maybe just do a dry run. - test -n "$run" && current_libdirs=" -n$current_libdirs" - exec_cmd='$SHELL $progpath $preserve_args --finish$current_libdirs' - else - exit $EXIT_SUCCESS - fi - ;; - - # libtool finish mode - finish) - modename="$modename: finish" - libdirs="$nonopt" - admincmds= - - if test -n "$finish_cmds$finish_eval" && test -n "$libdirs"; then - for dir - do - libdirs="$libdirs $dir" - done - - for libdir in $libdirs; do - if test -n "$finish_cmds"; then - # Do each command in the finish commands. - cmds=$finish_cmds - save_ifs="$IFS"; IFS='~' - for cmd in $cmds; do - IFS="$save_ifs" - eval cmd=\"$cmd\" - $show "$cmd" - $run eval "$cmd" || admincmds="$admincmds - $cmd" - done - IFS="$save_ifs" - fi - if test -n "$finish_eval"; then - # Do the single finish_eval. - eval cmds=\"$finish_eval\" - $run eval "$cmds" || admincmds="$admincmds - $cmds" - fi - done - fi - - # Exit here if they wanted silent mode. - test "$show" = : && exit $EXIT_SUCCESS - - $echo "----------------------------------------------------------------------" - $echo "Libraries have been installed in:" - for libdir in $libdirs; do - $echo " $libdir" - done - $echo - $echo "If you ever happen to want to link against installed libraries" - $echo "in a given directory, LIBDIR, you must either use libtool, and" - $echo "specify the full pathname of the library, or use the \`-LLIBDIR'" - $echo "flag during linking and do at least one of the following:" - if test -n "$shlibpath_var"; then - $echo " - add LIBDIR to the \`$shlibpath_var' environment variable" - $echo " during execution" - fi - if test -n "$runpath_var"; then - $echo " - add LIBDIR to the \`$runpath_var' environment variable" - $echo " during linking" - fi - if test -n "$hardcode_libdir_flag_spec"; then - libdir=LIBDIR - eval flag=\"$hardcode_libdir_flag_spec\" - - $echo " - use the \`$flag' linker flag" - fi - if test -n "$admincmds"; then - $echo " - have your system administrator run these commands:$admincmds" - fi - if test -f /etc/ld.so.conf; then - $echo " - have your system administrator add LIBDIR to \`/etc/ld.so.conf'" - fi - $echo - $echo "See any operating system documentation about shared libraries for" - $echo "more information, such as the ld(1) and ld.so(8) manual pages." - $echo "----------------------------------------------------------------------" - exit $EXIT_SUCCESS - ;; - - # libtool execute mode - execute) - modename="$modename: execute" - - # The first argument is the command name. - cmd="$nonopt" - if test -z "$cmd"; then - $echo "$modename: you must specify a COMMAND" 1>&2 - $echo "$help" - exit $EXIT_FAILURE - fi - - # Handle -dlopen flags immediately. - for file in $execute_dlfiles; do - if test ! -f "$file"; then - $echo "$modename: \`$file' is not a file" 1>&2 - $echo "$help" 1>&2 - exit $EXIT_FAILURE - fi - - dir= - case $file in - *.la) - # Check to see that this really is a libtool archive. - if (${SED} -e '2q' $file | grep "^# Generated by .*$PACKAGE") >/dev/null 2>&1; then : - else - $echo "$modename: \`$lib' is not a valid libtool archive" 1>&2 - $echo "$help" 1>&2 - exit $EXIT_FAILURE - fi - - # Read the libtool library. - dlname= - library_names= - - # If there is no directory component, then add one. - case $file in - */* | *\\*) . $file ;; - *) . ./$file ;; - esac - - # Skip this library if it cannot be dlopened. - if test -z "$dlname"; then - # Warn if it was a shared library. - test -n "$library_names" && $echo "$modename: warning: \`$file' was not linked with \`-export-dynamic'" - continue - fi - - dir=`$echo "X$file" | $Xsed -e 's%/[^/]*$%%'` - test "X$dir" = "X$file" && dir=. - - if test -f "$dir/$objdir/$dlname"; then - dir="$dir/$objdir" - else - $echo "$modename: cannot find \`$dlname' in \`$dir' or \`$dir/$objdir'" 1>&2 - exit $EXIT_FAILURE - fi - ;; - - *.lo) - # Just add the directory containing the .lo file. - dir=`$echo "X$file" | $Xsed -e 's%/[^/]*$%%'` - test "X$dir" = "X$file" && dir=. - ;; - - *) - $echo "$modename: warning \`-dlopen' is ignored for non-libtool libraries and objects" 1>&2 - continue - ;; - esac - - # Get the absolute pathname. - absdir=`cd "$dir" && pwd` - test -n "$absdir" && dir="$absdir" - - # Now add the directory to shlibpath_var. - if eval "test -z \"\$$shlibpath_var\""; then - eval "$shlibpath_var=\"\$dir\"" - else - eval "$shlibpath_var=\"\$dir:\$$shlibpath_var\"" - fi - done - - # This variable tells wrapper scripts just to set shlibpath_var - # rather than running their programs. - libtool_execute_magic="$magic" - - # Check if any of the arguments is a wrapper script. - args= - for file - do - case $file in - -*) ;; - *) - # Do a test to see if this is really a libtool program. - if (${SED} -e '4q' $file | grep "^# Generated by .*$PACKAGE") >/dev/null 2>&1; then - # If there is no directory component, then add one. - case $file in - */* | *\\*) . $file ;; - *) . ./$file ;; - esac - - # Transform arg to wrapped name. - file="$progdir/$program" - fi - ;; - esac - # Quote arguments (to preserve shell metacharacters). - file=`$echo "X$file" | $Xsed -e "$sed_quote_subst"` - args="$args \"$file\"" - done - - if test -z "$run"; then - if test -n "$shlibpath_var"; then - # Export the shlibpath_var. - eval "export $shlibpath_var" - fi - - # Restore saved environment variables - if test "${save_LC_ALL+set}" = set; then - LC_ALL="$save_LC_ALL"; export LC_ALL - fi - if test "${save_LANG+set}" = set; then - LANG="$save_LANG"; export LANG - fi - - # Now prepare to actually exec the command. - exec_cmd="\$cmd$args" - else - # Display what would be done. - if test -n "$shlibpath_var"; then - eval "\$echo \"\$shlibpath_var=\$$shlibpath_var\"" - $echo "export $shlibpath_var" - fi - $echo "$cmd$args" - exit $EXIT_SUCCESS - fi - ;; - - # libtool clean and uninstall mode - clean | uninstall) - modename="$modename: $mode" - rm="$nonopt" - files= - rmforce= - exit_status=0 - - # This variable tells wrapper scripts just to set variables rather - # than running their programs. - libtool_install_magic="$magic" - - for arg - do - case $arg in - -f) rm="$rm $arg"; rmforce=yes ;; - -*) rm="$rm $arg" ;; - *) files="$files $arg" ;; - esac - done - - if test -z "$rm"; then - $echo "$modename: you must specify an RM program" 1>&2 - $echo "$help" 1>&2 - exit $EXIT_FAILURE - fi - - rmdirs= - - origobjdir="$objdir" - for file in $files; do - dir=`$echo "X$file" | $Xsed -e 's%/[^/]*$%%'` - if test "X$dir" = "X$file"; then - dir=. - objdir="$origobjdir" - else - objdir="$dir/$origobjdir" - fi - name=`$echo "X$file" | $Xsed -e 's%^.*/%%'` - test "$mode" = uninstall && objdir="$dir" - - # Remember objdir for removal later, being careful to avoid duplicates - if test "$mode" = clean; then - case " $rmdirs " in - *" $objdir "*) ;; - *) rmdirs="$rmdirs $objdir" ;; - esac - fi - - # Don't error if the file doesn't exist and rm -f was used. - if (test -L "$file") >/dev/null 2>&1 \ - || (test -h "$file") >/dev/null 2>&1 \ - || test -f "$file"; then - : - elif test -d "$file"; then - exit_status=1 - continue - elif test "$rmforce" = yes; then - continue - fi - - rmfiles="$file" - - case $name in - *.la) - # Possibly a libtool archive, so verify it. - if (${SED} -e '2q' $file | grep "^# Generated by .*$PACKAGE") >/dev/null 2>&1; then - . $dir/$name - - # Delete the libtool libraries and symlinks. - for n in $library_names; do - rmfiles="$rmfiles $objdir/$n" - done - test -n "$old_library" && rmfiles="$rmfiles $objdir/$old_library" - test "$mode" = clean && rmfiles="$rmfiles $objdir/$name $objdir/${name}i" - - if test "$mode" = uninstall; then - if test -n "$library_names"; then - # Do each command in the postuninstall commands. - cmds=$postuninstall_cmds - save_ifs="$IFS"; IFS='~' - for cmd in $cmds; do - IFS="$save_ifs" - eval cmd=\"$cmd\" - $show "$cmd" - $run eval "$cmd" - if test "$?" -ne 0 && test "$rmforce" != yes; then - exit_status=1 - fi - done - IFS="$save_ifs" - fi - - if test -n "$old_library"; then - # Do each command in the old_postuninstall commands. - cmds=$old_postuninstall_cmds - save_ifs="$IFS"; IFS='~' - for cmd in $cmds; do - IFS="$save_ifs" - eval cmd=\"$cmd\" - $show "$cmd" - $run eval "$cmd" - if test "$?" -ne 0 && test "$rmforce" != yes; then - exit_status=1 - fi - done - IFS="$save_ifs" - fi - # FIXME: should reinstall the best remaining shared library. - fi - fi - ;; - - *.lo) - # Possibly a libtool object, so verify it. - if (${SED} -e '2q' $file | grep "^# Generated by .*$PACKAGE") >/dev/null 2>&1; then - - # Read the .lo file - . $dir/$name - - # Add PIC object to the list of files to remove. - if test -n "$pic_object" \ - && test "$pic_object" != none; then - rmfiles="$rmfiles $dir/$pic_object" - fi - - # Add non-PIC object to the list of files to remove. - if test -n "$non_pic_object" \ - && test "$non_pic_object" != none; then - rmfiles="$rmfiles $dir/$non_pic_object" - fi - fi - ;; - - *) - if test "$mode" = clean ; then - noexename=$name - case $file in - *.exe) - file=`$echo $file|${SED} 's,.exe$,,'` - noexename=`$echo $name|${SED} 's,.exe$,,'` - # $file with .exe has already been added to rmfiles, - # add $file without .exe - rmfiles="$rmfiles $file" - ;; - esac - # Do a test to see if this is a libtool program. - if (${SED} -e '4q' $file | grep "^# Generated by .*$PACKAGE") >/dev/null 2>&1; then - relink_command= - . $dir/$noexename - - # note $name still contains .exe if it was in $file originally - # as does the version of $file that was added into $rmfiles - rmfiles="$rmfiles $objdir/$name $objdir/${name}S.${objext}" - if test "$fast_install" = yes && test -n "$relink_command"; then - rmfiles="$rmfiles $objdir/lt-$name" - fi - if test "X$noexename" != "X$name" ; then - rmfiles="$rmfiles $objdir/lt-${noexename}.c" - fi - fi - fi - ;; - esac - $show "$rm $rmfiles" - $run $rm $rmfiles || exit_status=1 - done - objdir="$origobjdir" - - # Try to remove the ${objdir}s in the directories where we deleted files - for dir in $rmdirs; do - if test -d "$dir"; then - $show "rmdir $dir" - $run rmdir $dir >/dev/null 2>&1 - fi - done - - exit $exit_status - ;; - - "") - $echo "$modename: you must specify a MODE" 1>&2 - $echo "$generic_help" 1>&2 - exit $EXIT_FAILURE - ;; - esac - - if test -z "$exec_cmd"; then - $echo "$modename: invalid operation mode \`$mode'" 1>&2 - $echo "$generic_help" 1>&2 - exit $EXIT_FAILURE - fi -fi # test -z "$show_help" - -if test -n "$exec_cmd"; then - eval exec $exec_cmd - exit $EXIT_FAILURE -fi - -# We need to display help for each of the modes. -case $mode in -"") $echo \ -"Usage: $modename [OPTION]... [MODE-ARG]... - -Provide generalized library-building support services. - - --config show all configuration variables - --debug enable verbose shell tracing --n, --dry-run display commands without modifying any files - --features display basic configuration information and exit - --finish same as \`--mode=finish' - --help display this help message and exit - --mode=MODE use operation mode MODE [default=inferred from MODE-ARGS] - --quiet same as \`--silent' - --silent don't print informational messages - --tag=TAG use configuration variables from tag TAG - --version print version information - -MODE must be one of the following: - - clean remove files from the build directory - compile compile a source file into a libtool object - execute automatically set library path, then run a program - finish complete the installation of libtool libraries - install install libraries or executables - link create a library or an executable - uninstall remove libraries from an installed directory - -MODE-ARGS vary depending on the MODE. Try \`$modename --help --mode=MODE' for -a more detailed description of MODE. - -Report bugs to ." - exit $EXIT_SUCCESS - ;; - -clean) - $echo \ -"Usage: $modename [OPTION]... --mode=clean RM [RM-OPTION]... FILE... - -Remove files from the build directory. - -RM is the name of the program to use to delete files associated with each FILE -(typically \`/bin/rm'). RM-OPTIONS are options (such as \`-f') to be passed -to RM. - -If FILE is a libtool library, object or program, all the files associated -with it are deleted. Otherwise, only FILE itself is deleted using RM." - ;; - -compile) - $echo \ -"Usage: $modename [OPTION]... --mode=compile COMPILE-COMMAND... SOURCEFILE - -Compile a source file into a libtool library object. - -This mode accepts the following additional options: - - -o OUTPUT-FILE set the output file name to OUTPUT-FILE - -prefer-pic try to building PIC objects only - -prefer-non-pic try to building non-PIC objects only - -static always build a \`.o' file suitable for static linking - -COMPILE-COMMAND is a command to be used in creating a \`standard' object file -from the given SOURCEFILE. - -The output file name is determined by removing the directory component from -SOURCEFILE, then substituting the C source code suffix \`.c' with the -library object suffix, \`.lo'." - ;; - -execute) - $echo \ -"Usage: $modename [OPTION]... --mode=execute COMMAND [ARGS]... - -Automatically set library path, then run a program. - -This mode accepts the following additional options: - - -dlopen FILE add the directory containing FILE to the library path - -This mode sets the library path environment variable according to \`-dlopen' -flags. - -If any of the ARGS are libtool executable wrappers, then they are translated -into their corresponding uninstalled binary, and any of their required library -directories are added to the library path. - -Then, COMMAND is executed, with ARGS as arguments." - ;; - -finish) - $echo \ -"Usage: $modename [OPTION]... --mode=finish [LIBDIR]... - -Complete the installation of libtool libraries. - -Each LIBDIR is a directory that contains libtool libraries. - -The commands that this mode executes may require superuser privileges. Use -the \`--dry-run' option if you just want to see what would be executed." - ;; - -install) - $echo \ -"Usage: $modename [OPTION]... --mode=install INSTALL-COMMAND... - -Install executables or libraries. - -INSTALL-COMMAND is the installation command. The first component should be -either the \`install' or \`cp' program. - -The rest of the components are interpreted as arguments to that command (only -BSD-compatible install options are recognized)." - ;; - -link) - $echo \ -"Usage: $modename [OPTION]... --mode=link LINK-COMMAND... - -Link object files or libraries together to form another library, or to -create an executable program. - -LINK-COMMAND is a command using the C compiler that you would use to create -a program from several object files. - -The following components of LINK-COMMAND are treated specially: - - -all-static do not do any dynamic linking at all - -avoid-version do not add a version suffix if possible - -dlopen FILE \`-dlpreopen' FILE if it cannot be dlopened at runtime - -dlpreopen FILE link in FILE and add its symbols to lt_preloaded_symbols - -export-dynamic allow symbols from OUTPUT-FILE to be resolved with dlsym(3) - -export-symbols SYMFILE - try to export only the symbols listed in SYMFILE - -export-symbols-regex REGEX - try to export only the symbols matching REGEX - -LLIBDIR search LIBDIR for required installed libraries - -lNAME OUTPUT-FILE requires the installed library libNAME - -module build a library that can dlopened - -no-fast-install disable the fast-install mode - -no-install link a not-installable executable - -no-undefined declare that a library does not refer to external symbols - -o OUTPUT-FILE create OUTPUT-FILE from the specified objects - -objectlist FILE Use a list of object files found in FILE to specify objects - -precious-files-regex REGEX - don't remove output files matching REGEX - -release RELEASE specify package release information - -rpath LIBDIR the created library will eventually be installed in LIBDIR - -R[ ]LIBDIR add LIBDIR to the runtime path of programs and libraries - -static do not do any dynamic linking of libtool libraries - -version-info CURRENT[:REVISION[:AGE]] - specify library version info [each variable defaults to 0] - -All other options (arguments beginning with \`-') are ignored. - -Every other argument is treated as a filename. Files ending in \`.la' are -treated as uninstalled libtool libraries, other files are standard or library -object files. - -If the OUTPUT-FILE ends in \`.la', then a libtool library is created, -only library objects (\`.lo' files) may be specified, and \`-rpath' is -required, except when creating a convenience library. - -If OUTPUT-FILE ends in \`.a' or \`.lib', then a standard library is created -using \`ar' and \`ranlib', or on Windows using \`lib'. - -If OUTPUT-FILE ends in \`.lo' or \`.${objext}', then a reloadable object file -is created, otherwise an executable program is created." - ;; - -uninstall) - $echo \ -"Usage: $modename [OPTION]... --mode=uninstall RM [RM-OPTION]... FILE... - -Remove libraries from an installation directory. - -RM is the name of the program to use to delete files associated with each FILE -(typically \`/bin/rm'). RM-OPTIONS are options (such as \`-f') to be passed -to RM. - -If FILE is a libtool library, all the files associated with it are deleted. -Otherwise, only FILE itself is deleted using RM." - ;; - -*) - $echo "$modename: invalid operation mode \`$mode'" 1>&2 - $echo "$help" 1>&2 - exit $EXIT_FAILURE - ;; -esac - -$echo -$echo "Try \`$modename --help' for more information about other modes." - -exit $? - -# The TAGs below are defined such that we never get into a situation -# in which we disable both kinds of libraries. Given conflicting -# choices, we go for a static library, that is the most portable, -# since we can't tell whether shared libraries were disabled because -# the user asked for that or because the platform doesn't support -# them. This is particularly important on AIX, because we don't -# support having both static and shared libraries enabled at the same -# time on that platform, so we default to a shared-only configuration. -# If a disable-shared tag is given, we'll fallback to a static-only -# configuration. But we'll never go from static-only to shared-only. - -# ### BEGIN LIBTOOL TAG CONFIG: disable-shared -build_libtool_libs=no -build_old_libs=yes -# ### END LIBTOOL TAG CONFIG: disable-shared - -# ### BEGIN LIBTOOL TAG CONFIG: disable-static -build_old_libs=`case $build_libtool_libs in yes) $echo no;; *) $echo yes;; esac` -# ### END LIBTOOL TAG CONFIG: disable-static - -# Local Variables: -# mode:shell-script -# sh-indentation:2 -# End: diff --git a/libs/libdingaling/missing b/libs/libdingaling/missing deleted file mode 100644 index 894e786e16c..00000000000 --- a/libs/libdingaling/missing +++ /dev/null @@ -1,360 +0,0 @@ -#! /bin/sh -# Common stub for a few missing GNU programs while installing. - -scriptversion=2005-06-08.21 - -# Copyright (C) 1996, 1997, 1999, 2000, 2002, 2003, 2004, 2005 -# Free Software Foundation, Inc. -# Originally by Fran,cois Pinard , 1996. - -# 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, 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., 51 Franklin Street, Fifth Floor, Boston, MA -# 02110-1301, USA. - -# As a special exception to the GNU General Public License, if you -# distribute this file as part of a program that contains a -# configuration script generated by Autoconf, you may include it under -# the same distribution terms that you use for the rest of that program. - -if test $# -eq 0; then - echo 1>&2 "Try \`$0 --help' for more information" - exit 1 -fi - -run=: - -# In the cases where this matters, `missing' is being run in the -# srcdir already. -if test -f configure.ac; then - configure_ac=configure.ac -else - configure_ac=configure.in -fi - -msg="missing on your system" - -case "$1" in ---run) - # Try to run requested program, and just exit if it succeeds. - run= - shift - "$@" && exit 0 - # Exit code 63 means version mismatch. This often happens - # when the user try to use an ancient version of a tool on - # a file that requires a minimum version. In this case we - # we should proceed has if the program had been absent, or - # if --run hadn't been passed. - if test $? = 63; then - run=: - msg="probably too old" - fi - ;; - - -h|--h|--he|--hel|--help) - echo "\ -$0 [OPTION]... PROGRAM [ARGUMENT]... - -Handle \`PROGRAM [ARGUMENT]...' for when PROGRAM is missing, or return an -error status if there is no known handling for PROGRAM. - -Options: - -h, --help display this help and exit - -v, --version output version information and exit - --run try to run the given command, and emulate it if it fails - -Supported PROGRAM values: - aclocal touch file \`aclocal.m4' - autoconf touch file \`configure' - autoheader touch file \`config.h.in' - automake touch all \`Makefile.in' files - bison create \`y.tab.[ch]', if possible, from existing .[ch] - flex create \`lex.yy.c', if possible, from existing .c - help2man touch the output file - lex create \`lex.yy.c', if possible, from existing .c - makeinfo touch the output file - tar try tar, gnutar, gtar, then tar without non-portable flags - yacc create \`y.tab.[ch]', if possible, from existing .[ch] - -Send bug reports to ." - exit $? - ;; - - -v|--v|--ve|--ver|--vers|--versi|--versio|--version) - echo "missing $scriptversion (GNU Automake)" - exit $? - ;; - - -*) - echo 1>&2 "$0: Unknown \`$1' option" - echo 1>&2 "Try \`$0 --help' for more information" - exit 1 - ;; - -esac - -# Now exit if we have it, but it failed. Also exit now if we -# don't have it and --version was passed (most likely to detect -# the program). -case "$1" in - lex|yacc) - # Not GNU programs, they don't have --version. - ;; - - tar) - if test -n "$run"; then - echo 1>&2 "ERROR: \`tar' requires --run" - exit 1 - elif test "x$2" = "x--version" || test "x$2" = "x--help"; then - exit 1 - fi - ;; - - *) - if test -z "$run" && ($1 --version) > /dev/null 2>&1; then - # We have it, but it failed. - exit 1 - elif test "x$2" = "x--version" || test "x$2" = "x--help"; then - # Could not run --version or --help. This is probably someone - # running `$TOOL --version' or `$TOOL --help' to check whether - # $TOOL exists and not knowing $TOOL uses missing. - exit 1 - fi - ;; -esac - -# If it does not exist, or fails to run (possibly an outdated version), -# try to emulate it. -case "$1" in - aclocal*) - echo 1>&2 "\ -WARNING: \`$1' is $msg. You should only need it if - you modified \`acinclude.m4' or \`${configure_ac}'. You might want - to install the \`Automake' and \`Perl' packages. Grab them from - any GNU archive site." - touch aclocal.m4 - ;; - - autoconf) - echo 1>&2 "\ -WARNING: \`$1' is $msg. You should only need it if - you modified \`${configure_ac}'. You might want to install the - \`Autoconf' and \`GNU m4' packages. Grab them from any GNU - archive site." - touch configure - ;; - - autoheader) - echo 1>&2 "\ -WARNING: \`$1' is $msg. You should only need it if - you modified \`acconfig.h' or \`${configure_ac}'. You might want - to install the \`Autoconf' and \`GNU m4' packages. Grab them - from any GNU archive site." - files=`sed -n 's/^[ ]*A[CM]_CONFIG_HEADER(\([^)]*\)).*/\1/p' ${configure_ac}` - test -z "$files" && files="config.h" - touch_files= - for f in $files; do - case "$f" in - *:*) touch_files="$touch_files "`echo "$f" | - sed -e 's/^[^:]*://' -e 's/:.*//'`;; - *) touch_files="$touch_files $f.in";; - esac - done - touch $touch_files - ;; - - automake*) - echo 1>&2 "\ -WARNING: \`$1' is $msg. You should only need it if - you modified \`Makefile.am', \`acinclude.m4' or \`${configure_ac}'. - You might want to install the \`Automake' and \`Perl' packages. - Grab them from any GNU archive site." - find . -type f -name Makefile.am -print | - sed 's/\.am$/.in/' | - while read f; do touch "$f"; done - ;; - - autom4te) - echo 1>&2 "\ -WARNING: \`$1' is needed, but is $msg. - You might have modified some files without having the - proper tools for further handling them. - You can get \`$1' as part of \`Autoconf' from any GNU - archive site." - - file=`echo "$*" | sed -n 's/.*--output[ =]*\([^ ]*\).*/\1/p'` - test -z "$file" && file=`echo "$*" | sed -n 's/.*-o[ ]*\([^ ]*\).*/\1/p'` - if test -f "$file"; then - touch $file - else - test -z "$file" || exec >$file - echo "#! /bin/sh" - echo "# Created by GNU Automake missing as a replacement of" - echo "# $ $@" - echo "exit 0" - chmod +x $file - exit 1 - fi - ;; - - bison|yacc) - echo 1>&2 "\ -WARNING: \`$1' $msg. You should only need it if - you modified a \`.y' file. You may need the \`Bison' package - in order for those modifications to take effect. You can get - \`Bison' from any GNU archive site." - rm -f y.tab.c y.tab.h - if [ $# -ne 1 ]; then - eval LASTARG="\${$#}" - case "$LASTARG" in - *.y) - SRCFILE=`echo "$LASTARG" | sed 's/y$/c/'` - if [ -f "$SRCFILE" ]; then - cp "$SRCFILE" y.tab.c - fi - SRCFILE=`echo "$LASTARG" | sed 's/y$/h/'` - if [ -f "$SRCFILE" ]; then - cp "$SRCFILE" y.tab.h - fi - ;; - esac - fi - if [ ! -f y.tab.h ]; then - echo >y.tab.h - fi - if [ ! -f y.tab.c ]; then - echo 'main() { return 0; }' >y.tab.c - fi - ;; - - lex|flex) - echo 1>&2 "\ -WARNING: \`$1' is $msg. You should only need it if - you modified a \`.l' file. You may need the \`Flex' package - in order for those modifications to take effect. You can get - \`Flex' from any GNU archive site." - rm -f lex.yy.c - if [ $# -ne 1 ]; then - eval LASTARG="\${$#}" - case "$LASTARG" in - *.l) - SRCFILE=`echo "$LASTARG" | sed 's/l$/c/'` - if [ -f "$SRCFILE" ]; then - cp "$SRCFILE" lex.yy.c - fi - ;; - esac - fi - if [ ! -f lex.yy.c ]; then - echo 'main() { return 0; }' >lex.yy.c - fi - ;; - - help2man) - echo 1>&2 "\ -WARNING: \`$1' is $msg. You should only need it if - you modified a dependency of a manual page. You may need the - \`Help2man' package in order for those modifications to take - effect. You can get \`Help2man' from any GNU archive site." - - file=`echo "$*" | sed -n 's/.*-o \([^ ]*\).*/\1/p'` - if test -z "$file"; then - file=`echo "$*" | sed -n 's/.*--output=\([^ ]*\).*/\1/p'` - fi - if [ -f "$file" ]; then - touch $file - else - test -z "$file" || exec >$file - echo ".ab help2man is required to generate this page" - exit 1 - fi - ;; - - makeinfo) - echo 1>&2 "\ -WARNING: \`$1' is $msg. You should only need it if - you modified a \`.texi' or \`.texinfo' file, or any other file - indirectly affecting the aspect of the manual. The spurious - call might also be the consequence of using a buggy \`make' (AIX, - DU, IRIX). You might want to install the \`Texinfo' package or - the \`GNU make' package. Grab either from any GNU archive site." - # The file to touch is that specified with -o ... - file=`echo "$*" | sed -n 's/.*-o \([^ ]*\).*/\1/p'` - if test -z "$file"; then - # ... or it is the one specified with @setfilename ... - infile=`echo "$*" | sed 's/.* \([^ ]*\) *$/\1/'` - file=`sed -n '/^@setfilename/ { s/.* \([^ ]*\) *$/\1/; p; q; }' $infile` - # ... or it is derived from the source name (dir/f.texi becomes f.info) - test -z "$file" && file=`echo "$infile" | sed 's,.*/,,;s,.[^.]*$,,'`.info - fi - # If the file does not exist, the user really needs makeinfo; - # let's fail without touching anything. - test -f $file || exit 1 - touch $file - ;; - - tar) - shift - - # We have already tried tar in the generic part. - # Look for gnutar/gtar before invocation to avoid ugly error - # messages. - if (gnutar --version > /dev/null 2>&1); then - gnutar "$@" && exit 0 - fi - if (gtar --version > /dev/null 2>&1); then - gtar "$@" && exit 0 - fi - firstarg="$1" - if shift; then - case "$firstarg" in - *o*) - firstarg=`echo "$firstarg" | sed s/o//` - tar "$firstarg" "$@" && exit 0 - ;; - esac - case "$firstarg" in - *h*) - firstarg=`echo "$firstarg" | sed s/h//` - tar "$firstarg" "$@" && exit 0 - ;; - esac - fi - - echo 1>&2 "\ -WARNING: I can't seem to be able to run \`tar' with the given arguments. - You may want to install GNU tar or Free paxutils, or check the - command line arguments." - exit 1 - ;; - - *) - echo 1>&2 "\ -WARNING: \`$1' is needed, and is $msg. - You might have modified some files without having the - proper tools for further handling them. Check the \`README' file, - it often tells you about the needed prerequisites for installing - this package. You may also peek at any GNU archive site, in case - some other package would contain this missing \`$1' program." - exit 1 - ;; -esac - -exit 0 - -# Local variables: -# eval: (add-hook 'write-file-hooks 'time-stamp) -# time-stamp-start: "scriptversion=" -# time-stamp-format: "%:y-%02m-%02d.%02H" -# time-stamp-end: "$" -# End: diff --git a/libs/libdingaling/mkinstalldirs b/libs/libdingaling/mkinstalldirs deleted file mode 100644 index 259dbfcd357..00000000000 --- a/libs/libdingaling/mkinstalldirs +++ /dev/null @@ -1,158 +0,0 @@ -#! /bin/sh -# mkinstalldirs --- make directory hierarchy - -scriptversion=2005-06-29.22 - -# Original author: Noah Friedman -# Created: 1993-05-16 -# Public domain. -# -# This file is maintained in Automake, please report -# bugs to or send patches to -# . - -errstatus=0 -dirmode= - -usage="\ -Usage: mkinstalldirs [-h] [--help] [--version] [-m MODE] DIR ... - -Create each directory DIR (with mode MODE, if specified), including all -leading file name components. - -Report bugs to ." - -# process command line arguments -while test $# -gt 0 ; do - case $1 in - -h | --help | --h*) # -h for help - echo "$usage" - exit $? - ;; - -m) # -m PERM arg - shift - test $# -eq 0 && { echo "$usage" 1>&2; exit 1; } - dirmode=$1 - shift - ;; - --version) - echo "$0 $scriptversion" - exit $? - ;; - --) # stop option processing - shift - break - ;; - -*) # unknown option - echo "$usage" 1>&2 - exit 1 - ;; - *) # first non-opt arg - break - ;; - esac -done - -for file -do - if test -d "$file"; then - shift - else - break - fi -done - -case $# in - 0) exit 0 ;; -esac - -# Solaris 8's mkdir -p isn't thread-safe. If you mkdir -p a/b and -# mkdir -p a/c at the same time, both will detect that a is missing, -# one will create a, then the other will try to create a and die with -# a "File exists" error. This is a problem when calling mkinstalldirs -# from a parallel make. We use --version in the probe to restrict -# ourselves to GNU mkdir, which is thread-safe. -case $dirmode in - '') - if mkdir -p --version . >/dev/null 2>&1 && test ! -d ./--version; then - echo "mkdir -p -- $*" - exec mkdir -p -- "$@" - else - # On NextStep and OpenStep, the `mkdir' command does not - # recognize any option. It will interpret all options as - # directories to create, and then abort because `.' already - # exists. - test -d ./-p && rmdir ./-p - test -d ./--version && rmdir ./--version - fi - ;; - *) - if mkdir -m "$dirmode" -p --version . >/dev/null 2>&1 && - test ! -d ./--version; then - echo "mkdir -m $dirmode -p -- $*" - exec mkdir -m "$dirmode" -p -- "$@" - else - # Clean up after NextStep and OpenStep mkdir. - for d in ./-m ./-p ./--version "./$dirmode"; - do - test -d $d && rmdir $d - done - fi - ;; -esac - -for file -do - case $file in - /*) pathcomp=/ ;; - *) pathcomp= ;; - esac - oIFS=$IFS - IFS=/ - set fnord $file - shift - IFS=$oIFS - - for d - do - test "x$d" = x && continue - - pathcomp=$pathcomp$d - case $pathcomp in - -*) pathcomp=./$pathcomp ;; - esac - - if test ! -d "$pathcomp"; then - echo "mkdir $pathcomp" - - mkdir "$pathcomp" || lasterr=$? - - if test ! -d "$pathcomp"; then - errstatus=$lasterr - else - if test ! -z "$dirmode"; then - echo "chmod $dirmode $pathcomp" - lasterr= - chmod "$dirmode" "$pathcomp" || lasterr=$? - - if test ! -z "$lasterr"; then - errstatus=$lasterr - fi - fi - fi - fi - - pathcomp=$pathcomp/ - done -done - -exit $errstatus - -# Local Variables: -# mode: shell-script -# sh-indentation: 2 -# eval: (add-hook 'write-file-hooks 'time-stamp) -# time-stamp-start: "scriptversion=" -# time-stamp-format: "%:y-%02m-%02d.%02H" -# time-stamp-end: "$" -# End: diff --git a/libs/libdingaling/src/dingaling.def b/libs/libdingaling/src/dingaling.def deleted file mode 100644 index 16102267e16..00000000000 --- a/libs/libdingaling/src/dingaling.def +++ /dev/null @@ -1,30 +0,0 @@ -EXPORTS -ldl_session_get_caller -ldl_session_get_ip -ldl_session_set_private -ldl_session_get_private -ldl_session_terminate -ldl_handle_get_private -ldl_session_candidates -ldl_session_describe -ldl_session_get_state -ldl_session_get_candidates -ldl_session_get_payloads -ldl_global_init -ldl_global_destroy -ldl_global_set_log_stream -ldl_handle_init -ldl_handle_run -ldl_handle_destroy -ldl_handle_set_log_stream -ldl_session_create -ldl_handle_probe -ldl_handle_ready -ldl_session_get_id -ldl_session_set_ip -ldl_global_set_logger -ldl_handle_send_msg -ldl_session_get_value -ldl_session_set_value -ldl_session_accept_candidate -ldl_session_send_msg \ No newline at end of file diff --git a/libs/libdingaling/src/libdingaling.c b/libs/libdingaling/src/libdingaling.c deleted file mode 100644 index ee08f041c0e..00000000000 --- a/libs/libdingaling/src/libdingaling.c +++ /dev/null @@ -1,3301 +0,0 @@ -/* - * libDingaLing XMPP Jingle Library - * Copyright (C) 2005-2014, Anthony Minessale II - * - * Version: MPL 1.1 - * - * The contents of this file are subject to the Mozilla Public License Version - * 1.1 (the "License"); you may not use this file except in compliance with - * the License. You may obtain a copy of the License at - * http://www.mozilla.org/MPL/ - * - * Software distributed under the License is distributed on an "AS IS" basis, - * WITHOUT WARRANTY OF ANY KIND, either express or implied. See the License - * for the specific language governing rights and limitations under the - * License. - * - * The Original Code is libDingaLing XMPP Jingle Library - * - * The Initial Developer of the Original Code is - * Anthony Minessale II - * Portions created by the Initial Developer are Copyright (C) - * the Initial Developer. All Rights Reserved. - * - * Contributor(s): - * - * Anthony Minessale II - * - * libdingaling.c -- Main Library Code - * - * QMOD: XMPP Video Signaling + Presentation (video-v1 & camera-v1) - * - */ - - -#ifndef _MSC_VER -#include -#include -#include -#include -#include -#include -#endif - -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#define APR_WANT_STDIO -#define APR_WANT_STRFUNC -#include -#include - -#include "ldl_compat.h" -#include "libdingaling.h" -#include "sha1.h" - -#ifdef _MSC_VER -#include -#pragma warning(disable:4127 4706) -#endif - -#define microsleep(x) apr_sleep(x * 1000) -#define LDL_CAPS_VER "1.0.0.1" - -static int opt_timeout = 30; - -static void sha1_hash(char *out, unsigned char *in, unsigned int len); -static int b64encode(unsigned char *in, size_t ilen, unsigned char *out, size_t olen); -static void ldl_random_string(char *buf, uint16_t len, char *set); - -static struct { - unsigned int flags; - FILE *log_stream; - int debug; - apr_pool_t *memory_pool; - unsigned int id; - ldl_logger_t logger; - apr_hash_t *avatar_hash; - apr_thread_mutex_t *flag_mutex; -} globals; - -struct packet_node { - char id[80]; - iks *xml; - unsigned int retries; - apr_time_t next; -}; - -struct ldl_buffer { - char *buf; - unsigned int len; - int hit; -}; - -typedef enum { - CS_NEW, - CS_START, - CS_CONNECTED -} ldl_handle_state_t; - -struct ldl_handle { - iksparser *parser; - iksid *acc; - iksfilter *filter; - char *login; - char *password; - char *server; - char *status_msg; - char *priority; - uint16_t port; - int features; - int counter; - int job_done; - unsigned int flags; - apr_queue_t *queue; - apr_queue_t *retry_queue; - apr_hash_t *sessions; - apr_hash_t *retry_hash; - apr_hash_t *probe_hash; - apr_hash_t *sub_hash; - apr_thread_mutex_t *lock; - apr_thread_mutex_t *flag_mutex; - ldl_loop_callback_t loop_callback; - ldl_session_callback_t session_callback; - ldl_response_callback_t response_callback; - apr_pool_t *pool; - void *private_info; - FILE *log_stream; - ldl_handle_state_t state; - int fail_count; -}; - -struct ldl_session { - ldl_state_t state; - ldl_handle_t *handle; - char *id; - char *initiator; - char *them; - char *ip; - char *login; - ldl_payload_t payloads[LDL_MAX_PAYLOADS]; - unsigned int payload_len; - /*! \brief Transport candidates, organized per type */ - ldl_candidate_t candidates[LDL_TPORT_MAX][LDL_MAX_CANDIDATES]; - /*! \brief Length of the candidate list, per transport type */ - unsigned int candidate_len[LDL_TPORT_MAX]; - apr_pool_t *pool; - apr_hash_t *variables; - apr_time_t created; - void *private_data; - ldl_user_flag_t flags; -}; - -static int on_disco_default(void *user_data, ikspak *pak); -static int on_vcard(void *user_data, ikspak *pak); -typedef int (*iks_filter_callback_t)(void *user_data, ikspak *pak); - -struct ldl_feature { - const char *name; - iks_filter_callback_t callback; -}; -typedef struct ldl_feature ldl_feature_t; - -#define FEATURE_DISCO "http://jabber.org/protocol/disco" -#define FEATURE_DISCO_INFO "http://jabber.org/protocol/disco#info" -#define FEATURE_VERSION "jabber:iq:version" -#define FEATURE_VCARD "vcard-temp" -#define FEATURE_VOICE "http://www.google.com/xmpp/protocol/voice/v1" -#define FEATURE_VIDEO "http://www.google.com/xmpp/protocol/video/v1" -#define FEATURE_CAMERA "http://www.google.com/xmpp/protocol/camera/v1" -#define FEATURE_LAST "jabber:iq:last" - -static ldl_feature_t FEATURES[] = { - { FEATURE_DISCO, on_disco_default }, - { FEATURE_DISCO_INFO, on_disco_default }, - { FEATURE_VERSION, on_disco_default }, - { FEATURE_VCARD, on_vcard}, - { FEATURE_VOICE, on_disco_default }, - { FEATURE_VIDEO, on_disco_default }, - { FEATURE_CAMERA, on_disco_default }, - { FEATURE_LAST, on_disco_default }, - { NULL, NULL} -}; - - -struct ldl_avatar { - char *path; - char *base64; - char hash[256]; -}; - -typedef struct ldl_avatar ldl_avatar_t; - - -static void lowercase(char *str) -{ - size_t x = 0; - - if (str) { - for (x = 0; x < strlen(str); x++) { - str[x] = (char)tolower((int)str[x]); - } - } -} - -static char *cut_path(char *in) -{ - char *p, *ret = in; - char delims[] = "/\\"; - char *i; - - for (i = delims; *i; i++) { - p = in; - while ((p = strchr(p, *i)) != 0) { - ret = ++p; - } - } - return ret; -} - -static void default_logger(char *file, const char *func, int line, int level, char *fmt, ...) -{ - char *fp; - char data[1024]; - - va_list ap; - - fp = cut_path(file); - - va_start(ap, fmt); - - vsnprintf(data, sizeof(data), fmt, ap); - - fprintf(globals.log_stream, "%s:%d %s() %s", fp, line, func, data); - - va_end(ap); - -} - -static unsigned int next_id(void) -{ - return globals.id++; -} - -static char *iks_name_nons(iks *x) -{ - char *r = iks_name(x); - char *p; - - if (r && (p = strchr(r, ':'))) { - r = p + 1; - } - - return r; -} - - -char *ldl_session_get_value(ldl_session_t *session, char *key) -{ - return apr_hash_get(session->variables, key, APR_HASH_KEY_STRING); -} - -void ldl_session_set_value(ldl_session_t *session, const char *key, const char *val) -{ - apr_hash_set(session->variables, apr_pstrdup(session->pool, key), APR_HASH_KEY_STRING, apr_pstrdup(session->pool, val)); -} - -char *ldl_session_get_id(ldl_session_t *session) -{ - return session->id; -} - -void ldl_session_send_msg(ldl_session_t *session, char *subject, char *body) -{ - ldl_handle_send_msg(session->handle, session->login, session->them, subject, body); -} - -ldl_status ldl_session_destroy(ldl_session_t **session_p) -{ - ldl_session_t *session = *session_p; - - if (session) { - apr_pool_t *pool = session->pool; - apr_hash_t *hash = session->handle->sessions; - - if (globals.debug) { - globals.logger(DL_LOG_CRIT, "Destroyed Session %s\n", session->id); - } - - if (session->id) { - apr_hash_set(hash, session->id, APR_HASH_KEY_STRING, NULL); - } - - if (session->them) { - apr_hash_set(hash, session->them, APR_HASH_KEY_STRING, NULL); - } - - apr_pool_destroy(pool); - pool = NULL; - *session_p = NULL; - return LDL_STATUS_SUCCESS; - } - - return LDL_STATUS_FALSE; -} - - -ldl_status ldl_session_create(ldl_session_t **session_p, ldl_handle_t *handle, char *id, char *them, char *me, ldl_user_flag_t flags) -{ - ldl_session_t *session = NULL; - - if (!(session = apr_palloc(handle->pool, sizeof(ldl_session_t)))) { - globals.logger(DL_LOG_CRIT, "Memory ERROR!\n"); - *session_p = NULL; - return LDL_STATUS_MEMERR; - } - memset(session, 0, sizeof(ldl_session_t)); - apr_pool_create(&session->pool, globals.memory_pool); - session->id = apr_pstrdup(session->pool, id); - session->them = apr_pstrdup(session->pool, them); - - if (flags & LDL_FLAG_OUTBOUND) { - session->initiator = apr_pstrdup(session->pool, me); - } - - if (ldl_test_flag(handle, LDL_FLAG_COMPONENT)) { - session->login = apr_pstrdup(session->pool, me); - } else { - session->login = apr_pstrdup(session->pool, handle->login); - } - - apr_hash_set(handle->sessions, session->id, APR_HASH_KEY_STRING, session); - apr_hash_set(handle->sessions, session->them, APR_HASH_KEY_STRING, session); - session->handle = handle; - session->created = apr_time_now(); - session->state = LDL_STATE_NEW; - session->variables = apr_hash_make(session->pool); - session->flags = flags; - *session_p = session; - - - if (globals.debug) { - globals.logger(DL_LOG_CRIT, "Created Session %s\n", id); - } - - return LDL_STATUS_SUCCESS; -} - -static ldl_status parse_session_code(ldl_handle_t *handle, char *id, char *from, char *to, iks *xml, char *xtype) -{ - ldl_session_t *session = NULL; - ldl_signal_t dl_signal = LDL_SIGNAL_NONE; - char *initiator = iks_find_attrib(xml, "initiator"); - char *msg = NULL; - - if (!(session = apr_hash_get(handle->sessions, id, APR_HASH_KEY_STRING))) { - ldl_session_create(&session, handle, id, from, to, LDL_FLAG_NONE); - if (!session) { - return LDL_STATUS_MEMERR; - } - } - - if (!session) { - if (globals.debug) { - globals.logger(DL_LOG_CRIT, "Non-Existent Session %s!\n", id); - } - return LDL_STATUS_MEMERR; - } - - if (globals.debug) { - globals.logger(DL_LOG_CRIT, "Message for Session %s\n", id); - } - - while(xml) { - char *type = NULL; - iks *tag; - - if (iks_type(xml) != IKS_CDATA) { - type = xtype ? xtype : iks_find_attrib(xml, "type"); - } - - if (type) { - - if (!strcasecmp(type, "redirect")) { - apr_hash_t *hash = session->handle->sessions; - char *p = to; - if ((p = strchr(to, ':'))) { - p++; - } else { - p = to; - } - - - apr_hash_set(hash, session->them, APR_HASH_KEY_STRING, NULL); - apr_hash_set(hash, session->id, APR_HASH_KEY_STRING, NULL); - session->them = apr_pstrdup(session->pool, p); - apr_hash_set(handle->sessions, session->them, APR_HASH_KEY_STRING, session); - apr_hash_set(handle->sessions, session->id, APR_HASH_KEY_STRING, session); - - dl_signal = LDL_SIGNAL_REDIRECT; - } else if (!strcasecmp(type, "initiate") || !strcasecmp(type, "accept")) { - - dl_signal = LDL_SIGNAL_INITIATE; - - if (!strcasecmp(type, "accept")) { - msg = "accept"; - } - if (!session->initiator && initiator) { - session->initiator = apr_pstrdup(session->pool, initiator); - } - tag = iks_child (xml); - - while(tag) { - if (!strcasecmp(iks_name_nons(tag), "description")) { - iks * itag = iks_child (tag); - while(itag) { - if (!strcasecmp(iks_name_nons(itag), "payload-type") && session->payload_len < LDL_MAX_PAYLOADS) { - char *name = iks_find_attrib(itag, "name"); - char *id = iks_find_attrib(itag, "id"); - char *rate = iks_find_attrib(itag, "clockrate"); - char *ptime = iks_find_attrib(itag, "ptime"); - if (name && id) { - session->payloads[session->payload_len].name = apr_pstrdup(session->pool, name); - session->payloads[session->payload_len].id = atoi(id); - if (ptime) { - session->payloads[session->payload_len].ptime = atoi(ptime); - } else { - session->payloads[session->payload_len].ptime = 20; - } - if (rate) { - session->payloads[session->payload_len].rate = atoi(rate); - } else { - if (!strncasecmp(iks_name(itag), "vid", 3)) { - session->payloads[session->payload_len].rate = 90000; - } else { - session->payloads[session->payload_len].rate = 8000; - } - } - session->payload_len++; - - if (globals.debug) { - globals.logger(DL_LOG_CRIT, "Add Payload [%s] id='%s'\n", name, id); - } - } - } - itag = iks_next_tag(itag); - } - } - tag = iks_next_tag(tag); - } - } else if (!strcasecmp(type, "transport-accept")) { - dl_signal = LDL_SIGNAL_TRANSPORT_ACCEPT; - } else if (!strcasecmp(type, "reject")) { - dl_signal = LDL_SIGNAL_REJECT; - } else if (!strcasecmp(type, "transport-info") || !strcasecmp(type, "candidates")) { - char *tid = iks_find_attrib(xml, "id"); - dl_signal = LDL_SIGNAL_CANDIDATES; - tag = iks_child (xml); - id = type; - if (tag && !strcasecmp(iks_name_nons(tag), "transport")) { - tag = iks_child(tag); - } - - for (;tag;tag = iks_next_tag(tag)) { - if (!strcasecmp(iks_name_nons(tag), "info_element")) { - char *name = iks_find_attrib(tag, "name"); - char *value = iks_find_attrib(tag, "value"); - if (globals.debug) { - globals.logger(DL_LOG_CRIT, "Info Element [%s]=[%s]\n", name, value); - } - ldl_session_set_value(session, name, value); - - } else if (!strcasecmp(iks_name_nons(tag), "candidate") /*&& session->candidate_len < LDL_MAX_CANDIDATES*/) { - char *key; - double pref = 0.0; - int index = -1; - ldl_transport_type_t tport; - unsigned int *candidate_len = NULL; - ldl_candidate_t (*candidates)[LDL_MAX_CANDIDATES] = NULL; - - if (!(key = iks_find_attrib(tag, "preference"))) { - globals.logger(DL_LOG_WARNING, "Field preference was not set\n"); - continue; - } else { - unsigned int x; - - pref = strtod(key, NULL); - - /* Check what kind of candidate this is */ - if ((key = iks_find_attrib(tag, "name")) && ((tport = ldl_transport_type_parse(key)) != LDL_TPORT_MAX)) { - candidates = &(session->candidates[tport]); - candidate_len = &(session->candidate_len[tport]); - } else { - globals.logger(DL_LOG_WARNING, "No such transport type: %s\n", key); - continue; - } - - if (*candidate_len >= LDL_MAX_CANDIDATES) { - globals.logger(DL_LOG_WARNING, "Too many %s candidates\n", key); - continue; - } - - for (x = 0; x < *candidate_len; x++) { - if ((*candidates)[x].pref == pref) { - if (globals.debug) { - globals.logger(DL_LOG_CRIT, "Duplicate Pref! Updating...\n"); - } - index = x; - break; - } - } - } - - if (index < 0) { - index = (*candidate_len)++; - } - - (*candidates)[index].pref = pref; - - if (tid) { - (*candidates)[index].tid = apr_pstrdup(session->pool, tid); - } - - if ((key = iks_find_attrib(tag, "name"))) { - (*candidates)[index].name = apr_pstrdup(session->pool, key); - } - if ((key = iks_find_attrib(tag, "type"))) { - (*candidates)[index].type = apr_pstrdup(session->pool, key); - } - if ((key = iks_find_attrib(tag, "protocol"))) { - (*candidates)[index].protocol = apr_pstrdup(session->pool, key); - } - if ((key = iks_find_attrib(tag, "username"))) { - (*candidates)[index].username = apr_pstrdup(session->pool, key); - } - if ((key = iks_find_attrib(tag, "password"))) { - (*candidates)[index].password = apr_pstrdup(session->pool, key); - } - if ((key = iks_find_attrib(tag, "address"))) { - (*candidates)[index].address = apr_pstrdup(session->pool, key); - } - if ((key = iks_find_attrib(tag, "port"))) { - (*candidates)[index].port = (uint16_t)atoi(key); - } - - if (!(*candidates)[index].type) { - (*candidates)[index].type = apr_pstrdup(session->pool, "stun"); - } - - - if (globals.debug) { - globals.logger(DL_LOG_CRIT, - "New Candidate %d\n" - "name=%s\n" - "type=%s\n" - "protocol=%s\n" - "username=%s\n" - "password=%s\n" - "address=%s\n" - "port=%d\n" - "pref=%0.2f\n", - *candidate_len, - (*candidates)[index].name, - (*candidates)[index].type, - (*candidates)[index].protocol, - (*candidates)[index].username, - (*candidates)[index].password, - (*candidates)[index].address, - (*candidates)[index].port, - (*candidates)[index].pref - ); - } - } - } - } else if (!strcasecmp(type, "terminate")) { - dl_signal = LDL_SIGNAL_TERMINATE; - } else if (!strcasecmp(type, "error")) { - dl_signal = LDL_SIGNAL_ERROR; - } - } - - xml = iks_child(xml); - } - - if (handle->session_callback && dl_signal) { - handle->session_callback(handle, session, dl_signal, to, from, id, msg); - } - - return LDL_STATUS_SUCCESS; -} - - -static ldl_status parse_jingle_code(ldl_handle_t *handle, iks *xml, char *to, char *from, char *type) -{ - ldl_session_t *session = NULL; - ldl_signal_t dl_signal = LDL_SIGNAL_NONE; - char *initiator = iks_find_attrib(xml, "initiator"); - char *msg = NULL; - char *id = iks_find_attrib(xml, "sid"); - char *action = iks_find_attrib(xml, "action"); - iks *tag; - - - if (!strcasecmp(type, "error")) { - action = type; - } - - - if (!(id && action && from)) { - globals.logger(DL_LOG_CRIT, "missing required params\n"); - return LDL_STATUS_FALSE; - } - - if (!(session = apr_hash_get(handle->sessions, id, APR_HASH_KEY_STRING))) { - ldl_session_create(&session, handle, id, from, to, LDL_FLAG_NONE); - if (!session) { - return LDL_STATUS_MEMERR; - } - } - - if (!session) { - if (globals.debug) { - globals.logger(DL_LOG_CRIT, "Non-Existent Session %s!\n", id); - } - return LDL_STATUS_MEMERR; - } - - if (globals.debug) { - globals.logger(DL_LOG_CRIT, "Message for Session %s\n", id); - } - - - if (action) { - - if (!strcasecmp(action, "redirect")) { - apr_hash_t *hash = session->handle->sessions; - char *p = to; - if ((p = strchr(to, ':'))) { - p++; - } else { - p = to; - } - - - apr_hash_set(hash, session->them, APR_HASH_KEY_STRING, NULL); - apr_hash_set(hash, session->id, APR_HASH_KEY_STRING, NULL); - session->them = apr_pstrdup(session->pool, p); - apr_hash_set(handle->sessions, session->them, APR_HASH_KEY_STRING, session); - apr_hash_set(handle->sessions, session->id, APR_HASH_KEY_STRING, session); - - dl_signal = LDL_SIGNAL_REDIRECT; - } else if (!strcasecmp(action, "session-initiate") || !strcasecmp(action, "session-accept")) { - - dl_signal = LDL_SIGNAL_INITIATE; - - if (!strcasecmp(action, "session-accept")) { - msg = "accept"; - } - - if (!session->initiator && initiator) { - session->initiator = apr_pstrdup(session->pool, initiator); - } - tag = iks_child (xml); - - while(tag) { - - if (!strcasecmp(iks_name_nons(tag), "content")) { - iks *dtag = iks_child (tag); - char key[512]; - - if (!strcasecmp(iks_name_nons(dtag), "description")) { - iks *itag = iks_child (dtag); - char *name = iks_find_attrib(tag, "name"); - char *media = iks_find_attrib(dtag, "media"); - - if (globals.debug) { - globals.logger(DL_LOG_CRIT, "Found description of type '%s' media type '%s'\n", name, media); - - } - - while(itag) { - if (!strcasecmp(iks_name_nons(itag), "rtcp-mux")) { - snprintf(key, sizeof(key), "%s:rtcp-mux", media); - ldl_session_set_value(session, key, "true"); - } - - if (!strcasecmp(iks_name_nons(itag), "encryption")) { - iks *etag = iks_child (itag); - - while(etag) { - char *suite = iks_find_attrib(etag, "crypto-suite"); - char *params = iks_find_attrib(etag, "key-params"); - char *tag = iks_find_attrib(etag, "tag"); - char val[512]; - - if (suite && params && tag) { - snprintf(key, sizeof(key), "%s:crypto:%s", media, tag); - snprintf(val, sizeof(val), "%s %s %s", tag, suite, params); - - ldl_session_set_value(session, key, val); - } - - etag = iks_next_tag(etag); - } - } - - - if (!strcasecmp(iks_name_nons(itag), "payload-type") && session->payload_len < LDL_MAX_PAYLOADS) { - char *name = iks_find_attrib(itag, "name"); - char *id = iks_find_attrib(itag, "id"); - char *rate = iks_find_attrib(itag, "clockrate"); - - if (name && id) { - session->payloads[session->payload_len].name = apr_pstrdup(session->pool, name); - session->payloads[session->payload_len].id = atoi(id); - if (rate) { - session->payloads[session->payload_len].rate = atoi(rate); - } else { - if (!strcasecmp(media, "video")) { - session->payloads[session->payload_len].rate = 90000; - } else { - session->payloads[session->payload_len].rate = 8000; - } - } - session->payload_len++; - - if (globals.debug) { - globals.logger(DL_LOG_CRIT, "Add Payload [%s] id='%s'\n", name, id); - } - } - } - itag = iks_next_tag(itag); - } - - } - } - - tag = iks_next_tag(tag); - } - } else if (!strcasecmp(action, "transport-accept")) { - dl_signal = LDL_SIGNAL_TRANSPORT_ACCEPT; - } else if (!strcasecmp(action, "reject")) { - dl_signal = LDL_SIGNAL_REJECT; - } else if (!strcasecmp(action, "transport-info")) { - - tag = iks_child (xml); - - while(tag) { - - if (!strcasecmp(iks_name_nons(tag), "content")) { - iks *ttag = iks_child (tag); - - dl_signal = LDL_SIGNAL_CANDIDATES; - - id = action; - - if (ttag && !strcasecmp(iks_name_nons(ttag), "transport")) { - ttag = iks_child(ttag); - } - - for (;ttag;ttag = iks_next_tag(ttag)) { - if (!strcasecmp(iks_name_nons(ttag), "info_element")) { - char *name = iks_find_attrib(ttag, "name"); - char *value = iks_find_attrib(ttag, "value"); - if (globals.debug) { - globals.logger(DL_LOG_CRIT, "Info Element [%s]=[%s]\n", name, value); - } - ldl_session_set_value(session, name, value); - - } else if (!strcasecmp(iks_name_nons(ttag), "candidate")) { - char *key; - double pref = 0.0; - int index = -1; - ldl_transport_type_t tport; - unsigned int *candidate_len = NULL; - ldl_candidate_t (*candidates)[LDL_MAX_CANDIDATES] = NULL; - - if ((key = iks_find_attrib(ttag, "preference"))) { - unsigned int x; - - pref = strtod(key, NULL); - - /* Check what kind of candidate this is */ - if ((key = iks_find_attrib(ttag, "name")) && ((tport = ldl_transport_type_parse(key)) != LDL_TPORT_MAX)) { - candidates = &(session->candidates[tport]); - candidate_len = &(session->candidate_len[tport]); - } else { - globals.logger(DL_LOG_WARNING, "No such transport type: %s\n", key); - continue; - } - - if (*candidate_len >= LDL_MAX_CANDIDATES) { - globals.logger(DL_LOG_WARNING, "Too many %s candidates\n", key); - continue; - } - - for (x = 0; x < *candidate_len; x++) { - if ((*candidates)[x].pref == pref) { - if (globals.debug) { - globals.logger(DL_LOG_CRIT, "Duplicate Pref!\n"); - } - index = x; - break; - } - } - } else { - globals.logger(DL_LOG_WARNING, "No preference specified"); - continue; - } - - if (index < 0) { - index = (*candidate_len)++; - } - - (*candidates)[index].pref = pref; - - if ((key = iks_find_attrib(ttag, "name"))) { - (*candidates)[index].name = apr_pstrdup(session->pool, key); - } - if ((key = iks_find_attrib(ttag, "type"))) { - (*candidates)[index].type = apr_pstrdup(session->pool, key); - } - if ((key = iks_find_attrib(ttag, "protocol"))) { - (*candidates)[index].protocol = apr_pstrdup(session->pool, key); - } - if ((key = iks_find_attrib(ttag, "username"))) { - (*candidates)[index].username = apr_pstrdup(session->pool, key); - } - if ((key = iks_find_attrib(ttag, "password"))) { - (*candidates)[index].password = apr_pstrdup(session->pool, key); - } - if ((key = iks_find_attrib(ttag, "address"))) { - (*candidates)[index].address = apr_pstrdup(session->pool, key); - } - if ((key = iks_find_attrib(ttag, "port"))) { - (*candidates)[index].port = (uint16_t)atoi(key); - } - - if (!(*candidates)[index].type) { - (*candidates)[index].type = apr_pstrdup(session->pool, "stun"); - } - - - if (globals.debug) { - globals.logger(DL_LOG_CRIT, - "New Candidate %d\n" - "name=%s\n" - "type=%s\n" - "protocol=%s\n" - "username=%s\n" - "password=%s\n" - "address=%s\n" - "port=%d\n" - "pref=%0.2f\n", - *candidate_len, - (*candidates)[index].name, - (*candidates)[index].type, - (*candidates)[index].protocol, - (*candidates)[index].username, - (*candidates)[index].password, - (*candidates)[index].address, - (*candidates)[index].port, - (*candidates)[index].pref - ); - } - } - } - } - - tag = iks_next_tag(tag); - } - } else if (!strcasecmp(action, "session-terminate")) { - dl_signal = LDL_SIGNAL_TERMINATE; - } else if (!strcasecmp(action, "error")) { - dl_signal = LDL_SIGNAL_ERROR; - } - } - - - - if (handle->session_callback && dl_signal) { - handle->session_callback(handle, session, dl_signal, to, from, id, msg); - } - - return LDL_STATUS_SUCCESS; -} - - - -const char *marker = "TRUE"; - - -static int on_vcard(void *user_data, ikspak *pak) -{ - ldl_handle_t *handle = user_data; - char *from = iks_find_attrib(pak->x, "from"); - char *to = iks_find_attrib(pak->x, "to"); - - if (handle->session_callback) { - handle->session_callback(handle, NULL, LDL_SIGNAL_VCARD, to, from, pak->id, NULL); - } - - return IKS_FILTER_EAT; -} - - -static int on_disco_default(void *user_data, ikspak *pak) -{ - char *node = NULL; - char *ns = NULL; - ldl_handle_t *handle = user_data; - iks *iq = NULL, *query, *tag; - uint8_t send = 0; - int x; - - if (pak && pak->query) { - ns = iks_find_attrib(pak->query, "xmlns"); - node = iks_find_attrib(pak->query, "node"); - } - - if (pak && pak->subtype == IKS_TYPE_RESULT) { - globals.logger(DL_LOG_CRIT, "FixME!!! node=[%s]\n", node?node:""); - } else if (pak && pak->subtype == IKS_TYPE_GET) { - if (ns && (iq = iks_new("iq"))) { - int all = 0; - - iks_insert_attrib(iq, "from", handle->login); - if (pak->from) { - iks_insert_attrib(iq, "to", pak->from->full); - } - iks_insert_attrib(iq, "id", pak->id); - iks_insert_attrib(iq, "type", "result"); - - if (!(query = iks_insert (iq, "query"))) { - goto fail; - } - iks_insert_attrib(query, "xmlns", ns); - - if (!strcasecmp(ns, FEATURE_LAST)) { - iks_insert_attrib(query, "seconds", "1"); - } - - if (!(tag = iks_insert (query, "identity"))) { - goto fail; - } - - iks_insert_attrib(tag, "category", "gateway"); - //iks_insert_attrib(tag, "type", "voice"); - iks_insert_attrib(tag, "name", "LibDingaLing"); - - if (!strcasecmp(ns, FEATURE_DISCO_INFO)) { - if (!node) { - all++; - } else { - char *p; - - if ((p = strstr(node, "caps#"))) { - char *what = p + 5; - - if (!strcasecmp(what, "voice-v1")) { - if (!(tag = iks_insert (query, "feature"))) { - goto fail; - } - iks_insert_attrib(tag, "var", FEATURE_VOICE); - goto done; - } - - } - } - } - - for (x = 0; FEATURES[x].name; x++) { - if (all || !ns || !strcasecmp(ns, FEATURES[x].name)) { - if (!(tag = iks_insert (query, "feature"))) { - goto fail; - } - iks_insert_attrib(tag, "var", FEATURES[x].name); - } - } - - done: - - apr_queue_push(handle->queue, iq); - iq = NULL; - send = 1; - } - fail: - - if (iq) { - iks_delete(iq); - } - - if (!send) { - globals.logger(DL_LOG_CRIT, "Memory Error!\n"); - } - } - - return IKS_FILTER_EAT; -} - -static int on_presence(void *user_data, ikspak *pak) -{ - ldl_handle_t *handle = user_data; - char *from = iks_find_attrib(pak->x, "from"); - char *to = iks_find_attrib(pak->x, "to"); - char *type = iks_find_attrib(pak->x, "type"); - char *show = iks_find_cdata(pak->x, "show"); - char *status = iks_find_cdata(pak->x, "status"); - char id[1024]; - char *resource; - struct ldl_buffer *buffer; - ldl_signal_t dl_signal = LDL_SIGNAL_PRESENCE_IN; - int done = 0; - - - if (type && *type) { - if (!strcasecmp(type, "unavailable")) { - dl_signal = LDL_SIGNAL_PRESENCE_OUT; - } else if (!strcasecmp(type, "probe")) { - dl_signal = LDL_SIGNAL_PRESENCE_PROBE; - } - if (!status) { - status = type; - } - } else { - if (!status) { - status = "Available"; - } - } - - - apr_cpystrn(id, from, sizeof(id)); - lowercase(id); - - if ((resource = strchr(id, '/'))) { - *resource++ = '\0'; - } - - - if (!apr_hash_get(handle->sub_hash, from, APR_HASH_KEY_STRING)) { - iks *msg; - apr_hash_set(handle->sub_hash, apr_pstrdup(handle->pool, from), APR_HASH_KEY_STRING, &marker); - if ((msg = iks_make_s10n (IKS_TYPE_SUBSCRIBED, id, "Ding A Ling...."))) { - apr_queue_push(handle->queue, msg); - msg = NULL; - } - } - - if (resource && (strstr(resource, "talk") || strstr(resource, "telepathy")) && (buffer = apr_hash_get(handle->probe_hash, id, APR_HASH_KEY_STRING))) { - apr_cpystrn(buffer->buf, from, buffer->len); - buffer->hit = 1; - done = 1; - } - - if (!done) { - iks *xml = iks_find(pak->x, "c"); - if (!xml) { - xml = iks_find(pak->x, "caps:c"); - } - - if (xml) { - char *ext = iks_find_attrib(xml, "ext");; - if (ext && strstr(ext, "voice-v1") && (buffer = apr_hash_get(handle->probe_hash, id, APR_HASH_KEY_STRING))) { - apr_cpystrn(buffer->buf, from, buffer->len); - buffer->hit = 1; - } - } - } - - - if (handle->session_callback) { - handle->session_callback(handle, NULL, dl_signal, to, id, status ? status : "n/a", show ? show : "n/a"); - } - - return IKS_FILTER_EAT; -} - -static char *ldl_handle_strdup(ldl_handle_t *handle, char *str) -{ - char *dup; - apr_size_t len; - - len = strlen(str) + 1; - dup = apr_palloc(handle->pool, len); - assert(dup != NULL); - strncpy(dup, str, len); - return dup; -} - -static void ldl_strip_resource(char *in) -{ - char *p; - - if ((p = strchr(in, '/'))) { - *p = '\0'; - } -} - -static ldl_avatar_t *ldl_get_avatar(ldl_handle_t *handle, char *path, char *from) -{ - ldl_avatar_t *ap; - uint8_t image[8192]; - unsigned char base64[9216] = ""; - int fd = -1; - size_t bytes; - char *key; - //char hash[128] = ""; - - if (from && (ap = (ldl_avatar_t *) apr_hash_get(globals.avatar_hash, from, APR_HASH_KEY_STRING))) { - return ap; - } - - if (path && from) { - if ((ap = (ldl_avatar_t *) apr_hash_get(globals.avatar_hash, path, APR_HASH_KEY_STRING))) { - key = ldl_handle_strdup(handle, from); - ldl_strip_resource(key); - apr_hash_set(globals.avatar_hash, key, APR_HASH_KEY_STRING, ap); - return ap; - } - } - - if (!(path && from)) { - return NULL; - } - - if ((fd = open(path, O_RDONLY, 0)) < 0) { - globals.logger(DL_LOG_ERR, "File %s does not exist!\n", path); - return NULL; - } - - bytes = read(fd, image, sizeof(image)); - close(fd); - - ap = malloc(sizeof(*ap)); - assert(ap != NULL); - memset(ap, 0, sizeof(*ap)); - sha1_hash(ap->hash, (unsigned char *) image, (unsigned int)bytes); - ap->path = strdup(path); - - key = ldl_handle_strdup(handle, from); - ldl_strip_resource(key); - - b64encode((unsigned char *)image, bytes, base64, sizeof(base64)); - ap->base64 = strdup((const char *)base64); - apr_hash_set(globals.avatar_hash, ap->path, APR_HASH_KEY_STRING, ap); - apr_hash_set(globals.avatar_hash, key, APR_HASH_KEY_STRING, ap); - return ap; -} - - -static void do_presence(ldl_handle_t *handle, char *from, char *to, char *type, char *rpid, char *message, char *avatar) -{ - iks *pres; - char buf[512]; - iks *tag; - - if (from && !strchr(from, '/')) { - snprintf(buf, sizeof(buf), "%s/talk", from); - from = buf; - } - - if (ldl_test_flag(handle, LDL_FLAG_COMPONENT) && from && to && ldl_jid_domcmp(from, to)) { - globals.logger(DL_LOG_ERR, "Refusal to send presence from and to the same domain in component mode [%s][%s]\n", from, to); - return; - } - - if ((pres = iks_new("presence"))) { - iks_insert_attrib(pres, "xmlns", "jabber:client"); - if (from) { - iks_insert_attrib(pres, "from", from); - } - if (to) { - iks_insert_attrib(pres, "to", to); - } - if (type) { - iks_insert_attrib(pres, "type", type); - } - - if (rpid) { - if ((tag = iks_insert (pres, "show"))) { - iks_insert_cdata(tag, rpid, 0); - } - } - - if (message) { - if ((tag = iks_insert (pres, "status"))) { - iks_insert_cdata(tag, message, 0); - } - } - - if (message || rpid) { - ldl_avatar_t *ap; - - if (avatar) { - if ((ap = ldl_get_avatar(handle, avatar, from))) { - if ((tag = iks_insert(pres, "x"))) { - iks *hash; - iks_insert_attrib(tag, "xmlns", "vcard-temp:x:update"); - if ((hash = iks_insert(tag, "photo"))) { - iks_insert_cdata(hash, ap->hash, 0); - } - } - } - } - - if ((tag = iks_insert(pres, "c"))) { - iks_insert_attrib(tag, "node", "http://www.freeswitch.org/xmpp/client/caps"); - iks_insert_attrib(tag, "ver", LDL_CAPS_VER); - iks_insert_attrib(tag, "ext", "sidebar voice-v1 video-v1 camera-v1"); - iks_insert_attrib(tag, "client", "libdingaling"); - iks_insert_attrib(tag, "xmlns", "http://jabber.org/protocol/caps"); - } - } - - apr_queue_push(handle->queue, pres); - pres = NULL; - } -} - -static void do_roster(ldl_handle_t *handle) -{ - if (handle->session_callback) { - handle->session_callback(handle, NULL, LDL_SIGNAL_ROSTER, NULL, handle->login, NULL, NULL); - } -} - -static int on_unsubscribe(void *user_data, ikspak *pak) -{ - ldl_handle_t *handle = user_data; - char *from = iks_find_attrib(pak->x, "from"); - char *to = iks_find_attrib(pak->x, "to"); - - if (handle->session_callback) { - handle->session_callback(handle, NULL, LDL_SIGNAL_UNSUBSCRIBE, to, from, NULL, NULL); - } - - return IKS_FILTER_EAT; -} - -static int on_subscribe(void *user_data, ikspak *pak) -{ - ldl_handle_t *handle = user_data; - char *from = iks_find_attrib(pak->x, "from"); - char *to = iks_find_attrib(pak->x, "to"); - iks *msg = NULL; - char *id = strdup(from); - char *r; - - if (!id) { - return -1; - } - if ((r = strchr(from, '/'))) { - *r++ = '\0'; - } - - if ((msg = iks_make_s10n (IKS_TYPE_SUBSCRIBED, id, "Ding A Ling...."))) { - if (to && ldl_test_flag(handle, LDL_FLAG_COMPONENT)) { - iks_insert_attrib(msg, "from", to); - } - - apr_queue_push(handle->queue, msg); - msg = NULL; - } - - if ((msg = iks_make_s10n (IKS_TYPE_SUBSCRIBE, id, "Ding A Ling...."))) { - - if (to && ldl_test_flag(handle, LDL_FLAG_COMPONENT)) { - iks_insert_attrib(msg, "from", to); - } - - apr_queue_push(handle->queue, msg); - msg = NULL; - } - - if (handle->session_callback) { - handle->session_callback(handle, NULL, LDL_SIGNAL_SUBSCRIBE, to, from, NULL, NULL); - } - - if (id) free(id); - - return IKS_FILTER_EAT; -} - -static void cancel_retry(ldl_handle_t *handle, char *id) -{ - struct packet_node *packet_node; - - apr_thread_mutex_lock(handle->lock); - if ((packet_node = apr_hash_get(handle->retry_hash, id, APR_HASH_KEY_STRING))) { - if (globals.debug) { - globals.logger(DL_LOG_CRIT, "Cancel packet %s\n", packet_node->id); - } - packet_node->retries = 0; - } - apr_thread_mutex_unlock(handle->lock); -} - -static iks* working_find(iks *tag, const char *name) -{ - while(tag) { - if (!strcasecmp(iks_name(tag), name)) { - return tag; - } - tag = iks_next_tag(tag); - } - - return NULL; -} - -static iks* working_find_nons(iks *tag, const char *name) -{ - while(tag) { - char *a = iks_name(tag); - char *b = (char *)name; - char *p; - - if ((p = strchr(a, ':'))) { - a = p+1; - } - - if ((p = strchr(b, ':'))) { - b = p+1; - } - - if (!strcasecmp(a,b)) { - return tag; - } - tag = iks_next_tag(tag); - } - - return NULL; -} - -static int on_commands(void *user_data, ikspak *pak) -{ - ldl_handle_t *handle = user_data; - char *from = iks_find_attrib(pak->x, "from"); - char *to = iks_find_attrib(pak->x, "to"); - char *iqid = iks_find_attrib(pak->x, "id"); - char *type = iks_find_attrib(pak->x, "type"); - uint8_t is_result = strcasecmp(type, "result") ? 0 : 1; - uint8_t is_error = strcasecmp(type, "error") ? 0 : 1; - iks *xml, *xsession, *xerror = NULL, *xredir = NULL; - iks *xjingle; - - - xml = iks_child (pak->x); - - if (is_error) { - if ((xerror = working_find(xml, "error"))) { - char *code = iks_find_attrib(xerror, "code"); - if (code && !strcmp(code, "302") && - ((xredir = iks_find(xerror, "ses:redirect")) || (xredir = iks_find(xerror, "redirect")))) { - is_result = 0; - is_error = 0; - cancel_retry(handle, iqid); - } - } - } - - - if (is_result) { - iks *tag = iks_child (pak->x); - while(tag) { - if (!strcasecmp(iks_name_nons(tag), "bind")) { - char *jid = iks_find_cdata(tag, "jid"); - char *resource = strchr(jid, '/'); - if (resource) { - resource++; - handle->acc->resource = apr_pstrdup(handle->pool, resource); - } - handle->login = apr_pstrdup(handle->pool, jid); -#if 0 - if ((iq = iks_new("iq"))) { - iks_insert_attrib(iq, "type", "get"); - iks_insert_attrib(iq, "id", "roster"); - x = iks_insert(iq, "query"); - iks_insert_attrib(x, "xmlns", "jabber:iq:roster"); - iks_insert_attrib(x, "xmlns:gr", "google:roster"); - iks_insert_attrib(x, "gr:ext", "2"); - iks_insert_attrib(x, "gr:include", "all"); - apr_queue_push(handle->queue, iq); - iq = NULL; - break; - } -#endif - } - tag = iks_next_tag(tag); - } - } - - - - if ((is_result || is_error) && iqid && from) { - - cancel_retry(handle, iqid); - - if (is_result) { - if (handle->response_callback) { - handle->response_callback(handle, iqid); - } - return IKS_FILTER_EAT; - } else if (is_error) { - return IKS_FILTER_EAT; - - } - } - - - - if ((handle->flags & LDL_FLAG_JINGLE) && (xjingle = working_find_nons(xml, "jin:jingle"))) { - if (parse_jingle_code(handle, xjingle, to, from, type) == LDL_STATUS_SUCCESS) { - iks *reply; - if ((reply = iks_make_iq(IKS_TYPE_RESULT, NULL))) { - iks_insert_attrib(reply, "to", from); - iks_insert_attrib(reply, "from", to); - iks_insert_attrib(reply, "id", iqid); - apr_queue_push(handle->queue, reply); - reply = NULL; - } - } - - } else if ((xsession = working_find_nons(xml, "ses:session"))) { - char *id; - - id = iks_find_attrib(xsession, "id"); - - if (xredir) { - to = iks_cdata(iks_child(xredir)); - type = "redirect"; - } - - if (strcasecmp(type, "error") && strcasecmp(type, "redirect")) { - type = NULL; - } - - if (parse_session_code(handle, id, from, to, xsession, type) == LDL_STATUS_SUCCESS) { - iks *reply; - if ((reply = iks_make_iq(IKS_TYPE_RESULT, NULL))) { - iks_insert_attrib(reply, "to", from); - iks_insert_attrib(reply, "from", to); - iks_insert_attrib(reply, "id", iqid); - apr_queue_push(handle->queue, reply); - reply = NULL; - } - } - } - - return IKS_FILTER_EAT; -} - - -static int on_result(void *user_data, ikspak *pak) -{ - ldl_handle_t *handle = user_data; - iks *msg, *ctag, *tag; - - if ((msg = iks_make_pres (IKS_SHOW_AVAILABLE, handle->status_msg))) { - ctag = iks_insert(msg, "c"); - iks_insert_attrib(ctag, "node", "http://www.freeswitch.org/xmpp/client/caps"); - iks_insert_attrib(ctag, "ver", "1.0.0.1"); - iks_insert_attrib(ctag, "ext", "sidebar voice-v1 video-v1"); - iks_insert_attrib(ctag, "client", "libdingaling"); - iks_insert_attrib(ctag, "xmlns", "http://jabber.org/protocol/caps"); - - if (handle->priority && strlen(handle->priority)) { - tag = iks_insert (msg, "priority"); - iks_insert_cdata(tag, handle->priority, 0); - } - - apr_queue_push(handle->queue, msg); - msg = NULL; - } - return IKS_FILTER_EAT; -} - -static const char c64[65] = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/"; -#define B64BUFFLEN 1024 - -static int b64encode(unsigned char *in, size_t ilen, unsigned char *out, size_t olen) -{ - int y=0,bytes=0; - size_t x=0; - unsigned int b=0,l=0; - - for(x=0;x= 6) { - out[bytes++] = c64[(b>>(l-=6))%64]; - if(++y!=72) { - continue; - } - //out[bytes++] = '\n'; - y=0; - } - } - - if (l > 0) { - out[bytes++] = c64[((b%16)<<(6-l))%64]; - } - if (l != 0) while (l < 6) { - out[bytes++] = '=', l += 2; - } - - return 0; -} - -static void sha1_hash(char *out, unsigned char *in, unsigned int len) -{ - SHA1Context sha; - char *p; - int x; - unsigned char digest[SHA1_HASH_SIZE] = ""; - - SHA1Init(&sha); - - SHA1Update(&sha, in, len); - - SHA1Final(&sha, digest); - - p = out; - for (x = 0; x < SHA1_HASH_SIZE; x++) { - p += sprintf(p, "%2.2x", digest[x]); - } -} - - -static int on_stream_component(ldl_handle_t *handle, int type, iks *node) -{ - ikspak *pak = NULL; - - if (node) { - pak = iks_packet(node); - } - - switch (type) { - case IKS_NODE_START: - if (pak && handle->state == CS_NEW) { - char secret[256] = ""; - char hash[256] = ""; - char handshake[512] = ""; - - snprintf(secret, sizeof(secret), "%s%s", pak->id, handle->password); - sha1_hash(hash, (unsigned char *) secret, (unsigned int)strlen(secret)); - snprintf(handshake, sizeof(handshake), "%s", hash); - iks_send_raw(handle->parser, handshake); - handle->state = CS_START; - if (iks_recv(handle->parser, 1) == 2) { - handle->state = CS_CONNECTED; - if (!ldl_test_flag(handle, LDL_FLAG_AUTHORIZED)) { - do_roster(handle); - if (handle->session_callback) { - handle->session_callback(handle, NULL, LDL_SIGNAL_LOGIN_SUCCESS, "user", "core", "Login Success", handle->login); - } - globals.logger(DL_LOG_DEBUG, "XMPP authenticated\n"); - ldl_set_flag_locked(handle, LDL_FLAG_AUTHORIZED); - ldl_set_flag_locked(handle, LDL_FLAG_CONNECTED); - handle->fail_count = 0; - } - } else { - globals.logger(DL_LOG_ERR, "LOGIN ERROR!\n"); - handle->state = CS_NEW; - } - break; - } - break; - - case IKS_NODE_NORMAL: - break; - - case IKS_NODE_ERROR: - globals.logger(DL_LOG_ERR, "NODE ERROR!\n"); - return IKS_HOOK; - - case IKS_NODE_STOP: - globals.logger(DL_LOG_ERR, "DISCONNECTED!\n"); - return IKS_HOOK; - } - - iks_filter_packet(handle->filter, pak); - - if (handle->job_done == 1) { - return IKS_HOOK; - } - - if (node) { - iks_delete(node); - } - - return IKS_OK; -} - -static int on_stream(ldl_handle_t *handle, int type, iks *node) -{ - handle->counter = opt_timeout; - - - switch (type) { - case IKS_NODE_START: - if (ldl_test_flag(handle, LDL_FLAG_TLS) && !iks_is_secure(handle->parser)) { - if (iks_has_tls()) { - iks_start_tls(handle->parser); - } else { - globals.logger(DL_LOG_WARNING, "TLS NOT SUPPORTED IN THIS BUILD!\n"); - } - } - break; - case IKS_NODE_NORMAL: - if (node && strcmp("stream:features", iks_name(node)) == 0) { - handle->features = iks_stream_features(node); - if (ldl_test_flag(handle, LDL_FLAG_TLS) && !iks_is_secure(handle->parser)) - break; - if (ldl_test_flag(handle, LDL_FLAG_CONNECTED)) { - iks *t; - if (handle->features & IKS_STREAM_BIND) { - if ((t = iks_make_resource_bind(handle->acc))) { - apr_queue_push(handle->queue, t); - t = NULL; - } - } - if (handle->features & IKS_STREAM_SESSION) { - if ((t = iks_make_session())) { - iks_insert_attrib(t, "id", "auth"); - apr_queue_push(handle->queue, t); - t = NULL; - } - } - } else { - if (handle->features & IKS_STREAM_SASL_MD5) { - iks_start_sasl(handle->parser, IKS_SASL_DIGEST_MD5, handle->acc->user, handle->password); - } else if (handle->features & IKS_STREAM_SASL_PLAIN) { - iks *x = NULL; - - if ((x = iks_new("auth"))) { - char s[512] = ""; - char base64[1024] = ""; - uint32_t slen; - - iks_insert_attrib(x, "xmlns", IKS_NS_XMPP_SASL); - iks_insert_attrib(x, "mechanism", "PLAIN"); - iks_insert_attrib(x, "encoding", "UTF-8"); - snprintf(s, sizeof(s), "%c%s%c%s", 0, handle->acc->user, 0, handle->password); - slen = (uint32_t)(strlen(handle->acc->user) + strlen(handle->password) + 2); - b64encode((unsigned char *)s, slen, (unsigned char *) base64, sizeof(base64)); - iks_insert_cdata(x, base64, 0); - apr_queue_push(handle->queue, x); - x = NULL; - } else { - globals.logger(DL_LOG_CRIT, "Memory ERROR!\n"); - break; - } - - } - } - } else if (node && strcmp("failure", iks_name_nons(node)) == 0) { - globals.logger(DL_LOG_CRIT, "sasl authentication failed\n"); - if (handle->session_callback) { - handle->session_callback(handle, NULL, LDL_SIGNAL_LOGIN_FAILURE, "user", "core", "Login Failure", handle->login); - } - } else if (node && strcmp("success", iks_name_nons(node)) == 0) { - globals.logger(DL_LOG_NOTICE, "XMPP server connected\n"); - iks_send_header(handle->parser, handle->acc->server); - ldl_set_flag_locked(handle, LDL_FLAG_CONNECTED); - if (handle->session_callback) { - handle->session_callback(handle, NULL, LDL_SIGNAL_CONNECTED, "user", "core", "Server Connected", handle->login); - } - } else { - ikspak *pak; - if (!ldl_test_flag(handle, LDL_FLAG_AUTHORIZED)) { - if (handle->session_callback) { - handle->session_callback(handle, NULL, LDL_SIGNAL_LOGIN_SUCCESS, "user", "core", "Login Success", handle->login); - } - globals.logger(DL_LOG_NOTICE, "XMPP authenticated\n"); - ldl_set_flag_locked(handle, LDL_FLAG_AUTHORIZED); - } - if (node) { - pak = iks_packet(node); - iks_filter_packet(handle->filter, pak); - } - if (handle->job_done == 1) { - return IKS_HOOK; - } - } - break; -#if 0 - case IKS_NODE_STOP: - globals.logger(DL_LOG_DEBUG, "server disconnected\n"); - break; - - case IKS_NODE_ERROR: - globals.logger(DL_LOG_DEBUG, "stream error\n"); - break; -#endif - - } - - if (node) { - iks_delete(node); - } - return IKS_OK; -} - -static int on_msg(void *user_data, ikspak *pak) -{ - char *cmd = iks_find_cdata(pak->x, "body"); - char *to = iks_find_attrib(pak->x, "to"); - char *from = iks_find_attrib(pak->x, "from"); - char *subject = iks_find_attrib(pak->x, "subject"); - ldl_handle_t *handle = user_data; - ldl_session_t *session = NULL; - - if (from) { - session = apr_hash_get(handle->sessions, from, APR_HASH_KEY_STRING); - } - - if (handle->session_callback) { - handle->session_callback(handle, session, LDL_SIGNAL_MSG, to, from, subject ? subject : "N/A", cmd); - } - - return 0; -} - -static int on_error(void *user_data, ikspak * pak) -{ - globals.logger(DL_LOG_ERR, "authorization failed\n"); - return IKS_FILTER_EAT; -} - -static void on_log(ldl_handle_t *handle, const char *data, size_t size, int is_incoming) -{ - - if (globals.debug) { - if (is_incoming) { - globals.logger(DL_LOG_INFO, "+xml:%s%s:%s", iks_is_secure(handle->parser) ? "Sec" : "", is_incoming ? "RECV" : "SEND", data); - } else { - globals.logger(DL_LOG_NOTICE, "+xml:%s%s:%s", iks_is_secure(handle->parser) ? "Sec" : "", is_incoming ? "RECV" : "SEND", data); - } - } -} - -static void j_setup_filter(ldl_handle_t *handle) -{ - int x = 0; - - if (handle->filter) { - iks_filter_delete(handle->filter); - } - handle->filter = iks_filter_new(); - - iks_filter_add_rule(handle->filter, on_msg, handle, IKS_RULE_TYPE, IKS_PAK_MESSAGE, IKS_RULE_SUBTYPE, IKS_TYPE_CHAT, IKS_RULE_DONE); - - iks_filter_add_rule(handle->filter, on_result, handle, - IKS_RULE_TYPE, IKS_PAK_IQ, - IKS_RULE_SUBTYPE, IKS_TYPE_RESULT, IKS_RULE_ID, "auth", IKS_RULE_DONE); - - iks_filter_add_rule(handle->filter, on_presence, handle, - IKS_RULE_TYPE, IKS_PAK_PRESENCE, - //IKS_RULE_SUBTYPE, IKS_TYPE_SET, - IKS_RULE_DONE); - - iks_filter_add_rule(handle->filter, on_commands, handle, - IKS_RULE_TYPE, IKS_PAK_IQ, - IKS_RULE_SUBTYPE, IKS_TYPE_SET, - IKS_RULE_DONE); - - iks_filter_add_rule(handle->filter, on_commands, handle, - IKS_RULE_TYPE, IKS_PAK_IQ, - IKS_RULE_SUBTYPE, IKS_TYPE_RESULT, - IKS_RULE_DONE); - - iks_filter_add_rule(handle->filter, on_commands, handle, - IKS_RULE_TYPE, IKS_PAK_IQ, - IKS_RULE_SUBTYPE, IKS_TYPE_ERROR, - IKS_RULE_DONE); - - iks_filter_add_rule(handle->filter, on_subscribe, handle, - IKS_RULE_TYPE, IKS_PAK_S10N, - IKS_RULE_SUBTYPE, IKS_TYPE_SUBSCRIBE, - IKS_RULE_DONE); - - iks_filter_add_rule(handle->filter, on_unsubscribe, handle, - IKS_RULE_TYPE, IKS_PAK_S10N, - IKS_RULE_SUBTYPE, IKS_TYPE_UNSUBSCRIBE, - IKS_RULE_DONE); - - iks_filter_add_rule(handle->filter, on_error, handle, - IKS_RULE_TYPE, IKS_PAK_IQ, - IKS_RULE_SUBTYPE, IKS_TYPE_ERROR, IKS_RULE_ID, "auth", IKS_RULE_DONE); - - for (x = 0; FEATURES[x].name; x++) { - iks_filter_add_rule(handle->filter, FEATURES[x].callback, handle, - IKS_RULE_NS, FEATURES[x].name, IKS_RULE_DONE); - } -} - -static ldl_queue_t ldl_flush_queue(ldl_handle_t *handle, int done) -{ - iks *msg; - void *pop = NULL; - unsigned int len = 0, x = 0; - - ldl_queue_t sent_data = LDL_QUEUE_NONE; - - apr_thread_mutex_lock(handle->lock); - - while(apr_queue_trypop(handle->queue, &pop) == APR_SUCCESS) { - if (pop) { - msg = (iks *) pop; - if (!done) { - if (iks_send(handle->parser, msg) != IKS_OK) { - globals.logger(DL_LOG_DEBUG, "Failed sending data!\n"); - }; - }; - iks_delete(msg); - pop = NULL; - sent_data = LDL_QUEUE_SENT; - } else { - break; - } - } - - len = apr_queue_size(handle->retry_queue); - if (globals.debug && len) { - globals.logger(DL_LOG_CRIT, "Processing %u packets in retry queue\n", len); - } - - pop = NULL; - - while(x < len && apr_queue_trypop(handle->retry_queue, &pop) == APR_SUCCESS) { - if (!pop) { - break; - } else { - struct packet_node *packet_node = (struct packet_node *) pop; - apr_time_t now = apr_time_now(); - x++; - - if (packet_node->next <= now) { - if (packet_node->retries > 0) { - packet_node->retries--; - if (globals.debug) { - globals.logger(DL_LOG_CRIT, "Sending packet %s (%d left)\n", packet_node->id, packet_node->retries); - } - if (iks_send(handle->parser, packet_node->xml) != IKS_OK) { - globals.logger(DL_LOG_DEBUG, "Failed trying re-sending data!\n"); - }; - packet_node->next = now + 5000000; - sent_data = LDL_QUEUE_SENT; - } - } - if (packet_node->retries == 0 || done) { - if (globals.debug) { - globals.logger(DL_LOG_CRIT, "Discarding packet %s\n", packet_node->id); - } - apr_hash_set(handle->retry_hash, packet_node->id, APR_HASH_KEY_STRING, NULL); - iks_delete(packet_node->xml); - free(packet_node); - } else { - apr_queue_push(handle->retry_queue, packet_node); - packet_node = NULL; - } - pop = NULL; - } - } - apr_thread_mutex_unlock(handle->lock); - return sent_data; -} - - -static void xmpp_connect(ldl_handle_t *handle, char *jabber_id, char *pass) -{ - int count_ka = LDL_KEEPALIVE_TIMEOUT; - time_t tstart, tnow; - - while (ldl_test_flag((&globals), LDL_FLAG_READY) && ldl_test_flag(handle, LDL_FLAG_RUNNING)) { - int e; - char tmp[512], *sl; - int fd; - - handle->parser = iks_stream_new(ldl_test_flag(handle, LDL_FLAG_COMPONENT) ? IKS_NS_COMPONENT : IKS_NS_CLIENT, - handle, - (iksStreamHook *) (ldl_test_flag(handle, LDL_FLAG_COMPONENT) ? on_stream_component : on_stream)); - - - iks_set_log_hook(handle->parser, (iksLogHook *) on_log); - - - strncpy(tmp, jabber_id, sizeof(tmp)-1); - sl = strchr(tmp, '/'); - - if (!sl && !ldl_test_flag(handle, LDL_FLAG_COMPONENT)) { - /* user gave no resource name, use the default */ - snprintf(tmp + strlen(tmp), sizeof(tmp) - strlen(tmp), "/%s", "talk"); - } else if (sl && ldl_test_flag(handle, LDL_FLAG_COMPONENT)) { - *sl = '\0'; - } - - handle->acc = iks_id_new(iks_parser_stack(handle->parser), tmp); - - handle->password = pass; - - j_setup_filter(handle); - - globals.logger(DL_LOG_DEBUG, "xmpp connecting\n"); - - e = iks_connect_via(handle->parser, - handle->server ? handle->server : handle->acc->server, - handle->port ? handle->port : IKS_JABBER_PORT, - handle->acc->server); - - switch (e) { - case IKS_OK: - break; - case IKS_NET_NODNS: - globals.logger(DL_LOG_CRIT, "hostname lookup failed\n"); - microsleep(1000); - goto fail; - case IKS_NET_NOCONN: - globals.logger(DL_LOG_CRIT, "connection failed\n"); - microsleep(1000); - goto fail; - default: - globals.logger(DL_LOG_CRIT, "io error 1 %d\n", e); - microsleep(1000); - goto fail; - } - - handle->counter = opt_timeout; - if ((tstart = time(NULL)) == -1) { - globals.logger(DL_LOG_DEBUG, "error determining connection time"); - } - - while (ldl_test_flag((&globals), LDL_FLAG_READY) && ldl_test_flag(handle, LDL_FLAG_RUNNING)) { - e = iks_recv(handle->parser, 1); - - if (handle->loop_callback) { - if (handle->loop_callback(handle) != LDL_STATUS_SUCCESS) { - ldl_clear_flag_locked(handle, LDL_FLAG_RUNNING); - break; - } - } - - if (handle->job_done) { - break; - } - - if (IKS_HOOK == e) { - break; - } - - if (IKS_OK != e || ldl_test_flag(handle, LDL_FLAG_BREAK)) { - globals.logger(DL_LOG_DEBUG, "io error 2 %d retry in %d second(s)", e, ++handle->fail_count); - if ((tnow = time(NULL)) == -1) { - globals.logger(DL_LOG_DEBUG, "error deterniming io error time"); - } - if (difftime(tnow, tstart) > 30) { - /* this is a new error situation: reset counter */ - globals.logger(DL_LOG_DEBUG, "resetting fail count"); - handle->fail_count = 1; - } - microsleep(1000 * handle->fail_count); - goto fail; - } - - if (ldl_test_flag(handle, LDL_FLAG_RUNNING)) { - if (ldl_flush_queue(handle, 0) == LDL_QUEUE_SENT) { - count_ka = LDL_KEEPALIVE_TIMEOUT; - } - } - - if (!ldl_test_flag(handle, LDL_FLAG_CONNECTED)) { - handle->counter--; - - if (IKS_NET_TLSFAIL == e) { - globals.logger(DL_LOG_CRIT, "tls handshake failed\n"); - microsleep(500); - break; - } - - if (handle->counter == 0) { - globals.logger(DL_LOG_CRIT, "network timeout\n"); - microsleep(500); - break; - } - } - - if (count_ka-- <= 0) { - if( iks_send_raw(handle->parser, " ") == IKS_OK) { - globals.logger(DL_LOG_DEBUG, "Sent keep alive signal"); - count_ka = LDL_KEEPALIVE_TIMEOUT; - } else { - globals.logger(DL_LOG_DEBUG, "Failed sending keep alive signal"); - microsleep(500); - break; - } - } - - } - - fail: - - ldl_clear_flag_locked(handle, LDL_FLAG_CONNECTED); - ldl_clear_flag_locked(handle, LDL_FLAG_AUTHORIZED); - ldl_clear_flag_locked(handle, LDL_FLAG_BREAK); - handle->state = CS_NEW; - - if ((fd = iks_fd(handle->parser)) > -1) { - shutdown(fd, 0x02); - } - - iks_disconnect(handle->parser); - iks_parser_delete(handle->parser); - } - ldl_clear_flag_locked(handle, LDL_FLAG_RUNNING); - - ldl_flush_queue(handle, 1); - - ldl_set_flag_locked(handle, LDL_FLAG_STOPPED); - -} - -static void add_elements(ldl_session_t *session, iks *tag) -{ - apr_hash_index_t *hi; - return; - for (hi = apr_hash_first(session->pool, session->variables); hi; hi = apr_hash_next(hi)) { - void *val = NULL; - const void *key = NULL; - - apr_hash_this(hi, &key, NULL, &val); - if (val) { - iks *var = iks_insert(tag, "info_element"); - iks_insert_attrib(var, "xmlns", "http://www.freeswitch.org/jie"); - iks_insert_attrib(var, "name", (char *) key); - iks_insert_attrib(var, "value", (char *) val); - } - } -} - - -static iks *ldl_set_jingle_tag(ldl_session_t *session, iks *iq, char *action) -{ - iks *jin = iks_insert (iq, "jin:jingle"); - iks_insert_attrib(jin, "xmlns:jin", "urn:xmpp:jingle:1"); - iks_insert_attrib(jin, "action", action); - iks_insert_attrib(jin, "sid", session->id); - //iks_insert_attrib(jin, "initiator", session->initiator ? session->initiator : session->them); - - return jin; -} - -static ldl_status new_jingle_iq(ldl_session_t *session, iks **iqp, iks **jinp, unsigned int *id, char *action) -{ - iks *iq , *jin; - unsigned int myid; - char idbuf[80]; - - myid = next_id(); - snprintf(idbuf, sizeof(idbuf), "%u", myid); - iq = iks_new("iq"); - iks_insert_attrib(iq, "xmlns", "jabber:client"); - iks_insert_attrib(iq, "from", session->login); - iks_insert_attrib(iq, "to", session->them); - iks_insert_attrib(iq, "type", "set"); - iks_insert_attrib(iq, "id", idbuf); - - jin = ldl_set_jingle_tag(session, iq, action); - - *jinp = jin; - *iqp = iq; - *id = myid; - return LDL_STATUS_SUCCESS; -} - - -static ldl_status new_session_iq(ldl_session_t *session, iks **iqp, iks **sessp, unsigned int *id, char *type) -{ - iks *iq, *sess; - unsigned int myid; - char idbuf[80]; - - myid = next_id(); - snprintf(idbuf, sizeof(idbuf), "%u", myid); - iq = iks_new("iq"); - iks_insert_attrib(iq, "xmlns", "jabber:client"); - iks_insert_attrib(iq, "from", session->login); - iks_insert_attrib(iq, "to", session->them); - iks_insert_attrib(iq, "type", "set"); - iks_insert_attrib(iq, "id", idbuf); - sess = iks_insert (iq, "ses:session"); - iks_insert_attrib(sess, "xmlns:ses", "http://www.google.com/session"); - - iks_insert_attrib(sess, "type", type); - iks_insert_attrib(sess, "id", session->id); - iks_insert_attrib(sess, "initiator", session->initiator ? session->initiator : session->them); - - *sessp = sess; - *iqp = iq; - *id = myid; - return LDL_STATUS_SUCCESS; -} - -static void schedule_packet(ldl_handle_t *handle, unsigned int id, iks *xml, unsigned int retries) -{ - struct packet_node *packet_node; - - apr_thread_mutex_lock(handle->lock); - if ((packet_node = malloc(sizeof(*packet_node)))) { - memset(packet_node, 0, sizeof(*packet_node)); - snprintf(packet_node->id, sizeof(packet_node->id), "%u", id); - packet_node->xml = xml; - packet_node->retries = retries; - packet_node->next = apr_time_now(); - apr_hash_set(handle->retry_hash, packet_node->id, APR_HASH_KEY_STRING, packet_node); - apr_queue_push(handle->retry_queue, packet_node); - packet_node = NULL; - } - apr_thread_mutex_unlock(handle->lock); - -} - -char *ldl_session_get_caller(ldl_session_t *session) -{ - return session->them; -} - -char *ldl_session_get_callee(ldl_session_t *session) -{ - return session->login; -} - -void ldl_session_set_ip(ldl_session_t *session, char *ip) -{ - session->ip = apr_pstrdup(session->pool, ip); -} - -char *ldl_session_get_ip(ldl_session_t *session) -{ - return session->ip; -} - -void ldl_session_set_private(ldl_session_t *session, void *private_data) -{ - session->private_data = private_data; -} - -void *ldl_session_get_private(ldl_session_t *session) -{ - return session->private_data; -} - -void ldl_session_accept_candidate(ldl_session_t *session, ldl_candidate_t *candidate) -{ - iks *iq, *sess, *tp; - unsigned int myid; - char idbuf[80]; - myid = next_id(); - snprintf(idbuf, sizeof(idbuf), "%u", myid); - - if ((iq = iks_new("iq"))) { - if (!iks_insert_attrib(iq, "type", "set")) goto fail; - if (!iks_insert_attrib(iq, "id", idbuf)) goto fail; - if (!iks_insert_attrib(iq, "from", session->login)) goto fail; - if (!iks_insert_attrib(iq, "to", session->them)) goto fail; - if (!(sess = iks_insert (iq, "ses:session"))) goto fail; - if (!iks_insert_attrib(sess, "xmlns:ses", "http://www.google.com/session")) goto fail; - if (!iks_insert_attrib(sess, "type", "transport-accept")) goto fail; - if (!iks_insert_attrib(sess, "id", candidate->tid)) goto fail; - if (!iks_insert_attrib(sess, "xmlns", "http://www.google.com/session")) goto fail; - if (!iks_insert_attrib(sess, "initiator", session->initiator ? session->initiator : session->them)) goto fail; - if (!(tp = iks_insert (sess, "transport"))) goto fail; - if (!iks_insert_attrib(tp, "xmlns", "http://www.google.com/transport/p2p")) goto fail; - apr_queue_push(session->handle->queue, iq); - iq = NULL; - } - - fail: - if (iq) { - iks_delete(iq); - } - -} - -void *ldl_handle_get_private(ldl_handle_t *handle) -{ - return handle->private_info; -} - -char *ldl_handle_get_login(ldl_handle_t *handle) -{ - return handle->login; -} - -void ldl_handle_send_presence(ldl_handle_t *handle, char *from, char *to, char *type, char *rpid, char *message, char *avatar) -{ - do_presence(handle, from, to, type, rpid, message, avatar); -} - -static void ldl_random_string(char *buf, uint16_t len, char *set) -{ - char chars[] = "abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789"; - int max; - uint16_t x; - - if (!set) { - set = chars; - } - - max = (int) strlen(set); - - srand((unsigned int) time(NULL)); - - for (x = 0; x < len; x++) { - int j = (int) (max * 1.0 * rand() / (RAND_MAX + 1.0)); - buf[x] = set[j]; - } -} - -#define TLEN 8192 -void ldl_handle_send_vcard(ldl_handle_t *handle, char *from, char *to, char *id, char *vcard) -{ - iks *vxml = NULL, *iq = NULL; - int e = 0; - ldl_avatar_t *ap = NULL; - char *text = NULL; - - ap = ldl_get_avatar(handle, NULL, from); - - if (!vcard) { - char *ext; - - if (!ap) { - return; - } - - if ((ext = strrchr(ap->path, '.'))) { - ext++; - } else { - ext = "png"; - } - text = malloc(TLEN); - snprintf(text, TLEN, - "image/%s%s", - ext, - ap->base64 - ); - vcard = text; - } else { - if (ap && (strstr(vcard, "photo") || strstr(vcard, "PHOTO"))) { - ldl_random_string(ap->hash, sizeof(ap->hash) -1, NULL); - } - } - - - if (!(vxml = iks_tree(vcard, 0, &e))) { - globals.logger(DL_LOG_ERR, "Parse returned error [%d]\n", e); - goto fail; - } - - if (!(iq = iks_new("iq"))) { - globals.logger(DL_LOG_ERR, "Memory Error\n"); - goto fail; - } - - if (!iks_insert_attrib(iq, "to", to)) goto fail; - if (!iks_insert_attrib(iq, "xmlns", "jabber:client")) goto fail; - if (!iks_insert_attrib(iq,"from", from)) goto fail; - if (!iks_insert_attrib(iq, "type", "result")) goto fail; - if (!iks_insert_attrib(iq, "id", id)) goto fail; - if (!iks_insert_node(iq, vxml)) goto fail; - - apr_queue_push(handle->queue, iq); - - iq = NULL; - vxml = NULL; - - fail: - - if (iq) { - iks_delete(iq); - } - - if (vxml) { - iks_delete(vxml); - } - - if (text) { - free(text); - } - -} - -void ldl_handle_send_msg(ldl_handle_t *handle, char *from, char *to, const char *subject, const char *body) -{ - iks *msg; - char *t, *e; - char *bdup = NULL; - int on = 0; - int len = 0; - char *my_body = strdup(body); - char *my_body_base = my_body; - - assert(handle != NULL); - assert(body != NULL); - - if (strchr(my_body, '<')) { - len = (int) strlen(my_body); - if (!(bdup = malloc(len))) { - if (my_body_base) { - free(my_body_base); - } - return; - } - - memset(bdup, 0, len); - - e = bdup; - for(t = my_body; *t; t++) { - if (*t == '<') { - on = 1; - } else if (*t == '>') { - t++; - on = 0; - } - - if (!on) { - *e++ = *t; - } - } - my_body = bdup; - } - - msg = iks_make_msg(IKS_TYPE_NONE, to, my_body); - iks_insert_attrib(msg, "type", "chat"); - - if (!from) { - from = handle->login; - } - - iks_insert_attrib(msg, "from", from); - - if (subject) { - iks_insert_attrib(msg, "subject", subject); - } - - if (bdup) { - free(bdup); - } - - if (my_body_base) { - free(my_body_base); - } - - apr_queue_push(handle->queue, msg); - msg = NULL; - -} - -int ldl_global_debug(int on) -{ - if (on > -1) { - globals.debug = on ? 1 : 0; - } - - return globals.debug ? 1 : 0; -} - -void ldl_global_set_logger(ldl_logger_t logger) -{ - globals.logger = logger; -} - -unsigned int ldl_session_terminate(ldl_session_t *session) -{ - iks *iq, *sess; - unsigned int id; - apr_hash_t *hash = session->handle->sessions; - - new_session_iq(session, &iq, &sess, &id, "terminate"); - - if ((session->handle->flags & LDL_FLAG_JINGLE)) { - ldl_set_jingle_tag(session, iq, "session-terminate"); - } - - schedule_packet(session->handle, id, iq, LDL_RETRY); - - if (session->id) { - apr_hash_set(hash, session->id, APR_HASH_KEY_STRING, NULL); - } - - if (session->them) { - apr_hash_set(hash, session->them, APR_HASH_KEY_STRING, NULL); - } - - return id; - -} - - - -unsigned int ldl_session_transport(ldl_session_t *session, - ldl_candidate_t *candidates, - unsigned int clen) - -{ - iks *iq, *sess, *tag; - unsigned int x, id = 0; - - - if ((session->handle->flags & LDL_FLAG_JINGLE)) { - return ldl_session_candidates(session, candidates, clen); - } - - - - for (x = 0; x < clen; x++) { - char buf[512]; - iq = NULL; - sess = NULL; - id = 0; - - new_session_iq(session, &iq, &sess, &id, "transport-info"); - - tag = sess; - - //if (0) add_elements(session, tag); - tag = iks_insert(tag, "transport"); - iks_insert_attrib(tag, "xmlns", "http://www.google.com/transport/p2p"); - //iks_insert_attrib(tag, "xmlns", "urn:xmpp:jingle:transports:raw-udp:1"); - - tag = iks_insert(tag, "candidate"); - - if (candidates[x].name) { - iks_insert_attrib(tag, "name", candidates[x].name); - } - if (candidates[x].address) { - iks_insert_attrib(tag, "address", candidates[x].address); - } - if (candidates[x].port) { - snprintf(buf, sizeof(buf), "%u", candidates[x].port); - iks_insert_attrib(tag, "port", buf); - } - if (candidates[x].username) { - iks_insert_attrib(tag, "username", candidates[x].username); - } - if (candidates[x].password) { - iks_insert_attrib(tag, "password", candidates[x].password); - } - if (candidates[x].pref) { - snprintf(buf, sizeof(buf), "%0.1f", candidates[x].pref); - iks_insert_attrib(tag, "preference", buf); - } - if (candidates[x].protocol) { - iks_insert_attrib(tag, "protocol", candidates[x].protocol); - } - if (candidates[x].type) { - iks_insert_attrib(tag, "type", candidates[x].type); - } - - iks_insert_attrib(tag, "network", "0"); - iks_insert_attrib(tag, "generation", "0"); - schedule_packet(session->handle, id, iq, LDL_RETRY); - } - - return id; -} - -unsigned int ldl_session_candidates(ldl_session_t *session, - ldl_candidate_t *candidates, - unsigned int clen) - -{ - iks *iq = NULL, *sess = NULL, *tag = NULL; - unsigned int x = 0, id = 0; - - - unsigned int pass = 0; - iks *jingle = NULL, *jin_content = NULL, *p_trans = NULL; - const char *tname = ""; - const char *type = ""; - - if ((session->handle->flags & LDL_FLAG_JINGLE)) { - - - new_jingle_iq(session, &iq, &jingle, &id, "transport-info"); - - for (pass = 0; pass < 2; pass++) { - - if (pass == 0) { - type = "rtp"; - tname = "audio"; - } else { - type = "video_rtp"; - tname = "video"; - } - - jin_content = iks_insert(jingle, "jin:content"); - iks_insert_attrib(jin_content, "name", tname); - iks_insert_attrib(jin_content, "creator", "initiator"); - - for (x = 0; x < clen; x++) { - char buf[512]; - - if (strcasecmp(candidates[x].name, type)) { - continue; - } - - p_trans = iks_insert(jin_content, "p:transport"); - iks_insert_attrib(p_trans, "xmlns:p", "http://www.google.com/transport/p2p"); - - - - tag = iks_insert(p_trans, "candidate"); - - if (candidates[x].name) { - iks_insert_attrib(tag, "name", candidates[x].name); - } - if (candidates[x].address) { - iks_insert_attrib(tag, "address", candidates[x].address); - } - if (candidates[x].port) { - snprintf(buf, sizeof(buf), "%u", candidates[x].port); - iks_insert_attrib(tag, "port", buf); - } - if (candidates[x].username) { - iks_insert_attrib(tag, "username", candidates[x].username); - } - if (candidates[x].password) { - iks_insert_attrib(tag, "password", candidates[x].password); - } - if (candidates[x].pref) { - snprintf(buf, sizeof(buf), "%0.1f", candidates[x].pref); - iks_insert_attrib(tag, "preference", buf); - } - if (candidates[x].protocol) { - iks_insert_attrib(tag, "protocol", candidates[x].protocol); - } - if (candidates[x].type) { - iks_insert_attrib(tag, "type", candidates[x].type); - } - - iks_insert_attrib(tag, "network", "0"); - iks_insert_attrib(tag, "generation", "0"); - } - } - - - schedule_packet(session->handle, id, iq, LDL_RETRY); - - iq = NULL; - sess = NULL; - tag = NULL; - id = 0; - } - - - new_session_iq(session, &iq, &sess, &id, "candidates"); - add_elements(session, sess); - - for (x = 0; x < clen; x++) { - char buf[512]; - //iq = NULL; - //sess = NULL; - //id = 0; - - tag = iks_insert(sess, "ses:candidate"); - - - - if (candidates[x].name) { - iks_insert_attrib(tag, "name", candidates[x].name); - } - if (candidates[x].address) { - iks_insert_attrib(tag, "address", candidates[x].address); - } - if (candidates[x].port) { - snprintf(buf, sizeof(buf), "%u", candidates[x].port); - iks_insert_attrib(tag, "port", buf); - } - if (candidates[x].username) { - iks_insert_attrib(tag, "username", candidates[x].username); - } - if (candidates[x].password) { - iks_insert_attrib(tag, "password", candidates[x].password); - } - if (candidates[x].pref) { - snprintf(buf, sizeof(buf), "%0.1f", candidates[x].pref); - iks_insert_attrib(tag, "preference", buf); - } - if (candidates[x].protocol) { - iks_insert_attrib(tag, "protocol", candidates[x].protocol); - } - if (candidates[x].type) { - iks_insert_attrib(tag, "type", candidates[x].type); - } - - iks_insert_attrib(tag, "network", "0"); - iks_insert_attrib(tag, "generation", "0"); - - } - - schedule_packet(session->handle, id, iq, LDL_RETRY); - - return id; -} - - - -char *ldl_handle_probe(ldl_handle_t *handle, char *id, char *from, char *buf, unsigned int len) -{ - iks *pres, *msg; - char *lid = NULL, *low_id = NULL; - struct ldl_buffer buffer; - time_t started, elapsed, next = 0; - char *notice = "Call Me!"; - - buffer.buf = buf; - buffer.len = len; - buffer.hit = 0; - - apr_hash_set(handle->probe_hash, id, APR_HASH_KEY_STRING, &buffer); - - started = time(NULL); - for(;;) { - elapsed = time(NULL) - started; - if (elapsed == next) { - msg = iks_make_s10n (IKS_TYPE_SUBSCRIBE, id, notice); - iks_insert_attrib(msg, "from", from); - apr_queue_push(handle->queue, msg); - msg = NULL; - - pres = iks_new("presence"); - iks_insert_attrib(pres, "xmlns", "jabber:client"); - iks_insert_attrib(pres, "type", "probe"); - iks_insert_attrib(pres, "to", id); - iks_insert_attrib(pres, "from", from); - apr_queue_push(handle->queue, pres); - pres = NULL; - next += 5; - } - if (elapsed >= 17) { - break; - } - if (buffer.hit) { - lid = buffer.buf; - break; - } - ldl_yield(1000); - } - - if ((low_id = strdup(id))) { - lowercase(id); - apr_hash_set(handle->probe_hash, low_id, APR_HASH_KEY_STRING, NULL); - free(low_id); - } - - return lid; -} - - -char *ldl_handle_disco(ldl_handle_t *handle, char *id, char *from, char *buf, unsigned int len) -{ - iks *iq, *query, *msg; - char *lid = NULL; - struct ldl_buffer buffer; - apr_time_t started; - unsigned int elapsed; - char *notice = "Call Me!"; - int again = 0; - unsigned int myid; - char idbuf[80]; - - myid = next_id(); - snprintf(idbuf, sizeof(idbuf), "%u", myid); - - buffer.buf = buf; - buffer.len = len; - buffer.hit = 0; - - if ((iq = iks_new("iq"))) { - if ((query = iks_insert(iq, "query"))) { - iks_insert_attrib(iq, "type", "get"); - iks_insert_attrib(iq, "to", id); - iks_insert_attrib(iq,"from", from); - iks_insert_attrib(iq, "id", idbuf); - iks_insert_attrib(query, "xmlns", "http://jabber.org/protocol/disco#info"); - } else { - iks_delete(iq); - globals.logger(DL_LOG_CRIT, "Memory ERROR!\n"); - return NULL; - } - } else { - globals.logger(DL_LOG_CRIT, "Memory ERROR!\n"); - return NULL; - } - - apr_hash_set(handle->probe_hash, id, APR_HASH_KEY_STRING, &buffer); - msg = iks_make_s10n (IKS_TYPE_SUBSCRIBE, id, notice); - apr_queue_push(handle->queue, msg); - msg = NULL; - msg = iks_make_s10n (IKS_TYPE_SUBSCRIBED, id, notice); - apr_queue_push(handle->queue, msg); - msg = NULL; - apr_queue_push(handle->queue, iq); - iq = NULL; - - //schedule_packet(handle, next_id(), pres, LDL_RETRY); - - started = apr_time_now(); - for(;;) { - elapsed = (unsigned int)((apr_time_now() - started) / 1000); - if (elapsed > 5000 && ! again) { - msg = iks_make_s10n (IKS_TYPE_SUBSCRIBE, id, notice); - apr_queue_push(handle->queue, msg); - msg = NULL; - again++; - } - if (elapsed > 10000) { - break; - } - if (buffer.hit) { - lid = buffer.buf; - break; - } - ldl_yield(1000); - } - - apr_hash_set(handle->probe_hash, id, APR_HASH_KEY_STRING, NULL); - return lid; -} - - - -unsigned int ldl_session_describe(ldl_session_t *session, - ldl_payload_t *payloads, - unsigned int plen, - ldl_description_t description, unsigned int *audio_ssrc, unsigned int *video_ssrc, - ldl_crypto_data_t *audio_crypto_data, ldl_crypto_data_t *video_crypto_data) -{ - iks *iq; - iks *sess, *payload = NULL, *tag = NULL;//, *u = NULL; - - unsigned int x, id; - int video_call = 0; - int compat = 1; - //char *vid_mux = ldl_session_get_value(session, "video:rtcp-mux"); - //char *aud_mux = ldl_session_get_value(session, "audio:rtcp-mux"); - char tmp[80]; - iks *jpayload = NULL, *tp = NULL; - iks *jingle, *jin_audio, *jin_audio_desc = NULL, *jin_video = NULL, *jin_video_desc = NULL, *crypto; - - - if (!*audio_ssrc) { - *audio_ssrc = (uint32_t) ((intptr_t) session + (uint32_t) time(NULL)); - } - - if (!*video_ssrc) { - *video_ssrc = (uint32_t) ((intptr_t) payloads + (uint32_t) time(NULL)); - } - - if ((session->handle->flags & LDL_FLAG_JINGLE)) { - new_jingle_iq(session, &iq, &jingle, &id, description == LDL_DESCRIPTION_ACCEPT ? "session-accept" : "session-initiate"); - iks_insert_attrib(jingle, "initiator", session->initiator ? session->initiator : session->them); - - if (compat) { - sess = iks_insert (iq, "ses:session"); - iks_insert_attrib(sess, "xmlns:ses", "http://www.google.com/session"); - - iks_insert_attrib(sess, "type", description == LDL_DESCRIPTION_ACCEPT ? "accept" : "initiate"); - iks_insert_attrib(sess, "id", session->id); - iks_insert_attrib(sess, "initiator", session->initiator ? session->initiator : session->them); - } - - } else { - new_session_iq(session, &iq, &sess, &id, description == LDL_DESCRIPTION_ACCEPT ? "accept" : "initiate"); - } - - - /* Check if this is a video call */ - for (x = 0; x < plen; x++) { - if (payloads[x].type == LDL_PAYLOAD_VIDEO) { - video_call = 1; - if ((session->handle->flags & LDL_FLAG_JINGLE)) { - jin_video = iks_insert(jingle, "jin:content"); - iks_insert_attrib(jin_video, "name", "video"); - iks_insert_attrib(jin_video, "creator", "initiator"); - //iks_insert_attrib(jin_video, "senders", "both"); - jin_video_desc = iks_insert(jin_video, "rtp:description"); - iks_insert_attrib(jin_video_desc, "xmlns:rtp", "urn:xmpp:jingle:apps:rtp:1"); - iks_insert_attrib(jin_video_desc, "media", "video"); - snprintf(tmp, sizeof(tmp), "%u", *video_ssrc); - iks_insert_attrib(jin_video_desc, "ssrc", tmp); - tp = iks_insert(jin_video, "p:transport"); - iks_insert_attrib(tp, "xmlns:p", "http://www.google.com/transport/p2p"); - - } - - break; - } - } - - - if ((session->handle->flags & LDL_FLAG_JINGLE)) { - jin_audio = iks_insert(jingle, "jin:content"); - iks_insert_attrib(jin_audio, "name", "audio"); - iks_insert_attrib(jin_audio, "creator", "initiator"); - //iks_insert_attrib(jin_audio, "senders", "both"); - jin_audio_desc = iks_insert(jin_audio, "rtp:description"); - iks_insert_attrib(jin_audio_desc, "xmlns:rtp", "urn:xmpp:jingle:apps:rtp:1"); - iks_insert_attrib(jin_audio_desc, "media", "audio"); - snprintf(tmp, sizeof(tmp), "%u", *audio_ssrc); - iks_insert_attrib(jin_audio_desc, "ssrc", tmp); - tp = iks_insert(jin_audio, "p:transport"); - iks_insert_attrib(tp, "xmlns:p", "http://www.google.com/transport/p2p"); - } - - if (compat) { - - if (video_call) { - tag = iks_insert(sess, "vid:description"); - iks_insert_attrib(tag, "xmlns:vid", "http://www.google.com/session/video"); - } else { - tag = iks_insert(sess, "pho:description"); - iks_insert_attrib(tag, "xmlns:pho", "http://www.google.com/session/phone"); - } - - if (video_call) { - - for (x = 0; x < plen; x++) { - char idbuf[80]; - - if (payloads[x].type != LDL_PAYLOAD_VIDEO) { - continue; - } - - sprintf(idbuf, "%d", payloads[x].id); - - - payload = iks_insert(tag, "vid:payload-type"); - - iks_insert_attrib(payload, "id", idbuf); - iks_insert_attrib(payload, "name", payloads[x].name); - - if (payloads[x].type == LDL_PAYLOAD_VIDEO && video_call) { - if (payloads[x].width) { - sprintf(idbuf, "%d", payloads[x].width); - iks_insert_attrib(payload, "width", idbuf); - } - if (payloads[x].height) { - sprintf(idbuf, "%d", payloads[x].height); - iks_insert_attrib(payload, "height", idbuf); - } - if (payloads[x].framerate) { - sprintf(idbuf, "%d", payloads[x].framerate); - iks_insert_attrib(payload, "framerate", idbuf); - } - } - - } - - - //if (vid_mux) { - // iks_insert(tag, "rtcp-mux"); - //} - - //payload = iks_insert(tag, "vid:src-id"); - //iks_insert_cdata(payload, "123456789", 0); - - - //iks_insert_attrib(payload, "xmlns:rtp", "urn:xmpp:jingle:apps:rtp:1"); - //iks_insert(payload, "vid:usage"); - } - } - - for (x = 0; x < plen; x++) { - char idbuf[80]; - - if (payloads[x].type == LDL_PAYLOAD_VIDEO && !video_call) { - continue; - } - - sprintf(idbuf, "%d", payloads[x].id); - - if (payloads[x].type == LDL_PAYLOAD_AUDIO) { - - if ((session->handle->flags & LDL_FLAG_JINGLE)) { - char ratebuf[80]; - char buf[80]; - iks *param; - - jpayload = iks_insert(jin_audio_desc, "rtp:payload-type"); - iks_insert_attrib(jpayload, "id", idbuf); - sprintf(ratebuf, "%d", payloads[x].rate); - iks_insert_attrib(jpayload, "name", payloads[x].name); - iks_insert_attrib(jpayload, "clockrate", ratebuf); - param = iks_insert(jpayload, "rtp:parameter"); - iks_insert_attrib(param, "name", "bitrate"); - sprintf(buf, "%d", payloads[x].bps); - iks_insert_attrib(param, "value", buf); - - sprintf(buf, "%d", payloads[x].ptime); - iks_insert_attrib(jpayload, "ptime", ratebuf); - iks_insert_attrib(jpayload, "maxptime", ratebuf); - - } - - } else if (payloads[x].type == LDL_PAYLOAD_VIDEO && video_call) { - - if ((session->handle->flags & LDL_FLAG_JINGLE)) { - char buf[80]; - iks *param; - - jpayload = iks_insert(jin_video_desc, "rtp:payload-type"); - iks_insert_attrib(jpayload, "id", idbuf); - iks_insert_attrib(jpayload, "name", payloads[x].name); - param = iks_insert(jpayload, "rtp:parameter"); - iks_insert_attrib(param, "name", "width"); - sprintf(buf, "%d", payloads[x].width); - iks_insert_attrib(param, "value", buf); - - - param = iks_insert(jpayload, "rtp:parameter"); - iks_insert_attrib(param, "name", "height"); - sprintf(buf, "%d", payloads[x].height); - iks_insert_attrib(param, "value", buf); - - param = iks_insert(jpayload, "rtp:parameter"); - iks_insert_attrib(param, "name", "framerate"); - sprintf(buf, "%d", payloads[x].framerate); - iks_insert_attrib(param, "value", buf); - - } - } - - if (compat) { - - if (payloads[x].type == LDL_PAYLOAD_AUDIO) { - - payload = iks_insert(tag, "pho:payload-type"); - - iks_insert_attrib(payload, "id", idbuf); - iks_insert_attrib(payload, "name", payloads[x].name); - - if (payloads[x].rate) { - sprintf(idbuf, "%d", payloads[x].rate); - iks_insert_attrib(payload, "clockrate", idbuf); - } - - if (payloads[x].bps) { - sprintf(idbuf, "%d", payloads[x].bps); - iks_insert_attrib(payload, "bitrate", idbuf); - } - - iks_insert_attrib(payload, "xmlns:pho", "http://www.google.com/session/phone"); - } - } - //if (payloads[x].id == 34) payloads[x].id = 98; /* XXX */ - - } - - if ((session->handle->flags & LDL_FLAG_JINGLE)) { - if (jin_video_desc && video_crypto_data) { - payload = iks_insert(jin_video_desc, "rtp:encryption"); - crypto = iks_insert(payload, "rtp:crypto"); - iks_insert_attrib(crypto, "crypto-suite", video_crypto_data->suite); - iks_insert_attrib(crypto, "key-params", video_crypto_data->key); - iks_insert_attrib(crypto, "tag", video_crypto_data->tag); - } - - - if (jin_audio_desc && audio_crypto_data) { - payload = iks_insert(jin_audio_desc, "rtp:encryption"); - crypto = iks_insert(payload, "rtp:crypto"); - iks_insert_attrib(crypto, "crypto-suite", audio_crypto_data->suite); - iks_insert_attrib(crypto, "key-params", audio_crypto_data->key); - iks_insert_attrib(crypto, "tag", audio_crypto_data->tag); - } - } - - //if (aud_mux) { - // iks_insert(tag, "rtcp-mux"); - //} - - //payload = iks_insert(tag, "pho:src-id"); - //iks_insert_cdata(payload, "987654321", 0); - //iks_insert_attrib(payload, "xmlns:pho", "http://www.google.com/session/phone"); - - //payload = iks_insert(tag, "rtp:encryption"); - //iks_insert_attrib(payload, "xmlns:rtp", "urn:xmpp:jingle:apps:rtp:1"); - //u = iks_insert(payload, "pho:usage"); - //iks_insert_attrib(u, "xmlns:pho", "http://www.google.com/session/phone"); - -#if 0 - if (description == LDL_DESCRIPTION_INITIATE) { - tp = iks_insert (sess, "transport"); - iks_insert_attrib(tp, "xmlns", "http://www.google.com/transport/p2p"); - } -#endif - - - schedule_packet(session->handle, id, iq, LDL_RETRY); - - return id; -} - -ldl_state_t ldl_session_get_state(ldl_session_t *session) -{ - return session->state; -} - -ldl_status ldl_session_get_candidates(ldl_session_t *session, ldl_transport_type_t tport, ldl_candidate_t **candidates, unsigned int *len) -{ - assert(tport < LDL_TPORT_MAX); - - if (session->candidate_len[tport]) { - *candidates = session->candidates[tport]; - *len = session->candidate_len[tport]; - return LDL_STATUS_SUCCESS; - } else { - *candidates = NULL; - *len = 0; - return LDL_STATUS_FALSE; - } -} - -ldl_status ldl_session_get_payloads(ldl_session_t *session, ldl_payload_t **payloads, unsigned int *len) -{ - if (session->payload_len) { - *payloads = session->payloads; - *len = session->payload_len; - return LDL_STATUS_SUCCESS; - } else { - *payloads = NULL; - *len = 0; - return LDL_STATUS_FALSE; - } -} - -ldl_status ldl_global_terminate(void) -{ - if (globals.flag_mutex) { - ldl_clear_flag_locked((&globals), LDL_FLAG_READY); - } else { - ldl_clear_flag((&globals), LDL_FLAG_READY); - } - return LDL_STATUS_SUCCESS; -} - -ldl_status ldl_global_init(int debug) -{ - if (ldl_test_flag((&globals), LDL_FLAG_INIT)) { - return LDL_STATUS_FALSE; - } - - if (apr_initialize() != LDL_STATUS_SUCCESS) { - apr_terminate(); - return LDL_STATUS_MEMERR; - } - - memset(&globals, 0, sizeof(globals)); - - if (apr_pool_create(&globals.memory_pool, NULL) != LDL_STATUS_SUCCESS) { - globals.logger(DL_LOG_CRIT, "Could not allocate memory pool\n"); - return LDL_STATUS_MEMERR; - } - - apr_thread_mutex_create(&globals.flag_mutex, APR_THREAD_MUTEX_NESTED, globals.memory_pool); - globals.log_stream = stdout; - globals.debug = debug; - globals.id = 300; - globals.logger = default_logger; - globals.avatar_hash = apr_hash_make(globals.memory_pool); - ldl_set_flag_locked((&globals), LDL_FLAG_INIT); - ldl_set_flag_locked((&globals), LDL_FLAG_READY); - - return LDL_STATUS_SUCCESS; -} - -ldl_status ldl_global_destroy(void) -{ - if (!ldl_test_flag(&globals, LDL_FLAG_INIT)) { - return LDL_STATUS_FALSE; - } - - apr_pool_destroy(globals.memory_pool); - ldl_clear_flag(&globals, LDL_FLAG_INIT); - apr_terminate(); - - return LDL_STATUS_SUCCESS; -} - -void ldl_global_set_log_stream(FILE *log_stream) -{ - assert(ldl_test_flag(&globals, LDL_FLAG_INIT)); - - globals.log_stream = log_stream; -} - -int8_t ldl_handle_ready(ldl_handle_t *handle) -{ - return (int8_t) (ldl_test_flag(handle, LDL_FLAG_RUNNING) && ldl_test_flag((&globals), LDL_FLAG_READY)); -} - -ldl_status ldl_handle_init(ldl_handle_t **handle, - char *login, - char *password, - char *server, - ldl_user_flag_t flags, - char *status_msg, - char *priority, - ldl_loop_callback_t loop_callback, - ldl_session_callback_t session_callback, - ldl_response_callback_t response_callback, - void *private_info) -{ - apr_pool_t *pool; - assert(ldl_test_flag(&globals, LDL_FLAG_INIT)); - *handle = NULL; - - if ((apr_pool_create(&pool, globals.memory_pool)) != LDL_STATUS_SUCCESS) { - return LDL_STATUS_MEMERR; - } - - if (!login) { - globals.logger(DL_LOG_ERR, "No login supplied!\n"); - return LDL_STATUS_FALSE; - } - - if (!password) { - globals.logger(DL_LOG_ERR, "No password supplied!\n"); - return LDL_STATUS_FALSE; - } - - - if ((*handle = apr_palloc(pool, sizeof(ldl_handle_t)))) { - ldl_handle_t *new_handle = *handle; - memset(new_handle, 0, sizeof(ldl_handle_t)); - new_handle->log_stream = globals.log_stream; - new_handle->login = apr_pstrdup(pool, login); - new_handle->password = apr_pstrdup(pool, password); - - if (server) { - char *p; - - new_handle->server = apr_pstrdup(pool, server); - if ((p = strchr(new_handle->server, ':'))) { - *p++ = '\0'; - new_handle->port = (uint16_t)atoi(p); - } - } - - if (status_msg) { - new_handle->status_msg = apr_pstrdup(pool, status_msg); - } - - if (priority) { - new_handle->priority = apr_pstrdup(pool, priority); - } - - if (loop_callback) { - new_handle->loop_callback = loop_callback; - } - - if (session_callback) { - new_handle->session_callback = session_callback; - } - - if (response_callback) { - new_handle->response_callback = response_callback; - } - - new_handle->private_info = private_info; - new_handle->pool = pool; - new_handle->flags |= flags; - apr_queue_create(&new_handle->queue, LDL_HANDLE_QLEN, new_handle->pool); - apr_queue_create(&new_handle->retry_queue, LDL_HANDLE_QLEN, new_handle->pool); - new_handle->features |= IKS_STREAM_BIND|IKS_STREAM_SESSION; - - if (new_handle->flags & LDL_FLAG_SASL_PLAIN) { - new_handle->features |= IKS_STREAM_SASL_PLAIN; - } else if (new_handle->flags & LDL_FLAG_SASL_MD5) { - new_handle->features |= IKS_STREAM_SASL_MD5; - } - - new_handle->sessions = apr_hash_make(new_handle->pool); - new_handle->retry_hash = apr_hash_make(new_handle->pool); - new_handle->probe_hash = apr_hash_make(new_handle->pool); - new_handle->sub_hash = apr_hash_make(new_handle->pool); - apr_thread_mutex_create(&new_handle->lock, APR_THREAD_MUTEX_NESTED, new_handle->pool); - apr_thread_mutex_create(&new_handle->flag_mutex, APR_THREAD_MUTEX_NESTED, new_handle->pool); - - return LDL_STATUS_SUCCESS; - } - - return LDL_STATUS_FALSE; -} - -void ldl_handle_run(ldl_handle_t *handle) -{ - ldl_clear_flag_locked(handle, LDL_FLAG_STOPPED); - ldl_set_flag_locked(handle, LDL_FLAG_RUNNING); - xmpp_connect(handle, handle->login, handle->password); - ldl_clear_flag_locked(handle, LDL_FLAG_RUNNING); -} - -int ldl_handle_running(ldl_handle_t *handle) -{ - return ldl_test_flag(handle, LDL_FLAG_RUNNING) ? 1 : 0; -} - - -void ldl_session_set_gateway(ldl_session_t *session) -{ - ldl_set_flag(session, LDL_FLAG_GATEWAY); -} - -int ldl_session_gateway(ldl_session_t *session) -{ - return ldl_test_flag(session, LDL_FLAG_GATEWAY) ? 1 : 0; -} - -int ldl_handle_connected(ldl_handle_t *handle) -{ - return ldl_test_flag(handle, LDL_FLAG_CONNECTED) ? 1 : 0; -} - -int ldl_handle_authorized(ldl_handle_t *handle) -{ - return ldl_test_flag(handle, LDL_FLAG_AUTHORIZED) ? 1 : 0; -} - -void ldl_handle_stop(ldl_handle_t *handle) -{ - ldl_clear_flag_locked(handle, LDL_FLAG_RUNNING); -#if 0 - if (ldl_test_flag(handle, LDL_FLAG_TLS)) { - int fd; - if ((fd = iks_fd(handle->parser)) > -1) { - shutdown(fd, 0x02); - } - } -#endif - - while(!ldl_test_flag(handle, LDL_FLAG_STOPPED)) { - microsleep(100); - } - -} - -ldl_status ldl_handle_destroy(ldl_handle_t **handle) -{ - apr_pool_t *pool = (*handle)->pool; - - ldl_handle_stop(*handle); - ldl_flush_queue(*handle, 1); - - - apr_pool_destroy(pool); - *handle = NULL; - return LDL_STATUS_SUCCESS; -} - - -void ldl_handle_set_log_stream(ldl_handle_t *handle, FILE *log_stream) -{ - assert(ldl_test_flag(&globals, LDL_FLAG_INIT)); - - handle->log_stream = log_stream; -} - -/* For Emacs: - * Local Variables: - * mode:c - * indent-tabs-mode:t - * tab-width:4 - * c-basic-offset:4 - * End: - * For VIM: - * vim:set softtabstop=4 shiftwidth=4 tabstop=4 noet: - */ diff --git a/libs/libdingaling/src/libdingaling.h b/libs/libdingaling/src/libdingaling.h deleted file mode 100644 index 05fafc6da99..00000000000 --- a/libs/libdingaling/src/libdingaling.h +++ /dev/null @@ -1,751 +0,0 @@ -/* - * libDingaLing XMPP Jingle Library - * Copyright (C) 2005-2014, Anthony Minessale II - * - * Version: MPL 1.1 - * - * The contents of this file are subject to the Mozilla Public License Version - * 1.1 (the "License"); you may not use this file except in compliance with - * the License. You may obtain a copy of the License at - * http://www.mozilla.org/MPL/ - * - * Software distributed under the License is distributed on an "AS IS" basis, - * WITHOUT WARRANTY OF ANY KIND, either express or implied. See the License - * for the specific language governing rights and limitations under the - * License. - * - * The Original Code is libDingaLing XMPP Jingle Library - * - * The Initial Developer of the Original Code is - * Anthony Minessale II - * Portions created by the Initial Developer are Copyright (C) - * the Initial Developer. All Rights Reserved. - * - * Contributor(s): - * - * Anthony Minessale II - * - * libdingaling.h -- Main Header File - * - */ - -/*! \file libdingaling.h - \brief Main Header File -*/ - -/*! - \defgroup core1 libDingaLing Library - \ingroup LIBDINGALING - \{ -*/ -/* OMG */ -#ifdef _MSC_VER -#define __LDL_FUNC__ __FUNCTION__ -#define inline __inline -#else -#define __LDL_FUNC__ (const char *)__func__ -#endif - -#ifndef LIBDINGALING_H -#define LIBDINGALING_H -#ifdef __cplusplus -extern "C" { -#endif -#ifdef __STUPIDFORMATBUG__ -} -#endif - -#if defined (__SVR4) && defined (__sun) -#define __EXTENSIONS__ 1 -#include -#endif - -#define LDL_HANDLE_QLEN 2000 -#define LDL_MAX_CANDIDATES 25 -#define LDL_MAX_PAYLOADS 50 -#define LDL_RETRY 3 -#define IKS_NS_COMPONENT "jabber:component:accept" -/* period between keep alive signals in 1sec units*/ -#define LDL_KEEPALIVE_TIMEOUT 300 - -typedef struct ldl_crypto_data_s { - char *tag; - char *suite; - char *key; -} ldl_crypto_data_t; - -/*! \brief A structure to store a jingle candidate */ -struct ldl_candidate { - /*! the transport id of the candidate */ - char *tid; - /*! the name of the candidate */ - char *name; - /*! the type of the candidate */ - char *type; - /*! the protocol of the candidate */ - char *protocol; - /*! the STUN username of the candidate */ - char *username; - /*! the STUN password of the candidate */ - char *password; - /*! the ip address of the candidate */ - char *address; - /*! the stun/rtp port of the candidate */ - uint16_t port; - /*! the preference level of the candidate */ - double pref; -}; -typedef struct ldl_candidate ldl_candidate_t; - -typedef enum { - LDL_PAYLOAD_AUDIO, - LDL_PAYLOAD_VIDEO -} ldl_payload_type_t; - -/*! \brief A structure to store a jingle audio payload */ -struct ldl_payload { - /*! the type of the payload */ - ldl_payload_type_t type; - /*! the iana name of the payload type */ - char *name; - /*! the iana id of the payload type */ - unsigned int id; - - /* Audio */ - - /*! the transfer rate of the payload type */ - unsigned int rate; - /*! the bits per second of the payload type */ - unsigned int bps; - - /* Video */ - - /*! the width of the video payload type */ - unsigned int width; - /*! the width of the video payload type */ - unsigned int height; - /*! the framerate of the video payload type */ - unsigned int framerate; - - unsigned int ptime; -}; -typedef struct ldl_payload ldl_payload_t; - - -enum ldl_transport_type { - LDL_TPORT_RTP, - LDL_TPORT_VIDEO_RTP, - LDL_TPORT_RTCP, - LDL_TPORT_VIDEO_RTCP, - - /* Nothing below that line */ - LDL_TPORT_MAX -}; -typedef enum ldl_transport_type ldl_transport_type_t; - -static inline const char *ldl_transport_type_str(ldl_transport_type_t type) -{ - static const char *name[] = { "rtp", "video_rtp", "rtcp", "video_rtcp" }; - return type >= LDL_TPORT_MAX ? NULL : name[type]; -} - -static inline ldl_transport_type_t ldl_transport_type_parse(const char *type) { - if (!strcasecmp(type, "rtp")) { - return LDL_TPORT_RTP; - } else if (!strcasecmp(type, "rtcp")) { - return LDL_TPORT_RTCP; - } else if (!strcasecmp(type, "video_rtp")) { - return LDL_TPORT_VIDEO_RTP; - } else if (!strcasecmp(type, "video_rtcp")) { - return LDL_TPORT_VIDEO_RTCP; - } else { - return LDL_TPORT_MAX; - } -} - -#if 0 -/*! \brief A structure to store a jingle video payload */ -struct ldl_vpayload { - /*! the iana name of the video payload type */ - char *name; - /*! the iana id of the video payload type */ - unsigned int id; - /*! the width of the video payload type */ - unsigned int width; - /*! the width of the video payload type */ - unsigned int height; - /*! the framerate of the video payload type */ - unsigned int framerate; -}; -typedef struct ldl_vpayload ldl_vpayload_t; -#endif - -struct ldl_handle; -typedef struct ldl_handle ldl_handle_t; - -struct ldl_session; -typedef struct ldl_session ldl_session_t; - -typedef enum { - LDL_STATUS_SUCCESS, - LDL_STATUS_FALSE, - LDL_STATUS_MEMERR, -} ldl_status; - -typedef enum { - LDL_FLAG_INIT = (1 << 0), - LDL_FLAG_RUNNING = (1 << 1), - LDL_FLAG_AUTHORIZED = (1 << 2), - LDL_FLAG_READY = (1 << 3), - LDL_FLAG_CONNECTED = (1 << 4), - LDL_FLAG_STOPPED = (1 << 5), - LDL_FLAG_BREAK = (1 << 6) -} ldl_flag_t; - -typedef enum { - LDL_FLAG_NONE = 0, - LDL_FLAG_TLS = (1 << 10), - LDL_FLAG_SASL_PLAIN = (1 << 11), - LDL_FLAG_SASL_MD5 = (1 << 12), - LDL_FLAG_COMPONENT = (1 << 13), - LDL_FLAG_OUTBOUND = (1 << 14), - LDL_FLAG_GATEWAY = (1 << 15), - LDL_FLAG_JINGLE = (1 << 16) -} ldl_user_flag_t; - -typedef enum { - LDL_SIGNAL_NONE, - LDL_SIGNAL_INITIATE, - LDL_SIGNAL_CANDIDATES, - LDL_SIGNAL_MSG, - LDL_SIGNAL_PRESENCE_IN, - LDL_SIGNAL_PRESENCE_OUT, - LDL_SIGNAL_PRESENCE_PROBE, - LDL_SIGNAL_ROSTER, - LDL_SIGNAL_SUBSCRIBE, - LDL_SIGNAL_UNSUBSCRIBE, - LDL_SIGNAL_VCARD, - LDL_SIGNAL_TERMINATE, - LDL_SIGNAL_ERROR, - LDL_SIGNAL_LOGIN_SUCCESS, - LDL_SIGNAL_LOGIN_FAILURE, - LDL_SIGNAL_CONNECTED, - LDL_SIGNAL_TRANSPORT_ACCEPT, - LDL_SIGNAL_REJECT, - LDL_SIGNAL_REDIRECT -} ldl_signal_t; - -typedef enum { - LDL_REPLY_ACK, - LDL_REPLY_NACK, -} ldl_reply_t; - -typedef enum { - LDL_STATE_NEW, - LDL_STATE_ANSWERED, - LDL_STATE_DESTROYED, -} ldl_state_t; - -typedef enum { - LDL_DESCRIPTION_INITIATE, - LDL_DESCRIPTION_ACCEPT -} ldl_description_t; - -typedef enum { - LDL_QUEUE_NONE, - LDL_QUEUE_SENT -} ldl_queue_t; - -#define DL_PRE __FILE__, __LDL_FUNC__, __LINE__ -#define DL_LOG_DEBUG DL_PRE, 7 -#define DL_LOG_INFO DL_PRE, 6 -#define DL_LOG_NOTICE DL_PRE, 5 -#define DL_LOG_WARNING DL_PRE, 4 -#define DL_LOG_ERR DL_PRE, 3 -#define DL_LOG_CRIT DL_PRE, 2 -#define DL_LOG_ALERT DL_PRE, 1 -#define DL_LOG_EMERG DL_PRE, 0 - -typedef ldl_status (*ldl_loop_callback_t)(ldl_handle_t *); -typedef ldl_status (*ldl_session_callback_t)(ldl_handle_t *, ldl_session_t *, ldl_signal_t, char *, char *, char *, char *); -typedef ldl_status (*ldl_response_callback_t)(ldl_handle_t *, char *); -typedef void (*ldl_logger_t)(char *file, const char *func, int line, int level, char *fmt, ...); - -#define ldl_yield(ms) apr_sleep(ms * 10); apr_thread_yield(); - -/*! - \brief Test for a common domain in 2 jid - \param id_a the first id - \param id_b the second id - \return 1 if the domains match 0 if they dont or -1 if either id is invalid - \note the id may or may not contain a user and/or resource -*/ -static inline int ldl_jid_domcmp(char *id_a, char *id_b) -{ - char *id_a_host, *id_b_host, *id_a_r, *id_b_r; - - id_a_host = strchr(id_a, '@'); - if (id_a_host) { - id_a_host++; - } else { - id_a_host = id_a; - } - - id_b_host = strchr(id_b, '@'); - if (id_b_host) { - id_b_host++; - } else { - id_b_host = id_b; - } - - if (id_a_host && id_b_host) { - size_t id_a_len = 0, id_b_len = 0, len = 0; - - id_a_r = strchr(id_a_host, '/'); - if (id_a_r) { - id_a_len = id_a_r - id_a_host; - } else { - id_a_len = strlen(id_a_host); - } - - id_b_r = strchr(id_b_host, '/'); - if (id_b_r) { - id_b_len = id_b_r - id_b_host; - } else { - id_b_len = strlen(id_b_host); - } - - if (id_a_len > id_b_len) { - len = id_b_len; - } else { - len = id_a_len; - } - - return strncasecmp(id_a_host, id_b_host, len) ? 0 : 1; - } - return -1; -} - -/*! - \brief Test for the existance of a flag on an arbitary object - \param obj the object to test - \param flag the or'd list of flags to test - \return true value if the object has the flags defined -*/ -#define ldl_test_flag(obj, flag) ((obj)->flags & flag) - - -/*! - \brief Set a flag on an arbitrary object - \param obj the object to set the flags on - \param flag the or'd list of flags to set -*/ -#define ldl_set_flag(obj, flag) (obj)->flags |= (flag) - -/*! - \brief Clear a flag on an arbitrary object - \param obj the object to test - \param flag the or'd list of flags to clear -*/ -#define ldl_clear_flag(obj, flag) (obj)->flags &= ~(flag) - -/*! - \brief Set a flag on an arbitrary object while locked - \param obj the object to set the flags on - \param flag the or'd list of flags to set -*/ -#define ldl_set_flag_locked(obj, flag) assert(obj->flag_mutex != NULL);\ -apr_thread_mutex_lock(obj->flag_mutex);\ -(obj)->flags |= (flag);\ -apr_thread_mutex_unlock(obj->flag_mutex); - -/*! - \brief Clear a flag on an arbitrary object - \param obj the object to test - \param flag the or'd list of flags to clear -*/ -#define ldl_clear_flag_locked(obj, flag) apr_thread_mutex_lock(obj->flag_mutex); (obj)->flags &= ~(flag); apr_thread_mutex_unlock(obj->flag_mutex); - -/*! - \brief Copy flags from one arbitrary object to another - \param dest the object to copy the flags to - \param src the object to copy the flags from - \param flags the flags to copy -*/ -#define ldl_copy_flags(dest, src, flags) (dest)->flags &= ~(flags); (dest)->flags |= ((src)->flags & (flags)) - -/*! - \brief Test for NULL or zero length string - \param s the string to test - \return true value if the string is NULL or zero length -*/ -#define ldl_strlen_zero(s) (s && *s != '\0') ? 0 : 1 - -/*! - \brief Destroy a Jingle Session - \param session_p the session to destroy - \return SUCCESS OR FAILURE -*/ -ldl_status ldl_session_destroy(ldl_session_t **session_p); - -/*! - \brief Get a value from a session - \param session the session - \param key the key to look up - \return the value -*/ -char *ldl_session_get_value(ldl_session_t *session, char *key); - -/*! - \brief Set a value on a session - \param session the session - \param key the key to set - \param val the value of the key -*/ -void ldl_session_set_value(ldl_session_t *session, const char *key, const char *val); - -/*! - \brief Create a Jingle Session - \param session_p pointer to reference the session - \param handle handle to associate the session with - \param id the id to use for the session - \param them the id of the other end of the call - \param me the id of our end of the call - \param flags user flags - \return SUCCESS OR FAILURE -*/ -ldl_status ldl_session_create(ldl_session_t **session_p, ldl_handle_t *handle, char *id, char *them, char *me, ldl_user_flag_t flags); - -/*! - \brief get the id of a session - \param session the session to get the id of - \return the requested id -*/ -char *ldl_session_get_id(ldl_session_t *session); - -/*! - \brief Get the caller name of a session - \param session the session to get the caller from - \return the caller name -*/ -char *ldl_session_get_caller(ldl_session_t *session); - -/*! - \brief Get the callee name of a session - \param session the session to get the callee from - \return the callee name -*/ -char *ldl_session_get_callee(ldl_session_t *session); - -/*! - \brief Set the ip of a session - \param session the session to set the ip on - \param ip the ip -*/ -void ldl_session_set_ip(ldl_session_t *session, char *ip); - -/*! - \brief Get the ip of a session - \param session the session to get the ip from - \return the ip -*/ -char *ldl_session_get_ip(ldl_session_t *session); - -/*! - \brief Set a private pointer to associate with the session - \param session the session to set the data pointer to - \param private_data the data to associate -*/ -void ldl_session_set_private(ldl_session_t *session, void *private_data); - -/*! - \brief Get a private pointer from a session - \param session the session to get the data from - \return the data -*/ -void *ldl_session_get_private(ldl_session_t *session); - -/*! - \brief Accept a candidate - \param session the session to accept on - \param candidate the candidate to accept -*/ -void ldl_session_accept_candidate(ldl_session_t *session, ldl_candidate_t *candidate); - -/*! - \brief turn logging on/off - \param on (TRUE or FALSE) - \return current state -*/ -int ldl_global_debug(int on); - -/*! - \brief Set a custom logger - \param logger the logger function -*/ -void ldl_global_set_logger(ldl_logger_t logger); - -/*! - \brief Perform a probe on a given id to resolve the proper Jingle Resource - \param handle the connection handle to use. - \param id the id to probe - \param from the from string - \param buf a string to store the result - \param len the size in bytes of the string - \return a pointer to buf if a successful lookup was made otherwise NULL -*/ -char *ldl_handle_probe(ldl_handle_t *handle, char *id, char *from, char *buf, unsigned int len); - -/*! - \brief Perform a discovery on a given id to resolve the proper Jingle Resource - \param handle the connection handle to use. - \param id the id to probe - \param from the from string - \param buf a string to store the result - \param len the size in bytes of the string - \return a pointer to buf if a successful lookup was made otherwise NULL -*/ -char *ldl_handle_disco(ldl_handle_t *handle, char *id, char *from, char *buf, unsigned int len); - -/*! - \brief Signal a termination request on a given session - \param session the session to terminate - \return TRUE if the signal was sent. -*/ -unsigned int ldl_session_terminate(ldl_session_t *session); - -/*! - \brief Get the private data of a connection handle - \param handle the conection handle - \return the requested data -*/ -void *ldl_handle_get_private(ldl_handle_t *handle); - -/*! - \brief Get the full login of a connection handle - \param handle the conection handle - \return the requested data -*/ -char *ldl_handle_get_login(ldl_handle_t *handle); - -/*! - \brief Send a message to a session - \param session the session handle - \param subject optional subject - \param body body of the message -*/ -void ldl_session_send_msg(ldl_session_t *session, char *subject, char *body); - -/*! - \brief Send a presence notification to a target - \param handle the handle to send with - \param from the from address - \param to the to address - \param type the type of presence - \param rpid data for the icon - \param message a status message - \param avatar the path to an avatar image -*/ -void ldl_handle_send_presence(ldl_handle_t *handle, char *from, char *to, char *type, char *rpid, char *message, char *avatar); - -/*! - \brief Send a vcard - \param handle the handle to send with - \param from the from address - \param to the to address - \param id the request id - \param vcard the text xml of the vcard -*/ -void ldl_handle_send_vcard(ldl_handle_t *handle, char *from, char *to, char *id, char *vcard); - -/*! - \brief Send a message - \param handle the conection handle - \param from the message sender - \param to the message recipiant - \param subject optional subject - \param body body of the message -*/ -void ldl_handle_send_msg(ldl_handle_t *handle, char *from, char *to, const char *subject, const char *body); - -/*! - \brief Offer candidates to a potential session - \param session the session to send candidates on - \param candidates an array of candidate description objects - \param clen the number of elements in the candidates array - \return the message_id of the generated xmpp request -*/ -unsigned int ldl_session_candidates(ldl_session_t *session, - ldl_candidate_t *candidates, - unsigned int clen); - -unsigned int ldl_session_transport(ldl_session_t *session, - ldl_candidate_t *candidates, - unsigned int clen); - -/*! - \brief Initiate or Accept a new session and provide transport options - \param session the session to initiate or accept - \param payloads an array of payload description objects - \param plen the number of elements in the payloads array - \param description the type of description LDL_DESCRIPTION_INITIATE or LDL_DESCRIPTION_ACCEPT - \return the message_id of the generated xmpp request -*/ -unsigned int ldl_session_describe(ldl_session_t *session, - ldl_payload_t *payloads, - unsigned int plen, - ldl_description_t description, unsigned int *audio_ssrc, unsigned int *video_ssrc, - ldl_crypto_data_t *audio_crypto_data, ldl_crypto_data_t *video_crypto_data); - - -/*! - \brief get a session's state - \param session a session to get the state from - \return the state -*/ -ldl_state_t ldl_session_get_state(ldl_session_t *session); - - -/*! - \brief get the candidates - \param session the session - \param tport type of transport (rtp,rtcp,video_rtp,video_rtcp,etc.) - \param candidates pointer to point at array of the candidates - \param len the resulting len of the array pointer - \return success or failure -*/ -ldl_status ldl_session_get_candidates(ldl_session_t *session, ldl_transport_type_t tport, ldl_candidate_t **candidates, unsigned int *len); - -/*! - \brief get the payloads - \param session the session - \param payloads pointer to point at array of the payloads - \param len the resulting len of the array pointer - \return success or failure -*/ -ldl_status ldl_session_get_payloads(ldl_session_t *session, ldl_payload_t **payloads, unsigned int *len); - -/*! - \brief Initilize libDingaLing - \param debug debug level - \return success or failure -*/ -ldl_status ldl_global_init(int debug); - -/*! - \brief Destroy libDingaLing - \return success or failure -*/ -ldl_status ldl_global_destroy(void); - -/*! - \brief Set the log stream - \param log_stream the new log stream -*/ -void ldl_global_set_log_stream(FILE *log_stream); - -int8_t ldl_handle_ready(ldl_handle_t *handle); - -/*! - \brief Initilize a new libDingaLing handle - \param handle the Dingaling handle to initialize - \param login the xmpp login - \param password the password - \param server the server address - \param flags user flags - \param status_msg status message to advertise - \param loop_callback optional loop callback - \param session_callback function to call on session signalling - \param response_callback function to call on responses - \param private_info optional pointer to private data - \return success or failure -*/ -ldl_status ldl_handle_init(ldl_handle_t **handle, - char *login, - char *password, - char *server, - ldl_user_flag_t flags, - char *status_msg, - char *priority, - ldl_loop_callback_t loop_callback, - ldl_session_callback_t session_callback, - ldl_response_callback_t response_callback, - void *private_info); - -/*! - \brief Run a libDingaLing handle - \param handle the Dingaling handle to run -*/ -void ldl_handle_run(ldl_handle_t *handle); - -int ldl_session_gateway(ldl_session_t *handle); -void ldl_session_set_gateway(ldl_session_t *session); - -/*! - \brief Stop a libDingaLing handle - \param handle the Dingaling handle to stop -*/ -void ldl_handle_stop(ldl_handle_t *handle); - -int ldl_handle_running(ldl_handle_t *handle); -int ldl_handle_connected(ldl_handle_t *handle); -int ldl_handle_authorized(ldl_handle_t *handle); - - -/*! - \brief Destroy a libDingaLing handle - \param handle the Dingaling handle to destroy - \return success or failure -*/ -ldl_status ldl_handle_destroy(ldl_handle_t **handle); - -/*! - \brief Set the log stream on a handle - \param handle the Dingaling handle - \param log_stream the new log stream -*/ -void ldl_handle_set_log_stream(ldl_handle_t *handle, FILE *log_stream); - -ldl_status ldl_global_terminate(void); - -///\} - - -#ifdef __cplusplus -} -#endif -/** \mainpage libDingaling - * libDingaling - Cross Platform Jingle (Google Talk) voip signaling library - - * \section intro Introduction - * - * \section supports Supported Platforms - * libDingaling has been built on the following platforms: - * - * - Linux (x86, x86_64) - * - Windows (MSVC 2005) - * - Mac OS X (intel & ppc ) - * - * \section depends Dependencies - * libDingaling makes use of the following external libraries. - * - * - APR (http://apr.apache.org) - * - iksemel (http://iksemel.jabberstudio.org/) - * - * \section license Licensing - * - * libDingaling is licensed under the terms of the MPL 1.1 - * - */ -#endif - -/* For Emacs: - * Local Variables: - * mode:c - * indent-tabs-mode:t - * tab-width:4 - * c-basic-offset:4 - * End: - * For VIM: - * vim:set softtabstop=4 shiftwidth=4 tabstop=4 noet: - */ diff --git a/libs/libdingaling/src/sha1.c b/libs/libdingaling/src/sha1.c deleted file mode 100644 index 100ab0e5139..00000000000 --- a/libs/libdingaling/src/sha1.c +++ /dev/null @@ -1,639 +0,0 @@ -/*- - * Copyright (c) 2001-2003 Allan Saddi - * All rights reserved. - * - * Redistribution and use in source and binary forms, with or without - * modification, are permitted provided that the following conditions - * are met: - * 1. Redistributions of source code must retain the above copyright - * notice, this list of conditions and the following disclaimer. - * 2. Redistributions in binary form must reproduce the above copyright - * notice, this list of conditions and the following disclaimer in the - * documentation and/or other materials provided with the distribution. - * - * THIS SOFTWARE IS PROVIDED BY ALLAN SADDI AND HIS CONTRIBUTORS ``AS IS'' - * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE - * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE - * ARE DISCLAIMED. IN NO EVENT SHALL ALLAN SADDI OR HIS CONTRIBUTORS BE - * LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR - * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF - * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS - * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN - * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) - * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE - * POSSIBILITY OF SUCH DAMAGE. - * - * $Id: sha1.c 680 2003-07-25 21:57:38Z asaddi $ - */ - -/* - * Define WORDS_BIGENDIAN if compiling on a big-endian architecture. - * - * Define SHA1_TEST to test the implementation using the NIST's - * sample messages. The output should be: - * - * a9993e36 4706816a ba3e2571 7850c26c 9cd0d89d - * 84983e44 1c3bd26e baae4aa1 f95129e5 e54670f1 - * 34aa973c d4c4daa4 f61eeb2b dbad2731 6534016f - */ - -#ifdef HAVE_CONFIG_H -#include -#endif /* HAVE_CONFIG_H */ - -#if HAVE_INTTYPES_H -# include -#else -# if HAVE_STDINT_H -# include -# endif -#endif - -#ifdef _MSC_VER -#define inline __inline -#endif - -#include - -#include "sha1.h" - -#ifdef __clang__ -#pragma clang diagnostic push -#pragma clang diagnostic ignored "-Wunused-const-variable" -#endif - -#if 0 -static const char rcsid[] = - "$Id: sha1.c 680 2003-07-25 21:57:38Z asaddi $"; -#endif /* !lint */ - -#ifdef __clang__ -#pragma clang diagnostic pop -#endif - -#define ROTL(x, n) (((x) << (n)) | ((x) >> (32 - (n)))) -#define ROTR(x, n) (((x) >> (n)) | ((x) << (32 - (n)))) - -#define F_0_19(x, y, z) ((z) ^ ((x) & ((y) ^ (z)))) -#define F_20_39(x, y, z) ((x) ^ (y) ^ (z)) -#define F_40_59(x, y, z) (((x) & ((y) | (z))) | ((y) & (z))) -#define F_60_79(x, y, z) ((x) ^ (y) ^ (z)) - -#define DO_ROUND(F, K) { \ - temp = ROTL(a, 5) + F(b, c, d) + e + *(W++) + K; \ - e = d; \ - d = c; \ - c = ROTL(b, 30); \ - b = a; \ - a = temp; \ -} - -#define K_0_19 0x5a827999L -#define K_20_39 0x6ed9eba1L -#define K_40_59 0x8f1bbcdcL -#define K_60_79 0xca62c1d6L - -#ifndef RUNTIME_ENDIAN - -#ifdef WORDS_BIGENDIAN - -#define BYTESWAP(x) (x) -#define BYTESWAP64(x) (x) - -#else /* WORDS_BIGENDIAN */ - -#define BYTESWAP(x) ((ROTR((x), 8) & 0xff00ff00L) | \ - (ROTL((x), 8) & 0x00ff00ffL)) -#define BYTESWAP64(x) _byteswap64(x) - -static inline uint64_t _byteswap64(uint64_t x) -{ - uint32_t a = (uint32_t)(x >> 32); - uint32_t b = (uint32_t) x; - return ((uint64_t) BYTESWAP(b) << 32) | (uint64_t) BYTESWAP(a); -} - -#endif /* WORDS_BIGENDIAN */ - -#else /* !RUNTIME_ENDIAN */ - -#define BYTESWAP(x) _byteswap(sc->littleEndian, x) -#define BYTESWAP64(x) _byteswap64(sc->littleEndian, x) - -#define _BYTESWAP(x) ((ROTR((x), 8) & 0xff00ff00L) | \ - (ROTL((x), 8) & 0x00ff00ffL)) -#define _BYTESWAP64(x) __byteswap64(x) - -static inline uint64_t __byteswap64(uint64_t x) -{ - uint32_t a = x >> 32; - uint32_t b = (uint32_t) x; - return ((uint64_t) _BYTESWAP(b) << 32) | (uint64_t) _BYTESWAP(a); -} - -static inline uint32_t _byteswap(int littleEndian, uint32_t x) -{ - if (!littleEndian) - return x; - else - return _BYTESWAP(x); -} - -static inline uint64_t _byteswap64(int littleEndian, uint64_t x) -{ - if (!littleEndian) - return x; - else - return _BYTESWAP64(x); -} - -static inline void setEndian(int *littleEndianp) -{ - union { - uint32_t w; - uint8_t b[4]; - } endian; - - endian.w = 1L; - *littleEndianp = endian.b[0] != 0; -} - -#endif /* !RUNTIME_ENDIAN */ - -static const uint8_t padding[64] = { - 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 -}; - -void -SHA1Init (SHA1Context *sc) -{ -#ifdef RUNTIME_ENDIAN - setEndian (&sc->littleEndian); -#endif /* RUNTIME_ENDIAN */ - - sc->totalLength = 0LL; - sc->hash[0] = 0x67452301L; - sc->hash[1] = 0xefcdab89L; - sc->hash[2] = 0x98badcfeL; - sc->hash[3] = 0x10325476L; - sc->hash[4] = 0xc3d2e1f0L; - sc->bufferLength = 0L; -} - -static void -burnStack (int size) -{ - char buf[128]; - - memset (buf, 0, sizeof (buf)); - size -= sizeof (buf); - if (size > 0) - burnStack (size); -} - -static void -SHA1Guts (SHA1Context *sc, const uint32_t *cbuf) -{ - uint32_t buf[80]; - uint32_t *W, *W3, *W8, *W14, *W16; - uint32_t a, b, c, d, e, temp; - int i; - - W = buf; - - for (i = 15; i >= 0; i--) { - *(W++) = BYTESWAP(*cbuf); - cbuf++; - } - - W16 = &buf[0]; - W14 = &buf[2]; - W8 = &buf[8]; - W3 = &buf[13]; - - for (i = 63; i >= 0; i--) { - *W = *(W3++) ^ *(W8++) ^ *(W14++) ^ *(W16++); - *W = ROTL(*W, 1); - W++; - } - - a = sc->hash[0]; - b = sc->hash[1]; - c = sc->hash[2]; - d = sc->hash[3]; - e = sc->hash[4]; - - W = buf; - -#ifndef SHA1_UNROLL -#define SHA1_UNROLL 20 -#endif /* !SHA1_UNROLL */ - -#if SHA1_UNROLL == 1 - for (i = 19; i >= 0; i--) - DO_ROUND(F_0_19, K_0_19); - - for (i = 19; i >= 0; i--) - DO_ROUND(F_20_39, K_20_39); - - for (i = 19; i >= 0; i--) - DO_ROUND(F_40_59, K_40_59); - - for (i = 19; i >= 0; i--) - DO_ROUND(F_60_79, K_60_79); -#elif SHA1_UNROLL == 2 - for (i = 9; i >= 0; i--) { - DO_ROUND(F_0_19, K_0_19); - DO_ROUND(F_0_19, K_0_19); - } - - for (i = 9; i >= 0; i--) { - DO_ROUND(F_20_39, K_20_39); - DO_ROUND(F_20_39, K_20_39); - } - - for (i = 9; i >= 0; i--) { - DO_ROUND(F_40_59, K_40_59); - DO_ROUND(F_40_59, K_40_59); - } - - for (i = 9; i >= 0; i--) { - DO_ROUND(F_60_79, K_60_79); - DO_ROUND(F_60_79, K_60_79); - } -#elif SHA1_UNROLL == 4 - for (i = 4; i >= 0; i--) { - DO_ROUND(F_0_19, K_0_19); - DO_ROUND(F_0_19, K_0_19); - DO_ROUND(F_0_19, K_0_19); - DO_ROUND(F_0_19, K_0_19); - } - - for (i = 4; i >= 0; i--) { - DO_ROUND(F_20_39, K_20_39); - DO_ROUND(F_20_39, K_20_39); - DO_ROUND(F_20_39, K_20_39); - DO_ROUND(F_20_39, K_20_39); - } - - for (i = 4; i >= 0; i--) { - DO_ROUND(F_40_59, K_40_59); - DO_ROUND(F_40_59, K_40_59); - DO_ROUND(F_40_59, K_40_59); - DO_ROUND(F_40_59, K_40_59); - } - - for (i = 4; i >= 0; i--) { - DO_ROUND(F_60_79, K_60_79); - DO_ROUND(F_60_79, K_60_79); - DO_ROUND(F_60_79, K_60_79); - DO_ROUND(F_60_79, K_60_79); - } -#elif SHA1_UNROLL == 5 - for (i = 3; i >= 0; i--) { - DO_ROUND(F_0_19, K_0_19); - DO_ROUND(F_0_19, K_0_19); - DO_ROUND(F_0_19, K_0_19); - DO_ROUND(F_0_19, K_0_19); - DO_ROUND(F_0_19, K_0_19); - } - - for (i = 3; i >= 0; i--) { - DO_ROUND(F_20_39, K_20_39); - DO_ROUND(F_20_39, K_20_39); - DO_ROUND(F_20_39, K_20_39); - DO_ROUND(F_20_39, K_20_39); - DO_ROUND(F_20_39, K_20_39); - } - - for (i = 3; i >= 0; i--) { - DO_ROUND(F_40_59, K_40_59); - DO_ROUND(F_40_59, K_40_59); - DO_ROUND(F_40_59, K_40_59); - DO_ROUND(F_40_59, K_40_59); - DO_ROUND(F_40_59, K_40_59); - } - - for (i = 3; i >= 0; i--) { - DO_ROUND(F_60_79, K_60_79); - DO_ROUND(F_60_79, K_60_79); - DO_ROUND(F_60_79, K_60_79); - DO_ROUND(F_60_79, K_60_79); - DO_ROUND(F_60_79, K_60_79); - } -#elif SHA1_UNROLL == 10 - for (i = 1; i >= 0; i--) { - DO_ROUND(F_0_19, K_0_19); - DO_ROUND(F_0_19, K_0_19); - DO_ROUND(F_0_19, K_0_19); - DO_ROUND(F_0_19, K_0_19); - DO_ROUND(F_0_19, K_0_19); - DO_ROUND(F_0_19, K_0_19); - DO_ROUND(F_0_19, K_0_19); - DO_ROUND(F_0_19, K_0_19); - DO_ROUND(F_0_19, K_0_19); - DO_ROUND(F_0_19, K_0_19); - } - - for (i = 1; i >= 0; i--) { - DO_ROUND(F_20_39, K_20_39); - DO_ROUND(F_20_39, K_20_39); - DO_ROUND(F_20_39, K_20_39); - DO_ROUND(F_20_39, K_20_39); - DO_ROUND(F_20_39, K_20_39); - DO_ROUND(F_20_39, K_20_39); - DO_ROUND(F_20_39, K_20_39); - DO_ROUND(F_20_39, K_20_39); - DO_ROUND(F_20_39, K_20_39); - DO_ROUND(F_20_39, K_20_39); - } - - for (i = 1; i >= 0; i--) { - DO_ROUND(F_40_59, K_40_59); - DO_ROUND(F_40_59, K_40_59); - DO_ROUND(F_40_59, K_40_59); - DO_ROUND(F_40_59, K_40_59); - DO_ROUND(F_40_59, K_40_59); - DO_ROUND(F_40_59, K_40_59); - DO_ROUND(F_40_59, K_40_59); - DO_ROUND(F_40_59, K_40_59); - DO_ROUND(F_40_59, K_40_59); - DO_ROUND(F_40_59, K_40_59); - } - - for (i = 1; i >= 0; i--) { - DO_ROUND(F_60_79, K_60_79); - DO_ROUND(F_60_79, K_60_79); - DO_ROUND(F_60_79, K_60_79); - DO_ROUND(F_60_79, K_60_79); - DO_ROUND(F_60_79, K_60_79); - DO_ROUND(F_60_79, K_60_79); - DO_ROUND(F_60_79, K_60_79); - DO_ROUND(F_60_79, K_60_79); - DO_ROUND(F_60_79, K_60_79); - DO_ROUND(F_60_79, K_60_79); - } -#elif SHA1_UNROLL == 20 - DO_ROUND(F_0_19, K_0_19); - DO_ROUND(F_0_19, K_0_19); - DO_ROUND(F_0_19, K_0_19); - DO_ROUND(F_0_19, K_0_19); - DO_ROUND(F_0_19, K_0_19); - DO_ROUND(F_0_19, K_0_19); - DO_ROUND(F_0_19, K_0_19); - DO_ROUND(F_0_19, K_0_19); - DO_ROUND(F_0_19, K_0_19); - DO_ROUND(F_0_19, K_0_19); - DO_ROUND(F_0_19, K_0_19); - DO_ROUND(F_0_19, K_0_19); - DO_ROUND(F_0_19, K_0_19); - DO_ROUND(F_0_19, K_0_19); - DO_ROUND(F_0_19, K_0_19); - DO_ROUND(F_0_19, K_0_19); - DO_ROUND(F_0_19, K_0_19); - DO_ROUND(F_0_19, K_0_19); - DO_ROUND(F_0_19, K_0_19); - DO_ROUND(F_0_19, K_0_19); - - DO_ROUND(F_20_39, K_20_39); - DO_ROUND(F_20_39, K_20_39); - DO_ROUND(F_20_39, K_20_39); - DO_ROUND(F_20_39, K_20_39); - DO_ROUND(F_20_39, K_20_39); - DO_ROUND(F_20_39, K_20_39); - DO_ROUND(F_20_39, K_20_39); - DO_ROUND(F_20_39, K_20_39); - DO_ROUND(F_20_39, K_20_39); - DO_ROUND(F_20_39, K_20_39); - DO_ROUND(F_20_39, K_20_39); - DO_ROUND(F_20_39, K_20_39); - DO_ROUND(F_20_39, K_20_39); - DO_ROUND(F_20_39, K_20_39); - DO_ROUND(F_20_39, K_20_39); - DO_ROUND(F_20_39, K_20_39); - DO_ROUND(F_20_39, K_20_39); - DO_ROUND(F_20_39, K_20_39); - DO_ROUND(F_20_39, K_20_39); - DO_ROUND(F_20_39, K_20_39); - - DO_ROUND(F_40_59, K_40_59); - DO_ROUND(F_40_59, K_40_59); - DO_ROUND(F_40_59, K_40_59); - DO_ROUND(F_40_59, K_40_59); - DO_ROUND(F_40_59, K_40_59); - DO_ROUND(F_40_59, K_40_59); - DO_ROUND(F_40_59, K_40_59); - DO_ROUND(F_40_59, K_40_59); - DO_ROUND(F_40_59, K_40_59); - DO_ROUND(F_40_59, K_40_59); - DO_ROUND(F_40_59, K_40_59); - DO_ROUND(F_40_59, K_40_59); - DO_ROUND(F_40_59, K_40_59); - DO_ROUND(F_40_59, K_40_59); - DO_ROUND(F_40_59, K_40_59); - DO_ROUND(F_40_59, K_40_59); - DO_ROUND(F_40_59, K_40_59); - DO_ROUND(F_40_59, K_40_59); - DO_ROUND(F_40_59, K_40_59); - DO_ROUND(F_40_59, K_40_59); - - DO_ROUND(F_60_79, K_60_79); - DO_ROUND(F_60_79, K_60_79); - DO_ROUND(F_60_79, K_60_79); - DO_ROUND(F_60_79, K_60_79); - DO_ROUND(F_60_79, K_60_79); - DO_ROUND(F_60_79, K_60_79); - DO_ROUND(F_60_79, K_60_79); - DO_ROUND(F_60_79, K_60_79); - DO_ROUND(F_60_79, K_60_79); - DO_ROUND(F_60_79, K_60_79); - DO_ROUND(F_60_79, K_60_79); - DO_ROUND(F_60_79, K_60_79); - DO_ROUND(F_60_79, K_60_79); - DO_ROUND(F_60_79, K_60_79); - DO_ROUND(F_60_79, K_60_79); - DO_ROUND(F_60_79, K_60_79); - DO_ROUND(F_60_79, K_60_79); - DO_ROUND(F_60_79, K_60_79); - DO_ROUND(F_60_79, K_60_79); - DO_ROUND(F_60_79, K_60_79); -#else /* SHA1_UNROLL */ -#error SHA1_UNROLL must be 1, 2, 4, 5, 10 or 20! -#endif - - sc->hash[0] += a; - sc->hash[1] += b; - sc->hash[2] += c; - sc->hash[3] += d; - sc->hash[4] += e; -} - -void -SHA1Update (SHA1Context *sc, const void *vdata, uint32_t len) -{ - const uint8_t *data = vdata; - uint32_t bufferBytesLeft; - uint32_t bytesToCopy; - int needBurn = 0; - -#ifdef SHA1_FAST_COPY - if (sc->bufferLength) { - bufferBytesLeft = 64L - sc->bufferLength; - - bytesToCopy = bufferBytesLeft; - if (bytesToCopy > len) - bytesToCopy = len; - - memcpy (&sc->buffer.bytes[sc->bufferLength], data, bytesToCopy); - - sc->totalLength += bytesToCopy * 8L; - - sc->bufferLength += bytesToCopy; - data += bytesToCopy; - len -= bytesToCopy; - - if (sc->bufferLength == 64L) { - SHA1Guts (sc, sc->buffer.words); - needBurn = 1; - sc->bufferLength = 0L; - } - } - - while (len > 63) { - sc->totalLength += 512L; - - SHA1Guts (sc, data); - needBurn = 1; - - data += 64L; - len -= 64L; - } - - if (len) { - memcpy (&sc->buffer.bytes[sc->bufferLength], data, len); - - sc->totalLength += len * 8L; - - sc->bufferLength += len; - } -#else /* SHA1_FAST_COPY */ - while (len) { - bufferBytesLeft = 64L - sc->bufferLength; - - bytesToCopy = bufferBytesLeft; - if (bytesToCopy > len) - bytesToCopy = len; - - memcpy (&sc->buffer.bytes[sc->bufferLength], data, bytesToCopy); - - sc->totalLength += bytesToCopy * 8L; - - sc->bufferLength += bytesToCopy; - data += bytesToCopy; - len -= bytesToCopy; - - if (sc->bufferLength == 64L) { - SHA1Guts (sc, sc->buffer.words); - needBurn = 1; - sc->bufferLength = 0L; - } - } -#endif /* SHA1_FAST_COPY */ - - if (needBurn) - burnStack (sizeof (uint32_t[86]) + sizeof (uint32_t *[5]) + sizeof (int)); -} - -void -SHA1Final (SHA1Context *sc, uint8_t hash[SHA1_HASH_SIZE]) -{ - uint32_t bytesToPad; - uint64_t lengthPad; - int i; - - bytesToPad = 120L - sc->bufferLength; - if (bytesToPad > 64L) - bytesToPad -= 64L; - - lengthPad = BYTESWAP64(sc->totalLength); - - SHA1Update (sc, padding, bytesToPad); - SHA1Update (sc, &lengthPad, 8L); - - if (hash) { - for (i = 0; i < SHA1_HASH_WORDS; i++) { -#ifdef SHA1_FAST_COPY - *((uint32_t *) hash) = BYTESWAP(sc->hash[i]); -#else /* SHA1_FAST_COPY */ - hash[0] = (uint8_t) (sc->hash[i] >> 24); - hash[1] = (uint8_t) (sc->hash[i] >> 16); - hash[2] = (uint8_t) (sc->hash[i] >> 8); - hash[3] = (uint8_t) sc->hash[i]; -#endif /* SHA1_FAST_COPY */ - hash += 4; - } - } -} - -#ifdef SHA1_TEST - -#include -#include -#include - -int -main (int argc, char *argv[]) -{ - SHA1Context foo; - uint8_t hash[SHA1_HASH_SIZE]; - char buf[1000]; - int i; - - SHA1Init (&foo); - SHA1Update (&foo, "abc", 3); - SHA1Final (&foo, hash); - - for (i = 0; i < SHA1_HASH_SIZE;) { - printf ("%02x", hash[i++]); - if (!(i % 4)) - printf (" "); - } - printf ("\n"); - - SHA1Init (&foo); - SHA1Update (&foo, - "abcdbcdecdefdefgefghfghighijhijkijkljklmklmnlmnomnopnopq", - 56); - SHA1Final (&foo, hash); - - for (i = 0; i < SHA1_HASH_SIZE;) { - printf ("%02x", hash[i++]); - if (!(i % 4)) - printf (" "); - } - printf ("\n"); - - SHA1Init (&foo); - memset (buf, 'a', sizeof (buf)); - for (i = 0; i < 1000; i++) - SHA1Update (&foo, buf, sizeof (buf)); - SHA1Final (&foo, hash); - - for (i = 0; i < SHA1_HASH_SIZE;) { - printf ("%02x", hash[i++]); - if (!(i % 4)) - printf (" "); - } - printf ("\n"); - - exit (0); -} - -#endif /* SHA1_TEST */ diff --git a/libs/libdingaling/src/sha1.h b/libs/libdingaling/src/sha1.h deleted file mode 100644 index 9283165c76a..00000000000 --- a/libs/libdingaling/src/sha1.h +++ /dev/null @@ -1,86 +0,0 @@ -/*- - * Copyright (c) 2001-2003 Allan Saddi - * All rights reserved. - * - * Redistribution and use in source and binary forms, with or without - * modification, are permitted provided that the following conditions - * are met: - * 1. Redistributions of source code must retain the above copyright - * notice, this list of conditions and the following disclaimer. - * 2. Redistributions in binary form must reproduce the above copyright - * notice, this list of conditions and the following disclaimer in the - * documentation and/or other materials provided with the distribution. - * - * THIS SOFTWARE IS PROVIDED BY ALLAN SADDI AND HIS CONTRIBUTORS ``AS IS'' - * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE - * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE - * ARE DISCLAIMED. IN NO EVENT SHALL ALLAN SADDI OR HIS CONTRIBUTORS BE - * LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR - * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF - * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS - * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN - * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) - * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE - * POSSIBILITY OF SUCH DAMAGE. - * - * $Id: sha1.h 347 2003-02-23 22:11:49Z asaddi $ - */ - -#ifndef _SHA1_H -#define _SHA1_H - -#if HAVE_INTTYPES_H -# include -#else -# if HAVE_STDINT_H -# include -# else -# ifndef uint32_t -# ifdef WIN32 -typedef unsigned __int8 uint8_t; -typedef unsigned __int16 uint16_t; -typedef unsigned __int32 uint32_t; -typedef unsigned __int64 uint64_t; -typedef __int8 int8_t; -typedef __int16 int16_t; -typedef __int32 int32_t; -typedef __int64 int64_t; -typedef unsigned long in_addr_t; -# endif -# endif -# endif -#endif - -#define SHA1_HASH_SIZE 20 - -/* Hash size in 32-bit words */ -#define SHA1_HASH_WORDS 5 - -struct _SHA1Context { - uint64_t totalLength; - uint32_t hash[SHA1_HASH_WORDS]; - uint32_t bufferLength; - union { - uint32_t words[16]; - uint8_t bytes[64]; - } buffer; -#ifdef RUNTIME_ENDIAN - int littleEndian; -#endif /* RUNTIME_ENDIAN */ -}; - -typedef struct _SHA1Context SHA1Context; - -#ifdef __cplusplus -extern "C" { -#endif - -void SHA1Init (SHA1Context *sc); -void SHA1Update (SHA1Context *sc, const void *data, uint32_t len); -void SHA1Final (SHA1Context *sc, uint8_t hash[SHA1_HASH_SIZE]); - -#ifdef __cplusplus -} -#endif - -#endif /* _SHA1_H */ diff --git a/libs/libvpx/build/make/configure.sh b/libs/libvpx/build/make/configure.sh index 728c3e2568b..b1f7804a597 100644 --- a/libs/libvpx/build/make/configure.sh +++ b/libs/libvpx/build/make/configure.sh @@ -865,7 +865,11 @@ process_common_toolchain() { case ${toolchain} in *-darwin-*) mvmin=$(sw_vers -productVersion) - mvmin="-mmacosx-version-min="${mvmin%.*} + if [[ $mvmin == 10.* ]]; then + mvmin="-mmacosx-version-min=""${mvmin%.*}" + else + mvmin="-mmacosx-version-min=""${mvmin%%.*}" + fi add_cflags $mvmin add_ldflags $mvmin ;; diff --git a/libs/libvpx/vp9/common/vp9_onyxc_int.h b/libs/libvpx/vp9/common/vp9_onyxc_int.h index 662b8ef5e12..c5b98c00214 100644 --- a/libs/libvpx/vp9/common/vp9_onyxc_int.h +++ b/libs/libvpx/vp9/common/vp9_onyxc_int.h @@ -299,6 +299,8 @@ static INLINE int get_free_fb(VP9_COMMON *cm) { static INLINE void ref_cnt_fb(RefCntBuffer *bufs, int *idx, int new_idx) { const int ref_index = *idx; + if (!bufs) return; + if (ref_index >= 0 && bufs[ref_index].ref_count > 0) bufs[ref_index].ref_count--; diff --git a/libs/libvpx/vpx_dsp/avg.c b/libs/libvpx/vpx_dsp/avg.c index 1c45e8a73dd..576d683fef5 100644 --- a/libs/libvpx/vpx_dsp/avg.c +++ b/libs/libvpx/vpx_dsp/avg.c @@ -344,6 +344,7 @@ void vpx_int_pro_row_c(int16_t hbuf[16], const uint8_t *ref, const int ref_stride, const int height) { int idx; const int norm_factor = height >> 1; + if (height == 1) return; for (idx = 0; idx < 16; ++idx) { int i; hbuf[idx] = 0; diff --git a/libs/libvpx/vpx_dsp/x86/avg_intrin_avx2.c b/libs/libvpx/vpx_dsp/x86/avg_intrin_avx2.c index 3f4f577a21d..ac33e160b96 100644 --- a/libs/libvpx/vpx_dsp/x86/avg_intrin_avx2.c +++ b/libs/libvpx/vpx_dsp/x86/avg_intrin_avx2.c @@ -305,6 +305,7 @@ static void hadamard_8x8x2_avx2(const int16_t *src_diff, ptrdiff_t src_stride, src[5] = _mm256_loadu_si256((const __m256i *)(src_diff += src_stride)); src[6] = _mm256_loadu_si256((const __m256i *)(src_diff += src_stride)); src[7] = _mm256_loadu_si256((const __m256i *)(src_diff += src_stride)); + (void)src_diff; hadamard_col8x2_avx2(src, 0); hadamard_col8x2_avx2(src, 1); diff --git a/libs/libvpx/vpx_dsp/x86/avg_intrin_sse2.c b/libs/libvpx/vpx_dsp/x86/avg_intrin_sse2.c index 5aba903a2dd..45bfefe08a8 100644 --- a/libs/libvpx/vpx_dsp/x86/avg_intrin_sse2.c +++ b/libs/libvpx/vpx_dsp/x86/avg_intrin_sse2.c @@ -276,6 +276,7 @@ static INLINE void hadamard_8x8_sse2(const int16_t *src_diff, src[5] = _mm_load_si128((const __m128i *)(src_diff += src_stride)); src[6] = _mm_load_si128((const __m128i *)(src_diff += src_stride)); src[7] = _mm_load_si128((const __m128i *)(src_diff += src_stride)); + (void)src_diff; hadamard_col8_sse2(src, 0); hadamard_col8_sse2(src, 1); diff --git a/libs/miniupnpc/upnpreplyparse.c b/libs/miniupnpc/upnpreplyparse.c index c72b4c825f1..ab2b87ecb7c 100644 --- a/libs/miniupnpc/upnpreplyparse.c +++ b/libs/miniupnpc/upnpreplyparse.c @@ -30,7 +30,7 @@ NameValueParserGetData(void * d, const char * datas, int l) nv = malloc(sizeof(struct NameValue)); if(l>63) l = 63; - strncpy(nv->name, data->curelt, 64); + memcpy(nv->name, data->curelt, 64); nv->name[63] = '\0'; memcpy(nv->value, datas, l); nv->value[l] = '\0'; diff --git a/libs/stb/stb_image.h b/libs/stb/stb_image.h index 0ea47afd9fa..e4a227325ac 100644 --- a/libs/stb/stb_image.h +++ b/libs/stb/stb_image.h @@ -5806,6 +5806,10 @@ static void *stbi__tga_load(stbi__context *s, int *x, int *y, int *comp, int req tga_palette_start = tga_palette_len = tga_palette_bits = tga_x_origin = tga_y_origin = 0; STBI_NOTUSED(tga_palette_start); + STBI_NOTUSED(tga_palette_len); + STBI_NOTUSED(tga_palette_bits); + STBI_NOTUSED(tga_x_origin); + STBI_NOTUSED(tga_y_origin); // OK, done return tga_data; } diff --git a/libs/unimrcp/.gitignore b/libs/unimrcp/.gitignore deleted file mode 100644 index 90ec22bee12..00000000000 --- a/libs/unimrcp/.gitignore +++ /dev/null @@ -1 +0,0 @@ -.svn diff --git a/libs/unimrcp/.update b/libs/unimrcp/.update deleted file mode 100644 index 5875d6e9321..00000000000 --- a/libs/unimrcp/.update +++ /dev/null @@ -1 +0,0 @@ -Mon Nov 17 11:06:30 EST 2014 diff --git a/libs/unimrcp/AUTHORS b/libs/unimrcp/AUTHORS deleted file mode 100644 index 6c7b0eee09f..00000000000 --- a/libs/unimrcp/AUTHORS +++ /dev/null @@ -1,17 +0,0 @@ -Author(s): - Arsen Chaloyan - - -Contributor(s): - Kamil Shakirov - Anthony Masse - Vlad Socaciu - Garmt - Patrick Nunes - Bayram Boyraz - Mahmoud Hassan - Michael Jerris - Carlos Pina Soares - Chaitanya Chokkareddy - Tomas Valenta - Danijel Korzinek diff --git a/libs/unimrcp/CHANGES b/libs/unimrcp/CHANGES deleted file mode 100644 index 82718241446..00000000000 --- a/libs/unimrcp/CHANGES +++ /dev/null @@ -1,214 +0,0 @@ -Changes for UniMRCP-1.2.0 - - APR-toolkit library - - * Implemented a new interface for the NLSML parser in accordance with the NSLML schema defined in http://tools.ietf.org/html/rfc6787#section-16.1. - * Took out the legacy NLSML interface. - * Fixed a gcc warning for strict-aliasing rules. - * Implemented apt_pair_array_generate() in 2 passes, apr_pstrcatv() alike. - * Prevent compilation warnings for unused-but-set-variable. - * Use int instead of apt_task_msg_type_e to suppress a warning triggered by gcc 4.7: case value not in enumerated type 'apt_task_msg_type_e'. - * Upon creation of a new memory pool, register apr_abortfunc_t callback which is supposed to be invoked when memory allocation fails within apr_pool. - * Added apt_va_log() which accepts va_list as an input argument. - * Set the default maximum number of log files used in rotation to 100. - * Set thread names for APT tasks to be shown in debuggers. Thanks Vali. - * Enable apt_timer logs only if APT_TIMER_DEBUG is defined. - * Use a local temporary char buffer to construct the hostname in apt_ip_get() not to allocate memory from a permanent pool. - * Unified pointer logging in APT style. Thanks Vali. - * Define APT_PTR_FMT as 0x%I64x for 64-bit Windows. - * Removed unused function apt_text_boolean_value_insert/apt_boolean_value_insert (inconsistent declaration/definition). Thanks Vali. - - MPF library - - * The function mpf_codec_lists_intersect() now returns FALSE if there is no match for the primary codec descriptor. - * Reject the RTP session if there is no match in remote and local codecs. - * Use the reserved RTP payload type 19 in case codec list is empty (media stream is rejected). - * If the codec list does not match the capabilities, mark the stream as disabled. - * Do not set SO_REUSEADDR on RTP sockets. - * Made G.711 implementation bit-exact with ITU-T reference implementation. - * Use APR typedefs in G.711 implementation. - * Improved the RTP port management for those cases when the specified RTP port range is not enough to handle concurrent MRCP sessions. - * Check the number of ports per engine to be even to ensure there is a room for a pair of RTP/RTCP ports. - * Added debugging capabilities to mpf_frame_buffer. - * Copy name string when adding to codec capabilities. Thanks Vali. - - MRCP common library - - * Use apr_snprintf() instead of sprintf() in mrcp_request_id_generate(). - * Get rid of local fixed-size char buffers and additional string copies. Instead, allocate buffers from memory pool and generate strings straight into the buffers. - - MRCP client library - - * Completed the implementation of the new API function to retrieve a SIP/RTSP response code received from the server (Issue-90). - * Fixed a potential crash of the client stack which could happen when the server unexpectedly closes the MRCPv2 connection while the client stack is processing an application request. - * Allow a pool/factory of signaling agents to be defined with the MRCPv1 and/or MRCPv2 profiles. - * Respond straight away with success to the session termination request if the session creation failed in the first place. - * Keep track of associations between RTP termination factories (pools of RTP ports) and media engines. - * Allow a pool/factory of media processing engines to be defined with the MRCPv1 and/or MRCPv2 profiles. - * Allow a pool/factory of MRCPv2 connection agents to be defined with the MRCPv2 profiles. - * Added the ability to specify an IP address by the name of network interface/adapter. - * Added a new accessor function to the client API mrcp_client_profiles_get() which retrieves the available profiles. - * Store the profile name not only as a key in the profile table but also in the profile structure. - * Allow setting an arbitrary tag to the profile. - - MRCP server library - - * Handle separately the case when an RTSP SETUP contains no SDP, which means it's up to the server to decide which codec to use. - * Fixed a crash if MRCP resource not found. Thanks Vali. - * Keep track of associations between RTP termination factories (pools of RTP ports) and media engines. - * Added the ability to specify an IP address by the name of network interface/adapter. - * Log maximum engine channel count exceeded. Thanks Vali. - - Sofia-SIP module (MRCPv2 agent) - - * Do not generate media format list for a disabled audio stream. - * Use snprintf() consistently in mrcp_sdp.c. - * Implemented the log redirection routine of SofiaSIP. - * Added an indentifier of the SofiaSIP agent to the log statement "Receive SIP Event". - - RTSP module (MRCPv1 agent) - - * Do not generate media format list for a disabled audio stream. - - Demo plugins - - * Respond with failure if codec descriptor is unavailable (associated media stream is disabled). - - UMC sample application - - * Terminate execution of sample application if media descriptor is unavailable (media stream is disabled). - * Use the new NLSML parser interface in sample apps. - * Set the header field Save-Waveform to TRUE in the sample umc recog application. - * Fixed an invalid read of 8 bytes in umc application: sizeof(mpf_codec_capabilities_t) was meant to be allocated. - - ASR Client application (and library) - - * Get rid of 1Kb grammar file limit in libasrclient. Load the content into an allocated buffer instead. - - Miscellaneous - - * Copy the version and revision header files located in the build directory to the SDK include directory. - * Added/fixed support for DESTDIR. - * Take into consideration m4 macro files generated for/by libtool 2. - * Set ac_macro_dir variable manually, since newer versions of autoconf don't do that. - * Enable silent build rules (--enable-silent-rules)and use silent build by default. - * Enhanced the report generated by the ./configure script. - * Pass no-define to AM_INIT_AUTOMAKE in order not to define PACKAGE and VERSION. - * Do not use autoconf generated compiler DEFS by replacing confdefs.h after AC_INIT, AM_INIT_AUTOMAKE and AC_PROG_LIBTOLL getting called. - * Updated definition of the macro AX_COMPILER_VENDOR and moved it out from configure.ac to a separate m4 file. - * Added missing dereferences of pointers to the (potential) terminal NUL of some strings. Thanks Vali. - * Disabled DEFAULT_INCLUDES provided by automake. - * Added generic apr_common.m4 in order to use helper m4 macros APR_ADDTO() and APR_CONFIG_NICE(). - * Generate ./config.nice to reuse ./configure command-line. - * Added uni_plugin.m4 which provides generic macros UNI_PLUGIN_ENABLED(name) and UNI_PLUGIN_DISABLED(name). - * Added common GNU make rules/vars for plugins, client and server libs/apps alike VS property sheets. - * The macro UNIMRCP_CHECK_APR() now checks and sets variables for both APR and APR-util libraries. - * Added a brief description of the license definition which is intended to be used for Windows resource files only. - * Brought XML schema definitions of configuration file formats up to date. - * Cppcheck: printf-like formats fix, possible NULL pointer dereference, member not initialized in the constructor, - unused variable/value, method can be made static. Thanks Vali. - * Define _WIN64 in Visual Studio x64 targets (for IDE only, the compiler defines _WIN64 anyway). Thanks Vali. - * Fixed some GCC warnings. Thanks Vali. - * Moved mrcp-flite and mrcp-pocketsphinx plugins out of the source tree into the external solutions directory. - - -Changes for UniMRCP-1.1.0 - - APR-toolkit library - - * The function apt_log_file_open() makes a copy of dir_path and file_name variables passed from a user application. - * Applied a patch to the apt_log routine which allows the log file to be appended instead of being overwritten. The patch was submitted by Dani. Thanks. - * Added a new parameter to the function apt_log_file_open() which specifies whether the log file should be appended or overwritten. - * Fixed the formatting of float values in the header fields. Applied a patch submitted by Randy (Issue-108). Thanks. - * Fixed apt_log_output_mode_check() which returned TRUE if any mode was enabled or checked regardless their correspondence. Thanks Vali. - * Enhanced the debug output by adding task message identifier to the log statements "Signal Message" and "Process Message". - * Fixed a potential crash related to the use of pollsets. - * Fixed a potential buffer overflow in apt_text_pair_array_insert(). Thanks Vali. - * Remove a socket descriptor from the pollset only if the descriptor has been properly added to the pollset. Otherwise, this operation could cause a crash. - - MPF library - - * Tweaked DTMF detector's energy thresholds to eliminate false positives during in-band (from audio) DTMF detection. Thanks Vali. - * Took into consideration the RTP marker in order to re-sync the jitter buffer on a new talkspurt. Audio data loss could be experienced in the RTP receiver in case of consecutive SPEAK (for client) or RECOGNIZE (for server) requests. - * Instead of discarding a non-aligned RTP packet, adjust the timestamp and write available frames to the jitter buffer (Issue-122). - * Added support for the adaptive jitter buffer. Applied a reworked patch submitted by Erik. Thanks. - * Enhanced the detection of a new RTP talkspurt by implicitly setting the RTP marker if a gap between two RTP packets is more than the specified threshold (INTER_TALSKPUSRT_GAP = 1000 msec). - * Allow the initial playout delay in the jitter buffer to be set to 0. - * Implemented a time skew detection algorithm for RTP streams. The detection can be enabled and used for both the adaptive and static jitter buffer. - * Added support for redirection of RTP traces (RTP_TRACE, JB_TRACE) to the debug output window of Visual Studio. - * Enhanced the processing of the RTP named events. - - RTSP library - - * Use strcasecmp() instead of apr_strnatcasecmp() to match RTSP resource names (Issue-94). - * Fixed a crash in the RTSP client stack when the server closes a TCP connection while the associated RTSP session is being destroyed (Issue-124). - * Fixed the processing of RTSP TEARDOWN requests being timed out. Applied a patch submitted to Issue-125 by Chris. Thanks. - * For logging purposes, pass a string identifier of the RTSP/MRCPv1 signaling agent to the RTSP client and server stacks. - - MRCP common library - - * Added missing recognizer header fields used for voice enrollment (speaker-dependent recognition). - * Added support for custom MRCP header fields. - * Added support for speaker verification and identification resource. - * Added missing recognizer methods used for voice enrollment and interpretation. - * Updated the state machine of the recognizer resource to take into consideration requests, responses and events used for interpretation. - * Enhanced helper functions which operate on the MRCP header to properly set, get and inherit header fields (Issue-110). - - MRCP client library - - * Added support for SIP redirection with 300 Multiple Choices used by the Nuance Resource Manager. - * Added support for feature-tags set in the SIP Accept-Contact header field in an outgoing SIP INVITE message sent to the Nuance Resource Manager. - * Added a new accessor function to the client API to get an audio stream associated with the specified channel. The function name is mrcp_application_audio_stream_get(). - * Added the ability to retrieve an external object associated with the MRCP session through the log handler (apt_log_ext_handler_f). - * Fixed the processing of a response to the SIP OPTIONS request used for resource discovery (Issue-112). - * Added a new constructor function unimrcp_client_create2() which allows to pass the client XML configuration not by a file, but rather by a string parameter. Thanks Vali. - * Fixed the processing of more than one pending application requests upon reception of a SIP BYE message from the server. - * Fixed the loading of the client configuration parameter . - * Respond to client user application requests with failure if a new session couldn't be created due to an error in initialization of the SIP stack (Issue-127). - * When originating an offer from the client, take into account capabilities of an audio stream created by the client user application. - * Added a new function to the client API to retrieve a SIP/RTSP response code received from the server (Issue-90). The support is incomplete. - - MRCP server library - - * Fixed an interoperability issue with AVP. The mid attribute is not required when the SDP contains only one m-line. - * Fixed the build of C++ MRCP plugins for platforms other than Win32. Thanks Vali. - * Added the ability to take and use parameters set by the plugin in a response to the GET-PARAMS request. Thanks Vali. - - Sofia-SIP module - - * Took out unused tags (variables) to compile with Sofia-SIP 1.12.11. - * Added support for Sofia-SIP's TPTAG_LOG() and TPTAG_DUMP() tags which can be enabled from the client and server configuration to print out and/or dump SIP messages. - - PocketSphinx plugin - - * In the PocketSphinx plugin, instead of using one common timeout for detection of speech activity and inactivity, use two different timeouts: one for activity and the other for inactivity detection. - * In the recognition results sent from the PocketSphinx plugin, set both and elements. - * Fixed a race condition in the PocketSphinx plugin which caused the server to crash. - * Fixed the use of recognition timer in the PocketSphinx plugin. - * Set an MRCP version specific completion cause in the PocketSphinx plugin. - - UniMRCP server application - - * Enhanced the UniMRCP Windows service manager. Thanks Vali. - * Corrected FileType in Windows resources from DLL to APP. Thanks Vali. - * Added a Windows resource file for the unimrcpservice application. - - UMC sample application - - * Set the default profile name in umcscenarios.xml to "uni2". - * Added sample 8kHz and 16 kHz voiceprints in the data directory which are used by the umc application for a sample verification scenario. - * Added mandatory attributes for the SSML element in the sample speak.xml file. - * Added support for a binary recognition grammar used in RecogScenario by the sample umc application. Thanks Vali. - * Added a sample SRGS ABNF grammar to the data directory. - - Miscellaneous - - * Added init.d script. The script was originally submitted by pdeschen. Thanks. - * Modified the "prepare" utility project to use the new location of PthreadVC2.dll which is now built from source with other dependencies. - * Added support for Visual Studio 2010. - * Modified the MPF test application to read a raw PCM data from one file, transmit it over RTP, and write the data back to another file. - * Set the libtool parameters link_all_deplibs and link_all_deplibs_CXX to "yes" by default, with an option to disable them (--disable-interlib-deps), if ever needed. This fixes a link error on recent Debian/Ubuntu distributions. - * Modified the apr.m4 and apu.m4 macros to use '--link-ld' instead of '--link-libtool --libs' for the APR library dependencies. This addresses the problem with a wrong -L path to the expat library. - * Set prerequisite version for autoconf to 2.59. - * Added a checking for pkg-config to the configure script. - * Added a new option (-v or --version) to the unimrcpserver as well as the sample umc and unimrcpclient applications. diff --git a/libs/unimrcp/INSTALL b/libs/unimrcp/INSTALL deleted file mode 100644 index 2d4f0d8eec0..00000000000 --- a/libs/unimrcp/INSTALL +++ /dev/null @@ -1,158 +0,0 @@ -BUILD REQUIREMENTS -================== - -The UniMRCP project depends on a number of third party tools and libraries which must be installed first. - -All the required dependencies are available to download prepackaged for the UniMRCP use from the -following location: - - http://www.unimrcp.org/downloads/dependencies - -Alternatively, original versions of the libraries as well as patches on them can be downloaded -separately from the following location: - - http://www.unimrcp.org/dependencies - -References: - -1. Apache Portable Runtime [>=1.2.x] (http://apr.apache.org). -In order to build any part of the UniMRCP project, the Apache Portable Runtime (APR) and -the APR Utility (APR-util) libraries are required. The libraries provide a consistent interface to -underlying platform-specific implementations. - -2. Sofia-SIP [>=1.12.6] (http://sofia-sip.sourceforge.net). -Sofia-SIP is an open-source SIP User-Agent library, compliant with the IETF RFC3261 specification. -The library is utilized for implementation of SIP signaling for MRCPv2. The SDP message parser is -also used for both MRCPv2 (SIP/SDP) and MRCPv1 (RTSP/SDP). - - -GNU BUILD -========= - -Prerequisites: - - autoconf 2.59 or newer - automake - libtool 1.4 or newer - gcc - pkg-config - - -Procedure: - -If the UniMRCP source is checked out from the repository, the "bootstrap" script must be run first -in order to generate the "configure" script and other required files. - - ./bootstrap - -The usual "configure", "make", "make install" sequence of commands should follow in order to build -and install the project from source. - - ./configure - make - make install - -As a result, the project will be installed in the directory "/usr/local/unimrcp" with the following -layout: - - bin binaries (unimrcpserver, unimrcpclient, ...) - conf configuration files (unimrcpserver.xml, unimrcpclient.xml, ...) - data data files - include header files - lib shared (convenience) libraries - log log files - plugin run-time loadable modules - -There are a couple of options which can additionally be configured. -In order to specify where to look for the APR and APR-util libraries, use the "--with-apr=" and -"--with-apr-util=" options respectively. For example: - - ./configure --with-apr=/usr/local/apr --with-apr-util=/usr/local/apr - -In order to specify where to look for the Sofia-SIP library, use the "--with-sofia-sip=" option. -For example: - - ./configure --with-sofia-sip=/usr/local/sofia-sip - -In order to generate executables and shared libraries for x86-64 architecture, use the "-m64" -option as follows: - - CFLAGS=-m64 CXXFLAGS=-m64 LDFLAGS=-m64 ./configure - -In order to generate executables and shared libraries for i386 architecture, use the "-m32" option -as follows: - - CFLAGS=-m32 CXXFLAGS=-m32 LDFLAGS=-m32 ./configure - -In order to install the default configuration, use the following commands: - - cd conf - make def-conf - -In order to install the default data files, use the following commands: - - cd data - make def-data - -In order to build a Doxygen generated documentation, use the following command: - - make dox - - -WINDOWS BUILD -============= - -Prerequisites: - - Microsoft Visual Studio 2005 or 2010. - -One-time pre-build setup: [optional] - -This step can be skipped if the dependencies are installed in their default locations. Otherwise, -the paths in the corresponding property sheets must be modified accordingly. Below is the content -of property sheets for Visual Studio 2005, which are located in the directory "build/vsprops". -Similarly, property sheets for Visual Studio 2010 can be found in the directory "build/props". - -apr.vsprops - - - -sofiasip.vsprops - - -Procedure: - -1. Open one of the available solution files: - * for Visual Studio 2005, use unimrcp.sln, - * for Visual Studio 2010, use unimrcp-2010.sln. -2. Choose a platform (Build -> Configuration Manager): - * win32 - * x64. -3. Choose a configuration (Build -> Configuration Manager): - * Debug - * Release. -4. Build the solution (Build -> Build Solution). - -One-time output directory setup: - -Build the "prepare.vcproj" utility project by right clicking on the project icon from the Solution -Explorer (tools->prepare) and selecting the Build command from the context menu. This routine will -setup the output directory and copy all the required APR, APR-Util, and Sofia-SIP libraries as well -as the default configuration and data files. As a result, the output directory layout will look -like the following: - - bin binaries (unimrcpserver, unimrcpclient, ...) and all the required dlls - conf configuration files (unimrcpserver.xml, unimrcpclient.xml, ...) - data data files - lib libraries - log log files - plugin run-time loadable modules diff --git a/libs/unimrcp/LICENSE b/libs/unimrcp/LICENSE deleted file mode 100644 index d6456956733..00000000000 --- a/libs/unimrcp/LICENSE +++ /dev/null @@ -1,202 +0,0 @@ - - Apache License - Version 2.0, January 2004 - http://www.apache.org/licenses/ - - TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION - - 1. Definitions. - - "License" shall mean the terms and conditions for use, reproduction, - and distribution as defined by Sections 1 through 9 of this document. - - "Licensor" shall mean the copyright owner or entity authorized by - the copyright owner that is granting the License. - - "Legal Entity" shall mean the union of the acting entity and all - other entities that control, are controlled by, or are under common - control with that entity. For the purposes of this definition, - "control" means (i) the power, direct or indirect, to cause the - direction or management of such entity, whether by contract or - otherwise, or (ii) ownership of fifty percent (50%) or more of the - outstanding shares, or (iii) beneficial ownership of such entity. - - "You" (or "Your") shall mean an individual or Legal Entity - exercising permissions granted by this License. - - "Source" form shall mean the preferred form for making modifications, - including but not limited to software source code, documentation - source, and configuration files. - - "Object" form shall mean any form resulting from mechanical - transformation or translation of a Source form, including but - not limited to compiled object code, generated documentation, - and conversions to other media types. - - "Work" shall mean the work of authorship, whether in Source or - Object form, made available under the License, as indicated by a - copyright notice that is included in or attached to the work - (an example is provided in the Appendix below). - - "Derivative Works" shall mean any work, whether in Source or Object - form, that is based on (or derived from) the Work and for which the - editorial revisions, annotations, elaborations, or other modifications - represent, as a whole, an original work of authorship. For the purposes - of this License, Derivative Works shall not include works that remain - separable from, or merely link (or bind by name) to the interfaces of, - the Work and Derivative Works thereof. - - "Contribution" shall mean any work of authorship, including - the original version of the Work and any modifications or additions - to that Work or Derivative Works thereof, that is intentionally - submitted to Licensor for inclusion in the Work by the copyright owner - or by an individual or Legal Entity authorized to submit on behalf of - the copyright owner. For the purposes of this definition, "submitted" - means any form of electronic, verbal, or written communication sent - to the Licensor or its representatives, including but not limited to - communication on electronic mailing lists, source code control systems, - and issue tracking systems that are managed by, or on behalf of, the - Licensor for the purpose of discussing and improving the Work, but - excluding communication that is conspicuously marked or otherwise - designated in writing by the copyright owner as "Not a Contribution." - - "Contributor" shall mean Licensor and any individual or Legal Entity - on behalf of whom a Contribution has been received by Licensor and - subsequently incorporated within the Work. - - 2. Grant of Copyright License. Subject to the terms and conditions of - this License, each Contributor hereby grants to You a perpetual, - worldwide, non-exclusive, no-charge, royalty-free, irrevocable - copyright license to reproduce, prepare Derivative Works of, - publicly display, publicly perform, sublicense, and distribute the - Work and such Derivative Works in Source or Object form. - - 3. Grant of Patent License. Subject to the terms and conditions of - this License, each Contributor hereby grants to You a perpetual, - worldwide, non-exclusive, no-charge, royalty-free, irrevocable - (except as stated in this section) patent license to make, have made, - use, offer to sell, sell, import, and otherwise transfer the Work, - where such license applies only to those patent claims licensable - by such Contributor that are necessarily infringed by their - Contribution(s) alone or by combination of their Contribution(s) - with the Work to which such Contribution(s) was submitted. If You - institute patent litigation against any entity (including a - cross-claim or counterclaim in a lawsuit) alleging that the Work - or a Contribution incorporated within the Work constitutes direct - or contributory patent infringement, then any patent licenses - granted to You under this License for that Work shall terminate - as of the date such litigation is filed. - - 4. Redistribution. You may reproduce and distribute copies of the - Work or Derivative Works thereof in any medium, with or without - modifications, and in Source or Object form, provided that You - meet the following conditions: - - (a) You must give any other recipients of the Work or - Derivative Works a copy of this License; and - - (b) You must cause any modified files to carry prominent notices - stating that You changed the files; and - - (c) You must retain, in the Source form of any Derivative Works - that You distribute, all copyright, patent, trademark, and - attribution notices from the Source form of the Work, - excluding those notices that do not pertain to any part of - the Derivative Works; and - - (d) If the Work includes a "NOTICE" text file as part of its - distribution, then any Derivative Works that You distribute must - include a readable copy of the attribution notices contained - within such NOTICE file, excluding those notices that do not - pertain to any part of the Derivative Works, in at least one - of the following places: within a NOTICE text file distributed - as part of the Derivative Works; within the Source form or - documentation, if provided along with the Derivative Works; or, - within a display generated by the Derivative Works, if and - wherever such third-party notices normally appear. The contents - of the NOTICE file are for informational purposes only and - do not modify the License. You may add Your own attribution - notices within Derivative Works that You distribute, alongside - or as an addendum to the NOTICE text from the Work, provided - that such additional attribution notices cannot be construed - as modifying the License. - - You may add Your own copyright statement to Your modifications and - may provide additional or different license terms and conditions - for use, reproduction, or distribution of Your modifications, or - for any such Derivative Works as a whole, provided Your use, - reproduction, and distribution of the Work otherwise complies with - the conditions stated in this License. - - 5. Submission of Contributions. Unless You explicitly state otherwise, - any Contribution intentionally submitted for inclusion in the Work - by You to the Licensor shall be under the terms and conditions of - this License, without any additional terms or conditions. - Notwithstanding the above, nothing herein shall supersede or modify - the terms of any separate license agreement you may have executed - with Licensor regarding such Contributions. - - 6. Trademarks. This License does not grant permission to use the trade - names, trademarks, service marks, or product names of the Licensor, - except as required for reasonable and customary use in describing the - origin of the Work and reproducing the content of the NOTICE file. - - 7. Disclaimer of Warranty. Unless required by applicable law or - agreed to in writing, Licensor provides the Work (and each - Contributor provides its Contributions) on an "AS IS" BASIS, - WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or - implied, including, without limitation, any warranties or conditions - of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A - PARTICULAR PURPOSE. You are solely responsible for determining the - appropriateness of using or redistributing the Work and assume any - risks associated with Your exercise of permissions under this License. - - 8. Limitation of Liability. In no event and under no legal theory, - whether in tort (including negligence), contract, or otherwise, - unless required by applicable law (such as deliberate and grossly - negligent acts) or agreed to in writing, shall any Contributor be - liable to You for damages, including any direct, indirect, special, - incidental, or consequential damages of any character arising as a - result of this License or out of the use or inability to use the - Work (including but not limited to damages for loss of goodwill, - work stoppage, computer failure or malfunction, or any and all - other commercial damages or losses), even if such Contributor - has been advised of the possibility of such damages. - - 9. Accepting Warranty or Additional Liability. While redistributing - the Work or Derivative Works thereof, You may choose to offer, - and charge a fee for, acceptance of support, warranty, indemnity, - or other liability obligations and/or rights consistent with this - License. However, in accepting such obligations, You may act only - on Your own behalf and on Your sole responsibility, not on behalf - of any other Contributor, and only if You agree to indemnify, - defend, and hold each Contributor harmless for any liability - incurred by, or claims asserted against, such Contributor by reason - of your accepting any such warranty or additional liability. - - END OF TERMS AND CONDITIONS - - APPENDIX: How to apply the Apache License to your work. - - To apply the Apache License to your work, attach the following - boilerplate notice, with the fields enclosed by brackets "[]" - replaced with your own identifying information. (Don't include - the brackets!) The text should be enclosed in the appropriate - comment syntax for the file format. We also recommend that a - file or class name and description of purpose be included on the - same "printed page" as the copyright notice for easier - identification within third-party archives. - - Copyright [yyyy] [name of copyright owner] - - Licensed under the Apache License, Version 2.0 (the "License"); - you may not use this file except in compliance with the License. - You may obtain a copy of the License at - - http://www.apache.org/licenses/LICENSE-2.0 - - Unless required by applicable law or agreed to in writing, software - distributed under the License is distributed on an "AS IS" BASIS, - WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - See the License for the specific language governing permissions and - limitations under the License. diff --git a/libs/unimrcp/Makefile.am b/libs/unimrcp/Makefile.am deleted file mode 100644 index caa6756c061..00000000000 --- a/libs/unimrcp/Makefile.am +++ /dev/null @@ -1,36 +0,0 @@ -macrodir = @ac_macro_dir@ -auxdir = @ac_aux_dir@ - -AUX_DIST = $(auxdir)/compile \ - $(auxdir)/config.guess \ - $(auxdir)/config.sub \ - $(auxdir)/install-sh \ - $(auxdir)/ltconfig \ - $(auxdir)/ltmain.sh \ - $(auxdir)/depcomp \ - $(auxdir)/missing - -MACRO_DIST = $(macrodir)/libtool.m4 \ - $(macrodir)/ltoptions.m4 \ - $(macrodir)/ltsugar.m4 \ - $(macrodir)/ltversion.m4 \ - $(macrodir)/lt~obsolete.m4 - -EXTRA_DIST = bootstrap - -AUTOMAKE_OPTIONS = foreign -MAINTAINERCLEANFILES = Makefile.in aclocal.m4 configure config.nice $(AUX_DIST) $(MACRO_DIST) - -ACLOCAL = aclocal -I $(macrodir) - -SUBDIRS = build conf data libs modules plugins platforms -if TEST_SUITES -SUBDIRS += tests -endif - -dox: - doxygen $(top_srcdir)/docs/doxygen.conf - -install-data-local: - test -d $(DESTDIR)$(logdir) || $(mkinstalldirs) $(DESTDIR)$(logdir) - test -d $(DESTDIR)$(vardir) || $(mkinstalldirs) $(DESTDIR)$(vardir) diff --git a/libs/unimrcp/NOTICE b/libs/unimrcp/NOTICE deleted file mode 100644 index 37f1bf3c017..00000000000 --- a/libs/unimrcp/NOTICE +++ /dev/null @@ -1,47 +0,0 @@ -The UniMRCP Project (http://www.unimrcp.org) -Copyright (C) 2008-2010 Arsen Chaloyan -Licensed under the Apache License, Version 2.0 (the "License"). - -This product includes a number of subcomponents with -separate copyright notices and license terms. - - -Notice for APR (Apache Portable Runtime) library ---------------------------------------------------- -This product includes software developed by -The Apache Software Foundation (http://www.apache.org/). - -Portions of this software were developed at the National Center -for Supercomputing Applications (NCSA) at the University of -Illinois at Urbana-Champaign. - -This software contains code derived from the RSA Data Security -Inc. MD5 Message-Digest Algorithm. ---------------------------------------------------- - - -Notice for Sofia-SIP library ---------------------------------------------------- -Copyright (C) 2005-2006 Nokia Corporation and others (see the -in individual files for a detailed list of copyright holders). -Contact: Pekka Pessi - -This library is free software; you can redistribute it and/or -modify it under the terms of the GNU Lesser General Public License -as published by the Free Software Foundation; either version 2.1 of -the License, or (at your option) any later version. ---------------------------------------------------- - - -Notice for G711 implementation ---------------------------------------------------- -g711.h/g711.c - A-law and u-law transcoding routines - -Written by Steve Underwood -Copyright (C) 2006 Steve Underwood - -Despite my general liking of the GPL, I place this code in the -public domain for the benefit of all mankind - even the slimy -ones who might try to proprietize my work and use it to my -detriment. ---------------------------------------------------- diff --git a/libs/unimrcp/README b/libs/unimrcp/README deleted file mode 100644 index 55e84045bee..00000000000 --- a/libs/unimrcp/README +++ /dev/null @@ -1,59 +0,0 @@ -INTRODUCTION -============ - -UniMRCP is an open source project compliant with the IETF RFC6787 (MRCPv2) and RFC4463 (MRCPv1) -specifications. - - -INSTALLATION -============ - -See the file "INSTALL" for installation tips. - - -DOCUMENTATION -============= - -Use the directory "docs/dox" for a documentation generated by Doxygen. -Use the directory "docs/ea" for UML based design concepts, HTML pages generated by Enterpise Architect. - - -REFERENCES -========== - -Website: - http://www.unimrcp.org - -Downloads: - http://www.unimrcp.org/downloads - -Documentation: - http://www.unimrcp.org/documentation - -Google Code: - http://code.google.com/p/unimrcp - -Issue Tracker: - http://code.google.com/p/unimrcp/issues/list - -Discussion Group: - http://groups.google.com/group/unimrcp - -Version Control Repository (SVN): - http://unimrcp.googlecode.com/svn/trunk - -UML Documentation File (Enterpise Architect): - http://unimrcp.googlecode.com/svn/misc/unimrcp.eap - -Commit Monitor: - http://code.google.com/p/unimrcp/source/list - http://groups.google.com/group/unimrcp-svn-commits - - -LICENSING -========= - -UniMRCP is licensed under terms of the Apache License 2.0. -See the file "LICENSE" for more information. - -Copyright 2008 - 2014 Arsen Chaloyan diff --git a/libs/unimrcp/acinclude.m4 b/libs/unimrcp/acinclude.m4 deleted file mode 100644 index 14fa221614a..00000000000 --- a/libs/unimrcp/acinclude.m4 +++ /dev/null @@ -1,7 +0,0 @@ -m4_include([build/acmacros/apr.m4]) -m4_include([build/acmacros/find_apr.m4]) -m4_include([build/acmacros/find_apu.m4]) -m4_include([build/acmacros/sofia-sip.m4]) -m4_include([build/acmacros/ax_compiler_vendor.m4]) -m4_include([build/acmacros/apr_common.m4]) -m4_include([build/acmacros/uni_plugin.m4]) diff --git a/libs/unimrcp/bootstrap b/libs/unimrcp/bootstrap deleted file mode 100755 index e037f546a38..00000000000 --- a/libs/unimrcp/bootstrap +++ /dev/null @@ -1,14 +0,0 @@ -#! /bin/sh - -case `uname` in - Darwin) libtoolize=glibtoolize ;; - *) libtoolize=libtoolize ;; -esac - -set -x -$libtoolize --force --automake --copy -aclocal -I build/acmacros -automake --foreign --add-missing --copy -autoconf - -rm -rf autom4te.cache diff --git a/libs/unimrcp/build/Makefile.am b/libs/unimrcp/build/Makefile.am deleted file mode 100644 index 859d2a553f7..00000000000 --- a/libs/unimrcp/build/Makefile.am +++ /dev/null @@ -1,5 +0,0 @@ -MAINTAINERCLEANFILES = Makefile.in - -SUBDIRS = pkgconfig - -include_HEADERS = uni_version.h uni_revision.h diff --git a/libs/unimrcp/build/acmacros/apr.m4 b/libs/unimrcp/build/acmacros/apr.m4 deleted file mode 100644 index 0fc55215ebe..00000000000 --- a/libs/unimrcp/build/acmacros/apr.m4 +++ /dev/null @@ -1,79 +0,0 @@ -dnl -dnl UNIMRCP_CHECK_APR -dnl -dnl This macro attempts to find APR and APR-util libraries and -dnl set corresponding variables on exit. -dnl -AC_DEFUN([UNIMRCP_CHECK_APR], -[ - AC_MSG_NOTICE([Apache Portable Runtime (APR) library configuration]) - - APR_FIND_APR("", "", 1, 1) - - if test $apr_found = "no"; then - AC_MSG_WARN([APR not found]) - UNIMRCP_DOWNLOAD_APR - fi - - if test $apr_found = "reconfig"; then - AC_MSG_WARN([APR reconfig]) - fi - - dnl check APR version number - apr_version="`$apr_config --version`" - AC_MSG_RESULT([$apr_version]) - - dnl Get build information from APR - APR_ADDTO(CPPFLAGS,`$apr_config --cppflags`) - APR_ADDTO(CFLAGS,`$apr_config --cflags`) - APR_ADDTO(LDFLAGS,`$apr_config --ldflags`) - - APR_ADDTO(UNIMRCP_APR_INCLUDES,`$apr_config --includes`) - APR_ADDTO(UNIMRCP_APR_LIBS,`$apr_config --link-ld`) - - AC_MSG_NOTICE([Apache Portable Runtime Utility (APU) library configuration]) - - APR_FIND_APU("", "", 1, 1) - - if test $apu_found = "no"; then - AC_MSG_WARN([APU not found]) - UNIMRCP_DOWNLOAD_APU - fi - - if test $apu_found = "reconfig"; then - AC_MSG_WARN([APU reconfig]) - fi - - dnl check APU version number - apu_version="`$apu_config --version`" - AC_MSG_RESULT([$apu_version]) - - dnl Get build information from APU - APR_ADDTO(LDFLAGS,`$apu_config --ldflags`) - - APR_ADDTO(UNIMRCP_APR_INCLUDES,`$apu_config --includes`) - APR_ADDTO(UNIMRCP_APR_LIBS,`$apu_config --link-ld`) - - AC_SUBST(UNIMRCP_APR_INCLUDES) - AC_SUBST(UNIMRCP_APR_LIBS) -]) - -dnl UNIMRCP_DOWNLOAD_APR -dnl no apr found, print out a message telling the user what to do -AC_DEFUN([UNIMRCP_DOWNLOAD_APR], -[ - echo "The Apache Portable Runtime (APR) library cannot be found." - echo "Please install APR on this system and supply the appropriate" - echo "--with-apr option to 'configure'" - AC_MSG_ERROR([no suitable APR found]) -]) - -dnl UNIMRCP_DOWNLOAD_APU -dnl no apr-util found, print out a message telling the user what to do -AC_DEFUN([UNIMRCP_DOWNLOAD_APU], -[ - echo "The Apache Portable Runtime Utility (APU) library cannot be found." - echo "Please install APRUTIL on this system and supply the appropriate" - echo "--with-apr-util option to 'configure'" - AC_MSG_ERROR([no suitable APU found]) -]) diff --git a/libs/unimrcp/build/acmacros/apr_common.m4 b/libs/unimrcp/build/acmacros/apr_common.m4 deleted file mode 100644 index 6b5c0f033b9..00000000000 --- a/libs/unimrcp/build/acmacros/apr_common.m4 +++ /dev/null @@ -1,990 +0,0 @@ -dnl -------------------------------------------------------- -*- autoconf -*- -dnl Licensed to the Apache Software Foundation (ASF) under one or more -dnl contributor license agreements. See the NOTICE file distributed with -dnl this work for additional information regarding copyright ownership. -dnl The ASF licenses this file to You under the Apache License, Version 2.0 -dnl (the "License"); you may not use this file except in compliance with -dnl the License. You may obtain a copy of the License at -dnl -dnl http://www.apache.org/licenses/LICENSE-2.0 -dnl -dnl Unless required by applicable law or agreed to in writing, software -dnl distributed under the License is distributed on an "AS IS" BASIS, -dnl WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -dnl See the License for the specific language governing permissions and -dnl limitations under the License. - -dnl -dnl apr_common.m4: APR's general-purpose autoconf macros -dnl - -dnl -dnl APR_CONFIG_NICE(filename) -dnl -dnl Saves a snapshot of the configure command-line for later reuse -dnl -AC_DEFUN([APR_CONFIG_NICE], [ - rm -f $1 - cat >$1<> $1 - fi - if test -n "$CFLAGS"; then - echo "CFLAGS=\"$CFLAGS\"; export CFLAGS" >> $1 - fi - if test -n "$CPPFLAGS"; then - echo "CPPFLAGS=\"$CPPFLAGS\"; export CPPFLAGS" >> $1 - fi - if test -n "$LDFLAGS"; then - echo "LDFLAGS=\"$LDFLAGS\"; export LDFLAGS" >> $1 - fi - if test -n "$LTFLAGS"; then - echo "LTFLAGS=\"$LTFLAGS\"; export LTFLAGS" >> $1 - fi - if test -n "$LIBS"; then - echo "LIBS=\"$LIBS\"; export LIBS" >> $1 - fi - if test -n "$INCLUDES"; then - echo "INCLUDES=\"$INCLUDES\"; export INCLUDES" >> $1 - fi - if test -n "$NOTEST_CFLAGS"; then - echo "NOTEST_CFLAGS=\"$NOTEST_CFLAGS\"; export NOTEST_CFLAGS" >> $1 - fi - if test -n "$NOTEST_CPPFLAGS"; then - echo "NOTEST_CPPFLAGS=\"$NOTEST_CPPFLAGS\"; export NOTEST_CPPFLAGS" >> $1 - fi - if test -n "$NOTEST_LDFLAGS"; then - echo "NOTEST_LDFLAGS=\"$NOTEST_LDFLAGS\"; export NOTEST_LDFLAGS" >> $1 - fi - if test -n "$NOTEST_LIBS"; then - echo "NOTEST_LIBS=\"$NOTEST_LIBS\"; export NOTEST_LIBS" >> $1 - fi - - # Retrieve command-line arguments. - eval "set x $[0] $ac_configure_args" - shift - - for arg - do - APR_EXPAND_VAR(arg, $arg) - echo "\"[$]arg\" \\" >> $1 - done - echo '"[$]@"' >> $1 - chmod +x $1 -])dnl - -dnl APR_MKDIR_P_CHECK(fallback-mkdir-p) -dnl checks whether mkdir -p works -AC_DEFUN([APR_MKDIR_P_CHECK], [ - AC_CACHE_CHECK(for working mkdir -p, ac_cv_mkdir_p,[ - test -d conftestdir && rm -rf conftestdir - mkdir -p conftestdir/somedir >/dev/null 2>&1 - if test -d conftestdir/somedir; then - ac_cv_mkdir_p=yes - else - ac_cv_mkdir_p=no - fi - rm -rf conftestdir - ]) - if test "$ac_cv_mkdir_p" = "yes"; then - mkdir_p="mkdir -p" - else - mkdir_p="$1" - fi -]) - -dnl -dnl APR_SUBDIR_CONFIG(dir [, sub-package-cmdline-args, args-to-drop]) -dnl -dnl dir: directory to find configure in -dnl sub-package-cmdline-args: arguments to add to the invocation (optional) -dnl args-to-drop: arguments to drop from the invocation (optional) -dnl -dnl Note: This macro relies on ac_configure_args being set properly. -dnl -dnl The args-to-drop argument is shoved into a case statement, so -dnl multiple arguments can be separated with a |. -dnl -dnl Note: Older versions of autoconf do not single-quote args, while 2.54+ -dnl places quotes around every argument. So, if you want to drop the -dnl argument called --enable-layout, you must pass the third argument as: -dnl [--enable-layout=*|\'--enable-layout=*] -dnl -dnl Trying to optimize this is left as an exercise to the reader who wants -dnl to put up with more autoconf craziness. I give up. -dnl -AC_DEFUN([APR_SUBDIR_CONFIG], [ - # save our work to this point; this allows the sub-package to use it - AC_CACHE_SAVE - - echo "configuring package in $1 now" - ac_popdir=`pwd` - apr_config_subdirs="$1" - test -d $1 || $mkdir_p $1 - ac_abs_srcdir=`(cd $srcdir/$1 && pwd)` - cd $1 - -changequote(, )dnl - # A "../" for each directory in /$config_subdirs. - ac_dots=`echo $apr_config_subdirs|sed -e 's%^\./%%' -e 's%[^/]$%&/%' -e 's%[^/]*/%../%g'` -changequote([, ])dnl - - # Make the cache file pathname absolute for the subdirs - # required to correctly handle subdirs that might actually - # be symlinks - case "$cache_file" in - /*) # already absolute - ac_sub_cache_file=$cache_file ;; - *) # Was relative path. - ac_sub_cache_file="$ac_popdir/$cache_file" ;; - esac - - ifelse($3, [], [apr_configure_args=$ac_configure_args],[ - apr_configure_args= - apr_sep= - for apr_configure_arg in $ac_configure_args - do - case "$apr_configure_arg" in - $3) - continue ;; - esac - apr_configure_args="$apr_configure_args$apr_sep'$apr_configure_arg'" - apr_sep=" " - done - ]) - - dnl autoconf doesn't add --silent to ac_configure_args; explicitly pass it - test "x$silent" = "xyes" && apr_configure_args="$apr_configure_args --silent" - - dnl AC_CONFIG_SUBDIRS silences option warnings, emulate this for 2.62 - apr_configure_args="--disable-option-checking $apr_configure_args" - - dnl The eval makes quoting arguments work - specifically the second argument - dnl where the quoting mechanisms used is "" rather than []. - dnl - dnl We need to execute another shell because some autoconf/shell combinations - dnl will choke after doing repeated APR_SUBDIR_CONFIG()s. (Namely Solaris - dnl and autoconf-2.54+) - if eval $SHELL $ac_abs_srcdir/configure $apr_configure_args --cache-file=$ac_sub_cache_file --srcdir=$ac_abs_srcdir $2 - then : - echo "$1 configured properly" - else - echo "configure failed for $1" - exit 1 - fi - - cd $ac_popdir - - # grab any updates from the sub-package - AC_CACHE_LOAD -])dnl - -dnl -dnl APR_SAVE_THE_ENVIRONMENT(variable_name) -dnl -dnl Stores the variable (usually a Makefile macro) for later restoration -dnl -AC_DEFUN([APR_SAVE_THE_ENVIRONMENT], [ - apr_ste_save_$1="$$1" -])dnl - -dnl -dnl APR_RESTORE_THE_ENVIRONMENT(variable_name, prefix_) -dnl -dnl Uses the previously saved variable content to figure out what configure -dnl has added to the variable, moving the new bits to prefix_variable_name -dnl and restoring the original variable contents. This makes it possible -dnl for a user to override configure when it does something stupid. -dnl -AC_DEFUN([APR_RESTORE_THE_ENVIRONMENT], [ -dnl Check whether $apr_ste_save_$1 is empty or -dnl only whitespace. The verbatim "X" is token number 1, -dnl the following whitespace will be ignored. -set X $apr_ste_save_$1 -if test ${#} -eq 1; then - $2$1="$$1" - $1= -else - if test "x$apr_ste_save_$1" = "x$$1"; then - $2$1= - else - $2$1=`echo "$$1" | sed -e "s%${apr_ste_save_$1}%%"` - $1="$apr_ste_save_$1" - fi -fi -if test "x$silent" != "xyes"; then - echo " restoring $1 to \"$$1\"" - echo " setting $2$1 to \"$$2$1\"" -fi -AC_SUBST($2$1) -])dnl - -dnl -dnl APR_SETIFNULL(variable, value) -dnl -dnl Set variable iff it's currently null -dnl -AC_DEFUN([APR_SETIFNULL], [ - if test -z "$$1"; then - test "x$silent" != "xyes" && echo " setting $1 to \"$2\"" - $1="$2" - fi -])dnl - -dnl -dnl APR_SETVAR(variable, value) -dnl -dnl Set variable no matter what -dnl -AC_DEFUN([APR_SETVAR], [ - test "x$silent" != "xyes" && echo " forcing $1 to \"$2\"" - $1="$2" -])dnl - -dnl -dnl APR_ADDTO(variable, value) -dnl -dnl Add value to variable -dnl -AC_DEFUN([APR_ADDTO], [ - if test "x$$1" = "x"; then - test "x$silent" != "xyes" && echo " setting $1 to \"$2\"" - $1="$2" - else - apr_addto_bugger="$2" - for i in $apr_addto_bugger; do - apr_addto_duplicate="0" - for j in $$1; do - if test "x$i" = "x$j"; then - apr_addto_duplicate="1" - break - fi - done - if test $apr_addto_duplicate = "0"; then - test "x$silent" != "xyes" && echo " adding \"$i\" to $1" - $1="$$1 $i" - fi - done - fi -])dnl - -dnl -dnl APR_REMOVEFROM(variable, value) -dnl -dnl Remove a value from a variable -dnl -AC_DEFUN([APR_REMOVEFROM], [ - if test "x$$1" = "x$2"; then - test "x$silent" != "xyes" && echo " nulling $1" - $1="" - else - apr_new_bugger="" - apr_removed=0 - for i in $$1; do - if test "x$i" != "x$2"; then - apr_new_bugger="$apr_new_bugger $i" - else - apr_removed=1 - fi - done - if test $apr_removed = "1"; then - test "x$silent" != "xyes" && echo " removed \"$2\" from $1" - $1=$apr_new_bugger - fi - fi -]) dnl - -dnl -dnl APR_CHECK_DEFINE_FILES( symbol, header_file [header_file ...] ) -dnl -AC_DEFUN([APR_CHECK_DEFINE_FILES], [ - AC_CACHE_CHECK([for $1 in $2],ac_cv_define_$1,[ - ac_cv_define_$1=no - for curhdr in $2 - do - AC_EGREP_CPP(YES_IS_DEFINED, [ -#include <$curhdr> -#ifdef $1 -YES_IS_DEFINED -#endif - ], ac_cv_define_$1=yes) - done - ]) - if test "$ac_cv_define_$1" = "yes"; then - AC_DEFINE(HAVE_$1, 1, [Define if $1 is defined]) - fi -]) - - -dnl -dnl APR_CHECK_DEFINE(symbol, header_file) -dnl -AC_DEFUN([APR_CHECK_DEFINE], [ - AC_CACHE_CHECK([for $1 in $2],ac_cv_define_$1,[ - AC_EGREP_CPP(YES_IS_DEFINED, [ -#include <$2> -#ifdef $1 -YES_IS_DEFINED -#endif - ], ac_cv_define_$1=yes, ac_cv_define_$1=no) - ]) - if test "$ac_cv_define_$1" = "yes"; then - AC_DEFINE(HAVE_$1, 1, [Define if $1 is defined in $2]) - fi -]) - -dnl -dnl APR_CHECK_APR_DEFINE( symbol ) -dnl -AC_DEFUN([APR_CHECK_APR_DEFINE], [ -apr_old_cppflags=$CPPFLAGS -CPPFLAGS="$CPPFLAGS $INCLUDES" -AC_EGREP_CPP(YES_IS_DEFINED, [ -#include -#if $1 -YES_IS_DEFINED -#endif -], ac_cv_define_$1=yes, ac_cv_define_$1=no) -CPPFLAGS=$apr_old_cppflags -]) - -dnl APR_CHECK_FILE(filename); set ac_cv_file_filename to -dnl "yes" if 'filename' is readable, else "no". -dnl @deprecated! - use AC_CHECK_FILE instead -AC_DEFUN([APR_CHECK_FILE], [ -dnl Pick a safe variable name -define([apr_cvname], ac_cv_file_[]translit([$1], [./+-], [__p_])) -AC_CACHE_CHECK([for $1], [apr_cvname], -[if test -r $1; then - apr_cvname=yes - else - apr_cvname=no - fi]) -]) - -define(APR_IFALLYES,[dnl -ac_rc=yes -for ac_spec in $1; do - ac_type=`echo "$ac_spec" | sed -e 's/:.*$//'` - ac_item=`echo "$ac_spec" | sed -e 's/^.*://'` - case $ac_type in - header ) - ac_item=`echo "$ac_item" | sed 'y%./+-%__p_%'` - ac_var="ac_cv_header_$ac_item" - ;; - file ) - ac_item=`echo "$ac_item" | sed 'y%./+-%__p_%'` - ac_var="ac_cv_file_$ac_item" - ;; - func ) ac_var="ac_cv_func_$ac_item" ;; - struct ) ac_var="ac_cv_struct_$ac_item" ;; - define ) ac_var="ac_cv_define_$ac_item" ;; - custom ) ac_var="$ac_item" ;; - esac - eval "ac_val=\$$ac_var" - if test ".$ac_val" != .yes; then - ac_rc=no - break - fi -done -if test ".$ac_rc" = .yes; then - : - $2 -else - : - $3 -fi -]) - - -define(APR_BEGIN_DECISION,[dnl -ac_decision_item='$1' -ac_decision_msg='FAILED' -ac_decision='' -]) - - -AC_DEFUN([APR_DECIDE],[dnl -dnl Define the flag (or not) in apr_private.h via autoheader -AH_TEMPLATE($1, [Define if $2 will be used]) -ac_decision='$1' -ac_decision_msg='$2' -ac_decision_$1=yes -ac_decision_$1_msg='$2' -]) - - -define(APR_DECISION_OVERRIDE,[dnl - ac_decision='' - for ac_item in $1; do - eval "ac_decision_this=\$ac_decision_${ac_item}" - if test ".$ac_decision_this" = .yes; then - ac_decision=$ac_item - eval "ac_decision_msg=\$ac_decision_${ac_item}_msg" - fi - done -]) - - -define(APR_DECISION_FORCE,[dnl -ac_decision="$1" -eval "ac_decision_msg=\"\$ac_decision_${ac_decision}_msg\"" -]) - - -define(APR_END_DECISION,[dnl -if test ".$ac_decision" = .; then - echo "[$]0:Error: decision on $ac_decision_item failed" 1>&2 - exit 1 -else - if test ".$ac_decision_msg" = .; then - ac_decision_msg="$ac_decision" - fi - AC_DEFINE_UNQUOTED(${ac_decision_item}) - AC_MSG_RESULT([decision on $ac_decision_item... $ac_decision_msg]) -fi -]) - - -dnl -dnl APR_CHECK_SIZEOF_EXTENDED(INCLUDES, TYPE [, CROSS_SIZE]) -dnl -dnl A variant of AC_CHECK_SIZEOF which allows the checking of -dnl sizes of non-builtin types -dnl -AC_DEFUN([APR_CHECK_SIZEOF_EXTENDED], -[changequote(<<, >>)dnl -dnl The name to #define. -define(<>, translit(sizeof_$2, [a-z *], [A-Z_P]))dnl -dnl The cache variable name. -define(<>, translit(ac_cv_sizeof_$2, [ *], [_p]))dnl -changequote([, ])dnl -AC_MSG_CHECKING(size of $2) -AC_CACHE_VAL(AC_CV_NAME, -[AC_TRY_RUN([#include -$1 -#ifdef WIN32 -#define binmode "b" -#else -#define binmode -#endif -main() -{ - FILE *f=fopen("conftestval", "w" binmode); - if (!f) exit(1); - fprintf(f, "%d\n", sizeof($2)); - exit(0); -}], AC_CV_NAME=`cat conftestval`, AC_CV_NAME=0, ifelse([$3],,, -AC_CV_NAME=$3))])dnl -AC_MSG_RESULT($AC_CV_NAME) -AC_DEFINE_UNQUOTED(AC_TYPE_NAME, $AC_CV_NAME, [The size of ]$2) -undefine([AC_TYPE_NAME])dnl -undefine([AC_CV_NAME])dnl -]) - - -dnl -dnl APR_TRY_COMPILE_NO_WARNING(INCLUDES, FUNCTION-BODY, -dnl [ACTIONS-IF-NO-WARNINGS], [ACTIONS-IF-WARNINGS]) -dnl -dnl Tries a compile test with warnings activated so that the result -dnl is false if the code doesn't compile cleanly. For compilers -dnl where it is not known how to activate a "fail-on-error" mode, -dnl it is undefined which of the sets of actions will be run. -dnl -AC_DEFUN([APR_TRY_COMPILE_NO_WARNING], -[apr_save_CFLAGS=$CFLAGS - CFLAGS="$CFLAGS $CFLAGS_WARN" - if test "$ac_cv_prog_gcc" = "yes"; then - CFLAGS="$CFLAGS -Werror" - fi - AC_COMPILE_IFELSE( - [AC_LANG_SOURCE( - [#include "confdefs.h" - ] - [[$1]] - [int main(int argc, const char *const *argv) {] - [[$2]] - [ return 0; }] - )], - [$3], [$4]) - CFLAGS=$apr_save_CFLAGS -]) - -dnl -dnl APR_CHECK_STRERROR_R_RC -dnl -dnl Decide which style of retcode is used by this system's -dnl strerror_r(). It either returns int (0 for success, -1 -dnl for failure), or it returns a pointer to the error -dnl string. -dnl -dnl -AC_DEFUN([APR_CHECK_STRERROR_R_RC], [ -AC_MSG_CHECKING(for type of return code from strerror_r) -AC_TRY_RUN([ -#include -#include -#include -main() -{ - char buf[1024]; - if (strerror_r(ERANGE, buf, sizeof buf) < 1) { - exit(0); - } - else { - exit(1); - } -}], [ - ac_cv_strerror_r_rc_int=yes ], [ - ac_cv_strerror_r_rc_int=no ], [ - ac_cv_strerror_r_rc_int=no ] ) -if test "x$ac_cv_strerror_r_rc_int" = xyes; then - AC_DEFINE(STRERROR_R_RC_INT, 1, [Define if strerror returns int]) - msg="int" -else - msg="pointer" -fi -AC_MSG_RESULT([$msg]) -] ) - -dnl -dnl APR_CHECK_DIRENT_INODE -dnl -dnl Decide if d_fileno or d_ino are available in the dirent -dnl structure on this platform. Single UNIX Spec says d_ino, -dnl BSD uses d_fileno. Undef to find the real beast. -dnl -AC_DEFUN([APR_CHECK_DIRENT_INODE], [ -AC_CACHE_CHECK([for inode member of struct dirent], apr_cv_dirent_inode, [ -apr_cv_dirent_inode=no -AC_TRY_COMPILE([ -#include -#include -],[ -#ifdef d_ino -#undef d_ino -#endif -struct dirent de; de.d_fileno; -], apr_cv_dirent_inode=d_fileno) -if test "$apr_cv_dirent_inode" = "no"; then -AC_TRY_COMPILE([ -#include -#include -],[ -#ifdef d_fileno -#undef d_fileno -#endif -struct dirent de; de.d_ino; -], apr_cv_dirent_inode=d_ino) -fi -]) -if test "$apr_cv_dirent_inode" != "no"; then - AC_DEFINE_UNQUOTED(DIRENT_INODE, $apr_cv_dirent_inode, - [Define if struct dirent has an inode member]) -fi -]) - -dnl -dnl APR_CHECK_DIRENT_TYPE -dnl -dnl Decide if d_type is available in the dirent structure -dnl on this platform. Not part of the Single UNIX Spec. -dnl Note that this is worthless without DT_xxx macros, so -dnl look for one while we are at it. -dnl -AC_DEFUN([APR_CHECK_DIRENT_TYPE], [ -AC_CACHE_CHECK([for file type member of struct dirent], apr_cv_dirent_type,[ -apr_cv_dirent_type=no -AC_TRY_COMPILE([ -#include -#include -],[ -struct dirent de; de.d_type = DT_REG; -], apr_cv_dirent_type=d_type) -]) -if test "$apr_cv_dirent_type" != "no"; then - AC_DEFINE_UNQUOTED(DIRENT_TYPE, $apr_cv_dirent_type, - [Define if struct dirent has a d_type member]) -fi -]) - -dnl the following is a newline, a space, a tab, and a backslash (the -dnl backslash is used by the shell to skip newlines, but m4 sees it; -dnl treat it like whitespace). -dnl WARNING: don't reindent these lines, or the space/tab will be lost! -define([apr_whitespace],[ - \]) - -dnl -dnl APR_COMMA_ARGS(ARG1 ...) -dnl convert the whitespace-separated arguments into comman-separated -dnl arguments. -dnl -dnl APR_FOREACH(CODE-BLOCK, ARG1, ARG2, ...) -dnl subsitute CODE-BLOCK for each ARG[i]. "eachval" will be set to ARG[i] -dnl within each iteration. -dnl -changequote({,}) -define({APR_COMMA_ARGS},{patsubst([$}{1],[[}apr_whitespace{]+],[,])}) -define({APR_FOREACH}, - {ifelse($}{2,,, - [define([eachval], - $}{2)$}{1[]APR_FOREACH([$}{1], - builtin([shift], - builtin([shift], $}{@)))])}) -changequote([,]) - -dnl APR_FLAG_HEADERS(HEADER-FILE ... [, FLAG-TO-SET ] [, "yes" ]) -dnl we set FLAG-TO-SET to 1 if we find HEADER-FILE, otherwise we set to 0 -dnl if FLAG-TO-SET is null, we automagically determine it's name -dnl by changing all "/" to "_" in the HEADER-FILE and dropping -dnl all "." and "-" chars. If the 3rd parameter is "yes" then instead of -dnl setting to 1 or 0, we set FLAG-TO-SET to yes or no. -dnl -AC_DEFUN([APR_FLAG_HEADERS], [ -AC_CHECK_HEADERS($1) -for aprt_i in $1 -do - ac_safe=`echo "$aprt_i" | sed 'y%./+-%__p_%'` - aprt_2=`echo "$aprt_i" | sed -e 's%/%_%g' -e 's/\.//g' -e 's/-//g'` - if eval "test \"`echo '$ac_cv_header_'$ac_safe`\" = yes"; then - eval "ifelse($2,,$aprt_2,$2)=ifelse($3,yes,yes,1)" - else - eval "ifelse($2,,$aprt_2,$2)=ifelse($3,yes,no,0)" - fi -done -]) - -dnl APR_FLAG_FUNCS(FUNC ... [, FLAG-TO-SET] [, "yes" ]) -dnl if FLAG-TO-SET is null, we automagically determine it's name -dnl prepending "have_" to the function name in FUNC, otherwise -dnl we use what's provided as FLAG-TO-SET. If the 3rd parameter -dnl is "yes" then instead of setting to 1 or 0, we set FLAG-TO-SET -dnl to yes or no. -dnl -AC_DEFUN([APR_FLAG_FUNCS], [ -AC_CHECK_FUNCS($1) -for aprt_j in $1 -do - aprt_3="have_$aprt_j" - if eval "test \"`echo '$ac_cv_func_'$aprt_j`\" = yes"; then - eval "ifelse($2,,$aprt_3,$2)=ifelse($3,yes,yes,1)" - else - eval "ifelse($2,,$aprt_3,$2)=ifelse($3,yes,no,0)" - fi -done -]) - -dnl Iteratively interpolate the contents of the second argument -dnl until interpolation offers no new result. Then assign the -dnl final result to $1. -dnl -dnl Example: -dnl -dnl foo=1 -dnl bar='${foo}/2' -dnl baz='${bar}/3' -dnl APR_EXPAND_VAR(fraz, $baz) -dnl $fraz is now "1/2/3" -dnl -AC_DEFUN([APR_EXPAND_VAR], [ -ap_last= -ap_cur="$2" -while test "x${ap_cur}" != "x${ap_last}"; -do - ap_last="${ap_cur}" - ap_cur=`eval "echo ${ap_cur}"` -done -$1="${ap_cur}" -]) - -dnl -dnl Removes the value of $3 from the string in $2, strips of any leading -dnl slashes, and returns the value in $1. -dnl -dnl Example: -dnl orig_path="${prefix}/bar" -dnl APR_PATH_RELATIVE(final_path, $orig_path, $prefix) -dnl $final_path now contains "bar" -AC_DEFUN([APR_PATH_RELATIVE], [ -ap_stripped=`echo $2 | sed -e "s#^$3##"` -# check if the stripping was successful -if test "x$2" != "x${ap_stripped}"; then - # it was, so strip of any leading slashes - $1="`echo ${ap_stripped} | sed -e 's#^/*##'`" -else - # it wasn't so return the original - $1="$2" -fi -]) - -dnl APR_HELP_STRING(LHS, RHS) -dnl Autoconf 2.50 can not handle substr correctly. It does have -dnl AC_HELP_STRING, so let's try to call it if we can. -dnl Note: this define must be on one line so that it can be properly returned -dnl as the help string. When using this macro with a multi-line RHS, ensure -dnl that you surround the macro invocation with []s -AC_DEFUN([APR_HELP_STRING], [ifelse(regexp(AC_ACVERSION, 2\.1), -1, AC_HELP_STRING([$1],[$2]),[ ][$1] substr([ ],len($1))[$2])]) - -dnl -dnl APR_LAYOUT(configlayout, layoutname [, extravars]) -dnl -AC_DEFUN([APR_LAYOUT], [ - if test ! -f $srcdir/config.layout; then - echo "** Error: Layout file $srcdir/config.layout not found" - echo "** Error: Cannot use undefined layout '$LAYOUT'" - exit 1 - fi - # Catch layout names including a slash which will otherwise - # confuse the heck out of the sed script. - case $2 in - */*) - echo "** Error: $2 is not a valid layout name" - exit 1 ;; - esac - pldconf=./config.pld - changequote({,}) - sed -e "1s/[ ]*<[lL]ayout[ ]*$2[ ]*>[ ]*//;1t" \ - -e "1,/[ ]*<[lL]ayout[ ]*$2[ ]*>[ ]*/d" \ - -e '/[ ]*<\/Layout>[ ]*/,$d' \ - -e "s/^[ ]*//g" \ - -e "s/:[ ]*/=\'/g" \ - -e "s/[ ]*$/'/g" \ - $1 > $pldconf - layout_name=$2 - if test ! -s $pldconf; then - echo "** Error: unable to find layout $layout_name" - exit 1 - fi - . $pldconf - rm $pldconf - for var in prefix exec_prefix bindir sbindir libexecdir mandir \ - sysconfdir datadir includedir localstatedir runtimedir \ - logfiledir libdir installbuilddir libsuffix $3; do - eval "val=\"\$$var\"" - case $val in - *+) - val=`echo $val | sed -e 's;\+$;;'` - eval "$var=\"\$val\"" - autosuffix=yes - ;; - *) - autosuffix=no - ;; - esac - val=`echo $val | sed -e 's:\(.\)/*$:\1:'` - val=`echo $val | sed -e 's:[\$]\([a-z_]*\):${\1}:g'` - if test "$autosuffix" = "yes"; then - if echo $val | grep apache >/dev/null; then - addtarget=no - else - addtarget=yes - fi - if test "$addtarget" = "yes"; then - val="$val/apache2" - fi - fi - eval "$var='$val'" - done - changequote([,]) -])dnl - -dnl -dnl APR_ENABLE_LAYOUT(default layout name [, extra vars]) -dnl -AC_DEFUN([APR_ENABLE_LAYOUT], [ -AC_ARG_ENABLE(layout, -[ --enable-layout=LAYOUT],[ - LAYOUT=$enableval -]) - -if test -z "$LAYOUT"; then - LAYOUT="$1" -fi -APR_LAYOUT($srcdir/config.layout, $LAYOUT, $2) - -AC_MSG_CHECKING(for chosen layout) -AC_MSG_RESULT($layout_name) -]) - - -dnl -dnl APR_PARSE_ARGUMENTS -dnl a reimplementation of autoconf's argument parser, -dnl used here to allow us to co-exist layouts and argument based -dnl set ups. -AC_DEFUN([APR_PARSE_ARGUMENTS], [ -ac_prev= -# Retrieve the command-line arguments. The eval is needed because -# the arguments are quoted to preserve accuracy. -eval "set x $ac_configure_args" -shift -for ac_option -do - # If the previous option needs an argument, assign it. - if test -n "$ac_prev"; then - eval "$ac_prev=\$ac_option" - ac_prev= - continue - fi - - ac_optarg=`expr "x$ac_option" : 'x[[^=]]*=\(.*\)'` - - case $ac_option in - - -bindir | --bindir | --bindi | --bind | --bin | --bi) - ac_prev=bindir ;; - -bindir=* | --bindir=* | --bindi=* | --bind=* | --bin=* | --bi=*) - bindir="$ac_optarg" ;; - - -datadir | --datadir | --datadi | --datad | --data | --dat | --da) - ac_prev=datadir ;; - -datadir=* | --datadir=* | --datadi=* | --datad=* | --data=* | --dat=* \ - | --da=*) - datadir="$ac_optarg" ;; - - -exec-prefix | --exec_prefix | --exec-prefix | --exec-prefi \ - | --exec-pref | --exec-pre | --exec-pr | --exec-p | --exec- \ - | --exec | --exe | --ex) - ac_prev=exec_prefix ;; - -exec-prefix=* | --exec_prefix=* | --exec-prefix=* | --exec-prefi=* \ - | --exec-pref=* | --exec-pre=* | --exec-pr=* | --exec-p=* | --exec-=* \ - | --exec=* | --exe=* | --ex=*) - exec_prefix="$ac_optarg" ;; - - -includedir | --includedir | --includedi | --included | --include \ - | --includ | --inclu | --incl | --inc) - ac_prev=includedir ;; - -includedir=* | --includedir=* | --includedi=* | --included=* | --include=* \ - | --includ=* | --inclu=* | --incl=* | --inc=*) - includedir="$ac_optarg" ;; - - -infodir | --infodir | --infodi | --infod | --info | --inf) - ac_prev=infodir ;; - -infodir=* | --infodir=* | --infodi=* | --infod=* | --info=* | --inf=*) - infodir="$ac_optarg" ;; - - -libdir | --libdir | --libdi | --libd) - ac_prev=libdir ;; - -libdir=* | --libdir=* | --libdi=* | --libd=*) - libdir="$ac_optarg" ;; - - -libexecdir | --libexecdir | --libexecdi | --libexecd | --libexec \ - | --libexe | --libex | --libe) - ac_prev=libexecdir ;; - -libexecdir=* | --libexecdir=* | --libexecdi=* | --libexecd=* | --libexec=* \ - | --libexe=* | --libex=* | --libe=*) - libexecdir="$ac_optarg" ;; - - -localstatedir | --localstatedir | --localstatedi | --localstated \ - | --localstate | --localstat | --localsta | --localst \ - | --locals | --local | --loca | --loc | --lo) - ac_prev=localstatedir ;; - -localstatedir=* | --localstatedir=* | --localstatedi=* | --localstated=* \ - | --localstate=* | --localstat=* | --localsta=* | --localst=* \ - | --locals=* | --local=* | --loca=* | --loc=* | --lo=*) - localstatedir="$ac_optarg" ;; - - -mandir | --mandir | --mandi | --mand | --man | --ma | --m) - ac_prev=mandir ;; - -mandir=* | --mandir=* | --mandi=* | --mand=* | --man=* | --ma=* | --m=*) - mandir="$ac_optarg" ;; - - -prefix | --prefix | --prefi | --pref | --pre | --pr | --p) - ac_prev=prefix ;; - -prefix=* | --prefix=* | --prefi=* | --pref=* | --pre=* | --pr=* | --p=*) - prefix="$ac_optarg" ;; - - -sbindir | --sbindir | --sbindi | --sbind | --sbin | --sbi | --sb) - ac_prev=sbindir ;; - -sbindir=* | --sbindir=* | --sbindi=* | --sbind=* | --sbin=* \ - | --sbi=* | --sb=*) - sbindir="$ac_optarg" ;; - - -sharedstatedir | --sharedstatedir | --sharedstatedi \ - | --sharedstated | --sharedstate | --sharedstat | --sharedsta \ - | --sharedst | --shareds | --shared | --share | --shar \ - | --sha | --sh) - ac_prev=sharedstatedir ;; - -sharedstatedir=* | --sharedstatedir=* | --sharedstatedi=* \ - | --sharedstated=* | --sharedstate=* | --sharedstat=* | --sharedsta=* \ - | --sharedst=* | --shareds=* | --shared=* | --share=* | --shar=* \ - | --sha=* | --sh=*) - sharedstatedir="$ac_optarg" ;; - - -sysconfdir | --sysconfdir | --sysconfdi | --sysconfd | --sysconf \ - | --syscon | --sysco | --sysc | --sys | --sy) - ac_prev=sysconfdir ;; - -sysconfdir=* | --sysconfdir=* | --sysconfdi=* | --sysconfd=* | --sysconf=* \ - | --syscon=* | --sysco=* | --sysc=* | --sys=* | --sy=*) - sysconfdir="$ac_optarg" ;; - - esac -done - -# Be sure to have absolute paths. -for ac_var in exec_prefix prefix -do - eval ac_val=$`echo $ac_var` - case $ac_val in - [[\\/$]]* | ?:[[\\/]]* | NONE | '' ) ;; - *) AC_MSG_ERROR([expected an absolute path for --$ac_var: $ac_val]);; - esac -done - -])dnl - -dnl -dnl APR_CHECK_DEPEND -dnl -dnl Determine what program we can use to generate .deps-style dependencies -dnl -AC_DEFUN([APR_CHECK_DEPEND], [ -dnl Try to determine what depend program we can use -dnl All GCC-variants should have -MM. -dnl If not, then we can check on those, too. -if test "$GCC" = "yes"; then - MKDEP='$(CC) -MM' -else - rm -f conftest.c -dnl should be available everywhere! - cat > conftest.c < - int main() { return 0; } -EOF - MKDEP="true" - for i in "$CC -MM" "$CC -M" "$CPP -MM" "$CPP -M" "cpp -M"; do - AC_MSG_CHECKING([if $i can create proper make dependencies]) - if $i conftest.c 2>/dev/null | grep 'conftest.o: conftest.c' >/dev/null; then - MKDEP=$i - AC_MSG_RESULT(yes) - break; - fi - AC_MSG_RESULT(no) - done - rm -f conftest.c -fi - -AC_SUBST(MKDEP) -]) - -dnl -dnl APR_CHECK_TYPES_COMPATIBLE(TYPE-1, TYPE-2, [ACTION-IF-TRUE]) -dnl -dnl Try to determine whether two types are the same. Only works -dnl for gcc and icc. -dnl -AC_DEFUN([APR_CHECK_TYPES_COMPATIBLE], [ -define([apr_cvname], apr_cv_typematch_[]translit([$1], [ ], [_])_[]translit([$2], [ ], [_])) -AC_CACHE_CHECK([whether $1 and $2 are the same], apr_cvname, [ -AC_TRY_COMPILE(AC_INCLUDES_DEFAULT, [ - int foo[0 - !__builtin_types_compatible_p($1, $2)]; -], [apr_cvname=yes -$3], [apr_cvname=no])]) -]) diff --git a/libs/unimrcp/build/acmacros/apu.m4 b/libs/unimrcp/build/acmacros/apu.m4 deleted file mode 100644 index 0399751157b..00000000000 --- a/libs/unimrcp/build/acmacros/apu.m4 +++ /dev/null @@ -1,2 +0,0 @@ -dnl The macro UNIMRCP_CHECK_APU() has been merged with the macro UNIMRCP_CHECK_APR(). -dnl This file is no longer used and pending for removal. diff --git a/libs/unimrcp/build/acmacros/ax_compiler_vendor.m4 b/libs/unimrcp/build/acmacros/ax_compiler_vendor.m4 deleted file mode 100644 index 2f8d0802497..00000000000 --- a/libs/unimrcp/build/acmacros/ax_compiler_vendor.m4 +++ /dev/null @@ -1,41 +0,0 @@ -dnl Determine the vendor of the C/C++ compiler, e.g., gnu, intel, ibm, sun, -dnl hp, borland, comeau, dec, cray, kai, lcc, metrowerks, sgi, microsoft, -dnl watcom, etc. The vendor is returned in the cache variable -dnl $ax_cv_c_compiler_vendor for C and $ax_cv_cxx_compiler_vendor for C++. - -AC_DEFUN([AX_COMPILER_VENDOR], -[AC_CACHE_CHECK([for _AC_LANG compiler vendor], ax_cv_[]_AC_LANG_ABBREV[]_compiler_vendor, - [dnl note: don't check for gcc first since some other compilers define __GNUC__ - vendors="intel: __ICC,__ECC,__INTEL_COMPILER - ibm: __xlc__,__xlC__,__IBMC__,__IBMCPP__ - pathscale: __PATHCC__,__PATHSCALE__ - clang: __clang__ - gnu: __GNUC__ - sun: __SUNPRO_C,__SUNPRO_CC - hp: __HP_cc,__HP_aCC - dec: __DECC,__DECCXX,__DECC_VER,__DECCXX_VER - borland: __BORLANDC__,__TURBOC__ - comeau: __COMO__ - cray: _CRAYC - kai: __KCC - lcc: __LCC__ - sgi: __sgi,sgi - microsoft: _MSC_VER - metrowerks: __MWERKS__ - watcom: __WATCOMC__ - portland: __PGI - unknown: UNKNOWN" - for ventest in $vendors; do - case $ventest in - *:) vendor=$ventest; continue ;; - *) vencpp="defined("`echo $ventest | sed 's/,/) || defined(/g'`")" ;; - esac - AC_COMPILE_IFELSE([AC_LANG_PROGRAM(,[ - #if !($vencpp) - thisisanerror; - #endif - ])], [break]) - done - ax_cv_[]_AC_LANG_ABBREV[]_compiler_vendor=`echo $vendor | cut -d: -f1` - ]) -]) diff --git a/libs/unimrcp/build/acmacros/find_apr.m4 b/libs/unimrcp/build/acmacros/find_apr.m4 deleted file mode 100644 index 048cb7bfc8b..00000000000 --- a/libs/unimrcp/build/acmacros/find_apr.m4 +++ /dev/null @@ -1,167 +0,0 @@ -dnl -------------------------------------------------------- -*- autoconf -*- -dnl Licensed to the Apache Software Foundation (ASF) under one or more -dnl contributor license agreements. See the NOTICE file distributed with -dnl this work for additional information regarding copyright ownership. -dnl The ASF licenses this file to You under the Apache License, Version 2.0 -dnl (the "License"); you may not use this file except in compliance with -dnl the License. You may obtain a copy of the License at -dnl -dnl http://www.apache.org/licenses/LICENSE-2.0 -dnl -dnl Unless required by applicable law or agreed to in writing, software -dnl distributed under the License is distributed on an "AS IS" BASIS, -dnl WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -dnl See the License for the specific language governing permissions and -dnl limitations under the License. - -dnl -dnl find_apr.m4 : locate the APR include files and libraries -dnl -dnl This macro file can be used by applications to find and use the APR -dnl library. It provides a standardized mechanism for using APR. It supports -dnl embedding APR into the application source, or locating an installed -dnl copy of APR. -dnl -dnl APR_FIND_APR(srcdir, builddir, implicit-install-check, acceptable-majors) -dnl -dnl where srcdir is the location of the bundled APR source directory, or -dnl empty if source is not bundled. -dnl -dnl where builddir is the location where the bundled APR will will be built, -dnl or empty if the build will occur in the srcdir. -dnl -dnl where implicit-install-check set to 1 indicates if there is no -dnl --with-apr option specified, we will look for installed copies. -dnl -dnl where acceptable-majors is a space separated list of acceptable major -dnl version numbers. Often only a single major version will be acceptable. -dnl If multiple versions are specified, and --with-apr=PREFIX or the -dnl implicit installed search are used, then the first (leftmost) version -dnl in the list that is found will be used. Currently defaults to [0 1]. -dnl -dnl Sets the following variables on exit: -dnl -dnl apr_found : "yes", "no", "reconfig" -dnl -dnl apr_config : If the apr-config tool exists, this refers to it. If -dnl apr_found is "reconfig", then the bundled directory -dnl should be reconfigured *before* using apr_config. -dnl -dnl Note: this macro file assumes that apr-config has been installed; it -dnl is normally considered a required part of an APR installation. -dnl -dnl If a bundled source directory is available and needs to be (re)configured, -dnl then apr_found is set to "reconfig". The caller should reconfigure the -dnl (passed-in) source directory, placing the result in the build directory, -dnl as appropriate. -dnl -dnl If apr_found is "yes" or "reconfig", then the caller should use the -dnl value of apr_config to fetch any necessary build/link information. -dnl - -AC_DEFUN([APR_FIND_APR], [ - apr_found="no" - - if test "$target_os" = "os2-emx"; then - # Scripts don't pass test -x on OS/2 - TEST_X="test -f" - else - TEST_X="test -x" - fi - - ifelse([$4], [], [ - ifdef(AC_WARNING,AC_WARNING([$0: missing argument 4 (acceptable-majors): Defaulting to APR 0.x then APR 1.x])) - acceptable_majors="0 1"], - [acceptable_majors="$4"]) - - apr_temp_acceptable_apr_config="" - for apr_temp_major in $acceptable_majors - do - case $apr_temp_major in - 0) - apr_temp_acceptable_apr_config="$apr_temp_acceptable_apr_config apr-config" - ;; - *) - apr_temp_acceptable_apr_config="$apr_temp_acceptable_apr_config apr-$apr_temp_major-config" - ;; - esac - done - - AC_MSG_CHECKING(for APR) - AC_ARG_WITH(apr, - [ --with-apr=PATH prefix for installed APR, path to APR build tree, - or the full path to apr-config], - [ - if test "$withval" = "no" || test "$withval" = "yes"; then - AC_MSG_ERROR([--with-apr requires a directory or file to be provided]) - fi - - for apr_temp_apr_config_file in $apr_temp_acceptable_apr_config - do - for lookdir in "$withval/bin" "$withval" - do - if $TEST_X "$lookdir/$apr_temp_apr_config_file"; then - apr_found="yes" - apr_config="$lookdir/$apr_temp_apr_config_file" - break 2 - fi - done - done - - if test "$apr_found" != "yes" && $TEST_X "$withval" && $withval --help > /dev/null 2>&1 ; then - apr_found="yes" - apr_config="$withval" - fi - - dnl if --with-apr is used, it is a fatal error for its argument - dnl to be invalid - if test "$apr_found" != "yes"; then - AC_MSG_ERROR([the --with-apr parameter is incorrect. It must specify an install prefix, a build directory, or an apr-config file.]) - fi - ],[ - dnl If we allow installed copies, check those before using bundled copy. - if test -n "$3" && test "$3" = "1"; then - for apr_temp_apr_config_file in $apr_temp_acceptable_apr_config - do - if $apr_temp_apr_config_file --help > /dev/null 2>&1 ; then - apr_found="yes" - apr_config="$apr_temp_apr_config_file" - break - else - dnl look in some standard places - for lookdir in /usr /usr/local /usr/local/apr /opt/apr; do - if $TEST_X "$lookdir/bin/$apr_temp_apr_config_file"; then - apr_found="yes" - apr_config="$lookdir/bin/$apr_temp_apr_config_file" - break 2 - fi - done - fi - done - fi - dnl if we have not found anything yet and have bundled source, use that - if test "$apr_found" = "no" && test -d "$1"; then - apr_temp_abs_srcdir="`cd $1 && pwd`" - apr_found="reconfig" - apr_bundled_major="`sed -n '/#define.*APR_MAJOR_VERSION/s/^[^0-9]*\([0-9]*\).*$/\1/p' \"$1/include/apr_version.h\"`" - case $apr_bundled_major in - "") - AC_MSG_ERROR([failed to find major version of bundled APR]) - ;; - 0) - apr_temp_apr_config_file="apr-config" - ;; - *) - apr_temp_apr_config_file="apr-$apr_bundled_major-config" - ;; - esac - if test -n "$2"; then - apr_config="$2/$apr_temp_apr_config_file" - else - apr_config="$1/$apr_temp_apr_config_file" - fi - fi - ]) - - AC_MSG_RESULT($apr_found) -]) diff --git a/libs/unimrcp/build/acmacros/find_apu.m4 b/libs/unimrcp/build/acmacros/find_apu.m4 deleted file mode 100644 index e29bc60923d..00000000000 --- a/libs/unimrcp/build/acmacros/find_apu.m4 +++ /dev/null @@ -1,176 +0,0 @@ -dnl -------------------------------------------------------- -*- autoconf -*- -dnl Copyright 2002-2005 The Apache Software Foundation or its licensors, as -dnl applicable. -dnl -dnl Licensed under the Apache License, Version 2.0 (the "License"); -dnl you may not use this file except in compliance with the License. -dnl You may obtain a copy of the License at -dnl -dnl http://www.apache.org/licenses/LICENSE-2.0 -dnl -dnl Unless required by applicable law or agreed to in writing, software -dnl distributed under the License is distributed on an "AS IS" BASIS, -dnl WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -dnl See the License for the specific language governing permissions and -dnl limitations under the License. - -dnl -dnl find_apu.m4 : locate the APR-util (APU) include files and libraries -dnl -dnl This macro file can be used by applications to find and use the APU -dnl library. It provides a standardized mechanism for using APU. It supports -dnl embedding APU into the application source, or locating an installed -dnl copy of APU. -dnl -dnl APR_FIND_APU(srcdir, builddir, implicit-install-check, acceptable-majors) -dnl -dnl where srcdir is the location of the bundled APU source directory, or -dnl empty if source is not bundled. -dnl -dnl where builddir is the location where the bundled APU will be built, -dnl or empty if the build will occur in the srcdir. -dnl -dnl where implicit-install-check set to 1 indicates if there is no -dnl --with-apr-util option specified, we will look for installed copies. -dnl -dnl where acceptable-majors is a space separated list of acceptable major -dnl version numbers. Often only a single major version will be acceptable. -dnl If multiple versions are specified, and --with-apr-util=PREFIX or the -dnl implicit installed search are used, then the first (leftmost) version -dnl in the list that is found will be used. Currently defaults to [0 1]. -dnl -dnl Sets the following variables on exit: -dnl -dnl apu_found : "yes", "no", "reconfig" -dnl -dnl apu_config : If the apu-config tool exists, this refers to it. If -dnl apu_found is "reconfig", then the bundled directory -dnl should be reconfigured *before* using apu_config. -dnl -dnl Note: this macro file assumes that apr-config has been installed; it -dnl is normally considered a required part of an APR installation. -dnl -dnl Note: At this time, we cannot find *both* a source dir and a build dir. -dnl If both are available, the build directory should be passed to -dnl the --with-apr-util switch. -dnl -dnl Note: the installation layout is presumed to follow the standard -dnl PREFIX/lib and PREFIX/include pattern. If the APU config file -dnl is available (and can be found), then non-standard layouts are -dnl possible, since it will be described in the config file. -dnl -dnl If a bundled source directory is available and needs to be (re)configured, -dnl then apu_found is set to "reconfig". The caller should reconfigure the -dnl (passed-in) source directory, placing the result in the build directory, -dnl as appropriate. -dnl -dnl If apu_found is "yes" or "reconfig", then the caller should use the -dnl value of apu_config to fetch any necessary build/link information. -dnl - -AC_DEFUN([APR_FIND_APU], [ - apu_found="no" - - if test "$target_os" = "os2-emx"; then - # Scripts don't pass test -x on OS/2 - TEST_X="test -f" - else - TEST_X="test -x" - fi - - ifelse([$4], [], - [ - ifdef(AC_WARNING,([$0: missing argument 4 (acceptable-majors): Defaulting to APU 0.x then APU 1.x])) - acceptable_majors="0 1" - ], [acceptable_majors="$4"]) - - apu_temp_acceptable_apu_config="" - for apu_temp_major in $acceptable_majors - do - case $apu_temp_major in - 0) - apu_temp_acceptable_apu_config="$apu_temp_acceptable_apu_config apu-config" - ;; - *) - apu_temp_acceptable_apu_config="$apu_temp_acceptable_apu_config apu-$apu_temp_major-config" - ;; - esac - done - - AC_MSG_CHECKING(for APR-util) - AC_ARG_WITH(apr-util, - [ --with-apr-util=PATH prefix for installed APU, path to APU build tree, - or the full path to apu-config], - [ - if test "$withval" = "no" || test "$withval" = "yes"; then - AC_MSG_ERROR([--with-apr-util requires a directory or file to be provided]) - fi - - for apu_temp_apu_config_file in $apu_temp_acceptable_apu_config - do - for lookdir in "$withval/bin" "$withval" - do - if $TEST_X "$lookdir/$apu_temp_apu_config_file"; then - apu_found="yes" - apu_config="$lookdir/$apu_temp_apu_config_file" - break 2 - fi - done - done - - if test "$apu_found" != "yes" && $TEST_X "$withval" && $withval --help > /dev/null 2>&1 ; then - apu_found="yes" - apu_config="$withval" - fi - - dnl if --with-apr-util is used, it is a fatal error for its argument - dnl to be invalid - if test "$apu_found" != "yes"; then - AC_MSG_ERROR([the --with-apr-util parameter is incorrect. It must specify an install prefix, a build directory, or an apu-config file.]) - fi - ],[ - if test -n "$3" && test "$3" = "1"; then - for apu_temp_apu_config_file in $apu_temp_acceptable_apu_config - do - if $apu_temp_apu_config_file --help > /dev/null 2>&1 ; then - apu_found="yes" - apu_config="$apu_temp_apu_config_file" - break - else - dnl look in some standard places (apparently not in builtin/default) - for lookdir in /usr /usr/local /usr/local/apr /opt/apr /usr/local/apache2 ; do - if $TEST_X "$lookdir/bin/$apu_temp_apu_config_file"; then - apu_found="yes" - apu_config="$lookdir/bin/$apu_temp_apu_config_file" - break 2 - fi - done - fi - done - fi - dnl if we have not found anything yet and have bundled source, use that - if test "$apu_found" = "no" && test -d "$1"; then - apu_temp_abs_srcdir="`cd $1 && pwd`" - apu_found="reconfig" - apu_bundled_major="`sed -n '/#define.*APU_MAJOR_VERSION/s/^[^0-9]*\([0-9]*\).*$/\1/p' \"$1/include/apu_version.h\"`" - case $apu_bundled_major in - "") - AC_MSG_ERROR([failed to find major version of bundled APU]) - ;; - 0) - apu_temp_apu_config_file="apu-config" - ;; - *) - apu_temp_apu_config_file="apu-$apu_bundled_major-config" - ;; - esac - if test -n "$2"; then - apu_config="$2/$apu_temp_apu_config_file" - else - apu_config="$1/$apu_temp_apu_config_file" - fi - fi - ]) - - AC_MSG_RESULT($apu_found) -]) diff --git a/libs/unimrcp/build/acmacros/sofia-sip.m4 b/libs/unimrcp/build/acmacros/sofia-sip.m4 deleted file mode 100644 index ef1dfcb8d9b..00000000000 --- a/libs/unimrcp/build/acmacros/sofia-sip.m4 +++ /dev/null @@ -1,85 +0,0 @@ -dnl -dnl UNIMRCP_CHECK_SOFIA -dnl -dnl This macro attempts to find the Sofia-SIP library and -dnl set corresponding variables on exit. -dnl -AC_DEFUN([UNIMRCP_CHECK_SOFIA], -[ - AC_MSG_NOTICE([Sofia SIP library configuration]) - - AC_MSG_CHECKING([for Sofia-SIP]) - AC_ARG_WITH(sofia-sip, - [ --with-sofia-sip=PATH prefix for installed Sofia-SIP, - path to Sofia-SIP source/build tree, - or the full path to Sofia-SIP pkg-config], - [sofia_path=$withval], - [sofia_path="/usr/local"] - ) - - found_sofia="no" - - if test -n "$PKG_CONFIG"; then - dnl Check for installed Sofia-SIP - for dir in $sofia_path ; do - sofia_config_path=$dir/lib/pkgconfig/sofia-sip-ua.pc - if test -f "$sofia_config_path" && $PKG_CONFIG $sofia_config_path > /dev/null 2>&1; then - found_sofia="yes" - break - fi - done - - dnl Check for installed Sofia-SIP in PKG_CONFIG_PATH - if test "$found_sofia" != "yes" && $PKG_CONFIG sofia-sip-ua > /dev/null 2>&1 ; then - found_sofia="yes" - sofia_config_path="sofia-sip-ua" - fi - - dnl Check for full path to Sofia-SIP pkg-config file - if test "$found_sofia" != "yes" && test -f "$sofia_path" && $PKG_CONFIG $sofia_path > /dev/null 2>&1 ; then - found_sofia="yes" - sofia_config_path=$sofia_path - fi - - if test "$found_sofia" = "yes" ; then - UNIMRCP_SOFIA_INCLUDES="`$PKG_CONFIG --cflags $sofia_config_path`" - UNIMRCP_SOFIA_LIBS="`$PKG_CONFIG --libs $sofia_config_path`" - sofia_version="`$PKG_CONFIG --modversion $sofia_config_path`" - fi - fi - - if test "$found_sofia" != "yes" ; then - dnl Check for path to Sofia-SIP source/build tree - for dir in $sofia_path ; do - sofia_uadir="$dir/libsofia-sip-ua" - if test -d "$sofia_uadir"; then - found_sofia="yes" - sofia_abs_uadir="`cd $sofia_uadir && pwd`" - UNIMRCP_SOFIA_INCLUDES="-I$sofia_abs_uadir -I$sofia_abs_uadir/bnf -I$sofia_abs_uadir/features -I$sofia_abs_uadir/http -I$sofia_abs_uadir/ipt -I$sofia_abs_uadir/iptsec -I$sofia_abs_uadir/msg -I$sofia_abs_uadir/nea -I$sofia_abs_uadir/nta -I$sofia_abs_uadir/nth -I$sofia_abs_uadir/nua -I$sofia_abs_uadir/sdp -I$sofia_abs_uadir/sip -I$sofia_abs_uadir/soa -I$sofia_abs_uadir/sresolv -I$sofia_abs_uadir/stun -I$sofia_abs_uadir/su -I$sofia_abs_uadir/tport -I$sofia_abs_uadir/url" - UNIMRCP_SOFIA_LIBS="$sofia_abs_uadir/libsofia-sip-ua.la" - sofia_version="`sed -n 's/#define SOFIA_SIP_VERSION.* "\(.*\)"/\1/p' $sofia_uadir/features/sofia-sip/sofia_features.h`" - break - fi - done - fi - - if test $found_sofia != "yes" ; then - if test -n "$PKG_CONFIG"; then - AC_MSG_ERROR(Cannot find Sofia-SIP - looked for sofia-config and libsofia-sip-ua in $sofia_path) - else - AC_MSG_ERROR(Cannot find Sofia-SIP - pkg-config not available, looked for libsofia-sip-ua in $sofia_path) - fi - else - AC_MSG_RESULT([$found_sofia]) - AC_MSG_RESULT([$sofia_version]) - -case "$host" in - *darwin*) - UNIMRCP_SOFIA_LIBS="$UNIMRCP_SOFIA_LIBS -framework CoreFoundation -framework SystemConfiguration" - ;; -esac - - AC_SUBST(UNIMRCP_SOFIA_INCLUDES) - AC_SUBST(UNIMRCP_SOFIA_LIBS) - fi -]) diff --git a/libs/unimrcp/build/acmacros/uni_plugin.m4 b/libs/unimrcp/build/acmacros/uni_plugin.m4 deleted file mode 100644 index 6a33b1b6385..00000000000 --- a/libs/unimrcp/build/acmacros/uni_plugin.m4 +++ /dev/null @@ -1,45 +0,0 @@ -dnl -dnl UNI_PLUGIN_ENABLED(name) -dnl -dnl where name is the name of the plugin. -dnl -dnl This macro can be used for a plugin which must be enabled by default. -dnl -dnl Adds the following argument to the configure script: -dnl -dnl --disable-$1-plugin -dnl -dnl Sets the following variable on exit: -dnl -dnl enable_$1_plugin : "yes" or "no" -dnl -AC_DEFUN([UNI_PLUGIN_ENABLED],[ - AC_ARG_ENABLE( - [$1-plugin], - [AC_HELP_STRING([--disable-$1-plugin],[exclude $1 plugin from build])], - [enable_$1_plugin="$enableval"], - [enable_$1_plugin="yes"]) -]) - -dnl -dnl UNI_PLUGIN_DISABLED(name) -dnl -dnl where name is the name of the plugin. -dnl -dnl This macro can be used for a plugin which must be disabled by default. -dnl -dnl Adds the following argument to the configure script: -dnl -dnl --enable-$1-plugin -dnl -dnl Sets the following variable on exit: -dnl -dnl enable_$1_plugin : "yes" or "no" -dnl -AC_DEFUN([UNI_PLUGIN_DISABLED],[ - AC_ARG_ENABLE( - [$1-plugin], - [AC_HELP_STRING([--enable-$1-plugin],[include $1 plugin in build])], - [enable_$1_plugin="$enableval"], - [enable_$1_plugin="no"]) -]) diff --git a/libs/unimrcp/build/get-version.sh b/libs/unimrcp/build/get-version.sh deleted file mode 100755 index fd685b22a8d..00000000000 --- a/libs/unimrcp/build/get-version.sh +++ /dev/null @@ -1,37 +0,0 @@ -#!/bin/sh -# -# extract version numbers from a header file -# -# USAGE: get-version.sh CMD VERSION_HEADER PREFIX -# where CMD is one of: all, major, libtool -# where PREFIX is the prefix to {MAJOR|MINOR|PATCH}_VERSION defines -# -# get-version.sh all returns a dotted version number -# get-version.sh major returns just the major version number -# get-version.sh libtool returns a version "libtool -version-info" format -# - -if test $# != 3; then - echo "USAGE: $0 CMD VERSION_HEADER PREFIX" - echo " where CMD is one of: all, major, libtool" - exit 1 -fi - -major_sed="/#define.*$3_MAJOR_VERSION/s/^[^0-9]*\([0-9]*\).*$/\1/p" -minor_sed="/#define.*$3_MINOR_VERSION/s/^[^0-9]*\([0-9]*\).*$/\1/p" -patch_sed="/#define.*$3_PATCH_VERSION/s/^[^0-9]*\([0-9]*\).*$/\1/p" -major="`sed -n $major_sed $2`" -minor="`sed -n $minor_sed $2`" -patch="`sed -n $patch_sed $2`" - -if test "$1" = "all"; then - echo ${major}.${minor}.${patch} -elif test "$1" = "major"; then - echo ${major} -elif test "$1" = "libtool"; then - # Yes, ${minor}:${patch}:${minor} is correct due to libtool idiocy. - echo ${minor}:${patch}:${minor} -else - echo "ERROR: unknown version CMD ($1)" - exit 1 -fi diff --git a/libs/unimrcp/build/init.d/unimrcp-server b/libs/unimrcp/build/init.d/unimrcp-server deleted file mode 100755 index 3518e23fa1d..00000000000 --- a/libs/unimrcp/build/init.d/unimrcp-server +++ /dev/null @@ -1,270 +0,0 @@ -#!/bin/sh -# -# unimrcp-server This shell script takes care of starting and stopping the UniMRCP server. -# -# chkconfig: 2345 65 35 -# description: UniMRCP is an open source MRCP v1 & v2 server. - -# Some global variables - -# Application -APP_NAME="unimrcpserver" -APP_LONG_NAME="UniMRCP Server" -UNIMRCP_DIR="/usr/local/unimrcp/" -DAEMON_ARGS="-d -r ${UNIMRCP_DIR}" -APP_ARGS="-o 2" - -EXEC="${UNIMRCP_DIR}bin/${APP_NAME}" - -# sudo user -USERNAME=root - -# Priority at which to run the server. See "man nice" for valid priorities. -# nice is only used if a priority is specified. -PRIORITY= - -# Location of the pid file. -PIDDIR="/var/run/" -pid= - -if [ -e $PIDDIR ]; then - echo -else - mkdir $PIDDIR -fi - -# Allow configuration overrides in /etc/sysconfig/$APP_NAME -CONFIGFILE=/etc/sysconfig/$APP_NAME - -[ -x $CONFIGFILE ] && . $CONFIGFILE - -# Do not modify anything beyond this point -#----------------------------------------------------------------------------- - -# Get the fully qualified path to the script -case $0 in - /*) - SCRIPT="$0" - ;; - *) - PWD=`pwd` - SCRIPT="$PWD/$0" - ;; -esac - -# Change spaces to ":" so the tokens can be parsed. -SCRIPT=`echo $SCRIPT | sed -e 's; ;:;g'` -# Get the real path to this script, resolving any symbolic links -TOKENS=`echo $SCRIPT | sed -e 's;/; ;g'` -REALPATH= -for C in $TOKENS; do - REALPATH="$REALPATH/$C" - while [ -h "$REALPATH" ] ; do - LS="`ls -ld "$REALPATH"`" - LINK="`expr "$LS" : '.*-> \(.*\)$'`" - if expr "$LINK" : '/.*' > /dev/null; then - REALPATH="$LINK" - else - REALPATH="`dirname "$REALPATH"`""/$LINK" - fi - done -done -# Change ":" chars back to spaces. -REALPATH=`echo $REALPATH | sed -e 's;:; ;g'` - -# Change the current directory to the location of the script -cd "`dirname "$REALPATH"`" - -chown $USERNAME $PIDDIR - -# Process ID -PIDFILE="$PIDDIR/$APP_NAME.pid" - -# Resolve the location of the 'ps' command -PSEXE="/usr/bin/ps" -if [ ! -x $PSEXE ] -then - PSEXE="/bin/ps" - if [ ! -x $PSEXE ] - then - echo "Unable to locate 'ps'." - echo "Please report this with the location on your system." - exit 1 - fi -fi - -# Build the nice clause -if [ "X$PRIORITY" = "X" ] -then - CMDNICE="" -else - CMDNICE="nice -$PRIORITY" -fi - -getpid() { - if [ -f $PIDFILE ] - then - if [ -r $PIDFILE ] - then - pid=`cat $PIDFILE` - if [ "X$pid" != "X" ] - then - # Verify that a process with this pid is still running. - pid=`$PSEXE -p $pid | grep $pid | grep -v grep | awk '{print $1}' | tail -1` - if [ "X$pid" = "X" ] - then - # This is a stale pid file. - rm -f $PIDFILE - echo "Removed stale pid file: $PIDFILE" - fi - fi - else - echo "Cannot read $PIDFILE." - exit 1 - fi - fi -} - -testpid() { - pid=`$PSEXE -p $pid | grep $pid | grep -v grep | awk '{print $1}' | tail -1` - if [ "X$pid" = "X" ] - then - # Process is gone so remove the pid file. - rm -f $PIDFILE - fi -} - -console() { - echo "Running $APP_LONG_NAME..." - getpid - if [ "X$pid" = "X" ] - then - exec sudo -u $USERNAME $CMDNICE $EXEC $APP_ARGS - echo $pid > $PIDFILE - else - echo "$APP_LONG_NAME is already running." - exit 1 - fi -} - -start() { - echo "Starting $APP_LONG_NAME..." - getpid - if [ "X$pid" = "X" ] - then - sudo -u $USERNAME $CMDNICE $EXEC $DAEMON_ARGS $APP_ARGS - pid=`$PSEXE -C $APP_NAME -o pid=` - echo $pid > $PIDFILE - else - echo "$APP_LONG_NAME is already running." - exit 1 - fi -} - -stopit() { - echo "Stopping $APP_LONG_NAME..." - getpid - if [ "X$pid" = "X" ] - then - echo "$APP_LONG_NAME was not running." - else - # Running so try to stop it. - sudo -u $USERNAME kill $pid - if [ $? -ne 0 ] - then - # An explanation for the failure should have been given - echo "Unable to stop $APP_LONG_NAME." - exit 1 - fi - - # We can not predict how long it will take for the wrapper to - # actually stop as it depends on settings in wrapper.conf. - # Loop until it does. - savepid=$pid - CNT=0 - TOTCNT=0 - while [ "X$pid" != "X" ] - do - # Loop for up to 5 minutes - if [ "$TOTCNT" -lt "300" ] - then - if [ "$CNT" -lt "5" ] - then - CNT=`expr $CNT + 1` - else - echo "Waiting for $APP_LONG_NAME to exit..." - CNT=0 - fi - TOTCNT=`expr $TOTCNT + 1` - - sleep 1 - - testpid - else - pid= - fi - done - - pid=$savepid - testpid - if [ "X$pid" != "X" ] - then - echo "Timed out waiting for $APP_LONG_NAME to exit." - echo " Attempting a forced exit..." - kill -9 $pid - fi - - pid=$savepid - testpid - if [ "X$pid" != "X" ] - then - echo "Failed to stop $APP_LONG_NAME." - exit 1 - else - echo "Stopped $APP_LONG_NAME." - fi - fi -} - -status() { - getpid - if [ "X$pid" = "X" ] - then - echo "$APP_LONG_NAME is not running." - exit 1 - else - echo "$APP_LONG_NAME is running ($pid)." - exit 0 - fi -} - -case "$1" in - - 'console') - console - ;; - - 'start') - start - ;; - - 'stop') - stopit - ;; - - 'restart') - stopit - start - ;; - - 'status') - status - ;; - - *) - echo "Usage: $0 { console | start | stop | restart | status }" - exit 1 - ;; -esac - -exit 0 diff --git a/libs/unimrcp/build/pkgconfig/Makefile.am b/libs/unimrcp/build/pkgconfig/Makefile.am deleted file mode 100644 index ce3a063c05f..00000000000 --- a/libs/unimrcp/build/pkgconfig/Makefile.am +++ /dev/null @@ -1,4 +0,0 @@ -MAINTAINERCLEANFILES = Makefile.in - -pkgconfigdir = $(libdir)/pkgconfig -pkgconfig_DATA = unimrcpclient.pc unimrcpserver.pc unimrcpplugin.pc diff --git a/libs/unimrcp/build/pkgconfig/unimrcpclient.pc.in b/libs/unimrcp/build/pkgconfig/unimrcpclient.pc.in deleted file mode 100644 index 7fe3f1c1302..00000000000 --- a/libs/unimrcp/build/pkgconfig/unimrcpclient.pc.in +++ /dev/null @@ -1,11 +0,0 @@ -prefix=@prefix@ -exec_prefix=@exec_prefix@ -libdir=@libdir@ -includedir=@includedir@ @UNIMRCP_APR_INCLUDES@ - -Name: unimrcpclient -Description: UniMRCP Client Stack -Requires: -Version: @UNI_DOTTED_VERSION@ -Libs: -L${libdir} -lunimrcpclient -Cflags: @CPPFLAGS@ @CFLAGS@ -I${includedir} diff --git a/libs/unimrcp/build/pkgconfig/unimrcpplugin.pc.in b/libs/unimrcp/build/pkgconfig/unimrcpplugin.pc.in deleted file mode 100644 index df78b8ea7f6..00000000000 --- a/libs/unimrcp/build/pkgconfig/unimrcpplugin.pc.in +++ /dev/null @@ -1,11 +0,0 @@ -prefix=@prefix@ -exec_prefix=@exec_prefix@ -libdir=@libdir@ -includedir=@includedir@ @UNIMRCP_APR_INCLUDES@ - -Name: unimrcpplugin -Description: UniMRCP Server Plugin -Requires: -Version: @UNI_DOTTED_VERSION@ -Libs: -L${libdir} -lunimrcpserver -Cflags: @CPPFLAGS@ @CFLAGS@ -I${includedir} diff --git a/libs/unimrcp/build/pkgconfig/unimrcpserver.pc.in b/libs/unimrcp/build/pkgconfig/unimrcpserver.pc.in deleted file mode 100644 index 3ed91ecd02b..00000000000 --- a/libs/unimrcp/build/pkgconfig/unimrcpserver.pc.in +++ /dev/null @@ -1,11 +0,0 @@ -prefix=@prefix@ -exec_prefix=@exec_prefix@ -libdir=@libdir@ -includedir=@includedir@ @UNIMRCP_APR_INCLUDES@ - -Name: unimrcpserver -Description: UniMRCP Server Stack -Requires: -Version: @UNI_DOTTED_VERSION@ -Libs: -L${libdir} -lunimrcpserver -Cflags: @CPPFLAGS@ @CFLAGS@ -I${includedir} diff --git a/libs/unimrcp/build/props/apr.props b/libs/unimrcp/build/props/apr.props deleted file mode 100644 index 8e3f475bb36..00000000000 --- a/libs/unimrcp/build/props/apr.props +++ /dev/null @@ -1,33 +0,0 @@ - - - - - - - $(LibRootDir)libs\apr - $(LibRootDir)libs\apr-util - $(LibRootDir)libs\apr-iconv - - - <_ProjectFileVersion>10.0.30319.1 - - - true - - - - $(AprDir)\include;$(AprUtilDir)\include;%(AdditionalIncludeDirectories) - - - - - $(AprDir) - - - $(AprUtilDir) - - - $(AprIconvDir) - - - \ No newline at end of file diff --git a/libs/unimrcp/build/props/apt.props b/libs/unimrcp/build/props/apt.props deleted file mode 100644 index 89c5547c335..00000000000 --- a/libs/unimrcp/build/props/apt.props +++ /dev/null @@ -1,18 +0,0 @@ - - - - - - - <_ProjectFileVersion>10.0.30319.1 - - - true - - - - $(ProjectRootDir)libs\apr-toolkit\include;%(AdditionalIncludeDirectories) - APT_STATIC_LIB;%(PreprocessorDefinitions) - - - \ No newline at end of file diff --git a/libs/unimrcp/build/props/mpf.props b/libs/unimrcp/build/props/mpf.props deleted file mode 100644 index 8e46c5dd2ab..00000000000 --- a/libs/unimrcp/build/props/mpf.props +++ /dev/null @@ -1,18 +0,0 @@ - - - - - - - <_ProjectFileVersion>10.0.30319.1 - - - true - - - - $(ProjectRootDir)libs\mpf\include;%(AdditionalIncludeDirectories) - MPF_STATIC_LIB;%(PreprocessorDefinitions) - - - \ No newline at end of file diff --git a/libs/unimrcp/build/props/mrcp.props b/libs/unimrcp/build/props/mrcp.props deleted file mode 100644 index 14f8a4683da..00000000000 --- a/libs/unimrcp/build/props/mrcp.props +++ /dev/null @@ -1,18 +0,0 @@ - - - - - - - <_ProjectFileVersion>10.0.30319.1 - - - true - - - - $(ProjectRootDir)libs\mrcp\include;$(ProjectRootDir)libs\mrcp\message\include;$(ProjectRootDir)libs\mrcp\control\include;$(ProjectRootDir)libs\mrcp\resources\include;%(AdditionalIncludeDirectories) - MRCP_STATIC_LIB;%(PreprocessorDefinitions) - - - \ No newline at end of file diff --git a/libs/unimrcp/build/props/mrcpclient.props b/libs/unimrcp/build/props/mrcpclient.props deleted file mode 100644 index 4e552bd3fdc..00000000000 --- a/libs/unimrcp/build/props/mrcpclient.props +++ /dev/null @@ -1,15 +0,0 @@ - - - - - - - - <_ProjectFileVersion>10.0.30319.1 - - - - $(ProjectRootDir)libs\mrcp-client\include;%(AdditionalIncludeDirectories) - - - \ No newline at end of file diff --git a/libs/unimrcp/build/props/mrcpengine.props b/libs/unimrcp/build/props/mrcpengine.props deleted file mode 100644 index 5b1ee1b5ca8..00000000000 --- a/libs/unimrcp/build/props/mrcpengine.props +++ /dev/null @@ -1,15 +0,0 @@ - - - - - - - - <_ProjectFileVersion>10.0.30319.1 - - - - $(ProjectRootDir)libs\mrcp-engine\include;%(AdditionalIncludeDirectories) - - - \ No newline at end of file diff --git a/libs/unimrcp/build/props/mrcpserver.props b/libs/unimrcp/build/props/mrcpserver.props deleted file mode 100644 index 94e5e8aef29..00000000000 --- a/libs/unimrcp/build/props/mrcpserver.props +++ /dev/null @@ -1,16 +0,0 @@ - - - - - - - - - <_ProjectFileVersion>10.0.30319.1 - - - - $(ProjectRootDir)libs\mrcp-server\include;%(AdditionalIncludeDirectories) - - - \ No newline at end of file diff --git a/libs/unimrcp/build/props/mrcpsignaling.props b/libs/unimrcp/build/props/mrcpsignaling.props deleted file mode 100644 index dbe9aa32cfb..00000000000 --- a/libs/unimrcp/build/props/mrcpsignaling.props +++ /dev/null @@ -1,15 +0,0 @@ - - - - - - - - <_ProjectFileVersion>10.0.30319.1 - - - - $(ProjectRootDir)libs\mrcp-signaling\include;%(AdditionalIncludeDirectories) - - - \ No newline at end of file diff --git a/libs/unimrcp/build/props/mrcpv2transport.props b/libs/unimrcp/build/props/mrcpv2transport.props deleted file mode 100644 index 8b65c839821..00000000000 --- a/libs/unimrcp/build/props/mrcpv2transport.props +++ /dev/null @@ -1,14 +0,0 @@ - - - - - - - <_ProjectFileVersion>10.0.30319.1 - - - - $(ProjectRootDir)libs\mrcpv2-transport\include;%(AdditionalIncludeDirectories) - - - \ No newline at end of file diff --git a/libs/unimrcp/build/props/sdk/unimrcpclient.props b/libs/unimrcp/build/props/sdk/unimrcpclient.props deleted file mode 100644 index b9e764ee52a..00000000000 --- a/libs/unimrcp/build/props/sdk/unimrcpclient.props +++ /dev/null @@ -1,14 +0,0 @@ - - - - - - - - - - libunimrcpclient.lib mrcpsofiasip.lib mrcpunirtsp.lib unirtsp.lib mrcpclient.lib mrcpv2transport.lib mrcpsignaling.lib libsofia_sip_ua.lib ws2_32.lib winmm.lib;%(AdditionalDependencies) - - - - \ No newline at end of file diff --git a/libs/unimrcp/build/props/sdk/unimrcpplugin.props b/libs/unimrcp/build/props/sdk/unimrcpplugin.props deleted file mode 100644 index 6d69aea52bf..00000000000 --- a/libs/unimrcp/build/props/sdk/unimrcpplugin.props +++ /dev/null @@ -1,14 +0,0 @@ - - - - - - - - - - mrcpengine.lib;%(AdditionalDependencies) - - - - \ No newline at end of file diff --git a/libs/unimrcp/build/props/sdk/unimrcpsdk.props b/libs/unimrcp/build/props/sdk/unimrcpsdk.props deleted file mode 100644 index 0334d6a0fed..00000000000 --- a/libs/unimrcp/build/props/sdk/unimrcpsdk.props +++ /dev/null @@ -1,23 +0,0 @@ - - - - - C:\Program Files\UniMRCP - - - - - $(ProjectRootDir)\include;%(AdditionalIncludeDirectories) - APT_STATIC_LIB;MPF_STATIC_LIB;MRCP_STATIC_LIB;%(PreprocessorDefinitions) - - - $(ProjectRootDir)\lib;%(AdditionalLibraryDirectories) - mrcp.lib;mpf.lib;aprtoolkit.lib;libaprutil-1.lib;libapr-1.lib;%(AdditionalDependencies) - - - - - $(ProjectRootDir) - - - \ No newline at end of file diff --git a/libs/unimrcp/build/props/sdk/unimrcpserver.props b/libs/unimrcp/build/props/sdk/unimrcpserver.props deleted file mode 100644 index 979a32781e9..00000000000 --- a/libs/unimrcp/build/props/sdk/unimrcpserver.props +++ /dev/null @@ -1,14 +0,0 @@ - - - - - - - - - - libunimrcpserver.lib mrcpsofiasip.lib mrcpunirtsp.lib unirtsp.lib mrcpserver.lib mrcpv2transport.lib mrcpsignaling.lib mrcpengine.lib libsofia_sip_ua.lib ws2_32.lib winmm.lib;%(AdditionalDependencies) - - - - \ No newline at end of file diff --git a/libs/unimrcp/build/props/sofiasip.props b/libs/unimrcp/build/props/sofiasip.props deleted file mode 100644 index 0620099b0c6..00000000000 --- a/libs/unimrcp/build/props/sofiasip.props +++ /dev/null @@ -1,25 +0,0 @@ - - - - - - - $(LibRootDir)libs\sofia-sip - - - <_ProjectFileVersion>10.0.30319.1 - - - true - - - - $(SofiaDir)\win32;$(SofiaDir)\libsofia-sip-ua\su;$(SofiaDir)\libsofia-sip-ua\nua;$(SofiaDir)\libsofia-sip-ua\url;$(SofiaDir)\libsofia-sip-ua\sip;$(SofiaDir)\libsofia-sip-ua\msg;$(SofiaDir)\libsofia-sip-ua\sdp;$(SofiaDir)\libsofia-sip-ua\nta;$(SofiaDir)\libsofia-sip-ua\nea;$(SofiaDir)\libsofia-sip-ua\soa;$(SofiaDir)\libsofia-sip-ua\iptsec;$(SofiaDir)\libsofia-sip-ua\bnf;$(SofiaDir)\libsofia-sip-ua\features;$(SofiaDir)\libsofia-sip-ua\tport;%(AdditionalIncludeDirectories) - - - - - $(SofiaDir) - - - \ No newline at end of file diff --git a/libs/unimrcp/build/props/unibase.props b/libs/unimrcp/build/props/unibase.props deleted file mode 100644 index 2573021220c..00000000000 --- a/libs/unimrcp/build/props/unibase.props +++ /dev/null @@ -1,29 +0,0 @@ - - - - $(ProjectDir)..\..\ - $(SolutionDir) - - - <_ProjectFileVersion>10.0.30319.1 - - - true - - - - WIN32;%(PreprocessorDefinitions) - Level4 - true - 4100;%(DisableSpecificWarnings) - - - - - $(ProjectRootDir) - - - $(LibRootDir) - - - \ No newline at end of file diff --git a/libs/unimrcp/build/props/unibin-x64.props b/libs/unimrcp/build/props/unibin-x64.props deleted file mode 100644 index 0d5b4dda414..00000000000 --- a/libs/unimrcp/build/props/unibin-x64.props +++ /dev/null @@ -1,21 +0,0 @@ - - - - - - - - <_ProjectFileVersion>10.0.30319.1 - $(SolutionDir)$(PlatformName)\$(Configuration)\bin\ - $(PlatformName)\$(Configuration)\ - - - - _WIN64;%(PreprocessorDefinitions) - - - $(AprDir)\$(Platform)\$(Configuration);$(AprUtilDir)\$(Platform)\$(Configuration);$(SofiaDir)\win32\libsofia-sip-ua\$(Platform)\$(Configuration);$(SolutionDir)$(Platform)\$(Configuration)\lib;$(SolutionDir)$(Platform)\$(Configuration)\bin;%(AdditionalLibraryDirectories) - MachineX64 - - - \ No newline at end of file diff --git a/libs/unimrcp/build/props/unibin.props b/libs/unimrcp/build/props/unibin.props deleted file mode 100644 index bb83b9ed65f..00000000000 --- a/libs/unimrcp/build/props/unibin.props +++ /dev/null @@ -1,18 +0,0 @@ - - - - - - - - <_ProjectFileVersion>10.0.30319.1 - $(SolutionDir)$(Configuration)\bin\ - $(Configuration)\ - - - - $(AprDir)\$(Configuration);$(AprUtilDir)\$(Configuration);$(SofiaDir)\win32\libsofia-sip-ua\$(Configuration);$(SolutionDir)$(Configuration)\lib;$(SolutionDir)$(Configuration)\bin;%(AdditionalLibraryDirectories) - MachineX86 - - - \ No newline at end of file diff --git a/libs/unimrcp/build/props/unidebug.props b/libs/unimrcp/build/props/unidebug.props deleted file mode 100644 index 7c3d8d81fe0..00000000000 --- a/libs/unimrcp/build/props/unidebug.props +++ /dev/null @@ -1,25 +0,0 @@ - - - - - - - <_ProjectFileVersion>10.0.30319.1 - true - - - - Disabled - _DEBUG;%(PreprocessorDefinitions) - true - EnableFastChecks - MultiThreadedDebugDLL - - - ProgramDatabase - - - true - - - \ No newline at end of file diff --git a/libs/unimrcp/build/props/unilib-x64.props b/libs/unimrcp/build/props/unilib-x64.props deleted file mode 100644 index e5e25acc2e7..00000000000 --- a/libs/unimrcp/build/props/unilib-x64.props +++ /dev/null @@ -1,13 +0,0 @@ - - - - <_ProjectFileVersion>10.0.30319.1 - $(SolutionDir)$(PlatformName)\$(Configuration)\lib\ - $(PlatformName)\$(Configuration)\ - - - - _WIN64;%(PreprocessorDefinitions) - - - \ No newline at end of file diff --git a/libs/unimrcp/build/props/unilib.props b/libs/unimrcp/build/props/unilib.props deleted file mode 100644 index c77e94699ed..00000000000 --- a/libs/unimrcp/build/props/unilib.props +++ /dev/null @@ -1,8 +0,0 @@ - - - - <_ProjectFileVersion>10.0.30319.1 - $(SolutionDir)$(Configuration)\lib\ - $(Configuration)\ - - \ No newline at end of file diff --git a/libs/unimrcp/build/props/unimrcpclient.props b/libs/unimrcp/build/props/unimrcpclient.props deleted file mode 100644 index 78f2b87025c..00000000000 --- a/libs/unimrcp/build/props/unimrcpclient.props +++ /dev/null @@ -1,23 +0,0 @@ - - - - - - - - libunimrcpclient.lib;mrcpsofiasip.lib;mrcpunirtsp.lib;unirtsp.lib;mrcpclient.lib;mrcpv2transport.lib;mrcpsignaling.lib;mrcp.lib;mpf.lib;aprtoolkit.lib;libaprutil-1.lib;libapr-1.lib;libsofia_sip_ua.lib;ws2_32.lib;winmm.lib - - - <_ProjectFileVersion>10.0.30319.1 - - - - $(ProjectRootDir)platforms\libunimrcp-client\include;$(ProjectRootDir)build;%(AdditionalIncludeDirectories) - - - - - $(UniMRCPClientLibs) - - - \ No newline at end of file diff --git a/libs/unimrcp/build/props/unimrcpserver.props b/libs/unimrcp/build/props/unimrcpserver.props deleted file mode 100644 index 97c0f9808f2..00000000000 --- a/libs/unimrcp/build/props/unimrcpserver.props +++ /dev/null @@ -1,23 +0,0 @@ - - - - - - - - libunimrcpserver.lib;mrcpsofiasip.lib;mrcpunirtsp.lib;unirtsp.lib;mrcpserver.lib;mrcpv2transport.lib;mrcpsignaling.lib;mrcpengine.lib;mrcp.lib;mpf.lib;aprtoolkit.lib;libaprutil-1.lib;libapr-1.lib;libsofia_sip_ua.lib;ws2_32.lib;winmm.lib - - - <_ProjectFileVersion>10.0.30319.1 - - - - $(ProjectRootDir)platforms\libunimrcp-server\include;$(ProjectRootDir)build;%(AdditionalIncludeDirectories) - - - - - $(UniMRCPServerLibs) - - - \ No newline at end of file diff --git a/libs/unimrcp/build/props/uniplugin-x64.props b/libs/unimrcp/build/props/uniplugin-x64.props deleted file mode 100644 index 7dc181ca945..00000000000 --- a/libs/unimrcp/build/props/uniplugin-x64.props +++ /dev/null @@ -1,22 +0,0 @@ - - - - - - - - <_ProjectFileVersion>10.0.30319.1 - $(SolutionDir)$(PlatformName)\$(Configuration)\plugin\ - $(PlatformName)\$(Configuration)\ - - - - _WIN64;%(PreprocessorDefinitions) - - - $(AprDir)\$(Platform)\$(Configuration);$(AprUtilDir)\$(Platform)\$(Configuration);$(SolutionDir)$(Platform)\$(Configuration)\lib;%(AdditionalLibraryDirectories) - mrcpengine.lib;mrcp.lib;mpf.lib;aprtoolkit.lib;libaprutil-1.lib;libapr-1.lib;ws2_32.lib;%(AdditionalDependencies) - MachineX64 - - - \ No newline at end of file diff --git a/libs/unimrcp/build/props/uniplugin.props b/libs/unimrcp/build/props/uniplugin.props deleted file mode 100644 index 09dbe53c17f..00000000000 --- a/libs/unimrcp/build/props/uniplugin.props +++ /dev/null @@ -1,19 +0,0 @@ - - - - - - - - <_ProjectFileVersion>10.0.30319.1 - $(SolutionDir)$(Configuration)\plugin\ - $(Configuration)\ - - - - $(AprDir)\$(Configuration);$(AprUtilDir)\$(Configuration);$(SolutionDir)$(Configuration)\lib;%(AdditionalLibraryDirectories) - mrcpengine.lib;mrcp.lib;mpf.lib;aprtoolkit.lib;libaprutil-1.lib;libapr-1.lib;ws2_32.lib;%(AdditionalDependencies) - MachineX86 - - - \ No newline at end of file diff --git a/libs/unimrcp/build/props/unirelease.props b/libs/unimrcp/build/props/unirelease.props deleted file mode 100644 index a2a832025a2..00000000000 --- a/libs/unimrcp/build/props/unirelease.props +++ /dev/null @@ -1,18 +0,0 @@ - - - - - - - <_ProjectFileVersion>10.0.30319.1 - - - - NDEBUG;%(PreprocessorDefinitions) - MultiThreadedDLL - - - ProgramDatabase - - - \ No newline at end of file diff --git a/libs/unimrcp/build/props/unirtsp.props b/libs/unimrcp/build/props/unirtsp.props deleted file mode 100644 index c872838994e..00000000000 --- a/libs/unimrcp/build/props/unirtsp.props +++ /dev/null @@ -1,15 +0,0 @@ - - - - - - - <_ProjectFileVersion>10.0.30319.1 - - - - $(ProjectRootDir)libs\uni-rtsp\include;%(AdditionalIncludeDirectories) - RTSP_STATIC_LIB;%(PreprocessorDefinitions) - - - \ No newline at end of file diff --git a/libs/unimrcp/build/rules/uniclientapp.am b/libs/unimrcp/build/rules/uniclientapp.am deleted file mode 100644 index 2b1b97d1c33..00000000000 --- a/libs/unimrcp/build/rules/uniclientapp.am +++ /dev/null @@ -1,24 +0,0 @@ -MAINTAINERCLEANFILES = Makefile.in - -# Includes -UNIMRCP_CLIENTAPP_INCLUDES = -I$(top_srcdir)/platforms/libunimrcp-client/include \ - -I$(top_srcdir)/libs/mrcp-client/include \ - -I$(top_srcdir)/libs/mrcp-signaling/include \ - -I$(top_srcdir)/libs/mrcpv2-transport/include \ - -I$(top_srcdir)/libs/mrcp/include \ - -I$(top_srcdir)/libs/mrcp/message/include \ - -I$(top_srcdir)/libs/mrcp/control/include \ - -I$(top_srcdir)/libs/mrcp/resources/include \ - -I$(top_srcdir)/libs/mpf/include \ - -I$(top_srcdir)/libs/apr-toolkit/include \ - -I$(top_srcdir)/build \ - $(UNIMRCP_APR_INCLUDES) - -# Libraries (LDADD) -UNIMRCP_CLIENTAPP_LIBS = $(top_builddir)/platforms/libunimrcp-client/libunimrcpclient.la - -# Linker options (LDFLAGS) -UNIMRCP_CLIENTAPP_OPTS = -if ISMAC -UNIMRCP_CLIENTAPP_OPTS += -framework CoreFoundation -framework SystemConfiguration -endif diff --git a/libs/unimrcp/build/rules/uniclientlib.am b/libs/unimrcp/build/rules/uniclientlib.am deleted file mode 100644 index 89d173e61ac..00000000000 --- a/libs/unimrcp/build/rules/uniclientlib.am +++ /dev/null @@ -1,30 +0,0 @@ -MAINTAINERCLEANFILES = Makefile.in - -# Includes -UNIMRCP_CLIENTLIB_INCLUDES = -I$(top_srcdir)/modules/mrcp-sofiasip/include \ - -I$(top_srcdir)/modules/mrcp-unirtsp/include \ - -I$(top_srcdir)/libs/mrcp-client/include \ - -I$(top_srcdir)/libs/mrcp-signaling/include \ - -I$(top_srcdir)/libs/mrcpv2-transport/include \ - -I$(top_srcdir)/libs/mrcp/include \ - -I$(top_srcdir)/libs/mrcp/message/include \ - -I$(top_srcdir)/libs/mrcp/control/include \ - -I$(top_srcdir)/libs/mrcp/resources/include \ - -I$(top_srcdir)/libs/mpf/include \ - -I$(top_srcdir)/libs/apr-toolkit/include \ - -I$(top_srcdir)/build \ - $(UNIMRCP_APR_INCLUDES) - -# Libraries (LIBADD) -UNIMRCP_CLIENTLIB_LIBS = $(top_builddir)/modules/mrcp-sofiasip/libmrcpsofiasip.la \ - $(top_builddir)/modules/mrcp-unirtsp/libmrcpunirtsp.la \ - $(top_builddir)/libs/mrcpv2-transport/libmrcpv2transport.la \ - $(top_builddir)/libs/mrcp-client/libmrcpclient.la \ - $(top_builddir)/libs/mrcp-signaling/libmrcpsignaling.la \ - $(top_builddir)/libs/mrcp/libmrcp.la \ - $(top_builddir)/libs/mpf/libmpf.la \ - $(top_builddir)/libs/apr-toolkit/libaprtoolkit.la \ - $(UNIMRCP_APR_LIBS) $(UNIMRCP_SOFIA_LIBS) -lm - -# Linker options (LDFLAGS) -UNIMRCP_CLIENTLIB_OPTS = $(UNI_LT_VERSION) diff --git a/libs/unimrcp/build/rules/uniplugin.am b/libs/unimrcp/build/rules/uniplugin.am deleted file mode 100644 index caf0de48ade..00000000000 --- a/libs/unimrcp/build/rules/uniplugin.am +++ /dev/null @@ -1,14 +0,0 @@ -MAINTAINERCLEANFILES = Makefile.in - -# Includes -UNIMRCP_PLUGIN_INCLUDES = -I$(top_srcdir)/libs/mrcp-engine/include \ - -I$(top_srcdir)/libs/mrcp/include \ - -I$(top_srcdir)/libs/mrcp/message/include \ - -I$(top_srcdir)/libs/mrcp/control/include \ - -I$(top_srcdir)/libs/mrcp/resources/include \ - -I$(top_srcdir)/libs/mpf/include \ - -I$(top_srcdir)/libs/apr-toolkit/include \ - $(UNIMRCP_APR_INCLUDES) - -# Linker options (LDFLAGS) -UNIMRCP_PLUGIN_OPTS = -module $(PLUGIN_LT_VERSION) diff --git a/libs/unimrcp/build/rules/uniserverapp.am b/libs/unimrcp/build/rules/uniserverapp.am deleted file mode 100644 index 957b0e75cd8..00000000000 --- a/libs/unimrcp/build/rules/uniserverapp.am +++ /dev/null @@ -1,25 +0,0 @@ -MAINTAINERCLEANFILES = Makefile.in - -# Includes -UNIMRCP_SERVERAPP_INCLUDES = -I$(top_srcdir)/platforms/libunimrcp-server/include \ - -I$(top_srcdir)/libs/mrcp-server/include \ - -I$(top_srcdir)/libs/mrcp-engine/include \ - -I$(top_srcdir)/libs/mrcp-signaling/include \ - -I$(top_srcdir)/libs/mrcpv2-transport/include \ - -I$(top_srcdir)/libs/mrcp/include \ - -I$(top_srcdir)/libs/mrcp/message/include \ - -I$(top_srcdir)/libs/mrcp/control/include \ - -I$(top_srcdir)/libs/mrcp/resources/include \ - -I$(top_srcdir)/libs/mpf/include \ - -I$(top_srcdir)/libs/apr-toolkit/include \ - -I$(top_srcdir)/build \ - $(UNIMRCP_APR_INCLUDES) - -# Libraries (LDADD) -UNIMRCP_SERVERAPP_LIBS = $(top_builddir)/platforms/libunimrcp-server/libunimrcpserver.la - -# Linker options (LDFLAGS) -UNIMRCP_SERVERAPP_OPTS = -if ISMAC -UNIMRCP_SERVERAPP_OPTS += -framework CoreFoundation -framework SystemConfiguration -endif diff --git a/libs/unimrcp/build/rules/uniserverlib.am b/libs/unimrcp/build/rules/uniserverlib.am deleted file mode 100644 index b933796e429..00000000000 --- a/libs/unimrcp/build/rules/uniserverlib.am +++ /dev/null @@ -1,32 +0,0 @@ -MAINTAINERCLEANFILES = Makefile.in - -# Includes -UNIMRCP_SERVERLIB_INCLUDES = -I$(top_srcdir)/modules/mrcp-sofiasip/include \ - -I$(top_srcdir)/modules/mrcp-unirtsp/include \ - -I$(top_srcdir)/libs/mrcp-server/include \ - -I$(top_srcdir)/libs/mrcp-engine/include \ - -I$(top_srcdir)/libs/mrcp-signaling/include \ - -I$(top_srcdir)/libs/mrcpv2-transport/include \ - -I$(top_srcdir)/libs/mrcp/include \ - -I$(top_srcdir)/libs/mrcp/message/include \ - -I$(top_srcdir)/libs/mrcp/control/include \ - -I$(top_srcdir)/libs/mrcp/resources/include \ - -I$(top_srcdir)/libs/mpf/include \ - -I$(top_srcdir)/libs/apr-toolkit/include \ - -I$(top_srcdir)/build \ - $(UNIMRCP_APR_INCLUDES) - -# Libraries (LIBADD) -UNIMRCP_SERVERLIB_LIBS = $(top_builddir)/modules/mrcp-sofiasip/libmrcpsofiasip.la \ - $(top_builddir)/modules/mrcp-unirtsp/libmrcpunirtsp.la \ - $(top_builddir)/libs/mrcp-server/libmrcpserver.la \ - $(top_builddir)/libs/mrcp-signaling/libmrcpsignaling.la \ - $(top_builddir)/libs/mrcpv2-transport/libmrcpv2transport.la \ - $(top_builddir)/libs/mrcp-engine/libmrcpengine.la \ - $(top_builddir)/libs/mrcp/libmrcp.la \ - $(top_builddir)/libs/mpf/libmpf.la \ - $(top_builddir)/libs/apr-toolkit/libaprtoolkit.la \ - $(UNIMRCP_APR_LIBS) $(UNIMRCP_SOFIA_LIBS) -lm - -# Linker options (LDFLAGS) -UNIMRCP_SERVERLIB_OPTS = $(UNI_LT_VERSION) diff --git a/libs/unimrcp/build/tools/prepare.vcproj b/libs/unimrcp/build/tools/prepare.vcproj deleted file mode 100644 index 3b03c54a934..00000000000 --- a/libs/unimrcp/build/tools/prepare.vcproj +++ /dev/null @@ -1,122 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/libs/unimrcp/build/tools/prepare.vcxproj b/libs/unimrcp/build/tools/prepare.vcxproj deleted file mode 100644 index b9ab80fc508..00000000000 --- a/libs/unimrcp/build/tools/prepare.vcxproj +++ /dev/null @@ -1,205 +0,0 @@ - - - - - Debug - Win32 - - - Debug - x64 - - - Release - Win32 - - - Release - x64 - - - - {01D63BF5-7798-4746-852A-4B45229BB735} - prepare - Win32Proj - - - - Utility - Unicode - true - - - Utility - Unicode - - - Utility - Unicode - true - - - Utility - Unicode - - - - - - - - - - - - - - - - - - - - - - - - - - - <_ProjectFileVersion>10.0.30319.1 - $(SolutionDir)$(Configuration)\ - $(Configuration)\ - true - $(SolutionDir)$(Platform)\$(Configuration)\ - $(Platform)\$(Configuration)\ - true - $(SolutionDir)$(Configuration)\ - $(Configuration)\ - $(SolutionDir)$(Platform)\$(Configuration)\ - $(Platform)\$(Configuration)\ - - - - xcopy "$(AprDir)\$(Configuration)\libapr-1.dll" "$(SolutionDir)$(Configuration)\bin\" /Y -xcopy "$(AprUtilDir)\$(Configuration)\libaprutil-1.dll" "$(SolutionDir)$(Configuration)\bin\" /Y - -if exist "$(AprIconvDir)\$(Configuration)\libapriconv-1.dll" ( -xcopy "$(AprIconvDir)\$(Configuration)\libapriconv-1.dll" "$(SolutionDir)$(Configuration)\bin\" /Y -if exist "$(AprIconvDir)\$(Configuration)\iconv" ( -if not exist "$(SolutionDir)$(Configuration)\bin\iconv" mkdir "$(SolutionDir)$(Configuration)\bin\iconv" -xcopy "$(AprIconvDir)\$(Configuration)\iconv\*.so" "$(SolutionDir)$(Configuration)\bin\iconv\" /Y -) -) - -xcopy "$(SofiaDir)\win32\libsofia-sip-ua\$(Configuration)\libsofia_sip_ua.dll" "$(SolutionDir)$(Configuration)\bin\" /Y -xcopy "$(SofiaDir)\win32\pthread\$(Configuration)\pthreadVC2.dll" "$(SolutionDir)$(Configuration)\bin\" /Y - -if not exist "$(SolutionDir)$(Configuration)\conf" ( -xcopy "$(SolutionDir)conf\*.xml" "$(SolutionDir)$(Configuration)\conf\" /Y -xcopy "$(SolutionDir)conf\*.xsd" "$(SolutionDir)$(Configuration)\conf\" /Y -xcopy "$(SolutionDir)conf\client-profiles\*.xml" "$(SolutionDir)$(Configuration)\conf\client-profiles\" /Y -) - -if not exist "$(SolutionDir)$(Configuration)\data" xcopy "$(SolutionDir)data\*" "$(SolutionDir)$(Configuration)\data\" /Y -if not exist "$(SolutionDir)$(Configuration)\log" mkdir "$(SolutionDir)$(Configuration)\log\" -if not exist "$(SolutionDir)$(Configuration)\var" mkdir "$(SolutionDir)$(Configuration)\var\" - - - - - - xcopy "$(AprDir)\$(Platform)\$(Configuration)\libapr-1.dll" "$(SolutionDir)$(Platform)\$(Configuration)\bin\" /Y -xcopy "$(AprUtilDir)\$(Platform)\$(Configuration)\libaprutil-1.dll" "$(SolutionDir)$(Platform)\$(Configuration)\bin\" /Y - -if exist "$(AprIconvDir)\$(Platform)\$(Configuration)\libapriconv-1.dll" ( -xcopy "$(AprIconvDir)\$(Platform)\$(Configuration)\libapriconv-1.dll" "$(SolutionDir)$(Platform)\$(Configuration)\bin\" /Y -if exist "$(AprIconvDir)\$(Platform)\$(Configuration)\iconv" ( -if not exist "$(SolutionDir)$(Platform)\$(Configuration)\bin\iconv" mkdir "$(SolutionDir)$(Platform)\$(Configuration)\bin\iconv" -xcopy "$(AprIconvDir)\$(Platform)\$(Configuration)\iconv\*.so" "$(SolutionDir)$(Platform)\$(Configuration)\bin\iconv\" /Y -) -) - -xcopy "$(SofiaDir)\win32\libsofia-sip-ua\$(Platform)\$(Configuration)\libsofia_sip_ua.dll" "$(SolutionDir)$(Platform)\$(Configuration)\bin\" /Y -xcopy "$(SofiaDir)\win32\pthread\$(Platform)\$(Configuration)\pthreadVC2.dll" "$(SolutionDir)$(Platform)\$(Configuration)\bin\" /Y - -if not exist "$(SolutionDir)$(Platform)\$(Configuration)\conf" ( -xcopy "$(SolutionDir)conf\*.xml" "$(SolutionDir)$(Platform)\$(Configuration)\conf\" /Y -xcopy "$(SolutionDir)conf\*.xsd" "$(SolutionDir)$(Platform)\$(Configuration)\conf\" /Y -xcopy "$(SolutionDir)conf\client-profiles\*.xml" "$(SolutionDir)$(Platform)\$(Configuration)\conf\client-profiles\" /Y -) - -if not exist "$(SolutionDir)$(Platform)\$(Configuration)\data" xcopy "$(SolutionDir)data\*" "$(SolutionDir)$(Platform)\$(Configuration)\data\" /Y -if not exist "$(SolutionDir)$(Platform)\$(Configuration)\log" mkdir "$(SolutionDir)$(Platform)\$(Configuration)\log\" -if not exist "$(SolutionDir)$(Platform)\$(Configuration)\var" mkdir "$(SolutionDir)$(Platform)\$(Configuration)\var\" - - - - X64 - - - - - xcopy "$(AprDir)\$(Configuration)\libapr-1.dll" "$(SolutionDir)$(Configuration)\bin\" /Y -xcopy "$(AprUtilDir)\$(Configuration)\libaprutil-1.dll" "$(SolutionDir)$(Configuration)\bin\" /Y - -if exist "$(AprIconvDir)\$(Configuration)\libapriconv-1.dll" ( -xcopy "$(AprIconvDir)\$(Configuration)\libapriconv-1.dll" "$(SolutionDir)$(Configuration)\bin\" /Y -if exist "$(AprIconvDir)\$(Configuration)\iconv" ( -if not exist "$(SolutionDir)$(Configuration)\bin\iconv" mkdir "$(SolutionDir)$(Configuration)\bin\iconv" -xcopy "$(AprIconvDir)\$(Configuration)\iconv\*.so" "$(SolutionDir)$(Configuration)\bin\iconv\" /Y -) -) - -xcopy "$(SofiaDir)\win32\libsofia-sip-ua\$(Configuration)\libsofia_sip_ua.dll" "$(SolutionDir)$(Configuration)\bin\" /Y -xcopy "$(SofiaDir)\win32\pthread\$(Configuration)\pthreadVC2.dll" "$(SolutionDir)$(Configuration)\bin\" /Y - -if not exist "$(SolutionDir)$(Configuration)\conf" ( -xcopy "$(SolutionDir)conf\*.xml" "$(SolutionDir)$(Configuration)\conf\" /Y -xcopy "$(SolutionDir)conf\*.xsd" "$(SolutionDir)$(Configuration)\conf\" /Y -xcopy "$(SolutionDir)conf\client-profiles\*.xml" "$(SolutionDir)$(Configuration)\conf\client-profiles\" /Y -) - -if not exist "$(SolutionDir)$(Configuration)\data" xcopy "$(SolutionDir)data\*" "$(SolutionDir)$(Configuration)\data\" /Y -if not exist "$(SolutionDir)$(Configuration)\log" mkdir "$(SolutionDir)$(Configuration)\log\" -if not exist "$(SolutionDir)$(Configuration)\var" mkdir "$(SolutionDir)$(Configuration)\var\" - - - - - - xcopy "$(AprDir)\$(Platform)\$(Configuration)\libapr-1.dll" "$(SolutionDir)$(Platform)\$(Configuration)\bin\" /Y -xcopy "$(AprUtilDir)\$(Platform)\$(Configuration)\libaprutil-1.dll" "$(SolutionDir)$(Platform)\$(Configuration)\bin\" /Y - -if exist "$(AprIconvDir)\$(Platform)\$(Configuration)\libapriconv-1.dll" ( -xcopy "$(AprIconvDir)\$(Platform)\$(Configuration)\libapriconv-1.dll" "$(SolutionDir)$(Platform)\$(Configuration)\bin\" /Y -if exist "$(AprIconvDir)\$(Platform)\$(Configuration)\iconv" ( -if not exist "$(SolutionDir)$(Platform)\$(Configuration)\bin\iconv" mkdir "$(SolutionDir)$(Platform)\$(Configuration)\bin\iconv" -xcopy "$(AprIconvDir)\$(Platform)\$(Configuration)\iconv\*.so" "$(SolutionDir)$(Platform)\$(Configuration)\bin\iconv\" /Y -) -) - -xcopy "$(SofiaDir)\win32\libsofia-sip-ua\$(Platform)\$(Configuration)\libsofia_sip_ua.dll" "$(SolutionDir)$(Platform)\$(Configuration)\bin\" /Y -xcopy "$(SofiaDir)\win32\pthread\$(Platform)\$(Configuration)\pthreadVC2.dll" "$(SolutionDir)$(Platform)\$(Configuration)\bin\" /Y - -if not exist "$(SolutionDir)$(Platform)\$(Configuration)\conf" ( -xcopy "$(SolutionDir)conf\*.xml" "$(SolutionDir)$(Platform)\$(Configuration)\conf\" /Y -xcopy "$(SolutionDir)conf\*.xsd" "$(SolutionDir)$(Platform)\$(Configuration)\conf\" /Y -xcopy "$(SolutionDir)conf\client-profiles\*.xml" "$(SolutionDir)$(Platform)\$(Configuration)\conf\client-profiles\" /Y -) - -if not exist "$(SolutionDir)$(Platform)\$(Configuration)\data" xcopy "$(SolutionDir)data\*" "$(SolutionDir)$(Platform)\$(Configuration)\data\" /Y -if not exist "$(SolutionDir)$(Platform)\$(Configuration)\log" mkdir "$(SolutionDir)$(Platform)\$(Configuration)\log\" -if not exist "$(SolutionDir)$(Platform)\$(Configuration)\var" mkdir "$(SolutionDir)$(Platform)\$(Configuration)\var\" - - - - X64 - - - - - - - - \ No newline at end of file diff --git a/libs/unimrcp/build/tools/unimrcp_service.c b/libs/unimrcp/build/tools/unimrcp_service.c deleted file mode 100644 index db2ed39bab8..00000000000 --- a/libs/unimrcp/build/tools/unimrcp_service.c +++ /dev/null @@ -1,446 +0,0 @@ -/* - * Copyright 2008-2014 Arsen Chaloyan - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - * - * $Id: unimrcp_service.c 2136 2014-07-04 06:33:36Z achaloyan@gmail.com $ - */ - -#include -#include -#include -#include -#include "apt.h" -#include "apt_pool.h" - -#define WIN_SERVICE_NAME "unimrcp" - -/** UniMRCP service register command enumeration */ -typedef enum uni_service_register_e { - USR_NONE, USR_REGISTER, USR_UNREGISTER -} uni_service_register_e; - -/** UniMRCP service control command enumeration */ -typedef enum uni_service_control_e { - USC_NONE, USC_START, USC_STOP -} uni_service_control_e; - - -/** Display error message with Windows error code and description */ -static void winerror(const char *msg) -{ - char buf[128]; - DWORD err = GetLastError(); - int ret = FormatMessage(FORMAT_MESSAGE_FROM_SYSTEM | FORMAT_MESSAGE_IGNORE_INSERTS, - NULL, - err, - MAKELANGID(LANG_NEUTRAL, SUBLANG_DEFAULT), - buf, sizeof(buf), NULL); - printf("%s: %lu %.*s\n", msg, err, ret, buf); -} - -/** Register/install service in SCM */ -static apt_bool_t uni_service_register(const char *root_dir_path, apr_pool_t *pool, - const char *name, - apt_bool_t autostart, - unsigned long recover, - int log_priority, - const char *disp_name, - const char *description) -{ - apr_status_t status; - char buf[4096]; - static const size_t len = sizeof(buf); - size_t pos = 0; - char *root_dir; - SERVICE_DESCRIPTION desc; - SC_HANDLE sch_service; - SC_HANDLE sch_manager; - - /* Normalize root directory path and make it absolute */ - status = apr_filepath_merge(&root_dir, NULL, root_dir_path, - APR_FILEPATH_NOTRELATIVE | APR_FILEPATH_NATIVE | APR_FILEPATH_TRUENAME, pool); - if (status != APR_SUCCESS) { - printf("Error making root directory absolute: %d %.512s\n", status, - apr_strerror(status, buf, 512)); - return FALSE; - } - buf[pos++] = '"'; - pos = apr_cpystrn(buf + pos, root_dir, len - pos) - buf; - if ((buf[pos - 1] != '\\') && (pos < len)) - /* Add trailing backslash */ - buf[pos++] = '\\'; - pos = apr_cpystrn(buf + pos, "bin\\unimrcpserver.exe\" --service -o 2", len - pos) - buf; - if (log_priority >= 0) { - pos = apr_cpystrn(buf + pos, " -l ", len - pos) - buf; - if (pos < len - 34) - pos += strlen(itoa(log_priority, buf + pos, 10)); - } - if (name) { - pos = apr_cpystrn(buf + pos, " --name \"", len - pos) - buf; - pos = apr_cpystrn(buf + pos, name, len - pos) - buf; - if ((buf[pos - 1] == '\\') && (pos < len)) - /* `\"' might be misinterpreted as escape, so replace `\' with `\\' */ - buf[pos++] = '\\'; - if (pos < len) - buf[pos++] = '"'; - } - pos = apr_cpystrn(buf + pos, " --root-dir \"", len - pos) - buf; - pos = apr_cpystrn(buf + pos, root_dir, len - pos) - buf; - if ((buf[pos - 1] == '\\') && (pos < len)) - /* `\"' might be misinterpreted as escape, so replace `\' with `\\' */ - buf[pos++] = '\\'; - if (pos < len) - buf[pos++] = '"'; - if (pos < len) - buf[pos] = 0; - else { - puts("Service Command Too Long"); - return FALSE; - } - if (!disp_name || !*disp_name) { - if (name) - disp_name = apr_pstrcat(pool, name, " ", "UniMRCP Server", NULL); - else - disp_name = "UniMRCP Server"; - } - if (!description || !*description) - description = "Launches UniMRCP Server"; - - sch_manager = OpenSCManager(0,0,SC_MANAGER_ALL_ACCESS); - if(!sch_manager) { - winerror("Failed to Open SCManager"); - return FALSE; - } - sch_service = CreateService( - sch_manager, - name ? name : WIN_SERVICE_NAME, - disp_name, - GENERIC_EXECUTE | SERVICE_CHANGE_CONFIG, - SERVICE_WIN32_OWN_PROCESS, - autostart ? SERVICE_AUTO_START : SERVICE_DEMAND_START, - SERVICE_ERROR_NORMAL, - buf,0,0,0,0,0); - if(!sch_service) { - winerror("Failed to Create Service"); - CloseServiceHandle(sch_manager); - return FALSE; - } - - desc.lpDescription = (char *) description; - if(!ChangeServiceConfig2(sch_service,SERVICE_CONFIG_DESCRIPTION,&desc)) { - winerror("Failed to Set Service Description"); - } - - if (recover) { - SERVICE_FAILURE_ACTIONS sfa; - SC_ACTION action; - sfa.dwResetPeriod = 0; - sfa.lpCommand = ""; - sfa.lpRebootMsg = ""; - sfa.cActions = 1; - sfa.lpsaActions = &action; - action.Delay = recover * 1000; - action.Type = SC_ACTION_RESTART; - if (!ChangeServiceConfig2(sch_service,SERVICE_CONFIG_FAILURE_ACTIONS,&sfa)) { - winerror("Failed to Set Service Restart on Failure"); - } - } - - CloseServiceHandle(sch_service); - CloseServiceHandle(sch_manager); - printf("UniMRCP service %s registered\n", name ? name : WIN_SERVICE_NAME); - return TRUE; -} - -/** Unregister/uninstall service from SCM */ -static apt_bool_t uni_service_unregister(const char *name) -{ - apt_bool_t status = TRUE; - SERVICE_STATUS ss_status; - SC_HANDLE sch_service; - SC_HANDLE sch_manager = OpenSCManager(0,0,SC_MANAGER_ALL_ACCESS); - if (!name) name = WIN_SERVICE_NAME; - if(!sch_manager) { - winerror("Failed to Open SCManager"); - return FALSE; - } - - sch_service = OpenService(sch_manager,name,DELETE|SERVICE_STOP); - if(!sch_service) { - winerror("Failed to Open Service"); - CloseServiceHandle(sch_manager); - return FALSE; - } - - ControlService(sch_service,SERVICE_CONTROL_STOP,&ss_status); - if(!DeleteService(sch_service)) { - winerror("Failed to Delete Service"); - status = FALSE; - } else - printf("UniMRCP service %s unregistered\n", name); - CloseServiceHandle(sch_service); - CloseServiceHandle(sch_manager); - return status; -} - -/** Start service */ -static apt_bool_t uni_service_start(const char *name) -{ - apt_bool_t status = TRUE; - SC_HANDLE sch_service; - SC_HANDLE sch_manager = OpenSCManager(0,0,SC_MANAGER_ALL_ACCESS); - if (!name) name = WIN_SERVICE_NAME; - if(!sch_manager) { - winerror("Failed to Open SCManager"); - return FALSE; - } - - sch_service = OpenService(sch_manager,name,SERVICE_START); - if(!sch_service) { - winerror("Failed to Open Service"); - CloseServiceHandle(sch_manager); - return FALSE; - } - - if(!StartService(sch_service,0,NULL)) { - winerror("Failed to Start Service"); - status = FALSE; - } else - printf("UniMRCP service %s started\n", name); - CloseServiceHandle(sch_service); - CloseServiceHandle(sch_manager); - return status; -} - -/** Stop service */ -static apt_bool_t uni_service_stop(const char *name) -{ - apt_bool_t status = TRUE; - SERVICE_STATUS ss_status; - SC_HANDLE sch_service; - SC_HANDLE sch_manager = OpenSCManager(0,0,SC_MANAGER_ALL_ACCESS); - if (!name) name = WIN_SERVICE_NAME; - if(!sch_manager) { - winerror("Failed to Open SCManager"); - return FALSE; - } - - sch_service = OpenService(sch_manager,name,SERVICE_STOP); - if(!sch_service) { - winerror("Failed to Open Service"); - CloseServiceHandle(sch_manager); - return FALSE; - } - - if(!ControlService(sch_service,SERVICE_CONTROL_STOP,&ss_status)) { - winerror("Failed to Stop Service"); - status = FALSE; - } else - printf("UniMRCP service %s stopped\n", name); - - CloseServiceHandle(sch_service); - CloseServiceHandle(sch_manager); - return status; -} - - -static void usage() -{ - static apt_bool_t written = FALSE; - if (written) return; - printf( - "\n" - "Usage:\n" - "\n" - " unimrcpservice [options]\n" - "\n" - " Available options:\n" - "\n" - " -r [--register] rootdir : Register the Windows service.\n" - "\n" - " -u [--unregister] : Unregister the Windows service.\n" - "\n" - " -s [--start] : Start the Windows service.\n" - "\n" - " -t [--stop] : Stop the Windows service.\n" - "\n" - " -n [--name] svcname : Service name (default: unimrcp)\n" - "\n" - " -a [--autostart] : Start service after boot-up\n" - "\n" - " -f [--fail-restart] n : If crashed, restart after n secs\n" - "\n" - " -l [--log-prio] priority: Set the log priority.\n" - " (0-emergency, ..., 7-debug)\n" - " -p [--disp-name] title : Set service display name\n" - " (default: [svcname] UniMRCP Server)\n" - " -c [--description] desc : Set service description\n" - " (default: Launches UniMRCP Server)\n" - " -h [--help] : Show the help.\n" - "\n"); - written = TRUE; -} - -int main(int argc, const char * const *argv) -{ - apr_pool_t *pool; - apr_status_t rv; - apr_getopt_t *opt; - apt_bool_t ret = TRUE; - uni_service_register_e reg = USR_NONE; - uni_service_control_e control = USC_NONE; - const char *root_dir = ".."; - const char *name = NULL; - apt_bool_t autostart = FALSE; - unsigned long recover = 0; - int log_priority = -1; - const char *disp_name = NULL; - const char *description = NULL; - - static const apr_getopt_option_t opt_option[] = { - /* long-option, short-option, has-arg flag, description */ - { "register", 'r', TRUE, "register service" }, /* -r or --register arg */ - { "unregister", 'u', FALSE, "unregister service" }, /* -u or --unregister */ - { "start", 's', FALSE, "start service" }, /* -s or --start */ - { "stop", 't', FALSE, "stop service" }, /* -t or --stop */ - { "name", 'n', TRUE, "service name" }, /* -n or --name arg */ - { "autostart", 'a', FALSE, "start automatically" },/* -a or --autostart */ - { "fail-restart",'f', TRUE, "restart if fails" }, /* -f or --fail-restart arg */ - { "log-prio", 'l', TRUE, "log priority" }, /* -l arg or --log-prio arg */ - { "disp-name", 'p', TRUE, "display name" }, /* -p arg or --disp-name arg */ - { "description", 'c', TRUE, "description" }, /* -c arg or --description arg */ - { "help", 'h', FALSE, "show help" }, /* -h or --help */ - { NULL, 0, 0, NULL }, /* end */ - }; - - /* APR global initialization */ - if(apr_initialize() != APR_SUCCESS) { - apr_terminate(); - return 1; - } - - /* create APR pool */ - pool = apt_pool_create(); - if(!pool) { - apr_terminate(); - return 1; - } - - rv = apr_getopt_init(&opt, pool , argc, argv); - if(rv == APR_SUCCESS) { - int optch; - const char *optarg; - while((rv = apr_getopt_long(opt, opt_option, &optch, &optarg)) == APR_SUCCESS) { - switch(optch) { - case 'r': - if ((reg == USR_NONE) || (reg == USR_REGISTER)) { - reg = USR_REGISTER; - root_dir = optarg; - } else { - puts("Incosistent arguments"); - ret = FALSE; - } - break; - case 'u': - if ((reg == USR_NONE) || (reg == USR_UNREGISTER)) - reg = USR_UNREGISTER; - else { - puts("Incosistent arguments"); - ret = FALSE; - } - break; - case 's': - if ((control == USC_NONE) || (control == USC_START)) - control = USC_START; - else { - puts("Incosistent arguments"); - ret = FALSE; - } - break; - case 't': - if ((control == USC_NONE) || (control == USC_STOP)) - control = USC_STOP; - else { - puts("Incosistent arguments"); - ret = FALSE; - } - break; - case 'n': - name = optarg; - break; - case 'a': - autostart = TRUE; - break; - case 'f': - if (sscanf(optarg, "%lu", &recover) != 1) { - puts("Invalid value for param --fail-restart"); - ret = FALSE; - } - break; - case 'l': - if ((sscanf(optarg, "%d", &log_priority) != 1) || - (log_priority < 0) || (log_priority > 7)) - { - puts("Invalid value for param --log-prio"); - ret = FALSE; - } - break; - case 'p': - disp_name = optarg; - break; - case 'c': - description = optarg; - break; - case 'h': - usage(); - break; - } - if (!ret) break; - } - if (ret && - (((reg == USR_REGISTER) && (control == USC_STOP)) || - ((reg == USR_UNREGISTER) && (control == USC_START)))) { - ret = FALSE; - puts("Inconsistent arguments"); - } - if((rv != APR_EOF) || !ret || (!reg && !control)) { - ret = FALSE; - usage(); - } - } - - while (ret) { /* No problem so far */ - if (reg == USR_REGISTER) - ret = uni_service_register(root_dir, pool, name, autostart, recover, log_priority, disp_name, description); - if (!ret) break; - - if (control == USC_START) - ret = uni_service_start(name); - if (!ret) break; - - if (control == USC_STOP) - ret = uni_service_stop(name); - /* Do not break here, stop failure should not matter before unregistration */ - - if (reg == USR_UNREGISTER) - ret = uni_service_unregister(name); - break; - } - - /* destroy APR pool */ - apr_pool_destroy(pool); - /* APR global termination */ - apr_terminate(); - return ret ? 0 : 1; -} diff --git a/libs/unimrcp/build/tools/unimrcpservice.exe.manifest b/libs/unimrcp/build/tools/unimrcpservice.exe.manifest deleted file mode 100644 index 3a14ebfb75a..00000000000 --- a/libs/unimrcp/build/tools/unimrcpservice.exe.manifest +++ /dev/null @@ -1,11 +0,0 @@ - - - - - - - - - - - diff --git a/libs/unimrcp/build/tools/unimrcpservice.rc b/libs/unimrcp/build/tools/unimrcpservice.rc deleted file mode 100644 index a9cebe94dc6..00000000000 --- a/libs/unimrcp/build/tools/unimrcpservice.rc +++ /dev/null @@ -1,39 +0,0 @@ -#include "uni_version.h" - -1 VERSIONINFO - FILEVERSION UNI_VERSION_STRING_CSV,0 - PRODUCTVERSION UNI_VERSION_STRING_CSV,0 - FILEFLAGSMASK 0x3fL -#if defined(_DEBUG) - FILEFLAGS 0x01L -#else - FILEFLAGS 0x00L -#endif -#if defined(WINNT) || defined(WIN64) - FILEOS 0x40004L -#else - FILEOS 0x4L -#endif - FILETYPE 0x1L - FILESUBTYPE 0x0L -BEGIN - BLOCK "StringFileInfo" - BEGIN - BLOCK "040904b0" - BEGIN - VALUE "Comments", UNI_LICENSE "\0" - VALUE "CompanyName", "UniMRCP\0" - VALUE "FileDescription", "UniMRCP Service Manager\0" - VALUE "FileVersion", UNI_VERSION_STRING "\0" - VALUE "InternalName", "unimrcpservice" "\0" - VALUE "LegalCopyright", UNI_COPYRIGHT "\0" - VALUE "OriginalFilename", "unimrcpservice.exe" "\0" - VALUE "ProductName", "UniMRCP Project\0" - VALUE "ProductVersion", UNI_VERSION_STRING "\0" - END - END - BLOCK "VarFileInfo" - BEGIN - VALUE "Translation", 0x409, 1200 - END -END diff --git a/libs/unimrcp/build/tools/unimrcpservice.vcproj b/libs/unimrcp/build/tools/unimrcpservice.vcproj deleted file mode 100644 index fec552b155f..00000000000 --- a/libs/unimrcp/build/tools/unimrcpservice.vcproj +++ /dev/null @@ -1,326 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/libs/unimrcp/build/tools/unimrcpservice.vcxproj b/libs/unimrcp/build/tools/unimrcpservice.vcxproj deleted file mode 100644 index 63e1324ba3c..00000000000 --- a/libs/unimrcp/build/tools/unimrcpservice.vcxproj +++ /dev/null @@ -1,136 +0,0 @@ - - - - - Debug - Win32 - - - Debug - x64 - - - Release - Win32 - - - Release - x64 - - - - {4714EF49-BFD5-4B22-95F7-95A07F1EAC25} - unimrcpservice - - - - Application - - - Application - - - Application - - - Application - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - <_ProjectFileVersion>10.0.30319.1 - AllRules.ruleset - - - AllRules.ruleset - - - AllRules.ruleset - - - AllRules.ruleset - - - - - - aprtoolkit.lib;libaprutil-1.lib;libapr-1.lib;%(AdditionalDependencies) - RequireAdministrator - - - - - aprtoolkit.lib;libaprutil-1.lib;libapr-1.lib;%(AdditionalDependencies) - UseLinkTimeCodeGeneration - RequireAdministrator - - - - - X64 - - - ProgramDatabase - - - aprtoolkit.lib;libaprutil-1.lib;libapr-1.lib;%(AdditionalDependencies) - RequireAdministrator - - - - - X64 - - - aprtoolkit.lib;libaprutil-1.lib;libapr-1.lib;%(AdditionalDependencies) - UseLinkTimeCodeGeneration - RequireAdministrator - - - - - - - - {13deeca0-bdd4-4744-a1a2-8eb0a44df3d2} - false - - - - - ..\..\build;%(AdditionalIncludeDirectories) - ..\..\build;%(AdditionalIncludeDirectories) - ..\..\build;%(AdditionalIncludeDirectories) - ..\..\build;%(AdditionalIncludeDirectories) - - - - - - \ No newline at end of file diff --git a/libs/unimrcp/build/tools/unimrcpservice.vcxproj.filters b/libs/unimrcp/build/tools/unimrcpservice.vcxproj.filters deleted file mode 100644 index 8a04533143c..00000000000 --- a/libs/unimrcp/build/tools/unimrcpservice.vcxproj.filters +++ /dev/null @@ -1,17 +0,0 @@ - - - - - {4FC737F1-C7A5-4376-A066-2A32D752A2FF} - cpp;c;cc;cxx;def;odl;idl;hpj;bat;asm;asmx - - - - - src - - - - - - \ No newline at end of file diff --git a/libs/unimrcp/build/uni_revision.h b/libs/unimrcp/build/uni_revision.h deleted file mode 100644 index b7680b88cf1..00000000000 --- a/libs/unimrcp/build/uni_revision.h +++ /dev/null @@ -1,43 +0,0 @@ -/* - * Copyright 2008-2014 Arsen Chaloyan - * - * Licensed under the Apache License, Version 2.0 (the License); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an AS IS BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -#ifndef UNI_REVISION_H -#define UNI_REVISION_H - -/** - * @file uni_revision.h - * @brief UniMRCP Revision - * - * This file contains the revision base number and other relevant information. - */ - -/** Revision base number. */ -#define UNI_REVISION 2208 - -/** Revision base string. */ -#define UNI_REVISION_STRING "2208" - -/** Revision base date. */ -#define UNI_REVISION_DATE "2014-10-31" - -/** Revision base stamp. */ -#define UNI_REVISION_STAMP 20141031L - - -/** Check at compile time if the revision base number is at least a certain level. */ -#define UNI_REVISION_AT_LEAST(rev) ((rev) < UNI_REVISION) - -#endif /* UNI_REVISION_H */ diff --git a/libs/unimrcp/build/uni_version.h b/libs/unimrcp/build/uni_version.h deleted file mode 100644 index 2e0edb9c30a..00000000000 --- a/libs/unimrcp/build/uni_version.h +++ /dev/null @@ -1,100 +0,0 @@ -/* - * Copyright 2008-2014 Arsen Chaloyan - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - * - * $Id: uni_version.h 2139 2014-07-07 05:06:19Z achaloyan@gmail.com $ - */ - -#ifndef UNI_VERSION_H -#define UNI_VERSION_H - -/** - * @file uni_version.h - * @brief UniMRCP Version - * - * UniMRCP uses a version numbering scheme derived from the APR project. - * - * APR's Version Numbering - */ - -/** major version - * Major API changes that could cause compatibility problems for older - * programs such as structure size changes. No binary compatibility is - * possible across a change in the major version. - */ -#define UNI_MAJOR_VERSION 1 - -/** minor version - * Minor API changes that do not cause binary compatibility problems. - * Reset to 0 when upgrading UNI_MAJOR_VERSION. - */ -#define UNI_MINOR_VERSION 2 - -/** patch level - * The Patch Level never includes API changes, simply bug fixes. - * Reset to 0 when upgrading UNI_MINOR_VERSION. - */ -#define UNI_PATCH_VERSION 0 - - -/** Check at compile time if the version of UniMRCP is at least a certain level. */ -#define UNI_VERSION_AT_LEAST(major,minor,patch) \ -(((major) < UNI_MAJOR_VERSION) \ - || ((major) == UNI_MAJOR_VERSION && (minor) < UNI_MINOR_VERSION) \ - || ((major) == UNI_MAJOR_VERSION && (minor) == UNI_MINOR_VERSION && (patch) <= UNI_PATCH_VERSION)) - -/** Properly quote a value as a string in the C preprocessor. */ -#define UNI_STRINGIFY(n) UNI_STRINGIFY_HELPER(n) -/** Helper macro for UNI_STRINGIFY. */ -#define UNI_STRINGIFY_HELPER(n) #n - -/** The formatted string of UniMRCP's version. */ -#define UNI_VERSION_STRING \ - UNI_STRINGIFY(UNI_MAJOR_VERSION) "." \ - UNI_STRINGIFY(UNI_MINOR_VERSION) "." \ - UNI_STRINGIFY(UNI_PATCH_VERSION) - -/** An alternative formatted string of UniMRCP's version - macro for Win32 .rc files using numeric CSV representation. */ -#define UNI_VERSION_STRING_CSV UNI_MAJOR_VERSION ##, \ - ##UNI_MINOR_VERSION ##, \ - ##UNI_PATCH_VERSION - -/** The Copyright. */ -#define UNI_COPYRIGHT "Copyright 2008-2014 Arsen Chaloyan" - -/* - * Use the brief description of the license for Win32 .rc files; - * otherwise, use the full description. - */ -#if defined(APSTUDIO_INVOKED) || defined(RC_INVOKED) -/** The License (brief description). */ -#define UNI_LICENSE "The Apache License, Version 2.0" -#else -/** The License (full description). */ -#define UNI_LICENSE \ - " * Licensed under the Apache License, Version 2.0 (the ""License"");\n" \ - " * you may not use this file except in compliance with the License.\n" \ - " * You may obtain a copy of the License at\n" \ - " * \n" \ - " * http://www.apache.org/licenses/LICENSE-2.0 \n" \ - " * \n" \ - " * Unless required by applicable law or agreed to in writing, software\n" \ - " * distributed under the License is distributed on an ""AS IS"" BASIS,\n" \ - " * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n" \ - " * See the License for the specific language governing permissions and\n" \ - " * limitations under the License.\n" -#endif /* APSTUDIO_INVOKED || RC_INVOKED */ - -#endif /* UNI_VERSION_H */ diff --git a/libs/unimrcp/build/vsprops/apr.vsprops b/libs/unimrcp/build/vsprops/apr.vsprops deleted file mode 100644 index a37045dcd8e..00000000000 --- a/libs/unimrcp/build/vsprops/apr.vsprops +++ /dev/null @@ -1,24 +0,0 @@ - - - - - - - diff --git a/libs/unimrcp/build/vsprops/apt.vsprops b/libs/unimrcp/build/vsprops/apt.vsprops deleted file mode 100644 index e5d8b57780d..00000000000 --- a/libs/unimrcp/build/vsprops/apt.vsprops +++ /dev/null @@ -1,13 +0,0 @@ - - - - diff --git a/libs/unimrcp/build/vsprops/mpf.vsprops b/libs/unimrcp/build/vsprops/mpf.vsprops deleted file mode 100644 index 6e051d86078..00000000000 --- a/libs/unimrcp/build/vsprops/mpf.vsprops +++ /dev/null @@ -1,13 +0,0 @@ - - - - diff --git a/libs/unimrcp/build/vsprops/mrcp.vsprops b/libs/unimrcp/build/vsprops/mrcp.vsprops deleted file mode 100644 index c51b241a537..00000000000 --- a/libs/unimrcp/build/vsprops/mrcp.vsprops +++ /dev/null @@ -1,13 +0,0 @@ - - - - diff --git a/libs/unimrcp/build/vsprops/mrcpclient.vsprops b/libs/unimrcp/build/vsprops/mrcpclient.vsprops deleted file mode 100644 index 0a866442f2e..00000000000 --- a/libs/unimrcp/build/vsprops/mrcpclient.vsprops +++ /dev/null @@ -1,12 +0,0 @@ - - - - diff --git a/libs/unimrcp/build/vsprops/mrcpengine.vsprops b/libs/unimrcp/build/vsprops/mrcpengine.vsprops deleted file mode 100644 index 5108cf30d3f..00000000000 --- a/libs/unimrcp/build/vsprops/mrcpengine.vsprops +++ /dev/null @@ -1,12 +0,0 @@ - - - - diff --git a/libs/unimrcp/build/vsprops/mrcpserver.vsprops b/libs/unimrcp/build/vsprops/mrcpserver.vsprops deleted file mode 100644 index 11932f804c5..00000000000 --- a/libs/unimrcp/build/vsprops/mrcpserver.vsprops +++ /dev/null @@ -1,12 +0,0 @@ - - - - diff --git a/libs/unimrcp/build/vsprops/mrcpsignaling.vsprops b/libs/unimrcp/build/vsprops/mrcpsignaling.vsprops deleted file mode 100644 index 170a8ea14d8..00000000000 --- a/libs/unimrcp/build/vsprops/mrcpsignaling.vsprops +++ /dev/null @@ -1,12 +0,0 @@ - - - - diff --git a/libs/unimrcp/build/vsprops/mrcpv2transport.vsprops b/libs/unimrcp/build/vsprops/mrcpv2transport.vsprops deleted file mode 100644 index 88d046158d0..00000000000 --- a/libs/unimrcp/build/vsprops/mrcpv2transport.vsprops +++ /dev/null @@ -1,12 +0,0 @@ - - - - diff --git a/libs/unimrcp/build/vsprops/sdk/unimrcpclient.vsprops b/libs/unimrcp/build/vsprops/sdk/unimrcpclient.vsprops deleted file mode 100644 index 09ca2cd1940..00000000000 --- a/libs/unimrcp/build/vsprops/sdk/unimrcpclient.vsprops +++ /dev/null @@ -1,12 +0,0 @@ - - - - diff --git a/libs/unimrcp/build/vsprops/sdk/unimrcpplugin.vsprops b/libs/unimrcp/build/vsprops/sdk/unimrcpplugin.vsprops deleted file mode 100644 index 96fb0cfed11..00000000000 --- a/libs/unimrcp/build/vsprops/sdk/unimrcpplugin.vsprops +++ /dev/null @@ -1,12 +0,0 @@ - - - - diff --git a/libs/unimrcp/build/vsprops/sdk/unimrcpsdk.vsprops b/libs/unimrcp/build/vsprops/sdk/unimrcpsdk.vsprops deleted file mode 100644 index f5cd0d311a9..00000000000 --- a/libs/unimrcp/build/vsprops/sdk/unimrcpsdk.vsprops +++ /dev/null @@ -1,21 +0,0 @@ - - - - - - diff --git a/libs/unimrcp/build/vsprops/sdk/unimrcpserver.vsprops b/libs/unimrcp/build/vsprops/sdk/unimrcpserver.vsprops deleted file mode 100644 index df5df74f973..00000000000 --- a/libs/unimrcp/build/vsprops/sdk/unimrcpserver.vsprops +++ /dev/null @@ -1,12 +0,0 @@ - - - - diff --git a/libs/unimrcp/build/vsprops/sofiasip.vsprops b/libs/unimrcp/build/vsprops/sofiasip.vsprops deleted file mode 100644 index 2b5b65653ba..00000000000 --- a/libs/unimrcp/build/vsprops/sofiasip.vsprops +++ /dev/null @@ -1,16 +0,0 @@ - - - - - diff --git a/libs/unimrcp/build/vsprops/unibase.vsprops b/libs/unimrcp/build/vsprops/unibase.vsprops deleted file mode 100644 index 2d64884ea8c..00000000000 --- a/libs/unimrcp/build/vsprops/unibase.vsprops +++ /dev/null @@ -1,22 +0,0 @@ - - - - - - diff --git a/libs/unimrcp/build/vsprops/unibin-x64.vsprops b/libs/unimrcp/build/vsprops/unibin-x64.vsprops deleted file mode 100644 index 6348c8dac2d..00000000000 --- a/libs/unimrcp/build/vsprops/unibin-x64.vsprops +++ /dev/null @@ -1,19 +0,0 @@ - - - - - diff --git a/libs/unimrcp/build/vsprops/unibin.vsprops b/libs/unimrcp/build/vsprops/unibin.vsprops deleted file mode 100644 index 016f9973dbe..00000000000 --- a/libs/unimrcp/build/vsprops/unibin.vsprops +++ /dev/null @@ -1,15 +0,0 @@ - - - - diff --git a/libs/unimrcp/build/vsprops/unidebug.vsprops b/libs/unimrcp/build/vsprops/unidebug.vsprops deleted file mode 100644 index 0cbede51a22..00000000000 --- a/libs/unimrcp/build/vsprops/unidebug.vsprops +++ /dev/null @@ -1,23 +0,0 @@ - - - - - diff --git a/libs/unimrcp/build/vsprops/unilib-x64.vsprops b/libs/unimrcp/build/vsprops/unilib-x64.vsprops deleted file mode 100644 index ba029c06998..00000000000 --- a/libs/unimrcp/build/vsprops/unilib-x64.vsprops +++ /dev/null @@ -1,17 +0,0 @@ - - - - - diff --git a/libs/unimrcp/build/vsprops/unilib.vsprops b/libs/unimrcp/build/vsprops/unilib.vsprops deleted file mode 100644 index 32ea070327d..00000000000 --- a/libs/unimrcp/build/vsprops/unilib.vsprops +++ /dev/null @@ -1,13 +0,0 @@ - - - - diff --git a/libs/unimrcp/build/vsprops/unimrcpclient.vsprops b/libs/unimrcp/build/vsprops/unimrcpclient.vsprops deleted file mode 100644 index 8f1edceebdb..00000000000 --- a/libs/unimrcp/build/vsprops/unimrcpclient.vsprops +++ /dev/null @@ -1,16 +0,0 @@ - - - - - diff --git a/libs/unimrcp/build/vsprops/unimrcpserver.vsprops b/libs/unimrcp/build/vsprops/unimrcpserver.vsprops deleted file mode 100644 index 8f812676eaa..00000000000 --- a/libs/unimrcp/build/vsprops/unimrcpserver.vsprops +++ /dev/null @@ -1,16 +0,0 @@ - - - - - diff --git a/libs/unimrcp/build/vsprops/uniplugin-x64.vsprops b/libs/unimrcp/build/vsprops/uniplugin-x64.vsprops deleted file mode 100644 index 44f4057e3f3..00000000000 --- a/libs/unimrcp/build/vsprops/uniplugin-x64.vsprops +++ /dev/null @@ -1,20 +0,0 @@ - - - - - diff --git a/libs/unimrcp/build/vsprops/uniplugin.vsprops b/libs/unimrcp/build/vsprops/uniplugin.vsprops deleted file mode 100644 index a794952a06c..00000000000 --- a/libs/unimrcp/build/vsprops/uniplugin.vsprops +++ /dev/null @@ -1,16 +0,0 @@ - - - - diff --git a/libs/unimrcp/build/vsprops/unirelease.vsprops b/libs/unimrcp/build/vsprops/unirelease.vsprops deleted file mode 100644 index bb1f511e93f..00000000000 --- a/libs/unimrcp/build/vsprops/unirelease.vsprops +++ /dev/null @@ -1,15 +0,0 @@ - - - - diff --git a/libs/unimrcp/build/vsprops/unirtsp.vsprops b/libs/unimrcp/build/vsprops/unirtsp.vsprops deleted file mode 100644 index b46259472ab..00000000000 --- a/libs/unimrcp/build/vsprops/unirtsp.vsprops +++ /dev/null @@ -1,13 +0,0 @@ - - - - diff --git a/libs/unimrcp/conf/Makefile.am b/libs/unimrcp/conf/Makefile.am deleted file mode 100644 index ca84a04bca5..00000000000 --- a/libs/unimrcp/conf/Makefile.am +++ /dev/null @@ -1,31 +0,0 @@ -MAINTAINERCLEANFILES = Makefile.in - -CONFFILES = logger.xml dirlayout.xml - -if UNIMRCP_CLIENT_LIB -CONFFILES += unimrcpclient.xml unimrcpclient.xsd -endif - -if UNIMRCP_SERVER_LIB -CONFFILES += unimrcpserver.xml unimrcpserver.xsd -endif - -if UMC -CONFFILES += umcscenarios.xml -endif - -def-conf: - test -d $(DESTDIR)$(sysconfdir) || $(mkinstalldirs) $(DESTDIR)$(sysconfdir) - for conffile in $(CONFFILES) ; do \ - $(INSTALL) -m 644 $(top_srcdir)/conf/$$conffile $(DESTDIR)$(sysconfdir); \ - done -if UNIMRCP_CLIENT_LIB - test -d $(DESTDIR)$(sysconfdir)/client-profiles || $(mkinstalldirs) $(DESTDIR)$(sysconfdir)/client-profiles - for conffile in `find $(top_srcdir)/conf/client-profiles/ -maxdepth 1 -name \*.xml -o -name \*.xsd` ; do \ - filename=`echo $$conffile | sed -e 's|^.*/||'`; \ - $(INSTALL) -m 644 $(top_srcdir)/conf/client-profiles/$$filename $(DESTDIR)$(sysconfdir)/client-profiles; \ - done -endif - -install-data-local: - test -d $(DESTDIR)$(sysconfdir) || $(MAKE) def-conf diff --git a/libs/unimrcp/conf/client-profiles/lumenvox.xml b/libs/unimrcp/conf/client-profiles/lumenvox.xml deleted file mode 100644 index 4b592a5450b..00000000000 --- a/libs/unimrcp/conf/client-profiles/lumenvox.xml +++ /dev/null @@ -1,50 +0,0 @@ - - - - - - - - - 5060 - - - - - - - - 554 - - - - - - - - - - - - SIP-Agent-1 - MRCPv2-Agent-1 - Media-Engine-1 - RTP-Factory-1 - LumenVox-SIP-Settings - RTP-Settings-1 - - - - - RTSP-Agent-1 - Media-Engine-1 - RTP-Factory-1 - LumenVox-RTSP-Settings - RTP-Settings-1 - - - - - diff --git a/libs/unimrcp/conf/client-profiles/nuance.xml b/libs/unimrcp/conf/client-profiles/nuance.xml deleted file mode 100644 index 8725703ab06..00000000000 --- a/libs/unimrcp/conf/client-profiles/nuance.xml +++ /dev/null @@ -1,78 +0,0 @@ - - - - - - - - - 5060 - - - - - - - - - 4900 - - media - - - - - - - - - - 1 - 50 - 600 - 1 - - 20 - PCMU PCMA L16/96/8000 telephone-event/101/8000 - - - - 2 - - 5000 - - 1000 - - - - - - - - - SIP-Agent-1 - MRCPv2-Agent-1 - Media-Engine-1 - RTP-Factory-1 - Nuance-SIP-Settings - Nuance-RTP-Settings - - - - - RTSP-Agent-1 - Media-Engine-1 - RTP-Factory-1 - Nuance-RTSP-Settings - Nuance-RTP-Settings - - - - - diff --git a/libs/unimrcp/conf/client-profiles/speechpro.xml b/libs/unimrcp/conf/client-profiles/speechpro.xml deleted file mode 100644 index 9f765bef615..00000000000 --- a/libs/unimrcp/conf/client-profiles/speechpro.xml +++ /dev/null @@ -1,33 +0,0 @@ - - - - - - - - - 8000 - - - - - - - - - - - - - RTSP-Agent-1 - Media-Engine-1 - RTP-Factory-1 - SpeechPro-RTSP-Settings - RTP-Settings-1 - - - - - diff --git a/libs/unimrcp/conf/client-profiles/unimrcp.xml b/libs/unimrcp/conf/client-profiles/unimrcp.xml deleted file mode 100644 index e29d8784fd8..00000000000 --- a/libs/unimrcp/conf/client-profiles/unimrcp.xml +++ /dev/null @@ -1,51 +0,0 @@ - - - - - - - - - 8060 - - - - - - - - 1554 - - media - - - - - - - - - - - SIP-Agent-1 - MRCPv2-Agent-1 - Media-Engine-1 - RTP-Factory-1 - UniMRCP-SIP-Settings - RTP-Settings-1 - - - - - RTSP-Agent-1 - Media-Engine-1 - RTP-Factory-1 - UniMRCP-RTSP-Settings - RTP-Settings-1 - - - - - diff --git a/libs/unimrcp/conf/dirlayout.xml b/libs/unimrcp/conf/dirlayout.xml deleted file mode 100644 index 45df55ba7eb..00000000000 --- a/libs/unimrcp/conf/dirlayout.xml +++ /dev/null @@ -1,26 +0,0 @@ - - - - - conf - plugin - log - data - var - diff --git a/libs/unimrcp/conf/logger.xml b/libs/unimrcp/conf/logger.xml deleted file mode 100644 index 73ae9b5cacf..00000000000 --- a/libs/unimrcp/conf/logger.xml +++ /dev/null @@ -1,38 +0,0 @@ - - - - - INFO - - - CONSOLE - - - DATE,TIME,PRIORITY - - - NONE - diff --git a/libs/unimrcp/conf/umcscenarios.xml b/libs/unimrcp/conf/umcscenarios.xml deleted file mode 100644 index d5c713e201e..00000000000 --- a/libs/unimrcp/conf/umcscenarios.xml +++ /dev/null @@ -1,117 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - --> - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/libs/unimrcp/conf/unimrcpclient.xml b/libs/unimrcp/conf/unimrcpclient.xml deleted file mode 100644 index cc23b9bc03e..00000000000 --- a/libs/unimrcp/conf/unimrcpclient.xml +++ /dev/null @@ -1,111 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - 8062 - udp - UniMRCP SofiaSIP - UniMRCPClient - - - - - - - - - - - 100 - - UniMRCPClient - - - - - 100 - false - 1024 - 1024 - - - - - - 1 - - - - - - - - 4000 - 5000 - - - - - - - - 1 - 50 - 600 - 1 - - 20 - PCMU PCMA L16/96/8000 telephone-event/101/8000 - - - - - 1 - - 5000 - - 1000 - - - - diff --git a/libs/unimrcp/conf/unimrcpclient.xsd b/libs/unimrcp/conf/unimrcpclient.xsd deleted file mode 100644 index b8e53bbf1fb..00000000000 --- a/libs/unimrcp/conf/unimrcpclient.xsd +++ /dev/null @@ -1,277 +0,0 @@ - - - - - UniMRCP client document - - - - - - Generic properties - - - - - - - - - - - - - - - - - - - - - - - - Common components - - - - - - Factory of MRCP resources - - - - - - - - - - - - - - - SIP signaling agent - - - - - - - - - - - - - - - - - - - - - - - - RTSP signaling agent - - - - - - - - - - - - - - - MRCPv2 connection agent - - - - - - - - - - - - - - - - Media processing engine - - - - - - - - - - - - Factory of RTP terminations - - - - - - - - - - - - - - - - - - Settings - - - - - - SIP settings - - - - - - - - - - - - - - - RTSP settings - - - - - - - - - - - - - - - - - - - - - - - - - - - RTP settings - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - Profiles - - - - - - MRCPv2 profile - - - - - - - - - - - - - - - - - MRCPv1 profile - - - - - - - - - - - - - - - - - - - - - - - - - - - - - \ No newline at end of file diff --git a/libs/unimrcp/conf/unimrcpserver.xml b/libs/unimrcp/conf/unimrcpserver.xml deleted file mode 100644 index b431acf3134..00000000000 --- a/libs/unimrcp/conf/unimrcpserver.xml +++ /dev/null @@ -1,166 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - 8060 - udp,tcp - - UniMRCP SofiaSIP - UniMRCPServer - - - - - - - - - - - - - - 1554 - - - - - - 100 - UniMRCPServer - - - - - - - 1544 - 100 - false - 1024 - 1024 - - - - - 1 - - - - - - - - 5000 - 6000 - - - - - - - - - - - - - - - - - - 1 - 50 - 600 - 1 - - 20 - PCMU PCMA L16/96/8000 telephone-event/101/8000 - - - - - 1 - - 5000 - - 1000 - - - - - - - - - SIP-Agent-1 - MRCPv2-Agent-1 - Media-Engine-1 - RTP-Factory-1 - RTP-Settings-1 - - - - - - - RTSP-Agent-1 - Media-Engine-1 - RTP-Factory-1 - RTP-Settings-1 - - - - - diff --git a/libs/unimrcp/conf/unimrcpserver.xsd b/libs/unimrcp/conf/unimrcpserver.xsd deleted file mode 100644 index f8222c84d51..00000000000 --- a/libs/unimrcp/conf/unimrcpserver.xsd +++ /dev/null @@ -1,277 +0,0 @@ - - - - - UniMRCP server document - - - - - - Generic properties - - - - - - - - - - - - - - - - - - - Common components - - - - - - Factory of MRCP resources - - - - - - - - - - - - - - - SIP signaling agent - - - - - - - - - - - - - - - - - - - - - - - - - RTSP signaling agent - - - - - - - - - - - - - - - - - - - - - - - - - - - - - MRCPv2 connection agent - - - - - - - - - - - - - - - - - Media processing engine - - - - - - - - - - - - Factory of RTP terminations - - - - - - - - - - - - - - - Factory of plugins (MRCP engines) - - - - - - - - - - - - - - - - - - - - - - - - - - - - Settings - - - - - - RTP settings - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - Profiles - - - - - - MRCPv2 profile - - - - - - - - - - - - - - - - MRCPv1 profile - - - - - - - - - - - - - - - - - - - - - - - - - - - - \ No newline at end of file diff --git a/libs/unimrcp/config.layout b/libs/unimrcp/config.layout deleted file mode 100644 index 1d3472c1e98..00000000000 --- a/libs/unimrcp/config.layout +++ /dev/null @@ -1,26 +0,0 @@ -## -## config.layout -- Pre-defined Installation Path Layouts -## -## Hints: -## - layouts can be loaded with configure's --enable-layout=ID option -## - when no --enable-layout option is given, the default layout is `classic' - -# Classical UniMRCP path layout. - - prefix: /usr/local/unimrcp - exec_prefix: ${prefix} - bindir: ${exec_prefix}/bin - sbindir: ${exec_prefix}/bin - libdir: ${exec_prefix}/lib - libexecdir: ${exec_prefix}/modules - mandir: ${prefix}/man - sysconfdir: ${prefix}/conf - confdir: ${prefix}/conf - datadir: ${prefix}/data - plugindir: ${exec_prefix}/plugin - logdir: ${exec_prefix}/log - vardir: ${exec_prefix}/var - installbuilddir: ${exec_prefix}/build - includedir: ${prefix}/include - localstatedir: ${prefix} - diff --git a/libs/unimrcp/configure.ac b/libs/unimrcp/configure.ac deleted file mode 100644 index 851f56d71b1..00000000000 --- a/libs/unimrcp/configure.ac +++ /dev/null @@ -1,285 +0,0 @@ -dnl -dnl Autoconf configuration file for UniMRCP. -dnl -dnl Use ./bootstrap to produce a configure script. -dnl - -AC_PREREQ(2.59) - -AC_INIT([unimrcp],[1.2.0]) - -AC_CONFIG_AUX_DIR([build]) -AC_CONFIG_MACRO_DIR([build/acmacros]) - -dnl Set ac_macro_dir variable manually for autoconf 2.61 and above. -ac_macro_dir="build/acmacros" - -AC_SUBST(ac_aux_dir) -AC_SUBST(ac_macro_dir) - -dnl Include m4 macros for libtool 2. -sinclude(build/acmacros/libtool.m4) -sinclude(build/acmacros/ltoptions.m4) -sinclude(build/acmacros/ltsugar.m4) -sinclude(build/acmacros/ltversion.m4) -sinclude(build/acmacros/lt~obsolete.m4) - -AC_PREFIX_DEFAULT(/usr/local/unimrcp) - -dnl Define the directory layout. -APR_ENABLE_LAYOUT(classic, [plugindir logdir vardir]) -AC_SUBST(plugindir) -AC_SUBST(logdir) -AC_SUBST(vardir) - -dnl Reparse the configure arguments. -APR_PARSE_ARGUMENTS - -dnl Generate ./config.nice to reuse ./configure command-line. -APR_CONFIG_NICE(config.nice) - -AM_INIT_AUTOMAKE([no-define nostdinc foreign subdir-objects]) - -dnl Enable silent build rules available since automake 1.11. -m4_ifdef([AM_SILENT_RULES], [AM_SILENT_RULES([yes])]) - -dnl Set default language. -AC_LANG_C - -AC_PROG_CC -AC_PROG_CXX -AM_PROG_CC_C_O -AC_PROG_INSTALL - -dnl Skip detection of Fortran. -m4_undefine([AC_PROG_F77]) -m4_defun([AC_PROG_F77],[]) -AC_PROG_LIBTOOL - -dnl Do not use autoconf generated compiler DEFS. -rm confdefs.h -touch confdefs.h - -dnl Check for C compiler vendor. -AX_COMPILER_VENDOR - -dnl Search for pkg-config. -AC_PATH_PROG(PKG_CONFIG, pkg-config) - -dnl Get version information. -get_version="$srcdir/build/get-version.sh" -version_hdr="$srcdir/build/uni_version.h" -plugin_version_hdr="$srcdir/libs/mrcp-engine/include/mrcp_engine_plugin.h" -UNI_DOTTED_VERSION="`$get_version all $version_hdr UNI`" -UNI_LT_VERSION="-version-info `$get_version libtool $version_hdr UNI`" -PLUGIN_LT_VERSION="-version-info `$get_version libtool $plugin_version_hdr PLUGIN`" - -AC_SUBST(UNI_DOTTED_VERSION) -AC_SUBST(UNI_LT_VERSION) -AC_SUBST(PLUGIN_LT_VERSION) - -echo "UniMRCP Version: ${UNI_DOTTED_VERSION}" - -dnl Check for the APR and APR-util libraries. -UNIMRCP_CHECK_APR -dnl Check for the Sofia-SIP library. -UNIMRCP_CHECK_SOFIA - -dnl Enable inter-library dependencies. -AC_ARG_ENABLE(interlib-deps, - [AC_HELP_STRING([--disable-interlib-deps ],[disable inter-library dependencies (might break builds)])], - [enable_interlib_deps="$enableval"], - [enable_interlib_deps="yes"]) - -AC_MSG_NOTICE([enable inter-library dependencies: $enable_interlib_deps]) -if test "${enable_interlib_deps}" = "yes"; then - link_all_deplibs=yes - link_all_deplibs_CXX=yes -else - link_all_deplibs=no - link_all_deplibs_CXX=no -fi - -dnl Enable maintainer mode. -AC_ARG_ENABLE(maintainer-mode, - [AC_HELP_STRING([--enable-maintainer-mode ],[turn on debugging and compile time warnings])], - [enable_maintainer_mode="$enableval"], - [enable_maintainer_mode="no"]) - -AC_MSG_NOTICE([enable maintainer mode: $enable_maintainer_mode]) -if test "${enable_maintainer_mode}" != "no"; then - APR_ADDTO(CFLAGS,-g) - if test "x${ax_cv_c_compiler_vendor}" = "xgnu" ; then - APR_ADDTO(CFLAGS,-Wall -Werror) - fi -fi - -dnl UniMRCP client library. -AC_ARG_ENABLE(client-lib, - [AC_HELP_STRING([--disable-client-lib ],[exclude unimrcpclient lib from build])], - [enable_client_lib="$enableval"], - [enable_client_lib="yes"]) - -AM_CONDITIONAL([UNIMRCP_CLIENT_LIB],[test "${enable_client_lib}" = "yes"]) - -dnl Sample UniMRCP client application in C. -AC_ARG_ENABLE(client-app, - [AC_HELP_STRING([--disable-client-app ],[exclude sample unimrcpclient app from build])], - [enable_client_app="$enableval"], - [enable_client_app="yes"]) - -AM_CONDITIONAL([UNIMRCP_CLIENT_APP],[test "${enable_client_lib}" = "yes" && test "${enable_client_app}" = "yes"]) - -dnl Sample UniMRCP client application in C++. -AC_ARG_ENABLE(umc, - [AC_HELP_STRING([--disable-umc ],[exclude sample unimrcpclient C++ app from build])], - [enable_umc="$enableval"], - [enable_umc="yes"]) - -AM_CONDITIONAL([UMC],[test "${enable_client_lib}" = "yes" && test "${enable_umc}" = "yes"]) - -dnl Miscellaneous ASR client library and application. -AC_ARG_ENABLE(asr-client, - [AC_HELP_STRING([--disable-asr-client ],[exclude misc ASR client lib and app from build])], - [enable_asr_client="$enableval"], - [enable_asr_client="yes"]) - -AM_CONDITIONAL([ASR_CLIENT],[test "${enable_client_lib}" = "yes" && test "${enable_asr_client}" = "yes"]) - -AM_CONDITIONAL([COMMON_CLIENT_DATA],[test "${enable_client_app}" = "yes" || test "${enable_umc}" = "yes" ||test "${enable_asr_client}" = "yes"]) - -dnl UniMRCP server library. -AC_ARG_ENABLE(server-lib, - [AC_HELP_STRING([--disable-server-lib ],[exclude unimrcpserver lib from build])], - [enable_server_lib="$enableval"], - [enable_server_lib="yes"]) - -AM_CONDITIONAL([UNIMRCP_SERVER_LIB],[test "${enable_server_lib}" = "yes"]) - -dnl UniMRCP server application. -AC_ARG_ENABLE(server-app, - [AC_HELP_STRING([--disable-server-app ],[exclude unimrcpserver app from build])], - [enable_server_app="$enableval"], - [enable_server_app="yes"]) - -AM_CONDITIONAL([UNIMRCP_SERVER_APP],[test "${enable_server_lib}" = "yes" && test "${enable_server_app}" = "yes"]) - -dnl Demo synthesizer plugin. -UNI_PLUGIN_ENABLED(demosynth) - -AM_CONDITIONAL([DEMOSYNTH_PLUGIN],[test "${enable_demosynth_plugin}" = "yes"]) - -dnl Demo recognizer plugin. -UNI_PLUGIN_ENABLED(demorecog) - -AM_CONDITIONAL([DEMORECOG_PLUGIN],[test "${enable_demorecog_plugin}" = "yes"]) - -dnl Demo verifier plugin. -UNI_PLUGIN_ENABLED(demoverifier) - -AM_CONDITIONAL([DEMOVERIFIER_PLUGIN],[test "${enable_demoverifier_plugin}" = "yes"]) - -dnl Recorder plugin. -UNI_PLUGIN_ENABLED(recorder) - -AM_CONDITIONAL([RECORDER_PLUGIN],[test "${enable_recorder_plugin}" = "yes"]) - -dnl Enable test suites. -AC_ARG_ENABLE(test-suites, - [AC_HELP_STRING([--enable-test-suites ],[build test suites])], - [enable_test_suites="$enableval"], - [enable_test_suites="no"]) - -# Enable clang address sanitizer bit build -AC_ARG_ENABLE(address_sanitizer, - [AC_HELP_STRING([--enable-address-sanitizer],[build with address sanitizer])], - [enable_address_sanitizer="$enable_address_sanitizer"], - [enable_address_sanitizer="no"]) - -if test "${enable_address_sanitizer}" = "yes"; then - APR_ADDTO(CFLAGS, -fsanitize=address -fno-omit-frame-pointer) - APR_ADDTO(CXXFLAGS, -fsanitize=address -fno-omit-frame-pointer) - APR_ADDTO(LDFLAGS, -fsanitize=address) -fi - -AM_CONDITIONAL([TEST_SUITES],[test "${enable_test_suites}" != "no"]) - -AM_CONDITIONAL(ISMAC, [test `uname -s` = Darwin]) - -AC_CONFIG_FILES([ - Makefile - libs/Makefile - libs/apr-toolkit/Makefile - libs/mpf/Makefile - libs/mrcp/Makefile - libs/mrcp-signaling/Makefile - libs/mrcpv2-transport/Makefile - libs/mrcp-engine/Makefile - libs/mrcp-server/Makefile - libs/mrcp-client/Makefile - libs/uni-rtsp/Makefile - modules/Makefile - modules/mrcp-sofiasip/Makefile - modules/mrcp-unirtsp/Makefile - plugins/Makefile - plugins/mrcp-recorder/Makefile - plugins/demo-synth/Makefile - plugins/demo-recog/Makefile - plugins/demo-verifier/Makefile - platforms/Makefile - platforms/libunimrcp-server/Makefile - platforms/libunimrcp-client/Makefile - platforms/unimrcp-server/Makefile - platforms/unimrcp-client/Makefile - platforms/libasr-client/Makefile - platforms/asr-client/Makefile - platforms/umc/Makefile - tests/Makefile - tests/apttest/Makefile - tests/mpftest/Makefile - tests/mrcptest/Makefile - tests/rtsptest/Makefile - tests/strtablegen/Makefile - build/Makefile - build/pkgconfig/Makefile - build/pkgconfig/unimrcpclient.pc - build/pkgconfig/unimrcpserver.pc - build/pkgconfig/unimrcpplugin.pc - conf/Makefile - data/Makefile - docs/doxygen.conf -]) - -AC_OUTPUT - -echo -echo '****************************** REPORT ******************************' -echo -echo UniMRCP version............... : $UNI_DOTTED_VERSION -echo -echo APR version................... : $apr_version -echo APR-util version.............. : $apu_version -echo Sofia-SIP version............. : $sofia_version -echo -echo Compiler...................... : $CC -echo Compiler flags................ : $CFLAGS -echo Preprocessor definitions...... : $CPPFLAGS -echo Linker flags.................. : $LDFLAGS -echo -echo UniMRCP client lib............ : $enable_client_lib -echo Sample UniMRCP client app..... : $enable_client_app -echo Sample UMC C++ client app..... : $enable_umc -echo Misc ASR client lib and app... : $enable_asr_client -echo -echo UniMRCP server lib............ : $enable_server_lib -echo UniMRCP server app............ : $enable_server_app -echo -echo Demo synthesizer plugin....... : $enable_demosynth_plugin -echo Demo recognizer plugin........ : $enable_demorecog_plugin -echo Demo verifier plugin.......... : $enable_demoverifier_plugin -echo Recorder plugin............... : $enable_recorder_plugin -echo -echo Installation layout........... : $layout_name -echo Installation directory........ : $prefix -echo -echo '********************************************************************' diff --git a/libs/unimrcp/configure.gnu b/libs/unimrcp/configure.gnu deleted file mode 100755 index eaca53b7f7b..00000000000 --- a/libs/unimrcp/configure.gnu +++ /dev/null @@ -1,3 +0,0 @@ -#! /bin/sh -srcpath=$(dirname $0 2>/dev/null ) || srcpath="." -$srcpath/configure "$@" --with-apr=../apr --disable-shared --with-pic --with-apr-util=../apr-util --with-sofia-sip=/usr diff --git a/libs/unimrcp/data/Makefile.am b/libs/unimrcp/data/Makefile.am deleted file mode 100644 index 60b540646bc..00000000000 --- a/libs/unimrcp/data/Makefile.am +++ /dev/null @@ -1,31 +0,0 @@ -MAINTAINERCLEANFILES = Makefile.in - -DATAFILES = - -if COMMON_CLIENT_DATA -DATAFILES += grammar.jsgf grammar.mixed grammar.srgs grammar.xml \ - speak.txt speak.xml \ - one-16kHz.pcm one-8kHz.pcm \ - johnsmith-16kHz.pcm johnsmith-8kHz.pcm -endif - -if DEMOSYNTH_PLUGIN -DATAFILES += demo-16kHz.pcm demo-8kHz.pcm -endif - -if DEMORECOG_PLUGIN -DATAFILES += result.xml -endif - -if DEMOVERIFIER_PLUGIN -DATAFILES += result-verification.xml -endif - -def-data: - test -d $(DESTDIR)$(datadir) || $(mkinstalldirs) $(DESTDIR)$(datadir) - for datafile in $(DATAFILES) ; do \ - $(INSTALL) -m 644 $(top_srcdir)/data/$$datafile $(DESTDIR)$(datadir); \ - done - -install-data-local: - test -d $(DESTDIR)$(datadir) || $(MAKE) def-data diff --git a/libs/unimrcp/data/demo-16kHz.pcm b/libs/unimrcp/data/demo-16kHz.pcm deleted file mode 100644 index 5341461c25d..00000000000 Binary files a/libs/unimrcp/data/demo-16kHz.pcm and /dev/null differ diff --git a/libs/unimrcp/data/demo-8kHz.pcm b/libs/unimrcp/data/demo-8kHz.pcm deleted file mode 100644 index 5121fdc4839..00000000000 Binary files a/libs/unimrcp/data/demo-8kHz.pcm and /dev/null differ diff --git a/libs/unimrcp/data/grammar.jsgf b/libs/unimrcp/data/grammar.jsgf deleted file mode 100644 index 9257ecdca21..00000000000 --- a/libs/unimrcp/data/grammar.jsgf +++ /dev/null @@ -1,3 +0,0 @@ -#JSGF V1.0; -grammar digits; -public = (one | two | three); diff --git a/libs/unimrcp/data/grammar.mixed b/libs/unimrcp/data/grammar.mixed deleted file mode 100644 index dabe3a1c886..00000000000 --- a/libs/unimrcp/data/grammar.mixed +++ /dev/null @@ -1,19 +0,0 @@ - ---break -Content-Type:text/uri-list -Content-Length: 22 - -builtin:grammar/digits - ---break -Content-Type:application/srgs+xml -Content-Length: 230 - - - - - one two three four five - - ---break-- \ No newline at end of file diff --git a/libs/unimrcp/data/grammar.srgs b/libs/unimrcp/data/grammar.srgs deleted file mode 100644 index 6457d725d38..00000000000 --- a/libs/unimrcp/data/grammar.srgs +++ /dev/null @@ -1,4 +0,0 @@ -#ABNF 1.0; -language en-US; -mode voice; -public $digit = one | two | three; \ No newline at end of file diff --git a/libs/unimrcp/data/grammar.xml b/libs/unimrcp/data/grammar.xml deleted file mode 100644 index a6dbf88fa33..00000000000 --- a/libs/unimrcp/data/grammar.xml +++ /dev/null @@ -1,10 +0,0 @@ - - - - - one - two - three - - - \ No newline at end of file diff --git a/libs/unimrcp/data/johnsmith-16kHz.pcm b/libs/unimrcp/data/johnsmith-16kHz.pcm deleted file mode 100644 index 235338077d8..00000000000 Binary files a/libs/unimrcp/data/johnsmith-16kHz.pcm and /dev/null differ diff --git a/libs/unimrcp/data/johnsmith-8kHz.pcm b/libs/unimrcp/data/johnsmith-8kHz.pcm deleted file mode 100644 index 8332f407327..00000000000 Binary files a/libs/unimrcp/data/johnsmith-8kHz.pcm and /dev/null differ diff --git a/libs/unimrcp/data/one-16kHz.pcm b/libs/unimrcp/data/one-16kHz.pcm deleted file mode 100644 index 44e0b3431a1..00000000000 Binary files a/libs/unimrcp/data/one-16kHz.pcm and /dev/null differ diff --git a/libs/unimrcp/data/one-8kHz.pcm b/libs/unimrcp/data/one-8kHz.pcm deleted file mode 100644 index 92c1e92cf03..00000000000 Binary files a/libs/unimrcp/data/one-8kHz.pcm and /dev/null differ diff --git a/libs/unimrcp/data/result-verification.xml b/libs/unimrcp/data/result-verification.xml deleted file mode 100644 index 8ab8a32fb6a..00000000000 --- a/libs/unimrcp/data/result-verification.xml +++ /dev/null @@ -1,21 +0,0 @@ - - - - - - 500 - cellular-phone - male - accepted - 0.85 - - - 1500 - cellular-phone - male - accepted - 0.75 - - - - \ No newline at end of file diff --git a/libs/unimrcp/data/result.xml b/libs/unimrcp/data/result.xml deleted file mode 100644 index 74a1171e3cd..00000000000 --- a/libs/unimrcp/data/result.xml +++ /dev/null @@ -1,7 +0,0 @@ - - - - one - one - - \ No newline at end of file diff --git a/libs/unimrcp/data/speak.txt b/libs/unimrcp/data/speak.txt deleted file mode 100644 index 894d43a75f2..00000000000 --- a/libs/unimrcp/data/speak.txt +++ /dev/null @@ -1 +0,0 @@ -Welcome to Uni MRCP. \ No newline at end of file diff --git a/libs/unimrcp/data/speak.xml b/libs/unimrcp/data/speak.xml deleted file mode 100644 index 2a49ff048c4..00000000000 --- a/libs/unimrcp/data/speak.xml +++ /dev/null @@ -1,6 +0,0 @@ - - -

    - Welcome to Uni MRCP. -

    -
    \ No newline at end of file diff --git a/libs/unimrcp/docs/doxygen.conf.in b/libs/unimrcp/docs/doxygen.conf.in deleted file mode 100644 index b405be48f09..00000000000 --- a/libs/unimrcp/docs/doxygen.conf.in +++ /dev/null @@ -1,34 +0,0 @@ -PROJECT_NAME="UniMRCP" -PROJECT_NUMBER = @VERSION@ - -INPUT=. docs/mainpage.docs -QUIET=YES -RECURSIVE=YES -FILE_PATTERNS=*.h - -OUTPUT_DIRECTORY=docs/dox - -MACRO_EXPANSION=YES -EXPAND_ONLY_PREDEF=YES - -PREDEFINED="APT_DECLARE(x)=x" \ - "MPF_DECLARE(x)=x" \ - "MRCP_DECLARE(x)=x" \ - "RTSP_DECLARE(x)=x" - -OPTIMIZE_OUTPUT_FOR_C=YES -STRIP_CODE_COMMENTS=NO - -FULL_PATH_NAMES=NO -CASE_SENSE_NAMES=NO - -EXCLUDE=platforms/umc platforms/libasr-client platforms/asr-client -EXCLUDE_PATTERNS="*/acconfig.h" \ - "*/test/*" \ - "*/arch/*" - -GENERATE_HTML=YES -GENERATE_LATEX=NO -GENERATE_RTF=NO -GENERATE_MAN=NO -GENERATE_XML=NO diff --git a/libs/unimrcp/docs/mainpage.docs b/libs/unimrcp/docs/mainpage.docs deleted file mode 100644 index 7081702f573..00000000000 --- a/libs/unimrcp/docs/mainpage.docs +++ /dev/null @@ -1,71 +0,0 @@ -/** -@mainpage UniMRCP API Reference - -
    -@section Introduction - -UniMRCP is an open source project compliant with the IETF RFC6787 (MRCPv2) and RFC4463 (MRCPv1) specifications. -The project encapsulates SIP, RTSP, SDP, MRCPv2, and RTP/RTCP stacks and provides integrators with a protocol version consistent interface. - -- Compliance: MRCPv1, MRCPv2 (client and server) -- Resources: Synthesizer (TTS), Recognizer (ASR), Verifier (SVI), Recorder -- License: Apache 2.0 -- OS: Cross-platform (Windows, Linux, ...) -- Language: C, C++ -
    -
    -@section _ Source Tree Structure - -
    -@subsection Libraries - -- apr-toolkit - Set of utilities built on top of the APR and APR-util libraries (task abstraction, logging, etc). -- mpf - Media processing framework. -- mrcp - Implementation of MRCP basics (message, parser, resources). -- mrcpv2-transport - Implementation of the MRCPv2 transport layer. -- mrcp-signaling - Abstract MRCP signaling (session management) interface. -- mrcp-engine - Abstract resource engine interface. -- mrcp-client - Implementation of an MRCP client stack based on the abstract signaling interface. -- mrcp-server - Implementation of an MRCP server stack based on the abstract signaling and engine interfaces. -- uni-rtsp - Implementation of a minimal RTSP stack required for MRCPv1. - -
    -@subsection Modules - -- mrcp-sofiasip - Implementation of the abstract signaling interface using the SofiaSIP library. -- mrcp-unirtsp - Implementation of the abstract signaling interface using the UniRTSP library. - -
    -@subsection Plugins - -- demo-synth - Implementation of a TTS plugin which simulates synthesis. -- demo-recog - Implementation of an ASR plugin which simulates recognition. -- demo-verif - Implementation of an SVI plugin which simulates speaker verification. -- mrcp-recorder - Implementation of a recorder plugin. - -
    -@subsection Platforms - -- libunimrcpclient - The UniMRCP client stack built on top of the underlying mrcp-client library using the mrcp-sofiasip and mrcp-unirtsp modules. -- libunimrcpserver - The UniMRCP server stack based on top of the underlying mrcp-server library using the mrcp-sofiasip and mrcp-unirtsp modules. -- unimrcpclient - Sample C application based on the UniMRCP client stack. -- umc - Sample C++ application based on the UniMRCP client stack. -- unimrcpserver - The UniMRCP server application. - -
    -@section Dependencies - -- APR - Apache Portable Runtime Library -- Sofia-SIP - SIP User Agent Library - -
    -@section Project Links - -- Website -- Downloads -- Documentation -- Issue Tracker -- Discussion Group -
    - -*/ diff --git a/libs/unimrcp/libs/Makefile.am b/libs/unimrcp/libs/Makefile.am deleted file mode 100644 index ce33be3016b..00000000000 --- a/libs/unimrcp/libs/Makefile.am +++ /dev/null @@ -1,3 +0,0 @@ -MAINTAINERCLEANFILES = Makefile.in - -SUBDIRS = apr-toolkit mpf mrcp mrcp-signaling mrcpv2-transport mrcp-engine mrcp-server mrcp-client uni-rtsp diff --git a/libs/unimrcp/libs/apr-toolkit/Makefile.am b/libs/unimrcp/libs/apr-toolkit/Makefile.am deleted file mode 100644 index aed07a7fb26..00000000000 --- a/libs/unimrcp/libs/apr-toolkit/Makefile.am +++ /dev/null @@ -1,50 +0,0 @@ -MAINTAINERCLEANFILES = Makefile.in - -AM_CPPFLAGS = -I$(top_srcdir)/libs/apr-toolkit/include \ - $(UNIMRCP_APR_INCLUDES) - -noinst_LTLIBRARIES = libaprtoolkit.la - -include_HEADERS = include/apt.h \ - include/apt_obj_list.h \ - include/apt_cyclic_queue.h \ - include/apt_dir_layout.h \ - include/apt_task.h \ - include/apt_task_msg.h \ - include/apt_consumer_task.h \ - include/apt_pollset.h \ - include/apt_poller_task.h \ - include/apt_pool.h \ - include/apt_log.h \ - include/apt_pair.h \ - include/apt_string.h \ - include/apt_string_table.h \ - include/apt_header_field.h \ - include/apt_text_stream.h \ - include/apt_text_message.h \ - include/apt_net.h \ - include/apt_nlsml_doc.h \ - include/apt_multipart_content.h \ - include/apt_timer_queue.h \ - include/apt_test_suite.h - -libaprtoolkit_la_SOURCES = src/apt_obj_list.c \ - src/apt_cyclic_queue.c \ - src/apt_dir_layout.c \ - src/apt_task.c \ - src/apt_task_msg.c \ - src/apt_consumer_task.c \ - src/apt_pollset.c \ - src/apt_poller_task.c \ - src/apt_pool.c \ - src/apt_log.c \ - src/apt_pair.c \ - src/apt_string_table.c \ - src/apt_header_field.c \ - src/apt_text_stream.c \ - src/apt_text_message.c \ - src/apt_net.c \ - src/apt_nlsml_doc.c \ - src/apt_multipart_content.c \ - src/apt_timer_queue.c \ - src/apt_test_suite.c diff --git a/libs/unimrcp/libs/apr-toolkit/aprtoolkit.2017.vcxproj b/libs/unimrcp/libs/apr-toolkit/aprtoolkit.2017.vcxproj deleted file mode 100644 index 804f4ee41ea..00000000000 --- a/libs/unimrcp/libs/apr-toolkit/aprtoolkit.2017.vcxproj +++ /dev/null @@ -1,167 +0,0 @@ - - - - - Debug - Win32 - - - Debug - x64 - - - Release - Win32 - - - Release - x64 - - - - aprtoolkit - {13DEECA0-BDD4-4744-A1A2-8EB0A44DF3D2} - aprtoolkit - Win32Proj - - - - StaticLibrary - Unicode - true - $(DefaultPlatformToolset) - - - StaticLibrary - Unicode - $(DefaultPlatformToolset) - - - StaticLibrary - Unicode - true - $(DefaultPlatformToolset) - - - StaticLibrary - Unicode - $(DefaultPlatformToolset) - - - - - - - - - - - - - - - - - - - - - - - - - - - <_ProjectFileVersion>10.0.30319.1 - $(PlatformName)\$(Configuration)\ - $(PlatformName)\$(Configuration)\ - $(SolutionDir)$(PlatformName)\$(Configuration)\ - $(PlatformName)\$(Configuration)\ - $(PlatformName)\$(Configuration)\ - $(PlatformName)\$(Configuration)\ - $(SolutionDir)$(PlatformName)\$(Configuration)\ - $(PlatformName)\$(Configuration)\ - - - - APT_STATIC_LIB;%(PreprocessorDefinitions) - - - - - X64 - - - APT_STATIC_LIB;%(PreprocessorDefinitions) - ProgramDatabase - - - - - APT_STATIC_LIB;%(PreprocessorDefinitions) - - - - - X64 - - - APT_STATIC_LIB;%(PreprocessorDefinitions) - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - {f057da7f-79e5-4b00-845c-ef446ef055e3} - false - - - - - - \ No newline at end of file diff --git a/libs/unimrcp/libs/apr-toolkit/aprtoolkit.vcproj b/libs/unimrcp/libs/apr-toolkit/aprtoolkit.vcproj deleted file mode 100644 index bb2746e8152..00000000000 --- a/libs/unimrcp/libs/apr-toolkit/aprtoolkit.vcproj +++ /dev/null @@ -1,417 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/libs/unimrcp/libs/apr-toolkit/aprtoolkit.vcxproj b/libs/unimrcp/libs/apr-toolkit/aprtoolkit.vcxproj deleted file mode 100644 index 29980e19413..00000000000 --- a/libs/unimrcp/libs/apr-toolkit/aprtoolkit.vcxproj +++ /dev/null @@ -1,139 +0,0 @@ - - - - - Debug - Win32 - - - Debug - x64 - - - Release - Win32 - - - Release - x64 - - - - {13DEECA0-BDD4-4744-A1A2-8EB0A44DF3D2} - aprtoolkit - Win32Proj - - - - StaticLibrary - Unicode - true - - - StaticLibrary - Unicode - - - StaticLibrary - Unicode - true - - - StaticLibrary - Unicode - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - <_ProjectFileVersion>10.0.30319.1 - AllRules.ruleset - - - AllRules.ruleset - - - AllRules.ruleset - - - AllRules.ruleset - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - \ No newline at end of file diff --git a/libs/unimrcp/libs/apr-toolkit/aprtoolkit.vcxproj.filters b/libs/unimrcp/libs/apr-toolkit/aprtoolkit.vcxproj.filters deleted file mode 100644 index 3a67d6084e5..00000000000 --- a/libs/unimrcp/libs/apr-toolkit/aprtoolkit.vcxproj.filters +++ /dev/null @@ -1,143 +0,0 @@ - - - - - {93995380-89BD-4b04-88EB-625FBE52EBFB} - h;hpp;hxx;hm;inl;inc;xsd - - - {4e9335ac-20e8-4284-ad77-20ad9190c94d} - cpp;c;cc;cxx;def;odl;idl;hpj;bat;asm;asmx - - - - - include - - - include - - - include - - - include - - - include - - - include - - - include - - - include - - - include - - - include - - - include - - - include - - - include - - - include - - - include - - - include - - - include - - - include - - - include - - - include - - - include - - - include - - - - - src - - - src - - - src - - - src - - - src - - - src - - - src - - - src - - - src - - - src - - - src - - - src - - - src - - - src - - - src - - - src - - - src - - - src - - - src - - - src - - - \ No newline at end of file diff --git a/libs/unimrcp/libs/apr-toolkit/include/apt.h b/libs/unimrcp/libs/apr-toolkit/include/apt.h deleted file mode 100644 index a25a6e28f1f..00000000000 --- a/libs/unimrcp/libs/apr-toolkit/include/apt.h +++ /dev/null @@ -1,61 +0,0 @@ -/* - * Copyright 2008-2014 Arsen Chaloyan - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - * - * $Id: apt.h 2136 2014-07-04 06:33:36Z achaloyan@gmail.com $ - */ - -#ifndef APT_H -#define APT_H - -/** - * @file apt.h - * @brief APR Toolkit Definitions - */ - -#include -#include -#include - -#ifdef __cplusplus -/** Begin of extern "C" block */ -#define APT_BEGIN_EXTERN_C extern "C" { -/** End of extern "C" block */ -#define APT_END_EXTERN_C } -#else -/** Begin of extern "C" block */ -#define APT_BEGIN_EXTERN_C -/** End of extern "C" block */ -#define APT_END_EXTERN_C -#endif - -/** Lib export/import defines (win32) */ -#ifdef WIN32 -#ifdef APT_STATIC_LIB -#define APT_DECLARE(type) type __stdcall -#else -#ifdef APT_LIB_EXPORT -#define APT_DECLARE(type) __declspec(dllexport) type __stdcall -#else -#define APT_DECLARE(type) __declspec(dllimport) type __stdcall -#endif -#endif -#else -#define APT_DECLARE(type) type -#endif - -/** Boolean value */ -typedef int apt_bool_t; - -#endif /* APT_H */ diff --git a/libs/unimrcp/libs/apr-toolkit/include/apt_consumer_task.h b/libs/unimrcp/libs/apr-toolkit/include/apt_consumer_task.h deleted file mode 100644 index 2f33426737a..00000000000 --- a/libs/unimrcp/libs/apr-toolkit/include/apt_consumer_task.h +++ /dev/null @@ -1,79 +0,0 @@ -/* - * Copyright 2008-2014 Arsen Chaloyan - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - * - * $Id: apt_consumer_task.h 2175 2014-09-12 04:56:09Z achaloyan@gmail.com $ - */ - -#ifndef APT_CONSUMER_TASK_H -#define APT_CONSUMER_TASK_H - -/** - * @file apt_consumer_task.h - * @brief Consumer Task Definition - */ - -#include "apt_task.h" -#include "apt_timer_queue.h" - -APT_BEGIN_EXTERN_C - -/** Opaque consumer task declaration */ -typedef struct apt_consumer_task_t apt_consumer_task_t; - -/** - * Create consumer task. - * @param obj the external object to associate with the task - * @param msg_pool the pool of task messages - * @param pool the pool to allocate memory from - */ -APT_DECLARE(apt_consumer_task_t*) apt_consumer_task_create( - void *obj, - apt_task_msg_pool_t *msg_pool, - apr_pool_t *pool); - -/** - * Get task base. - * @param task the consumer task to get base for - */ -APT_DECLARE(apt_task_t*) apt_consumer_task_base_get(const apt_consumer_task_t *task); - -/** - * Get task vtable. - * @param task the consumer task to get vtable for - */ -APT_DECLARE(apt_task_vtable_t*) apt_consumer_task_vtable_get(const apt_consumer_task_t *task); - -/** - * Get consumer task object. - * @param task the consumer task to get object from - */ -APT_DECLARE(void*) apt_consumer_task_object_get(const apt_consumer_task_t *task); - -/** - * Create timer. - * @param task the consumer task to create timer for - * @param proc the timer callback - * @param obj the object to pass to callback - * @param pool the pool to allocate memory from - */ -APT_DECLARE(apt_timer_t*) apt_consumer_task_timer_create( - apt_consumer_task_t *task, - apt_timer_proc_f proc, - void *obj, - apr_pool_t *pool); - -APT_END_EXTERN_C - -#endif /* APT_CONSUMER_TASK_H */ diff --git a/libs/unimrcp/libs/apr-toolkit/include/apt_cyclic_queue.h b/libs/unimrcp/libs/apr-toolkit/include/apt_cyclic_queue.h deleted file mode 100644 index bf803e2dde1..00000000000 --- a/libs/unimrcp/libs/apr-toolkit/include/apt_cyclic_queue.h +++ /dev/null @@ -1,79 +0,0 @@ -/* - * Copyright 2008-2014 Arsen Chaloyan - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - * - * $Id: apt_cyclic_queue.h 2136 2014-07-04 06:33:36Z achaloyan@gmail.com $ - */ - -#ifndef APT_CYCLIC_QUEUE_H -#define APT_CYCLIC_QUEUE_H - -/** - * @file apt_cyclic_queue.h - * @brief Cyclic FIFO Queue of Opaque void* Objects - */ - -#include "apt.h" - -APT_BEGIN_EXTERN_C - -/** Default size (number of elements) of cyclic queue */ -#define CYCLIC_QUEUE_DEFAULT_SIZE 100 - -/** Opaque cyclic queue declaration */ -typedef struct apt_cyclic_queue_t apt_cyclic_queue_t; - -/** - * Create cyclic queue. - * @param size the initial size of the queue - * @return the created queue - */ -APT_DECLARE(apt_cyclic_queue_t*) apt_cyclic_queue_create(apr_size_t size); - -/** - * Destroy cyclic queue. - * @param queue the queue to destroy - */ -APT_DECLARE(void) apt_cyclic_queue_destroy(apt_cyclic_queue_t *queue); - -/** - * Push object to the queue. - * @param queue the queue to push object to - * @param obj the object to push - */ -APT_DECLARE(apt_bool_t) apt_cyclic_queue_push(apt_cyclic_queue_t *queue, void *obj); - -/** - * Pop object from the queue. - * @param queue the queue to pop message from - */ -APT_DECLARE(void*) apt_cyclic_queue_pop(apt_cyclic_queue_t *queue); - -/** - * Clear the queue (remove all the elements from the queue). - * @param queue the queue to clear - */ -APT_DECLARE(void) apt_cyclic_queue_clear(apt_cyclic_queue_t *queue); - -/** - * Query whether the queue is empty. - * @param queue the queue to query - * @return TRUE if empty, otherwise FALSE - */ -APT_DECLARE(apt_bool_t) apt_cyclic_queue_is_empty(const apt_cyclic_queue_t *queue); - - -APT_END_EXTERN_C - -#endif /* APT_CYCLIC_QUEUE_H */ diff --git a/libs/unimrcp/libs/apr-toolkit/include/apt_dir_layout.h b/libs/unimrcp/libs/apr-toolkit/include/apt_dir_layout.h deleted file mode 100644 index ba2fa16421f..00000000000 --- a/libs/unimrcp/libs/apr-toolkit/include/apt_dir_layout.h +++ /dev/null @@ -1,162 +0,0 @@ -/* - * Copyright 2008-2014 Arsen Chaloyan - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - * - * $Id: apt_dir_layout.h 2204 2014-10-31 01:01:42Z achaloyan@gmail.com $ - */ - -#ifndef APT_DIR_LAYOUT_H -#define APT_DIR_LAYOUT_H - -/** - * @file apt_dir_layout.h - * @brief Directories Layout - */ - -#include "apt.h" - -APT_BEGIN_EXTERN_C - -/* - * This define allows user applications to support both the old interface, - * where members of apt_dir_layout_t structure were accessable to the - * application, and the new opaque interface, where OPAQUE_DIR_LAYOUT - * is defined. - */ -#define OPAQUE_DIR_LAYOUT - -/** Directories layout declaration */ -typedef struct apt_dir_layout_t apt_dir_layout_t; - -/** Enumeration of directories the layout is composed of */ -typedef enum { - APT_LAYOUT_CONF_DIR, /**< configuration directory */ - APT_LAYOUT_PLUGIN_DIR, /**< plugin directory */ - APT_LAYOUT_LOG_DIR, /**< log directory */ - APT_LAYOUT_DATA_DIR, /**< data directory */ - APT_LAYOUT_VAR_DIR, /**< var directory */ - - APT_LAYOUT_DIR_COUNT, /**< number of directories in the default layout */ - - APT_LAYOUT_EXT_DIR = APT_LAYOUT_DIR_COUNT -} apt_dir_entry_id; - -/** - * Create the default directories layout based on the specified root directory. - * @param root_dir_path the path to the root directory - * @param pool the memory pool to use - */ -APT_DECLARE(apt_dir_layout_t*) apt_default_dir_layout_create(const char *root_dir_path, apr_pool_t *pool); - -/** - * Create a custom directories layout based on the specified individual directories. - * @param conf_dir_path the path to the config dir - * @param plugin_dir_path the path to the plugin dir - * @param log_dir_path the path to the log dir - * @param var_dir_path the path to the var dir - * @param pool the memory pool to use - */ -APT_DECLARE(apt_dir_layout_t*) apt_custom_dir_layout_create( - const char *conf_dir_path, - const char *plugin_dir_path, - const char *log_dir_path, - const char *data_dir_path, - const char *var_dir_path, - apr_pool_t *pool); - -/** - * Create a bare directories layout. - * @param pool the memory pool to use - */ -APT_DECLARE(apt_dir_layout_t*) apt_dir_layout_create(apr_pool_t *pool); - -/** - * Create am extended bare directories layout. - * @param count the number of directories in the layout - * @param pool the memory pool to use - */ -APT_DECLARE(apt_dir_layout_t*) apt_dir_layout_create_ext(apr_size_t count, apr_pool_t *pool); - -/** - * Load directories layout from the specified configuration file. - * @param dir_layout the directory layout - * @param config_file the path to the configuration file - * @param pool the memory pool to use - */ -APT_DECLARE(apt_bool_t) apt_dir_layout_load(apt_dir_layout_t *dir_layout, const char *config_file, apr_pool_t *pool); - -/** - * Load directories layout from the specified configuration file using the provided labels. - * @param dir_layout the directory layout - * @param config_file the path to the configuration file - * @param labels the array of directory labels (configuration entries) - * @param count the number of labels (normally equals the number of directories in the layout) - * @param pool the memory pool to use - */ -APT_DECLARE(apt_bool_t) apt_dir_layout_load_ext(apt_dir_layout_t *dir_layout, const char *config_file, const char **labels, apr_size_t count, apr_pool_t *pool); - -/** - * Set the path to the individual directory in the layout. - * @param dir_layout the directory layout - * @param dir_entry_id the directory id (apt_dir_entry_id) - * @param path the directory path - * @param pool the memory pool to use - */ -APT_DECLARE(apt_bool_t) apt_dir_layout_path_set(apt_dir_layout_t *dir_layout, apr_size_t dir_entry_id, const char *path, apr_pool_t *pool); - -/** - * Get the path to the individual directory in the layout. - * @param dir_layout the directory layout - * @param dir_entry_id the directory id (apt_dir_entry_id) - */ -APT_DECLARE(const char*) apt_dir_layout_path_get(const apt_dir_layout_t *dir_layout, apr_size_t dir_entry_id); - -/** - * Compose a file path relative to the specified directory in the layout. - * @param dir_layout the directory layout - * @param dir_entry_id the directory id (apt_dir_entry_id) - * @param file_name the file name to append to the directory path - * @param pool the memory pool to use - */ -APT_DECLARE(char*) apt_dir_layout_path_compose(const apt_dir_layout_t *dir_layout, apr_size_t dir_entry_id, const char *file_name, apr_pool_t *pool); - - -/** - * Compose a file path relative to config dir. - * @param dir_layout the directory layout - * @param file_name the file name - * @param pool the memory pool to use - */ -APT_DECLARE(char*) apt_confdir_filepath_get(const apt_dir_layout_t *dir_layout, const char *file_name, apr_pool_t *pool); - -/** - * Compose a file path relative to data dir. - * @param dir_layout the directory layout - * @param file_name the file name - * @param pool the memory pool to use - */ -APT_DECLARE(char*) apt_datadir_filepath_get(const apt_dir_layout_t *dir_layout, const char *file_name, apr_pool_t *pool); - -/** - * Compose a file path relative to var dir. - * @param dir_layout the directory layout - * @param file_name the file name - * @param pool the memory pool to use - */ -APT_DECLARE(char*) apt_vardir_filepath_get(const apt_dir_layout_t *dir_layout, const char *file_name, apr_pool_t *pool); - - -APT_END_EXTERN_C - -#endif /* APT_DIR_LAYOUT_H */ diff --git a/libs/unimrcp/libs/apr-toolkit/include/apt_header_field.h b/libs/unimrcp/libs/apr-toolkit/include/apt_header_field.h deleted file mode 100644 index b2e70537482..00000000000 --- a/libs/unimrcp/libs/apr-toolkit/include/apt_header_field.h +++ /dev/null @@ -1,178 +0,0 @@ -/* - * Copyright 2008-2014 Arsen Chaloyan - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - * - * $Id: apt_header_field.h 2136 2014-07-04 06:33:36Z achaloyan@gmail.com $ - */ - -#ifndef APT_HEADER_FIELD_H -#define APT_HEADER_FIELD_H - -/** - * @file apt_header_field.h - * @brief Header Field Declaration (RFC5322) - */ - -#ifdef WIN32 -#pragma warning(disable: 4127) -#endif -#include -#include "apt_string.h" - -APT_BEGIN_EXTERN_C - -/** Header field declaration */ -typedef struct apt_header_field_t apt_header_field_t; -/** Header section declaration */ -typedef struct apt_header_section_t apt_header_section_t; - -/** Header field */ -struct apt_header_field_t { - /** Ring entry */ - APR_RING_ENTRY(apt_header_field_t) link; - - /** Name of the header field */ - apt_str_t name; - /** Value of the header field */ - apt_str_t value; - - /** Numeric identifier associated with name */ - apr_size_t id; -}; - -/** - * Header section - * @remark The header section is a collection of header fields. - * The header fields are stored in both a ring and an array. - * The goal is to ensure efficient access and manipulation on the header fields. - */ -struct apt_header_section_t { - /** List of header fields (name-value pairs) */ - APR_RING_HEAD(apt_head_t, apt_header_field_t) ring; - /** Array of pointers to header fields */ - apt_header_field_t **arr; - /** Max number of header fields */ - apr_size_t arr_size; -}; - - -/** - * Allocate an empty header field. - * @param pool the pool to allocate memory from - */ -APT_DECLARE(apt_header_field_t*) apt_header_field_alloc(apr_pool_t *pool); - -/** - * Create a header field using given name and value APT strings. - * @param name the name of the header field - * @param value the value of the header field - * @param pool the pool to allocate memory from - */ -APT_DECLARE(apt_header_field_t*) apt_header_field_create(const apt_str_t *name, const apt_str_t *value, apr_pool_t *pool); - -/** - * Create a header field using given name and value C strings. - * @param name the name of the header field - * @param value the value of the header field - * @param pool the pool to allocate memory from - */ -APT_DECLARE(apt_header_field_t*) apt_header_field_create_c(const char *name, const char *value, apr_pool_t *pool); - -/** - * Create a header field from entire text line consisting of a name and value pair. - * @param line the text line, which consists of a name and value pair - * @param separator the name and value separator - * @param pool the pool to allocate memory from - */ -APT_DECLARE(apt_header_field_t*) apt_header_field_create_from_line(const apt_str_t *line, char separator, apr_pool_t *pool); - -/** - * Copy specified header field. - * @param src_header_field the header field to copy - * @param pool the pool to allocate memory from - */ -APT_DECLARE(apt_header_field_t*) apt_header_field_copy(const apt_header_field_t *src_header_field, apr_pool_t *pool); - -/** - * Initialize header section (collection of header fields). - * @param header the header section to initialize - */ -APT_DECLARE(void) apt_header_section_init(apt_header_section_t *header); - -/** - * Allocate header section to set/get header fields by numeric identifiers. - * @param header the header section to allocate - * @param max_field_count the max number of header fields in the section (protocol dependent) - * @param pool the pool to allocate memory from - */ -APT_DECLARE(apt_bool_t) apt_header_section_array_alloc(apt_header_section_t *header, apr_size_t max_field_count, apr_pool_t *pool); - -/** - * Add (append) header field to header section. - * @param header the header section to add field to - * @param header_field the header field to add - */ -APT_DECLARE(apt_bool_t) apt_header_section_field_add(apt_header_section_t *header, apt_header_field_t *header_field); - -/** - * Insert header field to header section based on numreic identifier if specified. - * @param header the header section to insert field into - * @param header_field the header field to insert - */ -APT_DECLARE(apt_bool_t) apt_header_section_field_insert(apt_header_section_t *header, apt_header_field_t *header_field); - -/** - * Set header field in the array of header fields using associated numeric identifier. - * @param header the header section to set field for - * @param header_field the header field to set - * @remark Typically, the header field should be already added to the header section using apt_header_section_field_add() - */ -APT_DECLARE(apt_bool_t) apt_header_section_field_set(apt_header_section_t *header, apt_header_field_t *header_field); - -/** - * Remove header field from header section. - * @param header the header section to remove field from - * @param header_field the header field to remove - */ -APT_DECLARE(apt_bool_t) apt_header_section_field_remove(apt_header_section_t *header, apt_header_field_t *header_field); - -/** - * Check whether specified header field is set. - * @param header the header section to use - * @param id the identifier associated with the header_field to check - */ -static APR_INLINE apt_bool_t apt_header_section_field_check(const apt_header_section_t *header, apr_size_t id) -{ - if(id < header->arr_size) { - return header->arr[id] ? TRUE : FALSE; - } - return FALSE; -} - -/** - * Get header field by specified identifier. - * @param header the header section to use - * @param id the identifier associated with the header_field - */ -static APR_INLINE apt_header_field_t* apt_header_section_field_get(const apt_header_section_t *header, apr_size_t id) -{ - if(id < header->arr_size) { - return header->arr[id]; - } - return NULL; -} - -APT_END_EXTERN_C - -#endif /* APT_HEADER_FIELD_H */ diff --git a/libs/unimrcp/libs/apr-toolkit/include/apt_log.h b/libs/unimrcp/libs/apr-toolkit/include/apt_log.h deleted file mode 100644 index 9e022c31633..00000000000 --- a/libs/unimrcp/libs/apr-toolkit/include/apt_log.h +++ /dev/null @@ -1,274 +0,0 @@ -/* - * Copyright 2008-2014 Arsen Chaloyan - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - * - * $Id: apt_log.h 2136 2014-07-04 06:33:36Z achaloyan@gmail.com $ - */ - -#ifndef APT_LOG_H -#define APT_LOG_H - -/** - * @file apt_log.h - * @brief Basic Logger - */ - -#include -#include -#include "apt.h" - -APT_BEGIN_EXTERN_C - -/** Default max size of the log file (8Mb) */ -#define MAX_LOG_FILE_SIZE (8 * 1024 * 1024) -/** Default max number of log files used in rotation */ -#define MAX_LOG_FILE_COUNT 100 - -/** File:line mark */ -#define APT_LOG_MARK __FILE__,__LINE__ - -/* - * Definition of common formats used with apt_log(). - * - * Note that the generic %p format can not be used for pointers - * since apr_vformatter doesn't accept it. The format %pp introduced - * by apr_vformatter can not be used either since it breaks compatibility - * with generic printf style loggers. - */ -#if defined(WIN32) && APR_SIZEOF_VOIDP == 8 -/** Format to log pointer values on Win x64 */ -#define APT_PTR_FMT "0x%I64x" -#else -/** Format to log pointer values */ -#define APT_PTR_FMT "0x%lx" -#endif -/** Format to log string identifiers */ -#define APT_SID_FMT "<%s>" -/** Format to log string identifiers and resources */ -#define APT_SIDRES_FMT "<%s@%s>" -/** Format to log pointers and identifiers */ -#define APT_PTRSID_FMT APT_PTR_FMT" " APT_SID_FMT -/** Format to log pointers and identifiers */ -#define APT_NAMESID_FMT "%s " APT_SID_FMT -/** Format to log names, identifiers and resources */ -#define APT_NAMESIDRES_FMT "%s " APT_SIDRES_FMT - -/** Priority of log messages ordered from highest priority to lowest (rfc3164) */ -typedef enum { - APT_PRIO_EMERGENCY, /**< system is unusable */ - APT_PRIO_ALERT, /**< action must be taken immediately */ - APT_PRIO_CRITICAL, /**< critical condition */ - APT_PRIO_ERROR, /**< error condition */ - APT_PRIO_WARNING, /**< warning condition */ - APT_PRIO_NOTICE, /**< normal, but significant condition */ - APT_PRIO_INFO, /**< informational message */ - APT_PRIO_DEBUG, /**< debug-level message */ - - APT_PRIO_COUNT /**< number of priorities */ -} apt_log_priority_e; - -/** Header (format) of log messages */ -typedef enum { - APT_LOG_HEADER_NONE = 0x00, /**< disable optional headers output */ - APT_LOG_HEADER_DATE = 0x01, /**< enable date output */ - APT_LOG_HEADER_TIME = 0x02, /**< enable time output */ - APT_LOG_HEADER_PRIORITY = 0x04, /**< enable priority name output */ - APT_LOG_HEADER_MARK = 0x08, /**< enable file:line mark output */ - APT_LOG_HEADER_THREAD = 0x10, /**< enable thread identifier output */ - - APT_LOG_HEADER_DEFAULT = APT_LOG_HEADER_DATE | APT_LOG_HEADER_TIME | APT_LOG_HEADER_PRIORITY -} apt_log_header_e; - -/** Mode of log output */ -typedef enum { - APT_LOG_OUTPUT_NONE = 0x00, /**< disable logging */ - APT_LOG_OUTPUT_CONSOLE = 0x01, /**< enable console output */ - APT_LOG_OUTPUT_FILE = 0x02 /**< enable log file output */ -} apt_log_output_e; - -/** Masking mode of private data */ -typedef enum { - APT_LOG_MASKING_NONE, /**< log everything as is */ - APT_LOG_MASKING_COMPLETE, /**< mask private data completely */ - APT_LOG_MASKING_ENCRYPTED /**< encrypt private data */ -} apt_log_masking_e; - -/** Opaque logger declaration */ -typedef struct apt_logger_t apt_logger_t; - -/** Prototype of extended log handler function */ -typedef apt_bool_t (*apt_log_ext_handler_f)(const char *file, int line, - const char *obj, apt_log_priority_e priority, - const char *format, va_list arg_ptr); - -/** - * Create the singleton instance of the logger. - * @param mode the log output mode - * @param priority the log priority level - * @param pool the memory pool to use - */ -APT_DECLARE(apt_bool_t) apt_log_instance_create(apt_log_output_e mode, apt_log_priority_e priority, apr_pool_t *pool); - -/** - * Create and load the singleton instance of the logger. - * @param config_file the path to configuration file to load settings from - * @param pool the memory pool to use - */ -APT_DECLARE(apt_bool_t) apt_log_instance_load(const char *config_file, apr_pool_t *pool); - -/** - * Destroy the singleton instance of the logger. - */ -APT_DECLARE(apt_bool_t) apt_log_instance_destroy(void); - -/** - * Get the singleton instance of the logger. - */ -APT_DECLARE(apt_logger_t*) apt_log_instance_get(void); - -/** - * Set the singleton instance of the logger. - */ -APT_DECLARE(apt_bool_t) apt_log_instance_set(apt_logger_t *logger); - -/** - * Open the log file. - * @param dir_path the path to the log directory - * @param file_name the name of the log file - * @param max_file_size the max size of the log file - * @param max_file_count the max number of files used in log rotation - * @param append whether to append or to truncate (start over) the log file - * @param pool the memory pool to use - */ -APT_DECLARE(apt_bool_t) apt_log_file_open( - const char *dir_path, - const char *file_name, - apr_size_t max_file_size, - apr_size_t max_file_count, - apt_bool_t append, - apr_pool_t *pool); - -/** - * Close the log file. - */ -APT_DECLARE(apt_bool_t) apt_log_file_close(void); - -/** - * Set the logging output mode. - * @param mode the mode to set - */ -APT_DECLARE(apt_bool_t) apt_log_output_mode_set(apt_log_output_e mode); - -/** - * Check the logging output mode to be enabled (set) or not. - * @param mode the mode to check - */ -APT_DECLARE(apt_bool_t) apt_log_output_mode_check(apt_log_output_e mode); - -/** - * Translate the output mode string to bitmask of apt_log_output_e values. - * @param str the string to translate - */ -APT_DECLARE(int) apt_log_output_mode_translate(char *str); - -/** - * Set the logging priority (log level). - * @param priority the priority to set - */ -APT_DECLARE(apt_bool_t) apt_log_priority_set(apt_log_priority_e priority); - -/** - * Translate the priority (log level) string to enum. - * @param str the string to translate - */ -APT_DECLARE(apt_log_priority_e) apt_log_priority_translate(const char *str); - -/** - * Set the header (format) for log messages. - * @param header the header to set (used as bitmask) - */ -APT_DECLARE(apt_bool_t) apt_log_header_set(int header); - -/** - * Translate the header string to bitmask of apt_log_header_e values. - * @param str the string to translate - */ -APT_DECLARE(int) apt_log_header_translate(char *str); - -/** - * Set the masking mode of private data. - * @param masking the masking mode to set - */ -APT_DECLARE(apt_bool_t) apt_log_masking_set(apt_log_masking_e masking); - -/** - * Get the current masking mode of private data. - */ -APT_DECLARE(apt_log_masking_e) apt_log_masking_get(void); - -/** - * Translate the masking mode string to enum. - * @param str the string to translate - */ -APT_DECLARE(apt_log_masking_e) apt_log_masking_translate(const char *str); - -/** - * Mask private data based on the masking mode - * @param data_in the data to mask - * @param length the length of the data to mask on input, the length of the masked data on output - * @param pool the memory pool to use if needed - * @return The masked data. - */ -APT_DECLARE(const char*) apt_log_data_mask(const char *data_in, apr_size_t *length, apr_pool_t *pool); - -/** - * Set the extended external log handler. - * @param handler the handler to pass log events to - * @remark default logger is used to output the logs to stdout and/or log file, - * if external log handler isn't set - */ -APT_DECLARE(apt_bool_t) apt_log_ext_handler_set(apt_log_ext_handler_f handler); - -/** - * Do logging. - * @param file the file name log entry is generated from - * @param line the line number log entry is generated from - * @param priority the priority of the entire log entry - * @param format the format of the entire log entry - */ -APT_DECLARE(apt_bool_t) apt_log(const char *file, int line, apt_log_priority_e priority, const char *format, ...); - -/** - * Do logging (this version uses an object externally associated with the logger). - * @param file the file name log entry is generated from - * @param line the line number log entry is generated from - * @param priority the priority of the entire log entry - * @param obj the associated object - * @param format the format of the entire log entry - */ -APT_DECLARE(apt_bool_t) apt_obj_log(const char *file, int line, apt_log_priority_e priority, void *obj, const char *format, ...); - -/** - * Do logging (this version accepts va_list argument). - * @param file the file name log entry is generated from - * @param line the line number log entry is generated from - * @param priority the priority of the entire log entry - * @param format the format of the entire log entry - * @param arg_ptr the arguments - */ -APT_DECLARE(apt_bool_t) apt_va_log(const char *file, int line, apt_log_priority_e priority, const char *format, va_list arg_ptr); - -APT_END_EXTERN_C - -#endif /* APT_LOG_H */ diff --git a/libs/unimrcp/libs/apr-toolkit/include/apt_multipart_content.h b/libs/unimrcp/libs/apr-toolkit/include/apt_multipart_content.h deleted file mode 100644 index dd4c646d838..00000000000 --- a/libs/unimrcp/libs/apr-toolkit/include/apt_multipart_content.h +++ /dev/null @@ -1,108 +0,0 @@ -/* - * Copyright 2008-2014 Arsen Chaloyan - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - * - * $Id: apt_multipart_content.h 2136 2014-07-04 06:33:36Z achaloyan@gmail.com $ - */ - -#ifndef APT_MULTIPART_CONTENT_H -#define APT_MULTIPART_CONTENT_H - -/** - * @file apt_multipart_content.h - * @brief Multipart Content Routine - */ - -#include "apt_header_field.h" - -APT_BEGIN_EXTERN_C - -/** Opaque multipart content declaration */ -typedef struct apt_multipart_content_t apt_multipart_content_t; - -/** Content part declaration */ -typedef struct apt_content_part_t apt_content_part_t; - -/** Content part */ -struct apt_content_part_t { - /** Header section */ - apt_header_section_t header; - /** Body */ - apt_str_t body; - - /** Pointer to parsed content-type header field */ - apt_str_t *type; - /** Pointer to parsed content-id header field */ - apt_str_t *id; - /** Pointer to parsed content-length header field */ - apt_str_t *length; -}; - -/** - * Create an empty multipart content - * @param max_content_size the max size of the content (body) - * @param boundary the boundary to separate content parts - * @param pool the pool to allocate memory from - * @return an empty multipart content - */ -APT_DECLARE(apt_multipart_content_t*) apt_multipart_content_create(apr_size_t max_content_size, const apt_str_t *boundary, apr_pool_t *pool); - -/** - * Add content part to multipart content - * @param multipart_content the multipart content to add content part to - * @param content_part the content part to add - * @return TRUE on success - */ -APT_DECLARE(apt_bool_t) apt_multipart_content_add(apt_multipart_content_t *multipart_content, const apt_content_part_t *content_part); - -/** - * Add content part to multipart content by specified header fields and body - * @param multipart_content the multipart content to add content part to - * @param content_type the type of content part - * @param content_id the identifier of content part - * @param body the body of content part - * @return TRUE on success - */ -APT_DECLARE(apt_bool_t) apt_multipart_content_add2(apt_multipart_content_t *multipart_content, const apt_str_t *content_type, const apt_str_t *content_id, const apt_str_t *body); - -/** - * Finalize multipart content generation - * @param multipart_content the multipart content to finalize - * @return generated multipart content - */ -APT_DECLARE(apt_str_t*) apt_multipart_content_finalize(apt_multipart_content_t *multipart_content); - - -/** - * Assign body to multipart content to get (parse) each content part from - * @param body the body of multipart content to parse - * @param boundary the boundary to separate content parts - * @param pool the pool to allocate memory from - * @return multipart content with assigned body - */ -APT_DECLARE(apt_multipart_content_t*) apt_multipart_content_assign(const apt_str_t *body, const apt_str_t *boundary, apr_pool_t *pool); - -/** - * Get the next content part - * @param multipart_content the multipart content to get the next content part from - * @param content_part the parsed content part - * @param is_final indicates the final boundary is reached - * @return TRUE on success - */ -APT_DECLARE(apt_bool_t) apt_multipart_content_get(apt_multipart_content_t *multipart_content, apt_content_part_t *content_part, apt_bool_t *is_final); - - -APT_END_EXTERN_C - -#endif /* APT_MULTIPART_CONTENT_H */ diff --git a/libs/unimrcp/libs/apr-toolkit/include/apt_net.h b/libs/unimrcp/libs/apr-toolkit/include/apt_net.h deleted file mode 100644 index 6527c8fc7df..00000000000 --- a/libs/unimrcp/libs/apr-toolkit/include/apt_net.h +++ /dev/null @@ -1,55 +0,0 @@ -/* - * Copyright 2008-2014 Arsen Chaloyan - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - * - * $Id: apt_net.h 2136 2014-07-04 06:33:36Z achaloyan@gmail.com $ - */ - -#ifndef APT_NET_H -#define APT_NET_H - -/** - * @file apt_net.h - * @brief Network Utilities - */ - -#include "apt.h" - -APT_BEGIN_EXTERN_C - -/** - * Get the IP address (in numeric address string format) by hostname. - * @param addr the IP address to return - * @param pool the pool to allocate memory from - */ -apt_bool_t apt_ip_get(char **addr, apr_pool_t *pool); - -/** - * Get the IP address (in numeric address string format) by network interface name. - * @param iface_name the network interface name (eth0, Local Area Connection, etc) - * @param addr the IP address to return - * @param pool the pool to allocate memory from - */ -apt_bool_t apt_ip_get_by_iface(const char *iface_name, char **addr, apr_pool_t *pool); - -/** - * Get current NTP time - * @param sec the seconds of the NTP time to return - * @param frac the fractions of the NTP time to return - */ -void apt_ntp_time_get(apr_uint32_t *sec, apr_uint32_t *frac); - -APT_END_EXTERN_C - -#endif /* APT_NET_H */ diff --git a/libs/unimrcp/libs/apr-toolkit/include/apt_nlsml_doc.h b/libs/unimrcp/libs/apr-toolkit/include/apt_nlsml_doc.h deleted file mode 100644 index d6b87c87d9f..00000000000 --- a/libs/unimrcp/libs/apr-toolkit/include/apt_nlsml_doc.h +++ /dev/null @@ -1,210 +0,0 @@ -/* - * Copyright 2008-2014 Arsen Chaloyan - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - * - * $Id: apt_nlsml_doc.h 2136 2014-07-04 06:33:36Z achaloyan@gmail.com $ - */ - -#ifndef APT_NLSML_DOC_H -#define APT_NLSML_DOC_H - -/** - * @file apt_nlsml_doc.h - * @brief NLSML Result Handling - * @remark This is an MRCP version independent and vendor consistent implementation - * of the NSLML parser. The interface reflects the NLSML schema defined in - * http://tools.ietf.org/html/rfc6787#section-16.1. - */ - -#include -#include "apt.h" - -APT_BEGIN_EXTERN_C - -/* Forward declarations */ -typedef struct nlsml_result_t nlsml_result_t; -typedef struct nlsml_interpretation_t nlsml_interpretation_t; -typedef struct nlsml_enrollment_result_t nlsml_enrollment_result_t; -typedef struct nlsml_verification_result_t nlsml_verification_result_t; -typedef struct nlsml_instance_t nlsml_instance_t; -typedef struct nlsml_input_t nlsml_input_t; - -/** - * Parse NLSML result - * @param data the data to parse - * @param length the length of the data - * @param pool the memory pool to use - * @return the parsed NLSML result. - */ -APT_DECLARE(nlsml_result_t*) nlsml_result_parse(const char *data, apr_size_t length, apr_pool_t *pool); - -/** - * Trace parsed NLSML result (for debug purposes only) - * @param result the parsed result to output - * @param pool the memory pool to use - */ -APT_DECLARE(void) nlsml_result_trace(const nlsml_result_t *result, apr_pool_t *pool); - -/* - * Accessors of the NLSML element. - * Each element may contain one or more , , - * elements, and an optional attribute. - */ - -/** - * Get first interpretation - * @param result the parsed NLSML result which holds the list of interpretation elements - */ -APT_DECLARE(nlsml_interpretation_t*) nlsml_first_interpretation_get(const nlsml_result_t *result); - -/** - * Get next interpretation - * @param result the parsed NLSML result which holds the list of interpretation elements - * @param interpretation the current interpretation element - */ -APT_DECLARE(nlsml_interpretation_t*) nlsml_next_interpretation_get(const nlsml_result_t *result, const nlsml_interpretation_t *interpretation); - -/** - * Get first enrollment result - * @param result the parsed NLSML result which holds the list of enrollment-result elements - */ -APT_DECLARE(nlsml_enrollment_result_t*) nlsml_first_enrollment_result_get(const nlsml_result_t *result); - -/** - * Get next enrollment result - * @param result the parsed NLSML result which holds the list of enrollment-result elements - * @param enrollment_result the current enrollment-result element - */ -APT_DECLARE(nlsml_enrollment_result_t*) nlsml_next_enrollment_result_get(const nlsml_result_t *result, const nlsml_enrollment_result_t *enrollment_result); - -/** - * Get first verification result - * @param result the parsed NLSML result which holds the list of verification-result elements - */ -APT_DECLARE(nlsml_verification_result_t*) nlsml_first_verification_result_get(const nlsml_result_t *result); - -/** - * Get next verification result - * @param result the parsed NLSML result which holds the list of verification-result elements - * @param verification_result the current verification-result element - */ -APT_DECLARE(nlsml_verification_result_t*) nlsml_next_verification_result_get(const nlsml_result_t *result, const nlsml_verification_result_t *verification_result); - -/** - * Get the grammar attribute of the NLSML result - * @param result the parsed result - */ -APT_DECLARE(const char*) nlsml_result_grammar_get(const nlsml_result_t *result); - -/* - * Accessors of the element. - */ - -/** - * Get first instance - * @param interpretation the parsed interpretation element which holds the list of instance elements - */ -APT_DECLARE(nlsml_instance_t*) nlsml_interpretation_first_instance_get(const nlsml_interpretation_t *interpretation); - -/** - * Get next instance - * @param interpretation the parsed interpretation element which holds the list of instance elements - * @param instance the current instance element - */ -APT_DECLARE(nlsml_instance_t*) nlsml_interpretation_next_instance_get(const nlsml_interpretation_t *interpretation, const nlsml_instance_t *instance); - -/** - * Get input - * @param interpretation the parsed interpretation element which may have 0 or 1 input elements - */ -APT_DECLARE(nlsml_input_t*) nlsml_interpretation_input_get(const nlsml_interpretation_t *interpretation); - -/** - * Get interpretation confidence - * @param interpretation the parsed interpretation element - * @remark the confidence is stored and returned as a float value for both MRCPv2 and MRCPv1 - */ -APT_DECLARE(float) nlsml_interpretation_confidence_get(const nlsml_interpretation_t *interpretation); - -/** - * Get interpretation grammar - * @param interpretation the parsed interpretation element - */ -APT_DECLARE(const char*) nlsml_interpretation_grammar_get(const nlsml_interpretation_t *interpretation); - -/* - * Accessors of the and elements. - */ - -/** - * Get an XML representation of the instance element - * @param instance the parsed instance element - */ -APT_DECLARE(const apr_xml_elem*) nlsml_instance_elem_get(const nlsml_instance_t *instance); - -/** - * Suppress SWI elements (normalize instance) - * @param instance the parsed instance to suppress SWI sub-elements from - */ -APT_DECLARE(apt_bool_t) nlsml_instance_swi_suppress(nlsml_instance_t *instance); - -/** - * Generate a plain text content of the instance element - * @param instance the parsed instance to generate content of - * @param pool the memory pool to use - */ -APT_DECLARE(const char*) nlsml_instance_content_generate(const nlsml_instance_t *instance, apr_pool_t *pool); - -/** - * Get an XML representation of the input element - * @param input the parsed input element - */ -APT_DECLARE(const apr_xml_elem*) nlsml_input_elem_get(const nlsml_input_t *input); - -/** - * Generate a plain text content of the input element - * @param input the parsed input to generate content of - * @param pool the memory pool to use - */ -APT_DECLARE(const char*) nlsml_input_content_generate(const nlsml_input_t *input, apr_pool_t *pool); - -/** - * Get input mode - * @param input the parsed input element - * @remark the input mode is either "speech" or "dtmf" - */ -APT_DECLARE(const char*) nlsml_input_mode_get(const nlsml_input_t *input); - -/** - * Get input confidence - * @param input the parsed input element - * @remark the confidence is stored and returned as a float value for both MRCPv2 and MRCPv1 - */ -APT_DECLARE(float) nlsml_input_confidence_get(const nlsml_input_t *input); - -/** - * Get start of input timestamp - * @param input the parsed input element - */ -APT_DECLARE(const char*) nlsml_input_timestamp_start_get(const nlsml_input_t *input); - -/** - * Get end of input timestamp - * @param input the parsed input element - */ -APT_DECLARE(const char*) nlsml_input_timestamp_end_get(const nlsml_input_t *input); - -APT_END_EXTERN_C - -#endif /* APT_NLSML_DOC_H */ diff --git a/libs/unimrcp/libs/apr-toolkit/include/apt_obj_list.h b/libs/unimrcp/libs/apr-toolkit/include/apt_obj_list.h deleted file mode 100644 index 56a88d0d4b7..00000000000 --- a/libs/unimrcp/libs/apr-toolkit/include/apt_obj_list.h +++ /dev/null @@ -1,139 +0,0 @@ -/* - * Copyright 2008-2014 Arsen Chaloyan - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - * - * $Id: apt_obj_list.h 2136 2014-07-04 06:33:36Z achaloyan@gmail.com $ - */ - -#ifndef APT_OBJ_LIST_H -#define APT_OBJ_LIST_H - -/** - * @file apt_obj_list.h - * @brief List of Opaque void* Objects - */ - -#include "apt.h" - -APT_BEGIN_EXTERN_C - - -/** Opaque list declaration */ -typedef struct apt_obj_list_t apt_obj_list_t; -/** Opaque list element declaration */ -typedef struct apt_list_elem_t apt_list_elem_t; - -/** - * Create list. - * @param pool the pool to allocate list from - * @return the created list - */ -APT_DECLARE(apt_obj_list_t*) apt_list_create(apr_pool_t *pool); - -/** - * Destroy list. - * @param list the list to destroy - */ -APT_DECLARE(void) apt_list_destroy(apt_obj_list_t *list); - -/** - * Push object to the list as first in, first out. - * @param list the list to push object to - * @param obj the object to push - * @param pool the pool to allocate list element from - * @return the inserted element - */ -APT_DECLARE(apt_list_elem_t*) apt_list_push_back(apt_obj_list_t *list, void *obj, apr_pool_t *pool); - -/** - * Pop object from the list as first in, first out. - * @param list the list to pop message from - * @return the popped object (if any) - */ -APT_DECLARE(void*) apt_list_pop_front(apt_obj_list_t *list); - -/** - * Retrieve object of the first element in the list. - * @param list the list to retrieve from - */ -APT_DECLARE(void*) apt_list_head(const apt_obj_list_t *list); - -/** - * Retrieve object of the last element in the list. - * @param list the list to retrieve from - */ -APT_DECLARE(void*) apt_obj_list_tail(const apt_obj_list_t *list); - - -/** - * Retrieve the first element of the list. - * @param list the list to retrieve from - */ -APT_DECLARE(apt_list_elem_t*) apt_list_first_elem_get(const apt_obj_list_t *list); - -/** - * Retrieve the last element of the list. - * @param list the list to retrieve from - */ -APT_DECLARE(apt_list_elem_t*) apt_list_last_elem_get(const apt_obj_list_t *list); - -/** - * Retrieve the next element of the list. - * @param list the list to retrieve from - * @param elem the element to retrieve next element from - */ -APT_DECLARE(apt_list_elem_t*) apt_list_next_elem_get(const apt_obj_list_t *list, apt_list_elem_t *elem); - -/** - * Retrieve the prev element of the list. - * @param list the list to retrieve from - * @param elem the element to retrieve prev element from - */ -APT_DECLARE(apt_list_elem_t*) apt_list_prev_elem_get(const apt_obj_list_t *list, apt_list_elem_t *elem); - -/** - * Insert element to the list. - * @param list the list to insert element to - * @param elem the element to insert before - * @param obj the object to insert - * @param pool the pool to allocate list element from - * @return the inserted element - */ -APT_DECLARE(apt_list_elem_t*) apt_list_elem_insert(apt_obj_list_t *list, apt_list_elem_t *elem, void *obj, apr_pool_t *pool); - -/** - * Remove element from the list. - * @param list the list to remove element from - * @param elem the element to remove - * @return the next element (if any) - */ -APT_DECLARE(apt_list_elem_t*) apt_list_elem_remove(apt_obj_list_t *list, apt_list_elem_t *elem); - -/** - * Query whether the list is empty. - * @param list the list to query - * @return TRUE if empty, otherwise FALSE - */ -APT_DECLARE(apt_bool_t) apt_list_is_empty(const apt_obj_list_t *list); - -/** - * Retrieve the object associated with element. - * @param elem the element to retrieve object from - */ -APT_DECLARE(void*) apt_list_elem_object_get(const apt_list_elem_t *elem); - - -APT_END_EXTERN_C - -#endif /* APT_OBJ_LIST_H */ diff --git a/libs/unimrcp/libs/apr-toolkit/include/apt_pair.h b/libs/unimrcp/libs/apr-toolkit/include/apt_pair.h deleted file mode 100644 index 737cff21577..00000000000 --- a/libs/unimrcp/libs/apr-toolkit/include/apt_pair.h +++ /dev/null @@ -1,75 +0,0 @@ -/* - * Copyright 2008-2014 Arsen Chaloyan - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - * - * $Id: apt_pair.h 2136 2014-07-04 06:33:36Z achaloyan@gmail.com $ - */ - -#ifndef APT_PAIR_H -#define APT_PAIR_H - -/** - * @file apt_pair.h - * @brief Generic Name-Value Pair - */ - -#include -#include "apt_string.h" - -APT_BEGIN_EXTERN_C - -/** Name-value declaration */ -typedef struct apt_pair_t apt_pair_t; - -/** Generic name-value pair definition ("name:value") */ -struct apt_pair_t { - /** The name */ - apt_str_t name; - /** The value */ - apt_str_t value; -}; - -/** Dynamic array of name-value pairs */ -typedef apr_array_header_t apt_pair_arr_t; - -/** Initialize name-value pair */ -static APR_INLINE void apt_pair_init(apt_pair_t *pair) -{ - apt_string_reset(&pair->name); - apt_string_reset(&pair->value); -} - -/** Copy name-value pair */ -static APR_INLINE void apt_pair_copy(apt_pair_t *pair, const apt_pair_t *src_pair, apr_pool_t *pool) -{ - apt_string_copy(&pair->name,&src_pair->name,pool); - apt_string_copy(&pair->value,&src_pair->value,pool); -} - -/** Create array of name-value pairs */ -APT_DECLARE(apt_pair_arr_t*) apt_pair_array_create(apr_size_t initial_size, apr_pool_t *pool); -/** Copy array of name-value pairs */ -APT_DECLARE(apt_pair_arr_t*) apt_pair_array_copy(const apt_pair_arr_t *src, apr_pool_t *pool); -/** Append name-value pair */ -APT_DECLARE(apt_bool_t) apt_pair_array_append(apt_pair_arr_t *arr, const apt_str_t *name, const apt_str_t *value, apr_pool_t *pool); -/** Find name-value pair by name */ -APT_DECLARE(const apt_pair_t*) apt_pair_array_find(const apt_pair_arr_t *arr, const apt_str_t *name); -/** Get size of pair array */ -APT_DECLARE(int) apt_pair_array_size_get(const apt_pair_arr_t *arr); -/** Get name-value pair by id */ -APT_DECLARE(const apt_pair_t*) apt_pair_array_get(const apt_pair_arr_t *arr, int id); - -APT_END_EXTERN_C - -#endif /* APT_PAIR_H */ diff --git a/libs/unimrcp/libs/apr-toolkit/include/apt_poller_task.h b/libs/unimrcp/libs/apr-toolkit/include/apt_poller_task.h deleted file mode 100644 index 3bb60527445..00000000000 --- a/libs/unimrcp/libs/apr-toolkit/include/apt_poller_task.h +++ /dev/null @@ -1,130 +0,0 @@ -/* - * Copyright 2008-2014 Arsen Chaloyan - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - * - * $Id: apt_poller_task.h 2176 2014-09-12 05:00:23Z achaloyan@gmail.com $ - */ - -#ifndef APT_POLLER_TASK_H -#define APT_POLLER_TASK_H - -/** - * @file apt_poller_task.h - * @brief Poller Task - */ - -#include "apt_pollset.h" -#include "apt_task.h" -#include "apt_timer_queue.h" - -APT_BEGIN_EXTERN_C - -/** Opaque poller task declaration */ -typedef struct apt_poller_task_t apt_poller_task_t; - -/** Function prototype to handle signalled descripors */ -typedef apt_bool_t (*apt_poll_signal_f)(void *obj, const apr_pollfd_t *descriptor); - - -/** - * Create poller task. - * @param max_pollset_size the maximum number of descriptors pollset can hold - * @param signal_handler the handler of signalled descriptors - * @param obj the external object to pass to callback - * @param msg_pool the pool of task messages - * @param pool the pool to allocate memory from - */ -APT_DECLARE(apt_poller_task_t*) apt_poller_task_create( - apr_size_t max_pollset_size, - apt_poll_signal_f signal_handler, - void *obj, - apt_task_msg_pool_t *msg_pool, - apr_pool_t *pool); - -/** - * Destroy poller task. - * @param task the task to destroy - */ -APT_DECLARE(apt_bool_t) apt_poller_task_destroy(apt_poller_task_t *task); - -/** - * Cleanup poller task. - * @param task the task to cleanup - * - * @remark This function should be considered in protected scope. - * It will be called on task destroy unless you override the behavior. - */ -APT_DECLARE(void) apt_poller_task_cleanup(apt_poller_task_t *task); - -/** - * Start poller task and wait for incoming messages. - * @param task the task to start - */ -APT_DECLARE(apt_bool_t) apt_poller_task_start(apt_poller_task_t *task); - -/** - * Terminate poller task. - * @param task the task to terminate - */ -APT_DECLARE(apt_bool_t) apt_poller_task_terminate(apt_poller_task_t *task); - -/** - * Get task base. - * @param task the poller task to get task base from - */ -APT_DECLARE(apt_task_t*) apt_poller_task_base_get(const apt_poller_task_t *task); - -/** - * Get task vtable. - * @param task the poller task to get vtable from - */ -APT_DECLARE(apt_task_vtable_t*) apt_poller_task_vtable_get(const apt_poller_task_t *task); - -/** - * Get external object. - * @param task the poller task to get object from - */ -APT_DECLARE(void*) apt_poller_task_object_get(const apt_poller_task_t *task); - -/** - * Add descriptor to pollset. - * @param task the task which holds the pollset - * @param descriptor the descriptor to add - */ -APT_DECLARE(apt_bool_t) apt_poller_task_descriptor_add(const apt_poller_task_t *task, const apr_pollfd_t *descriptor); - -/** - * Remove descriptor from pollset. - * @param task the task which holds the pollset - * @param descriptor the descriptor to remove - */ -APT_DECLARE(apt_bool_t) apt_poller_task_descriptor_remove(const apt_poller_task_t *task, const apr_pollfd_t *descriptor); - -/** - * Create timer. - * @param task the poller task to create timer in the scope of - * @param proc the timer callback - * @param obj the object to pass to callback - * @param pool the pool to allocate memory from - */ -APT_DECLARE(apt_timer_t*) apt_poller_task_timer_create( - apt_poller_task_t *task, - apt_timer_proc_f proc, - void *obj, - apr_pool_t *pool); - - -APT_END_EXTERN_C - -#endif /* APT_POLLER_TASK_H */ diff --git a/libs/unimrcp/libs/apr-toolkit/include/apt_pollset.h b/libs/unimrcp/libs/apr-toolkit/include/apt_pollset.h deleted file mode 100644 index 0d6a0ab356d..00000000000 --- a/libs/unimrcp/libs/apr-toolkit/include/apt_pollset.h +++ /dev/null @@ -1,98 +0,0 @@ -/* - * Copyright 2008-2014 Arsen Chaloyan - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - * - * $Id: apt_pollset.h 2136 2014-07-04 06:33:36Z achaloyan@gmail.com $ - */ - -#ifndef APT_POLLSET_H -#define APT_POLLSET_H - -/** - * @file apt_pollset.h - * @brief Interruptable APR-Pollset - */ - -/** - * Wakeup builtin API of the pollset is introduced only in APR-1.4 - * and it is not available for APR-1.2 and APR-1.3 versions. Thus - * apt_pollset_t is an extension of apr_pollset_t and provides - * pollset wakeup capabilities the similar way as it's implemented - * in APR-1.4 trunk - */ - -#include -#include "apt.h" - -APT_BEGIN_EXTERN_C - -/** Opaque pollset declaration */ -typedef struct apt_pollset_t apt_pollset_t; - -/** - * Create interruptable pollset on top of APR pollset. - * @param size the maximum number of descriptors pollset can hold - * @param pool the pool to allocate memory from - */ -APT_DECLARE(apt_pollset_t*) apt_pollset_create(apr_uint32_t size, apr_pool_t *pool); - -/** - * Destroy pollset. - * @param pollset the pollset to destroy - */ -APT_DECLARE(apt_bool_t) apt_pollset_destroy(apt_pollset_t *pollset); - -/** - * Add pollset descriptor to a pollset. - * @param pollset the pollset to add the descriptor to - * @param descriptor the descriptor to add - */ -APT_DECLARE(apt_bool_t) apt_pollset_add(apt_pollset_t *pollset, const apr_pollfd_t *descriptor); - -/** - * Remove pollset descriptor from a pollset. - * @param pollset the pollset to remove the descriptor from - * @param descriptor the descriptor to remove - */ -APT_DECLARE(apt_bool_t) apt_pollset_remove(apt_pollset_t *pollset, const apr_pollfd_t *descriptor); - -/** - * Block for activity on the descriptor(s) in a pollset. - * @param pollset the pollset to use - * @param timeout the timeout in microseconds - * @param num the number of signalled descriptors (output parameter) - * @param descriptors the array of signalled descriptors (output parameter) - */ -APT_DECLARE(apr_status_t) apt_pollset_poll( - apt_pollset_t *pollset, - apr_interval_time_t timeout, - apr_int32_t *num, - const apr_pollfd_t **descriptors); - -/** - * Interrupt the blocked poll call. - * @param pollset the pollset to use - */ -APT_DECLARE(apt_bool_t) apt_pollset_wakeup(apt_pollset_t *pollset); - -/** - * Match against builtin wake up descriptor in a pollset. - * @param pollset the pollset to use - * @param descriptor the descriptor to match - */ -APT_DECLARE(apt_bool_t) apt_pollset_is_wakeup(apt_pollset_t *pollset, const apr_pollfd_t *descriptor); - -APT_END_EXTERN_C - -#endif /* APT_POLLSET_H */ diff --git a/libs/unimrcp/libs/apr-toolkit/include/apt_pool.h b/libs/unimrcp/libs/apr-toolkit/include/apt_pool.h deleted file mode 100644 index 56f10d44297..00000000000 --- a/libs/unimrcp/libs/apr-toolkit/include/apt_pool.h +++ /dev/null @@ -1,49 +0,0 @@ -/* - * Copyright 2008-2014 Arsen Chaloyan - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - * - * $Id: apt_pool.h 2136 2014-07-04 06:33:36Z achaloyan@gmail.com $ - */ - -#ifndef APT_POOL_H -#define APT_POOL_H - -/** - * @file apt_pool.h - * @brief APR pool management - */ - -/** - * Wrappers around APR pool creation - * allow to control memory allocation policy project uses - */ - -#include "apt.h" - -APT_BEGIN_EXTERN_C - -/** - * Create APR pool - */ -APT_DECLARE(apr_pool_t*) apt_pool_create(void); - -/** - * Create APR subpool pool - * @param parent the parent pool - */ -APT_DECLARE(apr_pool_t*) apt_subpool_create(apr_pool_t *parent); - -APT_END_EXTERN_C - -#endif /* APT_POOL_H */ diff --git a/libs/unimrcp/libs/apr-toolkit/include/apt_string.h b/libs/unimrcp/libs/apr-toolkit/include/apt_string.h deleted file mode 100644 index 4c919cedb67..00000000000 --- a/libs/unimrcp/libs/apr-toolkit/include/apt_string.h +++ /dev/null @@ -1,156 +0,0 @@ -/* - * Copyright 2008-2014 Arsen Chaloyan - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - * - * $Id: apt_string.h 2136 2014-07-04 06:33:36Z achaloyan@gmail.com $ - */ - -#ifndef APT_STRING_H -#define APT_STRING_H - -/** - * @file apt_string.h - * @brief String Representation - */ - -#include "apt.h" - -APT_BEGIN_EXTERN_C - -/** Empty string */ -#define APT_EMPTY_STRING "" - -/** String declaration */ -typedef struct apt_str_t apt_str_t; - -/** String representation */ -struct apt_str_t { - /** String buffer (might be not NULL terminated) */ - char *buf; - /** Length of the string (not counting terminating NULL character if exists) */ - apr_size_t length; -}; - -/** Reset string. */ -static APR_INLINE void apt_string_reset(apt_str_t *str) -{ - str->buf = NULL; - str->length = 0; -} - -/** Get string buffer. */ -static APR_INLINE const char* apt_string_buffer_get(const apt_str_t *str) -{ - if(str->buf) { - return str->buf; - } - return APT_EMPTY_STRING; -} - -/** Get string length. */ -static APR_INLINE apr_size_t apt_string_length_get(const apt_str_t *str) -{ - return str->length; -} - -/** Check whether string is empty. */ -static APR_INLINE apr_size_t apt_string_is_empty(const apt_str_t *str) -{ - return str->length ? FALSE : TRUE; -} - -/** - * Set NULL terminated string. - * @param str the destination string - * @param src the NULL terminated string to set - */ -static APR_INLINE void apt_string_set(apt_str_t *str, const char *src) -{ - str->buf = (char*)src; - str->length = src ? strlen(src) : 0; -} - -/** - * Assign (copy) NULL terminated string. - * @param str the destination string - * @param src the NULL terminated string to copy - * @param pool the pool to allocate memory from - */ -static APR_INLINE void apt_string_assign(apt_str_t *str, const char *src, apr_pool_t *pool) -{ - str->buf = NULL; - str->length = src ? strlen(src) : 0; - if(str->length) { - str->buf = apr_pstrmemdup(pool,src,str->length); - } -} - -/** - * Assign (copy) n characters from the src string. - * @param str the destination string - * @param src the NULL terminated string to copy - * @param pool the pool to allocate memory from - */ -static APR_INLINE void apt_string_assign_n(apt_str_t *str, const char *src, apr_size_t length, apr_pool_t *pool) -{ - str->buf = NULL; - str->length = length; - if(str->length) { - str->buf = apr_pstrmemdup(pool,src,str->length); - } -} - -/** - * Copy string. - * @param dest_str the destination string - * @param src_str the source string - * @param pool the pool to allocate memory from - */ -static APR_INLINE void apt_string_copy(apt_str_t *str, const apt_str_t *src_str, apr_pool_t *pool) -{ - str->buf = NULL; - str->length = src_str->length; - if(str->length) { - str->buf = apr_pstrmemdup(pool,src_str->buf,src_str->length); - } -} - -/** - * Compare two strings (case insensitive). - * @param str1 the string to compare - * @param str2 the string to compare - * @return TRUE if equal, FALSE otherwise - */ -static APR_INLINE apt_bool_t apt_string_compare(const apt_str_t *str1, const apt_str_t *str2) -{ - if(str1->length != str2->length || !str1->length) { - return FALSE; - } - return (strncasecmp(str1->buf,str2->buf,str1->length) == 0) ? TRUE : FALSE; -} - -/** - * Represent string as iovec. - * @param str the string to represent - * @param vec the iovec to set - */ -static APR_INLINE void apt_string_to_iovec(const apt_str_t *str, struct iovec *vec) -{ - vec->iov_base = str->buf; - vec->iov_len = str->length; -} - -APT_END_EXTERN_C - -#endif /* APT_STRING_H */ diff --git a/libs/unimrcp/libs/apr-toolkit/include/apt_string_table.h b/libs/unimrcp/libs/apr-toolkit/include/apt_string_table.h deleted file mode 100644 index 53ecc6e5aae..00000000000 --- a/libs/unimrcp/libs/apr-toolkit/include/apt_string_table.h +++ /dev/null @@ -1,65 +0,0 @@ -/* - * Copyright 2008-2014 Arsen Chaloyan - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - * - * $Id: apt_string_table.h 2136 2014-07-04 06:33:36Z achaloyan@gmail.com $ - */ - -#ifndef APT_STRING_TABLE_H -#define APT_STRING_TABLE_H - -/** - * @file apt_string_table.h - * @brief Generic String Table - */ - -#include "apt_string.h" - -APT_BEGIN_EXTERN_C - - -/** String table item declaration */ -typedef struct apt_str_table_item_t apt_str_table_item_t; - -/** String table item definition */ -struct apt_str_table_item_t { - /** String value associated with id */ - apt_str_t value; - /** Index of the unique (key) character to compare */ - apr_size_t key; -}; - - -/** - * Get the string by a given id. - * @param table the table to get string from - * @param size the size of the table - * @param id the id to get string by - * @return the string associated with the id, or NULL if the id is invalid - */ -APT_DECLARE(const apt_str_t*) apt_string_table_str_get(const apt_str_table_item_t table[], apr_size_t size, apr_size_t id); - -/** - * Find the id associated with a given string. - * @param table the table to search for the id - * @param size the size of the table - * @param value the string to search for - * @return the id associated with the string, or invalid id if string cannot be matched - */ -APT_DECLARE(apr_size_t) apt_string_table_id_find(const apt_str_table_item_t table[], apr_size_t size, const apt_str_t *value); - - -APT_END_EXTERN_C - -#endif /* APT_STRING_TABLE_H */ diff --git a/libs/unimrcp/libs/apr-toolkit/include/apt_task.h b/libs/unimrcp/libs/apr-toolkit/include/apt_task.h deleted file mode 100644 index 127529c95e2..00000000000 --- a/libs/unimrcp/libs/apr-toolkit/include/apt_task.h +++ /dev/null @@ -1,262 +0,0 @@ -/* - * Copyright 2008-2014 Arsen Chaloyan - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - * - * $Id: apt_task.h 2180 2014-09-13 21:17:24Z achaloyan@gmail.com $ - */ - -#ifndef APT_TASK_H -#define APT_TASK_H - -/** - * @file apt_task.h - * @brief Thread Execution Abstraction - */ - -#include "apt.h" -#include "apt_task_msg.h" - -APT_BEGIN_EXTERN_C - -/** Opaque task declaration */ -typedef struct apt_task_t apt_task_t; -/** Opaque task virtual table declaration */ -typedef struct apt_task_vtable_t apt_task_vtable_t; -/** Opaque task method declaration */ -typedef apt_bool_t (*apt_task_method_f)(apt_task_t *task); -/** Opaque task event declaration */ -typedef void (*apt_task_event_f)(apt_task_t *task); - - -/** - * Create task. - * @param obj the external object to associate with the task - * @param msg_pool the pool of task messages - * @param pool the pool to allocate memory from - */ -APT_DECLARE(apt_task_t*) apt_task_create( - void *obj, - apt_task_msg_pool_t *msg_pool, - apr_pool_t *pool); - -/** - * Destroy task. - * @param task the task to destroy - */ -APT_DECLARE(apt_bool_t) apt_task_destroy(apt_task_t *task); - -/** - * Add child task. - * @param task the task to add child task to - * @param child_task the child task to add - */ -APT_DECLARE(apt_bool_t) apt_task_add(apt_task_t *task, apt_task_t *child_task); - -/** - * Start task. - * @param task the task to start - */ -APT_DECLARE(apt_bool_t) apt_task_start(apt_task_t *task); - -/** - * Take task offline. - * @param task the task to take offline - */ -APT_DECLARE(apt_bool_t) apt_task_offline(apt_task_t *task); - -/** - * Bring task online. - * @param task the task to bring online - */ -APT_DECLARE(apt_bool_t) apt_task_online(apt_task_t *task); - -/** - * Terminate task. - * @param task the task to terminate - * @param wait_till_complete whether to wait for task to complete or - * process termination asynchronously - */ -APT_DECLARE(apt_bool_t) apt_task_terminate(apt_task_t *task, apt_bool_t wait_till_complete); - -/** - * Wait for task till complete. - * @param task the task to wait for - */ -APT_DECLARE(apt_bool_t) apt_task_wait_till_complete(apt_task_t *task); - -/** - * Get (acquire) task message. - * @param task the task to get task message from - */ -APT_DECLARE(apt_task_msg_t*) apt_task_msg_get(apt_task_t *task); - -/** - * Signal (post) message to the task. - * @param task the task to signal message to - * @param msg the message to signal - */ -APT_DECLARE(apt_bool_t) apt_task_msg_signal(apt_task_t *task, apt_task_msg_t *msg); - -/** - * Signal (post) message to the parent of the specified task. - * @param task the task to signal message to - * @param msg the message to signal - */ -APT_DECLARE(apt_bool_t) apt_task_msg_parent_signal(apt_task_t *task, apt_task_msg_t *msg); - -/** - * Process message signaled to the task. - * @param task the task to process message - * @param msg the message to process - */ -APT_DECLARE(apt_bool_t) apt_task_msg_process(apt_task_t *task, apt_task_msg_t *msg); - -/** - * Process task start request. - * @param task the task being started - */ -APT_DECLARE(apt_bool_t) apt_task_start_request_process(apt_task_t *task); - -/** - * Process task termination request. - * @param task the task being terminated - */ -APT_DECLARE(apt_bool_t) apt_task_terminate_request_process(apt_task_t *task); - - -/** - * Get parent (master) task. - * @param task the task to get parent from - */ -APT_DECLARE(apt_task_t*) apt_task_parent_get(const apt_task_t *task); - -/** - * Get memory pool associated with task. - * @param task the task to get pool from - */ -APT_DECLARE(apr_pool_t*) apt_task_pool_get(const apt_task_t *task); - -/** - * Get external object associated with the task. - * @param task the task to get object from - */ -APT_DECLARE(void*) apt_task_object_get(const apt_task_t *task); - -/** - * Get task vtable. - * @param task the task to get vtable from - */ -APT_DECLARE(apt_task_vtable_t*) apt_task_vtable_get(apt_task_t *task); - -/** - * Give a name to the task. - * @param task the task to give name for - * @param name the name to set - */ -APT_DECLARE(void) apt_task_name_set(apt_task_t *task, const char *name); - -/** - * Get task name. - * @param task the task to get name from - */ -APT_DECLARE(const char*) apt_task_name_get(const apt_task_t *task); - -/** - * Enable/disable auto ready mode. - * @param task the task to set mode for - * @param auto_ready the enabled/disabled auto ready mode - */ -APT_DECLARE(void) apt_task_auto_ready_set(apt_task_t *task, apt_bool_t auto_ready); - -/** - * Explicitly indicate task is ready to process messages. - * @param task the task - */ -APT_DECLARE(apt_bool_t) apt_task_ready(apt_task_t *task); - -/** - * Get the running flag. - * @param task the task - */ -APT_DECLARE(apt_bool_t*) apt_task_running_flag_get(apt_task_t *task); - -/** - * Add start request. - * @param task the task - */ -APT_DECLARE(apt_bool_t) apt_task_start_request_add(apt_task_t *task); - -/** - * Remove start request. - * @param task the task - */ -APT_DECLARE(apt_bool_t) apt_task_start_request_remove(apt_task_t *task); - -/** - * Add termination request. - * @param task the task - */ -APT_DECLARE(apt_bool_t) apt_task_terminate_request_add(apt_task_t *task); - -/** - * Remove termination request. - * @param task the task - */ -APT_DECLARE(apt_bool_t) apt_task_terminate_request_remove(apt_task_t *task); - -/** - * Hold task execution. - * @param msec the time to hold - */ -APT_DECLARE(void) apt_task_delay(apr_size_t msec); - - -/** Table of task virtual methods */ -struct apt_task_vtable_t { - /** Virtual destroy method */ - apt_task_method_f destroy; - /** Virtual start method*/ - apt_task_method_f start; - /** Virtual terminate method */ - apt_task_method_f terminate; - /** Virtual run method*/ - apt_task_method_f run; - - /** Virtual signal_msg method */ - apt_bool_t (*signal_msg)(apt_task_t *task, apt_task_msg_t *msg); - /** Virtual process_msg method */ - apt_bool_t (*process_msg)(apt_task_t *task, apt_task_msg_t *msg); - - /** Virtual process_start method */ - apt_bool_t (*process_start)(apt_task_t *task); - /** Virtual process_terminate method */ - apt_bool_t (*process_terminate)(apt_task_t *task); - - /** Virtual pre-run event handler */ - apt_task_event_f on_pre_run; - /** Virtual post-run event handler */ - apt_task_event_f on_post_run; - /** Virtual start-complete event handler */ - apt_task_event_f on_start_complete; - /** Virtual terminate-complete event handler */ - apt_task_event_f on_terminate_complete; - /** Virtual take-offline-complete event handler */ - apt_task_event_f on_offline_complete; - /** Virtual bring-online-complete event handler */ - apt_task_event_f on_online_complete; -}; - -APT_END_EXTERN_C - -#endif /* APT_TASK_H */ diff --git a/libs/unimrcp/libs/apr-toolkit/include/apt_task_msg.h b/libs/unimrcp/libs/apr-toolkit/include/apt_task_msg.h deleted file mode 100644 index afb01d2cd62..00000000000 --- a/libs/unimrcp/libs/apr-toolkit/include/apt_task_msg.h +++ /dev/null @@ -1,86 +0,0 @@ -/* - * Copyright 2008-2014 Arsen Chaloyan - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - * - * $Id: apt_task_msg.h 2180 2014-09-13 21:17:24Z achaloyan@gmail.com $ - */ - -#ifndef APT_TASK_MSG_H -#define APT_TASK_MSG_H - -/** - * @file apt_task_msg.h - * @brief Task Message Base Definition - */ - -#include "apt.h" - -APT_BEGIN_EXTERN_C - -/** Enumeration of task message types */ -typedef enum { - TASK_MSG_CORE, /**< core task message type */ - TASK_MSG_USER /**< user defined task messages start from here */ -} apt_task_msg_type_e; - -/** Enumeration of core task messages */ -typedef enum { - CORE_TASK_MSG_NONE, /**< indefinite message */ - CORE_TASK_MSG_START_COMPLETE, /**< start-complete message */ - CORE_TASK_MSG_TERMINATE_REQUEST, /**< terminate-request message */ - CORE_TASK_MSG_TERMINATE_COMPLETE, /**< terminate-complete message */ - CORE_TASK_MSG_TAKEOFFLINE_REQUEST, /**< take-offline-request message */ - CORE_TASK_MSG_TAKEOFFLINE_COMPLETE, /**< take-offline-complete message */ - CORE_TASK_MSG_BRINGONLINE_REQUEST, /**< bring-online-request message */ - CORE_TASK_MSG_BRINGONLINE_COMPLETE, /**< bring-online-complete message */ -} apt_core_task_msg_type_e; - -/** Opaque task message declaration */ -typedef struct apt_task_msg_t apt_task_msg_t; -/** Opaque task message pool declaration */ -typedef struct apt_task_msg_pool_t apt_task_msg_pool_t; - -/** Task message is used for inter task communication */ -struct apt_task_msg_t { - /** Message pool the task message is allocated from */ - apt_task_msg_pool_t *msg_pool; - /** Task msg type */ - int type; - /** Task msg sub type */ - int sub_type; - /** Context specific data */ - char data[1]; -}; - - -/** Create pool of task messages with dynamic allocation of messages (no actual pool is created) */ -APT_DECLARE(apt_task_msg_pool_t*) apt_task_msg_pool_create_dynamic(apr_size_t msg_size, apr_pool_t *pool); - -/** Create pool of task messages with static allocation of messages */ -APT_DECLARE(apt_task_msg_pool_t*) apt_task_msg_pool_create_static(apr_size_t msg_size, apr_size_t msg_pool_size, apr_pool_t *pool); - -/** Destroy pool of task messages */ -APT_DECLARE(void) apt_task_msg_pool_destroy(apt_task_msg_pool_t *msg_pool); - - -/** Acquire task message from task message pool */ -APT_DECLARE(apt_task_msg_t*) apt_task_msg_acquire(apt_task_msg_pool_t *task_msg_pool); - -/** Realese task message */ -APT_DECLARE(void) apt_task_msg_release(apt_task_msg_t *task_msg); - - -APT_END_EXTERN_C - -#endif /* APT_TASK_MSG_H */ diff --git a/libs/unimrcp/libs/apr-toolkit/include/apt_test_suite.h b/libs/unimrcp/libs/apr-toolkit/include/apt_test_suite.h deleted file mode 100644 index 13e90033020..00000000000 --- a/libs/unimrcp/libs/apr-toolkit/include/apt_test_suite.h +++ /dev/null @@ -1,101 +0,0 @@ -/* - * Copyright 2008-2014 Arsen Chaloyan - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - * - * $Id: apt_test_suite.h 2136 2014-07-04 06:33:36Z achaloyan@gmail.com $ - */ - -#ifndef APT_TEST_SUITE_H -#define APT_TEST_SUITE_H - -/** - * @file apt_test_suite.h - * @brief Test Suite and Framework Definitions - */ - -#include "apt_string.h" - -APT_BEGIN_EXTERN_C - - -/** Opaque test suite declaration */ -typedef struct apt_test_suite_t apt_test_suite_t; - -/** Prototype of test function */ -typedef apt_bool_t (*apt_test_f)(apt_test_suite_t *suite, int argc, const char * const *argv); - -/** Test suite as a base for all kind of tests */ -struct apt_test_suite_t { - /** Memory pool to allocate memory from */ - apr_pool_t *pool; - /** Unique name of the test suite */ - apt_str_t name; - /** External object associated with the test suite */ - void *obj; - /** Test function to execute */ - apt_test_f tester; -}; - -/** - * Create test suite. - * @param pool the pool to allocate memory from - * @param name the unique name of the test suite - * @param obj the external object associated with the test suite - * @param tester the test function to execute - */ -APT_DECLARE(apt_test_suite_t*) apt_test_suite_create(apr_pool_t *pool, const char *name, - void *obj, apt_test_f tester); - - - - - -/** Opaque test framework declaration */ -typedef struct apt_test_framework_t apt_test_framework_t; - -/** - * Create test framework. - */ -APT_DECLARE(apt_test_framework_t*) apt_test_framework_create(void); - -/** - * Destroy test framework. - * @param framework the test framework to destroy - */ -APT_DECLARE(void) apt_test_framework_destroy(apt_test_framework_t *framework); - -/** - * Add test suite to framework. - * @param framework the test framework to add test suite to - * @param suite the test suite to add - */ -APT_DECLARE(apt_bool_t) apt_test_framework_suite_add(apt_test_framework_t *framework, apt_test_suite_t *suite); - -/** - * Run test suites. - * @param framework the test framework - * @param argc the number of arguments - * @param argv the array of arguments - */ -APT_DECLARE(apt_bool_t) apt_test_framework_run(apt_test_framework_t *framework, int argc, const char * const *argv); - -/** - * Retrieve the memory pool. - * @param framework the test framework to retrieve memory pool from - */ -APT_DECLARE(apr_pool_t*) apt_test_framework_pool_get(const apt_test_framework_t *framework); - -APT_END_EXTERN_C - -#endif /* APT_TEST_SUITE_H */ diff --git a/libs/unimrcp/libs/apr-toolkit/include/apt_text_message.h b/libs/unimrcp/libs/apr-toolkit/include/apt_text_message.h deleted file mode 100644 index 48e2f7c4c08..00000000000 --- a/libs/unimrcp/libs/apr-toolkit/include/apt_text_message.h +++ /dev/null @@ -1,125 +0,0 @@ -/* - * Copyright 2008-2014 Arsen Chaloyan - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - * - * $Id: apt_text_message.h 2136 2014-07-04 06:33:36Z achaloyan@gmail.com $ - */ - -#ifndef APT_TEXT_MESSAGE_H -#define APT_TEXT_MESSAGE_H - -/** - * @file apt_text_message.h - * @brief Text Message Interface (RFC5322) - */ - -#include "apt_header_field.h" -#include "apt_text_stream.h" - -APT_BEGIN_EXTERN_C - -/** Status of text message processing (parsing/generation) */ -typedef enum { - APT_MESSAGE_STATUS_COMPLETE, - APT_MESSAGE_STATUS_INCOMPLETE, - APT_MESSAGE_STATUS_INVALID -} apt_message_status_e; - - -/** Opaque text message parser */ -typedef struct apt_message_parser_t apt_message_parser_t; -/** Vtable of text message parser */ -typedef struct apt_message_parser_vtable_t apt_message_parser_vtable_t; - -/** Opaque text message generator */ -typedef struct apt_message_generator_t apt_message_generator_t; -/** Vtable of text message generator */ -typedef struct apt_message_generator_vtable_t apt_message_generator_vtable_t; - -/** Temporary context associated with message and used for its parsing or generation */ -typedef struct apt_message_context_t apt_message_context_t; - -/** Create message parser */ -APT_DECLARE(apt_message_parser_t*) apt_message_parser_create(void *obj, const apt_message_parser_vtable_t *vtable, apr_pool_t *pool); - -/** Parse message by raising corresponding event handlers */ -APT_DECLARE(apt_message_status_e) apt_message_parser_run(apt_message_parser_t *parser, apt_text_stream_t *stream, void **message); - -/** Get external object associated with parser */ -APT_DECLARE(void*) apt_message_parser_object_get(apt_message_parser_t *parser); - -/** Set verbose mode for the parser */ -APT_DECLARE(void) apt_message_parser_verbose_set(apt_message_parser_t *parser, apt_bool_t verbose); - - -/** Create message generator */ -APT_DECLARE(apt_message_generator_t*) apt_message_generator_create(void *obj, const apt_message_generator_vtable_t *vtable, apr_pool_t *pool); - -/** Generate message */ -APT_DECLARE(apt_message_status_e) apt_message_generator_run(apt_message_generator_t *generator, void *message, apt_text_stream_t *stream); - -/** Get external object associated with generator */ -APT_DECLARE(void*) apt_message_generator_object_get(apt_message_generator_t *generator); - -/** Set verbose mode for the parser */ -APT_DECLARE(void) apt_message_generator_verbose_set(apt_message_generator_t *generator, apt_bool_t verbose); - - -/** Parse individual header field (name-value pair) */ -APT_DECLARE(apt_header_field_t*) apt_header_field_parse(apt_text_stream_t *stream, apr_pool_t *pool); - -/** Generate individual header field (name-value pair) */ -APT_DECLARE(apt_bool_t) apt_header_field_generate(const apt_header_field_t *header_field, apt_text_stream_t *stream); - -/** Parse header section */ -APT_DECLARE(apt_bool_t) apt_header_section_parse(apt_header_section_t *header, apt_text_stream_t *stream, apr_pool_t *pool); - -/** Generate header section */ -APT_DECLARE(apt_bool_t) apt_header_section_generate(const apt_header_section_t *header, apt_text_stream_t *stream); - - -/** Temporary context associated with message and used for its parsing or generation */ -struct apt_message_context_t { - /** Context or ptotocol specific message */ - void *message; - /** Header section of the message */ - apt_header_section_t *header; - /** Body or content of the message */ - apt_str_t *body; -}; - -/** Vtable of text message parser */ -struct apt_message_parser_vtable_t { - /** Start new message parsing by associating corresponding context and reading its start-line if applicable */ - apt_bool_t (*on_start)(apt_message_parser_t *parser, apt_message_context_t *context, apt_text_stream_t *stream, apr_pool_t *pool); - /** Header section handler is invoked when entire header section has been read and parsed into header fields */ - apt_bool_t (*on_header_complete)(apt_message_parser_t *parser, apt_message_context_t *context); - /** Body handler is invoked when entire body has been read */ - apt_bool_t (*on_body_complete)(apt_message_parser_t *parser, apt_message_context_t *context); -}; - -/** Vtable of text message generator */ -struct apt_message_generator_vtable_t { - /** Start message generation by associating corresponding context and generating message start-line if applicable */ - apt_bool_t (*on_start)(apt_message_generator_t *generator, apt_message_context_t *context, apt_text_stream_t *stream); - /** Header section handler is invoked to notify header section has been generated */ - apt_bool_t (*on_header_complete)(apt_message_generator_t *generator, apt_message_context_t *context, apt_text_stream_t *stream); - /** Body handler is invoked to notify body has been generated */ - apt_bool_t (*on_body_complete)(apt_message_generator_t *generator, apt_message_context_t *context, apt_text_stream_t *stream); -}; - - -APT_END_EXTERN_C - -#endif /* APT_TEXT_MESSAGE_H */ diff --git a/libs/unimrcp/libs/apr-toolkit/include/apt_text_stream.h b/libs/unimrcp/libs/apr-toolkit/include/apt_text_stream.h deleted file mode 100644 index 7510afd9bc1..00000000000 --- a/libs/unimrcp/libs/apr-toolkit/include/apt_text_stream.h +++ /dev/null @@ -1,241 +0,0 @@ -/* - * Copyright 2008-2014 Arsen Chaloyan - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - * - * $Id: apt_text_stream.h 2136 2014-07-04 06:33:36Z achaloyan@gmail.com $ - */ - -#ifndef APT_TEXT_STREAM_H -#define APT_TEXT_STREAM_H - -/** - * @file apt_text_stream.h - * @brief Text Stream Parse/Generate Routine - */ - -#include "apt_string_table.h" -#include "apt_pair.h" - -APT_BEGIN_EXTERN_C - -/** Space */ -#define APT_TOKEN_SP 0x20 -/** Horizontal tab */ -#define APT_TOKEN_HTAB 0x09 -/** Carrige return */ -#define APT_TOKEN_CR 0x0D -/** Line feed */ -#define APT_TOKEN_LF 0x0A - -/** Text stream declaration */ -typedef struct apt_text_stream_t apt_text_stream_t; - -/** Text stream is used for message parsing and generation */ -struct apt_text_stream_t { - /** Text stream */ - apt_str_t text; - - /** Current position in the stream */ - char *pos; - /** End of stream pointer */ - const char *end; - /** Is end of stream reached */ - apt_bool_t is_eos; -}; - - -/** - * Read entire line of the text stream. - * @param stream the text stream to navigate on - * @param line the read line to return - * @return TRUE if the line is successfully read, otherwise FALSE - * @remark To be used to navigate through the lines of the text stream (message). - */ -APT_DECLARE(apt_bool_t) apt_text_line_read(apt_text_stream_t *stream, apt_str_t *line); - -/** - * Read header field (name-value pair) of the text stream by scanning entire line. - * @param stream the text stream to navigate - * @param pair the read pair to return - * @return TRUE if the header is successfully read, otherwise FALSE - * @remark To be used to navigate through the lines and read header fields - * (name:value pairs) of the text stream (message). - */ -APT_DECLARE(apt_bool_t) apt_text_header_read(apt_text_stream_t *stream, apt_pair_t *pair); - -/** - * Read the field terminated with specified separator. - * @param stream the text stream to navigate - * @param separator the field separator - * @param skip_spaces whether to skip spaces or not - * @param field the read field to return - * @return TRUE if the read field isn't empty, otherwise FALSE - * @remark To be used to navigate through the fields of the text stream (message). - */ -APT_DECLARE(apt_bool_t) apt_text_field_read(apt_text_stream_t *stream, char separator, apt_bool_t skip_spaces, apt_str_t *field); - -/** Generate name-value pair line */ -APT_DECLARE(apt_bool_t) apt_text_name_value_insert(apt_text_stream_t *stream, const apt_str_t *name, const apt_str_t *value); - -/** Generate only the name ("name:") of the header field */ -APT_DECLARE(apt_bool_t) apt_text_header_name_insert(apt_text_stream_t *stream, const apt_str_t *name); - -/** Parse array of name-value pairs */ -APT_DECLARE(apt_bool_t) apt_pair_array_parse(apt_pair_arr_t *arr, const apt_str_t *value, apr_pool_t *pool); -/** Generate array of name-value pairs */ -APT_DECLARE(apt_bool_t) apt_pair_array_generate(const apt_pair_arr_t *arr, apt_str_t *str, apr_pool_t *pool); - - -/** Parse boolean-value */ -APT_DECLARE(apt_bool_t) apt_boolean_value_parse(const apt_str_t *str, apt_bool_t *value); -/** Generate apr_size_t value from pool (buffer is allocated from pool) */ -APT_DECLARE(apt_bool_t) apt_boolean_value_generate(apt_bool_t value, apt_str_t *str, apr_pool_t *pool); - -/** Parse apr_size_t value */ -APT_DECLARE(apr_size_t) apt_size_value_parse(const apt_str_t *str); -/** Generate apr_size_t value from pool (buffer is allocated from pool) */ -APT_DECLARE(apt_bool_t) apt_size_value_generate(apr_size_t value, apt_str_t *str, apr_pool_t *pool); - -/** Insert apr_size_t value */ -APT_DECLARE(apt_bool_t) apt_text_size_value_insert(apt_text_stream_t *stream, apr_size_t value); - -/** Parse float value */ -APT_DECLARE(float) apt_float_value_parse(const apt_str_t *str); -/** Generate float value (buffer is allocated from pool) */ -APT_DECLARE(apt_bool_t) apt_float_value_generate(float value, apt_str_t *str, apr_pool_t *pool); - -/** Insert float value */ -APT_DECLARE(apt_bool_t) apt_text_float_value_insert(apt_text_stream_t *stream, float value); -/** Insert string value */ -APT_DECLARE(apt_bool_t) apt_text_string_insert(apt_text_stream_t *stream, const apt_str_t *str); - -/** Reset navigation related data of the text stream */ -static APR_INLINE void apt_text_stream_reset(apt_text_stream_t *stream) -{ - stream->pos = stream->text.buf; - stream->end = stream->text.buf + stream->text.length; - stream->is_eos = FALSE; -} - -/** Initialize text stream */ -static APR_INLINE void apt_text_stream_init(apt_text_stream_t *stream, char *buffer, apr_size_t size) -{ - stream->text.buf = buffer; - stream->text.length = size; - apt_text_stream_reset(stream); -} - -/** Insert end of the line symbol(s) */ -static APR_INLINE apt_bool_t apt_text_eol_insert(apt_text_stream_t *stream) -{ - if(stream->pos + 2 < stream->end) { - *stream->pos++ = APT_TOKEN_CR; - *stream->pos++ = APT_TOKEN_LF; - return TRUE; - } - return FALSE; -} - -/** Insert character */ -static APR_INLINE apt_bool_t apt_text_char_insert(apt_text_stream_t *stream, char ch) -{ - if(stream->pos + 1 < stream->end) { - *stream->pos++ = ch; - return TRUE; - } - return FALSE; -} - -/** Insert space */ -static APR_INLINE apt_bool_t apt_text_space_insert(apt_text_stream_t *stream) -{ - return apt_text_char_insert(stream,APT_TOKEN_SP); -} - -/** Insert space */ -static APR_INLINE apt_bool_t apt_text_htab_insert(apt_text_stream_t *stream) -{ - return apt_text_char_insert(stream,APT_TOKEN_HTAB); -} - -/** Check whether specified character is a white space (WSP = SP / HTAB) */ -static APR_INLINE apt_bool_t apt_text_is_wsp(char ch) -{ - return (ch == APT_TOKEN_SP || ch == APT_TOKEN_HTAB) ? TRUE : FALSE; -} - -/** Skip sequence of spaces */ -static APR_INLINE void apt_text_spaces_skip(apt_text_stream_t *stream) -{ - while(stream->pos < stream->end && *stream->pos == APT_TOKEN_SP) - stream->pos++; -} - -/** Skip sequence of white spaces (WSP = SP / HTAB) */ -static APR_INLINE void apt_text_white_spaces_skip(apt_text_stream_t *stream) -{ - while(stream->pos < stream->end && apt_text_is_wsp(*stream->pos) == TRUE) - stream->pos++; -} - -/** Skip specified character */ -static APR_INLINE void apt_text_char_skip(apt_text_stream_t *stream, char ch) -{ - if(stream->pos < stream->end && *stream->pos == ch) stream->pos++; -} - -/** Skip sequence of specified characters */ -static APR_INLINE void apt_text_chars_skip(apt_text_stream_t *stream, char ch) -{ - while(stream->pos < stream->end && *stream->pos == ch) stream->pos++; -} - -/** Skip to specified character */ -static APR_INLINE void apt_text_skip_to_char(apt_text_stream_t *stream, char ch) -{ - while(stream->pos < stream->end && *stream->pos != ch) stream->pos++; -} - -/** Check whether end of stream is reached */ -static APR_INLINE apt_bool_t apt_text_is_eos(const apt_text_stream_t *stream) -{ - return (stream->pos >= stream->end || stream->is_eos == TRUE) ? TRUE : FALSE; -} - -/** Scroll text stream */ -APT_DECLARE(apt_bool_t) apt_text_stream_scroll(apt_text_stream_t *stream); - -/** Parse id at resource string */ -APT_DECLARE(apt_bool_t) apt_id_resource_parse(const apt_str_t *str, char separator, apt_str_t *id, apt_str_t *resource, apr_pool_t *pool); -/** Generate id at resource string */ -APT_DECLARE(apt_bool_t) apt_id_resource_generate(const apt_str_t *id, const apt_str_t *resource, char separator, apt_str_t *str, apr_pool_t *pool); - -/** Generate value plus the length (number of digits) of the value itself */ -APT_DECLARE(apt_bool_t) apt_var_length_value_generate(apr_size_t *value, apr_size_t max_count, apt_str_t *str); - -/** Generate completion-cause */ -APT_DECLARE(apt_bool_t) apt_completion_cause_generate(const apt_str_table_item_t table[], apr_size_t size, apr_size_t cause, apt_str_t *str, apr_pool_t *pool); - -/** - * Generate unique identifier (hex string) - * @param id the id to generate - * @param length the length of hex string to generate - * @param pool the pool to allocate memory from - */ -APT_DECLARE(apt_bool_t) apt_unique_id_generate(apt_str_t *id, apr_size_t length, apr_pool_t *pool); - - -APT_END_EXTERN_C - -#endif /* APT_TEXT_STREAM_H */ diff --git a/libs/unimrcp/libs/apr-toolkit/include/apt_timer_queue.h b/libs/unimrcp/libs/apr-toolkit/include/apt_timer_queue.h deleted file mode 100644 index ed04dd65142..00000000000 --- a/libs/unimrcp/libs/apr-toolkit/include/apt_timer_queue.h +++ /dev/null @@ -1,68 +0,0 @@ -/* - * Copyright 2008-2014 Arsen Chaloyan - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - * - * $Id: apt_timer_queue.h 2136 2014-07-04 06:33:36Z achaloyan@gmail.com $ - */ - -#ifndef APT_TIMER_QUEUE_H -#define APT_TIMER_QUEUE_H - -/** - * @file apt_timer_queue.h - * @brief Timer Queue - */ - -#include "apt.h" - -APT_BEGIN_EXTERN_C - -/** Opaque timer declaration */ -typedef struct apt_timer_t apt_timer_t; -/** Opaque timer queue declaration */ -typedef struct apt_timer_queue_t apt_timer_queue_t; - -/** Prototype of timer callback */ -typedef void (*apt_timer_proc_f)(apt_timer_t *timer, void *obj); - - -/** Create timer queue */ -APT_DECLARE(apt_timer_queue_t*) apt_timer_queue_create(apr_pool_t *pool); - -/** Destroy timer queue */ -APT_DECLARE(void) apt_timer_queue_destroy(apt_timer_queue_t *timer_queue); - -/** Advance scheduled timers */ -APT_DECLARE(void) apt_timer_queue_advance(apt_timer_queue_t *timer_queue, apr_uint32_t elapsed_time); - -/** Is timer queue empty */ -APT_DECLARE(apt_bool_t) apt_timer_queue_is_empty(const apt_timer_queue_t *timer_queue); - -/** Get current timeout */ -APT_DECLARE(apt_bool_t) apt_timer_queue_timeout_get(const apt_timer_queue_t *timer_queue, apr_uint32_t *timeout); - - -/** Create timer */ -APT_DECLARE(apt_timer_t*) apt_timer_create(apt_timer_queue_t *timer_queue, apt_timer_proc_f proc, void *obj, apr_pool_t *pool); - -/** Set one-shot timer */ -APT_DECLARE(apt_bool_t) apt_timer_set(apt_timer_t *timer, apr_uint32_t timeout); - -/** Kill timer */ -APT_DECLARE(apt_bool_t) apt_timer_kill(apt_timer_t *timer); - - -APT_END_EXTERN_C - -#endif /* APT_TIMER_QUEUE_H */ diff --git a/libs/unimrcp/libs/apr-toolkit/src/apt_consumer_task.c b/libs/unimrcp/libs/apr-toolkit/src/apt_consumer_task.c deleted file mode 100644 index 67a9ea70dd6..00000000000 --- a/libs/unimrcp/libs/apr-toolkit/src/apt_consumer_task.c +++ /dev/null @@ -1,164 +0,0 @@ -/* - * Copyright 2008-2014 Arsen Chaloyan - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - * - * $Id: apt_consumer_task.c 2224 2014-11-12 00:41:45Z achaloyan@gmail.com $ - */ - -#include -#include -#include "apt_consumer_task.h" -#include "apt_log.h" - -struct apt_consumer_task_t { - void *obj; - apt_task_t *base; - apr_queue_t *msg_queue; -#if APR_HAS_QUEUE_TIMEOUT - apt_timer_queue_t *timer_queue; -#endif -}; - -static apt_bool_t apt_consumer_task_msg_signal(apt_task_t *task, apt_task_msg_t *msg); -static apt_bool_t apt_consumer_task_run(apt_task_t *task); - -APT_DECLARE(apt_consumer_task_t*) apt_consumer_task_create( - void *obj, - apt_task_msg_pool_t *msg_pool, - apr_pool_t *pool) -{ - apt_task_vtable_t *vtable; - apt_consumer_task_t *consumer_task = apr_palloc(pool,sizeof(apt_consumer_task_t)); - consumer_task->obj = obj; - consumer_task->msg_queue = NULL; - if(apr_queue_create(&consumer_task->msg_queue,1024,pool) != APR_SUCCESS) { - return NULL; - } - - consumer_task->base = apt_task_create(consumer_task,msg_pool,pool); - if(!consumer_task->base) { - return NULL; - } - - vtable = apt_task_vtable_get(consumer_task->base); - if(vtable) { - vtable->run = apt_consumer_task_run; - vtable->signal_msg = apt_consumer_task_msg_signal; - } - -#if APR_HAS_QUEUE_TIMEOUT - consumer_task->timer_queue = apt_timer_queue_create(pool); -#endif - - return consumer_task; -} - -APT_DECLARE(apt_task_t*) apt_consumer_task_base_get(const apt_consumer_task_t *task) -{ - return task->base; -} - -APT_DECLARE(apt_task_vtable_t*) apt_consumer_task_vtable_get(const apt_consumer_task_t *task) -{ - return apt_task_vtable_get(task->base); -} - -APT_DECLARE(void*) apt_consumer_task_object_get(const apt_consumer_task_t *task) -{ - return task->obj; -} - -APT_DECLARE(apt_timer_t*) apt_consumer_task_timer_create( - apt_consumer_task_t *task, - apt_timer_proc_f proc, - void *obj, - apr_pool_t *pool) -{ -#if APR_HAS_QUEUE_TIMEOUT - return apt_timer_create(task->timer_queue,proc,obj,pool); -#else - return NULL; -#endif -} - -static apt_bool_t apt_consumer_task_msg_signal(apt_task_t *task, apt_task_msg_t *msg) -{ - apt_consumer_task_t *consumer_task = apt_task_object_get(task); - return (apr_queue_push(consumer_task->msg_queue,msg) == APR_SUCCESS) ? TRUE : FALSE; -} - -static apt_bool_t apt_consumer_task_run(apt_task_t *task) -{ - apr_status_t rv; - void *msg; - apt_bool_t *running; - apt_consumer_task_t *consumer_task; -#if APR_HAS_QUEUE_TIMEOUT - apr_interval_time_t timeout; - apr_uint32_t queue_timeout; - apr_time_t time_now, time_last = 0; -#endif - const char *task_name; - - consumer_task = apt_task_object_get(task); - if(!consumer_task) { - return FALSE; - } - task_name = apt_task_name_get(consumer_task->base), - - running = apt_task_running_flag_get(task); - if(!running) { - return FALSE; - } - - while(*running) { -#if APR_HAS_QUEUE_TIMEOUT - if(apt_timer_queue_timeout_get(consumer_task->timer_queue,&queue_timeout) == TRUE) { - timeout = (apr_interval_time_t)queue_timeout * 1000; - time_last = apr_time_now(); - apt_log(APT_LOG_MARK,APT_PRIO_DEBUG,"Wait for Messages [%s] timeout [%u]", - task_name, queue_timeout); - rv = apr_queue_timedpop(consumer_task->msg_queue,timeout,&msg); - } - else - { - timeout = -1; - apt_log(APT_LOG_MARK,APT_PRIO_DEBUG,"Wait for Messages [%s]",task_name); - rv = apr_queue_pop(consumer_task->msg_queue,&msg); - } -#else - apt_log(APT_LOG_MARK,APT_PRIO_DEBUG,"Wait for Messages [%s]",task_name); - rv = apr_queue_pop(consumer_task->msg_queue,&msg); -#endif - if(rv == APR_SUCCESS) { - if(msg) { - apt_task_msg_t *task_msg = msg; - apt_task_msg_process(consumer_task->base,task_msg); - } - } - else if(rv != APR_TIMEUP) { - apt_log(APT_LOG_MARK,APT_PRIO_WARNING,"Failed to Pop Message [%s] status: %d",task_name,rv); - } - -#if APR_HAS_QUEUE_TIMEOUT - if(timeout != -1) { - time_now = apr_time_now(); - if(time_now > time_last) { - apt_timer_queue_advance(consumer_task->timer_queue,(apr_uint32_t)((time_now - time_last)/1000)); - } - } -#endif - } - return TRUE; -} diff --git a/libs/unimrcp/libs/apr-toolkit/src/apt_cyclic_queue.c b/libs/unimrcp/libs/apr-toolkit/src/apt_cyclic_queue.c deleted file mode 100644 index 896a9f66fbd..00000000000 --- a/libs/unimrcp/libs/apr-toolkit/src/apt_cyclic_queue.c +++ /dev/null @@ -1,106 +0,0 @@ -/* - * Copyright 2008-2014 Arsen Chaloyan - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - * - * $Id: apt_cyclic_queue.c 2136 2014-07-04 06:33:36Z achaloyan@gmail.com $ - */ - -#include -#include "apt_cyclic_queue.h" - -struct apt_cyclic_queue_t { - void **data; - apr_size_t max_size; - apr_size_t actual_size; - apr_size_t head; - apr_size_t tail; -}; - -static apt_bool_t apt_cyclic_queue_resize(apt_cyclic_queue_t *queue); - - -APT_DECLARE(apt_cyclic_queue_t*) apt_cyclic_queue_create(apr_size_t size) -{ - apt_cyclic_queue_t *queue = malloc(sizeof(apt_cyclic_queue_t)); - queue->max_size = size; - queue->actual_size = 0; - queue->data = malloc(sizeof(void*) * queue->max_size); - queue->head = queue->tail = 0; - return queue; -} - -APT_DECLARE(void) apt_cyclic_queue_destroy(apt_cyclic_queue_t *queue) -{ - if(queue->data) { - free(queue->data); - queue->data = NULL; - } - free(queue); -} - -APT_DECLARE(apt_bool_t) apt_cyclic_queue_push(apt_cyclic_queue_t *queue, void *obj) -{ - if(queue->actual_size >= queue->max_size) { - if(apt_cyclic_queue_resize(queue) != TRUE) { - return FALSE; - } - } - - queue->data[queue->head] = obj; - queue->head = (queue->head + 1) % queue->max_size; - queue->actual_size++; - return TRUE; -} - -APT_DECLARE(void*) apt_cyclic_queue_pop(apt_cyclic_queue_t *queue) -{ - void *obj = NULL; - if(queue->actual_size) { - obj = queue->data[queue->tail]; - queue->tail = (queue->tail + 1) % queue->max_size; - queue->actual_size--; - } - return obj; -} - -APT_DECLARE(void) apt_cyclic_queue_clear(apt_cyclic_queue_t *queue) -{ - queue->actual_size = 0; - queue->head = queue->tail = 0; -} - -APT_DECLARE(apt_bool_t) apt_cyclic_queue_is_empty(const apt_cyclic_queue_t *queue) -{ - return queue->actual_size ? TRUE : FALSE; -} - -static apt_bool_t apt_cyclic_queue_resize(apt_cyclic_queue_t *queue) -{ - apr_size_t new_size = queue->max_size + queue->max_size/2; - void **new_data = malloc(sizeof(void*) * new_size); - apr_size_t offset; - - offset = queue->max_size - queue->head; - memcpy(new_data, queue->data + queue->head, sizeof(void*) * offset); - if(queue->head) { - memcpy(new_data + offset, queue->data, sizeof(void*) * queue->head); - } - - queue->tail = 0; - queue->head = queue->max_size; - queue->max_size = new_size; - free(queue->data); - queue->data = new_data; - return TRUE; -} diff --git a/libs/unimrcp/libs/apr-toolkit/src/apt_dir_layout.c b/libs/unimrcp/libs/apr-toolkit/src/apt_dir_layout.c deleted file mode 100644 index 4fe3f4a1208..00000000000 --- a/libs/unimrcp/libs/apr-toolkit/src/apt_dir_layout.c +++ /dev/null @@ -1,317 +0,0 @@ -/* - * Copyright 2008-2014 Arsen Chaloyan - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - * - * $Id: apt_dir_layout.c 2204 2014-10-31 01:01:42Z achaloyan@gmail.com $ - */ - -#include -#include -#include "apt_dir_layout.h" - -/** Directories layout */ -struct apt_dir_layout_t { - /** Array of the directory paths the layout is composed of */ - const char **paths; - /** Number of directories in the layout */ - apr_size_t count; -}; - -/** Default labels matching the entries in configuration */ -static const char *default_labels[APT_LAYOUT_DIR_COUNT] = { - "confdir", /* APT_LAYOUT_CONF_DIR */ - "plugindir", /* APT_LAYOUT_PLUGIN_DIR */ - "logdir", /* APT_LAYOUT_LOG_DIR */ - "datadir", /* APT_LAYOUT_DATA_DIR */ - "vardir", /* APT_LAYOUT_VAR_DIR */ -}; - -static const char* apt_default_root_dir_path_get(apr_pool_t *pool) -{ - char *root_dir_path; - char *cur_dir_path; - /* Get the current directory */ - if(apr_filepath_get(&cur_dir_path,APR_FILEPATH_NATIVE,pool) != APR_SUCCESS) - return NULL; - - /* Root directory is supposed to be one level up by default */ - if(apr_filepath_merge(&root_dir_path,cur_dir_path,"../",APR_FILEPATH_NATIVE,pool) != APR_SUCCESS) - return FALSE; - - return root_dir_path; -} - -static apt_bool_t apt_dir_layout_path_set_internal(apt_dir_layout_t *dir_layout, apr_size_t dir_entry_id, const char *path) -{ - if(dir_entry_id >= dir_layout->count) - return FALSE; - - dir_layout->paths[dir_entry_id] = path; - return TRUE; -} - -APT_DECLARE(apt_dir_layout_t*) apt_dir_layout_create(apr_pool_t *pool) -{ - return apt_dir_layout_create_ext(APT_LAYOUT_DIR_COUNT,pool); -} - -APT_DECLARE(apt_dir_layout_t*) apt_dir_layout_create_ext(apr_size_t count, apr_pool_t *pool) -{ - apt_dir_layout_t *dir_layout = (apt_dir_layout_t*) apr_palloc(pool,sizeof(apt_dir_layout_t)); - dir_layout->count = count; - dir_layout->paths = apr_pcalloc(pool,count*sizeof(char*)); - return dir_layout; -} - -APT_DECLARE(apt_dir_layout_t*) apt_default_dir_layout_create(const char *root_dir_path, apr_pool_t *pool) -{ - apt_dir_layout_t *dir_layout = apt_dir_layout_create_ext(APT_LAYOUT_DIR_COUNT,pool); - - if(!root_dir_path) { - /* If root dir path is not specified, get the default one */ - root_dir_path = apt_default_root_dir_path_get(pool); - } - - if(root_dir_path) { - char *path; - - apr_filepath_merge(&path,root_dir_path,"conf",APR_FILEPATH_NATIVE,pool); - apt_dir_layout_path_set_internal(dir_layout,APT_LAYOUT_CONF_DIR,path); - - apr_filepath_merge(&path,root_dir_path,"plugin",APR_FILEPATH_NATIVE,pool); - apt_dir_layout_path_set_internal(dir_layout,APT_LAYOUT_PLUGIN_DIR,path); - - apr_filepath_merge(&path,root_dir_path,"log",APR_FILEPATH_NATIVE,pool); - apt_dir_layout_path_set_internal(dir_layout,APT_LAYOUT_LOG_DIR,path); - - apr_filepath_merge(&path,root_dir_path,"data",APR_FILEPATH_NATIVE,pool); - apt_dir_layout_path_set_internal(dir_layout,APT_LAYOUT_DATA_DIR,path); - - apr_filepath_merge(&path,root_dir_path,"var",APR_FILEPATH_NATIVE,pool); - apt_dir_layout_path_set_internal(dir_layout,APT_LAYOUT_VAR_DIR,path); - } - return dir_layout; -} - -APT_DECLARE(apt_dir_layout_t*) apt_custom_dir_layout_create( - const char *conf_dir_path, - const char *plugin_dir_path, - const char *log_dir_path, - const char *data_dir_path, - const char *var_dir_path, - apr_pool_t *pool) -{ - apt_dir_layout_t *dir_layout = apt_dir_layout_create_ext(APT_LAYOUT_DIR_COUNT,pool); - - apt_dir_layout_path_set(dir_layout,APT_LAYOUT_CONF_DIR,conf_dir_path,pool); - apt_dir_layout_path_set(dir_layout,APT_LAYOUT_PLUGIN_DIR,plugin_dir_path,pool); - apt_dir_layout_path_set(dir_layout,APT_LAYOUT_LOG_DIR,log_dir_path,pool); - apt_dir_layout_path_set(dir_layout,APT_LAYOUT_DATA_DIR,data_dir_path,pool); - apt_dir_layout_path_set(dir_layout,APT_LAYOUT_VAR_DIR,log_dir_path,pool); - - return dir_layout; -} - -static apt_bool_t apt_dir_entry_id_by_label(const char **labels, apr_size_t count, const char *name, apr_size_t *id) -{ - apr_size_t i; - for(i=0; ifirst_cdata.first || !elem->first_cdata.first->text) { - return NULL; - } - - path = apr_pstrdup(pool,elem->first_cdata.first->text); - apr_collapse_spaces(path,path); - - /* Check if path is absolute or relative */ - status = apt_dir_is_path_absolute(path,pool); - if(status == APR_SUCCESS) { - /* Absolute path specified */ - return path; - } - else if (status == APR_ERELATIVE) { - /* Relative path specified -> merge it with the root path */ - if(apr_filepath_merge(&full_path,root_dir_path,path,APR_FILEPATH_NATIVE,pool) == APR_SUCCESS) { - return full_path; - } - } - - /* WARNING: invalid path specified */ - return NULL; -} - -APT_DECLARE(apt_bool_t) apt_dir_layout_load(apt_dir_layout_t *dir_layout, const char *config_file, apr_pool_t *pool) -{ - return apt_dir_layout_load_ext(dir_layout,config_file,default_labels,APT_LAYOUT_DIR_COUNT,pool); -} - -APT_DECLARE(apt_bool_t) apt_dir_layout_load_ext(apt_dir_layout_t *dir_layout, const char *config_file, const char **labels, apr_size_t count, apr_pool_t *pool) -{ - apr_xml_doc *doc; - const apr_xml_elem *elem; - const apr_xml_elem *root; - const apr_xml_attr *xml_attr; - char *path; - const char *root_dir_path = NULL; - apr_size_t id; - - if(!dir_layout || !config_file || !labels || !count) { - return FALSE; - } - - /* Parse XML document */ - doc = apt_dir_layout_doc_parse(config_file,pool); - if(!doc) { - return FALSE; - } - - root = doc->root; - - /* Match document name */ - if(!root || strcasecmp(root->name,"dirlayout") != 0) { - /* Unknown document */ - return FALSE; - } - - /* Find rootdir attribute */ - for(xml_attr = root->attr; xml_attr; xml_attr = xml_attr->next) { - if(strcasecmp(xml_attr->name, "rootdir") == 0) { - root_dir_path = xml_attr->value; - break; - } - } - - if(root_dir_path) { - /* If root dir path is specified, check if it is absolute or relative */ - apr_status_t status = apt_dir_is_path_absolute(root_dir_path,pool); - if(status == APR_ERELATIVE) { - /* Relative path specified -> make it absolute */ - char *full_path; - char *cur_dir_path; - /* Get the current directory */ - if(apr_filepath_get(&cur_dir_path,APR_FILEPATH_NATIVE,pool) != APR_SUCCESS) - return FALSE; - - /* Merge it with path specified */ - if(apr_filepath_merge(&full_path,cur_dir_path,root_dir_path,APR_FILEPATH_NATIVE,pool) != APR_SUCCESS) - return FALSE; - root_dir_path = full_path; - } - } - else { - /* If root dir path is not specified, get the default one */ - root_dir_path = apt_default_root_dir_path_get(pool); - } - - /* Navigate through document */ - for(elem = root->first_child; elem; elem = elem->next) { - if(apt_dir_entry_id_by_label(labels,dir_layout->count,elem->name,&id) == TRUE) { - path = apt_dir_layout_subdir_parse(root_dir_path,elem,pool); - if(path) { - apt_dir_layout_path_set_internal(dir_layout,id,path); - } - } - else { - /* Unknown element */ - } - } - return TRUE; -} - -APT_DECLARE(apt_bool_t) apt_dir_layout_path_set(apt_dir_layout_t *dir_layout, apr_size_t dir_entry_id, const char *path, apr_pool_t *pool) -{ - if(!dir_layout || dir_entry_id >= dir_layout->count || !path) - return FALSE; - - dir_layout->paths[dir_entry_id] = apr_pstrdup(pool,path); - return TRUE; -} - -APT_DECLARE(const char*) apt_dir_layout_path_get(const apt_dir_layout_t *dir_layout, apr_size_t dir_entry_id) -{ - if(!dir_layout || dir_entry_id >= dir_layout->count) - return NULL; - - return dir_layout->paths[dir_entry_id]; -} - -APT_DECLARE(char*) apt_dir_layout_path_compose(const apt_dir_layout_t *dir_layout, apr_size_t dir_entry_id, const char *file_name, apr_pool_t *pool) -{ - char *file_path; - if(!dir_layout || dir_entry_id >= dir_layout->count) - return NULL; - - if(apr_filepath_merge(&file_path,dir_layout->paths[dir_entry_id],file_name,APR_FILEPATH_NATIVE,pool) == APR_SUCCESS) { - return file_path; - } - return NULL; -} - -APT_DECLARE(char*) apt_confdir_filepath_get(const apt_dir_layout_t *dir_layout, const char *file_name, apr_pool_t *pool) -{ - return apt_dir_layout_path_compose(dir_layout,APT_LAYOUT_CONF_DIR,file_name,pool); -} - -APT_DECLARE(char*) apt_datadir_filepath_get(const apt_dir_layout_t *dir_layout, const char *file_name, apr_pool_t *pool) -{ - return apt_dir_layout_path_compose(dir_layout,APT_LAYOUT_DATA_DIR,file_name,pool); -} - -APT_DECLARE(char*) apt_vardir_filepath_get(const apt_dir_layout_t *dir_layout, const char *file_name, apr_pool_t *pool) -{ - return apt_dir_layout_path_compose(dir_layout,APT_LAYOUT_VAR_DIR,file_name,pool); -} diff --git a/libs/unimrcp/libs/apr-toolkit/src/apt_header_field.c b/libs/unimrcp/libs/apr-toolkit/src/apt_header_field.c deleted file mode 100644 index a00fcb5ec5e..00000000000 --- a/libs/unimrcp/libs/apr-toolkit/src/apt_header_field.c +++ /dev/null @@ -1,187 +0,0 @@ -/* - * Copyright 2008-2014 Arsen Chaloyan - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - * - * $Id: apt_header_field.c 2223 2014-11-12 00:37:40Z achaloyan@gmail.com $ - */ - -#include "apt_header_field.h" -#include "apt_text_stream.h" - -#define UNKNOWN_HEADER_FIELD_ID (apr_size_t)-1 - -/** Allocate an empty header field */ -APT_DECLARE(apt_header_field_t*) apt_header_field_alloc(apr_pool_t *pool) -{ - apt_header_field_t *header_field = apr_palloc(pool,sizeof(apt_header_field_t)); - apt_string_reset(&header_field->name); - apt_string_reset(&header_field->value); - header_field->id = UNKNOWN_HEADER_FIELD_ID; - APR_RING_ELEM_INIT(header_field,link); - return header_field; -} - -/** Create a header field using given name and value APT strings */ -APT_DECLARE(apt_header_field_t*) apt_header_field_create(const apt_str_t *name, const apt_str_t *value, apr_pool_t *pool) -{ - apt_header_field_t *header_field; - if(!name || !value) { - return NULL; - } - header_field = apr_palloc(pool,sizeof(apt_header_field_t)); - apt_string_copy(&header_field->name,name,pool); - apt_string_copy(&header_field->value,value,pool); - header_field->id = UNKNOWN_HEADER_FIELD_ID; - APR_RING_ELEM_INIT(header_field,link); - return header_field; -} - -/** Create a header field using given name and value C strings */ -APT_DECLARE(apt_header_field_t*) apt_header_field_create_c(const char *name, const char *value, apr_pool_t *pool) -{ - apt_header_field_t *header_field; - if(!name || !value) { - return NULL; - } - header_field = apr_palloc(pool,sizeof(apt_header_field_t)); - apt_string_assign(&header_field->name,name,pool); - apt_string_assign(&header_field->value,value,pool); - header_field->id = UNKNOWN_HEADER_FIELD_ID; - APR_RING_ELEM_INIT(header_field,link); - return header_field; -} - -/* Create a header field from entire text line consisting of a name and value pair */ -APT_DECLARE(apt_header_field_t*) apt_header_field_create_from_line(const apt_str_t *line, char separator, apr_pool_t *pool) -{ - apt_str_t item; - apt_text_stream_t stream; - apt_header_field_t *header_field; - if(!line) { - return NULL; - } - - header_field = apr_palloc(pool,sizeof(apt_header_field_t)); - stream.text = *line; - apt_text_stream_reset(&stream); - - /* read name */ - if(apt_text_field_read(&stream,separator,TRUE,&item) == FALSE) { - return NULL; - } - apt_string_copy(&header_field->name,&item,pool); - - /* read value */ - if(apt_text_field_read(&stream,0,TRUE,&item) == TRUE) { - apt_string_copy(&header_field->value,&item,pool); - } - else { - apt_string_reset(&header_field->value); - } - - header_field->id = UNKNOWN_HEADER_FIELD_ID; - APR_RING_ELEM_INIT(header_field,link); - return header_field; -} - -/** Copy specified header field */ -APT_DECLARE(apt_header_field_t*) apt_header_field_copy(const apt_header_field_t *src_header_field, apr_pool_t *pool) -{ - apt_header_field_t *header_field = apr_palloc(pool,sizeof(apt_header_field_t)); - apt_string_copy(&header_field->name,&src_header_field->name,pool); - apt_string_copy(&header_field->value,&src_header_field->value,pool); - header_field->id = src_header_field->id; - APR_RING_ELEM_INIT(header_field,link); - return header_field; -} - -/** Initialize header section (collection of header fields) */ -APT_DECLARE(void) apt_header_section_init(apt_header_section_t *header) -{ - APR_RING_INIT(&header->ring, apt_header_field_t, link); - header->arr = NULL; - header->arr_size = 0; -} - -/** Allocate header section to set/get header fields by numeric identifiers */ -APT_DECLARE(apt_bool_t) apt_header_section_array_alloc(apt_header_section_t *header, apr_size_t max_field_count, apr_pool_t *pool) -{ - if(!max_field_count) { - return FALSE; - } - - header->arr = (apt_header_field_t**)apr_pcalloc(pool,sizeof(apt_header_field_t*) * max_field_count); - header->arr_size = max_field_count; - return TRUE; -} - -/** Add (append) header field to header section */ -APT_DECLARE(apt_bool_t) apt_header_section_field_add(apt_header_section_t *header, apt_header_field_t *header_field) -{ - if(header_field->id < header->arr_size) { - if(header->arr[header_field->id]) { - return FALSE; - } - header->arr[header_field->id] = header_field; - } - APR_RING_INSERT_TAIL(&header->ring,header_field,apt_header_field_t,link); - return TRUE; -} - -/** Insert header field to header section based on numreic identifier if specified */ -APT_DECLARE(apt_bool_t) apt_header_section_field_insert(apt_header_section_t *header, apt_header_field_t *header_field) -{ - apt_header_field_t *it; - if(header_field->id < header->arr_size) { - if(header->arr[header_field->id]) { - return FALSE; - } - header->arr[header_field->id] = header_field; - - for(it = APR_RING_FIRST(&header->ring); - it != APR_RING_SENTINEL(&header->ring, apt_header_field_t, link); - it = APR_RING_NEXT(it, link)) { - if(header_field->id < it->id) { - APR_RING_INSERT_BEFORE(it,header_field,link); - return TRUE; - } - } - } - - APR_RING_INSERT_TAIL(&header->ring,header_field,apt_header_field_t,link); - return TRUE; -} - -/** Set header field in the array of header fields using associated numeric identifier */ -APT_DECLARE(apt_bool_t) apt_header_section_field_set(apt_header_section_t *header, apt_header_field_t *header_field) -{ - if(header_field->id >= header->arr_size) { - return FALSE; - } - if(header->arr[header_field->id]) { - return FALSE; - } - header->arr[header_field->id] = header_field; - return TRUE; -} - -/** Remove header field from header section */ -APT_DECLARE(apt_bool_t) apt_header_section_field_remove(apt_header_section_t *header, apt_header_field_t *header_field) -{ - if(header_field->id < header->arr_size) { - header->arr[header_field->id] = NULL; - } - APR_RING_REMOVE(header_field,link); - return TRUE; -} diff --git a/libs/unimrcp/libs/apr-toolkit/src/apt_log.c b/libs/unimrcp/libs/apr-toolkit/src/apt_log.c deleted file mode 100644 index 844946cf469..00000000000 --- a/libs/unimrcp/libs/apr-toolkit/src/apt_log.c +++ /dev/null @@ -1,627 +0,0 @@ -/* - * Copyright 2008-2014 Arsen Chaloyan - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - * - * $Id: apt_log.c 2198 2014-10-16 01:41:19Z achaloyan@gmail.com $ - */ - -#include -#include -#include -#include -#include "apt_log.h" - -#define MAX_LOG_ENTRY_SIZE 4096 -#define MAX_PRIORITY_NAME_LENGTH 9 - -static const char priority_snames[APT_PRIO_COUNT][MAX_PRIORITY_NAME_LENGTH+1] = -{ - "[EMERG] ", - "[ALERT] ", - "[CRITIC] ", - "[ERROR] ", - "[WARN] ", - "[NOTICE] ", - "[INFO] ", - "[DEBUG] " -}; - -typedef struct apt_log_file_data_t apt_log_file_data_t; - -struct apt_log_file_data_t { - const char *log_dir_path; - const char *log_file_name; - FILE *file; - apr_size_t cur_size; - apr_size_t max_size; - apr_size_t cur_file_index; - apr_size_t max_file_count; - apt_bool_t append; - apr_thread_mutex_t *mutex; - apr_pool_t *pool; -}; - -struct apt_logger_t { - apt_log_output_e mode; - apt_log_priority_e priority; - int header; - apt_log_ext_handler_f ext_handler; - apt_log_file_data_t *file_data; - apt_log_masking_e masking; -}; - -static apt_logger_t *apt_logger = NULL; - -static apt_bool_t apt_do_log(const char *file, int line, apt_log_priority_e priority, const char *format, va_list arg_ptr); - -static const char* apt_log_file_path_make(apt_log_file_data_t *file_data); -static apt_bool_t apt_log_file_dump(apt_log_file_data_t *file_data, const char *log_entry, apr_size_t size); -static apr_xml_doc* apt_log_doc_parse(const char *file_path, apr_pool_t *pool); -static apr_size_t apt_log_file_get_size(apt_log_file_data_t *file_data); -static apr_byte_t apt_log_file_exist(apt_log_file_data_t *file_data); - -static apt_logger_t* apt_log_instance_alloc(apr_pool_t *pool) -{ - apt_logger_t *logger = apr_palloc(pool,sizeof(apt_logger_t)); - logger->mode = APT_LOG_OUTPUT_CONSOLE; - logger->priority = APT_PRIO_INFO; - logger->header = APT_LOG_HEADER_DEFAULT; - logger->ext_handler = NULL; - logger->file_data = NULL; - logger->masking = APT_LOG_MASKING_NONE; - return logger; -} - -APT_DECLARE(apt_bool_t) apt_log_instance_create(apt_log_output_e mode, apt_log_priority_e priority, apr_pool_t *pool) -{ - if(apt_logger) { - return FALSE; - } - apt_logger = apt_log_instance_alloc(pool); - apt_logger->mode = mode; - apt_logger->priority = priority; - return TRUE; -} - -APT_DECLARE(apt_bool_t) apt_log_instance_load(const char *config_file, apr_pool_t *pool) -{ - apr_xml_doc *doc; - const apr_xml_elem *elem; - const apr_xml_elem *root; - char *text; - - if(apt_logger) { - return FALSE; - } - apt_logger = apt_log_instance_alloc(pool); - - /* Parse XML document */ - doc = apt_log_doc_parse(config_file,pool); - if(!doc) { - return FALSE; - } - - root = doc->root; - - /* Match document name */ - if(!root || strcasecmp(root->name,"aptlogger") != 0) { - /* Unknown document */ - return FALSE; - } - - /* Navigate through document */ - for(elem = root->first_child; elem; elem = elem->next) { - if(!elem->first_cdata.first || !elem->first_cdata.first->text) - continue; - - text = apr_pstrdup(pool,elem->first_cdata.first->text); - apr_collapse_spaces(text,text); - - if(strcasecmp(elem->name,"priority") == 0) { - apt_logger->priority = apt_log_priority_translate(text); - } - else if(strcasecmp(elem->name,"output") == 0) { - apt_logger->mode = apt_log_output_mode_translate(text); - } - else if(strcasecmp(elem->name,"headers") == 0) { - apt_logger->header = apt_log_header_translate(text); - } - else if(strcasecmp(elem->name,"masking") == 0) { - apt_logger->masking = apt_log_masking_translate(text); - } - else { - /* Unknown element */ - } - } - return TRUE; -} - -APT_DECLARE(apt_bool_t) apt_log_instance_destroy() -{ - if(!apt_logger) { - return FALSE; - } - - if(apt_logger->file_data) { - apt_log_file_close(); - } - apt_logger = NULL; - return TRUE; -} - -APT_DECLARE(apt_logger_t*) apt_log_instance_get() -{ - return apt_logger; -} - -APT_DECLARE(apt_bool_t) apt_log_instance_set(apt_logger_t *logger) -{ - if(apt_logger){ - return FALSE; - } - apt_logger = logger; - return TRUE; -} - -APT_DECLARE(apt_bool_t) apt_log_file_open( - const char *dir_path, - const char *file_name, - apr_size_t max_file_size, - apr_size_t max_file_count, - apt_bool_t append, - apr_pool_t *pool) -{ - const char *log_file_path; - apt_log_file_data_t *file_data; - if(!apt_logger || !dir_path || !file_name) { - return FALSE; - } - - if(apt_logger->file_data) { - return FALSE; - } - - file_data = apr_palloc(pool,sizeof(apt_log_file_data_t)); - file_data->log_dir_path = apr_pstrdup(pool,dir_path); - file_data->log_file_name = apr_pstrdup(pool,file_name); - file_data->cur_file_index = 0; - file_data->cur_size = 0; - file_data->max_file_count = max_file_count; - file_data->max_size = max_file_size; - file_data->append = append; - file_data->mutex = NULL; - file_data->pool = pool; - - if(!file_data->max_size) { - file_data->max_size = MAX_LOG_FILE_SIZE; - } - if(!file_data->max_file_count) { - file_data->max_file_count = MAX_LOG_FILE_COUNT; - } - - if(file_data->append == TRUE) { - /* iteratively find the last created file */ - while(file_data->cur_file_indexmax_file_count) - { - if(apt_log_file_exist(file_data) == 0) - { - if(file_data->cur_file_index > 0) - file_data->cur_file_index--; - file_data->cur_size = apt_log_file_get_size(file_data); - break; - } - file_data->cur_file_index++; - } - - /* if all the files have been created start rewriting from beginning */ - if(file_data->cur_file_index>=file_data->max_file_count) - { - file_data->cur_file_index=0; - file_data->cur_size=0; - log_file_path = apt_log_file_path_make(file_data); - file_data->file = fopen(log_file_path,"wb"); /* truncate the first file to zero length */ - fclose(file_data->file); - } - } - - /* create mutex */ - if(apr_thread_mutex_create(&file_data->mutex,APR_THREAD_MUTEX_DEFAULT,pool) != APR_SUCCESS) { - return FALSE; - } - /* open log file */ - log_file_path = apt_log_file_path_make(file_data); - file_data->file = fopen(log_file_path,file_data->append == TRUE ? "ab" : "wb"); - if(!file_data->file) { - apr_thread_mutex_destroy(file_data->mutex); - return FALSE; - } - - apt_logger->file_data = file_data; - return TRUE; -} - -APT_DECLARE(apt_bool_t) apt_log_file_close() -{ - apt_log_file_data_t *file_data; - if(!apt_logger || !apt_logger->file_data) { - return FALSE; - } - file_data = apt_logger->file_data; - if(file_data->file) { - /* close log file */ - fclose(file_data->file); - file_data->file = NULL; - /* destroy mutex */ - apr_thread_mutex_destroy(file_data->mutex); - file_data->mutex = NULL; - } - apt_logger->file_data = NULL; - return TRUE; -} - -APT_DECLARE(apt_bool_t) apt_log_output_mode_set(apt_log_output_e mode) -{ - if(!apt_logger) { - return FALSE; - } - apt_logger->mode = mode; - return TRUE; -} - -APT_DECLARE(apt_bool_t) apt_log_output_mode_check(apt_log_output_e mode) -{ - if(!apt_logger) { - return FALSE; - } - return (apt_logger->mode & mode) ? TRUE : FALSE; -} - -APT_DECLARE(int) apt_log_output_mode_translate(char *str) -{ - int mode = APT_LOG_OUTPUT_NONE; - char *name; - char *last; - name = apr_strtok(str, ",", &last); - while(name) { - if(strcasecmp(name, "CONSOLE") == 0) - mode |= APT_LOG_OUTPUT_CONSOLE; - else if(strcasecmp(name, "FILE") == 0) - mode |= APT_LOG_OUTPUT_FILE; - - name = apr_strtok(NULL, ",", &last); - } - return mode; -} - -APT_DECLARE(apt_bool_t) apt_log_priority_set(apt_log_priority_e priority) -{ - if(!apt_logger || priority >= APT_PRIO_COUNT) { - return FALSE; - } - apt_logger->priority = priority; - return TRUE; -} - -APT_DECLARE(apt_log_priority_e) apt_log_priority_translate(const char *str) -{ - if(strcasecmp(str, "EMERGENCY") == 0) - return APT_PRIO_EMERGENCY; - else if(strcasecmp(str, "ALERT") == 0) - return APT_PRIO_ALERT; - else if(strcasecmp(str, "CRITICAL") == 0) - return APT_PRIO_CRITICAL; - else if(strcasecmp(str, "ERROR") == 0) - return APT_PRIO_ERROR; - else if(strcasecmp(str, "WARNING") == 0) - return APT_PRIO_WARNING; - else if(strcasecmp(str, "NOTICE") == 0) - return APT_PRIO_NOTICE; - else if(strcasecmp(str, "INFO") == 0) - return APT_PRIO_INFO; - else if(strcasecmp(str, "DEBUG") == 0) - return APT_PRIO_DEBUG; - - return APT_PRIO_DEBUG; -} - -APT_DECLARE(apt_bool_t) apt_log_header_set(int header) -{ - if(!apt_logger) { - return FALSE; - } - apt_logger->header = header; - return TRUE; -} - -APT_DECLARE(int) apt_log_header_translate(char *str) -{ - int header = APT_LOG_OUTPUT_NONE; - char *name; - char *last; - name = apr_strtok(str, ",", &last); - while(name) { - if(strcasecmp(name, "DATE") == 0) - header |= APT_LOG_HEADER_DATE; - else if(strcasecmp(name, "TIME") == 0) - header |= APT_LOG_HEADER_TIME; - else if(strcasecmp(name, "PRIORITY") == 0) - header |= APT_LOG_HEADER_PRIORITY; - else if(strcasecmp(name, "MARK") == 0) - header |= APT_LOG_HEADER_MARK; - else if(strcasecmp(name, "THREAD") == 0) - header |= APT_LOG_HEADER_THREAD; - - name = apr_strtok(NULL, ",", &last); - } - return header; -} - -APT_DECLARE(apt_bool_t) apt_log_masking_set(apt_log_masking_e masking) -{ - if(!apt_logger) { - return FALSE; - } - apt_logger->masking = masking; - return TRUE; -} - -APT_DECLARE(apt_log_masking_e) apt_log_masking_get(void) -{ - if(!apt_logger) { - return APT_LOG_MASKING_NONE; - } - return apt_logger->masking; -} - -APT_DECLARE(apt_log_masking_e) apt_log_masking_translate(const char *str) -{ - if(strcasecmp(str, "COMPLETE") == 0) - return APT_LOG_MASKING_COMPLETE; - else if(strcasecmp(str, "ENCRYPTED") == 0) - return APT_LOG_MASKING_ENCRYPTED; - return APT_LOG_MASKING_NONE; -} - -#define APT_MASKED_CONTENT "*** masked ***" - -APT_DECLARE(const char*) apt_log_data_mask(const char *data_in, apr_size_t *length, apr_pool_t *pool) -{ - if(!apt_logger) { - return NULL; - } - if(apt_logger->masking == APT_LOG_MASKING_COMPLETE) { - *length = sizeof(APT_MASKED_CONTENT) - 1; - return APT_MASKED_CONTENT; - } - return data_in; -} - -APT_DECLARE(apt_bool_t) apt_log_ext_handler_set(apt_log_ext_handler_f handler) -{ - if(!apt_logger) { - return FALSE; - } - apt_logger->ext_handler = handler; - return TRUE; -} - -APT_DECLARE(apt_bool_t) apt_log(const char *file, int line, apt_log_priority_e priority, const char *format, ...) -{ - apt_bool_t status = TRUE; - if(!apt_logger) { - return FALSE; - } - if(priority <= apt_logger->priority) { - va_list arg_ptr; - va_start(arg_ptr, format); - if(apt_logger->ext_handler) { - status = apt_logger->ext_handler(file,line,NULL,priority,format,arg_ptr); - } - else { - status = apt_do_log(file,line,priority,format,arg_ptr); - } - va_end(arg_ptr); - } - return status; -} - -APT_DECLARE(apt_bool_t) apt_obj_log(const char *file, int line, apt_log_priority_e priority, void *obj, const char *format, ...) -{ - apt_bool_t status = TRUE; - if(!apt_logger) { - return FALSE; - } - if(priority <= apt_logger->priority) { - va_list arg_ptr; - va_start(arg_ptr, format); - if(apt_logger->ext_handler) { - status = apt_logger->ext_handler(file,line,obj,priority,format,arg_ptr); - } - else { - status = apt_do_log(file,line,priority,format,arg_ptr); - } - va_end(arg_ptr); - } - return status; -} - -APT_DECLARE(apt_bool_t) apt_va_log(const char *file, int line, apt_log_priority_e priority, const char *format, va_list arg_ptr) -{ - apt_bool_t status = TRUE; - if(!apt_logger) { - return FALSE; - } - if(priority <= apt_logger->priority) { - if(apt_logger->ext_handler) { - status = apt_logger->ext_handler(file,line,NULL,priority,format,arg_ptr); - } - else { - status = apt_do_log(file,line,priority,format,arg_ptr); - } - } - return status; -} - -static APR_INLINE unsigned long apt_thread_id_get(void) -{ -#ifdef WIN32 - return (unsigned long) GetCurrentThreadId(); -#else - return (unsigned long) apr_os_thread_current(); -#endif -} - -static apt_bool_t apt_do_log(const char *file, int line, apt_log_priority_e priority, const char *format, va_list arg_ptr) -{ - char log_entry[MAX_LOG_ENTRY_SIZE]; - apr_size_t max_size = MAX_LOG_ENTRY_SIZE - 2; - apr_size_t offset = 0; - apr_time_exp_t result; - apr_time_t now = apr_time_now(); - apr_time_exp_lt(&result,now); - - if(apt_logger->header & APT_LOG_HEADER_DATE) { - offset += apr_snprintf(log_entry+offset,max_size-offset,"%4d-%02d-%02d ", - result.tm_year+1900, - result.tm_mon+1, - result.tm_mday); - } - if(apt_logger->header & APT_LOG_HEADER_TIME) { - offset += apr_snprintf(log_entry+offset,max_size-offset,"%02d:%02d:%02d:%06d ", - result.tm_hour, - result.tm_min, - result.tm_sec, - result.tm_usec); - } - if(apt_logger->header & APT_LOG_HEADER_MARK) { - offset += apr_snprintf(log_entry+offset,max_size-offset,"%s:%03d ",file,line); - } - if(apt_logger->header & APT_LOG_HEADER_THREAD) { - offset += apr_snprintf(log_entry+offset,max_size-offset,"%05lu ",apt_thread_id_get()); - } - if(apt_logger->header & APT_LOG_HEADER_PRIORITY) { - memcpy(log_entry+offset,priority_snames[priority],MAX_PRIORITY_NAME_LENGTH); - offset += MAX_PRIORITY_NAME_LENGTH; - } - - offset += apr_vsnprintf(log_entry+offset,max_size-offset,format,arg_ptr); - log_entry[offset++] = '\n'; - log_entry[offset] = '\0'; - if((apt_logger->mode & APT_LOG_OUTPUT_CONSOLE) == APT_LOG_OUTPUT_CONSOLE) { - fwrite(log_entry,offset,1,stdout); - } - - if((apt_logger->mode & APT_LOG_OUTPUT_FILE) == APT_LOG_OUTPUT_FILE && apt_logger->file_data) { - apt_log_file_dump(apt_logger->file_data,log_entry,offset); - } - return TRUE; -} - -static const char* apt_log_file_path_make(apt_log_file_data_t *file_data) -{ - char *log_file_path = NULL; - const char *log_file_name = apr_psprintf(file_data->pool,"%s-%.2"APR_SIZE_T_FMT".log", - file_data->log_file_name, - file_data->cur_file_index); - apr_filepath_merge(&log_file_path, - file_data->log_dir_path, - log_file_name, - APR_FILEPATH_NATIVE, - file_data->pool); - return log_file_path; -} - -static apr_size_t apt_log_file_get_size(apt_log_file_data_t *file_data) -{ - FILE* fp; - const char *log_file_path; - apr_size_t ret; - - log_file_path = apt_log_file_path_make(file_data); - fp = fopen(log_file_path,"rb"); - - if(!fp) return 0; - - fseek(fp,0,SEEK_END); - ret = ftell(fp); - - fclose(fp); - - return ret; -} - -static apr_byte_t apt_log_file_exist(apt_log_file_data_t *file_data) -{ - FILE* fp; - const char *log_file_path; - - log_file_path = apt_log_file_path_make(file_data); - fp = fopen(log_file_path,"rb"); - - if(!fp) return 0; - - fclose(fp); - - return 1; -} - -static apt_bool_t apt_log_file_dump(apt_log_file_data_t *file_data, const char *log_entry, apr_size_t size) -{ - apr_thread_mutex_lock(file_data->mutex); - - file_data->cur_size += size; - if(file_data->cur_size > file_data->max_size) { - const char *log_file_path; - /* close current log file */ - fclose(file_data->file); - /* roll over the next log file */ - file_data->cur_file_index++; - file_data->cur_file_index %= file_data->max_file_count; - /* open log file */ - log_file_path = apt_log_file_path_make(file_data); - file_data->file = fopen(log_file_path,"wb"); - if(!file_data->file) { - return FALSE; - } - - file_data->cur_size = size; - } - /* write to log file */ - fwrite(log_entry,1,size,file_data->file); - fflush(file_data->file); - - apr_thread_mutex_unlock(file_data->mutex); - return TRUE; -} - -static apr_xml_doc* apt_log_doc_parse(const char *file_path, apr_pool_t *pool) -{ - apr_xml_parser *parser = NULL; - apr_xml_doc *xml_doc = NULL; - apr_file_t *fd = NULL; - apr_status_t rv; - - rv = apr_file_open(&fd,file_path,APR_READ|APR_BINARY,0,pool); - if(rv != APR_SUCCESS) { - return NULL; - } - - rv = apr_xml_parse_file(pool,&parser,&xml_doc,fd,2000); - if(rv != APR_SUCCESS) { - xml_doc = NULL; - } - - apr_file_close(fd); - return xml_doc; -} diff --git a/libs/unimrcp/libs/apr-toolkit/src/apt_multipart_content.c b/libs/unimrcp/libs/apr-toolkit/src/apt_multipart_content.c deleted file mode 100644 index 46254723ab8..00000000000 --- a/libs/unimrcp/libs/apr-toolkit/src/apt_multipart_content.c +++ /dev/null @@ -1,312 +0,0 @@ -/* - * Copyright 2008-2014 Arsen Chaloyan - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - * - * $Id: apt_multipart_content.c 2136 2014-07-04 06:33:36Z achaloyan@gmail.com $ - */ - -#include -#include "apt_multipart_content.h" -#include "apt_text_stream.h" -#include "apt_text_message.h" - -#define CONTENT_LENGTH_HEADER "Content-Length" -#define CONTENT_TYPE_HEADER "Content-Type" -#define CONTENT_ID_HEADER "Content-Id" - -#define DEFAULT_BOUNDARY "break" -#define DEFAULT_HYPHENS "--" - -#define DEFAULT_MULTIPART_CONTENT_SIZE 4096 - -/** Multipart content */ -struct apt_multipart_content_t { - apr_pool_t *pool; - apt_text_stream_t stream; - - apt_str_t boundary; - apt_str_t hyphens; -}; - -/** Create an empty multipart content */ -APT_DECLARE(apt_multipart_content_t*) apt_multipart_content_create(apr_size_t max_content_size, const apt_str_t *boundary, apr_pool_t *pool) -{ - char *buffer; - apt_multipart_content_t *multipart_content = apr_palloc(pool,sizeof(apt_multipart_content_t)); - multipart_content->pool = pool; - - if(max_content_size == 0) { - max_content_size = DEFAULT_MULTIPART_CONTENT_SIZE; - } - - if(boundary) { - multipart_content->boundary = *boundary; - } - else { - multipart_content->boundary.buf = DEFAULT_BOUNDARY; - multipart_content->boundary.length = sizeof(DEFAULT_BOUNDARY)-1; - } - - multipart_content->hyphens.buf = DEFAULT_HYPHENS; - multipart_content->hyphens.length = sizeof(DEFAULT_HYPHENS)-1; - - buffer = apr_palloc(pool,max_content_size+1); - apt_text_stream_init(&multipart_content->stream,buffer,max_content_size); - return multipart_content; -} - -/** Initialize content part generation */ -static apt_bool_t apt_multipart_content_initialize(apt_multipart_content_t *multipart_content) -{ - /* insert preceding end-of-line */ - if(apt_text_eol_insert(&multipart_content->stream) == FALSE) { - return FALSE; - } - /* insert hyphens */ - if(apt_text_string_insert(&multipart_content->stream,&multipart_content->hyphens) == FALSE) { - return FALSE; - } - /* insert boundary */ - if(apt_text_string_insert(&multipart_content->stream,&multipart_content->boundary) == FALSE) { - return FALSE; - } - return apt_text_eol_insert(&multipart_content->stream); -} - -/** Add content part to multipart content */ -APT_DECLARE(apt_bool_t) apt_multipart_content_add(apt_multipart_content_t *multipart_content, const apt_content_part_t *content_part) -{ - if(!content_part) { - return FALSE; - } - - /* insert preceding eol, hyppens and boudnary */ - if(apt_multipart_content_initialize(multipart_content) == FALSE) { - return FALSE; - } - - /* insert header fields */ - if(apt_header_section_generate(&content_part->header,&multipart_content->stream) == FALSE) { - return FALSE; - } - - /* insert body */ - return apt_text_string_insert(&multipart_content->stream,&content_part->body); -} - -/** Add content part to multipart content by specified header fields and body */ -APT_DECLARE(apt_bool_t) apt_multipart_content_add2(apt_multipart_content_t *multipart_content, const apt_str_t *content_type, const apt_str_t *content_id, const apt_str_t *body) -{ - /* insert preceding eol, hyppens and boudnary */ - if(apt_multipart_content_initialize(multipart_content) == FALSE) { - return FALSE; - } - - /* insert content-type */ - if(content_type) { - apt_str_t name = {CONTENT_TYPE_HEADER,sizeof(CONTENT_TYPE_HEADER)-1}; - if(apt_text_name_value_insert(&multipart_content->stream,&name,content_type) == FALSE) { - return FALSE; - } - } - - /* insert content-id */ - if(content_id) { - apt_str_t name = {CONTENT_ID_HEADER,sizeof(CONTENT_ID_HEADER)-1}; - if(apt_text_name_value_insert(&multipart_content->stream,&name,content_id) == FALSE) { - return FALSE; - } - } - - /* insert content-length */ - if(body) { - apt_str_t name = {CONTENT_LENGTH_HEADER,sizeof(CONTENT_LENGTH_HEADER)-1}; - if(apt_text_header_name_insert(&multipart_content->stream,&name) == FALSE) { - return FALSE; - } - if(apt_text_size_value_insert(&multipart_content->stream,body->length) == FALSE) { - return FALSE; - } - if(apt_text_eol_insert(&multipart_content->stream) == FALSE) { - return FALSE; - } - } - - /* insert empty line */ - if(apt_text_eol_insert(&multipart_content->stream) == FALSE) { - return FALSE; - } - - /* insert body */ - if(body) { - if(apt_text_string_insert(&multipart_content->stream,body) == FALSE) { - return FALSE; - } - } - return TRUE; -} - -/** Finalize multipart content generation */ -APT_DECLARE(apt_str_t*) apt_multipart_content_finalize(apt_multipart_content_t *multipart_content) -{ - apt_text_stream_t *stream = &multipart_content->stream; - /* insert preceding end-of-line */ - if(apt_text_eol_insert(&multipart_content->stream) == FALSE) { - return NULL; - } - /* insert hyphens */ - if(apt_text_string_insert(&multipart_content->stream,&multipart_content->hyphens) == FALSE) { - return NULL; - } - /* insert boundary */ - if(apt_text_string_insert(&multipart_content->stream,&multipart_content->boundary) == FALSE) { - return NULL; - } - /* insert final hyphens */ - if(apt_text_string_insert(&multipart_content->stream,&multipart_content->hyphens) == FALSE) { - return NULL; - } - if(apt_text_eol_insert(&multipart_content->stream) == FALSE) { - return NULL; - } - - stream->text.length = stream->pos - stream->text.buf; - stream->text.buf[stream->text.length] = '\0'; - return &stream->text; -} - - -/** Assign body to multipart content to get (parse) each content part from */ -APT_DECLARE(apt_multipart_content_t*) apt_multipart_content_assign(const apt_str_t *body, const apt_str_t *boundary, apr_pool_t *pool) -{ - apt_multipart_content_t *multipart_content = apr_palloc(pool,sizeof(apt_multipart_content_t)); - multipart_content->pool = pool; - - if(!body) { - return FALSE; - } - - if(boundary) { - multipart_content->boundary = *boundary; - } - else { - apt_string_reset(&multipart_content->boundary); - } - - apt_string_reset(&multipart_content->hyphens); - apt_text_stream_init(&multipart_content->stream,body->buf,body->length); - return multipart_content; -} - -static APR_INLINE void apt_content_part_reset(apt_content_part_t *content_part) -{ - apt_header_section_init(&content_part->header); - apt_string_reset(&content_part->body); - content_part->type = NULL; - content_part->id = NULL; - content_part->length = NULL; -} - -/** Get the next content part */ -APT_DECLARE(apt_bool_t) apt_multipart_content_get(apt_multipart_content_t *multipart_content, apt_content_part_t *content_part, apt_bool_t *is_final) -{ - apt_str_t boundary; - apt_header_field_t *header_field; - apt_text_stream_t *stream = &multipart_content->stream; - - if(!content_part || !is_final) { - return FALSE; - } - *is_final = FALSE; - apt_content_part_reset(content_part); - - /* skip preamble */ - apt_text_skip_to_char(stream,'-'); - if(apt_text_is_eos(stream) == TRUE) { - return FALSE; - } - - /* skip initial hyphens */ - apt_text_chars_skip(stream,'-'); - if(apt_text_is_eos(stream) == TRUE) { - return FALSE; - } - - /* read line and the boundary */ - if(apt_text_line_read(stream,&boundary) == FALSE) { - return FALSE; - } - - /* remove optional trailing spaces */ - while(boundary.length && boundary.buf[boundary.length-1] == APT_TOKEN_SP) boundary.length--; - - /* check whether this is the final boundary */ - if(boundary.length >= 2) { - if(boundary.buf[boundary.length-1] == '-' && boundary.buf[boundary.length-2] == '-') { - /* final boundary */ - boundary.length -= 2; - *is_final = TRUE; - } - } - - /* compare boundaries */ - if(apt_string_is_empty(&multipart_content->boundary) == TRUE) { - /* no boundary was specified from user space, - learn boundary from the content */ - multipart_content->boundary = boundary; - } - else { - if(apt_string_compare(&multipart_content->boundary,&boundary) == FALSE) { - /* invalid boundary */ - return FALSE; - } - } - - if(*is_final == TRUE) { - /* final boundary => return TRUE, content remains empty */ - return TRUE; - } - - /* read header fields */ - if(apt_header_section_parse(&content_part->header,stream,multipart_content->pool) == FALSE) { - return FALSE; - } - - for(header_field = APR_RING_FIRST(&content_part->header.ring); - header_field != APR_RING_SENTINEL(&content_part->header.ring, apt_header_field_t, link); - header_field = APR_RING_NEXT(header_field, link)) { - if(strncmp(header_field->name.buf,CONTENT_LENGTH_HEADER,header_field->name.length) == 0) { - content_part->length = &header_field->value; - } - else if(strncmp(header_field->name.buf,CONTENT_TYPE_HEADER,header_field->name.length) == 0) { - content_part->type = &header_field->value; - } - else if(strncmp(header_field->name.buf,CONTENT_ID_HEADER,header_field->name.length) == 0) { - content_part->id = &header_field->value; - } - } - - if(content_part->length && apt_string_is_empty(content_part->length) == FALSE) { - apr_size_t length = atoi(content_part->length->buf); - if(length + stream->pos > stream->end) { - return FALSE; - } - - /* read content */ - apt_string_assign_n(&content_part->body,stream->pos,length,multipart_content->pool); - stream->pos += length; - } - - return TRUE; -} diff --git a/libs/unimrcp/libs/apr-toolkit/src/apt_net.c b/libs/unimrcp/libs/apr-toolkit/src/apt_net.c deleted file mode 100644 index 398c71a99c2..00000000000 --- a/libs/unimrcp/libs/apr-toolkit/src/apt_net.c +++ /dev/null @@ -1,153 +0,0 @@ -/* - * Copyright 2008-2014 Arsen Chaloyan - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - * - * $Id: apt_net.c 2136 2014-07-04 06:33:36Z achaloyan@gmail.com $ - */ - -#include -#include "apt_net.h" -#include "apt_log.h" - -/** Get the IP address (in numeric address string format) by hostname */ -apt_bool_t apt_ip_get(char **addr, apr_pool_t *pool) -{ - apr_sockaddr_t *sockaddr = NULL; - char hostname[APRMAXHOSTLEN+1]; - if(apr_gethostname(hostname,sizeof(hostname),pool) != APR_SUCCESS) { - return FALSE; - } - if(apr_sockaddr_info_get(&sockaddr,hostname,APR_INET,0,0,pool) != APR_SUCCESS) { - return FALSE; - } - if(apr_sockaddr_ip_get(addr,sockaddr) != APR_SUCCESS) { - return FALSE; - } - return TRUE; -} - -#ifdef WIN32 -#include -#pragma comment(lib, "IPHLPAPI.lib") -#else -#include -#include -#endif - -/** Get the IP address (in numeric address string format) by network interface name */ -apt_bool_t apt_ip_get_by_iface(const char *iface_name, char **addr, apr_pool_t *pool) -{ - apt_bool_t status = FALSE; -#ifdef WIN32 - /* See the usage of GetAdaptersInfo(). - * http://msdn.microsoft.com/en-us/library/windows/desktop/aa366314%28v=vs.85%29.aspx - */ - IP_ADAPTER_INFO *pAdapterInfo; - PIP_ADAPTER_INFO pAdapter; - ULONG ulOutBufLen; - DWORD dwRetVal; - - pAdapterInfo = (IP_ADAPTER_INFO *) malloc(sizeof(IP_ADAPTER_INFO)); - ulOutBufLen = sizeof(IP_ADAPTER_INFO); - - /* Make an initial call to GetAdaptersInfo to get the size needed into the ulOutBufLen variable. */ - if(GetAdaptersInfo(pAdapterInfo, &ulOutBufLen) != ERROR_SUCCESS) { - free(pAdapterInfo); - pAdapterInfo = (IP_ADAPTER_INFO *) malloc(ulOutBufLen); - } - - /* Make a second call to GetAdaptersInfo, passing pAdapterInfo and ulOutBufLen as parameters. */ - if((dwRetVal = GetAdaptersInfo(pAdapterInfo, &ulOutBufLen)) != ERROR_SUCCESS) { - apt_log(APT_LOG_MARK,APT_PRIO_WARNING,"Failed to Get Adapters Info %d", dwRetVal); - return FALSE; - } - - /* Walk through linked list, maintaining head pointer. */ - pAdapter = pAdapterInfo; - while(pAdapter) { - /* Match human readable description with specified name. */ - if(strcasecmp(pAdapter->Description,iface_name) == 0) { - *addr = apr_pstrdup(pool,pAdapter->IpAddressList.IpAddress.String); - status = TRUE; - break; - } - - pAdapter = pAdapter->Next; - } - - if (pAdapterInfo) - free(pAdapterInfo); - -#else - - struct ifaddrs *ifaddr, *ifa; - int family, n; - char host[NI_MAXHOST]; - - if(getifaddrs(&ifaddr) == -1) { - apt_log(APT_LOG_MARK,APT_PRIO_WARNING,"Failed to Get Interfaces"); - return FALSE; - } - - /* Walk through linked list, maintaining head pointer. */ - for(ifa = ifaddr, n = 0; ifa != NULL; ifa = ifa->ifa_next, n++) { - if(ifa->ifa_addr == NULL) continue; - - family = ifa->ifa_addr->sa_family; - if(family == AF_INET || family == AF_INET6) { - if(strcasecmp(ifa->ifa_name,iface_name) == 0) { - if(getnameinfo(ifa->ifa_addr, - (family == AF_INET) ? sizeof(struct sockaddr_in) : - sizeof(struct sockaddr_in6), - host, NI_MAXHOST, - NULL, 0, NI_NUMERICHOST) == 0) { - *addr = apr_pstrdup(pool,host); - status = TRUE; - } - else { - apt_log(APT_LOG_MARK,APT_PRIO_WARNING,"Failed to Get Name Info"); - } - break; - } - } - } - - freeifaddrs(ifaddr); -#endif - - if(status == TRUE) { - apt_log(APT_LOG_MARK,APT_PRIO_INFO,"Found Address %s by Interface [%s]", *addr, iface_name); - } - else { - apt_log(APT_LOG_MARK,APT_PRIO_WARNING,"No Such Interface Found [%s]", iface_name); - } - return status; -} - -/** Seconds from Jan 1 1900 to Jan 1 1970 */ -#define NTP_TIME_OFFSET 2208988800UL - -/** Get current NTP time */ -void apt_ntp_time_get(apr_uint32_t *sec, apr_uint32_t *frac) -{ - apr_uint32_t t; - apr_uint32_t usec; - - apr_time_t now = apr_time_now(); - *sec = (apr_uint32_t)apr_time_sec(now) + NTP_TIME_OFFSET; - - usec = (apr_uint32_t) apr_time_usec(now); - t = (usec * 1825) >> 5; - *frac = ((usec << 12) + (usec << 8) - t); -} diff --git a/libs/unimrcp/libs/apr-toolkit/src/apt_nlsml_doc.c b/libs/unimrcp/libs/apr-toolkit/src/apt_nlsml_doc.c deleted file mode 100644 index d6c866c0b68..00000000000 --- a/libs/unimrcp/libs/apr-toolkit/src/apt_nlsml_doc.c +++ /dev/null @@ -1,569 +0,0 @@ -/* - * Copyright 2008-2014 Arsen Chaloyan - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - * - * $Id: apt_nlsml_doc.c 2177 2014-09-12 05:36:20Z achaloyan@gmail.com $ - */ - -#include -#ifdef WIN32 -#pragma warning(disable: 4127) -#endif -#include - -#include "apt_nlsml_doc.h" -#include "apt_log.h" - -/** NLSML result */ -struct nlsml_result_t -{ - /** List of interpretations */ - APR_RING_HEAD(apt_ir_head_t, nlsml_interpretation_t) interpretations; - /** List of enrollment results */ - APR_RING_HEAD(apt_er_head_t, nlsml_enrollment_result_t) enrollment_results; - /** List of verification results */ - APR_RING_HEAD(apt_vr_head_t, nlsml_verification_result_t) verification_results; - - /** Optional grammar attribute */ - const char *grammar; -}; - -/** NLSML instance */ -struct nlsml_instance_t -{ - /** Ring entry */ - APR_RING_ENTRY(nlsml_instance_t) link; - - /** Instance element */ - apr_xml_elem *elem; -}; - -/** NLSML input */ -struct nlsml_input_t -{ - /** Input element */ - apr_xml_elem *elem; - /** Input mode attribute [default: "speech"] */ - const char *mode; - /** Confidence attribute [default: 1.0] */ - float confidence; - /** Timestamp-start attribute */ - const char *timestamp_start; - /** Timestamp-end attribute */ - const char *timestamp_end; -}; - -/** NLSML interpretation */ -struct nlsml_interpretation_t -{ - /** Ring entry */ - APR_RING_ENTRY(nlsml_interpretation_t) link; - - /** List of instances */ - APR_RING_HEAD(apt_head_t, nlsml_instance_t) instances; - /** Input [0..1] */ - nlsml_input_t *input; - - /** Confidence attribute [default: 1.0] */ - float confidence; - /** Optional grammar attribute */ - const char *grammar; -}; - -struct nlsml_enrollment_result_t -{ - /** Ring entry */ - APR_RING_ENTRY(nlsml_enrollment_result_t) link; -}; - -struct nlsml_verification_result_t -{ - /** Ring entry */ - APR_RING_ENTRY(nlsml_verification_result_t) link; -}; - -/** Load NLSML document */ -static apr_xml_doc* nlsml_doc_load(const char *data, apr_size_t length, apr_pool_t *pool) -{ - apr_xml_parser *parser; - apr_xml_doc *doc = NULL; - const apr_xml_elem *root; - - if(!data || !length) { - apt_log(APT_LOG_MARK,APT_PRIO_WARNING,"No NLSML data available"); - return NULL; - } - - /* create XML parser */ - parser = apr_xml_parser_create(pool); - if(apr_xml_parser_feed(parser,data,length) != APR_SUCCESS) { - apt_log(APT_LOG_MARK,APT_PRIO_WARNING,"Failed to feed NLSML input to the parser"); - return NULL; - } - - /* done with XML tree creation */ - if(apr_xml_parser_done(parser,&doc) != APR_SUCCESS) { - apt_log(APT_LOG_MARK,APT_PRIO_WARNING,"Failed to terminate NLSML parsing"); - return NULL; - } - - if(!doc || !doc->root) { - apt_log(APT_LOG_MARK,APT_PRIO_WARNING,"No NLSML root element"); - return NULL; - } - root = doc->root; - - /* NLSML validity check: root element must be */ - if(strcmp(root->name,"result") != 0) { - apt_log(APT_LOG_MARK,APT_PRIO_WARNING,"Unexpected NLSML root element <%s>",root->name); - return NULL; - } - - return doc; -} - -/** Parse confidence value */ -static float nlsml_confidence_parse(const char *str) -{ - float confidence = (float) atof(str); - if(confidence > 1.0) - confidence /= 100; - - return confidence; -} - -/** Parse element */ -static nlsml_instance_t* nlsml_instance_parse(apr_xml_elem *elem, apr_pool_t *pool) -{ - /* Initialize instance */ - nlsml_instance_t *instance = apr_palloc(pool, sizeof(*instance)); - APR_RING_ELEM_INIT(instance,link); - instance->elem = elem; - - return instance; -} - -/** Parse element */ -static nlsml_input_t* nlsml_input_parse(apr_xml_elem *elem, apr_pool_t *pool) -{ - const apr_xml_attr *xml_attr; - /* Initialize input */ - nlsml_input_t *input = apr_palloc(pool, sizeof(*input)); - input->elem = elem; - input->mode = "speech"; - input->confidence = 1.0; - input->timestamp_start = NULL; - input->timestamp_end = NULL; - - /* Find input attributes */ - for(xml_attr = elem->attr; xml_attr; xml_attr = xml_attr->next) { - if(strcasecmp(xml_attr->name, "mode") == 0) { - input->mode = xml_attr->value; - } - else if(strcasecmp(xml_attr->name, "confidence") == 0) { - input->confidence = nlsml_confidence_parse(xml_attr->value); - } - else if(strcasecmp(xml_attr->name, "timestamp-start") == 0) { - input->timestamp_start = xml_attr->value; - } - else if(strcasecmp(xml_attr->name, "timestamp-end") == 0) { - input->timestamp_end = xml_attr->value; - } - else { - apt_log(APT_LOG_MARK,APT_PRIO_WARNING,"Unknown attribute '%s' for <%s>", xml_attr->name, elem->name); - } - } - - return input; -} - -/** Parse element */ -static nlsml_interpretation_t* nlsml_interpretation_parse(apr_xml_elem *elem, apr_pool_t *pool) -{ - apr_xml_elem *child_elem; - const apr_xml_attr *xml_attr; - nlsml_instance_t *instance; - nlsml_input_t *input; - - /* Initialize interpretation */ - nlsml_interpretation_t *interpretation = apr_palloc(pool, sizeof(*interpretation)); - APR_RING_ELEM_INIT(interpretation,link); - interpretation->grammar = NULL; - interpretation->confidence = 1.0; - interpretation->input = NULL; - APR_RING_INIT(&interpretation->instances, nlsml_instance_t, link); - - /* Find optional grammar and confidence attributes */ - for(xml_attr = elem->attr; xml_attr; xml_attr = xml_attr->next) { - if(strcasecmp(xml_attr->name, "grammar") == 0) { - interpretation->grammar = xml_attr->value; - } - else if(strcasecmp(xml_attr->name, "confidence") == 0) { - interpretation->confidence = nlsml_confidence_parse(xml_attr->value); - } - else { - apt_log(APT_LOG_MARK,APT_PRIO_WARNING,"Unknown attribute '%s' for <%s>", xml_attr->name, elem->name); - } - } - - /* Find input and instance elements */ - for(child_elem = elem->first_child; child_elem; child_elem = child_elem->next) { - if(strcasecmp(child_elem->name, "input") == 0) { - input = nlsml_input_parse(child_elem, pool); - if(input) { - interpretation->input = input; - } - } - else if(strcasecmp(child_elem->name, "instance") == 0) { - instance = nlsml_instance_parse(child_elem, pool); - if(instance) { - APR_RING_INSERT_TAIL(&interpretation->instances, instance, nlsml_instance_t, link); - } - } - else { - apt_log(APT_LOG_MARK,APT_PRIO_WARNING,"Unknown child element <%s> for <%s>", child_elem->name, elem->name); - } - } - - return interpretation; -} - -/** Parse element */ -static nlsml_enrollment_result_t* nlsml_enrollment_result_parse(const apr_xml_elem *elem, apr_pool_t *pool) -{ - /* To be done */ - return NULL; -} - -/** Parse element */ -static nlsml_verification_result_t* nlsml_verification_result_parse(const apr_xml_elem *elem, apr_pool_t *pool) -{ - /* To be done */ - return NULL; -} - -/** Parse NLSML result */ -APT_DECLARE(nlsml_result_t*) nlsml_result_parse(const char *data, apr_size_t length, apr_pool_t *pool) -{ - nlsml_result_t *result; - apr_xml_elem *root; - apr_xml_elem *child_elem; - const apr_xml_attr *xml_attr; - nlsml_interpretation_t *interpretation; - nlsml_enrollment_result_t *enrollment_result; - nlsml_verification_result_t *verification_result; - apr_xml_doc *doc; - /* Load XML document */ - doc = nlsml_doc_load(data, length, pool); - if(!doc) - return NULL; - - root = doc->root; - - /* Initialize result */ - result = apr_palloc(pool, sizeof(*result)); - APR_RING_INIT(&result->interpretations, nlsml_interpretation_t, link); - APR_RING_INIT(&result->enrollment_results, nlsml_enrollment_result_t, link); - APR_RING_INIT(&result->verification_results, nlsml_verification_result_t, link); - result->grammar = NULL; - - /* Find optional grammar attribute */ - for(xml_attr = root->attr; xml_attr; xml_attr = xml_attr->next) { - if(strcasecmp(xml_attr->name, "grammar") == 0) { - result->grammar = xml_attr->value; - } - else { - apt_log(APT_LOG_MARK,APT_PRIO_WARNING,"Unknown attribute '%s' for <%s>", xml_attr->name, root->name); - } - } - - /* Find interpretation, enrollment-result, or verification-result elements */ - for(child_elem = root->first_child; child_elem; child_elem = child_elem->next) { - if(strcasecmp(child_elem->name, "interpretation") == 0) { - interpretation = nlsml_interpretation_parse(child_elem, pool); - if(interpretation) { - APR_RING_INSERT_TAIL(&result->interpretations, interpretation, nlsml_interpretation_t, link); - } - } - else if(strcasecmp(child_elem->name, "enrollment-result") == 0) { - enrollment_result = nlsml_enrollment_result_parse(child_elem, pool); - if(enrollment_result) { - APR_RING_INSERT_TAIL(&result->enrollment_results, enrollment_result, nlsml_enrollment_result_t, link); - } - } - else if(strcasecmp(child_elem->name, "verification-result") == 0) { - verification_result = nlsml_verification_result_parse(child_elem, pool); - if(verification_result) { - APR_RING_INSERT_TAIL(&result->verification_results, verification_result, nlsml_verification_result_t, link); - } - } - else { - apt_log(APT_LOG_MARK,APT_PRIO_WARNING,"Unknown child element <%s> for <%s>", child_elem->name, root->name); - } - } - - if(APR_RING_EMPTY(&result->interpretations, nlsml_interpretation_t, link) && - APR_RING_EMPTY(&result->enrollment_results, nlsml_enrollment_result_t, link) && - APR_RING_EMPTY(&result->verification_results, nlsml_verification_result_t, link)) { - /* at least one of , , MUST be specified */ - apt_log(APT_LOG_MARK,APT_PRIO_WARNING,"Invalid NLSML document: at least one child element MUST be specified for <%s>", root->name); - } - - return result; -} - -/** Trace NLSML result (for debug purposes only) */ -APT_DECLARE(void) nlsml_result_trace(const nlsml_result_t *result, apr_pool_t *pool) -{ - int interpretation_count; - nlsml_interpretation_t *interpretation; - int instance_count; - nlsml_instance_t *instance; - nlsml_input_t *input; - const char *instance_data; - const char *input_data; - const char *timestamp_start; - const char *timestamp_end; - - if(result->grammar) - apt_log(APT_LOG_MARK,APT_PRIO_INFO,"Result.grammar: %s", result->grammar); - - interpretation_count = 0; - interpretation = nlsml_first_interpretation_get(result); - while(interpretation) { - apt_log(APT_LOG_MARK,APT_PRIO_INFO,"Interpretation[%d].confidence: %.2f", interpretation_count, nlsml_interpretation_confidence_get(interpretation)); - apt_log(APT_LOG_MARK,APT_PRIO_INFO,"Interpretation[%d].grammar: %s", interpretation_count, nlsml_interpretation_grammar_get(interpretation)); - - instance_count = 0; - instance = nlsml_interpretation_first_instance_get(interpretation); - while(instance) { - nlsml_instance_swi_suppress(instance); - instance_data = nlsml_instance_content_generate(instance,pool); - apt_log(APT_LOG_MARK,APT_PRIO_INFO,"Interpretation[%d].instance[%d]: %s", interpretation_count, instance_count, instance_data); - - instance_count++; - instance = nlsml_interpretation_next_instance_get(interpretation, instance); - } - - input = nlsml_interpretation_input_get(interpretation); - if(input) { - input_data = nlsml_input_content_generate(input,pool); - timestamp_start = nlsml_input_timestamp_start_get(input); - timestamp_end = nlsml_input_timestamp_end_get(input); - apt_log(APT_LOG_MARK,APT_PRIO_INFO,"Interpretation[%d].input: %s", interpretation_count, input_data); - apt_log(APT_LOG_MARK,APT_PRIO_INFO,"Interpretation[%d].input.mode: %s", interpretation_count, nlsml_input_mode_get(input)); - apt_log(APT_LOG_MARK,APT_PRIO_INFO,"Interpretation[%d].input.confidence: %.2f", interpretation_count, nlsml_input_confidence_get(input)); - if(timestamp_start) - apt_log(APT_LOG_MARK,APT_PRIO_INFO,"Interpretation[%d].input.timestamp-start: %s", interpretation_count, timestamp_start); - if(timestamp_end) - apt_log(APT_LOG_MARK,APT_PRIO_INFO,"Interpretation[%d].input.timestamp-end: %s", interpretation_count, timestamp_end); - } - - interpretation_count++; - interpretation = nlsml_next_interpretation_get(result, interpretation); - } -} - -/** Get first interpretation */ -APT_DECLARE(nlsml_interpretation_t*) nlsml_first_interpretation_get(const nlsml_result_t *result) -{ - nlsml_interpretation_t *first_interpretation = APR_RING_FIRST(&result->interpretations); - if(first_interpretation == APR_RING_SENTINEL(&result->interpretations, nlsml_interpretation_t, link)) - return NULL; - return first_interpretation; -} - -/** Get next interpretation */ -APT_DECLARE(nlsml_interpretation_t*) nlsml_next_interpretation_get(const nlsml_result_t *result, const nlsml_interpretation_t *interpretation) -{ - nlsml_interpretation_t *next_interpretation = APR_RING_NEXT(interpretation, link); - if(next_interpretation == APR_RING_SENTINEL(&result->interpretations, nlsml_interpretation_t, link)) - return NULL; - return next_interpretation; -} - -/** Get first enrollment result */ -APT_DECLARE(nlsml_enrollment_result_t*) nlsml_first_enrollment_result_get(const nlsml_result_t *result) -{ - nlsml_enrollment_result_t *first_enrollment_result = APR_RING_FIRST(&result->enrollment_results); - if(first_enrollment_result == APR_RING_SENTINEL(&result->enrollment_results, nlsml_enrollment_result_t, link)) - return NULL; - return first_enrollment_result; -} - -/** Get next enrollment result */ -APT_DECLARE(nlsml_enrollment_result_t*) nlsml_next_enrollment_result_get(const nlsml_result_t *result, const nlsml_enrollment_result_t *enrollment_result) -{ - nlsml_enrollment_result_t *next_enrollment_result = APR_RING_NEXT(enrollment_result, link); - if(next_enrollment_result == APR_RING_SENTINEL(&result->enrollment_results, nlsml_enrollment_result_t, link)) - return NULL; - return next_enrollment_result; -} - -/** Get first verification result */ -APT_DECLARE(nlsml_verification_result_t*) nlsml_first_verification_result_get(const nlsml_result_t *result) -{ - nlsml_verification_result_t *first_verification_result = APR_RING_FIRST(&result->verification_results); - if(first_verification_result == APR_RING_SENTINEL(&result->verification_results, nlsml_verification_result_t, link)) - return NULL; - return first_verification_result; -} - -/** Get next verification result */ -APT_DECLARE(nlsml_verification_result_t*) nlsml_next_verification_result_get(const nlsml_result_t *result, const nlsml_verification_result_t *verification_result) -{ - nlsml_verification_result_t *next_verification_result = APR_RING_NEXT(verification_result, link); - if(next_verification_result == APR_RING_SENTINEL(&result->verification_results, nlsml_verification_result_t, link)) - return NULL; - return next_verification_result; -} - -/** Get grammar attribute of NLSML result */ -APT_DECLARE(const char*) nlsml_result_grammar_get(const nlsml_result_t *result) -{ - return result->grammar; -} - -/** Get first instance */ -APT_DECLARE(nlsml_instance_t*) nlsml_interpretation_first_instance_get(const nlsml_interpretation_t *interpretation) -{ - nlsml_instance_t *first_instance = APR_RING_FIRST(&interpretation->instances); - if(first_instance == APR_RING_SENTINEL(&interpretation->instances, nlsml_instance_t, link)) - return NULL; - return first_instance; -} - -/** Get next instance */ -APT_DECLARE(nlsml_instance_t*) nlsml_interpretation_next_instance_get(const nlsml_interpretation_t *interpretation, const nlsml_instance_t *instance) -{ - nlsml_instance_t *next_instance = APR_RING_NEXT(instance, link); - if(next_instance == APR_RING_SENTINEL(&interpretation->instances, nlsml_instance_t, link)) - return NULL; - return next_instance; -} - -/** Get input */ -APT_DECLARE(nlsml_input_t*) nlsml_interpretation_input_get(const nlsml_interpretation_t *interpretation) -{ - return interpretation->input; -} - -/** Get interpretation confidence */ -APT_DECLARE(float) nlsml_interpretation_confidence_get(const nlsml_interpretation_t *interpretation) -{ - return interpretation->confidence; -} - -/** Get interpretation grammar */ -APT_DECLARE(const char*) nlsml_interpretation_grammar_get(const nlsml_interpretation_t *interpretation) -{ - return interpretation->grammar; -} - -/** Get instance element */ -APT_DECLARE(const apr_xml_elem*) nlsml_instance_elem_get(const nlsml_instance_t *instance) -{ - return instance->elem; -} - -/** Suppress SWI elements (normalize instance) */ -APT_DECLARE(apt_bool_t) nlsml_instance_swi_suppress(nlsml_instance_t *instance) -{ - apr_xml_elem *child_elem; - apr_xml_elem *prev_elem = NULL; - apr_xml_elem *swi_literal = NULL; - apt_bool_t remove; - if(!instance->elem) - return FALSE; - - for(child_elem = instance->elem->first_child; child_elem; child_elem = child_elem->next) { - remove = FALSE; - if(strcasecmp(child_elem->name,"SWI_literal") == 0) { - swi_literal = child_elem; - remove = TRUE; - } - else if(strcasecmp(child_elem->name,"SWI_meaning") == 0) { - remove = TRUE; - } - - if(remove == TRUE) { - if(child_elem == instance->elem->first_child) { - instance->elem->first_child = child_elem->next; - } - else if(prev_elem) { - prev_elem->next = child_elem->next; - } - } - - prev_elem = child_elem; - } - - if(APR_XML_ELEM_IS_EMPTY(instance->elem) && swi_literal) { - instance->elem->first_cdata = swi_literal->first_cdata; - } - - return TRUE; -} - -/** Generate a plain text content of the instance element */ -APT_DECLARE(const char*) nlsml_instance_content_generate(const nlsml_instance_t *instance, apr_pool_t *pool) -{ - const char *buf = NULL; - if(instance->elem) { - apr_size_t size; - apr_xml_to_text(pool, instance->elem, APR_XML_X2T_INNER, NULL, NULL, &buf, &size); - } - return buf; -} - -/** Get input element */ -APT_DECLARE(const apr_xml_elem*) nlsml_input_elem_get(const nlsml_input_t *input) -{ - return input->elem; -} - -/** Generate a plain text content of the input element */ -APT_DECLARE(const char*) nlsml_input_content_generate(const nlsml_input_t *input, apr_pool_t *pool) -{ - const char *buf = NULL; - if(input->elem) { - apr_size_t size; - apr_xml_to_text(pool, input->elem, APR_XML_X2T_INNER, NULL, NULL, &buf, &size); - } - return buf; -} - -/** Get input mode */ -APT_DECLARE(const char*) nlsml_input_mode_get(const nlsml_input_t *input) -{ - return input->mode; -} - -/** Get input confidence */ -APT_DECLARE(float) nlsml_input_confidence_get(const nlsml_input_t *input) -{ - return input->confidence; -} - -/** Get start of input timestamp */ -APT_DECLARE(const char*) nlsml_input_timestamp_start_get(const nlsml_input_t *input) -{ - return input->timestamp_start; -} - -/** Get end of input timestamp */ -APT_DECLARE(const char*) nlsml_input_timestamp_end_get(const nlsml_input_t *input) -{ - return input->timestamp_end; -} diff --git a/libs/unimrcp/libs/apr-toolkit/src/apt_obj_list.c b/libs/unimrcp/libs/apr-toolkit/src/apt_obj_list.c deleted file mode 100644 index 83f64b0c711..00000000000 --- a/libs/unimrcp/libs/apr-toolkit/src/apt_obj_list.c +++ /dev/null @@ -1,153 +0,0 @@ -/* - * Copyright 2008-2014 Arsen Chaloyan - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - * - * $Id: apt_obj_list.c 2136 2014-07-04 06:33:36Z achaloyan@gmail.com $ - */ - -#ifdef WIN32 -#pragma warning(disable: 4127) -#endif -#include -#include "apt_obj_list.h" - -struct apt_list_elem_t { - APR_RING_ENTRY(apt_list_elem_t) link; - void *obj; -}; - -struct apt_obj_list_t { - APR_RING_HEAD(apt_list_head_t, apt_list_elem_t) head; - apr_pool_t *pool; -}; - - - -APT_DECLARE(apt_obj_list_t*) apt_list_create(apr_pool_t *pool) -{ - apt_obj_list_t *list = apr_palloc(pool, sizeof(apt_obj_list_t)); - list->pool = pool; - APR_RING_INIT(&list->head, apt_list_elem_t, link); - return list; -} - -APT_DECLARE(void) apt_list_destroy(apt_obj_list_t *list) -{ - /* nothing to do, the list is allocated from the pool */ -} - -APT_DECLARE(apt_list_elem_t*) apt_list_push_back(apt_obj_list_t *list, void *obj, apr_pool_t *pool) -{ - apt_list_elem_t *elem = apr_palloc(pool,sizeof(apt_list_elem_t)); - elem->obj = obj; - - APR_RING_INSERT_TAIL(&list->head,elem,apt_list_elem_t,link); - return elem; -} - -APT_DECLARE(void*) apt_list_pop_front(apt_obj_list_t *list) -{ - apt_list_elem_t *elem; - if(APR_RING_EMPTY(&list->head,apt_list_elem_t,link)) { - return NULL; - } - elem = APR_RING_FIRST(&list->head); - APR_RING_REMOVE(elem,link); - return elem->obj; -} - -APT_DECLARE(void*) apt_list_head(const apt_obj_list_t *list) -{ - apt_list_elem_t *elem; - if(APR_RING_EMPTY(&list->head,apt_list_elem_t,link)) { - return NULL; - } - elem = APR_RING_FIRST(&list->head); - return elem->obj; -} - -APT_DECLARE(void*) apt_obj_list_tail(const apt_obj_list_t *list) -{ - apt_list_elem_t *elem; - if(APR_RING_EMPTY(&list->head,apt_list_elem_t,link)) { - return NULL; - } - elem = APR_RING_LAST(&list->head); - return elem->obj; -} - -APT_DECLARE(apt_list_elem_t*) apt_list_first_elem_get(const apt_obj_list_t *list) -{ - if(APR_RING_EMPTY(&list->head,apt_list_elem_t,link)) { - return NULL; - } - return APR_RING_FIRST(&list->head); -} - -APT_DECLARE(apt_list_elem_t*) apt_list_last_elem_get(const apt_obj_list_t *list) -{ - if(APR_RING_EMPTY(&list->head,apt_list_elem_t,link)) { - return NULL; - } - return APR_RING_LAST(&list->head); -} - -APT_DECLARE(apt_list_elem_t*) apt_list_next_elem_get(const apt_obj_list_t *list, apt_list_elem_t *elem) -{ - apt_list_elem_t *next_elem = APR_RING_NEXT(elem,link); - if(next_elem == APR_RING_SENTINEL(&list->head,apt_list_elem_t,link)) { - next_elem = NULL; - } - return next_elem; -} - -APT_DECLARE(apt_list_elem_t*) apt_list_prev_elem_get(const apt_obj_list_t *list, apt_list_elem_t *elem) -{ - apt_list_elem_t *prev_elem = APR_RING_PREV(elem,link); - if(prev_elem == APR_RING_SENTINEL(&list->head,apt_list_elem_t,link)) { - prev_elem = NULL; - } - return prev_elem; -} - -APT_DECLARE(apt_list_elem_t*) apt_list_elem_insert(apt_obj_list_t *list, apt_list_elem_t *elem, void *obj, apr_pool_t *pool) -{ - apt_list_elem_t *new_elem = apr_palloc(pool,sizeof(apt_list_elem_t)); - new_elem->obj = obj; - APR_RING_INSERT_BEFORE(elem,new_elem,link); - return new_elem; -} - -APT_DECLARE(apt_list_elem_t*) apt_list_elem_remove(apt_obj_list_t *list, apt_list_elem_t *elem) -{ - apt_list_elem_t *next_elem = APR_RING_NEXT(elem,link); - APR_RING_REMOVE(elem,link); - if(next_elem == APR_RING_SENTINEL(&list->head,apt_list_elem_t,link)) { - next_elem = NULL; - } - return next_elem; -} - -APT_DECLARE(apt_bool_t) apt_list_is_empty(const apt_obj_list_t *list) -{ - if(APR_RING_EMPTY(&list->head,apt_list_elem_t,link)) { - return TRUE; - } - return FALSE; -} - -APT_DECLARE(void*) apt_list_elem_object_get(const apt_list_elem_t *elem) -{ - return elem->obj; -} diff --git a/libs/unimrcp/libs/apr-toolkit/src/apt_pair.c b/libs/unimrcp/libs/apr-toolkit/src/apt_pair.c deleted file mode 100644 index d14ef5be98e..00000000000 --- a/libs/unimrcp/libs/apr-toolkit/src/apt_pair.c +++ /dev/null @@ -1,88 +0,0 @@ -/* - * Copyright 2008-2014 Arsen Chaloyan - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - * - * $Id: apt_pair.c 2136 2014-07-04 06:33:36Z achaloyan@gmail.com $ - */ - -#include "apt_pair.h" - -/** Create array of name-value pairs */ -APT_DECLARE(apt_pair_arr_t*) apt_pair_array_create(apr_size_t initial_size, apr_pool_t *pool) -{ - return apr_array_make(pool,(int)initial_size,sizeof(apt_pair_t)); -} - -/** Copy array of name-value pairs */ -APT_DECLARE(apt_pair_arr_t*) apt_pair_array_copy(const apt_pair_arr_t *src_arr, apr_pool_t *pool) -{ - int i; - const apt_pair_t *src_pair; - apt_pair_t *pair; - apt_pair_arr_t *arr; - if(!src_arr) { - return NULL; - } - arr = apr_array_copy(pool,src_arr); - for(i=0; inelts; i++) { - pair = &APR_ARRAY_IDX(arr,i,apt_pair_t); - src_pair = &APR_ARRAY_IDX(src_arr,i,const apt_pair_t); - apt_pair_copy(pair,src_pair,pool); - } - return arr; -} - - -/** Append name-value pair */ -APT_DECLARE(apt_bool_t) apt_pair_array_append(apt_pair_arr_t *arr, const apt_str_t *name, const apt_str_t *value, apr_pool_t *pool) -{ - apt_pair_t *pair = apr_array_push(arr); - apt_pair_init(pair); - if(name) { - apt_string_copy(&pair->name,name,pool); - } - if(value) { - apt_string_copy(&pair->value,value,pool); - } - return TRUE; -} - -/** Find name-value pair by name */ -APT_DECLARE(const apt_pair_t*) apt_pair_array_find(const apt_pair_arr_t *arr, const apt_str_t *name) -{ - int i; - apt_pair_t *pair; - for(i=0; inelts; i++) { - pair = &APR_ARRAY_IDX(arr,i,apt_pair_t); - if(apt_string_compare(&pair->name,name) == TRUE) { - return pair; - } - } - return NULL; -} - -/** Get size of pair array */ -APT_DECLARE(int) apt_pair_array_size_get(const apt_pair_arr_t *arr) -{ - return arr->nelts; -} - -/** Get name-value pair by id */ -APT_DECLARE(const apt_pair_t*) apt_pair_array_get(const apt_pair_arr_t *arr, int id) -{ - if(id < arr->nelts) { - return &APR_ARRAY_IDX(arr,id,apt_pair_t); - } - return NULL; -} diff --git a/libs/unimrcp/libs/apr-toolkit/src/apt_poller_task.c b/libs/unimrcp/libs/apr-toolkit/src/apt_poller_task.c deleted file mode 100644 index 3a20231d200..00000000000 --- a/libs/unimrcp/libs/apr-toolkit/src/apt_poller_task.c +++ /dev/null @@ -1,296 +0,0 @@ -/* - * Copyright 2008-2014 Arsen Chaloyan - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - * - * $Id: apt_poller_task.c 2224 2014-11-12 00:41:45Z achaloyan@gmail.com $ - */ - -#include "apt_poller_task.h" -#include "apt_task.h" -#include "apt_pool.h" -#include "apt_cyclic_queue.h" -#include "apt_log.h" - - -/** Poller task */ -struct apt_poller_task_t { - apr_pool_t *pool; - apt_task_t *base; - - void *obj; - apt_poll_signal_f signal_handler; - - apr_thread_mutex_t *guard; - apt_cyclic_queue_t *msg_queue; - apt_pollset_t *pollset; - apt_timer_queue_t *timer_queue; - - apr_pollfd_t *desc_arr; - apr_int32_t desc_count; - apr_int32_t desc_index; - -}; - -static apt_bool_t apt_poller_task_msg_signal(apt_task_t *task, apt_task_msg_t *msg); -static apt_bool_t apt_poller_task_run(apt_task_t *task); -static apt_bool_t apt_poller_task_on_destroy(apt_task_t *task); - - -/** Create poller task */ -APT_DECLARE(apt_poller_task_t*) apt_poller_task_create( - apr_size_t max_pollset_size, - apt_poll_signal_f signal_handler, - void *obj, - apt_task_msg_pool_t *msg_pool, - apr_pool_t *pool) -{ - apt_task_vtable_t *vtable; - apt_poller_task_t *task; - - if(!signal_handler) { - return NULL; - } - - task = apr_palloc(pool,sizeof(apt_poller_task_t)); - task->pool = pool; - task->obj = obj; - task->pollset = NULL; - task->signal_handler = signal_handler; - - task->pollset = apt_pollset_create((apr_uint32_t)max_pollset_size,pool); - if(!task->pollset) { - apt_log(APT_LOG_MARK,APT_PRIO_WARNING,"Failed to Create Pollset"); - return NULL; - } - - task->base = apt_task_create(task,msg_pool,pool); - if(!task->base) { - apt_pollset_destroy(task->pollset); - return NULL; - } - - vtable = apt_task_vtable_get(task->base); - if(vtable) { - vtable->run = apt_poller_task_run; - vtable->destroy = apt_poller_task_on_destroy; - vtable->signal_msg = apt_poller_task_msg_signal; - } - apt_task_auto_ready_set(task->base,FALSE); - - task->msg_queue = apt_cyclic_queue_create(CYCLIC_QUEUE_DEFAULT_SIZE); - apr_thread_mutex_create(&task->guard,APR_THREAD_MUTEX_UNNESTED,pool); - - task->timer_queue = apt_timer_queue_create(pool); - task->desc_arr = NULL; - task->desc_count = 0; - task->desc_index = 0; - return task; -} - -/** Destroy poller task */ -APT_DECLARE(apt_bool_t) apt_poller_task_destroy(apt_poller_task_t *task) -{ - return apt_task_destroy(task->base); -} - -/** Cleanup poller task */ -APT_DECLARE(void) apt_poller_task_cleanup(apt_poller_task_t *task) -{ - if(task->pollset) { - apt_pollset_destroy(task->pollset); - task->pollset = NULL; - } - if(task->guard) { - apr_thread_mutex_destroy(task->guard); - task->guard = NULL; - } - if(task->msg_queue) { - apt_cyclic_queue_destroy(task->msg_queue); - task->msg_queue = NULL; - } -} - -/** Virtual destroy handler */ -static apt_bool_t apt_poller_task_on_destroy(apt_task_t *base) -{ - apt_poller_task_t *task = apt_task_object_get(base); - apt_poller_task_cleanup(task); - return TRUE; -} - - -/** Start poller task */ -APT_DECLARE(apt_bool_t) apt_poller_task_start(apt_poller_task_t *task) -{ - return apt_task_start(task->base); -} - -/** Terminate poller task */ -APT_DECLARE(apt_bool_t) apt_poller_task_terminate(apt_poller_task_t *task) -{ - return apt_task_terminate(task->base,TRUE); -} - -/** Get task */ -APT_DECLARE(apt_task_t*) apt_poller_task_base_get(const apt_poller_task_t *task) -{ - return task->base; -} - -/** Get task vtable */ -APT_DECLARE(apt_task_vtable_t*) apt_poller_task_vtable_get(const apt_poller_task_t *task) -{ - return apt_task_vtable_get(task->base); -} - -/** Get external object */ -APT_DECLARE(void*) apt_poller_task_object_get(const apt_poller_task_t *task) -{ - return task->obj; -} - -/** Add descriptor to pollset */ -APT_DECLARE(apt_bool_t) apt_poller_task_descriptor_add(const apt_poller_task_t *task, const apr_pollfd_t *descriptor) -{ - if(task->pollset) { - return apt_pollset_add(task->pollset,descriptor); - } - return FALSE; -} - -/** Remove descriptor from pollset */ -APT_DECLARE(apt_bool_t) apt_poller_task_descriptor_remove(const apt_poller_task_t *task, const apr_pollfd_t *descriptor) -{ - if(task->pollset) { - apr_int32_t i = task->desc_index + 1; - for(; i < task->desc_count; i++) { - apr_pollfd_t *cur_descriptor = &task->desc_arr[i]; - if(cur_descriptor->client_data == descriptor->client_data) { - cur_descriptor->client_data = NULL; - } - } - return apt_pollset_remove(task->pollset,descriptor); - } - return FALSE; -} - -/** Create timer */ -APT_DECLARE(apt_timer_t*) apt_poller_task_timer_create( - apt_poller_task_t *task, - apt_timer_proc_f proc, - void *obj, - apr_pool_t *pool) -{ - return apt_timer_create(task->timer_queue,proc,obj,pool); -} - -static apt_bool_t apt_poller_task_wakeup_process(apt_poller_task_t *task) -{ - apt_bool_t running = TRUE; - apt_task_msg_t *msg; - - do { - apr_thread_mutex_lock(task->guard); - msg = apt_cyclic_queue_pop(task->msg_queue); - apr_thread_mutex_unlock(task->guard); - if(msg) { - apt_task_msg_process(task->base,msg); - } - else { - running = FALSE; - } - } - while(running == TRUE); - return TRUE; -} - -static apt_bool_t apt_poller_task_run(apt_task_t *base) -{ - apt_poller_task_t *task = apt_task_object_get(base); - apt_bool_t *running; - apr_status_t status; - apr_interval_time_t timeout; - apr_uint32_t queue_timeout; - apr_time_t time_now, time_last = 0; - const char *task_name; - - if(!task) { - apt_log(APT_LOG_MARK,APT_PRIO_WARNING,"Failed to Start Poller Task"); - return FALSE; - } - task_name = apt_task_name_get(task->base); - - running = apt_task_running_flag_get(task->base); - if(!running) { - return FALSE; - } - - /* explicitly indicate task is ready to process messages */ - apt_task_ready(task->base); - - while(*running) { - if(apt_timer_queue_timeout_get(task->timer_queue,&queue_timeout) == TRUE) { - timeout = (apr_interval_time_t)queue_timeout * 1000; - time_last = apr_time_now(); - apt_log(APT_LOG_MARK,APT_PRIO_DEBUG,"Wait for Messages [%s] timeout [%u]", - task_name, queue_timeout); - } - else { - timeout = -1; - apt_log(APT_LOG_MARK,APT_PRIO_DEBUG,"Wait for Messages [%s]",task_name); - } - status = apt_pollset_poll(task->pollset, timeout, &task->desc_count, (const apr_pollfd_t **) &task->desc_arr); - if(status != APR_SUCCESS && status != APR_TIMEUP) { - apt_log(APT_LOG_MARK,APT_PRIO_WARNING,"Failed to Poll [%s] status: %d",task_name,status); - continue; - } - for(task->desc_index = 0; task->desc_index < task->desc_count; task->desc_index++) { - const apr_pollfd_t *descriptor = &task->desc_arr[task->desc_index]; - if(apt_pollset_is_wakeup(task->pollset,descriptor)) { - apt_log(APT_LOG_MARK,APT_PRIO_DEBUG,"Process Poller Wakeup [%s]",task_name); - apt_poller_task_wakeup_process(task); - if(*running == FALSE) { - break; - } - continue; - } - - apt_log(APT_LOG_MARK,APT_PRIO_DEBUG,"Process Signalled Descriptor [%s]",task_name); - task->signal_handler(task->obj,descriptor); - } - - if(timeout != -1) { - time_now = apr_time_now(); - if(time_now > time_last) { - apt_timer_queue_advance(task->timer_queue,(apr_uint32_t)((time_now - time_last)/1000)); - } - } - } - - return TRUE; -} - -static apt_bool_t apt_poller_task_msg_signal(apt_task_t *base, apt_task_msg_t *msg) -{ - apt_bool_t status; - apt_poller_task_t *task = apt_task_object_get(base); - apr_thread_mutex_lock(task->guard); - status = apt_cyclic_queue_push(task->msg_queue,msg); - apr_thread_mutex_unlock(task->guard); - if(apt_pollset_wakeup(task->pollset) != TRUE) { - apt_log(APT_LOG_MARK,APT_PRIO_WARNING,"Failed to Signal Control Message"); - status = FALSE; - } - return status; -} diff --git a/libs/unimrcp/libs/apr-toolkit/src/apt_pollset.c b/libs/unimrcp/libs/apr-toolkit/src/apt_pollset.c deleted file mode 100644 index b7d8358d36f..00000000000 --- a/libs/unimrcp/libs/apr-toolkit/src/apt_pollset.c +++ /dev/null @@ -1,325 +0,0 @@ -/* - * Copyright 2008-2014 Arsen Chaloyan - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - * - * $Id: apt_pollset.c 2136 2014-07-04 06:33:36Z achaloyan@gmail.com $ - */ - -#include -#include "apt_pollset.h" -#include "apt_log.h" - -struct apt_pollset_t { - /** APR pollset */ - apr_pollset_t *base; -#ifdef WIN32 - /** Socket descriptors used for wakeup */ - apr_socket_t *wakeup_pipe[2]; -#else - /** Pipe descriptors used for wakeup */ - apr_file_t *wakeup_pipe[2]; -#endif - /** Builtin wakeup poll descriptor */ - apr_pollfd_t wakeup_pfd; - - /** Pool to allocate memory from */ - apr_pool_t *pool; -}; - -static apt_bool_t apt_wakeup_pipe_create(apt_pollset_t *pollset); -static apt_bool_t apt_wakeup_pipe_destroy(apt_pollset_t *pollset); - -/** Create interruptable pollset on top of APR pollset */ -APT_DECLARE(apt_pollset_t*) apt_pollset_create(apr_uint32_t size, apr_pool_t *pool) -{ - apt_pollset_t *pollset = apr_palloc(pool,sizeof(apt_pollset_t)); - pollset->pool = pool; - memset(&pollset->wakeup_pfd,0,sizeof(pollset->wakeup_pfd)); - - /* create pollset with max number of descriptors size+1, - where +1 is builtin wakeup descriptor */ - if(apr_pollset_create(&pollset->base,size+1,pool,0) != APR_SUCCESS) { - return NULL; - } - - /* create wakeup pipe */ - if(apt_wakeup_pipe_create(pollset) != TRUE) { - apr_pollset_destroy(pollset->base); - return NULL; - } - - /* add wakeup pipe to pollset */ - if(apr_pollset_add(pollset->base,&pollset->wakeup_pfd) != APR_SUCCESS) { - apt_wakeup_pipe_destroy(pollset); - apr_pollset_destroy(pollset->base); - return NULL; - } - return pollset; -} - -/** Destroy pollset */ -APT_DECLARE(apt_bool_t) apt_pollset_destroy(apt_pollset_t *pollset) -{ - /* remove wakeup pipe from pollset */ - apr_pollset_remove(pollset->base,&pollset->wakeup_pfd); - /* destroy wakeup pipe */ - apt_wakeup_pipe_destroy(pollset); - /* destroy pollset */ - apr_pollset_destroy(pollset->base); - return TRUE; -} - -/** Add pollset descriptor to a pollset */ -APT_DECLARE(apt_bool_t) apt_pollset_add(apt_pollset_t *pollset, const apr_pollfd_t *descriptor) -{ - return (apr_pollset_add(pollset->base,descriptor) == APR_SUCCESS) ? TRUE : FALSE; -} - -/** Remove pollset descriptor from a pollset */ -APT_DECLARE(apt_bool_t) apt_pollset_remove(apt_pollset_t *pollset, const apr_pollfd_t *descriptor) -{ - return (apr_pollset_remove(pollset->base,descriptor) == APR_SUCCESS) ? TRUE : FALSE; -} - -/** Block for activity on the descriptor(s) in a pollset */ -APT_DECLARE(apr_status_t) apt_pollset_poll( - apt_pollset_t *pollset, - apr_interval_time_t timeout, - apr_int32_t *num, - const apr_pollfd_t **descriptors) -{ - return apr_pollset_poll(pollset->base,timeout,num,descriptors); -} - -/** Interrupt the blocked poll call */ -APT_DECLARE(apt_bool_t) apt_pollset_wakeup(apt_pollset_t *pollset) -{ - apt_bool_t status = TRUE; -#ifdef WIN32 - char tmp = 0; - apr_size_t len = sizeof(tmp); - if(apr_socket_send(pollset->wakeup_pipe[1],&tmp,&len) != APR_SUCCESS) { - status = FALSE; - } -#else - if(apr_file_putc(1, pollset->wakeup_pipe[1]) != APR_SUCCESS) { - status = FALSE; - } -#endif - return status; -} - -/** Match against builtin wake up descriptor in a pollset */ -APT_DECLARE(apt_bool_t) apt_pollset_is_wakeup(apt_pollset_t *pollset, const apr_pollfd_t *descriptor) -{ - apt_bool_t status = FALSE; -#ifdef WIN32 - if(descriptor->desc.s == pollset->wakeup_pipe[0]) { - char rb[512]; - apr_size_t nr = sizeof(rb); - - /* simply read out from the input side of the pipe all the data. */ - while(apr_socket_recv(pollset->wakeup_pipe[0], rb, &nr) == APR_SUCCESS) { - if(nr != sizeof(rb)) { - break; - } - } - status = TRUE; - } -#else - if(descriptor->desc.f == pollset->wakeup_pipe[0]) { - char rb[512]; - apr_size_t nr = sizeof(rb); - - /* simply read out from the input side of the pipe all the data. */ - while(apr_file_read(pollset->wakeup_pipe[0], rb, &nr) == APR_SUCCESS) { - if(nr != sizeof(rb)) { - break; - } - } - status = TRUE; - } -#endif - return status; -} - -#ifdef WIN32 -static apr_status_t socket_pipe_create(apr_socket_t **rd, apr_socket_t **wr, apr_pool_t *pool) -{ - static int id = 0; - - apr_socket_t *ls = NULL; - apr_sockaddr_t *pa = NULL; - apr_sockaddr_t *ca = NULL; - apr_size_t nrd; - int uid[2]; - int iid[2]; - - /* Create the unique socket identifier - * so that we know the connection originated - * from us. - */ - uid[0] = getpid(); - uid[1] = id++; - if(apr_socket_create(&ls, AF_INET, SOCK_STREAM, APR_PROTO_TCP, pool) != APR_SUCCESS) { - return apr_get_netos_error(); - } - apr_socket_opt_set(ls, APR_SO_REUSEADDR, 1); - - if(apr_sockaddr_info_get(&pa,"127.0.0.1",APR_INET,0,0,pool) != APR_SUCCESS) { - apr_socket_close(ls); - return apr_get_netos_error(); - } - - if(apr_socket_bind(ls, pa) != APR_SUCCESS) { - apr_socket_close(ls); - return apr_get_netos_error(); - } - - if(apr_socket_addr_get(&ca,APR_LOCAL,ls) != APR_SUCCESS) { - apr_socket_close(ls); - return apr_get_netos_error(); - } - - if(apr_socket_listen(ls,1) != APR_SUCCESS) { - apr_socket_close(ls); - return apr_get_netos_error(); - } - - if(apr_socket_create(wr, AF_INET, SOCK_STREAM, APR_PROTO_TCP, pool) != APR_SUCCESS) { - apr_socket_close(ls); - return apr_get_netos_error(); - } - apr_socket_opt_set(*wr, APR_SO_REUSEADDR, 1); - - if(apr_socket_connect(*wr, ca) != APR_SUCCESS) { - apr_socket_close(ls); - apr_socket_close(*wr); - return apr_get_netos_error(); - } - nrd = sizeof(uid); - if(apr_socket_send(*wr, (char *)uid, &nrd) != APR_SUCCESS) { - apr_socket_close(ls); - apr_socket_close(*wr); - return apr_get_netos_error(); - } - - apr_socket_opt_set(ls, APR_SO_NONBLOCK, 0); - /* Listening socket is blocking by now. The accept should - * return immediatelly because we connected already. - */ - if(apr_socket_accept(rd, ls, pool) != APR_SUCCESS) { - apr_socket_close(ls); - apr_socket_close(*wr); - return apr_get_netos_error(); - } - - /* Put read side of the pipe to the blocking mode */ - apr_socket_opt_set(*rd, APR_SO_NONBLOCK, 0); - - for (;;) { - /* Verify the connection by reading the sent identification */ - nrd = sizeof(iid); - if(apr_socket_recv(*rd, (char *)iid, &nrd) != APR_SUCCESS) { - apr_socket_close(ls); - apr_socket_close(*wr); - apr_socket_close(*rd); - return apr_get_netos_error(); - } - if(nrd == sizeof(iid)) { - if(memcmp(uid, iid, sizeof(uid)) == 0) { - /* Wow, we recived what we sent */ - break; - } - } - } - - /* We don't need the listening socket any more */ - apr_socket_close(ls); - return APR_SUCCESS; -} - -/** Create a dummy wakeup pipe for interrupting the poller */ -static apt_bool_t apt_wakeup_pipe_create(apt_pollset_t *pollset) -{ - apr_socket_t *rd = NULL; - apr_socket_t *wr = NULL; - apr_status_t rv; - rv = socket_pipe_create(&rd,&wr,pollset->pool); - if(rv != APR_SUCCESS) { - char err_str[256]; - apr_strerror(rv,err_str,sizeof(err_str)); - apt_log(APT_LOG_MARK,APT_PRIO_WARNING,"Failed to Create Wakeup Pipe: %s",err_str); - return FALSE; - } - pollset->wakeup_pfd.reqevents = APR_POLLIN; - pollset->wakeup_pfd.desc_type = APR_POLL_SOCKET; - pollset->wakeup_pfd.desc.s = rd; - - pollset->wakeup_pipe[0] = rd; - pollset->wakeup_pipe[1] = wr; - return TRUE; -} - -/** Destroy wakeup pipe */ -static apt_bool_t apt_wakeup_pipe_destroy(apt_pollset_t *pollset) -{ - /* Close both sides of the wakeup pipe */ - if(pollset->wakeup_pipe[0]) { - apr_socket_close(pollset->wakeup_pipe[0]); - pollset->wakeup_pipe[0] = NULL; - } - if(pollset->wakeup_pipe[1]) { - apr_socket_close(pollset->wakeup_pipe[1]); - pollset->wakeup_pipe[1] = NULL; - } - return TRUE; -} - -#else - -/** Create a dummy wakeup pipe for interrupting the poller */ -static apt_bool_t apt_wakeup_pipe_create(apt_pollset_t *pollset) -{ - apr_file_t *file_in = NULL; - apr_file_t *file_out = NULL; - - if(apr_file_pipe_create(&file_in,&file_out,pollset->pool) != APR_SUCCESS) { - return FALSE; - } - pollset->wakeup_pfd.reqevents = APR_POLLIN; - pollset->wakeup_pfd.desc_type = APR_POLL_FILE; - pollset->wakeup_pfd.desc.f = file_in; - - pollset->wakeup_pipe[0] = file_in; - pollset->wakeup_pipe[1] = file_out; - return TRUE; -} - -/** Destroy wakeup pipe */ -static apt_bool_t apt_wakeup_pipe_destroy(apt_pollset_t *pollset) -{ - /* Close both sides of the wakeup pipe */ - if(pollset->wakeup_pipe[0]) { - apr_file_close(pollset->wakeup_pipe[0]); - pollset->wakeup_pipe[0] = NULL; - } - if(pollset->wakeup_pipe[1]) { - apr_file_close(pollset->wakeup_pipe[1]); - pollset->wakeup_pipe[1] = NULL; - } - return TRUE; -} - -#endif diff --git a/libs/unimrcp/libs/apr-toolkit/src/apt_pool.c b/libs/unimrcp/libs/apr-toolkit/src/apt_pool.c deleted file mode 100644 index 48ce6629036..00000000000 --- a/libs/unimrcp/libs/apr-toolkit/src/apt_pool.c +++ /dev/null @@ -1,57 +0,0 @@ -/* - * Copyright 2008-2014 Arsen Chaloyan - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - * - * $Id: apt_pool.c 2136 2014-07-04 06:33:36Z achaloyan@gmail.com $ - */ - -#include "apt_pool.h" -#include "apt_log.h" - -#define OWN_ALLOCATOR_PER_POOL - -static int apt_abort_fn(int retcode) -{ - apt_log(APT_LOG_MARK,APT_PRIO_CRITICAL,"APR Abort Called [%d]", retcode); - return 0; -} - -APT_DECLARE(apr_pool_t*) apt_pool_create() -{ - apr_pool_t *pool = NULL; - -#ifdef OWN_ALLOCATOR_PER_POOL - apr_allocator_t *allocator = NULL; - apr_thread_mutex_t *mutex = NULL; - - if(apr_allocator_create(&allocator) == APR_SUCCESS) { - if(apr_pool_create_ex(&pool,NULL,apt_abort_fn,allocator) == APR_SUCCESS) { - apr_allocator_owner_set(allocator,pool); - apr_thread_mutex_create(&mutex,APR_THREAD_MUTEX_NESTED,pool); - apr_allocator_mutex_set(allocator,mutex); - apr_pool_mutex_set(pool,mutex); - } - } -#else - apr_pool_create(&pool,NULL); -#endif - return pool; -} - -APT_DECLARE(apr_pool_t*) apt_subpool_create(apr_pool_t *parent) -{ - apr_pool_t *pool = NULL; - apr_pool_create(&pool,parent); - return pool; -} diff --git a/libs/unimrcp/libs/apr-toolkit/src/apt_string_table.c b/libs/unimrcp/libs/apr-toolkit/src/apt_string_table.c deleted file mode 100644 index 5928e38c137..00000000000 --- a/libs/unimrcp/libs/apr-toolkit/src/apt_string_table.c +++ /dev/null @@ -1,68 +0,0 @@ -/* - * Copyright 2008-2014 Arsen Chaloyan - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - * - * $Id: apt_string_table.c 2136 2014-07-04 06:33:36Z achaloyan@gmail.com $ - */ - -#include -#include "apt_string_table.h" - -/* Get the string by a given id. */ -APT_DECLARE(const apt_str_t*) apt_string_table_str_get(const apt_str_table_item_t table[], apr_size_t size, apr_size_t id) -{ - if(id < size) { - return &table[id].value; - } - return NULL; -} - -/* Find the id associated with a given string from the table */ -APT_DECLARE(apr_size_t) apt_string_table_id_find(const apt_str_table_item_t table[], apr_size_t size, const apt_str_t *value) -{ - /* Key character is stored within each apt_string_table_item. - At first, key characters must be matched in a loop crossing the items. - Then whole strings should be compared only for the matched item. - Key characters should be automatically generated once for a given string table. */ - - apr_size_t i; - const apt_str_table_item_t *item; - for(i=0; ivalue.length != value->length) { - /* lengths of th strings differ, just contninue */ - continue; - } - /* check whether key is available */ - if(item->key < value->length) { - /* check whether values are matched by key (using no case compare) */ - if(value->length == item->value.length && - tolower(item->value.buf[item->key]) == tolower(value->buf[item->key])) { - /* whole strings must be compared to ensure, should be done only once for each lookup */ - if(apt_string_compare(&item->value,value) == TRUE) { - return i; - } - } - } - else { - /* no key available, just compare whole strings */ - if(apt_string_compare(&item->value,value) == TRUE) { - return i; - } - } - } - - /* no match found, return invalid id */ - return size; -} diff --git a/libs/unimrcp/libs/apr-toolkit/src/apt_task.c b/libs/unimrcp/libs/apr-toolkit/src/apt_task.c deleted file mode 100644 index 83e04c963cd..00000000000 --- a/libs/unimrcp/libs/apr-toolkit/src/apt_task.c +++ /dev/null @@ -1,623 +0,0 @@ -/* - * Copyright 2008-2014 Arsen Chaloyan - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - * - * $Id: apt_task.c 2219 2014-11-11 02:35:14Z achaloyan@gmail.com $ - */ - -#ifdef WIN32 -#pragma warning(disable: 4127) -#endif -#include -#include -#include -#include -#include "apt_task.h" -#include "apt_log.h" - -/** Internal states of the task */ -typedef enum { - TASK_STATE_IDLE, /**< no task activity */ - TASK_STATE_START_REQUESTED, /**< start of the task has been requested, but it's not running yet */ - TASK_STATE_RUNNING, /**< task is running */ - TASK_STATE_TERMINATE_REQUESTED /**< termination of the task has been requested, but it's still running */ -} apt_task_state_e; - -struct apt_task_t { - APR_RING_ENTRY(apt_task_t) link; /* entry to parent task ring */ - APR_RING_HEAD(apt_task_head_t, apt_task_t) head; /* head of child tasks ring */ - - const char *name; /* name of the task */ - void *obj; /* external object associated with the task */ - apr_pool_t *pool; /* memory pool to allocate task data from */ - apt_task_msg_pool_t *msg_pool; /* message pool to allocate task messages from */ - apr_thread_mutex_t *data_guard; /* mutex to protect task data */ - apr_thread_t *thread_handle; /* thread handle */ - apt_task_state_e state; /* current task state */ - apt_task_vtable_t vtable; /* table of virtual methods */ - apt_task_t *parent_task; /* parent (master) task */ - apr_size_t pending_start; /* number of pending start requests */ - apr_size_t pending_term; /* number of pending terminate requests */ - apr_size_t pending_off; /* number of pending taking-offline requests */ - apr_size_t pending_on; /* number of pending bringing-online requests */ - apt_bool_t running; /* task is running (TRUE if even terminate has already been requested) */ - apt_bool_t auto_ready; /* if TRUE, task is implicitly ready to process messages */ -}; - -static void* APR_THREAD_FUNC apt_task_run(apr_thread_t *thread_handle, void *data); -static APR_INLINE void apt_task_vtable_reset(apt_task_vtable_t *vtable); - -static apt_bool_t apt_task_core_msg_signal(apt_task_t *task, apt_task_msg_pool_t *msg_pool, apt_core_task_msg_type_e type); - -static apt_bool_t apt_task_terminate_request(apt_task_t *task); - -static apt_bool_t apt_task_start_process_internal(apt_task_t *task); -static apt_bool_t apt_task_terminate_process_internal(apt_task_t *task); -static apt_bool_t apt_task_offline_request_process(apt_task_t *task); -static apt_bool_t apt_task_online_request_process(apt_task_t *task); - -static apt_bool_t apt_task_offline_request_complete(apt_task_t *task); -static apt_bool_t apt_task_online_request_complete(apt_task_t *task); - -static void apt_task_start_complete_raise(apt_task_t *task); -static void apt_task_terminate_complete_raise(apt_task_t *task); -static void apt_task_offline_complete_raise(apt_task_t *task); -static void apt_task_online_complete_raise(apt_task_t *task); - - -APT_DECLARE(apt_task_t*) apt_task_create( - void *obj, - apt_task_msg_pool_t *msg_pool, - apr_pool_t *pool) -{ - apt_task_t *task = apr_palloc(pool,sizeof(apt_task_t)); - task->obj = obj; - task->pool = pool; - task->msg_pool = msg_pool; - - if(!task->msg_pool) { - task->msg_pool = apt_task_msg_pool_create_dynamic(0,pool); - } - - task->state = TASK_STATE_IDLE; - task->thread_handle = NULL; - if(apr_thread_mutex_create(&task->data_guard, APR_THREAD_MUTEX_DEFAULT, task->pool) != APR_SUCCESS) { - return NULL; - } - - /* reset vtable */ - apt_task_vtable_reset(&task->vtable); - task->vtable.terminate = apt_task_terminate_request; - task->vtable.process_start = apt_task_start_process_internal; - task->vtable.process_terminate = apt_task_terminate_process_internal; - - APR_RING_ELEM_INIT(task, link); - APR_RING_INIT(&task->head, apt_task_t, link); - - task->parent_task = NULL; - task->pending_start = 0; - task->pending_term = 0; - task->pending_off = 0; - task->pending_on = 0; - task->auto_ready = TRUE; - task->name = "Task"; - return task; -} - -APT_DECLARE(apt_bool_t) apt_task_destroy(apt_task_t *task) -{ - apt_task_t *child_task; - APR_RING_FOREACH(child_task, &task->head, apt_task_t, link) { - apt_task_destroy(child_task); - } - - if(task->state != TASK_STATE_IDLE) { - apt_task_wait_till_complete(task); - } - - apt_log(APT_LOG_MARK,APT_PRIO_INFO,"Destroy Task [%s]",task->name); - if(task->vtable.destroy) { - task->vtable.destroy(task); - } - - apr_thread_mutex_destroy(task->data_guard); - return TRUE; -} - -APT_DECLARE(apt_bool_t) apt_task_add(apt_task_t *task, apt_task_t *child_task) -{ - if(!child_task) - return FALSE; - - child_task->parent_task = task; - APR_RING_INSERT_TAIL(&task->head,child_task,apt_task_t,link); - return TRUE; -} - -APT_DECLARE(apt_bool_t) apt_task_start(apt_task_t *task) -{ - apt_bool_t status = TRUE; - apr_thread_mutex_lock(task->data_guard); - if(task->state == TASK_STATE_IDLE) { - apr_status_t rv; - task->state = TASK_STATE_START_REQUESTED; - apt_log(APT_LOG_MARK,APT_PRIO_INFO,"Start Task [%s]",task->name); - if(task->vtable.start) { - /* invoke virtual start method */ - task->vtable.start(task); - } - else { - /* start new thread by default */ - rv = apr_thread_create(&task->thread_handle,NULL,apt_task_run,task,task->pool); - if(rv != APR_SUCCESS) { - task->state = TASK_STATE_IDLE; - status = FALSE; - } - } - } - else { - status = FALSE; - } - apr_thread_mutex_unlock(task->data_guard); - return status; -} - -APT_DECLARE(apt_bool_t) apt_task_offline(apt_task_t *task) -{ - return apt_task_core_msg_signal(task,task->msg_pool,CORE_TASK_MSG_TAKEOFFLINE_REQUEST); -} - -APT_DECLARE(apt_bool_t) apt_task_online(apt_task_t *task) -{ - return apt_task_core_msg_signal(task,task->msg_pool,CORE_TASK_MSG_BRINGONLINE_REQUEST); -} - -APT_DECLARE(apt_bool_t) apt_task_terminate(apt_task_t *task, apt_bool_t wait_till_complete) -{ - apt_bool_t status = FALSE; - apr_thread_mutex_lock(task->data_guard); - if(task->state == TASK_STATE_START_REQUESTED || task->state == TASK_STATE_RUNNING) { - task->state = TASK_STATE_TERMINATE_REQUESTED; - } - apr_thread_mutex_unlock(task->data_guard); - - if(task->state == TASK_STATE_TERMINATE_REQUESTED) { - /* invoke virtual terminate method */ - apt_log(APT_LOG_MARK,APT_PRIO_INFO,"Terminate Task [%s]",task->name); - if(task->vtable.terminate) { - status = task->vtable.terminate(task); - } - - if(wait_till_complete == TRUE && status == TRUE) { - apt_task_wait_till_complete(task); - } - } - - return status; -} - -APT_DECLARE(apt_bool_t) apt_task_wait_till_complete(apt_task_t *task) -{ - if(task->thread_handle) { - apr_status_t s; - apr_thread_join(&s,task->thread_handle); - task->thread_handle = NULL; - } - return TRUE; -} - -APT_DECLARE(void) apt_task_delay(apr_size_t msec) -{ - apr_sleep(1000*msec); -} - -APT_DECLARE(apt_task_t*) apt_task_parent_get(const apt_task_t *task) -{ - return task->parent_task; -} - -APT_DECLARE(apr_pool_t*) apt_task_pool_get(const apt_task_t *task) -{ - return task->pool; -} - -APT_DECLARE(void*) apt_task_object_get(const apt_task_t *task) -{ - return task->obj; -} - -APT_DECLARE(apt_task_vtable_t*) apt_task_vtable_get(apt_task_t *task) -{ - return &task->vtable; -} - -APT_DECLARE(void) apt_task_name_set(apt_task_t *task, const char *name) -{ - task->name = name; -} - -APT_DECLARE(const char*) apt_task_name_get(const apt_task_t *task) -{ - return task->name; -} - -APT_DECLARE(apt_task_msg_t*) apt_task_msg_get(apt_task_t *task) -{ - if(task->msg_pool) { - return apt_task_msg_acquire(task->msg_pool); - } - return NULL; -} - -APT_DECLARE(apt_bool_t) apt_task_msg_signal(apt_task_t *task, apt_task_msg_t *msg) -{ - apt_log(APT_LOG_MARK,APT_PRIO_DEBUG,"Signal Message to [%s] ["APT_PTR_FMT";%d;%d]", - task->name, msg, msg->type, msg->sub_type); - if(task->vtable.signal_msg) { - if(task->vtable.signal_msg(task,msg) == TRUE) { - return TRUE; - } - } - - apt_log(APT_LOG_MARK,APT_PRIO_WARNING,"Failed to Signal Task Message [%s] [0x%x;%d;%d]", - task->name, msg, msg->type, msg->sub_type); - apt_task_msg_release(msg); - return FALSE; -} - -APT_DECLARE(apt_bool_t) apt_task_msg_parent_signal(apt_task_t *task, apt_task_msg_t *msg) -{ - apt_task_t *parent_task = task->parent_task; - if(parent_task) { - return apt_task_msg_signal(parent_task,msg); - } - - apt_log(APT_LOG_MARK,APT_PRIO_WARNING,"Null Parent Task [%s]",task->name); - apt_task_msg_release(msg); - return FALSE; -} - -static apt_bool_t apt_task_core_msg_signal(apt_task_t *task, apt_task_msg_pool_t *msg_pool, apt_core_task_msg_type_e type) -{ - if(task && msg_pool) { - apt_task_msg_t *msg = apt_task_msg_acquire(msg_pool); - /* signal core task message */ - msg->type = TASK_MSG_CORE; - msg->sub_type = type; - return apt_task_msg_signal(task,msg); - } - return FALSE; -} - -static apt_bool_t apt_core_task_msg_process(apt_task_t *task, apt_task_msg_t *msg) -{ - switch(msg->sub_type) { - case CORE_TASK_MSG_START_COMPLETE: - apt_task_start_request_remove(task); - break; - case CORE_TASK_MSG_TERMINATE_REQUEST: - if(task->vtable.process_terminate) { - task->vtable.process_terminate(task); - } - break; - case CORE_TASK_MSG_TERMINATE_COMPLETE: - apt_task_terminate_request_remove(task); - break; - case CORE_TASK_MSG_TAKEOFFLINE_REQUEST: - apt_task_offline_request_process(task); - break; - case CORE_TASK_MSG_TAKEOFFLINE_COMPLETE: - apt_task_offline_request_complete(task); - break; - case CORE_TASK_MSG_BRINGONLINE_REQUEST: - apt_task_online_request_process(task); - break; - case CORE_TASK_MSG_BRINGONLINE_COMPLETE: - apt_task_online_request_complete(task); - break; - default: break; - } - return TRUE; -} - -APT_DECLARE(apt_bool_t) apt_task_msg_process(apt_task_t *task, apt_task_msg_t *msg) -{ - apt_bool_t status = FALSE; - apt_log(APT_LOG_MARK,APT_PRIO_DEBUG,"Process Message [%s] ["APT_PTR_FMT";%d;%d]", - task->name, msg, msg->type, msg->sub_type); - if(msg->type == TASK_MSG_CORE) { - status = apt_core_task_msg_process(task,msg); - } - else { - if(task->vtable.process_msg) { - status = task->vtable.process_msg(task,msg); - } - } - - apt_task_msg_release(msg); - return status; -} - -static apt_bool_t apt_task_terminate_request(apt_task_t *task) -{ - return apt_task_core_msg_signal(task,task->msg_pool,CORE_TASK_MSG_TERMINATE_REQUEST); -} - -APT_DECLARE(apt_bool_t) apt_task_start_request_process(apt_task_t *task) -{ - return apt_task_start_process_internal(task); -} - -static apt_bool_t apt_task_start_process_internal(apt_task_t *task) -{ - apt_task_t *child_task; - APR_RING_FOREACH(child_task, &task->head, apt_task_t, link) { - if(apt_task_start(child_task) == TRUE) { - task->pending_start++; - } - } - - if(!task->pending_start) { - /* no child task to start, just raise start-complete event */ - apt_task_start_complete_raise(task); - } - return TRUE; -} - -APT_DECLARE(apt_bool_t) apt_task_terminate_request_process(apt_task_t *task) -{ - return apt_task_terminate_process_internal(task); -} - -static apt_bool_t apt_task_terminate_process_internal(apt_task_t *task) -{ - apt_task_t *child_task; - APR_RING_FOREACH(child_task, &task->head, apt_task_t, link) { -#ifdef ENABLE_SIMULT_TASK_TERMINATION - if(child_task->thread_handle) { - apr_thread_detach(child_task->thread_handle); - child_task->thread_handle = NULL; - } - if(apt_task_terminate(child_task,FALSE) == TRUE) { - task->pending_term++; - } -#else - apt_task_terminate(child_task,TRUE); -#endif - } - - if(!task->pending_term) { - /* no child task to terminate, just raise terminate-complete event */ - apt_task_terminate_complete_raise(task); - task->running = FALSE; - } - return TRUE; -} - -static apt_bool_t apt_task_offline_request_process(apt_task_t *task) -{ - apt_task_t *child_task; - APR_RING_FOREACH(child_task, &task->head, apt_task_t, link) { - if(apt_task_offline(child_task) == TRUE) { - task->pending_off++; - } - } - - if(!task->pending_off) { - /* no child task, just raise offline-complete event */ - apt_task_offline_complete_raise(task); - } - return TRUE; -} - -static apt_bool_t apt_task_online_request_process(apt_task_t *task) -{ - apt_task_t *child_task; - APR_RING_FOREACH(child_task, &task->head, apt_task_t, link) { - if(apt_task_online(child_task) == TRUE) { - task->pending_on++; - } - } - - if(!task->pending_on) { - /* no child task, just raise online-complete event */ - apt_task_online_complete_raise(task); - } - return TRUE; -} - -APT_DECLARE(void) apt_task_auto_ready_set(apt_task_t *task, apt_bool_t auto_ready) -{ - task->auto_ready = auto_ready; -} - -APT_DECLARE(apt_bool_t) apt_task_ready(apt_task_t *task) -{ - if(task->auto_ready == TRUE) { - return FALSE; - } - - /* start child tasks (if any) */ - if(task->vtable.process_start) { - task->vtable.process_start(task); - } - return TRUE; -} - -APT_DECLARE(apt_bool_t*) apt_task_running_flag_get(apt_task_t *task) -{ - return &task->running; -} - -APT_DECLARE(apt_bool_t) apt_task_start_request_add(apt_task_t *task) -{ - task->pending_start++; - return TRUE; -} - -APT_DECLARE(apt_bool_t) apt_task_start_request_remove(apt_task_t *task) -{ - if(!task->pending_start) { - /* error case, no pending start */ - return FALSE; - } - task->pending_start--; - if(!task->pending_start) { - apt_task_start_complete_raise(task); - } - return TRUE; -} - -APT_DECLARE(apt_bool_t) apt_task_terminate_request_add(apt_task_t *task) -{ - task->pending_term++; - return TRUE; -} - -APT_DECLARE(apt_bool_t) apt_task_terminate_request_remove(apt_task_t *task) -{ - if(!task->pending_term) { - /* error case, no pending terminate */ - return FALSE; - } - task->pending_term--; - if(!task->pending_term) { - apt_task_terminate_complete_raise(task); - task->running = FALSE; - } - return TRUE; -} - -static apt_bool_t apt_task_offline_request_complete(apt_task_t *task) -{ - if(!task->pending_off) { - /* error case, no pending request */ - return FALSE; - } - task->pending_off--; - if(!task->pending_off) { - apt_task_offline_complete_raise(task); - } - return TRUE; -} - -static apt_bool_t apt_task_online_request_complete(apt_task_t *task) -{ - if(!task->pending_on) { - /* error case, no pending request */ - return FALSE; - } - task->pending_on--; - if(!task->pending_on) { - apt_task_online_complete_raise(task); - } - return TRUE; -} - -static void apt_task_start_complete_raise(apt_task_t *task) -{ - apt_log(APT_LOG_MARK,APT_PRIO_DEBUG,"Task Started [%s]",task->name); - if(task->vtable.on_start_complete) { - task->vtable.on_start_complete(task); - } - apt_task_core_msg_signal(task->parent_task,task->msg_pool,CORE_TASK_MSG_START_COMPLETE); -} - -static void apt_task_terminate_complete_raise(apt_task_t *task) -{ - apt_log(APT_LOG_MARK,APT_PRIO_DEBUG,"Task Terminated [%s]",task->name); - if(task->vtable.on_terminate_complete) { - task->vtable.on_terminate_complete(task); - } -#ifdef ENABLE_SIMULT_TASK_TERMINATION - apt_task_core_msg_signal(task->parent_task,task->msg_pool,CORE_TASK_MSG_TERMINATE_COMPLETE); -#endif -} - -static void apt_task_offline_complete_raise(apt_task_t *task) -{ - apt_log(APT_LOG_MARK,APT_PRIO_DEBUG,"Task Taken Offline [%s]",task->name); - if(task->vtable.on_offline_complete) { - task->vtable.on_offline_complete(task); - } - apt_task_core_msg_signal(task->parent_task,task->msg_pool,CORE_TASK_MSG_TAKEOFFLINE_COMPLETE); -} - -static void apt_task_online_complete_raise(apt_task_t *task) -{ - apt_log(APT_LOG_MARK,APT_PRIO_DEBUG,"Task Brought Online [%s]",task->name); - if(task->vtable.on_online_complete) { - task->vtable.on_online_complete(task); - } - apt_task_core_msg_signal(task->parent_task,task->msg_pool,CORE_TASK_MSG_BRINGONLINE_COMPLETE); -} - -static void* APR_THREAD_FUNC apt_task_run(apr_thread_t *thread_handle, void *data) -{ - apt_task_t *task = data; - -#if APR_HAS_SETTHREADNAME - apr_thread_name_set(task->name); -#endif - /* raise pre-run event */ - if(task->vtable.on_pre_run) { - task->vtable.on_pre_run(task); - } - apr_thread_mutex_lock(task->data_guard); - task->state = TASK_STATE_RUNNING; - task->running = TRUE; - apr_thread_mutex_unlock(task->data_guard); - - if(task->auto_ready == TRUE) { - /* start child tasks (if any) */ - if(task->vtable.process_start) { - task->vtable.process_start(task); - } - } - - /* run task */ - if(task->vtable.run) { - task->vtable.run(task); - } - - apr_thread_mutex_lock(task->data_guard); - task->state = TASK_STATE_IDLE; - task->running = FALSE; - apr_thread_mutex_unlock(task->data_guard); - /* raise post-run event */ - if(task->vtable.on_post_run) { - task->vtable.on_post_run(task); - } - - apr_thread_exit(thread_handle,APR_SUCCESS); - return NULL; -} - -static APR_INLINE void apt_task_vtable_reset(apt_task_vtable_t *vtable) -{ - vtable->destroy = NULL; - vtable->start = NULL; - vtable->terminate = NULL; - vtable->run = NULL; - vtable->signal_msg = NULL; - vtable->process_msg = NULL; - vtable->process_start = NULL; - vtable->process_terminate = NULL; - vtable->on_pre_run = NULL; - vtable->on_post_run = NULL; - vtable->on_start_complete = NULL; - vtable->on_terminate_complete = NULL; - vtable->on_offline_complete = NULL; - vtable->on_online_complete = NULL; -} diff --git a/libs/unimrcp/libs/apr-toolkit/src/apt_task_msg.c b/libs/unimrcp/libs/apr-toolkit/src/apt_task_msg.c deleted file mode 100644 index d593e26eb06..00000000000 --- a/libs/unimrcp/libs/apr-toolkit/src/apt_task_msg.c +++ /dev/null @@ -1,105 +0,0 @@ -/* - * Copyright 2008-2014 Arsen Chaloyan - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - * - * $Id: apt_task_msg.c 2136 2014-07-04 06:33:36Z achaloyan@gmail.com $ - */ - -#include -#include "apt_task_msg.h" - -/** Abstract pool of task messages to allocate task messages from */ -struct apt_task_msg_pool_t { - void (*destroy)(apt_task_msg_pool_t *pool); - - apt_task_msg_t* (*acquire_msg)(apt_task_msg_pool_t *pool); - void (*release_msg)(apt_task_msg_t *task_msg); - - void *obj; - apr_pool_t *pool; -}; - - -/** Dynamic allocation of messages (no actual pool exist)*/ -typedef struct apt_msg_pool_dynamic_t apt_msg_pool_dynamic_t; - -struct apt_msg_pool_dynamic_t { - apr_size_t size; -}; - -static apt_task_msg_t* dynamic_pool_acquire_msg(apt_task_msg_pool_t *task_msg_pool) -{ - apt_msg_pool_dynamic_t *dynamic_pool = task_msg_pool->obj; - apt_task_msg_t *task_msg = malloc(dynamic_pool->size); - task_msg->msg_pool = task_msg_pool; - task_msg->type = TASK_MSG_USER; - task_msg->sub_type = 0; - return task_msg; -} - -static void dynamic_pool_release_msg(apt_task_msg_t *task_msg) -{ - if(task_msg) { - free(task_msg); - } -} - -static void dynamic_pool_destroy(apt_task_msg_pool_t *task_msg_pool) -{ - /* nothing to do */ -} - -APT_DECLARE(apt_task_msg_pool_t*) apt_task_msg_pool_create_dynamic(apr_size_t msg_size, apr_pool_t *pool) -{ - apt_task_msg_pool_t *task_msg_pool = apr_palloc(pool,sizeof(apt_task_msg_pool_t)); - apt_msg_pool_dynamic_t *dynamic_pool = apr_palloc(pool,sizeof(apt_msg_pool_dynamic_t)); - dynamic_pool->size = msg_size + sizeof(apt_task_msg_t) - 1; - - task_msg_pool->pool = pool; - task_msg_pool->obj = dynamic_pool; - task_msg_pool->acquire_msg = dynamic_pool_acquire_msg; - task_msg_pool->release_msg = dynamic_pool_release_msg; - task_msg_pool->destroy = dynamic_pool_destroy; - return task_msg_pool; -} - - -/** Static allocation of messages from message pool (not implemented yet) */ -APT_DECLARE(apt_task_msg_pool_t*) apt_task_msg_pool_create_static(apr_size_t msg_size, apr_size_t pool_size, apr_pool_t *pool) -{ - return NULL; -} - - - -APT_DECLARE(void) apt_task_msg_pool_destroy(apt_task_msg_pool_t *msg_pool) -{ - if(msg_pool->destroy) { - msg_pool->destroy(msg_pool); - } -} - -APT_DECLARE(apt_task_msg_t*) apt_task_msg_acquire(apt_task_msg_pool_t *task_msg_pool) -{ - if(!task_msg_pool->acquire_msg) - return NULL; - return task_msg_pool->acquire_msg(task_msg_pool); -} - -APT_DECLARE(void) apt_task_msg_release(apt_task_msg_t *task_msg) -{ - apt_task_msg_pool_t *task_msg_pool = task_msg->msg_pool; - if(task_msg_pool->release_msg) - task_msg_pool->release_msg(task_msg); -} diff --git a/libs/unimrcp/libs/apr-toolkit/src/apt_test_suite.c b/libs/unimrcp/libs/apr-toolkit/src/apt_test_suite.c deleted file mode 100644 index 4704235079c..00000000000 --- a/libs/unimrcp/libs/apr-toolkit/src/apt_test_suite.c +++ /dev/null @@ -1,121 +0,0 @@ -/* - * Copyright 2008-2014 Arsen Chaloyan - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - * - * $Id: apt_test_suite.c 2136 2014-07-04 06:33:36Z achaloyan@gmail.com $ - */ - -#include "apt_pool.h" -#include "apt_obj_list.h" -#include "apt_test_suite.h" -#include "apt_log.h" - -struct apt_test_framework_t{ - apr_pool_t *pool; - apt_obj_list_t *suites; -}; - -APT_DECLARE(apt_test_suite_t*) apt_test_suite_create(apr_pool_t *pool, const char *name, - void *obj, apt_test_f tester) -{ - apt_test_suite_t *suite = apr_palloc(pool,sizeof(apt_test_suite_t)); - suite->pool = pool; - apt_string_assign(&suite->name,name,pool); - suite->obj = obj; - suite->tester = tester; - return suite; -} - -APT_DECLARE(apt_test_framework_t*) apt_test_framework_create() -{ - apt_test_framework_t *framework; - apr_pool_t* pool = apt_pool_create(); - framework = apr_palloc(pool,sizeof(apt_test_framework_t)); - framework->pool = pool; - framework->suites = apt_list_create(pool); - - apt_log_instance_create(APT_LOG_OUTPUT_CONSOLE,APT_PRIO_INFO,pool); - apt_log(APT_LOG_MARK,APT_PRIO_NOTICE,"Create Test Framework"); - return framework; -} - -APT_DECLARE(void) apt_test_framework_destroy(apt_test_framework_t *framework) -{ - apt_log(APT_LOG_MARK,APT_PRIO_NOTICE,"Destroy Test Framework"); - apt_log_instance_destroy(); - apr_pool_destroy(framework->pool); -} - -APT_DECLARE(apt_bool_t) apt_test_framework_suite_add(apt_test_framework_t *framework, apt_test_suite_t *suite) -{ - apt_log(APT_LOG_MARK,APT_PRIO_INFO,"Add Test Suite [%s]",suite->name.buf); - return (apt_list_push_back(framework->suites,suite,suite->pool) ? TRUE : FALSE); -} - -APT_DECLARE(apr_pool_t*) apt_test_framework_pool_get(const apt_test_framework_t *framework) -{ - return framework->pool; -} - -static apt_bool_t apt_test_framework_suite_run(apt_test_framework_t *framework, apt_test_suite_t *suite, - int argc, const char * const *argv) -{ - apt_bool_t status = FALSE; - apt_log(APT_LOG_MARK,APT_PRIO_NOTICE,"----- Run Test Suite [%s] -----",suite->name.buf); - if(suite->tester) { - status = suite->tester(suite,argc,argv); - } - apt_log(APT_LOG_MARK,APT_PRIO_NOTICE,"---- Status [%s] ----\n",(status == TRUE) ? "OK" : "Failure"); - return status; -} - -APT_DECLARE(apt_bool_t) apt_test_framework_run(apt_test_framework_t *framework, int argc, const char * const *argv) -{ - apt_test_suite_t *suite = NULL; - apt_list_elem_t *elem = apt_list_first_elem_get(framework->suites); - if(argc == 1) { - apt_log(APT_LOG_MARK,APT_PRIO_INFO,"Run All Test Suites"); - /* walk through the list of test suites and run all of them */ - while(elem) { - suite = apt_list_elem_object_get(elem); - if(suite) { - /* run test suite with the default arguments */ - apt_test_framework_suite_run(framework,suite,0,NULL); - } - elem = apt_list_next_elem_get(framework->suites,elem); - } - } - else { - /* walk through the list of test suites find appropriate one and run it */ - apt_bool_t found = FALSE; - apt_str_t name; - apt_string_set(&name,argv[1]); - while(elem) { - suite = apt_list_elem_object_get(elem); - if(suite && apt_string_compare(&suite->name,&name) == TRUE) { - found = TRUE; - break; - } - elem = apt_list_next_elem_get(framework->suites,elem); - } - if(found == TRUE) { - /* run test suite with remaining arguments */ - apt_test_framework_suite_run(framework,suite,argc-2,&argv[2]); - } - else { - apt_log(APT_LOG_MARK,APT_PRIO_WARNING,"No Such Test Suite [%s] to Run", argv[1]); - } - } - return TRUE; -} diff --git a/libs/unimrcp/libs/apr-toolkit/src/apt_text_message.c b/libs/unimrcp/libs/apr-toolkit/src/apt_text_message.c deleted file mode 100644 index 4a9db353df1..00000000000 --- a/libs/unimrcp/libs/apr-toolkit/src/apt_text_message.c +++ /dev/null @@ -1,451 +0,0 @@ -/* - * Copyright 2008-2014 Arsen Chaloyan - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - * - * $Id: apt_text_message.c 2218 2014-11-11 02:28:58Z achaloyan@gmail.com $ - */ - -#include "apt_text_message.h" -#include "apt_log.h" - -/** Stage of text message processing (parsing/generation) */ -typedef enum { - APT_MESSAGE_STAGE_START_LINE, - APT_MESSAGE_STAGE_HEADER, - APT_MESSAGE_STAGE_BODY -} apt_message_stage_e; - - -/** Text message parser */ -struct apt_message_parser_t { - const apt_message_parser_vtable_t *vtable; - void *obj; - apr_pool_t *pool; - apt_message_context_t context; - apr_size_t content_length; - apt_message_stage_e stage; - apt_bool_t skip_lf; - apt_bool_t verbose; -}; - -/** Text message generator */ -struct apt_message_generator_t { - const apt_message_generator_vtable_t *vtable; - void *obj; - apr_pool_t *pool; - apt_message_context_t context; - apr_size_t content_length; - apt_message_stage_e stage; - apt_bool_t verbose; -}; - -/** Parse individual header field (name-value pair) */ -APT_DECLARE(apt_header_field_t*) apt_header_field_parse(apt_text_stream_t *stream, apr_pool_t *pool) -{ - apr_size_t folding_length = 0; - apr_array_header_t *folded_lines = NULL; - apt_header_field_t *header_field; - apt_str_t temp_line; - apt_str_t *line; - apt_pair_t pair; - /* read name-value pair */ - if(apt_text_header_read(stream,&pair) == FALSE) { - return NULL; - } - - /* check folding lines (value spanning multiple lines) */ - while(stream->pos < stream->end) { - if(apt_text_is_wsp(*stream->pos) == FALSE) { - break; - } - - stream->pos++; - - /* skip further white spaces (if any) */ - apt_text_white_spaces_skip(stream); - - if(!folded_lines) { - folded_lines = apr_array_make(pool,1,sizeof(apt_str_t)); - } - if(apt_text_line_read(stream,&temp_line) == TRUE) { - line = apr_array_push(folded_lines); - *line = temp_line; - folding_length += line->length; - } - }; - - header_field = apt_header_field_alloc(pool); - /* copy parsed name of the header field */ - header_field->name.length = pair.name.length; - header_field->name.buf = apr_palloc(pool, pair.name.length + 1); - if(pair.name.length) { - memcpy(header_field->name.buf, pair.name.buf, pair.name.length); - } - header_field->name.buf[header_field->name.length] = '\0'; - - /* copy parsed value of the header field */ - header_field->value.length = pair.value.length + folding_length; - header_field->value.buf = apr_palloc(pool, header_field->value.length + 1); - if(pair.value.length) { - memcpy(header_field->value.buf, pair.value.buf, pair.value.length); - } - - if(folding_length) { - int i; - char *pos = header_field->value.buf + pair.value.length; - /* copy parsed folding lines */ - for(i=0; inelts; i++) { - line = &APR_ARRAY_IDX(folded_lines,i,apt_str_t); - - memcpy(pos,line->buf,line->length); - pos += line->length; - } - } - header_field->value.buf[header_field->value.length] = '\0'; - - return header_field; -} - -/** Generate individual header field (name-value pair) */ -APT_DECLARE(apt_bool_t) apt_header_field_generate(const apt_header_field_t *header_field, apt_text_stream_t *stream) -{ - return apt_text_name_value_insert(stream,&header_field->name,&header_field->value); -} - -/** Parse header section */ -APT_DECLARE(apt_bool_t) apt_header_section_parse(apt_header_section_t *header, apt_text_stream_t *stream, apr_pool_t *pool) -{ - apt_header_field_t *header_field; - apt_bool_t result = FALSE; - - do { - header_field = apt_header_field_parse(stream,pool); - if(header_field) { - if(apt_string_is_empty(&header_field->name) == FALSE) { - /* normal header */ - apt_header_section_field_add(header,header_field); - } - else { - /* empty header => exit */ - result = TRUE; - break; - } - } - else { - /* malformed header => skip to the next one */ - } - } - while(apt_text_is_eos(stream) == FALSE); - - return result; -} - -/** Generate header section */ -APT_DECLARE(apt_bool_t) apt_header_section_generate(const apt_header_section_t *header, apt_text_stream_t *stream) -{ - apt_header_field_t *header_field; - for(header_field = APR_RING_FIRST(&header->ring); - header_field != APR_RING_SENTINEL(&header->ring, apt_header_field_t, link); - header_field = APR_RING_NEXT(header_field, link)) { - apt_header_field_generate(header_field,stream); - } - - return apt_text_eol_insert(stream); -} - -static apt_bool_t apt_message_body_read(apt_message_parser_t *parser, apt_text_stream_t *stream) -{ - apt_bool_t status = TRUE; - apt_str_t *body = parser->context.body; - if(body->buf) { - /* stream length available to read */ - apr_size_t stream_length = stream->text.length - (stream->pos - stream->text.buf); - /* required/remaining length to read */ - apr_size_t required_length = parser->content_length - body->length; - if(required_length > stream_length) { - required_length = stream_length; - /* incomplete */ - status = FALSE; - } - memcpy(body->buf + body->length, stream->pos, required_length); - body->length += required_length; - stream->pos += required_length; - if(parser->verbose == TRUE) { - apr_size_t length = required_length; - const char *masked_data = apt_log_data_mask(stream->pos,&length,parser->pool); - apt_log(APT_LOG_MARK,APT_PRIO_INFO,"Parsed Message Body [%"APR_SIZE_T_FMT" bytes]\n%.*s", - required_length, length, masked_data); - } - } - - return status; -} - -static apt_bool_t apt_message_body_write(apt_message_generator_t *generator, apt_text_stream_t *stream) -{ - apt_bool_t status = TRUE; - apt_str_t *body = generator->context.body; - if(body && body->length < generator->content_length) { - /* stream length available to write */ - apr_size_t stream_length = stream->text.length - (stream->pos - stream->text.buf); - /* required/remaining length to write */ - apr_size_t required_length = generator->content_length - body->length; - if(required_length > stream_length) { - required_length = stream_length; - /* incomplete */ - status = FALSE; - } - - memcpy(stream->pos, body->buf + body->length, required_length); - - if(generator->verbose == TRUE) { - apr_size_t length = required_length; - const char *masked_data = apt_log_data_mask(stream->pos,&length,generator->pool); - apt_log(APT_LOG_MARK,APT_PRIO_INFO,"Generated Message Body [%"APR_SIZE_T_FMT" bytes]\n%.*s", - required_length, length, masked_data); - } - - body->length += required_length; - stream->pos += required_length; - } - - return status; -} - - -/** Create message parser */ -APT_DECLARE(apt_message_parser_t*) apt_message_parser_create(void *obj, const apt_message_parser_vtable_t *vtable, apr_pool_t *pool) -{ - apt_message_parser_t *parser = apr_palloc(pool,sizeof(apt_message_parser_t)); - parser->obj = obj; - parser->vtable = vtable; - parser->pool = pool; - parser->context.message = NULL; - parser->context.body = NULL; - parser->context.header = NULL; - parser->content_length = 0; - parser->stage = APT_MESSAGE_STAGE_START_LINE; - parser->skip_lf = FALSE; - parser->verbose = FALSE; - return parser; -} - -static APR_INLINE void apt_crlf_segmentation_test(apt_message_parser_t *parser, apt_text_stream_t *stream) -{ - /* in the worst case message segmentation may occur between and */ - if(stream->pos == stream->end && *(stream->pos-1)== APT_TOKEN_CR) { - /* if this is the case be prepared to skip with the next attempt */ - parser->skip_lf = TRUE; - } -} - -/** Parse message by raising corresponding event handlers */ -APT_DECLARE(apt_message_status_e) apt_message_parser_run(apt_message_parser_t *parser, apt_text_stream_t *stream, void **message) -{ - const char *pos; - apt_message_status_e status = APT_MESSAGE_STATUS_INCOMPLETE; - if(parser->skip_lf == TRUE) { - /* skip occurred as a result of message segmentation between and */ - apt_text_char_skip(stream,APT_TOKEN_LF); - parser->skip_lf = FALSE; - } - if(message) { - *message = NULL; - } - - do { - pos = stream->pos; - if(parser->stage == APT_MESSAGE_STAGE_START_LINE) { - if(parser->vtable->on_start(parser,&parser->context,stream,parser->pool) == FALSE) { - if(apt_text_is_eos(stream) == FALSE) { - status = APT_MESSAGE_STATUS_INVALID; - } - break; - } - - apt_crlf_segmentation_test(parser,stream); - - parser->stage = APT_MESSAGE_STAGE_HEADER; - } - - if(parser->stage == APT_MESSAGE_STAGE_HEADER) { - /* read header section */ - apt_bool_t res = apt_header_section_parse(parser->context.header,stream,parser->pool); - if(parser->verbose == TRUE) { - apr_size_t length = stream->pos - pos; - apt_log(APT_LOG_MARK,APT_PRIO_INFO,"Parsed Message Header [%"APR_SIZE_T_FMT" bytes]\n%.*s", - length, length, pos); - } - - apt_crlf_segmentation_test(parser,stream); - - if(res == FALSE) { - break; - } - - if(parser->vtable->on_header_complete) { - if(parser->vtable->on_header_complete(parser,&parser->context) == FALSE) { - status = APT_MESSAGE_STATUS_INVALID; - break; - } - } - - if(parser->context.body && parser->context.body->length) { - apt_str_t *body = parser->context.body; - parser->content_length = body->length; - body->buf = apr_palloc(parser->pool,parser->content_length+1); - body->buf[parser->content_length] = '\0'; - body->length = 0; - parser->stage = APT_MESSAGE_STAGE_BODY; - } - else { - status = APT_MESSAGE_STATUS_COMPLETE; - if(message) { - *message = parser->context.message; - } - parser->stage = APT_MESSAGE_STAGE_START_LINE; - break; - } - } - - if(parser->stage == APT_MESSAGE_STAGE_BODY) { - if(apt_message_body_read(parser,stream) == FALSE) { - break; - } - - if(parser->vtable->on_body_complete) { - parser->vtable->on_body_complete(parser,&parser->context); - } - status = APT_MESSAGE_STATUS_COMPLETE; - if(message) { - *message = parser->context.message; - } - parser->stage = APT_MESSAGE_STAGE_START_LINE; - break; - } - } - while(apt_text_is_eos(stream) == FALSE); - - return status; -} - -/** Get external object associated with parser */ -APT_DECLARE(void*) apt_message_parser_object_get(apt_message_parser_t *parser) -{ - return parser->obj; -} - -/** Set verbose mode for the parser */ -APT_DECLARE(void) apt_message_parser_verbose_set(apt_message_parser_t *parser, apt_bool_t verbose) -{ - parser->verbose = verbose; -} - - -/** Create message generator */ -APT_DECLARE(apt_message_generator_t*) apt_message_generator_create(void *obj, const apt_message_generator_vtable_t *vtable, apr_pool_t *pool) -{ - apt_message_generator_t *generator = apr_palloc(pool,sizeof(apt_message_generator_t)); - generator->obj = obj; - generator->vtable = vtable; - generator->pool = pool; - generator->context.message = NULL; - generator->context.header = NULL; - generator->context.body = NULL; - generator->content_length = 0; - generator->stage = APT_MESSAGE_STAGE_START_LINE; - generator->verbose = FALSE; - return generator; -} - -static apt_message_status_e apt_message_generator_break(apt_message_generator_t *generator, apt_text_stream_t *stream) -{ - /* failed to generate message */ - if(apt_text_is_eos(stream) == TRUE) { - /* end of stream reached */ - return APT_MESSAGE_STATUS_INCOMPLETE; - } - - /* error case */ - return APT_MESSAGE_STATUS_INVALID; -} - -/** Generate message */ -APT_DECLARE(apt_message_status_e) apt_message_generator_run(apt_message_generator_t *generator, void *message, apt_text_stream_t *stream) -{ - if(!message) { - return APT_MESSAGE_STATUS_INVALID; - } - - if(message != generator->context.message) { - generator->stage = APT_MESSAGE_STAGE_START_LINE; - generator->context.message = message; - generator->context.header = NULL; - generator->context.body = NULL; - } - - if(generator->stage == APT_MESSAGE_STAGE_START_LINE) { - /* generate start-line */ - if(generator->vtable->on_start(generator,&generator->context,stream) == FALSE) { - return apt_message_generator_break(generator,stream); - } - - if(!generator->context.header || !generator->context.body) { - return APT_MESSAGE_STATUS_INVALID; - } - - /* generate header */ - if(apt_header_section_generate(generator->context.header,stream) == FALSE) { - return apt_message_generator_break(generator,stream); - } - - if(generator->vtable->on_header_complete) { - generator->vtable->on_header_complete(generator,&generator->context,stream); - } - if(generator->verbose == TRUE) { - apr_size_t length = stream->pos - stream->text.buf; - apt_log(APT_LOG_MARK,APT_PRIO_INFO,"Generated Message Header [%"APR_SIZE_T_FMT" bytes]\n%.*s", - length, length, stream->text.buf); - } - - generator->stage = APT_MESSAGE_STAGE_START_LINE; - generator->content_length = generator->context.body->length; - if(generator->content_length) { - generator->context.body->length = 0; - generator->stage = APT_MESSAGE_STAGE_BODY; - } - } - - if(generator->stage == APT_MESSAGE_STAGE_BODY) { - if(apt_message_body_write(generator,stream) == FALSE) { - return apt_message_generator_break(generator,stream); - } - - generator->stage = APT_MESSAGE_STAGE_START_LINE; - } - - return APT_MESSAGE_STATUS_COMPLETE; -} - -/** Get external object associated with generator */ -APT_DECLARE(void*) apt_message_generator_object_get(apt_message_generator_t *generator) -{ - return generator->obj; -} - -/** Set verbose mode for the parser */ -APT_DECLARE(void) apt_message_generator_verbose_set(apt_message_generator_t *generator, apt_bool_t verbose) -{ - generator->verbose = verbose; -} diff --git a/libs/unimrcp/libs/apr-toolkit/src/apt_text_stream.c b/libs/unimrcp/libs/apr-toolkit/src/apt_text_stream.c deleted file mode 100644 index 1df0509ef20..00000000000 --- a/libs/unimrcp/libs/apr-toolkit/src/apt_text_stream.c +++ /dev/null @@ -1,554 +0,0 @@ -/* - * Copyright 2008-2014 Arsen Chaloyan - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - * - * $Id: apt_text_stream.c 2223 2014-11-12 00:37:40Z achaloyan@gmail.com $ - */ - -#include -#include -#include -#include "apt_text_stream.h" - -#define TOKEN_TRUE "true" -#define TOKEN_FALSE "false" -#define TOKEN_TRUE_LENGTH (sizeof(TOKEN_TRUE)-1) -#define TOKEN_FALSE_LENGTH (sizeof(TOKEN_FALSE)-1) - -#if _MSC_VER >= 1900 -#pragma warning(disable: 4477) -// 'sprintf' : format string '%d' requires an argument of type 'int', but variadic argument 1 has type 'apr_size_t' apt_text_stream.c 495 -// 'sprintf' : format string '%03d' requires an argument of type 'int', but variadic argument 1 has type 'apr_size_t' apt_text_stream.c 515 -#endif - - -/** Navigate through the lines of the text stream (message) */ -APT_DECLARE(apt_bool_t) apt_text_line_read(apt_text_stream_t *stream, apt_str_t *line) -{ - char *pos = stream->pos; - apt_bool_t status = FALSE; - line->length = 0; - line->buf = pos; - /* while not end of stream */ - while(pos < stream->end) { - if(*pos == APT_TOKEN_CR) { - /* end of line detected */ - line->length = pos - line->buf; - pos++; - if(pos < stream->end && *pos == APT_TOKEN_LF) { - pos++; - } - status = TRUE; - break; - } - else if(*pos == APT_TOKEN_LF) { - /* end of line detected */ - line->length = pos - line->buf; - pos++; - status = TRUE; - break; - } - pos++; - } - - if(status == TRUE) { - /* advance stream pos */ - stream->pos = pos; - } - else { - /* end of stream is reached, do not advance stream pos, but set is_eos flag */ - stream->is_eos = TRUE; - line->length = pos - line->buf; - } - return status; -} - -/** To be used to navigate through the header fields (name:value pairs) of the text stream (message) - Valid header fields are: - name:value - name: value - name: value - name: value - name: (only name, no value) - (empty header) - Malformed header fields are: - name:value (missing end of line ) - name (missing separator ':') -*/ -APT_DECLARE(apt_bool_t) apt_text_header_read(apt_text_stream_t *stream, apt_pair_t *pair) -{ - char *pos = stream->pos; - apt_bool_t status = FALSE; - apt_string_reset(&pair->name); - apt_string_reset(&pair->value); - /* while not end of stream */ - while(pos < stream->end) { - if(*pos == APT_TOKEN_CR) { - /* end of line detected */ - if(pair->value.buf) { - /* set length of the value */ - pair->value.length = pos - pair->value.buf; - } - pos++; - if(pos < stream->end && *pos == APT_TOKEN_LF) { - pos++; - } - status = TRUE; - break; - } - else if(*pos == APT_TOKEN_LF) { - /* end of line detected */ - if(pair->value.buf) { - /* set length of the value */ - pair->value.length = pos - pair->value.buf; - } - pos++; - status = TRUE; - break; - } - else if(!pair->name.length) { - /* skip preceding white spaces (SHOULD NOT be any WSP, though) and read name */ - if(!pair->name.buf && apt_text_is_wsp(*pos) == FALSE) { - pair->name.buf = pos; - } - if(*pos == ':') { - /* set length of the name */ - pair->name.length = pos - pair->name.buf; - } - } - else if(!pair->value.length) { - /* skip preceding white spaces and read value */ - if(!pair->value.buf && apt_text_is_wsp(*pos) == FALSE) { - pair->value.buf = pos; - } - } - pos++; - } - - if(status == TRUE) { - /* advance stream pos regardless it's a valid header or not */ - stream->pos = pos; - - /* if length == 0 && buf => header is malformed */ - if(!pair->name.length && pair->name.buf) { - status = FALSE; - } - } - else { - /* end of stream is reached, do not advance stream pos, but set is_eos flag */ - stream->is_eos = TRUE; - } - - return status; -} - - -/** Navigate through the fields of the line */ -APT_DECLARE(apt_bool_t) apt_text_field_read(apt_text_stream_t *stream, char separator, apt_bool_t skip_spaces, apt_str_t *field) -{ - char *pos = stream->pos; - if(skip_spaces == TRUE) { - while(pos < stream->end && *pos == APT_TOKEN_SP) pos++; - } - - field->buf = pos; - field->length = 0; - while(pos < stream->end && *pos != separator) pos++; - - field->length = pos - field->buf; - if(pos < stream->end) { - /* skip the separator */ - pos++; - } - - stream->pos = pos; - return field->length ? TRUE : FALSE; -} - -/** Scroll text stream */ -APT_DECLARE(apt_bool_t) apt_text_stream_scroll(apt_text_stream_t *stream) -{ - if(stream->pos == stream->end) { - stream->pos = stream->text.buf; - } - else { - apr_size_t remaining_length = stream->text.buf + stream->text.length - stream->pos; - if(!remaining_length || remaining_length == stream->text.length) { - stream->pos = stream->text.buf + remaining_length; - return FALSE; - } - memmove(stream->text.buf,stream->pos,remaining_length); - stream->pos = stream->text.buf + remaining_length; - stream->text.length = remaining_length; - } - *stream->pos = '\0'; - return TRUE; -} - -/** Parse id@resource string */ -APT_DECLARE(apt_bool_t) apt_id_resource_parse(const apt_str_t *str, char separator, apt_str_t *id, apt_str_t *resource, apr_pool_t *pool) -{ - apt_str_t field = *str; - const char *pos = strchr(str->buf,separator); - if(!pos) { - return FALSE; - } - - field.length = pos - field.buf; - if(field.length >= str->length) { - return FALSE; - } - apt_string_copy(id,&field,pool); - field.buf += field.length + 1; - field.length = str->length - (field.length + 1); - apt_string_copy(resource,&field,pool); - return TRUE; -} - -/** Generate id@resource string */ -APT_DECLARE(apt_bool_t) apt_id_resource_generate(const apt_str_t *id, const apt_str_t *resource, char separator, apt_str_t *str, apr_pool_t *pool) -{ - apr_size_t length = id->length+resource->length+1; - char *buf = apr_palloc(pool,length+1); - memcpy(buf,id->buf,id->length); - buf[id->length] = separator; - memcpy(buf+id->length+1,resource->buf,resource->length); - buf[length] = '\0'; - str->buf = buf; - str->length = length; - return TRUE; -} - -/** Generate name-value pair line */ -APT_DECLARE(apt_bool_t) apt_text_name_value_insert(apt_text_stream_t *stream, const apt_str_t *name, const apt_str_t *value) -{ - char *pos = stream->pos; - if(pos + name->length + value->length + 2 >= stream->end) { - return FALSE; - } - memcpy(pos,name->buf,name->length); - pos += name->length; - *pos++ = ':'; - *pos++ = APT_TOKEN_SP; - if(apt_string_is_empty(value) == FALSE) { - memcpy(pos,value->buf,value->length); - pos += value->length; - } - stream->pos = pos; - return apt_text_eol_insert(stream); -} - -/** Generate only the name ("name":) of the header field */ -APT_DECLARE(apt_bool_t) apt_text_header_name_insert(apt_text_stream_t *stream, const apt_str_t *name) -{ - char *pos = stream->pos; - if(pos + name->length + 2 >= stream->end) { - return FALSE; - } - memcpy(pos,name->buf,name->length); - pos += name->length; - *pos++ = ':'; - *pos++ = APT_TOKEN_SP; - stream->pos = pos; - return TRUE; -} - -/** Parse name=value pair */ -static apt_bool_t apt_pair_parse(apt_pair_t *pair, const apt_str_t *field, apr_pool_t *pool) -{ - apt_text_stream_t stream; - apt_str_t item; - stream.text = *field; - apt_text_stream_reset(&stream); - - /* read name */ - if(apt_text_field_read(&stream,'=',TRUE,&item) == FALSE) { - return FALSE; - } - apt_string_copy(&pair->name,&item,pool); - - /* read value */ - if(apt_text_field_read(&stream,';',TRUE,&item) == TRUE) { - apt_string_copy(&pair->value,&item,pool); - } - else { - apt_string_reset(&pair->value); - } - return TRUE; -} - -/** Parse array of name-value pairs */ -APT_DECLARE(apt_bool_t) apt_pair_array_parse(apt_pair_arr_t *arr, const apt_str_t *value, apr_pool_t *pool) -{ - apt_str_t field; - apt_pair_t *pair; - apt_text_stream_t stream; - if(!arr || !value) { - return FALSE; - } - - stream.text = *value; - apt_text_stream_reset(&stream); - /* read name-value pairs */ - while(apt_text_field_read(&stream,';',TRUE,&field) == TRUE) { - pair = apr_array_push(arr); - apt_pair_parse(pair,&field,pool); - } - return TRUE; -} - -/** Generate array of name-value pairs */ -APT_DECLARE(apt_bool_t) apt_pair_array_generate(const apt_pair_arr_t *arr, apt_str_t *str, apr_pool_t *pool) -{ - int i; - char *pos; - apt_pair_t *pair; - if(!arr || !str) { - return FALSE; - } - - /* Compute length of string being generated */ - str->length = 0; - for(i=0; inelts; i++) { - pair = (apt_pair_t*)arr->elts + i; - /* name */ - str->length += pair->name.length; - if(pair->value.length) { - /* =value */ - str->length += 1 + pair->value.length; - } - } - if(arr->nelts) { - /* ; */ - str->length += arr->nelts - 1; - } - - /* Allocate required string */ - str->buf = apr_palloc(pool, str->length + 1); - - /* Copy pairs into allocated string */ - pos = str->buf; - for(i=0; inelts; i++) { - pair = (apt_pair_t*)arr->elts + i; - if(i != 0) { - *pos++ = ';'; - } - if(pair->name.length) { - memcpy(pos,pair->name.buf,pair->name.length); - pos += pair->name.length; - if(pair->value.length) { - *pos++ = '='; - memcpy(pos,pair->value.buf,pair->value.length); - pos += pair->value.length; - } - } - } - *pos = '\0'; - return TRUE; -} - -/** Parse boolean-value */ -APT_DECLARE(apt_bool_t) apt_boolean_value_parse(const apt_str_t *str, apt_bool_t *value) -{ - if(!str->buf) { - return FALSE; - } - if(strncasecmp(str->buf,TOKEN_TRUE,TOKEN_TRUE_LENGTH) == 0) { - *value = TRUE; - return TRUE; - } - if(strncasecmp(str->buf,TOKEN_FALSE,TOKEN_FALSE_LENGTH) == 0) { - *value = FALSE; - return TRUE; - } - return FALSE; -} - -/** Generate apr_size_t value from pool (buffer is allocated from pool) */ -APT_DECLARE(apt_bool_t) apt_boolean_value_generate(apt_bool_t value, apt_str_t *str, apr_pool_t *pool) -{ - if(value == TRUE) { - str->length = TOKEN_TRUE_LENGTH; - str->buf = apr_palloc(pool,str->length); - memcpy(str->buf,TOKEN_TRUE,str->length); - } - else { - str->length = TOKEN_FALSE_LENGTH; - str->buf = apr_palloc(pool,str->length); - memcpy(str->buf,TOKEN_FALSE,str->length); - } - return TRUE; -} - - -/** Parse size_t value */ -APT_DECLARE(apr_size_t) apt_size_value_parse(const apt_str_t *str) -{ - return str->buf ? atol(str->buf) : 0; -} - -/** Generate apr_size_t value (buffer is allocated from pool) */ -APT_DECLARE(apt_bool_t) apt_size_value_generate(apr_size_t value, apt_str_t *str, apr_pool_t *pool) -{ - str->buf = apr_psprintf(pool, "%"APR_SIZE_T_FMT, value); - str->length = strlen(str->buf); - return TRUE; -} - -/** Insert apr_size_t value */ -APT_DECLARE(apt_bool_t) apt_text_size_value_insert(apt_text_stream_t *stream, apr_size_t value) -{ - int length = apr_snprintf(stream->pos, stream->end - stream->pos, "%"APR_SIZE_T_FMT, value); - if(length <= 0) { - return FALSE; - } - stream->pos += length; - return TRUE; -} - - -/** Parse float value */ -APT_DECLARE(float) apt_float_value_parse(const apt_str_t *str) -{ - return str->buf ? (float)atof(str->buf) : 0; -} - -/** Generate float value (buffer is allocated from pool) */ -APT_DECLARE(apt_bool_t) apt_float_value_generate(float value, apt_str_t *str, apr_pool_t *pool) -{ - char *end; - str->buf = apr_psprintf(pool,"%f",value); - str->length = strlen(str->buf); - - /* remove trailing 0s (if any) */ - end = str->buf + str->length - 1; - while(*end == 0x30 && end != str->buf && *(end - 1) != '.') end--; - - str->length = end - str->buf + 1; - return TRUE; -} - -/** Generate float value */ -APT_DECLARE(apt_bool_t) apt_text_float_value_insert(apt_text_stream_t *stream, float value) -{ - char *end; - int length = apr_snprintf(stream->pos, stream->end - stream->pos, "%f", value); - if(length <= 0) { - return FALSE; - } - - /* remove trailing 0s (if any) */ - end = stream->pos + length - 1; - while(*end == 0x30 && end != stream->pos && *(end - 1) != '.') end--; - - stream->pos = end + 1; - return TRUE; -} - -/** Insert string value */ -APT_DECLARE(apt_bool_t) apt_text_string_insert(apt_text_stream_t *stream, const apt_str_t *str) -{ - if(stream->pos + str->length >= stream->end) { - return FALSE; - } - if(str->length) { - memcpy(stream->pos,str->buf,str->length); - stream->pos += str->length; - } - return TRUE; -} - -/** Generate value plus the length (number of digits) of the value itself. */ -APT_DECLARE(apt_bool_t) apt_var_length_value_generate(apr_size_t *value, apr_size_t max_count, apt_str_t *str) -{ - /* (N >= (10^M-M)) ? N+M+1 : N+M */ - apr_size_t temp; - apr_size_t count; /* M */ - apr_size_t bounds; /* 10^M */ - int length; - - /* calculate count */ - temp = *value; - count = 0; - do{count++; temp /= 10;} while(temp); - - /* calculate bounds */ - temp = count; - bounds = 1; - do{bounds *= 10; temp--;} while(temp); - - if(*value >= bounds - count) { - count++; - } - - *value += count; - if(count > max_count) { - return FALSE; - } - - str->length = 0; - length = sprintf(str->buf, "%"APR_SIZE_T_FMT, *value); - if(length <= 0) { - return FALSE; - } - str->length = length; - return TRUE; -} - -/** Generate completion-cause */ -APT_DECLARE(apt_bool_t) apt_completion_cause_generate(const apt_str_table_item_t table[], apr_size_t size, apr_size_t cause, apt_str_t *str, apr_pool_t *pool) -{ - const apt_str_t *name = apt_string_table_str_get(table,size,cause); - if(!name) { - return FALSE; - } - - /* 3 digits + 1 space + name->length */ - str->length = 4 + name->length; - str->buf = apr_palloc(pool,str->length + 1); - - if(sprintf(str->buf,"%03"APR_SIZE_T_FMT" ",cause) != 4) { - return FALSE; - } - - memcpy(str->buf+4,name->buf,name->length); - str->buf[str->length] = '\0'; - return TRUE; -} - - -/** Generate unique identifier (hex string) */ -APT_DECLARE(apt_bool_t) apt_unique_id_generate(apt_str_t *id, apr_size_t length, apr_pool_t *pool) -{ - char *hex_str; - apr_size_t i; - apr_size_t count; - apr_uuid_t uuid; - apr_uuid_get(&uuid); - - hex_str = apr_palloc(pool,length+1); - - count = length / 2; - if(count > sizeof(uuid)) { - count = sizeof(uuid); - } - for(i=0; ibuf = hex_str; - id->length = length; - return TRUE; -} diff --git a/libs/unimrcp/libs/apr-toolkit/src/apt_timer_queue.c b/libs/unimrcp/libs/apr-toolkit/src/apt_timer_queue.c deleted file mode 100644 index 05638260b93..00000000000 --- a/libs/unimrcp/libs/apr-toolkit/src/apt_timer_queue.c +++ /dev/null @@ -1,229 +0,0 @@ -/* - * Copyright 2008-2014 Arsen Chaloyan - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - * - * $Id: apt_timer_queue.c 2174 2014-09-12 03:33:16Z achaloyan@gmail.com $ - */ - -#ifdef WIN32 -#pragma warning(disable: 4127) -#endif -#include -#include "apt_timer_queue.h" -#include "apt_log.h" - -/** Timer queue */ -struct apt_timer_queue_t { - /** Ring head */ - APR_RING_HEAD(apt_timer_head_t, apt_timer_t) head; - - /** Elapsed time */ - apr_uint32_t elapsed_time; -}; - -/** Timer */ -struct apt_timer_t { - /** Ring entry */ - APR_RING_ENTRY(apt_timer_t) link; - - /** Back pointer to queue */ - apt_timer_queue_t *queue; - /** Time next report is scheduled at */ - apr_uint32_t scheduled_time; - - /** Timer proc */ - apt_timer_proc_f proc; - /** Timer object */ - void *obj; -}; - -static apt_bool_t apt_timer_insert(apt_timer_queue_t *timer_queue, apt_timer_t *timer); -static apt_bool_t apt_timer_remove(apt_timer_queue_t *timer_queue, apt_timer_t *timer); -static void apt_timers_reschedule(apt_timer_queue_t *timer_queue); - -/** Create timer queue */ -APT_DECLARE(apt_timer_queue_t*) apt_timer_queue_create(apr_pool_t *pool) -{ - apt_timer_queue_t *timer_queue = apr_palloc(pool,sizeof(apt_timer_queue_t)); - APR_RING_INIT(&timer_queue->head, apt_timer_t, link); - timer_queue->elapsed_time = 0; - return timer_queue; -} - -/** Destroy timer queue */ -APT_DECLARE(void) apt_timer_queue_destroy(apt_timer_queue_t *timer_queue) -{ - /* nothing to destroy */ -} - -/** Advance scheduled timers */ -APT_DECLARE(void) apt_timer_queue_advance(apt_timer_queue_t *timer_queue, apr_uint32_t elapsed_time) -{ - apt_timer_t *timer; - - if(APR_RING_EMPTY(&timer_queue->head, apt_timer_t, link)) { - /* just return, nothing to do */ - return; - } - - /* increment elapsed time */ - timer_queue->elapsed_time += elapsed_time; - if(timer_queue->elapsed_time >= 0xFFFF) { -#ifdef APT_TIMER_DEBUG - apt_log(APT_LOG_MARK,APT_PRIO_DEBUG,"Reschedule Timers [%u]",timer_queue->elapsed_time); -#endif - apt_timers_reschedule(timer_queue); - } - - /* process timers */ - do { - /* get first node (timer) */ - timer = APR_RING_FIRST(&timer_queue->head); - - if(timer->scheduled_time > timer_queue->elapsed_time) { - /* scheduled time is not elapsed yet */ - break; - } - -#ifdef APT_TIMER_DEBUG - apt_log(APT_LOG_MARK,APT_PRIO_DEBUG,"Timer Elapsed 0x%x [%u]",timer,timer->scheduled_time); -#endif - /* remove the elapsed timer from the list */ - APR_RING_REMOVE(timer, link); - timer->scheduled_time = 0; - /* process the elapsed timer */ - timer->proc(timer,timer->obj); - } - while(!APR_RING_EMPTY(&timer_queue->head, apt_timer_t, link)); -} - -/** Is timer queue empty */ -APT_DECLARE(apt_bool_t) apt_timer_queue_is_empty(const apt_timer_queue_t *timer_queue) -{ - return APR_RING_EMPTY(&timer_queue->head, apt_timer_t, link) ? TRUE : FALSE; -} - -/** Get current timeout */ -APT_DECLARE(apt_bool_t) apt_timer_queue_timeout_get(const apt_timer_queue_t *timer_queue, apr_uint32_t *timeout) -{ - apt_timer_t *timer; - /* is queue empty */ - if(APR_RING_EMPTY(&timer_queue->head, apt_timer_t, link)) { - return FALSE; - } - - /* get first node (timer) */ - timer = APR_RING_FIRST(&timer_queue->head); - if(!timer) { - return FALSE; - } - - *timeout = timer->scheduled_time - timer_queue->elapsed_time; - return TRUE; -} - -/** Create timer */ -APT_DECLARE(apt_timer_t*) apt_timer_create(apt_timer_queue_t *timer_queue, apt_timer_proc_f proc, void *obj, apr_pool_t *pool) -{ - apt_timer_t *timer = apr_palloc(pool,sizeof(apt_timer_t)); - APR_RING_ELEM_INIT(timer,link); - timer->queue = timer_queue; - timer->scheduled_time = 0; - timer->proc = proc; - timer->obj = obj; - return timer; -} - -/** Set one-shot timer */ -APT_DECLARE(apt_bool_t) apt_timer_set(apt_timer_t *timer, apr_uint32_t timeout) - -{ - apt_timer_queue_t *queue = timer->queue; - - if(timeout <= 0 || !timer->proc) { - return FALSE; - } - - if(timer->scheduled_time) { - /* remove timer first */ - apt_timer_remove(queue,timer); - } - - /* calculate time to elapse */ - timer->scheduled_time = queue->elapsed_time + timeout; -#ifdef APT_TIMER_DEBUG - apt_log(APT_LOG_MARK,APT_PRIO_DEBUG,"Set Timer 0x%x [%u]",timer,timer->scheduled_time); -#endif - if(APR_RING_EMPTY(&queue->head, apt_timer_t, link)) { - APR_RING_INSERT_TAIL(&queue->head,timer,apt_timer_t,link); - return TRUE; - } - - /* insert new node (timer) to sorted by scheduled time list */ - return apt_timer_insert(queue,timer); -} - -/** Kill timer */ -APT_DECLARE(apt_bool_t) apt_timer_kill(apt_timer_t *timer) -{ - if(!timer->scheduled_time) { - return FALSE; - } - -#ifdef APT_TIMER_DEBUG - apt_log(APT_LOG_MARK,APT_PRIO_DEBUG,"Kill Timer 0x%x [%u]",timer,timer->scheduled_time); -#endif - return apt_timer_remove(timer->queue,timer); -} - -static apt_bool_t apt_timer_insert(apt_timer_queue_t *timer_queue, apt_timer_t *timer) -{ - apt_timer_t *it; - for(it = APR_RING_LAST(&timer_queue->head); - it != APR_RING_SENTINEL(&timer_queue->head, apt_timer_t, link); - it = APR_RING_PREV(it, link)) { - - if(it->scheduled_time <= timer->scheduled_time) { - APR_RING_INSERT_AFTER(it,timer,link); - return TRUE; - } - } - APR_RING_INSERT_HEAD(&timer_queue->head,timer,apt_timer_t,link); - return TRUE; -} - -static apt_bool_t apt_timer_remove(apt_timer_queue_t *timer_queue, apt_timer_t *timer) -{ - /* remove node (timer) from the list */ - APR_RING_REMOVE(timer,link); - timer->scheduled_time = 0; - - if(APR_RING_EMPTY(&timer_queue->head, apt_timer_t, link)) { - /* reset elapsed time if no timers set */ - timer_queue->elapsed_time = 0; - } - return TRUE; -} - -static void apt_timers_reschedule(apt_timer_queue_t *timer_queue) -{ - apt_timer_t *it; - for(it = APR_RING_LAST(&timer_queue->head); - it != APR_RING_SENTINEL(&timer_queue->head, apt_timer_t, link); - it = APR_RING_PREV(it, link)) { - - it->scheduled_time -= timer_queue->elapsed_time; - } - timer_queue->elapsed_time = 0; -} diff --git a/libs/unimrcp/libs/mpf/Makefile.am b/libs/unimrcp/libs/mpf/Makefile.am deleted file mode 100644 index f877596a411..00000000000 --- a/libs/unimrcp/libs/mpf/Makefile.am +++ /dev/null @@ -1,82 +0,0 @@ -MAINTAINERCLEANFILES = Makefile.in - -AM_CPPFLAGS = -I$(top_srcdir)/libs/mpf/codecs \ - -I$(top_srcdir)/libs/mpf/include \ - -I$(top_srcdir)/libs/apr-toolkit/include \ - $(UNIMRCP_APR_INCLUDES) - -noinst_LTLIBRARIES = libmpf.la - -include_HEADERS = codecs/g711/g711.h \ - include/mpf.h \ - include/mpf_activity_detector.h \ - include/mpf_audio_file_descriptor.h \ - include/mpf_audio_file_stream.h \ - include/mpf_bridge.h \ - include/mpf_buffer.h \ - include/mpf_codec.h \ - include/mpf_codec_descriptor.h \ - include/mpf_codec_manager.h \ - include/mpf_context.h \ - include/mpf_dtmf_detector.h \ - include/mpf_dtmf_generator.h \ - include/mpf_engine.h \ - include/mpf_engine_factory.h \ - include/mpf_frame.h \ - include/mpf_frame_buffer.h \ - include/mpf_message.h \ - include/mpf_mixer.h \ - include/mpf_multiplier.h \ - include/mpf_named_event.h \ - include/mpf_object.h \ - include/mpf_stream.h \ - include/mpf_stream_descriptor.h \ - include/mpf_termination.h \ - include/mpf_termination_factory.h \ - include/mpf_rtp_termination_factory.h \ - include/mpf_file_termination_factory.h \ - include/mpf_scheduler.h \ - include/mpf_types.h \ - include/mpf_encoder.h \ - include/mpf_decoder.h \ - include/mpf_jitter_buffer.h \ - include/mpf_rtp_header.h \ - include/mpf_rtp_descriptor.h \ - include/mpf_rtp_stream.h \ - include/mpf_rtp_stat.h \ - include/mpf_rtp_defs.h \ - include/mpf_rtp_attribs.h \ - include/mpf_rtp_pt.h \ - include/mpf_rtcp_packet.h \ - include/mpf_resampler.h - -libmpf_la_SOURCES = codecs/g711/g711.c \ - src/mpf_activity_detector.c \ - src/mpf_audio_file_stream.c \ - src/mpf_bridge.c \ - src/mpf_buffer.c \ - src/mpf_codec_descriptor.c \ - src/mpf_codec_g711.c \ - src/mpf_codec_linear.c \ - src/mpf_codec_manager.c \ - src/mpf_context.c \ - src/mpf_dtmf_detector.c \ - src/mpf_dtmf_generator.c \ - src/mpf_engine.c \ - src/mpf_engine_factory.c \ - src/mpf_mixer.c \ - src/mpf_multiplier.c \ - src/mpf_named_event.c \ - src/mpf_termination.c \ - src/mpf_termination_factory.c \ - src/mpf_rtp_termination_factory.c \ - src/mpf_file_termination_factory.c \ - src/mpf_frame_buffer.c \ - src/mpf_scheduler.c \ - src/mpf_encoder.c \ - src/mpf_decoder.c \ - src/mpf_jitter_buffer.c \ - src/mpf_rtp_stream.c \ - src/mpf_rtp_attribs.c \ - src/mpf_resampler.c \ - src/mpf_stream.c diff --git a/libs/unimrcp/libs/mpf/codecs/g711/g711.c b/libs/unimrcp/libs/mpf/codecs/g711/g711.c deleted file mode 100644 index 1d2a0791524..00000000000 --- a/libs/unimrcp/libs/mpf/codecs/g711/g711.c +++ /dev/null @@ -1,73 +0,0 @@ -/* - * SpanDSP - a series of DSP components for telephony - * - * g711.c - A-law and u-law transcoding routines - * - * Written by Steve Underwood - * - * Copyright (C) 2006 Steve Underwood - * - * Despite my general liking of the GPL, I place this code in the - * public domain for the benefit of all mankind - even the slimy - * ones who might try to proprietize my work and use it to my - * detriment. - * - */ - -#include "g711.h" - -/* Copied from the CCITT G.711 specification */ -static const apr_byte_t ulaw_to_alaw_table[256] = -{ - 42, 43, 40, 41, 46, 47, 44, 45, 34, 35, 32, 33, 38, 39, 36, 37, - 58, 59, 56, 57, 62, 63, 60, 61, 50, 51, 48, 49, 54, 55, 52, 53, - 10, 11, 8, 9, 14, 15, 12, 13, 2, 3, 0, 1, 6, 7, 4, 26, - 27, 24, 25, 30, 31, 28, 29, 18, 19, 16, 17, 22, 23, 20, 21, 106, - 104, 105, 110, 111, 108, 109, 98, 99, 96, 97, 102, 103, 100, 101, 122, 120, - 126, 127, 124, 125, 114, 115, 112, 113, 118, 119, 116, 117, 75, 73, 79, 77, - 66, 67, 64, 65, 70, 71, 68, 69, 90, 91, 88, 89, 94, 95, 92, 93, - 82, 82, 83, 83, 80, 80, 81, 81, 86, 86, 87, 87, 84, 84, 85, 85, - 170, 171, 168, 169, 174, 175, 172, 173, 162, 163, 160, 161, 166, 167, 164, 165, - 186, 187, 184, 185, 190, 191, 188, 189, 178, 179, 176, 177, 182, 183, 180, 181, - 138, 139, 136, 137, 142, 143, 140, 141, 130, 131, 128, 129, 134, 135, 132, 154, - 155, 152, 153, 158, 159, 156, 157, 146, 147, 144, 145, 150, 151, 148, 149, 234, - 232, 233, 238, 239, 236, 237, 226, 227, 224, 225, 230, 231, 228, 229, 250, 248, - 254, 255, 252, 253, 242, 243, 240, 241, 246, 247, 244, 245, 203, 201, 207, 205, - 194, 195, 192, 193, 198, 199, 196, 197, 218, 219, 216, 217, 222, 223, 220, 221, - 210, 210, 211, 211, 208, 208, 209, 209, 214, 214, 215, 215, 212, 212, 213, 213 -}; - -/* These transcoding tables are copied from the CCITT G.711 specification. To achieve - optimal results, do not change them. */ -static const apr_byte_t alaw_to_ulaw_table[256] = -{ - 42, 43, 40, 41, 46, 47, 44, 45, 34, 35, 32, 33, 38, 39, 36, 37, - 57, 58, 55, 56, 61, 62, 59, 60, 49, 50, 47, 48, 53, 54, 51, 52, - 10, 11, 8, 9, 14, 15, 12, 13, 2, 3, 0, 1, 6, 7, 4, 5, - 26, 27, 24, 25, 30, 31, 28, 29, 18, 19, 16, 17, 22, 23, 20, 21, - 98, 99, 96, 97, 102, 103, 100, 101, 93, 93, 92, 92, 95, 95, 94, 94, - 116, 118, 112, 114, 124, 126, 120, 122, 106, 107, 104, 105, 110, 111, 108, 109, - 72, 73, 70, 71, 76, 77, 74, 75, 64, 65, 63, 63, 68, 69, 66, 67, - 86, 87, 84, 85, 90, 91, 88, 89, 79, 79, 78, 78, 82, 83, 80, 81, - 170, 171, 168, 169, 174, 175, 172, 173, 162, 163, 160, 161, 166, 167, 164, 165, - 185, 186, 183, 184, 189, 190, 187, 188, 177, 178, 175, 176, 181, 182, 179, 180, - 138, 139, 136, 137, 142, 143, 140, 141, 130, 131, 128, 129, 134, 135, 132, 133, - 154, 155, 152, 153, 158, 159, 156, 157, 146, 147, 144, 145, 150, 151, 148, 149, - 226, 227, 224, 225, 230, 231, 228, 229, 221, 221, 220, 220, 223, 223, 222, 222, - 244, 246, 240, 242, 252, 254, 248, 250, 234, 235, 232, 233, 238, 239, 236, 237, - 200, 201, 198, 199, 204, 205, 202, 203, 192, 193, 191, 191, 196, 197, 194, 195, - 214, 215, 212, 213, 218, 219, 216, 217, 207, 207, 206, 206, 210, 211, 208, 209 -}; - -apr_byte_t alaw_to_ulaw(apr_byte_t alaw) -{ - return alaw_to_ulaw_table[alaw]; -} -/*- End of function --------------------------------------------------------*/ - -apr_byte_t ulaw_to_alaw(apr_byte_t ulaw) -{ - return ulaw_to_alaw_table[ulaw]; -} -/*- End of function --------------------------------------------------------*/ -/*- End of file ------------------------------------------------------------*/ diff --git a/libs/unimrcp/libs/mpf/codecs/g711/g711.h b/libs/unimrcp/libs/mpf/codecs/g711/g711.h deleted file mode 100644 index 3814dd79dcd..00000000000 --- a/libs/unimrcp/libs/mpf/codecs/g711/g711.h +++ /dev/null @@ -1,374 +0,0 @@ -/* - * SpanDSP - a series of DSP components for telephony - * - * g711.h - In line A-law and u-law conversion routines - * - * Written by Steve Underwood - * - * Copyright (C) 2001 Steve Underwood - * - * Despite my general liking of the GPL, I place this code in the - * public domain for the benefit of all mankind - even the slimy - * ones who might try to proprietize my work and use it to my - * detriment. - * - */ - -/* g711_page A-law and mu-law handling -Lookup tables for A-law and u-law look attractive, until you consider the impact -on the CPU cache. If it causes a substantial area of your processor cache to get -hit too often, cache sloshing will severely slow things down. The main reason -these routines are slow in C, is the lack of direct access to the CPU's "find -the first 1" instruction. A little in-line assembler fixes that, and the -conversion routines can be faster than lookup tables, in most real world usage. -A "find the first 1" instruction is available on most modern CPUs, and is a -much underused feature. - -If an assembly language method of bit searching is not available, these routines -revert to a method that can be a little slow, so the cache thrashing might not -seem so bad :( - -Feel free to submit patches to add fast "find the first 1" support for your own -favourite processor. - -Look up tables are used for transcoding between A-law and u-law, since it is -difficult to achieve the precise transcoding procedure laid down in the G.711 -specification by other means. -*/ - -#ifndef MPF_G711_H -#define MPF_G711_H - -/** - * @file g711.h - * @brief A-law and u-law conversion routines - */ - -#include "mpf.h" - -APT_BEGIN_EXTERN_C - -#if defined(__i386__) -/*! \brief Find the bit position of the highest set bit in a word - \param bits The word to be searched - \return The bit number of the highest set bit, or -1 if the word is zero. */ -static APR_INLINE int top_bit(unsigned int bits) -{ - int res; - - __asm__ __volatile__(" movl $-1,%%edx;\n" - " bsrl %%eax,%%edx;\n" - : "=d" (res) - : "a" (bits)); - return res; -} -/*- End of function --------------------------------------------------------*/ - -/*! \brief Find the bit position of the lowest set bit in a word - \param bits The word to be searched - \return The bit number of the lowest set bit, or -1 if the word is zero. */ -static APR_INLINE int bottom_bit(unsigned int bits) -{ - int res; - - __asm__ __volatile__(" movl $-1,%%edx;\n" - " bsfl %%eax,%%edx;\n" - : "=d" (res) - : "a" (bits)); - return res; -} -/*- End of function --------------------------------------------------------*/ -#elif defined(__x86_64__) -static APR_INLINE int top_bit(unsigned int bits) -{ - int res; - - __asm__ __volatile__(" movq $-1,%%rdx;\n" - " bsrq %%rax,%%rdx;\n" - : "=d" (res) - : "a" (bits)); - return res; -} -/*- End of function --------------------------------------------------------*/ - -static APR_INLINE int bottom_bit(unsigned int bits) -{ - int res; - - __asm__ __volatile__(" movq $-1,%%rdx;\n" - " bsfq %%rax,%%rdx;\n" - : "=d" (res) - : "a" (bits)); - return res; -} -/*- End of function --------------------------------------------------------*/ -#else -static APR_INLINE int top_bit(unsigned int bits) -{ - int i; - - if (bits == 0) - return -1; - i = 0; - if (bits & 0xFFFF0000) - { - bits &= 0xFFFF0000; - i += 16; - } - if (bits & 0xFF00FF00) - { - bits &= 0xFF00FF00; - i += 8; - } - if (bits & 0xF0F0F0F0) - { - bits &= 0xF0F0F0F0; - i += 4; - } - if (bits & 0xCCCCCCCC) - { - bits &= 0xCCCCCCCC; - i += 2; - } - if (bits & 0xAAAAAAAA) - { - bits &= 0xAAAAAAAA; - i += 1; - } - return i; -} -/*- End of function --------------------------------------------------------*/ - -static APR_INLINE int bottom_bit(unsigned int bits) -{ - int i; - - if (bits == 0) - return -1; - i = 32; - if (bits & 0x0000FFFF) - { - bits &= 0x0000FFFF; - i -= 16; - } - if (bits & 0x00FF00FF) - { - bits &= 0x00FF00FF; - i -= 8; - } - if (bits & 0x0F0F0F0F) - { - bits &= 0x0F0F0F0F; - i -= 4; - } - if (bits & 0x33333333) - { - bits &= 0x33333333; - i -= 2; - } - if (bits & 0x55555555) - { - bits &= 0x55555555; - i -= 1; - } - return i; -} -/*- End of function --------------------------------------------------------*/ -#endif - -/* N.B. It is tempting to use look-up tables for A-law and u-law conversion. - * However, you should consider the cache footprint. - * - * A 64K byte table for linear to x-law and a 512 byte table for x-law to - * linear sound like peanuts these days, and shouldn't an array lookup be - * real fast? No! When the cache sloshes as badly as this one will, a tight - * calculation may be better. The messiest part is normally finding the - * segment, but a little inline assembly can fix that on an i386, x86_64 and - * many other modern processors. - */ - -/* - * Mu-law is basically as follows: - * - * Biased Linear Input Code Compressed Code - * ------------------------ --------------- - * 00000001wxyza 000wxyz - * 0000001wxyzab 001wxyz - * 000001wxyzabc 010wxyz - * 00001wxyzabcd 011wxyz - * 0001wxyzabcde 100wxyz - * 001wxyzabcdef 101wxyz - * 01wxyzabcdefg 110wxyz - * 1wxyzabcdefgh 111wxyz - * - * Each biased linear code has a leading 1 which identifies the segment - * number. The value of the segment number is equal to 7 minus the number - * of leading 0's. The quantization interval is directly available as the - * four bits wxyz. * The trailing bits (a - h) are ignored. - * - * Ordinarily the complement of the resulting code word is used for - * transmission, and so the code word is complemented before it is returned. - * - * For further information see John C. Bellamy's Digital Telephony, 1982, - * John Wiley & Sons, pps 98-111 and 472-476. - */ - -//#define ULAW_ZEROTRAP /* turn on the trap as per the MIL-STD */ -#define ULAW_BIAS 0x84 /* Bias for linear code. */ - -/*! \brief Encode a linear sample to u-law - \param linear The sample to encode. - \return The u-law value. -*/ -static APR_INLINE apr_byte_t linear_to_ulaw(int linear) -{ - apr_byte_t u_val; - int mask; - int seg; - - /* Get the sign and the magnitude of the value. */ - if (linear < 0) - { - linear = ULAW_BIAS - linear - 1; - mask = 0x7F; - } - else - { - linear = ULAW_BIAS + linear; - mask = 0xFF; - } - - seg = top_bit(linear | 0xFF) - 7; - - /* - * Combine the sign, segment, quantization bits, - * and complement the code word. - */ - if (seg >= 8) - u_val = (apr_byte_t) (0x7F ^ mask); - else - u_val = (apr_byte_t) (((seg << 4) | ((linear >> (seg + 3)) & 0xF)) ^ mask); -#ifdef ULAW_ZEROTRAP - /* Optional ITU trap */ - if (u_val == 0) - u_val = 0x02; -#endif - return u_val; -} -/*- End of function --------------------------------------------------------*/ - -/*! \brief Decode an u-law sample to a linear value. - \param ulaw The u-law sample to decode. - \return The linear value. -*/ -static APR_INLINE apr_int16_t ulaw_to_linear(apr_byte_t ulaw) -{ - int t; - - /* Complement to obtain normal u-law value. */ - ulaw = ~ulaw; - /* - * Extract and bias the quantization bits. Then - * shift up by the segment number and subtract out the bias. - */ - t = (((ulaw & 0x0F) << 3) + ULAW_BIAS) << (((int) ulaw & 0x70) >> 4); - return (apr_int16_t) ((ulaw & 0x80) ? (ULAW_BIAS - t) : (t - ULAW_BIAS)); -} -/*- End of function --------------------------------------------------------*/ - -/* - * A-law is basically as follows: - * - * Linear Input Code Compressed Code - * ----------------- --------------- - * 0000000wxyza 000wxyz - * 0000001wxyza 001wxyz - * 000001wxyzab 010wxyz - * 00001wxyzabc 011wxyz - * 0001wxyzabcd 100wxyz - * 001wxyzabcde 101wxyz - * 01wxyzabcdef 110wxyz - * 1wxyzabcdefg 111wxyz - * - * For further information see John C. Bellamy's Digital Telephony, 1982, - * John Wiley & Sons, pps 98-111 and 472-476. - */ - -#define ALAW_AMI_MASK 0x55 - -/*! \brief Encode a linear sample to A-law - \param linear The sample to encode. - \return The A-law value. -*/ -static APR_INLINE apr_byte_t linear_to_alaw(int linear) -{ - int mask; - int seg; - - if (linear >= 0) - { - /* Sign (bit 7) bit = 1 */ - mask = ALAW_AMI_MASK | 0x80; - } - else - { - /* Sign (bit 7) bit = 0 */ - mask = ALAW_AMI_MASK; - linear = -linear - 1; - } - - /* Convert the scaled magnitude to segment number. */ - seg = top_bit(linear | 0xFF) - 7; - if (seg >= 8) - { - if (linear >= 0) - { - /* Out of range. Return maximum value. */ - return (apr_byte_t) (0x7F ^ mask); - } -#if 0 /* This code is no longer reachable, since linear must be at least 0. */ - /* We must be just a tiny step below zero */ - return (apr_byte_t) (0x00 ^ mask); -#endif - } - /* Combine the sign, segment, and quantization bits. */ - return (apr_byte_t) (((seg << 4) | ((linear >> ((seg) ? (seg + 3) : 4)) & 0x0F)) ^ mask); -} -/*- End of function --------------------------------------------------------*/ - -/*! \brief Decode an A-law sample to a linear value. - \param alaw The A-law sample to decode. - \return The linear value. -*/ -static APR_INLINE apr_int16_t alaw_to_linear(apr_byte_t alaw) -{ - int i; - int seg; - - alaw ^= ALAW_AMI_MASK; - i = ((alaw & 0x0F) << 4); - seg = (((int) alaw & 0x70) >> 4); - if (seg) - i = (i + 0x108) << (seg - 1); - else - i += 8; - return (apr_int16_t) ((alaw & 0x80) ? i : -i); -} -/*- End of function --------------------------------------------------------*/ - -/*! \brief Transcode from A-law to u-law, using the procedure defined in G.711. - \param alaw The A-law sample to transcode. - \return The best matching u-law value. -*/ -apr_byte_t alaw_to_ulaw(apr_byte_t alaw); - -/*! \brief Transcode from u-law to A-law, using the procedure defined in G.711. - \param alaw The u-law sample to transcode. - \return The best matching A-law value. -*/ -apr_byte_t ulaw_to_alaw(apr_byte_t ulaw); - -APT_END_EXTERN_C - -#endif /* MPF_G711_H */ -/*- End of file ------------------------------------------------------------*/ diff --git a/libs/unimrcp/libs/mpf/include/mpf.h b/libs/unimrcp/libs/mpf/include/mpf.h deleted file mode 100644 index a435893595c..00000000000 --- a/libs/unimrcp/libs/mpf/include/mpf.h +++ /dev/null @@ -1,44 +0,0 @@ -/* - * Copyright 2008-2014 Arsen Chaloyan - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - * - * $Id: mpf.h 2136 2014-07-04 06:33:36Z achaloyan@gmail.com $ - */ - -#ifndef MPF_H -#define MPF_H - -/** - * @file mpf.h - * @brief Media Processing Framework Definitions - */ - -#include - -/** lib export/import defines (win32) */ -#ifdef WIN32 -#ifdef MPF_STATIC_LIB -#define MPF_DECLARE(type) type __stdcall -#else -#ifdef MPF_LIB_EXPORT -#define MPF_DECLARE(type) __declspec(dllexport) type __stdcall -#else -#define MPF_DECLARE(type) __declspec(dllimport) type __stdcall -#endif -#endif -#else -#define MPF_DECLARE(type) type -#endif - -#endif /* MPF_H */ diff --git a/libs/unimrcp/libs/mpf/include/mpf_activity_detector.h b/libs/unimrcp/libs/mpf/include/mpf_activity_detector.h deleted file mode 100644 index fe2f15cec0a..00000000000 --- a/libs/unimrcp/libs/mpf/include/mpf_activity_detector.h +++ /dev/null @@ -1,68 +0,0 @@ -/* - * Copyright 2008-2014 Arsen Chaloyan - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - * - * $Id: mpf_activity_detector.h 2136 2014-07-04 06:33:36Z achaloyan@gmail.com $ - */ - -#ifndef MPF_ACTIVITY_DETECTOR_H -#define MPF_ACTIVITY_DETECTOR_H - -/** - * @file mpf_activity_detector.h - * @brief MPF Voice Activity Detector - */ - -#include "mpf_frame.h" -#include "mpf_codec_descriptor.h" - -APT_BEGIN_EXTERN_C - -/** Opaque (voice) activity detector */ -typedef struct mpf_activity_detector_t mpf_activity_detector_t; - -/** Events of activity detector */ -typedef enum { - MPF_DETECTOR_EVENT_NONE, /**< no event occurred */ - MPF_DETECTOR_EVENT_ACTIVITY, /**< voice activity (transition to activity from inactivity state) */ - MPF_DETECTOR_EVENT_INACTIVITY, /**< voice inactivity (transition to inactivity from activity state) */ - MPF_DETECTOR_EVENT_NOINPUT /**< noinput event occurred */ -} mpf_detector_event_e; - - -/** Create activity detector */ -MPF_DECLARE(mpf_activity_detector_t*) mpf_activity_detector_create(apr_pool_t *pool); - -/** Reset activity detector */ -MPF_DECLARE(void) mpf_activity_detector_reset(mpf_activity_detector_t *detector); - -/** Set threshold of voice activity (silence) level */ -MPF_DECLARE(void) mpf_activity_detector_level_set(mpf_activity_detector_t *detector, apr_size_t level_threshold); - -/** Set noinput timeout */ -MPF_DECLARE(void) mpf_activity_detector_noinput_timeout_set(mpf_activity_detector_t *detector, apr_size_t noinput_timeout); - -/** Set timeout required to trigger speech (transition from inactive to active state) */ -MPF_DECLARE(void) mpf_activity_detector_speech_timeout_set(mpf_activity_detector_t *detector, apr_size_t speech_timeout); - -/** Set timeout required to trigger silence (transition from active to inactive state) */ -MPF_DECLARE(void) mpf_activity_detector_silence_timeout_set(mpf_activity_detector_t *detector, apr_size_t silence_timeout); - -/** Process current frame, return detected event if any */ -MPF_DECLARE(mpf_detector_event_e) mpf_activity_detector_process(mpf_activity_detector_t *detector, const mpf_frame_t *frame); - - -APT_END_EXTERN_C - -#endif /* MPF_ACTIVITY_DETECTOR_H */ diff --git a/libs/unimrcp/libs/mpf/include/mpf_audio_file_descriptor.h b/libs/unimrcp/libs/mpf/include/mpf_audio_file_descriptor.h deleted file mode 100644 index d7673004ea3..00000000000 --- a/libs/unimrcp/libs/mpf/include/mpf_audio_file_descriptor.h +++ /dev/null @@ -1,56 +0,0 @@ -/* - * Copyright 2008-2014 Arsen Chaloyan - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - * - * $Id: mpf_audio_file_descriptor.h 2136 2014-07-04 06:33:36Z achaloyan@gmail.com $ - */ - -#ifndef MPF_AUDIO_FILE_DESCRIPTOR_H -#define MPF_AUDIO_FILE_DESCRIPTOR_H - -/** - * @file mpf_audio_file_descriptor.h - * @brief MPF Audio File Descriptor - */ - -#include -#include "mpf_stream_descriptor.h" - -APT_BEGIN_EXTERN_C - -/** FILE_READER defined as a stream source */ -#define FILE_READER STREAM_DIRECTION_RECEIVE -/** FILE_WRITER defined as a stream sink */ -#define FILE_WRITER STREAM_DIRECTION_SEND - -/** Audio file descriptor declaration */ -typedef struct mpf_audio_file_descriptor_t mpf_audio_file_descriptor_t; - -/** Audio file descriptor */ -struct mpf_audio_file_descriptor_t { - /** Indicate descriptor type (reader and/or writer) */ - mpf_stream_direction_e mask; - /** Codec descriptor to use for audio file read/write */ - mpf_codec_descriptor_t *codec_descriptor; - /** File handle to read audio stream */ - FILE *read_handle; - /** File handle to write audio stream */ - FILE *write_handle; - /** Max size of file */ - apr_size_t max_write_size; -}; - -APT_END_EXTERN_C - -#endif /* MPF_AUDIO_FILE_DESCRIPTOR_H */ diff --git a/libs/unimrcp/libs/mpf/include/mpf_audio_file_stream.h b/libs/unimrcp/libs/mpf/include/mpf_audio_file_stream.h deleted file mode 100644 index 92da4bead02..00000000000 --- a/libs/unimrcp/libs/mpf/include/mpf_audio_file_stream.h +++ /dev/null @@ -1,48 +0,0 @@ -/* - * Copyright 2008-2014 Arsen Chaloyan - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - * - * $Id: mpf_audio_file_stream.h 2136 2014-07-04 06:33:36Z achaloyan@gmail.com $ - */ - -#ifndef MPF_AUDIO_FILE_STREAM_H -#define MPF_AUDIO_FILE_STREAM_H - -/** - * @file mpf_audio_file_stream.h - * @brief MPF Audio FIle Stream - */ - -#include "mpf_stream.h" -#include "mpf_audio_file_descriptor.h" - -APT_BEGIN_EXTERN_C - -/** - * Create file stream. - * @param termination the back pointer to hold - * @param pool the pool to allocate memory from - */ -MPF_DECLARE(mpf_audio_stream_t*) mpf_file_stream_create(mpf_termination_t *termination, apr_pool_t *pool); - -/** - * Modify file stream. - * @param stream file stream to modify - * @param descriptor the descriptor to modify stream according - */ -MPF_DECLARE(apt_bool_t) mpf_file_stream_modify(mpf_audio_stream_t *stream, mpf_audio_file_descriptor_t *descriptor); - -APT_END_EXTERN_C - -#endif /* MPF_AUDIO_FILE_STREAM_H */ diff --git a/libs/unimrcp/libs/mpf/include/mpf_bridge.h b/libs/unimrcp/libs/mpf/include/mpf_bridge.h deleted file mode 100644 index 2cde68194d0..00000000000 --- a/libs/unimrcp/libs/mpf/include/mpf_bridge.h +++ /dev/null @@ -1,49 +0,0 @@ -/* - * Copyright 2008-2014 Arsen Chaloyan - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - * - * $Id: mpf_bridge.h 2136 2014-07-04 06:33:36Z achaloyan@gmail.com $ - */ - -#ifndef MPF_BRIDGE_H -#define MPF_BRIDGE_H - -/** - * @file mpf_bridge.h - * @brief MPF Stream Bridge - */ - -#include "mpf_object.h" - -APT_BEGIN_EXTERN_C - -/** - * Create bridge of audio streams. - * @param source the source audio stream - * @param sink the sink audio stream - * @param codec_manager the codec manager - * @param name the informative name used for debugging - * @param pool the pool to allocate memory from - */ -MPF_DECLARE(mpf_object_t*) mpf_bridge_create( - mpf_audio_stream_t *source, - mpf_audio_stream_t *sink, - const mpf_codec_manager_t *codec_manager, - const char *name, - apr_pool_t *pool); - - -APT_END_EXTERN_C - -#endif /* MPF_BRIDGE_H */ diff --git a/libs/unimrcp/libs/mpf/include/mpf_buffer.h b/libs/unimrcp/libs/mpf/include/mpf_buffer.h deleted file mode 100644 index bb82f24ade8..00000000000 --- a/libs/unimrcp/libs/mpf/include/mpf_buffer.h +++ /dev/null @@ -1,58 +0,0 @@ -/* - * Copyright 2008-2014 Arsen Chaloyan - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - * - * $Id: mpf_buffer.h 2136 2014-07-04 06:33:36Z achaloyan@gmail.com $ - */ - -#ifndef MPF_BUFFER_H -#define MPF_BUFFER_H - -/** - * @file mpf_buffer.h - * @brief Buffer of Media Chunks - */ - -#include "mpf_frame.h" - -APT_BEGIN_EXTERN_C - -/** Opaque media buffer declaration */ -typedef struct mpf_buffer_t mpf_buffer_t; - - -/** Create buffer */ -mpf_buffer_t* mpf_buffer_create(apr_pool_t *pool); - -/** Destroy buffer */ -void mpf_buffer_destroy(mpf_buffer_t *buffer); - -/** Restart buffer */ -apt_bool_t mpf_buffer_restart(mpf_buffer_t *buffer); - -/** Write audio chunk to buffer */ -apt_bool_t mpf_buffer_audio_write(mpf_buffer_t *buffer, void *data, apr_size_t size); - -/** Write event to buffer */ -apt_bool_t mpf_buffer_event_write(mpf_buffer_t *buffer, mpf_frame_type_e event_type); - -/** Read media frame from buffer */ -apt_bool_t mpf_buffer_frame_read(mpf_buffer_t *buffer, mpf_frame_t *media_frame); - -/** Get size of buffer **/ -apr_size_t mpf_buffer_get_size(const mpf_buffer_t *buffer); - -APT_END_EXTERN_C - -#endif /* MPF_BUFFER_H */ diff --git a/libs/unimrcp/libs/mpf/include/mpf_codec.h b/libs/unimrcp/libs/mpf/include/mpf_codec.h deleted file mode 100644 index b34a53aaa0e..00000000000 --- a/libs/unimrcp/libs/mpf/include/mpf_codec.h +++ /dev/null @@ -1,177 +0,0 @@ -/* - * Copyright 2008-2014 Arsen Chaloyan - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - * - * $Id: mpf_codec.h 2136 2014-07-04 06:33:36Z achaloyan@gmail.com $ - */ - -#ifndef MPF_CODEC_H -#define MPF_CODEC_H - -/** - * @file mpf_codec.h - * @brief MPF Codec - */ - -#include "mpf_codec_descriptor.h" - -APT_BEGIN_EXTERN_C - -/** Codec virtual table declaration */ -typedef struct mpf_codec_vtable_t mpf_codec_vtable_t; -/** Codec declaration*/ -typedef struct mpf_codec_t mpf_codec_t; - -/** Codec */ -struct mpf_codec_t { - /** Codec manipulators (encode, decode, dissect) */ - const mpf_codec_vtable_t *vtable; - /** Codec attributes (capabilities) */ - const mpf_codec_attribs_t *attribs; - /** Optional static codec descriptor (pt < 96) */ - const mpf_codec_descriptor_t *static_descriptor; -}; - -/** Table of codec virtual methods */ -struct mpf_codec_vtable_t { - /** Virtual open method */ - apt_bool_t (*open)(mpf_codec_t *codec); - /** Virtual close method */ - apt_bool_t (*close)(mpf_codec_t *codec); - - /** Virtual encode method */ - apt_bool_t (*encode)(mpf_codec_t *codec, const mpf_codec_frame_t *frame_in, mpf_codec_frame_t *frame_out); - /** Virtual decode method */ - apt_bool_t (*decode)(mpf_codec_t *codec, const mpf_codec_frame_t *frame_in, mpf_codec_frame_t *frame_out); - - /** Virtual dissect method */ - apt_bool_t (*dissect)(mpf_codec_t *codec, void **buffer, apr_size_t *size, mpf_codec_frame_t *frame); - - /** Virtual initialize method */ - apt_bool_t (*initialize)(mpf_codec_t *codec, mpf_codec_frame_t *frame_out); -}; - -/** - * Create codec. - * @param vtable the table of virtual mthods - * @param attribs the codec attributes - * @param descriptor the codec descriptor - * @param pool the pool to allocate memory from - */ -static APR_INLINE mpf_codec_t* mpf_codec_create( - const mpf_codec_vtable_t *vtable, - const mpf_codec_attribs_t *attribs, - const mpf_codec_descriptor_t *descriptor, - apr_pool_t *pool) -{ - mpf_codec_t *codec = (mpf_codec_t*)apr_palloc(pool,sizeof(mpf_codec_t)); - codec->vtable = vtable; - codec->attribs = attribs; - codec->static_descriptor = descriptor; - return codec; -} - -/** - * Clone codec. - * @param src_codec the source (original) codec to clone - * @param pool the pool to allocate memory from - */ -static APR_INLINE mpf_codec_t* mpf_codec_clone(mpf_codec_t *src_codec, apr_pool_t *pool) -{ - mpf_codec_t *codec = (mpf_codec_t*)apr_palloc(pool,sizeof(mpf_codec_t)); - codec->vtable = src_codec->vtable; - codec->attribs = src_codec->attribs; - codec->static_descriptor = src_codec->static_descriptor; - return codec; -} - -/** Open codec */ -static APR_INLINE apt_bool_t mpf_codec_open(mpf_codec_t *codec) -{ - apt_bool_t rv = TRUE; - if(codec->vtable->open) { - rv = codec->vtable->open(codec); - } - return rv; -} - -/** Close codec */ -static APR_INLINE apt_bool_t mpf_codec_close(mpf_codec_t *codec) -{ - apt_bool_t rv = TRUE; - if(codec->vtable->close) { - rv = codec->vtable->close(codec); - } - return rv; -} - -/** Encode codec frame */ -static APR_INLINE apt_bool_t mpf_codec_encode(mpf_codec_t *codec, const mpf_codec_frame_t *frame_in, mpf_codec_frame_t *frame_out) -{ - apt_bool_t rv = TRUE; - if(codec->vtable->encode) { - rv = codec->vtable->encode(codec,frame_in,frame_out); - } - return rv; -} - -/** Decode codec frame */ -static APR_INLINE apt_bool_t mpf_codec_decode(mpf_codec_t *codec, const mpf_codec_frame_t *frame_in, mpf_codec_frame_t *frame_out) -{ - apt_bool_t rv = TRUE; - if(codec->vtable->decode) { - rv = codec->vtable->decode(codec,frame_in,frame_out); - } - return rv; -} - -/** Dissect codec frame (navigate through codec frames in a buffer, which may contain multiple frames) */ -static APR_INLINE apt_bool_t mpf_codec_dissect(mpf_codec_t *codec, void **buffer, apr_size_t *size, mpf_codec_frame_t *frame) -{ - apt_bool_t rv = TRUE; - if(codec->vtable->dissect) { - /* custom dissector for codecs like G.729, G.723 */ - rv = codec->vtable->dissect(codec,buffer,size,frame); - } - else { - /* default dissector */ - if(*size >= frame->size && frame->size) { - memcpy(frame->buffer,*buffer,frame->size); - - *buffer = (apr_byte_t*)*buffer + frame->size; - *size = *size - frame->size; - } - else { - rv = FALSE; - } - } - return rv; -} - -/** Initialize (fill) codec frame with silence */ -static APR_INLINE apt_bool_t mpf_codec_initialize(mpf_codec_t *codec, mpf_codec_frame_t *frame_out) -{ - apt_bool_t rv = TRUE; - if(codec->vtable->initialize) { - rv = codec->vtable->initialize(codec,frame_out); - } - else { - memset(frame_out->buffer,0,frame_out->size); - } - return rv; -} - -APT_END_EXTERN_C - -#endif /* MPF_CODEC_H */ diff --git a/libs/unimrcp/libs/mpf/include/mpf_codec_descriptor.h b/libs/unimrcp/libs/mpf/include/mpf_codec_descriptor.h deleted file mode 100644 index f4ed54e322a..00000000000 --- a/libs/unimrcp/libs/mpf/include/mpf_codec_descriptor.h +++ /dev/null @@ -1,283 +0,0 @@ -/* - * Copyright 2008-2014 Arsen Chaloyan - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - * - * $Id: mpf_codec_descriptor.h 2239 2014-11-12 01:52:59Z achaloyan@gmail.com $ - */ - -#ifndef MPF_CODEC_DESCRIPTOR_H -#define MPF_CODEC_DESCRIPTOR_H - -/** - * @file mpf_codec_descriptor.h - * @brief MPF Codec Descriptor - */ - -#include -#include "apt_string.h" -#include "mpf.h" - -APT_BEGIN_EXTERN_C - -/** Codec frame time base in msec */ -#define CODEC_FRAME_TIME_BASE 10 -/** Bytes per sample for linear pcm */ -#define BYTES_PER_SAMPLE 2 -/** Bits per sample for linear pcm */ -#define BITS_PER_SAMPLE 16 - -/** Supported sampling rates */ -typedef enum { - MPF_SAMPLE_RATE_NONE = 0x00, - MPF_SAMPLE_RATE_8000 = 0x01, - MPF_SAMPLE_RATE_16000 = 0x02, - MPF_SAMPLE_RATE_32000 = 0x04, - MPF_SAMPLE_RATE_48000 = 0x08, - - MPF_SAMPLE_RATE_SUPPORTED = MPF_SAMPLE_RATE_8000 | MPF_SAMPLE_RATE_16000 | - MPF_SAMPLE_RATE_32000 | MPF_SAMPLE_RATE_48000 -} mpf_sample_rates_e; - -/** Codec descriptor declaration */ -typedef struct mpf_codec_descriptor_t mpf_codec_descriptor_t; -/** Codec attributes declaration */ -typedef struct mpf_codec_attribs_t mpf_codec_attribs_t; -/** Codec list declaration */ -typedef struct mpf_codec_list_t mpf_codec_list_t; -/** Codec capabilities declaration */ -typedef struct mpf_codec_capabilities_t mpf_codec_capabilities_t; -/** Codec frame declaration */ -typedef struct mpf_codec_frame_t mpf_codec_frame_t; - - -/** Codec descriptor */ -struct mpf_codec_descriptor_t { - /** Payload type used in RTP packet */ - apr_byte_t payload_type; - /** Codec name */ - apt_str_t name; - /** Sampling rate */ - apr_uint16_t sampling_rate; - /** Channel count */ - apr_byte_t channel_count; - /** Codec dependent additional format */ - apt_str_t format; - /** Enabled/disabled state */ - apt_bool_t enabled; -}; - -/** List of codec descriptors */ -struct mpf_codec_list_t { - /** Dynamic array of codec descriptors (mpf_codec_descriptor_t) */ - apr_array_header_t *descriptor_arr; - /** Preffered primary (audio/video codec) descriptor from descriptor_arr */ - mpf_codec_descriptor_t *primary_descriptor; - /** Preffered named event (telephone-event) descriptor from descriptor_arr */ - mpf_codec_descriptor_t *event_descriptor; -}; - -/** Codec attributes */ -struct mpf_codec_attribs_t { - /** Codec name */ - apt_str_t name; - /** Bits per sample */ - apr_byte_t bits_per_sample; - /** Supported sampling rates (mpf_sample_rates_e) */ - int sample_rates; -}; - -/** List of codec attributes (capabilities) */ -struct mpf_codec_capabilities_t { - /** Dynamic array of codec attributes (mpf_codec_attrribs_t) */ - apr_array_header_t *attrib_arr; - /** Allow/support named events */ - apt_bool_t allow_named_events; -}; - -/** Codec frame */ -struct mpf_codec_frame_t { - /** Raw buffer, which may contain encoded or decoded data */ - void *buffer; - /** Buffer size */ - apr_size_t size; -}; - - -/** Initialize codec descriptor */ -static APR_INLINE void mpf_codec_descriptor_init(mpf_codec_descriptor_t *descriptor) -{ - descriptor->payload_type = 0; - apt_string_reset(&descriptor->name); - descriptor->sampling_rate = 0; - descriptor->channel_count = 0; - apt_string_reset(&descriptor->format); - descriptor->enabled = TRUE; -} - -/** Initialize codec descriptor */ -static APR_INLINE mpf_codec_descriptor_t* mpf_codec_descriptor_create(apr_pool_t *pool) -{ - mpf_codec_descriptor_t *descriptor = (mpf_codec_descriptor_t*) apr_palloc(pool,sizeof(mpf_codec_descriptor_t)); - mpf_codec_descriptor_init(descriptor); - return descriptor; -} - -/** Calculate encoded frame size in bytes */ -static APR_INLINE apr_size_t mpf_codec_frame_size_calculate(const mpf_codec_descriptor_t *descriptor, const mpf_codec_attribs_t *attribs) -{ - return (size_t) descriptor->channel_count * attribs->bits_per_sample * CODEC_FRAME_TIME_BASE * - descriptor->sampling_rate / 1000 / 8; /* 1000 - msec per sec, 8 - bits per byte */ -} - -/** Calculate samples of the frame (ts) */ -static APR_INLINE apr_size_t mpf_codec_frame_samples_calculate(const mpf_codec_descriptor_t *descriptor) -{ - return (size_t) descriptor->channel_count * CODEC_FRAME_TIME_BASE * descriptor->sampling_rate / 1000; -} - -/** Calculate linear frame size in bytes */ -static APR_INLINE apr_size_t mpf_codec_linear_frame_size_calculate(apr_uint16_t sampling_rate, apr_byte_t channel_count) -{ - return (size_t) channel_count * BYTES_PER_SAMPLE * CODEC_FRAME_TIME_BASE * sampling_rate / 1000; -} - - - -/** Reset list of codec descriptors */ -static APR_INLINE void mpf_codec_list_reset(mpf_codec_list_t *codec_list) -{ - codec_list->descriptor_arr = NULL; - codec_list->primary_descriptor = NULL; - codec_list->event_descriptor = NULL; -} - -/** Initialize list of codec descriptors */ -static APR_INLINE void mpf_codec_list_init(mpf_codec_list_t *codec_list, apr_size_t initial_count, apr_pool_t *pool) -{ - codec_list->descriptor_arr = apr_array_make(pool,(int)initial_count, sizeof(mpf_codec_descriptor_t)); - codec_list->primary_descriptor = NULL; - codec_list->event_descriptor = NULL; -} - -/** Copy list of codec descriptors */ -static APR_INLINE void mpf_codec_list_copy(mpf_codec_list_t *codec_list, const mpf_codec_list_t *src_codec_list, apr_pool_t *pool) -{ - codec_list->descriptor_arr = apr_array_copy(pool,src_codec_list->descriptor_arr); -} - -/** Increment number of codec descriptors in the list and return the descriptor to fill */ -static APR_INLINE mpf_codec_descriptor_t* mpf_codec_list_add(mpf_codec_list_t *codec_list) -{ - mpf_codec_descriptor_t *descriptor = (mpf_codec_descriptor_t*)apr_array_push(codec_list->descriptor_arr); - mpf_codec_descriptor_init(descriptor); - return descriptor; -} - -/** Determine if codec list is empty */ -static APR_INLINE apt_bool_t mpf_codec_list_is_empty(const mpf_codec_list_t *codec_list) -{ - return apr_is_empty_array(codec_list->descriptor_arr); -} - -/** Get codec descriptor by index */ -static APR_INLINE mpf_codec_descriptor_t* mpf_codec_list_descriptor_get(const mpf_codec_list_t *codec_list, apr_size_t id) -{ - if(id >= (apr_size_t)codec_list->descriptor_arr->nelts) { - return NULL; - } - return &APR_ARRAY_IDX(codec_list->descriptor_arr,id,mpf_codec_descriptor_t); -} - -/** Create linear PCM descriptor */ -MPF_DECLARE(mpf_codec_descriptor_t*) mpf_codec_lpcm_descriptor_create(apr_uint16_t sampling_rate, apr_byte_t channel_count, apr_pool_t *pool); - -/** Create codec descriptor by capabilities */ -MPF_DECLARE(mpf_codec_descriptor_t*) mpf_codec_descriptor_create_by_capabilities(const mpf_codec_capabilities_t *capabilities, const mpf_codec_descriptor_t *peer, apr_pool_t *pool); - -/** Match two codec descriptors */ -MPF_DECLARE(apt_bool_t) mpf_codec_descriptors_match(const mpf_codec_descriptor_t *descriptor1, const mpf_codec_descriptor_t *descriptor2); - -/** Match specified codec descriptor and the default lpcm one */ -MPF_DECLARE(apt_bool_t) mpf_codec_lpcm_descriptor_match(const mpf_codec_descriptor_t *descriptor); - -/** Match codec descriptor by attribs specified */ -MPF_DECLARE(apt_bool_t) mpf_codec_descriptor_match_by_attribs(mpf_codec_descriptor_t *descriptor, const mpf_codec_descriptor_t *static_descriptor, const mpf_codec_attribs_t *attribs); - - - -/** Initialize codec capabilities */ -static APR_INLINE void mpf_codec_capabilities_init(mpf_codec_capabilities_t *capabilities, apr_size_t initial_count, apr_pool_t *pool) -{ - capabilities->attrib_arr = apr_array_make(pool,(int)initial_count, sizeof(mpf_codec_attribs_t)); - capabilities->allow_named_events = TRUE; -} - -/** Clone codec capabilities */ -static APR_INLINE void mpf_codec_capabilities_clone(mpf_codec_capabilities_t *capabilities, const mpf_codec_capabilities_t *src_capabilities, apr_pool_t *pool) -{ - capabilities->attrib_arr = apr_array_copy(pool,src_capabilities->attrib_arr); - capabilities->allow_named_events = src_capabilities->allow_named_events; -} - -/** Merge codec capabilities */ -static APR_INLINE apt_bool_t mpf_codec_capabilities_merge(mpf_codec_capabilities_t *capabilities, const mpf_codec_capabilities_t *src_capabilities, apr_pool_t *pool) -{ - if(capabilities->allow_named_events == FALSE && src_capabilities->allow_named_events == TRUE) { - capabilities->allow_named_events = src_capabilities->allow_named_events; - } - capabilities->attrib_arr = apr_array_append(pool,capabilities->attrib_arr,src_capabilities->attrib_arr); - return TRUE; -} - -/** Add codec capabilities */ -static APR_INLINE apt_bool_t mpf_codec_capabilities_add(mpf_codec_capabilities_t *capabilities, int sample_rates, const char *codec_name) -{ - mpf_codec_attribs_t *attribs = (mpf_codec_attribs_t*)apr_array_push(capabilities->attrib_arr); - apt_string_assign(&attribs->name,codec_name,capabilities->attrib_arr->pool); - attribs->sample_rates = sample_rates; - attribs->bits_per_sample = 0; - return TRUE; -} - -/** Add default (linear PCM) capabilities */ -MPF_DECLARE(apt_bool_t) mpf_codec_default_capabilities_add(mpf_codec_capabilities_t *capabilities); - -/** Validate codec capabilities */ -static APR_INLINE apt_bool_t mpf_codec_capabilities_validate(mpf_codec_capabilities_t *capabilities) -{ - if(apr_is_empty_array(capabilities->attrib_arr) == TRUE) { - mpf_codec_default_capabilities_add(capabilities); - } - return TRUE; -} - - - -/** Find matched descriptor in codec list */ -MPF_DECLARE(mpf_codec_descriptor_t*) mpf_codec_list_descriptor_find(const mpf_codec_list_t *codec_list, const mpf_codec_descriptor_t *descriptor); - -/** Match codec list with specified capabilities */ -MPF_DECLARE(apt_bool_t) mpf_codec_list_match(mpf_codec_list_t *codec_list, const mpf_codec_capabilities_t *capabilities); - -/** Intersect two codec lists */ -MPF_DECLARE(apt_bool_t) mpf_codec_lists_intersect(mpf_codec_list_t *codec_list1, mpf_codec_list_t *codec_list2); - - -/** Get sampling rate mask (mpf_sample_rate_e) by integer value */ -MPF_DECLARE(int) mpf_sample_rate_mask_get(apr_uint16_t sampling_rate); - - -APT_END_EXTERN_C - -#endif /* MPF_CODEC_DESCRIPTOR_H */ diff --git a/libs/unimrcp/libs/mpf/include/mpf_codec_manager.h b/libs/unimrcp/libs/mpf/include/mpf_codec_manager.h deleted file mode 100644 index 919d5112bbe..00000000000 --- a/libs/unimrcp/libs/mpf/include/mpf_codec_manager.h +++ /dev/null @@ -1,55 +0,0 @@ -/* - * Copyright 2008-2014 Arsen Chaloyan - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - * - * $Id: mpf_codec_manager.h 2136 2014-07-04 06:33:36Z achaloyan@gmail.com $ - */ - -#ifndef MPF_CODEC_MANAGER_H -#define MPF_CODEC_MANAGER_H - -/** - * @file mpf_codec_manager.h - * @brief MPF Codec Manager - */ - -#include "mpf_types.h" -#include "mpf_codec.h" - -APT_BEGIN_EXTERN_C - -/** Create codec manager */ -MPF_DECLARE(mpf_codec_manager_t*) mpf_codec_manager_create(apr_size_t codec_count, apr_pool_t *pool); - -/** Destroy codec manager */ -MPF_DECLARE(void) mpf_codec_manager_destroy(mpf_codec_manager_t *codec_manager); - -/** Register codec in codec manager */ -MPF_DECLARE(apt_bool_t) mpf_codec_manager_codec_register(mpf_codec_manager_t *codec_manager, mpf_codec_t *codec); - -/** Get (allocate) codec by codec descriptor */ -MPF_DECLARE(mpf_codec_t*) mpf_codec_manager_codec_get(const mpf_codec_manager_t *codec_manager, mpf_codec_descriptor_t *descriptor, apr_pool_t *pool); - -/** Get (allocate) list of available codecs */ -MPF_DECLARE(apt_bool_t) mpf_codec_manager_codec_list_get(const mpf_codec_manager_t *codec_manager, mpf_codec_list_t *codec_list, apr_pool_t *pool); - -/** Load (allocate) list of codecs */ -MPF_DECLARE(apt_bool_t) mpf_codec_manager_codec_list_load(const mpf_codec_manager_t *codec_manager, mpf_codec_list_t *codec_list, const char *str, apr_pool_t *pool); - -/** Find codec by name */ -MPF_DECLARE(const mpf_codec_t*) mpf_codec_manager_codec_find(const mpf_codec_manager_t *codec_manager, const apt_str_t *codec_name); - -APT_END_EXTERN_C - -#endif /* MPF_CODEC_MANAGER_H */ diff --git a/libs/unimrcp/libs/mpf/include/mpf_context.h b/libs/unimrcp/libs/mpf/include/mpf_context.h deleted file mode 100644 index 24e519ab812..00000000000 --- a/libs/unimrcp/libs/mpf/include/mpf_context.h +++ /dev/null @@ -1,133 +0,0 @@ -/* - * Copyright 2008-2014 Arsen Chaloyan - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - * - * $Id: mpf_context.h 2136 2014-07-04 06:33:36Z achaloyan@gmail.com $ - */ - -#ifndef MPF_CONTEXT_H -#define MPF_CONTEXT_H - -/** - * @file mpf_context.h - * @brief MPF Context - */ - -#include "mpf_types.h" - -APT_BEGIN_EXTERN_C - -/** Opaque factory of media contexts */ -typedef struct mpf_context_factory_t mpf_context_factory_t; - -/** - * Create factory of media contexts. - */ -MPF_DECLARE(mpf_context_factory_t*) mpf_context_factory_create(apr_pool_t *pool); - -/** - * Destroy factory of media contexts. - */ -MPF_DECLARE(void) mpf_context_factory_destroy(mpf_context_factory_t *factory); - -/** - * Process factory of media contexts. - */ -MPF_DECLARE(apt_bool_t) mpf_context_factory_process(mpf_context_factory_t *factory); - -/** - * Create MPF context. - * @param factory the factory context belongs to - * @param name the informative name of the context - * @param obj the external object associated with context - * @param max_termination_count the max number of terminations in context - * @param pool the pool to allocate memory from - */ -MPF_DECLARE(mpf_context_t*) mpf_context_create( - mpf_context_factory_t *factory, - const char *name, - void *obj, - apr_size_t max_termination_count, - apr_pool_t *pool); - -/** - * Destroy MPF context. - * @param context the context to destroy - */ -MPF_DECLARE(apt_bool_t) mpf_context_destroy(mpf_context_t *context); - -/** - * Get external object associated with MPF context. - * @param context the context to get object from - */ -MPF_DECLARE(void*) mpf_context_object_get(const mpf_context_t *context); - -/** - * Add termination to context. - * @param context the context to add termination to - * @param termination the termination to add - */ -MPF_DECLARE(apt_bool_t) mpf_context_termination_add(mpf_context_t *context, mpf_termination_t *termination); - -/** - * Subtract termination from context. - * @param context the context to subtract termination from - * @param termination the termination to subtract - */ -MPF_DECLARE(apt_bool_t) mpf_context_termination_subtract(mpf_context_t *context, mpf_termination_t *termination); - -/** - * Add association between specified terminations. - * @param context the context to add association in the scope of - * @param termination1 the first termination to associate - * @param termination2 the second termination to associate - */ -MPF_DECLARE(apt_bool_t) mpf_context_association_add(mpf_context_t *context, mpf_termination_t *termination1, mpf_termination_t *termination2); - -/** - * Remove association between specified terminations. - * @param context the context to remove association in the scope of - * @param termination1 the first termination - * @param termination2 the second termination - */ -MPF_DECLARE(apt_bool_t) mpf_context_association_remove(mpf_context_t *context, mpf_termination_t *termination1, mpf_termination_t *termination2); - -/** - * Reset assigned associations and destroy applied topology. - * @param context the context to reset associations for - */ -MPF_DECLARE(apt_bool_t) mpf_context_associations_reset(mpf_context_t *context); - -/** - * Apply topology. - * @param context the context to apply topology for - */ -MPF_DECLARE(apt_bool_t) mpf_context_topology_apply(mpf_context_t *context); - -/** - * Destroy topology. - * @param context the context to destroy topology for - */ -MPF_DECLARE(apt_bool_t) mpf_context_topology_destroy(mpf_context_t *context); - -/** - * Process context. - * @param context the context to process - */ -MPF_DECLARE(apt_bool_t) mpf_context_process(mpf_context_t *context); - - -APT_END_EXTERN_C - -#endif /* MPF_CONTEXT_H */ diff --git a/libs/unimrcp/libs/mpf/include/mpf_decoder.h b/libs/unimrcp/libs/mpf/include/mpf_decoder.h deleted file mode 100644 index 930b1dcb6b7..00000000000 --- a/libs/unimrcp/libs/mpf/include/mpf_decoder.h +++ /dev/null @@ -1,42 +0,0 @@ -/* - * Copyright 2008-2014 Arsen Chaloyan - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - * - * $Id: mpf_decoder.h 2136 2014-07-04 06:33:36Z achaloyan@gmail.com $ - */ - -#ifndef MPF_DECODER_H -#define MPF_DECODER_H - -/** - * @file mpf_decoder.h - * @brief MPF Stream Decoder - */ - -#include "mpf_stream.h" - -APT_BEGIN_EXTERN_C - -/** - * Create audio stream decoder. - * @param source the source to get encoded stream from - * @param codec the codec to use for decode - * @param pool the pool to allocate memory from - */ -MPF_DECLARE(mpf_audio_stream_t*) mpf_decoder_create(mpf_audio_stream_t *source, mpf_codec_t *codec, apr_pool_t *pool); - - -APT_END_EXTERN_C - -#endif /* MPF_ENCODER_H */ diff --git a/libs/unimrcp/libs/mpf/include/mpf_dtmf_detector.h b/libs/unimrcp/libs/mpf/include/mpf_dtmf_detector.h deleted file mode 100644 index 4108e3bd9bb..00000000000 --- a/libs/unimrcp/libs/mpf/include/mpf_dtmf_detector.h +++ /dev/null @@ -1,123 +0,0 @@ -/* - * Copyright 2009-2010 Tomas Valenta, Arsen Chaloyan - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - * - * $Id: mpf_dtmf_detector.h 1474 2010-02-07 20:51:47Z achaloyan $ - */ - -#ifndef MPF_DTMF_DETECTOR_H -#define MPF_DTMF_DETECTOR_H - -/** - * @file mpf_dtmf_detector.h - * @brief DTMF detector - * - * Detector of DTMF tones sent both out-of-band (RFC4733) and in-band (audio). - */ - -#include "apr.h" -#include "apr_pools.h" -#include "apt.h" -#include "mpf_frame.h" -#include "mpf_stream.h" - -APT_BEGIN_EXTERN_C - -/** DTMF detector band */ -typedef enum mpf_dtmf_detector_band_e { - /** Detect tones in-band */ - MPF_DTMF_DETECTOR_INBAND = 0x1, - /** Detect named events out-of-band */ - MPF_DTMF_DETECTOR_OUTBAND = 0x2, - /** Detect both in-band and out-of-band digits */ - MPF_DTMF_DETECTOR_BOTH = MPF_DTMF_DETECTOR_INBAND | MPF_DTMF_DETECTOR_OUTBAND -} mpf_dtmf_detector_band_e; - -/** Opaque MPF DTMF detector structure definition */ -typedef struct mpf_dtmf_detector_t mpf_dtmf_detector_t; - - -/** - * Create MPF DTMF detector (advanced). - * @param stream A stream to get digits from. - * @param band One of: - * - MPF_DTMF_DETECTOR_INBAND: detect audible tones only - * - MPF_DTMF_DETECTOR_OUTBAND: detect out-of-band named-events only - * - MPF_DTMF_DETECTOR_BOTH: detect digits in both bands if supported by - * stream. When out-of-band digit arrives, in-band detection is turned off. - * @param pool Memory pool to allocate DTMF detector from. - * @return The object or NULL on error. - * @see mpf_dtmf_detector_create - */ -MPF_DECLARE(struct mpf_dtmf_detector_t *) mpf_dtmf_detector_create_ex( - const struct mpf_audio_stream_t *stream, - enum mpf_dtmf_detector_band_e band, - struct apr_pool_t *pool); - -/** - * Create MPF DTMF detector (simple). Calls mpf_dtmf_detector_create_ex - * with band = MPF_DTMF_DETECTOR_BOTH if out-of-band supported by the stream, - * MPF_DTMF_DETECTOR_INBAND otherwise. - * @param stream A stream to get digits from. - * @param pool Memory pool to allocate DTMF detector from. - * @return The object or NULL on error. - * @see mpf_dtmf_detector_create_ex - */ -static APR_INLINE struct mpf_dtmf_detector_t *mpf_dtmf_detector_create( - const struct mpf_audio_stream_t *stream, - struct apr_pool_t *pool) -{ - return mpf_dtmf_detector_create_ex(stream, - stream->tx_event_descriptor ? MPF_DTMF_DETECTOR_BOTH : MPF_DTMF_DETECTOR_INBAND, - pool); -} - -/** - * Get DTMF digit from buffer of digits detected so far and remove it. - * @param detector The detector. - * @return DTMF character [0-9*#A-D] or NUL if the buffer is empty. - */ -MPF_DECLARE(char) mpf_dtmf_detector_digit_get(struct mpf_dtmf_detector_t *detector); - -/** - * Retrieve how many digits was lost due to full buffer. - * @param detector The detector. - * @return Number of lost digits. - */ -MPF_DECLARE(apr_size_t) mpf_dtmf_detector_digits_lost(const struct mpf_dtmf_detector_t *detector); - -/** - * Empty the buffer and reset detection states. - * @param detector The detector. - */ -MPF_DECLARE(void) mpf_dtmf_detector_reset(struct mpf_dtmf_detector_t *detector); - -/** - * Detect DTMF digits in the frame. - * @param detector The detector. - * @param frame Frame object passed in stream_write(). - */ -MPF_DECLARE(void) mpf_dtmf_detector_get_frame( - struct mpf_dtmf_detector_t *detector, - const struct mpf_frame_t *frame); - -/** - * Free all resources associated with the detector. - * @param detector The detector. - */ -MPF_DECLARE(void) mpf_dtmf_detector_destroy(struct mpf_dtmf_detector_t *detector); - -APT_END_EXTERN_C - -#endif /* MPF_DTMF_DETECTOR_H */ diff --git a/libs/unimrcp/libs/mpf/include/mpf_dtmf_generator.h b/libs/unimrcp/libs/mpf/include/mpf_dtmf_generator.h deleted file mode 100644 index ea28bba4322..00000000000 --- a/libs/unimrcp/libs/mpf/include/mpf_dtmf_generator.h +++ /dev/null @@ -1,131 +0,0 @@ -/* - * Copyright 2009-2010 Tomas Valenta, Arsen Chaloyan - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -#ifndef MPF_DTMF_GENERATOR_H -#define MPF_DTMF_GENERATOR_H - -/** - * @file mpf_dtmf_generator.h - * @brief DTMF generator - * - * Generator used to send DTMF tones. Capable to send digits - * either in-band as audible tones or out-of-band according - * to RFC4733. - */ - -#include "apr_pools.h" -#include "apt.h" -#include "mpf_frame.h" -#include "mpf_stream.h" - -APT_BEGIN_EXTERN_C - -/** DTMF generator band */ -typedef enum mpf_dtmf_generator_band_e { - /** Generate tones in-band */ - MPF_DTMF_GENERATOR_INBAND = 0x1, - /** Generate named events out-of-band */ - MPF_DTMF_GENERATOR_OUTBAND = 0x2, - /** Generate both tones and named events */ - MPF_DTMF_GENERATOR_BOTH = MPF_DTMF_GENERATOR_INBAND | MPF_DTMF_GENERATOR_OUTBAND -} mpf_dtmf_generator_band_e; - -/** Opaque MPF DTMF generator structure definition */ -typedef struct mpf_dtmf_generator_t mpf_dtmf_generator_t; - - -/** - * Create MPF DTMF generator (advanced). - * @param stream A stream to transport digits via. - * @param band MPF_DTMF_GENERATOR_INBAND or MPF_DTMF_GENERATOR_OUTBAND - * @param tone_ms Tone duration in milliseconds. - * @param silence_ms Inter-digit silence in milliseconds. - * @param pool Memory pool to allocate DTMF generator from. - * @return The object or NULL on error. - * @see mpf_dtmf_generator_create - */ -MPF_DECLARE(struct mpf_dtmf_generator_t *) mpf_dtmf_generator_create_ex( - const struct mpf_audio_stream_t *stream, - enum mpf_dtmf_generator_band_e band, - apr_uint32_t tone_ms, - apr_uint32_t silence_ms, - struct apr_pool_t *pool); - -/** - * Create MPF DTMF generator (simple). Calls mpf_dtmf_generator_create_ex - * with band = MPF_DTMF_GENERATOR_OUTBAND if supported by the stream or - * MPF_DTMF_GENERATOR_INBAND otherwise, tone_ms = 70, silence_ms = 50. - * @param stream A stream to transport digits via. - * @param pool Memory pool to allocate DTMF generator from. - * @return The object or NULL on error. - * @see mpf_dtmf_generator_create_ex - */ -static APR_INLINE struct mpf_dtmf_generator_t *mpf_dtmf_generator_create( - const struct mpf_audio_stream_t *stream, - struct apr_pool_t *pool) -{ - return mpf_dtmf_generator_create_ex(stream, - stream->rx_event_descriptor ? MPF_DTMF_GENERATOR_OUTBAND : MPF_DTMF_GENERATOR_INBAND, - 70, 50, pool); -} - -/** - * Add DTMF digits to the queue. - * @param generator The generator. - * @param digits DTMF character sequence [0-9*#A-D]. - * @return TRUE if ok, FALSE if there are too many digits. - */ -MPF_DECLARE(apt_bool_t) mpf_dtmf_generator_enqueue( - struct mpf_dtmf_generator_t *generator, - const char *digits); - -/** - * Empty the queue and immediately stop generating. - * @param generator The generator. - */ -MPF_DECLARE(void) mpf_dtmf_generator_reset(struct mpf_dtmf_generator_t *generator); - -/** - * Check state of the generator. - * @param generator The generator. - * @return TRUE if generating a digit or there are digits waiting in queue. - * FALSE if the queue is empty or generating silence after the last digit. - */ -MPF_DECLARE(apt_bool_t) mpf_dtmf_generator_sending(const struct mpf_dtmf_generator_t *generator); - -/** - * Put frame into the stream. - * @param generator The generator. - * @param frame Frame object passed in stream_read(). - * @return TRUE if frame with tone (both in-band and out-of-band) was generated, - * FALSE otherwise. In contrast to mpf_dtmf_generator_sending, returns FALSE even - * if generating inter-digit silence. In other words returns TRUE iff the frame - * object was filled with data. This method MUST be called for each frame for - * proper timing. - */ -MPF_DECLARE(apt_bool_t) mpf_dtmf_generator_put_frame( - struct mpf_dtmf_generator_t *generator, - struct mpf_frame_t *frame); - -/** - * Free all resources associated with the generator. - * @param generator The generator. - */ -MPF_DECLARE(void) mpf_dtmf_generator_destroy(struct mpf_dtmf_generator_t *generator); - -APT_END_EXTERN_C - -#endif /* MPF_DTMF_GENERATOR_H */ diff --git a/libs/unimrcp/libs/mpf/include/mpf_encoder.h b/libs/unimrcp/libs/mpf/include/mpf_encoder.h deleted file mode 100644 index 21e49120db6..00000000000 --- a/libs/unimrcp/libs/mpf/include/mpf_encoder.h +++ /dev/null @@ -1,42 +0,0 @@ -/* - * Copyright 2008-2014 Arsen Chaloyan - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - * - * $Id: mpf_encoder.h 2136 2014-07-04 06:33:36Z achaloyan@gmail.com $ - */ - -#ifndef MPF_ENCODER_H -#define MPF_ENCODER_H - -/** - * @file mpf_encoder.h - * @brief MPF Stream Encoder - */ - -#include "mpf_stream.h" - -APT_BEGIN_EXTERN_C - -/** - * Create audio stream encoder. - * @param sink the sink to write encoded stream to - * @param codec the codec to use for encode - * @param pool the pool to allocate memory from - */ -MPF_DECLARE(mpf_audio_stream_t*) mpf_encoder_create(mpf_audio_stream_t *sink, mpf_codec_t *codec, apr_pool_t *pool); - - -APT_END_EXTERN_C - -#endif /* MPF_ENCODER_H */ diff --git a/libs/unimrcp/libs/mpf/include/mpf_engine.h b/libs/unimrcp/libs/mpf/include/mpf_engine.h deleted file mode 100644 index 4192ccf33b8..00000000000 --- a/libs/unimrcp/libs/mpf/include/mpf_engine.h +++ /dev/null @@ -1,165 +0,0 @@ -/* - * Copyright 2008-2014 Arsen Chaloyan - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - * - * $Id: mpf_engine.h 2136 2014-07-04 06:33:36Z achaloyan@gmail.com $ - */ - -#ifndef MPF_ENGINE_H -#define MPF_ENGINE_H - -/** - * @file mpf_engine.h - * @brief Media Processing Framework Engine - */ - -#include "apt_task.h" -#include "mpf_message.h" - -APT_BEGIN_EXTERN_C - -/** MPF task message definition */ -typedef apt_task_msg_t mpf_task_msg_t; - -/** - * Create MPF engine. - * @param id the identifier of the engine - * @param pool the pool to allocate memory from - */ -MPF_DECLARE(mpf_engine_t*) mpf_engine_create(const char *id, apr_pool_t *pool); - -/** - * Create MPF codec manager. - * @param pool the pool to allocate memory from - */ -MPF_DECLARE(mpf_codec_manager_t*) mpf_engine_codec_manager_create(apr_pool_t *pool); - -/** - * Register MPF codec manager. - * @param engine the engine to register codec manager for - * @param codec_manager the codec manager to register - */ -MPF_DECLARE(apt_bool_t) mpf_engine_codec_manager_register(mpf_engine_t *engine, const mpf_codec_manager_t *codec_manager); - -/** - * Create MPF context. - * @param engine the engine to create context for - * @param name the informative name of the context - * @param obj the external object associated with context - * @param max_termination_count the max number of terminations in context - * @param pool the pool to allocate memory from - */ -MPF_DECLARE(mpf_context_t*) mpf_engine_context_create( - mpf_engine_t *engine, - const char *name, - void *obj, - apr_size_t max_termination_count, - apr_pool_t *pool); - -/** - * Destroy MPF context. - * @param context the context to destroy - */ -MPF_DECLARE(apt_bool_t) mpf_engine_context_destroy(mpf_context_t *context); - -/** - * Get external object associated with MPF context. - * @param context the context to get object from - */ -MPF_DECLARE(void*) mpf_engine_context_object_get(const mpf_context_t *context); - -/** - * Get task. - * @param engine the engine to get task from - */ -MPF_DECLARE(apt_task_t*) mpf_task_get(const mpf_engine_t *engine); - -/** - * Set task msg type to send responses and events with. - * @param engine the engine to set task msg type for - * @param type the type to set - */ -MPF_DECLARE(void) mpf_engine_task_msg_type_set(mpf_engine_t *engine, apt_task_msg_type_e type); - -/** - * Create task message(if not created) and add MPF termination message to it. - * @param engine the engine task message belongs to - * @param command_id the MPF command identifier - * @param context the context to add termination to - * @param termination the termination to add - * @param descriptor the termination dependent descriptor - * @param task_msg the task message to create and add constructed MPF message to - */ -MPF_DECLARE(apt_bool_t) mpf_engine_termination_message_add( - mpf_engine_t *engine, - mpf_command_type_e command_id, - mpf_context_t *context, - mpf_termination_t *termination, - void *descriptor, - mpf_task_msg_t **task_msg); - -/** - * Create task message(if not created) and add MPF association message to it. - * @param engine the engine task message belongs to - * @param command_id the MPF command identifier - * @param context the context to add association of terminations for - * @param termination the termination to associate - * @param assoc_termination the termination to associate - * @param task_msg the task message to create and add constructed MPF message to - */ -MPF_DECLARE(apt_bool_t) mpf_engine_assoc_message_add( - mpf_engine_t *engine, - mpf_command_type_e command_id, - mpf_context_t *context, - mpf_termination_t *termination, - mpf_termination_t *assoc_termination, - mpf_task_msg_t **task_msg); - -/** - * Create task message(if not created) and add MPF topology message to it. - * @param engine the engine task message belongs to - * @param command_id the MPF command identifier - * @param context the context to modify topology for - * @param task_msg the task message to create and add constructed MPF message to - */ -MPF_DECLARE(apt_bool_t) mpf_engine_topology_message_add( - mpf_engine_t *engine, - mpf_command_type_e command_id, - mpf_context_t *context, - mpf_task_msg_t **task_msg); - -/** - * Send MPF task message. - * @param engine the engine to send task message to - * @param task_msg the task message to send - */ -MPF_DECLARE(apt_bool_t) mpf_engine_message_send(mpf_engine_t *engine, mpf_task_msg_t **task_msg); - -/** - * Set scheduler rate. - * @param engine the engine to set rate for - * @param rate the rate (n times faster than real-time) - */ -MPF_DECLARE(apt_bool_t) mpf_engine_scheduler_rate_set(mpf_engine_t *engine, unsigned long rate); - -/** - * Get the identifier of the engine . - * @param engine the engine to get name of - */ -MPF_DECLARE(const char*) mpf_engine_id_get(const mpf_engine_t *engine); - - -APT_END_EXTERN_C - -#endif /* MPF_ENGINE_H */ diff --git a/libs/unimrcp/libs/mpf/include/mpf_engine_factory.h b/libs/unimrcp/libs/mpf/include/mpf_engine_factory.h deleted file mode 100644 index d53607e2a40..00000000000 --- a/libs/unimrcp/libs/mpf/include/mpf_engine_factory.h +++ /dev/null @@ -1,48 +0,0 @@ -/* - * Copyright 2008-2014 Arsen Chaloyan - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - * - * $Id: mpf_engine_factory.h 2136 2014-07-04 06:33:36Z achaloyan@gmail.com $ - */ - -#ifndef MPF_ENGINE_FACTORY_H -#define MPF_ENGINE_FACTORY_H - -/** - * @file mpf_engine.h - * @brief Factory of Media Processing Engines - */ - -#include "mpf_types.h" - -APT_BEGIN_EXTERN_C - -/** Create factory of media engines. */ -MPF_DECLARE(mpf_engine_factory_t*) mpf_engine_factory_create(apr_pool_t *pool); - -/** Add media engine to factory. */ -MPF_DECLARE(apt_bool_t) mpf_engine_factory_engine_add(mpf_engine_factory_t *mpf_factory, mpf_engine_t *media_engine); - -/** Determine whether factory is empty. */ -MPF_DECLARE(apt_bool_t) mpf_engine_factory_is_empty(const mpf_engine_factory_t *mpf_factory); - -/** Select next available media engine. */ -MPF_DECLARE(mpf_engine_t*) mpf_engine_factory_engine_select(mpf_engine_factory_t *mpf_factory); - -/** Associate media engines with RTP termination factory. */ -MPF_DECLARE(apt_bool_t) mpf_engine_factory_rtp_factory_assign(mpf_engine_factory_t *mpf_factory, mpf_termination_factory_t *rtp_factory); - -APT_END_EXTERN_C - -#endif /* MPF_ENGINE_FACTORY_H */ diff --git a/libs/unimrcp/libs/mpf/include/mpf_file_termination_factory.h b/libs/unimrcp/libs/mpf/include/mpf_file_termination_factory.h deleted file mode 100644 index f1c9cbe99bf..00000000000 --- a/libs/unimrcp/libs/mpf/include/mpf_file_termination_factory.h +++ /dev/null @@ -1,39 +0,0 @@ -/* - * Copyright 2008-2014 Arsen Chaloyan - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - * - * $Id: mpf_file_termination_factory.h 2136 2014-07-04 06:33:36Z achaloyan@gmail.com $ - */ - -#ifndef MPF_FILE_TERMINATION_FACTORY_H -#define MPF_FILE_TERMINATION_FACTORY_H - -/** - * @file mpf_file_termination_factory.h - * @brief MPF File Termination Factory - */ - -#include "mpf_termination_factory.h" - -APT_BEGIN_EXTERN_C - -/** - * Create file termination factory. - */ -MPF_DECLARE(mpf_termination_factory_t*) mpf_file_termination_factory_create(apr_pool_t *pool); - - -APT_END_EXTERN_C - -#endif /* MPF_RTP_TERMINATION_FACTORY_H */ diff --git a/libs/unimrcp/libs/mpf/include/mpf_frame.h b/libs/unimrcp/libs/mpf/include/mpf_frame.h deleted file mode 100644 index af37459962e..00000000000 --- a/libs/unimrcp/libs/mpf/include/mpf_frame.h +++ /dev/null @@ -1,66 +0,0 @@ -/* - * Copyright 2008-2014 Arsen Chaloyan - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - * - * $Id: mpf_frame.h 2136 2014-07-04 06:33:36Z achaloyan@gmail.com $ - */ - -#ifndef MPF_FRAME_H -#define MPF_FRAME_H - -/** - * @file mpf_frame.h - * @brief MPF Audio/Video/Named-event Frame - */ - -#include "mpf_codec_descriptor.h" -#include "mpf_named_event.h" - -APT_BEGIN_EXTERN_C - -/** Media frame types */ -typedef enum { - MEDIA_FRAME_TYPE_NONE = 0x0, /**< none */ - MEDIA_FRAME_TYPE_AUDIO = 0x1, /**< audio frame */ - MEDIA_FRAME_TYPE_VIDEO = 0x2, /**< video frame */ - MEDIA_FRAME_TYPE_EVENT = 0x4 /**< named event frame (RFC4733/RFC2833) */ -} mpf_frame_type_e; - -/** Media frame marker */ -typedef enum { - MPF_MARKER_NONE, /**< none */ - MPF_MARKER_START_OF_EVENT, /**< start of event */ - MPF_MARKER_END_OF_EVENT, /**< end of event */ - MPF_MARKER_NEW_SEGMENT /**< start of new segment (long-lasting events) */ -} mpf_frame_marker_e; - -/** Media frame declaration */ -typedef struct mpf_frame_t mpf_frame_t; - -/** Media frame */ -struct mpf_frame_t { - /** frame type (audio/video/named-event) mpf_frame_type_e */ - int type; - /** frame marker (start-of-event,end-of-event) mpf_frame_marker_e */ - int marker; - /** codec frame */ - mpf_codec_frame_t codec_frame; - /** named-event frame */ - mpf_named_event_frame_t event_frame; -}; - - -APT_END_EXTERN_C - -#endif /* MPF_FRAME_H */ diff --git a/libs/unimrcp/libs/mpf/include/mpf_frame_buffer.h b/libs/unimrcp/libs/mpf/include/mpf_frame_buffer.h deleted file mode 100644 index 749479fe226..00000000000 --- a/libs/unimrcp/libs/mpf/include/mpf_frame_buffer.h +++ /dev/null @@ -1,56 +0,0 @@ -/* - * Copyright 2008-2014 Arsen Chaloyan - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - * - * $Id: mpf_frame_buffer.h 2136 2014-07-04 06:33:36Z achaloyan@gmail.com $ - */ - -#ifndef MPF_FRAME_BUFFER_H -#define MPF_FRAME_BUFFER_H - -/** - * @file mpf_frame_buffer.h - * @brief Buffer of Media Frames - */ - -#include "mpf_frame.h" - -APT_BEGIN_EXTERN_C - -/** Opaque frame buffer declaration */ -typedef struct mpf_frame_buffer_t mpf_frame_buffer_t; - - -/** Create frame buffer */ -mpf_frame_buffer_t* mpf_frame_buffer_create(apr_size_t frame_size, apr_size_t frame_count, apr_pool_t *pool); - -/** Destroy frame buffer */ -void mpf_frame_buffer_destroy(mpf_frame_buffer_t *buffer); - -/** Restart frame buffer */ -apt_bool_t mpf_frame_buffer_restart(mpf_frame_buffer_t *buffer); - -/** Write frame to buffer */ -apt_bool_t mpf_frame_buffer_write(mpf_frame_buffer_t *buffer, const mpf_frame_t *frame); - -/** Read frame from buffer */ -apt_bool_t mpf_frame_buffer_read(mpf_frame_buffer_t *buffer, mpf_frame_t *frame); - -#ifdef MPF_FRAME_BUFFER_DEBUG -apt_bool_t mpf_frame_buffer_file_open(mpf_frame_buffer_t *buffer, const char *utt_file_in, const char *utt_file_out); -#endif - -APT_END_EXTERN_C - -#endif /* MPF_FRAME_BUFFER_H */ diff --git a/libs/unimrcp/libs/mpf/include/mpf_jitter_buffer.h b/libs/unimrcp/libs/mpf/include/mpf_jitter_buffer.h deleted file mode 100644 index 5b483607fbc..00000000000 --- a/libs/unimrcp/libs/mpf/include/mpf_jitter_buffer.h +++ /dev/null @@ -1,68 +0,0 @@ -/* - * Copyright 2008-2014 Arsen Chaloyan - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - * - * $Id: mpf_jitter_buffer.h 2136 2014-07-04 06:33:36Z achaloyan@gmail.com $ - */ - -#ifndef MPF_JITTER_BUFFER_H -#define MPF_JITTER_BUFFER_H - -/** - * @file mpf_jitter_buffer.h - * @brief Jitter Buffer - */ - -#include "mpf_frame.h" -#include "mpf_codec.h" -#include "mpf_rtp_descriptor.h" - -APT_BEGIN_EXTERN_C - -/** Jitter buffer write result */ -typedef enum { - JB_OK, /**< successful write */ - JB_DISCARD_NOT_ALLIGNED, /**< discarded write (frame isn't alligned to CODEC_FRAME_TIME_BASE) */ - JB_DISCARD_TOO_LATE, /**< discarded write (frame is arrived too late) */ - JB_DISCARD_TOO_EARLY, /**< discarded write (frame is arrived too early, buffer is full) */ -} jb_result_t; - -/** Opaque jitter buffer declaration */ -typedef struct mpf_jitter_buffer_t mpf_jitter_buffer_t; - - -/** Create jitter buffer */ -mpf_jitter_buffer_t* mpf_jitter_buffer_create(mpf_jb_config_t *jb_config, mpf_codec_descriptor_t *descriptor, mpf_codec_t *codec, apr_pool_t *pool); - -/** Destroy jitter buffer */ -void mpf_jitter_buffer_destroy(mpf_jitter_buffer_t *jb); - -/** Restart jitter buffer */ -apt_bool_t mpf_jitter_buffer_restart(mpf_jitter_buffer_t *jb); - -/** Write audio data to jitter buffer */ -jb_result_t mpf_jitter_buffer_write(mpf_jitter_buffer_t *jb, void *buffer, apr_size_t size, apr_uint32_t ts, apr_byte_t marker); - -/** Write named event to jitter buffer */ -jb_result_t mpf_jitter_buffer_event_write(mpf_jitter_buffer_t *jb, const mpf_named_event_frame_t *named_event, apr_uint32_t ts, apr_byte_t marker); - -/** Read media frame from jitter buffer */ -apt_bool_t mpf_jitter_buffer_read(mpf_jitter_buffer_t *jb, mpf_frame_t *media_frame); - -/** Get current playout delay */ -apr_uint32_t mpf_jitter_buffer_playout_delay_get(const mpf_jitter_buffer_t *jb); - -APT_END_EXTERN_C - -#endif /* MPF_JITTER_BUFFER_H */ diff --git a/libs/unimrcp/libs/mpf/include/mpf_message.h b/libs/unimrcp/libs/mpf/include/mpf_message.h deleted file mode 100644 index 91db7f09465..00000000000 --- a/libs/unimrcp/libs/mpf/include/mpf_message.h +++ /dev/null @@ -1,94 +0,0 @@ -/* - * Copyright 2008-2014 Arsen Chaloyan - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - * - * $Id: mpf_message.h 2136 2014-07-04 06:33:36Z achaloyan@gmail.com $ - */ - -#ifndef MPF_MESSAGE_H -#define MPF_MESSAGE_H - -/** - * @file mpf_message.h - * @brief Media Processing Framework Message Definitions - */ - -#include "mpf_types.h" - -APT_BEGIN_EXTERN_C - -/** Max number of messages grouped in a container */ -#define MAX_MPF_MESSAGE_COUNT 5 - -/** Enumeration of MPF message types */ -typedef enum { - MPF_MESSAGE_TYPE_REQUEST, /**< request message */ - MPF_MESSAGE_TYPE_RESPONSE, /**< response message */ - MPF_MESSAGE_TYPE_EVENT /**< event message */ -} mpf_message_type_e; - -/** Enumeration of MPF status codes */ -typedef enum { - MPF_STATUS_CODE_SUCCESS, /**< indicates success */ - MPF_STATUS_CODE_FAILURE /**< indicates failure */ -} mpf_status_code_e; - - -/** Enumeration of MPF commands */ -typedef enum { - MPF_ADD_TERMINATION, /**< add termination to context */ - MPF_MODIFY_TERMINATION, /**< modify termination properties */ - MPF_SUBTRACT_TERMINATION,/**< subtract termination from context */ - MPF_ADD_ASSOCIATION, /**< add association between terminations */ - MPF_REMOVE_ASSOCIATION, /**< remove association between terminations */ - MPF_RESET_ASSOCIATIONS, /**< reset associations among terminations (also destroy topology) */ - MPF_APPLY_TOPOLOGY, /**< apply topology based on assigned associations */ - MPF_DESTROY_TOPOLOGY /**< destroy applied topology */ -} mpf_command_type_e; - -/** MPF message declaration */ -typedef struct mpf_message_t mpf_message_t; -/** MPF message container declaration */ -typedef struct mpf_message_container_t mpf_message_container_t; - -/** MPF message definition */ -struct mpf_message_t { - /** Message type (request/response/event) */ - mpf_message_type_e message_type; - /** Command identifier (add, modify, subtract, ...) */ - mpf_command_type_e command_id; - /** Status code used in responses */ - mpf_status_code_e status_code; - - /** Context */ - mpf_context_t *context; - /** Termination */ - mpf_termination_t *termination; - /** Associated termination */ - mpf_termination_t *assoc_termination; - /** Termination type dependent descriptor */ - void *descriptor; -}; - -/** MPF message container definition */ -struct mpf_message_container_t { - /** Number of actual messages */ - apr_size_t count; - /** Array of messages */ - mpf_message_t messages[MAX_MPF_MESSAGE_COUNT]; -}; - -APT_END_EXTERN_C - -#endif /* MPF_MESSAGE_H */ diff --git a/libs/unimrcp/libs/mpf/include/mpf_mixer.h b/libs/unimrcp/libs/mpf/include/mpf_mixer.h deleted file mode 100644 index c4e66542d2e..00000000000 --- a/libs/unimrcp/libs/mpf/include/mpf_mixer.h +++ /dev/null @@ -1,51 +0,0 @@ -/* - * Copyright 2008-2014 Arsen Chaloyan - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - * - * $Id: mpf_mixer.h 2136 2014-07-04 06:33:36Z achaloyan@gmail.com $ - */ - -#ifndef MPF_MIXER_H -#define MPF_MIXER_H - -/** - * @file mpf_mixer.h - * @brief MPF Stream Mixer (n-sources, 1-sink) - */ - -#include "mpf_object.h" - -APT_BEGIN_EXTERN_C - -/** - * Create audio stream mixer. - * @param source_arr the array of audio sources - * @param source_count the number of audio sources - * @param sink the audio sink - * @param codec_manager the codec manager - * @param name the informative name used for debugging - * @param pool the pool to allocate memory from - */ -MPF_DECLARE(mpf_object_t*) mpf_mixer_create( - mpf_audio_stream_t **source_arr, - apr_size_t source_count, - mpf_audio_stream_t *sink, - const mpf_codec_manager_t *codec_manager, - const char *name, - apr_pool_t *pool); - - -APT_END_EXTERN_C - -#endif /* MPF_MIXER_H */ diff --git a/libs/unimrcp/libs/mpf/include/mpf_multiplier.h b/libs/unimrcp/libs/mpf/include/mpf_multiplier.h deleted file mode 100644 index 04d36469eb6..00000000000 --- a/libs/unimrcp/libs/mpf/include/mpf_multiplier.h +++ /dev/null @@ -1,51 +0,0 @@ -/* - * Copyright 2008-2014 Arsen Chaloyan - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - * - * $Id: mpf_multiplier.h 2136 2014-07-04 06:33:36Z achaloyan@gmail.com $ - */ - -#ifndef MPF_MULTIPLIER_H -#define MPF_MULTIPLIER_H - -/** - * @file mpf_multiplier.h - * @brief MPF Stream Multiplier (1-source, n-sinks) - */ - -#include "mpf_object.h" - -APT_BEGIN_EXTERN_C - -/** - * Create audio stream multiplier. - * @param source the audio source - * @param sink_arr the array of audio sinks - * @param sink_count the number of audio sinks - * @param codec_manager the codec manager - * @param name the informative name used for debugging - * @param pool the pool to allocate memory from - */ -MPF_DECLARE(mpf_object_t*) mpf_multiplier_create( - mpf_audio_stream_t *source, - mpf_audio_stream_t **sink_arr, - apr_size_t sink_count, - const mpf_codec_manager_t *codec_manager, - const char *name, - apr_pool_t *pool); - - -APT_END_EXTERN_C - -#endif /* MPF_MULTIPLIER_H */ diff --git a/libs/unimrcp/libs/mpf/include/mpf_named_event.h b/libs/unimrcp/libs/mpf/include/mpf_named_event.h deleted file mode 100644 index 1ffc71fc2b6..00000000000 --- a/libs/unimrcp/libs/mpf/include/mpf_named_event.h +++ /dev/null @@ -1,73 +0,0 @@ -/* - * Copyright 2008-2014 Arsen Chaloyan - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - * - * $Id: mpf_named_event.h 2136 2014-07-04 06:33:36Z achaloyan@gmail.com $ - */ - -#ifndef MPF_NAMED_EVENT_H -#define MPF_NAMED_EVENT_H - -/** - * @file mpf_named_event.h - * @brief MPF Named Events (RFC4733/RFC2833) - */ - -#include "mpf_codec_descriptor.h" - -APT_BEGIN_EXTERN_C - -/** Named event declaration */ -typedef struct mpf_named_event_frame_t mpf_named_event_frame_t; - - -/** Named event (RFC4733/RFC2833, out-of-band DTMF) */ -struct mpf_named_event_frame_t { - /** event (DTMF, tone) identifier */ - apr_uint32_t event_id: 8; -#if (APR_IS_BIGENDIAN == 1) - /** end of event */ - apr_uint32_t edge: 1; - /** reserved */ - apr_uint32_t reserved: 1; - /** tone volume */ - apr_uint32_t volume: 6; -#else - /** tone volume */ - apr_uint32_t volume: 6; - /** reserved */ - apr_uint32_t reserved: 1; - /** end of event */ - apr_uint32_t edge: 1; -#endif - /** event duration */ - apr_uint32_t duration: 16; -}; - -/** Create named event descriptor */ -MPF_DECLARE(mpf_codec_descriptor_t*) mpf_event_descriptor_create(apr_uint16_t sampling_rate, apr_pool_t *pool); - -/** Check whether the specified descriptor is named event one */ -MPF_DECLARE(apt_bool_t) mpf_event_descriptor_check(const mpf_codec_descriptor_t *descriptor); - -/** Convert DTMF character to event identifier */ -MPF_DECLARE(apr_uint32_t) mpf_dtmf_char_to_event_id(const char dtmf_char); - -/** Convert event identifier to DTMF character */ -MPF_DECLARE(char) mpf_event_id_to_dtmf_char(const apr_uint32_t event_id); - - -APT_END_EXTERN_C - -#endif /* MPF_NAMED_EVENT_H */ diff --git a/libs/unimrcp/libs/mpf/include/mpf_object.h b/libs/unimrcp/libs/mpf/include/mpf_object.h deleted file mode 100644 index 2e8db829b5d..00000000000 --- a/libs/unimrcp/libs/mpf/include/mpf_object.h +++ /dev/null @@ -1,79 +0,0 @@ -/* - * Copyright 2008-2014 Arsen Chaloyan - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - * - * $Id: mpf_object.h 2136 2014-07-04 06:33:36Z achaloyan@gmail.com $ - */ - -#ifndef MPF_OBJECT_H -#define MPF_OBJECT_H - -/** - * @file mpf_object.h - * @brief Media Processing Object Base (bridge, multiplexor, mixer, ...) - */ - -#include "mpf_types.h" - -APT_BEGIN_EXTERN_C - -/** MPF object declaration */ -typedef struct mpf_object_t mpf_object_t; - -/** Media processing objects base */ -struct mpf_object_t { - /** Informative name used for debugging */ - const char *name; - /** Virtual destroy */ - apt_bool_t (*destroy)(mpf_object_t *object); - /** Virtual process */ - apt_bool_t (*process)(mpf_object_t *object); - /** Virtual trace of media path */ - void (*trace)(mpf_object_t *object); -}; - -/** Initialize object */ -static APR_INLINE void mpf_object_init(mpf_object_t *object, const char *name) -{ - object->name = name; - object->destroy = NULL; - object->process = NULL; - object->trace = NULL; -} - -/** Destroy object */ -static APR_INLINE void mpf_object_destroy(mpf_object_t *object) -{ - if(object->destroy) - object->destroy(object); -} - -/** Process object */ -static APR_INLINE void mpf_object_process(mpf_object_t *object) -{ - if(object->process) - object->process(object); -} - -/** Trace media path */ -static APR_INLINE void mpf_object_trace(mpf_object_t *object) -{ - if(object->trace) - object->trace(object); -} - - -APT_END_EXTERN_C - -#endif /* MPF_OBJECT_H */ diff --git a/libs/unimrcp/libs/mpf/include/mpf_resampler.h b/libs/unimrcp/libs/mpf/include/mpf_resampler.h deleted file mode 100644 index 13e0e591439..00000000000 --- a/libs/unimrcp/libs/mpf/include/mpf_resampler.h +++ /dev/null @@ -1,42 +0,0 @@ -/* - * Copyright 2008-2014 Arsen Chaloyan - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - * - * $Id: mpf_resampler.h 2136 2014-07-04 06:33:36Z achaloyan@gmail.com $ - */ - -#ifndef MPF_RESAMPLER_H -#define MPF_RESAMPLER_H - -/** - * @file mpf_resampler.h - * @brief MPF Stream Resampler - */ - -#include "mpf_stream.h" - -APT_BEGIN_EXTERN_C - -/** - * Create audio stream resampler. - * @param source the source stream to resample - * @param sink the sink stream to resample to - * @param pool the pool to allocate memory from - */ -MPF_DECLARE(mpf_audio_stream_t*) mpf_resampler_create(mpf_audio_stream_t *source, mpf_audio_stream_t *sink, apr_pool_t *pool); - - -APT_END_EXTERN_C - -#endif /* MPF_RESAMPLER_H */ diff --git a/libs/unimrcp/libs/mpf/include/mpf_rtcp_packet.h b/libs/unimrcp/libs/mpf/include/mpf_rtcp_packet.h deleted file mode 100644 index 7afa55ede15..00000000000 --- a/libs/unimrcp/libs/mpf/include/mpf_rtcp_packet.h +++ /dev/null @@ -1,203 +0,0 @@ -/* - * Copyright 2008-2014 Arsen Chaloyan - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - * - * $Id: mpf_rtcp_packet.h 2136 2014-07-04 06:33:36Z achaloyan@gmail.com $ - */ - -#ifndef MPF_RTCP_PACKET_H -#define MPF_RTCP_PACKET_H - -/** - * @file mpf_rtcp_packet.h - * @brief RTCP Packet Definition - */ - -#include "mpf_rtp_stat.h" - -APT_BEGIN_EXTERN_C - - -/** RTCP payload (packet) types */ -typedef enum { - RTCP_SR = 200, - RTCP_RR = 201, - RTCP_SDES = 202, - RTCP_BYE = 203, - RTCP_APP = 204 -} rtcp_type_e; - -/** RTCP SDES types */ -typedef enum { - RTCP_SDES_END = 0, - RTCP_SDES_CNAME = 1, - RTCP_SDES_NAME = 2, - RTCP_SDES_EMAIL = 3, - RTCP_SDES_PHONE = 4, - RTCP_SDES_LOC = 5, - RTCP_SDES_TOOL = 6, - RTCP_SDES_NOTE = 7, - RTCP_SDES_PRIV = 8 -} rtcp_sdes_type_e; - -/** RTCP header declaration */ -typedef struct rtcp_header_t rtcp_header_t; -/** RTCP packet declaration */ -typedef struct rtcp_packet_t rtcp_packet_t; -/** SDES item declaration*/ -typedef struct rtcp_sdes_item_t rtcp_sdes_item_t; - - -/** RTCP header */ -struct rtcp_header_t { -#if (APR_IS_BIGENDIAN == 1) - /** protocol version */ - unsigned int version: 2; - /** padding flag */ - unsigned int padding: 1; - /** varies by packet type */ - unsigned int count: 5; - /** packet type */ - unsigned int pt: 8; -#else - /** varies by packet type */ - unsigned int count: 5; - /** padding flag */ - unsigned int padding: 1; - /** protocol version */ - unsigned int version: 2; - /** packet type */ - unsigned int pt: 8; -#endif - - /** packet length in words, w/o this word */ - unsigned int length: 16; -}; - -/** SDES item */ -struct rtcp_sdes_item_t { - /** type of item (rtcp_sdes_type_t) */ - apr_byte_t type; - /** length of item (in octets) */ - apr_byte_t length; - /** text, not null-terminated */ - char data[1]; -}; - -/** RTCP packet */ -struct rtcp_packet_t { - /** common header */ - rtcp_header_t header; - /** union of RTCP reports */ - union { - /** sender report (SR) */ - struct { - /** sr stat */ - rtcp_sr_stat_t sr_stat; - /** variable-length list rr stats */ - rtcp_rr_stat_t rr_stat[1]; - } sr; - - /** reception report (RR) */ - struct { - /** receiver generating this report */ - apr_uint32_t ssrc; - /** variable-length list rr stats */ - rtcp_rr_stat_t rr_stat[1]; - } rr; - - /** source description (SDES) */ - struct { - /** first SSRC/CSRC */ - apr_uint32_t ssrc; - /** list of SDES items */ - rtcp_sdes_item_t item[1]; - } sdes; - - /** BYE */ - struct { - /** list of sources */ - apr_uint32_t ssrc[1]; - /* optional length of reason string (in octets) */ - apr_byte_t length; - /* optional reason string, not null-terminated */ - char data[1]; - } bye; - } r; -}; - -/** Initialize RTCP header */ -static APR_INLINE void rtcp_header_init(rtcp_header_t *header, rtcp_type_e pt) -{ - header->version = RTP_VERSION; - header->padding = 0; - header->count = 0; - header->pt = pt; - header->length = 0; -} - -static APR_INLINE void rtcp_header_length_set(rtcp_header_t *header, apr_size_t length) -{ - header->length = htons((apr_uint16_t)length / 4 - 1); -} - -static APR_INLINE void rtcp_sr_hton(rtcp_sr_stat_t *sr_stat) -{ - sr_stat->ssrc = htonl(sr_stat->ssrc); - sr_stat->ntp_sec = htonl(sr_stat->ntp_sec); - sr_stat->ntp_frac = htonl(sr_stat->ntp_frac); - sr_stat->rtp_ts = htonl(sr_stat->rtp_ts); - sr_stat->sent_packets = htonl(sr_stat->sent_packets); - sr_stat->sent_octets = htonl(sr_stat->sent_octets); -} - -static APR_INLINE void rtcp_sr_ntoh(rtcp_sr_stat_t *sr_stat) -{ - sr_stat->ssrc = ntohl(sr_stat->ssrc); - sr_stat->ntp_sec = ntohl(sr_stat->ntp_sec); - sr_stat->ntp_frac = ntohl(sr_stat->ntp_frac); - sr_stat->rtp_ts = ntohl(sr_stat->rtp_ts); - sr_stat->sent_packets = ntohl(sr_stat->sent_packets); - sr_stat->sent_octets = ntohl(sr_stat->sent_octets); -} - -static APR_INLINE void rtcp_rr_hton(rtcp_rr_stat_t *rr_stat) -{ - rr_stat->ssrc = htonl(rr_stat->ssrc); - rr_stat->last_seq = htonl(rr_stat->last_seq); - rr_stat->jitter = htonl(rr_stat->jitter); - -#if (APR_IS_BIGENDIAN == 0) - rr_stat->lost = ((rr_stat->lost >> 16) & 0x000000ff) | - (rr_stat->lost & 0x0000ff00) | - ((rr_stat->lost << 16) & 0x00ff0000); -#endif -} - -static APR_INLINE void rtcp_rr_ntoh(rtcp_rr_stat_t *rr_stat) -{ - rr_stat->ssrc = ntohl(rr_stat->ssrc); - rr_stat->last_seq = ntohl(rr_stat->last_seq); - rr_stat->jitter = ntohl(rr_stat->jitter); - -#if (APR_IS_BIGENDIAN == 0) - rr_stat->lost = ((rr_stat->lost >> 16) & 0x000000ff) | - (rr_stat->lost & 0x0000ff00) | - ((rr_stat->lost << 16) & 0x00ff0000); -#endif -} - -APT_END_EXTERN_C - -#endif /* MPF_RTCP_PACKET_H */ diff --git a/libs/unimrcp/libs/mpf/include/mpf_rtp_attribs.h b/libs/unimrcp/libs/mpf/include/mpf_rtp_attribs.h deleted file mode 100644 index 033e1988513..00000000000 --- a/libs/unimrcp/libs/mpf/include/mpf_rtp_attribs.h +++ /dev/null @@ -1,56 +0,0 @@ -/* - * Copyright 2008-2014 Arsen Chaloyan - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - * - * $Id: mpf_rtp_attribs.h 2136 2014-07-04 06:33:36Z achaloyan@gmail.com $ - */ - -#ifndef MPF_RTP_ATTRIBS_H -#define MPF_RTP_ATTRIBS_H - -/** - * @file mpf_rtp_attribs.h - * @brief RTP Attributes (SDP) - */ - -#include "mpf_rtp_descriptor.h" - -APT_BEGIN_EXTERN_C - -/** RTP attributes */ -typedef enum { - RTP_ATTRIB_RTPMAP, - RTP_ATTRIB_SENDONLY, - RTP_ATTRIB_RECVONLY, - RTP_ATTRIB_SENDRECV, - RTP_ATTRIB_MID, - RTP_ATTRIB_PTIME, - - RTP_ATTRIB_COUNT, - RTP_ATTRIB_UNKNOWN = RTP_ATTRIB_COUNT -} mpf_rtp_attrib_e; - - -/** Get audio media attribute name by attribute identifier */ -MPF_DECLARE(const apt_str_t*) mpf_rtp_attrib_str_get(mpf_rtp_attrib_e attrib_id); - -/** Find audio media attribute identifier by attribute name */ -MPF_DECLARE(mpf_rtp_attrib_e) mpf_rtp_attrib_id_find(const apt_str_t *attrib); - -/** Get string by RTP direction (send/receive) */ -MPF_DECLARE(const apt_str_t*) mpf_rtp_direction_str_get(mpf_stream_direction_e direction); - -APT_END_EXTERN_C - -#endif /* MPF_RTP_ATTRIBS_H */ diff --git a/libs/unimrcp/libs/mpf/include/mpf_rtp_defs.h b/libs/unimrcp/libs/mpf/include/mpf_rtp_defs.h deleted file mode 100644 index 6ea541862af..00000000000 --- a/libs/unimrcp/libs/mpf/include/mpf_rtp_defs.h +++ /dev/null @@ -1,185 +0,0 @@ -/* - * Copyright 2008-2014 Arsen Chaloyan - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - * - * $Id: mpf_rtp_defs.h 2136 2014-07-04 06:33:36Z achaloyan@gmail.com $ - */ - -#ifndef MPF_RTP_DEFS_H -#define MPF_RTP_DEFS_H - -/** - * @file mpf_rtp_defs.h - * @brief Internal RTP Definitions - */ - -#include "mpf_rtp_stat.h" -#include "mpf_jitter_buffer.h" - -APT_BEGIN_EXTERN_C - -/** Used to calculate actual number of received packets (32bit) in - * case seq number (16bit) wrapped around */ -#define RTP_SEQ_MOD (1 << 16) -/** Number of max dropout packets (seq numbers) is used to trigger - * either a drift in the seq numbers or a misorder packet */ -#define MAX_DROPOUT 3000 -/** Number of max misorder packets (seq numbers) is used to - * differentiate a drift in the seq numbers from a misorder packet */ -#define MAX_MISORDER 100 -/** Restart receiver if threshold is reached */ -#define DISCARDED_TO_RECEIVED_RATIO_THRESHOLD 30 /* 30% */ -/** Deviation threshold is used to trigger a drift in timestamps */ -#define DEVIATION_THRESHOLD 4000 -/** This threshold is used to detect a new talkspurt */ -#define INTER_TALKSPURT_GAP 1000 /* msec */ - -/** RTP receiver history declaration */ -typedef struct rtp_rx_history_t rtp_rx_history_t; -/** RTP receiver periodic history declaration */ -typedef struct rtp_rx_periodic_history_t rtp_rx_periodic_history_t; -/** RTP receiver declaration */ -typedef struct rtp_receiver_t rtp_receiver_t; -/** RTP transmitter declaration */ -typedef struct rtp_transmitter_t rtp_transmitter_t; - -/** History of RTP receiver */ -struct rtp_rx_history_t { - /** Updated on every seq num wrap around */ - apr_uint32_t seq_cycles; - - /** First seq num received */ - apr_uint16_t seq_num_base; - /** Max seq num received */ - apr_uint16_t seq_num_max; - - /** Last timestamp received */ - apr_uint32_t ts_last; - /** Local time measured on last packet received */ - apr_time_t time_last; - - /** New ssrc, which is in probation */ - apr_uint32_t ssrc_new; - /** Period of ssrc probation */ - apr_byte_t ssrc_probation; -}; - -/** Periodic history of RTP receiver (initialized after every N packets) */ -struct rtp_rx_periodic_history_t { - /** Number of packets received */ - apr_uint32_t received_prior; - /** Number of packets expected */ - apr_uint32_t expected_prior; - /** Number of packets discarded */ - apr_uint32_t discarded_prior; - - /** Min jitter */ - apr_uint32_t jitter_min; - /** Max jitter */ - apr_uint32_t jitter_max; -}; - -/** Reset RTP receiver history */ -static APR_INLINE void mpf_rtp_rx_history_reset(rtp_rx_history_t *rx_history) -{ - memset(rx_history,0,sizeof(rtp_rx_history_t)); -} - -/** Reset RTP receiver periodic history */ -static APR_INLINE void mpf_rtp_rx_periodic_history_reset(rtp_rx_periodic_history_t *rx_periodic_history) -{ - memset(rx_periodic_history,0,sizeof(rtp_rx_periodic_history_t)); -} - -/** RTP receiver */ -struct rtp_receiver_t { - /** Jitter buffer */ - mpf_jitter_buffer_t *jb; - - /** RTCP statistics used in RR */ - rtcp_rr_stat_t rr_stat; - /** RTP receiver statistics */ - rtp_rx_stat_t stat; - /** RTP history */ - rtp_rx_history_t history; - /** RTP periodic history */ - rtp_rx_periodic_history_t periodic_history; -}; - - -/** RTP transmitter */ -struct rtp_transmitter_t { - /** Packetization time in msec */ - apr_uint16_t ptime; - - /** Number of frames in a packet */ - apr_uint16_t packet_frames; - /** Current number of frames */ - apr_uint16_t current_frames; - /** Samples in frames in timestamp units */ - apr_uint32_t samples_per_frame; - - /** Indicate silence period among the talkspurts */ - apr_byte_t inactivity; - /** Last seq number sent */ - apr_uint16_t last_seq_num; - /** Current timestamp (samples processed) */ - apr_uint32_t timestamp; - /** Event timestamp base */ - apr_uint32_t timestamp_base; - - /** RTP packet payload */ - char *packet_data; - /** RTP packet payload size */ - apr_size_t packet_size; - - /** RTCP statistics used in SR */ - rtcp_sr_stat_t sr_stat; -}; - - -/** Initialize RTP receiver */ -static APR_INLINE void rtp_receiver_init(rtp_receiver_t *receiver) -{ - receiver->jb = NULL; - - mpf_rtcp_rr_stat_reset(&receiver->rr_stat); - mpf_rtp_rx_stat_reset(&receiver->stat); - mpf_rtp_rx_history_reset(&receiver->history); - mpf_rtp_rx_periodic_history_reset(&receiver->periodic_history); -} - -/** Initialize RTP transmitter */ -static APR_INLINE void rtp_transmitter_init(rtp_transmitter_t *transmitter) -{ - transmitter->ptime = 0; - - transmitter->packet_frames = 0; - transmitter->current_frames = 0; - transmitter->samples_per_frame = 0; - - transmitter->inactivity = 0; - transmitter->last_seq_num = 0; - transmitter->timestamp = 0; - transmitter->timestamp_base = 0; - - transmitter->packet_data = NULL; - transmitter->packet_size = 0; - - mpf_rtcp_sr_stat_reset(&transmitter->sr_stat); -} - -APT_END_EXTERN_C - -#endif /* MPF_RTP_DEFS_H */ diff --git a/libs/unimrcp/libs/mpf/include/mpf_rtp_descriptor.h b/libs/unimrcp/libs/mpf/include/mpf_rtp_descriptor.h deleted file mode 100644 index 60fac7aefab..00000000000 --- a/libs/unimrcp/libs/mpf/include/mpf_rtp_descriptor.h +++ /dev/null @@ -1,219 +0,0 @@ -/* - * Copyright 2008-2014 Arsen Chaloyan - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - * - * $Id: mpf_rtp_descriptor.h 2136 2014-07-04 06:33:36Z achaloyan@gmail.com $ - */ - -#ifndef MPF_RTP_DESCRIPTOR_H -#define MPF_RTP_DESCRIPTOR_H - -/** - * @file mpf_rtp_descriptor.h - * @brief MPF RTP Stream Descriptor - */ - -#include -#include "apt_string.h" -#include "mpf_stream_descriptor.h" - -APT_BEGIN_EXTERN_C - -/** RTP media descriptor declaration */ -typedef struct mpf_rtp_media_descriptor_t mpf_rtp_media_descriptor_t; -/** RTP stream descriptor declaration */ -typedef struct mpf_rtp_stream_descriptor_t mpf_rtp_stream_descriptor_t; -/** RTP termination descriptor declaration */ -typedef struct mpf_rtp_termination_descriptor_t mpf_rtp_termination_descriptor_t; -/** RTP configuration declaration */ -typedef struct mpf_rtp_config_t mpf_rtp_config_t; -/** RTP settings declaration */ -typedef struct mpf_rtp_settings_t mpf_rtp_settings_t; -/** Jitter buffer configuration declaration */ -typedef struct mpf_jb_config_t mpf_jb_config_t; - -/** MPF media state */ -typedef enum { - MPF_MEDIA_DISABLED, /**< disabled media */ - MPF_MEDIA_ENABLED /**< enabled media */ -} mpf_media_state_e; - -/** RTP media (local/remote) descriptor */ -struct mpf_rtp_media_descriptor_t { - /** Media state (disabled/enabled)*/ - mpf_media_state_e state; - /** Ip address */ - apt_str_t ip; - /** External (NAT) Ip address */ - apt_str_t ext_ip; - /** Port */ - apr_port_t port; - /** Stream mode (send/receive) */ - mpf_stream_direction_e direction; - /** Packetization time */ - apr_uint16_t ptime; - /** Codec list */ - mpf_codec_list_t codec_list; - /** Media identifier */ - apr_size_t mid; - /** Position, order in SDP message (0,1,...) */ - apr_size_t id; -}; - -/** RTP stream descriptor */ -struct mpf_rtp_stream_descriptor_t { - /** Stream capabilities */ - mpf_stream_capabilities_t *capabilities; - /** Local media descriptor */ - mpf_rtp_media_descriptor_t *local; - /** Remote media descriptor */ - mpf_rtp_media_descriptor_t *remote; - /** Settings loaded from config */ - mpf_rtp_settings_t *settings; -}; - -/** RTP termination descriptor */ -struct mpf_rtp_termination_descriptor_t { - /** Audio stream descriptor */ - mpf_rtp_stream_descriptor_t audio; - /** Video stream descriptor */ - mpf_rtp_stream_descriptor_t video; -}; - -/** Jitter buffer configuration */ -struct mpf_jb_config_t { - /** Min playout delay in msec */ - apr_uint32_t min_playout_delay; - /** Initial playout delay in msec */ - apr_uint32_t initial_playout_delay; - /** Max playout delay in msec */ - apr_uint32_t max_playout_delay; - /** Mode of operation of the jitter buffer: static - 0, adaptive - 1 */ - apr_byte_t adaptive; - /** Enable/disable time skew detection */ - apr_byte_t time_skew_detection; -}; - -/** RTCP BYE transmission policy */ -typedef enum { - RTCP_BYE_DISABLE, /**< disable RTCP BYE transmission */ - RTCP_BYE_PER_SESSION, /**< transmit RTCP BYE at the end of session */ - RTCP_BYE_PER_TALKSPURT /**< transmit RTCP BYE at the end of each talkspurt (input) */ -} rtcp_bye_policy_e; - -/** RTP factory config */ -struct mpf_rtp_config_t { - /** Local IP address to bind to */ - apt_str_t ip; - /** External (NAT) IP address */ - apt_str_t ext_ip; - /** Min RTP port */ - apr_port_t rtp_port_min; - /** Max RTP port */ - apr_port_t rtp_port_max; - /** Current RTP port */ - apr_port_t rtp_port_cur; -}; - -/** RTP settings */ -struct mpf_rtp_settings_t { - /** Packetization time */ - apr_uint16_t ptime; - /** Codec list */ - mpf_codec_list_t codec_list; - /** Preference in offer/anwser: 1 - own(local) preference, 0 - remote preference */ - apt_bool_t own_preferrence; - /** Enable/disable RTCP support */ - apt_bool_t rtcp; - /** RTCP BYE policy */ - rtcp_bye_policy_e rtcp_bye_policy; - /** RTCP report transmission interval */ - apr_uint16_t rtcp_tx_interval; - /** RTCP rx resolution (timeout to check for a new RTCP message) */ - apr_uint16_t rtcp_rx_resolution; - /** Jitter buffer config */ - mpf_jb_config_t jb_config; -}; - -/** Initialize media descriptor */ -static APR_INLINE void mpf_rtp_media_descriptor_init(mpf_rtp_media_descriptor_t *media) -{ - media->state = MPF_MEDIA_DISABLED; - apt_string_reset(&media->ip); - apt_string_reset(&media->ext_ip); - media->port = 0; - media->direction = STREAM_DIRECTION_NONE; - media->ptime = 0; - mpf_codec_list_reset(&media->codec_list); - media->mid = 0; - media->id = 0; -} - -/** Initialize stream descriptor */ -static APR_INLINE void mpf_rtp_stream_descriptor_init(mpf_rtp_stream_descriptor_t *descriptor) -{ - descriptor->capabilities = NULL; - descriptor->local = NULL; - descriptor->remote = NULL; - descriptor->settings = NULL; -} - -/** Initialize RTP termination descriptor */ -static APR_INLINE void mpf_rtp_termination_descriptor_init(mpf_rtp_termination_descriptor_t *rtp_descriptor) -{ - mpf_rtp_stream_descriptor_init(&rtp_descriptor->audio); - mpf_rtp_stream_descriptor_init(&rtp_descriptor->video); -} - -/** Initialize JB config */ -static APR_INLINE void mpf_jb_config_init(mpf_jb_config_t *jb_config) -{ - jb_config->adaptive = 0; - jb_config->initial_playout_delay = 0; - jb_config->min_playout_delay = 0; - jb_config->max_playout_delay = 0; - jb_config->time_skew_detection = 1; -} - -/** Allocate RTP config */ -static APR_INLINE mpf_rtp_config_t* mpf_rtp_config_alloc(apr_pool_t *pool) -{ - mpf_rtp_config_t *rtp_config = (mpf_rtp_config_t*)apr_palloc(pool,sizeof(mpf_rtp_config_t)); - apt_string_reset(&rtp_config->ip); - apt_string_reset(&rtp_config->ext_ip); - rtp_config->rtp_port_cur = 0; - rtp_config->rtp_port_min = 0; - rtp_config->rtp_port_max = 0; - return rtp_config; -} - -/** Allocate RTP settings */ -static APR_INLINE mpf_rtp_settings_t* mpf_rtp_settings_alloc(apr_pool_t *pool) -{ - mpf_rtp_settings_t *rtp_settings = (mpf_rtp_settings_t*)apr_palloc(pool,sizeof(mpf_rtp_settings_t)); - rtp_settings->ptime = 0; - mpf_codec_list_init(&rtp_settings->codec_list,0,pool); - rtp_settings->own_preferrence = FALSE; - rtp_settings->rtcp = FALSE; - rtp_settings->rtcp_bye_policy = RTCP_BYE_DISABLE; - rtp_settings->rtcp_tx_interval = 0; - rtp_settings->rtcp_rx_resolution = 0; - mpf_jb_config_init(&rtp_settings->jb_config); - return rtp_settings; -} - - -APT_END_EXTERN_C - -#endif /* MPF_RTP_DESCRIPTOR_H */ diff --git a/libs/unimrcp/libs/mpf/include/mpf_rtp_header.h b/libs/unimrcp/libs/mpf/include/mpf_rtp_header.h deleted file mode 100644 index 36c50c0b42b..00000000000 --- a/libs/unimrcp/libs/mpf/include/mpf_rtp_header.h +++ /dev/null @@ -1,88 +0,0 @@ -/* - * Copyright 2008-2014 Arsen Chaloyan - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - * - * $Id: mpf_rtp_header.h 2136 2014-07-04 06:33:36Z achaloyan@gmail.com $ - */ - -#ifndef MPF_RTP_HEADER_H -#define MPF_RTP_HEADER_H - -/** - * @file mpf_rtp_header.h - * @brief RTP Header Definition - */ - -#include "mpf.h" - -APT_BEGIN_EXTERN_C - -/** Protocol version */ -#define RTP_VERSION 2 - -/** RTP header declaration */ -typedef struct rtp_header_t rtp_header_t; -/** RTP extension header declaration */ -typedef struct rtp_extension_header_t rtp_extension_header_t; - - -/** RTP header */ -struct rtp_header_t { -#if (APR_IS_BIGENDIAN == 1) - /** protocol version */ - apr_uint32_t version: 2; - /** padding flag */ - apr_uint32_t padding: 1; - /** header extension flag */ - apr_uint32_t extension: 1; - /** CSRC count */ - apr_uint32_t count: 4; - /** marker bit */ - apr_uint32_t marker: 1; - /** payload type */ - apr_uint32_t type: 7; -#else - /** CSRC count */ - apr_uint32_t count: 4; - /** header extension flag */ - apr_uint32_t extension: 1; - /** padding flag */ - apr_uint32_t padding: 1; - /** protocol version */ - apr_uint32_t version: 2; - /** payload type */ - apr_uint32_t type: 7; - /** marker bit */ - apr_uint32_t marker: 1; -#endif - - /** sequence number */ - apr_uint32_t sequence: 16; - /** timestamp */ - apr_uint32_t timestamp; - /** synchronization source */ - apr_uint32_t ssrc; -}; - -/** RTP extension header */ -struct rtp_extension_header_t { - /** profile */ - apr_uint16_t profile; - /** length */ - apr_uint16_t length; -}; - -APT_END_EXTERN_C - -#endif /* MPF_RTP_HEADER_H */ diff --git a/libs/unimrcp/libs/mpf/include/mpf_rtp_pt.h b/libs/unimrcp/libs/mpf/include/mpf_rtp_pt.h deleted file mode 100644 index 2d01346308b..00000000000 --- a/libs/unimrcp/libs/mpf/include/mpf_rtp_pt.h +++ /dev/null @@ -1,48 +0,0 @@ -/* - * Copyright 2008-2014 Arsen Chaloyan - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - * - * $Id: mpf_rtp_pt.h 2136 2014-07-04 06:33:36Z achaloyan@gmail.com $ - */ - -#ifndef MPF_RTP_PT_H -#define MPF_RTP_PT_H - -/** - * @file mpf_rtp_pt.h - * @brief RTP Payload Types (RFC3551) - */ - -#include "mpf.h" - -APT_BEGIN_EXTERN_C - -/** RTP payload types */ -typedef enum { - RTP_PT_PCMU = 0, /**< PCMU Audio 8kHz 1 */ - RTP_PT_PCMA = 8, /**< PCMA Audio 8kHz 1 */ - - RTP_PT_CN = 13, /**< Comfort Noise Audio 8kHz 1 */ - - RTP_PT_RESERVED = 19, /**< Not used for any particular codec */ - - RTP_PT_DYNAMIC = 96, /**< Start of dynamic payload types */ - RTP_PT_DYNAMIC_MAX = 127, /**< End of dynamic payload types */ - - RTP_PT_UNKNOWN = 128 /**< Unknown (invalid) payload type */ -} mpf_rtp_pt_e; - -APT_END_EXTERN_C - -#endif /* MPF_RTP_PT_H */ diff --git a/libs/unimrcp/libs/mpf/include/mpf_rtp_stat.h b/libs/unimrcp/libs/mpf/include/mpf_rtp_stat.h deleted file mode 100644 index d312e75be5b..00000000000 --- a/libs/unimrcp/libs/mpf/include/mpf_rtp_stat.h +++ /dev/null @@ -1,115 +0,0 @@ -/* - * Copyright 2008-2014 Arsen Chaloyan - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - * - * $Id: mpf_rtp_stat.h 2136 2014-07-04 06:33:36Z achaloyan@gmail.com $ - */ - -#ifndef MPF_RTP_STAT_H -#define MPF_RTP_STAT_H - -/** - * @file mpf_rtp_stat.h - * @brief RTP/RTCP Statistics - */ - -#include "mpf.h" - -APT_BEGIN_EXTERN_C - -/** RTP receiver statistics */ -typedef struct rtp_rx_stat_t rtp_rx_stat_t; - -/** RTCP statistics used in Sender Report (SR) */ -typedef struct rtcp_sr_stat_t rtcp_sr_stat_t; -/** RTCP statistics used in Receiver Report (RR) */ -typedef struct rtcp_rr_stat_t rtcp_rr_stat_t; - - -/** RTP receiver statistics */ -struct rtp_rx_stat_t { - /** number of valid RTP packets received */ - apr_uint32_t received_packets; - /** number of invalid RTP packets received */ - apr_uint32_t invalid_packets; - - /** number of discarded in jitter buffer packets */ - apr_uint32_t discarded_packets; - /** number of ignored packets */ - apr_uint32_t ignored_packets; - - /** number of lost in network packets */ - apr_uint32_t lost_packets; - - /** number of restarts */ - apr_byte_t restarts; -}; - -/** RTCP statistics used in Sender Report (SR) */ -struct rtcp_sr_stat_t { - /** sender source identifier */ - apr_uint32_t ssrc; - /** NTP timestamp (seconds) */ - apr_uint32_t ntp_sec; - /** NTP timestamp (fractions) */ - apr_uint32_t ntp_frac; - /** RTP timestamp */ - apr_uint32_t rtp_ts; - /** packets sent */ - apr_uint32_t sent_packets; - /** octets (bytes) sent */ - apr_uint32_t sent_octets; -}; - -/** RTCP statistics used in Receiver Report (RR) */ -struct rtcp_rr_stat_t { - /** source identifier of RTP stream being received */ - apr_uint32_t ssrc; - /** fraction lost since last SR/RR */ - apr_uint32_t fraction:8; - /** cumulative number of packets lost (signed!) */ - apr_int32_t lost:24; - /** extended last sequence number received */ - apr_uint32_t last_seq; - /** interarrival jitter (RFC3550) */ - apr_uint32_t jitter; - /** last SR packet from this source */ - apr_uint32_t lsr; - /** delay since last SR packet */ - apr_uint32_t dlsr; -}; - - - -/** Reset RTCP SR statistics */ -static APR_INLINE void mpf_rtcp_sr_stat_reset(rtcp_sr_stat_t *sr_stat) -{ - memset(sr_stat,0,sizeof(rtcp_sr_stat_t)); -} - -/** Reset RTCP RR statistics */ -static APR_INLINE void mpf_rtcp_rr_stat_reset(rtcp_rr_stat_t *rr_stat) -{ - memset(rr_stat,0,sizeof(rtcp_rr_stat_t)); -} - -/** Reset RTP receiver statistics */ -static APR_INLINE void mpf_rtp_rx_stat_reset(rtp_rx_stat_t *rx_stat) -{ - memset(rx_stat,0,sizeof(rtp_rx_stat_t)); -} - -APT_END_EXTERN_C - -#endif /* MPF_RTP_STAT_H */ diff --git a/libs/unimrcp/libs/mpf/include/mpf_rtp_stream.h b/libs/unimrcp/libs/mpf/include/mpf_rtp_stream.h deleted file mode 100644 index 00e6baf5579..00000000000 --- a/libs/unimrcp/libs/mpf/include/mpf_rtp_stream.h +++ /dev/null @@ -1,62 +0,0 @@ -/* - * Copyright 2008-2014 Arsen Chaloyan - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - * - * $Id: mpf_rtp_stream.h 2136 2014-07-04 06:33:36Z achaloyan@gmail.com $ - */ - -#ifndef MPF_RTP_STREAM_H -#define MPF_RTP_STREAM_H - -/** - * @file mpf_rtp_stream.h - * @brief MPF RTP Stream - */ - -#include "mpf_stream.h" -#include "mpf_rtp_descriptor.h" - -APT_BEGIN_EXTERN_C - -/** - * Create RTP stream. - * @param termination the back pointer to hold - * @param config the configuration of RTP factory - * @param settings the settings to use - * @param pool the pool to allocate memory from - */ -MPF_DECLARE(mpf_audio_stream_t*) mpf_rtp_stream_create(mpf_termination_t *termination, mpf_rtp_config_t *config, mpf_rtp_settings_t *settings, apr_pool_t *pool); - -/** - * Add/enable RTP stream. - * @param stream RTP stream to add - */ -MPF_DECLARE(apt_bool_t) mpf_rtp_stream_add(mpf_audio_stream_t *stream); - -/** - * Subtract/disable RTP stream. - * @param stream RTP stream to subtract - */ -MPF_DECLARE(apt_bool_t) mpf_rtp_stream_remove(mpf_audio_stream_t *stream); - -/** - * Modify RTP stream. - * @param stream RTP stream to modify - * @param descriptor the descriptor to modify stream according - */ -MPF_DECLARE(apt_bool_t) mpf_rtp_stream_modify(mpf_audio_stream_t *stream, mpf_rtp_stream_descriptor_t *descriptor); - -APT_END_EXTERN_C - -#endif /* MPF_RTP_STREAM_H */ diff --git a/libs/unimrcp/libs/mpf/include/mpf_rtp_termination_factory.h b/libs/unimrcp/libs/mpf/include/mpf_rtp_termination_factory.h deleted file mode 100644 index f639f261b98..00000000000 --- a/libs/unimrcp/libs/mpf/include/mpf_rtp_termination_factory.h +++ /dev/null @@ -1,42 +0,0 @@ -/* - * Copyright 2008-2014 Arsen Chaloyan - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - * - * $Id: mpf_rtp_termination_factory.h 2136 2014-07-04 06:33:36Z achaloyan@gmail.com $ - */ - -#ifndef MPF_RTP_TERMINATION_FACTORY_H -#define MPF_RTP_TERMINATION_FACTORY_H - -/** - * @file mpf_rtp_termination_factory.h - * @brief MPF RTP Termination Factory - */ - -#include "mpf_termination_factory.h" -#include "mpf_rtp_descriptor.h" - -APT_BEGIN_EXTERN_C - -/** - * Create RTP termination factory. - */ -MPF_DECLARE(mpf_termination_factory_t*) mpf_rtp_termination_factory_create( - mpf_rtp_config_t *rtp_config, - apr_pool_t *pool); - - -APT_END_EXTERN_C - -#endif /* MPF_RTP_TERMINATION_FACTORY_H */ diff --git a/libs/unimrcp/libs/mpf/include/mpf_scheduler.h b/libs/unimrcp/libs/mpf/include/mpf_scheduler.h deleted file mode 100644 index fe8e79af46f..00000000000 --- a/libs/unimrcp/libs/mpf/include/mpf_scheduler.h +++ /dev/null @@ -1,68 +0,0 @@ -/* - * Copyright 2008-2014 Arsen Chaloyan - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - * - * $Id: mpf_scheduler.h 2136 2014-07-04 06:33:36Z achaloyan@gmail.com $ - */ - -#ifndef MPF_SCHEDULER_H -#define MPF_SCHEDULER_H - -/** - * @file mpf_scheduler.h - * @brief MPF Scheduler (High Resolution Clock for Media Processing and Timer) - */ - -#include "mpf_types.h" - -APT_BEGIN_EXTERN_C - -/** Prototype of scheduler callback */ -typedef void (*mpf_scheduler_proc_f)(mpf_scheduler_t *scheduler, void *obj); - -/** Create scheduler */ -MPF_DECLARE(mpf_scheduler_t*) mpf_scheduler_create(apr_pool_t *pool); - -/** Destroy scheduler */ -MPF_DECLARE(void) mpf_scheduler_destroy(mpf_scheduler_t *scheduler); - -/** Set media processing clock */ -MPF_DECLARE(apt_bool_t) mpf_scheduler_media_clock_set( - mpf_scheduler_t *scheduler, - unsigned long resolution, - mpf_scheduler_proc_f proc, - void *obj); - -/** Set timer clock */ -MPF_DECLARE(apt_bool_t) mpf_scheduler_timer_clock_set( - mpf_scheduler_t *scheduler, - unsigned long resolution, - mpf_scheduler_proc_f proc, - void *obj); - -/** Set scheduler rate (n times faster than real-time) */ -MPF_DECLARE(apt_bool_t) mpf_scheduler_rate_set( - mpf_scheduler_t *scheduler, - unsigned long rate); - -/** Start scheduler */ -MPF_DECLARE(apt_bool_t) mpf_scheduler_start(mpf_scheduler_t *scheduler); - -/** Stop scheduler */ -MPF_DECLARE(apt_bool_t) mpf_scheduler_stop(mpf_scheduler_t *scheduler); - - -APT_END_EXTERN_C - -#endif /* MPF_SCHEDULER_H */ diff --git a/libs/unimrcp/libs/mpf/include/mpf_stream.h b/libs/unimrcp/libs/mpf/include/mpf_stream.h deleted file mode 100644 index 33276aa7b77..00000000000 --- a/libs/unimrcp/libs/mpf/include/mpf_stream.h +++ /dev/null @@ -1,171 +0,0 @@ -/* - * Copyright 2008-2014 Arsen Chaloyan - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - * - * $Id: mpf_stream.h 2136 2014-07-04 06:33:36Z achaloyan@gmail.com $ - */ - -#ifndef MPF_STREAM_H -#define MPF_STREAM_H - -/** - * @file mpf_stream.h - * @brief MPF Bidirectional Stream - */ - -#include "mpf_types.h" -#include "mpf_frame.h" -#include "mpf_stream_descriptor.h" -#include "mpf_codec.h" -#include "apt_text_stream.h" - -APT_BEGIN_EXTERN_C - -/** Declaration of virtual table of audio stream */ -typedef struct mpf_audio_stream_vtable_t mpf_audio_stream_vtable_t; - -/** Audio stream */ -struct mpf_audio_stream_t { - /** External object */ - void *obj; - /** Table of virtual methods */ - const mpf_audio_stream_vtable_t *vtable; - /** Back pointer */ - mpf_termination_t *termination; - - /** Stream capabilities */ - const mpf_stream_capabilities_t *capabilities; - - /** Stream direction send/receive (bitmask of mpf_stream_direction_e) */ - mpf_stream_direction_e direction; - /** Rx codec descriptor */ - mpf_codec_descriptor_t *rx_descriptor; - /** Rx event descriptor */ - mpf_codec_descriptor_t *rx_event_descriptor; - /** Tx codec descriptor */ - mpf_codec_descriptor_t *tx_descriptor; - /** Tx event descriptor */ - mpf_codec_descriptor_t *tx_event_descriptor; -}; - -/** Video stream */ -struct mpf_video_stream_t { - /** Back pointer */ - mpf_termination_t *termination; - /** Stream direction send/receive (bitmask of mpf_stream_direction_e) */ - mpf_stream_direction_e direction; -}; - -/** Table of audio stream virtual methods */ -struct mpf_audio_stream_vtable_t { - /** Virtual destroy method */ - apt_bool_t (*destroy)(mpf_audio_stream_t *stream); - - /** Virtual open receiver method */ - apt_bool_t (*open_rx)(mpf_audio_stream_t *stream, mpf_codec_t *codec); - /** Virtual close receiver method */ - apt_bool_t (*close_rx)(mpf_audio_stream_t *stream); - /** Virtual read frame method */ - apt_bool_t (*read_frame)(mpf_audio_stream_t *stream, mpf_frame_t *frame); - - /** Virtual open transmitter method */ - apt_bool_t (*open_tx)(mpf_audio_stream_t *stream, mpf_codec_t *codec); - /** Virtual close transmitter method */ - apt_bool_t (*close_tx)(mpf_audio_stream_t *stream); - /** Virtual write frame method */ - apt_bool_t (*write_frame)(mpf_audio_stream_t *stream, const mpf_frame_t *frame); - - /** Virtual trace method */ - void (*trace)(mpf_audio_stream_t *stream, mpf_stream_direction_e direction, apt_text_stream_t *output); -}; - -/** Create audio stream */ -MPF_DECLARE(mpf_audio_stream_t*) mpf_audio_stream_create(void *obj, const mpf_audio_stream_vtable_t *vtable, const mpf_stream_capabilities_t *capabilities, apr_pool_t *pool); - -/** Validate audio stream receiver */ -MPF_DECLARE(apt_bool_t) mpf_audio_stream_rx_validate( - mpf_audio_stream_t *stream, - const mpf_codec_descriptor_t *descriptor, - const mpf_codec_descriptor_t *event_descriptor, - apr_pool_t *pool); - -/** Validate audio stream transmitter */ -MPF_DECLARE(apt_bool_t) mpf_audio_stream_tx_validate( - mpf_audio_stream_t *stream, - const mpf_codec_descriptor_t *descriptor, - const mpf_codec_descriptor_t *event_descriptor, - apr_pool_t *pool); - -/** Destroy audio stream */ -static APR_INLINE apt_bool_t mpf_audio_stream_destroy(mpf_audio_stream_t *stream) -{ - if(stream->vtable->destroy) - return stream->vtable->destroy(stream); - return TRUE; -} - -/** Open audio stream receiver */ -static APR_INLINE apt_bool_t mpf_audio_stream_rx_open(mpf_audio_stream_t *stream, mpf_codec_t *codec) -{ - if(stream->vtable->open_rx) - return stream->vtable->open_rx(stream,codec); - return TRUE; -} - -/** Close audio stream receiver */ -static APR_INLINE apt_bool_t mpf_audio_stream_rx_close(mpf_audio_stream_t *stream) -{ - if(stream->vtable->close_rx) - return stream->vtable->close_rx(stream); - return TRUE; -} - -/** Read frame */ -static APR_INLINE apt_bool_t mpf_audio_stream_frame_read(mpf_audio_stream_t *stream, mpf_frame_t *frame) -{ - if(stream->vtable->read_frame) - return stream->vtable->read_frame(stream,frame); - return TRUE; -} - -/** Open audio stream transmitter */ -static APR_INLINE apt_bool_t mpf_audio_stream_tx_open(mpf_audio_stream_t *stream, mpf_codec_t *codec) -{ - if(stream->vtable->open_tx) - return stream->vtable->open_tx(stream,codec); - return TRUE; -} - -/** Close audio stream transmitter */ -static APR_INLINE apt_bool_t mpf_audio_stream_tx_close(mpf_audio_stream_t *stream) -{ - if(stream->vtable->close_tx) - return stream->vtable->close_tx(stream); - return TRUE; -} - -/** Write frame */ -static APR_INLINE apt_bool_t mpf_audio_stream_frame_write(mpf_audio_stream_t *stream, const mpf_frame_t *frame) -{ - if(stream->vtable->write_frame) - return stream->vtable->write_frame(stream,frame); - return TRUE; -} - -/** Trace media path */ -MPF_DECLARE(void) mpf_audio_stream_trace(mpf_audio_stream_t *stream, mpf_stream_direction_e direction, apt_text_stream_t *output); - -APT_END_EXTERN_C - -#endif /* MPF_STREAM_H */ diff --git a/libs/unimrcp/libs/mpf/include/mpf_stream_descriptor.h b/libs/unimrcp/libs/mpf/include/mpf_stream_descriptor.h deleted file mode 100644 index d91f5166ebb..00000000000 --- a/libs/unimrcp/libs/mpf/include/mpf_stream_descriptor.h +++ /dev/null @@ -1,90 +0,0 @@ -/* - * Copyright 2008-2014 Arsen Chaloyan - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - * - * $Id: mpf_stream_descriptor.h 2136 2014-07-04 06:33:36Z achaloyan@gmail.com $ - */ - -#ifndef MPF_STREAM_DESCRIPTOR_H -#define MPF_STREAM_DESCRIPTOR_H - -/** - * @file mpf_stream_descriptor.h - * @brief MPF Stream Descriptor - */ - -#include "mpf_codec_descriptor.h" - -APT_BEGIN_EXTERN_C - -/** Stream capabilities declaration */ -typedef struct mpf_stream_capabilities_t mpf_stream_capabilities_t; - -/** Stream directions (none, send, receive, duplex) */ -typedef enum { - STREAM_DIRECTION_NONE = 0x0, /**< none */ - STREAM_DIRECTION_SEND = 0x1, /**< send (sink) */ - STREAM_DIRECTION_RECEIVE = 0x2, /**< receive (source) */ - - STREAM_DIRECTION_DUPLEX = STREAM_DIRECTION_SEND | STREAM_DIRECTION_RECEIVE /**< duplex */ -} mpf_stream_direction_e; - - -/** Stream capabilities */ -struct mpf_stream_capabilities_t { - /** Supported directions either send, receive or bidirectional stream (bitmask of mpf_stream_direction_e) */ - mpf_stream_direction_e direction; - /** Codec capabilities (supported codecs and named events) */ - mpf_codec_capabilities_t codecs; -}; - -/** Create stream capabilities */ -MPF_DECLARE(mpf_stream_capabilities_t*) mpf_stream_capabilities_create(mpf_stream_direction_e directions, apr_pool_t *pool); - -/** Create source stream capabilities */ -static APR_INLINE mpf_stream_capabilities_t* mpf_source_stream_capabilities_create(apr_pool_t *pool) -{ - return mpf_stream_capabilities_create(STREAM_DIRECTION_RECEIVE,pool); -} - -/** Create sink stream capabilities */ -static APR_INLINE mpf_stream_capabilities_t* mpf_sink_stream_capabilities_create(apr_pool_t *pool) -{ - return mpf_stream_capabilities_create(STREAM_DIRECTION_SEND,pool); -} - -/** Clone stream capabilities */ -MPF_DECLARE(mpf_stream_capabilities_t*) mpf_stream_capabilities_clone(const mpf_stream_capabilities_t *src_capabilities, apr_pool_t *pool); - -/** Merge stream capabilities */ -MPF_DECLARE(apt_bool_t) mpf_stream_capabilities_merge(mpf_stream_capabilities_t *capabilities, const mpf_stream_capabilities_t *src_capabilities, apr_pool_t *pool); - - -/** Get reverse direction */ -static APR_INLINE mpf_stream_direction_e mpf_stream_reverse_direction_get(mpf_stream_direction_e direction) -{ - mpf_stream_direction_e rev_direction = direction; - if(rev_direction == STREAM_DIRECTION_SEND) { - rev_direction = STREAM_DIRECTION_RECEIVE; - } - else if(rev_direction == STREAM_DIRECTION_RECEIVE) { - rev_direction = STREAM_DIRECTION_SEND; - } - return rev_direction; -} - - -APT_END_EXTERN_C - -#endif /* MPF_STREAM_DESCRIPTOR_H */ diff --git a/libs/unimrcp/libs/mpf/include/mpf_termination.h b/libs/unimrcp/libs/mpf/include/mpf_termination.h deleted file mode 100644 index 6d45aeeddb0..00000000000 --- a/libs/unimrcp/libs/mpf/include/mpf_termination.h +++ /dev/null @@ -1,121 +0,0 @@ -/* - * Copyright 2008-2014 Arsen Chaloyan - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - * - * $Id: mpf_termination.h 2136 2014-07-04 06:33:36Z achaloyan@gmail.com $ - */ - -#ifndef MPF_TERMINATION_H -#define MPF_TERMINATION_H - -/** - * @file mpf_termination.h - * @brief MPF Termination - */ - -#include "mpf_types.h" -#include "apt_timer_queue.h" - -APT_BEGIN_EXTERN_C - -/** Prototype of termination event handler */ -typedef apt_bool_t (*mpf_termination_event_handler_f)(mpf_termination_t *termination, int event_id, void *descriptor); - -/** Termination vtable declaration */ -typedef struct mpf_termination_vtable_t mpf_termination_vtable_t; - -/** Table of termination virtual methods */ -struct mpf_termination_vtable_t { - /** Virtual termination destroy method */ - apt_bool_t (*destroy)(mpf_termination_t *termination); - - /** Virtual termination add method */ - apt_bool_t (*add)(mpf_termination_t *termination, void *descriptor); - /** Virtual termination modify method */ - apt_bool_t (*modify)(mpf_termination_t *termination, void *descriptor); - /** Virtual termination subtract method */ - apt_bool_t (*subtract)(mpf_termination_t *termination); -}; - - -/** MPF Termination */ -struct mpf_termination_t { - /** Pool to allocate memory from */ - apr_pool_t *pool; - /** Informative name used for debugging */ - const char *name; - /** External object */ - void *obj; - /** Media engine to send events to */ - void *media_engine; - /** Event handler */ - mpf_termination_event_handler_f event_handler; - /** Codec manager */ - const mpf_codec_manager_t *codec_manager; - /** Timer queue */ - apt_timer_queue_t *timer_queue; - /** Termination factory entire termination created by */ - mpf_termination_factory_t *termination_factory; - /** Table of virtual methods */ - const mpf_termination_vtable_t *vtable; - /** Slot in context */ - apr_size_t slot; - - /** Audio stream */ - mpf_audio_stream_t *audio_stream; - /** Video stream */ - mpf_video_stream_t *video_stream; -}; - -/** - * Create MPF termination base. - * @param termination_factory the termination factory - * @param obj the external object associated with termination - * @param vtable the table of virtual functions of termination - * @param audio_stream the audio stream - * @param video_stream the video stream - * @param pool the pool to allocate memory from - */ -MPF_DECLARE(mpf_termination_t*) mpf_termination_base_create( - mpf_termination_factory_t *termination_factory, - void *obj, - const mpf_termination_vtable_t *vtable, - mpf_audio_stream_t *audio_stream, - mpf_video_stream_t *video_stream, - apr_pool_t *pool); - -/** - * Add MPF termination. - * @param termination the termination to add - * @param descriptor the termination specific descriptor - */ -MPF_DECLARE(apt_bool_t) mpf_termination_add(mpf_termination_t *termination, void *descriptor); - -/** - * Modify MPF termination. - * @param termination the termination to modify - * @param descriptor the termination specific descriptor - */ -MPF_DECLARE(apt_bool_t) mpf_termination_modify(mpf_termination_t *termination, void *descriptor); - -/** - * Subtract MPF termination. - * @param termination the termination to subtract - */ -MPF_DECLARE(apt_bool_t) mpf_termination_subtract(mpf_termination_t *termination); - - -APT_END_EXTERN_C - -#endif /* MPF_TERMINATION_H */ diff --git a/libs/unimrcp/libs/mpf/include/mpf_termination_factory.h b/libs/unimrcp/libs/mpf/include/mpf_termination_factory.h deleted file mode 100644 index 08d46fc64fb..00000000000 --- a/libs/unimrcp/libs/mpf/include/mpf_termination_factory.h +++ /dev/null @@ -1,105 +0,0 @@ -/* - * Copyright 2008-2014 Arsen Chaloyan - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - * - * $Id: mpf_termination_factory.h 2136 2014-07-04 06:33:36Z achaloyan@gmail.com $ - */ - -#ifndef MPF_TERMINATION_FACTORY_H -#define MPF_TERMINATION_FACTORY_H - -/** - * @file mpf_termination_factory.h - * @brief MPF Termination Factory - */ - -#include "mpf_types.h" - -APT_BEGIN_EXTERN_C - -/** MPF termination factory */ -struct mpf_termination_factory_t { - /** Virtual create */ - mpf_termination_t* (*create_termination)(mpf_termination_factory_t *factory, void *obj, apr_pool_t *pool); - /** Virtual assign engine */ - apt_bool_t (*assign_engine)(mpf_termination_factory_t *factory, mpf_engine_t *media_engine); -}; - -/** - * Assign media engine to termination factory. - * @param termination_factory the termination factory to assign media engine to - * @param media_engine the media engine to assign - */ -MPF_DECLARE(apt_bool_t) mpf_termination_factory_engine_assign( - mpf_termination_factory_t *termination_factory, - mpf_engine_t *media_engine); - -/** - * Create MPF termination from termination factory. - * @param termination_factory the termination factory to create termination from - * @param obj the external object associated with termination - * @param pool the pool to allocate memory from - */ -MPF_DECLARE(mpf_termination_t*) mpf_termination_create( - mpf_termination_factory_t *termination_factory, - void *obj, - apr_pool_t *pool); - -/** - * Create raw MPF termination. - * @param obj the external object associated with termination - * @param audio_stream the audio stream of the termination - * @param video_stream the video stream of the termination - * @param pool the pool to allocate memory from - */ -MPF_DECLARE(mpf_termination_t*) mpf_raw_termination_create( - void *obj, - mpf_audio_stream_t *audio_stream, - mpf_video_stream_t *video_stream, - apr_pool_t *pool); - -/** - * Destroy MPF termination. - * @param termination the termination to destroy - */ -MPF_DECLARE(apt_bool_t) mpf_termination_destroy(mpf_termination_t *termination); - -/** - * Get termination name. - * @param termination the termination to get name of - */ -MPF_DECLARE(const char*) mpf_termination_name_get(const mpf_termination_t *termination); - -/** - * Get associated object. - * @param termination the termination to get object from - */ -MPF_DECLARE(void*) mpf_termination_object_get(const mpf_termination_t *termination); - -/** - * Get audio stream. - * @param termination the termination to get audio stream from - */ -MPF_DECLARE(mpf_audio_stream_t*) mpf_termination_audio_stream_get(const mpf_termination_t *termination); - -/** - * Get video stream. - * @param termination the termination to get video stream from - */ -MPF_DECLARE(mpf_video_stream_t*) mpf_termination_video_stream_get(const mpf_termination_t *termination); - - -APT_END_EXTERN_C - -#endif /* MPF_TERMINATION_FACTORY_H */ diff --git a/libs/unimrcp/libs/mpf/include/mpf_trace.h b/libs/unimrcp/libs/mpf/include/mpf_trace.h deleted file mode 100644 index 323cc034ba5..00000000000 --- a/libs/unimrcp/libs/mpf/include/mpf_trace.h +++ /dev/null @@ -1,51 +0,0 @@ -/* - * Copyright 2008-2014 Arsen Chaloyan - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - * - * $Id: apt_log.h 1792 2011-01-10 21:08:52Z achaloyan $ - */ - -#ifndef MPF_TRACE_H -#define MPF_TRACE_H - -/** - * @file mpf_trace.h - * @brief MPF Tracer - */ - -#include -#include "mpf.h" - -APT_BEGIN_EXTERN_C - -#ifdef WIN32 -static void mpf_debug_output_trace(const char* format, ...) -{ - char buf[1024]; - va_list arg; - va_start(arg, format); - apr_vsnprintf(buf, sizeof(buf), format, arg); - va_end(arg); - - OutputDebugStringA(buf); -} -#else -static APR_INLINE void mpf_debug_output_trace() {} -#endif - -static APR_INLINE void mpf_null_trace() {} - -APT_END_EXTERN_C - -#endif /* MPF_TRACE_H */ diff --git a/libs/unimrcp/libs/mpf/include/mpf_types.h b/libs/unimrcp/libs/mpf/include/mpf_types.h deleted file mode 100644 index 3b8637eaba5..00000000000 --- a/libs/unimrcp/libs/mpf/include/mpf_types.h +++ /dev/null @@ -1,61 +0,0 @@ -/* - * Copyright 2008-2014 Arsen Chaloyan - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - * - * $Id: mpf_types.h 2136 2014-07-04 06:33:36Z achaloyan@gmail.com $ - */ - -#ifndef MPF_TYPES_H -#define MPF_TYPES_H - -/** - * @file mpf_types.h - * @brief MPF Types Declarations - */ - -#include "mpf.h" - -APT_BEGIN_EXTERN_C - -/** Opaque MPF engine declaration */ -typedef struct mpf_engine_t mpf_engine_t; - -/** Opaque MPF engine factory declaration */ -typedef struct mpf_engine_factory_t mpf_engine_factory_t; - -/** Opaque MPF scheduler declaration */ -typedef struct mpf_scheduler_t mpf_scheduler_t; - -/** Opaque codec manager declaration */ -typedef struct mpf_codec_manager_t mpf_codec_manager_t; - -/** Opaque MPF context declaration */ -typedef struct mpf_context_t mpf_context_t; - -/** Opaque MPF termination declaration */ -typedef struct mpf_termination_t mpf_termination_t; - -/** Opaque MPF termination factory declaration */ -typedef struct mpf_termination_factory_t mpf_termination_factory_t; - -/** Opaque MPF audio stream declaration */ -typedef struct mpf_audio_stream_t mpf_audio_stream_t; - -/** Opaque MPF video stream declaration */ -typedef struct mpf_video_stream_t mpf_video_stream_t; - - -APT_END_EXTERN_C - -#endif /* MPF_TYPES_H */ diff --git a/libs/unimrcp/libs/mpf/mpf.2010.vcxproj.filters b/libs/unimrcp/libs/mpf/mpf.2010.vcxproj.filters deleted file mode 100644 index d79e3f31a4b..00000000000 --- a/libs/unimrcp/libs/mpf/mpf.2010.vcxproj.filters +++ /dev/null @@ -1,236 +0,0 @@ - - - - - {3d69fc35-a195-4376-9508-ef77d7b27e71} - - - {81e2eace-c57a-4135-92cd-cc3575dfb088} - - - {93995380-89BD-4b04-88EB-625FBE52EBFB} - h;hpp;hxx;hm;inl;inc;xsd - - - {6fc3533a-b688-477d-914d-e0ffb15aa9a9} - cpp;c;cc;cxx;def;odl;idl;hpj;bat;asm;asmx - - - - - codecs\g711 - - - src - - - src - - - src - - - src - - - src - - - src - - - src - - - src - - - src - - - src - - - src - - - src - - - src - - - src - - - src - - - src - - - src - - - src - - - src - - - src - - - src - - - src - - - src - - - src - - - src - - - src - - - src - - - src - - - src - - - - - codecs\g711 - - - include - - - include - - - include - - - include - - - include - - - include - - - include - - - include - - - include - - - include - - - include - - - include - - - include - - - include - - - include - - - include - - - include - - - include - - - include - - - include - - - include - - - include - - - include - - - include - - - include - - - include - - - include - - - include - - - include - - - include - - - include - - - include - - - include - - - include - - - include - - - include - - - include - - - include - - - include - - - include - - - \ No newline at end of file diff --git a/libs/unimrcp/libs/mpf/mpf.2017.vcxproj b/libs/unimrcp/libs/mpf/mpf.2017.vcxproj deleted file mode 100644 index 578280ea27b..00000000000 --- a/libs/unimrcp/libs/mpf/mpf.2017.vcxproj +++ /dev/null @@ -1,196 +0,0 @@ - - - - - Debug - Win32 - - - Debug - x64 - - - Release - Win32 - - - Release - x64 - - - - mpf - {B5A00BFA-6083-4FAE-A097-71642D6473B5} - mpf - Win32Proj - - - - StaticLibrary - Unicode - true - $(DefaultPlatformToolset) - - - StaticLibrary - Unicode - $(DefaultPlatformToolset) - - - StaticLibrary - Unicode - true - $(DefaultPlatformToolset) - - - StaticLibrary - Unicode - $(DefaultPlatformToolset) - - - - - - - - - - - - - - - - - - - - - - - - - - - <_ProjectFileVersion>10.0.30319.1 - $(PlatformName)\$(Configuration)\ - $(PlatformName)\$(Configuration)\ - $(PlatformName)\$(Configuration)\ - $(PlatformName)\$(Configuration)\ - $(PlatformName)\$(Configuration)\ - $(PlatformName)\$(Configuration)\ - $(SolutionDir)$(PlatformName)\$(Configuration)\ - $(PlatformName)\$(Configuration)\ - - - - codecs;%(AdditionalIncludeDirectories) - APT_STATIC_LIB;MPF_STATIC_LIB;%(PreprocessorDefinitions) - - - - - X64 - - - codecs;%(AdditionalIncludeDirectories) - APT_STATIC_LIB;MPF_STATIC_LIB;%(PreprocessorDefinitions) - false - ProgramDatabase - - - - - codecs;%(AdditionalIncludeDirectories) - APT_STATIC_LIB;MPF_STATIC_LIB;%(PreprocessorDefinitions) - - - - - X64 - - - codecs;%(AdditionalIncludeDirectories) - APT_STATIC_LIB;MPF_STATIC_LIB;%(PreprocessorDefinitions) - false - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - \ No newline at end of file diff --git a/libs/unimrcp/libs/mpf/mpf.vcproj b/libs/unimrcp/libs/mpf/mpf.vcproj deleted file mode 100644 index 043486d5809..00000000000 --- a/libs/unimrcp/libs/mpf/mpf.vcproj +++ /dev/null @@ -1,552 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/libs/unimrcp/libs/mpf/mpf.vcxproj b/libs/unimrcp/libs/mpf/mpf.vcxproj deleted file mode 100644 index 6bbb3f53719..00000000000 --- a/libs/unimrcp/libs/mpf/mpf.vcxproj +++ /dev/null @@ -1,200 +0,0 @@ - - - - - Debug - Win32 - - - Debug - x64 - - - Release - Win32 - - - Release - x64 - - - - {B5A00BFA-6083-4FAE-A097-71642D6473B5} - mpf - Win32Proj - - - - StaticLibrary - Unicode - true - - - StaticLibrary - Unicode - - - StaticLibrary - Unicode - true - - - StaticLibrary - Unicode - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - <_ProjectFileVersion>10.0.30319.1 - AllRules.ruleset - - - AllRules.ruleset - - - AllRules.ruleset - - - AllRules.ruleset - - - - - - codecs;%(AdditionalIncludeDirectories) - - - - - codecs;%(AdditionalIncludeDirectories) - - - - - X64 - - - codecs;%(AdditionalIncludeDirectories) - ProgramDatabase - - - - - X64 - - - codecs;%(AdditionalIncludeDirectories) - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - {13deeca0-bdd4-4744-a1a2-8eb0a44df3d2} - false - - - - - - \ No newline at end of file diff --git a/libs/unimrcp/libs/mpf/mpf.vcxproj.filters b/libs/unimrcp/libs/mpf/mpf.vcxproj.filters deleted file mode 100644 index 16ecf0e62ff..00000000000 --- a/libs/unimrcp/libs/mpf/mpf.vcxproj.filters +++ /dev/null @@ -1,239 +0,0 @@ - - - - - {33a3a10a-4697-4720-8c24-20340757326e} - - - {148f1b8f-859b-4dd9-96b0-0474d7bb875b} - - - {93995380-89BD-4b04-88EB-625FBE52EBFB} - h;hpp;hxx;hm;inl;inc;xsd - - - {35011b8a-6a42-4e9f-b55b-a84db1d929a8} - cpp;c;cc;cxx;def;odl;idl;hpj;bat;asm;asmx - - - - - codecs\g711 - - - src - - - src - - - src - - - src - - - src - - - src - - - src - - - src - - - src - - - src - - - src - - - src - - - src - - - src - - - src - - - src - - - src - - - src - - - src - - - src - - - src - - - src - - - src - - - src - - - src - - - src - - - src - - - src - - - src - - - - - codecs\g711 - - - include - - - include - - - include - - - include - - - include - - - include - - - include - - - include - - - include - - - include - - - include - - - include - - - include - - - include - - - include - - - include - - - include - - - include - - - include - - - include - - - include - - - include - - - include - - - include - - - include - - - include - - - include - - - include - - - include - - - include - - - include - - - include - - - include - - - include - - - include - - - include - - - include - - - include - - - include - - - include - - - include - - - \ No newline at end of file diff --git a/libs/unimrcp/libs/mpf/src/mpf_activity_detector.c b/libs/unimrcp/libs/mpf/src/mpf_activity_detector.c deleted file mode 100644 index 09b1a813a3f..00000000000 --- a/libs/unimrcp/libs/mpf/src/mpf_activity_detector.c +++ /dev/null @@ -1,183 +0,0 @@ -/* - * Copyright 2008-2014 Arsen Chaloyan - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - * - * $Id: mpf_activity_detector.c 2136 2014-07-04 06:33:36Z achaloyan@gmail.com $ - */ - -#include "mpf_activity_detector.h" -#include "apt_log.h" - -/** Detector states */ -typedef enum { - DETECTOR_STATE_INACTIVITY, /**< inactivity detected */ - DETECTOR_STATE_ACTIVITY_TRANSITION, /**< activity detection is in-progress */ - DETECTOR_STATE_ACTIVITY, /**< activity detected */ - DETECTOR_STATE_INACTIVITY_TRANSITION /**< inactivity detection is in-progress */ -} mpf_detector_state_e; - -/** Activity detector */ -struct mpf_activity_detector_t { - /* voice activity (silence) level threshold */ - apr_size_t level_threshold; - - /* period of activity required to complete transition to active state */ - apr_size_t speech_timeout; - /* period of inactivity required to complete transition to inactive state */ - apr_size_t silence_timeout; - /* noinput timeout */ - apr_size_t noinput_timeout; - - /* current state */ - mpf_detector_state_e state; - /* duration spent in current state */ - apr_size_t duration; -}; - -/** Create activity detector */ -MPF_DECLARE(mpf_activity_detector_t*) mpf_activity_detector_create(apr_pool_t *pool) -{ - mpf_activity_detector_t *detector = apr_palloc(pool,sizeof(mpf_activity_detector_t)); - detector->level_threshold = 2; /* 0 .. 255 */ - detector->speech_timeout = 300; /* 0.3 s */ - detector->silence_timeout = 300; /* 0.3 s */ - detector->noinput_timeout = 5000; /* 5 s */ - detector->duration = 0; - detector->state = DETECTOR_STATE_INACTIVITY; - return detector; -} - -/** Reset activity detector */ -MPF_DECLARE(void) mpf_activity_detector_reset(mpf_activity_detector_t *detector) -{ - detector->duration = 0; - detector->state = DETECTOR_STATE_INACTIVITY; -} - -/** Set threshold of voice activity (silence) level */ -MPF_DECLARE(void) mpf_activity_detector_level_set(mpf_activity_detector_t *detector, apr_size_t level_threshold) -{ - detector->level_threshold = level_threshold; -} - -/** Set noinput timeout */ -MPF_DECLARE(void) mpf_activity_detector_noinput_timeout_set(mpf_activity_detector_t *detector, apr_size_t noinput_timeout) -{ - detector->noinput_timeout = noinput_timeout; -} - -/** Set timeout required to trigger speech (transition from inactive to active state) */ -MPF_DECLARE(void) mpf_activity_detector_speech_timeout_set(mpf_activity_detector_t *detector, apr_size_t speech_timeout) -{ - detector->speech_timeout = speech_timeout; -} - -/** Set timeout required to trigger silence (transition from active to inactive state) */ -MPF_DECLARE(void) mpf_activity_detector_silence_timeout_set(mpf_activity_detector_t *detector, apr_size_t silence_timeout) -{ - detector->silence_timeout = silence_timeout; -} - - -static APR_INLINE void mpf_activity_detector_state_change(mpf_activity_detector_t *detector, mpf_detector_state_e state) -{ - detector->duration = 0; - detector->state = state; -} - -static apr_size_t mpf_activity_detector_level_calculate(const mpf_frame_t *frame) -{ - apr_size_t sum = 0; - apr_size_t count = frame->codec_frame.size/2; - const apr_int16_t *cur = frame->codec_frame.buffer; - const apr_int16_t *end = cur + count; - - for(; cur < end; cur++) { - if(*cur < 0) { - sum -= *cur; - } - else { - sum += *cur; - } - } - - return sum / count; -} - -/** Process current frame */ -MPF_DECLARE(mpf_detector_event_e) mpf_activity_detector_process(mpf_activity_detector_t *detector, const mpf_frame_t *frame) -{ - mpf_detector_event_e det_event = MPF_DETECTOR_EVENT_NONE; - apr_size_t level = 0; - if((frame->type & MEDIA_FRAME_TYPE_AUDIO) == MEDIA_FRAME_TYPE_AUDIO) { - /* first, calculate current activity level of processed frame */ - level = mpf_activity_detector_level_calculate(frame); -#if 0 - apt_log(APT_LOG_MARK,APT_PRIO_INFO,"Activity Detector [%"APR_SIZE_T_FMT"]",level); -#endif - } - - if(detector->state == DETECTOR_STATE_INACTIVITY) { - if(level >= detector->level_threshold) { - /* start to detect activity */ - mpf_activity_detector_state_change(detector,DETECTOR_STATE_ACTIVITY_TRANSITION); - } - else { - detector->duration += CODEC_FRAME_TIME_BASE; - if(detector->duration >= detector->noinput_timeout) { - /* detected noinput */ - det_event = MPF_DETECTOR_EVENT_NOINPUT; - } - } - } - else if(detector->state == DETECTOR_STATE_ACTIVITY_TRANSITION) { - if(level >= detector->level_threshold) { - detector->duration += CODEC_FRAME_TIME_BASE; - if(detector->duration >= detector->speech_timeout) { - /* finally detected activity */ - det_event = MPF_DETECTOR_EVENT_ACTIVITY; - mpf_activity_detector_state_change(detector,DETECTOR_STATE_ACTIVITY); - } - } - else { - /* fallback to inactivity */ - mpf_activity_detector_state_change(detector,DETECTOR_STATE_INACTIVITY); - } - } - else if(detector->state == DETECTOR_STATE_ACTIVITY) { - if(level >= detector->level_threshold) { - detector->duration += CODEC_FRAME_TIME_BASE; - } - else { - /* start to detect inactivity */ - mpf_activity_detector_state_change(detector,DETECTOR_STATE_INACTIVITY_TRANSITION); - } - } - else if(detector->state == DETECTOR_STATE_INACTIVITY_TRANSITION) { - if(level >= detector->level_threshold) { - /* fallback to activity */ - mpf_activity_detector_state_change(detector,DETECTOR_STATE_ACTIVITY); - } - else { - detector->duration += CODEC_FRAME_TIME_BASE; - if(detector->duration >= detector->silence_timeout) { - /* detected inactivity */ - det_event = MPF_DETECTOR_EVENT_INACTIVITY; - mpf_activity_detector_state_change(detector,DETECTOR_STATE_INACTIVITY); - } - } - } - - return det_event; -} diff --git a/libs/unimrcp/libs/mpf/src/mpf_audio_file_stream.c b/libs/unimrcp/libs/mpf/src/mpf_audio_file_stream.c deleted file mode 100644 index 5c168ebf00b..00000000000 --- a/libs/unimrcp/libs/mpf/src/mpf_audio_file_stream.c +++ /dev/null @@ -1,171 +0,0 @@ -/* - * Copyright 2008-2014 Arsen Chaloyan - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - * - * $Id: mpf_audio_file_stream.c 2136 2014-07-04 06:33:36Z achaloyan@gmail.com $ - */ - -#include "mpf_audio_file_stream.h" -#include "mpf_termination.h" -#include "mpf_frame.h" -#include "mpf_codec_manager.h" -#include "apt_log.h" - -/** Audio file stream */ -typedef struct mpf_audio_file_stream_t mpf_audio_file_stream_t; -struct mpf_audio_file_stream_t { - mpf_audio_stream_t *audio_stream; - - FILE *read_handle; - FILE *write_handle; - - apt_bool_t eof; - apr_size_t max_write_size; - apr_size_t cur_write_size; -}; - -static APR_INLINE void mpf_audio_file_event_raise(mpf_audio_stream_t *stream, int event_id, void *descriptor); - - -static apt_bool_t mpf_audio_file_destroy(mpf_audio_stream_t *stream) -{ - mpf_audio_file_stream_t *file_stream = stream->obj; - if(file_stream->read_handle) { - fclose(file_stream->read_handle); - file_stream->read_handle = NULL; - } - if(file_stream->write_handle) { - fclose(file_stream->write_handle); - file_stream->write_handle = NULL; - } - return TRUE; -} - -static apt_bool_t mpf_audio_file_reader_open(mpf_audio_stream_t *stream, mpf_codec_t *codec) -{ - return TRUE; -} - -static apt_bool_t mpf_audio_file_reader_close(mpf_audio_stream_t *stream) -{ - return TRUE; -} - -static apt_bool_t mpf_audio_file_frame_read(mpf_audio_stream_t *stream, mpf_frame_t *frame) -{ - mpf_audio_file_stream_t *file_stream = stream->obj; - if(file_stream->read_handle && file_stream->eof == FALSE) { - if(fread(frame->codec_frame.buffer,1,frame->codec_frame.size,file_stream->read_handle) == frame->codec_frame.size) { - frame->type = MEDIA_FRAME_TYPE_AUDIO; - } - else { - file_stream->eof = TRUE; - mpf_audio_file_event_raise(stream,0,NULL); - } - } - return TRUE; -} - - -static apt_bool_t mpf_audio_file_writer_open(mpf_audio_stream_t *stream, mpf_codec_t *codec) -{ - return TRUE; -} - -static apt_bool_t mpf_audio_file_writer_close(mpf_audio_stream_t *stream) -{ - return TRUE; -} - -static apt_bool_t mpf_audio_file_frame_write(mpf_audio_stream_t *stream, const mpf_frame_t *frame) -{ - mpf_audio_file_stream_t *file_stream = stream->obj; - if(file_stream->write_handle && - (!file_stream->max_write_size || file_stream->cur_write_size < file_stream->max_write_size)) { - file_stream->cur_write_size += fwrite( - frame->codec_frame.buffer, - 1, - frame->codec_frame.size, - file_stream->write_handle); - if(file_stream->cur_write_size >= file_stream->max_write_size) { - mpf_audio_file_event_raise(stream,0,NULL); - } - } - return TRUE; -} - -static const mpf_audio_stream_vtable_t vtable = { - mpf_audio_file_destroy, - mpf_audio_file_reader_open, - mpf_audio_file_reader_close, - mpf_audio_file_frame_read, - mpf_audio_file_writer_open, - mpf_audio_file_writer_close, - mpf_audio_file_frame_write, - NULL /* mpf_audio_file_trace */ -}; - -MPF_DECLARE(mpf_audio_stream_t*) mpf_file_stream_create(mpf_termination_t *termination, apr_pool_t *pool) -{ - mpf_audio_file_stream_t *file_stream = apr_palloc(pool,sizeof(mpf_audio_file_stream_t)); - mpf_stream_capabilities_t *capabilities = mpf_stream_capabilities_create(STREAM_DIRECTION_DUPLEX,pool); - mpf_audio_stream_t *audio_stream = mpf_audio_stream_create(file_stream,&vtable,capabilities,pool); - if(!audio_stream) { - return NULL; - } - audio_stream->termination = termination; - - file_stream->audio_stream = audio_stream; - file_stream->write_handle = NULL; - file_stream->read_handle = NULL; - file_stream->eof = FALSE; - file_stream->max_write_size = 0; - file_stream->cur_write_size = 0; - - return audio_stream; -} - -MPF_DECLARE(apt_bool_t) mpf_file_stream_modify(mpf_audio_stream_t *stream, mpf_audio_file_descriptor_t *descriptor) -{ - mpf_audio_file_stream_t *file_stream = stream->obj; - if(descriptor->mask & FILE_READER) { - if(file_stream->read_handle) { - fclose(file_stream->read_handle); - } - file_stream->read_handle = descriptor->read_handle; - file_stream->eof = FALSE; - stream->direction |= FILE_READER; - - stream->rx_descriptor = descriptor->codec_descriptor; - } - if(descriptor->mask & FILE_WRITER) { - if(file_stream->write_handle) { - fclose(file_stream->write_handle); - } - file_stream->write_handle = descriptor->write_handle; - file_stream->max_write_size = descriptor->max_write_size; - file_stream->cur_write_size = 0; - stream->direction |= FILE_WRITER; - - stream->tx_descriptor = descriptor->codec_descriptor; - } - return TRUE; -} - -static APR_INLINE void mpf_audio_file_event_raise(mpf_audio_stream_t *stream, int event_id, void *descriptor) -{ - if(stream->termination->event_handler) { - stream->termination->event_handler(stream->termination,event_id,descriptor); - } -} diff --git a/libs/unimrcp/libs/mpf/src/mpf_bridge.c b/libs/unimrcp/libs/mpf/src/mpf_bridge.c deleted file mode 100644 index 0daf11caee0..00000000000 --- a/libs/unimrcp/libs/mpf/src/mpf_bridge.c +++ /dev/null @@ -1,230 +0,0 @@ -/* - * Copyright 2008-2014 Arsen Chaloyan - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - * - * $Id: mpf_bridge.c 2136 2014-07-04 06:33:36Z achaloyan@gmail.com $ - */ - -#include "mpf_bridge.h" -#include "mpf_encoder.h" -#include "mpf_decoder.h" -#include "mpf_resampler.h" -#include "mpf_codec_manager.h" -#include "apt_log.h" - -typedef struct mpf_bridge_t mpf_bridge_t; - -/** MPF bridge derived from MPF object */ -struct mpf_bridge_t { - /** MPF bridge base */ - mpf_object_t base; - /** Audio stream source */ - mpf_audio_stream_t *source; - /** Audio stream sink */ - mpf_audio_stream_t *sink; - /** Codec used in case of null bridge */ - mpf_codec_t *codec; - /** Media frame used to read data from source and write it to sink */ - mpf_frame_t frame; -}; - -static apt_bool_t mpf_bridge_process(mpf_object_t *object) -{ - mpf_bridge_t *bridge = (mpf_bridge_t*) object; - bridge->frame.type = MEDIA_FRAME_TYPE_NONE; - bridge->frame.marker = MPF_MARKER_NONE; - bridge->source->vtable->read_frame(bridge->source,&bridge->frame); - - if((bridge->frame.type & MEDIA_FRAME_TYPE_AUDIO) == 0) { - memset( bridge->frame.codec_frame.buffer, - 0, - bridge->frame.codec_frame.size); - } - - bridge->sink->vtable->write_frame(bridge->sink,&bridge->frame); - return TRUE; -} - -static apt_bool_t mpf_null_bridge_process(mpf_object_t *object) -{ - mpf_bridge_t *bridge = (mpf_bridge_t*) object; - bridge->frame.type = MEDIA_FRAME_TYPE_NONE; - bridge->frame.marker = MPF_MARKER_NONE; - bridge->source->vtable->read_frame(bridge->source,&bridge->frame); - - if((bridge->frame.type & MEDIA_FRAME_TYPE_AUDIO) == 0) { - /* generate silence frame */ - mpf_codec_initialize(bridge->codec,&bridge->frame.codec_frame); - } - - bridge->sink->vtable->write_frame(bridge->sink,&bridge->frame); - return TRUE; -} - -static void mpf_bridge_trace(mpf_object_t *object) -{ - mpf_bridge_t *bridge = (mpf_bridge_t*) object; - char buf[1024]; - apr_size_t offset; - - apt_text_stream_t output; - apt_text_stream_init(&output,buf,sizeof(buf)-1); - - mpf_audio_stream_trace(bridge->source,STREAM_DIRECTION_RECEIVE,&output); - - offset = output.pos - output.text.buf; - output.pos += apr_snprintf(output.pos, output.text.length - offset, - "->Bridge->"); - - mpf_audio_stream_trace(bridge->sink,STREAM_DIRECTION_SEND,&output); - - *output.pos = '\0'; - apt_log(APT_LOG_MARK,APT_PRIO_INFO,"Media Path %s %s",object->name,output.text.buf); -} - - -static apt_bool_t mpf_bridge_destroy(mpf_object_t *object) -{ - mpf_bridge_t *bridge = (mpf_bridge_t*) object; - apt_log(APT_LOG_MARK,APT_PRIO_DEBUG,"Destroy Audio Bridge %s",object->name); - mpf_audio_stream_rx_close(bridge->source); - mpf_audio_stream_tx_close(bridge->sink); - return TRUE; -} - -static mpf_bridge_t* mpf_bridge_base_create(mpf_audio_stream_t *source, mpf_audio_stream_t *sink, const char *name, apr_pool_t *pool) -{ - mpf_bridge_t *bridge; - if(!source || !sink) { - return NULL; - } - - bridge = apr_palloc(pool,sizeof(mpf_bridge_t)); - bridge->source = source; - bridge->sink = sink; - bridge->codec = NULL; - mpf_object_init(&bridge->base,name); - bridge->base.destroy = mpf_bridge_destroy; - bridge->base.process = mpf_bridge_process; - bridge->base.trace = mpf_bridge_trace; - return bridge; -} - -static mpf_object_t* mpf_linear_bridge_create(mpf_audio_stream_t *source, mpf_audio_stream_t *sink, const mpf_codec_manager_t *codec_manager, const char *name, apr_pool_t *pool) -{ - mpf_codec_descriptor_t *descriptor; - apr_size_t frame_size; - mpf_bridge_t *bridge; - apt_log(APT_LOG_MARK,APT_PRIO_DEBUG,"Create Linear Audio Bridge %s",name); - bridge = mpf_bridge_base_create(source,sink,name,pool); - if(!bridge) { - return NULL; - } - - descriptor = source->rx_descriptor; - frame_size = mpf_codec_linear_frame_size_calculate(descriptor->sampling_rate,descriptor->channel_count); - bridge->frame.codec_frame.size = frame_size; - bridge->frame.codec_frame.buffer = apr_palloc(pool,frame_size); - - if(mpf_audio_stream_rx_open(source,NULL) == FALSE) { - return NULL; - } - if(mpf_audio_stream_tx_open(sink,NULL) == FALSE) { - mpf_audio_stream_rx_close(source); - return NULL; - } - return &bridge->base; -} - -static mpf_object_t* mpf_null_bridge_create(mpf_audio_stream_t *source, mpf_audio_stream_t *sink, const mpf_codec_manager_t *codec_manager, const char *name, apr_pool_t *pool) -{ - mpf_codec_t *codec; - apr_size_t frame_size; - mpf_bridge_t *bridge; - apt_log(APT_LOG_MARK,APT_PRIO_DEBUG,"Create Null Audio Bridge %s",name); - bridge = mpf_bridge_base_create(source,sink,name,pool); - if(!bridge) { - return NULL; - } - bridge->base.process = mpf_null_bridge_process; - - codec = mpf_codec_manager_codec_get(codec_manager,source->rx_descriptor,pool); - if(!codec) { - return NULL; - } - - frame_size = mpf_codec_frame_size_calculate(source->rx_descriptor,codec->attribs); - bridge->codec = codec; - bridge->frame.codec_frame.size = frame_size; - bridge->frame.codec_frame.buffer = apr_palloc(pool,frame_size); - - if(mpf_audio_stream_rx_open(source,codec) == FALSE) { - return NULL; - } - if(mpf_audio_stream_tx_open(sink,codec) == FALSE) { - mpf_audio_stream_rx_close(source); - return NULL; - } - return &bridge->base; -} - -MPF_DECLARE(mpf_object_t*) mpf_bridge_create( - mpf_audio_stream_t *source, - mpf_audio_stream_t *sink, - const mpf_codec_manager_t *codec_manager, - const char *name, - apr_pool_t *pool) -{ - if(!source || !sink) { - return NULL; - } - - if(mpf_audio_stream_rx_validate(source,sink->tx_descriptor,sink->tx_event_descriptor,pool) == FALSE || - mpf_audio_stream_tx_validate(sink,source->rx_descriptor,source->rx_event_descriptor,pool) == FALSE) { - return NULL; - } - - if(mpf_codec_descriptors_match(source->rx_descriptor,sink->tx_descriptor) == TRUE) { - return mpf_null_bridge_create(source,sink,codec_manager,name,pool); - } - - if(mpf_codec_lpcm_descriptor_match(source->rx_descriptor) == FALSE) { - mpf_codec_t *codec = mpf_codec_manager_codec_get(codec_manager,source->rx_descriptor,pool); - if(codec) { - /* set decoder before bridge */ - mpf_audio_stream_t *decoder = mpf_decoder_create(source,codec,pool); - source = decoder; - } - } - - if(mpf_codec_lpcm_descriptor_match(sink->tx_descriptor) == FALSE) { - mpf_codec_t *codec = mpf_codec_manager_codec_get(codec_manager,sink->tx_descriptor,pool); - if(codec) { - /* set encoder after bridge */ - mpf_audio_stream_t *encoder = mpf_encoder_create(sink,codec,pool); - sink = encoder; - } - } - - if(source->rx_descriptor->sampling_rate != sink->tx_descriptor->sampling_rate) { - /* set resampler before bridge */ - mpf_audio_stream_t *resampler = mpf_resampler_create(source,sink,pool); - if(!resampler) { - return NULL; - } - source = resampler; - } - - return mpf_linear_bridge_create(source,sink,codec_manager,name,pool); -} diff --git a/libs/unimrcp/libs/mpf/src/mpf_buffer.c b/libs/unimrcp/libs/mpf/src/mpf_buffer.c deleted file mode 100644 index 8db46d0a919..00000000000 --- a/libs/unimrcp/libs/mpf/src/mpf_buffer.c +++ /dev/null @@ -1,175 +0,0 @@ -/* - * Copyright 2008-2014 Arsen Chaloyan - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - * - * $Id: mpf_buffer.c 2181 2014-09-14 04:29:38Z achaloyan@gmail.com $ - */ - -#ifdef WIN32 -#pragma warning(disable: 4127) -#endif -#include -#include "mpf_buffer.h" - -typedef struct mpf_chunk_t mpf_chunk_t; - -struct mpf_chunk_t { - APR_RING_ENTRY(mpf_chunk_t) link; - mpf_frame_t frame; -}; - -struct mpf_buffer_t { - APR_RING_HEAD(mpf_chunk_head_t, mpf_chunk_t) head; - mpf_chunk_t *cur_chunk; - apr_size_t remaining_chunk_size; - apr_thread_mutex_t *guard; - apr_pool_t *pool; - apr_size_t size; /* total size */ -}; - -mpf_buffer_t* mpf_buffer_create(apr_pool_t *pool) -{ - mpf_buffer_t *buffer = apr_palloc(pool,sizeof(mpf_buffer_t)); - buffer->pool = pool; - buffer->cur_chunk = NULL; - buffer->remaining_chunk_size = 0; - buffer->size = 0; - APR_RING_INIT(&buffer->head, mpf_chunk_t, link); - apr_thread_mutex_create(&buffer->guard,APR_THREAD_MUTEX_UNNESTED,pool); - return buffer; -} - -void mpf_buffer_destroy(mpf_buffer_t *buffer) -{ - if(buffer->guard) { - apr_thread_mutex_destroy(buffer->guard); - buffer->guard = NULL; - } -} - -apt_bool_t mpf_buffer_restart(mpf_buffer_t *buffer) -{ - apr_thread_mutex_lock(buffer->guard); - APR_RING_INIT(&buffer->head, mpf_chunk_t, link); - apr_thread_mutex_unlock(buffer->guard); - return TRUE; -} - -static APR_INLINE apt_bool_t mpf_buffer_chunk_write(mpf_buffer_t *buffer, mpf_chunk_t *chunk) -{ - APR_RING_INSERT_TAIL(&buffer->head,chunk,mpf_chunk_t,link); - return TRUE; -} - -static APR_INLINE mpf_chunk_t* mpf_buffer_chunk_read(mpf_buffer_t *buffer) -{ - mpf_chunk_t *chunk = NULL; - if(!APR_RING_EMPTY(&buffer->head,mpf_chunk_t,link)) { - chunk = APR_RING_FIRST(&buffer->head); - APR_RING_REMOVE(chunk,link); - } - return chunk; -} - -apt_bool_t mpf_buffer_audio_write(mpf_buffer_t *buffer, void *data, apr_size_t size) -{ - mpf_chunk_t *chunk; - apt_bool_t status; - apr_thread_mutex_lock(buffer->guard); - - chunk = apr_palloc(buffer->pool,sizeof(mpf_chunk_t)); - APR_RING_ELEM_INIT(chunk,link); - chunk->frame.codec_frame.buffer = apr_palloc(buffer->pool,size); - memcpy(chunk->frame.codec_frame.buffer,data,size); - chunk->frame.codec_frame.size = size; - chunk->frame.type = MEDIA_FRAME_TYPE_AUDIO; - status = mpf_buffer_chunk_write(buffer,chunk); - - buffer->size += size; - apr_thread_mutex_unlock(buffer->guard); - return status; -} - -apt_bool_t mpf_buffer_event_write(mpf_buffer_t *buffer, mpf_frame_type_e event_type) -{ - mpf_chunk_t *chunk; - apt_bool_t status; - apr_thread_mutex_lock(buffer->guard); - - chunk = apr_palloc(buffer->pool,sizeof(mpf_chunk_t)); - APR_RING_ELEM_INIT(chunk,link); - chunk->frame.codec_frame.buffer = NULL; - chunk->frame.codec_frame.size = 0; - chunk->frame.type = event_type; - status = mpf_buffer_chunk_write(buffer,chunk); - - apr_thread_mutex_unlock(buffer->guard); - return status; -} - -apt_bool_t mpf_buffer_frame_read(mpf_buffer_t *buffer, mpf_frame_t *media_frame) -{ - mpf_codec_frame_t *dest; - mpf_codec_frame_t *src; - apr_size_t remaining_frame_size = media_frame->codec_frame.size; - apr_thread_mutex_lock(buffer->guard); - do { - if(!buffer->cur_chunk) { - buffer->cur_chunk = mpf_buffer_chunk_read(buffer); - if(!buffer->cur_chunk) { - /* buffer is empty */ - break; - } - buffer->remaining_chunk_size = buffer->cur_chunk->frame.codec_frame.size; - } - - dest = &media_frame->codec_frame; - src = &buffer->cur_chunk->frame.codec_frame; - media_frame->type |= buffer->cur_chunk->frame.type; - if(remaining_frame_size < buffer->remaining_chunk_size) { - /* copy remaining_frame_size */ - memcpy( - (char*)dest->buffer + dest->size - remaining_frame_size, - (char*)src->buffer + src->size - buffer->remaining_chunk_size, - remaining_frame_size); - buffer->remaining_chunk_size -= remaining_frame_size; - buffer->size -= remaining_frame_size; - remaining_frame_size = 0; - } - else { - /* copy remaining_chunk_size and proceed to the next chunk */ - memcpy( - (char*)dest->buffer + dest->size - remaining_frame_size, - (char*)src->buffer + src->size - buffer->remaining_chunk_size, - buffer->remaining_chunk_size); - remaining_frame_size -= buffer->remaining_chunk_size; - buffer->size -= buffer->remaining_chunk_size; - buffer->remaining_chunk_size = 0; - buffer->cur_chunk = NULL; - } - } - while(remaining_frame_size); - - if(remaining_frame_size) { - apr_size_t offset = media_frame->codec_frame.size - remaining_frame_size; - memset((char*)media_frame->codec_frame.buffer + offset, 0, remaining_frame_size); - } - apr_thread_mutex_unlock(buffer->guard); - return TRUE; -} - -apr_size_t mpf_buffer_get_size(const mpf_buffer_t *buffer) -{ - return buffer->size; -} diff --git a/libs/unimrcp/libs/mpf/src/mpf_codec_descriptor.c b/libs/unimrcp/libs/mpf/src/mpf_codec_descriptor.c deleted file mode 100644 index ca9b903d266..00000000000 --- a/libs/unimrcp/libs/mpf/src/mpf_codec_descriptor.c +++ /dev/null @@ -1,279 +0,0 @@ -/* - * Copyright 2008-2014 Arsen Chaloyan - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - * - * $Id: mpf_codec_descriptor.c 2136 2014-07-04 06:33:36Z achaloyan@gmail.com $ - */ - -#include "mpf_codec_descriptor.h" -#include "mpf_named_event.h" -#include "mpf_rtp_pt.h" - -/* linear PCM (host horder) */ -#define LPCM_CODEC_NAME "LPCM" -#define LPCM_CODEC_NAME_LENGTH (sizeof(LPCM_CODEC_NAME)-1) - -/* linear PCM atrributes */ -static const mpf_codec_attribs_t lpcm_attribs = { - {LPCM_CODEC_NAME, LPCM_CODEC_NAME_LENGTH}, /* codec name */ - 16, /* bits per sample */ - MPF_SAMPLE_RATE_8000 | MPF_SAMPLE_RATE_16000 | - MPF_SAMPLE_RATE_32000 | MPF_SAMPLE_RATE_48000 /* supported sampling rates */ -}; - -/** Find matched attribs in codec capabilities by descriptor specified */ -static mpf_codec_attribs_t* mpf_codec_capabilities_attribs_find(const mpf_codec_capabilities_t *capabilities, const mpf_codec_descriptor_t *descriptor); - - -/** Get sampling rate mask (mpf_sample_rate_e) by integer value */ -MPF_DECLARE(int) mpf_sample_rate_mask_get(apr_uint16_t sampling_rate) -{ - switch(sampling_rate) { - case 8000: - return MPF_SAMPLE_RATE_8000; - case 16000: - return MPF_SAMPLE_RATE_16000; - case 32000: - return MPF_SAMPLE_RATE_32000; - case 48000: - return MPF_SAMPLE_RATE_48000; - } - return MPF_SAMPLE_RATE_NONE; -} - -static APR_INLINE apt_bool_t mpf_sampling_rate_check(apr_uint16_t sampling_rate, int mask) -{ - return (mpf_sample_rate_mask_get(sampling_rate) & mask) ? TRUE : FALSE; -} - -MPF_DECLARE(mpf_codec_descriptor_t*) mpf_codec_lpcm_descriptor_create(apr_uint16_t sampling_rate, apr_byte_t channel_count, apr_pool_t *pool) -{ - mpf_codec_descriptor_t *descriptor = mpf_codec_descriptor_create(pool); - descriptor->payload_type = RTP_PT_UNKNOWN; - descriptor->name = lpcm_attribs.name; - descriptor->sampling_rate = sampling_rate; - descriptor->channel_count = channel_count; - return descriptor; -} - -/** Create codec descriptor by capabilities */ -MPF_DECLARE(mpf_codec_descriptor_t*) mpf_codec_descriptor_create_by_capabilities(const mpf_codec_capabilities_t *capabilities, const mpf_codec_descriptor_t *peer, apr_pool_t *pool) -{ - mpf_codec_descriptor_t *descriptor; - mpf_codec_attribs_t *attribs = NULL; - if(capabilities && peer) { - attribs = mpf_codec_capabilities_attribs_find(capabilities,peer); - } - - if(!attribs) { - return mpf_codec_lpcm_descriptor_create(8000,1,pool); - } - - descriptor = mpf_codec_descriptor_create(pool); - *descriptor = *peer; - if(apt_string_compare(&peer->name,&attribs->name) == FALSE) { - descriptor->payload_type = RTP_PT_UNKNOWN; - descriptor->name = attribs->name; - } - return descriptor; -} - -/** Match two codec descriptors */ -MPF_DECLARE(apt_bool_t) mpf_codec_descriptors_match(const mpf_codec_descriptor_t *descriptor1, const mpf_codec_descriptor_t *descriptor2) -{ - apt_bool_t match = FALSE; - if(descriptor1->payload_type < RTP_PT_DYNAMIC && descriptor2->payload_type < RTP_PT_DYNAMIC) { - if(descriptor1->payload_type == descriptor2->payload_type) { - match = TRUE; - } - } - else { - if(apt_string_compare(&descriptor1->name,&descriptor2->name) == TRUE) { - if(descriptor1->sampling_rate == descriptor2->sampling_rate && - descriptor1->channel_count == descriptor2->channel_count) { - match = TRUE; - } - } - } - return match; -} - -/** Match specified codec descriptor and the default lpcm one */ -MPF_DECLARE(apt_bool_t) mpf_codec_lpcm_descriptor_match(const mpf_codec_descriptor_t *descriptor) -{ - return apt_string_compare(&descriptor->name,&lpcm_attribs.name); -} - -/** Add default (linear PCM) capabilities */ -MPF_DECLARE(apt_bool_t) mpf_codec_default_capabilities_add(mpf_codec_capabilities_t *capabilities) -{ - return mpf_codec_capabilities_add(capabilities,MPF_SAMPLE_RATE_8000,lpcm_attribs.name.buf); -} - -/** Match codec descriptors by attribs specified */ -MPF_DECLARE(apt_bool_t) mpf_codec_descriptor_match_by_attribs(mpf_codec_descriptor_t *descriptor, const mpf_codec_descriptor_t *static_descriptor, const mpf_codec_attribs_t *attribs) -{ - apt_bool_t match = FALSE; - if(descriptor->payload_type < RTP_PT_DYNAMIC) { - if(static_descriptor && static_descriptor->payload_type == descriptor->payload_type) { - descriptor->name = static_descriptor->name; - descriptor->sampling_rate = static_descriptor->sampling_rate; - descriptor->channel_count = static_descriptor->channel_count; - match = TRUE; - } - } - else { - if(apt_string_compare(&attribs->name,&descriptor->name) == TRUE) { - if(mpf_sampling_rate_check(descriptor->sampling_rate,attribs->sample_rates) == TRUE) { - match = TRUE; - } - } - } - return match; -} - -/** Find matched descriptor in codec list */ -MPF_DECLARE(mpf_codec_descriptor_t*) mpf_codec_list_descriptor_find(const mpf_codec_list_t *codec_list, const mpf_codec_descriptor_t *descriptor) -{ - int i; - mpf_codec_descriptor_t *matched_descriptor; - for(i=0; idescriptor_arr->nelts; i++) { - matched_descriptor = &APR_ARRAY_IDX(codec_list->descriptor_arr,i,mpf_codec_descriptor_t); - if(mpf_codec_descriptors_match(descriptor,matched_descriptor) == TRUE) { - return matched_descriptor; - } - } - return NULL; -} - -/** Find matched attribs in codec capabilities by descriptor specified */ -static mpf_codec_attribs_t* mpf_codec_capabilities_attribs_find(const mpf_codec_capabilities_t *capabilities, const mpf_codec_descriptor_t *descriptor) -{ - int i; - mpf_codec_attribs_t *attribs; - for(i=0; iattrib_arr->nelts; i++) { - attribs = &APR_ARRAY_IDX(capabilities->attrib_arr,i,mpf_codec_attribs_t); - if(mpf_sampling_rate_check(descriptor->sampling_rate,attribs->sample_rates) == TRUE) { - return attribs; - } - } - return NULL; -} - -/** Match codec list with specified capabilities */ -MPF_DECLARE(apt_bool_t) mpf_codec_list_match(mpf_codec_list_t *codec_list, const mpf_codec_capabilities_t *capabilities) -{ - int i; - mpf_codec_descriptor_t *descriptor; - apt_bool_t status = FALSE; - if(!capabilities) { - return FALSE; - } - - for(i=0; idescriptor_arr->nelts; i++) { - descriptor = &APR_ARRAY_IDX(codec_list->descriptor_arr,i,mpf_codec_descriptor_t); - if(descriptor->enabled == FALSE) continue; - - /* match capabilities */ - if(mpf_codec_capabilities_attribs_find(capabilities,descriptor)) { - /* at least one codec descriptor matches */ - status = TRUE; - } - else { - descriptor->enabled = FALSE; - } - } - - return status; -} - -/** Intersect two codec lists */ -MPF_DECLARE(apt_bool_t) mpf_codec_lists_intersect(mpf_codec_list_t *codec_list1, mpf_codec_list_t *codec_list2) -{ - int i; - mpf_codec_descriptor_t *descriptor1; - mpf_codec_descriptor_t *descriptor2; - codec_list1->primary_descriptor = NULL; - codec_list1->event_descriptor = NULL; - codec_list2->primary_descriptor = NULL; - codec_list2->event_descriptor = NULL; - /* find only one match for primary and named event descriptors, - set the matched descriptors as preffered, disable the others */ - for(i=0; idescriptor_arr->nelts; i++) { - descriptor1 = &APR_ARRAY_IDX(codec_list1->descriptor_arr,i,mpf_codec_descriptor_t); - if(descriptor1->enabled == FALSE) { - /* this descriptor has been already disabled, process only enabled ones */ - continue; - } - - /* check whether this is a named event descriptor */ - if(mpf_event_descriptor_check(descriptor1) == TRUE) { - /* named event descriptor */ - if(codec_list1->event_descriptor) { - /* named event descriptor has been already set, disable this one */ - descriptor1->enabled = FALSE; - } - else { - /* find if there is a match */ - descriptor2 = mpf_codec_list_descriptor_find(codec_list2,descriptor1); - if(descriptor2 && descriptor2->enabled == TRUE) { - descriptor1->enabled = TRUE; - codec_list1->event_descriptor = descriptor1; - codec_list2->event_descriptor = descriptor2; - } - else { - /* no match found, disable this descriptor */ - descriptor1->enabled = FALSE; - } - } - } - else { - /* primary descriptor */ - if(codec_list1->primary_descriptor) { - /* primary descriptor has been already set, disable this one */ - descriptor1->enabled = FALSE; - } - else { - /* find if there is a match */ - descriptor2 = mpf_codec_list_descriptor_find(codec_list2,descriptor1); - if(descriptor2 && descriptor2->enabled == TRUE) { - descriptor1->enabled = TRUE; - codec_list1->primary_descriptor = descriptor1; - codec_list2->primary_descriptor = descriptor2; - } - else { - /* no match found, disable this descriptor */ - descriptor1->enabled = FALSE; - } - } - } - } - - for(i=0; idescriptor_arr->nelts; i++) { - descriptor2 = &APR_ARRAY_IDX(codec_list2->descriptor_arr,i,mpf_codec_descriptor_t); - if(descriptor2 == codec_list2->primary_descriptor || descriptor2 == codec_list2->event_descriptor) { - descriptor2->enabled = TRUE; - } - else { - descriptor2->enabled = FALSE; - } - } - - /* if primary descriptor is disabled or not set, return FALSE */ - if(!codec_list1->primary_descriptor || codec_list1->primary_descriptor->enabled == FALSE) { - return FALSE; - } - - return TRUE; -} diff --git a/libs/unimrcp/libs/mpf/src/mpf_codec_g711.c b/libs/unimrcp/libs/mpf/src/mpf_codec_g711.c deleted file mode 100644 index 0a3bda25dcf..00000000000 --- a/libs/unimrcp/libs/mpf/src/mpf_codec_g711.c +++ /dev/null @@ -1,191 +0,0 @@ -/* - * Copyright 2008-2014 Arsen Chaloyan - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - * - * $Id: mpf_codec_g711.c 2136 2014-07-04 06:33:36Z achaloyan@gmail.com $ - */ - -#include "mpf_codec.h" -#include "mpf_rtp_pt.h" -#include "g711/g711.h" - -#define G711u_CODEC_NAME "PCMU" -#define G711u_CODEC_NAME_LENGTH (sizeof(G711u_CODEC_NAME)-1) - -#define G711a_CODEC_NAME "PCMA" -#define G711a_CODEC_NAME_LENGTH (sizeof(G711a_CODEC_NAME)-1) - -static apt_bool_t g711_open(mpf_codec_t *codec) -{ - return TRUE; -} - -static apt_bool_t g711_close(mpf_codec_t *codec) -{ - return TRUE; -} - -static apt_bool_t g711u_encode(mpf_codec_t *codec, const mpf_codec_frame_t *frame_in, mpf_codec_frame_t *frame_out) -{ - const apr_int16_t *decode_buf; - unsigned char *encode_buf; - apr_size_t i; - - decode_buf = frame_in->buffer; - encode_buf = frame_out->buffer; - - frame_out->size = frame_in->size / sizeof(apr_int16_t); - - for(i=0; isize; i++) { - encode_buf[i] = linear_to_ulaw(decode_buf[i]); - } - - return TRUE; -} - -static apt_bool_t g711u_decode(mpf_codec_t *codec, const mpf_codec_frame_t *frame_in, mpf_codec_frame_t *frame_out) -{ - apr_int16_t *decode_buf; - const unsigned char *encode_buf; - apr_size_t i; - - decode_buf = frame_out->buffer; - encode_buf = frame_in->buffer; - - frame_out->size = frame_in->size * sizeof(apr_int16_t); - - for(i=0; isize; i++) { - decode_buf[i] = ulaw_to_linear(encode_buf[i]); - } - - return TRUE; -} - -static apt_bool_t g711u_init(mpf_codec_t *codec, mpf_codec_frame_t *frame_out) -{ - apr_size_t i; - unsigned char *encode_buf = frame_out->buffer; - for(i=0; isize; i++) { - encode_buf[i] = linear_to_ulaw(0); - } - - return TRUE; -} - -static apt_bool_t g711a_encode(mpf_codec_t *codec, const mpf_codec_frame_t *frame_in, mpf_codec_frame_t *frame_out) -{ - const apr_int16_t *decode_buf; - unsigned char *encode_buf; - apr_size_t i; - - decode_buf = frame_in->buffer; - encode_buf = frame_out->buffer; - - frame_out->size = frame_in->size / sizeof(apr_int16_t); - - for(i=0; isize; i++) { - encode_buf[i] = linear_to_alaw(decode_buf[i]); - } - - return TRUE; -} - -static apt_bool_t g711a_decode(mpf_codec_t *codec, const mpf_codec_frame_t *frame_in, mpf_codec_frame_t *frame_out) -{ - apr_int16_t *decode_buf; - const unsigned char *encode_buf; - apr_size_t i; - - decode_buf = frame_out->buffer; - encode_buf = frame_in->buffer; - - frame_out->size = frame_in->size * sizeof(apr_int16_t); - - for(i=0; isize; i++) { - decode_buf[i] = alaw_to_linear(encode_buf[i]); - } - - return TRUE; -} - -static apt_bool_t g711a_init(mpf_codec_t *codec, mpf_codec_frame_t *frame_out) -{ - apr_size_t i; - unsigned char *encode_buf = frame_out->buffer; - for(i=0; isize; i++) { - encode_buf[i] = linear_to_alaw(0); - } - - return TRUE; -} - -static const mpf_codec_vtable_t g711u_vtable = { - g711_open, - g711_close, - g711u_encode, - g711u_decode, - NULL, - g711u_init -}; - -static const mpf_codec_vtable_t g711a_vtable = { - g711_open, - g711_close, - g711a_encode, - g711a_decode, - NULL, - g711a_init -}; - -static const mpf_codec_descriptor_t g711u_descriptor = { - RTP_PT_PCMU, - {G711u_CODEC_NAME, G711u_CODEC_NAME_LENGTH}, - 8000, - 1, - {NULL, 0}, - TRUE -}; - -static const mpf_codec_descriptor_t g711a_descriptor = { - RTP_PT_PCMA, - {G711a_CODEC_NAME, G711a_CODEC_NAME_LENGTH}, - 8000, - 1, - {NULL,0}, - TRUE -}; - -static const mpf_codec_attribs_t g711u_attribs = { - {G711u_CODEC_NAME, G711u_CODEC_NAME_LENGTH}, /* codec name */ - 8, /* bits per sample */ - MPF_SAMPLE_RATE_8000 | MPF_SAMPLE_RATE_16000 | - MPF_SAMPLE_RATE_32000 | MPF_SAMPLE_RATE_48000 /* supported sampling rates */ -}; - -static const mpf_codec_attribs_t g711a_attribs = { - {G711a_CODEC_NAME, G711a_CODEC_NAME_LENGTH}, /* codec name */ - 8, /* bits per sample */ - MPF_SAMPLE_RATE_8000 | MPF_SAMPLE_RATE_16000 | - MPF_SAMPLE_RATE_32000 | MPF_SAMPLE_RATE_48000 /* supported sampling rates */ -}; - -mpf_codec_t* mpf_codec_g711u_create(apr_pool_t *pool) -{ - return mpf_codec_create(&g711u_vtable,&g711u_attribs,&g711u_descriptor,pool); -} - -mpf_codec_t* mpf_codec_g711a_create(apr_pool_t *pool) -{ - return mpf_codec_create(&g711a_vtable,&g711a_attribs,&g711a_descriptor,pool); -} diff --git a/libs/unimrcp/libs/mpf/src/mpf_codec_linear.c b/libs/unimrcp/libs/mpf/src/mpf_codec_linear.c deleted file mode 100644 index 78a817df034..00000000000 --- a/libs/unimrcp/libs/mpf/src/mpf_codec_linear.c +++ /dev/null @@ -1,90 +0,0 @@ -/* - * Copyright 2008-2014 Arsen Chaloyan - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - * - * $Id: mpf_codec_linear.c 2136 2014-07-04 06:33:36Z achaloyan@gmail.com $ - */ - -#define APR_WANT_BYTEFUNC -#include -#include "mpf_codec.h" -#include "mpf_rtp_pt.h" - -/* linear 16-bit PCM (RFC3551) */ -#define L16_CODEC_NAME "L16" -#define L16_CODEC_NAME_LENGTH (sizeof(L16_CODEC_NAME)-1) - - -static apt_bool_t l16_open(mpf_codec_t *codec) -{ - return TRUE; -} - -static apt_bool_t l16_close(mpf_codec_t *codec) -{ - return TRUE; -} - -static apt_bool_t l16_encode(mpf_codec_t *codec, const mpf_codec_frame_t *frame_in, mpf_codec_frame_t *frame_out) -{ - apr_uint32_t i; - const apr_int16_t *buf_in = frame_in->buffer; - apr_int16_t *buf_out = frame_out->buffer; - apr_size_t samples = frame_in->size / sizeof(apr_int16_t); - - frame_out->size = frame_in->size; - - for(i=0; ibuffer; - apr_int16_t *buf_out = frame_out->buffer; - apr_size_t samples = frame_in->size / sizeof(apr_int16_t); - - frame_out->size = frame_in->size; - - for(i=0; i -#include "mpf_codec_manager.h" -#include "mpf_rtp_pt.h" -#include "mpf_named_event.h" -#include "apt_log.h" - - -struct mpf_codec_manager_t { - /** Memory pool */ - apr_pool_t *pool; - - /** Dynamic (resizable) array of codecs (mpf_codec_t*) */ - apr_array_header_t *codec_arr; - /** Default named event descriptor */ - mpf_codec_descriptor_t *event_descriptor; -}; - - -MPF_DECLARE(mpf_codec_manager_t*) mpf_codec_manager_create(apr_size_t codec_count, apr_pool_t *pool) -{ - mpf_codec_manager_t *codec_manager = apr_palloc(pool,sizeof(mpf_codec_manager_t)); - codec_manager->pool = pool; - codec_manager->codec_arr = apr_array_make(pool,(int)codec_count,sizeof(mpf_codec_t*)); - codec_manager->event_descriptor = mpf_event_descriptor_create(8000,pool); - return codec_manager; -} - -MPF_DECLARE(void) mpf_codec_manager_destroy(mpf_codec_manager_t *codec_manager) -{ - /* nothing to do */ -} - -MPF_DECLARE(apt_bool_t) mpf_codec_manager_codec_register(mpf_codec_manager_t *codec_manager, mpf_codec_t *codec) -{ - if(!codec || !codec->attribs || !codec->attribs->name.buf) { - return FALSE; - } - - apt_log(APT_LOG_MARK,APT_PRIO_INFO,"Register Codec [%s]",codec->attribs->name.buf); - - APR_ARRAY_PUSH(codec_manager->codec_arr,mpf_codec_t*) = codec; - return TRUE; -} - -MPF_DECLARE(mpf_codec_t*) mpf_codec_manager_codec_get(const mpf_codec_manager_t *codec_manager, mpf_codec_descriptor_t *descriptor, apr_pool_t *pool) -{ - int i; - mpf_codec_t *codec; - if(!descriptor) { - return NULL; - } - - for(i=0; icodec_arr->nelts; i++) { - codec = APR_ARRAY_IDX(codec_manager->codec_arr,i,mpf_codec_t*); - if(mpf_codec_descriptor_match_by_attribs(descriptor,codec->static_descriptor,codec->attribs) == TRUE) { - return mpf_codec_clone(codec,pool); - } - } - - return NULL; -} - -MPF_DECLARE(apt_bool_t) mpf_codec_manager_codec_list_get(const mpf_codec_manager_t *codec_manager, mpf_codec_list_t *codec_list, apr_pool_t *pool) -{ - const mpf_codec_descriptor_t *static_descriptor; - mpf_codec_descriptor_t *descriptor; - int i; - mpf_codec_t *codec; - - mpf_codec_list_init(codec_list,codec_manager->codec_arr->nelts,pool); - for(i=0; icodec_arr->nelts; i++) { - codec = APR_ARRAY_IDX(codec_manager->codec_arr,i,mpf_codec_t*); - static_descriptor = codec->static_descriptor; - if(static_descriptor) { - descriptor = mpf_codec_list_add(codec_list); - if(descriptor) { - *descriptor = *static_descriptor; - } - } - } - if(codec_manager->event_descriptor) { - descriptor = mpf_codec_list_add(codec_list); - if(descriptor) { - *descriptor = *codec_manager->event_descriptor; - } - } - return TRUE; -} - -static apt_bool_t mpf_codec_manager_codec_parse(const mpf_codec_manager_t *codec_manager, mpf_codec_list_t *codec_list, char *codec_desc_str, apr_pool_t *pool) -{ - const mpf_codec_t *codec; - mpf_codec_descriptor_t *descriptor; - const char *separator = "/"; - char *state; - /* parse codec name */ - char *str = apr_strtok(codec_desc_str, separator, &state); - codec_desc_str = NULL; /* make sure we pass NULL on subsequent calls of apr_strtok() */ - if(str) { - apt_str_t name; - apt_string_assign(&name,str,pool); - /* find codec by name */ - codec = mpf_codec_manager_codec_find(codec_manager,&name); - if(codec) { - descriptor = mpf_codec_list_add(codec_list); - descriptor->name = name; - - /* set default attributes */ - if(codec->static_descriptor) { - descriptor->payload_type = codec->static_descriptor->payload_type; - descriptor->sampling_rate = codec->static_descriptor->sampling_rate; - descriptor->channel_count = codec->static_descriptor->channel_count; - } - else { - descriptor->payload_type = RTP_PT_DYNAMIC; - descriptor->sampling_rate = 8000; - descriptor->channel_count = 1; - } - } - else { - mpf_codec_descriptor_t *event_descriptor = codec_manager->event_descriptor; - if(event_descriptor && apt_string_compare(&event_descriptor->name,&name) == TRUE) { - descriptor = mpf_codec_list_add(codec_list); - *descriptor = *event_descriptor; - } - else { - apt_log(APT_LOG_MARK,APT_PRIO_WARNING,"No Such Codec [%s]",str); - return FALSE; - } - } - - - /* parse optional payload type */ - str = apr_strtok(codec_desc_str, separator, &state); - if(str) { - descriptor->payload_type = (apr_byte_t)atol(str); - - /* parse optional sampling rate */ - str = apr_strtok(codec_desc_str, separator, &state); - if(str) { - descriptor->sampling_rate = (apr_uint16_t)atol(str); - - /* parse optional channel count */ - str = apr_strtok(codec_desc_str, separator, &state); - if(str) { - descriptor->channel_count = (apr_byte_t)atol(str); - } - } - } - } - return TRUE; -} - -MPF_DECLARE(apt_bool_t) mpf_codec_manager_codec_list_load(const mpf_codec_manager_t *codec_manager, mpf_codec_list_t *codec_list, const char *str, apr_pool_t *pool) -{ - char *codec_desc_str; - char *state; - char *codec_list_str = apr_pstrdup(pool,str); - do { - codec_desc_str = apr_strtok(codec_list_str, " ", &state); - if(codec_desc_str) { - mpf_codec_manager_codec_parse(codec_manager,codec_list,codec_desc_str,pool); - } - codec_list_str = NULL; /* make sure we pass NULL on subsequent calls of apr_strtok() */ - } - while(codec_desc_str); - return TRUE; -} - -MPF_DECLARE(const mpf_codec_t*) mpf_codec_manager_codec_find(const mpf_codec_manager_t *codec_manager, const apt_str_t *codec_name) -{ - int i; - mpf_codec_t *codec; - for(i=0; icodec_arr->nelts; i++) { - codec = APR_ARRAY_IDX(codec_manager->codec_arr,i,mpf_codec_t*); - if(apt_string_compare(&codec->attribs->name,codec_name) == TRUE) { - return codec; - } - } - return NULL; -} diff --git a/libs/unimrcp/libs/mpf/src/mpf_context.c b/libs/unimrcp/libs/mpf/src/mpf_context.c deleted file mode 100644 index e0c35cce81d..00000000000 --- a/libs/unimrcp/libs/mpf/src/mpf_context.c +++ /dev/null @@ -1,548 +0,0 @@ -/* - * Copyright 2008-2014 Arsen Chaloyan - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - * - * $Id: mpf_context.c 2181 2014-09-14 04:29:38Z achaloyan@gmail.com $ - */ - -#ifdef WIN32 -#pragma warning(disable: 4127) -#endif -#include -#include "mpf_context.h" -#include "mpf_termination.h" -#include "mpf_stream.h" -#include "mpf_bridge.h" -#include "mpf_multiplier.h" -#include "mpf_mixer.h" -#include "apt_log.h" - -/** Item of the association matrix */ -typedef struct { - unsigned char on; -} matrix_item_t; - -/** Item of the association matrix header */ -typedef struct { - mpf_termination_t *termination; - unsigned char tx_count; - unsigned char rx_count; -} header_item_t; - -/** Media processing context */ -struct mpf_context_t { - /** Ring entry */ - APR_RING_ENTRY(mpf_context_t) link; - /** Back pointer to the context factory */ - mpf_context_factory_t *factory; - /** Pool to allocate memory from */ - apr_pool_t *pool; - /** Informative name of the context used for debugging */ - const char *name; - /** External object */ - void *obj; - - /** Max number of terminations in the context */ - apr_size_t capacity; - /** Current number of terminations in the context */ - apr_size_t count; - /** Header of the association matrix */ - header_item_t *header; - /** Association matrix, which represents the topology */ - matrix_item_t **matrix; - - /** Array of media processing objects constructed while - applying topology based on association matrix */ - apr_array_header_t *mpf_objects; -}; - -/** Factory of media contexts */ -struct mpf_context_factory_t { - /** Ring head */ - APR_RING_HEAD(mpf_context_head_t, mpf_context_t) head; -}; - - -static APR_INLINE apt_bool_t stream_direction_compatibility_check(mpf_termination_t *termination1, mpf_termination_t *termination2); -static mpf_object_t* mpf_context_bridge_create(mpf_context_t *context, apr_size_t i); -static mpf_object_t* mpf_context_multiplier_create(mpf_context_t *context, apr_size_t i); -static mpf_object_t* mpf_context_mixer_create(mpf_context_t *context, apr_size_t j); - - -MPF_DECLARE(mpf_context_factory_t*) mpf_context_factory_create(apr_pool_t *pool) -{ - mpf_context_factory_t *factory = apr_palloc(pool, sizeof(mpf_context_factory_t)); - APR_RING_INIT(&factory->head, mpf_context_t, link); - return factory; -} - -MPF_DECLARE(void) mpf_context_factory_destroy(mpf_context_factory_t *factory) -{ - mpf_context_t *context; - while(!APR_RING_EMPTY(&factory->head, mpf_context_t, link)) { - context = APR_RING_FIRST(&factory->head); - mpf_context_destroy(context); - APR_RING_REMOVE(context, link); - } -} - -MPF_DECLARE(apt_bool_t) mpf_context_factory_process(mpf_context_factory_t *factory) -{ - mpf_context_t *context; - for(context = APR_RING_FIRST(&factory->head); - context != APR_RING_SENTINEL(&factory->head, mpf_context_t, link); - context = APR_RING_NEXT(context, link)) { - - mpf_context_process(context); - } - - return TRUE; -} - - -MPF_DECLARE(mpf_context_t*) mpf_context_create( - mpf_context_factory_t *factory, - const char *name, - void *obj, - apr_size_t max_termination_count, - apr_pool_t *pool) -{ - apr_size_t i,j; - matrix_item_t *matrix_item; - header_item_t *header_item; - mpf_context_t *context = apr_palloc(pool,sizeof(mpf_context_t)); - APR_RING_ELEM_INIT(context,link); - context->factory = factory; - context->obj = obj; - context->pool = pool; - context->name = name; - if(!context->name) { - context->name = apr_psprintf(pool,"0x%pp",context); - } - context->capacity = max_termination_count; - context->count = 0; - context->mpf_objects = apr_array_make(pool,1,sizeof(mpf_object_t*)); - context->header = apr_palloc(pool,context->capacity * sizeof(header_item_t)); - context->matrix = apr_palloc(pool,context->capacity * sizeof(matrix_item_t*)); - for(i=0; icapacity; i++) { - header_item = &context->header[i]; - header_item->termination = NULL; - header_item->tx_count = 0; - header_item->rx_count = 0; - context->matrix[i] = apr_palloc(pool,context->capacity * sizeof(matrix_item_t)); - for(j=0; jcapacity; j++) { - matrix_item = &context->matrix[i][j]; - matrix_item->on = 0; - } - } - - return context; -} - -MPF_DECLARE(apt_bool_t) mpf_context_destroy(mpf_context_t *context) -{ - apr_size_t i; - mpf_termination_t *termination; - for(i=0; icapacity; i++){ - termination = context->header[i].termination; - if(termination) { - mpf_context_termination_subtract(context,termination); - mpf_termination_subtract(termination); - } - } - return TRUE; -} - -MPF_DECLARE(void*) mpf_context_object_get(const mpf_context_t *context) -{ - return context->obj; -} - -MPF_DECLARE(apt_bool_t) mpf_context_termination_add(mpf_context_t *context, mpf_termination_t *termination) -{ - apr_size_t i; - header_item_t *header_item; - for(i=0; icapacity; i++) { - header_item = &context->header[i]; - if(header_item->termination) { - continue; - } - if(!context->count) { - apt_log(APT_LOG_MARK,APT_PRIO_DEBUG,"Add Media Context %s",context->name); - APR_RING_INSERT_TAIL(&context->factory->head,context,mpf_context_t,link); - } - - header_item->termination = termination; - header_item->tx_count = 0; - header_item->rx_count = 0; - - termination->slot = i; - context->count++; - return TRUE; - } - return FALSE; -} - -MPF_DECLARE(apt_bool_t) mpf_context_termination_subtract(mpf_context_t *context, mpf_termination_t *termination) -{ - header_item_t *header_item1; - header_item_t *header_item2; - matrix_item_t *item; - apr_size_t j,k; - apr_size_t i = termination->slot; - if(i >= context->capacity) { - return FALSE; - } - header_item1 = &context->header[i]; - if(header_item1->termination != termination) { - return FALSE; - } - - for(j=0,k=0; jcapacity && kcount; j++) { - header_item2 = &context->header[j]; - if(!header_item2->termination) { - continue; - } - k++; - - item = &context->matrix[i][j]; - if(item->on) { - item->on = 0; - header_item1->tx_count--; - header_item2->rx_count--; - } - - item = &context->matrix[j][i]; - if(item->on) { - item->on = 0; - header_item2->tx_count--; - header_item1->rx_count--; - } - } - header_item1->termination = NULL; - - termination->slot = (apr_size_t)-1; - context->count--; - if(!context->count) { - apt_log(APT_LOG_MARK,APT_PRIO_DEBUG,"Remove Media Context %s",context->name); - APR_RING_REMOVE(context,link); - } - return TRUE; -} - -MPF_DECLARE(apt_bool_t) mpf_context_association_add(mpf_context_t *context, mpf_termination_t *termination1, mpf_termination_t *termination2) -{ - header_item_t *header_item1; - matrix_item_t *matrix_item1; - header_item_t *header_item2; - matrix_item_t *matrix_item2; - apr_size_t i = termination1->slot; - apr_size_t j = termination2->slot; - if(i >= context->capacity || j >= context->capacity) { - return FALSE; - } - - header_item1 = &context->header[i]; - header_item2 = &context->header[j]; - - if(header_item1->termination != termination1 || header_item2->termination != termination2) { - return FALSE; - } - - matrix_item1 = &context->matrix[i][j]; - matrix_item2 = &context->matrix[j][i]; - - /* 1 -> 2 */ - if(!matrix_item1->on) { - if(stream_direction_compatibility_check(header_item1->termination,header_item2->termination) == TRUE) { - matrix_item1->on = 1; - header_item1->tx_count ++; - header_item2->rx_count ++; - } - } - - /* 2 -> 1 */ - if(!matrix_item2->on) { - if(stream_direction_compatibility_check(header_item2->termination,header_item1->termination) == TRUE) { - matrix_item2->on = 1; - header_item2->tx_count ++; - header_item1->rx_count ++; - } - } - return TRUE; -} - -MPF_DECLARE(apt_bool_t) mpf_context_association_remove(mpf_context_t *context, mpf_termination_t *termination1, mpf_termination_t *termination2) -{ - header_item_t *header_item1; - matrix_item_t *matrix_item1; - header_item_t *header_item2; - matrix_item_t *matrix_item2; - apr_size_t i = termination1->slot; - apr_size_t j = termination2->slot; - if(i >= context->capacity || j >= context->capacity) { - return FALSE; - } - - header_item1 = &context->header[i]; - header_item2 = &context->header[j]; - - if(header_item1->termination != termination1 || header_item2->termination != termination2) { - return FALSE; - } - - matrix_item1 = &context->matrix[i][j]; - matrix_item2 = &context->matrix[j][i]; - - /* 1 -> 2 */ - if(matrix_item1->on == 1) { - matrix_item1->on = 0; - header_item1->tx_count --; - header_item2->rx_count --; - } - - /* 2 -> 1 */ - if(matrix_item2->on == 1) { - matrix_item2->on = 0; - header_item2->tx_count --; - header_item1->rx_count --; - } - return TRUE; -} - -MPF_DECLARE(apt_bool_t) mpf_context_associations_reset(mpf_context_t *context) -{ - apr_size_t i,j,k; - header_item_t *header_item1; - header_item_t *header_item2; - matrix_item_t *item; - - /* destroy existing topology / if any */ - mpf_context_topology_destroy(context); - - /* reset assigned associations */ - for(i=0,k=0; icapacity && kcount; i++) { - header_item1 = &context->header[i]; - if(!header_item1->termination) { - continue; - } - k++; - - if(!header_item1->tx_count && !header_item1->rx_count) { - continue; - } - - for(j=i; jcapacity; j++) { - header_item2 = &context->header[j]; - if(!header_item2->termination) { - continue; - } - - item = &context->matrix[i][j]; - if(item->on) { - item->on = 0; - header_item1->tx_count--; - header_item2->rx_count--; - } - - item = &context->matrix[j][i]; - if(item->on) { - item->on = 0; - header_item2->tx_count--; - header_item1->rx_count--; - } - } - } - return TRUE; -} - -static apt_bool_t mpf_context_object_add(mpf_context_t *context, mpf_object_t *object) -{ - if(!object) { - return FALSE; - } - - APR_ARRAY_PUSH(context->mpf_objects, mpf_object_t*) = object; -#if 1 - mpf_object_trace(object); -#endif - return TRUE; -} - -MPF_DECLARE(apt_bool_t) mpf_context_topology_apply(mpf_context_t *context) -{ - apr_size_t i,k; - header_item_t *header_item; - mpf_object_t *object; - - /* first destroy existing topology / if any */ - mpf_context_topology_destroy(context); - - for(i=0,k=0; icapacity && kcount; i++) { - header_item = &context->header[i]; - if(!header_item->termination) { - continue; - } - k++; - - if(header_item->tx_count > 0) { - object = NULL; - if(header_item->tx_count == 1) { - object = mpf_context_bridge_create(context,i); - } - else { /* tx_count > 1 */ - object = mpf_context_multiplier_create(context,i); - } - - mpf_context_object_add(context,object); - } - if(header_item->rx_count > 1) { - object = mpf_context_mixer_create(context,i); - mpf_context_object_add(context,object); - } - } - - return TRUE; -} - -MPF_DECLARE(apt_bool_t) mpf_context_topology_destroy(mpf_context_t *context) -{ - if(context->mpf_objects->nelts) { - int i; - mpf_object_t *object; - for(i=0; impf_objects->nelts; i++) { - object = APR_ARRAY_IDX(context->mpf_objects,i,mpf_object_t*); - mpf_object_destroy(object); - } - apr_array_clear(context->mpf_objects); - } - return TRUE; -} - -MPF_DECLARE(apt_bool_t) mpf_context_process(mpf_context_t *context) -{ - int i; - mpf_object_t *object; - for(i=0; impf_objects->nelts; i++) { - object = APR_ARRAY_IDX(context->mpf_objects,i,mpf_object_t*); - if(object && object->process) { - object->process(object); - } - } - return TRUE; -} - - -static mpf_object_t* mpf_context_bridge_create(mpf_context_t *context, apr_size_t i) -{ - header_item_t *header_item1 = &context->header[i]; - header_item_t *header_item2; - matrix_item_t *item; - apr_size_t j; - for(j=0; jcapacity; j++) { - header_item2 = &context->header[j]; - if(!header_item2->termination) { - continue; - } - item = &context->matrix[i][j]; - if(!item->on) { - continue; - } - - if(header_item2->rx_count > 1) { - /* mixer will be created instead */ - return NULL; - } - - /* create bridge i -> j */ - if(header_item1->termination && header_item2->termination) { - return mpf_bridge_create( - header_item1->termination->audio_stream, - header_item2->termination->audio_stream, - header_item1->termination->codec_manager, - context->name, - context->pool); - } - } - return NULL; -} - -static mpf_object_t* mpf_context_multiplier_create(mpf_context_t *context, apr_size_t i) -{ - mpf_audio_stream_t **sink_arr; - header_item_t *header_item1 = &context->header[i]; - header_item_t *header_item2; - matrix_item_t *item; - apr_size_t j,k; - sink_arr = apr_palloc(context->pool,header_item1->tx_count * sizeof(mpf_audio_stream_t*)); - for(j=0,k=0; jcapacity && ktx_count; j++) { - header_item2 = &context->header[j]; - if(!header_item2->termination) { - continue; - } - item = &context->matrix[i][j]; - if(!item->on) { - continue; - } - sink_arr[k] = header_item2->termination->audio_stream; - k++; - } - return mpf_multiplier_create( - header_item1->termination->audio_stream, - sink_arr, - header_item1->tx_count, - header_item1->termination->codec_manager, - context->name, - context->pool); -} - -static mpf_object_t* mpf_context_mixer_create(mpf_context_t *context, apr_size_t j) -{ - mpf_audio_stream_t **source_arr; - header_item_t *header_item1 = &context->header[j]; - header_item_t *header_item2; - matrix_item_t *item; - apr_size_t i,k; - source_arr = apr_palloc(context->pool,header_item1->rx_count * sizeof(mpf_audio_stream_t*)); - for(i=0,k=0; icapacity && krx_count; i++) { - header_item2 = &context->header[i]; - if(!header_item2->termination) { - continue; - } - item = &context->matrix[i][j]; - if(!item->on) { - continue; - } - source_arr[k] = header_item2->termination->audio_stream; - k++; - } - return mpf_mixer_create( - source_arr, - header_item1->rx_count, - header_item1->termination->audio_stream, - header_item1->termination->codec_manager, - context->name, - context->pool); -} - -static APR_INLINE apt_bool_t stream_direction_compatibility_check(mpf_termination_t *termination1, mpf_termination_t *termination2) -{ - mpf_audio_stream_t *source = termination1->audio_stream; - mpf_audio_stream_t *sink = termination2->audio_stream; - if(source && (source->direction & STREAM_DIRECTION_RECEIVE) == STREAM_DIRECTION_RECEIVE && - sink && (sink->direction & STREAM_DIRECTION_SEND) == STREAM_DIRECTION_SEND) { - return TRUE; - } - return FALSE; -} diff --git a/libs/unimrcp/libs/mpf/src/mpf_decoder.c b/libs/unimrcp/libs/mpf/src/mpf_decoder.c deleted file mode 100644 index f27467101f4..00000000000 --- a/libs/unimrcp/libs/mpf/src/mpf_decoder.c +++ /dev/null @@ -1,129 +0,0 @@ -/* - * Copyright 2008-2014 Arsen Chaloyan - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - * - * $Id: mpf_decoder.c 2136 2014-07-04 06:33:36Z achaloyan@gmail.com $ - */ - -#include "mpf_decoder.h" -#include "apt_log.h" - -typedef struct mpf_decoder_t mpf_decoder_t; - -struct mpf_decoder_t { - mpf_audio_stream_t *base; - mpf_audio_stream_t *source; - mpf_codec_t *codec; - mpf_frame_t frame_in; -}; - - -static apt_bool_t mpf_decoder_destroy(mpf_audio_stream_t *stream) -{ - mpf_decoder_t *decoder = stream->obj; - return mpf_audio_stream_destroy(decoder->source); -} - -static apt_bool_t mpf_decoder_open(mpf_audio_stream_t *stream, mpf_codec_t *codec) -{ - mpf_decoder_t *decoder = stream->obj; - mpf_codec_open(decoder->codec); - return mpf_audio_stream_rx_open(decoder->source,decoder->codec); -} - -static apt_bool_t mpf_decoder_close(mpf_audio_stream_t *stream) -{ - mpf_decoder_t *decoder = stream->obj; - mpf_codec_close(decoder->codec); - return mpf_audio_stream_rx_close(decoder->source); -} - -static apt_bool_t mpf_decoder_process(mpf_audio_stream_t *stream, mpf_frame_t *frame) -{ - mpf_decoder_t *decoder = stream->obj; - decoder->frame_in.type = MEDIA_FRAME_TYPE_NONE; - decoder->frame_in.marker = MPF_MARKER_NONE; - if(mpf_audio_stream_frame_read(decoder->source,&decoder->frame_in) != TRUE) { - return FALSE; - } - - frame->type = decoder->frame_in.type; - frame->marker = decoder->frame_in.marker; - if((frame->type & MEDIA_FRAME_TYPE_EVENT) == MEDIA_FRAME_TYPE_EVENT) { - frame->event_frame = decoder->frame_in.event_frame; - } - if((frame->type & MEDIA_FRAME_TYPE_AUDIO) == MEDIA_FRAME_TYPE_AUDIO) { - mpf_codec_decode(decoder->codec,&decoder->frame_in.codec_frame,&frame->codec_frame); - } - return TRUE; -} - -static void mpf_decoder_trace(mpf_audio_stream_t *stream, mpf_stream_direction_e direction, apt_text_stream_t *output) -{ - apr_size_t offset; - mpf_codec_descriptor_t *descriptor; - mpf_decoder_t *decoder = stream->obj; - - mpf_audio_stream_trace(decoder->source,direction,output); - - descriptor = decoder->base->rx_descriptor; - if(descriptor) { - offset = output->pos - output->text.buf; - output->pos += apr_snprintf(output->pos, output->text.length - offset, - "->Decoder->[%s/%d/%d]", - descriptor->name.buf, - descriptor->sampling_rate, - descriptor->channel_count); - } -} - -static const mpf_audio_stream_vtable_t vtable = { - mpf_decoder_destroy, - mpf_decoder_open, - mpf_decoder_close, - mpf_decoder_process, - NULL, - NULL, - NULL, - mpf_decoder_trace -}; - -MPF_DECLARE(mpf_audio_stream_t*) mpf_decoder_create(mpf_audio_stream_t *source, mpf_codec_t *codec, apr_pool_t *pool) -{ - apr_size_t frame_size; - mpf_decoder_t *decoder; - mpf_stream_capabilities_t *capabilities; - if(!source || !codec) { - return NULL; - } - decoder = apr_palloc(pool,sizeof(mpf_decoder_t)); - capabilities = mpf_stream_capabilities_create(STREAM_DIRECTION_RECEIVE,pool); - decoder->base = mpf_audio_stream_create(decoder,&vtable,capabilities,pool); - if(!decoder->base) { - return NULL; - } - decoder->base->rx_descriptor = mpf_codec_lpcm_descriptor_create( - source->rx_descriptor->sampling_rate, - source->rx_descriptor->channel_count, - pool); - decoder->base->rx_event_descriptor = source->rx_event_descriptor; - - decoder->source = source; - decoder->codec = codec; - - frame_size = mpf_codec_frame_size_calculate(source->rx_descriptor,codec->attribs); - decoder->frame_in.codec_frame.size = frame_size; - decoder->frame_in.codec_frame.buffer = apr_palloc(pool,frame_size); - return decoder->base; -} diff --git a/libs/unimrcp/libs/mpf/src/mpf_dtmf_detector.c b/libs/unimrcp/libs/mpf/src/mpf_dtmf_detector.c deleted file mode 100644 index 58ca1916fda..00000000000 --- a/libs/unimrcp/libs/mpf/src/mpf_dtmf_detector.c +++ /dev/null @@ -1,302 +0,0 @@ -/* - * Copyright 2009-2010 Tomas Valenta, Arsen Chaloyan - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - * - * $Id: mpf_dtmf_detector.c 2227 2014-11-12 01:10:18Z achaloyan@gmail.com $ - */ - -#include "mpf_dtmf_detector.h" -#include "apr_thread_mutex.h" -#include "apt_log.h" -#include "mpf_named_event.h" -#include - -#ifndef M_PI -# define M_PI 3.141592653589793238462643 -#endif - -/** Max detected DTMF digits buffer length */ -#define MPF_DTMFDET_BUFFER_LEN 32 - -/** Number of DTMF frequencies */ -#define DTMF_FREQUENCIES 8 - -/** Window length in samples (at 8kHz) for Goertzel's frequency analysis */ -#define GOERTZEL_SAMPLES_8K 102 - -/** See RFC4733 */ -#define DTMF_EVENT_ID_MAX 15 /* 0123456789*#ABCD */ - -/** - * Goertzel frequency detector (second-order IIR filter) state: - * - * s(t) = x(t) + coef * s(t-1) - s(t-2), where s(0)=0; s(1) = 0; - * x(t) is the input signal - * - * Then energy of frequency f in the signal is: - * X(f)X'(f) = s(t-2)^2 + s(t-1)^2 - coef*s(t-2)*s(t-1) - */ -typedef struct goertzel_state_t { - /** coef = cos(2*pi*f_tone/f_sampling) */ - double coef; - /** s(t-2) or resulting energy @see goertzel_state_t */ - double s1; - /** s(t-1) @see goertzel_state_t */ - double s2; -} goertzel_state_t; - -/** DTMF frequencies */ -static const double dtmf_freqs[DTMF_FREQUENCIES] = { - 697, 770, 852, 941, /* Row frequencies */ - 1209, 1336, 1477, 1633}; /* Col frequencies */ - -/** [row, col] major frequency to digit mapping */ -static const char freq2digits[DTMF_FREQUENCIES/2][DTMF_FREQUENCIES/2] = - { { '1', '2', '3', 'A' }, - { '4', '5', '6', 'B' }, - { '7', '8', '9', 'C' }, - { '*', '0', '#', 'D' } }; - -/** Media Processing Framework's Dual Tone Multiple Frequncy detector */ -struct mpf_dtmf_detector_t { - /** Mutex to guard the buffer */ - struct apr_thread_mutex_t *mutex; - /** Recognizer band */ - enum mpf_dtmf_detector_band_e band; - /** Detected digits buffer */ - char buf[MPF_DTMFDET_BUFFER_LEN+1]; - /** Number of digits in the buffer */ - apr_size_t digits; - /** Number of lost digits due to full buffer */ - apr_size_t lost_digits; - /** Frequency analyzators */ - struct goertzel_state_t energies[DTMF_FREQUENCIES]; - /** Total energy of signal */ - double totenergy; - /** Number of samples in a window */ - apr_size_t wsamples; - /** Number of samples processed */ - apr_size_t nsamples; - /** Previously detected and last reported digits */ - char last1, last2, curr; -}; - - -MPF_DECLARE(struct mpf_dtmf_detector_t *) mpf_dtmf_detector_create_ex( - const struct mpf_audio_stream_t *stream, - enum mpf_dtmf_detector_band_e band, - struct apr_pool_t *pool) -{ - apr_status_t status; - struct mpf_dtmf_detector_t *det; - int flg_band = band; - - if (!stream->tx_descriptor) flg_band &= ~MPF_DTMF_DETECTOR_INBAND; -/* - Event descriptor is not important actually - if (!stream->tx_event_descriptor) flg_band &= ~MPF_DTMF_DETECTOR_OUTBAND; -*/ - if (!flg_band) return NULL; - - det = apr_palloc(pool, sizeof(mpf_dtmf_detector_t)); - if (!det) return NULL; - status = apr_thread_mutex_create(&det->mutex, APR_THREAD_MUTEX_DEFAULT, pool); - if (status != APR_SUCCESS) return NULL; - - det->band = (enum mpf_dtmf_detector_band_e) flg_band; - det->buf[0] = 0; - det->digits = 0; - det->lost_digits = 0; - - if (det->band & MPF_DTMF_DETECTOR_INBAND) { - apr_size_t i; - for (i = 0; i < DTMF_FREQUENCIES; i++) { - det->energies[i].coef = 2 * cos(2 * M_PI * dtmf_freqs[i] / - stream->tx_descriptor->sampling_rate); - det->energies[i].s1 = 0; - det->energies[i].s2 = 0; - } - det->nsamples = 0; - det->wsamples = GOERTZEL_SAMPLES_8K * (stream->tx_descriptor->sampling_rate / 8000); - det->last1 = det->last2 = det->curr = 0; - det->totenergy = 0; - } - - return det; -} - -MPF_DECLARE(char) mpf_dtmf_detector_digit_get(struct mpf_dtmf_detector_t *detector) -{ - char digit; - apr_thread_mutex_lock(detector->mutex); - digit = detector->buf[0]; - if (digit) { - memmove(detector->buf, detector->buf + 1, strlen(detector->buf)); - detector->digits--; - } - apr_thread_mutex_unlock(detector->mutex); - return digit; -} - -MPF_DECLARE(apr_size_t) mpf_dtmf_detector_digits_lost(const struct mpf_dtmf_detector_t *detector) -{ - return detector->lost_digits; -} - -MPF_DECLARE(void) mpf_dtmf_detector_reset(struct mpf_dtmf_detector_t *detector) -{ - apr_thread_mutex_lock(detector->mutex); - detector->buf[0] = 0; - detector->lost_digits = 0; - detector->digits = 0; - detector->curr = detector->last1 = detector->last2 = 0; - detector->nsamples = 0; - detector->totenergy = 0; - apr_thread_mutex_unlock(detector->mutex); -} - -static APR_INLINE void mpf_dtmf_detector_add_digit( - struct mpf_dtmf_detector_t *detector, - char digit) -{ - if (!digit) return; - apr_thread_mutex_lock(detector->mutex); - if (detector->digits < MPF_DTMFDET_BUFFER_LEN) { - detector->buf[detector->digits++] = digit; - detector->buf[detector->digits] = 0; - } else - detector->lost_digits++; - apr_thread_mutex_unlock(detector->mutex); -} - -static APR_INLINE void goertzel_sample( - struct mpf_dtmf_detector_t *detector, - apr_int16_t sample) -{ - apr_size_t i; - double s; - for (i = 0; i < DTMF_FREQUENCIES; i++) { - s = detector->energies[i].s1; - detector->energies[i].s1 = detector->energies[i].s2; - detector->energies[i].s2 = sample + - detector->energies[i].coef * detector->energies[i].s1 - s; - } - detector->totenergy += sample * sample; -} - -static void goertzel_energies_digit(struct mpf_dtmf_detector_t *detector) -{ - apr_size_t i, rmax = 0, cmax = 0; - double reng = 0, ceng = 0; - char digit = 0; - - /* Calculate energies and maxims */ - for (i = 0; i < DTMF_FREQUENCIES; i++) { - double eng = detector->energies[i].s1 * detector->energies[i].s1 + - detector->energies[i].s2 * detector->energies[i].s2 - - detector->energies[i].coef * detector->energies[i].s1 * detector->energies[i].s2; - if (i < DTMF_FREQUENCIES/2) { - if (eng > reng) { - rmax = i; - reng = eng; - } - } else { - if (eng > ceng) { - cmax = i; - ceng = eng; - } - } - } - - if ((reng < 8.0e10 * detector->wsamples / GOERTZEL_SAMPLES_8K) || - (ceng < 8.0e10 * detector->wsamples / GOERTZEL_SAMPLES_8K)) - { - /* energy not high enough */ - } else if ((ceng > reng) && (reng < ceng * 0.398)) { /* twist > 4dB, error */ - /* Twist check - * CEPT => twist < 6dB - * AT&T => forward twist < 4dB and reverse twist < 8dB - * -ndB < 10 log10( v1 / v2 ), where v1 < v2 - * -4dB < 10 log10( v1 / v2 ) - * -0.4 < log10( v1 / v2 ) - * 0.398 < v1 / v2 - * 0.398 * v2 < v1 - */ - } else if ((ceng < reng) && (ceng < reng * 0.158)) { /* twist > 8db, error */ - /* Reverse twist check failed */ - } else if (0.25 * detector->totenergy > (reng + ceng)) { /* 16db */ - /* Signal energy to total energy ratio test failed */ - } else { - if (cmax >= DTMF_FREQUENCIES/2 && cmax < DTMF_FREQUENCIES) - digit = freq2digits[rmax][cmax - DTMF_FREQUENCIES/2]; - } - - /* Three successive detections will trigger the detection */ - if (digit != detector->curr) { - if (digit && ((detector->last1 == digit) && (detector->last2 == digit))) { - detector->curr = digit; - mpf_dtmf_detector_add_digit(detector, digit); - } else if ((detector->last1 != detector->curr) && (detector->last2 != detector->curr)) { - detector->curr = 0; - } - } - detector->last1 = detector->last2; - detector->last2 = digit; - - /* Reset Goertzel's detectors */ - for (i = 0; i < DTMF_FREQUENCIES; i++) { - detector->energies[i].s1 = 0; - detector->energies[i].s2 = 0; - } - detector->totenergy = 0; -} - -MPF_DECLARE(void) mpf_dtmf_detector_get_frame( - struct mpf_dtmf_detector_t *detector, - const struct mpf_frame_t *frame) -{ - if ((detector->band & MPF_DTMF_DETECTOR_OUTBAND) && - (frame->type & MEDIA_FRAME_TYPE_EVENT) && - (frame->event_frame.event_id <= DTMF_EVENT_ID_MAX) && - (frame->marker == MPF_MARKER_START_OF_EVENT)) - { - if (detector->band & MPF_DTMF_DETECTOR_INBAND) { - detector->band &= ~MPF_DTMF_DETECTOR_INBAND; - apt_log(APT_LOG_MARK, APT_PRIO_INFO, "Out-of-band digit arrived, turning " - "in-band DTMF detector off"); - } - mpf_dtmf_detector_add_digit(detector, mpf_event_id_to_dtmf_char( - frame->event_frame.event_id)); - return; - } - - if ((detector->band & MPF_DTMF_DETECTOR_INBAND) && (frame->type & MEDIA_FRAME_TYPE_AUDIO)) { - apr_int16_t *samples = frame->codec_frame.buffer; - apr_size_t i; - - for (i = 0; i < frame->codec_frame.size / 2; i++) { - goertzel_sample(detector, samples[i]); - if (++detector->nsamples >= detector->wsamples) { - goertzel_energies_digit(detector); - detector->nsamples = 0; - } - } - } -} - -MPF_DECLARE(void) mpf_dtmf_detector_destroy(struct mpf_dtmf_detector_t *detector) -{ - apr_thread_mutex_destroy(detector->mutex); - detector->mutex = NULL; -} diff --git a/libs/unimrcp/libs/mpf/src/mpf_dtmf_generator.c b/libs/unimrcp/libs/mpf/src/mpf_dtmf_generator.c deleted file mode 100644 index b4671adaf14..00000000000 --- a/libs/unimrcp/libs/mpf/src/mpf_dtmf_generator.c +++ /dev/null @@ -1,349 +0,0 @@ -/* - * Copyright 2009-2010 Tomas Valenta, Arsen Chaloyan - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - * - * $Id: mpf_dtmf_generator.c 2227 2014-11-12 01:10:18Z achaloyan@gmail.com $ - */ - -#include "mpf_dtmf_generator.h" -#include "apr.h" -#include "apr_thread_mutex.h" -#include "apt_log.h" -#include "mpf_named_event.h" -#include - -#ifndef M_PI -# define M_PI 3.141592653589793238462643 -#endif - -/** Max DTMF digits waiting to be sent */ -#define MPF_DTMFGEN_QUEUE_LEN 32 - -/** See RFC4733 */ -#define DTMF_EVENT_ID_MAX 15 /* 0123456789*#ABCD */ - -/** See RFC4733 */ -#define DTMF_EVENT_VOLUME 10 - -/** Amplitude of single sine wave from tone generator */ -#define DTMF_SINE_AMPLITUDE 12288 - -/** State of the DTMF generator */ -typedef enum mpf_dtmf_generator_state_e { - /** Ready to generate next digit in queue */ - DTMF_GEN_STATE_IDLE, - /** Generating tone */ - DTMF_GEN_STATE_TONE, - /** Retransmitting final RTP packet */ - DTMF_GEN_STATE_ENDING, - /** Generating silence between tones */ - DTMF_GEN_STATE_SILENCE -} mpf_dtmf_generator_state_e; - -/** - * Sine wave generator (second-order IIR filter) state: - * - * s(t) = Amp*sin(2*pi*f_tone/f_sampling*t) - * - * s(t) = coef * s(t-1) - s(t-2); s(0)=0; s(1)=Amp*sin(2*pi*f_tone/f_sampling) - */ -typedef struct sine_state_t { - /** coef = cos(2*pi*f_tone/f_sampling) */ - double coef; - /** s(t-2) @see sine_state_t */ - double s1; - /** s(t-1) @see sine_state_t */ - double s2; -} sine_state_t; - -/** Mapping event_id to frequency pair */ -static const double dtmf_freq[DTMF_EVENT_ID_MAX+1][2] = { - {941, 1336}, /* 0 */ - {697, 1209}, /* 1 */ - {697, 1336}, /* 2 */ - {697, 1477}, /* 3 */ - {770, 1209}, /* 4 */ - {770, 1336}, /* 5 */ - {770, 1477}, /* 6 */ - {852, 1209}, /* 7 */ - {852, 1336}, /* 8 */ - {852, 1477}, /* 9 */ - {941, 1209}, /* * */ - {941, 1477}, /* # */ - {697, 1633}, /* A */ - {770, 1633}, /* B */ - {852, 1633}, /* C */ - {941, 1633} /* D */ -}; - -/** Media Processing Framework's Dual Tone Multiple Frequncy generator */ -struct mpf_dtmf_generator_t { - /** Generator state */ - enum mpf_dtmf_generator_state_e state; - /** In-band or out-of-band */ - enum mpf_dtmf_generator_band_e band; - /** Mutex to guard the queue */ - struct apr_thread_mutex_t *mutex; - /** Queue of digits to generate */ - char queue[MPF_DTMFGEN_QUEUE_LEN+1]; - /** DTMF event_id according to RFC4733 */ - apr_byte_t event_id; - /** Duration in RTP units: (sample_rate / 1000) * milliseconds */ - apr_uint32_t tone_duration; - /** Duration of inter-digit silence @see tone_duration */ - apr_uint32_t silence_duration; - /** Multipurpose counter; mostly in RTP time units */ - apr_uint32_t counter; - /** Frame duration in RTP units */ - apr_uint32_t frame_duration; - /** RTP named event duration (0..0xFFFF) */ - apr_uint32_t event_duration; - /** Set MPF_MARKER_NEW_SEGMENT in the next event frame */ - apt_bool_t new_segment; - /** Lower frequency generator */ - struct sine_state_t sine1; - /** Higher frequency generator */ - struct sine_state_t sine2; - /** Sampling rate of audio in Hz; used in tone generator */ - apr_uint32_t sample_rate_audio; - /** Sampling rate of telephone-events in Hz; used for timing */ - apr_uint32_t sample_rate_events; - /** How often to issue event packet */ - apr_uint32_t events_ptime; - /** Milliseconds elapsed since last event packet */ - apr_uint32_t since_last_event; -}; - - -MPF_DECLARE(struct mpf_dtmf_generator_t *) mpf_dtmf_generator_create_ex( - const struct mpf_audio_stream_t *stream, - enum mpf_dtmf_generator_band_e band, - apr_uint32_t tone_ms, - apr_uint32_t silence_ms, - struct apr_pool_t *pool) -{ - struct mpf_dtmf_generator_t *gen; - apr_status_t status; - int flg_band = band; - - if (!stream->rx_descriptor) flg_band &= ~MPF_DTMF_GENERATOR_INBAND; - if (!stream->rx_event_descriptor) flg_band &= ~MPF_DTMF_GENERATOR_OUTBAND; - if (!flg_band) return NULL; - - gen = apr_palloc(pool, sizeof(struct mpf_dtmf_generator_t)); - if (!gen) return NULL; - status = apr_thread_mutex_create(&gen->mutex, APR_THREAD_MUTEX_DEFAULT, pool); - if (status != APR_SUCCESS) return NULL; - gen->band = (enum mpf_dtmf_generator_band_e) flg_band; - gen->queue[0] = 0; - gen->state = DTMF_GEN_STATE_IDLE; - if (stream->rx_descriptor) - gen->sample_rate_audio = stream->rx_descriptor->sampling_rate; - gen->sample_rate_events = stream->rx_event_descriptor ? - stream->rx_event_descriptor->sampling_rate : gen->sample_rate_audio; - gen->frame_duration = gen->sample_rate_events / 1000 * CODEC_FRAME_TIME_BASE; - gen->tone_duration = gen->sample_rate_events / 1000 * tone_ms; - gen->silence_duration = gen->sample_rate_events / 1000 * silence_ms; - gen->events_ptime = CODEC_FRAME_TIME_BASE; /* Should be got from event_descriptor */ - return gen; -} - - -MPF_DECLARE(apt_bool_t) mpf_dtmf_generator_enqueue( - struct mpf_dtmf_generator_t *generator, - const char *digits) -{ - apr_size_t qlen, dlen; - apt_bool_t ret; - - dlen = strlen(digits); - apr_thread_mutex_lock(generator->mutex); - qlen = strlen(generator->queue); - if (qlen + dlen > MPF_DTMFGEN_QUEUE_LEN) { - ret = FALSE; - apt_log(APT_LOG_MARK, APT_PRIO_WARNING, "DTMF queue too short (%d), " - "cannot add %"APR_SIZE_T_FMT" digit%s, already has %"APR_SIZE_T_FMT, - MPF_DTMFGEN_QUEUE_LEN, dlen, dlen > 1 ? "s" : "", qlen); - } else { - strcpy(generator->queue + qlen, digits); - ret = TRUE; - } - apr_thread_mutex_unlock(generator->mutex); - return ret; -} - - -MPF_DECLARE(void) mpf_dtmf_generator_reset(struct mpf_dtmf_generator_t *generator) -{ - apr_thread_mutex_lock(generator->mutex); - generator->state = DTMF_GEN_STATE_IDLE; - generator->queue[0] = 0; - apr_thread_mutex_unlock(generator->mutex); -} - - -MPF_DECLARE(apt_bool_t) mpf_dtmf_generator_sending(const struct mpf_dtmf_generator_t *generator) -{ - return *generator->queue || ((generator->state != DTMF_GEN_STATE_IDLE) && - (generator->state != DTMF_GEN_STATE_SILENCE)); -} - - -MPF_DECLARE(apt_bool_t) mpf_dtmf_generator_put_frame( - struct mpf_dtmf_generator_t *generator, - struct mpf_frame_t *frame) -{ - apr_thread_mutex_lock(generator->mutex); - if ((generator->state == DTMF_GEN_STATE_IDLE) && *generator->queue) { - /* Get next valid digit from queue */ - do { - generator->event_id = (apr_byte_t) mpf_dtmf_char_to_event_id(*generator->queue); - memmove(generator->queue, generator->queue + 1, strlen(generator->queue)); - } while (*generator->queue && (generator->event_id > DTMF_EVENT_ID_MAX)); - /* Reset state */ - if (generator->event_id <= DTMF_EVENT_ID_MAX) { - generator->state = DTMF_GEN_STATE_TONE; - generator->counter = 0; - generator->event_duration = 0; - generator->since_last_event = generator->events_ptime; - generator->new_segment = FALSE; - /* Initialize tone generator */ - if (generator->band & MPF_DTMF_GENERATOR_INBAND) { - double omega; - - omega = 2 * M_PI * dtmf_freq[generator->event_id][0] / generator->sample_rate_audio; - generator->sine1.s1 = 0; - generator->sine1.s2 = DTMF_SINE_AMPLITUDE * sin(omega); - generator->sine1.coef = 2 * cos(omega); - - omega = 2 * M_PI * dtmf_freq[generator->event_id][1] / generator->sample_rate_audio; - generator->sine2.s1 = 0; - generator->sine2.s2 = DTMF_SINE_AMPLITUDE * sin(omega); - generator->sine2.coef = 2 * cos(omega); - } - } - } - apr_thread_mutex_unlock(generator->mutex); - if (generator->state == DTMF_GEN_STATE_IDLE) return FALSE; - - if (generator->state == DTMF_GEN_STATE_TONE) { - generator->counter += generator->frame_duration; - generator->event_duration += generator->frame_duration; - if (generator->band & MPF_DTMF_GENERATOR_INBAND) { - apr_size_t i; - apr_int16_t *samples = (apr_int16_t *) frame->codec_frame.buffer; - double s; - - frame->type |= MEDIA_FRAME_TYPE_AUDIO; - /* Tone generator */ - for (i = 0; i < frame->codec_frame.size / 2; i++) { - s = generator->sine1.s1; - generator->sine1.s1 = generator->sine1.s2; - generator->sine1.s2 = generator->sine1.coef * generator->sine1.s1 - s; - samples[i] = (apr_int16_t) (s + generator->sine2.s1); - s = generator->sine2.s1; - generator->sine2.s1 = generator->sine2.s2; - generator->sine2.s2 = generator->sine2.coef * generator->sine2.s1 - s; - } - } - if (generator->band & MPF_DTMF_GENERATOR_OUTBAND) { - generator->since_last_event += CODEC_FRAME_TIME_BASE; - if (generator->since_last_event >= generator->events_ptime) - generator->since_last_event = 0; - else - return TRUE; - frame->type |= MEDIA_FRAME_TYPE_EVENT; - frame->event_frame.reserved = 0; - frame->event_frame.event_id = generator->event_id; - frame->event_frame.volume = DTMF_EVENT_VOLUME; - if (generator->counter >= generator->tone_duration) { - generator->state = DTMF_GEN_STATE_ENDING; - generator->counter = 0; - frame->event_frame.edge = 1; - frame->marker = MPF_MARKER_END_OF_EVENT; - if (generator->event_duration > 0xFFFF) { - /* Shorten the tone a bit instead of lenghtening */ - generator->new_segment = TRUE; - frame->event_frame.duration = 0xFFFF; - generator->event_duration = 0; - } else - frame->event_frame.duration = generator->event_duration; - } else { - frame->event_frame.edge = 0; - if (generator->counter == generator->frame_duration) /* First chunk of event */ - frame->marker = MPF_MARKER_START_OF_EVENT; - else if (generator->new_segment) { - frame->marker = MPF_MARKER_NEW_SEGMENT; - generator->new_segment = FALSE; - } else - frame->marker = MPF_MARKER_NONE; - if (generator->event_duration > 0xFFFF) { - frame->event_frame.duration = 0xFFFF; - generator->event_duration = 0; - generator->new_segment = TRUE; - } else - frame->event_frame.duration = generator->event_duration; - } - return TRUE; - } /* MPF_DTMF_GENERATOR_OUTBAND */ - if (generator->counter >= generator->tone_duration) { - generator->state = DTMF_GEN_STATE_SILENCE; - generator->counter = 0; - } - return TRUE; - } - else if (generator->state == DTMF_GEN_STATE_ENDING) { - generator->since_last_event += CODEC_FRAME_TIME_BASE; - if (generator->since_last_event >= generator->events_ptime) - generator->since_last_event = 0; - else - return TRUE; - generator->counter++; - frame->type |= MEDIA_FRAME_TYPE_EVENT; - frame->marker = MPF_MARKER_END_OF_EVENT; - frame->event_frame.event_id = generator->event_id; - frame->event_frame.volume = DTMF_EVENT_VOLUME; - frame->event_frame.reserved = 0; - frame->event_frame.edge = 1; - if (generator->new_segment) - /* Tone was shortened a little bit */ - frame->event_frame.duration = 0xFFFF; - else - frame->event_frame.duration = generator->event_duration; - if (generator->counter >= 2) { - generator->state = DTMF_GEN_STATE_SILENCE; - generator->counter *= generator->frame_duration; - } - if (generator->band & MPF_DTMF_GENERATOR_INBAND) { - frame->type |= MEDIA_FRAME_TYPE_AUDIO; - memset(frame->codec_frame.buffer, 0, frame->codec_frame.size); - } - return TRUE; - } - else if (generator->state == DTMF_GEN_STATE_SILENCE) { - generator->counter += generator->frame_duration; - if (generator->counter >= generator->silence_duration) - generator->state = DTMF_GEN_STATE_IDLE; - } - - return FALSE; -} - - -MPF_DECLARE(void) mpf_dtmf_generator_destroy(struct mpf_dtmf_generator_t *generator) -{ - mpf_dtmf_generator_reset(generator); - apr_thread_mutex_destroy(generator->mutex); - generator->mutex = NULL; -} diff --git a/libs/unimrcp/libs/mpf/src/mpf_encoder.c b/libs/unimrcp/libs/mpf/src/mpf_encoder.c deleted file mode 100644 index cd5837725e6..00000000000 --- a/libs/unimrcp/libs/mpf/src/mpf_encoder.c +++ /dev/null @@ -1,125 +0,0 @@ -/* - * Copyright 2008-2014 Arsen Chaloyan - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - * - * $Id: mpf_encoder.c 2136 2014-07-04 06:33:36Z achaloyan@gmail.com $ - */ - -#include "mpf_encoder.h" -#include "apt_log.h" - -typedef struct mpf_encoder_t mpf_encoder_t; - -struct mpf_encoder_t { - mpf_audio_stream_t *base; - mpf_audio_stream_t *sink; - mpf_codec_t *codec; - mpf_frame_t frame_out; -}; - - -static apt_bool_t mpf_encoder_destroy(mpf_audio_stream_t *stream) -{ - mpf_encoder_t *encoder = stream->obj; - return mpf_audio_stream_destroy(encoder->sink); -} - -static apt_bool_t mpf_encoder_open(mpf_audio_stream_t *stream, mpf_codec_t *codec) -{ - mpf_encoder_t *encoder = stream->obj; - mpf_codec_open(encoder->codec); - return mpf_audio_stream_tx_open(encoder->sink,encoder->codec); -} - -static apt_bool_t mpf_encoder_close(mpf_audio_stream_t *stream) -{ - mpf_encoder_t *encoder = stream->obj; - mpf_codec_close(encoder->codec); - return mpf_audio_stream_tx_close(encoder->sink); -} - -static apt_bool_t mpf_encoder_process(mpf_audio_stream_t *stream, const mpf_frame_t *frame) -{ - mpf_encoder_t *encoder = stream->obj; - - encoder->frame_out.type = frame->type; - encoder->frame_out.marker = frame->marker; - if((frame->type & MEDIA_FRAME_TYPE_EVENT) == MEDIA_FRAME_TYPE_EVENT) { - encoder->frame_out.event_frame = frame->event_frame; - } - if((frame->type & MEDIA_FRAME_TYPE_AUDIO) == MEDIA_FRAME_TYPE_AUDIO) { - mpf_codec_encode(encoder->codec,&frame->codec_frame,&encoder->frame_out.codec_frame); - } - return mpf_audio_stream_frame_write(encoder->sink,&encoder->frame_out); -} - -static void mpf_encoder_trace(mpf_audio_stream_t *stream, mpf_stream_direction_e direction, apt_text_stream_t *output) -{ - apr_size_t offset; - mpf_codec_descriptor_t *descriptor; - mpf_encoder_t *encoder = stream->obj; - - descriptor = encoder->base->tx_descriptor; - if(descriptor) { - offset = output->pos - output->text.buf; - output->pos += apr_snprintf(output->pos, output->text.length - offset, - "[%s/%d/%d]->Encoder->", - descriptor->name.buf, - descriptor->sampling_rate, - descriptor->channel_count); - } - - mpf_audio_stream_trace(encoder->sink,direction,output); -} - - -static const mpf_audio_stream_vtable_t vtable = { - mpf_encoder_destroy, - NULL, - NULL, - NULL, - mpf_encoder_open, - mpf_encoder_close, - mpf_encoder_process, - mpf_encoder_trace -}; - -MPF_DECLARE(mpf_audio_stream_t*) mpf_encoder_create(mpf_audio_stream_t *sink, mpf_codec_t *codec, apr_pool_t *pool) -{ - apr_size_t frame_size; - mpf_encoder_t *encoder; - mpf_stream_capabilities_t *capabilities; - if(!sink || !codec) { - return NULL; - } - encoder = apr_palloc(pool,sizeof(mpf_encoder_t)); - capabilities = mpf_stream_capabilities_create(STREAM_DIRECTION_SEND,pool); - encoder->base = mpf_audio_stream_create(encoder,&vtable,capabilities,pool); - if(!encoder->base) { - return NULL; - } - encoder->base->tx_descriptor = mpf_codec_lpcm_descriptor_create( - sink->tx_descriptor->sampling_rate, - sink->tx_descriptor->channel_count, - pool); - encoder->base->tx_event_descriptor = sink->tx_event_descriptor; - - encoder->sink = sink; - encoder->codec = codec; - - frame_size = mpf_codec_frame_size_calculate(sink->tx_descriptor,codec->attribs); - encoder->frame_out.codec_frame.size = frame_size; - encoder->frame_out.codec_frame.buffer = apr_palloc(pool,frame_size); - return encoder->base; -} diff --git a/libs/unimrcp/libs/mpf/src/mpf_engine.c b/libs/unimrcp/libs/mpf/src/mpf_engine.c deleted file mode 100644 index 60240cb9bb7..00000000000 --- a/libs/unimrcp/libs/mpf/src/mpf_engine.c +++ /dev/null @@ -1,453 +0,0 @@ -/* - * Copyright 2008-2014 Arsen Chaloyan - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - * - * $Id: mpf_engine.c 2226 2014-11-12 00:47:40Z achaloyan@gmail.com $ - */ - -#include "mpf_engine.h" -#include "mpf_context.h" -#include "mpf_termination.h" -#include "mpf_stream.h" -#include "mpf_scheduler.h" -#include "mpf_codec_descriptor.h" -#include "mpf_codec_manager.h" -#include "apt_obj_list.h" -#include "apt_cyclic_queue.h" -#include "apt_log.h" - -#define MPF_TIMER_RESOLUTION 100 /* 100 ms */ - -struct mpf_engine_t { - apr_pool_t *pool; - apt_task_t *task; - apt_task_msg_type_e task_msg_type; - apr_thread_mutex_t *request_queue_guard; - apt_cyclic_queue_t *request_queue; - mpf_context_factory_t *context_factory; - mpf_scheduler_t *scheduler; - apt_timer_queue_t *timer_queue; - const mpf_codec_manager_t *codec_manager; -}; - -static void mpf_engine_main(mpf_scheduler_t *scheduler, void *obj); -static void mpf_engine_timer_proc(mpf_scheduler_t *scheduler, void *obj); -static apt_bool_t mpf_engine_destroy(apt_task_t *task); -static apt_bool_t mpf_engine_start(apt_task_t *task); -static apt_bool_t mpf_engine_terminate(apt_task_t *task); -static apt_bool_t mpf_engine_msg_signal(apt_task_t *task, apt_task_msg_t *msg); -static apt_bool_t mpf_engine_msg_process(apt_task_t *task, apt_task_msg_t *msg); - - -mpf_codec_t* mpf_codec_l16_create(apr_pool_t *pool); -mpf_codec_t* mpf_codec_g711u_create(apr_pool_t *pool); -mpf_codec_t* mpf_codec_g711a_create(apr_pool_t *pool); - -MPF_DECLARE(mpf_engine_t*) mpf_engine_create(const char *id, apr_pool_t *pool) -{ - apt_task_vtable_t *vtable; - apt_task_msg_pool_t *msg_pool; - mpf_engine_t *engine = apr_palloc(pool,sizeof(mpf_engine_t)); - engine->pool = pool; - engine->request_queue = NULL; - engine->context_factory = NULL; - engine->codec_manager = NULL; - - msg_pool = apt_task_msg_pool_create_dynamic(sizeof(mpf_message_container_t),pool); - - apt_log(APT_LOG_MARK,APT_PRIO_NOTICE,"Create Media Engine [%s]",id); - engine->task = apt_task_create(engine,msg_pool,pool); - if(!engine->task) { - return NULL; - } - - apt_task_name_set(engine->task,id); - - vtable = apt_task_vtable_get(engine->task); - if(vtable) { - vtable->destroy = mpf_engine_destroy; - vtable->start = mpf_engine_start; - vtable->terminate = mpf_engine_terminate; - vtable->signal_msg = mpf_engine_msg_signal; - vtable->process_msg = mpf_engine_msg_process; - } - - engine->task_msg_type = TASK_MSG_USER; - - engine->context_factory = mpf_context_factory_create(engine->pool); - engine->request_queue = apt_cyclic_queue_create(CYCLIC_QUEUE_DEFAULT_SIZE); - apr_thread_mutex_create(&engine->request_queue_guard,APR_THREAD_MUTEX_UNNESTED,engine->pool); - - engine->scheduler = mpf_scheduler_create(engine->pool); - mpf_scheduler_media_clock_set(engine->scheduler,CODEC_FRAME_TIME_BASE,mpf_engine_main,engine); - - engine->timer_queue = apt_timer_queue_create(engine->pool); - mpf_scheduler_timer_clock_set(engine->scheduler,MPF_TIMER_RESOLUTION,mpf_engine_timer_proc,engine); - return engine; -} - -MPF_DECLARE(mpf_context_t*) mpf_engine_context_create( - mpf_engine_t *engine, - const char *name, - void *obj, - apr_size_t max_termination_count, - apr_pool_t *pool) -{ - return mpf_context_create(engine->context_factory,name,obj,max_termination_count,pool); -} - -MPF_DECLARE(apt_bool_t) mpf_engine_context_destroy(mpf_context_t *context) -{ - return mpf_context_destroy(context); -} - -MPF_DECLARE(void*) mpf_engine_context_object_get(const mpf_context_t *context) -{ - return mpf_context_object_get(context); -} - -MPF_DECLARE(apt_task_t*) mpf_task_get(const mpf_engine_t *engine) -{ - return engine->task; -} - -MPF_DECLARE(void) mpf_engine_task_msg_type_set(mpf_engine_t *engine, apt_task_msg_type_e type) -{ - engine->task_msg_type = type; -} - -static mpf_message_t* mpf_engine_message_get(mpf_engine_t *engine, mpf_task_msg_t **task_msg) -{ - mpf_message_container_t *container; - mpf_message_t *mpf_message; - if(*task_msg) { - container = (mpf_message_container_t*) (*task_msg)->data; - if(container->count >= MAX_MPF_MESSAGE_COUNT) { - /* container has been already filled, - implicitly send the requests and get new task message */ - mpf_engine_message_send(engine,task_msg); - return mpf_engine_message_get(engine,task_msg); - } - } - else { - *task_msg = apt_task_msg_get(engine->task); - container = (mpf_message_container_t*) (*task_msg)->data; - container->count = 0; - } - - mpf_message = &container->messages[container->count]; - container->count++; - return mpf_message; -} - - -MPF_DECLARE(apt_bool_t) mpf_engine_termination_message_add( - mpf_engine_t *engine, - mpf_command_type_e command_id, - mpf_context_t *context, - mpf_termination_t *termination, - void *descriptor, - mpf_task_msg_t **task_msg) -{ - mpf_message_t *mpf_message = mpf_engine_message_get(engine,task_msg); - if(!mpf_message) { - return FALSE; - } - mpf_message->message_type = MPF_MESSAGE_TYPE_REQUEST; - mpf_message->command_id = command_id; - mpf_message->context = context; - mpf_message->termination = termination; - mpf_message->assoc_termination = NULL; - mpf_message->descriptor = descriptor; - return TRUE; -} - -MPF_DECLARE(apt_bool_t) mpf_engine_assoc_message_add( - mpf_engine_t *engine, - mpf_command_type_e command_id, - mpf_context_t *context, - mpf_termination_t *termination, - mpf_termination_t *assoc_termination, - mpf_task_msg_t **task_msg) -{ - mpf_message_t *mpf_message = mpf_engine_message_get(engine,task_msg); - if(!mpf_message) { - return FALSE; - } - mpf_message->message_type = MPF_MESSAGE_TYPE_REQUEST; - mpf_message->command_id = command_id; - mpf_message->context = context; - mpf_message->termination = termination; - mpf_message->assoc_termination = assoc_termination; - mpf_message->descriptor = NULL; - return TRUE; -} - -MPF_DECLARE(apt_bool_t) mpf_engine_topology_message_add( - mpf_engine_t *engine, - mpf_command_type_e command_id, - mpf_context_t *context, - mpf_task_msg_t **task_msg) -{ - mpf_message_t *mpf_message = mpf_engine_message_get(engine,task_msg); - if(!mpf_message) { - return FALSE; - } - mpf_message->message_type = MPF_MESSAGE_TYPE_REQUEST; - mpf_message->command_id = command_id; - mpf_message->context = context; - mpf_message->termination = NULL; - mpf_message->assoc_termination = NULL; - mpf_message->descriptor = NULL; - return TRUE; -} - -MPF_DECLARE(apt_bool_t) mpf_engine_message_send(mpf_engine_t *engine, mpf_task_msg_t **task_msg) -{ - apt_bool_t status = FALSE; - if(*task_msg) { - status = apt_task_msg_signal(engine->task,*task_msg); - *task_msg = NULL; - } - return status; -} - -static apt_bool_t mpf_engine_destroy(apt_task_t *task) -{ - mpf_engine_t *engine = apt_task_object_get(task); - - apt_timer_queue_destroy(engine->timer_queue); - mpf_scheduler_destroy(engine->scheduler); - mpf_context_factory_destroy(engine->context_factory); - apt_cyclic_queue_destroy(engine->request_queue); - apr_thread_mutex_destroy(engine->request_queue_guard); - return TRUE; -} - -static apt_bool_t mpf_engine_start(apt_task_t *task) -{ - mpf_engine_t *engine = apt_task_object_get(task); - - mpf_scheduler_start(engine->scheduler); - apt_task_start_request_process(task); - return TRUE; -} - -static apt_bool_t mpf_engine_terminate(apt_task_t *task) -{ - mpf_engine_t *engine = apt_task_object_get(task); - - mpf_scheduler_stop(engine->scheduler); - apt_task_terminate_request_process(task); - return TRUE; -} - -static apt_bool_t mpf_engine_event_raise(mpf_termination_t *termination, int event_id, void *descriptor) -{ - apt_task_msg_t *task_msg; - mpf_message_container_t *event_msg; - mpf_message_t *mpf_message; - mpf_engine_t *engine; - engine = termination->media_engine; - if(!engine) { - return FALSE; - } - - task_msg = apt_task_msg_get(engine->task); - if(!task_msg) { - return FALSE; - } - task_msg->type = engine->task_msg_type; - event_msg = (mpf_message_container_t*) task_msg->data; - mpf_message = event_msg->messages; - event_msg->count = 1; - - mpf_message->command_id = event_id; - mpf_message->message_type = MPF_MESSAGE_TYPE_EVENT; - mpf_message->status_code = MPF_STATUS_CODE_SUCCESS; - mpf_message->context = NULL; - mpf_message->termination = termination; - mpf_message->descriptor = descriptor; - - return apt_task_msg_parent_signal(engine->task,task_msg); -} - -static apt_bool_t mpf_engine_msg_signal(apt_task_t *task, apt_task_msg_t *msg) -{ - mpf_engine_t *engine = apt_task_object_get(task); - - apr_thread_mutex_lock(engine->request_queue_guard); - if(apt_cyclic_queue_push(engine->request_queue,msg) == FALSE) { - apt_log(APT_LOG_MARK,APT_PRIO_ERROR,"MPF Request Queue is Full [%s]",apt_task_name_get(task)); - } - apr_thread_mutex_unlock(engine->request_queue_guard); - return TRUE; -} - -static apt_bool_t mpf_engine_msg_process(apt_task_t *task, apt_task_msg_t *msg) -{ - apr_size_t i; - mpf_engine_t *engine = apt_task_object_get(task); - apt_task_msg_t *response_msg; - mpf_message_container_t *response; - mpf_message_t *mpf_response; - mpf_context_t *context; - mpf_termination_t *termination; - const mpf_message_t *mpf_request; - const mpf_message_container_t *request = (const mpf_message_container_t*) msg->data; - - response_msg = apt_task_msg_get(engine->task); - if(!response_msg) { - return FALSE; - } - response_msg->type = engine->task_msg_type; - response = (mpf_message_container_t*) response_msg->data; - *response = *request; - for(i=0; icount; i++) { - mpf_request = &request->messages[i]; - mpf_response = &response->messages[i]; - - if(mpf_request->message_type != MPF_MESSAGE_TYPE_REQUEST) { - apt_log(APT_LOG_MARK,APT_PRIO_WARNING,"Invalid MPF Message Type [%d]",mpf_request->message_type); - continue; - } - - mpf_response->message_type = MPF_MESSAGE_TYPE_RESPONSE; - mpf_response->status_code = MPF_STATUS_CODE_SUCCESS; - context = mpf_request->context; - termination = mpf_request->termination; - switch(mpf_request->command_id) { - case MPF_ADD_TERMINATION: - { - termination->media_engine = engine; - termination->event_handler = mpf_engine_event_raise; - termination->codec_manager = engine->codec_manager; - termination->timer_queue = engine->timer_queue; - - mpf_termination_add(termination,mpf_request->descriptor); - if(mpf_context_termination_add(context,termination) == FALSE) { - mpf_termination_subtract(termination); - mpf_response->status_code = MPF_STATUS_CODE_FAILURE; - break; - } - break; - } - case MPF_MODIFY_TERMINATION: - { - mpf_termination_modify(termination,mpf_request->descriptor); - break; - } - case MPF_SUBTRACT_TERMINATION: - { - if(mpf_context_termination_subtract(context,termination) == FALSE) { - mpf_response->status_code = MPF_STATUS_CODE_FAILURE; - break; - } - mpf_termination_subtract(termination); - break; - } - case MPF_ADD_ASSOCIATION: - { - mpf_context_association_add(context,termination,mpf_request->assoc_termination); - break; - } - case MPF_REMOVE_ASSOCIATION: - { - mpf_context_association_remove(context,termination,mpf_request->assoc_termination); - break; - } - case MPF_RESET_ASSOCIATIONS: - { - mpf_context_associations_reset(context); - break; - } - case MPF_APPLY_TOPOLOGY: - { - mpf_context_topology_apply(context); - break; - } - case MPF_DESTROY_TOPOLOGY: - { - mpf_context_topology_destroy(context); - break; - } - default: - { - mpf_response->status_code = MPF_STATUS_CODE_FAILURE; - } - } - } - - return apt_task_msg_parent_signal(engine->task,response_msg); -} - -static void mpf_engine_main(mpf_scheduler_t *scheduler, void *obj) -{ - mpf_engine_t *engine = obj; - apt_task_msg_t *msg; - - /* process request queue */ - apr_thread_mutex_lock(engine->request_queue_guard); - msg = apt_cyclic_queue_pop(engine->request_queue); - while(msg) { - apr_thread_mutex_unlock(engine->request_queue_guard); - apt_task_msg_process(engine->task,msg); - apr_thread_mutex_lock(engine->request_queue_guard); - msg = apt_cyclic_queue_pop(engine->request_queue); - } - apr_thread_mutex_unlock(engine->request_queue_guard); - - /* process factory of media contexts */ - mpf_context_factory_process(engine->context_factory); -} - -static void mpf_engine_timer_proc(mpf_scheduler_t *scheduler, void *obj) -{ - mpf_engine_t *engine = obj; - apt_timer_queue_advance(engine->timer_queue,MPF_TIMER_RESOLUTION); -} - -MPF_DECLARE(mpf_codec_manager_t*) mpf_engine_codec_manager_create(apr_pool_t *pool) -{ - mpf_codec_manager_t *codec_manager = mpf_codec_manager_create(4,pool); - if(codec_manager) { - mpf_codec_t *codec; - - codec = mpf_codec_g711u_create(pool); - mpf_codec_manager_codec_register(codec_manager,codec); - - codec = mpf_codec_g711a_create(pool); - mpf_codec_manager_codec_register(codec_manager,codec); - - codec = mpf_codec_l16_create(pool); - mpf_codec_manager_codec_register(codec_manager,codec); - } - return codec_manager; -} - -MPF_DECLARE(apt_bool_t) mpf_engine_codec_manager_register(mpf_engine_t *engine, const mpf_codec_manager_t *codec_manager) -{ - engine->codec_manager = codec_manager; - return TRUE; -} - -MPF_DECLARE(apt_bool_t) mpf_engine_scheduler_rate_set(mpf_engine_t *engine, unsigned long rate) -{ - return mpf_scheduler_rate_set(engine->scheduler,rate); -} - -MPF_DECLARE(const char*) mpf_engine_id_get(const mpf_engine_t *engine) -{ - return apt_task_name_get(engine->task); -} diff --git a/libs/unimrcp/libs/mpf/src/mpf_engine_factory.c b/libs/unimrcp/libs/mpf/src/mpf_engine_factory.c deleted file mode 100644 index 91174dce949..00000000000 --- a/libs/unimrcp/libs/mpf/src/mpf_engine_factory.c +++ /dev/null @@ -1,78 +0,0 @@ -/* - * Copyright 2008-2014 Arsen Chaloyan - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - * - * $Id: mpf_engine_factory.c 2136 2014-07-04 06:33:36Z achaloyan@gmail.com $ - */ - -#include -#include "mpf_engine_factory.h" -#include "mpf_termination_factory.h" - -/** Factory of media engines */ -struct mpf_engine_factory_t { - /** Array of pointers to media engines */ - apr_array_header_t *engines_arr; - /** Index of the current engine */ - int index; -}; - -/** Create factory of media engines. */ -MPF_DECLARE(mpf_engine_factory_t*) mpf_engine_factory_create(apr_pool_t *pool) -{ - mpf_engine_factory_t *mpf_factory = apr_palloc(pool,sizeof(mpf_engine_factory_t)); - mpf_factory->engines_arr = apr_array_make(pool,1,sizeof(mpf_engine_t*)); - mpf_factory->index = 0; - return mpf_factory; -} - -/** Add media engine to factory. */ -MPF_DECLARE(apt_bool_t) mpf_engine_factory_engine_add(mpf_engine_factory_t *mpf_factory, mpf_engine_t *media_engine) -{ - mpf_engine_t **slot; - if(!media_engine) - return FALSE; - - slot = apr_array_push(mpf_factory->engines_arr); - *slot = media_engine; - return TRUE; -} - -/** Determine whether factory is empty. */ -MPF_DECLARE(apt_bool_t) mpf_engine_factory_is_empty(const mpf_engine_factory_t *mpf_factory) -{ - return apr_is_empty_array(mpf_factory->engines_arr); -} - -/** Select next available media engine. */ -MPF_DECLARE(mpf_engine_t*) mpf_engine_factory_engine_select(mpf_engine_factory_t *mpf_factory) -{ - mpf_engine_t *media_engine = APR_ARRAY_IDX(mpf_factory->engines_arr, mpf_factory->index, mpf_engine_t*); - if(++mpf_factory->index == mpf_factory->engines_arr->nelts) { - mpf_factory->index = 0; - } - return media_engine; -} - -/** Associate media engines with RTP termination factory. */ -MPF_DECLARE(apt_bool_t) mpf_engine_factory_rtp_factory_assign(mpf_engine_factory_t *mpf_factory, mpf_termination_factory_t *rtp_factory) -{ - int i; - mpf_engine_t *media_engine; - for(i=0; iengines_arr->nelts; i++) { - media_engine = APR_ARRAY_IDX(mpf_factory->engines_arr, i, mpf_engine_t*); - mpf_termination_factory_engine_assign(rtp_factory,media_engine); - } - return TRUE; -} diff --git a/libs/unimrcp/libs/mpf/src/mpf_file_termination_factory.c b/libs/unimrcp/libs/mpf/src/mpf_file_termination_factory.c deleted file mode 100644 index e6170a6aa82..00000000000 --- a/libs/unimrcp/libs/mpf/src/mpf_file_termination_factory.c +++ /dev/null @@ -1,86 +0,0 @@ -/* - * Copyright 2008-2014 Arsen Chaloyan - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - * - * $Id: mpf_file_termination_factory.c 2136 2014-07-04 06:33:36Z achaloyan@gmail.com $ - */ - -#include "mpf_termination.h" -#include "mpf_file_termination_factory.h" -#include "mpf_audio_file_stream.h" - -static apt_bool_t mpf_file_termination_destroy(mpf_termination_t *termination) -{ - return TRUE; -} - -static apt_bool_t mpf_file_termination_add(mpf_termination_t *termination, void *descriptor) -{ - apt_bool_t status = TRUE; - mpf_audio_stream_t *audio_stream = termination->audio_stream; - if(!audio_stream) { - audio_stream = mpf_file_stream_create(termination,termination->pool); - if(!audio_stream) { - return FALSE; - } - termination->audio_stream = audio_stream; - } - - if(descriptor) { - status = mpf_file_stream_modify(audio_stream,descriptor); - } - return status; -} - -static apt_bool_t mpf_file_termination_modify(mpf_termination_t *termination, void *descriptor) -{ - apt_bool_t status = TRUE; - mpf_audio_stream_t *audio_stream = termination->audio_stream; - if(!audio_stream) { - return FALSE; - } - - if(descriptor) { - status = mpf_file_stream_modify(audio_stream,descriptor); - } - return status; -} - -static apt_bool_t mpf_file_termination_subtract(mpf_termination_t *termination) -{ - return TRUE; -} - -static const mpf_termination_vtable_t file_vtable = { - mpf_file_termination_destroy, - mpf_file_termination_add, - mpf_file_termination_modify, - mpf_file_termination_subtract -}; - -static mpf_termination_t* mpf_file_termination_create( - mpf_termination_factory_t *termination_factory, - void *obj, - apr_pool_t *pool) -{ - return mpf_termination_base_create(termination_factory,obj,&file_vtable,NULL,NULL,pool); -} - -MPF_DECLARE(mpf_termination_factory_t*) mpf_file_termination_factory_create(apr_pool_t *pool) -{ - mpf_termination_factory_t *file_termination_factory = apr_palloc(pool,sizeof(mpf_termination_factory_t)); - file_termination_factory->create_termination = mpf_file_termination_create; - file_termination_factory->assign_engine = NULL; - return file_termination_factory; -} diff --git a/libs/unimrcp/libs/mpf/src/mpf_frame_buffer.c b/libs/unimrcp/libs/mpf/src/mpf_frame_buffer.c deleted file mode 100644 index 3669db37c2b..00000000000 --- a/libs/unimrcp/libs/mpf/src/mpf_frame_buffer.c +++ /dev/null @@ -1,184 +0,0 @@ -/* - * Copyright 2008-2014 Arsen Chaloyan - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - * - * $Id: mpf_frame_buffer.c 2136 2014-07-04 06:33:36Z achaloyan@gmail.com $ - */ - -#include "mpf_frame_buffer.h" - -struct mpf_frame_buffer_t { - apr_byte_t *raw_data; - mpf_frame_t *frames; - apr_size_t frame_count; - apr_size_t frame_size; - - apr_size_t write_pos; - apr_size_t read_pos; - - apr_thread_mutex_t *guard; - apr_pool_t *pool; - -#ifdef MPF_FRAME_BUFFER_DEBUG - FILE *utt_in; - FILE *utt_out; -#endif -}; - - -mpf_frame_buffer_t* mpf_frame_buffer_create(apr_size_t frame_size, apr_size_t frame_count, apr_pool_t *pool) -{ - apr_size_t i; - mpf_frame_t *frame; - mpf_frame_buffer_t *buffer = apr_palloc(pool,sizeof(mpf_frame_buffer_t)); - buffer->pool = pool; - - buffer->frame_size = frame_size; - buffer->frame_count = frame_count; - buffer->raw_data = apr_palloc(pool,buffer->frame_size*buffer->frame_count); - buffer->frames = apr_palloc(pool,sizeof(mpf_frame_t)*buffer->frame_count); - for(i=0; iframe_count; i++) { - frame = &buffer->frames[i]; - frame->type = MEDIA_FRAME_TYPE_NONE; - frame->marker = MPF_MARKER_NONE; - frame->codec_frame.buffer = buffer->raw_data + i*buffer->frame_size; - } - - buffer->write_pos = buffer->read_pos = 0; - apr_thread_mutex_create(&buffer->guard,APR_THREAD_MUTEX_UNNESTED,pool); - -#ifdef MPF_FRAME_BUFFER_DEBUG - buffer->utt_in = NULL; - buffer->utt_out = NULL; -#endif - return buffer; -} - -#ifdef MPF_FRAME_BUFFER_DEBUG -static apr_status_t mpf_frame_buffer_file_close(void *obj) -{ - mpf_frame_buffer_t *buffer = obj; - if(buffer->utt_out) { - fclose(buffer->utt_out); - buffer->utt_out = NULL; - } - if(buffer->utt_in) { - fclose(buffer->utt_in); - buffer->utt_in = NULL; - } - return APR_SUCCESS; -} - -apt_bool_t mpf_frame_buffer_file_open(mpf_frame_buffer_t *buffer, const char *utt_file_in, const char *utt_file_out) -{ - buffer->utt_in = fopen(utt_file_in,"wb"); - if(!buffer->utt_in) - return FALSE; - - buffer->utt_out = fopen(utt_file_out,"wb"); - if(!buffer->utt_out) - return FALSE; - - apr_pool_cleanup_register(buffer->pool,buffer,mpf_frame_buffer_file_close,NULL); - return TRUE; -} -#endif - -void mpf_frame_buffer_destroy(mpf_frame_buffer_t *buffer) -{ - if(buffer->guard) { - apr_thread_mutex_destroy(buffer->guard); - buffer->guard = NULL; - } -} - -apt_bool_t mpf_frame_buffer_restart(mpf_frame_buffer_t *buffer) -{ - buffer->write_pos = buffer->read_pos; - return TRUE; -} - -static APR_INLINE mpf_frame_t* mpf_frame_buffer_frame_get(mpf_frame_buffer_t *buffer, apr_size_t pos) -{ - apr_size_t index = pos % buffer->frame_count; - return &buffer->frames[index]; -} - -apt_bool_t mpf_frame_buffer_write(mpf_frame_buffer_t *buffer, const mpf_frame_t *frame) -{ - mpf_frame_t *write_frame; - void *data = frame->codec_frame.buffer; - apr_size_t size = frame->codec_frame.size; - -#ifdef MPF_FRAME_BUFFER_DEBUG - if(buffer->utt_in) { - fwrite(data,1,size,buffer->utt_in); - } -#endif - - apr_thread_mutex_lock(buffer->guard); - while(buffer->write_pos - buffer->read_pos < buffer->frame_count && size >= buffer->frame_size) { - write_frame = mpf_frame_buffer_frame_get(buffer,buffer->write_pos); - write_frame->type = frame->type; - write_frame->codec_frame.size = buffer->frame_size; - memcpy( - write_frame->codec_frame.buffer, - data, - write_frame->codec_frame.size); - - data = (char*)data + buffer->frame_size; - size -= buffer->frame_size; - buffer->write_pos ++; - } - - apr_thread_mutex_unlock(buffer->guard); - /* if size != 0 => non frame alligned or buffer is full */ - return size == 0 ? TRUE : FALSE; -} - -apt_bool_t mpf_frame_buffer_read(mpf_frame_buffer_t *buffer, mpf_frame_t *media_frame) -{ - apr_thread_mutex_lock(buffer->guard); - if(buffer->write_pos > buffer->read_pos) { - /* normal read */ - mpf_frame_t *src_media_frame = mpf_frame_buffer_frame_get(buffer,buffer->read_pos); - media_frame->type = src_media_frame->type; - media_frame->marker = src_media_frame->marker; - if(media_frame->type & MEDIA_FRAME_TYPE_AUDIO) { - media_frame->codec_frame.size = src_media_frame->codec_frame.size; - memcpy( - media_frame->codec_frame.buffer, - src_media_frame->codec_frame.buffer, - media_frame->codec_frame.size); -#ifdef MPF_FRAME_BUFFER_DEBUG - if(buffer->utt_out) { - fwrite(media_frame->codec_frame.buffer,1,media_frame->codec_frame.size,buffer->utt_out); - } -#endif - } - if(media_frame->type & MEDIA_FRAME_TYPE_EVENT) { - media_frame->event_frame = src_media_frame->event_frame; - } - src_media_frame->type = MEDIA_FRAME_TYPE_NONE; - src_media_frame->marker = MPF_MARKER_NONE; - buffer->read_pos ++; - } - else { - /* underflow */ - media_frame->type = MEDIA_FRAME_TYPE_NONE; - media_frame->marker = MPF_MARKER_NONE; - } - apr_thread_mutex_unlock(buffer->guard); - return TRUE; -} diff --git a/libs/unimrcp/libs/mpf/src/mpf_jitter_buffer.c b/libs/unimrcp/libs/mpf/src/mpf_jitter_buffer.c deleted file mode 100644 index f84521a3366..00000000000 --- a/libs/unimrcp/libs/mpf/src/mpf_jitter_buffer.c +++ /dev/null @@ -1,510 +0,0 @@ -/* - * Copyright 2008-2014 Arsen Chaloyan - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - * - * $Id: mpf_jitter_buffer.c 2136 2014-07-04 06:33:36Z achaloyan@gmail.com $ - */ - -#include "mpf_jitter_buffer.h" -#include "mpf_trace.h" - -#if ENABLE_JB_TRACE == 1 -#define JB_TRACE printf -#elif ENABLE_JB_TRACE == 2 -#define JB_TRACE mpf_debug_output_trace -#else -#define JB_TRACE mpf_null_trace -#endif - -struct mpf_jitter_buffer_t { - /* jitter buffer config */ - mpf_jb_config_t *config; - /* codec to be used to dissect payload */ - mpf_codec_t *codec; - - /* cyclic raw data */ - apr_byte_t *raw_data; - /* frames (out of raw data) */ - mpf_frame_t *frames; - /* number of frames */ - apr_size_t frame_count; - /* frame timestamp units (samples) */ - apr_uint32_t frame_ts; - /* frame size in bytes */ - apr_size_t frame_size; - - /* playout delay in timetsamp units */ - apr_uint32_t playout_delay_ts; - /* max playout delay in timetsamp units */ - apr_uint32_t max_playout_delay_ts; - - /* write should be synchronized (offset calculated) */ - apr_byte_t write_sync; - /* write timestamp offset */ - apr_int32_t write_ts_offset; - - /* write pointer in timestamp units */ - apr_uint32_t write_ts; - /* read pointer in timestamp units */ - apr_uint32_t read_ts; - - /* min length of the buffer in timestamp units */ - apr_int32_t min_length_ts; - /* max length of the buffer in timestamp units */ - apr_int32_t max_length_ts; - /* number of statistical measurements made */ - apr_uint32_t measurment_count; - - /* timestamp event starts at */ - apr_uint32_t event_write_base_ts; - /* the first (base) frame of the event */ - mpf_named_event_frame_t event_write_base; - /* the last received update for the event */ - const mpf_named_event_frame_t *event_write_update; -}; - - -mpf_jitter_buffer_t* mpf_jitter_buffer_create(mpf_jb_config_t *jb_config, mpf_codec_descriptor_t *descriptor, mpf_codec_t *codec, apr_pool_t *pool) -{ - size_t i; - mpf_frame_t *frame; - mpf_jitter_buffer_t *jb = apr_palloc(pool,sizeof(mpf_jitter_buffer_t)); - if(!jb_config) { - /* create default jb config */ - jb_config = apr_palloc(pool,sizeof(mpf_jb_config_t)); - mpf_jb_config_init(jb_config); - } - /* validate jb config */ - if(jb_config->min_playout_delay > jb_config->initial_playout_delay) { - jb_config->min_playout_delay = jb_config->initial_playout_delay; - } - if(jb_config->max_playout_delay < jb_config->initial_playout_delay) { - jb_config->max_playout_delay = 2 * jb_config->initial_playout_delay; - } - if(jb_config->max_playout_delay == 0) { - jb_config->max_playout_delay = 600; /* ms */ - } - - jb->config = jb_config; - jb->codec = codec; - - /* calculate and allocate frame related data */ - jb->frame_ts = (apr_uint32_t)mpf_codec_frame_samples_calculate(descriptor); - jb->frame_size = mpf_codec_frame_size_calculate(descriptor,codec->attribs); - jb->frame_count = jb->config->max_playout_delay / CODEC_FRAME_TIME_BASE; - jb->raw_data = apr_palloc(pool,jb->frame_size*jb->frame_count); - jb->frames = apr_palloc(pool,sizeof(mpf_frame_t)*jb->frame_count); - for(i=0; iframe_count; i++) { - frame = &jb->frames[i]; - frame->type = MEDIA_FRAME_TYPE_NONE; - frame->marker = MPF_MARKER_NONE; - frame->codec_frame.buffer = jb->raw_data + i*jb->frame_size; - } - - if(jb->config->initial_playout_delay % CODEC_FRAME_TIME_BASE != 0) { - jb->config->initial_playout_delay += CODEC_FRAME_TIME_BASE - jb->config->initial_playout_delay % CODEC_FRAME_TIME_BASE; - } - - /* calculate playout delay in timestamp units */ - jb->playout_delay_ts = jb->frame_ts * jb->config->initial_playout_delay / CODEC_FRAME_TIME_BASE; - jb->max_playout_delay_ts = jb->frame_ts * jb->config->max_playout_delay / CODEC_FRAME_TIME_BASE; - - jb->write_sync = 1; - jb->write_ts_offset = 0; - jb->write_ts = jb->read_ts = 0; - - jb->min_length_ts = jb->max_length_ts = 0; - jb->measurment_count = 0; - - jb->event_write_base_ts = 0; - memset(&jb->event_write_base,0,sizeof(mpf_named_event_frame_t)); - jb->event_write_update = NULL; - - return jb; -} - -void mpf_jitter_buffer_destroy(mpf_jitter_buffer_t *jb) -{ -} - -apt_bool_t mpf_jitter_buffer_restart(mpf_jitter_buffer_t *jb) -{ - jb->write_sync = 1; - jb->write_ts_offset = 0; - jb->write_ts = jb->read_ts; - - jb->event_write_base_ts = 0; - memset(&jb->event_write_base,0,sizeof(mpf_named_event_frame_t)); - jb->event_write_update = NULL; - - if(jb->config->adaptive && jb->playout_delay_ts == jb->max_playout_delay_ts) { - jb->playout_delay_ts = jb->frame_ts * jb->config->initial_playout_delay / CODEC_FRAME_TIME_BASE; - } - - JB_TRACE("JB restart\n"); - return TRUE; -} - -static APR_INLINE mpf_frame_t* mpf_jitter_buffer_frame_get(mpf_jitter_buffer_t *jb, apr_size_t ts) -{ - apr_size_t index = (ts / jb->frame_ts) % jb->frame_count; - return &jb->frames[index]; -} - -static APR_INLINE void mpf_jitter_buffer_stat_update(mpf_jitter_buffer_t *jb) -{ - apr_int32_t length_ts; - - if(jb->measurment_count == 50) { - /* start over after every N measurements */ - apr_int32_t mean_length_ts = jb->min_length_ts + (jb->max_length_ts - jb->min_length_ts) / 2; - JB_TRACE("JB stat length [%d : %d] playout delay=%u\n", - jb->min_length_ts,jb->max_length_ts,jb->playout_delay_ts); - jb->min_length_ts = jb->max_length_ts = mean_length_ts; - jb->measurment_count = 0; - } - - /* calculate current length of the buffer */ - length_ts = jb->write_ts - jb->read_ts; - if(length_ts > jb->max_length_ts) { - /* update max length */ - jb->max_length_ts = length_ts; - } - else if(length_ts < jb->min_length_ts) { - /* update min length */ - jb->min_length_ts = length_ts; - } - /* increment the counter after every stat update */ - jb->measurment_count++; -} - -static APR_INLINE void mpf_jitter_buffer_frame_allign(mpf_jitter_buffer_t *jb, apr_uint32_t *ts) -{ - if(*ts % jb->frame_ts != 0) - *ts -= *ts % jb->frame_ts; -} - -static APR_INLINE jb_result_t mpf_jitter_buffer_write_prepare(mpf_jitter_buffer_t *jb, apr_uint32_t ts, apr_uint32_t *write_ts) -{ - if(jb->write_sync) { - JB_TRACE("JB write sync playout delay=%u\n",jb->playout_delay_ts); - /* calculate the offset */ - jb->write_ts_offset = ts - jb->read_ts; - jb->write_sync = 0; - - if(jb->config->time_skew_detection) { - /* reset the statistics */ - jb->min_length_ts = jb->max_length_ts = jb->playout_delay_ts; - jb->measurment_count = 0; - } - } - - /* calculate the write pos taking into account current offset and playout delay */ - *write_ts = ts - jb->write_ts_offset + jb->playout_delay_ts; - if(*write_ts % jb->frame_ts != 0) { - /* allign with frame_ts */ - apr_uint32_t delta_ts = *write_ts % jb->frame_ts; - JB_TRACE("JB write allign ts=%u delta_ts=-%u\n",*write_ts,delta_ts); - *write_ts -= delta_ts; - } - return JB_OK; -} - -jb_result_t mpf_jitter_buffer_write(mpf_jitter_buffer_t *jb, void *buffer, apr_size_t size, apr_uint32_t ts, apr_byte_t marker) -{ - mpf_frame_t *media_frame; - apr_uint32_t write_ts; - apr_size_t available_frame_count; - jb_result_t result; - - if(marker) { - JB_TRACE("JB marker\n"); - /* new talkspurt detected => test whether the buffer is empty */ - if(jb->write_ts <= jb->read_ts) { - /* resync */ - jb->write_sync = 1; - } - } - - /* calculate write_ts */ - result = mpf_jitter_buffer_write_prepare(jb,ts,&write_ts); - if(result != JB_OK) { - return result; - } - - if(write_ts >= jb->read_ts) { - if(write_ts >= jb->write_ts) { - /* normal order */ - } - else { - /* out of order */ - } - } - else { - apr_uint32_t delta_ts; - /* packet arrived too late */ - if(write_ts < jb->write_ts) { - /* out of order => discard */ - JB_TRACE("JB write ts=%u out of order, too late => discard\n",write_ts); - return JB_DISCARD_TOO_LATE; - } - - /* calculate a minimal adjustment needed in order to place the packet into the buffer */ - delta_ts = jb->read_ts - write_ts; - - if(jb->config->time_skew_detection) { - JB_TRACE("JB stat length [%d : %d] playout delay=%u delta=%u\n", - jb->min_length_ts,jb->max_length_ts,jb->playout_delay_ts,delta_ts); - - if((apr_uint32_t)(jb->max_length_ts - jb->min_length_ts) > jb->playout_delay_ts + delta_ts) { - /* update the adjustment based on the collected statistics */ - delta_ts = (apr_uint32_t)(jb->max_length_ts - jb->min_length_ts) - jb->playout_delay_ts; - mpf_jitter_buffer_frame_allign(jb,&delta_ts); - } - - /* determine if there might be a time skew or not */ - if(jb->max_length_ts > 0 && (apr_uint32_t)jb->max_length_ts < jb->playout_delay_ts) { - /* calculate the time skew */ - apr_uint32_t skew_ts = jb->playout_delay_ts - jb->max_length_ts; - mpf_jitter_buffer_frame_allign(jb,&skew_ts); - JB_TRACE("JB time skew detected offset=%u\n",skew_ts); - - /* adjust the offset and write pos */ - jb->write_ts_offset -= skew_ts; - write_ts = ts - jb->write_ts_offset + jb->playout_delay_ts; - - /* adjust the statistics */ - jb->min_length_ts += skew_ts; - jb->max_length_ts += skew_ts; - - if(skew_ts < delta_ts) { - delta_ts -= skew_ts; - } - else { - delta_ts = 0; - } - } - } - - if(delta_ts) { - if(jb->config->adaptive == 0) { - /* jitter buffer is not adaptive => discard the packet */ - JB_TRACE("JB write ts=%u too late => discard\n",write_ts); - return JB_DISCARD_TOO_LATE; - } - - if(jb->playout_delay_ts + delta_ts > jb->max_playout_delay_ts) { - /* max playout delay will be reached => discard the packet */ - JB_TRACE("JB write ts=%u max playout delay reached => discard\n",write_ts); - return JB_DISCARD_TOO_LATE; - } - - /* adjust the playout delay */ - jb->playout_delay_ts += delta_ts; - write_ts += delta_ts; - JB_TRACE("JB adjust playout delay=%u delta=%u\n",jb->playout_delay_ts,delta_ts); - - if(jb->config->time_skew_detection) { - /* adjust the statistics */ - jb->min_length_ts += delta_ts; - jb->max_length_ts += delta_ts; - } - } - } - - /* get number of frames available to write */ - available_frame_count = jb->frame_count - (write_ts - jb->read_ts)/jb->frame_ts; - if(available_frame_count <= 0) { - /* too early */ - JB_TRACE("JB write ts=%u too early => discard\n",write_ts); - return JB_DISCARD_TOO_EARLY; - } - - JB_TRACE("JB write ts=%u size=%"APR_SIZE_T_FMT"\n",write_ts,size); - while(available_frame_count && size) { - media_frame = mpf_jitter_buffer_frame_get(jb,write_ts); - media_frame->codec_frame.size = jb->frame_size; - if(mpf_codec_dissect(jb->codec,&buffer,&size,&media_frame->codec_frame) == FALSE) { - break; - } - - media_frame->type |= MEDIA_FRAME_TYPE_AUDIO; - write_ts += jb->frame_ts; - available_frame_count--; - } - - if(size) { - /* no frame available to write, but some data remains in buffer (partialy too early) */ - } - - if(write_ts > jb->write_ts) { - /* advance write pos */ - jb->write_ts = write_ts; - } - return result; -} - -jb_result_t mpf_jitter_buffer_event_write(mpf_jitter_buffer_t *jb, const mpf_named_event_frame_t *named_event, apr_uint32_t ts, apr_byte_t marker) -{ - mpf_frame_t *media_frame; - apr_uint32_t write_ts; - jb_result_t result = mpf_jitter_buffer_write_prepare(jb,ts,&write_ts); - if(result != JB_OK) { - return result; - } - - /* new event detection */ - if(!marker) { - if(jb->event_write_base.event_id != named_event->event_id || !jb->event_write_update) { - /* new event detected, marker is missing though */ - marker = 1; - } - else if(jb->event_write_base_ts != write_ts) { - /* detect whether this is a new segment of the same event or new event with missing marker - assuming a threshold which equals to 4 frames */ - if(write_ts > jb->event_write_base_ts + jb->event_write_update->duration + 4*jb->frame_ts) { - /* new event detected, marker is missing though */ - marker = 1; - } - else { - /* new segment of the same long-lasting event detected */ - jb->event_write_base = *named_event; - jb->event_write_update = &jb->event_write_base; - jb->event_write_base_ts = write_ts; - } - } - } - if(marker) { - /* new event */ - jb->event_write_base = *named_event; - jb->event_write_update = &jb->event_write_base; - jb->event_write_base_ts = write_ts; - } - else { - /* an update */ - if(named_event->duration < jb->event_write_update->duration) { - /* ignore this update, it's something from the past, which makes no sense now */ - return JB_OK; - } - else if(named_event->duration == jb->event_write_update->duration) { - /* this should be a retransmission, let it go through only if it contains new data */ - if(jb->event_write_update->edge == 1 || jb->event_write_update->edge == named_event->edge) { - /* ignore this update since either the end of event marker has already been set, - or the current event provides no updates */ - return JB_OK; - } - } - - /* calculate position in jitter buffer considering the last received event (update) */ - write_ts += jb->event_write_update->duration; - } - - if(write_ts < jb->read_ts) { - /* too late */ - apr_uint32_t delta_ts; - if(jb->config->adaptive == 0) { - /* jitter buffer is not adaptive => discard the packet */ - JB_TRACE("JB write ts=%u event=%d duration=%d too late => discard\n", - write_ts,named_event->event_id,named_event->duration); - return JB_DISCARD_TOO_LATE; - } - - /* calculate a minimal adjustment needed in order to place the packet into the buffer */ - delta_ts = jb->read_ts - write_ts; - - if(jb->playout_delay_ts + delta_ts > jb->max_playout_delay_ts) { - /* max playout delay will be reached => discard the packet */ - JB_TRACE("JB write ts=%u event=%d duration=%d max playout delay reached => discard\n", - write_ts,named_event->event_id,named_event->duration); - return JB_DISCARD_TOO_LATE; - } - - /* adjust the playout delay */ - jb->playout_delay_ts += delta_ts; - write_ts += delta_ts; - if(marker) { - jb->event_write_base_ts = write_ts; - } - JB_TRACE("JB adjust playout delay=%u delta=%u\n",jb->playout_delay_ts,delta_ts); - } - else if( (write_ts - jb->read_ts)/jb->frame_ts >= jb->frame_count) { - /* too early */ - JB_TRACE("JB write ts=%u event=%d duration=%d too early => discard\n", - write_ts,named_event->event_id,named_event->duration); - return JB_DISCARD_TOO_EARLY; - } - - media_frame = mpf_jitter_buffer_frame_get(jb,write_ts); - media_frame->event_frame = *named_event; - media_frame->type |= MEDIA_FRAME_TYPE_EVENT; - if(marker) { - media_frame->marker = MPF_MARKER_START_OF_EVENT; - } - else if(named_event->edge == 1) { - media_frame->marker = MPF_MARKER_END_OF_EVENT; - } - JB_TRACE("JB write ts=%u event=%d duration=%d marker=%d\n", - write_ts,named_event->event_id,named_event->duration,media_frame->marker); - jb->event_write_update = &media_frame->event_frame; - - write_ts += jb->frame_ts; - if(write_ts > jb->write_ts) { - /* advance write pos */ - jb->write_ts = write_ts; - } - return result; -} - -apt_bool_t mpf_jitter_buffer_read(mpf_jitter_buffer_t *jb, mpf_frame_t *media_frame) -{ - mpf_frame_t *src_media_frame = mpf_jitter_buffer_frame_get(jb,jb->read_ts); - if(jb->write_ts > jb->read_ts) { - /* normal read */ - JB_TRACE("JB read ts=%u\n", jb->read_ts); - media_frame->type = src_media_frame->type; - media_frame->marker = src_media_frame->marker; - if(media_frame->type & MEDIA_FRAME_TYPE_AUDIO) { - media_frame->codec_frame.size = src_media_frame->codec_frame.size; - memcpy(media_frame->codec_frame.buffer,src_media_frame->codec_frame.buffer,media_frame->codec_frame.size); - } - if(media_frame->type & MEDIA_FRAME_TYPE_EVENT) { - media_frame->event_frame = src_media_frame->event_frame; - } - } - else { - /* underflow */ - JB_TRACE("JB read ts=%u underflow\n", jb->read_ts); - media_frame->type = MEDIA_FRAME_TYPE_NONE; - media_frame->marker = MPF_MARKER_NONE; - } - src_media_frame->type = MEDIA_FRAME_TYPE_NONE; - src_media_frame->marker = MPF_MARKER_NONE; - /* advance read pos */ - jb->read_ts += jb->frame_ts; - - if(jb->config->time_skew_detection) { - /* update statistics after every read */ - mpf_jitter_buffer_stat_update(jb); - } - return TRUE; -} - -apr_uint32_t mpf_jitter_buffer_playout_delay_get(const mpf_jitter_buffer_t *jb) -{ - if(jb->config->adaptive == 0) { - return jb->config->initial_playout_delay; - } - - return jb->playout_delay_ts * CODEC_FRAME_TIME_BASE / jb->frame_ts; -} diff --git a/libs/unimrcp/libs/mpf/src/mpf_mixer.c b/libs/unimrcp/libs/mpf/src/mpf_mixer.c deleted file mode 100644 index d4c5b3029dd..00000000000 --- a/libs/unimrcp/libs/mpf/src/mpf_mixer.c +++ /dev/null @@ -1,210 +0,0 @@ -/* - * Copyright 2008-2014 Arsen Chaloyan - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - * - * $Id: mpf_mixer.c 2136 2014-07-04 06:33:36Z achaloyan@gmail.com $ - */ - -#include "mpf_mixer.h" -#include "mpf_encoder.h" -#include "mpf_decoder.h" -#include "mpf_resampler.h" -#include "mpf_codec_manager.h" -#include "apt_log.h" - -typedef struct mpf_mixer_t mpf_mixer_t; - -/** MPF mixer derived from MPF object */ -struct mpf_mixer_t { - /** MPF mixer base */ - mpf_object_t base; - /** Array of audio sources */ - mpf_audio_stream_t **source_arr; - /** Number of audio sources */ - apr_size_t source_count; - /** Audio sink */ - mpf_audio_stream_t *sink; - - /** Frame to read from audio source */ - mpf_frame_t frame; - /** Mixed frame to write to audio sink */ - mpf_frame_t mix_frame; -}; - -static apt_bool_t mpf_frames_mix(mpf_frame_t *mix_frame, const mpf_frame_t *frame) -{ - apr_size_t i; - apr_int16_t *mix_buf = mix_frame->codec_frame.buffer; - const apr_int16_t *buf = frame->codec_frame.buffer; - apr_size_t samples = frame->codec_frame.size / sizeof(apr_int16_t); - - if(mix_frame->codec_frame.size != frame->codec_frame.size) { - return FALSE; - } - - if((frame->type & MEDIA_FRAME_TYPE_AUDIO) == MEDIA_FRAME_TYPE_AUDIO) { - for(i=0; itype |= MEDIA_FRAME_TYPE_AUDIO; - } - - return TRUE; -} - -static apt_bool_t mpf_mixer_process(mpf_object_t *object) -{ - apr_size_t i; - mpf_audio_stream_t *source; - mpf_mixer_t *mixer = (mpf_mixer_t*) object; - - mixer->mix_frame.type = MEDIA_FRAME_TYPE_NONE; - mixer->mix_frame.marker = MPF_MARKER_NONE; - memset(mixer->mix_frame.codec_frame.buffer,0,mixer->mix_frame.codec_frame.size); - for(i=0; isource_count; i++) { - source = mixer->source_arr[i]; - if(source) { - mixer->frame.type = MEDIA_FRAME_TYPE_NONE; - mixer->frame.marker = MPF_MARKER_NONE; - source->vtable->read_frame(source,&mixer->frame); - mpf_frames_mix(&mixer->mix_frame,&mixer->frame); - } - } - mixer->sink->vtable->write_frame(mixer->sink,&mixer->mix_frame); - return TRUE; -} - -static apt_bool_t mpf_mixer_destroy(mpf_object_t *object) -{ - apr_size_t i; - mpf_audio_stream_t *source; - mpf_mixer_t *mixer = (mpf_mixer_t*) object; - - apt_log(APT_LOG_MARK,APT_PRIO_DEBUG,"Destroy Mixer %s",object->name); - for(i=0; isource_count; i++) { - source = mixer->source_arr[i]; - if(source) { - mpf_audio_stream_rx_close(source); - } - } - mpf_audio_stream_tx_close(mixer->sink); - return TRUE; -} - -static void mpf_mixer_trace(mpf_object_t *object) -{ - mpf_mixer_t *mixer = (mpf_mixer_t*) object; - apr_size_t i; - mpf_audio_stream_t *source; - char buf[2048]; - apr_size_t offset; - - apt_text_stream_t output; - apt_text_stream_init(&output,buf,sizeof(buf)-1); - - for(i=0; isource_count; i++) { - source = mixer->source_arr[i]; - if(source) { - mpf_audio_stream_trace(source,STREAM_DIRECTION_RECEIVE,&output); - apt_text_char_insert(&output,';'); - } - } - - offset = output.pos - output.text.buf; - output.pos += apr_snprintf(output.pos, output.text.length - offset, - "->Mixer->"); - - mpf_audio_stream_trace(mixer->sink,STREAM_DIRECTION_SEND,&output); - - *output.pos = '\0'; - apt_log(APT_LOG_MARK,APT_PRIO_INFO,"Media Path %s %s", - object->name, - output.text.buf); -} - -MPF_DECLARE(mpf_object_t*) mpf_mixer_create( - mpf_audio_stream_t **source_arr, - apr_size_t source_count, - mpf_audio_stream_t *sink, - const mpf_codec_manager_t *codec_manager, - const char *name, - apr_pool_t *pool) -{ - apr_size_t i; - apr_size_t frame_size; - mpf_codec_descriptor_t *descriptor; - mpf_audio_stream_t *source; - mpf_mixer_t *mixer; - if(!source_arr || !source_count || !sink) { - return NULL; - } - - apt_log(APT_LOG_MARK,APT_PRIO_DEBUG,"Create Mixer %s",name); - mixer = apr_palloc(pool,sizeof(mpf_mixer_t)); - mixer->source_arr = NULL; - mixer->source_count = 0; - mixer->sink = NULL; - mpf_object_init(&mixer->base,name); - mixer->base.process = mpf_mixer_process; - mixer->base.destroy = mpf_mixer_destroy; - mixer->base.trace = mpf_mixer_trace; - - if(mpf_audio_stream_tx_validate(sink,NULL,NULL,pool) == FALSE) { - return NULL; - } - - descriptor = sink->tx_descriptor; - if(descriptor && mpf_codec_lpcm_descriptor_match(descriptor) == FALSE) { - mpf_codec_t *codec = mpf_codec_manager_codec_get(codec_manager,descriptor,pool); - if(codec) { - /* set encoder after mixer */ - mpf_audio_stream_t *encoder = mpf_encoder_create(sink,codec,pool); - sink = encoder; - } - } - mixer->sink = sink; - mpf_audio_stream_tx_open(sink,NULL); - - for(i=0; irx_descriptor; - if(descriptor && mpf_codec_lpcm_descriptor_match(descriptor) == FALSE) { - mpf_codec_t *codec = mpf_codec_manager_codec_get(codec_manager,descriptor,pool); - if(codec) { - /* set decoder before mixer */ - mpf_audio_stream_t *decoder = mpf_decoder_create(source,codec,pool); - source = decoder; - } - } - source_arr[i] = source; - mpf_audio_stream_rx_open(source,NULL); - } - mixer->source_arr = source_arr; - mixer->source_count = source_count; - - descriptor = sink->tx_descriptor; - frame_size = mpf_codec_linear_frame_size_calculate(descriptor->sampling_rate,descriptor->channel_count); - mixer->frame.codec_frame.size = frame_size; - mixer->frame.codec_frame.buffer = apr_palloc(pool,frame_size); - mixer->mix_frame.codec_frame.size = frame_size; - mixer->mix_frame.codec_frame.buffer = apr_palloc(pool,frame_size); - return &mixer->base; -} diff --git a/libs/unimrcp/libs/mpf/src/mpf_multiplier.c b/libs/unimrcp/libs/mpf/src/mpf_multiplier.c deleted file mode 100644 index 153c6cda9bf..00000000000 --- a/libs/unimrcp/libs/mpf/src/mpf_multiplier.c +++ /dev/null @@ -1,187 +0,0 @@ -/* - * Copyright 2008-2014 Arsen Chaloyan - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - * - * $Id: mpf_multiplier.c 2136 2014-07-04 06:33:36Z achaloyan@gmail.com $ - */ - -#include "mpf_multiplier.h" -#include "mpf_encoder.h" -#include "mpf_decoder.h" -#include "mpf_resampler.h" -#include "mpf_codec_manager.h" -#include "apt_log.h" - -typedef struct mpf_multiplier_t mpf_multiplier_t; - -/** MPF multiplier derived from MPF object */ -struct mpf_multiplier_t { - /** MPF multiplier base */ - mpf_object_t base; - /** Audio source */ - mpf_audio_stream_t *source; - /** Array of audio sinks */ - mpf_audio_stream_t **sink_arr; - /** Number of audio sinks */ - apr_size_t sink_count; - - /** Media frame used to read data from source and write it to sinks */ - mpf_frame_t frame; -}; - -static apt_bool_t mpf_multiplier_process(mpf_object_t *object) -{ - apr_size_t i; - mpf_audio_stream_t *sink; - mpf_multiplier_t *multiplier = (mpf_multiplier_t*) object; - - multiplier->frame.type = MEDIA_FRAME_TYPE_NONE; - multiplier->frame.marker = MPF_MARKER_NONE; - multiplier->source->vtable->read_frame(multiplier->source,&multiplier->frame); - - if((multiplier->frame.type & MEDIA_FRAME_TYPE_AUDIO) == 0) { - memset( multiplier->frame.codec_frame.buffer, - 0, - multiplier->frame.codec_frame.size); - } - - for(i=0; isink_count; i++) { - sink = multiplier->sink_arr[i]; - if(sink) { - sink->vtable->write_frame(sink,&multiplier->frame); - } - } - return TRUE; -} - -static apt_bool_t mpf_multiplier_destroy(mpf_object_t *object) -{ - apr_size_t i; - mpf_audio_stream_t *sink; - mpf_multiplier_t *multiplier = (mpf_multiplier_t*) object; - - apt_log(APT_LOG_MARK,APT_PRIO_DEBUG,"Destroy Multiplier %s",object->name); - mpf_audio_stream_rx_close(multiplier->source); - for(i=0; isink_count; i++) { - sink = multiplier->sink_arr[i]; - if(sink) { - mpf_audio_stream_tx_close(sink); - } - } - return TRUE; -} - -static void mpf_multiplier_trace(mpf_object_t *object) -{ - mpf_multiplier_t *multiplier = (mpf_multiplier_t*) object; - apr_size_t i; - mpf_audio_stream_t *sink; - char buf[2048]; - apr_size_t offset; - - apt_text_stream_t output; - apt_text_stream_init(&output,buf,sizeof(buf)-1); - - mpf_audio_stream_trace(multiplier->source,STREAM_DIRECTION_RECEIVE,&output); - - offset = output.pos - output.text.buf; - output.pos += apr_snprintf(output.pos, output.text.length - offset, - "->Multiplier->"); - - for(i=0; isink_count; i++) { - sink = multiplier->sink_arr[i]; - if(sink) { - mpf_audio_stream_trace(sink,STREAM_DIRECTION_SEND,&output); - apt_text_char_insert(&output,';'); - } - } - - *output.pos = '\0'; - apt_log(APT_LOG_MARK,APT_PRIO_INFO,"Media Path %s %s", - object->name, - output.text.buf); -} - -MPF_DECLARE(mpf_object_t*) mpf_multiplier_create( - mpf_audio_stream_t *source, - mpf_audio_stream_t **sink_arr, - apr_size_t sink_count, - const mpf_codec_manager_t *codec_manager, - const char *name, - apr_pool_t *pool) -{ - apr_size_t i; - apr_size_t frame_size; - mpf_codec_descriptor_t *descriptor; - mpf_audio_stream_t *sink; - mpf_multiplier_t *multiplier; - if(!source || !sink_arr || !sink_count) { - return NULL; - } - - apt_log(APT_LOG_MARK,APT_PRIO_DEBUG,"Create Multiplier %s",name); - multiplier = apr_palloc(pool,sizeof(mpf_multiplier_t)); - multiplier->source = NULL; - multiplier->sink_arr = NULL; - multiplier->sink_count = 0; - mpf_object_init(&multiplier->base,name); - multiplier->base.process = mpf_multiplier_process; - multiplier->base.destroy = mpf_multiplier_destroy; - multiplier->base.trace = mpf_multiplier_trace; - - if(mpf_audio_stream_rx_validate(source,NULL,NULL,pool) == FALSE) { - return NULL; - } - - descriptor = source->rx_descriptor; - if(descriptor && mpf_codec_lpcm_descriptor_match(descriptor) == FALSE) { - mpf_codec_t *codec = mpf_codec_manager_codec_get(codec_manager,descriptor,pool); - if(codec) { - /* set decoder before bridge */ - mpf_audio_stream_t *decoder = mpf_decoder_create(source,codec,pool); - source = decoder; - } - } - multiplier->source = source; - mpf_audio_stream_rx_open(source,NULL); - - for(i=0; itx_descriptor; - if(descriptor && mpf_codec_lpcm_descriptor_match(descriptor) == FALSE) { - mpf_codec_t *codec = mpf_codec_manager_codec_get(codec_manager,descriptor,pool); - if(codec) { - /* set encoder after bridge */ - mpf_audio_stream_t *encoder = mpf_encoder_create(sink,codec,pool); - sink = encoder; - } - } - sink_arr[i] = sink; - mpf_audio_stream_tx_open(sink,NULL); - } - multiplier->sink_arr = sink_arr; - multiplier->sink_count = sink_count; - - descriptor = source->rx_descriptor; - frame_size = mpf_codec_linear_frame_size_calculate(descriptor->sampling_rate,descriptor->channel_count); - multiplier->frame.codec_frame.size = frame_size; - multiplier->frame.codec_frame.buffer = apr_palloc(pool,frame_size); - return &multiplier->base; -} diff --git a/libs/unimrcp/libs/mpf/src/mpf_named_event.c b/libs/unimrcp/libs/mpf/src/mpf_named_event.c deleted file mode 100644 index 22df9b07c20..00000000000 --- a/libs/unimrcp/libs/mpf/src/mpf_named_event.c +++ /dev/null @@ -1,76 +0,0 @@ -/* - * Copyright 2008-2014 Arsen Chaloyan - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - * - * $Id: mpf_named_event.c 2136 2014-07-04 06:33:36Z achaloyan@gmail.com $ - */ - -#include "mpf_named_event.h" - -#define TEL_EVENT_NAME "telephone-event" -#define TEL_EVENT_NAME_LENGTH (sizeof(TEL_EVENT_NAME)-1) - -#define TEL_EVENT_FMTP "0-15" -#define TEL_EVENT_FMTP_LENGTH (sizeof(TEL_EVENT_FMTP)-1) - - -MPF_DECLARE(mpf_codec_descriptor_t*) mpf_event_descriptor_create(apr_uint16_t sampling_rate, apr_pool_t *pool) -{ - mpf_codec_descriptor_t *descriptor = apr_palloc(pool,sizeof(mpf_codec_descriptor_t)); - mpf_codec_descriptor_init(descriptor); - descriptor->payload_type = 101; - descriptor->name.buf = TEL_EVENT_NAME; - descriptor->name.length = TEL_EVENT_NAME_LENGTH; - descriptor->sampling_rate = sampling_rate; - descriptor->channel_count = 1; - descriptor->format.buf = TEL_EVENT_FMTP; - descriptor->format.length = TEL_EVENT_FMTP_LENGTH; - return descriptor; -} - -MPF_DECLARE(apt_bool_t) mpf_event_descriptor_check(const mpf_codec_descriptor_t *descriptor) -{ - apt_str_t name; - name.buf = TEL_EVENT_NAME; - name.length = TEL_EVENT_NAME_LENGTH; - return apt_string_compare(&descriptor->name,&name); -} - -MPF_DECLARE(apr_uint32_t) mpf_dtmf_char_to_event_id(const char dtmf_char) -{ - if ((dtmf_char >= '0') && (dtmf_char <= '9')) - return dtmf_char - '0'; - else if (dtmf_char == '*') - return 10; - else if (dtmf_char == '#') - return 11; - else if ((dtmf_char >= 'A') && (dtmf_char <= 'D')) - return 12 + dtmf_char - 'A'; - - return 255; /* Invalid DTMF event */ -} - -MPF_DECLARE(char) mpf_event_id_to_dtmf_char(const apr_uint32_t event_id) -{ - if (event_id <= 9) - return '0' + (char)event_id; - else if (event_id == 10) - return '*'; - else if (event_id == 11) - return '#'; - else if (event_id <= 15) - return 'A' + (char)event_id - 12; - - return 0; /* Not a DTMF event */ -} diff --git a/libs/unimrcp/libs/mpf/src/mpf_resampler.c b/libs/unimrcp/libs/mpf/src/mpf_resampler.c deleted file mode 100644 index bcd802245fa..00000000000 --- a/libs/unimrcp/libs/mpf/src/mpf_resampler.c +++ /dev/null @@ -1,28 +0,0 @@ -/* - * Copyright 2008-2014 Arsen Chaloyan - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - * - * $Id: mpf_resampler.c 2136 2014-07-04 06:33:36Z achaloyan@gmail.com $ - */ - -#include "mpf_resampler.h" -#include "apt_log.h" - -MPF_DECLARE(mpf_audio_stream_t*) mpf_resampler_create(mpf_audio_stream_t *source, mpf_audio_stream_t *sink, apr_pool_t *pool) -{ - apt_log(APT_LOG_MARK,APT_PRIO_WARNING, - "Currently resampling is not supported. " - "Try to configure and use the same sampling rate on both ends"); - return NULL; -} diff --git a/libs/unimrcp/libs/mpf/src/mpf_rtp_attribs.c b/libs/unimrcp/libs/mpf/src/mpf_rtp_attribs.c deleted file mode 100644 index f6f84174e21..00000000000 --- a/libs/unimrcp/libs/mpf/src/mpf_rtp_attribs.c +++ /dev/null @@ -1,60 +0,0 @@ -/* - * Copyright 2008-2014 Arsen Chaloyan - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - * - * $Id: mpf_rtp_attribs.c 2136 2014-07-04 06:33:36Z achaloyan@gmail.com $ - */ - -#include "apt_string_table.h" -#include "mpf_rtp_attribs.h" - -/** String table of RTP attributes (mpf_rtp_attrib_e) */ -static const apt_str_table_item_t mpf_rtp_attrib_table[] = { - {{"rtpmap", 6},1}, - {{"sendonly", 8},8}, - {{"recvonly", 8},2}, - {{"sendrecv", 8},4}, - {{"mid", 3},0}, - {{"ptime", 5},0} -}; - - -MPF_DECLARE(const apt_str_t*) mpf_rtp_attrib_str_get(mpf_rtp_attrib_e attrib_id) -{ - return apt_string_table_str_get(mpf_rtp_attrib_table,RTP_ATTRIB_COUNT,attrib_id); -} - -MPF_DECLARE(mpf_rtp_attrib_e) mpf_rtp_attrib_id_find(const apt_str_t *attrib) -{ - return apt_string_table_id_find(mpf_rtp_attrib_table,RTP_ATTRIB_COUNT,attrib); -} - -MPF_DECLARE(const apt_str_t*) mpf_rtp_direction_str_get(mpf_stream_direction_e direction) -{ - mpf_rtp_attrib_e attrib_id = RTP_ATTRIB_UNKNOWN; - switch(direction) { - case STREAM_DIRECTION_SEND: - attrib_id = RTP_ATTRIB_SENDONLY; - break; - case STREAM_DIRECTION_RECEIVE: - attrib_id = RTP_ATTRIB_RECVONLY; - break; - case STREAM_DIRECTION_DUPLEX: - attrib_id = RTP_ATTRIB_SENDRECV; - break; - default: - break; - } - return apt_string_table_str_get(mpf_rtp_attrib_table,RTP_ATTRIB_COUNT,attrib_id); -} diff --git a/libs/unimrcp/libs/mpf/src/mpf_rtp_stream.c b/libs/unimrcp/libs/mpf/src/mpf_rtp_stream.c deleted file mode 100644 index 9f475214895..00000000000 --- a/libs/unimrcp/libs/mpf/src/mpf_rtp_stream.c +++ /dev/null @@ -1,1507 +0,0 @@ -/* - * Copyright 2008-2014 Arsen Chaloyan - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - * - * $Id: mpf_rtp_stream.c 2136 2014-07-04 06:33:36Z achaloyan@gmail.com $ - */ - -#include -#include "apt_net.h" -#include "apt_timer_queue.h" -#include "mpf_rtp_stream.h" -#include "mpf_termination.h" -#include "mpf_codec_manager.h" -#include "mpf_rtp_header.h" -#include "mpf_rtcp_packet.h" -#include "mpf_rtp_defs.h" -#include "mpf_rtp_pt.h" -#include "mpf_trace.h" -#include "apt_log.h" - -/** Max size of RTP packet */ -#define MAX_RTP_PACKET_SIZE 1500 -/** Max size of RTCP packet */ -#define MAX_RTCP_PACKET_SIZE 1500 - -/* Reason strings used in RTCP BYE messages (informative only) */ -#define RTCP_BYE_SESSION_ENDED "Session ended" -#define RTCP_BYE_TALKSPURT_ENDED "Talskpurt ended" - -#if ENABLE_RTP_PACKET_TRACE == 1 -#define RTP_TRACE printf -#elif ENABLE_RTP_PACKET_TRACE == 2 -#define RTP_TRACE mpf_debug_output_trace -#else -#define RTP_TRACE mpf_null_trace -#endif - -/** RTP stream */ -typedef struct mpf_rtp_stream_t mpf_rtp_stream_t; -struct mpf_rtp_stream_t { - mpf_audio_stream_t *base; - - mpf_rtp_media_descriptor_t *local_media; - mpf_rtp_media_descriptor_t *remote_media; - mpf_media_state_e state; - - rtp_transmitter_t transmitter; - rtp_receiver_t receiver; - - mpf_rtp_config_t *config; - mpf_rtp_settings_t *settings; - - apr_socket_t *rtp_socket; - apr_socket_t *rtcp_socket; - apr_sockaddr_t *rtp_l_sockaddr; - apr_sockaddr_t *rtp_r_sockaddr; - apr_sockaddr_t *rtcp_l_sockaddr; - apr_sockaddr_t *rtcp_r_sockaddr; - - apt_timer_t *rtcp_tx_timer; - apt_timer_t *rtcp_rx_timer; - - apr_pool_t *pool; -}; - -static apt_bool_t mpf_rtp_stream_destroy(mpf_audio_stream_t *stream); -static apt_bool_t mpf_rtp_rx_stream_open(mpf_audio_stream_t *stream, mpf_codec_t *codec); -static apt_bool_t mpf_rtp_rx_stream_close(mpf_audio_stream_t *stream); -static apt_bool_t mpf_rtp_stream_receive(mpf_audio_stream_t *stream, mpf_frame_t *frame); -static apt_bool_t mpf_rtp_tx_stream_open(mpf_audio_stream_t *stream, mpf_codec_t *codec); -static apt_bool_t mpf_rtp_tx_stream_close(mpf_audio_stream_t *stream); -static apt_bool_t mpf_rtp_stream_transmit(mpf_audio_stream_t *stream, const mpf_frame_t *frame); - -static const mpf_audio_stream_vtable_t vtable = { - mpf_rtp_stream_destroy, - mpf_rtp_rx_stream_open, - mpf_rtp_rx_stream_close, - mpf_rtp_stream_receive, - mpf_rtp_tx_stream_open, - mpf_rtp_tx_stream_close, - mpf_rtp_stream_transmit, - NULL /* mpf_rtp_stream_trace */ -}; - -static apt_bool_t mpf_rtp_socket_pair_create(mpf_rtp_stream_t *stream, mpf_rtp_media_descriptor_t *local_media, apt_bool_t bind); -static apt_bool_t mpf_rtp_socket_pair_bind(mpf_rtp_stream_t *stream, mpf_rtp_media_descriptor_t *local_media); -static void mpf_rtp_socket_pair_close(mpf_rtp_stream_t *stream); - -static apt_bool_t mpf_rtcp_report_send(mpf_rtp_stream_t *stream); -static apt_bool_t mpf_rtcp_bye_send(mpf_rtp_stream_t *stream, apt_str_t *reason); -static void mpf_rtcp_tx_timer_proc(apt_timer_t *timer, void *obj); -static void mpf_rtcp_rx_timer_proc(apt_timer_t *timer, void *obj); - - -MPF_DECLARE(mpf_audio_stream_t*) mpf_rtp_stream_create(mpf_termination_t *termination, mpf_rtp_config_t *config, mpf_rtp_settings_t *settings, apr_pool_t *pool) -{ - mpf_rtp_stream_t *rtp_stream = apr_palloc(pool,sizeof(mpf_rtp_stream_t)); - mpf_stream_capabilities_t *capabilities = mpf_stream_capabilities_create(STREAM_DIRECTION_DUPLEX,pool); - mpf_audio_stream_t *audio_stream = mpf_audio_stream_create(rtp_stream,&vtable,capabilities,pool); - if(!audio_stream) { - return NULL; - } - - audio_stream->direction = STREAM_DIRECTION_NONE; - audio_stream->termination = termination; - - rtp_stream->base = audio_stream; - rtp_stream->pool = pool; - rtp_stream->config = config; - rtp_stream->settings = settings; - rtp_stream->local_media = NULL; - rtp_stream->remote_media = NULL; - rtp_stream->rtp_socket = NULL; - rtp_stream->rtcp_socket = NULL; - rtp_stream->rtp_l_sockaddr = NULL; - rtp_stream->rtp_r_sockaddr = NULL; - rtp_stream->rtcp_l_sockaddr = NULL; - rtp_stream->rtcp_r_sockaddr = NULL; - rtp_stream->rtcp_tx_timer = NULL; - rtp_stream->rtcp_rx_timer = NULL; - rtp_stream->state = MPF_MEDIA_DISABLED; - rtp_receiver_init(&rtp_stream->receiver); - rtp_transmitter_init(&rtp_stream->transmitter); - rtp_stream->transmitter.sr_stat.ssrc = (apr_uint32_t)apr_time_now(); - - if(settings->rtcp == TRUE) { - if(settings->rtcp_tx_interval) { - rtp_stream->rtcp_tx_timer = apt_timer_create( - termination->timer_queue, - mpf_rtcp_tx_timer_proc, - rtp_stream, pool); - } - if(settings->rtcp_rx_resolution) { - rtp_stream->rtcp_rx_timer = apt_timer_create( - termination->timer_queue, - mpf_rtcp_rx_timer_proc, - rtp_stream, pool); - } - } - - return audio_stream; -} - -static apt_bool_t mpf_rtp_stream_local_media_create(mpf_rtp_stream_t *rtp_stream, mpf_rtp_media_descriptor_t *local_media, mpf_rtp_media_descriptor_t *remote_media, mpf_stream_capabilities_t *capabilities) -{ - apt_bool_t status = TRUE; - if(!local_media) { - /* local media is not specified, create the default one */ - local_media = apr_palloc(rtp_stream->pool,sizeof(mpf_rtp_media_descriptor_t)); - mpf_rtp_media_descriptor_init(local_media); - local_media->state = MPF_MEDIA_ENABLED; - local_media->direction = STREAM_DIRECTION_DUPLEX; - } - if(remote_media) { - local_media->id = remote_media->id; - } - if(local_media->ip.length == 0) { - local_media->ip = rtp_stream->config->ip; - local_media->ext_ip = rtp_stream->config->ext_ip; - } - if(local_media->port == 0) { - if(mpf_rtp_socket_pair_create(rtp_stream,local_media,FALSE) == TRUE) { - /* RTP port management */ - mpf_rtp_config_t *rtp_config = rtp_stream->config; - apr_port_t first_port_in_search = rtp_config->rtp_port_cur; - apt_bool_t is_port_ok = FALSE; - do { - local_media->port = rtp_config->rtp_port_cur; - rtp_config->rtp_port_cur += 2; - if(rtp_config->rtp_port_cur == rtp_config->rtp_port_max) { - rtp_config->rtp_port_cur = rtp_config->rtp_port_min; - } - - if(mpf_rtp_socket_pair_bind(rtp_stream,local_media) == TRUE) { - is_port_ok = TRUE; - break; - } - } while(first_port_in_search != rtp_config->rtp_port_cur); - - if(is_port_ok == FALSE) { - apt_log(APT_LOG_MARK,APT_PRIO_WARNING,"Failed to Find Free RTP Port %s:[%hu,%hu]", - rtp_config->ip.buf, - rtp_config->rtp_port_min, - rtp_config->rtp_port_max); - mpf_rtp_socket_pair_close(rtp_stream); - status = FALSE; - } - } - else { - status = FALSE; - } - } - else if(mpf_rtp_socket_pair_create(rtp_stream,local_media,TRUE) == FALSE) { - status = FALSE; - } - - if(status == FALSE) { - local_media->state = MPF_MEDIA_DISABLED; - } - - if(rtp_stream->settings->ptime) { - local_media->ptime = rtp_stream->settings->ptime; - } - - if(mpf_codec_list_is_empty(&local_media->codec_list) == TRUE) { - if(mpf_codec_list_is_empty(&rtp_stream->settings->codec_list) == TRUE) { - mpf_codec_manager_codec_list_get( - rtp_stream->base->termination->codec_manager, - &local_media->codec_list, - rtp_stream->pool); - } - else { - mpf_codec_list_copy(&local_media->codec_list, - &rtp_stream->settings->codec_list, - rtp_stream->pool); - } - } - - if(capabilities) { - if(mpf_codec_list_match(&local_media->codec_list,&capabilities->codecs) == FALSE) { - apt_log(APT_LOG_MARK,APT_PRIO_WARNING,"Failed to Match Codec List %s:%hu", - local_media->ip.buf, - local_media->port); - local_media->state = MPF_MEDIA_DISABLED; - status = FALSE; - } - } - - rtp_stream->local_media = local_media; - return status; -} - -static apt_bool_t mpf_rtp_stream_local_media_update(mpf_rtp_stream_t *rtp_stream, mpf_rtp_media_descriptor_t *media, mpf_stream_capabilities_t *capabilities) -{ - apt_bool_t status = TRUE; - if(apt_string_compare(&rtp_stream->local_media->ip,&media->ip) == FALSE || - rtp_stream->local_media->port != media->port) { - - mpf_rtp_socket_pair_close(rtp_stream); - - if(mpf_rtp_socket_pair_create(rtp_stream,media,TRUE) == FALSE) { - media->state = MPF_MEDIA_DISABLED; - status = FALSE; - } - } - if(mpf_codec_list_is_empty(&media->codec_list) == TRUE) { - mpf_codec_manager_codec_list_get( - rtp_stream->base->termination->codec_manager, - &media->codec_list, - rtp_stream->pool); - } - - if(capabilities) { - if(mpf_codec_list_match(&media->codec_list,&capabilities->codecs) == FALSE) { - apt_log(APT_LOG_MARK,APT_PRIO_WARNING,"Failed to Match Codec List %s:%hu", - media->ip.buf, - media->port); - media->state = MPF_MEDIA_DISABLED; - status = FALSE; - } - } - - rtp_stream->local_media = media; - return status; -} - -static apt_bool_t mpf_rtp_stream_remote_media_update(mpf_rtp_stream_t *rtp_stream, mpf_rtp_media_descriptor_t *media) -{ - apt_bool_t status = TRUE; - if(media->state == MPF_MEDIA_ENABLED) { - if(!rtp_stream->remote_media || - apt_string_compare(&rtp_stream->remote_media->ip,&media->ip) == FALSE || - rtp_stream->remote_media->port != media->port) { - - /* update RTP port */ - rtp_stream->rtp_r_sockaddr = NULL; - apr_sockaddr_info_get( - &rtp_stream->rtp_r_sockaddr, - media->ip.buf, - APR_INET, - media->port, - 0, - rtp_stream->pool); - if(!rtp_stream->rtp_r_sockaddr) { - status = FALSE; - } - - /* update RTCP port */ - rtp_stream->rtcp_r_sockaddr = NULL; - apr_sockaddr_info_get( - &rtp_stream->rtcp_r_sockaddr, - media->ip.buf, - APR_INET, - media->port+1, - 0, - rtp_stream->pool); - } - } - - rtp_stream->remote_media = media; - return status; -} - -static apt_bool_t mpf_rtp_stream_media_negotiate(mpf_rtp_stream_t *rtp_stream) -{ - mpf_rtp_media_descriptor_t *local_media = rtp_stream->local_media; - mpf_rtp_media_descriptor_t *remote_media = rtp_stream->remote_media; - if(!local_media || !remote_media) { - return FALSE; - } - - local_media->id = remote_media->id; - local_media->mid = remote_media->mid; - local_media->ptime = remote_media->ptime; - - if(rtp_stream->state == MPF_MEDIA_DISABLED && remote_media->state == MPF_MEDIA_ENABLED) { - /* enable RTP/RTCP session */ - rtp_stream->state = MPF_MEDIA_ENABLED; - if(rtp_stream->rtp_l_sockaddr) { - apt_log(APT_LOG_MARK,APT_PRIO_INFO,"Enable RTP Session %s:%hu", - rtp_stream->rtp_l_sockaddr->hostname, - rtp_stream->rtp_l_sockaddr->port); - } - - if(rtp_stream->rtcp_tx_timer) { - apt_timer_set(rtp_stream->rtcp_tx_timer,rtp_stream->settings->rtcp_tx_interval); - } - if(rtp_stream->rtcp_rx_timer) { - apt_timer_set(rtp_stream->rtcp_rx_timer,rtp_stream->settings->rtcp_rx_resolution); - } - } - else if(rtp_stream->state == MPF_MEDIA_ENABLED && remote_media->state == MPF_MEDIA_DISABLED) { - /* disable RTP/RTCP session */ - rtp_stream->state = MPF_MEDIA_DISABLED; - if(rtp_stream->rtp_l_sockaddr) { - apt_log(APT_LOG_MARK,APT_PRIO_INFO,"Disable RTP Session %s:%hu", - rtp_stream->rtp_l_sockaddr->hostname, - rtp_stream->rtp_l_sockaddr->port); - } - - if(rtp_stream->rtcp_tx_timer) { - apt_timer_kill(rtp_stream->rtcp_tx_timer); - } - if(rtp_stream->rtcp_rx_timer) { - apt_timer_kill(rtp_stream->rtcp_rx_timer); - } - if(rtp_stream->settings->rtcp == TRUE && rtp_stream->settings->rtcp_bye_policy != RTCP_BYE_DISABLE) { - apt_str_t reason = {RTCP_BYE_SESSION_ENDED, sizeof(RTCP_BYE_SESSION_ENDED)-1}; - mpf_rtcp_bye_send(rtp_stream,&reason); - } - } - - local_media->state = remote_media->state; - local_media->direction = mpf_stream_reverse_direction_get(remote_media->direction); - - if(remote_media->state == MPF_MEDIA_ENABLED) { - mpf_codec_list_t *codec_list1 = NULL; - mpf_codec_list_t *codec_list2 = NULL; - - /* intersect local and remote codecs */ - if(rtp_stream->settings->own_preferrence == TRUE) { - codec_list1 = &local_media->codec_list; - codec_list2 = &remote_media->codec_list; - } - else { - codec_list2 = &local_media->codec_list; - codec_list1 = &remote_media->codec_list; - } - - if(mpf_codec_lists_intersect(codec_list1,codec_list2) == FALSE) { - /* reject RTP/RTCP session */ - rtp_stream->state = MPF_MEDIA_DISABLED; - local_media->direction = STREAM_DIRECTION_NONE; - local_media->state = MPF_MEDIA_DISABLED; - if(rtp_stream->rtp_l_sockaddr) { - apt_log(APT_LOG_MARK,APT_PRIO_WARNING,"Reject RTP Session %s:%hu no codecs matched", - rtp_stream->rtp_l_sockaddr->hostname, - rtp_stream->rtp_l_sockaddr->port); - } - - if(rtp_stream->rtcp_tx_timer) { - apt_timer_kill(rtp_stream->rtcp_tx_timer); - } - if(rtp_stream->rtcp_rx_timer) { - apt_timer_kill(rtp_stream->rtcp_rx_timer); - } - } - } - - rtp_stream->base->direction = local_media->direction; - return TRUE; -} - -MPF_DECLARE(apt_bool_t) mpf_rtp_stream_add(mpf_audio_stream_t *stream) -{ - return TRUE; -} - -MPF_DECLARE(apt_bool_t) mpf_rtp_stream_remove(mpf_audio_stream_t *stream) -{ - mpf_rtp_stream_t *rtp_stream = stream->obj; - - if(rtp_stream->state == MPF_MEDIA_ENABLED) { - /* disable RTP/RTCP session */ - rtp_stream->state = MPF_MEDIA_DISABLED; - if(rtp_stream->rtp_l_sockaddr) { - apt_log(APT_LOG_MARK,APT_PRIO_INFO,"Remove RTP Session %s:%hu", - rtp_stream->rtp_l_sockaddr->hostname, - rtp_stream->rtp_l_sockaddr->port); - } - - if(rtp_stream->rtcp_tx_timer) { - apt_timer_kill(rtp_stream->rtcp_tx_timer); - } - if(rtp_stream->rtcp_rx_timer) { - apt_timer_kill(rtp_stream->rtcp_rx_timer); - } - if(rtp_stream->settings->rtcp == TRUE && rtp_stream->settings->rtcp_bye_policy != RTCP_BYE_DISABLE) { - apt_str_t reason = {RTCP_BYE_SESSION_ENDED, sizeof(RTCP_BYE_SESSION_ENDED)-1}; - mpf_rtcp_bye_send(rtp_stream,&reason); - } - } - - mpf_rtp_socket_pair_close(rtp_stream); - return TRUE; -} - -MPF_DECLARE(apt_bool_t) mpf_rtp_stream_modify(mpf_audio_stream_t *stream, mpf_rtp_stream_descriptor_t *descriptor) -{ - apt_bool_t status = TRUE; - mpf_rtp_stream_t *rtp_stream = stream->obj; - if(!rtp_stream) { - return FALSE; - } - - if(!rtp_stream->local_media) { - /* create local media */ - status = mpf_rtp_stream_local_media_create(rtp_stream,descriptor->local,descriptor->remote,descriptor->capabilities); - } - else if(descriptor->local) { - /* update local media */ - status = mpf_rtp_stream_local_media_update(rtp_stream,descriptor->local,descriptor->capabilities); - } - - if(descriptor->remote && status == TRUE) { - /* update remote media */ - mpf_rtp_stream_remote_media_update(rtp_stream,descriptor->remote); - - /* negotiate local and remote media */ - mpf_rtp_stream_media_negotiate(rtp_stream); - } - - if((rtp_stream->base->direction & STREAM_DIRECTION_SEND) == STREAM_DIRECTION_SEND) { - mpf_codec_list_t *codec_list = &rtp_stream->remote_media->codec_list; - rtp_stream->base->tx_descriptor = codec_list->primary_descriptor; - if(rtp_stream->base->tx_descriptor) { - rtp_stream->transmitter.samples_per_frame = - (apr_uint32_t)mpf_codec_frame_samples_calculate(rtp_stream->base->tx_descriptor); - } - if(codec_list->event_descriptor) { - rtp_stream->base->tx_event_descriptor = codec_list->event_descriptor; - } - } - if((rtp_stream->base->direction & STREAM_DIRECTION_RECEIVE) == STREAM_DIRECTION_RECEIVE) { - mpf_codec_list_t *codec_list = &rtp_stream->local_media->codec_list; - rtp_stream->base->rx_descriptor = codec_list->primary_descriptor; - if(codec_list->event_descriptor) { - rtp_stream->base->rx_event_descriptor = codec_list->event_descriptor; - } - } - - if(!descriptor->local) { - descriptor->local = rtp_stream->local_media; - } - return status; -} - -static apt_bool_t mpf_rtp_stream_destroy(mpf_audio_stream_t *stream) -{ - return TRUE; -} - -static apt_bool_t mpf_rtp_rx_stream_open(mpf_audio_stream_t *stream, mpf_codec_t *codec) -{ - mpf_rtp_stream_t *rtp_stream = stream->obj; - rtp_receiver_t *receiver = &rtp_stream->receiver; - mpf_jb_config_t *jb_config = &rtp_stream->settings->jb_config; - if(!rtp_stream->rtp_socket || !rtp_stream->rtp_l_sockaddr || !rtp_stream->rtp_r_sockaddr) { - return FALSE; - } - - receiver->jb = mpf_jitter_buffer_create( - jb_config, - stream->rx_descriptor, - codec, - rtp_stream->pool); - - apt_log(APT_LOG_MARK,APT_PRIO_INFO, - "Open RTP Receiver %s:%hu <- %s:%hu playout [%u ms] bounds [%u - %u ms] adaptive [%d] skew detection [%d]", - rtp_stream->rtp_l_sockaddr->hostname, - rtp_stream->rtp_l_sockaddr->port, - rtp_stream->rtp_r_sockaddr->hostname, - rtp_stream->rtp_r_sockaddr->port, - jb_config->initial_playout_delay, - jb_config->min_playout_delay, - jb_config->max_playout_delay, - jb_config->adaptive, - jb_config->time_skew_detection); - return TRUE; -} - -static apt_bool_t mpf_rtp_rx_stream_close(mpf_audio_stream_t *stream) -{ - mpf_rtp_stream_t *rtp_stream = stream->obj; - rtp_receiver_t *receiver = &rtp_stream->receiver; - - if(!rtp_stream->rtp_l_sockaddr || !rtp_stream->rtp_r_sockaddr) { - return FALSE; - } - - receiver->stat.lost_packets = 0; - if(receiver->stat.received_packets) { - apr_uint32_t expected_packets = receiver->history.seq_cycles + - receiver->history.seq_num_max - receiver->history.seq_num_base + 1; - if(expected_packets > receiver->stat.received_packets) { - receiver->stat.lost_packets = expected_packets - receiver->stat.received_packets; - } - } - - apt_log(APT_LOG_MARK,APT_PRIO_INFO,"Close RTP Receiver %s:%hu <- %s:%hu [r:%u l:%u j:%u p:%u d:%u i:%u]", - rtp_stream->rtp_l_sockaddr->hostname, - rtp_stream->rtp_l_sockaddr->port, - rtp_stream->rtp_r_sockaddr->hostname, - rtp_stream->rtp_r_sockaddr->port, - receiver->stat.received_packets, - receiver->stat.lost_packets, - receiver->rr_stat.jitter, - mpf_jitter_buffer_playout_delay_get(receiver->jb), - receiver->stat.discarded_packets, - receiver->stat.ignored_packets); - mpf_jitter_buffer_destroy(receiver->jb); - return TRUE; -} - - -static APR_INLINE void rtp_rx_overall_stat_reset(rtp_receiver_t *receiver) -{ - memset(&receiver->stat,0,sizeof(receiver->stat)); - memset(&receiver->history,0,sizeof(receiver->history)); - memset(&receiver->periodic_history,0,sizeof(receiver->periodic_history)); -} - -static APR_INLINE void rtp_rx_stat_init(rtp_receiver_t *receiver, rtp_header_t *header, apr_time_t *time) -{ - receiver->rr_stat.ssrc = header->ssrc; - receiver->history.seq_num_base = receiver->history.seq_num_max = (apr_uint16_t)header->sequence; - receiver->history.ts_last = header->timestamp; - receiver->history.time_last = *time; -} - -static APR_INLINE void rtp_rx_restart(rtp_receiver_t *receiver) -{ - apr_byte_t restarts = ++receiver->stat.restarts; - rtp_rx_overall_stat_reset(receiver); - mpf_jitter_buffer_restart(receiver->jb); - receiver->stat.restarts = restarts; -} - -static rtp_header_t* rtp_rx_header_skip(void **buffer, apr_size_t *size) -{ - apr_size_t offset = 0; - rtp_header_t *header = (rtp_header_t*)*buffer; - - /* RTP header validity check */ - if(header->version != RTP_VERSION) { - return NULL; - } - - /* calculate payload offset */ - offset = sizeof(rtp_header_t) + (header->count * sizeof(apr_uint32_t)); - - /* additional offset in case of RTP extension */ - if(header->extension) { - rtp_extension_header_t *ext_header = (rtp_extension_header_t*)(((apr_byte_t*)*buffer)+offset); - offset += (ntohs(ext_header->length) * sizeof(apr_uint32_t)); - } - - if (offset >= *size) { - return NULL; - } - - /* skip to payload */ - *buffer = (apr_byte_t*)*buffer + offset; - *size = *size - offset; - - return header; -} - -static APR_INLINE void rtp_periodic_history_update(rtp_receiver_t *receiver) -{ - apr_uint32_t expected_packets; - apr_uint32_t expected_interval; - apr_uint32_t received_interval; - apr_uint32_t lost_interval; - - /* calculate expected packets */ - if(receiver->stat.received_packets) { - expected_packets = receiver->history.seq_cycles + - receiver->history.seq_num_max - receiver->history.seq_num_base + 1; - } - else { - expected_packets = 0; - } - - /* calculate expected interval */ - expected_interval = expected_packets - receiver->periodic_history.expected_prior; - /* update expected prior */ - receiver->periodic_history.expected_prior = expected_packets; - - /* calculate received interval */ - received_interval = receiver->stat.received_packets - receiver->periodic_history.received_prior; - /* update received prior */ - receiver->periodic_history.received_prior = receiver->stat.received_packets; - /* calculate lost interval */ - if(expected_interval > received_interval) { - lost_interval = expected_interval - received_interval; - } - else { - lost_interval = 0; - } - - /* update lost fraction */ - if(expected_interval == 0 || lost_interval == 0) { - receiver->rr_stat.fraction = 0; - } - else { - receiver->rr_stat.fraction = (lost_interval << 8) / expected_interval; - } - - if(expected_packets > receiver->stat.received_packets) { - receiver->rr_stat.lost = expected_packets - receiver->stat.received_packets; - } - else { - receiver->rr_stat.lost = 0; - } - - receiver->periodic_history.discarded_prior = receiver->stat.discarded_packets; - receiver->periodic_history.jitter_min = receiver->rr_stat.jitter; - receiver->periodic_history.jitter_max = receiver->rr_stat.jitter; -} - -typedef enum { - RTP_SSRC_UPDATE, - RTP_SSRC_PROBATION, - RTP_SSRC_RESTART -} rtp_ssrc_result_e; - -static APR_INLINE rtp_ssrc_result_e rtp_rx_ssrc_update(rtp_receiver_t *receiver, apr_uint32_t ssrc) -{ - if(receiver->rr_stat.ssrc == ssrc) { - /* known ssrc */ - if(receiver->history.ssrc_probation) { - /* reset the probation for new ssrc */ - receiver->history.ssrc_probation = 0; - receiver->history.ssrc_new = 0; - } - } - else { - if(receiver->history.ssrc_new == ssrc) { - if(--receiver->history.ssrc_probation == 0) { - /* restart with new ssrc */ - receiver->rr_stat.ssrc = ssrc; - return RTP_SSRC_RESTART; - } - else { - return RTP_SSRC_PROBATION; - } - } - else { - /* start probation for new ssrc */ - receiver->history.ssrc_new = ssrc; - receiver->history.ssrc_probation = 5; - return RTP_SSRC_PROBATION; - } - } - return RTP_SSRC_UPDATE; -} - -typedef enum { - RTP_SEQ_UPDATE, - RTP_SEQ_MISORDER, - RTP_SEQ_DRIFT -} rtp_seq_result_e; - -static APR_INLINE rtp_seq_result_e rtp_rx_seq_update(rtp_receiver_t *receiver, apr_uint16_t seq_num) -{ - rtp_seq_result_e result = RTP_SEQ_UPDATE; - apr_uint16_t seq_delta = seq_num - receiver->history.seq_num_max; - if(seq_delta < MAX_DROPOUT) { - if(seq_num < receiver->history.seq_num_max) { - /* sequence number wrapped */ - receiver->history.seq_cycles += RTP_SEQ_MOD; - } - receiver->history.seq_num_max = seq_num; - } - else if(seq_delta <= RTP_SEQ_MOD - MAX_MISORDER) { - /* sequence number made a very large jump */ - result = RTP_SEQ_DRIFT; - } - else { - /* duplicate or misordered packet */ - result = RTP_SEQ_MISORDER; - } - receiver->stat.received_packets++; - - return result; -} - -typedef enum { - RTP_TS_UPDATE, - RTP_TS_DRIFT -} rtp_ts_result_e; - -static APR_INLINE rtp_ts_result_e rtp_rx_ts_update(rtp_receiver_t *receiver, mpf_codec_descriptor_t *descriptor, apr_time_t *time, apr_uint32_t ts, apr_byte_t *marker) -{ - apr_int32_t deviation; - apr_int32_t time_diff; - - /* arrival time diff in msec */ - time_diff = (apr_int32_t)apr_time_as_msec(*time - receiver->history.time_last); - - /* if the time difference is more than the threshold (INTER_TALKSPURT_GAP), - and the marker is not set, then this might be a beginning of a - new malformed talkspurt */ - if(!*marker && time_diff > INTER_TALKSPURT_GAP) { - /* set the missing marker */ - *marker = 1; - } - - /* arrival time diff in samples */ - deviation = time_diff * descriptor->channel_count * descriptor->sampling_rate / 1000; - /* arrival timestamp diff */ - deviation -= ts - receiver->history.ts_last; - - if(deviation < 0) { - deviation = -deviation; - } - - if(deviation > DEVIATION_THRESHOLD) { - return RTP_TS_DRIFT; - } - - receiver->rr_stat.jitter += deviation - ((receiver->rr_stat.jitter + 8) >> 4); - RTP_TRACE("jitter=%u deviation=%d\n",receiver->rr_stat.jitter,deviation); - receiver->history.time_last = *time; - receiver->history.ts_last = ts; - - if(receiver->rr_stat.jitter < receiver->periodic_history.jitter_min) { - receiver->periodic_history.jitter_min = receiver->rr_stat.jitter; - } - if(receiver->rr_stat.jitter > receiver->periodic_history.jitter_max) { - receiver->periodic_history.jitter_max = receiver->rr_stat.jitter; - } - return RTP_TS_UPDATE; -} - -static APR_INLINE void rtp_rx_failure_threshold_check(rtp_receiver_t *receiver) -{ - apr_uint32_t received; - apr_uint32_t discarded; - received = receiver->stat.received_packets - receiver->periodic_history.received_prior; - discarded = receiver->stat.discarded_packets - receiver->periodic_history.discarded_prior; - - if(discarded * 100 > received * DISCARDED_TO_RECEIVED_RATIO_THRESHOLD) { - /* failure threshold reached -> restart */ - rtp_rx_restart(receiver); - } -} - -static apt_bool_t rtp_rx_packet_receive(mpf_rtp_stream_t *rtp_stream, void *buffer, apr_size_t size) -{ - rtp_receiver_t *receiver = &rtp_stream->receiver; - mpf_codec_descriptor_t *descriptor = rtp_stream->base->rx_descriptor; - apr_time_t time; - rtp_ssrc_result_e ssrc_result; - rtp_header_t *header = rtp_rx_header_skip(&buffer,&size); - if(!header) { - /* invalid RTP packet */ - receiver->stat.invalid_packets++; - return FALSE; - } - - header->sequence = ntohs((apr_uint16_t)header->sequence); - header->timestamp = ntohl(header->timestamp); - header->ssrc = ntohl(header->ssrc); - - time = apr_time_now(); - - RTP_TRACE("RTP time=%6u ssrc=%8x pt=%3u %cts=%9u seq=%5u size=%"APR_SIZE_T_FMT"\n", - (apr_uint32_t)apr_time_usec(time), - header->ssrc, header->type, (header->marker == 1) ? '*' : ' ', - header->timestamp, header->sequence, size); - if(!receiver->stat.received_packets) { - /* initialization */ - rtp_rx_stat_init(receiver,header,&time); - } - - ssrc_result = rtp_rx_ssrc_update(receiver,header->ssrc); - if(ssrc_result == RTP_SSRC_PROBATION) { - receiver->stat.invalid_packets++; - return FALSE; - } - else if(ssrc_result == RTP_SSRC_RESTART) { - rtp_rx_restart(receiver); - rtp_rx_stat_init(receiver,header,&time); - } - - rtp_rx_seq_update(receiver,(apr_uint16_t)header->sequence); - - if(header->type == descriptor->payload_type) { - /* codec */ - apr_byte_t marker = (apr_byte_t)header->marker; - if(rtp_rx_ts_update(receiver,descriptor,&time,header->timestamp,&marker) == RTP_TS_DRIFT) { - rtp_rx_restart(receiver); - return FALSE; - } - - if(mpf_jitter_buffer_write(receiver->jb,buffer,size,header->timestamp,marker) != JB_OK) { - receiver->stat.discarded_packets++; - rtp_rx_failure_threshold_check(receiver); - } - } - else if(rtp_stream->base->rx_event_descriptor && - header->type == rtp_stream->base->rx_event_descriptor->payload_type) { - /* named event */ - mpf_named_event_frame_t *named_event = (mpf_named_event_frame_t *)buffer; - named_event->duration = ntohs((apr_uint16_t)named_event->duration); - if(mpf_jitter_buffer_event_write(receiver->jb,named_event,header->timestamp,(apr_byte_t)header->marker) != JB_OK) { - receiver->stat.discarded_packets++; - } - } - else if(header->type == RTP_PT_CN) { - /* CN packet */ - receiver->stat.ignored_packets++; - } - else { - /* invalid payload type */ - receiver->stat.ignored_packets++; - } - - return TRUE; -} - -static apt_bool_t rtp_rx_process(mpf_rtp_stream_t *rtp_stream) -{ - char buffer[MAX_RTP_PACKET_SIZE]; - apr_size_t size = sizeof(buffer); - apr_size_t max_count = 5; - while(max_count && apr_socket_recv(rtp_stream->rtp_socket,buffer,&size) == APR_SUCCESS) { - rtp_rx_packet_receive(rtp_stream,buffer,size); - - size = sizeof(buffer); - max_count--; - } - return TRUE; -} - -static apt_bool_t mpf_rtp_stream_receive(mpf_audio_stream_t *stream, mpf_frame_t *frame) -{ - mpf_rtp_stream_t *rtp_stream = stream->obj; - rtp_rx_process(rtp_stream); - - return mpf_jitter_buffer_read(rtp_stream->receiver.jb,frame); -} - - -static apt_bool_t mpf_rtp_tx_stream_open(mpf_audio_stream_t *stream, mpf_codec_t *codec) -{ - apr_size_t frame_size; - mpf_rtp_stream_t *rtp_stream = stream->obj; - rtp_transmitter_t *transmitter = &rtp_stream->transmitter; - - if(!rtp_stream->rtp_socket || !rtp_stream->rtp_l_sockaddr || !rtp_stream->rtp_r_sockaddr) { - return FALSE; - } - - if(!codec) { - return FALSE; - } - - if(!transmitter->ptime) { - if(rtp_stream->settings && rtp_stream->settings->ptime) { - transmitter->ptime = rtp_stream->settings->ptime; - } - else { - transmitter->ptime = 20; - } - } - transmitter->packet_frames = transmitter->ptime / CODEC_FRAME_TIME_BASE; - transmitter->current_frames = 0; - - frame_size = mpf_codec_frame_size_calculate( - stream->tx_descriptor, - codec->attribs); - transmitter->packet_data = apr_palloc( - rtp_stream->pool, - sizeof(rtp_header_t) + transmitter->packet_frames * frame_size); - - transmitter->inactivity = 1; - apt_log(APT_LOG_MARK,APT_PRIO_INFO,"Open RTP Transmitter %s:%hu -> %s:%hu", - rtp_stream->rtp_l_sockaddr->hostname, - rtp_stream->rtp_l_sockaddr->port, - rtp_stream->rtp_r_sockaddr->hostname, - rtp_stream->rtp_r_sockaddr->port); - return TRUE; -} - -static apt_bool_t mpf_rtp_tx_stream_close(mpf_audio_stream_t *stream) -{ - mpf_rtp_stream_t *rtp_stream = stream->obj; - if(!rtp_stream->rtp_l_sockaddr || !rtp_stream->rtp_r_sockaddr) { - return FALSE; - } - apt_log(APT_LOG_MARK,APT_PRIO_INFO,"Close RTP Transmitter %s:%hu -> %s:%hu [s:%u o:%u]", - rtp_stream->rtp_l_sockaddr->hostname, - rtp_stream->rtp_l_sockaddr->port, - rtp_stream->rtp_r_sockaddr->hostname, - rtp_stream->rtp_r_sockaddr->port, - rtp_stream->transmitter.sr_stat.sent_packets, - rtp_stream->transmitter.sr_stat.sent_octets); - return TRUE; -} - - -static APR_INLINE void rtp_header_prepare( - rtp_transmitter_t *transmitter, - rtp_header_t *header, - apr_byte_t payload_type, - apr_byte_t marker, - apr_uint32_t timestamp) -{ - header->version = RTP_VERSION; - header->padding = 0; - header->extension = 0; - header->count = 0; - header->marker = marker; - header->type = payload_type; - header->timestamp = timestamp; - header->ssrc = htonl(transmitter->sr_stat.ssrc); -} - -static APR_INLINE apt_bool_t mpf_rtp_data_send(mpf_rtp_stream_t *rtp_stream, rtp_transmitter_t *transmitter, const mpf_frame_t *frame) -{ - apt_bool_t status = TRUE; - memcpy( - transmitter->packet_data + transmitter->packet_size, - frame->codec_frame.buffer, - frame->codec_frame.size); - transmitter->packet_size += frame->codec_frame.size; - - if(++transmitter->current_frames == transmitter->packet_frames) { - rtp_header_t *header = (rtp_header_t*)transmitter->packet_data; - header->sequence = htons(++transmitter->last_seq_num); - RTP_TRACE("> RTP time=%6u ssrc=%8x pt=%3u %cts=%9u seq=%5hu\n", - (apr_uint32_t)apr_time_usec(apr_time_now()), - transmitter->sr_stat.ssrc, header->type, - (header->marker == 1) ? '*' : ' ', - header->timestamp, transmitter->last_seq_num); - header->timestamp = htonl(header->timestamp); - if(apr_socket_sendto( - rtp_stream->rtp_socket, - rtp_stream->rtp_r_sockaddr, - 0, - transmitter->packet_data, - &transmitter->packet_size) == APR_SUCCESS) { - transmitter->sr_stat.sent_packets++; - transmitter->sr_stat.sent_octets += (apr_uint32_t)transmitter->packet_size - sizeof(rtp_header_t); - } - else { - status = FALSE; - } - transmitter->current_frames = 0; - } - return status; -} - -static APR_INLINE apt_bool_t mpf_rtp_event_send(mpf_rtp_stream_t *rtp_stream, rtp_transmitter_t *transmitter, const mpf_frame_t *frame) -{ - char packet_data[20]; - apr_size_t packet_size = sizeof(rtp_header_t) + sizeof(mpf_named_event_frame_t); - rtp_header_t *header = (rtp_header_t*) packet_data; - mpf_named_event_frame_t *named_event = (mpf_named_event_frame_t*)(header+1); - rtp_header_prepare( - transmitter, - header, - rtp_stream->base->tx_event_descriptor->payload_type, - (frame->marker == MPF_MARKER_START_OF_EVENT) ? 1 : 0, - transmitter->timestamp_base); - - *named_event = frame->event_frame; - named_event->edge = (frame->marker == MPF_MARKER_END_OF_EVENT) ? 1 : 0; - - header->sequence = htons(++transmitter->last_seq_num); - RTP_TRACE("> RTP time=%6u ssrc=%8x pt=%3u %cts=%9u seq=%hu event=%2u dur=%3u %c\n", - (apr_uint32_t)apr_time_usec(apr_time_now()), - transmitter->sr_stat.ssrc, - header->type, (header->marker == 1) ? '*' : ' ', - header->timestamp, transmitter->last_seq_num, - named_event->event_id, named_event->duration, - (named_event->edge == 1) ? '*' : ' '); - header->timestamp = htonl(header->timestamp); - named_event->duration = htons((apr_uint16_t)named_event->duration); - if(apr_socket_sendto( - rtp_stream->rtp_socket, - rtp_stream->rtp_r_sockaddr, - 0, - packet_data, - &packet_size) != APR_SUCCESS) { - return FALSE; - } - transmitter->sr_stat.sent_packets++; - transmitter->sr_stat.sent_octets += sizeof(mpf_named_event_frame_t); - return TRUE; -} - -static apt_bool_t mpf_rtp_stream_transmit(mpf_audio_stream_t *stream, const mpf_frame_t *frame) -{ - apt_bool_t status = TRUE; - mpf_rtp_stream_t *rtp_stream = stream->obj; - rtp_transmitter_t *transmitter = &rtp_stream->transmitter; - - transmitter->timestamp += transmitter->samples_per_frame; - - if(frame->type == MEDIA_FRAME_TYPE_NONE) { - if(!transmitter->inactivity) { - if(transmitter->current_frames == 0) { - /* set inactivity (ptime alligned) */ - transmitter->inactivity = 1; - if(rtp_stream->settings->rtcp == TRUE && rtp_stream->settings->rtcp_bye_policy == RTCP_BYE_PER_TALKSPURT) { - apt_str_t reason = {RTCP_BYE_TALKSPURT_ENDED, sizeof(RTCP_BYE_TALKSPURT_ENDED)-1}; - mpf_rtcp_bye_send(rtp_stream,&reason); - } - } - else { - /* ptime allignment */ - status = mpf_rtp_data_send(rtp_stream,transmitter,frame); - } - } - return status; - } - - if((frame->type & MEDIA_FRAME_TYPE_EVENT) == MEDIA_FRAME_TYPE_EVENT){ - /* transmit event as soon as received */ - if(stream->tx_event_descriptor) { - if(frame->marker == MPF_MARKER_START_OF_EVENT) { - /* store start time (base) of the event */ - transmitter->timestamp_base = transmitter->timestamp; - } - else if(frame->marker == MPF_MARKER_NEW_SEGMENT) { - /* update base in case of long-lasting events */ - transmitter->timestamp_base = transmitter->timestamp; - } - - status = mpf_rtp_event_send(rtp_stream,transmitter,frame); - } - } - - if((frame->type & MEDIA_FRAME_TYPE_AUDIO) == MEDIA_FRAME_TYPE_AUDIO){ - if(transmitter->current_frames == 0) { - rtp_header_t *header = (rtp_header_t*)transmitter->packet_data; - rtp_header_prepare( - transmitter, - header, - stream->tx_descriptor->payload_type, - transmitter->inactivity, - transmitter->timestamp); - transmitter->packet_size = sizeof(rtp_header_t); - if(transmitter->inactivity) { - transmitter->inactivity = 0; - } - } - status = mpf_rtp_data_send(rtp_stream,transmitter,frame); - } - - return status; -} - -static apt_bool_t mpf_socket_create(apr_pool_t *pool, apr_socket_t **socket) -{ - if(!socket) - return FALSE; - - if(apr_socket_create(socket,APR_INET,SOCK_DGRAM,0,pool) != APR_SUCCESS) { - apt_log(APT_LOG_MARK,APT_PRIO_WARNING,"Failed to Create Socket"); - *socket = NULL; - return FALSE; - } - - apr_socket_opt_set(*socket,APR_SO_NONBLOCK,1); - apr_socket_timeout_set(*socket,0); - return TRUE; -} - -static apt_bool_t mpf_socket_bind(apr_socket_t *socket, const char *ip, apr_port_t port, apr_pool_t *pool, apr_sockaddr_t **l_sockaddr) -{ - if(!socket || !l_sockaddr) - return FALSE; - - *l_sockaddr = NULL; - apr_sockaddr_info_get( - l_sockaddr, - ip, - APR_INET, - port, - 0, - pool); - if(!*l_sockaddr) { - apt_log(APT_LOG_MARK,APT_PRIO_WARNING,"Failed to Get Sockaddr %s:%hu",ip,port); - return FALSE; - } - - if(apr_socket_bind(socket,*l_sockaddr) != APR_SUCCESS) { - apt_log(APT_LOG_MARK,APT_PRIO_DEBUG,"Failed to Bind Socket to %s:%hu", ip,port); - return FALSE; - } - return TRUE; -} - -/* Create RTP/RTCP sockets */ -static apt_bool_t mpf_rtp_socket_pair_create(mpf_rtp_stream_t *stream, mpf_rtp_media_descriptor_t *local_media, apt_bool_t bind) -{ - /* Create and optionally bind RTP socket. Return FALSE in case of an error. */ - if(mpf_socket_create(stream->pool,&stream->rtp_socket) == FALSE) { - return FALSE; - } - if(bind == TRUE) { - if(mpf_socket_bind(stream->rtp_socket,local_media->ip.buf,local_media->port,stream->pool,&stream->rtp_l_sockaddr) == FALSE) { - apr_socket_close(stream->rtp_socket); - stream->rtp_socket = NULL; - return FALSE; - } - } - - /* Create and optionally bind RCTP socket. Continue in either way. */ - if(mpf_socket_create(stream->pool,&stream->rtcp_socket) == TRUE && bind == TRUE) { - if(mpf_socket_bind(stream->rtcp_socket,local_media->ip.buf,local_media->port+1,stream->pool,&stream->rtcp_l_sockaddr) == FALSE) { - apr_socket_close(stream->rtcp_socket); - stream->rtcp_socket = NULL; - } - } - return TRUE; -} - -/* Bind RTP/RTCP sockets */ -static apt_bool_t mpf_rtp_socket_pair_bind(mpf_rtp_stream_t *stream, mpf_rtp_media_descriptor_t *local_media) -{ - /* Bind RTP socket. Return FALSE in case of an error. */ - if(mpf_socket_bind(stream->rtp_socket,local_media->ip.buf,local_media->port,stream->pool,&stream->rtp_l_sockaddr) == FALSE) { - return FALSE; - } - - /* Try to bind RTCP socket. Continue in either way. */ - mpf_socket_bind(stream->rtcp_socket,local_media->ip.buf,local_media->port+1,stream->pool,&stream->rtcp_l_sockaddr); - return TRUE; -} - -/* Close RTP/RTCP sockets */ -static void mpf_rtp_socket_pair_close(mpf_rtp_stream_t *stream) -{ - if(stream->rtp_socket) { - apr_socket_close(stream->rtp_socket); - stream->rtp_socket = NULL; - } - if(stream->rtcp_socket) { - apr_socket_close(stream->rtcp_socket); - stream->rtcp_socket = NULL; - } -} - - - -static APR_INLINE void rtcp_sr_generate(mpf_rtp_stream_t *rtp_stream, rtcp_sr_stat_t *sr_stat) -{ - *sr_stat = rtp_stream->transmitter.sr_stat; - apt_ntp_time_get(&sr_stat->ntp_sec, &sr_stat->ntp_frac); - sr_stat->rtp_ts = rtp_stream->transmitter.timestamp; - - apt_log(APT_LOG_MARK,APT_PRIO_INFO,"Generate RTCP SR [ssrc:%u s:%u o:%u ts:%u]", - sr_stat->ssrc, - sr_stat->sent_packets, - sr_stat->sent_octets, - sr_stat->rtp_ts); - rtcp_sr_hton(sr_stat); -} - -static APR_INLINE void rtcp_rr_generate(mpf_rtp_stream_t *rtp_stream, rtcp_rr_stat_t *rr_stat) -{ - *rr_stat = rtp_stream->receiver.rr_stat; - rr_stat->last_seq = rtp_stream->receiver.history.seq_num_max; - - apt_log(APT_LOG_MARK,APT_PRIO_INFO,"Generate RTCP RR [ssrc:%u last_seq:%u j:%u lost:%u frac:%d]", - rr_stat->ssrc, - rr_stat->last_seq, - rr_stat->jitter, - rr_stat->lost, - rr_stat->fraction); - rtcp_rr_hton(rr_stat); -} - -/* Generate either RTCP SR or RTCP RR packet */ -static APR_INLINE apr_size_t rtcp_report_generate(mpf_rtp_stream_t *rtp_stream, rtcp_packet_t *rtcp_packet, apr_size_t length) -{ - apr_size_t offset = 0; - rtcp_header_init(&rtcp_packet->header,RTCP_RR); - if(rtp_stream->base->direction & STREAM_DIRECTION_SEND) { - rtcp_packet->header.pt = RTCP_SR; - } - if(rtp_stream->base->direction & STREAM_DIRECTION_RECEIVE) { - rtcp_packet->header.count = 1; - } - offset += sizeof(rtcp_header_t); - - if(rtcp_packet->header.pt == RTCP_SR) { - rtcp_sr_generate(rtp_stream,&rtcp_packet->r.sr.sr_stat); - offset += sizeof(rtcp_sr_stat_t); - if(rtcp_packet->header.count) { - rtcp_rr_generate(rtp_stream,rtcp_packet->r.sr.rr_stat); - offset += sizeof(rtcp_rr_stat_t); - } - } - else if(rtcp_packet->header.pt == RTCP_RR) { - rtcp_packet->r.rr.ssrc = htonl(rtp_stream->transmitter.sr_stat.ssrc); - rtcp_rr_generate(rtp_stream,rtcp_packet->r.rr.rr_stat); - offset += sizeof(rtcp_packet->r.rr); - } - rtcp_header_length_set(&rtcp_packet->header,offset); - return offset; -} - -/* Generate RTCP SDES packet */ -static APR_INLINE apr_size_t rtcp_sdes_generate(mpf_rtp_stream_t *rtp_stream, rtcp_packet_t *rtcp_packet, apr_size_t length) -{ - rtcp_sdes_item_t *item; - apr_size_t offset = 0; - apr_size_t padding; - rtcp_header_init(&rtcp_packet->header,RTCP_SDES); - offset += sizeof(rtcp_header_t); - - rtcp_packet->header.count ++; - rtcp_packet->r.sdes.ssrc = htonl(rtp_stream->transmitter.sr_stat.ssrc); - offset += sizeof(apr_uint32_t); - - /* insert SDES CNAME item */ - item = &rtcp_packet->r.sdes.item[0]; - item->type = RTCP_SDES_CNAME; - item->length = (apr_byte_t)rtp_stream->local_media->ip.length; - memcpy(item->data,rtp_stream->local_media->ip.buf,item->length); - offset += sizeof(rtcp_sdes_item_t) - 1 + item->length; - - /* terminate with end marker and pad to next 4-octet boundary */ - padding = 4 - (offset & 0x3); - while(padding--) { - item = (rtcp_sdes_item_t*) ((char*)rtcp_packet + offset); - item->type = RTCP_SDES_END; - offset++; - } - - rtcp_header_length_set(&rtcp_packet->header,offset); - return offset; -} - -/* Generate RTCP BYE packet */ -static APR_INLINE apr_size_t rtcp_bye_generate(mpf_rtp_stream_t *rtp_stream, rtcp_packet_t *rtcp_packet, apr_size_t length, apt_str_t *reason) -{ - apr_size_t offset = 0; - rtcp_header_init(&rtcp_packet->header,RTCP_BYE); - offset += sizeof(rtcp_header_t); - - rtcp_packet->r.bye.ssrc[0] = htonl(rtp_stream->transmitter.sr_stat.ssrc); - rtcp_packet->header.count++; - offset += rtcp_packet->header.count * sizeof(apr_uint32_t); - - if(reason->length) { - apr_size_t padding; - - memcpy(rtcp_packet->r.bye.data,reason->buf,reason->length); - rtcp_packet->r.bye.length = (apr_byte_t)reason->length; - offset += rtcp_packet->r.bye.length; - - /* terminate with end marker and pad to next 4-octet boundary */ - padding = 4 - (reason->length & 0x3); - if(padding) { - char *end = rtcp_packet->r.bye.data + reason->length; - memset(end,0,padding); - offset += padding; - } - } - - rtcp_header_length_set(&rtcp_packet->header,offset); - return offset; -} - -/* Send compound RTCP packet (SR/RR + SDES) */ -static apt_bool_t mpf_rtcp_report_send(mpf_rtp_stream_t *rtp_stream) -{ - char buffer[MAX_RTCP_PACKET_SIZE]; - apr_size_t length = 0; - rtcp_packet_t *rtcp_packet; - - if(!rtp_stream->rtcp_socket || !rtp_stream->rtcp_l_sockaddr || !rtp_stream->rtcp_r_sockaddr) { - /* session is not initialized */ - return FALSE; - } - - if(rtp_stream->base->direction != STREAM_DIRECTION_NONE) { - /* update periodic (prior) history */ - rtp_periodic_history_update(&rtp_stream->receiver); - } - - rtcp_packet = (rtcp_packet_t*) (buffer + length); - length += rtcp_report_generate(rtp_stream,rtcp_packet,sizeof(buffer)-length); - - rtcp_packet = (rtcp_packet_t*) (buffer + length); - length += rtcp_sdes_generate(rtp_stream,rtcp_packet,sizeof(buffer)-length); - - apt_log(APT_LOG_MARK,APT_PRIO_INFO,"Send Compound RTCP Packet [%"APR_SIZE_T_FMT" bytes] %s:%hu -> %s:%hu", - length, - rtp_stream->rtcp_l_sockaddr->hostname, - rtp_stream->rtcp_l_sockaddr->port, - rtp_stream->rtcp_r_sockaddr->hostname, - rtp_stream->rtcp_r_sockaddr->port); - if(apr_socket_sendto( - rtp_stream->rtcp_socket, - rtp_stream->rtcp_r_sockaddr, - 0, - buffer, - &length) != APR_SUCCESS) { - apt_log(APT_LOG_MARK,APT_PRIO_WARNING,"Failed to Send Compound RTCP Packet [%"APR_SIZE_T_FMT" bytes] %s:%hu -> %s:%hu", - length, - rtp_stream->rtcp_l_sockaddr->hostname, - rtp_stream->rtcp_l_sockaddr->port, - rtp_stream->rtcp_r_sockaddr->hostname, - rtp_stream->rtcp_r_sockaddr->port); - return FALSE; - } - return TRUE; -} - -/* Send compound RTCP packet (SR/RR + SDES + BYE) */ -static apt_bool_t mpf_rtcp_bye_send(mpf_rtp_stream_t *rtp_stream, apt_str_t *reason) -{ - char buffer[MAX_RTCP_PACKET_SIZE]; - apr_size_t length = 0; - rtcp_packet_t *rtcp_packet; - - if(!rtp_stream->rtcp_socket || !rtp_stream->rtcp_l_sockaddr || !rtp_stream->rtcp_r_sockaddr) { - /* session is not initialized */ - return FALSE; - } - - if(rtp_stream->base->direction != STREAM_DIRECTION_NONE) { - /* update periodic (prior) history */ - rtp_periodic_history_update(&rtp_stream->receiver); - } - - rtcp_packet = (rtcp_packet_t*) (buffer + length); - length += rtcp_report_generate(rtp_stream,rtcp_packet,sizeof(buffer)-length); - - rtcp_packet = (rtcp_packet_t*) (buffer + length); - length += rtcp_sdes_generate(rtp_stream,rtcp_packet,sizeof(buffer)-length); - - rtcp_packet = (rtcp_packet_t*) (buffer + length); - length += rtcp_bye_generate(rtp_stream,rtcp_packet,sizeof(buffer)-length,reason); - - apt_log(APT_LOG_MARK,APT_PRIO_INFO,"Send Compound RTCP Packet [BYE] [%"APR_SIZE_T_FMT" bytes] %s:%hu -> %s:%hu", - length, - rtp_stream->rtcp_l_sockaddr->hostname, - rtp_stream->rtcp_l_sockaddr->port, - rtp_stream->rtcp_r_sockaddr->hostname, - rtp_stream->rtcp_r_sockaddr->port); - if(apr_socket_sendto( - rtp_stream->rtcp_socket, - rtp_stream->rtcp_r_sockaddr, - 0, - buffer, - &length) != APR_SUCCESS) { - apt_log(APT_LOG_MARK,APT_PRIO_WARNING,"Failed to Send Compound RTCP Packet [BYE] [%"APR_SIZE_T_FMT" bytes] %s:%hu -> %s:%hu", - length, - rtp_stream->rtcp_l_sockaddr->hostname, - rtp_stream->rtcp_l_sockaddr->port, - rtp_stream->rtcp_r_sockaddr->hostname, - rtp_stream->rtcp_r_sockaddr->port); - return FALSE; - } - return TRUE; -} - -static APR_INLINE void rtcp_sr_get(mpf_rtp_stream_t *rtp_stream, rtcp_sr_stat_t *sr_stat) -{ - rtcp_sr_ntoh(sr_stat); - apt_log(APT_LOG_MARK,APT_PRIO_INFO,"Get RTCP SR [ssrc:%u s:%u o:%u ts:%u]", - sr_stat->ssrc, - sr_stat->sent_packets, - sr_stat->sent_octets, - sr_stat->rtp_ts); -} - -static APR_INLINE void rtcp_rr_get(mpf_rtp_stream_t *rtp_stream, rtcp_rr_stat_t *rr_stat) -{ - rtcp_rr_ntoh(rr_stat); - apt_log(APT_LOG_MARK,APT_PRIO_INFO,"Get RTCP RR [ssrc:%u last_seq:%u j:%u lost:%u frac:%d]", - rr_stat->ssrc, - rr_stat->last_seq, - rr_stat->jitter, - rr_stat->lost, - rr_stat->fraction); -} - -static apt_bool_t mpf_rtcp_compound_packet_receive(mpf_rtp_stream_t *rtp_stream, char *buffer, apr_size_t length) -{ - rtcp_packet_t *rtcp_packet = (rtcp_packet_t*) buffer; - rtcp_packet_t *rtcp_packet_end; - - rtcp_packet_end = (rtcp_packet_t*)(buffer + length); - - while(rtcp_packet < rtcp_packet_end && rtcp_packet->header.version == RTP_VERSION) { - rtcp_packet->header.length = ntohs((apr_uint16_t)rtcp_packet->header.length); - - if(rtcp_packet->header.pt == RTCP_SR) { - /* RTCP SR */ - rtcp_sr_get(rtp_stream,&rtcp_packet->r.sr.sr_stat); - if(rtcp_packet->header.count) { - rtcp_rr_get(rtp_stream,rtcp_packet->r.sr.rr_stat); - } - } - else if(rtcp_packet->header.pt == RTCP_RR) { - /* RTCP RR */ - rtcp_packet->r.rr.ssrc = ntohl(rtcp_packet->r.rr.ssrc); - if(rtcp_packet->header.count) { - rtcp_rr_get(rtp_stream,rtcp_packet->r.rr.rr_stat); - } - } - else if(rtcp_packet->header.pt == RTCP_SDES) { - /* RTCP SDES */ - } - else if(rtcp_packet->header.pt == RTCP_BYE) { - /* RTCP BYE */ - } - else { - /* unknown RTCP packet */ - } - - /* get next RTCP packet */ - rtcp_packet = (rtcp_packet_t*)((apr_uint32_t*)rtcp_packet + rtcp_packet->header.length + 1); - } - - if(rtcp_packet != rtcp_packet_end) { - apt_log(APT_LOG_MARK,APT_PRIO_WARNING,"Malformed Compound RTCP Packet"); - return FALSE; - } - - return TRUE; -} - -static void mpf_rtcp_tx_timer_proc(apt_timer_t *timer, void *obj) -{ - mpf_rtp_stream_t *rtp_stream = obj; - - /* generate and send RTCP compound report (SR/RR + SDES) */ - mpf_rtcp_report_send(rtp_stream); - - /* re-schedule timer */ - apt_timer_set(timer,rtp_stream->settings->rtcp_tx_interval); -} - -static void mpf_rtcp_rx_timer_proc(apt_timer_t *timer, void *obj) -{ - mpf_rtp_stream_t *rtp_stream = obj; - if(rtp_stream->rtcp_socket && rtp_stream->rtcp_l_sockaddr && rtp_stream->rtcp_r_sockaddr) { - char buffer[MAX_RTCP_PACKET_SIZE]; - apr_size_t length = sizeof(buffer); - - if(apr_socket_recv(rtp_stream->rtcp_socket,buffer,&length) == APR_SUCCESS) { - apt_log(APT_LOG_MARK,APT_PRIO_INFO,"Receive Compound RTCP Packet [%"APR_SIZE_T_FMT" bytes] %s:%hu <- %s:%hu", - length, - rtp_stream->rtcp_l_sockaddr->hostname, - rtp_stream->rtcp_l_sockaddr->port, - rtp_stream->rtcp_r_sockaddr->hostname, - rtp_stream->rtcp_r_sockaddr->port); - mpf_rtcp_compound_packet_receive(rtp_stream,buffer,length); - } - } - - /* re-schedule timer */ - apt_timer_set(timer,rtp_stream->settings->rtcp_rx_resolution); -} diff --git a/libs/unimrcp/libs/mpf/src/mpf_rtp_termination_factory.c b/libs/unimrcp/libs/mpf/src/mpf_rtp_termination_factory.c deleted file mode 100644 index 497c33da410..00000000000 --- a/libs/unimrcp/libs/mpf/src/mpf_rtp_termination_factory.c +++ /dev/null @@ -1,204 +0,0 @@ -/* - * Copyright 2008-2014 Arsen Chaloyan - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - * - * $Id: mpf_rtp_termination_factory.c 2136 2014-07-04 06:33:36Z achaloyan@gmail.com $ - */ - -#include -#include "mpf_termination.h" -#include "mpf_rtp_termination_factory.h" -#include "mpf_rtp_stream.h" -#include "apt_log.h" - -typedef struct media_engine_slot_t media_engine_slot_t; -typedef struct rtp_termination_factory_t rtp_termination_factory_t; - -struct media_engine_slot_t { - mpf_engine_t *media_engine; - mpf_rtp_config_t *rtp_config; -}; - -struct rtp_termination_factory_t { - mpf_termination_factory_t base; - - mpf_rtp_config_t *config; - apr_array_header_t *media_engine_slots; - apr_pool_t *pool; -}; - -static apt_bool_t mpf_rtp_termination_destroy(mpf_termination_t *termination) -{ - return TRUE; -} - -static apt_bool_t mpf_rtp_termination_add(mpf_termination_t *termination, void *descriptor) -{ - apt_bool_t status = TRUE; - mpf_rtp_termination_descriptor_t *rtp_descriptor = descriptor; - mpf_audio_stream_t *audio_stream = termination->audio_stream; - if(!audio_stream) { - int i; - media_engine_slot_t *slot; - rtp_termination_factory_t *rtp_termination_factory = (rtp_termination_factory_t*)termination->termination_factory; - mpf_rtp_config_t *rtp_config = rtp_termination_factory->config; - for(i=0; imedia_engine_slots->nelts; i++) { - slot = &APR_ARRAY_IDX(rtp_termination_factory->media_engine_slots,i,media_engine_slot_t); - if(slot->media_engine == termination->media_engine) { - rtp_config = slot->rtp_config; - break; - } - } - audio_stream = mpf_rtp_stream_create( - termination, - rtp_config, - rtp_descriptor->audio.settings, - termination->pool); - if(!audio_stream) { - return FALSE; - } - termination->audio_stream = audio_stream; - } - - status = mpf_rtp_stream_add(audio_stream); - if(rtp_descriptor) { - status = mpf_rtp_stream_modify(audio_stream,&rtp_descriptor->audio); - } - return status; -} - -static apt_bool_t mpf_rtp_termination_modify(mpf_termination_t *termination, void *descriptor) -{ - apt_bool_t status = TRUE; - mpf_rtp_termination_descriptor_t *rtp_descriptor = descriptor; - mpf_audio_stream_t *audio_stream = termination->audio_stream; - if(!audio_stream) { - return FALSE; - } - - if(rtp_descriptor) { - status = mpf_rtp_stream_modify(audio_stream,&rtp_descriptor->audio); - } - return status; -} - -static apt_bool_t mpf_rtp_termination_subtract(mpf_termination_t *termination) -{ - mpf_audio_stream_t *audio_stream = termination->audio_stream; - if(!audio_stream) { - return FALSE; - } - - return mpf_rtp_stream_remove(audio_stream); -} - -static const mpf_termination_vtable_t rtp_vtable = { - mpf_rtp_termination_destroy, - mpf_rtp_termination_add, - mpf_rtp_termination_modify, - mpf_rtp_termination_subtract -}; - -static mpf_termination_t* mpf_rtp_termination_create(mpf_termination_factory_t *termination_factory, void *obj, apr_pool_t *pool) -{ - mpf_termination_t *termination = mpf_termination_base_create(termination_factory,obj,&rtp_vtable,NULL,NULL,pool); - if(termination) { - termination->name = "rtp-tm"; - } - return termination; -} - -static apt_bool_t mpf_rtp_factory_engine_assign(mpf_termination_factory_t *termination_factory, mpf_engine_t *media_engine) -{ - int i; - media_engine_slot_t *slot; - mpf_rtp_config_t *rtp_config; - rtp_termination_factory_t *rtp_termination_factory; - if(!termination_factory || !media_engine) { - return FALSE; - } - - rtp_termination_factory = (rtp_termination_factory_t *) termination_factory; - for(i=0; imedia_engine_slots->nelts; i++) { - slot = &APR_ARRAY_IDX(rtp_termination_factory->media_engine_slots,i,media_engine_slot_t); - if(slot->media_engine == media_engine) { - /* already exists, just return true */ - return TRUE; - } - } - - slot = apr_array_push(rtp_termination_factory->media_engine_slots); - slot->media_engine = media_engine; - rtp_config = mpf_rtp_config_alloc(rtp_termination_factory->pool); - *rtp_config = *rtp_termination_factory->config; - slot->rtp_config = rtp_config; - - if(rtp_termination_factory->media_engine_slots->nelts > 1) { - mpf_rtp_config_t *rtp_config_prev; - - /* split RTP port range evenly among assigned media engines */ - apr_uint16_t ports_per_engine = (apr_uint16_t)((rtp_termination_factory->config->rtp_port_max - rtp_termination_factory->config->rtp_port_min) / - rtp_termination_factory->media_engine_slots->nelts); - if(ports_per_engine % 2 != 0) { - /* number of ports per engine should be even (RTP/RTCP pair)*/ - ports_per_engine--; - } - /* rewrite max RTP port for the first slot */ - slot = &APR_ARRAY_IDX(rtp_termination_factory->media_engine_slots,0,media_engine_slot_t); - rtp_config_prev = slot->rtp_config; - rtp_config_prev->rtp_port_max = rtp_config_prev->rtp_port_min + ports_per_engine; - - /* rewrite cur, min and max RTP ports for the slots between first and last, if any */ - for(i=1; imedia_engine_slots->nelts-1; i++) { - slot = &APR_ARRAY_IDX(rtp_termination_factory->media_engine_slots,i,media_engine_slot_t); - rtp_config = slot->rtp_config; - rtp_config->rtp_port_min = rtp_config_prev->rtp_port_max; - rtp_config->rtp_port_max = rtp_config->rtp_port_min + ports_per_engine; - - rtp_config->rtp_port_cur = rtp_config->rtp_port_min; - - rtp_config_prev = rtp_config; - } - - /* rewrite cur and min but leave max RTP port for the last slot */ - slot = &APR_ARRAY_IDX(rtp_termination_factory->media_engine_slots, - rtp_termination_factory->media_engine_slots->nelts-1,media_engine_slot_t); - rtp_config = slot->rtp_config; - rtp_config->rtp_port_min = rtp_config_prev->rtp_port_max; - rtp_config->rtp_port_cur = rtp_config->rtp_port_min; - } - return TRUE; -} - -MPF_DECLARE(mpf_termination_factory_t*) mpf_rtp_termination_factory_create( - mpf_rtp_config_t *rtp_config, - apr_pool_t *pool) -{ - rtp_termination_factory_t *rtp_termination_factory; - if(!rtp_config) { - return NULL; - } - rtp_config->rtp_port_cur = rtp_config->rtp_port_min; - rtp_termination_factory = apr_palloc(pool,sizeof(rtp_termination_factory_t)); - rtp_termination_factory->base.create_termination = mpf_rtp_termination_create; - rtp_termination_factory->base.assign_engine = mpf_rtp_factory_engine_assign; - rtp_termination_factory->pool = pool; - rtp_termination_factory->config = rtp_config; - rtp_termination_factory->media_engine_slots = apr_array_make(pool,1,sizeof(media_engine_slot_t)); - apt_log(APT_LOG_MARK,APT_PRIO_NOTICE,"Create RTP Termination Factory %s:[%hu,%hu]", - rtp_config->ip.buf, - rtp_config->rtp_port_min, - rtp_config->rtp_port_max); - return &rtp_termination_factory->base; -} diff --git a/libs/unimrcp/libs/mpf/src/mpf_scheduler.c b/libs/unimrcp/libs/mpf/src/mpf_scheduler.c deleted file mode 100644 index dab8e6b0678..00000000000 --- a/libs/unimrcp/libs/mpf/src/mpf_scheduler.c +++ /dev/null @@ -1,267 +0,0 @@ -/* - * Copyright 2008-2014 Arsen Chaloyan - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - * - * $Id: mpf_scheduler.c 2136 2014-07-04 06:33:36Z achaloyan@gmail.com $ - */ - -#include "mpf_scheduler.h" - -#ifdef WIN32 -#define ENABLE_MULTIMEDIA_TIMERS -#endif - -#ifdef ENABLE_MULTIMEDIA_TIMERS - -#pragma warning(disable:4201) -#include -#include - -#ifndef TIME_KILL_SYNCHRONOUS -#define TIME_KILL_SYNCHRONOUS 0x0100 -#endif - -#else -#include -#endif - - -struct mpf_scheduler_t { - apr_pool_t *pool; - unsigned long resolution; /* scheduler resolution */ - - unsigned long media_resolution; - mpf_scheduler_proc_f media_proc; - void *media_obj; - - unsigned long timer_resolution; - unsigned long timer_elapsed_time; - mpf_scheduler_proc_f timer_proc; - void *timer_obj; - -#ifdef ENABLE_MULTIMEDIA_TIMERS - unsigned int timer_id; -#else - apr_thread_t *thread; - apt_bool_t running; -#endif -}; - -static APR_INLINE void mpf_scheduler_init(mpf_scheduler_t *scheduler); - -/** Create scheduler */ -MPF_DECLARE(mpf_scheduler_t*) mpf_scheduler_create(apr_pool_t *pool) -{ - mpf_scheduler_t *scheduler = apr_palloc(pool,sizeof(mpf_scheduler_t)); - mpf_scheduler_init(scheduler); - scheduler->pool = pool; - scheduler->resolution = 0; - - scheduler->media_resolution = 0; - scheduler->media_obj = NULL; - scheduler->media_proc = NULL; - - scheduler->timer_resolution = 0; - scheduler->timer_elapsed_time = 0; - scheduler->timer_obj = NULL; - scheduler->timer_proc = NULL; - return scheduler; -} - -/** Destroy scheduler */ -MPF_DECLARE(void) mpf_scheduler_destroy(mpf_scheduler_t *scheduler) -{ - /* nothing to destroy */ -} - -/** Set media processing clock */ -MPF_DECLARE(apt_bool_t) mpf_scheduler_media_clock_set( - mpf_scheduler_t *scheduler, - unsigned long resolution, - mpf_scheduler_proc_f proc, - void *obj) -{ - scheduler->media_resolution = resolution; - scheduler->media_proc = proc; - scheduler->media_obj = obj; - return TRUE; -} - -/** Set timer clock */ -MPF_DECLARE(apt_bool_t) mpf_scheduler_timer_clock_set( - mpf_scheduler_t *scheduler, - unsigned long resolution, - mpf_scheduler_proc_f proc, - void *obj) -{ - scheduler->timer_resolution = resolution; - scheduler->timer_elapsed_time = 0; - scheduler->timer_proc = proc; - scheduler->timer_obj = obj; - return TRUE; -} - -/** Set scheduler rate (n times faster than real-time) */ -MPF_DECLARE(apt_bool_t) mpf_scheduler_rate_set( - mpf_scheduler_t *scheduler, - unsigned long rate) -{ - if(rate == 0 || rate > 10) { - /* rate shows how many times scheduler should be faster than real-time, - 1 is the defualt and probably the only reasonable value, - however, the rates up to 10 times faster should be acceptable */ - rate = 1; - } - - scheduler->media_resolution /= rate; - scheduler->timer_resolution /= rate; - return TRUE; -} - -static APR_INLINE void mpf_scheduler_resolution_set(mpf_scheduler_t *scheduler) -{ - if(scheduler->media_resolution) { - scheduler->resolution = scheduler->media_resolution; - } - else if(scheduler->timer_resolution) { - scheduler->resolution = scheduler->timer_resolution; - } -} - - - -#ifdef ENABLE_MULTIMEDIA_TIMERS - -static APR_INLINE void mpf_scheduler_init(mpf_scheduler_t *scheduler) -{ - scheduler->timer_id = 0; -} - -static void CALLBACK mm_timer_proc(UINT uID, UINT uMsg, DWORD_PTR dwUser, DWORD_PTR dw1, DWORD_PTR dw2) -{ - mpf_scheduler_t *scheduler = (mpf_scheduler_t*) dwUser; - if(scheduler->media_proc) { - scheduler->media_proc(scheduler,scheduler->media_obj); - } - - if(scheduler->timer_proc) { - scheduler->timer_elapsed_time += scheduler->resolution; - if(scheduler->timer_elapsed_time >= scheduler->timer_resolution) { - scheduler->timer_elapsed_time = 0; - scheduler->timer_proc(scheduler,scheduler->timer_obj); - } - } -} - -/** Start scheduler */ -MPF_DECLARE(apt_bool_t) mpf_scheduler_start(mpf_scheduler_t *scheduler) -{ - mpf_scheduler_resolution_set(scheduler); - scheduler->timer_id = timeSetEvent( - scheduler->resolution, 0, mm_timer_proc, (DWORD_PTR) scheduler, - TIME_PERIODIC | TIME_CALLBACK_FUNCTION | TIME_KILL_SYNCHRONOUS); - return scheduler->timer_id ? TRUE : FALSE; -} - -/** Stop scheduler */ -MPF_DECLARE(apt_bool_t) mpf_scheduler_stop(mpf_scheduler_t *scheduler) -{ - if(!scheduler) { - return FALSE; - } - - timeKillEvent(scheduler->timer_id); - scheduler->timer_id = 0; - return TRUE; -} - -#else - -#include "apt_task.h" - -static APR_INLINE void mpf_scheduler_init(mpf_scheduler_t *scheduler) -{ - scheduler->thread = NULL; - scheduler->running = FALSE; -} - -static void* APR_THREAD_FUNC timer_thread_proc(apr_thread_t *thread, void *data) -{ - mpf_scheduler_t *scheduler = data; - apr_interval_time_t timeout = scheduler->resolution * 1000; - apr_interval_time_t time_drift = 0; - apr_time_t time_now, time_last; - -#if APR_HAS_SETTHREADNAME - apr_thread_name_set("MPF Scheduler"); -#endif - time_now = apr_time_now(); - while(scheduler->running == TRUE) { - time_last = time_now; - - if(scheduler->media_proc) { - scheduler->media_proc(scheduler,scheduler->media_obj); - } - - if(scheduler->timer_proc) { - scheduler->timer_elapsed_time += scheduler->resolution; - if(scheduler->timer_elapsed_time >= scheduler->timer_resolution) { - scheduler->timer_elapsed_time = 0; - scheduler->timer_proc(scheduler,scheduler->timer_obj); - } - } - - if(timeout > time_drift) { - apr_sleep(timeout - time_drift); - } - - time_now = apr_time_now(); - time_drift += time_now - time_last - timeout; -#if 0 - printf("time_drift=%d\n",time_drift); -#endif - } - - apr_thread_exit(thread,APR_SUCCESS); - return NULL; -} - -MPF_DECLARE(apt_bool_t) mpf_scheduler_start(mpf_scheduler_t *scheduler) -{ - mpf_scheduler_resolution_set(scheduler); - - scheduler->running = TRUE; - if(apr_thread_create(&scheduler->thread,NULL,timer_thread_proc,scheduler,scheduler->pool) != APR_SUCCESS) { - scheduler->running = FALSE; - return FALSE; - } - return TRUE; -} - -MPF_DECLARE(apt_bool_t) mpf_scheduler_stop(mpf_scheduler_t *scheduler) -{ - if(!scheduler) { - return FALSE; - } - - scheduler->running = FALSE; - if(scheduler->thread) { - apr_status_t s; - apr_thread_join(&s,scheduler->thread); - scheduler->thread = NULL; - } - return TRUE; -} - -#endif diff --git a/libs/unimrcp/libs/mpf/src/mpf_stream.c b/libs/unimrcp/libs/mpf/src/mpf_stream.c deleted file mode 100644 index 2c0c890aa25..00000000000 --- a/libs/unimrcp/libs/mpf/src/mpf_stream.c +++ /dev/null @@ -1,160 +0,0 @@ -/* - * Copyright 2008-2014 Arsen Chaloyan - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - * - * $Id: mpf_stream.c 2136 2014-07-04 06:33:36Z achaloyan@gmail.com $ - */ - -#include "mpf_stream.h" - -/** Create stream capabilities */ -MPF_DECLARE(mpf_stream_capabilities_t*) mpf_stream_capabilities_create(mpf_stream_direction_e direction, apr_pool_t *pool) -{ - mpf_stream_capabilities_t *capabilities = (mpf_stream_capabilities_t*)apr_palloc(pool,sizeof(mpf_stream_capabilities_t)); - capabilities->direction = direction; - mpf_codec_capabilities_init(&capabilities->codecs,1,pool); - return capabilities; -} - -/** Clone stream capabilities */ -MPF_DECLARE(mpf_stream_capabilities_t*) mpf_stream_capabilities_clone(const mpf_stream_capabilities_t *src_capabilities, apr_pool_t *pool) -{ - mpf_stream_capabilities_t *capabilities = (mpf_stream_capabilities_t*)apr_palloc(pool,sizeof(mpf_stream_capabilities_t)); - capabilities->direction = src_capabilities->direction; - mpf_codec_capabilities_clone(&capabilities->codecs,&src_capabilities->codecs,pool); - return capabilities; -} - -/** Merge stream capabilities */ -MPF_DECLARE(apt_bool_t) mpf_stream_capabilities_merge(mpf_stream_capabilities_t *capabilities, const mpf_stream_capabilities_t *src_capabilities, apr_pool_t *pool) -{ - capabilities->direction |= src_capabilities->direction; - return mpf_codec_capabilities_merge(&capabilities->codecs,&src_capabilities->codecs,pool); -} - - - -/** Create audio stream */ -MPF_DECLARE(mpf_audio_stream_t*) mpf_audio_stream_create(void *obj, const mpf_audio_stream_vtable_t *vtable, const mpf_stream_capabilities_t *capabilities, apr_pool_t *pool) -{ - mpf_audio_stream_t *stream; - if(!vtable || !capabilities) { - return NULL; - } - - /* validate required fields */ - if(capabilities->direction & STREAM_DIRECTION_SEND) { - /* validate sink */ - if(!vtable->write_frame) { - return NULL; - } - } - if(capabilities->direction & STREAM_DIRECTION_RECEIVE) { - /* validate source */ - if(!vtable->read_frame) { - return NULL; - } - } - - stream = (mpf_audio_stream_t*)apr_palloc(pool,sizeof(mpf_audio_stream_t)); - stream->obj = obj; - stream->vtable = vtable; - stream->termination = NULL; - stream->capabilities = capabilities; - stream->direction = capabilities->direction; - stream->rx_descriptor = NULL; - stream->rx_event_descriptor = NULL; - stream->tx_descriptor = NULL; - stream->tx_event_descriptor = NULL; - return stream; -} - -/** Validate audio stream receiver */ -MPF_DECLARE(apt_bool_t) mpf_audio_stream_rx_validate( - mpf_audio_stream_t *stream, - const mpf_codec_descriptor_t *descriptor, - const mpf_codec_descriptor_t *event_descriptor, - apr_pool_t *pool) -{ - if(!stream->capabilities) { - return FALSE; - } - - if(!stream->rx_descriptor) { - stream->rx_descriptor = mpf_codec_descriptor_create_by_capabilities(&stream->capabilities->codecs,descriptor,pool); - } - if(!stream->rx_event_descriptor) { - if(stream->capabilities->codecs.allow_named_events == TRUE && event_descriptor) { - stream->rx_event_descriptor = apr_palloc(pool,sizeof(mpf_codec_descriptor_t)); - *stream->rx_event_descriptor = *event_descriptor; - } - } - - return stream->rx_descriptor ? TRUE : FALSE; -} - -/** Validate audio stream transmitter */ -MPF_DECLARE(apt_bool_t) mpf_audio_stream_tx_validate( - mpf_audio_stream_t *stream, - const mpf_codec_descriptor_t *descriptor, - const mpf_codec_descriptor_t *event_descriptor, - apr_pool_t *pool) -{ - if(!stream->capabilities) { - return FALSE; - } - - if(!stream->tx_descriptor) { - stream->tx_descriptor = mpf_codec_descriptor_create_by_capabilities(&stream->capabilities->codecs,descriptor,pool); - } - if(!stream->tx_event_descriptor) { - if(stream->capabilities->codecs.allow_named_events == TRUE && event_descriptor) { - stream->tx_event_descriptor = apr_palloc(pool,sizeof(mpf_codec_descriptor_t)); - *stream->tx_event_descriptor = *event_descriptor; - } - } - return stream->tx_descriptor ? TRUE : FALSE; -} - -/** Trace media path */ -MPF_DECLARE(void) mpf_audio_stream_trace(mpf_audio_stream_t *stream, mpf_stream_direction_e direction, apt_text_stream_t *output) -{ - if(stream->vtable->trace) { - stream->vtable->trace(stream,direction,output); - return; - } - - if(direction & STREAM_DIRECTION_SEND) { - mpf_codec_descriptor_t *descriptor = stream->tx_descriptor; - if(descriptor) { - apr_size_t offset = output->pos - output->text.buf; - output->pos += apr_snprintf(output->pos, output->text.length - offset, - "[%s/%d/%d]->Sink", - descriptor->name.buf, - descriptor->sampling_rate, - descriptor->channel_count); - } - } - if(direction & STREAM_DIRECTION_RECEIVE) { - mpf_codec_descriptor_t *descriptor = stream->rx_descriptor; - if(descriptor) { - apr_size_t offset = output->pos - output->text.buf; - output->pos += apr_snprintf(output->pos, output->text.length - offset, - "Source->[%s/%d/%d]", - descriptor->name.buf, - descriptor->sampling_rate, - descriptor->channel_count); - } - } -} diff --git a/libs/unimrcp/libs/mpf/src/mpf_termination.c b/libs/unimrcp/libs/mpf/src/mpf_termination.c deleted file mode 100644 index 23e7a3aaaaf..00000000000 --- a/libs/unimrcp/libs/mpf/src/mpf_termination.c +++ /dev/null @@ -1,75 +0,0 @@ -/* - * Copyright 2008-2014 Arsen Chaloyan - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - * - * $Id: mpf_termination.c 2136 2014-07-04 06:33:36Z achaloyan@gmail.com $ - */ - -#include "mpf_termination.h" -#include "mpf_stream.h" -#include "mpf_codec_manager.h" - -MPF_DECLARE(mpf_termination_t*) mpf_termination_base_create( - mpf_termination_factory_t *termination_factory, - void *obj, - const mpf_termination_vtable_t *vtable, - mpf_audio_stream_t *audio_stream, - mpf_video_stream_t *video_stream, - apr_pool_t *pool) -{ - mpf_termination_t *termination = apr_palloc(pool,sizeof(mpf_termination_t)); - termination->pool = pool; - termination->name = "media-tm"; - termination->obj = obj; - termination->media_engine = NULL; - termination->event_handler = NULL; - termination->codec_manager = NULL; - termination->timer_queue = NULL; - termination->termination_factory = termination_factory; - termination->vtable = vtable; - termination->slot = 0; - if(audio_stream) { - audio_stream->termination = termination; - } - if(video_stream) { - video_stream->termination = termination; - } - termination->audio_stream = audio_stream; - termination->video_stream = video_stream; - return termination; -} - -MPF_DECLARE(apt_bool_t) mpf_termination_add(mpf_termination_t *termination, void *descriptor) -{ - if(termination->vtable && termination->vtable->add) { - termination->vtable->add(termination,descriptor); - } - return TRUE; -} - -MPF_DECLARE(apt_bool_t) mpf_termination_modify(mpf_termination_t *termination, void *descriptor) -{ - if(termination->vtable && termination->vtable->modify) { - termination->vtable->modify(termination,descriptor); - } - return TRUE; -} - -MPF_DECLARE(apt_bool_t) mpf_termination_subtract(mpf_termination_t *termination) -{ - if(termination->vtable && termination->vtable->subtract) { - termination->vtable->subtract(termination); - } - return TRUE; -} diff --git a/libs/unimrcp/libs/mpf/src/mpf_termination_factory.c b/libs/unimrcp/libs/mpf/src/mpf_termination_factory.c deleted file mode 100644 index f8d0034c8b2..00000000000 --- a/libs/unimrcp/libs/mpf/src/mpf_termination_factory.c +++ /dev/null @@ -1,85 +0,0 @@ -/* - * Copyright 2008-2014 Arsen Chaloyan - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - * - * $Id: mpf_termination_factory.c 2136 2014-07-04 06:33:36Z achaloyan@gmail.com $ - */ - -#include "mpf_termination_factory.h" -#include "mpf_termination.h" - -/** Assign media engine to termination factory */ -MPF_DECLARE(apt_bool_t) mpf_termination_factory_engine_assign( - mpf_termination_factory_t *termination_factory, - mpf_engine_t *media_engine) -{ - if(termination_factory && termination_factory->assign_engine && media_engine) { - return termination_factory->assign_engine(termination_factory,media_engine); - } - return FALSE; -} - -/** Create MPF termination from termination factory */ -MPF_DECLARE(mpf_termination_t*) mpf_termination_create( - mpf_termination_factory_t *termination_factory, - void *obj, - apr_pool_t *pool) -{ - if(termination_factory && termination_factory->create_termination) { - return termination_factory->create_termination(termination_factory,obj,pool); - } - return NULL; -} - -/** Create raw MPF termination. */ -MPF_DECLARE(mpf_termination_t*) mpf_raw_termination_create( - void *obj, - mpf_audio_stream_t *audio_stream, - mpf_video_stream_t *video_stream, - apr_pool_t *pool) -{ - return mpf_termination_base_create(NULL,obj,NULL,audio_stream,video_stream,pool); -} - -MPF_DECLARE(apt_bool_t) mpf_termination_destroy(mpf_termination_t *termination) -{ - if(termination->vtable && termination->vtable->destroy) { - termination->vtable->destroy(termination); - } - return TRUE; -} - -/** Get termination name */ -MPF_DECLARE(const char*) mpf_termination_name_get(const mpf_termination_t *termination) -{ - return termination->name; -} - -/** Get associated object. */ -MPF_DECLARE(void*) mpf_termination_object_get(const mpf_termination_t *termination) -{ - return termination->obj; -} - -/** Get audio stream. */ -MPF_DECLARE(mpf_audio_stream_t*) mpf_termination_audio_stream_get(const mpf_termination_t *termination) -{ - return termination->audio_stream; -} - -/** Get video stream. */ -MPF_DECLARE(mpf_video_stream_t*) mpf_termination_video_stream_get(const mpf_termination_t *termination) -{ - return termination->video_stream; -} diff --git a/libs/unimrcp/libs/mrcp-client/Makefile.am b/libs/unimrcp/libs/mrcp-client/Makefile.am deleted file mode 100644 index dfbacdcb770..00000000000 --- a/libs/unimrcp/libs/mrcp-client/Makefile.am +++ /dev/null @@ -1,23 +0,0 @@ -MAINTAINERCLEANFILES = Makefile.in - -AM_CPPFLAGS = -I$(top_srcdir)/libs/mrcp-client/include \ - -I$(top_srcdir)/libs/mrcp-signaling/include \ - -I$(top_srcdir)/libs/mrcpv2-transport/include \ - -I$(top_srcdir)/libs/mrcp/include \ - -I$(top_srcdir)/libs/mrcp/message/include \ - -I$(top_srcdir)/libs/mrcp/control/include \ - -I$(top_srcdir)/libs/mrcp/resources/include \ - -I$(top_srcdir)/libs/mpf/include \ - -I$(top_srcdir)/libs/apr-toolkit/include \ - $(UNIMRCP_APR_INCLUDES) - -noinst_LTLIBRARIES = libmrcpclient.la - -include_HEADERS = include/mrcp_client_types.h \ - include/mrcp_client.h \ - include/mrcp_client_session.h \ - include/mrcp_application.h - -libmrcpclient_la_SOURCES = src/mrcp_client.c \ - src/mrcp_client_session.c \ - src/mrcp_application.c diff --git a/libs/unimrcp/libs/mrcp-client/include/mrcp_application.h b/libs/unimrcp/libs/mrcp-client/include/mrcp_application.h deleted file mode 100644 index 3770e77ece6..00000000000 --- a/libs/unimrcp/libs/mrcp-client/include/mrcp_application.h +++ /dev/null @@ -1,360 +0,0 @@ -/* - * Copyright 2008-2014 Arsen Chaloyan - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - * - * $Id: mrcp_application.h 2136 2014-07-04 06:33:36Z achaloyan@gmail.com $ - */ - -#ifndef MRCP_APPLICATION_H -#define MRCP_APPLICATION_H - -/** - * @file mrcp_application.h - * @brief MRCP User Level Application Interface - */ - -#include "mrcp_client_types.h" -#include "mpf_rtp_descriptor.h" -#include "mpf_stream.h" - -APT_BEGIN_EXTERN_C - -/** MRCP application message declaration */ -typedef struct mrcp_app_message_t mrcp_app_message_t; - -/** MRCP signaling message declaration */ -typedef struct mrcp_sig_message_t mrcp_sig_message_t; - -/** MRCP application message dispatcher declaration */ -typedef struct mrcp_app_message_dispatcher_t mrcp_app_message_dispatcher_t; - -/** MRCP application message handler */ -typedef apt_bool_t (*mrcp_app_message_handler_f)(const mrcp_app_message_t *app_message); - -/** Enumeration of MRCP signaling message types */ -typedef enum { - MRCP_SIG_MESSAGE_TYPE_REQUEST, /**< request message */ - MRCP_SIG_MESSAGE_TYPE_RESPONSE, /**< response message */ - MRCP_SIG_MESSAGE_TYPE_EVENT /**< event message */ -} mrcp_sig_message_type_e; - -/** Enumeration of MRCP signaling status codes */ -typedef enum { - MRCP_SIG_STATUS_CODE_SUCCESS, /**< indicates success */ - MRCP_SIG_STATUS_CODE_FAILURE, /**< request failed */ - MRCP_SIG_STATUS_CODE_TERMINATE, /**< request failed, session/channel/connection unexpectedly terminated */ - MRCP_SIG_STATUS_CODE_CANCEL /**< request cancelled */ -} mrcp_sig_status_code_e; - - -/** Enumeration of MRCP signaling commands (requests/responses) */ -typedef enum { - MRCP_SIG_COMMAND_SESSION_UPDATE, - MRCP_SIG_COMMAND_SESSION_TERMINATE, - MRCP_SIG_COMMAND_CHANNEL_ADD, - MRCP_SIG_COMMAND_CHANNEL_REMOVE, - MRCP_SIG_COMMAND_RESOURCE_DISCOVER -} mrcp_sig_command_e; - -/** Enumeration of MRCP signaling events */ -typedef enum { - MRCP_SIG_EVENT_TERMINATE -} mrcp_sig_event_e; - - -/** Enumeration of MRCP application message types */ -typedef enum { - MRCP_APP_MESSAGE_TYPE_SIGNALING, /**< signaling message type */ - MRCP_APP_MESSAGE_TYPE_CONTROL /**< control message type */ -} mrcp_app_message_type_e; - -/** MRCP signaling message definition */ -struct mrcp_sig_message_t { - /** Message type (request/response/event) */ - mrcp_sig_message_type_e message_type; - /** Command (request/response) identifier */ - mrcp_sig_command_e command_id; - /** Event identifier */ - mrcp_sig_event_e event_id; - /** Status code used in response */ - mrcp_sig_status_code_e status; -}; - - -/** MRCP application message definition */ -struct mrcp_app_message_t { - /** Message type (signaling/control) */ - mrcp_app_message_type_e message_type; - - /** Application */ - mrcp_application_t *application; - /** Session */ - mrcp_session_t *session; - /** Channel */ - mrcp_channel_t *channel; - /** Session/resource descriptor */ - mrcp_session_descriptor_t *descriptor; - - /** MRCP signaling message (used if message_type == MRCP_APP_MESSAGE_SIGNALING) */ - mrcp_sig_message_t sig_message; - /** MRCP control message (used if message_type == MRCP_APP_MESSAGE_CONTROL) */ - mrcp_message_t *control_message; -}; - -/** MRCP application message dispatcher interface */ -struct mrcp_app_message_dispatcher_t { - /** Response to mrcp_application_session_update()request */ - apt_bool_t (*on_session_update)(mrcp_application_t *application, mrcp_session_t *session, mrcp_sig_status_code_e status); - /** Response to mrcp_application_session_terminate()request */ - apt_bool_t (*on_session_terminate)(mrcp_application_t *application, mrcp_session_t *session, mrcp_sig_status_code_e status); - - /** Response to mrcp_application_channel_add() request */ - apt_bool_t (*on_channel_add)(mrcp_application_t *application, mrcp_session_t *session, mrcp_channel_t *channel, mrcp_sig_status_code_e status); - /** Response to mrcp_application_channel_remove() request */ - apt_bool_t (*on_channel_remove)(mrcp_application_t *application, mrcp_session_t *session, mrcp_channel_t *channel, mrcp_sig_status_code_e status); - - /** Response (event) to mrcp_application_message_send() request */ - apt_bool_t (*on_message_receive)(mrcp_application_t *application, mrcp_session_t *session, mrcp_channel_t *channel, mrcp_message_t *message); - - /** Event indicating unexpected session/channel termination */ - apt_bool_t (*on_terminate_event)(mrcp_application_t *application, mrcp_session_t *session, mrcp_channel_t *channel); - - /** Response to mrcp_application_resource_discover() request */ - apt_bool_t (*on_resource_discover)(mrcp_application_t *application, mrcp_session_t *session, mrcp_session_descriptor_t *descriptor, mrcp_sig_status_code_e status); -}; - - - -/** - * Create application instance. - * @param handler the event handler - * @param obj the external object - * @param pool the pool to allocate memory from - */ -MRCP_DECLARE(mrcp_application_t*) mrcp_application_create(const mrcp_app_message_handler_f handler, void *obj, apr_pool_t *pool); - -/** - * Destroy application instance. - * @param application the application to destroy - */ -MRCP_DECLARE(apt_bool_t) mrcp_application_destroy(mrcp_application_t *application); - -/** - * Get external object associated with the application. - * @param application the application to get object from - */ -MRCP_DECLARE(void*) mrcp_application_object_get(const mrcp_application_t *application); - -/** - * Get dir layout structure. - * @param application the application to get dir layout from - */ -MRCP_DECLARE(const apt_dir_layout_t*) mrcp_application_dir_layout_get(const mrcp_application_t *application); - -/** - * Create session. - * @param application the entire application - * @param profile the name of the profile to use - * @param obj the external object - * @return the created session instance - */ -MRCP_DECLARE(mrcp_session_t*) mrcp_application_session_create(mrcp_application_t *application, const char *profile, void *obj); - -/** - * Get memory pool the session object is created out of. - * @param session the session to get pool from - */ -MRCP_DECLARE(apr_pool_t*) mrcp_application_session_pool_get(const mrcp_session_t *session); - -/** - * Get session identifier. - * @param session the session to get identifier of - */ -MRCP_DECLARE(const apt_str_t*) mrcp_application_session_id_get(const mrcp_session_t *session); - -/** - * Get SIP or RTSP response code. - * @param session the session to use - */ -MRCP_DECLARE(int) mrcp_application_session_response_code_get(const mrcp_session_t *session); - -/** - * Get external object associated with the session. - * @param session the session to get object from - */ -MRCP_DECLARE(void*) mrcp_application_session_object_get(const mrcp_session_t *session); - -/** - * Set (associate) external object to the session. - * @param session the session to set object for - * @param obj the object to set - */ -MRCP_DECLARE(void) mrcp_application_session_object_set(mrcp_session_t *session, void *obj); - -/** - * Set name of the session (informative only used for debugging). - * @param session the session to set name for - * @param name the name to set - */ -MRCP_DECLARE(void) mrcp_application_session_name_set(mrcp_session_t *session, const char *name); - -/** - * Send session update request. - * @param session the session to update - */ -MRCP_DECLARE(apt_bool_t) mrcp_application_session_update(mrcp_session_t *session); - -/** - * Send session termination request. - * @param session the session to terminate - */ -MRCP_DECLARE(apt_bool_t) mrcp_application_session_terminate(mrcp_session_t *session); - -/** - * Destroy client session (session must be terminated prior to destroy). - * @param session the session to destroy - */ -MRCP_DECLARE(apt_bool_t) mrcp_application_session_destroy(mrcp_session_t *session); - - -/** - * Create control channel. - * @param session the session to create channel for - * @param resource_id the resource identifier of the channel - * @param termination the media termination - * @param rtp_descriptor the RTP termination descriptor (NULL by default) - * @param obj the external object - */ -MRCP_DECLARE(mrcp_channel_t*) mrcp_application_channel_create( - mrcp_session_t *session, - mrcp_resource_id resource_id, - mpf_termination_t *termination, - mpf_rtp_termination_descriptor_t *rtp_descriptor, - void *obj); - -/** - * Get external object associated with the channel. - * @param channel the channel to get object from - */ -MRCP_DECLARE(void*) mrcp_application_channel_object_get(const mrcp_channel_t *channel); - -/** - * Get RTP termination descriptor. - * @param channel the channel to get descriptor from - */ -MRCP_DECLARE(mpf_rtp_termination_descriptor_t*) mrcp_application_rtp_descriptor_get(const mrcp_channel_t *channel); - -/** - * Get codec descriptor of source stream. - * @param channel the channel to get descriptor from - */ -MRCP_DECLARE(const mpf_codec_descriptor_t*) mrcp_application_source_descriptor_get(const mrcp_channel_t *channel); - -/** - * Get codec descriptor of sink stream. - * @param channel the channel to get descriptor from - */ -MRCP_DECLARE(const mpf_codec_descriptor_t*) mrcp_application_sink_descriptor_get(const mrcp_channel_t *channel); - -/** - * Get associated audio stream. - * @param channel the channel to get associated stream from - */ -MRCP_DECLARE(const mpf_audio_stream_t*) mrcp_application_audio_stream_get(const mrcp_channel_t *channel); - -/** - * Send channel add request. - * @param session the session to create channel for - * @param channel the control channel - */ -MRCP_DECLARE(apt_bool_t) mrcp_application_channel_add(mrcp_session_t *session, mrcp_channel_t *channel); - -/** - * Create MRCP message. - * @param session the session - * @param channel the control channel - * @param method_id the method identifier of MRCP message - */ -MRCP_DECLARE(mrcp_message_t*) mrcp_application_message_create(mrcp_session_t *session, mrcp_channel_t *channel, mrcp_method_id method_id); - -/** - * Send MRCP message. - * @param session the session - * @param channel the control channel - * @param message the MRCP message to send - */ -MRCP_DECLARE(apt_bool_t) mrcp_application_message_send(mrcp_session_t *session, mrcp_channel_t *channel, mrcp_message_t *message); - -/** - * Remove channel. - * @param session the session to remove channel from - * @param channel the control channel to remove - */ -MRCP_DECLARE(apt_bool_t) mrcp_application_channel_remove(mrcp_session_t *session, mrcp_channel_t *channel); - -/** - * Discover resources. - * @param session the session to use as communication object - */ -MRCP_DECLARE(apt_bool_t) mrcp_application_resource_discover(mrcp_session_t *session); - -/** - * Dispatch application message. - * @param dispatcher the dispatcher inteface - * @param app_message the message to dispatch - */ -MRCP_DECLARE(apt_bool_t) mrcp_application_message_dispatch(const mrcp_app_message_dispatcher_t *dispatcher, const mrcp_app_message_t *app_message); - -/** - * Create audio termination - * @param session the session to create termination for - * @param stream_vtable the virtual table of audio stream - * @param capabilities the capabilities of the stream - * @param obj the external object - */ -MRCP_DECLARE(mpf_termination_t*) mrcp_application_audio_termination_create( - mrcp_session_t *session, - const mpf_audio_stream_vtable_t *stream_vtable, - mpf_stream_capabilities_t *capabilities, - void *obj); -/** - * Create source media termination - * @param session the session to create termination for - * @param stream_vtable the virtual table of audio stream - * @param codec_descriptor the descriptor of audio stream (NULL by default) - * @param obj the external object - * @deprecated @see mrcp_application_audio_termination_create() - */ -MRCP_DECLARE(mpf_termination_t*) mrcp_application_source_termination_create( - mrcp_session_t *session, - const mpf_audio_stream_vtable_t *stream_vtable, - mpf_codec_descriptor_t *codec_descriptor, - void *obj); -/** - * Create sink media termination - * @param session the session to create termination for - * @param stream_vtable the virtual table of audio stream - * @param codec_descriptor the descriptor of audio stream (NULL by default) - * @param obj the external object - * @deprecated @see mrcp_application_audio_termination_create() - */ -MRCP_DECLARE(mpf_termination_t*) mrcp_application_sink_termination_create( - mrcp_session_t *session, - const mpf_audio_stream_vtable_t *stream_vtable, - mpf_codec_descriptor_t *codec_descriptor, - void *obj); - -APT_END_EXTERN_C - -#endif /* MRCP_APPLICATION_H */ diff --git a/libs/unimrcp/libs/mrcp-client/include/mrcp_client.h b/libs/unimrcp/libs/mrcp-client/include/mrcp_client.h deleted file mode 100644 index 87d36e21fe8..00000000000 --- a/libs/unimrcp/libs/mrcp-client/include/mrcp_client.h +++ /dev/null @@ -1,254 +0,0 @@ -/* - * Copyright 2008-2014 Arsen Chaloyan - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - * - * $Id: mrcp_client.h 2251 2014-11-21 02:36:44Z achaloyan@gmail.com $ - */ - -#ifndef MRCP_CLIENT_H -#define MRCP_CLIENT_H - -/** - * @file mrcp_client.h - * @brief MRCP Client - */ - -#include "mrcp_client_types.h" -#include "mpf_rtp_descriptor.h" -#include "apt_task.h" - -APT_BEGIN_EXTERN_C - -/** Event handler used in case of asynchronous start */ -typedef void (*mrcp_client_handler_f)(apt_bool_t status); - -/** - * Create MRCP client instance. - * @return the created client instance - */ -MRCP_DECLARE(mrcp_client_t*) mrcp_client_create(apt_dir_layout_t *dir_layout); - -/** - * Set asynchronous start mode. - * @param client the MRCP client to set mode for - * @param handler the event handler to signal start completion - */ -MRCP_DECLARE(void) mrcp_client_async_start_set(mrcp_client_t *client, mrcp_client_handler_f handler); - - -/** - * Start message processing loop. - * @param client the MRCP client to start - * @return the created client instance - */ -MRCP_DECLARE(apt_bool_t) mrcp_client_start(mrcp_client_t *client); - -/** - * Shutdown message processing loop. - * @param client the MRCP client to shutdown - */ -MRCP_DECLARE(apt_bool_t) mrcp_client_shutdown(mrcp_client_t *client); - -/** - * Destroy MRCP client. - * @param client the MRCP client to destroy - */ -MRCP_DECLARE(apt_bool_t) mrcp_client_destroy(mrcp_client_t *client); - - -/** - * Register MRCP resource factory. - * @param client the MRCP client to set resource factory for - * @param resource_factory the resource factory to set - */ -MRCP_DECLARE(apt_bool_t) mrcp_client_resource_factory_register(mrcp_client_t *client, mrcp_resource_factory_t *resource_factory); - -/** - * Register codec manager. - * @param client the MRCP client to set codec manager for - * @param codec_manager the codec manager to set - */ -MRCP_DECLARE(apt_bool_t) mrcp_client_codec_manager_register(mrcp_client_t *client, mpf_codec_manager_t *codec_manager); - -/** - * Get registered codec manager. - * @param client the MRCP client to get codec manager from - */ -MRCP_DECLARE(const mpf_codec_manager_t*) mrcp_client_codec_manager_get(const mrcp_client_t *client); - -/** - * Register media engine. - * @param client the MRCP client to set media engine for - * @param media_engine the media engine to set - */ -MRCP_DECLARE(apt_bool_t) mrcp_client_media_engine_register(mrcp_client_t *client, mpf_engine_t *media_engine); - -/** - * Register RTP termination factory. - * @param client the MRCP client to set termination factory for - * @param rtp_termination_factory the termination factory - * @param name the name of the factory - */ -MRCP_DECLARE(apt_bool_t) mrcp_client_rtp_factory_register(mrcp_client_t *client, mpf_termination_factory_t *rtp_termination_factory, const char *name); - -/** - * Register RTP settings. - * @param client the MRCP client to set RTP settings for - * @param rtp_settings the settings to set - * @param name the name of the settings - */ -MRCP_DECLARE(apt_bool_t) mrcp_client_rtp_settings_register(mrcp_client_t *client, mpf_rtp_settings_t *rtp_settings, const char *name); - -/** - * Register MRCP signaling agent. - * @param client the MRCP client to set signaling agent for - * @param signaling_agent the signaling agent to set - */ -MRCP_DECLARE(apt_bool_t) mrcp_client_signaling_agent_register(mrcp_client_t *client, mrcp_sig_agent_t *signaling_agent); - -/** - * Register MRCP signaling settings. - * @param client the MRCP client to set signaling settings for - * @param signaling_settings the signaling settings to set - * @param name the name of the agent - */ -MRCP_DECLARE(apt_bool_t) mrcp_client_signaling_settings_register(mrcp_client_t *client, mrcp_sig_settings_t *signaling_settings, const char *name); - -/** - * Register MRCP connection agent (MRCPv2 only). - * @param client the MRCP client to set connection agent for - * @param connection_agent the connection agent to set - */ -MRCP_DECLARE(apt_bool_t) mrcp_client_connection_agent_register(mrcp_client_t *client, mrcp_connection_agent_t *connection_agent); - -/** Create MRCP profile */ -MRCP_DECLARE(mrcp_client_profile_t*) mrcp_client_profile_create( - mrcp_resource_factory_t *resource_factory, - mrcp_sig_agent_t *signaling_agent, - mrcp_connection_agent_t *connection_agent, - mpf_engine_t *media_engine, - mpf_termination_factory_t *rtp_factory, - mpf_rtp_settings_t *rtp_settings, - mrcp_sig_settings_t *signaling_settings, - apr_pool_t *pool); - -/** Create MRCP profile (extended version) */ -MRCP_DECLARE(mrcp_client_profile_t*) mrcp_client_profile_create_ex( - mrcp_version_e mrcp_version, - mrcp_resource_factory_t *resource_factory, - mrcp_sa_factory_t *sa_factory, - mrcp_ca_factory_t *ca_factory, - mpf_engine_factory_t *mpf_factory, - mpf_termination_factory_t *rtp_factory, - mpf_rtp_settings_t *rtp_settings, - mrcp_sig_settings_t *signaling_settings, - apr_pool_t *pool); - -/** - * Set a tag to the profile. - * @param profile the profile to set a tag for - * @param tag the tag to set - */ -MRCP_DECLARE(void) mrcp_client_profile_tag_set(mrcp_client_profile_t *profile, const char *tag); - -/** - * Register MRCP profile. - * @param client the MRCP client to set profile for - * @param profile the profile to set - * @param name the name of the profile - */ -MRCP_DECLARE(apt_bool_t) mrcp_client_profile_register(mrcp_client_t *client, mrcp_client_profile_t *profile, const char *name); - -/** - * Register MRCP application. - * @param client the MRCP client to set application for - * @param application the application to set - * @param name the name of the application - */ -MRCP_DECLARE(apt_bool_t) mrcp_client_application_register(mrcp_client_t *client, mrcp_application_t *application, const char *name); - -/** - * Get memory pool. - * @param client the MRCP client to get memory pool from - */ -MRCP_DECLARE(apr_pool_t*) mrcp_client_memory_pool_get(const mrcp_client_t *client); - -/** - * Get media engine by name. - * @param client the MRCP client to get media engine from - * @param name the name of the media engine to lookup - */ -MRCP_DECLARE(mpf_engine_t*) mrcp_client_media_engine_get(const mrcp_client_t *client, const char *name); - -/** - * Get RTP termination factory by name. - * @param client the MRCP client to get from - * @param name the name to lookup - */ -MRCP_DECLARE(mpf_termination_factory_t*) mrcp_client_rtp_factory_get(const mrcp_client_t *client, const char *name); - -/** - * Get RTP settings by name - * @param client the MRCP client to get from - * @param name the name to lookup - */ -MRCP_DECLARE(mpf_rtp_settings_t*) mrcp_client_rtp_settings_get(const mrcp_client_t *client, const char *name); - -/** - * Get signaling agent by name. - * @param client the MRCP client to get from - * @param name the name to lookup - */ -MRCP_DECLARE(mrcp_sig_agent_t*) mrcp_client_signaling_agent_get(const mrcp_client_t *client, const char *name); - -/** - * Get signaling settings by name. - * @param client the MRCP client to get from - * @param name the name to lookup - */ -MRCP_DECLARE(mrcp_sig_settings_t*) mrcp_client_signaling_settings_get(const mrcp_client_t *client, const char *name); - -/** - * Get connection agent by name. - * @param client the MRCP client to get from - * @param name the name to lookup - */ -MRCP_DECLARE(mrcp_connection_agent_t*) mrcp_client_connection_agent_get(const mrcp_client_t *client, const char *name); - -/** - * Get profile by name. - * @param client the MRCP client to get from - * @param name the name to lookup - */ -MRCP_DECLARE(mrcp_client_profile_t*) mrcp_client_profile_get(const mrcp_client_t *client, const char *name); - -/** - * Get available profiles. - * @param client the MRCP client to get the profile from - * @param profiles the array of profiles to be filled in - * @param count the max number of profiles on entry; and the number of profiles filled in on exit - * @param tag the tag to be used as a filter (no filter is specified if tag is NULL) - * @return FALSE if the provided max number of profiles is less than the actual number of profiles - */ -MRCP_DECLARE(apt_bool_t) mrcp_client_profiles_get(const mrcp_client_t *client, mrcp_client_profile_t *profiles[], apr_size_t *count, const char *tag); - -/** - * Get directory layout. - * @param client the MRCP client to get from - */ -MRCP_DECLARE(apt_dir_layout_t*) mrcp_client_dir_layout_get(const mrcp_client_t *client); - -APT_END_EXTERN_C - -#endif /* MRCP_CLIENT_H */ diff --git a/libs/unimrcp/libs/mrcp-client/include/mrcp_client_session.h b/libs/unimrcp/libs/mrcp-client/include/mrcp_client_session.h deleted file mode 100644 index f6a3c645ee4..00000000000 --- a/libs/unimrcp/libs/mrcp-client/include/mrcp_client_session.h +++ /dev/null @@ -1,215 +0,0 @@ -/* - * Copyright 2008-2014 Arsen Chaloyan - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - * - * $Id: mrcp_client_session.h 2251 2014-11-21 02:36:44Z achaloyan@gmail.com $ - */ - -#ifndef MRCP_CLIENT_SESSION_H -#define MRCP_CLIENT_SESSION_H - -/** - * @file mrcp_client_session.h - * @brief MRCP Client Session - */ - -#include "mrcp_client_types.h" -#include "mrcp_application.h" -#include "mrcp_session.h" -#include "mpf_engine.h" -#include "apt_task_msg.h" -#include "apt_obj_list.h" - -APT_BEGIN_EXTERN_C - -/** RTP termination slot declaration */ -typedef struct rtp_termination_slot_t rtp_termination_slot_t; - -/** MRCP client session declaration */ -typedef struct mrcp_client_session_t mrcp_client_session_t; - -/** Client session states */ -typedef enum { - SESSION_STATE_NONE, - SESSION_STATE_GENERATING_OFFER, - SESSION_STATE_PROCESSING_ANSWER, - SESSION_STATE_TERMINATING, - SESSION_STATE_DISCOVERING -} mrcp_client_session_state_e; - -/** MRCP client session */ -struct mrcp_client_session_t { - /** Session base */ - mrcp_session_t base; - /** Application session belongs to */ - mrcp_application_t *application; - /** External object associated with session */ - void *app_obj; - /** Profile to use */ - mrcp_client_profile_t *profile; - - /** Media context */ - mpf_context_t *context; - /** Codec manager */ - const mpf_codec_manager_t *codec_manager; - - /** RTP termination array (mrcp_termination_slot_t) */ - apr_array_header_t *terminations; - /** MRCP control channel array (mrcp_channel_t*) */ - apr_array_header_t *channels; - - /** Indicates whether session is already added to session table */ - apt_bool_t registered; - - /** In-progress offer */ - mrcp_session_descriptor_t *offer; - /** In-progress answer */ - mrcp_session_descriptor_t *answer; - - /** MRCP application active request */ - const mrcp_app_message_t *active_request; - /** MRCP application request queue */ - apt_obj_list_t *request_queue; - - /** MPF task message, which construction is in progress */ - mpf_task_msg_t *mpf_task_msg; - - /** Session state */ - mrcp_client_session_state_e state; - /** Status code of the app response to be generated */ - mrcp_sig_status_code_e status; - /** Number of in-progress sub requests */ - apr_size_t subrequest_count; - /** True, if server unexpectedly closed session/connection */ - apt_bool_t disconnected; -}; - -/** MRCP channel */ -struct mrcp_channel_t { - /** Memory pool */ - apr_pool_t *pool; - /** External object associated with channel */ - void *obj; - /** MRCP resource */ - mrcp_resource_t *resource; - /** MRCP session entire channel belongs to */ - mrcp_session_t *session; - /** MRCP control channel */ - mrcp_control_channel_t *control_channel; - /** Media termination */ - mpf_termination_t *termination; - /** Associated RTP termination slot */ - rtp_termination_slot_t *rtp_termination_slot; - - /** waiting state of control channel */ - apt_bool_t waiting_for_channel; - /** waiting state of media termination */ - apt_bool_t waiting_for_termination; -}; - -/** RTP termination slot */ -struct rtp_termination_slot_t { - /** waiting state */ - apt_bool_t waiting; - /** RTP termination */ - mpf_termination_t *termination; - /** RTP termination descriptor */ - mpf_rtp_termination_descriptor_t *descriptor; - /** Associated MRCP channel */ - mrcp_channel_t *channel; - /** media descriptor id (index of media in session descriptor) */ - apr_size_t id; -}; - -/** MRCP client profile */ -struct mrcp_client_profile_t { - /** Unique profile name */ - const char *name; - /** Arbitrary tag set/used by user application */ - const char *tag; - /** MRCP version */ - mrcp_version_e mrcp_version; - /** MRCP resource factory */ - mrcp_resource_factory_t *resource_factory; - /** Media engine factory */ - mpf_engine_factory_t *mpf_factory; - /** RTP termination factory */ - mpf_termination_factory_t *rtp_termination_factory; - /** Signaling agent factory */ - mrcp_sa_factory_t *sa_factory; - /** Connection agent factory */ - mrcp_ca_factory_t *ca_factory; - /** Signaling settings */ - mrcp_sig_settings_t *signaling_settings; - /** RTP settings */ - mpf_rtp_settings_t *rtp_settings; -}; - -/** MRCP application */ -struct mrcp_application_t { - /** External object associated with the application */ - void *obj; - /** Application message handler */ - mrcp_app_message_handler_f handler; - /** MRCP client */ - mrcp_client_t *client; - /** Application task message pool */ - apt_task_msg_pool_t *msg_pool; -}; - -/** Create channel */ -mrcp_channel_t* mrcp_client_channel_create( - mrcp_client_session_t *session, - mrcp_resource_t *resource, - mpf_termination_t *termination, - mpf_rtp_termination_descriptor_t *rtp_descriptor, - void *obj); - -/** Create signaling app_message_t request */ -mrcp_app_message_t* mrcp_client_app_signaling_request_create(mrcp_sig_command_e command_id, apr_pool_t *pool); -/** Create signaling app_message_t event */ -mrcp_app_message_t* mrcp_client_app_signaling_event_create(mrcp_sig_event_e event_id, apr_pool_t *pool); -/** Create control app_message_t */ -mrcp_app_message_t* mrcp_client_app_control_message_create(apr_pool_t *pool); - -/** Process application message */ -apt_bool_t mrcp_client_app_message_process(mrcp_app_message_t *app_message); -/** Process MPF message */ -apt_bool_t mrcp_client_mpf_message_process(mpf_message_container_t *mpf_message_container); - -/** Process session answer */ -apt_bool_t mrcp_client_session_answer_process(mrcp_client_session_t *session, mrcp_session_descriptor_t *descriptor); -/** Process session termination response */ -apt_bool_t mrcp_client_session_terminate_response_process(mrcp_client_session_t *session); -/** Process session control response */ -apt_bool_t mrcp_client_session_control_response_process(mrcp_client_session_t *session, mrcp_message_t *message); -/** Process resource discovery response */ -apt_bool_t mrcp_client_session_discover_response_process(mrcp_client_session_t *session, mrcp_session_descriptor_t *descriptor); -/** Process session termination event */ -apt_bool_t mrcp_client_session_terminate_event_process(mrcp_client_session_t *session); - -/** Process channel add event */ -apt_bool_t mrcp_client_on_channel_add(mrcp_channel_t *channel, mrcp_control_descriptor_t *descriptor, apt_bool_t status); -/** Process channel modify event */ -apt_bool_t mrcp_client_on_channel_modify(mrcp_channel_t *channel, mrcp_control_descriptor_t *descriptor, apt_bool_t status); -/** Process channel remove event */ -apt_bool_t mrcp_client_on_channel_remove(mrcp_channel_t *channel, apt_bool_t status); -/** Process message receive event */ -apt_bool_t mrcp_client_on_message_receive(mrcp_channel_t *channel, mrcp_message_t *message); -/** Process disconnect event */ -apt_bool_t mrcp_client_on_disconnect(mrcp_channel_t *channel); - -APT_END_EXTERN_C - -#endif /* MRCP_CLIENT_SESSION_H */ diff --git a/libs/unimrcp/libs/mrcp-client/include/mrcp_client_types.h b/libs/unimrcp/libs/mrcp-client/include/mrcp_client_types.h deleted file mode 100644 index 61a555bcbe5..00000000000 --- a/libs/unimrcp/libs/mrcp-client/include/mrcp_client_types.h +++ /dev/null @@ -1,50 +0,0 @@ -/* - * Copyright 2008-2014 Arsen Chaloyan - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - * - * $Id: mrcp_client_types.h 2251 2014-11-21 02:36:44Z achaloyan@gmail.com $ - */ - -#ifndef MRCP_CLIENT_TYPES_H -#define MRCP_CLIENT_TYPES_H - -/** - * @file mrcp_client_types.h - * @brief MRCP Client Types - */ - -#include "mrcp_sig_types.h" -#include "mrcp_connection_types.h" -#include "mpf_types.h" - -APT_BEGIN_EXTERN_C - -/** Opaque MRCP client declaration */ -typedef struct mrcp_client_t mrcp_client_t; - -/** Opaque MRCP client profile declaration */ -typedef struct mrcp_client_profile_t mrcp_client_profile_t; -/** Backward compatible declaration of MRCP profile */ -typedef mrcp_client_profile_t mrcp_profile_t; - -/** Opaque MRCP application declaration */ -typedef struct mrcp_application_t mrcp_application_t; - -/** Opaque MRCP channel declaration */ -typedef struct mrcp_channel_t mrcp_channel_t; - - -APT_END_EXTERN_C - -#endif /* MRCP_CLIENT_TYPES_H */ diff --git a/libs/unimrcp/libs/mrcp-client/mrcpclient.2017.vcxproj b/libs/unimrcp/libs/mrcp-client/mrcpclient.2017.vcxproj deleted file mode 100644 index d00e3d66dce..00000000000 --- a/libs/unimrcp/libs/mrcp-client/mrcpclient.2017.vcxproj +++ /dev/null @@ -1,126 +0,0 @@ - - - - - Debug - Win32 - - - Debug - x64 - - - Release - Win32 - - - Release - x64 - - - - mrcpclient - {72782932-37CC-46AE-8C7F-9A7B1A6EE108} - mrcpclient - Win32Proj - - - - StaticLibrary - Unicode - true - $(DefaultPlatformToolset) - - - StaticLibrary - Unicode - $(DefaultPlatformToolset) - - - StaticLibrary - Unicode - true - $(DefaultPlatformToolset) - - - StaticLibrary - Unicode - $(DefaultPlatformToolset) - - - - - - - - - - - - - - - - - - - - - - - - - - - <_ProjectFileVersion>10.0.30319.1 - $(PlatformName)\$(Configuration)\ - $(PlatformName)\$(Configuration)\ - $(SolutionDir)$(PlatformName)\$(Configuration)\ - $(PlatformName)\$(Configuration)\ - $(PlatformName)\$(Configuration)\ - $(PlatformName)\$(Configuration)\ - $(SolutionDir)$(PlatformName)\$(Configuration)\ - $(PlatformName)\$(Configuration)\ - - - - APT_STATIC_LIB;MPF_STATIC_LIB;MRCP_STATIC_LIB;%(PreprocessorDefinitions) - - - - - X64 - - - APT_STATIC_LIB;MPF_STATIC_LIB;MRCP_STATIC_LIB;%(PreprocessorDefinitions) - ProgramDatabase - - - - - APT_STATIC_LIB;MPF_STATIC_LIB;MRCP_STATIC_LIB;%(PreprocessorDefinitions) - - - - - X64 - - - APT_STATIC_LIB;MPF_STATIC_LIB;MRCP_STATIC_LIB;%(PreprocessorDefinitions) - - - - - - - - - - - - - - - - - \ No newline at end of file diff --git a/libs/unimrcp/libs/mrcp-client/mrcpclient.vcproj b/libs/unimrcp/libs/mrcp-client/mrcpclient.vcproj deleted file mode 100644 index 046c3e4695c..00000000000 --- a/libs/unimrcp/libs/mrcp-client/mrcpclient.vcproj +++ /dev/null @@ -1,280 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/libs/unimrcp/libs/mrcp-client/mrcpclient.vcxproj b/libs/unimrcp/libs/mrcp-client/mrcpclient.vcxproj deleted file mode 100644 index 3447a31724a..00000000000 --- a/libs/unimrcp/libs/mrcp-client/mrcpclient.vcxproj +++ /dev/null @@ -1,125 +0,0 @@ - - - - - Debug - Win32 - - - Debug - x64 - - - Release - Win32 - - - Release - x64 - - - - {72782932-37CC-46AE-8C7F-9A7B1A6EE108} - mrcpclient - Win32Proj - - - - StaticLibrary - Unicode - true - - - StaticLibrary - Unicode - - - StaticLibrary - Unicode - true - - - StaticLibrary - Unicode - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - <_ProjectFileVersion>10.0.30319.1 - AllRules.ruleset - - - AllRules.ruleset - - - AllRules.ruleset - - - AllRules.ruleset - - - - - - X64 - - - ProgramDatabase - - - - - X64 - - - - - - - - - - - - - - - - {12a49562-bab9-43a3-a21d-15b60bbb4c31} - false - - - {a9edac04-6a5f-4ba7-bc0d-cce7b255b6ea} - false - - - - - - \ No newline at end of file diff --git a/libs/unimrcp/libs/mrcp-client/mrcpclient.vcxproj.filters b/libs/unimrcp/libs/mrcp-client/mrcpclient.vcxproj.filters deleted file mode 100644 index 789830de354..00000000000 --- a/libs/unimrcp/libs/mrcp-client/mrcpclient.vcxproj.filters +++ /dev/null @@ -1,38 +0,0 @@ - - - - - {93995380-89BD-4b04-88EB-625FBE52EBFB} - h;hpp;hxx;hm;inl;inc;xsd - - - {dc4325fe-8e7a-4a40-ab63-4173d85cf131} - cpp;c;cc;cxx;def;odl;idl;hpj;bat;asm;asmx - - - - - include - - - include - - - include - - - include - - - - - src - - - src - - - src - - - \ No newline at end of file diff --git a/libs/unimrcp/libs/mrcp-client/src/mrcp_application.c b/libs/unimrcp/libs/mrcp-client/src/mrcp_application.c deleted file mode 100644 index 849847720b8..00000000000 --- a/libs/unimrcp/libs/mrcp-client/src/mrcp_application.c +++ /dev/null @@ -1,549 +0,0 @@ -/* - * Copyright 2008-2014 Arsen Chaloyan - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - * - * $Id: mrcp_application.c 2251 2014-11-21 02:36:44Z achaloyan@gmail.com $ - */ - -#include "mrcp_application.h" -#include "mrcp_client.h" -#include "mrcp_client_session.h" -#include "mrcp_session_descriptor.h" -#include "mrcp_message.h" -#include "mrcp_sig_agent.h" -#include "mrcp_resource_factory.h" -#include "mpf_termination_factory.h" -#include "apt_dir_layout.h" -#include "apt_log.h" - -mrcp_client_session_t* mrcp_client_session_create(mrcp_client_t *client); - -apt_bool_t mrcp_app_signaling_task_msg_signal(mrcp_sig_command_e command_id, mrcp_session_t *session, mrcp_channel_t *channel); -apt_bool_t mrcp_app_control_task_msg_signal(mrcp_session_t *session, mrcp_channel_t *channel, mrcp_message_t *message); - - -/** Create application instance */ -MRCP_DECLARE(mrcp_application_t*) mrcp_application_create(const mrcp_app_message_handler_f handler, void *obj, apr_pool_t *pool) -{ - mrcp_application_t *application; - if(!handler) { - return FALSE; - } - apt_log(APT_LOG_MARK,APT_PRIO_NOTICE,"Create Application"); - application = apr_palloc(pool,sizeof(mrcp_application_t)); - application->obj = obj; - application->handler = handler; - application->client = NULL; - return application; -} - -/** Destroy application instance */ -MRCP_DECLARE(apt_bool_t) mrcp_application_destroy(mrcp_application_t *application) -{ - apt_log(APT_LOG_MARK,APT_PRIO_NOTICE,"Destroy Application"); - return TRUE; -} - -/** Get external object associated with the application */ -MRCP_DECLARE(void*) mrcp_application_object_get(const mrcp_application_t *application) -{ - return application->obj; -} - -/** Get dir layout structure */ -MRCP_DECLARE(const apt_dir_layout_t*) mrcp_application_dir_layout_get(const mrcp_application_t *application) -{ - return mrcp_client_dir_layout_get(application->client); -} - - - -/** Create client session */ -MRCP_DECLARE(mrcp_session_t*) mrcp_application_session_create(mrcp_application_t *application, const char *profile_name, void *obj) -{ - mrcp_client_profile_t *profile; - mrcp_client_session_t *session; - if(!application || !application->client || !profile_name) { - return NULL; - } - - profile = mrcp_client_profile_get(application->client,profile_name); - if(!profile) { - apt_log(APT_LOG_MARK,APT_PRIO_WARNING,"No Such Profile [%s]",profile_name); - return NULL; - } - - session = mrcp_client_session_create(application->client); - if(!session) { - return NULL; - } - session->application = application; - session->app_obj = obj; - session->base.log_obj = obj; - session->profile = profile; - - apt_obj_log(APT_LOG_MARK,APT_PRIO_NOTICE,session->base.log_obj,"Create MRCP Handle "APT_PTR_FMT" [%s]", - MRCP_SESSION_PTR(session), - profile_name); - return &session->base; -} - -/** Get memory pool the session object is created out of */ -MRCP_DECLARE(apr_pool_t*) mrcp_application_session_pool_get(const mrcp_session_t *session) -{ - if(!session) { - return NULL; - } - return session->pool; -} - -/** Get session identifier */ -MRCP_DECLARE(const apt_str_t*) mrcp_application_session_id_get(const mrcp_session_t *session) -{ - if(!session) { - return NULL; - } - return &session->id; -} - -/** Get SIP or RTSP response code */ -MRCP_DECLARE(int) mrcp_application_session_response_code_get(const mrcp_session_t *session) -{ - mrcp_client_session_t *client_session = (mrcp_client_session_t*)session; - if(!client_session || !client_session->answer) { - return 0; - } - return client_session->answer->response_code; -} - -/** Get external object associated with the session */ -MRCP_DECLARE(void*) mrcp_application_session_object_get(const mrcp_session_t *session) -{ - mrcp_client_session_t *client_session = (mrcp_client_session_t*)session; - if(!client_session) { - return NULL; - } - return client_session->app_obj; -} - -/** Set (associate) external object to the session */ -MRCP_DECLARE(void) mrcp_application_session_object_set(mrcp_session_t *session, void *obj) -{ - mrcp_client_session_t *client_session = (mrcp_client_session_t*)session; - if(client_session) { - client_session->app_obj = obj; - } -} - -/** Set name of the session (informative only used for debugging) */ -MRCP_DECLARE(void) mrcp_application_session_name_set(mrcp_session_t *session, const char *name) -{ - if(session && name) { - session->name = apr_pstrdup(session->pool,name); - } -} - - -/** Send session update request */ -MRCP_DECLARE(apt_bool_t) mrcp_application_session_update(mrcp_session_t *session) -{ - if(!session) { - return FALSE; - } - return mrcp_app_signaling_task_msg_signal(MRCP_SIG_COMMAND_SESSION_UPDATE,session,NULL); -} - -/** Send session termination request */ -MRCP_DECLARE(apt_bool_t) mrcp_application_session_terminate(mrcp_session_t *session) -{ - if(!session) { - return FALSE; - } - return mrcp_app_signaling_task_msg_signal(MRCP_SIG_COMMAND_SESSION_TERMINATE,session,NULL); -} - -/** Destroy client session (session must be terminated prior to destroy) */ -MRCP_DECLARE(apt_bool_t) mrcp_application_session_destroy(mrcp_session_t *session) -{ - if(!session) { - return FALSE; - } - apt_obj_log(APT_LOG_MARK,APT_PRIO_NOTICE,session->log_obj,"Destroy MRCP Handle %s",session->name); - mrcp_session_destroy(session); - return TRUE; -} - - -/** Create control channel */ -MRCP_DECLARE(mrcp_channel_t*) mrcp_application_channel_create( - mrcp_session_t *session, - mrcp_resource_id resource_id, - mpf_termination_t *termination, - mpf_rtp_termination_descriptor_t *rtp_descriptor, - void *obj) -{ - mrcp_resource_t *resource; - mrcp_client_profile_t *profile; - mrcp_client_session_t *client_session = (mrcp_client_session_t*)session; - if(!client_session || !client_session->profile) { - /* Invalid params */ - return FALSE; - } - profile = client_session->profile; - - if(!profile->resource_factory) { - apt_log(APT_LOG_MARK,APT_PRIO_WARNING,"Failed to Create Channel: invalid profile"); - return FALSE; - } - resource = mrcp_resource_get(profile->resource_factory,resource_id); - if(!resource) { - apt_log(APT_LOG_MARK,APT_PRIO_WARNING,"Failed to Create Channel: no such resource"); - return FALSE; - } - - if(termination) { - /* Media engine and RTP factory must be specified in this case */ - if(!profile->mpf_factory || !profile->rtp_termination_factory) { - apt_log(APT_LOG_MARK,APT_PRIO_WARNING,"Failed to Create Channel: invalid profile"); - return FALSE; - } - } - else { - /* Either termination or rtp_descriptor must be specified */ - if(!rtp_descriptor) { - apt_log(APT_LOG_MARK,APT_PRIO_WARNING,"Failed to Create Channel: missing both termination and RTP descriptor"); - return FALSE; - } - } - - return mrcp_client_channel_create(client_session,resource,termination,rtp_descriptor,obj); -} - -/** Get external object associated with the channel */ -MRCP_DECLARE(void*) mrcp_application_channel_object_get(const mrcp_channel_t *channel) -{ - if(!channel) { - return FALSE; - } - return channel->obj; -} - -/** Get RTP termination descriptor */ -MRCP_DECLARE(mpf_rtp_termination_descriptor_t*) mrcp_application_rtp_descriptor_get(const mrcp_channel_t *channel) -{ - if(!channel || !channel->rtp_termination_slot) { - return NULL; - } - return channel->rtp_termination_slot->descriptor; -} - -/** Get codec descriptor of source stream */ -MRCP_DECLARE(const mpf_codec_descriptor_t*) mrcp_application_source_descriptor_get(const mrcp_channel_t *channel) -{ - mpf_audio_stream_t *audio_stream; - if(!channel || !channel->termination) { - return NULL; - } - audio_stream = mpf_termination_audio_stream_get(channel->termination); - if(!audio_stream) { - return NULL; - } - return audio_stream->rx_descriptor; -} - -/** Get codec descriptor of sink stream */ -MRCP_DECLARE(const mpf_codec_descriptor_t*) mrcp_application_sink_descriptor_get(const mrcp_channel_t *channel) -{ - mpf_audio_stream_t *audio_stream; - if(!channel || !channel->termination) { - return NULL; - } - audio_stream = mpf_termination_audio_stream_get(channel->termination); - if(!audio_stream) { - return NULL; - } - return audio_stream->tx_descriptor; -} - -/** Get associated audio stream */ -MRCP_DECLARE(const mpf_audio_stream_t*) mrcp_application_audio_stream_get(const mrcp_channel_t *channel) -{ - if(!channel || !channel->termination) { - return NULL; - } - - return mpf_termination_audio_stream_get(channel->termination); -} - -/** Send channel add request */ -MRCP_DECLARE(apt_bool_t) mrcp_application_channel_add(mrcp_session_t *session, mrcp_channel_t *channel) -{ - if(!session || !channel) { - return FALSE; - } - return mrcp_app_signaling_task_msg_signal(MRCP_SIG_COMMAND_CHANNEL_ADD,session,channel); -} - -/** Send channel removal request */ -MRCP_DECLARE(apt_bool_t) mrcp_application_channel_remove(mrcp_session_t *session, mrcp_channel_t *channel) -{ - if(!session || !channel) { - return FALSE; - } - return mrcp_app_signaling_task_msg_signal(MRCP_SIG_COMMAND_CHANNEL_REMOVE,session,channel); -} - -/** Send resource discovery request */ -MRCP_DECLARE(apt_bool_t) mrcp_application_resource_discover(mrcp_session_t *session) -{ - if(!session) { - return FALSE; - } - return mrcp_app_signaling_task_msg_signal(MRCP_SIG_COMMAND_RESOURCE_DISCOVER,session,NULL); -} - -/** Create MRCP message */ -MRCP_DECLARE(mrcp_message_t*) mrcp_application_message_create(mrcp_session_t *session, mrcp_channel_t *channel, mrcp_method_id method_id) -{ - mrcp_message_t *mrcp_message; - mrcp_client_profile_t *profile; - mrcp_client_session_t *client_session = (mrcp_client_session_t*)session; - if(!client_session || !channel || !channel->resource) { - return NULL; - } - profile = client_session->profile; - if(!profile || !profile->resource_factory) { - return NULL; - } - mrcp_message = mrcp_request_create( - channel->resource, - profile->mrcp_version, - method_id, - session->pool); - return mrcp_message; -} - -/** Send MRCP message */ -MRCP_DECLARE(apt_bool_t) mrcp_application_message_send(mrcp_session_t *session, mrcp_channel_t *channel, mrcp_message_t *message) -{ - if(!session || !channel || !message) { - return FALSE; - } - return mrcp_app_control_task_msg_signal(session,channel,message); -} - -/** Create audio termination */ -MRCP_DECLARE(mpf_termination_t*) mrcp_application_audio_termination_create( - mrcp_session_t *session, - const mpf_audio_stream_vtable_t *stream_vtable, - mpf_stream_capabilities_t *capabilities, - void *obj) -{ - mpf_audio_stream_t *audio_stream; - - if(!capabilities) { - return NULL; - } - - if(mpf_codec_capabilities_validate(&capabilities->codecs) == FALSE) { - return NULL; - } - - /* create audio stream */ - audio_stream = mpf_audio_stream_create( - obj, /* object to associate */ - stream_vtable, /* virtual methods table of audio stream */ - capabilities, /* stream capabilities */ - session->pool); /* memory pool to allocate memory from */ - if(!audio_stream) { - return NULL; - } - - /* create raw termination */ - return mpf_raw_termination_create( - NULL, /* no object to associate */ - audio_stream, /* audio stream */ - NULL, /* no video stream */ - session->pool); /* memory pool to allocate memory from */ -} - -/** Create source media termination */ -MRCP_DECLARE(mpf_termination_t*) mrcp_application_source_termination_create( - mrcp_session_t *session, - const mpf_audio_stream_vtable_t *stream_vtable, - mpf_codec_descriptor_t *codec_descriptor, - void *obj) -{ - mpf_stream_capabilities_t *capabilities; - mpf_audio_stream_t *audio_stream; - - capabilities = mpf_source_stream_capabilities_create(session->pool); - if(codec_descriptor) { - mpf_codec_capabilities_add( - &capabilities->codecs, - mpf_sample_rate_mask_get(codec_descriptor->sampling_rate), - codec_descriptor->name.buf); - } - else { - mpf_codec_default_capabilities_add(&capabilities->codecs); - } - - /* create audio stream */ - audio_stream = mpf_audio_stream_create( - obj, /* object to associate */ - stream_vtable, /* virtual methods table of audio stream */ - capabilities, /* stream capabilities */ - session->pool); /* memory pool to allocate memory from */ - - if(!audio_stream) { - return NULL; - } - - audio_stream->rx_descriptor = codec_descriptor; - - /* create raw termination */ - return mpf_raw_termination_create( - NULL, /* no object to associate */ - audio_stream, /* audio stream */ - NULL, /* no video stream */ - session->pool); /* memory pool to allocate memory from */ -} - -/** Create sink media termination */ -MRCP_DECLARE(mpf_termination_t*) mrcp_application_sink_termination_create( - mrcp_session_t *session, - const mpf_audio_stream_vtable_t *stream_vtable, - mpf_codec_descriptor_t *codec_descriptor, - void *obj) -{ - mpf_stream_capabilities_t *capabilities; - mpf_audio_stream_t *audio_stream; - - capabilities = mpf_sink_stream_capabilities_create(session->pool); - if(codec_descriptor) { - mpf_codec_capabilities_add( - &capabilities->codecs, - mpf_sample_rate_mask_get(codec_descriptor->sampling_rate), - codec_descriptor->name.buf); - } - else { - mpf_codec_default_capabilities_add(&capabilities->codecs); - } - - /* create audio stream */ - audio_stream = mpf_audio_stream_create( - obj, /* object to associate */ - stream_vtable, /* virtual methods table of audio stream */ - capabilities, /* stream capabilities */ - session->pool); /* memory pool to allocate memory from */ - if(!audio_stream) { - return NULL; - } - - audio_stream->tx_descriptor = codec_descriptor; - - /* create raw termination */ - return mpf_raw_termination_create( - NULL, /* no object to associate */ - audio_stream, /* audio stream */ - NULL, /* no video stream */ - session->pool); /* memory pool to allocate memory from */ -} - -/** Dispatch application message */ -MRCP_DECLARE(apt_bool_t) mrcp_application_message_dispatch(const mrcp_app_message_dispatcher_t *dispatcher, const mrcp_app_message_t *app_message) -{ - apt_bool_t status = FALSE; - switch(app_message->message_type) { - case MRCP_APP_MESSAGE_TYPE_SIGNALING: - { - if(app_message->sig_message.message_type == MRCP_SIG_MESSAGE_TYPE_RESPONSE) { - switch(app_message->sig_message.command_id) { - case MRCP_SIG_COMMAND_SESSION_UPDATE: - if(dispatcher->on_session_update) { - status = dispatcher->on_session_update( - app_message->application, - app_message->session, - app_message->sig_message.status); - } - break; - case MRCP_SIG_COMMAND_SESSION_TERMINATE: - if(dispatcher->on_session_terminate) { - status = dispatcher->on_session_terminate( - app_message->application, - app_message->session, - app_message->sig_message.status); - } - break; - case MRCP_SIG_COMMAND_CHANNEL_ADD: - if(dispatcher->on_channel_add) { - status = dispatcher->on_channel_add( - app_message->application, - app_message->session, - app_message->channel, - app_message->sig_message.status); - } - break; - case MRCP_SIG_COMMAND_CHANNEL_REMOVE: - if(dispatcher->on_channel_remove) { - status = dispatcher->on_channel_remove( - app_message->application, - app_message->session, - app_message->channel, - app_message->sig_message.status); - } - break; - case MRCP_SIG_COMMAND_RESOURCE_DISCOVER: - if(dispatcher->on_resource_discover) { - status = dispatcher->on_resource_discover( - app_message->application, - app_message->session, - app_message->descriptor, - app_message->sig_message.status); - } - break; - default: - break; - } - } - else if(app_message->sig_message.message_type == MRCP_SIG_MESSAGE_TYPE_EVENT) { - switch(app_message->sig_message.event_id) { - case MRCP_SIG_EVENT_TERMINATE: - if(dispatcher->on_terminate_event) { - status = dispatcher->on_terminate_event( - app_message->application, - app_message->session, - app_message->channel); - } - break; - default: - break; - } - } - break; - } - case MRCP_APP_MESSAGE_TYPE_CONTROL: - { - if(dispatcher->on_message_receive) { - status = dispatcher->on_message_receive( - app_message->application, - app_message->session, - app_message->channel, - app_message->control_message); - } - break; - } - } - return status; -} diff --git a/libs/unimrcp/libs/mrcp-client/src/mrcp_client.c b/libs/unimrcp/libs/mrcp-client/src/mrcp_client.c deleted file mode 100644 index 0212ff8a86f..00000000000 --- a/libs/unimrcp/libs/mrcp-client/src/mrcp_client.c +++ /dev/null @@ -1,989 +0,0 @@ -/* - * Copyright 2008-2014 Arsen Chaloyan - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - * - * $Id: mrcp_client.c 2251 2014-11-21 02:36:44Z achaloyan@gmail.com $ - */ - -#include -#include -#include "mrcp_client.h" -#include "mrcp_sig_agent.h" -#include "mrcp_client_session.h" -#include "mrcp_client_connection.h" -#include "mrcp_ca_factory.h" -#include "mpf_engine_factory.h" -#include "apt_consumer_task.h" -#include "apt_pool.h" -#include "apt_log.h" - -#define CLIENT_TASK_NAME "MRCP Client" - -/** MRCP client */ -struct mrcp_client_t { - /** Main message processing task */ - apt_consumer_task_t *task; - - /** MRCP resource factory */ - mrcp_resource_factory_t *resource_factory; - /** Codec manager */ - mpf_codec_manager_t *codec_manager; - /** Table of media processing engines (mpf_engine_t*) */ - apr_hash_t *media_engine_table; - /** Table of RTP termination factories (mpf_termination_factory_t*) */ - apr_hash_t *rtp_factory_table; - /** Table of signaling agents (mrcp_sig_agent_t*) */ - apr_hash_t *sig_agent_table; - /** Table of signaling settings (mrcp_sig_settings_t*) */ - apr_hash_t *sig_settings_table; - /** Table of connection agents (mrcp_connection_agent_t*) */ - apr_hash_t *cnt_agent_table; - /** Table of RTP settings (mpf_rtp_settings_t*) */ - apr_hash_t *rtp_settings_table; - /** Table of profiles (mrcp_client_profile_t*) */ - apr_hash_t *profile_table; - - /** Table of applications (mrcp_application_t*) */ - apr_hash_t *app_table; - - /** Table of sessions/handles */ - apr_hash_t *session_table; - - /** Connection task message pool */ - apt_task_msg_pool_t *cnt_msg_pool; - - /** Event handler used in case of async start */ - mrcp_client_handler_f on_start_complete; - /** Wait object used in case of synch start */ - apr_thread_cond_t *sync_start_object; - /** Mutex to protect sync start routine */ - apr_thread_mutex_t *sync_start_mutex; - - /** Dir layout structure */ - apt_dir_layout_t *dir_layout; - /** Memory pool */ - apr_pool_t *pool; -}; - - -typedef enum { - MRCP_CLIENT_SIGNALING_TASK_MSG = TASK_MSG_USER, - MRCP_CLIENT_CONNECTION_TASK_MSG, - MRCP_CLIENT_MEDIA_TASK_MSG, - MRCP_CLIENT_APPLICATION_TASK_MSG -} mrcp_client_task_msg_type_e; - -/* Signaling agent interface */ -typedef enum { - SIG_AGENT_TASK_MSG_ANSWER, - SIG_AGENT_TASK_MSG_TERMINATE_RESPONSE, - SIG_AGENT_TASK_MSG_CONTROL_RESPONSE, - SIG_AGENT_TASK_MSG_DISCOVER_RESPONSE, - SIG_AGENT_TASK_MSG_TERMINATE_EVENT -} sig_agent_task_msg_type_e; - -typedef struct sig_agent_task_msg_data_t sig_agent_task_msg_data_t; -struct sig_agent_task_msg_data_t { - mrcp_client_session_t *session; - mrcp_session_descriptor_t *descriptor; - mrcp_message_t *message; -}; - -static apt_bool_t mrcp_client_answer_signal(mrcp_session_t *session, mrcp_session_descriptor_t *descriptor); -static apt_bool_t mrcp_client_terminate_response_signal(mrcp_session_t *session); -static apt_bool_t mrcp_client_control_response_signal(mrcp_session_t *session, mrcp_message_t *message); -static apt_bool_t mrcp_client_discover_response_signal(mrcp_session_t *session, mrcp_session_descriptor_t *descriptor); - -static apt_bool_t mrcp_client_terminate_event_signal(mrcp_session_t *session); - -static const mrcp_session_response_vtable_t session_response_vtable = { - mrcp_client_answer_signal, - mrcp_client_terminate_response_signal, - mrcp_client_control_response_signal, - mrcp_client_discover_response_signal -}; - -static const mrcp_session_event_vtable_t session_event_vtable = { - mrcp_client_terminate_event_signal -}; - -/* Connection agent interface */ -typedef enum { - CONNECTION_AGENT_TASK_MSG_ADD_CHANNEL, - CONNECTION_AGENT_TASK_MSG_MODIFY_CHANNEL, - CONNECTION_AGENT_TASK_MSG_REMOVE_CHANNEL, - CONNECTION_AGENT_TASK_MSG_RECEIVE_MESSAGE, - CONNECTION_AGENT_TASK_MSG_DISCONNECT -} connection_agent_task_msg_type_e ; - -typedef struct connection_agent_task_msg_data_t connection_agent_task_msg_data_t; -struct connection_agent_task_msg_data_t { - mrcp_channel_t *channel; - mrcp_control_descriptor_t *descriptor; - mrcp_message_t *message; - apt_bool_t status; -}; - -static apt_bool_t mrcp_client_channel_add_signal(mrcp_control_channel_t *channel, mrcp_control_descriptor_t *descriptor, apt_bool_t status); -static apt_bool_t mrcp_client_channel_modify_signal(mrcp_control_channel_t *channel, mrcp_control_descriptor_t *descriptor, apt_bool_t status); -static apt_bool_t mrcp_client_channel_remove_signal(mrcp_control_channel_t *channel, apt_bool_t status); -static apt_bool_t mrcp_client_message_signal(mrcp_control_channel_t *channel, mrcp_message_t *message); -static apt_bool_t mrcp_client_disconnect_signal(mrcp_control_channel_t *channel); - -static const mrcp_connection_event_vtable_t connection_method_vtable = { - mrcp_client_channel_add_signal, - mrcp_client_channel_modify_signal, - mrcp_client_channel_remove_signal, - mrcp_client_message_signal, - mrcp_client_disconnect_signal -}; - -/* Task interface */ -static void mrcp_client_on_start_complete(apt_task_t *task); -static void mrcp_client_on_terminate_complete(apt_task_t *task); -static apt_bool_t mrcp_client_msg_process(apt_task_t *task, apt_task_msg_t *msg); - - -/** Create MRCP client instance */ -MRCP_DECLARE(mrcp_client_t*) mrcp_client_create(apt_dir_layout_t *dir_layout) -{ - mrcp_client_t *client; - apr_pool_t *pool; - apt_task_t *task; - apt_task_vtable_t *vtable; - apt_task_msg_pool_t *msg_pool; - - pool = apt_pool_create(); - if(!pool) { - return NULL; - } - - apt_log(APT_LOG_MARK,APT_PRIO_NOTICE,"Create "CLIENT_TASK_NAME); - client = apr_palloc(pool,sizeof(mrcp_client_t)); - client->pool = pool; - client->dir_layout = dir_layout; - client->resource_factory = NULL; - client->media_engine_table = NULL; - client->rtp_factory_table = NULL; - client->sig_agent_table = NULL; - client->sig_settings_table = NULL; - client->cnt_agent_table = NULL; - client->rtp_settings_table = NULL; - client->profile_table = NULL; - client->app_table = NULL; - client->session_table = NULL; - client->cnt_msg_pool = NULL; - - msg_pool = apt_task_msg_pool_create_dynamic(0,pool); - client->task = apt_consumer_task_create(client,msg_pool,pool); - if(!client->task) { - apt_log(APT_LOG_MARK,APT_PRIO_WARNING,"Failed to Create Client Task"); - return NULL; - } - task = apt_consumer_task_base_get(client->task); - apt_task_name_set(task,CLIENT_TASK_NAME); - vtable = apt_task_vtable_get(task); - if(vtable) { - vtable->process_msg = mrcp_client_msg_process; - vtable->on_start_complete = mrcp_client_on_start_complete; - vtable->on_terminate_complete = mrcp_client_on_terminate_complete; - } - - client->media_engine_table = apr_hash_make(client->pool); - client->rtp_factory_table = apr_hash_make(client->pool); - client->sig_agent_table = apr_hash_make(client->pool); - client->sig_settings_table = apr_hash_make(client->pool); - client->cnt_agent_table = apr_hash_make(client->pool); - client->rtp_settings_table = apr_hash_make(client->pool); - client->profile_table = apr_hash_make(client->pool); - client->app_table = apr_hash_make(client->pool); - - client->session_table = apr_hash_make(client->pool); - - client->on_start_complete = NULL; - client->sync_start_object = NULL; - client->sync_start_mutex = NULL; - return client; -} - -/** Set asynchronous start mode */ -MRCP_DECLARE(void) mrcp_client_async_start_set(mrcp_client_t *client, mrcp_client_handler_f handler) -{ - if(client) { - client->on_start_complete = handler; - } -} - -/** Start message processing loop */ -MRCP_DECLARE(apt_bool_t) mrcp_client_start(mrcp_client_t *client) -{ - apt_bool_t sync_start = TRUE; - apt_task_t *task; - if(!client || !client->task) { - apt_log(APT_LOG_MARK,APT_PRIO_WARNING,"Invalid Client"); - return FALSE; - } - task = apt_consumer_task_base_get(client->task); - - if(client->on_start_complete) { - sync_start = FALSE; - } - - if(sync_start == TRUE) { - /* get prepared to start stack synchronously */ - apr_thread_mutex_create(&client->sync_start_mutex,APR_THREAD_MUTEX_DEFAULT,client->pool); - apr_thread_cond_create(&client->sync_start_object,client->pool); - - apr_thread_mutex_lock(client->sync_start_mutex); - } - - if(apt_task_start(task) == FALSE) { - if(sync_start == TRUE) { - apr_thread_mutex_unlock(client->sync_start_mutex); - } - apt_log(APT_LOG_MARK,APT_PRIO_WARNING,"Failed to Start Client Task"); - return FALSE; - } - - if(sync_start == TRUE) { - /* wait for start complete */ - apr_thread_cond_wait(client->sync_start_object,client->sync_start_mutex); - apr_thread_mutex_unlock(client->sync_start_mutex); - } - - return TRUE; -} - -/** Shutdown message processing loop */ -MRCP_DECLARE(apt_bool_t) mrcp_client_shutdown(mrcp_client_t *client) -{ - apt_task_t *task; - if(!client || !client->task) { - apt_log(APT_LOG_MARK,APT_PRIO_WARNING,"Invalid Client"); - return FALSE; - } - task = apt_consumer_task_base_get(client->task); - if(apt_task_terminate(task,TRUE) == FALSE) { - apt_log(APT_LOG_MARK,APT_PRIO_WARNING,"Failed to Shutdown Client Task"); - return FALSE; - } - client->session_table = NULL; - - if(client->sync_start_object) { - apr_thread_cond_destroy(client->sync_start_object); - client->sync_start_object = NULL; - } - if(client->sync_start_mutex) { - apr_thread_mutex_destroy(client->sync_start_mutex); - client->sync_start_mutex = NULL; - } - - return TRUE; -} - -/** Destroy MRCP client */ -MRCP_DECLARE(apt_bool_t) mrcp_client_destroy(mrcp_client_t *client) -{ - apt_task_t *task; - if(!client || !client->task) { - apt_log(APT_LOG_MARK,APT_PRIO_WARNING,"Invalid Client"); - return FALSE; - } - task = apt_consumer_task_base_get(client->task); - apt_task_destroy(task); - - apr_pool_destroy(client->pool); - return TRUE; -} - - -/** Register MRCP resource factory */ -MRCP_DECLARE(apt_bool_t) mrcp_client_resource_factory_register(mrcp_client_t *client, mrcp_resource_factory_t *resource_factory) -{ - if(!resource_factory) { - return FALSE; - } - apt_log(APT_LOG_MARK,APT_PRIO_INFO,"Register Resource Factory"); - client->resource_factory = resource_factory; - return TRUE; -} - -/** Register codec manager */ -MRCP_DECLARE(apt_bool_t) mrcp_client_codec_manager_register(mrcp_client_t *client, mpf_codec_manager_t *codec_manager) -{ - if(!codec_manager) { - return FALSE; - } - client->codec_manager = codec_manager; - return TRUE; -} - -/** Get registered codec manager */ -MRCP_DECLARE(const mpf_codec_manager_t*) mrcp_client_codec_manager_get(const mrcp_client_t *client) -{ - return client->codec_manager; -} - -/** Register media engine */ -MRCP_DECLARE(apt_bool_t) mrcp_client_media_engine_register(mrcp_client_t *client, mpf_engine_t *media_engine) -{ - const char *id; - if(!media_engine) { - return FALSE; - } - id = mpf_engine_id_get(media_engine); - if(!id) { - return FALSE; - } - apt_log(APT_LOG_MARK,APT_PRIO_INFO,"Register Media Engine [%s]",id); - mpf_engine_codec_manager_register(media_engine,client->codec_manager); - apr_hash_set(client->media_engine_table,id,APR_HASH_KEY_STRING,media_engine); - mpf_engine_task_msg_type_set(media_engine,MRCP_CLIENT_MEDIA_TASK_MSG); - if(client->task) { - apt_task_t *media_task = mpf_task_get(media_engine); - apt_task_t *task = apt_consumer_task_base_get(client->task); - apt_task_add(task,media_task); - } - return TRUE; -} - -/** Get media engine by name */ -MRCP_DECLARE(mpf_engine_t*) mrcp_client_media_engine_get(const mrcp_client_t *client, const char *name) -{ - return apr_hash_get(client->media_engine_table,name,APR_HASH_KEY_STRING); -} - -/** Register RTP termination factory */ -MRCP_DECLARE(apt_bool_t) mrcp_client_rtp_factory_register(mrcp_client_t *client, mpf_termination_factory_t *rtp_termination_factory, const char *name) -{ - if(!rtp_termination_factory || !name) { - return FALSE; - } - apt_log(APT_LOG_MARK,APT_PRIO_INFO,"Register RTP Termination Factory [%s]",name); - apr_hash_set(client->rtp_factory_table,name,APR_HASH_KEY_STRING,rtp_termination_factory); - return TRUE; -} - -/** Get RTP termination factory by name */ -MRCP_DECLARE(mpf_termination_factory_t*) mrcp_client_rtp_factory_get(const mrcp_client_t *client, const char *name) -{ - return apr_hash_get(client->rtp_factory_table,name,APR_HASH_KEY_STRING); -} - -/** Register RTP settings */ -MRCP_DECLARE(apt_bool_t) mrcp_client_rtp_settings_register(mrcp_client_t *client, mpf_rtp_settings_t *rtp_settings, const char *name) -{ - if(!rtp_settings || !name) { - return FALSE; - } - apt_log(APT_LOG_MARK,APT_PRIO_INFO,"Register RTP Settings [%s]",name); - apr_hash_set(client->rtp_settings_table,name,APR_HASH_KEY_STRING,rtp_settings); - return TRUE; -} - -/** Get RTP settings by name */ -MRCP_DECLARE(mpf_rtp_settings_t*) mrcp_client_rtp_settings_get(const mrcp_client_t *client, const char *name) -{ - return apr_hash_get(client->rtp_settings_table,name,APR_HASH_KEY_STRING); -} - -/** Register MRCP signaling agent */ -MRCP_DECLARE(apt_bool_t) mrcp_client_signaling_agent_register(mrcp_client_t *client, mrcp_sig_agent_t *signaling_agent) -{ - if(!signaling_agent || !signaling_agent->id) { - return FALSE; - } - apt_log(APT_LOG_MARK,APT_PRIO_INFO,"Register Signaling Agent [%s]",signaling_agent->id); - signaling_agent->msg_pool = apt_task_msg_pool_create_dynamic(sizeof(sig_agent_task_msg_data_t),client->pool); - signaling_agent->parent = client; - signaling_agent->resource_factory = client->resource_factory; - apr_hash_set(client->sig_agent_table,signaling_agent->id,APR_HASH_KEY_STRING,signaling_agent); - if(client->task) { - apt_task_t *task = apt_consumer_task_base_get(client->task); - apt_task_add(task,signaling_agent->task); - } - return TRUE; -} - -/** Get signaling agent by name */ -MRCP_DECLARE(mrcp_sig_agent_t*) mrcp_client_signaling_agent_get(const mrcp_client_t *client, const char *name) -{ - return apr_hash_get(client->sig_agent_table,name,APR_HASH_KEY_STRING); -} - -/** Register MRCP signaling settings */ -MRCP_DECLARE(apt_bool_t) mrcp_client_signaling_settings_register(mrcp_client_t *client, mrcp_sig_settings_t *signaling_settings, const char *name) -{ - if(!signaling_settings || !name) { - return FALSE; - } - apt_log(APT_LOG_MARK,APT_PRIO_INFO,"Register Signaling Settings [%s]",name); - apr_hash_set(client->sig_settings_table,name,APR_HASH_KEY_STRING,signaling_settings); - return TRUE; -} - -/** Get signaling settings by name */ -MRCP_DECLARE(mrcp_sig_settings_t*) mrcp_client_signaling_settings_get(const mrcp_client_t *client, const char *name) -{ - return apr_hash_get(client->sig_settings_table,name,APR_HASH_KEY_STRING); -} - - -/** Register MRCP connection agent (MRCPv2 only) */ -MRCP_DECLARE(apt_bool_t) mrcp_client_connection_agent_register(mrcp_client_t *client, mrcp_connection_agent_t *connection_agent) -{ - const char *id; - if(!connection_agent) { - return FALSE; - } - id = mrcp_client_connection_agent_id_get(connection_agent); - if(!id) { - return FALSE; - } - apt_log(APT_LOG_MARK,APT_PRIO_INFO,"Register Connection Agent [%s]",id); - mrcp_client_connection_resource_factory_set(connection_agent,client->resource_factory); - mrcp_client_connection_agent_handler_set(connection_agent,client,&connection_method_vtable); - client->cnt_msg_pool = apt_task_msg_pool_create_dynamic(sizeof(connection_agent_task_msg_data_t),client->pool); - apr_hash_set(client->cnt_agent_table,id,APR_HASH_KEY_STRING,connection_agent); - if(client->task) { - apt_task_t *task = apt_consumer_task_base_get(client->task); - apt_task_t *connection_task = mrcp_client_connection_agent_task_get(connection_agent); - apt_task_add(task,connection_task); - } - return TRUE; -} - -/** Get connection agent by name */ -MRCP_DECLARE(mrcp_connection_agent_t*) mrcp_client_connection_agent_get(const mrcp_client_t *client, const char *name) -{ - return apr_hash_get(client->cnt_agent_table,name,APR_HASH_KEY_STRING); -} - -/** Create MRCP profile */ -MRCP_DECLARE(mrcp_client_profile_t*) mrcp_client_profile_create( - mrcp_resource_factory_t *resource_factory, - mrcp_sig_agent_t *signaling_agent, - mrcp_connection_agent_t *connection_agent, - mpf_engine_t *media_engine, - mpf_termination_factory_t *rtp_factory, - mpf_rtp_settings_t *rtp_settings, - mrcp_sig_settings_t *signaling_settings, - apr_pool_t *pool) -{ - mrcp_sa_factory_t *sa_factory = NULL; - mrcp_ca_factory_t *ca_factory = NULL; - mpf_engine_factory_t *mpf_factory = NULL; - mrcp_version_e mrcp_version = MRCP_VERSION_2; - if(!connection_agent) - mrcp_version = MRCP_VERSION_1; - - if(signaling_agent) { - sa_factory = mrcp_sa_factory_create(pool); - mrcp_sa_factory_agent_add(sa_factory,signaling_agent); - } - - if(connection_agent) { - ca_factory = mrcp_ca_factory_create(pool); - mrcp_ca_factory_agent_add(ca_factory,connection_agent); - } - - if(media_engine) { - mpf_factory = mpf_engine_factory_create(pool); - mpf_engine_factory_engine_add(mpf_factory,media_engine); - } - - return mrcp_client_profile_create_ex( - mrcp_version, - resource_factory, - sa_factory, - ca_factory, - mpf_factory, - rtp_factory, - rtp_settings, - signaling_settings, - pool); -} - -/** Create MRCP profile (extended version) */ -MRCP_DECLARE(mrcp_client_profile_t*) mrcp_client_profile_create_ex( - mrcp_version_e mrcp_version, - mrcp_resource_factory_t *resource_factory, - mrcp_sa_factory_t *sa_factory, - mrcp_ca_factory_t *ca_factory, - mpf_engine_factory_t *mpf_factory, - mpf_termination_factory_t *rtp_factory, - mpf_rtp_settings_t *rtp_settings, - mrcp_sig_settings_t *signaling_settings, - apr_pool_t *pool) -{ - mrcp_client_profile_t *profile = apr_palloc(pool,sizeof(mrcp_client_profile_t)); - profile->name = NULL; - profile->tag = NULL; - profile->mrcp_version = mrcp_version; - profile->resource_factory = resource_factory; - profile->mpf_factory = mpf_factory; - profile->rtp_termination_factory = rtp_factory; - profile->rtp_settings = rtp_settings; - profile->sa_factory = sa_factory; - profile->ca_factory = ca_factory; - profile->signaling_settings = signaling_settings; - - if(mpf_factory && rtp_factory) - mpf_engine_factory_rtp_factory_assign(mpf_factory,rtp_factory); - return profile; -} - -/** Set a tag to the profile */ -MRCP_DECLARE(void) mrcp_client_profile_tag_set(mrcp_client_profile_t *profile, const char *tag) -{ - if(profile) { - apt_log(APT_LOG_MARK,APT_PRIO_INFO,"Set Profile Tag [%s]",tag); - profile->tag = tag; - } -} - -/** Register MRCP profile */ -MRCP_DECLARE(apt_bool_t) mrcp_client_profile_register(mrcp_client_t *client, mrcp_client_profile_t *profile, const char *name) -{ - if(!profile || !name) { - apt_log(APT_LOG_MARK,APT_PRIO_WARNING,"Failed to Register Profile: no name"); - return FALSE; - } - if(!profile->resource_factory) { - profile->resource_factory = client->resource_factory; - } - if(!profile->sa_factory) { - apt_log(APT_LOG_MARK,APT_PRIO_WARNING,"Failed to Register Profile [%s]: missing signaling agent factory",name); - return FALSE; - } - if(mrcp_sa_factory_is_empty(profile->sa_factory) == TRUE) { - apt_log(APT_LOG_MARK,APT_PRIO_WARNING,"Failed to Register Profile [%s]: empty signaling agent factory",name); - return FALSE; - } - if(profile->mrcp_version == MRCP_VERSION_2) { - if(!profile->ca_factory) { - apt_log(APT_LOG_MARK,APT_PRIO_WARNING,"Failed to Register Profile [%s]: missing connection agent factory",name); - return FALSE; - } - if(mrcp_ca_factory_is_empty(profile->ca_factory) == TRUE) { - apt_log(APT_LOG_MARK,APT_PRIO_WARNING,"Failed to Register Profile [%s]: empty connection agent factory",name); - return FALSE; - } - } - - /* mpf_factory may not be specified; but if it is specified, it must not be empty */ - if(profile->mpf_factory) { - if(mpf_engine_factory_is_empty(profile->mpf_factory) == TRUE) { - apt_log(APT_LOG_MARK,APT_PRIO_WARNING,"Failed to Register Profile [%s]: empty media engine factory",name); - return FALSE; - } - } - - if(!profile->signaling_settings) { - apt_log(APT_LOG_MARK,APT_PRIO_WARNING,"Failed to Register Profile [%s]: missing signaling settings",name); - return FALSE; - } - - apt_log(APT_LOG_MARK,APT_PRIO_INFO,"Register Profile [%s]",name); - apr_hash_set(client->profile_table,name,APR_HASH_KEY_STRING,profile); - profile->name = name; - return TRUE; -} - -/** Get profile by name */ -MRCP_DECLARE(mrcp_client_profile_t*) mrcp_client_profile_get(const mrcp_client_t *client, const char *name) -{ - return apr_hash_get(client->profile_table,name,APR_HASH_KEY_STRING); -} - -/** Get available profiles */ -MRCP_DECLARE(apt_bool_t) mrcp_client_profiles_get(const mrcp_client_t *client, mrcp_client_profile_t *profiles[], apr_size_t *count, const char *tag) -{ - apr_hash_index_t *it; - void *val; - mrcp_client_profile_t *profile; - apr_size_t i = 0; - apt_bool_t status = TRUE; - - if(!profiles || !count) { - return FALSE; - } - - for(it = apr_hash_first(client->pool, client->profile_table); it; it = apr_hash_next(it)) { - apr_hash_this(it, NULL, NULL, &val); - if(!val) continue; - - if(i >= *count) { - status = FALSE; - break; - } - - profile = val; - if(!tag || (profile->tag && strcasecmp(tag,profile->tag) == 0)) { - profiles[i] = profile; - i++; - } - } - *count = i; - return status; -} - -/** Register MRCP application */ -MRCP_DECLARE(apt_bool_t) mrcp_client_application_register(mrcp_client_t *client, mrcp_application_t *application, const char *name) -{ - if(!application || !name) { - return FALSE; - } - apt_log(APT_LOG_MARK,APT_PRIO_INFO,"Register Application [%s]",name); - application->client = client; - application->msg_pool = apt_task_msg_pool_create_dynamic(sizeof(mrcp_app_message_t*),client->pool); - apr_hash_set(client->app_table,name,APR_HASH_KEY_STRING,application); - return TRUE; -} - -/** Get memory pool */ -MRCP_DECLARE(apr_pool_t*) mrcp_client_memory_pool_get(const mrcp_client_t *client) -{ - return client->pool; -} - -/** Get directory layout */ -MRCP_DECLARE(apt_dir_layout_t*) mrcp_client_dir_layout_get(const mrcp_client_t *client) -{ - return client->dir_layout; -} - -mrcp_client_session_t* mrcp_client_session_create(mrcp_client_t *client) -{ - apr_pool_t *pool; - mrcp_client_session_t *session = (mrcp_client_session_t*) mrcp_session_create(sizeof(mrcp_client_session_t)-sizeof(mrcp_session_t)); - - pool = session->base.pool; - session->base.name = apr_psprintf(pool,"0x%pp",session); - session->base.response_vtable = &session_response_vtable; - session->base.event_vtable = &session_event_vtable; - - session->application = NULL; - session->app_obj = NULL; - session->profile = NULL; - session->context = NULL; - session->codec_manager = client->codec_manager; - session->terminations = apr_array_make(pool,2,sizeof(rtp_termination_slot_t)); - session->channels = apr_array_make(pool,2,sizeof(mrcp_channel_t*)); - session->registered = FALSE; - session->offer = NULL; - session->answer = NULL; - session->active_request = NULL; - session->request_queue = apt_list_create(pool); - session->mpf_task_msg = NULL; - session->subrequest_count = 0; - session->disconnected = FALSE; - session->state = SESSION_STATE_NONE; - session->status = MRCP_SIG_STATUS_CODE_SUCCESS; - return session; -} - -void mrcp_client_session_add(mrcp_client_t *client, mrcp_client_session_t *session) -{ - if(session) { - apt_obj_log(APT_LOG_MARK,APT_PRIO_INFO,session->base.log_obj,"Add MRCP Handle "APT_NAMESID_FMT, - session->base.name, - MRCP_SESSION_SID(&session->base)); - apr_hash_set(client->session_table,session,sizeof(void*),session); - } -} - -void mrcp_client_session_remove(mrcp_client_t *client, mrcp_client_session_t *session) -{ - if(session) { - apt_obj_log(APT_LOG_MARK,APT_PRIO_INFO,session->base.log_obj,"Remove MRCP Handle "APT_NAMESID_FMT, - session->base.name, - MRCP_SESSION_SID(&session->base)); - apr_hash_set(client->session_table,session,sizeof(void*),NULL); - } -} - -static void mrcp_client_on_start_complete(apt_task_t *task) -{ - apt_consumer_task_t *consumer_task = apt_task_object_get(task); - mrcp_client_t *client = apt_consumer_task_object_get(consumer_task); - - apt_log(APT_LOG_MARK,APT_PRIO_NOTICE,CLIENT_TASK_NAME" Started"); - if(client->on_start_complete) { - /* async start */ - client->on_start_complete(TRUE); - } - else { - /* sync start */ - apr_thread_mutex_lock(client->sync_start_mutex); - apr_thread_cond_signal(client->sync_start_object); - apr_thread_mutex_unlock(client->sync_start_mutex); - } -} - -static void mrcp_client_on_terminate_complete(apt_task_t *task) -{ - apt_log(APT_LOG_MARK,APT_PRIO_NOTICE,CLIENT_TASK_NAME" Terminated"); -} - - -static apt_bool_t mrcp_client_msg_process(apt_task_t *task, apt_task_msg_t *msg) -{ - apt_consumer_task_t *consumer_task = apt_task_object_get(task); - mrcp_client_t *client = apt_consumer_task_object_get(consumer_task); - if(!client) { - return FALSE; - } - switch(msg->type) { - case MRCP_CLIENT_SIGNALING_TASK_MSG: - { - const sig_agent_task_msg_data_t *sig_message = (const sig_agent_task_msg_data_t*)msg->data; - switch(msg->sub_type) { - case SIG_AGENT_TASK_MSG_ANSWER: - mrcp_client_session_answer_process(sig_message->session,sig_message->descriptor); - break; - case SIG_AGENT_TASK_MSG_TERMINATE_RESPONSE: - mrcp_client_session_terminate_response_process(sig_message->session); - break; - case SIG_AGENT_TASK_MSG_CONTROL_RESPONSE: - mrcp_client_session_control_response_process(sig_message->session,sig_message->message); - break; - case SIG_AGENT_TASK_MSG_DISCOVER_RESPONSE: - mrcp_client_session_discover_response_process(sig_message->session,sig_message->descriptor); - break; - case SIG_AGENT_TASK_MSG_TERMINATE_EVENT: - mrcp_client_session_terminate_event_process(sig_message->session); - break; - default: - break; - } - break; - } - case MRCP_CLIENT_CONNECTION_TASK_MSG: - { - const connection_agent_task_msg_data_t *data = (const connection_agent_task_msg_data_t*)msg->data; - switch(msg->sub_type) { - case CONNECTION_AGENT_TASK_MSG_ADD_CHANNEL: - mrcp_client_on_channel_add(data->channel,data->descriptor,data->status); - break; - case CONNECTION_AGENT_TASK_MSG_MODIFY_CHANNEL: - mrcp_client_on_channel_modify(data->channel,data->descriptor,data->status); - break; - case CONNECTION_AGENT_TASK_MSG_REMOVE_CHANNEL: - mrcp_client_on_channel_remove(data->channel,data->status); - break; - case CONNECTION_AGENT_TASK_MSG_RECEIVE_MESSAGE: - mrcp_client_on_message_receive(data->channel,data->message); - break; - case CONNECTION_AGENT_TASK_MSG_DISCONNECT: - mrcp_client_on_disconnect(data->channel); - break; - default: - break; - } - break; - } - case MRCP_CLIENT_MEDIA_TASK_MSG: - { - mpf_message_container_t *container = (mpf_message_container_t*) msg->data; - mrcp_client_mpf_message_process(container); - break; - } - case MRCP_CLIENT_APPLICATION_TASK_MSG: - { - mrcp_app_message_t **app_message = (mrcp_app_message_t**) msg->data; - mrcp_client_app_message_process(*app_message); - break; - } - default: - { - apt_log(APT_LOG_MARK,APT_PRIO_WARNING,"Unknown Task Message Received [%d;%d]", msg->type,msg->sub_type); - break; - } - } - return TRUE; -} - -apt_bool_t mrcp_app_signaling_task_msg_signal(mrcp_sig_command_e command_id, mrcp_session_t *session, mrcp_channel_t *channel) -{ - mrcp_client_session_t *client_session = (mrcp_client_session_t*)session; - mrcp_application_t *application = client_session->application; - apt_task_t *task = apt_consumer_task_base_get(application->client->task); - apt_task_msg_t *task_msg = apt_task_msg_acquire(application->msg_pool); - if(task_msg) { - mrcp_app_message_t **slot = ((mrcp_app_message_t**)task_msg->data); - mrcp_app_message_t *app_message; - task_msg->type = MRCP_CLIENT_APPLICATION_TASK_MSG; - - app_message = mrcp_client_app_signaling_request_create(command_id,session->pool); - app_message->application = client_session->application; - app_message->session = session; - app_message->channel = channel; - app_message->control_message = NULL; - app_message->descriptor = NULL; - *slot = app_message; - return apt_task_msg_signal(task,task_msg); - } - return FALSE; -} - -apt_bool_t mrcp_app_control_task_msg_signal(mrcp_session_t *session, mrcp_channel_t *channel, mrcp_message_t *message) -{ - mrcp_client_session_t *client_session = (mrcp_client_session_t*)session; - mrcp_application_t *application = client_session->application; - apt_task_t *task = apt_consumer_task_base_get(application->client->task); - apt_task_msg_t *task_msg = apt_task_msg_acquire(application->msg_pool); - if(task_msg) { - mrcp_app_message_t **slot = ((mrcp_app_message_t**)task_msg->data); - mrcp_app_message_t *app_message; - task_msg->type = MRCP_CLIENT_APPLICATION_TASK_MSG; - - app_message = mrcp_client_app_control_message_create(session->pool); - app_message->application = client_session->application; - app_message->session = session; - app_message->channel = channel; - app_message->control_message = message; - *slot = app_message; - return apt_task_msg_signal(task,task_msg); - } - return FALSE; -} - -static apt_bool_t mrcp_client_signaling_task_msg_signal(sig_agent_task_msg_type_e type, mrcp_session_t *session, mrcp_session_descriptor_t *descriptor, mrcp_message_t *message) -{ - sig_agent_task_msg_data_t *data; - apt_task_msg_t *task_msg = apt_task_msg_acquire(session->signaling_agent->msg_pool); - if(task_msg) { - task_msg->type = MRCP_CLIENT_SIGNALING_TASK_MSG; - task_msg->sub_type = type; - data = (sig_agent_task_msg_data_t*) task_msg->data; - data->session = (mrcp_client_session_t*)session; - data->descriptor = descriptor; - data->message = message; - return apt_task_msg_parent_signal(session->signaling_agent->task,task_msg); - } - return FALSE; -} - -static apt_bool_t mrcp_client_connection_task_msg_signal( - connection_agent_task_msg_type_e type, - mrcp_connection_agent_t *agent, - mrcp_control_channel_t *channel, - mrcp_control_descriptor_t *descriptor, - mrcp_message_t *message, - apt_bool_t status) -{ - apt_task_t *task; - apt_task_msg_t *task_msg; - connection_agent_task_msg_data_t *data; - mrcp_client_t *client = mrcp_client_connection_agent_object_get(agent); - if(!client || !client->cnt_msg_pool) { - return FALSE; - } - task = apt_consumer_task_base_get(client->task); - task_msg = apt_task_msg_acquire(client->cnt_msg_pool); - if(task_msg) { - task_msg->type = MRCP_CLIENT_CONNECTION_TASK_MSG; - task_msg->sub_type = type; - data = (connection_agent_task_msg_data_t*) task_msg->data; - data->channel = channel ? channel->obj : NULL; - data->descriptor = descriptor; - data->message = message; - data->status = status; - return apt_task_msg_signal(task,task_msg); - } - return FALSE; -} - - -static apt_bool_t mrcp_client_answer_signal(mrcp_session_t *session, mrcp_session_descriptor_t *descriptor) -{ - return mrcp_client_signaling_task_msg_signal(SIG_AGENT_TASK_MSG_ANSWER,session,descriptor,NULL); -} - -static apt_bool_t mrcp_client_terminate_response_signal(mrcp_session_t *session) -{ - return mrcp_client_signaling_task_msg_signal(SIG_AGENT_TASK_MSG_TERMINATE_RESPONSE,session,NULL,NULL); -} - -static apt_bool_t mrcp_client_control_response_signal(mrcp_session_t *session, mrcp_message_t *message) -{ - return mrcp_client_signaling_task_msg_signal(SIG_AGENT_TASK_MSG_CONTROL_RESPONSE,session,NULL,message); -} - -static apt_bool_t mrcp_client_discover_response_signal(mrcp_session_t *session, mrcp_session_descriptor_t *descriptor) -{ - return mrcp_client_signaling_task_msg_signal(SIG_AGENT_TASK_MSG_DISCOVER_RESPONSE,session,descriptor,NULL); -} - -static apt_bool_t mrcp_client_terminate_event_signal(mrcp_session_t *session) -{ - return mrcp_client_signaling_task_msg_signal(SIG_AGENT_TASK_MSG_TERMINATE_EVENT,session,NULL,NULL); -} - - -static apt_bool_t mrcp_client_channel_add_signal(mrcp_control_channel_t *channel, mrcp_control_descriptor_t *descriptor, apt_bool_t status) -{ - return mrcp_client_connection_task_msg_signal( - CONNECTION_AGENT_TASK_MSG_ADD_CHANNEL, - channel->agent, - channel, - descriptor, - NULL, - status); -} - -static apt_bool_t mrcp_client_channel_modify_signal(mrcp_control_channel_t *channel, mrcp_control_descriptor_t *descriptor, apt_bool_t status) -{ - return mrcp_client_connection_task_msg_signal( - CONNECTION_AGENT_TASK_MSG_MODIFY_CHANNEL, - channel->agent, - channel, - descriptor, - NULL, - status); -} - -static apt_bool_t mrcp_client_channel_remove_signal(mrcp_control_channel_t *channel, apt_bool_t status) -{ - return mrcp_client_connection_task_msg_signal( - CONNECTION_AGENT_TASK_MSG_REMOVE_CHANNEL, - channel->agent, - channel, - NULL, - NULL, - status); -} - -static apt_bool_t mrcp_client_message_signal(mrcp_control_channel_t *channel, mrcp_message_t *mrcp_message) -{ - return mrcp_client_connection_task_msg_signal( - CONNECTION_AGENT_TASK_MSG_RECEIVE_MESSAGE, - channel->agent, - channel, - NULL, - mrcp_message, - TRUE); -} - -static apt_bool_t mrcp_client_disconnect_signal(mrcp_control_channel_t *channel) -{ - return mrcp_client_connection_task_msg_signal( - CONNECTION_AGENT_TASK_MSG_DISCONNECT, - channel->agent, - channel, - NULL, - NULL, - TRUE); -} diff --git a/libs/unimrcp/libs/mrcp-client/src/mrcp_client_session.c b/libs/unimrcp/libs/mrcp-client/src/mrcp_client_session.c deleted file mode 100644 index 851e7ffcba2..00000000000 --- a/libs/unimrcp/libs/mrcp-client/src/mrcp_client_session.c +++ /dev/null @@ -1,1314 +0,0 @@ -/* - * Copyright 2008-2014 Arsen Chaloyan - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - * - * $Id: mrcp_client_session.c 2251 2014-11-21 02:36:44Z achaloyan@gmail.com $ - */ - -#include "mrcp_client_session.h" -#include "mrcp_resource_factory.h" -#include "mrcp_resource.h" -#include "mrcp_sig_agent.h" -#include "mrcp_client_connection.h" -#include "mrcp_session.h" -#include "mrcp_session_descriptor.h" -#include "mrcp_control_descriptor.h" -#include "mrcp_message.h" -#include "mrcp_ca_factory.h" -#include "mpf_engine_factory.h" -#include "mpf_termination_factory.h" -#include "mpf_stream.h" -#include "apt_consumer_task.h" -#include "apt_obj_list.h" -#include "apt_log.h" - -/** Macro to log session name and identifier */ -#define MRCP_SESSION_NAMESID(session) \ - session->base.name, MRCP_SESSION_SID(&session->base) - -#define IS_SESSION_TERMINATE(app_message) \ - (app_message->message_type == MRCP_APP_MESSAGE_TYPE_SIGNALING && \ - app_message->sig_message.command_id == MRCP_SIG_COMMAND_SESSION_TERMINATE) - -void mrcp_client_session_add(mrcp_client_t *client, mrcp_client_session_t *session); -void mrcp_client_session_remove(mrcp_client_t *client, mrcp_client_session_t *session); - -static apt_bool_t mrcp_client_session_offer_send(mrcp_client_session_t *session); - -static apt_bool_t mrcp_app_session_terminate_raise(mrcp_client_session_t *session, mrcp_sig_status_code_e status); -static apt_bool_t mrcp_app_sig_response_raise(mrcp_client_session_t *session, apt_bool_t process_pending_requests); -static apt_bool_t mrcp_app_sig_event_raise(mrcp_client_session_t *session, mrcp_channel_t *channel); -static apt_bool_t mrcp_app_control_message_raise(mrcp_client_session_t *session, mrcp_channel_t *channel, mrcp_message_t *mrcp_message); -static apt_bool_t mrcp_app_failure_message_raise(mrcp_client_session_t *session); -static apt_bool_t mrcp_app_request_dispatch(mrcp_client_session_t *session, const mrcp_app_message_t *app_message); - -static apt_bool_t mrcp_client_resource_answer_process(mrcp_client_session_t *session, mrcp_session_descriptor_t *descriptor); -static apt_bool_t mrcp_client_control_media_answer_process(mrcp_client_session_t *session, mrcp_session_descriptor_t *descriptor); -static apt_bool_t mrcp_client_av_media_answer_process(mrcp_client_session_t *session, mrcp_session_descriptor_t *descriptor); - -static mrcp_channel_t* mrcp_client_channel_find_by_name(mrcp_client_session_t *session, const apt_str_t *resource_name); - -static APR_INLINE mrcp_version_e mrcp_session_version_get(mrcp_client_session_t *session) -{ - return session->profile->mrcp_version; -} - -static APR_INLINE void mrcp_client_session_state_set(mrcp_client_session_t *session, mrcp_client_session_state_e state) -{ - if(session->subrequest_count != 0) { - /* error case */ - apt_obj_log(APT_LOG_MARK,APT_PRIO_ERROR,session->base.log_obj,"Unexpected State Change [%d] pending subrequests [%d] "APT_NAMESID_FMT, - state, - session->subrequest_count, - MRCP_SESSION_NAMESID(session)); - session->subrequest_count = 0; - } - session->state = state; -} - -static APR_INLINE void mrcp_client_session_subrequest_add(mrcp_client_session_t *session) -{ - session->subrequest_count++; -} - -static APR_INLINE apt_bool_t mrcp_client_session_subrequest_remove(mrcp_client_session_t *session) -{ - if(!session->subrequest_count) { - /* error case */ - return FALSE; - } - - session->subrequest_count--; - return (session->subrequest_count ? FALSE : TRUE); -} - -static mrcp_app_message_t* mrcp_client_app_response_create(const mrcp_app_message_t *app_request, mrcp_sig_status_code_e status, apr_pool_t *pool) -{ - mrcp_app_message_t *app_response = apr_palloc(pool,sizeof(mrcp_app_message_t)); - *app_response = *app_request; - app_response->sig_message.message_type = MRCP_SIG_MESSAGE_TYPE_RESPONSE; - app_response->sig_message.status = status; - return app_response; -} - - -mrcp_channel_t* mrcp_client_channel_create( - mrcp_client_session_t *session, - mrcp_resource_t *resource, - mpf_termination_t *termination, - mpf_rtp_termination_descriptor_t *rtp_descriptor, - void *obj) -{ - mrcp_channel_t *channel = apr_palloc(session->base.pool,sizeof(mrcp_channel_t)); - channel->pool = session->base.pool; - channel->obj = obj; - channel->session = &session->base; - channel->control_channel = NULL; - channel->termination = termination; - channel->rtp_termination_slot = NULL; - channel->resource = resource; - channel->waiting_for_channel = FALSE; - channel->waiting_for_termination = FALSE; - - if(rtp_descriptor) { - rtp_termination_slot_t *termination_slot = apr_palloc(channel->pool,sizeof(rtp_termination_slot_t)); - termination_slot->descriptor = rtp_descriptor; - termination_slot->termination = NULL; - termination_slot->waiting = FALSE; - termination_slot->channel = channel; - termination_slot->id = 0; - channel->rtp_termination_slot = termination_slot; - } - apt_obj_log(APT_LOG_MARK,APT_PRIO_INFO,session->base.log_obj,"Create Channel "APT_NAMESID_FMT, - MRCP_SESSION_NAMESID(session)); - return channel; -} - -apt_bool_t mrcp_client_session_answer_process(mrcp_client_session_t *session, mrcp_session_descriptor_t *descriptor) -{ - if(!session->offer) { - return FALSE; - } - if(!descriptor) { - apt_obj_log(APT_LOG_MARK,APT_PRIO_INFO,session->base.log_obj,"Receive Answer "APT_NAMESID_FMT" [null descriptor]", - MRCP_SESSION_NAMESID(session)); - session->status = MRCP_SIG_STATUS_CODE_FAILURE; - /* raise app response */ - return mrcp_app_sig_response_raise(session,TRUE); - } - - apt_obj_log(APT_LOG_MARK,APT_PRIO_INFO,session->base.log_obj,"Receive Answer "APT_NAMESID_FMT" [c:%d a:%d v:%d] Status %d", - MRCP_SESSION_NAMESID(session), - descriptor->control_media_arr->nelts, - descriptor->audio_media_arr->nelts, - descriptor->video_media_arr->nelts, - descriptor->response_code); - - if(descriptor->response_code >=200 && descriptor->response_code < 300) { - mrcp_client_session_state_set(session,SESSION_STATE_PROCESSING_ANSWER); - if(session->context) { - /* first, reset/destroy existing associations and topology */ - if(mpf_engine_topology_message_add( - session->base.media_engine, - MPF_RESET_ASSOCIATIONS,session->context, - &session->mpf_task_msg) == TRUE){ - mrcp_client_session_subrequest_add(session); - } - } - - if(mrcp_session_version_get(session) == MRCP_VERSION_1) { - if(mrcp_client_resource_answer_process(session,descriptor) != TRUE) { - session->status = MRCP_SIG_STATUS_CODE_FAILURE; - } - } - else { - mrcp_client_control_media_answer_process(session,descriptor); - mrcp_client_av_media_answer_process(session,descriptor); - } - - if(session->context) { - /* apply topology based on assigned associations */ - if(mpf_engine_topology_message_add( - session->base.media_engine, - MPF_APPLY_TOPOLOGY,session->context, - &session->mpf_task_msg) == TRUE) { - mrcp_client_session_subrequest_add(session); - } - - mpf_engine_message_send(session->base.media_engine,&session->mpf_task_msg); - } - } - else { - session->status = MRCP_SIG_STATUS_CODE_TERMINATE; - } - - /* store received answer */ - session->answer = descriptor; - - if(!session->subrequest_count) { - /* raise app response */ - mrcp_app_sig_response_raise(session,TRUE); - } - - return TRUE; -} - -apt_bool_t mrcp_client_session_terminate_response_process(mrcp_client_session_t *session) -{ - apt_obj_log(APT_LOG_MARK,APT_PRIO_INFO,session->base.log_obj,"Session Terminated "APT_NAMESID_FMT, MRCP_SESSION_NAMESID(session)); - - if(mrcp_client_session_subrequest_remove(session) == TRUE) { - mrcp_app_session_terminate_raise(session,MRCP_SIG_STATUS_CODE_SUCCESS); - } - return TRUE; -} - -apt_bool_t mrcp_client_session_terminate_event_process(mrcp_client_session_t *session) -{ - if(session->state == SESSION_STATE_TERMINATING) { - /* session termination request has been sent, still waiting for the response, - all the events must be ignored at this stage */ - apt_obj_log(APT_LOG_MARK,APT_PRIO_WARNING,session->base.log_obj,"Unexpected Event! "APT_NAMESID_FMT, - MRCP_SESSION_NAMESID(session)); - return FALSE; - } - - apt_obj_log(APT_LOG_MARK,APT_PRIO_DEBUG,session->base.log_obj,"Mark Session as Disconnected "APT_NAMESID_FMT, - MRCP_SESSION_NAMESID(session)); - session->disconnected = TRUE; - if(!session->active_request) { - /* raise app event */ - mrcp_app_sig_event_raise(session,NULL); - } - - return TRUE; -} - -apt_bool_t mrcp_client_session_control_response_process(mrcp_client_session_t *session, mrcp_message_t *message) -{ - mrcp_channel_t *channel = mrcp_client_channel_find_by_name(session,&message->channel_id.resource_name); - if(!channel) { - return FALSE; - } - return mrcp_app_control_message_raise(session,channel,message); -} - -apt_bool_t mrcp_client_session_discover_response_process(mrcp_client_session_t *session, mrcp_session_descriptor_t *descriptor) -{ - apt_log(APT_LOG_MARK,APT_PRIO_INFO,"Resources Discovered %s", session->base.name); - if(!session->active_request) { - return FALSE; - } - - if(!descriptor) { - /* raise app response */ - session->status = MRCP_SIG_STATUS_CODE_FAILURE; - return mrcp_app_sig_response_raise(session,TRUE); - } - - if(mrcp_session_version_get(session) == MRCP_VERSION_1) { - if(descriptor->resource_state == TRUE) { - mrcp_control_descriptor_t *control_media; - if(!session->answer) { - session->answer = descriptor; - } - control_media = mrcp_control_descriptor_create(session->base.pool); - control_media->id = mrcp_session_control_media_add(session->answer,control_media); - control_media->resource_name = descriptor->resource_name; - } - } - else { - session->answer = descriptor; - } - - if(mrcp_client_session_subrequest_remove(session) == TRUE) { - mrcp_app_message_t *response; - response = mrcp_client_app_response_create(session->active_request,MRCP_SIG_STATUS_CODE_SUCCESS,session->base.pool); - response->descriptor = session->answer; - session->answer = NULL; - apt_log(APT_LOG_MARK,APT_PRIO_INFO,"Raise App Resource Discovery Response %s", session->base.name); - session->application->handler(response); - - session->active_request = apt_list_pop_front(session->request_queue); - if(session->active_request) { - mrcp_app_request_dispatch(session,session->active_request); - } - } - return TRUE; -} - -apt_bool_t mrcp_client_on_channel_add(mrcp_channel_t *channel, mrcp_control_descriptor_t *descriptor, apt_bool_t status) -{ - mrcp_client_session_t *session = (mrcp_client_session_t*)channel->session; - apt_obj_log(APT_LOG_MARK,APT_PRIO_DEBUG,session->base.log_obj,"Control Channel Added "APT_NAMESIDRES_FMT, - MRCP_SESSION_NAMESID(session), - channel->resource->name.buf); - if(!channel->waiting_for_channel) { - return FALSE; - } - channel->waiting_for_channel = FALSE; - if(mrcp_client_session_subrequest_remove(session) == TRUE) { - /* send offer to server */ - mrcp_client_session_offer_send(session); - } - return TRUE; -} - -apt_bool_t mrcp_client_on_channel_modify(mrcp_channel_t *channel, mrcp_control_descriptor_t *descriptor, apt_bool_t status) -{ - mrcp_client_session_t *session = (mrcp_client_session_t*)channel->session; - apt_obj_log(APT_LOG_MARK,APT_PRIO_DEBUG,session->base.log_obj,"Control Channel Modified "APT_NAMESIDRES_FMT, - MRCP_SESSION_NAMESID(session), - channel->resource->name.buf); - if(!channel->waiting_for_channel) { - return FALSE; - } - channel->waiting_for_channel = FALSE; - if(mrcp_client_session_subrequest_remove(session) == TRUE) { - /* raise app response */ - if(status != TRUE) { - session->status = MRCP_SIG_STATUS_CODE_FAILURE; - } - mrcp_app_sig_response_raise(session,TRUE); - } - return TRUE; -} - -apt_bool_t mrcp_client_on_channel_remove(mrcp_channel_t *channel, apt_bool_t status) -{ - mrcp_client_session_t *session = (mrcp_client_session_t*)channel->session; - apt_obj_log(APT_LOG_MARK,APT_PRIO_DEBUG,session->base.log_obj,"Control Channel Removed "APT_NAMESIDRES_FMT, - MRCP_SESSION_NAMESID(session), - channel->resource->name.buf); - if(!channel->waiting_for_channel) { - return FALSE; - } - channel->waiting_for_channel = FALSE; - if(mrcp_client_session_subrequest_remove(session) == TRUE) { - mrcp_app_session_terminate_raise( - session, - status == TRUE ? MRCP_SIG_STATUS_CODE_SUCCESS : MRCP_SIG_STATUS_CODE_FAILURE); - } - return TRUE; -} - -apt_bool_t mrcp_client_on_message_receive(mrcp_channel_t *channel, mrcp_message_t *message) -{ - mrcp_client_session_t *session = (mrcp_client_session_t*)channel->session; - return mrcp_app_control_message_raise(session,channel,message); -} - -apt_bool_t mrcp_client_on_disconnect(mrcp_channel_t *channel) -{ - mrcp_client_session_t *session = (mrcp_client_session_t*)channel->session; - return mrcp_client_session_terminate_event_process(session); -} - -mrcp_app_message_t* mrcp_client_app_signaling_request_create(mrcp_sig_command_e command_id, apr_pool_t *pool) -{ - mrcp_app_message_t *app_message = apr_palloc(pool,sizeof(mrcp_app_message_t)); - app_message->message_type = MRCP_APP_MESSAGE_TYPE_SIGNALING; - app_message->sig_message.message_type = MRCP_SIG_MESSAGE_TYPE_REQUEST; - app_message->sig_message.command_id = command_id; - return app_message; -} - -mrcp_app_message_t* mrcp_client_app_signaling_event_create(mrcp_sig_event_e event_id, apr_pool_t *pool) -{ - mrcp_app_message_t *app_message = apr_palloc(pool,sizeof(mrcp_app_message_t)); - app_message->message_type = MRCP_APP_MESSAGE_TYPE_SIGNALING; - app_message->sig_message.message_type = MRCP_SIG_MESSAGE_TYPE_EVENT; - app_message->sig_message.event_id = event_id; - return app_message; -} - -mrcp_app_message_t* mrcp_client_app_control_message_create(apr_pool_t *pool) -{ - mrcp_app_message_t *app_message = apr_palloc(pool,sizeof(mrcp_app_message_t)); - app_message->message_type = MRCP_APP_MESSAGE_TYPE_CONTROL; - return app_message; -} - -apt_bool_t mrcp_client_app_message_process(mrcp_app_message_t *app_message) -{ - mrcp_client_session_t *session = (mrcp_client_session_t*)app_message->session; - if(app_message->message_type == MRCP_APP_MESSAGE_TYPE_SIGNALING) { - apt_obj_log(APT_LOG_MARK,APT_PRIO_INFO,session->base.log_obj,"Receive App Request "APT_NAMESID_FMT" [%d]", - MRCP_SESSION_NAMESID(session), - app_message->sig_message.command_id); - } - else { - apt_obj_log(APT_LOG_MARK,APT_PRIO_INFO,session->base.log_obj,"Receive App MRCP Request "APT_NAMESID_FMT, - MRCP_SESSION_NAMESID(session)); - } - - if(session->active_request) { - apt_obj_log(APT_LOG_MARK,APT_PRIO_DEBUG,session->base.log_obj,"Push Request to Queue "APT_NAMESID_FMT, - MRCP_SESSION_NAMESID(session)); - apt_list_push_back(session->request_queue,app_message,session->base.pool); - return TRUE; - } - - session->active_request = app_message; - mrcp_app_request_dispatch(session,app_message); - return TRUE; -} - -static apt_bool_t mrcp_client_session_offer_send(mrcp_client_session_t *session) -{ - mrcp_session_descriptor_t *descriptor = session->offer; - apt_obj_log(APT_LOG_MARK,APT_PRIO_INFO,session->base.log_obj,"Send Offer "APT_NAMESID_FMT" [c:%d a:%d v:%d] to %s:%hu", - MRCP_SESSION_NAMESID(session), - descriptor->control_media_arr->nelts, - descriptor->audio_media_arr->nelts, - descriptor->video_media_arr->nelts, - session->profile->signaling_settings->server_ip, - session->profile->signaling_settings->server_port); - return mrcp_session_offer(&session->base,descriptor); -} - -static apt_bool_t mrcp_app_session_terminate_raise(mrcp_client_session_t *session, mrcp_sig_status_code_e status) -{ - int i; - mrcp_channel_t *channel; - for(i=0; ichannels->nelts; i++) { - channel = APR_ARRAY_IDX(session->channels,i,mrcp_channel_t*); - if(!channel) continue; - - if(channel->control_channel) { - mrcp_client_control_channel_destroy(channel->control_channel); - channel->control_channel = NULL; - } - } - - mrcp_client_session_remove(session->application->client,session); - /* raise app response */ - if(status != MRCP_SIG_STATUS_CODE_SUCCESS) { - session->status = status; - } - return mrcp_app_sig_response_raise(session,FALSE); -} - -static apt_bool_t mrcp_app_sig_response_raise(mrcp_client_session_t *session, apt_bool_t process_pending_requests) -{ - mrcp_app_message_t *response; - const mrcp_app_message_t *request = session->active_request; - if(!request) { - return FALSE; - } - session->active_request = NULL; - if(session->disconnected == TRUE) { - session->status = MRCP_SIG_STATUS_CODE_TERMINATE; - } - response = mrcp_client_app_response_create(request,session->status,session->base.pool); - apt_obj_log(APT_LOG_MARK,APT_PRIO_INFO,session->base.log_obj,"Raise App Response "APT_NAMESID_FMT" [%d] %s [%d]", - MRCP_SESSION_NAMESID(session), - response->sig_message.command_id, - session->status == MRCP_SIG_STATUS_CODE_SUCCESS ? "SUCCESS" : "FAILURE", - session->status); - session->application->handler(response); - - if(process_pending_requests) { - session->active_request = apt_list_pop_front(session->request_queue); - if(session->active_request) { - mrcp_app_request_dispatch(session,session->active_request); - } - } - return TRUE; -} - -static apt_bool_t mrcp_app_sig_event_raise(mrcp_client_session_t *session, mrcp_channel_t *channel) -{ - mrcp_app_message_t *app_event; - if(!session) { - return FALSE; - } - app_event = mrcp_client_app_signaling_event_create(MRCP_SIG_EVENT_TERMINATE,session->base.pool); - app_event->application = session->application; - app_event->session = &session->base; - app_event->channel = channel; - apt_obj_log(APT_LOG_MARK,APT_PRIO_INFO,session->base.log_obj,"Raise App Event "APT_NAMESID_FMT" [%d]", - MRCP_SESSION_NAMESID(session), - app_event->sig_message.event_id); - return session->application->handler(app_event); -} - -static apt_bool_t mrcp_app_control_message_raise(mrcp_client_session_t *session, mrcp_channel_t *channel, mrcp_message_t *mrcp_message) -{ - if(mrcp_message->start_line.message_type == MRCP_MESSAGE_TYPE_RESPONSE) { - mrcp_app_message_t *response; - mrcp_message_t *mrcp_request; - if(!session->active_request || !session->active_request->control_message) { - return FALSE; - } - response = mrcp_client_app_response_create(session->active_request,0,session->base.pool); - mrcp_request = session->active_request->control_message; - mrcp_message->start_line.method_id = mrcp_request->start_line.method_id; - mrcp_message->start_line.method_name = mrcp_request->start_line.method_name; - response->control_message = mrcp_message; - apt_obj_log(APT_LOG_MARK,APT_PRIO_INFO,session->base.log_obj,"Raise App MRCP Response "APT_NAMESID_FMT, - MRCP_SESSION_NAMESID(session)); - session->application->handler(response); - - session->active_request = apt_list_pop_front(session->request_queue); - if(session->active_request) { - mrcp_app_request_dispatch(session,session->active_request); - } - } - else if(mrcp_message->start_line.message_type == MRCP_MESSAGE_TYPE_EVENT) { - mrcp_app_message_t *app_message; - app_message = mrcp_client_app_control_message_create(session->base.pool); - app_message->control_message = mrcp_message; - app_message->application = session->application; - app_message->session = &session->base; - app_message->channel = channel; - apt_obj_log(APT_LOG_MARK,APT_PRIO_INFO,session->base.log_obj,"Raise App MRCP Event "APT_NAMESID_FMT, - MRCP_SESSION_NAMESID(session)); - session->application->handler(app_message); - } - return TRUE; -} - -static apt_bool_t mrcp_app_failure_message_raise(mrcp_client_session_t *session) -{ - mrcp_app_message_t *response; - const mrcp_app_message_t *request = session->active_request; - if(!request) { - return FALSE; - } - session->active_request = NULL; - response = mrcp_client_app_response_create(request,session->status,session->base.pool); - if(response->message_type == MRCP_APP_MESSAGE_TYPE_SIGNALING) { - apt_obj_log(APT_LOG_MARK,APT_PRIO_INFO,session->base.log_obj,"Raise App Response "APT_NAMESID_FMT" [%d] %s [%d]", - MRCP_SESSION_NAMESID(session), - response->sig_message.command_id, - session->status == MRCP_SIG_STATUS_CODE_SUCCESS ? "SUCCESS" : "FAILURE", - session->status); - } - else if(response->control_message){ - mrcp_message_t *mrcp_response = mrcp_response_create(response->control_message,response->control_message->pool); - mrcp_response->start_line.status_code = MRCP_STATUS_CODE_METHOD_FAILED; - response->control_message = mrcp_response; - apt_obj_log(APT_LOG_MARK,APT_PRIO_INFO,session->base.log_obj,"Raise App MRCP Response "APT_NAMESID_FMT, - MRCP_SESSION_NAMESID(session)); - } - session->application->handler(response); - return TRUE; -} - -static apt_bool_t mrcp_client_channel_find(mrcp_client_session_t *session, mrcp_channel_t *channel, int *index) -{ - int i; - mrcp_channel_t *existing_channel; - for(i=0; ichannels->nelts; i++) { - existing_channel = APR_ARRAY_IDX(session->channels,i,mrcp_channel_t*); - if(existing_channel == channel) { - if(index) { - *index = i; - } - return TRUE; - } - } - return FALSE; -} - -static rtp_termination_slot_t* mrcp_client_rtp_termination_find(mrcp_client_session_t *session, mpf_termination_t *termination) -{ - int i; - rtp_termination_slot_t *slot; - for(i=0; iterminations->nelts; i++) { - slot = &APR_ARRAY_IDX(session->terminations,i,rtp_termination_slot_t); - if(slot->termination == termination) { - return slot; - } - } - return NULL; -} - -static mrcp_channel_t* mrcp_client_channel_termination_find(mrcp_client_session_t *session, mpf_termination_t *termination) -{ - int i; - mrcp_channel_t *channel; - for(i=0; ichannels->nelts; i++) { - channel = APR_ARRAY_IDX(session->channels,i,mrcp_channel_t*); - if(!channel) continue; - - if(channel->termination == termination) { - return channel; - } - } - return NULL; -} - -static mrcp_channel_t* mrcp_client_channel_find_by_name(mrcp_client_session_t *session, const apt_str_t *resource_name) -{ - int i; - mrcp_channel_t *channel; - for(i=0; ichannels->nelts; i++) { - channel = APR_ARRAY_IDX(session->channels,i,mrcp_channel_t*); - if(!channel || !channel->resource) continue; - - if(apt_string_compare(&channel->resource->name,resource_name) == TRUE) { - return channel; - } - } - return NULL; -} - -static apt_bool_t mrcp_client_message_send(mrcp_client_session_t *session, mrcp_channel_t *channel, mrcp_message_t *message) -{ - if(!session->base.id.length) { - mrcp_message_t *response = mrcp_response_create(message,message->pool); - response->start_line.status_code = MRCP_STATUS_CODE_METHOD_FAILED; - apt_obj_log(APT_LOG_MARK,APT_PRIO_DEBUG,session->base.log_obj,"Raise App Failure MRCP Response "APT_NAMESID_FMT, - MRCP_SESSION_NAMESID(session)); - mrcp_app_control_message_raise(session,channel,response); - return TRUE; - } - - message->channel_id.session_id = session->base.id; - message->start_line.request_id = ++session->base.last_request_id; - apt_obj_log(APT_LOG_MARK,APT_PRIO_INFO,session->base.log_obj,"Send MRCP Request "APT_NAMESIDRES_FMT" [%"MRCP_REQUEST_ID_FMT"]", - MRCP_SESSION_NAMESID(session), - channel->resource->name.buf, - message->start_line.request_id); - - if(channel->control_channel) { - /* MRCPv2 */ - mrcp_client_control_message_send(channel->control_channel,message); - } - else { - /* MRCPv1 */ - mrcp_session_control_request(channel->session,message); - } - - return TRUE; -} - -static apt_bool_t mrcp_client_channel_modify(mrcp_client_session_t *session, mrcp_channel_t *channel, apt_bool_t enable) -{ - int index; - if(!session->offer) { - return FALSE; - } - if(!channel->resource) { - return FALSE; - } - - apt_obj_log(APT_LOG_MARK,APT_PRIO_NOTICE,session->base.log_obj,"Modify Control Channel "APT_NAMESIDRES_FMT" [%d]", - MRCP_SESSION_NAMESID(session), - channel->resource->name.buf, - enable); - if(mrcp_client_channel_find(session,channel,&index) == TRUE) { - mrcp_control_descriptor_t *control_media = mrcp_session_control_media_get(session->offer,(apr_size_t)index); - if(control_media) { - control_media->port = (enable == TRUE) ? TCP_DISCARD_PORT : 0; - } - if(channel->termination && channel->rtp_termination_slot) { - mpf_audio_stream_t *audio_stream = mpf_termination_audio_stream_get( - channel->termination); - mpf_rtp_media_descriptor_t *audio_media = mrcp_session_audio_media_get( - session->offer, - channel->rtp_termination_slot->id); - if(audio_media && audio_stream) { - mpf_stream_direction_e direction = mpf_stream_reverse_direction_get(audio_stream->direction); - if(enable == TRUE) { - audio_media->direction |= direction; - } - else { - audio_media->direction &= ~direction; - } - audio_media->state = (audio_media->direction != STREAM_DIRECTION_NONE) ? MPF_MEDIA_ENABLED : MPF_MEDIA_DISABLED; - } - } - } - - session->offer->resource_name = channel->resource->name; - session->offer->resource_state = enable; - return mrcp_client_session_offer_send(session); -} - -static apt_bool_t mrcp_client_channel_add(mrcp_client_session_t *session, mrcp_channel_t *channel) -{ - mpf_rtp_termination_descriptor_t *rtp_descriptor = NULL; - rtp_termination_slot_t *slot; - apr_pool_t *pool = session->base.pool; - mrcp_client_profile_t *profile = session->profile; - if(mrcp_client_channel_find(session,channel,NULL) == TRUE) { - /* update */ - return mrcp_client_channel_modify(session,channel,TRUE); - } - - if(!session->offer) { - session->offer = mrcp_session_descriptor_create(pool); - } - - mrcp_client_session_state_set(session,SESSION_STATE_GENERATING_OFFER); - - if(mrcp_session_version_get(session) == MRCP_VERSION_1) { - session->offer->resource_name = channel->resource->name; - session->offer->resource_state = TRUE; - } - else { - mrcp_control_descriptor_t *control_media; - if(!channel->control_channel) { - channel->control_channel = mrcp_client_control_channel_create(session->base.connection_agent,channel,pool); - mrcp_client_control_channel_log_obj_set(channel->control_channel,session->base.log_obj); - } - control_media = mrcp_control_offer_create(pool); - control_media->id = mrcp_session_control_media_add(session->offer,control_media); - mrcp_cmid_add(control_media->cmid_arr,session->offer->control_media_arr->nelts); - control_media->resource_name = channel->resource->name; - if(mrcp_client_control_channel_add(channel->control_channel,control_media) == TRUE) { - channel->waiting_for_channel = TRUE; - mrcp_client_session_subrequest_add(session); - } - } - - apt_obj_log(APT_LOG_MARK,APT_PRIO_NOTICE,session->base.log_obj,"Add Control Channel "APT_NAMESIDRES_FMT, - MRCP_SESSION_NAMESID(session), - channel->resource->name.buf); - /* add control channel */ - APR_ARRAY_PUSH(session->channels,mrcp_channel_t*) = channel; - - /* add rtp termination slot */ - slot = apr_array_push(session->terminations); - slot->waiting = FALSE; - slot->termination = NULL; - slot->descriptor = NULL; - slot->channel = channel; - slot->id = 0; - - if(channel->termination) { - /* media termination mode */ - mpf_termination_t *termination; - mpf_audio_stream_t *audio_stream; - - if(!session->context) { - /* create media context first */ - session->context = mpf_engine_context_create( - session->base.media_engine, - session->base.name, - session,5,pool); - } - apt_obj_log(APT_LOG_MARK,APT_PRIO_DEBUG,session->base.log_obj,"Add Media Termination "APT_NAMESIDRES_FMT, - MRCP_SESSION_NAMESID(session), - mpf_termination_name_get(channel->termination)); - if(mpf_engine_termination_message_add( - session->base.media_engine, - MPF_ADD_TERMINATION,session->context,channel->termination,NULL, - &session->mpf_task_msg) == TRUE) { - channel->waiting_for_termination = TRUE; - mrcp_client_session_subrequest_add(session); - } - - /* initialize rtp descriptor */ - rtp_descriptor = apr_palloc(pool,sizeof(mpf_rtp_termination_descriptor_t)); - mpf_rtp_termination_descriptor_init(rtp_descriptor); - rtp_descriptor->audio.settings = profile->rtp_settings; - audio_stream = mpf_termination_audio_stream_get(channel->termination); - if(audio_stream) { - mpf_rtp_media_descriptor_t *media; - media = apr_palloc(pool,sizeof(mpf_rtp_media_descriptor_t)); - mpf_rtp_media_descriptor_init(media); - media->state = MPF_MEDIA_ENABLED; - media->direction = mpf_stream_reverse_direction_get(audio_stream->direction); - rtp_descriptor->audio.local = media; - if(audio_stream->capabilities) { - rtp_descriptor->audio.capabilities = mpf_stream_capabilities_clone(audio_stream->capabilities,pool); - rtp_descriptor->audio.capabilities->direction = media->direction; - } - } - - /* create rtp termination */ - termination = mpf_termination_create(session->base.rtp_factory,session,pool); - slot->termination = termination; - apt_obj_log(APT_LOG_MARK,APT_PRIO_DEBUG,session->base.log_obj,"Add Media Termination "APT_NAMESIDRES_FMT, - MRCP_SESSION_NAMESID(session), - mpf_termination_name_get(termination)); - - /* send add termination request (add to media context) */ - if(mpf_engine_termination_message_add( - session->base.media_engine, - MPF_ADD_TERMINATION,session->context,termination,rtp_descriptor, - &session->mpf_task_msg) == TRUE) { - slot->waiting = TRUE; - mrcp_client_session_subrequest_add(session); - } - mpf_engine_message_send(session->base.media_engine,&session->mpf_task_msg); - } - else { - /* bypass media mode */ - if(channel->rtp_termination_slot) { - rtp_descriptor = channel->rtp_termination_slot->descriptor; - if(rtp_descriptor) { - if(rtp_descriptor->audio.local) { - session->offer->ip = rtp_descriptor->audio.local->ip; - session->offer->ext_ip = rtp_descriptor->audio.local->ext_ip; - rtp_descriptor->audio.local->id = mrcp_session_audio_media_add(session->offer,rtp_descriptor->audio.local); - rtp_descriptor->audio.local->mid = session->offer->audio_media_arr->nelts; - slot->id = session->offer->audio_media_arr->nelts - 1; - } - } - } - } - - slot->descriptor = rtp_descriptor; - channel->rtp_termination_slot = slot; - - if(!session->subrequest_count) { - /* send offer to server */ - mrcp_client_session_offer_send(session); - } - return TRUE; -} - -static apt_bool_t mrcp_client_session_update(mrcp_client_session_t *session) -{ - if(!session->offer) { - return FALSE; - } - apt_obj_log(APT_LOG_MARK,APT_PRIO_INFO,session->base.log_obj,"Update Session "APT_NAMESID_FMT, - MRCP_SESSION_NAMESID(session)); - return mrcp_client_session_offer_send(session); -} - -static apt_bool_t mrcp_client_session_terminate(mrcp_client_session_t *session) -{ - mrcp_channel_t *channel; - rtp_termination_slot_t *slot; - int i; - - apt_obj_log(APT_LOG_MARK,APT_PRIO_INFO,session->base.log_obj,"Terminate Session "APT_NAMESID_FMT, - MRCP_SESSION_NAMESID(session)); - - mrcp_client_session_state_set(session,SESSION_STATE_TERMINATING); - if(session->context) { - /* first destroy existing topology */ - if(mpf_engine_topology_message_add( - session->base.media_engine, - MPF_DESTROY_TOPOLOGY,session->context, - &session->mpf_task_msg) == TRUE){ - mrcp_client_session_subrequest_add(session); - } - } - /* remove existing control channels */ - for(i=0; ichannels->nelts; i++) { - /* get existing channel */ - channel = APR_ARRAY_IDX(session->channels,i,mrcp_channel_t*); - if(!channel) continue; - - if(channel->control_channel) { - /* remove channel */ - apt_obj_log(APT_LOG_MARK,APT_PRIO_DEBUG,session->base.log_obj,"Remove Control Channel "APT_NAMESID_FMT, - MRCP_SESSION_NAMESID(session)); - if(mrcp_client_control_channel_remove(channel->control_channel) == TRUE) { - channel->waiting_for_channel = TRUE; - mrcp_client_session_subrequest_add(session); - } - } - - /* send subtract termination request */ - if(channel->termination) { - apt_obj_log(APT_LOG_MARK,APT_PRIO_DEBUG,session->base.log_obj,"Subtract Media Termination "APT_NAMESIDRES_FMT, - MRCP_SESSION_NAMESID(session), - mpf_termination_name_get(channel->termination)); - if(mpf_engine_termination_message_add( - session->base.media_engine, - MPF_SUBTRACT_TERMINATION,session->context,channel->termination,NULL, - &session->mpf_task_msg) == TRUE) { - channel->waiting_for_termination = TRUE; - mrcp_client_session_subrequest_add(session); - } - } - } - - if(session->context) { - /* subtract existing terminations */ - for(i=0; iterminations->nelts; i++) { - /* get existing termination */ - slot = &APR_ARRAY_IDX(session->terminations,i,rtp_termination_slot_t); - if(!slot->termination) continue; - - /* send subtract termination request */ - apt_obj_log(APT_LOG_MARK,APT_PRIO_DEBUG,session->base.log_obj,"Subtract Media Termination "APT_NAMESIDRES_FMT, - MRCP_SESSION_NAMESID(session), - mpf_termination_name_get(slot->termination)); - if(mpf_engine_termination_message_add( - session->base.media_engine, - MPF_SUBTRACT_TERMINATION,session->context,slot->termination,NULL, - &session->mpf_task_msg) == TRUE) { - slot->waiting = TRUE; - mrcp_client_session_subrequest_add(session); - } - } - - mpf_engine_message_send(session->base.media_engine,&session->mpf_task_msg); - } - - mrcp_client_session_subrequest_add(session); - mrcp_session_terminate_request(&session->base); - return TRUE; -} - -static apt_bool_t mrcp_client_resource_discover(mrcp_client_session_t *session) -{ - mrcp_session_descriptor_t *descriptor = NULL; - - apt_log(APT_LOG_MARK,APT_PRIO_INFO,"Discover Resources "APT_PTR_FMT, MRCP_SESSION_PTR(&session->base)); - session->answer = NULL; - mrcp_client_session_state_set(session,SESSION_STATE_DISCOVERING); - - if(mrcp_session_version_get(session) == MRCP_VERSION_1) { - mrcp_resource_t *resource; - mrcp_resource_id i; - - for(i=0; iprofile->resource_factory,i); - if(!resource) continue; - - descriptor = mrcp_session_descriptor_create(session->base.pool); - apt_string_copy(&descriptor->resource_name,&resource->name,session->base.pool); - if(mrcp_session_discover_request(&session->base,descriptor) == TRUE) { - mrcp_client_session_subrequest_add(session); - } - } - } - else { - if(mrcp_session_discover_request(&session->base,descriptor) == TRUE) { - mrcp_client_session_subrequest_add(session); - } - } - - if(session->subrequest_count == 0) { - session->status = MRCP_SIG_STATUS_CODE_FAILURE; - mrcp_app_sig_response_raise(session,TRUE); - } - return TRUE; -} - -static apt_bool_t mrcp_client_on_termination_add(mrcp_client_session_t *session, const mpf_message_t *mpf_message) -{ - rtp_termination_slot_t *termination_slot; - apt_obj_log(APT_LOG_MARK,APT_PRIO_DEBUG,session->base.log_obj,"Media Termination Added "APT_NAMESIDRES_FMT, - MRCP_SESSION_NAMESID(session), - mpf_termination_name_get(mpf_message->termination)); - termination_slot = mrcp_client_rtp_termination_find(session,mpf_message->termination); - if(termination_slot) { - /* rtp termination */ - mpf_rtp_termination_descriptor_t *rtp_descriptor; - if(termination_slot->waiting == FALSE) { - return FALSE; - } - termination_slot->waiting = FALSE; - rtp_descriptor = mpf_message->descriptor; - if(rtp_descriptor->audio.local) { - session->offer->ip = rtp_descriptor->audio.local->ip; - session->offer->ext_ip = rtp_descriptor->audio.local->ext_ip; - rtp_descriptor->audio.local->id = mrcp_session_audio_media_add(session->offer,rtp_descriptor->audio.local); - rtp_descriptor->audio.local->mid = session->offer->audio_media_arr->nelts; - termination_slot->id = session->offer->audio_media_arr->nelts - 1; - } - if(mrcp_client_session_subrequest_remove(session) == TRUE) { - /* send offer to server */ - mrcp_client_session_offer_send(session); - } - } - else { - /* channel termination */ - mrcp_channel_t *channel = mrcp_client_channel_termination_find(session,mpf_message->termination); - if(channel && channel->waiting_for_termination == TRUE) { - channel->waiting_for_termination = FALSE; - if(mrcp_client_session_subrequest_remove(session) == TRUE) { - /* send offer to server */ - mrcp_client_session_offer_send(session); - } - } - } - return TRUE; -} - -static apt_bool_t mrcp_client_on_termination_modify(mrcp_client_session_t *session, const mpf_message_t *mpf_message) -{ - rtp_termination_slot_t *termination_slot; - apt_obj_log(APT_LOG_MARK,APT_PRIO_DEBUG,session->base.log_obj,"Media Termination Modified "APT_NAMESIDRES_FMT, - MRCP_SESSION_NAMESID(session), - mpf_termination_name_get(mpf_message->termination)); - termination_slot = mrcp_client_rtp_termination_find(session,mpf_message->termination); - if(termination_slot) { - /* rtp termination */ - if(termination_slot->waiting == FALSE) { - return FALSE; - } - termination_slot->waiting = FALSE; - termination_slot->descriptor = mpf_message->descriptor;; - - if(mrcp_client_session_subrequest_remove(session) == TRUE) { - if(session->state == SESSION_STATE_GENERATING_OFFER) { - /* send offer to server */ - mrcp_client_session_offer_send(session); - } - else if(session->state == SESSION_STATE_PROCESSING_ANSWER) { - /* raise app response */ - mrcp_app_sig_response_raise(session,TRUE); - } - } - } - return TRUE; -} - -static apt_bool_t mrcp_client_on_termination_subtract(mrcp_client_session_t *session, const mpf_message_t *mpf_message) -{ - rtp_termination_slot_t *termination_slot; - apt_obj_log(APT_LOG_MARK,APT_PRIO_DEBUG,session->base.log_obj,"Media Termination Subtracted "APT_NAMESIDRES_FMT, - MRCP_SESSION_NAMESID(session), - mpf_termination_name_get(mpf_message->termination)); - termination_slot = mrcp_client_rtp_termination_find(session,mpf_message->termination); - if(termination_slot) { - /* rtp termination */ - if(termination_slot->waiting == FALSE) { - return FALSE; - } - termination_slot->waiting = FALSE; - if(mrcp_client_session_subrequest_remove(session) == TRUE) { - mrcp_app_session_terminate_raise(session,MRCP_SIG_STATUS_CODE_SUCCESS); - } - } - else { - /* channel termination */ - mrcp_channel_t *channel = mrcp_client_channel_termination_find(session,mpf_message->termination); - if(channel && channel->waiting_for_termination == TRUE) { - channel->waiting_for_termination = FALSE; - if(mrcp_client_session_subrequest_remove(session) == TRUE) { - /* raise app response */ - mrcp_app_sig_response_raise(session,TRUE); - } - } - } - return TRUE; -} - -apt_bool_t mrcp_client_mpf_message_process(mpf_message_container_t *mpf_message_container) -{ - apr_size_t i; - mrcp_client_session_t *session; - const mpf_message_t *mpf_message; - for(i=0; icount; i++) { - mpf_message = &mpf_message_container->messages[i]; - if(mpf_message->context) { - session = mpf_engine_context_object_get(mpf_message->context); - } - else { - session = NULL; - } - if(!session) { - apt_log(APT_LOG_MARK,APT_PRIO_DEBUG,"Received MPF Message: NULL session"); - continue; - } - if(mpf_message->message_type == MPF_MESSAGE_TYPE_RESPONSE) { - switch(mpf_message->command_id) { - case MPF_ADD_TERMINATION: - mrcp_client_on_termination_add(session,mpf_message); - break; - case MPF_MODIFY_TERMINATION: - mrcp_client_on_termination_modify(session,mpf_message); - break; - case MPF_SUBTRACT_TERMINATION: - mrcp_client_on_termination_subtract(session,mpf_message); - break; - case MPF_ADD_ASSOCIATION: - case MPF_REMOVE_ASSOCIATION: - case MPF_RESET_ASSOCIATIONS: - case MPF_APPLY_TOPOLOGY: - case MPF_DESTROY_TOPOLOGY: - if(mrcp_client_session_subrequest_remove(session) == TRUE) { - if(session->state == SESSION_STATE_GENERATING_OFFER) { - /* send offer to server */ - mrcp_client_session_offer_send(session); - } - else if(session->state == SESSION_STATE_PROCESSING_ANSWER) { - /* raise app response */ - mrcp_app_sig_response_raise(session,TRUE); - } - } - break; - default: - break; - } - } - else if(mpf_message->message_type == MPF_MESSAGE_TYPE_EVENT) { - apt_obj_log(APT_LOG_MARK,APT_PRIO_DEBUG,session->base.log_obj,"Process MPF Event "APT_NAMESID_FMT, - MRCP_SESSION_NAMESID(session)); - } - } - return TRUE; -} - -static apt_bool_t mrcp_client_resource_answer_process(mrcp_client_session_t *session, mrcp_session_descriptor_t *descriptor) -{ - apt_bool_t status = TRUE; - if(session->offer->resource_state == TRUE) { - if(descriptor->resource_state == TRUE) { - mrcp_client_av_media_answer_process(session,descriptor); - } - else { - status = FALSE; - } - } - return status; -} - -static apt_bool_t mrcp_client_control_media_answer_process(mrcp_client_session_t *session, mrcp_session_descriptor_t *descriptor) -{ - mrcp_channel_t *channel; - mrcp_control_descriptor_t *control_descriptor; - int i; - int count = session->channels->nelts; - if(count != descriptor->control_media_arr->nelts) { - apt_log(APT_LOG_MARK,APT_PRIO_WARNING,"Number of control channels [%d] != Number of control media in answer [%d]", - count,descriptor->control_media_arr->nelts); - count = descriptor->control_media_arr->nelts; - } - - if(!session->base.id.length) { - /* initial answer received, store session id and add to session's table */ - control_descriptor = mrcp_session_control_media_get(descriptor,0); - if(control_descriptor) { - session->base.id = control_descriptor->session_id; - } - } - - /* update existing control channels */ - for(i=0; ichannels,i,mrcp_channel_t*); - if(!channel) continue; - - /* get control descriptor */ - control_descriptor = mrcp_session_control_media_get(descriptor,i); - /* modify channel */ - apt_obj_log(APT_LOG_MARK,APT_PRIO_DEBUG,session->base.log_obj,"Modify Control Channel "APT_NAMESID_FMT, - MRCP_SESSION_NAMESID(session)); - if(mrcp_client_control_channel_modify(channel->control_channel,control_descriptor) == TRUE) { - channel->waiting_for_channel = TRUE; - mrcp_client_session_subrequest_add(session); - } - } - return TRUE; -} - -static apt_bool_t mrcp_client_av_media_answer_process(mrcp_client_session_t *session, mrcp_session_descriptor_t *descriptor) -{ - rtp_termination_slot_t *slot; - int i; - int count = session->terminations->nelts; - if(count != descriptor->audio_media_arr->nelts) { - apt_log(APT_LOG_MARK,APT_PRIO_WARNING,"Number of terminations [%d] != Number of audio media in answer [%d]", - count,descriptor->audio_media_arr->nelts); - count = descriptor->audio_media_arr->nelts; - } - - /* update existing terminations */ - for(i=0; iterminations,i,rtp_termination_slot_t); - remote_media = mrcp_session_audio_media_get(descriptor,i); - if(slot->descriptor) { - slot->descriptor->audio.remote = remote_media; - } - if(slot->termination) { - /* construct termination descriptor */ - rtp_descriptor = apr_palloc(session->base.pool,sizeof(mpf_rtp_termination_descriptor_t)); - mpf_rtp_termination_descriptor_init(rtp_descriptor); - rtp_descriptor->audio.local = NULL; - rtp_descriptor->audio.remote = remote_media; - - /* send modify termination request */ - apt_obj_log(APT_LOG_MARK,APT_PRIO_DEBUG,session->base.log_obj,"Modify Media Termination "APT_NAMESIDRES_FMT, - MRCP_SESSION_NAMESID(session), - mpf_termination_name_get(slot->termination)); - if(mpf_engine_termination_message_add( - session->base.media_engine, - MPF_MODIFY_TERMINATION,session->context,slot->termination,rtp_descriptor, - &session->mpf_task_msg) == TRUE) { - slot->waiting = TRUE; - mrcp_client_session_subrequest_add(session); - } - if(slot->channel && slot->channel->termination) { - if(mpf_engine_assoc_message_add( - session->base.media_engine, - MPF_ADD_ASSOCIATION,session->context,slot->termination,slot->channel->termination, - &session->mpf_task_msg) == TRUE) { - mrcp_client_session_subrequest_add(session); - } - } - } - } - return TRUE; -} - -static apt_bool_t mrcp_app_request_dispatch(mrcp_client_session_t *session, const mrcp_app_message_t *app_message) -{ - if(session->state == SESSION_STATE_TERMINATING) { - /* no more requests are allowed, as session is being terminated! - just return, it is horribly wrong and can crash anytime here */ - apt_obj_log(APT_LOG_MARK,APT_PRIO_ERROR,session->base.log_obj,"Inappropriate Application Request "APT_NAMESID_FMT" [%d]", - MRCP_SESSION_NAMESID(session), - app_message->sig_message.command_id); - return FALSE; - } - - if(session->disconnected == TRUE) { - /* cancel all the requests besides session termination one */ - if(!IS_SESSION_TERMINATE(app_message)) { - apt_obj_log(APT_LOG_MARK,APT_PRIO_WARNING,session->base.log_obj,"Cancel App Request "APT_NAMESID_FMT" [%d]", - MRCP_SESSION_NAMESID(session), app_message->sig_message.command_id); - session->status = MRCP_SIG_STATUS_CODE_CANCEL; - return mrcp_app_failure_message_raise(session); - } - } - - if(session->registered == FALSE) { - if(IS_SESSION_TERMINATE(app_message)) { - /* if session is not registered, nothing to terminate, just respond with success */ - session->status = MRCP_SIG_STATUS_CODE_SUCCESS; - return mrcp_app_sig_response_raise(session,FALSE); - } - - /* select signaling agent */ - session->base.signaling_agent = mrcp_sa_factory_agent_select(session->profile->sa_factory); - if(!session->base.signaling_agent) { - apt_obj_log(APT_LOG_MARK,APT_PRIO_WARNING,session->base.log_obj,"Failed to Select Signaling Agent "APT_NAMESID_FMT" [%d]", - MRCP_SESSION_NAMESID(session), - app_message->sig_message.command_id); - session->status = MRCP_SIG_STATUS_CODE_FAILURE; - } - if(session->profile->mrcp_version == MRCP_VERSION_2) { - /* select connection agent */ - session->base.connection_agent = mrcp_ca_factory_agent_select(session->profile->ca_factory); - if(!session->base.connection_agent) { - apt_obj_log(APT_LOG_MARK,APT_PRIO_WARNING,session->base.log_obj,"Failed to Select Connection Agent "APT_NAMESID_FMT" [%d]", - MRCP_SESSION_NAMESID(session), - app_message->sig_message.command_id); - session->status = MRCP_SIG_STATUS_CODE_FAILURE; - } - } - if(session->profile->mpf_factory) { - /* select media engine */ - session->base.media_engine = mpf_engine_factory_engine_select(session->profile->mpf_factory); - if(!session->base.media_engine) { - apt_obj_log(APT_LOG_MARK,APT_PRIO_WARNING,session->base.log_obj,"Failed to Select Media Engine "APT_NAMESID_FMT" [%d]", - MRCP_SESSION_NAMESID(session), - app_message->sig_message.command_id); - session->status = MRCP_SIG_STATUS_CODE_FAILURE; - } - } - /* set rtp termination factory */ - session->base.rtp_factory = session->profile->rtp_termination_factory; - - if(session->status == MRCP_SIG_STATUS_CODE_FAILURE) { - /* raise app response in case of failure */ - return mrcp_app_failure_message_raise(session); - } - - if(session->base.signaling_agent->create_client_session(&session->base,session->profile->signaling_settings) != TRUE) { - /* raise app response */ - apt_obj_log(APT_LOG_MARK,APT_PRIO_WARNING,session->base.log_obj,"Failed to Create Session "APT_NAMESID_FMT" [%d]", - MRCP_SESSION_NAMESID(session), - app_message->sig_message.command_id); - session->status = MRCP_SIG_STATUS_CODE_FAILURE; - return mrcp_app_failure_message_raise(session); - } - - mrcp_client_session_add(session->application->client,session); - session->registered = TRUE; - } - session->status = MRCP_SIG_STATUS_CODE_SUCCESS; - switch(app_message->message_type) { - case MRCP_APP_MESSAGE_TYPE_SIGNALING: - { - apt_obj_log(APT_LOG_MARK,APT_PRIO_DEBUG,session->base.log_obj,"Dispatch App Request "APT_NAMESID_FMT" [%d]", - MRCP_SESSION_NAMESID(session), - app_message->sig_message.command_id); - switch(app_message->sig_message.command_id) { - case MRCP_SIG_COMMAND_SESSION_UPDATE: - mrcp_client_session_update(session); - break; - case MRCP_SIG_COMMAND_SESSION_TERMINATE: - mrcp_client_session_terminate(session); - break; - case MRCP_SIG_COMMAND_CHANNEL_ADD: - mrcp_client_channel_add(session,app_message->channel); - break; - case MRCP_SIG_COMMAND_CHANNEL_REMOVE: - mrcp_client_channel_modify(session,app_message->channel,FALSE); - break; - case MRCP_SIG_COMMAND_RESOURCE_DISCOVER: - mrcp_client_resource_discover(session); - break; - default: - break; - } - break; - } - case MRCP_APP_MESSAGE_TYPE_CONTROL: - { - mrcp_client_message_send(session,app_message->channel,app_message->control_message); - break; - } - } - return TRUE; -} diff --git a/libs/unimrcp/libs/mrcp-engine/Makefile.am b/libs/unimrcp/libs/mrcp-engine/Makefile.am deleted file mode 100644 index a67c910526a..00000000000 --- a/libs/unimrcp/libs/mrcp-engine/Makefile.am +++ /dev/null @@ -1,38 +0,0 @@ -MAINTAINERCLEANFILES = Makefile.in - -AM_CPPFLAGS = -I$(top_srcdir)/libs/mrcp-engine/include \ - -I$(top_srcdir)/libs/mrcp/include \ - -I$(top_srcdir)/libs/mrcp/message/include \ - -I$(top_srcdir)/libs/mrcp/control/include \ - -I$(top_srcdir)/libs/mrcp/resources/include \ - -I$(top_srcdir)/libs/mpf/include \ - -I$(top_srcdir)/libs/apr-toolkit/include \ - $(UNIMRCP_APR_INCLUDES) - -noinst_LTLIBRARIES = libmrcpengine.la - -include_HEADERS = include/mrcp_engine_types.h \ - include/mrcp_engine_plugin.h \ - include/mrcp_engine_iface.h \ - include/mrcp_engine_impl.h \ - include/mrcp_synth_engine.h \ - include/mrcp_recog_engine.h \ - include/mrcp_recorder_engine.h \ - include/mrcp_verifier_engine.h \ - include/mrcp_resource_engine.h \ - include/mrcp_engine_factory.h \ - include/mrcp_engine_loader.h \ - include/mrcp_state_machine.h \ - include/mrcp_synth_state_machine.h \ - include/mrcp_recog_state_machine.h \ - include/mrcp_recorder_state_machine.h \ - include/mrcp_verifier_state_machine.h - -libmrcpengine_la_SOURCES = src/mrcp_engine_iface.c \ - src/mrcp_engine_impl.c \ - src/mrcp_engine_factory.c \ - src/mrcp_engine_loader.c \ - src/mrcp_synth_state_machine.c \ - src/mrcp_recog_state_machine.c \ - src/mrcp_recorder_state_machine.c \ - src/mrcp_verifier_state_machine.c diff --git a/libs/unimrcp/libs/mrcp-engine/include/mrcp_engine_factory.h b/libs/unimrcp/libs/mrcp-engine/include/mrcp_engine_factory.h deleted file mode 100644 index d769a0a937e..00000000000 --- a/libs/unimrcp/libs/mrcp-engine/include/mrcp_engine_factory.h +++ /dev/null @@ -1,62 +0,0 @@ -/* - * Copyright 2008-2014 Arsen Chaloyan - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - * - * $Id: mrcp_engine_factory.h 2136 2014-07-04 06:33:36Z achaloyan@gmail.com $ - */ - -#ifndef MRCP_ENGINE_FACTORY_H -#define MRCP_ENGINE_FACTORY_H - -/** - * @file mrcp_engine_factory.h - * @brief Factory of MRCP Engines - */ - -#include "mrcp_engine_iface.h" - -APT_BEGIN_EXTERN_C - -/** Opaque engine factory declaration */ -typedef struct mrcp_engine_factory_t mrcp_engine_factory_t; - -/** Create engine factory */ -MRCP_DECLARE(mrcp_engine_factory_t*) mrcp_engine_factory_create(apr_pool_t *pool); - -/** Destroy registered engines and the factory */ -MRCP_DECLARE(apt_bool_t) mrcp_engine_factory_destroy(mrcp_engine_factory_t *factory); - -/** Open registered engines */ -MRCP_DECLARE(apt_bool_t) mrcp_engine_factory_open(mrcp_engine_factory_t *factory); - -/** Close registered engines */ -MRCP_DECLARE(apt_bool_t) mrcp_engine_factory_close(mrcp_engine_factory_t *factory); - - -/** Register engine */ -MRCP_DECLARE(apt_bool_t) mrcp_engine_factory_engine_register(mrcp_engine_factory_t *factory, mrcp_engine_t *engine); - -/** Get engine by name */ -MRCP_DECLARE(mrcp_engine_t*) mrcp_engine_factory_engine_get(const mrcp_engine_factory_t *factory, const char *name); - -/** Find engine by resource identifier */ -MRCP_DECLARE(mrcp_engine_t*) mrcp_engine_factory_engine_find(const mrcp_engine_factory_t *factory, mrcp_resource_id resource_id); - -/** Start iterating over the engines in a factory */ -MRCP_DECLARE(apr_hash_index_t*) mrcp_engine_factory_engine_first(const mrcp_engine_factory_t *factory); - - -APT_END_EXTERN_C - -#endif /* MRCP_ENGINE_FACTORY_H */ diff --git a/libs/unimrcp/libs/mrcp-engine/include/mrcp_engine_iface.h b/libs/unimrcp/libs/mrcp-engine/include/mrcp_engine_iface.h deleted file mode 100644 index 2e70c80dec1..00000000000 --- a/libs/unimrcp/libs/mrcp-engine/include/mrcp_engine_iface.h +++ /dev/null @@ -1,85 +0,0 @@ -/* - * Copyright 2008-2014 Arsen Chaloyan - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - * - * $Id: mrcp_engine_iface.h 2136 2014-07-04 06:33:36Z achaloyan@gmail.com $ - */ - -#ifndef MRCP_ENGINE_IFACE_H -#define MRCP_ENGINE_IFACE_H - -/** - * @file mrcp_engine_iface.h - * @brief MRCP Engine User Interface (typically user is an MRCP server) - */ - -#include "mrcp_engine_types.h" - -APT_BEGIN_EXTERN_C - -/** Destroy engine */ -apt_bool_t mrcp_engine_virtual_destroy(mrcp_engine_t *engine); - -/** Open engine */ -apt_bool_t mrcp_engine_virtual_open(mrcp_engine_t *engine); - -/** Response to open engine request */ -void mrcp_engine_on_open(mrcp_engine_t *engine, apt_bool_t status); - -/** Close engine */ -apt_bool_t mrcp_engine_virtual_close(mrcp_engine_t *engine); - -/** Response to close engine request */ -void mrcp_engine_on_close(mrcp_engine_t *engine); - - -/** Create engine channel */ -mrcp_engine_channel_t* mrcp_engine_channel_virtual_create(mrcp_engine_t *engine, mrcp_version_e mrcp_version, apr_pool_t *pool); - -/** Destroy engine channel */ -apt_bool_t mrcp_engine_channel_virtual_destroy(mrcp_engine_channel_t *channel); - -/** Open engine channel */ -static APR_INLINE apt_bool_t mrcp_engine_channel_virtual_open(mrcp_engine_channel_t *channel) -{ - if(channel->is_open == FALSE) { - channel->is_open = channel->method_vtable->open(channel); - return channel->is_open; - } - return FALSE; -} - -/** Close engine channel */ -static APR_INLINE apt_bool_t mrcp_engine_channel_virtual_close(mrcp_engine_channel_t *channel) -{ - if(channel->is_open == TRUE) { - channel->is_open = FALSE; - return channel->method_vtable->close(channel); - } - return FALSE; -} - -/** Process request */ -static APR_INLINE apt_bool_t mrcp_engine_channel_request_process(mrcp_engine_channel_t *channel, mrcp_message_t *message) -{ - return channel->method_vtable->process_request(channel,message); -} - -/** Allocate engine config */ -mrcp_engine_config_t* mrcp_engine_config_alloc(apr_pool_t *pool); - - -APT_END_EXTERN_C - -#endif /* MRCP_ENGINE_IFACE_H */ diff --git a/libs/unimrcp/libs/mrcp-engine/include/mrcp_engine_impl.h b/libs/unimrcp/libs/mrcp-engine/include/mrcp_engine_impl.h deleted file mode 100644 index 6900b6abe07..00000000000 --- a/libs/unimrcp/libs/mrcp-engine/include/mrcp_engine_impl.h +++ /dev/null @@ -1,135 +0,0 @@ -/* - * Copyright 2008-2014 Arsen Chaloyan - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - * - * $Id: mrcp_engine_impl.h 2136 2014-07-04 06:33:36Z achaloyan@gmail.com $ - */ - -#ifndef MRCP_ENGINE_IMPL_H -#define MRCP_ENGINE_IMPL_H - -/** - * @file mrcp_engine_impl.h - * @brief MRCP Engine Realization Interface (typically should be implemented in plugins) - */ - -#include "mrcp_engine_types.h" -#include "mpf_stream.h" - -APT_BEGIN_EXTERN_C - -/** Create engine */ -mrcp_engine_t* mrcp_engine_create( - mrcp_resource_id resource_id, - void *obj, - const mrcp_engine_method_vtable_t *vtable, - apr_pool_t *pool); - -/** Send engine open response */ -static APR_INLINE apt_bool_t mrcp_engine_open_respond(mrcp_engine_t *engine, apt_bool_t status) -{ - return engine->event_vtable->on_open(engine,status); -} - -/** Send engine close response */ -static APR_INLINE apt_bool_t mrcp_engine_close_respond(mrcp_engine_t *engine) -{ - return engine->event_vtable->on_close(engine); -} - - -/** Get engine config */ -const mrcp_engine_config_t* mrcp_engine_config_get(const mrcp_engine_t *engine); - -/** Get engine param by name */ -const char* mrcp_engine_param_get(const mrcp_engine_t *engine, const char *name); - - -/** Create engine channel */ -mrcp_engine_channel_t* mrcp_engine_channel_create( - mrcp_engine_t *engine, - const mrcp_engine_channel_method_vtable_t *method_vtable, - void *method_obj, - mpf_termination_t *termination, - apr_pool_t *pool); - -/** Create audio termination */ -mpf_termination_t* mrcp_engine_audio_termination_create( - void *obj, - const mpf_audio_stream_vtable_t *stream_vtable, - mpf_stream_capabilities_t *capabilities, - apr_pool_t *pool); - -/** Create engine channel and source media termination - * @deprecated @see mrcp_engine_channel_create() and mrcp_engine_audio_termination_create() - */ -mrcp_engine_channel_t* mrcp_engine_source_channel_create( - mrcp_engine_t *engine, - const mrcp_engine_channel_method_vtable_t *channel_vtable, - const mpf_audio_stream_vtable_t *stream_vtable, - void *method_obj, - mpf_codec_descriptor_t *codec_descriptor, - apr_pool_t *pool); - -/** Create engine channel and sink media termination - * @deprecated @see mrcp_engine_channel_create() and mrcp_engine_audio_termination_create() - */ -mrcp_engine_channel_t* mrcp_engine_sink_channel_create( - mrcp_engine_t *engine, - const mrcp_engine_channel_method_vtable_t *channel_vtable, - const mpf_audio_stream_vtable_t *stream_vtable, - void *method_obj, - mpf_codec_descriptor_t *codec_descriptor, - apr_pool_t *pool); - -/** Send channel open response */ -static APR_INLINE apt_bool_t mrcp_engine_channel_open_respond(mrcp_engine_channel_t *channel, apt_bool_t status) -{ - return channel->event_vtable->on_open(channel,status); -} - -/** Send channel close response */ -static APR_INLINE apt_bool_t mrcp_engine_channel_close_respond(mrcp_engine_channel_t *channel) -{ - return channel->event_vtable->on_close(channel); -} - -/** Send response/event message */ -static APR_INLINE apt_bool_t mrcp_engine_channel_message_send(mrcp_engine_channel_t *channel, mrcp_message_t *message) -{ - return channel->event_vtable->on_message(channel,message); -} - -/** Get channel identifier */ -static APR_INLINE const char* mrcp_engine_channel_id_get(mrcp_engine_channel_t *channel) -{ - return channel->id.buf; -} - -/** Get MRCP version channel is created in the scope of */ -static APR_INLINE mrcp_version_e mrcp_engine_channel_version_get(const mrcp_engine_channel_t *channel) -{ - return channel->mrcp_version; -} - -/** Get codec descriptor of the audio source stream */ -const mpf_codec_descriptor_t* mrcp_engine_source_stream_codec_get(const mrcp_engine_channel_t *channel); - -/** Get codec descriptor of the audio sink stream */ -const mpf_codec_descriptor_t* mrcp_engine_sink_stream_codec_get(const mrcp_engine_channel_t *channel); - - -APT_END_EXTERN_C - -#endif /* MRCP_ENGINE_IMPL_H */ diff --git a/libs/unimrcp/libs/mrcp-engine/include/mrcp_engine_loader.h b/libs/unimrcp/libs/mrcp-engine/include/mrcp_engine_loader.h deleted file mode 100644 index a4084972666..00000000000 --- a/libs/unimrcp/libs/mrcp-engine/include/mrcp_engine_loader.h +++ /dev/null @@ -1,54 +0,0 @@ -/* - * Copyright 2008-2014 Arsen Chaloyan - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - * - * $Id: mrcp_engine_loader.h 2136 2014-07-04 06:33:36Z achaloyan@gmail.com $ - */ - -#ifndef MRCP_ENGINE_LOADER_H -#define MRCP_ENGINE_LOADER_H - -/** - * @file mrcp_engine_loader.h - * @brief Loader of plugins for MRCP engines - */ - -#include "mrcp_engine_iface.h" - -APT_BEGIN_EXTERN_C - -/** Opaque engine loader declaration */ -typedef struct mrcp_engine_loader_t mrcp_engine_loader_t; - -/** Create engine loader */ -MRCP_DECLARE(mrcp_engine_loader_t*) mrcp_engine_loader_create(apr_pool_t *pool); - -/** Destroy engine loader */ -MRCP_DECLARE(apt_bool_t) mrcp_engine_loader_destroy(mrcp_engine_loader_t *loader); - -/** Unload loaded plugins */ -MRCP_DECLARE(apt_bool_t) mrcp_engine_loader_plugins_unload(mrcp_engine_loader_t *loader); - - -/** Load engine plugin */ -MRCP_DECLARE(mrcp_engine_t*) mrcp_engine_loader_plugin_load( - mrcp_engine_loader_t *loader, - const char *id, - const char *path, - mrcp_engine_config_t *config); - - -APT_END_EXTERN_C - -#endif /* MRCP_ENGINE_LOADER_H */ diff --git a/libs/unimrcp/libs/mrcp-engine/include/mrcp_engine_plugin.h b/libs/unimrcp/libs/mrcp-engine/include/mrcp_engine_plugin.h deleted file mode 100644 index e9cdb6da9be..00000000000 --- a/libs/unimrcp/libs/mrcp-engine/include/mrcp_engine_plugin.h +++ /dev/null @@ -1,126 +0,0 @@ -/* - * Copyright 2008-2014 Arsen Chaloyan - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - * - * $Id: mrcp_engine_plugin.h 2139 2014-07-07 05:06:19Z achaloyan@gmail.com $ - */ - -#ifndef MRCP_ENGINE_PLUGIN_H -#define MRCP_ENGINE_PLUGIN_H - -/** - * @file mrcp_engine_plugin.h - * @brief MRCP Engine Plugin - */ - -#include "apr_version.h" -#include "apt_log.h" -#include "mrcp_engine_types.h" - -APT_BEGIN_EXTERN_C - -/** Let the plugin symbols be always exported as C functions */ -#ifdef __cplusplus -#define MRCP_PLUGIN_EXTERN_C extern "C" -#else -#define MRCP_PLUGIN_EXTERN_C extern -#endif - -/** Plugin export defines */ -#ifdef WIN32 -#define MRCP_PLUGIN_DECLARE(type) MRCP_PLUGIN_EXTERN_C __declspec(dllexport) type -#else -#define MRCP_PLUGIN_DECLARE(type) MRCP_PLUGIN_EXTERN_C type -#endif - -/** [REQUIRED] Symbol name of the main entry point in plugin DSO */ -#define MRCP_PLUGIN_ENGINE_SYM_NAME "mrcp_plugin_create" -/** [REQUIRED] Symbol name of the vesrion number entry point in plugin DSO */ -#define MRCP_PLUGIN_VERSION_SYM_NAME "mrcp_plugin_version" -/** [IMPLIED] Symbol name of the log accessor entry point in plugin DSO */ -#define MRCP_PLUGIN_LOGGER_SYM_NAME "mrcp_plugin_logger_set" - -/** Prototype of engine creator (entry point of plugin DSO) */ -typedef mrcp_engine_t* (*mrcp_plugin_creator_f)(apr_pool_t *pool); - -/** Prototype of log accessor (entry point of plugin DSO) */ -typedef apt_bool_t (*mrcp_plugin_log_accessor_f)(apt_logger_t *logger); - -/** Declare this macro in plugins to use log routine of the server */ -#define MRCP_PLUGIN_LOGGER_IMPLEMENT \ - MRCP_PLUGIN_DECLARE(apt_bool_t) mrcp_plugin_logger_set(apt_logger_t *logger) \ - { return apt_log_instance_set(logger); } - -/** Declare this macro in plugins to set plugin version */ -#define MRCP_PLUGIN_VERSION_DECLARE \ - MRCP_PLUGIN_DECLARE(mrcp_plugin_version_t) mrcp_plugin_version; \ - mrcp_plugin_version_t mrcp_plugin_version = \ - {PLUGIN_MAJOR_VERSION, PLUGIN_MINOR_VERSION, PLUGIN_PATCH_VERSION}; - - -/** major version - * Major API changes that could cause compatibility problems for older - * plugins such as structure size changes. No binary compatibility is - * possible across a change in the major version. - */ -#define PLUGIN_MAJOR_VERSION 1 - -/** minor version - * Minor API changes that do not cause binary compatibility problems. - * Reset to 0 when upgrading PLUGIN_MAJOR_VERSION - */ -#define PLUGIN_MINOR_VERSION 2 - -/** patch level - * The Patch Level never includes API changes, simply bug fixes. - * Reset to 0 when upgrading PLUGIN_MINOR_VERSION - */ -#define PLUGIN_PATCH_VERSION 0 - - -/** - * Check at compile time if the plugin version is at least a certain - * level. - */ -#define PLUGIN_VERSION_AT_LEAST(major,minor,patch) \ -(((major) < PLUGIN_MAJOR_VERSION) \ - || ((major) == PLUGIN_MAJOR_VERSION && (minor) < PLUGIN_MINOR_VERSION) \ - || ((major) == PLUGIN_MAJOR_VERSION && (minor) == PLUGIN_MINOR_VERSION && (patch) <= PLUGIN_PATCH_VERSION)) - -/** The formatted string of plugin's version */ -#define PLUGIN_VERSION_STRING \ - APR_STRINGIFY(PLUGIN_MAJOR_VERSION) "." \ - APR_STRINGIFY(PLUGIN_MINOR_VERSION) "." \ - APR_STRINGIFY(PLUGIN_PATCH_VERSION) - -/** Plugin version */ -typedef apr_version_t mrcp_plugin_version_t; - -/** Get plugin version */ -static APR_INLINE void mrcp_plugin_version_get(mrcp_plugin_version_t *version) -{ - version->major = PLUGIN_MAJOR_VERSION; - version->minor = PLUGIN_MINOR_VERSION; - version->patch = PLUGIN_PATCH_VERSION; -} - -/** Check plugin version */ -static APR_INLINE int mrcp_plugin_version_check(mrcp_plugin_version_t *version) -{ - return PLUGIN_VERSION_AT_LEAST(version->major,version->minor,version->patch); -} - -APT_END_EXTERN_C - -#endif /* MRCP_ENGINE_PLUGIN_H */ diff --git a/libs/unimrcp/libs/mrcp-engine/include/mrcp_engine_types.h b/libs/unimrcp/libs/mrcp-engine/include/mrcp_engine_types.h deleted file mode 100644 index ee2390c255e..00000000000 --- a/libs/unimrcp/libs/mrcp-engine/include/mrcp_engine_types.h +++ /dev/null @@ -1,156 +0,0 @@ -/* - * Copyright 2008-2014 Arsen Chaloyan - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - * - * $Id: mrcp_engine_types.h 2136 2014-07-04 06:33:36Z achaloyan@gmail.com $ - */ - -#ifndef MRCP_ENGINE_TYPES_H -#define MRCP_ENGINE_TYPES_H - -/** - * @file mrcp_engine_types.h - * @brief MRCP Engine Types - */ - -#include -#include "mrcp_state_machine.h" -#include "mpf_types.h" -#include "apt_string.h" - -APT_BEGIN_EXTERN_C - -/** MRCP engine declaration */ -typedef struct mrcp_engine_t mrcp_engine_t; -/** MRCP engine config declaration */ -typedef struct mrcp_engine_config_t mrcp_engine_config_t; -/** MRCP engine vtable declaration */ -typedef struct mrcp_engine_method_vtable_t mrcp_engine_method_vtable_t; -/** MRCP engine event vtable declaration */ -typedef struct mrcp_engine_event_vtable_t mrcp_engine_event_vtable_t; -/** MRCP engine channel declaration */ -typedef struct mrcp_engine_channel_t mrcp_engine_channel_t; -/** MRCP engine channel virtual method table declaration */ -typedef struct mrcp_engine_channel_method_vtable_t mrcp_engine_channel_method_vtable_t; -/** MRCP engine channel virtual event table declaration */ -typedef struct mrcp_engine_channel_event_vtable_t mrcp_engine_channel_event_vtable_t; - -/** Table of channel virtual methods */ -struct mrcp_engine_channel_method_vtable_t { - /** Virtual destroy */ - apt_bool_t (*destroy)(mrcp_engine_channel_t *channel); - /** Virtual open */ - apt_bool_t (*open)(mrcp_engine_channel_t *channel); - /** Virtual close */ - apt_bool_t (*close)(mrcp_engine_channel_t *channel); - /** Virtual process_request */ - apt_bool_t (*process_request)(mrcp_engine_channel_t *channel, mrcp_message_t *request); -}; - -/** Table of channel virtual event handlers */ -struct mrcp_engine_channel_event_vtable_t { - /** Open event handler */ - apt_bool_t (*on_open)(mrcp_engine_channel_t *channel, apt_bool_t status); - /** Close event handler */ - apt_bool_t (*on_close)(mrcp_engine_channel_t *channel); - /** Message event handler */ - apt_bool_t (*on_message)(mrcp_engine_channel_t *channel, mrcp_message_t *message); -}; - -/** MRCP engine channel declaration */ -struct mrcp_engine_channel_t { - /** Table of virtual methods */ - const mrcp_engine_channel_method_vtable_t *method_vtable; - /** External object used with virtual methods */ - void *method_obj; - /** Table of virtual event handlers */ - const mrcp_engine_channel_event_vtable_t *event_vtable; - /** External object used with event handlers */ - void *event_obj; - /** Media termination */ - mpf_termination_t *termination; - /** Back pointer to engine */ - mrcp_engine_t *engine; - /** Unique identifier to be used in traces */ - apt_str_t id; - /** MRCP version */ - mrcp_version_e mrcp_version; - /** Is channel successfully opened */ - apt_bool_t is_open; - /** Pool to allocate memory from */ - apr_pool_t *pool; -}; - -/** Table of MRCP engine virtual methods */ -struct mrcp_engine_method_vtable_t { - /** Virtual destroy */ - apt_bool_t (*destroy)(mrcp_engine_t *engine); - /** Virtual open */ - apt_bool_t (*open)(mrcp_engine_t *engine); - /** Virtual close */ - apt_bool_t (*close)(mrcp_engine_t *engine); - /** Virtual channel create */ - mrcp_engine_channel_t* (*create_channel)(mrcp_engine_t *engine, apr_pool_t *pool); -}; - -/** Table of MRCP engine virtual event handlers */ -struct mrcp_engine_event_vtable_t { - /** Open event handler */ - apt_bool_t (*on_open)(mrcp_engine_t *channel, apt_bool_t status); - /** Close event handler */ - apt_bool_t (*on_close)(mrcp_engine_t *channel); -}; - -/** MRCP engine */ -struct mrcp_engine_t { - /** Identifier of the engine */ - const char *id; - /** Resource identifier */ - mrcp_resource_id resource_id; - /** External object associated with engine */ - void *obj; - /** Table of virtual methods */ - const mrcp_engine_method_vtable_t *method_vtable; - /** Table of virtual event handlers */ - const mrcp_engine_event_vtable_t *event_vtable; - /** External object used with event handlers */ - void *event_obj; - /** Codec manager */ - const mpf_codec_manager_t *codec_manager; - /** Dir layout structure */ - const apt_dir_layout_t *dir_layout; - /** Config of engine */ - mrcp_engine_config_t *config; - /** Number of simultaneous channels currently in use */ - apr_size_t cur_channel_count; - /** Is engine successfully opened */ - apt_bool_t is_open; - /** Pool to allocate memory from */ - apr_pool_t *pool; - - /** Create state machine */ - mrcp_state_machine_t* (*create_state_machine)(void *obj, mrcp_version_e version, apr_pool_t *pool); -}; - -/** MRCP engine config */ -struct mrcp_engine_config_t { - /** Max number of simultaneous channels */ - apr_size_t max_channel_count; - /** Table of name/value string params */ - apr_table_t *params; -}; - -APT_END_EXTERN_C - -#endif /* MRCP_ENGINE_TYPES_H */ diff --git a/libs/unimrcp/libs/mrcp-engine/include/mrcp_recog_engine.h b/libs/unimrcp/libs/mrcp-engine/include/mrcp_recog_engine.h deleted file mode 100644 index d9fce1bd975..00000000000 --- a/libs/unimrcp/libs/mrcp-engine/include/mrcp_recog_engine.h +++ /dev/null @@ -1,35 +0,0 @@ -/* - * Copyright 2008-2014 Arsen Chaloyan - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - * - * $Id: mrcp_recog_engine.h 2136 2014-07-04 06:33:36Z achaloyan@gmail.com $ - */ - -#ifndef MRCP_RECOG_ENGINE_H -#define MRCP_RECOG_ENGINE_H - -/** - * @file mrcp_recog_engine.h - * @brief Recognizer Engine Includes - */ - -#include "mrcp_engine_plugin.h" -#include "mrcp_engine_impl.h" - -#include "mrcp_recog_resource.h" -#include "mrcp_recog_header.h" -#include "mrcp_generic_header.h" -#include "mrcp_message.h" - -#endif /* MRCP_RECOG_ENGINE_H */ diff --git a/libs/unimrcp/libs/mrcp-engine/include/mrcp_recog_state_machine.h b/libs/unimrcp/libs/mrcp-engine/include/mrcp_recog_state_machine.h deleted file mode 100644 index 9be07b6bec5..00000000000 --- a/libs/unimrcp/libs/mrcp-engine/include/mrcp_recog_state_machine.h +++ /dev/null @@ -1,36 +0,0 @@ -/* - * Copyright 2008-2014 Arsen Chaloyan - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - * - * $Id: mrcp_recog_state_machine.h 2136 2014-07-04 06:33:36Z achaloyan@gmail.com $ - */ - -#ifndef MRCP_RECOG_STATE_MACHINE_H -#define MRCP_RECOG_STATE_MACHINE_H - -/** - * @file mrcp_recog_state_machine.h - * @brief MRCP Recognizer State Machine - */ - -#include "mrcp_state_machine.h" - -APT_BEGIN_EXTERN_C - -/** Create MRCP recognizer state machine */ -mrcp_state_machine_t* mrcp_recog_state_machine_create(void *obj, mrcp_version_e version, apr_pool_t *pool); - -APT_END_EXTERN_C - -#endif /* MRCP_RECOG_STATE_MACHINE_H */ diff --git a/libs/unimrcp/libs/mrcp-engine/include/mrcp_recorder_engine.h b/libs/unimrcp/libs/mrcp-engine/include/mrcp_recorder_engine.h deleted file mode 100644 index 90fa0227250..00000000000 --- a/libs/unimrcp/libs/mrcp-engine/include/mrcp_recorder_engine.h +++ /dev/null @@ -1,35 +0,0 @@ -/* - * Copyright 2008-2014 Arsen Chaloyan - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - * - * $Id: mrcp_recorder_engine.h 2136 2014-07-04 06:33:36Z achaloyan@gmail.com $ - */ - -#ifndef MRCP_RECORDER_ENGINE_H -#define MRCP_RECORDER_ENGINE_H - -/** - * @file mrcp_recorder_engine.h - * @brief Recorder Engine Includes - */ - -#include "mrcp_engine_plugin.h" -#include "mrcp_engine_impl.h" - -#include "mrcp_recorder_resource.h" -#include "mrcp_recorder_header.h" -#include "mrcp_generic_header.h" -#include "mrcp_message.h" - -#endif /* MRCP_RECORDER_ENGINE_H */ diff --git a/libs/unimrcp/libs/mrcp-engine/include/mrcp_recorder_state_machine.h b/libs/unimrcp/libs/mrcp-engine/include/mrcp_recorder_state_machine.h deleted file mode 100644 index 242440a42f2..00000000000 --- a/libs/unimrcp/libs/mrcp-engine/include/mrcp_recorder_state_machine.h +++ /dev/null @@ -1,36 +0,0 @@ -/* - * Copyright 2008-2014 Arsen Chaloyan - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - * - * $Id: mrcp_recorder_state_machine.h 2136 2014-07-04 06:33:36Z achaloyan@gmail.com $ - */ - -#ifndef MRCP_RECORDER_STATE_MACHINE_H -#define MRCP_RECORDER_STATE_MACHINE_H - -/** - * @file mrcp_recorder_state_machine.h - * @brief MRCP Recorder State Machine - */ - -#include "mrcp_state_machine.h" - -APT_BEGIN_EXTERN_C - -/** Create MRCP recorder state machine */ -mrcp_state_machine_t* mrcp_recorder_state_machine_create(void *obj, mrcp_version_e version, apr_pool_t *pool); - -APT_END_EXTERN_C - -#endif /* MRCP_RECORDER_STATE_MACHINE_H */ diff --git a/libs/unimrcp/libs/mrcp-engine/include/mrcp_resource_engine.h b/libs/unimrcp/libs/mrcp-engine/include/mrcp_resource_engine.h deleted file mode 100644 index 3743af9ab09..00000000000 --- a/libs/unimrcp/libs/mrcp-engine/include/mrcp_resource_engine.h +++ /dev/null @@ -1,51 +0,0 @@ -/* - * Copyright 2008-2014 Arsen Chaloyan - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - * - * $Id: mrcp_resource_engine.h 2136 2014-07-04 06:33:36Z achaloyan@gmail.com $ - */ - -#ifndef MRCP_RESOURCE_ENGINE_H -#define MRCP_RESOURCE_ENGINE_H - -/** - * @file mrcp_resource_engine.h - * @brief Legacy MRCP Resource Engine - * @deprecated @see mrcp_engine_plugin.h and mrcp_engine_impl.h - */ - -#include "mrcp_engine_plugin.h" -#include "mrcp_engine_impl.h" - -APT_BEGIN_EXTERN_C - -/** Termorary define legacy mrcp_resource_engine_t as mrcp_engine_t */ -typedef mrcp_engine_t mrcp_resource_engine_t; - -/** - * Create resource engine - * @deprecated @see mrcp_engine_create - */ -static APR_INLINE mrcp_engine_t* mrcp_resource_engine_create( - mrcp_resource_id resource_id, - void *obj, - const mrcp_engine_method_vtable_t *vtable, - apr_pool_t *pool) -{ - return mrcp_engine_create(resource_id,obj,vtable,pool); -} - -APT_END_EXTERN_C - -#endif /* MRCP_RESOURCE_ENGINE_H */ diff --git a/libs/unimrcp/libs/mrcp-engine/include/mrcp_state_machine.h b/libs/unimrcp/libs/mrcp-engine/include/mrcp_state_machine.h deleted file mode 100644 index acec6fa8bc1..00000000000 --- a/libs/unimrcp/libs/mrcp-engine/include/mrcp_state_machine.h +++ /dev/null @@ -1,86 +0,0 @@ -/* - * Copyright 2008-2014 Arsen Chaloyan - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - * - * $Id: mrcp_state_machine.h 2136 2014-07-04 06:33:36Z achaloyan@gmail.com $ - */ - -#ifndef MRCP_STATE_MACHINE_H -#define MRCP_STATE_MACHINE_H - -/** - * @file mrcp_state_machine.h - * @brief MRCP State Machine - */ - -#include "mrcp_types.h" - -APT_BEGIN_EXTERN_C - -/** MRCP state machine declaration */ -typedef struct mrcp_state_machine_t mrcp_state_machine_t; - - -/** MRCP state machine */ -struct mrcp_state_machine_t { - /** External object associated with state machine */ - void *obj; - /** State either active or deactivating */ - apt_bool_t active; - - /** Virtual update */ - apt_bool_t (*update)(mrcp_state_machine_t *state_machine, mrcp_message_t *message); - /** Deactivate */ - apt_bool_t (*deactivate)(mrcp_state_machine_t *state_machine); - - - /** Message dispatcher */ - apt_bool_t (*on_dispatch)(mrcp_state_machine_t *state_machine, mrcp_message_t *message); - /** Deactivated */ - apt_bool_t (*on_deactivate)(mrcp_state_machine_t *state_machine); -}; - -/** Initialize MRCP state machine */ -static APR_INLINE void mrcp_state_machine_init(mrcp_state_machine_t *state_machine, void *obj) -{ - state_machine->obj = obj; - state_machine->active = TRUE; - state_machine->on_dispatch = NULL; - state_machine->on_deactivate = NULL; - state_machine->update = NULL; - state_machine->deactivate = NULL; -} - -/** Update MRCP state machine */ -static APR_INLINE apt_bool_t mrcp_state_machine_update(mrcp_state_machine_t *state_machine, mrcp_message_t *message) -{ - if(state_machine->update) { - return state_machine->update(state_machine,message); - } - return FALSE; -} - -/** Deactivate MRCP state machine */ -static APR_INLINE apt_bool_t mrcp_state_machine_deactivate(mrcp_state_machine_t *state_machine) -{ - if(state_machine->deactivate) { - state_machine->active = FALSE; - return state_machine->deactivate(state_machine); - } - return FALSE; -} - -APT_END_EXTERN_C - -#endif /* MRCP_STATE_MACHINE_H */ diff --git a/libs/unimrcp/libs/mrcp-engine/include/mrcp_synth_engine.h b/libs/unimrcp/libs/mrcp-engine/include/mrcp_synth_engine.h deleted file mode 100644 index 0536ef4b4b9..00000000000 --- a/libs/unimrcp/libs/mrcp-engine/include/mrcp_synth_engine.h +++ /dev/null @@ -1,35 +0,0 @@ -/* - * Copyright 2008-2014 Arsen Chaloyan - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - * - * $Id: mrcp_synth_engine.h 2136 2014-07-04 06:33:36Z achaloyan@gmail.com $ - */ - -#ifndef MRCP_SYNTH_ENGINE_H -#define MRCP_SYNTH_ENGINE_H - -/** - * @file mrcp_synth_engine.h - * @brief Synthesizer Engine Includes - */ - -#include "mrcp_engine_plugin.h" -#include "mrcp_engine_impl.h" - -#include "mrcp_synth_resource.h" -#include "mrcp_synth_header.h" -#include "mrcp_generic_header.h" -#include "mrcp_message.h" - -#endif /* MRCP_SYNTH_ENGINE_H */ diff --git a/libs/unimrcp/libs/mrcp-engine/include/mrcp_synth_state_machine.h b/libs/unimrcp/libs/mrcp-engine/include/mrcp_synth_state_machine.h deleted file mode 100644 index 2ddc1ac0692..00000000000 --- a/libs/unimrcp/libs/mrcp-engine/include/mrcp_synth_state_machine.h +++ /dev/null @@ -1,36 +0,0 @@ -/* - * Copyright 2008-2014 Arsen Chaloyan - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - * - * $Id: mrcp_synth_state_machine.h 2136 2014-07-04 06:33:36Z achaloyan@gmail.com $ - */ - -#ifndef MRCP_SYNTH_STATE_MACHINE_H -#define MRCP_SYNTH_STATE_MACHINE_H - -/** - * @file mrcp_synth_state_machine.h - * @brief MRCP Synthesizer State Machine - */ - -#include "mrcp_state_machine.h" - -APT_BEGIN_EXTERN_C - -/** Create MRCP synthesizer state machine */ -mrcp_state_machine_t* mrcp_synth_state_machine_create(void *obj, mrcp_version_e version, apr_pool_t *pool); - -APT_END_EXTERN_C - -#endif /* MRCP_SYNTH_STATE_MACHINE_H */ diff --git a/libs/unimrcp/libs/mrcp-engine/include/mrcp_verifier_engine.h b/libs/unimrcp/libs/mrcp-engine/include/mrcp_verifier_engine.h deleted file mode 100644 index e741209c271..00000000000 --- a/libs/unimrcp/libs/mrcp-engine/include/mrcp_verifier_engine.h +++ /dev/null @@ -1,35 +0,0 @@ -/* - * Copyright 2008-2014 Arsen Chaloyan - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - * - * $Id: mrcp_verifier_engine.h 2136 2014-07-04 06:33:36Z achaloyan@gmail.com $ - */ - -#ifndef MRCP_VERIFIER_ENGINE_H -#define MRCP_VERIFIER_ENGINE_H - -/** - * @file mrcp_verifier_engine.h - * @brief Verifier Engine Includes - */ - -#include "mrcp_engine_plugin.h" -#include "mrcp_engine_impl.h" - -#include "mrcp_verifier_resource.h" -#include "mrcp_verifier_header.h" -#include "mrcp_generic_header.h" -#include "mrcp_message.h" - -#endif /* MRCP_VERIFIER_ENGINE_H */ diff --git a/libs/unimrcp/libs/mrcp-engine/include/mrcp_verifier_state_machine.h b/libs/unimrcp/libs/mrcp-engine/include/mrcp_verifier_state_machine.h deleted file mode 100644 index a4b320a87d5..00000000000 --- a/libs/unimrcp/libs/mrcp-engine/include/mrcp_verifier_state_machine.h +++ /dev/null @@ -1,36 +0,0 @@ -/* - * Copyright 2008-2014 Arsen Chaloyan - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - * - * $Id: mrcp_verifier_state_machine.h 2136 2014-07-04 06:33:36Z achaloyan@gmail.com $ - */ - -#ifndef MRCP_VERIFIER_STATE_MACHINE_H -#define MRCP_VERIFIER_STATE_MACHINE_H - -/** - * @file mrcp_verifier_state_machine.h - * @brief MRCP Verifier State Machine - */ - -#include "mrcp_state_machine.h" - -APT_BEGIN_EXTERN_C - -/** Create MRCP verifier state machine */ -mrcp_state_machine_t* mrcp_verifier_state_machine_create(void *obj, mrcp_version_e version, apr_pool_t *pool); - -APT_END_EXTERN_C - -#endif /* MRCP_VERIFIER_STATE_MACHINE_H */ diff --git a/libs/unimrcp/libs/mrcp-engine/mrcpengine.vcproj b/libs/unimrcp/libs/mrcp-engine/mrcpengine.vcproj deleted file mode 100644 index 8966705a4ef..00000000000 --- a/libs/unimrcp/libs/mrcp-engine/mrcpengine.vcproj +++ /dev/null @@ -1,348 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/libs/unimrcp/libs/mrcp-engine/mrcpengine.vcxproj b/libs/unimrcp/libs/mrcp-engine/mrcpengine.vcxproj deleted file mode 100644 index 12889950271..00000000000 --- a/libs/unimrcp/libs/mrcp-engine/mrcpengine.vcxproj +++ /dev/null @@ -1,142 +0,0 @@ - - - - - Debug - Win32 - - - Debug - x64 - - - Release - Win32 - - - Release - x64 - - - - {843425BE-9A9A-44F4-A4E3-4B57D6ABD53C} - mrcpengine - Win32Proj - - - - StaticLibrary - Unicode - true - - - StaticLibrary - Unicode - - - StaticLibrary - Unicode - true - - - StaticLibrary - Unicode - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - <_ProjectFileVersion>10.0.30319.1 - AllRules.ruleset - - - AllRules.ruleset - - - AllRules.ruleset - - - AllRules.ruleset - - - - - - X64 - - - ProgramDatabase - - - - - X64 - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - {b5a00bfa-6083-4fae-a097-71642d6473b5} - false - - - {1c320193-46a6-4b34-9c56-8ab584fc1b56} - false - - - - - - \ No newline at end of file diff --git a/libs/unimrcp/libs/mrcp-engine/mrcpengine.vcxproj.filters b/libs/unimrcp/libs/mrcp-engine/mrcpengine.vcxproj.filters deleted file mode 100644 index 33be90e7948..00000000000 --- a/libs/unimrcp/libs/mrcp-engine/mrcpengine.vcxproj.filters +++ /dev/null @@ -1,89 +0,0 @@ - - - - - {93995380-89BD-4b04-88EB-625FBE52EBFB} - h;hpp;hxx;hm;inl;inc;xsd - - - {dd062ad2-9a06-4efc-8e17-328567b52854} - cpp;c;cc;cxx;def;odl;idl;hpj;bat;asm;asmx - - - - - include - - - include - - - include - - - include - - - include - - - include - - - include - - - include - - - include - - - include - - - include - - - include - - - include - - - include - - - include - - - include - - - - - src - - - src - - - src - - - src - - - src - - - src - - - src - - - src - - - \ No newline at end of file diff --git a/libs/unimrcp/libs/mrcp-engine/src/mrcp_engine_factory.c b/libs/unimrcp/libs/mrcp-engine/src/mrcp_engine_factory.c deleted file mode 100644 index 5c20286fff5..00000000000 --- a/libs/unimrcp/libs/mrcp-engine/src/mrcp_engine_factory.c +++ /dev/null @@ -1,157 +0,0 @@ -/* - * Copyright 2008-2014 Arsen Chaloyan - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - * - * $Id: mrcp_engine_factory.c 2136 2014-07-04 06:33:36Z achaloyan@gmail.com $ - */ - -#include -#include "mrcp_engine_factory.h" -#include "mrcp_synth_state_machine.h" -#include "mrcp_recog_state_machine.h" -#include "mrcp_recorder_state_machine.h" -#include "mrcp_verifier_state_machine.h" -#include "apt_log.h" - -/** Engine factory declaration */ -struct mrcp_engine_factory_t { - apr_hash_t *engines; - apr_pool_t *pool; -}; - - -MRCP_DECLARE(mrcp_engine_factory_t*) mrcp_engine_factory_create(apr_pool_t *pool) -{ - mrcp_engine_factory_t *factory = apr_palloc(pool,sizeof(mrcp_engine_factory_t)); - factory->pool = pool; - factory->engines = apr_hash_make(pool); - return factory; -} - -/** Destroy registered engines and the factory */ -MRCP_DECLARE(apt_bool_t) mrcp_engine_factory_destroy(mrcp_engine_factory_t *factory) -{ - mrcp_engine_t *engine; - apr_hash_index_t *it; - void *val; - apt_log(APT_LOG_MARK,APT_PRIO_INFO,"Destroy MRCP Engines"); - it=apr_hash_first(factory->pool,factory->engines); - for(; it; it = apr_hash_next(it)) { - apr_hash_this(it,NULL,NULL,&val); - engine = val; - if(engine) { - mrcp_engine_virtual_destroy(engine); - } - } - apr_hash_clear(factory->engines); - return TRUE; -} - -/** Open registered engines */ -MRCP_DECLARE(apt_bool_t) mrcp_engine_factory_open(mrcp_engine_factory_t *factory) -{ - mrcp_engine_t *engine; - apr_hash_index_t *it; - void *val; - it = apr_hash_first(factory->pool,factory->engines); - for(; it; it = apr_hash_next(it)) { - apr_hash_this(it,NULL,NULL,&val); - engine = val; - if(engine) { - mrcp_engine_virtual_open(engine); - } - } - return TRUE; -} - -/** Close registered engines */ -MRCP_DECLARE(apt_bool_t) mrcp_engine_factory_close(mrcp_engine_factory_t *factory) -{ - mrcp_engine_t *engine; - apr_hash_index_t *it; - void *val; - it=apr_hash_first(factory->pool,factory->engines); - for(; it; it = apr_hash_next(it)) { - apr_hash_this(it,NULL,NULL,&val); - engine = val; - if(engine) { - mrcp_engine_virtual_close(engine); - } - } - return TRUE; -} - -/** Register new engine */ -MRCP_DECLARE(apt_bool_t) mrcp_engine_factory_engine_register(mrcp_engine_factory_t *factory, mrcp_engine_t *engine) -{ - if(!engine || !engine->id) { - return FALSE; - } - - switch(engine->resource_id) { - case MRCP_SYNTHESIZER_RESOURCE: - engine->create_state_machine = mrcp_synth_state_machine_create; - break; - case MRCP_RECOGNIZER_RESOURCE: - engine->create_state_machine = mrcp_recog_state_machine_create; - break; - case MRCP_RECORDER_RESOURCE: - engine->create_state_machine = mrcp_recorder_state_machine_create; - break; - case MRCP_VERIFIER_RESOURCE: - engine->create_state_machine = mrcp_verifier_state_machine_create; - break; - default: - break; - } - - if(!engine->create_state_machine) { - return FALSE; - } - - apr_hash_set(factory->engines,engine->id,APR_HASH_KEY_STRING,engine); - return TRUE; -} - -/** Get engine by name */ -MRCP_DECLARE(mrcp_engine_t*) mrcp_engine_factory_engine_get(const mrcp_engine_factory_t *factory, const char *name) -{ - if(!name) { - return NULL; - } - return apr_hash_get(factory->engines,name,APR_HASH_KEY_STRING); -} - -/** Find engine by resource identifier */ -MRCP_DECLARE(mrcp_engine_t*) mrcp_engine_factory_engine_find(const mrcp_engine_factory_t *factory, mrcp_resource_id resource_id) -{ - mrcp_engine_t *engine; - void *val; - apr_hash_index_t *it = apr_hash_first(factory->pool,factory->engines); - /* walk through the engines */ - for(; it; it = apr_hash_next(it)) { - apr_hash_this(it,NULL,NULL,&val); - engine = val; - if(engine && engine->resource_id == resource_id) { - return engine; - } - } - return NULL; -} - -/** Start iterating over the engines in a factory */ -MRCP_DECLARE(apr_hash_index_t*) mrcp_engine_factory_engine_first(const mrcp_engine_factory_t *factory) -{ - return apr_hash_first(factory->pool,factory->engines); -} diff --git a/libs/unimrcp/libs/mrcp-engine/src/mrcp_engine_iface.c b/libs/unimrcp/libs/mrcp-engine/src/mrcp_engine_iface.c deleted file mode 100644 index daea6039c89..00000000000 --- a/libs/unimrcp/libs/mrcp-engine/src/mrcp_engine_iface.c +++ /dev/null @@ -1,102 +0,0 @@ -/* - * Copyright 2008-2014 Arsen Chaloyan - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - * - * $Id: mrcp_engine_iface.c 2136 2014-07-04 06:33:36Z achaloyan@gmail.com $ - */ - -#include "mrcp_engine_iface.h" -#include "apt_log.h" - -/** Destroy engine */ -apt_bool_t mrcp_engine_virtual_destroy(mrcp_engine_t *engine) -{ - return engine->method_vtable->destroy(engine); -} - -/** Open engine */ -apt_bool_t mrcp_engine_virtual_open(mrcp_engine_t *engine) -{ - if(engine->is_open == FALSE) { - apt_log(APT_LOG_MARK,APT_PRIO_INFO,"Open Engine [%s]",engine->id); - return engine->method_vtable->open(engine); - } - return FALSE; -} - -/** Response to open engine request */ -void mrcp_engine_on_open(mrcp_engine_t *engine, apt_bool_t status) -{ - apt_log(APT_LOG_MARK,APT_PRIO_DEBUG,"Engine Opened [%s] status [%s]", - engine->id, - status == TRUE ? "success" : "failure"); - engine->is_open = status; -} - -/** Close engine */ -apt_bool_t mrcp_engine_virtual_close(mrcp_engine_t *engine) -{ - if(engine->is_open == TRUE) { - engine->is_open = FALSE; - apt_log(APT_LOG_MARK,APT_PRIO_INFO,"Close Engine [%s]",engine->id); - return engine->method_vtable->close(engine); - } - return FALSE; -} - -/** Response to close engine request */ -void mrcp_engine_on_close(mrcp_engine_t *engine) -{ - apt_log(APT_LOG_MARK,APT_PRIO_DEBUG,"Engine Closed [%s]",engine->id); - engine->is_open = FALSE; -} - -/** Create engine channel */ -mrcp_engine_channel_t* mrcp_engine_channel_virtual_create(mrcp_engine_t *engine, mrcp_version_e mrcp_version, apr_pool_t *pool) -{ - mrcp_engine_channel_t *channel; - if(engine->is_open != TRUE) { - return NULL; - } - if(engine->config->max_channel_count && engine->cur_channel_count >= engine->config->max_channel_count) { - apt_log(APT_LOG_MARK, APT_PRIO_NOTICE, "Maximum channel count %"APR_SIZE_T_FMT" exceeded for engine [%s]", - engine->config->max_channel_count, engine->id); - return NULL; - } - channel = engine->method_vtable->create_channel(engine,pool); - if(channel) { - channel->mrcp_version = mrcp_version; - engine->cur_channel_count++; - } - return channel; -} - -/** Destroy engine channel */ -apt_bool_t mrcp_engine_channel_virtual_destroy(mrcp_engine_channel_t *channel) -{ - mrcp_engine_t *engine = channel->engine; - if(engine->cur_channel_count) { - engine->cur_channel_count--; - } - return channel->method_vtable->destroy(channel); -} - -/** Allocate engine config */ -mrcp_engine_config_t* mrcp_engine_config_alloc(apr_pool_t *pool) -{ - mrcp_engine_config_t *config = apr_palloc(pool,sizeof(mrcp_engine_config_t)); - config->max_channel_count = 0; - config->params = NULL; - return config; -} diff --git a/libs/unimrcp/libs/mrcp-engine/src/mrcp_engine_impl.c b/libs/unimrcp/libs/mrcp-engine/src/mrcp_engine_impl.c deleted file mode 100644 index 2e536e18b46..00000000000 --- a/libs/unimrcp/libs/mrcp-engine/src/mrcp_engine_impl.c +++ /dev/null @@ -1,246 +0,0 @@ -/* - * Copyright 2008-2014 Arsen Chaloyan - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - * - * $Id: mrcp_engine_impl.c 2136 2014-07-04 06:33:36Z achaloyan@gmail.com $ - */ - -#include "mrcp_engine_impl.h" -#include "mpf_termination_factory.h" - -/** Create engine */ -mrcp_engine_t* mrcp_engine_create( - mrcp_resource_id resource_id, - void *obj, - const mrcp_engine_method_vtable_t *vtable, - apr_pool_t *pool) -{ - mrcp_engine_t *engine = apr_palloc(pool,sizeof(mrcp_engine_t)); - engine->id = NULL; - engine->resource_id = resource_id; - engine->obj = obj; - engine->method_vtable =vtable; - engine->event_vtable = NULL; - engine->event_obj = NULL; - engine->config = NULL; - engine->codec_manager = NULL; - engine->dir_layout = NULL; - engine->cur_channel_count = 0; - engine->is_open = FALSE; - engine->pool = pool; - engine->create_state_machine = NULL; - return engine; -} - -/** Get engine config */ -const mrcp_engine_config_t* mrcp_engine_config_get(const mrcp_engine_t *engine) -{ - return engine->config; -} - -/** Get engine param by name */ -const char* mrcp_engine_param_get(const mrcp_engine_t *engine, const char *name) -{ - if(!engine->config || !engine->config->params) { - return NULL; - } - return apr_table_get(engine->config->params,name); -} - -/** Create engine channel */ -mrcp_engine_channel_t* mrcp_engine_channel_create( - mrcp_engine_t *engine, - const mrcp_engine_channel_method_vtable_t *method_vtable, - void *method_obj, - mpf_termination_t *termination, - apr_pool_t *pool) -{ - mrcp_engine_channel_t *channel = apr_palloc(pool,sizeof(mrcp_engine_channel_t)); - channel->method_vtable = method_vtable; - channel->method_obj = method_obj; - channel->event_vtable = NULL; - channel->event_obj = NULL; - channel->termination = termination; - channel->engine = engine; - channel->is_open = FALSE; - channel->pool = pool; - apt_string_reset(&channel->id); - return channel; -} - -/** Create audio termination */ -mpf_termination_t* mrcp_engine_audio_termination_create( - void *obj, - const mpf_audio_stream_vtable_t *stream_vtable, - mpf_stream_capabilities_t *capabilities, - apr_pool_t *pool) -{ - mpf_audio_stream_t *audio_stream; - if(!capabilities) { - return NULL; - } - - if(mpf_codec_capabilities_validate(&capabilities->codecs) == FALSE) { - return NULL; - } - - /* create audio stream */ - audio_stream = mpf_audio_stream_create( - obj, /* object to associate */ - stream_vtable, /* virtual methods table of audio stream */ - capabilities, /* stream capabilities */ - pool); /* pool to allocate memory from */ - - if(!audio_stream) { - return NULL; - } - - /* create media termination */ - return mpf_raw_termination_create( - NULL, /* no object to associate */ - audio_stream, /* audio stream */ - NULL, /* no video stream */ - pool); /* pool to allocate memory from */ -} - - -/** Create engine channel and source media termination */ -mrcp_engine_channel_t* mrcp_engine_source_channel_create( - mrcp_engine_t *engine, - const mrcp_engine_channel_method_vtable_t *channel_vtable, - const mpf_audio_stream_vtable_t *stream_vtable, - void *method_obj, - mpf_codec_descriptor_t *codec_descriptor, - apr_pool_t *pool) -{ - mpf_stream_capabilities_t *capabilities; - mpf_audio_stream_t *audio_stream; - mpf_termination_t *termination; - - capabilities = mpf_source_stream_capabilities_create(pool); - if(codec_descriptor) { - mpf_codec_capabilities_add( - &capabilities->codecs, - mpf_sample_rate_mask_get(codec_descriptor->sampling_rate), - codec_descriptor->name.buf); - } - else { - mpf_codec_default_capabilities_add(&capabilities->codecs); - } - - /* create audio stream */ - audio_stream = mpf_audio_stream_create( - method_obj, /* object to associate */ - stream_vtable, /* virtual methods table of audio stream */ - capabilities, /* stream capabilities */ - pool); /* pool to allocate memory from */ - - if(!audio_stream) { - return NULL; - } - - audio_stream->rx_descriptor = codec_descriptor; - - /* create media termination */ - termination = mpf_raw_termination_create( - NULL, /* no object to associate */ - audio_stream, /* audio stream */ - NULL, /* no video stream */ - pool); /* pool to allocate memory from */ - - /* create engine channel base */ - return mrcp_engine_channel_create( - engine, /* engine */ - channel_vtable, /* virtual methods table of engine channel */ - method_obj, /* object to associate */ - termination, /* media termination, used to terminate audio stream */ - pool); /* pool to allocate memory from */ -} - -/** Create engine channel and sink media termination */ -mrcp_engine_channel_t* mrcp_engine_sink_channel_create( - mrcp_engine_t *engine, - const mrcp_engine_channel_method_vtable_t *channel_vtable, - const mpf_audio_stream_vtable_t *stream_vtable, - void *method_obj, - mpf_codec_descriptor_t *codec_descriptor, - apr_pool_t *pool) -{ - mpf_stream_capabilities_t *capabilities; - mpf_audio_stream_t *audio_stream; - mpf_termination_t *termination; - - capabilities = mpf_sink_stream_capabilities_create(pool); - if(codec_descriptor) { - mpf_codec_capabilities_add( - &capabilities->codecs, - mpf_sample_rate_mask_get(codec_descriptor->sampling_rate), - codec_descriptor->name.buf); - } - else { - mpf_codec_default_capabilities_add(&capabilities->codecs); - } - - /* create audio stream */ - audio_stream = mpf_audio_stream_create( - method_obj, /* object to associate */ - stream_vtable, /* virtual methods table of audio stream */ - capabilities, /* stream capabilities */ - pool); /* pool to allocate memory from */ - - if(!audio_stream) { - return NULL; - } - - audio_stream->tx_descriptor = codec_descriptor; - - /* create media termination */ - termination = mpf_raw_termination_create( - NULL, /* no object to associate */ - audio_stream, /* audio stream */ - NULL, /* no video stream */ - pool); /* pool to allocate memory from */ - - /* create engine channel base */ - return mrcp_engine_channel_create( - engine, /* engine */ - channel_vtable, /* virtual methods table of engine channel */ - method_obj, /* object to associate */ - termination, /* media termination, used to terminate audio stream */ - pool); /* pool to allocate memory from */ -} - -/** Get codec descriptor of the audio source stream */ -const mpf_codec_descriptor_t* mrcp_engine_source_stream_codec_get(const mrcp_engine_channel_t *channel) -{ - if(channel && channel->termination) { - mpf_audio_stream_t *audio_stream = mpf_termination_audio_stream_get(channel->termination); - if(audio_stream) { - return audio_stream->rx_descriptor; - } - } - return NULL; -} - -/** Get codec descriptor of the audio sink stream */ -const mpf_codec_descriptor_t* mrcp_engine_sink_stream_codec_get(const mrcp_engine_channel_t *channel) -{ - if(channel && channel->termination) { - mpf_audio_stream_t *audio_stream = mpf_termination_audio_stream_get(channel->termination); - if(audio_stream) { - return audio_stream->tx_descriptor; - } - } - return NULL; -} diff --git a/libs/unimrcp/libs/mrcp-engine/src/mrcp_engine_loader.c b/libs/unimrcp/libs/mrcp-engine/src/mrcp_engine_loader.c deleted file mode 100644 index 45996cce7e3..00000000000 --- a/libs/unimrcp/libs/mrcp-engine/src/mrcp_engine_loader.c +++ /dev/null @@ -1,169 +0,0 @@ -/* - * Copyright 2008-2014 Arsen Chaloyan - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - * - * $Id: mrcp_engine_loader.c 2136 2014-07-04 06:33:36Z achaloyan@gmail.com $ - */ - -#include -#include -#include "mrcp_engine_loader.h" -#include "mrcp_engine_plugin.h" -#include "apt_log.h" - -/** Engine loader declaration */ -struct mrcp_engine_loader_t { - /** Table of plugins (apr_dso_handle_t*) */ - apr_hash_t *plugins; - apr_pool_t *pool; -}; - - -/** Create engine loader */ -MRCP_DECLARE(mrcp_engine_loader_t*) mrcp_engine_loader_create(apr_pool_t *pool) -{ - mrcp_engine_loader_t *loader = apr_palloc(pool,sizeof(mrcp_engine_loader_t)); - loader->pool = pool; - loader->plugins = apr_hash_make(pool); - return loader; -} - -/** Destroy engine loader */ -MRCP_DECLARE(apt_bool_t) mrcp_engine_loader_destroy(mrcp_engine_loader_t *loader) -{ - return mrcp_engine_loader_plugins_unload(loader); -} - -/** Unload loaded plugins */ -MRCP_DECLARE(apt_bool_t) mrcp_engine_loader_plugins_unload(mrcp_engine_loader_t *loader) -{ - apr_hash_index_t *it; - void *val; - apr_dso_handle_t *plugin; - apt_log(APT_LOG_MARK,APT_PRIO_INFO,"Unload Plugins"); - it=apr_hash_first(loader->pool,loader->plugins); - for(; it; it = apr_hash_next(it)) { - apr_hash_this(it,NULL,NULL,&val); - plugin = val; - if(plugin) { - apr_dso_unload(plugin); - } - } - apr_hash_clear(loader->plugins); - return TRUE; -} - -static apt_bool_t plugin_version_load(apr_dso_handle_t *plugin) -{ - apr_dso_handle_sym_t version_handle = NULL; - if(apr_dso_sym(&version_handle,plugin,MRCP_PLUGIN_VERSION_SYM_NAME) != APR_SUCCESS) { - apt_log(APT_LOG_MARK,APT_PRIO_WARNING,"No Version Info Found: %s", MRCP_PLUGIN_VERSION_SYM_NAME); - return FALSE; - } - - if(version_handle) { - mrcp_plugin_version_t *version = (mrcp_plugin_version_t*)version_handle; - if(mrcp_plugin_version_check(version)) { - return TRUE; - } - else { - apt_log(APT_LOG_MARK,APT_PRIO_WARNING,"Incompatible Plugin Version Found [%d.%d.%d] < ["PLUGIN_VERSION_STRING"]", - version->major, - version->minor, - version->patch); - } - } - return FALSE; -} - -static mrcp_plugin_creator_f plugin_creator_load(apr_dso_handle_t *plugin) -{ - apr_dso_handle_sym_t func_handle = NULL; - mrcp_plugin_creator_f plugin_creator = NULL; - - if(apr_dso_sym(&func_handle,plugin,MRCP_PLUGIN_ENGINE_SYM_NAME) == APR_SUCCESS) { - if(func_handle) { - plugin_creator = (mrcp_plugin_creator_f)(intptr_t)func_handle; - } - } - else { - apt_log(APT_LOG_MARK,APT_PRIO_WARNING,"Failed to Load DSO Symbol: "MRCP_PLUGIN_ENGINE_SYM_NAME); - return NULL; - } - - return plugin_creator; -} - -static apt_bool_t plugin_logger_load(apr_dso_handle_t *plugin) -{ - apr_dso_handle_sym_t func_handle = NULL; - if(apr_dso_sym(&func_handle,plugin,MRCP_PLUGIN_LOGGER_SYM_NAME) != APR_SUCCESS) { - return FALSE; - } - - if(func_handle) { - apt_logger_t *logger = apt_log_instance_get(); - mrcp_plugin_log_accessor_f log_accessor; - log_accessor = (mrcp_plugin_log_accessor_f)(intptr_t)func_handle; - log_accessor(logger); - } - return TRUE; -} - - -/** Load engine plugin */ -MRCP_DECLARE(mrcp_engine_t*) mrcp_engine_loader_plugin_load(mrcp_engine_loader_t *loader, const char *id, const char *path, mrcp_engine_config_t *config) -{ - apr_dso_handle_t *plugin = NULL; - mrcp_plugin_creator_f plugin_creator = NULL; - mrcp_engine_t *engine = NULL; - if(!path || !id) { - apt_log(APT_LOG_MARK,APT_PRIO_WARNING,"Failed to Load Plugin: invalid params"); - return NULL; - } - - apt_log(APT_LOG_MARK,APT_PRIO_INFO,"Load Plugin [%s] [%s]",id,path); - if(apr_dso_load(&plugin,path,loader->pool) != APR_SUCCESS) { - char derr[512] = ""; - apr_dso_error(plugin,derr,sizeof(derr)); - apt_log(APT_LOG_MARK,APT_PRIO_WARNING,"Failed to Load DSO: %s", derr); - return NULL; - } - - if(plugin_version_load(plugin) != TRUE) { - apr_dso_unload(plugin); - return NULL; - } - - plugin_creator = plugin_creator_load(plugin); - if(!plugin_creator) { - apt_log(APT_LOG_MARK,APT_PRIO_WARNING,"No Entry Point Found for Plugin"); - apr_dso_unload(plugin); - return NULL; - } - - plugin_logger_load(plugin); - - apr_hash_set(loader->plugins,id,APR_HASH_KEY_STRING,plugin); - - engine = plugin_creator(loader->pool); - if(!engine) { - apt_log(APT_LOG_MARK,APT_PRIO_WARNING,"Failed to Create MRCP Engine"); - return NULL; - } - - engine->id = id; - engine->config = config; - return engine; -} diff --git a/libs/unimrcp/libs/mrcp-engine/src/mrcp_recog_state_machine.c b/libs/unimrcp/libs/mrcp-engine/src/mrcp_recog_state_machine.c deleted file mode 100644 index f205d2ea783..00000000000 --- a/libs/unimrcp/libs/mrcp-engine/src/mrcp_recog_state_machine.c +++ /dev/null @@ -1,553 +0,0 @@ -/* - * Copyright 2008-2014 Arsen Chaloyan - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - * - * $Id: mrcp_recog_state_machine.c 2228 2014-11-12 01:18:27Z achaloyan@gmail.com $ - */ - -#include "apt_obj_list.h" -#include "apt_log.h" -#include "mrcp_state_machine.h" -#include "mrcp_recog_state_machine.h" -#include "mrcp_recog_header.h" -#include "mrcp_generic_header.h" -#include "mrcp_recog_resource.h" -#include "mrcp_message.h" - -/** MRCP recognizer states */ -typedef enum { - RECOGNIZER_STATE_IDLE, - RECOGNIZER_STATE_RECOGNIZING, - RECOGNIZER_STATE_RECOGNIZED, - - RECOGNIZER_STATE_COUNT -} mrcp_recog_state_e; - -static const char * state_names[RECOGNIZER_STATE_COUNT] = { - "IDLE", - "RECOGNIZING", - "RECOGNIZED" -}; - -typedef struct mrcp_recog_state_machine_t mrcp_recog_state_machine_t; -struct mrcp_recog_state_machine_t { - /** state machine base */ - mrcp_state_machine_t base; - /** recognizer state */ - mrcp_recog_state_e state; - /** indicate whether active_request was processed from pending request queue */ - apt_bool_t is_pending; - /** request sent to recognition engine and waiting for the response to be received */ - mrcp_message_t *active_request; - /** in-progress recognize request */ - mrcp_message_t *recog; - /** queue of pending recognition requests */ - apt_obj_list_t *queue; - /** properties used in set/get params */ - mrcp_message_header_t *properties; -}; - -typedef apt_bool_t (*recog_method_f)(mrcp_recog_state_machine_t *state_machine, mrcp_message_t *message); - -static APR_INLINE apt_bool_t recog_request_dispatch(mrcp_recog_state_machine_t *state_machine, mrcp_message_t *message) -{ - state_machine->active_request = message; - return state_machine->base.on_dispatch(&state_machine->base,message); -} - -static APR_INLINE apt_bool_t recog_response_dispatch(mrcp_recog_state_machine_t *state_machine, mrcp_message_t *message) -{ - state_machine->active_request = NULL; - if(state_machine->base.active == FALSE) { - /* this is the response to deactivation (STOP) request */ - return state_machine->base.on_deactivate(&state_machine->base); - } - return state_machine->base.on_dispatch(&state_machine->base,message); -} - -static APR_INLINE apt_bool_t recog_event_dispatch(mrcp_recog_state_machine_t *state_machine, mrcp_message_t *message) -{ - if(state_machine->base.active == FALSE) { - /* do nothing, state machine has already been deactivated */ - return FALSE; - } - return state_machine->base.on_dispatch(&state_machine->base,message); -} - -static APR_INLINE void recog_state_change(mrcp_recog_state_machine_t *state_machine, mrcp_recog_state_e state, mrcp_message_t *message) -{ - apt_log(APT_LOG_MARK,APT_PRIO_INFO,"State Transition %s -> %s "APT_SIDRES_FMT, - state_names[state_machine->state], - state_names[state], - MRCP_MESSAGE_SIDRES(message)); - state_machine->state = state; - if(state == RECOGNIZER_STATE_IDLE) { - state_machine->recog = NULL; - } -} - - -static apt_bool_t recog_request_set_params(mrcp_recog_state_machine_t *state_machine, mrcp_message_t *message) -{ - mrcp_header_fields_set(state_machine->properties,&message->header,message->pool); - return recog_request_dispatch(state_machine,message); -} - -static apt_bool_t recog_response_set_params(mrcp_recog_state_machine_t *state_machine, mrcp_message_t *message) -{ - return recog_response_dispatch(state_machine,message); -} - -static apt_bool_t recog_request_get_params(mrcp_recog_state_machine_t *state_machine, mrcp_message_t *message) -{ - return recog_request_dispatch(state_machine,message); -} - -static apt_bool_t recog_response_get_params(mrcp_recog_state_machine_t *state_machine, mrcp_message_t *message) -{ - mrcp_header_fields_get(&message->header,state_machine->properties,&state_machine->active_request->header,message->pool); - return recog_response_dispatch(state_machine,message); -} - -static apt_bool_t recog_request_define_grammar(mrcp_recog_state_machine_t *state_machine, mrcp_message_t *message) -{ - if(state_machine->state == RECOGNIZER_STATE_RECOGNIZING) { - mrcp_message_t *response_message = mrcp_response_create(message,message->pool); - response_message->start_line.status_code = MRCP_STATUS_CODE_METHOD_NOT_VALID; - return recog_response_dispatch(state_machine,response_message); - } - else if(state_machine->state == RECOGNIZER_STATE_RECOGNIZED) { - recog_state_change(state_machine,RECOGNIZER_STATE_IDLE,message); - } - - return recog_request_dispatch(state_machine,message); -} - -static apt_bool_t recog_response_define_grammar(mrcp_recog_state_machine_t *state_machine, mrcp_message_t *message) -{ - if(mrcp_resource_header_property_check(message,RECOGNIZER_HEADER_COMPLETION_CAUSE) != TRUE) { - mrcp_recog_header_t *recog_header = mrcp_resource_header_prepare(message); - recog_header->completion_cause = RECOGNIZER_COMPLETION_CAUSE_SUCCESS; - mrcp_resource_header_property_add(message,RECOGNIZER_HEADER_COMPLETION_CAUSE); - } - return recog_response_dispatch(state_machine,message); -} - -static apt_bool_t recog_request_recognize(mrcp_recog_state_machine_t *state_machine, mrcp_message_t *message) -{ - mrcp_header_fields_inherit(&message->header,state_machine->properties,message->pool); - if(state_machine->state == RECOGNIZER_STATE_RECOGNIZING) { - mrcp_message_t *response; - apt_log(APT_LOG_MARK,APT_PRIO_INFO,"Queue Up RECOGNIZE Request "APT_SIDRES_FMT" [%"MRCP_REQUEST_ID_FMT"]", - MRCP_MESSAGE_SIDRES(message), - message->start_line.request_id); - message->start_line.request_state = MRCP_REQUEST_STATE_PENDING; - apt_list_push_back(state_machine->queue,message,message->pool); - - response = mrcp_response_create(message,message->pool); - response->start_line.request_state = MRCP_REQUEST_STATE_PENDING; - return recog_response_dispatch(state_machine,response); - } - - return recog_request_dispatch(state_machine,message); -} - -static apt_bool_t recog_response_recognize(mrcp_recog_state_machine_t *state_machine, mrcp_message_t *message) -{ - if(message->start_line.request_state == MRCP_REQUEST_STATE_INPROGRESS) { - state_machine->recog = state_machine->active_request; - recog_state_change(state_machine,RECOGNIZER_STATE_RECOGNIZING,message); - } - if(state_machine->is_pending == TRUE) { - state_machine->is_pending = FALSE; - /* not to send the response for pending request */ - return TRUE; - } - return recog_response_dispatch(state_machine,message); -} - -static apt_bool_t recog_request_interpret(mrcp_recog_state_machine_t *state_machine, mrcp_message_t *message) -{ - mrcp_header_fields_inherit(&message->header,state_machine->properties,message->pool); - return recog_request_dispatch(state_machine,message); -} - -static apt_bool_t recog_response_interpret(mrcp_recog_state_machine_t *state_machine, mrcp_message_t *message) -{ - return recog_response_dispatch(state_machine,message); -} - -static apt_bool_t recog_request_get_result(mrcp_recog_state_machine_t *state_machine, mrcp_message_t *message) -{ - mrcp_message_t *response_message; - if(state_machine->state == RECOGNIZER_STATE_RECOGNIZED) { - /* found recognized request */ - return recog_request_dispatch(state_machine,message); - } - - /* found no recognized request */ - response_message = mrcp_response_create(message,message->pool); - response_message->start_line.status_code = MRCP_STATUS_CODE_METHOD_NOT_VALID; - return recog_response_dispatch(state_machine,response_message); -} - -static apt_bool_t recog_response_get_result(mrcp_recog_state_machine_t *state_machine, mrcp_message_t *message) -{ - return recog_response_dispatch(state_machine,message); -} - -static apt_bool_t recog_request_recognition_start_timers(mrcp_recog_state_machine_t *state_machine, mrcp_message_t *message) -{ - mrcp_message_t *response_message; - if(state_machine->state == RECOGNIZER_STATE_RECOGNIZING) { - /* found in-progress request */ - return recog_request_dispatch(state_machine,message); - } - - /* found no in-progress request */ - response_message = mrcp_response_create(message,message->pool); - response_message->start_line.status_code = MRCP_STATUS_CODE_METHOD_NOT_VALID; - return recog_response_dispatch(state_machine,response_message); -} - -static apt_bool_t recog_response_recognition_start_timers(mrcp_recog_state_machine_t *state_machine, mrcp_message_t *message) -{ - return recog_response_dispatch(state_machine,message); -} - -static apt_bool_t recog_pending_requests_remove(mrcp_recog_state_machine_t *state_machine, mrcp_message_t *request_message, mrcp_message_t *response_message) -{ - apt_list_elem_t *elem; - mrcp_message_t *pending_message; - mrcp_request_id_list_t *request_id_list = NULL; - mrcp_generic_header_t *generic_header = mrcp_generic_header_get(request_message); - mrcp_generic_header_t *response_generic_header = mrcp_generic_header_prepare(response_message); - if(generic_header && mrcp_generic_header_property_check(request_message,GENERIC_HEADER_ACTIVE_REQUEST_ID_LIST) == TRUE) { - if(generic_header->active_request_id_list.count) { - /* selective STOP request */ - request_id_list = &generic_header->active_request_id_list; - } - } - - elem = apt_list_first_elem_get(state_machine->queue); - while(elem) { - pending_message = apt_list_elem_object_get(elem); - if(!request_id_list || active_request_id_list_find(generic_header,pending_message->start_line.request_id) == TRUE) { - apt_log(APT_LOG_MARK,APT_PRIO_INFO,"Remove Pending RECOGNIZE Request "APT_SIDRES_FMT" [%"MRCP_REQUEST_ID_FMT"]", - MRCP_MESSAGE_SIDRES(pending_message), - pending_message->start_line.request_id); - elem = apt_list_elem_remove(state_machine->queue,elem); - /* append active id list */ - active_request_id_list_append(response_generic_header,pending_message->start_line.request_id); - } - else { - /* speak request remains in the queue, just proceed to the next one */ - elem = apt_list_next_elem_get(state_machine->queue,elem); - } - } - if(response_generic_header->active_request_id_list.count) { - mrcp_generic_header_property_add(response_message,GENERIC_HEADER_ACTIVE_REQUEST_ID_LIST); - } - return TRUE; -} - -static apt_bool_t recog_request_stop(mrcp_recog_state_machine_t *state_machine, mrcp_message_t *message) -{ - mrcp_message_t *response_message; - if(state_machine->state == RECOGNIZER_STATE_RECOGNIZING) { - mrcp_request_id_list_t *request_id_list = NULL; - mrcp_generic_header_t *generic_header = mrcp_generic_header_get(message); - if(generic_header && mrcp_generic_header_property_check(message,GENERIC_HEADER_ACTIVE_REQUEST_ID_LIST) == TRUE) { - if(generic_header->active_request_id_list.count) { - /* selective STOP request */ - request_id_list = &generic_header->active_request_id_list; - } - } - - if(!request_id_list || active_request_id_list_find(generic_header,state_machine->recog->start_line.request_id) == TRUE) { - /* found in-progress RECOGNIZE request, stop it */ - apt_log(APT_LOG_MARK,APT_PRIO_DEBUG,"Found IN-PROGRESS RECOGNIZE Request "APT_SIDRES_FMT" [%"MRCP_REQUEST_ID_FMT"]", - MRCP_MESSAGE_SIDRES(message), - message->start_line.request_id); - return recog_request_dispatch(state_machine,message); - } - } - else if(state_machine->state == RECOGNIZER_STATE_RECOGNIZED) { - recog_state_change(state_machine,RECOGNIZER_STATE_IDLE,message); - } - - /* found no in-progress RECOGNIZE request, sending immediate response */ - response_message = mrcp_response_create(message,message->pool); - recog_pending_requests_remove(state_machine,message,response_message); - return recog_response_dispatch(state_machine,response_message); -} - -static apt_bool_t recog_response_stop(mrcp_recog_state_machine_t *state_machine, mrcp_message_t *message) -{ - mrcp_message_t *pending_request; - mrcp_generic_header_t *generic_header = mrcp_generic_header_prepare(message); - /* append active id list */ - active_request_id_list_append(generic_header,state_machine->recog->start_line.request_id); - mrcp_generic_header_property_add(message,GENERIC_HEADER_ACTIVE_REQUEST_ID_LIST); - recog_pending_requests_remove(state_machine,state_machine->active_request,message); - recog_state_change(state_machine,RECOGNIZER_STATE_IDLE,message); - pending_request = apt_list_pop_front(state_machine->queue); - recog_response_dispatch(state_machine,message); - - /* process pending RECOGNIZE requests / if any */ - if(pending_request) { - apt_log(APT_LOG_MARK,APT_PRIO_INFO,"Process Pending RECOGNIZE Request "APT_SIDRES_FMT" [%"MRCP_REQUEST_ID_FMT"]", - MRCP_MESSAGE_SIDRES(pending_request), - pending_request->start_line.request_id); - state_machine->is_pending = TRUE; - recog_request_dispatch(state_machine,pending_request); - } - return TRUE; -} - -static apt_bool_t recog_event_start_of_input(mrcp_recog_state_machine_t *state_machine, mrcp_message_t *message) -{ - if(!state_machine->recog) { - /* unexpected event, no in-progress recognition request */ - return FALSE; - } - - if(state_machine->recog->start_line.request_id != message->start_line.request_id) { - /* unexpected event */ - return FALSE; - } - - message->start_line.request_state = MRCP_REQUEST_STATE_INPROGRESS; - return recog_event_dispatch(state_machine,message); -} - -static apt_bool_t recog_event_recognition_complete(mrcp_recog_state_machine_t *state_machine, mrcp_message_t *message) -{ - mrcp_message_t *pending_request; - if(!state_machine->recog) { - apt_log(APT_LOG_MARK,APT_PRIO_INFO,"Unexpected RECOGNITION-COMPLETE Event "APT_SIDRES_FMT" [%"MRCP_REQUEST_ID_FMT"]", - MRCP_MESSAGE_SIDRES(message), - message->start_line.request_id); - return FALSE; - } - - if(state_machine->recog->start_line.request_id != message->start_line.request_id) { - apt_log(APT_LOG_MARK,APT_PRIO_INFO,"Unexpected RECOGNITION-COMPLETE Event "APT_SIDRES_FMT" [%"MRCP_REQUEST_ID_FMT"]", - MRCP_MESSAGE_SIDRES(message), - message->start_line.request_id); - return FALSE; - } - - if(state_machine->active_request && state_machine->active_request->start_line.method_id == RECOGNIZER_STOP) { - apt_log(APT_LOG_MARK,APT_PRIO_INFO,"Ignore RECOGNITION-COMPLETE Event "APT_SIDRES_FMT" [%"MRCP_REQUEST_ID_FMT"]: waiting for STOP response", - MRCP_MESSAGE_SIDRES(message), - message->start_line.request_id); - return FALSE; - } - - if(mrcp_resource_header_property_check(message,RECOGNIZER_HEADER_COMPLETION_CAUSE) != TRUE) { - mrcp_recog_header_t *recog_header = mrcp_resource_header_prepare(message); - recog_header->completion_cause = RECOGNIZER_COMPLETION_CAUSE_SUCCESS; - mrcp_resource_header_property_add(message,RECOGNIZER_HEADER_COMPLETION_CAUSE); - } - recog_state_change(state_machine,RECOGNIZER_STATE_RECOGNIZED,message); - recog_event_dispatch(state_machine,message); - - /* process pending RECOGNIZE requests */ - pending_request = apt_list_pop_front(state_machine->queue); - if(pending_request) { - apt_log(APT_LOG_MARK,APT_PRIO_INFO,"Process Pending RECOGNIZE Request "APT_SIDRES_FMT" [%"MRCP_REQUEST_ID_FMT"]", - MRCP_MESSAGE_SIDRES(pending_request), - pending_request->start_line.request_id); - state_machine->is_pending = TRUE; - recog_request_dispatch(state_machine,pending_request); - } - return TRUE; -} - -static apt_bool_t recog_event_interpretation_complete(mrcp_recog_state_machine_t *state_machine, mrcp_message_t *message) -{ - if(mrcp_resource_header_property_check(message,RECOGNIZER_HEADER_COMPLETION_CAUSE) != TRUE) { - mrcp_recog_header_t *recog_header = mrcp_resource_header_prepare(message); - recog_header->completion_cause = RECOGNIZER_COMPLETION_CAUSE_SUCCESS; - mrcp_resource_header_property_add(message,RECOGNIZER_HEADER_COMPLETION_CAUSE); - } - return recog_event_dispatch(state_machine,message); -} - -static recog_method_f recog_request_method_array[RECOGNIZER_METHOD_COUNT] = { - recog_request_set_params, - recog_request_get_params, - recog_request_define_grammar, - recog_request_recognize, - recog_request_interpret, - recog_request_get_result, - recog_request_recognition_start_timers, - recog_request_stop -}; - -static recog_method_f recog_response_method_array[RECOGNIZER_METHOD_COUNT] = { - recog_response_set_params, - recog_response_get_params, - recog_response_define_grammar, - recog_response_recognize, - recog_response_interpret, - recog_response_get_result, - recog_response_recognition_start_timers, - recog_response_stop -}; - -static recog_method_f recog_event_method_array[RECOGNIZER_EVENT_COUNT] = { - recog_event_start_of_input, - recog_event_recognition_complete, - recog_event_interpretation_complete -}; - -/** Update state according to received incoming request from MRCP client */ -static apt_bool_t recog_request_state_update(mrcp_recog_state_machine_t *state_machine, mrcp_message_t *message) -{ - recog_method_f method; - if(message->start_line.method_id >= RECOGNIZER_METHOD_COUNT) { - return FALSE; - } - - apt_log(APT_LOG_MARK,APT_PRIO_INFO,"Process %s Request "APT_SIDRES_FMT" [%"MRCP_REQUEST_ID_FMT"]", - message->start_line.method_name.buf, - MRCP_MESSAGE_SIDRES(message), - message->start_line.request_id); - method = recog_request_method_array[message->start_line.method_id]; - if(method) { - return method(state_machine,message); - } - return recog_request_dispatch(state_machine,message); -} - -/** Update state according to received outgoing response from recognition engine */ -static apt_bool_t recog_response_state_update(mrcp_recog_state_machine_t *state_machine, mrcp_message_t *message) -{ - recog_method_f method; - if(!state_machine->active_request) { - /* unexpected response, no active request waiting for response */ - return FALSE; - } - if(state_machine->active_request->start_line.request_id != message->start_line.request_id) { - /* unexpected response, request id doesn't match */ - return FALSE; - } - - if(message->start_line.method_id >= RECOGNIZER_METHOD_COUNT) { - return FALSE; - } - - apt_log(APT_LOG_MARK,APT_PRIO_INFO,"Process %s Response "APT_SIDRES_FMT" [%"MRCP_REQUEST_ID_FMT"]", - message->start_line.method_name.buf, - MRCP_MESSAGE_SIDRES(message), - message->start_line.request_id); - method = recog_response_method_array[message->start_line.method_id]; - if(method) { - return method(state_machine,message); - } - return recog_response_dispatch(state_machine,message); -} - -/** Update state according to received outgoing event from recognition engine */ -static apt_bool_t recog_event_state_update(mrcp_recog_state_machine_t *state_machine, mrcp_message_t *message) -{ - recog_method_f method; - if(message->start_line.method_id >= RECOGNIZER_EVENT_COUNT) { - return FALSE; - } - - apt_log(APT_LOG_MARK,APT_PRIO_INFO,"Process %s Event "APT_SIDRES_FMT" [%"MRCP_REQUEST_ID_FMT"]", - message->start_line.method_name.buf, - MRCP_MESSAGE_SIDRES(message), - message->start_line.request_id); - method = recog_event_method_array[message->start_line.method_id]; - if(method) { - return method(state_machine,message); - } - return recog_event_dispatch(state_machine,message); -} - -/** Update state according to request received from MRCP client or response/event received from recognition engine */ -static apt_bool_t recog_state_update(mrcp_state_machine_t *base, mrcp_message_t *message) -{ - mrcp_recog_state_machine_t *state_machine = (mrcp_recog_state_machine_t*)base; - apt_bool_t status = TRUE; - switch(message->start_line.message_type) { - case MRCP_MESSAGE_TYPE_REQUEST: - status = recog_request_state_update(state_machine,message); - break; - case MRCP_MESSAGE_TYPE_RESPONSE: - status = recog_response_state_update(state_machine,message); - break; - case MRCP_MESSAGE_TYPE_EVENT: - status = recog_event_state_update(state_machine,message); - break; - default: - status = FALSE; - break; - } - return status; -} - -/** Deactivate state machine */ -static apt_bool_t recog_state_deactivate(mrcp_state_machine_t *base) -{ - mrcp_recog_state_machine_t *state_machine = (mrcp_recog_state_machine_t*)base; - mrcp_message_t *message; - mrcp_message_t *source; - if(state_machine->state != RECOGNIZER_STATE_RECOGNIZING) { - /* no in-progress RECOGNIZE request to deactivate */ - return FALSE; - } - source = state_machine->recog; - if(!source) { - return FALSE; - } - - /* create internal STOP request */ - message = mrcp_request_create( - source->resource, - source->start_line.version, - RECOGNIZER_STOP, - source->pool); - message->channel_id = source->channel_id; - message->start_line.request_id = source->start_line.request_id + 1; - apt_string_set(&message->start_line.method_name,"DEACTIVATE"); /* informative only */ - message->header = source->header; - apt_log(APT_LOG_MARK,APT_PRIO_INFO,"Create and Process STOP Request "APT_SIDRES_FMT" [%"MRCP_REQUEST_ID_FMT"]", - MRCP_MESSAGE_SIDRES(message), - message->start_line.request_id); - return recog_request_dispatch(state_machine,message); -} - -/** Create MRCP recognizer state machine */ -mrcp_state_machine_t* mrcp_recog_state_machine_create(void *obj, mrcp_version_e version, apr_pool_t *pool) -{ - mrcp_recog_state_machine_t *state_machine = apr_palloc(pool,sizeof(mrcp_recog_state_machine_t)); - mrcp_state_machine_init(&state_machine->base,obj); - state_machine->base.update = recog_state_update; - state_machine->base.deactivate = recog_state_deactivate; - state_machine->state = RECOGNIZER_STATE_IDLE; - state_machine->is_pending = FALSE; - state_machine->active_request = NULL; - state_machine->recog = NULL; - state_machine->queue = apt_list_create(pool); - state_machine->properties = mrcp_message_header_create( - mrcp_generic_header_vtable_get(version), - mrcp_recog_header_vtable_get(version), - pool); - return &state_machine->base; -} diff --git a/libs/unimrcp/libs/mrcp-engine/src/mrcp_recorder_state_machine.c b/libs/unimrcp/libs/mrcp-engine/src/mrcp_recorder_state_machine.c deleted file mode 100644 index ad7bd7b1b69..00000000000 --- a/libs/unimrcp/libs/mrcp-engine/src/mrcp_recorder_state_machine.c +++ /dev/null @@ -1,389 +0,0 @@ -/* - * Copyright 2008-2014 Arsen Chaloyan - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - * - * $Id: mrcp_recorder_state_machine.c 2136 2014-07-04 06:33:36Z achaloyan@gmail.com $ - */ - -#include "apt_obj_list.h" -#include "apt_log.h" -#include "mrcp_recorder_state_machine.h" -#include "mrcp_generic_header.h" -#include "mrcp_recorder_header.h" -#include "mrcp_recorder_resource.h" -#include "mrcp_message.h" - -/** MRCP recorder states */ -typedef enum { - RECORDER_STATE_IDLE, - RECORDER_STATE_RECORDING, - - RECORDER_STATE_COUNT -} mrcp_recorder_state_e; - -static const char * state_names[RECORDER_STATE_COUNT] = { - "IDLE", - "RECORDING", -}; - -typedef struct mrcp_recorder_state_machine_t mrcp_recorder_state_machine_t; - -struct mrcp_recorder_state_machine_t { - /** state machine base */ - mrcp_state_machine_t base; - /** recorder state */ - mrcp_recorder_state_e state; - /** request sent to recorder engine and waiting for the response to be received */ - mrcp_message_t *active_request; - /** in-progress record request */ - mrcp_message_t *record; - /** properties used in set/get params */ - mrcp_message_header_t *properties; -}; - -typedef apt_bool_t (*recorder_method_f)(mrcp_recorder_state_machine_t *state_machine, mrcp_message_t *message); - -static APR_INLINE apt_bool_t recorder_request_dispatch(mrcp_recorder_state_machine_t *state_machine, mrcp_message_t *message) -{ - state_machine->active_request = message; - return state_machine->base.on_dispatch(&state_machine->base,message); -} - -static APR_INLINE apt_bool_t recorder_response_dispatch(mrcp_recorder_state_machine_t *state_machine, mrcp_message_t *message) -{ - state_machine->active_request = NULL; - if(state_machine->base.active == FALSE) { - /* this is the response to deactivation (STOP) request */ - return state_machine->base.on_deactivate(&state_machine->base); - } - return state_machine->base.on_dispatch(&state_machine->base,message); -} - -static APR_INLINE apt_bool_t recorder_event_dispatch(mrcp_recorder_state_machine_t *state_machine, mrcp_message_t *message) -{ - if(state_machine->base.active == FALSE) { - /* do nothing, state machine has already been deactivated */ - return FALSE; - } - return state_machine->base.on_dispatch(&state_machine->base,message); -} - -static APR_INLINE void recorder_state_change(mrcp_recorder_state_machine_t *state_machine, mrcp_recorder_state_e state, mrcp_message_t *message) -{ - apt_log(APT_LOG_MARK,APT_PRIO_INFO,"State Transition %s -> %s "APT_SIDRES_FMT, - state_names[state_machine->state], - state_names[state], - MRCP_MESSAGE_SIDRES(message)); - state_machine->state = state; - if(state == RECORDER_STATE_IDLE) { - state_machine->record = NULL; - } -} - - -static apt_bool_t recorder_request_set_params(mrcp_recorder_state_machine_t *state_machine, mrcp_message_t *message) -{ - mrcp_header_fields_set(state_machine->properties,&message->header,message->pool); - return recorder_request_dispatch(state_machine,message); -} - -static apt_bool_t recorder_response_set_params(mrcp_recorder_state_machine_t *state_machine, mrcp_message_t *message) -{ - return recorder_response_dispatch(state_machine,message); -} - -static apt_bool_t recorder_request_get_params(mrcp_recorder_state_machine_t *state_machine, mrcp_message_t *message) -{ - return recorder_request_dispatch(state_machine,message); -} - -static apt_bool_t recorder_response_get_params(mrcp_recorder_state_machine_t *state_machine, mrcp_message_t *message) -{ - mrcp_header_fields_get(&message->header,state_machine->properties,&state_machine->active_request->header,message->pool); - return recorder_response_dispatch(state_machine,message); -} - -static apt_bool_t recorder_request_record(mrcp_recorder_state_machine_t *state_machine, mrcp_message_t *message) -{ - mrcp_header_fields_inherit(&message->header,state_machine->properties,message->pool); - if(state_machine->state == RECORDER_STATE_RECORDING) { - mrcp_message_t *response; - apt_log(APT_LOG_MARK,APT_PRIO_INFO,"Reject RECORD Request "APT_SIDRES_FMT" [%"MRCP_REQUEST_ID_FMT"]", - MRCP_MESSAGE_SIDRES(message), - message->start_line.request_id); - - /* there is in-progress request, reject this one */ - response = mrcp_response_create(message,message->pool); - response->start_line.status_code = MRCP_STATUS_CODE_METHOD_NOT_VALID; - return recorder_response_dispatch(state_machine,response); - } - - return recorder_request_dispatch(state_machine,message); -} - -static apt_bool_t recorder_response_record(mrcp_recorder_state_machine_t *state_machine, mrcp_message_t *message) -{ - if(message->start_line.request_state == MRCP_REQUEST_STATE_INPROGRESS) { - state_machine->record = state_machine->active_request; - recorder_state_change(state_machine,RECORDER_STATE_RECORDING,message); - } - return recorder_response_dispatch(state_machine,message); -} - -static apt_bool_t recorder_request_stop(mrcp_recorder_state_machine_t *state_machine, mrcp_message_t *message) -{ - mrcp_message_t *response; - if(state_machine->state == RECORDER_STATE_RECORDING) { - /* found in-progress RECORDER request, stop it */ - return recorder_request_dispatch(state_machine,message); - } - - /* found no in-progress RECORDER request, sending immediate response */ - response = mrcp_response_create(message,message->pool); - return recorder_response_dispatch(state_machine,response); -} - -static apt_bool_t recorder_response_stop(mrcp_recorder_state_machine_t *state_machine, mrcp_message_t *message) -{ - mrcp_generic_header_t *generic_header = mrcp_generic_header_prepare(message); - /* append active id list */ - active_request_id_list_append(generic_header,state_machine->record->start_line.request_id); - mrcp_generic_header_property_add(message,GENERIC_HEADER_ACTIVE_REQUEST_ID_LIST); - recorder_state_change(state_machine,RECORDER_STATE_IDLE,message); - return recorder_response_dispatch(state_machine,message); -} - -static apt_bool_t recorder_request_start_timers(mrcp_recorder_state_machine_t *state_machine, mrcp_message_t *message) -{ - mrcp_message_t *response; - if(state_machine->state == RECORDER_STATE_RECORDING) { - /* found in-progress request */ - return recorder_request_dispatch(state_machine,message); - } - - /* found no in-progress request */ - response = mrcp_response_create(message,message->pool); - response->start_line.status_code = MRCP_STATUS_CODE_METHOD_NOT_VALID; - return recorder_response_dispatch(state_machine,response); -} - -static apt_bool_t recorder_response_start_timers(mrcp_recorder_state_machine_t *state_machine, mrcp_message_t *message) -{ - return recorder_response_dispatch(state_machine,message); -} - -static apt_bool_t recorder_event_start_of_input(mrcp_recorder_state_machine_t *state_machine, mrcp_message_t *message) -{ - if(!state_machine->record) { - /* unexpected event, no in-progress record request */ - return FALSE; - } - - if(state_machine->record->start_line.request_id != message->start_line.request_id) { - /* unexpected event */ - return FALSE; - } - - message->start_line.request_state = MRCP_REQUEST_STATE_INPROGRESS; - return recorder_event_dispatch(state_machine,message); -} - -static apt_bool_t recorder_event_record_complete(mrcp_recorder_state_machine_t *state_machine, mrcp_message_t *message) -{ - if(!state_machine->record) { - apt_log(APT_LOG_MARK,APT_PRIO_INFO,"Unexpected RECORD-COMPLETE Event "APT_SIDRES_FMT" [%"MRCP_REQUEST_ID_FMT"]", - MRCP_MESSAGE_SIDRES(message), - message->start_line.request_id); - return FALSE; - } - - if(state_machine->record->start_line.request_id != message->start_line.request_id) { - apt_log(APT_LOG_MARK,APT_PRIO_INFO,"Unexpected RECORD-COMPLETE Event "APT_SIDRES_FMT" [%"MRCP_REQUEST_ID_FMT"]", - MRCP_MESSAGE_SIDRES(message), - message->start_line.request_id); - return FALSE; - } - - if(state_machine->active_request && state_machine->active_request->start_line.method_id == RECORDER_STOP) { - apt_log(APT_LOG_MARK,APT_PRIO_INFO,"Ignore RECORD-COMPLETE Event "APT_SIDRES_FMT" [%"MRCP_REQUEST_ID_FMT"]: waiting for STOP response", - MRCP_MESSAGE_SIDRES(message), - message->start_line.request_id); - return FALSE; - } - - if(mrcp_resource_header_property_check(message,RECORDER_HEADER_COMPLETION_CAUSE) != TRUE) { - mrcp_recorder_header_t *recorder_header = mrcp_resource_header_prepare(message); - recorder_header->completion_cause = RECORDER_COMPLETION_CAUSE_SUCCESS_SILENCE; - mrcp_resource_header_property_add(message,RECORDER_HEADER_COMPLETION_CAUSE); - } - recorder_state_change(state_machine,RECORDER_STATE_IDLE,message); - return recorder_event_dispatch(state_machine,message); -} - -static recorder_method_f recorder_request_method_array[RECORDER_METHOD_COUNT] = { - recorder_request_set_params, - recorder_request_get_params, - recorder_request_record, - recorder_request_stop, - recorder_request_start_timers -}; - -static recorder_method_f recorder_response_method_array[RECORDER_METHOD_COUNT] = { - recorder_response_set_params, - recorder_response_get_params, - recorder_response_record, - recorder_response_stop, - recorder_response_start_timers -}; - -static recorder_method_f recorder_event_method_array[RECORDER_EVENT_COUNT] = { - recorder_event_start_of_input, - recorder_event_record_complete -}; - -/** Update state according to received incoming request from MRCP client */ -static apt_bool_t recorder_request_state_update(mrcp_recorder_state_machine_t *state_machine, mrcp_message_t *message) -{ - recorder_method_f method; - if(message->start_line.method_id >= RECORDER_METHOD_COUNT) { - return FALSE; - } - - apt_log(APT_LOG_MARK,APT_PRIO_INFO,"Process %s Request "APT_SIDRES_FMT" [%"MRCP_REQUEST_ID_FMT"]", - message->start_line.method_name.buf, - MRCP_MESSAGE_SIDRES(message), - message->start_line.request_id); - method = recorder_request_method_array[message->start_line.method_id]; - if(method) { - return method(state_machine,message); - } - return recorder_request_dispatch(state_machine,message); -} - -/** Update state according to received outgoing response from recorder engine */ -static apt_bool_t recorder_response_state_update(mrcp_recorder_state_machine_t *state_machine, mrcp_message_t *message) -{ - recorder_method_f method; - if(!state_machine->active_request) { - /* unexpected response, no active request waiting for response */ - return FALSE; - } - if(state_machine->active_request->start_line.request_id != message->start_line.request_id) { - /* unexpected response, request id doesn't match */ - return FALSE; - } - - if(message->start_line.method_id >= RECORDER_METHOD_COUNT) { - return FALSE; - } - - apt_log(APT_LOG_MARK,APT_PRIO_INFO,"Process %s Response "APT_SIDRES_FMT" [%"MRCP_REQUEST_ID_FMT"]", - message->start_line.method_name.buf, - MRCP_MESSAGE_SIDRES(message), - message->start_line.request_id); - method = recorder_response_method_array[message->start_line.method_id]; - if(method) { - return method(state_machine,message); - } - return recorder_response_dispatch(state_machine,message); -} - -/** Update state according to received outgoing event from recorder engine */ -static apt_bool_t recorder_event_state_update(mrcp_recorder_state_machine_t *state_machine, mrcp_message_t *message) -{ - recorder_method_f method; - if(message->start_line.method_id >= RECORDER_EVENT_COUNT) { - return FALSE; - } - - apt_log(APT_LOG_MARK,APT_PRIO_INFO,"Process %s Event "APT_SIDRES_FMT" [%"MRCP_REQUEST_ID_FMT"]", - message->start_line.method_name.buf, - MRCP_MESSAGE_SIDRES(message), - message->start_line.request_id); - method = recorder_event_method_array[message->start_line.method_id]; - if(method) { - return method(state_machine,message); - } - return recorder_event_dispatch(state_machine,message); -} - -/** Update state according to request received from MRCP client or response/event received from recorder engine */ -static apt_bool_t recorder_state_update(mrcp_state_machine_t *base, mrcp_message_t *message) -{ - mrcp_recorder_state_machine_t *state_machine = (mrcp_recorder_state_machine_t*)base; - apt_bool_t status = TRUE; - switch(message->start_line.message_type) { - case MRCP_MESSAGE_TYPE_REQUEST: - status = recorder_request_state_update(state_machine,message); - break; - case MRCP_MESSAGE_TYPE_RESPONSE: - status = recorder_response_state_update(state_machine,message); - break; - case MRCP_MESSAGE_TYPE_EVENT: - status = recorder_event_state_update(state_machine,message); - break; - default: - status = FALSE; - break; - } - return status; -} - -/** Deactivate state machine */ -static apt_bool_t recorder_state_deactivate(mrcp_state_machine_t *base) -{ - mrcp_recorder_state_machine_t *state_machine = (mrcp_recorder_state_machine_t*)base; - mrcp_message_t *message; - mrcp_message_t *source; - if(state_machine->state != RECORDER_STATE_RECORDING) { - /* no in-progress RECORD request to deactivate */ - return FALSE; - } - source = state_machine->record; - if(!source) { - return FALSE; - } - - /* create internal STOP request */ - message = mrcp_request_create( - source->resource, - source->start_line.version, - RECORDER_STOP, - source->pool); - message->channel_id = source->channel_id; - message->start_line.request_id = source->start_line.request_id + 1; - apt_string_set(&message->start_line.method_name,"DEACTIVATE"); /* informative only */ - message->header = source->header; - apt_log(APT_LOG_MARK,APT_PRIO_INFO,"Create and Process STOP Request "APT_SIDRES_FMT" [%"MRCP_REQUEST_ID_FMT"]", - MRCP_MESSAGE_SIDRES(message), - message->start_line.request_id); - return recorder_request_dispatch(state_machine,message); -} - -/** Create MRCP recorder state machine */ -mrcp_state_machine_t* mrcp_recorder_state_machine_create(void *obj, mrcp_version_e version, apr_pool_t *pool) -{ - mrcp_recorder_state_machine_t *state_machine = apr_palloc(pool,sizeof(mrcp_recorder_state_machine_t)); - mrcp_state_machine_init(&state_machine->base,obj); - state_machine->base.update = recorder_state_update; - state_machine->base.deactivate = recorder_state_deactivate; - state_machine->state = RECORDER_STATE_IDLE; - state_machine->active_request = NULL; - state_machine->record = NULL; - state_machine->properties = mrcp_message_header_create( - mrcp_generic_header_vtable_get(version), - mrcp_recorder_header_vtable_get(version), - pool); - return &state_machine->base; -} diff --git a/libs/unimrcp/libs/mrcp-engine/src/mrcp_synth_state_machine.c b/libs/unimrcp/libs/mrcp-engine/src/mrcp_synth_state_machine.c deleted file mode 100644 index 205f39c0bfb..00000000000 --- a/libs/unimrcp/libs/mrcp-engine/src/mrcp_synth_state_machine.c +++ /dev/null @@ -1,612 +0,0 @@ -/* - * Copyright 2008-2014 Arsen Chaloyan - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - * - * $Id: mrcp_synth_state_machine.c 2228 2014-11-12 01:18:27Z achaloyan@gmail.com $ - */ - -#include "apt_obj_list.h" -#include "apt_log.h" -#include "mrcp_state_machine.h" -#include "mrcp_synth_state_machine.h" -#include "mrcp_synth_header.h" -#include "mrcp_generic_header.h" -#include "mrcp_synth_resource.h" -#include "mrcp_message.h" - -/** MRCP synthesizer states */ -typedef enum { - SYNTHESIZER_STATE_IDLE, - SYNTHESIZER_STATE_SPEAKING, - SYNTHESIZER_STATE_PAUSED, - - SYNTHESIZER_STATE_COUNT -} mrcp_synth_state_e; - -static const char * state_names[SYNTHESIZER_STATE_COUNT] = { - "IDLE", - "SPEAKING", - "PAUSED" -}; - -typedef struct mrcp_synth_state_machine_t mrcp_synth_state_machine_t; -struct mrcp_synth_state_machine_t { - /** state machine base */ - mrcp_state_machine_t base; - /** synthesizer state */ - mrcp_synth_state_e state; - /** indicate whether active_request was processed from pending request queue */ - apt_bool_t is_pending; - /** request sent to synthesizer engine and waiting for the response to be received */ - mrcp_message_t *active_request; - /** in-progress speak request */ - mrcp_message_t *speaker; - /** queue of pending speak requests */ - apt_obj_list_t *queue; - /** properties used in set/get params */ - mrcp_message_header_t *properties; -}; - -typedef apt_bool_t (*synth_method_f)(mrcp_synth_state_machine_t *state_machine, mrcp_message_t *message); - -static APR_INLINE apt_bool_t synth_request_dispatch(mrcp_synth_state_machine_t *state_machine, mrcp_message_t *message) -{ - state_machine->active_request = message; - return state_machine->base.on_dispatch(&state_machine->base,message); -} - -static APR_INLINE apt_bool_t synth_response_dispatch(mrcp_synth_state_machine_t *state_machine, mrcp_message_t *message) -{ - state_machine->active_request = NULL; - if(state_machine->base.active == FALSE) { - /* this is the response to deactivation (STOP) request */ - return state_machine->base.on_deactivate(&state_machine->base); - } - return state_machine->base.on_dispatch(&state_machine->base,message); -} - -static APR_INLINE apt_bool_t synth_event_dispatch(mrcp_synth_state_machine_t *state_machine, mrcp_message_t *message) -{ - if(state_machine->base.active == FALSE) { - /* do nothing, state machine has already been deactivated */ - return FALSE; - } - return state_machine->base.on_dispatch(&state_machine->base,message); -} - -static APR_INLINE void synth_state_change(mrcp_synth_state_machine_t *state_machine, mrcp_synth_state_e state, mrcp_message_t *message) -{ - apt_log(APT_LOG_MARK,APT_PRIO_NOTICE,"State Transition %s -> %s "APT_SIDRES_FMT, - state_names[state_machine->state], - state_names[state], - MRCP_MESSAGE_SIDRES(message)); - state_machine->state = state; - if(state == SYNTHESIZER_STATE_IDLE) { - state_machine->speaker = NULL; - } -} - - -static apt_bool_t synth_request_set_params(mrcp_synth_state_machine_t *state_machine, mrcp_message_t *message) -{ - mrcp_header_fields_set(state_machine->properties,&message->header,message->pool); - return synth_request_dispatch(state_machine,message); -} - -static apt_bool_t synth_response_set_params(mrcp_synth_state_machine_t *state_machine, mrcp_message_t *message) -{ - return synth_response_dispatch(state_machine,message); -} - -static apt_bool_t synth_request_get_params(mrcp_synth_state_machine_t *state_machine, mrcp_message_t *message) -{ - return synth_request_dispatch(state_machine,message); -} - -static apt_bool_t synth_response_get_params(mrcp_synth_state_machine_t *state_machine, mrcp_message_t *message) -{ - mrcp_header_fields_get(&message->header,state_machine->properties,&state_machine->active_request->header,message->pool); - return synth_response_dispatch(state_machine,message); -} - -static apt_bool_t synth_request_speak(mrcp_synth_state_machine_t *state_machine, mrcp_message_t *message) -{ - mrcp_header_fields_inherit(&message->header,state_machine->properties,message->pool); - if(state_machine->speaker) { - mrcp_message_t *response; - apt_log(APT_LOG_MARK,APT_PRIO_INFO,"Queue Up SPEAK Request "APT_SIDRES_FMT" [%"MRCP_REQUEST_ID_FMT"]", - MRCP_MESSAGE_SIDRES(message), - message->start_line.request_id); - message->start_line.request_state = MRCP_REQUEST_STATE_PENDING; - apt_list_push_back(state_machine->queue,message,message->pool); - - response = mrcp_response_create(message,message->pool); - response->start_line.request_state = MRCP_REQUEST_STATE_PENDING; - return synth_response_dispatch(state_machine,response); - } - - return synth_request_dispatch(state_machine,message); -} - -static apt_bool_t synth_response_speak(mrcp_synth_state_machine_t *state_machine, mrcp_message_t *message) -{ - if(message->start_line.request_state == MRCP_REQUEST_STATE_INPROGRESS) { - state_machine->speaker = state_machine->active_request; - synth_state_change(state_machine,SYNTHESIZER_STATE_SPEAKING,message); - } - if(state_machine->is_pending == TRUE) { - mrcp_message_t *event_message = mrcp_event_create( - state_machine->active_request, - SYNTHESIZER_SPEECH_MARKER, - state_machine->active_request->pool); - event_message->start_line.request_state = MRCP_REQUEST_STATE_INPROGRESS; - state_machine->is_pending = FALSE; - /* not to send the response for pending request, instead send SPEECH-MARKER event */ - return synth_event_dispatch(state_machine,event_message); - } - return synth_response_dispatch(state_machine,message); -} - -static apt_bool_t synth_pending_requests_remove(mrcp_synth_state_machine_t *state_machine, mrcp_message_t *request_message, mrcp_message_t *response_message) -{ - apt_list_elem_t *elem; - mrcp_message_t *pending_message; - mrcp_request_id_list_t *request_id_list = NULL; - mrcp_generic_header_t *generic_header = mrcp_generic_header_get(request_message); - mrcp_generic_header_t *response_generic_header = mrcp_generic_header_prepare(response_message); - if(generic_header && mrcp_generic_header_property_check(request_message,GENERIC_HEADER_ACTIVE_REQUEST_ID_LIST) == TRUE) { - if(generic_header->active_request_id_list.count) { - /* selective STOP request */ - request_id_list = &generic_header->active_request_id_list; - } - } - - elem = apt_list_first_elem_get(state_machine->queue); - while(elem) { - pending_message = apt_list_elem_object_get(elem); - if(!request_id_list || active_request_id_list_find(generic_header,pending_message->start_line.request_id) == TRUE) { - apt_log(APT_LOG_MARK,APT_PRIO_INFO,"Remove Pending SPEAK Request "APT_SIDRES_FMT" [%"MRCP_REQUEST_ID_FMT"]", - MRCP_MESSAGE_SIDRES(pending_message), - pending_message->start_line.request_id); - elem = apt_list_elem_remove(state_machine->queue,elem); - /* append active id list */ - active_request_id_list_append(response_generic_header,pending_message->start_line.request_id); - } - else { - /* speak request remains in the queue, just proceed to the next one */ - elem = apt_list_next_elem_get(state_machine->queue,elem); - } - } - if(response_generic_header->active_request_id_list.count) { - mrcp_generic_header_property_add(response_message,GENERIC_HEADER_ACTIVE_REQUEST_ID_LIST); - } - return TRUE; -} - -static apt_bool_t synth_request_stop(mrcp_synth_state_machine_t *state_machine, mrcp_message_t *message) -{ - mrcp_message_t *response_message; - if(state_machine->speaker) { - mrcp_request_id_list_t *request_id_list = NULL; - mrcp_generic_header_t *generic_header = mrcp_generic_header_get(message); - if(generic_header && mrcp_generic_header_property_check(message,GENERIC_HEADER_ACTIVE_REQUEST_ID_LIST) == TRUE) { - if(generic_header->active_request_id_list.count) { - /* selective STOP request */ - request_id_list = &generic_header->active_request_id_list; - } - } - - if(!request_id_list || active_request_id_list_find(generic_header,state_machine->speaker->start_line.request_id) == TRUE) { - /* found in-progress SPEAK request, stop it */ - apt_log(APT_LOG_MARK,APT_PRIO_DEBUG,"Found IN-PROGRESS SPEAK Request "APT_SIDRES_FMT" [%"MRCP_REQUEST_ID_FMT"]", - MRCP_MESSAGE_SIDRES(message), - message->start_line.request_id); - return synth_request_dispatch(state_machine,message); - } - } - - /* found no in-progress SPEAK request, sending immediate response */ - response_message = mrcp_response_create(message,message->pool); - synth_pending_requests_remove(state_machine,message,response_message); - return synth_response_dispatch(state_machine,response_message); -} - -static apt_bool_t synth_response_stop(mrcp_synth_state_machine_t *state_machine, mrcp_message_t *message) -{ - mrcp_message_t *pending_request; - mrcp_generic_header_t *generic_header = mrcp_generic_header_prepare(message); - /* append active id list */ - active_request_id_list_append(generic_header,state_machine->speaker->start_line.request_id); - mrcp_generic_header_property_add(message,GENERIC_HEADER_ACTIVE_REQUEST_ID_LIST); - synth_pending_requests_remove(state_machine,state_machine->active_request,message); - synth_state_change(state_machine,SYNTHESIZER_STATE_IDLE,message); - pending_request = apt_list_pop_front(state_machine->queue); - synth_response_dispatch(state_machine,message); - - /* process pending SPEAK requests / if any */ - if(pending_request) { - apt_log(APT_LOG_MARK,APT_PRIO_INFO,"Process Pending SPEAK Request "APT_SIDRES_FMT" [%"MRCP_REQUEST_ID_FMT"]", - MRCP_MESSAGE_SIDRES(message), - pending_request->start_line.request_id); - state_machine->is_pending = TRUE; - synth_request_dispatch(state_machine,pending_request); - } - return TRUE; -} - -static apt_bool_t synth_request_pause(mrcp_synth_state_machine_t *state_machine, mrcp_message_t *message) -{ - if(state_machine->speaker) { - /* speaking or paused state */ - if(state_machine->state == SYNTHESIZER_STATE_SPEAKING) { - synth_request_dispatch(state_machine,message); - } - else { - /* paused state */ - mrcp_message_t *response_message = mrcp_response_create(message,message->pool); - synth_response_dispatch(state_machine,response_message); - } - } - else { - /* idle state */ - mrcp_message_t *response_message = mrcp_response_create(message,message->pool); - response_message->start_line.status_code = MRCP_STATUS_CODE_METHOD_NOT_VALID; - synth_response_dispatch(state_machine,response_message); - } - return TRUE; -} - -static apt_bool_t synth_response_pause(mrcp_synth_state_machine_t *state_machine, mrcp_message_t *message) -{ - if(message->start_line.status_code == MRCP_STATUS_CODE_SUCCESS) { - mrcp_generic_header_t *generic_header = mrcp_generic_header_prepare(message); - /* append active id list */ - active_request_id_list_append(generic_header,state_machine->speaker->start_line.request_id); - mrcp_generic_header_property_add(message,GENERIC_HEADER_ACTIVE_REQUEST_ID_LIST); - synth_state_change(state_machine,SYNTHESIZER_STATE_PAUSED,message); - } - synth_response_dispatch(state_machine,message); - return TRUE; -} - -static apt_bool_t synth_request_resume(mrcp_synth_state_machine_t *state_machine, mrcp_message_t *message) -{ - if(state_machine->speaker) { - /* speaking or paused state */ - if(state_machine->state == SYNTHESIZER_STATE_PAUSED) { - synth_request_dispatch(state_machine,message); - } - else { - /* speaking state */ - mrcp_message_t *response_message = mrcp_response_create(message,message->pool); - synth_response_dispatch(state_machine,response_message); - } - } - else { - /* idle state */ - mrcp_message_t *response_message = mrcp_response_create(message,message->pool); - response_message->start_line.status_code = MRCP_STATUS_CODE_METHOD_NOT_VALID; - synth_response_dispatch(state_machine,response_message); - } - return TRUE; -} - -static apt_bool_t synth_response_resume(mrcp_synth_state_machine_t *state_machine, mrcp_message_t *message) -{ - if(message->start_line.status_code == MRCP_STATUS_CODE_SUCCESS) { - mrcp_generic_header_t *generic_header = mrcp_generic_header_prepare(message); - /* append active id list */ - active_request_id_list_append(generic_header,state_machine->speaker->start_line.request_id); - mrcp_generic_header_property_add(message,GENERIC_HEADER_ACTIVE_REQUEST_ID_LIST); - synth_state_change(state_machine,SYNTHESIZER_STATE_SPEAKING,message); - } - synth_response_dispatch(state_machine,message); - return TRUE; -} - -static apt_bool_t synth_request_barge_in_occurred(mrcp_synth_state_machine_t *state_machine, mrcp_message_t *message) -{ - mrcp_message_t *response_message; - if(state_machine->speaker) { - apt_bool_t kill_on_barge_in = TRUE; - mrcp_synth_header_t *synth_header = mrcp_resource_header_get(message); - if(synth_header) { - if(mrcp_resource_header_property_check(message,SYNTHESIZER_HEADER_KILL_ON_BARGE_IN) == TRUE) { - kill_on_barge_in = synth_header->kill_on_barge_in; - } - } - - if(kill_on_barge_in == TRUE) { - return synth_request_dispatch(state_machine,message); - } - } - - /* found no kill-on-bargein enabled in-progress SPEAK request, sending immediate response */ - response_message = mrcp_response_create(message,message->pool); - return synth_response_dispatch(state_machine,response_message); -} - -static apt_bool_t synth_response_barge_in_occurred(mrcp_synth_state_machine_t *state_machine, mrcp_message_t *message) -{ - mrcp_generic_header_t *generic_header = mrcp_generic_header_prepare(message); - /* append active id list */ - active_request_id_list_append(generic_header,state_machine->speaker->start_line.request_id); - mrcp_generic_header_property_add(message,GENERIC_HEADER_ACTIVE_REQUEST_ID_LIST); - synth_pending_requests_remove(state_machine,state_machine->active_request,message); - synth_state_change(state_machine,SYNTHESIZER_STATE_IDLE,message); - return synth_response_dispatch(state_machine,message); -} - -static apt_bool_t synth_request_control(mrcp_synth_state_machine_t *state_machine, mrcp_message_t *message) -{ - mrcp_message_t *response_message; - if(state_machine->state == SYNTHESIZER_STATE_SPEAKING) { - return synth_request_dispatch(state_machine,message); - } - - /* found no in-progress SPEAK request, sending immediate response */ - response_message = mrcp_response_create(message,message->pool); - return synth_response_dispatch(state_machine,response_message); -} - -static apt_bool_t synth_response_control(mrcp_synth_state_machine_t *state_machine, mrcp_message_t *message) -{ - mrcp_generic_header_t *generic_header = mrcp_generic_header_prepare(message); - /* append active id list */ - active_request_id_list_append(generic_header,state_machine->speaker->start_line.request_id); - mrcp_generic_header_property_add(message,GENERIC_HEADER_ACTIVE_REQUEST_ID_LIST); - return synth_response_dispatch(state_machine,message); -} - -static apt_bool_t synth_request_define_lexicon(mrcp_synth_state_machine_t *state_machine, mrcp_message_t *message) -{ - mrcp_message_t *response_message; - if(state_machine->state == SYNTHESIZER_STATE_IDLE) { - return synth_request_dispatch(state_machine,message); - } - - /* sending failure response */ - response_message = mrcp_response_create(message,message->pool); - response_message->start_line.status_code = MRCP_STATUS_CODE_METHOD_NOT_VALID; - return synth_response_dispatch(state_machine,response_message); -} - -static apt_bool_t synth_response_define_lexicon(mrcp_synth_state_machine_t *state_machine, mrcp_message_t *message) -{ - return synth_response_dispatch(state_machine,message); -} - -static apt_bool_t synth_event_speech_marker(mrcp_synth_state_machine_t *state_machine, mrcp_message_t *message) -{ - if(!state_machine->speaker) { - /* unexpected event, no in-progress speak request */ - return FALSE; - } - - if(state_machine->speaker->start_line.request_id != message->start_line.request_id) { - /* unexpected event */ - return FALSE; - } - - message->start_line.request_state = MRCP_REQUEST_STATE_INPROGRESS; - return synth_event_dispatch(state_machine,message); -} - -static apt_bool_t synth_event_speak_complete(mrcp_synth_state_machine_t *state_machine, mrcp_message_t *message) -{ - mrcp_message_t *pending_request; - if(!state_machine->speaker) { - apt_log(APT_LOG_MARK,APT_PRIO_INFO,"Unexpected SPEAK-COMPLETE Event "APT_SIDRES_FMT" [%"MRCP_REQUEST_ID_FMT"]", - MRCP_MESSAGE_SIDRES(message), - message->start_line.request_id); - return FALSE; - } - - if(state_machine->speaker->start_line.request_id != message->start_line.request_id) { - apt_log(APT_LOG_MARK,APT_PRIO_INFO,"Unexpected SPEAK-COMPLETE Event "APT_SIDRES_FMT" [%"MRCP_REQUEST_ID_FMT"]", - MRCP_MESSAGE_SIDRES(message), - message->start_line.request_id); - return FALSE; - } - - if(state_machine->active_request && state_machine->active_request->start_line.method_id == SYNTHESIZER_STOP) { - apt_log(APT_LOG_MARK,APT_PRIO_INFO,"Ignore SPEAK-COMPLETE Event "APT_SIDRES_FMT" [%"MRCP_REQUEST_ID_FMT"]: waiting for STOP response", - MRCP_MESSAGE_SIDRES(message), - message->start_line.request_id); - return FALSE; - } - - if(mrcp_resource_header_property_check(message,SYNTHESIZER_HEADER_COMPLETION_CAUSE) != TRUE) { - mrcp_synth_header_t *synth_header = mrcp_resource_header_prepare(message); - synth_header->completion_cause = SYNTHESIZER_COMPLETION_CAUSE_NORMAL; - mrcp_resource_header_property_add(message,SYNTHESIZER_HEADER_COMPLETION_CAUSE); - } - synth_state_change(state_machine,SYNTHESIZER_STATE_IDLE,message); - synth_event_dispatch(state_machine,message); - - /* process pending SPEAK requests */ - pending_request = apt_list_pop_front(state_machine->queue); - if(pending_request) { - apt_log(APT_LOG_MARK,APT_PRIO_INFO,"Process Pending SPEAK Request "APT_SIDRES_FMT" [%"MRCP_REQUEST_ID_FMT"]", - MRCP_MESSAGE_SIDRES(pending_request), - pending_request->start_line.request_id); - state_machine->is_pending = TRUE; - synth_request_dispatch(state_machine,pending_request); - } - return TRUE; -} - -static synth_method_f synth_request_method_array[SYNTHESIZER_METHOD_COUNT] = { - synth_request_set_params, - synth_request_get_params, - synth_request_speak, - synth_request_stop, - synth_request_pause, - synth_request_resume, - synth_request_barge_in_occurred, - synth_request_control, - synth_request_define_lexicon -}; - -static synth_method_f synth_response_method_array[SYNTHESIZER_METHOD_COUNT] = { - synth_response_set_params, - synth_response_get_params, - synth_response_speak, - synth_response_stop, - synth_response_pause, - synth_response_resume, - synth_response_barge_in_occurred, - synth_response_control, - synth_response_define_lexicon, -}; - -static synth_method_f synth_event_method_array[SYNTHESIZER_EVENT_COUNT] = { - synth_event_speech_marker, - synth_event_speak_complete -}; - -/** Update state according to received incoming request from MRCP client */ -static apt_bool_t synth_request_state_update(mrcp_synth_state_machine_t *state_machine, mrcp_message_t *message) -{ - synth_method_f method; - if(message->start_line.method_id >= SYNTHESIZER_METHOD_COUNT) { - return FALSE; - } - - apt_log(APT_LOG_MARK,APT_PRIO_INFO,"Process %s Request "APT_SIDRES_FMT" [%"MRCP_REQUEST_ID_FMT"]", - message->start_line.method_name.buf, - MRCP_MESSAGE_SIDRES(message), - message->start_line.request_id); - method = synth_request_method_array[message->start_line.method_id]; - if(method) { - return method(state_machine,message); - } - return synth_request_dispatch(state_machine,message); -} - -/** Update state according to received outgoing response from synthesizer engine */ -static apt_bool_t synth_response_state_update(mrcp_synth_state_machine_t *state_machine, mrcp_message_t *message) -{ - synth_method_f method; - if(!state_machine->active_request) { - /* unexpected response, no active request waiting for response */ - return FALSE; - } - if(state_machine->active_request->start_line.request_id != message->start_line.request_id) { - /* unexpected response, request id doesn't match */ - return FALSE; - } - - if(message->start_line.method_id >= SYNTHESIZER_METHOD_COUNT) { - return FALSE; - } - - apt_log(APT_LOG_MARK,APT_PRIO_INFO,"Process %s Response "APT_SIDRES_FMT" [%"MRCP_REQUEST_ID_FMT"]", - message->start_line.method_name.buf, - MRCP_MESSAGE_SIDRES(message), - message->start_line.request_id); - method = synth_response_method_array[message->start_line.method_id]; - if(method) { - return method(state_machine,message); - } - return synth_response_dispatch(state_machine,message); -} - -/** Update state according to received outgoing event from synthesizer engine */ -static apt_bool_t synth_event_state_update(mrcp_synth_state_machine_t *state_machine, mrcp_message_t *message) -{ - synth_method_f method; - if(message->start_line.method_id >= SYNTHESIZER_EVENT_COUNT) { - return FALSE; - } - - apt_log(APT_LOG_MARK,APT_PRIO_INFO,"Process %s Event "APT_SIDRES_FMT" [%"MRCP_REQUEST_ID_FMT"]", - message->start_line.method_name.buf, - MRCP_MESSAGE_SIDRES(message), - message->start_line.request_id); - method = synth_event_method_array[message->start_line.method_id]; - if(method) { - return method(state_machine,message); - } - return synth_event_dispatch(state_machine,message); -} - -/** Update state according to request received from MRCP client or response/event received from synthesizer engine */ -static apt_bool_t synth_state_update(mrcp_state_machine_t *base, mrcp_message_t *message) -{ - mrcp_synth_state_machine_t *synth_state_machine = (mrcp_synth_state_machine_t*)base; - apt_bool_t status = TRUE; - switch(message->start_line.message_type) { - case MRCP_MESSAGE_TYPE_REQUEST: - status = synth_request_state_update(synth_state_machine,message); - break; - case MRCP_MESSAGE_TYPE_RESPONSE: - status = synth_response_state_update(synth_state_machine,message); - break; - case MRCP_MESSAGE_TYPE_EVENT: - status = synth_event_state_update(synth_state_machine,message); - break; - default: - status = FALSE; - break; - } - return status; -} - -/** Deactivate state machine */ -static apt_bool_t synth_state_deactivate(mrcp_state_machine_t *base) -{ - mrcp_synth_state_machine_t *state_machine = (mrcp_synth_state_machine_t*)base; - mrcp_message_t *message; - mrcp_message_t *source; - if(!state_machine->speaker) { - /* no in-progress SPEAK request to deactivate */ - return FALSE; - } - source = state_machine->speaker; - - /* create internal STOP request */ - message = mrcp_request_create( - source->resource, - source->start_line.version, - SYNTHESIZER_STOP, - source->pool); - message->channel_id = source->channel_id; - message->start_line.request_id = source->start_line.request_id + 1; - apt_string_set(&message->start_line.method_name,"DEACTIVATE"); /* informative only */ - message->header = source->header; - apt_log(APT_LOG_MARK,APT_PRIO_INFO,"Create and Process STOP Request "APT_SIDRES_FMT" [%"MRCP_REQUEST_ID_FMT"]", - MRCP_MESSAGE_SIDRES(message), - message->start_line.request_id); - return synth_request_dispatch(state_machine,message); -} - -/** Create MRCP synthesizer state machine */ -mrcp_state_machine_t* mrcp_synth_state_machine_create(void *obj, mrcp_version_e version, apr_pool_t *pool) -{ - mrcp_synth_state_machine_t *state_machine = apr_palloc(pool,sizeof(mrcp_synth_state_machine_t)); - mrcp_state_machine_init(&state_machine->base,obj); - state_machine->base.update = synth_state_update; - state_machine->base.deactivate = synth_state_deactivate; - state_machine->state = SYNTHESIZER_STATE_IDLE; - state_machine->is_pending = FALSE; - state_machine->active_request = NULL; - state_machine->speaker = NULL; - state_machine->queue = apt_list_create(pool); - state_machine->properties = mrcp_message_header_create( - mrcp_generic_header_vtable_get(version), - mrcp_synth_header_vtable_get(version), - pool); - return &state_machine->base; -} diff --git a/libs/unimrcp/libs/mrcp-engine/src/mrcp_verifier_state_machine.c b/libs/unimrcp/libs/mrcp-engine/src/mrcp_verifier_state_machine.c deleted file mode 100644 index 6ca313e51c3..00000000000 --- a/libs/unimrcp/libs/mrcp-engine/src/mrcp_verifier_state_machine.c +++ /dev/null @@ -1,524 +0,0 @@ -/* - * Copyright 2008-2014 Arsen Chaloyan - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - * - * $Id: mrcp_verifier_state_machine.c 2136 2014-07-04 06:33:36Z achaloyan@gmail.com $ - */ - -#include "apt_obj_list.h" -#include "apt_log.h" -#include "mrcp_verifier_state_machine.h" -#include "mrcp_generic_header.h" -#include "mrcp_verifier_header.h" -#include "mrcp_verifier_resource.h" -#include "mrcp_message.h" - -/** MRCP verifier states */ -typedef enum { - VERIFIER_STATE_IDLE, - VERIFIER_STATE_OPENED, - VERIFIER_STATE_VERIFYING, - - VERIFIER_STATE_COUNT -} mrcp_verifier_state_e; - -static const char * state_names[VERIFIER_STATE_COUNT] = { - "IDLE", - "OPENED", - "VERIFYING" -}; - -typedef struct mrcp_verifier_state_machine_t mrcp_verifier_state_machine_t; - -struct mrcp_verifier_state_machine_t { - /** state machine base */ - mrcp_state_machine_t base; - /** verifier state */ - mrcp_verifier_state_e state; - /** request sent to verification engine and waiting for the response to be received */ - mrcp_message_t *active_request; - /** in-progress verify request */ - mrcp_message_t *verify; - /** properties used in set/get params */ - mrcp_message_header_t *properties; -}; - -typedef apt_bool_t (*verifier_method_f)(mrcp_verifier_state_machine_t *state_machine, mrcp_message_t *message); - -static APR_INLINE apt_bool_t verifier_request_dispatch(mrcp_verifier_state_machine_t *state_machine, mrcp_message_t *message) -{ - state_machine->active_request = message; - return state_machine->base.on_dispatch(&state_machine->base,message); -} - -static APR_INLINE apt_bool_t verifier_response_dispatch(mrcp_verifier_state_machine_t *state_machine, mrcp_message_t *message) -{ - state_machine->active_request = NULL; - if(state_machine->base.active == FALSE) { - /* this is the response to deactivation (STOP) request */ - return state_machine->base.on_deactivate(&state_machine->base); - } - return state_machine->base.on_dispatch(&state_machine->base,message); -} - -static APR_INLINE apt_bool_t verifier_event_dispatch(mrcp_verifier_state_machine_t *state_machine, mrcp_message_t *message) -{ - if(state_machine->base.active == FALSE) { - /* do nothing, state machine has already been deactivated */ - return FALSE; - } - return state_machine->base.on_dispatch(&state_machine->base,message); -} - -static APR_INLINE void verifier_state_change(mrcp_verifier_state_machine_t *state_machine, mrcp_verifier_state_e state, mrcp_message_t *message) -{ - apt_log(APT_LOG_MARK,APT_PRIO_INFO,"State Transition %s -> %s "APT_SIDRES_FMT, - state_names[state_machine->state], - state_names[state], - MRCP_MESSAGE_SIDRES(message)); - state_machine->state = state; - if(state == VERIFIER_STATE_IDLE) { - state_machine->verify = NULL; - } -} - - -static apt_bool_t verifier_request_set_params(mrcp_verifier_state_machine_t *state_machine, mrcp_message_t *message) -{ - mrcp_header_fields_set(state_machine->properties,&message->header,message->pool); - return verifier_request_dispatch(state_machine,message); -} - -static apt_bool_t verifier_response_set_params(mrcp_verifier_state_machine_t *state_machine, mrcp_message_t *message) -{ - return verifier_response_dispatch(state_machine,message); -} - -static apt_bool_t verifier_request_get_params(mrcp_verifier_state_machine_t *state_machine, mrcp_message_t *message) -{ - return verifier_request_dispatch(state_machine,message); -} - -static apt_bool_t verifier_response_get_params(mrcp_verifier_state_machine_t *state_machine, mrcp_message_t *message) -{ - mrcp_header_fields_get(&message->header,state_machine->properties,&state_machine->active_request->header,message->pool); - return verifier_response_dispatch(state_machine,message); -} - -static apt_bool_t verifier_request_start_session(mrcp_verifier_state_machine_t *state_machine, mrcp_message_t *message) -{ - if(state_machine->state == VERIFIER_STATE_VERIFYING) { - mrcp_message_t *response_message = mrcp_response_create(message,message->pool); - response_message->start_line.status_code = MRCP_STATUS_CODE_METHOD_NOT_VALID; - return verifier_response_dispatch(state_machine,response_message); - } - - return verifier_request_dispatch(state_machine,message); -} - -static apt_bool_t verifier_response_start_session(mrcp_verifier_state_machine_t *state_machine, mrcp_message_t *message) -{ - verifier_state_change(state_machine,VERIFIER_STATE_OPENED,message); - - return verifier_response_dispatch(state_machine,message); -} - -static apt_bool_t verifier_request_end_session(mrcp_verifier_state_machine_t *state_machine, mrcp_message_t *message) -{ - if(state_machine->state == VERIFIER_STATE_IDLE) { - mrcp_message_t *response_message = mrcp_response_create(message,message->pool); - response_message->start_line.status_code = MRCP_STATUS_CODE_METHOD_NOT_VALID; - return verifier_response_dispatch(state_machine,response_message); - } - - return verifier_request_dispatch(state_machine,message); -} - -static apt_bool_t verifier_response_end_session(mrcp_verifier_state_machine_t *state_machine, mrcp_message_t *message) -{ - verifier_state_change(state_machine,VERIFIER_STATE_IDLE,message); - - return verifier_response_dispatch(state_machine,message); -} - -static apt_bool_t verifier_request_query_voiceprint(mrcp_verifier_state_machine_t *state_machine, mrcp_message_t *message) -{ - if(state_machine->state == VERIFIER_STATE_IDLE) { - mrcp_message_t *response_message = mrcp_response_create(message,message->pool); - response_message->start_line.status_code = MRCP_STATUS_CODE_METHOD_NOT_VALID; - return verifier_response_dispatch(state_machine,response_message); - } - - return verifier_request_dispatch(state_machine,message); -} - -static apt_bool_t verifier_response_query_voiceprint(mrcp_verifier_state_machine_t *state_machine, mrcp_message_t *message) -{ - - return verifier_response_dispatch(state_machine,message); -} - -static apt_bool_t verifier_request_delete_voiceprint(mrcp_verifier_state_machine_t *state_machine, mrcp_message_t *message) -{ - if(state_machine->state == VERIFIER_STATE_IDLE) { - mrcp_message_t *response_message = mrcp_response_create(message,message->pool); - response_message->start_line.status_code = MRCP_STATUS_CODE_METHOD_NOT_VALID; - return verifier_response_dispatch(state_machine,response_message); - } - - return verifier_request_dispatch(state_machine,message); -} - -static apt_bool_t verifier_response_delete_voiceprint(mrcp_verifier_state_machine_t *state_machine, mrcp_message_t *message) -{ - return verifier_response_dispatch(state_machine,message); -} - -static apt_bool_t verifier_request_verify(mrcp_verifier_state_machine_t *state_machine, mrcp_message_t *message) -{ - if(state_machine->state == VERIFIER_STATE_IDLE || state_machine->state == VERIFIER_STATE_VERIFYING) { - mrcp_message_t *response_message = mrcp_response_create(message,message->pool); - response_message->start_line.status_code = MRCP_STATUS_CODE_METHOD_NOT_VALID; - return verifier_response_dispatch(state_machine,response_message); - } - - state_machine->verify = message; - return verifier_request_dispatch(state_machine,message); -} - -static apt_bool_t verifier_response_verify(mrcp_verifier_state_machine_t *state_machine, mrcp_message_t *message) -{ - verifier_state_change(state_machine,VERIFIER_STATE_VERIFYING,message); - - return verifier_response_dispatch(state_machine,message); -} - -static apt_bool_t verifier_request_verify_from_buffer(mrcp_verifier_state_machine_t *state_machine, mrcp_message_t *message) -{ - if(state_machine->state == VERIFIER_STATE_IDLE || state_machine->state == VERIFIER_STATE_VERIFYING) { - mrcp_message_t *response_message = mrcp_response_create(message,message->pool); - response_message->start_line.status_code = MRCP_STATUS_CODE_METHOD_NOT_VALID; - return verifier_response_dispatch(state_machine,response_message); - } - - state_machine->verify = message; - return verifier_request_dispatch(state_machine,message); -} - -static apt_bool_t verifier_response_verify_from_buffer(mrcp_verifier_state_machine_t *state_machine, mrcp_message_t *message) -{ - verifier_state_change(state_machine,VERIFIER_STATE_VERIFYING,message); - - return verifier_response_dispatch(state_machine,message); -} - -static apt_bool_t verifier_request_verify_rollback(mrcp_verifier_state_machine_t *state_machine, mrcp_message_t *message) -{ - return verifier_request_dispatch(state_machine,message); -} - -static apt_bool_t verifier_response_verify_rollback(mrcp_verifier_state_machine_t *state_machine, mrcp_message_t *message) -{ - return verifier_response_dispatch(state_machine,message); -} - -static apt_bool_t verifier_request_stop(mrcp_verifier_state_machine_t *state_machine, mrcp_message_t *message) -{ - if(state_machine->state == VERIFIER_STATE_IDLE) { - mrcp_message_t *response_message = mrcp_response_create(message,message->pool); - response_message->start_line.status_code = MRCP_STATUS_CODE_METHOD_NOT_VALID; - return verifier_response_dispatch(state_machine,response_message); - } - - if(state_machine->state == VERIFIER_STATE_OPENED) { - /* no in-progress VERIFY request, sending immediate response */ - mrcp_message_t *response_message = mrcp_response_create(message,message->pool); - return verifier_response_dispatch(state_machine,response_message); - } - - return verifier_request_dispatch(state_machine,message); -} - -static apt_bool_t verifier_response_stop(mrcp_verifier_state_machine_t *state_machine, mrcp_message_t *message) -{ - mrcp_generic_header_t *generic_header = mrcp_generic_header_prepare(message); - /* append active id list */ - active_request_id_list_append(generic_header,state_machine->verify->start_line.request_id); - mrcp_generic_header_property_add(message,GENERIC_HEADER_ACTIVE_REQUEST_ID_LIST); - verifier_state_change(state_machine,VERIFIER_STATE_OPENED,message); - return verifier_response_dispatch(state_machine,message); -} - -static apt_bool_t verifier_request_clear_buffer(mrcp_verifier_state_machine_t *state_machine, mrcp_message_t *message) -{ - return verifier_request_dispatch(state_machine,message); -} - -static apt_bool_t verifier_response_clear_buffer(mrcp_verifier_state_machine_t *state_machine, mrcp_message_t *message) -{ - return verifier_response_dispatch(state_machine,message); -} - -static apt_bool_t verifier_request_start_input_timers(mrcp_verifier_state_machine_t *state_machine, mrcp_message_t *message) -{ - if(state_machine->state == VERIFIER_STATE_IDLE || state_machine->state == VERIFIER_STATE_VERIFYING) { - mrcp_message_t *response_message = mrcp_response_create(message,message->pool); - response_message->start_line.status_code = MRCP_STATUS_CODE_METHOD_NOT_VALID; - return verifier_response_dispatch(state_machine,response_message); - } - - return verifier_request_dispatch(state_machine,message); -} - -static apt_bool_t verifier_response_start_input_timers(mrcp_verifier_state_machine_t *state_machine, mrcp_message_t *message) -{ - return verifier_response_dispatch(state_machine,message); -} - -static apt_bool_t verifier_request_get_intermidiate_result(mrcp_verifier_state_machine_t *state_machine, mrcp_message_t *message) -{ - if(state_machine->state != VERIFIER_STATE_VERIFYING) { - mrcp_message_t *response_message = mrcp_response_create(message,message->pool); - response_message->start_line.status_code = MRCP_STATUS_CODE_METHOD_NOT_VALID; - return verifier_response_dispatch(state_machine,response_message); - } - return verifier_request_dispatch(state_machine,message); -} - -static apt_bool_t verifier_response_get_intermidiate_result(mrcp_verifier_state_machine_t *state_machine, mrcp_message_t *message) -{ - return verifier_response_dispatch(state_machine,message); -} - - -static apt_bool_t verifier_event_start_of_input(mrcp_verifier_state_machine_t *state_machine, mrcp_message_t *message) -{ - if(!state_machine->verify) { - /* unexpected event, no in-progress verify request */ - return FALSE; - } - - if(state_machine->verify->start_line.request_id != message->start_line.request_id) { - /* unexpected event */ - return FALSE; - } - - message->start_line.request_state = MRCP_REQUEST_STATE_INPROGRESS; - return verifier_event_dispatch(state_machine,message); -} - -static apt_bool_t verifier_event_verification_complete(mrcp_verifier_state_machine_t *state_machine, mrcp_message_t *message) -{ - if(!state_machine->verify) { - apt_log(APT_LOG_MARK,APT_PRIO_INFO,"Unexpected VERIFICATION-COMPLETE Event "APT_SIDRES_FMT" [%"MRCP_REQUEST_ID_FMT"]", - MRCP_MESSAGE_SIDRES(message), - message->start_line.request_id); - return FALSE; - } - - if(state_machine->verify->start_line.request_id != message->start_line.request_id) { - apt_log(APT_LOG_MARK,APT_PRIO_INFO,"Unexpected VERIFICATION-COMPLETE Event "APT_SIDRES_FMT" [%"MRCP_REQUEST_ID_FMT"]", - MRCP_MESSAGE_SIDRES(message), - message->start_line.request_id); - return FALSE; - } - - if(state_machine->active_request && state_machine->active_request->start_line.method_id == VERIFIER_STOP) { - apt_log(APT_LOG_MARK,APT_PRIO_INFO,"Ignore VERIFICATION-COMPLETE Event "APT_SIDRES_FMT" [%"MRCP_REQUEST_ID_FMT"]: waiting for STOP response", - MRCP_MESSAGE_SIDRES(message), - message->start_line.request_id); - return FALSE; - } - - if(mrcp_resource_header_property_check(message,VERIFIER_HEADER_COMPLETION_CAUSE) != TRUE) { - mrcp_verifier_header_t *verifier_header = mrcp_resource_header_prepare(message); - verifier_header->completion_cause = VERIFIER_COMPLETION_CAUSE_SUCCESS; - mrcp_resource_header_property_add(message,VERIFIER_HEADER_COMPLETION_CAUSE); - } - verifier_state_change(state_machine,VERIFIER_STATE_OPENED,message); - return verifier_event_dispatch(state_machine,message); -} - -static verifier_method_f verifier_request_method_array[VERIFIER_METHOD_COUNT] = { - verifier_request_set_params, - verifier_request_get_params, - verifier_request_start_session, - verifier_request_end_session, - verifier_request_query_voiceprint, - verifier_request_delete_voiceprint, - verifier_request_verify, - verifier_request_verify_from_buffer, - verifier_request_verify_rollback, - verifier_request_stop, - verifier_request_clear_buffer, - verifier_request_start_input_timers, - verifier_request_get_intermidiate_result -}; - -static verifier_method_f verifier_response_method_array[VERIFIER_METHOD_COUNT] = { - verifier_response_set_params, - verifier_response_get_params, - verifier_response_start_session, - verifier_response_end_session, - verifier_response_query_voiceprint, - verifier_response_delete_voiceprint, - verifier_response_verify, - verifier_response_verify_from_buffer, - verifier_response_verify_rollback, - verifier_response_stop, - verifier_response_clear_buffer, - verifier_response_start_input_timers, - verifier_response_get_intermidiate_result -}; - -static verifier_method_f verifier_event_method_array[VERIFIER_EVENT_COUNT] = { - verifier_event_start_of_input, - verifier_event_verification_complete -}; - -/** Update state according to received incoming request from MRCP client */ -static apt_bool_t verifier_request_state_update(mrcp_verifier_state_machine_t *state_machine, mrcp_message_t *message) -{ - verifier_method_f method; - if(message->start_line.method_id >= VERIFIER_METHOD_COUNT) { - return FALSE; - } - - apt_log(APT_LOG_MARK,APT_PRIO_INFO,"Process %s Request "APT_SIDRES_FMT" [%"MRCP_REQUEST_ID_FMT"]", - message->start_line.method_name.buf, - MRCP_MESSAGE_SIDRES(message), - message->start_line.request_id); - method = verifier_request_method_array[message->start_line.method_id]; - if(method) { - return method(state_machine,message); - } - return verifier_request_dispatch(state_machine,message); -} - -/** Update state according to received outgoing response from verification engine */ -static apt_bool_t verifier_response_state_update(mrcp_verifier_state_machine_t *state_machine, mrcp_message_t *message) -{ - verifier_method_f method; - if(!state_machine->active_request) { - /* unexpected response, no active request waiting for response */ - return FALSE; - } - if(state_machine->active_request->start_line.request_id != message->start_line.request_id) { - /* unexpected response, request id doesn't match */ - return FALSE; - } - - if(message->start_line.method_id >= VERIFIER_METHOD_COUNT) { - return FALSE; - } - - apt_log(APT_LOG_MARK,APT_PRIO_INFO,"Process %s Response "APT_SIDRES_FMT" [%"MRCP_REQUEST_ID_FMT"]", - message->start_line.method_name.buf, - MRCP_MESSAGE_SIDRES(message), - message->start_line.request_id); - method = verifier_response_method_array[message->start_line.method_id]; - if(method) { - return method(state_machine,message); - } - return verifier_response_dispatch(state_machine,message); -} - -/** Update state according to received outgoing event from verification engine */ -static apt_bool_t verifier_event_state_update(mrcp_verifier_state_machine_t *state_machine, mrcp_message_t *message) -{ - verifier_method_f method; - if(message->start_line.method_id >= VERIFIER_EVENT_COUNT) { - return FALSE; - } - - apt_log(APT_LOG_MARK,APT_PRIO_INFO,"Process %s Event "APT_SIDRES_FMT" [%"MRCP_REQUEST_ID_FMT"]", - message->start_line.method_name.buf, - MRCP_MESSAGE_SIDRES(message), - message->start_line.request_id); - method = verifier_event_method_array[message->start_line.method_id]; - if(method) { - return method(state_machine,message); - } - return verifier_event_dispatch(state_machine,message); -} - -/** Update state according to request received from MRCP client or response/event received from verification engine */ -static apt_bool_t verifier_state_update(mrcp_state_machine_t *base, mrcp_message_t *message) -{ - mrcp_verifier_state_machine_t *state_machine = (mrcp_verifier_state_machine_t*)base; - apt_bool_t status = TRUE; - switch(message->start_line.message_type) { - case MRCP_MESSAGE_TYPE_REQUEST: - status = verifier_request_state_update(state_machine,message); - break; - case MRCP_MESSAGE_TYPE_RESPONSE: - status = verifier_response_state_update(state_machine,message); - break; - case MRCP_MESSAGE_TYPE_EVENT: - status = verifier_event_state_update(state_machine,message); - break; - default: - status = FALSE; - break; - } - return status; -} - -/** Deactivate state machine */ -static apt_bool_t verifier_state_deactivate(mrcp_state_machine_t *base) -{ - mrcp_verifier_state_machine_t *state_machine = (mrcp_verifier_state_machine_t*)base; - mrcp_message_t *message; - mrcp_message_t *source; - if(state_machine->state != VERIFIER_STATE_VERIFYING) { - /* no in-progress VERIFY request to deactivate */ - return FALSE; - } - source = state_machine->verify; - if(!source) { - return FALSE; - } - - /* create internal STOP request */ - message = mrcp_request_create( - source->resource, - source->start_line.version, - VERIFIER_STOP, - source->pool); - message->channel_id = source->channel_id; - message->start_line.request_id = source->start_line.request_id + 1; - apt_string_set(&message->start_line.method_name,"DEACTIVATE"); /* informative only */ - message->header = source->header; - apt_log(APT_LOG_MARK,APT_PRIO_INFO,"Create and Process STOP Request "APT_SIDRES_FMT" [%"MRCP_REQUEST_ID_FMT"]", - MRCP_MESSAGE_SIDRES(message), - message->start_line.request_id); - return verifier_request_dispatch(state_machine,message); -} - -/** Create MRCP verification state machine */ -mrcp_state_machine_t* mrcp_verifier_state_machine_create(void *obj, mrcp_version_e version, apr_pool_t *pool) -{ - mrcp_verifier_state_machine_t *state_machine = apr_palloc(pool,sizeof(mrcp_verifier_state_machine_t)); - mrcp_state_machine_init(&state_machine->base,obj); - state_machine->base.update = verifier_state_update; - state_machine->base.deactivate = verifier_state_deactivate; - state_machine->state = VERIFIER_STATE_IDLE; - state_machine->active_request = NULL; - state_machine->verify = NULL; - state_machine->properties = mrcp_message_header_create( - mrcp_generic_header_vtable_get(version), - mrcp_verifier_header_vtable_get(version), - pool); - return &state_machine->base; -} diff --git a/libs/unimrcp/libs/mrcp-server/Makefile.am b/libs/unimrcp/libs/mrcp-server/Makefile.am deleted file mode 100644 index 0ebf90cab06..00000000000 --- a/libs/unimrcp/libs/mrcp-server/Makefile.am +++ /dev/null @@ -1,22 +0,0 @@ -MAINTAINERCLEANFILES = Makefile.in - -AM_CPPFLAGS = -I$(top_srcdir)/libs/mrcp-server/include \ - -I$(top_srcdir)/libs/mrcp-engine/include \ - -I$(top_srcdir)/libs/mrcp-signaling/include \ - -I$(top_srcdir)/libs/mrcpv2-transport/include \ - -I$(top_srcdir)/libs/mrcp/include \ - -I$(top_srcdir)/libs/mrcp/message/include \ - -I$(top_srcdir)/libs/mrcp/control/include \ - -I$(top_srcdir)/libs/mrcp/resources/include \ - -I$(top_srcdir)/libs/mpf/include \ - -I$(top_srcdir)/libs/apr-toolkit/include \ - $(UNIMRCP_APR_INCLUDES) - -noinst_LTLIBRARIES = libmrcpserver.la - -include_HEADERS = include/mrcp_server_types.h \ - include/mrcp_server.h \ - include/mrcp_server_session.h - -libmrcpserver_la_SOURCES = src/mrcp_server.c \ - src/mrcp_server_session.c diff --git a/libs/unimrcp/libs/mrcp-server/include/mrcp_server.h b/libs/unimrcp/libs/mrcp-server/include/mrcp_server.h deleted file mode 100644 index a51186dd888..00000000000 --- a/libs/unimrcp/libs/mrcp-server/include/mrcp_server.h +++ /dev/null @@ -1,226 +0,0 @@ -/* - * Copyright 2008-2014 Arsen Chaloyan - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - * - * $Id: mrcp_server.h 2251 2014-11-21 02:36:44Z achaloyan@gmail.com $ - */ - -#ifndef MRCP_SERVER_H -#define MRCP_SERVER_H - -/** - * @file mrcp_server.h - * @brief MRCP Server - */ - -#include "mrcp_server_types.h" -#include "mrcp_engine_iface.h" -#include "mpf_rtp_descriptor.h" -#include "apt_task.h" - -APT_BEGIN_EXTERN_C - -/** - * Create MRCP server instance. - * @return the created server instance - */ -MRCP_DECLARE(mrcp_server_t*) mrcp_server_create(apt_dir_layout_t *dir_layout); - -/** - * Start message processing loop. - * @param server the MRCP server to start - * @return the created server instance - */ -MRCP_DECLARE(apt_bool_t) mrcp_server_start(mrcp_server_t *server); - -/** - * Shutdown message processing loop. - * @param server the MRCP server to shutdown - */ -MRCP_DECLARE(apt_bool_t) mrcp_server_shutdown(mrcp_server_t *server); - -/** - * Destroy MRCP server. - * @param server the MRCP server to destroy - */ -MRCP_DECLARE(apt_bool_t) mrcp_server_destroy(mrcp_server_t *server); - - -/** - * Register MRCP resource factory. - * @param server the MRCP server to set resource factory for - * @param resource_factory the resource factory to set - */ -MRCP_DECLARE(apt_bool_t) mrcp_server_resource_factory_register( - mrcp_server_t *server, - mrcp_resource_factory_t *resource_factory); - -/** - * Register MRCP engine. - * @param server the MRCP server to set engine for - * @param engine the engine to set - */ -MRCP_DECLARE(apt_bool_t) mrcp_server_engine_register( - mrcp_server_t *server, - mrcp_engine_t *engine); - -/** - * Register codec manager. - * @param server the MRCP server to set codec manager for - * @param codec_manager the codec manager to set - */ -MRCP_DECLARE(apt_bool_t) mrcp_server_codec_manager_register(mrcp_server_t *server, mpf_codec_manager_t *codec_manager); - -/** - * Get registered codec manager. - * @param server the MRCP server to get codec manager from - */ -MRCP_DECLARE(const mpf_codec_manager_t*) mrcp_server_codec_manager_get(const mrcp_server_t *server); - -/** - * Register media engine. - * @param server the MRCP server to set media engine for - * @param media_engine the media engine to set - */ -MRCP_DECLARE(apt_bool_t) mrcp_server_media_engine_register( - mrcp_server_t *server, - mpf_engine_t *media_engine); - -/** - * Register RTP termination factory. - * @param server the MRCP server to set termination factory for - * @param rtp_termination_factory the termination factory - * @param name the name of the factory - */ -MRCP_DECLARE(apt_bool_t) mrcp_server_rtp_factory_register( - mrcp_server_t *server, - mpf_termination_factory_t *rtp_termination_factory, - const char *name); - -/** - * Register RTP settings. - * @param server the MRCP server to set RTP settings for - * @param rtp_settings the settings to set - * @param name the name of the settings - */ -MRCP_DECLARE(apt_bool_t) mrcp_server_rtp_settings_register( - mrcp_server_t *server, - mpf_rtp_settings_t *rtp_settings, - const char *name); - -/** - * Register MRCP signaling agent. - * @param server the MRCP server to set signaling agent for - * @param signaling_agent the signaling agent to set - */ -MRCP_DECLARE(apt_bool_t) mrcp_server_signaling_agent_register( - mrcp_server_t *server, - mrcp_sig_agent_t *signaling_agent); - -/** - * Register MRCP connection agent (MRCPv2 only). - * @param server the MRCP server to set connection agent for - * @param connection_agent the connection agent to set - */ -MRCP_DECLARE(apt_bool_t) mrcp_server_connection_agent_register( - mrcp_server_t *server, - mrcp_connection_agent_t *connection_agent); - -/** Create MRCP profile */ -MRCP_DECLARE(mrcp_server_profile_t*) mrcp_server_profile_create( - const char *id, - mrcp_version_e mrcp_version, - mrcp_resource_factory_t *resource_factory, - mrcp_sig_agent_t *signaling_agent, - mrcp_connection_agent_t *connection_agent, - mpf_engine_t *media_engine, - mpf_termination_factory_t *rtp_factory, - mpf_rtp_settings_t *rtp_settings, - apr_pool_t *pool); - -/** - * Register MRCP profile. - * @param server the MRCP server to set profile for - * @param profile the profile to set - * @param plugin_map the map of engines (plugins) - */ -MRCP_DECLARE(apt_bool_t) mrcp_server_profile_register( - mrcp_server_t *server, - mrcp_server_profile_t *profile, - apr_table_t *plugin_map); - -/** - * Load MRCP engine as a plugin. - * @param server the MRCP server to use - * @param id the identifier of the plugin - * @param path the path to the plugin to load - * @param config the config of the engine - */ -MRCP_DECLARE(mrcp_engine_t*) mrcp_server_engine_load( - mrcp_server_t *server, - const char *id, - const char *path, - mrcp_engine_config_t *config); - -/** - * Get memory pool. - * @param server the MRCP server to get memory pool from - */ -MRCP_DECLARE(apr_pool_t*) mrcp_server_memory_pool_get(const mrcp_server_t *server); - -/** - * Get media engine by name. - * @param server the MRCP server to get media engine from - * @param name the name of the media engine to lookup - */ -MRCP_DECLARE(mpf_engine_t*) mrcp_server_media_engine_get(const mrcp_server_t *server, const char *name); - -/** - * Get RTP termination factory by name. - * @param server the MRCP server to get from - * @param name the name to lookup - */ -MRCP_DECLARE(mpf_termination_factory_t*) mrcp_server_rtp_factory_get(const mrcp_server_t *server, const char *name); - -/** - * Get RTP settings by name - * @param server the MRCP server to get from - * @param name the name to lookup - */ -MRCP_DECLARE(mpf_rtp_settings_t*) mrcp_server_rtp_settings_get(const mrcp_server_t *server, const char *name); - -/** - * Get signaling agent by name. - * @param server the MRCP server to get from - * @param name the name to lookup - */ -MRCP_DECLARE(mrcp_sig_agent_t*) mrcp_server_signaling_agent_get(const mrcp_server_t *server, const char *name); - -/** - * Get connection agent by name. - * @param server the MRCP server to get from - * @param name the name to lookup - */ -MRCP_DECLARE(mrcp_connection_agent_t*) mrcp_server_connection_agent_get(const mrcp_server_t *server, const char *name); - -/** - * Get profile by name. - * @param server the MRCP client to get from - * @param name the name to lookup - */ -MRCP_DECLARE(mrcp_server_profile_t*) mrcp_server_profile_get(const mrcp_server_t *server, const char *name); - -APT_END_EXTERN_C - -#endif /* MRCP_SERVER_H */ diff --git a/libs/unimrcp/libs/mrcp-server/include/mrcp_server_session.h b/libs/unimrcp/libs/mrcp-server/include/mrcp_server_session.h deleted file mode 100644 index af456a021ab..00000000000 --- a/libs/unimrcp/libs/mrcp-server/include/mrcp_server_session.h +++ /dev/null @@ -1,163 +0,0 @@ -/* - * Copyright 2008-2014 Arsen Chaloyan - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - * - * $Id: mrcp_server_session.h 2251 2014-11-21 02:36:44Z achaloyan@gmail.com $ - */ - -#ifndef MRCP_SERVER_SESSION_H -#define MRCP_SERVER_SESSION_H - -/** - * @file mrcp_server_session.h - * @brief MRCP Server Session - */ - -#include -#include "mrcp_session.h" -#include "mpf_engine.h" -#include "apt_task.h" -#include "apt_obj_list.h" - - -APT_BEGIN_EXTERN_C - -/** Opaque MRCP channel declaration */ -typedef struct mrcp_channel_t mrcp_channel_t; -/** MRCP server session declaration */ -typedef struct mrcp_server_session_t mrcp_server_session_t; -/** MRCP signaling message declaration */ -typedef struct mrcp_signaling_message_t mrcp_signaling_message_t; - -/** Enumeration of signaling task messages */ -typedef enum { - SIGNALING_MESSAGE_OFFER, - SIGNALING_MESSAGE_CONTROL, - SIGNALING_MESSAGE_TERMINATE, -} mrcp_signaling_message_type_e; - -/** MRCP signaling message */ -struct mrcp_signaling_message_t { - /** Signaling message type */ - mrcp_signaling_message_type_e type; - - /** Session */ - mrcp_server_session_t *session; - /** Descriptor */ - mrcp_session_descriptor_t *descriptor; - - /** Channel */ - mrcp_channel_t *channel; - /** MRCP message */ - mrcp_message_t *message; -}; - -/** Server session states */ -typedef enum { - SESSION_STATE_NONE, /**< initial state */ - SESSION_STATE_GENERATING_ANSWER, /**< received offer, generating answer now */ - SESSION_STATE_INITIALIZING, /**< answer is ready, finally initializing channels now */ - SESSION_STATE_DEACTIVATING, /**< received session termination request, deinitializing channels now */ - SESSION_STATE_TERMINATING /**< finally terminating session */ -} mrcp_server_session_state_e; - - -/** MRCP server session */ -struct mrcp_server_session_t { - /** Session base */ - mrcp_session_t base; - /** MRCP server */ - mrcp_server_t *server; - /** MRCP profile */ - mrcp_server_profile_t *profile; - - /** Media context */ - mpf_context_t *context; - - /** Media termination array */ - apr_array_header_t *terminations; - /** MRCP control channel array */ - apr_array_header_t *channels; - - /** In-progress signaling request */ - mrcp_signaling_message_t *active_request; - /** Signaling request queue */ - apt_obj_list_t *request_queue; - - /** In-progress offer */ - mrcp_session_descriptor_t *offer; - /** In-progres answer */ - mrcp_session_descriptor_t *answer; - - /** MPF task message, which construction is in progress */ - mpf_task_msg_t *mpf_task_msg; - - /** Session state */ - mrcp_server_session_state_e state; - /** Number of in-progress sub requests */ - apr_size_t subrequest_count; -}; - -/** MRCP server profile */ -struct mrcp_server_profile_t { - /** Identifier of the profile */ - const char *id; - /** MRCP version */ - mrcp_version_e mrcp_version; - /** Table of engines (mrcp_engine_t*) */ - apr_hash_t *engine_table; - /** MRCP resource factory */ - mrcp_resource_factory_t *resource_factory; - /** Media processing engine */ - mpf_engine_t *media_engine; - /** RTP termination factory */ - mpf_termination_factory_t *rtp_termination_factory; - /** RTP settings */ - mpf_rtp_settings_t *rtp_settings; - /** Signaling agent */ - mrcp_sig_agent_t *signaling_agent; - /** Connection agent */ - mrcp_connection_agent_t *connection_agent; -}; - -/** Create server session */ -mrcp_server_session_t* mrcp_server_session_create(void); - -/** Process signaling message */ -apt_bool_t mrcp_server_signaling_message_process(mrcp_signaling_message_t *signaling_message); -/** Process MPF message */ -apt_bool_t mrcp_server_mpf_message_process(mpf_message_container_t *mpf_message_container); - -/** Process channel modify event */ -apt_bool_t mrcp_server_on_channel_modify(mrcp_channel_t *channel, mrcp_control_descriptor_t *answer, apt_bool_t status); -/** Process channel remove event */ -apt_bool_t mrcp_server_on_channel_remove(mrcp_channel_t *channel, apt_bool_t status); -/** Process channel message receive */ -apt_bool_t mrcp_server_on_channel_message(mrcp_channel_t *channel, mrcp_message_t *message); -/** Process connection disconnect event */ -apt_bool_t mrcp_server_on_disconnect(mrcp_channel_t *channel); - -/** Process channel open event */ -apt_bool_t mrcp_server_on_engine_channel_open(mrcp_channel_t *channel, apt_bool_t status); -/** Process channel close event */ -apt_bool_t mrcp_server_on_engine_channel_close(mrcp_channel_t *channel); -/** Process message receive event */ -apt_bool_t mrcp_server_on_engine_channel_message(mrcp_channel_t *channel, mrcp_message_t *message); - -/** Get session by channel */ -mrcp_session_t* mrcp_server_channel_session_get(mrcp_channel_t *channel); - -APT_END_EXTERN_C - -#endif /* MRCP_SERVER_SESSION_H */ diff --git a/libs/unimrcp/libs/mrcp-server/include/mrcp_server_types.h b/libs/unimrcp/libs/mrcp-server/include/mrcp_server_types.h deleted file mode 100644 index 99c0b615ae4..00000000000 --- a/libs/unimrcp/libs/mrcp-server/include/mrcp_server_types.h +++ /dev/null @@ -1,42 +0,0 @@ -/* - * Copyright 2008-2014 Arsen Chaloyan - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - * - * $Id: mrcp_server_types.h 2251 2014-11-21 02:36:44Z achaloyan@gmail.com $ - */ - -#ifndef MRCP_SERVER_TYPES_H -#define MRCP_SERVER_TYPES_H - -/** - * @file mrcp_server_types.h - * @brief MRCP Server Types - */ - -#include "mrcp_sig_types.h" -#include "mrcp_connection_types.h" -#include "mpf_types.h" - -APT_BEGIN_EXTERN_C - -/** Opaque MRCP server declaration */ -typedef struct mrcp_server_t mrcp_server_t; - -/** Opaque MRCP server profile declaration */ -typedef struct mrcp_server_profile_t mrcp_server_profile_t; - - -APT_END_EXTERN_C - -#endif /* MRCP_SERVER_TYPES_H */ diff --git a/libs/unimrcp/libs/mrcp-server/mrcpserver.vcproj b/libs/unimrcp/libs/mrcp-server/mrcpserver.vcproj deleted file mode 100644 index da47c522b9f..00000000000 --- a/libs/unimrcp/libs/mrcp-server/mrcpserver.vcproj +++ /dev/null @@ -1,272 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/libs/unimrcp/libs/mrcp-server/mrcpserver.vcxproj b/libs/unimrcp/libs/mrcp-server/mrcpserver.vcxproj deleted file mode 100644 index 1d3fff21bc3..00000000000 --- a/libs/unimrcp/libs/mrcp-server/mrcpserver.vcxproj +++ /dev/null @@ -1,127 +0,0 @@ - - - - - Debug - Win32 - - - Debug - x64 - - - Release - Win32 - - - Release - x64 - - - - {18B1F35A-10F8-4287-9B37-2D10501B0B38} - mrcpserver - Win32Proj - - - - StaticLibrary - Unicode - true - - - StaticLibrary - Unicode - - - StaticLibrary - Unicode - true - - - StaticLibrary - Unicode - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - <_ProjectFileVersion>10.0.30319.1 - AllRules.ruleset - - - AllRules.ruleset - - - AllRules.ruleset - - - AllRules.ruleset - - - - - - X64 - - - ProgramDatabase - - - - - X64 - - - - - - - - - - - - - - {843425be-9a9a-44f4-a4e3-4b57d6abd53c} - false - - - {12a49562-bab9-43a3-a21d-15b60bbb4c31} - false - - - {a9edac04-6a5f-4ba7-bc0d-cce7b255b6ea} - false - - - - - - \ No newline at end of file diff --git a/libs/unimrcp/libs/mrcp-server/mrcpserver.vcxproj.filters b/libs/unimrcp/libs/mrcp-server/mrcpserver.vcxproj.filters deleted file mode 100644 index 866a6dfbbcb..00000000000 --- a/libs/unimrcp/libs/mrcp-server/mrcpserver.vcxproj.filters +++ /dev/null @@ -1,32 +0,0 @@ - - - - - {93995380-89BD-4b04-88EB-625FBE52EBFB} - h;hpp;hxx;hm;inl;inc;xsd - - - {4557fd27-79b0-442d-809b-82996c7da820} - cpp;c;cc;cxx;def;odl;idl;hpj;bat;asm;asmx - - - - - include - - - include - - - include - - - - - src - - - src - - - \ No newline at end of file diff --git a/libs/unimrcp/libs/mrcp-server/src/mrcp_server.c b/libs/unimrcp/libs/mrcp-server/src/mrcp_server.c deleted file mode 100644 index d37528917e3..00000000000 --- a/libs/unimrcp/libs/mrcp-server/src/mrcp_server.c +++ /dev/null @@ -1,999 +0,0 @@ -/* - * Copyright 2008-2014 Arsen Chaloyan - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - * - * $Id: mrcp_server.c 2251 2014-11-21 02:36:44Z achaloyan@gmail.com $ - */ - -#include "mrcp_server.h" -#include "mrcp_server_session.h" -#include "mrcp_message.h" -#include "mrcp_resource_factory.h" -#include "mrcp_resource.h" -#include "mrcp_engine_factory.h" -#include "mrcp_engine_loader.h" -#include "mrcp_sig_agent.h" -#include "mrcp_server_connection.h" -#include "mpf_termination_factory.h" -#include "apt_pool.h" -#include "apt_consumer_task.h" -#include "apt_obj_list.h" -#include "apt_log.h" - -#define SERVER_TASK_NAME "MRCP Server" - -/** MRCP server */ -struct mrcp_server_t { - /** Main message processing task */ - apt_consumer_task_t *task; - - /** MRCP resource factory */ - mrcp_resource_factory_t *resource_factory; - /** MRCP engine factory */ - mrcp_engine_factory_t *engine_factory; - /** Loader of plugins for MRCP engines */ - mrcp_engine_loader_t *engine_loader; - - /** Codec manager */ - mpf_codec_manager_t *codec_manager; - /** Table of media processing engines (mpf_engine_t*) */ - apr_hash_t *media_engine_table; - /** Table of RTP termination factories (mpf_termination_factory_t*) */ - apr_hash_t *rtp_factory_table; - /** Table of signaling agents (mrcp_sig_agent_t*) */ - apr_hash_t *sig_agent_table; - /** Table of connection agents (mrcp_connection_agent_t*) */ - apr_hash_t *cnt_agent_table; - /** Table of RTP settings (mpf_rtp_settings_t*) */ - apr_hash_t *rtp_settings_table; - /** Table of profiles (mrcp_server_profile_t*) */ - apr_hash_t *profile_table; - - /** Table of sessions */ - apr_hash_t *session_table; - - /** Connection task message pool */ - apt_task_msg_pool_t *connection_msg_pool; - /** Engine task message pool */ - apt_task_msg_pool_t *engine_msg_pool; - - /** Dir layout structure */ - apt_dir_layout_t *dir_layout; - /** Time server started at */ - apr_time_t start_time; - /** Memory pool */ - apr_pool_t *pool; -}; - - -typedef enum { - MRCP_SERVER_SIGNALING_TASK_MSG = TASK_MSG_USER, - MRCP_SERVER_CONNECTION_TASK_MSG, - MRCP_SERVER_ENGINE_TASK_MSG, - MRCP_SERVER_MEDIA_TASK_MSG -} mrcp_server_task_msg_type_e; - - -static apt_bool_t mrcp_server_offer_signal(mrcp_session_t *session, mrcp_session_descriptor_t *descriptor); -static apt_bool_t mrcp_server_terminate_signal(mrcp_session_t *session); -static apt_bool_t mrcp_server_control_signal(mrcp_session_t *session, mrcp_message_t *message); - -static const mrcp_session_request_vtable_t session_request_vtable = { - mrcp_server_offer_signal, - mrcp_server_terminate_signal, - mrcp_server_control_signal, - NULL /* mrcp_server_discover_signal */ -}; - - -/* Connection agent interface */ -typedef enum { - CONNECTION_AGENT_TASK_MSG_ADD_CHANNEL, - CONNECTION_AGENT_TASK_MSG_MODIFY_CHANNEL, - CONNECTION_AGENT_TASK_MSG_REMOVE_CHANNEL, - CONNECTION_AGENT_TASK_MSG_RECEIVE_MESSAGE, - CONNECTION_AGENT_TASK_MSG_DISCONNECT -} connection_agent_task_msg_type_e; - -typedef struct connection_agent_task_msg_data_t connection_agent_task_msg_data_t; -struct connection_agent_task_msg_data_t { - mrcp_channel_t *channel; - mrcp_control_descriptor_t *descriptor; - mrcp_message_t *message; - apt_bool_t status; -}; - -static apt_bool_t mrcp_server_channel_add_signal(mrcp_control_channel_t *channel, mrcp_control_descriptor_t *descriptor, apt_bool_t status); -static apt_bool_t mrcp_server_channel_modify_signal(mrcp_control_channel_t *channel, mrcp_control_descriptor_t *descriptor, apt_bool_t status); -static apt_bool_t mrcp_server_channel_remove_signal(mrcp_control_channel_t *channel, apt_bool_t status); -static apt_bool_t mrcp_server_message_signal(mrcp_control_channel_t *channel, mrcp_message_t *message); -static apt_bool_t mrcp_server_disconnect_signal(mrcp_control_channel_t *channel); - -static const mrcp_connection_event_vtable_t connection_method_vtable = { - mrcp_server_channel_add_signal, - mrcp_server_channel_modify_signal, - mrcp_server_channel_remove_signal, - mrcp_server_message_signal, - mrcp_server_disconnect_signal -}; - - -/* MRCP engine interface */ -typedef enum { - ENGINE_TASK_MSG_OPEN_ENGINE, - ENGINE_TASK_MSG_CLOSE_ENGINE, - ENGINE_TASK_MSG_OPEN_CHANNEL, - ENGINE_TASK_MSG_CLOSE_CHANNEL, - ENGINE_TASK_MSG_MESSAGE -} engine_task_msg_type_e; - -typedef struct engine_task_msg_data_t engine_task_msg_data_t; -struct engine_task_msg_data_t { - mrcp_engine_t *engine; - mrcp_channel_t *channel; - apt_bool_t status; - mrcp_message_t *mrcp_message; -}; - -static apt_bool_t mrcp_server_engine_open_signal(mrcp_engine_t *engine, apt_bool_t status); -static apt_bool_t mrcp_server_engine_close_signal(mrcp_engine_t *engine); - -const mrcp_engine_event_vtable_t engine_vtable = { - mrcp_server_engine_open_signal, - mrcp_server_engine_close_signal, -}; - -static apt_bool_t mrcp_server_channel_open_signal(mrcp_engine_channel_t *channel, apt_bool_t status); -static apt_bool_t mrcp_server_channel_close_signal(mrcp_engine_channel_t *channel); -static apt_bool_t mrcp_server_channel_message_signal(mrcp_engine_channel_t *channel, mrcp_message_t *message); - -const mrcp_engine_channel_event_vtable_t engine_channel_vtable = { - mrcp_server_channel_open_signal, - mrcp_server_channel_close_signal, - mrcp_server_channel_message_signal -}; - -/* Task interface */ -static apt_bool_t mrcp_server_msg_process(apt_task_t *task, apt_task_msg_t *msg); -static apt_bool_t mrcp_server_start_request_process(apt_task_t *task); -static apt_bool_t mrcp_server_terminate_request_process(apt_task_t *task); -static void mrcp_server_on_start_complete(apt_task_t *task); -static void mrcp_server_on_terminate_complete(apt_task_t *task); - -static mrcp_session_t* mrcp_server_sig_agent_session_create(mrcp_sig_agent_t *signaling_agent); - - -/** Create MRCP server instance */ -MRCP_DECLARE(mrcp_server_t*) mrcp_server_create(apt_dir_layout_t *dir_layout) -{ - mrcp_server_t *server; - apr_pool_t *pool; - apt_task_t *task; - apt_task_vtable_t *vtable; - apt_task_msg_pool_t *msg_pool; - - pool = apt_pool_create(); - if(!pool) { - return NULL; - } - - apt_log(APT_LOG_MARK,APT_PRIO_NOTICE,"Create "SERVER_TASK_NAME); - server = apr_palloc(pool,sizeof(mrcp_server_t)); - server->pool = pool; - server->dir_layout = dir_layout; - server->resource_factory = NULL; - server->engine_factory = NULL; - server->engine_loader = NULL; - server->media_engine_table = NULL; - server->rtp_factory_table = NULL; - server->sig_agent_table = NULL; - server->cnt_agent_table = NULL; - server->rtp_settings_table = NULL; - server->profile_table = NULL; - server->session_table = NULL; - server->connection_msg_pool = NULL; - server->engine_msg_pool = NULL; - - msg_pool = apt_task_msg_pool_create_dynamic(0,pool); - - server->task = apt_consumer_task_create(server,msg_pool,pool); - if(!server->task) { - apt_log(APT_LOG_MARK,APT_PRIO_WARNING,"Failed to Create Server Task"); - return NULL; - } - task = apt_consumer_task_base_get(server->task); - apt_task_name_set(task,SERVER_TASK_NAME); - vtable = apt_task_vtable_get(task); - if(vtable) { - vtable->process_msg = mrcp_server_msg_process; - vtable->process_start = mrcp_server_start_request_process; - vtable->process_terminate = mrcp_server_terminate_request_process; - vtable->on_start_complete = mrcp_server_on_start_complete; - vtable->on_terminate_complete = mrcp_server_on_terminate_complete; - } - - server->engine_factory = mrcp_engine_factory_create(server->pool); - server->engine_loader = mrcp_engine_loader_create(server->pool); - - server->media_engine_table = apr_hash_make(server->pool); - server->rtp_factory_table = apr_hash_make(server->pool); - server->rtp_settings_table = apr_hash_make(server->pool); - server->sig_agent_table = apr_hash_make(server->pool); - server->cnt_agent_table = apr_hash_make(server->pool); - - server->profile_table = apr_hash_make(server->pool); - - server->session_table = apr_hash_make(server->pool); - return server; -} - -/** Start message processing loop */ -MRCP_DECLARE(apt_bool_t) mrcp_server_start(mrcp_server_t *server) -{ - apt_task_t *task; - if(!server || !server->task) { - apt_log(APT_LOG_MARK,APT_PRIO_WARNING,"Invalid Server"); - return FALSE; - } - server->start_time = apr_time_now(); - task = apt_consumer_task_base_get(server->task); - if(apt_task_start(task) == FALSE) { - apt_log(APT_LOG_MARK,APT_PRIO_WARNING,"Failed to Start Server Task"); - return FALSE; - } - return TRUE; -} - -/** Shutdown message processing loop */ -MRCP_DECLARE(apt_bool_t) mrcp_server_shutdown(mrcp_server_t *server) -{ - apt_task_t *task; - apr_time_t uptime; - if(!server || !server->task) { - apt_log(APT_LOG_MARK,APT_PRIO_WARNING,"Invalid Server"); - return FALSE; - } - task = apt_consumer_task_base_get(server->task); - if(apt_task_terminate(task,TRUE) == FALSE) { - apt_log(APT_LOG_MARK,APT_PRIO_WARNING,"Failed to Shutdown Server Task"); - return FALSE; - } - server->session_table = NULL; - uptime = apr_time_now() - server->start_time; - apt_log(APT_LOG_MARK,APT_PRIO_NOTICE,"Server Uptime [%"APR_TIME_T_FMT" sec]", apr_time_sec(uptime)); - return TRUE; -} - -/** Destroy MRCP server */ -MRCP_DECLARE(apt_bool_t) mrcp_server_destroy(mrcp_server_t *server) -{ - apt_task_t *task; - if(!server || !server->task) { - apt_log(APT_LOG_MARK,APT_PRIO_WARNING,"Invalid Server"); - return FALSE; - } - - mrcp_engine_factory_destroy(server->engine_factory); - mrcp_engine_loader_destroy(server->engine_loader); - - task = apt_consumer_task_base_get(server->task); - apt_task_destroy(task); - - apr_pool_destroy(server->pool); - return TRUE; -} - -/** Register MRCP resource factory */ -MRCP_DECLARE(apt_bool_t) mrcp_server_resource_factory_register(mrcp_server_t *server, mrcp_resource_factory_t *resource_factory) -{ - if(!resource_factory) { - return FALSE; - } - apt_log(APT_LOG_MARK,APT_PRIO_INFO,"Register Resource Factory"); - server->resource_factory = resource_factory; - return TRUE; -} - -/** Register MRCP engine */ -MRCP_DECLARE(apt_bool_t) mrcp_server_engine_register(mrcp_server_t *server, mrcp_engine_t *engine) -{ - if(!engine || !engine->id) { - return FALSE; - } - - if(!server->engine_msg_pool) { - server->engine_msg_pool = apt_task_msg_pool_create_dynamic(sizeof(engine_task_msg_data_t),server->pool); - } - engine->codec_manager = server->codec_manager; - engine->dir_layout = server->dir_layout; - engine->event_vtable = &engine_vtable; - engine->event_obj = server; - apt_log(APT_LOG_MARK,APT_PRIO_INFO,"Register MRCP Engine [%s]",engine->id); - return mrcp_engine_factory_engine_register(server->engine_factory,engine); -} - -/** Register codec manager */ -MRCP_DECLARE(apt_bool_t) mrcp_server_codec_manager_register(mrcp_server_t *server, mpf_codec_manager_t *codec_manager) -{ - if(!codec_manager) { - return FALSE; - } - server->codec_manager = codec_manager; - return TRUE; -} - -/** Get registered codec manager */ -MRCP_DECLARE(const mpf_codec_manager_t*) mrcp_server_codec_manager_get(const mrcp_server_t *server) -{ - return server->codec_manager; -} - -/** Register media engine */ -MRCP_DECLARE(apt_bool_t) mrcp_server_media_engine_register(mrcp_server_t *server, mpf_engine_t *media_engine) -{ - const char *id; - if(!media_engine) { - return FALSE; - } - id = mpf_engine_id_get(media_engine); - if(!id) { - return FALSE; - } - - apt_log(APT_LOG_MARK,APT_PRIO_INFO,"Register Media Engine [%s]",id); - mpf_engine_codec_manager_register(media_engine,server->codec_manager); - apr_hash_set(server->media_engine_table,id,APR_HASH_KEY_STRING,media_engine); - mpf_engine_task_msg_type_set(media_engine,MRCP_SERVER_MEDIA_TASK_MSG); - if(server->task) { - apt_task_t *media_task = mpf_task_get(media_engine); - apt_task_t *task = apt_consumer_task_base_get(server->task); - apt_task_add(task,media_task); - } - return TRUE; -} - -/** Get media engine by name */ -MRCP_DECLARE(mpf_engine_t*) mrcp_server_media_engine_get(const mrcp_server_t *server, const char *name) -{ - return apr_hash_get(server->media_engine_table,name,APR_HASH_KEY_STRING); -} - -/** Register RTP termination factory */ -MRCP_DECLARE(apt_bool_t) mrcp_server_rtp_factory_register(mrcp_server_t *server, mpf_termination_factory_t *rtp_termination_factory, const char *name) -{ - if(!rtp_termination_factory || !name) { - return FALSE; - } - apt_log(APT_LOG_MARK,APT_PRIO_INFO,"Register RTP Termination Factory [%s]",name); - apr_hash_set(server->rtp_factory_table,name,APR_HASH_KEY_STRING,rtp_termination_factory); - return TRUE; -} - -/** Get RTP termination factory by name */ -MRCP_DECLARE(mpf_termination_factory_t*) mrcp_server_rtp_factory_get(const mrcp_server_t *server, const char *name) -{ - return apr_hash_get(server->rtp_factory_table,name,APR_HASH_KEY_STRING); -} - -/** Register RTP settings */ -MRCP_DECLARE(apt_bool_t) mrcp_server_rtp_settings_register(mrcp_server_t *server, mpf_rtp_settings_t *rtp_settings, const char *name) -{ - if(!rtp_settings || !name) { - return FALSE; - } - apt_log(APT_LOG_MARK,APT_PRIO_INFO,"Register RTP Settings [%s]",name); - apr_hash_set(server->rtp_settings_table,name,APR_HASH_KEY_STRING,rtp_settings); - return TRUE; -} - -/** Get RTP settings by name */ -MRCP_DECLARE(mpf_rtp_settings_t*) mrcp_server_rtp_settings_get(const mrcp_server_t *server, const char *name) -{ - return apr_hash_get(server->rtp_settings_table,name,APR_HASH_KEY_STRING); -} - -/** Register MRCP signaling agent */ -MRCP_DECLARE(apt_bool_t) mrcp_server_signaling_agent_register(mrcp_server_t *server, mrcp_sig_agent_t *signaling_agent) -{ - if(!signaling_agent || !signaling_agent->id) { - return FALSE; - } - apt_log(APT_LOG_MARK,APT_PRIO_INFO,"Register Signaling Agent [%s]",signaling_agent->id); - signaling_agent->parent = server; - signaling_agent->resource_factory = server->resource_factory; - signaling_agent->create_server_session = mrcp_server_sig_agent_session_create; - signaling_agent->msg_pool = apt_task_msg_pool_create_dynamic(sizeof(mrcp_signaling_message_t*),server->pool); - apr_hash_set(server->sig_agent_table,signaling_agent->id,APR_HASH_KEY_STRING,signaling_agent); - if(server->task) { - apt_task_t *task = apt_consumer_task_base_get(server->task); - apt_task_add(task,signaling_agent->task); - } - return TRUE; -} - -/** Get signaling agent by name */ -MRCP_DECLARE(mrcp_sig_agent_t*) mrcp_server_signaling_agent_get(const mrcp_server_t *server, const char *name) -{ - return apr_hash_get(server->sig_agent_table,name,APR_HASH_KEY_STRING); -} - -/** Register MRCP connection agent (MRCPv2 only) */ -MRCP_DECLARE(apt_bool_t) mrcp_server_connection_agent_register(mrcp_server_t *server, mrcp_connection_agent_t *connection_agent) -{ - const char *id; - if(!connection_agent) { - return FALSE; - } - id = mrcp_server_connection_agent_id_get(connection_agent); - if(!id) { - return FALSE; - } - apt_log(APT_LOG_MARK,APT_PRIO_INFO,"Register Connection Agent [%s]",id); - mrcp_server_connection_resource_factory_set(connection_agent,server->resource_factory); - mrcp_server_connection_agent_handler_set(connection_agent,server,&connection_method_vtable); - server->connection_msg_pool = apt_task_msg_pool_create_dynamic(sizeof(connection_agent_task_msg_data_t),server->pool); - apr_hash_set(server->cnt_agent_table,id,APR_HASH_KEY_STRING,connection_agent); - if(server->task) { - apt_task_t *task = apt_consumer_task_base_get(server->task); - apt_task_t *connection_task = mrcp_server_connection_agent_task_get(connection_agent); - apt_task_add(task,connection_task); - } - return TRUE; -} - -/** Get connection agent by name */ -MRCP_DECLARE(mrcp_connection_agent_t*) mrcp_server_connection_agent_get(const mrcp_server_t *server, const char *name) -{ - return apr_hash_get(server->cnt_agent_table,name,APR_HASH_KEY_STRING); -} - -/** Create MRCP profile */ -MRCP_DECLARE(mrcp_server_profile_t*) mrcp_server_profile_create( - const char *id, - mrcp_version_e mrcp_version, - mrcp_resource_factory_t *resource_factory, - mrcp_sig_agent_t *signaling_agent, - mrcp_connection_agent_t *connection_agent, - mpf_engine_t *media_engine, - mpf_termination_factory_t *rtp_factory, - mpf_rtp_settings_t *rtp_settings, - apr_pool_t *pool) -{ - mrcp_server_profile_t *profile = apr_palloc(pool,sizeof(mrcp_server_profile_t)); - profile->id = id; - profile->mrcp_version = mrcp_version; - profile->resource_factory = resource_factory; - profile->engine_table = NULL; - profile->media_engine = media_engine; - profile->rtp_termination_factory = rtp_factory; - profile->rtp_settings = rtp_settings; - profile->signaling_agent = signaling_agent; - profile->connection_agent = connection_agent; - - mpf_termination_factory_engine_assign(rtp_factory,media_engine); - return profile; -} - -static apt_bool_t mrcp_server_engine_table_make(mrcp_server_t *server, mrcp_server_profile_t *profile, apr_table_t *plugin_map) -{ - int i; - mrcp_resource_t *resource; - const char *plugin_name = NULL; - mrcp_engine_t *engine; - - profile->engine_table = apr_hash_make(server->pool); - for(i=0; iresource_factory,i); - if(!resource) continue; - - engine = NULL; - /* first, try to find engine by name specified in plugin map (if available) */ - if(plugin_map) { - plugin_name = apr_table_get(plugin_map,resource->name.buf); - if(plugin_name) { - engine = mrcp_engine_factory_engine_get(server->engine_factory,plugin_name); - } - } - - /* next, if no engine found or specified, try to find the first available one */ - if(!engine) { - engine = mrcp_engine_factory_engine_find(server->engine_factory,i); - } - - if(engine) { - if(engine->id) { - apt_log(APT_LOG_MARK,APT_PRIO_INFO,"Assign MRCP Engine [%s] [%s]",resource->name.buf,engine->id); - } - apr_hash_set(profile->engine_table,resource->name.buf,resource->name.length,engine); - } - else { - apt_log(APT_LOG_MARK,APT_PRIO_WARNING,"No MRCP Engine Available [%s]",resource->name.buf); - } - } - - return TRUE; -} - -/** Register MRCP profile */ -MRCP_DECLARE(apt_bool_t) mrcp_server_profile_register( - mrcp_server_t *server, - mrcp_server_profile_t *profile, - apr_table_t *plugin_map) -{ - if(!profile || !profile->id) { - apt_log(APT_LOG_MARK,APT_PRIO_WARNING,"Failed to Register Profile: no name"); - return FALSE; - } - if(!profile->resource_factory) { - if(!server->resource_factory) { - apt_log(APT_LOG_MARK,APT_PRIO_WARNING,"Failed to Register Profile [%s]: missing resource factory",profile->id); - return FALSE; - } - profile->resource_factory = server->resource_factory; - } - mrcp_server_engine_table_make(server,profile,plugin_map); - - if(!profile->signaling_agent) { - apt_log(APT_LOG_MARK,APT_PRIO_WARNING,"Failed to Register Profile [%s]: missing signaling agent",profile->id); - return FALSE; - } - if(profile->mrcp_version == MRCP_VERSION_2 && - !profile->connection_agent) { - apt_log(APT_LOG_MARK,APT_PRIO_WARNING,"Failed to Register Profile [%s]: missing connection agent",profile->id); - return FALSE; - } - if(!profile->media_engine) { - apt_log(APT_LOG_MARK,APT_PRIO_WARNING,"Failed to Register Profile [%s]: missing media engine",profile->id); - return FALSE; - } - if(!profile->rtp_termination_factory) { - apt_log(APT_LOG_MARK,APT_PRIO_WARNING,"Failed to Register Profile [%s]: missing RTP factory",profile->id); - return FALSE; - } - - apt_log(APT_LOG_MARK,APT_PRIO_INFO,"Register Profile [%s]",profile->id); - apr_hash_set(server->profile_table,profile->id,APR_HASH_KEY_STRING,profile); - return TRUE; -} - -/** Get profile by name */ -MRCP_DECLARE(mrcp_server_profile_t*) mrcp_server_profile_get(const mrcp_server_t *server, const char *name) -{ - return apr_hash_get(server->profile_table,name,APR_HASH_KEY_STRING); -} - -/** Load MRCP engine */ -MRCP_DECLARE(mrcp_engine_t*) mrcp_server_engine_load( - mrcp_server_t *server, - const char *id, - const char *path, - mrcp_engine_config_t *config) -{ - mrcp_engine_t *engine; - if(!id || !path || !config) { - return FALSE; - } - - engine = mrcp_engine_loader_plugin_load(server->engine_loader,id,path,config); - if(!engine) { - return FALSE; - } - - return engine; -} - -MRCP_DECLARE(apr_pool_t*) mrcp_server_memory_pool_get(const mrcp_server_t *server) -{ - return server->pool; -} - -void mrcp_server_session_add(mrcp_server_session_t *session) -{ - if(session->base.id.buf) { - apt_log(APT_LOG_MARK,APT_PRIO_NOTICE,"Add Session "APT_SID_FMT,MRCP_SESSION_SID(&session->base)); - apr_hash_set(session->server->session_table,session->base.id.buf,session->base.id.length,session); - } -} - -void mrcp_server_session_remove(mrcp_server_session_t *session) -{ - if(session->base.id.buf) { - apt_log(APT_LOG_MARK,APT_PRIO_NOTICE,"Remove Session "APT_SID_FMT,MRCP_SESSION_SID(&session->base)); - apr_hash_set(session->server->session_table,session->base.id.buf,session->base.id.length,NULL); - } -} - -static APR_INLINE mrcp_server_session_t* mrcp_server_session_find(mrcp_server_t *server, const apt_str_t *session_id) -{ - return apr_hash_get(server->session_table,session_id->buf,session_id->length); -} - -static apt_bool_t mrcp_server_start_request_process(apt_task_t *task) -{ - apt_consumer_task_t *consumer_task = apt_task_object_get(task); - mrcp_server_t *server = apt_consumer_task_object_get(consumer_task); - - mrcp_engine_t *engine; - apr_hash_index_t *it; - void *val; - it = mrcp_engine_factory_engine_first(server->engine_factory); - for(; it; it = apr_hash_next(it)) { - apr_hash_this(it,NULL,NULL,&val); - engine = val; - if(engine) { - if(mrcp_engine_virtual_open(engine) == TRUE) { - apt_task_start_request_add(task); - } - } - } - - return apt_task_start_request_process(task); -} - -static apt_bool_t mrcp_server_terminate_request_process(apt_task_t *task) -{ - apt_consumer_task_t *consumer_task = apt_task_object_get(task); - mrcp_server_t *server = apt_consumer_task_object_get(consumer_task); - - mrcp_engine_t *engine; - apr_hash_index_t *it; - void *val; - it = mrcp_engine_factory_engine_first(server->engine_factory); - for(; it; it = apr_hash_next(it)) { - apr_hash_this(it,NULL,NULL,&val); - engine = val; - if(engine) { - if(mrcp_engine_virtual_close(engine) == TRUE) { - apt_task_terminate_request_add(task); - } - } - } - - return apt_task_terminate_request_process(task); -} - -static void mrcp_server_on_start_complete(apt_task_t *task) -{ - apt_log(APT_LOG_MARK,APT_PRIO_NOTICE,SERVER_TASK_NAME" Started"); -} - -static void mrcp_server_on_terminate_complete(apt_task_t *task) -{ - apt_log(APT_LOG_MARK,APT_PRIO_NOTICE,SERVER_TASK_NAME" Terminated"); -} - -static apt_bool_t mrcp_server_msg_process(apt_task_t *task, apt_task_msg_t *msg) -{ - switch(msg->type) { - case MRCP_SERVER_SIGNALING_TASK_MSG: - { - mrcp_signaling_message_t **signaling_message = (mrcp_signaling_message_t**) msg->data; - mrcp_server_signaling_message_process(*signaling_message); - break; - } - case MRCP_SERVER_CONNECTION_TASK_MSG: - { - const connection_agent_task_msg_data_t *connection_message = (const connection_agent_task_msg_data_t*)msg->data; - switch(msg->sub_type) { - case CONNECTION_AGENT_TASK_MSG_ADD_CHANNEL: - { - mrcp_server_on_channel_modify(connection_message->channel,connection_message->descriptor,connection_message->status); - break; - } - case CONNECTION_AGENT_TASK_MSG_MODIFY_CHANNEL: - { - mrcp_server_on_channel_modify(connection_message->channel,connection_message->descriptor,connection_message->status); - break; - } - case CONNECTION_AGENT_TASK_MSG_REMOVE_CHANNEL: - { - mrcp_server_on_channel_remove(connection_message->channel,connection_message->status); - break; - } - case CONNECTION_AGENT_TASK_MSG_RECEIVE_MESSAGE: - { - mrcp_server_on_channel_message(connection_message->channel, connection_message->message); - break; - } - case CONNECTION_AGENT_TASK_MSG_DISCONNECT: - { - mrcp_server_on_channel_message(connection_message->channel, connection_message->message); - break; - } - default: - break; - } - break; - } - case MRCP_SERVER_ENGINE_TASK_MSG: - { - engine_task_msg_data_t *data = (engine_task_msg_data_t*)msg->data; - switch(msg->sub_type) { - case ENGINE_TASK_MSG_OPEN_ENGINE: - mrcp_engine_on_open(data->engine,data->status); - apt_task_start_request_remove(task); - break; - case ENGINE_TASK_MSG_CLOSE_ENGINE: - mrcp_engine_on_close(data->engine); - apt_task_terminate_request_remove(task); - break; - case ENGINE_TASK_MSG_OPEN_CHANNEL: - mrcp_server_on_engine_channel_open(data->channel,data->status); - break; - case ENGINE_TASK_MSG_CLOSE_CHANNEL: - mrcp_server_on_engine_channel_close(data->channel); - break; - case ENGINE_TASK_MSG_MESSAGE: - mrcp_server_on_engine_channel_message(data->channel,data->mrcp_message); - break; - default: - break; - } - break; - } - case MRCP_SERVER_MEDIA_TASK_MSG: - { - mpf_message_container_t *mpf_message_container = (mpf_message_container_t*) msg->data; - mrcp_server_mpf_message_process(mpf_message_container); - break; - } - default: - { - apt_log(APT_LOG_MARK,APT_PRIO_WARNING,"Unknown Task Message Received [%d;%d]", msg->type,msg->sub_type); - break; - } - } - return TRUE; -} - -static apt_bool_t mrcp_server_signaling_task_msg_signal(mrcp_signaling_message_type_e type, mrcp_session_t *session, mrcp_session_descriptor_t *descriptor, mrcp_message_t *message) -{ - mrcp_signaling_message_t *signaling_message; - apt_task_msg_t *task_msg = apt_task_msg_acquire(session->signaling_agent->msg_pool); - mrcp_signaling_message_t **slot = ((mrcp_signaling_message_t**)task_msg->data); - task_msg->type = MRCP_SERVER_SIGNALING_TASK_MSG; - task_msg->sub_type = type; - - signaling_message = apr_palloc(session->pool,sizeof(mrcp_signaling_message_t)); - signaling_message->type = type; - signaling_message->session = (mrcp_server_session_t*)session; - signaling_message->descriptor = descriptor; - signaling_message->channel = NULL; - signaling_message->message = message; - *slot = signaling_message; - - return apt_task_msg_parent_signal(session->signaling_agent->task,task_msg); -} - -static apt_bool_t mrcp_server_connection_task_msg_signal( - connection_agent_task_msg_type_e type, - mrcp_connection_agent_t *agent, - mrcp_control_channel_t *channel, - mrcp_control_descriptor_t *descriptor, - mrcp_message_t *message, - apt_bool_t status) -{ - mrcp_server_t *server = mrcp_server_connection_agent_object_get(agent); - apt_task_t *task = apt_consumer_task_base_get(server->task); - connection_agent_task_msg_data_t *data; - apt_task_msg_t *task_msg = apt_task_msg_acquire(server->connection_msg_pool); - task_msg->type = MRCP_SERVER_CONNECTION_TASK_MSG; - task_msg->sub_type = type; - data = (connection_agent_task_msg_data_t*) task_msg->data; - data->channel = channel ? channel->obj : NULL; - data->descriptor = descriptor; - data->message = message; - data->status = status; - - return apt_task_msg_signal(task,task_msg); -} - -static apt_bool_t mrcp_server_engine_task_msg_signal( - engine_task_msg_type_e type, - mrcp_engine_t *engine, - apt_bool_t status) -{ - mrcp_server_t *server = engine->event_obj; - apt_task_t *task = apt_consumer_task_base_get(server->task); - engine_task_msg_data_t *data; - apt_task_msg_t *task_msg = apt_task_msg_acquire(server->engine_msg_pool); - task_msg->type = MRCP_SERVER_ENGINE_TASK_MSG; - task_msg->sub_type = type; - data = (engine_task_msg_data_t*) task_msg->data; - data->engine = engine; - data->channel = NULL; - data->status = status; - data->mrcp_message = NULL; - - return apt_task_msg_signal(task,task_msg); -} - -static apt_bool_t mrcp_server_channel_task_msg_signal( - engine_task_msg_type_e type, - mrcp_engine_channel_t *engine_channel, - apt_bool_t status, - mrcp_message_t *message) -{ - mrcp_channel_t *channel = engine_channel->event_obj; - mrcp_session_t *session = mrcp_server_channel_session_get(channel); - mrcp_server_t *server = session->signaling_agent->parent; - apt_task_t *task = apt_consumer_task_base_get(server->task); - engine_task_msg_data_t *data; - apt_task_msg_t *task_msg = apt_task_msg_acquire(server->engine_msg_pool); - task_msg->type = MRCP_SERVER_ENGINE_TASK_MSG; - task_msg->sub_type = type; - data = (engine_task_msg_data_t*) task_msg->data; - data->engine = engine_channel->engine; - data->channel = channel; - data->status = status; - data->mrcp_message = message; - - return apt_task_msg_signal(task,task_msg); -} - -static mrcp_server_profile_t* mrcp_server_profile_get_by_agent(mrcp_server_t *server, mrcp_server_session_t *session, const mrcp_sig_agent_t *signaling_agent) -{ - mrcp_server_profile_t *profile; - apr_hash_index_t *it; - void *val; - it = apr_hash_first(session->base.pool,server->profile_table); - for(; it; it = apr_hash_next(it)) { - apr_hash_this(it,NULL,NULL,&val); - profile = val; - if(profile && profile->signaling_agent == signaling_agent) { - return profile; - } - } - return NULL; -} - -static mrcp_session_t* mrcp_server_sig_agent_session_create(mrcp_sig_agent_t *signaling_agent) -{ - mrcp_server_t *server = signaling_agent->parent; - mrcp_server_session_t *session = mrcp_server_session_create(); - session->server = server; - session->profile = mrcp_server_profile_get_by_agent(server,session,signaling_agent); - if(!session->profile) { - apt_log(APT_LOG_MARK,APT_PRIO_WARNING,"Cannot Find Profile by Agent "APT_NAMESID_FMT, - session->base.name, - MRCP_SESSION_SID(&session->base)); - mrcp_session_destroy(&session->base); - return NULL; - } - apt_log(APT_LOG_MARK,APT_PRIO_INFO,"Create Session "APT_NAMESID_FMT" [%s]", - session->base.name, - MRCP_SESSION_SID(&session->base), - session->profile->id); - session->base.signaling_agent = signaling_agent; - session->base.request_vtable = &session_request_vtable; - return &session->base; -} - -static apt_bool_t mrcp_server_offer_signal(mrcp_session_t *session, mrcp_session_descriptor_t *descriptor) -{ - return mrcp_server_signaling_task_msg_signal(SIGNALING_MESSAGE_OFFER,session,descriptor,NULL); -} - -static apt_bool_t mrcp_server_terminate_signal(mrcp_session_t *session) -{ - return mrcp_server_signaling_task_msg_signal(SIGNALING_MESSAGE_TERMINATE,session,NULL,NULL); -} - -static apt_bool_t mrcp_server_control_signal(mrcp_session_t *session, mrcp_message_t *message) -{ - return mrcp_server_signaling_task_msg_signal(SIGNALING_MESSAGE_CONTROL,session,NULL,message); -} - -static apt_bool_t mrcp_server_channel_add_signal(mrcp_control_channel_t *channel, mrcp_control_descriptor_t *descriptor, apt_bool_t status) -{ - mrcp_connection_agent_t *agent = channel->agent; - return mrcp_server_connection_task_msg_signal( - CONNECTION_AGENT_TASK_MSG_ADD_CHANNEL, - agent, - channel, - descriptor, - NULL, - status); -} - -static apt_bool_t mrcp_server_channel_modify_signal(mrcp_control_channel_t *channel, mrcp_control_descriptor_t *descriptor, apt_bool_t status) -{ - mrcp_connection_agent_t *agent = channel->agent; - return mrcp_server_connection_task_msg_signal( - CONNECTION_AGENT_TASK_MSG_MODIFY_CHANNEL, - agent, - channel, - descriptor, - NULL, - status); -} - -static apt_bool_t mrcp_server_channel_remove_signal(mrcp_control_channel_t *channel, apt_bool_t status) -{ - mrcp_connection_agent_t *agent = channel->agent; - return mrcp_server_connection_task_msg_signal( - CONNECTION_AGENT_TASK_MSG_REMOVE_CHANNEL, - agent, - channel, - NULL, - NULL, - status); -} - -static apt_bool_t mrcp_server_message_signal(mrcp_control_channel_t *channel, mrcp_message_t *message) -{ - mrcp_connection_agent_t *agent = channel->agent; - return mrcp_server_connection_task_msg_signal( - CONNECTION_AGENT_TASK_MSG_RECEIVE_MESSAGE, - agent, - channel, - NULL, - message, - TRUE); -} - -static apt_bool_t mrcp_server_disconnect_signal(mrcp_control_channel_t *channel) -{ - mrcp_connection_agent_t *agent = channel->agent; - return mrcp_server_connection_task_msg_signal( - CONNECTION_AGENT_TASK_MSG_DISCONNECT, - agent, - channel, - NULL, - NULL, - TRUE); -} - -static apt_bool_t mrcp_server_engine_open_signal(mrcp_engine_t *engine, apt_bool_t status) -{ - return mrcp_server_engine_task_msg_signal( - ENGINE_TASK_MSG_OPEN_ENGINE, - engine, - status); -} - -static apt_bool_t mrcp_server_engine_close_signal(mrcp_engine_t *engine) -{ - return mrcp_server_engine_task_msg_signal( - ENGINE_TASK_MSG_CLOSE_ENGINE, - engine, - TRUE); -} - -static apt_bool_t mrcp_server_channel_open_signal(mrcp_engine_channel_t *channel, apt_bool_t status) -{ - return mrcp_server_channel_task_msg_signal( - ENGINE_TASK_MSG_OPEN_CHANNEL, - channel, - status, - NULL); -} - -static apt_bool_t mrcp_server_channel_close_signal(mrcp_engine_channel_t *channel) -{ - return mrcp_server_channel_task_msg_signal( - ENGINE_TASK_MSG_CLOSE_CHANNEL, - channel, - TRUE, - NULL); -} - -static apt_bool_t mrcp_server_channel_message_signal(mrcp_engine_channel_t *channel, mrcp_message_t *message) -{ - return mrcp_server_channel_task_msg_signal( - ENGINE_TASK_MSG_MESSAGE, - channel, - TRUE, - message); -} diff --git a/libs/unimrcp/libs/mrcp-server/src/mrcp_server_session.c b/libs/unimrcp/libs/mrcp-server/src/mrcp_server_session.c deleted file mode 100644 index c2dfb0b98f9..00000000000 --- a/libs/unimrcp/libs/mrcp-server/src/mrcp_server_session.c +++ /dev/null @@ -1,1191 +0,0 @@ -/* - * Copyright 2008-2014 Arsen Chaloyan - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - * - * $Id: mrcp_server_session.c 2237 2014-11-12 01:48:46Z achaloyan@gmail.com $ - */ - -#include "mrcp_server.h" -#include "mrcp_server_session.h" -#include "mrcp_resource.h" -#include "mrcp_resource_factory.h" -#include "mrcp_engine_iface.h" -#include "mrcp_sig_agent.h" -#include "mrcp_server_connection.h" -#include "mrcp_session_descriptor.h" -#include "mrcp_control_descriptor.h" -#include "mrcp_state_machine.h" -#include "mrcp_message.h" -#include "mpf_termination_factory.h" -#include "mpf_stream.h" -#include "apt_consumer_task.h" -#include "apt_log.h" - -/** Macro to log session name and identifier */ -#define MRCP_SESSION_NAMESID(session) \ - session->base.name, MRCP_SESSION_SID(&session->base) - -#define MRCP_SESSION_ID_HEX_STRING_LENGTH 16 - -struct mrcp_channel_t { - /** Memory pool */ - apr_pool_t *pool; - /** MRCP resource */ - mrcp_resource_t *resource; - /** MRCP session entire channel belongs to */ - mrcp_session_t *session; - /** MRCP control channel */ - mrcp_control_channel_t *control_channel; - /** MRCP engine channel */ - mrcp_engine_channel_t *engine_channel; - /** MRCP resource state machine */ - mrcp_state_machine_t *state_machine; - /** media descriptor id (position in session descriptor) */ - apr_size_t id; - /** array of cmid attributes (used for resource grouping) */ - apr_array_header_t *cmid_arr; - /** waiting state of control media */ - apt_bool_t waiting_for_channel; - /** waiting state of media termination */ - apt_bool_t waiting_for_termination; -}; - -typedef struct mrcp_termination_slot_t mrcp_termination_slot_t; - -struct mrcp_termination_slot_t { - /** RTP termination */ - mpf_termination_t *termination; - /** media descriptor id (position in SDP message) */ - apr_size_t id; - /** media id (used for resource grouping) */ - apr_size_t mid; - /** Array of associated MRCP channels (mrcp_channel_t*) */ - apr_array_header_t *channels; - - /** waiting state */ - apt_bool_t waiting; -}; - -extern const mrcp_engine_channel_event_vtable_t engine_channel_vtable; - -void mrcp_server_session_add(mrcp_server_session_t *session); -void mrcp_server_session_remove(mrcp_server_session_t *session); - -static apt_bool_t mrcp_server_signaling_message_dispatch(mrcp_server_session_t *session, mrcp_signaling_message_t *signaling_message); - -static apt_bool_t mrcp_server_resource_offer_process(mrcp_server_session_t *session, mrcp_session_descriptor_t *descriptor); -static apt_bool_t mrcp_server_control_media_offer_process(mrcp_server_session_t *session, mrcp_session_descriptor_t *descriptor); -static apt_bool_t mrcp_server_av_media_offer_process(mrcp_server_session_t *session, mrcp_session_descriptor_t *descriptor); - -static apt_bool_t mrcp_server_engine_channels_update(mrcp_server_session_t *session); -static apt_bool_t mrcp_server_session_answer_send(mrcp_server_session_t *session); -static apt_bool_t mrcp_server_session_terminate_process(mrcp_server_session_t *session); -static apt_bool_t mrcp_server_session_terminate_send(mrcp_server_session_t *session); - -static mrcp_channel_t* mrcp_server_channel_find(mrcp_server_session_t *session, const apt_str_t *resource_name); - -static apt_bool_t state_machine_on_message_dispatch(mrcp_state_machine_t *state_machine, mrcp_message_t *message); -static apt_bool_t state_machine_on_deactivate(mrcp_state_machine_t *state_machine); - - -mrcp_server_session_t* mrcp_server_session_create() -{ - mrcp_server_session_t *session = (mrcp_server_session_t*) mrcp_session_create(sizeof(mrcp_server_session_t)-sizeof(mrcp_session_t)); - session->context = NULL; - session->terminations = apr_array_make(session->base.pool,2,sizeof(mrcp_termination_slot_t)); - session->channels = apr_array_make(session->base.pool,2,sizeof(mrcp_channel_t*)); - session->active_request = NULL; - session->request_queue = apt_list_create(session->base.pool); - session->offer = NULL; - session->answer = NULL; - session->mpf_task_msg = NULL; - session->subrequest_count = 0; - session->state = SESSION_STATE_NONE; - session->base.name = apr_psprintf(session->base.pool,"0x%pp",session); - return session; -} - -static APR_INLINE mrcp_version_e mrcp_session_version_get(mrcp_server_session_t *session) -{ - return session->profile->mrcp_version; -} - -static mrcp_engine_channel_t* mrcp_server_engine_channel_create( - mrcp_server_session_t *session, - mrcp_channel_t *channel, - const apt_str_t *resource_name) -{ - mrcp_engine_t *engine = apr_hash_get( - session->profile->engine_table, - resource_name->buf, - resource_name->length); - if(!engine) { - apt_log(APT_LOG_MARK,APT_PRIO_WARNING,"Failed to Find MRCP Engine "APT_NAMESID_FMT" [%s]", - MRCP_SESSION_NAMESID(session), - resource_name->buf); - return NULL; - } - - channel->state_machine = engine->create_state_machine( - channel, - mrcp_session_version_get(session), - channel->pool); - if(channel->state_machine) { - channel->state_machine->on_dispatch = state_machine_on_message_dispatch; - channel->state_machine->on_deactivate = state_machine_on_deactivate; - } - - return mrcp_engine_channel_virtual_create(engine,mrcp_session_version_get(session),session->base.pool); -} - -static mrcp_channel_t* mrcp_server_channel_create(mrcp_server_session_t *session, const apt_str_t *resource_name, apr_size_t id, apr_array_header_t *cmid_arr) -{ - mrcp_channel_t *channel; - apr_pool_t *pool = session->base.pool; - - channel = apr_palloc(pool,sizeof(mrcp_channel_t)); - channel->pool = pool; - channel->session = &session->base; - channel->resource = NULL; - channel->control_channel = NULL; - channel->state_machine = NULL; - channel->engine_channel = NULL; - channel->id = id; - channel->cmid_arr = cmid_arr; - channel->waiting_for_channel = FALSE; - channel->waiting_for_termination = FALSE; - - if(resource_name && resource_name->buf) { - mrcp_resource_t *resource; - mrcp_engine_channel_t *engine_channel; - resource = mrcp_resource_find(session->profile->resource_factory,resource_name); - if(resource) { - channel->resource = resource; - if(mrcp_session_version_get(session) == MRCP_VERSION_2) { - channel->control_channel = mrcp_server_control_channel_create( - session->profile->connection_agent, - channel, - pool); - } - engine_channel = mrcp_server_engine_channel_create(session,channel,resource_name); - if(engine_channel) { - engine_channel->id = session->base.id; - engine_channel->event_obj = channel; - engine_channel->event_vtable = &engine_channel_vtable; - channel->engine_channel = engine_channel; - } - else { - apt_log(APT_LOG_MARK,APT_PRIO_WARNING,"Failed to Create Engine Channel "APT_NAMESID_FMT" [%s]", - MRCP_SESSION_NAMESID(session), - resource_name->buf); - session->answer->status = MRCP_SESSION_STATUS_UNACCEPTABLE_RESOURCE; - } - } - else { - apt_log(APT_LOG_MARK,APT_PRIO_WARNING,"No Such Resource "APT_NAMESID_FMT" [%s]", - MRCP_SESSION_NAMESID(session), - resource_name->buf); - session->answer->status = MRCP_SESSION_STATUS_NO_SUCH_RESOURCE; - } - } - else { - apt_log(APT_LOG_MARK,APT_PRIO_WARNING,"Invalid Resource Identifier "APT_NAMESID_FMT, - MRCP_SESSION_NAMESID(session)); - session->answer->status = MRCP_SESSION_STATUS_NO_SUCH_RESOURCE; - } - - return channel; -} - -static APR_INLINE void mrcp_server_session_state_set(mrcp_server_session_t *session, mrcp_server_session_state_e state) -{ - if(session->subrequest_count != 0) { - /* error case */ - session->subrequest_count = 0; - } - session->state = state; -} - -static APR_INLINE void mrcp_server_session_subrequest_add(mrcp_server_session_t *session) -{ - session->subrequest_count++; -} - -static void mrcp_server_session_subrequest_remove(mrcp_server_session_t *session) -{ - if(!session->subrequest_count) { - /* error case */ - return; - } - session->subrequest_count--; - if(!session->subrequest_count) { - switch(session->state) { - case SESSION_STATE_GENERATING_ANSWER: - mrcp_server_engine_channels_update(session); - break; - case SESSION_STATE_INITIALIZING: - /* send answer to client */ - mrcp_server_session_answer_send(session); - break; - case SESSION_STATE_DEACTIVATING: - mrcp_server_session_terminate_process(session); - break; - case SESSION_STATE_TERMINATING: - mrcp_server_session_terminate_send(session); - break; - default: - break; - } - } -} - -mrcp_session_t* mrcp_server_channel_session_get(mrcp_channel_t *channel) -{ - return channel->session; -} - -apt_bool_t mrcp_server_signaling_message_process(mrcp_signaling_message_t *signaling_message) -{ - mrcp_server_session_t *session = signaling_message->session; - if(session->active_request) { - apt_log(APT_LOG_MARK,APT_PRIO_DEBUG,"Push Request to Queue "APT_NAMESID_FMT, - MRCP_SESSION_NAMESID(session)); - apt_list_push_back(session->request_queue,signaling_message,session->base.pool); - } - else { - session->active_request = signaling_message; - mrcp_server_signaling_message_dispatch(session,signaling_message); - } - return TRUE; -} - -apt_bool_t mrcp_server_on_channel_modify(mrcp_channel_t *channel, mrcp_control_descriptor_t *answer, apt_bool_t status) -{ - mrcp_server_session_t *session = (mrcp_server_session_t*)channel->session; - apt_log(APT_LOG_MARK,APT_PRIO_DEBUG,"Control Channel Modified "APT_NAMESIDRES_FMT, - MRCP_SESSION_NAMESID(session), - channel->resource->name.buf); - if(!answer) { - return FALSE; - } - if(!channel->waiting_for_channel) { - return FALSE; - } - channel->waiting_for_channel = FALSE; - answer->session_id = session->base.id; - mrcp_session_control_media_set(session->answer,channel->id,answer); - mrcp_server_session_subrequest_remove(session); - return TRUE; -} - -apt_bool_t mrcp_server_on_channel_remove(mrcp_channel_t *channel, apt_bool_t status) -{ - mrcp_server_session_t *session = (mrcp_server_session_t*)channel->session; - apt_log(APT_LOG_MARK,APT_PRIO_DEBUG,"Control Channel Removed "APT_NAMESIDRES_FMT, - MRCP_SESSION_NAMESID(session), - channel->resource->name.buf); - if(!channel->waiting_for_channel) { - return FALSE; - } - channel->waiting_for_channel = FALSE; - mrcp_server_session_subrequest_remove(session); - return TRUE; -} - -apt_bool_t mrcp_server_on_channel_message(mrcp_channel_t *channel, mrcp_message_t *message) -{ - mrcp_server_session_t *session = (mrcp_server_session_t*)channel->session; - mrcp_signaling_message_t *signaling_message; - signaling_message = apr_palloc(session->base.pool,sizeof(mrcp_signaling_message_t)); - signaling_message->type = SIGNALING_MESSAGE_CONTROL; - signaling_message->session = session; - signaling_message->descriptor = NULL; - signaling_message->channel = channel; - signaling_message->message = message; - return mrcp_server_signaling_message_process(signaling_message); -} - -apt_bool_t mrcp_server_on_disconnect(mrcp_channel_t *channel) -{ - /* to be processed */ - return TRUE; -} - -apt_bool_t mrcp_server_on_engine_channel_open(mrcp_channel_t *channel, apt_bool_t status) -{ - mrcp_server_session_t *session = (mrcp_server_session_t*)channel->session; - apt_log(APT_LOG_MARK,APT_PRIO_DEBUG,"Engine Channel Opened "APT_NAMESIDRES_FMT" [%s]", - MRCP_SESSION_NAMESID(session), - channel->resource->name.buf, - status == TRUE ? "OK" : "Failed"); - if(status == FALSE) { - session->answer->status = MRCP_SESSION_STATUS_UNAVAILABLE_RESOURCE; - } - mrcp_server_session_subrequest_remove(session); - return TRUE; -} - -apt_bool_t mrcp_server_on_engine_channel_close(mrcp_channel_t *channel) -{ - mrcp_server_session_t *session = (mrcp_server_session_t*)channel->session; - apt_log(APT_LOG_MARK,APT_PRIO_DEBUG,"Engine Channel Closed "APT_NAMESIDRES_FMT, - MRCP_SESSION_NAMESID(session), - channel->resource->name.buf); - mrcp_server_session_subrequest_remove(session); - return TRUE; -} - -apt_bool_t mrcp_server_on_engine_channel_message(mrcp_channel_t *channel, mrcp_message_t *message) -{ - if(!channel->state_machine) { - return FALSE; - } - /* update state machine */ - return mrcp_state_machine_update(channel->state_machine,message); -} - - -static mrcp_session_descriptor_t* mrcp_session_answer_create(mrcp_session_descriptor_t *offer, apr_pool_t *pool) -{ - int i; - mrcp_session_descriptor_t *answer = apr_palloc(pool,sizeof(mrcp_session_descriptor_t)); - apt_string_reset(&answer->origin); - apt_string_reset(&answer->ip); - apt_string_reset(&answer->ext_ip); - answer->resource_name = offer->resource_name; - answer->resource_state = offer->resource_state; - answer->status = offer->status; - answer->control_media_arr = apr_array_make(pool,offer->control_media_arr->nelts,sizeof(void*)); - for(i=0; icontrol_media_arr->nelts; i++) { - APR_ARRAY_PUSH(answer->control_media_arr,void*) = NULL; - } - answer->audio_media_arr = apr_array_make(pool,offer->audio_media_arr->nelts,sizeof(mpf_rtp_media_descriptor_t*)); - for(i=0; iaudio_media_arr->nelts; i++) { - APR_ARRAY_PUSH(answer->audio_media_arr,mpf_rtp_media_descriptor_t*) = NULL; - } - answer->video_media_arr = apr_array_make(pool,offer->video_media_arr->nelts,sizeof(mpf_rtp_media_descriptor_t*)); - for(i=0; ivideo_media_arr->nelts; i++) { - APR_ARRAY_PUSH(answer->video_media_arr,mpf_rtp_media_descriptor_t*) = NULL; - } - return answer; -} - -static apt_bool_t mrcp_server_session_offer_process(mrcp_server_session_t *session, mrcp_session_descriptor_t *descriptor) -{ - if(!session->context) { - /* initial offer received, generate session id and add to session's table */ - if(!session->base.id.length) { - apt_unique_id_generate(&session->base.id,MRCP_SESSION_ID_HEX_STRING_LENGTH,session->base.pool); - } - mrcp_server_session_add(session); - - session->context = mpf_engine_context_create( - session->profile->media_engine, - session->base.name, - session,5,session->base.pool); - } - apt_log(APT_LOG_MARK,APT_PRIO_INFO,"Receive Offer "APT_NAMESID_FMT" [c:%d a:%d v:%d]", - MRCP_SESSION_NAMESID(session), - descriptor->control_media_arr->nelts, - descriptor->audio_media_arr->nelts, - descriptor->video_media_arr->nelts); - - /* store received offer */ - session->offer = descriptor; - session->answer = mrcp_session_answer_create(descriptor,session->base.pool); - - mrcp_server_session_state_set(session,SESSION_STATE_GENERATING_ANSWER); - - /* first, reset/destroy existing associations and topology */ - if(mpf_engine_topology_message_add( - session->profile->media_engine, - MPF_RESET_ASSOCIATIONS,session->context, - &session->mpf_task_msg) == TRUE){ - mrcp_server_session_subrequest_add(session); - } - - if(mrcp_session_version_get(session) == MRCP_VERSION_1) { - if(mrcp_server_resource_offer_process(session,descriptor) == TRUE) { - mrcp_server_av_media_offer_process(session,descriptor); - } - else { - session->answer->resource_state = FALSE; - } - } - else { - mrcp_server_control_media_offer_process(session,descriptor); - mrcp_server_av_media_offer_process(session,descriptor); - } - - /* apply topology based on assigned associations */ - if(mpf_engine_topology_message_add( - session->profile->media_engine, - MPF_APPLY_TOPOLOGY,session->context, - &session->mpf_task_msg) == TRUE) { - mrcp_server_session_subrequest_add(session); - } - mpf_engine_message_send(session->profile->media_engine,&session->mpf_task_msg); - - if(!session->subrequest_count) { - /* send answer to client */ - mrcp_server_session_answer_send(session); - } - return TRUE; -} - -static apt_bool_t mrcp_server_session_terminate_process(mrcp_server_session_t *session) -{ - mrcp_channel_t *channel; - mrcp_termination_slot_t *slot; - int i; - apt_log(APT_LOG_MARK,APT_PRIO_INFO,"Terminate Session "APT_NAMESID_FMT,MRCP_SESSION_NAMESID(session)); - - mrcp_server_session_state_set(session,SESSION_STATE_TERMINATING); - - if(session->context) { - /* first, destroy existing topology */ - if(mpf_engine_topology_message_add( - session->profile->media_engine, - MPF_RESET_ASSOCIATIONS,session->context, - &session->mpf_task_msg) == TRUE){ - mrcp_server_session_subrequest_add(session); - } - } - - for(i=0; ichannels->nelts; i++) { - channel = APR_ARRAY_IDX(session->channels,i,mrcp_channel_t*); - if(!channel) continue; - - /* send remove channel request */ - apt_log(APT_LOG_MARK,APT_PRIO_DEBUG,"Remove Control Channel "APT_NAMESIDRES_FMT" [%d]", - MRCP_SESSION_NAMESID(session), - channel->resource->name.buf, - i); - if(channel->control_channel) { - if(mrcp_server_control_channel_remove(channel->control_channel) == TRUE) { - channel->waiting_for_channel = TRUE; - mrcp_server_session_subrequest_add(session); - } - } - - if(channel->engine_channel) { - mpf_termination_t *termination = channel->engine_channel->termination; - /* send subtract termination request */ - if(termination) { - apt_log(APT_LOG_MARK,APT_PRIO_DEBUG,"Subtract Media Termination "APT_NAMESIDRES_FMT, - MRCP_SESSION_NAMESID(session), - mpf_termination_name_get(termination)); - if(mpf_engine_termination_message_add( - session->profile->media_engine, - MPF_SUBTRACT_TERMINATION,session->context,termination,NULL, - &session->mpf_task_msg) == TRUE) { - channel->waiting_for_termination = TRUE; - mrcp_server_session_subrequest_add(session); - } - } - - /* close engine channel */ - if(mrcp_engine_channel_virtual_close(channel->engine_channel) == TRUE) { - mrcp_server_session_subrequest_add(session); - } - } - } - for(i=0; iterminations->nelts; i++) { - /* get existing termination */ - slot = &APR_ARRAY_IDX(session->terminations,i,mrcp_termination_slot_t); - if(!slot->termination) continue; - - /* send subtract termination request */ - apt_log(APT_LOG_MARK,APT_PRIO_DEBUG,"Subtract Media Termination "APT_NAMESIDRES_FMT, - MRCP_SESSION_NAMESID(session), - mpf_termination_name_get(slot->termination)); - if(mpf_engine_termination_message_add( - session->profile->media_engine, - MPF_SUBTRACT_TERMINATION,session->context,slot->termination,NULL, - &session->mpf_task_msg) == TRUE) { - slot->waiting = TRUE; - mrcp_server_session_subrequest_add(session); - } - } - - if(session->context) { - mpf_engine_message_send(session->profile->media_engine,&session->mpf_task_msg); - } - - mrcp_server_session_remove(session); - - if(!session->subrequest_count) { - mrcp_server_session_terminate_send(session); - } - - return TRUE; -} - -static apt_bool_t mrcp_server_session_deactivate(mrcp_server_session_t *session) -{ - mrcp_channel_t *channel; - int i; - apt_log(APT_LOG_MARK,APT_PRIO_INFO,"Deactivate Session "APT_NAMESID_FMT,MRCP_SESSION_NAMESID(session)); - mrcp_server_session_state_set(session,SESSION_STATE_DEACTIVATING); - for(i=0; ichannels->nelts; i++) { - channel = APR_ARRAY_IDX(session->channels,i,mrcp_channel_t*); - if(!channel || !channel->state_machine) continue; - - if(mrcp_state_machine_deactivate(channel->state_machine) == TRUE) { - mrcp_server_session_subrequest_add(session); - } - } - - if(!session->subrequest_count) { - mrcp_server_session_terminate_process(session); - } - - return TRUE; -} - -static apt_bool_t mrcp_server_on_message_receive(mrcp_server_session_t *session, mrcp_channel_t *channel, mrcp_message_t *message) -{ - if(!channel) { - channel = mrcp_server_channel_find(session,&message->channel_id.resource_name); - if(!channel) { - apt_log(APT_LOG_MARK,APT_PRIO_WARNING,"No Such Channel "APT_NAMESIDRES_FMT, - MRCP_SESSION_NAMESID(session), - message->channel_id.resource_name.buf); - return FALSE; - } - } - if(!channel->resource || !channel->state_machine) { - apt_log(APT_LOG_MARK,APT_PRIO_WARNING,"Missing Resource "APT_NAMESIDRES_FMT, - MRCP_SESSION_NAMESID(session), - message->channel_id.resource_name.buf); - return FALSE; - } - - /* update state machine */ - return mrcp_state_machine_update(channel->state_machine,message); -} - -static apt_bool_t mrcp_server_signaling_message_dispatch(mrcp_server_session_t *session, mrcp_signaling_message_t *signaling_message) -{ - apt_log(APT_LOG_MARK,APT_PRIO_DEBUG,"Dispatch Signaling Message [%d]",signaling_message->type); - switch(signaling_message->type) { - case SIGNALING_MESSAGE_OFFER: - mrcp_server_session_offer_process(signaling_message->session,signaling_message->descriptor); - break; - case SIGNALING_MESSAGE_CONTROL: - mrcp_server_on_message_receive(signaling_message->session,signaling_message->channel,signaling_message->message); - break; - case SIGNALING_MESSAGE_TERMINATE: - mrcp_server_session_deactivate(signaling_message->session); - break; - default: - break; - } - return TRUE; -} - -static apt_bool_t mrcp_server_engine_channels_update(mrcp_server_session_t *session) -{ - mrcp_channel_t *channel; - mrcp_session_descriptor_t *descriptor = session->offer; - if(!descriptor) { - return FALSE; - } - - mrcp_server_session_state_set(session,SESSION_STATE_INITIALIZING); - - if(mrcp_session_version_get(session) == MRCP_VERSION_1) { - if(session->offer) { - channel = mrcp_server_channel_find(session,&descriptor->resource_name); - if(channel && channel->engine_channel) { - /* open engine channel */ - if(mrcp_engine_channel_virtual_open(channel->engine_channel) == TRUE) { - mrcp_server_session_subrequest_add(session); - } - } - } - } - else { - int i; - mrcp_control_descriptor_t *control_descriptor; - for(i=0; ichannels->nelts; i++) { - channel = APR_ARRAY_IDX(session->channels,i,mrcp_channel_t*); - if(!channel || !channel->engine_channel) continue; - - control_descriptor = mrcp_session_control_media_get(descriptor,i); - if(!control_descriptor) continue; - - if(control_descriptor->port) { - /* open engine channel */ - if(mrcp_engine_channel_virtual_open(channel->engine_channel) == TRUE) { - mrcp_server_session_subrequest_add(session); - } - } - else { - /* close engine channel */ - if(mrcp_engine_channel_virtual_close(channel->engine_channel) == TRUE) { - mrcp_server_session_subrequest_add(session); - } - } - } - } - - if(!session->subrequest_count) { - mrcp_server_session_answer_send(session); - } - return TRUE; -} - -static apt_bool_t mrcp_server_resource_offer_process(mrcp_server_session_t *session, mrcp_session_descriptor_t *descriptor) -{ - if(descriptor->resource_state == TRUE) { - /* setup */ - mrcp_channel_t *channel; - int count = session->channels->nelts; - channel = mrcp_server_channel_find(session,&descriptor->resource_name); - if(channel) { - /* channel already exists */ - return TRUE; - } - /* create new MRCP channel instance */ - channel = mrcp_server_channel_create(session,&descriptor->resource_name,count,NULL); - if(!channel || !channel->resource) { - return FALSE; - } - /* add to channel array */ - apt_log(APT_LOG_MARK,APT_PRIO_DEBUG,"Add Control Channel "APT_NAMESIDRES_FMT" [%d]", - MRCP_SESSION_NAMESID(session), - channel->resource->name.buf, - count); - APR_ARRAY_PUSH(session->channels,mrcp_channel_t*) = channel; - if(channel->engine_channel && channel->engine_channel->termination) { - mpf_termination_t *termination = channel->engine_channel->termination; - /* send add termination request (add to media context) */ - if(mpf_engine_termination_message_add( - session->profile->media_engine, - MPF_ADD_TERMINATION,session->context,termination,NULL, - &session->mpf_task_msg) == TRUE) { - channel->waiting_for_termination = TRUE; - mrcp_server_session_subrequest_add(session); - } - } - } - else { - /* teardown */ - } - return TRUE; -} - -static apt_bool_t mrcp_server_control_media_offer_process(mrcp_server_session_t *session, mrcp_session_descriptor_t *descriptor) -{ - mrcp_channel_t *channel; - mrcp_control_descriptor_t *control_descriptor; - int i; - int count = session->channels->nelts; - if(count > descriptor->control_media_arr->nelts) { - apt_log(APT_LOG_MARK,APT_PRIO_WARNING,"Number of Control Channels [%d] > Number of Control Media in Offer [%d]", - count,descriptor->control_media_arr->nelts); - count = descriptor->control_media_arr->nelts; - } - - /* update existing control channels */ - for(i=0; ichannels,i,mrcp_channel_t*); - if(!channel) continue; - - channel->waiting_for_channel = FALSE; - /* get control descriptor */ - control_descriptor = mrcp_session_control_media_get(descriptor,i); - if(!control_descriptor) continue; - - apt_log(APT_LOG_MARK,APT_PRIO_DEBUG,"Modify Control Channel "APT_NAMESIDRES_FMT" [%d]", - MRCP_SESSION_NAMESID(session), - channel->resource->name.buf, - i); - if(channel->control_channel) { - /* send offer */ - if(mrcp_server_control_channel_modify(channel->control_channel,control_descriptor) == TRUE) { - channel->waiting_for_channel = TRUE; - mrcp_server_session_subrequest_add(session); - } - } - - if(channel->waiting_for_channel == FALSE) { - mrcp_control_descriptor_t *answer = mrcp_control_answer_create(control_descriptor,channel->pool); - answer->port = 0; - answer->session_id = session->base.id; - mrcp_session_control_media_set(session->answer,channel->id,answer); - } - } - - /* add new control channels */ - for(; icontrol_media_arr->nelts; i++) { - /* get control descriptor */ - control_descriptor = mrcp_session_control_media_get(descriptor,i); - if(!control_descriptor) continue; - - /* create new MRCP channel instance */ - channel = mrcp_server_channel_create(session,&control_descriptor->resource_name,i,control_descriptor->cmid_arr); - if(!channel || !channel->resource) continue; - - control_descriptor->session_id = session->base.id; - apt_log(APT_LOG_MARK,APT_PRIO_DEBUG,"Add Control Channel "APT_NAMESIDRES_FMT" [%d]", - MRCP_SESSION_NAMESID(session), - channel->resource->name.buf, - i); - APR_ARRAY_PUSH(session->channels,mrcp_channel_t*) = channel; - - if(channel->control_channel) { - /* send modify connection request */ - if(mrcp_server_control_channel_add(channel->control_channel,control_descriptor) == TRUE) { - channel->waiting_for_channel = TRUE; - mrcp_server_session_subrequest_add(session); - } - } - - if(channel->waiting_for_channel == FALSE) { - mrcp_control_descriptor_t *answer = mrcp_control_answer_create(control_descriptor,channel->pool); - answer->port = 0; - answer->session_id = session->base.id; - mrcp_session_control_media_set(session->answer,channel->id,answer); - } - - if(channel->engine_channel && channel->engine_channel->termination) { - mpf_termination_t *termination = channel->engine_channel->termination; - /* send add termination request (add to media context) */ - if(mpf_engine_termination_message_add( - session->profile->media_engine, - MPF_ADD_TERMINATION,session->context,termination,NULL, - &session->mpf_task_msg) == TRUE) { - channel->waiting_for_termination = TRUE; - mrcp_server_session_subrequest_add(session); - } - } - } - - return TRUE; -} - -static mpf_rtp_termination_descriptor_t* mrcp_server_associations_build(mrcp_server_session_t *session, mrcp_session_descriptor_t *descriptor, mrcp_termination_slot_t *slot) -{ - int i; - mrcp_channel_t *channel; - mpf_audio_stream_t *audio_stream; - mpf_stream_capabilities_t *capabilities = NULL; - mpf_rtp_termination_descriptor_t *rtp_descriptor; - mpf_rtp_media_descriptor_t *media_descriptor = mrcp_session_audio_media_get(descriptor,slot->id); - if(!media_descriptor) { - return NULL; - } - /* construct termination descriptor */ - rtp_descriptor = apr_palloc(session->base.pool,sizeof(mpf_rtp_termination_descriptor_t)); - mpf_rtp_termination_descriptor_init(rtp_descriptor); - rtp_descriptor->audio.local = NULL; - rtp_descriptor->audio.remote = media_descriptor; - rtp_descriptor->audio.settings = session->profile->rtp_settings; - - slot->mid = media_descriptor->mid; - slot->channels = apr_array_make(session->base.pool,1,sizeof(mrcp_channel_t*)); - for(i=0; ichannels->nelts; i++) { - channel = APR_ARRAY_IDX(session->channels,i,mrcp_channel_t*); - if(!channel) continue; - - if(session->terminations->nelts == 1 || (!channel->cmid_arr || mrcp_cmid_find(channel->cmid_arr,slot->mid) == TRUE)) { - APR_ARRAY_PUSH(slot->channels, mrcp_channel_t*) = channel; - - audio_stream = NULL; - if(channel->engine_channel && channel->engine_channel->termination) { - audio_stream = mpf_termination_audio_stream_get(channel->engine_channel->termination); - } - if(!audio_stream) continue; - - if(audio_stream->capabilities) { - /* set descriptor according to media termination(s) - of associated control channel(s) */ - if(capabilities) { - mpf_stream_capabilities_merge( - capabilities, - audio_stream->capabilities, - session->base.pool); - } - else { - capabilities = mpf_stream_capabilities_clone( - audio_stream->capabilities, - session->base.pool); - } - } - - if(mrcp_session_version_get(session) == MRCP_VERSION_1) { - mpf_stream_direction_e direction = audio_stream->direction; - /* implicitly modify the descriptor, if needed */ - if(media_descriptor->direction == STREAM_DIRECTION_NONE && mpf_codec_list_is_empty(&media_descriptor->codec_list) == TRUE) { - /* this is the case when SETUP contains no SDP, assume all the available codecs are offered */ - if(mpf_codec_list_is_empty(&session->profile->rtp_settings->codec_list) == FALSE) { - mpf_codec_list_copy(&media_descriptor->codec_list, - &session->profile->rtp_settings->codec_list, - session->base.pool); - } - } - - media_descriptor->direction |= direction; - if(media_descriptor->state == MPF_MEDIA_DISABLED) { - media_descriptor->state = MPF_MEDIA_ENABLED; - } - } - } - } - if(capabilities) { - capabilities->direction = mpf_stream_reverse_direction_get(capabilities->direction); - rtp_descriptor->audio.capabilities = capabilities; - } - return rtp_descriptor; -} - -static apt_bool_t mrcp_server_associations_set(mrcp_server_session_t *session, mrcp_session_descriptor_t *descriptor, mrcp_termination_slot_t *slot) -{ - int i; - mrcp_channel_t *channel; - for(i=0; ichannels->nelts; i++) { - channel = ((mrcp_channel_t**)slot->channels->elts)[i]; - if(!channel || !channel->engine_channel) continue; - - if(mpf_engine_assoc_message_add( - session->profile->media_engine, - MPF_ADD_ASSOCIATION,session->context,slot->termination,channel->engine_channel->termination, - &session->mpf_task_msg) == TRUE) { - mrcp_server_session_subrequest_add(session); - } - } - return TRUE; -} - -static apt_bool_t mrcp_server_av_media_offer_process(mrcp_server_session_t *session, mrcp_session_descriptor_t *descriptor) -{ - mpf_rtp_termination_descriptor_t *rtp_descriptor; - mrcp_termination_slot_t *slot; - int i; - int count = session->terminations->nelts; - if(!descriptor->audio_media_arr->nelts) { - /* no media to process */ - return TRUE; - } - if(count > descriptor->audio_media_arr->nelts) { - apt_log(APT_LOG_MARK,APT_PRIO_WARNING,"Number of Terminations [%d] > Number of Audio Media in Offer [%d]", - count,descriptor->audio_media_arr->nelts); - count = descriptor->audio_media_arr->nelts; - } - - /* update existing terminations */ - for(i=0; iterminations,i,mrcp_termination_slot_t); - if(!slot->termination) continue; - - /* build associations between specified RTP termination and control channels */ - rtp_descriptor = mrcp_server_associations_build(session,descriptor,slot); - if(!rtp_descriptor) continue; - - /* send modify termination request */ - apt_log(APT_LOG_MARK,APT_PRIO_DEBUG,"Modify Media Termination "APT_NAMESIDRES_FMT" [%d]", - MRCP_SESSION_NAMESID(session), - mpf_termination_name_get(slot->termination), - i); - if(mpf_engine_termination_message_add( - session->profile->media_engine, - MPF_MODIFY_TERMINATION,session->context,slot->termination,rtp_descriptor, - &session->mpf_task_msg) == TRUE) { - slot->waiting = TRUE; - mrcp_server_session_subrequest_add(session); - } - - /* set built associations */ - mrcp_server_associations_set(session,descriptor,slot); - } - - /* add new terminations */ - for(; iaudio_media_arr->nelts; i++) { - mpf_termination_t *termination; - /* create new RTP termination instance */ - termination = mpf_termination_create(session->profile->rtp_termination_factory,session,session->base.pool); - /* add to termination array */ - apt_log(APT_LOG_MARK,APT_PRIO_DEBUG,"Add Media Termination "APT_NAMESIDRES_FMT" [%d]", - MRCP_SESSION_NAMESID(session), - mpf_termination_name_get(termination), - i); - slot = apr_array_push(session->terminations); - slot->id = i; - slot->mid = 0; - slot->waiting = FALSE; - slot->termination = termination; - slot->channels = NULL; - - /* build associations between specified RTP termination and control channels */ - rtp_descriptor = mrcp_server_associations_build(session,descriptor,slot); - if(!rtp_descriptor) continue; - - /* send add termination request (add to media context) */ - if(mpf_engine_termination_message_add( - session->profile->media_engine, - MPF_ADD_TERMINATION,session->context,termination,rtp_descriptor, - &session->mpf_task_msg) == TRUE) { - slot->waiting = TRUE; - mrcp_server_session_subrequest_add(session); - } - - /* set built associations */ - mrcp_server_associations_set(session,descriptor,slot); - } - return TRUE; -} - -static apt_bool_t mrcp_server_session_answer_send(mrcp_server_session_t *session) -{ - apt_bool_t status; - mrcp_session_descriptor_t *descriptor = session->answer; - apt_log(APT_LOG_MARK,APT_PRIO_INFO,"Send Answer "APT_NAMESID_FMT" [c:%d a:%d v:%d] Status %s", - MRCP_SESSION_NAMESID(session), - descriptor->control_media_arr->nelts, - descriptor->audio_media_arr->nelts, - descriptor->video_media_arr->nelts, - mrcp_session_status_phrase_get(descriptor->status)); - status = mrcp_session_answer(&session->base,descriptor); - session->offer = NULL; - session->answer = NULL; - - session->active_request = apt_list_pop_front(session->request_queue); - if(session->active_request) { - mrcp_server_signaling_message_dispatch(session,session->active_request); - } - return status; -} - -static apt_bool_t mrcp_server_session_terminate_send(mrcp_server_session_t *session) -{ - int i; - mrcp_channel_t *channel; - for(i=0; ichannels->nelts; i++) { - channel = APR_ARRAY_IDX(session->channels,i,mrcp_channel_t*); - if(!channel) continue; - - if(channel->control_channel) { - mrcp_server_control_channel_destroy(channel->control_channel); - channel->control_channel = NULL; - } - if(channel->engine_channel) { - mrcp_engine_channel_virtual_destroy(channel->engine_channel); - channel->engine_channel = NULL; - } - } - apt_log(APT_LOG_MARK,APT_PRIO_INFO,"Session Terminated "APT_NAMESID_FMT,MRCP_SESSION_NAMESID(session)); - mrcp_session_terminate_response(&session->base); - return TRUE; -} - - -static mrcp_termination_slot_t* mrcp_server_rtp_termination_find(mrcp_server_session_t *session, mpf_termination_t *termination) -{ - int i; - mrcp_termination_slot_t *slot; - for(i=0; iterminations->nelts; i++) { - slot = &APR_ARRAY_IDX(session->terminations,i,mrcp_termination_slot_t); - if(slot->termination == termination) { - return slot; - } - } - return NULL; -} - -static mrcp_channel_t* mrcp_server_channel_termination_find(mrcp_server_session_t *session, mpf_termination_t *termination) -{ - int i; - mrcp_channel_t *channel; - for(i=0; ichannels->nelts; i++) { - channel = APR_ARRAY_IDX(session->channels,i,mrcp_channel_t*); - if(!channel) continue; - - if(channel->engine_channel && channel->engine_channel->termination == termination) { - return channel; - } - } - return NULL; -} - -static mrcp_channel_t* mrcp_server_channel_find(mrcp_server_session_t *session, const apt_str_t *resource_name) -{ - int i; - mrcp_channel_t *channel; - for(i=0; ichannels->nelts; i++) { - channel = APR_ARRAY_IDX(session->channels,i,mrcp_channel_t*); - if(!channel) continue; - - if(apt_string_compare(&channel->resource->name,resource_name) == TRUE) { - return channel; - } - } - return NULL; -} - -static apt_bool_t mrcp_server_on_termination_modify(mrcp_server_session_t *session, const mpf_message_t *mpf_message) -{ - mrcp_termination_slot_t *termination_slot; - apt_log(APT_LOG_MARK,APT_PRIO_DEBUG,"Media Termination Modified "APT_NAMESIDRES_FMT, - MRCP_SESSION_NAMESID(session), - mpf_termination_name_get(mpf_message->termination)); - termination_slot = mrcp_server_rtp_termination_find(session,mpf_message->termination); - if(termination_slot) { - /* rtp termination */ - mpf_rtp_termination_descriptor_t *rtp_descriptor; - if(termination_slot->waiting == FALSE) { - return FALSE; - } - termination_slot->waiting = FALSE; - rtp_descriptor = mpf_message->descriptor; - if(rtp_descriptor->audio.local) { - session->answer->ip = rtp_descriptor->audio.local->ip; - session->answer->ext_ip = rtp_descriptor->audio.local->ext_ip; - mrcp_session_audio_media_set(session->answer,termination_slot->id,rtp_descriptor->audio.local); - } - mrcp_server_session_subrequest_remove(session); - } - else { - /* engine channel termination */ - mrcp_channel_t *channel = mrcp_server_channel_termination_find(session,mpf_message->termination); - if(channel && channel->waiting_for_termination == TRUE) { - channel->waiting_for_termination = FALSE; - mrcp_server_session_subrequest_remove(session); - } - } - return TRUE; -} - -static apt_bool_t mrcp_server_on_termination_subtract(mrcp_server_session_t *session, const mpf_message_t *mpf_message) -{ - mrcp_termination_slot_t *termination_slot; - apt_log(APT_LOG_MARK,APT_PRIO_DEBUG,"Media Termination Subtracted "APT_NAMESIDRES_FMT, - MRCP_SESSION_NAMESID(session), - mpf_termination_name_get(mpf_message->termination)); - termination_slot = mrcp_server_rtp_termination_find(session,mpf_message->termination); - if(termination_slot) { - /* rtp termination */ - if(termination_slot->waiting == FALSE) { - return FALSE; - } - termination_slot->waiting = FALSE; - mrcp_server_session_subrequest_remove(session); - } - else { - /* engine channel termination */ - mrcp_channel_t *channel = mrcp_server_channel_termination_find(session,mpf_message->termination); - if(channel && channel->waiting_for_termination == TRUE) { - channel->waiting_for_termination = FALSE; - mrcp_server_session_subrequest_remove(session); - } - } - return TRUE; -} - -apt_bool_t mrcp_server_mpf_message_process(mpf_message_container_t *mpf_message_container) -{ - apr_size_t i; - mrcp_server_session_t *session; - const mpf_message_t *mpf_message; - for(i=0; icount; i++) { - mpf_message = &mpf_message_container->messages[i]; - if(mpf_message->context) { - session = mpf_engine_context_object_get(mpf_message->context); - } - else { - session = NULL; - } - if(!session) { - apt_log(APT_LOG_MARK,APT_PRIO_DEBUG,"Received MPF Message: NULL session"); - continue; - } - if(mpf_message->message_type == MPF_MESSAGE_TYPE_RESPONSE) { - switch(mpf_message->command_id) { - case MPF_ADD_TERMINATION: - mrcp_server_on_termination_modify(session,mpf_message); - break; - case MPF_MODIFY_TERMINATION: - mrcp_server_on_termination_modify(session,mpf_message); - break; - case MPF_SUBTRACT_TERMINATION: - mrcp_server_on_termination_subtract(session,mpf_message); - break; - case MPF_ADD_ASSOCIATION: - case MPF_REMOVE_ASSOCIATION: - case MPF_RESET_ASSOCIATIONS: - case MPF_APPLY_TOPOLOGY: - case MPF_DESTROY_TOPOLOGY: - mrcp_server_session_subrequest_remove(session); - break; - default: - break; - } - } - else if(mpf_message->message_type == MPF_MESSAGE_TYPE_EVENT) { - apt_log(APT_LOG_MARK,APT_PRIO_DEBUG,"Process MPF Event"); - } - } - return TRUE; -} - -static apt_bool_t state_machine_on_message_dispatch(mrcp_state_machine_t *state_machine, mrcp_message_t *message) -{ - mrcp_channel_t *channel = state_machine->obj; - - if(message->start_line.message_type == MRCP_MESSAGE_TYPE_REQUEST) { - /* send request message to engine for actual processing */ - if(channel->engine_channel) { - mrcp_engine_channel_request_process(channel->engine_channel,message); - } - } - else if(message->start_line.message_type == MRCP_MESSAGE_TYPE_RESPONSE) { - mrcp_server_session_t *session = (mrcp_server_session_t*)channel->session; - /* send response message to client */ - if(channel->control_channel) { - /* MRCPv2 */ - mrcp_server_control_message_send(channel->control_channel,message); - } - else { - /* MRCPv1 */ - mrcp_session_control_response(channel->session,message); - } - - session->active_request = apt_list_pop_front(session->request_queue); - if(session->active_request) { - mrcp_server_signaling_message_dispatch(session,session->active_request); - } - } - else { - /* send event message to client */ - if(channel->control_channel) { - /* MRCPv2 */ - mrcp_server_control_message_send(channel->control_channel,message); - } - else { - /* MRCPv1 */ - mrcp_session_control_response(channel->session,message); - } - } - return TRUE; -} - -static apt_bool_t state_machine_on_deactivate(mrcp_state_machine_t *state_machine) -{ - mrcp_channel_t *channel = state_machine->obj; - mrcp_server_session_t *session = (mrcp_server_session_t*)channel->session; - mrcp_server_session_subrequest_remove(session); - return TRUE; -} diff --git a/libs/unimrcp/libs/mrcp-signaling/Makefile.am b/libs/unimrcp/libs/mrcp-signaling/Makefile.am deleted file mode 100644 index e274f1ce83b..00000000000 --- a/libs/unimrcp/libs/mrcp-signaling/Makefile.am +++ /dev/null @@ -1,17 +0,0 @@ -MAINTAINERCLEANFILES = Makefile.in - -AM_CPPFLAGS = -I$(top_srcdir)/libs/mrcp-signaling/include \ - -I$(top_srcdir)/libs/mrcp/include \ - -I$(top_srcdir)/libs/mpf/include \ - -I$(top_srcdir)/libs/apr-toolkit/include \ - $(UNIMRCP_APR_INCLUDES) - -noinst_LTLIBRARIES = libmrcpsignaling.la - -include_HEADERS = include/mrcp_sig_types.h \ - include/mrcp_sig_agent.h \ - include/mrcp_session.h \ - include/mrcp_session_descriptor.h - -libmrcpsignaling_la_SOURCES = src/mrcp_sig_agent.c \ - src/mrcp_session_descriptor.c \ No newline at end of file diff --git a/libs/unimrcp/libs/mrcp-signaling/include/mrcp_session.h b/libs/unimrcp/libs/mrcp-signaling/include/mrcp_session.h deleted file mode 100644 index f4b9ebcc960..00000000000 --- a/libs/unimrcp/libs/mrcp-signaling/include/mrcp_session.h +++ /dev/null @@ -1,206 +0,0 @@ -/* - * Copyright 2008-2014 Arsen Chaloyan - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - * - * $Id: mrcp_session.h 2136 2014-07-04 06:33:36Z achaloyan@gmail.com $ - */ - -#ifndef MRCP_SESSION_H -#define MRCP_SESSION_H - -/** - * @file mrcp_session.h - * @brief Abstract MRCP Session - */ - -#include "mrcp_sig_types.h" -#include "mpf_types.h" -#include "apt_string.h" - -APT_BEGIN_EXTERN_C - -/** Macro to log session pointers */ -#define MRCP_SESSION_PTR(session) (session) -/** Macro to log session string identifiers */ -#define MRCP_SESSION_SID(session) \ - (session)->id.buf ? (session)->id.buf : "new" - -/** Macro to log session pointers and string identifiers */ -#define MRCP_SESSION_PTRSID(session) \ - MRCP_SESSION_PTR(session), MRCP_SESSION_SID(session) - -/** MRCP session request vtable declaration */ -typedef struct mrcp_session_request_vtable_t mrcp_session_request_vtable_t; -/** MRCP session response vtable declaration */ -typedef struct mrcp_session_response_vtable_t mrcp_session_response_vtable_t; -/** MRCP session event vtable declaration */ -typedef struct mrcp_session_event_vtable_t mrcp_session_event_vtable_t; - - -/** MRCP session */ -struct mrcp_session_t { - /** Memory pool to allocate memory from */ - apr_pool_t *pool; - /** External object associated with session */ - void *obj; - /** External logger object associated with session */ - void *log_obj; - /** Informative name of the session used for debugging */ - const char *name; - - /** Signaling (session managment) agent */ - mrcp_sig_agent_t *signaling_agent; - /** MRCPv2 connection agent, if any */ - void *connection_agent; - /** Media processing engine */ - mpf_engine_t *media_engine; - /** RTP termination factory */ - mpf_termination_factory_t *rtp_factory; - - /** Session identifier */ - apt_str_t id; - /** Last request identifier sent for client, received for server */ - mrcp_request_id last_request_id; - - /** Virtual request methods */ - const mrcp_session_request_vtable_t *request_vtable; - /** Virtual response methods */ - const mrcp_session_response_vtable_t *response_vtable; - /** Virtual event methods */ - const mrcp_session_event_vtable_t *event_vtable; -}; - - -/** MRCP session request vtable */ -struct mrcp_session_request_vtable_t { - /** Offer session descriptor */ - apt_bool_t (*offer)(mrcp_session_t *session, mrcp_session_descriptor_t *descriptor); - /** Terminate session */ - apt_bool_t (*terminate)(mrcp_session_t *session); - /** Control session (MRCPv1 only) */ - apt_bool_t (*control)(mrcp_session_t *session, mrcp_message_t *message); - /** Discover resources */ - apt_bool_t (*discover)(mrcp_session_t *session, mrcp_session_descriptor_t *descriptor); -}; - -/** MRCP session response vtable */ -struct mrcp_session_response_vtable_t { - /** Answer with remote session descriptor */ - apt_bool_t (*on_answer)(mrcp_session_t *session, mrcp_session_descriptor_t *descriptor); - /** Session terminated */ - apt_bool_t (*on_terminate)(mrcp_session_t *session); - /** Control session (MRCPv1 only) */ - apt_bool_t (*on_control)(mrcp_session_t *session, mrcp_message_t *message); - /** Response to resource discovery request */ - apt_bool_t (*on_discover)(mrcp_session_t *session, mrcp_session_descriptor_t *descriptor); -}; - -/** MRCP session event vtable */ -struct mrcp_session_event_vtable_t { - /** Received session termination event without appropriate request */ - apt_bool_t (*on_terminate)(mrcp_session_t *session); -}; - - -/** Create new memory pool and allocate session object from the pool. */ -MRCP_DECLARE(mrcp_session_t*) mrcp_session_create(apr_size_t padding); - -/** Destroy session and assosiated memory pool. */ -MRCP_DECLARE(void) mrcp_session_destroy(mrcp_session_t *session); - - -/** Offer */ -static APR_INLINE apt_bool_t mrcp_session_offer(mrcp_session_t *session, mrcp_session_descriptor_t *descriptor) -{ - if(session->request_vtable->offer) { - return session->request_vtable->offer(session,descriptor); - } - return FALSE; -} - -/** Terminate */ -static APR_INLINE apt_bool_t mrcp_session_terminate_request(mrcp_session_t *session) -{ - if(session->request_vtable->terminate) { - return session->request_vtable->terminate(session); - } - return FALSE; -} - -/** Answer */ -static APR_INLINE apt_bool_t mrcp_session_answer(mrcp_session_t *session, mrcp_session_descriptor_t *descriptor) -{ - if(session->response_vtable->on_answer) { - return session->response_vtable->on_answer(session,descriptor); - } - return FALSE; -} - -/** On terminate response */ -static APR_INLINE apt_bool_t mrcp_session_terminate_response(mrcp_session_t *session) -{ - if(session->response_vtable->on_terminate) { - return session->response_vtable->on_terminate(session); - } - return FALSE; -} - -/** On terminate event */ -static APR_INLINE apt_bool_t mrcp_session_terminate_event(mrcp_session_t *session) -{ - if(session->event_vtable->on_terminate) { - return session->event_vtable->on_terminate(session); - } - return FALSE; -} - -/** Control request */ -static APR_INLINE apt_bool_t mrcp_session_control_request(mrcp_session_t *session, mrcp_message_t *message) -{ - if(session->request_vtable->control) { - return session->request_vtable->control(session,message); - } - return FALSE; -} - -/** On control response/event */ -static APR_INLINE apt_bool_t mrcp_session_control_response(mrcp_session_t *session, mrcp_message_t *message) -{ - if(session->response_vtable->on_control) { - return session->response_vtable->on_control(session,message); - } - return FALSE; -} - -/** Resource discovery request */ -static APR_INLINE apt_bool_t mrcp_session_discover_request(mrcp_session_t *session, mrcp_session_descriptor_t *descriptor) -{ - if(session->request_vtable->discover) { - return session->request_vtable->discover(session,descriptor); - } - return FALSE; -} - -/** On resource discovery response */ -static APR_INLINE apt_bool_t mrcp_session_discover_response(mrcp_session_t *session, mrcp_session_descriptor_t *descriptor) -{ - if(session->response_vtable->on_discover) { - return session->response_vtable->on_discover(session,descriptor); - } - return FALSE; -} - -APT_END_EXTERN_C - -#endif /* MRCP_SESSION_H */ diff --git a/libs/unimrcp/libs/mrcp-signaling/include/mrcp_session_descriptor.h b/libs/unimrcp/libs/mrcp-signaling/include/mrcp_session_descriptor.h deleted file mode 100644 index e1e9b484480..00000000000 --- a/libs/unimrcp/libs/mrcp-signaling/include/mrcp_session_descriptor.h +++ /dev/null @@ -1,150 +0,0 @@ -/* - * Copyright 2008-2014 Arsen Chaloyan - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - * - * $Id: mrcp_session_descriptor.h 2136 2014-07-04 06:33:36Z achaloyan@gmail.com $ - */ - -#ifndef MRCP_SESSION_DESCRIPTOR_H -#define MRCP_SESSION_DESCRIPTOR_H - -/** - * @file mrcp_session_descriptor.h - * @brief MRCP Session Descriptor - */ - -#include "mpf_rtp_descriptor.h" -#include "mrcp_sig_types.h" - -APT_BEGIN_EXTERN_C - -/** MRCP session status */ -typedef enum { - MRCP_SESSION_STATUS_OK, /**< OK */ - MRCP_SESSION_STATUS_NO_SUCH_RESOURCE, /**< no such resource found */ - MRCP_SESSION_STATUS_UNACCEPTABLE_RESOURCE,/**< resource exists, but no implementation (plugin) found */ - MRCP_SESSION_STATUS_UNAVAILABLE_RESOURCE, /**< resource exists, but is temporary unavailable */ - MRCP_SESSION_STATUS_ERROR /**< internal error occurred */ -} mrcp_session_status_e; - -/** MRCP session descriptor */ -struct mrcp_session_descriptor_t { - /** SDP origin */ - apt_str_t origin; - /** Session level IP address */ - apt_str_t ip; - /** Session level external (NAT) IP address */ - apt_str_t ext_ip; - /** Session level resource name (MRCPv1 only) */ - apt_str_t resource_name; - /** Resource state (MRCPv1 only) */ - apt_bool_t resource_state; - /** Session status */ - mrcp_session_status_e status; - /** Response code (SIP for MRCPv2 and RTSP for MRCPv1) */ - int response_code; - - /** MRCP control media array (mrcp_control_descriptor_t) */ - apr_array_header_t *control_media_arr; - /** Audio media array (mpf_rtp_media_descriptor_t) */ - apr_array_header_t *audio_media_arr; - /** Video media array (mpf_rtp_media_descriptor_t) */ - apr_array_header_t *video_media_arr; -}; - -/** Create session descriptor */ -MRCP_DECLARE(mrcp_session_descriptor_t*) mrcp_session_descriptor_create(apr_pool_t *pool); - -static APR_INLINE apr_size_t mrcp_session_media_count_get(const mrcp_session_descriptor_t *descriptor) -{ - return descriptor->control_media_arr->nelts + descriptor->audio_media_arr->nelts + descriptor->video_media_arr->nelts; -} - -static APR_INLINE apr_size_t mrcp_session_control_media_add(mrcp_session_descriptor_t *descriptor, void *media) -{ - APR_ARRAY_PUSH(descriptor->control_media_arr,void*) = media; - return mrcp_session_media_count_get(descriptor) - 1; -} - -static APR_INLINE void* mrcp_session_control_media_get(const mrcp_session_descriptor_t *descriptor, apr_size_t id) -{ - if((int)id >= descriptor->control_media_arr->nelts) { - return NULL; - } - return APR_ARRAY_IDX(descriptor->control_media_arr,id,void*); -} - -static APR_INLINE apt_bool_t mrcp_session_control_media_set(mrcp_session_descriptor_t *descriptor, apr_size_t id, void *media) -{ - if((int)id >= descriptor->control_media_arr->nelts) { - return FALSE; - } - APR_ARRAY_IDX(descriptor->control_media_arr,id,void*) = media; - return TRUE; -} - - -static APR_INLINE apr_size_t mrcp_session_audio_media_add(mrcp_session_descriptor_t *descriptor, mpf_rtp_media_descriptor_t *media) -{ - APR_ARRAY_PUSH(descriptor->audio_media_arr,mpf_rtp_media_descriptor_t*) = media; - return mrcp_session_media_count_get(descriptor) - 1; -} - -static APR_INLINE mpf_rtp_media_descriptor_t* mrcp_session_audio_media_get(const mrcp_session_descriptor_t *descriptor, apr_size_t id) -{ - if((int)id >= descriptor->audio_media_arr->nelts) { - return NULL; - } - return APR_ARRAY_IDX(descriptor->audio_media_arr,id,mpf_rtp_media_descriptor_t*); -} - -static APR_INLINE apt_bool_t mrcp_session_audio_media_set(const mrcp_session_descriptor_t *descriptor, apr_size_t id, mpf_rtp_media_descriptor_t* media) -{ - if((int)id >= descriptor->audio_media_arr->nelts) { - return FALSE; - } - APR_ARRAY_IDX(descriptor->audio_media_arr,id,mpf_rtp_media_descriptor_t*) = media; - return TRUE; -} - - -static APR_INLINE apr_size_t mrcp_session_video_media_add(mrcp_session_descriptor_t *descriptor, mpf_rtp_media_descriptor_t *media) -{ - APR_ARRAY_PUSH(descriptor->video_media_arr,mpf_rtp_media_descriptor_t*) = media; - return mrcp_session_media_count_get(descriptor) - 1; -} - -static APR_INLINE mpf_rtp_media_descriptor_t* mrcp_session_video_media_get(const mrcp_session_descriptor_t *descriptor, apr_size_t id) -{ - if((int)id >= descriptor->video_media_arr->nelts) { - return NULL; - } - return APR_ARRAY_IDX(descriptor->video_media_arr,id,mpf_rtp_media_descriptor_t*); -} - -static APR_INLINE apt_bool_t mrcp_session_video_media_set(mrcp_session_descriptor_t *descriptor, apr_size_t id, mpf_rtp_media_descriptor_t* media) -{ - if((int)id >= descriptor->video_media_arr->nelts) { - return FALSE; - } - APR_ARRAY_IDX(descriptor->video_media_arr,id,mpf_rtp_media_descriptor_t*) = media; - return TRUE; -} - -/** Get session status phrase */ -MRCP_DECLARE(const char*) mrcp_session_status_phrase_get(mrcp_session_status_e status); - -APT_END_EXTERN_C - -#endif /* MRCP_SESSION_DESCRIPTOR_H */ diff --git a/libs/unimrcp/libs/mrcp-signaling/include/mrcp_sig_agent.h b/libs/unimrcp/libs/mrcp-signaling/include/mrcp_sig_agent.h deleted file mode 100644 index a7595066d53..00000000000 --- a/libs/unimrcp/libs/mrcp-signaling/include/mrcp_sig_agent.h +++ /dev/null @@ -1,97 +0,0 @@ -/* - * Copyright 2008-2014 Arsen Chaloyan - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - * - * $Id: mrcp_sig_agent.h 2253 2014-11-21 02:57:19Z achaloyan@gmail.com $ - */ - -#ifndef MRCP_SIG_AGENT_H -#define MRCP_SIG_AGENT_H - -/** - * @file mrcp_sig_agent.h - * @brief Abstract MRCP Signaling Agent - */ - -#include -#include -#include "mrcp_sig_types.h" -#include "apt_task.h" - -APT_BEGIN_EXTERN_C - -/** Signaling settings */ -struct mrcp_sig_settings_t { - /** Server IP address */ - char *server_ip; - /** Server port */ - apr_port_t server_port; - /** Server SIP user name (v2 only) */ - char *user_name; - /** Resource location (v1 only) */ - char *resource_location; - /** Map of the MRCP resource names (v1 only) */ - apr_table_t *resource_map; - /** Force destination IP address. Should be used only in case - SDP contains incorrect connection address (local IP address behind NAT) */ - apt_bool_t force_destination; - /** Optional feature tags */ - char *feature_tags; -}; - -/** MRCP signaling agent */ -struct mrcp_sig_agent_t { - /** Agent identifier */ - const char *id; - /** Memory pool to allocate memory from */ - apr_pool_t *pool; - /** External object associated with agent */ - void *obj; - /** Parent object (client/server) */ - void *parent; - /** MRCP resource factory */ - mrcp_resource_factory_t *resource_factory; - /** Task interface */ - apt_task_t *task; - /** Task message pool used to allocate signaling agent messages */ - apt_task_msg_pool_t *msg_pool; - - /** Virtual create_server_session */ - mrcp_session_t* (*create_server_session)(mrcp_sig_agent_t *signaling_agent); - /** Virtual create_client_session */ - apt_bool_t (*create_client_session)(mrcp_session_t *session, const mrcp_sig_settings_t *settings); -}; - -/** Create signaling agent. */ -MRCP_DECLARE(mrcp_sig_agent_t*) mrcp_signaling_agent_create(const char *id, void *obj, apr_pool_t *pool); - -/** Create factory of signaling agents. */ -MRCP_DECLARE(mrcp_sa_factory_t*) mrcp_sa_factory_create(apr_pool_t *pool); - -/** Add signaling agent to factory. */ -MRCP_DECLARE(apt_bool_t) mrcp_sa_factory_agent_add(mrcp_sa_factory_t *sa_factory, mrcp_sig_agent_t *sig_agent); - -/** Determine whether factory is empty. */ -MRCP_DECLARE(apt_bool_t) mrcp_sa_factory_is_empty(const mrcp_sa_factory_t *sa_factory); - -/** Select next available signaling agent. */ -MRCP_DECLARE(mrcp_sig_agent_t*) mrcp_sa_factory_agent_select(mrcp_sa_factory_t *sa_factory); - -/** Allocate MRCP signaling settings. */ -MRCP_DECLARE(mrcp_sig_settings_t*) mrcp_signaling_settings_alloc(apr_pool_t *pool); - - -APT_END_EXTERN_C - -#endif /* MRCP_SIG_AGENT_H */ diff --git a/libs/unimrcp/libs/mrcp-signaling/include/mrcp_sig_types.h b/libs/unimrcp/libs/mrcp-signaling/include/mrcp_sig_types.h deleted file mode 100644 index 6dc589036e7..00000000000 --- a/libs/unimrcp/libs/mrcp-signaling/include/mrcp_sig_types.h +++ /dev/null @@ -1,48 +0,0 @@ -/* - * Copyright 2008-2014 Arsen Chaloyan - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - * - * $Id: mrcp_sig_types.h 2136 2014-07-04 06:33:36Z achaloyan@gmail.com $ - */ - -#ifndef MRCP_SIG_TYPES_H -#define MRCP_SIG_TYPES_H - -/** - * @file mrcp_sig_types.h - * @brief MRCP Signaling Types Declaration - */ - -#include "mrcp_types.h" - -APT_BEGIN_EXTERN_C - -/** Opaque MRCP signaling settings declaration */ -typedef struct mrcp_sig_settings_t mrcp_sig_settings_t; - -/** Opaque MRCP signaling agent declaration */ -typedef struct mrcp_sig_agent_t mrcp_sig_agent_t; - -/** Opaque MRCP signaling agent factory declaration */ -typedef struct mrcp_sa_factory_t mrcp_sa_factory_t; - -/** Opaque MRCP session declaration */ -typedef struct mrcp_session_t mrcp_session_t; - -/** Opaque MRCP session descriptor declaration */ -typedef struct mrcp_session_descriptor_t mrcp_session_descriptor_t; - -APT_END_EXTERN_C - -#endif /* MRCP_SIG_TYPES_H */ diff --git a/libs/unimrcp/libs/mrcp-signaling/mrcpsignaling.2010.vcxproj.filters b/libs/unimrcp/libs/mrcp-signaling/mrcpsignaling.2010.vcxproj.filters deleted file mode 100644 index 4e5d30c3da6..00000000000 --- a/libs/unimrcp/libs/mrcp-signaling/mrcpsignaling.2010.vcxproj.filters +++ /dev/null @@ -1,35 +0,0 @@ - - - - - {93995380-89BD-4b04-88EB-625FBE52EBFB} - h;hpp;hxx;hm;inl;inc;xsd - - - {f3dc550f-1a0f-4b9e-b077-3b6940dc5531} - cpp;c;cc;cxx;def;odl;idl;hpj;bat;asm;asmx - - - - - include - - - include - - - include - - - include - - - - - src - - - src - - - \ No newline at end of file diff --git a/libs/unimrcp/libs/mrcp-signaling/mrcpsignaling.2017.vcxproj b/libs/unimrcp/libs/mrcp-signaling/mrcpsignaling.2017.vcxproj deleted file mode 100644 index 8325ee4df40..00000000000 --- a/libs/unimrcp/libs/mrcp-signaling/mrcpsignaling.2017.vcxproj +++ /dev/null @@ -1,125 +0,0 @@ - - - - - Debug - Win32 - - - Debug - x64 - - - Release - Win32 - - - Release - x64 - - - - mrcpsignaling - {12A49562-BAB9-43A3-A21D-15B60BBB4C31} - mrcpsignaling - Win32Proj - - - - StaticLibrary - Unicode - true - $(DefaultPlatformToolset) - - - StaticLibrary - Unicode - $(DefaultPlatformToolset) - - - StaticLibrary - Unicode - true - $(DefaultPlatformToolset) - - - StaticLibrary - Unicode - $(DefaultPlatformToolset) - - - - - - - - - - - - - - - - - - - - - - - - - - - <_ProjectFileVersion>10.0.30319.1 - $(PlatformName)\$(Configuration)\ - $(PlatformName)\$(Configuration)\ - $(SolutionDir)$(PlatformName)\$(Configuration)\ - $(PlatformName)\$(Configuration)\ - $(PlatformName)\$(Configuration)\ - $(PlatformName)\$(Configuration)\ - $(SolutionDir)$(PlatformName)\$(Configuration)\ - $(PlatformName)\$(Configuration)\ - - - - APT_STATIC_LIB;MPF_STATIC_LIB;MRCP_STATIC_LIB;%(PreprocessorDefinitions) - - - - - X64 - - - APT_STATIC_LIB;MPF_STATIC_LIB;MRCP_STATIC_LIB;%(PreprocessorDefinitions) - ProgramDatabase - - - - - APT_STATIC_LIB;MPF_STATIC_LIB;MRCP_STATIC_LIB;%(PreprocessorDefinitions) - - - - - X64 - - - APT_STATIC_LIB;MPF_STATIC_LIB;MRCP_STATIC_LIB;%(PreprocessorDefinitions) - - - - - - - - - - - - - - - - \ No newline at end of file diff --git a/libs/unimrcp/libs/mrcp-signaling/mrcpsignaling.vcproj b/libs/unimrcp/libs/mrcp-signaling/mrcpsignaling.vcproj deleted file mode 100644 index 6aa8163acc4..00000000000 --- a/libs/unimrcp/libs/mrcp-signaling/mrcpsignaling.vcproj +++ /dev/null @@ -1,276 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/libs/unimrcp/libs/mrcp-signaling/mrcpsignaling.vcxproj b/libs/unimrcp/libs/mrcp-signaling/mrcpsignaling.vcxproj deleted file mode 100644 index 13a37086936..00000000000 --- a/libs/unimrcp/libs/mrcp-signaling/mrcpsignaling.vcxproj +++ /dev/null @@ -1,124 +0,0 @@ - - - - - Debug - Win32 - - - Debug - x64 - - - Release - Win32 - - - Release - x64 - - - - {12A49562-BAB9-43A3-A21D-15B60BBB4C31} - mrcpsignaling - Win32Proj - - - - StaticLibrary - Unicode - true - - - StaticLibrary - Unicode - - - StaticLibrary - Unicode - true - - - StaticLibrary - Unicode - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - <_ProjectFileVersion>10.0.30319.1 - AllRules.ruleset - - - AllRules.ruleset - - - AllRules.ruleset - - - AllRules.ruleset - - - - - - X64 - - - ProgramDatabase - - - - - X64 - - - - - - - - - - - - - - - {b5a00bfa-6083-4fae-a097-71642d6473b5} - false - - - {1c320193-46a6-4b34-9c56-8ab584fc1b56} - false - - - - - - \ No newline at end of file diff --git a/libs/unimrcp/libs/mrcp-signaling/mrcpsignaling.vcxproj.filters b/libs/unimrcp/libs/mrcp-signaling/mrcpsignaling.vcxproj.filters deleted file mode 100644 index 7b9d1aa49b4..00000000000 --- a/libs/unimrcp/libs/mrcp-signaling/mrcpsignaling.vcxproj.filters +++ /dev/null @@ -1,35 +0,0 @@ - - - - - {93995380-89BD-4b04-88EB-625FBE52EBFB} - h;hpp;hxx;hm;inl;inc;xsd - - - {38ec7b90-673c-4c54-9c3a-13d5270556a0} - cpp;c;cc;cxx;def;odl;idl;hpj;bat;asm;asmx - - - - - include - - - include - - - include - - - include - - - - - src - - - src - - - \ No newline at end of file diff --git a/libs/unimrcp/libs/mrcp-signaling/src/mrcp_session_descriptor.c b/libs/unimrcp/libs/mrcp-signaling/src/mrcp_session_descriptor.c deleted file mode 100644 index a14545708b5..00000000000 --- a/libs/unimrcp/libs/mrcp-signaling/src/mrcp_session_descriptor.c +++ /dev/null @@ -1,52 +0,0 @@ -/* - * Copyright 2008-2014 Arsen Chaloyan - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - * - * $Id: mrcp_session_descriptor.c 2136 2014-07-04 06:33:36Z achaloyan@gmail.com $ - */ - -#include "mrcp_session_descriptor.h" - -MRCP_DECLARE(mrcp_session_descriptor_t*) mrcp_session_descriptor_create(apr_pool_t *pool) -{ - mrcp_session_descriptor_t *descriptor = apr_palloc(pool,sizeof(mrcp_session_descriptor_t)); - apt_string_reset(&descriptor->origin); - apt_string_reset(&descriptor->ip); - apt_string_reset(&descriptor->ext_ip); - apt_string_reset(&descriptor->resource_name); - descriptor->resource_state = FALSE; - descriptor->status = MRCP_SESSION_STATUS_OK; - descriptor->response_code = 0; - descriptor->control_media_arr = apr_array_make(pool,1,sizeof(void*)); - descriptor->audio_media_arr = apr_array_make(pool,1,sizeof(mpf_rtp_media_descriptor_t*)); - descriptor->video_media_arr = apr_array_make(pool,0,sizeof(mpf_rtp_media_descriptor_t*)); - return descriptor; -} - -MRCP_DECLARE(const char*) mrcp_session_status_phrase_get(mrcp_session_status_e status) -{ - switch(status) { - case MRCP_SESSION_STATUS_OK: - return "OK"; - case MRCP_SESSION_STATUS_NO_SUCH_RESOURCE: - return "Not Found"; - case MRCP_SESSION_STATUS_UNACCEPTABLE_RESOURCE: - return "Not Acceptable"; - case MRCP_SESSION_STATUS_UNAVAILABLE_RESOURCE: - return "Unavailable"; - case MRCP_SESSION_STATUS_ERROR: - return "Error"; - } - return "Unknown"; -} diff --git a/libs/unimrcp/libs/mrcp-signaling/src/mrcp_sig_agent.c b/libs/unimrcp/libs/mrcp-signaling/src/mrcp_sig_agent.c deleted file mode 100644 index dca8de94c32..00000000000 --- a/libs/unimrcp/libs/mrcp-signaling/src/mrcp_sig_agent.c +++ /dev/null @@ -1,128 +0,0 @@ -/* - * Copyright 2008-2014 Arsen Chaloyan - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - * - * $Id: mrcp_sig_agent.c 2136 2014-07-04 06:33:36Z achaloyan@gmail.com $ - */ - -#include "mrcp_sig_agent.h" -#include "mrcp_session.h" -#include "apt_pool.h" - -/** Factory of MRCP signaling agents */ -struct mrcp_sa_factory_t { - /** Array of pointers to signaling agents */ - apr_array_header_t *agents_arr; - /** Index of the current agent */ - int index; -}; - -/** Create signaling agent */ -MRCP_DECLARE(mrcp_sig_agent_t*) mrcp_signaling_agent_create(const char *id, void *obj, apr_pool_t *pool) -{ - mrcp_sig_agent_t *sig_agent = apr_palloc(pool,sizeof(mrcp_sig_agent_t)); - sig_agent->id = id; - sig_agent->pool = pool; - sig_agent->obj = obj; - sig_agent->resource_factory = NULL; - sig_agent->parent = NULL; - sig_agent->task = NULL; - sig_agent->msg_pool = NULL; - sig_agent->create_server_session = NULL; - sig_agent->create_client_session = NULL; - return sig_agent; -} - -/** Create factory of signaling agents */ -MRCP_DECLARE(mrcp_sa_factory_t*) mrcp_sa_factory_create(apr_pool_t *pool) -{ - mrcp_sa_factory_t *sa_factory = apr_palloc(pool,sizeof(mrcp_sa_factory_t)); - sa_factory->agents_arr = apr_array_make(pool,1,sizeof(mrcp_sig_agent_t*)); - sa_factory->index = 0; - return sa_factory; -} - -/** Add signaling agent to pool */ -MRCP_DECLARE(apt_bool_t) mrcp_sa_factory_agent_add(mrcp_sa_factory_t *sa_factory, mrcp_sig_agent_t *sig_agent) -{ - mrcp_sig_agent_t **slot; - if(!sig_agent) - return FALSE; - - slot = apr_array_push(sa_factory->agents_arr); - *slot = sig_agent; - return TRUE; -} - -/** Determine whether factory is empty. */ -MRCP_DECLARE(apt_bool_t) mrcp_sa_factory_is_empty(const mrcp_sa_factory_t *sa_factory) -{ - return apr_is_empty_array(sa_factory->agents_arr); -} - -/** Select next available signaling agent */ -MRCP_DECLARE(mrcp_sig_agent_t*) mrcp_sa_factory_agent_select(mrcp_sa_factory_t *sa_factory) -{ - mrcp_sig_agent_t *sig_agent = APR_ARRAY_IDX(sa_factory->agents_arr, sa_factory->index, mrcp_sig_agent_t*); - if(++sa_factory->index == sa_factory->agents_arr->nelts) { - sa_factory->index = 0; - } - return sig_agent; -} - -/** Allocate MRCP signaling settings */ -MRCP_DECLARE(mrcp_sig_settings_t*) mrcp_signaling_settings_alloc(apr_pool_t *pool) -{ - mrcp_sig_settings_t *settings = apr_palloc(pool,sizeof(mrcp_sig_settings_t)); - settings->server_ip = NULL; - settings->server_port = 0; - settings->user_name = NULL; - settings->resource_location = NULL; - settings->resource_map = apr_table_make(pool,2); - settings->force_destination = FALSE; - settings->feature_tags = NULL; - return settings; -} - - -MRCP_DECLARE(mrcp_session_t*) mrcp_session_create(apr_size_t padding) -{ - mrcp_session_t *session; - apr_pool_t *pool = apt_pool_create(); - if(!pool) { - return NULL; - } - session = apr_palloc(pool,sizeof(mrcp_session_t)+padding); - session->pool = pool; - session->obj = NULL; - session->log_obj = NULL; - session->name = NULL; - session->signaling_agent = NULL; - session->connection_agent = NULL; - session->media_engine = NULL; - session->rtp_factory = NULL; - session->request_vtable = NULL; - session->response_vtable = NULL; - session->event_vtable = NULL; - apt_string_reset(&session->id); - session->last_request_id = 0; - return session; -} - -MRCP_DECLARE(void) mrcp_session_destroy(mrcp_session_t *session) -{ - if(session->pool) { - apr_pool_destroy(session->pool); - } -} diff --git a/libs/unimrcp/libs/mrcp/Makefile.am b/libs/unimrcp/libs/mrcp/Makefile.am deleted file mode 100644 index 7c893f8dd9c..00000000000 --- a/libs/unimrcp/libs/mrcp/Makefile.am +++ /dev/null @@ -1,47 +0,0 @@ -MAINTAINERCLEANFILES = Makefile.in - -AM_CPPFLAGS = -I$(top_srcdir)/libs/mrcp/include \ - -I$(top_srcdir)/libs/mrcp/message/include \ - -I$(top_srcdir)/libs/mrcp/control/include \ - -I$(top_srcdir)/libs/mrcp/resources/include \ - -I$(top_srcdir)/libs/apr-toolkit/include \ - $(UNIMRCP_APR_INCLUDES) - -noinst_LTLIBRARIES = libmrcp.la - -include_HEADERS = include/mrcp.h \ - include/mrcp_types.h \ - message/include/mrcp_start_line.h \ - message/include/mrcp_header_accessor.h \ - message/include/mrcp_generic_header.h \ - message/include/mrcp_header.h \ - message/include/mrcp_message.h \ - control/include/mrcp_resource.h \ - control/include/mrcp_resource_factory.h \ - control/include/mrcp_resource_loader.h \ - control/include/mrcp_stream.h \ - resources/include/mrcp_synth_header.h \ - resources/include/mrcp_synth_resource.h \ - resources/include/mrcp_recog_header.h \ - resources/include/mrcp_recog_resource.h \ - resources/include/mrcp_recorder_header.h \ - resources/include/mrcp_recorder_resource.h \ - resources/include/mrcp_verifier_header.h \ - resources/include/mrcp_verifier_resource.h - -libmrcp_la_SOURCES = message/src/mrcp_start_line.c \ - message/src/mrcp_header_accessor.c \ - message/src/mrcp_generic_header.c \ - message/src/mrcp_header.c \ - message/src/mrcp_message.c \ - control/src/mrcp_resource_factory.c \ - control/src/mrcp_resource_loader.c \ - control/src/mrcp_stream.c \ - resources/src/mrcp_synth_header.c \ - resources/src/mrcp_synth_resource.c \ - resources/src/mrcp_recog_header.c \ - resources/src/mrcp_recog_resource.c \ - resources/src/mrcp_recorder_header.c \ - resources/src/mrcp_recorder_resource.c \ - resources/src/mrcp_verifier_header.c \ - resources/src/mrcp_verifier_resource.c diff --git a/libs/unimrcp/libs/mrcp/control/include/mrcp_resource.h b/libs/unimrcp/libs/mrcp/control/include/mrcp_resource.h deleted file mode 100644 index 9c2910903a9..00000000000 --- a/libs/unimrcp/libs/mrcp/control/include/mrcp_resource.h +++ /dev/null @@ -1,82 +0,0 @@ -/* - * Copyright 2008-2014 Arsen Chaloyan - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - * - * $Id: mrcp_resource.h 2136 2014-07-04 06:33:36Z achaloyan@gmail.com $ - */ - -#ifndef MRCP_RESOURCE_H -#define MRCP_RESOURCE_H - -/** - * @file mrcp_resource.h - * @brief Abstract MRCP Resource - */ - -#include "mrcp_types.h" -#include "mrcp_header_accessor.h" - -APT_BEGIN_EXTERN_C - - -/** MRCP resource definition */ -struct mrcp_resource_t { - /** MRCP resource identifier */ - mrcp_resource_id id; - /** MRCP resource name */ - apt_str_t name; - - /** Get string table of methods */ - const apt_str_table_item_t* (*get_method_str_table)(mrcp_version_e version); - /** Number of methods */ - apr_size_t method_count; - - /** Get string table of events */ - const apt_str_table_item_t* (*get_event_str_table)(mrcp_version_e version); - /** Number of events */ - apr_size_t event_count; - - /** Get vtable of resource header */ - const mrcp_header_vtable_t* (*get_resource_header_vtable)(mrcp_version_e version); -}; - -/** Initialize MRCP resource */ -static APR_INLINE mrcp_resource_t* mrcp_resource_create(apr_pool_t *pool) -{ - mrcp_resource_t *resource = (mrcp_resource_t*) apr_palloc(pool, sizeof(mrcp_resource_t)); - resource->id = 0; - apt_string_reset(&resource->name); - resource->method_count = 0; - resource->event_count = 0; - resource->get_method_str_table = NULL; - resource->get_event_str_table = NULL; - resource->get_resource_header_vtable = NULL; - return resource; -} - -/** Validate MRCP resource */ -static APR_INLINE apt_bool_t mrcp_resource_validate(mrcp_resource_t *resource) -{ - if(resource->method_count && resource->event_count && - resource->get_method_str_table && resource->get_event_str_table && - resource->get_resource_header_vtable && - resource->name.buf && resource->name.length) { - return TRUE; - } - return FALSE; -} - -APT_END_EXTERN_C - -#endif /* MRCP_RESOURCE_H */ diff --git a/libs/unimrcp/libs/mrcp/control/include/mrcp_resource_factory.h b/libs/unimrcp/libs/mrcp/control/include/mrcp_resource_factory.h deleted file mode 100644 index 0f3c2f6e095..00000000000 --- a/libs/unimrcp/libs/mrcp/control/include/mrcp_resource_factory.h +++ /dev/null @@ -1,50 +0,0 @@ -/* - * Copyright 2008-2014 Arsen Chaloyan - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - * - * $Id: mrcp_resource_factory.h 2136 2014-07-04 06:33:36Z achaloyan@gmail.com $ - */ - -#ifndef MRCP_RESOURCE_FACTORY_H -#define MRCP_RESOURCE_FACTORY_H - -/** - * @file mrcp_resource_factory.h - * @brief Aggregation of MRCP Resources - */ - -#include "apt_text_stream.h" -#include "mrcp_types.h" - -APT_BEGIN_EXTERN_C - -/** Create MRCP resource factory */ -MRCP_DECLARE(mrcp_resource_factory_t*) mrcp_resource_factory_create(apr_size_t resource_count, apr_pool_t *pool); - -/** Destroy MRCP resource factory */ -MRCP_DECLARE(apt_bool_t) mrcp_resource_factory_destroy(mrcp_resource_factory_t *resource_factory); - -/** Register MRCP resource */ -MRCP_DECLARE(apt_bool_t) mrcp_resource_register(mrcp_resource_factory_t *resource_factory, mrcp_resource_t *resource); - -/** Get MRCP resource by resource id */ -MRCP_DECLARE(mrcp_resource_t*) mrcp_resource_get(const mrcp_resource_factory_t *resource_factory, mrcp_resource_id resource_id); - -/** Find MRCP resource by resource name */ -MRCP_DECLARE(mrcp_resource_t*) mrcp_resource_find(const mrcp_resource_factory_t *resource_factory, const apt_str_t *name); - - -APT_END_EXTERN_C - -#endif /* MRCP_RESOURCE_FACTORY_H */ diff --git a/libs/unimrcp/libs/mrcp/control/include/mrcp_resource_loader.h b/libs/unimrcp/libs/mrcp/control/include/mrcp_resource_loader.h deleted file mode 100644 index 555b580a6d5..00000000000 --- a/libs/unimrcp/libs/mrcp/control/include/mrcp_resource_loader.h +++ /dev/null @@ -1,53 +0,0 @@ -/* - * Copyright 2008-2014 Arsen Chaloyan - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - * - * $Id: mrcp_resource_loader.h 2136 2014-07-04 06:33:36Z achaloyan@gmail.com $ - */ - -#ifndef MRCP_RESOURCE_LOADER_H -#define MRCP_RESOURCE_LOADER_H - -/** - * @file mrcp_resource_loader.h - * @brief MRCP Resource Loader - */ - -#include "apt_string.h" -#include "mrcp_types.h" - -APT_BEGIN_EXTERN_C - -/** Opaque resource loader declaration */ -typedef struct mrcp_resource_loader_t mrcp_resource_loader_t; - - -/** Create MRCP resource loader */ -MRCP_DECLARE(mrcp_resource_loader_t*) mrcp_resource_loader_create(apt_bool_t load_all_resources, apr_pool_t *pool); - -/** Load all MRCP resources */ -MRCP_DECLARE(apt_bool_t) mrcp_resources_load(mrcp_resource_loader_t *loader); - -/** Load MRCP resource by resource name */ -MRCP_DECLARE(apt_bool_t) mrcp_resource_load(mrcp_resource_loader_t *loader, const apt_str_t *name); - -/** Load MRCP resource by resource identifier */ -MRCP_DECLARE(apt_bool_t) mrcp_resource_load_by_id(mrcp_resource_loader_t *loader, mrcp_resource_id id); - -/** Get MRCP resource factory */ -MRCP_DECLARE(mrcp_resource_factory_t*) mrcp_resource_factory_get(const mrcp_resource_loader_t *loader); - -APT_END_EXTERN_C - -#endif /* MRCP_RESOURCE_LOADER_H */ diff --git a/libs/unimrcp/libs/mrcp/control/include/mrcp_stream.h b/libs/unimrcp/libs/mrcp/control/include/mrcp_stream.h deleted file mode 100644 index 1389effb42e..00000000000 --- a/libs/unimrcp/libs/mrcp/control/include/mrcp_stream.h +++ /dev/null @@ -1,69 +0,0 @@ -/* - * Copyright 2008-2014 Arsen Chaloyan - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - * - * $Id: mrcp_stream.h 2136 2014-07-04 06:33:36Z achaloyan@gmail.com $ - */ - -#ifndef MRCP_STREAM_H -#define MRCP_STREAM_H - -/** - * @file mrcp_stream.h - * @brief MRCP Stream Parser and Generator - */ - -#include "apt_text_message.h" -#include "mrcp_types.h" - -APT_BEGIN_EXTERN_C - - -/** Opaque MRCP parser declaration */ -typedef struct mrcp_parser_t mrcp_parser_t; -/** Opaque MRCP generator declaration */ -typedef struct mrcp_generator_t mrcp_generator_t; - - -/** Create MRCP stream parser */ -MRCP_DECLARE(mrcp_parser_t*) mrcp_parser_create(const mrcp_resource_factory_t *resource_factory, apr_pool_t *pool); - -/** Set resource by name to be used for parsing of MRCPv1 messages */ -MRCP_DECLARE(void) mrcp_parser_resource_set(mrcp_parser_t *parser, const apt_str_t *resource_name); - -/** Set verbose mode for the parser */ -MRCP_DECLARE(void) mrcp_parser_verbose_set(mrcp_parser_t *parser, apt_bool_t verbose); - -/** Parse MRCP stream */ -MRCP_DECLARE(apt_message_status_e) mrcp_parser_run(mrcp_parser_t *parser, apt_text_stream_t *stream, mrcp_message_t **message); - - - -/** Create MRCP stream generator */ -MRCP_DECLARE(mrcp_generator_t*) mrcp_generator_create(const mrcp_resource_factory_t *resource_factory, apr_pool_t *pool); - -/** Set verbose mode for the generator */ -MRCP_DECLARE(void) mrcp_generator_verbose_set(mrcp_generator_t *generator, apt_bool_t verbose); - -/** Generate MRCP stream */ -MRCP_DECLARE(apt_message_status_e) mrcp_generator_run(mrcp_generator_t *generator, mrcp_message_t *message, apt_text_stream_t *stream); - - -/** Generate MRCP message (excluding message body) */ -MRCP_DECLARE(apt_bool_t) mrcp_message_generate(const mrcp_resource_factory_t *resource_factory, mrcp_message_t *message, apt_text_stream_t *stream); - - -APT_END_EXTERN_C - -#endif /* MRCP_STREAM_H */ diff --git a/libs/unimrcp/libs/mrcp/control/src/mrcp_resource_factory.c b/libs/unimrcp/libs/mrcp/control/src/mrcp_resource_factory.c deleted file mode 100644 index e0a11240754..00000000000 --- a/libs/unimrcp/libs/mrcp/control/src/mrcp_resource_factory.c +++ /dev/null @@ -1,101 +0,0 @@ -/* - * Copyright 2008-2014 Arsen Chaloyan - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - * - * $Id: mrcp_resource_factory.c 2136 2014-07-04 06:33:36Z achaloyan@gmail.com $ - */ - -#include -#include "mrcp_resource_factory.h" -#include "mrcp_message.h" -#include "mrcp_resource.h" -#include "mrcp_generic_header.h" - -/** Resource factory definition (aggregation of resources) */ -struct mrcp_resource_factory_t { - /** Array of MRCP resources (reference by id) */ - mrcp_resource_t **resource_array; - /** Number of MRCP resources */ - apr_size_t resource_count; - /** Hash of MRCP resources (reference by name) */ - apr_hash_t *resource_hash; -}; - -/** Create MRCP resource factory */ -MRCP_DECLARE(mrcp_resource_factory_t*) mrcp_resource_factory_create(apr_size_t resource_count, apr_pool_t *pool) -{ - apr_size_t i; - mrcp_resource_factory_t *resource_factory; - if(resource_count == 0) { - return NULL; - } - - resource_factory = apr_palloc(pool,sizeof(mrcp_resource_factory_t)); - resource_factory->resource_count = resource_count; - resource_factory->resource_array = apr_palloc(pool,sizeof(mrcp_resource_t*)*resource_count); - for(i=0; iresource_array[i] = NULL; - } - resource_factory->resource_hash = apr_hash_make(pool); - return resource_factory; -} - -/** Destroy MRCP resource container */ -MRCP_DECLARE(apt_bool_t) mrcp_resource_factory_destroy(mrcp_resource_factory_t *resource_factory) -{ - if(resource_factory->resource_array) { - resource_factory->resource_array = NULL; - } - resource_factory->resource_count = 0; - return TRUE; -} - -/** Register MRCP resource */ -MRCP_DECLARE(apt_bool_t) mrcp_resource_register(mrcp_resource_factory_t *resource_factory, mrcp_resource_t *resource) -{ - if(!resource || resource->id >= resource_factory->resource_count) { - /* invalid params */ - return FALSE; - } - if(resource_factory->resource_array[resource->id]) { - /* resource with specified id already exists */ - return FALSE; - } - if(mrcp_resource_validate(resource) != TRUE) { - /* invalid resource */ - return FALSE; - } - resource_factory->resource_array[resource->id] = resource; - apr_hash_set(resource_factory->resource_hash,resource->name.buf,resource->name.length,resource); - return TRUE; -} - -/** Get MRCP resource by resource id */ -MRCP_DECLARE(mrcp_resource_t*) mrcp_resource_get(const mrcp_resource_factory_t *resource_factory, mrcp_resource_id resource_id) -{ - if(resource_id >= resource_factory->resource_count) { - return NULL; - } - return resource_factory->resource_array[resource_id]; -} - -/** Find MRCP resource by resource name */ -MRCP_DECLARE(mrcp_resource_t*) mrcp_resource_find(const mrcp_resource_factory_t *resource_factory, const apt_str_t *name) -{ - if(!name->buf || !name->length) { - return NULL; - } - - return apr_hash_get(resource_factory->resource_hash,name->buf,name->length); -} diff --git a/libs/unimrcp/libs/mrcp/control/src/mrcp_resource_loader.c b/libs/unimrcp/libs/mrcp/control/src/mrcp_resource_loader.c deleted file mode 100644 index d172bdddb44..00000000000 --- a/libs/unimrcp/libs/mrcp/control/src/mrcp_resource_loader.c +++ /dev/null @@ -1,140 +0,0 @@ -/* - * Copyright 2008-2014 Arsen Chaloyan - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - * - * $Id: mrcp_resource_loader.c 2136 2014-07-04 06:33:36Z achaloyan@gmail.com $ - */ - -#include "mrcp_resource_loader.h" -#include "mrcp_resource_factory.h" -#include "mrcp_resource.h" -#include "mrcp_synth_resource.h" -#include "mrcp_recog_resource.h" -#include "mrcp_recorder_resource.h" -#include "mrcp_verifier_resource.h" -#include "apt_log.h" - -/** Resource loader */ -struct mrcp_resource_loader_t { - mrcp_resource_factory_t *factory; - apr_pool_t *pool; -}; - -/** String table of MRCPv2 resources (mrcp_resource_type_e) */ -static const apt_str_table_item_t mrcp_resource_string_table[] = { - {{"speechsynth",11},6}, - {{"speechrecog",11},6}, - {{"recorder", 8},0}, - {{"speakverify",11},3} -}; - -static mrcp_resource_t* mrcp_resource_create_by_id(mrcp_resource_id id, apr_pool_t *pool); - -/** Create default MRCP resource factory */ -MRCP_DECLARE(mrcp_resource_loader_t*) mrcp_resource_loader_create(apt_bool_t load_all_resources, apr_pool_t *pool) -{ - mrcp_resource_loader_t *loader; - mrcp_resource_factory_t *resource_factory; - resource_factory = mrcp_resource_factory_create(MRCP_RESOURCE_TYPE_COUNT,pool); - if(!resource_factory) { - return NULL; - } - - loader = apr_palloc(pool,sizeof(mrcp_resource_loader_t)); - loader->factory = resource_factory; - loader->pool = pool; - - if(load_all_resources == TRUE) { - mrcp_resources_load(loader); - } - - return loader; -} - -/** Load all MRCP resources */ -MRCP_DECLARE(apt_bool_t) mrcp_resources_load(mrcp_resource_loader_t *loader) -{ - mrcp_resource_id id; - for(id=0; idpool); - if(!resource) { - apt_log(APT_LOG_MARK,APT_PRIO_NOTICE,"Failed to Load Resource [%d]",id); - return FALSE; - } - - apt_string_copy(&resource->name,name,loader->pool); - apt_log(APT_LOG_MARK,APT_PRIO_NOTICE,"Register Resource [%s]",name->buf); - return mrcp_resource_register(loader->factory,resource); -} - -/** Load MRCP resource by resource identifier */ -MRCP_DECLARE(apt_bool_t) mrcp_resource_load_by_id(mrcp_resource_loader_t *loader, mrcp_resource_id id) -{ - const apt_str_t *name = apt_string_table_str_get( - mrcp_resource_string_table, - MRCP_RESOURCE_TYPE_COUNT, - id); - mrcp_resource_t *resource = mrcp_resource_create_by_id(id,loader->pool); - if(!resource || !name) { - apt_log(APT_LOG_MARK,APT_PRIO_NOTICE,"Failed to Load Resource [%d]",id); - return FALSE; - } - - resource->name = *name; - apt_log(APT_LOG_MARK,APT_PRIO_NOTICE,"Register Resource [%s]",resource->name.buf); - return mrcp_resource_register(loader->factory,resource); -} - -/** Get MRCP resource factory */ -MRCP_DECLARE(mrcp_resource_factory_t*) mrcp_resource_factory_get(const mrcp_resource_loader_t *loader) -{ - return loader->factory; -} - -static mrcp_resource_t* mrcp_resource_create_by_id(mrcp_resource_id id, apr_pool_t *pool) -{ - mrcp_resource_t *resource = NULL; - switch(id) { - case MRCP_SYNTHESIZER_RESOURCE: - resource = mrcp_synth_resource_create(pool); - break; - case MRCP_RECOGNIZER_RESOURCE: - resource = mrcp_recog_resource_create(pool); - break; - case MRCP_RECORDER_RESOURCE: - resource = mrcp_recorder_resource_create(pool); - break; - case MRCP_VERIFIER_RESOURCE: - resource = mrcp_verifier_resource_create(pool); - break; - } - - if(resource) { - resource->id = id; - } - return resource; -} diff --git a/libs/unimrcp/libs/mrcp/control/src/mrcp_stream.c b/libs/unimrcp/libs/mrcp/control/src/mrcp_stream.c deleted file mode 100644 index 77917647221..00000000000 --- a/libs/unimrcp/libs/mrcp/control/src/mrcp_stream.c +++ /dev/null @@ -1,245 +0,0 @@ -/* - * Copyright 2008-2014 Arsen Chaloyan - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - * - * $Id: mrcp_stream.c 2136 2014-07-04 06:33:36Z achaloyan@gmail.com $ - */ - -#include "mrcp_stream.h" -#include "mrcp_message.h" -#include "mrcp_resource_factory.h" -#include "mrcp_resource.h" -#include "apt_log.h" - - -/** MRCP parser */ -struct mrcp_parser_t { - apt_message_parser_t *base; - const mrcp_resource_factory_t *resource_factory; - mrcp_resource_t *resource; -}; - -/** MRCP generator */ -struct mrcp_generator_t { - apt_message_generator_t *base; - const mrcp_resource_factory_t *resource_factory; -}; - -/** Create message and read start line */ -static apt_bool_t mrcp_parser_on_start(apt_message_parser_t *parser, apt_message_context_t *context, apt_text_stream_t *stream, apr_pool_t *pool); -/** Header section handler */ -static apt_bool_t mrcp_parser_on_header_complete(apt_message_parser_t *parser, apt_message_context_t *context); - -static const apt_message_parser_vtable_t parser_vtable = { - mrcp_parser_on_start, - mrcp_parser_on_header_complete, - NULL -}; - -/** Start message generation */ -apt_bool_t mrcp_generator_on_start(apt_message_generator_t *generator, apt_message_context_t *context, apt_text_stream_t *stream); -/** Finalize by setting overall message length in start line */ -apt_bool_t mrcp_generator_on_header_complete(apt_message_generator_t *generator, apt_message_context_t *context, apt_text_stream_t *stream); - -static const apt_message_generator_vtable_t generator_vtable = { - mrcp_generator_on_start, - mrcp_generator_on_header_complete, - NULL -}; - - -/** Create MRCP stream parser */ -MRCP_DECLARE(mrcp_parser_t*) mrcp_parser_create(const mrcp_resource_factory_t *resource_factory, apr_pool_t *pool) -{ - mrcp_parser_t *parser = apr_palloc(pool,sizeof(mrcp_parser_t)); - parser->base = apt_message_parser_create(parser,&parser_vtable,pool); - parser->resource_factory = resource_factory; - parser->resource = NULL; - return parser; -} - -/** Set resource by name to be used for parsing of MRCPv1 messages */ -MRCP_DECLARE(void) mrcp_parser_resource_set(mrcp_parser_t *parser, const apt_str_t *resource_name) -{ - if(resource_name) { - parser->resource = mrcp_resource_find(parser->resource_factory,resource_name); - } -} - -/** Set verbose mode for the parser */ -MRCP_DECLARE(void) mrcp_parser_verbose_set(mrcp_parser_t *parser, apt_bool_t verbose) -{ - apt_message_parser_verbose_set(parser->base,verbose); -} - -/** Parse MRCP stream */ -MRCP_DECLARE(apt_message_status_e) mrcp_parser_run(mrcp_parser_t *parser, apt_text_stream_t *stream, mrcp_message_t **message) -{ - return apt_message_parser_run(parser->base,stream,(void**)message); -} - -/** Create message and read start line */ -static apt_bool_t mrcp_parser_on_start(apt_message_parser_t *parser, apt_message_context_t *context, apt_text_stream_t *stream, apr_pool_t *pool) -{ - mrcp_message_t *mrcp_message; - apt_str_t start_line; - /* read start line */ - if(apt_text_line_read(stream,&start_line) == FALSE) { - return FALSE; - } - - /* create new MRCP message */ - mrcp_message = mrcp_message_create(pool); - /* parse start-line */ - if(mrcp_start_line_parse(&mrcp_message->start_line,&start_line,mrcp_message->pool) == FALSE) { - return FALSE; - } - - if(mrcp_message->start_line.version == MRCP_VERSION_1) { - mrcp_parser_t *mrcp_parser = apt_message_parser_object_get(parser); - if(!mrcp_parser->resource) { - return FALSE; - } - apt_string_copy( - &mrcp_message->channel_id.resource_name, - &mrcp_parser->resource->name, - pool); - - if(mrcp_message_resource_set(mrcp_message,mrcp_parser->resource) == FALSE) { - return FALSE; - } - } - - context->message = mrcp_message; - context->header = &mrcp_message->header.header_section; - context->body = &mrcp_message->body; - return TRUE; -} - -/** Header section handler */ -static apt_bool_t mrcp_parser_on_header_complete(apt_message_parser_t *parser, apt_message_context_t *context) -{ - mrcp_message_t *mrcp_message = context->message; - if(mrcp_message->start_line.version == MRCP_VERSION_2) { - mrcp_resource_t *resource; - mrcp_parser_t *mrcp_parser; - if(mrcp_channel_id_parse(&mrcp_message->channel_id,&mrcp_message->header,mrcp_message->pool) == FALSE) { - return FALSE; - } - mrcp_parser = apt_message_parser_object_get(parser); - /* find resource */ - resource = mrcp_resource_find(mrcp_parser->resource_factory,&mrcp_message->channel_id.resource_name); - if(!resource) { - return FALSE; - } - - if(mrcp_message_resource_set(mrcp_message,resource) == FALSE) { - return FALSE; - } - } - - if(mrcp_header_fields_parse(&mrcp_message->header,mrcp_message->pool) == FALSE) { - return FALSE; - } - - if(context->body && mrcp_generic_header_property_check(mrcp_message,GENERIC_HEADER_CONTENT_LENGTH) == TRUE) { - mrcp_generic_header_t *generic_header = mrcp_generic_header_get(mrcp_message); - if(generic_header && generic_header->content_length) { - context->body->length = generic_header->content_length; - } - } - return TRUE; -} - - -/** Create MRCP stream generator */ -MRCP_DECLARE(mrcp_generator_t*) mrcp_generator_create(const mrcp_resource_factory_t *resource_factory, apr_pool_t *pool) -{ - mrcp_generator_t *generator = apr_palloc(pool,sizeof(mrcp_generator_t)); - generator->base = apt_message_generator_create(generator,&generator_vtable,pool); - generator->resource_factory = resource_factory; - return generator; -} - -/** Set verbose mode for the generator */ -MRCP_DECLARE(void) mrcp_generator_verbose_set(mrcp_generator_t *generator, apt_bool_t verbose) -{ - apt_message_generator_verbose_set(generator->base,verbose); -} - -/** Generate MRCP stream */ -MRCP_DECLARE(apt_message_status_e) mrcp_generator_run(mrcp_generator_t *generator, mrcp_message_t *message, apt_text_stream_t *stream) -{ - return apt_message_generator_run(generator->base,message,stream); -} - -/** Initialize by generating message start line and return header section and body */ -apt_bool_t mrcp_generator_on_start(apt_message_generator_t *generator, apt_message_context_t *context, apt_text_stream_t *stream) -{ - mrcp_message_t *mrcp_message = context->message; - /* validate message */ - if(mrcp_message_validate(mrcp_message) == FALSE) { - return FALSE; - } - /* generate start-line */ - if(mrcp_start_line_generate(&mrcp_message->start_line,stream) == FALSE) { - return FALSE; - } - - if(mrcp_message->start_line.version == MRCP_VERSION_2) { - mrcp_channel_id_generate(&mrcp_message->channel_id,stream); - } - - context->header = &mrcp_message->header.header_section; - context->body = &mrcp_message->body; - return TRUE; -} - -/** Finalize by setting overall message length in start line */ -apt_bool_t mrcp_generator_on_header_complete(apt_message_generator_t *generator, apt_message_context_t *context, apt_text_stream_t *stream) -{ - mrcp_message_t *mrcp_message = context->message; - /* finalize start-line generation */ - return mrcp_start_line_finalize(&mrcp_message->start_line,mrcp_message->body.length,stream); -} - -/** Generate MRCP message (excluding message body) */ -MRCP_DECLARE(apt_bool_t) mrcp_message_generate(const mrcp_resource_factory_t *resource_factory, mrcp_message_t *message, apt_text_stream_t *stream) -{ - /* validate message */ - if(mrcp_message_validate(message) == FALSE) { - return FALSE; - } - - /* generate start-line */ - if(mrcp_start_line_generate(&message->start_line,stream) == FALSE) { - return FALSE; - } - - if(message->start_line.version == MRCP_VERSION_2) { - mrcp_channel_id_generate(&message->channel_id,stream); - } - - /* generate header section */ - if(apt_header_section_generate(&message->header.header_section,stream) == FALSE) { - return FALSE; - } - - /* finalize start-line generation */ - if(mrcp_start_line_finalize(&message->start_line,message->body.length,stream) == FALSE) { - return FALSE; - } - - return TRUE; -} diff --git a/libs/unimrcp/libs/mrcp/include/mrcp.h b/libs/unimrcp/libs/mrcp/include/mrcp.h deleted file mode 100644 index 995443e7eee..00000000000 --- a/libs/unimrcp/libs/mrcp/include/mrcp.h +++ /dev/null @@ -1,45 +0,0 @@ -/* - * Copyright 2008-2014 Arsen Chaloyan - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - * - * $Id: mrcp.h 2136 2014-07-04 06:33:36Z achaloyan@gmail.com $ - */ - -#ifndef MRCP_H -#define MRCP_H - -/** - * @file mrcp.h - * @brief MRCP Core Definitions - */ - -#include -#include - -/** Library export/import defines */ -#ifdef WIN32 -#ifdef MRCP_STATIC_LIB -#define MRCP_DECLARE(type) type __stdcall -#else -#ifdef MRCP_LIB_EXPORT -#define MRCP_DECLARE(type) __declspec(dllexport) type __stdcall -#else -#define MRCP_DECLARE(type) __declspec(dllimport) type __stdcall -#endif -#endif -#else -#define MRCP_DECLARE(type) type -#endif - -#endif /* MRCP_H */ diff --git a/libs/unimrcp/libs/mrcp/include/mrcp_types.h b/libs/unimrcp/libs/mrcp/include/mrcp_types.h deleted file mode 100644 index 3f37cb6cfe9..00000000000 --- a/libs/unimrcp/libs/mrcp/include/mrcp_types.h +++ /dev/null @@ -1,83 +0,0 @@ -/* - * Copyright 2008-2014 Arsen Chaloyan - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - * - * $Id: mrcp_types.h 2136 2014-07-04 06:33:36Z achaloyan@gmail.com $ - */ - -#ifndef MRCP_TYPES_H -#define MRCP_TYPES_H - -/** - * @file mrcp_types.h - * @brief Basic MRCP Types - */ - -#include "mrcp.h" - -APT_BEGIN_EXTERN_C - -/** Protocol version */ -typedef enum { - - MRCP_VERSION_UNKNOWN = 0, /**< Unknown version */ - MRCP_VERSION_1 = 1, /**< MRCPv1 (RFC4463) */ - MRCP_VERSION_2 = 2 /**< MRCPv2 (draft-ietf-speechsc-mrcpv2-20) */ -} mrcp_version_e; - -/** Enumeration of MRCP resource types */ -typedef enum { - MRCP_SYNTHESIZER_RESOURCE, /**< Synthesizer resource */ - MRCP_RECOGNIZER_RESOURCE, /**< Recognizer resource */ - MRCP_RECORDER_RESOURCE, /**< Recorder resource */ - MRCP_VERIFIER_RESOURCE, /**< Verifier resource */ - - MRCP_RESOURCE_TYPE_COUNT /**< Number of resources */ -} mrcp_resource_type_e; - -/* MRCPv2 specifies request-id as 32bit unsigned integer, - * while MRCPv1 doesn't limit this value (1 * DIGIT). - * Some MRCPv1 clients use too long request-id. - * To support them #define TOO_LONG_MRCP_REQUEST_ID - */ -#ifdef TOO_LONG_MRCP_REQUEST_ID -/** MRCP request identifier */ -typedef apr_uint64_t mrcp_request_id; -/** Format to log MRCP request identifier */ -#define MRCP_REQUEST_ID_FMT APR_UINT64_T_FMT -#else -/** MRCP request identifier */ -typedef apr_uint32_t mrcp_request_id; -/** Format to log MRCP request identifier */ -#define MRCP_REQUEST_ID_FMT "d" -#endif - - -/** Method identifier associated with method name */ -typedef apr_size_t mrcp_method_id; -/** Resource identifier associated with resource name */ -typedef apr_size_t mrcp_resource_id; - - -/** Opaque MRCP message declaration */ -typedef struct mrcp_message_t mrcp_message_t; -/** Opaque MRCP resource declaration */ -typedef struct mrcp_resource_t mrcp_resource_t; -/** Opaque MRCP resource factory declaration */ -typedef struct mrcp_resource_factory_t mrcp_resource_factory_t; - - -APT_END_EXTERN_C - -#endif /* MRCP_TYPES_H */ diff --git a/libs/unimrcp/libs/mrcp/message/include/mrcp_generic_header.h b/libs/unimrcp/libs/mrcp/message/include/mrcp_generic_header.h deleted file mode 100644 index af84350da4f..00000000000 --- a/libs/unimrcp/libs/mrcp/message/include/mrcp_generic_header.h +++ /dev/null @@ -1,125 +0,0 @@ -/* - * Copyright 2008-2014 Arsen Chaloyan - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - * - * $Id: mrcp_generic_header.h 2136 2014-07-04 06:33:36Z achaloyan@gmail.com $ - */ - -#ifndef MRCP_GENERIC_HEADER_H -#define MRCP_GENERIC_HEADER_H - -/** - * @file mrcp_generic_header.h - * @brief MRCP Generic Header - */ - -#include "mrcp_types.h" -#include "mrcp_header_accessor.h" - -APT_BEGIN_EXTERN_C - -/** Enumeration of MRCP generic header fields */ -typedef enum { - GENERIC_HEADER_ACTIVE_REQUEST_ID_LIST, - GENERIC_HEADER_PROXY_SYNC_ID, - GENERIC_HEADER_ACCEPT_CHARSET, - GENERIC_HEADER_CONTENT_TYPE, - GENERIC_HEADER_CONTENT_ID, - GENERIC_HEADER_CONTENT_BASE, - GENERIC_HEADER_CONTENT_ENCODING, - GENERIC_HEADER_CONTENT_LOCATION, - GENERIC_HEADER_CONTENT_LENGTH, - GENERIC_HEADER_CACHE_CONTROL, - GENERIC_HEADER_LOGGING_TAG, - GENERIC_HEADER_VENDOR_SPECIFIC_PARAMS, - - /** Additional header fields for MRCP v2 */ - GENERIC_HEADER_ACCEPT, - GENERIC_HEADER_FETCH_TIMEOUT, - GENERIC_HEADER_SET_COOKIE, - GENERIC_HEADER_SET_COOKIE2, - - GENERIC_HEADER_COUNT -} mrcp_generic_header_id; - -/** MRCP request identifiers list declaration */ -typedef struct mrcp_request_id_list_t mrcp_request_id_list_t; -/** MRCP vendor specific parameter list of pairs */ -typedef struct mrcp_vendor_specific_params_list_t mrcp_vendor_specific_params_list_t; -/** MRCP generic header declaration */ -typedef struct mrcp_generic_header_t mrcp_generic_header_t; - -/** Max number of request ids in active request id list */ -#define MAX_ACTIVE_REQUEST_ID_COUNT 5 -/** List (array) of MRCP request identifiers */ -struct mrcp_request_id_list_t { - /** Array of request identifiers */ - mrcp_request_id ids[MAX_ACTIVE_REQUEST_ID_COUNT]; - /** Number of request identifiers */ - apr_size_t count; -}; - - -/** MRCP generic header */ -struct mrcp_generic_header_t { - /** Indicates the list of request-ids to which it should apply */ - mrcp_request_id_list_t active_request_id_list; - /** Helps the resource receiving the event, proxied by the client, - to decide if this event has been processed through a direct interaction of the resources */ - apt_str_t proxy_sync_id; - /** Specifies the acceptable character set for entities returned in the response or events associated with this request */ - apt_str_t accept_charset; - /** Restricted to speech markup, grammar, recognition results, etc. */ - apt_str_t content_type; - /** Contains an ID or name for the content, by which it can be referred to */ - apt_str_t content_id; - /** May be used to specify the base URI for resolving relative URLs within the entity */ - apt_str_t content_base; - /** Indicates what additional content coding has been applied to the entity-body */ - apt_str_t content_encoding; - /** Statement of the location of the resource corresponding to this particular entity at the time of the request */ - apt_str_t content_location; - /** Contains the length of the content of the message body */ - size_t content_length; - /** Defines the default caching algorithms on the media server for the session or request */ - apt_str_t cache_control; - /** Sets the logging tag for logs generated by the media server */ - apt_str_t logging_tag; - /** Specifies the vendor specific parameters used by the media server */ - apt_pair_arr_t *vendor_specific_params; - - /** Additional header fields for MRCP v2 */ - /** Specifies the acceptable media types set for entities returned in the response or events associated with this request */ - apt_str_t accept; - /** Defines the timeout for content that the server may need to fetch over the network */ - apr_size_t fetch_timeout; - /** Enables to synchronize the cookie store of MRCP v2 client and server */ - apt_str_t set_cookie; - /** Enables to synchronize the cookie store of MRCP v2 client and server */ - apt_str_t set_cookie2; -}; - -/** Get generic header vtable */ -MRCP_DECLARE(const mrcp_header_vtable_t*) mrcp_generic_header_vtable_get(mrcp_version_e version); - - -/** Append active request id list */ -MRCP_DECLARE(apt_bool_t) active_request_id_list_append(mrcp_generic_header_t *generic_header, mrcp_request_id request_id); -/** Find request id in active request id list */ -MRCP_DECLARE(apt_bool_t) active_request_id_list_find(const mrcp_generic_header_t *generic_header, mrcp_request_id request_id); - - -APT_END_EXTERN_C - -#endif /* MRCP_GENERIC_HEADER_H */ diff --git a/libs/unimrcp/libs/mrcp/message/include/mrcp_header.h b/libs/unimrcp/libs/mrcp/message/include/mrcp_header.h deleted file mode 100644 index 9c9c0d5deef..00000000000 --- a/libs/unimrcp/libs/mrcp/message/include/mrcp_header.h +++ /dev/null @@ -1,121 +0,0 @@ -/* - * Copyright 2008-2014 Arsen Chaloyan - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - * - * $Id: mrcp_header.h 2136 2014-07-04 06:33:36Z achaloyan@gmail.com $ - */ - -#ifndef MRCP_HEADER_H -#define MRCP_HEADER_H - -/** - * @file mrcp_header.h - * @brief MRCP Message Header Definition - */ - -#include "mrcp_header_accessor.h" - -APT_BEGIN_EXTERN_C - -/** - * Allows external applications to trigger whether - * transaprent header fields are supported or not - */ -#define TRANSPARENT_HEADER_FIELDS_SUPPORT - -/** MRCP message header declaration */ -typedef struct mrcp_message_header_t mrcp_message_header_t; -/** MRCP channel-id declaration */ -typedef struct mrcp_channel_id mrcp_channel_id; - - -/** MRCP message-header */ -struct mrcp_message_header_t { - /** MRCP generic-header */ - mrcp_header_accessor_t generic_header_accessor; - /** MRCP resource specific header */ - mrcp_header_accessor_t resource_header_accessor; - - /** Header section (collection of header fields)*/ - apt_header_section_t header_section; -}; - -/** MRCP channel-identifier */ -struct mrcp_channel_id { - /** Unambiguous string identifying the MRCP session */ - apt_str_t session_id; - /** MRCP resource name */ - apt_str_t resource_name; -}; - - -/** Initialize MRCP message-header */ -static APR_INLINE void mrcp_message_header_init(mrcp_message_header_t *header) -{ - mrcp_header_accessor_init(&header->generic_header_accessor); - mrcp_header_accessor_init(&header->resource_header_accessor); - apt_header_section_init(&header->header_section); -} - -/** Allocate MRCP message-header data */ -MRCP_DECLARE(apt_bool_t) mrcp_message_header_data_alloc( - mrcp_message_header_t *header, - const mrcp_header_vtable_t *generic_header_vtable, - const mrcp_header_vtable_t *resource_header_vtable, - apr_pool_t *pool); - -/** Create MRCP message-header */ -MRCP_DECLARE(mrcp_message_header_t*) mrcp_message_header_create( - const mrcp_header_vtable_t *generic_header_vtable, - const mrcp_header_vtable_t *resource_header_vtable, - apr_pool_t *pool); - -/** Destroy MRCP message-header */ -static APR_INLINE void mrcp_message_header_destroy(mrcp_message_header_t *header) -{ - mrcp_header_destroy(&header->generic_header_accessor); - mrcp_header_destroy(&header->resource_header_accessor); -} - -/** Add MRCP header field */ -MRCP_DECLARE(apt_bool_t) mrcp_header_field_add(mrcp_message_header_t *header, apt_header_field_t *header_field, apr_pool_t *pool); - - -/** Set (copy) MRCP header fields */ -MRCP_DECLARE(apt_bool_t) mrcp_header_fields_set(mrcp_message_header_t *header, const mrcp_message_header_t *src_header, apr_pool_t *pool); - -/** Get (copy) MRCP header fields */ -MRCP_DECLARE(apt_bool_t) mrcp_header_fields_get(mrcp_message_header_t *header, const mrcp_message_header_t *src_header, const mrcp_message_header_t *mask_header, apr_pool_t *pool); - -/** Inherit (copy) MRCP header fields */ -MRCP_DECLARE(apt_bool_t) mrcp_header_fields_inherit(mrcp_message_header_t *header, const mrcp_message_header_t *src_header, apr_pool_t *pool); - -/** Parse MRCP header fields */ -MRCP_DECLARE(apt_bool_t) mrcp_header_fields_parse(mrcp_message_header_t *header, apr_pool_t *pool); - - -/** Initialize MRCP channel-identifier */ -MRCP_DECLARE(void) mrcp_channel_id_init(mrcp_channel_id *channel_id); - -/** Parse MRCP channel-identifier */ -MRCP_DECLARE(apt_bool_t) mrcp_channel_id_parse(mrcp_channel_id *channel_id, mrcp_message_header_t *header, apr_pool_t *pool); - -/** Generate MRCP channel-identifier */ -MRCP_DECLARE(apt_bool_t) mrcp_channel_id_generate(mrcp_channel_id *channel_id, apt_text_stream_t *text_stream); - - - -APT_END_EXTERN_C - -#endif /* MRCP_HEADER_H */ diff --git a/libs/unimrcp/libs/mrcp/message/include/mrcp_header_accessor.h b/libs/unimrcp/libs/mrcp/message/include/mrcp_header_accessor.h deleted file mode 100644 index 217b7bb2cd3..00000000000 --- a/libs/unimrcp/libs/mrcp/message/include/mrcp_header_accessor.h +++ /dev/null @@ -1,131 +0,0 @@ -/* - * Copyright 2008-2014 Arsen Chaloyan - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - * - * $Id: mrcp_header_accessor.h 2136 2014-07-04 06:33:36Z achaloyan@gmail.com $ - */ - -#ifndef MRCP_HEADER_ACCESSOR_H -#define MRCP_HEADER_ACCESSOR_H - -/** - * @file mrcp_header_accessor.h - * @brief Abstract MRCP Header Accessor - */ - -#include "apt_text_stream.h" -#include "apt_header_field.h" -#include "mrcp.h" - -APT_BEGIN_EXTERN_C - -/** MRCP header accessor declaration */ -typedef struct mrcp_header_accessor_t mrcp_header_accessor_t; -/** MRCP header vtable declaration */ -typedef struct mrcp_header_vtable_t mrcp_header_vtable_t; - -/** MRCP header accessor interface */ -struct mrcp_header_vtable_t { - /** Allocate actual header data */ - void* (*allocate)(mrcp_header_accessor_t *accessor, apr_pool_t *pool); - /** Destroy header data */ - void (*destroy)(mrcp_header_accessor_t *accessor); - - /** Parse header field value */ - apt_bool_t (*parse_field)(mrcp_header_accessor_t *accessor, apr_size_t id, const apt_str_t *value, apr_pool_t *pool); - /** Generate header field value */ - apt_bool_t (*generate_field)(const mrcp_header_accessor_t *accessor, apr_size_t id, apt_str_t *value, apr_pool_t *pool); - /** Duplicate header field value */ - apt_bool_t (*duplicate_field)(mrcp_header_accessor_t *accessor, const mrcp_header_accessor_t *src, apr_size_t id, const apt_str_t *value, apr_pool_t *pool); - - /** Table of fields */ - const apt_str_table_item_t *field_table; - /** Number of fields */ - apr_size_t field_count; -}; - -/** MRCP header accessor */ -struct mrcp_header_accessor_t { - /** Actual header data allocated by accessor */ - void *data; - /** Header accessor interface */ - const mrcp_header_vtable_t *vtable; -}; - - - -/** Initialize header vtable */ -static APR_INLINE void mrcp_header_vtable_init(mrcp_header_vtable_t *vtable) -{ - vtable->allocate = NULL; - vtable->destroy = NULL; - vtable->parse_field = NULL; - vtable->generate_field = NULL; - vtable->duplicate_field = NULL; - vtable->field_table = NULL; - vtable->field_count = 0; -} - -/** Validate header vtable */ -static APR_INLINE apt_bool_t mrcp_header_vtable_validate(const mrcp_header_vtable_t *vtable) -{ - return (vtable->allocate && vtable->destroy && - vtable->parse_field && vtable->generate_field && - vtable->duplicate_field && vtable->field_table && - vtable->field_count) ? TRUE : FALSE; -} - - -/** Initialize header accessor */ -static APR_INLINE void mrcp_header_accessor_init(mrcp_header_accessor_t *accessor) -{ - accessor->data = NULL; - accessor->vtable = NULL; -} - -/** Allocate header data */ -static APR_INLINE void* mrcp_header_allocate(mrcp_header_accessor_t *accessor, apr_pool_t *pool) -{ - if(accessor->data) { - return accessor->data; - } - if(!accessor->vtable || !accessor->vtable->allocate) { - return NULL; - } - return accessor->vtable->allocate(accessor,pool); -} - -/** Destroy header data */ -static APR_INLINE void mrcp_header_destroy(mrcp_header_accessor_t *accessor) -{ - if(!accessor->vtable || !accessor->vtable->destroy) { - return; - } - accessor->vtable->destroy(accessor); -} - - -/** Parse header field value */ -MRCP_DECLARE(apt_bool_t) mrcp_header_field_value_parse(mrcp_header_accessor_t *accessor, apt_header_field_t *header_field, apr_pool_t *pool); - -/** Generate header field value */ -MRCP_DECLARE(apt_header_field_t*) mrcp_header_field_value_generate(const mrcp_header_accessor_t *accessor, apr_size_t id, apt_bool_t empty_value, apr_pool_t *pool); - -/** Duplicate header field value */ -MRCP_DECLARE(apt_bool_t) mrcp_header_field_value_duplicate(mrcp_header_accessor_t *accessor, const mrcp_header_accessor_t *src_accessor, apr_size_t id, const apt_str_t *value, apr_pool_t *pool); - - -APT_END_EXTERN_C - -#endif /* MRCP_HEADER_ACCESSOR_H */ diff --git a/libs/unimrcp/libs/mrcp/message/include/mrcp_message.h b/libs/unimrcp/libs/mrcp/message/include/mrcp_message.h deleted file mode 100644 index 569a91b4bfb..00000000000 --- a/libs/unimrcp/libs/mrcp/message/include/mrcp_message.h +++ /dev/null @@ -1,253 +0,0 @@ -/* - * Copyright 2008-2014 Arsen Chaloyan - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - * - * $Id: mrcp_message.h 2136 2014-07-04 06:33:36Z achaloyan@gmail.com $ - */ - -#ifndef MRCP_MESSAGE_H -#define MRCP_MESSAGE_H - -/** - * @file mrcp_message.h - * @brief MRCP Message Definition - */ - -#include "mrcp_types.h" -#include "mrcp_start_line.h" -#include "mrcp_header.h" -#include "mrcp_generic_header.h" - -APT_BEGIN_EXTERN_C - -/** Macro to log channel identifier of the message */ -#define MRCP_MESSAGE_SIDRES(message) \ - (message)->channel_id.session_id.buf, (message)->channel_id.resource_name.buf - -/** MRCP message */ -struct mrcp_message_t { - /** Start-line of MRCP message */ - mrcp_start_line_t start_line; - /** Channel-identifier of MRCP message */ - mrcp_channel_id channel_id; - /** Header of MRCP message */ - mrcp_message_header_t header; - /** Body of MRCP message */ - apt_str_t body; - - /** Associated MRCP resource */ - const mrcp_resource_t *resource; - /** Memory pool to allocate memory from */ - apr_pool_t *pool; -}; - -/** - * Create an MRCP message. - * @param pool the pool to allocate memory from - */ -MRCP_DECLARE(mrcp_message_t*) mrcp_message_create(apr_pool_t *pool); - -/** - * Create an MRCP request message. - * @param resource the MRCP resource to use - * @param version the MRCP version to use - * @param method_id the MRCP resource specific method identifier - * @param pool the pool to allocate memory from - */ -MRCP_DECLARE(mrcp_message_t*) mrcp_request_create( - const mrcp_resource_t *resource, - mrcp_version_e version, - mrcp_method_id method_id, - apr_pool_t *pool); - -/** - * Create an MRCP response message based on given request message. - * @param request_message the MRCP request message to create a response for - * @param pool the pool to allocate memory from - */ -MRCP_DECLARE(mrcp_message_t*) mrcp_response_create(const mrcp_message_t *request_message, apr_pool_t *pool); - -/** - * Create an MRCP event message based on given requuest message. - * @param request_message the MRCP request message to create an event for - * @param event_id the MRCP resource specific event identifier - * @param pool the pool to allocate memory from - */ -MRCP_DECLARE(mrcp_message_t*) mrcp_event_create( - const mrcp_message_t *request_message, - mrcp_method_id event_id, - apr_pool_t *pool); - -/** - * Associate MRCP resource with message. - * @param message the message to associate resource with - * @param resource the resource to associate - */ -MRCP_DECLARE(apt_bool_t) mrcp_message_resource_set(mrcp_message_t *message, const mrcp_resource_t *resource); - -/** - * Validate MRCP message. - * @param message the message to validate - */ -MRCP_DECLARE(apt_bool_t) mrcp_message_validate(mrcp_message_t *message); - -/** - * Destroy MRCP message. - * @param message the message to destroy - */ -MRCP_DECLARE(void) mrcp_message_destroy(mrcp_message_t *message); - - -/** - * Get MRCP generic header. - * @param message the message to get generic header from - */ -static APR_INLINE mrcp_generic_header_t* mrcp_generic_header_get(const mrcp_message_t *message) -{ - return (mrcp_generic_header_t*) message->header.generic_header_accessor.data; -} - -/** - * Allocate (if not allocated) and get MRCP generic header. - * @param message the message to prepare generic header for - */ -static APR_INLINE mrcp_generic_header_t* mrcp_generic_header_prepare(mrcp_message_t *message) -{ - return (mrcp_generic_header_t*) mrcp_header_allocate(&message->header.generic_header_accessor,message->pool); -} - -/** - * Add MRCP generic header field by specified property (numeric identifier). - * @param message the message to add property for - * @param id the numeric identifier to add - */ -MRCP_DECLARE(apt_bool_t) mrcp_generic_header_property_add(mrcp_message_t *message, apr_size_t id); - -/** - * Add only the name of MRCP generic header field specified by property (numeric identifier). - * @param message the message to add property for - * @param id the numeric identifier to add - * @remark Should be used to construct empty header fiedls for GET-PARAMS requests - */ -MRCP_DECLARE(apt_bool_t) mrcp_generic_header_name_property_add(mrcp_message_t *message, apr_size_t id); - -/** - * Remove MRCP generic header field by specified property (numeric identifier). - * @param message the message to remove property from - * @param id the numeric identifier to remove - */ -static APR_INLINE apt_bool_t mrcp_generic_header_property_remove(mrcp_message_t *message, apr_size_t id) -{ - apt_header_field_t *header_field = apt_header_section_field_get(&message->header.header_section,id); - if(header_field) { - return apt_header_section_field_remove(&message->header.header_section,header_field); - } - return FALSE; -} - -/** - * Check whether specified by property (numeric identifier) MRCP generic header field is set or not. - * @param message the message to use - * @param id the numeric identifier to check - */ -static APR_INLINE apt_bool_t mrcp_generic_header_property_check(const mrcp_message_t *message, apr_size_t id) -{ - return apt_header_section_field_check(&message->header.header_section,id); -} - - -/** - * Get MRCP resource header. - * @param message the message to get resource header from - */ -static APR_INLINE void* mrcp_resource_header_get(const mrcp_message_t *message) -{ - return message->header.resource_header_accessor.data; -} - -/** - * Allocate (if not allocated) and get MRCP resource header. - * @param message the message to prepare resource header for - */ -static APR_INLINE void* mrcp_resource_header_prepare(mrcp_message_t *mrcp_message) -{ - return mrcp_header_allocate(&mrcp_message->header.resource_header_accessor,mrcp_message->pool); -} - -/** - * Add MRCP resource header field by specified property (numeric identifier). - * @param message the message to add property for - * @param id the numeric identifier to add - */ -MRCP_DECLARE(apt_bool_t) mrcp_resource_header_property_add(mrcp_message_t *message, apr_size_t id); - -/** - * Add only the name of MRCP resource header field specified by property (numeric identifier). - * @param message the message to add property for - * @param id the numeric identifier to add - * @remark Should be used to construct empty header fiedls for GET-PARAMS requests - */ -MRCP_DECLARE(apt_bool_t) mrcp_resource_header_name_property_add(mrcp_message_t *message, apr_size_t id); - -/** - * Remove MRCP resource header field by specified property (numeric identifier). - * @param message the message to remove property from - * @param id the numeric identifier to remove - */ -static APR_INLINE apt_bool_t mrcp_resource_header_property_remove(mrcp_message_t *message, apr_size_t id) -{ - apt_header_field_t *header_field = apt_header_section_field_get(&message->header.header_section,id + GENERIC_HEADER_COUNT); - if(header_field) { - return apt_header_section_field_remove(&message->header.header_section,header_field); - } - return FALSE; -} - -/** - * Check whether specified by property (numeric identifier) MRCP resource header field is set or not. - * @param message the message to use - * @param id the numeric identifier to check - */ -static APR_INLINE apt_bool_t mrcp_resource_header_property_check(const mrcp_message_t *message, apr_size_t id) -{ - return apt_header_section_field_check(&message->header.header_section,id + GENERIC_HEADER_COUNT); -} - -/** - * Add MRCP header field. - * @param message the message to add header field for - * @param header_field the header field to add - */ -static APR_INLINE apt_bool_t mrcp_message_header_field_add(mrcp_message_t *message, apt_header_field_t *header_field) -{ - return mrcp_header_field_add(&message->header,header_field,message->pool); -} - -/** - * Get the next MRCP header field. - * @param message the message to use - * @param header_field current header field - * @remark Should be used to iterate on header fields - * - * apt_header_field_t *header_field = NULL; - * while( (header_field = mrcp_message_next_header_field_get(message,header_field)) != NULL ) { - * } - */ -MRCP_DECLARE(apt_header_field_t*) mrcp_message_next_header_field_get( - const mrcp_message_t *message, - apt_header_field_t *header_field); - -APT_END_EXTERN_C - -#endif /* MRCP_MESSAGE_H */ diff --git a/libs/unimrcp/libs/mrcp/message/include/mrcp_start_line.h b/libs/unimrcp/libs/mrcp/message/include/mrcp_start_line.h deleted file mode 100644 index 8b739a259f0..00000000000 --- a/libs/unimrcp/libs/mrcp/message/include/mrcp_start_line.h +++ /dev/null @@ -1,117 +0,0 @@ -/* - * Copyright 2008-2014 Arsen Chaloyan - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - * - * $Id: mrcp_start_line.h 2136 2014-07-04 06:33:36Z achaloyan@gmail.com $ - */ - -#ifndef MRCP_START_LINE_H -#define MRCP_START_LINE_H - -/** - * @file mrcp_start_line.h - * @brief MRCP Start Line Definition - */ - -#include "mrcp_types.h" -#include "apt_text_stream.h" - -APT_BEGIN_EXTERN_C - -/** Request-states used in MRCP response message */ -typedef enum { - /** The request was processed to completion and there will be no - more events from that resource to the client with that request-id */ - MRCP_REQUEST_STATE_COMPLETE, - /** Indicate that further event messages will be delivered with that request-id */ - MRCP_REQUEST_STATE_INPROGRESS, - /** The job has been placed on a queue and will be processed in first-in-first-out order */ - MRCP_REQUEST_STATE_PENDING, - - /** Number of request states */ - MRCP_REQUEST_STATE_COUNT, - /** Unknown request state */ - MRCP_REQUEST_STATE_UNKNOWN = MRCP_REQUEST_STATE_COUNT -} mrcp_request_state_e; - -/** Status codes */ -typedef enum { - MRCP_STATUS_CODE_UNKNOWN = 0, - /* success codes (2xx) */ - MRCP_STATUS_CODE_SUCCESS = 200, - MRCP_STATUS_CODE_SUCCESS_WITH_IGNORE = 201, - /* failure codes (4xx) */ - MRCP_STATUS_CODE_METHOD_NOT_ALLOWED = 401, - MRCP_STATUS_CODE_METHOD_NOT_VALID = 402, - MRCP_STATUS_CODE_UNSUPPORTED_PARAM = 403, - MRCP_STATUS_CODE_ILLEGAL_PARAM_VALUE = 404, - MRCP_STATUS_CODE_NOT_FOUND = 405, - MRCP_STATUS_CODE_MISSING_PARAM = 406, - MRCP_STATUS_CODE_METHOD_FAILED = 407, - MRCP_STATUS_CODE_UNRECOGNIZED_MESSAGE = 408, - MRCP_STATUS_CODE_UNSUPPORTED_PARAM_VALUE = 409, - MRCP_STATUS_CODE_OUT_OF_ORDER = 410, - MRCP_STATUS_CODE_RESOURCE_SPECIFIC_FAILURE = 421 -} mrcp_status_code_e; - -/** MRCP message types */ -typedef enum { - MRCP_MESSAGE_TYPE_UNKNOWN, - MRCP_MESSAGE_TYPE_REQUEST, - MRCP_MESSAGE_TYPE_RESPONSE, - MRCP_MESSAGE_TYPE_EVENT -} mrcp_message_type_e; - - -/** MRCP start-line declaration */ -typedef struct mrcp_start_line_t mrcp_start_line_t; - -/** Start-line of MRCP message */ -struct mrcp_start_line_t { - /** MRCP message type */ - mrcp_message_type_e message_type; - /** Version of protocol in use */ - mrcp_version_e version; - /** Specify the length of the message, including the start-line (v2) */ - apr_size_t length; - /** Unique identifier among client and server */ - mrcp_request_id request_id; - /** MRCP method name */ - apt_str_t method_name; - /** MRCP method id (associated with method name) */ - mrcp_method_id method_id; - /** Success or failure or other status of the request */ - mrcp_status_code_e status_code; - /** The state of the job initiated by the request */ - mrcp_request_state_e request_state; -}; - -/** Initialize MRCP start-line */ -MRCP_DECLARE(void) mrcp_start_line_init(mrcp_start_line_t *start_line); -/** Parse MRCP start-line */ -MRCP_DECLARE(apt_bool_t) mrcp_start_line_parse(mrcp_start_line_t *start_line, apt_str_t *str, apr_pool_t *pool); -/** Generate MRCP start-line */ -MRCP_DECLARE(apt_bool_t) mrcp_start_line_generate(mrcp_start_line_t *start_line, apt_text_stream_t *text_stream); -/** Finalize MRCP start-line generation */ -MRCP_DECLARE(apt_bool_t) mrcp_start_line_finalize(mrcp_start_line_t *start_line, apr_size_t content_length, apt_text_stream_t *text_stream); - -/** Parse MRCP request-id */ -MRCP_DECLARE(mrcp_request_id) mrcp_request_id_parse(const apt_str_t *field); -/** Generate MRCP request-id */ -MRCP_DECLARE(apt_bool_t) mrcp_request_id_generate(mrcp_request_id request_id, apt_text_stream_t *stream); - - -APT_END_EXTERN_C - -#endif /* MRCP_START_LINE_H */ diff --git a/libs/unimrcp/libs/mrcp/message/src/mrcp_generic_header.c b/libs/unimrcp/libs/mrcp/message/src/mrcp_generic_header.c deleted file mode 100644 index 858a76f8024..00000000000 --- a/libs/unimrcp/libs/mrcp/message/src/mrcp_generic_header.c +++ /dev/null @@ -1,350 +0,0 @@ -/* - * Copyright 2008-2014 Arsen Chaloyan - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - * - * $Id: mrcp_generic_header.c 2136 2014-07-04 06:33:36Z achaloyan@gmail.com $ - */ - -#include "mrcp_generic_header.h" -#include "mrcp_start_line.h" - -/** String table of mrcp generic-header fields (mrcp_generic_header_id) */ -static const apt_str_table_item_t generic_header_string_table[] = { - {{"Active-Request-Id-List", 22},3}, - {{"Proxy-Sync-Id", 13},0}, - {{"Accept-Charset", 14},7}, - {{"Content-Type", 12},9}, - {{"Content-Id", 10},9}, - {{"Content-Base", 12},8}, - {{"Content-Encoding", 16},9}, - {{"Content-Location", 16},9}, - {{"Content-Length", 14},10}, - {{"Cache-Control", 13},1}, - {{"Logging-Tag", 11},0}, - {{"Vendor-Specific-Parameters",26},0}, - {{"Accept", 6},6}, - {{"Fetch-Timeout", 13},0}, - {{"Set-Cookie", 10},10}, - {{"Set-Cookie2", 11},10} -}; - -/** Parse mrcp request-id list */ -static apt_bool_t mrcp_request_id_list_parse(mrcp_request_id_list_t *request_id_list, const apt_str_t *value) -{ - apt_str_t field; - apt_text_stream_t stream; - stream.text = *value; - apt_text_stream_reset(&stream); - request_id_list->count = 0; - while(request_id_list->count < MAX_ACTIVE_REQUEST_ID_COUNT) { - if(apt_text_field_read(&stream,',',TRUE,&field) == FALSE) { - break; - } - request_id_list->ids[request_id_list->count] = mrcp_request_id_parse(&field); - request_id_list->count++; - } - return TRUE; -} - -/** Generate mrcp request-id list */ -static apt_bool_t mrcp_request_id_list_generate(const mrcp_request_id_list_t *request_id_list, apt_str_t *str, apr_pool_t *pool) -{ - apr_size_t i; - int length; - char *pos; - - /* compute estimated length, assuming request-ids consist of upto 10 digits */ - str->length = 10 * request_id_list->count; - if(request_id_list->count > 1) { - /* , */ - str->length += request_id_list->count - 1; - } - - str->buf = apr_palloc(pool,str->length + 1); - - pos = str->buf; - for(i=0; icount; i++) { - if(i != 0) { - *pos++ = ','; - } - - length = apr_snprintf(pos, str->length - (pos - str->buf), "%"MRCP_REQUEST_ID_FMT, request_id_list->ids[i]); - if(length < 0) - return FALSE; - pos += length; - } - *pos = '\0'; - return TRUE; -} - - -/** Initialize generic-header */ -static void mrcp_generic_header_init(mrcp_generic_header_t *generic_header) -{ - generic_header->active_request_id_list.count = 0; - apt_string_reset(&generic_header->proxy_sync_id); - apt_string_reset(&generic_header->accept_charset); - apt_string_reset(&generic_header->content_type); - apt_string_reset(&generic_header->content_id); - apt_string_reset(&generic_header->content_base); - apt_string_reset(&generic_header->content_encoding); - apt_string_reset(&generic_header->content_location); - generic_header->content_length = 0; - apt_string_reset(&generic_header->cache_control); - apt_string_reset(&generic_header->logging_tag); - generic_header->vendor_specific_params = NULL; - /* initializes additionnal MRCP v2 generic header fields */ - apt_string_reset(&generic_header->accept); - generic_header->fetch_timeout = 0; - apt_string_reset(&generic_header->set_cookie); - apt_string_reset(&generic_header->set_cookie2); -} - - -/** Allocate generic-header */ -static void* mrcp_generic_header_allocate(mrcp_header_accessor_t *accessor, apr_pool_t *pool) -{ - mrcp_generic_header_t *generic_header = apr_palloc(pool,sizeof(mrcp_generic_header_t)); - mrcp_generic_header_init(generic_header); - accessor->data = generic_header; - return accessor->data; -} - -/** Parse generic-header */ -static apt_bool_t mrcp_generic_header_parse(mrcp_header_accessor_t *accessor, size_t id, const apt_str_t *value, apr_pool_t *pool) -{ - apt_bool_t status = TRUE; - mrcp_generic_header_t *generic_header = accessor->data; - switch(id) { - case GENERIC_HEADER_ACTIVE_REQUEST_ID_LIST: - mrcp_request_id_list_parse(&generic_header->active_request_id_list,value); - break; - case GENERIC_HEADER_PROXY_SYNC_ID: - generic_header->proxy_sync_id = *value; - break; - case GENERIC_HEADER_ACCEPT_CHARSET: - generic_header->accept_charset = *value; - break; - case GENERIC_HEADER_CONTENT_TYPE: - generic_header->content_type = *value; - break; - case GENERIC_HEADER_CONTENT_ID: - generic_header->content_id = *value; - break; - case GENERIC_HEADER_CONTENT_BASE: - generic_header->content_base = *value; - break; - case GENERIC_HEADER_CONTENT_ENCODING: - generic_header->content_encoding = *value; - break; - case GENERIC_HEADER_CONTENT_LOCATION: - generic_header->content_location = *value; - break; - case GENERIC_HEADER_CONTENT_LENGTH: - generic_header->content_length = apt_size_value_parse(value); - break; - case GENERIC_HEADER_CACHE_CONTROL: - generic_header->cache_control = *value; - break; - case GENERIC_HEADER_LOGGING_TAG: - generic_header->logging_tag = *value; - break; - case GENERIC_HEADER_VENDOR_SPECIFIC_PARAMS: - if(!generic_header->vendor_specific_params) { - generic_header->vendor_specific_params = apt_pair_array_create(1,pool); - } - apt_pair_array_parse(generic_header->vendor_specific_params,value,pool); - break; - case GENERIC_HEADER_ACCEPT: - generic_header->accept = *value; - break; - case GENERIC_HEADER_FETCH_TIMEOUT: - generic_header->fetch_timeout = apt_size_value_parse(value); - break; - case GENERIC_HEADER_SET_COOKIE: - generic_header->set_cookie = *value; - break; - case GENERIC_HEADER_SET_COOKIE2: - generic_header->set_cookie2 = *value; - break; - default: - status = FALSE; - } - return status; -} - -/** Generate generic-header */ -static apt_bool_t mrcp_generic_header_generate(const mrcp_header_accessor_t *accessor, apr_size_t id, apt_str_t *value, apr_pool_t *pool) -{ - mrcp_generic_header_t *generic_header = accessor->data; - switch(id) { - case GENERIC_HEADER_ACTIVE_REQUEST_ID_LIST: - mrcp_request_id_list_generate(&generic_header->active_request_id_list,value,pool); - break; - case GENERIC_HEADER_PROXY_SYNC_ID: - *value = generic_header->proxy_sync_id; - break; - case GENERIC_HEADER_ACCEPT_CHARSET: - *value = generic_header->accept_charset; - break; - case GENERIC_HEADER_CONTENT_TYPE: - *value = generic_header->content_type; - break; - case GENERIC_HEADER_CONTENT_ID: - *value = generic_header->content_id; - break; - case GENERIC_HEADER_CONTENT_BASE: - *value = generic_header->content_base; - break; - case GENERIC_HEADER_CONTENT_ENCODING: - *value = generic_header->content_encoding; - break; - case GENERIC_HEADER_CONTENT_LOCATION: - *value = generic_header->content_location; - break; - case GENERIC_HEADER_CONTENT_LENGTH: - apt_size_value_generate(generic_header->content_length,value,pool); - break; - case GENERIC_HEADER_CACHE_CONTROL: - *value = generic_header->cache_control; - break; - case GENERIC_HEADER_LOGGING_TAG: - *value = generic_header->logging_tag; - break; - case GENERIC_HEADER_VENDOR_SPECIFIC_PARAMS: - apt_pair_array_generate(generic_header->vendor_specific_params,value,pool); - break; - case GENERIC_HEADER_ACCEPT: - *value = generic_header->accept; - break; - case GENERIC_HEADER_FETCH_TIMEOUT: - apt_size_value_generate(generic_header->fetch_timeout,value,pool); - break; - case GENERIC_HEADER_SET_COOKIE: - *value = generic_header->set_cookie; - break; - case GENERIC_HEADER_SET_COOKIE2: - *value = generic_header->set_cookie2; - break; - default: - break; - } - return TRUE; -} - -/** Duplicate generic-header */ -static apt_bool_t mrcp_generic_header_duplicate(mrcp_header_accessor_t *accessor, const mrcp_header_accessor_t *src, apr_size_t id, const apt_str_t *value, apr_pool_t *pool) -{ - mrcp_generic_header_t *generic_header = accessor->data; - const mrcp_generic_header_t *src_generic_header = src->data; - apt_bool_t status = TRUE; - - if(!generic_header || !src_generic_header) { - return FALSE; - } - - switch(id) { - case GENERIC_HEADER_ACTIVE_REQUEST_ID_LIST: - break; - case GENERIC_HEADER_PROXY_SYNC_ID: - generic_header->proxy_sync_id = *value; - break; - case GENERIC_HEADER_ACCEPT_CHARSET: - generic_header->accept_charset = *value; - break; - case GENERIC_HEADER_CONTENT_TYPE: - generic_header->content_type = *value; - break; - case GENERIC_HEADER_CONTENT_ID: - generic_header->content_id = *value; - break; - case GENERIC_HEADER_CONTENT_BASE: - generic_header->content_base = *value; - break; - case GENERIC_HEADER_CONTENT_ENCODING: - generic_header->content_encoding = *value; - break; - case GENERIC_HEADER_CONTENT_LOCATION: - generic_header->content_location = *value; - break; - case GENERIC_HEADER_CONTENT_LENGTH: - generic_header->content_length = src_generic_header->content_length; - break; - case GENERIC_HEADER_CACHE_CONTROL: - generic_header->cache_control = *value; - break; - case GENERIC_HEADER_LOGGING_TAG: - generic_header->logging_tag = *value; - break; - case GENERIC_HEADER_VENDOR_SPECIFIC_PARAMS: - generic_header->vendor_specific_params = apt_pair_array_copy(src_generic_header->vendor_specific_params,pool); - break; - case GENERIC_HEADER_ACCEPT: - generic_header->accept = *value; - break; - case GENERIC_HEADER_FETCH_TIMEOUT: - generic_header->fetch_timeout = src_generic_header->fetch_timeout; - break; - case GENERIC_HEADER_SET_COOKIE: - generic_header->set_cookie = *value; - break; - case GENERIC_HEADER_SET_COOKIE2: - generic_header->set_cookie2 = *value; - break; - default: - status = FALSE; - } - return status; -} - -static const mrcp_header_vtable_t vtable = { - mrcp_generic_header_allocate, - NULL, /* nothing to destroy */ - mrcp_generic_header_parse, - mrcp_generic_header_generate, - mrcp_generic_header_duplicate, - generic_header_string_table, - GENERIC_HEADER_COUNT -}; - - -MRCP_DECLARE(const mrcp_header_vtable_t*) mrcp_generic_header_vtable_get(mrcp_version_e version) -{ - return &vtable; -} - - -/** Append active request id list */ -MRCP_DECLARE(apt_bool_t) active_request_id_list_append(mrcp_generic_header_t *generic_header, mrcp_request_id request_id) -{ - mrcp_request_id_list_t *request_id_list = &generic_header->active_request_id_list; - if(request_id_list->count >= MAX_ACTIVE_REQUEST_ID_COUNT) { - return FALSE; - } - request_id_list->ids[request_id_list->count++] = request_id; - return TRUE; -} - -/** Find request id in active request id list */ -MRCP_DECLARE(apt_bool_t) active_request_id_list_find(const mrcp_generic_header_t *generic_header, mrcp_request_id request_id) -{ - size_t i; - const mrcp_request_id_list_t *request_id_list = &generic_header->active_request_id_list; - for(i=0; icount; i++) { - if(request_id_list->ids[i] == request_id) { - return TRUE; - } - } - return FALSE; -} diff --git a/libs/unimrcp/libs/mrcp/message/src/mrcp_header.c b/libs/unimrcp/libs/mrcp/message/src/mrcp_header.c deleted file mode 100644 index 22d02692e1d..00000000000 --- a/libs/unimrcp/libs/mrcp/message/src/mrcp_header.c +++ /dev/null @@ -1,265 +0,0 @@ -/* - * Copyright 2008-2014 Arsen Chaloyan - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - * - * $Id: mrcp_header.c 2238 2014-11-12 01:50:43Z achaloyan@gmail.com $ - */ - -#include "mrcp_header.h" -#include "mrcp_generic_header.h" -#include "apt_text_message.h" -#include "apt_log.h" - -#define MRCP_CHANNEL_ID "Channel-Identifier" -#define MRCP_CHANNEL_ID_LENGTH (sizeof(MRCP_CHANNEL_ID)-1) - - -/** Allocate MRCP message-header data */ -MRCP_DECLARE(apt_bool_t) mrcp_message_header_data_alloc( - mrcp_message_header_t *header, - const mrcp_header_vtable_t *generic_header_vtable, - const mrcp_header_vtable_t *resource_header_vtable, - apr_pool_t *pool) -{ - if(!generic_header_vtable || !resource_header_vtable) { - return FALSE; - } - - header->generic_header_accessor.data = NULL; - header->generic_header_accessor.vtable = generic_header_vtable; - - header->resource_header_accessor.data = NULL; - header->resource_header_accessor.vtable = resource_header_vtable; - - apt_header_section_array_alloc( - &header->header_section, - header->generic_header_accessor.vtable->field_count + - header->resource_header_accessor.vtable->field_count, - pool); - - mrcp_header_allocate(&header->generic_header_accessor,pool); - mrcp_header_allocate(&header->resource_header_accessor,pool); - return TRUE; -} - -MRCP_DECLARE(mrcp_message_header_t*) mrcp_message_header_create( - const mrcp_header_vtable_t *generic_header_vtable, - const mrcp_header_vtable_t *resource_header_vtable, - apr_pool_t *pool) -{ - mrcp_message_header_t *header = apr_palloc(pool,sizeof(mrcp_message_header_t)); - apt_header_section_init(&header->header_section); - mrcp_message_header_data_alloc(header,generic_header_vtable,resource_header_vtable,pool); - return header; -} - -/** Add MRCP header field */ -MRCP_DECLARE(apt_bool_t) mrcp_header_field_add(mrcp_message_header_t *header, apt_header_field_t *header_field, apr_pool_t *pool) -{ - apt_bool_t status = FALSE; - if(apt_string_is_empty(&header_field->name) == FALSE) { - /* normal header */ - if(mrcp_header_field_value_parse(&header->resource_header_accessor,header_field,pool) == TRUE) { - header_field->id += GENERIC_HEADER_COUNT; - } - else if(mrcp_header_field_value_parse(&header->generic_header_accessor,header_field,pool) == TRUE) { - } - else { - apt_log(APT_LOG_MARK,APT_PRIO_DEBUG,"Unknown MRCP header field: %s",header_field->name.buf); - } - status = apt_header_section_field_add(&header->header_section,header_field); - } - return status; -} - -/** Parse MRCP header fields */ -MRCP_DECLARE(apt_bool_t) mrcp_header_fields_parse(mrcp_message_header_t *header, apr_pool_t *pool) -{ - apt_header_field_t *header_field; - for(header_field = APR_RING_FIRST(&header->header_section.ring); - header_field != APR_RING_SENTINEL(&header->header_section.ring, apt_header_field_t, link); - header_field = APR_RING_NEXT(header_field, link)) { - - if(mrcp_header_field_value_parse(&header->resource_header_accessor,header_field,pool) == TRUE) { - header_field->id += GENERIC_HEADER_COUNT; - apt_header_section_field_set(&header->header_section,header_field); - } - else if(mrcp_header_field_value_parse(&header->generic_header_accessor,header_field,pool) == TRUE) { - apt_header_section_field_set(&header->header_section,header_field); - } - else { - apt_log(APT_LOG_MARK,APT_PRIO_WARNING,"Unknown MRCP header field: %s",header_field->name.buf); - } - } - - return TRUE; -} - -static apt_bool_t mrcp_header_accessor_value_duplicate(mrcp_message_header_t *header, apt_header_field_t *header_field, - const mrcp_message_header_t *src_header, const apt_header_field_t *src_header_field, - apr_pool_t *pool) -{ - apt_bool_t status = FALSE; - if(header_field->id < GENERIC_HEADER_COUNT) { - status = mrcp_header_field_value_duplicate( - &header->generic_header_accessor, - &src_header->generic_header_accessor, - header_field->id, - &header_field->value, - pool); - } - else { - status = mrcp_header_field_value_duplicate( - &header->resource_header_accessor, - &src_header->resource_header_accessor, - header_field->id - GENERIC_HEADER_COUNT, - &header_field->value, - pool); - } - return status; -} - -/** Set (copy) MRCP header fields */ -MRCP_DECLARE(apt_bool_t) mrcp_header_fields_set(mrcp_message_header_t *header, const mrcp_message_header_t *src_header, apr_pool_t *pool) -{ - apt_header_field_t *header_field; - const apt_header_field_t *src_header_field; - for(src_header_field = APR_RING_FIRST(&src_header->header_section.ring); - src_header_field != APR_RING_SENTINEL(&src_header->header_section.ring, apt_header_field_t, link); - src_header_field = APR_RING_NEXT(src_header_field, link)) { - - header_field = apt_header_section_field_get(&header->header_section,src_header_field->id); - if(header_field) { - /* this header field has already been set, just copy its value */ - apt_string_copy(&header_field->value,&src_header_field->value,pool); - } - else { - /* copy the entire header field and add it to the header section */ - header_field = apt_header_field_copy(src_header_field,pool); - apt_header_section_field_add(&header->header_section,header_field); - } - - mrcp_header_accessor_value_duplicate(header,header_field,src_header,src_header_field,pool); - } - - return TRUE; -} - -/** Get (copy) MRCP header fields */ -MRCP_DECLARE(apt_bool_t) mrcp_header_fields_get(mrcp_message_header_t *header, const mrcp_message_header_t *src_header, const mrcp_message_header_t *mask_header, apr_pool_t *pool) -{ - apt_header_field_t *header_field; - const apt_header_field_t *src_header_field; - const apt_header_field_t *mask_header_field; - for(mask_header_field = APR_RING_FIRST(&mask_header->header_section.ring); - mask_header_field != APR_RING_SENTINEL(&mask_header->header_section.ring, apt_header_field_t, link); - mask_header_field = APR_RING_NEXT(mask_header_field, link)) { - - header_field = apt_header_section_field_get(&header->header_section,mask_header_field->id); - if(header_field) { - /* this header field has already been set, skip to the next one */ - continue; - } - - src_header_field = apt_header_section_field_get(&src_header->header_section,mask_header_field->id); - if(src_header_field) { - /* copy the entire header field */ - header_field = apt_header_field_copy(src_header_field,pool); - mrcp_header_accessor_value_duplicate(header,header_field,src_header,src_header_field,pool); - } - else { - /* copy only the name of the header field */ - header_field = apt_header_field_copy(mask_header_field,pool); - } - /* add the header field to the header section */ - apt_header_section_field_add(&header->header_section,header_field); - } - - return TRUE; -} - -/** Inherit (copy) MRCP header fields */ -MRCP_DECLARE(apt_bool_t) mrcp_header_fields_inherit(mrcp_message_header_t *header, const mrcp_message_header_t *src_header, apr_pool_t *pool) -{ - apt_header_field_t *header_field; - const apt_header_field_t *src_header_field; - for(src_header_field = APR_RING_FIRST(&src_header->header_section.ring); - src_header_field != APR_RING_SENTINEL(&src_header->header_section.ring, apt_header_field_t, link); - src_header_field = APR_RING_NEXT(src_header_field, link)) { - - header_field = apt_header_section_field_get(&header->header_section,src_header_field->id); - if(header_field) { - /* this header field has already been set, skip to the next one */ - continue; - } - - /* copy the entire header field and add it to the header section */ - header_field = apt_header_field_copy(src_header_field,pool); - mrcp_header_accessor_value_duplicate(header,header_field,src_header,src_header_field,pool); - apt_header_section_field_add(&header->header_section,header_field); - } - return TRUE; -} - - -/** Initialize MRCP channel-identifier */ -MRCP_DECLARE(void) mrcp_channel_id_init(mrcp_channel_id *channel_id) -{ - apt_string_reset(&channel_id->session_id); - apt_string_reset(&channel_id->resource_name); -} - -/** Parse MRCP channel-identifier */ -MRCP_DECLARE(apt_bool_t) mrcp_channel_id_parse(mrcp_channel_id *channel_id, mrcp_message_header_t *header, apr_pool_t *pool) -{ - apt_header_field_t *header_field; - for(header_field = APR_RING_FIRST(&header->header_section.ring); - header_field != APR_RING_SENTINEL(&header->header_section.ring, apt_header_field_t, link); - header_field = APR_RING_NEXT(header_field, link)) { - - if(header_field->value.length && strncasecmp(header_field->name.buf,MRCP_CHANNEL_ID,MRCP_CHANNEL_ID_LENGTH) == 0) { - apt_id_resource_parse(&header_field->value,'@',&channel_id->session_id,&channel_id->resource_name,pool); - apt_header_section_field_remove(&header->header_section,header_field); - return TRUE; - } - } - return FALSE; -} - -/** Generate MRCP channel-identifier */ -MRCP_DECLARE(apt_bool_t) mrcp_channel_id_generate(mrcp_channel_id *channel_id, apt_text_stream_t *stream) -{ - apt_str_t *str; - char *pos = stream->pos; - if(pos + MRCP_CHANNEL_ID_LENGTH + 2 + channel_id->session_id.length + 1 + - channel_id->resource_name.length >= stream->end) { - return FALSE; - } - memcpy(pos,MRCP_CHANNEL_ID,MRCP_CHANNEL_ID_LENGTH); - pos += MRCP_CHANNEL_ID_LENGTH; - *pos++ = ':'; - *pos++ = APT_TOKEN_SP; - - str = &channel_id->session_id; - memcpy(pos,str->buf,str->length); - pos += str->length; - *pos++ = '@'; - - str = &channel_id->resource_name; - memcpy(pos,str->buf,str->length); - pos += str->length; - - stream->pos = pos; - return apt_text_eol_insert(stream); -} diff --git a/libs/unimrcp/libs/mrcp/message/src/mrcp_header_accessor.c b/libs/unimrcp/libs/mrcp/message/src/mrcp_header_accessor.c deleted file mode 100644 index ffc113e457d..00000000000 --- a/libs/unimrcp/libs/mrcp/message/src/mrcp_header_accessor.c +++ /dev/null @@ -1,84 +0,0 @@ -/* - * Copyright 2008-2014 Arsen Chaloyan - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - * - * $Id: mrcp_header_accessor.c 2136 2014-07-04 06:33:36Z achaloyan@gmail.com $ - */ - -#include "mrcp_header_accessor.h" - - -/** Parse header field value */ -MRCP_DECLARE(apt_bool_t) mrcp_header_field_value_parse(mrcp_header_accessor_t *accessor, apt_header_field_t *header_field, apr_pool_t *pool) -{ - apr_size_t id; - if(!accessor->vtable) { - return FALSE; - } - - id = apt_string_table_id_find(accessor->vtable->field_table,accessor->vtable->field_count,&header_field->name); - if(id >= accessor->vtable->field_count) { - return FALSE; - } - header_field->id = id; - - if(header_field->value.length) { - if(accessor->vtable->parse_field(accessor,header_field->id,&header_field->value,pool) == FALSE) { - return FALSE; - } - } - - return TRUE; -} - -/** Generate header field value */ -MRCP_DECLARE(apt_header_field_t*) mrcp_header_field_value_generate(const mrcp_header_accessor_t *accessor, apr_size_t id, apt_bool_t empty_value, apr_pool_t *pool) -{ - apt_header_field_t *header_field; - const apt_str_t *name; - - if(!accessor->vtable) { - return NULL; - } - - header_field = apt_header_field_alloc(pool); - name = apt_string_table_str_get(accessor->vtable->field_table,accessor->vtable->field_count,id); - if(name) { - header_field->name = *name; - } - - if(empty_value == FALSE) { - if(accessor->vtable->generate_field(accessor,id,&header_field->value,pool) == FALSE) { - return NULL; - } - } - - return header_field; -} - -/** Duplicate header field value */ -MRCP_DECLARE(apt_bool_t) mrcp_header_field_value_duplicate(mrcp_header_accessor_t *accessor, const mrcp_header_accessor_t *src_accessor, apr_size_t id, const apt_str_t *value, apr_pool_t *pool) -{ - if(!accessor->vtable) { - return FALSE; - } - - if(value->length) { - if(accessor->vtable->duplicate_field(accessor,src_accessor,id,value,pool) == FALSE) { - return FALSE; - } - } - - return TRUE; -} diff --git a/libs/unimrcp/libs/mrcp/message/src/mrcp_message.c b/libs/unimrcp/libs/mrcp/message/src/mrcp_message.c deleted file mode 100644 index e12aac85b6b..00000000000 --- a/libs/unimrcp/libs/mrcp/message/src/mrcp_message.c +++ /dev/null @@ -1,259 +0,0 @@ -/* - * Copyright 2008-2014 Arsen Chaloyan - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - * - * $Id: mrcp_message.c 2136 2014-07-04 06:33:36Z achaloyan@gmail.com $ - */ - -#include "mrcp_message.h" -#include "mrcp_generic_header.h" -#include "mrcp_resource.h" -#include "apt_text_message.h" -#include "apt_log.h" - -/** Associate MRCP resource with message */ -static apt_bool_t mrcp_message_resource_set_by_id(mrcp_message_t *message, const mrcp_resource_t *resource) -{ - if(!resource) { - return FALSE; - } - message->resource = resource; - message->channel_id.resource_name = resource->name; - mrcp_message_header_data_alloc( - &message->header, - mrcp_generic_header_vtable_get(message->start_line.version), - resource->get_resource_header_vtable(message->start_line.version), - message->pool); - - /* associate method_name and method_id */ - if(message->start_line.message_type == MRCP_MESSAGE_TYPE_REQUEST) { - const apt_str_t *name = apt_string_table_str_get( - resource->get_method_str_table(message->start_line.version), - resource->method_count, - message->start_line.method_id); - if(!name) { - return FALSE; - } - message->start_line.method_name = *name; - } - else if(message->start_line.message_type == MRCP_MESSAGE_TYPE_EVENT) { - const apt_str_t *name = apt_string_table_str_get( - resource->get_event_str_table(message->start_line.version), - resource->event_count, - message->start_line.method_id); - if(!name) { - return FALSE; - } - message->start_line.method_name = *name; - } - - return TRUE; -} - -/** Associate MRCP resource specific data by resource name */ -MRCP_DECLARE(apt_bool_t) mrcp_message_resource_set(mrcp_message_t *message, const mrcp_resource_t *resource) -{ - if(!resource) { - return FALSE; - } - message->resource = resource; - mrcp_message_header_data_alloc( - &message->header, - mrcp_generic_header_vtable_get(message->start_line.version), - resource->get_resource_header_vtable(message->start_line.version), - message->pool); - - /* associate method_name and method_id */ - if(message->start_line.message_type == MRCP_MESSAGE_TYPE_REQUEST) { - message->start_line.method_id = apt_string_table_id_find( - resource->get_method_str_table(message->start_line.version), - resource->method_count, - &message->start_line.method_name); - if(message->start_line.method_id >= resource->method_count) { - return FALSE; - } - } - else if(message->start_line.message_type == MRCP_MESSAGE_TYPE_EVENT) { - message->start_line.method_id = apt_string_table_id_find( - resource->get_event_str_table(message->start_line.version), - resource->event_count, - &message->start_line.method_name); - if(message->start_line.method_id >= resource->event_count) { - return FALSE; - } - } - - return TRUE; -} - -/** Create an MRCP message */ -MRCP_DECLARE(mrcp_message_t*) mrcp_message_create(apr_pool_t *pool) -{ - mrcp_message_t *message = apr_palloc(pool,sizeof(mrcp_message_t)); - mrcp_start_line_init(&message->start_line); - mrcp_channel_id_init(&message->channel_id); - mrcp_message_header_init(&message->header); - apt_string_reset(&message->body); - message->resource = NULL; - message->pool = pool; - return message; -} - -/** Create an MRCP request message */ -MRCP_DECLARE(mrcp_message_t*) mrcp_request_create(const mrcp_resource_t *resource, mrcp_version_e version, mrcp_method_id method_id, apr_pool_t *pool) -{ - mrcp_message_t *request_message = mrcp_message_create(pool); - request_message->start_line.message_type = MRCP_MESSAGE_TYPE_REQUEST; - request_message->start_line.version = version; - request_message->start_line.method_id = method_id; - mrcp_message_resource_set_by_id(request_message,resource); - return request_message; -} - -/** Create an MRCP response message */ -MRCP_DECLARE(mrcp_message_t*) mrcp_response_create(const mrcp_message_t *request_message, apr_pool_t *pool) -{ - mrcp_message_t *response_message = mrcp_message_create(pool); - response_message->start_line.message_type = MRCP_MESSAGE_TYPE_RESPONSE; - response_message->start_line.request_state = MRCP_REQUEST_STATE_COMPLETE; - response_message->start_line.status_code = MRCP_STATUS_CODE_SUCCESS; - if(request_message) { - response_message->channel_id = request_message->channel_id; - response_message->start_line.request_id = request_message->start_line.request_id; - response_message->start_line.version = request_message->start_line.version; - response_message->start_line.method_id = request_message->start_line.method_id; - response_message->start_line.method_name = request_message->start_line.method_name; - mrcp_message_resource_set_by_id(response_message,request_message->resource); - } - return response_message; -} - -/** Create an MRCP event message */ -MRCP_DECLARE(mrcp_message_t*) mrcp_event_create(const mrcp_message_t *request_message, mrcp_method_id event_id, apr_pool_t *pool) -{ - mrcp_message_t *event_message = mrcp_message_create(pool); - event_message->start_line.message_type = MRCP_MESSAGE_TYPE_EVENT; - event_message->start_line.method_id = event_id; - if(request_message) { - event_message->channel_id = request_message->channel_id; - event_message->start_line.request_id = request_message->start_line.request_id; - event_message->start_line.version = request_message->start_line.version; - mrcp_message_resource_set_by_id(event_message,request_message->resource); - } - return event_message; -} - -/** Destroy MRCP message */ -MRCP_DECLARE(void) mrcp_message_destroy(mrcp_message_t *message) -{ - apt_string_reset(&message->body); - mrcp_message_header_destroy(&message->header); -} - -/** Validate MRCP message */ -MRCP_DECLARE(apt_bool_t) mrcp_message_validate(mrcp_message_t *message) -{ - if(message->body.length) { - /* content length must be specified */ - mrcp_generic_header_t *generic_header = mrcp_generic_header_prepare(message); - if(!generic_header) { - return FALSE; - } - if(mrcp_generic_header_property_check(message,GENERIC_HEADER_CONTENT_LENGTH) != TRUE || - !generic_header->content_length) { - generic_header->content_length = message->body.length; - mrcp_generic_header_property_add(message,GENERIC_HEADER_CONTENT_LENGTH); - } - } - - return TRUE; -} - -/** Add MRCP generic header field by specified property (numeric identifier) */ -MRCP_DECLARE(apt_bool_t) mrcp_generic_header_property_add(mrcp_message_t *message, apr_size_t id) -{ - apt_header_field_t *header_field = mrcp_header_field_value_generate( - &message->header.generic_header_accessor, - id, - FALSE, - message->pool); - if(!header_field) { - return FALSE; - } - header_field->id = id; - return apt_header_section_field_add(&message->header.header_section,header_field); -} - -/** Add only the name of MRCP generic header field specified by property (numeric identifier) */ -MRCP_DECLARE(apt_bool_t) mrcp_generic_header_name_property_add(mrcp_message_t *message, apr_size_t id) -{ - apt_header_field_t *header_field = mrcp_header_field_value_generate( - &message->header.generic_header_accessor, - id, - TRUE, - message->pool); - if(!header_field) { - return FALSE; - } - header_field->id = id; - return apt_header_section_field_add(&message->header.header_section,header_field); -} - -/** Add MRCP resource header field by specified property (numeric identifier) */ -MRCP_DECLARE(apt_bool_t) mrcp_resource_header_property_add(mrcp_message_t *message, apr_size_t id) -{ - apt_header_field_t *header_field = mrcp_header_field_value_generate( - &message->header.resource_header_accessor, - id, - FALSE, - message->pool); - if(!header_field) { - return FALSE; - } - header_field->id = id + GENERIC_HEADER_COUNT; - return apt_header_section_field_add(&message->header.header_section,header_field); -} - -/** Add only the name of MRCP resource header field specified by property (numeric identifier) */ -MRCP_DECLARE(apt_bool_t) mrcp_resource_header_name_property_add(mrcp_message_t *message, apr_size_t id) -{ - apt_header_field_t *header_field = mrcp_header_field_value_generate( - &message->header.resource_header_accessor, - id, - TRUE, - message->pool); - if(!header_field) { - return FALSE; - } - header_field->id = id + GENERIC_HEADER_COUNT; - return apt_header_section_field_add(&message->header.header_section,header_field); -} - -/** Get the next MRCP header field */ -MRCP_DECLARE(apt_header_field_t*) mrcp_message_next_header_field_get(const mrcp_message_t *message, apt_header_field_t *header_field) -{ - const apt_header_section_t *header_section = &message->header.header_section; - if(header_field) { - apt_header_field_t *next = APR_RING_NEXT(header_field,link); - if(next == APR_RING_SENTINEL(&header_section->ring,apt_header_field_t,link)) { - return NULL; - } - return next; - } - - if(APR_RING_EMPTY(&header_section->ring,apt_header_field_t,link)) { - return NULL; - } - return APR_RING_FIRST(&header_section->ring); -} diff --git a/libs/unimrcp/libs/mrcp/message/src/mrcp_start_line.c b/libs/unimrcp/libs/mrcp/message/src/mrcp_start_line.c deleted file mode 100644 index be20150d1df..00000000000 --- a/libs/unimrcp/libs/mrcp/message/src/mrcp_start_line.c +++ /dev/null @@ -1,452 +0,0 @@ -/* - * Copyright 2008-2014 Arsen Chaloyan - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - * - * $Id: mrcp_start_line.c 2136 2014-07-04 06:33:36Z achaloyan@gmail.com $ - */ - -#include -#include -#include "mrcp_start_line.h" -#include "apt_string_table.h" -#include "apt_log.h" - -/** Protocol name used in version string */ -#define MRCP_NAME "MRCP" -#define MRCP_NAME_LENGTH (sizeof(MRCP_NAME)-1) - -/** Separators used in MRCP version string parse/generate */ -#define MRCP_NAME_VERSION_SEPARATOR '/' -#define MRCP_VERSION_MAJOR_MINOR_SEPARATOR '.' - -/** Max number of digits message length consists of */ -#define MAX_DIGIT_COUNT 6 - - -/** String table of MRCP request-states (mrcp_request_state_t) */ -static const apt_str_table_item_t mrcp_request_state_string_table[] = { - {{"COMPLETE", 8},0}, - {{"IN-PROGRESS",11},0}, - {{"PENDING", 7},0} -}; - - -/** Parse MRCP version */ -static mrcp_version_e mrcp_version_parse(const apt_str_t *field) -{ - mrcp_version_e version = MRCP_VERSION_UNKNOWN; - const char *pos; - if(field->length <= MRCP_NAME_LENGTH || strncasecmp(field->buf,MRCP_NAME,MRCP_NAME_LENGTH) != 0) { - /* unexpected protocol name */ - return version; - } - - pos = field->buf + MRCP_NAME_LENGTH; - if(*pos == MRCP_NAME_VERSION_SEPARATOR) { - pos++; - switch(*pos) { - case '1': version = MRCP_VERSION_1; break; - case '2': version = MRCP_VERSION_2; break; - default: ; - } - } - return version; -} - -/** Generate MRCP version */ -static apt_bool_t mrcp_version_generate(mrcp_version_e version, apt_text_stream_t *stream) -{ - if(stream->pos + MRCP_NAME_LENGTH + 1 >= stream->end) { - return FALSE; - } - memcpy(stream->pos,MRCP_NAME,MRCP_NAME_LENGTH); - stream->pos += MRCP_NAME_LENGTH; - *stream->pos++ = MRCP_NAME_VERSION_SEPARATOR; - - if(apt_text_size_value_insert(stream,version) == FALSE) { - return FALSE; - } - - if(stream->pos + 2 >= stream->end) { - return FALSE; - } - *stream->pos++ = MRCP_VERSION_MAJOR_MINOR_SEPARATOR; - *stream->pos++ = '0'; - return TRUE; -} - -/** Parse MRCP request-state used in MRCP response and event */ -static APR_INLINE mrcp_request_state_e mrcp_request_state_parse(const apt_str_t *request_state_str) -{ - return apt_string_table_id_find(mrcp_request_state_string_table,MRCP_REQUEST_STATE_COUNT,request_state_str); -} - -/** Generate MRCP request-state used in MRCP response and event */ -static apt_bool_t mrcp_request_state_generate(mrcp_request_state_e request_state, apt_text_stream_t *stream) -{ - const apt_str_t *name; - name = apt_string_table_str_get(mrcp_request_state_string_table,MRCP_REQUEST_STATE_COUNT,request_state); - if(request_state < MRCP_REQUEST_STATE_COUNT) { - memcpy(stream->pos,name->buf,name->length); - stream->pos += name->length; - } - return TRUE; -} - - -/** Parse MRCP status-code */ -static APR_INLINE mrcp_status_code_e mrcp_status_code_parse(const apt_str_t *field) -{ - return apt_size_value_parse(field); -} - -/** Generate MRCP status-code */ -static APR_INLINE size_t mrcp_status_code_generate(mrcp_status_code_e status_code, apt_text_stream_t *stream) -{ - return apt_text_size_value_insert(stream,status_code); -} - - -/** Parse MRCP request-line */ -static apt_bool_t mrcp_request_line_parse(mrcp_start_line_t *start_line, apt_text_stream_t *stream) -{ - apt_str_t field; - if(apt_text_field_read(stream,APT_TOKEN_SP,TRUE,&field) == FALSE) { - apt_log(APT_LOG_MARK,APT_PRIO_WARNING,"Cannot parse request-id in request-line"); - return FALSE; - } - start_line->request_id = mrcp_request_id_parse(&field); - - if(apt_text_field_read(stream,APT_TOKEN_SP,TRUE,&field) == FALSE) { - apt_log(APT_LOG_MARK,APT_PRIO_WARNING,"Cannot parse mrcp-version in request-line"); - return FALSE; - } - - start_line->request_state = mrcp_request_state_parse(&field); - if(start_line->request_state == MRCP_REQUEST_STATE_UNKNOWN) { - /* request-line */ - start_line->message_type = MRCP_MESSAGE_TYPE_REQUEST; - } - else { - /* event line */ - start_line->message_type = MRCP_MESSAGE_TYPE_EVENT; - - if(apt_text_field_read(stream,APT_TOKEN_SP,TRUE,&field) == FALSE) { - apt_log(APT_LOG_MARK,APT_PRIO_WARNING,"Cannot parse mrcp-version in request-line"); - return FALSE; - } - } - - start_line->version = mrcp_version_parse(&field); - if(start_line->version == MRCP_VERSION_UNKNOWN) { - apt_log(APT_LOG_MARK,APT_PRIO_WARNING,"Unknown mrcp-version"); - return FALSE; - } - return TRUE; -} - -/** Generate MRCP request-line */ -static apt_bool_t mrcp_request_line_generate(mrcp_start_line_t *start_line, apt_text_stream_t *stream) -{ - memcpy(stream->pos,start_line->method_name.buf,start_line->method_name.length); - stream->pos += start_line->method_name.length; - *stream->pos++ = APT_TOKEN_SP; - - mrcp_request_id_generate(start_line->request_id,stream); - *stream->pos++ = APT_TOKEN_SP; - - if(start_line->message_type == MRCP_MESSAGE_TYPE_REQUEST) { - if(start_line->status_code != MRCP_STATUS_CODE_UNKNOWN) { - mrcp_status_code_generate(start_line->status_code,stream); - *stream->pos++ = APT_TOKEN_SP; - } - } - else if(start_line->message_type == MRCP_MESSAGE_TYPE_EVENT) { - mrcp_request_state_generate(start_line->request_state,stream); - *stream->pos++ = APT_TOKEN_SP; - } - - mrcp_version_generate(start_line->version,stream); - return TRUE; -} - -/** Parse MRCP response-line */ -static apt_bool_t mrcp_response_line_parse(mrcp_start_line_t *start_line, apt_text_stream_t *stream) -{ - apt_str_t field; - start_line->length = 0; - if(start_line->version == MRCP_VERSION_2) { - if(apt_text_field_read(stream,APT_TOKEN_SP,TRUE,&field) == FALSE) { - apt_log(APT_LOG_MARK,APT_PRIO_WARNING,"Cannot parse message-length in response-line"); - return FALSE; - } - start_line->length = apt_size_value_parse(&field); - } - - if(apt_text_field_read(stream,APT_TOKEN_SP,TRUE,&field) == FALSE) { - apt_log(APT_LOG_MARK,APT_PRIO_WARNING,"Cannot parse request-id in response-line"); - return FALSE; - } - start_line->request_id = mrcp_request_id_parse(&field); - - if(apt_text_field_read(stream,APT_TOKEN_SP,TRUE,&field) == FALSE) { - apt_log(APT_LOG_MARK,APT_PRIO_WARNING,"Cannot parse status-code in response-line"); - return FALSE; - } - start_line->status_code = mrcp_status_code_parse(&field); - - if(apt_text_field_read(stream,APT_TOKEN_SP,TRUE,&field) == FALSE) { - apt_log(APT_LOG_MARK,APT_PRIO_WARNING,"Cannot parse request-state in response-line"); - return FALSE; - } - start_line->request_state = mrcp_request_state_parse(&field); - return TRUE; -} - -/** Generate MRCP response-line */ -static apt_bool_t mrcp_response_line_generate(mrcp_start_line_t *start_line, apt_text_stream_t *stream) -{ - mrcp_version_generate(start_line->version,stream); - *stream->pos++ = APT_TOKEN_SP; - - mrcp_request_id_generate(start_line->request_id,stream); - *stream->pos++ = APT_TOKEN_SP; - - mrcp_status_code_generate(start_line->status_code,stream); - *stream->pos++ = APT_TOKEN_SP; - - mrcp_request_state_generate(start_line->request_state,stream); - return TRUE; -} - -/** Parse MRCP v2 start-line */ -static apt_bool_t mrcp_v2_start_line_parse(mrcp_start_line_t *start_line, apt_text_stream_t *stream, apr_pool_t *pool) -{ - apt_str_t field; - if(apt_text_field_read(stream,APT_TOKEN_SP,TRUE,&field) == FALSE) { - apt_log(APT_LOG_MARK,APT_PRIO_WARNING,"Cannot parse message-length in v2 start-line"); - return FALSE; - } - start_line->length = apt_size_value_parse(&field); - - if(apt_text_field_read(stream,APT_TOKEN_SP,TRUE,&field) == FALSE) { - apt_log(APT_LOG_MARK,APT_PRIO_WARNING,"Cannot parse request-id in v2 start-line"); - return FALSE; - } - start_line->request_id = mrcp_request_id_parse(&field); - if(start_line->request_id == 0 && *field.buf != '0') { - /* parsing MRCP v2 request or event */ - start_line->message_type = MRCP_MESSAGE_TYPE_REQUEST; - apt_string_copy(&start_line->method_name,&field,pool); - - if(apt_text_field_read(stream,APT_TOKEN_SP,TRUE,&field) == FALSE) { - apt_log(APT_LOG_MARK,APT_PRIO_WARNING,"Cannot parse request-id in v2 start-line"); - return FALSE; - } - start_line->request_id = mrcp_request_id_parse(&field); - - if(apt_text_field_read(stream,APT_TOKEN_SP,TRUE,&field) == TRUE) { - /* parsing MRCP v2 event */ - start_line->request_state = mrcp_request_state_parse(&field); - start_line->message_type = MRCP_MESSAGE_TYPE_EVENT; - } - } - else { - /* parsing MRCP v2 response */ - start_line->message_type = MRCP_MESSAGE_TYPE_RESPONSE; - - if(apt_text_field_read(stream,APT_TOKEN_SP,TRUE,&field) == FALSE) { - apt_log(APT_LOG_MARK,APT_PRIO_WARNING,"Cannot parse status-code in v2 start-line"); - return FALSE; - } - start_line->status_code = mrcp_status_code_parse(&field); - - if(apt_text_field_read(stream,APT_TOKEN_SP,TRUE,&field) == FALSE) { - apt_log(APT_LOG_MARK,APT_PRIO_WARNING,"Cannot parse request-state in v2 start-line"); - return FALSE; - } - start_line->request_state = mrcp_request_state_parse(&field); - } - - return TRUE; -} - -/** Generate MRCP v2 start-line */ -static apt_bool_t mrcp_v2_start_line_generate(mrcp_start_line_t *start_line, apt_text_stream_t *stream) -{ - char *pos = stream->pos; - mrcp_version_generate(start_line->version,stream); - *stream->pos++ = APT_TOKEN_SP; - - start_line->length = stream->pos - pos; /* length is temporary used to store offset */ - /* reserving MAX_DIGIT_COUNT space for start_line->length */ - memset(stream->pos,APT_TOKEN_SP,MAX_DIGIT_COUNT+1); - stream->pos += MAX_DIGIT_COUNT+1; - - if(start_line->message_type == MRCP_MESSAGE_TYPE_RESPONSE) { - mrcp_request_id_generate(start_line->request_id,stream); - *stream->pos++ = APT_TOKEN_SP; - - mrcp_status_code_generate(start_line->status_code,stream); - *stream->pos++ = APT_TOKEN_SP; - - mrcp_request_state_generate(start_line->request_state,stream); - } - else { - memcpy(stream->pos,start_line->method_name.buf,start_line->method_name.length); - stream->pos += start_line->method_name.length; - *stream->pos++ = APT_TOKEN_SP; - - mrcp_request_id_generate(start_line->request_id,stream); - if(start_line->message_type == MRCP_MESSAGE_TYPE_EVENT) { - *stream->pos++ = APT_TOKEN_SP; - mrcp_request_state_generate(start_line->request_state,stream); - } - } - return TRUE; -} - -/** Initialize MRCP start-line */ -MRCP_DECLARE(void) mrcp_start_line_init(mrcp_start_line_t *start_line) -{ - start_line->message_type = MRCP_MESSAGE_TYPE_UNKNOWN; - start_line->version = MRCP_VERSION_UNKNOWN; - start_line->length = 0; - start_line->request_id = 0; - apt_string_reset(&start_line->method_name); - start_line->status_code = MRCP_STATUS_CODE_UNKNOWN; - start_line->request_state = MRCP_REQUEST_STATE_UNKNOWN; -} - -/** Parse MRCP start-line */ -MRCP_DECLARE(apt_bool_t) mrcp_start_line_parse(mrcp_start_line_t *start_line, apt_str_t *str, apr_pool_t *pool) -{ - apt_text_stream_t line; - apt_str_t field; - apt_bool_t status = TRUE; - - start_line->message_type = MRCP_MESSAGE_TYPE_UNKNOWN; - apt_text_stream_init(&line,str->buf,str->length); - if(apt_text_field_read(&line,APT_TOKEN_SP,TRUE,&field) == FALSE) { - apt_log(APT_LOG_MARK,APT_PRIO_WARNING,"Cannot read the first field in start-line"); - return FALSE; - } - - if(field.buf == strstr(field.buf,MRCP_NAME)) { - start_line->version = mrcp_version_parse(&field); - - if(start_line->version == MRCP_VERSION_1) { - /* parsing MRCP v1 response */ - start_line->message_type = MRCP_MESSAGE_TYPE_RESPONSE; - status = mrcp_response_line_parse(start_line,&line); - } - else if(start_line->version == MRCP_VERSION_2) { - /* parsing MRCP v2 start-line (request/response/event) */ - status = mrcp_v2_start_line_parse(start_line,&line,pool); - } - else { - apt_log(APT_LOG_MARK,APT_PRIO_WARNING,"Unknown MRCP version"); - return FALSE; - } - } - else { - /* parsing MRCP v1 request or event */ - apt_string_copy(&start_line->method_name,&field,pool); - status = mrcp_request_line_parse(start_line,&line); - } - return status; -} - -/** Generate MRCP start-line */ -MRCP_DECLARE(apt_bool_t) mrcp_start_line_generate(mrcp_start_line_t *start_line, apt_text_stream_t *text_stream) -{ - apt_bool_t status = FALSE; - if(start_line->version == MRCP_VERSION_1) { - switch(start_line->message_type) { - case MRCP_MESSAGE_TYPE_REQUEST: - status = mrcp_request_line_generate(start_line,text_stream); - break; - case MRCP_MESSAGE_TYPE_RESPONSE: - status = mrcp_response_line_generate(start_line,text_stream); - break; - case MRCP_MESSAGE_TYPE_EVENT: - status = mrcp_request_line_generate(start_line,text_stream); - break; - default: - break; - } - } - else if(start_line->version == MRCP_VERSION_2) { - status = mrcp_v2_start_line_generate(start_line,text_stream); - } - - if(status == FALSE) { - return FALSE; - } - - return apt_text_eol_insert(text_stream); -} - -/** Finalize MRCP start-line generation */ -MRCP_DECLARE(apt_bool_t) mrcp_start_line_finalize(mrcp_start_line_t *start_line, apr_size_t content_length, apt_text_stream_t *text_stream) -{ - apr_size_t length = text_stream->pos - text_stream->text.buf + content_length; - if(start_line->version == MRCP_VERSION_2) { - /* message-length includes the number of bytes that specify the message-length in the header */ - /* too comlex to generate!!! see the discussion */ - /* http://www1.ietf.org/mail-archive/web/speechsc/current/msg01734.html */ - apt_str_t field; - field.buf = text_stream->text.buf + start_line->length; /* length is temporary used to store offset */ - length -= MAX_DIGIT_COUNT; - if(apt_var_length_value_generate(&length,MAX_DIGIT_COUNT,&field) == FALSE) { - return FALSE; - } - field.buf[field.length] = APT_TOKEN_SP; - start_line->length += field.length; - - field.length = MAX_DIGIT_COUNT - field.length; - if(field.length) { - memmove(text_stream->text.buf+field.length,text_stream->text.buf,start_line->length); - text_stream->text.buf += field.length; - text_stream->text.length -= field.length; - } - } - - start_line->length = length; - return TRUE; -} - -/** Parse MRCP request-id */ -MRCP_DECLARE(mrcp_request_id) mrcp_request_id_parse(const apt_str_t *field) -{ - if(field->buf) { -#ifdef TOO_LONG_MRCP_REQUEST_ID - return apr_atoi64(field->buf); -#else - return atol(field->buf); -#endif - } - return 0; -} - -/** Generate MRCP request-id */ -MRCP_DECLARE(apt_bool_t) mrcp_request_id_generate(mrcp_request_id request_id, apt_text_stream_t *stream) -{ - int length = apr_snprintf(stream->pos, stream->end - stream->pos, "%"MRCP_REQUEST_ID_FMT, request_id); - if(length <= 0) { - return FALSE; - } - stream->pos += length; - return TRUE; -} diff --git a/libs/unimrcp/libs/mrcp/mrcp.2010.vcxproj.filters b/libs/unimrcp/libs/mrcp/mrcp.2010.vcxproj.filters deleted file mode 100644 index 119921b34bb..00000000000 --- a/libs/unimrcp/libs/mrcp/mrcp.2010.vcxproj.filters +++ /dev/null @@ -1,133 +0,0 @@ - - - - - {93995380-89BD-4b04-88EB-625FBE52EBFB} - h;hpp;hxx;hm;inl;inc;xsd - - - {19ad4bde-c4f4-4937-9073-ca2780341d76} - - - {8ec996ac-8a0a-4bf0-9b3c-535616585109} - h;hpp;hxx;hm;inl;inc;xsd - - - {5ba77874-7c17-4748-b5ba-b07b7f0a2169} - cpp;c;cc;cxx;def;odl;idl;hpj;bat;asm;asmx - - - {f30fd049-a10d-4aea-b4bb-3eb674690fdd} - - - {7e71717b-6f22-4c59-ba50-7b5a15516b2f} - h;hpp;hxx;hm;inl;inc;xsd - - - {c66dbb84-ce9d-4408-b54d-4d0ec51069fb} - cpp;c;cc;cxx;def;odl;idl;hpj;bat;asm;asmx - - - {f20cfd62-4bb9-42de-bf1c-d578c8cd1a18} - - - {039a4834-7ddb-40e7-9177-55d11ef1e733} - h;hpp;hxx;hm;inl;inc;xsd - - - {dc087d31-8ecf-473c-baa1-f3091e16014d} - cpp;c;cc;cxx;def;odl;idl;hpj;bat;asm;asmx - - - - - include - - - include - - - message\include - - - message\include - - - message\include - - - message\include - - - control\include - - - control\include - - - control\include - - - control\include - - - resources\include - - - resources\include - - - resources\include - - - resources\include - - - resources\include - - - resources\include - - - - - message\src - - - message\src - - - message\src - - - message\src - - - control\src - - - control\src - - - control\src - - - resources\src - - - resources\src - - - resources\src - - - resources\src - - - resources\src - - - resources\src - - - \ No newline at end of file diff --git a/libs/unimrcp/libs/mrcp/mrcp.2017.vcxproj b/libs/unimrcp/libs/mrcp/mrcp.2017.vcxproj deleted file mode 100644 index 0e1d64d5336..00000000000 --- a/libs/unimrcp/libs/mrcp/mrcp.2017.vcxproj +++ /dev/null @@ -1,158 +0,0 @@ - - - - - Debug - Win32 - - - Debug - x64 - - - Release - Win32 - - - Release - x64 - - - - mrcp - {1C320193-46A6-4B34-9C56-8AB584FC1B56} - mrcp - Win32Proj - - - - StaticLibrary - Unicode - true - $(DefaultPlatformToolset) - - - StaticLibrary - Unicode - $(DefaultPlatformToolset) - - - StaticLibrary - Unicode - true - $(DefaultPlatformToolset) - - - StaticLibrary - Unicode - $(DefaultPlatformToolset) - - - - - - - - - - - - - - - - - - - - - - - - - - - <_ProjectFileVersion>10.0.30319.1 - $(PlatformName)\$(Configuration)\ - $(PlatformName)\$(Configuration)\ - $(PlatformName)\$(Configuration)\ - $(PlatformName)\$(Configuration)\ - $(PlatformName)\$(Configuration)\ - $(PlatformName)\$(Configuration)\ - $(SolutionDir)$(PlatformName)\$(Configuration)\ - $(PlatformName)\$(Configuration)\ - - - - %(AdditionalIncludeDirectories) - APT_STATIC_LIB;MPF_STATIC_LIB;MRCP_STATIC_LIB;%(PreprocessorDefinitions) - - - - - X64 - - - %(AdditionalIncludeDirectories) - APT_STATIC_LIB;MPF_STATIC_LIB;MRCP_STATIC_LIB;%(PreprocessorDefinitions) - ProgramDatabase - - - - - %(AdditionalIncludeDirectories) - APT_STATIC_LIB;MPF_STATIC_LIB;MRCP_STATIC_LIB;%(PreprocessorDefinitions) - - - - - X64 - - - %(AdditionalIncludeDirectories) - APT_STATIC_LIB;MPF_STATIC_LIB;MRCP_STATIC_LIB;%(PreprocessorDefinitions) - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - \ No newline at end of file diff --git a/libs/unimrcp/libs/mrcp/mrcp.vcproj b/libs/unimrcp/libs/mrcp/mrcp.vcproj deleted file mode 100644 index dc421663c77..00000000000 --- a/libs/unimrcp/libs/mrcp/mrcp.vcproj +++ /dev/null @@ -1,433 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/libs/unimrcp/libs/mrcp/mrcp.vcxproj b/libs/unimrcp/libs/mrcp/mrcp.vcxproj deleted file mode 100644 index b2e453c4e8c..00000000000 --- a/libs/unimrcp/libs/mrcp/mrcp.vcxproj +++ /dev/null @@ -1,157 +0,0 @@ - - - - - Debug - Win32 - - - Debug - x64 - - - Release - Win32 - - - Release - x64 - - - - {1C320193-46A6-4B34-9C56-8AB584FC1B56} - mrcp - Win32Proj - - - - StaticLibrary - Unicode - true - - - StaticLibrary - Unicode - - - StaticLibrary - Unicode - true - - - StaticLibrary - Unicode - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - <_ProjectFileVersion>10.0.30319.1 - AllRules.ruleset - - - AllRules.ruleset - - - AllRules.ruleset - - - AllRules.ruleset - - - - - - %(AdditionalIncludeDirectories) - - - - - %(AdditionalIncludeDirectories) - - - - - X64 - - - %(AdditionalIncludeDirectories) - ProgramDatabase - - - - - X64 - - - %(AdditionalIncludeDirectories) - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - \ No newline at end of file diff --git a/libs/unimrcp/libs/mrcp/mrcp.vcxproj.filters b/libs/unimrcp/libs/mrcp/mrcp.vcxproj.filters deleted file mode 100644 index 300f13fdf6d..00000000000 --- a/libs/unimrcp/libs/mrcp/mrcp.vcxproj.filters +++ /dev/null @@ -1,151 +0,0 @@ - - - - - {93995380-89BD-4b04-88EB-625FBE52EBFB} - h;hpp;hxx;hm;inl;inc;xsd - - - {235b9544-2004-49c6-96de-a5830544296e} - - - {64717899-118b-46de-8646-d7312b19ce00} - h;hpp;hxx;hm;inl;inc;xsd - - - {1b656d42-e8f0-4126-85da-9bb8a470cfaa} - cpp;c;cc;cxx;def;odl;idl;hpj;bat;asm;asmx - - - {39545f85-6811-4878-af3f-26d813012ea3} - - - {e165b2a9-81db-4030-9e72-7189ee45182b} - h;hpp;hxx;hm;inl;inc;xsd - - - {a4e3b1a7-762d-4fcf-83e8-f52675aab2ff} - cpp;c;cc;cxx;def;odl;idl;hpj;bat;asm;asmx - - - {35e8458d-fc25-4066-b4be-ab452a6da8a9} - - - {8bbdedd2-2c1e-4474-8dbb-fcecf1f9a869} - h;hpp;hxx;hm;inl;inc;xsd - - - {1d167695-a5d2-4f87-8bd3-ea21cea5a368} - cpp;c;cc;cxx;def;odl;idl;hpj;bat;asm;asmx - - - - - include - - - include - - - message\include - - - message\include - - - message\include - - - message\include - - - message\include - - - control\include - - - control\include - - - control\include - - - control\include - - - resources\include - - - resources\include - - - resources\include - - - resources\include - - - resources\include - - - resources\include - - - resources\include - - - resources\include - - - - - message\src - - - message\src - - - message\src - - - message\src - - - message\src - - - control\src - - - control\src - - - control\src - - - resources\src - - - resources\src - - - resources\src - - - resources\src - - - resources\src - - - resources\src - - - resources\src - - - resources\src - - - \ No newline at end of file diff --git a/libs/unimrcp/libs/mrcp/resources/include/mrcp_recog_header.h b/libs/unimrcp/libs/mrcp/resources/include/mrcp_recog_header.h deleted file mode 100644 index a9f71c5a7ee..00000000000 --- a/libs/unimrcp/libs/mrcp/resources/include/mrcp_recog_header.h +++ /dev/null @@ -1,273 +0,0 @@ -/* - * Copyright 2008-2014 Arsen Chaloyan - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - * - * $Id: mrcp_recog_header.h 2136 2014-07-04 06:33:36Z achaloyan@gmail.com $ - */ - -#ifndef MRCP_RECOG_HEADER_H -#define MRCP_RECOG_HEADER_H - -/** - * @file mrcp_recog_header.h - * @brief MRCP Recognizer Header - */ - -#include "mrcp_types.h" -#include "mrcp_header_accessor.h" - -APT_BEGIN_EXTERN_C - -/** MRCP recognizer header fields */ -typedef enum { - RECOGNIZER_HEADER_CONFIDENCE_THRESHOLD, - RECOGNIZER_HEADER_SENSITIVITY_LEVEL, - RECOGNIZER_HEADER_SPEED_VS_ACCURACY, - RECOGNIZER_HEADER_N_BEST_LIST_LENGTH, - RECOGNIZER_HEADER_NO_INPUT_TIMEOUT, - RECOGNIZER_HEADER_RECOGNITION_TIMEOUT, - RECOGNIZER_HEADER_WAVEFORM_URI, - RECOGNIZER_HEADER_COMPLETION_CAUSE, - RECOGNIZER_HEADER_RECOGNIZER_CONTEXT_BLOCK, - RECOGNIZER_HEADER_START_INPUT_TIMERS, - RECOGNIZER_HEADER_SPEECH_COMPLETE_TIMEOUT, - RECOGNIZER_HEADER_SPEECH_INCOMPLETE_TIMEOUT, - RECOGNIZER_HEADER_DTMF_INTERDIGIT_TIMEOUT, - RECOGNIZER_HEADER_DTMF_TERM_TIMEOUT, - RECOGNIZER_HEADER_DTMF_TERM_CHAR, - RECOGNIZER_HEADER_FAILED_URI, - RECOGNIZER_HEADER_FAILED_URI_CAUSE, - RECOGNIZER_HEADER_SAVE_WAVEFORM, - RECOGNIZER_HEADER_NEW_AUDIO_CHANNEL, - RECOGNIZER_HEADER_SPEECH_LANGUAGE, - - /** Additional header fields for MRCP v2 */ - RECOGNIZER_HEADER_INPUT_TYPE, - RECOGNIZER_HEADER_INPUT_WAVEFORM_URI, - RECOGNIZER_HEADER_COMPLETION_REASON, - RECOGNIZER_HEADER_MEDIA_TYPE, - RECOGNIZER_HEADER_VER_BUFFER_UTTERANCE, - RECOGNIZER_HEADER_RECOGNITION_MODE, - RECOGNIZER_HEADER_CANCEL_IF_QUEUE, - RECOGNIZER_HEADER_HOTWORD_MAX_DURATION, - RECOGNIZER_HEADER_HOTWORD_MIN_DURATION, - RECOGNIZER_HEADER_INTERPRET_TEXT, - RECOGNIZER_HEADER_DTMF_BUFFER_TIME, - RECOGNIZER_HEADER_CLEAR_DTMF_BUFFER, - RECOGNIZER_HEADER_EARLY_NO_MATCH, - RECOGNIZER_HEADER_NUM_MIN_CONSISTENT_PRONUNCIATIONS, - RECOGNIZER_HEADER_CONSISTENCY_THRESHOLD, - RECOGNIZER_HEADER_CLASH_THRESHOLD, - RECOGNIZER_HEADER_PERSONAL_GRAMMAR_URI, - RECOGNIZER_HEADER_ENROLL_UTTERANCE, - RECOGNIZER_HEADER_PHRASE_ID, - RECOGNIZER_HEADER_PHRASE_NL, - RECOGNIZER_HEADER_WEIGHT, - RECOGNIZER_HEADER_SAVE_BEST_WAVEFORM, - RECOGNIZER_HEADER_NEW_PHRASE_ID, - RECOGNIZER_HEADER_CONFUSABLE_PHRASES_URI, - RECOGNIZER_HEADER_ABORT_PHRASE_ENROLLMENT, - - RECOGNIZER_HEADER_COUNT -} mrcp_recognizer_header_id; - - -/** MRCP recognizer completion-cause */ -typedef enum { - RECOGNIZER_COMPLETION_CAUSE_SUCCESS = 0, - RECOGNIZER_COMPLETION_CAUSE_NO_MATCH = 1, - RECOGNIZER_COMPLETION_CAUSE_NO_INPUT_TIMEOUT = 2, - RECOGNIZER_COMPLETION_CAUSE_RECOGNITION_TIMEOUT = 3, - RECOGNIZER_COMPLETION_CAUSE_GRAM_LOAD_FAILURE = 4, - RECOGNIZER_COMPLETION_CAUSE_GRAM_COMP_FAILURE = 5, - RECOGNIZER_COMPLETION_CAUSE_ERROR = 6, - RECOGNIZER_COMPLETION_CAUSE_SPEECH_TOO_EARLY = 7, - RECOGNIZER_COMPLETION_CAUSE_TOO_MUCH_SPEECH_TIMEOUT = 8, - RECOGNIZER_COMPLETION_CAUSE_URI_FAILURE = 9, - RECOGNIZER_COMPLETION_CAUSE_LANGUAGE_UNSUPPORTED = 10, - - /** Additional completion-cause for MRCP v2 */ - RECOGNIZER_COMPLETION_CAUSE_CANCELLED = 11, - RECOGNIZER_COMPLETION_CAUSE_SEMANTICS_FAILURE = 12, - RECOGNIZER_COMPLETION_CAUSE_PARTIAL_MATCH = 13, - RECOGNIZER_COMPLETION_CAUSE_PARTIAL_MATCH_MAXTIME = 14, - RECOGNIZER_COMPLETION_CAUSE_NO_MATCH_MAXTIME = 15, - RECOGNIZER_COMPLETION_CAUSE_GRAM_DEFINITION_FAILURE = 16, - - RECOGNIZER_COMPLETION_CAUSE_COUNT = 17, - RECOGNIZER_COMPLETION_CAUSE_UNKNOWN = RECOGNIZER_COMPLETION_CAUSE_COUNT -} mrcp_recog_completion_cause_e; - - - -/** MRCP recognizer-header declaration */ -typedef struct mrcp_recog_header_t mrcp_recog_header_t; - -/** MRCP recognizer-header */ -struct mrcp_recog_header_t { - /** Tells the recognizer resource what confidence level the client considers a - successful match */ - float confidence_threshold; - /** To filter out background noise and not mistake it for speech */ - float sensitivity_level; - /** Tunable towards Performance or Accuracy */ - float speed_vs_accuracy; - /** The client, by setting this header, can ask the recognition resource - to send it more than 1 alternative */ - apr_size_t n_best_list_length; - /** The client can use the no-input-timeout header to set this timeout */ - apr_size_t no_input_timeout; - /** The client can use the recognition-timeout header to set this timeout */ - apr_size_t recognition_timeout; - /** MUST be present in the RECOGNITION-COMPLETE event if the Save-Waveform - header was set to true */ - apt_str_t waveform_uri; - /** MUST be part of a RECOGNITION-COMPLETE, event coming from - the recognizer resource to the client */ - mrcp_recog_completion_cause_e completion_cause; - /** MAY be sent as part of the SET-PARAMS or GET-PARAMS request */ - apt_str_t recognizer_context_block; - /** MAY be sent as part of the RECOGNIZE request. A value of false tells - the recognizer to start recognition, but not to start the no-input timer yet */ - apt_bool_t start_input_timers; - /** Specifies the length of silence required following user - speech before the speech recognizer finalizes a result */ - apr_size_t speech_complete_timeout; - /** Specifies the required length of silence following user - speech after which a recognizer finalizes a result */ - apr_size_t speech_incomplete_timeout; - /** Specifies the inter-digit timeout value to use when - recognizing DTMF input */ - apr_size_t dtmf_interdigit_timeout; - /** Specifies the terminating timeout to use when - recognizing DTMF input*/ - apr_size_t dtmf_term_timeout; - /** Specifies the terminating DTMF character for DTMF input - recognition */ - char dtmf_term_char; - /** When a recognizer needs to fetch or access a URI and the access fails - the server SHOULD provide the failed URI in this header in the method response*/ - apt_str_t failed_uri; - /** When a recognizer method needs a recognizer to fetch or access a URI - and the access fails the server MUST provide the URI specific or - protocol specific response code for the URI in the Failed-URI header */ - apt_str_t failed_uri_cause; - /** Allows the client to request the recognizer resource to - save the audio input to the recognizer */ - apt_bool_t save_waveform; - /** MAY be specified in a RECOGNIZE request and allows the - client to tell the server that, from this point on, further input - audio comes from a different audio source */ - apt_bool_t new_audio_channel; - /** Specifies the language of recognition grammar data within - a session or request, if it is not specified within the data */ - apt_str_t speech_language; - - /** Additional header fields for MRCP v2 */ - /** Specifies if the input that caused a barge-in was DTMF or speech */ - apt_str_t input_type; - /** Optional header specifies a URI pointing to audio content to be - processed by the RECOGNIZE operation */ - apt_str_t input_waveform_uri; - /** MAY be specified in a RECOGNITION-COMPLETE event coming from - the recognizer resource to the client */ - apt_str_t completion_reason; - /** Tells the server resource the Media Type in which to store captured - audio such as the one captured and returned by the Waveform-URI header */ - apt_str_t media_type; - /** Lets the client request the server to buffer the - utterance associated with this recognition request into a buffer - available to a co-resident verification resource */ - apt_bool_t ver_buffer_utterance; - /** Specifies what mode the RECOGNIZE method will operate in */ - apt_str_t recognition_mode; - /** Specifies what will happen if the client attempts to - invoke another RECOGNIZE method when this RECOGNIZE request is - already in progress for the resource*/ - apt_bool_t cancel_if_queue; - /** Specifies the maximum length of an utterance (in seconds) that will - be considered for Hotword recognition */ - apr_size_t hotword_max_duration; - /** Specifies the minimum length of an utterance (in seconds) that will - be considered for Hotword recognition */ - apr_size_t hotword_min_duration; - /** Provides a pointer to the text for which a natural language interpretation is desired */ - apt_str_t interpret_text; - /** MAY be specified in a GET-PARAMS or SET-PARAMS method and - is used to specify the size in time, in milliseconds, of the - typeahead buffer for the recognizer */ - apr_size_t dtmf_buffer_time; - /** MAY be specified in a RECOGNIZE method and is used to - tell the recognizer to clear the DTMF type-ahead buffer before - starting the recognize */ - apt_bool_t clear_dtmf_buffer; - /** MAY be specified in a RECOGNIZE method and is used to - tell the recognizer that it MUST not wait for the end of speech - before processing the collected speech to match active grammars */ - apt_bool_t early_no_match; - /** MAY be specified in a START-PHRASE-ENROLLMENT, "SET-PARAMS", or - "GET-PARAMS" method and is used to specify the minimum number of - consistent pronunciations that must be obtained to voice enroll a new phrase */ - apr_size_t num_min_consistent_pronunciations; - /** MAY be sent as part of the START-PHRASE-ENROLLMENT,"SET-PARAMS", or - "GET-PARAMS" method and is used during voice-enrollment to specify how similar - to a previously enrolled pronunciation of the same phrase an utterance needs - to be in order to be considered "consistent" */ - float consistency_threshold; - /** MAY be sent as part of the START-PHRASE-ENROLLMENT, SET-PARAMS, or - "GET-PARAMS" method and is used during voice-enrollment to specify - how similar the pronunciations of two different phrases can be - before they are considered to be clashing */ - float clash_threshold; - /** Specifies the speaker-trained grammar to be used or - referenced during enrollment operations */ - apt_str_t personal_grammar_uri; - /** MAY be specified in the RECOGNIZE method. If this header - is set to "true" and an Enrollment is active, the RECOGNIZE command - MUST add the collected utterance to the personal grammar that is - being enrolled */ - apt_bool_t enroll_utterance; - /** Identifies a phrase in an existing personal grammar for which - enrollment is desired. It is also returned to the client in the - RECOGNIZE complete event */ - apt_str_t phrase_id; - /** Specifies the interpreted text to be returned when the - phrase is recognized */ - apt_str_t phrase_nl; - /** Represents the occurrence likelihood of a phrase in an enrolled grammar */ - float weight; - /** Allows the client to request the recognizer resource to - save the audio stream for the best repetition of the phrase that was - used during the enrollment session */ - apt_bool_t save_best_waveform; - /** Replaces the id used to identify the phrase in a personal grammar */ - apt_str_t new_phrase_id; - /** Specifies a grammar that defines invalid phrases for enrollment */ - apt_str_t confusable_phrases_uri; - /** Can optionally be specified in the END-PHRASE-ENROLLMENT - method to abort the phrase enrollment, rather than committing the - phrase to the personal grammar */ - apt_bool_t abort_phrase_enrollment; -}; - - -/** Get recognizer header vtable */ -const mrcp_header_vtable_t* mrcp_recog_header_vtable_get(mrcp_version_e version); - -/** Get recognizer completion cause string */ -MRCP_DECLARE(const apt_str_t*) mrcp_recog_completion_cause_get(mrcp_recog_completion_cause_e completion_cause, mrcp_version_e version); - -APT_END_EXTERN_C - -#endif /* MRCP_RECOG_HEADER_H */ diff --git a/libs/unimrcp/libs/mrcp/resources/include/mrcp_recog_resource.h b/libs/unimrcp/libs/mrcp/resources/include/mrcp_recog_resource.h deleted file mode 100644 index 93e2f1ba9e6..00000000000 --- a/libs/unimrcp/libs/mrcp/resources/include/mrcp_recog_resource.h +++ /dev/null @@ -1,64 +0,0 @@ -/* - * Copyright 2008-2014 Arsen Chaloyan - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - * - * $Id: mrcp_recog_resource.h 2136 2014-07-04 06:33:36Z achaloyan@gmail.com $ - */ - -#ifndef MRCP_RECOG_RESOURCE_H -#define MRCP_RECOG_RESOURCE_H - -/** - * @file mrcp_recog_resource.h - * @brief MRCP Recognizer Resource - */ - -#include "mrcp_types.h" - -APT_BEGIN_EXTERN_C - -/** MRCP recognizer methods */ -typedef enum { - RECOGNIZER_SET_PARAMS, - RECOGNIZER_GET_PARAMS, - RECOGNIZER_DEFINE_GRAMMAR, - RECOGNIZER_RECOGNIZE, - RECOGNIZER_INTERPRET, - RECOGNIZER_GET_RESULT, - RECOGNIZER_START_INPUT_TIMERS, - RECOGNIZER_STOP, - RECOGNIZER_START_PHRASE_ENROLLMENT, - RECOGNIZER_ENROLLMENT_ROLLBACK, - RECOGNIZER_END_PHRASE_ENROLLMENT, - RECOGNIZER_MODIFY_PHRASE, - RECOGNIZER_DELETE_PHRASE, - - RECOGNIZER_METHOD_COUNT -} mrcp_recognizer_method_id; - -/** MRCP recognizer events */ -typedef enum { - RECOGNIZER_START_OF_INPUT, - RECOGNIZER_RECOGNITION_COMPLETE, - RECOGNIZER_INTERPRETATION_COMPLETE, - - RECOGNIZER_EVENT_COUNT -} mrcp_recognizer_event_id; - -/** Create MRCP recognizer resource */ -MRCP_DECLARE(mrcp_resource_t*) mrcp_recog_resource_create(apr_pool_t *pool); - -APT_END_EXTERN_C - -#endif /* MRCP_RECOG_RESOURCE_H */ diff --git a/libs/unimrcp/libs/mrcp/resources/include/mrcp_recorder_header.h b/libs/unimrcp/libs/mrcp/resources/include/mrcp_recorder_header.h deleted file mode 100644 index 77569a00b0f..00000000000 --- a/libs/unimrcp/libs/mrcp/resources/include/mrcp_recorder_header.h +++ /dev/null @@ -1,138 +0,0 @@ -/* - * Copyright 2008-2014 Arsen Chaloyan - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - * - * $Id: mrcp_recorder_header.h 2136 2014-07-04 06:33:36Z achaloyan@gmail.com $ - */ - -#ifndef MRCP_RECORDER_HEADER_H -#define MRCP_RECORDER_HEADER_H - -/** - * @file mrcp_recorder_header.h - * @brief MRCP Recorder Header - */ - -#include "mrcp_types.h" -#include "mrcp_header_accessor.h" - -APT_BEGIN_EXTERN_C - -/** MRCP recorder header fields */ -typedef enum { - RECORDER_HEADER_SENSITIVITY_LEVEL, - RECORDER_HEADER_NO_INPUT_TIMEOUT, - RECORDER_HEADER_COMPLETION_CAUSE, - RECORDER_HEADER_COMPLETION_REASON, - RECORDER_HEADER_FAILED_URI, - RECORDER_HEADER_FAILED_URI_CAUSE, - RECORDER_HEADER_RECORD_URI, - RECORDER_HEADER_MEDIA_TYPE, - RECORDER_HEADER_MAX_TIME, - RECORDER_HEADER_TRIM_LENGTH, - RECORDER_HEADER_FINAL_SILENCE, - RECORDER_HEADER_CAPTURE_ON_SPEECH, - RECORDER_HEADER_VER_BUFFER_UTTERANCE, - RECORDER_HEADER_START_INPUT_TIMERS, - RECORDER_HEADER_NEW_AUDIO_CHANNEL, - - RECORDER_HEADER_COUNT -} mrcp_recorder_header_id; - - -/** MRCP recorder completion-cause */ -typedef enum { - RECORDER_COMPLETION_CAUSE_SUCCESS_SILENCE = 0, - RECORDER_COMPLETION_CAUSE_SUCCESS_MAXTIME = 1, - RECORDER_COMPLETION_CAUSE_NO_INPUT_TIMEOUT = 2, - RECORDER_COMPLETION_CAUSE_URI_FAILURE = 3, - RECORDER_COMPLETION_CAUSE_ERROR = 4, - - RECORDER_COMPLETION_CAUSE_COUNT = 5, - RECORDER_COMPLETION_CAUSE_UNKNOWN = RECORDER_COMPLETION_CAUSE_COUNT -} mrcp_recorder_completion_cause_e; - - - -/** MRCP recorder-header declaration */ -typedef struct mrcp_recorder_header_t mrcp_recorder_header_t; - -/** MRCP recorder-header */ -struct mrcp_recorder_header_t { - /** To filter out background noise and not mistake it for speech */ - float sensitivity_level; - /** When recording is started and there is no speech detected for a - certain period of time, the recorder can send a RECORD-COMPLETE event */ - apr_size_t no_input_timeout; - /** MUST be part of a RECORD-COMPLETE event coming from the - recorder resource to the client */ - mrcp_recorder_completion_cause_e completion_cause; - /** MAY be specified in a RECORD-COMPLETE event coming from - the recorder resource to the client */ - apt_str_t completion_reason; - /** When a recorder method needs to post the audio to a URI and access to - the URI fails, the server MUST provide the failed URI in this header - in the method response */ - apt_str_t failed_uri; - /** When a recorder method needs to post the audio to a URI and access to - the URI fails, the server MUST provide the URI specific or protocol - specific response code through this header in the method response */ - apt_str_t failed_uri_cause; - /** When a recorder method contains this header the server must capture - the audio and store it */ - apt_str_t record_uri; - /** A RECORD method MUST contain this header, which specifies to the - server the Media Type of the captured audio or video */ - apt_str_t media_type; - /** When recording is started this specifies the maximum length of the - recording in milliseconds, calculated from the time the actual - capture and store begins and is not necessarily the time the RECORD - method is received */ - apr_size_t max_time; - /** This header MAY be sent on a STOP method and specifies the length of - audio to be trimmed from the end of the recording after the stop */ - apr_size_t trim_length; - /** When recorder is started and the actual capture begins, this header - specifies the length of silence in the audio that is to be - interpreted as the end of the recording*/ - apr_size_t final_silence; - /** f false, the recorder MUST start capturing immediately when started. - If true, the recorder MUST wait for the endpointing functionality to - detect speech before it starts capturing */ - apt_bool_t capture_on_speech; - /** Tells the server to buffer the utterance associated with this - recording request into the verification buffer */ - apt_bool_t ver_buffer_utterance; - /** MAY be sent as part of the RECORD request. A value of false tells the - recorder resource to start the operation, but not to start the no-input - timer until the client sends a START-INPUT-TIMERS */ - apt_bool_t start_input_timers; - /** MAY be specified in a RECORD request and allows the - client to tell the server that, from this point on, further input - audio comes from a different audio source */ - apt_bool_t new_audio_channel; -}; - - -/** Get recorder header vtable */ -const mrcp_header_vtable_t* mrcp_recorder_header_vtable_get(mrcp_version_e version); - -/** Get recorder completion cause string */ -MRCP_DECLARE(const apt_str_t*) mrcp_recorder_completion_cause_get( - mrcp_recorder_completion_cause_e completion_cause, - mrcp_version_e version); - -APT_END_EXTERN_C - -#endif /* MRCP_RECORDER_HEADER_H */ diff --git a/libs/unimrcp/libs/mrcp/resources/include/mrcp_recorder_resource.h b/libs/unimrcp/libs/mrcp/resources/include/mrcp_recorder_resource.h deleted file mode 100644 index 86100030a1b..00000000000 --- a/libs/unimrcp/libs/mrcp/resources/include/mrcp_recorder_resource.h +++ /dev/null @@ -1,55 +0,0 @@ -/* - * Copyright 2008-2014 Arsen Chaloyan - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - * - * $Id: mrcp_recorder_resource.h 2136 2014-07-04 06:33:36Z achaloyan@gmail.com $ - */ - -#ifndef MRCP_RECORDER_RESOURCE_H -#define MRCP_RECORDER_RESOURCE_H - -/** - * @file mrcp_recorder_resource.h - * @brief MRCP Recorder Resource - */ - -#include "mrcp_types.h" - -APT_BEGIN_EXTERN_C - -/** MRCP recorder methods */ -typedef enum { - RECORDER_SET_PARAMS, - RECORDER_GET_PARAMS, - RECORDER_RECORD, - RECORDER_STOP, - RECORDER_START_INPUT_TIMERS, - - RECORDER_METHOD_COUNT -} mrcp_recorder_method_id; - -/** MRCP recorder events */ -typedef enum { - RECORDER_START_OF_INPUT, - RECORDER_RECORD_COMPLETE, - - RECORDER_EVENT_COUNT -} mrcp_recorder_event_id; - -/** Create MRCP recorder resource */ -MRCP_DECLARE(mrcp_resource_t*) mrcp_recorder_resource_create(apr_pool_t *pool); - -APT_END_EXTERN_C - -#endif /* MRCP_RECORDER_RESOURCE_H */ diff --git a/libs/unimrcp/libs/mrcp/resources/include/mrcp_synth_header.h b/libs/unimrcp/libs/mrcp/resources/include/mrcp_synth_header.h deleted file mode 100644 index 9a9fc6eb6bc..00000000000 --- a/libs/unimrcp/libs/mrcp/resources/include/mrcp_synth_header.h +++ /dev/null @@ -1,304 +0,0 @@ -/* - * Copyright 2008-2014 Arsen Chaloyan - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - * - * $Id: mrcp_synth_header.h 2136 2014-07-04 06:33:36Z achaloyan@gmail.com $ - */ - -#ifndef MRCP_SYNTH_HEADER_H -#define MRCP_SYNTH_HEADER_H - -/** - * @file mrcp_synth_header.h - * @brief MRCP Synthesizer Header - */ - -#include "mrcp_types.h" -#include "mrcp_header_accessor.h" - -APT_BEGIN_EXTERN_C - -/** MRCP synthesizer header fields */ -typedef enum { - SYNTHESIZER_HEADER_JUMP_SIZE, - SYNTHESIZER_HEADER_KILL_ON_BARGE_IN, - SYNTHESIZER_HEADER_SPEAKER_PROFILE, - SYNTHESIZER_HEADER_COMPLETION_CAUSE, - SYNTHESIZER_HEADER_COMPLETION_REASON, - SYNTHESIZER_HEADER_VOICE_GENDER, - SYNTHESIZER_HEADER_VOICE_AGE, - SYNTHESIZER_HEADER_VOICE_VARIANT, - SYNTHESIZER_HEADER_VOICE_NAME, - SYNTHESIZER_HEADER_PROSODY_VOLUME, - SYNTHESIZER_HEADER_PROSODY_RATE, - SYNTHESIZER_HEADER_SPEECH_MARKER, - SYNTHESIZER_HEADER_SPEECH_LANGUAGE, - SYNTHESIZER_HEADER_FETCH_HINT, - SYNTHESIZER_HEADER_AUDIO_FETCH_HINT, - SYNTHESIZER_HEADER_FAILED_URI, - SYNTHESIZER_HEADER_FAILED_URI_CAUSE, - SYNTHESIZER_HEADER_SPEAK_RESTART, - SYNTHESIZER_HEADER_SPEAK_LENGTH, - SYNTHESIZER_HEADER_LOAD_LEXICON, - SYNTHESIZER_HEADER_LEXICON_SEARCH_ORDER, - - SYNTHESIZER_HEADER_COUNT -} mrcp_synthesizer_header_id; - - -/** Speech-units */ -typedef enum { - SPEECH_UNIT_SECOND, - SPEECH_UNIT_WORD, - SPEECH_UNIT_SENTENCE, - SPEECH_UNIT_PARAGRAPH, - - SPEECH_UNIT_COUNT -} mrcp_speech_unit_e; - -/** Speech-length types */ -typedef enum { - SPEECH_LENGTH_TYPE_TEXT, - SPEECH_LENGTH_TYPE_NUMERIC_POSITIVE, - SPEECH_LENGTH_TYPE_NUMERIC_NEGATIVE, - - SPEECH_LENGTH_TYPE_UNKNOWN -} mrcp_speech_length_type_e; - -/** MRCP voice-gender */ -typedef enum { - VOICE_GENDER_MALE, - VOICE_GENDER_FEMALE, - VOICE_GENDER_NEUTRAL, - - VOICE_GENDER_COUNT, - VOICE_GENDER_UNKNOWN = VOICE_GENDER_COUNT -} mrcp_voice_gender_e; - -/** Prosody-volume type */ -typedef enum { - PROSODY_VOLUME_TYPE_LABEL, - PROSODY_VOLUME_TYPE_NUMERIC, - PROSODY_VOLUME_TYPE_RELATIVE_CHANGE, - - PROSODY_VOLUME_TYPE_UNKNOWN -} mrcp_prosody_volume_type_e; - -/** Prosody-rate type */ -typedef enum { - PROSODY_RATE_TYPE_LABEL, - PROSODY_RATE_TYPE_RELATIVE_CHANGE, - - PROSODY_RATE_TYPE_UNKNOWN -} mrcp_prosody_rate_type_e; - -/** Prosody-volume */ -typedef enum { - PROSODY_VOLUME_SILENT, - PROSODY_VOLUME_XSOFT, - PROSODY_VOLUME_SOFT, - PROSODY_VOLUME_MEDIUM, - PROSODY_VOLUME_LOUD, - PROSODY_VOLUME_XLOUD, - PROSODY_VOLUME_DEFAULT, - - PROSODY_VOLUME_COUNT, - PROSODY_VOLUME_UNKNOWN = PROSODY_VOLUME_COUNT -} mrcp_prosody_volume_label_e; - -/** Prosody-rate */ -typedef enum { - PROSODY_RATE_XSLOW, - PROSODY_RATE_SLOW, - PROSODY_RATE_MEDIUM, - PROSODY_RATE_FAST, - PROSODY_RATE_XFAST, - PROSODY_RATE_DEFAULT, - - PROSODY_RATE_COUNT, - PROSODY_RATE_UNKNOWN = PROSODY_RATE_COUNT -} mrcp_prosody_rate_label_e; - -/** Synthesizer completion-cause specified in SPEAK-COMPLETE event */ -typedef enum { - SYNTHESIZER_COMPLETION_CAUSE_NORMAL = 0, - SYNTHESIZER_COMPLETION_CAUSE_BARGE_IN = 1, - SYNTHESIZER_COMPLETION_CAUSE_PARSE_FAILURE = 2, - SYNTHESIZER_COMPLETION_CAUSE_URI_FAILURE = 3, - SYNTHESIZER_COMPLETION_CAUSE_ERROR = 4, - SYNTHESIZER_COMPLETION_CAUSE_LANGUAGE_UNSUPPORTED = 5, - SYNTHESIZER_COMPLETION_CAUSE_LEXICON_LOAD_FAILURE = 6, - SYNTHESIZER_COMPLETION_CAUSE_CANCELLED = 7, - - SYNTHESIZER_COMPLETION_CAUSE_COUNT = 8, - SYNTHESIZER_COMPLETION_CAUSE_UNKNOWN = SYNTHESIZER_COMPLETION_CAUSE_COUNT -} mrcp_synth_completion_cause_e; - - -/** Speech-length value declaration */ -typedef struct mrcp_speech_length_value_t mrcp_speech_length_value_t; -/** Numeric speech-length declaration */ -typedef struct mrcp_numeric_speech_length_t mrcp_numeric_speech_length_t; -/** Prosody-param declaration */ -typedef struct mrcp_prosody_param_t mrcp_prosody_param_t; -/** Voice-param declaration */ -typedef struct mrcp_voice_param_t mrcp_voice_param_t; -/**Prosody-rate declaration*/ -typedef struct mrcp_prosody_rate_t mrcp_prosody_rate_t; -/**Prosody-volume declaration*/ -typedef struct mrcp_prosody_volume_t mrcp_prosody_volume_t; -/** MRCP synthesizer-header declaration */ -typedef struct mrcp_synth_header_t mrcp_synth_header_t; - -/** Numeric speech-length */ -struct mrcp_numeric_speech_length_t { - /** The length */ - apr_size_t length; - /** The unit (second/word/sentence/paragraph) */ - mrcp_speech_unit_e unit; -}; - -/** Definition of speech-length value */ -struct mrcp_speech_length_value_t { - /** Speech-length type (numeric/text)*/ - mrcp_speech_length_type_e type; - /** Speech-length value (either numeric or text) */ - union { - /** Text speech-length */ - apt_str_t tag; - /** Numeric speech-length */ - mrcp_numeric_speech_length_t numeric; - } value; -}; - -/** MRCP voice-param */ -struct mrcp_voice_param_t { - /** Voice gender (male/femaile/neutral)*/ - mrcp_voice_gender_e gender; - /** Voice age */ - apr_size_t age; - /** Voice variant */ - apr_size_t variant; - /** Voice name */ - apt_str_t name; -}; - -/** MRCP prosody-volume */ -struct mrcp_prosody_volume_t { - /** prosody-volume type (one of label,numeric,relative change) */ - mrcp_prosody_volume_type_e type; - - /** prosody-volume value */ - union { - /** one of "silent", "x-soft", ... */ - mrcp_prosody_volume_label_e label; - /** numeric value */ - float numeric; - /** relative change */ - float relative; - } value; -}; - -/** MRCP prosody-rate */ -struct mrcp_prosody_rate_t { - /** prosody-rate type (one of label, relative change) */ - mrcp_prosody_rate_type_e type; - - /** prosody-rate value */ - union { - /** one of "x-slow", "slow", ... */ - mrcp_prosody_rate_label_e label; - /** relative change */ - float relative; - } value; -}; - -/** MRCP prosody-param */ -struct mrcp_prosody_param_t { - /** Prosofy volume */ - mrcp_prosody_volume_t volume; - /** Prosofy rate */ - mrcp_prosody_rate_t rate; -}; - -/** MRCP synthesizer-header */ -struct mrcp_synth_header_t { - /** MAY be specified in a CONTROL method and controls the - amount to jump forward or backward in an active "SPEAK" request */ - mrcp_speech_length_value_t jump_size; - /** MAY be sent as part of the "SPEAK" method to enable kill- - on-barge-in support */ - apt_bool_t kill_on_barge_in; - /** MAY be part of the "SET-PARAMS"/"GET-PARAMS" or "SPEAK" - request from the client to the server and specifies a URI which - references the profile of the speaker */ - apt_str_t speaker_profile; - /** MUST be specified in a "SPEAK-COMPLETE" event coming from - the synthesizer resource to the client */ - mrcp_synth_completion_cause_e completion_cause; - /** MAY be specified in a "SPEAK-COMPLETE" event coming from - the synthesizer resource to the client */ - apt_str_t completion_reason; - /** This set of header fields defines the voice of the speaker */ - mrcp_voice_param_t voice_param; - /** This set of header fields defines the prosody of the speech */ - mrcp_prosody_param_t prosody_param; - /** Contains timestamp information in a "timestamp" field */ - apt_str_t speech_marker; - /** specifies the default language of the speech data if the - language is not specified in the markup */ - apt_str_t speech_language; - /** When the synthesizer needs to fetch documents or other resources like - speech markup or audio files, this header controls the corresponding - URI access properties */ - apt_str_t fetch_hint; - /** When the synthesizer needs to fetch documents or other resources like - speech audio files, this header controls the corresponding URI access - properties */ - apt_str_t audio_fetch_hint; - /** When a synthesizer method needs a synthesizer to fetch or access a - URI and the access fails, the server SHOULD provide the failed URI in - this header in the method response */ - apt_str_t failed_uri; - /** When a synthesizer method needs a synthesizer to fetch or access a - URI and the access fails the server MUST provide the URI specific or - protocol specific response code for the URI in the Failed-URI header - in the method response through this header */ - apt_str_t failed_uri_cause; - /** When a CONTROL request to jump backward is issued to a currently - speaking synthesizer resource, and the target jump point is before - the start of the current "SPEAK" request, the current "SPEAK" request - MUST restart */ - apt_bool_t speak_restart; - /** MAY be specified in a CONTROL method to control the - length of speech to speak, relative to the current speaking point in - the currently active "SPEAK" request */ - mrcp_speech_length_value_t speak_length; - /** Used to indicate whether a lexicon has to be loaded or unloaded */ - apt_bool_t load_lexicon; - /** Used to specify a list of active Lexicon URIs and the - search order among the active lexicons */ - apt_str_t lexicon_search_order; -}; - -/** Get synthesizer header vtable */ -const mrcp_header_vtable_t* mrcp_synth_header_vtable_get(mrcp_version_e version); - -/** Get synthesizer completion cause string */ -MRCP_DECLARE(const apt_str_t*) mrcp_synth_completion_cause_get(mrcp_synth_completion_cause_e completion_cause, mrcp_version_e version); - - -APT_END_EXTERN_C - -#endif /* MRCP_SYNTH_HEADER_H */ diff --git a/libs/unimrcp/libs/mrcp/resources/include/mrcp_synth_resource.h b/libs/unimrcp/libs/mrcp/resources/include/mrcp_synth_resource.h deleted file mode 100644 index a03cc53e559..00000000000 --- a/libs/unimrcp/libs/mrcp/resources/include/mrcp_synth_resource.h +++ /dev/null @@ -1,60 +0,0 @@ -/* - * Copyright 2008-2014 Arsen Chaloyan - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - * - * $Id: mrcp_synth_resource.h 2136 2014-07-04 06:33:36Z achaloyan@gmail.com $ - */ - -#ifndef MRCP_SYNTH_RESOURCE_H -#define MRCP_SYNTH_RESOURCE_H - -/** - * @file mrcp_synth_resource.h - * @brief MRCP Synthesizer Resource - */ - -#include "mrcp_types.h" - -APT_BEGIN_EXTERN_C - -/** MRCP synthesizer methods */ -typedef enum { - SYNTHESIZER_SET_PARAMS, - SYNTHESIZER_GET_PARAMS, - SYNTHESIZER_SPEAK, - SYNTHESIZER_STOP, - SYNTHESIZER_PAUSE, - SYNTHESIZER_RESUME, - SYNTHESIZER_BARGE_IN_OCCURRED, - SYNTHESIZER_CONTROL, - SYNTHESIZER_DEFINE_LEXICON, - - SYNTHESIZER_METHOD_COUNT -} mrcp_synthesizer_method_id; - -/** MRCP synthesizer events */ -typedef enum { - SYNTHESIZER_SPEECH_MARKER, - SYNTHESIZER_SPEAK_COMPLETE, - - SYNTHESIZER_EVENT_COUNT -} mrcp_synthesizer_event_id; - - -/** Create MRCP synthesizer resource */ -MRCP_DECLARE(mrcp_resource_t*) mrcp_synth_resource_create(apr_pool_t *pool); - -APT_END_EXTERN_C - -#endif /* MRCP_SYNTH_RESOURCE_H */ diff --git a/libs/unimrcp/libs/mrcp/resources/include/mrcp_verifier_header.h b/libs/unimrcp/libs/mrcp/resources/include/mrcp_verifier_header.h deleted file mode 100644 index 7a7e94419a9..00000000000 --- a/libs/unimrcp/libs/mrcp/resources/include/mrcp_verifier_header.h +++ /dev/null @@ -1,162 +0,0 @@ -/* - * Copyright 2008-2014 Arsen Chaloyan - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - * - * $Id: - */ - -#ifndef MRCP_VERIFIER_HEADER_H -#define MRCP_VERIFIER_HEADER_H - -/** - * @file mrcp_verifier_header.h - * @brief MRCP Verifier Header - */ - -#include "mrcp_types.h" -#include "mrcp_header_accessor.h" - -APT_BEGIN_EXTERN_C - -/** MRCP verifier header fields */ -typedef enum { - VERIFIER_HEADER_REPOSITORY_URI, - VERIFIER_HEADER_VOICEPRINT_IDENTIFIER, - VERIFIER_HEADER_VERIFICATION_MODE, - VERIFIER_HEADER_ADAPT_MODEL, - VERIFIER_HEADER_ABORT_MODEL, - VERIFIER_HEADER_MIN_VERIFICATION_SCORE, - VERIFIER_HEADER_NUM_MIN_VERIFICATION_PHRASES, - VERIFIER_HEADER_NUM_MAX_VERIFICATION_PHRASES, - VERIFIER_HEADER_NO_INPUT_TIMEOUT, - VERIFIER_HEADER_SAVE_WAVEFORM, - VERIFIER_HEADER_MEDIA_TYPE, - VERIFIER_HEADER_WAVEFORM_URI, - VERIFIER_HEADER_VOICEPRINT_EXISTS, - VERIFIER_HEADER_VER_BUFFER_UTTERANCE, - VERIFIER_HEADER_INPUT_WAVEFORM_URI, - VERIFIER_HEADER_COMPLETION_CAUSE, - VERIFIER_HEADER_COMPLETION_REASON, - VERIFIER_HEADER_SPEECH_COMPLETE_TIMEOUT, - VERIFIER_HEADER_NEW_AUDIO_CHANNEL, - VERIFIER_HEADER_ABORT_VERIFICATION, - VERIFIER_HEADER_START_INPUT_TIMERS, - - VERIFIER_HEADER_COUNT -} mrcp_verifier_header_id; - - -/** MRCP verifier completion-cause */ -typedef enum { - VERIFIER_COMPLETION_CAUSE_SUCCESS = 0, - VERIFIER_COMPLETION_CAUSE_ERROR = 1, - VERIFIER_COMPLETION_CAUSE_NO_INPUT_TIMEOUT = 2, - VERIFIER_COMPLETION_CAUSE_TOO_MUCH_SPEECH_TIMEOUT = 3, - VERIFIER_COMPLETION_CAUSE_SPEECH_TOO_EARLY = 4, - VERIFIER_COMPLETION_CAUSE_BUFFER_EMPTY = 5, - VERIFIER_COMPLETION_CAUSE_OUT_OF_SEQUENCE = 6, - VERIFIER_COMPLETION_CAUSE_REPOSITORY_URI_FAILURE = 7, - VERIFIER_COMPLETION_CAUSE_REPOSITORY_URI_MISSING = 8, - VERIFIER_COMPLETION_CAUSE_VOICEPRINT_ID_MISSING = 9, - VERIFIER_COMPLETION_CAUSE_VOICEPRINT_ID_NOT_EXIST = 10, - VERIFIER_COMPLETION_CAUSE_SPEECH_NOT_USABLE = 11, - - VERIFIER_COMPLETION_CAUSE_COUNT = 12, - VERIFIER_COMPLETION_CAUSE_UNKNOWN = VERIFIER_COMPLETION_CAUSE_COUNT -} mrcp_verifier_completion_cause_e; - - - -/** MRCP verifier-header declaration */ -typedef struct mrcp_verifier_header_t mrcp_verifier_header_t; - -/** MRCP verifier-header */ -struct mrcp_verifier_header_t { - /** Specifies the voiceprint repository to be used or referenced during - speaker verification or identification operations */ - apt_str_t repository_uri; - /** Specifies the claimed identity for verification applications */ - apt_str_t voiceprint_identifier; - /** Specifies the mode of the verification resource */ - apt_str_t verification_mode; - /** Indicates the desired behavior of the verification resource - after a successful verification operation */ - apt_bool_t adapt_model; - /** Indicates the desired behavior of the verification resource - upon session termination */ - apt_bool_t abort_model; - /** Determines the minimum verification score for which a verification - decision of "accepted" may be declared by the server */ - float min_verification_score; - /** Specifies the minimum number of valid utterances - before a positive decision is given for verification */ - apr_size_t num_min_verification_phrases; - /** Specifies the number of valid utterances required - before a decision is forced for verification */ - apr_size_t num_max_verification_phrases; - /** Sets the length of time from the start of the verification timers - (see START-INPUT-TIMERS) until the declaration of a no-input event - in the VERIFICATION-COMPLETE server event message */ - apr_size_t no_input_timeout; - /** Allows the client to request the verification resource to save - the audio stream that was used for verification/identification */ - apt_bool_t save_waveform; - /** Tells the server resource the Media Type of the captured audio or video - such as the one captured and returned by the Waveform-URI header field */ - apt_str_t media_type; - /** If the Save-Waveform header field is set to true, the verification resource - MUST attempt to record the incoming audio stream of the verification into - a file and provide a URI for the client to access it */ - apt_str_t waveform_uri; - /** Shows the status of the voiceprint specified - in the QUERY-VOICEPRINT method */ - apt_bool_t voiceprint_exists; - /** Indicates that this utterance could be - later considered for Speaker Verification */ - apt_bool_t ver_buffer_utterance; - /** Specifies stored audio content that the client requests the server - to fetch and process according to the current verification mode, - either to train the voiceprint or verify a claimed identity */ - apt_str_t input_waveform_uri; - /** Indicates the cause of VERIFY or VERIFY-FROM-BUFFER method completion */ - mrcp_verifier_completion_cause_e completion_cause; - /** MAY be specified in a VERIFICATION-COMPLETE event - coming from the verifier resource to the client */ - apt_str_t completion_reason; - /** Specifies the length of silence required following user - speech before the speech verifier finalizes a result */ - apr_size_t speech_complete_timeout; - /** MAY be specified in a VERIFIER request and allows the - client to tell the server that, from this point on, further input - audio comes from a different audio source */ - apt_bool_t new_audio_channel; - /** MUST be sent in a STOP request to indicate - whether or not to abort a VERIFY method in progress */ - apt_bool_t abort_verification; - /** MAY be sent as part of a VERIFY request. A value of false - tells the verification resource to start the VERIFY operation, - but not to start the no-input timer yet */ - apt_bool_t start_input_timers; -}; - - -/** Get verifier header vtable */ -const mrcp_header_vtable_t* mrcp_verifier_header_vtable_get(mrcp_version_e version); - -/** Get verifier completion cause string */ -MRCP_DECLARE(const apt_str_t*) mrcp_verifier_completion_cause_get(mrcp_verifier_completion_cause_e completion_cause, mrcp_version_e version); - -APT_END_EXTERN_C - -#endif /* MRCP_VERIFIER_HEADER_H */ diff --git a/libs/unimrcp/libs/mrcp/resources/include/mrcp_verifier_resource.h b/libs/unimrcp/libs/mrcp/resources/include/mrcp_verifier_resource.h deleted file mode 100644 index f3022513ebd..00000000000 --- a/libs/unimrcp/libs/mrcp/resources/include/mrcp_verifier_resource.h +++ /dev/null @@ -1,63 +0,0 @@ -/* - * Copyright 2008-2014 Arsen Chaloyan - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - * - * $Id: - */ - -#ifndef MRCP_VERIFIER_RESOURCE_H -#define MRCP_VERIFIER_RESOURCE_H - -/** - * @file mrcp_verifier_resource.h - * @brief MRCP Verifier Resource - */ - -#include "mrcp_types.h" - -APT_BEGIN_EXTERN_C - -/** MRCP verifier methods */ -typedef enum { - VERIFIER_SET_PARAMS, - VERIFIER_GET_PARAMS, - VERIFIER_START_SESSION, - VERIFIER_END_SESSION, - VERIFIER_QUERY_VOICEPRINT, - VERIFIER_DELETE_VOICEPRINT, - VERIFIER_VERIFY, - VERIFIER_VERIFY_FROM_BUFFER, - VERIFIER_VERIFY_ROLLBACK, - VERIFIER_STOP, - VERIFIER_CLEAR_BUFFER, - VERIFIER_START_INPUT_TIMERS, - VERIFIER_GET_INTERMIDIATE_RESULT, - - VERIFIER_METHOD_COUNT -} mrcp_verifier_method_id; - -/** MRCP verifier events */ -typedef enum { - VERIFIER_START_OF_INPUT, - VERIFIER_VERIFICATION_COMPLETE, - - VERIFIER_EVENT_COUNT -} mrcp_verifier_event_id; - -/** Create MRCP verifier resource */ -MRCP_DECLARE(mrcp_resource_t*) mrcp_verifier_resource_create(apr_pool_t *pool); - -APT_END_EXTERN_C - -#endif /* MRCP_VERIFIER_RESOURCE_H */ diff --git a/libs/unimrcp/libs/mrcp/resources/src/mrcp_recog_header.c b/libs/unimrcp/libs/mrcp/resources/src/mrcp_recog_header.c deleted file mode 100644 index 527476c3035..00000000000 --- a/libs/unimrcp/libs/mrcp/resources/src/mrcp_recog_header.c +++ /dev/null @@ -1,781 +0,0 @@ -/* - * Copyright 2008-2014 Arsen Chaloyan - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - * - * $Id: mrcp_recog_header.c 2136 2014-07-04 06:33:36Z achaloyan@gmail.com $ - */ - -#include "mrcp_recog_header.h" - -/** String table of MRCPv1 recognizer header fields (mrcp_recog_header_id) */ -static const apt_str_table_item_t v1_recog_header_string_table[] = { - {{"Confidence-Threshold", 20},16}, - {{"Sensitivity-Level", 17},14}, - {{"Speed-Vs-Accuracy", 17},4}, - {{"N-Best-List-Length", 18},1}, - {{"No-Input-Timeout", 16},2}, - {{"Recognition-Timeout", 19},19}, - {{"Waveform-Url", 12},4}, - {{"Completion-Cause", 16},16}, - {{"Recognizer-Context-Block", 24},16}, - {{"Recognizer-Start-Timers", 23},18}, - {{"Speech-Complete-Timeout", 23},7}, - {{"Speech-Incomplete-Timeout", 25},12}, - {{"DTMF-Interdigit-Timeout", 23},10}, - {{"DTMF-Term-Timeout", 17},14}, - {{"DTMF-Term-Char", 14},14}, - {{"Failed-Uri", 10},10}, - {{"Failed-Uri-Cause", 16},16}, - {{"Save-Waveform", 13},5}, - {{"New-Audio-Channel", 17},17}, - {{"Speech-Language", 15},8}, - {{"Input-Type", 10},10}, - {{"Input-Waveform-Uri", 18},6}, - {{"Completion-Reason", 17},17}, - {{"Media-Type", 10},0}, - {{"Ver-Buffer-Utterance", 20},0}, - {{"Recognition-Mode", 16},16}, - {{"Cancel-If-Queue", 15},3}, - {{"Hotword-Max-Duration", 20},10}, - {{"Hotword-Min-Duration", 20},20}, - {{"Interpret-Text", 14},12}, - {{"DTMF-Buffer-Time", 16},16}, - {{"Clear-DTMF-Buffer", 17},11}, - {{"Early-No-Match", 14},4}, - {{"Num-Min-Consistent-Pronunciations",33},1}, - {{"Consistency-Threshold", 21},16}, - {{"Clash-Threshold", 15},2}, - {{"Personal-Grammar-URI", 20},9}, - {{"Enroll-Utterance", 16},10}, - {{"Phrase-ID", 9},8}, - {{"Phrase-NL", 9},9}, - {{"Weight", 6},3}, - {{"Save-Best-Waveform", 18},10}, - {{"New-Phrase-ID", 13},4}, - {{"Confusable-Phrases-URI", 22},4}, - {{"Abort-Phrase-Enrollment", 23},0} -}; - -/** String table of MRCPv2 recognizer header fields (mrcp_recog_header_id) */ -static const apt_str_table_item_t v2_recog_header_string_table[] = { - {{"Confidence-Threshold", 20},16}, - {{"Sensitivity-Level", 17},14}, - {{"Speed-Vs-Accuracy", 17},4}, - {{"N-Best-List-Length", 18},1}, - {{"No-Input-Timeout", 16},2}, - {{"Recognition-Timeout", 19},19}, - {{"Waveform-Uri", 12},4}, - {{"Completion-Cause", 16},16}, - {{"Recognizer-Context-Block", 24},7}, - {{"Start-Input-Timers", 18},18}, - {{"Speech-Complete-Timeout", 23},7}, - {{"Speech-Incomplete-Timeout", 25},12}, - {{"DTMF-Interdigit-Timeout", 23},10}, - {{"DTMF-Term-Timeout", 17},14}, - {{"DTMF-Term-Char", 14},14}, - {{"Failed-Uri", 10},10}, - {{"Failed-Uri-Cause", 16},16}, - {{"Save-Waveform", 13},5}, - {{"New-Audio-Channel", 17},17}, - {{"Speech-Language", 15},8}, - {{"Input-Type", 10},10}, - {{"Input-Waveform-Uri", 18},6}, - {{"Completion-Reason", 17},13}, - {{"Media-Type", 10},0}, - {{"Ver-Buffer-Utterance", 20},0}, - {{"Recognition-Mode", 16},16}, - {{"Cancel-If-Queue", 15},3}, - {{"Hotword-Max-Duration", 20},10}, - {{"Hotword-Min-Duration", 20},20}, - {{"Interpret-Text", 14},12}, - {{"DTMF-Buffer-Time", 16},16}, - {{"Clear-DTMF-Buffer", 17},11}, - {{"Early-No-Match", 14},4}, - {{"Num-Min-Consistent-Pronunciations",33},1}, - {{"Consistency-Threshold", 21},16}, - {{"Clash-Threshold", 15},15}, - {{"Personal-Grammar-URI", 20},9}, - {{"Enroll-Utterance", 16},10}, - {{"Phrase-ID", 9},8}, - {{"Phrase-NL", 9},9}, - {{"Weight", 6},3}, - {{"Save-Best-Waveform", 18},10}, - {{"New-Phrase-ID", 13},4}, - {{"Confusable-Phrases-URI", 22},4}, - {{"Abort-Phrase-Enrollment", 23},0} -}; - -/** String table of MRCPv1 recognizer completion-cause fields (mrcp_recog_completion_cause_e) */ -static const apt_str_table_item_t v1_completion_cause_string_table[] = { - {{"success", 7},1}, - {{"no-match", 8},8}, - {{"no-input-timeout", 16},3}, - {{"recognition-timeout", 19},0}, - {{"gram-load-failure", 17},7}, - {{"gram-comp-failure", 17},5}, - {{"error", 5},0}, - {{"speech-too-early", 16},1}, - {{"too-much-speech-timeout", 23},0}, - {{"uri-failure", 11},0}, - {{"language-unsupported", 20},0}, - {{"cancelled", 9},0}, - {{"semantics-failure", 17},2}, - {{"partial-match", 13},13}, - {{"partial-match-maxtime", 21},13}, - {{"no-match-maxtime", 16},9}, - {{"gram-definition-failure", 23},5} -}; - - -/** String table of MRCPv2 recognizer completion-cause fields (mrcp_recog_completion_cause_e) */ -static const apt_str_table_item_t v2_completion_cause_string_table[] = { - {{"success", 7},7}, - {{"no-match", 8},4}, - {{"no-input-timeout", 16},3}, - {{"hotword-maxtime", 15},0}, - {{"grammar-load-failure", 20},8}, - {{"grammar-compilation-failure",27},8}, - {{"recognizer-error", 16},0}, - {{"speech-too-early", 16},1}, - {{"success-maxtime", 15},15}, - {{"uri-failure", 11},0}, - {{"language-unsupported", 20},0}, - {{"cancelled", 9},0}, - {{"semantics-failure", 17},2}, - {{"partial-match", 13},13}, - {{"partial-match-maxtime", 21},13}, - {{"no-match-maxtime", 16},9}, - {{"grammar-definition-failure", 26},9} -}; - -/** Initialize recognizer header */ -static void mrcp_recog_header_init(mrcp_recog_header_t *recog_header) -{ - recog_header->confidence_threshold = 0.0; - recog_header->sensitivity_level = 0.0; - recog_header->speed_vs_accuracy = 0.0; - recog_header->n_best_list_length = 0; - recog_header->no_input_timeout = 0; - recog_header->recognition_timeout = 0; - apt_string_reset(&recog_header->waveform_uri); - recog_header->completion_cause = RECOGNIZER_COMPLETION_CAUSE_COUNT; - apt_string_reset(&recog_header->recognizer_context_block); - recog_header->start_input_timers = FALSE; - recog_header->speech_complete_timeout = 0; - recog_header->speech_incomplete_timeout = 0; - recog_header->dtmf_interdigit_timeout = 0; - recog_header->dtmf_term_timeout = 0; - recog_header->dtmf_term_char = 0; - apt_string_reset(&recog_header->failed_uri); - apt_string_reset(&recog_header->failed_uri_cause); - recog_header->save_waveform = FALSE; - recog_header->new_audio_channel = FALSE; - apt_string_reset(&recog_header->speech_language); - /* initializes additionnal MRCPV2 recog header fields */ - apt_string_reset(&recog_header->input_type); - apt_string_reset(&recog_header->input_waveform_uri); - apt_string_reset(&recog_header->completion_reason); - apt_string_reset(&recog_header->media_type); - recog_header->ver_buffer_utterance = FALSE; - apt_string_reset(&recog_header->recognition_mode); - recog_header->cancel_if_queue = FALSE; - recog_header->hotword_max_duration = 0; - recog_header->hotword_min_duration = 0; - apt_string_reset(&recog_header->interpret_text); - recog_header->dtmf_buffer_time = 0; - recog_header->clear_dtmf_buffer = FALSE; - recog_header->early_no_match = FALSE; - recog_header->num_min_consistent_pronunciations = 0; - recog_header->consistency_threshold = 0.0; - recog_header->clash_threshold = 0.0; - apt_string_reset(&recog_header->personal_grammar_uri); - recog_header->enroll_utterance = FALSE; - apt_string_reset(&recog_header->phrase_id); - apt_string_reset(&recog_header->phrase_nl); - recog_header->weight = 0.0; - recog_header->save_best_waveform = FALSE; - apt_string_reset(&recog_header->new_phrase_id); - apt_string_reset(&recog_header->confusable_phrases_uri); - recog_header->abort_phrase_enrollment = FALSE; -} - -/** Allocate MRCP recognizer header */ -static void* mrcp_recog_header_allocate(mrcp_header_accessor_t *accessor, apr_pool_t *pool) -{ - mrcp_recog_header_t *recog_header = apr_palloc(pool,sizeof(mrcp_recog_header_t)); - mrcp_recog_header_init(recog_header); - accessor->data = recog_header; - return accessor->data; -} - -/** Parse MRCP recognizer header */ -static apt_bool_t mrcp_recog_header_parse(mrcp_recog_header_t *recog_header, apr_size_t id, const apt_str_t *value, apr_pool_t *pool) -{ - apt_bool_t status = TRUE; - switch(id) { - case RECOGNIZER_HEADER_N_BEST_LIST_LENGTH: - recog_header->n_best_list_length = apt_size_value_parse(value); - break; - case RECOGNIZER_HEADER_NO_INPUT_TIMEOUT: - recog_header->no_input_timeout = apt_size_value_parse(value); - break; - case RECOGNIZER_HEADER_RECOGNITION_TIMEOUT: - recog_header->recognition_timeout = apt_size_value_parse(value); - break; - case RECOGNIZER_HEADER_WAVEFORM_URI: - recog_header->waveform_uri = *value; - break; - case RECOGNIZER_HEADER_COMPLETION_CAUSE: - recog_header->completion_cause = apt_size_value_parse(value); - break; - case RECOGNIZER_HEADER_RECOGNIZER_CONTEXT_BLOCK: - recog_header->recognizer_context_block = *value; - break; - case RECOGNIZER_HEADER_START_INPUT_TIMERS: - apt_boolean_value_parse(value,&recog_header->start_input_timers); - break; - case RECOGNIZER_HEADER_SPEECH_COMPLETE_TIMEOUT: - recog_header->speech_complete_timeout = apt_size_value_parse(value); - break; - case RECOGNIZER_HEADER_SPEECH_INCOMPLETE_TIMEOUT: - recog_header->speech_incomplete_timeout = apt_size_value_parse(value); - break; - case RECOGNIZER_HEADER_DTMF_INTERDIGIT_TIMEOUT: - recog_header->dtmf_interdigit_timeout = apt_size_value_parse(value); - break; - case RECOGNIZER_HEADER_DTMF_TERM_TIMEOUT: - recog_header->dtmf_term_timeout = apt_size_value_parse(value); - break; - case RECOGNIZER_HEADER_DTMF_TERM_CHAR: - recog_header->dtmf_term_char = *value->buf; - break; - case RECOGNIZER_HEADER_FAILED_URI: - recog_header->failed_uri = *value; - break; - case RECOGNIZER_HEADER_FAILED_URI_CAUSE: - recog_header->failed_uri_cause = *value; - break; - case RECOGNIZER_HEADER_SAVE_WAVEFORM: - apt_boolean_value_parse(value,&recog_header->save_waveform); - break; - case RECOGNIZER_HEADER_NEW_AUDIO_CHANNEL: - apt_boolean_value_parse(value,&recog_header->new_audio_channel); - break; - case RECOGNIZER_HEADER_SPEECH_LANGUAGE: - recog_header->speech_language = *value; - break; - case RECOGNIZER_HEADER_INPUT_TYPE: - recog_header->input_type = *value; - break; - case RECOGNIZER_HEADER_MEDIA_TYPE: - recog_header->media_type = *value; - break; - case RECOGNIZER_HEADER_INPUT_WAVEFORM_URI: - recog_header->input_waveform_uri = *value; - break; - case RECOGNIZER_HEADER_COMPLETION_REASON: - recog_header->completion_reason = *value; - break; - case RECOGNIZER_HEADER_VER_BUFFER_UTTERANCE: - apt_boolean_value_parse(value,&recog_header->ver_buffer_utterance); - break; - case RECOGNIZER_HEADER_RECOGNITION_MODE: - recog_header->recognition_mode = *value; - break; - case RECOGNIZER_HEADER_CANCEL_IF_QUEUE: - apt_boolean_value_parse(value,&recog_header->cancel_if_queue); - break; - case RECOGNIZER_HEADER_HOTWORD_MAX_DURATION: - recog_header->hotword_max_duration = apt_size_value_parse(value); - break; - case RECOGNIZER_HEADER_HOTWORD_MIN_DURATION: - recog_header->hotword_min_duration = apt_size_value_parse(value); - break; - case RECOGNIZER_HEADER_INTERPRET_TEXT: - recog_header->interpret_text = *value; - break; - case RECOGNIZER_HEADER_DTMF_BUFFER_TIME: - recog_header->dtmf_buffer_time = apt_size_value_parse(value); - break; - case RECOGNIZER_HEADER_CLEAR_DTMF_BUFFER: - apt_boolean_value_parse(value,&recog_header->clear_dtmf_buffer); - break; - case RECOGNIZER_HEADER_EARLY_NO_MATCH: - apt_boolean_value_parse(value,&recog_header->early_no_match); - break; - case RECOGNIZER_HEADER_NUM_MIN_CONSISTENT_PRONUNCIATIONS: - recog_header->num_min_consistent_pronunciations = apt_size_value_parse(value); - break; - case RECOGNIZER_HEADER_CONSISTENCY_THRESHOLD: - recog_header->consistency_threshold = apt_float_value_parse(value); - break; - case RECOGNIZER_HEADER_CLASH_THRESHOLD: - recog_header->clash_threshold = apt_float_value_parse(value); - break; - case RECOGNIZER_HEADER_PERSONAL_GRAMMAR_URI: - recog_header->personal_grammar_uri = *value; - break; - case RECOGNIZER_HEADER_ENROLL_UTTERANCE: - apt_boolean_value_parse(value,&recog_header->enroll_utterance); - break; - case RECOGNIZER_HEADER_PHRASE_ID: - recog_header->phrase_id = *value; - break; - case RECOGNIZER_HEADER_PHRASE_NL: - recog_header->phrase_nl = *value; - break; - case RECOGNIZER_HEADER_WEIGHT: - recog_header->weight = apt_float_value_parse(value); - break; - case RECOGNIZER_HEADER_SAVE_BEST_WAVEFORM: - apt_boolean_value_parse(value,&recog_header->save_best_waveform); - break; - case RECOGNIZER_HEADER_NEW_PHRASE_ID: - recog_header->new_phrase_id = *value; - break; - case RECOGNIZER_HEADER_CONFUSABLE_PHRASES_URI: - recog_header->confusable_phrases_uri = *value; - break; - case RECOGNIZER_HEADER_ABORT_PHRASE_ENROLLMENT: - apt_boolean_value_parse(value,&recog_header->abort_phrase_enrollment); - break; - default: - status = FALSE; - } - return status; -} - -static APR_INLINE float apt_size_value_parse_as_float(const apt_str_t *value) -{ - float f = (float)apt_size_value_parse(value); - return f / 100; -} - -static APR_INLINE apt_bool_t apt_size_value_generate_from_float(float value, apt_str_t *str, apr_pool_t *pool) -{ - apr_size_t s = (apr_size_t)((value + 0.001f) * 100); - return apt_size_value_generate(s,str,pool); -} - -/** Parse MRCPv1 recognizer header */ -static apt_bool_t mrcp_v1_recog_header_parse(mrcp_header_accessor_t *accessor, apr_size_t id, const apt_str_t *value, apr_pool_t *pool) -{ - mrcp_recog_header_t *recog_header = accessor->data; - if(id == RECOGNIZER_HEADER_CONFIDENCE_THRESHOLD) { - recog_header->confidence_threshold = apt_size_value_parse_as_float(value); - return TRUE; - } - else if(id == RECOGNIZER_HEADER_SENSITIVITY_LEVEL) { - recog_header->sensitivity_level = apt_size_value_parse_as_float(value); - return TRUE; - } - else if(id == RECOGNIZER_HEADER_SPEED_VS_ACCURACY) { - recog_header->speed_vs_accuracy = apt_size_value_parse_as_float(value); - return TRUE; - } - return mrcp_recog_header_parse(recog_header,id,value,pool); -} - -/** Parse MRCPv2 recognizer header */ -static apt_bool_t mrcp_v2_recog_header_parse(mrcp_header_accessor_t *accessor, apr_size_t id, const apt_str_t *value, apr_pool_t *pool) -{ - mrcp_recog_header_t *recog_header = accessor->data; - if(id == RECOGNIZER_HEADER_CONFIDENCE_THRESHOLD) { - recog_header->confidence_threshold = apt_float_value_parse(value); - return TRUE; - } - else if(id == RECOGNIZER_HEADER_SENSITIVITY_LEVEL) { - recog_header->sensitivity_level = apt_float_value_parse(value); - return TRUE; - } - else if(id == RECOGNIZER_HEADER_SPEED_VS_ACCURACY) { - recog_header->speed_vs_accuracy = apt_float_value_parse(value); - return TRUE; - } - return mrcp_recog_header_parse(recog_header,id,value,pool); -} - -/** Generate MRCP recognizer header */ -static apt_bool_t mrcp_recog_header_generate(const mrcp_recog_header_t *recog_header, apr_size_t id, apt_str_t *value, apr_pool_t *pool) -{ - switch(id) { - case RECOGNIZER_HEADER_N_BEST_LIST_LENGTH: - apt_size_value_generate(recog_header->n_best_list_length,value,pool); - break; - case RECOGNIZER_HEADER_NO_INPUT_TIMEOUT: - apt_size_value_generate(recog_header->no_input_timeout,value,pool); - break; - case RECOGNIZER_HEADER_RECOGNITION_TIMEOUT: - apt_size_value_generate(recog_header->recognition_timeout,value,pool); - break; - case RECOGNIZER_HEADER_WAVEFORM_URI: - *value = recog_header->waveform_uri; - break; - case RECOGNIZER_HEADER_RECOGNIZER_CONTEXT_BLOCK: - *value = recog_header->recognizer_context_block; - break; - case RECOGNIZER_HEADER_START_INPUT_TIMERS: - apt_boolean_value_generate(recog_header->start_input_timers,value,pool); - break; - case RECOGNIZER_HEADER_SPEECH_COMPLETE_TIMEOUT: - apt_size_value_generate(recog_header->speech_complete_timeout,value,pool); - break; - case RECOGNIZER_HEADER_SPEECH_INCOMPLETE_TIMEOUT: - apt_size_value_generate(recog_header->speech_incomplete_timeout,value,pool); - break; - case RECOGNIZER_HEADER_DTMF_INTERDIGIT_TIMEOUT: - apt_size_value_generate(recog_header->dtmf_interdigit_timeout,value,pool); - break; - case RECOGNIZER_HEADER_DTMF_TERM_TIMEOUT: - apt_size_value_generate(recog_header->dtmf_term_timeout,value,pool); - break; - case RECOGNIZER_HEADER_DTMF_TERM_CHAR: - value->length = 1; - value->buf = apr_palloc(pool,value->length); - *value->buf = recog_header->dtmf_term_char; - break; - case RECOGNIZER_HEADER_FAILED_URI: - *value = recog_header->failed_uri; - break; - case RECOGNIZER_HEADER_FAILED_URI_CAUSE: - *value = recog_header->failed_uri_cause; - break; - case RECOGNIZER_HEADER_SAVE_WAVEFORM: - apt_boolean_value_generate(recog_header->save_waveform,value,pool); - break; - case RECOGNIZER_HEADER_NEW_AUDIO_CHANNEL: - apt_boolean_value_generate(recog_header->new_audio_channel,value,pool); - break; - case RECOGNIZER_HEADER_SPEECH_LANGUAGE: - *value = recog_header->speech_language; - break; - case RECOGNIZER_HEADER_INPUT_TYPE: - *value = recog_header->input_type; - break; - case RECOGNIZER_HEADER_INPUT_WAVEFORM_URI: - *value = recog_header->input_waveform_uri; - break; - case RECOGNIZER_HEADER_COMPLETION_REASON: - *value = recog_header->completion_reason; - break; - case RECOGNIZER_HEADER_MEDIA_TYPE: - *value = recog_header->media_type; - break; - case RECOGNIZER_HEADER_VER_BUFFER_UTTERANCE: - apt_boolean_value_generate(recog_header->ver_buffer_utterance,value,pool); - break; - case RECOGNIZER_HEADER_RECOGNITION_MODE: - *value = recog_header->recognition_mode; - break; - case RECOGNIZER_HEADER_CANCEL_IF_QUEUE: - apt_boolean_value_generate(recog_header->cancel_if_queue,value,pool); - break; - case RECOGNIZER_HEADER_HOTWORD_MAX_DURATION: - apt_size_value_generate(recog_header->hotword_max_duration,value,pool); - break; - case RECOGNIZER_HEADER_HOTWORD_MIN_DURATION: - apt_size_value_generate(recog_header->hotword_min_duration,value,pool); - break; - case RECOGNIZER_HEADER_INTERPRET_TEXT: - *value = recog_header->interpret_text; - break; - case RECOGNIZER_HEADER_DTMF_BUFFER_TIME: - apt_size_value_generate(recog_header->dtmf_buffer_time,value,pool); - break; - case RECOGNIZER_HEADER_CLEAR_DTMF_BUFFER: - apt_boolean_value_generate(recog_header->clear_dtmf_buffer,value,pool); - break; - case RECOGNIZER_HEADER_EARLY_NO_MATCH: - apt_boolean_value_generate(recog_header->early_no_match,value,pool); - break; - case RECOGNIZER_HEADER_NUM_MIN_CONSISTENT_PRONUNCIATIONS: - apt_size_value_generate(recog_header->num_min_consistent_pronunciations,value,pool); - break; - case RECOGNIZER_HEADER_CONSISTENCY_THRESHOLD: - apt_float_value_generate(recog_header->consistency_threshold,value,pool); - break; - case RECOGNIZER_HEADER_CLASH_THRESHOLD: - apt_float_value_generate(recog_header->clash_threshold,value,pool); - break; - case RECOGNIZER_HEADER_PERSONAL_GRAMMAR_URI: - *value = recog_header->personal_grammar_uri; - break; - case RECOGNIZER_HEADER_ENROLL_UTTERANCE: - apt_boolean_value_generate(recog_header->enroll_utterance,value,pool); - break; - case RECOGNIZER_HEADER_PHRASE_ID: - *value = recog_header->phrase_id; - break; - case RECOGNIZER_HEADER_PHRASE_NL: - *value = recog_header->phrase_nl; - break; - case RECOGNIZER_HEADER_WEIGHT: - apt_float_value_generate(recog_header->weight,value,pool); - break; - case RECOGNIZER_HEADER_SAVE_BEST_WAVEFORM: - apt_boolean_value_generate(recog_header->save_best_waveform,value,pool); - break; - case RECOGNIZER_HEADER_NEW_PHRASE_ID: - *value = recog_header->new_phrase_id; - break; - case RECOGNIZER_HEADER_CONFUSABLE_PHRASES_URI: - *value = recog_header->confusable_phrases_uri; - break; - case RECOGNIZER_HEADER_ABORT_PHRASE_ENROLLMENT: - apt_boolean_value_generate(recog_header->abort_phrase_enrollment,value,pool); - break; - default: - break; - } - return TRUE; -} - -/** Generate MRCPv1 recognizer header */ -static apt_bool_t mrcp_v1_recog_header_generate(const mrcp_header_accessor_t *accessor, apr_size_t id, apt_str_t *value, apr_pool_t *pool) -{ - mrcp_recog_header_t *recog_header = accessor->data; - if(id == RECOGNIZER_HEADER_CONFIDENCE_THRESHOLD) { - return apt_size_value_generate_from_float(recog_header->confidence_threshold,value,pool); - } - else if(id == RECOGNIZER_HEADER_SENSITIVITY_LEVEL) { - return apt_size_value_generate_from_float(recog_header->sensitivity_level,value,pool); - } - else if(id == RECOGNIZER_HEADER_SPEED_VS_ACCURACY) { - return apt_size_value_generate_from_float(recog_header->speed_vs_accuracy,value,pool); - } - else if(id == RECOGNIZER_HEADER_COMPLETION_CAUSE) { - return apt_completion_cause_generate( - v1_completion_cause_string_table, - RECOGNIZER_COMPLETION_CAUSE_COUNT, - recog_header->completion_cause, - value, - pool); - } - return mrcp_recog_header_generate(recog_header,id,value,pool); -} - -/** Generate MRCPv2 recognizer header */ -static apt_bool_t mrcp_v2_recog_header_generate(const mrcp_header_accessor_t *accessor, apr_size_t id, apt_str_t *value, apr_pool_t *pool) -{ - mrcp_recog_header_t *recog_header = accessor->data; - if(id == RECOGNIZER_HEADER_CONFIDENCE_THRESHOLD) { - return apt_float_value_generate(recog_header->confidence_threshold,value,pool); - } - else if(id == RECOGNIZER_HEADER_SENSITIVITY_LEVEL) { - return apt_float_value_generate(recog_header->sensitivity_level,value,pool); - } - else if(id == RECOGNIZER_HEADER_SPEED_VS_ACCURACY) { - return apt_float_value_generate(recog_header->speed_vs_accuracy,value,pool); - } - else if(id == RECOGNIZER_HEADER_COMPLETION_CAUSE) { - return apt_completion_cause_generate( - v2_completion_cause_string_table, - RECOGNIZER_COMPLETION_CAUSE_COUNT, - recog_header->completion_cause, - value, - pool); - } - return mrcp_recog_header_generate(recog_header,id,value,pool); -} - -/** Duplicate MRCP recognizer header */ -static apt_bool_t mrcp_recog_header_duplicate(mrcp_header_accessor_t *accessor, const mrcp_header_accessor_t *src, apr_size_t id, const apt_str_t *value, apr_pool_t *pool) -{ - mrcp_recog_header_t *recog_header = accessor->data; - const mrcp_recog_header_t *src_recog_header = src->data; - apt_bool_t status = TRUE; - - if(!recog_header || !src_recog_header) { - return FALSE; - } - - switch(id) { - case RECOGNIZER_HEADER_CONFIDENCE_THRESHOLD: - recog_header->confidence_threshold = src_recog_header->confidence_threshold; - break; - case RECOGNIZER_HEADER_SENSITIVITY_LEVEL: - recog_header->sensitivity_level = src_recog_header->sensitivity_level; - break; - case RECOGNIZER_HEADER_SPEED_VS_ACCURACY: - recog_header->speed_vs_accuracy = src_recog_header->speed_vs_accuracy; - break; - case RECOGNIZER_HEADER_N_BEST_LIST_LENGTH: - recog_header->n_best_list_length = src_recog_header->n_best_list_length; - break; - case RECOGNIZER_HEADER_NO_INPUT_TIMEOUT: - recog_header->no_input_timeout = src_recog_header->no_input_timeout; - break; - case RECOGNIZER_HEADER_RECOGNITION_TIMEOUT: - recog_header->recognition_timeout = src_recog_header->recognition_timeout; - break; - case RECOGNIZER_HEADER_WAVEFORM_URI: - recog_header->waveform_uri = *value; - break; - case RECOGNIZER_HEADER_COMPLETION_CAUSE: - recog_header->completion_cause = src_recog_header->completion_cause; - break; - case RECOGNIZER_HEADER_RECOGNIZER_CONTEXT_BLOCK: - recog_header->recognizer_context_block = *value; - break; - case RECOGNIZER_HEADER_START_INPUT_TIMERS: - recog_header->start_input_timers = src_recog_header->start_input_timers; - break; - case RECOGNIZER_HEADER_SPEECH_COMPLETE_TIMEOUT: - recog_header->speech_complete_timeout = src_recog_header->speech_complete_timeout; - break; - case RECOGNIZER_HEADER_SPEECH_INCOMPLETE_TIMEOUT: - recog_header->speech_incomplete_timeout = src_recog_header->speech_incomplete_timeout; - break; - case RECOGNIZER_HEADER_DTMF_INTERDIGIT_TIMEOUT: - recog_header->dtmf_interdigit_timeout = src_recog_header->dtmf_interdigit_timeout; - break; - case RECOGNIZER_HEADER_DTMF_TERM_TIMEOUT: - recog_header->dtmf_term_timeout = src_recog_header->dtmf_term_timeout; - break; - case RECOGNIZER_HEADER_DTMF_TERM_CHAR: - recog_header->dtmf_term_char = src_recog_header->dtmf_term_char; - break; - case RECOGNIZER_HEADER_FAILED_URI: - recog_header->failed_uri = *value; - break; - case RECOGNIZER_HEADER_FAILED_URI_CAUSE: - recog_header->failed_uri_cause = *value; - break; - case RECOGNIZER_HEADER_SAVE_WAVEFORM: - recog_header->save_waveform = src_recog_header->save_waveform; - break; - case RECOGNIZER_HEADER_NEW_AUDIO_CHANNEL: - recog_header->new_audio_channel = src_recog_header->new_audio_channel; - break; - case RECOGNIZER_HEADER_SPEECH_LANGUAGE: - recog_header->speech_language = *value; - break; - case RECOGNIZER_HEADER_INPUT_TYPE: - recog_header->input_type = *value; - break; - case RECOGNIZER_HEADER_INPUT_WAVEFORM_URI: - recog_header->input_waveform_uri = *value; - break; - case RECOGNIZER_HEADER_COMPLETION_REASON: - recog_header->completion_reason = *value; - break; - case RECOGNIZER_HEADER_MEDIA_TYPE: - recog_header->media_type = *value; - break; - case RECOGNIZER_HEADER_VER_BUFFER_UTTERANCE: - recog_header->ver_buffer_utterance = src_recog_header->ver_buffer_utterance; - break; - case RECOGNIZER_HEADER_RECOGNITION_MODE: - recog_header->recognition_mode = *value; - break; - case RECOGNIZER_HEADER_CANCEL_IF_QUEUE: - recog_header->cancel_if_queue = src_recog_header->cancel_if_queue; - break; - case RECOGNIZER_HEADER_HOTWORD_MAX_DURATION: - recog_header->hotword_max_duration = src_recog_header->hotword_max_duration; - break; - case RECOGNIZER_HEADER_HOTWORD_MIN_DURATION: - recog_header->hotword_min_duration = src_recog_header->hotword_min_duration; - break; - case RECOGNIZER_HEADER_INTERPRET_TEXT: - recog_header->interpret_text = *value; - break; - case RECOGNIZER_HEADER_DTMF_BUFFER_TIME: - recog_header->dtmf_buffer_time = src_recog_header->dtmf_buffer_time; - break; - case RECOGNIZER_HEADER_CLEAR_DTMF_BUFFER: - recog_header->clear_dtmf_buffer = src_recog_header->clear_dtmf_buffer; - break; - case RECOGNIZER_HEADER_EARLY_NO_MATCH: - recog_header->early_no_match = src_recog_header->early_no_match; - break; - case RECOGNIZER_HEADER_NUM_MIN_CONSISTENT_PRONUNCIATIONS: - recog_header->num_min_consistent_pronunciations = src_recog_header->num_min_consistent_pronunciations; - break; - case RECOGNIZER_HEADER_CONSISTENCY_THRESHOLD: - recog_header->consistency_threshold = src_recog_header->consistency_threshold; - break; - case RECOGNIZER_HEADER_CLASH_THRESHOLD: - recog_header->clash_threshold = src_recog_header->clash_threshold; - break; - case RECOGNIZER_HEADER_PERSONAL_GRAMMAR_URI: - recog_header->personal_grammar_uri = *value; - break; - case RECOGNIZER_HEADER_ENROLL_UTTERANCE: - recog_header->enroll_utterance = src_recog_header->enroll_utterance; - break; - case RECOGNIZER_HEADER_PHRASE_ID: - recog_header->phrase_id = *value; - break; - case RECOGNIZER_HEADER_PHRASE_NL: - recog_header->phrase_nl = *value; - break; - case RECOGNIZER_HEADER_WEIGHT: - recog_header->weight = src_recog_header->weight; - break; - case RECOGNIZER_HEADER_SAVE_BEST_WAVEFORM: - recog_header->save_best_waveform = src_recog_header->save_best_waveform; - break; - case RECOGNIZER_HEADER_NEW_PHRASE_ID: - recog_header->new_phrase_id = *value; - break; - case RECOGNIZER_HEADER_CONFUSABLE_PHRASES_URI: - recog_header->confusable_phrases_uri = *value; - break; - case RECOGNIZER_HEADER_ABORT_PHRASE_ENROLLMENT: - recog_header->abort_phrase_enrollment = src_recog_header->abort_phrase_enrollment; - break; - default: - status = FALSE; - } - return status; -} - -static const mrcp_header_vtable_t v1_vtable = { - mrcp_recog_header_allocate, - NULL, /* nothing to destroy */ - mrcp_v1_recog_header_parse, - mrcp_v1_recog_header_generate, - mrcp_recog_header_duplicate, - v1_recog_header_string_table, - RECOGNIZER_HEADER_COUNT -}; - -static const mrcp_header_vtable_t v2_vtable = { - mrcp_recog_header_allocate, - NULL, /* nothing to destroy */ - mrcp_v2_recog_header_parse, - mrcp_v2_recog_header_generate, - mrcp_recog_header_duplicate, - v2_recog_header_string_table, - RECOGNIZER_HEADER_COUNT -}; - -const mrcp_header_vtable_t* mrcp_recog_header_vtable_get(mrcp_version_e version) -{ - if(version == MRCP_VERSION_1) { - return &v1_vtable; - } - return &v2_vtable; -} - -MRCP_DECLARE(const apt_str_t*) mrcp_recog_completion_cause_get(mrcp_recog_completion_cause_e completion_cause, mrcp_version_e version) -{ - const apt_str_table_item_t *table = v2_completion_cause_string_table; - if(version == MRCP_VERSION_1) { - table = v1_completion_cause_string_table; - } - - return apt_string_table_str_get(table,RECOGNIZER_COMPLETION_CAUSE_COUNT,completion_cause); -} diff --git a/libs/unimrcp/libs/mrcp/resources/src/mrcp_recog_resource.c b/libs/unimrcp/libs/mrcp/resources/src/mrcp_recog_resource.c deleted file mode 100644 index 83a1a4e83ed..00000000000 --- a/libs/unimrcp/libs/mrcp/resources/src/mrcp_recog_resource.c +++ /dev/null @@ -1,99 +0,0 @@ -/* - * Copyright 2008-2014 Arsen Chaloyan - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - * - * $Id: mrcp_recog_resource.c 2136 2014-07-04 06:33:36Z achaloyan@gmail.com $ - */ - -#include "mrcp_recog_resource.h" -#include "mrcp_recog_header.h" -#include "mrcp_resource.h" - -/** String table of MRCP recognizer methods (mrcp_recognizer_method_id) */ -static const apt_str_table_item_t v1_recog_method_string_table[] = { - {{"SET-PARAMS", 10},10}, - {{"GET-PARAMS", 10},10}, - {{"DEFINE-GRAMMAR", 14},2}, - {{"RECOGNIZE", 9},7}, - {{"INTERPRET", 9},0}, - {{"GET-RESULT", 10},6}, - {{"RECOGNITION-START-TIMERS", 24},7}, - {{"STOP", 4},2}, - {{"START-PHRASE-ENROLLMENT", 23},2}, - {{"ENROLLMENT-ROLLBACK", 19},2}, - {{"END-PHRASE-ENROLLMENT", 21},5}, - {{"MODIFY-PHRASE", 13},0}, - {{"DELETE-PHRASE", 13},2} -}; - -/** String table of MRCPv2 recognizer methods (mrcp_recognizer_method_id) */ -static const apt_str_table_item_t v2_recog_method_string_table[] = { - {{"SET-PARAMS", 10},10}, - {{"GET-PARAMS", 10},10}, - {{"DEFINE-GRAMMAR", 14},2}, - {{"RECOGNIZE", 9},0}, - {{"INTERPRET", 9},0}, - {{"GET-RESULT", 10},6}, - {{"START-INPUT-TIMERS", 18},7}, - {{"STOP", 4},2}, - {{"START-PHRASE-ENROLLMENT", 23},6}, - {{"ENROLLMENT-ROLLBACK", 19},2}, - {{"END-PHRASE-ENROLLMENT", 21},5}, - {{"MODIFY-PHRASE", 13},0}, - {{"DELETE-PHRASE", 13},2} -}; - -/** String table of MRCP recognizer events (mrcp_recognizer_event_id) */ -static const apt_str_table_item_t v1_recog_event_string_table[] = { - {{"START-OF-SPEECH", 15},0}, - {{"RECOGNITION-COMPLETE", 20},0}, - {{"INTERPRETATION-COMPLETE", 23},0} -}; - -/** String table of MRCPv2 recognizer events (mrcp_recognizer_event_id) */ -static const apt_str_table_item_t v2_recog_event_string_table[] = { - {{"START-OF-INPUT", 14},0}, - {{"RECOGNITION-COMPLETE", 20},0}, - {{"INTERPRETATION-COMPLETE", 23},0} -}; - - -static APR_INLINE const apt_str_table_item_t* recog_method_string_table_get(mrcp_version_e version) -{ - if(version == MRCP_VERSION_1) { - return v1_recog_method_string_table; - } - return v2_recog_method_string_table; -} - -static APR_INLINE const apt_str_table_item_t* recog_event_string_table_get(mrcp_version_e version) -{ - if(version == MRCP_VERSION_1) { - return v1_recog_event_string_table; - } - return v2_recog_event_string_table; -} - -/** Create MRCP recognizer resource */ -MRCP_DECLARE(mrcp_resource_t*) mrcp_recog_resource_create(apr_pool_t *pool) -{ - mrcp_resource_t *resource = mrcp_resource_create(pool); - - resource->method_count = RECOGNIZER_METHOD_COUNT; - resource->event_count = RECOGNIZER_EVENT_COUNT; - resource->get_method_str_table = recog_method_string_table_get; - resource->get_event_str_table = recog_event_string_table_get; - resource->get_resource_header_vtable = mrcp_recog_header_vtable_get; - return resource; -} diff --git a/libs/unimrcp/libs/mrcp/resources/src/mrcp_recorder_header.c b/libs/unimrcp/libs/mrcp/resources/src/mrcp_recorder_header.c deleted file mode 100644 index 85f619524aa..00000000000 --- a/libs/unimrcp/libs/mrcp/resources/src/mrcp_recorder_header.c +++ /dev/null @@ -1,282 +0,0 @@ -/* - * Copyright 2008-2014 Arsen Chaloyan - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - * - * $Id: mrcp_recorder_header.c 2136 2014-07-04 06:33:36Z achaloyan@gmail.com $ - */ - -#include "mrcp_recorder_header.h" - -/** String table of recorder header fields (mrcp_recorder_header_id) */ -static const apt_str_table_item_t recorder_header_string_table[] = { - {{"Sensitivity-Level", 17},3}, - {{"No-Input-Timeout", 16},2}, - {{"Completion-Cause", 16},16}, - {{"Completion-Reason", 17},11}, - {{"Failed-Uri", 10},10}, - {{"Failed-Uri-Cause", 16},16}, - {{"Record-Uri", 10},0}, - {{"Media-Type", 10},2}, - {{"Max-Time", 8},2}, - {{"Trim-Length", 11},0}, - {{"Final-Silence", 13},1}, - {{"Capture-On-Speech", 17},2}, - {{"Ver-Buffer-Utterance", 20},0}, - {{"Start-Input-Timers", 18},1}, - {{"New-Audio-Channel", 17},2} -}; - -/** String table of recorder completion-cause fields (mrcp_recorder_completion_cause_e) */ -static const apt_str_table_item_t completion_cause_string_table[] = { - {{"success-silence", 15},8}, - {{"success-maxtime", 15},8}, - {{"no-input-timeout", 16},0}, - {{"uri-failure", 11},0}, - {{"error", 5},0} -}; - - -/** Initialize recorder header */ -static void mrcp_recorder_header_init(mrcp_recorder_header_t *recorder_header) -{ - recorder_header->sensitivity_level = 0.0; - recorder_header->no_input_timeout = 0; - recorder_header->completion_cause = RECORDER_COMPLETION_CAUSE_COUNT; - apt_string_reset(&recorder_header->completion_reason); - apt_string_reset(&recorder_header->failed_uri); - apt_string_reset(&recorder_header->failed_uri_cause); - apt_string_reset(&recorder_header->record_uri); - apt_string_reset(&recorder_header->media_type); - recorder_header->max_time = 0; - recorder_header->trim_length = 0; - recorder_header->final_silence = 0; - recorder_header->capture_on_speech = FALSE; - recorder_header->ver_buffer_utterance = FALSE; - recorder_header->start_input_timers = FALSE; - recorder_header->new_audio_channel = FALSE; -} - -/** Allocate MRCP recorder header */ -static void* mrcp_recorder_header_allocate(mrcp_header_accessor_t *accessor, apr_pool_t *pool) -{ - mrcp_recorder_header_t *recorder_header = apr_palloc(pool,sizeof(mrcp_recorder_header_t)); - mrcp_recorder_header_init(recorder_header); - accessor->data = recorder_header; - return accessor->data; -} - -/** Parse MRCP recorder header */ -static apt_bool_t mrcp_recorder_header_parse(mrcp_header_accessor_t *accessor, apr_size_t id, const apt_str_t *value, apr_pool_t *pool) -{ - apt_bool_t status = TRUE; - mrcp_recorder_header_t *recorder_header = accessor->data; - switch(id) { - case RECORDER_HEADER_SENSITIVITY_LEVEL: - recorder_header->sensitivity_level = apt_float_value_parse(value); - break; - case RECORDER_HEADER_NO_INPUT_TIMEOUT: - recorder_header->no_input_timeout = apt_size_value_parse(value); - break; - case RECORDER_HEADER_COMPLETION_CAUSE: - recorder_header->completion_cause = apt_size_value_parse(value); - break; - case RECORDER_HEADER_COMPLETION_REASON: - recorder_header->completion_reason = *value; - break; - case RECORDER_HEADER_FAILED_URI: - recorder_header->failed_uri = *value; - break; - case RECORDER_HEADER_FAILED_URI_CAUSE: - recorder_header->failed_uri_cause = *value; - break; - case RECORDER_HEADER_RECORD_URI: - recorder_header->record_uri = *value; - break; - case RECORDER_HEADER_MEDIA_TYPE: - recorder_header->media_type = *value; - break; - case RECORDER_HEADER_MAX_TIME: - recorder_header->max_time = apt_size_value_parse(value); - break; - case RECORDER_HEADER_TRIM_LENGTH: - recorder_header->trim_length = apt_size_value_parse(value); - break; - case RECORDER_HEADER_FINAL_SILENCE: - recorder_header->final_silence = apt_size_value_parse(value); - break; - case RECORDER_HEADER_CAPTURE_ON_SPEECH: - apt_boolean_value_parse(value,&recorder_header->capture_on_speech); - break; - case RECORDER_HEADER_VER_BUFFER_UTTERANCE: - apt_boolean_value_parse(value,&recorder_header->ver_buffer_utterance); - break; - case RECORDER_HEADER_START_INPUT_TIMERS: - apt_boolean_value_parse(value,&recorder_header->start_input_timers); - break; - case RECORDER_HEADER_NEW_AUDIO_CHANNEL: - apt_boolean_value_parse(value,&recorder_header->new_audio_channel); - break; - default: - status = FALSE; - } - return status; -} - -/** Generate MRCP recorder header */ -static apt_bool_t mrcp_recorder_header_generate(const mrcp_header_accessor_t *accessor, apr_size_t id, apt_str_t *value, apr_pool_t *pool) -{ - mrcp_recorder_header_t *recorder_header = accessor->data; - switch(id) { - case RECORDER_HEADER_SENSITIVITY_LEVEL: - apt_float_value_generate(recorder_header->sensitivity_level,value,pool); - break; - case RECORDER_HEADER_NO_INPUT_TIMEOUT: - apt_size_value_generate(recorder_header->no_input_timeout,value,pool); - break; - case RECORDER_HEADER_COMPLETION_CAUSE: - { - apt_completion_cause_generate( - completion_cause_string_table, - RECORDER_COMPLETION_CAUSE_COUNT, - recorder_header->completion_cause, - value, - pool); - break; - } - case RECORDER_HEADER_COMPLETION_REASON: - *value = recorder_header->completion_reason; - break; - case RECORDER_HEADER_FAILED_URI: - *value = recorder_header->failed_uri; - break; - case RECORDER_HEADER_FAILED_URI_CAUSE: - *value = recorder_header->failed_uri_cause; - break; - case RECORDER_HEADER_RECORD_URI: - *value = recorder_header->record_uri; - break; - case RECORDER_HEADER_MEDIA_TYPE: - *value = recorder_header->media_type; - break; - case RECORDER_HEADER_MAX_TIME: - apt_size_value_generate(recorder_header->max_time,value,pool); - break; - case RECORDER_HEADER_TRIM_LENGTH: - apt_size_value_generate(recorder_header->trim_length,value,pool); - break; - case RECORDER_HEADER_FINAL_SILENCE: - apt_size_value_generate(recorder_header->final_silence,value,pool); - break; - case RECORDER_HEADER_CAPTURE_ON_SPEECH: - apt_boolean_value_generate(recorder_header->capture_on_speech,value,pool); - break; - case RECORDER_HEADER_VER_BUFFER_UTTERANCE: - apt_boolean_value_generate(recorder_header->ver_buffer_utterance,value,pool); - break; - case RECORDER_HEADER_START_INPUT_TIMERS: - apt_boolean_value_generate(recorder_header->start_input_timers,value,pool); - break; - case RECORDER_HEADER_NEW_AUDIO_CHANNEL: - apt_boolean_value_generate(recorder_header->new_audio_channel,value,pool); - break; - default: - break; - } - return TRUE; -} - -/** Duplicate MRCP recorder header */ -static apt_bool_t mrcp_recorder_header_duplicate(mrcp_header_accessor_t *accessor, const mrcp_header_accessor_t *src, apr_size_t id, const apt_str_t *value, apr_pool_t *pool) -{ - mrcp_recorder_header_t *recorder_header = accessor->data; - const mrcp_recorder_header_t *src_recorder_header = src->data; - apt_bool_t status = TRUE; - - if(!recorder_header || !src_recorder_header) { - return FALSE; - } - - switch(id) { - case RECORDER_HEADER_SENSITIVITY_LEVEL: - recorder_header->sensitivity_level = src_recorder_header->sensitivity_level; - break; - case RECORDER_HEADER_NO_INPUT_TIMEOUT: - recorder_header->no_input_timeout = src_recorder_header->no_input_timeout; - break; - case RECORDER_HEADER_COMPLETION_CAUSE: - recorder_header->completion_cause = src_recorder_header->completion_cause; - break; - case RECORDER_HEADER_COMPLETION_REASON: - recorder_header->completion_reason = *value; - break; - case RECORDER_HEADER_FAILED_URI: - recorder_header->failed_uri = *value; - break; - case RECORDER_HEADER_FAILED_URI_CAUSE: - recorder_header->failed_uri_cause = *value; - break; - case RECORDER_HEADER_RECORD_URI: - recorder_header->record_uri = *value; - break; - case RECORDER_HEADER_MEDIA_TYPE: - recorder_header->media_type = *value; - break; - case RECORDER_HEADER_MAX_TIME: - recorder_header->max_time = src_recorder_header->max_time; - break; - case RECORDER_HEADER_TRIM_LENGTH: - recorder_header->trim_length = src_recorder_header->trim_length; - break; - case RECORDER_HEADER_FINAL_SILENCE: - recorder_header->final_silence = src_recorder_header->final_silence; - break; - case RECORDER_HEADER_CAPTURE_ON_SPEECH: - recorder_header->capture_on_speech = src_recorder_header->capture_on_speech; - break; - case RECORDER_HEADER_VER_BUFFER_UTTERANCE: - recorder_header->ver_buffer_utterance = src_recorder_header->ver_buffer_utterance; - break; - case RECORDER_HEADER_START_INPUT_TIMERS: - recorder_header->start_input_timers = src_recorder_header->start_input_timers; - break; - case RECORDER_HEADER_NEW_AUDIO_CHANNEL: - recorder_header->new_audio_channel = src_recorder_header->new_audio_channel; - break; - default: - status = FALSE; - } - return status; -} - -static const mrcp_header_vtable_t vtable = { - mrcp_recorder_header_allocate, - NULL, /* nothing to destroy */ - mrcp_recorder_header_parse, - mrcp_recorder_header_generate, - mrcp_recorder_header_duplicate, - recorder_header_string_table, - RECORDER_HEADER_COUNT -}; - -const mrcp_header_vtable_t* mrcp_recorder_header_vtable_get(mrcp_version_e version) -{ - return &vtable; -} - -MRCP_DECLARE(const apt_str_t*) mrcp_recorder_completion_cause_get( - mrcp_recorder_completion_cause_e completion_cause, - mrcp_version_e version) -{ - return apt_string_table_str_get(completion_cause_string_table,RECORDER_COMPLETION_CAUSE_COUNT,completion_cause); -} diff --git a/libs/unimrcp/libs/mrcp/resources/src/mrcp_recorder_resource.c b/libs/unimrcp/libs/mrcp/resources/src/mrcp_recorder_resource.c deleted file mode 100644 index 28f4844f4e5..00000000000 --- a/libs/unimrcp/libs/mrcp/resources/src/mrcp_recorder_resource.c +++ /dev/null @@ -1,59 +0,0 @@ -/* - * Copyright 2008-2014 Arsen Chaloyan - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - * - * $Id: mrcp_recorder_resource.c 2136 2014-07-04 06:33:36Z achaloyan@gmail.com $ - */ - -#include "mrcp_recorder_resource.h" -#include "mrcp_recorder_header.h" -#include "mrcp_resource.h" - -/** String table of MRCP recorder methods (mrcp_recorder_method_id) */ -static const apt_str_table_item_t recorder_method_string_table[] = { - {{"SET-PARAMS", 10},10}, - {{"GET-PARAMS", 10},0}, - {{"RECORD", 6},0}, - {{"STOP", 4},2}, - {{"START-INPUT-TIMERS", 18},2} -}; - -/** String table of MRCP recorder events (mrcp_recorder_event_id) */ -static const apt_str_table_item_t recorder_event_string_table[] = { - {{"START-OF-INPUT", 14},0}, - {{"RECORD-COMPLETE", 15},0} -}; - -static APR_INLINE const apt_str_table_item_t* recorder_method_string_table_get(mrcp_version_e version) -{ - return recorder_method_string_table; -} - -static APR_INLINE const apt_str_table_item_t* recorder_event_string_table_get(mrcp_version_e version) -{ - return recorder_event_string_table; -} - -/** Create MRCP recorder resource */ -MRCP_DECLARE(mrcp_resource_t*) mrcp_recorder_resource_create(apr_pool_t *pool) -{ - mrcp_resource_t *resource = mrcp_resource_create(pool); - - resource->method_count = RECORDER_METHOD_COUNT; - resource->event_count = RECORDER_EVENT_COUNT; - resource->get_method_str_table = recorder_method_string_table_get; - resource->get_event_str_table = recorder_event_string_table_get; - resource->get_resource_header_vtable = mrcp_recorder_header_vtable_get; - return resource; -} diff --git a/libs/unimrcp/libs/mrcp/resources/src/mrcp_synth_header.c b/libs/unimrcp/libs/mrcp/resources/src/mrcp_synth_header.c deleted file mode 100644 index 49e8c29ef39..00000000000 --- a/libs/unimrcp/libs/mrcp/resources/src/mrcp_synth_header.c +++ /dev/null @@ -1,563 +0,0 @@ -/* - * Copyright 2008-2014 Arsen Chaloyan - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - * - * $Id: mrcp_synth_header.c 2136 2014-07-04 06:33:36Z achaloyan@gmail.com $ - */ - -#include "mrcp_synth_header.h" - -/** String table of MRCP synthesizer header fields (mrcp_synthesizer_header_id) */ -static const apt_str_table_item_t synth_header_string_table[] = { - {{"Jump-Size", 9},0}, - {{"Kill-On-Barge-In", 16},0}, - {{"Speaker-Profile", 15},8}, - {{"Completion-Cause", 16},16}, - {{"Completion-Reason", 17},13}, - {{"Voice-Gender", 12},6}, - {{"Voice-Age", 9},6}, - {{"Voice-Variant", 13},6}, - {{"Voice-Name", 10},8}, - {{"Prosody-Volume", 14},8}, - {{"Prosody-Rate", 12},12}, - {{"Speech-Marker", 13},7}, - {{"Speech-Language", 15},7}, - {{"Fetch-Hint", 10},2}, - {{"Audio-Fetch-Hint", 16},0}, - {{"Failed-Uri", 10},10}, - {{"Failed-Uri_Cause", 16},10}, - {{"Speak-Restart", 13},13}, - {{"Speak-Length", 12},6}, - {{"Load-Lexicon", 12},2}, - {{"Lexicon-Search-Order",20},2} -}; - -/** String table of MRCP speech-unit fields (mrcp_speech_unit_t) */ -static const apt_str_table_item_t speech_unit_string_table[] = { - {{"Second", 6},2}, - {{"Word", 4},0}, - {{"Sentence", 8},2}, - {{"Paragraph",9},0} -}; - -/** String table of MRCP voice-gender fields (mrcp_voice_gender_t) */ -static const apt_str_table_item_t voice_gender_string_table[] = { - {{"male", 4},0}, - {{"female", 6},0}, - {{"neutral",7},0} -}; - -/** String table of MRCP prosody-volume fields (mrcp_prosody_volume_t) */ -static const apt_str_table_item_t prosody_volume_string_table[] = { - {{"silent", 6},1}, - {{"x-soft", 6},2}, - {{"soft", 4},3}, - {{"medium", 6},0}, - {{"loud", 4},0}, - {{"x-loud", 6},5}, - {{"default",7},0} -}; - -/** String table of MRCP prosody-rate fields (mrcp_prosody_rate_t) */ -static const apt_str_table_item_t prosody_rate_string_table[] = { - {{"x-slow", 6},3}, - {{"slow", 4},0}, - {{"medium", 6},0}, - {{"fast", 4},0}, - {{"x-fast", 6},4}, - {{"default",7},0} -}; - -/** String table of MRCP synthesizer completion-cause fields (mrcp_synthesizer_completion_cause_t) */ -static const apt_str_table_item_t completion_cause_string_table[] = { - {{"normal", 6},0}, - {{"barge-in", 8},0}, - {{"parse-failure", 13},0}, - {{"uri-failure", 11},0}, - {{"error", 5},0}, - {{"language-unsupported",20},4}, - {{"lexicon-load-failure",20},1}, - {{"cancelled", 9},0} -}; - - -static APR_INLINE apr_size_t apt_string_table_value_parse(const apt_str_table_item_t *string_table, size_t count, const apt_str_t *value) -{ - return apt_string_table_id_find(string_table,count,value); -} - -static apt_bool_t apt_string_table_value_pgenerate(const apt_str_table_item_t *string_table, apr_size_t count, apr_size_t id, apt_str_t *str, apr_pool_t *pool) -{ - const apt_str_t *name = apt_string_table_str_get(string_table,count,id); - if(!name) { - return FALSE; - } - - apt_string_copy(str,name,pool); - return TRUE; -} - -/** Parse MRCP prosody-rate value */ -static apt_bool_t mrcp_prosody_param_rate_parse(mrcp_prosody_rate_t *prosody_rate, const apt_str_t *value, apr_pool_t *pool) -{ - if(!value->length) { - return FALSE; - } - - /** For the rate attribute, relative changes are a number. (not preceded by a "+" or "-")(w3c ssml)*/ - if('0'<=value->buf[0] && value->buf[0]<='9') { - prosody_rate->type = PROSODY_RATE_TYPE_RELATIVE_CHANGE; - } - else { - prosody_rate->type = PROSODY_RATE_TYPE_LABEL; - } - - if(prosody_rate->type == PROSODY_RATE_TYPE_RELATIVE_CHANGE) { - prosody_rate->value.relative = apt_float_value_parse(value); - } - else { - prosody_rate->value.label = apt_string_table_value_parse(prosody_rate_string_table,PROSODY_RATE_COUNT,value); - } - - return TRUE; -} - -/** Generate MRCP prosody-rate value */ -static apt_bool_t mrcp_prosody_rate_generate(mrcp_prosody_rate_t *prosody_rate, apt_str_t *str, apr_pool_t *pool) -{ - if(prosody_rate->type == PROSODY_RATE_TYPE_LABEL) { - apt_string_table_value_pgenerate( - prosody_rate_string_table, - PROSODY_RATE_COUNT, - prosody_rate->value.label, - str, - pool); - } - else { - apt_float_value_generate(prosody_rate->value.relative,str,pool); - } - - return TRUE; -} - -/** Parse MRCP prosody-volume value */ -static apt_bool_t mrcp_prosody_param_volume_parse(mrcp_prosody_volume_t *prosody_volume, const apt_str_t *value, apr_pool_t *pool) -{ - if(!value->length) { - return FALSE; - } - - /** For the volume attribute, relative changes are a number preceded by "+" or "-" (w3c ssml)*/ - if(value->buf[0]=='+' || value->buf[0]=='-') { - prosody_volume->type = PROSODY_VOLUME_TYPE_RELATIVE_CHANGE; - } - else if('0'<=value->buf[0] && value->buf[0]<='9') { - prosody_volume->type = PROSODY_VOLUME_TYPE_NUMERIC; - } - else { - prosody_volume->type = PROSODY_VOLUME_TYPE_LABEL; - } - - if(prosody_volume->type == PROSODY_VOLUME_TYPE_RELATIVE_CHANGE) { - prosody_volume->value.relative = apt_float_value_parse(value); - } - else if(prosody_volume->type == PROSODY_VOLUME_TYPE_NUMERIC) { - prosody_volume->value.numeric = apt_float_value_parse(value); - } - else { - prosody_volume->value.label = apt_string_table_value_parse(prosody_volume_string_table,PROSODY_VOLUME_COUNT,value); - } - - return TRUE; -} - -/** Generate MRCP prosody-volume value */ -static apt_bool_t mrcp_prosody_volume_generate(mrcp_prosody_volume_t *prosody_volume, apt_str_t *str, apr_pool_t *pool) -{ - if(prosody_volume->type == PROSODY_VOLUME_TYPE_LABEL) { - apt_string_table_value_pgenerate( - prosody_volume_string_table, - PROSODY_VOLUME_COUNT, - prosody_volume->value.label, - str, - pool); - } - else if (prosody_volume->type == PROSODY_VOLUME_TYPE_NUMERIC) { - apt_float_value_generate(prosody_volume->value.numeric,str,pool); - } - else { - apt_float_value_generate(prosody_volume->value.relative,str,pool); - } - - return TRUE; -} - -/** Parse MRCP speech-length value */ -static apt_bool_t mrcp_speech_length_value_parse(mrcp_speech_length_value_t *speech_length, const apt_str_t *value, apr_pool_t *pool) -{ - if(!value->length) { - return FALSE; - } - - switch(*value->buf) { - case '+': speech_length->type = SPEECH_LENGTH_TYPE_NUMERIC_POSITIVE; break; - case '-': speech_length->type = SPEECH_LENGTH_TYPE_NUMERIC_NEGATIVE; break; - default : speech_length->type = SPEECH_LENGTH_TYPE_TEXT; - } - - if(speech_length->type == SPEECH_LENGTH_TYPE_TEXT) { - apt_string_copy(&speech_length->value.tag,value,pool); - } - else { - mrcp_numeric_speech_length_t *numeric = &speech_length->value.numeric; - apt_str_t str; - apt_text_stream_t stream; - stream.text = *value; - apt_text_stream_reset(&stream); - stream.pos++; - if(apt_text_field_read(&stream,APT_TOKEN_SP,TRUE,&str) == FALSE) { - return FALSE; - } - numeric->length = apt_size_value_parse(&str); - - if(apt_text_field_read(&stream,APT_TOKEN_SP,TRUE,&str) == FALSE) { - return FALSE; - } - numeric->unit = apt_string_table_value_parse(speech_unit_string_table,SPEECH_UNIT_COUNT,&str); - } - return TRUE; -} - -/** Generate MRCP speech-length value */ -static apt_bool_t mrcp_speech_length_generate(mrcp_speech_length_value_t *speech_length, apt_str_t *str, apr_pool_t *pool) -{ - if(speech_length->type == SPEECH_LENGTH_TYPE_TEXT) { - apt_str_t *tag = &speech_length->value.tag; - if(tag->length) { - apt_string_copy(str,tag,pool); - } - } - else { - const apt_str_t *unit_name = apt_string_table_str_get( - speech_unit_string_table, - SPEECH_UNIT_COUNT, - speech_length->value.numeric.unit); - if(!unit_name) { - return FALSE; - } - - str->buf = apr_psprintf(pool, "%c%"APR_SIZE_T_FMT" %s", - speech_length->type == SPEECH_LENGTH_TYPE_NUMERIC_POSITIVE ? '+' : '-', - speech_length->value.numeric.length, - unit_name->buf); - str->length = strlen(str->buf); - } - return TRUE; -} - -/** Initialize synthesizer header */ -static void mrcp_synth_header_init(mrcp_synth_header_t *synth_header) -{ - synth_header->jump_size.type = SPEECH_LENGTH_TYPE_UNKNOWN; - synth_header->kill_on_barge_in = FALSE; - apt_string_reset(&synth_header->speaker_profile); - synth_header->completion_cause = SYNTHESIZER_COMPLETION_CAUSE_UNKNOWN; - apt_string_reset(&synth_header->completion_reason); - synth_header->voice_param.gender = VOICE_GENDER_UNKNOWN; - synth_header->voice_param.age = 0; - synth_header->voice_param.variant = 0; - apt_string_reset(&synth_header->voice_param.name); - synth_header->prosody_param.volume.type = PROSODY_VOLUME_TYPE_UNKNOWN; - synth_header->prosody_param.rate.type = PROSODY_RATE_TYPE_UNKNOWN; - apt_string_reset(&synth_header->speech_marker); - apt_string_reset(&synth_header->speech_language); - apt_string_reset(&synth_header->fetch_hint); - apt_string_reset(&synth_header->audio_fetch_hint); - apt_string_reset(&synth_header->failed_uri); - apt_string_reset(&synth_header->failed_uri_cause); - synth_header->speak_restart = FALSE; - synth_header->speak_length.type = SPEECH_LENGTH_TYPE_UNKNOWN; - synth_header->load_lexicon = FALSE; - apt_string_reset(&synth_header->lexicon_search_order); -} - - -/** Allocate MRCP synthesizer header */ -static void* mrcp_synth_header_allocate(mrcp_header_accessor_t *accessor, apr_pool_t *pool) -{ - mrcp_synth_header_t *synth_header = apr_palloc(pool,sizeof(mrcp_synth_header_t)); - mrcp_synth_header_init(synth_header); - accessor->data = synth_header; - return accessor->data; -} - -/** Parse MRCP synthesizer header */ -static apt_bool_t mrcp_synth_header_parse(mrcp_header_accessor_t *accessor, size_t id, const apt_str_t *value, apr_pool_t *pool) -{ - apt_bool_t status = TRUE; - mrcp_synth_header_t *synth_header = accessor->data; - switch(id) { - case SYNTHESIZER_HEADER_JUMP_SIZE: - mrcp_speech_length_value_parse(&synth_header->jump_size,value,pool); - break; - case SYNTHESIZER_HEADER_KILL_ON_BARGE_IN: - apt_boolean_value_parse(value,&synth_header->kill_on_barge_in); - break; - case SYNTHESIZER_HEADER_SPEAKER_PROFILE: - synth_header->speaker_profile = *value; - break; - case SYNTHESIZER_HEADER_COMPLETION_CAUSE: - synth_header->completion_cause = apt_size_value_parse(value); - break; - case SYNTHESIZER_HEADER_COMPLETION_REASON: - synth_header->completion_reason = *value; - break; - case SYNTHESIZER_HEADER_VOICE_GENDER: - synth_header->voice_param.gender = apt_string_table_value_parse(voice_gender_string_table,VOICE_GENDER_COUNT,value); - break; - case SYNTHESIZER_HEADER_VOICE_AGE: - synth_header->voice_param.age = apt_size_value_parse(value); - break; - case SYNTHESIZER_HEADER_VOICE_VARIANT: - synth_header->voice_param.variant = apt_size_value_parse(value); - break; - case SYNTHESIZER_HEADER_VOICE_NAME: - synth_header->voice_param.name = *value; - break; - case SYNTHESIZER_HEADER_PROSODY_VOLUME: - mrcp_prosody_param_volume_parse(&synth_header->prosody_param.volume,value,pool); - break; - case SYNTHESIZER_HEADER_PROSODY_RATE: - mrcp_prosody_param_rate_parse(&synth_header->prosody_param.rate,value,pool); - break; - case SYNTHESIZER_HEADER_SPEECH_MARKER: - synth_header->speech_marker = *value; - break; - case SYNTHESIZER_HEADER_SPEECH_LANGUAGE: - synth_header->speech_language = *value; - break; - case SYNTHESIZER_HEADER_FETCH_HINT: - synth_header->fetch_hint = *value; - break; - case SYNTHESIZER_HEADER_AUDIO_FETCH_HINT: - synth_header->audio_fetch_hint = *value; - break; - case SYNTHESIZER_HEADER_FAILED_URI: - synth_header->failed_uri = *value; - break; - case SYNTHESIZER_HEADER_FAILED_URI_CAUSE: - synth_header->failed_uri_cause = *value; - break; - case SYNTHESIZER_HEADER_SPEAK_RESTART: - apt_boolean_value_parse(value,&synth_header->speak_restart); - break; - case SYNTHESIZER_HEADER_SPEAK_LENGTH: - mrcp_speech_length_value_parse(&synth_header->speak_length,value,pool); - break; - case SYNTHESIZER_HEADER_LOAD_LEXICON: - apt_boolean_value_parse(value,&synth_header->load_lexicon); - break; - case SYNTHESIZER_HEADER_LEXICON_SEARCH_ORDER: - synth_header->lexicon_search_order = *value; - break; - default: - status = FALSE; - } - return status; -} - -/** Generate MRCP synthesizer header */ -static apt_bool_t mrcp_synth_header_generate(const mrcp_header_accessor_t *accessor, size_t id, apt_str_t *value, apr_pool_t *pool) -{ - mrcp_synth_header_t *synth_header = accessor->data; - switch(id) { - case SYNTHESIZER_HEADER_JUMP_SIZE: - mrcp_speech_length_generate(&synth_header->jump_size,value,pool); - break; - case SYNTHESIZER_HEADER_KILL_ON_BARGE_IN: - apt_boolean_value_generate(synth_header->kill_on_barge_in,value,pool); - break; - case SYNTHESIZER_HEADER_SPEAKER_PROFILE: - *value = synth_header->speaker_profile,value; - break; - case SYNTHESIZER_HEADER_COMPLETION_CAUSE: - apt_completion_cause_generate( - completion_cause_string_table, - SYNTHESIZER_COMPLETION_CAUSE_COUNT, - synth_header->completion_cause, - value, - pool); - break; - case SYNTHESIZER_HEADER_COMPLETION_REASON: - *value = synth_header->completion_reason; - break; - case SYNTHESIZER_HEADER_VOICE_GENDER: - apt_string_table_value_pgenerate( - voice_gender_string_table, - VOICE_GENDER_COUNT, - synth_header->voice_param.gender, - value, - pool); - break; - case SYNTHESIZER_HEADER_VOICE_AGE: - apt_size_value_generate(synth_header->voice_param.age,value,pool); - break; - case SYNTHESIZER_HEADER_VOICE_VARIANT: - apt_size_value_generate(synth_header->voice_param.variant,value,pool); - break; - case SYNTHESIZER_HEADER_VOICE_NAME: - *value = synth_header->voice_param.name,value; - break; - case SYNTHESIZER_HEADER_PROSODY_VOLUME: - mrcp_prosody_volume_generate(&synth_header->prosody_param.volume,value,pool); - break; - case SYNTHESIZER_HEADER_PROSODY_RATE: - mrcp_prosody_rate_generate(&synth_header->prosody_param.rate,value,pool); - break; - case SYNTHESIZER_HEADER_SPEECH_MARKER: - *value = synth_header->speech_marker; - break; - case SYNTHESIZER_HEADER_SPEECH_LANGUAGE: - *value = synth_header->speech_language; - break; - case SYNTHESIZER_HEADER_FETCH_HINT: - *value = synth_header->fetch_hint; - break; - case SYNTHESIZER_HEADER_AUDIO_FETCH_HINT: - *value = synth_header->audio_fetch_hint; - break; - case SYNTHESIZER_HEADER_FAILED_URI: - *value = synth_header->failed_uri; - break; - case SYNTHESIZER_HEADER_FAILED_URI_CAUSE: - *value = synth_header->failed_uri_cause; - break; - case SYNTHESIZER_HEADER_SPEAK_RESTART: - apt_boolean_value_generate(synth_header->speak_restart,value,pool); - break; - case SYNTHESIZER_HEADER_SPEAK_LENGTH: - mrcp_speech_length_generate(&synth_header->speak_length,value,pool); - break; - case SYNTHESIZER_HEADER_LOAD_LEXICON: - apt_boolean_value_generate(synth_header->load_lexicon,value,pool); - break; - case SYNTHESIZER_HEADER_LEXICON_SEARCH_ORDER: - *value = synth_header->lexicon_search_order; - break; - default: - break; - } - return TRUE; -} - -/** Duplicate MRCP synthesizer header */ -static apt_bool_t mrcp_synth_header_duplicate(mrcp_header_accessor_t *accessor, const mrcp_header_accessor_t *src, size_t id, const apt_str_t *value, apr_pool_t *pool) -{ - mrcp_synth_header_t *synth_header = accessor->data; - const mrcp_synth_header_t *src_synth_header = src->data; - apt_bool_t status = TRUE; - - if(!synth_header || !src_synth_header) { - return FALSE; - } - - switch(id) { - case SYNTHESIZER_HEADER_JUMP_SIZE: - synth_header->jump_size = src_synth_header->jump_size; - break; - case SYNTHESIZER_HEADER_KILL_ON_BARGE_IN: - synth_header->kill_on_barge_in = src_synth_header->kill_on_barge_in; - break; - case SYNTHESIZER_HEADER_SPEAKER_PROFILE: - synth_header->speaker_profile = *value; - break; - case SYNTHESIZER_HEADER_COMPLETION_CAUSE: - synth_header->completion_cause = src_synth_header->completion_cause; - break; - case SYNTHESIZER_HEADER_COMPLETION_REASON: - synth_header->completion_reason = *value; - break; - case SYNTHESIZER_HEADER_VOICE_GENDER: - synth_header->voice_param.gender = src_synth_header->voice_param.gender; - break; - case SYNTHESIZER_HEADER_VOICE_AGE: - synth_header->voice_param.age = src_synth_header->voice_param.age; - break; - case SYNTHESIZER_HEADER_VOICE_VARIANT: - synth_header->voice_param.variant = src_synth_header->voice_param.variant; - break; - case SYNTHESIZER_HEADER_VOICE_NAME: - synth_header->voice_param.name = *value; - break; - case SYNTHESIZER_HEADER_PROSODY_VOLUME: - synth_header->prosody_param.volume = src_synth_header->prosody_param.volume; - break; - case SYNTHESIZER_HEADER_PROSODY_RATE: - synth_header->prosody_param.rate = src_synth_header->prosody_param.rate; - break; - case SYNTHESIZER_HEADER_SPEECH_MARKER: - synth_header->speech_marker = *value; - break; - case SYNTHESIZER_HEADER_SPEECH_LANGUAGE: - synth_header->speech_language = *value; - break; - case SYNTHESIZER_HEADER_FETCH_HINT: - synth_header->fetch_hint = *value; - break; - case SYNTHESIZER_HEADER_AUDIO_FETCH_HINT: - synth_header->audio_fetch_hint = *value; - break; - case SYNTHESIZER_HEADER_FAILED_URI: - synth_header->failed_uri = *value; - break; - case SYNTHESIZER_HEADER_FAILED_URI_CAUSE: - synth_header->failed_uri_cause = *value; - break; - case SYNTHESIZER_HEADER_SPEAK_RESTART: - synth_header->speak_restart = src_synth_header->speak_restart; - break; - case SYNTHESIZER_HEADER_SPEAK_LENGTH: - synth_header->speak_length = src_synth_header->speak_length; - break; - case SYNTHESIZER_HEADER_LOAD_LEXICON: - synth_header->load_lexicon = src_synth_header->load_lexicon; - break; - case SYNTHESIZER_HEADER_LEXICON_SEARCH_ORDER: - synth_header->lexicon_search_order = *value; - break; - default: - status = FALSE; - } - return status; -} - -static const mrcp_header_vtable_t vtable = { - mrcp_synth_header_allocate, - NULL, /* nothing to destroy */ - mrcp_synth_header_parse, - mrcp_synth_header_generate, - mrcp_synth_header_duplicate, - synth_header_string_table, - SYNTHESIZER_HEADER_COUNT -}; - -const mrcp_header_vtable_t* mrcp_synth_header_vtable_get(mrcp_version_e version) -{ - return &vtable; -} - -MRCP_DECLARE(const apt_str_t*) mrcp_synth_completion_cause_get(mrcp_synth_completion_cause_e completion_cause, mrcp_version_e version) -{ - return apt_string_table_str_get(completion_cause_string_table,SYNTHESIZER_COMPLETION_CAUSE_COUNT,completion_cause); -} diff --git a/libs/unimrcp/libs/mrcp/resources/src/mrcp_synth_resource.c b/libs/unimrcp/libs/mrcp/resources/src/mrcp_synth_resource.c deleted file mode 100644 index 795672043c3..00000000000 --- a/libs/unimrcp/libs/mrcp/resources/src/mrcp_synth_resource.c +++ /dev/null @@ -1,63 +0,0 @@ -/* - * Copyright 2008-2014 Arsen Chaloyan - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - * - * $Id: mrcp_synth_resource.c 2136 2014-07-04 06:33:36Z achaloyan@gmail.com $ - */ - -#include "mrcp_synth_resource.h" -#include "mrcp_synth_header.h" -#include "mrcp_resource.h" - -/** String table of MRCP synthesizer methods (mrcp_synthesizer_method_id) */ -static const apt_str_table_item_t synth_method_string_table[] = { - {{"SET-PARAMS", 10},10}, - {{"GET-PARAMS", 10},0}, - {{"SPEAK", 5},1}, - {{"STOP", 4},1}, - {{"PAUSE", 5},0}, - {{"RESUME", 6},0}, - {{"BARGE-IN-OCCURRED",17},0}, - {{"CONTROL", 7},0}, - {{"DEFINE-LEXICON", 14},0} -}; - -/** String table of MRCP synthesizer events (mrcp_synthesizer_event_id) */ -static const apt_str_table_item_t synth_event_string_table[] = { - {{"SPEECH-MARKER", 13},3}, - {{"SPEAK-COMPLETE",14},3} -}; - -static APR_INLINE const apt_str_table_item_t* synth_method_string_table_get(mrcp_version_e version) -{ - return synth_method_string_table; -} - -static APR_INLINE const apt_str_table_item_t* synth_event_string_table_get(mrcp_version_e version) -{ - return synth_event_string_table; -} - -/** Create MRCP synthesizer resource */ -MRCP_DECLARE(mrcp_resource_t*) mrcp_synth_resource_create(apr_pool_t *pool) -{ - mrcp_resource_t *resource = mrcp_resource_create(pool); - - resource->method_count = SYNTHESIZER_METHOD_COUNT; - resource->event_count = SYNTHESIZER_EVENT_COUNT; - resource->get_method_str_table = synth_method_string_table_get; - resource->get_event_str_table = synth_event_string_table_get; - resource->get_resource_header_vtable = mrcp_synth_header_vtable_get; - return resource; -} diff --git a/libs/unimrcp/libs/mrcp/resources/src/mrcp_verifier_header.c b/libs/unimrcp/libs/mrcp/resources/src/mrcp_verifier_header.c deleted file mode 100644 index a0c32d04249..00000000000 --- a/libs/unimrcp/libs/mrcp/resources/src/mrcp_verifier_header.c +++ /dev/null @@ -1,352 +0,0 @@ -/* - * Copyright 2008-2014 Arsen Chaloyan - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - * - * $Id: - */ - -#include "mrcp_verifier_header.h" - -/** String table of MRCP verifier header fields (mrcp_verifier_header_id) */ -static const apt_str_table_item_t verifier_header_string_table[] = { - {{"Repository-URI", 14},0}, - {{"Voiceprint-Identifier", 21},12}, - {{"Verification-Mode", 17},6}, - {{"Adapt-Model", 11},1}, - {{"Abort-Model", 11},11}, - {{"Min-Verification-Score", 22},1}, - {{"Num-Min-Verification-Phrases",28},6}, - {{"Num-Max-Verification-Phrases",28},5}, - {{"No-Input-Timeout", 16},2}, - {{"Save-Waveform", 13},4}, - {{"Media-Type", 10},2}, - {{"Waveform-URI", 12},0}, - {{"Voiceprint-Exists", 17},11}, - {{"Ver-Buffer-Utterance", 20},4}, - {{"Input-Waveform-URI", 18},0}, - {{"Completion-Cause", 16},11}, - {{"Completion-Reason", 17},15}, - {{"Speech-Complete-Timeout", 23},1}, - {{"New-Audio-Channel", 17},2}, - {{"Abort-Verification", 18},6}, - {{"Start-Input-Timers", 18},1} -}; - -/** String table of MRCP verifier completion-cause fields (mrcp_verifier_completion_cause_e) */ -static const apt_str_table_item_t completion_cause_string_table[] = { - {{"success", 7},2}, - {{"error", 5},0}, - {{"no-input-timeout", 16},0}, - {{"too-much-speech-timeout",23},0}, - {{"speech-too-early", 16},9}, - {{"buffer-empty", 12},0}, - {{"out-of-sequence", 15},0}, - {{"repository-uri-failure", 22},15}, - {{"repository-uri-missing", 22},15}, - {{"voiceprint-id-missing", 21},14}, - {{"voiceprint-id-not-exist",23},14}, - {{"speech-not-usable", 17},7} -}; - - -/** Initialize verifier header */ -static void mrcp_verifier_header_init(mrcp_verifier_header_t *verifier_header) -{ - apt_string_reset(&verifier_header->repository_uri); - apt_string_reset(&verifier_header->voiceprint_identifier); - apt_string_reset(&verifier_header->verification_mode); - verifier_header->adapt_model = FALSE; - verifier_header->abort_model = FALSE; - verifier_header->min_verification_score = 0.0; - verifier_header->num_min_verification_phrases = 0; - verifier_header->num_max_verification_phrases = 0; - verifier_header->no_input_timeout = 0; - verifier_header->save_waveform = FALSE; - apt_string_reset(&verifier_header->media_type); - apt_string_reset(&verifier_header->waveform_uri); - verifier_header->voiceprint_exists = FALSE; - verifier_header->ver_buffer_utterance = FALSE; - apt_string_reset(&verifier_header->input_waveform_uri); - verifier_header->completion_cause = VERIFIER_COMPLETION_CAUSE_UNKNOWN; - apt_string_reset(&verifier_header->completion_reason); - verifier_header->speech_complete_timeout = 0; - verifier_header->new_audio_channel = FALSE; - verifier_header->abort_verification = FALSE; - verifier_header->start_input_timers = FALSE; -} - -/** Allocate MRCP verifier header */ -static void* mrcp_verifier_header_allocate(mrcp_header_accessor_t *accessor, apr_pool_t *pool) -{ - mrcp_verifier_header_t *verifier_header = apr_palloc(pool,sizeof(mrcp_verifier_header_t)); - mrcp_verifier_header_init(verifier_header); - accessor->data = verifier_header; - return accessor->data; -} - -/** Parse MRCP verifier header */ -static apt_bool_t mrcp_verifier_header_parse(mrcp_header_accessor_t *accessor, apr_size_t id, const apt_str_t *value, apr_pool_t *pool) -{ - mrcp_verifier_header_t *verifier_header = accessor->data; - apt_bool_t status = TRUE; - switch(id) { - case VERIFIER_HEADER_REPOSITORY_URI: - verifier_header->repository_uri = *value; - break; - case VERIFIER_HEADER_VOICEPRINT_IDENTIFIER: - verifier_header->voiceprint_identifier = *value; - break; - case VERIFIER_HEADER_VERIFICATION_MODE: - verifier_header->verification_mode = *value; - break; - case VERIFIER_HEADER_ADAPT_MODEL: - apt_boolean_value_parse(value,&verifier_header->adapt_model); - break; - case VERIFIER_HEADER_ABORT_MODEL: - apt_boolean_value_parse(value,&verifier_header->abort_model); - break; - case VERIFIER_HEADER_MIN_VERIFICATION_SCORE: - verifier_header->min_verification_score = apt_float_value_parse(value); - break; - case VERIFIER_HEADER_NUM_MIN_VERIFICATION_PHRASES: - verifier_header->num_min_verification_phrases = apt_size_value_parse(value); - break; - case VERIFIER_HEADER_NUM_MAX_VERIFICATION_PHRASES: - verifier_header->num_max_verification_phrases = apt_size_value_parse(value); - break; - case VERIFIER_HEADER_NO_INPUT_TIMEOUT: - verifier_header->no_input_timeout = apt_size_value_parse(value); - break; - case VERIFIER_HEADER_SAVE_WAVEFORM: - apt_boolean_value_parse(value,&verifier_header->save_waveform); - break; - case VERIFIER_HEADER_MEDIA_TYPE: - verifier_header->media_type = *value; - break; - case VERIFIER_HEADER_WAVEFORM_URI: - verifier_header->waveform_uri = *value; - break; - case VERIFIER_HEADER_VOICEPRINT_EXISTS: - apt_boolean_value_parse(value,&verifier_header->voiceprint_exists); - break; - case VERIFIER_HEADER_VER_BUFFER_UTTERANCE: - apt_boolean_value_parse(value,&verifier_header->ver_buffer_utterance); - break; - case VERIFIER_HEADER_INPUT_WAVEFORM_URI: - verifier_header->input_waveform_uri = *value; - break; - case VERIFIER_HEADER_COMPLETION_CAUSE: - verifier_header->completion_cause = apt_size_value_parse(value); - break; - case VERIFIER_HEADER_COMPLETION_REASON: - verifier_header->completion_reason = *value; - break; - case VERIFIER_HEADER_SPEECH_COMPLETE_TIMEOUT: - verifier_header->speech_complete_timeout = apt_size_value_parse(value); - break; - case VERIFIER_HEADER_NEW_AUDIO_CHANNEL: - apt_boolean_value_parse(value,&verifier_header->new_audio_channel); - break; - case VERIFIER_HEADER_ABORT_VERIFICATION: - apt_boolean_value_parse(value,&verifier_header->abort_verification); - break; - case VERIFIER_HEADER_START_INPUT_TIMERS: - apt_boolean_value_parse(value,&verifier_header->start_input_timers); - break; - default: - status = FALSE; - } - return status; -} - -/** Generate MRCP verifier header */ -static apt_bool_t mrcp_verifier_header_generate(const mrcp_header_accessor_t *accessor, apr_size_t id, apt_str_t *value, apr_pool_t *pool) -{ - mrcp_verifier_header_t *verifier_header = accessor->data; - switch(id) { - case VERIFIER_HEADER_REPOSITORY_URI: - *value = verifier_header->repository_uri; - break; - case VERIFIER_HEADER_VOICEPRINT_IDENTIFIER: - *value = verifier_header->voiceprint_identifier; - break; - case VERIFIER_HEADER_VERIFICATION_MODE: - *value = verifier_header->verification_mode; - break; - case VERIFIER_HEADER_ADAPT_MODEL: - apt_boolean_value_generate(verifier_header->adapt_model,value,pool); - break; - case VERIFIER_HEADER_ABORT_MODEL: - apt_boolean_value_generate(verifier_header->abort_model,value,pool); - break; - case VERIFIER_HEADER_MIN_VERIFICATION_SCORE: - apt_float_value_generate(verifier_header->min_verification_score,value,pool); - break; - case VERIFIER_HEADER_NUM_MIN_VERIFICATION_PHRASES: - apt_size_value_generate(verifier_header->num_min_verification_phrases,value,pool); - break; - case VERIFIER_HEADER_NUM_MAX_VERIFICATION_PHRASES: - apt_size_value_generate(verifier_header->num_max_verification_phrases,value,pool); - break; - case VERIFIER_HEADER_NO_INPUT_TIMEOUT: - apt_size_value_generate(verifier_header->no_input_timeout,value,pool); - break; - case VERIFIER_HEADER_SAVE_WAVEFORM: - apt_boolean_value_generate(verifier_header->save_waveform,value,pool); - break; - case VERIFIER_HEADER_MEDIA_TYPE: - *value = verifier_header->media_type; - break; - case VERIFIER_HEADER_WAVEFORM_URI: - *value = verifier_header->waveform_uri; - break; - case VERIFIER_HEADER_VOICEPRINT_EXISTS: - apt_boolean_value_generate(verifier_header->voiceprint_exists,value,pool); - break; - case VERIFIER_HEADER_VER_BUFFER_UTTERANCE: - apt_boolean_value_generate(verifier_header->ver_buffer_utterance,value,pool); - break; - case VERIFIER_HEADER_INPUT_WAVEFORM_URI: - *value = verifier_header->input_waveform_uri; - break; - case VERIFIER_HEADER_COMPLETION_CAUSE: - apt_completion_cause_generate( - completion_cause_string_table, - VERIFIER_COMPLETION_CAUSE_COUNT, - verifier_header->completion_cause, - value, - pool); - break; - case VERIFIER_HEADER_COMPLETION_REASON: - *value = verifier_header->completion_reason; - break; - case VERIFIER_HEADER_SPEECH_COMPLETE_TIMEOUT: - apt_size_value_generate(verifier_header->speech_complete_timeout,value,pool); - break; - case VERIFIER_HEADER_NEW_AUDIO_CHANNEL: - apt_boolean_value_generate(verifier_header->new_audio_channel,value,pool); - break; - case VERIFIER_HEADER_ABORT_VERIFICATION: - apt_boolean_value_generate(verifier_header->abort_verification,value,pool); - break; - case VERIFIER_HEADER_START_INPUT_TIMERS: - apt_boolean_value_generate(verifier_header->start_input_timers,value,pool); - break; - default: - break; - } - return TRUE; -} - -/** Duplicate MRCP verifier header */ -static apt_bool_t mrcp_verifier_header_duplicate(mrcp_header_accessor_t *accessor, const mrcp_header_accessor_t *src, apr_size_t id, const apt_str_t *value, apr_pool_t *pool) -{ - mrcp_verifier_header_t *verifier_header = accessor->data; - const mrcp_verifier_header_t *src_verifier_header = src->data; - apt_bool_t status = TRUE; - - if(!verifier_header || !src_verifier_header) { - return FALSE; - } - - switch(id) { - case VERIFIER_HEADER_REPOSITORY_URI: - verifier_header->repository_uri = *value; - break; - case VERIFIER_HEADER_VOICEPRINT_IDENTIFIER: - verifier_header->voiceprint_identifier = *value; - break; - case VERIFIER_HEADER_VERIFICATION_MODE: - verifier_header->verification_mode = *value; - break; - case VERIFIER_HEADER_ADAPT_MODEL: - verifier_header->adapt_model = src_verifier_header->adapt_model; - break; - case VERIFIER_HEADER_ABORT_MODEL: - verifier_header->abort_model = src_verifier_header->abort_model; - break; - case VERIFIER_HEADER_MIN_VERIFICATION_SCORE: - verifier_header->min_verification_score = src_verifier_header->min_verification_score; - break; - case VERIFIER_HEADER_NUM_MIN_VERIFICATION_PHRASES: - verifier_header->num_min_verification_phrases = src_verifier_header->num_min_verification_phrases; - break; - case VERIFIER_HEADER_NUM_MAX_VERIFICATION_PHRASES: - verifier_header->num_max_verification_phrases = src_verifier_header->num_max_verification_phrases; - break; - case VERIFIER_HEADER_NO_INPUT_TIMEOUT: - verifier_header->no_input_timeout = src_verifier_header->no_input_timeout; - break; - case VERIFIER_HEADER_SAVE_WAVEFORM: - verifier_header->save_waveform = src_verifier_header->save_waveform; - break; - case VERIFIER_HEADER_MEDIA_TYPE: - verifier_header->media_type = *value; - break; - case VERIFIER_HEADER_WAVEFORM_URI: - verifier_header->waveform_uri = *value; - break; - case VERIFIER_HEADER_VOICEPRINT_EXISTS: - verifier_header->voiceprint_exists = src_verifier_header->voiceprint_exists; - break; - case VERIFIER_HEADER_VER_BUFFER_UTTERANCE: - verifier_header->ver_buffer_utterance = src_verifier_header->ver_buffer_utterance; - break; - case VERIFIER_HEADER_INPUT_WAVEFORM_URI: - verifier_header->input_waveform_uri = *value; - break; - case VERIFIER_HEADER_COMPLETION_CAUSE: - verifier_header->completion_cause = src_verifier_header->completion_cause; - break; - case VERIFIER_HEADER_COMPLETION_REASON: - verifier_header->completion_reason = *value; - break; - case VERIFIER_HEADER_SPEECH_COMPLETE_TIMEOUT: - verifier_header->speech_complete_timeout = src_verifier_header->speech_complete_timeout; - break; - case VERIFIER_HEADER_NEW_AUDIO_CHANNEL: - verifier_header->new_audio_channel = src_verifier_header->new_audio_channel; - break; - case VERIFIER_HEADER_ABORT_VERIFICATION: - verifier_header->abort_verification = src_verifier_header->abort_verification; - break; - case VERIFIER_HEADER_START_INPUT_TIMERS: - verifier_header->start_input_timers = src_verifier_header->start_input_timers; - break; - default: - status = FALSE; - } - return status; -} - -static const mrcp_header_vtable_t header_vtable = { - mrcp_verifier_header_allocate, - NULL, /* nothing to destroy */ - mrcp_verifier_header_parse, - mrcp_verifier_header_generate, - mrcp_verifier_header_duplicate, - verifier_header_string_table, - VERIFIER_HEADER_COUNT -}; - -const mrcp_header_vtable_t* mrcp_verifier_header_vtable_get(mrcp_version_e version) -{ - return &header_vtable; -} - -MRCP_DECLARE(const apt_str_t*) mrcp_verifier_completion_cause_get(mrcp_verifier_completion_cause_e completion_cause, mrcp_version_e version) -{ - const apt_str_table_item_t *table = completion_cause_string_table; - return apt_string_table_str_get(table,VERIFIER_COMPLETION_CAUSE_COUNT,completion_cause); -} diff --git a/libs/unimrcp/libs/mrcp/resources/src/mrcp_verifier_resource.c b/libs/unimrcp/libs/mrcp/resources/src/mrcp_verifier_resource.c deleted file mode 100644 index 6f430a66196..00000000000 --- a/libs/unimrcp/libs/mrcp/resources/src/mrcp_verifier_resource.c +++ /dev/null @@ -1,68 +0,0 @@ -/* - * Copyright 2008-2014 Arsen Chaloyan - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - * - * $Id: - */ - -#include "mrcp_verifier_resource.h" -#include "mrcp_verifier_header.h" -#include "mrcp_resource.h" - -/** String table of MRCP verifier methods (mrcp_verifier_method_id) */ -static const apt_str_table_item_t verifier_method_string_table[] = { - {{"SET-PARAMS", 10},10}, - {{"GET-PARAMS", 10},10}, - {{"START-SESSION", 13},8}, - {{"END-SESSION", 11},0}, - {{"QUERY-VOICEPRINT", 16},0}, - {{"DELETE-VOICEPRINT", 17},0}, - {{"VERIFY", 6},6}, - {{"VERIFY-FROM-BUFFER", 18},7}, - {{"VERIFY-ROLLBACK", 15},7}, - {{"STOP", 4},2}, - {{"CLEAR-BUFFER", 12},0}, - {{"START-INPUT-TIMERS", 18},6}, - {{"GET-INTERMEDIATE-RESULT",23},4}, -}; - -/** String table of MRCP verifier events (mrcp_verifier_event_id) */ -static const apt_str_table_item_t verifier_event_string_table[] = { - {{"START-OF-INPUT", 14},0}, - {{"VERIFICATION-COMPLETE",21},0}, -}; - -static APR_INLINE const apt_str_table_item_t* verifier_method_string_table_get(mrcp_version_e version) -{ - return verifier_method_string_table; -} - -static APR_INLINE const apt_str_table_item_t* verifier_event_string_table_get(mrcp_version_e version) -{ - return verifier_event_string_table; -} - - -/** Create MRCP verifier resource */ -MRCP_DECLARE(mrcp_resource_t*) mrcp_verifier_resource_create(apr_pool_t *pool) -{ - mrcp_resource_t *resource = mrcp_resource_create(pool); - - resource->method_count = VERIFIER_METHOD_COUNT; - resource->event_count = VERIFIER_EVENT_COUNT; - resource->get_method_str_table = verifier_method_string_table_get; - resource->get_event_str_table = verifier_event_string_table_get; - resource->get_resource_header_vtable = mrcp_verifier_header_vtable_get; - return resource; -} diff --git a/libs/unimrcp/libs/mrcpv2-transport/Makefile.am b/libs/unimrcp/libs/mrcpv2-transport/Makefile.am deleted file mode 100644 index c2ffac4ef0c..00000000000 --- a/libs/unimrcp/libs/mrcpv2-transport/Makefile.am +++ /dev/null @@ -1,23 +0,0 @@ -MAINTAINERCLEANFILES = Makefile.in - -AM_CPPFLAGS = -I$(top_srcdir)/libs/mrcpv2-transport/include \ - -I$(top_srcdir)/libs/mrcp/include \ - -I$(top_srcdir)/libs/mrcp/message/include \ - -I$(top_srcdir)/libs/mrcp/control/include \ - -I$(top_srcdir)/libs/apr-toolkit/include \ - $(UNIMRCP_APR_INCLUDES) - -noinst_LTLIBRARIES = libmrcpv2transport.la - -include_HEADERS = include/mrcp_connection_types.h \ - include/mrcp_control_descriptor.h \ - include/mrcp_connection.h \ - include/mrcp_client_connection.h \ - include/mrcp_server_connection.h \ - include/mrcp_ca_factory.h - -libmrcpv2transport_la_SOURCES = src/mrcp_control_descriptor.c \ - src/mrcp_connection.c \ - src/mrcp_client_connection.c \ - src/mrcp_server_connection.c \ - src/mrcp_ca_factory.c diff --git a/libs/unimrcp/libs/mrcpv2-transport/include/mrcp_ca_factory.h b/libs/unimrcp/libs/mrcpv2-transport/include/mrcp_ca_factory.h deleted file mode 100644 index 599a4e60b72..00000000000 --- a/libs/unimrcp/libs/mrcpv2-transport/include/mrcp_ca_factory.h +++ /dev/null @@ -1,45 +0,0 @@ -/* - * Copyright 2008-2014 Arsen Chaloyan - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - * - * $Id: mrcp_ca_factory.h 2136 2014-07-04 06:33:36Z achaloyan@gmail.com $ - */ - -#ifndef MRCP_CA_FACTORY_H -#define MRCP_CA_FACTORY_H - -/** - * @file mrcp_ca_factory.h - * @brief Factory of MRCPv2 Connection Agents - */ - -#include "mrcp_connection_types.h" - -APT_BEGIN_EXTERN_C - -/** Create factory of connection agents. */ -MRCP_DECLARE(mrcp_ca_factory_t*) mrcp_ca_factory_create(apr_pool_t *pool); - -/** Add connection agent to factory. */ -MRCP_DECLARE(apt_bool_t) mrcp_ca_factory_agent_add(mrcp_ca_factory_t *mpf_factory, mrcp_connection_agent_t *agent); - -/** Determine whether factory is empty. */ -MRCP_DECLARE(apt_bool_t) mrcp_ca_factory_is_empty(const mrcp_ca_factory_t *factory); - -/** Select next available agent. */ -MRCP_DECLARE(mrcp_connection_agent_t*) mrcp_ca_factory_agent_select(mrcp_ca_factory_t *factory); - -APT_END_EXTERN_C - -#endif /* MRCP_CA_FACTORY_H */ diff --git a/libs/unimrcp/libs/mrcpv2-transport/include/mrcp_client_connection.h b/libs/unimrcp/libs/mrcpv2-transport/include/mrcp_client_connection.h deleted file mode 100644 index fd762bb1f90..00000000000 --- a/libs/unimrcp/libs/mrcpv2-transport/include/mrcp_client_connection.h +++ /dev/null @@ -1,186 +0,0 @@ -/* - * Copyright 2008-2014 Arsen Chaloyan - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - * - * $Id: mrcp_client_connection.h 2136 2014-07-04 06:33:36Z achaloyan@gmail.com $ - */ - -#ifndef MRCP_CLIENT_CONNECTION_H -#define MRCP_CLIENT_CONNECTION_H - -/** - * @file mrcp_client_connection.h - * @brief MRCPv2 Client Connection - */ - -#include "apt_task.h" -#include "mrcp_connection_types.h" - -APT_BEGIN_EXTERN_C - -/** - * Create connection agent. - * @param id the identifier of the agent - * @param max_connection_count the number of max MRCPv2 connections - * @param offer_new_connection the connection establishment policy in o/a - * @param pool the pool to allocate memory from - */ -MRCP_DECLARE(mrcp_connection_agent_t*) mrcp_client_connection_agent_create( - const char *id, - apr_size_t max_connection_count, - apt_bool_t offer_new_connection, - apr_pool_t *pool); - -/** - * Destroy connection agent. - * @param agent the agent to destroy - */ -MRCP_DECLARE(apt_bool_t) mrcp_client_connection_agent_destroy(mrcp_connection_agent_t *agent); - -/** - * Start connection agent and wait for incoming requests. - * @param agent the agent to start - */ -MRCP_DECLARE(apt_bool_t) mrcp_client_connection_agent_start(mrcp_connection_agent_t *agent); - -/** - * Terminate connection agent. - * @param agent the agent to terminate - */ -MRCP_DECLARE(apt_bool_t) mrcp_client_connection_agent_terminate(mrcp_connection_agent_t *agent); - - -/** - * Set connection event handler. - * @param agent the agent to set event hadler for - * @param obj the external object to associate with the agent - * @param vtable the event handler virtual methods - */ -MRCP_DECLARE(void) mrcp_client_connection_agent_handler_set( - mrcp_connection_agent_t *agent, - void *obj, - const mrcp_connection_event_vtable_t *vtable); - -/** - * Set MRCP resource factory. - * @param agent the agent to set resource factory for - * @param resource_factory the MRCP resource factory to set - */ -MRCP_DECLARE(void) mrcp_client_connection_resource_factory_set( - mrcp_connection_agent_t *agent, - const mrcp_resource_factory_t *resource_factory); -/** - * Set rx buffer size. - * @param agent the agent to set buffer size for - * @param size the size of rx buffer to set - */ -MRCP_DECLARE(void) mrcp_client_connection_rx_size_set( - mrcp_connection_agent_t *agent, - apr_size_t size); - -/** - * Set tx buffer size. - * @param agent the agent to set buffer size for - * @param size the size of the rx buffer to set - */ -MRCP_DECLARE(void) mrcp_client_connection_tx_size_set( - mrcp_connection_agent_t *agent, - apr_size_t size); -/** - * Set request timeout. - * @param agent the agent to set timeout for - * @param timeout the timeout to set - */ -MRCP_DECLARE(void) mrcp_client_connection_timeout_set( - mrcp_connection_agent_t *agent, - apr_size_t timeout); - -/** - * Get task. - * @param agent the agent to get task from - */ -MRCP_DECLARE(apt_task_t*) mrcp_client_connection_agent_task_get(const mrcp_connection_agent_t *agent); - -/** - * Get external object. - * @param agent the agent to get object from - */ -MRCP_DECLARE(void*) mrcp_client_connection_agent_object_get(const mrcp_connection_agent_t *agent); - -/** - * Get string identifier. - * @param agent the agent to get identifier of - */ -MRCP_DECLARE(const char*) mrcp_client_connection_agent_id_get(const mrcp_connection_agent_t *agent); - - -/** - * Create control channel. - * @param agent the agent to create channel for - * @param obj the external object to associate with the control channel - * @param pool the pool to allocate memory from - */ -MRCP_DECLARE(mrcp_control_channel_t*) mrcp_client_control_channel_create( - mrcp_connection_agent_t *agent, - void *obj, - apr_pool_t *pool); - -/** - * Add MRCPv2 control channel. - * @param channel the control channel to add - * @param descriptor the control descriptor - */ -MRCP_DECLARE(apt_bool_t) mrcp_client_control_channel_add( - mrcp_control_channel_t *channel, - mrcp_control_descriptor_t *descriptor); - -/** - * Modify MRCPv2 control channel. - * @param channel the control channel to modify - * @param descriptor the control descriptor - */ -MRCP_DECLARE(apt_bool_t) mrcp_client_control_channel_modify( - mrcp_control_channel_t *channel, - mrcp_control_descriptor_t *descriptor); - -/** - * Remove MRCPv2 control channel. - * @param channel the control channel to remove - */ -MRCP_DECLARE(apt_bool_t) mrcp_client_control_channel_remove(mrcp_control_channel_t *channel); - -/** - * Destroy MRCPv2 control channel. - * @param channel the control channel to destroy - */ -MRCP_DECLARE(apt_bool_t) mrcp_client_control_channel_destroy(mrcp_control_channel_t *channel); - -/** - * Send MRCPv2 message. - * @param channel the control channel to send message through - * @param message the message to send - */ -MRCP_DECLARE(apt_bool_t) mrcp_client_control_message_send(mrcp_control_channel_t *channel, mrcp_message_t *message); - -/** - * Set the logger object. - * @param channel the control channel to set the object for - * @param log_obj the object to set - */ -MRCP_DECLARE(void) mrcp_client_control_channel_log_obj_set(mrcp_control_channel_t *channel, void *log_obj); - - -APT_END_EXTERN_C - -#endif /* MRCP_CLIENT_CONNECTION_H */ diff --git a/libs/unimrcp/libs/mrcpv2-transport/include/mrcp_connection.h b/libs/unimrcp/libs/mrcpv2-transport/include/mrcp_connection.h deleted file mode 100644 index fd2f39dca0b..00000000000 --- a/libs/unimrcp/libs/mrcpv2-transport/include/mrcp_connection.h +++ /dev/null @@ -1,110 +0,0 @@ -/* - * Copyright 2008-2014 Arsen Chaloyan - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - * - * $Id: mrcp_connection.h 2170 2014-09-09 05:19:48Z achaloyan@gmail.com $ - */ - -#ifndef MRCP_CONNECTION_H -#define MRCP_CONNECTION_H - -/** - * @file mrcp_connection.h - * @brief MRCP Connection - */ - -#include -#include -#ifdef WIN32 -#pragma warning(disable: 4127) -#endif -#include -#include "mrcp_connection_types.h" -#include "mrcp_stream.h" - -APT_BEGIN_EXTERN_C - -/** Size of the buffer used for MRCP rx/tx stream */ -#define MRCP_STREAM_BUFFER_SIZE 1024 - -/** MRCPv2 connection */ -struct mrcp_connection_t { - /** Ring entry */ - APR_RING_ENTRY(mrcp_connection_t) link; - - /** Memory pool */ - apr_pool_t *pool; - - /** Accepted/Connected socket */ - apr_socket_t *sock; - /** Socket poll descriptor */ - apr_pollfd_t sock_pfd; - /** Local sockaddr */ - apr_sockaddr_t *l_sockaddr; - /** Remote sockaddr */ - apr_sockaddr_t *r_sockaddr; - /** Remote IP */ - apt_str_t remote_ip; - /** String identifier used for traces */ - const char *id; - /** Transparently dump whatever received/sent on transport layer, - if verbose is set to TRUE (default) */ - apt_bool_t verbose; - - /** Reference count */ - apr_size_t access_count; - /** Opaque agent */ - void *agent; - - /** Table of control channels */ - apr_hash_t *channel_table; - - /** Rx buffer */ - char *rx_buffer; - /** Rx buffer size */ - apr_size_t rx_buffer_size; - /** Rx stream */ - apt_text_stream_t rx_stream; - /** MRCP parser to parser MRCP messages out of rx stream */ - mrcp_parser_t *parser; - - /** Tx buffer */ - char *tx_buffer; - /** Tx buffer size */ - apr_size_t tx_buffer_size; - /** MRCP generator to generate MRCP messages into tx stream */ - mrcp_generator_t *generator; -}; - -/** Create MRCP connection. */ -mrcp_connection_t* mrcp_connection_create(void); - -/** Destroy MRCP connection. */ -void mrcp_connection_destroy(mrcp_connection_t *connection); - -/** Add Control Channel to MRCP connection. */ -apt_bool_t mrcp_connection_channel_add(mrcp_connection_t *connection, mrcp_control_channel_t *channel); - -/** Find Control Channel by Channel Identifier. */ -mrcp_control_channel_t* mrcp_connection_channel_find(const mrcp_connection_t *connection, const apt_str_t *identifier); - -/** Remove Control Channel from MRCP connection. */ -apt_bool_t mrcp_connection_channel_remove(mrcp_connection_t *connection, mrcp_control_channel_t *channel); - -/** Raise disconnect event for each channel from the specified connection. */ -apt_bool_t mrcp_connection_disconnect_raise(mrcp_connection_t *connection, const mrcp_connection_event_vtable_t *vtable); - -APT_END_EXTERN_C - -#endif /* MRCP_CONNECTION_H */ diff --git a/libs/unimrcp/libs/mrcpv2-transport/include/mrcp_connection_types.h b/libs/unimrcp/libs/mrcpv2-transport/include/mrcp_connection_types.h deleted file mode 100644 index 6f98564dbdb..00000000000 --- a/libs/unimrcp/libs/mrcpv2-transport/include/mrcp_connection_types.h +++ /dev/null @@ -1,140 +0,0 @@ -/* - * Copyright 2008-2014 Arsen Chaloyan - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - * - * $Id: mrcp_connection_types.h 2136 2014-07-04 06:33:36Z achaloyan@gmail.com $ - */ - -#ifndef MRCP_CONNECTION_TYPES_H -#define MRCP_CONNECTION_TYPES_H - -/** - * @file mrcp_connection_types.h - * @brief MRCP Connection Types Declaration - */ - -#include -#include "apt_string.h" -#include "apt_timer_queue.h" -#include "mrcp_types.h" - -APT_BEGIN_EXTERN_C - -/** Opaque MRCPv2 control descriptor declaration */ -typedef struct mrcp_control_descriptor_t mrcp_control_descriptor_t; - -/** Opaque MRCPv2 connection declaration */ -typedef struct mrcp_connection_t mrcp_connection_t; - -/** Opaque MRCPv2 control channel declaration */ -typedef struct mrcp_control_channel_t mrcp_control_channel_t; - -/** Opaque MRCPv2 connection agent declaration */ -typedef struct mrcp_connection_agent_t mrcp_connection_agent_t; - -/** Opaque MRCPv2 connection agent factory declaration */ -typedef struct mrcp_ca_factory_t mrcp_ca_factory_t; - -/** MRCPv2 connection event vtable declaration */ -typedef struct mrcp_connection_event_vtable_t mrcp_connection_event_vtable_t; - -/** MRCPv2 connection event vtable */ -struct mrcp_connection_event_vtable_t { - /** Channel add event handler */ - apt_bool_t (*on_add)(mrcp_control_channel_t *channel, mrcp_control_descriptor_t *descriptor, apt_bool_t status); - /** Channel modify event handler */ - apt_bool_t (*on_modify)(mrcp_control_channel_t *channel, mrcp_control_descriptor_t *descriptor, apt_bool_t status); - /** Channel remove event handler */ - apt_bool_t (*on_remove)(mrcp_control_channel_t *channel, apt_bool_t status); - /** Message receive event handler */ - apt_bool_t (*on_receive)(mrcp_control_channel_t *channel, mrcp_message_t *message); - /** Disconnect event handler */ - apt_bool_t (*on_disconnect)(mrcp_control_channel_t *channel); -}; - -/** MRCPv2 control channel */ -struct mrcp_control_channel_t { - /** MRCPv2 Connection agent */ - mrcp_connection_agent_t *agent; - /** MRCPv2 (shared) connection */ - mrcp_connection_t *connection; - /** Request sent to the server and waiting for a response */ - mrcp_message_t *active_request; - /** Timer used for request timeouts */ - apt_timer_t *request_timer; - /** Indicate removed connection (safe to destroy) */ - apt_bool_t removed; - /** External object associated with the channel */ - void *obj; - /** External logger object associated with the channel */ - void *log_obj; - /** Pool to allocate memory from */ - apr_pool_t *pool; - /** Channel identifier (id at resource) */ - apt_str_t identifier; -}; - -/** Send channel add response */ -static APR_INLINE apt_bool_t mrcp_control_channel_add_respond( - const mrcp_connection_event_vtable_t *vtable, - mrcp_control_channel_t *channel, - mrcp_control_descriptor_t *descriptor, - apt_bool_t status) -{ - if(vtable && vtable->on_add) { - return vtable->on_add(channel,descriptor,status); - } - return FALSE; -} - -/** Send channel modify response */ -static APR_INLINE apt_bool_t mrcp_control_channel_modify_respond( - const mrcp_connection_event_vtable_t *vtable, - mrcp_control_channel_t *channel, - mrcp_control_descriptor_t *descriptor, - apt_bool_t status) -{ - if(vtable && vtable->on_modify) { - return vtable->on_modify(channel,descriptor,status); - } - return FALSE; -} - -/** Send channel remove response */ -static APR_INLINE apt_bool_t mrcp_control_channel_remove_respond( - const mrcp_connection_event_vtable_t *vtable, - mrcp_control_channel_t *channel, - apt_bool_t status) -{ - if(vtable && vtable->on_remove) { - return vtable->on_remove(channel,status); - } - return FALSE; -} - -/** Send MRCP message receive event */ -static APR_INLINE apt_bool_t mrcp_connection_message_receive( - const mrcp_connection_event_vtable_t *vtable, - mrcp_control_channel_t *channel, - mrcp_message_t *message) -{ - if(vtable && vtable->on_receive) { - return vtable->on_receive(channel,message); - } - return FALSE; -} - -APT_END_EXTERN_C - -#endif /* MRCP_CONNECTION_TYPES_H */ diff --git a/libs/unimrcp/libs/mrcpv2-transport/include/mrcp_control_descriptor.h b/libs/unimrcp/libs/mrcpv2-transport/include/mrcp_control_descriptor.h deleted file mode 100644 index 9597970ddf8..00000000000 --- a/libs/unimrcp/libs/mrcpv2-transport/include/mrcp_control_descriptor.h +++ /dev/null @@ -1,147 +0,0 @@ -/* - * Copyright 2008-2014 Arsen Chaloyan - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - * - * $Id: mrcp_control_descriptor.h 2136 2014-07-04 06:33:36Z achaloyan@gmail.com $ - */ - -#ifndef MRCP_CONTROL_DESCRIPTOR_H -#define MRCP_CONTROL_DESCRIPTOR_H - -/** - * @file mrcp_control_descriptor.h - * @brief MRCPv2 Control Descriptor - */ - -#include -#include "apt_string.h" -#include "mrcp_connection_types.h" - -APT_BEGIN_EXTERN_C - -/** TCP discard port used in offer/answer */ -#define TCP_DISCARD_PORT 9 - - -/** MRCPv2 proto transport */ -typedef enum { - MRCP_PROTO_TCP, - MRCP_PROTO_TLS, - - MRCP_PROTO_COUNT, - MRCP_PROTO_UNKNOWN = MRCP_PROTO_COUNT -}mrcp_proto_type_e; - - -/** MRCPv2 attributes */ -typedef enum { - MRCP_ATTRIB_SETUP, - MRCP_ATTRIB_CONNECTION, - MRCP_ATTRIB_RESOURCE, - MRCP_ATTRIB_CHANNEL, - MRCP_ATTRIB_CMID, - - MRCP_ATTRIB_COUNT, - MRCP_ATTRIB_UNKNOWN = MRCP_ATTRIB_COUNT -}mrcp_attrib_e; - - -/** MRCPv2 setup attributes */ -typedef enum { - MRCP_SETUP_TYPE_ACTIVE, - MRCP_SETUP_TYPE_PASSIVE, - - MRCP_SETUP_TYPE_COUNT, - MRCP_SETUP_TYPE_UNKNOWN = MRCP_SETUP_TYPE_COUNT -} mrcp_setup_type_e; - -/** MRCPv2 connection attributes */ -typedef enum { - MRCP_CONNECTION_TYPE_NEW, - MRCP_CONNECTION_TYPE_EXISTING, - - MRCP_CONNECTION_TYPE_COUNT, - MRCP_CONNECTION_TYPE_UNKNOWN = MRCP_CONNECTION_TYPE_COUNT -} mrcp_connection_type_e; - - -/** MRCPv2 control descriptor */ -struct mrcp_control_descriptor_t { - /** IP address */ - apt_str_t ip; - /** Port */ - apr_port_t port; - /** Protocol type */ - mrcp_proto_type_e proto; - /** Setup type */ - mrcp_setup_type_e setup_type; - /** Connection type */ - mrcp_connection_type_e connection_type; - /** Resource name */ - apt_str_t resource_name; - /** Session identifier */ - apt_str_t session_id; - /** Array of cmid attributes */ - apr_array_header_t *cmid_arr; - /** Base identifier */ - apr_size_t id; -}; - - -/** Create MRCP control descriptor */ -MRCP_DECLARE(mrcp_control_descriptor_t*) mrcp_control_descriptor_create(apr_pool_t *pool); - -/** Create MRCP control offer */ -MRCP_DECLARE(mrcp_control_descriptor_t*) mrcp_control_offer_create(apr_pool_t *pool); - -/** Create MRCP control answer */ -MRCP_DECLARE(mrcp_control_descriptor_t*) mrcp_control_answer_create(mrcp_control_descriptor_t *offer, apr_pool_t *pool); - -/** Add cmid to cmid_arr */ -MRCP_DECLARE(void) mrcp_cmid_add(apr_array_header_t *cmid_arr, apr_size_t cmid); - -/** Find cmid in cmid_arr */ -MRCP_DECLARE(apt_bool_t) mrcp_cmid_find(const apr_array_header_t *cmid_arr, apr_size_t cmid); - -/** Get MRCP protocol transport name by identifier */ -MRCP_DECLARE(const apt_str_t*) mrcp_proto_get(mrcp_proto_type_e proto); - -/** Find MRCP protocol transport identifier by name */ -MRCP_DECLARE(mrcp_proto_type_e) mrcp_proto_find(const apt_str_t *attrib); - - -/** Get MRCP attribute name by identifier */ -MRCP_DECLARE(const apt_str_t*) mrcp_attrib_str_get(mrcp_attrib_e attrib_id); - -/** Find MRCP attribute identifier by name */ -MRCP_DECLARE(mrcp_attrib_e) mrcp_attrib_id_find(const apt_str_t *attrib); - - -/** Get MRCP setup type name by identifier */ -MRCP_DECLARE(const apt_str_t*) mrcp_setup_type_get(mrcp_setup_type_e setup_type); - -/** Find MRCP setup type identifier by name */ -MRCP_DECLARE(mrcp_setup_type_e) mrcp_setup_type_find(const apt_str_t *attrib); - - -/** Get MRCP connection type name by identifier */ -MRCP_DECLARE(const apt_str_t*) mrcp_connection_type_get(mrcp_connection_type_e connection_type); - -/** Find MRCP connection type identifier by name */ -MRCP_DECLARE(mrcp_connection_type_e) mrcp_connection_type_find(const apt_str_t *attrib); - - -APT_END_EXTERN_C - -#endif /* MRCP_CONTROL_DESCRIPTOR_H */ diff --git a/libs/unimrcp/libs/mrcpv2-transport/include/mrcp_server_connection.h b/libs/unimrcp/libs/mrcpv2-transport/include/mrcp_server_connection.h deleted file mode 100644 index df99cc1a40b..00000000000 --- a/libs/unimrcp/libs/mrcpv2-transport/include/mrcp_server_connection.h +++ /dev/null @@ -1,175 +0,0 @@ -/* - * Copyright 2008-2014 Arsen Chaloyan - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - * - * $Id: mrcp_server_connection.h 2136 2014-07-04 06:33:36Z achaloyan@gmail.com $ - */ - -#ifndef MRCP_SERVER_CONNECTION_H -#define MRCP_SERVER_CONNECTION_H - -/** - * @file mrcp_server_connection.h - * @brief MRCPv2 Server Connection - */ - -#include "apt_task.h" -#include "mrcp_connection_types.h" - -APT_BEGIN_EXTERN_C - -/** - * Create connection agent. - * @param id the identifier of the engine - * @param listen_ip the IP address to listen on - * @param listen_port the port to listen on - * @param max_connection_count the number of max MRCPv2 connections - * @param force_new_connection the policy used in o/a for connection establishment - * @param pool the pool to allocate memory from - */ -MRCP_DECLARE(mrcp_connection_agent_t*) mrcp_server_connection_agent_create( - const char *id, - const char *listen_ip, - apr_port_t listen_port, - apr_size_t max_connection_count, - apt_bool_t force_new_connection, - apr_pool_t *pool); - -/** - * Destroy connection agent. - * @param agent the agent to destroy - */ -MRCP_DECLARE(apt_bool_t) mrcp_server_connection_agent_destroy(mrcp_connection_agent_t *agent); - -/** - * Start connection agent and wait for incoming requests. - * @param agent the agent to start - */ -MRCP_DECLARE(apt_bool_t) mrcp_server_connection_agent_start(mrcp_connection_agent_t *agent); - -/** - * Terminate connection agent. - * @param agent the agent to terminate - */ -MRCP_DECLARE(apt_bool_t) mrcp_server_connection_agent_terminate(mrcp_connection_agent_t *agent); - -/** - * Set connection event handler. - * @param agent the agent to set event hadler for - * @param obj the external object to associate with the agent - * @param vtable the event handler virtual methods - */ -MRCP_DECLARE(void) mrcp_server_connection_agent_handler_set( - mrcp_connection_agent_t *agent, - void *obj, - const mrcp_connection_event_vtable_t *vtable); - -/** - * Set MRCP resource factory. - * @param agent the agent to set resource factory for - * @param resource_factory the MRCP resource factory to set - */ -MRCP_DECLARE(void) mrcp_server_connection_resource_factory_set( - mrcp_connection_agent_t *agent, - const mrcp_resource_factory_t *resource_factory); - -/** - * Set rx buffer size. - * @param agent the agent to set buffer size for - * @param size the size of rx buffer to set - */ -MRCP_DECLARE(void) mrcp_server_connection_rx_size_set( - mrcp_connection_agent_t *agent, - apr_size_t size); - -/** - * Set tx buffer size. - * @param agent the agent to set buffer size for - * @param size the size of the rx buffer to set - */ -MRCP_DECLARE(void) mrcp_server_connection_tx_size_set( - mrcp_connection_agent_t *agent, - apr_size_t size); - -/** - * Get task. - * @param agent the agent to get task from - */ -MRCP_DECLARE(apt_task_t*) mrcp_server_connection_agent_task_get(const mrcp_connection_agent_t *agent); - -/** - * Get external object. - * @param agent the agent to get object from - */ -MRCP_DECLARE(void*) mrcp_server_connection_agent_object_get(const mrcp_connection_agent_t *agent); - -/** - * Get string identifier. - * @param agent the agent to get identifier of - */ -MRCP_DECLARE(const char*) mrcp_server_connection_agent_id_get(const mrcp_connection_agent_t *agent); - - -/** - * Create control channel. - * @param agent the agent to create channel for - * @param obj the external object to associate with the control channel - * @param pool the pool to allocate memory from - */ -MRCP_DECLARE(mrcp_control_channel_t*) mrcp_server_control_channel_create( - mrcp_connection_agent_t *agent, - void *obj, - apr_pool_t *pool); - -/** - * Add MRCPv2 control channel. - * @param channel the control channel to add - * @param descriptor the control descriptor - */ -MRCP_DECLARE(apt_bool_t) mrcp_server_control_channel_add( - mrcp_control_channel_t *channel, - mrcp_control_descriptor_t *descriptor); - -/** - * Modify MRCPv2 control channel. - * @param channel the control channel to modify - * @param descriptor the control descriptor - */ -MRCP_DECLARE(apt_bool_t) mrcp_server_control_channel_modify( - mrcp_control_channel_t *channel, - mrcp_control_descriptor_t *descriptor); - -/** - * Remove MRCPv2 control channel. - * @param channel the control channel to remove - */ -MRCP_DECLARE(apt_bool_t) mrcp_server_control_channel_remove(mrcp_control_channel_t *channel); - -/** - * Destroy MRCPv2 control channel. - * @param channel the control channel to destroy - */ -MRCP_DECLARE(apt_bool_t) mrcp_server_control_channel_destroy(mrcp_control_channel_t *channel); - -/** - * Send MRCPv2 message. - * @param channel the control channel to send message through - * @param message the message to send - */ -MRCP_DECLARE(apt_bool_t) mrcp_server_control_message_send(mrcp_control_channel_t *channel, mrcp_message_t *message); - - -APT_END_EXTERN_C - -#endif /* MRCP_SERVER_CONNECTION_H */ diff --git a/libs/unimrcp/libs/mrcpv2-transport/mrcpv2transport.2010.vcxproj.filters b/libs/unimrcp/libs/mrcpv2-transport/mrcpv2transport.2010.vcxproj.filters deleted file mode 100644 index 576ef8ae7e7..00000000000 --- a/libs/unimrcp/libs/mrcpv2-transport/mrcpv2transport.2010.vcxproj.filters +++ /dev/null @@ -1,47 +0,0 @@ - - - - - {93995380-89BD-4b04-88EB-625FBE52EBFB} - h;hpp;hxx;hm;inl;inc;xsd - - - {a92d3b8c-d54d-416c-b458-dc57ac24d2e9} - cpp;c;cc;cxx;def;odl;idl;hpj;bat;asm;asmx - - - - - include - - - include - - - include - - - include - - - include - - - - - src - - - src - - - src - - - src - - - src - - - \ No newline at end of file diff --git a/libs/unimrcp/libs/mrcpv2-transport/mrcpv2transport.2017.vcxproj b/libs/unimrcp/libs/mrcpv2-transport/mrcpv2transport.2017.vcxproj deleted file mode 100644 index a6940949694..00000000000 --- a/libs/unimrcp/libs/mrcpv2-transport/mrcpv2transport.2017.vcxproj +++ /dev/null @@ -1,129 +0,0 @@ - - - - - Debug - Win32 - - - Debug - x64 - - - Release - Win32 - - - Release - x64 - - - - mrcpv2transport - {A9EDAC04-6A5F-4BA7-BC0D-CCE7B255B6EA} - mrcpv2transport - Win32Proj - - - - StaticLibrary - Unicode - true - $(DefaultPlatformToolset) - - - StaticLibrary - Unicode - $(DefaultPlatformToolset) - - - StaticLibrary - Unicode - true - $(DefaultPlatformToolset) - - - StaticLibrary - Unicode - $(DefaultPlatformToolset) - - - - - - - - - - - - - - - - - - - - - - - - - - - <_ProjectFileVersion>10.0.30319.1 - $(PlatformName)\$(Configuration)\ - $(PlatformName)\$(Configuration)\ - $(SolutionDir)$(PlatformName)\$(Configuration)\ - $(PlatformName)\$(Configuration)\ - $(PlatformName)\$(Configuration)\ - $(PlatformName)\$(Configuration)\ - $(SolutionDir)$(PlatformName)\$(Configuration)\ - $(PlatformName)\$(Configuration)\ - - - - APT_STATIC_LIB;MPF_STATIC_LIB;MRCP_STATIC_LIB;%(PreprocessorDefinitions) - - - - - X64 - - - APT_STATIC_LIB;MPF_STATIC_LIB;MRCP_STATIC_LIB;%(PreprocessorDefinitions) - ProgramDatabase - - - - - APT_STATIC_LIB;MPF_STATIC_LIB;MRCP_STATIC_LIB;%(PreprocessorDefinitions) - - - - - X64 - - - APT_STATIC_LIB;MPF_STATIC_LIB;MRCP_STATIC_LIB;%(PreprocessorDefinitions) - - - - - - - - - - - - - - - - - - - - \ No newline at end of file diff --git a/libs/unimrcp/libs/mrcpv2-transport/mrcpv2transport.vcproj b/libs/unimrcp/libs/mrcpv2-transport/mrcpv2transport.vcproj deleted file mode 100644 index 526f1e36a36..00000000000 --- a/libs/unimrcp/libs/mrcpv2-transport/mrcpv2transport.vcproj +++ /dev/null @@ -1,296 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/libs/unimrcp/libs/mrcpv2-transport/mrcpv2transport.vcxproj b/libs/unimrcp/libs/mrcpv2-transport/mrcpv2transport.vcxproj deleted file mode 100644 index 4d99d355c39..00000000000 --- a/libs/unimrcp/libs/mrcpv2-transport/mrcpv2transport.vcxproj +++ /dev/null @@ -1,125 +0,0 @@ - - - - - Debug - Win32 - - - Debug - x64 - - - Release - Win32 - - - Release - x64 - - - - {A9EDAC04-6A5F-4BA7-BC0D-CCE7B255B6EA} - mrcpv2transport - Win32Proj - - - - StaticLibrary - Unicode - true - - - StaticLibrary - Unicode - - - StaticLibrary - Unicode - true - - - StaticLibrary - Unicode - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - <_ProjectFileVersion>10.0.30319.1 - AllRules.ruleset - - - AllRules.ruleset - - - AllRules.ruleset - - - AllRules.ruleset - - - - - - X64 - - - ProgramDatabase - - - - - X64 - - - - - - - - - - - - - - - - - - - - {1c320193-46a6-4b34-9c56-8ab584fc1b56} - false - - - - - - \ No newline at end of file diff --git a/libs/unimrcp/libs/mrcpv2-transport/mrcpv2transport.vcxproj.filters b/libs/unimrcp/libs/mrcpv2-transport/mrcpv2transport.vcxproj.filters deleted file mode 100644 index d573ce63677..00000000000 --- a/libs/unimrcp/libs/mrcpv2-transport/mrcpv2transport.vcxproj.filters +++ /dev/null @@ -1,50 +0,0 @@ - - - - - {93995380-89BD-4b04-88EB-625FBE52EBFB} - h;hpp;hxx;hm;inl;inc;xsd - - - {119450fa-653a-4fdc-9017-a4350ff3066c} - cpp;c;cc;cxx;def;odl;idl;hpj;bat;asm;asmx - - - - - include - - - include - - - include - - - include - - - include - - - include - - - - - src - - - src - - - src - - - src - - - src - - - \ No newline at end of file diff --git a/libs/unimrcp/libs/mrcpv2-transport/src/mrcp_ca_factory.c b/libs/unimrcp/libs/mrcpv2-transport/src/mrcp_ca_factory.c deleted file mode 100644 index b588ee200c7..00000000000 --- a/libs/unimrcp/libs/mrcpv2-transport/src/mrcp_ca_factory.c +++ /dev/null @@ -1,65 +0,0 @@ -/* - * Copyright 2008-2014 Arsen Chaloyan - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - * - * $Id: mrcp_ca_factory.c 2136 2014-07-04 06:33:36Z achaloyan@gmail.com $ - */ - -#include -#include "mrcp_ca_factory.h" - -/** Factory of MRCPv2 connection agents */ -struct mrcp_ca_factory_t { - /** Array of pointers to agents */ - apr_array_header_t *agent_arr; - /** Index of the current agent */ - int index; -}; - -/** Create factory of connection agents. */ -MRCP_DECLARE(mrcp_ca_factory_t*) mrcp_ca_factory_create(apr_pool_t *pool) -{ - mrcp_ca_factory_t *factory = apr_palloc(pool,sizeof(mrcp_ca_factory_t)); - factory->agent_arr = apr_array_make(pool,1,sizeof(mrcp_connection_agent_t*)); - factory->index = 0; - return factory; -} - -/** Add connection agent to factory. */ -MRCP_DECLARE(apt_bool_t) mrcp_ca_factory_agent_add(mrcp_ca_factory_t *factory, mrcp_connection_agent_t *agent) -{ - mrcp_connection_agent_t **slot; - if(!agent) - return FALSE; - - slot = apr_array_push(factory->agent_arr); - *slot = agent; - return TRUE; -} - -/** Determine whether factory is empty. */ -MRCP_DECLARE(apt_bool_t) mrcp_ca_factory_is_empty(const mrcp_ca_factory_t *factory) -{ - return apr_is_empty_array(factory->agent_arr); -} - -/** Select next available agent. */ -MRCP_DECLARE(mrcp_connection_agent_t*) mrcp_ca_factory_agent_select(mrcp_ca_factory_t *factory) -{ - mrcp_connection_agent_t *agent = APR_ARRAY_IDX(factory->agent_arr, factory->index, mrcp_connection_agent_t*); - if(++factory->index == factory->agent_arr->nelts) { - factory->index = 0; - } - return agent; -} diff --git a/libs/unimrcp/libs/mrcpv2-transport/src/mrcp_client_connection.c b/libs/unimrcp/libs/mrcpv2-transport/src/mrcp_client_connection.c deleted file mode 100644 index 359df52f473..00000000000 --- a/libs/unimrcp/libs/mrcpv2-transport/src/mrcp_client_connection.c +++ /dev/null @@ -1,696 +0,0 @@ -/* - * Copyright 2008-2014 Arsen Chaloyan - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - * - * $Id: mrcp_client_connection.c 2249 2014-11-19 05:26:24Z achaloyan@gmail.com $ - */ - -#include "mrcp_connection.h" -#include "mrcp_client_connection.h" -#include "mrcp_control_descriptor.h" -#include "mrcp_resource_factory.h" -#include "mrcp_message.h" -#include "apt_text_stream.h" -#include "apt_poller_task.h" -#include "apt_log.h" - - -struct mrcp_connection_agent_t { - /** List (ring) of MRCP connections */ - APR_RING_HEAD(mrcp_connection_head_t, mrcp_connection_t) connection_list; - - apr_pool_t *pool; - apt_poller_task_t *task; - const mrcp_resource_factory_t *resource_factory; - - apr_uint32_t request_timeout; - apt_bool_t offer_new_connection; - apr_size_t tx_buffer_size; - apr_size_t rx_buffer_size; - - void *obj; - const mrcp_connection_event_vtable_t *vtable; -}; - -typedef enum { - CONNECTION_TASK_MSG_ADD_CHANNEL, - CONNECTION_TASK_MSG_MODIFY_CHANNEL, - CONNECTION_TASK_MSG_REMOVE_CHANNEL, - CONNECTION_TASK_MSG_SEND_MESSAGE -} connection_task_msg_type_e; - -typedef struct connection_task_msg_t connection_task_msg_t; -struct connection_task_msg_t { - connection_task_msg_type_e type; - mrcp_connection_agent_t *agent; - mrcp_control_channel_t *channel; - mrcp_control_descriptor_t *descriptor; - mrcp_message_t *message; -}; - - -static apt_bool_t mrcp_client_agent_msg_process(apt_task_t *task, apt_task_msg_t *task_msg); -static apt_bool_t mrcp_client_poller_signal_process(void *obj, const apr_pollfd_t *descriptor); -static void mrcp_client_timer_proc(apt_timer_t *timer, void *obj); - -/** Create connection agent. */ -MRCP_DECLARE(mrcp_connection_agent_t*) mrcp_client_connection_agent_create( - const char *id, - apr_size_t max_connection_count, - apt_bool_t offer_new_connection, - apr_pool_t *pool) -{ - apt_task_t *task; - apt_task_vtable_t *vtable; - apt_task_msg_pool_t *msg_pool; - mrcp_connection_agent_t *agent; - - apt_log(APT_LOG_MARK,APT_PRIO_NOTICE,"Create MRCPv2 Agent [%s] [%"APR_SIZE_T_FMT"]", - id, max_connection_count); - agent = apr_palloc(pool,sizeof(mrcp_connection_agent_t)); - agent->pool = pool; - agent->request_timeout = 0; - agent->offer_new_connection = offer_new_connection; - agent->rx_buffer_size = MRCP_STREAM_BUFFER_SIZE; - agent->tx_buffer_size = MRCP_STREAM_BUFFER_SIZE; - - msg_pool = apt_task_msg_pool_create_dynamic(sizeof(connection_task_msg_t),pool); - - agent->task = apt_poller_task_create( - max_connection_count, - mrcp_client_poller_signal_process, - agent, - msg_pool, - pool); - if(!agent->task) { - return NULL; - } - - task = apt_poller_task_base_get(agent->task); - if(task) { - apt_task_name_set(task,id); - } - - vtable = apt_poller_task_vtable_get(agent->task); - if(vtable) { - vtable->process_msg = mrcp_client_agent_msg_process; - } - - APR_RING_INIT(&agent->connection_list, mrcp_connection_t, link); - return agent; -} - -/** Destroy connection agent. */ -MRCP_DECLARE(apt_bool_t) mrcp_client_connection_agent_destroy(mrcp_connection_agent_t *agent) -{ - apt_log(APT_LOG_MARK,APT_PRIO_NOTICE,"Destroy MRCPv2 Agent [%s]", - mrcp_client_connection_agent_id_get(agent)); - return apt_poller_task_destroy(agent->task); -} - -/** Start connection agent. */ -MRCP_DECLARE(apt_bool_t) mrcp_client_connection_agent_start(mrcp_connection_agent_t *agent) -{ - return apt_poller_task_start(agent->task); -} - -/** Terminate connection agent. */ -MRCP_DECLARE(apt_bool_t) mrcp_client_connection_agent_terminate(mrcp_connection_agent_t *agent) -{ - return apt_poller_task_terminate(agent->task); -} - -/** Set connection event handler. */ -MRCP_DECLARE(void) mrcp_client_connection_agent_handler_set( - mrcp_connection_agent_t *agent, - void *obj, - const mrcp_connection_event_vtable_t *vtable) -{ - agent->obj = obj; - agent->vtable = vtable; -} - -/** Set MRCP resource factory */ -MRCP_DECLARE(void) mrcp_client_connection_resource_factory_set( - mrcp_connection_agent_t *agent, - const mrcp_resource_factory_t *resource_factroy) -{ - agent->resource_factory = resource_factroy; -} - -/** Set rx buffer size */ -MRCP_DECLARE(void) mrcp_client_connection_rx_size_set( - mrcp_connection_agent_t *agent, - apr_size_t size) -{ - if(size < MRCP_STREAM_BUFFER_SIZE) { - size = MRCP_STREAM_BUFFER_SIZE; - } - agent->rx_buffer_size = size; -} - -/** Set tx buffer size */ -MRCP_DECLARE(void) mrcp_client_connection_tx_size_set( - mrcp_connection_agent_t *agent, - apr_size_t size) -{ - if(size < MRCP_STREAM_BUFFER_SIZE) { - size = MRCP_STREAM_BUFFER_SIZE; - } - agent->tx_buffer_size = size; -} - -/** Set request timeout */ -MRCP_DECLARE(void) mrcp_client_connection_timeout_set( - mrcp_connection_agent_t *agent, - apr_size_t timeout) -{ - agent->request_timeout = (apr_uint32_t)timeout; -} - -/** Get task */ -MRCP_DECLARE(apt_task_t*) mrcp_client_connection_agent_task_get(const mrcp_connection_agent_t *agent) -{ - return apt_poller_task_base_get(agent->task); -} - -/** Get external object */ -MRCP_DECLARE(void*) mrcp_client_connection_agent_object_get(const mrcp_connection_agent_t *agent) -{ - return agent->obj; -} - -/** Get string identifier */ -MRCP_DECLARE(const char*) mrcp_client_connection_agent_id_get(const mrcp_connection_agent_t *agent) -{ - apt_task_t *task = apt_poller_task_base_get(agent->task); - return apt_task_name_get(task); -} - - -/** Create control channel */ -MRCP_DECLARE(mrcp_control_channel_t*) mrcp_client_control_channel_create(mrcp_connection_agent_t *agent, void *obj, apr_pool_t *pool) -{ - mrcp_control_channel_t *channel = apr_palloc(pool,sizeof(mrcp_control_channel_t)); - channel->agent = agent; - channel->connection = NULL; - channel->active_request = NULL; - channel->request_timer = NULL; - channel->removed = FALSE; - channel->obj = obj; - channel->log_obj = NULL; - channel->pool = pool; - - channel->request_timer = apt_poller_task_timer_create( - agent->task, - mrcp_client_timer_proc, - channel, - pool); - return channel; -} - -/** Set the logger object */ -MRCP_DECLARE(void) mrcp_client_control_channel_log_obj_set(mrcp_control_channel_t *channel, void *log_obj) -{ - channel->log_obj = log_obj; -} - -/** Destroy MRCPv2 control channel */ -MRCP_DECLARE(apt_bool_t) mrcp_client_control_channel_destroy(mrcp_control_channel_t *channel) -{ - if(channel && channel->connection && channel->removed == TRUE) { - mrcp_connection_t *connection = channel->connection; - channel->connection = NULL; - apt_log(APT_LOG_MARK,APT_PRIO_NOTICE,"Destroy TCP/MRCPv2 Connection %s",connection->id); - mrcp_connection_destroy(connection); - } - return TRUE; -} - -/** Signal task message */ -static apt_bool_t mrcp_client_control_message_signal( - connection_task_msg_type_e type, - mrcp_connection_agent_t *agent, - mrcp_control_channel_t *channel, - mrcp_control_descriptor_t *descriptor, - mrcp_message_t *message) -{ - apt_task_t *task = apt_poller_task_base_get(agent->task); - apt_task_msg_t *task_msg = apt_task_msg_get(task); - if(task_msg) { - connection_task_msg_t *msg = (connection_task_msg_t*)task_msg->data; - msg->type = type; - msg->agent = agent; - msg->channel = channel; - msg->descriptor = descriptor; - msg->message = message; - apt_task_msg_signal(task,task_msg); - } - return TRUE; -} - -/** Add MRCPv2 control channel */ -MRCP_DECLARE(apt_bool_t) mrcp_client_control_channel_add(mrcp_control_channel_t *channel, mrcp_control_descriptor_t *descriptor) -{ - return mrcp_client_control_message_signal(CONNECTION_TASK_MSG_ADD_CHANNEL,channel->agent,channel,descriptor,NULL); -} - -/** Modify MRCPv2 control channel */ -MRCP_DECLARE(apt_bool_t) mrcp_client_control_channel_modify(mrcp_control_channel_t *channel, mrcp_control_descriptor_t *descriptor) -{ - return mrcp_client_control_message_signal(CONNECTION_TASK_MSG_MODIFY_CHANNEL,channel->agent,channel,descriptor,NULL); -} - -/** Remove MRCPv2 control channel */ -MRCP_DECLARE(apt_bool_t) mrcp_client_control_channel_remove(mrcp_control_channel_t *channel) -{ - return mrcp_client_control_message_signal(CONNECTION_TASK_MSG_REMOVE_CHANNEL,channel->agent,channel,NULL,NULL); -} - -/** Send MRCPv2 message */ -MRCP_DECLARE(apt_bool_t) mrcp_client_control_message_send(mrcp_control_channel_t *channel, mrcp_message_t *message) -{ - return mrcp_client_control_message_signal(CONNECTION_TASK_MSG_SEND_MESSAGE,channel->agent,channel,NULL,message); -} - -static mrcp_connection_t* mrcp_client_agent_connection_create(mrcp_connection_agent_t *agent, mrcp_control_descriptor_t *descriptor) -{ - char *local_ip = NULL; - char *remote_ip = NULL; - mrcp_connection_t *connection = mrcp_connection_create(); - - apr_sockaddr_info_get(&connection->r_sockaddr,descriptor->ip.buf,APR_INET,descriptor->port,0,connection->pool); - if(!connection->r_sockaddr) { - mrcp_connection_destroy(connection); - return NULL; - } - - if(apr_socket_create(&connection->sock,connection->r_sockaddr->family,SOCK_STREAM,APR_PROTO_TCP,connection->pool) != APR_SUCCESS) { - mrcp_connection_destroy(connection); - return NULL; - } - - apr_socket_opt_set(connection->sock, APR_SO_NONBLOCK, 0); - apr_socket_timeout_set(connection->sock, -1); - apr_socket_opt_set(connection->sock, APR_SO_REUSEADDR, 1); - - if(apr_socket_connect(connection->sock, connection->r_sockaddr) != APR_SUCCESS) { - apr_socket_close(connection->sock); - mrcp_connection_destroy(connection); - return NULL; - } - - if(apr_socket_addr_get(&connection->l_sockaddr,APR_LOCAL,connection->sock) != APR_SUCCESS) { - apr_socket_close(connection->sock); - mrcp_connection_destroy(connection); - return NULL; - } - - apr_sockaddr_ip_get(&local_ip,connection->l_sockaddr); - apr_sockaddr_ip_get(&remote_ip,connection->r_sockaddr); - connection->id = apr_psprintf(connection->pool,"%s:%hu <-> %s:%hu", - local_ip,connection->l_sockaddr->port, - remote_ip,connection->r_sockaddr->port); - - memset(&connection->sock_pfd,0,sizeof(apr_pollfd_t)); - connection->sock_pfd.desc_type = APR_POLL_SOCKET; - connection->sock_pfd.reqevents = APR_POLLIN; - connection->sock_pfd.desc.s = connection->sock; - connection->sock_pfd.client_data = connection; - if(apt_poller_task_descriptor_add(agent->task, &connection->sock_pfd) != TRUE) { - apt_log(APT_LOG_MARK,APT_PRIO_WARNING,"Failed to Add to Pollset %s",connection->id); - apr_socket_close(connection->sock); - mrcp_connection_destroy(connection); - return NULL; - } - - apt_log(APT_LOG_MARK,APT_PRIO_NOTICE,"Established TCP/MRCPv2 Connection %s",connection->id); - connection->agent = agent; - APR_RING_INSERT_TAIL(&agent->connection_list,connection,mrcp_connection_t,link); - - connection->parser = mrcp_parser_create(agent->resource_factory,connection->pool); - connection->generator = mrcp_generator_create(agent->resource_factory,connection->pool); - - connection->tx_buffer_size = agent->tx_buffer_size; - connection->tx_buffer = apr_palloc(connection->pool,connection->tx_buffer_size+1); - - connection->rx_buffer_size = agent->rx_buffer_size; - connection->rx_buffer = apr_palloc(connection->pool,connection->rx_buffer_size+1); - apt_text_stream_init(&connection->rx_stream,connection->rx_buffer,connection->rx_buffer_size); - - if(apt_log_masking_get() != APT_LOG_MASKING_NONE) { - connection->verbose = FALSE; - mrcp_parser_verbose_set(connection->parser,TRUE); - mrcp_generator_verbose_set(connection->generator,TRUE); - } - - return connection; -} - -static mrcp_connection_t* mrcp_client_agent_connection_find(mrcp_connection_agent_t *agent, mrcp_control_descriptor_t *descriptor) -{ - apr_sockaddr_t *sockaddr; - mrcp_connection_t *connection; - - for(connection = APR_RING_FIRST(&agent->connection_list); - connection != APR_RING_SENTINEL(&agent->connection_list, mrcp_connection_t, link); - connection = APR_RING_NEXT(connection, link)) { - if(apr_sockaddr_info_get(&sockaddr,descriptor->ip.buf,APR_INET,descriptor->port,0,connection->pool) == APR_SUCCESS) { - if(apr_sockaddr_equal(sockaddr,connection->r_sockaddr) != 0 && - descriptor->port == connection->r_sockaddr->port) { - return connection; - } - } - } - - return NULL; -} - -static apt_bool_t mrcp_client_agent_connection_remove(mrcp_connection_agent_t *agent, mrcp_connection_t *connection) -{ - /* remove from the list */ - APR_RING_REMOVE(connection,link); - - if(connection->sock) { - apt_log(APT_LOG_MARK,APT_PRIO_INFO,"Close TCP/MRCPv2 Connection %s",connection->id); - apt_poller_task_descriptor_remove(agent->task,&connection->sock_pfd); - apr_socket_close(connection->sock); - connection->sock = NULL; - } - return TRUE; -} - -static apt_bool_t mrcp_client_agent_channel_add(mrcp_connection_agent_t *agent, mrcp_control_channel_t *channel, mrcp_control_descriptor_t *descriptor) -{ - if(agent->offer_new_connection == TRUE) { - descriptor->connection_type = MRCP_CONNECTION_TYPE_NEW; - } - else { - descriptor->connection_type = MRCP_CONNECTION_TYPE_EXISTING; - if(APR_RING_EMPTY(&agent->connection_list, mrcp_connection_t, link)) { - /* offer new connection if there is no established connection yet */ - descriptor->connection_type = MRCP_CONNECTION_TYPE_NEW; - } - } - /* send response */ - return mrcp_control_channel_add_respond(agent->vtable,channel,descriptor,TRUE); -} - -static apt_bool_t mrcp_client_agent_channel_modify(mrcp_connection_agent_t *agent, mrcp_control_channel_t *channel, mrcp_control_descriptor_t *descriptor) -{ - apt_bool_t status = TRUE; - if(descriptor->port) { - if(!channel->connection) { - mrcp_connection_t *connection = NULL; - apt_id_resource_generate(&descriptor->session_id,&descriptor->resource_name,'@',&channel->identifier,channel->pool); - /* no connection yet */ - if(descriptor->connection_type == MRCP_CONNECTION_TYPE_EXISTING) { - /* try to find existing connection */ - connection = mrcp_client_agent_connection_find(agent,descriptor); - if(!connection) { - apt_obj_log(APT_LOG_MARK,APT_PRIO_WARNING,channel->log_obj,"Found No Existing TCP/MRCPv2 Connection"); - } - } - if(!connection) { - /* create new connection */ - connection = mrcp_client_agent_connection_create(agent,descriptor); - if(!connection) { - apt_obj_log(APT_LOG_MARK,APT_PRIO_WARNING,channel->log_obj,"Failed to Establish TCP/MRCPv2 Connection"); - } - } - - if(connection) { - mrcp_connection_channel_add(connection,channel); - apt_obj_log(APT_LOG_MARK,APT_PRIO_INFO,channel->log_obj,"Add Control Channel <%s> %s [%d]", - channel->identifier.buf, - connection->id, - apr_hash_count(connection->channel_table)); - if(descriptor->connection_type == MRCP_CONNECTION_TYPE_NEW) { - /* set connection type to existing for the next offers / if any */ - descriptor->connection_type = MRCP_CONNECTION_TYPE_EXISTING; - } - } - else { - descriptor->port = 0; - status = FALSE; - } - } - } - /* send response */ - return mrcp_control_channel_modify_respond(agent->vtable,channel,descriptor,status); -} - -static apt_bool_t mrcp_client_agent_channel_remove(mrcp_connection_agent_t *agent, mrcp_control_channel_t *channel) -{ - if(channel->connection) { - mrcp_connection_t *connection = channel->connection; - mrcp_connection_channel_remove(connection,channel); - apt_obj_log(APT_LOG_MARK,APT_PRIO_INFO,channel->log_obj,"Remove Control Channel <%s> [%d]", - channel->identifier.buf, - apr_hash_count(connection->channel_table)); - if(!connection->access_count) { - mrcp_client_agent_connection_remove(agent,connection); - /* set connection to be destroyed on channel destroy */ - channel->connection = connection; - channel->removed = TRUE; - } - } - - /* send response */ - return mrcp_control_channel_remove_respond(agent->vtable,channel,TRUE); -} - -static apt_bool_t mrcp_client_agent_request_cancel(mrcp_connection_agent_t *agent, mrcp_control_channel_t *channel, mrcp_message_t *message) -{ - mrcp_message_t *response; - apt_obj_log(APT_LOG_MARK,APT_PRIO_WARNING,channel->log_obj,"Cancel MRCP Request <%s@%s> [%d]", - MRCP_MESSAGE_SIDRES(message), - message->start_line.request_id); - response = mrcp_response_create(message,message->pool); - response->start_line.status_code = MRCP_STATUS_CODE_METHOD_FAILED; - return mrcp_connection_message_receive(agent->vtable,channel,response); -} - -static apt_bool_t mrcp_client_agent_disconnect_raise(mrcp_connection_agent_t *agent, mrcp_connection_t *connection) -{ - mrcp_control_channel_t *channel; - void *val; - apr_hash_index_t *it = apr_hash_first(connection->pool,connection->channel_table); - /* walk through the list of channels and raise disconnect event for them */ - for(; it; it = apr_hash_next(it)) { - apr_hash_this(it,NULL,NULL,&val); - channel = val; - if(!channel) continue; - - if(channel->active_request) { - mrcp_client_agent_request_cancel(channel->agent,channel,channel->active_request); - channel->active_request = NULL; - if(channel->request_timer) { - apt_timer_kill(channel->request_timer); - } - } - else if(agent->vtable->on_disconnect){ - agent->vtable->on_disconnect(channel); - } - } - return TRUE; -} - -static apt_bool_t mrcp_client_agent_messsage_send(mrcp_connection_agent_t *agent, mrcp_control_channel_t *channel, mrcp_message_t *message) -{ - apt_bool_t status = FALSE; - mrcp_connection_t *connection = channel->connection; - apt_text_stream_t stream; - apt_message_status_e result; - - if(!connection || !connection->sock) { - apt_obj_log(APT_LOG_MARK,APT_PRIO_WARNING,channel->log_obj,"Null MRCPv2 Connection "APT_SIDRES_FMT,MRCP_MESSAGE_SIDRES(message)); - mrcp_client_agent_request_cancel(agent,channel,message); - return FALSE; - } - - do { - apt_text_stream_init(&stream,connection->tx_buffer,connection->tx_buffer_size); - result = mrcp_generator_run(connection->generator,message,&stream); - if(result != APT_MESSAGE_STATUS_INVALID) { - stream.text.length = stream.pos - stream.text.buf; - *stream.pos = '\0'; - - apt_obj_log(APT_LOG_MARK,APT_PRIO_INFO,channel->log_obj,"Send MRCPv2 Data %s [%"APR_SIZE_T_FMT" bytes]\n%.*s", - connection->id, - stream.text.length, - connection->verbose == TRUE ? stream.text.length : 0, - stream.text.buf); - - if(apr_socket_send(connection->sock,stream.text.buf,&stream.text.length) == APR_SUCCESS) { - status = TRUE; - } - else { - apt_obj_log(APT_LOG_MARK,APT_PRIO_WARNING,channel->log_obj,"Failed to Send MRCPv2 Data %s", - connection->id); - } - } - else { - apt_obj_log(APT_LOG_MARK,APT_PRIO_WARNING,channel->log_obj,"Failed to Generate MRCPv2 Data %s", - connection->id); - } - } - while(result == APT_MESSAGE_STATUS_INCOMPLETE); - - if(status == TRUE) { - channel->active_request = message; - if(channel->request_timer && agent->request_timeout) { - apt_timer_set(channel->request_timer,agent->request_timeout); - } - } - else { - mrcp_client_agent_request_cancel(agent,channel,message); - } - return status; -} - -static apt_bool_t mrcp_client_message_handler(mrcp_connection_t *connection, mrcp_message_t *message, apt_message_status_e status) -{ - if(status == APT_MESSAGE_STATUS_COMPLETE) { - /* message is completely parsed */ - mrcp_control_channel_t *channel; - apt_str_t identifier; - apt_id_resource_generate(&message->channel_id.session_id,&message->channel_id.resource_name,'@',&identifier,message->pool); - channel = mrcp_connection_channel_find(connection,&identifier); - if(channel) { - mrcp_connection_agent_t *agent = connection->agent; - if(message->start_line.message_type == MRCP_MESSAGE_TYPE_RESPONSE) { - if(!channel->active_request || - channel->active_request->start_line.request_id != message->start_line.request_id) { - apt_obj_log(APT_LOG_MARK,APT_PRIO_WARNING,channel->log_obj,"Unexpected MRCP Response "APT_SIDRES_FMT" [%d]", - MRCP_MESSAGE_SIDRES(message), - message->start_line.request_id); - return FALSE; - } - if(channel->request_timer) { - apt_timer_kill(channel->request_timer); - } - channel->active_request = NULL; - } - - mrcp_connection_message_receive(agent->vtable,channel,message); - } - else { - apt_log(APT_LOG_MARK,APT_PRIO_WARNING,"Failed to Find Channel "APT_SIDRES_FMT" in Connection %s [%d]", - MRCP_MESSAGE_SIDRES(message), - connection->id, - apr_hash_count(connection->channel_table)); - } - } - return TRUE; -} - -/* Receive MRCP message through TCP/MRCPv2 connection */ -static apt_bool_t mrcp_client_poller_signal_process(void *obj, const apr_pollfd_t *descriptor) -{ - mrcp_connection_agent_t *agent = obj; - mrcp_connection_t *connection = descriptor->client_data; - apr_status_t status; - apr_size_t offset; - apr_size_t length; - apt_text_stream_t *stream; - mrcp_message_t *message; - apt_message_status_e msg_status; - - if(!connection || !connection->sock) { - return FALSE; - } - stream = &connection->rx_stream; - - /* calculate offset remaining from the previous receive / if any */ - offset = stream->pos - stream->text.buf; - /* calculate available length */ - length = connection->rx_buffer_size - offset; - - status = apr_socket_recv(connection->sock,stream->pos,&length); - if(status == APR_EOF || length == 0) { - apt_log(APT_LOG_MARK,APT_PRIO_INFO,"TCP/MRCPv2 Peer Disconnected %s",connection->id); - apt_poller_task_descriptor_remove(agent->task,&connection->sock_pfd); - apr_socket_close(connection->sock); - connection->sock = NULL; - - mrcp_client_agent_disconnect_raise(agent,connection); - return TRUE; - } - - /* calculate actual length of the stream */ - stream->text.length = offset + length; - stream->pos[length] = '\0'; - apt_log(APT_LOG_MARK,APT_PRIO_INFO,"Receive MRCPv2 Data %s [%"APR_SIZE_T_FMT" bytes]\n%.*s", - connection->id, - length, - connection->verbose == TRUE ? length : 0, - stream->pos); - - /* reset pos */ - apt_text_stream_reset(stream); - - do { - msg_status = mrcp_parser_run(connection->parser,stream,&message); - if(mrcp_client_message_handler(connection,message,msg_status) == FALSE) { - return FALSE; - } - } - while(apt_text_is_eos(stream) == FALSE); - - /* scroll remaining stream */ - apt_text_stream_scroll(stream); - return TRUE; -} - -/* Process task message */ -static apt_bool_t mrcp_client_agent_msg_process(apt_task_t *task, apt_task_msg_t *task_msg) -{ - apt_poller_task_t *poller_task = apt_task_object_get(task); - mrcp_connection_agent_t *agent = apt_poller_task_object_get(poller_task); - connection_task_msg_t *msg = (connection_task_msg_t*) task_msg->data; - - switch(msg->type) { - case CONNECTION_TASK_MSG_ADD_CHANNEL: - mrcp_client_agent_channel_add(agent,msg->channel,msg->descriptor); - break; - case CONNECTION_TASK_MSG_MODIFY_CHANNEL: - mrcp_client_agent_channel_modify(agent,msg->channel,msg->descriptor); - break; - case CONNECTION_TASK_MSG_REMOVE_CHANNEL: - mrcp_client_agent_channel_remove(agent,msg->channel); - break; - case CONNECTION_TASK_MSG_SEND_MESSAGE: - mrcp_client_agent_messsage_send(agent,msg->channel,msg->message); - break; - } - - return TRUE; -} - -/* Timer callback */ -static void mrcp_client_timer_proc(apt_timer_t *timer, void *obj) -{ - mrcp_control_channel_t *channel = obj; - if(!channel) { - return; - } - - if(channel->request_timer == timer) { - if(channel->active_request) { - mrcp_client_agent_request_cancel(channel->agent,channel,channel->active_request); - channel->active_request = NULL; - } - } -} diff --git a/libs/unimrcp/libs/mrcpv2-transport/src/mrcp_connection.c b/libs/unimrcp/libs/mrcpv2-transport/src/mrcp_connection.c deleted file mode 100644 index bf9dc75d2c1..00000000000 --- a/libs/unimrcp/libs/mrcpv2-transport/src/mrcp_connection.c +++ /dev/null @@ -1,104 +0,0 @@ -/* - * Copyright 2008-2014 Arsen Chaloyan - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - * - * $Id: mrcp_connection.c 2170 2014-09-09 05:19:48Z achaloyan@gmail.com $ - */ - -#include "mrcp_connection.h" -#include "apt_pool.h" - -mrcp_connection_t* mrcp_connection_create(void) -{ - mrcp_connection_t *connection; - apr_pool_t *pool = apt_pool_create(); - if(!pool) { - return NULL; - } - - connection = apr_palloc(pool,sizeof(mrcp_connection_t)); - connection->pool = pool; - apt_string_reset(&connection->remote_ip); - connection->l_sockaddr = NULL; - connection->r_sockaddr = NULL; - connection->sock = NULL; - connection->id = NULL; - connection->verbose = TRUE; - connection->access_count = 0; - APR_RING_ELEM_INIT(connection,link); - connection->channel_table = apr_hash_make(pool); - connection->parser = NULL; - connection->generator = NULL; - connection->rx_buffer = NULL; - connection->rx_buffer_size = 0; - connection->tx_buffer = NULL; - connection->tx_buffer_size = 0; - - return connection; -} - -void mrcp_connection_destroy(mrcp_connection_t *connection) -{ - if(connection && connection->pool) { - apr_pool_destroy(connection->pool); - } -} - -apt_bool_t mrcp_connection_channel_add(mrcp_connection_t *connection, mrcp_control_channel_t *channel) -{ - if(!connection || !channel) { - return FALSE; - } - apr_hash_set(connection->channel_table,channel->identifier.buf,channel->identifier.length,channel); - channel->connection = connection; - connection->access_count++; - return TRUE; -} - -mrcp_control_channel_t* mrcp_connection_channel_find(const mrcp_connection_t *connection, const apt_str_t *identifier) -{ - if(!connection || !identifier) { - return NULL; - } - return apr_hash_get(connection->channel_table,identifier->buf,identifier->length); -} - -apt_bool_t mrcp_connection_channel_remove(mrcp_connection_t *connection, mrcp_control_channel_t *channel) -{ - if(!connection || !channel) { - return FALSE; - } - apr_hash_set(connection->channel_table,channel->identifier.buf,channel->identifier.length,NULL); - channel->connection = NULL; - connection->access_count--; - return TRUE; -} - -apt_bool_t mrcp_connection_disconnect_raise(mrcp_connection_t *connection, const mrcp_connection_event_vtable_t *vtable) -{ - if(vtable && vtable->on_disconnect) { - mrcp_control_channel_t *channel; - void *val; - apr_hash_index_t *it = apr_hash_first(connection->pool,connection->channel_table); - /* walk through the list of channels and raise disconnect event for them */ - for(; it; it = apr_hash_next(it)) { - apr_hash_this(it,NULL,NULL,&val); - channel = val; - if(channel) { - vtable->on_disconnect(channel); - } - } - } - return TRUE; -} diff --git a/libs/unimrcp/libs/mrcpv2-transport/src/mrcp_control_descriptor.c b/libs/unimrcp/libs/mrcpv2-transport/src/mrcp_control_descriptor.c deleted file mode 100644 index 2339e8fb565..00000000000 --- a/libs/unimrcp/libs/mrcpv2-transport/src/mrcp_control_descriptor.c +++ /dev/null @@ -1,147 +0,0 @@ -/* - * Copyright 2008-2014 Arsen Chaloyan - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - * - * $Id: mrcp_control_descriptor.c 2136 2014-07-04 06:33:36Z achaloyan@gmail.com $ - */ - -#include "apt_string_table.h" -#include "mrcp_control_descriptor.h" - -/** String table of mrcp proto types (mrcp_proto_type_e) */ -static const apt_str_table_item_t mrcp_proto_type_table[] = { - {{"TCP/MRCPv2", 10},4}, - {{"TCP/TLS/MRCPv2",14},4} -}; - -/** String table of mrcp attributes (mrcp_attrib_e) */ -static const apt_str_table_item_t mrcp_attrib_table[] = { - {{"setup", 5},0}, - {{"connection",10},1}, - {{"resource", 8},0}, - {{"channel", 7},1}, - {{"cmid", 4},1} -}; - -/** String table of mrcp setup attribute values (mrcp_setup_type_e) */ -static const apt_str_table_item_t mrcp_setup_value_table[] = { - {{"active", 6},0}, - {{"passive", 7},0} -}; - -/** String table of mrcp connection attribute values (mrcp_connection_type_e) */ -static const apt_str_table_item_t mrcp_connection_value_table[] = { - {{"new", 3},0}, - {{"existing", 8},0} -}; - - -MRCP_DECLARE(const apt_str_t*) mrcp_proto_get(mrcp_proto_type_e proto) -{ - return apt_string_table_str_get(mrcp_proto_type_table,MRCP_PROTO_COUNT,proto); -} - -MRCP_DECLARE(mrcp_proto_type_e) mrcp_proto_find(const apt_str_t *attrib) -{ - return apt_string_table_id_find(mrcp_proto_type_table,MRCP_PROTO_COUNT,attrib); -} - -MRCP_DECLARE(const apt_str_t*) mrcp_attrib_str_get(mrcp_attrib_e attrib_id) -{ - return apt_string_table_str_get(mrcp_attrib_table,MRCP_ATTRIB_COUNT,attrib_id); -} - -MRCP_DECLARE(mrcp_attrib_e) mrcp_attrib_id_find(const apt_str_t *attrib) -{ - return apt_string_table_id_find(mrcp_attrib_table,MRCP_ATTRIB_COUNT,attrib); -} - -MRCP_DECLARE(const apt_str_t*) mrcp_setup_type_get(mrcp_setup_type_e setup_type) -{ - return apt_string_table_str_get(mrcp_setup_value_table,MRCP_SETUP_TYPE_COUNT,setup_type); -} - -MRCP_DECLARE(mrcp_setup_type_e) mrcp_setup_type_find(const apt_str_t *attrib) -{ - return apt_string_table_id_find(mrcp_setup_value_table,MRCP_SETUP_TYPE_COUNT,attrib); -} - -MRCP_DECLARE(const apt_str_t*) mrcp_connection_type_get(mrcp_connection_type_e connection_type) -{ - return apt_string_table_str_get(mrcp_connection_value_table,MRCP_CONNECTION_TYPE_COUNT,connection_type); -} - -MRCP_DECLARE(mrcp_connection_type_e) mrcp_connection_type_find(const apt_str_t *attrib) -{ - return apt_string_table_id_find(mrcp_connection_value_table,MRCP_CONNECTION_TYPE_COUNT,attrib); -} - -/** Create MRCP control descriptor */ -MRCP_DECLARE(mrcp_control_descriptor_t*) mrcp_control_descriptor_create(apr_pool_t *pool) -{ - mrcp_control_descriptor_t *descriptor; - descriptor = apr_palloc(pool,sizeof(mrcp_control_descriptor_t)); - - apt_string_reset(&descriptor->ip); - descriptor->port = 0; - descriptor->proto = MRCP_PROTO_UNKNOWN; - descriptor->setup_type = MRCP_SETUP_TYPE_UNKNOWN; - descriptor->connection_type = MRCP_CONNECTION_TYPE_UNKNOWN; - apt_string_reset(&descriptor->resource_name); - apt_string_reset(&descriptor->session_id); - descriptor->cmid_arr = apr_array_make(pool,1,sizeof(apr_size_t)); - descriptor->id = 0; - return descriptor; -} - -/** Create MRCP control offer */ -MRCP_DECLARE(mrcp_control_descriptor_t*) mrcp_control_offer_create(apr_pool_t *pool) -{ - mrcp_control_descriptor_t *offer = mrcp_control_descriptor_create(pool); - offer->proto = MRCP_PROTO_TCP; - offer->port = TCP_DISCARD_PORT; - offer->setup_type = MRCP_SETUP_TYPE_ACTIVE; - offer->connection_type = MRCP_CONNECTION_TYPE_EXISTING; - return offer; -} - -/** Create MRCP control answer */ -MRCP_DECLARE(mrcp_control_descriptor_t*) mrcp_control_answer_create(mrcp_control_descriptor_t *offer, apr_pool_t *pool) -{ - mrcp_control_descriptor_t *answer = mrcp_control_descriptor_create(pool); - if(offer) { - *answer = *offer; - answer->cmid_arr = apr_array_copy(pool,offer->cmid_arr); - } - answer->setup_type = MRCP_SETUP_TYPE_PASSIVE; - return answer; -} - -/** Add cmid to cmid_arr */ -MRCP_DECLARE(void) mrcp_cmid_add(apr_array_header_t *cmid_arr, apr_size_t cmid) -{ - APR_ARRAY_PUSH(cmid_arr, apr_size_t) = cmid; -} - -/** Find cmid in cmid_arr */ -MRCP_DECLARE(apt_bool_t) mrcp_cmid_find(const apr_array_header_t *cmid_arr, apr_size_t cmid) -{ - int i; - for(i=0; inelts; i++) { - if(APR_ARRAY_IDX(cmid_arr,i,apr_size_t) == cmid) { - return TRUE; - } - } - return FALSE; -} diff --git a/libs/unimrcp/libs/mrcpv2-transport/src/mrcp_server_connection.c b/libs/unimrcp/libs/mrcpv2-transport/src/mrcp_server_connection.c deleted file mode 100644 index 3a77ff23d42..00000000000 --- a/libs/unimrcp/libs/mrcpv2-transport/src/mrcp_server_connection.c +++ /dev/null @@ -1,715 +0,0 @@ -/* - * Copyright 2008-2014 Arsen Chaloyan - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - * - * $Id: mrcp_server_connection.c 2249 2014-11-19 05:26:24Z achaloyan@gmail.com $ - */ - -#include "mrcp_connection.h" -#include "mrcp_server_connection.h" -#include "mrcp_control_descriptor.h" -#include "mrcp_resource_factory.h" -#include "mrcp_message.h" -#include "apt_text_stream.h" -#include "apt_poller_task.h" -#include "apt_pool.h" -#include "apt_log.h" - - -struct mrcp_connection_agent_t { - apr_pool_t *pool; - apt_poller_task_t *task; - const mrcp_resource_factory_t *resource_factory; - - /** List (ring) of MRCP connections */ - APR_RING_HEAD(mrcp_connection_head_t, mrcp_connection_t) connection_list; - /** Table of pending control channels */ - apr_hash_t *pending_channel_table; - - apt_bool_t force_new_connection; - apr_size_t tx_buffer_size; - apr_size_t rx_buffer_size; - - /* Listening socket */ - apr_sockaddr_t *sockaddr; - apr_socket_t *listen_sock; - apr_pollfd_t listen_sock_pfd; - - void *obj; - const mrcp_connection_event_vtable_t *vtable; -}; - -typedef enum { - CONNECTION_TASK_MSG_ADD_CHANNEL, - CONNECTION_TASK_MSG_MODIFY_CHANNEL, - CONNECTION_TASK_MSG_REMOVE_CHANNEL, - CONNECTION_TASK_MSG_SEND_MESSAGE -} connection_task_msg_type_e; - -typedef struct connection_task_msg_t connection_task_msg_t; -struct connection_task_msg_t { - connection_task_msg_type_e type; - mrcp_connection_agent_t *agent; - mrcp_control_channel_t *channel; - mrcp_control_descriptor_t *descriptor; - mrcp_message_t *message; -}; - -static apt_bool_t mrcp_server_agent_on_destroy(apt_task_t *task); -static apt_bool_t mrcp_server_agent_msg_process(apt_task_t *task, apt_task_msg_t *task_msg); -static apt_bool_t mrcp_server_poller_signal_process(void *obj, const apr_pollfd_t *descriptor); - -static apt_bool_t mrcp_server_agent_listening_socket_create(mrcp_connection_agent_t *agent); -static void mrcp_server_agent_listening_socket_destroy(mrcp_connection_agent_t *agent); - - -/** Create connection agent */ -MRCP_DECLARE(mrcp_connection_agent_t*) mrcp_server_connection_agent_create( - const char *id, - const char *listen_ip, - apr_port_t listen_port, - apr_size_t max_connection_count, - apt_bool_t force_new_connection, - apr_pool_t *pool) -{ - apt_task_t *task; - apt_task_vtable_t *vtable; - apt_task_msg_pool_t *msg_pool; - mrcp_connection_agent_t *agent; - - if(!listen_ip) { - return NULL; - } - - apt_log(APT_LOG_MARK,APT_PRIO_NOTICE,"Create MRCPv2 Agent [%s] %s:%hu [%"APR_SIZE_T_FMT"]", - id,listen_ip,listen_port,max_connection_count); - agent = apr_palloc(pool,sizeof(mrcp_connection_agent_t)); - agent->pool = pool; - agent->sockaddr = NULL; - agent->listen_sock = NULL; - agent->force_new_connection = force_new_connection; - agent->rx_buffer_size = MRCP_STREAM_BUFFER_SIZE; - agent->tx_buffer_size = MRCP_STREAM_BUFFER_SIZE; - - apr_sockaddr_info_get(&agent->sockaddr,listen_ip,APR_INET,listen_port,0,pool); - if(!agent->sockaddr) { - return NULL; - } - - msg_pool = apt_task_msg_pool_create_dynamic(sizeof(connection_task_msg_t),pool); - - agent->task = apt_poller_task_create( - max_connection_count + 1, - mrcp_server_poller_signal_process, - agent, - msg_pool, - pool); - if(!agent->task) { - return NULL; - } - - task = apt_poller_task_base_get(agent->task); - if(task) { - apt_task_name_set(task,id); - } - - vtable = apt_poller_task_vtable_get(agent->task); - if(vtable) { - vtable->destroy = mrcp_server_agent_on_destroy; - vtable->process_msg = mrcp_server_agent_msg_process; - } - - APR_RING_INIT(&agent->connection_list, mrcp_connection_t, link); - agent->pending_channel_table = apr_hash_make(pool); - - if(mrcp_server_agent_listening_socket_create(agent) != TRUE) { - apt_log(APT_LOG_MARK,APT_PRIO_WARNING,"Failed to Create Listening Socket [%s] %s:%hu", - id, - listen_ip, - listen_port); - } - return agent; -} - -static apt_bool_t mrcp_server_agent_on_destroy(apt_task_t *task) -{ - apt_poller_task_t *poller_task = apt_task_object_get(task); - mrcp_connection_agent_t *agent = apt_poller_task_object_get(poller_task); - - mrcp_server_agent_listening_socket_destroy(agent); - apt_poller_task_cleanup(poller_task); - return TRUE; -} - -/** Destroy connection agent. */ -MRCP_DECLARE(apt_bool_t) mrcp_server_connection_agent_destroy(mrcp_connection_agent_t *agent) -{ - apt_log(APT_LOG_MARK,APT_PRIO_NOTICE,"Destroy MRCPv2 Agent [%s]", - mrcp_server_connection_agent_id_get(agent)); - return apt_poller_task_destroy(agent->task); -} - -/** Start connection agent. */ -MRCP_DECLARE(apt_bool_t) mrcp_server_connection_agent_start(mrcp_connection_agent_t *agent) -{ - return apt_poller_task_start(agent->task); -} - -/** Terminate connection agent. */ -MRCP_DECLARE(apt_bool_t) mrcp_server_connection_agent_terminate(mrcp_connection_agent_t *agent) -{ - return apt_poller_task_terminate(agent->task); -} - -/** Set connection event handler. */ -MRCP_DECLARE(void) mrcp_server_connection_agent_handler_set( - mrcp_connection_agent_t *agent, - void *obj, - const mrcp_connection_event_vtable_t *vtable) -{ - agent->obj = obj; - agent->vtable = vtable; -} - -/** Set MRCP resource factory */ -MRCP_DECLARE(void) mrcp_server_connection_resource_factory_set( - mrcp_connection_agent_t *agent, - const mrcp_resource_factory_t *resource_factroy) -{ - agent->resource_factory = resource_factroy; -} - -/** Set rx buffer size */ -MRCP_DECLARE(void) mrcp_server_connection_rx_size_set( - mrcp_connection_agent_t *agent, - apr_size_t size) -{ - if(size < MRCP_STREAM_BUFFER_SIZE) { - size = MRCP_STREAM_BUFFER_SIZE; - } - agent->rx_buffer_size = size; -} - -/** Set tx buffer size */ -MRCP_DECLARE(void) mrcp_server_connection_tx_size_set( - mrcp_connection_agent_t *agent, - apr_size_t size) -{ - if(size < MRCP_STREAM_BUFFER_SIZE) { - size = MRCP_STREAM_BUFFER_SIZE; - } - agent->tx_buffer_size = size; -} - -/** Get task */ -MRCP_DECLARE(apt_task_t*) mrcp_server_connection_agent_task_get(const mrcp_connection_agent_t *agent) -{ - return apt_poller_task_base_get(agent->task); -} - -/** Get external object */ -MRCP_DECLARE(void*) mrcp_server_connection_agent_object_get(const mrcp_connection_agent_t *agent) -{ - return agent->obj; -} - -/** Get string identifier */ -MRCP_DECLARE(const char*) mrcp_server_connection_agent_id_get(const mrcp_connection_agent_t *agent) -{ - apt_task_t *task = apt_poller_task_base_get(agent->task); - return apt_task_name_get(task); -} - - -/** Create MRCPv2 control channel */ -MRCP_DECLARE(mrcp_control_channel_t*) mrcp_server_control_channel_create(mrcp_connection_agent_t *agent, void *obj, apr_pool_t *pool) -{ - mrcp_control_channel_t *channel = apr_palloc(pool,sizeof(mrcp_control_channel_t)); - channel->agent = agent; - channel->connection = NULL; - channel->active_request = NULL; - channel->request_timer = NULL; - channel->removed = FALSE; - channel->obj = obj; - channel->log_obj = NULL; - channel->pool = pool; - return channel; -} - -/** Destroy MRCPv2 control channel */ -MRCP_DECLARE(apt_bool_t) mrcp_server_control_channel_destroy(mrcp_control_channel_t *channel) -{ - if(channel && channel->connection && channel->removed == TRUE) { - mrcp_connection_t *connection = channel->connection; - channel->connection = NULL; - apt_log(APT_LOG_MARK,APT_PRIO_NOTICE,"Destroy TCP/MRCPv2 Connection %s",connection->id); - mrcp_connection_destroy(connection); - } - return TRUE; -} - -/** Signal task message */ -static apt_bool_t mrcp_server_control_message_signal( - connection_task_msg_type_e type, - mrcp_connection_agent_t *agent, - mrcp_control_channel_t *channel, - mrcp_control_descriptor_t *descriptor, - mrcp_message_t *message) -{ - apt_task_t *task = apt_poller_task_base_get(agent->task); - apt_task_msg_t *task_msg = apt_task_msg_get(task); - if(task_msg) { - connection_task_msg_t *msg = (connection_task_msg_t*)task_msg->data; - msg->type = type; - msg->agent = agent; - msg->channel = channel; - msg->descriptor = descriptor; - msg->message = message; - apt_task_msg_signal(task,task_msg); - } - return TRUE; -} - -/** Add MRCPv2 control channel */ -MRCP_DECLARE(apt_bool_t) mrcp_server_control_channel_add(mrcp_control_channel_t *channel, mrcp_control_descriptor_t *descriptor) -{ - return mrcp_server_control_message_signal(CONNECTION_TASK_MSG_ADD_CHANNEL,channel->agent,channel,descriptor,NULL); -} - -/** Modify MRCPv2 control channel */ -MRCP_DECLARE(apt_bool_t) mrcp_server_control_channel_modify(mrcp_control_channel_t *channel, mrcp_control_descriptor_t *descriptor) -{ - return mrcp_server_control_message_signal(CONNECTION_TASK_MSG_MODIFY_CHANNEL,channel->agent,channel,descriptor,NULL); -} - -/** Remove MRCPv2 control channel */ -MRCP_DECLARE(apt_bool_t) mrcp_server_control_channel_remove(mrcp_control_channel_t *channel) -{ - return mrcp_server_control_message_signal(CONNECTION_TASK_MSG_REMOVE_CHANNEL,channel->agent,channel,NULL,NULL); -} - -/** Send MRCPv2 message */ -MRCP_DECLARE(apt_bool_t) mrcp_server_control_message_send(mrcp_control_channel_t *channel, mrcp_message_t *message) -{ - return mrcp_server_control_message_signal(CONNECTION_TASK_MSG_SEND_MESSAGE,channel->agent,channel,NULL,message); -} - -/** Create listening socket and add it to pollset */ -static apt_bool_t mrcp_server_agent_listening_socket_create(mrcp_connection_agent_t *agent) -{ - apr_status_t status; - if(!agent->sockaddr) { - return FALSE; - } - - /* create listening socket */ - status = apr_socket_create(&agent->listen_sock, agent->sockaddr->family, SOCK_STREAM, APR_PROTO_TCP, agent->pool); - if(status != APR_SUCCESS) { - return FALSE; - } - - apr_socket_opt_set(agent->listen_sock, APR_SO_NONBLOCK, 0); - apr_socket_timeout_set(agent->listen_sock, -1); - apr_socket_opt_set(agent->listen_sock, APR_SO_REUSEADDR, 1); - - status = apr_socket_bind(agent->listen_sock, agent->sockaddr); - if(status != APR_SUCCESS) { - apr_socket_close(agent->listen_sock); - agent->listen_sock = NULL; - return FALSE; - } - status = apr_socket_listen(agent->listen_sock, SOMAXCONN); - if(status != APR_SUCCESS) { - apr_socket_close(agent->listen_sock); - agent->listen_sock = NULL; - return FALSE; - } - - /* add listening socket to pollset */ - memset(&agent->listen_sock_pfd,0,sizeof(apr_pollfd_t)); - agent->listen_sock_pfd.desc_type = APR_POLL_SOCKET; - agent->listen_sock_pfd.reqevents = APR_POLLIN; - agent->listen_sock_pfd.desc.s = agent->listen_sock; - agent->listen_sock_pfd.client_data = agent->listen_sock; - if(apt_poller_task_descriptor_add(agent->task, &agent->listen_sock_pfd) != TRUE) { - apt_log(APT_LOG_MARK,APT_PRIO_WARNING,"Failed to Add Listening Socket to Pollset [%s]", - apt_task_name_get(apt_poller_task_base_get(agent->task))); - apr_socket_close(agent->listen_sock); - agent->listen_sock = NULL; - return FALSE; - } - - return TRUE; -} - -/** Remove from pollset and destroy listening socket */ -static void mrcp_server_agent_listening_socket_destroy(mrcp_connection_agent_t *agent) -{ - if(agent->listen_sock) { - apt_poller_task_descriptor_remove(agent->task,&agent->listen_sock_pfd); - apr_socket_close(agent->listen_sock); - agent->listen_sock = NULL; - } -} - -static mrcp_control_channel_t* mrcp_connection_channel_associate(mrcp_connection_agent_t *agent, mrcp_connection_t *connection, const mrcp_message_t *message) -{ - apt_str_t identifier; - mrcp_control_channel_t *channel; - if(!connection || !message) { - return NULL; - } - apt_id_resource_generate(&message->channel_id.session_id,&message->channel_id.resource_name,'@',&identifier,connection->pool); - channel = mrcp_connection_channel_find(connection,&identifier); - if(!channel) { - channel = apr_hash_get(agent->pending_channel_table,identifier.buf,identifier.length); - if(channel) { - apr_hash_set(agent->pending_channel_table,identifier.buf,identifier.length,NULL); - mrcp_connection_channel_add(connection,channel); - apt_log(APT_LOG_MARK,APT_PRIO_INFO,"Assign Control Channel <%s> to Connection %s [%d] -> [%d]", - channel->identifier.buf, - connection->id, - apr_hash_count(agent->pending_channel_table), - apr_hash_count(connection->channel_table)); - } - } - return channel; -} - -static mrcp_connection_t* mrcp_connection_find(mrcp_connection_agent_t *agent, const apt_str_t *remote_ip) -{ - mrcp_connection_t *connection; - if(!agent || !remote_ip) { - return NULL; - } - - for(connection = APR_RING_FIRST(&agent->connection_list); - connection != APR_RING_SENTINEL(&agent->connection_list, mrcp_connection_t, link); - connection = APR_RING_NEXT(connection, link)) { - if(apt_string_compare(&connection->remote_ip,remote_ip) == TRUE) { - return connection; - } - } - - return NULL; -} - -static apt_bool_t mrcp_connection_remove(mrcp_connection_agent_t *agent, mrcp_connection_t *connection) -{ - APR_RING_REMOVE(connection,link); - return TRUE; -} - -static apt_bool_t mrcp_server_agent_connection_accept(mrcp_connection_agent_t *agent) -{ - char *local_ip = NULL; - char *remote_ip = NULL; - - mrcp_connection_t *connection = mrcp_connection_create(); - - if(apr_socket_accept(&connection->sock,agent->listen_sock,connection->pool) != APR_SUCCESS) { - apt_log(APT_LOG_MARK,APT_PRIO_WARNING,"Failed to Accept Connection"); - mrcp_connection_destroy(connection); - return FALSE; - } - - if(apr_socket_addr_get(&connection->r_sockaddr,APR_REMOTE,connection->sock) != APR_SUCCESS || - apr_socket_addr_get(&connection->l_sockaddr,APR_LOCAL,connection->sock) != APR_SUCCESS) { - apt_log(APT_LOG_MARK,APT_PRIO_WARNING,"Failed to Get Socket Address"); - apr_socket_close(connection->sock); - mrcp_connection_destroy(connection); - return FALSE; - } - - apr_sockaddr_ip_get(&local_ip,connection->l_sockaddr); - apr_sockaddr_ip_get(&remote_ip,connection->r_sockaddr); - apt_string_set(&connection->remote_ip,remote_ip); - connection->id = apr_psprintf(connection->pool,"%s:%hu <-> %s:%hu", - local_ip,connection->l_sockaddr->port, - remote_ip,connection->r_sockaddr->port); - - if(apr_hash_count(agent->pending_channel_table) == 0) { - apt_log(APT_LOG_MARK,APT_PRIO_NOTICE,"Reject Unexpected TCP/MRCPv2 Connection %s",connection->id); - apr_socket_close(connection->sock); - mrcp_connection_destroy(connection); - return FALSE; - } - - memset(&connection->sock_pfd,0,sizeof(apr_pollfd_t)); - connection->sock_pfd.desc_type = APR_POLL_SOCKET; - connection->sock_pfd.reqevents = APR_POLLIN; - connection->sock_pfd.desc.s = connection->sock; - connection->sock_pfd.client_data = connection; - if(apt_poller_task_descriptor_add(agent->task, &connection->sock_pfd) != TRUE) { - apt_log(APT_LOG_MARK,APT_PRIO_WARNING,"Failed to Add to Pollset %s",connection->id); - apr_socket_close(connection->sock); - mrcp_connection_destroy(connection); - return FALSE; - } - - apt_log(APT_LOG_MARK,APT_PRIO_NOTICE,"Accepted TCP/MRCPv2 Connection %s",connection->id); - connection->agent = agent; - APR_RING_INSERT_TAIL(&agent->connection_list,connection,mrcp_connection_t,link); - - connection->parser = mrcp_parser_create(agent->resource_factory,connection->pool); - connection->generator = mrcp_generator_create(agent->resource_factory,connection->pool); - - connection->tx_buffer_size = agent->tx_buffer_size; - connection->tx_buffer = apr_palloc(connection->pool,connection->tx_buffer_size+1); - - connection->rx_buffer_size = agent->rx_buffer_size; - connection->rx_buffer = apr_palloc(connection->pool,connection->rx_buffer_size+1); - apt_text_stream_init(&connection->rx_stream,connection->rx_buffer,connection->rx_buffer_size); - - if(apt_log_masking_get() != APT_LOG_MASKING_NONE) { - connection->verbose = FALSE; - mrcp_parser_verbose_set(connection->parser,TRUE); - mrcp_generator_verbose_set(connection->generator,TRUE); - } - return TRUE; -} - -static apt_bool_t mrcp_server_agent_connection_close(mrcp_connection_agent_t *agent, mrcp_connection_t *connection) -{ - apt_log(APT_LOG_MARK,APT_PRIO_INFO,"TCP/MRCPv2 Peer Disconnected %s",connection->id); - apt_poller_task_descriptor_remove(agent->task,&connection->sock_pfd); - apr_socket_close(connection->sock); - connection->sock = NULL; - if(!connection->access_count) { - mrcp_connection_remove(agent,connection); - apt_log(APT_LOG_MARK,APT_PRIO_NOTICE,"Destroy TCP/MRCPv2 Connection %s",connection->id); - mrcp_connection_destroy(connection); - } - return TRUE; -} - -static apt_bool_t mrcp_server_agent_channel_add(mrcp_connection_agent_t *agent, mrcp_control_channel_t *channel, mrcp_control_descriptor_t *offer) -{ - mrcp_control_descriptor_t *answer = mrcp_control_answer_create(offer,channel->pool); - apt_id_resource_generate(&offer->session_id,&offer->resource_name,'@',&channel->identifier,channel->pool); - if(offer->port) { - answer->port = agent->sockaddr->port; - } - if(offer->connection_type == MRCP_CONNECTION_TYPE_EXISTING) { - if(agent->force_new_connection == TRUE) { - /* force client to establish new connection */ - answer->connection_type = MRCP_CONNECTION_TYPE_NEW; - } - else { - mrcp_connection_t *connection = NULL; - /* try to find any existing connection */ - connection = mrcp_connection_find(agent,&offer->ip); - if(!connection) { - /* no existing conection found, force the new one */ - answer->connection_type = MRCP_CONNECTION_TYPE_NEW; - } - } - } - - apr_hash_set(agent->pending_channel_table,channel->identifier.buf,channel->identifier.length,channel); - apt_log(APT_LOG_MARK,APT_PRIO_INFO,"Add Pending Control Channel <%s> [%d]", - channel->identifier.buf, - apr_hash_count(agent->pending_channel_table)); - /* send response */ - return mrcp_control_channel_add_respond(agent->vtable,channel,answer,TRUE); -} - -static apt_bool_t mrcp_server_agent_channel_modify(mrcp_connection_agent_t *agent, mrcp_control_channel_t *channel, mrcp_control_descriptor_t *offer) -{ - mrcp_control_descriptor_t *answer = mrcp_control_answer_create(offer,channel->pool); - if(offer->port) { - answer->port = agent->sockaddr->port; - } - apt_log(APT_LOG_MARK,APT_PRIO_INFO,"Modify Control Channel <%s>",channel->identifier.buf); - /* send response */ - return mrcp_control_channel_modify_respond(agent->vtable,channel,answer,TRUE); -} - -static apt_bool_t mrcp_server_agent_channel_remove(mrcp_connection_agent_t *agent, mrcp_control_channel_t *channel) -{ - mrcp_connection_t *connection = channel->connection; - if(connection) { - mrcp_connection_channel_remove(connection,channel); - apt_log(APT_LOG_MARK,APT_PRIO_INFO,"Remove Control Channel <%s> [%d]", - channel->identifier.buf, - apr_hash_count(connection->channel_table)); - if(!connection->access_count) { - if(!connection->sock) { - mrcp_connection_remove(agent,connection); - /* set connection to be destroyed on channel destroy */ - apt_log(APT_LOG_MARK,APT_PRIO_DEBUG,"Mark Connection for Removal %s",connection->id); - channel->connection = connection; - channel->removed = TRUE; - } - } - } - else { - apr_hash_set(agent->pending_channel_table,channel->identifier.buf,channel->identifier.length,NULL); - apt_log(APT_LOG_MARK,APT_PRIO_INFO,"Remove Pending Control Channel <%s> [%d]", - channel->identifier.buf, - apr_hash_count(agent->pending_channel_table)); - } - /* send response */ - return mrcp_control_channel_remove_respond(agent->vtable,channel,TRUE); -} - -static apt_bool_t mrcp_server_agent_messsage_send(mrcp_connection_agent_t *agent, mrcp_connection_t *connection, mrcp_message_t *message) -{ - apt_bool_t status = FALSE; - apt_text_stream_t stream; - apt_message_status_e result; - if(!connection || !connection->sock) { - apt_log(APT_LOG_MARK,APT_PRIO_WARNING,"Null MRCPv2 Connection "APT_SIDRES_FMT,MRCP_MESSAGE_SIDRES(message)); - return FALSE; - } - - do { - apt_text_stream_init(&stream,connection->tx_buffer,connection->tx_buffer_size); - result = mrcp_generator_run(connection->generator,message,&stream); - if(result != APT_MESSAGE_STATUS_INVALID) { - stream.text.length = stream.pos - stream.text.buf; - *stream.pos = '\0'; - - apt_log(APT_LOG_MARK,APT_PRIO_INFO,"Send MRCPv2 Data %s [%"APR_SIZE_T_FMT" bytes]\n%.*s", - connection->id, - stream.text.length, - connection->verbose == TRUE ? stream.text.length : 0, - stream.text.buf); - - if(apr_socket_send(connection->sock,stream.text.buf,&stream.text.length) == APR_SUCCESS) { - status = TRUE; - } - else { - apt_log(APT_LOG_MARK,APT_PRIO_WARNING,"Failed to Send MRCPv2 Data"); - } - } - else { - apt_log(APT_LOG_MARK,APT_PRIO_WARNING,"Failed to Generate MRCPv2 Data"); - } - } - while(result == APT_MESSAGE_STATUS_INCOMPLETE); - - return status; -} - -static apt_bool_t mrcp_server_message_handler(mrcp_connection_t *connection, mrcp_message_t *message, apt_message_status_e status) -{ - mrcp_connection_agent_t *agent = connection->agent; - if(status == APT_MESSAGE_STATUS_COMPLETE) { - /* message is completely parsed */ - mrcp_control_channel_t *channel = mrcp_connection_channel_associate(agent,connection,message); - if(channel) { - mrcp_connection_message_receive(agent->vtable,channel,message); - } - else { - apt_log(APT_LOG_MARK,APT_PRIO_WARNING,"Failed to Find Channel "APT_SIDRES_FMT" in Connection %s", - MRCP_MESSAGE_SIDRES(message), - connection->id); - } - } - else if(status == APT_MESSAGE_STATUS_INVALID) { - /* error case */ - apt_log(APT_LOG_MARK,APT_PRIO_WARNING,"Failed to Parse MRCPv2 Data"); - if(message && message->resource) { - mrcp_message_t *response; - response = mrcp_response_create(message,message->pool); - response->start_line.status_code = MRCP_STATUS_CODE_UNRECOGNIZED_MESSAGE; - if(mrcp_server_agent_messsage_send(agent,connection,response) == FALSE) { - apt_log(APT_LOG_MARK,APT_PRIO_WARNING,"Failed to Send MRCPv2 Response"); - } - } - } - return TRUE; -} - -/* Receive MRCP message through TCP/MRCPv2 connection */ -static apt_bool_t mrcp_server_poller_signal_process(void *obj, const apr_pollfd_t *descriptor) -{ - mrcp_connection_agent_t *agent = obj; - mrcp_connection_t *connection = descriptor->client_data; - apr_status_t status; - apr_size_t offset; - apr_size_t length; - apt_text_stream_t *stream; - mrcp_message_t *message; - apt_message_status_e msg_status; - - if(descriptor->desc.s == agent->listen_sock) { - return mrcp_server_agent_connection_accept(agent); - } - - if(!connection || !connection->sock) { - return FALSE; - } - stream = &connection->rx_stream; - - /* calculate offset remaining from the previous receive / if any */ - offset = stream->pos - stream->text.buf; - /* calculate available length */ - length = connection->rx_buffer_size - offset; - - status = apr_socket_recv(connection->sock,stream->pos,&length); - if(status == APR_EOF || length == 0) { - return mrcp_server_agent_connection_close(agent,connection); - } - - /* calculate actual length of the stream */ - stream->text.length = offset + length; - stream->pos[length] = '\0'; - - apt_log(APT_LOG_MARK,APT_PRIO_INFO,"Receive MRCPv2 Data %s [%"APR_SIZE_T_FMT" bytes]\n%.*s", - connection->id, - length, - connection->verbose == TRUE ? length : 0, - stream->pos); - - /* reset pos */ - apt_text_stream_reset(stream); - - do { - msg_status = mrcp_parser_run(connection->parser,stream,&message); - if(mrcp_server_message_handler(connection,message,msg_status) == FALSE) { - return FALSE; - } - } - while(apt_text_is_eos(stream) == FALSE); - - /* scroll remaining stream */ - apt_text_stream_scroll(stream); - return TRUE; -} - -/* Process task message */ -static apt_bool_t mrcp_server_agent_msg_process(apt_task_t *task, apt_task_msg_t *task_msg) -{ - apt_poller_task_t *poller_task = apt_task_object_get(task); - mrcp_connection_agent_t *agent = apt_poller_task_object_get(poller_task); - connection_task_msg_t *msg = (connection_task_msg_t*) task_msg->data; - switch(msg->type) { - case CONNECTION_TASK_MSG_ADD_CHANNEL: - mrcp_server_agent_channel_add(agent,msg->channel,msg->descriptor); - break; - case CONNECTION_TASK_MSG_MODIFY_CHANNEL: - mrcp_server_agent_channel_modify(agent,msg->channel,msg->descriptor); - break; - case CONNECTION_TASK_MSG_REMOVE_CHANNEL: - mrcp_server_agent_channel_remove(agent,msg->channel); - break; - case CONNECTION_TASK_MSG_SEND_MESSAGE: - mrcp_server_agent_messsage_send(agent,msg->channel->connection,msg->message); - break; - } - - return TRUE; -} diff --git a/libs/unimrcp/libs/uni-rtsp/Makefile.am b/libs/unimrcp/libs/uni-rtsp/Makefile.am deleted file mode 100644 index f058b8d94b7..00000000000 --- a/libs/unimrcp/libs/uni-rtsp/Makefile.am +++ /dev/null @@ -1,22 +0,0 @@ -MAINTAINERCLEANFILES = Makefile.in - -AM_CPPFLAGS = -I$(top_srcdir)/libs/uni-rtsp/include \ - -I$(top_srcdir)/libs/apr-toolkit/include \ - $(UNIMRCP_APR_INCLUDES) - -noinst_LTLIBRARIES = libunirtsp.la - -include_HEADERS = include/rtsp.h \ - include/rtsp_header.h \ - include/rtsp_start_line.h \ - include/rtsp_message.h \ - include/rtsp_stream.h \ - include/rtsp_server.h \ - include/rtsp_client.h - -libunirtsp_la_SOURCES = src/rtsp_header.c \ - src/rtsp_start_line.c \ - src/rtsp_message.c \ - src/rtsp_stream.c \ - src/rtsp_server.c \ - src/rtsp_client.c diff --git a/libs/unimrcp/libs/uni-rtsp/include/rtsp.h b/libs/unimrcp/libs/uni-rtsp/include/rtsp.h deleted file mode 100644 index 89ecb81776e..00000000000 --- a/libs/unimrcp/libs/uni-rtsp/include/rtsp.h +++ /dev/null @@ -1,45 +0,0 @@ -/* - * Copyright 2008-2014 Arsen Chaloyan - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - * - * $Id: rtsp.h 2136 2014-07-04 06:33:36Z achaloyan@gmail.com $ - */ - -#ifndef RTSP_H -#define RTSP_H - -/** - * @file rtsp.h - * @brief RTSP Core Definitions - */ - -#include -#include - -/** Library export/import defines */ -#ifdef WIN32 -#ifdef RTSP_STATIC_LIB -#define RTSP_DECLARE(type) type __stdcall -#else -#ifdef RTSP_LIB_EXPORT -#define RTSP_DECLARE(type) __declspec(dllexport) type __stdcall -#else -#define RTSP_DECLARE(type) __declspec(dllimport) type __stdcall -#endif -#endif -#else -#define RTSP_DECLARE(type) type -#endif - -#endif /* RTSP_H */ diff --git a/libs/unimrcp/libs/uni-rtsp/include/rtsp_client.h b/libs/unimrcp/libs/uni-rtsp/include/rtsp_client.h deleted file mode 100644 index 811ccb304fe..00000000000 --- a/libs/unimrcp/libs/uni-rtsp/include/rtsp_client.h +++ /dev/null @@ -1,155 +0,0 @@ -/* - * Copyright 2008-2014 Arsen Chaloyan - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - * - * $Id: rtsp_client.h 2136 2014-07-04 06:33:36Z achaloyan@gmail.com $ - */ - -#ifndef RTSP_CLIENT_H -#define RTSP_CLIENT_H - -/** - * @file rtsp_client.h - * @brief RTSP Client - */ - -#include "apt_task.h" -#include "rtsp_message.h" - -APT_BEGIN_EXTERN_C - -/** Opaque RTSP client declaration */ -typedef struct rtsp_client_t rtsp_client_t; -/** Opaque RTSP client session declaration */ -typedef struct rtsp_client_session_t rtsp_client_session_t; - -/** RTSP client vtable declaration */ -typedef struct rtsp_client_vtable_t rtsp_client_vtable_t; - -/** RTSP client vtable */ -struct rtsp_client_vtable_t { - /** Sesssion termination response handler */ - apt_bool_t (*on_session_terminate_response)(rtsp_client_t *client, rtsp_client_session_t *session); - /** Sesssion termination event handler */ - apt_bool_t (*on_session_terminate_event)(rtsp_client_t *client, rtsp_client_session_t *session); - /** Sesssion setup response handler */ - apt_bool_t (*on_session_response)(rtsp_client_t *client, rtsp_client_session_t *session, rtsp_message_t *request, rtsp_message_t *response); - /** Sesssion event handler */ - apt_bool_t (*on_session_event)(rtsp_client_t *client, rtsp_client_session_t *session, rtsp_message_t *message); -}; - -/** - * Create RTSP client. - * @param id the identifier of the client - * @param max_connection_count the number of max RTSP connections - * @param request_timeout the request timeout to set - * @param obj the external object to send event to - * @param handler the response/event handler - * @param pool the pool to allocate memory from - */ -RTSP_DECLARE(rtsp_client_t*) rtsp_client_create( - const char *id, - apr_size_t max_connection_count, - apr_size_t request_timeout, - void *obj, - const rtsp_client_vtable_t *handler, - apr_pool_t *pool); - -/** - * Destroy RTSP client. - * @param client the client to destroy - */ -RTSP_DECLARE(apt_bool_t) rtsp_client_destroy(rtsp_client_t *client); - -/** - * Start client and wait for incoming requests. - * @param client the client to start - */ -RTSP_DECLARE(apt_bool_t) rtsp_client_start(rtsp_client_t *client); - -/** - * Terminate client. - * @param client the client to terminate - */ -RTSP_DECLARE(apt_bool_t) rtsp_client_terminate(rtsp_client_t *client); - -/** - * Get task. - * @param client the client to get task from - */ -RTSP_DECLARE(apt_task_t*) rtsp_client_task_get(const rtsp_client_t *client); - -/** - * Get external object. - * @param client the client to get object from - */ -RTSP_DECLARE(void*) rtsp_client_object_get(const rtsp_client_t *client); - - -/** - * Create RTSP session. - * @param client the client to create session for - * @param server_ip the IP address of RTSP server - * @param server_port the port of RTSP server - * @param resource_location the location of RTSP resource (path in RTSP URI) - */ -RTSP_DECLARE(rtsp_client_session_t*) rtsp_client_session_create( - rtsp_client_t *client, - const char *server_ip, - apr_port_t server_port, - const char *resource_location); - -/** - * Destroy RTSP session. - * @param session the session to destroy - */ -RTSP_DECLARE(void) rtsp_client_session_destroy(rtsp_client_session_t *session); - -/** - * Terminate RTSP session. - * @param client the client to use - * @param session the session to terminate - */ -RTSP_DECLARE(apt_bool_t) rtsp_client_session_terminate(rtsp_client_t *client, rtsp_client_session_t *session); - -/** - * Send RTSP message. - * @param client the client to use - * @param session the session to send RTSP request for - * @param message the RTSP request to send - */ -RTSP_DECLARE(apt_bool_t) rtsp_client_session_request(rtsp_client_t *client, rtsp_client_session_t *session, rtsp_message_t *message); - -/** - * Get object associated with the session. - * @param session the session to get object from - */ -RTSP_DECLARE(void*) rtsp_client_session_object_get(const rtsp_client_session_t *session); - -/** - * Set object associated with the session. - * @param session the session to set object for - * @param obj the object to set - */ -RTSP_DECLARE(void) rtsp_client_session_object_set(rtsp_client_session_t *session, void *obj); - -/** - * Get the session identifier. - * @param session the session to get identifier from - */ -RTSP_DECLARE(const apt_str_t*) rtsp_client_session_id_get(const rtsp_client_session_t *session); - -APT_END_EXTERN_C - -#endif /* RTSP_CLIENT_H */ diff --git a/libs/unimrcp/libs/uni-rtsp/include/rtsp_header.h b/libs/unimrcp/libs/uni-rtsp/include/rtsp_header.h deleted file mode 100644 index 7d5c6cb3503..00000000000 --- a/libs/unimrcp/libs/uni-rtsp/include/rtsp_header.h +++ /dev/null @@ -1,232 +0,0 @@ -/* - * Copyright 2008-2014 Arsen Chaloyan - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - * - * $Id: rtsp_header.h 2136 2014-07-04 06:33:36Z achaloyan@gmail.com $ - */ - -#ifndef RTSP_HEADER_H -#define RTSP_HEADER_H - -/** - * @file rtsp_header.h - * @brief RTSP Header - */ - -#include "rtsp.h" -#include "apt_header_field.h" - -APT_BEGIN_EXTERN_C - -/** RTSP transport protocol */ -typedef enum{ - RTSP_TRANSPORT_RTP, - - RTSP_TRANSPORT_COUNT, - RTSP_TRANSPORT_NONE = RTSP_TRANSPORT_COUNT -} rtsp_transport_e; - -/** RTSP transport profile */ -typedef enum{ - RTSP_PROFILE_AVP, - RTSP_PROFILE_SAVP, - - RTSP_PROFILE_COUNT, - RTSP_PROFILE_NONE = RTSP_PROFILE_COUNT -} rtsp_profile_e; - -/** RTSP lower-transport */ -typedef enum{ - RTSP_LOWER_TRANSPORT_UDP, - RTSP_LOWER_TRANSPORT_TCP, - - RTSP_LOWER_TRANSPORT_COUNT, - RTSP_LOWER_TRANSPORT_NONE = RTSP_LOWER_TRANSPORT_COUNT -} rtsp_lower_transport_e; - -/** RTSP transport attributes */ -typedef enum{ - RTSP_TRANSPORT_ATTRIB_CLIENT_PORT, - RTSP_TRANSPORT_ATTRIB_SERVER_PORT, - RTSP_TRANSPORT_ATTRIB_SOURCE, - RTSP_TRANSPORT_ATTRIB_DESTINATION, - RTSP_TRANSPORT_ATTRIB_UNICAST, - RTSP_TRANSPORT_ATTRIB_MULTICAST, - RTSP_TRANSPORT_ATTRIB_MODE, - - RTSP_TRANSPORT_ATTRIB_COUNT, - RTSP_TRANSPORT_ATTRIB_NONE = RTSP_TRANSPORT_ATTRIB_COUNT -} rtsp_transport_attrib_e; - -/** RTSP delivery */ -typedef enum{ - RTSP_DELIVERY_UNICAST, - RTSP_DELIVERY_MULTICAST, - - RTSP_DELIVERY_COUNT, - RTSP_DELIVERY_NONE = RTSP_DELIVERY_COUNT -} rtsp_delivery_e; - -/** RTSP header fields */ -typedef enum{ - RTSP_HEADER_FIELD_CSEQ, - RTSP_HEADER_FIELD_TRANSPORT, - RTSP_HEADER_FIELD_SESSION_ID, - RTSP_HEADER_FIELD_RTP_INFO, - RTSP_HEADER_FIELD_CONTENT_TYPE, - RTSP_HEADER_FIELD_CONTENT_LENGTH, - - RTSP_HEADER_FIELD_COUNT, - RTSP_HEADER_FIELD_UNKNOWN = RTSP_HEADER_FIELD_COUNT -} rtsp_header_field_id; - -/** RTSP content types */ -typedef enum { - RTSP_CONTENT_TYPE_SDP, - RTSP_CONTENT_TYPE_MRCP, - - RTSP_CONTENT_TYPE_COUNT, - RTSP_CONTENT_TYPE_NONE = RTSP_CONTENT_TYPE_COUNT -} rtsp_content_type_e; - - - -/** RTSP/RTP port range declaration */ -typedef struct rtsp_port_range_t rtsp_port_range_t; -/** RTSP transport declaration */ -typedef struct rtsp_transport_t rtsp_transport_t; -/** RTSP header declaration */ -typedef struct rtsp_header_t rtsp_header_t; - -/** RTSP/RTP port range */ -struct rtsp_port_range_t { - /** Min (low) port */ - apr_port_t min; - /** Max (high) port */ - apr_port_t max; -}; - -/** RTSP transport */ -struct rtsp_transport_t { - /** Transport profile */ - rtsp_transport_e protocol; - /** Transport profile */ - rtsp_profile_e profile; - /** Lower transport */ - rtsp_lower_transport_e lower_protocol; - /** Delivery method */ - rtsp_delivery_e delivery; - /** Client port range */ - rtsp_port_range_t client_port_range; - /** Server port range */ - rtsp_port_range_t server_port_range; - /** Source IP address */ - apt_str_t source; - /** Destination IP address */ - apt_str_t destination; - /** Mode indicates the method to support (either PLAY or RECORD) */ - apt_str_t mode; -}; - -/** RTSP header */ -struct rtsp_header_t { - /** Sequence number */ - apr_size_t cseq; - /** Transport */ - rtsp_transport_t transport; - /** Session identifier */ - apt_str_t session_id; - /** RTP-info */ - apt_str_t rtp_info; - - /** Content type */ - rtsp_content_type_e content_type; - /** Content length */ - apr_size_t content_length; - - /** Header section (collection of header fields)*/ - apt_header_section_t header_section; -}; - - -/** Initialize port range */ -static APR_INLINE void rtsp_port_range_init(rtsp_port_range_t *port_range) -{ - port_range->min = 0; - port_range->max = 0; -} - -/** Initialize port range */ -static APR_INLINE apt_bool_t rtsp_port_range_is_valid(const rtsp_port_range_t *port_range) -{ - return (port_range->min == 0 && port_range->max == 0) == FALSE; -} - -/** Initialize transport */ -static APR_INLINE void rtsp_transport_init(rtsp_transport_t *transport) -{ - transport->protocol = RTSP_TRANSPORT_RTP; - transport->profile = RTSP_PROFILE_NONE; - transport->lower_protocol = RTSP_LOWER_TRANSPORT_NONE; - rtsp_port_range_init(&transport->client_port_range); - rtsp_port_range_init(&transport->server_port_range); - apt_string_reset(&transport->source); - apt_string_reset(&transport->destination); - apt_string_reset(&transport->mode); -} - -/** Initialize header */ -static APR_INLINE void rtsp_header_init(rtsp_header_t *header, apr_pool_t *pool) -{ - header->cseq = 0; - rtsp_transport_init(&header->transport); - apt_string_reset(&header->session_id); - apt_string_reset(&header->rtp_info); - header->content_type = RTSP_CONTENT_TYPE_NONE; - header->content_length = 0; - - apt_header_section_init(&header->header_section); - apt_header_section_array_alloc(&header->header_section,RTSP_HEADER_FIELD_COUNT,pool); -} - - -/** Add RTSP header field */ -RTSP_DECLARE(apt_bool_t) rtsp_header_field_add(rtsp_header_t *header, apt_header_field_t *header_field, apr_pool_t *pool); - -/** Parse RTSP header fields */ -RTSP_DECLARE(apt_bool_t) rtsp_header_fields_parse(rtsp_header_t *header, apr_pool_t *pool); - -/** Add RTSP header field property */ -RTSP_DECLARE(apt_bool_t) rtsp_header_property_add(rtsp_header_t *header, rtsp_header_field_id id, apr_pool_t *pool); - -/** Remove RTSP header field property */ -static APR_INLINE apt_bool_t rtsp_header_property_remove(rtsp_header_t *header, rtsp_header_field_id id) -{ - apt_header_field_t *header_field = apt_header_section_field_get(&header->header_section,id); - if(header_field) { - return apt_header_section_field_remove(&header->header_section,header_field); - } - return FALSE; -} - -/** Check RTSP header field property */ -static APR_INLINE apt_bool_t rtsp_header_property_check(const rtsp_header_t *header, rtsp_header_field_id id) -{ - return apt_header_section_field_check(&header->header_section,id); -} - - -APT_END_EXTERN_C - -#endif /* RTSP_HEADER_H */ diff --git a/libs/unimrcp/libs/uni-rtsp/include/rtsp_message.h b/libs/unimrcp/libs/uni-rtsp/include/rtsp_message.h deleted file mode 100644 index a636bc4de7c..00000000000 --- a/libs/unimrcp/libs/uni-rtsp/include/rtsp_message.h +++ /dev/null @@ -1,78 +0,0 @@ -/* - * Copyright 2008-2014 Arsen Chaloyan - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - * - * $Id: rtsp_message.h 2136 2014-07-04 06:33:36Z achaloyan@gmail.com $ - */ - -#ifndef RTSP_MESSAGE_H -#define RTSP_MESSAGE_H - -/** - * @file rtsp_message.h - * @brief RTSP Message Definition - */ - -#include "rtsp_start_line.h" -#include "rtsp_header.h" - -APT_BEGIN_EXTERN_C - -/** RTSP message declaration */ -typedef struct rtsp_message_t rtsp_message_t; - -/** RTSP message */ -struct rtsp_message_t { - /** RTSP mesage type (request/response) */ - rtsp_start_line_t start_line; - /** RTSP header */ - rtsp_header_t header; - /** RTSP message body */ - apt_str_t body; - - /** Pool to allocate memory from */ - apr_pool_t *pool; -}; - -/** - * Create RTSP message. - * @param message_type the message type - * @param pool the pool to allocate memory from - */ -RTSP_DECLARE(rtsp_message_t*) rtsp_message_create(rtsp_message_type_e message_type, apr_pool_t *pool); - -/** - * Create RTSP request message. - * @param pool the pool to allocate memory from - */ -RTSP_DECLARE(rtsp_message_t*) rtsp_request_create(apr_pool_t *pool); - -/** - * Create RTSP response message. - * @param request the request to create response to - * @param status_code the status code of the response - * @param reason the reason phrase id of the response - * @param pool the pool to allocate memory from - */ -RTSP_DECLARE(rtsp_message_t*) rtsp_response_create(const rtsp_message_t *request, rtsp_status_code_e status_code, rtsp_reason_phrase_e reason, apr_pool_t *pool); - -/** - * Destroy RTSP message - * @param message the message to destroy - */ -RTSP_DECLARE(void) rtsp_message_destroy(rtsp_message_t *message); - -APT_END_EXTERN_C - -#endif /* RTSP_MESSAGE_H */ diff --git a/libs/unimrcp/libs/uni-rtsp/include/rtsp_server.h b/libs/unimrcp/libs/uni-rtsp/include/rtsp_server.h deleted file mode 100644 index 768ed2c23a9..00000000000 --- a/libs/unimrcp/libs/uni-rtsp/include/rtsp_server.h +++ /dev/null @@ -1,147 +0,0 @@ -/* - * Copyright 2008-2014 Arsen Chaloyan - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - * - * $Id: rtsp_server.h 2252 2014-11-21 02:45:15Z achaloyan@gmail.com $ - */ - -#ifndef RTSP_SERVER_H -#define RTSP_SERVER_H - -/** - * @file rtsp_server.h - * @brief RTSP Server - */ - -#include "apt_task.h" -#include "rtsp_message.h" - -APT_BEGIN_EXTERN_C - -/** Opaque RTSP server declaration */ -typedef struct rtsp_server_t rtsp_server_t; -/** Opaque RTSP server session declaration */ -typedef struct rtsp_server_session_t rtsp_server_session_t; - -/** RTSP server vtable declaration */ -typedef struct rtsp_server_vtable_t rtsp_server_vtable_t; - -/** RTSP server vtable declaration */ -struct rtsp_server_vtable_t { - /** Virtual create session */ - apt_bool_t (*create_session)(rtsp_server_t *server, rtsp_server_session_t *session); - /** Virtual terminate session */ - apt_bool_t (*terminate_session)(rtsp_server_t *server, rtsp_server_session_t *session); - /** Virtual message handler */ - apt_bool_t (*handle_message)(rtsp_server_t *server, rtsp_server_session_t *session, rtsp_message_t *message); -}; - -/** - * Create RTSP server. - * @param id the identifier of the server - * @param listen_ip the listen IP address - * @param listen_port the listen port - * @param max_connection_count the number of max RTSP connections - * @param obj the external object to send events to - * @param handler the request handler - * @param pool the pool to allocate memory from - */ -RTSP_DECLARE(rtsp_server_t*) rtsp_server_create( - const char *id, - const char *listen_ip, - apr_port_t listen_port, - apr_size_t max_connection_count, - void *obj, - const rtsp_server_vtable_t *handler, - apr_pool_t *pool); - -/** - * Destroy RTSP server. - * @param server the server to destroy - */ -RTSP_DECLARE(apt_bool_t) rtsp_server_destroy(rtsp_server_t *server); - -/** - * Start server and wait for incoming requests. - * @param server the server to start - */ -RTSP_DECLARE(apt_bool_t) rtsp_server_start(rtsp_server_t *server); - -/** - * Terminate server. - * @param server the server to terminate - */ -RTSP_DECLARE(apt_bool_t) rtsp_server_terminate(rtsp_server_t *server); - -/** - * Get task. - * @param server the server to get task from - */ -RTSP_DECLARE(apt_task_t*) rtsp_server_task_get(const rtsp_server_t *server); - -/** - * Get external object. - * @param server the server to get object from - */ -RTSP_DECLARE(void*) rtsp_server_object_get(const rtsp_server_t *server); - -/** - * Send RTSP message. - * @param server the server to use - * @param session the session to send RTSP response for - * @param message the RTSP response to send - */ -RTSP_DECLARE(apt_bool_t) rtsp_server_session_respond(rtsp_server_t *server, rtsp_server_session_t *session, rtsp_message_t *message); - -/** - * Terminate RTSP session (respond to terminate request). - * @param server the server to use - * @param session the session to terminate - */ -RTSP_DECLARE(apt_bool_t) rtsp_server_session_terminate(rtsp_server_t *server, rtsp_server_session_t *session); - -/** - * Get object associated with the session. - * @param session the session to get object from - */ -RTSP_DECLARE(void*) rtsp_server_session_object_get(const rtsp_server_session_t *session); - -/** - * Set object associated with the session. - * @param session the session to set object for - * @param obj the object to set - */ -RTSP_DECLARE(void) rtsp_server_session_object_set(rtsp_server_session_t *session, void *obj); - -/** - * Get the session identifier. - * @param session the session to get identifier from - */ -RTSP_DECLARE(const apt_str_t*) rtsp_server_session_id_get(const rtsp_server_session_t *session); - -/** - * Get active (in-progress) session request. - * @param session the session to get from - */ -RTSP_DECLARE(const rtsp_message_t*) rtsp_server_session_request_get(const rtsp_server_session_t *session); - -/** - * Get the session destination (client) IP address. - * @param session the session to get IP address from - */ -RTSP_DECLARE(const char*) rtsp_server_session_destination_get(const rtsp_server_session_t *session); - -APT_END_EXTERN_C - -#endif /* RTSP_SERVER_H */ diff --git a/libs/unimrcp/libs/uni-rtsp/include/rtsp_start_line.h b/libs/unimrcp/libs/uni-rtsp/include/rtsp_start_line.h deleted file mode 100644 index dd53193d432..00000000000 --- a/libs/unimrcp/libs/uni-rtsp/include/rtsp_start_line.h +++ /dev/null @@ -1,181 +0,0 @@ -/* - * Copyright 2008-2014 Arsen Chaloyan - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - * - * $Id: rtsp_start_line.h 2136 2014-07-04 06:33:36Z achaloyan@gmail.com $ - */ - -#ifndef RTSP_START_LINE_H -#define RTSP_START_LINE_H - -/** - * @file rtsp_start_line.h - * @brief RTSP Start Line (request-line/status-line) - */ - -#include "rtsp.h" -#include "apt_text_stream.h" - -APT_BEGIN_EXTERN_C - -/** Protocol version */ -typedef enum { - /** Unknown version */ - RTSP_VERSION_UNKNOWN = 0, - /** RTSP 1.0 */ - RTSP_VERSION_1 = 1, -} rtsp_version_e; - -/** RTSP message types */ -typedef enum { - RTSP_MESSAGE_TYPE_UNKNOWN, - RTSP_MESSAGE_TYPE_REQUEST, - RTSP_MESSAGE_TYPE_RESPONSE -} rtsp_message_type_e; - -/** RTSP methods */ -typedef enum{ - RTSP_METHOD_SETUP, - RTSP_METHOD_ANNOUNCE, - RTSP_METHOD_TEARDOWN, - RTSP_METHOD_DESCRIBE, - - RTSP_METHOD_COUNT, - RTSP_METHOD_UNKNOWN = RTSP_METHOD_COUNT -} rtsp_method_id; - -/** Status codes */ -typedef enum { - RTSP_STATUS_CODE_UNKNOWN = 0, - /** Success codes (2xx) */ - RTSP_STATUS_CODE_OK = 200, - RTSP_STATUS_CODE_CREATED = 201, - /** Failure codec (4xx) */ - RTSP_STATUS_CODE_BAD_REQUEST = 400, - RTSP_STATUS_CODE_UNAUTHORIZED = 401, - RTSP_STATUS_CODE_NOT_FOUND = 404, - RTSP_STATUS_CODE_METHOD_NOT_ALLOWED = 405, - RTSP_STATUS_CODE_NOT_ACCEPTABLE = 406, - RTSP_STATUS_CODE_PROXY_AUTH_REQUIRED = 407, - RTSP_STATUS_CODE_REQUEST_TIMEOUT = 408, - RTSP_STATUS_CODE_SESSION_NOT_FOUND = 454, - - RTSP_STATUS_CODE_INTERNAL_SERVER_ERROR = 500, - RTSP_STATUS_CODE_NOT_IMPLEMENTED = 501, -} rtsp_status_code_e; - -/** Reason phrases */ -typedef enum { - RTSP_REASON_PHRASE_OK, - RTSP_REASON_PHRASE_CREATED, - RTSP_REASON_PHRASE_BAD_REQUEST, - RTSP_REASON_PHRASE_UNAUTHORIZED, - RTSP_REASON_PHRASE_NOT_FOUND, - RTSP_REASON_PHRASE_METHOD_NOT_ALLOWED, - RTSP_REASON_PHRASE_NOT_ACCEPTABLE, - RTSP_REASON_PHRASE_PROXY_AUTH_REQUIRED, - RTSP_REASON_PHRASE_REQUEST_TIMEOUT, - RTSP_REASON_PHRASE_SESSION_NOT_FOUND, - RTSP_REASON_PHRASE_INTERNAL_SERVER_ERROR, - RTSP_REASON_PHRASE_NOT_IMPLEMENTED, - RTSP_REASON_PHRASE_COUNT, - - /** Unknown reason phrase */ - RTSP_REASON_PHRASE_UNKNOWN = RTSP_REASON_PHRASE_COUNT -} rtsp_reason_phrase_e; - - -/** RTSP request-line declaration */ -typedef struct rtsp_request_line_t rtsp_request_line_t; -/** RTSP status-line declaration */ -typedef struct rtsp_status_line_t rtsp_status_line_t; -/** RTSP start-line declaration */ -typedef struct rtsp_start_line_t rtsp_start_line_t; - -/** RTSP request-line */ -struct rtsp_request_line_t { - /** Method name */ - apt_str_t method_name; - /** Method id */ - rtsp_method_id method_id; - /** RTSP URL */ - apt_str_t url; - /** Resource name parsed from RTSP URL */ - const char *resource_name; - /** Version of protocol in use */ - rtsp_version_e version; -}; - -/** RTSP status-line */ -struct rtsp_status_line_t { - /** Version of protocol in use */ - rtsp_version_e version; - /** success or failure or other status of the request */ - rtsp_status_code_e status_code; - /** Reason phrase */ - apt_str_t reason; -}; - -/** RTSP start-line */ -struct rtsp_start_line_t { - /** RTSP message type */ - rtsp_message_type_e message_type; - /** RTSP start-line */ - union { - rtsp_request_line_t request_line; - rtsp_status_line_t status_line; - } common; -}; - - -static APR_INLINE void rtsp_request_line_init(rtsp_request_line_t *request_line) -{ - apt_string_reset(&request_line->method_name); - request_line->method_id = RTSP_METHOD_UNKNOWN; - apt_string_reset(&request_line->url); - request_line->resource_name = NULL; - request_line->version = RTSP_VERSION_1; -} - -static APR_INLINE void rtsp_status_line_init(rtsp_status_line_t *status_line) -{ - status_line->version = RTSP_VERSION_1; - status_line->status_code = RTSP_STATUS_CODE_OK; - apt_string_reset(&status_line->reason); -} - -/** Initialize RTSP start-line */ -static APR_INLINE void rtsp_start_line_init(rtsp_start_line_t *start_line, rtsp_message_type_e message_type) -{ - start_line->message_type = message_type; - if(message_type == RTSP_MESSAGE_TYPE_REQUEST) { - rtsp_request_line_init(&start_line->common.request_line); - } - else if(message_type == RTSP_MESSAGE_TYPE_RESPONSE) { - rtsp_status_line_init(&start_line->common.status_line); - } -} - -/** Parse RTSP start-line */ -RTSP_DECLARE(apt_bool_t) rtsp_start_line_parse(rtsp_start_line_t *start_line, apt_str_t *str, apr_pool_t *pool); - -/** Generate RTSP start-line */ -RTSP_DECLARE(apt_bool_t) rtsp_start_line_generate(rtsp_start_line_t *start_line, apt_text_stream_t *text_stream); - -/** Get reason phrase by status code */ -RTSP_DECLARE(const apt_str_t*) rtsp_reason_phrase_get(rtsp_reason_phrase_e reason); - -APT_END_EXTERN_C - -#endif /* RTSP_START_LINE_H */ diff --git a/libs/unimrcp/libs/uni-rtsp/include/rtsp_stream.h b/libs/unimrcp/libs/uni-rtsp/include/rtsp_stream.h deleted file mode 100644 index a4cc4e1385d..00000000000 --- a/libs/unimrcp/libs/uni-rtsp/include/rtsp_stream.h +++ /dev/null @@ -1,54 +0,0 @@ -/* - * Copyright 2008-2014 Arsen Chaloyan - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - * - * $Id: rtsp_stream.h 2136 2014-07-04 06:33:36Z achaloyan@gmail.com $ - */ - -#ifndef RTSP_STREAM_H -#define RTSP_STREAM_H - -/** - * @file rtsp_stream.h - * @brief RTSP Stream Parser and Generator - */ - -#include "rtsp_message.h" -#include "apt_text_message.h" - -APT_BEGIN_EXTERN_C - -/** Opaque RTSP parser declaration */ -typedef struct rtsp_parser_t rtsp_parser_t; -/** Opaque RTSP generator declaration */ -typedef struct rtsp_generator_t rtsp_generator_t; - - -/** Create RTSP stream parser */ -RTSP_DECLARE(rtsp_parser_t*) rtsp_parser_create(apr_pool_t *pool); - -/** Parse RTSP stream */ -RTSP_DECLARE(apt_message_status_e) rtsp_parser_run(rtsp_parser_t *parser, apt_text_stream_t *stream, rtsp_message_t **message); - - -/** Create RTSP stream generator */ -RTSP_DECLARE(rtsp_generator_t*) rtsp_generator_create(apr_pool_t *pool); - -/** Generate RTSP stream */ -RTSP_DECLARE(apt_message_status_e) rtsp_generator_run(rtsp_generator_t *generator, rtsp_message_t *message, apt_text_stream_t *stream); - - -APT_END_EXTERN_C - -#endif /* RTSP_STREAM_H */ diff --git a/libs/unimrcp/libs/uni-rtsp/src/rtsp_client.c b/libs/unimrcp/libs/uni-rtsp/src/rtsp_client.c deleted file mode 100644 index bf783aba654..00000000000 --- a/libs/unimrcp/libs/uni-rtsp/src/rtsp_client.c +++ /dev/null @@ -1,992 +0,0 @@ -/* - * Copyright 2008-2014 Arsen Chaloyan - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - * - * $Id: rtsp_client.c 2249 2014-11-19 05:26:24Z achaloyan@gmail.com $ - */ - -#ifdef WIN32 -#pragma warning(disable: 4127) -#endif -#include -#include -#include "rtsp_client.h" -#include "rtsp_stream.h" -#include "apt_poller_task.h" -#include "apt_text_stream.h" -#include "apt_pool.h" -#include "apt_obj_list.h" -#include "apt_log.h" - -#define RTSP_STREAM_BUFFER_SIZE 1024 - -typedef struct rtsp_client_connection_t rtsp_client_connection_t; - -typedef enum { - TERMINATION_STATE_NONE, - TERMINATION_STATE_REQUESTED, - TERMINATION_STATE_INPROGRESS -} termination_state_e; - -/** RTSP client */ -struct rtsp_client_t { - apr_pool_t *pool; - apt_poller_task_t *task; - - /** List (ring) of RTSP connections */ - APR_RING_HEAD(rtsp_client_connection_head_t, rtsp_client_connection_t) connection_list; - - apr_uint32_t request_timeout; - - void *obj; - const rtsp_client_vtable_t *vtable; -}; - -/** RTSP connection */ -struct rtsp_client_connection_t { - /** Ring entry */ - APR_RING_ENTRY(rtsp_client_connection_t) link; - - /** Memory pool */ - apr_pool_t *pool; - /** Connected socket */ - apr_socket_t *sock; - /** Socket poll descriptor */ - apr_pollfd_t sock_pfd; - /** String identifier used for traces */ - const char *id; - /** RTSP client, connection belongs to */ - rtsp_client_t *client; - - /** Handle table (rtsp_client_session_t*) */ - apr_hash_t *handle_table; - /** Session table (rtsp_client_session_t*) */ - apr_hash_t *session_table; - - /** Inprogress request/session queue (rtsp_client_session_t*) */ - apt_obj_list_t *inprogress_request_queue; - - /** Last CSeq sent */ - apr_size_t last_cseq; - - char rx_buffer[RTSP_STREAM_BUFFER_SIZE]; - apt_text_stream_t rx_stream; - rtsp_parser_t *parser; - - char tx_buffer[RTSP_STREAM_BUFFER_SIZE]; - apt_text_stream_t tx_stream; - rtsp_generator_t *generator; -}; - -/** RTSP session */ -struct rtsp_client_session_t { - apr_pool_t *pool; - void *obj; - - /** Connection */ - rtsp_client_connection_t *connection; - /** Session identifier */ - apt_str_t id; - - apt_str_t server_ip; - apr_port_t server_port; - apt_str_t resource_location; - - /** In-progress request */ - rtsp_message_t *active_request; - /** Pending request queue (rtsp_message_t*) */ - apt_obj_list_t *pending_request_queue; - - /** Timer used for request timeouts */ - apt_timer_t *request_timer; - - /** Resource table */ - apr_hash_t *resource_table; - - /** termination state (none -> requested -> terminating) */ - termination_state_e term_state; -}; - -typedef enum { - TASK_MSG_SEND_MESSAGE, - TASK_MSG_TERMINATE_SESSION -} task_msg_data_type_e; - -typedef struct task_msg_data_t task_msg_data_t; - -struct task_msg_data_t { - task_msg_data_type_e type; - rtsp_client_t *client; - rtsp_client_session_t *session; - rtsp_message_t *message; -}; - -static apt_bool_t rtsp_client_task_msg_process(apt_task_t *task, apt_task_msg_t *msg); - -static apt_bool_t rtsp_client_poller_signal_process(void *obj, const apr_pollfd_t *descriptor); - -static apt_bool_t rtsp_client_message_handler(rtsp_client_connection_t *rtsp_connection, rtsp_message_t *message, apt_message_status_e status); -static apt_bool_t rtsp_client_message_send(rtsp_client_t *client, rtsp_client_connection_t *connection, rtsp_message_t *message); -static apt_bool_t rtsp_client_session_message_process(rtsp_client_t *client, rtsp_client_session_t *session, rtsp_message_t *message); -static apt_bool_t rtsp_client_session_response_process(rtsp_client_t *client, rtsp_client_session_t *session, rtsp_message_t *request, rtsp_message_t *response); - -static void rtsp_client_timer_proc(apt_timer_t *timer, void *obj); - -/** Get string identifier */ -static const char* rtsp_client_id_get(const rtsp_client_t *client) -{ - apt_task_t *task = apt_poller_task_base_get(client->task); - return apt_task_name_get(task); -} - -/** Create RTSP client */ -RTSP_DECLARE(rtsp_client_t*) rtsp_client_create( - const char *id, - apr_size_t max_connection_count, - apr_size_t request_timeout, - void *obj, - const rtsp_client_vtable_t *handler, - apr_pool_t *pool) -{ - apt_task_t *task; - apt_task_vtable_t *vtable; - apt_task_msg_pool_t *msg_pool; - rtsp_client_t *client; - - apt_log(APT_LOG_MARK,APT_PRIO_NOTICE,"Create RTSP Client [%s] [%"APR_SIZE_T_FMT"]", - id, max_connection_count); - client = apr_palloc(pool,sizeof(rtsp_client_t)); - client->pool = pool; - client->obj = obj; - client->vtable = handler; - - msg_pool = apt_task_msg_pool_create_dynamic(sizeof(task_msg_data_t),pool); - - client->task = apt_poller_task_create( - max_connection_count, - rtsp_client_poller_signal_process, - client, - msg_pool, - pool); - if(!client->task) { - return NULL; - } - - task = apt_poller_task_base_get(client->task); - if(task) { - apt_task_name_set(task,id); - } - - vtable = apt_poller_task_vtable_get(client->task); - if(vtable) { - vtable->process_msg = rtsp_client_task_msg_process; - } - - APR_RING_INIT(&client->connection_list, rtsp_client_connection_t, link); - client->request_timeout = (apr_uint32_t)request_timeout; - return client; -} - -/** Destroy RTSP client */ -RTSP_DECLARE(apt_bool_t) rtsp_client_destroy(rtsp_client_t *client) -{ - apt_log(APT_LOG_MARK,APT_PRIO_NOTICE,"Destroy RTSP Client [%s]", - rtsp_client_id_get(client)); - return apt_poller_task_destroy(client->task); -} - -/** Start connection agent */ -RTSP_DECLARE(apt_bool_t) rtsp_client_start(rtsp_client_t *client) -{ - return apt_poller_task_start(client->task); -} - -/** Terminate connection agent */ -RTSP_DECLARE(apt_bool_t) rtsp_client_terminate(rtsp_client_t *client) -{ - return apt_poller_task_terminate(client->task); -} - -/** Get task */ -RTSP_DECLARE(apt_task_t*) rtsp_client_task_get(const rtsp_client_t *client) -{ - return apt_poller_task_base_get(client->task); -} - -/** Get external object */ -RTSP_DECLARE(void*) rtsp_client_object_get(const rtsp_client_t *client) -{ - return client->obj; -} - -/** Get object associated with the session */ -RTSP_DECLARE(void*) rtsp_client_session_object_get(const rtsp_client_session_t *session) -{ - return session->obj; -} - -/** Set object associated with the session */ -RTSP_DECLARE(void) rtsp_client_session_object_set(rtsp_client_session_t *session, void *obj) -{ - session->obj = obj; -} - -/** Get the session identifier */ -RTSP_DECLARE(const apt_str_t*) rtsp_client_session_id_get(const rtsp_client_session_t *session) -{ - return &session->id; -} - -/** Signal task message */ -static apt_bool_t rtsp_client_control_message_signal( - task_msg_data_type_e type, - rtsp_client_t *client, - rtsp_client_session_t *session, - rtsp_message_t *message) -{ - apt_task_t *task = apt_poller_task_base_get(client->task); - apt_task_msg_t *task_msg = apt_task_msg_get(task); - if(task_msg) { - task_msg_data_t *data = (task_msg_data_t*)task_msg->data; - data->type = type; - data->client = client; - data->session = session; - data->message = message; - apt_task_msg_signal(task,task_msg); - } - return TRUE; -} - -/** Create RTSP session handle */ -RTSP_DECLARE(rtsp_client_session_t*) rtsp_client_session_create( - rtsp_client_t *client, - const char *server_ip, - apr_port_t server_port, - const char *resource_location) -{ - rtsp_client_session_t *session; - apr_pool_t *pool = apt_pool_create(); - session = apr_palloc(pool,sizeof(rtsp_client_session_t)); - session->pool = pool; - session->obj = NULL; - session->connection = NULL; - session->active_request = NULL; - session->pending_request_queue = apt_list_create(pool); - session->request_timer = apt_poller_task_timer_create( - client->task, - rtsp_client_timer_proc, - session, - pool); - session->resource_table = apr_hash_make(pool); - session->term_state = TERMINATION_STATE_NONE; - - apt_string_assign(&session->server_ip,server_ip,pool); - session->server_port = server_port; - apt_string_assign(&session->resource_location,resource_location,pool); - apt_string_reset(&session->id); - apt_log(APT_LOG_MARK,APT_PRIO_NOTICE,"Create RTSP Handle "APT_PTR_FMT,session); - return session; -} - -/** Destroy RTSP session handle */ -RTSP_DECLARE(void) rtsp_client_session_destroy(rtsp_client_session_t *session) -{ - apt_log(APT_LOG_MARK,APT_PRIO_NOTICE,"Destroy RTSP Handle "APT_PTR_FMT,session); - if(session && session->pool) { - apr_pool_destroy(session->pool); - } -} - -/** Signal terminate request */ -RTSP_DECLARE(apt_bool_t) rtsp_client_session_terminate(rtsp_client_t *client, rtsp_client_session_t *session) -{ - return rtsp_client_control_message_signal(TASK_MSG_TERMINATE_SESSION,client,session,NULL); -} - -/** Signal RTSP message */ -RTSP_DECLARE(apt_bool_t) rtsp_client_session_request(rtsp_client_t *client, rtsp_client_session_t *session, rtsp_message_t *message) -{ - return rtsp_client_control_message_signal(TASK_MSG_SEND_MESSAGE,client,session,message); -} - - -/** Create connection */ -static apt_bool_t rtsp_client_connect(rtsp_client_t *client, rtsp_client_connection_t *connection, const char *ip, apr_port_t port) -{ - char *local_ip = NULL; - char *remote_ip = NULL; - apr_sockaddr_t *l_sockaddr = NULL; - apr_sockaddr_t *r_sockaddr = NULL; - - if(apr_sockaddr_info_get(&r_sockaddr,ip,APR_INET,port,0,connection->pool) != APR_SUCCESS) { - return FALSE; - } - - if(apr_socket_create(&connection->sock,r_sockaddr->family,SOCK_STREAM,APR_PROTO_TCP,connection->pool) != APR_SUCCESS) { - return FALSE; - } - - apr_socket_opt_set(connection->sock, APR_SO_NONBLOCK, 0); - apr_socket_timeout_set(connection->sock, -1); - apr_socket_opt_set(connection->sock, APR_SO_REUSEADDR, 1); - - if(apr_socket_connect(connection->sock,r_sockaddr) != APR_SUCCESS) { - apr_socket_close(connection->sock); - connection->sock = NULL; - return FALSE; - } - - if(apr_socket_addr_get(&l_sockaddr,APR_LOCAL,connection->sock) != APR_SUCCESS) { - apr_socket_close(connection->sock); - connection->sock = NULL; - return FALSE; - } - - apr_sockaddr_ip_get(&local_ip,l_sockaddr); - apr_sockaddr_ip_get(&remote_ip,r_sockaddr); - connection->id = apr_psprintf(connection->pool,"%s:%hu <-> %s:%hu", - local_ip,l_sockaddr->port, - remote_ip,r_sockaddr->port); - - memset(&connection->sock_pfd,0,sizeof(apr_pollfd_t)); - connection->sock_pfd.desc_type = APR_POLL_SOCKET; - connection->sock_pfd.reqevents = APR_POLLIN; - connection->sock_pfd.desc.s = connection->sock; - connection->sock_pfd.client_data = connection; - if(apt_poller_task_descriptor_add(client->task,&connection->sock_pfd) != TRUE) { - apt_log(APT_LOG_MARK,APT_PRIO_WARNING,"Failed to Add to Pollset %s",connection->id); - apr_socket_close(connection->sock); - connection->sock = NULL; - return FALSE; - } - - apt_log(APT_LOG_MARK,APT_PRIO_NOTICE,"Established RTSP Connection %s",connection->id); - return TRUE; -} - -/** Close connection */ -static apt_bool_t rtsp_client_connection_close(rtsp_client_t *client, rtsp_client_connection_t *connection) -{ - if(connection->sock) { - apt_log(APT_LOG_MARK,APT_PRIO_INFO,"Close RTSP Connection %s",connection->id); - apt_poller_task_descriptor_remove(client->task,&connection->sock_pfd); - apr_socket_close(connection->sock); - connection->sock = NULL; - } - return TRUE; -} - - -/* Create RTSP connection */ -static apt_bool_t rtsp_client_connection_create(rtsp_client_t *client, rtsp_client_session_t *session) -{ - rtsp_client_connection_t *rtsp_connection; - apr_pool_t *pool = apt_pool_create(); - if(!pool) { - return FALSE; - } - - rtsp_connection = apr_palloc(pool,sizeof(rtsp_client_connection_t)); - rtsp_connection->pool = pool; - rtsp_connection->sock = NULL; - APR_RING_ELEM_INIT(rtsp_connection,link); - - if(rtsp_client_connect(client,rtsp_connection,session->server_ip.buf,session->server_port) == FALSE) { - apt_log(APT_LOG_MARK,APT_PRIO_WARNING,"Failed to Connect to RTSP Server %s:%hu", - session->server_ip.buf,session->server_port); - apr_pool_destroy(pool); - return FALSE; - } - rtsp_connection->handle_table = apr_hash_make(pool); - rtsp_connection->session_table = apr_hash_make(pool); - rtsp_connection->inprogress_request_queue = apt_list_create(pool); - apt_text_stream_init(&rtsp_connection->rx_stream,rtsp_connection->rx_buffer,sizeof(rtsp_connection->rx_buffer)-1); - apt_text_stream_init(&rtsp_connection->tx_stream,rtsp_connection->tx_buffer,sizeof(rtsp_connection->tx_buffer)-1); - rtsp_connection->parser = rtsp_parser_create(pool); - rtsp_connection->generator = rtsp_generator_create(pool); - rtsp_connection->last_cseq = 0; - - rtsp_connection->client = client; - APR_RING_INSERT_TAIL(&client->connection_list,rtsp_connection,rtsp_client_connection_t,link); - session->connection = rtsp_connection; - return TRUE; -} - -/* Destroy RTSP connection */ -static apt_bool_t rtsp_client_connection_destroy(rtsp_client_connection_t *rtsp_connection) -{ - rtsp_client_t *client = rtsp_connection->client; - APR_RING_REMOVE(rtsp_connection,link); - rtsp_client_connection_close(client,rtsp_connection); - apt_log(APT_LOG_MARK,APT_PRIO_NOTICE,"Destroy RTSP Connection %s",rtsp_connection->id); - apr_pool_destroy(rtsp_connection->pool); - - return TRUE; -} - -/* Respond to session termination request */ -static apt_bool_t rtsp_client_session_terminate_respond(rtsp_client_t *client, rtsp_client_session_t *session) -{ - rtsp_client_connection_t *rtsp_connection = session->connection; - apt_log(APT_LOG_MARK,APT_PRIO_INFO,"Remove RTSP Handle "APT_PTR_FMT,session); - apr_hash_set(rtsp_connection->handle_table,session,sizeof(void*),NULL); - - session->term_state = TERMINATION_STATE_NONE; - client->vtable->on_session_terminate_response(client,session); - return TRUE; -} - -/* Teardown session resources */ -static apt_bool_t rtsp_client_session_resources_teardown(rtsp_client_t *client, rtsp_client_session_t *session) -{ - void *val; - rtsp_message_t *setup_request; - rtsp_message_t *teardown_request; - apr_hash_index_t *it; - - /* set termination state to in-progress and teardown remaining resources */ - session->term_state = TERMINATION_STATE_INPROGRESS; - it = apr_hash_first(session->pool,session->resource_table); - for(; it; it = apr_hash_next(it)) { - apr_hash_this(it,NULL,NULL,&val); - setup_request = val; - if(!setup_request) continue; - - teardown_request = rtsp_request_create(session->pool); - teardown_request->start_line.common.request_line.resource_name = setup_request->start_line.common.request_line.resource_name; - teardown_request->start_line.common.request_line.method_id = RTSP_METHOD_TEARDOWN; - rtsp_client_session_message_process(client,session,teardown_request); - } - return TRUE; -} - -/* Process session termination request */ -static apt_bool_t rtsp_client_session_terminate_process(rtsp_client_t *client, rtsp_client_session_t *session) -{ - rtsp_client_connection_t *rtsp_connection = session->connection; - if(!rtsp_connection) { - client->vtable->on_session_terminate_response(client,session); - return FALSE; - } - - if(session->active_request) { - /* set termination state to requested */ - session->term_state = TERMINATION_STATE_REQUESTED; - } - else { - rtsp_client_session_resources_teardown(client,session); - - /* respond immediately if no resources left */ - if(apr_hash_count(session->resource_table) == 0) { - rtsp_client_session_terminate_respond(client,session); - - if(apr_hash_count(rtsp_connection->handle_table) == 0) { - rtsp_client_connection_destroy(rtsp_connection); - } - } - } - - return TRUE; -} - -static apt_bool_t rtsp_client_session_url_generate(rtsp_client_session_t *session, rtsp_message_t *message) -{ - apt_str_t *url = &message->start_line.common.request_line.url; - if(session->resource_location.length) { - url->buf = apr_psprintf(message->pool,"rtsp://%s:%hu/%s/%s", - session->server_ip.buf, - session->server_port, - session->resource_location.buf, - message->start_line.common.request_line.resource_name); - } - else { - url->buf = apr_psprintf(message->pool,"rtsp://%s:%hu/%s", - session->server_ip.buf, - session->server_port, - message->start_line.common.request_line.resource_name); - } - url->length = strlen(url->buf); - return TRUE; -} - -static apt_bool_t rtsp_client_request_push(rtsp_client_connection_t *rtsp_connection, rtsp_client_session_t *session, rtsp_message_t *message) -{ - /* add request to inprogress request queue */ - apt_log(APT_LOG_MARK,APT_PRIO_INFO,"Push RTSP Request to In-Progress Queue "APT_PTRSID_FMT" CSeq:%"APR_SIZE_T_FMT, - session, - message->header.session_id.buf ? message->header.session_id.buf : "new", - message->header.cseq); - apt_list_push_back(rtsp_connection->inprogress_request_queue,session,session->pool); - session->active_request = message; - if(rtsp_connection->client->request_timeout) { - apt_timer_set(session->request_timer,rtsp_connection->client->request_timeout); - } - return TRUE; -} - -static apt_bool_t rtsp_client_request_pop(rtsp_client_connection_t *rtsp_connection, rtsp_message_t *response, rtsp_message_t **ret_request, rtsp_client_session_t **ret_session) -{ - rtsp_client_session_t *session; - apt_list_elem_t *elem = apt_list_first_elem_get(rtsp_connection->inprogress_request_queue); - while(elem) { - session = apt_list_elem_object_get(elem); - if(session->active_request && session->active_request->header.cseq == response->header.cseq) { - if(ret_session) { - *ret_session = session; - } - if(ret_request) { - *ret_request = session->active_request; - } - apt_log(APT_LOG_MARK,APT_PRIO_INFO,"Pop In-Progress RTSP Request "APT_PTR_FMT" CSeq:%"APR_SIZE_T_FMT, - session, - response->header.cseq); - apt_list_elem_remove(rtsp_connection->inprogress_request_queue,elem); - session->active_request = NULL; - apt_timer_kill(session->request_timer); - return TRUE; - } - elem = apt_list_next_elem_get(rtsp_connection->inprogress_request_queue,elem); - } - return FALSE; -} - -/* Process outgoing RTSP request */ -static apt_bool_t rtsp_client_session_request_process(rtsp_client_t *client, rtsp_client_session_t *session, rtsp_message_t *message) -{ - if(!session->connection) { - /* create RTSP connection */ - if(rtsp_client_connection_create(client,session) == FALSE) { - /* respond with error */ - return FALSE; - } - apt_log(APT_LOG_MARK,APT_PRIO_INFO,"Add RTSP Handle "APT_PTR_FMT,session); - apr_hash_set(session->connection->handle_table,session,sizeof(void*),session); - } - - rtsp_client_session_url_generate(session,message); - - if(session->id.length) { - message->header.session_id = session->id; - rtsp_header_property_add(&message->header,RTSP_HEADER_FIELD_SESSION_ID,message->pool); - } - - message->header.cseq = ++session->connection->last_cseq; - rtsp_header_property_add(&message->header,RTSP_HEADER_FIELD_CSEQ,message->pool); - - if(rtsp_client_message_send(client,session->connection,message) == FALSE) { - /* respond with error */ - return FALSE; - } - - return rtsp_client_request_push(session->connection,session,message); -} - -/* Process pending RTSP requests */ -static apt_bool_t rtsp_client_session_pending_requests_process(rtsp_client_t *client, rtsp_client_session_t *session) -{ - rtsp_message_t *request = apt_list_pop_front(session->pending_request_queue); - if(!request) { - /* pending queue is empty, no in-progress request */ - return FALSE; - } - - /* process pending request; get the next one, if current is failed */ - do { - rtsp_message_t *response; - if(rtsp_client_session_request_process(client,session,request) == TRUE) { - return TRUE; - } - - /* respond with error */ - response = rtsp_response_create( - request, - RTSP_STATUS_CODE_INTERNAL_SERVER_ERROR, - RTSP_REASON_PHRASE_INTERNAL_SERVER_ERROR, - session->pool); - rtsp_client_session_response_process(client,session,request,response); - - /* process the next pending request / if any */ - request = apt_list_pop_front(session->pending_request_queue); - } - while(request); - - /* no in-progress request */ - return FALSE; -} - - -/* Process outgoing RTSP message */ -static apt_bool_t rtsp_client_session_message_process(rtsp_client_t *client, rtsp_client_session_t *session, rtsp_message_t *message) -{ - if(session->active_request) { - apt_log(APT_LOG_MARK,APT_PRIO_DEBUG,"Push RTSP Request to Pending Queue "APT_PTR_FMT,session); - apt_list_push_back(session->pending_request_queue,message,message->pool); - return TRUE; - } - - if(rtsp_client_session_request_process(client,session,message) == FALSE) { - /* respond with error in case request cannot be processed */ - rtsp_message_t *response = rtsp_response_create( - message, - RTSP_STATUS_CODE_INTERNAL_SERVER_ERROR, - RTSP_REASON_PHRASE_INTERNAL_SERVER_ERROR, - session->pool); - rtsp_client_session_response_process(client,session,message,response); - } - return TRUE; -} - -/* Process incoming RTSP event (request) */ -static apt_bool_t rtsp_client_session_event_process(rtsp_client_t *client, rtsp_client_connection_t *rtsp_connection, rtsp_message_t *message) -{ - rtsp_message_t *response = NULL; - rtsp_client_session_t *session = NULL; - if(rtsp_header_property_check(&message->header,RTSP_HEADER_FIELD_SESSION_ID) == TRUE) { - /* find existing session */ - session = apr_hash_get( - rtsp_connection->session_table, - message->header.session_id.buf, - message->header.session_id.length); - } - - if(session) { - response = rtsp_response_create(message,RTSP_STATUS_CODE_OK,RTSP_REASON_PHRASE_OK,message->pool); - if(rtsp_header_property_check(&message->header,RTSP_HEADER_FIELD_SESSION_ID) == TRUE) { - response->header.session_id = message->header.session_id; - rtsp_header_property_add(&response->header,RTSP_HEADER_FIELD_SESSION_ID,message->pool); - } - client->vtable->on_session_event(client,session,message); - } - else { - response = rtsp_response_create(message,RTSP_STATUS_CODE_NOT_FOUND,RTSP_REASON_PHRASE_NOT_FOUND,message->pool); - } - - return rtsp_client_message_send(client,rtsp_connection,response); -} - -/* Process incoming RTSP response */ -static apt_bool_t rtsp_client_session_response_process(rtsp_client_t *client, rtsp_client_session_t *session, rtsp_message_t *request, rtsp_message_t *response) -{ - const char *resource_name; - if(request->start_line.common.request_line.method_id == RTSP_METHOD_SETUP && - response->start_line.common.status_line.status_code == RTSP_STATUS_CODE_OK) { - - if(apr_hash_count(session->resource_table) == 0) { - if(rtsp_header_property_check(&response->header,RTSP_HEADER_FIELD_SESSION_ID) == TRUE) { - session->id = response->header.session_id; - apt_log(APT_LOG_MARK,APT_PRIO_INFO,"Add RTSP Session "APT_PTRSID_FMT, - session, - session->id.buf); - apr_hash_set(session->connection->session_table,session->id.buf,session->id.length,session); - } - } - - /* add resource */ - resource_name = request->start_line.common.request_line.resource_name; - apr_hash_set(session->resource_table,resource_name,APR_HASH_KEY_STRING,request); - } - else if(request->start_line.common.request_line.method_id == RTSP_METHOD_TEARDOWN) { - /* remove resource */ - resource_name = request->start_line.common.request_line.resource_name; - apr_hash_set(session->resource_table,resource_name,APR_HASH_KEY_STRING,NULL); - - if(apr_hash_count(session->resource_table) == 0) { - if(session->connection) { - apt_log(APT_LOG_MARK,APT_PRIO_INFO,"Remove RTSP Session "APT_PTRSID_FMT, - session, - session->id.buf); - apr_hash_set(session->connection->session_table,session->id.buf,session->id.length,NULL); - } - } - } - - if(session->term_state != TERMINATION_STATE_INPROGRESS) { - client->vtable->on_session_response(client,session,request,response); - } - - return TRUE; -} - -/* Raise RTSP session terminate event */ -static apt_bool_t rtsp_client_session_terminate_raise(rtsp_client_t *client, rtsp_client_session_t *session) -{ - rtsp_message_t *request; - rtsp_message_t *response; - - /* cancel pending requests */ - do { - request = apt_list_pop_front(session->pending_request_queue); - if(request) { - response = rtsp_response_create( - session->active_request, - RTSP_STATUS_CODE_INTERNAL_SERVER_ERROR, - RTSP_REASON_PHRASE_INTERNAL_SERVER_ERROR, - session->pool); - rtsp_client_session_response_process(client,session,request,response); - } - } - while(request); - - if(session->term_state == TERMINATION_STATE_NONE) { - client->vtable->on_session_terminate_event(client,session); - } - else { - rtsp_client_session_terminate_respond(client,session); - } - return TRUE; -} - -/* Cancel RTSP request */ -static apt_bool_t rtsp_client_request_cancel(rtsp_client_t *client, rtsp_client_session_t *session, rtsp_status_code_e status_code, rtsp_reason_phrase_e reason) -{ - rtsp_message_t *request; - rtsp_message_t *response; - if(!session->active_request) { - return FALSE; - } - - request = session->active_request; - response = rtsp_response_create( - request, - status_code, - reason, - session->pool); - - apt_log(APT_LOG_MARK,APT_PRIO_INFO,"Cancel RTSP Request "APT_PTRSID_FMT" CSeq:%"APR_SIZE_T_FMT" [%d]", - session, - request->header.session_id.buf ? request->header.session_id.buf : "new", - request->header.cseq, - status_code); - - return rtsp_client_message_handler(session->connection, response, APT_MESSAGE_STATUS_COMPLETE); -} - -/* RTSP connection disconnected */ -static apt_bool_t rtsp_client_on_disconnect(rtsp_client_t *client, rtsp_client_connection_t *rtsp_connection) -{ - rtsp_client_session_t *session; - apr_size_t remaining_handles; - - apt_log(APT_LOG_MARK,APT_PRIO_INFO,"RTSP Peer Disconnected %s", rtsp_connection->id); - rtsp_client_connection_close(client,rtsp_connection); - - /* Cancel in-progreess requests */ - do { - session = apt_list_pop_front(rtsp_connection->inprogress_request_queue); - if(session) { - if(rtsp_client_request_cancel( - client, - session, - RTSP_STATUS_CODE_INTERNAL_SERVER_ERROR, - RTSP_REASON_PHRASE_INTERNAL_SERVER_ERROR) == TRUE) { - apt_timer_kill(session->request_timer); - } - } - } - while(session); - - /* Walk through RTSP handles and raise termination event for them */ - remaining_handles = apr_hash_count(rtsp_connection->handle_table); - if(remaining_handles) { - void *val; - apr_hash_index_t *it; - apt_log(APT_LOG_MARK,APT_PRIO_NOTICE,"Terminate Remaining RTSP Handles [%"APR_SIZE_T_FMT"]",remaining_handles); - it = apr_hash_first(rtsp_connection->pool,rtsp_connection->session_table); - for(; it; it = apr_hash_next(it)) { - apr_hash_this(it,NULL,NULL,&val); - session = val; - if(session) { - rtsp_client_session_terminate_raise(client,session); - } - } - } - - return TRUE; -} - -/* Send RTSP message through RTSP connection */ -static apt_bool_t rtsp_client_message_send(rtsp_client_t *client, rtsp_client_connection_t *rtsp_connection, rtsp_message_t *message) -{ - apt_bool_t status = FALSE; - apt_text_stream_t *stream; - apt_message_status_e result; - - if(!rtsp_connection || !rtsp_connection->sock) { - apt_log(APT_LOG_MARK,APT_PRIO_WARNING,"No RTSP Connection"); - return FALSE; - } - stream = &rtsp_connection->tx_stream; - - do { - stream->text.length = sizeof(rtsp_connection->tx_buffer)-1; - apt_text_stream_reset(stream); - result = rtsp_generator_run(rtsp_connection->generator,message,stream); - if(result != APT_MESSAGE_STATUS_INVALID) { - stream->text.length = stream->pos - stream->text.buf; - *stream->pos = '\0'; - - apt_log(APT_LOG_MARK,APT_PRIO_INFO,"Send RTSP Data %s [%"APR_SIZE_T_FMT" bytes]\n%s", - rtsp_connection->id, - stream->text.length, - stream->text.buf); - if(apr_socket_send(rtsp_connection->sock,stream->text.buf,&stream->text.length) == APR_SUCCESS) { - status = TRUE; - } - else { - apt_log(APT_LOG_MARK,APT_PRIO_WARNING,"Failed to Send RTSP Data"); - } - } - else { - apt_log(APT_LOG_MARK,APT_PRIO_WARNING,"Failed to Generate RTSP Data"); - } - } - while(result == APT_MESSAGE_STATUS_INCOMPLETE); - - return status; -} - -/** Return TRUE to proceed with the next message in the stream (if any) */ -static apt_bool_t rtsp_client_message_handler(rtsp_client_connection_t *rtsp_connection, rtsp_message_t *message, apt_message_status_e status) -{ - if(status != APT_MESSAGE_STATUS_COMPLETE) { - /* message is not completely parsed, nothing to do */ - return TRUE; - } - /* process parsed message */ - if(message->start_line.message_type == RTSP_MESSAGE_TYPE_RESPONSE) { - rtsp_message_t *request; - rtsp_client_session_t *session; - /* at first, pop in-progress request/session */ - if(rtsp_client_request_pop(rtsp_connection,message,&request,&session) == FALSE) { - apt_log(APT_LOG_MARK,APT_PRIO_WARNING,"Unexpected RTSP Response Received CSeq:%"APR_SIZE_T_FMT, - message->header.cseq); - return TRUE; - } - - /* next, process session response */ - rtsp_client_session_response_process(rtsp_connection->client,session,request,message); - - /* process session pending requests */ - if(rtsp_client_session_pending_requests_process(rtsp_connection->client,session) == FALSE) { - /* no in-progress request, check the termination state now */ - if(session->term_state != TERMINATION_STATE_NONE) { - if(session->term_state == TERMINATION_STATE_REQUESTED) { - rtsp_client_session_resources_teardown(rtsp_connection->client,session); - } - - /* respond if no resources left */ - if(apr_hash_count(session->resource_table) == 0) { - rtsp_client_session_terminate_respond(rtsp_connection->client,session); - - if(apr_hash_count(rtsp_connection->handle_table) == 0) { - rtsp_client_connection_destroy(rtsp_connection); - /* return FALSE to indicate connection has been destroyed */ - return FALSE; - } - } - } - } - } - else if(message->start_line.message_type == RTSP_MESSAGE_TYPE_REQUEST) { - rtsp_client_session_event_process(rtsp_connection->client,rtsp_connection,message); - } - return TRUE; -} - -/* Receive RTSP message through RTSP connection */ -static apt_bool_t rtsp_client_poller_signal_process(void *obj, const apr_pollfd_t *descriptor) -{ - rtsp_client_t *client = obj; - rtsp_client_connection_t *rtsp_connection = descriptor->client_data; - apr_status_t status; - apr_size_t offset; - apr_size_t length; - apt_text_stream_t *stream; - rtsp_message_t *message; - apt_message_status_e msg_status; - - if(!rtsp_connection || !rtsp_connection->sock) { - return FALSE; - } - stream = &rtsp_connection->rx_stream; - - /* calculate offset remaining from the previous receive / if any */ - offset = stream->pos - stream->text.buf; - /* calculate available length */ - length = sizeof(rtsp_connection->rx_buffer) - 1 - offset; - - status = apr_socket_recv(rtsp_connection->sock,stream->pos,&length); - if(status == APR_EOF || length == 0) { - return rtsp_client_on_disconnect(client,rtsp_connection); - } - - /* calculate actual length of the stream */ - stream->text.length = offset + length; - stream->pos[length] = '\0'; - apt_log(APT_LOG_MARK,APT_PRIO_INFO,"Receive RTSP Data %s [%"APR_SIZE_T_FMT" bytes]\n%s", - rtsp_connection->id, - length, - stream->pos); - - /* reset pos */ - apt_text_stream_reset(stream); - - do { - msg_status = rtsp_parser_run(rtsp_connection->parser,stream,&message); - if(rtsp_client_message_handler(rtsp_connection,message,msg_status) == FALSE) { - return FALSE; - } - } - while(apt_text_is_eos(stream) == FALSE); - - /* scroll remaining stream */ - apt_text_stream_scroll(stream); - return TRUE; -} - -/* Process task message */ -static apt_bool_t rtsp_client_task_msg_process(apt_task_t *task, apt_task_msg_t *task_msg) -{ - apt_poller_task_t *poller_task = apt_task_object_get(task); - rtsp_client_t *client = apt_poller_task_object_get(poller_task); - - task_msg_data_t *data = (task_msg_data_t*) task_msg->data; - switch(data->type) { - case TASK_MSG_SEND_MESSAGE: - rtsp_client_session_message_process(client,data->session,data->message); - break; - case TASK_MSG_TERMINATE_SESSION: - rtsp_client_session_terminate_process(client,data->session); - break; - } - - return TRUE; -} - -/* Timer callback */ -static void rtsp_client_timer_proc(apt_timer_t *timer, void *obj) -{ - rtsp_client_session_t *session = obj; - if(!session || !session->connection || !session->connection->client) { - return; - } - - if(session->request_timer == timer) { - rtsp_client_request_cancel( - session->connection->client, - session, - RTSP_STATUS_CODE_REQUEST_TIMEOUT, - RTSP_REASON_PHRASE_REQUEST_TIMEOUT); - } -} diff --git a/libs/unimrcp/libs/uni-rtsp/src/rtsp_header.c b/libs/unimrcp/libs/uni-rtsp/src/rtsp_header.c deleted file mode 100644 index 4aee7d7dd02..00000000000 --- a/libs/unimrcp/libs/uni-rtsp/src/rtsp_header.c +++ /dev/null @@ -1,420 +0,0 @@ -/* - * Copyright 2008-2014 Arsen Chaloyan - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - * - * $Id: rtsp_header.c 2136 2014-07-04 06:33:36Z achaloyan@gmail.com $ - */ - -#include "rtsp_header.h" -#include "apt_string_table.h" -#include "apt_text_stream.h" - -/** String table of RTSP header fields (rtsp_header_field_id) */ -static const apt_str_table_item_t rtsp_header_string_table[] = { - {{"CSeq", 4},1}, - {{"Transport", 9},0}, - {{"Session", 7},0}, - {{"RTP-Info", 8},0}, - {{"Content-Type", 12},8}, - {{"Content-Length",14},8} -}; - -/** String table of RTSP content types (rtsp_content_type) */ -static const apt_str_table_item_t rtsp_content_type_string_table[] = { - {{"application/sdp", 15},12}, - {{"application/mrcp",16},12} -}; - -/** String table of RTSP transport protocols (rtsp_transport_e) */ -static const apt_str_table_item_t rtsp_transport_string_table[] = { - {{"RTP", 3},0} -}; - -/** String table of RTSP lower transport protocols (rtsp_lower_transport_e) */ -static const apt_str_table_item_t rtsp_lower_transport_string_table[] = { - {{"UDP", 3},0}, - {{"TCP", 3},0} -}; - -/** String table of RTSP transport profiles (rtsp_profile_e) */ -static const apt_str_table_item_t rtsp_profile_string_table[] = { - {{"AVP", 3},0}, - {{"SAVP",4},0} -}; - -/** String table of RTSP transport attributes (rtsp_transport_attrib_e) */ -static const apt_str_table_item_t rtsp_transport_attrib_string_table[] = { - {{"client_port", 11},0}, - {{"server_port", 11},2}, - {{"source", 6},2}, - {{"destination", 11},0}, - {{"unicast", 7},0}, - {{"multicast", 9},1}, - {{"mode", 4},2} -}; - -/** Parse RTSP transport port range */ -static apt_bool_t rtsp_port_range_parse(rtsp_port_range_t *port_range, apt_text_stream_t *stream) -{ - apt_str_t value; - /* read min value */ - if(apt_text_field_read(stream,'-',TRUE,&value) == FALSE) { - return FALSE; - } - port_range->min = (apr_port_t)apt_size_value_parse(&value); - - /* read optional max value */ - if(apt_text_field_read(stream,';',TRUE,&value) == TRUE) { - port_range->max = (apr_port_t)apt_size_value_parse(&value); - } - - return TRUE; -} - -/** Generate RTSP transport port range */ -static apt_bool_t rtsp_port_range_generate(rtsp_transport_attrib_e attrib, const rtsp_port_range_t *port_range, apt_text_stream_t *text_stream) -{ - const apt_str_t *str; - str = apt_string_table_str_get(rtsp_transport_attrib_string_table,RTSP_TRANSPORT_ATTRIB_COUNT,attrib); - if(!str) { - return FALSE; - } - apt_text_string_insert(text_stream,str); - apt_text_char_insert(text_stream,'='); - apt_text_size_value_insert(text_stream,port_range->min); - if(port_range->max > port_range->min) { - apt_text_char_insert(text_stream,'-'); - apt_text_size_value_insert(text_stream,port_range->max); - } - return TRUE; -} - -/** Parse text value of RTSP transport attrib (source/destination, e.t.c) */ -static apt_bool_t rtsp_transport_attrib_value_parse(apt_str_t *value, apt_text_stream_t *stream, apr_pool_t *pool) -{ - apt_str_t field; - /* read value */ - if(apt_text_field_read(stream,';',TRUE,&field) == FALSE) { - return FALSE; - } - apt_string_copy(value,&field,pool); - return TRUE; -} - -/** Parse RTSP transport */ -static apt_bool_t rtsp_transport_attrib_parse(rtsp_transport_t *transport, const apt_str_t *field, apr_pool_t *pool) -{ - rtsp_transport_attrib_e attrib; - apt_str_t name; - apt_text_stream_t stream; - - stream.text = *field; - apt_text_stream_reset(&stream); - - /* read attrib name */ - if(apt_text_field_read(&stream,'=',TRUE,&name) == FALSE) { - return FALSE; - } - - attrib = apt_string_table_id_find(rtsp_transport_attrib_string_table,RTSP_TRANSPORT_ATTRIB_COUNT,&name); - switch(attrib) { - case RTSP_TRANSPORT_ATTRIB_CLIENT_PORT: - rtsp_port_range_parse(&transport->client_port_range,&stream); - break; - case RTSP_TRANSPORT_ATTRIB_SERVER_PORT: - rtsp_port_range_parse(&transport->client_port_range,&stream); - break; - case RTSP_TRANSPORT_ATTRIB_SOURCE: - rtsp_transport_attrib_value_parse(&transport->source,&stream,pool); - break; - case RTSP_TRANSPORT_ATTRIB_DESTINATION: - rtsp_transport_attrib_value_parse(&transport->destination,&stream,pool); - break; - case RTSP_TRANSPORT_ATTRIB_UNICAST: - transport->delivery = RTSP_DELIVERY_UNICAST; - break; - case RTSP_TRANSPORT_ATTRIB_MULTICAST: - transport->delivery = RTSP_DELIVERY_MULTICAST; - break; - case RTSP_TRANSPORT_ATTRIB_MODE: - rtsp_transport_attrib_value_parse(&transport->mode,&stream,pool); - break; - default: - break; - } - return TRUE; -} - -/** Parse RTSP transport protocol (RTP/AVP[/UDP]) */ -static apt_bool_t rtsp_transport_protocol_parse(rtsp_transport_t *transport, const apt_str_t *value) -{ - apt_str_t field; - apt_text_stream_t stream; - - stream.text = *value; - apt_text_stream_reset(&stream); - - /* set the defaults */ - transport->protocol = RTSP_TRANSPORT_RTP; - transport->profile = RTSP_PROFILE_AVP; - transport->lower_protocol = RTSP_LOWER_TRANSPORT_UDP; - - /* read transport protocol (RTP) */ - if(apt_text_field_read(&stream,'/',TRUE,&field) == FALSE) { - return FALSE; - } - transport->protocol = apt_string_table_id_find(rtsp_transport_string_table,RTSP_TRANSPORT_COUNT,&field); - if(transport->protocol >= RTSP_TRANSPORT_COUNT) { - return FALSE; - } - - /* read transport profile (AVP) */ - if(apt_text_field_read(&stream,'/',TRUE,&field) == FALSE) { - return FALSE; - } - transport->profile = apt_string_table_id_find(rtsp_profile_string_table,RTSP_PROFILE_COUNT,&field); - if(transport->profile >= RTSP_PROFILE_COUNT) { - return FALSE; - } - - /* read optional lower transport protocol (UDP) */ - if(apt_text_field_read(&stream,'/',TRUE,&field) == TRUE) { - transport->lower_protocol = apt_string_table_id_find(rtsp_lower_transport_string_table,RTSP_LOWER_TRANSPORT_COUNT,&field); - if(transport->lower_protocol >= RTSP_LOWER_TRANSPORT_COUNT) { - return FALSE; - } - } - - return TRUE; -} - -/** Parse RTSP transport */ -static apt_bool_t rtsp_transport_parse(rtsp_transport_t *transport, const apt_str_t *value, apr_pool_t *pool) -{ - apt_str_t field; - apt_text_stream_t stream; - - apt_text_stream_init(&stream,value->buf,value->length); - /* read transport protocol (RTP/AVP[/UDP]) */ - if(apt_text_field_read(&stream,';',TRUE,&field) == FALSE) { - return FALSE; - } - - /* parse transport protocol (RTP/AVP[/UDP]) */ - if(rtsp_transport_protocol_parse(transport,&field) == FALSE) { - return FALSE; - } - - /* read transport attributes */ - while(apt_text_field_read(&stream,';',TRUE,&field) == TRUE) { - rtsp_transport_attrib_parse(transport,&field,pool); - } - - return TRUE; -} - -/** Generate RTSP transport */ -static apt_bool_t rtsp_transport_generate(const rtsp_transport_t *transport, apt_str_t *value, apr_pool_t *pool) -{ - char buf[256]; - apt_text_stream_t text_stream; - const apt_str_t *protocol = apt_string_table_str_get(rtsp_transport_string_table,RTSP_TRANSPORT_COUNT,transport->protocol); - const apt_str_t *profile = apt_string_table_str_get(rtsp_profile_string_table,RTSP_PROFILE_COUNT,transport->profile); - if(!protocol || !profile) { - return FALSE; - } - - apt_text_stream_init(&text_stream,buf,sizeof(buf)); - apt_text_string_insert(&text_stream,protocol); - apt_text_char_insert(&text_stream,'/'); - apt_text_string_insert(&text_stream,profile); - - if(transport->delivery != RTSP_DELIVERY_NONE) { - const apt_str_t *delivery = NULL; - rtsp_transport_attrib_e attrib = RTSP_TRANSPORT_ATTRIB_NONE; - if(transport->delivery == RTSP_DELIVERY_UNICAST) { - attrib = RTSP_TRANSPORT_ATTRIB_UNICAST; - } - else if(transport->delivery == RTSP_DELIVERY_MULTICAST) { - attrib = RTSP_TRANSPORT_ATTRIB_MULTICAST; - } - delivery = apt_string_table_str_get(rtsp_transport_attrib_string_table,RTSP_TRANSPORT_ATTRIB_COUNT,attrib); - if(!delivery) { - return FALSE; - } - - apt_text_char_insert(&text_stream,';'); - apt_text_string_insert(&text_stream,delivery); - } - - if(rtsp_port_range_is_valid(&transport->client_port_range) == TRUE) { - apt_text_char_insert(&text_stream,';'); - rtsp_port_range_generate(RTSP_TRANSPORT_ATTRIB_CLIENT_PORT,&transport->client_port_range,&text_stream); - } - if(rtsp_port_range_is_valid(&transport->server_port_range) == TRUE) { - apt_text_char_insert(&text_stream,';'); - rtsp_port_range_generate(RTSP_TRANSPORT_ATTRIB_SERVER_PORT,&transport->server_port_range,&text_stream); - } - - if(transport->mode.length) { - const apt_str_t *str; - str = apt_string_table_str_get(rtsp_transport_attrib_string_table,RTSP_TRANSPORT_ATTRIB_COUNT,RTSP_TRANSPORT_ATTRIB_MODE); - if(str) { - apt_text_char_insert(&text_stream,';'); - apt_text_string_insert(&text_stream,str); - apt_text_char_insert(&text_stream,'='); - apt_text_string_insert(&text_stream,&transport->mode); - } - } - value->length = text_stream.pos - text_stream.text.buf; - value->buf = apr_palloc(pool,value->length + 1); - memcpy(value->buf,text_stream.text.buf,value->length); - value->buf[value->length] = '\0'; - return TRUE; -} - -/** Parse RTSP transport */ -static apt_bool_t rtsp_session_id_parse(apt_str_t *session_id, const apt_str_t *value, apr_pool_t *pool) -{ - char *sep; - if(!value->buf) { - return FALSE; - } - apt_string_copy(session_id,value,pool); - sep = strchr(session_id->buf,';'); - if(sep) { - session_id->length = sep - session_id->buf; - *sep = '\0'; - } - return TRUE; -} - -/** Parse RTSP header field value */ -static apt_bool_t rtsp_header_field_value_parse(rtsp_header_t *header, rtsp_header_field_id id, const apt_str_t *value, apr_pool_t *pool) -{ - apt_bool_t status = TRUE; - switch(id) { - case RTSP_HEADER_FIELD_CSEQ: - header->cseq = apt_size_value_parse(value); - break; - case RTSP_HEADER_FIELD_TRANSPORT: - status = rtsp_transport_parse(&header->transport,value,pool); - break; - case RTSP_HEADER_FIELD_SESSION_ID: - status = rtsp_session_id_parse(&header->session_id,value,pool); - break; - case RTSP_HEADER_FIELD_RTP_INFO: - header->rtp_info = *value; - break; - case RTSP_HEADER_FIELD_CONTENT_TYPE: - header->content_type = apt_string_table_id_find(rtsp_content_type_string_table,RTSP_CONTENT_TYPE_COUNT,value); - break; - case RTSP_HEADER_FIELD_CONTENT_LENGTH: - header->content_length = apt_size_value_parse(value); - break; - default: - status = FALSE; - } - return status; -} - -/** Generate RTSP header field value */ -static apt_bool_t rtsp_header_field_value_generate(const rtsp_header_t *header, rtsp_header_field_id id, apt_str_t *value, apr_pool_t *pool) -{ - switch(id) { - case RTSP_HEADER_FIELD_CSEQ: - apt_size_value_generate(header->cseq,value,pool); - break; - case RTSP_HEADER_FIELD_TRANSPORT: - rtsp_transport_generate(&header->transport,value,pool); - break; - case RTSP_HEADER_FIELD_SESSION_ID: - *value = header->session_id; - break; - case RTSP_HEADER_FIELD_RTP_INFO: - *value = header->rtp_info; - break; - case RTSP_HEADER_FIELD_CONTENT_TYPE: - { - const apt_str_t *name = apt_string_table_str_get(rtsp_content_type_string_table,RTSP_CONTENT_TYPE_COUNT,header->content_type); - if(name) { - *value = *name; - } - break; - } - case RTSP_HEADER_FIELD_CONTENT_LENGTH: - apt_size_value_generate(header->content_length,value,pool); - break; - default: - break; - } - return TRUE; -} - -/** Add RTSP header field */ -RTSP_DECLARE(apt_bool_t) rtsp_header_field_add(rtsp_header_t *header, apt_header_field_t *header_field, apr_pool_t *pool) -{ - /* parse header field (name-value) */ - header_field->id = apt_string_table_id_find( - rtsp_header_string_table, - RTSP_HEADER_FIELD_COUNT, - &header_field->name); - if(apt_string_is_empty(&header_field->value) == FALSE) { - rtsp_header_field_value_parse(header,header_field->id,&header_field->value,pool); - } - - return apt_header_section_field_add(&header->header_section,header_field); -} - -/** Parse RTSP header fields */ -RTSP_DECLARE(apt_bool_t) rtsp_header_fields_parse(rtsp_header_t *header, apr_pool_t *pool) -{ - apt_header_field_t *header_field; - for(header_field = APR_RING_FIRST(&header->header_section.ring); - header_field != APR_RING_SENTINEL(&header->header_section.ring, apt_header_field_t, link); - header_field = APR_RING_NEXT(header_field, link)) { - - header_field->id = apt_string_table_id_find( - rtsp_header_string_table, - RTSP_HEADER_FIELD_COUNT, - &header_field->name); - if(apt_string_is_empty(&header_field->value) == FALSE) { - rtsp_header_field_value_parse(header,header_field->id,&header_field->value,pool); - } - apt_header_section_field_set(&header->header_section,header_field); - } - return TRUE; -} - -/** Add RTSP header field property */ -RTSP_DECLARE(apt_bool_t) rtsp_header_property_add(rtsp_header_t *header, rtsp_header_field_id id, apr_pool_t *pool) -{ - apt_header_field_t *header_field; - header_field = apt_header_section_field_get(&header->header_section,id); - if(header_field) { - /* such header field already exists, just (re)generate value */ - return rtsp_header_field_value_generate(header,id,&header_field->value,pool); - } - - header_field = apt_header_field_alloc(pool); - if(rtsp_header_field_value_generate(header,id,&header_field->value,pool) == TRUE) { - const apt_str_t *name = apt_string_table_str_get(rtsp_header_string_table,RTSP_HEADER_FIELD_COUNT,id); - if(name) { - header_field->name = *name; - header_field->id = id; - return apt_header_section_field_insert(&header->header_section,header_field); - } - } - return FALSE; -} diff --git a/libs/unimrcp/libs/uni-rtsp/src/rtsp_message.c b/libs/unimrcp/libs/uni-rtsp/src/rtsp_message.c deleted file mode 100644 index 59fd7168e09..00000000000 --- a/libs/unimrcp/libs/uni-rtsp/src/rtsp_message.c +++ /dev/null @@ -1,80 +0,0 @@ -/* - * Copyright 2008-2014 Arsen Chaloyan - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - * - * $Id: rtsp_message.c 2136 2014-07-04 06:33:36Z achaloyan@gmail.com $ - */ - -#include "rtsp_message.h" - -/** Initialize RTSP message */ -static APR_INLINE void rtsp_message_init(rtsp_message_t *message, rtsp_message_type_e message_type, apr_pool_t *pool) -{ - message->pool = pool; - rtsp_start_line_init(&message->start_line,message_type); - rtsp_header_init(&message->header,pool); - apt_string_reset(&message->body); -} - -/** Create RTSP message */ -RTSP_DECLARE(rtsp_message_t*) rtsp_message_create(rtsp_message_type_e message_type, apr_pool_t *pool) -{ - rtsp_message_t *message = apr_palloc(pool,sizeof(rtsp_message_t)); - rtsp_message_init(message,message_type,pool); - return message; -} - -/** Create RTSP request message */ -RTSP_DECLARE(rtsp_message_t*) rtsp_request_create(apr_pool_t *pool) -{ - rtsp_message_t *request = rtsp_message_create(RTSP_MESSAGE_TYPE_REQUEST,pool); - request->start_line.common.request_line.version = RTSP_VERSION_1; - return request; -} - -/** Create RTSP response message */ -RTSP_DECLARE(rtsp_message_t*) rtsp_response_create(const rtsp_message_t *request, rtsp_status_code_e status_code, rtsp_reason_phrase_e reason, apr_pool_t *pool) -{ - const apt_str_t *reason_str; - rtsp_status_line_t *status_line; - rtsp_message_t *response = rtsp_message_create(RTSP_MESSAGE_TYPE_RESPONSE,pool); - status_line = &response->start_line.common.status_line; - status_line->version = request->start_line.common.request_line.version; - status_line->status_code = status_code; - reason_str = rtsp_reason_phrase_get(reason); - if(reason_str) { - apt_string_copy(&status_line->reason,reason_str,pool); - } - - if(rtsp_header_property_check(&request->header,RTSP_HEADER_FIELD_CSEQ) == TRUE) { - response->header.cseq = request->header.cseq; - rtsp_header_property_add(&response->header,RTSP_HEADER_FIELD_CSEQ,response->pool); - } - - if(rtsp_header_property_check(&request->header,RTSP_HEADER_FIELD_TRANSPORT) == TRUE) { - const rtsp_transport_t *req_transport = &request->header.transport; - rtsp_transport_t *res_transport = &response->header.transport; - if(req_transport->mode.length) { - apt_string_copy(&res_transport->mode,&req_transport->mode,pool); - } - } - - return response; -} - -/** Destroy RTSP message */ -RTSP_DECLARE(void) rtsp_message_destroy(rtsp_message_t *message) -{ - /* nothing to do message is allocated from pool */ -} diff --git a/libs/unimrcp/libs/uni-rtsp/src/rtsp_server.c b/libs/unimrcp/libs/uni-rtsp/src/rtsp_server.c deleted file mode 100644 index 428634fde21..00000000000 --- a/libs/unimrcp/libs/uni-rtsp/src/rtsp_server.c +++ /dev/null @@ -1,889 +0,0 @@ -/* - * Copyright 2008-2014 Arsen Chaloyan - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - * - * $Id: rtsp_server.c 2252 2014-11-21 02:45:15Z achaloyan@gmail.com $ - */ - -#ifdef WIN32 -#pragma warning(disable: 4127) -#endif -#include -#include -#include "rtsp_server.h" -#include "rtsp_stream.h" -#include "apt_poller_task.h" -#include "apt_text_stream.h" -#include "apt_pool.h" -#include "apt_obj_list.h" -#include "apt_log.h" - -#define RTSP_SESSION_ID_HEX_STRING_LENGTH 16 -#define RTSP_STREAM_BUFFER_SIZE 1024 - -typedef struct rtsp_server_connection_t rtsp_server_connection_t; - -/** RTSP server */ -struct rtsp_server_t { - apr_pool_t *pool; - apt_poller_task_t *task; - - /** List (ring) of RTSP connections */ - APR_RING_HEAD(rtsp_server_connection_head_t, rtsp_server_connection_t) connection_list; - - /* Listening socket descriptor */ - apr_sockaddr_t *sockaddr; - apr_socket_t *listen_sock; - apr_pollfd_t listen_sock_pfd; - - void *obj; - const rtsp_server_vtable_t *vtable; -}; - -/** RTSP connection */ -struct rtsp_server_connection_t { - /** Ring entry */ - APR_RING_ENTRY(rtsp_server_connection_t) link; - - /** Memory pool */ - apr_pool_t *pool; - /** Client IP address */ - char *client_ip; - /** Accepted socket */ - apr_socket_t *sock; - /** Socket poll descriptor */ - apr_pollfd_t sock_pfd; - /** String identifier used for traces */ - const char *id; - - /** RTSP server, connection belongs to */ - rtsp_server_t *server; - - /** Session table (rtsp_server_session_t*) */ - apr_hash_t *session_table; - - char rx_buffer[RTSP_STREAM_BUFFER_SIZE]; - apt_text_stream_t rx_stream; - rtsp_parser_t *parser; - - char tx_buffer[RTSP_STREAM_BUFFER_SIZE]; - apt_text_stream_t tx_stream; - rtsp_generator_t *generator; -}; - -/** RTSP session */ -struct rtsp_server_session_t { - apr_pool_t *pool; - void *obj; - rtsp_server_connection_t *connection; - - /** Session identifier */ - apt_str_t id; - - /** Last cseq sent */ - apr_size_t last_cseq; - - /** In-progress request */ - rtsp_message_t *active_request; - /** request queue */ - apt_obj_list_t *request_queue; - - /** Resource table */ - apr_hash_t *resource_table; - - /** In-progress termination request */ - apt_bool_t terminating; -}; - -typedef enum { - TASK_MSG_SEND_MESSAGE, - TASK_MSG_TERMINATE_SESSION -} task_msg_data_type_e; - -typedef struct task_msg_data_t task_msg_data_t; - -struct task_msg_data_t { - task_msg_data_type_e type; - rtsp_server_t *server; - rtsp_server_session_t *session; - rtsp_message_t *message; -}; - -static apt_bool_t rtsp_server_on_destroy(apt_task_t *task); -static apt_bool_t rtsp_server_task_msg_process(apt_task_t *task, apt_task_msg_t *msg); -static apt_bool_t rtsp_server_poller_signal_process(void *obj, const apr_pollfd_t *descriptor); -static apt_bool_t rtsp_server_message_send(rtsp_server_t *server, rtsp_server_connection_t *connection, rtsp_message_t *message); - -static apt_bool_t rtsp_server_listening_socket_create(rtsp_server_t *server); -static void rtsp_server_listening_socket_destroy(rtsp_server_t *server); - -/** Get string identifier */ -static const char* rtsp_server_id_get(const rtsp_server_t *server) -{ - apt_task_t *task = apt_poller_task_base_get(server->task); - return apt_task_name_get(task); -} - -/** Create RTSP server */ -RTSP_DECLARE(rtsp_server_t*) rtsp_server_create( - const char *id, - const char *listen_ip, - apr_port_t listen_port, - apr_size_t max_connection_count, - void *obj, - const rtsp_server_vtable_t *handler, - apr_pool_t *pool) -{ - apt_task_t *task; - apt_task_vtable_t *vtable; - apt_task_msg_pool_t *msg_pool; - rtsp_server_t *server; - - if(!listen_ip) { - return NULL; - } - - apt_log(APT_LOG_MARK,APT_PRIO_NOTICE,"Create RTSP Server [%s] %s:%hu [%"APR_SIZE_T_FMT"]", - id, - listen_ip, - listen_port, - max_connection_count); - server = apr_palloc(pool,sizeof(rtsp_server_t)); - server->pool = pool; - server->obj = obj; - server->vtable = handler; - - server->listen_sock = NULL; - server->sockaddr = NULL; - apr_sockaddr_info_get(&server->sockaddr,listen_ip,APR_INET,listen_port,0,pool); - if(!server->sockaddr) { - return NULL; - } - - msg_pool = apt_task_msg_pool_create_dynamic(sizeof(task_msg_data_t),pool); - - server->task = apt_poller_task_create( - max_connection_count + 1, - rtsp_server_poller_signal_process, - server, - msg_pool, - pool); - if(!server->task) { - return NULL; - } - - task = apt_poller_task_base_get(server->task); - if(task) { - apt_task_name_set(task,id); - } - - vtable = apt_poller_task_vtable_get(server->task); - if(vtable) { - vtable->destroy = rtsp_server_on_destroy; - vtable->process_msg = rtsp_server_task_msg_process; - } - - APR_RING_INIT(&server->connection_list, rtsp_server_connection_t, link); - - if(rtsp_server_listening_socket_create(server) != TRUE) { - apt_log(APT_LOG_MARK,APT_PRIO_WARNING,"Failed to Create Listening Socket [%s] %s:%hu", - id, - listen_ip, - listen_port); - } - return server; -} - -static apt_bool_t rtsp_server_on_destroy(apt_task_t *task) -{ - apt_poller_task_t *poller_task = apt_task_object_get(task); - rtsp_server_t *server = apt_poller_task_object_get(poller_task); - - rtsp_server_listening_socket_destroy(server); - apt_poller_task_cleanup(poller_task); - return TRUE; -} - -/** Destroy RTSP server */ -RTSP_DECLARE(apt_bool_t) rtsp_server_destroy(rtsp_server_t *server) -{ - apt_log(APT_LOG_MARK,APT_PRIO_NOTICE,"Destroy RTSP Server [%s]", - rtsp_server_id_get(server)); - return apt_poller_task_destroy(server->task); -} - -/** Start connection agent */ -RTSP_DECLARE(apt_bool_t) rtsp_server_start(rtsp_server_t *server) -{ - return apt_poller_task_start(server->task); -} - -/** Terminate connection agent */ -RTSP_DECLARE(apt_bool_t) rtsp_server_terminate(rtsp_server_t *server) -{ - return apt_poller_task_terminate(server->task); -} - -/** Get task */ -RTSP_DECLARE(apt_task_t*) rtsp_server_task_get(const rtsp_server_t *server) -{ - return apt_poller_task_base_get(server->task); -} - -/** Get external object */ -RTSP_DECLARE(void*) rtsp_server_object_get(const rtsp_server_t *server) -{ - return server->obj; -} - -/** Get object associated with the session */ -RTSP_DECLARE(void*) rtsp_server_session_object_get(const rtsp_server_session_t *session) -{ - return session->obj; -} - -/** Set object associated with the session */ -RTSP_DECLARE(void) rtsp_server_session_object_set(rtsp_server_session_t *session, void *obj) -{ - session->obj = obj; -} - -/** Get the session identifier */ -RTSP_DECLARE(const apt_str_t*) rtsp_server_session_id_get(const rtsp_server_session_t *session) -{ - return &session->id; -} - -/** Get active request */ -RTSP_DECLARE(const rtsp_message_t*) rtsp_server_session_request_get(const rtsp_server_session_t *session) -{ - return session->active_request; -} - -/** Get the session destination (client) IP address */ -RTSP_DECLARE(const char*) rtsp_server_session_destination_get(const rtsp_server_session_t *session) -{ - if(session->connection) { - return session->connection->client_ip; - } - return NULL; -} - -/** Signal task message */ -static apt_bool_t rtsp_server_control_message_signal( - task_msg_data_type_e type, - rtsp_server_t *server, - rtsp_server_session_t *session, - rtsp_message_t *message) -{ - apt_task_t *task = apt_poller_task_base_get(server->task); - apt_task_msg_t *task_msg = apt_task_msg_get(task); - if(task_msg) { - task_msg_data_t *data = (task_msg_data_t*)task_msg->data; - data->type = type; - data->server = server; - data->session = session; - data->message = message; - apt_task_msg_signal(task,task_msg); - } - return TRUE; -} - -/** Signal RTSP message */ -RTSP_DECLARE(apt_bool_t) rtsp_server_session_respond(rtsp_server_t *server, rtsp_server_session_t *session, rtsp_message_t *message) -{ - return rtsp_server_control_message_signal(TASK_MSG_SEND_MESSAGE,server,session,message); -} - -/** Signal terminate response */ -RTSP_DECLARE(apt_bool_t) rtsp_server_session_terminate(rtsp_server_t *server, rtsp_server_session_t *session) -{ - return rtsp_server_control_message_signal(TASK_MSG_TERMINATE_SESSION,server,session,NULL); -} - -/* Create RTSP session */ -static rtsp_server_session_t* rtsp_server_session_create(rtsp_server_t *server) -{ - rtsp_server_session_t *session; - apr_pool_t *pool = apt_pool_create(); - session = apr_palloc(pool,sizeof(rtsp_server_session_t)); - session->pool = pool; - session->obj = NULL; - session->last_cseq = 0; - session->active_request = NULL; - session->request_queue = apt_list_create(pool); - session->resource_table = apr_hash_make(pool); - session->terminating = FALSE; - - apt_unique_id_generate(&session->id,RTSP_SESSION_ID_HEX_STRING_LENGTH,pool); - apt_log(APT_LOG_MARK,APT_PRIO_NOTICE,"Create RTSP Session "APT_SID_FMT,session->id.buf); - if(server->vtable->create_session(server,session) != TRUE) { - apr_pool_destroy(pool); - return NULL; - } - return session; -} - -/* Destroy RTSP session */ -static void rtsp_server_session_destroy(rtsp_server_session_t *session) -{ - apt_log(APT_LOG_MARK,APT_PRIO_NOTICE,"Destroy RTSP Session "APT_SID_FMT, - session ? session->id.buf : "(null)"); - if(session && session->pool) { - apr_pool_destroy(session->pool); - } -} - -/** Destroy RTSP connection */ -static void rtsp_server_connection_destroy(rtsp_server_connection_t *rtsp_connection) -{ - apt_log(APT_LOG_MARK,APT_PRIO_NOTICE,"Destroy RTSP Connection %s",rtsp_connection->id); - apr_pool_destroy(rtsp_connection->pool); -} - -/* Finally terminate RTSP session */ -static apt_bool_t rtsp_server_session_do_terminate(rtsp_server_t *server, rtsp_server_session_t *session) -{ - rtsp_server_connection_t *rtsp_connection = session->connection; - - if(session->active_request) { - rtsp_message_t *response = rtsp_response_create(session->active_request, - RTSP_STATUS_CODE_OK,RTSP_REASON_PHRASE_OK,session->active_request->pool); - if(response) { - if(session->id.buf) { - response->header.session_id = session->id; - rtsp_header_property_add(&response->header,RTSP_HEADER_FIELD_SESSION_ID,response->pool); - } - - if(rtsp_connection) { - rtsp_server_message_send(server,rtsp_connection,response); - } - } - } - - apt_log(APT_LOG_MARK,APT_PRIO_INFO,"Remove RTSP Session "APT_SID_FMT,session->id.buf); - if(rtsp_connection) { - apr_hash_set(rtsp_connection->session_table,session->id.buf,session->id.length,NULL); - } - rtsp_server_session_destroy(session); - - if(rtsp_connection && !rtsp_connection->sock) { - if(apr_hash_count(rtsp_connection->session_table) == 0) { - rtsp_server_connection_destroy(rtsp_connection); - } - } - return TRUE; -} - -static apt_bool_t rtsp_server_error_respond(rtsp_server_t *server, rtsp_server_connection_t *rtsp_connection, rtsp_message_t *request, - rtsp_status_code_e status_code, rtsp_reason_phrase_e reason) -{ - /* send error response to client */ - rtsp_message_t *response = rtsp_response_create(request,status_code,reason,request->pool); - if(rtsp_server_message_send(server,rtsp_connection,response) == FALSE) { - apt_log(APT_LOG_MARK,APT_PRIO_WARNING,"Failed to Send RTSP Response"); - return FALSE; - } - return TRUE; -} - -static apt_bool_t rtsp_server_session_terminate_request(rtsp_server_t *server, rtsp_server_session_t *session) -{ - session->terminating = TRUE; - return server->vtable->terminate_session(server,session); -} - -static apt_bool_t rtsp_server_session_message_handle(rtsp_server_t *server, rtsp_server_session_t *session, rtsp_message_t *message) -{ - if(message->start_line.common.request_line.method_id == RTSP_METHOD_TEARDOWN) { - /* remove resource */ - const char *resource_name = message->start_line.common.request_line.resource_name; - apr_hash_set(session->resource_table,resource_name,APR_HASH_KEY_STRING,NULL); - - if(apr_hash_count(session->resource_table) == 0) { - rtsp_server_session_terminate_request(server,session); - return TRUE; - } - } - - if(server->vtable->handle_message(server,session,message) != TRUE) { - apt_log(APT_LOG_MARK,APT_PRIO_WARNING,"Failed to Handle Message "APT_SID_FMT,session->id.buf); - rtsp_server_error_respond(server,session->connection,message, - RTSP_STATUS_CODE_INTERNAL_SERVER_ERROR, - RTSP_REASON_PHRASE_INTERNAL_SERVER_ERROR); - return FALSE; - } - return TRUE; -} - -/* Process incoming SETUP/DESCRIBE request */ -static rtsp_server_session_t* rtsp_server_session_setup_process(rtsp_server_t *server, rtsp_server_connection_t *rtsp_connection, rtsp_message_t *message) -{ - rtsp_server_session_t *session = NULL; - if(message->start_line.common.request_line.method_id == RTSP_METHOD_SETUP) { - /* create new session */ - session = rtsp_server_session_create(server); - if(!session) { - return NULL; - } - session->connection = rtsp_connection; - apt_log(APT_LOG_MARK,APT_PRIO_INFO,"Add RTSP Session "APT_SID_FMT,session->id.buf); - apr_hash_set(rtsp_connection->session_table,session->id.buf,session->id.length,session); - } - else if(message->start_line.common.request_line.method_id == RTSP_METHOD_DESCRIBE) { - /* create new session as a communication object */ - session = rtsp_server_session_create(server); - if(!session) { - return NULL; - } - session->connection = rtsp_connection; - apt_log(APT_LOG_MARK,APT_PRIO_INFO,"Add RTSP Session "APT_SID_FMT,session->id.buf); - apr_hash_set(rtsp_connection->session_table,session->id.buf,session->id.length,session); - } - else { - /* error case */ - apt_log(APT_LOG_MARK,APT_PRIO_WARNING,"Missing RTSP Session-ID"); - rtsp_server_error_respond(server,rtsp_connection,message, - RTSP_STATUS_CODE_BAD_REQUEST, - RTSP_REASON_PHRASE_BAD_REQUEST); - } - return session; -} - -/* Process incoming RTSP request */ -static apt_bool_t rtsp_server_session_request_process(rtsp_server_t *server, rtsp_server_connection_t *rtsp_connection, rtsp_message_t *message) -{ - rtsp_server_session_t *session = NULL; - if(message->start_line.message_type != RTSP_MESSAGE_TYPE_REQUEST) { - /* received response to ANNOUNCE request/event */ - return TRUE; - } - - if(rtsp_header_property_check(&message->header,RTSP_HEADER_FIELD_SESSION_ID) != TRUE) { - /* no session-id specified */ - session = rtsp_server_session_setup_process(server,rtsp_connection,message); - if(session) { - session->active_request = message; - if(rtsp_server_session_message_handle(server,session,message) != TRUE) { - rtsp_server_session_destroy(session); - } - } - else { - /* error case, failed to create a session */ - apt_log(APT_LOG_MARK,APT_PRIO_WARNING,"Failed to Create RTSP Session"); - return rtsp_server_error_respond(server,rtsp_connection,message, - RTSP_STATUS_CODE_NOT_ACCEPTABLE, - RTSP_REASON_PHRASE_NOT_ACCEPTABLE); - } - return TRUE; - } - - /* existing session */ - session = apr_hash_get( - rtsp_connection->session_table, - message->header.session_id.buf, - message->header.session_id.length); - if(!session) { - /* error case, no such session */ - apt_log(APT_LOG_MARK,APT_PRIO_WARNING,"No Such RTSP Session "APT_SID_FMT,message->header.session_id.buf); - return rtsp_server_error_respond(server,rtsp_connection,message, - RTSP_STATUS_CODE_NOT_FOUND, - RTSP_REASON_PHRASE_NOT_FOUND); - } - - if(session->terminating == TRUE) { - /* error case, session is being terminated */ - apt_log(APT_LOG_MARK,APT_PRIO_WARNING,"Not Acceptable Request "APT_SID_FMT,message->header.session_id.buf); - return rtsp_server_error_respond(server,rtsp_connection,message, - RTSP_STATUS_CODE_NOT_ACCEPTABLE, - RTSP_REASON_PHRASE_NOT_ACCEPTABLE); - } - - if(session->active_request) { - apt_log(APT_LOG_MARK,APT_PRIO_DEBUG,"Push RTSP Request to Queue "APT_SID_FMT,session->id.buf); - apt_list_push_back(session->request_queue,message,message->pool); - return TRUE; - } - - /* handle the request */ - session->active_request = message; - rtsp_server_session_message_handle(server,session,message); - return TRUE; -} - -/* Process outgoing RTSP response */ -static apt_bool_t rtsp_server_session_response_process(rtsp_server_t *server, rtsp_server_session_t *session, rtsp_message_t *message) -{ - apt_bool_t terminate = FALSE; - rtsp_message_t *request = NULL; - if(message->start_line.message_type == RTSP_MESSAGE_TYPE_REQUEST) { - /* RTSP ANNOUNCE request (asynch event) */ - const char *resource_name = message->start_line.common.request_line.resource_name; - if(resource_name) { - request = apr_hash_get(session->resource_table,resource_name,APR_HASH_KEY_STRING); - } - if(!request) { - return FALSE; - } - message->start_line.common.request_line.url = request->start_line.common.request_line.url; - message->header.cseq = session->last_cseq; - rtsp_header_property_add(&message->header,RTSP_HEADER_FIELD_CSEQ,message->pool); - - if(session->id.buf) { - message->header.session_id = session->id; - rtsp_header_property_add(&message->header,RTSP_HEADER_FIELD_SESSION_ID,message->pool); - } - rtsp_server_message_send(server,session->connection,message); - return TRUE; - } - - if(!session->active_request) { - /* unexpected response */ - return FALSE; - } - - request = session->active_request; - if(request->start_line.common.request_line.method_id == RTSP_METHOD_DESCRIBE) { - terminate = TRUE; - } - else { - if(session->id.buf) { - message->header.session_id = session->id; - rtsp_header_property_add(&message->header,RTSP_HEADER_FIELD_SESSION_ID,message->pool); - } - if(request->start_line.common.request_line.method_id == RTSP_METHOD_SETUP) { - if(message->start_line.common.status_line.status_code == RTSP_STATUS_CODE_OK) { - /* add resource */ - const char *resource_name = request->start_line.common.request_line.resource_name; - apr_hash_set(session->resource_table,resource_name,APR_HASH_KEY_STRING,request); - } - else if(apr_hash_count(session->resource_table) == 0) { - terminate = TRUE; - } - } - } - - session->last_cseq = message->header.cseq; - rtsp_server_message_send(server,session->connection,message); - - if(terminate == TRUE) { - session->active_request = NULL; - rtsp_server_session_terminate_request(server,session); - return TRUE; - } - - session->active_request = apt_list_pop_front(session->request_queue); - if(session->active_request) { - rtsp_server_session_message_handle(server,session,session->active_request); - } - return TRUE; -} - -/* Send RTSP message through RTSP connection */ -static apt_bool_t rtsp_server_message_send(rtsp_server_t *server, rtsp_server_connection_t *rtsp_connection, rtsp_message_t *message) -{ - apt_bool_t status = FALSE; - apt_text_stream_t *stream; - apt_message_status_e result; - - if(!rtsp_connection || !rtsp_connection->sock) { - apt_log(APT_LOG_MARK,APT_PRIO_WARNING,"No RTSP Connection"); - return FALSE; - } - stream = &rtsp_connection->tx_stream; - - do { - stream->text.length = sizeof(rtsp_connection->tx_buffer)-1; - apt_text_stream_reset(stream); - result = rtsp_generator_run(rtsp_connection->generator,message,stream); - if(result != APT_MESSAGE_STATUS_INVALID) { - stream->text.length = stream->pos - stream->text.buf; - *stream->pos = '\0'; - - apt_log(APT_LOG_MARK,APT_PRIO_INFO,"Send RTSP Data %s [%"APR_SIZE_T_FMT" bytes]\n%s", - rtsp_connection->id, - stream->text.length, - stream->text.buf); - if(apr_socket_send(rtsp_connection->sock,stream->text.buf,&stream->text.length) == APR_SUCCESS) { - status = TRUE; - } - else { - apt_log(APT_LOG_MARK,APT_PRIO_WARNING,"Failed to Send RTSP Data"); - } - } - else { - apt_log(APT_LOG_MARK,APT_PRIO_WARNING,"Failed to Generate RTSP Data"); - } - } - while(result == APT_MESSAGE_STATUS_INCOMPLETE); - - return status; -} - -static apt_bool_t rtsp_server_message_handler(rtsp_server_connection_t *rtsp_connection, rtsp_message_t *message, apt_message_status_e status) -{ - if(status == APT_MESSAGE_STATUS_COMPLETE) { - /* message is completely parsed */ - apt_str_t *destination; - destination = &message->header.transport.destination; - if(!destination->buf && rtsp_connection->client_ip) { - apt_string_assign(destination,rtsp_connection->client_ip,rtsp_connection->pool); - } - rtsp_server_session_request_process(rtsp_connection->server,rtsp_connection,message); - } - else if(status == APT_MESSAGE_STATUS_INVALID) { - /* error case */ - rtsp_message_t *response; - apt_log(APT_LOG_MARK,APT_PRIO_WARNING,"Failed to Parse RTSP Data"); - if(message) { - response = rtsp_response_create(message,RTSP_STATUS_CODE_BAD_REQUEST, - RTSP_REASON_PHRASE_BAD_REQUEST,message->pool); - if(rtsp_server_message_send(rtsp_connection->server,rtsp_connection,response) == FALSE) { - apt_log(APT_LOG_MARK,APT_PRIO_WARNING,"Failed to Send RTSP Response"); - } - } - } - return TRUE; -} - -/** Create listening socket and add it to pollset */ -static apt_bool_t rtsp_server_listening_socket_create(rtsp_server_t *server) -{ - apr_status_t status; - - if(!server->sockaddr) { - return FALSE; - } - - /* create listening socket */ - status = apr_socket_create(&server->listen_sock, server->sockaddr->family, SOCK_STREAM, APR_PROTO_TCP, server->pool); - if(status != APR_SUCCESS) { - return FALSE; - } - - apr_socket_opt_set(server->listen_sock, APR_SO_NONBLOCK, 0); - apr_socket_timeout_set(server->listen_sock, -1); - apr_socket_opt_set(server->listen_sock, APR_SO_REUSEADDR, 1); - - status = apr_socket_bind(server->listen_sock, server->sockaddr); - if(status != APR_SUCCESS) { - apr_socket_close(server->listen_sock); - server->listen_sock = NULL; - return FALSE; - } - status = apr_socket_listen(server->listen_sock, SOMAXCONN); - if(status != APR_SUCCESS) { - apr_socket_close(server->listen_sock); - server->listen_sock = NULL; - return FALSE; - } - - /* add listening socket to pollset */ - memset(&server->listen_sock_pfd,0,sizeof(apr_pollfd_t)); - server->listen_sock_pfd.desc_type = APR_POLL_SOCKET; - server->listen_sock_pfd.reqevents = APR_POLLIN; - server->listen_sock_pfd.desc.s = server->listen_sock; - server->listen_sock_pfd.client_data = server->listen_sock; - if(apt_poller_task_descriptor_add(server->task, &server->listen_sock_pfd) != TRUE) { - apt_log(APT_LOG_MARK,APT_PRIO_WARNING,"Failed to Add Listening Socket to Pollset"); - apr_socket_close(server->listen_sock); - server->listen_sock = NULL; - return FALSE; - } - - return TRUE; -} - -/** Remove from pollset and destroy listening socket */ -static void rtsp_server_listening_socket_destroy(rtsp_server_t *server) -{ - if(server->listen_sock) { - apt_poller_task_descriptor_remove(server->task,&server->listen_sock_pfd); - apr_socket_close(server->listen_sock); - server->listen_sock = NULL; - } -} - -/* Accept RTSP connection */ -static apt_bool_t rtsp_server_connection_accept(rtsp_server_t *server) -{ - rtsp_server_connection_t *rtsp_connection; - char *local_ip = NULL; - char *remote_ip = NULL; - apr_sockaddr_t *l_sockaddr = NULL; - apr_sockaddr_t *r_sockaddr = NULL; - apr_pool_t *pool = apt_pool_create(); - if(!pool) { - return FALSE; - } - - rtsp_connection = apr_palloc(pool,sizeof(rtsp_server_connection_t)); - rtsp_connection->pool = pool; - rtsp_connection->sock = NULL; - rtsp_connection->client_ip = NULL; - APR_RING_ELEM_INIT(rtsp_connection,link); - - if(apr_socket_accept(&rtsp_connection->sock,server->listen_sock,rtsp_connection->pool) != APR_SUCCESS) { - apt_log(APT_LOG_MARK,APT_PRIO_WARNING,"Failed to Accept RTSP Connection"); - apr_pool_destroy(pool); - return FALSE; - } - - if(apr_socket_addr_get(&l_sockaddr,APR_LOCAL,rtsp_connection->sock) != APR_SUCCESS || - apr_socket_addr_get(&r_sockaddr,APR_REMOTE,rtsp_connection->sock) != APR_SUCCESS) { - apt_log(APT_LOG_MARK,APT_PRIO_WARNING,"Failed to Get RTSP Socket Address"); - apr_pool_destroy(pool); - return FALSE; - } - - apr_sockaddr_ip_get(&local_ip,l_sockaddr); - apr_sockaddr_ip_get(&remote_ip,r_sockaddr); - rtsp_connection->client_ip = remote_ip; - rtsp_connection->id = apr_psprintf(pool,"%s:%hu <-> %s:%hu", - local_ip,l_sockaddr->port, - remote_ip,r_sockaddr->port); - - memset(&rtsp_connection->sock_pfd,0,sizeof(apr_pollfd_t)); - rtsp_connection->sock_pfd.desc_type = APR_POLL_SOCKET; - rtsp_connection->sock_pfd.reqevents = APR_POLLIN; - rtsp_connection->sock_pfd.desc.s = rtsp_connection->sock; - rtsp_connection->sock_pfd.client_data = rtsp_connection; - if(apt_poller_task_descriptor_add(server->task,&rtsp_connection->sock_pfd) != TRUE) { - apt_log(APT_LOG_MARK,APT_PRIO_WARNING,"Failed to Add to Pollset %s",rtsp_connection->id); - apr_socket_close(rtsp_connection->sock); - apr_pool_destroy(pool); - return FALSE; - } - - apt_log(APT_LOG_MARK,APT_PRIO_NOTICE,"Accepted TCP Connection %s",rtsp_connection->id); - rtsp_connection->session_table = apr_hash_make(rtsp_connection->pool); - apt_text_stream_init(&rtsp_connection->rx_stream,rtsp_connection->rx_buffer,sizeof(rtsp_connection->rx_buffer)-1); - apt_text_stream_init(&rtsp_connection->tx_stream,rtsp_connection->tx_buffer,sizeof(rtsp_connection->tx_buffer)-1); - rtsp_connection->parser = rtsp_parser_create(rtsp_connection->pool); - rtsp_connection->generator = rtsp_generator_create(rtsp_connection->pool); - rtsp_connection->server = server; - APR_RING_INSERT_TAIL(&server->connection_list,rtsp_connection,rtsp_server_connection_t,link); - return TRUE; -} - -/** Close connection */ -static apt_bool_t rtsp_server_connection_close(rtsp_server_t *server, rtsp_server_connection_t *rtsp_connection) -{ - apr_size_t remaining_sessions = 0; - if(!rtsp_connection || !rtsp_connection->sock) { - return FALSE; - } - apt_log(APT_LOG_MARK,APT_PRIO_INFO,"Close RTSP Connection %s",rtsp_connection->id); - apt_poller_task_descriptor_remove(server->task,&rtsp_connection->sock_pfd); - apr_socket_close(rtsp_connection->sock); - rtsp_connection->sock = NULL; - - APR_RING_REMOVE(rtsp_connection,link); - - remaining_sessions = apr_hash_count(rtsp_connection->session_table); - if(remaining_sessions) { - rtsp_server_session_t *session; - void *val; - apr_hash_index_t *it; - apt_log(APT_LOG_MARK,APT_PRIO_NOTICE,"Terminate Remaining RTSP Sessions [%"APR_SIZE_T_FMT"]", - remaining_sessions); - it = apr_hash_first(rtsp_connection->pool,rtsp_connection->session_table); - for(; it; it = apr_hash_next(it)) { - apr_hash_this(it,NULL,NULL,&val); - session = val; - if(session && session->terminating == FALSE) { - rtsp_server_session_terminate_request(server,session); - } - } - } - else { - rtsp_server_connection_destroy(rtsp_connection); - } - return TRUE; -} - - -/* Receive RTSP message through RTSP connection */ -static apt_bool_t rtsp_server_poller_signal_process(void *obj, const apr_pollfd_t *descriptor) -{ - rtsp_server_t *server = obj; - rtsp_server_connection_t *rtsp_connection = descriptor->client_data; - apr_status_t status; - apr_size_t offset; - apr_size_t length; - apt_text_stream_t *stream; - rtsp_message_t *message; - apt_message_status_e msg_status; - - if(descriptor->desc.s == server->listen_sock) { - apt_log(APT_LOG_MARK,APT_PRIO_DEBUG,"Accept Connection"); - return rtsp_server_connection_accept(server); - } - - if(!rtsp_connection || !rtsp_connection->sock) { - return FALSE; - } - stream = &rtsp_connection->rx_stream; - - /* calculate offset remaining from the previous receive / if any */ - offset = stream->pos - stream->text.buf; - /* calculate available length */ - length = sizeof(rtsp_connection->rx_buffer) - 1 - offset; - - status = apr_socket_recv(rtsp_connection->sock,stream->pos,&length); - if(status == APR_EOF || length == 0) { - apt_log(APT_LOG_MARK,APT_PRIO_INFO,"RTSP Peer Disconnected %s",rtsp_connection->id); - return rtsp_server_connection_close(server,rtsp_connection); - } - - /* calculate actual length of the stream */ - stream->text.length = offset + length; - stream->pos[length] = '\0'; - apt_log(APT_LOG_MARK,APT_PRIO_INFO,"Receive RTSP Data %s [%"APR_SIZE_T_FMT" bytes]\n%s", - rtsp_connection->id, - length, - stream->pos); - - /* reset pos */ - apt_text_stream_reset(stream); - - do { - msg_status = rtsp_parser_run(rtsp_connection->parser,stream,&message); - rtsp_server_message_handler(rtsp_connection,message,msg_status); - } - while(apt_text_is_eos(stream) == FALSE); - - /* scroll remaining stream */ - apt_text_stream_scroll(stream); - return TRUE; -} - -/* Process task message */ -static apt_bool_t rtsp_server_task_msg_process(apt_task_t *task, apt_task_msg_t *task_msg) -{ - apt_poller_task_t *poller_task = apt_task_object_get(task); - rtsp_server_t *server = apt_poller_task_object_get(poller_task); - - task_msg_data_t *data = (task_msg_data_t*) task_msg->data; - switch(data->type) { - case TASK_MSG_SEND_MESSAGE: - rtsp_server_session_response_process(server,data->session,data->message); - break; - case TASK_MSG_TERMINATE_SESSION: - rtsp_server_session_do_terminate(server,data->session); - break; - } - - return TRUE; -} diff --git a/libs/unimrcp/libs/uni-rtsp/src/rtsp_start_line.c b/libs/unimrcp/libs/uni-rtsp/src/rtsp_start_line.c deleted file mode 100644 index a374675af33..00000000000 --- a/libs/unimrcp/libs/uni-rtsp/src/rtsp_start_line.c +++ /dev/null @@ -1,261 +0,0 @@ -/* - * Copyright 2008-2014 Arsen Chaloyan - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - * - * $Id: rtsp_start_line.c 2136 2014-07-04 06:33:36Z achaloyan@gmail.com $ - */ - -#include "rtsp_start_line.h" -#include "apt_string_table.h" -#include "apt_log.h" - -/** Protocol name used in version string */ -#define RTSP_NAME "RTSP" -#define RTSP_NAME_LENGTH (sizeof(RTSP_NAME)-1) - -/** Separators used in RTSP version string parse/generate */ -#define RTSP_NAME_VERSION_SEPARATOR '/' -#define RTSP_VERSION_MAJOR_MINOR_SEPARATOR '.' - -/** String table of RTSP methods (rtsp_method_id) */ -static const apt_str_table_item_t rtsp_method_string_table[] = { - {{"SETUP", 5},0}, - {{"ANNOUNCE", 8},0}, - {{"TEARDOWN", 8},0}, - {{"DESCRIBE", 8},0} -}; - -/** String table of RTSP reason phrases (rtsp_reason_phrase_e) */ -static const apt_str_table_item_t rtsp_reason_string_table[] = { - {{"OK", 2},0}, - {{"Created", 7},0}, - {{"Bad Request", 11},0}, - {{"Unauthorized", 12},0}, - {{"Not Found", 9},4}, - {{"Method Not Allowed", 18},0}, - {{"Not Acceptable", 14},4}, - {{"Proxy Auth Required", 19},0}, - {{"Request Timeout", 15},0}, - {{"Session Not Found", 17},0}, - {{"Internal Server Error", 21},0}, - {{"Not Implemented", 15},4} -}; - -/** Parse RTSP URI */ -static apt_bool_t rtsp_resource_uri_parse(const apt_str_t *field, rtsp_request_line_t *request_line, apr_pool_t *pool) -{ - char *str; - apt_str_t *url = &request_line->url; - if(!field->length || !field->buf) { - return FALSE; - } - - apt_string_copy(url,field,pool); - if(url->buf[url->length-1] == '/') { - url->length--; - url->buf[url->length] = '\0'; - } - - str = strrchr(url->buf,'/'); - if(str) { - str++; - } - request_line->resource_name = str; - return TRUE; -} - -/** Parse RTSP version */ -static rtsp_version_e rtsp_version_parse(const apt_str_t *field) -{ - rtsp_version_e version = RTSP_VERSION_UNKNOWN; - const char *pos; - if(field->length <= RTSP_NAME_LENGTH || strncasecmp(field->buf,RTSP_NAME,RTSP_NAME_LENGTH) != 0) { - /* unexpected protocol name */ - return version; - } - - pos = field->buf + RTSP_NAME_LENGTH; - if(*pos == RTSP_NAME_VERSION_SEPARATOR) { - pos++; - switch(*pos) { - case '1': version = RTSP_VERSION_1; break; - default: ; - } - } - return version; -} - -/** Generate RTSP version */ -static apt_bool_t rtsp_version_generate(rtsp_version_e version, apt_text_stream_t *stream) -{ - if(stream->pos + RTSP_NAME_LENGTH + 1 >= stream->end) { - return FALSE; - } - memcpy(stream->pos,RTSP_NAME,RTSP_NAME_LENGTH); - stream->pos += RTSP_NAME_LENGTH; - *stream->pos++ = RTSP_NAME_VERSION_SEPARATOR; - - if(apt_text_size_value_insert(stream,version) == FALSE) { - return FALSE; - } - - if(stream->pos + 2 >= stream->end) { - return FALSE; - } - *stream->pos++ = RTSP_VERSION_MAJOR_MINOR_SEPARATOR; - *stream->pos++ = '0'; - return TRUE; -} - -/** Parse RTSP status-code */ -static APR_INLINE rtsp_status_code_e rtsp_status_code_parse(const apt_str_t *field) -{ - return apt_size_value_parse(field); -} - -/** Generate RTSP status-code */ -static APR_INLINE apt_bool_t rtsp_status_code_generate(rtsp_status_code_e status_code, apt_text_stream_t *stream) -{ - return apt_text_size_value_insert(stream,status_code); -} - -/** Generate RTSP request-line */ -static apt_bool_t rtsp_request_line_generate(rtsp_request_line_t *start_line, apt_text_stream_t *stream) -{ - const apt_str_t *method_name = apt_string_table_str_get(rtsp_method_string_table,RTSP_METHOD_COUNT,start_line->method_id); - if(!method_name) { - return FALSE; - } - start_line->method_name = *method_name; - if(apt_text_string_insert(stream,&start_line->method_name) == FALSE) { - return FALSE; - } - if(apt_text_space_insert(stream) == FALSE) { - return FALSE; - } - - if(apt_text_string_insert(stream,&start_line->url) == FALSE) { - return FALSE; - } - if(apt_text_space_insert(stream) == FALSE) { - return FALSE; - } - - return rtsp_version_generate(start_line->version,stream); -} - -/** Generate RTSP status-line */ -static apt_bool_t rtsp_status_line_generate(rtsp_status_line_t *start_line, apt_text_stream_t *stream) -{ - if(rtsp_version_generate(start_line->version,stream) == FALSE) { - return FALSE; - } - if(apt_text_space_insert(stream) == FALSE) { - return FALSE; - } - - if(rtsp_status_code_generate(start_line->status_code,stream) == FALSE) { - return FALSE; - } - if(apt_text_space_insert(stream) == FALSE) { - return FALSE; - } - - return apt_text_string_insert(stream,&start_line->reason); -} - -/** Parse RTSP start-line */ -RTSP_DECLARE(apt_bool_t) rtsp_start_line_parse(rtsp_start_line_t *start_line, apt_str_t *str, apr_pool_t *pool) -{ - apt_text_stream_t line; - apt_str_t field; - - apt_text_stream_init(&line,str->buf,str->length); - if(apt_text_field_read(&line,APT_TOKEN_SP,TRUE,&field) == FALSE) { - apt_log(APT_LOG_MARK,APT_PRIO_WARNING,"Cannot read the first field in start-line"); - return FALSE; - } - - if(field.buf == strstr(field.buf,RTSP_NAME)) { - /* parsing RTSP response */ - rtsp_status_line_t *status_line = &start_line->common.status_line; - start_line->message_type = RTSP_MESSAGE_TYPE_RESPONSE; - rtsp_status_line_init(status_line); - - status_line->version = rtsp_version_parse(&field); - - if(apt_text_field_read(&line,APT_TOKEN_SP,TRUE,&field) == FALSE) { - apt_log(APT_LOG_MARK,APT_PRIO_WARNING,"Cannot parse status-code in status-line"); - return FALSE; - } - status_line->status_code = rtsp_status_code_parse(&field); - - if(apt_text_field_read(&line,APT_TOKEN_SP,TRUE,&field) == FALSE) { - apt_log(APT_LOG_MARK,APT_PRIO_WARNING,"Cannot parse reason phrase in status-line"); - return FALSE; - } - apt_string_copy(&status_line->reason,&field,pool); - } - else { - /* parsing RTSP request */ - rtsp_request_line_t *request_line = &start_line->common.request_line; - start_line->message_type = RTSP_MESSAGE_TYPE_REQUEST; - rtsp_request_line_init(request_line); - - apt_string_copy(&request_line->method_name,&field,pool); - request_line->method_id = apt_string_table_id_find(rtsp_method_string_table,RTSP_METHOD_COUNT,&field); - - if(apt_text_field_read(&line,APT_TOKEN_SP,TRUE,&field) == FALSE) { - apt_log(APT_LOG_MARK,APT_PRIO_WARNING,"Cannot parse URL in request-line"); - return FALSE; - } - rtsp_resource_uri_parse(&field,request_line,pool); - - if(apt_text_field_read(&line,APT_TOKEN_SP,TRUE,&field) == FALSE) { - apt_log(APT_LOG_MARK,APT_PRIO_WARNING,"Cannot parse version in request-line"); - return FALSE; - } - request_line->version = rtsp_version_parse(&field); - } - - return TRUE; -} - -/** Generate RTSP start-line */ -RTSP_DECLARE(apt_bool_t) rtsp_start_line_generate(rtsp_start_line_t *start_line, apt_text_stream_t *stream) -{ - apt_bool_t status = FALSE; - switch(start_line->message_type) { - case RTSP_MESSAGE_TYPE_REQUEST: - status = rtsp_request_line_generate(&start_line->common.request_line,stream); - break; - case RTSP_MESSAGE_TYPE_RESPONSE: - status = rtsp_status_line_generate(&start_line->common.status_line,stream); - break; - default: - break; - } - - if(status == FALSE) { - return FALSE; - } - - return apt_text_eol_insert(stream); -} - -/** Get reason phrase by status code */ -RTSP_DECLARE(const apt_str_t*) rtsp_reason_phrase_get(rtsp_reason_phrase_e reason) -{ - return apt_string_table_str_get(rtsp_reason_string_table,RTSP_REASON_PHRASE_COUNT,reason); -} diff --git a/libs/unimrcp/libs/uni-rtsp/src/rtsp_stream.c b/libs/unimrcp/libs/uni-rtsp/src/rtsp_stream.c deleted file mode 100644 index 945e7a98742..00000000000 --- a/libs/unimrcp/libs/uni-rtsp/src/rtsp_stream.c +++ /dev/null @@ -1,124 +0,0 @@ -/* - * Copyright 2008-2014 Arsen Chaloyan - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - * - * $Id: rtsp_stream.c 2136 2014-07-04 06:33:36Z achaloyan@gmail.com $ - */ - -#include "rtsp_stream.h" -#include "apt_log.h" - -/** RTSP parser */ -struct rtsp_parser_t { - apt_message_parser_t *base; -}; - -/** RTSP generator */ -struct rtsp_generator_t { - apt_message_generator_t *base; -}; - -/** Create message and read start line */ -static apt_bool_t rtsp_parser_on_start(apt_message_parser_t *parser, apt_message_context_t *context, apt_text_stream_t *stream, apr_pool_t *pool); -/** Header section handler */ -static apt_bool_t rtsp_parser_on_header_complete(apt_message_parser_t *parser, apt_message_context_t *context); - -static const apt_message_parser_vtable_t parser_vtable = { - rtsp_parser_on_start, - rtsp_parser_on_header_complete, - NULL -}; - - -/** Initialize by generating message start line and return header section and body */ -apt_bool_t rtsp_generator_on_start(apt_message_generator_t *generator, apt_message_context_t *context, apt_text_stream_t *stream); - -static const apt_message_generator_vtable_t generator_vtable = { - rtsp_generator_on_start, - NULL, - NULL -}; - - -/** Create RTSP parser */ -RTSP_DECLARE(rtsp_parser_t*) rtsp_parser_create(apr_pool_t *pool) -{ - rtsp_parser_t *parser = apr_palloc(pool,sizeof(rtsp_parser_t)); - parser->base = apt_message_parser_create(parser,&parser_vtable,pool); - return parser; -} - -/** Parse RTSP stream */ -RTSP_DECLARE(apt_message_status_e) rtsp_parser_run(rtsp_parser_t *parser, apt_text_stream_t *stream, rtsp_message_t **message) -{ - return apt_message_parser_run(parser->base,stream,(void**)message); -} - -/** Create message and read start line */ -static apt_bool_t rtsp_parser_on_start(apt_message_parser_t *parser, apt_message_context_t *context, apt_text_stream_t *stream, apr_pool_t *pool) -{ - rtsp_message_t *message; - apt_str_t start_line; - /* read start line */ - if(apt_text_line_read(stream,&start_line) == FALSE) { - return FALSE; - } - - message = rtsp_message_create(RTSP_MESSAGE_TYPE_UNKNOWN,pool); - if(rtsp_start_line_parse(&message->start_line,&start_line,message->pool) == FALSE) { - return FALSE; - } - - context->message = message; - context->header = &message->header.header_section; - context->body = &message->body; - return TRUE; -} - -/** Header section handler */ -static apt_bool_t rtsp_parser_on_header_complete(apt_message_parser_t *parser, apt_message_context_t *context) -{ - rtsp_message_t *rtsp_message = context->message; - rtsp_header_fields_parse(&rtsp_message->header,rtsp_message->pool); - - if(context->body && rtsp_header_property_check(&rtsp_message->header,RTSP_HEADER_FIELD_CONTENT_LENGTH) == TRUE) { - context->body->length = rtsp_message->header.content_length; - } - - return TRUE; -} - -/** Create RTSP stream generator */ -RTSP_DECLARE(rtsp_generator_t*) rtsp_generator_create(apr_pool_t *pool) -{ - rtsp_generator_t *generator = apr_palloc(pool,sizeof(rtsp_generator_t)); - generator->base = apt_message_generator_create(generator,&generator_vtable,pool); - return generator; -} - - -/** Generate RTSP stream */ -RTSP_DECLARE(apt_message_status_e) rtsp_generator_run(rtsp_generator_t *generator, rtsp_message_t *message, apt_text_stream_t *stream) -{ - return apt_message_generator_run(generator->base,message,stream); -} - -/** Initialize by generating message start line and return header section and body */ -apt_bool_t rtsp_generator_on_start(apt_message_generator_t *generator, apt_message_context_t *context, apt_text_stream_t *stream) -{ - rtsp_message_t *rtsp_message = context->message; - context->header = &rtsp_message->header.header_section; - context->body = &rtsp_message->body; - return rtsp_start_line_generate(&rtsp_message->start_line,stream); -} diff --git a/libs/unimrcp/libs/uni-rtsp/unirtsp.2010.vcxproj.filters b/libs/unimrcp/libs/uni-rtsp/unirtsp.2010.vcxproj.filters deleted file mode 100644 index 5a1581a2c31..00000000000 --- a/libs/unimrcp/libs/uni-rtsp/unirtsp.2010.vcxproj.filters +++ /dev/null @@ -1,56 +0,0 @@ - - - - - {93995380-89BD-4b04-88EB-625FBE52EBFB} - h;hpp;hxx;hm;inl;inc;xsd - - - {fd4564ef-9f34-4f23-992d-37f127e289a2} - cpp;c;cc;cxx;def;odl;idl;hpj;bat;asm;asmx - - - - - include - - - include - - - include - - - include - - - include - - - include - - - include - - - - - src - - - src - - - src - - - src - - - src - - - src - - - \ No newline at end of file diff --git a/libs/unimrcp/libs/uni-rtsp/unirtsp.2017.vcxproj b/libs/unimrcp/libs/uni-rtsp/unirtsp.2017.vcxproj deleted file mode 100644 index 1ae73fcb7fb..00000000000 --- a/libs/unimrcp/libs/uni-rtsp/unirtsp.2017.vcxproj +++ /dev/null @@ -1,136 +0,0 @@ - - - - - Debug - Win32 - - - Debug - x64 - - - Release - Win32 - - - Release - x64 - - - - unirtsp - {504B3154-7A4F-459D-9877-B951021C3F1F} - unirtsp - Win32Proj - - - - StaticLibrary - Unicode - true - $(DefaultPlatformToolset) - - - StaticLibrary - Unicode - $(DefaultPlatformToolset) - - - StaticLibrary - Unicode - true - $(DefaultPlatformToolset) - - - StaticLibrary - Unicode - $(DefaultPlatformToolset) - - - - - - - - - - - - - - - - - - - - - - - - - - - <_ProjectFileVersion>10.0.30319.1 - $(PlatformName)\$(Configuration)\ - $(PlatformName)\$(Configuration)\ - $(SolutionDir)$(PlatformName)\$(Configuration)\ - $(PlatformName)\$(Configuration)\ - $(PlatformName)\$(Configuration)\ - $(PlatformName)\$(Configuration)\ - $(SolutionDir)$(PlatformName)\$(Configuration)\ - $(PlatformName)\$(Configuration)\ - - - - codecs;%(AdditionalIncludeDirectories) - APT_STATIC_LIB;%(PreprocessorDefinitions) - - - - - X64 - - - codecs;%(AdditionalIncludeDirectories) - APT_STATIC_LIB;%(PreprocessorDefinitions) - ProgramDatabase - - - - - codecs;%(AdditionalIncludeDirectories) - APT_STATIC_LIB;%(PreprocessorDefinitions) - - - - - X64 - - - codecs;%(AdditionalIncludeDirectories) - APT_STATIC_LIB;%(PreprocessorDefinitions) - - - - - - - - - - - - - - - - - - - - - - - \ No newline at end of file diff --git a/libs/unimrcp/libs/uni-rtsp/unirtsp.vcproj b/libs/unimrcp/libs/uni-rtsp/unirtsp.vcproj deleted file mode 100644 index c2e59e70fb3..00000000000 --- a/libs/unimrcp/libs/uni-rtsp/unirtsp.vcproj +++ /dev/null @@ -1,304 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/libs/unimrcp/libs/uni-rtsp/unirtsp.vcxproj b/libs/unimrcp/libs/uni-rtsp/unirtsp.vcxproj deleted file mode 100644 index 82cedac8fea..00000000000 --- a/libs/unimrcp/libs/uni-rtsp/unirtsp.vcxproj +++ /dev/null @@ -1,127 +0,0 @@ - - - - - Debug - Win32 - - - Debug - x64 - - - Release - Win32 - - - Release - x64 - - - - {504B3154-7A4F-459D-9877-B951021C3F1F} - unirtsp - Win32Proj - - - - StaticLibrary - Unicode - true - - - StaticLibrary - Unicode - - - StaticLibrary - Unicode - true - - - StaticLibrary - Unicode - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - <_ProjectFileVersion>10.0.30319.1 - AllRules.ruleset - - - AllRules.ruleset - - - AllRules.ruleset - - - AllRules.ruleset - - - - - - X64 - - - ProgramDatabase - - - - - X64 - - - - - - - - - - - - - - - - - - - - - - {13deeca0-bdd4-4744-a1a2-8eb0a44df3d2} - false - - - - - - \ No newline at end of file diff --git a/libs/unimrcp/libs/uni-rtsp/unirtsp.vcxproj.filters b/libs/unimrcp/libs/uni-rtsp/unirtsp.vcxproj.filters deleted file mode 100644 index 1a8db5806c7..00000000000 --- a/libs/unimrcp/libs/uni-rtsp/unirtsp.vcxproj.filters +++ /dev/null @@ -1,56 +0,0 @@ - - - - - {93995380-89BD-4b04-88EB-625FBE52EBFB} - h;hpp;hxx;hm;inl;inc;xsd - - - {8ffd50c3-3b28-438d-a305-071644d5f115} - cpp;c;cc;cxx;def;odl;idl;hpj;bat;asm;asmx - - - - - include - - - include - - - include - - - include - - - include - - - include - - - include - - - - - src - - - src - - - src - - - src - - - src - - - src - - - \ No newline at end of file diff --git a/libs/unimrcp/modules/Makefile.am b/libs/unimrcp/modules/Makefile.am deleted file mode 100644 index 7c5ba9768e2..00000000000 --- a/libs/unimrcp/modules/Makefile.am +++ /dev/null @@ -1,3 +0,0 @@ -MAINTAINERCLEANFILES = Makefile.in - -SUBDIRS = mrcp-sofiasip mrcp-unirtsp diff --git a/libs/unimrcp/modules/mrcp-sofiasip/Makefile.am b/libs/unimrcp/modules/mrcp-sofiasip/Makefile.am deleted file mode 100644 index f343037623c..00000000000 --- a/libs/unimrcp/modules/mrcp-sofiasip/Makefile.am +++ /dev/null @@ -1,22 +0,0 @@ -MAINTAINERCLEANFILES = Makefile.in - -AM_CPPFLAGS = -I$(top_srcdir)/modules/mrcp-sofiasip/include \ - -I$(top_srcdir)/libs/mrcpv2-transport/include \ - -I$(top_srcdir)/libs/mrcp-signaling/include \ - -I$(top_srcdir)/libs/mrcp/include \ - -I$(top_srcdir)/libs/mrcp/message/include \ - -I$(top_srcdir)/libs/mrcp/control/include \ - -I$(top_srcdir)/libs/mrcp/resources/include \ - -I$(top_srcdir)/libs/mpf/include \ - -I$(top_srcdir)/libs/apr-toolkit/include \ - $(UNIMRCP_APR_INCLUDES) $(UNIMRCP_SOFIA_INCLUDES) - -noinst_LTLIBRARIES = libmrcpsofiasip.la - -include_HEADERS = include/mrcp_sdp.h \ - include/mrcp_sofiasip_server_agent.h \ - include/mrcp_sofiasip_client_agent.h -libmrcpsofiasip_la_SOURCES = src/mrcp_sdp.c \ - src/mrcp_sofiasip_server_agent.c \ - src/mrcp_sofiasip_client_agent.c \ - src/mrcp_sofiasip_logger.c diff --git a/libs/unimrcp/modules/mrcp-sofiasip/include/mrcp_sdp.h b/libs/unimrcp/modules/mrcp-sofiasip/include/mrcp_sdp.h deleted file mode 100644 index 5c4b5c74ef0..00000000000 --- a/libs/unimrcp/modules/mrcp-sofiasip/include/mrcp_sdp.h +++ /dev/null @@ -1,42 +0,0 @@ -/* - * Copyright 2008-2014 Arsen Chaloyan - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - * - * $Id: mrcp_sdp.h 2136 2014-07-04 06:33:36Z achaloyan@gmail.com $ - */ - -#ifndef MRCP_SDP_H -#define MRCP_SDP_H - -/** - * @file mrcp_sdp.h - * @brief MRCP SDP Transformations - */ - -#include "mrcp_sig_types.h" - -APT_BEGIN_EXTERN_C - -/** Generate SDP string by MRCP descriptor */ -MRCP_DECLARE(apr_size_t) sdp_string_generate_by_mrcp_descriptor(char *buffer, apr_size_t size, const mrcp_session_descriptor_t *descriptor, apt_bool_t offer); - -/** Generate MRCP descriptor by SDP session */ -MRCP_DECLARE(apt_bool_t) mrcp_descriptor_generate_by_sdp_session(mrcp_session_descriptor_t* descriptor, const sdp_session_t *sdp, const char *force_destination_ip, apr_pool_t *pool); - -/** Generate SDP resource discovery string */ -MRCP_DECLARE(apr_size_t) sdp_resource_discovery_string_generate(const char *ip, const char *origin, char *buffer, apr_size_t size); - -APT_END_EXTERN_C - -#endif /* MRCP_SDP_H */ diff --git a/libs/unimrcp/modules/mrcp-sofiasip/include/mrcp_sofiasip_client_agent.h b/libs/unimrcp/modules/mrcp-sofiasip/include/mrcp_sofiasip_client_agent.h deleted file mode 100644 index 4dd605a8cd9..00000000000 --- a/libs/unimrcp/modules/mrcp-sofiasip/include/mrcp_sofiasip_client_agent.h +++ /dev/null @@ -1,82 +0,0 @@ -/* - * Copyright 2008-2014 Arsen Chaloyan - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - * - * $Id: mrcp_sofiasip_client_agent.h 2136 2014-07-04 06:33:36Z achaloyan@gmail.com $ - */ - -#ifndef MRCP_SOFIASIP_CLIENT_AGENT_H -#define MRCP_SOFIASIP_CLIENT_AGENT_H - -/** - * @file mrcp_sofiasip_client_agent.h - * @brief Implementation of MRCP Signaling Interface using Sofia-SIP - */ - -#include -#include "mrcp_sig_agent.h" - -APT_BEGIN_EXTERN_C - -/** Sofia-SIP config declaration */ -typedef struct mrcp_sofia_client_config_t mrcp_sofia_client_config_t; - -/** Sofia-SIP config */ -struct mrcp_sofia_client_config_t { - /** Local IP address */ - char *local_ip; - /** External (NAT) IP address */ - char *ext_ip; - /** Local SIP port */ - apr_port_t local_port; - /** Local SIP user name */ - char *local_user_name; - /** User agent name */ - char *user_agent_name; - /** SDP origin */ - char *origin; - /** SIP transport */ - char *transport; - /** SIP T1 timer */ - apr_size_t sip_t1; - /** SIP T2 timer */ - apr_size_t sip_t2; - /** SIP T4 timer */ - apr_size_t sip_t4; - /** SIP T1x64 timer */ - apr_size_t sip_t1x64; - /** Print out SIP messages to the console */ - apt_bool_t tport_log; - /** Dump SIP messages to the specified file */ - char *tport_dump_file; -}; - -/** - * Create Sofia-SIP signaling agent. - */ -MRCP_DECLARE(mrcp_sig_agent_t*) mrcp_sofiasip_client_agent_create(const char *id, mrcp_sofia_client_config_t *config, apr_pool_t *pool); - -/** - * Allocate Sofia-SIP config. - */ -MRCP_DECLARE(mrcp_sofia_client_config_t*) mrcp_sofiasip_client_config_alloc(apr_pool_t *pool); - -/** - * Initialize Sofia-SIP logger. - */ -MRCP_DECLARE(apt_bool_t) mrcp_sofiasip_client_logger_init(const char *name, const char *level_str, apt_bool_t redirect); - -APT_END_EXTERN_C - -#endif /* MRCP_SOFIASIP_CLIENT_AGENT_H */ diff --git a/libs/unimrcp/modules/mrcp-sofiasip/include/mrcp_sofiasip_server_agent.h b/libs/unimrcp/modules/mrcp-sofiasip/include/mrcp_sofiasip_server_agent.h deleted file mode 100644 index 4cc78c6fbf3..00000000000 --- a/libs/unimrcp/modules/mrcp-sofiasip/include/mrcp_sofiasip_server_agent.h +++ /dev/null @@ -1,85 +0,0 @@ -/* - * Copyright 2008-2014 Arsen Chaloyan - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - * - * $Id: mrcp_sofiasip_server_agent.h 2252 2014-11-21 02:45:15Z achaloyan@gmail.com $ - */ - -#ifndef MRCP_SOFIASIP_SERVER_AGENT_H -#define MRCP_SOFIASIP_SERVER_AGENT_H - -/** - * @file mrcp_sofiasip_server_agent.h - * @brief Implementation of MRCP Signaling Interface using Sofia-SIP - */ - -#include -#include "mrcp_sig_agent.h" - -APT_BEGIN_EXTERN_C - -/** Sofia-SIP config declaration */ -typedef struct mrcp_sofia_server_config_t mrcp_sofia_server_config_t; - -/** Sofia-SIP config */ -struct mrcp_sofia_server_config_t { - /** Local IP address to bind to */ - char *local_ip; - /** External (NAT) IP address */ - char *ext_ip; - /** Local port to bind to */ - apr_port_t local_port; - /** SIP user name */ - char *user_name; - /** User agent name */ - char *user_agent_name; - /** SDP origin */ - char *origin; - /** SIP transport */ - char *transport; - /** Force destination IP address. Should be used only in case - SDP contains incorrect connection address (local IP address behind NAT) */ - apt_bool_t force_destination; - /** SIP T1 timer */ - apr_size_t sip_t1; - /** SIP T2 timer */ - apr_size_t sip_t2; - /** SIP T4 timer */ - apr_size_t sip_t4; - /** SIP T1x64 timer */ - apr_size_t sip_t1x64; - /** Print out SIP messages to the console */ - apt_bool_t tport_log; - /** Dump SIP messages to the specified file */ - char *tport_dump_file; -}; - -/** - * Create Sofia-SIP signaling agent. - */ -MRCP_DECLARE(mrcp_sig_agent_t*) mrcp_sofiasip_server_agent_create(const char *id, mrcp_sofia_server_config_t *config, apr_pool_t *pool); - -/** - * Allocate Sofia-SIP config. - */ -MRCP_DECLARE(mrcp_sofia_server_config_t*) mrcp_sofiasip_server_config_alloc(apr_pool_t *pool); - -/** - * Initialize Sofia-SIP logger. - */ -MRCP_DECLARE(apt_bool_t) mrcp_sofiasip_server_logger_init(const char *name, const char *level_str, apt_bool_t redirect); - -APT_END_EXTERN_C - -#endif /* MRCP_SOFIASIP_SERVER_AGENT_H */ diff --git a/libs/unimrcp/modules/mrcp-sofiasip/mrcpsofiasip.2010.vcxproj.filters b/libs/unimrcp/modules/mrcp-sofiasip/mrcpsofiasip.2010.vcxproj.filters deleted file mode 100644 index 33ff479678a..00000000000 --- a/libs/unimrcp/modules/mrcp-sofiasip/mrcpsofiasip.2010.vcxproj.filters +++ /dev/null @@ -1,38 +0,0 @@ - - - - - {93995380-89BD-4b04-88EB-625FBE52EBFB} - h;hpp;hxx;hm;inl;inc;xsd - - - {6e92b598-880e-4fe5-88fb-f69df8e06a57} - cpp;c;cc;cxx;def;odl;idl;hpj;bat;asm;asmx - - - - - include - - - include - - - include - - - - - src - - - src - - - src - - - src - - - \ No newline at end of file diff --git a/libs/unimrcp/modules/mrcp-sofiasip/mrcpsofiasip.2017.vcxproj b/libs/unimrcp/modules/mrcp-sofiasip/mrcpsofiasip.2017.vcxproj deleted file mode 100644 index c8d8f65306d..00000000000 --- a/libs/unimrcp/modules/mrcp-sofiasip/mrcpsofiasip.2017.vcxproj +++ /dev/null @@ -1,143 +0,0 @@ - - - - - Debug - Win32 - - - Debug - x64 - - - Release - Win32 - - - Release - x64 - - - - mrcpsofiasip - {746F3632-5BB2-4570-9453-31D6D58A7D8E} - mrcpsofiasip - Win32Proj - - - - StaticLibrary - Unicode - true - $(DefaultPlatformToolset) - - - StaticLibrary - Unicode - $(DefaultPlatformToolset) - - - StaticLibrary - Unicode - true - $(DefaultPlatformToolset) - - - StaticLibrary - Unicode - $(DefaultPlatformToolset) - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - <_ProjectFileVersion>10.0.30319.1 - $(PlatformName)\$(Configuration)\ - $(PlatformName)\$(Configuration)\ - $(SolutionDir)$(PlatformName)\$(Configuration)\ - $(PlatformName)\$(Configuration)\ - $(PlatformName)\$(Configuration)\ - $(PlatformName)\$(Configuration)\ - $(SolutionDir)$(PlatformName)\$(Configuration)\ - $(PlatformName)\$(Configuration)\ - - - - include;%(AdditionalIncludeDirectories) - APT_STATIC_LIB;MPF_STATIC_LIB;MRCP_STATIC_LIB;LIBSOFIA_SIP_UA_STATIC;%(PreprocessorDefinitions) - - - - - X64 - - - include;%(AdditionalIncludeDirectories) - APT_STATIC_LIB;MPF_STATIC_LIB;MRCP_STATIC_LIB;LIBSOFIA_SIP_UA_STATIC;%(PreprocessorDefinitions) - ProgramDatabase - - - - - include;%(AdditionalIncludeDirectories) - APT_STATIC_LIB;MPF_STATIC_LIB;MRCP_STATIC_LIB;LIBSOFIA_SIP_UA_STATIC;%(PreprocessorDefinitions) - - - - - X64 - - - include;%(AdditionalIncludeDirectories) - APT_STATIC_LIB;MPF_STATIC_LIB;MRCP_STATIC_LIB;LIBSOFIA_SIP_UA_STATIC;%(PreprocessorDefinitions) - - - - - - - - - - - - - - - - {70a49bc2-7500-41d0-b75d-edcc5be987a0} - - - - - - \ No newline at end of file diff --git a/libs/unimrcp/modules/mrcp-sofiasip/mrcpsofiasip.vcproj b/libs/unimrcp/modules/mrcp-sofiasip/mrcpsofiasip.vcproj deleted file mode 100644 index 20f9ce8e3a3..00000000000 --- a/libs/unimrcp/modules/mrcp-sofiasip/mrcpsofiasip.vcproj +++ /dev/null @@ -1,288 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/libs/unimrcp/modules/mrcp-sofiasip/mrcpsofiasip.vcxproj b/libs/unimrcp/modules/mrcp-sofiasip/mrcpsofiasip.vcxproj deleted file mode 100644 index cd2e9a2251e..00000000000 --- a/libs/unimrcp/modules/mrcp-sofiasip/mrcpsofiasip.vcxproj +++ /dev/null @@ -1,147 +0,0 @@ - - - - - Debug - Win32 - - - Debug - x64 - - - Release - Win32 - - - Release - x64 - - - - {746F3632-5BB2-4570-9453-31D6D58A7D8E} - mrcpsofiasip - Win32Proj - - - - StaticLibrary - Unicode - true - - - StaticLibrary - Unicode - - - StaticLibrary - Unicode - true - - - StaticLibrary - Unicode - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - <_ProjectFileVersion>10.0.30319.1 - AllRules.ruleset - - - AllRules.ruleset - - - AllRules.ruleset - - - AllRules.ruleset - - - - - - include;%(AdditionalIncludeDirectories) - - - - - include;%(AdditionalIncludeDirectories) - - - - - X64 - - - include;%(AdditionalIncludeDirectories) - ProgramDatabase - - - - - X64 - - - include;%(AdditionalIncludeDirectories) - - - - - - - - - - - - - - - - {12a49562-bab9-43a3-a21d-15b60bbb4c31} - false - - - {a9edac04-6a5f-4ba7-bc0d-cce7b255b6ea} - false - - - - - - \ No newline at end of file diff --git a/libs/unimrcp/modules/mrcp-sofiasip/mrcpsofiasip.vcxproj.filters b/libs/unimrcp/modules/mrcp-sofiasip/mrcpsofiasip.vcxproj.filters deleted file mode 100644 index d0579e36d82..00000000000 --- a/libs/unimrcp/modules/mrcp-sofiasip/mrcpsofiasip.vcxproj.filters +++ /dev/null @@ -1,38 +0,0 @@ - - - - - {93995380-89BD-4b04-88EB-625FBE52EBFB} - h;hpp;hxx;hm;inl;inc;xsd - - - {5256b9c6-18be-48fc-aaa3-8e2c17df7f8d} - cpp;c;cc;cxx;def;odl;idl;hpj;bat;asm;asmx - - - - - include - - - include - - - include - - - - - src - - - src - - - src - - - src - - - \ No newline at end of file diff --git a/libs/unimrcp/modules/mrcp-sofiasip/src/mrcp_sdp.c b/libs/unimrcp/modules/mrcp-sofiasip/src/mrcp_sdp.c deleted file mode 100644 index 16fcfee97db..00000000000 --- a/libs/unimrcp/modules/mrcp-sofiasip/src/mrcp_sdp.c +++ /dev/null @@ -1,421 +0,0 @@ -/* - * Copyright 2008-2014 Arsen Chaloyan - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - * - * $Id: mrcp_sdp.c 2136 2014-07-04 06:33:36Z achaloyan@gmail.com $ - */ - -#include -#include -#include -#include "mrcp_sdp.h" -#include "mrcp_session_descriptor.h" -#include "mrcp_control_descriptor.h" -#include "mpf_rtp_attribs.h" -#include "mpf_rtp_pt.h" -#include "apt_text_stream.h" -#include "apt_log.h" - -#if _MSC_VER >= 1900 -#pragma warning(disable: 4477) -// 'snprintf' : format string '%d' requires an argument of type 'int', but variadic argument 1 has type 'apr_size_t' 264 -// 'snprintf' : format string '%d' requires an argument of type 'int', but variadic argument 1 has type 'const apr_size_t' 198 -#endif - -static apr_size_t sdp_rtp_media_generate(char *buffer, apr_size_t size, const mrcp_session_descriptor_t *descriptor, const mpf_rtp_media_descriptor_t *audio_descriptor); -static apr_size_t sdp_control_media_generate(char *buffer, apr_size_t size, const mrcp_session_descriptor_t *descriptor, const mrcp_control_descriptor_t *control_media, apt_bool_t offer); - -static apt_bool_t mpf_rtp_media_generate(mpf_rtp_media_descriptor_t *rtp_media, const sdp_media_t *sdp_media, const apt_str_t *ip, apr_pool_t *pool); -static apt_bool_t mrcp_control_media_generate(mrcp_control_descriptor_t *mrcp_media, const sdp_media_t *sdp_media, const apt_str_t *ip, apr_pool_t *pool); - -/** Generate SDP string by MRCP descriptor */ -MRCP_DECLARE(apr_size_t) sdp_string_generate_by_mrcp_descriptor(char *buffer, apr_size_t size, const mrcp_session_descriptor_t *descriptor, apt_bool_t offer) -{ - apr_size_t i; - apr_size_t count; - apr_size_t audio_index = 0; - mpf_rtp_media_descriptor_t *audio_media; - apr_size_t video_index = 0; - mpf_rtp_media_descriptor_t *video_media; - apr_size_t control_index = 0; - mrcp_control_descriptor_t *control_media; - apr_size_t offset = 0; - const char *ip = descriptor->ext_ip.buf ? descriptor->ext_ip.buf : (descriptor->ip.buf ? descriptor->ip.buf : "0.0.0.0"); - buffer[0] = '\0'; - offset += snprintf(buffer+offset,size-offset, - "v=0\r\n" - "o=%s 0 0 IN IP4 %s\r\n" - "s=-\r\n" - "c=IN IP4 %s\r\n" - "t=0 0\r\n", - descriptor->origin.buf ? descriptor->origin.buf : "-", - ip, - ip); - count = mrcp_session_media_count_get(descriptor); - for(i=0; iid == i) { - /* generate audio media */ - audio_index++; - offset += sdp_rtp_media_generate(buffer+offset,size-offset,descriptor,audio_media); - continue; - } - video_media = mrcp_session_video_media_get(descriptor,video_index); - if(video_media && video_media->id == i) { - /* generate video media */ - video_index++; - offset += sdp_rtp_media_generate(buffer+offset,size-offset,descriptor,video_media); - continue; - } - control_media = mrcp_session_control_media_get(descriptor,control_index); - if(control_media && control_media->id == i) { - /** generate mrcp control media */ - control_index++; - offset += sdp_control_media_generate(buffer+offset,size-offset,descriptor,control_media,offer); - continue; - } - } - return offset; -} - -/** Generate MRCP descriptor by SDP session */ -MRCP_DECLARE(apt_bool_t) mrcp_descriptor_generate_by_sdp_session(mrcp_session_descriptor_t* descriptor, const sdp_session_t *sdp, const char *force_destination_ip, apr_pool_t *pool) -{ - sdp_media_t *sdp_media; - - if(!sdp) { - apt_log(APT_LOG_MARK,APT_PRIO_WARNING,"Invalid SDP Message"); - return FALSE; - } - - if(force_destination_ip) { - apt_string_assign(&descriptor->ip,force_destination_ip,pool); - } - else if(sdp->sdp_connection) { - apt_string_assign(&descriptor->ip,sdp->sdp_connection->c_address,pool); - } - - for(sdp_media=sdp->sdp_media; sdp_media; sdp_media=sdp_media->m_next) { - switch(sdp_media->m_type) { - case sdp_media_audio: - { - mpf_rtp_media_descriptor_t *media = apr_palloc(pool,sizeof(mpf_rtp_media_descriptor_t)); - mpf_rtp_media_descriptor_init(media); - media->id = mrcp_session_audio_media_add(descriptor,media); - mpf_rtp_media_generate(media,sdp_media,&descriptor->ip,pool); - break; - } - case sdp_media_video: - { - mpf_rtp_media_descriptor_t *media = apr_palloc(pool,sizeof(mpf_rtp_media_descriptor_t)); - mpf_rtp_media_descriptor_init(media); - media->id = mrcp_session_video_media_add(descriptor,media); - mpf_rtp_media_generate(media,sdp_media,&descriptor->ip,pool); - break; - } - case sdp_media_application: - { - mrcp_control_descriptor_t *control_media = mrcp_control_descriptor_create(pool); - control_media->id = mrcp_session_control_media_add(descriptor,control_media); - mrcp_control_media_generate(control_media,sdp_media,&descriptor->ip,pool); - break; - } - default: - apt_log(APT_LOG_MARK,APT_PRIO_INFO,"Not Supported SDP Media [%s]", sdp_media->m_type_name); - break; - } - } - return TRUE; -} - -/** Generate SDP media by RTP media descriptor */ -static apr_size_t sdp_rtp_media_generate(char *buffer, apr_size_t size, const mrcp_session_descriptor_t *descriptor, const mpf_rtp_media_descriptor_t *audio_media) -{ - apr_size_t offset = 0; - if(audio_media->state == MPF_MEDIA_ENABLED) { - int codec_count = 0; - int i; - mpf_codec_descriptor_t *codec_descriptor; - apr_array_header_t *descriptor_arr = audio_media->codec_list.descriptor_arr; - const apt_str_t *direction_str; - if(!descriptor_arr) { - return 0; - } - - offset += snprintf(buffer+offset,size-offset,"m=audio %d RTP/AVP",audio_media->port); - for(i=0; inelts; i++) { - codec_descriptor = &APR_ARRAY_IDX(descriptor_arr,i,mpf_codec_descriptor_t); - if(codec_descriptor->enabled == TRUE) { - offset += snprintf(buffer+offset,size-offset," %d",codec_descriptor->payload_type); - codec_count++; - } - } - if(!codec_count){ - /* SDP m line should have at least one media format listed; use a reserved RTP payload type */ - offset += snprintf(buffer+offset,size-offset," %d",RTP_PT_RESERVED); - } - offset += snprintf(buffer+offset,size-offset,"\r\n"); - - if(descriptor->ip.length && audio_media->ip.length && - apt_string_compare(&descriptor->ip,&audio_media->ip) != TRUE) { - const char *media_ip = audio_media->ext_ip.buf ? audio_media->ext_ip.buf : audio_media->ip.buf; - offset += snprintf(buffer+offset,size-offset,"c=IN IP4 %s\r\n",media_ip); - } - - for(i=0; inelts; i++) { - codec_descriptor = &APR_ARRAY_IDX(descriptor_arr,i,mpf_codec_descriptor_t); - if(codec_descriptor->enabled == TRUE && codec_descriptor->name.buf) { - offset += snprintf(buffer+offset,size-offset,"a=rtpmap:%d %s/%d\r\n", - codec_descriptor->payload_type, - codec_descriptor->name.buf, - codec_descriptor->sampling_rate); - if(codec_descriptor->format.buf) { - offset += snprintf(buffer+offset,size-offset,"a=fmtp:%d %s\r\n", - codec_descriptor->payload_type, - codec_descriptor->format.buf); - } - } - } - - direction_str = mpf_rtp_direction_str_get(audio_media->direction); - if(direction_str) { - offset += snprintf(buffer+offset,size-offset,"a=%s\r\n",direction_str->buf); - } - - if(audio_media->ptime) { - offset += snprintf(buffer+offset,size-offset,"a=ptime:%hu\r\n",audio_media->ptime); - } - } - else { - offset += snprintf(buffer+offset,size-offset,"m=audio 0 RTP/AVP %d\r\n",RTP_PT_RESERVED); - } - - offset += snprintf(buffer+offset,size-offset,"a=mid:%"APR_SIZE_T_FMT"\r\n",audio_media->mid); - return offset; -} - -/** Generate SDP media by MRCP control media descriptor */ -static apr_size_t sdp_control_media_generate(char *buffer, apr_size_t size, const mrcp_session_descriptor_t *descriptor, const mrcp_control_descriptor_t *control_media, apt_bool_t offer) -{ - int i; - apr_size_t offset = 0; - const apt_str_t *proto; - const apt_str_t *setup_type; - const apt_str_t *connection_type; - proto = mrcp_proto_get(control_media->proto); - setup_type = mrcp_setup_type_get(control_media->setup_type); - connection_type = mrcp_connection_type_get(control_media->connection_type); - if(offer == TRUE) { /* offer */ - if(control_media->port) { - offset += snprintf(buffer+offset,size-offset, - "m=application %d %s 1\r\n" - "a=setup:%s\r\n" - "a=connection:%s\r\n" - "a=resource:%s\r\n", - control_media->port, - proto ? proto->buf : "", - setup_type ? setup_type->buf : "", - connection_type ? connection_type->buf : "", - control_media->resource_name.buf); - - } - else { - offset += snprintf(buffer+offset,size-offset, - "m=application %d %s 1\r\n" - "a=resource:%s\r\n", - control_media->port, - proto ? proto->buf : "", - control_media->resource_name.buf); - } - } - else { /* answer */ - if(control_media->port) { - offset += snprintf(buffer+offset,size-offset, - "m=application %d %s 1\r\n" - "a=setup:%s\r\n" - "a=connection:%s\r\n" - "a=channel:%s@%s\r\n", - control_media->port, - proto ? proto->buf : "", - setup_type ? setup_type->buf : "", - connection_type ? connection_type->buf : "", - control_media->session_id.buf, - control_media->resource_name.buf); - } - else { - offset += snprintf(buffer+offset,size-offset, - "m=application %d %s 1\r\n" - "a=channel:%s@%s\r\n", - control_media->port, - proto ? proto->buf : "", - control_media->session_id.buf, - control_media->resource_name.buf); - } - } - - for(i=0; icmid_arr->nelts; i++) { - offset += snprintf(buffer+offset,size-offset, - "a=cmid:%"APR_SIZE_T_FMT"\r\n", - APR_ARRAY_IDX(control_media->cmid_arr,i,apr_size_t)); - } - - return offset; -} - -/** Generate RTP media descriptor by SDP media */ -static apt_bool_t mpf_rtp_media_generate(mpf_rtp_media_descriptor_t *rtp_media, const sdp_media_t *sdp_media, const apt_str_t *ip, apr_pool_t *pool) -{ - mpf_rtp_attrib_e id; - apt_str_t name; - sdp_attribute_t *attrib = NULL; - sdp_rtpmap_t *map; - mpf_codec_descriptor_t *codec; - for(attrib = sdp_media->m_attributes; attrib; attrib=attrib->a_next) { - apt_string_set(&name,attrib->a_name); - id = mpf_rtp_attrib_id_find(&name); - switch(id) { - case RTP_ATTRIB_MID: - rtp_media->mid = atoi(attrib->a_value); - break; - case RTP_ATTRIB_PTIME: - rtp_media->ptime = (apr_uint16_t)atoi(attrib->a_value); - break; - default: - break; - } - } - - mpf_codec_list_init(&rtp_media->codec_list,5,pool); - for(map = sdp_media->m_rtpmaps; map; map = map->rm_next) { - codec = mpf_codec_list_add(&rtp_media->codec_list); - if(codec) { - codec->payload_type = (apr_byte_t)map->rm_pt; - apt_string_assign(&codec->name,map->rm_encoding,pool); - codec->sampling_rate = (apr_uint16_t)map->rm_rate; - codec->channel_count = 1; - } - } - - switch(sdp_media->m_mode) { - case sdp_inactive: - rtp_media->direction = STREAM_DIRECTION_NONE; - break; - case sdp_sendonly: - rtp_media->direction = STREAM_DIRECTION_SEND; - break; - case sdp_recvonly: - rtp_media->direction = STREAM_DIRECTION_RECEIVE; - break; - case sdp_sendrecv: - rtp_media->direction = STREAM_DIRECTION_DUPLEX; - break; - } - - if(sdp_media->m_connections) { - apt_string_assign(&rtp_media->ip,sdp_media->m_connections->c_address,pool); - } - else { - rtp_media->ip = *ip; - } - if(sdp_media->m_port) { - rtp_media->port = (apr_port_t)sdp_media->m_port; - rtp_media->state = MPF_MEDIA_ENABLED; - } - else { - rtp_media->state = MPF_MEDIA_DISABLED; - } - return TRUE; -} - -/** Generate MRCP control media by SDP media */ -static apt_bool_t mrcp_control_media_generate(mrcp_control_descriptor_t *control_media, const sdp_media_t *sdp_media, const apt_str_t *ip, apr_pool_t *pool) -{ - mrcp_attrib_e id; - apt_str_t name; - apt_str_t value; - sdp_attribute_t *attrib = NULL; - apt_string_set(&name,sdp_media->m_proto_name); - control_media->proto = mrcp_proto_find(&name); - if(control_media->proto != MRCP_PROTO_TCP) { - apt_log(APT_LOG_MARK,APT_PRIO_INFO,"Not supported SDP Proto [%s], expected [%s]",sdp_media->m_proto_name,mrcp_proto_get(MRCP_PROTO_TCP)->buf); - return FALSE; - } - - for(attrib = sdp_media->m_attributes; attrib; attrib=attrib->a_next) { - apt_string_set(&name,attrib->a_name); - id = mrcp_attrib_id_find(&name); - switch(id) { - case MRCP_ATTRIB_SETUP: - apt_string_set(&value,attrib->a_value); - control_media->setup_type = mrcp_setup_type_find(&value); - break; - case MRCP_ATTRIB_CONNECTION: - apt_string_set(&value,attrib->a_value); - control_media->connection_type = mrcp_connection_type_find(&value); - break; - case MRCP_ATTRIB_RESOURCE: - apt_string_assign(&control_media->resource_name,attrib->a_value,pool); - break; - case MRCP_ATTRIB_CHANNEL: - apt_string_set(&value,attrib->a_value); - apt_id_resource_parse(&value,'@',&control_media->session_id,&control_media->resource_name,pool); - break; - case MRCP_ATTRIB_CMID: - mrcp_cmid_add(control_media->cmid_arr,atoi(attrib->a_value)); - break; - default: - break; - } - } - - if(sdp_media->m_connections) { - apt_string_assign(&control_media->ip,sdp_media->m_connections->c_address,pool); - } - else { - control_media->ip = *ip; - } - control_media->port = (apr_port_t)sdp_media->m_port; - return TRUE; -} - -/** Generate SDP resource discovery string */ -MRCP_DECLARE(apr_size_t) sdp_resource_discovery_string_generate(const char *ip, const char *origin, char *buffer, apr_size_t size) -{ - apr_size_t offset = 0; - if(!ip) { - ip = "0.0.0.0"; - } - if(!origin) { - origin = "-"; - } - buffer[0] = '\0'; - offset += snprintf(buffer+offset,size-offset, - "v=0\r\n" - "o=%s 0 0 IN IP4 %s\r\n" - "s=-\r\n" - "c=IN IP4 %s\r\n" - "t=0 0\r\n" - "m=application 0 TCP/MRCPv2 1\r\n" - "a=resource:speechsynth\r\n" - "a=resource:speechrecog\r\n" - "m=audio 0 RTP/AVP 0 8 96 101\r\n" - "a=rtpmap:0 PCMU/8000\r\n" - "a=rtpmap:8 PCMA/8000\r\n" - "a=rtpmap:96 L16/8000\r\n" - "a=rtpmap:101 telephone-event/8000\r\n", - origin, - ip, - ip); - return offset; -} diff --git a/libs/unimrcp/modules/mrcp-sofiasip/src/mrcp_sofiasip_client_agent.c b/libs/unimrcp/modules/mrcp-sofiasip/src/mrcp_sofiasip_client_agent.c deleted file mode 100644 index fded058da16..00000000000 --- a/libs/unimrcp/modules/mrcp-sofiasip/src/mrcp_sofiasip_client_agent.c +++ /dev/null @@ -1,637 +0,0 @@ -/* - * Copyright 2008-2014 Arsen Chaloyan - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - * - * $Id: mrcp_sofiasip_client_agent.c 2253 2014-11-21 02:57:19Z achaloyan@gmail.com $ - */ - -typedef struct mrcp_sofia_agent_t mrcp_sofia_agent_t; -#define NUA_MAGIC_T mrcp_sofia_agent_t - -typedef struct mrcp_sofia_session_t mrcp_sofia_session_t; -#define NUA_HMAGIC_T mrcp_sofia_session_t - -#include -#include -#include -#include -#include -#include -#include -#undef strcasecmp -#undef strncasecmp -#include - -#include "mrcp_sofiasip_client_agent.h" -#include "mrcp_session.h" -#include "mrcp_session_descriptor.h" -#include "mrcp_sdp.h" -#include "apt_log.h" - -struct mrcp_sofia_agent_t { - mrcp_sig_agent_t *sig_agent; - - mrcp_sofia_client_config_t *config; - char *sip_contact_str; - char *sip_from_str; - char *sip_bind_str; - - su_root_t *root; - nua_t *nua; -}; - -struct mrcp_sofia_session_t { - mrcp_session_t *session; - const mrcp_sig_settings_t *sip_settings; - - su_home_t *home; - nua_handle_t *nh; - enum nua_callstate nua_state; - - apt_bool_t terminate_requested; - mrcp_session_descriptor_t *descriptor; - apr_thread_mutex_t *mutex; -}; - -/* Task Interface */ -static void mrcp_sofia_task_initialize(apt_task_t *task); -static apt_bool_t mrcp_sofia_task_run(apt_task_t *task); -static apt_bool_t mrcp_sofia_task_terminate(apt_task_t *task); - -/* MRCP Signaling Interface */ -static apt_bool_t mrcp_sofia_session_offer(mrcp_session_t *session, mrcp_session_descriptor_t *descriptor); -static apt_bool_t mrcp_sofia_session_terminate_request(mrcp_session_t *session); -static apt_bool_t mrcp_sofia_session_discover_request(mrcp_session_t *session, mrcp_session_descriptor_t *descriptor); - -static const mrcp_session_request_vtable_t session_request_vtable = { - mrcp_sofia_session_offer, - mrcp_sofia_session_terminate_request, - NULL, - mrcp_sofia_session_discover_request -}; - -static apt_bool_t mrcp_sofia_config_validate(mrcp_sofia_agent_t *sofia_agent, mrcp_sofia_client_config_t *config, apr_pool_t *pool); -static apt_bool_t mrcp_sofia_session_create(mrcp_session_t *session, const mrcp_sig_settings_t *settings); - -static void mrcp_sofia_event_callback( nua_event_t nua_event, - int status, - char const *phrase, - nua_t *nua, - mrcp_sofia_agent_t *sofia_agent, - nua_handle_t *nh, - mrcp_sofia_session_t *sofia_session, - sip_t const *sip, - tagi_t tags[]); - -apt_bool_t mrcp_sofiasip_log_init(const char *name, const char *level_str, apt_bool_t redirect); - -/** Create Sofia-SIP Signaling Agent */ -MRCP_DECLARE(mrcp_sig_agent_t*) mrcp_sofiasip_client_agent_create(const char *id, mrcp_sofia_client_config_t *config, apr_pool_t *pool) -{ - apt_task_t *task; - apt_task_vtable_t *vtable; - mrcp_sofia_agent_t *sofia_agent; - sofia_agent = apr_palloc(pool,sizeof(mrcp_sofia_agent_t)); - sofia_agent->sig_agent = mrcp_signaling_agent_create(id,sofia_agent,pool); - sofia_agent->sig_agent->create_client_session = mrcp_sofia_session_create; - sofia_agent->root = NULL; - sofia_agent->nua = NULL; - - if(mrcp_sofia_config_validate(sofia_agent,config,pool) == FALSE) { - return NULL; - } - - task = apt_task_create(sofia_agent,NULL,pool); - if(!task) { - return NULL; - } - apt_task_name_set(task,id); - vtable = apt_task_vtable_get(task); - if(vtable) { - vtable->on_pre_run = mrcp_sofia_task_initialize; - vtable->run = mrcp_sofia_task_run; - vtable->terminate = mrcp_sofia_task_terminate; - } - sofia_agent->sig_agent->task = task; - apt_log(APT_LOG_MARK,APT_PRIO_NOTICE,"Create SofiaSIP Agent [%s] ["SOFIA_SIP_VERSION"] %s", - id,sofia_agent->sip_bind_str); - return sofia_agent->sig_agent; -} - -/** Allocate Sofia-SIP config */ -MRCP_DECLARE(mrcp_sofia_client_config_t*) mrcp_sofiasip_client_config_alloc(apr_pool_t *pool) -{ - mrcp_sofia_client_config_t *config = apr_palloc(pool,sizeof(mrcp_sofia_client_config_t)); - config->local_ip = NULL; - config->ext_ip = NULL; - config->local_port = 0; - config->local_user_name = NULL; - - config->user_agent_name = NULL; - config->origin = NULL; - config->transport = NULL; - - config->sip_t1 = 0; - config->sip_t2 = 0; - config->sip_t4 = 0; - config->sip_t1x64 = 0; - - config->tport_log = FALSE; - config->tport_dump_file = NULL; - - return config; -} - -MRCP_DECLARE(apt_bool_t) mrcp_sofiasip_client_logger_init(const char *name, const char *level_str, apt_bool_t redirect) -{ - return mrcp_sofiasip_log_init(name,level_str,redirect); -} - -static apt_bool_t mrcp_sofia_config_validate(mrcp_sofia_agent_t *sofia_agent, mrcp_sofia_client_config_t *config, apr_pool_t *pool) -{ - if(!config->local_ip) { - return FALSE; - } - - sofia_agent->config = config; - if(config->ext_ip) { - /* Use external IP address in Contact and From headers, if behind NAT */ - sofia_agent->sip_contact_str = apr_psprintf(pool,"sip:%s:%hu", config->ext_ip, config->local_port); - sofia_agent->sip_from_str = apr_psprintf(pool,"sip:%s:%hu", config->ext_ip, config->local_port); - } - else { - sofia_agent->sip_contact_str = NULL; /* Let Sofia-SIP implicitly set Contact header by default */ - sofia_agent->sip_from_str = apr_psprintf(pool,"sip:%s:%hu", config->local_ip, config->local_port); - } - - if(config->transport) { - sofia_agent->sip_bind_str = apr_psprintf(pool,"sip:%s:%hu;transport=%s", - config->local_ip, - config->local_port, - config->transport); - } - else { - sofia_agent->sip_bind_str = apr_psprintf(pool,"sip:%s:%hu", - config->local_ip, - config->local_port); - } - return TRUE; -} - -static void mrcp_sofia_task_initialize(apt_task_t *task) -{ - mrcp_sofia_agent_t *sofia_agent = apt_task_object_get(task); - mrcp_sofia_client_config_t *sofia_config = sofia_agent->config; - - /* Initialize Sofia-SIP library and create event loop */ - su_init(); - sofia_agent->root = su_root_create(NULL); - - /* Create a user agent instance. The stack will call the 'event_callback()' - * callback when events such as succesful registration to network, - * an incoming call, etc, occur. - */ - sofia_agent->nua = nua_create( - sofia_agent->root, /* Event loop */ - mrcp_sofia_event_callback, /* Callback for processing events */ - sofia_agent, /* Additional data to pass to callback */ - NUTAG_URL(sofia_agent->sip_bind_str), /* Address to bind to */ - NUTAG_AUTOANSWER(0), - NUTAG_APPL_METHOD("OPTIONS"), - TAG_IF(sofia_config->sip_t1,NTATAG_SIP_T1(sofia_config->sip_t1)), - TAG_IF(sofia_config->sip_t2,NTATAG_SIP_T2(sofia_config->sip_t2)), - TAG_IF(sofia_config->sip_t4,NTATAG_SIP_T4(sofia_config->sip_t4)), - TAG_IF(sofia_config->sip_t1x64,NTATAG_SIP_T1X64(sofia_config->sip_t1x64)), - SIPTAG_USER_AGENT_STR(sofia_config->user_agent_name), - TAG_IF(sofia_config->tport_log == TRUE,TPTAG_LOG(1)), /* Print out SIP messages to the console */ - TAG_IF(sofia_config->tport_dump_file,TPTAG_DUMP(sofia_config->tport_dump_file)), /* Dump SIP messages to the file */ - TAG_END()); /* Last tag should always finish the sequence */ - if(!sofia_agent->nua) { - apt_log(APT_LOG_MARK,APT_PRIO_WARNING,"Failed to Create NUA [%s] %s", - apt_task_name_get(task), - sofia_agent->sip_bind_str); - } -} - -static apt_bool_t mrcp_sofia_task_run(apt_task_t *task) -{ - mrcp_sofia_agent_t *sofia_agent = apt_task_object_get(task); - - if(sofia_agent->nua) { - /* Run event loop */ - su_root_run(sofia_agent->root); - - /* Destroy allocated resources */ - nua_destroy(sofia_agent->nua); - sofia_agent->nua = NULL; - } - su_root_destroy(sofia_agent->root); - sofia_agent->root = NULL; - su_deinit(); - - apt_task_terminate_request_process(task); - return TRUE; -} - -static apt_bool_t mrcp_sofia_task_terminate(apt_task_t *task) -{ - mrcp_sofia_agent_t *sofia_agent = apt_task_object_get(task); - if(sofia_agent->nua) { - apt_log(APT_LOG_MARK,APT_PRIO_DEBUG,"Send Shutdown Signal to NUA [%s]", - apt_task_name_get(task)); - nua_shutdown(sofia_agent->nua); - } - return TRUE; -} - -static APR_INLINE mrcp_sofia_agent_t* mrcp_sofia_agent_get(mrcp_session_t *session) -{ - return session->signaling_agent->obj; -} - -static apt_bool_t mrcp_sofia_session_create(mrcp_session_t *session, const mrcp_sig_settings_t *settings) -{ - const char *sip_to_str; - mrcp_sofia_agent_t *sofia_agent = mrcp_sofia_agent_get(session); - mrcp_sofia_session_t *sofia_session; - session->request_vtable = &session_request_vtable; - - if(!sofia_agent->nua) { - return FALSE; - } - - sofia_session = apr_palloc(session->pool,sizeof(mrcp_sofia_session_t)); - sofia_session->mutex = NULL; - sofia_session->home = su_home_new(sizeof(*sofia_session->home)); - sofia_session->session = session; - sofia_session->sip_settings = settings; - sofia_session->terminate_requested = FALSE; - sofia_session->descriptor = NULL; - session->obj = sofia_session; - - if(settings->user_name && *settings->user_name != '\0') { - sip_to_str = apr_psprintf(session->pool,"sip:%s@%s:%hu", - settings->user_name, - settings->server_ip, - settings->server_port); - } - else { - sip_to_str = apr_psprintf(session->pool,"sip:%s:%hu", - settings->server_ip, - settings->server_port); - } - - sofia_session->nh = nua_handle( - sofia_agent->nua, - sofia_session, - SIPTAG_TO_STR(sip_to_str), - SIPTAG_FROM_STR(sofia_agent->sip_from_str), - TAG_IF(sofia_agent->sip_contact_str,SIPTAG_CONTACT_STR(sofia_agent->sip_contact_str)), - TAG_IF(settings->feature_tags,SIPTAG_ACCEPT_CONTACT_STR(settings->feature_tags)), - TAG_END()); - sofia_session->nua_state = nua_callstate_init; - - apr_thread_mutex_create(&sofia_session->mutex,APR_THREAD_MUTEX_DEFAULT,session->pool); - return TRUE; -} - -static apt_bool_t mrcp_sofia_session_cleanup(mrcp_sofia_session_t *sofia_session) -{ - if(sofia_session->mutex) { - apr_thread_mutex_destroy(sofia_session->mutex); - sofia_session->mutex = NULL; - } - if(sofia_session->home) { - su_home_unref(sofia_session->home); - sofia_session->home = NULL; - } - return TRUE; -} - -static apt_bool_t mrcp_sofia_session_unref(mrcp_sofia_session_t *sofia_session) -{ - if(sofia_session->nh) { - nua_handle_bind(sofia_session->nh, NULL); - nua_handle_destroy(sofia_session->nh); - sofia_session->nh = NULL; - } - sofia_session->session = NULL; - return TRUE; -} - -static apt_bool_t mrcp_sofia_session_offer(mrcp_session_t *session, mrcp_session_descriptor_t *descriptor) -{ - char sdp_str[2048]; - const char *local_sdp_str = NULL; - apt_bool_t res = FALSE; - mrcp_sofia_session_t *sofia_session = session->obj; - if(!sofia_session) { - return FALSE; - } - - if(session->signaling_agent) { - mrcp_sofia_agent_t *sofia_agent = mrcp_sofia_agent_get(session); - if(sofia_agent) { - if(sofia_agent->config->origin) { - apt_string_set(&descriptor->origin,sofia_agent->config->origin); - } - } - } - if(sdp_string_generate_by_mrcp_descriptor(sdp_str,sizeof(sdp_str),descriptor,TRUE) > 0) { - local_sdp_str = sdp_str; - sofia_session->descriptor = descriptor; - apt_obj_log(APT_LOG_MARK,APT_PRIO_INFO,session->log_obj,"Local SDP "APT_NAMESID_FMT"\n%s", - session->name, - MRCP_SESSION_SID(session), - local_sdp_str); - } - - apr_thread_mutex_lock(sofia_session->mutex); - - if(sofia_session->nh) { - res = TRUE; - nua_invite(sofia_session->nh, - TAG_IF(local_sdp_str,SOATAG_USER_SDP_STR(local_sdp_str)), - TAG_END()); - } - - apr_thread_mutex_unlock(sofia_session->mutex); - return res; -} - -static apt_bool_t mrcp_sofia_session_terminate_request(mrcp_session_t *session) -{ - mrcp_sofia_session_t *sofia_session = session->obj; - if(!sofia_session) { - return FALSE; - } - - sofia_session->terminate_requested = FALSE; - apr_thread_mutex_lock(sofia_session->mutex); - if(sofia_session->nh) { - sofia_session->terminate_requested = TRUE; - nua_bye(sofia_session->nh,TAG_END()); - } - apr_thread_mutex_unlock(sofia_session->mutex); - - if(sofia_session->terminate_requested == FALSE) { - mrcp_sofia_session_cleanup(sofia_session); - mrcp_session_terminate_response(session); - } - return TRUE; -} - -static apt_bool_t mrcp_sofia_session_discover_request(mrcp_session_t *session, mrcp_session_descriptor_t *descriptor) -{ - apt_bool_t res = FALSE; - mrcp_sofia_session_t *sofia_session = session->obj; - if(!sofia_session) { - return FALSE; - } - - apr_thread_mutex_lock(sofia_session->mutex); - if(sofia_session->nh) { - res = TRUE; - nua_options(sofia_session->nh,TAG_END()); - } - apr_thread_mutex_unlock(sofia_session->mutex); - return res; -} - -static void mrcp_sofia_on_session_ready( - int status, - mrcp_sofia_agent_t *sofia_agent, - nua_handle_t *nh, - mrcp_sofia_session_t *sofia_session, - sip_t const *sip, - tagi_t tags[]) -{ - mrcp_session_t *session = sofia_session->session; - const char *remote_sdp_str = NULL; - mrcp_session_descriptor_t *descriptor = mrcp_session_descriptor_create(session->pool); - descriptor->response_code = status; - - tl_gets(tags, - SOATAG_REMOTE_SDP_STR_REF(remote_sdp_str), - TAG_END()); - - if(remote_sdp_str) { - sdp_parser_t *parser = NULL; - sdp_session_t *sdp = NULL; - const char *force_destination_ip = NULL; - apt_obj_log(APT_LOG_MARK,APT_PRIO_INFO,session->log_obj,"Remote SDP "APT_NAMESID_FMT"\n%s", - session->name, - MRCP_SESSION_SID(session), - remote_sdp_str); - - parser = sdp_parse(sofia_session->home,remote_sdp_str,(int)strlen(remote_sdp_str),0); - sdp = sdp_session(parser); - if(sofia_session->sip_settings->force_destination == TRUE) { - force_destination_ip = sofia_session->sip_settings->server_ip; - } - - mrcp_descriptor_generate_by_sdp_session(descriptor,sdp,force_destination_ip,session->pool); - sdp_parser_free(parser); - } - - mrcp_session_answer(session,descriptor); -} - -static void mrcp_sofia_on_session_redirect( - int status, - mrcp_sofia_agent_t *sofia_agent, - nua_handle_t *nh, - mrcp_sofia_session_t *sofia_session, - sip_t const *sip, - tagi_t tags[]) -{ - mrcp_session_t *session = sofia_session->session; - sip_to_t *sip_to; - sip_contact_t *sip_contact; - if(!sip || !sip->sip_contact) { - return; - } - sip_contact = sip->sip_contact; - - apr_thread_mutex_lock(sofia_session->mutex); - - sip_to = sip_to_create(sofia_session->home, (const url_string_t *) sip_contact->m_url); - - apt_obj_log(APT_LOG_MARK,APT_PRIO_INFO,session->log_obj,"Redirect "APT_NAMESID_FMT" to "URL_PRINT_FORMAT, - session->name, - MRCP_SESSION_SID(session), - URL_PRINT_ARGS(sip_to->a_url)); - - if(sofia_session->nh) { - nua_handle_bind(sofia_session->nh, NULL); - nua_handle_destroy(sofia_session->nh); - sofia_session->nh = NULL; - } - - sofia_session->nh = nua_handle( - sofia_agent->nua, - sofia_session, - SIPTAG_TO(sip_to), - SIPTAG_FROM_STR(sofia_agent->sip_from_str), - TAG_IF(sofia_agent->sip_contact_str,SIPTAG_CONTACT_STR(sofia_agent->sip_contact_str)), - TAG_END()); - - apr_thread_mutex_unlock(sofia_session->mutex); - - mrcp_sofia_session_offer(sofia_session->session,sofia_session->descriptor); -} - -static void mrcp_sofia_on_session_terminate( - int status, - mrcp_sofia_agent_t *sofia_agent, - nua_handle_t *nh, - mrcp_sofia_session_t *sofia_session, - sip_t const *sip, - tagi_t tags[]) -{ - mrcp_session_t *session; - apt_bool_t terminate_requested; - - apr_thread_mutex_lock(sofia_session->mutex); - terminate_requested = sofia_session->terminate_requested; - session = sofia_session->session; - mrcp_sofia_session_unref(sofia_session); - apr_thread_mutex_unlock(sofia_session->mutex); - - if(terminate_requested == TRUE) { - sofia_session->nua_state = nua_callstate_terminated; - mrcp_sofia_session_cleanup(sofia_session); - mrcp_session_terminate_response(session); - return; - } - - if(sofia_session->nua_state == nua_callstate_ready) { - mrcp_session_terminate_event(session); - } - else { - mrcp_session_descriptor_t *descriptor = mrcp_session_descriptor_create(session->pool); - descriptor->response_code = status; - mrcp_session_answer(session,descriptor); - } - sofia_session->nua_state = nua_callstate_terminated; -} - -static void mrcp_sofia_on_state_change( - int status, - mrcp_sofia_agent_t *sofia_agent, - nua_handle_t *nh, - mrcp_sofia_session_t *sofia_session, - sip_t const *sip, - tagi_t tags[]) -{ - int nua_state = nua_callstate_init; - tl_gets(tags, - NUTAG_CALLSTATE_REF(nua_state), - TAG_END()); - - if(!sofia_session || !sofia_session->session) { - apt_log(APT_LOG_MARK,APT_PRIO_WARNING,"SIP Call State [%s]", nua_callstate_name(nua_state)); - return; - } - apt_obj_log(APT_LOG_MARK,APT_PRIO_NOTICE,sofia_session->session->log_obj,"SIP Call State %s [%s]", - sofia_session->session->name, - nua_callstate_name(nua_state)); - - if(nua_state == nua_callstate_terminated) { - mrcp_sofia_on_session_terminate(status,sofia_agent,nh,sofia_session,sip,tags); - return; - } - - if(nua_state == nua_callstate_ready) { - mrcp_sofia_on_session_ready(status,sofia_agent,nh,sofia_session,sip,tags); - } - sofia_session->nua_state = nua_state; -} - -static void mrcp_sofia_on_resource_discover( - int status, - mrcp_sofia_agent_t *sofia_agent, - nua_handle_t *nh, - mrcp_sofia_session_t *sofia_session, - sip_t const *sip, - tagi_t tags[]) -{ - mrcp_session_t *session = sofia_session->session; - if(session) { - const char *remote_sdp_str = NULL; - mrcp_session_descriptor_t *descriptor = mrcp_session_descriptor_create(session->pool); - descriptor->response_code = status; - - if(sip->sip_payload) { - remote_sdp_str = sip->sip_payload->pl_data; - } - - if(remote_sdp_str) { - sdp_parser_t *parser = NULL; - sdp_session_t *sdp = NULL; - apt_obj_log(APT_LOG_MARK,APT_PRIO_INFO,session->obj,"Resource Discovery SDP %s\n%s", - session->name, - remote_sdp_str); - - parser = sdp_parse(sofia_session->home,remote_sdp_str,(int)strlen(remote_sdp_str),0); - sdp = sdp_session(parser); - mrcp_descriptor_generate_by_sdp_session(descriptor,sdp,NULL,session->pool); - sdp_parser_free(parser); - } - - mrcp_session_discover_response(session,descriptor); - } -} - -/** This callback will be called by SIP stack to process incoming events */ -static void mrcp_sofia_event_callback( - nua_event_t nua_event, - int status, - char const *phrase, - nua_t *nua, - mrcp_sofia_agent_t *sofia_agent, - nua_handle_t *nh, - mrcp_sofia_session_t *sofia_session, - sip_t const *sip, - tagi_t tags[]) -{ - apt_log(APT_LOG_MARK,APT_PRIO_INFO,"Receive SIP Event [%s] Status %d %s [%s]", - nua_event_name(nua_event), - status, - phrase, - sofia_agent->sig_agent->id); - - switch(nua_event) { - case nua_i_state: - mrcp_sofia_on_state_change(status,sofia_agent,nh,sofia_session,sip,tags); - break; - case nua_r_invite: - if(status >= 300 && status < 400) { - mrcp_sofia_on_session_redirect(status,sofia_agent,nh,sofia_session,sip,tags); - } - break; - case nua_r_options: - mrcp_sofia_on_resource_discover(status,sofia_agent,nh,sofia_session,sip,tags); - break; - case nua_r_shutdown: - /* if status < 200, shutdown still in progress */ - if(status >= 200) { - /* break main loop of sofia thread */ - su_root_break(sofia_agent->root); - } - break; - default: - break; - } -} diff --git a/libs/unimrcp/modules/mrcp-sofiasip/src/mrcp_sofiasip_logger.c b/libs/unimrcp/modules/mrcp-sofiasip/src/mrcp_sofiasip_logger.c deleted file mode 100644 index 49590e2fa89..00000000000 --- a/libs/unimrcp/modules/mrcp-sofiasip/src/mrcp_sofiasip_logger.c +++ /dev/null @@ -1,92 +0,0 @@ -/* - * Copyright 2008-2014 Arsen Chaloyan - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - * - * $Id: mrcp_sofiasip_logger.c 2136 2014-07-04 06:33:36Z achaloyan@gmail.com $ - */ - -#include -#include -#include -#include "apt_log.h" - -SOFIAPUBVAR su_log_t tport_log[]; /* Transport event debug */ -SOFIAPUBVAR su_log_t nea_log[]; /* Event engine debug */ -SOFIAPUBVAR su_log_t nta_log[]; /* Transaction engine debug */ -SOFIAPUBVAR su_log_t nua_log[]; /* User Agent engine debug */ -SOFIAPUBVAR su_log_t soa_log[]; /* SDP Offer/Answer engine debug */ -SOFIAPUBVAR su_log_t su_log_default[]; /* Default debug */ - -static void mrcp_sofiasip_log(void *stream, char const *format, va_list arg_ptr) -{ - if(format) { - /* use generic vsnprintf() since apr_vformatter doesn't support - the format %p widely used by SofiaSIP. */ - char buf[4096]; - int len = vsnprintf(buf, sizeof(buf), format, arg_ptr); - if(len <= 0) - return; - if(buf[len-1] == '\n') { - /* remove trailing '\n' since apt logger appends it anyway */ - len--; - buf[len] = '\0'; - } - apt_log(APT_LOG_MARK, APT_PRIO_DEBUG, "%.*s", len, buf); - } -} - -static su_log_t* mrcp_sofiasip_logger_get(const char *name) -{ - if (!strcasecmp(name,"tport")) - return tport_log; - else if (!strcasecmp(name,"nea")) - return nea_log; - else if (!strcasecmp(name,"nta")) - return nta_log; - else if (!strcasecmp(name,"nua")) - return nua_log; - else if (!strcasecmp(name,"soa")) - return soa_log; - else if (!strcasecmp(name,"default")) - return su_log_default; - return NULL; -} - -apt_bool_t mrcp_sofiasip_log_init(const char *name, const char *level_str, apt_bool_t redirect) -{ - su_log_t *logger = mrcp_sofiasip_logger_get(name); - if(!logger) { - apt_log(APT_LOG_MARK,APT_PRIO_WARNING,"Unknown SofiaSIP Logger <%s>",name); - return FALSE; - } - - apt_log(APT_LOG_MARK,APT_PRIO_DEBUG,"Init SofiaSIP Logger [%s] level:%s redirect:%d", - name, level_str, redirect); - su_log_init(logger); - - if(redirect == TRUE) { - su_log_redirect(logger, mrcp_sofiasip_log, NULL); - } - - if(level_str) { - int level = atoi(level_str); - if(level >=0 && level < 10) { - su_log_set_level(logger, level); - } - else { - apt_log(APT_LOG_MARK,APT_PRIO_WARNING,"Unknown SofiaSIP Log Level [%s]: must be in range [0..9]",level_str); - } - } - return TRUE; -} diff --git a/libs/unimrcp/modules/mrcp-sofiasip/src/mrcp_sofiasip_server_agent.c b/libs/unimrcp/modules/mrcp-sofiasip/src/mrcp_sofiasip_server_agent.c deleted file mode 100644 index 26871190cd7..00000000000 --- a/libs/unimrcp/modules/mrcp-sofiasip/src/mrcp_sofiasip_server_agent.c +++ /dev/null @@ -1,477 +0,0 @@ -/* - * Copyright 2008-2014 Arsen Chaloyan - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - * - * $Id: mrcp_sofiasip_server_agent.c 2250 2014-11-19 05:41:12Z achaloyan@gmail.com $ - */ - -typedef struct mrcp_sofia_agent_t mrcp_sofia_agent_t; -#define NUA_MAGIC_T mrcp_sofia_agent_t - -typedef struct mrcp_sofia_session_t mrcp_sofia_session_t; -#define NUA_HMAGIC_T mrcp_sofia_session_t - -#include -#include -#include -#include -#include -#include -#undef strcasecmp -#undef strncasecmp -#include - -#include "mrcp_sofiasip_server_agent.h" -#include "mrcp_session.h" -#include "mrcp_session_descriptor.h" -#include "mrcp_sdp.h" -#include "apt_log.h" - -struct mrcp_sofia_agent_t { - mrcp_sig_agent_t *sig_agent; - - mrcp_sofia_server_config_t *config; - char *sip_contact_str; - char *sip_bind_str; - - su_root_t *root; - nua_t *nua; -}; - -struct mrcp_sofia_session_t { - mrcp_session_t *session; - su_home_t *home; - nua_handle_t *nh; -}; - -/* Task Interface */ -static void mrcp_sofia_task_initialize(apt_task_t *task); -static apt_bool_t mrcp_sofia_task_run(apt_task_t *task); -static apt_bool_t mrcp_sofia_task_terminate(apt_task_t *task); - -/* MRCP Signaling Interface */ -static apt_bool_t mrcp_sofia_on_session_answer(mrcp_session_t *session, mrcp_session_descriptor_t *descriptor); -static apt_bool_t mrcp_sofia_on_session_terminate(mrcp_session_t *session); - -static const mrcp_session_response_vtable_t session_response_vtable = { - mrcp_sofia_on_session_answer, - mrcp_sofia_on_session_terminate, - NULL /* mrcp_sofia_on_session_control */, - NULL /* mrcp_sofia_on_session_discover */ -}; - -static apt_bool_t mrcp_sofia_config_validate(mrcp_sofia_agent_t *sofia_agent, mrcp_sofia_server_config_t *config, apr_pool_t *pool); - -static void mrcp_sofia_event_callback( nua_event_t nua_event, - int status, - char const *phrase, - nua_t *nua, - mrcp_sofia_agent_t *sofia_agent, - nua_handle_t *nh, - mrcp_sofia_session_t *sofia_session, - sip_t const *sip, - tagi_t tags[]); - -apt_bool_t mrcp_sofiasip_log_init(const char *name, const char *level_str, apt_bool_t redirect); - -/** Create Sofia-SIP Signaling Agent */ -MRCP_DECLARE(mrcp_sig_agent_t*) mrcp_sofiasip_server_agent_create(const char *id, mrcp_sofia_server_config_t *config, apr_pool_t *pool) -{ - apt_task_t *task; - apt_task_vtable_t *vtable; - mrcp_sofia_agent_t *sofia_agent; - sofia_agent = apr_palloc(pool,sizeof(mrcp_sofia_agent_t)); - sofia_agent->sig_agent = mrcp_signaling_agent_create(id,sofia_agent,pool); - sofia_agent->config = config; - sofia_agent->root = NULL; - sofia_agent->nua = NULL; - - if(mrcp_sofia_config_validate(sofia_agent,config,pool) == FALSE) { - return NULL; - } - - task = apt_task_create(sofia_agent,NULL,pool); - if(!task) { - return NULL; - } - apt_task_name_set(task,id); - vtable = apt_task_vtable_get(task); - if(vtable) { - vtable->on_pre_run = mrcp_sofia_task_initialize; - vtable->run = mrcp_sofia_task_run; - vtable->terminate = mrcp_sofia_task_terminate; - } - sofia_agent->sig_agent->task = task; - apt_log(APT_LOG_MARK,APT_PRIO_NOTICE,"Create SofiaSIP Agent [%s] ["SOFIA_SIP_VERSION"] %s", - id,sofia_agent->sip_bind_str); - return sofia_agent->sig_agent; -} - -/** Allocate Sofia-SIP config */ -MRCP_DECLARE(mrcp_sofia_server_config_t*) mrcp_sofiasip_server_config_alloc(apr_pool_t *pool) -{ - mrcp_sofia_server_config_t *config = apr_palloc(pool,sizeof(mrcp_sofia_server_config_t)); - config->local_ip = NULL; - config->ext_ip = NULL; - config->local_port = 0; - config->user_name = NULL; - config->user_agent_name = NULL; - config->origin = NULL; - config->transport = NULL; - config->force_destination = FALSE; - config->sip_t1 = 0; - config->sip_t2 = 0; - config->sip_t4 = 0; - config->sip_t1x64 = 0; - - config->tport_log = FALSE; - config->tport_dump_file = NULL; - - return config; -} - -MRCP_DECLARE(apt_bool_t) mrcp_sofiasip_server_logger_init(const char *name, const char *level_str, apt_bool_t redirect) -{ - return mrcp_sofiasip_log_init(name,level_str,redirect); -} - -static apt_bool_t mrcp_sofia_config_validate(mrcp_sofia_agent_t *sofia_agent, mrcp_sofia_server_config_t *config, apr_pool_t *pool) -{ - sofia_agent->config = config; - sofia_agent->sip_contact_str = NULL; /* Let Sofia-SIP implicitly set Contact header by default */ - if(config->ext_ip) { - /* Use external IP address in Contact header, if behind NAT */ - sofia_agent->sip_contact_str = apr_psprintf(pool,"sip:%s:%hu",config->ext_ip,config->local_port); - } - if(config->transport) { - sofia_agent->sip_bind_str = apr_psprintf(pool,"sip:%s:%hu;transport=%s", - config->local_ip, - config->local_port, - config->transport); - } - else { - sofia_agent->sip_bind_str = apr_psprintf(pool,"sip:%s:%hu", - config->local_ip, - config->local_port); - } - return TRUE; -} - -static void mrcp_sofia_task_initialize(apt_task_t *task) -{ - mrcp_sofia_agent_t *sofia_agent = apt_task_object_get(task); - mrcp_sofia_server_config_t *sofia_config = sofia_agent->config; - - /* Initialize Sofia-SIP library and create event loop */ - su_init(); - sofia_agent->root = su_root_create(NULL); - - /* Create a user agent instance. The stack will call the 'event_callback()' - * callback when events such as succesful registration to network, - * an incoming call, etc, occur. - */ - sofia_agent->nua = nua_create( - sofia_agent->root, /* Event loop */ - mrcp_sofia_event_callback, /* Callback for processing events */ - sofia_agent, /* Additional data to pass to callback */ - NUTAG_URL(sofia_agent->sip_bind_str), /* Address to bind to */ - NUTAG_AUTOANSWER(0), - NUTAG_APPL_METHOD("OPTIONS"), - TAG_IF(sofia_config->sip_t1,NTATAG_SIP_T1(sofia_config->sip_t1)), - TAG_IF(sofia_config->sip_t2,NTATAG_SIP_T2(sofia_config->sip_t2)), - TAG_IF(sofia_config->sip_t4,NTATAG_SIP_T4(sofia_config->sip_t4)), - TAG_IF(sofia_config->sip_t1x64,NTATAG_SIP_T1X64(sofia_config->sip_t1x64)), - SIPTAG_USER_AGENT_STR(sofia_config->user_agent_name), - TAG_IF(sofia_config->tport_log == TRUE,TPTAG_LOG(1)), /* Print out SIP messages to the console */ - TAG_IF(sofia_config->tport_dump_file,TPTAG_DUMP(sofia_config->tport_dump_file)), /* Dump SIP messages to the file */ - TAG_END()); /* Last tag should always finish the sequence */ - if(!sofia_agent->nua) { - apt_log(APT_LOG_MARK,APT_PRIO_WARNING,"Failed to Create NUA [%s] %s", - apt_task_name_get(task), - sofia_agent->sip_bind_str); - } -} - -static apt_bool_t mrcp_sofia_task_run(apt_task_t *task) -{ - mrcp_sofia_agent_t *sofia_agent = apt_task_object_get(task); - - if(sofia_agent->nua) { - /* Run event loop */ - su_root_run(sofia_agent->root); - - /* Destroy allocated resources */ - nua_destroy(sofia_agent->nua); - sofia_agent->nua = NULL; - } - su_root_destroy(sofia_agent->root); - sofia_agent->root = NULL; - su_deinit(); - - apt_task_terminate_request_process(task); - return TRUE; -} - -static apt_bool_t mrcp_sofia_task_terminate(apt_task_t *task) -{ - mrcp_sofia_agent_t *sofia_agent = apt_task_object_get(task); - if(sofia_agent->nua) { - apt_log(APT_LOG_MARK,APT_PRIO_DEBUG,"Send Shutdown Signal to NUA [%s]", - apt_task_name_get(task)); - nua_shutdown(sofia_agent->nua); - } - return TRUE; -} - -static mrcp_sofia_session_t* mrcp_sofia_session_create(mrcp_sofia_agent_t *sofia_agent, nua_handle_t *nh) -{ - mrcp_sofia_session_t *sofia_session; - mrcp_session_t* session = sofia_agent->sig_agent->create_server_session(sofia_agent->sig_agent); - if(!session) { - return NULL; - } - session->response_vtable = &session_response_vtable; - session->event_vtable = NULL; - - sofia_session = apr_palloc(session->pool,sizeof(mrcp_sofia_session_t)); - sofia_session->home = su_home_new(sizeof(*sofia_session->home)); - sofia_session->session = session; - session->obj = sofia_session; - - nua_handle_bind(nh, sofia_session); - sofia_session->nh = nh; - return sofia_session; -} - -static int sip_status_get(mrcp_session_status_e status) -{ - switch (status) { - case MRCP_SESSION_STATUS_OK: - return 200; - case MRCP_SESSION_STATUS_NO_SUCH_RESOURCE: - return 404; - case MRCP_SESSION_STATUS_UNACCEPTABLE_RESOURCE: - return 406; - case MRCP_SESSION_STATUS_UNAVAILABLE_RESOURCE: - return 480; - case MRCP_SESSION_STATUS_ERROR: - return 500; - } - return 200; -} - -static apt_bool_t mrcp_sofia_on_session_answer(mrcp_session_t *session, mrcp_session_descriptor_t *descriptor) -{ - mrcp_sofia_session_t *sofia_session = session->obj; - mrcp_sofia_agent_t *sofia_agent = session->signaling_agent->obj; - const char *local_sdp_str = NULL; - char sdp_str[2048]; - - if(!sofia_agent || !sofia_session || !sofia_session->nh) { - return FALSE; - } - - if(descriptor->status != MRCP_SESSION_STATUS_OK) { - int status = sip_status_get(descriptor->status); - nua_respond(sofia_session->nh, status, sip_status_phrase(status), - TAG_IF(sofia_agent->sip_contact_str,SIPTAG_CONTACT_STR(sofia_agent->sip_contact_str)), - TAG_END()); - return TRUE; - } - - if(sofia_agent->config->origin) { - apt_string_set(&descriptor->origin,sofia_agent->config->origin); - } - - if(sdp_string_generate_by_mrcp_descriptor(sdp_str,sizeof(sdp_str),descriptor,FALSE) > 0) { - local_sdp_str = sdp_str; - apt_log(APT_LOG_MARK,APT_PRIO_INFO,"Local SDP "APT_NAMESID_FMT"\n%s", - session->name, - MRCP_SESSION_SID(session), - local_sdp_str); - } - - nua_respond(sofia_session->nh, SIP_200_OK, - TAG_IF(sofia_agent->sip_contact_str,SIPTAG_CONTACT_STR(sofia_agent->sip_contact_str)), - TAG_IF(local_sdp_str,SOATAG_USER_SDP_STR(local_sdp_str)), - SOATAG_AUDIO_AUX("telephone-event"), - NUTAG_AUTOANSWER(0), - TAG_END()); - - return TRUE; -} - -static apt_bool_t mrcp_sofia_on_session_terminate(mrcp_session_t *session) -{ - mrcp_sofia_session_t *sofia_session = session->obj; - if(sofia_session) { - if(sofia_session->nh) { - nua_handle_bind(sofia_session->nh, NULL); - nua_handle_destroy(sofia_session->nh); - } - if(sofia_session->home) { - su_home_unref(sofia_session->home); - sofia_session->home = NULL; - } - sofia_session->session = NULL; - } - - apt_log(APT_LOG_MARK,APT_PRIO_NOTICE,"Destroy Session "APT_SID_FMT, MRCP_SESSION_SID(session)); - mrcp_session_destroy(session); - return TRUE; -} - -static void mrcp_sofia_on_call_receive(mrcp_sofia_agent_t *sofia_agent, - nua_handle_t *nh, - mrcp_sofia_session_t *sofia_session, - sip_t const *sip, - tagi_t tags[]) -{ - apt_bool_t status = FALSE; - const char *remote_sdp_str = NULL; - mrcp_session_descriptor_t *descriptor; - - if(!sofia_session) { - sofia_session = mrcp_sofia_session_create(sofia_agent,nh); - if(!sofia_session) { - nua_respond(nh, SIP_488_NOT_ACCEPTABLE, TAG_END()); - return; - } - } - - descriptor = mrcp_session_descriptor_create(sofia_session->session->pool); - - tl_gets(tags, - SOATAG_REMOTE_SDP_STR_REF(remote_sdp_str), - TAG_END()); - - if(remote_sdp_str) { - sdp_parser_t *parser = NULL; - sdp_session_t *sdp = NULL; - apt_log(APT_LOG_MARK,APT_PRIO_INFO,"Remote SDP "APT_NAMESID_FMT"\n%s", - sofia_session->session->name, - MRCP_SESSION_SID(sofia_session->session), - remote_sdp_str); - - parser = sdp_parse(sofia_session->home,remote_sdp_str,(int)strlen(remote_sdp_str),0); - sdp = sdp_session(parser); - status = mrcp_descriptor_generate_by_sdp_session(descriptor,sdp,NULL,sofia_session->session->pool); - sdp_parser_free(parser); - } - - if(status == FALSE) { - nua_respond(nh, SIP_400_BAD_REQUEST, TAG_END()); - return; - } - - mrcp_session_offer(sofia_session->session,descriptor); -} - -static void mrcp_sofia_on_call_terminate(mrcp_sofia_agent_t *sofia_agent, - nua_handle_t *nh, - mrcp_sofia_session_t *sofia_session, - sip_t const *sip, - tagi_t tags[]) -{ - if(sofia_session) { - mrcp_session_terminate_request(sofia_session->session); - } -} - -static void mrcp_sofia_on_state_change(mrcp_sofia_agent_t *sofia_agent, - nua_handle_t *nh, - mrcp_sofia_session_t *sofia_session, - sip_t const *sip, - tagi_t tags[]) -{ - int nua_state = nua_callstate_init; - tl_gets(tags, - NUTAG_CALLSTATE_REF(nua_state), - TAG_END()); - - apt_log(APT_LOG_MARK,APT_PRIO_NOTICE,"SIP Call State %s [%s]", - sofia_session ? sofia_session->session->name : "", - nua_callstate_name(nua_state)); - - switch(nua_state) { - case nua_callstate_received: - mrcp_sofia_on_call_receive(sofia_agent,nh,sofia_session,sip,tags); - break; - case nua_callstate_terminated: - mrcp_sofia_on_call_terminate(sofia_agent,nh,sofia_session,sip,tags); - break; - } -} - -static void mrcp_sofia_on_resource_discover(mrcp_sofia_agent_t *sofia_agent, - nua_handle_t *nh, - mrcp_sofia_session_t *sofia_session, - sip_t const *sip, - tagi_t tags[]) -{ - char sdp_str[2048]; - const char *local_sdp_str = NULL; - - const char *ip = sofia_agent->config->ext_ip ? - sofia_agent->config->ext_ip : sofia_agent->config->local_ip; - - if(sdp_resource_discovery_string_generate(ip,sofia_agent->config->origin,sdp_str,sizeof(sdp_str)) > 0) { - local_sdp_str = sdp_str; - apt_log(APT_LOG_MARK,APT_PRIO_INFO,"Resource Discovery SDP\n[%s]\n", - local_sdp_str); - } - - nua_respond(nh, SIP_200_OK, - NUTAG_WITH_CURRENT(sofia_agent->nua), - TAG_IF(sofia_agent->sip_contact_str,SIPTAG_CONTACT_STR(sofia_agent->sip_contact_str)), - TAG_IF(local_sdp_str,SOATAG_USER_SDP_STR(local_sdp_str)), - SOATAG_AUDIO_AUX("telephone-event"), - TAG_END()); -} - -/** This callback will be called by SIP stack to process incoming events */ -static void mrcp_sofia_event_callback( nua_event_t nua_event, - int status, - char const *phrase, - nua_t *nua, - mrcp_sofia_agent_t *sofia_agent, - nua_handle_t *nh, - mrcp_sofia_session_t *sofia_session, - sip_t const *sip, - tagi_t tags[]) -{ - apt_log(APT_LOG_MARK,APT_PRIO_INFO,"Receive SIP Event [%s] Status %d %s [%s]", - nua_event_name(nua_event), - status, - phrase, - sofia_agent->sig_agent->id); - - switch(nua_event) { - case nua_i_state: - mrcp_sofia_on_state_change(sofia_agent,nh,sofia_session,sip,tags); - break; - case nua_i_options: - mrcp_sofia_on_resource_discover(sofia_agent,nh,sofia_session,sip,tags); - break; - case nua_r_shutdown: - /* if status < 200, shutdown still in progress */ - if(status >= 200) { - /* break main loop of sofia thread */ - su_root_break(sofia_agent->root); - } - break; - default: - break; - } -} diff --git a/libs/unimrcp/modules/mrcp-unirtsp/Makefile.am b/libs/unimrcp/modules/mrcp-unirtsp/Makefile.am deleted file mode 100644 index 479d631da31..00000000000 --- a/libs/unimrcp/modules/mrcp-unirtsp/Makefile.am +++ /dev/null @@ -1,22 +0,0 @@ -MAINTAINERCLEANFILES = Makefile.in - -AM_CPPFLAGS = -I$(top_srcdir)/modules/mrcp-unirtsp/include \ - -I$(top_srcdir)/libs/mrcp-signaling/include \ - -I$(top_srcdir)/libs/mrcp/include \ - -I$(top_srcdir)/libs/mrcp/message/include \ - -I$(top_srcdir)/libs/mrcp/control/include \ - -I$(top_srcdir)/libs/mrcp/resources/include \ - -I$(top_srcdir)/libs/mpf/include \ - -I$(top_srcdir)/libs/uni-rtsp/include \ - -I$(top_srcdir)/libs/apr-toolkit/include \ - $(UNIMRCP_APR_INCLUDES) $(UNIMRCP_SOFIA_INCLUDES) - -noinst_LTLIBRARIES = libmrcpunirtsp.la - -include_HEADERS = include/mrcp_unirtsp_sdp.h \ - include/mrcp_unirtsp_server_agent.h \ - include/mrcp_unirtsp_client_agent.h -libmrcpunirtsp_la_SOURCES = src/mrcp_unirtsp_sdp.c \ - src/mrcp_unirtsp_server_agent.c \ - src/mrcp_unirtsp_client_agent.c -libmrcpunirtsp_la_LIBADD = $(top_builddir)/libs/uni-rtsp/libunirtsp.la diff --git a/libs/unimrcp/modules/mrcp-unirtsp/include/mrcp_unirtsp_client_agent.h b/libs/unimrcp/modules/mrcp-unirtsp/include/mrcp_unirtsp_client_agent.h deleted file mode 100644 index bfc1a3f04e1..00000000000 --- a/libs/unimrcp/modules/mrcp-unirtsp/include/mrcp_unirtsp_client_agent.h +++ /dev/null @@ -1,59 +0,0 @@ -/* - * Copyright 2008-2014 Arsen Chaloyan - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - * - * $Id: mrcp_unirtsp_client_agent.h 2136 2014-07-04 06:33:36Z achaloyan@gmail.com $ - */ - -#ifndef MRCP_UNIRTSP_CLIENT_AGENT_H -#define MRCP_UNIRTSP_CLIENT_AGENT_H - -/** - * @file mrcp_unirtsp_client_agent.h - * @brief Implementation of MRCP Signaling Interface using UniRTSP - */ - -#include -#include "apt_string.h" -#include "mrcp_sig_agent.h" - -APT_BEGIN_EXTERN_C - -/** Declaration of UniRTSP agent config */ -typedef struct rtsp_client_config_t rtsp_client_config_t; - -/** Configuration of UniRTSP agent */ -struct rtsp_client_config_t { - /** SDP origin */ - char *origin; - /** Number of max RTSP connections */ - apr_size_t max_connection_count; - /** Request timeout */ - apr_size_t request_timeout; -}; - -/** - * Create UniRTSP signaling agent. - */ -MRCP_DECLARE(mrcp_sig_agent_t*) mrcp_unirtsp_client_agent_create(const char *id, rtsp_client_config_t *config, apr_pool_t *pool); - -/** - * Allocate UniRTSP config. - */ -MRCP_DECLARE(rtsp_client_config_t*) mrcp_unirtsp_client_config_alloc(apr_pool_t *pool); - - -APT_END_EXTERN_C - -#endif /* MRCP_UNIRTSP_CLIENT_AGENT_H */ diff --git a/libs/unimrcp/modules/mrcp-unirtsp/include/mrcp_unirtsp_sdp.h b/libs/unimrcp/modules/mrcp-unirtsp/include/mrcp_unirtsp_sdp.h deleted file mode 100644 index 556b4b46d7d..00000000000 --- a/libs/unimrcp/modules/mrcp-unirtsp/include/mrcp_unirtsp_sdp.h +++ /dev/null @@ -1,89 +0,0 @@ -/* - * Copyright 2008-2014 Arsen Chaloyan - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - * - * $Id: mrcp_unirtsp_sdp.h 2136 2014-07-04 06:33:36Z achaloyan@gmail.com $ - */ - -#ifndef MRCP_UNIRTSP_SDP_H -#define MRCP_UNIRTSP_SDP_H - -/** - * @file mrcp_unirtsp_sdp.h - * @brief MRCP RTSP SDP Transformations - */ - -#include "mrcp_session_descriptor.h" - -APT_BEGIN_EXTERN_C - -/** Generate MRCP descriptor by RTSP request */ -MRCP_DECLARE(mrcp_session_descriptor_t*) mrcp_descriptor_generate_by_rtsp_request( - const rtsp_message_t *request, - const char *force_destination_ip, - const apr_table_t *resource_map, - apr_pool_t *pool, - su_home_t *home); - -/** Generate MRCP descriptor by RTSP response */ -MRCP_DECLARE(mrcp_session_descriptor_t*) mrcp_descriptor_generate_by_rtsp_response( - const rtsp_message_t *request, - const rtsp_message_t *response, - const char *force_destination_ip, - const apr_table_t *resource_map, - apr_pool_t *pool, - su_home_t *home); - -/** Generate RTSP request by MRCP descriptor */ -MRCP_DECLARE(rtsp_message_t*) rtsp_request_generate_by_mrcp_descriptor( - const mrcp_session_descriptor_t *descriptor, - const apr_table_t *resource_map, - apr_pool_t *pool); -/** Generate RTSP response by MRCP descriptor */ -MRCP_DECLARE(rtsp_message_t*) rtsp_response_generate_by_mrcp_descriptor( - const rtsp_message_t *request, - const mrcp_session_descriptor_t *descriptor, - const apr_table_t *resource_map, - apr_pool_t *pool); - -/** Generate RTSP resource discovery request */ -MRCP_DECLARE(rtsp_message_t*) rtsp_resource_discovery_request_generate( - const char *resource_name, - const apr_table_t *resource_map, - apr_pool_t *pool); - -/** Generate resource discovery descriptor by RTSP response */ -MRCP_DECLARE(mrcp_session_descriptor_t*) mrcp_resource_discovery_response_generate( - const rtsp_message_t *request, - const rtsp_message_t *response, - const apr_table_t *resource_map, - apr_pool_t *pool, - su_home_t *home); - -/** Generate RTSP resource discovery response */ -MRCP_DECLARE(rtsp_message_t*) rtsp_resource_discovery_response_generate( - const rtsp_message_t *request, - const char *ip, - const char *origin, - apr_pool_t *pool); - - -/** Get MRCP resource name by RTSP resource name */ -MRCP_DECLARE(const char*) mrcp_name_get_by_rtsp_name(const apr_table_t *resource_map, const char *rtsp_name); -/** Get RTSP resource name by MRCP resource name */ -MRCP_DECLARE(const char*) rtsp_name_get_by_mrcp_name(const apr_table_t *resource_map, const char *mrcp_name); - -APT_END_EXTERN_C - -#endif /* MRCP_UNIRTSP_SDP_H */ diff --git a/libs/unimrcp/modules/mrcp-unirtsp/include/mrcp_unirtsp_server_agent.h b/libs/unimrcp/modules/mrcp-unirtsp/include/mrcp_unirtsp_server_agent.h deleted file mode 100644 index c326bb650d6..00000000000 --- a/libs/unimrcp/modules/mrcp-unirtsp/include/mrcp_unirtsp_server_agent.h +++ /dev/null @@ -1,70 +0,0 @@ -/* - * Copyright 2008-2014 Arsen Chaloyan - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - * - * $Id: mrcp_unirtsp_server_agent.h 2252 2014-11-21 02:45:15Z achaloyan@gmail.com $ - */ - -#ifndef MRCP_UNIRTSP_SERVER_AGENT_H -#define MRCP_UNIRTSP_SERVER_AGENT_H - -/** - * @file mrcp_unirtsp_server_agent.h - * @brief Implementation of MRCP Signaling Interface using UniRTSP - */ - -#include -#include "mrcp_sig_agent.h" - -APT_BEGIN_EXTERN_C - -/** UniRTSP config declaration */ -typedef struct rtsp_server_config_t rtsp_server_config_t; - -/** UniRTSP config */ -struct rtsp_server_config_t { - /** Local IP address to bind to */ - char *local_ip; - /** Local port to bind to */ - apr_port_t local_port; - - /** Resource location */ - char *resource_location; - /** SDP origin */ - char *origin; - - /** Map of the MRCP resource names */ - apr_table_t *resource_map; - - /** Number of max RTSP connections */ - apr_size_t max_connection_count; - - /** Force destination IP address. Should be used only in case - SDP contains incorrect connection address (local IP address behind NAT) */ - apt_bool_t force_destination; -}; - -/** - * Create UniRTSP signaling agent. - */ -MRCP_DECLARE(mrcp_sig_agent_t*) mrcp_unirtsp_server_agent_create(const char *id, rtsp_server_config_t *config, apr_pool_t *pool); - -/** - * Allocate UniRTSP config. - */ -MRCP_DECLARE(rtsp_server_config_t*) mrcp_unirtsp_server_config_alloc(apr_pool_t *pool); - -APT_END_EXTERN_C - -#endif /* MRCP_UNIRTSP_SERVER_AGENT_H */ diff --git a/libs/unimrcp/modules/mrcp-unirtsp/mrcpunirtsp.2010.vcxproj.filters b/libs/unimrcp/modules/mrcp-unirtsp/mrcpunirtsp.2010.vcxproj.filters deleted file mode 100644 index a990550f29a..00000000000 --- a/libs/unimrcp/modules/mrcp-unirtsp/mrcpunirtsp.2010.vcxproj.filters +++ /dev/null @@ -1,35 +0,0 @@ - - - - - {93995380-89BD-4b04-88EB-625FBE52EBFB} - h;hpp;hxx;hm;inl;inc;xsd - - - {f87f8ada-12d1-412b-bd14-7e62df3f92a0} - cpp;c;cc;cxx;def;odl;idl;hpj;bat;asm;asmx - - - - - include - - - include - - - include - - - - - src - - - src - - - src - - - \ No newline at end of file diff --git a/libs/unimrcp/modules/mrcp-unirtsp/mrcpunirtsp.2017.vcxproj b/libs/unimrcp/modules/mrcp-unirtsp/mrcpunirtsp.2017.vcxproj deleted file mode 100644 index cfd215e0a99..00000000000 --- a/libs/unimrcp/modules/mrcp-unirtsp/mrcpunirtsp.2017.vcxproj +++ /dev/null @@ -1,146 +0,0 @@ - - - - - Debug - Win32 - - - Debug - x64 - - - Release - Win32 - - - Release - x64 - - - - mrcpunirtsp - {DEB01ACB-D65F-4A62-AED9-58C1054499E9} - mrcpunirtsp - Win32Proj - - - - StaticLibrary - Unicode - true - $(DefaultPlatformToolset) - - - StaticLibrary - Unicode - $(DefaultPlatformToolset) - - - StaticLibrary - Unicode - true - $(DefaultPlatformToolset) - - - StaticLibrary - Unicode - $(DefaultPlatformToolset) - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - <_ProjectFileVersion>10.0.30319.1 - $(PlatformName)\$(Configuration)\ - $(PlatformName)\$(Configuration)\ - $(SolutionDir)$(PlatformName)\$(Configuration)\ - $(PlatformName)\$(Configuration)\ - $(PlatformName)\$(Configuration)\ - $(PlatformName)\$(Configuration)\ - $(SolutionDir)$(PlatformName)\$(Configuration)\ - $(PlatformName)\$(Configuration)\ - - - - include;%(AdditionalIncludeDirectories) - APT_STATIC_LIB;RTSP_STATIC_LIB;MPF_STATIC_LIB;MRCP_STATIC_LIB;LIBSOFIA_SIP_UA_STATIC;%(PreprocessorDefinitions) - 4456;4100;%(DisableSpecificWarnings) - - - - - X64 - - - include;%(AdditionalIncludeDirectories) - APT_STATIC_LIB;RTSP_STATIC_LIB;MPF_STATIC_LIB;MRCP_STATIC_LIB;LIBSOFIA_SIP_UA_STATIC;%(PreprocessorDefinitions) - ProgramDatabase - 4456;4100;%(DisableSpecificWarnings) - - - - - include;%(AdditionalIncludeDirectories) - APT_STATIC_LIB;RTSP_STATIC_LIB;MPF_STATIC_LIB;MRCP_STATIC_LIB;LIBSOFIA_SIP_UA_STATIC;%(PreprocessorDefinitions) - 4456;4100;%(DisableSpecificWarnings) - - - - - X64 - - - include;%(AdditionalIncludeDirectories) - APT_STATIC_LIB;RTSP_STATIC_LIB;MPF_STATIC_LIB;MRCP_STATIC_LIB;LIBSOFIA_SIP_UA_STATIC;%(PreprocessorDefinitions) - 4456;4100;%(DisableSpecificWarnings) - - - - - - - - - - - - - - - {70a49bc2-7500-41d0-b75d-edcc5be987a0} - - - - - - \ No newline at end of file diff --git a/libs/unimrcp/modules/mrcp-unirtsp/mrcpunirtsp.vcproj b/libs/unimrcp/modules/mrcp-unirtsp/mrcpunirtsp.vcproj deleted file mode 100644 index 37855a63566..00000000000 --- a/libs/unimrcp/modules/mrcp-unirtsp/mrcpunirtsp.vcproj +++ /dev/null @@ -1,280 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/libs/unimrcp/modules/mrcp-unirtsp/mrcpunirtsp.vcxproj b/libs/unimrcp/modules/mrcp-unirtsp/mrcpunirtsp.vcxproj deleted file mode 100644 index 200d68b92be..00000000000 --- a/libs/unimrcp/modules/mrcp-unirtsp/mrcpunirtsp.vcxproj +++ /dev/null @@ -1,146 +0,0 @@ - - - - - Debug - Win32 - - - Debug - x64 - - - Release - Win32 - - - Release - x64 - - - - {DEB01ACB-D65F-4A62-AED9-58C1054499E9} - mrcpunirtsp - Win32Proj - - - - StaticLibrary - Unicode - true - - - StaticLibrary - Unicode - - - StaticLibrary - Unicode - true - - - StaticLibrary - Unicode - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - <_ProjectFileVersion>10.0.30319.1 - AllRules.ruleset - - - AllRules.ruleset - - - AllRules.ruleset - - - AllRules.ruleset - - - - - - include;%(AdditionalIncludeDirectories) - - - - - include;%(AdditionalIncludeDirectories) - - - - - X64 - - - include;%(AdditionalIncludeDirectories) - ProgramDatabase - - - - - X64 - - - include;%(AdditionalIncludeDirectories) - - - - - - - - - - - - - - - {12a49562-bab9-43a3-a21d-15b60bbb4c31} - false - - - {504b3154-7a4f-459d-9877-b951021c3f1f} - false - - - - - - \ No newline at end of file diff --git a/libs/unimrcp/modules/mrcp-unirtsp/mrcpunirtsp.vcxproj.filters b/libs/unimrcp/modules/mrcp-unirtsp/mrcpunirtsp.vcxproj.filters deleted file mode 100644 index 3aff69f3853..00000000000 --- a/libs/unimrcp/modules/mrcp-unirtsp/mrcpunirtsp.vcxproj.filters +++ /dev/null @@ -1,35 +0,0 @@ - - - - - {93995380-89BD-4b04-88EB-625FBE52EBFB} - h;hpp;hxx;hm;inl;inc;xsd - - - {1ae8fa5f-5d29-4bd7-a332-b2e917a801ca} - cpp;c;cc;cxx;def;odl;idl;hpj;bat;asm;asmx - - - - - include - - - include - - - include - - - - - src - - - src - - - src - - - \ No newline at end of file diff --git a/libs/unimrcp/modules/mrcp-unirtsp/src/mrcp_unirtsp_client_agent.c b/libs/unimrcp/modules/mrcp-unirtsp/src/mrcp_unirtsp_client_agent.c deleted file mode 100644 index 760a10c0695..00000000000 --- a/libs/unimrcp/modules/mrcp-unirtsp/src/mrcp_unirtsp_client_agent.c +++ /dev/null @@ -1,437 +0,0 @@ -/* - * Copyright 2008-2014 Arsen Chaloyan - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - * - * $Id: mrcp_unirtsp_client_agent.c 2253 2014-11-21 02:57:19Z achaloyan@gmail.com $ - */ - -#include -#include - -#include "mrcp_unirtsp_client_agent.h" -#include "mrcp_session.h" -#include "mrcp_session_descriptor.h" -#include "mrcp_message.h" -#include "mrcp_stream.h" -#include "mrcp_resource_factory.h" -#include "rtsp_client.h" -#include "mrcp_unirtsp_sdp.h" -#include "apt_consumer_task.h" -#include "apt_log.h" - - -typedef struct mrcp_unirtsp_agent_t mrcp_unirtsp_agent_t; -typedef struct mrcp_unirtsp_session_t mrcp_unirtsp_session_t; - -struct mrcp_unirtsp_agent_t { - mrcp_sig_agent_t *sig_agent; - rtsp_client_t *rtsp_client; - - rtsp_client_config_t *config; -}; - -struct mrcp_unirtsp_session_t { - mrcp_message_t *mrcp_message; - mrcp_session_t *mrcp_session; - rtsp_client_session_t *rtsp_session; - const mrcp_sig_settings_t *rtsp_settings; - su_home_t *home; -}; - - -static apt_bool_t mrcp_unirtsp_session_offer(mrcp_session_t *session, mrcp_session_descriptor_t *descriptor); -static apt_bool_t mrcp_unirtsp_session_terminate(mrcp_session_t *session); -static apt_bool_t mrcp_unirtsp_session_control(mrcp_session_t *session, mrcp_message_t *message); -static apt_bool_t mrcp_unirtsp_resource_discover(mrcp_session_t *session, mrcp_session_descriptor_t *descriptor); - -static const mrcp_session_request_vtable_t session_request_vtable = { - mrcp_unirtsp_session_offer, - mrcp_unirtsp_session_terminate, - mrcp_unirtsp_session_control, - mrcp_unirtsp_resource_discover -}; - -static apt_bool_t mrcp_unirtsp_on_session_terminate_response(rtsp_client_t *client, rtsp_client_session_t *session); -static apt_bool_t mrcp_unirtsp_on_session_terminate_event(rtsp_client_t *client, rtsp_client_session_t *session); -static apt_bool_t mrcp_unirtsp_on_session_response(rtsp_client_t *client, rtsp_client_session_t *session, rtsp_message_t *request, rtsp_message_t *response); -static apt_bool_t mrcp_unirtsp_on_session_event(rtsp_client_t *client, rtsp_client_session_t *session, rtsp_message_t *message); - -static const rtsp_client_vtable_t session_response_vtable = { - mrcp_unirtsp_on_session_terminate_response, - mrcp_unirtsp_on_session_terminate_event, - mrcp_unirtsp_on_session_response, - mrcp_unirtsp_on_session_event -}; - -static apt_bool_t mrcp_unirtsp_session_create(mrcp_session_t *session, const mrcp_sig_settings_t *settings); -static apt_bool_t rtsp_config_validate(mrcp_unirtsp_agent_t *agent, rtsp_client_config_t *config, apr_pool_t *pool); -static apt_bool_t mrcp_unirtsp_on_resource_discover(mrcp_unirtsp_agent_t *agent, mrcp_unirtsp_session_t *session, rtsp_message_t *request, rtsp_message_t *response); - - -/** Create UniRTSP Signaling Agent */ -MRCP_DECLARE(mrcp_sig_agent_t*) mrcp_unirtsp_client_agent_create(const char *id, rtsp_client_config_t *config, apr_pool_t *pool) -{ - apt_task_t *task; - mrcp_unirtsp_agent_t *agent; - agent = apr_palloc(pool,sizeof(mrcp_unirtsp_agent_t)); - agent->sig_agent = mrcp_signaling_agent_create(id,agent,pool); - agent->sig_agent->create_client_session = mrcp_unirtsp_session_create; - agent->config = config; - - if(rtsp_config_validate(agent,config,pool) == FALSE) { - return NULL; - } - - agent->rtsp_client = rtsp_client_create( - id, - config->max_connection_count, - config->request_timeout, - agent, - &session_response_vtable, - pool); - if(!agent->rtsp_client) { - return NULL; - } - - task = rtsp_client_task_get(agent->rtsp_client); - agent->sig_agent->task = task; - - return agent->sig_agent; -} - -/** Allocate UniRTSP config */ -MRCP_DECLARE(rtsp_client_config_t*) mrcp_unirtsp_client_config_alloc(apr_pool_t *pool) -{ - rtsp_client_config_t *config = apr_palloc(pool,sizeof(rtsp_client_config_t)); - config->origin = NULL; - config->max_connection_count = 100; - config->request_timeout = 0; - return config; -} - -static apt_bool_t rtsp_config_validate(mrcp_unirtsp_agent_t *agent, rtsp_client_config_t *config, apr_pool_t *pool) -{ - agent->config = config; - return TRUE; -} - -static APR_INLINE mrcp_unirtsp_agent_t* client_agent_get(apt_task_t *task) -{ - apt_consumer_task_t *consumer_task = apt_task_object_get(task); - mrcp_unirtsp_agent_t *agent = apt_consumer_task_object_get(consumer_task); - return agent; -} - -static apt_bool_t mrcp_unirtsp_session_create(mrcp_session_t *mrcp_session, const mrcp_sig_settings_t *settings) -{ - mrcp_unirtsp_agent_t *agent = mrcp_session->signaling_agent->obj; - mrcp_unirtsp_session_t *session; - mrcp_session->request_vtable = &session_request_vtable; - - session = apr_palloc(mrcp_session->pool,sizeof(mrcp_unirtsp_session_t)); - session->home = su_home_new(sizeof(*session->home)); - session->rtsp_settings = settings; - session->mrcp_message = NULL; - session->mrcp_session = mrcp_session; - mrcp_session->obj = session; - - session->rtsp_session = rtsp_client_session_create( - agent->rtsp_client, - session->rtsp_settings->server_ip, - session->rtsp_settings->server_port, - session->rtsp_settings->resource_location); - if(!session->rtsp_session) { - su_home_unref(session->home); - return FALSE; - } - rtsp_client_session_object_set(session->rtsp_session,session); - return TRUE; -} - -static void mrcp_unirtsp_session_destroy(mrcp_unirtsp_session_t *session) -{ - if(session->home) { - su_home_unref(session->home); - session->home = NULL; - } - rtsp_client_session_object_set(session->rtsp_session,NULL); - rtsp_client_session_destroy(session->rtsp_session); -} - -static apt_bool_t mrcp_unirtsp_on_session_terminate_response(rtsp_client_t *rtsp_client, rtsp_client_session_t *rtsp_session) -{ - mrcp_unirtsp_session_t *session = rtsp_client_session_object_get(rtsp_session); - - mrcp_unirtsp_session_destroy(session); - mrcp_session_terminate_response(session->mrcp_session); - return TRUE; -} - -static apt_bool_t mrcp_unirtsp_on_session_terminate_event(rtsp_client_t *rtsp_client, rtsp_client_session_t *rtsp_session) -{ - mrcp_unirtsp_session_t *session = rtsp_client_session_object_get(rtsp_session); - mrcp_session_terminate_event(session->mrcp_session); - return TRUE; -} - -static apt_bool_t mrcp_unirtsp_on_announce_response(mrcp_unirtsp_agent_t *agent, mrcp_unirtsp_session_t *session, rtsp_message_t *message, const char *resource_name) -{ - mrcp_message_t *mrcp_message = NULL; - - if(!session || !resource_name) { - return FALSE; - } - - if(rtsp_header_property_check(&message->header,RTSP_HEADER_FIELD_CONTENT_TYPE) == TRUE && - message->header.content_type == RTSP_CONTENT_TYPE_MRCP && - rtsp_header_property_check(&message->header,RTSP_HEADER_FIELD_CONTENT_LENGTH) == TRUE && - message->header.content_length > 0) { - - apt_text_stream_t text_stream; - mrcp_parser_t *parser; - apt_str_t resource_name_str; - - text_stream.text = message->body; - apt_text_stream_reset(&text_stream); - apt_string_set(&resource_name_str,resource_name); - - parser = mrcp_parser_create(agent->sig_agent->resource_factory,session->mrcp_session->pool); - mrcp_parser_resource_set(parser,&resource_name_str); - if(mrcp_parser_run(parser,&text_stream,&mrcp_message) == APT_MESSAGE_STATUS_COMPLETE) { - mrcp_message->channel_id.session_id = message->header.session_id; - } - else { - /* error case */ - apt_log(APT_LOG_MARK,APT_PRIO_WARNING,"Failed to Parse MRCPv1 Message"); - } - } - else { - /* error case */ - } - - if(!mrcp_message) { - if(!session->mrcp_message) { - return FALSE; - } - mrcp_message = mrcp_response_create(session->mrcp_message,session->mrcp_session->pool); - mrcp_message->start_line.status_code = MRCP_STATUS_CODE_METHOD_FAILED; - } - - session->mrcp_message = NULL; - mrcp_session_control_response(session->mrcp_session,mrcp_message); - return TRUE; -} - -static apt_bool_t mrcp_unirtsp_on_session_response(rtsp_client_t *rtsp_client, rtsp_client_session_t *rtsp_session, rtsp_message_t *request, rtsp_message_t *response) -{ - apt_bool_t status = FALSE; - mrcp_unirtsp_agent_t *agent = rtsp_client_object_get(rtsp_client); - mrcp_unirtsp_session_t *session = rtsp_client_session_object_get(rtsp_session); - if(!agent || !session) { - return FALSE; - } - - switch(request->start_line.common.request_line.method_id) { - case RTSP_METHOD_SETUP: - { - const apt_str_t *session_id; - const char *force_destination_ip = NULL; - mrcp_session_descriptor_t *descriptor; - - if(session->rtsp_settings->force_destination == TRUE) { - force_destination_ip = session->rtsp_settings->server_ip; - } - - descriptor = mrcp_descriptor_generate_by_rtsp_response( - request, - response, - force_destination_ip, - session->rtsp_settings->resource_map, - session->mrcp_session->pool, - session->home); - if(!descriptor) { - return FALSE; - } - session_id = rtsp_client_session_id_get(session->rtsp_session); - if(session_id) { - apt_string_copy( - &session->mrcp_session->id, - session_id, - session->mrcp_session->pool); - } - status = mrcp_session_answer(session->mrcp_session,descriptor); - break; - } - case RTSP_METHOD_TEARDOWN: - { - mrcp_session_descriptor_t *descriptor; - descriptor = mrcp_descriptor_generate_by_rtsp_response( - request, - response, - NULL, - session->rtsp_settings->resource_map, - session->mrcp_session->pool, - session->home); - if(!descriptor) { - return FALSE; - } - status = mrcp_session_answer(session->mrcp_session,descriptor); - break; - } - case RTSP_METHOD_ANNOUNCE: - { - mrcp_unirtsp_agent_t *agent = rtsp_client_object_get(rtsp_client); - const char *resource_name = mrcp_name_get_by_rtsp_name( - session->rtsp_settings->resource_map, - request->start_line.common.request_line.resource_name); - mrcp_unirtsp_on_announce_response(agent,session,response,resource_name); - break; - } - case RTSP_METHOD_DESCRIBE: - { - mrcp_unirtsp_agent_t *agent = rtsp_client_object_get(rtsp_client); - mrcp_unirtsp_on_resource_discover(agent,session,request,response); - break; - } - default: - break; - } - - return status; -} - -static apt_bool_t mrcp_unirtsp_on_session_event(rtsp_client_t *rtsp_client, rtsp_client_session_t *rtsp_session, rtsp_message_t *message) -{ - mrcp_unirtsp_agent_t *agent = rtsp_client_object_get(rtsp_client); - mrcp_unirtsp_session_t *session = rtsp_client_session_object_get(rtsp_session); - const char *resource_name; - - if(!session) { - return FALSE; - } - - resource_name = mrcp_name_get_by_rtsp_name( - session->rtsp_settings->resource_map, - message->start_line.common.request_line.resource_name); - if(!resource_name) { - return FALSE; - } - - mrcp_unirtsp_on_announce_response(agent,session,message,resource_name); - return TRUE; -} - -static apt_bool_t mrcp_unirtsp_session_offer(mrcp_session_t *mrcp_session, mrcp_session_descriptor_t *descriptor) -{ - mrcp_unirtsp_session_t *session = mrcp_session->obj; - mrcp_unirtsp_agent_t *agent = mrcp_session->signaling_agent->obj; - rtsp_message_t *request; - - if(agent->config->origin) { - apt_string_set(&descriptor->origin,agent->config->origin); - } - - request = rtsp_request_generate_by_mrcp_descriptor(descriptor,session->rtsp_settings->resource_map,mrcp_session->pool); - return rtsp_client_session_request(agent->rtsp_client,session->rtsp_session,request); -} - -static apt_bool_t mrcp_unirtsp_session_terminate(mrcp_session_t *mrcp_session) -{ - mrcp_unirtsp_session_t *session = mrcp_session->obj; - mrcp_unirtsp_agent_t *agent = mrcp_session->signaling_agent->obj; - - return rtsp_client_session_terminate(agent->rtsp_client,session->rtsp_session); -} - -static apt_bool_t mrcp_unirtsp_session_control(mrcp_session_t *mrcp_session, mrcp_message_t *mrcp_message) -{ - mrcp_unirtsp_session_t *session = mrcp_session->obj; - mrcp_unirtsp_agent_t *agent = mrcp_session->signaling_agent->obj; - - char buffer[2000]; - apt_text_stream_t stream; - rtsp_message_t *rtsp_message = NULL; - apt_str_t *body; - - apt_text_stream_init(&stream,buffer,sizeof(buffer)); - - mrcp_message->start_line.version = MRCP_VERSION_1; - if(mrcp_message_generate(agent->sig_agent->resource_factory,mrcp_message,&stream) != TRUE) { - apt_log(APT_LOG_MARK,APT_PRIO_WARNING,"Failed to Generate MRCPv1 Message"); - return FALSE; - } - stream.text.length = stream.pos - stream.text.buf; - - rtsp_message = rtsp_request_create(mrcp_session->pool); - rtsp_message->start_line.common.request_line.resource_name = rtsp_name_get_by_mrcp_name( - session->rtsp_settings->resource_map, - mrcp_message->channel_id.resource_name.buf); - rtsp_message->start_line.common.request_line.method_id = RTSP_METHOD_ANNOUNCE; - - body = &rtsp_message->body; - body->length = mrcp_message->start_line.length; - body->buf = apr_palloc(rtsp_message->pool,body->length+1); - memcpy(body->buf,stream.text.buf,stream.text.length); - if(mrcp_message->body.length) { - memcpy(body->buf+stream.text.length,mrcp_message->body.buf,mrcp_message->body.length); - } - body->buf[body->length] = '\0'; - - rtsp_message->header.content_type = RTSP_CONTENT_TYPE_MRCP; - rtsp_header_property_add(&rtsp_message->header,RTSP_HEADER_FIELD_CONTENT_TYPE,rtsp_message->pool); - rtsp_message->header.content_length = body->length; - rtsp_header_property_add(&rtsp_message->header,RTSP_HEADER_FIELD_CONTENT_LENGTH,rtsp_message->pool); - - session->mrcp_message = mrcp_message; - rtsp_client_session_request(agent->rtsp_client,session->rtsp_session,rtsp_message); - return TRUE; -} - -static apt_bool_t mrcp_unirtsp_resource_discover(mrcp_session_t *mrcp_session, mrcp_session_descriptor_t *descriptor) -{ - mrcp_unirtsp_session_t *session = mrcp_session->obj; - mrcp_unirtsp_agent_t *agent = mrcp_session->signaling_agent->obj; - rtsp_message_t *request; - - if(!descriptor) { - return FALSE; - } - request = rtsp_resource_discovery_request_generate( - descriptor->resource_name.buf, - session->rtsp_settings->resource_map, - mrcp_session->pool); - if(request) { - rtsp_client_session_request(agent->rtsp_client,session->rtsp_session,request); - } - return TRUE; -} - -static apt_bool_t mrcp_unirtsp_on_resource_discover(mrcp_unirtsp_agent_t *agent, mrcp_unirtsp_session_t *session, rtsp_message_t *request, rtsp_message_t *response) -{ - mrcp_session_descriptor_t *descriptor; - if(!session) { - return FALSE; - } - - descriptor = mrcp_resource_discovery_response_generate( - request, - response, - session->rtsp_settings->resource_map, - session->mrcp_session->pool, - session->home); - if(descriptor) { - mrcp_session_discover_response(session->mrcp_session,descriptor); - } - return TRUE; -} diff --git a/libs/unimrcp/modules/mrcp-unirtsp/src/mrcp_unirtsp_sdp.c b/libs/unimrcp/modules/mrcp-unirtsp/src/mrcp_unirtsp_sdp.c deleted file mode 100644 index fa546179b37..00000000000 --- a/libs/unimrcp/modules/mrcp-unirtsp/src/mrcp_unirtsp_sdp.c +++ /dev/null @@ -1,598 +0,0 @@ -/* - * Copyright 2008-2014 Arsen Chaloyan - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - * - * $Id: mrcp_unirtsp_sdp.c 2136 2014-07-04 06:33:36Z achaloyan@gmail.com $ - */ - -#include -#include -#include -#include "rtsp_message.h" -#include "mrcp_unirtsp_sdp.h" -#include "mpf_rtp_attribs.h" -#include "mpf_rtp_pt.h" -#include "apt_text_stream.h" -#include "apt_log.h" - -/** Generate SDP media by RTP media descriptor */ -static apr_size_t sdp_rtp_media_generate(char *buffer, apr_size_t size, const mrcp_session_descriptor_t *descriptor, const mpf_rtp_media_descriptor_t *audio_media) -{ - apr_size_t offset = 0; - if(audio_media->state == MPF_MEDIA_ENABLED) { - int codec_count = 0; - int i; - mpf_codec_descriptor_t *codec_descriptor; - apr_array_header_t *descriptor_arr = audio_media->codec_list.descriptor_arr; - const apt_str_t *direction_str; - if(!descriptor_arr) { - return 0; - } - offset += snprintf(buffer+offset,size-offset,"m=audio %d RTP/AVP",audio_media->port); - for(i=0; inelts; i++) { - codec_descriptor = &APR_ARRAY_IDX(descriptor_arr,i,mpf_codec_descriptor_t); - if(codec_descriptor->enabled == TRUE) { - offset += snprintf(buffer+offset,size-offset," %d",codec_descriptor->payload_type); - codec_count++; - } - } - if(!codec_count){ - /* SDP m line should have at least one media format listed; use a reserved RTP payload type */ - offset += snprintf(buffer+offset,size-offset," %d",RTP_PT_RESERVED); - } - offset += snprintf(buffer+offset,size-offset,"\r\n"); - - for(i=0; inelts; i++) { - codec_descriptor = &APR_ARRAY_IDX(descriptor_arr,i,mpf_codec_descriptor_t); - if(codec_descriptor->enabled == TRUE && codec_descriptor->name.buf) { - offset += snprintf(buffer+offset,size-offset,"a=rtpmap:%d %s/%d\r\n", - codec_descriptor->payload_type, - codec_descriptor->name.buf, - codec_descriptor->sampling_rate); - if(codec_descriptor->format.buf) { - offset += snprintf(buffer+offset,size-offset,"a=fmtp:%d %s\r\n", - codec_descriptor->payload_type, - codec_descriptor->format.buf); - } - } - } - - direction_str = mpf_rtp_direction_str_get(audio_media->direction); - if(direction_str) { - offset += snprintf(buffer+offset,size-offset,"a=%s\r\n",direction_str->buf); - } - - if(audio_media->ptime) { - offset += snprintf(buffer+offset,size-offset,"a=ptime:%hu\r\n",audio_media->ptime); - } - } - else { - offset += snprintf(buffer+offset,size-offset,"m=audio 0 RTP/AVP %d\r\n",RTP_PT_RESERVED); - } - - return offset; -} - -/** Generate RTP media descriptor by SDP media */ -static apt_bool_t mpf_rtp_media_generate(mpf_rtp_media_descriptor_t *rtp_media, const sdp_media_t *sdp_media, const apt_str_t *ip, apr_pool_t *pool) -{ - mpf_rtp_attrib_e id; - apt_str_t name; - sdp_attribute_t *attrib = NULL; - sdp_rtpmap_t *map; - mpf_codec_descriptor_t *codec; - for(attrib = sdp_media->m_attributes; attrib; attrib=attrib->a_next) { - apt_string_set(&name,attrib->a_name); - id = mpf_rtp_attrib_id_find(&name); - switch(id) { - case RTP_ATTRIB_PTIME: - rtp_media->ptime = (apr_uint16_t)atoi(attrib->a_value); - break; - default: - break; - } - } - - mpf_codec_list_init(&rtp_media->codec_list,5,pool); - for(map = sdp_media->m_rtpmaps; map; map = map->rm_next) { - codec = mpf_codec_list_add(&rtp_media->codec_list); - if(codec) { - codec->payload_type = (apr_byte_t)map->rm_pt; - apt_string_assign(&codec->name,map->rm_encoding,pool); - codec->sampling_rate = (apr_uint16_t)map->rm_rate; - codec->channel_count = 1; - } - } - - switch(sdp_media->m_mode) { - case sdp_inactive: - rtp_media->direction = STREAM_DIRECTION_NONE; - break; - case sdp_sendonly: - rtp_media->direction = STREAM_DIRECTION_SEND; - break; - case sdp_recvonly: - rtp_media->direction = STREAM_DIRECTION_RECEIVE; - break; - case sdp_sendrecv: - rtp_media->direction = STREAM_DIRECTION_DUPLEX; - break; - } - - if(sdp_media->m_connections) { - apt_string_assign(&rtp_media->ip,sdp_media->m_connections->c_address,pool); - } - else { - rtp_media->ip = *ip; - } - if(sdp_media->m_port) { - rtp_media->port = (apr_port_t)sdp_media->m_port; - rtp_media->state = MPF_MEDIA_ENABLED; - } - else { - rtp_media->state = MPF_MEDIA_DISABLED; - } - return TRUE; -} - -/** Generate MRCP descriptor by SDP session */ -static apt_bool_t mrcp_descriptor_generate_by_rtsp_sdp_session(mrcp_session_descriptor_t *descriptor, const sdp_session_t *sdp, const char *force_destination_ip, apr_pool_t *pool) -{ - sdp_media_t *sdp_media; - - if(force_destination_ip) { - apt_string_assign(&descriptor->ip,force_destination_ip,pool); - } - else if(sdp->sdp_connection) { - apt_string_assign(&descriptor->ip,sdp->sdp_connection->c_address,pool); - } - - for(sdp_media=sdp->sdp_media; sdp_media; sdp_media=sdp_media->m_next) { - switch(sdp_media->m_type) { - case sdp_media_audio: - { - mpf_rtp_media_descriptor_t *media = apr_palloc(pool,sizeof(mpf_rtp_media_descriptor_t)); - mpf_rtp_media_descriptor_init(media); - media->id = mrcp_session_audio_media_add(descriptor,media); - mpf_rtp_media_generate(media,sdp_media,&descriptor->ip,pool); - break; - } - case sdp_media_video: - { - mpf_rtp_media_descriptor_t *media = apr_palloc(pool,sizeof(mpf_rtp_media_descriptor_t)); - mpf_rtp_media_descriptor_init(media); - media->id = mrcp_session_video_media_add(descriptor,media); - mpf_rtp_media_generate(media,sdp_media,&descriptor->ip,pool); - break; - } - default: - apt_log(APT_LOG_MARK,APT_PRIO_INFO,"Not Supported SDP Media [%s]", sdp_media->m_type_name); - break; - } - } - return TRUE; -} - -/** Generate MRCP descriptor by RTSP request */ -MRCP_DECLARE(mrcp_session_descriptor_t*) mrcp_descriptor_generate_by_rtsp_request( - const rtsp_message_t *request, - const char *force_destination_ip, - const apr_table_t *resource_map, - apr_pool_t *pool, - su_home_t *home) -{ - mrcp_session_descriptor_t *descriptor = NULL; - const char *resource_name = mrcp_name_get_by_rtsp_name( - resource_map, - request->start_line.common.request_line.resource_name); - if(!resource_name) { - return NULL; - } - - if(request->start_line.common.request_line.method_id == RTSP_METHOD_SETUP) { - if(rtsp_header_property_check(&request->header,RTSP_HEADER_FIELD_CONTENT_TYPE) == TRUE && - rtsp_header_property_check(&request->header,RTSP_HEADER_FIELD_CONTENT_LENGTH) == TRUE && - request->body.buf) { - - sdp_parser_t *parser; - sdp_session_t *sdp; - - parser = sdp_parse(home,request->body.buf,request->body.length,0); - sdp = sdp_session(parser); - if(sdp) { - descriptor = mrcp_session_descriptor_create(pool); - mrcp_descriptor_generate_by_rtsp_sdp_session(descriptor,sdp,force_destination_ip,pool); - } - else { - apt_log(APT_LOG_MARK,APT_PRIO_WARNING,"Failed to Parse SDP Message"); - } - sdp_parser_free(parser); - } - else { - /* create default descriptor in case RTSP SETUP contains no SDP */ - mpf_rtp_media_descriptor_t *media; - descriptor = mrcp_session_descriptor_create(pool); - media = apr_palloc(pool,sizeof(mpf_rtp_media_descriptor_t)); - mpf_rtp_media_descriptor_init(media); - media->state = MPF_MEDIA_ENABLED; - media->id = mrcp_session_audio_media_add(descriptor,media); - if(rtsp_header_property_check(&request->header,RTSP_HEADER_FIELD_TRANSPORT) == TRUE) { - media->port = request->header.transport.client_port_range.min; - media->ip = request->header.transport.destination; - } - } - - if(descriptor) { - apt_string_assign(&descriptor->resource_name,resource_name,pool); - descriptor->resource_state = TRUE; - } - } - else if(request->start_line.common.request_line.method_id == RTSP_METHOD_TEARDOWN) { - descriptor = mrcp_session_descriptor_create(pool); - apt_string_assign(&descriptor->resource_name,resource_name,pool); - descriptor->resource_state = FALSE; - } - return descriptor; -} - -/** Generate MRCP descriptor by RTSP response */ -MRCP_DECLARE(mrcp_session_descriptor_t*) mrcp_descriptor_generate_by_rtsp_response( - const rtsp_message_t *request, - const rtsp_message_t *response, - const char *force_destination_ip, - const apr_table_t *resource_map, - apr_pool_t *pool, - su_home_t *home) -{ - mrcp_session_descriptor_t *descriptor = NULL; - const char *resource_name = mrcp_name_get_by_rtsp_name( - resource_map, - request->start_line.common.request_line.resource_name); - if(!resource_name) { - return NULL; - } - - if(request->start_line.common.request_line.method_id == RTSP_METHOD_SETUP) { - if(rtsp_header_property_check(&response->header,RTSP_HEADER_FIELD_CONTENT_TYPE) == TRUE && - rtsp_header_property_check(&response->header,RTSP_HEADER_FIELD_CONTENT_LENGTH) == TRUE && - response->body.buf) { - - sdp_parser_t *parser; - sdp_session_t *sdp; - - parser = sdp_parse(home,response->body.buf,response->body.length,0); - sdp = sdp_session(parser); - if(sdp) { - descriptor = mrcp_session_descriptor_create(pool); - mrcp_descriptor_generate_by_rtsp_sdp_session(descriptor,sdp,force_destination_ip,pool); - - apt_string_assign(&descriptor->resource_name,resource_name,pool); - descriptor->resource_state = TRUE; - descriptor->response_code = response->start_line.common.status_line.status_code; - } - else { - apt_log(APT_LOG_MARK,APT_PRIO_WARNING,"Failed to Parse SDP Message"); - } - - sdp_parser_free(parser); - } - else { - descriptor = mrcp_session_descriptor_create(pool); - apt_string_assign(&descriptor->resource_name,resource_name,pool); - descriptor->resource_state = FALSE; - } - } - else if(request->start_line.common.request_line.method_id == RTSP_METHOD_TEARDOWN) { - descriptor = mrcp_session_descriptor_create(pool); - apt_string_assign(&descriptor->resource_name,resource_name,pool); - descriptor->resource_state = FALSE; - } - return descriptor; -} - -/** Generate RTSP request by MRCP descriptor */ -MRCP_DECLARE(rtsp_message_t*) rtsp_request_generate_by_mrcp_descriptor(const mrcp_session_descriptor_t *descriptor, const apr_table_t *resource_map, apr_pool_t *pool) -{ - apr_size_t i; - apr_size_t count; - apr_size_t audio_index = 0; - mpf_rtp_media_descriptor_t *audio_media; - apr_size_t video_index = 0; - mpf_rtp_media_descriptor_t *video_media; - apr_size_t offset = 0; - char buffer[2048]; - apr_size_t size = sizeof(buffer); - rtsp_message_t *request; - const char *ip = descriptor->ext_ip.buf ? descriptor->ext_ip.buf : (descriptor->ip.buf ? descriptor->ip.buf : "0.0.0.0"); - - request = rtsp_request_create(pool); - request->start_line.common.request_line.resource_name = rtsp_name_get_by_mrcp_name( - resource_map, - descriptor->resource_name.buf); - if(descriptor->resource_state != TRUE) { - request->start_line.common.request_line.method_id = RTSP_METHOD_TEARDOWN; - return request; - } - - request->start_line.common.request_line.method_id = RTSP_METHOD_SETUP; - - buffer[0] = '\0'; - offset += snprintf(buffer+offset,size-offset, - "v=0\r\n" - "o=%s 0 0 IN IP4 %s\r\n" - "s=-\r\n" - "c=IN IP4 %s\r\n" - "t=0 0\r\n", - descriptor->origin.buf ? descriptor->origin.buf : "-", - ip, - ip); - count = mrcp_session_media_count_get(descriptor); - for(i=0; iid == i) { - /* generate audio media */ - audio_index++; - offset += sdp_rtp_media_generate(buffer+offset,size-offset,descriptor,audio_media); - request->header.transport.client_port_range.min = audio_media->port; - request->header.transport.client_port_range.max = audio_media->port+1; - continue; - } - video_media = mrcp_session_video_media_get(descriptor,video_index); - if(video_media && video_media->id == i) { - /* generate video media */ - video_index++; - offset += sdp_rtp_media_generate(buffer+offset,size-offset,descriptor,video_media); - continue; - } - } - - request->header.transport.protocol = RTSP_TRANSPORT_RTP; - request->header.transport.profile = RTSP_PROFILE_AVP; - request->header.transport.delivery = RTSP_DELIVERY_UNICAST; - rtsp_header_property_add(&request->header,RTSP_HEADER_FIELD_TRANSPORT,request->pool); - - if(offset) { - apt_string_assign_n(&request->body,buffer,offset,pool); - request->header.content_type = RTSP_CONTENT_TYPE_SDP; - rtsp_header_property_add(&request->header,RTSP_HEADER_FIELD_CONTENT_TYPE,request->pool); - request->header.content_length = offset; - rtsp_header_property_add(&request->header,RTSP_HEADER_FIELD_CONTENT_LENGTH,request->pool); - } - return request; -} - -/** Generate RTSP response by MRCP descriptor */ -MRCP_DECLARE(rtsp_message_t*) rtsp_response_generate_by_mrcp_descriptor(const rtsp_message_t *request, const mrcp_session_descriptor_t *descriptor, const apr_table_t *resource_map, apr_pool_t *pool) -{ - rtsp_message_t *response = NULL; - - switch(descriptor->status) { - case MRCP_SESSION_STATUS_OK: - response = rtsp_response_create(request,RTSP_STATUS_CODE_OK,RTSP_REASON_PHRASE_OK,pool); - break; - case MRCP_SESSION_STATUS_NO_SUCH_RESOURCE: - response = rtsp_response_create(request,RTSP_STATUS_CODE_NOT_FOUND,RTSP_REASON_PHRASE_NOT_FOUND,pool); - break; - case MRCP_SESSION_STATUS_UNACCEPTABLE_RESOURCE: - case MRCP_SESSION_STATUS_UNAVAILABLE_RESOURCE: - response = rtsp_response_create(request,RTSP_STATUS_CODE_NOT_ACCEPTABLE,RTSP_REASON_PHRASE_NOT_ACCEPTABLE,pool); - break; - case MRCP_SESSION_STATUS_ERROR: - response = rtsp_response_create(request,RTSP_STATUS_CODE_INTERNAL_SERVER_ERROR,RTSP_REASON_PHRASE_INTERNAL_SERVER_ERROR,pool); - break; - } - - if(!response) { - return NULL; - } - - if(descriptor->status == MRCP_SESSION_STATUS_OK) { - apr_size_t i; - apr_size_t count; - apr_size_t audio_index = 0; - mpf_rtp_media_descriptor_t *audio_media; - apr_size_t video_index = 0; - mpf_rtp_media_descriptor_t *video_media; - apr_size_t offset = 0; - char buffer[2048]; - apr_size_t size = sizeof(buffer); - const char *ip = descriptor->ext_ip.buf ? descriptor->ext_ip.buf : (descriptor->ip.buf ? descriptor->ip.buf : "0.0.0.0"); - - buffer[0] = '\0'; - offset += snprintf(buffer+offset,size-offset, - "v=0\r\n" - "o=%s 0 0 IN IP4 %s\r\n" - "s=-\r\n" - "c=IN IP4 %s\r\n" - "t=0 0\r\n", - descriptor->origin.buf ? descriptor->origin.buf : "-", - ip, - ip); - count = mrcp_session_media_count_get(descriptor); - for(i=0; iid == i) { - /* generate audio media */ - rtsp_transport_t *transport; - audio_index++; - offset += sdp_rtp_media_generate(buffer+offset,size-offset,descriptor,audio_media); - transport = &response->header.transport; - transport->server_port_range.min = audio_media->port; - transport->server_port_range.max = audio_media->port+1; - transport->client_port_range = request->header.transport.client_port_range; - continue; - } - video_media = mrcp_session_video_media_get(descriptor,video_index); - if(video_media && video_media->id == i) { - /* generate video media */ - video_index++; - offset += sdp_rtp_media_generate(buffer+offset,size-offset,descriptor,video_media); - continue; - } - } - - /* ok */ - response->header.transport.protocol = RTSP_TRANSPORT_RTP; - response->header.transport.profile = RTSP_PROFILE_AVP; - response->header.transport.delivery = RTSP_DELIVERY_UNICAST; - rtsp_header_property_add(&response->header,RTSP_HEADER_FIELD_TRANSPORT,response->pool); - - if(offset) { - apt_string_assign_n(&response->body,buffer,offset,pool); - response->header.content_type = RTSP_CONTENT_TYPE_SDP; - rtsp_header_property_add(&response->header,RTSP_HEADER_FIELD_CONTENT_TYPE,response->pool); - response->header.content_length = offset; - rtsp_header_property_add(&response->header,RTSP_HEADER_FIELD_CONTENT_LENGTH,response->pool); - } - } - return response; -} - -/** Generate RTSP resource discovery request */ -MRCP_DECLARE(rtsp_message_t*) rtsp_resource_discovery_request_generate( - const char *resource_name, - const apr_table_t *resource_map, - apr_pool_t *pool) -{ - rtsp_message_t *request = rtsp_request_create(pool); - request->start_line.common.request_line.resource_name = rtsp_name_get_by_mrcp_name( - resource_map, - resource_name); - - request->start_line.common.request_line.method_id = RTSP_METHOD_DESCRIBE; - return request; -} - -/** Generate resource discovery descriptor by RTSP response */ -MRCP_DECLARE(mrcp_session_descriptor_t*) mrcp_resource_discovery_response_generate( - const rtsp_message_t *request, - const rtsp_message_t *response, - const apr_table_t *resource_map, - apr_pool_t *pool, - su_home_t *home) -{ - mrcp_session_descriptor_t *descriptor = NULL; - const char *resource_name = mrcp_name_get_by_rtsp_name( - resource_map, - request->start_line.common.request_line.resource_name); - if(!resource_name) { - return NULL; - } - - descriptor = mrcp_session_descriptor_create(pool); - apt_string_assign(&descriptor->resource_name,resource_name,pool); - - if(rtsp_header_property_check(&response->header,RTSP_HEADER_FIELD_CONTENT_TYPE) == TRUE && - rtsp_header_property_check(&response->header,RTSP_HEADER_FIELD_CONTENT_LENGTH) == TRUE && - response->body.buf) { - - sdp_parser_t *parser; - sdp_session_t *sdp; - - parser = sdp_parse(home,response->body.buf,response->body.length,0); - sdp = sdp_session(parser); - if(sdp) { - mrcp_descriptor_generate_by_rtsp_sdp_session(descriptor,sdp,0,pool); - descriptor->resource_state = TRUE; - descriptor->response_code = response->start_line.common.status_line.status_code; - } - else { - apt_string_assign(&descriptor->resource_name,resource_name,pool); - descriptor->resource_state = TRUE; - } - - sdp_parser_free(parser); - } - else { - descriptor->resource_state = FALSE; - } - return descriptor; -} - -/** Generate RTSP resource discovery response */ -MRCP_DECLARE(rtsp_message_t*) rtsp_resource_discovery_response_generate( - const rtsp_message_t *request, - const char *ip, - const char *origin, - apr_pool_t *pool) -{ - rtsp_message_t *response = rtsp_response_create(request,RTSP_STATUS_CODE_OK,RTSP_REASON_PHRASE_OK,pool); - if(response) { - apr_size_t offset = 0; - char buffer[2048]; - apr_size_t size = sizeof(buffer); - - if(!ip) { - ip = "0.0.0.0"; - } - if(!origin) { - origin = "-"; - } - - buffer[0] = '\0'; - offset += snprintf(buffer+offset,size-offset, - "v=0\r\n" - "o=%s 0 0 IN IP4 %s\r\n" - "s=-\r\n" - "c=IN IP4 %s\r\n" - "t=0 0\r\n" - "m=audio 0 RTP/AVP 0 8 96 101\r\n" - "a=rtpmap:0 PCMU/8000\r\n" - "a=rtpmap:8 PCMA/8000\r\n" - "a=rtpmap:96 L16/8000\r\n" - "a=rtpmap:101 telephone-event/8000\r\n", - origin, - ip, - ip); - - if(offset) { - apt_string_assign_n(&response->body,buffer,offset,pool); - response->header.content_type = RTSP_CONTENT_TYPE_SDP; - rtsp_header_property_add(&response->header,RTSP_HEADER_FIELD_CONTENT_TYPE,response->pool); - response->header.content_length = offset; - rtsp_header_property_add(&response->header,RTSP_HEADER_FIELD_CONTENT_LENGTH,response->pool); - } - } - - return response; -} - -/** Get MRCP resource name by RTSP resource name */ -MRCP_DECLARE(const char*) mrcp_name_get_by_rtsp_name(const apr_table_t *resource_map, const char *rtsp_name) -{ - if(rtsp_name) { - const apr_array_header_t *header = apr_table_elts(resource_map); - apr_table_entry_t *entry = (apr_table_entry_t *)header->elts; - int i; - for(i=0; inelts; i++) { - if(!entry[i].val) continue; - - if(strcasecmp(entry[i].val,rtsp_name) == 0) { - return entry[i].key; - } - } - apt_log(APT_LOG_MARK,APT_PRIO_WARNING,"Unknown RTSP Resource Name [%s]", rtsp_name); - } - return "unknown"; -} - -/** Get RTSP resource name by MRCP resource name */ -MRCP_DECLARE(const char*) rtsp_name_get_by_mrcp_name(const apr_table_t *resource_map, const char *mrcp_name) -{ - const char *rtsp_name = apr_table_get(resource_map,mrcp_name); - if(rtsp_name) { - return rtsp_name; - } - return mrcp_name; -} diff --git a/libs/unimrcp/modules/mrcp-unirtsp/src/mrcp_unirtsp_server_agent.c b/libs/unimrcp/modules/mrcp-unirtsp/src/mrcp_unirtsp_server_agent.c deleted file mode 100644 index a05614763f0..00000000000 --- a/libs/unimrcp/modules/mrcp-unirtsp/src/mrcp_unirtsp_server_agent.c +++ /dev/null @@ -1,381 +0,0 @@ -/* - * Copyright 2008-2014 Arsen Chaloyan - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - * - * $Id: mrcp_unirtsp_server_agent.c 2136 2014-07-04 06:33:36Z achaloyan@gmail.com $ - */ - -#include -#include - -#include "mrcp_unirtsp_server_agent.h" -#include "mrcp_session.h" -#include "mrcp_session_descriptor.h" -#include "mrcp_message.h" -#include "mrcp_resource_factory.h" -#include "mrcp_stream.h" -#include "rtsp_server.h" -#include "mrcp_unirtsp_sdp.h" -#include "apt_consumer_task.h" -#include "apt_log.h" - -typedef struct mrcp_unirtsp_agent_t mrcp_unirtsp_agent_t; -typedef struct mrcp_unirtsp_session_t mrcp_unirtsp_session_t; - -struct mrcp_unirtsp_agent_t { - mrcp_sig_agent_t *sig_agent; - rtsp_server_t *rtsp_server; - - rtsp_server_config_t *config; -}; - -struct mrcp_unirtsp_session_t { - mrcp_session_t *mrcp_session; - rtsp_server_session_t *rtsp_session; - su_home_t *home; -}; - - -static apt_bool_t mrcp_unirtsp_on_session_answer(mrcp_session_t *session, mrcp_session_descriptor_t *descriptor); -static apt_bool_t mrcp_unirtsp_on_session_terminate(mrcp_session_t *session); -static apt_bool_t mrcp_unirtsp_on_session_control(mrcp_session_t *session, mrcp_message_t *message); - -static const mrcp_session_response_vtable_t session_response_vtable = { - mrcp_unirtsp_on_session_answer, - mrcp_unirtsp_on_session_terminate, - mrcp_unirtsp_on_session_control, - NULL /* mrcp_unirtsp_on_session_discover */ -}; - -static apt_bool_t mrcp_unirtsp_session_create(rtsp_server_t *server, rtsp_server_session_t *session); -static apt_bool_t mrcp_unirtsp_session_terminate(rtsp_server_t *server, rtsp_server_session_t *session); -static apt_bool_t mrcp_unirtsp_message_handle(rtsp_server_t *server, rtsp_server_session_t *session, rtsp_message_t *message); - -static const rtsp_server_vtable_t session_request_vtable = { - mrcp_unirtsp_session_create, - mrcp_unirtsp_session_terminate, - mrcp_unirtsp_message_handle -}; - - -static apt_bool_t rtsp_config_validate(mrcp_unirtsp_agent_t *agent, rtsp_server_config_t *config, apr_pool_t *pool); - - -/** Create UniRTSP Signaling Agent */ -MRCP_DECLARE(mrcp_sig_agent_t*) mrcp_unirtsp_server_agent_create(const char *id, rtsp_server_config_t *config, apr_pool_t *pool) -{ - apt_task_t *task; - mrcp_unirtsp_agent_t *agent; - agent = apr_palloc(pool,sizeof(mrcp_unirtsp_agent_t)); - agent->sig_agent = mrcp_signaling_agent_create(id,agent,pool); - agent->config = config; - - if(rtsp_config_validate(agent,config,pool) == FALSE) { - return NULL; - } - - agent->rtsp_server = rtsp_server_create( - id, - config->local_ip, - config->local_port, - config->max_connection_count, - agent, - &session_request_vtable, - pool); - if(!agent->rtsp_server) { - return NULL; - } - - task = rtsp_server_task_get(agent->rtsp_server); - agent->sig_agent->task = task; - - return agent->sig_agent; -} - -/** Allocate UniRTSP config */ -MRCP_DECLARE(rtsp_server_config_t*) mrcp_unirtsp_server_config_alloc(apr_pool_t *pool) -{ - rtsp_server_config_t *config = apr_palloc(pool,sizeof(rtsp_server_config_t)); - config->local_ip = NULL; - config->local_port = 0; - config->origin = NULL; - config->resource_location = NULL; - config->resource_map = apr_table_make(pool,2); - config->max_connection_count = 100; - config->force_destination = FALSE; - return config; -} - - -static apt_bool_t rtsp_config_validate(mrcp_unirtsp_agent_t *agent, rtsp_server_config_t *config, apr_pool_t *pool) -{ - if(!config->local_ip) { - return FALSE; - } - agent->config = config; - return TRUE; -} - -static APR_INLINE mrcp_unirtsp_agent_t* server_agent_get(apt_task_t *task) -{ - apt_consumer_task_t *consumer_task = apt_task_object_get(task); - mrcp_unirtsp_agent_t *agent = apt_consumer_task_object_get(consumer_task); - return agent; -} - -static apt_bool_t mrcp_unirtsp_session_create(rtsp_server_t *rtsp_server, rtsp_server_session_t *rtsp_session) -{ - mrcp_unirtsp_agent_t *agent = rtsp_server_object_get(rtsp_server); - const apt_str_t *session_id; - mrcp_unirtsp_session_t *session; - mrcp_session_t* mrcp_session = agent->sig_agent->create_server_session(agent->sig_agent); - if(!mrcp_session) { - return FALSE; - } - session_id = rtsp_server_session_id_get(rtsp_session); - if(session_id) { - mrcp_session->id = *session_id; - } - mrcp_session->response_vtable = &session_response_vtable; - mrcp_session->event_vtable = NULL; - - session = apr_palloc(mrcp_session->pool,sizeof(mrcp_unirtsp_session_t)); - session->mrcp_session = mrcp_session; - mrcp_session->obj = session; - - session->home = su_home_new(sizeof(*session->home)); - - rtsp_server_session_object_set(rtsp_session,session); - session->rtsp_session = rtsp_session; - return TRUE; -} - -static apt_bool_t mrcp_unirtsp_session_terminate(rtsp_server_t *rtsp_server, rtsp_server_session_t *rtsp_session) -{ - mrcp_unirtsp_session_t *session = rtsp_server_session_object_get(rtsp_session); - if(!session) { - return FALSE; - } - return mrcp_session_terminate_request(session->mrcp_session); -} - -static void mrcp_unirtsp_session_destroy(mrcp_unirtsp_session_t *session) -{ - if(session->home) { - su_home_unref(session->home); - session->home = NULL; - } - rtsp_server_session_object_set(session->rtsp_session,NULL); - apt_log(APT_LOG_MARK,APT_PRIO_NOTICE,"Destroy Session "APT_SID_FMT,MRCP_SESSION_SID(session->mrcp_session)); - mrcp_session_destroy(session->mrcp_session); -} - -static apt_bool_t mrcp_unirtsp_session_announce(mrcp_unirtsp_agent_t *agent, mrcp_unirtsp_session_t *session, rtsp_message_t *message) -{ - const char *resource_name = mrcp_name_get_by_rtsp_name( - agent->config->resource_map, - message->start_line.common.request_line.resource_name); - apt_bool_t status = TRUE; - - if(session && resource_name && - rtsp_header_property_check(&message->header,RTSP_HEADER_FIELD_CONTENT_TYPE) == TRUE && - message->header.content_type == RTSP_CONTENT_TYPE_MRCP && - rtsp_header_property_check(&message->header,RTSP_HEADER_FIELD_CONTENT_LENGTH) == TRUE && - message->header.content_length > 0) { - - apt_text_stream_t text_stream; - mrcp_parser_t *parser; - apt_str_t resource_name_str; - mrcp_message_t *mrcp_message; - - text_stream.text = message->body; - apt_text_stream_reset(&text_stream); - apt_string_set(&resource_name_str,resource_name); - - parser = mrcp_parser_create(agent->sig_agent->resource_factory,session->mrcp_session->pool); - mrcp_parser_resource_set(parser,&resource_name_str); - if(mrcp_parser_run(parser,&text_stream,&mrcp_message) == APT_MESSAGE_STATUS_COMPLETE) { - mrcp_message->channel_id.session_id = message->header.session_id; - status = mrcp_session_control_request(session->mrcp_session,mrcp_message); - } - else { - /* error response */ - apt_log(APT_LOG_MARK,APT_PRIO_WARNING,"Failed to Parse MRCPv1 Message"); - status = FALSE; - } - } - else { - /* error response */ - status = FALSE; - } - return status; -} - -static apt_bool_t mrcp_unirtsp_message_handle(rtsp_server_t *rtsp_server, rtsp_server_session_t *rtsp_session, rtsp_message_t *rtsp_message) -{ - apt_bool_t status = FALSE; - mrcp_unirtsp_agent_t *agent = rtsp_server_object_get(rtsp_server); - mrcp_unirtsp_session_t *session = rtsp_server_session_object_get(rtsp_session); - if(!session) { - return FALSE; - } - - switch(rtsp_message->start_line.common.request_line.method_id) { - case RTSP_METHOD_SETUP: - case RTSP_METHOD_TEARDOWN: - { - const char *force_destination_ip = NULL; - mrcp_session_descriptor_t *descriptor; - - if(agent->config->force_destination == TRUE) { - force_destination_ip = rtsp_server_session_destination_get(rtsp_session); - } - descriptor = mrcp_descriptor_generate_by_rtsp_request( - rtsp_message, - force_destination_ip, - agent->config->resource_map, - session->mrcp_session->pool, - session->home); - if(!descriptor) { - rtsp_message_t *response = rtsp_response_create(rtsp_message, - RTSP_STATUS_CODE_BAD_REQUEST, - RTSP_REASON_PHRASE_BAD_REQUEST, - rtsp_message->pool); - status = rtsp_server_session_respond(rtsp_server,session->rtsp_session,response); - break; - } - status = mrcp_session_offer(session->mrcp_session,descriptor); - break; - } - case RTSP_METHOD_ANNOUNCE: - { - status = mrcp_unirtsp_session_announce(agent,session,rtsp_message); - break; - } - case RTSP_METHOD_DESCRIBE: - { - rtsp_message_t *response = rtsp_resource_discovery_response_generate( - rtsp_message, - agent->config->local_ip, - agent->config->origin, - session->mrcp_session->pool); - status = rtsp_server_session_respond(rtsp_server,session->rtsp_session,response); - break; - } - default: - break; - } - - return status; -} - -static apt_bool_t mrcp_unirtsp_on_session_answer(mrcp_session_t *mrcp_session, mrcp_session_descriptor_t *descriptor) -{ - mrcp_unirtsp_session_t *session = mrcp_session->obj; - mrcp_unirtsp_agent_t *agent = mrcp_session->signaling_agent->obj; - rtsp_message_t *response = NULL; - const rtsp_message_t *request = rtsp_server_session_request_get(session->rtsp_session); - if(!request) { - return FALSE; - } - - if(request->start_line.common.request_line.method_id == RTSP_METHOD_SETUP) { - if(agent->config->origin) { - apt_string_set(&descriptor->origin,agent->config->origin); - } - - response = rtsp_response_generate_by_mrcp_descriptor( - request, - descriptor, - agent->config->resource_map, - mrcp_session->pool); - } - else if(request->start_line.common.request_line.method_id == RTSP_METHOD_TEARDOWN) { - response = rtsp_response_create(request,RTSP_STATUS_CODE_OK,RTSP_REASON_PHRASE_OK,mrcp_session->pool); - } - - if(!response) { - return FALSE; - } - rtsp_server_session_respond(agent->rtsp_server,session->rtsp_session,response); - return TRUE; -} - -static apt_bool_t mrcp_unirtsp_on_session_terminate(mrcp_session_t *mrcp_session) -{ - mrcp_unirtsp_session_t *session = mrcp_session->obj; - rtsp_server_session_t *rtsp_session = session->rtsp_session; - mrcp_unirtsp_agent_t *agent = mrcp_session->signaling_agent->obj; - - mrcp_unirtsp_session_destroy(session); - rtsp_server_session_terminate(agent->rtsp_server,rtsp_session); - return TRUE; -} - -static apt_bool_t mrcp_unirtsp_on_session_control(mrcp_session_t *mrcp_session, mrcp_message_t *mrcp_message) -{ - mrcp_unirtsp_session_t *session = mrcp_session->obj; - mrcp_unirtsp_agent_t *agent = mrcp_session->signaling_agent->obj; - - char buffer[2000]; - apt_text_stream_t stream; - rtsp_message_t *rtsp_message = NULL; - apt_str_t *body; - - apt_text_stream_init(&stream,buffer,sizeof(buffer)); - - mrcp_message->start_line.version = MRCP_VERSION_1; - if(mrcp_message_generate(agent->sig_agent->resource_factory,mrcp_message,&stream) != TRUE) { - apt_log(APT_LOG_MARK,APT_PRIO_WARNING,"Failed to Generate MRCPv1 Message"); - return FALSE; - } - stream.text.length = stream.pos - stream.text.buf; - - if(mrcp_message->start_line.message_type == MRCP_MESSAGE_TYPE_RESPONSE) { - /* send RTSP response (OK) */ - const rtsp_message_t *request = rtsp_server_session_request_get(session->rtsp_session); - if(request) { - rtsp_message = rtsp_response_create(request,RTSP_STATUS_CODE_OK,RTSP_REASON_PHRASE_OK,mrcp_session->pool); - } - } - else if(mrcp_message->start_line.message_type == MRCP_MESSAGE_TYPE_EVENT) { - /* send RTSP announce */ - rtsp_message = rtsp_request_create(mrcp_session->pool); - rtsp_message->start_line.common.request_line.resource_name = rtsp_name_get_by_mrcp_name( - agent->config->resource_map, - mrcp_message->channel_id.resource_name.buf); - rtsp_message->start_line.common.request_line.method_id = RTSP_METHOD_ANNOUNCE; - } - - if(!rtsp_message) { - return FALSE; - } - - body = &rtsp_message->body; - body->length = mrcp_message->start_line.length; - body->buf = apr_palloc(rtsp_message->pool,body->length+1); - memcpy(body->buf,stream.text.buf,stream.text.length); - if(mrcp_message->body.length) { - memcpy(body->buf+stream.text.length,mrcp_message->body.buf,mrcp_message->body.length); - } - body->buf[body->length] = '\0'; - - rtsp_message->header.content_type = RTSP_CONTENT_TYPE_MRCP; - rtsp_header_property_add(&rtsp_message->header,RTSP_HEADER_FIELD_CONTENT_TYPE,rtsp_message->pool); - rtsp_message->header.content_length = body->length; - rtsp_header_property_add(&rtsp_message->header,RTSP_HEADER_FIELD_CONTENT_LENGTH,rtsp_message->pool); - - rtsp_server_session_respond(agent->rtsp_server,session->rtsp_session,rtsp_message); - return TRUE; -} diff --git a/libs/unimrcp/packages/inno-setup/setup-sdk-win32.txt b/libs/unimrcp/packages/inno-setup/setup-sdk-win32.txt deleted file mode 100644 index c9599058f96..00000000000 --- a/libs/unimrcp/packages/inno-setup/setup-sdk-win32.txt +++ /dev/null @@ -1,3 +0,0 @@ -#include "setup.txt" -#define release_dir "Release" -OutputBaseFilename=unimrcp-sdk-{#= uni_version} diff --git a/libs/unimrcp/packages/inno-setup/setup-sdk-x64.txt b/libs/unimrcp/packages/inno-setup/setup-sdk-x64.txt deleted file mode 100644 index 0e5a2fe939f..00000000000 --- a/libs/unimrcp/packages/inno-setup/setup-sdk-x64.txt +++ /dev/null @@ -1,4 +0,0 @@ -#include "setup.txt" -#define release_dir "x64\Release" -OutputBaseFilename=unimrcp-x64-sdk-{#= uni_version} -ArchitecturesInstallIn64BitMode=x64 diff --git a/libs/unimrcp/packages/inno-setup/setup-win32.txt b/libs/unimrcp/packages/inno-setup/setup-win32.txt deleted file mode 100644 index dab742af233..00000000000 --- a/libs/unimrcp/packages/inno-setup/setup-win32.txt +++ /dev/null @@ -1,3 +0,0 @@ -#include "setup.txt" -#define uni_outdir "..\..\Release" -OutputBaseFilename=unimrcp-{#= uni_version} diff --git a/libs/unimrcp/packages/inno-setup/setup-x64.txt b/libs/unimrcp/packages/inno-setup/setup-x64.txt deleted file mode 100644 index 74324882bcf..00000000000 --- a/libs/unimrcp/packages/inno-setup/setup-x64.txt +++ /dev/null @@ -1,5 +0,0 @@ -#include "setup.txt" -#define uni_outdir "..\..\x64\Release" -OutputBaseFilename=unimrcp-x64-{#= uni_version} -ArchitecturesInstallIn64BitMode=x64 -ArchitecturesAllowed=x64 diff --git a/libs/unimrcp/packages/inno-setup/setup.txt b/libs/unimrcp/packages/inno-setup/setup.txt deleted file mode 100644 index 4091232256e..00000000000 --- a/libs/unimrcp/packages/inno-setup/setup.txt +++ /dev/null @@ -1,14 +0,0 @@ -#define uni_version "1.2.0" -#define uni_src "..\.." - -AppName=UniMRCP -AppVerName=UniMRCP {#= uni_version} -AppPublisher=UniMRCP -AppPublisherURL=http://www.unimrcp.org/ -AppSupportURL=http://groups.google.com/group/unimrcp -AppUpdatesURL=http://code.google.com/p/unimrcp/downloads/list -DefaultDirName={pf}\UniMRCP -DefaultGroupName=UniMRCP -Compression=lzma -InternalCompressLevel=max -SolidCompression=true diff --git a/libs/unimrcp/packages/inno-setup/unimrcp-sdk.iss b/libs/unimrcp/packages/inno-setup/unimrcp-sdk.iss deleted file mode 100644 index 8fb56cea1be..00000000000 --- a/libs/unimrcp/packages/inno-setup/unimrcp-sdk.iss +++ /dev/null @@ -1,56 +0,0 @@ -[Setup] -; include either setup-sdk-win32.txt or setup-sdk-x64.txt -#include "setup-sdk-win32.txt" -;#include "setup-sdk-x64.txt" - -[Types] -Name: full; Description: Full installation -Name: sdk; Description: SDK installation -Name: docs; Description: Documentation installation -Name: custom; Description: Custom installation; Flags: iscustom - -[Components] -Name: sdk; Description: UniMRCP SDK (client, server and plugin development); Types: full sdk -Name: docs; Description: UniMRCP documentation; Types: full docs -Name: docs\design; Description: Design concepts; Types: full docs -Name: docs\api; Description: API reference; Types: full docs - -[Files] -Source: {#= uni_src}\libs\apr\include\*.h; DestDir: {app}\include; Components: sdk -Source: {#= uni_src}\libs\apr-toolkit\include\*.h; DestDir: {app}\include; Components: sdk -Source: {#= uni_src}\libs\mpf\include\*.h; DestDir: {app}\include; Components: sdk -Source: {#= uni_src}\libs\mrcp\include\*.h; DestDir: {app}\include; Components: sdk -Source: {#= uni_src}\libs\mrcp\message\include\*.h; DestDir: {app}\include; Components: sdk -Source: {#= uni_src}\libs\mrcp\control\include\*.h; DestDir: {app}\include; Components: sdk -Source: {#= uni_src}\libs\mrcp\resources\include\*.h; DestDir: {app}\include; Components: sdk -Source: {#= uni_src}\libs\mrcp-engine\include\*.h; DestDir: {app}\include; Components: sdk -Source: {#= uni_src}\libs\mrcp-signaling\include\*.h; DestDir: {app}\include; Components: sdk -Source: {#= uni_src}\libs\mrcpv2-transport\include\*.h; DestDir: {app}\include; Components: sdk -Source: {#= uni_src}\libs\mrcp-client\include\*.h; DestDir: {app}\include; Components: sdk -Source: {#= uni_src}\libs\mrcp-server\include\*.h; DestDir: {app}\include; Components: sdk -Source: {#= uni_src}\platforms\libunimrcp-client\include\*.h; DestDir: {app}\include; Components: sdk -Source: {#= uni_src}\platforms\libunimrcp-server\include\*.h; DestDir: {app}\include; Components: sdk -Source: {#= uni_src}\{#= release_dir}\lib\*.lib; DestDir: {app}\lib; Components: sdk -Source: {#= uni_src}\libs\apr\{#= release_dir}\*.lib; DestDir: {app}\lib; Components: sdk -Source: {#= uni_src}\libs\apr-util\{#= release_dir}\*.lib; DestDir: {app}\lib; Components: sdk -Source: {#= uni_src}\libs\sofia-sip\win32\libsofia-sip-ua\{#= release_dir}\*.lib; DestDir: {app}\lib; Components: sdk -Source: {#= uni_src}\build\*.h; DestDir: {app}\include; Components: sdk -Source: {#= uni_src}\build\props\sdk\*.props; DestDir: {app}\props; Components: sdk; AfterInstall: SetProjectPath(ExpandConstant('{app}\props\unimrcpsdk.props')) -Source: {#= uni_src}\build\vsprops\sdk\*.vsprops; DestDir: {app}\vsprops; Components: sdk; AfterInstall: SetProjectPath(ExpandConstant('{app}\vsprops\unimrcpsdk.vsprops')) -Source: {#= uni_src}\docs\ea\*; DestDir: {app}\doc\ea; Components: docs/design; Flags: recursesubdirs -Source: {#= uni_src}\docs\dox\*; DestDir: {app}\doc\dox; Components: docs/api; Flags: recursesubdirs - -[Icons] -Name: {group}\UniMRCP Docs\Design concepts; Filename: {app}\doc\ea\index.htm; Components: docs\design -Name: {group}\UniMRCP Docs\API; Filename: {app}\doc\dox\html\index.html; Components: docs\api -Name: {group}\Uninstall; Filename: {uninstallexe} - -[Code] -procedure SetProjectPath(PropertySheetFile: String); -var - Content: String; -begin - LoadStringFromFile (PropertySheetFile, Content); - StringChange (Content, 'C:\Program Files\UniMRCP', ExpandConstant('{app}')); - SaveStringToFile (PropertySheetFile, Content, False); -end; diff --git a/libs/unimrcp/packages/inno-setup/unimrcp.iss b/libs/unimrcp/packages/inno-setup/unimrcp.iss deleted file mode 100644 index b4e9852a455..00000000000 --- a/libs/unimrcp/packages/inno-setup/unimrcp.iss +++ /dev/null @@ -1,91 +0,0 @@ -[Setup] -; include either setup-win32.txt or setup-x64.txt -#include "setup-win32.txt" -;#include "setup-x64.txt" - -[Types] -Name: full; Description: Full installation -Name: server; Description: Server installation -Name: client; Description: Client installation -Name: custom; Description: Custom installation; Flags: iscustom - -[Components] -Name: server; Description: UniMRCP server; Types: full server -Name: server\recorder; Description: Recorder plugin; Types: full server -Name: server\demosynth; Description: Demo synthesizer plugin; Types: full server -Name: server\demorecog; Description: Demo recognizer plugin; Types: full server -Name: server\demoverifier; Description: Demo verifier plugin; Types: full server -Name: client; Description: UniMRCP client (sample applications); Types: full client - -[Dirs] -Name: {app}\data; Permissions: everyone-full -Name: {app}\log; Permissions: everyone-full - -[Files] -Source: {#= uni_outdir}\bin\unimrcpserver.exe; DestDir: {app}\bin; Components: server -Source: {#= uni_outdir}\bin\unimrcpservice.exe; DestDir: {app}\bin; Components: server -Source: {#= uni_outdir}\bin\unimrcpclient.exe; DestDir: {app}\bin; Components: client -Source: {#= uni_outdir}\bin\umc.exe; DestDir: {app}\bin; Components: client -Source: {#= uni_outdir}\bin\*.dll; DestDir: {app}\bin; Components: server client -Source: {#= uni_outdir}\plugin\mrcprecorder.dll; DestDir: {app}\plugin; Components: server/recorder -Source: {#= uni_outdir}\plugin\demosynth.dll; DestDir: {app}\plugin; Components: server/demosynth -Source: {#= uni_outdir}\plugin\demorecog.dll; DestDir: {app}\plugin; Components: server/demorecog -Source: {#= uni_outdir}\plugin\demoverifier.dll; DestDir: {app}\plugin; Components: server/demoverifier -Source: {#= uni_outdir}\conf\unimrcpserver.xml; DestDir: {app}\conf; Components: server -Source: {#= uni_outdir}\conf\unimrcpclient.xml; DestDir: {app}\conf; Components: client -Source: {#= uni_outdir}\conf\client-profiles\*.xml; DestDir: {app}\conf\client-profiles; Components: client -Source: {#= uni_outdir}\conf\umcscenarios.xml; DestDir: {app}\conf; Components: client -Source: {#= uni_outdir}\data\*.pcm; DestDir: {app}\data; Components: server client -Source: {#= uni_outdir}\data\*.xml; DestDir: {app}\data; Components: server client -Source: {#= uni_outdir}\data\*.txt; DestDir: {app}\data; Components: server client - -[Icons] -Name: {group}\UniMRCP Server Console; Filename: {app}\bin\unimrcpserver.exe; Parameters: "--root-dir ""{app}"""; Components: server -Name: {group}\UniMRCP Client Console; Filename: {app}\bin\unimrcpclient.exe; Parameters: "--root-dir ""{app}"""; Components: client -Name: {group}\UniMRCP Service\Start Server; Filename: {app}\bin\unimrcpservice.exe; Parameters: --start; Components: server -Name: {group}\UniMRCP Service\Stop Server; Filename: {app}\bin\unimrcpservice.exe; Parameters: --stop; Components: server -Name: {group}\Uninstall; Filename: {uninstallexe} - -[Run] -Filename: {app}\bin\unimrcpservice.exe; Description: Register service; Parameters: "--register ""{app}"""; Components: server - -[UninstallRun] -Filename: {app}\bin\unimrcpservice.exe; Parameters: --unregister; Components: server - -[Code] -var - Content: String; - -procedure ModifyPluginConf(PluginName: String; Enable: Boolean); -var - TextFrom: String; - TextTo: String; -begin - if Enable = True then - begin - TextFrom := 'class="' + PluginName + '" enable="0"'; - TextTo := 'class="' + PluginName + '" enable="1"'; - end - else - begin - TextFrom := 'class="' + PluginName + '" enable="1"'; - TextTo := 'class="' + PluginName + '" enable="0"'; - end - StringChange (Content, TextFrom, TextTo); -end; - -procedure CurStepChanged(CurStep: TSetupStep); -var - CfgFile: String; -begin - if CurStep = ssPostInstall then - begin - CfgFile := ExpandConstant('{app}\conf\unimrcpserver.xml'); - LoadStringFromFile (CfgFile, Content); - ModifyPluginConf ('mrcprecorder', IsComponentSelected('server\recorder')); - ModifyPluginConf ('demosynth', IsComponentSelected('server\demosynth')); - ModifyPluginConf ('demorecog', IsComponentSelected('server\demorecog')); - ModifyPluginConf ('demoverifier', IsComponentSelected('server\demoverifier')); - SaveStringToFile (CfgFile, Content, False); - end -end; diff --git a/libs/unimrcp/platforms/Makefile.am b/libs/unimrcp/platforms/Makefile.am deleted file mode 100644 index 13fc51f34e7..00000000000 --- a/libs/unimrcp/platforms/Makefile.am +++ /dev/null @@ -1,27 +0,0 @@ -MAINTAINERCLEANFILES = Makefile.in - -SUBDIRS = - -if UNIMRCP_CLIENT_LIB -SUBDIRS += libunimrcp-client -endif - -if UNIMRCP_CLIENT_APP -SUBDIRS += unimrcp-client -endif - -if UMC -SUBDIRS += umc -endif - -if ASR_CLIENT -SUBDIRS += libasr-client asr-client -endif - -if UNIMRCP_SERVER_LIB -SUBDIRS += libunimrcp-server -endif - -if UNIMRCP_SERVER_APP -SUBDIRS += unimrcp-server -endif diff --git a/libs/unimrcp/platforms/asr-client/Makefile.am b/libs/unimrcp/platforms/asr-client/Makefile.am deleted file mode 100644 index 62371acd755..00000000000 --- a/libs/unimrcp/platforms/asr-client/Makefile.am +++ /dev/null @@ -1,10 +0,0 @@ -AM_CPPFLAGS = -I$(top_srcdir)/platforms/libasr-client/include \ - $(UNIMRCP_CLIENTAPP_INCLUDES) - -bin_PROGRAMS = asrclient - -asrclient_SOURCES = src/main.c -asrclient_LDADD = $(top_builddir)/platforms/libasr-client/libasrclient.la -asrclient_LDFLAGS = $(UNIMRCP_CLIENTAPP_OPTS) - -include $(top_srcdir)/build/rules/uniclientapp.am diff --git a/libs/unimrcp/platforms/asr-client/asrclient.vcproj b/libs/unimrcp/platforms/asr-client/asrclient.vcproj deleted file mode 100644 index de7caff7973..00000000000 --- a/libs/unimrcp/platforms/asr-client/asrclient.vcproj +++ /dev/null @@ -1,298 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/libs/unimrcp/platforms/asr-client/asrclient.vcxproj b/libs/unimrcp/platforms/asr-client/asrclient.vcxproj deleted file mode 100644 index af032d1dcaf..00000000000 --- a/libs/unimrcp/platforms/asr-client/asrclient.vcxproj +++ /dev/null @@ -1,136 +0,0 @@ - - - - - Debug - Win32 - - - Debug - x64 - - - Release - Win32 - - - Release - x64 - - - - {6B83AC6D-01CE-4E1C-81CE-02AD8116C684} - asrclient - - - - Application - - - Application - - - Application - - - Application - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - <_ProjectFileVersion>10.0.30319.1 - AllRules.ruleset - - - AllRules.ruleset - - - AllRules.ruleset - - - AllRules.ruleset - - - - - - include;..\libasr-client\include;%(AdditionalIncludeDirectories) - MultiThreadedDebugDLL - - - libasrclient.lib;libapr-1.lib;%(AdditionalDependencies) - - - - - include;..\libasr-client\include;%(AdditionalIncludeDirectories) - - - libasrclient.lib;libapr-1.lib;%(AdditionalDependencies) - UseLinkTimeCodeGeneration - - - - - X64 - - - include;..\libasr-client\include;%(AdditionalIncludeDirectories) - MultiThreadedDebugDLL - ProgramDatabase - - - libasrclient.lib;libapr-1.lib;%(AdditionalDependencies) - - - - - X64 - - - include;..\libasr-client\include;%(AdditionalIncludeDirectories) - - - libasrclient.lib;libapr-1.lib;%(AdditionalDependencies) - UseLinkTimeCodeGeneration - - - - - - - - {272fafa8-2b2f-4716-b95f-3b37cf2e0cb3} - false - - - - - - \ No newline at end of file diff --git a/libs/unimrcp/platforms/asr-client/asrclient.vcxproj.filters b/libs/unimrcp/platforms/asr-client/asrclient.vcxproj.filters deleted file mode 100644 index 3efc5f63aed..00000000000 --- a/libs/unimrcp/platforms/asr-client/asrclient.vcxproj.filters +++ /dev/null @@ -1,18 +0,0 @@ - - - - - {4FC737F1-C7A5-4376-A066-2A32D752A2FF} - cpp;c;cc;cxx;def;odl;idl;hpj;bat;asm;asmx - - - {93995380-89BD-4b04-88EB-625FBE52EBFB} - h;hpp;hxx;hm;inl;inc;xsd - - - - - src - - - \ No newline at end of file diff --git a/libs/unimrcp/platforms/asr-client/src/main.c b/libs/unimrcp/platforms/asr-client/src/main.c deleted file mode 100644 index 10f97cd0656..00000000000 --- a/libs/unimrcp/platforms/asr-client/src/main.c +++ /dev/null @@ -1,300 +0,0 @@ -/* - * Copyright 2008-2014 Arsen Chaloyan - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - * - * $Id: main.c 2213 2014-11-06 03:02:45Z achaloyan@gmail.com $ - */ - -#include -#include -#include -#include -#include -#include "asr_engine.h" - -typedef struct { - const char *root_dir_path; - apt_log_priority_e log_priority; - apt_log_output_e log_output; - apr_pool_t *pool; -} client_options_t; - -typedef struct { - asr_engine_t *engine; - const char *grammar_file; - const char *input_file; - const char *profile; - - apr_thread_t *thread; - apr_pool_t *pool; -} asr_params_t; - -/** Thread function to run ASR scenario in */ -static void* APR_THREAD_FUNC asr_session_run(apr_thread_t *thread, void *data) -{ - asr_params_t *params = data; - asr_session_t *session = asr_session_create(params->engine,params->profile); - if(session) { - const char *result = asr_session_file_recognize(session,params->grammar_file,params->input_file); - if(result) { - printf("Recog Result [%s]",result); - } - - asr_session_destroy(session); - } - - /* destroy pool params allocated from */ - apr_pool_destroy(params->pool); - return NULL; -} - -/** Launch demo ASR session */ -static apt_bool_t asr_session_launch(asr_engine_t *engine, const char *grammar_file, const char *input_file, const char *profile) -{ - apr_pool_t *pool; - asr_params_t *params; - - /* create pool to allocate params from */ - apr_pool_create(&pool,NULL); - params = apr_palloc(pool,sizeof(asr_params_t)); - params->pool = pool; - params->engine = engine; - - if(grammar_file) { - params->grammar_file = apr_pstrdup(pool,grammar_file); - } - else { - params->grammar_file = "grammar.xml"; - } - - if(input_file) { - params->input_file = apr_pstrdup(pool,input_file); - } - else { - params->input_file = "one-8kHz.pcm"; - } - - if(profile) { - params->profile = apr_pstrdup(pool,profile); - } - else { - params->profile = "uni2"; - } - - /* Launch a thread to run demo ASR session in */ - if(apr_thread_create(¶ms->thread,NULL,asr_session_run,params,pool) != APR_SUCCESS) { - apr_pool_destroy(pool); - return FALSE; - } - - return TRUE; -} - -static apt_bool_t cmdline_process(asr_engine_t *engine, char *cmdline) -{ - apt_bool_t running = TRUE; - char *name; - char *last; - name = apr_strtok(cmdline, " ", &last); - - if(strcasecmp(name,"run") == 0) { - char *grammar = apr_strtok(NULL, " ", &last); - char *input = apr_strtok(NULL, " ", &last); - char *profile = apr_strtok(NULL, " ", &last); - asr_session_launch(engine,grammar,input,profile); - } - else if(strcasecmp(name,"loglevel") == 0) { - char *priority = apr_strtok(NULL, " ", &last); - if(priority) { - asr_engine_log_priority_set(atol(priority)); - } - } - else if(strcasecmp(name,"exit") == 0 || strcmp(name,"quit") == 0) { - running = FALSE; - } - else if(strcasecmp(name,"help") == 0) { - printf("usage:\n" - "\n- run [grammar_file] [audio_input_file] [profile_name] (run demo asr client)\n" - " grammar_file is the name of grammar file, (path is relative to data dir)\n" - " audio_input_file is the name of audio file, (path is relative to data dir)\n" - " profile_name is one of 'uni2', 'uni1', ...\n" - "\n examples: \n" - " run\n" - " run grammar.xml one.pcm\n" - " run grammar.xml one.pcm uni1\n" - "\n- loglevel [level] (set loglevel, one of 0,1...7)\n" - "\n- quit, exit\n"); - } - else { - printf("unknown command: %s (input help for usage)\n",name); - } - return running; -} - -static apt_bool_t cmdline_run(asr_engine_t *engine) -{ - apt_bool_t running = TRUE; - char cmdline[1024]; - apr_size_t i; - do { - printf(">"); - memset(&cmdline, 0, sizeof(cmdline)); - for(i = 0; i < sizeof(cmdline); i++) { - cmdline[i] = (char) getchar(); - if(cmdline[i] == '\n') { - cmdline[i] = '\0'; - break; - } - } - if(*cmdline) { - running = cmdline_process(engine,cmdline); - } - } - while(running != 0); - return TRUE; -} - -static void usage(void) -{ - printf( - "\n" - "Usage:\n" - "\n" - " asrclient [options]\n" - "\n" - " Available options:\n" - "\n" - " -r [--root-dir] path : Set the project root directory path.\n" - "\n" - " -l [--log-prio] priority : Set the log priority.\n" - " (0-emergency, ..., 7-debug)\n" - "\n" - " -o [--log-output] mode : Set the log output mode.\n" - " (0-none, 1-console only, 2-file only, 3-both)\n" - "\n" - " -h [--help] : Show the help.\n" - "\n"); -} - -static void options_destroy(client_options_t *options) -{ - if(options->pool) { - apr_pool_destroy(options->pool); - } -} - -static client_options_t* options_load(int argc, const char * const *argv) -{ - apr_status_t rv; - apr_getopt_t *opt = NULL; - int optch; - const char *optarg; - apr_pool_t *pool; - client_options_t *options; - - const apr_getopt_option_t opt_option[] = { - /* long-option, short-option, has-arg flag, description */ - { "root-dir", 'r', TRUE, "path to root dir" }, /* -r arg or --root-dir arg */ - { "log-prio", 'l', TRUE, "log priority" }, /* -l arg or --log-prio arg */ - { "log-output", 'o', TRUE, "log output mode" }, /* -o arg or --log-output arg */ - { "help", 'h', FALSE, "show help" }, /* -h or --help */ - { NULL, 0, 0, NULL }, /* end */ - }; - - /* create APR pool to allocate options from */ - apr_pool_create(&pool,NULL); - if(!pool) { - return NULL; - } - options = apr_palloc(pool,sizeof(client_options_t)); - options->pool = pool; - /* set the default options */ - options->root_dir_path = NULL; - options->log_priority = APT_PRIO_INFO; - options->log_output = APT_LOG_OUTPUT_CONSOLE; - - - rv = apr_getopt_init(&opt, pool , argc, argv); - if(rv != APR_SUCCESS) { - options_destroy(options); - return NULL; - } - - while((rv = apr_getopt_long(opt, opt_option, &optch, &optarg)) == APR_SUCCESS) { - switch(optch) { - case 'r': - options->root_dir_path = optarg; - break; - case 'l': - if(optarg) { - options->log_priority = atoi(optarg); - } - break; - case 'o': - if(optarg) { - options->log_output = atoi(optarg); - } - break; - case 'h': - usage(); - return FALSE; - } - } - - if(rv != APR_EOF) { - usage(); - options_destroy(options); - return NULL; - } - - return options; -} - -int main(int argc, const char * const *argv) -{ - client_options_t *options; - asr_engine_t *engine; - - /* APR global initialization */ - if(apr_initialize() != APR_SUCCESS) { - apr_terminate(); - return 0; - } - - /* load options */ - options = options_load(argc,argv); - if(!options) { - apr_terminate(); - return 0; - } - - /* create asr engine */ - engine = asr_engine_create( - options->root_dir_path, - options->log_priority, - options->log_output); - if(engine) { - /* run command line */ - cmdline_run(engine); - /* destroy demo framework */ - asr_engine_destroy(engine); - } - - /* destroy options */ - options_destroy(options); - - /* APR global termination */ - apr_terminate(); - return 0; -} diff --git a/libs/unimrcp/platforms/libasr-client/Makefile.am b/libs/unimrcp/platforms/libasr-client/Makefile.am deleted file mode 100644 index 68ecd07b6ab..00000000000 --- a/libs/unimrcp/platforms/libasr-client/Makefile.am +++ /dev/null @@ -1,12 +0,0 @@ -AM_CPPFLAGS = -I$(top_srcdir)/platforms/libasr-client/include \ - -I$(top_srcdir)/platforms/libunimrcp-client/include \ - $(UNIMRCP_CLIENTLIB_INCLUDES) - -lib_LTLIBRARIES = libasrclient.la - -include_HEADERS = include/asr_engine.h -libasrclient_la_SOURCES = src/asr_engine.c -libasrclient_la_LIBADD = $(top_builddir)/platforms/libunimrcp-client/libunimrcpclient.la -libasrclient_la_LDFLAGS = $(UNIMRCP_CLIENTLIB_OPTS) - -include $(top_srcdir)/build/rules/uniclientlib.am diff --git a/libs/unimrcp/platforms/libasr-client/include/asr_engine.h b/libs/unimrcp/platforms/libasr-client/include/asr_engine.h deleted file mode 100644 index fbb2261eabd..00000000000 --- a/libs/unimrcp/platforms/libasr-client/include/asr_engine.h +++ /dev/null @@ -1,133 +0,0 @@ -/* - * Copyright 2009-2014 Arsen Chaloyan - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - * - * $Id: asr_engine.h 2136 2014-07-04 06:33:36Z achaloyan@gmail.com $ - */ - -#ifndef ASR_ENGINE_H -#define ASR_ENGINE_H - -/** - * @file asr_engine.h - * @brief Basic ASR engine on top of UniMRCP client library - */ - -#include "apt_log.h" - -/** Lib export/import defines (win32) */ -#ifdef WIN32 -#ifdef ASR_CLIENT_STATIC_LIB -#define ASR_CLIENT_DECLARE(type) type __stdcall -#else -#ifdef ASR_CLIENT_LIB_EXPORT -#define ASR_CLIENT_DECLARE(type) __declspec(dllexport) type __stdcall -#else -#define ASR_CLIENT_DECLARE(type) __declspec(dllimport) type __stdcall -#endif -#endif -#else -#define ASR_CLIENT_DECLARE(type) type -#endif - -APT_BEGIN_EXTERN_C - -/** Opaque ASR engine */ -typedef struct asr_engine_t asr_engine_t; - -/** Opaque ASR session */ -typedef struct asr_session_t asr_session_t; - - -/** - * Create ASR engine. - * @param root_dir_path the path to root directory - * @param log_priority the log priority level - * @param log_output the log output mode - */ -ASR_CLIENT_DECLARE(asr_engine_t*) asr_engine_create( - const char *root_dir_path, - apt_log_priority_e log_priority, - apt_log_output_e log_output); - -/** - * Destroy ASR engine. - * @param engine the engine to destroy - */ -ASR_CLIENT_DECLARE(apt_bool_t) asr_engine_destroy(asr_engine_t *engine); - - - -/** - * Create ASR session. - * @param engine the engine session belongs to - * @param profile the name of UniMRCP profile to use - */ -ASR_CLIENT_DECLARE(asr_session_t*) asr_session_create(asr_engine_t *engine, const char *profile); - -/** - * Initiate recognition based on specified grammar and input file. - * @param session the session to run recognition in the scope of - * @param grammar_file the name of the grammar file to use (path is relative to data dir) - * @param input_file the name of the audio input file to use (path is relative to data dir) - * @return the recognition result (input element of NLSML content) - */ -ASR_CLIENT_DECLARE(const char*) asr_session_file_recognize( - asr_session_t *session, - const char *grammar_file, - const char *input_file); - -/** - * Initiate recognition based on specified grammar and input stream. - * @param session the session to run recognition in the scope of - * @param grammar_file the name of the grammar file to use (path is relative to data dir) - * @param callback the callback to be called to get input media frames - * @param obj the object to pass to the callback - * @return the recognition result (input element of NLSML content) - * - * @remark Audio data should be streamed through - * asr_session_stream_write() function calls. - */ -ASR_CLIENT_DECLARE(const char*) asr_session_stream_recognize( - asr_session_t *session, - const char *grammar_file); - -/** - * Write audio data to recognize. - * @param session the session to write audio data for - * @param data the audio data - * @param size the size of data - */ -ASR_CLIENT_DECLARE(apt_bool_t) asr_session_stream_write( - asr_session_t *session, - char *data, - int size); - -/** - * Destroy ASR session. - * @param session the session to destroy - */ -ASR_CLIENT_DECLARE(apt_bool_t) asr_session_destroy(asr_session_t *session); - - -/** - * Set log priority. - * @param priority the priority to set - */ -ASR_CLIENT_DECLARE(apt_bool_t) asr_engine_log_priority_set(apt_log_priority_e log_priority); - - -APT_END_EXTERN_C - -#endif /* ASR_ENGINE_H */ diff --git a/libs/unimrcp/platforms/libasr-client/libasrclient.vcproj b/libs/unimrcp/platforms/libasr-client/libasrclient.vcproj deleted file mode 100644 index e48c41e2613..00000000000 --- a/libs/unimrcp/platforms/libasr-client/libasrclient.vcproj +++ /dev/null @@ -1,308 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/libs/unimrcp/platforms/libasr-client/libasrclient.vcxproj b/libs/unimrcp/platforms/libasr-client/libasrclient.vcxproj deleted file mode 100644 index 744bf1cf6e1..00000000000 --- a/libs/unimrcp/platforms/libasr-client/libasrclient.vcxproj +++ /dev/null @@ -1,148 +0,0 @@ - - - - - Debug - Win32 - - - Debug - x64 - - - Release - Win32 - - - Release - x64 - - - - {272FAFA8-2B2F-4716-B95F-3B37CF2E0CB3} - libasrclient - Win32Proj - - - - DynamicLibrary - Unicode - true - - - DynamicLibrary - Unicode - - - DynamicLibrary - Unicode - true - - - DynamicLibrary - Unicode - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - <_ProjectFileVersion>10.0.30319.1 - AllRules.ruleset - - - AllRules.ruleset - - - AllRules.ruleset - - - AllRules.ruleset - - - - - - include;%(AdditionalIncludeDirectories) - ASR_CLIENT_LIB_EXPORT;%(PreprocessorDefinitions) - - - $(UniMRCPClientLibs);%(AdditionalDependencies) - true - - - - - include;%(AdditionalIncludeDirectories) - ASR_CLIENT_LIB_EXPORT;%(PreprocessorDefinitions) - - - $(UniMRCPClientLibs);%(AdditionalDependencies) - true - - - - - X64 - - - include;%(AdditionalIncludeDirectories) - ASR_CLIENT_LIB_EXPORT;%(PreprocessorDefinitions) - ProgramDatabase - - - $(UniMRCPClientLibs);%(AdditionalDependencies) - - - - - X64 - - - include;%(AdditionalIncludeDirectories) - ASR_CLIENT_LIB_EXPORT;%(PreprocessorDefinitions) - - - $(UniMRCPClientLibs);%(AdditionalDependencies) - - - - - - - - - - - {ee157390-1e85-416c-946e-620e32c9ad33} - false - - - - - - \ No newline at end of file diff --git a/libs/unimrcp/platforms/libasr-client/libasrclient.vcxproj.filters b/libs/unimrcp/platforms/libasr-client/libasrclient.vcxproj.filters deleted file mode 100644 index 3bdaf623d4f..00000000000 --- a/libs/unimrcp/platforms/libasr-client/libasrclient.vcxproj.filters +++ /dev/null @@ -1,23 +0,0 @@ - - - - - {93995380-89BD-4b04-88EB-625FBE52EBFB} - h;hpp;hxx;hm;inl;inc;xsd - - - {21e6c16e-f977-468a-9576-0c5981eb7da5} - cpp;c;cc;cxx;def;odl;idl;hpj;bat;asm;asmx - - - - - include - - - - - src - - - \ No newline at end of file diff --git a/libs/unimrcp/platforms/libasr-client/src/asr_engine.c b/libs/unimrcp/platforms/libasr-client/src/asr_engine.c deleted file mode 100644 index 1473a89604d..00000000000 --- a/libs/unimrcp/platforms/libasr-client/src/asr_engine.c +++ /dev/null @@ -1,752 +0,0 @@ -/* - * Copyright 2009-2014 Arsen Chaloyan - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - * - * $Id: asr_engine.c 2204 2014-10-31 01:01:42Z achaloyan@gmail.com $ - */ - -#include - -/* APR includes */ -#include -#include - -/* Common includes */ -#include "unimrcp_client.h" -#include "mrcp_application.h" -#include "mrcp_message.h" -#include "mrcp_generic_header.h" -/* Recognizer includes */ -#include "mrcp_recog_header.h" -#include "mrcp_recog_resource.h" -/* MPF includes */ -#include -/* APT includes */ -#include "apt_nlsml_doc.h" -#include "apt_log.h" -#include "apt_pool.h" - -#include "asr_engine.h" - -typedef enum { - INPUT_MODE_NONE, - INPUT_MODE_FILE, - INPUT_MODE_STREAM -} input_mode_e; - -/** ASR engine on top of UniMRCP client stack */ -struct asr_engine_t { - /** MRCP client stack */ - mrcp_client_t *mrcp_client; - /** MRCP client stack */ - mrcp_application_t *mrcp_app; - /** Memory pool */ - apr_pool_t *pool; -}; - - -/** ASR session on top of UniMRCP session/channel */ -struct asr_session_t { - /** Back pointer to engine */ - asr_engine_t *engine; - /** MRCP session */ - mrcp_session_t *mrcp_session; - /** MRCP channel */ - mrcp_channel_t *mrcp_channel; - /** RECOGNITION-COMPLETE message */ - mrcp_message_t *recog_complete; - - /** Input mode (either file or stream) */ - input_mode_e input_mode; - /** File to read media frames from */ - FILE *audio_in; - /* Buffer of media frames */ - mpf_frame_buffer_t *media_buffer; - /** Streaming is in-progress */ - apt_bool_t streaming; - - /** Conditional wait object */ - apr_thread_cond_t *wait_object; - /** Mutex of the wait object */ - apr_thread_mutex_t *mutex; - - /** Message sent from client stack */ - const mrcp_app_message_t *app_message; -}; - - -/** Declaration of recognizer audio stream methods */ -static apt_bool_t asr_stream_read(mpf_audio_stream_t *stream, mpf_frame_t *frame); - -static const mpf_audio_stream_vtable_t audio_stream_vtable = { - NULL, - NULL, - NULL, - asr_stream_read, - NULL, - NULL, - NULL, - NULL -}; - -static apt_bool_t app_message_handler(const mrcp_app_message_t *app_message); - - -/** Create ASR engine */ -ASR_CLIENT_DECLARE(asr_engine_t*) asr_engine_create( - const char *root_dir_path, - apt_log_priority_e log_priority, - apt_log_output_e log_output) -{ - apr_pool_t *pool = NULL; - apt_dir_layout_t *dir_layout; - asr_engine_t *engine; - mrcp_client_t *mrcp_client; - mrcp_application_t *mrcp_app; - - /* create APR pool */ - pool = apt_pool_create(); - if(!pool) { - return NULL; - } - - /* create the structure of default directories layout */ - dir_layout = apt_default_dir_layout_create(root_dir_path,pool); - /* create singleton logger */ - apt_log_instance_create(log_output,log_priority,pool); - - if((log_output & APT_LOG_OUTPUT_FILE) == APT_LOG_OUTPUT_FILE) { - /* open the log file */ - const char *log_dir_path = apt_dir_layout_path_get(dir_layout,APT_LAYOUT_LOG_DIR); - apt_log_file_open(log_dir_path,"unimrcpclient",MAX_LOG_FILE_SIZE,MAX_LOG_FILE_COUNT,FALSE,pool); - } - - engine = apr_palloc(pool,sizeof(asr_engine_t)); - engine->pool = pool; - engine->mrcp_client = NULL; - engine->mrcp_app = NULL; - - /* create UniMRCP client stack */ - mrcp_client = unimrcp_client_create(dir_layout); - if(!mrcp_client) { - apt_log_instance_destroy(); - apr_pool_destroy(pool); - return NULL; - } - - /* create an application */ - mrcp_app = mrcp_application_create( - app_message_handler, - engine, - pool); - if(!mrcp_app) { - mrcp_client_destroy(mrcp_client); - apt_log_instance_destroy(); - apr_pool_destroy(pool); - return NULL; - } - - /* register application in client stack */ - mrcp_client_application_register(mrcp_client,mrcp_app,"ASRAPP"); - - /* start client stack */ - if(mrcp_client_start(mrcp_client) != TRUE) { - mrcp_client_destroy(mrcp_client); - apt_log_instance_destroy(); - apr_pool_destroy(pool); - return NULL; - } - - engine->mrcp_client = mrcp_client; - engine->mrcp_app = mrcp_app; - return engine; -} - -/** Destroy ASR engine */ -ASR_CLIENT_DECLARE(apt_bool_t) asr_engine_destroy(asr_engine_t *engine) -{ - if(engine->mrcp_client) { - /* shutdown client stack */ - mrcp_client_shutdown(engine->mrcp_client); - /* destroy client stack */ - mrcp_client_destroy(engine->mrcp_client); - engine->mrcp_client = NULL; - engine->mrcp_app = NULL; - } - - /* destroy singleton logger */ - apt_log_instance_destroy(); - /* destroy APR pool */ - apr_pool_destroy(engine->pool); - return TRUE; -} - - - -/** Destroy ASR session */ -static apt_bool_t asr_session_destroy_ex(asr_session_t *asr_session, apt_bool_t terminate) -{ - if(terminate == TRUE) { - apr_thread_mutex_lock(asr_session->mutex); - if(mrcp_application_session_terminate(asr_session->mrcp_session) == TRUE) { - apr_thread_cond_wait(asr_session->wait_object,asr_session->mutex); - /* the response must be checked to be the valid one */ - } - apr_thread_mutex_unlock(asr_session->mutex); - } - - if(asr_session->audio_in) { - fclose(asr_session->audio_in); - asr_session->audio_in = NULL; - } - - if(asr_session->mutex) { - apr_thread_mutex_destroy(asr_session->mutex); - asr_session->mutex = NULL; - } - if(asr_session->wait_object) { - apr_thread_cond_destroy(asr_session->wait_object); - asr_session->wait_object = NULL; - } - if(asr_session->media_buffer) { - mpf_frame_buffer_destroy(asr_session->media_buffer); - asr_session->media_buffer = NULL; - } - - return mrcp_application_session_destroy(asr_session->mrcp_session); -} - -/** Open audio input file */ -static apt_bool_t asr_input_file_open(asr_session_t *asr_session, const char *input_file) -{ - const apt_dir_layout_t *dir_layout = mrcp_application_dir_layout_get(asr_session->engine->mrcp_app); - apr_pool_t *pool = mrcp_application_session_pool_get(asr_session->mrcp_session); - char *input_file_path = apt_datadir_filepath_get(dir_layout,input_file,pool); - if(!input_file_path) { - return FALSE; - } - - if(asr_session->audio_in) { - fclose(asr_session->audio_in); - asr_session->audio_in = NULL; - } - - asr_session->audio_in = fopen(input_file_path,"rb"); - if(!asr_session->audio_in) { - apt_log(APT_LOG_MARK,APT_PRIO_WARNING,"Cannot Open [%s]",input_file_path); - return FALSE; - } - - return TRUE; -} - -/** MPF callback to read audio frame */ -static apt_bool_t asr_stream_read(mpf_audio_stream_t *stream, mpf_frame_t *frame) -{ - asr_session_t *asr_session = stream->obj; - if(asr_session && asr_session->streaming == TRUE) { - if(asr_session->input_mode == INPUT_MODE_FILE) { - if(asr_session->audio_in) { - if(fread(frame->codec_frame.buffer,1,frame->codec_frame.size,asr_session->audio_in) == frame->codec_frame.size) { - /* normal read */ - frame->type |= MEDIA_FRAME_TYPE_AUDIO; - } - else { - /* file is over */ - asr_session->streaming = FALSE; - } - } - } - if(asr_session->input_mode == INPUT_MODE_STREAM) { - if(asr_session->media_buffer) { - mpf_frame_buffer_read(asr_session->media_buffer,frame); - } - } - } - return TRUE; -} - -/** Create DEFINE-GRAMMAR request */ -static mrcp_message_t* define_grammar_message_create(asr_session_t *asr_session, const char *grammar_file) -{ - /* create MRCP message */ - mrcp_message_t *mrcp_message = mrcp_application_message_create( - asr_session->mrcp_session, - asr_session->mrcp_channel, - RECOGNIZER_DEFINE_GRAMMAR); - if(mrcp_message) { - mrcp_generic_header_t *generic_header; - - /* set message body */ - const apt_dir_layout_t *dir_layout = mrcp_application_dir_layout_get(asr_session->engine->mrcp_app); - apr_pool_t *pool = mrcp_application_session_pool_get(asr_session->mrcp_session); - char *grammar_file_path = apt_datadir_filepath_get(dir_layout,grammar_file,pool); - if(grammar_file_path) { - apr_finfo_t finfo; - apr_file_t *grammar_file; - apt_str_t *content = &mrcp_message->body; - - if(apr_file_open(&grammar_file,grammar_file_path,APR_FOPEN_READ|APR_FOPEN_BINARY,0,pool) != APR_SUCCESS) { - apt_log(APT_LOG_MARK,APT_PRIO_WARNING,"Failed to Open Grammar File %s",grammar_file_path); - return NULL; - } - - if(apr_file_info_get(&finfo,APR_FINFO_SIZE,grammar_file) != APR_SUCCESS) { - apt_log(APT_LOG_MARK,APT_PRIO_WARNING,"Failed to Get Grammar File Info %s",grammar_file_path); - apr_file_close(grammar_file); - return NULL; - } - - content->length = (apr_size_t)finfo.size; - content->buf = (char*) apr_palloc(pool,content->length+1); - apt_log(APT_LOG_MARK,APT_PRIO_DEBUG,"Load Grammar File Content size [%"APR_SIZE_T_FMT" bytes] %s", - content->length,grammar_file_path); - if(apr_file_read(grammar_file,content->buf,&content->length) != APR_SUCCESS) { - apt_log(APT_LOG_MARK,APT_PRIO_WARNING,"Failed to Read Grammar File Content %s",grammar_file_path); - apr_file_close(grammar_file); - return NULL; - } - content->buf[content->length] = '\0'; - apr_file_close(grammar_file); - } - - /* get/allocate generic header */ - generic_header = mrcp_generic_header_prepare(mrcp_message); - if(generic_header) { - /* set generic header fields */ - if(mrcp_message->start_line.version == MRCP_VERSION_2) { - apt_string_assign(&generic_header->content_type,"application/srgs+xml",mrcp_message->pool); - } - else { - apt_string_assign(&generic_header->content_type,"application/grammar+xml",mrcp_message->pool); - } - mrcp_generic_header_property_add(mrcp_message,GENERIC_HEADER_CONTENT_TYPE); - apt_string_assign(&generic_header->content_id,"demo-grammar",mrcp_message->pool); - mrcp_generic_header_property_add(mrcp_message,GENERIC_HEADER_CONTENT_ID); - } - } - return mrcp_message; -} - -/** Create RECOGNIZE request */ -static mrcp_message_t* recognize_message_create(asr_session_t *asr_session) -{ - /* create MRCP message */ - mrcp_message_t *mrcp_message = mrcp_application_message_create( - asr_session->mrcp_session, - asr_session->mrcp_channel, - RECOGNIZER_RECOGNIZE); - if(mrcp_message) { - mrcp_recog_header_t *recog_header; - mrcp_generic_header_t *generic_header; - /* get/allocate generic header */ - generic_header = mrcp_generic_header_prepare(mrcp_message); - if(generic_header) { - /* set generic header fields */ - apt_string_assign(&generic_header->content_type,"text/uri-list",mrcp_message->pool); - mrcp_generic_header_property_add(mrcp_message,GENERIC_HEADER_CONTENT_TYPE); - /* set message body */ - apt_string_assign(&mrcp_message->body,"session:demo-grammar",mrcp_message->pool); - } - /* get/allocate recognizer header */ - recog_header = mrcp_resource_header_prepare(mrcp_message); - if(recog_header) { - if(mrcp_message->start_line.version == MRCP_VERSION_2) { - /* set recognizer header fields */ - recog_header->cancel_if_queue = FALSE; - mrcp_resource_header_property_add(mrcp_message,RECOGNIZER_HEADER_CANCEL_IF_QUEUE); - } - recog_header->no_input_timeout = 5000; - mrcp_resource_header_property_add(mrcp_message,RECOGNIZER_HEADER_NO_INPUT_TIMEOUT); - recog_header->recognition_timeout = 20000; - mrcp_resource_header_property_add(mrcp_message,RECOGNIZER_HEADER_RECOGNITION_TIMEOUT); - recog_header->speech_complete_timeout = 400; - mrcp_resource_header_property_add(mrcp_message,RECOGNIZER_HEADER_SPEECH_COMPLETE_TIMEOUT); - recog_header->dtmf_term_timeout = 3000; - mrcp_resource_header_property_add(mrcp_message,RECOGNIZER_HEADER_DTMF_TERM_TIMEOUT); - recog_header->dtmf_interdigit_timeout = 3000; - mrcp_resource_header_property_add(mrcp_message,RECOGNIZER_HEADER_DTMF_INTERDIGIT_TIMEOUT); - recog_header->confidence_threshold = 0.5f; - mrcp_resource_header_property_add(mrcp_message,RECOGNIZER_HEADER_CONFIDENCE_THRESHOLD); - recog_header->start_input_timers = TRUE; - mrcp_resource_header_property_add(mrcp_message,RECOGNIZER_HEADER_START_INPUT_TIMERS); - } - } - return mrcp_message; -} - -/** Get NLSML result */ -static const char* nlsml_result_get(mrcp_message_t *message) -{ - nlsml_interpretation_t *interpretation; - nlsml_instance_t *instance; - nlsml_result_t *result = nlsml_result_parse(message->body.buf, message->body.length, message->pool); - if(!result) { - return NULL; - } - - /* get first interpretation */ - interpretation = nlsml_first_interpretation_get(result); - if(!interpretation) { - return NULL; - } - - /* get first instance */ - instance = nlsml_interpretation_first_instance_get(interpretation); - if(!instance) { - return NULL; - } - - nlsml_instance_swi_suppress(instance); - return nlsml_instance_content_generate(instance, message->pool); -} - - -/** Application message handler */ -static apt_bool_t app_message_handler(const mrcp_app_message_t *app_message) -{ - if((app_message->message_type == MRCP_APP_MESSAGE_TYPE_SIGNALING && - app_message->sig_message.message_type == MRCP_SIG_MESSAGE_TYPE_RESPONSE) || - app_message->message_type == MRCP_APP_MESSAGE_TYPE_CONTROL) { - - asr_session_t *asr_session = mrcp_application_session_object_get(app_message->session); - if(asr_session) { - apr_thread_mutex_lock(asr_session->mutex); - asr_session->app_message = app_message; - apr_thread_cond_signal(asr_session->wait_object); - apr_thread_mutex_unlock(asr_session->mutex); - } - } - return TRUE; -} - -/** Check signaling response */ -static apt_bool_t sig_response_check(const mrcp_app_message_t *app_message) -{ - if(!app_message || app_message->message_type != MRCP_APP_MESSAGE_TYPE_SIGNALING) { - return FALSE; - } - - return (app_message->sig_message.status == MRCP_SIG_STATUS_CODE_SUCCESS) ? TRUE : FALSE; -} - -/** Check MRCP response */ -static apt_bool_t mrcp_response_check(const mrcp_app_message_t *app_message, mrcp_request_state_e state) -{ - mrcp_message_t *mrcp_message = NULL; - if(app_message && app_message->message_type == MRCP_APP_MESSAGE_TYPE_CONTROL) { - mrcp_message = app_message->control_message; - } - - if(!mrcp_message || mrcp_message->start_line.message_type != MRCP_MESSAGE_TYPE_RESPONSE ) { - return FALSE; - } - - if(mrcp_message->start_line.status_code != MRCP_STATUS_CODE_SUCCESS && - mrcp_message->start_line.status_code != MRCP_STATUS_CODE_SUCCESS_WITH_IGNORE) { - return FALSE; - } - return (mrcp_message->start_line.request_state == state) ? TRUE : FALSE; -} - -/** Get MRCP event */ -static mrcp_message_t* mrcp_event_get(const mrcp_app_message_t *app_message) -{ - mrcp_message_t *mrcp_message = NULL; - if(app_message && app_message->message_type == MRCP_APP_MESSAGE_TYPE_CONTROL) { - mrcp_message = app_message->control_message; - } - - if(!mrcp_message || mrcp_message->start_line.message_type != MRCP_MESSAGE_TYPE_EVENT) { - return NULL; - } - return mrcp_message; -} - -/** Create ASR session */ -ASR_CLIENT_DECLARE(asr_session_t*) asr_session_create(asr_engine_t *engine, const char *profile) -{ - mpf_termination_t *termination; - mrcp_channel_t *channel; - mrcp_session_t *session; - const mrcp_app_message_t *app_message; - apr_pool_t *pool; - asr_session_t *asr_session; - mpf_stream_capabilities_t *capabilities; - - /* create session */ - session = mrcp_application_session_create(engine->mrcp_app,profile,NULL); - if(!session) { - return NULL; - } - pool = mrcp_application_session_pool_get(session); - - asr_session = apr_palloc(pool,sizeof(asr_session_t)); - mrcp_application_session_object_set(session,asr_session); - - /* create source stream capabilities */ - capabilities = mpf_source_stream_capabilities_create(pool); - /* add codec capabilities (Linear PCM) */ - mpf_codec_capabilities_add( - &capabilities->codecs, - MPF_SAMPLE_RATE_8000, - "LPCM"); - - termination = mrcp_application_audio_termination_create( - session, /* session, termination belongs to */ - &audio_stream_vtable, /* virtual methods table of audio stream */ - capabilities, /* capabilities of audio stream */ - asr_session); /* object to associate */ - - channel = mrcp_application_channel_create( - session, /* session, channel belongs to */ - MRCP_RECOGNIZER_RESOURCE, /* MRCP resource identifier */ - termination, /* media termination, used to terminate audio stream */ - NULL, /* RTP descriptor, used to create RTP termination (NULL by default) */ - asr_session); /* object to associate */ - - if(!channel) { - mrcp_application_session_destroy(session); - return NULL; - } - - asr_session->engine = engine; - asr_session->mrcp_session = session; - asr_session->mrcp_channel = channel; - asr_session->recog_complete = NULL; - asr_session->input_mode = INPUT_MODE_NONE; - asr_session->streaming = FALSE; - asr_session->audio_in = NULL; - asr_session->media_buffer = NULL; - asr_session->mutex = NULL; - asr_session->wait_object = NULL; - asr_session->app_message = NULL; - - /* Create cond wait object and mutex */ - apr_thread_mutex_create(&asr_session->mutex,APR_THREAD_MUTEX_DEFAULT,pool); - apr_thread_cond_create(&asr_session->wait_object,pool); - - /* Create media buffer */ - asr_session->media_buffer = mpf_frame_buffer_create(160,20,pool); - - /* Send add channel request and wait for the response */ - apr_thread_mutex_lock(asr_session->mutex); - app_message = NULL; - if(mrcp_application_channel_add(asr_session->mrcp_session,asr_session->mrcp_channel) == TRUE) { - apr_thread_cond_wait(asr_session->wait_object,asr_session->mutex); - app_message = asr_session->app_message; - asr_session->app_message = NULL; - } - apr_thread_mutex_unlock(asr_session->mutex); - - if(sig_response_check(app_message) == FALSE) { - asr_session_destroy_ex(asr_session,TRUE); - return NULL; - } - return asr_session; -} - -/** Initiate recognition based on specified grammar and input file */ -ASR_CLIENT_DECLARE(const char*) asr_session_file_recognize( - asr_session_t *asr_session, - const char *grammar_file, - const char *input_file) -{ - const mrcp_app_message_t *app_message; - mrcp_message_t *mrcp_message; - - app_message = NULL; - mrcp_message = define_grammar_message_create(asr_session,grammar_file); - if(!mrcp_message) { - apt_log(APT_LOG_MARK,APT_PRIO_WARNING,"Failed to Create DEFINE-GRAMMAR Request"); - return NULL; - } - - /* Send DEFINE-GRAMMAR request and wait for the response */ - apr_thread_mutex_lock(asr_session->mutex); - if(mrcp_application_message_send(asr_session->mrcp_session,asr_session->mrcp_channel,mrcp_message) == TRUE) { - apr_thread_cond_wait(asr_session->wait_object,asr_session->mutex); - app_message = asr_session->app_message; - asr_session->app_message = NULL; - } - apr_thread_mutex_unlock(asr_session->mutex); - - if(mrcp_response_check(app_message,MRCP_REQUEST_STATE_COMPLETE) == FALSE) { - return NULL; - } - - /* Reset prev recog result (if any) */ - asr_session->recog_complete = NULL; - - app_message = NULL; - mrcp_message = recognize_message_create(asr_session); - if(!mrcp_message) { - apt_log(APT_LOG_MARK,APT_PRIO_WARNING,"Failed to Create RECOGNIZE Request"); - return NULL; - } - - /* Send RECOGNIZE request and wait for the response */ - apr_thread_mutex_lock(asr_session->mutex); - if(mrcp_application_message_send(asr_session->mrcp_session,asr_session->mrcp_channel,mrcp_message) == TRUE) { - apr_thread_cond_wait(asr_session->wait_object,asr_session->mutex); - app_message = asr_session->app_message; - asr_session->app_message = NULL; - } - apr_thread_mutex_unlock(asr_session->mutex); - - if(mrcp_response_check(app_message,MRCP_REQUEST_STATE_INPROGRESS) == FALSE) { - return NULL; - } - - /* Open input file and start streaming */ - asr_session->input_mode = INPUT_MODE_FILE; - if(asr_input_file_open(asr_session,input_file) == FALSE) { - return NULL; - } - asr_session->streaming = TRUE; - - /* Wait for events either START-OF-INPUT or RECOGNITION-COMPLETE */ - do { - apr_thread_mutex_lock(asr_session->mutex); - app_message = NULL; - if(apr_thread_cond_timedwait(asr_session->wait_object,asr_session->mutex, 60 * 1000000) != APR_SUCCESS) { - apr_thread_mutex_unlock(asr_session->mutex); - return NULL; - } - app_message = asr_session->app_message; - asr_session->app_message = NULL; - apr_thread_mutex_unlock(asr_session->mutex); - - mrcp_message = mrcp_event_get(app_message); - if(mrcp_message && mrcp_message->start_line.method_id == RECOGNIZER_RECOGNITION_COMPLETE) { - asr_session->recog_complete = mrcp_message; - } - } - while(!asr_session->recog_complete); - - /* Get results */ - return nlsml_result_get(asr_session->recog_complete); -} - -/** Initiate recognition based on specified grammar and input stream */ -ASR_CLIENT_DECLARE(const char*) asr_session_stream_recognize( - asr_session_t *asr_session, - const char *grammar_file) -{ - const mrcp_app_message_t *app_message; - mrcp_message_t *mrcp_message; - - app_message = NULL; - mrcp_message = define_grammar_message_create(asr_session,grammar_file); - if(!mrcp_message) { - apt_log(APT_LOG_MARK,APT_PRIO_WARNING,"Failed to Create DEFINE-GRAMMAR Request"); - return NULL; - } - - /* Send DEFINE-GRAMMAR request and wait for the response */ - apr_thread_mutex_lock(asr_session->mutex); - if(mrcp_application_message_send(asr_session->mrcp_session,asr_session->mrcp_channel,mrcp_message) == TRUE) { - apr_thread_cond_wait(asr_session->wait_object,asr_session->mutex); - app_message = asr_session->app_message; - asr_session->app_message = NULL; - } - apr_thread_mutex_unlock(asr_session->mutex); - - if(mrcp_response_check(app_message,MRCP_REQUEST_STATE_COMPLETE) == FALSE) { - return NULL; - } - - /* Reset prev recog result (if any) */ - asr_session->recog_complete = NULL; - - app_message = NULL; - mrcp_message = recognize_message_create(asr_session); - if(!mrcp_message) { - apt_log(APT_LOG_MARK,APT_PRIO_WARNING,"Failed to Create RECOGNIZE Request"); - return NULL; - } - - /* Send RECOGNIZE request and wait for the response */ - apr_thread_mutex_lock(asr_session->mutex); - if(mrcp_application_message_send(asr_session->mrcp_session,asr_session->mrcp_channel,mrcp_message) == TRUE) { - apr_thread_cond_wait(asr_session->wait_object,asr_session->mutex); - app_message = asr_session->app_message; - asr_session->app_message = NULL; - } - apr_thread_mutex_unlock(asr_session->mutex); - - if(mrcp_response_check(app_message,MRCP_REQUEST_STATE_INPROGRESS) == FALSE) { - return NULL; - } - - /* Reset media buffer */ - mpf_frame_buffer_restart(asr_session->media_buffer); - - /* Set input mode and start streaming */ - asr_session->input_mode = INPUT_MODE_STREAM; - asr_session->streaming = TRUE; - - /* Wait for events either START-OF-INPUT or RECOGNITION-COMPLETE */ - do { - apr_thread_mutex_lock(asr_session->mutex); - app_message = NULL; - if(apr_thread_cond_timedwait(asr_session->wait_object,asr_session->mutex, 60 * 1000000) != APR_SUCCESS) { - apr_thread_mutex_unlock(asr_session->mutex); - return NULL; - } - app_message = asr_session->app_message; - asr_session->app_message = NULL; - apr_thread_mutex_unlock(asr_session->mutex); - - mrcp_message = mrcp_event_get(app_message); - if(mrcp_message && mrcp_message->start_line.method_id == RECOGNIZER_RECOGNITION_COMPLETE) { - asr_session->recog_complete = mrcp_message; - } - } - while(!asr_session->recog_complete); - - /* Get results */ - return nlsml_result_get(asr_session->recog_complete); -} - -/** Write audio frame to recognize */ -ASR_CLIENT_DECLARE(apt_bool_t) asr_session_stream_write( - asr_session_t *asr_session, - char *data, - int size) -{ - mpf_frame_t frame; - frame.type = MEDIA_FRAME_TYPE_AUDIO; - frame.marker = MPF_MARKER_NONE; - frame.codec_frame.buffer = data; - frame.codec_frame.size = size; - - if(mpf_frame_buffer_write(asr_session->media_buffer,&frame) != TRUE) { - apt_log(APT_LOG_MARK,APT_PRIO_WARNING,"Failed to Write Audio [%d]",size); - return FALSE; - } - return TRUE; -} - -/** Destroy ASR session */ -ASR_CLIENT_DECLARE(apt_bool_t) asr_session_destroy(asr_session_t *asr_session) -{ - return asr_session_destroy_ex(asr_session,TRUE); -} - -/** Set log priority */ -ASR_CLIENT_DECLARE(apt_bool_t) asr_engine_log_priority_set(apt_log_priority_e log_priority) -{ - return apt_log_priority_set(log_priority); -} diff --git a/libs/unimrcp/platforms/libunimrcp-client/Makefile.am b/libs/unimrcp/platforms/libunimrcp-client/Makefile.am deleted file mode 100644 index 28bc44aac3c..00000000000 --- a/libs/unimrcp/platforms/libunimrcp-client/Makefile.am +++ /dev/null @@ -1,11 +0,0 @@ -AM_CPPFLAGS = -I$(top_srcdir)/platforms/libunimrcp-client/include \ - $(UNIMRCP_CLIENTLIB_INCLUDES) - -lib_LTLIBRARIES = libunimrcpclient.la - -include_HEADERS = include/unimrcp_client.h -libunimrcpclient_la_SOURCES = src/unimrcp_client.c -libunimrcpclient_la_LIBADD = $(UNIMRCP_CLIENTLIB_LIBS) -libunimrcpclient_la_LDFLAGS = $(UNIMRCP_CLIENTLIB_OPTS) - -include $(top_srcdir)/build/rules/uniclientlib.am diff --git a/libs/unimrcp/platforms/libunimrcp-client/include/unimrcp_client.h b/libs/unimrcp/platforms/libunimrcp-client/include/unimrcp_client.h deleted file mode 100644 index b1536f4c0cd..00000000000 --- a/libs/unimrcp/platforms/libunimrcp-client/include/unimrcp_client.h +++ /dev/null @@ -1,46 +0,0 @@ -/* - * Copyright 2008-2014 Arsen Chaloyan - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - * - * $Id: unimrcp_client.h 2136 2014-07-04 06:33:36Z achaloyan@gmail.com $ - */ - -#ifndef UNIMRCP_CLIENT_H -#define UNIMRCP_CLIENT_H - -/** - * @file unimrcp_client.h - * @brief UniMRCP Client - */ - -#include "mrcp_client.h" - -APT_BEGIN_EXTERN_C - -/** - * Create UniMRCP client. - * @param dir_layout the dir layout structure - */ -MRCP_DECLARE(mrcp_client_t*) unimrcp_client_create(apt_dir_layout_t *dir_layout); - -/** - * Create UniMRCP client. - * @param xmlconfig XML configuration string - */ -MRCP_DECLARE(mrcp_client_t*) unimrcp_client_create2(const char *xmlconfig); - - -APT_END_EXTERN_C - -#endif /* UNIMRCP_CLIENT_H */ diff --git a/libs/unimrcp/platforms/libunimrcp-client/libunimrcpclient.vcproj b/libs/unimrcp/platforms/libunimrcp-client/libunimrcpclient.vcproj deleted file mode 100644 index 170941bc41b..00000000000 --- a/libs/unimrcp/platforms/libunimrcp-client/libunimrcpclient.vcproj +++ /dev/null @@ -1,272 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/libs/unimrcp/platforms/libunimrcp-client/libunimrcpclient.vcxproj b/libs/unimrcp/platforms/libunimrcp-client/libunimrcpclient.vcxproj deleted file mode 100644 index eba5aa5662c..00000000000 --- a/libs/unimrcp/platforms/libunimrcp-client/libunimrcpclient.vcxproj +++ /dev/null @@ -1,140 +0,0 @@ - - - - - Debug - Win32 - - - Debug - x64 - - - Release - Win32 - - - Release - x64 - - - - {EE157390-1E85-416C-946E-620E32C9AD33} - libunimrcpclient - Win32Proj - - - - StaticLibrary - Unicode - true - - - StaticLibrary - Unicode - - - StaticLibrary - Unicode - true - - - StaticLibrary - Unicode - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - <_ProjectFileVersion>10.0.30319.1 - AllRules.ruleset - - - AllRules.ruleset - - - AllRules.ruleset - - - AllRules.ruleset - - - - - - $(ProjectRootDir)modules\mrcp-sofiasip\include;$(ProjectRootDir)modules\mrcp-unirtsp\include;%(AdditionalIncludeDirectories) - - - - - $(ProjectRootDir)modules\mrcp-sofiasip\include;$(ProjectRootDir)modules\mrcp-unirtsp\include;%(AdditionalIncludeDirectories) - - - - - X64 - - - $(ProjectRootDir)modules\mrcp-sofiasip\include;$(ProjectRootDir)modules\mrcp-unirtsp\include;%(AdditionalIncludeDirectories) - ProgramDatabase - - - - - X64 - - - $(ProjectRootDir)modules\mrcp-sofiasip\include;$(ProjectRootDir)modules\mrcp-unirtsp\include;%(AdditionalIncludeDirectories) - - - - - - - - - - - - - {72782932-37cc-46ae-8c7f-9a7b1a6ee108} - false - - - {746f3632-5bb2-4570-9453-31d6d58a7d8e} - false - - - {deb01acb-d65f-4a62-aed9-58c1054499e9} - false - - - - - - \ No newline at end of file diff --git a/libs/unimrcp/platforms/libunimrcp-client/libunimrcpclient.vcxproj.filters b/libs/unimrcp/platforms/libunimrcp-client/libunimrcpclient.vcxproj.filters deleted file mode 100644 index a2d863b27f7..00000000000 --- a/libs/unimrcp/platforms/libunimrcp-client/libunimrcpclient.vcxproj.filters +++ /dev/null @@ -1,29 +0,0 @@ - - - - - {93995380-89BD-4b04-88EB-625FBE52EBFB} - h;hpp;hxx;hm;inl;inc;xsd - - - {15d2ec58-ba87-4dd8-9f7a-434f9e186e4e} - cpp;c;cc;cxx;def;odl;idl;hpj;bat;asm;asmx - - - - - include - - - include - - - include - - - - - src - - - \ No newline at end of file diff --git a/libs/unimrcp/platforms/libunimrcp-client/src/unimrcp_client.c b/libs/unimrcp/platforms/libunimrcp-client/src/unimrcp_client.c deleted file mode 100644 index 65cb74221ae..00000000000 --- a/libs/unimrcp/platforms/libunimrcp-client/src/unimrcp_client.c +++ /dev/null @@ -1,1416 +0,0 @@ -/* - * Copyright 2008-2014 Arsen Chaloyan - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - * - * $Id: unimrcp_client.c 2252 2014-11-21 02:45:15Z achaloyan@gmail.com $ - */ - -#include -#include -#include -#include -#include "uni_version.h" -#include "uni_revision.h" -#include "unimrcp_client.h" -#include "mrcp_resource_loader.h" -#include "mpf_engine.h" -#include "mpf_engine_factory.h" -#include "mpf_codec_manager.h" -#include "mpf_rtp_termination_factory.h" -#include "mrcp_sofiasip_client_agent.h" -#include "mrcp_unirtsp_client_agent.h" -#include "mrcp_client_connection.h" -#include "mrcp_ca_factory.h" -#include "apt_net.h" -#include "apt_log.h" - -#define CONF_FILE_NAME "unimrcpclient.xml" - -#define DEFAULT_IP_ADDRESS "127.0.0.1" -#define DEFAULT_SIP_PORT 8062 -#define DEFAULT_RTP_PORT_MIN 4000 -#define DEFAULT_RTP_PORT_MAX 5000 - -#define DEFAULT_SOFIASIP_UA_NAME "UniMRCP SofiaSIP" -#define DEFAULT_SDP_ORIGIN "UniMRCPClient" -#define DEFAULT_RESOURCE_LOCATION "media" - -#define XML_FILE_BUFFER_LENGTH 16000 - -/** UniMRCP client loader */ -typedef struct unimrcp_client_loader_t unimrcp_client_loader_t; - -/** UniMRCP client loader */ -struct unimrcp_client_loader_t { - /** MRCP client */ - mrcp_client_t *client; - /** Directory layout */ - apt_dir_layout_t *dir_layout; - /** XML document */ - apr_xml_doc *doc; - /** Pool to allocate memory from */ - apr_pool_t *pool; - - /** Default IP address (named property) */ - const char *ip; - /** Default external (NAT) IP address (named property) */ - const char *ext_ip; - /** Default server IP address (named property) */ - const char *server_ip; - - /** Implicitly detected, cached IP address */ - const char *auto_ip; -}; - -static apt_bool_t unimrcp_client_load(unimrcp_client_loader_t *loader, const char *dir_path, const char *file_name); -static apt_bool_t unimrcp_client_load2(unimrcp_client_loader_t *loader, const char *xmlconfig); - -/** Initialize client -- common to unimrcp_client_create and unimrcp_client_create2 */ -static unimrcp_client_loader_t* unimrcp_client_init(apt_dir_layout_t *dir_layout) -{ - apr_pool_t *pool; - mrcp_client_t *client; - unimrcp_client_loader_t *loader; - - apt_log(APT_LOG_MARK,APT_PRIO_NOTICE,"UniMRCP Client ["UNI_VERSION_STRING"] [r"UNI_REVISION_STRING"]"); - apt_log(APT_LOG_MARK,APT_PRIO_INFO,"APR ["APR_VERSION_STRING"]"); - client = mrcp_client_create(dir_layout); - if(!client) { - return NULL; - } - pool = mrcp_client_memory_pool_get(client); - if(!pool) { - return NULL; - } - - loader = apr_palloc(pool,sizeof(unimrcp_client_loader_t)); - loader->dir_layout = dir_layout; - loader->doc = NULL; - loader->client = client; - loader->pool = pool; - loader->ip = NULL; - loader->ext_ip = NULL; - loader->server_ip = NULL; - loader->auto_ip = NULL; - return loader; -} - -/** Create and load UniMRCP client using the directories layout */ -MRCP_DECLARE(mrcp_client_t*) unimrcp_client_create(apt_dir_layout_t *dir_layout) -{ - const char *dir_path; - unimrcp_client_loader_t *loader; - - if(!dir_layout) { - return NULL; - } - - loader = unimrcp_client_init(dir_layout); - if (!loader) - return NULL; - - dir_path = apt_dir_layout_path_get(dir_layout,APT_LAYOUT_CONF_DIR); - - if(unimrcp_client_load(loader,dir_path,CONF_FILE_NAME) == FALSE) { - apt_log(APT_LOG_MARK,APT_PRIO_WARNING,"Failed to Load UniMRCP Client Document"); - } - - return loader->client; -} - -/** Create UniMRCP client from XML string configuration */ -MRCP_DECLARE(mrcp_client_t*) unimrcp_client_create2(const char *xmlconfig) -{ - unimrcp_client_loader_t *loader; - - loader = unimrcp_client_init(NULL); - if (!loader) - return NULL; - - if(unimrcp_client_load2(loader,xmlconfig) == FALSE) { - apt_log(APT_LOG_MARK,APT_PRIO_WARNING,"Failed to Process UniMRCP Client Configuration"); - } - - return loader->client; -} - -/** Check whether specified attribute is valid */ -static APR_INLINE apt_bool_t is_attr_valid(const apr_xml_attr *attr) -{ - return (attr && attr->value && *attr->value != '\0'); -} - -/** Check whether specified attribute is enabled (true) */ -static APR_INLINE apt_bool_t is_attr_enabled(const apr_xml_attr *attr) -{ - if(attr && strcasecmp(attr->value,"false") == 0) { - return FALSE; - } - return TRUE; -} - -/** Check whether cdata is valid */ -static APR_INLINE apt_bool_t is_cdata_valid(const apr_xml_elem *elem) -{ - return (elem->first_cdata.first && elem->first_cdata.first->text); -} - -/** Get text cdata */ -static APR_INLINE const char* cdata_text_get(const apr_xml_elem *elem) -{ - return elem->first_cdata.first->text; -} - -/** Get boolean cdata */ -static APR_INLINE apt_bool_t cdata_bool_get(const apr_xml_elem *elem) -{ - return (strcasecmp(elem->first_cdata.first->text,"true") == 0) ? TRUE : FALSE; -} - -/** Copy cdata */ -static APR_INLINE char* cdata_copy(const apr_xml_elem *elem, apr_pool_t *pool) -{ - return apr_pstrdup(pool,elem->first_cdata.first->text); -} - -/** Get generic "id" and "enable" attributes */ -static apt_bool_t header_attribs_get(const apr_xml_elem *elem, const apr_xml_attr **id, const apr_xml_attr **enable) -{ - const apr_xml_attr *attr; - if(!id || !enable) { - return FALSE; - } - - *id = NULL; - *enable = NULL; - for(attr = elem->attr; attr; attr = attr->next) { - if(strcasecmp(attr->name,"id") == 0) { - *id = attr; - } - else if(strcasecmp(attr->name,"enable") == 0) { - *enable = attr; - } - } - - if(is_attr_valid(*id) == FALSE) { - apt_log(APT_LOG_MARK,APT_PRIO_WARNING,"Missing Required Attribute in Element <%s>",elem->name); - return FALSE; - } - return TRUE; -} - -/** Get profile attributes such as "id", "enable" and "tag" */ -static apt_bool_t profile_attribs_get(const apr_xml_elem *elem, const apr_xml_attr **id, const apr_xml_attr **enable, const apr_xml_attr **tag) -{ - const apr_xml_attr *attr; - if(!id || !enable || !tag) { - return FALSE; - } - - *id = NULL; - *enable = NULL; - *tag = NULL; - for(attr = elem->attr; attr; attr = attr->next) { - if(strcasecmp(attr->name,"id") == 0) { - *id = attr; - } - else if(strcasecmp(attr->name,"enable") == 0) { - *enable = attr; - } - else if(strcasecmp(attr->name,"tag") == 0) { - *tag = attr; - } - } - - if(is_attr_valid(*id) == FALSE) { - apt_log(APT_LOG_MARK,APT_PRIO_WARNING,"Missing Required Attribute in Element <%s>",elem->name); - return FALSE; - } - return TRUE; -} - -/** Get generic "name" and "value" attributes */ -static apt_bool_t name_value_attribs_get(const apr_xml_elem *elem, const apr_xml_attr **name, const apr_xml_attr **value) -{ - const apr_xml_attr *attr; - if(!name || !value) { - return FALSE; - } - - *name = NULL; - *value = NULL; - for(attr = elem->attr; attr; attr = attr->next) { - if(strcasecmp(attr->name,"name") == 0) { - *name = attr; - } - else if(strcasecmp(attr->name,"value") == 0) { - *value = attr; - } - } - return (*name && *value) ? TRUE : FALSE; -} - -static char* unimrcp_client_ip_address_get(unimrcp_client_loader_t *loader, const apr_xml_elem *elem, const char *default_ip) -{ - const apr_xml_attr *attr = NULL; - for(attr = elem->attr; attr; attr = attr->next) { - if(strcasecmp(attr->name,"type") == 0) { - break; - } - } - - if(attr && strcasecmp(attr->value,"auto") == 0) { - /* implicitly detect IP address, if not already detected */ - if(!loader->auto_ip) { - char *auto_addr = DEFAULT_IP_ADDRESS; - apt_log(APT_LOG_MARK,APT_PRIO_DEBUG,"Detecting IP Address"); - apt_ip_get(&auto_addr,loader->pool); - loader->auto_ip = auto_addr; - } - return apr_pstrdup(loader->pool,loader->auto_ip); - } - else if(attr && strcasecmp(attr->value,"iface") == 0) { - /* get IP address by network interface name */ - char *ip_addr = DEFAULT_IP_ADDRESS; - if(is_cdata_valid(elem) == TRUE) { - const char *iface_name = cdata_text_get(elem); - apt_log(APT_LOG_MARK,APT_PRIO_DEBUG,"Get IP Address by Interface [%s]", iface_name); - apt_ip_get_by_iface(iface_name,&ip_addr,loader->pool); - } - return ip_addr; - } - - if(is_cdata_valid(elem)) { - /* use specified IP address */ - return cdata_copy(elem,loader->pool); - } - - /* use default IP address */ - return apr_pstrdup(loader->pool,loader->ip); -} - - - -/** Load resource */ -static apt_bool_t unimrcp_client_resource_load(mrcp_resource_loader_t *resource_loader, const apr_xml_elem *root, apr_pool_t *pool) -{ - apt_str_t resource_class; - const apr_xml_attr *id_attr; - const apr_xml_attr *enable_attr; - apt_string_reset(&resource_class); - - if(header_attribs_get(root,&id_attr,&enable_attr) == FALSE) { - return FALSE; - } - - if(is_attr_enabled(enable_attr) == FALSE) { - return TRUE; - } - - apt_string_set(&resource_class,id_attr->value); - return mrcp_resource_load(resource_loader,&resource_class); -} - -/** Load resource factory */ -static apt_bool_t unimrcp_client_resource_factory_load(unimrcp_client_loader_t *loader, const apr_xml_elem *root) -{ - const apr_xml_elem *elem; - mrcp_resource_factory_t *resource_factory; - mrcp_resource_loader_t *resource_loader = mrcp_resource_loader_create(FALSE,loader->pool); - if(!resource_loader) { - return FALSE; - } - - apt_log(APT_LOG_MARK,APT_PRIO_DEBUG,"Loading Resources"); - for(elem = root->first_child; elem; elem = elem->next) { - if(strcasecmp(elem->name,"resource") == 0) { - unimrcp_client_resource_load(resource_loader,elem,loader->pool); - } - else { - apt_log(APT_LOG_MARK,APT_PRIO_WARNING,"Unknown Element <%s>",elem->name); - } - } - - resource_factory = mrcp_resource_factory_get(resource_loader); - return mrcp_client_resource_factory_register(loader->client,resource_factory); -} - -/** Load SofiaSIP signaling agent */ -static apt_bool_t unimrcp_client_sip_uac_load(unimrcp_client_loader_t *loader, const apr_xml_elem *root, const char *id) -{ - const apr_xml_elem *elem; - mrcp_sig_agent_t *agent; - mrcp_sofia_client_config_t *config; - - config = mrcp_sofiasip_client_config_alloc(loader->pool); - config->local_port = DEFAULT_SIP_PORT; - config->user_agent_name = DEFAULT_SOFIASIP_UA_NAME; - config->origin = DEFAULT_SDP_ORIGIN; - - apt_log(APT_LOG_MARK,APT_PRIO_DEBUG,"Loading SofiaSIP Agent <%s>",id); - for(elem = root->first_child; elem; elem = elem->next) { - apt_log(APT_LOG_MARK,APT_PRIO_DEBUG,"Loading Element <%s>",elem->name); - if(strcasecmp(elem->name,"sip-ip") == 0) { - config->local_ip = unimrcp_client_ip_address_get(loader,elem,loader->ip); - } - else if(strcasecmp(elem->name,"sip-ext-ip") == 0) { - config->ext_ip = unimrcp_client_ip_address_get(loader,elem,loader->ext_ip); - } - else if(strcasecmp(elem->name,"sip-port") == 0) { - if(is_cdata_valid(elem) == TRUE) { - config->local_port = (apr_port_t)atol(cdata_text_get(elem)); - } - } - else if(strcasecmp(elem->name,"sip-transport") == 0) { - if(is_cdata_valid(elem) == TRUE) { - config->transport = cdata_copy(elem,loader->pool); - } - } - else if(strcasecmp(elem->name,"ua-name") == 0) { - if(is_cdata_valid(elem) == TRUE) { - const apr_xml_attr *attr = NULL; - for(attr = elem->attr; attr; attr = attr->next) { - if(strcasecmp(attr->name,"appendversion") == 0) { - break; - } - } - if(is_attr_enabled(attr)) { - config->user_agent_name = apr_psprintf(loader->pool,"%s "UNI_VERSION_STRING,cdata_text_get(elem)); - } - else { - config->user_agent_name = cdata_copy(elem,loader->pool); - } - } - } - else if(strcasecmp(elem->name,"sdp-origin") == 0) { - if(is_cdata_valid(elem) == TRUE) { - config->origin = cdata_copy(elem,loader->pool); - } - } - else if(strcasecmp(elem->name,"sip-t1") == 0) { - if(is_cdata_valid(elem) == TRUE) { - config->sip_t1 = atol(cdata_text_get(elem)); - } - } - else if(strcasecmp(elem->name,"sip-t2") == 0) { - if(is_cdata_valid(elem) == TRUE) { - config->sip_t2 = atol(cdata_text_get(elem)); - } - } - else if(strcasecmp(elem->name,"sip-t4") == 0) { - if(is_cdata_valid(elem) == TRUE) { - config->sip_t4 = atol(cdata_text_get(elem)); - } - } - else if(strcasecmp(elem->name,"sip-t1x64") == 0) { - if(is_cdata_valid(elem) == TRUE) { - config->sip_t1x64 = atol(cdata_text_get(elem)); - } - } - else if(strcasecmp(elem->name,"sip-message-output") == 0) { - if(is_cdata_valid(elem) == TRUE) { - config->tport_log = cdata_bool_get(elem); - } - } - else if(strcasecmp(elem->name,"sip-message-dump") == 0) { - if(is_cdata_valid(elem) == TRUE) { - const char *root_path; - const char *path = cdata_text_get(elem); - if(loader->dir_layout && apr_filepath_root(&root_path,&path,0,loader->pool) == APR_ERELATIVE) - config->tport_dump_file = apt_dir_layout_path_compose( - loader->dir_layout, - APT_LAYOUT_LOG_DIR, - path, - loader->pool); - else - config->tport_dump_file = cdata_copy(elem,loader->pool); - } - } - else { - apt_log(APT_LOG_MARK,APT_PRIO_WARNING,"Unknown Element <%s>",elem->name); - } - } - - if(!config->local_ip) { - /* use default IP address if not specified */ - config->local_ip = apr_pstrdup(loader->pool,loader->ip); - } - if(!config->ext_ip && loader->ext_ip) { - /* use default ext IP address if not specified */ - config->ext_ip = apr_pstrdup(loader->pool,loader->ext_ip); - } - - agent = mrcp_sofiasip_client_agent_create(id,config,loader->pool); - return mrcp_client_signaling_agent_register(loader->client,agent); -} - -/** Load UniRTSP signaling agent */ -static apt_bool_t unimrcp_client_rtsp_uac_load(unimrcp_client_loader_t *loader, const apr_xml_elem *root, const char *id) -{ - const apr_xml_elem *elem; - mrcp_sig_agent_t *agent; - rtsp_client_config_t *config; - - config = mrcp_unirtsp_client_config_alloc(loader->pool); - config->origin = DEFAULT_SDP_ORIGIN; - - apt_log(APT_LOG_MARK,APT_PRIO_DEBUG,"Loading UniRTSP Agent <%s>",id); - for(elem = root->first_child; elem; elem = elem->next) { - apt_log(APT_LOG_MARK,APT_PRIO_DEBUG,"Loading Element <%s>",elem->name); - if(strcasecmp(elem->name,"sdp-origin") == 0) { - if(is_cdata_valid(elem) == TRUE) { - config->origin = cdata_copy(elem,loader->pool); - } - } - else if(strcasecmp(elem->name,"max-connection-count") == 0) { - if(is_cdata_valid(elem) == TRUE) { - config->max_connection_count = atol(cdata_text_get(elem)); - } - } - else if(strcasecmp(elem->name,"request-timeout") == 0) { - if(is_cdata_valid(elem) == TRUE) { - config->request_timeout = atol(cdata_text_get(elem)); - } - } - else { - apt_log(APT_LOG_MARK,APT_PRIO_WARNING,"Unknown Element <%s>",elem->name); - } - } - - agent = mrcp_unirtsp_client_agent_create(id,config,loader->pool); - return mrcp_client_signaling_agent_register(loader->client,agent); -} - -/** Load MRCPv2 connection agent */ -static apt_bool_t unimrcp_client_mrcpv2_uac_load(unimrcp_client_loader_t *loader, const apr_xml_elem *root, const char *id) -{ - const apr_xml_elem *elem; - mrcp_connection_agent_t *agent; - apr_size_t max_connection_count = 100; - apt_bool_t offer_new_connection = FALSE; - const char *rx_buffer_size = NULL; - const char *tx_buffer_size = NULL; - const char *request_timeout = NULL; - - apt_log(APT_LOG_MARK,APT_PRIO_DEBUG,"Loading MRCPv2 Agent <%s>",id); - for(elem = root->first_child; elem; elem = elem->next) { - apt_log(APT_LOG_MARK,APT_PRIO_DEBUG,"Loading Element <%s>",elem->name); - if(strcasecmp(elem->name,"max-connection-count") == 0) { - if(is_cdata_valid(elem) == TRUE) { - max_connection_count = atol(cdata_text_get(elem)); - } - } - else if(strcasecmp(elem->name,"offer-new-connection") == 0) { - if(is_cdata_valid(elem) == TRUE) { - offer_new_connection = cdata_bool_get(elem); - } - } - else if(strcasecmp(elem->name,"rx-buffer-size") == 0) { - if(is_cdata_valid(elem) == TRUE) { - rx_buffer_size = cdata_text_get(elem); - } - } - else if(strcasecmp(elem->name,"tx-buffer-size") == 0) { - if(is_cdata_valid(elem) == TRUE) { - tx_buffer_size = cdata_text_get(elem); - } - } - else if(strcasecmp(elem->name,"request-timeout") == 0) { - if(is_cdata_valid(elem) == TRUE) { - request_timeout = cdata_text_get(elem); - } - } - else { - apt_log(APT_LOG_MARK,APT_PRIO_WARNING,"Unknown Element <%s>",elem->name); - } - } - - agent = mrcp_client_connection_agent_create(id,max_connection_count,offer_new_connection,loader->pool); - if(agent) { - if(rx_buffer_size) { - mrcp_client_connection_rx_size_set(agent,atol(rx_buffer_size)); - } - if(tx_buffer_size) { - mrcp_client_connection_tx_size_set(agent,atol(tx_buffer_size)); - } - if(request_timeout) { - mrcp_client_connection_timeout_set(agent,atol(request_timeout)); - } - } - return mrcp_client_connection_agent_register(loader->client,agent); -} - -/** Load media engine */ -static apt_bool_t unimrcp_client_media_engine_load(unimrcp_client_loader_t *loader, const apr_xml_elem *root, const char *id) -{ - const apr_xml_elem *elem; - mpf_engine_t *media_engine; - unsigned long realtime_rate = 1; - - apt_log(APT_LOG_MARK,APT_PRIO_DEBUG,"Loading Media Engine <%s>",id); - for(elem = root->first_child; elem; elem = elem->next) { - apt_log(APT_LOG_MARK,APT_PRIO_DEBUG,"Loading Element <%s>",elem->name); - if(strcasecmp(elem->name,"realtime-rate") == 0) { - if(is_cdata_valid(elem) == TRUE) { - realtime_rate = atol(cdata_text_get(elem)); - } - } - else { - apt_log(APT_LOG_MARK,APT_PRIO_WARNING,"Unknown Element <%s>",elem->name); - } - } - - media_engine = mpf_engine_create(id,loader->pool); - if(media_engine) { - mpf_engine_scheduler_rate_set(media_engine,realtime_rate); - } - return mrcp_client_media_engine_register(loader->client,media_engine); -} - -/** Load RTP factory */ -static apt_bool_t unimrcp_client_rtp_factory_load(unimrcp_client_loader_t *loader, const apr_xml_elem *root, const char *id) -{ - const apr_xml_elem *elem; - char *rtp_ip = NULL; - char *rtp_ext_ip = NULL; - mpf_termination_factory_t *rtp_factory; - mpf_rtp_config_t *rtp_config; - - rtp_config = mpf_rtp_config_alloc(loader->pool); - rtp_config->rtp_port_min = DEFAULT_RTP_PORT_MIN; - rtp_config->rtp_port_max = DEFAULT_RTP_PORT_MAX; - - apt_log(APT_LOG_MARK,APT_PRIO_DEBUG,"Loading RTP Factory <%s>",id); - for(elem = root->first_child; elem; elem = elem->next) { - apt_log(APT_LOG_MARK,APT_PRIO_DEBUG,"Loading Element <%s>",elem->name); - if(strcasecmp(elem->name,"rtp-ip") == 0) { - rtp_ip = unimrcp_client_ip_address_get(loader,elem,loader->ip); - } - else if(strcasecmp(elem->name,"rtp-ext-ip") == 0) { - rtp_ext_ip = unimrcp_client_ip_address_get(loader,elem,loader->ext_ip); - } - else if(strcasecmp(elem->name,"rtp-port-min") == 0) { - if(is_cdata_valid(elem) == TRUE) { - rtp_config->rtp_port_min = (apr_port_t)atol(cdata_text_get(elem)); - } - } - else if(strcasecmp(elem->name,"rtp-port-max") == 0) { - if(is_cdata_valid(elem) == TRUE) { - rtp_config->rtp_port_max = (apr_port_t)atol(cdata_text_get(elem)); - } - } - else { - apt_log(APT_LOG_MARK,APT_PRIO_WARNING,"Unknown Element <%s>",elem->name); - } - } - - if(rtp_ip) { - apt_string_set(&rtp_config->ip,rtp_ip); - } - else { - apt_string_set(&rtp_config->ip,loader->ip); - } - if(rtp_ext_ip) { - apt_string_set(&rtp_config->ext_ip,rtp_ext_ip); - } - else if(loader->ext_ip){ - apt_string_set(&rtp_config->ext_ip,loader->ext_ip); - } - - rtp_factory = mpf_rtp_termination_factory_create(rtp_config,loader->pool); - return mrcp_client_rtp_factory_register(loader->client,rtp_factory,id); -} - - -/** Load SIP settings */ -static apt_bool_t unimrcp_client_sip_settings_load(unimrcp_client_loader_t *loader, const apr_xml_elem *root, const char *id) -{ - const apr_xml_elem *elem; - mrcp_sig_settings_t *settings = mrcp_signaling_settings_alloc(loader->pool); - - apt_log(APT_LOG_MARK,APT_PRIO_DEBUG,"Loading SIP Settings <%s>",id); - for(elem = root->first_child; elem; elem = elem->next) { - apt_log(APT_LOG_MARK,APT_PRIO_DEBUG,"Loading Element <%s>",elem->name); - if(strcasecmp(elem->name,"server-ip") == 0) { - settings->server_ip = unimrcp_client_ip_address_get(loader,elem,loader->server_ip); - } - else if(strcasecmp(elem->name,"server-port") == 0) { - if(is_cdata_valid(elem) == TRUE) { - settings->server_port = (apr_port_t)atol(cdata_text_get(elem)); - } - } - else if(strcasecmp(elem->name,"server-username") == 0) { - if(is_cdata_valid(elem) == TRUE) { - settings->user_name = cdata_copy(elem,loader->pool); - } - } - else if(strcasecmp(elem->name,"force-destination") == 0) { - if(is_cdata_valid(elem) == TRUE) { - settings->force_destination = cdata_bool_get(elem); - } - } - else if(strcasecmp(elem->name,"feature-tags") == 0) { - if(is_cdata_valid(elem) == TRUE) { - settings->feature_tags = cdata_copy(elem,loader->pool); - } - } - else { - apt_log(APT_LOG_MARK,APT_PRIO_WARNING,"Unknown Element <%s>",elem->name); - } - } - - if(!settings->server_ip) { - settings->server_ip = apr_pstrdup(loader->pool,loader->server_ip); - } - apt_log(APT_LOG_MARK,APT_PRIO_INFO,"Create SIP Settings %s:%hu",settings->server_ip,settings->server_port); - return mrcp_client_signaling_settings_register(loader->client,settings,id); -} - -/** Load RTSP settings */ -static apt_bool_t unimrcp_client_rtsp_settings_load(unimrcp_client_loader_t *loader, const apr_xml_elem *root, const char *id) -{ - const apr_xml_elem *elem; - mrcp_sig_settings_t *settings = mrcp_signaling_settings_alloc(loader->pool); - settings->resource_location = DEFAULT_RESOURCE_LOCATION; - - apt_log(APT_LOG_MARK,APT_PRIO_DEBUG,"Loading RTSP Settings <%s>",id); - for(elem = root->first_child; elem; elem = elem->next) { - apt_log(APT_LOG_MARK,APT_PRIO_DEBUG,"Loading Element <%s>",elem->name); - if(strcasecmp(elem->name,"server-ip") == 0) { - settings->server_ip = unimrcp_client_ip_address_get(loader,elem,loader->server_ip); - } - else if(strcasecmp(elem->name,"server-port") == 0) { - if(is_cdata_valid(elem) == TRUE) { - settings->server_port = (apr_port_t)atol(cdata_text_get(elem)); - } - } - else if(strcasecmp(elem->name,"force-destination") == 0) { - if(is_cdata_valid(elem) == TRUE) { - settings->force_destination = cdata_bool_get(elem); - } - } - else if(strcasecmp(elem->name,"resource-location") == 0) { - if(is_cdata_valid(elem) == TRUE) { - settings->resource_location = cdata_copy(elem,loader->pool); - } - else { - settings->resource_location = ""; - } - } - else if(strcasecmp(elem->name,"resource-map") == 0) { - const apr_xml_attr *name_attr; - const apr_xml_attr *value_attr; - const apr_xml_elem *child_elem; - apt_log(APT_LOG_MARK,APT_PRIO_DEBUG,"Loading Resource Map"); - for(child_elem = elem->first_child; child_elem; child_elem = child_elem->next) { - if(name_value_attribs_get(child_elem,&name_attr,&value_attr) == TRUE) { - apt_log(APT_LOG_MARK,APT_PRIO_DEBUG,"Loading Param %s:%s",name_attr->value,value_attr->value); - apr_table_set(settings->resource_map,name_attr->value,value_attr->value); - } - } - } - else { - apt_log(APT_LOG_MARK,APT_PRIO_WARNING,"Unknown Element <%s>",elem->name); - } - } - - if(!settings->server_ip) { - settings->server_ip = apr_pstrdup(loader->pool,loader->server_ip); - } - apt_log(APT_LOG_MARK,APT_PRIO_INFO,"Create RTSP Settings %s:%hu",settings->server_ip,settings->server_port); - return mrcp_client_signaling_settings_register(loader->client,settings,id); -} - -/** Load jitter buffer settings */ -static apt_bool_t unimrcp_client_jb_settings_load(unimrcp_client_loader_t *loader, mpf_jb_config_t *jb, const apr_xml_elem *root) -{ - const apr_xml_elem *elem; - - apt_log(APT_LOG_MARK,APT_PRIO_DEBUG,"Loading Jitter Buffer Settings"); - for(elem = root->first_child; elem; elem = elem->next) { - apt_log(APT_LOG_MARK,APT_PRIO_DEBUG,"Loading Element <%s>",elem->name); - if(strcasecmp(elem->name,"playout-delay") == 0) { - if(is_cdata_valid(elem) == TRUE) { - jb->initial_playout_delay = atol(cdata_text_get(elem)); - } - } - else if(strcasecmp(elem->name,"min-playout-delay") == 0) { - if(is_cdata_valid(elem) == TRUE) { - jb->min_playout_delay = atol(cdata_text_get(elem)); - } - } - else if(strcasecmp(elem->name,"max-playout-delay") == 0) { - if(is_cdata_valid(elem) == TRUE) { - jb->max_playout_delay = atol(cdata_text_get(elem)); - } - } - else if(strcasecmp(elem->name,"adaptive") == 0) { - if(is_cdata_valid(elem) == TRUE) { - jb->adaptive = (apr_byte_t) atol(cdata_text_get(elem)); - } - } - else if(strcasecmp(elem->name,"time-skew-detection") == 0) { - if(is_cdata_valid(elem) == TRUE) { - jb->time_skew_detection = (apr_byte_t) atol(cdata_text_get(elem)); - } - } - else { - apt_log(APT_LOG_MARK,APT_PRIO_WARNING,"Unknown Element <%s>",elem->name); - } - } - return TRUE; -} - -/** Load RTCP settings */ -static apt_bool_t unimrcp_client_rtcp_settings_load(unimrcp_client_loader_t *loader, mpf_rtp_settings_t *rtcp_settings, const apr_xml_elem *root) -{ - const apr_xml_elem *elem; - const apr_xml_attr *attr = NULL; - for(attr = root->attr; attr; attr = attr->next) { - if(strcasecmp(attr->name,"enable") == 0) { - break; - } - } - - if(is_attr_enabled(attr) == FALSE) { - /* RTCP is disabled, skip the rest */ - return TRUE; - } - - rtcp_settings->rtcp = TRUE; - apt_log(APT_LOG_MARK,APT_PRIO_DEBUG,"Loading RTCP Settings"); - for(elem = root->first_child; elem; elem = elem->next) { - apt_log(APT_LOG_MARK,APT_PRIO_DEBUG,"Loading Element <%s>",elem->name); - if(strcasecmp(elem->name,"rtcp-bye") == 0) { - if(is_cdata_valid(elem) == TRUE) { - rtcp_settings->rtcp_bye_policy = atoi(cdata_text_get(elem)); - } - } - else if(strcasecmp(elem->name,"tx-interval") == 0) { - if(is_cdata_valid(elem) == TRUE) { - rtcp_settings->rtcp_tx_interval = (apr_uint16_t)atoi(cdata_text_get(elem)); - } - } - else if(strcasecmp(elem->name,"rx-resolution") == 0) { - if(is_cdata_valid(elem) == TRUE) { - rtcp_settings->rtcp_rx_resolution = (apr_uint16_t)atol(cdata_text_get(elem)); - } - } - else { - apt_log(APT_LOG_MARK,APT_PRIO_WARNING,"Unknown Element <%s>",elem->name); - } - } - return TRUE; -} - -/** Load RTP settings */ -static apt_bool_t unimrcp_client_rtp_settings_load(unimrcp_client_loader_t *loader, const apr_xml_elem *root, const char *id) -{ - const apr_xml_elem *elem; - mpf_rtp_settings_t *rtp_settings = mpf_rtp_settings_alloc(loader->pool); - - apt_log(APT_LOG_MARK,APT_PRIO_DEBUG,"Loading RTP Settings <%s>",id); - for(elem = root->first_child; elem; elem = elem->next) { - apt_log(APT_LOG_MARK,APT_PRIO_DEBUG,"Loading Element <%s>",elem->name); - if(strcasecmp(elem->name,"jitter-buffer") == 0) { - unimrcp_client_jb_settings_load(loader,&rtp_settings->jb_config,elem); - } - else if(strcasecmp(elem->name,"ptime") == 0) { - if(is_cdata_valid(elem) == TRUE) { - rtp_settings->ptime = (apr_uint16_t)atol(cdata_text_get(elem)); - } - } - else if(strcasecmp(elem->name,"codecs") == 0) { - const mpf_codec_manager_t *codec_manager = mrcp_client_codec_manager_get(loader->client); - if(is_cdata_valid(elem) == TRUE && codec_manager) { - mpf_codec_manager_codec_list_load( - codec_manager, - &rtp_settings->codec_list, - cdata_text_get(elem), - loader->pool); - } - } - else if(strcasecmp(elem->name,"rtcp") == 0) { - unimrcp_client_rtcp_settings_load(loader,rtp_settings,elem); - } - else { - apt_log(APT_LOG_MARK,APT_PRIO_WARNING,"Unknown Element <%s>",elem->name); - } - } - - return mrcp_client_rtp_settings_register(loader->client,rtp_settings,id); -} - -/** Create factory of signaling agents */ -static mrcp_sa_factory_t* unimrcp_client_sa_factory_create(unimrcp_client_loader_t *loader, const apr_xml_elem *elem) -{ - mrcp_sa_factory_t *sa_factory = NULL; - mrcp_sig_agent_t *sig_agent; - char *uac_name; - char *state; - char *uac_list_str = apr_pstrdup(loader->pool,cdata_text_get(elem)); - do { - uac_name = apr_strtok(uac_list_str, ",", &state); - if(uac_name) { - sig_agent = mrcp_client_signaling_agent_get(loader->client,uac_name); - if(sig_agent) { - if(!sa_factory) - sa_factory = mrcp_sa_factory_create(loader->pool); - - mrcp_sa_factory_agent_add(sa_factory,sig_agent); - } - else { - apt_log(APT_LOG_MARK,APT_PRIO_WARNING,"Unknown UAC Name <%s>",uac_name); - } - } - uac_list_str = NULL; /* make sure we pass NULL on subsequent calls of apr_strtok() */ - } - while(uac_name); - return sa_factory; -} - -/** Create factory of MRCPv2 connection agents */ -static mrcp_ca_factory_t* unimrcp_client_ca_factory_create(unimrcp_client_loader_t *loader, const apr_xml_elem *elem) -{ - mrcp_ca_factory_t *ca_factory = NULL; - mrcp_connection_agent_t *agent; - char *name; - char *state; - char *list_str = apr_pstrdup(loader->pool,cdata_text_get(elem)); - do { - name = apr_strtok(list_str, ",", &state); - if(name) { - agent = mrcp_client_connection_agent_get(loader->client,name); - if(agent) { - if(!ca_factory) - ca_factory = mrcp_ca_factory_create(loader->pool); - - mrcp_ca_factory_agent_add(ca_factory,agent); - } - else { - apt_log(APT_LOG_MARK,APT_PRIO_WARNING,"Unknown MRCPv2-UAC Name <%s>",name); - } - } - list_str = NULL; /* make sure we pass NULL on subsequent calls of apr_strtok() */ - } - while(name); - return ca_factory; -} - -/** Create factory of media engines */ -static mpf_engine_factory_t* unimrcp_client_mpf_factory_create(unimrcp_client_loader_t *loader, const apr_xml_elem *elem) -{ - mpf_engine_factory_t *mpf_factory = NULL; - mpf_engine_t *media_engine; - - char *name; - char *state; - char *list_str = apr_pstrdup(loader->pool,cdata_text_get(elem)); - do { - name = apr_strtok(list_str, ",", &state); - if(name) { - media_engine = mrcp_client_media_engine_get(loader->client,name); - if(media_engine) { - if(!mpf_factory) - mpf_factory = mpf_engine_factory_create(loader->pool); - - mpf_engine_factory_engine_add(mpf_factory,media_engine); - } - else { - apt_log(APT_LOG_MARK,APT_PRIO_WARNING,"Unknown Media Engine Name <%s>",name); - } - } - list_str = NULL; /* make sure we pass NULL on subsequent calls of apr_strtok() */ - } - while(name); - - return mpf_factory; -} - -/** Load MRCPv2 profile */ -static apt_bool_t unimrcp_client_mrcpv2_profile_load(unimrcp_client_loader_t *loader, const apr_xml_elem *root, const char *id, const char *tag) -{ - const apr_xml_elem *elem; - mrcp_client_profile_t *profile; - mrcp_sa_factory_t *sa_factory = NULL; - mrcp_ca_factory_t *ca_factory = NULL; - mpf_engine_factory_t *mpf_factory = NULL; - mpf_termination_factory_t *rtp_factory = NULL; - mpf_rtp_settings_t *rtp_settings = NULL; - mrcp_sig_settings_t *sip_settings = NULL; - - apt_log(APT_LOG_MARK,APT_PRIO_DEBUG,"Loading MRCPv2 Profile <%s>",id); - for(elem = root->first_child; elem; elem = elem->next) { - apt_log(APT_LOG_MARK,APT_PRIO_DEBUG,"Loading Element <%s>",elem->name); - - if(is_cdata_valid(elem) == FALSE) { - continue; - } - - if(strcasecmp(elem->name,"sip-uac") == 0) { - sa_factory = unimrcp_client_sa_factory_create(loader,elem); - } - else if(strcasecmp(elem->name,"mrcpv2-uac") == 0) { - ca_factory = unimrcp_client_ca_factory_create(loader,elem); - } - else if(strcasecmp(elem->name,"media-engine") == 0) { - mpf_factory = unimrcp_client_mpf_factory_create(loader,elem); - } - else if(strcasecmp(elem->name,"rtp-factory") == 0) { - rtp_factory = mrcp_client_rtp_factory_get(loader->client,cdata_text_get(elem)); - } - else if(strcasecmp(elem->name,"sip-settings") == 0) { - sip_settings = mrcp_client_signaling_settings_get(loader->client,cdata_text_get(elem)); - } - else if(strcasecmp(elem->name,"rtp-settings") == 0) { - rtp_settings = mrcp_client_rtp_settings_get(loader->client,cdata_text_get(elem)); - } - else { - apt_log(APT_LOG_MARK,APT_PRIO_WARNING,"Unknown Element <%s>",elem->name); - } - } - - apt_log(APT_LOG_MARK,APT_PRIO_NOTICE,"Create MRCPv2 Profile [%s]",id); - profile = mrcp_client_profile_create_ex( - MRCP_VERSION_2,NULL, - sa_factory,ca_factory, - mpf_factory,rtp_factory, - rtp_settings,sip_settings, - loader->pool); - if(tag) { - mrcp_client_profile_tag_set(profile,tag); - } - return mrcp_client_profile_register(loader->client,profile,id); -} - -/** Load MRCPv1 profile */ -static apt_bool_t unimrcp_client_mrcpv1_profile_load(unimrcp_client_loader_t *loader, const apr_xml_elem *root, const char *id, const char *tag) -{ - const apr_xml_elem *elem; - mrcp_client_profile_t *profile; - mrcp_sa_factory_t *sa_factory = NULL; - mpf_engine_factory_t *mpf_factory = NULL; - mpf_termination_factory_t *rtp_factory = NULL; - mpf_rtp_settings_t *rtp_settings = NULL; - mrcp_sig_settings_t *rtsp_settings = NULL; - - apt_log(APT_LOG_MARK,APT_PRIO_DEBUG,"Loading MRCPv1 Profile <%s>",id); - for(elem = root->first_child; elem; elem = elem->next) { - apt_log(APT_LOG_MARK,APT_PRIO_DEBUG,"Loading Element <%s>",elem->name); - - if(is_cdata_valid(elem) == FALSE) { - continue; - } - - if(strcasecmp(elem->name,"rtsp-uac") == 0) { - sa_factory = unimrcp_client_sa_factory_create(loader,elem); - } - else if(strcasecmp(elem->name,"media-engine") == 0) { - mpf_factory = unimrcp_client_mpf_factory_create(loader,elem); - } - else if(strcasecmp(elem->name,"rtp-factory") == 0) { - rtp_factory = mrcp_client_rtp_factory_get(loader->client,cdata_text_get(elem)); - } - else if(strcasecmp(elem->name,"rtsp-settings") == 0) { - rtsp_settings = mrcp_client_signaling_settings_get(loader->client,cdata_text_get(elem)); - } - else if(strcasecmp(elem->name,"rtp-settings") == 0) { - rtp_settings = mrcp_client_rtp_settings_get(loader->client,cdata_text_get(elem)); - } - else { - apt_log(APT_LOG_MARK,APT_PRIO_WARNING,"Unknown Element <%s>",elem->name); - } - } - - apt_log(APT_LOG_MARK,APT_PRIO_NOTICE,"Create MRCPv1 Profile [%s]",id); - profile = mrcp_client_profile_create_ex( - MRCP_VERSION_1, - NULL,sa_factory,NULL, - mpf_factory,rtp_factory, - rtp_settings,rtsp_settings, - loader->pool); - if(tag) { - mrcp_client_profile_tag_set(profile,tag); - } - return mrcp_client_profile_register(loader->client,profile,id); -} - - -/** Load properties */ -static apt_bool_t unimrcp_client_properties_load(unimrcp_client_loader_t *loader, const apr_xml_elem *root) -{ - const apr_xml_elem *elem; - - apt_log(APT_LOG_MARK,APT_PRIO_DEBUG,"Loading Properties"); - for(elem = root->first_child; elem; elem = elem->next) { - apt_log(APT_LOG_MARK,APT_PRIO_DEBUG,"Loading Element <%s>",elem->name); - if(strcasecmp(elem->name,"ip") == 0) { - loader->ip = unimrcp_client_ip_address_get(loader,elem,DEFAULT_IP_ADDRESS); - apt_log(APT_LOG_MARK,APT_PRIO_INFO,"Set Property ip:%s",loader->ip); - } - else if(strcasecmp(elem->name,"ext-ip") == 0) { - loader->ext_ip = unimrcp_client_ip_address_get(loader,elem,DEFAULT_IP_ADDRESS); - apt_log(APT_LOG_MARK,APT_PRIO_INFO,"Set Property ext-ip:%s",loader->ext_ip); - } - else if(strcasecmp(elem->name,"server-ip") == 0) { - loader->server_ip = unimrcp_client_ip_address_get(loader,elem,DEFAULT_IP_ADDRESS); - apt_log(APT_LOG_MARK,APT_PRIO_INFO,"Set Property server-ip:%s",loader->server_ip); - } - else { - apt_log(APT_LOG_MARK,APT_PRIO_WARNING,"Unknown Element <%s>",elem->name); - } - } - - if(!loader->ip) { - loader->ip = DEFAULT_IP_ADDRESS; - } - if(!loader->server_ip) { - loader->server_ip = loader->ip; - } - return TRUE; -} - -/** Load components */ -static apt_bool_t unimrcp_client_components_load(unimrcp_client_loader_t *loader, const apr_xml_elem *root) -{ - const apr_xml_elem *elem; - const apr_xml_attr *id_attr; - const apr_xml_attr *enable_attr; - const char *id; - - /* Create codec manager first (probably it should be loaded from config either) */ - mpf_codec_manager_t *codec_manager = mpf_engine_codec_manager_create(loader->pool); - if(codec_manager) { - mrcp_client_codec_manager_register(loader->client,codec_manager); - } - - apt_log(APT_LOG_MARK,APT_PRIO_DEBUG,"Loading Components"); - for(elem = root->first_child; elem; elem = elem->next) { - if(strcasecmp(elem->name,"resource-factory") == 0) { - unimrcp_client_resource_factory_load(loader,elem); - continue; - } - - /* get common "id" and "enable" attributes */ - if(header_attribs_get(elem,&id_attr,&enable_attr) == FALSE) { - /* invalid id */ - continue; - } - if(is_attr_enabled(enable_attr) == FALSE) { - /* disabled element, just skip it */ - continue; - } - id = apr_pstrdup(loader->pool,id_attr->value); - - if(strcasecmp(elem->name,"sip-uac") == 0) { - unimrcp_client_sip_uac_load(loader,elem,id); - } - else if(strcasecmp(elem->name,"rtsp-uac") == 0) { - unimrcp_client_rtsp_uac_load(loader,elem,id); - } - else if(strcasecmp(elem->name,"mrcpv2-uac") == 0) { - unimrcp_client_mrcpv2_uac_load(loader,elem,id); - } - else if(strcasecmp(elem->name,"media-engine") == 0) { - unimrcp_client_media_engine_load(loader,elem,id); - } - else if(strcasecmp(elem->name,"rtp-factory") == 0) { - unimrcp_client_rtp_factory_load(loader,elem,id); - } - else { - apt_log(APT_LOG_MARK,APT_PRIO_WARNING,"Unknown Element <%s>",elem->name); - } - } - return TRUE; -} - -/** Load settings */ -static apt_bool_t unimrcp_client_settings_load(unimrcp_client_loader_t *loader, const apr_xml_elem *root) -{ - const apr_xml_elem *elem; - const apr_xml_attr *id_attr; - const apr_xml_attr *enable_attr; - const char *id; - - apt_log(APT_LOG_MARK,APT_PRIO_DEBUG,"Loading Settings"); - for(elem = root->first_child; elem; elem = elem->next) { - /* get common "id" and "enable" attributes */ - if(header_attribs_get(elem,&id_attr,&enable_attr) == FALSE) { - /* invalid id */ - continue; - } - if(is_attr_enabled(enable_attr) == FALSE) { - /* disabled element, just skip it */ - continue; - } - id = apr_pstrdup(loader->pool,id_attr->value); - - if(strcasecmp(elem->name,"sip-settings") == 0) { - unimrcp_client_sip_settings_load(loader,elem,id); - } - else if(strcasecmp(elem->name,"rtsp-settings") == 0) { - unimrcp_client_rtsp_settings_load(loader,elem,id); - } - else if(strcasecmp(elem->name,"rtp-settings") == 0) { - unimrcp_client_rtp_settings_load(loader,elem,id); - } - else { - apt_log(APT_LOG_MARK,APT_PRIO_WARNING,"Unknown Element <%s>",elem->name); - } - } - return TRUE; -} - -/** Load profiles */ -static apt_bool_t unimrcp_client_profiles_load(unimrcp_client_loader_t *loader, const apr_xml_elem *root) -{ - const apr_xml_elem *elem; - const apr_xml_attr *id_attr; - const apr_xml_attr *enable_attr; - const apr_xml_attr *tag_attr; - const char *id; - const char *tag; - - apt_log(APT_LOG_MARK,APT_PRIO_DEBUG,"Loading Profiles"); - for(elem = root->first_child; elem; elem = elem->next) { - /* get common "id" and "enable" attributes */ - if(profile_attribs_get(elem,&id_attr,&enable_attr,&tag_attr) == FALSE) { - /* invalid id */ - continue; - } - if(is_attr_enabled(enable_attr) == FALSE) { - /* disabled element, just skip it */ - continue; - } - id = apr_pstrdup(loader->pool,id_attr->value); - tag = tag_attr ? apr_pstrdup(loader->pool,tag_attr->value) : NULL; - - if(strcasecmp(elem->name,"mrcpv2-profile") == 0) { - unimrcp_client_mrcpv2_profile_load(loader,elem,id,tag); - } - else if(strcasecmp(elem->name,"mrcpv1-profile") == 0) { - unimrcp_client_mrcpv1_profile_load(loader,elem,id,tag); - } - else { - apt_log(APT_LOG_MARK,APT_PRIO_WARNING,"Unknown Element <%s>",elem->name); - } - } - return TRUE; -} - -/** Load misc parameters */ -static apt_bool_t unimrcp_client_misc_load(unimrcp_client_loader_t *loader, const apr_xml_elem *root) -{ - const apr_xml_elem *elem; - apt_log(APT_LOG_MARK,APT_PRIO_DEBUG,"Loading Misc Parameters"); - for(elem = root->first_child; elem; elem = elem->next) { - if(strcasecmp(elem->name,"sofiasip-logger") == 0) { - char *logger_list_str; - char *logger_name; - char *state; - apr_xml_attr *attr; - apt_bool_t redirect = FALSE; - const char *loglevel_str = NULL; - for(attr = elem->attr; attr; attr = attr->next) { - if(strcasecmp(attr->name,"redirect") == 0) { - if(attr->value && strcasecmp(attr->value,"true") == 0) - redirect = TRUE; - } - else if(strcasecmp(attr->name,"loglevel") == 0) { - loglevel_str = attr->value; - } - } - - logger_list_str = apr_pstrdup(loader->pool,cdata_text_get(elem)); - do { - logger_name = apr_strtok(logger_list_str, ",", &state); - if(logger_name) { - mrcp_sofiasip_client_logger_init(logger_name,loglevel_str,redirect); - } - logger_list_str = NULL; /* make sure we pass NULL on subsequent calls of apr_strtok() */ - } - while(logger_name); - } - else { - apt_log(APT_LOG_MARK,APT_PRIO_WARNING,"Unknown Element <%s>",elem->name); - } - } - return TRUE; -} - -/** Parse XML document */ -static apr_xml_doc* unimrcp_client_doc_parse(const char *file_path, apr_pool_t *pool) -{ - apr_xml_parser *parser = NULL; - apr_xml_doc *xml_doc = NULL; - apr_file_t *fd = NULL; - apr_status_t rv; - - apt_log(APT_LOG_MARK,APT_PRIO_NOTICE,"Open Config File [%s]",file_path); - rv = apr_file_open(&fd,file_path,APR_READ|APR_BINARY,0,pool); - if(rv != APR_SUCCESS) { - apt_log(APT_LOG_MARK,APT_PRIO_WARNING,"Failed to Open Config File [%s]",file_path); - return NULL; - } - - rv = apr_xml_parse_file(pool,&parser,&xml_doc,fd,XML_FILE_BUFFER_LENGTH); - if(rv != APR_SUCCESS) { - apt_log(APT_LOG_MARK,APT_PRIO_WARNING,"Failed to Parse Config File [%s]",file_path); - xml_doc = NULL; - } - - apr_file_close(fd); - return xml_doc; -} - -/** Process parsed XML document */ -static apt_bool_t unimrcp_client_doc_process(unimrcp_client_loader_t *loader, const char *dir_path, apr_xml_doc *doc, apr_pool_t *pool) -{ - const apr_xml_elem *elem; - const apr_xml_elem *root; - const apr_xml_attr *attr; - const char *version = NULL; - const char *subfolder = NULL; - - if(!doc) { - return FALSE; - } - - root = doc->root; - - /* Match document name */ - if(!root || strcasecmp(root->name,"unimrcpclient") != 0) { - apt_log(APT_LOG_MARK,APT_PRIO_WARNING,"Unknown Document <%s>",root ? root->name : "null"); - return FALSE; - } - - /* Read attributes */ - for(attr = root->attr; attr; attr = attr->next) { - if(strcasecmp(attr->name,"version") == 0) { - version = attr->value; - } - else if(strcasecmp(attr->name,"subfolder") == 0) { - subfolder = attr->value; - } - } - - /* Check version number first */ - if(!version) { - apt_log(APT_LOG_MARK,APT_PRIO_WARNING,"Unknown Version"); - return FALSE; - } - - loader->doc = doc; - - /* Navigate through document */ - for(elem = root->first_child; elem; elem = elem->next) { - if(strcasecmp(elem->name,"properties") == 0) { - unimrcp_client_properties_load(loader,elem); - } - else if(strcasecmp(elem->name,"components") == 0) { - unimrcp_client_components_load(loader,elem); - } - else if(strcasecmp(elem->name,"settings") == 0) { - unimrcp_client_settings_load(loader,elem); - } - else if(strcasecmp(elem->name,"profiles") == 0) { - unimrcp_client_profiles_load(loader,elem); - } - else if(strcasecmp(elem->name,"misc") == 0) { - unimrcp_client_misc_load(loader,elem); - } - else { - apt_log(APT_LOG_MARK,APT_PRIO_WARNING,"Unknown Element <%s>",elem->name); - } - } - - if(subfolder && *subfolder != '\0') { - apr_dir_t *dir; - apr_finfo_t finfo; - apr_status_t rv; - char *subdir_path; - - if (!dir_path) { - apt_log(APT_LOG_MARK,APT_PRIO_WARNING,"Attempt to Process Subdirectory when " - "Creating from Config String"); - return TRUE; - } - - if(apr_filepath_merge(&subdir_path,dir_path,subfolder,APR_FILEPATH_NATIVE,pool) == APR_SUCCESS) { - apt_log(APT_LOG_MARK,APT_PRIO_INFO,"Enter Directory [%s]",subdir_path); - rv = apr_dir_open(&dir,subdir_path,pool); - if(rv == APR_SUCCESS) { - while(apr_dir_read(&finfo, APR_FINFO_NAME, dir) == APR_SUCCESS) { - if(apr_fnmatch("*.xml", finfo.name, 0) == APR_SUCCESS) { - unimrcp_client_load(loader,subdir_path,finfo.name); - } - } - apr_dir_close(dir); - apt_log(APT_LOG_MARK,APT_PRIO_INFO,"Leave Directory [%s]",dir_path); - } - else { - apt_log(APT_LOG_MARK,APT_PRIO_WARNING,"No Such Directory %s",dir_path); - } - } - } - return TRUE; -} - -/** Load UniMRCP client from file */ -static apt_bool_t unimrcp_client_load(unimrcp_client_loader_t *loader, const char *dir_path, const char *file_name) -{ - apr_pool_t *pool = loader->pool; - apr_xml_doc *doc; - char *file_path; - - if(!dir_path || !file_name) { - return FALSE; - } - - if(apr_filepath_merge(&file_path,dir_path,file_name,APR_FILEPATH_NATIVE,pool) != APR_SUCCESS) { - return FALSE; - } - - /* Parse XML document */ - doc = unimrcp_client_doc_parse(file_path,pool); - return unimrcp_client_doc_process(loader, dir_path, doc, pool); -} - -/** Read configuration from string */ -static apt_bool_t unimrcp_client_load2(unimrcp_client_loader_t *loader, const char *xmlconfig) -{ - apr_pool_t *pool = loader->pool; - apr_xml_parser *parser; - apr_xml_doc *xml_doc; - char errbuf[4096]; - apr_status_t rv; - - parser = apr_xml_parser_create(pool); - if (!parser) return FALSE; - rv = apr_xml_parser_feed(parser, xmlconfig, strlen(xmlconfig)); - if (rv != APR_SUCCESS) { - apr_xml_parser_geterror(parser, errbuf, sizeof(errbuf)); - apt_log(APT_LOG_MARK, APT_PRIO_ERROR, "Error parsing XML configuration: %d %pm: %s", - rv, &rv, errbuf); - return FALSE; - } - rv = apr_xml_parser_done(parser, &xml_doc); - if (rv != APR_SUCCESS) { - apr_xml_parser_geterror(parser, errbuf, sizeof(errbuf)); - apt_log(APT_LOG_MARK, APT_PRIO_ERROR, "Error parsing XML configuration: %d %pm: %s", - rv, &rv, errbuf); - return FALSE; - } - return unimrcp_client_doc_process(loader, NULL, xml_doc, pool); -} diff --git a/libs/unimrcp/platforms/libunimrcp-server/Makefile.am b/libs/unimrcp/platforms/libunimrcp-server/Makefile.am deleted file mode 100644 index 1226d61813e..00000000000 --- a/libs/unimrcp/platforms/libunimrcp-server/Makefile.am +++ /dev/null @@ -1,11 +0,0 @@ -AM_CPPFLAGS = -I$(top_srcdir)/platforms/libunimrcp-server/include \ - $(UNIMRCP_SERVERLIB_INCLUDES) - -lib_LTLIBRARIES = libunimrcpserver.la - -include_HEADERS = include/unimrcp_server.h -libunimrcpserver_la_SOURCES = src/unimrcp_server.c -libunimrcpserver_la_LIBADD = $(UNIMRCP_SERVERLIB_LIBS) -libunimrcpserver_la_LDFLAGS = $(UNIMRCP_SERVERLIB_OPTS) - -include $(top_srcdir)/build/rules/uniserverlib.am diff --git a/libs/unimrcp/platforms/libunimrcp-server/include/unimrcp_server.h b/libs/unimrcp/platforms/libunimrcp-server/include/unimrcp_server.h deleted file mode 100644 index aaf81d387ea..00000000000 --- a/libs/unimrcp/platforms/libunimrcp-server/include/unimrcp_server.h +++ /dev/null @@ -1,45 +0,0 @@ -/* - * Copyright 2008-2014 Arsen Chaloyan - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - * - * $Id: unimrcp_server.h 2136 2014-07-04 06:33:36Z achaloyan@gmail.com $ - */ - -#ifndef UNIMRCP_SERVER_H -#define UNIMRCP_SERVER_H - -/** - * @file unimrcp_server.h - * @brief UniMRCP Server - */ - -#include "mrcp_server.h" - -APT_BEGIN_EXTERN_C - -/** - * Start UniMRCP server. - * @param dir_layout the dir layout structure - */ -MRCP_DECLARE(mrcp_server_t*) unimrcp_server_start(apt_dir_layout_t *dir_layout); - -/** - * Shutdown UniMRCP server. - * @param server the MRCP server to shutdown - */ -MRCP_DECLARE(apt_bool_t) unimrcp_server_shutdown(mrcp_server_t *server); - -APT_END_EXTERN_C - -#endif /* UNIMRCP_SERVER_H */ diff --git a/libs/unimrcp/platforms/libunimrcp-server/libunimrcpserver.vcproj b/libs/unimrcp/platforms/libunimrcp-server/libunimrcpserver.vcproj deleted file mode 100644 index 0f5b68f4e91..00000000000 --- a/libs/unimrcp/platforms/libunimrcp-server/libunimrcpserver.vcproj +++ /dev/null @@ -1,272 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/libs/unimrcp/platforms/libunimrcp-server/libunimrcpserver.vcxproj b/libs/unimrcp/platforms/libunimrcp-server/libunimrcpserver.vcxproj deleted file mode 100644 index a4ba6c49436..00000000000 --- a/libs/unimrcp/platforms/libunimrcp-server/libunimrcpserver.vcxproj +++ /dev/null @@ -1,140 +0,0 @@ - - - - - Debug - Win32 - - - Debug - x64 - - - Release - Win32 - - - Release - x64 - - - - {C98AF157-352E-4737-BD30-A24E2647F5AE} - libunimrcpserver - Win32Proj - - - - StaticLibrary - Unicode - true - - - StaticLibrary - Unicode - - - StaticLibrary - Unicode - true - - - StaticLibrary - Unicode - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - <_ProjectFileVersion>10.0.30319.1 - AllRules.ruleset - - - AllRules.ruleset - - - AllRules.ruleset - - - AllRules.ruleset - - - - - - $(ProjectRootDir)modules\mrcp-sofiasip\include;$(ProjectRootDir)modules\mrcp-unirtsp\include;%(AdditionalIncludeDirectories) - - - - - $(ProjectRootDir)modules\mrcp-sofiasip\include;$(ProjectRootDir)modules\mrcp-unirtsp\include;%(AdditionalIncludeDirectories) - - - - - X64 - - - $(ProjectRootDir)modules\mrcp-sofiasip\include;$(ProjectRootDir)modules\mrcp-unirtsp\include;%(AdditionalIncludeDirectories) - ProgramDatabase - - - - - X64 - - - $(ProjectRootDir)modules\mrcp-sofiasip\include;$(ProjectRootDir)modules\mrcp-unirtsp\include;%(AdditionalIncludeDirectories) - - - - - - - - - - - - - {18b1f35a-10f8-4287-9b37-2d10501b0b38} - false - - - {746f3632-5bb2-4570-9453-31d6d58a7d8e} - false - - - {deb01acb-d65f-4a62-aed9-58c1054499e9} - false - - - - - - \ No newline at end of file diff --git a/libs/unimrcp/platforms/libunimrcp-server/libunimrcpserver.vcxproj.filters b/libs/unimrcp/platforms/libunimrcp-server/libunimrcpserver.vcxproj.filters deleted file mode 100644 index 67b6af97a6c..00000000000 --- a/libs/unimrcp/platforms/libunimrcp-server/libunimrcpserver.vcxproj.filters +++ /dev/null @@ -1,29 +0,0 @@ - - - - - {93995380-89BD-4b04-88EB-625FBE52EBFB} - h;hpp;hxx;hm;inl;inc;xsd - - - {c164436d-b3de-474f-99bc-6b2ca1a4c879} - cpp;c;cc;cxx;def;odl;idl;hpj;bat;asm;asmx - - - - - include - - - include - - - include - - - - - src - - - \ No newline at end of file diff --git a/libs/unimrcp/platforms/libunimrcp-server/src/unimrcp_server.c b/libs/unimrcp/platforms/libunimrcp-server/src/unimrcp_server.c deleted file mode 100644 index 90f1805412c..00000000000 --- a/libs/unimrcp/platforms/libunimrcp-server/src/unimrcp_server.c +++ /dev/null @@ -1,1251 +0,0 @@ -/* - * Copyright 2008-2014 Arsen Chaloyan - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - * - * $Id: unimrcp_server.c 2252 2014-11-21 02:45:15Z achaloyan@gmail.com $ - */ - -#include -#include -#include -#include "uni_version.h" -#include "uni_revision.h" -#include "unimrcp_server.h" -#include "mrcp_resource_loader.h" -#include "mpf_engine.h" -#include "mpf_codec_manager.h" -#include "mpf_rtp_termination_factory.h" -#include "mrcp_sofiasip_server_agent.h" -#include "mrcp_unirtsp_server_agent.h" -#include "mrcp_server_connection.h" -#include "apt_net.h" -#include "apt_log.h" - -#define CONF_FILE_NAME "unimrcpserver.xml" -#ifdef WIN32 -#define DEFAULT_PLUGIN_EXT "dll" -#else -#define DEFAULT_PLUGIN_EXT "so" -#endif - -#define DEFAULT_IP_ADDRESS "127.0.0.1" -#define DEFAULT_SIP_PORT 8060 -#define DEFAULT_RTSP_PORT 1554 -#define DEFAULT_MRCP_PORT 1544 -#define DEFAULT_RTP_PORT_MIN 5000 -#define DEFAULT_RTP_PORT_MAX 6000 - -#define DEFAULT_SOFIASIP_UA_NAME "UniMRCP SofiaSIP" -#define DEFAULT_SDP_ORIGIN "UniMRCPServer" - -#define XML_FILE_BUFFER_LENGTH 16000 - -/** UniMRCP server loader */ -typedef struct unimrcp_server_loader_t unimrcp_server_loader_t; - -/** UniMRCP server loader */ -struct unimrcp_server_loader_t { - /** MRCP server */ - mrcp_server_t *server; - /** Directory layout */ - apt_dir_layout_t *dir_layout; - /** XML document */ - apr_xml_doc *doc; - /** Pool to allocate memory from */ - apr_pool_t *pool; - - /** Default IP address (named property) */ - const char *ip; - /** Default external (NAT) IP address (named property) */ - const char *ext_ip; - - /** Implicitly detected, cached IP address */ - const char *auto_ip; -}; - -static apt_bool_t unimrcp_server_load(mrcp_server_t *mrcp_server, apt_dir_layout_t *dir_layout, apr_pool_t *pool); - -/** Start UniMRCP server */ -MRCP_DECLARE(mrcp_server_t*) unimrcp_server_start(apt_dir_layout_t *dir_layout) -{ - apr_pool_t *pool; - mrcp_server_t *server; - - if(!dir_layout) { - return NULL; - } - - apt_log(APT_LOG_MARK,APT_PRIO_NOTICE,"UniMRCP Server ["UNI_VERSION_STRING"] [r"UNI_REVISION_STRING"]"); - apt_log(APT_LOG_MARK,APT_PRIO_INFO,"APR ["APR_VERSION_STRING"]"); - server = mrcp_server_create(dir_layout); - if(!server) { - return NULL; - } - pool = mrcp_server_memory_pool_get(server); - if(!pool) { - return NULL; - } - - if(unimrcp_server_load(server,dir_layout,pool) == FALSE) { - apt_log(APT_LOG_MARK,APT_PRIO_WARNING,"Failed to Load UniMRCP Server Document"); - } - - mrcp_server_start(server); - return server; -} - -/** Shutdown UniMRCP server */ -MRCP_DECLARE(apt_bool_t) unimrcp_server_shutdown(mrcp_server_t *server) -{ - if(mrcp_server_shutdown(server) == FALSE) { - return FALSE; - } - return mrcp_server_destroy(server); -} - - -/** Check whether specified attribute is valid */ -static APR_INLINE apt_bool_t is_attr_valid(const apr_xml_attr *attr) -{ - return (attr && attr->value && *attr->value != '\0'); -} - -/** Check whether specified attribute is enabled (true) */ -static APR_INLINE apt_bool_t is_attr_enabled(const apr_xml_attr *attr) -{ - if(attr && strcasecmp(attr->value,"false") == 0) { - return FALSE; - } - return TRUE; -} - -/** Check whether cdata is valid */ -static APR_INLINE apt_bool_t is_cdata_valid(const apr_xml_elem *elem) -{ - return (elem->first_cdata.first && elem->first_cdata.first->text); -} - -/** Get text cdata */ -static APR_INLINE const char* cdata_text_get(const apr_xml_elem *elem) -{ - return elem->first_cdata.first->text; -} - -/** Get boolean cdata */ -static APR_INLINE apt_bool_t cdata_bool_get(const apr_xml_elem *elem) -{ - return (strcasecmp(elem->first_cdata.first->text,"true") == 0) ? TRUE : FALSE; -} - -/** Copy cdata */ -static APR_INLINE char* cdata_copy(const apr_xml_elem *elem, apr_pool_t *pool) -{ - return apr_pstrdup(pool,elem->first_cdata.first->text); -} - -/** Get generic "id" and "enable" attributes */ -static apt_bool_t header_attribs_get(const apr_xml_elem *elem, const apr_xml_attr **id, const apr_xml_attr **enable) -{ - const apr_xml_attr *attr; - if(!id || !enable) { - return FALSE; - } - - *id = NULL; - *enable = NULL; - for(attr = elem->attr; attr; attr = attr->next) { - if(strcasecmp(attr->name,"id") == 0) { - *id = attr; - } - else if(strcasecmp(attr->name,"enable") == 0) { - *enable = attr; - } - } - - if(is_attr_valid(*id) == FALSE) { - apt_log(APT_LOG_MARK,APT_PRIO_WARNING,"Missing Required Attribute in Element <%s>",elem->name); - return FALSE; - } - return TRUE; -} - -/** Get generic "name" and "value" attributes */ -static apt_bool_t name_value_attribs_get(const apr_xml_elem *elem, const apr_xml_attr **name, const apr_xml_attr **value) -{ - const apr_xml_attr *attr; - if(!name || !value) { - return FALSE; - } - - *name = NULL; - *value = NULL; - for(attr = elem->attr; attr; attr = attr->next) { - if(strcasecmp(attr->name,"name") == 0) { - *name = attr; - } - else if(strcasecmp(attr->name,"value") == 0) { - *value = attr; - } - } - return (*name && *value) ? TRUE : FALSE; -} - -static char* unimrcp_server_ip_address_get(unimrcp_server_loader_t *loader, const apr_xml_elem *elem) -{ - const apr_xml_attr *attr = NULL; - for(attr = elem->attr; attr; attr = attr->next) { - if(strcasecmp(attr->name,"type") == 0) { - break; - } - } - - if(attr && strcasecmp(attr->value,"auto") == 0) { - /* implicitly detect IP address, if not already detected */ - if(!loader->auto_ip) { - char *auto_addr = DEFAULT_IP_ADDRESS; - apt_log(APT_LOG_MARK,APT_PRIO_DEBUG,"Detecting IP Address"); - apt_ip_get(&auto_addr,loader->pool); - loader->auto_ip = auto_addr; - } - return apr_pstrdup(loader->pool,loader->auto_ip); - } - else if(attr && strcasecmp(attr->value,"iface") == 0) { - /* get IP address by network interface name */ - char *ip_addr = DEFAULT_IP_ADDRESS; - if(is_cdata_valid(elem) == TRUE) { - const char *iface_name = cdata_text_get(elem); - apt_log(APT_LOG_MARK,APT_PRIO_DEBUG,"Get IP Address by Interface [%s]", iface_name); - apt_ip_get_by_iface(iface_name,&ip_addr,loader->pool); - } - return ip_addr; - } - - if(is_cdata_valid(elem)) { - /* use provided IP address */ - return cdata_copy(elem,loader->pool); - } - - /* use default IP address */ - return apr_pstrdup(loader->pool,loader->ip); -} - -/** Load resource */ -static apt_bool_t unimrcp_server_resource_load(mrcp_resource_loader_t *resource_loader, const apr_xml_elem *root, apr_pool_t *pool) -{ - apt_str_t resource_class; - const apr_xml_attr *id_attr; - const apr_xml_attr *enable_attr; - apt_string_reset(&resource_class); - - if(header_attribs_get(root,&id_attr,&enable_attr) == FALSE) { - return FALSE; - } - - if(is_attr_enabled(enable_attr) == FALSE) { - return TRUE; - } - - apt_string_set(&resource_class,id_attr->value); - return mrcp_resource_load(resource_loader,&resource_class); -} - -/** Load resource factory */ -static apt_bool_t unimrcp_server_resource_factory_load(unimrcp_server_loader_t *loader, const apr_xml_elem *root) -{ - const apr_xml_elem *elem; - mrcp_resource_factory_t *resource_factory; - mrcp_resource_loader_t *resource_loader = mrcp_resource_loader_create(FALSE,loader->pool); - if(!resource_loader) { - return FALSE; - } - - apt_log(APT_LOG_MARK,APT_PRIO_DEBUG,"Loading Resources"); - for(elem = root->first_child; elem; elem = elem->next) { - if(strcasecmp(elem->name,"resource") == 0) { - unimrcp_server_resource_load(resource_loader,elem,loader->pool); - } - else { - apt_log(APT_LOG_MARK,APT_PRIO_WARNING,"Unknown Element <%s>",elem->name); - } - } - - resource_factory = mrcp_resource_factory_get(resource_loader); - return mrcp_server_resource_factory_register(loader->server,resource_factory); -} - -/** Load SofiaSIP signaling agent */ -static apt_bool_t unimrcp_server_sip_uas_load(unimrcp_server_loader_t *loader, const apr_xml_elem *root, const char *id) -{ - const apr_xml_elem *elem; - mrcp_sig_agent_t *agent; - mrcp_sofia_server_config_t *config; - - config = mrcp_sofiasip_server_config_alloc(loader->pool); - config->local_port = DEFAULT_SIP_PORT; - config->user_agent_name = DEFAULT_SOFIASIP_UA_NAME; - config->origin = DEFAULT_SDP_ORIGIN; - - apt_log(APT_LOG_MARK,APT_PRIO_DEBUG,"Loading SofiaSIP Agent <%s>",id); - for(elem = root->first_child; elem; elem = elem->next) { - apt_log(APT_LOG_MARK,APT_PRIO_DEBUG,"Loading Element <%s>",elem->name); - if(strcasecmp(elem->name,"sip-ip") == 0) { - config->local_ip = unimrcp_server_ip_address_get(loader,elem); - } - else if(strcasecmp(elem->name,"sip-ext-ip") == 0) { - config->ext_ip = unimrcp_server_ip_address_get(loader,elem); - } - else if(strcasecmp(elem->name,"sip-port") == 0) { - if(is_cdata_valid(elem) == TRUE) { - config->local_port = (apr_port_t)atol(cdata_text_get(elem)); - } - } - else if(strcasecmp(elem->name,"sip-transport") == 0) { - if(is_cdata_valid(elem) == TRUE) { - config->transport = cdata_copy(elem,loader->pool); - } - } - else if(strcasecmp(elem->name,"ua-name") == 0) { - if(is_cdata_valid(elem) == TRUE) { - const apr_xml_attr *attr = NULL; - for(attr = elem->attr; attr; attr = attr->next) { - if(strcasecmp(attr->name,"appendversion") == 0) { - break; - } - } - if(is_attr_enabled(attr)) { - config->user_agent_name = apr_psprintf(loader->pool,"%s "UNI_VERSION_STRING,cdata_text_get(elem)); - } - else { - config->user_agent_name = cdata_copy(elem,loader->pool); - } - } - } - else if(strcasecmp(elem->name,"sdp-origin") == 0) { - if(is_cdata_valid(elem) == TRUE) { - config->origin = cdata_copy(elem,loader->pool); - } - } - else if(strcasecmp(elem->name,"force-destination") == 0) { - if(is_cdata_valid(elem) == TRUE) { - config->force_destination = cdata_bool_get(elem); - } - } - else if(strcasecmp(elem->name,"sip-t1") == 0) { - if(is_cdata_valid(elem) == TRUE) { - config->sip_t1 = atol(cdata_text_get(elem)); - } - } - else if(strcasecmp(elem->name,"sip-t2") == 0) { - if(is_cdata_valid(elem) == TRUE) { - config->sip_t2 = atol(cdata_text_get(elem)); - } - } - else if(strcasecmp(elem->name,"sip-t4") == 0) { - if(is_cdata_valid(elem) == TRUE) { - config->sip_t4 = atol(cdata_text_get(elem)); - } - } - else if(strcasecmp(elem->name,"sip-t1x64") == 0) { - if(is_cdata_valid(elem) == TRUE) { - config->sip_t1x64 = atol(cdata_text_get(elem)); - } - } - else if(strcasecmp(elem->name,"sip-message-output") == 0) { - if(is_cdata_valid(elem) == TRUE) { - config->tport_log = cdata_bool_get(elem); - } - } - else if(strcasecmp(elem->name,"sip-message-dump") == 0) { - if(is_cdata_valid(elem) == TRUE) { - const char *root_path; - const char *path = cdata_text_get(elem); - if(loader->dir_layout && apr_filepath_root(&root_path,&path,0,loader->pool) == APR_ERELATIVE) - config->tport_dump_file = apt_dir_layout_path_compose( - loader->dir_layout, - APT_LAYOUT_LOG_DIR, - path, - loader->pool); - else - config->tport_dump_file = cdata_copy(elem,loader->pool); - } - } - else { - apt_log(APT_LOG_MARK,APT_PRIO_WARNING,"Unknown Element <%s>",elem->name); - } - } - - if(!config->local_ip) { - /* use default IP address if not specified */ - config->local_ip = apr_pstrdup(loader->pool,loader->ip); - } - if(!config->ext_ip && loader->ext_ip) { - /* use default ext IP address if not specified */ - config->ext_ip = apr_pstrdup(loader->pool,loader->ext_ip); - } - - agent = mrcp_sofiasip_server_agent_create(id,config,loader->pool); - return mrcp_server_signaling_agent_register(loader->server,agent); -} - -/** Load UniRTSP signaling agent */ -static apt_bool_t unimrcp_server_rtsp_uas_load(unimrcp_server_loader_t *loader, const apr_xml_elem *root, const char *id) -{ - const apr_xml_elem *elem; - mrcp_sig_agent_t *agent; - rtsp_server_config_t *config; - - config = mrcp_unirtsp_server_config_alloc(loader->pool); - config->origin = DEFAULT_SDP_ORIGIN; - - apt_log(APT_LOG_MARK,APT_PRIO_DEBUG,"Loading UniRTSP Agent <%s>",id); - for(elem = root->first_child; elem; elem = elem->next) { - apt_log(APT_LOG_MARK,APT_PRIO_DEBUG,"Loading Element <%s>",elem->name); - if(strcasecmp(elem->name,"rtsp-ip") == 0) { - config->local_ip = unimrcp_server_ip_address_get(loader,elem); - } - else if(strcasecmp(elem->name,"rtsp-port") == 0) { - if(is_cdata_valid(elem) == TRUE) { - config->local_port = (apr_port_t)atol(cdata_text_get(elem)); - } - } - else if(strcasecmp(elem->name,"sdp-origin") == 0) { - if(is_cdata_valid(elem) == TRUE) { - config->origin = cdata_copy(elem,loader->pool); - } - } - else if(strcasecmp(elem->name,"max-connection-count") == 0) { - if(is_cdata_valid(elem) == TRUE) { - config->max_connection_count = atol(cdata_text_get(elem)); - } - } - else if(strcasecmp(elem->name,"force-destination") == 0) { - if(is_cdata_valid(elem) == TRUE) { - config->force_destination = cdata_bool_get(elem); - } - } - else if(strcasecmp(elem->name,"resource-map") == 0) { - const apr_xml_attr *name_attr; - const apr_xml_attr *value_attr; - const apr_xml_elem *child_elem; - apt_log(APT_LOG_MARK,APT_PRIO_DEBUG,"Loading Resource Map"); - for(child_elem = elem->first_child; child_elem; child_elem = child_elem->next) { - if(name_value_attribs_get(child_elem,&name_attr,&value_attr) == TRUE) { - apt_log(APT_LOG_MARK,APT_PRIO_DEBUG,"Loading Param %s:%s",name_attr->value,value_attr->value); - apr_table_set(config->resource_map,name_attr->value,value_attr->value); - } - } - } - else { - apt_log(APT_LOG_MARK,APT_PRIO_WARNING,"Unknown Element <%s>",elem->name); - } - } - - if(!config->local_ip) { - /* use default IP address if not specified */ - config->local_ip = apr_pstrdup(loader->pool,loader->ip); - } - - agent = mrcp_unirtsp_server_agent_create(id,config,loader->pool); - return mrcp_server_signaling_agent_register(loader->server,agent); -} - -/** Load MRCPv2 connection agent */ -static apt_bool_t unimrcp_server_mrcpv2_uas_load(unimrcp_server_loader_t *loader, const apr_xml_elem *root, const char *id) -{ - const apr_xml_elem *elem; - mrcp_connection_agent_t *agent; - char *mrcp_ip = NULL; - apr_port_t mrcp_port = DEFAULT_MRCP_PORT; - apr_size_t max_connection_count = 100; - apt_bool_t force_new_connection = FALSE; - apr_size_t rx_buffer_size = 0; - apr_size_t tx_buffer_size = 0; - - apt_log(APT_LOG_MARK,APT_PRIO_DEBUG,"Loading MRCPv2 Agent <%s>",id); - for(elem = root->first_child; elem; elem = elem->next) { - apt_log(APT_LOG_MARK,APT_PRIO_DEBUG,"Loading Element <%s>",elem->name); - if(strcasecmp(elem->name,"mrcp-ip") == 0) { - mrcp_ip = unimrcp_server_ip_address_get(loader,elem); - } - else if(strcasecmp(elem->name,"mrcp-port") == 0) { - if(is_cdata_valid(elem) == TRUE) { - mrcp_port = (apr_port_t)atol(cdata_text_get(elem)); - } - } - else if(strcasecmp(elem->name,"max-connection-count") == 0) { - if(is_cdata_valid(elem) == TRUE) { - max_connection_count = atol(cdata_text_get(elem)); - } - } - else if(strcasecmp(elem->name,"force-new-connection") == 0) { - if(is_cdata_valid(elem) == TRUE) { - force_new_connection = cdata_bool_get(elem); - } - } - else if(strcasecmp(elem->name,"rx-buffer-size") == 0) { - if(is_cdata_valid(elem) == TRUE) { - rx_buffer_size = atol(cdata_text_get(elem)); - } - } - else if(strcasecmp(elem->name,"tx-buffer-size") == 0) { - if(is_cdata_valid(elem) == TRUE) { - tx_buffer_size = atol(cdata_text_get(elem)); - } - } - else { - apt_log(APT_LOG_MARK,APT_PRIO_WARNING,"Unknown Element <%s>",elem->name); - } - } - - if(!mrcp_ip) { - /* use default IP address if not specified */ - mrcp_ip = apr_pstrdup(loader->pool,loader->ip); - } - - agent = mrcp_server_connection_agent_create(id,mrcp_ip,mrcp_port,max_connection_count,force_new_connection,loader->pool); - if(agent) { - if(rx_buffer_size) { - mrcp_server_connection_rx_size_set(agent,rx_buffer_size); - } - if(tx_buffer_size) { - mrcp_server_connection_tx_size_set(agent,tx_buffer_size); - } - } - return mrcp_server_connection_agent_register(loader->server,agent); -} - -/** Load media engine */ -static apt_bool_t unimrcp_server_media_engine_load(unimrcp_server_loader_t *loader, const apr_xml_elem *root, const char *id) -{ - const apr_xml_elem *elem; - mpf_engine_t *media_engine; - unsigned long realtime_rate = 1; - - apt_log(APT_LOG_MARK,APT_PRIO_DEBUG,"Loading Media Engine <%s>",id); - for(elem = root->first_child; elem; elem = elem->next) { - apt_log(APT_LOG_MARK,APT_PRIO_DEBUG,"Loading Element <%s>",elem->name); - if(strcasecmp(elem->name,"realtime-rate") == 0) { - if(is_cdata_valid(elem) == TRUE) { - realtime_rate = atol(cdata_text_get(elem)); - } - } - else { - apt_log(APT_LOG_MARK,APT_PRIO_WARNING,"Unknown Element <%s>",elem->name); - } - } - - media_engine = mpf_engine_create(id,loader->pool); - if(media_engine) { - mpf_engine_scheduler_rate_set(media_engine,realtime_rate); - } - return mrcp_server_media_engine_register(loader->server,media_engine); -} - -/** Load RTP factory */ -static apt_bool_t unimrcp_server_rtp_factory_load(unimrcp_server_loader_t *loader, const apr_xml_elem *root, const char *id) -{ - const apr_xml_elem *elem; - char *rtp_ip = NULL; - char *rtp_ext_ip = NULL; - mpf_termination_factory_t *rtp_factory; - mpf_rtp_config_t *rtp_config; - - rtp_config = mpf_rtp_config_alloc(loader->pool); - rtp_config->rtp_port_min = DEFAULT_RTP_PORT_MIN; - rtp_config->rtp_port_max = DEFAULT_RTP_PORT_MAX; - - apt_log(APT_LOG_MARK,APT_PRIO_DEBUG,"Loading RTP Factory <%s>",id); - for(elem = root->first_child; elem; elem = elem->next) { - apt_log(APT_LOG_MARK,APT_PRIO_DEBUG,"Loading Element <%s>",elem->name); - if(strcasecmp(elem->name,"rtp-ip") == 0) { - rtp_ip = unimrcp_server_ip_address_get(loader,elem); - } - else if(strcasecmp(elem->name,"rtp-ext-ip") == 0) { - rtp_ext_ip = unimrcp_server_ip_address_get(loader,elem); - } - else if(strcasecmp(elem->name,"rtp-port-min") == 0) { - if(is_cdata_valid(elem) == TRUE) { - rtp_config->rtp_port_min = (apr_port_t)atol(cdata_text_get(elem)); - } - } - else if(strcasecmp(elem->name,"rtp-port-max") == 0) { - if(is_cdata_valid(elem) == TRUE) { - rtp_config->rtp_port_max = (apr_port_t)atol(cdata_text_get(elem)); - } - } - else { - apt_log(APT_LOG_MARK,APT_PRIO_WARNING,"Unknown Element <%s>",elem->name); - } - } - - if(rtp_ip) { - apt_string_set(&rtp_config->ip,rtp_ip); - } - else { - apt_string_set(&rtp_config->ip,loader->ip); - } - if(rtp_ext_ip) { - apt_string_set(&rtp_config->ext_ip,rtp_ext_ip); - } - else if(loader->ext_ip){ - apt_string_set(&rtp_config->ext_ip,loader->ext_ip); - } - - rtp_factory = mpf_rtp_termination_factory_create(rtp_config,loader->pool); - return mrcp_server_rtp_factory_register(loader->server,rtp_factory,id); -} - -/** Load plugin */ -static apt_bool_t unimrcp_server_plugin_load(unimrcp_server_loader_t *loader, const apr_xml_elem *root) -{ - mrcp_engine_t *engine; - mrcp_engine_config_t *config; - char *plugin_file_name; - char *plugin_path; - const char *plugin_id = NULL; - const char *plugin_name = NULL; - const char *plugin_ext = NULL; - apt_bool_t plugin_enabled = TRUE; - const apr_xml_attr *attr; - for(attr = root->attr; attr; attr = attr->next) { - if(strcasecmp(attr->name,"id") == 0) { - plugin_id = apr_pstrdup(loader->pool,attr->value); - } - else if(strcasecmp(attr->name,"name") == 0) { - plugin_name = attr->value; - } - else if(strcasecmp(attr->name,"ext") == 0) { - plugin_ext = attr->value; - } - else if(strcasecmp(attr->name,"enable") == 0) { - plugin_enabled = is_attr_enabled(attr); - } - else { - apt_log(APT_LOG_MARK,APT_PRIO_WARNING,"Unknown Attribute <%s>",attr->name); - } - } - - if(!plugin_id || !plugin_name) { - apt_log(APT_LOG_MARK,APT_PRIO_WARNING,"Missing plugin id or name"); - return FALSE; - } - - if(!plugin_enabled) { - /* disabled plugin, just skip it */ - return TRUE; - } - - if(!plugin_ext) { - plugin_ext = DEFAULT_PLUGIN_EXT; - } - - plugin_file_name = apr_psprintf(loader->pool,"%s.%s",plugin_name,plugin_ext); - plugin_path = apt_dir_layout_path_compose(loader->dir_layout,APT_LAYOUT_PLUGIN_DIR,plugin_file_name,loader->pool); - if(!plugin_path) { - apt_log(APT_LOG_MARK,APT_PRIO_WARNING,"Failed to compose plugin path %s",plugin_file_name); - return FALSE; - } - - config = mrcp_engine_config_alloc(loader->pool); - - /* load optional named and generic name/value params */ - if(root->first_child){ - const apr_xml_attr *attr_name; - const apr_xml_attr *attr_value; - const apr_xml_elem *elem; - apt_log(APT_LOG_MARK,APT_PRIO_DEBUG,"Loading Engine Params"); - config->params = apr_table_make(loader->pool,1); - for(elem = root->first_child; elem; elem = elem->next) { - if(strcasecmp(elem->name,"max-channel-count") == 0) { - if(is_cdata_valid(elem) == TRUE) { - config->max_channel_count = atol(cdata_text_get(elem)); - } - } - else if(strcasecmp(elem->name,"param") == 0) { - if(name_value_attribs_get(elem,&attr_name,&attr_value) == TRUE) { - apt_log(APT_LOG_MARK,APT_PRIO_DEBUG,"Loading Param %s:%s",attr_name->value,attr_value->value); - apr_table_set(config->params,attr_name->value,attr_value->value); - } - } - } - } - - engine = mrcp_server_engine_load(loader->server,plugin_id,plugin_path,config); - return mrcp_server_engine_register(loader->server,engine); -} - -/** Load plugin (engine) factory */ -static apt_bool_t unimrcp_server_plugin_factory_load(unimrcp_server_loader_t *loader, const apr_xml_elem *root) -{ - const apr_xml_elem *elem; - - apt_log(APT_LOG_MARK,APT_PRIO_DEBUG,"Loading Plugin Factory"); - for(elem = root->first_child; elem; elem = elem->next) { - apt_log(APT_LOG_MARK,APT_PRIO_DEBUG,"Loading Element <%s>",elem->name); - if(strcasecmp(elem->name,"engine") == 0) { - unimrcp_server_plugin_load(loader,elem); - } - else { - apt_log(APT_LOG_MARK,APT_PRIO_WARNING,"Unknown Element <%s>",elem->name); - } - } - return TRUE; -} - -/** Load jitter buffer settings */ -static apt_bool_t unimrcp_server_jb_settings_load(unimrcp_server_loader_t *loader, mpf_jb_config_t *jb, const apr_xml_elem *root) -{ - const apr_xml_elem *elem; - - apt_log(APT_LOG_MARK,APT_PRIO_DEBUG,"Loading Jitter Buffer Settings"); - for(elem = root->first_child; elem; elem = elem->next) { - apt_log(APT_LOG_MARK,APT_PRIO_DEBUG,"Loading Element <%s>",elem->name); - if(strcasecmp(elem->name,"playout-delay") == 0) { - if(is_cdata_valid(elem) == TRUE) { - jb->initial_playout_delay = atol(cdata_text_get(elem)); - } - } - else if(strcasecmp(elem->name,"min-playout-delay") == 0) { - if(is_cdata_valid(elem) == TRUE) { - jb->min_playout_delay = atol(cdata_text_get(elem)); - } - } - else if(strcasecmp(elem->name,"max-playout-delay") == 0) { - if(is_cdata_valid(elem) == TRUE) { - jb->max_playout_delay = atol(cdata_text_get(elem)); - } - } - else if(strcasecmp(elem->name,"adaptive") == 0) { - if(is_cdata_valid(elem) == TRUE) { - jb->adaptive = (apr_byte_t) atol(cdata_text_get(elem)); - } - } - else if(strcasecmp(elem->name,"time-skew-detection") == 0) { - if(is_cdata_valid(elem) == TRUE) { - jb->time_skew_detection = (apr_byte_t) atol(cdata_text_get(elem)); - } - } - else { - apt_log(APT_LOG_MARK,APT_PRIO_WARNING,"Unknown Element <%s>",elem->name); - } - } - return TRUE; -} - -/** Load RTCP settings */ -static apt_bool_t unimrcp_server_rtcp_settings_load(unimrcp_server_loader_t *loader, mpf_rtp_settings_t *rtcp_settings, const apr_xml_elem *root) -{ - const apr_xml_elem *elem; - const apr_xml_attr *attr = NULL; - for(attr = root->attr; attr; attr = attr->next) { - if(strcasecmp(attr->name,"enable") == 0) { - break; - } - } - - if(is_attr_enabled(attr) == FALSE) { - /* RTCP is disabled, skip the rest */ - return TRUE; - } - - rtcp_settings->rtcp = TRUE; - apt_log(APT_LOG_MARK,APT_PRIO_DEBUG,"Loading RTCP Settings"); - for(elem = root->first_child; elem; elem = elem->next) { - apt_log(APT_LOG_MARK,APT_PRIO_DEBUG,"Loading Element <%s>",elem->name); - if(strcasecmp(elem->name,"rtcp-bye") == 0) { - if(is_cdata_valid(elem) == TRUE) { - rtcp_settings->rtcp_bye_policy = atoi(cdata_text_get(elem)); - } - } - else if(strcasecmp(elem->name,"tx-interval") == 0) { - if(is_cdata_valid(elem) == TRUE) { - rtcp_settings->rtcp_tx_interval = (apr_uint16_t)atoi(cdata_text_get(elem)); - } - } - else if(strcasecmp(elem->name,"rx-resolution") == 0) { - if(is_cdata_valid(elem) == TRUE) { - rtcp_settings->rtcp_rx_resolution = (apr_uint16_t)atol(cdata_text_get(elem)); - } - } - else { - apt_log(APT_LOG_MARK,APT_PRIO_WARNING,"Unknown Element <%s>",elem->name); - } - } - return TRUE; -} - -/** Load RTP settings */ -static apt_bool_t unimrcp_server_rtp_settings_load(unimrcp_server_loader_t *loader, const apr_xml_elem *root, const char *id) -{ - const apr_xml_elem *elem; - mpf_rtp_settings_t *rtp_settings = mpf_rtp_settings_alloc(loader->pool); - - apt_log(APT_LOG_MARK,APT_PRIO_DEBUG,"Loading RTP Settings <%s>",id); - for(elem = root->first_child; elem; elem = elem->next) { - apt_log(APT_LOG_MARK,APT_PRIO_DEBUG,"Loading Element <%s>",elem->name); - if(strcasecmp(elem->name,"jitter-buffer") == 0) { - unimrcp_server_jb_settings_load(loader,&rtp_settings->jb_config,elem); - } - else if(strcasecmp(elem->name,"ptime") == 0) { - if(is_cdata_valid(elem) == TRUE) { - rtp_settings->ptime = (apr_uint16_t)atol(cdata_text_get(elem)); - } - } - else if(strcasecmp(elem->name,"codecs") == 0) { - const apr_xml_attr *attr; - const mpf_codec_manager_t *codec_manager = mrcp_server_codec_manager_get(loader->server); - if(is_cdata_valid(elem) == TRUE && codec_manager) { - mpf_codec_manager_codec_list_load( - codec_manager, - &rtp_settings->codec_list, - cdata_text_get(elem), - loader->pool); - } - for(attr = elem->attr; attr; attr = attr->next) { - if(strcasecmp(attr->name,"own-preference") == 0) { - rtp_settings->own_preferrence = is_attr_enabled(attr); - break; - } - } - } - else if(strcasecmp(elem->name,"rtcp") == 0) { - unimrcp_server_rtcp_settings_load(loader,rtp_settings,elem); - } - else { - apt_log(APT_LOG_MARK,APT_PRIO_WARNING,"Unknown Element <%s>",elem->name); - } - } - - return mrcp_server_rtp_settings_register(loader->server,rtp_settings,id); -} - -/** Load map of resources and engines */ -static apr_table_t* resource_engine_map_load(const apr_xml_elem *root, apr_pool_t *pool) -{ - const apr_xml_attr *attr_name; - const apr_xml_attr *attr_value; - const apr_xml_elem *elem; - apr_table_t *plugin_map = apr_table_make(pool,2); - apt_log(APT_LOG_MARK,APT_PRIO_DEBUG,"Loading Plugin Map"); - for(elem = root->first_child; elem; elem = elem->next) { - if(strcasecmp(elem->name,"param") == 0) { - if(name_value_attribs_get(elem,&attr_name,&attr_value) == TRUE) { - apt_log(APT_LOG_MARK,APT_PRIO_DEBUG,"Loading Param %s:%s",attr_name->value,attr_value->value); - apr_table_set(plugin_map,attr_name->value,attr_value->value); - } - } - } - return plugin_map; -} - -/** Load MRCPv2 profile */ -static apt_bool_t unimrcp_server_mrcpv2_profile_load(unimrcp_server_loader_t *loader, const apr_xml_elem *root, const char *id) -{ - const apr_xml_elem *elem; - mrcp_server_profile_t *profile; - mrcp_sig_agent_t *sip_agent = NULL; - mrcp_connection_agent_t *mrcpv2_agent = NULL; - mpf_engine_t *media_engine = NULL; - mpf_termination_factory_t *rtp_factory = NULL; - mpf_rtp_settings_t *rtp_settings = NULL; - apr_table_t *resource_engine_map = NULL; - - apt_log(APT_LOG_MARK,APT_PRIO_DEBUG,"Loading MRCPv2 Profile <%s>",id); - for(elem = root->first_child; elem; elem = elem->next) { - apt_log(APT_LOG_MARK,APT_PRIO_DEBUG,"Loading Element <%s>",elem->name); - - if(is_cdata_valid(elem) == FALSE) { - continue; - } - - if(strcasecmp(elem->name,"sip-uas") == 0) { - sip_agent = mrcp_server_signaling_agent_get(loader->server,cdata_text_get(elem)); - } - else if(strcasecmp(elem->name,"mrcpv2-uas") == 0) { - mrcpv2_agent = mrcp_server_connection_agent_get(loader->server,cdata_text_get(elem)); - } - else if(strcasecmp(elem->name,"media-engine") == 0) { - media_engine = mrcp_server_media_engine_get(loader->server,cdata_text_get(elem)); - } - else if(strcasecmp(elem->name,"rtp-factory") == 0) { - rtp_factory = mrcp_server_rtp_factory_get(loader->server,cdata_text_get(elem)); - } - else if(strcasecmp(elem->name,"rtp-settings") == 0) { - rtp_settings = mrcp_server_rtp_settings_get(loader->server,cdata_text_get(elem)); - } - else if(strcasecmp(elem->name,"resource-engine-map") == 0) { - resource_engine_map = resource_engine_map_load(elem,loader->pool); - } - else { - apt_log(APT_LOG_MARK,APT_PRIO_WARNING,"Unknown Element <%s>",elem->name); - } - } - - apt_log(APT_LOG_MARK,APT_PRIO_NOTICE,"Create MRCPv2 Profile [%s]",id); - profile = mrcp_server_profile_create( - id, - MRCP_VERSION_2, - NULL, - sip_agent, - mrcpv2_agent, - media_engine, - rtp_factory, - rtp_settings, - loader->pool); - return mrcp_server_profile_register(loader->server,profile,resource_engine_map); -} - -/** Load MRCPv1 profile */ -static apt_bool_t unimrcp_server_mrcpv1_profile_load(unimrcp_server_loader_t *loader, const apr_xml_elem *root, const char *id) -{ - const apr_xml_elem *elem; - mrcp_server_profile_t *profile; - mrcp_sig_agent_t *rtsp_agent = NULL; - mpf_engine_t *media_engine = NULL; - mpf_termination_factory_t *rtp_factory = NULL; - mpf_rtp_settings_t *rtp_settings = NULL; - apr_table_t *resource_engine_map = NULL; - - apt_log(APT_LOG_MARK,APT_PRIO_DEBUG,"Loading MRCPv1 Profile <%s>",id); - for(elem = root->first_child; elem; elem = elem->next) { - apt_log(APT_LOG_MARK,APT_PRIO_DEBUG,"Loading Element <%s>",elem->name); - - if(is_cdata_valid(elem) == FALSE) { - continue; - } - - if(strcasecmp(elem->name,"rtsp-uas") == 0) { - rtsp_agent = mrcp_server_signaling_agent_get(loader->server,cdata_text_get(elem)); - } - else if(strcasecmp(elem->name,"media-engine") == 0) { - media_engine = mrcp_server_media_engine_get(loader->server,cdata_text_get(elem)); - } - else if(strcasecmp(elem->name,"rtp-factory") == 0) { - rtp_factory = mrcp_server_rtp_factory_get(loader->server,cdata_text_get(elem)); - } - else if(strcasecmp(elem->name,"rtp-settings") == 0) { - rtp_settings = mrcp_server_rtp_settings_get(loader->server,cdata_text_get(elem)); - } - else if(strcasecmp(elem->name,"resource-engine-map") == 0) { - resource_engine_map = resource_engine_map_load(elem,loader->pool); - } - else { - apt_log(APT_LOG_MARK,APT_PRIO_WARNING,"Unknown Element <%s>",elem->name); - } - } - - apt_log(APT_LOG_MARK,APT_PRIO_NOTICE,"Create MRCPv1 Profile [%s]",id); - profile = mrcp_server_profile_create( - id, - MRCP_VERSION_1, - NULL, - rtsp_agent, - NULL, - media_engine, - rtp_factory, - rtp_settings, - loader->pool); - return mrcp_server_profile_register(loader->server,profile,resource_engine_map); -} - - -/** Load properties */ -static apt_bool_t unimrcp_server_properties_load(unimrcp_server_loader_t *loader, const apr_xml_elem *root) -{ - const apr_xml_elem *elem; - - apt_log(APT_LOG_MARK,APT_PRIO_DEBUG,"Loading Properties"); - for(elem = root->first_child; elem; elem = elem->next) { - apt_log(APT_LOG_MARK,APT_PRIO_DEBUG,"Loading Element <%s>",elem->name); - if(strcasecmp(elem->name,"ip") == 0) { - loader->ip = unimrcp_server_ip_address_get(loader,elem); - apt_log(APT_LOG_MARK,APT_PRIO_INFO,"Set Property ip:%s",loader->ip); - } - else if(strcasecmp(elem->name,"ext-ip") == 0) { - loader->ext_ip = unimrcp_server_ip_address_get(loader,elem); - apt_log(APT_LOG_MARK,APT_PRIO_INFO,"Set Property ext-ip:%s",loader->ext_ip); - } - else { - apt_log(APT_LOG_MARK,APT_PRIO_WARNING,"Unknown Element <%s>",elem->name); - } - } - return TRUE; -} - -/** Load components */ -static apt_bool_t unimrcp_server_components_load(unimrcp_server_loader_t *loader, const apr_xml_elem *root) -{ - const apr_xml_elem *elem; - const apr_xml_attr *id_attr; - const apr_xml_attr *enable_attr; - const char *id; - - /* Create codec manager first (probably it should be loaded from config either) */ - mpf_codec_manager_t *codec_manager = mpf_engine_codec_manager_create(loader->pool); - if(codec_manager) { - mrcp_server_codec_manager_register(loader->server,codec_manager); - } - - apt_log(APT_LOG_MARK,APT_PRIO_DEBUG,"Loading Components"); - for(elem = root->first_child; elem; elem = elem->next) { - if(strcasecmp(elem->name,"resource-factory") == 0) { - unimrcp_server_resource_factory_load(loader,elem); - continue; - } - if(strcasecmp(elem->name,"plugin-factory") == 0) { - unimrcp_server_plugin_factory_load(loader,elem); - continue; - } - - /* get common "id" and "enable" attributes */ - if(header_attribs_get(elem,&id_attr,&enable_attr) == FALSE) { - /* invalid id */ - continue; - } - if(is_attr_enabled(enable_attr) == FALSE) { - /* disabled element, just skip it */ - continue; - } - id = apr_pstrdup(loader->pool,id_attr->value); - - if(strcasecmp(elem->name,"sip-uas") == 0) { - unimrcp_server_sip_uas_load(loader,elem,id); - } - else if(strcasecmp(elem->name,"rtsp-uas") == 0) { - unimrcp_server_rtsp_uas_load(loader,elem,id); - } - else if(strcasecmp(elem->name,"mrcpv2-uas") == 0) { - unimrcp_server_mrcpv2_uas_load(loader,elem,id); - } - else if(strcasecmp(elem->name,"media-engine") == 0) { - unimrcp_server_media_engine_load(loader,elem,id); - } - else if(strcasecmp(elem->name,"rtp-factory") == 0) { - unimrcp_server_rtp_factory_load(loader,elem,id); - } - else if(strcasecmp(elem->name,"plugin-factory") == 0) { - unimrcp_server_plugin_factory_load(loader,elem); - } - else { - apt_log(APT_LOG_MARK,APT_PRIO_WARNING,"Unknown Element <%s>",elem->name); - } - } - return TRUE; -} - -/** Load settings */ -static apt_bool_t unimrcp_server_settings_load(unimrcp_server_loader_t *loader, const apr_xml_elem *root) -{ - const apr_xml_elem *elem; - const apr_xml_attr *id_attr; - const apr_xml_attr *enable_attr; - const char *id; - - apt_log(APT_LOG_MARK,APT_PRIO_DEBUG,"Loading Settings"); - for(elem = root->first_child; elem; elem = elem->next) { - /* get common "id" and "enable" attributes */ - if(header_attribs_get(elem,&id_attr,&enable_attr) == FALSE) { - /* invalid id */ - continue; - } - if(is_attr_enabled(enable_attr) == FALSE) { - /* disabled element, just skip it */ - continue; - } - id = apr_pstrdup(loader->pool,id_attr->value); - - if(strcasecmp(elem->name,"rtp-settings") == 0) { - unimrcp_server_rtp_settings_load(loader,elem,id); - } - else { - apt_log(APT_LOG_MARK,APT_PRIO_WARNING,"Unknown Element <%s>",elem->name); - } - } - return TRUE; -} - -/** Load profiles */ -static apt_bool_t unimrcp_server_profiles_load(unimrcp_server_loader_t *loader, const apr_xml_elem *root) -{ - const apr_xml_elem *elem; - const apr_xml_attr *id_attr; - const apr_xml_attr *enable_attr; - const char *id; - - apt_log(APT_LOG_MARK,APT_PRIO_DEBUG,"Loading Profiles"); - for(elem = root->first_child; elem; elem = elem->next) { - /* get common "id" and "enable" attributes */ - if(header_attribs_get(elem,&id_attr,&enable_attr) == FALSE) { - /* invalid id */ - continue; - } - if(is_attr_enabled(enable_attr) == FALSE) { - /* disabled element, just skip it */ - continue; - } - id = apr_pstrdup(loader->pool,id_attr->value); - - if(strcasecmp(elem->name,"mrcpv2-profile") == 0) { - unimrcp_server_mrcpv2_profile_load(loader,elem,id); - } - else if(strcasecmp(elem->name,"mrcpv1-profile") == 0) { - unimrcp_server_mrcpv1_profile_load(loader,elem,id); - } - else { - apt_log(APT_LOG_MARK,APT_PRIO_WARNING,"Unknown Element <%s>",elem->name); - } - } - return TRUE; -} - -/** Load misc parameters */ -static apt_bool_t unimrcp_server_misc_load(unimrcp_server_loader_t *loader, const apr_xml_elem *root) -{ - const apr_xml_elem *elem; - apt_log(APT_LOG_MARK,APT_PRIO_DEBUG,"Loading Misc Parameters"); - for(elem = root->first_child; elem; elem = elem->next) { - if(strcasecmp(elem->name,"sofiasip-logger") == 0) { - char *logger_list_str; - char *logger_name; - char *state; - apr_xml_attr *attr; - apt_bool_t redirect = FALSE; - const char *loglevel_str = NULL; - for(attr = elem->attr; attr; attr = attr->next) { - if(strcasecmp(attr->name,"redirect") == 0) { - if(attr->value && strcasecmp(attr->value,"true") == 0) - redirect = TRUE; - } - else if(strcasecmp(attr->name,"loglevel") == 0) { - loglevel_str = attr->value; - } - } - - logger_list_str = apr_pstrdup(loader->pool,cdata_text_get(elem)); - do { - logger_name = apr_strtok(logger_list_str, ",", &state); - if(logger_name) { - mrcp_sofiasip_server_logger_init(logger_name,loglevel_str,redirect); - } - logger_list_str = NULL; /* make sure we pass NULL on subsequent calls of apr_strtok() */ - } - while(logger_name); - } - else { - apt_log(APT_LOG_MARK,APT_PRIO_WARNING,"Unknown Element <%s>",elem->name); - } - } - return TRUE; -} - -/** Parse XML document */ -static apr_xml_doc* unimrcp_server_doc_parse(const char *file_path, apr_pool_t *pool) -{ - apr_xml_parser *parser = NULL; - apr_xml_doc *xml_doc = NULL; - apr_file_t *fd = NULL; - apr_status_t rv; - - apt_log(APT_LOG_MARK,APT_PRIO_NOTICE,"Open Config File [%s]",file_path); - rv = apr_file_open(&fd,file_path,APR_READ|APR_BINARY,0,pool); - if(rv != APR_SUCCESS) { - apt_log(APT_LOG_MARK,APT_PRIO_WARNING,"Failed to Open Config File [%s]",file_path); - return NULL; - } - - rv = apr_xml_parse_file(pool,&parser,&xml_doc,fd,XML_FILE_BUFFER_LENGTH); - if(rv != APR_SUCCESS) { - apt_log(APT_LOG_MARK,APT_PRIO_WARNING,"Failed to Parse Config File [%s]",file_path); - xml_doc = NULL; - } - - apr_file_close(fd); - return xml_doc; -} - -static apt_bool_t unimrcp_server_load(mrcp_server_t *mrcp_server, apt_dir_layout_t *dir_layout, apr_pool_t *pool) -{ - const char *file_path; - apr_xml_doc *doc; - const apr_xml_elem *elem; - const apr_xml_elem *root; - const apr_xml_attr *attr; - unimrcp_server_loader_t *loader; - const char *version = NULL; - - file_path = apt_confdir_filepath_get(dir_layout,CONF_FILE_NAME,pool); - if(!file_path) { - apt_log(APT_LOG_MARK,APT_PRIO_WARNING,"Failed to Get Path to Conf File [%s]",CONF_FILE_NAME); - return FALSE; - } - - /* Parse XML document */ - doc = unimrcp_server_doc_parse(file_path,pool); - if(!doc) { - return FALSE; - } - - root = doc->root; - - /* Match document name */ - if(!root || strcasecmp(root->name,"unimrcpserver") != 0) { - apt_log(APT_LOG_MARK,APT_PRIO_WARNING,"Unknown Document <%s>",root ? root->name : "null"); - return FALSE; - } - - /* Read attributes */ - for(attr = root->attr; attr; attr = attr->next) { - if(strcasecmp(attr->name,"version") == 0) { - version = attr->value; - } - } - - /* Check version number first */ - if(!version) { - apt_log(APT_LOG_MARK,APT_PRIO_WARNING,"Unknown Version"); - return FALSE; - } - - loader = apr_palloc(pool,sizeof(unimrcp_server_loader_t)); - loader->doc = doc; - loader->server = mrcp_server; - loader->dir_layout = dir_layout; - loader->pool = pool; - loader->ip = DEFAULT_IP_ADDRESS; - loader->ext_ip = NULL; - loader->auto_ip = NULL; - - /* Navigate through document */ - for(elem = root->first_child; elem; elem = elem->next) { - if(strcasecmp(elem->name,"properties") == 0) { - unimrcp_server_properties_load(loader,elem); - } - else if(strcasecmp(elem->name,"components") == 0) { - unimrcp_server_components_load(loader,elem); - } - else if(strcasecmp(elem->name,"settings") == 0) { - unimrcp_server_settings_load(loader,elem); - } - else if(strcasecmp(elem->name,"profiles") == 0) { - unimrcp_server_profiles_load(loader,elem); - } - else if(strcasecmp(elem->name,"misc") == 0) { - unimrcp_server_misc_load(loader,elem); - } - else { - apt_log(APT_LOG_MARK,APT_PRIO_WARNING,"Unknown Element <%s>",elem->name); - } - } - return TRUE; -} diff --git a/libs/unimrcp/platforms/umc/Makefile.am b/libs/unimrcp/platforms/umc/Makefile.am deleted file mode 100644 index 5b41d43e2df..00000000000 --- a/libs/unimrcp/platforms/umc/Makefile.am +++ /dev/null @@ -1,26 +0,0 @@ -AM_CPPFLAGS = -I$(top_srcdir)/platforms/umc/include \ - $(UNIMRCP_CLIENTAPP_INCLUDES) - -bin_PROGRAMS = umc - -umc_SOURCES = src/main.cpp \ - src/umcconsole.cpp \ - src/umcframework.cpp \ - src/umcscenario.cpp \ - src/umcsession.cpp \ - src/synthscenario.cpp \ - src/synthsession.cpp \ - src/recogscenario.cpp \ - src/recogsession.cpp \ - src/recorderscenario.cpp \ - src/recordersession.cpp \ - src/dtmfscenario.cpp \ - src/dtmfsession.cpp \ - src/setparamscenario.cpp \ - src/setparamsession.cpp \ - src/verifierscenario.cpp \ - src/verifiersession.cpp -umc_LDADD = $(UNIMRCP_CLIENTAPP_LIBS) -umc_LDFLAGS = $(UNIMRCP_CLIENTAPP_OPTS) - -include $(top_srcdir)/build/rules/uniclientapp.am diff --git a/libs/unimrcp/platforms/umc/include/dtmfscenario.h b/libs/unimrcp/platforms/umc/include/dtmfscenario.h deleted file mode 100644 index 7847ab3237b..00000000000 --- a/libs/unimrcp/platforms/umc/include/dtmfscenario.h +++ /dev/null @@ -1,77 +0,0 @@ -/* - * Copyright 2008-2014 Arsen Chaloyan - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - * - * $Id: dtmfscenario.h 2136 2014-07-04 06:33:36Z achaloyan@gmail.com $ - */ - -#ifndef DTMF_SCENARIO_H -#define DTMF_SCENARIO_H - -/** - * @file dtmfscenario.h - * @brief DTMF Recognition Scenario - */ - -#include "umcscenario.h" - -class DtmfScenario : public UmcScenario -{ -public: -/* ============================ CREATORS =================================== */ - DtmfScenario(); - virtual ~DtmfScenario(); - -/* ============================ MANIPULATORS =============================== */ - virtual void Destroy(); - - virtual UmcSession* CreateSession(); - -/* ============================ ACCESSORS ================================== */ - const char* GetContentType() const; - const char* GetGrammar() const; - const char* GetDigits() const; - -/* ============================ INQUIRIES ================================== */ - -protected: -/* ============================ MANIPULATORS =============================== */ - virtual bool LoadElement(const apr_xml_elem* pElem, apr_pool_t* pool); - - bool LoadRecognize(const apr_xml_elem* pElem, apr_pool_t* pool); - -/* ============================ DATA ======================================= */ - const char* m_ContentType; - const char* m_Grammar; - const char* m_Digits; -}; - -/* ============================ INLINE METHODS ============================= */ -inline const char* DtmfScenario::GetContentType() const -{ - return m_ContentType; -} - -inline const char* DtmfScenario::GetGrammar() const -{ - return m_Grammar; -} - -inline const char* DtmfScenario::GetDigits() const -{ - return m_Digits; -} - - -#endif /* DTMF_SCENARIO_H */ diff --git a/libs/unimrcp/platforms/umc/include/dtmfsession.h b/libs/unimrcp/platforms/umc/include/dtmfsession.h deleted file mode 100644 index 4093fff43cf..00000000000 --- a/libs/unimrcp/platforms/umc/include/dtmfsession.h +++ /dev/null @@ -1,70 +0,0 @@ -/* - * Copyright 2008-2014 Arsen Chaloyan - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - * - * $Id: dtmfsession.h 2136 2014-07-04 06:33:36Z achaloyan@gmail.com $ - */ - -#ifndef DTMF_SESSION_H -#define DTMF_SESSION_H - -/** - * @file dtmfsession.h - * @brief DTMF Recognition Session - */ - -#include "umcsession.h" - -class DtmfScenario; -struct RecogChannel; - -class DtmfSession : public UmcSession -{ -public: -/* ============================ CREATORS =================================== */ - DtmfSession(const DtmfScenario* pScenario); - virtual ~DtmfSession(); - -protected: -/* ============================ MANIPULATORS =============================== */ - virtual bool Start(); - - RecogChannel* CreateRecogChannel(); - bool StartRecognition(mrcp_channel_t* pMrcpChannel); - - mrcp_message_t* CreateRecognizeRequest(mrcp_channel_t* pMrcpChannel); - - static bool ParseNLSMLResult(mrcp_message_t* pMrcpMessage); - -/* ============================ HANDLERS =================================== */ - virtual bool OnSessionTerminate(mrcp_sig_status_code_e status); - virtual bool OnChannelAdd(mrcp_channel_t* channel, mrcp_sig_status_code_e status); - virtual bool OnMessageReceive(mrcp_channel_t* channel, mrcp_message_t* message); - -/* ============================ ACCESSORS ================================== */ - const DtmfScenario* GetScenario() const; - -private: -/* ============================ DATA ======================================= */ - RecogChannel* m_pRecogChannel; -}; - - -/* ============================ INLINE METHODS ============================= */ -inline const DtmfScenario* DtmfSession::GetScenario() const -{ - return (DtmfScenario*)m_pScenario; -} - -#endif /* DTMF_SESSION_H */ diff --git a/libs/unimrcp/platforms/umc/include/recogscenario.h b/libs/unimrcp/platforms/umc/include/recogscenario.h deleted file mode 100644 index 6d40ebfe9e0..00000000000 --- a/libs/unimrcp/platforms/umc/include/recogscenario.h +++ /dev/null @@ -1,97 +0,0 @@ -/* - * Copyright 2008-2014 Arsen Chaloyan - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - * - * $Id: recogscenario.h 2136 2014-07-04 06:33:36Z achaloyan@gmail.com $ - */ - -#ifndef RECOG_SCENARIO_H -#define RECOG_SCENARIO_H - -/** - * @file recogscenario.h - * @brief Recognizer Scenario - */ - -#include "umcscenario.h" - -class RecogScenario : public UmcScenario -{ -public: -/* ============================ CREATORS =================================== */ - RecogScenario(); - virtual ~RecogScenario(); - -/* ============================ MANIPULATORS =============================== */ - virtual void Destroy(); - - virtual UmcSession* CreateSession(); - -/* ============================ ACCESSORS ================================== */ - const char* GetContentType() const; - const char* GetContent() const; - apr_size_t GetContentLength() const; - const char* GetAudioSource() const; - -/* ============================ INQUIRIES ================================== */ - bool IsDefineGrammarEnabled() const; - bool IsRecognizeEnabled() const; -protected: -/* ============================ MANIPULATORS =============================== */ - virtual bool LoadElement(const apr_xml_elem* pElem, apr_pool_t* pool); - - bool LoadRecognize(const apr_xml_elem* pElem, apr_pool_t* pool); - bool LoadDefineGrammar(const apr_xml_elem* pElem, apr_pool_t* pool); - -/* ============================ DATA ======================================= */ - bool m_DefineGrammar; - bool m_Recognize; - const char* m_ContentType; - const char* m_Content; - apr_size_t m_ContentLength; - const char* m_AudioSource; -}; - -/* ============================ INLINE METHODS ============================= */ -inline const char* RecogScenario::GetContentType() const -{ - return m_ContentType; -} - -inline const char* RecogScenario::GetContent() const -{ - return m_Content; -} - -inline apr_size_t RecogScenario::GetContentLength() const -{ - return m_ContentLength; -} - -inline const char* RecogScenario::GetAudioSource() const -{ - return m_AudioSource; -} - -inline bool RecogScenario::IsDefineGrammarEnabled() const -{ - return m_DefineGrammar; -} - -inline bool RecogScenario::IsRecognizeEnabled() const -{ - return m_Recognize; -} - -#endif /* RECOG_SCENARIO_H */ diff --git a/libs/unimrcp/platforms/umc/include/recogsession.h b/libs/unimrcp/platforms/umc/include/recogsession.h deleted file mode 100644 index 02ba2a7f1d8..00000000000 --- a/libs/unimrcp/platforms/umc/include/recogsession.h +++ /dev/null @@ -1,75 +0,0 @@ -/* - * Copyright 2008-2014 Arsen Chaloyan - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - * - * $Id: recogsession.h 2136 2014-07-04 06:33:36Z achaloyan@gmail.com $ - */ - -#ifndef RECOG_SESSION_H -#define RECOG_SESSION_H - -/** - * @file recogsession.h - * @brief Recognizer Session - */ - -#include "umcsession.h" - -class RecogScenario; -struct RecogChannel; - -class RecogSession : public UmcSession -{ -public: -/* ============================ CREATORS =================================== */ - RecogSession(const RecogScenario* pScenario); - virtual ~RecogSession(); - -protected: -/* ============================ MANIPULATORS =============================== */ - virtual bool Start(); - virtual bool Stop(); - - RecogChannel* CreateRecogChannel(); - bool StartRecognition(mrcp_channel_t* pMrcpChannel); - bool OnDefineGrammar(mrcp_channel_t* pMrcpChannel); - - mrcp_message_t* CreateDefineGrammarRequest(mrcp_channel_t* pMrcpChannel); - mrcp_message_t* CreateRecognizeRequest(mrcp_channel_t* pMrcpChannel); - - static bool ParseNLSMLResult(mrcp_message_t* pMrcpMessage); - FILE* GetAudioIn(const mpf_codec_descriptor_t* pDescriptor, apr_pool_t* pool) const; - -/* ============================ HANDLERS =================================== */ - virtual bool OnSessionTerminate(mrcp_sig_status_code_e status); - virtual bool OnChannelAdd(mrcp_channel_t* channel, mrcp_sig_status_code_e status); - virtual bool OnMessageReceive(mrcp_channel_t* channel, mrcp_message_t* message); - -/* ============================ ACCESSORS ================================== */ - const RecogScenario* GetScenario() const; - -private: -/* ============================ DATA ======================================= */ - RecogChannel* m_pRecogChannel; - const char* m_ContentId; -}; - - -/* ============================ INLINE METHODS ============================= */ -inline const RecogScenario* RecogSession::GetScenario() const -{ - return (RecogScenario*)m_pScenario; -} - -#endif /* RECOG_SESSION_H */ diff --git a/libs/unimrcp/platforms/umc/include/recorderscenario.h b/libs/unimrcp/platforms/umc/include/recorderscenario.h deleted file mode 100644 index 4a1f283c232..00000000000 --- a/libs/unimrcp/platforms/umc/include/recorderscenario.h +++ /dev/null @@ -1,68 +0,0 @@ -/* - * Copyright 2008-2014 Arsen Chaloyan - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - * - * $Id: recorderscenario.h 2136 2014-07-04 06:33:36Z achaloyan@gmail.com $ - */ - -#ifndef RECORDER_SCENARIO_H -#define RECORDER_SCENARIO_H - -/** - * @file recorderscenario.h - * @brief Recorder Scenario - */ - -#include "umcscenario.h" - -class RecorderScenario : public UmcScenario -{ -public: -/* ============================ CREATORS =================================== */ - RecorderScenario(); - virtual ~RecorderScenario(); - -/* ============================ MANIPULATORS =============================== */ - virtual void Destroy(); - - virtual UmcSession* CreateSession(); - -/* ============================ ACCESSORS ================================== */ - const char* GetAudioSource() const; - -/* ============================ INQUIRIES ================================== */ - bool IsRecordEnabled() const; -protected: -/* ============================ MANIPULATORS =============================== */ - virtual bool LoadElement(const apr_xml_elem* pElem, apr_pool_t* pool); - - bool LoadRecord(const apr_xml_elem* pElem, apr_pool_t* pool); - -/* ============================ DATA ======================================= */ - bool m_Record; - const char* m_AudioSource; -}; - -/* ============================ INLINE METHODS ============================= */ -inline const char* RecorderScenario::GetAudioSource() const -{ - return m_AudioSource; -} - -inline bool RecorderScenario::IsRecordEnabled() const -{ - return m_Record; -} - -#endif /* RECORDER_SCENARIO_H */ diff --git a/libs/unimrcp/platforms/umc/include/recordersession.h b/libs/unimrcp/platforms/umc/include/recordersession.h deleted file mode 100644 index 31d53c8a458..00000000000 --- a/libs/unimrcp/platforms/umc/include/recordersession.h +++ /dev/null @@ -1,70 +0,0 @@ -/* - * Copyright 2008-2014 Arsen Chaloyan - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - * - * $Id: recordersession.h 2136 2014-07-04 06:33:36Z achaloyan@gmail.com $ - */ - -#ifndef RECORDER_SESSION_H -#define RECORDER_SESSION_H - -/** - * @file recordersession.h - * @brief Recorder Session - */ - -#include "umcsession.h" - -class RecorderScenario; -struct RecorderChannel; - -class RecorderSession : public UmcSession -{ -public: -/* ============================ CREATORS =================================== */ - RecorderSession(const RecorderScenario* pScenario); - virtual ~RecorderSession(); - -protected: -/* ============================ MANIPULATORS =============================== */ - virtual bool Start(); - - RecorderChannel* CreateRecorderChannel(); - bool StartRecorder(mrcp_channel_t* pMrcpChannel); - - mrcp_message_t* CreateRecordRequest(mrcp_channel_t* pMrcpChannel); - - FILE* GetAudioIn(const mpf_codec_descriptor_t* pDescriptor, apr_pool_t* pool) const; - -/* ============================ HANDLERS =================================== */ - virtual bool OnSessionTerminate(mrcp_sig_status_code_e status); - virtual bool OnChannelAdd(mrcp_channel_t* channel, mrcp_sig_status_code_e status); - virtual bool OnMessageReceive(mrcp_channel_t* channel, mrcp_message_t* message); - -/* ============================ ACCESSORS ================================== */ - const RecorderScenario* GetScenario() const; - -private: -/* ============================ DATA ======================================= */ - RecorderChannel* m_pRecorderChannel; -}; - - -/* ============================ INLINE METHODS ============================= */ -inline const RecorderScenario* RecorderSession::GetScenario() const -{ - return (RecorderScenario*)m_pScenario; -} - -#endif /* RECORDER_SESSION_H */ diff --git a/libs/unimrcp/platforms/umc/include/setparamscenario.h b/libs/unimrcp/platforms/umc/include/setparamscenario.h deleted file mode 100644 index bc1ad0ed896..00000000000 --- a/libs/unimrcp/platforms/umc/include/setparamscenario.h +++ /dev/null @@ -1,49 +0,0 @@ -/* - * Copyright 2008-2014 Arsen Chaloyan - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - * - * $Id: setparamscenario.h 2136 2014-07-04 06:33:36Z achaloyan@gmail.com $ - */ - -#ifndef SETPARAM_SCENARIO_H -#define SETPARAM_SCENARIO_H - -/** - * @file setaparamscenario.h - * @brief Set Params Scenario - */ - -#include "umcscenario.h" - -class SetParamScenario : public UmcScenario -{ -public: -/* ============================ CREATORS =================================== */ - -/* ============================ MANIPULATORS =============================== */ - - virtual UmcSession* CreateSession(); - -/* ============================ ACCESSORS ================================== */ - -/* ============================ INQUIRIES ================================== */ -protected: -/* ============================ MANIPULATORS =============================== */ - -/* ============================ DATA ======================================= */ -}; - -/* ============================ INLINE METHODS ============================= */ - -#endif /* SETPARAM_SCENARIO_H */ diff --git a/libs/unimrcp/platforms/umc/include/setparamsession.h b/libs/unimrcp/platforms/umc/include/setparamsession.h deleted file mode 100644 index 16754f309f8..00000000000 --- a/libs/unimrcp/platforms/umc/include/setparamsession.h +++ /dev/null @@ -1,78 +0,0 @@ -/* - * Copyright 2008-2014 Arsen Chaloyan - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - * - * $Id: setparamsession.h 2136 2014-07-04 06:33:36Z achaloyan@gmail.com $ - */ - -#ifndef SETPARAM_SESSION_H -#define SETPARAM_SESSION_H - -/** - * @file setparamsession.h - * @brief Set Recognizer Params - */ - -#include -#include "umcsession.h" - -class SetParamScenario; -struct RecogChannel; - -class SetParamSession : public UmcSession -{ -public: -/* ============================ CREATORS =================================== */ - SetParamSession(const SetParamScenario* pScenario); - virtual ~SetParamSession(); - -protected: -/* ============================ MANIPULATORS =============================== */ - virtual bool Start(); - - RecogChannel* CreateRecogChannel(); - - bool CreateRequestQueue(mrcp_channel_t* pMrcpChannel); - mrcp_message_t* CreateSetParams1(mrcp_channel_t* pMrcpChannel); - mrcp_message_t* CreateGetParams1(mrcp_channel_t* pMrcpChannel); - mrcp_message_t* CreateSetParams2(mrcp_channel_t* pMrcpChannel); - mrcp_message_t* CreateGetParams2(mrcp_channel_t* pMrcpChannel); - mrcp_message_t* CreateSetParams3(mrcp_channel_t* pMrcpChannel); - mrcp_message_t* CreateGetParams3(mrcp_channel_t* pMrcpChannel); - - bool ProcessNextRequest(mrcp_channel_t* pMrcpChannel); - -/* ============================ HANDLERS =================================== */ - virtual bool OnSessionTerminate(mrcp_sig_status_code_e status); - virtual bool OnChannelAdd(mrcp_channel_t* channel, mrcp_sig_status_code_e status); - virtual bool OnMessageReceive(mrcp_channel_t* channel, mrcp_message_t* message); - -/* ============================ ACCESSORS ================================== */ - const SetParamScenario* GetScenario() const; - -private: -/* ============================ DATA ======================================= */ - RecogChannel* m_pRecogChannel; - apr_array_header_t* m_RequestQueue; - int m_CurrentRequest; -}; - - -/* ============================ INLINE METHODS ============================= */ -inline const SetParamScenario* SetParamSession::GetScenario() const -{ - return (SetParamScenario*)m_pScenario; -} - -#endif /* SETPARAM_SESSION_H */ diff --git a/libs/unimrcp/platforms/umc/include/synthscenario.h b/libs/unimrcp/platforms/umc/include/synthscenario.h deleted file mode 100644 index 120afc7854e..00000000000 --- a/libs/unimrcp/platforms/umc/include/synthscenario.h +++ /dev/null @@ -1,76 +0,0 @@ -/* - * Copyright 2008-2014 Arsen Chaloyan - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - * - * $Id: synthscenario.h 2136 2014-07-04 06:33:36Z achaloyan@gmail.com $ - */ - -#ifndef SYNTH_SCENARIO_H -#define SYNTH_SCENARIO_H - -/** - * @file synthscenario.h - * @brief Synthesizer Scenario - */ - -#include "umcscenario.h" - -class SynthScenario : public UmcScenario -{ -public: -/* ============================ CREATORS =================================== */ - SynthScenario(); - virtual ~SynthScenario(); - -/* ============================ MANIPULATORS =============================== */ - virtual void Destroy(); - - virtual UmcSession* CreateSession(); - -/* ============================ ACCESSORS ================================== */ - const char* GetContentType() const; - const char* GetContent() const; - -/* ============================ INQUIRIES ================================== */ - bool IsSpeakEnabled() const; - -protected: -/* ============================ MANIPULATORS =============================== */ - virtual bool LoadElement(const apr_xml_elem* pElem, apr_pool_t* pool); - - bool LoadSpeak(const apr_xml_elem* pElem, apr_pool_t* pool); - -/* ============================ DATA ======================================= */ - bool m_Speak; - const char* m_ContentType; - const char* m_Content; -}; - -/* ============================ INLINE METHODS ============================= */ -inline const char* SynthScenario::GetContentType() const -{ - return m_ContentType; -} - -inline const char* SynthScenario::GetContent() const -{ - return m_Content; -} - -inline bool SynthScenario::IsSpeakEnabled() const -{ - return m_Speak; -} - -#endif /* SYNTH_SCENARIO_H */ diff --git a/libs/unimrcp/platforms/umc/include/synthsession.h b/libs/unimrcp/platforms/umc/include/synthsession.h deleted file mode 100644 index d980431af87..00000000000 --- a/libs/unimrcp/platforms/umc/include/synthsession.h +++ /dev/null @@ -1,69 +0,0 @@ -/* - * Copyright 2008-2014 Arsen Chaloyan - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - * - * $Id: synthsession.h 2136 2014-07-04 06:33:36Z achaloyan@gmail.com $ - */ - -#ifndef SYNTH_SESSION_H -#define SYNTH_SESSION_H - -/** - * @file synthsession.h - * @brief Synthesizer Session - */ - -#include "umcsession.h" - -class SynthScenario; -struct SynthChannel; - -class SynthSession : public UmcSession -{ -public: -/* ============================ CREATORS =================================== */ - SynthSession(const SynthScenario* pScenario); - virtual ~SynthSession(); - -protected: -/* ============================ MANIPULATORS =============================== */ - virtual bool Start(); - virtual bool Stop(); - - SynthChannel* CreateSynthChannel(); - - mrcp_message_t* CreateSpeakRequest(mrcp_channel_t* pMrcpChannel); - FILE* GetAudioOut(const mpf_codec_descriptor_t* pDescriptor, apr_pool_t* pool) const; - -/* ============================ HANDLERS =================================== */ - virtual bool OnSessionTerminate(mrcp_sig_status_code_e status); - virtual bool OnChannelAdd(mrcp_channel_t* channel, mrcp_sig_status_code_e status); - virtual bool OnMessageReceive(mrcp_channel_t* channel, mrcp_message_t* message); - -/* ============================ ACCESSORS ================================== */ - const SynthScenario* GetScenario() const; - -private: -/* ============================ DATA ======================================= */ - SynthChannel* m_pSynthChannel; -}; - - -/* ============================ INLINE METHODS ============================= */ -inline const SynthScenario* SynthSession::GetScenario() const -{ - return (SynthScenario*)m_pScenario; -} - -#endif /* SYNTH_SESSION_H */ diff --git a/libs/unimrcp/platforms/umc/include/umcconsole.h b/libs/unimrcp/platforms/umc/include/umcconsole.h deleted file mode 100644 index 06dc2213097..00000000000 --- a/libs/unimrcp/platforms/umc/include/umcconsole.h +++ /dev/null @@ -1,65 +0,0 @@ -/* - * Copyright 2008-2014 Arsen Chaloyan - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - * - * $Id: umcconsole.h 2197 2014-10-16 01:34:19Z achaloyan@gmail.com $ - */ - -#ifndef UMC_CONSOLE_H -#define UMC_CONSOLE_H - -/** - * @file umcconsole.h - * @brief UMC Application Console - */ - -#include "apt_log.h" - -class UmcFramework; - -class UmcConsole -{ -public: -/* ============================ CREATORS =================================== */ - UmcConsole(); - ~UmcConsole(); - -/* ============================ MANIPULATORS =============================== */ - bool Run(int argc, const char * const *argv); - -protected: - bool LoadOptions(int argc, const char * const *argv, apr_pool_t *pool); - bool RunCmdLine(); - bool ProcessCmdLine(char* pCmdLine); - static void Usage(); - -private: -/* ============================ DATA ======================================= */ - struct UmcOptions - { - const char* m_RootDirPath; - const char* m_DirLayoutConf; - const char* m_LogPriority; - const char* m_LogOutput; - - UmcOptions() : - m_RootDirPath(NULL), m_DirLayoutConf(NULL), - m_LogPriority(NULL), m_LogOutput(NULL) {} - }; - - UmcOptions m_Options; - UmcFramework* m_pFramework; -}; - -#endif /* UMC_CONSOLE_H */ diff --git a/libs/unimrcp/platforms/umc/include/umcframework.h b/libs/unimrcp/platforms/umc/include/umcframework.h deleted file mode 100644 index fbbb47c4412..00000000000 --- a/libs/unimrcp/platforms/umc/include/umcframework.h +++ /dev/null @@ -1,96 +0,0 @@ -/* - * Copyright 2008-2014 Arsen Chaloyan - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - * - * $Id: umcframework.h 2136 2014-07-04 06:33:36Z achaloyan@gmail.com $ - */ - -#ifndef UMC_FRAMEWORK_H -#define UMC_FRAMEWORK_H - -/** - * @file umcframework.h - * @brief UMC Application Framework - */ - -#include -#include -#include "mrcp_application.h" -#include "apt_consumer_task.h" - -class UmcSession; -class UmcScenario; - -class UmcFramework -{ -public: -/* ============================ CREATORS =================================== */ - UmcFramework(); - ~UmcFramework(); - -/* ============================ MANIPULATORS =============================== */ - bool Create(apt_dir_layout_t* pDirLayout, apr_pool_t* pool); - void Destroy(); - - void RunSession(const char* pScenarioName, const char* pProfileName); - void StopSession(const char* id); - void KillSession(const char* id); - - void ShowScenarios(); - void ShowSessions(); - -protected: - bool CreateMrcpClient(); - void DestroyMrcpClient(); - - bool CreateTask(); - void DestroyTask(); - - UmcScenario* CreateScenario(const char* pType); - apr_xml_doc* LoadDocument(); - - bool LoadScenarios(); - void DestroyScenarios(); - - bool ProcessRunRequest(const char* pScenarioName, const char* pProfileName); - void ProcessStopRequest(const char* id); - void ProcessKillRequest(const char* id); - void ProcessShowScenarios(); - void ProcessShowSessions(); - - bool AddSession(UmcSession* pSession); - bool RemoveSession(UmcSession* pSession); - -/* ============================ HANDLERS =================================== */ - friend apt_bool_t UmcProcessMsg(apt_task_t* pTask, apt_task_msg_t* pMsg); - friend void UmcOnStartComplete(apt_task_t* pTask); - friend void UmcOnTerminateComplete(apt_task_t* pTask); - - friend apt_bool_t AppMessageHandler(const mrcp_app_message_t* pAppMessage); - friend apt_bool_t AppOnSessionTerminate(mrcp_application_t *application, mrcp_session_t *session, mrcp_sig_status_code_e status); - -private: -/* ============================ DATA ======================================= */ - apr_pool_t* m_pPool; - apt_dir_layout_t* m_pDirLayout; - apt_consumer_task_t* m_pTask; - - mrcp_client_t* m_pMrcpClient; - mrcp_application_t* m_pMrcpApplication; - - apr_hash_t* m_pScenarioTable; - apr_hash_t* m_pSessionTable; -}; - -#endif /* UMC_FRAMEWORK_H */ diff --git a/libs/unimrcp/platforms/umc/include/umcscenario.h b/libs/unimrcp/platforms/umc/include/umcscenario.h deleted file mode 100644 index c3f3b03cc64..00000000000 --- a/libs/unimrcp/platforms/umc/include/umcscenario.h +++ /dev/null @@ -1,129 +0,0 @@ -/* - * Copyright 2008-2014 Arsen Chaloyan - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - * - * $Id: umcscenario.h 2136 2014-07-04 06:33:36Z achaloyan@gmail.com $ - */ - -#ifndef UMC_SCENARIO_H -#define UMC_SCENARIO_H - -/** - * @file umcscenario.h - * @brief UMC Scenario - */ - -#include -#include "mrcp_application.h" - -class UmcSession; - -class UmcScenario -{ -public: -/* ============================ CREATORS =================================== */ - UmcScenario(); - virtual ~UmcScenario(); - -/* ============================ MANIPULATORS =============================== */ - virtual bool Load(const apr_xml_elem* pElem, apr_pool_t* pool); - virtual void Destroy(); - - virtual UmcSession* CreateSession() = 0; - - void SetDirLayout(apt_dir_layout_t* pDirLayout); - void SetName(const char* pName); - void SetMrcpProfile(const char* pMrcpProfile); - - bool InitCapabilities(mpf_stream_capabilities_t* pCapabilities) const; - -/* ============================ ACCESSORS ================================== */ - apt_dir_layout_t* GetDirLayout() const; - const char* GetName() const; - const char* GetMrcpProfile() const; - -/* ============================ INQUIRIES ================================== */ - bool IsDiscoveryEnabled() const; - -protected: -/* ============================ MANIPULATORS =============================== */ - virtual bool LoadElement(const apr_xml_elem* pElem, apr_pool_t* pool); - - bool LoadDiscovery(const apr_xml_elem* pElem, apr_pool_t* pool); - bool LoadTermination(const apr_xml_elem* pElem, apr_pool_t* pool); - bool LoadCapabilities(const apr_xml_elem* pElem, apr_pool_t* pool); - bool LoadRtpTermination(const apr_xml_elem* pElem, apr_pool_t* pool); - - const char* LoadFileContent(const char* pFileName, apr_size_t& size, apr_pool_t* pool) const; - const char* LoadFileContent(const char* pFileName, apr_pool_t* pool) const; - static int ParseRates(const char* pStr, apr_pool_t* pool); - -/* ============================ INQUIRIES ================================== */ - static bool IsElementEnabled(const apr_xml_elem* pElem); - -/* ============================ DATA ======================================= */ - const char* m_pName; - const char* m_pMrcpProfile; - apt_dir_layout_t* m_pDirLayout; - - bool m_ResourceDiscovery; - mpf_codec_capabilities_t* m_pCapabilities; - mpf_rtp_termination_descriptor_t* m_pRtpDescriptor; -}; - - -/* ============================ INLINE METHODS ============================= */ -inline void UmcScenario::SetDirLayout(apt_dir_layout_t* pDirLayout) -{ - m_pDirLayout = pDirLayout; -} - -inline apt_dir_layout_t* UmcScenario::GetDirLayout() const -{ - return m_pDirLayout; -} - -inline void UmcScenario::SetName(const char* pName) -{ - m_pName = pName; -} - -inline const char* UmcScenario::GetName() const -{ - return m_pName; -} - -inline void UmcScenario::SetMrcpProfile(const char* pMrcpProfile) -{ - m_pMrcpProfile = pMrcpProfile; -} - -inline const char* UmcScenario::GetMrcpProfile() const -{ - return m_pMrcpProfile; -} - -inline bool UmcScenario::IsDiscoveryEnabled() const -{ - return m_ResourceDiscovery; -} - - -inline const char* UmcScenario::LoadFileContent(const char* pFileName, apr_pool_t* pool) const -{ - apr_size_t dummy; - return LoadFileContent(pFileName, dummy, pool); -} - -#endif /* UMC_SCENARIO_H */ diff --git a/libs/unimrcp/platforms/umc/include/umcsession.h b/libs/unimrcp/platforms/umc/include/umcsession.h deleted file mode 100644 index a265d2a546a..00000000000 --- a/libs/unimrcp/platforms/umc/include/umcsession.h +++ /dev/null @@ -1,131 +0,0 @@ -/* - * Copyright 2008-2014 Arsen Chaloyan - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - * - * $Id: umcsession.h 2136 2014-07-04 06:33:36Z achaloyan@gmail.com $ - */ - -#ifndef UMC_SESSION_H -#define UMC_SESSION_H - -/** - * @file umcsession.h - * @brief UMC Session - */ - -#include "mrcp_application.h" - -class UmcScenario; - -class UmcSession -{ -public: -/* ============================ CREATORS =================================== */ - UmcSession(const UmcScenario* pScenario); - virtual ~UmcSession(); - -/* ============================ MANIPULATORS =============================== */ - virtual bool Run(); - virtual bool Stop(); - virtual bool Terminate(); - - void SetMrcpProfile(const char* pMrcpProfile); - void SetMrcpApplication(mrcp_application_t* pMrcpApplication); - -/* ============================ HANDLERS =================================== */ - virtual bool OnSessionTerminate(mrcp_sig_status_code_e status); - virtual bool OnSessionUpdate(mrcp_sig_status_code_e status); - virtual bool OnChannelAdd(mrcp_channel_t *channel, mrcp_sig_status_code_e status); - virtual bool OnChannelRemove(mrcp_channel_t *channel, mrcp_sig_status_code_e status); - virtual bool OnMessageReceive(mrcp_channel_t *channel, mrcp_message_t *message); - virtual bool OnTerminateEvent(mrcp_channel_t *channel); - virtual bool OnResourceDiscover(mrcp_session_descriptor_t* descriptor, mrcp_sig_status_code_e status); - -/* ============================ ACCESSORS ================================== */ - const UmcScenario* GetScenario() const; - - const char* GetId() const; - -protected: -/* ============================ MANIPULATORS =============================== */ - virtual bool Start() = 0; - - bool CreateMrcpSession(const char* pProfileName); - bool DestroyMrcpSession(); - - bool AddMrcpChannel(mrcp_channel_t* pMrcpChannel); - bool RemoveMrcpChannel(mrcp_channel_t* pMrcpChannel); - bool SendMrcpRequest(mrcp_channel_t* pMrcpChannel, mrcp_message_t* pMrcpMessage); - bool ResourceDiscover(); - - mrcp_channel_t* CreateMrcpChannel( - mrcp_resource_id resource_id, - mpf_termination_t* pTermination, - mpf_rtp_termination_descriptor_t* pRtpDescriptor, - void* pObj); - mpf_termination_t* CreateAudioTermination( - const mpf_audio_stream_vtable_t* pStreamVtable, - mpf_stream_capabilities_t* pCapabilities, - void* pObj); - mrcp_message_t* CreateMrcpMessage( - mrcp_channel_t* pMrcpChannel, - mrcp_method_id method_id); - -/* ============================ ACCESSORS ================================== */ - apr_pool_t* GetSessionPool() const; - const char* GetMrcpSessionId() const; - mrcp_message_t* GetMrcpMessage() const; - -/* ============================ DATA ======================================= */ - const UmcScenario* m_pScenario; - const char* m_pMrcpProfile; - char m_Id[10]; - -private: -/* ============================ DATA ======================================= */ - mrcp_application_t* m_pMrcpApplication; - mrcp_session_t* m_pMrcpSession; - mrcp_message_t* m_pMrcpMessage; /* last message sent */ - bool m_Running; - bool m_Terminating; -}; - - -/* ============================ INLINE METHODS ============================= */ -inline const UmcScenario* UmcSession::GetScenario() const -{ - return m_pScenario; -} - -inline const char* UmcSession::GetId() const -{ - return m_Id; -} - -inline void UmcSession::SetMrcpApplication(mrcp_application_t* pMrcpApplication) -{ - m_pMrcpApplication = pMrcpApplication; -} - -inline void UmcSession::SetMrcpProfile(const char* pMrcpProfile) -{ - m_pMrcpProfile = pMrcpProfile; -} - -inline mrcp_message_t* UmcSession::GetMrcpMessage() const -{ - return m_pMrcpMessage; -} - -#endif /* UMC_SESSION_H */ diff --git a/libs/unimrcp/platforms/umc/include/verifierscenario.h b/libs/unimrcp/platforms/umc/include/verifierscenario.h deleted file mode 100644 index b4b49a382bf..00000000000 --- a/libs/unimrcp/platforms/umc/include/verifierscenario.h +++ /dev/null @@ -1,75 +0,0 @@ -/* - * Copyright 2008-2014 Arsen Chaloyan - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - * - * $Id: verifierscenario.h 2136 2014-07-04 06:33:36Z achaloyan@gmail.com $ - */ - -#ifndef VERIFIER_SCENARIO_H -#define VERIFIER_SCENARIO_H - -/** - * @file verifierscenario.h - * @brief Verifier Scenario - */ - -#include "umcscenario.h" - -class VerifierScenario : public UmcScenario -{ -public: -/* ============================ CREATORS =================================== */ - VerifierScenario(); - virtual ~VerifierScenario(); - -/* ============================ MANIPULATORS =============================== */ - virtual void Destroy(); - - virtual UmcSession* CreateSession(); - -/* ============================ ACCESSORS ================================== */ - const char* GetRepositoryURI() const; - const char* GetVerificationMode() const; - const char* GetVoiceprintIdentifier() const; - -/* ============================ INQUIRIES ================================== */ -protected: -/* ============================ MANIPULATORS =============================== */ - virtual bool LoadElement(const apr_xml_elem* pElem, apr_pool_t* pool); - - bool LoadVerify(const apr_xml_elem* pElem, apr_pool_t* pool); - -/* ============================ DATA ======================================= */ - const char* m_RepositoryURI; - const char* m_VerificationMode; - const char* m_VoiceprintIdentifier; -}; - -/* ============================ INLINE METHODS ============================= */ -inline const char* VerifierScenario::GetRepositoryURI() const -{ - return m_RepositoryURI; -} - -inline const char* VerifierScenario::GetVerificationMode() const -{ - return m_VerificationMode; -} - -inline const char* VerifierScenario::GetVoiceprintIdentifier() const -{ - return m_VoiceprintIdentifier; -} - -#endif /* VERIFIER_SCENARIO_H */ diff --git a/libs/unimrcp/platforms/umc/include/verifiersession.h b/libs/unimrcp/platforms/umc/include/verifiersession.h deleted file mode 100644 index 777a58507af..00000000000 --- a/libs/unimrcp/platforms/umc/include/verifiersession.h +++ /dev/null @@ -1,74 +0,0 @@ -/* - * Copyright 2008-2014 Arsen Chaloyan - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - * - * $Id: verifiersession.h 2136 2014-07-04 06:33:36Z achaloyan@gmail.com $ - */ - -#ifndef VERIFIER_SESSION_H -#define VERIFIER_SESSION_H - -/** - * @file verifiersession.h - * @brief Verifier Session - */ - -#include "umcsession.h" - -class VerifierScenario; -struct VerifierChannel; - -class VerifierSession : public UmcSession -{ -public: -/* ============================ CREATORS =================================== */ - VerifierSession(const VerifierScenario* pScenario); - virtual ~VerifierSession(); - -protected: -/* ============================ MANIPULATORS =============================== */ - virtual bool Start(); - virtual bool Stop(); - - VerifierChannel* CreateVerifierChannel(); - bool StartVerification(mrcp_channel_t* pMrcpChannel); - - mrcp_message_t* CreateStartSessionRequest(mrcp_channel_t* pMrcpChannel); - mrcp_message_t* CreateEndSessionRequest(mrcp_channel_t* pMrcpChannel); - mrcp_message_t* CreateVerificationRequest(mrcp_channel_t* pMrcpChannel); - - FILE* GetAudioIn(const mpf_codec_descriptor_t* pDescriptor, apr_pool_t* pool) const; - -/* ============================ HANDLERS =================================== */ - virtual bool OnSessionTerminate(mrcp_sig_status_code_e status); - virtual bool OnChannelAdd(mrcp_channel_t* channel, mrcp_sig_status_code_e status); - virtual bool OnMessageReceive(mrcp_channel_t* channel, mrcp_message_t* message); - -/* ============================ ACCESSORS ================================== */ - const VerifierScenario* GetScenario() const; - -private: -/* ============================ DATA ======================================= */ - VerifierChannel* m_pVerifierChannel; - const char* m_ContentId; -}; - - -/* ============================ INLINE METHODS ============================= */ -inline const VerifierScenario* VerifierSession::GetScenario() const -{ - return (VerifierScenario*)m_pScenario; -} - -#endif /* VERIFIER_SESSION_H */ diff --git a/libs/unimrcp/platforms/umc/src/dtmfscenario.cpp b/libs/unimrcp/platforms/umc/src/dtmfscenario.cpp deleted file mode 100644 index 190c9a87f1b..00000000000 --- a/libs/unimrcp/platforms/umc/src/dtmfscenario.cpp +++ /dev/null @@ -1,79 +0,0 @@ -/* - * Copyright 2008-2014 Arsen Chaloyan - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - * - * $Id: dtmfscenario.cpp 2136 2014-07-04 06:33:36Z achaloyan@gmail.com $ - */ - -#include -#include "dtmfscenario.h" -#include "dtmfsession.h" -#include "apt_log.h" - -DtmfScenario::DtmfScenario() : - m_ContentType(NULL), - m_Grammar(NULL), - m_Digits(NULL) -{ -} - -DtmfScenario::~DtmfScenario() -{ -} - -void DtmfScenario::Destroy() -{ -} - -bool DtmfScenario::LoadElement(const apr_xml_elem* pElem, apr_pool_t* pool) -{ - if(UmcScenario::LoadElement(pElem,pool)) - return true; - - if(strcasecmp(pElem->name,"recognize") == 0) - { - LoadRecognize(pElem,pool); - return true; - } - - return false; -} - -bool DtmfScenario::LoadRecognize(const apr_xml_elem* pElem, apr_pool_t* pool) -{ - const apr_xml_attr* pAttr; - for(pAttr = pElem->attr; pAttr; pAttr = pAttr->next) - { - if(strcasecmp(pAttr->name,"content-type") == 0) - { - m_ContentType = pAttr->value; - } - else if(strcasecmp(pAttr->name,"grammar") == 0) - { - m_Grammar = pAttr->value; - } - else if(strcasecmp(pAttr->name,"digits") == 0) - { - m_Digits = pAttr->value; - } - } - - return true; -} - - -UmcSession* DtmfScenario::CreateSession() -{ - return new DtmfSession(this); -} diff --git a/libs/unimrcp/platforms/umc/src/dtmfsession.cpp b/libs/unimrcp/platforms/umc/src/dtmfsession.cpp deleted file mode 100644 index b10b13946ce..00000000000 --- a/libs/unimrcp/platforms/umc/src/dtmfsession.cpp +++ /dev/null @@ -1,279 +0,0 @@ -/* - * Copyright 2008-2014 Arsen Chaloyan - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - * - * $Id: dtmfsession.cpp 2136 2014-07-04 06:33:36Z achaloyan@gmail.com $ - */ - -#include "dtmfsession.h" -#include "dtmfscenario.h" -#include "mrcp_message.h" -#include "mrcp_generic_header.h" -#include "mrcp_recog_header.h" -#include "mrcp_recog_resource.h" -#include "mpf_dtmf_generator.h" -#include "apt_nlsml_doc.h" -#include "apt_log.h" - -struct RecogChannel -{ - /** MRCP control channel */ - mrcp_channel_t* m_pMrcpChannel; - /** DTMF generator */ - mpf_dtmf_generator_t* m_pDtmfGenerator; - /** Streaming is in-progress */ - bool m_Streaming; -}; - -DtmfSession::DtmfSession(const DtmfScenario* pScenario) : - UmcSession(pScenario), - m_pRecogChannel(NULL) -{ -} - -DtmfSession::~DtmfSession() -{ -} - -bool DtmfSession::Start() -{ - /* create channel and associate all the required data */ - m_pRecogChannel = CreateRecogChannel(); - if(!m_pRecogChannel) - return false; - - /* add channel to session (send asynchronous request) */ - if(!AddMrcpChannel(m_pRecogChannel->m_pMrcpChannel)) - { - delete m_pRecogChannel; - m_pRecogChannel = NULL; - return false; - } - return true; -} - -bool DtmfSession::OnSessionTerminate(mrcp_sig_status_code_e status) -{ - if(m_pRecogChannel) - { - if(m_pRecogChannel->m_pDtmfGenerator) - { - mpf_dtmf_generator_destroy(m_pRecogChannel->m_pDtmfGenerator); - m_pRecogChannel->m_pDtmfGenerator = NULL; - } - - delete m_pRecogChannel; - m_pRecogChannel = NULL; - } - return UmcSession::OnSessionTerminate(status); -} - -static apt_bool_t ReadStream(mpf_audio_stream_t* pStream, mpf_frame_t* pFrame) -{ - RecogChannel* pRecogChannel = (RecogChannel*) pStream->obj; - if(pRecogChannel && pRecogChannel->m_Streaming) - { - if(pRecogChannel->m_pDtmfGenerator) - { - mpf_dtmf_generator_put_frame(pRecogChannel->m_pDtmfGenerator,pFrame); - } - } - return TRUE; -} - -RecogChannel* DtmfSession::CreateRecogChannel() -{ - mrcp_channel_t* pChannel; - mpf_termination_t* pTermination; - mpf_stream_capabilities_t* pCapabilities; - apr_pool_t* pool = GetSessionPool(); - - /* create channel */ - RecogChannel *pRecogChannel = new RecogChannel; - pRecogChannel->m_pMrcpChannel = NULL; - pRecogChannel->m_pDtmfGenerator = NULL; - pRecogChannel->m_Streaming = false; - - /* create source stream capabilities */ - pCapabilities = mpf_source_stream_capabilities_create(pool); - GetScenario()->InitCapabilities(pCapabilities); - - static const mpf_audio_stream_vtable_t audio_stream_vtable = - { - NULL, - NULL, - NULL, - ReadStream, - NULL, - NULL, - NULL, - NULL - }; - - pTermination = CreateAudioTermination( - &audio_stream_vtable, /* virtual methods table of audio stream */ - pCapabilities, /* capabilities of audio stream */ - pRecogChannel); /* object to associate */ - - pChannel = CreateMrcpChannel( - MRCP_RECOGNIZER_RESOURCE, /* MRCP resource identifier */ - pTermination, /* media termination, used to terminate audio stream */ - NULL, /* RTP descriptor, used to create RTP termination (NULL by default) */ - pRecogChannel); /* object to associate */ - if(!pChannel) - { - delete pRecogChannel; - return NULL; - } - - pRecogChannel->m_pMrcpChannel = pChannel; - return pRecogChannel; -} - -bool DtmfSession::OnChannelAdd(mrcp_channel_t* pMrcpChannel, mrcp_sig_status_code_e status) -{ - if(!UmcSession::OnChannelAdd(pMrcpChannel,status)) - return false; - - if(status != MRCP_SIG_STATUS_CODE_SUCCESS) - { - /* error case, just terminate the demo */ - return Terminate(); - } - - RecogChannel* pRecogChannel = (RecogChannel*) mrcp_application_channel_object_get(pMrcpChannel); - if(pRecogChannel) - { - const mpf_audio_stream_t* pStream = mrcp_application_audio_stream_get(pMrcpChannel); - if(pStream) - { - pRecogChannel->m_pDtmfGenerator = mpf_dtmf_generator_create(pStream,GetSessionPool()); - } - } - - return StartRecognition(pMrcpChannel); -} - -bool DtmfSession::OnMessageReceive(mrcp_channel_t* pMrcpChannel, mrcp_message_t* pMrcpMessage) -{ - if(!UmcSession::OnMessageReceive(pMrcpChannel,pMrcpMessage)) - return false; - - const DtmfScenario* pScenario = GetScenario(); - RecogChannel* pRecogChannel = (RecogChannel*) mrcp_application_channel_object_get(pMrcpChannel); - if(pMrcpMessage->start_line.message_type == MRCP_MESSAGE_TYPE_RESPONSE) - { - if(pMrcpMessage->start_line.method_id == RECOGNIZER_RECOGNIZE) - { - /* received the response to RECOGNIZE request */ - if(pMrcpMessage->start_line.request_state == MRCP_REQUEST_STATE_INPROGRESS) - { - /* start to stream the DTMFs to recognize */ - if(pRecogChannel && pRecogChannel->m_pDtmfGenerator) - { - const char* digits = pScenario->GetDigits(); - if(digits) - { - mpf_dtmf_generator_enqueue(pRecogChannel->m_pDtmfGenerator,digits); - pRecogChannel->m_Streaming = true; - } - } - } - else - { - /* received unexpected response, terminate the session */ - Terminate(); - } - } - else - { - /* received unexpected response */ - } - } - else if(pMrcpMessage->start_line.message_type == MRCP_MESSAGE_TYPE_EVENT) - { - if(pMrcpMessage->start_line.method_id == RECOGNIZER_RECOGNITION_COMPLETE) - { - ParseNLSMLResult(pMrcpMessage); - if(pRecogChannel) - { - pRecogChannel->m_Streaming = false; - } - Terminate(); - } - else if(pMrcpMessage->start_line.method_id == RECOGNIZER_START_OF_INPUT) - { - /* received start-of-input, do whatever you need here */ - } - } - return true; -} - -bool DtmfSession::StartRecognition(mrcp_channel_t* pMrcpChannel) -{ - RecogChannel* pRecogChannel = (RecogChannel*) mrcp_application_channel_object_get(pMrcpChannel); - /* create and send RECOGNIZE request */ - mrcp_message_t* pMrcpMessage = CreateRecognizeRequest(pMrcpChannel); - if(pMrcpMessage) - { - SendMrcpRequest(pRecogChannel->m_pMrcpChannel,pMrcpMessage); - } - - return true; -} - -mrcp_message_t* DtmfSession::CreateRecognizeRequest(mrcp_channel_t* pMrcpChannel) -{ - mrcp_message_t* pMrcpMessage = CreateMrcpMessage(pMrcpChannel,RECOGNIZER_RECOGNIZE); - if(!pMrcpMessage) - return NULL; - - const DtmfScenario* pScenario = GetScenario(); - - mrcp_generic_header_t* pGenericHeader; - mrcp_recog_header_t* pRecogHeader; - - /* get/allocate generic header */ - pGenericHeader = (mrcp_generic_header_t*) mrcp_generic_header_prepare(pMrcpMessage); - if(pGenericHeader) - { - apt_string_assign(&pGenericHeader->content_type,pScenario->GetContentType(),pMrcpMessage->pool); - mrcp_generic_header_property_add(pMrcpMessage,GENERIC_HEADER_CONTENT_TYPE); - /* set message body */ - if(pScenario->GetGrammar()) - apt_string_assign(&pMrcpMessage->body,pScenario->GetGrammar(),pMrcpMessage->pool); - } - /* get/allocate recognizer header */ - pRecogHeader = (mrcp_recog_header_t*) mrcp_resource_header_prepare(pMrcpMessage); - if(pRecogHeader) - { - /* set recognizer header fields */ - if(pMrcpMessage->start_line.version == MRCP_VERSION_2) - { - pRecogHeader->cancel_if_queue = FALSE; - mrcp_resource_header_property_add(pMrcpMessage,RECOGNIZER_HEADER_CANCEL_IF_QUEUE); - } - } - return pMrcpMessage; -} - -bool DtmfSession::ParseNLSMLResult(mrcp_message_t* pMrcpMessage) -{ - nlsml_result_t *pResult = nlsml_result_parse(pMrcpMessage->body.buf, pMrcpMessage->body.length, pMrcpMessage->pool); - if(!pResult) - return false; - - nlsml_result_trace(pResult, pMrcpMessage->pool); - return true; -} diff --git a/libs/unimrcp/platforms/umc/src/main.cpp b/libs/unimrcp/platforms/umc/src/main.cpp deleted file mode 100644 index d06873989ef..00000000000 --- a/libs/unimrcp/platforms/umc/src/main.cpp +++ /dev/null @@ -1,26 +0,0 @@ -/* - * Copyright 2008-2014 Arsen Chaloyan - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - * - * $Id: main.cpp 2136 2014-07-04 06:33:36Z achaloyan@gmail.com $ - */ - -#include "umcconsole.h" - -int main(int argc, const char * const *argv) -{ - UmcConsole console; - console.Run(argc,argv); - return 0; -} diff --git a/libs/unimrcp/platforms/umc/src/recogscenario.cpp b/libs/unimrcp/platforms/umc/src/recogscenario.cpp deleted file mode 100644 index 658a46586da..00000000000 --- a/libs/unimrcp/platforms/umc/src/recogscenario.cpp +++ /dev/null @@ -1,116 +0,0 @@ -/* - * Copyright 2008-2014 Arsen Chaloyan - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - * - * $Id: recogscenario.cpp 2136 2014-07-04 06:33:36Z achaloyan@gmail.com $ - */ - -#include -#include "recogscenario.h" -#include "recogsession.h" -#include "mrcp_message.h" -#include "mrcp_generic_header.h" -#include "mrcp_recog_header.h" -#include "mrcp_recog_resource.h" -#include "apt_log.h" - -RecogScenario::RecogScenario() : - m_DefineGrammar(true), - m_Recognize(true), - m_ContentType("application/srgs+xml"), - m_Content(NULL), - m_ContentLength(0), - m_AudioSource(NULL) -{ -} - -RecogScenario::~RecogScenario() -{ -} - -void RecogScenario::Destroy() -{ -} - -bool RecogScenario::LoadElement(const apr_xml_elem* pElem, apr_pool_t* pool) -{ - if(UmcScenario::LoadElement(pElem,pool)) - return true; - - if(strcasecmp(pElem->name,"define-grammar") == 0) - { - LoadDefineGrammar(pElem,pool); - return true; - } - else if(strcasecmp(pElem->name,"recognize") == 0) - { - LoadRecognize(pElem,pool); - return true; - } - - return false; -} - -bool RecogScenario::LoadRecognize(const apr_xml_elem* pElem, apr_pool_t* pool) -{ - const apr_xml_attr* pAttr; - for(pAttr = pElem->attr; pAttr; pAttr = pAttr->next) - { - if(strcasecmp(pAttr->name,"enable") == 0) - { - m_Recognize = atoi(pAttr->value) > 0; - } - else if(strcasecmp(pAttr->name,"content-type") == 0) - { - m_ContentType = pAttr->value; - } - else if(strcasecmp(pAttr->name,"content-location") == 0) - { - m_Content = LoadFileContent(pAttr->value,pool); - } - else if(strcasecmp(pAttr->name,"audio-source") == 0) - { - m_AudioSource = pAttr->value; - } - } - - return true; -} - -bool RecogScenario::LoadDefineGrammar(const apr_xml_elem* pElem, apr_pool_t* pool) -{ - const apr_xml_attr* pAttr; - for(pAttr = pElem->attr; pAttr; pAttr = pAttr->next) - { - if(strcasecmp(pAttr->name,"enable") == 0) - { - m_DefineGrammar = atoi(pAttr->value) > 0; - } - else if(strcasecmp(pAttr->name,"content-type") == 0) - { - m_ContentType = pAttr->value; - } - else if(strcasecmp(pAttr->name,"content-location") == 0) - { - m_Content = LoadFileContent(pAttr->value,m_ContentLength,pool); - } - } - return true; -} - - -UmcSession* RecogScenario::CreateSession() -{ - return new RecogSession(this); -} diff --git a/libs/unimrcp/platforms/umc/src/recogsession.cpp b/libs/unimrcp/platforms/umc/src/recogsession.cpp deleted file mode 100644 index 5779bf4418f..00000000000 --- a/libs/unimrcp/platforms/umc/src/recogsession.cpp +++ /dev/null @@ -1,456 +0,0 @@ -/* - * Copyright 2008-2014 Arsen Chaloyan - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - * - * $Id: recogsession.cpp 2136 2014-07-04 06:33:36Z achaloyan@gmail.com $ - */ - -#include "recogsession.h" -#include "recogscenario.h" -#include "mrcp_message.h" -#include "mrcp_generic_header.h" -#include "mrcp_recog_header.h" -#include "mrcp_recog_resource.h" -#include "apt_nlsml_doc.h" -#include "apt_log.h" - -struct RecogChannel -{ - /** MRCP control channel */ - mrcp_channel_t* m_pMrcpChannel; - /** IN-PROGRESS RECOGNIZE request */ - mrcp_message_t* m_pRecogRequest; - /** Streaming is in-progress */ - bool m_Streaming; - /** File to read audio stream from */ - FILE* m_pAudioIn; - /** Estimated time to complete (used if no audio_in available) */ - apr_size_t m_TimeToComplete; - - RecogChannel() : - m_pMrcpChannel(NULL), - m_pRecogRequest(NULL), - m_Streaming(false), - m_pAudioIn(NULL), - m_TimeToComplete(0) {} -}; - -RecogSession::RecogSession(const RecogScenario* pScenario) : - UmcSession(pScenario), - m_pRecogChannel(NULL), - m_ContentId("request1@form-level") -{ -} - -RecogSession::~RecogSession() -{ -} - -bool RecogSession::Start() -{ - const RecogScenario* pScenario = GetScenario(); - if(!pScenario->IsDefineGrammarEnabled() && !pScenario->IsRecognizeEnabled()) - return false; - - /* create channel and associate all the required data */ - m_pRecogChannel = CreateRecogChannel(); - if(!m_pRecogChannel) - return false; - - /* add channel to session (send asynchronous request) */ - if(!AddMrcpChannel(m_pRecogChannel->m_pMrcpChannel)) - { - delete m_pRecogChannel; - m_pRecogChannel = NULL; - return false; - } - return true; -} - -bool RecogSession::Stop() -{ - if(!UmcSession::Stop()) - return false; - - if(!m_pRecogChannel) - return false; - - mrcp_message_t* pStopMessage = CreateMrcpMessage(m_pRecogChannel->m_pMrcpChannel,RECOGNIZER_STOP); - if(!pStopMessage) - return false; - - if(m_pRecogChannel->m_pRecogRequest) - { - mrcp_generic_header_t* pGenericHeader; - /* get/allocate generic header */ - pGenericHeader = (mrcp_generic_header_t*) mrcp_generic_header_prepare(pStopMessage); - if(pGenericHeader) - { - pGenericHeader->active_request_id_list.count = 1; - pGenericHeader->active_request_id_list.ids[0] = - m_pRecogChannel->m_pRecogRequest->start_line.request_id; - mrcp_generic_header_property_add(pStopMessage,GENERIC_HEADER_ACTIVE_REQUEST_ID_LIST); - } - - m_pRecogChannel->m_pRecogRequest = NULL; - } - - return SendMrcpRequest(m_pRecogChannel->m_pMrcpChannel,pStopMessage); -} - -bool RecogSession::OnSessionTerminate(mrcp_sig_status_code_e status) -{ - if(m_pRecogChannel) - { - FILE* pAudioIn = m_pRecogChannel->m_pAudioIn; - if(pAudioIn) - { - m_pRecogChannel->m_pAudioIn = NULL; - fclose(pAudioIn); - } - - delete m_pRecogChannel; - m_pRecogChannel = NULL; - } - return UmcSession::OnSessionTerminate(status); -} - -static apt_bool_t ReadStream(mpf_audio_stream_t* pStream, mpf_frame_t* pFrame) -{ - RecogChannel* pRecogChannel = (RecogChannel*) pStream->obj; - if(pRecogChannel && pRecogChannel->m_Streaming) - { - if(pRecogChannel->m_pAudioIn) - { - if(fread(pFrame->codec_frame.buffer,1,pFrame->codec_frame.size,pRecogChannel->m_pAudioIn) == pFrame->codec_frame.size) - { - /* normal read */ - pFrame->type |= MEDIA_FRAME_TYPE_AUDIO; - } - else - { - /* file is over */ - pRecogChannel->m_Streaming = false; - } - } - else - { - /* fill with silence in case no file available */ - if(pRecogChannel->m_TimeToComplete >= CODEC_FRAME_TIME_BASE) - { - pFrame->type |= MEDIA_FRAME_TYPE_AUDIO; - memset(pFrame->codec_frame.buffer,0,pFrame->codec_frame.size); - pRecogChannel->m_TimeToComplete -= CODEC_FRAME_TIME_BASE; - } - else - { - pRecogChannel->m_Streaming = false; - } - } - } - return TRUE; -} - -RecogChannel* RecogSession::CreateRecogChannel() -{ - mrcp_channel_t* pChannel; - mpf_termination_t* pTermination; - mpf_stream_capabilities_t* pCapabilities; - apr_pool_t* pool = GetSessionPool(); - - /* create channel */ - RecogChannel* pRecogChannel = new RecogChannel; - - /* create source stream capabilities */ - pCapabilities = mpf_source_stream_capabilities_create(pool); - GetScenario()->InitCapabilities(pCapabilities); - - static const mpf_audio_stream_vtable_t audio_stream_vtable = - { - NULL, - NULL, - NULL, - ReadStream, - NULL, - NULL, - NULL, - NULL - }; - - pTermination = CreateAudioTermination( - &audio_stream_vtable, /* virtual methods table of audio stream */ - pCapabilities, /* capabilities of audio stream */ - pRecogChannel); /* object to associate */ - - pChannel = CreateMrcpChannel( - MRCP_RECOGNIZER_RESOURCE, /* MRCP resource identifier */ - pTermination, /* media termination, used to terminate audio stream */ - NULL, /* RTP descriptor, used to create RTP termination (NULL by default) */ - pRecogChannel); /* object to associate */ - if(!pChannel) - { - delete pRecogChannel; - return NULL; - } - - pRecogChannel->m_pMrcpChannel = pChannel; - return pRecogChannel; -} - -bool RecogSession::OnChannelAdd(mrcp_channel_t* pMrcpChannel, mrcp_sig_status_code_e status) -{ - if(!UmcSession::OnChannelAdd(pMrcpChannel,status)) - return false; - - if(status != MRCP_SIG_STATUS_CODE_SUCCESS) - { - /* error case, just terminate the demo */ - return Terminate(); - } - - if(GetScenario()->IsDefineGrammarEnabled()) - { - mrcp_message_t* pMrcpMessage = CreateDefineGrammarRequest(pMrcpChannel); - if(pMrcpMessage) - SendMrcpRequest(pMrcpChannel,pMrcpMessage); - return true; - } - - return StartRecognition(pMrcpChannel); -} - -bool RecogSession::OnMessageReceive(mrcp_channel_t* pMrcpChannel, mrcp_message_t* pMrcpMessage) -{ - if(!UmcSession::OnMessageReceive(pMrcpChannel,pMrcpMessage)) - return false; - - RecogChannel* pRecogChannel = (RecogChannel*) mrcp_application_channel_object_get(pMrcpChannel); - if(pMrcpMessage->start_line.message_type == MRCP_MESSAGE_TYPE_RESPONSE) - { - /* received MRCP response */ - if(pMrcpMessage->start_line.method_id == RECOGNIZER_DEFINE_GRAMMAR) - { - /* received the response to DEFINE-GRAMMAR request */ - if(pMrcpMessage->start_line.request_state == MRCP_REQUEST_STATE_COMPLETE) - { - OnDefineGrammar(pMrcpChannel); - } - else - { - /* received unexpected response, terminate the session */ - Terminate(); - } - } - else if(pMrcpMessage->start_line.method_id == RECOGNIZER_RECOGNIZE) - { - /* received the response to RECOGNIZE request */ - if(pMrcpMessage->start_line.request_state == MRCP_REQUEST_STATE_INPROGRESS) - { - RecogChannel* pRecogChannel = (RecogChannel*) mrcp_application_channel_object_get(pMrcpChannel); - if(pRecogChannel) - pRecogChannel->m_pRecogRequest = GetMrcpMessage(); - - /* start to stream the speech to recognize */ - if(pRecogChannel) - pRecogChannel->m_Streaming = true; - } - else - { - /* received unexpected response, terminate the session */ - Terminate(); - } - } - else - { - /* received unexpected response */ - } - } - else if(pMrcpMessage->start_line.message_type == MRCP_MESSAGE_TYPE_EVENT) - { - if(pMrcpMessage->start_line.method_id == RECOGNIZER_RECOGNITION_COMPLETE) - { - ParseNLSMLResult(pMrcpMessage); - if(pRecogChannel) - pRecogChannel->m_Streaming = false; - - RecogChannel* pRecogChannel = (RecogChannel*) mrcp_application_channel_object_get(pMrcpChannel); - if(pRecogChannel) - pRecogChannel->m_pRecogRequest = NULL; - - Terminate(); - } - else if(pMrcpMessage->start_line.method_id == RECOGNIZER_START_OF_INPUT) - { - /* received start-of-input, do whatever you need here */ - } - } - return true; -} - -bool RecogSession::OnDefineGrammar(mrcp_channel_t* pMrcpChannel) -{ - if(GetScenario()->IsRecognizeEnabled()) - { - return StartRecognition(pMrcpChannel); - } - - return Terminate(); -} - -bool RecogSession::StartRecognition(mrcp_channel_t* pMrcpChannel) -{ - const mpf_codec_descriptor_t* pDescriptor = mrcp_application_source_descriptor_get(pMrcpChannel); - if(!pDescriptor) - { - apt_log(APT_LOG_MARK,APT_PRIO_WARNING,"Failed to Get Media Source Descriptor"); - return Terminate(); - } - - RecogChannel* pRecogChannel = (RecogChannel*) mrcp_application_channel_object_get(pMrcpChannel); - /* create and send RECOGNIZE request */ - mrcp_message_t* pMrcpMessage = CreateRecognizeRequest(pMrcpChannel); - if(pMrcpMessage) - { - SendMrcpRequest(pRecogChannel->m_pMrcpChannel,pMrcpMessage); - } - - pRecogChannel->m_pAudioIn = GetAudioIn(pDescriptor,GetSessionPool()); - if(!pRecogChannel->m_pAudioIn) - { - /* no audio input availble, set some estimated time to complete instead */ - pRecogChannel->m_TimeToComplete = 5000; // 5 sec - } - return true; -} - -mrcp_message_t* RecogSession::CreateDefineGrammarRequest(mrcp_channel_t* pMrcpChannel) -{ - mrcp_message_t* pMrcpMessage = CreateMrcpMessage(pMrcpChannel,RECOGNIZER_DEFINE_GRAMMAR); - if(!pMrcpMessage) - return NULL; - - const RecogScenario* pScenario = GetScenario(); - - mrcp_generic_header_t* pGenericHeader; - /* get/allocate generic header */ - pGenericHeader = (mrcp_generic_header_t*) mrcp_generic_header_prepare(pMrcpMessage); - if(pGenericHeader) - { - /* set generic header fields */ - if(pScenario->GetContentType()) - { - apt_string_assign(&pGenericHeader->content_type,pScenario->GetContentType(),pMrcpMessage->pool); - mrcp_generic_header_property_add(pMrcpMessage,GENERIC_HEADER_CONTENT_TYPE); - } - apt_string_assign(&pGenericHeader->content_id,m_ContentId,pMrcpMessage->pool); - mrcp_generic_header_property_add(pMrcpMessage,GENERIC_HEADER_CONTENT_ID); - } - - /* set message body */ - if(pScenario->GetContent()) - apt_string_assign_n(&pMrcpMessage->body,pScenario->GetContent(),pScenario->GetContentLength(),pMrcpMessage->pool); - return pMrcpMessage; -} - -mrcp_message_t* RecogSession::CreateRecognizeRequest(mrcp_channel_t* pMrcpChannel) -{ - mrcp_message_t* pMrcpMessage = CreateMrcpMessage(pMrcpChannel,RECOGNIZER_RECOGNIZE); - if(!pMrcpMessage) - return NULL; - - const RecogScenario* pScenario = GetScenario(); - - mrcp_generic_header_t* pGenericHeader; - mrcp_recog_header_t* pRecogHeader; - - /* get/allocate generic header */ - pGenericHeader = (mrcp_generic_header_t*) mrcp_generic_header_prepare(pMrcpMessage); - if(pGenericHeader) - { - /* set generic header fields */ - if(pScenario->IsDefineGrammarEnabled()) - { - apt_string_assign(&pGenericHeader->content_type,"text/uri-list",pMrcpMessage->pool); - /* set message body */ - const char* pContent = apr_pstrcat(pMrcpMessage->pool,"session:",m_ContentId,NULL); - apt_string_set(&pMrcpMessage->body,pContent); - } - else - { - apt_string_assign(&pGenericHeader->content_type,pScenario->GetContentType(),pMrcpMessage->pool); - /* set content-id */ - apt_string_assign(&pGenericHeader->content_id,m_ContentId,pMrcpMessage->pool); - mrcp_generic_header_property_add(pMrcpMessage,GENERIC_HEADER_CONTENT_ID); - /* set message body */ - if(pScenario->GetContent()) - apt_string_assign(&pMrcpMessage->body,pScenario->GetContent(),pMrcpMessage->pool); - } - mrcp_generic_header_property_add(pMrcpMessage,GENERIC_HEADER_CONTENT_TYPE); - } - /* get/allocate recognizer header */ - pRecogHeader = (mrcp_recog_header_t*) mrcp_resource_header_prepare(pMrcpMessage); - if(pRecogHeader) - { - /* set recognizer header fields */ - if(pMrcpMessage->start_line.version == MRCP_VERSION_2) - { - pRecogHeader->cancel_if_queue = FALSE; - mrcp_resource_header_property_add(pMrcpMessage,RECOGNIZER_HEADER_CANCEL_IF_QUEUE); - } - pRecogHeader->no_input_timeout = 5000; - mrcp_resource_header_property_add(pMrcpMessage,RECOGNIZER_HEADER_NO_INPUT_TIMEOUT); - pRecogHeader->recognition_timeout = 10000; - mrcp_resource_header_property_add(pMrcpMessage,RECOGNIZER_HEADER_RECOGNITION_TIMEOUT); - pRecogHeader->start_input_timers = TRUE; - mrcp_resource_header_property_add(pMrcpMessage,RECOGNIZER_HEADER_START_INPUT_TIMERS); - pRecogHeader->confidence_threshold = 0.87f; - mrcp_resource_header_property_add(pMrcpMessage,RECOGNIZER_HEADER_CONFIDENCE_THRESHOLD); - pRecogHeader->save_waveform = TRUE; - mrcp_resource_header_property_add(pMrcpMessage,RECOGNIZER_HEADER_SAVE_WAVEFORM); - } - return pMrcpMessage; -} - -bool RecogSession::ParseNLSMLResult(mrcp_message_t* pMrcpMessage) -{ - nlsml_result_t *pResult = nlsml_result_parse(pMrcpMessage->body.buf, pMrcpMessage->body.length, pMrcpMessage->pool); - if(!pResult) - return false; - - nlsml_result_trace(pResult, pMrcpMessage->pool); - return true; -} - -FILE* RecogSession::GetAudioIn(const mpf_codec_descriptor_t* pDescriptor, apr_pool_t* pool) const -{ - const char* pFileName = GetScenario()->GetAudioSource(); - if(!pFileName) - { - pFileName = apr_psprintf(pool,"one-%dkHz.pcm",pDescriptor->sampling_rate/1000); - } - apt_dir_layout_t* pDirLayout = GetScenario()->GetDirLayout(); - const char* pFilePath = apt_datadir_filepath_get(pDirLayout,pFileName,pool); - if(!pFilePath) - return NULL; - - FILE* pFile = fopen(pFilePath,"rb"); - if(!pFile) - { - apt_log(APT_LOG_MARK,APT_PRIO_INFO,"Cannot Find [%s]",pFilePath); - return NULL; - } - - apt_log(APT_LOG_MARK,APT_PRIO_INFO,"Set [%s] as Speech Source",pFilePath); - return pFile; -} diff --git a/libs/unimrcp/platforms/umc/src/recorderscenario.cpp b/libs/unimrcp/platforms/umc/src/recorderscenario.cpp deleted file mode 100644 index 6d303b848a5..00000000000 --- a/libs/unimrcp/platforms/umc/src/recorderscenario.cpp +++ /dev/null @@ -1,72 +0,0 @@ -/* - * Copyright 2008-2014 Arsen Chaloyan - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - * - * $Id: recorderscenario.cpp 2136 2014-07-04 06:33:36Z achaloyan@gmail.com $ - */ - -#include -#include "recorderscenario.h" -#include "recordersession.h" - -RecorderScenario::RecorderScenario() : - m_Record(true), - m_AudioSource(NULL) -{ -} - -RecorderScenario::~RecorderScenario() -{ -} - -void RecorderScenario::Destroy() -{ -} - -bool RecorderScenario::LoadElement(const apr_xml_elem* pElem, apr_pool_t* pool) -{ - if(UmcScenario::LoadElement(pElem,pool)) - return true; - - if(strcasecmp(pElem->name,"record") == 0) - { - LoadRecord(pElem,pool); - return true; - } - - return false; -} - -bool RecorderScenario::LoadRecord(const apr_xml_elem* pElem, apr_pool_t* pool) -{ - const apr_xml_attr* pAttr; - for(pAttr = pElem->attr; pAttr; pAttr = pAttr->next) - { - if(strcasecmp(pAttr->name,"enable") == 0) - { - m_Record = atoi(pAttr->value) > 0; - } - else if(strcasecmp(pAttr->name,"audio-source") == 0) - { - m_AudioSource = pAttr->value; - } - } - - return true; -} - -UmcSession* RecorderScenario::CreateSession() -{ - return new RecorderSession(this); -} diff --git a/libs/unimrcp/platforms/umc/src/recordersession.cpp b/libs/unimrcp/platforms/umc/src/recordersession.cpp deleted file mode 100644 index 886e3248fb7..00000000000 --- a/libs/unimrcp/platforms/umc/src/recordersession.cpp +++ /dev/null @@ -1,286 +0,0 @@ -/* - * Copyright 2008-2014 Arsen Chaloyan - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - * - * $Id: recordersession.cpp 2136 2014-07-04 06:33:36Z achaloyan@gmail.com $ - */ - -#include "recordersession.h" -#include "recorderscenario.h" -#include "mrcp_message.h" -#include "mrcp_generic_header.h" -#include "mrcp_recorder_header.h" -#include "mrcp_recorder_resource.h" -#include "apt_log.h" - -struct RecorderChannel -{ - /** MRCP control channel */ - mrcp_channel_t* m_pMrcpChannel; - /** Streaming is in-progress */ - bool m_Streaming; - /** File to read audio stream from */ - FILE* m_pAudioIn; -}; - -RecorderSession::RecorderSession(const RecorderScenario* pScenario) : - UmcSession(pScenario), - m_pRecorderChannel(NULL) -{ -} - -RecorderSession::~RecorderSession() -{ -} - -bool RecorderSession::Start() -{ - const RecorderScenario* pScenario = GetScenario(); - if(!pScenario->IsRecordEnabled()) - return false; - - /* create channel and associate all the required data */ - m_pRecorderChannel = CreateRecorderChannel(); - if(!m_pRecorderChannel) - return false; - - /* add channel to session (send asynchronous request) */ - if(!AddMrcpChannel(m_pRecorderChannel->m_pMrcpChannel)) - { - delete m_pRecorderChannel; - m_pRecorderChannel = NULL; - return false; - } - return true; -} - -bool RecorderSession::OnSessionTerminate(mrcp_sig_status_code_e status) -{ - if(m_pRecorderChannel) - { - FILE* pAudioIn = m_pRecorderChannel->m_pAudioIn; - if(pAudioIn) - { - m_pRecorderChannel->m_pAudioIn = NULL; - fclose(pAudioIn); - } - - delete m_pRecorderChannel; - m_pRecorderChannel = NULL; - } - return UmcSession::OnSessionTerminate(status); -} - -static apt_bool_t ReadStream(mpf_audio_stream_t* pStream, mpf_frame_t* pFrame) -{ - RecorderChannel* pRecorderChannel = (RecorderChannel*) pStream->obj; - if(pRecorderChannel && pRecorderChannel->m_Streaming) - { - if(pRecorderChannel->m_pAudioIn) - { - if(fread(pFrame->codec_frame.buffer,1,pFrame->codec_frame.size,pRecorderChannel->m_pAudioIn) == pFrame->codec_frame.size) - { - /* normal read */ - pFrame->type |= MEDIA_FRAME_TYPE_AUDIO; - } - else - { - /* file is over */ - pRecorderChannel->m_Streaming = false; - } - } - } - return TRUE; -} - -RecorderChannel* RecorderSession::CreateRecorderChannel() -{ - mrcp_channel_t* pChannel; - mpf_termination_t* pTermination; - mpf_stream_capabilities_t* pCapabilities; - apr_pool_t* pool = GetSessionPool(); - - /* create channel */ - RecorderChannel *pRecorderChannel = new RecorderChannel; - pRecorderChannel->m_pMrcpChannel = NULL; - pRecorderChannel->m_Streaming = false; - pRecorderChannel->m_pAudioIn = NULL; - - /* create source stream capabilities */ - pCapabilities = mpf_source_stream_capabilities_create(pool); - GetScenario()->InitCapabilities(pCapabilities); - - static const mpf_audio_stream_vtable_t audio_stream_vtable = - { - NULL, - NULL, - NULL, - ReadStream, - NULL, - NULL, - NULL, - NULL - }; - - pTermination = CreateAudioTermination( - &audio_stream_vtable, /* virtual methods table of audio stream */ - pCapabilities, /* capabilities of audio stream */ - pRecorderChannel); /* object to associate */ - - pChannel = CreateMrcpChannel( - MRCP_RECORDER_RESOURCE, /* MRCP resource identifier */ - pTermination, /* media termination, used to terminate audio stream */ - NULL, /* RTP descriptor, used to create RTP termination (NULL by default) */ - pRecorderChannel); /* object to associate */ - if(!pChannel) - { - delete pRecorderChannel; - return NULL; - } - - pRecorderChannel->m_pMrcpChannel = pChannel; - return pRecorderChannel; -} - -bool RecorderSession::OnChannelAdd(mrcp_channel_t* pMrcpChannel, mrcp_sig_status_code_e status) -{ - if(!UmcSession::OnChannelAdd(pMrcpChannel,status)) - return false; - - if(status != MRCP_SIG_STATUS_CODE_SUCCESS) - { - /* error case, just terminate the demo */ - return Terminate(); - } - - return StartRecorder(pMrcpChannel); -} - -bool RecorderSession::OnMessageReceive(mrcp_channel_t* pMrcpChannel, mrcp_message_t* pMrcpMessage) -{ - if(!UmcSession::OnMessageReceive(pMrcpChannel,pMrcpMessage)) - return false; - - RecorderChannel* pRecorderChannel = (RecorderChannel*) mrcp_application_channel_object_get(pMrcpChannel); - if(pMrcpMessage->start_line.message_type == MRCP_MESSAGE_TYPE_RESPONSE) - { - /* received MRCP response */ - if(pMrcpMessage->start_line.method_id == RECORDER_RECORD) - { - /* received the response to RECORD request */ - if(pMrcpMessage->start_line.request_state == MRCP_REQUEST_STATE_INPROGRESS) - { - /* start to stream the speech to record */ - if(pRecorderChannel) - { - pRecorderChannel->m_Streaming = true; - } - } - else - { - /* received unexpected response, terminate the session */ - Terminate(); - } - } - else - { - /* received unexpected response */ - } - } - else if(pMrcpMessage->start_line.message_type == MRCP_MESSAGE_TYPE_EVENT) - { - if(pMrcpMessage->start_line.method_id == RECORDER_RECORD_COMPLETE) - { - if(pRecorderChannel) - { - pRecorderChannel->m_Streaming = false; - } - Terminate(); - } - else if(pMrcpMessage->start_line.method_id == RECORDER_START_OF_INPUT) - { - /* received start-of-input, do whatever you need here */ - } - } - return true; -} - -bool RecorderSession::StartRecorder(mrcp_channel_t* pMrcpChannel) -{ - const mpf_codec_descriptor_t* pDescriptor = mrcp_application_source_descriptor_get(pMrcpChannel); - if(!pDescriptor) - { - apt_log(APT_LOG_MARK,APT_PRIO_WARNING,"Failed to Get Media Source Descriptor"); - return Terminate(); - } - - RecorderChannel* pRecorderChannel = (RecorderChannel*) mrcp_application_channel_object_get(pMrcpChannel); - /* create and send RECORD request */ - mrcp_message_t* pMrcpMessage = CreateRecordRequest(pMrcpChannel); - if(pMrcpMessage) - { - SendMrcpRequest(pRecorderChannel->m_pMrcpChannel,pMrcpMessage); - } - - pRecorderChannel->m_pAudioIn = GetAudioIn(pDescriptor,GetSessionPool()); - return true; -} - -mrcp_message_t* RecorderSession::CreateRecordRequest(mrcp_channel_t* pMrcpChannel) -{ - mrcp_message_t* pMrcpMessage = CreateMrcpMessage(pMrcpChannel,RECORDER_RECORD); - if(!pMrcpMessage) - return NULL; - - mrcp_recorder_header_t* pRecorderHeader; - - /* get/allocate recorder header */ - pRecorderHeader = (mrcp_recorder_header_t*) mrcp_resource_header_prepare(pMrcpMessage); - if(pRecorderHeader) - { - /* set recorder header fields */ - pRecorderHeader->no_input_timeout = 5000; - mrcp_resource_header_property_add(pMrcpMessage,RECORDER_HEADER_NO_INPUT_TIMEOUT); - - pRecorderHeader->final_silence = 300; - mrcp_resource_header_property_add(pMrcpMessage,RECORDER_HEADER_FINAL_SILENCE); - - pRecorderHeader->max_time = 10000; - mrcp_resource_header_property_add(pMrcpMessage,RECORDER_HEADER_MAX_TIME); - } - return pMrcpMessage; -} - -FILE* RecorderSession::GetAudioIn(const mpf_codec_descriptor_t* pDescriptor, apr_pool_t* pool) const -{ - const char* pFileName = GetScenario()->GetAudioSource(); - if(!pFileName) - { - pFileName = apr_psprintf(pool,"demo-%dkHz.pcm",pDescriptor->sampling_rate/1000); - } - apt_dir_layout_t* pDirLayout = GetScenario()->GetDirLayout(); - const char* pFilePath = apt_datadir_filepath_get(pDirLayout,pFileName,pool); - if(!pFilePath) - return NULL; - - FILE* pFile = fopen(pFilePath,"rb"); - if(!pFile) - { - apt_log(APT_LOG_MARK,APT_PRIO_INFO,"Cannot Find [%s]",pFilePath); - return NULL; - } - - apt_log(APT_LOG_MARK,APT_PRIO_INFO,"Set [%s] as Speech Source",pFilePath); - return pFile; -} diff --git a/libs/unimrcp/platforms/umc/src/setparamscenario.cpp b/libs/unimrcp/platforms/umc/src/setparamscenario.cpp deleted file mode 100644 index cbb203379e4..00000000000 --- a/libs/unimrcp/platforms/umc/src/setparamscenario.cpp +++ /dev/null @@ -1,25 +0,0 @@ -/* - * Copyright 2008-2014 Arsen Chaloyan - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - * - * $Id: setparamscenario.cpp 2136 2014-07-04 06:33:36Z achaloyan@gmail.com $ - */ - -#include "setparamscenario.h" -#include "setparamsession.h" - -UmcSession* SetParamScenario::CreateSession() -{ - return new SetParamSession(this); -} diff --git a/libs/unimrcp/platforms/umc/src/setparamsession.cpp b/libs/unimrcp/platforms/umc/src/setparamsession.cpp deleted file mode 100644 index c1fabd3e77a..00000000000 --- a/libs/unimrcp/platforms/umc/src/setparamsession.cpp +++ /dev/null @@ -1,390 +0,0 @@ -/* - * Copyright 2008-2014 Arsen Chaloyan - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - * - * $Id: setparamsession.cpp 2136 2014-07-04 06:33:36Z achaloyan@gmail.com $ - */ - -#include "setparamsession.h" -#include "setparamscenario.h" -#include "mrcp_message.h" -#include "mrcp_generic_header.h" -#include "mrcp_recog_header.h" -#include "mrcp_recog_resource.h" -#include "apt_log.h" - -struct RecogChannel -{ - /** MRCP control channel */ - mrcp_channel_t* m_pMrcpChannel; -}; - -SetParamSession::SetParamSession(const SetParamScenario* pScenario) : - UmcSession(pScenario), - m_pRecogChannel(NULL), - m_RequestQueue(NULL), - m_CurrentRequest(0) -{ -} - -SetParamSession::~SetParamSession() -{ -} - -bool SetParamSession::Start() -{ - /* create channel and associate all the required data */ - m_pRecogChannel = CreateRecogChannel(); - if(!m_pRecogChannel) - return false; - - /* add channel to session (send asynchronous request) */ - if(!AddMrcpChannel(m_pRecogChannel->m_pMrcpChannel)) - { - delete m_pRecogChannel; - m_pRecogChannel = NULL; - return false; - } - return true; -} - -bool SetParamSession::OnSessionTerminate(mrcp_sig_status_code_e status) -{ - if(m_pRecogChannel) - { - delete m_pRecogChannel; - m_pRecogChannel = NULL; - } - return UmcSession::OnSessionTerminate(status); -} - -static apt_bool_t ReadStream(mpf_audio_stream_t* pStream, mpf_frame_t* pFrame) -{ - return TRUE; -} - -RecogChannel* SetParamSession::CreateRecogChannel() -{ - mrcp_channel_t* pChannel; - mpf_termination_t* pTermination; - mpf_stream_capabilities_t* pCapabilities; - apr_pool_t* pool = GetSessionPool(); - - /* create channel */ - RecogChannel *pRecogChannel = new RecogChannel; - pRecogChannel->m_pMrcpChannel = NULL; - - /* create source stream capabilities */ - pCapabilities = mpf_source_stream_capabilities_create(pool); - GetScenario()->InitCapabilities(pCapabilities); - - static const mpf_audio_stream_vtable_t audio_stream_vtable = - { - NULL, - NULL, - NULL, - ReadStream, - NULL, - NULL, - NULL, - NULL - }; - - pTermination = CreateAudioTermination( - &audio_stream_vtable, /* virtual methods table of audio stream */ - pCapabilities, /* capabilities of audio stream */ - pRecogChannel); /* object to associate */ - - pChannel = CreateMrcpChannel( - MRCP_RECOGNIZER_RESOURCE, /* MRCP resource identifier */ - pTermination, /* media termination, used to terminate audio stream */ - NULL, /* RTP descriptor, used to create RTP termination (NULL by default) */ - pRecogChannel); /* object to associate */ - if(!pChannel) - { - delete pRecogChannel; - return NULL; - } - - pRecogChannel->m_pMrcpChannel = pChannel; - return pRecogChannel; -} - -bool SetParamSession::OnChannelAdd(mrcp_channel_t* pMrcpChannel, mrcp_sig_status_code_e status) -{ - if(!UmcSession::OnChannelAdd(pMrcpChannel,status)) - return false; - - if(status != MRCP_SIG_STATUS_CODE_SUCCESS) - { - /* error case, just terminate the demo */ - return Terminate(); - } - - if(!CreateRequestQueue(pMrcpChannel)) - { - return Terminate(); - } - - return ProcessNextRequest(pMrcpChannel); -} - -bool SetParamSession::OnMessageReceive(mrcp_channel_t* pMrcpChannel, mrcp_message_t* pMrcpMessage) -{ - if(!UmcSession::OnMessageReceive(pMrcpChannel,pMrcpMessage)) - return false; - - if(pMrcpMessage->start_line.message_type == MRCP_MESSAGE_TYPE_RESPONSE) - { - /* received MRCP response */ - if(pMrcpMessage->start_line.method_id == RECOGNIZER_SET_PARAMS || pMrcpMessage->start_line.method_id == RECOGNIZER_GET_PARAMS) - { - /* received the response */ - if(pMrcpMessage->start_line.request_state == MRCP_REQUEST_STATE_COMPLETE) - { - m_CurrentRequest++; - ProcessNextRequest(pMrcpChannel); - } - else - { - /* received unexpected response, terminate the session */ - Terminate(); - } - } - else - { - /* received unexpected response */ - Terminate(); - } - } - return true; -} - -bool SetParamSession::ProcessNextRequest(mrcp_channel_t* pMrcpChannel) -{ - if(m_CurrentRequest >= m_RequestQueue->nelts) - { - return Terminate(); - } - - mrcp_message_t* pMrcpMessage = APR_ARRAY_IDX(m_RequestQueue,m_CurrentRequest,mrcp_message_t*); - if(!pMrcpMessage) - { - return Terminate(); - } - - return SendMrcpRequest(pMrcpChannel,pMrcpMessage); -} - -bool SetParamSession::CreateRequestQueue(mrcp_channel_t* pMrcpChannel) -{ - m_CurrentRequest = 0; - m_RequestQueue = apr_array_make(GetSessionPool(),5,sizeof(mrcp_message_t*)); - mrcp_message_t* pMrcpMessage; - - pMrcpMessage = CreateSetParams1(pMrcpChannel); - if(pMrcpMessage) - *(mrcp_message_t**)apr_array_push(m_RequestQueue) = pMrcpMessage; - - pMrcpMessage = CreateGetParams1(pMrcpChannel); - if(pMrcpMessage) - *(mrcp_message_t**)apr_array_push(m_RequestQueue) = pMrcpMessage; - - pMrcpMessage = CreateSetParams2(pMrcpChannel); - if(pMrcpMessage) - *(mrcp_message_t**)apr_array_push(m_RequestQueue) = pMrcpMessage; - - pMrcpMessage = CreateGetParams2(pMrcpChannel); - if(pMrcpMessage) - *(mrcp_message_t**)apr_array_push(m_RequestQueue) = pMrcpMessage; - - pMrcpMessage = CreateSetParams3(pMrcpChannel); - if(pMrcpMessage) - *(mrcp_message_t**)apr_array_push(m_RequestQueue) = pMrcpMessage; - - pMrcpMessage = CreateGetParams3(pMrcpChannel); - if(pMrcpMessage) - *(mrcp_message_t**)apr_array_push(m_RequestQueue) = pMrcpMessage; - - return true; -} - -mrcp_message_t* SetParamSession::CreateSetParams1(mrcp_channel_t* pMrcpChannel) -{ - mrcp_message_t* pMrcpMessage = CreateMrcpMessage(pMrcpChannel,RECOGNIZER_SET_PARAMS); - if(!pMrcpMessage) - return NULL; - - mrcp_recog_header_t* pRecogHeader; - /* get/allocate recog header */ - pRecogHeader = (mrcp_recog_header_t*) mrcp_resource_header_prepare(pMrcpMessage); - if(pRecogHeader) - { - /* set recog header fields */ - pRecogHeader->confidence_threshold = 0.4f; - mrcp_resource_header_property_add(pMrcpMessage,RECOGNIZER_HEADER_CONFIDENCE_THRESHOLD); - pRecogHeader->sensitivity_level = 0.531f; - mrcp_resource_header_property_add(pMrcpMessage,RECOGNIZER_HEADER_SENSITIVITY_LEVEL); - pRecogHeader->speed_vs_accuracy = 0.5f; - mrcp_resource_header_property_add(pMrcpMessage,RECOGNIZER_HEADER_SPEED_VS_ACCURACY); - pRecogHeader->n_best_list_length = 5; - mrcp_resource_header_property_add(pMrcpMessage,RECOGNIZER_HEADER_N_BEST_LIST_LENGTH); - pRecogHeader->no_input_timeout = 5000; - mrcp_resource_header_property_add(pMrcpMessage,RECOGNIZER_HEADER_NO_INPUT_TIMEOUT); - } - - return pMrcpMessage; -} - -mrcp_message_t* SetParamSession::CreateGetParams1(mrcp_channel_t* pMrcpChannel) -{ - mrcp_message_t* pMrcpMessage = CreateMrcpMessage(pMrcpChannel,RECOGNIZER_GET_PARAMS); - if(!pMrcpMessage) - return NULL; - - mrcp_recog_header_t* pRecogHeader; - /* get/allocate recog header */ - pRecogHeader = (mrcp_recog_header_t*) mrcp_resource_header_prepare(pMrcpMessage); - if(pRecogHeader) - { - /* set recog header fields */ - mrcp_resource_header_name_property_add(pMrcpMessage,RECOGNIZER_HEADER_CONFIDENCE_THRESHOLD); - mrcp_resource_header_name_property_add(pMrcpMessage,RECOGNIZER_HEADER_SENSITIVITY_LEVEL); - mrcp_resource_header_name_property_add(pMrcpMessage,RECOGNIZER_HEADER_SPEED_VS_ACCURACY); - mrcp_resource_header_name_property_add(pMrcpMessage,RECOGNIZER_HEADER_N_BEST_LIST_LENGTH); - mrcp_resource_header_name_property_add(pMrcpMessage,RECOGNIZER_HEADER_NO_INPUT_TIMEOUT); - } - - return pMrcpMessage; -} - -mrcp_message_t* SetParamSession::CreateSetParams2(mrcp_channel_t* pMrcpChannel) -{ - mrcp_message_t* pMrcpMessage = CreateMrcpMessage(pMrcpChannel,RECOGNIZER_SET_PARAMS); - if(!pMrcpMessage) - return NULL; - - mrcp_recog_header_t* pRecogHeader; - /* get/allocate recog header */ - pRecogHeader = (mrcp_recog_header_t*) mrcp_resource_header_prepare(pMrcpMessage); - if(pRecogHeader) - { - /* set recog header fields */ - pRecogHeader->recognition_timeout = 5000; - mrcp_resource_header_property_add(pMrcpMessage,RECOGNIZER_HEADER_RECOGNITION_TIMEOUT); - pRecogHeader->speech_complete_timeout = 1000; - mrcp_resource_header_property_add(pMrcpMessage,RECOGNIZER_HEADER_SPEECH_COMPLETE_TIMEOUT); - pRecogHeader->speech_incomplete_timeout = 2000; - mrcp_resource_header_property_add(pMrcpMessage,RECOGNIZER_HEADER_SPEECH_INCOMPLETE_TIMEOUT); - pRecogHeader->dtmf_interdigit_timeout = 3000; - mrcp_resource_header_property_add(pMrcpMessage,RECOGNIZER_HEADER_DTMF_INTERDIGIT_TIMEOUT); - } - - return pMrcpMessage; -} - -mrcp_message_t* SetParamSession::CreateGetParams2(mrcp_channel_t* pMrcpChannel) -{ - mrcp_message_t* pMrcpMessage = CreateMrcpMessage(pMrcpChannel,RECOGNIZER_GET_PARAMS); - if(!pMrcpMessage) - return NULL; - - mrcp_recog_header_t* pRecogHeader; - /* get/allocate recog header */ - pRecogHeader = (mrcp_recog_header_t*) mrcp_resource_header_prepare(pMrcpMessage); - if(pRecogHeader) - { - /* set recog header fields */ - mrcp_resource_header_name_property_add(pMrcpMessage,RECOGNIZER_HEADER_RECOGNITION_TIMEOUT); - mrcp_resource_header_name_property_add(pMrcpMessage,RECOGNIZER_HEADER_SPEECH_COMPLETE_TIMEOUT); - mrcp_resource_header_name_property_add(pMrcpMessage,RECOGNIZER_HEADER_SPEECH_INCOMPLETE_TIMEOUT); - mrcp_resource_header_name_property_add(pMrcpMessage,RECOGNIZER_HEADER_DTMF_INTERDIGIT_TIMEOUT); - } - - return pMrcpMessage; -} - -mrcp_message_t* SetParamSession::CreateSetParams3(mrcp_channel_t* pMrcpChannel) -{ - mrcp_message_t* pMrcpMessage = CreateMrcpMessage(pMrcpChannel,RECOGNIZER_SET_PARAMS); - if(!pMrcpMessage) - return NULL; - - mrcp_generic_header_t* pGenericHeader; - /* get/allocate generic header */ - pGenericHeader = (mrcp_generic_header_t*) mrcp_generic_header_prepare(pMrcpMessage); - if(pGenericHeader) - { - apr_pool_t* pool = GetSessionPool(); - /* set generic header fields */ - apt_pair_arr_t* pVSP = apt_pair_array_create(3,pool); - if(pVSP) - { - apt_str_t name; - apt_str_t value; - - apt_string_set(&name,"confidencelevel"); - apt_string_set(&value,"500"); - apt_pair_array_append(pVSP,&name,&value,pool); - - apt_string_set(&name,"sensitivity"); - apt_string_set(&value,"0.500"); - apt_pair_array_append(pVSP,&name,&value,pool); - - apt_string_set(&name,"speedvsaccuracy"); - apt_string_set(&value,"0.789"); - apt_pair_array_append(pVSP,&name,&value,pool); - - apt_string_set(&name,"timeout"); - apt_string_set(&value,"1000"); - apt_pair_array_append(pVSP,&name,&value,pool); - - apt_string_set(&name,"swirec_application_name"); - apt_string_set(&value,"UniMRCP"); - apt_pair_array_append(pVSP,&name,&value,pool); - - apt_string_set(&name,"swirec_phoneme_lookahead_beam"); - apt_string_set(&value,"-50"); - apt_pair_array_append(pVSP,&name,&value,pool); - - pGenericHeader->vendor_specific_params = pVSP; - mrcp_generic_header_property_add(pMrcpMessage,GENERIC_HEADER_VENDOR_SPECIFIC_PARAMS); - } - } - - return pMrcpMessage; -} - -mrcp_message_t* SetParamSession::CreateGetParams3(mrcp_channel_t* pMrcpChannel) -{ - mrcp_message_t* pMrcpMessage = CreateMrcpMessage(pMrcpChannel,RECOGNIZER_GET_PARAMS); - if(!pMrcpMessage) - return NULL; - - mrcp_generic_header_t* pGenericHeader; - /* get/allocate generic header */ - pGenericHeader = (mrcp_generic_header_t*) mrcp_generic_header_prepare(pMrcpMessage); - if(pGenericHeader) - { - mrcp_generic_header_name_property_add(pMrcpMessage,GENERIC_HEADER_ACCEPT_CHARSET); - mrcp_generic_header_name_property_add(pMrcpMessage,GENERIC_HEADER_CACHE_CONTROL); - mrcp_generic_header_name_property_add(pMrcpMessage,GENERIC_HEADER_LOGGING_TAG); - mrcp_generic_header_name_property_add(pMrcpMessage,GENERIC_HEADER_VENDOR_SPECIFIC_PARAMS); - mrcp_generic_header_name_property_add(pMrcpMessage,GENERIC_HEADER_FETCH_TIMEOUT); - mrcp_generic_header_name_property_add(pMrcpMessage,GENERIC_HEADER_SET_COOKIE); - mrcp_generic_header_name_property_add(pMrcpMessage,GENERIC_HEADER_SET_COOKIE2); - } - - return pMrcpMessage; -} diff --git a/libs/unimrcp/platforms/umc/src/synthscenario.cpp b/libs/unimrcp/platforms/umc/src/synthscenario.cpp deleted file mode 100644 index de1718ce47f..00000000000 --- a/libs/unimrcp/platforms/umc/src/synthscenario.cpp +++ /dev/null @@ -1,82 +0,0 @@ -/* - * Copyright 2008-2014 Arsen Chaloyan - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - * - * $Id: synthscenario.cpp 2136 2014-07-04 06:33:36Z achaloyan@gmail.com $ - */ - -#include -#include "synthscenario.h" -#include "synthsession.h" -#include "mrcp_message.h" -#include "mrcp_generic_header.h" -#include "mrcp_synth_header.h" -#include "mrcp_synth_resource.h" - - -SynthScenario::SynthScenario() : - m_Speak(true), - m_ContentType("application/synthesis+ssml"), - m_Content(NULL) -{ -} - -SynthScenario::~SynthScenario() -{ -} - -void SynthScenario::Destroy() -{ -} - -bool SynthScenario::LoadElement(const apr_xml_elem* pElem, apr_pool_t* pool) -{ - if(UmcScenario::LoadElement(pElem,pool)) - return true; - - if(strcasecmp(pElem->name,"speak") == 0) - { - LoadSpeak(pElem,pool); - return true; - } - - return false; -} - -bool SynthScenario::LoadSpeak(const apr_xml_elem* pElem, apr_pool_t* pool) -{ - const apr_xml_attr* pAttr; - for(pAttr = pElem->attr; pAttr; pAttr = pAttr->next) - { - if(strcasecmp(pAttr->name,"enable") == 0) - { - m_Speak = atoi(pAttr->value) > 0; - } - else if(strcasecmp(pAttr->name,"content-type") == 0) - { - m_ContentType = pAttr->value; - } - else if(strcasecmp(pAttr->name,"content-location") == 0) - { - m_Content = LoadFileContent(pAttr->value,pool); - } - } - - return true; -} - -UmcSession* SynthScenario::CreateSession() -{ - return new SynthSession(this); -} diff --git a/libs/unimrcp/platforms/umc/src/synthsession.cpp b/libs/unimrcp/platforms/umc/src/synthsession.cpp deleted file mode 100644 index 07adaf6cbb9..00000000000 --- a/libs/unimrcp/platforms/umc/src/synthsession.cpp +++ /dev/null @@ -1,299 +0,0 @@ -/* - * Copyright 2008-2014 Arsen Chaloyan - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - * - * $Id: synthsession.cpp 2193 2014-10-08 03:44:33Z achaloyan@gmail.com $ - */ - -#include "synthsession.h" -#include "synthscenario.h" -#include "mrcp_message.h" -#include "mrcp_generic_header.h" -#include "mrcp_synth_header.h" -#include "mrcp_synth_resource.h" -#include "apt_log.h" - -struct SynthChannel -{ - /** MRCP channel */ - mrcp_channel_t* m_pMrcpChannel; - /** IN-PROGRESS SPEAK request */ - mrcp_message_t* m_pSpeakRequest; - /** File to write audio stream to */ - FILE* m_pAudioOut; - - SynthChannel() : m_pMrcpChannel(NULL), m_pSpeakRequest(NULL), m_pAudioOut(NULL) {} -}; - -SynthSession::SynthSession(const SynthScenario* pScenario) : - UmcSession(pScenario), - m_pSynthChannel(NULL) -{ -} - -SynthSession::~SynthSession() -{ -} - -bool SynthSession::Start() -{ - if(!GetScenario()->IsSpeakEnabled()) - return false; - - /* create channel and associate all the required data */ - m_pSynthChannel = CreateSynthChannel(); - if(!m_pSynthChannel) - return false; - - /* add channel to session (send asynchronous request) */ - if(!AddMrcpChannel(m_pSynthChannel->m_pMrcpChannel)) - { - delete m_pSynthChannel; - m_pSynthChannel = NULL; - return false; - } - return true; -} - -bool SynthSession::Stop() -{ - if(!UmcSession::Stop()) - return false; - - if(!m_pSynthChannel) - return false; - - mrcp_message_t* pStopMessage = CreateMrcpMessage(m_pSynthChannel->m_pMrcpChannel,SYNTHESIZER_STOP); - if(!pStopMessage) - return false; - - if(m_pSynthChannel->m_pSpeakRequest) - { - mrcp_generic_header_t* pGenericHeader; - /* get/allocate generic header */ - pGenericHeader = (mrcp_generic_header_t*) mrcp_generic_header_prepare(pStopMessage); - if(pGenericHeader) - { - pGenericHeader->active_request_id_list.count = 1; - pGenericHeader->active_request_id_list.ids[0] = - m_pSynthChannel->m_pSpeakRequest->start_line.request_id; - mrcp_generic_header_property_add(pStopMessage,GENERIC_HEADER_ACTIVE_REQUEST_ID_LIST); - } - - m_pSynthChannel->m_pSpeakRequest = NULL; - } - - return SendMrcpRequest(m_pSynthChannel->m_pMrcpChannel,pStopMessage); -} - -bool SynthSession::OnSessionTerminate(mrcp_sig_status_code_e status) -{ - if(m_pSynthChannel) - { - FILE* pAudioOut = m_pSynthChannel->m_pAudioOut; - if(pAudioOut) - { - m_pSynthChannel->m_pAudioOut = NULL; - fclose(pAudioOut); - } - - delete m_pSynthChannel; - m_pSynthChannel = NULL; - } - return UmcSession::OnSessionTerminate(status); -} - -static apt_bool_t WriteStream(mpf_audio_stream_t* pStream, const mpf_frame_t* pFrame) -{ - SynthChannel* pSynthChannel = (SynthChannel*) pStream->obj; - if(pSynthChannel && pSynthChannel->m_pAudioOut) - { - fwrite(pFrame->codec_frame.buffer,1,pFrame->codec_frame.size,pSynthChannel->m_pAudioOut); - } - return TRUE; -} - -SynthChannel* SynthSession::CreateSynthChannel() -{ - mrcp_channel_t* pChannel; - mpf_termination_t* pTermination; - mpf_stream_capabilities_t* pCapabilities; - apr_pool_t* pool = GetSessionPool(); - - /* create channel */ - SynthChannel* pSynthChannel = new SynthChannel; - - /* create sink stream capabilities */ - pCapabilities = mpf_sink_stream_capabilities_create(pool); - GetScenario()->InitCapabilities(pCapabilities); - - static const mpf_audio_stream_vtable_t audio_stream_vtable = - { - NULL, - NULL, - NULL, - NULL, - NULL, - NULL, - WriteStream, - NULL - }; - - pTermination = CreateAudioTermination( - &audio_stream_vtable, /* virtual methods table of audio stream */ - pCapabilities, /* capabilities of audio stream */ - pSynthChannel); /* object to associate */ - - pChannel = CreateMrcpChannel( - MRCP_SYNTHESIZER_RESOURCE, /* MRCP resource identifier */ - pTermination, /* media termination, used to terminate audio stream */ - NULL, /* RTP descriptor, used to create RTP termination (NULL by default) */ - pSynthChannel); /* object to associate */ - if(!pChannel) - { - delete pSynthChannel; - return NULL; - } - - pSynthChannel->m_pMrcpChannel = pChannel; - return pSynthChannel; -} - -bool SynthSession::OnChannelAdd(mrcp_channel_t* pMrcpChannel, mrcp_sig_status_code_e status) -{ - if(!UmcSession::OnChannelAdd(pMrcpChannel,status)) - return false; - - const mpf_codec_descriptor_t* pDescriptor = mrcp_application_sink_descriptor_get(pMrcpChannel); - if(!pDescriptor) - { - apt_log(APT_LOG_MARK,APT_PRIO_WARNING,"Failed to Get Media Sink Descriptor"); - return Terminate(); - } - - SynthChannel* pSynthChannel = (SynthChannel*) mrcp_application_channel_object_get(pMrcpChannel); - if(status != MRCP_SIG_STATUS_CODE_SUCCESS) - { - /* error case, just terminate the demo */ - return Terminate(); - } - - /* create MRCP message */ - mrcp_message_t* pMrcpMessage = CreateSpeakRequest(pMrcpChannel); - if(pMrcpMessage) - { - SendMrcpRequest(pSynthChannel->m_pMrcpChannel,pMrcpMessage); - } - - pSynthChannel->m_pAudioOut = GetAudioOut(pDescriptor,GetSessionPool()); - return true; -} - -bool SynthSession::OnMessageReceive(mrcp_channel_t* pMrcpChannel, mrcp_message_t* pMrcpMessage) -{ - if(!UmcSession::OnMessageReceive(pMrcpChannel,pMrcpMessage)) - return false; - - if(pMrcpMessage->start_line.message_type == MRCP_MESSAGE_TYPE_RESPONSE) - { - /* received MRCP response */ - if(pMrcpMessage->start_line.method_id == SYNTHESIZER_SPEAK) - { - /* received the response to SPEAK request */ - if(pMrcpMessage->start_line.request_state == MRCP_REQUEST_STATE_INPROGRESS) - { - SynthChannel* pSynthChannel = (SynthChannel*) mrcp_application_channel_object_get(pMrcpChannel); - if(pSynthChannel) - pSynthChannel->m_pSpeakRequest = GetMrcpMessage(); - - /* waiting for SPEAK-COMPLETE event */ - } - else - { - /* received unexpected response, terminate the session */ - Terminate(); - } - } - else - { - /* received unexpected response */ - } - } - else if(pMrcpMessage->start_line.message_type == MRCP_MESSAGE_TYPE_EVENT) - { - /* received MRCP event */ - if(pMrcpMessage->start_line.method_id == SYNTHESIZER_SPEAK_COMPLETE) - { - SynthChannel* pSynthChannel = (SynthChannel*) mrcp_application_channel_object_get(pMrcpChannel); - if(pSynthChannel) - pSynthChannel->m_pSpeakRequest = NULL; - /* received SPEAK-COMPLETE event, terminate the session */ - Terminate(); - } - } - return true; -} - -mrcp_message_t* SynthSession::CreateSpeakRequest(mrcp_channel_t* pMrcpChannel) -{ - mrcp_message_t* pMrcpMessage = CreateMrcpMessage(pMrcpChannel,SYNTHESIZER_SPEAK); - if(!pMrcpMessage) - return NULL; - - const SynthScenario* pScenario = GetScenario(); - - mrcp_generic_header_t* pGenericHeader; - mrcp_synth_header_t* pSynthHeader; - /* get/allocate generic header */ - pGenericHeader = (mrcp_generic_header_t*) mrcp_generic_header_prepare(pMrcpMessage); - if(pGenericHeader) - { - /* set generic header fields */ - apt_string_assign(&pGenericHeader->content_type,pScenario->GetContentType(),pMrcpMessage->pool); - mrcp_generic_header_property_add(pMrcpMessage,GENERIC_HEADER_CONTENT_TYPE); - - /* set message body */ - if(pScenario->GetContent()) - apt_string_assign(&pMrcpMessage->body,pScenario->GetContent(),pMrcpMessage->pool); - } - /* get/allocate synthesizer header */ - pSynthHeader = (mrcp_synth_header_t*) mrcp_resource_header_prepare(pMrcpMessage); - if(pSynthHeader) - { - /* set synthesizer header fields */ - pSynthHeader->voice_param.age = 28; - mrcp_resource_header_property_add(pMrcpMessage,SYNTHESIZER_HEADER_VOICE_AGE); - } - - return pMrcpMessage; -} - -FILE* SynthSession::GetAudioOut(const mpf_codec_descriptor_t* pDescriptor, apr_pool_t* pool) const -{ - FILE* file; - char* pFileName = apr_psprintf(pool,"synth-%dkHz-%s.pcm",pDescriptor->sampling_rate/1000, GetMrcpSessionId()); - apt_dir_layout_t* pDirLayout = GetScenario()->GetDirLayout(); - char* pFilePath = apt_vardir_filepath_get(pDirLayout,pFileName,pool); - if(!pFilePath) - return NULL; - - apt_log(APT_LOG_MARK,APT_PRIO_INFO,"Open Speech Output File [%s] for Writing",pFilePath); - file = fopen(pFilePath,"wb"); - if(!file) - { - apt_log(APT_LOG_MARK,APT_PRIO_WARNING,"Failed to Open Speech Output File [%s] for Writing",pFilePath); - return NULL; - } - return file; -} diff --git a/libs/unimrcp/platforms/umc/src/umcconsole.cpp b/libs/unimrcp/platforms/umc/src/umcconsole.cpp deleted file mode 100644 index a065208a91f..00000000000 --- a/libs/unimrcp/platforms/umc/src/umcconsole.cpp +++ /dev/null @@ -1,333 +0,0 @@ -/* - * Copyright 2008-2014 Arsen Chaloyan - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - * - * $Id: umcconsole.cpp 2204 2014-10-31 01:01:42Z achaloyan@gmail.com $ - */ - -#include -#include -#include -#include "umcconsole.h" -#include "umcframework.h" -#include "apt_pool.h" -#include "uni_version.h" - - -UmcConsole::UmcConsole() : - m_pFramework(NULL) -{ - m_pFramework = new UmcFramework; -} - -UmcConsole::~UmcConsole() -{ - delete m_pFramework; -} - -bool UmcConsole::Run(int argc, const char * const *argv) -{ - apr_pool_t* pool = NULL; - apt_dir_layout_t* pDirLayout = NULL; - const char *logConfPath; - - /* APR global initialization */ - if(apr_initialize() != APR_SUCCESS) - { - apr_terminate(); - return false; - } - - /* create APR pool */ - pool = apt_pool_create(); - if(!pool) - { - apr_terminate(); - return false; - } - - /* load options */ - if(!LoadOptions(argc,argv,pool)) - { - apr_pool_destroy(pool); - apr_terminate(); - return false; - } - - if(m_Options.m_DirLayoutConf) - { - /* create and load directories layout from the configuration file */ - pDirLayout = apt_dir_layout_create(pool); - if(pDirLayout) - apt_dir_layout_load(pDirLayout,m_Options.m_DirLayoutConf,pool); - } - else - { - /* create default directories layout */ - pDirLayout = apt_default_dir_layout_create(m_Options.m_RootDirPath,pool); - } - - if(!pDirLayout) - { - printf("Failed to Create Directories Layout\n"); - apr_pool_destroy(pool); - apr_terminate(); - return false; - } - - /* get path to logger configuration file */ - logConfPath = apt_confdir_filepath_get(pDirLayout,"logger.xml",pool); - /* create and load singleton logger */ - apt_log_instance_load(logConfPath,pool); - - if(m_Options.m_LogPriority) - { - /* override the log priority, if specified in command line */ - apt_log_priority_set((apt_log_priority_e)atoi(m_Options.m_LogPriority)); - } - if(m_Options.m_LogOutput) - { - /* override the log output mode, if specified in command line */ - apt_log_output_mode_set((apt_log_output_e)atoi(m_Options.m_LogOutput)); - } - - if(apt_log_output_mode_check(APT_LOG_OUTPUT_FILE) == TRUE) - { - /* open the log file */ - const char *logDirPath = apt_dir_layout_path_get(pDirLayout,APT_LAYOUT_LOG_DIR); - apt_log_file_open(logDirPath,"unimrcpclient",MAX_LOG_FILE_SIZE,MAX_LOG_FILE_COUNT,FALSE,pool); - } - - /* create demo framework */ - if(m_pFramework->Create(pDirLayout,pool)) - { - /* run command line */ - RunCmdLine(); - /* destroy demo framework */ - m_pFramework->Destroy(); - } - - /* destroy singleton logger */ - apt_log_instance_destroy(); - /* destroy APR pool */ - apr_pool_destroy(pool); - /* APR global termination */ - apr_terminate(); - return true; -} - -bool UmcConsole::ProcessCmdLine(char* pCmdLine) -{ - bool running = true; - char *name; - char *last; - name = apr_strtok(pCmdLine, " ", &last); - - if(strcasecmp(name,"run") == 0) - { - char* pScenarioName = apr_strtok(NULL, " ", &last); - if(pScenarioName) - { - const char* pProfileName = apr_strtok(NULL, " ", &last); - if(!pProfileName) - { - pProfileName = "uni2"; - } - m_pFramework->RunSession(pScenarioName,pProfileName); - } - } - else if(strcasecmp(name,"kill") == 0) - { - char* pID = apr_strtok(NULL, " ", &last); - if(pID) - { - m_pFramework->KillSession(pID); - } - } - else if(strcasecmp(name,"stop") == 0) - { - char* pID = apr_strtok(NULL, " ", &last); - if(pID) - { - m_pFramework->StopSession(pID); - } - } - else if(strcasecmp(name,"show") == 0) - { - char* pWhat = apr_strtok(NULL, " ", &last); - if(pWhat) - { - if(strcasecmp(pWhat,"sessions") == 0) - m_pFramework->ShowSessions(); - else if(strcasecmp(pWhat,"scenarios") == 0) - m_pFramework->ShowScenarios(); - } - } - else if(strcasecmp(name,"loglevel") == 0) - { - char* pPriority = apr_strtok(NULL, " ", &last); - if(pPriority) - { - apt_log_priority_set((apt_log_priority_e)atol(pPriority)); - } - } - else if(strcasecmp(name,"exit") == 0 || strcmp(name,"quit") == 0) - { - running = false; - } - else if(strcasecmp(name,"help") == 0) - { - printf("usage:\n" - "\n- run [scenario] [profile] (run new session)\n" - " scenario is one of 'synth', 'recog', ... (use 'show scenarios')\n" - " profile is one of 'uni2', 'uni1', ... (see unimrcpclient.xml)\n" - "\n examples: \n" - " run synth\n" - " run recog\n" - " run synth uni1\n" - " run recog uni1\n" - "\n- kill [id] (kill session)\n" - " id is a session identifier: 1, 2, ... (use 'show sessions')\n" - "\n example: \n" - " kill 1\n" - "\n- show [what] (show either available scenarios or in-progress sessions)\n" - "\n examples: \n" - " show scenarios\n" - " show sessions\n" - "\n- loglevel [level] (set loglevel, one of 0,1...7)\n" - "\n- quit, exit\n"); - } - else - { - printf("unknown command: %s (input help for usage)\n",name); - } - return running; -} - -bool UmcConsole::RunCmdLine() -{ - apt_bool_t running = true; - char cmdline[1024]; - apr_size_t i; - do - { - printf(">"); - memset(&cmdline, 0, sizeof(cmdline)); - for(i = 0; i < sizeof(cmdline); i++) - { - cmdline[i] = (char) getchar(); - if(cmdline[i] == '\n') - { - cmdline[i] = '\0'; - break; - } - } - if(*cmdline) - { - running = ProcessCmdLine(cmdline); - } - } - while(running != 0); - return true; -} - -void UmcConsole::Usage() -{ - printf( - "\n" - " * " UNI_COPYRIGHT"\n" - " *\n" - UNI_LICENSE"\n" - "\n" - "Usage:\n" - "\n" - " umc [options]\n" - "\n" - " Available options:\n" - "\n" - " -r [--root-dir] path : Set the path to the project root directory.\n" - "\n" - " -c [--dir-layout] path : Set the path to the dir layout config file.\n" - " (takes the precedence over --root-dir option)\n" - "\n" - " -l [--log-prio] priority : Set the log priority.\n" - " (0-emergency, ..., 7-debug)\n" - "\n" - " -o [--log-output] mode : Set the log output mode.\n" - " (0-none, 1-console only, 2-file only, 3-both)\n" - "\n" - " -v [--version] : Show the version.\n" - "\n" - " -h [--help] : Show the help.\n" - "\n"); -} - -bool UmcConsole::LoadOptions(int argc, const char * const *argv, apr_pool_t *pool) -{ - apr_status_t rv; - apr_getopt_t* opt = NULL; - int optch; - const char* optarg; - - const apr_getopt_option_t opt_option[] = - { - /* long-option, short-option, has-arg flag, description */ - { "root-dir", 'r', TRUE, "path to root dir" }, /* -r arg or --root-dir arg */ - { "dir-layout", 'c', TRUE, "path to dir layout conf" }, /* -c arg or --dir-layout arg */ - { "log-prio", 'l', TRUE, "log priority" }, /* -l arg or --log-prio arg */ - { "log-output", 'o', TRUE, "log output mode" }, /* -o arg or --log-output arg */ - { "version", 'v', FALSE, "show version" }, /* -v or --version */ - { "help", 'h', FALSE, "show help" }, /* -h or --help */ - { NULL, 0, 0, NULL }, /* end */ - }; - - rv = apr_getopt_init(&opt, pool , argc, argv); - if(rv != APR_SUCCESS) - return false; - - while((rv = apr_getopt_long(opt, opt_option, &optch, &optarg)) == APR_SUCCESS) - { - switch(optch) - { - case 'r': - m_Options.m_RootDirPath = optarg; - break; - case 'c': - m_Options.m_DirLayoutConf = optarg; - break; - case 'l': - if(optarg) - m_Options.m_LogPriority = optarg; - break; - case 'o': - if(optarg) - m_Options.m_LogOutput = optarg; - break; - case 'v': - printf(UNI_VERSION_STRING); - return FALSE; - case 'h': - Usage(); - return FALSE; - } - } - - if(rv != APR_EOF) - { - Usage(); - return false; - } - - return true; -} diff --git a/libs/unimrcp/platforms/umc/src/umcframework.cpp b/libs/unimrcp/platforms/umc/src/umcframework.cpp deleted file mode 100644 index 50ac00c4152..00000000000 --- a/libs/unimrcp/platforms/umc/src/umcframework.cpp +++ /dev/null @@ -1,632 +0,0 @@ -/* - * Copyright 2008-2014 Arsen Chaloyan - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - * - * $Id: umcframework.cpp 2204 2014-10-31 01:01:42Z achaloyan@gmail.com $ - */ - -#include "umcframework.h" -#include "umcsession.h" -#include "synthscenario.h" -#include "recogscenario.h" -#include "recorderscenario.h" -#include "dtmfscenario.h" -#include "setparamscenario.h" -#include "verifierscenario.h" -#include "unimrcp_client.h" -#include "apt_log.h" - -typedef struct -{ - char m_SessionId[10]; - char m_ScenarioName[128]; - char m_ProfileName[128]; - const mrcp_app_message_t* m_pAppMessage; -} UmcTaskMsg; - -enum UmcTaskMsgType -{ - UMC_TASK_CLIENT_MSG, - UMC_TASK_RUN_SESSION_MSG, - UMC_TASK_STOP_SESSION_MSG, - UMC_TASK_KILL_SESSION_MSG, - UMC_TASK_SHOW_SCENARIOS_MSG, - UMC_TASK_SHOW_SESSIONS_MSG -}; - -apt_bool_t UmcProcessMsg(apt_task_t* pTask, apt_task_msg_t* pMsg); -void UmcOnStartComplete(apt_task_t* pTask); -void UmcOnTerminateComplete(apt_task_t* pTask); -apt_bool_t AppMessageHandler(const mrcp_app_message_t* pAppMessage); - - -UmcFramework::UmcFramework() : - m_pPool(NULL), - m_pDirLayout(NULL), - m_pTask(NULL), - m_pMrcpClient(NULL), - m_pMrcpApplication(NULL), - m_pScenarioTable(NULL), - m_pSessionTable(NULL) -{ -} - -UmcFramework::~UmcFramework() -{ -} - -bool UmcFramework::Create(apt_dir_layout_t* pDirLayout, apr_pool_t* pool) -{ - m_pDirLayout = pDirLayout; - m_pPool = pool; - - m_pSessionTable = apr_hash_make(m_pPool); - m_pScenarioTable = apr_hash_make(m_pPool); - return CreateTask(); -} - -void UmcFramework::Destroy() -{ - DestroyTask(); - - m_pScenarioTable = NULL; - m_pSessionTable = NULL; -} - -bool UmcFramework::CreateMrcpClient() -{ - /* create MRCP client stack first */ - m_pMrcpClient = unimrcp_client_create(m_pDirLayout); - if(!m_pMrcpClient) - return false; - - /* create MRCP application to send/get requests to/from MRCP client stack */ - m_pMrcpApplication = mrcp_application_create(AppMessageHandler,this,m_pPool); - if(!m_pMrcpApplication) - { - mrcp_client_destroy(m_pMrcpClient); - m_pMrcpClient = NULL; - return false; - } - - /* register MRCP application to MRCP client */ - mrcp_client_application_register(m_pMrcpClient,m_pMrcpApplication,"UMC"); - /* start MRCP client stack processing */ - if(mrcp_client_start(m_pMrcpClient) == FALSE) - { - mrcp_client_destroy(m_pMrcpClient); - m_pMrcpClient = NULL; - m_pMrcpApplication = NULL; - return false; - } - return true; -} - -void UmcFramework::DestroyMrcpClient() -{ - if(m_pMrcpClient) - { - /* shutdown MRCP client stack processing first (blocking call) */ - mrcp_client_shutdown(m_pMrcpClient); - /* destroy MRCP client stack */ - mrcp_client_destroy(m_pMrcpClient); - m_pMrcpClient = NULL; - m_pMrcpApplication = NULL; - } -} - -bool UmcFramework::CreateTask() -{ - apt_task_t* pTask; - apt_task_vtable_t* pVtable; - apt_task_msg_pool_t* pMsgPool; - - pMsgPool = apt_task_msg_pool_create_dynamic(sizeof(UmcTaskMsg),m_pPool); - m_pTask = apt_consumer_task_create(this,pMsgPool,m_pPool); - if(!m_pTask) - return false; - - pTask = apt_consumer_task_base_get(m_pTask); - apt_task_name_set(pTask,"Framework Agent"); - pVtable = apt_consumer_task_vtable_get(m_pTask); - if(pVtable) - { - pVtable->process_msg = UmcProcessMsg; - pVtable->on_start_complete = UmcOnStartComplete; - pVtable->on_terminate_complete = UmcOnTerminateComplete; - } - - apt_task_start(pTask); - return true; -} - -void UmcFramework::DestroyTask() -{ - if(m_pTask) - { - apt_task_t* pTask = apt_consumer_task_base_get(m_pTask); - if(pTask) - { - apt_task_terminate(pTask,TRUE); - apt_task_destroy(pTask); - } - m_pTask = NULL; - } -} - -UmcScenario* UmcFramework::CreateScenario(const char* pType) -{ - if(pType) - { - if(strcasecmp(pType,"Synthesizer") == 0) - return new SynthScenario(); - else if(strcasecmp(pType,"Recognizer") == 0) - return new RecogScenario(); - else if(strcasecmp(pType,"Recorder") == 0) - return new RecorderScenario(); - else if(strcasecmp(pType,"DtmfRecognizer") == 0) - return new DtmfScenario(); - else if(strcasecmp(pType,"Params") == 0) - return new SetParamScenario(); - else if(strcasecmp(pType,"Verifier") == 0) - return new VerifierScenario(); - } - return NULL; -} - -apr_xml_doc* UmcFramework::LoadDocument() -{ - apr_xml_parser* pParser = NULL; - apr_xml_doc* pDoc = NULL; - apr_file_t* pFD = NULL; - apr_status_t rv; - const char* pFilePath; - - pFilePath = apt_dir_layout_path_compose(m_pDirLayout,APT_LAYOUT_CONF_DIR,"umcscenarios.xml",m_pPool); - if(!pFilePath) - { - apt_log(APT_LOG_MARK,APT_PRIO_WARNING,"Failed to Compose Config File Path"); - return NULL; - } - - apt_log(APT_LOG_MARK,APT_PRIO_NOTICE,"Open Config File [%s]",pFilePath); - rv = apr_file_open(&pFD,pFilePath,APR_READ|APR_BINARY,0,m_pPool); - if(rv != APR_SUCCESS) - { - apt_log(APT_LOG_MARK,APT_PRIO_WARNING,"Failed to Open Config File [%s]",pFilePath); - return NULL; - } - - rv = apr_xml_parse_file(m_pPool,&pParser,&pDoc,pFD,2000); - if(rv != APR_SUCCESS) - { - apt_log(APT_LOG_MARK,APT_PRIO_WARNING,"Failed to Parse Config File [%s]",pFilePath); - pDoc = NULL; - } - - apr_file_close(pFD); - return pDoc; -} - -bool UmcFramework::LoadScenarios() -{ - apr_xml_doc* pDoc = LoadDocument(); - if(!pDoc) - return false; - - const apr_xml_attr* pAttr; - const apr_xml_elem* pElem; - const apr_xml_elem* pRoot = pDoc->root; - if(!pRoot || strcasecmp(pRoot->name,"umcscenarios") != 0) - { - apt_log(APT_LOG_MARK,APT_PRIO_WARNING,"Unknown Document"); - return FALSE; - } - for(pElem = pRoot->first_child; pElem; pElem = pElem->next) - { - if(strcasecmp(pElem->name,"scenario") != 0) - { - apt_log(APT_LOG_MARK,APT_PRIO_WARNING,"Unknown Element <%s>",pElem->name); - continue; - } - - const char* pName = NULL; - const char* pClass = NULL; - const char* pMrcpProfile = NULL; - for(pAttr = pElem->attr; pAttr; pAttr = pAttr->next) - { - if(strcasecmp(pAttr->name,"name") == 0) - { - pName = pAttr->value; - } - else if(strcasecmp(pAttr->name,"class") == 0) - { - pClass = pAttr->value; - } - else if(strcasecmp(pAttr->name,"profile") == 0) - { - pMrcpProfile = pAttr->value; - } - } - - if(pName && pClass) - { - apt_log(APT_LOG_MARK,APT_PRIO_INFO,"Load Scenario name [%s] class [%s]",pName,pClass); - UmcScenario* pScenario = CreateScenario(pClass); - if(pScenario) - { - pScenario->SetDirLayout(m_pDirLayout); - pScenario->SetName(pName); - pScenario->SetMrcpProfile(pMrcpProfile); - if(pScenario->Load(pElem,m_pPool)) - apr_hash_set(m_pScenarioTable,pScenario->GetName(),APR_HASH_KEY_STRING,pScenario); - else - delete pScenario; - } - else - { - apt_log(APT_LOG_MARK,APT_PRIO_WARNING,"No such scenario <%s>",pClass); - } - } - else - { - apt_log(APT_LOG_MARK,APT_PRIO_WARNING,"Missing either name or class of the scenario"); - } - } - return true; -} - -void UmcFramework::DestroyScenarios() -{ - UmcScenario* pScenario; - void* pVal; - apr_hash_index_t* it = apr_hash_first(m_pPool,m_pScenarioTable); - for(; it; it = apr_hash_next(it)) - { - apr_hash_this(it,NULL,NULL,&pVal); - pScenario = (UmcScenario*) pVal; - if(pScenario) - { - pScenario->Destroy(); - delete pScenario; - } - } - apr_hash_clear(m_pScenarioTable); -} - -bool UmcFramework::AddSession(UmcSession* pSession) -{ - if(!pSession) - return false; - - apr_hash_set(m_pSessionTable,pSession->GetId(),APR_HASH_KEY_STRING,pSession); - return true; -} - -bool UmcFramework::RemoveSession(UmcSession* pSession) -{ - if(!pSession) - return false; - - apr_hash_set(m_pSessionTable,pSession->GetId(),APR_HASH_KEY_STRING,NULL); - return true; -} - -bool UmcFramework::ProcessRunRequest(const char* pScenarioName, const char* pProfileName) -{ - UmcScenario* pScenario = (UmcScenario*) apr_hash_get(m_pScenarioTable,pScenarioName,APR_HASH_KEY_STRING); - if(!pScenario) - return false; - - UmcSession* pSession = pScenario->CreateSession(); - if(!pSession) - return false; - - printf("[%s]\n",pSession->GetId()); - pSession->SetMrcpProfile(pProfileName); - pSession->SetMrcpApplication(m_pMrcpApplication); - if(!pSession->Run()) - { - delete pSession; - return false; - } - - AddSession(pSession); - return true; -} - -void UmcFramework::ProcessStopRequest(const char* id) -{ - UmcSession* pSession; - void* pVal; - apr_hash_index_t* it = apr_hash_first(m_pPool,m_pSessionTable); - for(; it; it = apr_hash_next(it)) - { - apr_hash_this(it,NULL,NULL,&pVal); - pSession = (UmcSession*) pVal; - if(pSession && strcasecmp(pSession->GetId(),id) == 0) - { - /* stop in-progress request */ - pSession->Stop(); - return; - } - } -} - -void UmcFramework::ProcessKillRequest(const char* id) -{ - UmcSession* pSession; - void* pVal; - apr_hash_index_t* it = apr_hash_first(m_pPool,m_pSessionTable); - for(; it; it = apr_hash_next(it)) - { - apr_hash_this(it,NULL,NULL,&pVal); - pSession = (UmcSession*) pVal; - if(pSession && strcasecmp(pSession->GetId(),id) == 0) - { - /* terminate session */ - pSession->Terminate(); - return; - } - } -} - -void UmcFramework::ProcessShowScenarios() -{ - UmcScenario* pScenario; - void* pVal; - printf("%d Scenario(s)\n", apr_hash_count(m_pScenarioTable)); - apr_hash_index_t* it = apr_hash_first(m_pPool,m_pScenarioTable); - for(; it; it = apr_hash_next(it)) - { - apr_hash_this(it,NULL,NULL,&pVal); - pScenario = (UmcScenario*) pVal; - if(pScenario) - { - printf("[%s]\n", pScenario->GetName()); - } - } -} - -void UmcFramework::ProcessShowSessions() -{ - UmcSession* pSession; - void* pVal; - printf("%d Session(s)\n", apr_hash_count(m_pSessionTable)); - apr_hash_index_t* it = apr_hash_first(m_pPool,m_pSessionTable); - for(; it; it = apr_hash_next(it)) - { - apr_hash_this(it,NULL,NULL,&pVal); - pSession = (UmcSession*) pVal; - if(pSession) - { - printf("[%s] - %s\n", pSession->GetId(), pSession->GetScenario()->GetName()); - } - } -} - -void UmcFramework::RunSession(const char* pScenarioName, const char* pProfileName) -{ - apt_task_t* pTask = apt_consumer_task_base_get(m_pTask); - apt_task_msg_t* pTaskMsg = apt_task_msg_get(pTask); - if(!pTaskMsg) - return; - - pTaskMsg->type = TASK_MSG_USER; - pTaskMsg->sub_type = UMC_TASK_RUN_SESSION_MSG; - UmcTaskMsg* pUmcMsg = (UmcTaskMsg*) pTaskMsg->data; - strncpy(pUmcMsg->m_ScenarioName,pScenarioName,sizeof(pUmcMsg->m_ScenarioName)-1); - strncpy(pUmcMsg->m_ProfileName,pProfileName,sizeof(pUmcMsg->m_ProfileName)-1); - pUmcMsg->m_pAppMessage = NULL; - apt_task_msg_signal(pTask,pTaskMsg); -} - -void UmcFramework::StopSession(const char* id) -{ - apt_task_t* pTask = apt_consumer_task_base_get(m_pTask); - apt_task_msg_t* pTaskMsg = apt_task_msg_get(pTask); - if(!pTaskMsg) - return; - - pTaskMsg->type = TASK_MSG_USER; - pTaskMsg->sub_type = UMC_TASK_STOP_SESSION_MSG; - - UmcTaskMsg* pUmcMsg = (UmcTaskMsg*) pTaskMsg->data; - strncpy(pUmcMsg->m_SessionId,id,sizeof(pUmcMsg->m_SessionId)-1); - pUmcMsg->m_pAppMessage = NULL; - apt_task_msg_signal(pTask,pTaskMsg); -} - -void UmcFramework::KillSession(const char* id) -{ - apt_task_t* pTask = apt_consumer_task_base_get(m_pTask); - apt_task_msg_t* pTaskMsg = apt_task_msg_get(pTask); - if(!pTaskMsg) - return; - - pTaskMsg->type = TASK_MSG_USER; - pTaskMsg->sub_type = UMC_TASK_KILL_SESSION_MSG; - - UmcTaskMsg* pUmcMsg = (UmcTaskMsg*) pTaskMsg->data; - strncpy(pUmcMsg->m_SessionId,id,sizeof(pUmcMsg->m_SessionId)-1); - pUmcMsg->m_pAppMessage = NULL; - apt_task_msg_signal(pTask,pTaskMsg); -} - -void UmcFramework::ShowScenarios() -{ - apt_task_t* pTask = apt_consumer_task_base_get(m_pTask); - apt_task_msg_t* pTaskMsg = apt_task_msg_get(pTask); - if(!pTaskMsg) - return; - - pTaskMsg->type = TASK_MSG_USER; - pTaskMsg->sub_type = UMC_TASK_SHOW_SCENARIOS_MSG; - apt_task_msg_signal(pTask,pTaskMsg); -} - -void UmcFramework::ShowSessions() -{ - apt_task_t* pTask = apt_consumer_task_base_get(m_pTask); - apt_task_msg_t* pTaskMsg = apt_task_msg_get(pTask); - if(!pTaskMsg) - return; - - pTaskMsg->type = TASK_MSG_USER; - pTaskMsg->sub_type = UMC_TASK_SHOW_SESSIONS_MSG; - apt_task_msg_signal(pTask,pTaskMsg); -} - -apt_bool_t AppMessageHandler(const mrcp_app_message_t* pMessage) -{ - UmcFramework* pFramework = (UmcFramework*) mrcp_application_object_get(pMessage->application); - if(!pFramework) - return FALSE; - - apt_task_t* pTask = apt_consumer_task_base_get(pFramework->m_pTask); - apt_task_msg_t* pTaskMsg = apt_task_msg_get(pTask); - if(pTaskMsg) - { - pTaskMsg->type = TASK_MSG_USER; - pTaskMsg->sub_type = UMC_TASK_CLIENT_MSG; - - UmcTaskMsg* pUmcMsg = (UmcTaskMsg*) pTaskMsg->data; - pUmcMsg->m_pAppMessage = pMessage; - apt_task_msg_signal(pTask,pTaskMsg); - } - - return TRUE; -} - - -apt_bool_t AppOnSessionUpdate(mrcp_application_t *application, mrcp_session_t *session, mrcp_sig_status_code_e status) -{ - UmcSession* pSession = (UmcSession*) mrcp_application_session_object_get(session); - return pSession->OnSessionUpdate(status); -} - -apt_bool_t AppOnSessionTerminate(mrcp_application_t *application, mrcp_session_t *session, mrcp_sig_status_code_e status) -{ - UmcSession* pSession = (UmcSession*) mrcp_application_session_object_get(session); - if(!pSession->OnSessionTerminate(status)) - return false; - - UmcFramework* pFramework = (UmcFramework*) mrcp_application_object_get(application); - pFramework->RemoveSession(pSession); - delete pSession; - return true; -} - -apt_bool_t AppOnChannelAdd(mrcp_application_t *application, mrcp_session_t *session, mrcp_channel_t *channel, mrcp_sig_status_code_e status) -{ - UmcSession* pSession = (UmcSession*) mrcp_application_session_object_get(session); - return pSession->OnChannelAdd(channel,status); -} - -apt_bool_t AppOnChannelRemove(mrcp_application_t *application, mrcp_session_t *session, mrcp_channel_t *channel, mrcp_sig_status_code_e status) -{ - UmcSession* pSession = (UmcSession*) mrcp_application_session_object_get(session); - return pSession->OnChannelRemove(channel,status); -} - -apt_bool_t AppOnMessageReceive(mrcp_application_t *application, mrcp_session_t *session, mrcp_channel_t *channel, mrcp_message_t *message) -{ - UmcSession* pSession = (UmcSession*) mrcp_application_session_object_get(session); - return pSession->OnMessageReceive(channel,message); -} - -apt_bool_t AppOnTerminateEvent(mrcp_application_t *application, mrcp_session_t *session, mrcp_channel_t *channel) -{ - UmcSession* pSession = (UmcSession*) mrcp_application_session_object_get(session); - return pSession->OnTerminateEvent(channel); -} - -apt_bool_t AppOnResourceDiscover(mrcp_application_t *application, mrcp_session_t *session, mrcp_session_descriptor_t *descriptor, mrcp_sig_status_code_e status) -{ - UmcSession* pSession = (UmcSession*) mrcp_application_session_object_get(session); - return pSession->OnResourceDiscover(descriptor,status); -} - -void UmcOnStartComplete(apt_task_t* pTask) -{ - apt_consumer_task_t* pConsumerTask = (apt_consumer_task_t*) apt_task_object_get(pTask); - UmcFramework* pFramework = (UmcFramework*) apt_consumer_task_object_get(pConsumerTask); - - pFramework->CreateMrcpClient(); - pFramework->LoadScenarios(); -} - -void UmcOnTerminateComplete(apt_task_t* pTask) -{ - apt_consumer_task_t* pConsumerTask = (apt_consumer_task_t*) apt_task_object_get(pTask); - UmcFramework* pFramework = (UmcFramework*) apt_consumer_task_object_get(pConsumerTask); - - pFramework->DestroyMrcpClient(); - pFramework->DestroyScenarios(); -} - -apt_bool_t UmcProcessMsg(apt_task_t *pTask, apt_task_msg_t *pMsg) -{ - if(pMsg->type != TASK_MSG_USER) - return FALSE; - - apt_consumer_task_t* pConsumerTask = (apt_consumer_task_t*) apt_task_object_get(pTask); - UmcFramework* pFramework = (UmcFramework*) apt_consumer_task_object_get(pConsumerTask); - UmcTaskMsg* pUmcMsg = (UmcTaskMsg*) pMsg->data; - switch(pMsg->sub_type) - { - case UMC_TASK_CLIENT_MSG: - { - static const mrcp_app_message_dispatcher_t applicationDispatcher = - { - AppOnSessionUpdate, - AppOnSessionTerminate, - AppOnChannelAdd, - AppOnChannelRemove, - AppOnMessageReceive, - AppOnTerminateEvent, - AppOnResourceDiscover - }; - - mrcp_application_message_dispatch(&applicationDispatcher,pUmcMsg->m_pAppMessage); - break; - } - case UMC_TASK_RUN_SESSION_MSG: - { - pFramework->ProcessRunRequest(pUmcMsg->m_ScenarioName,pUmcMsg->m_ProfileName); - break; - } - case UMC_TASK_STOP_SESSION_MSG: - { - pFramework->ProcessStopRequest(pUmcMsg->m_SessionId); - break; - } - case UMC_TASK_KILL_SESSION_MSG: - { - pFramework->ProcessKillRequest(pUmcMsg->m_SessionId); - break; - } - case UMC_TASK_SHOW_SCENARIOS_MSG: - { - pFramework->ProcessShowScenarios(); - break; - } - case UMC_TASK_SHOW_SESSIONS_MSG: - { - pFramework->ProcessShowSessions(); - break; - } - } - return TRUE; -} diff --git a/libs/unimrcp/platforms/umc/src/umcscenario.cpp b/libs/unimrcp/platforms/umc/src/umcscenario.cpp deleted file mode 100644 index d9300dcf3c5..00000000000 --- a/libs/unimrcp/platforms/umc/src/umcscenario.cpp +++ /dev/null @@ -1,234 +0,0 @@ -/* - * Copyright 2008-2014 Arsen Chaloyan - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - * - * $Id: umcscenario.cpp 2232 2014-11-12 01:33:37Z achaloyan@gmail.com $ - */ - -#include -#include "umcscenario.h" -#include "apt_log.h" - -UmcScenario::UmcScenario() : - m_pName(NULL), - m_pMrcpProfile("uni2"), - m_pDirLayout(NULL), - m_ResourceDiscovery(false), - m_pCapabilities(NULL), - m_pRtpDescriptor(NULL) -{ -} - -UmcScenario::~UmcScenario() -{ -} - -bool UmcScenario::Load(const apr_xml_elem* pElem, apr_pool_t* pool) -{ - const apr_xml_elem* pChildElem; - /* Load Child Elements */ - for(pChildElem = pElem->first_child; pChildElem; pChildElem = pChildElem->next) - { - if(!LoadElement(pChildElem,pool)) - apt_log(APT_LOG_MARK,APT_PRIO_WARNING,"Failed to Load Child Element %s",pChildElem->name); - } - return true; -} - -void UmcScenario::Destroy() -{ -} - -bool UmcScenario::LoadElement(const apr_xml_elem* pElem, apr_pool_t* pool) -{ - if(strcasecmp(pElem->name,"resource-discovery") == 0) - { - LoadDiscovery(pElem,pool); - return true; - } - else if(strcasecmp(pElem->name,"termination") == 0) - { - LoadTermination(pElem,pool); - return true; - } - else if(strcasecmp(pElem->name,"rtp-termination") == 0) - { - LoadRtpTermination(pElem,pool); - return true; - } - - return false; -} - -bool UmcScenario::LoadDiscovery(const apr_xml_elem* pElem, apr_pool_t* pool) -{ - m_ResourceDiscovery = IsElementEnabled(pElem); - return true; -} - -bool UmcScenario::LoadTermination(const apr_xml_elem* pElem, apr_pool_t* pool) -{ - if(!IsElementEnabled(pElem)) - return true; - - const apr_xml_elem* pChildElem; - /* Load Child Elements */ - for(pChildElem = pElem->first_child; pChildElem; pChildElem = pChildElem->next) - { - if(strcasecmp(pChildElem->name,"capabilities") == 0) - return LoadCapabilities(pChildElem,pool); - } - return true; -} - -bool UmcScenario::LoadCapabilities(const apr_xml_elem* pElem, apr_pool_t* pool) -{ - const apr_xml_elem* pChildElem; - /* Load Child Elements */ - m_pCapabilities = (mpf_codec_capabilities_t*) apr_palloc(pool,sizeof(mpf_codec_capabilities_t)); - mpf_codec_capabilities_init(m_pCapabilities,1,pool); - for(pChildElem = pElem->first_child; pChildElem; pChildElem = pChildElem->next) - { - if(strcasecmp(pChildElem->name,"codec") != 0) - continue; - - const char* pName = NULL; - const char* pRates = NULL; - const apr_xml_attr* pAttr; - for(pAttr = pChildElem->attr; pAttr; pAttr = pAttr->next) - { - if(strcasecmp(pAttr->name,"name") == 0) - { - pName = pAttr->value; - } - else if(strcasecmp(pAttr->name,"rates") == 0) - { - pRates = pAttr->value; - } - } - - if(pName) - { - int rates = ParseRates(pRates,pool); - mpf_codec_capabilities_add(m_pCapabilities,rates,pName); - } - } - return true; -} - -int UmcScenario::ParseRates(const char* pStr, apr_pool_t* pool) -{ - int rates = 0; - if(pStr) - { - char* pRateStr; - char* pState; - char* pRateListStr = apr_pstrdup(pool,pStr); - do - { - pRateStr = apr_strtok(pRateListStr, " ", &pState); - if(pRateStr) - { - apr_uint16_t rate = (apr_uint16_t)atoi(pRateStr); - rates |= mpf_sample_rate_mask_get(rate); - } - pRateListStr = NULL; /* make sure we pass NULL on subsequent calls of apr_strtok() */ - } - while(pRateStr); - } - return rates; -} - -bool UmcScenario::LoadRtpTermination(const apr_xml_elem* pElem, apr_pool_t* pool) -{ - return true; -} - -bool UmcScenario::InitCapabilities(mpf_stream_capabilities_t* pCapabilities) const -{ - if(m_pCapabilities) - { - int i; - mpf_codec_attribs_t *pAttribs; - for(i=0; iattrib_arr->nelts; i++) - { - pAttribs = &APR_ARRAY_IDX(m_pCapabilities->attrib_arr,i,mpf_codec_attribs_t); - mpf_codec_capabilities_add( - &pCapabilities->codecs, - pAttribs->sample_rates, - pAttribs->name.buf); - } - } - else - { - /* add default codec capabilities (Linear PCM) */ - mpf_codec_capabilities_add( - &pCapabilities->codecs, - MPF_SAMPLE_RATE_8000 | MPF_SAMPLE_RATE_16000, - "LPCM"); - } - - return true; -} - -bool UmcScenario::IsElementEnabled(const apr_xml_elem* pElem) -{ - const apr_xml_attr* pAttr; - for(pAttr = pElem->attr; pAttr; pAttr = pAttr->next) - { - if(strcasecmp(pAttr->name,"enable") == 0) - { - return atoi(pAttr->value) > 0; - } - } - return true; -} - -const char* UmcScenario::LoadFileContent(const char* pFileName, apr_size_t& size, apr_pool_t* pool) const -{ - if(!m_pDirLayout || !pFileName) - return NULL; - - char* pFilePath = apt_datadir_filepath_get(m_pDirLayout,pFileName,pool); - if(!pFilePath) - return NULL; - - apr_file_t *pFile; - if(apr_file_open(&pFile,pFilePath,APR_FOPEN_READ|APR_FOPEN_BINARY,0,pool) != APR_SUCCESS) - { - apt_log(APT_LOG_MARK,APT_PRIO_WARNING,"Failed to Open File %s",pFilePath); - return NULL; - } - - apr_finfo_t finfo; - if(apr_file_info_get(&finfo,APR_FINFO_SIZE,pFile) != APR_SUCCESS) - { - apt_log(APT_LOG_MARK,APT_PRIO_WARNING,"Failed to Get File Info %s",pFilePath); - apr_file_close(pFile); - return NULL; - } - - size = (apr_size_t)finfo.size; - char* pContent = (char*) apr_palloc(pool,size+1); - apt_log(APT_LOG_MARK,APT_PRIO_DEBUG,"Load File Content size [%" APR_SIZE_T_FMT" bytes] %s",size,pFilePath); - if(apr_file_read(pFile,pContent,&size) != APR_SUCCESS) - { - apt_log(APT_LOG_MARK,APT_PRIO_WARNING,"Failed to Read Content %s",pFilePath); - apr_file_close(pFile); - return NULL; - } - pContent[size] = '\0'; - apr_file_close(pFile); - return pContent; -} diff --git a/libs/unimrcp/platforms/umc/src/umcsession.cpp b/libs/unimrcp/platforms/umc/src/umcsession.cpp deleted file mode 100644 index 29618e09259..00000000000 --- a/libs/unimrcp/platforms/umc/src/umcsession.cpp +++ /dev/null @@ -1,252 +0,0 @@ -/* - * Copyright 2008-2014 Arsen Chaloyan - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - * - * $Id: umcsession.cpp 2136 2014-07-04 06:33:36Z achaloyan@gmail.com $ - */ - -#include "umcsession.h" -#include "umcscenario.h" -#include "mrcp_message.h" - -UmcSession::UmcSession(const UmcScenario* pScenario) : - m_pScenario(pScenario), - m_pMrcpProfile(NULL), - m_pMrcpApplication(NULL), - m_pMrcpSession(NULL), - m_pMrcpMessage(NULL), - m_Running(false), - m_Terminating(false) -{ - static int id = 0; - if(id == INT_MAX) - id = 0; - id++; - - int size = apr_snprintf(m_Id,sizeof(m_Id)-1,"%d",id); - m_Id[size] = '\0'; -} - -UmcSession::~UmcSession() -{ -} - -bool UmcSession::Run() -{ - if(m_Running) - return false; - - if(!m_pMrcpProfile) - m_pMrcpProfile = m_pScenario->GetMrcpProfile(); - - if(!m_pMrcpProfile || !m_pMrcpApplication) - return false; - - /* create session */ - if(!CreateMrcpSession(m_pMrcpProfile)) - return false; - - m_Running = true; - - bool ret = false; - if(m_pScenario->IsDiscoveryEnabled()) - ret = ResourceDiscover(); - else - ret = Start(); - - if(!ret) - { - m_Running = false; - DestroyMrcpSession(); - } - return ret; -} - -bool UmcSession::Stop() -{ - if(m_Terminating) - return false; - - return true; -} - -bool UmcSession::Terminate() -{ - if(m_Terminating) - return false; - - m_Running = false; - m_Terminating = true; - return (mrcp_application_session_terminate(m_pMrcpSession) == TRUE); -} - -bool UmcSession::OnSessionTerminate(mrcp_sig_status_code_e status) -{ - if(!m_Terminating) - return false; - - m_Terminating = false; - return DestroyMrcpSession(); -} - -bool UmcSession::OnSessionUpdate(mrcp_sig_status_code_e status) -{ - return m_Running; -} - -bool UmcSession::OnChannelAdd(mrcp_channel_t *channel, mrcp_sig_status_code_e status) -{ - return m_Running; -} - -bool UmcSession::OnChannelRemove(mrcp_channel_t *channel, mrcp_sig_status_code_e status) -{ - return m_Running; -} - -bool UmcSession::OnMessageReceive(mrcp_channel_t *channel, mrcp_message_t *message) -{ - if(!m_Running) - return false; - - if(!m_pMrcpMessage) - return false; - - /* match request identifiers */ - if(m_pMrcpMessage->start_line.request_id != message->start_line.request_id) - return false; - - return true; -} - -bool UmcSession::OnTerminateEvent(mrcp_channel_t *channel) -{ - if(!m_Running) - return false; - - return Terminate(); -} - -bool UmcSession::OnResourceDiscover(mrcp_session_descriptor_t* descriptor, mrcp_sig_status_code_e status) -{ - if(!m_Running) - return false; - - if(!Start()) - Terminate(); - return true; -} - -bool UmcSession::CreateMrcpSession(const char* pProfileName) -{ - m_pMrcpSession = mrcp_application_session_create(m_pMrcpApplication,pProfileName,this); - char name[32]; - apr_snprintf(name,sizeof(name),"umc-%s",m_Id); - mrcp_application_session_name_set(m_pMrcpSession,name); - return (m_pMrcpSession != NULL); -} - -bool UmcSession::DestroyMrcpSession() -{ - if(!m_pMrcpSession) - return false; - - mrcp_application_session_destroy(m_pMrcpSession); - m_pMrcpSession = NULL; - return true; -} - -bool UmcSession::AddMrcpChannel(mrcp_channel_t* pMrcpChannel) -{ - if(!m_Running) - return false; - - return (mrcp_application_channel_add(m_pMrcpSession,pMrcpChannel) == TRUE); -} - -bool UmcSession::RemoveMrcpChannel(mrcp_channel_t* pMrcpChannel) -{ - if(!m_Running) - return false; - - return (mrcp_application_channel_remove(m_pMrcpSession,pMrcpChannel) == TRUE); -} - -bool UmcSession::SendMrcpRequest(mrcp_channel_t* pMrcpChannel, mrcp_message_t* pMrcpMessage) -{ - if(!m_Running) - return false; - - m_pMrcpMessage = pMrcpMessage; - return (mrcp_application_message_send(m_pMrcpSession,pMrcpChannel,pMrcpMessage) == TRUE); -} - -bool UmcSession::ResourceDiscover() -{ - if(!m_Running) - return false; - - return (mrcp_application_resource_discover(m_pMrcpSession) == TRUE); -} - -mrcp_channel_t* UmcSession::CreateMrcpChannel( - mrcp_resource_id resource_id, - mpf_termination_t* pTermination, - mpf_rtp_termination_descriptor_t* pRtpDescriptor, - void* pObj) -{ - return mrcp_application_channel_create( - m_pMrcpSession, /* session, channel belongs to */ - resource_id, /* MRCP resource identifier */ - pTermination, /* media termination, used to terminate audio stream */ - NULL, /* RTP descriptor, used to create RTP termination (NULL by default) */ - pObj); /* object to associate */ -} - -mpf_termination_t* UmcSession::CreateAudioTermination( - const mpf_audio_stream_vtable_t* pStreamVtable, - mpf_stream_capabilities_t* pCapabilities, - void* pObj) -{ - return mrcp_application_audio_termination_create( - m_pMrcpSession, /* session, termination belongs to */ - pStreamVtable, /* virtual methods table of audio stream */ - pCapabilities, /* capabilities of audio stream */ - pObj); /* object to associate */ -} - -mrcp_message_t* UmcSession::CreateMrcpMessage( - mrcp_channel_t* pMrcpChannel, - mrcp_method_id method_id) -{ - return mrcp_application_message_create(m_pMrcpSession,pMrcpChannel,method_id); -} - - - -apr_pool_t* UmcSession::GetSessionPool() const -{ - if(!m_pMrcpSession) - return NULL; - return mrcp_application_session_pool_get(m_pMrcpSession); -} - -const char* UmcSession::GetMrcpSessionId() const -{ - if(!m_pMrcpSession) - return NULL; - - const apt_str_t *pId = mrcp_application_session_id_get(m_pMrcpSession); - return pId->buf; -} diff --git a/libs/unimrcp/platforms/umc/src/verifierscenario.cpp b/libs/unimrcp/platforms/umc/src/verifierscenario.cpp deleted file mode 100644 index e11d3f6e93c..00000000000 --- a/libs/unimrcp/platforms/umc/src/verifierscenario.cpp +++ /dev/null @@ -1,82 +0,0 @@ -/* - * Copyright 2008-2014 Arsen Chaloyan - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - * - * $Id: verifierscenario.cpp 2136 2014-07-04 06:33:36Z achaloyan@gmail.com $ - */ - -#include -#include "verifierscenario.h" -#include "verifiersession.h" -#include "mrcp_message.h" -#include "mrcp_generic_header.h" -#include "mrcp_recog_header.h" -#include "mrcp_recog_resource.h" -#include "apt_log.h" - -VerifierScenario::VerifierScenario() : - m_RepositoryURI(NULL), - m_VerificationMode(NULL), - m_VoiceprintIdentifier(NULL) -{ -} - -VerifierScenario::~VerifierScenario() -{ -} - -void VerifierScenario::Destroy() -{ -} - -bool VerifierScenario::LoadElement(const apr_xml_elem* pElem, apr_pool_t* pool) -{ - if(UmcScenario::LoadElement(pElem,pool)) - return true; - - if(strcasecmp(pElem->name,"verify") == 0) - { - LoadVerify(pElem,pool); - return true; - } - return false; -} - -bool VerifierScenario::LoadVerify(const apr_xml_elem* pElem, apr_pool_t* pool) -{ - const apr_xml_attr* pAttr; - for(pAttr = pElem->attr; pAttr; pAttr = pAttr->next) - { - if(strcasecmp(pAttr->name,"repository-uri") == 0) - { - m_RepositoryURI = pAttr->value; - } - else if(strcasecmp(pAttr->name,"verification-mode") == 0) - { - m_VerificationMode = pAttr->value; - } - else if(strcasecmp(pAttr->name,"voiceprint-identifier") == 0) - { - m_VoiceprintIdentifier = pAttr->value; - } - } - - return true; -} - - -UmcSession* VerifierScenario::CreateSession() -{ - return new VerifierSession(this); -} diff --git a/libs/unimrcp/platforms/umc/src/verifiersession.cpp b/libs/unimrcp/platforms/umc/src/verifiersession.cpp deleted file mode 100644 index c9da9f44654..00000000000 --- a/libs/unimrcp/platforms/umc/src/verifiersession.cpp +++ /dev/null @@ -1,396 +0,0 @@ -/* - * Copyright 2008-2014 Arsen Chaloyan - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - * - * $Id: verifiersession.cpp 2136 2014-07-04 06:33:36Z achaloyan@gmail.com $ - */ - -#include "verifiersession.h" -#include "verifierscenario.h" -#include "mrcp_message.h" -#include "mrcp_generic_header.h" -#include "mrcp_verifier_header.h" -#include "mrcp_verifier_resource.h" -#include "apt_nlsml_doc.h" -#include "apt_log.h" - -struct VerifierChannel -{ - /** MRCP control channel */ - mrcp_channel_t* m_pMrcpChannel; - /** IN-PROGRESS VERIFY request */ - mrcp_message_t* m_pVerificationRequest; - /** Streaming is in-progress */ - bool m_Streaming; - /** File to read audio stream from */ - FILE* m_pAudioIn; - /** Estimated time to complete (used if no audio_in available) */ - apr_size_t m_TimeToComplete; - - VerifierChannel() : - m_pMrcpChannel(NULL), - m_pVerificationRequest(NULL), - m_Streaming(false), - m_pAudioIn(NULL), - m_TimeToComplete(0) {} -}; - -VerifierSession::VerifierSession(const VerifierScenario* pScenario) : - UmcSession(pScenario), - m_pVerifierChannel(NULL), - m_ContentId("request1@form-level") -{ -} - -VerifierSession::~VerifierSession() -{ -} - -bool VerifierSession::Start() -{ - /* create channel and associate all the required data */ - m_pVerifierChannel = CreateVerifierChannel(); - if(!m_pVerifierChannel) - return false; - - /* add channel to session (send asynchronous request) */ - if(!AddMrcpChannel(m_pVerifierChannel->m_pMrcpChannel)) - { - delete m_pVerifierChannel; - m_pVerifierChannel = NULL; - return false; - } - return true; -} - -bool VerifierSession::Stop() -{ - if(!UmcSession::Stop()) - return false; - - if(!m_pVerifierChannel) - return false; - - mrcp_message_t* pStopMessage = CreateMrcpMessage(m_pVerifierChannel->m_pMrcpChannel,VERIFIER_STOP); - if(!pStopMessage) - return false; - - return SendMrcpRequest(m_pVerifierChannel->m_pMrcpChannel,pStopMessage); -} - -bool VerifierSession::OnSessionTerminate(mrcp_sig_status_code_e status) -{ - if(m_pVerifierChannel) - { - FILE* pAudioIn = m_pVerifierChannel->m_pAudioIn; - if(pAudioIn) - { - m_pVerifierChannel->m_pAudioIn = NULL; - fclose(pAudioIn); - } - - delete m_pVerifierChannel; - m_pVerifierChannel = NULL; - } - return UmcSession::OnSessionTerminate(status); -} - -static apt_bool_t ReadStream(mpf_audio_stream_t* pStream, mpf_frame_t* pFrame) -{ - VerifierChannel* pVerifierChannel = (VerifierChannel*) pStream->obj; - if(pVerifierChannel && pVerifierChannel->m_Streaming) - { - if(pVerifierChannel->m_pAudioIn) - { - if(fread(pFrame->codec_frame.buffer,1,pFrame->codec_frame.size,pVerifierChannel->m_pAudioIn) == pFrame->codec_frame.size) - { - /* normal read */ - pFrame->type |= MEDIA_FRAME_TYPE_AUDIO; - } - else - { - /* file is over */ - pVerifierChannel->m_Streaming = false; - } - } - else - { - /* fill with silence in case no file available */ - if(pVerifierChannel->m_TimeToComplete >= CODEC_FRAME_TIME_BASE) - { - pFrame->type |= MEDIA_FRAME_TYPE_AUDIO; - memset(pFrame->codec_frame.buffer,0,pFrame->codec_frame.size); - pVerifierChannel->m_TimeToComplete -= CODEC_FRAME_TIME_BASE; - } - else - { - pVerifierChannel->m_Streaming = false; - } - } - } - return TRUE; -} - -VerifierChannel* VerifierSession::CreateVerifierChannel() -{ - mrcp_channel_t* pChannel; - mpf_termination_t* pTermination; - mpf_stream_capabilities_t* pCapabilities; - apr_pool_t* pool = GetSessionPool(); - - /* create channel */ - VerifierChannel* pVerifierChannel = new VerifierChannel; - - /* create source stream capabilities */ - pCapabilities = mpf_source_stream_capabilities_create(pool); - GetScenario()->InitCapabilities(pCapabilities); - - static const mpf_audio_stream_vtable_t audio_stream_vtable = - { - NULL, - NULL, - NULL, - ReadStream, - NULL, - NULL, - NULL, - NULL - }; - - pTermination = CreateAudioTermination( - &audio_stream_vtable, /* virtual methods table of audio stream */ - pCapabilities, /* capabilities of audio stream */ - pVerifierChannel); /* object to associate */ - - pChannel = CreateMrcpChannel( - MRCP_VERIFIER_RESOURCE, /* MRCP resource identifier */ - pTermination, /* media termination, used to terminate audio stream */ - NULL, /* RTP descriptor, used to create RTP termination (NULL by default) */ - pVerifierChannel); /* object to associate */ - if(!pChannel) - { - delete pVerifierChannel; - return NULL; - } - - pVerifierChannel->m_pMrcpChannel = pChannel; - return pVerifierChannel; -} - -bool VerifierSession::OnChannelAdd(mrcp_channel_t* pMrcpChannel, mrcp_sig_status_code_e status) -{ - if(!UmcSession::OnChannelAdd(pMrcpChannel,status)) - return false; - - if(status != MRCP_SIG_STATUS_CODE_SUCCESS) - { - /* error case, just terminate the demo */ - return Terminate(); - } - - return StartVerification(pMrcpChannel); -} - -bool VerifierSession::OnMessageReceive(mrcp_channel_t* pMrcpChannel, mrcp_message_t* pMrcpMessage) -{ - if(!UmcSession::OnMessageReceive(pMrcpChannel,pMrcpMessage)) - return false; - - VerifierChannel* pVerifierChannel = (VerifierChannel*) mrcp_application_channel_object_get(pMrcpChannel); - if(pMrcpMessage->start_line.message_type == MRCP_MESSAGE_TYPE_RESPONSE) - { - /* received MRCP response */ - if(pMrcpMessage->start_line.method_id == VERIFIER_START_SESSION) - { - /* received the response to START-SESSION request */ - /* create and send VERIFY request */ - mrcp_message_t* pMrcpMessage = CreateVerificationRequest(pMrcpChannel); - if(pMrcpMessage) - { - SendMrcpRequest(pVerifierChannel->m_pMrcpChannel,pMrcpMessage); - } - } - else if(pMrcpMessage->start_line.method_id == VERIFIER_END_SESSION) - { - /* received the response to END-SESSION request */ - Terminate(); - } - else if(pMrcpMessage->start_line.method_id == VERIFIER_VERIFY) - { - /* received the response to VERIFY request */ - if(pMrcpMessage->start_line.request_state == MRCP_REQUEST_STATE_INPROGRESS) - { - VerifierChannel* pVerifierChannel = (VerifierChannel*) mrcp_application_channel_object_get(pMrcpChannel); - if(pVerifierChannel) - pVerifierChannel->m_pVerificationRequest = GetMrcpMessage(); - - /* start to stream the speech to Verify */ - if(pVerifierChannel) - pVerifierChannel->m_Streaming = true; - } - else - { - /* create and send END-SESSION request */ - mrcp_message_t* pMrcpMessage = CreateEndSessionRequest(pMrcpChannel); - if(pMrcpMessage) - { - SendMrcpRequest(pVerifierChannel->m_pMrcpChannel,pMrcpMessage); - } - } - } - else - { - /* received unexpected response */ - } - } - else if(pMrcpMessage->start_line.message_type == MRCP_MESSAGE_TYPE_EVENT) - { - if(pMrcpMessage->start_line.method_id == VERIFIER_VERIFICATION_COMPLETE) - { - if(pVerifierChannel) - pVerifierChannel->m_Streaming = false; - - VerifierChannel* pVerifierChannel = (VerifierChannel*) mrcp_application_channel_object_get(pMrcpChannel); - if(pVerifierChannel) - pVerifierChannel->m_pVerificationRequest = NULL; - - /* create and send END-SESSION request */ - mrcp_message_t* pMrcpMessage = CreateEndSessionRequest(pMrcpChannel); - if(pVerifierChannel && pMrcpMessage) - { - SendMrcpRequest(pVerifierChannel->m_pMrcpChannel,pMrcpMessage); - } - } - else if(pMrcpMessage->start_line.method_id == VERIFIER_START_OF_INPUT) - { - /* received start-of-input, do whatever you need here */ - } - } - return true; -} - -bool VerifierSession::StartVerification(mrcp_channel_t* pMrcpChannel) -{ - const mpf_codec_descriptor_t* pDescriptor = mrcp_application_source_descriptor_get(pMrcpChannel); - if(!pDescriptor) - { - apt_log(APT_LOG_MARK,APT_PRIO_WARNING,"Failed to Get Media Source Descriptor"); - return Terminate(); - } - - VerifierChannel* pVerifierChannel = (VerifierChannel*) mrcp_application_channel_object_get(pMrcpChannel); - /* create and send Verification request */ - mrcp_message_t* pMrcpMessage = CreateStartSessionRequest(pMrcpChannel); - if(pMrcpMessage) - { - SendMrcpRequest(pVerifierChannel->m_pMrcpChannel,pMrcpMessage); - } - - pVerifierChannel->m_pAudioIn = GetAudioIn(pDescriptor,GetSessionPool()); - if(!pVerifierChannel->m_pAudioIn) - { - /* no audio input availble, set some estimated time to complete instead */ - pVerifierChannel->m_TimeToComplete = 5000; // 5 sec - } - return true; -} - -mrcp_message_t* VerifierSession::CreateStartSessionRequest(mrcp_channel_t* pMrcpChannel) -{ - mrcp_message_t* pMrcpMessage = CreateMrcpMessage(pMrcpChannel,VERIFIER_START_SESSION); - if(!pMrcpMessage) - return NULL; - - mrcp_verifier_header_t* pVerifierHeader; - - /* get/allocate verifier header */ - pVerifierHeader = (mrcp_verifier_header_t*) mrcp_resource_header_prepare(pMrcpMessage); - if(pVerifierHeader) - { - const VerifierScenario* pScenario = GetScenario(); - const char* pRepositoryURI = pScenario->GetRepositoryURI(); - if(pRepositoryURI) - { - apt_string_set(&pVerifierHeader->repository_uri,pRepositoryURI); - mrcp_resource_header_property_add(pMrcpMessage,VERIFIER_HEADER_REPOSITORY_URI); - } - const char* pVoiceprintIdentifier = pScenario->GetVoiceprintIdentifier(); - if(pVoiceprintIdentifier) - { - apt_string_set(&pVerifierHeader->voiceprint_identifier,pVoiceprintIdentifier); - mrcp_resource_header_property_add(pMrcpMessage,VERIFIER_HEADER_VOICEPRINT_IDENTIFIER); - } - const char* pVerificationMode = pScenario->GetVerificationMode(); - if(pVerificationMode) - { - apt_string_set(&pVerifierHeader->verification_mode,pVerificationMode); - mrcp_resource_header_property_add(pMrcpMessage,VERIFIER_HEADER_VERIFICATION_MODE); - } - } - return pMrcpMessage; -} - -mrcp_message_t* VerifierSession::CreateEndSessionRequest(mrcp_channel_t* pMrcpChannel) -{ - return CreateMrcpMessage(pMrcpChannel,VERIFIER_END_SESSION); -} - -mrcp_message_t* VerifierSession::CreateVerificationRequest(mrcp_channel_t* pMrcpChannel) -{ - mrcp_message_t* pMrcpMessage = CreateMrcpMessage(pMrcpChannel,VERIFIER_VERIFY); - if(!pMrcpMessage) - return NULL; - - mrcp_verifier_header_t* pVerifierHeader; - - /* get/allocate verifier header */ - pVerifierHeader = (mrcp_verifier_header_t*) mrcp_resource_header_prepare(pMrcpMessage); - if(pVerifierHeader) - { - pVerifierHeader->no_input_timeout = 5000; - mrcp_resource_header_property_add(pMrcpMessage,VERIFIER_HEADER_NO_INPUT_TIMEOUT); - pVerifierHeader->start_input_timers = TRUE; - mrcp_resource_header_property_add(pMrcpMessage,VERIFIER_HEADER_START_INPUT_TIMERS); - } - return pMrcpMessage; -} - -FILE* VerifierSession::GetAudioIn(const mpf_codec_descriptor_t* pDescriptor, apr_pool_t* pool) const -{ - const VerifierScenario* pScenario = GetScenario(); - const char* pVoiceprintIdentifier = pScenario->GetVoiceprintIdentifier(); - if(!pVoiceprintIdentifier) - { - apt_log(APT_LOG_MARK,APT_PRIO_WARNING,"No Voiceprint Specified"); - return NULL; - } - - const char* pFileName = apr_psprintf(pool,"%s-%dkHz.pcm", - pVoiceprintIdentifier, - pDescriptor->sampling_rate/1000); - apt_dir_layout_t* pDirLayout = pScenario->GetDirLayout(); - const char* pFilePath = apt_datadir_filepath_get(pDirLayout,pFileName,pool); - if(!pFilePath) - return NULL; - - FILE* pFile = fopen(pFilePath,"rb"); - if(!pFile) - { - apt_log(APT_LOG_MARK,APT_PRIO_INFO,"Cannot Find [%s]",pFilePath); - return NULL; - } - - apt_log(APT_LOG_MARK,APT_PRIO_INFO,"Set [%s] as Speech Source",pFilePath); - return pFile; -} diff --git a/libs/unimrcp/platforms/umc/umc.rc b/libs/unimrcp/platforms/umc/umc.rc deleted file mode 100644 index 98a3cf92098..00000000000 --- a/libs/unimrcp/platforms/umc/umc.rc +++ /dev/null @@ -1,39 +0,0 @@ -#include "uni_version.h" - -1 VERSIONINFO - FILEVERSION UNI_VERSION_STRING_CSV,0 - PRODUCTVERSION UNI_VERSION_STRING_CSV,0 - FILEFLAGSMASK 0x3fL -#if defined(_DEBUG) - FILEFLAGS 0x01L -#else - FILEFLAGS 0x00L -#endif -#if defined(WINNT) || defined(WIN64) - FILEOS 0x40004L -#else - FILEOS 0x4L -#endif - FILETYPE 0x1L - FILESUBTYPE 0x0L -BEGIN - BLOCK "StringFileInfo" - BEGIN - BLOCK "040904b0" - BEGIN - VALUE "Comments", UNI_LICENSE "\0" - VALUE "CompanyName", "UniMRCP\0" - VALUE "FileDescription", "UniMRCP Client Application\0" - VALUE "FileVersion", UNI_VERSION_STRING "\0" - VALUE "InternalName", "umc" "\0" - VALUE "LegalCopyright", UNI_COPYRIGHT "\0" - VALUE "OriginalFilename", "umc.exe" "\0" - VALUE "ProductName", "UniMRCP Project\0" - VALUE "ProductVersion", UNI_VERSION_STRING "\0" - END - END - BLOCK "VarFileInfo" - BEGIN - VALUE "Translation", 0x409, 1200 - END -END diff --git a/libs/unimrcp/platforms/umc/umc.vcproj b/libs/unimrcp/platforms/umc/umc.vcproj deleted file mode 100644 index d003362f18c..00000000000 --- a/libs/unimrcp/platforms/umc/umc.vcproj +++ /dev/null @@ -1,460 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/libs/unimrcp/platforms/umc/umc.vcxproj b/libs/unimrcp/platforms/umc/umc.vcxproj deleted file mode 100644 index 36c4cb2aaae..00000000000 --- a/libs/unimrcp/platforms/umc/umc.vcxproj +++ /dev/null @@ -1,176 +0,0 @@ - - - - - Debug - Win32 - - - Debug - x64 - - - Release - Win32 - - - Release - x64 - - - - {CD1C52C1-D8E1-4654-AE65-6CCAB38DE894} - umc - - - - Application - - - Application - - - Application - - - Application - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - <_ProjectFileVersion>10.0.30319.1 - AllRules.ruleset - - - AllRules.ruleset - - - AllRules.ruleset - - - AllRules.ruleset - - - - - - include;%(AdditionalIncludeDirectories) - - - $(UniMRCPClientLibs);%(AdditionalDependencies) - - - - - include;%(AdditionalIncludeDirectories) - - - $(UniMRCPClientLibs);%(AdditionalDependencies) - UseLinkTimeCodeGeneration - - - - - X64 - - - include;%(AdditionalIncludeDirectories) - ProgramDatabase - - - $(UniMRCPClientLibs);%(AdditionalDependencies) - - - - - X64 - - - include;%(AdditionalIncludeDirectories) - - - $(UniMRCPClientLibs);%(AdditionalDependencies) - UseLinkTimeCodeGeneration - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - ..\..\build;%(AdditionalIncludeDirectories) - ..\..\build;%(AdditionalIncludeDirectories) - ..\..\build;%(AdditionalIncludeDirectories) - ..\..\build;%(AdditionalIncludeDirectories) - - - - - {ee157390-1e85-416c-946e-620e32c9ad33} - false - - - - - - \ No newline at end of file diff --git a/libs/unimrcp/platforms/umc/umc.vcxproj.filters b/libs/unimrcp/platforms/umc/umc.vcxproj.filters deleted file mode 100644 index 8fbefd40bc6..00000000000 --- a/libs/unimrcp/platforms/umc/umc.vcxproj.filters +++ /dev/null @@ -1,119 +0,0 @@ - - - - - {4FC737F1-C7A5-4376-A066-2A32D752A2FF} - cpp;c;cc;cxx;def;odl;idl;hpj;bat;asm;asmx - - - {93995380-89BD-4b04-88EB-625FBE52EBFB} - h;hpp;hxx;hm;inl;inc;xsd - - - - - src - - - src - - - src - - - src - - - src - - - src - - - src - - - src - - - src - - - src - - - src - - - src - - - src - - - src - - - src - - - src - - - src - - - - - include - - - include - - - include - - - include - - - include - - - include - - - include - - - include - - - include - - - include - - - include - - - include - - - include - - - include - - - include - - - include - - - - - - \ No newline at end of file diff --git a/libs/unimrcp/platforms/unimrcp-client/Makefile.am b/libs/unimrcp/platforms/unimrcp-client/Makefile.am deleted file mode 100644 index f7310d27655..00000000000 --- a/libs/unimrcp/platforms/unimrcp-client/Makefile.am +++ /dev/null @@ -1,16 +0,0 @@ -AM_CPPFLAGS = -I$(top_srcdir)/platforms/unimrcp-client/include \ - $(UNIMRCP_CLIENTAPP_INCLUDES) - -bin_PROGRAMS = unimrcpclient - -unimrcpclient_SOURCES = src/main.c \ - src/demo_framework.c \ - src/demo_synth_application.c \ - src/demo_recog_application.c \ - src/demo_bypass_application.c \ - src/demo_discover_application.c \ - src/demo_util.c -unimrcpclient_LDADD = $(UNIMRCP_CLIENTAPP_LIBS) -unimrcpclient_LDFLAGS = $(UNIMRCP_CLIENTAPP_OPTS) - -include $(top_srcdir)/build/rules/uniclientapp.am diff --git a/libs/unimrcp/platforms/unimrcp-client/include/demo_application.h b/libs/unimrcp/platforms/unimrcp-client/include/demo_application.h deleted file mode 100644 index a1f3899a7c8..00000000000 --- a/libs/unimrcp/platforms/unimrcp-client/include/demo_application.h +++ /dev/null @@ -1,63 +0,0 @@ -/* - * Copyright 2008-2014 Arsen Chaloyan - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - * - * $Id: demo_application.h 2136 2014-07-04 06:33:36Z achaloyan@gmail.com $ - */ - -#ifndef DEMO_APPLICATION_H -#define DEMO_APPLICATION_H - -/** - * @file demo_application.h - * @brief Demo MRCP Application - */ - -#include "mrcp_application.h" - -APT_BEGIN_EXTERN_C - -/** Demo application declaration */ -typedef struct demo_application_t demo_application_t; - -/** Demo application */ -struct demo_application_t { - /** MRCP application */ - mrcp_application_t *application; - /** Demo framework */ - void *framework; - - /** Virtual run method */ - apt_bool_t (*run)(demo_application_t *application, const char *profile); - /** Virtual app_message handler */ - apt_bool_t (*handler)(demo_application_t *application, const mrcp_app_message_t *app_message); -}; - - -/** Create demo synthesizer application */ -demo_application_t* demo_synth_application_create(apr_pool_t *pool); - -/** Create demo recognizer application */ -demo_application_t* demo_recog_application_create(apr_pool_t *pool); - -/** Create demo bypass media application */ -demo_application_t* demo_bypass_application_create(apr_pool_t *pool); - -/** Create demo resource discover application */ -demo_application_t* demo_discover_application_create(apr_pool_t *pool); - - -APT_END_EXTERN_C - -#endif /* DEMO_APPLICATION_H */ diff --git a/libs/unimrcp/platforms/unimrcp-client/include/demo_framework.h b/libs/unimrcp/platforms/unimrcp-client/include/demo_framework.h deleted file mode 100644 index e7b7ccdeaad..00000000000 --- a/libs/unimrcp/platforms/unimrcp-client/include/demo_framework.h +++ /dev/null @@ -1,55 +0,0 @@ -/* - * Copyright 2008-2014 Arsen Chaloyan - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - * - * $Id: demo_framework.h 2136 2014-07-04 06:33:36Z achaloyan@gmail.com $ - */ - -#ifndef DEMO_FRAMEWORK_H -#define DEMO_FRAMEWORK_H - -/** - * @file demo_framework.h - * @brief Demo MRCP Application Framework - */ - -#include "mrcp_types.h" - -APT_BEGIN_EXTERN_C - -/** Opaque demo framework declaration */ -typedef struct demo_framework_t demo_framework_t; - -/** - * Create demo framework. - */ -demo_framework_t* demo_framework_create(apt_dir_layout_t *dir_layout); - -/** - * Run demo application. - * @param framework the framework to run application for - * @param app_name the name of the application to run - * @param profile_name the name of the profile to use - */ -apt_bool_t demo_framework_app_run(demo_framework_t *framework, const char *app_name, const char *profile_name); - -/** - * Destroy demo framework. - * @param framework the framework to destroy - */ -apt_bool_t demo_framework_destroy(demo_framework_t *framework); - -APT_END_EXTERN_C - -#endif /* DEMO_FRAMEWORK_H */ diff --git a/libs/unimrcp/platforms/unimrcp-client/include/demo_util.h b/libs/unimrcp/platforms/unimrcp-client/include/demo_util.h deleted file mode 100644 index 7e686e275ad..00000000000 --- a/libs/unimrcp/platforms/unimrcp-client/include/demo_util.h +++ /dev/null @@ -1,44 +0,0 @@ -/* - * Copyright 2008-2014 Arsen Chaloyan - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - * - * $Id: demo_util.h 2136 2014-07-04 06:33:36Z achaloyan@gmail.com $ - */ - -#ifndef DEMO_UTIL_H -#define DEMO_UTIL_H - -/** - * @file demo_util.h - * @brief Demo MRCP Utilities - */ - -#include "mrcp_application.h" - -APT_BEGIN_EXTERN_C - -/** Create demo MRCP message (SPEAK request) */ -mrcp_message_t* demo_speak_message_create(mrcp_session_t *session, mrcp_channel_t *channel, const apt_dir_layout_t *dir_layout); - -/** Create demo MRCP message (DEFINE-GRAMMAR request) */ -mrcp_message_t* demo_define_grammar_message_create(mrcp_session_t *session, mrcp_channel_t *channel, const apt_dir_layout_t *dir_layout); -/** Create demo MRCP message (RECOGNIZE request) */ -mrcp_message_t* demo_recognize_message_create(mrcp_session_t *session, mrcp_channel_t *channel, const apt_dir_layout_t *dir_layout); - -/** Create demo RTP termination descriptor */ -mpf_rtp_termination_descriptor_t* demo_rtp_descriptor_create(apr_pool_t *pool); - -APT_END_EXTERN_C - -#endif /* DEMO_UTIL_H */ diff --git a/libs/unimrcp/platforms/unimrcp-client/src/demo_bypass_application.c b/libs/unimrcp/platforms/unimrcp-client/src/demo_bypass_application.c deleted file mode 100644 index 1eef85788c3..00000000000 --- a/libs/unimrcp/platforms/unimrcp-client/src/demo_bypass_application.c +++ /dev/null @@ -1,213 +0,0 @@ -/* - * Copyright 2008-2014 Arsen Chaloyan - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - * - * $Id: demo_bypass_application.c 2136 2014-07-04 06:33:36Z achaloyan@gmail.com $ - */ - -/* - * Demo synthesizer scenario (client stack stays out of media path). - * C -> S: SIP INVITE or RTPS SETUP (add synthesizer channel) - * S -> C: SIP OK or RTPS OK - * C -> S: MRCP SPEAK - * S -> C: MRCP IN-PROGRESS - * S -> X: RTP Start Transmission (RTP stream is sent directly to external endpoint bypassing client stack) - * S -> C: MRCP SPEAK-COMPLETE - * S -> X: RTP Stop Transmission - * C -> S: SIP INVITE or RTPS SETUP (optionally remove synthesizer channel) - * S -> C: SIP OK or RTPS OK - * C -> S: SIP BYE or RTPS TEARDOWN - * S -> C: SIP OK or RTPS OK - */ - -#include "demo_application.h" -#include "demo_util.h" -#include "mrcp_message.h" -#include "mrcp_generic_header.h" -#include "mrcp_synth_header.h" -#include "mrcp_synth_resource.h" -#include "apt_log.h" - -typedef struct demo_app_channel_t demo_app_channel_t; - -/** Declaration of synthesizer application channel */ -struct demo_app_channel_t { - /** MRCP control channel */ - mrcp_channel_t *channel; -}; - -/** Declaration of demo application methods */ -static apt_bool_t demo_application_run(demo_application_t *demo_application, const char *profile); -static apt_bool_t demo_application_handler(demo_application_t *application, const mrcp_app_message_t *app_message); - -static apt_bool_t demo_application_on_session_update(mrcp_application_t *application, mrcp_session_t *session, mrcp_sig_status_code_e status); -static apt_bool_t demo_application_on_session_terminate(mrcp_application_t *application, mrcp_session_t *session, mrcp_sig_status_code_e status); -static apt_bool_t demo_application_on_channel_add(mrcp_application_t *application, mrcp_session_t *session, mrcp_channel_t *channel, mrcp_sig_status_code_e status); -static apt_bool_t demo_application_on_channel_remove(mrcp_application_t *application, mrcp_session_t *session, mrcp_channel_t *channel, mrcp_sig_status_code_e status); -static apt_bool_t demo_application_on_message_receive(mrcp_application_t *application, mrcp_session_t *session, mrcp_channel_t *channel, mrcp_message_t *message); - -static const mrcp_app_message_dispatcher_t demo_application_dispatcher = { - demo_application_on_session_update, - demo_application_on_session_terminate, - demo_application_on_channel_add, - demo_application_on_channel_remove, - demo_application_on_message_receive, - NULL /* demo_application_on_terminate_event */, - NULL /* demo_application_on_resource_discover */ -}; - - -/** Create demo bypass media application */ -demo_application_t* demo_bypass_application_create(apr_pool_t *pool) -{ - demo_application_t *demo_application = apr_palloc(pool,sizeof(demo_application_t)); - demo_application->application = NULL; - demo_application->framework = NULL; - demo_application->handler = demo_application_handler; - demo_application->run = demo_application_run; - return demo_application; -} - -/** Create demo channel */ -static mrcp_channel_t* demo_application_channel_create(mrcp_session_t *session) -{ - mrcp_channel_t *channel; - apr_pool_t *pool = mrcp_application_session_pool_get(session); - /* create channel */ - demo_app_channel_t *demo_channel = apr_palloc(pool,sizeof(demo_app_channel_t)); - mpf_rtp_termination_descriptor_t *rtp_descriptor = demo_rtp_descriptor_create(pool); - channel = mrcp_application_channel_create( - session, /* session, channel belongs to */ - MRCP_SYNTHESIZER_RESOURCE, /* MRCP resource identifier */ - NULL, /* no termination (not to use internal media processing) */ - rtp_descriptor, /* RTP descriptor, used to create RTP termination */ - demo_channel); /* object to associate */ - return channel; -} - - -/** Run demo scenario */ -static apt_bool_t demo_application_run(demo_application_t *demo_application, const char *profile) -{ - mrcp_channel_t *channel; - /* create session */ - mrcp_session_t *session = mrcp_application_session_create(demo_application->application,profile,NULL); - if(!session) { - return FALSE; - } - - /* create channel and associate all the required data */ - channel = demo_application_channel_create(session); - if(!channel) { - mrcp_application_session_destroy(session); - return FALSE; - } - - /* add channel to session (send asynchronous request) */ - if(mrcp_application_channel_add(session,channel) != TRUE) { - /* session and channel are still not referenced - and both are allocated from session pool and will - be freed with session destroy call */ - mrcp_application_session_destroy(session); - return FALSE; - } - - return TRUE; -} - -/** Handle the messages sent from the MRCP client stack */ -static apt_bool_t demo_application_handler(demo_application_t *application, const mrcp_app_message_t *app_message) -{ - /* app_message should be dispatched now, - * the default dispatcher is used in demo. */ - return mrcp_application_message_dispatch(&demo_application_dispatcher,app_message); -} - -/** Handle the responses sent to session update requests */ -static apt_bool_t demo_application_on_session_update(mrcp_application_t *application, mrcp_session_t *session, mrcp_sig_status_code_e status) -{ - return TRUE; -} - -/** Handle the responses sent to session terminate requests */ -static apt_bool_t demo_application_on_session_terminate(mrcp_application_t *application, mrcp_session_t *session, mrcp_sig_status_code_e status) -{ - /* received response to session termination request, - now it's safe to destroy no more referenced session */ - mrcp_application_session_destroy(session); - return TRUE; -} - -/** Handle the responses sent to channel add requests */ -static apt_bool_t demo_application_on_channel_add(mrcp_application_t *application, mrcp_session_t *session, mrcp_channel_t *channel, mrcp_sig_status_code_e status) -{ - if(status == MRCP_SIG_STATUS_CODE_SUCCESS) { - mpf_rtp_termination_descriptor_t *rtp_descriptor; - mrcp_message_t *mrcp_message; - const apt_dir_layout_t *dir_layout = mrcp_application_dir_layout_get(application); - /* create and send SPEAK request */ - mrcp_message = demo_speak_message_create(session,channel,dir_layout); - if(mrcp_message) { - mrcp_application_message_send(session,channel,mrcp_message); - } - rtp_descriptor = mrcp_application_rtp_descriptor_get(channel); - if(rtp_descriptor) { - mpf_rtp_media_descriptor_t *local_media = rtp_descriptor->audio.local; - mpf_rtp_media_descriptor_t *remote_media = rtp_descriptor->audio.remote; - if(local_media && remote_media) { - apt_log(APT_LOG_MARK,APT_PRIO_INFO,"Media Attributes: L[%s/%d] R[%s/%d]", - local_media->ip.buf, - local_media->port, - remote_media->ip.buf, - remote_media->port); - } - } - } - else { - /* error case, just terminate the demo */ - mrcp_application_session_terminate(session); - } - return TRUE; -} - -/** Handle the responses sent to channel remove requests */ -static apt_bool_t demo_application_on_channel_remove(mrcp_application_t *application, mrcp_session_t *session, mrcp_channel_t *channel, mrcp_sig_status_code_e status) -{ - /* terminate the demo */ - mrcp_application_session_terminate(session); - return TRUE; -} - -/** Handle the MRCP responses/events */ -static apt_bool_t demo_application_on_message_receive(mrcp_application_t *application, mrcp_session_t *session, mrcp_channel_t *channel, mrcp_message_t *message) -{ - if(message->start_line.message_type == MRCP_MESSAGE_TYPE_RESPONSE) { - /* received MRCP response */ - if(message->start_line.method_id == SYNTHESIZER_SPEAK) { - /* received the response to SPEAK request, - waiting for SPEAK-COMPLETE event */ - } - else { - /* received unexpected response */ - } - } - else if(message->start_line.message_type == MRCP_MESSAGE_TYPE_EVENT) { - /* received MRCP event */ - if(message->start_line.method_id == SYNTHESIZER_SPEAK_COMPLETE) { - /* received SPEAK-COMPLETE event, remove channel */ - mrcp_application_channel_remove(session,channel); - } - } - return TRUE; -} diff --git a/libs/unimrcp/platforms/unimrcp-client/src/demo_discover_application.c b/libs/unimrcp/platforms/unimrcp-client/src/demo_discover_application.c deleted file mode 100644 index 0218f5637da..00000000000 --- a/libs/unimrcp/platforms/unimrcp-client/src/demo_discover_application.c +++ /dev/null @@ -1,116 +0,0 @@ -/* - * Copyright 2008-2014 Arsen Chaloyan - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - * - * $Id: demo_discover_application.c 2136 2014-07-04 06:33:36Z achaloyan@gmail.com $ - */ - -/* - * Demo resource discovery. - * C -> S: SIP OPTIONS or RTPS DESCRIBE - * S -> C: SIP OK or RTPS OK - */ - -#include "demo_application.h" -#include "mrcp_session_descriptor.h" -#include "mrcp_control_descriptor.h" -#include "apt_log.h" - - -/** Declaration of synthesizer application methods */ -static apt_bool_t discover_application_run(demo_application_t *demo_application, const char *profile); -static apt_bool_t discover_application_handler(demo_application_t *application, const mrcp_app_message_t *app_message); - -/** Declaration of application message handlers */ -static apt_bool_t discover_application_on_session_terminate(mrcp_application_t *application, mrcp_session_t *session, mrcp_sig_status_code_e status); -static apt_bool_t discover_application_on_resource_discover(mrcp_application_t *application, mrcp_session_t *session, mrcp_session_descriptor_t *descriptor, mrcp_sig_status_code_e status); - -static const mrcp_app_message_dispatcher_t discover_application_dispatcher = { - NULL, - discover_application_on_session_terminate, - NULL, - NULL, - NULL, - NULL, - discover_application_on_resource_discover -}; - -/** Create demo resource discover application */ -demo_application_t* demo_discover_application_create(apr_pool_t *pool) -{ - demo_application_t *discover_application = apr_palloc(pool,sizeof(demo_application_t)); - discover_application->application = NULL; - discover_application->framework = NULL; - discover_application->handler = discover_application_handler; - discover_application->run = discover_application_run; - return discover_application; -} - -/** Run demo resource discover scenario */ -static apt_bool_t discover_application_run(demo_application_t *demo_application, const char *profile) -{ - /* create session */ - mrcp_session_t *session = mrcp_application_session_create(demo_application->application,profile,NULL); - if(!session) { - return FALSE; - } - - /* send resource discover request */ - if(mrcp_application_resource_discover(session) != TRUE) { - mrcp_application_session_destroy(session); - return FALSE; - } - - return TRUE; -} - -/** Handle the messages sent from the MRCP client stack */ -static apt_bool_t discover_application_handler(demo_application_t *application, const mrcp_app_message_t *app_message) -{ - /* app_message should be dispatched now, - * the default dispatcher is used in demo. */ - return mrcp_application_message_dispatch(&discover_application_dispatcher,app_message); -} - -/** Handle the responses sent to session terminate requests */ -static apt_bool_t discover_application_on_session_terminate(mrcp_application_t *application, mrcp_session_t *session, mrcp_sig_status_code_e status) -{ - /* received response to session termination request, - now it's safe to destroy no more referenced session */ - mrcp_application_session_destroy(session); - return TRUE; -} - -/** Handle the responses sent to resource discover requests */ -static apt_bool_t discover_application_on_resource_discover(mrcp_application_t *application, mrcp_session_t *session, mrcp_session_descriptor_t *descriptor, mrcp_sig_status_code_e status) -{ - if(descriptor && status == MRCP_SIG_STATUS_CODE_SUCCESS) { - int i; - int count = descriptor->control_media_arr->nelts; - apt_log(APT_LOG_MARK,APT_PRIO_INFO,"On Resource Discover [%d]", count); - - for(i = 0; i < count; i++) { - mrcp_control_descriptor_t *control_media = mrcp_session_control_media_get(descriptor,i); - if(control_media) { - apt_log(APT_LOG_MARK,APT_PRIO_INFO,"[%d] - %s", i,control_media->resource_name.buf); - } - } - } - else { - apt_log(APT_LOG_MARK,APT_PRIO_INFO,"Failed to Discover Resources"); - } - - mrcp_application_session_terminate(session); - return TRUE; -} diff --git a/libs/unimrcp/platforms/unimrcp-client/src/demo_framework.c b/libs/unimrcp/platforms/unimrcp-client/src/demo_framework.c deleted file mode 100644 index e3738a22119..00000000000 --- a/libs/unimrcp/platforms/unimrcp-client/src/demo_framework.c +++ /dev/null @@ -1,245 +0,0 @@ -/* - * Copyright 2008-2014 Arsen Chaloyan - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - * - * $Id: demo_framework.c 2233 2014-11-12 01:34:59Z achaloyan@gmail.com $ - */ - -#include -#include "demo_framework.h" -#include "demo_application.h" -#include "unimrcp_client.h" -#include "apt_consumer_task.h" -#include "apt_log.h" - -#define FRAMEWORK_TASK_NAME "Framework Agent" - -#define MAX_APP_NAME_LENGTH 16 -#define MAX_PROFILE_NAME_LENGTH 16 - -/** Demo framework */ -struct demo_framework_t { - /** MRCP client stack instance */ - mrcp_client_t *client; - /** Message processing task */ - apt_consumer_task_t *task; - /** Table of demo applications */ - apr_hash_t *application_table; - /** Memory to allocate memory from */ - apr_pool_t *pool; -}; - -typedef struct framework_task_data_t framework_task_data_t; -struct framework_task_data_t { - char app_name[MAX_APP_NAME_LENGTH]; - char profile_name[MAX_PROFILE_NAME_LENGTH]; - demo_application_t *demo_application; - const mrcp_app_message_t *app_message; -}; - -typedef enum { - DEMO_APPLICATION_MSG_ID, - DEMO_CONSOLE_MSG_ID -} framework_msg_type_e; - -static apt_bool_t demo_framework_message_handler(const mrcp_app_message_t *app_message); -static apt_bool_t demo_framework_consumer_task_create(demo_framework_t *framework); -static apt_bool_t demo_framework_app_register(demo_framework_t *framework, demo_application_t *demo_application, const char *name); - -/** Create demo framework */ -demo_framework_t* demo_framework_create(apt_dir_layout_t *dir_layout) -{ - demo_framework_t *framework = NULL; - mrcp_client_t *client = unimrcp_client_create(dir_layout); - if(client) { - demo_application_t *demo_application; - apr_pool_t *pool = mrcp_client_memory_pool_get(client); - /* create demo framework */ - framework = apr_palloc(pool,sizeof(demo_framework_t)); - framework->pool = pool; - framework->client = client; - framework->application_table = apr_hash_make(pool); - - /* create demo synthesizer application */ - demo_application = demo_synth_application_create(framework->pool); - if(demo_application) { - demo_framework_app_register(framework,demo_application,"synth"); - } - - /* create demo recognizer application */ - demo_application = demo_recog_application_create(framework->pool); - if(demo_application) { - demo_framework_app_register(framework,demo_application,"recog"); - } - - /* create demo bypass media application */ - demo_application = demo_bypass_application_create(framework->pool); - if(demo_application) { - demo_framework_app_register(framework,demo_application,"bypass"); - } - - /* create demo resource discover application */ - demo_application = demo_discover_application_create(framework->pool); - if(demo_application) { - demo_framework_app_register(framework,demo_application,"discover"); - } - - demo_framework_consumer_task_create(framework); - - if(framework->task) { - apt_task_t *task = apt_consumer_task_base_get(framework->task); - apt_task_start(task); - } - - /* start client stack */ - mrcp_client_start(client); - } - - return framework; -} - -/** Run demo application */ -apt_bool_t demo_framework_app_run(demo_framework_t *framework, const char *app_name, const char *profile_name) -{ - apt_task_t *task = apt_consumer_task_base_get(framework->task); - apt_task_msg_t *task_msg = apt_task_msg_get(task); - if(task_msg) { - framework_task_data_t *framework_task_data = (framework_task_data_t*)task_msg->data; - task_msg->type = TASK_MSG_USER; - task_msg->sub_type = DEMO_CONSOLE_MSG_ID; - strncpy(framework_task_data->app_name,app_name,sizeof(framework_task_data->app_name)-1); - strncpy(framework_task_data->profile_name,profile_name,sizeof(framework_task_data->profile_name)-1); - framework_task_data->app_message = NULL; - framework_task_data->demo_application = NULL; - apt_task_msg_signal(task,task_msg); - } - return TRUE; -} - -/** Destroy demo framework */ -apt_bool_t demo_framework_destroy(demo_framework_t *framework) -{ - if(!framework) { - return FALSE; - } - - if(framework->task) { - apt_task_t *task = apt_consumer_task_base_get(framework->task); - apt_task_terminate(task,TRUE); - apt_task_destroy(task); - framework->task = NULL; - } - - mrcp_client_shutdown(framework->client); - return mrcp_client_destroy(framework->client); -} - -static apt_bool_t demo_framework_app_register(demo_framework_t *framework, demo_application_t *demo_application, const char *name) -{ - apr_hash_set(framework->application_table,name,APR_HASH_KEY_STRING,demo_application); - demo_application->framework = framework; - demo_application->application = mrcp_application_create( - demo_framework_message_handler, - demo_application, - framework->pool); - return mrcp_client_application_register(framework->client,demo_application->application,name); -} - -static void demo_framework_on_start_complete(apt_task_t *task) -{ - apt_log(APT_LOG_MARK,APT_PRIO_NOTICE,"Run Demo Framework"); -} - -static apt_bool_t demo_framework_console_msg_process(demo_framework_t *framework, const char *app_name, const char *profile_name) -{ - demo_application_t *demo_application = apr_hash_get(framework->application_table,app_name,APR_HASH_KEY_STRING); - if(!demo_application) { - apt_log(APT_LOG_MARK,APT_PRIO_WARNING,"No Such Demo Application [%s]",app_name); - return FALSE; - } - - apt_log(APT_LOG_MARK,APT_PRIO_NOTICE,"Run Demo Application Scenario [%s]",app_name); - return demo_application->run(demo_application,profile_name); -} - -static apt_bool_t demo_framework_msg_process(apt_task_t *task, apt_task_msg_t *msg) -{ - if(msg->type == TASK_MSG_USER) { - framework_task_data_t *data = (framework_task_data_t*)msg->data; - switch(msg->sub_type) { - case DEMO_APPLICATION_MSG_ID: - { - data->demo_application->handler(data->demo_application,data->app_message); - break; - } - case DEMO_CONSOLE_MSG_ID: - { - apt_consumer_task_t *consumer_task = apt_task_object_get(task); - demo_framework_t *framework = apt_consumer_task_object_get(consumer_task); - demo_framework_console_msg_process(framework,data->app_name,data->profile_name); - break; - } - } - } - return TRUE; -} - -static apt_bool_t demo_framework_consumer_task_create(demo_framework_t *framework) -{ - apt_task_t *task; - apt_task_vtable_t *vtable; - apt_task_msg_pool_t *msg_pool; - - msg_pool = apt_task_msg_pool_create_dynamic(sizeof(framework_task_data_t),framework->pool); - framework->task = apt_consumer_task_create(framework,msg_pool,framework->pool); - if(!framework->task) { - return FALSE; - } - task = apt_consumer_task_base_get(framework->task); - apt_task_name_set(task,FRAMEWORK_TASK_NAME); - vtable = apt_consumer_task_vtable_get(framework->task); - if(vtable) { - vtable->process_msg = demo_framework_msg_process; - vtable->on_start_complete = demo_framework_on_start_complete; - } - - return TRUE; -} - -/** Callback is called from MRCP client stack (task) context. - * Signal app_message to the main consumer task of the demo framework - * for further processing (see demo_framework_msg_process). - */ -static apt_bool_t demo_framework_message_handler(const mrcp_app_message_t *app_message) -{ - demo_application_t *demo_application; - if(!app_message->application) { - return FALSE; - } - demo_application = mrcp_application_object_get(app_message->application); - if(demo_application && demo_application->framework) { - demo_framework_t *framework = demo_application->framework; - apt_task_t *task = apt_consumer_task_base_get(framework->task); - apt_task_msg_t *task_msg = apt_task_msg_get(task); - if(task_msg) { - framework_task_data_t *framework_task_data = (framework_task_data_t*)task_msg->data; - task_msg->type = TASK_MSG_USER; - task_msg->sub_type = DEMO_APPLICATION_MSG_ID; - framework_task_data->app_message = app_message; - framework_task_data->demo_application = demo_application; - apt_task_msg_signal(task,task_msg); - } - } - return TRUE; -} diff --git a/libs/unimrcp/platforms/unimrcp-client/src/demo_recog_application.c b/libs/unimrcp/platforms/unimrcp-client/src/demo_recog_application.c deleted file mode 100644 index a87ca874c9a..00000000000 --- a/libs/unimrcp/platforms/unimrcp-client/src/demo_recog_application.c +++ /dev/null @@ -1,380 +0,0 @@ -/* - * Copyright 2008-2014 Arsen Chaloyan - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - * - * $Id: demo_recog_application.c 2136 2014-07-04 06:33:36Z achaloyan@gmail.com $ - */ - -/* - * Demo recognizer scenario. - * C -> S: SIP INVITE or RTPS SETUP (add recognizer channel) - * S -> C: SIP OK or RTPS OK - * C -> S: MRCP RECOGNIZE - * S -> C: MRCP IN-PROGRESS - * C -> S: RTP Start Transmission - * S -> C: MRCP START-OF-INPUT - * S -> C: MRCP RECOGNITION-COMPLETE - * C -> S: RTP Stop Transmission - * C -> S: SIP INVITE or RTPS SETUP (optionally remove recognizer channel) - * S -> C: SIP OK or RTPS OK - * C -> S: SIP BYE or RTPS TEARDOWN - * S -> C: SIP OK or RTPS OK - */ - -#include "demo_application.h" -#include "demo_util.h" -#include "mrcp_message.h" -#include "mrcp_generic_header.h" -#include "mrcp_recog_header.h" -#include "mrcp_recog_resource.h" -#include "apt_nlsml_doc.h" -#include "apt_log.h" - -typedef struct recog_app_channel_t recog_app_channel_t; - -/** Declaration of recognizer application channel */ -struct recog_app_channel_t { - /** MRCP control channel */ - mrcp_channel_t *channel; - - /** Streaming is in-progress */ - apt_bool_t streaming; - /** File to read audio stream from */ - FILE *audio_in; - /** Estimated time to complete (used if no audio_in available) */ - apr_size_t time_to_complete; -}; - -/** Declaration of recognizer application methods */ -static apt_bool_t recog_application_run(demo_application_t *demo_application, const char *profile); -static apt_bool_t recog_application_handler(demo_application_t *application, const mrcp_app_message_t *app_message); - -/** Declaration of application message handlers */ -static apt_bool_t recog_application_on_session_update(mrcp_application_t *application, mrcp_session_t *session, mrcp_sig_status_code_e status); -static apt_bool_t recog_application_on_session_terminate(mrcp_application_t *application, mrcp_session_t *session, mrcp_sig_status_code_e status); -static apt_bool_t recog_application_on_channel_add(mrcp_application_t *application, mrcp_session_t *session, mrcp_channel_t *channel, mrcp_sig_status_code_e status); -static apt_bool_t recog_application_on_channel_remove(mrcp_application_t *application, mrcp_session_t *session, mrcp_channel_t *channel, mrcp_sig_status_code_e status); -static apt_bool_t recog_application_on_message_receive(mrcp_application_t *application, mrcp_session_t *session, mrcp_channel_t *channel, mrcp_message_t *message); - -static const mrcp_app_message_dispatcher_t recog_application_dispatcher = { - recog_application_on_session_update, - recog_application_on_session_terminate, - recog_application_on_channel_add, - recog_application_on_channel_remove, - recog_application_on_message_receive, - NULL /* recog_application_on_terminate_event */, - NULL /* recog_application_on_resource_discover */ -}; - -/** Declaration of recognizer audio stream methods */ -static apt_bool_t recog_app_stream_destroy(mpf_audio_stream_t *stream); -static apt_bool_t recog_app_stream_open(mpf_audio_stream_t *stream, mpf_codec_t *codec); -static apt_bool_t recog_app_stream_close(mpf_audio_stream_t *stream); -static apt_bool_t recog_app_stream_read(mpf_audio_stream_t *stream, mpf_frame_t *frame); - -static const mpf_audio_stream_vtable_t audio_stream_vtable = { - recog_app_stream_destroy, - recog_app_stream_open, - recog_app_stream_close, - recog_app_stream_read, - NULL, - NULL, - NULL, - NULL -}; - - -/** Create demo recognizer application */ -demo_application_t* demo_recog_application_create(apr_pool_t *pool) -{ - demo_application_t *recog_application = apr_palloc(pool,sizeof(demo_application_t)); - recog_application->application = NULL; - recog_application->framework = NULL; - recog_application->handler = recog_application_handler; - recog_application->run = recog_application_run; - return recog_application; -} - -/** Create demo recognizer channel */ -static mrcp_channel_t* recog_application_channel_create(mrcp_session_t *session) -{ - mrcp_channel_t *channel; - mpf_termination_t *termination; - mpf_stream_capabilities_t *capabilities; - apr_pool_t *pool = mrcp_application_session_pool_get(session); - - /* create channel */ - recog_app_channel_t *recog_channel = apr_palloc(pool,sizeof(recog_app_channel_t)); - recog_channel->streaming = FALSE; - recog_channel->audio_in = NULL; - recog_channel->time_to_complete = 0; - - /* create source stream capabilities */ - capabilities = mpf_source_stream_capabilities_create(pool); - - /* add codec capabilities (Linear PCM) */ - mpf_codec_capabilities_add( - &capabilities->codecs, - MPF_SAMPLE_RATE_8000 | MPF_SAMPLE_RATE_16000, - "LPCM"); - -#if 0 - /* more capabilities can be added or replaced */ - mpf_codec_capabilities_add( - &capabilities->codecs, - MPF_SAMPLE_RATE_8000 | MPF_SAMPLE_RATE_16000, - "PCMU"); -#endif - - termination = mrcp_application_audio_termination_create( - session, /* session, termination belongs to */ - &audio_stream_vtable, /* virtual methods table of audio stream */ - capabilities, /* capabilities of audio stream */ - recog_channel); /* object to associate */ - - channel = mrcp_application_channel_create( - session, /* session, channel belongs to */ - MRCP_RECOGNIZER_RESOURCE, /* MRCP resource identifier */ - termination, /* media termination, used to terminate audio stream */ - NULL, /* RTP descriptor, used to create RTP termination (NULL by default) */ - recog_channel); /* object to associate */ - return channel; -} - -/** Run demo recognizer scenario */ -static apt_bool_t recog_application_run(demo_application_t *demo_application, const char *profile) -{ - mrcp_channel_t *channel; - /* create session */ - mrcp_session_t *session = mrcp_application_session_create(demo_application->application,profile,NULL); - if(!session) { - return FALSE; - } - - /* create channel and associate all the required data */ - channel = recog_application_channel_create(session); - if(!channel) { - mrcp_application_session_destroy(session); - return FALSE; - } - - /* add channel to session (send asynchronous request) */ - if(mrcp_application_channel_add(session,channel) != TRUE) { - /* session and channel are still not referenced - and both are allocated from session pool and will - be freed with session destroy call */ - mrcp_application_session_destroy(session); - return FALSE; - } - - return TRUE; -} - -/** Handle the messages sent from the MRCP client stack */ -static apt_bool_t recog_application_handler(demo_application_t *application, const mrcp_app_message_t *app_message) -{ - /* app_message should be dispatched now, - * the default dispatcher is used in demo. */ - return mrcp_application_message_dispatch(&recog_application_dispatcher,app_message); -} - -/** Handle the responses sent to session update requests */ -static apt_bool_t recog_application_on_session_update(mrcp_application_t *application, mrcp_session_t *session, mrcp_sig_status_code_e status) -{ - /* not used in demo */ - return TRUE; -} - -/** Handle the responses sent to session terminate requests */ -static apt_bool_t recog_application_on_session_terminate(mrcp_application_t *application, mrcp_session_t *session, mrcp_sig_status_code_e status) -{ - /* received response to session termination request, - now it's safe to destroy no more referenced session */ - mrcp_application_session_destroy(session); - return TRUE; -} - -/** Handle the responses sent to channel add requests */ -static apt_bool_t recog_application_on_channel_add(mrcp_application_t *application, mrcp_session_t *session, mrcp_channel_t *channel, mrcp_sig_status_code_e status) -{ - if(status == MRCP_SIG_STATUS_CODE_SUCCESS) { - mrcp_message_t *mrcp_message; - const apt_dir_layout_t *dir_layout = mrcp_application_dir_layout_get(application); - /* create and send DEFINE-GRAMMAR request */ - mrcp_message = demo_define_grammar_message_create(session,channel,dir_layout); - if(mrcp_message) { - mrcp_application_message_send(session,channel,mrcp_message); - } - } - else { - /* error case, just terminate the demo */ - mrcp_application_session_terminate(session); - } - return TRUE; -} - -static apt_bool_t recog_application_on_channel_remove(mrcp_application_t *application, mrcp_session_t *session, mrcp_channel_t *channel, mrcp_sig_status_code_e status) -{ - recog_app_channel_t *recog_channel = mrcp_application_channel_object_get(channel); - - /* terminate the demo */ - mrcp_application_session_terminate(session); - - if(recog_channel) { - FILE *audio_in = recog_channel->audio_in; - if(audio_in) { - recog_channel->audio_in = NULL; - fclose(audio_in); - } - } - return TRUE; -} - -/** Handle the DEFINE-GRAMMAR responses */ -static apt_bool_t recog_application_on_define_grammar(mrcp_application_t *application, mrcp_session_t *session, mrcp_channel_t *channel) -{ - mrcp_message_t *mrcp_message; - recog_app_channel_t *recog_channel = mrcp_application_channel_object_get(channel); - const apt_dir_layout_t *dir_layout = mrcp_application_dir_layout_get(application); - - const mpf_codec_descriptor_t *descriptor = mrcp_application_source_descriptor_get(channel); - if(!descriptor) { - /* terminate the demo */ - apt_log(APT_LOG_MARK,APT_PRIO_WARNING,"Failed to Get Media Source Descriptor"); - return mrcp_application_session_terminate(session); - } - - /* create and send RECOGNIZE request */ - mrcp_message = demo_recognize_message_create(session,channel,dir_layout); - if(mrcp_message) { - mrcp_application_message_send(session,channel,mrcp_message); - } - - if(recog_channel) { - apr_pool_t *pool = mrcp_application_session_pool_get(session); - char *file_name = apr_psprintf(pool,"one-%dkHz.pcm",descriptor->sampling_rate/1000); - char *file_path = apt_datadir_filepath_get(dir_layout,file_name,pool); - if(file_path) { - recog_channel->audio_in = fopen(file_path,"rb"); - if(recog_channel->audio_in) { - apt_log(APT_LOG_MARK,APT_PRIO_INFO,"Set [%s] as Speech Source",file_path); - } - else { - apt_log(APT_LOG_MARK,APT_PRIO_INFO,"Cannot Find [%s]",file_path); - /* set some estimated time to complete */ - recog_channel->time_to_complete = 5000; // 5 sec - } - } - } - return TRUE; -} - -static apt_bool_t recog_application_on_message_receive(mrcp_application_t *application, mrcp_session_t *session, mrcp_channel_t *channel, mrcp_message_t *message) -{ - recog_app_channel_t *recog_channel = mrcp_application_channel_object_get(channel); - if(message->start_line.message_type == MRCP_MESSAGE_TYPE_RESPONSE) { - /* received MRCP response */ - if(message->start_line.method_id == RECOGNIZER_DEFINE_GRAMMAR) { - /* received the response to DEFINE-GRAMMAR request */ - if(message->start_line.request_state == MRCP_REQUEST_STATE_COMPLETE) { - recog_application_on_define_grammar(application,session,channel); - } - else { - /* received unexpected response, remove channel */ - mrcp_application_channel_remove(session,channel); - } - } - else if(message->start_line.method_id == RECOGNIZER_RECOGNIZE) { - /* received the response to RECOGNIZE request */ - if(message->start_line.request_state == MRCP_REQUEST_STATE_INPROGRESS) { - /* start to stream the speech to recognize */ - if(recog_channel) { - recog_channel->streaming = TRUE; - } - } - else { - /* received unexpected response, remove channel */ - mrcp_application_channel_remove(session,channel); - } - } - else { - /* received unexpected response */ - } - } - else if(message->start_line.message_type == MRCP_MESSAGE_TYPE_EVENT) { - if(message->start_line.method_id == RECOGNIZER_RECOGNITION_COMPLETE) { - nlsml_result_t *result = nlsml_result_parse(message->body.buf, message->body.length, message->pool); - if(result) { - nlsml_result_trace(result, message->pool); - } - - if(recog_channel) { - recog_channel->streaming = FALSE; - } - mrcp_application_channel_remove(session,channel); - } - else if(message->start_line.method_id == RECOGNIZER_START_OF_INPUT) { - /* received start-of-input, do whatever you need here */ - } - } - return TRUE; -} - -/** Callback is called from MPF engine context to destroy any additional data associated with audio stream */ -static apt_bool_t recog_app_stream_destroy(mpf_audio_stream_t *stream) -{ - return TRUE; -} - -/** Callback is called from MPF engine context to perform application stream specific action before open */ -static apt_bool_t recog_app_stream_open(mpf_audio_stream_t *stream, mpf_codec_t *codec) -{ - return TRUE; -} - -/** Callback is called from MPF engine context to perform application stream specific action after close */ -static apt_bool_t recog_app_stream_close(mpf_audio_stream_t *stream) -{ - return TRUE; -} - -/** Callback is called from MPF engine context to read new frame */ -static apt_bool_t recog_app_stream_read(mpf_audio_stream_t *stream, mpf_frame_t *frame) -{ - recog_app_channel_t *recog_channel = stream->obj; - if(recog_channel && recog_channel->streaming == TRUE) { - if(recog_channel->audio_in) { - if(fread(frame->codec_frame.buffer,1,frame->codec_frame.size,recog_channel->audio_in) == frame->codec_frame.size) { - /* normal read */ - frame->type |= MEDIA_FRAME_TYPE_AUDIO; - } - else { - /* file is over */ - recog_channel->streaming = FALSE; - } - } - else { - /* fill with silence in case no file available */ - if(recog_channel->time_to_complete >= CODEC_FRAME_TIME_BASE) { - frame->type |= MEDIA_FRAME_TYPE_AUDIO; - memset(frame->codec_frame.buffer,0,frame->codec_frame.size); - recog_channel->time_to_complete -= CODEC_FRAME_TIME_BASE; - } - else { - recog_channel->streaming = FALSE; - } - } - } - return TRUE; -} diff --git a/libs/unimrcp/platforms/unimrcp-client/src/demo_synth_application.c b/libs/unimrcp/platforms/unimrcp-client/src/demo_synth_application.c deleted file mode 100644 index e99d5a84903..00000000000 --- a/libs/unimrcp/platforms/unimrcp-client/src/demo_synth_application.c +++ /dev/null @@ -1,317 +0,0 @@ -/* - * Copyright 2008-2014 Arsen Chaloyan - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - * - * $Id: demo_synth_application.c 2193 2014-10-08 03:44:33Z achaloyan@gmail.com $ - */ - -/* - * Demo synthesizer scenario. - * C -> S: SIP INVITE or RTPS SETUP (add synthesizer channel) - * S -> C: SIP OK or RTPS OK - * C -> S: MRCP SPEAK - * S -> C: MRCP IN-PROGRESS - * S -> C: RTP Start Transmission - * S -> C: MRCP SPEAK-COMPLETE - * S -> C: RTP Stop Transmission - * C -> S: SIP INVITE or RTPS SETUP (optionally remove synthesizer channel) - * S -> C: SIP OK or RTPS OK - * C -> S: SIP BYE or RTPS TEARDOWN - * S -> C: SIP OK or RTPS OK - */ - -#include "demo_application.h" -#include "demo_util.h" -#include "mrcp_message.h" -#include "mrcp_generic_header.h" -#include "mrcp_synth_header.h" -#include "mrcp_synth_resource.h" -#include "apt_log.h" - -typedef struct synth_app_channel_t synth_app_channel_t; - -/** Declaration of synthesizer application channel */ -struct synth_app_channel_t { - /** MRCP control channel */ - mrcp_channel_t *channel; - /** File to write audio stream to */ - FILE *audio_out; -}; - -/** Declaration of synthesizer application methods */ -static apt_bool_t synth_application_run(demo_application_t *demo_application, const char *profile); -static apt_bool_t synth_application_handler(demo_application_t *application, const mrcp_app_message_t *app_message); - -/** Declaration of application message handlers */ -static apt_bool_t synth_application_on_session_update(mrcp_application_t *application, mrcp_session_t *session, mrcp_sig_status_code_e status); -static apt_bool_t synth_application_on_session_terminate(mrcp_application_t *application, mrcp_session_t *session, mrcp_sig_status_code_e status); -static apt_bool_t synth_application_on_channel_add(mrcp_application_t *application, mrcp_session_t *session, mrcp_channel_t *channel, mrcp_sig_status_code_e status); -static apt_bool_t synth_application_on_channel_remove(mrcp_application_t *application, mrcp_session_t *session, mrcp_channel_t *channel, mrcp_sig_status_code_e status); -static apt_bool_t synth_application_on_message_receive(mrcp_application_t *application, mrcp_session_t *session, mrcp_channel_t *channel, mrcp_message_t *message); - -static const mrcp_app_message_dispatcher_t synth_application_dispatcher = { - synth_application_on_session_update, - synth_application_on_session_terminate, - synth_application_on_channel_add, - synth_application_on_channel_remove, - synth_application_on_message_receive, - NULL /* synth_application_on_terminate_event */, - NULL /* synth_application_on_resource_discover */ -}; - -/** Declaration of synthesizer audio stream methods */ -static apt_bool_t synth_app_stream_destroy(mpf_audio_stream_t *stream); -static apt_bool_t synth_app_stream_open(mpf_audio_stream_t *stream, mpf_codec_t *codec); -static apt_bool_t synth_app_stream_close(mpf_audio_stream_t *stream); -static apt_bool_t synth_app_stream_write(mpf_audio_stream_t *stream, const mpf_frame_t *frame); - -static const mpf_audio_stream_vtable_t audio_stream_vtable = { - synth_app_stream_destroy, - NULL, - NULL, - NULL, - synth_app_stream_open, - synth_app_stream_close, - synth_app_stream_write, - NULL -}; - - -/** Create demo synthesizer application */ -demo_application_t* demo_synth_application_create(apr_pool_t *pool) -{ - demo_application_t *synth_application = apr_palloc(pool,sizeof(demo_application_t)); - synth_application->application = NULL; - synth_application->framework = NULL; - synth_application->handler = synth_application_handler; - synth_application->run = synth_application_run; - return synth_application; -} - -/** Create demo synthesizer channel */ -static mrcp_channel_t* synth_application_channel_create(mrcp_session_t *session) -{ - mrcp_channel_t *channel; - mpf_termination_t *termination; - mpf_stream_capabilities_t *capabilities; - apr_pool_t *pool = mrcp_application_session_pool_get(session); - - /* create channel */ - synth_app_channel_t *synth_channel = apr_palloc(pool,sizeof(synth_app_channel_t)); - synth_channel->audio_out = NULL; - - /* create sink stream capabilities */ - capabilities = mpf_sink_stream_capabilities_create(pool); - - /* add codec capabilities (Linear PCM) */ - mpf_codec_capabilities_add( - &capabilities->codecs, - MPF_SAMPLE_RATE_8000 | MPF_SAMPLE_RATE_16000, - "LPCM"); - -#if 0 - /* more capabilities can be added or replaced */ - mpf_codec_capabilities_add( - &capabilities->codecs, - MPF_SAMPLE_RATE_8000 | MPF_SAMPLE_RATE_16000, - "PCMU"); -#endif - - termination = mrcp_application_audio_termination_create( - session, /* session, termination belongs to */ - &audio_stream_vtable, /* virtual methods table of audio stream */ - capabilities, /* capabilities of audio stream */ - synth_channel); /* object to associate */ - - channel = mrcp_application_channel_create( - session, /* session, channel belongs to */ - MRCP_SYNTHESIZER_RESOURCE, /* MRCP resource identifier */ - termination, /* media termination, used to terminate audio stream */ - NULL, /* RTP descriptor, used to create RTP termination (NULL by default) */ - synth_channel); /* object to associate */ - return channel; -} - - -/** Run demo synthesizer scenario */ -static apt_bool_t synth_application_run(demo_application_t *demo_application, const char *profile) -{ - mrcp_channel_t *channel; - /* create session */ - mrcp_session_t *session = mrcp_application_session_create(demo_application->application,profile,NULL); - if(!session) { - return FALSE; - } - - /* create channel and associate all the required data */ - channel = synth_application_channel_create(session); - if(!channel) { - mrcp_application_session_destroy(session); - return FALSE; - } - - /* add channel to session (send asynchronous request) */ - if(mrcp_application_channel_add(session,channel) != TRUE) { - /* session and channel are still not referenced - and both are allocated from session pool and will - be freed with session destroy call */ - mrcp_application_session_destroy(session); - return FALSE; - } - - return TRUE; -} - -/** Handle the messages sent from the MRCP client stack */ -static apt_bool_t synth_application_handler(demo_application_t *application, const mrcp_app_message_t *app_message) -{ - /* app_message should be dispatched now, - * the default dispatcher is used in demo. */ - return mrcp_application_message_dispatch(&synth_application_dispatcher,app_message); -} - -/** Handle the responses sent to session update requests */ -static apt_bool_t synth_application_on_session_update(mrcp_application_t *application, mrcp_session_t *session, mrcp_sig_status_code_e status) -{ - /* not used in demo */ - return TRUE; -} - -/** Handle the responses sent to session terminate requests */ -static apt_bool_t synth_application_on_session_terminate(mrcp_application_t *application, mrcp_session_t *session, mrcp_sig_status_code_e status) -{ - /* received response to session termination request, - now it's safe to destroy no more referenced session */ - mrcp_application_session_destroy(session); - return TRUE; -} - -/** Handle the responses sent to channel add requests */ -static apt_bool_t synth_application_on_channel_add(mrcp_application_t *application, mrcp_session_t *session, mrcp_channel_t *channel, mrcp_sig_status_code_e status) -{ - if(status == MRCP_SIG_STATUS_CODE_SUCCESS) { - mrcp_message_t *mrcp_message; - synth_app_channel_t *synth_channel = mrcp_application_channel_object_get(channel); - apr_pool_t *pool = mrcp_application_session_pool_get(session); - const apt_dir_layout_t *dir_layout = mrcp_application_dir_layout_get(application); - const mpf_codec_descriptor_t *descriptor = mrcp_application_sink_descriptor_get(channel); - if(!descriptor) { - /* terminate the demo */ - apt_log(APT_LOG_MARK,APT_PRIO_WARNING,"Failed to Get Media Sink Descriptor"); - return mrcp_application_session_terminate(session); - } - - /* create and send SPEAK request */ - mrcp_message = demo_speak_message_create(session,channel,dir_layout); - if(mrcp_message) { - mrcp_application_message_send(session,channel,mrcp_message); - } - - if(synth_channel) { - const apt_str_t *id = mrcp_application_session_id_get(session); - char *file_name = apr_psprintf(pool,"synth-%dkHz-%s.pcm", - descriptor->sampling_rate/1000, - id->buf); - char *file_path = apt_vardir_filepath_get(dir_layout,file_name,pool); - if(file_path) { - apt_log(APT_LOG_MARK,APT_PRIO_INFO,"Open Speech Output File [%s] for Writing",file_path); - synth_channel->audio_out = fopen(file_path,"wb"); - if(!synth_channel->audio_out) { - apt_log(APT_LOG_MARK,APT_PRIO_WARNING,"Failed to Open Utterance Output File [%s] for Writing",file_path); - } - } - } - } - else { - /* error case, just terminate the demo */ - mrcp_application_session_terminate(session); - } - return TRUE; -} - -/** Handle the responses sent to channel remove requests */ -static apt_bool_t synth_application_on_channel_remove(mrcp_application_t *application, mrcp_session_t *session, mrcp_channel_t *channel, mrcp_sig_status_code_e status) -{ - synth_app_channel_t *synth_channel = mrcp_application_channel_object_get(channel); - - /* terminate the demo */ - mrcp_application_session_terminate(session); - - if(synth_channel) { - FILE *audio_out = synth_channel->audio_out; - if(audio_out) { - synth_channel->audio_out = NULL; - fclose(audio_out); - } - } - return TRUE; -} - -/** Handle the MRCP responses/events */ -static apt_bool_t synth_application_on_message_receive(mrcp_application_t *application, mrcp_session_t *session, mrcp_channel_t *channel, mrcp_message_t *message) -{ - if(message->start_line.message_type == MRCP_MESSAGE_TYPE_RESPONSE) { - /* received MRCP response */ - if(message->start_line.method_id == SYNTHESIZER_SPEAK) { - /* received the response to SPEAK request */ - if(message->start_line.request_state == MRCP_REQUEST_STATE_INPROGRESS) { - /* waiting for SPEAK-COMPLETE event */ - } - else { - /* received unexpected response, remove channel */ - mrcp_application_channel_remove(session,channel); - } - } - else { - /* received unexpected response */ - } - } - else if(message->start_line.message_type == MRCP_MESSAGE_TYPE_EVENT) { - /* received MRCP event */ - if(message->start_line.method_id == SYNTHESIZER_SPEAK_COMPLETE) { - /* received SPEAK-COMPLETE event, remove channel */ - mrcp_application_channel_remove(session,channel); - } - } - return TRUE; -} - -/** Callback is called from MPF engine context to destroy any additional data associated with audio stream */ -static apt_bool_t synth_app_stream_destroy(mpf_audio_stream_t *stream) -{ - /* nothing to destroy in demo */ - return TRUE; -} - -/** Callback is called from MPF engine context to perform application stream specific action before open */ -static apt_bool_t synth_app_stream_open(mpf_audio_stream_t *stream, mpf_codec_t *codec) -{ - return TRUE; -} - -/** Callback is called from MPF engine context to perform application stream specific action after close */ -static apt_bool_t synth_app_stream_close(mpf_audio_stream_t *stream) -{ - return TRUE; -} - -/** Callback is called from MPF engine context to make new frame available to write/send */ -static apt_bool_t synth_app_stream_write(mpf_audio_stream_t *stream, const mpf_frame_t *frame) -{ - synth_app_channel_t *synth_channel = stream->obj; - if(synth_channel && synth_channel->audio_out) { - fwrite(frame->codec_frame.buffer,1,frame->codec_frame.size,synth_channel->audio_out); - } - return TRUE; -} diff --git a/libs/unimrcp/platforms/unimrcp-client/src/demo_util.c b/libs/unimrcp/platforms/unimrcp-client/src/demo_util.c deleted file mode 100644 index fa591125784..00000000000 --- a/libs/unimrcp/platforms/unimrcp-client/src/demo_util.c +++ /dev/null @@ -1,176 +0,0 @@ -/* - * Copyright 2008-2014 Arsen Chaloyan - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - * - * $Id: demo_util.c 2136 2014-07-04 06:33:36Z achaloyan@gmail.com $ - */ - -#include "demo_util.h" -/* common includes */ -#include "mrcp_message.h" -#include "mrcp_generic_header.h" -/* synthesizer includes */ -#include "mrcp_synth_header.h" -#include "mrcp_synth_resource.h" -/* recognizer includes */ -#include "mrcp_recog_header.h" -#include "mrcp_recog_resource.h" -/* logger include */ -#include "apt_log.h" - -static void demo_message_body_set(mrcp_message_t *mrcp_message, const apt_dir_layout_t *dir_layout, const char *file_name) -{ - char *file_path = apt_datadir_filepath_get(dir_layout,file_name,mrcp_message->pool); - if(file_path) { - FILE *file = fopen(file_path,"r"); - if(file) { - char text[1024]; - apr_size_t size; - size = fread(text,1,sizeof(text),file); - apt_string_assign_n(&mrcp_message->body,text,size,mrcp_message->pool); - fclose(file); - } - } -} - -/** Create demo MRCP message (SPEAK request) */ -mrcp_message_t* demo_speak_message_create(mrcp_session_t *session, mrcp_channel_t *channel, const apt_dir_layout_t *dir_layout) -{ - /* create MRCP message */ - mrcp_message_t *mrcp_message = mrcp_application_message_create(session,channel,SYNTHESIZER_SPEAK); - if(mrcp_message) { - mrcp_generic_header_t *generic_header; - mrcp_synth_header_t *synth_header; - /* get/allocate generic header */ - generic_header = mrcp_generic_header_prepare(mrcp_message); - if(generic_header) { - /* set generic header fields */ - apt_string_assign(&generic_header->content_type,"application/synthesis+ssml",mrcp_message->pool); - mrcp_generic_header_property_add(mrcp_message,GENERIC_HEADER_CONTENT_TYPE); - } - /* get/allocate synthesizer header */ - synth_header = mrcp_resource_header_prepare(mrcp_message); - if(synth_header) { - /* set synthesizer header fields */ - synth_header->voice_param.age = 28; - mrcp_resource_header_property_add(mrcp_message,SYNTHESIZER_HEADER_VOICE_AGE); - } - /* set message body */ - demo_message_body_set(mrcp_message,dir_layout,"speak.xml"); - } - return mrcp_message; -} - -/** Create demo MRCP message (DEFINE-GRAMMAR request) */ -mrcp_message_t* demo_define_grammar_message_create(mrcp_session_t *session, mrcp_channel_t *channel, const apt_dir_layout_t *dir_layout) -{ - /* create MRCP message */ - mrcp_message_t *mrcp_message = mrcp_application_message_create(session,channel,RECOGNIZER_DEFINE_GRAMMAR); - if(mrcp_message) { - mrcp_generic_header_t *generic_header; - /* get/allocate generic header */ - generic_header = mrcp_generic_header_prepare(mrcp_message); - if(generic_header) { - /* set generic header fields */ - if(mrcp_message->start_line.version == MRCP_VERSION_2) { - apt_string_assign(&generic_header->content_type,"application/srgs+xml",mrcp_message->pool); - } - else { - apt_string_assign(&generic_header->content_type,"application/grammar+xml",mrcp_message->pool); - } - mrcp_generic_header_property_add(mrcp_message,GENERIC_HEADER_CONTENT_TYPE); - apt_string_assign(&generic_header->content_id,"request1@form-level.store",mrcp_message->pool); - mrcp_generic_header_property_add(mrcp_message,GENERIC_HEADER_CONTENT_ID); - } - /* set message body */ - demo_message_body_set(mrcp_message,dir_layout,"grammar.xml"); - } - return mrcp_message; -} - -/** Create demo MRCP message (RECOGNIZE request) */ -mrcp_message_t* demo_recognize_message_create(mrcp_session_t *session, mrcp_channel_t *channel, const apt_dir_layout_t *dir_layout) -{ - const char text[] = "session:request1@form-level.store"; - - /* create MRCP message */ - mrcp_message_t *mrcp_message = mrcp_application_message_create(session,channel,RECOGNIZER_RECOGNIZE); - if(mrcp_message) { - mrcp_recog_header_t *recog_header; - mrcp_generic_header_t *generic_header; - /* get/allocate generic header */ - generic_header = mrcp_generic_header_prepare(mrcp_message); - if(generic_header) { - /* set generic header fields */ - apt_string_assign(&generic_header->content_type,"text/uri-list",mrcp_message->pool); - mrcp_generic_header_property_add(mrcp_message,GENERIC_HEADER_CONTENT_TYPE); - } - /* get/allocate recognizer header */ - recog_header = mrcp_resource_header_prepare(mrcp_message); - if(recog_header) { - if(mrcp_message->start_line.version == MRCP_VERSION_2) { - /* set recognizer header fields */ - recog_header->cancel_if_queue = FALSE; - mrcp_resource_header_property_add(mrcp_message,RECOGNIZER_HEADER_CANCEL_IF_QUEUE); - } - recog_header->no_input_timeout = 5000; - mrcp_resource_header_property_add(mrcp_message,RECOGNIZER_HEADER_NO_INPUT_TIMEOUT); - recog_header->recognition_timeout = 10000; - mrcp_resource_header_property_add(mrcp_message,RECOGNIZER_HEADER_RECOGNITION_TIMEOUT); - recog_header->start_input_timers = TRUE; - mrcp_resource_header_property_add(mrcp_message,RECOGNIZER_HEADER_START_INPUT_TIMERS); - recog_header->confidence_threshold = 0.87f; - mrcp_resource_header_property_add(mrcp_message,RECOGNIZER_HEADER_CONFIDENCE_THRESHOLD); - } - /* set message body */ - apt_string_assign(&mrcp_message->body,text,mrcp_message->pool); - } - return mrcp_message; -} - -/** Create demo RTP termination descriptor */ -mpf_rtp_termination_descriptor_t* demo_rtp_descriptor_create(apr_pool_t *pool) -{ - mpf_codec_descriptor_t *codec_descriptor; - mpf_rtp_media_descriptor_t *media; - /* create rtp descriptor */ - mpf_rtp_termination_descriptor_t *rtp_descriptor = apr_palloc(pool,sizeof(mpf_rtp_termination_descriptor_t)); - mpf_rtp_termination_descriptor_init(rtp_descriptor); - /* create rtp local media */ - media = apr_palloc(pool,sizeof(mpf_rtp_media_descriptor_t)); - mpf_rtp_media_descriptor_init(media); - apt_string_assign(&media->ip,"127.0.0.1",pool); - media->port = 6000; - media->state = MPF_MEDIA_ENABLED; - media->direction = STREAM_DIRECTION_RECEIVE; - - /* initialize codec list */ - mpf_codec_list_init(&media->codec_list,2,pool); - /* set codec descriptor */ - codec_descriptor = mpf_codec_list_add(&media->codec_list); - if(codec_descriptor) { - codec_descriptor->payload_type = 0; - } - /* set another codec descriptor */ - codec_descriptor = mpf_codec_list_add(&media->codec_list); - if(codec_descriptor) { - codec_descriptor->payload_type = 96; - apt_string_set(&codec_descriptor->name,"PCMU"); - codec_descriptor->sampling_rate = 16000; - codec_descriptor->channel_count = 1; - } - - rtp_descriptor->audio.local = media; - return rtp_descriptor; -} diff --git a/libs/unimrcp/platforms/unimrcp-client/src/main.c b/libs/unimrcp/platforms/unimrcp-client/src/main.c deleted file mode 100644 index 702c254b8b8..00000000000 --- a/libs/unimrcp/platforms/unimrcp-client/src/main.c +++ /dev/null @@ -1,275 +0,0 @@ -/* - * Copyright 2008-2014 Arsen Chaloyan - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - * - * $Id: main.c 2204 2014-10-31 01:01:42Z achaloyan@gmail.com $ - */ - -#include -#include -#include -#include "demo_framework.h" -#include "apt_pool.h" -#include "apt_log.h" -#include "uni_version.h" - -typedef struct { - const char *root_dir_path; - const char *dir_layout_conf; - const char *log_priority; - const char *log_output; -} client_options_t; - -static apt_bool_t demo_framework_cmdline_process(demo_framework_t *framework, char *cmdline) -{ - apt_bool_t running = TRUE; - char *name; - char *last; - name = apr_strtok(cmdline, " ", &last); - - if(strcasecmp(name,"run") == 0) { - char *app_name = apr_strtok(NULL, " ", &last); - if(app_name) { - char *profile_name = apr_strtok(NULL, " ", &last); - if(!profile_name) { - profile_name = "uni2"; - } - demo_framework_app_run(framework,app_name,profile_name); - } - } - else if(strcasecmp(name,"loglevel") == 0) { - char *priority = apr_strtok(NULL, " ", &last); - if(priority) { - apt_log_priority_set(atol(priority)); - } - } - else if(strcasecmp(name,"exit") == 0 || strcmp(name,"quit") == 0) { - running = FALSE; - } - else if(strcasecmp(name,"help") == 0) { - printf("usage:\n" - "\n- run [app_name] [profile_name] (run demo application)\n" - " app_name is one of 'synth', 'recog', 'bypass', 'discover'\n" - " profile_name is one of 'uni2', 'uni1', ...\n" - "\n examples: \n" - " run synth\n" - " run recog\n" - " run synth uni1\n" - " run recog uni1\n" - "\n- loglevel [level] (set loglevel, one of 0,1...7)\n" - "\n- quit, exit\n"); - } - else { - printf("unknown command: %s (input help for usage)\n",name); - } - return running; -} - -static apt_bool_t demo_framework_cmdline_run(demo_framework_t *framework) -{ - apt_bool_t running = TRUE; - char cmdline[1024]; - apr_size_t i; - do { - printf(">"); - memset(&cmdline, 0, sizeof(cmdline)); - for(i = 0; i < sizeof(cmdline); i++) { - cmdline[i] = (char) getchar(); - if(cmdline[i] == '\n') { - cmdline[i] = '\0'; - break; - } - } - if(*cmdline) { - running = demo_framework_cmdline_process(framework,cmdline); - } - } - while(running != 0); - return TRUE; -} - -static void usage(void) -{ - printf( - "\n" - " * "UNI_COPYRIGHT"\n" - " *\n" - UNI_LICENSE"\n" - "\n" - "Usage:\n" - "\n" - " unimrcpclient [options]\n" - "\n" - " Available options:\n" - "\n" - " -r [--root-dir] path : Set the path to the project root directory.\n" - "\n" - " -c [--dir-layout] path : Set the path to the dir layout config file.\n" - " (takes the precedence over --root-dir option)\n" - "\n" - " -l [--log-prio] priority : Set the log priority.\n" - " (0-emergency, ..., 7-debug)\n" - "\n" - " -o [--log-output] mode : Set the log output mode.\n" - " (0-none, 1-console only, 2-file only, 3-both)\n" - "\n" - " -v [--version] : Show the version.\n" - "\n" - " -h [--help] : Show the help.\n" - "\n"); -} - -static apt_bool_t demo_framework_options_load(client_options_t *options, int argc, const char * const *argv, apr_pool_t *pool) -{ - apr_status_t rv; - apr_getopt_t *opt = NULL; - int optch; - const char *optarg; - - const apr_getopt_option_t opt_option[] = { - /* long-option, short-option, has-arg flag, description */ - { "root-dir", 'r', TRUE, "path to root dir" }, /* -r arg or --root-dir arg */ - { "dir-layout", 'c', TRUE, "path to dir layout conf" }, /* -c arg or --dir-layout arg */ - { "log-prio", 'l', TRUE, "log priority" }, /* -l arg or --log-prio arg */ - { "log-output", 'o', TRUE, "log output mode" }, /* -o arg or --log-output arg */ - { "version", 'v', FALSE, "show version" }, /* -v or --version */ - { "help", 'h', FALSE, "show help" }, /* -h or --help */ - { NULL, 0, 0, NULL }, /* end */ - }; - - rv = apr_getopt_init(&opt, pool , argc, argv); - if(rv != APR_SUCCESS) { - return FALSE; - } - - /* reset the options */ - options->root_dir_path = NULL; - options->dir_layout_conf = NULL; - options->log_priority = NULL; - options->log_output = NULL; - - while((rv = apr_getopt_long(opt, opt_option, &optch, &optarg)) == APR_SUCCESS) { - switch(optch) { - case 'r': - options->root_dir_path = optarg; - break; - case 'c': - options->dir_layout_conf = optarg; - break; - case 'l': - options->log_priority = optarg; - break; - case 'o': - options->log_output = optarg; - break; - case 'v': - printf(UNI_VERSION_STRING); - return FALSE; - case 'h': - usage(); - return FALSE; - } - } - - if(rv != APR_EOF) { - usage(); - return FALSE; - } - - return TRUE; -} - -int main(int argc, const char * const *argv) -{ - apr_pool_t *pool; - client_options_t options; - const char *log_conf_path; - demo_framework_t *framework; - apt_dir_layout_t *dir_layout = NULL; - - /* APR global initialization */ - if(apr_initialize() != APR_SUCCESS) { - apr_terminate(); - return 0; - } - - /* create APR pool */ - pool = apt_pool_create(); - if(!pool) { - apr_terminate(); - return 0; - } - - /* load options */ - if(demo_framework_options_load(&options,argc,argv,pool) != TRUE) { - apr_pool_destroy(pool); - apr_terminate(); - return 0; - } - - if(options.dir_layout_conf) { - /* create and load directories layout from the configuration file */ - dir_layout = apt_dir_layout_create(pool); - if(dir_layout) - apt_dir_layout_load(dir_layout,options.dir_layout_conf,pool); - } - else { - /* create default directories layout */ - dir_layout = apt_default_dir_layout_create(options.root_dir_path,pool); - } - - if(!dir_layout) { - printf("Failed to Create Directories Layout\n"); - apr_pool_destroy(pool); - apr_terminate(); - return 0; - } - - /* get path to logger configuration file */ - log_conf_path = apt_confdir_filepath_get(dir_layout,"logger.xml",pool); - /* create and load singleton logger */ - apt_log_instance_load(log_conf_path,pool); - - if(options.log_priority) { - /* override the log priority, if specified in command line */ - apt_log_priority_set(atoi(options.log_priority)); - } - if(options.log_output) { - /* override the log output mode, if specified in command line */ - apt_log_output_mode_set(atoi(options.log_output)); - } - - if(apt_log_output_mode_check(APT_LOG_OUTPUT_FILE) == TRUE) { - /* open the log file */ - const char *log_dir_path = apt_dir_layout_path_get(dir_layout,APT_LAYOUT_LOG_DIR); - apt_log_file_open(log_dir_path,"unimrcpclient",MAX_LOG_FILE_SIZE,MAX_LOG_FILE_COUNT,FALSE,pool); - } - - /* create demo framework */ - framework = demo_framework_create(dir_layout); - if(framework) { - /* run command line */ - demo_framework_cmdline_run(framework); - /* destroy demo framework */ - demo_framework_destroy(framework); - } - - /* destroy singleton logger */ - apt_log_instance_destroy(); - /* destroy APR pool */ - apr_pool_destroy(pool); - /* APR global termination */ - apr_terminate(); - return 0; -} diff --git a/libs/unimrcp/platforms/unimrcp-client/unimrcpclient.rc b/libs/unimrcp/platforms/unimrcp-client/unimrcpclient.rc deleted file mode 100644 index 6bfb85f3117..00000000000 --- a/libs/unimrcp/platforms/unimrcp-client/unimrcpclient.rc +++ /dev/null @@ -1,39 +0,0 @@ -#include "uni_version.h" - -1 VERSIONINFO - FILEVERSION UNI_VERSION_STRING_CSV,0 - PRODUCTVERSION UNI_VERSION_STRING_CSV,0 - FILEFLAGSMASK 0x3fL -#if defined(_DEBUG) - FILEFLAGS 0x01L -#else - FILEFLAGS 0x00L -#endif -#if defined(WINNT) || defined(WIN64) - FILEOS 0x40004L -#else - FILEOS 0x4L -#endif - FILETYPE 0x1L - FILESUBTYPE 0x0L -BEGIN - BLOCK "StringFileInfo" - BEGIN - BLOCK "040904b0" - BEGIN - VALUE "Comments", UNI_LICENSE "\0" - VALUE "CompanyName", "UniMRCP\0" - VALUE "FileDescription", "UniMRCP Client Application\0" - VALUE "FileVersion", UNI_VERSION_STRING "\0" - VALUE "InternalName", "unimrcpclient" "\0" - VALUE "LegalCopyright", UNI_COPYRIGHT "\0" - VALUE "OriginalFilename", "unimrcpclient.exe" "\0" - VALUE "ProductName", "UniMRCP Project\0" - VALUE "ProductVersion", UNI_VERSION_STRING "\0" - END - END - BLOCK "VarFileInfo" - BEGIN - VALUE "Translation", 0x409, 1200 - END -END diff --git a/libs/unimrcp/platforms/unimrcp-client/unimrcpclient.vcproj b/libs/unimrcp/platforms/unimrcp-client/unimrcpclient.vcproj deleted file mode 100644 index 706498e4a48..00000000000 --- a/libs/unimrcp/platforms/unimrcp-client/unimrcpclient.vcproj +++ /dev/null @@ -1,368 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/libs/unimrcp/platforms/unimrcp-client/unimrcpclient.vcxproj b/libs/unimrcp/platforms/unimrcp-client/unimrcpclient.vcxproj deleted file mode 100644 index e477078f01a..00000000000 --- a/libs/unimrcp/platforms/unimrcp-client/unimrcpclient.vcxproj +++ /dev/null @@ -1,153 +0,0 @@ - - - - - Debug - Win32 - - - Debug - x64 - - - Release - Win32 - - - Release - x64 - - - - {57FAF32E-49FD-491F-895D-132D0D5EFE0A} - unimrcpclient - - - - Application - - - Application - - - Application - - - Application - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - <_ProjectFileVersion>10.0.30319.1 - AllRules.ruleset - - - AllRules.ruleset - - - AllRules.ruleset - - - AllRules.ruleset - - - - - - include;%(AdditionalIncludeDirectories) - - - $(UniMRCPClientLibs);%(AdditionalDependencies) - - - - - include;%(AdditionalIncludeDirectories) - - - $(UniMRCPClientLibs);%(AdditionalDependencies) - UseLinkTimeCodeGeneration - - - - - X64 - - - include;%(AdditionalIncludeDirectories) - ProgramDatabase - - - $(UniMRCPClientLibs);%(AdditionalDependencies) - - - - - X64 - - - include;%(AdditionalIncludeDirectories) - - - $(UniMRCPClientLibs);%(AdditionalDependencies) - UseLinkTimeCodeGeneration - - - - - - - - - - - - - - - - - - - ..\..\build;%(AdditionalIncludeDirectories) - ..\..\build;%(AdditionalIncludeDirectories) - ..\..\build;%(AdditionalIncludeDirectories) - ..\..\build;%(AdditionalIncludeDirectories) - - - - - {ee157390-1e85-416c-946e-620e32c9ad33} - false - - - - - - \ No newline at end of file diff --git a/libs/unimrcp/platforms/unimrcp-client/unimrcpclient.vcxproj.filters b/libs/unimrcp/platforms/unimrcp-client/unimrcpclient.vcxproj.filters deleted file mode 100644 index 83f0ded84c8..00000000000 --- a/libs/unimrcp/platforms/unimrcp-client/unimrcpclient.vcxproj.filters +++ /dev/null @@ -1,50 +0,0 @@ - - - - - {4FC737F1-C7A5-4376-A066-2A32D752A2FF} - cpp;c;cc;cxx;def;odl;idl;hpj;bat;asm;asmx - - - {93995380-89BD-4b04-88EB-625FBE52EBFB} - h;hpp;hxx;hm;inl;inc;xsd - - - - - src - - - src - - - src - - - src - - - src - - - src - - - src - - - - - include - - - include - - - include - - - - - - \ No newline at end of file diff --git a/libs/unimrcp/platforms/unimrcp-server/Makefile.am b/libs/unimrcp/platforms/unimrcp-server/Makefile.am deleted file mode 100644 index 3e8b50823ab..00000000000 --- a/libs/unimrcp/platforms/unimrcp-server/Makefile.am +++ /dev/null @@ -1,9 +0,0 @@ -AM_CPPFLAGS = -I$(top_srcdir)/platforms/unimrcp-server/include \ - $(UNIMRCP_SERVERAPP_INCLUDES) - -bin_PROGRAMS = unimrcpserver -unimrcpserver_SOURCES = src/main.c src/uni_cmdline.c src/uni_daemon.c -unimrcpserver_LDADD = $(UNIMRCP_SERVERAPP_LIBS) -unimrcpserver_LDFLAGS = $(UNIMRCP_SERVERAPP_OPTS) - -include $(top_srcdir)/build/rules/uniserverapp.am diff --git a/libs/unimrcp/platforms/unimrcp-server/src/main.c b/libs/unimrcp/platforms/unimrcp-server/src/main.c deleted file mode 100644 index a295a449344..00000000000 --- a/libs/unimrcp/platforms/unimrcp-server/src/main.c +++ /dev/null @@ -1,257 +0,0 @@ -/* - * Copyright 2008-2014 Arsen Chaloyan - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - * - * $Id: main.c 2204 2014-10-31 01:01:42Z achaloyan@gmail.com $ - */ - -#include -#include -#include -#include "apt_pool.h" -#include "apt_dir_layout.h" -#include "apt_log.h" -#include "uni_version.h" - -typedef struct { - const char *root_dir_path; - const char *dir_layout_conf; - apt_bool_t foreground; - const char *log_priority; - const char *log_output; -#ifdef WIN32 - const char *svcname; -#endif -} server_options_t; - -#ifdef WIN32 -apt_bool_t uni_service_run(const char *name, apt_dir_layout_t *dir_layout, apr_pool_t *pool); -#else -apt_bool_t uni_daemon_run(apt_dir_layout_t *dir_layout, apr_pool_t *pool); -#endif - -apt_bool_t uni_cmdline_run(apt_dir_layout_t *dir_layout, apr_pool_t *pool); - - -static void usage() -{ - printf( - "\n" - " * "UNI_COPYRIGHT"\n" - " *\n" - UNI_LICENSE"\n" - "\n" - "Usage:\n" - "\n" - " unimrcpserver [options]\n" - "\n" - " Available options:\n" - "\n" - " -r [--root-dir] path : Set the path to the project root directory.\n" - "\n" - " -c [--dir-layout] path : Set the path to the dir layout config file.\n" - " (takes the precedence over --root-dir option)\n" - "\n" - " -l [--log-prio] priority : Set the log priority.\n" - " (0-emergency, ..., 7-debug)\n" - "\n" - " -o [--log-output] mode : Set the log output mode.\n" - " (0-none, 1-console only, 2-file only, 3-both)\n" - "\n" -#ifdef WIN32 - " -s [--service] : Run as a Windows service.\n" - "\n" - " -n [--name] svcname : Set the service name (default: unimrcp)\n" - "\n" -#else - " -d [--daemon] : Run as a daemon.\n" - "\n" -#endif - " -v [--version] : Show the version.\n" - "\n" - " -h [--help] : Show the help.\n" - "\n"); -} - -static apt_bool_t options_load(server_options_t *options, int argc, const char * const *argv, apr_pool_t *pool) -{ - apr_status_t rv; - apr_getopt_t *opt = NULL; - int optch; - const char *optarg; - - const apr_getopt_option_t opt_option[] = { - /* long-option, short-option, has-arg flag, description */ - { "root-dir", 'r', TRUE, "path to root dir" }, /* -r arg or --root-dir arg */ - { "dir-layout", 'c', TRUE, "path to dir layout conf" }, /* -c arg or --dir-layout arg */ - { "log-prio", 'l', TRUE, "log priority" }, /* -l arg or --log-prio arg */ - { "log-output", 'o', TRUE, "log output mode" }, /* -o arg or --log-output arg */ -#ifdef WIN32 - { "service", 's', FALSE, "run as service" }, /* -s or --service */ - { "name", 'n', TRUE, "service name" }, /* -n or --name arg */ -#else - { "daemon", 'd', FALSE, "start as daemon" }, /* -d or --daemon */ -#endif - { "version", 'v', FALSE, "show version" }, /* -v or --version */ - { "help", 'h', FALSE, "show help" }, /* -h or --help */ - { NULL, 0, 0, NULL }, /* end */ - }; - - rv = apr_getopt_init(&opt, pool , argc, argv); - if(rv != APR_SUCCESS) { - return FALSE; - } - - /* reset the options */ - options->root_dir_path = NULL; - options->dir_layout_conf = NULL; - options->foreground = TRUE; - options->log_priority = NULL; - options->log_output = NULL; -#ifdef WIN32 - options->svcname = NULL; -#endif - - while((rv = apr_getopt_long(opt, opt_option, &optch, &optarg)) == APR_SUCCESS) { - switch(optch) { - case 'r': - options->root_dir_path = optarg; - break; - case 'c': - options->dir_layout_conf = optarg; - break; - case 'l': - options->log_priority = optarg; - break; - case 'o': - options->log_output = optarg; - break; -#ifdef WIN32 - case 's': - options->foreground = FALSE; - break; - case 'n': - options->svcname = optarg; - break; -#else - case 'd': - options->foreground = FALSE; - break; -#endif - case 'v': - printf(UNI_VERSION_STRING); - return FALSE; - case 'h': - usage(); - return FALSE; - } - } - - if(rv != APR_EOF) { - usage(); - return FALSE; - } - - return TRUE; -} - -int main(int argc, const char * const *argv) -{ - apr_pool_t *pool; - server_options_t options; - const char *log_conf_path; - apt_dir_layout_t *dir_layout = NULL; - - /* APR global initialization */ - if(apr_initialize() != APR_SUCCESS) { - apr_terminate(); - return 0; - } - - /* create APR pool */ - pool = apt_pool_create(); - if(!pool) { - apr_terminate(); - return 0; - } - - /* load options */ - if(options_load(&options,argc,argv,pool) != TRUE) { - apr_pool_destroy(pool); - apr_terminate(); - return 0; - } - - if(options.dir_layout_conf) { - /* create and load directories layout from the configuration file */ - dir_layout = apt_dir_layout_create(pool); - if(dir_layout) - apt_dir_layout_load(dir_layout,options.dir_layout_conf,pool); - } - else { - /* create default directories layout */ - dir_layout = apt_default_dir_layout_create(options.root_dir_path,pool); - } - - if(!dir_layout) { - printf("Failed to Create Directories Layout\n"); - apr_pool_destroy(pool); - apr_terminate(); - return 0; - } - - /* get path to logger configuration file */ - log_conf_path = apt_confdir_filepath_get(dir_layout,"logger.xml",pool); - /* create and load singleton logger */ - apt_log_instance_load(log_conf_path,pool); - - if(options.log_priority) { - /* override the log priority, if specified in command line */ - apt_log_priority_set(atoi(options.log_priority)); - } - if(options.log_output) { - /* override the log output mode, if specified in command line */ - apt_log_output_mode_set(atoi(options.log_output)); - } - - if(apt_log_output_mode_check(APT_LOG_OUTPUT_FILE) == TRUE) { - /* open the log file */ - const char *log_dir_path = apt_dir_layout_path_get(dir_layout,APT_LAYOUT_LOG_DIR); - apt_log_file_open(log_dir_path,"unimrcpserver",MAX_LOG_FILE_SIZE,MAX_LOG_FILE_COUNT,TRUE,pool); - } - - if(options.foreground == TRUE) { - /* run command line */ - uni_cmdline_run(dir_layout,pool); - } -#ifdef WIN32 - else { - /* run as windows service */ - uni_service_run(options.svcname,dir_layout,pool); - } -#else - else { - /* run as daemon */ - uni_daemon_run(dir_layout,pool); - } -#endif - - /* destroy singleton logger */ - apt_log_instance_destroy(); - /* destroy APR pool */ - apr_pool_destroy(pool); - /* APR global termination */ - apr_terminate(); - return 0; -} diff --git a/libs/unimrcp/platforms/unimrcp-server/src/uni_cmdline.c b/libs/unimrcp/platforms/unimrcp-server/src/uni_cmdline.c deleted file mode 100644 index e79132bb49e..00000000000 --- a/libs/unimrcp/platforms/unimrcp-server/src/uni_cmdline.c +++ /dev/null @@ -1,83 +0,0 @@ -/* - * Copyright 2008-2014 Arsen Chaloyan - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - * - * $Id: uni_cmdline.c 2136 2014-07-04 06:33:36Z achaloyan@gmail.com $ - */ - -#include -#include -#include "unimrcp_server.h" -#include "apt_log.h" - -static apt_bool_t cmdline_process(char *cmdline) -{ - apt_bool_t running = TRUE; - char *name; - char *last; - name = apr_strtok(cmdline, " ", &last); - - if(strcasecmp(name,"loglevel") == 0) { - char *priority = apr_strtok(NULL, " ", &last); - if(priority) { - apt_log_priority_set(atol(priority)); - } - } - else if(strcasecmp(name,"exit") == 0 || strcmp(name,"quit") == 0) { - running = FALSE; - } - else if(strcasecmp(name,"help") == 0) { - printf("usage:\n"); - printf("- loglevel [level] (set loglevel, one of 0,1...7)\n"); - printf("- quit, exit\n"); - } - else { - printf("unknown command: %s (input help for usage)\n",name); - } - return running; -} - -apt_bool_t uni_cmdline_run(apt_dir_layout_t *dir_layout, apr_pool_t *pool) -{ - apt_bool_t running = TRUE; - char cmdline[1024]; - apr_size_t i; - mrcp_server_t *server; - - /* start server */ - server = unimrcp_server_start(dir_layout); - if(!server) { - return FALSE; - } - - do { - printf(">"); - memset(&cmdline, 0, sizeof(cmdline)); - for(i = 0; i < sizeof(cmdline); i++) { - cmdline[i] = (char) getchar(); - if(cmdline[i] == '\n') { - cmdline[i] = '\0'; - break; - } - } - if(*cmdline) { - running = cmdline_process(cmdline); - } - } - while(running != 0); - - /* shutdown server */ - unimrcp_server_shutdown(server); - return TRUE; -} diff --git a/libs/unimrcp/platforms/unimrcp-server/src/uni_daemon.c b/libs/unimrcp/platforms/unimrcp-server/src/uni_daemon.c deleted file mode 100644 index 969f14dd60b..00000000000 --- a/libs/unimrcp/platforms/unimrcp-server/src/uni_daemon.c +++ /dev/null @@ -1,52 +0,0 @@ -/* - * Copyright 2008-2014 Arsen Chaloyan - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - * - * $Id: uni_daemon.c 2136 2014-07-04 06:33:36Z achaloyan@gmail.com $ - */ - -#include -#include -#include "unimrcp_server.h" -#include "apt_log.h" - -static apt_bool_t daemon_running; - -static void sigterm_handler(int signo) -{ - daemon_running = FALSE; -} - -apt_bool_t uni_daemon_run(apt_dir_layout_t *dir_layout, apr_pool_t *pool) -{ - mrcp_server_t *server; - - daemon_running = TRUE; - apr_signal(SIGTERM,sigterm_handler); - - apt_log(APT_LOG_MARK,APT_PRIO_NOTICE,"Run as Daemon"); - apr_proc_detach(APR_PROC_DETACH_DAEMONIZE); - - /* start server */ - server = unimrcp_server_start(dir_layout); - if(!server) { - return FALSE; - } - - while(daemon_running) apr_sleep(1000000); - - /* shutdown server */ - unimrcp_server_shutdown(server); - return TRUE; -} diff --git a/libs/unimrcp/platforms/unimrcp-server/src/uni_service.c b/libs/unimrcp/platforms/unimrcp-server/src/uni_service.c deleted file mode 100644 index 31b70c0c395..00000000000 --- a/libs/unimrcp/platforms/unimrcp-server/src/uni_service.c +++ /dev/null @@ -1,121 +0,0 @@ -/* - * Copyright 2008-2014 Arsen Chaloyan - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - * - * $Id: uni_service.c 2136 2014-07-04 06:33:36Z achaloyan@gmail.com $ - */ - -#include -#include -#include "unimrcp_server.h" -#include "apt_log.h" - -#define WIN_SERVICE_NAME "unimrcp" - -static SERVICE_STATUS_HANDLE win_service_status_handle = NULL; -static SERVICE_STATUS win_service_status; - -static mrcp_server_t *server = NULL; -static apt_dir_layout_t *service_dir_layout = NULL; -static const char *svcname = NULL; - -/** Display error message with Windows error code and description */ -static void winerror(const char *file, int line, const char *msg) -{ - char buf[128]; - DWORD err = GetLastError(); - int ret = FormatMessage(FORMAT_MESSAGE_FROM_SYSTEM | FORMAT_MESSAGE_IGNORE_INSERTS, - NULL, - err, - MAKELANGID(LANG_NEUTRAL, SUBLANG_DEFAULT), - buf, sizeof(buf), NULL); - apt_log(file, line, APT_PRIO_WARNING, "%s: %lu %.*s\n", msg, err, ret, buf); -} - -/** SCM state change handler */ -static void WINAPI win_service_handler(DWORD control) -{ - apt_log(APT_LOG_MARK,APT_PRIO_INFO,"Service Handler 0x%02lx",control); - switch (control) - { - case SERVICE_CONTROL_INTERROGATE: - break; - case SERVICE_CONTROL_SHUTDOWN: - case SERVICE_CONTROL_STOP: - if(server) { - win_service_status.dwCurrentState = SERVICE_STOP_PENDING; - if(!SetServiceStatus(win_service_status_handle, &win_service_status)) { - winerror(APT_LOG_MARK, "Failed to Set Service Status"); - } - - /* shutdown server */ - unimrcp_server_shutdown(server); - } - win_service_status.dwCurrentState = SERVICE_STOPPED; - win_service_status.dwCheckPoint = 0; - win_service_status.dwWaitHint = 0; - break; - } - - if(!SetServiceStatus(win_service_status_handle, &win_service_status)) { - winerror(APT_LOG_MARK, "Failed to Set Service Status"); - } -} - -static void WINAPI win_service_main(DWORD argc, LPTSTR *argv) -{ - apt_log(APT_LOG_MARK,APT_PRIO_INFO,"Service Main"); - win_service_status.dwServiceType = SERVICE_WIN32; - win_service_status.dwControlsAccepted = SERVICE_ACCEPT_STOP; - win_service_status.dwWin32ExitCode = 0; - win_service_status.dwServiceSpecificExitCode = 0; - win_service_status.dwCheckPoint = 0; - win_service_status.dwWaitHint = 0; - - win_service_status_handle = RegisterServiceCtrlHandler(svcname, win_service_handler); - if(win_service_status_handle == (SERVICE_STATUS_HANDLE)0) { - winerror(APT_LOG_MARK, "Failed to Register Service Control Handler"); - return; - } - - win_service_status.dwCurrentState = SERVICE_START_PENDING; - if(!SetServiceStatus(win_service_status_handle, &win_service_status)) { - winerror(APT_LOG_MARK, "Failed to Set Service Status"); - } - - /* start server */ - server = unimrcp_server_start(service_dir_layout); - - win_service_status.dwCurrentState = server ? SERVICE_RUNNING : SERVICE_STOPPED; - if(!SetServiceStatus(win_service_status_handle, &win_service_status)) { - winerror(APT_LOG_MARK, "Failed to Set Service Status"); - } -} - -/** Run SCM service */ -apt_bool_t uni_service_run(const char *name, apt_dir_layout_t *dir_layout, apr_pool_t *pool) -{ - SERVICE_TABLE_ENTRY win_service_table[2]; - svcname = name ? name : WIN_SERVICE_NAME; - memset(&win_service_table, 0, sizeof(win_service_table)); - win_service_table->lpServiceName = (char *) svcname; - win_service_table->lpServiceProc = win_service_main; - - service_dir_layout = dir_layout; - apt_log(APT_LOG_MARK,APT_PRIO_INFO,"Run as Service %s",svcname); - if(!StartServiceCtrlDispatcher(win_service_table)) { - winerror(APT_LOG_MARK, "Failed to Connect to SCM"); - } - return TRUE; -} diff --git a/libs/unimrcp/platforms/unimrcp-server/unimrcpserver.rc b/libs/unimrcp/platforms/unimrcp-server/unimrcpserver.rc deleted file mode 100644 index 4f6c5dd891e..00000000000 --- a/libs/unimrcp/platforms/unimrcp-server/unimrcpserver.rc +++ /dev/null @@ -1,39 +0,0 @@ -#include "uni_version.h" - -1 VERSIONINFO - FILEVERSION UNI_VERSION_STRING_CSV,0 - PRODUCTVERSION UNI_VERSION_STRING_CSV,0 - FILEFLAGSMASK 0x3fL -#if defined(_DEBUG) - FILEFLAGS 0x01L -#else - FILEFLAGS 0x00L -#endif -#if defined(WINNT) || defined(WIN64) - FILEOS 0x40004L -#else - FILEOS 0x4L -#endif - FILETYPE 0x1L - FILESUBTYPE 0x0L -BEGIN - BLOCK "StringFileInfo" - BEGIN - BLOCK "040904b0" - BEGIN - VALUE "Comments", UNI_LICENSE "\0" - VALUE "CompanyName", "UniMRCP\0" - VALUE "FileDescription", "UniMRCP Server Application\0" - VALUE "FileVersion", UNI_VERSION_STRING "\0" - VALUE "InternalName", "unimrcpserver" "\0" - VALUE "LegalCopyright", UNI_COPYRIGHT "\0" - VALUE "OriginalFilename", "unimrcpserver.exe" "\0" - VALUE "ProductName", "UniMRCP Project\0" - VALUE "ProductVersion", UNI_VERSION_STRING "\0" - END - END - BLOCK "VarFileInfo" - BEGIN - VALUE "Translation", 0x409, 1200 - END -END diff --git a/libs/unimrcp/platforms/unimrcp-server/unimrcpserver.vcproj b/libs/unimrcp/platforms/unimrcp-server/unimrcpserver.vcproj deleted file mode 100644 index 46e57dab5aa..00000000000 --- a/libs/unimrcp/platforms/unimrcp-server/unimrcpserver.vcproj +++ /dev/null @@ -1,340 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/libs/unimrcp/platforms/unimrcp-server/unimrcpserver.vcxproj b/libs/unimrcp/platforms/unimrcp-server/unimrcpserver.vcxproj deleted file mode 100644 index e2d74c95757..00000000000 --- a/libs/unimrcp/platforms/unimrcp-server/unimrcpserver.vcxproj +++ /dev/null @@ -1,135 +0,0 @@ - - - - - Debug - Win32 - - - Debug - x64 - - - Release - Win32 - - - Release - x64 - - - - {592CF22D-3F8F-4A77-A174-130D77B7623B} - unimrcpserver - - - - Application - - - Application - - - Application - - - Application - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - <_ProjectFileVersion>10.0.30319.1 - AllRules.ruleset - - - AllRules.ruleset - - - AllRules.ruleset - - - AllRules.ruleset - - - - - - $(UniMRCPServerLibs);%(AdditionalDependencies) - - - - - $(UniMRCPServerLibs);%(AdditionalDependencies) - UseLinkTimeCodeGeneration - - - - - X64 - - - ProgramDatabase - - - $(UniMRCPServerLibs);%(AdditionalDependencies) - - - - - X64 - - - $(UniMRCPServerLibs);%(AdditionalDependencies) - UseLinkTimeCodeGeneration - - - - - - - - - - - ..\..\build;%(AdditionalIncludeDirectories) - ..\..\build;%(AdditionalIncludeDirectories) - ..\..\build;%(AdditionalIncludeDirectories) - ..\..\build;%(AdditionalIncludeDirectories) - - - - - {c98af157-352e-4737-bd30-a24e2647f5ae} - false - - - - - - \ No newline at end of file diff --git a/libs/unimrcp/platforms/unimrcp-server/unimrcpserver.vcxproj.filters b/libs/unimrcp/platforms/unimrcp-server/unimrcpserver.vcxproj.filters deleted file mode 100644 index 6b335bf5447..00000000000 --- a/libs/unimrcp/platforms/unimrcp-server/unimrcpserver.vcxproj.filters +++ /dev/null @@ -1,30 +0,0 @@ - - - - - {4FC737F1-C7A5-4376-A066-2A32D752A2FF} - cpp;c;cc;cxx;def;odl;idl;hpj;bat;asm;asmx - - - {93995380-89BD-4b04-88EB-625FBE52EBFB} - h;hpp;hxx;hm;inl;inc;xsd - - - - - src - - - src - - - src - - - src - - - - - - \ No newline at end of file diff --git a/libs/unimrcp/plugins/Makefile.am b/libs/unimrcp/plugins/Makefile.am deleted file mode 100644 index 2300a4934ae..00000000000 --- a/libs/unimrcp/plugins/Makefile.am +++ /dev/null @@ -1,19 +0,0 @@ -MAINTAINERCLEANFILES = Makefile.in - -SUBDIRS = - -if DEMOSYNTH_PLUGIN -SUBDIRS += demo-synth -endif - -if DEMORECOG_PLUGIN -SUBDIRS += demo-recog -endif - -if DEMOVERIFIER_PLUGIN -SUBDIRS += demo-verifier -endif - -if RECORDER_PLUGIN -SUBDIRS += mrcp-recorder -endif diff --git a/libs/unimrcp/plugins/demo-recog/Makefile.am b/libs/unimrcp/plugins/demo-recog/Makefile.am deleted file mode 100644 index 51babdaaa30..00000000000 --- a/libs/unimrcp/plugins/demo-recog/Makefile.am +++ /dev/null @@ -1,8 +0,0 @@ -AM_CPPFLAGS = $(UNIMRCP_PLUGIN_INCLUDES) - -plugin_LTLIBRARIES = demorecog.la - -demorecog_la_SOURCES = src/demo_recog_engine.c -demorecog_la_LDFLAGS = $(UNIMRCP_PLUGIN_OPTS) - -include $(top_srcdir)/build/rules/uniplugin.am diff --git a/libs/unimrcp/plugins/demo-recog/demorecog.vcproj b/libs/unimrcp/plugins/demo-recog/demorecog.vcproj deleted file mode 100644 index 567aa3d1585..00000000000 --- a/libs/unimrcp/plugins/demo-recog/demorecog.vcproj +++ /dev/null @@ -1,296 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/libs/unimrcp/plugins/demo-recog/demorecog.vcxproj b/libs/unimrcp/plugins/demo-recog/demorecog.vcxproj deleted file mode 100644 index 562c8b49023..00000000000 --- a/libs/unimrcp/plugins/demo-recog/demorecog.vcxproj +++ /dev/null @@ -1,123 +0,0 @@ - - - - - Debug - Win32 - - - Debug - x64 - - - Release - Win32 - - - Release - x64 - - - - {B495B6D9-AF84-479D-B30A-313C16EF8BFD} - demorecog - Win32Proj - - - - DynamicLibrary - Unicode - true - - - DynamicLibrary - Unicode - - - DynamicLibrary - Unicode - true - - - DynamicLibrary - Unicode - - - - - - - - - - - - - - - - - - - - - - - - - - - <_ProjectFileVersion>10.0.30319.1 - AllRules.ruleset - - - AllRules.ruleset - - - AllRules.ruleset - - - AllRules.ruleset - - - - - - include;%(AdditionalIncludeDirectories) - - - - - include;%(AdditionalIncludeDirectories) - - - - - X64 - - - include;%(AdditionalIncludeDirectories) - ProgramDatabase - - - - - X64 - - - include;%(AdditionalIncludeDirectories) - - - - - - - - {843425be-9a9a-44f4-a4e3-4b57d6abd53c} - false - - - - - - \ No newline at end of file diff --git a/libs/unimrcp/plugins/demo-recog/demorecog.vcxproj.filters b/libs/unimrcp/plugins/demo-recog/demorecog.vcxproj.filters deleted file mode 100644 index af5b05f7069..00000000000 --- a/libs/unimrcp/plugins/demo-recog/demorecog.vcxproj.filters +++ /dev/null @@ -1,18 +0,0 @@ - - - - - {93995380-89BD-4b04-88EB-625FBE52EBFB} - h;hpp;hxx;hm;inl;inc;xsd - - - {4c5e54ad-7563-43a7-8b11-5067a45289e9} - cpp;c;cc;cxx;def;odl;idl;hpj;bat;asm;asmx - - - - - src - - - \ No newline at end of file diff --git a/libs/unimrcp/plugins/demo-recog/src/demo_recog_engine.c b/libs/unimrcp/plugins/demo-recog/src/demo_recog_engine.c deleted file mode 100644 index 75954a45b24..00000000000 --- a/libs/unimrcp/plugins/demo-recog/src/demo_recog_engine.c +++ /dev/null @@ -1,564 +0,0 @@ -/* - * Copyright 2008-2014 Arsen Chaloyan - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - * - * $Id: demo_recog_engine.c 2193 2014-10-08 03:44:33Z achaloyan@gmail.com $ - */ - -/* - * Mandatory rules concerning plugin implementation. - * 1. Each plugin MUST implement a plugin/engine creator function - * with the exact signature and name (the main entry point) - * MRCP_PLUGIN_DECLARE(mrcp_engine_t*) mrcp_plugin_create(apr_pool_t *pool) - * 2. Each plugin MUST declare its version number - * MRCP_PLUGIN_VERSION_DECLARE - * 3. One and only one response MUST be sent back to the received request. - * 4. Methods (callbacks) of the MRCP engine channel MUST not block. - * (asynchronous response can be sent from the context of other thread) - * 5. Methods (callbacks) of the MPF engine stream MUST not block. - */ - -#include "mrcp_recog_engine.h" -#include "mpf_activity_detector.h" -#include "apt_consumer_task.h" -#include "apt_log.h" - -#define RECOG_ENGINE_TASK_NAME "Demo Recog Engine" - -typedef struct demo_recog_engine_t demo_recog_engine_t; -typedef struct demo_recog_channel_t demo_recog_channel_t; -typedef struct demo_recog_msg_t demo_recog_msg_t; - -/** Declaration of recognizer engine methods */ -static apt_bool_t demo_recog_engine_destroy(mrcp_engine_t *engine); -static apt_bool_t demo_recog_engine_open(mrcp_engine_t *engine); -static apt_bool_t demo_recog_engine_close(mrcp_engine_t *engine); -static mrcp_engine_channel_t* demo_recog_engine_channel_create(mrcp_engine_t *engine, apr_pool_t *pool); - -static const struct mrcp_engine_method_vtable_t engine_vtable = { - demo_recog_engine_destroy, - demo_recog_engine_open, - demo_recog_engine_close, - demo_recog_engine_channel_create -}; - - -/** Declaration of recognizer channel methods */ -static apt_bool_t demo_recog_channel_destroy(mrcp_engine_channel_t *channel); -static apt_bool_t demo_recog_channel_open(mrcp_engine_channel_t *channel); -static apt_bool_t demo_recog_channel_close(mrcp_engine_channel_t *channel); -static apt_bool_t demo_recog_channel_request_process(mrcp_engine_channel_t *channel, mrcp_message_t *request); - -static const struct mrcp_engine_channel_method_vtable_t channel_vtable = { - demo_recog_channel_destroy, - demo_recog_channel_open, - demo_recog_channel_close, - demo_recog_channel_request_process -}; - -/** Declaration of recognizer audio stream methods */ -static apt_bool_t demo_recog_stream_destroy(mpf_audio_stream_t *stream); -static apt_bool_t demo_recog_stream_open(mpf_audio_stream_t *stream, mpf_codec_t *codec); -static apt_bool_t demo_recog_stream_close(mpf_audio_stream_t *stream); -static apt_bool_t demo_recog_stream_write(mpf_audio_stream_t *stream, const mpf_frame_t *frame); - -static const mpf_audio_stream_vtable_t audio_stream_vtable = { - demo_recog_stream_destroy, - NULL, - NULL, - NULL, - demo_recog_stream_open, - demo_recog_stream_close, - demo_recog_stream_write, - NULL -}; - -/** Declaration of demo recognizer engine */ -struct demo_recog_engine_t { - apt_consumer_task_t *task; -}; - -/** Declaration of demo recognizer channel */ -struct demo_recog_channel_t { - /** Back pointer to engine */ - demo_recog_engine_t *demo_engine; - /** Engine channel base */ - mrcp_engine_channel_t *channel; - - /** Active (in-progress) recognition request */ - mrcp_message_t *recog_request; - /** Pending stop response */ - mrcp_message_t *stop_response; - /** Indicates whether input timers are started */ - apt_bool_t timers_started; - /** Voice activity detector */ - mpf_activity_detector_t *detector; - /** File to write utterance to */ - FILE *audio_out; -}; - -typedef enum { - DEMO_RECOG_MSG_OPEN_CHANNEL, - DEMO_RECOG_MSG_CLOSE_CHANNEL, - DEMO_RECOG_MSG_REQUEST_PROCESS -} demo_recog_msg_type_e; - -/** Declaration of demo recognizer task message */ -struct demo_recog_msg_t { - demo_recog_msg_type_e type; - mrcp_engine_channel_t *channel; - mrcp_message_t *request; -}; - -static apt_bool_t demo_recog_msg_signal(demo_recog_msg_type_e type, mrcp_engine_channel_t *channel, mrcp_message_t *request); -static apt_bool_t demo_recog_msg_process(apt_task_t *task, apt_task_msg_t *msg); - -/** Declare this macro to set plugin version */ -MRCP_PLUGIN_VERSION_DECLARE - -/** Declare this macro to use log routine of the server, plugin is loaded from */ -MRCP_PLUGIN_LOGGER_IMPLEMENT - -/** Create demo recognizer engine */ -MRCP_PLUGIN_DECLARE(mrcp_engine_t*) mrcp_plugin_create(apr_pool_t *pool) -{ - demo_recog_engine_t *demo_engine = apr_palloc(pool,sizeof(demo_recog_engine_t)); - apt_task_t *task; - apt_task_vtable_t *vtable; - apt_task_msg_pool_t *msg_pool; - - msg_pool = apt_task_msg_pool_create_dynamic(sizeof(demo_recog_msg_t),pool); - demo_engine->task = apt_consumer_task_create(demo_engine,msg_pool,pool); - if(!demo_engine->task) { - return NULL; - } - task = apt_consumer_task_base_get(demo_engine->task); - apt_task_name_set(task,RECOG_ENGINE_TASK_NAME); - vtable = apt_task_vtable_get(task); - if(vtable) { - vtable->process_msg = demo_recog_msg_process; - } - - /* create engine base */ - return mrcp_engine_create( - MRCP_RECOGNIZER_RESOURCE, /* MRCP resource identifier */ - demo_engine, /* object to associate */ - &engine_vtable, /* virtual methods table of engine */ - pool); /* pool to allocate memory from */ -} - -/** Destroy recognizer engine */ -static apt_bool_t demo_recog_engine_destroy(mrcp_engine_t *engine) -{ - demo_recog_engine_t *demo_engine = engine->obj; - if(demo_engine->task) { - apt_task_t *task = apt_consumer_task_base_get(demo_engine->task); - apt_task_destroy(task); - demo_engine->task = NULL; - } - return TRUE; -} - -/** Open recognizer engine */ -static apt_bool_t demo_recog_engine_open(mrcp_engine_t *engine) -{ - demo_recog_engine_t *demo_engine = engine->obj; - if(demo_engine->task) { - apt_task_t *task = apt_consumer_task_base_get(demo_engine->task); - apt_task_start(task); - } - return mrcp_engine_open_respond(engine,TRUE); -} - -/** Close recognizer engine */ -static apt_bool_t demo_recog_engine_close(mrcp_engine_t *engine) -{ - demo_recog_engine_t *demo_engine = engine->obj; - if(demo_engine->task) { - apt_task_t *task = apt_consumer_task_base_get(demo_engine->task); - apt_task_terminate(task,TRUE); - } - return mrcp_engine_close_respond(engine); -} - -static mrcp_engine_channel_t* demo_recog_engine_channel_create(mrcp_engine_t *engine, apr_pool_t *pool) -{ - mpf_stream_capabilities_t *capabilities; - mpf_termination_t *termination; - - /* create demo recog channel */ - demo_recog_channel_t *recog_channel = apr_palloc(pool,sizeof(demo_recog_channel_t)); - recog_channel->demo_engine = engine->obj; - recog_channel->recog_request = NULL; - recog_channel->stop_response = NULL; - recog_channel->detector = mpf_activity_detector_create(pool); - recog_channel->audio_out = NULL; - - capabilities = mpf_sink_stream_capabilities_create(pool); - mpf_codec_capabilities_add( - &capabilities->codecs, - MPF_SAMPLE_RATE_8000 | MPF_SAMPLE_RATE_16000, - "LPCM"); - - /* create media termination */ - termination = mrcp_engine_audio_termination_create( - recog_channel, /* object to associate */ - &audio_stream_vtable, /* virtual methods table of audio stream */ - capabilities, /* stream capabilities */ - pool); /* pool to allocate memory from */ - - /* create engine channel base */ - recog_channel->channel = mrcp_engine_channel_create( - engine, /* engine */ - &channel_vtable, /* virtual methods table of engine channel */ - recog_channel, /* object to associate */ - termination, /* associated media termination */ - pool); /* pool to allocate memory from */ - - return recog_channel->channel; -} - -/** Destroy engine channel */ -static apt_bool_t demo_recog_channel_destroy(mrcp_engine_channel_t *channel) -{ - /* nothing to destrtoy */ - return TRUE; -} - -/** Open engine channel (asynchronous response MUST be sent)*/ -static apt_bool_t demo_recog_channel_open(mrcp_engine_channel_t *channel) -{ - return demo_recog_msg_signal(DEMO_RECOG_MSG_OPEN_CHANNEL,channel,NULL); -} - -/** Close engine channel (asynchronous response MUST be sent)*/ -static apt_bool_t demo_recog_channel_close(mrcp_engine_channel_t *channel) -{ - return demo_recog_msg_signal(DEMO_RECOG_MSG_CLOSE_CHANNEL,channel,NULL); -} - -/** Process MRCP channel request (asynchronous response MUST be sent)*/ -static apt_bool_t demo_recog_channel_request_process(mrcp_engine_channel_t *channel, mrcp_message_t *request) -{ - return demo_recog_msg_signal(DEMO_RECOG_MSG_REQUEST_PROCESS,channel,request); -} - -/** Process RECOGNIZE request */ -static apt_bool_t demo_recog_channel_recognize(mrcp_engine_channel_t *channel, mrcp_message_t *request, mrcp_message_t *response) -{ - /* process RECOGNIZE request */ - mrcp_recog_header_t *recog_header; - demo_recog_channel_t *recog_channel = channel->method_obj; - const mpf_codec_descriptor_t *descriptor = mrcp_engine_sink_stream_codec_get(channel); - - if(!descriptor) { - apt_log(APT_LOG_MARK,APT_PRIO_WARNING,"Failed to Get Codec Descriptor "APT_SIDRES_FMT, MRCP_MESSAGE_SIDRES(request)); - response->start_line.status_code = MRCP_STATUS_CODE_METHOD_FAILED; - return FALSE; - } - - recog_channel->timers_started = TRUE; - - /* get recognizer header */ - recog_header = mrcp_resource_header_get(request); - if(recog_header) { - if(mrcp_resource_header_property_check(request,RECOGNIZER_HEADER_START_INPUT_TIMERS) == TRUE) { - recog_channel->timers_started = recog_header->start_input_timers; - } - if(mrcp_resource_header_property_check(request,RECOGNIZER_HEADER_NO_INPUT_TIMEOUT) == TRUE) { - mpf_activity_detector_noinput_timeout_set(recog_channel->detector,recog_header->no_input_timeout); - } - if(mrcp_resource_header_property_check(request,RECOGNIZER_HEADER_SPEECH_COMPLETE_TIMEOUT) == TRUE) { - mpf_activity_detector_silence_timeout_set(recog_channel->detector,recog_header->speech_complete_timeout); - } - } - - if(!recog_channel->audio_out) { - const apt_dir_layout_t *dir_layout = channel->engine->dir_layout; - char *file_name = apr_psprintf(channel->pool,"utter-%dkHz-%s.pcm", - descriptor->sampling_rate/1000, - request->channel_id.session_id.buf); - char *file_path = apt_vardir_filepath_get(dir_layout,file_name,channel->pool); - if(file_path) { - apt_log(APT_LOG_MARK,APT_PRIO_INFO,"Open Utterance Output File [%s] for Writing",file_path); - recog_channel->audio_out = fopen(file_path,"wb"); - if(!recog_channel->audio_out) { - apt_log(APT_LOG_MARK,APT_PRIO_WARNING,"Failed to Open Utterance Output File [%s] for Writing",file_path); - } - } - } - - response->start_line.request_state = MRCP_REQUEST_STATE_INPROGRESS; - /* send asynchronous response */ - mrcp_engine_channel_message_send(channel,response); - recog_channel->recog_request = request; - return TRUE; -} - -/** Process STOP request */ -static apt_bool_t demo_recog_channel_stop(mrcp_engine_channel_t *channel, mrcp_message_t *request, mrcp_message_t *response) -{ - /* process STOP request */ - demo_recog_channel_t *recog_channel = channel->method_obj; - /* store STOP request, make sure there is no more activity and only then send the response */ - recog_channel->stop_response = response; - return TRUE; -} - -/** Process START-INPUT-TIMERS request */ -static apt_bool_t demo_recog_channel_timers_start(mrcp_engine_channel_t *channel, mrcp_message_t *request, mrcp_message_t *response) -{ - demo_recog_channel_t *recog_channel = channel->method_obj; - recog_channel->timers_started = TRUE; - return mrcp_engine_channel_message_send(channel,response); -} - -/** Dispatch MRCP request */ -static apt_bool_t demo_recog_channel_request_dispatch(mrcp_engine_channel_t *channel, mrcp_message_t *request) -{ - apt_bool_t processed = FALSE; - mrcp_message_t *response = mrcp_response_create(request,request->pool); - switch(request->start_line.method_id) { - case RECOGNIZER_SET_PARAMS: - break; - case RECOGNIZER_GET_PARAMS: - break; - case RECOGNIZER_DEFINE_GRAMMAR: - break; - case RECOGNIZER_RECOGNIZE: - processed = demo_recog_channel_recognize(channel,request,response); - break; - case RECOGNIZER_GET_RESULT: - break; - case RECOGNIZER_START_INPUT_TIMERS: - processed = demo_recog_channel_timers_start(channel,request,response); - break; - case RECOGNIZER_STOP: - processed = demo_recog_channel_stop(channel,request,response); - break; - default: - break; - } - if(processed == FALSE) { - /* send asynchronous response for not handled request */ - mrcp_engine_channel_message_send(channel,response); - } - return TRUE; -} - -/** Callback is called from MPF engine context to destroy any additional data associated with audio stream */ -static apt_bool_t demo_recog_stream_destroy(mpf_audio_stream_t *stream) -{ - return TRUE; -} - -/** Callback is called from MPF engine context to perform any action before open */ -static apt_bool_t demo_recog_stream_open(mpf_audio_stream_t *stream, mpf_codec_t *codec) -{ - return TRUE; -} - -/** Callback is called from MPF engine context to perform any action after close */ -static apt_bool_t demo_recog_stream_close(mpf_audio_stream_t *stream) -{ - return TRUE; -} - -/* Raise demo START-OF-INPUT event */ -static apt_bool_t demo_recog_start_of_input(demo_recog_channel_t *recog_channel) -{ - /* create START-OF-INPUT event */ - mrcp_message_t *message = mrcp_event_create( - recog_channel->recog_request, - RECOGNIZER_START_OF_INPUT, - recog_channel->recog_request->pool); - if(!message) { - return FALSE; - } - - /* set request state */ - message->start_line.request_state = MRCP_REQUEST_STATE_INPROGRESS; - /* send asynch event */ - return mrcp_engine_channel_message_send(recog_channel->channel,message); -} - -/* Load demo recognition result */ -static apt_bool_t demo_recog_result_load(demo_recog_channel_t *recog_channel, mrcp_message_t *message) -{ - FILE *file; - mrcp_engine_channel_t *channel = recog_channel->channel; - const apt_dir_layout_t *dir_layout = channel->engine->dir_layout; - char *file_path = apt_datadir_filepath_get(dir_layout,"result.xml",message->pool); - if(!file_path) { - return FALSE; - } - - /* read the demo result from file */ - file = fopen(file_path,"r"); - if(file) { - mrcp_generic_header_t *generic_header; - char text[1024]; - apr_size_t size; - size = fread(text,1,sizeof(text),file); - apt_string_assign_n(&message->body,text,size,message->pool); - fclose(file); - - /* get/allocate generic header */ - generic_header = mrcp_generic_header_prepare(message); - if(generic_header) { - /* set content types */ - apt_string_assign(&generic_header->content_type,"application/x-nlsml",message->pool); - mrcp_generic_header_property_add(message,GENERIC_HEADER_CONTENT_TYPE); - } - } - return TRUE; -} - -/* Raise demo RECOGNITION-COMPLETE event */ -static apt_bool_t demo_recog_recognition_complete(demo_recog_channel_t *recog_channel, mrcp_recog_completion_cause_e cause) -{ - mrcp_recog_header_t *recog_header; - /* create RECOGNITION-COMPLETE event */ - mrcp_message_t *message = mrcp_event_create( - recog_channel->recog_request, - RECOGNIZER_RECOGNITION_COMPLETE, - recog_channel->recog_request->pool); - if(!message) { - return FALSE; - } - - /* get/allocate recognizer header */ - recog_header = mrcp_resource_header_prepare(message); - if(recog_header) { - /* set completion cause */ - recog_header->completion_cause = cause; - mrcp_resource_header_property_add(message,RECOGNIZER_HEADER_COMPLETION_CAUSE); - } - /* set request state */ - message->start_line.request_state = MRCP_REQUEST_STATE_COMPLETE; - - if(cause == RECOGNIZER_COMPLETION_CAUSE_SUCCESS) { - demo_recog_result_load(recog_channel,message); - } - - recog_channel->recog_request = NULL; - /* send asynch event */ - return mrcp_engine_channel_message_send(recog_channel->channel,message); -} - -/** Callback is called from MPF engine context to write/send new frame */ -static apt_bool_t demo_recog_stream_write(mpf_audio_stream_t *stream, const mpf_frame_t *frame) -{ - demo_recog_channel_t *recog_channel = stream->obj; - if(recog_channel->stop_response) { - /* send asynchronous response to STOP request */ - mrcp_engine_channel_message_send(recog_channel->channel,recog_channel->stop_response); - recog_channel->stop_response = NULL; - recog_channel->recog_request = NULL; - return TRUE; - } - - if(recog_channel->recog_request) { - mpf_detector_event_e det_event = mpf_activity_detector_process(recog_channel->detector,frame); - switch(det_event) { - case MPF_DETECTOR_EVENT_ACTIVITY: - apt_log(APT_LOG_MARK,APT_PRIO_INFO,"Detected Voice Activity "APT_SIDRES_FMT, - MRCP_MESSAGE_SIDRES(recog_channel->recog_request)); - demo_recog_start_of_input(recog_channel); - break; - case MPF_DETECTOR_EVENT_INACTIVITY: - apt_log(APT_LOG_MARK,APT_PRIO_INFO,"Detected Voice Inactivity "APT_SIDRES_FMT, - MRCP_MESSAGE_SIDRES(recog_channel->recog_request)); - demo_recog_recognition_complete(recog_channel,RECOGNIZER_COMPLETION_CAUSE_SUCCESS); - break; - case MPF_DETECTOR_EVENT_NOINPUT: - apt_log(APT_LOG_MARK,APT_PRIO_INFO,"Detected Noinput "APT_SIDRES_FMT, - MRCP_MESSAGE_SIDRES(recog_channel->recog_request)); - if(recog_channel->timers_started == TRUE) { - demo_recog_recognition_complete(recog_channel,RECOGNIZER_COMPLETION_CAUSE_NO_INPUT_TIMEOUT); - } - break; - default: - break; - } - - if((frame->type & MEDIA_FRAME_TYPE_EVENT) == MEDIA_FRAME_TYPE_EVENT) { - if(frame->marker == MPF_MARKER_START_OF_EVENT) { - apt_log(APT_LOG_MARK,APT_PRIO_INFO,"Detected Start of Event "APT_SIDRES_FMT" id:%d", - MRCP_MESSAGE_SIDRES(recog_channel->recog_request), - frame->event_frame.event_id); - } - else if(frame->marker == MPF_MARKER_END_OF_EVENT) { - apt_log(APT_LOG_MARK,APT_PRIO_INFO,"Detected End of Event "APT_SIDRES_FMT" id:%d duration:%d ts", - MRCP_MESSAGE_SIDRES(recog_channel->recog_request), - frame->event_frame.event_id, - frame->event_frame.duration); - } - } - - if(recog_channel->audio_out) { - fwrite(frame->codec_frame.buffer,1,frame->codec_frame.size,recog_channel->audio_out); - } - } - return TRUE; -} - -static apt_bool_t demo_recog_msg_signal(demo_recog_msg_type_e type, mrcp_engine_channel_t *channel, mrcp_message_t *request) -{ - apt_bool_t status = FALSE; - demo_recog_channel_t *demo_channel = channel->method_obj; - demo_recog_engine_t *demo_engine = demo_channel->demo_engine; - apt_task_t *task = apt_consumer_task_base_get(demo_engine->task); - apt_task_msg_t *msg = apt_task_msg_get(task); - if(msg) { - demo_recog_msg_t *demo_msg; - msg->type = TASK_MSG_USER; - demo_msg = (demo_recog_msg_t*) msg->data; - - demo_msg->type = type; - demo_msg->channel = channel; - demo_msg->request = request; - status = apt_task_msg_signal(task,msg); - } - return status; -} - -static apt_bool_t demo_recog_msg_process(apt_task_t *task, apt_task_msg_t *msg) -{ - demo_recog_msg_t *demo_msg = (demo_recog_msg_t*)msg->data; - switch(demo_msg->type) { - case DEMO_RECOG_MSG_OPEN_CHANNEL: - /* open channel and send asynch response */ - mrcp_engine_channel_open_respond(demo_msg->channel,TRUE); - break; - case DEMO_RECOG_MSG_CLOSE_CHANNEL: - { - /* close channel, make sure there is no activity and send asynch response */ - demo_recog_channel_t *recog_channel = demo_msg->channel->method_obj; - if(recog_channel->audio_out) { - fclose(recog_channel->audio_out); - recog_channel->audio_out = NULL; - } - - mrcp_engine_channel_close_respond(demo_msg->channel); - break; - } - case DEMO_RECOG_MSG_REQUEST_PROCESS: - demo_recog_channel_request_dispatch(demo_msg->channel,demo_msg->request); - break; - default: - break; - } - return TRUE; -} diff --git a/libs/unimrcp/plugins/demo-synth/Makefile.am b/libs/unimrcp/plugins/demo-synth/Makefile.am deleted file mode 100644 index 4b62aef5939..00000000000 --- a/libs/unimrcp/plugins/demo-synth/Makefile.am +++ /dev/null @@ -1,8 +0,0 @@ -AM_CPPFLAGS = $(UNIMRCP_PLUGIN_INCLUDES) - -plugin_LTLIBRARIES = demosynth.la - -demosynth_la_SOURCES = src/demo_synth_engine.c -demosynth_la_LDFLAGS = $(UNIMRCP_PLUGIN_OPTS) - -include $(top_srcdir)/build/rules/uniplugin.am diff --git a/libs/unimrcp/plugins/demo-synth/demosynth.vcproj b/libs/unimrcp/plugins/demo-synth/demosynth.vcproj deleted file mode 100644 index 673fb07f30e..00000000000 --- a/libs/unimrcp/plugins/demo-synth/demosynth.vcproj +++ /dev/null @@ -1,296 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/libs/unimrcp/plugins/demo-synth/demosynth.vcxproj b/libs/unimrcp/plugins/demo-synth/demosynth.vcxproj deleted file mode 100644 index 4df06203cb1..00000000000 --- a/libs/unimrcp/plugins/demo-synth/demosynth.vcxproj +++ /dev/null @@ -1,123 +0,0 @@ - - - - - Debug - Win32 - - - Debug - x64 - - - Release - Win32 - - - Release - x64 - - - - {92BFA534-C419-4EB2-AAA3-510653F38F08} - demosynth - Win32Proj - - - - DynamicLibrary - Unicode - true - - - DynamicLibrary - Unicode - - - DynamicLibrary - Unicode - true - - - DynamicLibrary - Unicode - - - - - - - - - - - - - - - - - - - - - - - - - - - <_ProjectFileVersion>10.0.30319.1 - AllRules.ruleset - - - AllRules.ruleset - - - AllRules.ruleset - - - AllRules.ruleset - - - - - - include;%(AdditionalIncludeDirectories) - - - - - include;%(AdditionalIncludeDirectories) - - - - - X64 - - - include;%(AdditionalIncludeDirectories) - ProgramDatabase - - - - - X64 - - - include;%(AdditionalIncludeDirectories) - - - - - - - - {843425be-9a9a-44f4-a4e3-4b57d6abd53c} - false - - - - - - \ No newline at end of file diff --git a/libs/unimrcp/plugins/demo-synth/demosynth.vcxproj.filters b/libs/unimrcp/plugins/demo-synth/demosynth.vcxproj.filters deleted file mode 100644 index 1c71d5467de..00000000000 --- a/libs/unimrcp/plugins/demo-synth/demosynth.vcxproj.filters +++ /dev/null @@ -1,18 +0,0 @@ - - - - - {93995380-89BD-4b04-88EB-625FBE52EBFB} - h;hpp;hxx;hm;inl;inc;xsd - - - {c816d2c0-8f04-4474-ad43-cfac130a1a84} - cpp;c;cc;cxx;def;odl;idl;hpj;bat;asm;asmx - - - - - src - - - \ No newline at end of file diff --git a/libs/unimrcp/plugins/demo-synth/src/demo_synth_engine.c b/libs/unimrcp/plugins/demo-synth/src/demo_synth_engine.c deleted file mode 100644 index bc68c895fa3..00000000000 --- a/libs/unimrcp/plugins/demo-synth/src/demo_synth_engine.c +++ /dev/null @@ -1,557 +0,0 @@ -/* - * Copyright 2008-2014 Arsen Chaloyan - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - * - * $Id: demo_synth_engine.c 2136 2014-07-04 06:33:36Z achaloyan@gmail.com $ - */ - -/* - * Mandatory rules concerning plugin implementation. - * 1. Each plugin MUST implement a plugin/engine creator function - * with the exact signature and name (the main entry point) - * MRCP_PLUGIN_DECLARE(mrcp_engine_t*) mrcp_plugin_create(apr_pool_t *pool) - * 2. Each plugin MUST declare its version number - * MRCP_PLUGIN_VERSION_DECLARE - * 3. One and only one response MUST be sent back to the received request. - * 4. Methods (callbacks) of the MRCP engine channel MUST not block. - * (asynchronous response can be sent from the context of other thread) - * 5. Methods (callbacks) of the MPF engine stream MUST not block. - */ - -#include "mrcp_synth_engine.h" -#include "apt_consumer_task.h" -#include "apt_log.h" - -#define SYNTH_ENGINE_TASK_NAME "Demo Synth Engine" - -typedef struct demo_synth_engine_t demo_synth_engine_t; -typedef struct demo_synth_channel_t demo_synth_channel_t; -typedef struct demo_synth_msg_t demo_synth_msg_t; - -/** Declaration of synthesizer engine methods */ -static apt_bool_t demo_synth_engine_destroy(mrcp_engine_t *engine); -static apt_bool_t demo_synth_engine_open(mrcp_engine_t *engine); -static apt_bool_t demo_synth_engine_close(mrcp_engine_t *engine); -static mrcp_engine_channel_t* demo_synth_engine_channel_create(mrcp_engine_t *engine, apr_pool_t *pool); - -static const struct mrcp_engine_method_vtable_t engine_vtable = { - demo_synth_engine_destroy, - demo_synth_engine_open, - demo_synth_engine_close, - demo_synth_engine_channel_create -}; - - -/** Declaration of synthesizer channel methods */ -static apt_bool_t demo_synth_channel_destroy(mrcp_engine_channel_t *channel); -static apt_bool_t demo_synth_channel_open(mrcp_engine_channel_t *channel); -static apt_bool_t demo_synth_channel_close(mrcp_engine_channel_t *channel); -static apt_bool_t demo_synth_channel_request_process(mrcp_engine_channel_t *channel, mrcp_message_t *request); - -static const struct mrcp_engine_channel_method_vtable_t channel_vtable = { - demo_synth_channel_destroy, - demo_synth_channel_open, - demo_synth_channel_close, - demo_synth_channel_request_process -}; - -/** Declaration of synthesizer audio stream methods */ -static apt_bool_t demo_synth_stream_destroy(mpf_audio_stream_t *stream); -static apt_bool_t demo_synth_stream_open(mpf_audio_stream_t *stream, mpf_codec_t *codec); -static apt_bool_t demo_synth_stream_close(mpf_audio_stream_t *stream); -static apt_bool_t demo_synth_stream_read(mpf_audio_stream_t *stream, mpf_frame_t *frame); - -static const mpf_audio_stream_vtable_t audio_stream_vtable = { - demo_synth_stream_destroy, - demo_synth_stream_open, - demo_synth_stream_close, - demo_synth_stream_read, - NULL, - NULL, - NULL, - NULL -}; - -/** Declaration of demo synthesizer engine */ -struct demo_synth_engine_t { - apt_consumer_task_t *task; -}; - -/** Declaration of demo synthesizer channel */ -struct demo_synth_channel_t { - /** Back pointer to engine */ - demo_synth_engine_t *demo_engine; - /** Engine channel base */ - mrcp_engine_channel_t *channel; - - /** Active (in-progress) speak request */ - mrcp_message_t *speak_request; - /** Pending stop response */ - mrcp_message_t *stop_response; - /** Estimated time to complete */ - apr_size_t time_to_complete; - /** Is paused */ - apt_bool_t paused; - /** Speech source (used instead of actual synthesis) */ - FILE *audio_file; -}; - -typedef enum { - DEMO_SYNTH_MSG_OPEN_CHANNEL, - DEMO_SYNTH_MSG_CLOSE_CHANNEL, - DEMO_SYNTH_MSG_REQUEST_PROCESS -} demo_synth_msg_type_e; - -/** Declaration of demo synthesizer task message */ -struct demo_synth_msg_t { - demo_synth_msg_type_e type; - mrcp_engine_channel_t *channel; - mrcp_message_t *request; -}; - - -static apt_bool_t demo_synth_msg_signal(demo_synth_msg_type_e type, mrcp_engine_channel_t *channel, mrcp_message_t *request); -static apt_bool_t demo_synth_msg_process(apt_task_t *task, apt_task_msg_t *msg); - -/** Declare this macro to set plugin version */ -MRCP_PLUGIN_VERSION_DECLARE - -/** Declare this macro to use log routine of the server, plugin is loaded from */ -MRCP_PLUGIN_LOGGER_IMPLEMENT - -/** Create demo synthesizer engine */ -MRCP_PLUGIN_DECLARE(mrcp_engine_t*) mrcp_plugin_create(apr_pool_t *pool) -{ - /* create demo engine */ - demo_synth_engine_t *demo_engine = apr_palloc(pool,sizeof(demo_synth_engine_t)); - apt_task_t *task; - apt_task_vtable_t *vtable; - apt_task_msg_pool_t *msg_pool; - - /* create task/thread to run demo engine in the context of this task */ - msg_pool = apt_task_msg_pool_create_dynamic(sizeof(demo_synth_msg_t),pool); - demo_engine->task = apt_consumer_task_create(demo_engine,msg_pool,pool); - if(!demo_engine->task) { - return NULL; - } - task = apt_consumer_task_base_get(demo_engine->task); - apt_task_name_set(task,SYNTH_ENGINE_TASK_NAME); - vtable = apt_task_vtable_get(task); - if(vtable) { - vtable->process_msg = demo_synth_msg_process; - } - - /* create engine base */ - return mrcp_engine_create( - MRCP_SYNTHESIZER_RESOURCE, /* MRCP resource identifier */ - demo_engine, /* object to associate */ - &engine_vtable, /* virtual methods table of engine */ - pool); /* pool to allocate memory from */ -} - -/** Destroy synthesizer engine */ -static apt_bool_t demo_synth_engine_destroy(mrcp_engine_t *engine) -{ - demo_synth_engine_t *demo_engine = engine->obj; - if(demo_engine->task) { - apt_task_t *task = apt_consumer_task_base_get(demo_engine->task); - apt_task_destroy(task); - demo_engine->task = NULL; - } - return TRUE; -} - -/** Open synthesizer engine */ -static apt_bool_t demo_synth_engine_open(mrcp_engine_t *engine) -{ - demo_synth_engine_t *demo_engine = engine->obj; - if(demo_engine->task) { - apt_task_t *task = apt_consumer_task_base_get(demo_engine->task); - apt_task_start(task); - } - return mrcp_engine_open_respond(engine,TRUE); -} - -/** Close synthesizer engine */ -static apt_bool_t demo_synth_engine_close(mrcp_engine_t *engine) -{ - demo_synth_engine_t *demo_engine = engine->obj; - if(demo_engine->task) { - apt_task_t *task = apt_consumer_task_base_get(demo_engine->task); - apt_task_terminate(task,TRUE); - } - return mrcp_engine_close_respond(engine); -} - -/** Create demo synthesizer channel derived from engine channel base */ -static mrcp_engine_channel_t* demo_synth_engine_channel_create(mrcp_engine_t *engine, apr_pool_t *pool) -{ - mpf_stream_capabilities_t *capabilities; - mpf_termination_t *termination; - - /* create demo synth channel */ - demo_synth_channel_t *synth_channel = apr_palloc(pool,sizeof(demo_synth_channel_t)); - synth_channel->demo_engine = engine->obj; - synth_channel->speak_request = NULL; - synth_channel->stop_response = NULL; - synth_channel->time_to_complete = 0; - synth_channel->paused = FALSE; - synth_channel->audio_file = NULL; - - capabilities = mpf_source_stream_capabilities_create(pool); - mpf_codec_capabilities_add( - &capabilities->codecs, - MPF_SAMPLE_RATE_8000 | MPF_SAMPLE_RATE_16000, - "LPCM"); - - /* create media termination */ - termination = mrcp_engine_audio_termination_create( - synth_channel, /* object to associate */ - &audio_stream_vtable, /* virtual methods table of audio stream */ - capabilities, /* stream capabilities */ - pool); /* pool to allocate memory from */ - - /* create engine channel base */ - synth_channel->channel = mrcp_engine_channel_create( - engine, /* engine */ - &channel_vtable, /* virtual methods table of engine channel */ - synth_channel, /* object to associate */ - termination, /* associated media termination */ - pool); /* pool to allocate memory from */ - - return synth_channel->channel; -} - -/** Destroy engine channel */ -static apt_bool_t demo_synth_channel_destroy(mrcp_engine_channel_t *channel) -{ - /* nothing to destroy */ - return TRUE; -} - -/** Open engine channel (asynchronous response MUST be sent)*/ -static apt_bool_t demo_synth_channel_open(mrcp_engine_channel_t *channel) -{ - return demo_synth_msg_signal(DEMO_SYNTH_MSG_OPEN_CHANNEL,channel,NULL); -} - -/** Close engine channel (asynchronous response MUST be sent)*/ -static apt_bool_t demo_synth_channel_close(mrcp_engine_channel_t *channel) -{ - return demo_synth_msg_signal(DEMO_SYNTH_MSG_CLOSE_CHANNEL,channel,NULL); -} - -/** Process MRCP channel request (asynchronous response MUST be sent)*/ -static apt_bool_t demo_synth_channel_request_process(mrcp_engine_channel_t *channel, mrcp_message_t *request) -{ - return demo_synth_msg_signal(DEMO_SYNTH_MSG_REQUEST_PROCESS,channel,request); -} - -/** Process SPEAK request */ -static apt_bool_t demo_synth_channel_speak(mrcp_engine_channel_t *channel, mrcp_message_t *request, mrcp_message_t *response) -{ - char *file_path = NULL; - demo_synth_channel_t *synth_channel = channel->method_obj; - const mpf_codec_descriptor_t *descriptor = mrcp_engine_source_stream_codec_get(channel); - - if(!descriptor) { - apt_log(APT_LOG_MARK,APT_PRIO_WARNING,"Failed to Get Codec Descriptor "APT_SIDRES_FMT, MRCP_MESSAGE_SIDRES(request)); - response->start_line.status_code = MRCP_STATUS_CODE_METHOD_FAILED; - return FALSE; - } - - synth_channel->time_to_complete = 0; - if(channel->engine) { - char *file_name = apr_psprintf(channel->pool,"demo-%dkHz.pcm",descriptor->sampling_rate/1000); - file_path = apt_datadir_filepath_get(channel->engine->dir_layout,file_name,channel->pool); - } - if(file_path) { - synth_channel->audio_file = fopen(file_path,"rb"); - if(synth_channel->audio_file) { - apt_log(APT_LOG_MARK,APT_PRIO_INFO,"Set [%s] as Speech Source "APT_SIDRES_FMT, - file_path, - MRCP_MESSAGE_SIDRES(request)); - } - else { - apt_log(APT_LOG_MARK,APT_PRIO_INFO,"No Speech Source [%s] Found "APT_SIDRES_FMT, - file_path, - MRCP_MESSAGE_SIDRES(request)); - /* calculate estimated time to complete */ - if(mrcp_generic_header_property_check(request,GENERIC_HEADER_CONTENT_LENGTH) == TRUE) { - mrcp_generic_header_t *generic_header = mrcp_generic_header_get(request); - if(generic_header) { - synth_channel->time_to_complete = generic_header->content_length * 10; /* 10 msec per character */ - } - } - } - } - - response->start_line.request_state = MRCP_REQUEST_STATE_INPROGRESS; - /* send asynchronous response */ - mrcp_engine_channel_message_send(channel,response); - synth_channel->speak_request = request; - return TRUE; -} - -/** Process STOP request */ -static apt_bool_t demo_synth_channel_stop(mrcp_engine_channel_t *channel, mrcp_message_t *request, mrcp_message_t *response) -{ - demo_synth_channel_t *synth_channel = channel->method_obj; - /* store the request, make sure there is no more activity and only then send the response */ - synth_channel->stop_response = response; - return TRUE; -} - -/** Process PAUSE request */ -static apt_bool_t demo_synth_channel_pause(mrcp_engine_channel_t *channel, mrcp_message_t *request, mrcp_message_t *response) -{ - demo_synth_channel_t *synth_channel = channel->method_obj; - synth_channel->paused = TRUE; - /* send asynchronous response */ - mrcp_engine_channel_message_send(channel,response); - return TRUE; -} - -/** Process RESUME request */ -static apt_bool_t demo_synth_channel_resume(mrcp_engine_channel_t *channel, mrcp_message_t *request, mrcp_message_t *response) -{ - demo_synth_channel_t *synth_channel = channel->method_obj; - synth_channel->paused = FALSE; - /* send asynchronous response */ - mrcp_engine_channel_message_send(channel,response); - return TRUE; -} - -/** Process SET-PARAMS request */ -static apt_bool_t demo_synth_channel_set_params(mrcp_engine_channel_t *channel, mrcp_message_t *request, mrcp_message_t *response) -{ - mrcp_synth_header_t *req_synth_header; - /* get synthesizer header */ - req_synth_header = mrcp_resource_header_get(request); - if(req_synth_header) { - /* check voice age header */ - if(mrcp_resource_header_property_check(request,SYNTHESIZER_HEADER_VOICE_AGE) == TRUE) { - apt_log(APT_LOG_MARK,APT_PRIO_INFO,"Set Voice Age [%"APR_SIZE_T_FMT"]", - req_synth_header->voice_param.age); - } - /* check voice name header */ - if(mrcp_resource_header_property_check(request,SYNTHESIZER_HEADER_VOICE_NAME) == TRUE) { - apt_log(APT_LOG_MARK,APT_PRIO_INFO,"Set Voice Name [%s]", - req_synth_header->voice_param.name.buf); - } - } - - /* send asynchronous response */ - mrcp_engine_channel_message_send(channel,response); - return TRUE; -} - -/** Process GET-PARAMS request */ -static apt_bool_t demo_synth_channel_get_params(mrcp_engine_channel_t *channel, mrcp_message_t *request, mrcp_message_t *response) -{ - mrcp_synth_header_t *req_synth_header; - /* get synthesizer header */ - req_synth_header = mrcp_resource_header_get(request); - if(req_synth_header) { - mrcp_synth_header_t *res_synth_header = mrcp_resource_header_prepare(response); - /* check voice age header */ - if(mrcp_resource_header_property_check(request,SYNTHESIZER_HEADER_VOICE_AGE) == TRUE) { - res_synth_header->voice_param.age = 25; - mrcp_resource_header_property_add(response,SYNTHESIZER_HEADER_VOICE_AGE); - } - /* check voice name header */ - if(mrcp_resource_header_property_check(request,SYNTHESIZER_HEADER_VOICE_NAME) == TRUE) { - apt_string_set(&res_synth_header->voice_param.name,"David"); - mrcp_resource_header_property_add(response,SYNTHESIZER_HEADER_VOICE_NAME); - } - } - - /* send asynchronous response */ - mrcp_engine_channel_message_send(channel,response); - return TRUE; -} - -/** Dispatch MRCP request */ -static apt_bool_t demo_synth_channel_request_dispatch(mrcp_engine_channel_t *channel, mrcp_message_t *request) -{ - apt_bool_t processed = FALSE; - mrcp_message_t *response = mrcp_response_create(request,request->pool); - switch(request->start_line.method_id) { - case SYNTHESIZER_SET_PARAMS: - processed = demo_synth_channel_set_params(channel,request,response); - break; - case SYNTHESIZER_GET_PARAMS: - processed = demo_synth_channel_get_params(channel,request,response); - break; - case SYNTHESIZER_SPEAK: - processed = demo_synth_channel_speak(channel,request,response); - break; - case SYNTHESIZER_STOP: - processed = demo_synth_channel_stop(channel,request,response); - break; - case SYNTHESIZER_PAUSE: - processed = demo_synth_channel_pause(channel,request,response); - break; - case SYNTHESIZER_RESUME: - processed = demo_synth_channel_resume(channel,request,response); - break; - case SYNTHESIZER_BARGE_IN_OCCURRED: - processed = demo_synth_channel_stop(channel,request,response); - break; - case SYNTHESIZER_CONTROL: - break; - case SYNTHESIZER_DEFINE_LEXICON: - break; - default: - break; - } - if(processed == FALSE) { - /* send asynchronous response for not handled request */ - mrcp_engine_channel_message_send(channel,response); - } - return TRUE; -} - -/** Callback is called from MPF engine context to destroy any additional data associated with audio stream */ -static apt_bool_t demo_synth_stream_destroy(mpf_audio_stream_t *stream) -{ - return TRUE; -} - -/** Callback is called from MPF engine context to perform any action before open */ -static apt_bool_t demo_synth_stream_open(mpf_audio_stream_t *stream, mpf_codec_t *codec) -{ - return TRUE; -} - -/** Callback is called from MPF engine context to perform any action after close */ -static apt_bool_t demo_synth_stream_close(mpf_audio_stream_t *stream) -{ - return TRUE; -} - -/** Callback is called from MPF engine context to read/get new frame */ -static apt_bool_t demo_synth_stream_read(mpf_audio_stream_t *stream, mpf_frame_t *frame) -{ - demo_synth_channel_t *synth_channel = stream->obj; - /* check if STOP was requested */ - if(synth_channel->stop_response) { - /* send asynchronous response to STOP request */ - mrcp_engine_channel_message_send(synth_channel->channel,synth_channel->stop_response); - synth_channel->stop_response = NULL; - synth_channel->speak_request = NULL; - synth_channel->paused = FALSE; - if(synth_channel->audio_file) { - fclose(synth_channel->audio_file); - synth_channel->audio_file = NULL; - } - return TRUE; - } - - /* check if there is active SPEAK request and it isn't in paused state */ - if(synth_channel->speak_request && synth_channel->paused == FALSE) { - /* normal processing */ - apt_bool_t completed = FALSE; - if(synth_channel->audio_file) { - /* read speech from file */ - apr_size_t size = frame->codec_frame.size; - if(fread(frame->codec_frame.buffer,1,size,synth_channel->audio_file) == size) { - frame->type |= MEDIA_FRAME_TYPE_AUDIO; - } - else { - completed = TRUE; - } - } - else { - /* fill with silence in case no file available */ - if(synth_channel->time_to_complete >= CODEC_FRAME_TIME_BASE) { - memset(frame->codec_frame.buffer,0,frame->codec_frame.size); - frame->type |= MEDIA_FRAME_TYPE_AUDIO; - synth_channel->time_to_complete -= CODEC_FRAME_TIME_BASE; - } - else { - completed = TRUE; - } - } - - if(completed) { - /* raise SPEAK-COMPLETE event */ - mrcp_message_t *message = mrcp_event_create( - synth_channel->speak_request, - SYNTHESIZER_SPEAK_COMPLETE, - synth_channel->speak_request->pool); - if(message) { - /* get/allocate synthesizer header */ - mrcp_synth_header_t *synth_header = mrcp_resource_header_prepare(message); - if(synth_header) { - /* set completion cause */ - synth_header->completion_cause = SYNTHESIZER_COMPLETION_CAUSE_NORMAL; - mrcp_resource_header_property_add(message,SYNTHESIZER_HEADER_COMPLETION_CAUSE); - } - /* set request state */ - message->start_line.request_state = MRCP_REQUEST_STATE_COMPLETE; - - synth_channel->speak_request = NULL; - if(synth_channel->audio_file) { - fclose(synth_channel->audio_file); - synth_channel->audio_file = NULL; - } - /* send asynch event */ - mrcp_engine_channel_message_send(synth_channel->channel,message); - } - } - } - return TRUE; -} - -static apt_bool_t demo_synth_msg_signal(demo_synth_msg_type_e type, mrcp_engine_channel_t *channel, mrcp_message_t *request) -{ - apt_bool_t status = FALSE; - demo_synth_channel_t *demo_channel = channel->method_obj; - demo_synth_engine_t *demo_engine = demo_channel->demo_engine; - apt_task_t *task = apt_consumer_task_base_get(demo_engine->task); - apt_task_msg_t *msg = apt_task_msg_get(task); - if(msg) { - demo_synth_msg_t *demo_msg; - msg->type = TASK_MSG_USER; - demo_msg = (demo_synth_msg_t*) msg->data; - - demo_msg->type = type; - demo_msg->channel = channel; - demo_msg->request = request; - status = apt_task_msg_signal(task,msg); - } - return status; -} - -static apt_bool_t demo_synth_msg_process(apt_task_t *task, apt_task_msg_t *msg) -{ - demo_synth_msg_t *demo_msg = (demo_synth_msg_t*)msg->data; - switch(demo_msg->type) { - case DEMO_SYNTH_MSG_OPEN_CHANNEL: - /* open channel and send asynch response */ - mrcp_engine_channel_open_respond(demo_msg->channel,TRUE); - break; - case DEMO_SYNTH_MSG_CLOSE_CHANNEL: - /* close channel, make sure there is no activity and send asynch response */ - mrcp_engine_channel_close_respond(demo_msg->channel); - break; - case DEMO_SYNTH_MSG_REQUEST_PROCESS: - demo_synth_channel_request_dispatch(demo_msg->channel,demo_msg->request); - break; - default: - break; - } - return TRUE; -} diff --git a/libs/unimrcp/plugins/demo-verifier/Makefile.am b/libs/unimrcp/plugins/demo-verifier/Makefile.am deleted file mode 100644 index 9da71c10246..00000000000 --- a/libs/unimrcp/plugins/demo-verifier/Makefile.am +++ /dev/null @@ -1,8 +0,0 @@ -AM_CPPFLAGS = $(UNIMRCP_PLUGIN_INCLUDES) - -plugin_LTLIBRARIES = demoverifier.la - -demoverifier_la_SOURCES = src/demo_verifier_engine.c -demoverifier_la_LDFLAGS = $(UNIMRCP_PLUGIN_OPTS) - -include $(top_srcdir)/build/rules/uniplugin.am diff --git a/libs/unimrcp/plugins/demo-verifier/demoverifier.vcproj b/libs/unimrcp/plugins/demo-verifier/demoverifier.vcproj deleted file mode 100644 index efe5f79423c..00000000000 --- a/libs/unimrcp/plugins/demo-verifier/demoverifier.vcproj +++ /dev/null @@ -1,296 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/libs/unimrcp/plugins/demo-verifier/demoverifier.vcxproj b/libs/unimrcp/plugins/demo-verifier/demoverifier.vcxproj deleted file mode 100644 index 6dfd17cd6bd..00000000000 --- a/libs/unimrcp/plugins/demo-verifier/demoverifier.vcxproj +++ /dev/null @@ -1,123 +0,0 @@ - - - - - Debug - Win32 - - - Debug - x64 - - - Release - Win32 - - - Release - x64 - - - - {F7563CAD-5C95-46E5-89B7-0953C6C6E746} - demoverifier - Win32Proj - - - - DynamicLibrary - Unicode - true - - - DynamicLibrary - Unicode - - - DynamicLibrary - Unicode - true - - - DynamicLibrary - Unicode - - - - - - - - - - - - - - - - - - - - - - - - - - - <_ProjectFileVersion>10.0.30319.1 - AllRules.ruleset - - - AllRules.ruleset - - - AllRules.ruleset - - - AllRules.ruleset - - - - - - include;%(AdditionalIncludeDirectories) - - - - - include;%(AdditionalIncludeDirectories) - - - - - X64 - - - include;%(AdditionalIncludeDirectories) - ProgramDatabase - - - - - X64 - - - include;%(AdditionalIncludeDirectories) - - - - - - - - {843425be-9a9a-44f4-a4e3-4b57d6abd53c} - false - - - - - - \ No newline at end of file diff --git a/libs/unimrcp/plugins/demo-verifier/demoverifier.vcxproj.filters b/libs/unimrcp/plugins/demo-verifier/demoverifier.vcxproj.filters deleted file mode 100644 index afd5da4d9fe..00000000000 --- a/libs/unimrcp/plugins/demo-verifier/demoverifier.vcxproj.filters +++ /dev/null @@ -1,18 +0,0 @@ - - - - - {93995380-89BD-4b04-88EB-625FBE52EBFB} - h;hpp;hxx;hm;inl;inc;xsd - - - {42255732-d637-4aef-ab75-104eb723ff72} - cpp;c;cc;cxx;def;odl;idl;hpj;bat;asm;asmx - - - - - src - - - \ No newline at end of file diff --git a/libs/unimrcp/plugins/demo-verifier/src/demo_verifier_engine.c b/libs/unimrcp/plugins/demo-verifier/src/demo_verifier_engine.c deleted file mode 100644 index 6e3d290d36b..00000000000 --- a/libs/unimrcp/plugins/demo-verifier/src/demo_verifier_engine.c +++ /dev/null @@ -1,589 +0,0 @@ -/* - * Copyright 2008-2014 Arsen Chaloyan - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - * - * $Id: demo_verifier_engine.c 2193 2014-10-08 03:44:33Z achaloyan@gmail.com $ - */ - -/* - * Mandatory rules concerning plugin implementation. - * 1. Each plugin MUST implement a plugin/engine creator function - * with the exact signature and name (the main entry point) - * MRCP_PLUGIN_DECLARE(mrcp_engine_t*) mrcp_plugin_create(apr_pool_t *pool) - * 2. Each plugin MUST declare its version number - * MRCP_PLUGIN_VERSION_DECLARE - * 3. One and only one response MUST be sent back to the received request. - * 4. Methods (callbacks) of the MRCP engine channel MUST not block. - * (asynchronous response can be sent from the context of other thread) - * 5. Methods (callbacks) of the MPF engine stream MUST not block. - */ - -#include "mrcp_verifier_engine.h" -#include "mpf_activity_detector.h" -#include "apt_consumer_task.h" -#include "apt_log.h" - -#define VERIFIER_ENGINE_TASK_NAME "Demo Verifier Engine" - -typedef struct demo_verifier_engine_t demo_verifier_engine_t; -typedef struct demo_verifier_channel_t demo_verifier_channel_t; -typedef struct demo_verifier_msg_t demo_verifier_msg_t; - -/** Declaration of verification engine methods */ -static apt_bool_t demo_verifier_engine_destroy(mrcp_engine_t *engine); -static apt_bool_t demo_verifier_engine_open(mrcp_engine_t *engine); -static apt_bool_t demo_verifier_engine_close(mrcp_engine_t *engine); -static mrcp_engine_channel_t* demo_verifier_engine_channel_create(mrcp_engine_t *engine, apr_pool_t *pool); - -static const struct mrcp_engine_method_vtable_t engine_vtable = { - demo_verifier_engine_destroy, - demo_verifier_engine_open, - demo_verifier_engine_close, - demo_verifier_engine_channel_create -}; - - -/** Declaration of verification channel methods */ -static apt_bool_t demo_verifier_channel_destroy(mrcp_engine_channel_t *channel); -static apt_bool_t demo_verifier_channel_open(mrcp_engine_channel_t *channel); -static apt_bool_t demo_verifier_channel_close(mrcp_engine_channel_t *channel); -static apt_bool_t demo_verifier_channel_request_process(mrcp_engine_channel_t *channel, mrcp_message_t *request); - -static const struct mrcp_engine_channel_method_vtable_t channel_vtable = { - demo_verifier_channel_destroy, - demo_verifier_channel_open, - demo_verifier_channel_close, - demo_verifier_channel_request_process -}; - -/** Declaration of verification audio stream methods */ -static apt_bool_t demo_verifier_stream_destroy(mpf_audio_stream_t *stream); -static apt_bool_t demo_verifier_stream_open(mpf_audio_stream_t *stream, mpf_codec_t *codec); -static apt_bool_t demo_verifier_stream_close(mpf_audio_stream_t *stream); -static apt_bool_t demo_verifier_stream_write(mpf_audio_stream_t *stream, const mpf_frame_t *frame); - -static const mpf_audio_stream_vtable_t audio_stream_vtable = { - demo_verifier_stream_destroy, - NULL, - NULL, - NULL, - demo_verifier_stream_open, - demo_verifier_stream_close, - demo_verifier_stream_write, - NULL -}; - -/** Declaration of demo verification engine */ -struct demo_verifier_engine_t { - apt_consumer_task_t *task; -}; - -/** Declaration of demo verification channel */ -struct demo_verifier_channel_t { - /** Back pointer to engine */ - demo_verifier_engine_t *demo_engine; - /** Engine channel base */ - mrcp_engine_channel_t *channel; - - /** Active (in-progress) verification request */ - mrcp_message_t *verifier_request; - /** Pending stop response */ - mrcp_message_t *stop_response; - /** Indicates whether input timers are started */ - apt_bool_t timers_started; - /** Voice activity detector */ - mpf_activity_detector_t *detector; - /** File to write voiceprint to */ - FILE *audio_out; -}; - -typedef enum { - DEMO_VERIF_MSG_OPEN_CHANNEL, - DEMO_VERIF_MSG_CLOSE_CHANNEL, - DEMO_VERIF_MSG_REQUEST_PROCESS -} demo_verifier_msg_type_e; - -/** Declaration of demo verification task message */ -struct demo_verifier_msg_t { - demo_verifier_msg_type_e type; - mrcp_engine_channel_t *channel; - mrcp_message_t *request; -}; - -static apt_bool_t demo_verifier_msg_signal(demo_verifier_msg_type_e type, mrcp_engine_channel_t *channel, mrcp_message_t *request); -static apt_bool_t demo_verifier_msg_process(apt_task_t *task, apt_task_msg_t *msg); - -static apt_bool_t demo_verifier_result_load(demo_verifier_channel_t *verifier_channel, mrcp_message_t *message); - -/** Declare this macro to set plugin version */ -MRCP_PLUGIN_VERSION_DECLARE - -/** Declare this macro to use log routine of the server, plugin is loaded from */ -MRCP_PLUGIN_LOGGER_IMPLEMENT - -/** Create demo verification engine */ -MRCP_PLUGIN_DECLARE(mrcp_engine_t*) mrcp_plugin_create(apr_pool_t *pool) -{ - demo_verifier_engine_t *demo_engine = apr_palloc(pool,sizeof(demo_verifier_engine_t)); - apt_task_t *task; - apt_task_vtable_t *vtable; - apt_task_msg_pool_t *msg_pool; - - msg_pool = apt_task_msg_pool_create_dynamic(sizeof(demo_verifier_msg_t),pool); - demo_engine->task = apt_consumer_task_create(demo_engine,msg_pool,pool); - if(!demo_engine->task) { - return NULL; - } - task = apt_consumer_task_base_get(demo_engine->task); - apt_task_name_set(task,VERIFIER_ENGINE_TASK_NAME); - vtable = apt_task_vtable_get(task); - if(vtable) { - vtable->process_msg = demo_verifier_msg_process; - } - - /* create engine base */ - return mrcp_engine_create( - MRCP_VERIFIER_RESOURCE, /* MRCP resource identifier */ - demo_engine, /* object to associate */ - &engine_vtable, /* virtual methods table of engine */ - pool); /* pool to allocate memory from */ -} - -/** Destroy verification engine */ -static apt_bool_t demo_verifier_engine_destroy(mrcp_engine_t *engine) -{ - demo_verifier_engine_t *demo_engine = engine->obj; - if(demo_engine->task) { - apt_task_t *task = apt_consumer_task_base_get(demo_engine->task); - apt_task_destroy(task); - demo_engine->task = NULL; - } - return TRUE; -} - -/** Open verification engine */ -static apt_bool_t demo_verifier_engine_open(mrcp_engine_t *engine) -{ - demo_verifier_engine_t *demo_engine = engine->obj; - if(demo_engine->task) { - apt_task_t *task = apt_consumer_task_base_get(demo_engine->task); - apt_task_start(task); - } - return mrcp_engine_open_respond(engine,TRUE); -} - -/** Close verification engine */ -static apt_bool_t demo_verifier_engine_close(mrcp_engine_t *engine) -{ - demo_verifier_engine_t *demo_engine = engine->obj; - if(demo_engine->task) { - apt_task_t *task = apt_consumer_task_base_get(demo_engine->task); - apt_task_terminate(task,TRUE); - } - return mrcp_engine_close_respond(engine); -} - -static mrcp_engine_channel_t* demo_verifier_engine_channel_create(mrcp_engine_t *engine, apr_pool_t *pool) -{ - mpf_stream_capabilities_t *capabilities; - mpf_termination_t *termination; - - /* create demo verification channel */ - demo_verifier_channel_t *verifier_channel = apr_palloc(pool,sizeof(demo_verifier_channel_t)); - verifier_channel->demo_engine = engine->obj; - verifier_channel->verifier_request = NULL; - verifier_channel->stop_response = NULL; - verifier_channel->detector = mpf_activity_detector_create(pool); - verifier_channel->audio_out = NULL; - - capabilities = mpf_sink_stream_capabilities_create(pool); - mpf_codec_capabilities_add( - &capabilities->codecs, - MPF_SAMPLE_RATE_8000 | MPF_SAMPLE_RATE_16000, - "LPCM"); - - /* create media termination */ - termination = mrcp_engine_audio_termination_create( - verifier_channel, /* object to associate */ - &audio_stream_vtable, /* virtual methods table of audio stream */ - capabilities, /* stream capabilities */ - pool); /* pool to allocate memory from */ - - /* create engine channel base */ - verifier_channel->channel = mrcp_engine_channel_create( - engine, /* engine */ - &channel_vtable, /* virtual methods table of engine channel */ - verifier_channel, /* object to associate */ - termination, /* associated media termination */ - pool); /* pool to allocate memory from */ - - return verifier_channel->channel; -} - -/** Destroy engine channel */ -static apt_bool_t demo_verifier_channel_destroy(mrcp_engine_channel_t *channel) -{ - /* nothing to destrtoy */ - return TRUE; -} - -/** Open engine channel (asynchronous response MUST be sent)*/ -static apt_bool_t demo_verifier_channel_open(mrcp_engine_channel_t *channel) -{ - return demo_verifier_msg_signal(DEMO_VERIF_MSG_OPEN_CHANNEL,channel,NULL); -} - -/** Close engine channel (asynchronous response MUST be sent)*/ -static apt_bool_t demo_verifier_channel_close(mrcp_engine_channel_t *channel) -{ - return demo_verifier_msg_signal(DEMO_VERIF_MSG_CLOSE_CHANNEL,channel,NULL); -} - -/** Process MRCP channel request (asynchronous response MUST be sent)*/ -static apt_bool_t demo_verifier_channel_request_process(mrcp_engine_channel_t *channel, mrcp_message_t *request) -{ - return demo_verifier_msg_signal(DEMO_VERIF_MSG_REQUEST_PROCESS,channel,request); -} - -/** Process VERIFY request */ -static apt_bool_t demo_verifier_channel_verify(mrcp_engine_channel_t *channel, mrcp_message_t *request, mrcp_message_t *response) -{ - /* process verify request */ - mrcp_verifier_header_t *verifier_header; - demo_verifier_channel_t *verifier_channel = channel->method_obj; - const mpf_codec_descriptor_t *descriptor = mrcp_engine_sink_stream_codec_get(channel); - - if(!descriptor) { - apt_log(APT_LOG_MARK,APT_PRIO_WARNING,"Failed to Get Codec Descriptor "APT_SIDRES_FMT, MRCP_MESSAGE_SIDRES(request)); - response->start_line.status_code = MRCP_STATUS_CODE_METHOD_FAILED; - return FALSE; - } - - verifier_channel->timers_started = TRUE; - - /* get verifier header */ - verifier_header = mrcp_resource_header_get(request); - if(verifier_header) { - if(mrcp_resource_header_property_check(request,VERIFIER_HEADER_START_INPUT_TIMERS) == TRUE) { - verifier_channel->timers_started = verifier_header->start_input_timers; - } - if(mrcp_resource_header_property_check(request,VERIFIER_HEADER_NO_INPUT_TIMEOUT) == TRUE) { - mpf_activity_detector_noinput_timeout_set(verifier_channel->detector,verifier_header->no_input_timeout); - } - if(mrcp_resource_header_property_check(request,VERIFIER_HEADER_SPEECH_COMPLETE_TIMEOUT) == TRUE) { - mpf_activity_detector_silence_timeout_set(verifier_channel->detector,verifier_header->speech_complete_timeout); - } - } - - if(!verifier_channel->audio_out) { - const apt_dir_layout_t *dir_layout = channel->engine->dir_layout; - char *file_name = apr_psprintf(channel->pool,"voiceprint-%dkHz-%s.pcm", - descriptor->sampling_rate/1000, - request->channel_id.session_id.buf); - char *file_path = apt_vardir_filepath_get(dir_layout,file_name,channel->pool); - if(file_path) { - apt_log(APT_LOG_MARK,APT_PRIO_INFO,"Open Utterance Output File [%s] for Writing",file_path); - verifier_channel->audio_out = fopen(file_path,"wb"); - if(!verifier_channel->audio_out) { - apt_log(APT_LOG_MARK,APT_PRIO_WARNING,"Failed to Open Utterance Output File [%s] for Writing",file_path); - } - } - } - - response->start_line.request_state = MRCP_REQUEST_STATE_INPROGRESS; - /* send asynchronous response */ - mrcp_engine_channel_message_send(channel,response); - verifier_channel->verifier_request = request; - return TRUE; -} - -/** Process STOP request */ -static apt_bool_t demo_verifier_channel_stop(mrcp_engine_channel_t *channel, mrcp_message_t *request, mrcp_message_t *response) -{ - /* process STOP request */ - demo_verifier_channel_t *verifier_channel = channel->method_obj; - /* store STOP request, make sure there is no more activity and only then send the response */ - verifier_channel->stop_response = response; - return TRUE; -} - -/** Process START-INPUT-TIMERS request */ -static apt_bool_t demo_verifier_channel_timers_start(mrcp_engine_channel_t *channel, mrcp_message_t *request, mrcp_message_t *response) -{ - demo_verifier_channel_t *verifier_channel = channel->method_obj; - verifier_channel->timers_started = TRUE; - return mrcp_engine_channel_message_send(channel,response); -} - -/** Process GET-INTERMEDIATE-RESULT request */ -static apt_bool_t demo_verifier_channel_get_result(mrcp_engine_channel_t *channel, mrcp_message_t *request, mrcp_message_t *response) -{ - demo_verifier_channel_t *verifier_channel = channel->method_obj; - demo_verifier_result_load(verifier_channel,response); - return mrcp_engine_channel_message_send(channel,response); -} - - -/** Dispatch MRCP request */ -static apt_bool_t demo_verifier_channel_request_dispatch(mrcp_engine_channel_t *channel, mrcp_message_t *request) -{ - apt_bool_t processed = FALSE; - mrcp_message_t *response = mrcp_response_create(request,request->pool); - switch(request->start_line.method_id) { - case VERIFIER_SET_PARAMS: - break; - case VERIFIER_GET_PARAMS: - break; - case VERIFIER_START_SESSION: - break; - case VERIFIER_END_SESSION: - break; - case VERIFIER_QUERY_VOICEPRINT: - break; - case VERIFIER_DELETE_VOICEPRINT: - break; - case VERIFIER_VERIFY: - processed = demo_verifier_channel_verify(channel,request,response); - break; - case VERIFIER_VERIFY_FROM_BUFFER: - break; - case VERIFIER_VERIFY_ROLLBACK: - break; - case VERIFIER_STOP: - processed = demo_verifier_channel_stop(channel,request,response); - break; - case VERIFIER_CLEAR_BUFFER: - break; - case VERIFIER_START_INPUT_TIMERS: - processed = demo_verifier_channel_timers_start(channel,request,response); - break; - case VERIFIER_GET_INTERMIDIATE_RESULT: - processed = demo_verifier_channel_get_result(channel,request,response); - break; - - default: - break; - } - if(processed == FALSE) { - /* send asynchronous response for not handled request */ - mrcp_engine_channel_message_send(channel,response); - } - return TRUE; -} - -/** Callback is called from MPF engine context to destroy any additional data associated with audio stream */ -static apt_bool_t demo_verifier_stream_destroy(mpf_audio_stream_t *stream) -{ - return TRUE; -} - -/** Callback is called from MPF engine context to perform any action before open */ -static apt_bool_t demo_verifier_stream_open(mpf_audio_stream_t *stream, mpf_codec_t *codec) -{ - return TRUE; -} - -/** Callback is called from MPF engine context to perform any action after close */ -static apt_bool_t demo_verifier_stream_close(mpf_audio_stream_t *stream) -{ - return TRUE; -} - -/* Raise demo START-OF-INPUT event */ -static apt_bool_t demo_verifier_start_of_input(demo_verifier_channel_t *verifier_channel) -{ - /* create START-OF-INPUT event */ - mrcp_message_t *message = mrcp_event_create( - verifier_channel->verifier_request, - VERIFIER_START_OF_INPUT, - verifier_channel->verifier_request->pool); - if(!message) { - return FALSE; - } - - /* set request state */ - message->start_line.request_state = MRCP_REQUEST_STATE_INPROGRESS; - /* send asynch event */ - return mrcp_engine_channel_message_send(verifier_channel->channel,message); -} - -/* Load demo verification result */ -static apt_bool_t demo_verifier_result_load(demo_verifier_channel_t *verifier_channel, mrcp_message_t *message) -{ - FILE *file; - mrcp_engine_channel_t *channel = verifier_channel->channel; - const apt_dir_layout_t *dir_layout = channel->engine->dir_layout; - char *file_path = apt_datadir_filepath_get(dir_layout,"result-verification.xml",message->pool); - if(!file_path) { - return FALSE; - } - - /* read the demo result from file */ - file = fopen(file_path,"r"); - if(file) { - mrcp_generic_header_t *generic_header; - char text[1024]; - apr_size_t size; - size = fread(text,1,sizeof(text),file); - apt_string_assign_n(&message->body,text,size,message->pool); - fclose(file); - - /* get/allocate generic header */ - generic_header = mrcp_generic_header_prepare(message); - if(generic_header) { - /* set content types */ - apt_string_assign(&generic_header->content_type,"application/nlsml+xml",message->pool); - mrcp_generic_header_property_add(message,GENERIC_HEADER_CONTENT_TYPE); - } - } - return TRUE; -} - -/* Raise demo VERIFICATION-COMPLETE event */ -static apt_bool_t demo_verifier_verification_complete(demo_verifier_channel_t *verifier_channel, mrcp_verifier_completion_cause_e cause) -{ - mrcp_verifier_header_t *verifier_header; - /* create VERIFICATION-COMPLETE event */ - mrcp_message_t *message = mrcp_event_create( - verifier_channel->verifier_request, - VERIFIER_VERIFICATION_COMPLETE, - verifier_channel->verifier_request->pool); - if(!message) { - return FALSE; - } - - /* get/allocate verifier header */ - verifier_header = mrcp_resource_header_prepare(message); - if(verifier_header) { - /* set completion cause */ - verifier_header->completion_cause = cause; - mrcp_resource_header_property_add(message,VERIFIER_HEADER_COMPLETION_CAUSE); - } - /* set request state */ - message->start_line.request_state = MRCP_REQUEST_STATE_COMPLETE; - - if(cause == VERIFIER_COMPLETION_CAUSE_SUCCESS) { - demo_verifier_result_load(verifier_channel,message); - } - - verifier_channel->verifier_request = NULL; - /* send asynch event */ - return mrcp_engine_channel_message_send(verifier_channel->channel,message); -} - -/** Callback is called from MPF engine context to write/send new frame */ -static apt_bool_t demo_verifier_stream_write(mpf_audio_stream_t *stream, const mpf_frame_t *frame) -{ - demo_verifier_channel_t *verifier_channel = stream->obj; - if(verifier_channel->stop_response) { - /* send asynchronous response to STOP request */ - mrcp_engine_channel_message_send(verifier_channel->channel,verifier_channel->stop_response); - verifier_channel->stop_response = NULL; - verifier_channel->verifier_request = NULL; - return TRUE; - } - - if(verifier_channel->verifier_request) { - mpf_detector_event_e det_event = mpf_activity_detector_process(verifier_channel->detector,frame); - switch(det_event) { - case MPF_DETECTOR_EVENT_ACTIVITY: - apt_log(APT_LOG_MARK,APT_PRIO_INFO,"Detected Voice Activity "APT_SIDRES_FMT, - MRCP_MESSAGE_SIDRES(verifier_channel->verifier_request)); - demo_verifier_start_of_input(verifier_channel); - break; - case MPF_DETECTOR_EVENT_INACTIVITY: - apt_log(APT_LOG_MARK,APT_PRIO_INFO,"Detected Voice Inactivity "APT_SIDRES_FMT, - MRCP_MESSAGE_SIDRES(verifier_channel->verifier_request)); - demo_verifier_verification_complete(verifier_channel,VERIFIER_COMPLETION_CAUSE_SUCCESS); - break; - case MPF_DETECTOR_EVENT_NOINPUT: - apt_log(APT_LOG_MARK,APT_PRIO_INFO,"Detected Noinput "APT_SIDRES_FMT, - MRCP_MESSAGE_SIDRES(verifier_channel->verifier_request)); - if(verifier_channel->timers_started == TRUE) { - demo_verifier_verification_complete(verifier_channel,VERIFIER_COMPLETION_CAUSE_NO_INPUT_TIMEOUT); - } - break; - default: - break; - } - - if((frame->type & MEDIA_FRAME_TYPE_EVENT) == MEDIA_FRAME_TYPE_EVENT) { - if(frame->marker == MPF_MARKER_START_OF_EVENT) { - apt_log(APT_LOG_MARK,APT_PRIO_INFO,"Detected Start of Event "APT_SIDRES_FMT" id:%d", - MRCP_MESSAGE_SIDRES(verifier_channel->verifier_request), - frame->event_frame.event_id); - } - else if(frame->marker == MPF_MARKER_END_OF_EVENT) { - apt_log(APT_LOG_MARK,APT_PRIO_INFO,"Detected End of Event "APT_SIDRES_FMT" id:%d duration:%d ts", - MRCP_MESSAGE_SIDRES(verifier_channel->verifier_request), - frame->event_frame.event_id, - frame->event_frame.duration); - } - } - - if(verifier_channel->audio_out) { - fwrite(frame->codec_frame.buffer,1,frame->codec_frame.size,verifier_channel->audio_out); - } - } - return TRUE; -} - -static apt_bool_t demo_verifier_msg_signal(demo_verifier_msg_type_e type, mrcp_engine_channel_t *channel, mrcp_message_t *request) -{ - apt_bool_t status = FALSE; - demo_verifier_channel_t *demo_channel = channel->method_obj; - demo_verifier_engine_t *demo_engine = demo_channel->demo_engine; - apt_task_t *task = apt_consumer_task_base_get(demo_engine->task); - apt_task_msg_t *msg = apt_task_msg_get(task); - if(msg) { - demo_verifier_msg_t *demo_msg; - msg->type = TASK_MSG_USER; - demo_msg = (demo_verifier_msg_t*) msg->data; - - demo_msg->type = type; - demo_msg->channel = channel; - demo_msg->request = request; - status = apt_task_msg_signal(task,msg); - } - return status; -} - -static apt_bool_t demo_verifier_msg_process(apt_task_t *task, apt_task_msg_t *msg) -{ - demo_verifier_msg_t *demo_msg = (demo_verifier_msg_t*)msg->data; - switch(demo_msg->type) { - case DEMO_VERIF_MSG_OPEN_CHANNEL: - /* open channel and send asynch response */ - mrcp_engine_channel_open_respond(demo_msg->channel,TRUE); - break; - case DEMO_VERIF_MSG_CLOSE_CHANNEL: - { - /* close channel, make sure there is no activity and send asynch response */ - demo_verifier_channel_t *verifier_channel = demo_msg->channel->method_obj; - if(verifier_channel->audio_out) { - fclose(verifier_channel->audio_out); - verifier_channel->audio_out = NULL; - } - - mrcp_engine_channel_close_respond(demo_msg->channel); - break; - } - case DEMO_VERIF_MSG_REQUEST_PROCESS: - demo_verifier_channel_request_dispatch(demo_msg->channel,demo_msg->request); - break; - default: - break; - } - return TRUE; -} diff --git a/libs/unimrcp/plugins/mrcp-recorder/Makefile.am b/libs/unimrcp/plugins/mrcp-recorder/Makefile.am deleted file mode 100644 index fe49710588f..00000000000 --- a/libs/unimrcp/plugins/mrcp-recorder/Makefile.am +++ /dev/null @@ -1,8 +0,0 @@ -AM_CPPFLAGS = $(UNIMRCP_PLUGIN_INCLUDES) - -plugin_LTLIBRARIES = mrcprecorder.la - -mrcprecorder_la_SOURCES = src/mrcp_recorder_engine.c -mrcprecorder_la_LDFLAGS = $(UNIMRCP_PLUGIN_OPTS) - -include $(top_srcdir)/build/rules/uniplugin.am diff --git a/libs/unimrcp/plugins/mrcp-recorder/mrcprecorder.vcproj b/libs/unimrcp/plugins/mrcp-recorder/mrcprecorder.vcproj deleted file mode 100644 index 71194f7b104..00000000000 --- a/libs/unimrcp/plugins/mrcp-recorder/mrcprecorder.vcproj +++ /dev/null @@ -1,296 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/libs/unimrcp/plugins/mrcp-recorder/mrcprecorder.vcxproj b/libs/unimrcp/plugins/mrcp-recorder/mrcprecorder.vcxproj deleted file mode 100644 index 9a3a6a5aa6c..00000000000 --- a/libs/unimrcp/plugins/mrcp-recorder/mrcprecorder.vcxproj +++ /dev/null @@ -1,123 +0,0 @@ - - - - - Debug - Win32 - - - Debug - x64 - - - Release - Win32 - - - Release - x64 - - - - {5AFB8B04-AEB9-408C-B53E-AFBC44B5F3F2} - mrcprecorder - Win32Proj - - - - DynamicLibrary - Unicode - true - - - DynamicLibrary - Unicode - - - DynamicLibrary - Unicode - true - - - DynamicLibrary - Unicode - - - - - - - - - - - - - - - - - - - - - - - - - - - <_ProjectFileVersion>10.0.30319.1 - AllRules.ruleset - - - AllRules.ruleset - - - AllRules.ruleset - - - AllRules.ruleset - - - - - - include;%(AdditionalIncludeDirectories) - - - - - include;%(AdditionalIncludeDirectories) - - - - - X64 - - - include;%(AdditionalIncludeDirectories) - ProgramDatabase - - - - - X64 - - - include;%(AdditionalIncludeDirectories) - - - - - - - - {843425be-9a9a-44f4-a4e3-4b57d6abd53c} - false - - - - - - \ No newline at end of file diff --git a/libs/unimrcp/plugins/mrcp-recorder/mrcprecorder.vcxproj.filters b/libs/unimrcp/plugins/mrcp-recorder/mrcprecorder.vcxproj.filters deleted file mode 100644 index 6fe96d56253..00000000000 --- a/libs/unimrcp/plugins/mrcp-recorder/mrcprecorder.vcxproj.filters +++ /dev/null @@ -1,18 +0,0 @@ - - - - - {93995380-89BD-4b04-88EB-625FBE52EBFB} - h;hpp;hxx;hm;inl;inc;xsd - - - {b1d2c804-b3bb-4413-8d11-7ff67d4e874c} - cpp;c;cc;cxx;def;odl;idl;hpj;bat;asm;asmx - - - - - src - - - \ No newline at end of file diff --git a/libs/unimrcp/plugins/mrcp-recorder/src/mrcp_recorder_engine.c b/libs/unimrcp/plugins/mrcp-recorder/src/mrcp_recorder_engine.c deleted file mode 100644 index 785be23efb5..00000000000 --- a/libs/unimrcp/plugins/mrcp-recorder/src/mrcp_recorder_engine.c +++ /dev/null @@ -1,481 +0,0 @@ -/* - * Copyright 2008-2014 Arsen Chaloyan - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - * - * $Id: mrcp_recorder_engine.c 2193 2014-10-08 03:44:33Z achaloyan@gmail.com $ - */ - -/* - * Mandatory rules concerning plugin implementation. - * 1. Each plugin MUST implement a plugin/engine creator function - * with the exact signature and name (the main entry point) - * MRCP_PLUGIN_DECLARE(mrcp_engine_t*) mrcp_plugin_create(apr_pool_t *pool) - * 2. Each plugin MUST declare its version number - * MRCP_PLUGIN_VERSION_DECLARE - * 3. One and only one response MUST be sent back to the received request. - * 4. Methods (callbacks) of the MRCP engine channel MUST not block. - * (asynchronous response can be sent from the context of other thread) - * 5. Methods (callbacks) of the MPF engine stream MUST not block. - */ - -#include "mrcp_recorder_engine.h" -#include "mpf_activity_detector.h" -#include "apt_log.h" - -#define RECORDER_ENGINE_TASK_NAME "Recorder Engine" - -typedef struct recorder_channel_t recorder_channel_t; - -/** Declaration of recorder engine methods */ -static apt_bool_t recorder_engine_destroy(mrcp_engine_t *engine); -static apt_bool_t recorder_engine_open(mrcp_engine_t *engine); -static apt_bool_t recorder_engine_close(mrcp_engine_t *engine); -static mrcp_engine_channel_t* recorder_engine_channel_create(mrcp_engine_t *engine, apr_pool_t *pool); - -static const struct mrcp_engine_method_vtable_t engine_vtable = { - recorder_engine_destroy, - recorder_engine_open, - recorder_engine_close, - recorder_engine_channel_create -}; - - -/** Declaration of recorder channel methods */ -static apt_bool_t recorder_channel_destroy(mrcp_engine_channel_t *channel); -static apt_bool_t recorder_channel_open(mrcp_engine_channel_t *channel); -static apt_bool_t recorder_channel_close(mrcp_engine_channel_t *channel); -static apt_bool_t recorder_channel_request_process(mrcp_engine_channel_t *channel, mrcp_message_t *request); - -static const struct mrcp_engine_channel_method_vtable_t channel_vtable = { - recorder_channel_destroy, - recorder_channel_open, - recorder_channel_close, - recorder_channel_request_process -}; - -/** Declaration of recorder audio stream methods */ -static apt_bool_t recorder_stream_destroy(mpf_audio_stream_t *stream); -static apt_bool_t recorder_stream_open(mpf_audio_stream_t *stream, mpf_codec_t *codec); -static apt_bool_t recorder_stream_close(mpf_audio_stream_t *stream); -static apt_bool_t recorder_stream_write(mpf_audio_stream_t *stream, const mpf_frame_t *frame); - -static const mpf_audio_stream_vtable_t audio_stream_vtable = { - recorder_stream_destroy, - NULL, - NULL, - NULL, - recorder_stream_open, - recorder_stream_close, - recorder_stream_write, - NULL -}; - -/** Declaration of recorder channel */ -struct recorder_channel_t { - /** Engine channel base */ - mrcp_engine_channel_t *channel; - - /** Active (in-progress) record request */ - mrcp_message_t *record_request; - /** Pending stop response */ - mrcp_message_t *stop_response; - /** Indicates whether input timers are started */ - apt_bool_t timers_started; - /** Voice activity detector */ - mpf_activity_detector_t *detector; - /** Max length of the recording in msec */ - apr_size_t max_time; - /** Elapsed time of the recording in msec */ - apr_size_t cur_time; - /** Written size of the recording in bytes */ - apr_size_t cur_size; - /** File name of the recording */ - const char *file_name; - /** File to write to */ - FILE *audio_out; -}; - - -/** Declare this macro to set plugin version */ -MRCP_PLUGIN_VERSION_DECLARE - -/** Declare this macro to use log routine of the server, plugin is loaded from */ -MRCP_PLUGIN_LOGGER_IMPLEMENT - -/** Create recorder engine */ -MRCP_PLUGIN_DECLARE(mrcp_engine_t*) mrcp_plugin_create(apr_pool_t *pool) -{ - /* create engine base */ - return mrcp_engine_create( - MRCP_RECORDER_RESOURCE, /* MRCP resource identifier */ - NULL, /* object to associate */ - &engine_vtable, /* virtual methods table of engine */ - pool); /* pool to allocate memory from */ -} - -/** Destroy recorder engine */ -static apt_bool_t recorder_engine_destroy(mrcp_engine_t *engine) -{ - return TRUE; -} - -/** Open recorder engine */ -static apt_bool_t recorder_engine_open(mrcp_engine_t *engine) -{ - return mrcp_engine_open_respond(engine,TRUE); -} - -/** Close recorder engine */ -static apt_bool_t recorder_engine_close(mrcp_engine_t *engine) -{ - return mrcp_engine_close_respond(engine); -} - -static mrcp_engine_channel_t* recorder_engine_channel_create(mrcp_engine_t *engine, apr_pool_t *pool) -{ - mpf_stream_capabilities_t *capabilities; - mpf_termination_t *termination; - - /* create recorder channel */ - recorder_channel_t *recorder_channel = apr_palloc(pool,sizeof(recorder_channel_t)); - recorder_channel->record_request = NULL; - recorder_channel->stop_response = NULL; - recorder_channel->detector = mpf_activity_detector_create(pool); - recorder_channel->max_time = 0; - recorder_channel->cur_time = 0; - recorder_channel->cur_size = 0; - recorder_channel->file_name = NULL; - recorder_channel->audio_out = NULL; - - capabilities = mpf_sink_stream_capabilities_create(pool); - mpf_codec_capabilities_add( - &capabilities->codecs, - MPF_SAMPLE_RATE_8000 | MPF_SAMPLE_RATE_16000, - "LPCM"); - - /* create media termination */ - termination = mrcp_engine_audio_termination_create( - recorder_channel, /* object to associate */ - &audio_stream_vtable, /* virtual methods table of audio stream */ - capabilities, /* stream capabilities */ - pool); /* pool to allocate memory from */ - - /* create engine channel base */ - recorder_channel->channel = mrcp_engine_channel_create( - engine, /* engine */ - &channel_vtable, /* virtual methods table of engine channel */ - recorder_channel, /* object to associate */ - termination, /* associated media termination */ - pool); /* pool to allocate memory from */ - - return recorder_channel->channel; -} - -/** Destroy engine channel */ -static apt_bool_t recorder_channel_destroy(mrcp_engine_channel_t *channel) -{ - /* nothing to destrtoy */ - return TRUE; -} - -/** Open engine channel (asynchronous response MUST be sent)*/ -static apt_bool_t recorder_channel_open(mrcp_engine_channel_t *channel) -{ - /* open channel and send asynch response */ - return mrcp_engine_channel_open_respond(channel,TRUE); -} - -/** Close engine channel (asynchronous response MUST be sent)*/ -static apt_bool_t recorder_channel_close(mrcp_engine_channel_t *channel) -{ - /* close channel, make sure there is no activity and send asynch response */ - return mrcp_engine_channel_close_respond(channel); -} - -/** Open file to record */ -static apt_bool_t recorder_file_open(recorder_channel_t *recorder_channel, mrcp_message_t *request) -{ - char *file_path; - char *file_name; - mrcp_engine_channel_t *channel = recorder_channel->channel; - const apt_dir_layout_t *dir_layout = channel->engine->dir_layout; - const mpf_codec_descriptor_t *descriptor = mrcp_engine_sink_stream_codec_get(channel); - - if(!descriptor) { - apt_log(APT_LOG_MARK,APT_PRIO_WARNING,"Failed to Get Codec Descriptor "APT_SIDRES_FMT, MRCP_MESSAGE_SIDRES(request)); - return FALSE; - } - - file_name = apr_psprintf(channel->pool,"rec-%dkHz-%s-%"MRCP_REQUEST_ID_FMT".pcm", - descriptor->sampling_rate/1000, - request->channel_id.session_id.buf, - request->start_line.request_id); - file_path = apt_vardir_filepath_get(dir_layout,file_name,channel->pool); - if(!file_path) { - return FALSE; - } - - if(recorder_channel->audio_out) { - fclose(recorder_channel->audio_out); - recorder_channel->audio_out = NULL; - } - - apt_log(APT_LOG_MARK,APT_PRIO_INFO,"Open Utterance Output File [%s] for Writing",file_path); - recorder_channel->audio_out = fopen(file_path,"wb"); - if(!recorder_channel->audio_out) { - apt_log(APT_LOG_MARK,APT_PRIO_WARNING,"Failed to Open Utterance Output File [%s] for Writing",file_path); - return FALSE; - } - - recorder_channel->file_name = file_name; - return TRUE; -} - -/** Set Record-URI header field */ -static apt_bool_t recorder_channel_uri_set(recorder_channel_t *recorder_channel, mrcp_message_t *message) -{ - char *record_uri; - /* get/allocate recorder header */ - mrcp_recorder_header_t *recorder_header = mrcp_resource_header_prepare(message); - if(!recorder_header) { - return FALSE; - } - - record_uri = apr_psprintf( - message->pool, - ";size=%"APR_SIZE_T_FMT";duration=%"APR_SIZE_T_FMT, - recorder_channel->file_name, - recorder_channel->cur_size, - recorder_channel->cur_time); - - apt_string_set(&recorder_header->record_uri,record_uri); - mrcp_resource_header_property_add(message,RECORDER_HEADER_RECORD_URI); - return TRUE; -} - -/** Process RECORD request */ -static apt_bool_t recorder_channel_record(recorder_channel_t *recorder_channel, mrcp_message_t *request, mrcp_message_t *response) -{ - /* process RECORD request */ - mrcp_recorder_header_t *recorder_header; - recorder_channel->timers_started = TRUE; - - /* get recorder header */ - recorder_header = mrcp_resource_header_get(request); - if(recorder_header) { - if(mrcp_resource_header_property_check(request,RECORDER_HEADER_START_INPUT_TIMERS) == TRUE) { - recorder_channel->timers_started = recorder_header->start_input_timers; - } - if(mrcp_resource_header_property_check(request,RECORDER_HEADER_NO_INPUT_TIMEOUT) == TRUE) { - mpf_activity_detector_noinput_timeout_set(recorder_channel->detector,recorder_header->no_input_timeout); - } - if(mrcp_resource_header_property_check(request,RECORDER_HEADER_FINAL_SILENCE) == TRUE) { - mpf_activity_detector_silence_timeout_set(recorder_channel->detector,recorder_header->final_silence); - } - if(mrcp_resource_header_property_check(request,RECORDER_HEADER_MAX_TIME) == TRUE) { - recorder_channel->max_time = recorder_header->max_time; - } - } - - /* open file to record */ - if(recorder_file_open(recorder_channel,request) == FALSE) { - response->start_line.request_state = MRCP_REQUEST_STATE_COMPLETE; - response->start_line.status_code = MRCP_STATUS_CODE_METHOD_FAILED; - /* send asynchronous response */ - mrcp_engine_channel_message_send(recorder_channel->channel,response); - return TRUE; - } - - recorder_channel->cur_time = 0; - recorder_channel->cur_size = 0; - response->start_line.request_state = MRCP_REQUEST_STATE_INPROGRESS; - /* send asynchronous response */ - mrcp_engine_channel_message_send(recorder_channel->channel,response); - recorder_channel->record_request = request; - return TRUE; -} - -/** Process STOP request */ -static apt_bool_t recorder_channel_stop(recorder_channel_t *recorder_channel, mrcp_message_t *request, mrcp_message_t *response) -{ - /* store STOP request, make sure there is no more activity and only then send the response */ - recorder_channel->stop_response = response; - return TRUE; -} - -/** Process START-INPUT-TIMERS request */ -static apt_bool_t recorder_channel_timers_start(recorder_channel_t *recorder_channel, mrcp_message_t *request, mrcp_message_t *response) -{ - recorder_channel->timers_started = TRUE; - return mrcp_engine_channel_message_send(recorder_channel->channel,response); -} - -/** Process MRCP channel request (asynchronous response MUST be sent)*/ -static apt_bool_t recorder_channel_request_process(mrcp_engine_channel_t *channel, mrcp_message_t *request) -{ - apt_bool_t processed = FALSE; - recorder_channel_t *recorder_channel = channel->method_obj; - mrcp_message_t *response = mrcp_response_create(request,request->pool); - switch(request->start_line.method_id) { - case RECORDER_SET_PARAMS: - break; - case RECORDER_GET_PARAMS: - break; - case RECORDER_RECORD: - processed = recorder_channel_record(recorder_channel,request,response); - break; - case RECORDER_STOP: - processed = recorder_channel_stop(recorder_channel,request,response); - break; - case RECORDER_START_INPUT_TIMERS: - processed = recorder_channel_timers_start(recorder_channel,request,response); - break; - default: - break; - } - if(processed == FALSE) { - /* send asynchronous response for not handled request */ - mrcp_engine_channel_message_send(channel,response); - } - return TRUE; -} - -/* Raise START-OF-INPUT event */ -static apt_bool_t recorder_start_of_input(recorder_channel_t *recorder_channel) -{ - /* create START-OF-INPUT event */ - mrcp_message_t *message = mrcp_event_create( - recorder_channel->record_request, - RECORDER_START_OF_INPUT, - recorder_channel->record_request->pool); - if(!message) { - return FALSE; - } - - /* set request state */ - message->start_line.request_state = MRCP_REQUEST_STATE_INPROGRESS; - /* send asynch event */ - return mrcp_engine_channel_message_send(recorder_channel->channel,message); -} - -/* Raise RECORD-COMPLETE event */ -static apt_bool_t recorder_record_complete(recorder_channel_t *recorder_channel, mrcp_recorder_completion_cause_e cause) -{ - mrcp_recorder_header_t *recorder_header; - /* create RECORD-COMPLETE event */ - mrcp_message_t *message = mrcp_event_create( - recorder_channel->record_request, - RECORDER_RECORD_COMPLETE, - recorder_channel->record_request->pool); - if(!message) { - return FALSE; - } - - if(recorder_channel->audio_out) { - fclose(recorder_channel->audio_out); - recorder_channel->audio_out = NULL; - } - - /* get/allocate recorder header */ - recorder_header = mrcp_resource_header_prepare(message); - if(recorder_header) { - /* set completion cause */ - recorder_header->completion_cause = cause; - mrcp_resource_header_property_add(message,RECORDER_HEADER_COMPLETION_CAUSE); - } - /* set record-uri */ - recorder_channel_uri_set(recorder_channel,message); - /* set request state */ - message->start_line.request_state = MRCP_REQUEST_STATE_COMPLETE; - - recorder_channel->record_request = NULL; - /* send asynch event */ - return mrcp_engine_channel_message_send(recorder_channel->channel,message); -} - -/** Callback is called from MPF engine context to destroy any additional data associated with audio stream */ -static apt_bool_t recorder_stream_destroy(mpf_audio_stream_t *stream) -{ - return TRUE; -} - -/** Callback is called from MPF engine context to perform any action before open */ -static apt_bool_t recorder_stream_open(mpf_audio_stream_t *stream, mpf_codec_t *codec) -{ - return TRUE; -} - -/** Callback is called from MPF engine context to perform any action after close */ -static apt_bool_t recorder_stream_close(mpf_audio_stream_t *stream) -{ - return TRUE; -} - -/** Callback is called from MPF engine context to write/send new frame */ -static apt_bool_t recorder_stream_write(mpf_audio_stream_t *stream, const mpf_frame_t *frame) -{ - recorder_channel_t *recorder_channel = stream->obj; - if(recorder_channel->stop_response) { - if(recorder_channel->audio_out) { - fclose(recorder_channel->audio_out); - recorder_channel->audio_out = NULL; - } - - if(recorder_channel->record_request){ - /* set record-uri */ - recorder_channel_uri_set(recorder_channel,recorder_channel->stop_response); - } - /* send asynchronous response to STOP request */ - mrcp_engine_channel_message_send(recorder_channel->channel,recorder_channel->stop_response); - recorder_channel->stop_response = NULL; - recorder_channel->record_request = NULL; - return TRUE; - } - - if(recorder_channel->record_request) { - mpf_detector_event_e det_event = mpf_activity_detector_process(recorder_channel->detector,frame); - switch(det_event) { - case MPF_DETECTOR_EVENT_ACTIVITY: - apt_log(APT_LOG_MARK,APT_PRIO_INFO,"Detected Voice Activity "APT_SIDRES_FMT, - MRCP_MESSAGE_SIDRES(recorder_channel->record_request)); - recorder_start_of_input(recorder_channel); - break; - case MPF_DETECTOR_EVENT_INACTIVITY: - apt_log(APT_LOG_MARK,APT_PRIO_INFO,"Detected Voice Inactivity "APT_SIDRES_FMT, - MRCP_MESSAGE_SIDRES(recorder_channel->record_request)); - recorder_record_complete(recorder_channel,RECORDER_COMPLETION_CAUSE_SUCCESS_SILENCE); - break; - case MPF_DETECTOR_EVENT_NOINPUT: - apt_log(APT_LOG_MARK,APT_PRIO_INFO,"Detected Noinput "APT_SIDRES_FMT, - MRCP_MESSAGE_SIDRES(recorder_channel->record_request)); - if(recorder_channel->timers_started == TRUE) { - recorder_record_complete(recorder_channel,RECORDER_COMPLETION_CAUSE_NO_INPUT_TIMEOUT); - } - break; - default: - break; - } - - if(recorder_channel->audio_out) { - fwrite(frame->codec_frame.buffer,1,frame->codec_frame.size,recorder_channel->audio_out); - - recorder_channel->cur_size += frame->codec_frame.size; - recorder_channel->cur_time += CODEC_FRAME_TIME_BASE; - if(recorder_channel->max_time && recorder_channel->cur_time >= recorder_channel->max_time) { - recorder_record_complete(recorder_channel,RECORDER_COMPLETION_CAUSE_SUCCESS_MAXTIME); - } - } - } - return TRUE; -} diff --git a/libs/unimrcp/tests/Makefile.am b/libs/unimrcp/tests/Makefile.am deleted file mode 100644 index fc52c02681d..00000000000 --- a/libs/unimrcp/tests/Makefile.am +++ /dev/null @@ -1,3 +0,0 @@ -MAINTAINERCLEANFILES = Makefile.in - -SUBDIRS = apttest mpftest mrcptest rtsptest strtablegen diff --git a/libs/unimrcp/tests/apttest/Makefile.am b/libs/unimrcp/tests/apttest/Makefile.am deleted file mode 100644 index 205207400af..00000000000 --- a/libs/unimrcp/tests/apttest/Makefile.am +++ /dev/null @@ -1,12 +0,0 @@ -MAINTAINERCLEANFILES = Makefile.in - -AM_CPPFLAGS = -I$(top_srcdir)/libs/apr-toolkit/include \ - $(UNIMRCP_APR_INCLUDES) - -noinst_PROGRAMS = apttest -apttest_LDADD = $(top_builddir)/libs/apr-toolkit/libaprtoolkit.la \ - $(UNIMRCP_APR_LIBS) -apttest_SOURCES = src/main.c \ - src/task_suite.c \ - src/consumer_task_suite.c \ - src/multipart_suite.c diff --git a/libs/unimrcp/tests/apttest/apttest.vcproj b/libs/unimrcp/tests/apttest/apttest.vcproj deleted file mode 100644 index 4765530fc90..00000000000 --- a/libs/unimrcp/tests/apttest/apttest.vcproj +++ /dev/null @@ -1,304 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/libs/unimrcp/tests/apttest/apttest.vcxproj b/libs/unimrcp/tests/apttest/apttest.vcxproj deleted file mode 100644 index a766f033b1f..00000000000 --- a/libs/unimrcp/tests/apttest/apttest.vcxproj +++ /dev/null @@ -1,127 +0,0 @@ - - - - - Debug - Win32 - - - Debug - x64 - - - Release - Win32 - - - Release - x64 - - - - {429C907B-97D1-4B2D-9B0E-A14A5BFDAD15} - apttest - - - - Application - - - Application - - - Application - - - Application - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - <_ProjectFileVersion>10.0.30319.1 - AllRules.ruleset - - - AllRules.ruleset - - - AllRules.ruleset - - - AllRules.ruleset - - - - - - aprtoolkit.lib;libaprutil-1.lib;libapr-1.lib;%(AdditionalDependencies) - - - - - aprtoolkit.lib;libaprutil-1.lib;libapr-1.lib;%(AdditionalDependencies) - UseLinkTimeCodeGeneration - - - - - X64 - - - ProgramDatabase - - - aprtoolkit.lib;libaprutil-1.lib;libapr-1.lib;%(AdditionalDependencies) - - - - - X64 - - - aprtoolkit.lib;libaprutil-1.lib;libapr-1.lib;%(AdditionalDependencies) - UseLinkTimeCodeGeneration - - - - - - - - - - - {13deeca0-bdd4-4744-a1a2-8eb0a44df3d2} - false - - - - - - \ No newline at end of file diff --git a/libs/unimrcp/tests/apttest/apttest.vcxproj.filters b/libs/unimrcp/tests/apttest/apttest.vcxproj.filters deleted file mode 100644 index eba965070c9..00000000000 --- a/libs/unimrcp/tests/apttest/apttest.vcxproj.filters +++ /dev/null @@ -1,27 +0,0 @@ - - - - - {4FC737F1-C7A5-4376-A066-2A32D752A2FF} - cpp;c;cc;cxx;def;odl;idl;hpj;bat;asm;asmx - - - {93995380-89BD-4b04-88EB-625FBE52EBFB} - h;hpp;hxx;hm;inl;inc;xsd - - - - - src - - - src - - - src - - - src - - - \ No newline at end of file diff --git a/libs/unimrcp/tests/apttest/src/consumer_task_suite.c b/libs/unimrcp/tests/apttest/src/consumer_task_suite.c deleted file mode 100644 index 74f8197b05b..00000000000 --- a/libs/unimrcp/tests/apttest/src/consumer_task_suite.c +++ /dev/null @@ -1,102 +0,0 @@ -/* - * Copyright 2008-2014 Arsen Chaloyan - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - * - * $Id: consumer_task_suite.c 2136 2014-07-04 06:33:36Z achaloyan@gmail.com $ - */ - -#include -#include "apt_test_suite.h" -#include "apt_consumer_task.h" -#include "apt_log.h" - -typedef struct { - apr_time_t timestamp; - int number; -} sample_msg_data_t; - -static void task_on_start_complete(apt_task_t *task) -{ - apt_log(APT_LOG_MARK,APT_PRIO_INFO,"On Task Start"); -} - -static void task_on_terminate_complete(apt_task_t *task) -{ - apt_log(APT_LOG_MARK,APT_PRIO_INFO,"On Task Terminate"); -} - -static apt_bool_t task_msg_process(apt_task_t *task, apt_task_msg_t *msg) -{ - sample_msg_data_t *data = (sample_msg_data_t*)msg->data; - apt_log(APT_LOG_MARK,APT_PRIO_DEBUG,"Process Message [%d]",data->number); - return TRUE; -} - - -static apt_bool_t consumer_task_test_run(apt_test_suite_t *suite, int argc, const char * const *argv) -{ - apt_consumer_task_t *consumer_task; - apt_task_t *task; - apt_task_vtable_t *vtable; - apt_task_msg_pool_t *msg_pool; - apt_task_msg_t *msg; - sample_msg_data_t *data; - int i; - - msg_pool = apt_task_msg_pool_create_dynamic(sizeof(sample_msg_data_t),suite->pool); - - apt_log(APT_LOG_MARK,APT_PRIO_NOTICE,"Create Consumer Task"); - consumer_task = apt_consumer_task_create(NULL,msg_pool,suite->pool); - if(!consumer_task) { - apt_log(APT_LOG_MARK,APT_PRIO_WARNING,"Failed to Create Consumer Task"); - return FALSE; - } - task = apt_consumer_task_base_get(consumer_task); - vtable = apt_task_vtable_get(task); - if(vtable) { - vtable->process_msg = task_msg_process; - vtable->on_start_complete = task_on_start_complete; - vtable->on_terminate_complete = task_on_terminate_complete; - } - - apt_log(APT_LOG_MARK,APT_PRIO_INFO,"Start Task"); - if(apt_task_start(task) == FALSE) { - apt_log(APT_LOG_MARK,APT_PRIO_WARNING,"Failed to Start Task"); - apt_task_destroy(task); - return FALSE; - } - - for(i=0; i<10; i++) { - msg = apt_task_msg_acquire(msg_pool); - msg->type = TASK_MSG_USER; - data = (sample_msg_data_t*) msg->data; - - data->number = i; - data->timestamp = apr_time_now(); - apt_log(APT_LOG_MARK,APT_PRIO_DEBUG,"Signal Message [%d]",data->number); - apt_task_msg_signal(task,msg); - } - - apt_log(APT_LOG_MARK,APT_PRIO_INFO,"Terminate Task [wait till complete]"); - apt_task_terminate(task,TRUE); - apt_log(APT_LOG_MARK,APT_PRIO_NOTICE,"Destroy Task"); - apt_task_destroy(task); - return TRUE; -} - -apt_test_suite_t* consumer_task_test_suite_create(apr_pool_t *pool) -{ - apt_test_suite_t *suite = apt_test_suite_create(pool,"consumer",NULL,consumer_task_test_run); - return suite; -} diff --git a/libs/unimrcp/tests/apttest/src/main.c b/libs/unimrcp/tests/apttest/src/main.c deleted file mode 100644 index 772f7f00038..00000000000 --- a/libs/unimrcp/tests/apttest/src/main.c +++ /dev/null @@ -1,60 +0,0 @@ -/* - * Copyright 2008-2014 Arsen Chaloyan - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - * - * $Id: main.c 2136 2014-07-04 06:33:36Z achaloyan@gmail.com $ - */ - -#include "apt_test_suite.h" -#include "apt_log.h" - -apt_test_suite_t* task_test_suite_create(apr_pool_t *pool); -apt_test_suite_t* consumer_task_test_suite_create(apr_pool_t *pool); -apt_test_suite_t* multipart_test_suite_create(apr_pool_t *pool); - -int main(int argc, const char * const *argv) -{ - apt_test_framework_t *test_framework; - apt_test_suite_t *test_suite; - apr_pool_t *pool; - - /* one time apr global initialization */ - if(apr_initialize() != APR_SUCCESS) { - return 0; - } - - /* create test framework */ - test_framework = apt_test_framework_create(); - pool = apt_test_framework_pool_get(test_framework); - - /* create test suites and add them to test framework */ - test_suite = task_test_suite_create(pool); - apt_test_framework_suite_add(test_framework,test_suite); - - test_suite = consumer_task_test_suite_create(pool); - apt_test_framework_suite_add(test_framework,test_suite); - - test_suite = multipart_test_suite_create(pool); - apt_test_framework_suite_add(test_framework,test_suite); - - /* run tests */ - apt_test_framework_run(test_framework,argc,argv); - - /* destroy test framework */ - apt_test_framework_destroy(test_framework); - - /* final apr global termination */ - apr_terminate(); - return 0; -} diff --git a/libs/unimrcp/tests/apttest/src/multipart_suite.c b/libs/unimrcp/tests/apttest/src/multipart_suite.c deleted file mode 100644 index 74a9c29b1a9..00000000000 --- a/libs/unimrcp/tests/apttest/src/multipart_suite.c +++ /dev/null @@ -1,98 +0,0 @@ -/* - * Copyright 2008-2014 Arsen Chaloyan - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - * - * $Id: multipart_suite.c 2136 2014-07-04 06:33:36Z achaloyan@gmail.com $ - */ - -#include "apt_test_suite.h" -#include "apt_multipart_content.h" -#include "apt_log.h" - -static apt_str_t* multipart_content_generate(apt_test_suite_t *suite) -{ - apt_multipart_content_t *multipart = apt_multipart_content_create(1500,NULL,suite->pool); - apt_str_t content_type; - apt_str_t content; - apt_str_t *body; - - apt_string_set(&content_type,"text/plain"); - apt_string_set(&content,"This is the content of the first part"); - apt_multipart_content_add2(multipart,&content_type,NULL,&content); - - apt_string_set(&content_type,"application/ssml+xml"); - apt_string_set(&content, - "\r\n" - " You have 4 new messages.

    \r\n" - "
    "); - apt_multipart_content_add2(multipart,&content_type,NULL,&content); - - body = apt_multipart_content_finalize(multipart); - if(body) { - apt_log(APT_LOG_MARK,APT_PRIO_INFO,"Genereted Multipart Content [%lu bytes]\n%s", - body->length, - body->buf); - } - return body; -} - -static apt_bool_t multipart_content_parse(apt_test_suite_t *suite, apt_str_t *body) -{ - apt_multipart_content_t *multipart = apt_multipart_content_assign(body,NULL,suite->pool); - if(multipart) { - apt_bool_t is_final; - apt_content_part_t content_part; - while(apt_multipart_content_get(multipart,&content_part,&is_final) == TRUE) { - if(is_final == TRUE) { - break; - } - if(content_part.type && apt_string_is_empty(content_part.type) == FALSE) { - apt_log(APT_LOG_MARK,APT_PRIO_INFO,"Content Part Type: %.*s", - content_part.type->length, - content_part.type->buf); - } - if(content_part.id && apt_string_is_empty(content_part.id) == FALSE) { - apt_log(APT_LOG_MARK,APT_PRIO_INFO,"Content Part Id: %.*s", - content_part.id->length, - content_part.id->buf); - } - if(content_part.length && apt_string_is_empty(content_part.length) == FALSE) { - apt_log(APT_LOG_MARK,APT_PRIO_INFO,"Content Part Length: %.*s\n%.*s", - content_part.length->length, - content_part.length->buf, - content_part.body.length, - content_part.body.buf); - } - } - } - return TRUE; -} - - -static apt_bool_t multipart_test_run(apt_test_suite_t *suite, int argc, const char * const *argv) -{ - apt_bool_t status = FALSE; - apt_str_t *body = multipart_content_generate(suite); - if(body) { - status = multipart_content_parse(suite,body); - } - return status; -} - -apt_test_suite_t* multipart_test_suite_create(apr_pool_t *pool) -{ - apt_test_suite_t *suite = apt_test_suite_create(pool,"multipart",NULL,multipart_test_run); - return suite; -} diff --git a/libs/unimrcp/tests/apttest/src/task_suite.c b/libs/unimrcp/tests/apttest/src/task_suite.c deleted file mode 100644 index e42f14e598d..00000000000 --- a/libs/unimrcp/tests/apttest/src/task_suite.c +++ /dev/null @@ -1,64 +0,0 @@ -/* - * Copyright 2008-2014 Arsen Chaloyan - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - * - * $Id: task_suite.c 2136 2014-07-04 06:33:36Z achaloyan@gmail.com $ - */ - -#include "apt_test_suite.h" -#include "apt_task.h" -#include "apt_log.h" - -static apt_bool_t task_main(apt_task_t *task) -{ - apt_log(APT_LOG_MARK,APT_PRIO_DEBUG,"Do the Job"); - apt_task_delay(3000); - return TRUE; -} - -static apt_bool_t task_test_run(apt_test_suite_t *suite, int argc, const char * const *argv) -{ - apt_task_t *task; - apt_task_vtable_t *vtable; - - apt_log(APT_LOG_MARK,APT_PRIO_NOTICE,"Create Task"); - task = apt_task_create(NULL,NULL,suite->pool); - if(!task) { - apt_log(APT_LOG_MARK,APT_PRIO_WARNING,"Failed to Create Task"); - return FALSE; - } - vtable = apt_task_vtable_get(task); - if(vtable) { - vtable->run = task_main; - } - - apt_log(APT_LOG_MARK,APT_PRIO_INFO,"Start Task"); - if(apt_task_start(task) == FALSE) { - apt_log(APT_LOG_MARK,APT_PRIO_WARNING,"Failed to Start Task"); - apt_task_destroy(task); - return FALSE; - } - - apt_log(APT_LOG_MARK,APT_PRIO_INFO,"Wait for Task to Complete"); - apt_task_wait_till_complete(task); - apt_log(APT_LOG_MARK,APT_PRIO_NOTICE,"Destroy Task"); - apt_task_destroy(task); - return TRUE; -} - -apt_test_suite_t* task_test_suite_create(apr_pool_t *pool) -{ - apt_test_suite_t *suite = apt_test_suite_create(pool,"task",NULL,task_test_run); - return suite; -} diff --git a/libs/unimrcp/tests/mpftest/Makefile.am b/libs/unimrcp/tests/mpftest/Makefile.am deleted file mode 100644 index 0a032d121b0..00000000000 --- a/libs/unimrcp/tests/mpftest/Makefile.am +++ /dev/null @@ -1,12 +0,0 @@ -MAINTAINERCLEANFILES = Makefile.in - -AM_CPPFLAGS = -I$(top_srcdir)/libs/mpf/include \ - -I$(top_srcdir)/libs/apr-toolkit/include \ - $(UNIMRCP_APR_INCLUDES) - -noinst_PROGRAMS = mpftest -mpftest_LDADD = $(top_builddir)/libs/mpf/libmpf.la \ - $(top_builddir)/libs/apr-toolkit/libaprtoolkit.la \ - $(UNIMRCP_APR_LIBS) -mpftest_SOURCES = src/main.c \ - src/mpf_suite.c diff --git a/libs/unimrcp/tests/mpftest/mpftest.vcproj b/libs/unimrcp/tests/mpftest/mpftest.vcproj deleted file mode 100644 index 7a359cf1e09..00000000000 --- a/libs/unimrcp/tests/mpftest/mpftest.vcproj +++ /dev/null @@ -1,296 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/libs/unimrcp/tests/mpftest/mpftest.vcxproj b/libs/unimrcp/tests/mpftest/mpftest.vcxproj deleted file mode 100644 index a28878891ab..00000000000 --- a/libs/unimrcp/tests/mpftest/mpftest.vcxproj +++ /dev/null @@ -1,125 +0,0 @@ - - - - - Debug - Win32 - - - Debug - x64 - - - Release - Win32 - - - Release - x64 - - - - {DCF01B1C-5268-44F3-9130-D647FABFB663} - mpftest - - - - Application - - - Application - - - Application - - - Application - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - <_ProjectFileVersion>10.0.30319.1 - AllRules.ruleset - - - AllRules.ruleset - - - AllRules.ruleset - - - AllRules.ruleset - - - - - - mpf.lib;aprtoolkit.lib;libaprutil-1.lib;libapr-1.lib;ws2_32.lib;winmm.lib;%(AdditionalDependencies) - - - - - mpf.lib;aprtoolkit.lib;libaprutil-1.lib;libapr-1.lib;ws2_32.lib;winmm.lib;%(AdditionalDependencies) - UseLinkTimeCodeGeneration - - - - - X64 - - - ProgramDatabase - - - mpf.lib;aprtoolkit.lib;libaprutil-1.lib;libapr-1.lib;ws2_32.lib;winmm.lib;%(AdditionalDependencies) - - - - - X64 - - - mpf.lib;aprtoolkit.lib;libaprutil-1.lib;libapr-1.lib;ws2_32.lib;winmm.lib;%(AdditionalDependencies) - UseLinkTimeCodeGeneration - - - - - - - - - {b5a00bfa-6083-4fae-a097-71642d6473b5} - false - - - - - - \ No newline at end of file diff --git a/libs/unimrcp/tests/mpftest/mpftest.vcxproj.filters b/libs/unimrcp/tests/mpftest/mpftest.vcxproj.filters deleted file mode 100644 index dbe64db07da..00000000000 --- a/libs/unimrcp/tests/mpftest/mpftest.vcxproj.filters +++ /dev/null @@ -1,21 +0,0 @@ - - - - - {4FC737F1-C7A5-4376-A066-2A32D752A2FF} - cpp;c;cc;cxx;def;odl;idl;hpj;bat;asm;asmx - - - {93995380-89BD-4b04-88EB-625FBE52EBFB} - h;hpp;hxx;hm;inl;inc;xsd - - - - - src - - - src - - - \ No newline at end of file diff --git a/libs/unimrcp/tests/mpftest/src/main.c b/libs/unimrcp/tests/mpftest/src/main.c deleted file mode 100644 index 7e61aa19e71..00000000000 --- a/libs/unimrcp/tests/mpftest/src/main.c +++ /dev/null @@ -1,52 +0,0 @@ -/* - * Copyright 2008-2014 Arsen Chaloyan - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - * - * $Id: main.c 2136 2014-07-04 06:33:36Z achaloyan@gmail.com $ - */ - -#include "apt_test_suite.h" -#include "apt_log.h" - -apt_test_suite_t* mpf_suite_create(apr_pool_t *pool); - -int main(int argc, const char * const *argv) -{ - apt_test_framework_t *test_framework; - apt_test_suite_t *test_suite; - apr_pool_t *pool; - - /* one time apr global initialization */ - if(apr_initialize() != APR_SUCCESS) { - return 0; - } - - /* create test framework */ - test_framework = apt_test_framework_create(); - pool = apt_test_framework_pool_get(test_framework); - - /* create test suites and add them to test framework */ - test_suite = mpf_suite_create(pool); - apt_test_framework_suite_add(test_framework,test_suite); - - /* run tests */ - apt_test_framework_run(test_framework,argc,argv); - - /* destroy test framework */ - apt_test_framework_destroy(test_framework); - - /* final apr global termination */ - apr_terminate(); - return 0; -} diff --git a/libs/unimrcp/tests/mpftest/src/mpf_suite.c b/libs/unimrcp/tests/mpftest/src/mpf_suite.c deleted file mode 100644 index a18e3319aec..00000000000 --- a/libs/unimrcp/tests/mpftest/src/mpf_suite.c +++ /dev/null @@ -1,571 +0,0 @@ -/* - * Copyright 2008-2014 Arsen Chaloyan - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - * - * $Id: mpf_suite.c 2214 2014-11-06 03:05:51Z achaloyan@gmail.com $ - */ - -#include -#include "apt_test_suite.h" -#include "apt_pool.h" -#include "apt_consumer_task.h" -#include "apt_dir_layout.h" -#include "apt_log.h" -#include "mpf_engine.h" -#include "mpf_rtp_termination_factory.h" -#include "mpf_file_termination_factory.h" -#include "mpf_audio_file_descriptor.h" -#include "mpf_rtp_descriptor.h" -#include "mpf_codec_manager.h" - -typedef struct mpf_suite_session_t mpf_suite_session_t; -typedef struct mpf_suite_agent_t mpf_suite_agent_t; - -/** Test suite session */ -struct mpf_suite_session_t { - /** Pool to allocate memory from */ - apr_pool_t *pool; - - /** Media context associated with the session */ - mpf_context_t *context; - /** The first termination in the context */ - mpf_termination_t *file_termination; - /** The second termination in the context */ - mpf_termination_t *rtp_termination; -}; - -/** Test suite agent */ -struct mpf_suite_agent_t { - /** Directory layout */ - apt_dir_layout_t *dir_layout; - /** The main task of the test agent, which sends messages to MPF engine and - * processes responses and events sent back from MPF engine */ - apt_consumer_task_t *consumer_task; - /** MPF engine */ - mpf_engine_t *engine; - /** RTP termination factory */ - mpf_termination_factory_t *rtp_termination_factory; - /** File termination factory */ - mpf_termination_factory_t *file_termination_factory; - /* Configuration of RTP termination factory */ - mpf_rtp_config_t *rtp_config; - /* RTP stream settings */ - mpf_rtp_settings_t *rtp_settings; - - /** RTP receiver -> File */ - mpf_suite_session_t *rx_session; - /** File -> RTP transmitter */ - mpf_suite_session_t *tx_session; - - /** Wait object, which is signalled to indicate shutdown */ - apr_thread_cond_t *wait_object; - /** Mutex of the wait object */ - apr_thread_mutex_t *wait_object_mutex; -}; - -static apt_bool_t mpf_test_run(apt_test_suite_t *suite, int argc, const char * const *argv); - -static void mpf_suite_on_start_complete(apt_task_t *task); -static void mpf_suite_on_terminate_complete(apt_task_t *task); -static apt_bool_t mpf_suite_task_msg_process(apt_task_t *task, apt_task_msg_t *msg); - -static mpf_audio_file_descriptor_t* mpf_file_reader_descriptor_create(const mpf_suite_agent_t *agent, const mpf_suite_session_t *session); -static mpf_audio_file_descriptor_t* mpf_file_writer_descriptor_create(const mpf_suite_agent_t *agent, const mpf_suite_session_t *session); -static mpf_rtp_stream_descriptor_t* mpf_rtp_rx_local_descriptor_create(const mpf_suite_agent_t *agent, const mpf_suite_session_t *session); -static mpf_rtp_stream_descriptor_t* mpf_rtp_rx_remote_descriptor_create(const mpf_suite_agent_t *agent, const mpf_suite_session_t *session); -static mpf_rtp_stream_descriptor_t* mpf_rtp_tx_local_descriptor_create(const mpf_suite_agent_t *agent, const mpf_suite_session_t *session); -static mpf_rtp_stream_descriptor_t* mpf_rtp_tx_remote_descriptor_create(const mpf_suite_agent_t *agent, const mpf_suite_session_t *session); - - -/** Create MPF test suite */ -apt_test_suite_t* mpf_suite_create(apr_pool_t *pool) -{ - apt_test_suite_t *suite = apt_test_suite_create(pool,"mpf",NULL,mpf_test_run); - return suite; -} - -/** Run MPF test suite */ -static apt_bool_t mpf_test_run(apt_test_suite_t *suite, int argc, const char * const *argv) -{ - mpf_suite_agent_t *agent; - mpf_codec_manager_t *codec_manager; - mpf_rtp_config_t *rtp_config; - mpf_rtp_settings_t *rtp_settings; - mpf_engine_t *engine; - - apt_task_t *task; - apt_task_vtable_t *vtable; - apt_task_msg_pool_t *msg_pool; - - agent = apr_palloc(suite->pool,sizeof(mpf_suite_agent_t)); - - agent->dir_layout = apt_default_dir_layout_create(NULL,suite->pool); - engine = mpf_engine_create("MPF-Engine",suite->pool); - if(!engine) { - apt_log(APT_LOG_MARK,APT_PRIO_WARNING,"Failed to Create MPF Engine"); - return FALSE; - } - - codec_manager = mpf_engine_codec_manager_create(suite->pool); - if(!codec_manager) { - apt_log(APT_LOG_MARK,APT_PRIO_WARNING,"Failed to Create Codec Manager"); - return FALSE; - } - - mpf_engine_codec_manager_register(engine,codec_manager); - agent->engine = engine; - - rtp_config = mpf_rtp_config_alloc(suite->pool); - apt_string_set(&rtp_config->ip,"127.0.0.1"); - rtp_config->rtp_port_min = 5000; - rtp_config->rtp_port_max = 6000; - - agent->rtp_config = rtp_config; - - rtp_settings = mpf_rtp_settings_alloc(suite->pool); - rtp_settings->ptime = 20; - rtp_settings->jb_config.adaptive = 1; - rtp_settings->jb_config.time_skew_detection = 1; - rtp_settings->jb_config.min_playout_delay = 0; - rtp_settings->jb_config.initial_playout_delay = 50; - rtp_settings->jb_config.max_playout_delay = 800; - mpf_codec_manager_codec_list_load(codec_manager,&rtp_settings->codec_list,"PCMU",suite->pool); - - agent->rtp_settings = rtp_settings; - - agent->rtp_termination_factory = mpf_rtp_termination_factory_create(rtp_config,suite->pool); - agent->file_termination_factory = mpf_file_termination_factory_create(suite->pool); - - agent->rx_session = NULL; - agent->tx_session = NULL; - - msg_pool = apt_task_msg_pool_create_dynamic(sizeof(mpf_message_t),suite->pool); - - apt_log(APT_LOG_MARK,APT_PRIO_NOTICE,"Create Consumer Task"); - agent->consumer_task = apt_consumer_task_create(agent,msg_pool,suite->pool); - if(!agent->consumer_task) { - apt_log(APT_LOG_MARK,APT_PRIO_WARNING,"Failed to Create Consumer Task"); - return FALSE; - } - task = apt_consumer_task_base_get(agent->consumer_task); - apt_task_name_set(task,"MPF-Tester"); - vtable = apt_task_vtable_get(task); - if(vtable) { - vtable->process_msg = mpf_suite_task_msg_process; - vtable->on_start_complete = mpf_suite_on_start_complete; - vtable->on_terminate_complete = mpf_suite_on_terminate_complete; - } - - apt_task_add(task,mpf_task_get(engine)); - - apr_thread_mutex_create(&agent->wait_object_mutex,APR_THREAD_MUTEX_UNNESTED,suite->pool); - apr_thread_cond_create(&agent->wait_object,suite->pool); - - if(apt_task_start(task) == FALSE) { - apt_log(APT_LOG_MARK,APT_PRIO_WARNING,"Failed to Start Task"); - apt_task_destroy(task); - return FALSE; - } - - apr_thread_mutex_lock(agent->wait_object_mutex); - apt_log(APT_LOG_MARK,APT_PRIO_INFO,"Wait for Task to Complete"); - apr_thread_cond_wait(agent->wait_object,agent->wait_object_mutex); - apr_thread_mutex_unlock(agent->wait_object_mutex); - - apt_log(APT_LOG_MARK,APT_PRIO_INFO,"Terminate Task [wait till complete]"); - apt_task_terminate(task,TRUE); - apt_log(APT_LOG_MARK,APT_PRIO_NOTICE,"Destroy Task"); - apt_task_destroy(task); - - apr_thread_cond_destroy(agent->wait_object); - apr_thread_mutex_destroy(agent->wait_object_mutex); - return TRUE; -} - -static mpf_suite_session_t* mpf_suite_rx_session_create(const mpf_suite_agent_t *agent) -{ - mpf_task_msg_t *task_msg = NULL; - void *descriptor; - apr_pool_t *pool; - mpf_suite_session_t *session; - - pool = apt_pool_create(); - session = apr_palloc(pool,sizeof(mpf_suite_session_t)); - session->pool = pool; - session->context = NULL; - session->file_termination = NULL; - session->rtp_termination = NULL; - - apt_log(APT_LOG_MARK,APT_PRIO_INFO,"Create MPF Context [Rx]"); - session->context = mpf_engine_context_create(agent->engine,NULL,session,2,pool); - - apt_log(APT_LOG_MARK,APT_PRIO_INFO,"Create Termination [RTP Rx]"); - session->rtp_termination = mpf_termination_create(agent->rtp_termination_factory,session,session->pool); - - apt_log(APT_LOG_MARK,APT_PRIO_INFO,"Add Termination [RTP Rx]"); - descriptor = mpf_rtp_rx_local_descriptor_create(agent,session); - mpf_engine_termination_message_add( - agent->engine, - MPF_ADD_TERMINATION,session->context,session->rtp_termination,descriptor, - &task_msg); - - apt_log(APT_LOG_MARK,APT_PRIO_INFO,"Create Termination [File Writer]"); - session->file_termination = mpf_termination_create(agent->file_termination_factory,session,session->pool); - - apt_log(APT_LOG_MARK,APT_PRIO_INFO,"Add Termination [File Writer]"); - descriptor = mpf_file_writer_descriptor_create(agent,session); - mpf_engine_termination_message_add( - agent->engine, - MPF_ADD_TERMINATION,session->context,session->file_termination,descriptor, - &task_msg); - - mpf_engine_message_send(agent->engine,&task_msg); - return session; -} - -static mpf_suite_session_t* mpf_suite_tx_session_create(const mpf_suite_agent_t *agent) -{ - mpf_task_msg_t *task_msg = NULL; - void *descriptor; - apr_pool_t *pool; - mpf_suite_session_t *session; - - pool = apt_pool_create(); - session = apr_palloc(pool,sizeof(mpf_suite_session_t)); - session->pool = pool; - session->context = NULL; - session->file_termination = NULL; - session->rtp_termination = NULL; - - apt_log(APT_LOG_MARK,APT_PRIO_INFO,"Create MPF Context [Tx]"); - session->context = mpf_engine_context_create(agent->engine,NULL,session,2,pool); - - apt_log(APT_LOG_MARK,APT_PRIO_INFO,"Create Termination [File Reader]"); - session->file_termination = mpf_termination_create(agent->file_termination_factory,session,session->pool); - - apt_log(APT_LOG_MARK,APT_PRIO_INFO,"Add Termination [File Reader]"); - descriptor = mpf_file_reader_descriptor_create(agent,session); - mpf_engine_termination_message_add( - agent->engine, - MPF_ADD_TERMINATION,session->context,session->file_termination,descriptor, - &task_msg); - - apt_log(APT_LOG_MARK,APT_PRIO_INFO,"Create Termination [RTP Tx]"); - session->rtp_termination = mpf_termination_create(agent->rtp_termination_factory,session,session->pool); - - apt_log(APT_LOG_MARK,APT_PRIO_INFO,"Add Termination [RTP Tx]"); - descriptor = mpf_rtp_tx_local_descriptor_create(agent,session); - mpf_engine_termination_message_add( - agent->engine, - MPF_ADD_TERMINATION,session->context,session->rtp_termination,descriptor, - &task_msg); - - mpf_engine_message_send(agent->engine,&task_msg); - return session; -} - -static void mpf_suite_session_destroy(mpf_suite_agent_t *agent, mpf_suite_session_t* session) -{ - apt_log(APT_LOG_MARK,APT_PRIO_INFO,"Destroy MPF Context"); - mpf_engine_context_destroy(session->context); - session->context = NULL; - - if(agent->rx_session == session) { - agent->rx_session = NULL; - } - else if(agent->tx_session == session) { - agent->tx_session = NULL; - } - - apr_pool_destroy(session->pool); - - if(!agent->tx_session && !agent->rx_session) { - apr_thread_mutex_lock(agent->wait_object_mutex); - apr_thread_cond_signal(agent->wait_object); - apr_thread_mutex_unlock(agent->wait_object_mutex); - } -} - -/** Start execution of MPF test suite scenario */ -static void mpf_suite_on_start_complete(apt_task_t *task) -{ - apt_consumer_task_t *consumer_task; - mpf_suite_agent_t *agent; - - consumer_task = apt_task_object_get(task); - agent = apt_consumer_task_object_get(consumer_task); - - apt_log(APT_LOG_MARK,APT_PRIO_INFO,"On MPF Suite Start"); - - agent->rx_session = mpf_suite_rx_session_create(agent); - agent->tx_session = mpf_suite_tx_session_create(agent); -} - -/** Execution of MPF test suite scenario is terminated */ -static void mpf_suite_on_terminate_complete(apt_task_t *task) -{ - apt_log(APT_LOG_MARK,APT_PRIO_INFO,"On MPF Suite Terminate"); -} - -/** Process MPF response */ -static apt_bool_t mpf_suite_response_process(mpf_suite_agent_t *agent, const mpf_message_t *mpf_message) -{ - mpf_task_msg_t *task_msg = NULL; - apt_log(APT_LOG_MARK,APT_PRIO_DEBUG,"Process MPF Response"); - if(mpf_message->command_id == MPF_ADD_TERMINATION) { - apt_log(APT_LOG_MARK,APT_PRIO_DEBUG,"On Add Termination"); - if(mpf_message->termination) { - mpf_suite_session_t *session; - session = mpf_termination_object_get(mpf_message->termination); - if(session->rtp_termination == mpf_message->termination) { - mpf_rtp_stream_descriptor_t *descriptor = NULL; - if(session == agent->rx_session) { - descriptor = mpf_rtp_rx_remote_descriptor_create(agent,session); - } - if(session == agent->tx_session) { - descriptor = mpf_rtp_tx_remote_descriptor_create(agent,session); - } - - if(descriptor) { - mpf_engine_termination_message_add( - agent->engine, - MPF_MODIFY_TERMINATION,session->context,session->rtp_termination,descriptor, - &task_msg); - } - - mpf_engine_assoc_message_add( - agent->engine, - MPF_ADD_ASSOCIATION,session->context,session->file_termination,session->rtp_termination, - &task_msg); - - mpf_engine_topology_message_add( - agent->engine, - MPF_APPLY_TOPOLOGY,session->context, - &task_msg); - } - } - } - else if(mpf_message->command_id == MPF_SUBTRACT_TERMINATION) { - apt_log(APT_LOG_MARK,APT_PRIO_DEBUG,"On Subtract Termination"); - if(mpf_message->termination) { - mpf_suite_session_t *session; - session = mpf_termination_object_get(mpf_message->termination); - if(session->file_termination == mpf_message->termination) { - session->file_termination = NULL; - } - else if(session->rtp_termination == mpf_message->termination) { - session->rtp_termination = NULL; - } - mpf_termination_destroy(mpf_message->termination); - - if(!session->file_termination && !session->rtp_termination) { - mpf_suite_session_destroy(agent,session); - } - } - } - return mpf_engine_message_send(agent->engine,&task_msg); -} - -/** Process MPF event */ -static apt_bool_t mpf_suite_event_process(mpf_suite_agent_t *agent, const mpf_message_t *mpf_message) -{ - mpf_task_msg_t *task_msg = NULL; - mpf_suite_session_t *session; - apt_log(APT_LOG_MARK,APT_PRIO_DEBUG,"Process MPF Event"); - if(mpf_message->termination) { - session = mpf_termination_object_get(mpf_message->termination); - /* first destroy existing topology */ - mpf_engine_topology_message_add( - agent->engine, - MPF_DESTROY_TOPOLOGY,session->context, - &task_msg); - - if(session->file_termination) { - apt_log(APT_LOG_MARK,APT_PRIO_INFO,"Subtract Termination [File]"); - mpf_engine_termination_message_add( - agent->engine, - MPF_SUBTRACT_TERMINATION,session->context,session->file_termination,NULL, - &task_msg); - } - if(session->rtp_termination) { - apt_log(APT_LOG_MARK,APT_PRIO_INFO,"Subtract Termination [RTP]"); - mpf_engine_termination_message_add( - agent->engine, - MPF_SUBTRACT_TERMINATION,session->context,session->rtp_termination,NULL, - &task_msg); - } - } - return mpf_engine_message_send(agent->engine,&task_msg); -} - -/** Process task messages */ -static apt_bool_t mpf_suite_task_msg_process(apt_task_t *task, apt_task_msg_t *msg) -{ - apr_size_t i; - const mpf_message_t *mpf_message; - apt_consumer_task_t *consumer_task = apt_task_object_get(task); - mpf_suite_agent_t *agent = apt_consumer_task_object_get(consumer_task); - const mpf_message_container_t *container = (const mpf_message_container_t*) msg->data; - for(i=0; icount; i++) { - mpf_message = &container->messages[i]; - if(mpf_message->message_type == MPF_MESSAGE_TYPE_RESPONSE) { - mpf_suite_response_process(agent,mpf_message); - } - else { - mpf_suite_event_process(agent,mpf_message); - } - } - return TRUE; -} - -/** Create file reader descriptor */ -static mpf_audio_file_descriptor_t* mpf_file_reader_descriptor_create(const mpf_suite_agent_t *agent, const mpf_suite_session_t *session) -{ - const char *file_path = apt_datadir_filepath_get(agent->dir_layout,"demo-8kHz.pcm",session->pool); - mpf_audio_file_descriptor_t *descriptor = apr_palloc(session->pool,sizeof(mpf_audio_file_descriptor_t)); - descriptor->mask = FILE_READER; - descriptor->read_handle = NULL; - descriptor->write_handle = NULL; - descriptor->codec_descriptor = mpf_codec_lpcm_descriptor_create(8000,1,session->pool); - if(file_path) { - apt_log(APT_LOG_MARK,APT_PRIO_INFO,"Open File [%s] for Reading",file_path); - descriptor->read_handle = fopen(file_path,"rb"); - if(!descriptor->read_handle) { - apt_log(APT_LOG_MARK,APT_PRIO_WARNING,"Failed to Open File [%s]",file_path); - } - } - return descriptor; -} - -/** Create file writer descriptor */ -static mpf_audio_file_descriptor_t* mpf_file_writer_descriptor_create(const mpf_suite_agent_t *agent, const mpf_suite_session_t *session) -{ - const char *file_path = apt_vardir_filepath_get(agent->dir_layout,"output-8kHz.pcm",session->pool); - mpf_audio_file_descriptor_t *descriptor = apr_palloc(session->pool,sizeof(mpf_audio_file_descriptor_t)); - descriptor->mask = FILE_WRITER; - descriptor->max_write_size = 500000; /* ~500Kb */ - descriptor->write_handle = NULL; - descriptor->read_handle = NULL; - descriptor->codec_descriptor = mpf_codec_lpcm_descriptor_create(8000,1,session->pool); - if(file_path) { - apt_log(APT_LOG_MARK,APT_PRIO_INFO,"Open File [%s] for Writing",file_path); - descriptor->write_handle = fopen(file_path,"wb"); - if(!descriptor->write_handle) { - apt_log(APT_LOG_MARK,APT_PRIO_WARNING,"Failed to Open File [%s] for Writing",file_path); - } - } - return descriptor; -} - -/** Create RTP rx local descriptor */ -static mpf_rtp_stream_descriptor_t* mpf_rtp_rx_local_descriptor_create(const mpf_suite_agent_t *agent, const mpf_suite_session_t *session) -{ - mpf_rtp_media_descriptor_t *media_descriptor; - mpf_rtp_stream_descriptor_t *stream_descriptor; - - media_descriptor = apr_palloc(session->pool,sizeof(mpf_rtp_media_descriptor_t)); - mpf_rtp_media_descriptor_init(media_descriptor); - media_descriptor->state = MPF_MEDIA_ENABLED; - media_descriptor->direction = STREAM_DIRECTION_RECEIVE; - apt_string_set(&media_descriptor->ip,"127.0.0.1"); - media_descriptor->port = 5000; - - stream_descriptor = apr_palloc(session->pool,sizeof(mpf_rtp_stream_descriptor_t)); - mpf_rtp_stream_descriptor_init(stream_descriptor); - stream_descriptor->local = media_descriptor; - stream_descriptor->settings = agent->rtp_settings; - return stream_descriptor; -} - -/** Create RTP rx remote descriptor */ -static mpf_rtp_stream_descriptor_t* mpf_rtp_rx_remote_descriptor_create(const mpf_suite_agent_t *agent, const mpf_suite_session_t *session) -{ - mpf_codec_list_t *codec_list; - mpf_codec_descriptor_t *codec_descriptor; - mpf_rtp_media_descriptor_t *media_descriptor; - mpf_rtp_stream_descriptor_t *stream_descriptor; - - media_descriptor = apr_palloc(session->pool,sizeof(mpf_rtp_media_descriptor_t)); - mpf_rtp_media_descriptor_init(media_descriptor); - media_descriptor->state = MPF_MEDIA_ENABLED; - media_descriptor->direction = STREAM_DIRECTION_SEND; - apt_string_set(&media_descriptor->ip,"127.0.0.1"); - media_descriptor->port = 5002; - codec_list = &media_descriptor->codec_list; - mpf_codec_list_init(codec_list,1,session->pool); - codec_descriptor = mpf_codec_list_add(codec_list); - if(codec_descriptor) { - codec_descriptor->payload_type = 0; - apt_string_set(&codec_descriptor->name,"PCMU"); - codec_descriptor->sampling_rate = 8000; - codec_descriptor->channel_count = 1; - } - - stream_descriptor = apr_palloc(session->pool,sizeof(mpf_rtp_stream_descriptor_t)); - mpf_rtp_stream_descriptor_init(stream_descriptor); - stream_descriptor->remote = media_descriptor; - stream_descriptor->settings = agent->rtp_settings; - return stream_descriptor; -} - -/** Create RTP tx local descriptor */ -static mpf_rtp_stream_descriptor_t* mpf_rtp_tx_local_descriptor_create(const mpf_suite_agent_t *agent, const mpf_suite_session_t *session) -{ - mpf_rtp_media_descriptor_t *media_descriptor; - mpf_rtp_stream_descriptor_t *stream_descriptor; - - media_descriptor = apr_palloc(session->pool,sizeof(mpf_rtp_media_descriptor_t)); - mpf_rtp_media_descriptor_init(media_descriptor); - media_descriptor->state = MPF_MEDIA_ENABLED; - media_descriptor->direction = STREAM_DIRECTION_SEND; - apt_string_set(&media_descriptor->ip,"127.0.0.1"); - media_descriptor->port = 5002; - - stream_descriptor = apr_palloc(session->pool,sizeof(mpf_rtp_stream_descriptor_t)); - mpf_rtp_stream_descriptor_init(stream_descriptor); - stream_descriptor->local = media_descriptor; - stream_descriptor->settings = agent->rtp_settings; - return stream_descriptor; -} - -/** Create RTP tx remote descriptor */ -static mpf_rtp_stream_descriptor_t* mpf_rtp_tx_remote_descriptor_create(const mpf_suite_agent_t *agent, const mpf_suite_session_t *session) -{ - mpf_codec_list_t *codec_list; - mpf_codec_descriptor_t *codec_descriptor; - mpf_rtp_media_descriptor_t *media_descriptor; - mpf_rtp_stream_descriptor_t *stream_descriptor; - - media_descriptor = apr_palloc(session->pool,sizeof(mpf_rtp_media_descriptor_t)); - mpf_rtp_media_descriptor_init(media_descriptor); - media_descriptor->state = MPF_MEDIA_ENABLED; - media_descriptor->direction = STREAM_DIRECTION_RECEIVE; - apt_string_set(&media_descriptor->ip,"127.0.0.1"); - media_descriptor->port = 5000; - codec_list = &media_descriptor->codec_list; - mpf_codec_list_init(codec_list,1,session->pool); - codec_descriptor = mpf_codec_list_add(codec_list); - if(codec_descriptor) { - codec_descriptor->payload_type = 0; - apt_string_set(&codec_descriptor->name,"PCMU"); - codec_descriptor->sampling_rate = 8000; - codec_descriptor->channel_count = 1; - } - - stream_descriptor = apr_palloc(session->pool,sizeof(mpf_rtp_stream_descriptor_t)); - mpf_rtp_stream_descriptor_init(stream_descriptor); - stream_descriptor->remote = media_descriptor; - stream_descriptor->settings = agent->rtp_settings; - return stream_descriptor; -} diff --git a/libs/unimrcp/tests/mrcptest/Makefile.am b/libs/unimrcp/tests/mrcptest/Makefile.am deleted file mode 100644 index 02bba679553..00000000000 --- a/libs/unimrcp/tests/mrcptest/Makefile.am +++ /dev/null @@ -1,17 +0,0 @@ -MAINTAINERCLEANFILES = Makefile.in - -AM_CPPFLAGS = -I$(top_srcdir)/libs/mrcp/include \ - -I$(top_srcdir)/libs/mrcp/message/include \ - -I$(top_srcdir)/libs/mrcp/control/include \ - -I$(top_srcdir)/libs/mrcp/resources/include \ - -I$(top_srcdir)/libs/apr-toolkit/include \ - $(UNIMRCP_APR_INCLUDES) - -noinst_PROGRAMS = mrcptest -mrcptest_LDADD = $(top_builddir)/libs/mrcp/libmrcp.la \ - $(top_builddir)/libs/apr-toolkit/libaprtoolkit.la \ - $(UNIMRCP_APR_LIBS) -mrcptest_SOURCES = src/main.c \ - src/parse_gen_suite.c \ - src/set_get_suite.c \ - src/transparent_set_get_suite.c diff --git a/libs/unimrcp/tests/mrcptest/mrcptest.vcproj b/libs/unimrcp/tests/mrcptest/mrcptest.vcproj deleted file mode 100644 index eaba7349cf0..00000000000 --- a/libs/unimrcp/tests/mrcptest/mrcptest.vcproj +++ /dev/null @@ -1,304 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/libs/unimrcp/tests/mrcptest/mrcptest.vcxproj b/libs/unimrcp/tests/mrcptest/mrcptest.vcxproj deleted file mode 100644 index c49e4193a64..00000000000 --- a/libs/unimrcp/tests/mrcptest/mrcptest.vcxproj +++ /dev/null @@ -1,127 +0,0 @@ - - - - - Debug - Win32 - - - Debug - x64 - - - Release - Win32 - - - Release - x64 - - - - {3CA97077-6210-4362-998A-D15A35EEAA08} - mrcptest - - - - Application - - - Application - - - Application - - - Application - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - <_ProjectFileVersion>10.0.30319.1 - AllRules.ruleset - - - AllRules.ruleset - - - AllRules.ruleset - - - AllRules.ruleset - - - - - - mrcp.lib;aprtoolkit.lib;libaprutil-1.lib;libapr-1.lib;%(AdditionalDependencies) - - - - - mrcp.lib;aprtoolkit.lib;libaprutil-1.lib;libapr-1.lib;%(AdditionalDependencies) - UseLinkTimeCodeGeneration - - - - - X64 - - - ProgramDatabase - - - mrcp.lib;aprtoolkit.lib;libaprutil-1.lib;libapr-1.lib;%(AdditionalDependencies) - - - - - X64 - - - mrcp.lib;aprtoolkit.lib;libaprutil-1.lib;libapr-1.lib;%(AdditionalDependencies) - UseLinkTimeCodeGeneration - - - - - - - - - - - {1c320193-46a6-4b34-9c56-8ab584fc1b56} - false - - - - - - \ No newline at end of file diff --git a/libs/unimrcp/tests/mrcptest/mrcptest.vcxproj.filters b/libs/unimrcp/tests/mrcptest/mrcptest.vcxproj.filters deleted file mode 100644 index b0435c5f24c..00000000000 --- a/libs/unimrcp/tests/mrcptest/mrcptest.vcxproj.filters +++ /dev/null @@ -1,27 +0,0 @@ - - - - - {4FC737F1-C7A5-4376-A066-2A32D752A2FF} - cpp;c;cc;cxx;def;odl;idl;hpj;bat;asm;asmx - - - {93995380-89BD-4b04-88EB-625FBE52EBFB} - h;hpp;hxx;hm;inl;inc;xsd - - - - - src - - - src - - - src - - - src - - - \ No newline at end of file diff --git a/libs/unimrcp/tests/mrcptest/src/main.c b/libs/unimrcp/tests/mrcptest/src/main.c deleted file mode 100644 index dd12d221772..00000000000 --- a/libs/unimrcp/tests/mrcptest/src/main.c +++ /dev/null @@ -1,58 +0,0 @@ -/* - * Copyright 2008-2014 Arsen Chaloyan - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - * - * $Id: main.c 2136 2014-07-04 06:33:36Z achaloyan@gmail.com $ - */ - -#include "apt_test_suite.h" -#include "apt_log.h" - -apt_test_suite_t* parse_gen_test_suite_create(apr_pool_t *pool); -apt_test_suite_t* set_get_test_suite_create(apr_pool_t *pool); -apt_test_suite_t* transparent_set_get_test_suite_create(apr_pool_t *pool); - -int main(int argc, const char * const *argv) -{ - apt_test_framework_t *test_framework; - apt_test_suite_t *test_suite; - apr_pool_t *pool; - - /* one time apr global initialization */ - if(apr_initialize() != APR_SUCCESS) { - return 0; - } - - /* create test framework */ - test_framework = apt_test_framework_create(); - pool = apt_test_framework_pool_get(test_framework); - - /* create test suites and add them to test framework */ - test_suite = set_get_test_suite_create(pool); - apt_test_framework_suite_add(test_framework,test_suite); - test_suite = transparent_set_get_test_suite_create(pool); - apt_test_framework_suite_add(test_framework,test_suite); - test_suite = parse_gen_test_suite_create(pool); - apt_test_framework_suite_add(test_framework,test_suite); - - /* run tests */ - apt_test_framework_run(test_framework,argc,argv); - - /* destroy test framework */ - apt_test_framework_destroy(test_framework); - - /* final apr global termination */ - apr_terminate(); - return 0; -} diff --git a/libs/unimrcp/tests/mrcptest/src/parse_gen_suite.c b/libs/unimrcp/tests/mrcptest/src/parse_gen_suite.c deleted file mode 100644 index 9d087cdcb3e..00000000000 --- a/libs/unimrcp/tests/mrcptest/src/parse_gen_suite.c +++ /dev/null @@ -1,212 +0,0 @@ -/* - * Copyright 2008-2014 Arsen Chaloyan - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - * - * $Id: parse_gen_suite.c 2249 2014-11-19 05:26:24Z achaloyan@gmail.com $ - */ - -#include -#include -#include "apt_test_suite.h" -#include "apt_log.h" -#include "mrcp_resource_loader.h" -#include "mrcp_resource_factory.h" -#include "mrcp_message.h" -#include "mrcp_stream.h" - -static apt_bool_t test_stream_generate(mrcp_generator_t *generator, mrcp_message_t *message) -{ - char buffer[500]; - apt_text_stream_t stream; - apt_message_status_e status; - apt_bool_t continuation; - - do { - apt_text_stream_init(&stream,buffer,sizeof(buffer)-1); - continuation = FALSE; - status = mrcp_generator_run(generator,message,&stream); - if(status == APT_MESSAGE_STATUS_COMPLETE) { - stream.text.length = stream.pos - stream.text.buf; - *stream.pos = '\0'; - apt_log(APT_LOG_MARK,APT_PRIO_NOTICE,"Generated MRCPv2 Data [%"APR_SIZE_T_FMT" bytes]\n%s",stream.text.length,stream.text.buf); - } - else if(status == APT_MESSAGE_STATUS_INCOMPLETE) { - *stream.pos = '\0'; - apt_log(APT_LOG_MARK,APT_PRIO_NOTICE,"Generated MRCPv2 Data [%"APR_SIZE_T_FMT" bytes] continuation awaited\n%s",stream.text.length,stream.text.buf); - continuation = TRUE; - } - else if(status == APT_MESSAGE_STATUS_INVALID) { - apt_log(APT_LOG_MARK,APT_PRIO_WARNING,"Failed to Generate MRCPv2 Data"); - } - } - while(continuation == TRUE); - return TRUE; -} - -static apt_bool_t mrcp_message_handler(mrcp_generator_t *generator, mrcp_message_t *message, apt_message_status_e status) -{ - if(status == APT_MESSAGE_STATUS_COMPLETE) { - /* message is completely parsed */ - test_stream_generate(generator,message); - } - return TRUE; -} - -static apt_bool_t resource_name_read(apr_file_t *file, mrcp_parser_t *parser) -{ - char buffer[100]; - apt_text_stream_t stream; - apt_bool_t status = FALSE; - apt_text_stream_init(&stream,buffer,sizeof(buffer)-1); - if(apr_file_read(file,stream.pos,&stream.text.length) != APR_SUCCESS) { - return FALSE; - } - - /* skip the first line in a test file, which indicates resource name */ - if(*stream.pos =='/' && *(stream.pos+1)=='/') { - apt_str_t line; - stream.pos += 2; - if(apt_text_line_read(&stream,&line) == TRUE) { - apr_off_t offset = stream.pos - stream.text.buf; - apr_file_seek(file,APR_SET,&offset); - mrcp_parser_resource_set(parser,&line); - status = TRUE; - } - } - return status; -} - -static apt_bool_t test_file_process(apt_test_suite_t *suite, mrcp_resource_factory_t *factory, mrcp_version_e version, const char *file_path) -{ - apr_file_t *file; - char buffer[500]; - apt_text_stream_t stream; - mrcp_parser_t *parser; - mrcp_generator_t *generator; - apr_size_t length; - apr_size_t offset; - apt_str_t resource_name; - mrcp_message_t *message; - apt_message_status_e msg_status; - - apt_log(APT_LOG_MARK,APT_PRIO_INFO,"Open File [%s]",file_path); - if(apr_file_open(&file,file_path,APR_FOPEN_READ | APR_FOPEN_BINARY,APR_OS_DEFAULT,suite->pool) != APR_SUCCESS) { - apt_log(APT_LOG_MARK,APT_PRIO_WARNING,"Failed to Open File"); - return FALSE; - } - - parser = mrcp_parser_create(factory,suite->pool); - generator = mrcp_generator_create(factory,suite->pool); - - apt_string_reset(&resource_name); - if(version == MRCP_VERSION_1) { - resource_name_read(file,parser); - } - - apt_text_stream_init(&stream,buffer,sizeof(buffer)-1); - - do { - /* calculate offset remaining from the previous receive / if any */ - offset = stream.pos - stream.text.buf; - /* calculate available length */ - length = sizeof(buffer) - 1 - offset; - - if(apr_file_read(file,stream.pos,&length) != APR_SUCCESS) { - break; - } - /* calculate actual length of the stream */ - stream.text.length = offset + length; - stream.pos[length] = '\0'; - apt_log(APT_LOG_MARK,APT_PRIO_INFO,"Parse MRCPv2 Data [%"APR_SIZE_T_FMT" bytes]\n%s",length,stream.pos); - - /* reset pos */ - apt_text_stream_reset(&stream); - - do { - msg_status = mrcp_parser_run(parser,&stream,&message); - mrcp_message_handler(generator,message,msg_status); - } - while(apt_text_is_eos(&stream) == FALSE); - - /* scroll remaining stream */ - apt_text_stream_scroll(&stream); - } - while(apr_file_eof(file) != APR_EOF); - - apr_file_close(file); - return TRUE; -} - -static apt_bool_t test_dir_process(apt_test_suite_t *suite, mrcp_resource_factory_t *factory, mrcp_version_e version) -{ - apr_status_t rv; - apr_dir_t *dir; - - const char *dir_name = "v2"; - if(version == MRCP_VERSION_1) { - dir_name = "v1"; - } - if(apr_dir_open(&dir,dir_name,suite->pool) != APR_SUCCESS) { - apt_log(APT_LOG_MARK,APT_PRIO_WARNING,"Cannot Open Directory [%s]",dir_name); - return FALSE; - } - - do { - apr_finfo_t finfo; - rv = apr_dir_read(&finfo,APR_FINFO_DIRENT,dir); - if(rv == APR_SUCCESS) { - if(finfo.filetype == APR_REG && finfo.name) { - int ch; - char *file_path; - apr_filepath_merge(&file_path,dir_name,finfo.name,APR_FILEPATH_NATIVE,suite->pool); - test_file_process(suite,factory,version,file_path); - printf("\nPress ENTER to continue\n"); - do {ch = getchar(); } while ((ch != '\n') && (ch != EOF)); - } - } - } - while(rv == APR_SUCCESS); - - apr_dir_close(dir); - return TRUE; -} - -static apt_bool_t parse_gen_test_run(apt_test_suite_t *suite, int argc, const char * const *argv) -{ - mrcp_resource_factory_t *factory; - mrcp_resource_loader_t *resource_loader; - resource_loader = mrcp_resource_loader_create(TRUE,suite->pool); - if(!resource_loader) { - apt_log(APT_LOG_MARK,APT_PRIO_WARNING,"Failed to Create Resource Loader"); - return FALSE; - } - - factory = mrcp_resource_factory_get(resource_loader); - if(!factory) { - apt_log(APT_LOG_MARK,APT_PRIO_WARNING,"Failed to Create Resource Factory"); - return FALSE; - } - - test_dir_process(suite,factory,MRCP_VERSION_2); - test_dir_process(suite,factory,MRCP_VERSION_1); - - mrcp_resource_factory_destroy(factory); - return TRUE; -} - -apt_test_suite_t* parse_gen_test_suite_create(apr_pool_t *pool) -{ - apt_test_suite_t *suite = apt_test_suite_create(pool,"parse-gen",NULL,parse_gen_test_run); - return suite; -} diff --git a/libs/unimrcp/tests/mrcptest/src/set_get_suite.c b/libs/unimrcp/tests/mrcptest/src/set_get_suite.c deleted file mode 100644 index f7ac1cfcef2..00000000000 --- a/libs/unimrcp/tests/mrcptest/src/set_get_suite.c +++ /dev/null @@ -1,326 +0,0 @@ -/* - * Copyright 2008-2014 Arsen Chaloyan - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - * - * $Id: set_get_suite.c 2136 2014-07-04 06:33:36Z achaloyan@gmail.com $ - */ - -#include "apt_test_suite.h" -#include "apt_log.h" -/* common includes */ -#include "mrcp_resource_loader.h" -#include "mrcp_resource_factory.h" -#include "mrcp_message.h" -#include "mrcp_generic_header.h" -/* synthesizer includes */ -#include "mrcp_synth_header.h" -#include "mrcp_synth_resource.h" -/* recognizer includes */ -#include "mrcp_recog_header.h" -#include "mrcp_recog_resource.h" - -#define SAMPLE_VOICE_AGE 28 -#define SAMPLE_CONTENT_TYPE "application/synthesis+ssml" -#define SAMPLE_CONTENT_ID "123456" -#define SAMPLE_CONTENT "SSML content goes here" -#define SAMPLE_PARAM_NAME "SampleParamName" -#define SAMPLE_PARAM_VALUE "SampleParamValue" - -/* Create SPEAK request */ -static mrcp_message_t* speak_request_create(mrcp_resource_factory_t *factory, apr_pool_t *pool) -{ - mrcp_message_t *message; - mrcp_resource_t *resource = mrcp_resource_get(factory,MRCP_SYNTHESIZER_RESOURCE); - if(!resource) { - return NULL; - } - apt_log(APT_LOG_MARK,APT_PRIO_NOTICE,"Create SPEAK Request"); - message = mrcp_request_create(resource,MRCP_VERSION_2,SYNTHESIZER_SPEAK,pool); - if(message) { - mrcp_generic_header_t *generic_header; - mrcp_synth_header_t *synth_header; - /* get/allocate generic header */ - generic_header = mrcp_generic_header_prepare(message); - if(generic_header) { - /* set generic header fields */ - apt_log(APT_LOG_MARK,APT_PRIO_INFO,"Set Content-Type: %s",SAMPLE_CONTENT_TYPE); - apt_string_assign(&generic_header->content_type,SAMPLE_CONTENT_TYPE,message->pool); - mrcp_generic_header_property_add(message,GENERIC_HEADER_CONTENT_TYPE); - } - /* get/allocate synthesizer header */ - synth_header = mrcp_resource_header_prepare(message); - if(synth_header) { - /* set synthesizer header fields */ - apt_log(APT_LOG_MARK,APT_PRIO_INFO,"Set Voice-Age: %d",SAMPLE_VOICE_AGE); - synth_header->voice_param.age = SAMPLE_VOICE_AGE; - mrcp_resource_header_property_add(message,SYNTHESIZER_HEADER_VOICE_AGE); - } - /* set message body */ - apt_log(APT_LOG_MARK,APT_PRIO_INFO,"Set Body: %s",SAMPLE_CONTENT); - apt_string_assign(&message->body,SAMPLE_CONTENT,message->pool); - } - return message; -} - -/* Test SPEAK request */ -static apt_bool_t speak_request_test(mrcp_resource_factory_t *factory, mrcp_message_t *message) -{ - apt_bool_t res; - mrcp_generic_header_t *generic_header; - mrcp_synth_header_t *synth_header; - apt_log(APT_LOG_MARK,APT_PRIO_NOTICE,"Test SPEAK Request"); - res = FALSE; - /* get generic header */ - generic_header = mrcp_generic_header_get(message); - if(generic_header) { - /* test content type header */ - if(mrcp_generic_header_property_check(message,GENERIC_HEADER_CONTENT_TYPE) == TRUE) { - if(strncasecmp(generic_header->content_type.buf,SAMPLE_CONTENT_TYPE,generic_header->content_type.length) == 0) { - /* OK */ - apt_log(APT_LOG_MARK,APT_PRIO_INFO,"Get Content-Type: %s",generic_header->content_type.buf); - res = TRUE; - } - } - } - if(res == FALSE) { - apt_log(APT_LOG_MARK,APT_PRIO_WARNING,"Failed to Test Generic Header"); - return FALSE; - } - - res = FALSE; - /* get synthesizer header */ - synth_header = mrcp_resource_header_get(message); - if(synth_header) { - /* test voice age header */ - if(mrcp_resource_header_property_check(message,SYNTHESIZER_HEADER_VOICE_AGE) == TRUE) { - if(synth_header->voice_param.age == SAMPLE_VOICE_AGE) { - /* OK */ - apt_log(APT_LOG_MARK,APT_PRIO_INFO,"Get Voice-Age: %"APR_SIZE_T_FMT,synth_header->voice_param.age); - res = TRUE; - } - } - } - if(res == FALSE) { - apt_log(APT_LOG_MARK,APT_PRIO_WARNING,"Failed to Test Synthesizer Header"); - return FALSE; - } - - if(strncasecmp(message->body.buf,SAMPLE_CONTENT,message->body.length) != 0) { - apt_log(APT_LOG_MARK,APT_PRIO_WARNING,"Failed to Test Message Body"); - return FALSE; - } - apt_log(APT_LOG_MARK,APT_PRIO_INFO,"Get Body: %s",message->body.buf); - return TRUE; -} - -/* Create SPEAK response */ -static mrcp_message_t* speak_response_create(mrcp_resource_factory_t *factory, const mrcp_message_t *request) -{ - mrcp_message_t *response; - apt_log(APT_LOG_MARK,APT_PRIO_NOTICE,"Create SPEAK Response"); - response = mrcp_response_create(request,request->pool); - if(response) { - /* set IN-PROGRESS state */ - response->start_line.request_state = MRCP_REQUEST_STATE_INPROGRESS; - } - return response; -} - -/* Create SPEAK-COMPLETE event */ -static mrcp_message_t* speak_event_create(mrcp_resource_factory_t *factory, const mrcp_message_t *request) -{ - mrcp_message_t *event_message; - apt_log(APT_LOG_MARK,APT_PRIO_NOTICE,"Create SPEAK-COMPLETE Event"); - event_message = mrcp_event_create(request,SYNTHESIZER_SPEAK_COMPLETE,request->pool); - if(event_message) { - /* get/allocate synthesizer header */ - mrcp_synth_header_t *synth_header = mrcp_resource_header_prepare(event_message); - if(synth_header) { - /* set completion cause */ - synth_header->completion_cause = SYNTHESIZER_COMPLETION_CAUSE_NORMAL; - mrcp_resource_header_property_add(event_message,SYNTHESIZER_HEADER_COMPLETION_CAUSE); - } - /* set request state */ - event_message->start_line.request_state = MRCP_REQUEST_STATE_COMPLETE; - } - return event_message; -} - - -/* Create GET-PARAMS request */ -static mrcp_message_t* get_params_request_create(mrcp_resource_factory_t *factory, apr_pool_t *pool) -{ - mrcp_message_t *message; - mrcp_resource_t *resource = mrcp_resource_get(factory,MRCP_SYNTHESIZER_RESOURCE); - if(!resource) { - return NULL; - } - apt_log(APT_LOG_MARK,APT_PRIO_NOTICE,"Create GET-PARAMS Request"); - message = mrcp_request_create(resource,MRCP_VERSION_2,SYNTHESIZER_GET_PARAMS,pool); - if(message) { - apt_str_t param_name; - apt_str_t param_value; - mrcp_generic_header_t *generic_header; - mrcp_synth_header_t *synth_header; - /* get/allocate generic header */ - generic_header = mrcp_generic_header_prepare(message); - if(generic_header) { - /* set content id empty header */ - apt_log(APT_LOG_MARK,APT_PRIO_INFO,"Set Content-ID: "); - mrcp_generic_header_name_property_add(message,GENERIC_HEADER_CONTENT_ID); - - /* set vendor specific params header */ - generic_header->vendor_specific_params = apt_pair_array_create(1,pool); - apt_string_set(¶m_name,SAMPLE_PARAM_NAME); - apt_string_reset(¶m_value); - apt_log(APT_LOG_MARK,APT_PRIO_INFO,"Set Vendor-Specific-Params: %s",param_name.buf); - apt_pair_array_append(generic_header->vendor_specific_params,¶m_name,¶m_value,pool); - mrcp_generic_header_property_add(message,GENERIC_HEADER_VENDOR_SPECIFIC_PARAMS); - } - /* get/allocate synthesizer header */ - synth_header = mrcp_resource_header_prepare(message); - if(synth_header) { - /* set voice age empty header */ - apt_log(APT_LOG_MARK,APT_PRIO_INFO,"Set Voice-Age: "); - mrcp_resource_header_name_property_add(message,SYNTHESIZER_HEADER_VOICE_AGE); - } - } - return message; -} - -/* Create GET-PARAMS response */ -static mrcp_message_t* get_params_response_create(mrcp_resource_factory_t *factory, mrcp_message_t *request) -{ - apt_bool_t res; - mrcp_message_t *response; - apt_log(APT_LOG_MARK,APT_PRIO_NOTICE,"Create GET-PARAMS Response"); - response = mrcp_response_create(request,request->pool); - if(response) { - mrcp_generic_header_t *generic_header; - mrcp_synth_header_t *synth_header; - res = FALSE; - /* get generic header */ - generic_header = mrcp_generic_header_get(request); - if(generic_header) { - mrcp_generic_header_t *res_generic_header = mrcp_generic_header_prepare(response); - /* test content id header */ - if(mrcp_generic_header_property_check(request,GENERIC_HEADER_CONTENT_ID) == TRUE) { - apt_log(APT_LOG_MARK,APT_PRIO_INFO,"Set Content-ID: %s",SAMPLE_CONTENT_ID); - apt_string_assign(&res_generic_header->content_id,SAMPLE_CONTENT_ID,response->pool); - mrcp_generic_header_property_add(response,GENERIC_HEADER_CONTENT_ID); - res = TRUE; - } - /* test vendor specific header */ - if(mrcp_generic_header_property_check(request,GENERIC_HEADER_VENDOR_SPECIFIC_PARAMS) == TRUE) { - apt_str_t name; - const apt_pair_t *pair; - res_generic_header->vendor_specific_params = apt_pair_array_create(1,response->pool); - apt_string_set(&name,SAMPLE_PARAM_NAME); - pair = apt_pair_array_find(generic_header->vendor_specific_params,&name); - if(pair) { - apt_str_t value; - apt_string_set(&value,SAMPLE_PARAM_VALUE); - apt_log(APT_LOG_MARK,APT_PRIO_INFO,"Set Vendor-Specific-Params: %s=%s",name.buf,value.buf); - apt_pair_array_append(res_generic_header->vendor_specific_params,&name,&value,response->pool); - } - mrcp_generic_header_property_add(response,GENERIC_HEADER_VENDOR_SPECIFIC_PARAMS); - res = TRUE; - } - } - - if(res == FALSE) { - apt_log(APT_LOG_MARK,APT_PRIO_WARNING,"Failed to Test Generic Header"); - return NULL; - } - - res = FALSE; - /* get synthesizer header */ - synth_header = mrcp_resource_header_get(request); - if(synth_header) { - mrcp_synth_header_t *res_synth_header = mrcp_resource_header_prepare(response); - /* test voice age header */ - if(mrcp_resource_header_property_check(request,SYNTHESIZER_HEADER_VOICE_AGE) == TRUE) { - res_synth_header->voice_param.age = SAMPLE_VOICE_AGE; - apt_log(APT_LOG_MARK,APT_PRIO_INFO,"Set Voice-Age: %"APR_SIZE_T_FMT,res_synth_header->voice_param.age); - mrcp_resource_header_property_add(response,SYNTHESIZER_HEADER_VOICE_AGE); - res = TRUE; - } - } - if(res == FALSE) { - apt_log(APT_LOG_MARK,APT_PRIO_WARNING,"Failed to Test Synthesizer Header"); - return NULL; - } - - } - return response; -} - - - - -static apt_bool_t speak_test_run(apt_test_suite_t *suite, mrcp_resource_factory_t *factory) -{ - mrcp_message_t *message = speak_request_create(factory,suite->pool); - if(!message) { - return FALSE; - } - - if(speak_request_test(factory,message) != TRUE) { - return FALSE; - } - - speak_response_create(factory,message); - speak_event_create(factory,message); - return TRUE; -} - -static apt_bool_t get_params_test_run(apt_test_suite_t *suite, mrcp_resource_factory_t *factory) -{ - mrcp_message_t *message = get_params_request_create(factory,suite->pool); - if(!message) { - return FALSE; - } - - get_params_response_create(factory,message); - return TRUE; -} - -static apt_bool_t set_get_test_run(apt_test_suite_t *suite, int argc, const char * const *argv) -{ - mrcp_resource_factory_t *factory; - mrcp_resource_loader_t *resource_loader; - resource_loader = mrcp_resource_loader_create(TRUE,suite->pool); - if(!resource_loader) { - apt_log(APT_LOG_MARK,APT_PRIO_WARNING,"Failed to Create Resource Loader"); - return FALSE; - } - - factory = mrcp_resource_factory_get(resource_loader); - if(!factory) { - apt_log(APT_LOG_MARK,APT_PRIO_WARNING,"Failed to Create Resource Factory"); - return FALSE; - } - - speak_test_run(suite,factory); - get_params_test_run(suite,factory); - - mrcp_resource_factory_destroy(factory); - return TRUE; -} - -apt_test_suite_t* set_get_test_suite_create(apr_pool_t *pool) -{ - apt_test_suite_t *suite = apt_test_suite_create(pool,"set-get",NULL,set_get_test_run); - return suite; -} diff --git a/libs/unimrcp/tests/mrcptest/src/transparent_set_get_suite.c b/libs/unimrcp/tests/mrcptest/src/transparent_set_get_suite.c deleted file mode 100644 index 19ab6e42065..00000000000 --- a/libs/unimrcp/tests/mrcptest/src/transparent_set_get_suite.c +++ /dev/null @@ -1,252 +0,0 @@ -/* - * Copyright 2008-2014 Arsen Chaloyan - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - * - * $Id: transparent_set_get_suite.c 2136 2014-07-04 06:33:36Z achaloyan@gmail.com $ - */ - -#include "apt_test_suite.h" -#include "apt_log.h" -/* common includes */ -#include "mrcp_resource_loader.h" -#include "mrcp_resource_factory.h" -#include "mrcp_message.h" -/* synthesizer includes */ -#include "mrcp_synth_resource.h" -/* recognizer includes */ -#include "mrcp_recog_resource.h" - -#define SAMPLE_VOICE_AGE "28" -#define SAMPLE_CONTENT_TYPE "application/synthesis+ssml" -#define SAMPLE_CONTENT_ID "123456" -#define SAMPLE_CONTENT "SSML content goes here" -#define SAMPLE_PARAM_NAME "SampleParamName" -#define SAMPLE_PARAM_VALUE "SampleParamValue" - -/* Create SPEAK request */ -static mrcp_message_t* speak_request_create(mrcp_resource_factory_t *factory, apr_pool_t *pool) -{ - mrcp_message_t *message; - mrcp_resource_t *resource = mrcp_resource_get(factory,MRCP_SYNTHESIZER_RESOURCE); - if(!resource) { - return NULL; - } - apt_log(APT_LOG_MARK,APT_PRIO_NOTICE,"Create SPEAK Request"); - message = mrcp_request_create(resource,MRCP_VERSION_2,SYNTHESIZER_SPEAK,pool); - if(message) { - /* set transparent header fields */ - apt_header_field_t *header_field; - header_field = apt_header_field_create_c("Content-Type",SAMPLE_CONTENT_TYPE,message->pool); - if(header_field) { - apt_log(APT_LOG_MARK,APT_PRIO_INFO,"Set %s: %s",header_field->name.buf,header_field->value.buf); - mrcp_message_header_field_add(message,header_field); - } - - header_field = apt_header_field_create_c("Voice-Age",SAMPLE_VOICE_AGE,message->pool); - if(header_field) { - apt_log(APT_LOG_MARK,APT_PRIO_INFO,"Set %s: %s",header_field->name.buf,header_field->value.buf); - mrcp_message_header_field_add(message,header_field); - } - - /* set message body */ - apt_log(APT_LOG_MARK,APT_PRIO_INFO,"Set Body: %s",SAMPLE_CONTENT); - apt_string_assign(&message->body,SAMPLE_CONTENT,message->pool); - } - return message; -} - -/* Test SPEAK request */ -static apt_bool_t speak_request_test(mrcp_resource_factory_t *factory, mrcp_message_t *message) -{ - apt_bool_t res; - apt_header_field_t *header_field; - apt_log(APT_LOG_MARK,APT_PRIO_NOTICE,"Test SPEAK Request"); - res = FALSE; - - header_field = NULL; - while( (header_field = mrcp_message_next_header_field_get(message,header_field)) != NULL ) { - if(strncasecmp(header_field->name.buf,"Content-Type",header_field->name.length) == 0) { - if(strncasecmp(header_field->value.buf,SAMPLE_CONTENT_TYPE,header_field->value.length) == 0) { - /* OK */ - apt_log(APT_LOG_MARK,APT_PRIO_INFO,"Get %s: %s",header_field->name.buf,header_field->value.buf); - res = TRUE; - } - } - else if(strncasecmp(header_field->name.buf,"Voice-Age",header_field->name.length) == 0) { - if(strncasecmp(header_field->value.buf,SAMPLE_VOICE_AGE,header_field->value.length) == 0) { - /* OK */ - apt_log(APT_LOG_MARK,APT_PRIO_INFO,"Get %s: %s",header_field->name.buf,header_field->value.buf); - res = TRUE; - } - } - } - if(res == FALSE) { - apt_log(APT_LOG_MARK,APT_PRIO_WARNING,"Failed to Test Header Fields"); - return FALSE; - } - - if(strncasecmp(message->body.buf,SAMPLE_CONTENT,message->body.length) != 0) { - apt_log(APT_LOG_MARK,APT_PRIO_WARNING,"Failed to Test Message Body"); - return FALSE; - } - apt_log(APT_LOG_MARK,APT_PRIO_INFO,"Get Body: %s",message->body.buf); - return TRUE; -} - -/* Create SPEAK response */ -static mrcp_message_t* speak_response_create(mrcp_resource_factory_t *factory, const mrcp_message_t *request) -{ - mrcp_message_t *response; - apt_log(APT_LOG_MARK,APT_PRIO_NOTICE,"Create SPEAK Response"); - response = mrcp_response_create(request,request->pool); - if(response) { - /* set IN-PROGRESS state */ - response->start_line.request_state = MRCP_REQUEST_STATE_INPROGRESS; - } - return response; -} - -/* Create SPEAK-COMPLETE event */ -static mrcp_message_t* speak_event_create(mrcp_resource_factory_t *factory, const mrcp_message_t *request) -{ - mrcp_message_t *event_message; - apt_log(APT_LOG_MARK,APT_PRIO_NOTICE,"Create SPEAK-COMPLETE Event"); - event_message = mrcp_event_create(request,SYNTHESIZER_SPEAK_COMPLETE,request->pool); - if(event_message) { - apt_header_field_t *header_field; - header_field = apt_header_field_create_c("Completion-Cause","000 normal",event_message->pool); - if(header_field) { - mrcp_message_header_field_add(event_message,header_field); - } - - /* set request state */ - event_message->start_line.request_state = MRCP_REQUEST_STATE_COMPLETE; - } - return event_message; -} - -/* Create GET-PARAMS request */ -static mrcp_message_t* get_params_request_create(mrcp_resource_factory_t *factory, apr_pool_t *pool) -{ - mrcp_message_t *message; - mrcp_resource_t *resource = mrcp_resource_get(factory,MRCP_SYNTHESIZER_RESOURCE); - if(!resource) { - return NULL; - } - apt_log(APT_LOG_MARK,APT_PRIO_NOTICE,"Create GET-PARAMS Request"); - message = mrcp_request_create(resource,MRCP_VERSION_2,SYNTHESIZER_GET_PARAMS,pool); - if(message) { - apt_header_field_t *header_field; - header_field = apt_header_field_create_c("Content-Id","",message->pool); - if(header_field) { - apt_log(APT_LOG_MARK,APT_PRIO_INFO,"Set %s:",header_field->name.buf); - mrcp_message_header_field_add(message,header_field); - } - header_field = apt_header_field_create_c("Vendor-Specific-Params",SAMPLE_PARAM_NAME,message->pool); - if(header_field) { - apt_log(APT_LOG_MARK,APT_PRIO_INFO,"Set %s:",header_field->name.buf); - mrcp_message_header_field_add(message,header_field); - } - header_field = apt_header_field_create_c("Voice-Age","",message->pool); - if(header_field) { - apt_log(APT_LOG_MARK,APT_PRIO_INFO,"Set %s:",header_field->name.buf); - mrcp_message_header_field_add(message,header_field); - } - } - return message; -} - -/* Create GET-PARAMS response */ -static mrcp_message_t* get_params_response_create(mrcp_resource_factory_t *factory, mrcp_message_t *request) -{ - mrcp_message_t *response; - apt_log(APT_LOG_MARK,APT_PRIO_NOTICE,"Create GET-PARAMS Response"); - response = mrcp_response_create(request,request->pool); - if(response) { - apt_header_field_t *header_field; - header_field = apt_header_field_create_c("Content-Id",SAMPLE_CONTENT_ID,response->pool); - if(header_field) { - apt_log(APT_LOG_MARK,APT_PRIO_INFO,"Set %s: %s",header_field->name.buf,header_field->value.buf); - mrcp_message_header_field_add(response,header_field); - } - header_field = apt_header_field_create_c("Vendor-Specific-Params",SAMPLE_PARAM_NAME"="SAMPLE_PARAM_VALUE,response->pool); - if(header_field) { - apt_log(APT_LOG_MARK,APT_PRIO_INFO,"Set %s: %s",header_field->name.buf,header_field->value.buf); - mrcp_message_header_field_add(response,header_field); - } - header_field = apt_header_field_create_c("Voice-Age",SAMPLE_VOICE_AGE,response->pool); - if(header_field) { - apt_log(APT_LOG_MARK,APT_PRIO_INFO,"Set %s: %s",header_field->name.buf,header_field->value.buf); - mrcp_message_header_field_add(response,header_field); - } - } - return response; -} - - -static apt_bool_t speak_test_run(apt_test_suite_t *suite, mrcp_resource_factory_t *factory) -{ - mrcp_message_t *message = speak_request_create(factory,suite->pool); - if(!message) { - return FALSE; - } - - if(speak_request_test(factory,message) != TRUE) { - return FALSE; - } - - speak_response_create(factory,message); - speak_event_create(factory,message); - return TRUE; -} - -static apt_bool_t get_params_test_run(apt_test_suite_t *suite, mrcp_resource_factory_t *factory) -{ - mrcp_message_t *message = get_params_request_create(factory,suite->pool); - if(!message) { - return FALSE; - } - - get_params_response_create(factory,message); - return TRUE; -} - -static apt_bool_t set_get_test_run(apt_test_suite_t *suite, int argc, const char * const *argv) -{ - mrcp_resource_factory_t *factory; - mrcp_resource_loader_t *resource_loader; - resource_loader = mrcp_resource_loader_create(TRUE,suite->pool); - if(!resource_loader) { - apt_log(APT_LOG_MARK,APT_PRIO_WARNING,"Failed to Create Resource Loader"); - return FALSE; - } - - factory = mrcp_resource_factory_get(resource_loader); - if(!factory) { - apt_log(APT_LOG_MARK,APT_PRIO_WARNING,"Failed to Create Resource Factory"); - return FALSE; - } - - speak_test_run(suite,factory); - get_params_test_run(suite,factory); - - mrcp_resource_factory_destroy(factory); - return TRUE; -} - -apt_test_suite_t* transparent_set_get_test_suite_create(apr_pool_t *pool) -{ - apt_test_suite_t *suite = apt_test_suite_create(pool,"trans-set-get",NULL,set_get_test_run); - return suite; -} diff --git a/libs/unimrcp/tests/mrcptest/v1/definegrammar.msg b/libs/unimrcp/tests/mrcptest/v1/definegrammar.msg deleted file mode 100644 index 1ea765535a8..00000000000 --- a/libs/unimrcp/tests/mrcptest/v1/definegrammar.msg +++ /dev/null @@ -1,18 +0,0 @@ -//speechrecog -DEFINE-GRAMMAR 543257 MRCP/1.0 -Content-Type:application/grammar+xml -Content-Id:request1@form-level.store -Content-Length:309 - - - - - - - - - - oui - yes - - \ No newline at end of file diff --git a/libs/unimrcp/tests/mrcptest/v1/getparams.msg b/libs/unimrcp/tests/mrcptest/v1/getparams.msg deleted file mode 100644 index 61ef0b9f933..00000000000 --- a/libs/unimrcp/tests/mrcptest/v1/getparams.msg +++ /dev/null @@ -1,5 +0,0 @@ -//speechsynth -GET-PARAMS 543256 MRCP/1.0 -Voice-gender: -Voice-variant: - diff --git a/libs/unimrcp/tests/mrcptest/v1/multi.msg b/libs/unimrcp/tests/mrcptest/v1/multi.msg deleted file mode 100644 index 8a1f44e7724..00000000000 --- a/libs/unimrcp/tests/mrcptest/v1/multi.msg +++ /dev/null @@ -1,27 +0,0 @@ -//speechsynth -GET-PARAMS 543256 MRCP/1.0 -Voice-gender: -Voice-variant: - -SET-PARAMS 543256 MRCP/1.0 -Voice-gender:female -Voice-variant:3 - -SPEAK 543257 MRCP/1.0 -Kill-On-Barge-In:false -Voice-gender:neutral -Prosody-volume:medium -Content-Type:application/synthesis+ssml -Content-Length:412 - - - - - You have 4 new messages. - The first is from Stephanie Williams - and arrived at - 3:45pm. - - The subject is ski trip - - \ No newline at end of file diff --git a/libs/unimrcp/tests/mrcptest/v1/pause.msg b/libs/unimrcp/tests/mrcptest/v1/pause.msg deleted file mode 100644 index 1ba3d79debd..00000000000 --- a/libs/unimrcp/tests/mrcptest/v1/pause.msg +++ /dev/null @@ -1,3 +0,0 @@ -//speechsynth -PAUSE 543258 MRCP/1.0 - diff --git a/libs/unimrcp/tests/mrcptest/v1/recognitioncomplete.msg b/libs/unimrcp/tests/mrcptest/v1/recognitioncomplete.msg deleted file mode 100644 index 054700a4966..00000000000 --- a/libs/unimrcp/tests/mrcptest/v1/recognitioncomplete.msg +++ /dev/null @@ -1,20 +0,0 @@ -//speechrecog -RECOGNITION-COMPLETE 543257 COMPLETE MRCP/1.0 -Completion-Cause:000 success -Waveform-URL:http://web.media.com/session123/audio.wav -Content-Type:application/x-nlsml -Content-Length:446 - - - - - - - Andre Roy - - - may I speak to Andre Roy - - \ No newline at end of file diff --git a/libs/unimrcp/tests/mrcptest/v1/recognize.msg b/libs/unimrcp/tests/mrcptest/v1/recognize.msg deleted file mode 100644 index 0f1c55d6d36..00000000000 --- a/libs/unimrcp/tests/mrcptest/v1/recognize.msg +++ /dev/null @@ -1,30 +0,0 @@ -//speechrecog -RECOGNIZE 543257 MRCP/1.0 -Confidence-Threshold:90 -Content-Type:application/grammar+xml -Content-Id:request1@form-level.store -Content-Length:608 - - - - - - - - - - oui - yes - - - - - - may I speak to - - Michel Tremblay - Andre Roy - - - - \ No newline at end of file diff --git a/libs/unimrcp/tests/mrcptest/v1/response.msg b/libs/unimrcp/tests/mrcptest/v1/response.msg deleted file mode 100644 index 744fe11ec7e..00000000000 --- a/libs/unimrcp/tests/mrcptest/v1/response.msg +++ /dev/null @@ -1,3 +0,0 @@ -//speechsynth -MRCP/1.0 543257 200 IN-PROGRESS - diff --git a/libs/unimrcp/tests/mrcptest/v1/resume.msg b/libs/unimrcp/tests/mrcptest/v1/resume.msg deleted file mode 100644 index 25bd8ab8734..00000000000 --- a/libs/unimrcp/tests/mrcptest/v1/resume.msg +++ /dev/null @@ -1,3 +0,0 @@ -//speechsynth -RESUME 543260 MRCP/1.0 - diff --git a/libs/unimrcp/tests/mrcptest/v1/setparams.msg b/libs/unimrcp/tests/mrcptest/v1/setparams.msg deleted file mode 100644 index 4fad0b2082e..00000000000 --- a/libs/unimrcp/tests/mrcptest/v1/setparams.msg +++ /dev/null @@ -1,5 +0,0 @@ -//speechsynth -SET-PARAMS 543256 MRCP/1.0 -Voice-gender:female -Voice-variant:3 - diff --git a/libs/unimrcp/tests/mrcptest/v1/speak.msg b/libs/unimrcp/tests/mrcptest/v1/speak.msg deleted file mode 100644 index d0f7d38db51..00000000000 --- a/libs/unimrcp/tests/mrcptest/v1/speak.msg +++ /dev/null @@ -1,19 +0,0 @@ -//speechsynth -SPEAK 543257 MRCP/1.0 -Kill-On-Barge-In:false -Voice-gender:neutral -Prosody-volume:medium -Content-Type:application/synthesis+ssml -Content-Length:412 - - - - - You have 4 new messages. - The first is from Stephanie Williams - and arrived at - 3:45pm. - - The subject is ski trip - - \ No newline at end of file diff --git a/libs/unimrcp/tests/mrcptest/v1/speakcomplete.msg b/libs/unimrcp/tests/mrcptest/v1/speakcomplete.msg deleted file mode 100644 index 52cadadbecf..00000000000 --- a/libs/unimrcp/tests/mrcptest/v1/speakcomplete.msg +++ /dev/null @@ -1,4 +0,0 @@ -//speechsynth -SPEAK-COMPLETE 543260 COMPLETE MRCP/1.0 -Completion-Cause:000 normal - diff --git a/libs/unimrcp/tests/mrcptest/v1/stop.msg b/libs/unimrcp/tests/mrcptest/v1/stop.msg deleted file mode 100644 index 2f44e1f9aac..00000000000 --- a/libs/unimrcp/tests/mrcptest/v1/stop.msg +++ /dev/null @@ -1,3 +0,0 @@ -//speechsynth -STOP 543258 MRCP/1.0 - diff --git a/libs/unimrcp/tests/mrcptest/v2/definegrammar.msg b/libs/unimrcp/tests/mrcptest/v2/definegrammar.msg deleted file mode 100644 index e96d3d3fa7d..00000000000 --- a/libs/unimrcp/tests/mrcptest/v2/definegrammar.msg +++ /dev/null @@ -1,30 +0,0 @@ -MRCP/2.0 865 DEFINE-GRAMMAR 543257 -Channel-Identifier:32AECB23433801@speechrecog -Content-Type:application/srgs+xml -Content-ID: -Content-Length:685 - - - - - - - - - - oui - yes - - - - - - may I speak to - - Michel Tremblay - Andre Roy - - - - \ No newline at end of file diff --git a/libs/unimrcp/tests/mrcptest/v2/getparams.msg b/libs/unimrcp/tests/mrcptest/v2/getparams.msg deleted file mode 100644 index 9b02a762ae8..00000000000 --- a/libs/unimrcp/tests/mrcptest/v2/getparams.msg +++ /dev/null @@ -1,5 +0,0 @@ -MRCP/2.0 112 GET-PARAMS 543256 -Channel-Identifier:32AECB23433802@speechsynth -Voice-gender: -Voice-variant: - diff --git a/libs/unimrcp/tests/mrcptest/v2/recognitioncomplete.msg b/libs/unimrcp/tests/mrcptest/v2/recognitioncomplete.msg deleted file mode 100644 index e68d28fe01f..00000000000 --- a/libs/unimrcp/tests/mrcptest/v2/recognitioncomplete.msg +++ /dev/null @@ -1,20 +0,0 @@ -MRCP/2.0 616 RECOGNITION-COMPLETE 543257 COMPLETE -Channel-Identifier:32AECB23433801@speechrecog -Completion-Cause:000 success -Waveform-URI:;size=342456;duration=25435 -Content-Type:application/nlsml+xml -Content-Length:430 - - - - - - - Andre Roy - - - may I speak to Andre Roy - - \ No newline at end of file diff --git a/libs/unimrcp/tests/mrcptest/v2/recognize.msg b/libs/unimrcp/tests/mrcptest/v2/recognize.msg deleted file mode 100644 index e3784914229..00000000000 --- a/libs/unimrcp/tests/mrcptest/v2/recognize.msg +++ /dev/null @@ -1,30 +0,0 @@ -MRCP/2.0 903 RECOGNIZE 543257 -Channel-Identifier:32AECB23433801@speechrecog -Confidence-Threshold:0.9 -Content-Type:application/srgs+xml -Content-ID: -Content-Length:702 - - - - - - - - - - oui - yes - - - - - - may I speak to - - Michel Tremblay - Andre Roy - - - \ No newline at end of file diff --git a/libs/unimrcp/tests/mrcptest/v2/setparams.msg b/libs/unimrcp/tests/mrcptest/v2/setparams.msg deleted file mode 100644 index 02db19e22e3..00000000000 --- a/libs/unimrcp/tests/mrcptest/v2/setparams.msg +++ /dev/null @@ -1,5 +0,0 @@ -MRCP/2.0 119 SET-PARAMS 543256 -Channel-Identifier:32AECB23433802@speechsynth -Voice-gender:female -Voice-variant:3 - diff --git a/libs/unimrcp/tests/mrcptest/v2/speak.msg b/libs/unimrcp/tests/mrcptest/v2/speak.msg deleted file mode 100644 index 4c540322e53..00000000000 --- a/libs/unimrcp/tests/mrcptest/v2/speak.msg +++ /dev/null @@ -1,26 +0,0 @@ -MRCP/2.0 732 SPEAK 543257 -Channel-Identifier:32AECB23433802@speechsynth -Voice-gender:neutral -Voice-Age:25 -Prosody-volume:medium -Content-Type:application/ssml+xml -Content-Length:542 - - - -

    - You have 4 new messages. - The first is from Stephanie Williams and arrived at - - 0345p. - - The subject is - ski trip - -

    -
    \ No newline at end of file diff --git a/libs/unimrcp/tests/mrcptest/v2/speakcomplete.msg b/libs/unimrcp/tests/mrcptest/v2/speakcomplete.msg deleted file mode 100644 index 2f1cf96765f..00000000000 --- a/libs/unimrcp/tests/mrcptest/v2/speakcomplete.msg +++ /dev/null @@ -1,5 +0,0 @@ -MRCP/2.0 161 SPEAK-COMPLETE 543257 COMPLETE -Channel-Identifier:32AECB23433802@speechsynth -Completion-Cause:000 normal -Speech-Marker:timestamp=857206027059 - diff --git a/libs/unimrcp/tests/mrcptest/v2/stop.msg b/libs/unimrcp/tests/mrcptest/v2/stop.msg deleted file mode 100644 index 003c767cb7c..00000000000 --- a/libs/unimrcp/tests/mrcptest/v2/stop.msg +++ /dev/null @@ -1,3 +0,0 @@ -MRCP/2.0 74 STOP 543258 -Channel-Identifier:32AECB23433802@speechsynth - diff --git a/libs/unimrcp/tests/rtsptest/Makefile.am b/libs/unimrcp/tests/rtsptest/Makefile.am deleted file mode 100644 index 0a6f82f231d..00000000000 --- a/libs/unimrcp/tests/rtsptest/Makefile.am +++ /dev/null @@ -1,12 +0,0 @@ -MAINTAINERCLEANFILES = Makefile.in - -AM_CPPFLAGS = -I$(top_srcdir)/libs/uni-rtsp/include \ - -I$(top_srcdir)/libs/apr-toolkit/include \ - $(UNIMRCP_APR_INCLUDES) - -noinst_PROGRAMS = rtsptest -rtsptest_LDADD = $(top_builddir)/libs/uni-rtsp/libunirtsp.la \ - $(top_builddir)/libs/apr-toolkit/libaprtoolkit.la \ - $(UNIMRCP_APR_LIBS) -rtsptest_SOURCES = src/main.c \ - src/parse_gen_suite.c diff --git a/libs/unimrcp/tests/rtsptest/msg/announce.msg b/libs/unimrcp/tests/rtsptest/msg/announce.msg deleted file mode 100644 index 142f16ce352..00000000000 --- a/libs/unimrcp/tests/rtsptest/msg/announce.msg +++ /dev/null @@ -1,24 +0,0 @@ -ANNOUNCE rtsp://media.server.com/media/synthesizer RTSP/1.0 -CSeq:4 -Session:12345678 -Content-Type:application/mrcp -Content-Length:567 - -SPEAK 543257 MRCP/1.0 -Kill-On-Barge-In:false -Voice-gender:neutral -Prosody-volume:medium -Content-Type:application/synthesis+ssml -Content-Length:412 - - - - - You have 4 new messages. - The first is from Stephanie Williams - and arrived at - 3:45pm. - - The subject is ski trip - - \ No newline at end of file diff --git a/libs/unimrcp/tests/rtsptest/msg/ok.msg b/libs/unimrcp/tests/rtsptest/msg/ok.msg deleted file mode 100644 index b88ac1ca401..00000000000 --- a/libs/unimrcp/tests/rtsptest/msg/ok.msg +++ /dev/null @@ -1,16 +0,0 @@ -RTSP/1.0 200 OK -CSeq:2 -Transport:RTP/AVP;unicast;client_port=46456-46457;server_port=46460-46461 -Session:12345678 -Content-Length:188 -Content-Type:application/sdp - -v=0 -o=- 3211724219 3211724219 IN IP4 10.3.2.88 -s=Media Server -c=IN IP4 0.0.0.0 -t=0 0 -m=audio 46460 RTP/AVP 0 96 -a=rtpmap:0 pcmu/8000 -a=rtpmap:96 telephone-event/8000 -a=fmtp:96 0-15 \ No newline at end of file diff --git a/libs/unimrcp/tests/rtsptest/msg/re-ok.msg b/libs/unimrcp/tests/rtsptest/msg/re-ok.msg deleted file mode 100644 index 2b8dd7503a2..00000000000 --- a/libs/unimrcp/tests/rtsptest/msg/re-ok.msg +++ /dev/null @@ -1,6 +0,0 @@ -RTSP/1.0 200 OK -CSeq:3 -Transport:RTP/AVP;unicast;client_port=46456-46457; - server_port=46460-46461;mode=record;ttl=127 -Session:12345678 - diff --git a/libs/unimrcp/tests/rtsptest/msg/re-setup.msg b/libs/unimrcp/tests/rtsptest/msg/re-setup.msg deleted file mode 100644 index 288ef23b300..00000000000 --- a/libs/unimrcp/tests/rtsptest/msg/re-setup.msg +++ /dev/null @@ -1,6 +0,0 @@ -SETUP rtsp://media.server.com/media/recognizer RTSP/1.0 -CSeq:3 -Transport:RTP/AVP;unicast;client_port=46456-46457; - mode=record;ttl=127 -Session:12345678;timeout=200 - diff --git a/libs/unimrcp/tests/rtsptest/msg/setup.msg b/libs/unimrcp/tests/rtsptest/msg/setup.msg deleted file mode 100644 index 16065002585..00000000000 --- a/libs/unimrcp/tests/rtsptest/msg/setup.msg +++ /dev/null @@ -1,16 +0,0 @@ -SETUP rtsp://media.server.com/media/synthesizer RTSP/1.0 -CSeq:2 -Transport:RTP/AVP;unicast;client_port=46456-46457 -Content-Type:application/sdp -Content-Length:188 - -v=0 -o=- 123 456 IN IP4 10.0.0.1 -s=Media Server -p=+1-888-555-1212 -c=IN IP4 0.0.0.0 -t=0 0 -m=audio 0 RTP/AVP 0 96 -a=rtpmap:0 pcmu/8000 -a=rtpmap:96 telephone-event/8000 -a=fmtp:96 0-15 \ No newline at end of file diff --git a/libs/unimrcp/tests/rtsptest/msg/teardown.msg b/libs/unimrcp/tests/rtsptest/msg/teardown.msg deleted file mode 100644 index f673a0ccd8f..00000000000 --- a/libs/unimrcp/tests/rtsptest/msg/teardown.msg +++ /dev/null @@ -1,4 +0,0 @@ -TEARDOWN rtsp://media.server.com/media/synthesizer RTSP/1.0 -CSeq:12 -Session:12345678 - diff --git a/libs/unimrcp/tests/rtsptest/msg/ultimate.msg b/libs/unimrcp/tests/rtsptest/msg/ultimate.msg deleted file mode 100644 index bac7ffe6837..00000000000 --- a/libs/unimrcp/tests/rtsptest/msg/ultimate.msg +++ /dev/null @@ -1,46 +0,0 @@ -RTSP/1.0 200 OK -CSeq:3 -Transport:RTP/AVP;unicast;client_port=46456-46457; - server_port=46460-46461;mode=record;ttl=127 -Session:12345678 - -SETUP rtsp://media.server.com/media/synthesizer RTSP/1.0 -CSeq:2 -Transport:RTP/AVP;unicast;client_port=46456-46457 -Content-Type:application/sdp -Content-Length:190 - -v=0 -o=- 123 456 IN IP4 10.0.0.1 -s=Media Server -p=+1-888-555-1212 -c=IN IP4 0.0.0.0 -t=0 0 -m=audio 0 RTP/AVP 0 96 -a=rtpmap:0 pcmu/8000 -a=rtpmap:96 telephone-event/8000 -a=fmtp:96 0-15 -ANNOUNCE rtsp://media.server.com/media/synthesizer RTSP/1.0 -CSeq:4 -Session:12345678 -Content-Type:application/mrcp -Content-Length:567 - -SPEAK 543257 MRCP/1.0 -Kill-On-Barge-In:false -Voice-gender:neutral -Prosody-volume:medium -Content-Type:application/synthesis+ssml -Content-Length:412 - - - - - You have 4 new messages. - The first is from Stephanie Williams - and arrived at - 3:45pm. - - The subject is ski trip - - \ No newline at end of file diff --git a/libs/unimrcp/tests/rtsptest/rtsptest.vcproj b/libs/unimrcp/tests/rtsptest/rtsptest.vcproj deleted file mode 100644 index 6051b862bd8..00000000000 --- a/libs/unimrcp/tests/rtsptest/rtsptest.vcproj +++ /dev/null @@ -1,296 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/libs/unimrcp/tests/rtsptest/rtsptest.vcxproj b/libs/unimrcp/tests/rtsptest/rtsptest.vcxproj deleted file mode 100644 index 5f0b4546fc8..00000000000 --- a/libs/unimrcp/tests/rtsptest/rtsptest.vcxproj +++ /dev/null @@ -1,125 +0,0 @@ - - - - - Debug - Win32 - - - Debug - x64 - - - Release - Win32 - - - Release - x64 - - - - {17A33F3F-BAF5-403F-8EF4-FECDA7D9A335} - rtsptest - - - - Application - - - Application - - - Application - - - Application - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - <_ProjectFileVersion>10.0.30319.1 - AllRules.ruleset - - - AllRules.ruleset - - - AllRules.ruleset - - - AllRules.ruleset - - - - - - unirtsp.lib;aprtoolkit.lib;libaprutil-1.lib;libapr-1.lib;%(AdditionalDependencies) - - - - - unirtsp.lib;aprtoolkit.lib;libaprutil-1.lib;libapr-1.lib;%(AdditionalDependencies) - UseLinkTimeCodeGeneration - - - - - X64 - - - ProgramDatabase - - - unirtsp.lib;aprtoolkit.lib;libaprutil-1.lib;libapr-1.lib;%(AdditionalDependencies) - - - - - X64 - - - unirtsp.lib;aprtoolkit.lib;libaprutil-1.lib;libapr-1.lib;%(AdditionalDependencies) - UseLinkTimeCodeGeneration - - - - - - - - - {504b3154-7a4f-459d-9877-b951021c3f1f} - false - - - - - - \ No newline at end of file diff --git a/libs/unimrcp/tests/rtsptest/rtsptest.vcxproj.filters b/libs/unimrcp/tests/rtsptest/rtsptest.vcxproj.filters deleted file mode 100644 index 62dd2c5691a..00000000000 --- a/libs/unimrcp/tests/rtsptest/rtsptest.vcxproj.filters +++ /dev/null @@ -1,21 +0,0 @@ - - - - - {4FC737F1-C7A5-4376-A066-2A32D752A2FF} - cpp;c;cc;cxx;def;odl;idl;hpj;bat;asm;asmx - - - {93995380-89BD-4b04-88EB-625FBE52EBFB} - h;hpp;hxx;hm;inl;inc;xsd - - - - - src - - - src - - - \ No newline at end of file diff --git a/libs/unimrcp/tests/rtsptest/src/main.c b/libs/unimrcp/tests/rtsptest/src/main.c deleted file mode 100644 index df5bad58fdf..00000000000 --- a/libs/unimrcp/tests/rtsptest/src/main.c +++ /dev/null @@ -1,52 +0,0 @@ -/* - * Copyright 2008-2014 Arsen Chaloyan - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - * - * $Id: main.c 2136 2014-07-04 06:33:36Z achaloyan@gmail.com $ - */ - -#include "apt_test_suite.h" -#include "apt_log.h" - -apt_test_suite_t* parse_gen_test_suite_create(apr_pool_t *pool); - -int main(int argc, const char * const *argv) -{ - apt_test_framework_t *test_framework; - apt_test_suite_t *test_suite; - apr_pool_t *pool; - - /* one time apr global initialization */ - if(apr_initialize() != APR_SUCCESS) { - return 0; - } - - /* create test framework */ - test_framework = apt_test_framework_create(); - pool = apt_test_framework_pool_get(test_framework); - - /* create test suites and add them to test framework */ - test_suite = parse_gen_test_suite_create(pool); - apt_test_framework_suite_add(test_framework,test_suite); - - /* run tests */ - apt_test_framework_run(test_framework,argc,argv); - - /* destroy test framework */ - apt_test_framework_destroy(test_framework); - - /* final apr global termination */ - apr_terminate(); - return 0; -} diff --git a/libs/unimrcp/tests/rtsptest/src/parse_gen_suite.c b/libs/unimrcp/tests/rtsptest/src/parse_gen_suite.c deleted file mode 100644 index 136ded899bf..00000000000 --- a/libs/unimrcp/tests/rtsptest/src/parse_gen_suite.c +++ /dev/null @@ -1,159 +0,0 @@ -/* - * Copyright 2008-2014 Arsen Chaloyan - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - * - * $Id: parse_gen_suite.c 2249 2014-11-19 05:26:24Z achaloyan@gmail.com $ - */ - -#include -#include -#include "apt_test_suite.h" -#include "apt_log.h" -#include "rtsp_stream.h" - -static apt_bool_t test_stream_generate(rtsp_generator_t *generator, rtsp_message_t *message) -{ - char buffer[500]; - apt_text_stream_t stream; - apt_message_status_e status; - apt_bool_t continuation; - - do { - apt_text_stream_init(&stream,buffer,sizeof(buffer)-1); - continuation = FALSE; - status = rtsp_generator_run(generator,message,&stream); - if(status == APT_MESSAGE_STATUS_COMPLETE) { - stream.text.length = stream.pos - stream.text.buf; - *stream.pos = '\0'; - apt_log(APT_LOG_MARK,APT_PRIO_NOTICE,"Generated RTSP Data [%"APR_SIZE_T_FMT" bytes]\n%s",stream.text.length,stream.text.buf); - } - else if(status == APT_MESSAGE_STATUS_INCOMPLETE) { - *stream.pos = '\0'; - apt_log(APT_LOG_MARK,APT_PRIO_NOTICE,"Generated RTSP Data [%"APR_SIZE_T_FMT" bytes] continuation awaited\n%s",stream.text.length,stream.text.buf); - continuation = TRUE; - } - else { - apt_log(APT_LOG_MARK,APT_PRIO_WARNING,"Failed to Generate RTSP Data"); - } - } - while(continuation == TRUE); - return TRUE; -} - -static apt_bool_t rtsp_message_handler(rtsp_generator_t *generator, rtsp_message_t *message, apt_message_status_e status) -{ - if(status == APT_MESSAGE_STATUS_COMPLETE) { - /* message is completely parsed */ - test_stream_generate(generator,message); - } - return TRUE; -} - -static apt_bool_t test_file_process(apt_test_suite_t *suite, const char *file_path) -{ - apr_file_t *file; - char buffer[500]; - apt_text_stream_t stream; - rtsp_parser_t *parser; - rtsp_generator_t *generator; - apr_size_t length; - apr_size_t offset; - rtsp_message_t *message; - apt_message_status_e msg_status; - - apt_log(APT_LOG_MARK,APT_PRIO_INFO,"Open File [%s]",file_path); - if(apr_file_open(&file,file_path,APR_FOPEN_READ | APR_FOPEN_BINARY,APR_OS_DEFAULT,suite->pool) != APR_SUCCESS) { - apt_log(APT_LOG_MARK,APT_PRIO_WARNING,"Failed to Open File"); - return FALSE; - } - - parser = rtsp_parser_create(suite->pool); - generator = rtsp_generator_create(suite->pool); - - apt_text_stream_init(&stream,buffer,sizeof(buffer)-1); - - do { - /* calculate offset remaining from the previous receive / if any */ - offset = stream.pos - stream.text.buf; - /* calculate available length */ - length = sizeof(buffer) - 1 - offset; - - if(apr_file_read(file,stream.pos,&length) != APR_SUCCESS) { - break; - } - /* calculate actual length of the stream */ - stream.text.length = offset + length; - stream.pos[length] = '\0'; - apt_log(APT_LOG_MARK,APT_PRIO_INFO,"Parse RTSP Data [%"APR_SIZE_T_FMT" bytes]\n%s",length,stream.pos); - - /* reset pos */ - apt_text_stream_reset(&stream); - - do { - msg_status = rtsp_parser_run(parser,&stream,&message); - rtsp_message_handler(generator,message,msg_status); - } - while(apt_text_is_eos(&stream) == FALSE); - - /* scroll remaining stream */ - apt_text_stream_scroll(&stream); - } - while(apr_file_eof(file) != APR_EOF); - - apr_file_close(file); - return TRUE; -} - -static apt_bool_t test_dir_process(apt_test_suite_t *suite) -{ - apr_status_t rv; - apr_dir_t *dir; - - const char *dir_name = "msg"; - if(apr_dir_open(&dir,dir_name,suite->pool) != APR_SUCCESS) { - apt_log(APT_LOG_MARK,APT_PRIO_WARNING,"Cannot Open Directory [%s]",dir_name); - return FALSE; - } - - do { - apr_finfo_t finfo; - rv = apr_dir_read(&finfo,APR_FINFO_DIRENT,dir); - if(rv == APR_SUCCESS) { - if(finfo.filetype == APR_REG && finfo.name) { - int ch; - char *file_path; - apr_filepath_merge(&file_path,dir_name,finfo.name,APR_FILEPATH_NATIVE,suite->pool); - test_file_process(suite,file_path); - printf("\nPress ENTER to continue\n"); - do {ch = getchar(); } while ((ch != '\n') && (ch != EOF)); - } - } - } - while(rv == APR_SUCCESS); - - apr_dir_close(dir); - return TRUE; -} - -static apt_bool_t parse_gen_test_run(apt_test_suite_t *suite, int argc, const char * const *argv) -{ - test_dir_process(suite); - return TRUE; -} - -apt_test_suite_t* parse_gen_test_suite_create(apr_pool_t *pool) -{ - apt_test_suite_t *suite = apt_test_suite_create(pool,"parse-gen",NULL,parse_gen_test_run); - return suite; -} diff --git a/libs/unimrcp/tests/sipp/mrcp_uac_multi b/libs/unimrcp/tests/sipp/mrcp_uac_multi deleted file mode 100644 index 5b2cbdab878..00000000000 --- a/libs/unimrcp/tests/sipp/mrcp_uac_multi +++ /dev/null @@ -1,108 +0,0 @@ - - - - - - - - - ;tag=[call_number] - To: sut - Call-ID: [call_id] - CSeq: 1 INVITE - Contact: sip:sipp@[local_ip]:[local_port] - Max-Forwards: 70 - Subject: Performance Test - Content-Type: application/sdp - Content-Length: [len] - - v=0 - o=user1 53655765 2353687637 IN IP4 [local_ip] - s=- - c=IN IP4 [media_ip] - t=0 0 - m=application 9 TCP/MRCPv2 1 - a=setup:active - a=connection:new - a=resource:speechsynth - a=cmid:1 - m=application 9 TCP/MRCPv2 1 - a=setup:active - a=connection:new - a=resource:speechrecog - a=cmid:1 - m=audio [media_port] RTP/AVP 0 8 - a=sendrecv - a=mid:1 - - ]]> - - - - - - - - - - - - - - - - - - ;tag=[call_number] - To: sut [peer_tag_param] - Call-ID: [call_id] - CSeq: 1 ACK - Contact: sip:sipp@[local_ip]:[local_port] - Max-Forwards: 70 - Subject: Performance Test - Content-Length: 0 - - ]]> - - - - - - - - - ;tag=[call_number] - To: sut [peer_tag_param] - Call-ID: [call_id] - CSeq: 2 BYE - Contact: sip:sipp@[local_ip]:[local_port] - Max-Forwards: 70 - Subject: Performance Test - Content-Length: 0 - - ]]> - - - - - - - - - - - - diff --git a/libs/unimrcp/tests/sipp/mrcp_uac_recog b/libs/unimrcp/tests/sipp/mrcp_uac_recog deleted file mode 100644 index 13ea1f44484..00000000000 --- a/libs/unimrcp/tests/sipp/mrcp_uac_recog +++ /dev/null @@ -1,103 +0,0 @@ - - - - - - - - - ;tag=[call_number] - To: sut - Call-ID: [call_id] - CSeq: 1 INVITE - Contact: sip:sipp@[local_ip]:[local_port] - Max-Forwards: 70 - Subject: Performance Test - Content-Type: application/sdp - Content-Length: [len] - - v=0 - o=user1 53655765 2353687637 IN IP4 [local_ip] - s=- - c=IN IP4 [media_ip] - t=0 0 - m=application 9 TCP/MRCPv2 1 - a=setup:active - a=connection:new - a=resource:speechrecog - a=cmid:1 - m=audio [media_port] RTP/AVP 0 8 - a=sendonly - a=mid:1 - - ]]> - - - - - - - - - - - - - - - - - - ;tag=[call_number] - To: sut [peer_tag_param] - Call-ID: [call_id] - CSeq: 1 ACK - Contact: sip:sipp@[local_ip]:[local_port] - Max-Forwards: 70 - Subject: Performance Test - Content-Length: 0 - - ]]> - - - - - - - - - ;tag=[call_number] - To: sut [peer_tag_param] - Call-ID: [call_id] - CSeq: 2 BYE - Contact: sip:sipp@[local_ip]:[local_port] - Max-Forwards: 70 - Subject: Performance Test - Content-Length: 0 - - ]]> - - - - - - - - - - - - diff --git a/libs/unimrcp/tests/sipp/mrcp_uac_synth b/libs/unimrcp/tests/sipp/mrcp_uac_synth deleted file mode 100644 index 627c8894db9..00000000000 --- a/libs/unimrcp/tests/sipp/mrcp_uac_synth +++ /dev/null @@ -1,103 +0,0 @@ - - - - - - - - - ;tag=[call_number] - To: sut - Call-ID: [call_id] - CSeq: 1 INVITE - Contact: sip:sipp@[local_ip]:[local_port] - Max-Forwards: 70 - Subject: Performance Test - Content-Type: application/sdp - Content-Length: [len] - - v=0 - o=user1 53655765 2353687637 IN IP4 [local_ip] - s=- - c=IN IP4 [media_ip] - t=0 0 - m=application 9 TCP/MRCPv2 1 - a=setup:active - a=connection:new - a=resource:speechsynth - a=cmid:1 - m=audio [media_port] RTP/AVP 0 8 - a=recvonly - a=mid:1 - - ]]> - - - - - - - - - - - - - - - - - - ;tag=[call_number] - To: sut [peer_tag_param] - Call-ID: [call_id] - CSeq: 1 ACK - Contact: sip:sipp@[local_ip]:[local_port] - Max-Forwards: 70 - Subject: Performance Test - Content-Length: 0 - - ]]> - - - - - - - - - ;tag=[call_number] - To: sut [peer_tag_param] - Call-ID: [call_id] - CSeq: 2 BYE - Contact: sip:sipp@[local_ip]:[local_port] - Max-Forwards: 70 - Subject: Performance Test - Content-Length: 0 - - ]]> - - - - - - - - - - - - diff --git a/libs/unimrcp/tests/sipp/mrcp_uac_unknown b/libs/unimrcp/tests/sipp/mrcp_uac_unknown deleted file mode 100644 index 190d9244910..00000000000 --- a/libs/unimrcp/tests/sipp/mrcp_uac_unknown +++ /dev/null @@ -1,102 +0,0 @@ - - - - - - - - - ;tag=[call_number] - To: sut - Call-ID: [call_id] - CSeq: 1 INVITE - Contact: sip:sipp@[local_ip]:[local_port] - Max-Forwards: 70 - Subject: Performance Test - Content-Type: application/sdp - Content-Length: [len] - - v=0 - o=user1 53655765 2353687637 IN IP4 [local_ip] - s=- - c=IN IP4 [media_ip] - t=0 0 - m=application 9 TCP/MRCPv2 1 - a=setup:active - a=connection:new - a=resource:unknown - a=cmid:1 - m=audio [media_port] RTP/AVP 0 8 - a=mid:1 - - ]]> - - - - - - - - - - - - - - - - - - ;tag=[call_number] - To: sut [peer_tag_param] - Call-ID: [call_id] - CSeq: 1 ACK - Contact: sip:sipp@[local_ip]:[local_port] - Max-Forwards: 70 - Subject: Performance Test - Content-Length: 0 - - ]]> - - - - - - - - - ;tag=[call_number] - To: sut [peer_tag_param] - Call-ID: [call_id] - CSeq: 2 BYE - Contact: sip:sipp@[local_ip]:[local_port] - Max-Forwards: 70 - Subject: Performance Test - Content-Length: 0 - - ]]> - - - - - - - - - - - - diff --git a/libs/unimrcp/tests/sipp/mrcp_uac_update b/libs/unimrcp/tests/sipp/mrcp_uac_update deleted file mode 100644 index da91fee3119..00000000000 --- a/libs/unimrcp/tests/sipp/mrcp_uac_update +++ /dev/null @@ -1,179 +0,0 @@ - - - - - - - - - ;tag=[call_number] - To: sut - Call-ID: [call_id] - CSeq: 1 INVITE - Contact: sip:sipp@[local_ip]:[local_port] - Max-Forwards: 70 - Subject: Performance Test - Content-Type: application/sdp - Content-Length: [len] - - v=0 - o=user1 53655765 2353687637 IN IP4 [local_ip] - s=- - c=IN IP4 [media_ip] - t=0 0 - m=application 9 TCP/MRCPv2 1 - a=setup:active - a=connection:new - a=resource:speechsynth - a=cmid:1 - m=audio [media_port] RTP/AVP 0 8 - a=recvonly - a=mid:1 - - ]]> - - - - - - - - - - - - - - - - - - ;tag=[call_number] - To: sut [peer_tag_param] - Call-ID: [call_id] - CSeq: 1 ACK - Contact: sip:sipp@[local_ip]:[local_port] - Max-Forwards: 70 - Subject: Performance Test - Content-Length: 0 - - ]]> - - - - - - - - - - ;tag=[call_number] - To: sut - Call-ID: [call_id] - CSeq: 1 INVITE - Contact: sip:sipp@[local_ip]:[local_port] - Max-Forwards: 70 - Subject: Performance Test - Content-Type: application/sdp - Content-Length: [len] - - v=0 - o=user1 53655765 2353687637 IN IP4 [local_ip] - s=- - c=IN IP4 [media_ip] - t=0 0 - m=application 9 TCP/MRCPv2 1 - a=setup:active - a=connection:new - a=resource:speechsynth - a=cmid:1 - m=audio [media_port] RTP/AVP 0 8 - a=sendrecv - a=mid:1 - m=application 9 TCP/MRCPv2 1 - a=setup:active - a=connection:existing - a=resource:speechrecog - a=cmid:1 - - ]]> - - - - - - - - - - - - - - - - - - ;tag=[call_number] - To: sut [peer_tag_param] - Call-ID: [call_id] - CSeq: 1 ACK - Contact: sip:sipp@[local_ip]:[local_port] - Max-Forwards: 70 - Subject: Performance Test - Content-Length: 0 - - ]]> - - - - - - - - - - ;tag=[call_number] - To: sut [peer_tag_param] - Call-ID: [call_id] - CSeq: 2 BYE - Contact: sip:sipp@[local_ip]:[local_port] - Max-Forwards: 70 - Subject: Performance Test - Content-Length: 0 - - ]]> - - - - - - - - - - - - diff --git a/libs/unimrcp/tests/sipp/mrcp_uas_recog b/libs/unimrcp/tests/sipp/mrcp_uas_recog deleted file mode 100644 index 27bc361a5db..00000000000 --- a/libs/unimrcp/tests/sipp/mrcp_uas_recog +++ /dev/null @@ -1,127 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - Content-Type: application/sdp - Content-Length: [len] - - v=0 - o=user1 53655765 2353687637 IN IP4 [local_ip] - s=- - c=IN IP4 [media_ip] - t=0 0 - m=application 1050 TCP/MRCPv2 1 - a=setup:passive - a=connection:new - a=channel:dca48cf082dd584b@speechrecog - a=cmid:1 - m=audio [media_port] RTP/AVP 0 8 - a=recvonly - a=mid:1 - - ]]> - - - - - - - - - - - Content-Type: application/sdp - Content-Length: [len] - - v=0 - o=user1 53655765 2353687637 IN IP4 [local_ip] - s=- - c=IN IP4 [media_ip] - t=0 0 - m=application 0 TCP/MRCPv2 1 - a=setup:passive - a=connection:existing - a=channel:dca48cf082dd584b@speechrecog - a=cmid:1 - m=audio 0 RTP/AVP 0 8 - a=recvonly - a=mid:1 - - ]]> - - - - - - - - - - - Content-Length: 0 - - ]]> - - - - - - - - - - - - - - diff --git a/libs/unimrcp/tests/sipp/mrcp_uas_reject b/libs/unimrcp/tests/sipp/mrcp_uas_reject deleted file mode 100644 index 5f6af6b1176..00000000000 --- a/libs/unimrcp/tests/sipp/mrcp_uas_reject +++ /dev/null @@ -1,49 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - Content-Length: 0 - ]]> - - - - - - - - - - - - diff --git a/libs/unimrcp/tests/sipp/mrcp_uas_synth b/libs/unimrcp/tests/sipp/mrcp_uas_synth deleted file mode 100644 index b2400aaddd5..00000000000 --- a/libs/unimrcp/tests/sipp/mrcp_uas_synth +++ /dev/null @@ -1,127 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - Content-Type: application/sdp - Content-Length: [len] - - v=0 - o=user1 53655765 2353687637 IN IP4 [local_ip] - s=- - c=IN IP4 [media_ip] - t=0 0 - m=application 1050 TCP/MRCPv2 1 - a=setup:passive - a=connection:new - a=channel:dca48cf082dd584b@speechsynth - a=cmid:1 - m=audio [media_port] RTP/AVP 0 8 - a=sendonly - a=mid:1 - - ]]> - - - - - - - - - - - Content-Type: application/sdp - Content-Length: [len] - - v=0 - o=user1 53655765 2353687637 IN IP4 [local_ip] - s=- - c=IN IP4 [media_ip] - t=0 0 - m=application 0 TCP/MRCPv2 1 - a=setup:passive - a=connection:existing - a=channel:dca48cf082dd584b@speechsynth - a=cmid:1 - m=audio 0 RTP/AVP 0 8 - a=sendonly - a=mid:1 - - ]]> - - - - - - - - - - - Content-Length: 0 - - ]]> - - - - - - - - - - - - - - diff --git a/libs/unimrcp/tests/sipp/mrcp_uas_unknown b/libs/unimrcp/tests/sipp/mrcp_uas_unknown deleted file mode 100644 index e3a1b1e50d3..00000000000 --- a/libs/unimrcp/tests/sipp/mrcp_uas_unknown +++ /dev/null @@ -1,88 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - Content-Type: application/sdp - Content-Length: [len] - - v=0 - o=user1 53655765 2353687637 IN IP4 [local_ip] - s=- - c=IN IP4 [media_ip] - t=0 0 - m=application 0 TCP/MRCPv2 1 - a=setup:passive - a=connection:new - a=channel:dca48cf082dd584b@unknown - a=cmid:1 - m=audio 0 RTP/AVP 0 8 - a=sendonly - a=mid:1 - - ]]> - - - - - - - - - - - Content-Length: 0 - - ]]> - - - - - - - - - - - - - - diff --git a/libs/unimrcp/tests/strtablegen/Makefile.am b/libs/unimrcp/tests/strtablegen/Makefile.am deleted file mode 100644 index 5ffb011dc74..00000000000 --- a/libs/unimrcp/tests/strtablegen/Makefile.am +++ /dev/null @@ -1,9 +0,0 @@ -MAINTAINERCLEANFILES = Makefile.in - -AM_CPPFLAGS = -I$(top_srcdir)/libs/apr-toolkit/include \ - $(UNIMRCP_APR_INCLUDES) - -noinst_PROGRAMS = strtablegen -strtablegen_LDADD = $(top_builddir)/libs/apr-toolkit/libaprtoolkit.la \ - $(UNIMRCP_APR_LIBS) -strtablegen_SOURCES = src/main.c diff --git a/libs/unimrcp/tests/strtablegen/src/main.c b/libs/unimrcp/tests/strtablegen/src/main.c deleted file mode 100644 index ef82abc7967..00000000000 --- a/libs/unimrcp/tests/strtablegen/src/main.c +++ /dev/null @@ -1,146 +0,0 @@ -/* - * Copyright 2008-2014 Arsen Chaloyan - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - * - * $Id: main.c 2136 2014-07-04 06:33:36Z achaloyan@gmail.com $ - */ - -#include -#include -#include "apt_pool.h" -#include "apt_string_table.h" -#include "apt_text_stream.h" - -static apt_bool_t is_unique(const apt_str_table_item_t table[], apr_size_t count, - apr_size_t item_index, apr_size_t char_index, char value) -{ - size_t i; - const char *buf; - for(i=0; ivalue,&line,pool); - item->key = 0; - count++; - } - while(count < max_count); - - return count; -} - -static apt_bool_t string_table_write(const apt_str_table_item_t table[], apr_size_t count, FILE *file) -{ - size_t i; - const apt_str_table_item_t *item; - for(i=0; ivalue.buf, item->value.length, item->key); - } - return TRUE; -} - -int main(int argc, char *argv[]) -{ - apr_pool_t *pool = NULL; - apt_str_table_item_t table[100]; - size_t count; - FILE *file_in, *file_out; - - /* one time apr global initialization */ - if(apr_initialize() != APR_SUCCESS) { - return 0; - } - pool = apt_pool_create(); - - if(argc < 2) { - printf("usage: stringtablegen stringtable.in [stringtable.out]\n"); - return 0; - } - file_in = fopen(argv[1], "rb"); - if(file_in == NULL) { - printf("cannot open file %s\n", argv[1]); - return 0; - } - - if(argc > 2) { - file_out = fopen(argv[2], "wb"); - } - else { - file_out = stdout; - } - - /* read items (strings) from the file */ - count = string_table_read(table,100,file_in,pool); - - /* generate string table */ - string_table_key_generate(table,count); - - /* dump string table to the file */ - string_table_write(table,count,file_out); - - fclose(file_in); - if(file_out != stdout) { - fclose(file_out); - } - - apr_pool_destroy(pool); - /* final apr global termination */ - apr_terminate(); - return 0; -} diff --git a/libs/unimrcp/tests/strtablegen/stringtable.in b/libs/unimrcp/tests/strtablegen/stringtable.in deleted file mode 100644 index 7f045949cdd..00000000000 --- a/libs/unimrcp/tests/strtablegen/stringtable.in +++ /dev/null @@ -1,12 +0,0 @@ -Channel-Identifier -Active-Request-Id-List -Proxy-Sync-Id -Accept-Charset -Content-Type -Content-Id -Content-Base -Content-Encoding -Content-Location -Content-Length -Cache-Control -Logging-Tag diff --git a/libs/unimrcp/tests/strtablegen/strtablegen.vcproj b/libs/unimrcp/tests/strtablegen/strtablegen.vcproj deleted file mode 100644 index 72d6686182d..00000000000 --- a/libs/unimrcp/tests/strtablegen/strtablegen.vcproj +++ /dev/null @@ -1,292 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/libs/unimrcp/tests/strtablegen/strtablegen.vcxproj b/libs/unimrcp/tests/strtablegen/strtablegen.vcxproj deleted file mode 100644 index 11845bbc67a..00000000000 --- a/libs/unimrcp/tests/strtablegen/strtablegen.vcxproj +++ /dev/null @@ -1,124 +0,0 @@ - - - - - Debug - Win32 - - - Debug - x64 - - - Release - Win32 - - - Release - x64 - - - - {79EF9F1D-E211-4ED1-91D2-FC935AB3A872} - strtablegen - - - - Application - - - Application - - - Application - - - Application - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - <_ProjectFileVersion>10.0.30319.1 - AllRules.ruleset - - - AllRules.ruleset - - - AllRules.ruleset - - - AllRules.ruleset - - - - - - aprtoolkit.lib;libaprutil-1.lib;libapr-1.lib;%(AdditionalDependencies) - - - - - aprtoolkit.lib;libaprutil-1.lib;libapr-1.lib;%(AdditionalDependencies) - UseLinkTimeCodeGeneration - - - - - X64 - - - ProgramDatabase - - - aprtoolkit.lib;libaprutil-1.lib;libapr-1.lib;%(AdditionalDependencies) - - - - - X64 - - - aprtoolkit.lib;libaprutil-1.lib;libapr-1.lib;%(AdditionalDependencies) - UseLinkTimeCodeGeneration - - - - - - - - {13deeca0-bdd4-4744-a1a2-8eb0a44df3d2} - false - - - - - - \ No newline at end of file diff --git a/libs/unimrcp/tests/strtablegen/strtablegen.vcxproj.filters b/libs/unimrcp/tests/strtablegen/strtablegen.vcxproj.filters deleted file mode 100644 index 3efc5f63aed..00000000000 --- a/libs/unimrcp/tests/strtablegen/strtablegen.vcxproj.filters +++ /dev/null @@ -1,18 +0,0 @@ - - - - - {4FC737F1-C7A5-4376-A066-2A32D752A2FF} - cpp;c;cc;cxx;def;odl;idl;hpj;bat;asm;asmx - - - {93995380-89BD-4b04-88EB-625FBE52EBFB} - h;hpp;hxx;hm;inl;inc;xsd - - - - - src - - - \ No newline at end of file diff --git a/libs/unimrcp/unimrcp-2010.sln b/libs/unimrcp/unimrcp-2010.sln deleted file mode 100644 index 957d126a620..00000000000 --- a/libs/unimrcp/unimrcp-2010.sln +++ /dev/null @@ -1,358 +0,0 @@ - -Microsoft Visual Studio Solution File, Format Version 11.00 -# Visual Studio 2010 -Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "libs", "libs", "{5377DC3A-DB96-4819-8AAF-2A75F3A69119}" -EndProject -Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "modules", "modules", "{493A1DB9-6E7C-48C7-93B5-F75C3C25B9DF}" -EndProject -Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "platforms", "platforms", "{8E282AE2-038C-49FE-AC67-BC9615AFD800}" -EndProject -Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "plugins", "plugins", "{09BABD45-8F30-4F99-B8B8-8DD78F6804DB}" -EndProject -Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "tests", "tests", "{AC4356E8-48A1-4D2D-AFB1-11CF30B974CD}" -EndProject -Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "tools", "tools", "{62083CC3-13BF-49EA-BFE8-4C9337C0D82C}" -EndProject -Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "conf", "conf", "{9155EBB8-E7DD-49AE-A86A-7B90B9F09888}" - ProjectSection(SolutionItems) = preProject - conf\logger.xml = conf\logger.xml - conf\unimrcpclient.xml = conf\unimrcpclient.xml - conf\unimrcpclient.xsd = conf\unimrcpclient.xsd - conf\unimrcpserver.xml = conf\unimrcpserver.xml - conf\unimrcpserver.xsd = conf\unimrcpserver.xsd - EndProjectSection -EndProject -Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "client-profiles", "client-profiles", "{F2D6C1AF-0C05-4695-84AF-15A2F92F9899}" - ProjectSection(SolutionItems) = preProject - conf\client-profiles\lumenvox.xml = conf\client-profiles\lumenvox.xml - conf\client-profiles\nuance.xml = conf\client-profiles\nuance.xml - conf\client-profiles\unimrcp.xml = conf\client-profiles\unimrcp.xml - EndProjectSection -EndProject -Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "unimrcpserver", "platforms\unimrcp-server\unimrcpserver.vcxproj", "{592CF22D-3F8F-4A77-A174-130D77B7623B}" -EndProject -Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "aprtoolkit", "libs\apr-toolkit\aprtoolkit.vcxproj", "{13DEECA0-BDD4-4744-A1A2-8EB0A44DF3D2}" -EndProject -Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "mpf", "libs\mpf\mpf.vcxproj", "{B5A00BFA-6083-4FAE-A097-71642D6473B5}" -EndProject -Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "mrcp", "libs\mrcp\mrcp.vcxproj", "{1C320193-46A6-4B34-9C56-8AB584FC1B56}" -EndProject -Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "mrcpsignaling", "libs\mrcp-signaling\mrcpsignaling.vcxproj", "{12A49562-BAB9-43A3-A21D-15B60BBB4C31}" -EndProject -Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "mrcpserver", "libs\mrcp-server\mrcpserver.vcxproj", "{18B1F35A-10F8-4287-9B37-2D10501B0B38}" -EndProject -Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "libunimrcpserver", "platforms\libunimrcp-server\libunimrcpserver.vcxproj", "{C98AF157-352E-4737-BD30-A24E2647F5AE}" -EndProject -Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "mrcpsofiasip", "modules\mrcp-sofiasip\mrcpsofiasip.vcxproj", "{746F3632-5BB2-4570-9453-31D6D58A7D8E}" -EndProject -Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "mrcpclient", "libs\mrcp-client\mrcpclient.vcxproj", "{72782932-37CC-46AE-8C7F-9A7B1A6EE108}" -EndProject -Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "libunimrcpclient", "platforms\libunimrcp-client\libunimrcpclient.vcxproj", "{EE157390-1E85-416C-946E-620E32C9AD33}" -EndProject -Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "unimrcpclient", "platforms\unimrcp-client\unimrcpclient.vcxproj", "{57FAF32E-49FD-491F-895D-132D0D5EFE0A}" -EndProject -Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "mrcpv2transport", "libs\mrcpv2-transport\mrcpv2transport.vcxproj", "{A9EDAC04-6A5F-4BA7-BC0D-CCE7B255B6EA}" -EndProject -Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "mrcpengine", "libs\mrcp-engine\mrcpengine.vcxproj", "{843425BE-9A9A-44F4-A4E3-4B57D6ABD53C}" -EndProject -Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "demosynth", "plugins\demo-synth\demosynth.vcxproj", "{92BFA534-C419-4EB2-AAA3-510653F38F08}" -EndProject -Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "demorecog", "plugins\demo-recog\demorecog.vcxproj", "{B495B6D9-AF84-479D-B30A-313C16EF8BFD}" -EndProject -Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "strtablegen", "tests\strtablegen\strtablegen.vcxproj", "{79EF9F1D-E211-4ED1-91D2-FC935AB3A872}" -EndProject -Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "apttest", "tests\apttest\apttest.vcxproj", "{429C907B-97D1-4B2D-9B0E-A14A5BFDAD15}" -EndProject -Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "mpftest", "tests\mpftest\mpftest.vcxproj", "{DCF01B1C-5268-44F3-9130-D647FABFB663}" -EndProject -Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "mrcptest", "tests\mrcptest\mrcptest.vcxproj", "{3CA97077-6210-4362-998A-D15A35EEAA08}" -EndProject -Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "unirtsp", "libs\uni-rtsp\unirtsp.vcxproj", "{504B3154-7A4F-459D-9877-B951021C3F1F}" -EndProject -Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "rtsptest", "tests\rtsptest\rtsptest.vcxproj", "{17A33F3F-BAF5-403F-8EF4-FECDA7D9A335}" -EndProject -Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "mrcpunirtsp", "modules\mrcp-unirtsp\mrcpunirtsp.vcxproj", "{DEB01ACB-D65F-4A62-AED9-58C1054499E9}" -EndProject -Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "prepare", "build\tools\prepare.vcxproj", "{01D63BF5-7798-4746-852A-4B45229BB735}" -EndProject -Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "unimrcpservice", "build\tools\unimrcpservice.vcxproj", "{4714EF49-BFD5-4B22-95F7-95A07F1EAC25}" -EndProject -Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "asrclient", "platforms\asr-client\asrclient.vcxproj", "{6B83AC6D-01CE-4E1C-81CE-02AD8116C684}" -EndProject -Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "libasrclient", "platforms\libasr-client\libasrclient.vcxproj", "{272FAFA8-2B2F-4716-B95F-3B37CF2E0CB3}" -EndProject -Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "umc", "platforms\umc\umc.vcxproj", "{CD1C52C1-D8E1-4654-AE65-6CCAB38DE894}" -EndProject -Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "mrcprecorder", "plugins\mrcp-recorder\mrcprecorder.vcxproj", "{5AFB8B04-AEB9-408C-B53E-AFBC44B5F3F2}" -EndProject -Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "demoverifier", "plugins\demo-verifier\demoverifier.vcxproj", "{F7563CAD-5C95-46E5-89B7-0953C6C6E746}" -EndProject -Global - GlobalSection(SolutionConfigurationPlatforms) = preSolution - Debug|Win32 = Debug|Win32 - Debug|x64 = Debug|x64 - Release|Win32 = Release|Win32 - Release|x64 = Release|x64 - EndGlobalSection - GlobalSection(ProjectConfigurationPlatforms) = postSolution - {592CF22D-3F8F-4A77-A174-130D77B7623B}.Debug|Win32.ActiveCfg = Debug|Win32 - {592CF22D-3F8F-4A77-A174-130D77B7623B}.Debug|Win32.Build.0 = Debug|Win32 - {592CF22D-3F8F-4A77-A174-130D77B7623B}.Debug|x64.ActiveCfg = Debug|x64 - {592CF22D-3F8F-4A77-A174-130D77B7623B}.Debug|x64.Build.0 = Debug|x64 - {592CF22D-3F8F-4A77-A174-130D77B7623B}.Release|Win32.ActiveCfg = Release|Win32 - {592CF22D-3F8F-4A77-A174-130D77B7623B}.Release|Win32.Build.0 = Release|Win32 - {592CF22D-3F8F-4A77-A174-130D77B7623B}.Release|x64.ActiveCfg = Release|x64 - {592CF22D-3F8F-4A77-A174-130D77B7623B}.Release|x64.Build.0 = Release|x64 - {13DEECA0-BDD4-4744-A1A2-8EB0A44DF3D2}.Debug|Win32.ActiveCfg = Debug|Win32 - {13DEECA0-BDD4-4744-A1A2-8EB0A44DF3D2}.Debug|Win32.Build.0 = Debug|Win32 - {13DEECA0-BDD4-4744-A1A2-8EB0A44DF3D2}.Debug|x64.ActiveCfg = Debug|x64 - {13DEECA0-BDD4-4744-A1A2-8EB0A44DF3D2}.Debug|x64.Build.0 = Debug|x64 - {13DEECA0-BDD4-4744-A1A2-8EB0A44DF3D2}.Release|Win32.ActiveCfg = Release|Win32 - {13DEECA0-BDD4-4744-A1A2-8EB0A44DF3D2}.Release|Win32.Build.0 = Release|Win32 - {13DEECA0-BDD4-4744-A1A2-8EB0A44DF3D2}.Release|x64.ActiveCfg = Release|x64 - {13DEECA0-BDD4-4744-A1A2-8EB0A44DF3D2}.Release|x64.Build.0 = Release|x64 - {B5A00BFA-6083-4FAE-A097-71642D6473B5}.Debug|Win32.ActiveCfg = Debug|Win32 - {B5A00BFA-6083-4FAE-A097-71642D6473B5}.Debug|Win32.Build.0 = Debug|Win32 - {B5A00BFA-6083-4FAE-A097-71642D6473B5}.Debug|x64.ActiveCfg = Debug|x64 - {B5A00BFA-6083-4FAE-A097-71642D6473B5}.Debug|x64.Build.0 = Debug|x64 - {B5A00BFA-6083-4FAE-A097-71642D6473B5}.Release|Win32.ActiveCfg = Release|Win32 - {B5A00BFA-6083-4FAE-A097-71642D6473B5}.Release|Win32.Build.0 = Release|Win32 - {B5A00BFA-6083-4FAE-A097-71642D6473B5}.Release|x64.ActiveCfg = Release|x64 - {B5A00BFA-6083-4FAE-A097-71642D6473B5}.Release|x64.Build.0 = Release|x64 - {1C320193-46A6-4B34-9C56-8AB584FC1B56}.Debug|Win32.ActiveCfg = Debug|Win32 - {1C320193-46A6-4B34-9C56-8AB584FC1B56}.Debug|Win32.Build.0 = Debug|Win32 - {1C320193-46A6-4B34-9C56-8AB584FC1B56}.Debug|x64.ActiveCfg = Debug|x64 - {1C320193-46A6-4B34-9C56-8AB584FC1B56}.Debug|x64.Build.0 = Debug|x64 - {1C320193-46A6-4B34-9C56-8AB584FC1B56}.Release|Win32.ActiveCfg = Release|Win32 - {1C320193-46A6-4B34-9C56-8AB584FC1B56}.Release|Win32.Build.0 = Release|Win32 - {1C320193-46A6-4B34-9C56-8AB584FC1B56}.Release|x64.ActiveCfg = Release|x64 - {1C320193-46A6-4B34-9C56-8AB584FC1B56}.Release|x64.Build.0 = Release|x64 - {12A49562-BAB9-43A3-A21D-15B60BBB4C31}.Debug|Win32.ActiveCfg = Debug|Win32 - {12A49562-BAB9-43A3-A21D-15B60BBB4C31}.Debug|Win32.Build.0 = Debug|Win32 - {12A49562-BAB9-43A3-A21D-15B60BBB4C31}.Debug|x64.ActiveCfg = Debug|x64 - {12A49562-BAB9-43A3-A21D-15B60BBB4C31}.Debug|x64.Build.0 = Debug|x64 - {12A49562-BAB9-43A3-A21D-15B60BBB4C31}.Release|Win32.ActiveCfg = Release|Win32 - {12A49562-BAB9-43A3-A21D-15B60BBB4C31}.Release|Win32.Build.0 = Release|Win32 - {12A49562-BAB9-43A3-A21D-15B60BBB4C31}.Release|x64.ActiveCfg = Release|x64 - {12A49562-BAB9-43A3-A21D-15B60BBB4C31}.Release|x64.Build.0 = Release|x64 - {18B1F35A-10F8-4287-9B37-2D10501B0B38}.Debug|Win32.ActiveCfg = Debug|Win32 - {18B1F35A-10F8-4287-9B37-2D10501B0B38}.Debug|Win32.Build.0 = Debug|Win32 - {18B1F35A-10F8-4287-9B37-2D10501B0B38}.Debug|x64.ActiveCfg = Debug|x64 - {18B1F35A-10F8-4287-9B37-2D10501B0B38}.Debug|x64.Build.0 = Debug|x64 - {18B1F35A-10F8-4287-9B37-2D10501B0B38}.Release|Win32.ActiveCfg = Release|Win32 - {18B1F35A-10F8-4287-9B37-2D10501B0B38}.Release|Win32.Build.0 = Release|Win32 - {18B1F35A-10F8-4287-9B37-2D10501B0B38}.Release|x64.ActiveCfg = Release|x64 - {18B1F35A-10F8-4287-9B37-2D10501B0B38}.Release|x64.Build.0 = Release|x64 - {C98AF157-352E-4737-BD30-A24E2647F5AE}.Debug|Win32.ActiveCfg = Debug|Win32 - {C98AF157-352E-4737-BD30-A24E2647F5AE}.Debug|Win32.Build.0 = Debug|Win32 - {C98AF157-352E-4737-BD30-A24E2647F5AE}.Debug|x64.ActiveCfg = Debug|x64 - {C98AF157-352E-4737-BD30-A24E2647F5AE}.Debug|x64.Build.0 = Debug|x64 - {C98AF157-352E-4737-BD30-A24E2647F5AE}.Release|Win32.ActiveCfg = Release|Win32 - {C98AF157-352E-4737-BD30-A24E2647F5AE}.Release|Win32.Build.0 = Release|Win32 - {C98AF157-352E-4737-BD30-A24E2647F5AE}.Release|x64.ActiveCfg = Release|x64 - {C98AF157-352E-4737-BD30-A24E2647F5AE}.Release|x64.Build.0 = Release|x64 - {746F3632-5BB2-4570-9453-31D6D58A7D8E}.Debug|Win32.ActiveCfg = Debug|Win32 - {746F3632-5BB2-4570-9453-31D6D58A7D8E}.Debug|Win32.Build.0 = Debug|Win32 - {746F3632-5BB2-4570-9453-31D6D58A7D8E}.Debug|x64.ActiveCfg = Debug|x64 - {746F3632-5BB2-4570-9453-31D6D58A7D8E}.Debug|x64.Build.0 = Debug|x64 - {746F3632-5BB2-4570-9453-31D6D58A7D8E}.Release|Win32.ActiveCfg = Release|Win32 - {746F3632-5BB2-4570-9453-31D6D58A7D8E}.Release|Win32.Build.0 = Release|Win32 - {746F3632-5BB2-4570-9453-31D6D58A7D8E}.Release|x64.ActiveCfg = Release|x64 - {746F3632-5BB2-4570-9453-31D6D58A7D8E}.Release|x64.Build.0 = Release|x64 - {72782932-37CC-46AE-8C7F-9A7B1A6EE108}.Debug|Win32.ActiveCfg = Debug|Win32 - {72782932-37CC-46AE-8C7F-9A7B1A6EE108}.Debug|Win32.Build.0 = Debug|Win32 - {72782932-37CC-46AE-8C7F-9A7B1A6EE108}.Debug|x64.ActiveCfg = Debug|x64 - {72782932-37CC-46AE-8C7F-9A7B1A6EE108}.Debug|x64.Build.0 = Debug|x64 - {72782932-37CC-46AE-8C7F-9A7B1A6EE108}.Release|Win32.ActiveCfg = Release|Win32 - {72782932-37CC-46AE-8C7F-9A7B1A6EE108}.Release|Win32.Build.0 = Release|Win32 - {72782932-37CC-46AE-8C7F-9A7B1A6EE108}.Release|x64.ActiveCfg = Release|x64 - {72782932-37CC-46AE-8C7F-9A7B1A6EE108}.Release|x64.Build.0 = Release|x64 - {EE157390-1E85-416C-946E-620E32C9AD33}.Debug|Win32.ActiveCfg = Debug|Win32 - {EE157390-1E85-416C-946E-620E32C9AD33}.Debug|Win32.Build.0 = Debug|Win32 - {EE157390-1E85-416C-946E-620E32C9AD33}.Debug|x64.ActiveCfg = Debug|x64 - {EE157390-1E85-416C-946E-620E32C9AD33}.Debug|x64.Build.0 = Debug|x64 - {EE157390-1E85-416C-946E-620E32C9AD33}.Release|Win32.ActiveCfg = Release|Win32 - {EE157390-1E85-416C-946E-620E32C9AD33}.Release|Win32.Build.0 = Release|Win32 - {EE157390-1E85-416C-946E-620E32C9AD33}.Release|x64.ActiveCfg = Release|x64 - {EE157390-1E85-416C-946E-620E32C9AD33}.Release|x64.Build.0 = Release|x64 - {57FAF32E-49FD-491F-895D-132D0D5EFE0A}.Debug|Win32.ActiveCfg = Debug|Win32 - {57FAF32E-49FD-491F-895D-132D0D5EFE0A}.Debug|Win32.Build.0 = Debug|Win32 - {57FAF32E-49FD-491F-895D-132D0D5EFE0A}.Debug|x64.ActiveCfg = Debug|x64 - {57FAF32E-49FD-491F-895D-132D0D5EFE0A}.Debug|x64.Build.0 = Debug|x64 - {57FAF32E-49FD-491F-895D-132D0D5EFE0A}.Release|Win32.ActiveCfg = Release|Win32 - {57FAF32E-49FD-491F-895D-132D0D5EFE0A}.Release|Win32.Build.0 = Release|Win32 - {57FAF32E-49FD-491F-895D-132D0D5EFE0A}.Release|x64.ActiveCfg = Release|x64 - {57FAF32E-49FD-491F-895D-132D0D5EFE0A}.Release|x64.Build.0 = Release|x64 - {A9EDAC04-6A5F-4BA7-BC0D-CCE7B255B6EA}.Debug|Win32.ActiveCfg = Debug|Win32 - {A9EDAC04-6A5F-4BA7-BC0D-CCE7B255B6EA}.Debug|Win32.Build.0 = Debug|Win32 - {A9EDAC04-6A5F-4BA7-BC0D-CCE7B255B6EA}.Debug|x64.ActiveCfg = Debug|x64 - {A9EDAC04-6A5F-4BA7-BC0D-CCE7B255B6EA}.Debug|x64.Build.0 = Debug|x64 - {A9EDAC04-6A5F-4BA7-BC0D-CCE7B255B6EA}.Release|Win32.ActiveCfg = Release|Win32 - {A9EDAC04-6A5F-4BA7-BC0D-CCE7B255B6EA}.Release|Win32.Build.0 = Release|Win32 - {A9EDAC04-6A5F-4BA7-BC0D-CCE7B255B6EA}.Release|x64.ActiveCfg = Release|x64 - {A9EDAC04-6A5F-4BA7-BC0D-CCE7B255B6EA}.Release|x64.Build.0 = Release|x64 - {843425BE-9A9A-44F4-A4E3-4B57D6ABD53C}.Debug|Win32.ActiveCfg = Debug|Win32 - {843425BE-9A9A-44F4-A4E3-4B57D6ABD53C}.Debug|Win32.Build.0 = Debug|Win32 - {843425BE-9A9A-44F4-A4E3-4B57D6ABD53C}.Debug|x64.ActiveCfg = Debug|x64 - {843425BE-9A9A-44F4-A4E3-4B57D6ABD53C}.Debug|x64.Build.0 = Debug|x64 - {843425BE-9A9A-44F4-A4E3-4B57D6ABD53C}.Release|Win32.ActiveCfg = Release|Win32 - {843425BE-9A9A-44F4-A4E3-4B57D6ABD53C}.Release|Win32.Build.0 = Release|Win32 - {843425BE-9A9A-44F4-A4E3-4B57D6ABD53C}.Release|x64.ActiveCfg = Release|x64 - {843425BE-9A9A-44F4-A4E3-4B57D6ABD53C}.Release|x64.Build.0 = Release|x64 - {92BFA534-C419-4EB2-AAA3-510653F38F08}.Debug|Win32.ActiveCfg = Debug|Win32 - {92BFA534-C419-4EB2-AAA3-510653F38F08}.Debug|Win32.Build.0 = Debug|Win32 - {92BFA534-C419-4EB2-AAA3-510653F38F08}.Debug|x64.ActiveCfg = Debug|x64 - {92BFA534-C419-4EB2-AAA3-510653F38F08}.Debug|x64.Build.0 = Debug|x64 - {92BFA534-C419-4EB2-AAA3-510653F38F08}.Release|Win32.ActiveCfg = Release|Win32 - {92BFA534-C419-4EB2-AAA3-510653F38F08}.Release|Win32.Build.0 = Release|Win32 - {92BFA534-C419-4EB2-AAA3-510653F38F08}.Release|x64.ActiveCfg = Release|x64 - {92BFA534-C419-4EB2-AAA3-510653F38F08}.Release|x64.Build.0 = Release|x64 - {B495B6D9-AF84-479D-B30A-313C16EF8BFD}.Debug|Win32.ActiveCfg = Debug|Win32 - {B495B6D9-AF84-479D-B30A-313C16EF8BFD}.Debug|Win32.Build.0 = Debug|Win32 - {B495B6D9-AF84-479D-B30A-313C16EF8BFD}.Debug|x64.ActiveCfg = Debug|x64 - {B495B6D9-AF84-479D-B30A-313C16EF8BFD}.Debug|x64.Build.0 = Debug|x64 - {B495B6D9-AF84-479D-B30A-313C16EF8BFD}.Release|Win32.ActiveCfg = Release|Win32 - {B495B6D9-AF84-479D-B30A-313C16EF8BFD}.Release|Win32.Build.0 = Release|Win32 - {B495B6D9-AF84-479D-B30A-313C16EF8BFD}.Release|x64.ActiveCfg = Release|x64 - {B495B6D9-AF84-479D-B30A-313C16EF8BFD}.Release|x64.Build.0 = Release|x64 - {79EF9F1D-E211-4ED1-91D2-FC935AB3A872}.Debug|Win32.ActiveCfg = Debug|Win32 - {79EF9F1D-E211-4ED1-91D2-FC935AB3A872}.Debug|Win32.Build.0 = Debug|Win32 - {79EF9F1D-E211-4ED1-91D2-FC935AB3A872}.Debug|x64.ActiveCfg = Debug|x64 - {79EF9F1D-E211-4ED1-91D2-FC935AB3A872}.Debug|x64.Build.0 = Debug|x64 - {79EF9F1D-E211-4ED1-91D2-FC935AB3A872}.Release|Win32.ActiveCfg = Release|Win32 - {79EF9F1D-E211-4ED1-91D2-FC935AB3A872}.Release|Win32.Build.0 = Release|Win32 - {79EF9F1D-E211-4ED1-91D2-FC935AB3A872}.Release|x64.ActiveCfg = Release|x64 - {79EF9F1D-E211-4ED1-91D2-FC935AB3A872}.Release|x64.Build.0 = Release|x64 - {429C907B-97D1-4B2D-9B0E-A14A5BFDAD15}.Debug|Win32.ActiveCfg = Debug|Win32 - {429C907B-97D1-4B2D-9B0E-A14A5BFDAD15}.Debug|Win32.Build.0 = Debug|Win32 - {429C907B-97D1-4B2D-9B0E-A14A5BFDAD15}.Debug|x64.ActiveCfg = Debug|x64 - {429C907B-97D1-4B2D-9B0E-A14A5BFDAD15}.Debug|x64.Build.0 = Debug|x64 - {429C907B-97D1-4B2D-9B0E-A14A5BFDAD15}.Release|Win32.ActiveCfg = Release|Win32 - {429C907B-97D1-4B2D-9B0E-A14A5BFDAD15}.Release|Win32.Build.0 = Release|Win32 - {429C907B-97D1-4B2D-9B0E-A14A5BFDAD15}.Release|x64.ActiveCfg = Release|x64 - {429C907B-97D1-4B2D-9B0E-A14A5BFDAD15}.Release|x64.Build.0 = Release|x64 - {DCF01B1C-5268-44F3-9130-D647FABFB663}.Debug|Win32.ActiveCfg = Debug|Win32 - {DCF01B1C-5268-44F3-9130-D647FABFB663}.Debug|Win32.Build.0 = Debug|Win32 - {DCF01B1C-5268-44F3-9130-D647FABFB663}.Debug|x64.ActiveCfg = Debug|x64 - {DCF01B1C-5268-44F3-9130-D647FABFB663}.Debug|x64.Build.0 = Debug|x64 - {DCF01B1C-5268-44F3-9130-D647FABFB663}.Release|Win32.ActiveCfg = Release|Win32 - {DCF01B1C-5268-44F3-9130-D647FABFB663}.Release|Win32.Build.0 = Release|Win32 - {DCF01B1C-5268-44F3-9130-D647FABFB663}.Release|x64.ActiveCfg = Release|x64 - {DCF01B1C-5268-44F3-9130-D647FABFB663}.Release|x64.Build.0 = Release|x64 - {3CA97077-6210-4362-998A-D15A35EEAA08}.Debug|Win32.ActiveCfg = Debug|Win32 - {3CA97077-6210-4362-998A-D15A35EEAA08}.Debug|Win32.Build.0 = Debug|Win32 - {3CA97077-6210-4362-998A-D15A35EEAA08}.Debug|x64.ActiveCfg = Debug|x64 - {3CA97077-6210-4362-998A-D15A35EEAA08}.Debug|x64.Build.0 = Debug|x64 - {3CA97077-6210-4362-998A-D15A35EEAA08}.Release|Win32.ActiveCfg = Release|Win32 - {3CA97077-6210-4362-998A-D15A35EEAA08}.Release|Win32.Build.0 = Release|Win32 - {3CA97077-6210-4362-998A-D15A35EEAA08}.Release|x64.ActiveCfg = Release|x64 - {3CA97077-6210-4362-998A-D15A35EEAA08}.Release|x64.Build.0 = Release|x64 - {504B3154-7A4F-459D-9877-B951021C3F1F}.Debug|Win32.ActiveCfg = Debug|Win32 - {504B3154-7A4F-459D-9877-B951021C3F1F}.Debug|Win32.Build.0 = Debug|Win32 - {504B3154-7A4F-459D-9877-B951021C3F1F}.Debug|x64.ActiveCfg = Debug|x64 - {504B3154-7A4F-459D-9877-B951021C3F1F}.Debug|x64.Build.0 = Debug|x64 - {504B3154-7A4F-459D-9877-B951021C3F1F}.Release|Win32.ActiveCfg = Release|Win32 - {504B3154-7A4F-459D-9877-B951021C3F1F}.Release|Win32.Build.0 = Release|Win32 - {504B3154-7A4F-459D-9877-B951021C3F1F}.Release|x64.ActiveCfg = Release|x64 - {504B3154-7A4F-459D-9877-B951021C3F1F}.Release|x64.Build.0 = Release|x64 - {17A33F3F-BAF5-403F-8EF4-FECDA7D9A335}.Debug|Win32.ActiveCfg = Debug|Win32 - {17A33F3F-BAF5-403F-8EF4-FECDA7D9A335}.Debug|Win32.Build.0 = Debug|Win32 - {17A33F3F-BAF5-403F-8EF4-FECDA7D9A335}.Debug|x64.ActiveCfg = Debug|x64 - {17A33F3F-BAF5-403F-8EF4-FECDA7D9A335}.Debug|x64.Build.0 = Debug|x64 - {17A33F3F-BAF5-403F-8EF4-FECDA7D9A335}.Release|Win32.ActiveCfg = Release|Win32 - {17A33F3F-BAF5-403F-8EF4-FECDA7D9A335}.Release|Win32.Build.0 = Release|Win32 - {17A33F3F-BAF5-403F-8EF4-FECDA7D9A335}.Release|x64.ActiveCfg = Release|x64 - {17A33F3F-BAF5-403F-8EF4-FECDA7D9A335}.Release|x64.Build.0 = Release|x64 - {DEB01ACB-D65F-4A62-AED9-58C1054499E9}.Debug|Win32.ActiveCfg = Debug|Win32 - {DEB01ACB-D65F-4A62-AED9-58C1054499E9}.Debug|Win32.Build.0 = Debug|Win32 - {DEB01ACB-D65F-4A62-AED9-58C1054499E9}.Debug|x64.ActiveCfg = Debug|x64 - {DEB01ACB-D65F-4A62-AED9-58C1054499E9}.Debug|x64.Build.0 = Debug|x64 - {DEB01ACB-D65F-4A62-AED9-58C1054499E9}.Release|Win32.ActiveCfg = Release|Win32 - {DEB01ACB-D65F-4A62-AED9-58C1054499E9}.Release|Win32.Build.0 = Release|Win32 - {DEB01ACB-D65F-4A62-AED9-58C1054499E9}.Release|x64.ActiveCfg = Release|x64 - {DEB01ACB-D65F-4A62-AED9-58C1054499E9}.Release|x64.Build.0 = Release|x64 - {01D63BF5-7798-4746-852A-4B45229BB735}.Debug|Win32.ActiveCfg = Debug|Win32 - {01D63BF5-7798-4746-852A-4B45229BB735}.Debug|x64.ActiveCfg = Debug|x64 - {01D63BF5-7798-4746-852A-4B45229BB735}.Release|Win32.ActiveCfg = Release|Win32 - {01D63BF5-7798-4746-852A-4B45229BB735}.Release|x64.ActiveCfg = Release|x64 - {4714EF49-BFD5-4B22-95F7-95A07F1EAC25}.Debug|Win32.ActiveCfg = Debug|Win32 - {4714EF49-BFD5-4B22-95F7-95A07F1EAC25}.Debug|x64.ActiveCfg = Debug|x64 - {4714EF49-BFD5-4B22-95F7-95A07F1EAC25}.Release|Win32.ActiveCfg = Release|Win32 - {4714EF49-BFD5-4B22-95F7-95A07F1EAC25}.Release|x64.ActiveCfg = Release|x64 - {6B83AC6D-01CE-4E1C-81CE-02AD8116C684}.Debug|Win32.ActiveCfg = Debug|Win32 - {6B83AC6D-01CE-4E1C-81CE-02AD8116C684}.Debug|Win32.Build.0 = Debug|Win32 - {6B83AC6D-01CE-4E1C-81CE-02AD8116C684}.Debug|x64.ActiveCfg = Debug|x64 - {6B83AC6D-01CE-4E1C-81CE-02AD8116C684}.Debug|x64.Build.0 = Debug|x64 - {6B83AC6D-01CE-4E1C-81CE-02AD8116C684}.Release|Win32.ActiveCfg = Release|Win32 - {6B83AC6D-01CE-4E1C-81CE-02AD8116C684}.Release|Win32.Build.0 = Release|Win32 - {6B83AC6D-01CE-4E1C-81CE-02AD8116C684}.Release|x64.ActiveCfg = Release|x64 - {6B83AC6D-01CE-4E1C-81CE-02AD8116C684}.Release|x64.Build.0 = Release|x64 - {272FAFA8-2B2F-4716-B95F-3B37CF2E0CB3}.Debug|Win32.ActiveCfg = Debug|Win32 - {272FAFA8-2B2F-4716-B95F-3B37CF2E0CB3}.Debug|Win32.Build.0 = Debug|Win32 - {272FAFA8-2B2F-4716-B95F-3B37CF2E0CB3}.Debug|x64.ActiveCfg = Debug|x64 - {272FAFA8-2B2F-4716-B95F-3B37CF2E0CB3}.Debug|x64.Build.0 = Debug|x64 - {272FAFA8-2B2F-4716-B95F-3B37CF2E0CB3}.Release|Win32.ActiveCfg = Release|Win32 - {272FAFA8-2B2F-4716-B95F-3B37CF2E0CB3}.Release|Win32.Build.0 = Release|Win32 - {272FAFA8-2B2F-4716-B95F-3B37CF2E0CB3}.Release|x64.ActiveCfg = Release|x64 - {272FAFA8-2B2F-4716-B95F-3B37CF2E0CB3}.Release|x64.Build.0 = Release|x64 - {CD1C52C1-D8E1-4654-AE65-6CCAB38DE894}.Debug|Win32.ActiveCfg = Debug|Win32 - {CD1C52C1-D8E1-4654-AE65-6CCAB38DE894}.Debug|Win32.Build.0 = Debug|Win32 - {CD1C52C1-D8E1-4654-AE65-6CCAB38DE894}.Debug|x64.ActiveCfg = Debug|x64 - {CD1C52C1-D8E1-4654-AE65-6CCAB38DE894}.Debug|x64.Build.0 = Debug|x64 - {CD1C52C1-D8E1-4654-AE65-6CCAB38DE894}.Release|Win32.ActiveCfg = Release|Win32 - {CD1C52C1-D8E1-4654-AE65-6CCAB38DE894}.Release|Win32.Build.0 = Release|Win32 - {CD1C52C1-D8E1-4654-AE65-6CCAB38DE894}.Release|x64.ActiveCfg = Release|x64 - {CD1C52C1-D8E1-4654-AE65-6CCAB38DE894}.Release|x64.Build.0 = Release|x64 - {5AFB8B04-AEB9-408C-B53E-AFBC44B5F3F2}.Debug|Win32.ActiveCfg = Debug|Win32 - {5AFB8B04-AEB9-408C-B53E-AFBC44B5F3F2}.Debug|Win32.Build.0 = Debug|Win32 - {5AFB8B04-AEB9-408C-B53E-AFBC44B5F3F2}.Debug|x64.ActiveCfg = Debug|x64 - {5AFB8B04-AEB9-408C-B53E-AFBC44B5F3F2}.Debug|x64.Build.0 = Debug|x64 - {5AFB8B04-AEB9-408C-B53E-AFBC44B5F3F2}.Release|Win32.ActiveCfg = Release|Win32 - {5AFB8B04-AEB9-408C-B53E-AFBC44B5F3F2}.Release|Win32.Build.0 = Release|Win32 - {5AFB8B04-AEB9-408C-B53E-AFBC44B5F3F2}.Release|x64.ActiveCfg = Release|x64 - {5AFB8B04-AEB9-408C-B53E-AFBC44B5F3F2}.Release|x64.Build.0 = Release|x64 - {F7563CAD-5C95-46E5-89B7-0953C6C6E746}.Debug|Win32.ActiveCfg = Debug|Win32 - {F7563CAD-5C95-46E5-89B7-0953C6C6E746}.Debug|Win32.Build.0 = Debug|Win32 - {F7563CAD-5C95-46E5-89B7-0953C6C6E746}.Debug|x64.ActiveCfg = Debug|x64 - {F7563CAD-5C95-46E5-89B7-0953C6C6E746}.Debug|x64.Build.0 = Debug|x64 - {F7563CAD-5C95-46E5-89B7-0953C6C6E746}.Release|Win32.ActiveCfg = Release|Win32 - {F7563CAD-5C95-46E5-89B7-0953C6C6E746}.Release|Win32.Build.0 = Release|Win32 - {F7563CAD-5C95-46E5-89B7-0953C6C6E746}.Release|x64.ActiveCfg = Release|x64 - {F7563CAD-5C95-46E5-89B7-0953C6C6E746}.Release|x64.Build.0 = Release|x64 - EndGlobalSection - GlobalSection(SolutionProperties) = preSolution - HideSolutionNode = FALSE - EndGlobalSection - GlobalSection(NestedProjects) = preSolution - {13DEECA0-BDD4-4744-A1A2-8EB0A44DF3D2} = {5377DC3A-DB96-4819-8AAF-2A75F3A69119} - {B5A00BFA-6083-4FAE-A097-71642D6473B5} = {5377DC3A-DB96-4819-8AAF-2A75F3A69119} - {1C320193-46A6-4B34-9C56-8AB584FC1B56} = {5377DC3A-DB96-4819-8AAF-2A75F3A69119} - {12A49562-BAB9-43A3-A21D-15B60BBB4C31} = {5377DC3A-DB96-4819-8AAF-2A75F3A69119} - {18B1F35A-10F8-4287-9B37-2D10501B0B38} = {5377DC3A-DB96-4819-8AAF-2A75F3A69119} - {72782932-37CC-46AE-8C7F-9A7B1A6EE108} = {5377DC3A-DB96-4819-8AAF-2A75F3A69119} - {A9EDAC04-6A5F-4BA7-BC0D-CCE7B255B6EA} = {5377DC3A-DB96-4819-8AAF-2A75F3A69119} - {843425BE-9A9A-44F4-A4E3-4B57D6ABD53C} = {5377DC3A-DB96-4819-8AAF-2A75F3A69119} - {504B3154-7A4F-459D-9877-B951021C3F1F} = {5377DC3A-DB96-4819-8AAF-2A75F3A69119} - {746F3632-5BB2-4570-9453-31D6D58A7D8E} = {493A1DB9-6E7C-48C7-93B5-F75C3C25B9DF} - {DEB01ACB-D65F-4A62-AED9-58C1054499E9} = {493A1DB9-6E7C-48C7-93B5-F75C3C25B9DF} - {592CF22D-3F8F-4A77-A174-130D77B7623B} = {8E282AE2-038C-49FE-AC67-BC9615AFD800} - {C98AF157-352E-4737-BD30-A24E2647F5AE} = {8E282AE2-038C-49FE-AC67-BC9615AFD800} - {EE157390-1E85-416C-946E-620E32C9AD33} = {8E282AE2-038C-49FE-AC67-BC9615AFD800} - {57FAF32E-49FD-491F-895D-132D0D5EFE0A} = {8E282AE2-038C-49FE-AC67-BC9615AFD800} - {6B83AC6D-01CE-4E1C-81CE-02AD8116C684} = {8E282AE2-038C-49FE-AC67-BC9615AFD800} - {272FAFA8-2B2F-4716-B95F-3B37CF2E0CB3} = {8E282AE2-038C-49FE-AC67-BC9615AFD800} - {CD1C52C1-D8E1-4654-AE65-6CCAB38DE894} = {8E282AE2-038C-49FE-AC67-BC9615AFD800} - {92BFA534-C419-4EB2-AAA3-510653F38F08} = {09BABD45-8F30-4F99-B8B8-8DD78F6804DB} - {B495B6D9-AF84-479D-B30A-313C16EF8BFD} = {09BABD45-8F30-4F99-B8B8-8DD78F6804DB} - {5AFB8B04-AEB9-408C-B53E-AFBC44B5F3F2} = {09BABD45-8F30-4F99-B8B8-8DD78F6804DB} - {F7563CAD-5C95-46E5-89B7-0953C6C6E746} = {09BABD45-8F30-4F99-B8B8-8DD78F6804DB} - {79EF9F1D-E211-4ED1-91D2-FC935AB3A872} = {AC4356E8-48A1-4D2D-AFB1-11CF30B974CD} - {429C907B-97D1-4B2D-9B0E-A14A5BFDAD15} = {AC4356E8-48A1-4D2D-AFB1-11CF30B974CD} - {DCF01B1C-5268-44F3-9130-D647FABFB663} = {AC4356E8-48A1-4D2D-AFB1-11CF30B974CD} - {3CA97077-6210-4362-998A-D15A35EEAA08} = {AC4356E8-48A1-4D2D-AFB1-11CF30B974CD} - {17A33F3F-BAF5-403F-8EF4-FECDA7D9A335} = {AC4356E8-48A1-4D2D-AFB1-11CF30B974CD} - {01D63BF5-7798-4746-852A-4B45229BB735} = {62083CC3-13BF-49EA-BFE8-4C9337C0D82C} - {4714EF49-BFD5-4B22-95F7-95A07F1EAC25} = {62083CC3-13BF-49EA-BFE8-4C9337C0D82C} - {F2D6C1AF-0C05-4695-84AF-15A2F92F9899} = {9155EBB8-E7DD-49AE-A86A-7B90B9F09888} - EndGlobalSection -EndGlobal diff --git a/libs/unimrcp/unimrcp.sln b/libs/unimrcp/unimrcp.sln deleted file mode 100644 index 10b74f6232c..00000000000 --- a/libs/unimrcp/unimrcp.sln +++ /dev/null @@ -1,447 +0,0 @@ - -Microsoft Visual Studio Solution File, Format Version 9.00 -# Visual Studio 2005 -Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "libs", "libs", "{5377DC3A-DB96-4819-8AAF-2A75F3A69119}" -EndProject -Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "modules", "modules", "{493A1DB9-6E7C-48C7-93B5-F75C3C25B9DF}" -EndProject -Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "platforms", "platforms", "{8E282AE2-038C-49FE-AC67-BC9615AFD800}" -EndProject -Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "plugins", "plugins", "{09BABD45-8F30-4F99-B8B8-8DD78F6804DB}" -EndProject -Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "tests", "tests", "{AC4356E8-48A1-4D2D-AFB1-11CF30B974CD}" -EndProject -Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "unimrcpserver", "platforms\unimrcp-server\unimrcpserver.vcproj", "{592CF22D-3F8F-4A77-A174-130D77B7623B}" - ProjectSection(ProjectDependencies) = postProject - {C98AF157-352E-4737-BD30-A24E2647F5AE} = {C98AF157-352E-4737-BD30-A24E2647F5AE} - EndProjectSection -EndProject -Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "aprtoolkit", "libs\apr-toolkit\aprtoolkit.vcproj", "{13DEECA0-BDD4-4744-A1A2-8EB0A44DF3D2}" -EndProject -Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "mpf", "libs\mpf\mpf.vcproj", "{B5A00BFA-6083-4FAE-A097-71642D6473B5}" - ProjectSection(ProjectDependencies) = postProject - {13DEECA0-BDD4-4744-A1A2-8EB0A44DF3D2} = {13DEECA0-BDD4-4744-A1A2-8EB0A44DF3D2} - EndProjectSection -EndProject -Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "mrcp", "libs\mrcp\mrcp.vcproj", "{1C320193-46A6-4B34-9C56-8AB584FC1B56}" -EndProject -Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "mrcpsignaling", "libs\mrcp-signaling\mrcpsignaling.vcproj", "{12A49562-BAB9-43A3-A21D-15B60BBB4C31}" - ProjectSection(ProjectDependencies) = postProject - {B5A00BFA-6083-4FAE-A097-71642D6473B5} = {B5A00BFA-6083-4FAE-A097-71642D6473B5} - {1C320193-46A6-4B34-9C56-8AB584FC1B56} = {1C320193-46A6-4B34-9C56-8AB584FC1B56} - EndProjectSection -EndProject -Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "mrcpserver", "libs\mrcp-server\mrcpserver.vcproj", "{18B1F35A-10F8-4287-9B37-2D10501B0B38}" - ProjectSection(ProjectDependencies) = postProject - {12A49562-BAB9-43A3-A21D-15B60BBB4C31} = {12A49562-BAB9-43A3-A21D-15B60BBB4C31} - {A9EDAC04-6A5F-4BA7-BC0D-CCE7B255B6EA} = {A9EDAC04-6A5F-4BA7-BC0D-CCE7B255B6EA} - {843425BE-9A9A-44F4-A4E3-4B57D6ABD53C} = {843425BE-9A9A-44F4-A4E3-4B57D6ABD53C} - EndProjectSection -EndProject -Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "libunimrcpserver", "platforms\libunimrcp-server\libunimrcpserver.vcproj", "{C98AF157-352E-4737-BD30-A24E2647F5AE}" - ProjectSection(ProjectDependencies) = postProject - {DEB01ACB-D65F-4A62-AED9-58C1054499E9} = {DEB01ACB-D65F-4A62-AED9-58C1054499E9} - {18B1F35A-10F8-4287-9B37-2D10501B0B38} = {18B1F35A-10F8-4287-9B37-2D10501B0B38} - {746F3632-5BB2-4570-9453-31D6D58A7D8E} = {746F3632-5BB2-4570-9453-31D6D58A7D8E} - EndProjectSection -EndProject -Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "mrcpsofiasip", "modules\mrcp-sofiasip\mrcpsofiasip.vcproj", "{746F3632-5BB2-4570-9453-31D6D58A7D8E}" - ProjectSection(ProjectDependencies) = postProject - {12A49562-BAB9-43A3-A21D-15B60BBB4C31} = {12A49562-BAB9-43A3-A21D-15B60BBB4C31} - {A9EDAC04-6A5F-4BA7-BC0D-CCE7B255B6EA} = {A9EDAC04-6A5F-4BA7-BC0D-CCE7B255B6EA} - EndProjectSection -EndProject -Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "mrcpclient", "libs\mrcp-client\mrcpclient.vcproj", "{72782932-37CC-46AE-8C7F-9A7B1A6EE108}" - ProjectSection(ProjectDependencies) = postProject - {12A49562-BAB9-43A3-A21D-15B60BBB4C31} = {12A49562-BAB9-43A3-A21D-15B60BBB4C31} - {A9EDAC04-6A5F-4BA7-BC0D-CCE7B255B6EA} = {A9EDAC04-6A5F-4BA7-BC0D-CCE7B255B6EA} - EndProjectSection -EndProject -Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "libunimrcpclient", "platforms\libunimrcp-client\libunimrcpclient.vcproj", "{EE157390-1E85-416C-946E-620E32C9AD33}" - ProjectSection(ProjectDependencies) = postProject - {DEB01ACB-D65F-4A62-AED9-58C1054499E9} = {DEB01ACB-D65F-4A62-AED9-58C1054499E9} - {746F3632-5BB2-4570-9453-31D6D58A7D8E} = {746F3632-5BB2-4570-9453-31D6D58A7D8E} - {72782932-37CC-46AE-8C7F-9A7B1A6EE108} = {72782932-37CC-46AE-8C7F-9A7B1A6EE108} - EndProjectSection -EndProject -Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "unimrcpclient", "platforms\unimrcp-client\unimrcpclient.vcproj", "{57FAF32E-49FD-491F-895D-132D0D5EFE0A}" - ProjectSection(ProjectDependencies) = postProject - {EE157390-1E85-416C-946E-620E32C9AD33} = {EE157390-1E85-416C-946E-620E32C9AD33} - EndProjectSection -EndProject -Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "mrcpv2transport", "libs\mrcpv2-transport\mrcpv2transport.vcproj", "{A9EDAC04-6A5F-4BA7-BC0D-CCE7B255B6EA}" - ProjectSection(ProjectDependencies) = postProject - {1C320193-46A6-4B34-9C56-8AB584FC1B56} = {1C320193-46A6-4B34-9C56-8AB584FC1B56} - EndProjectSection -EndProject -Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "mrcpengine", "libs\mrcp-engine\mrcpengine.vcproj", "{843425BE-9A9A-44F4-A4E3-4B57D6ABD53C}" - ProjectSection(ProjectDependencies) = postProject - {B5A00BFA-6083-4FAE-A097-71642D6473B5} = {B5A00BFA-6083-4FAE-A097-71642D6473B5} - {1C320193-46A6-4B34-9C56-8AB584FC1B56} = {1C320193-46A6-4B34-9C56-8AB584FC1B56} - EndProjectSection -EndProject -Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "demosynth", "plugins\demo-synth\demosynth.vcproj", "{92BFA534-C419-4EB2-AAA3-510653F38F08}" - ProjectSection(ProjectDependencies) = postProject - {843425BE-9A9A-44F4-A4E3-4B57D6ABD53C} = {843425BE-9A9A-44F4-A4E3-4B57D6ABD53C} - EndProjectSection -EndProject -Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "demorecog", "plugins\demo-recog\demorecog.vcproj", "{B495B6D9-AF84-479D-B30A-313C16EF8BFD}" - ProjectSection(ProjectDependencies) = postProject - {843425BE-9A9A-44F4-A4E3-4B57D6ABD53C} = {843425BE-9A9A-44F4-A4E3-4B57D6ABD53C} - EndProjectSection -EndProject -Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "strtablegen", "tests\strtablegen\strtablegen.vcproj", "{79EF9F1D-E211-4ED1-91D2-FC935AB3A872}" - ProjectSection(ProjectDependencies) = postProject - {13DEECA0-BDD4-4744-A1A2-8EB0A44DF3D2} = {13DEECA0-BDD4-4744-A1A2-8EB0A44DF3D2} - EndProjectSection -EndProject -Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "apttest", "tests\apttest\apttest.vcproj", "{429C907B-97D1-4B2D-9B0E-A14A5BFDAD15}" - ProjectSection(ProjectDependencies) = postProject - {13DEECA0-BDD4-4744-A1A2-8EB0A44DF3D2} = {13DEECA0-BDD4-4744-A1A2-8EB0A44DF3D2} - EndProjectSection -EndProject -Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "mpftest", "tests\mpftest\mpftest.vcproj", "{DCF01B1C-5268-44F3-9130-D647FABFB663}" - ProjectSection(ProjectDependencies) = postProject - {B5A00BFA-6083-4FAE-A097-71642D6473B5} = {B5A00BFA-6083-4FAE-A097-71642D6473B5} - EndProjectSection -EndProject -Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "mrcptest", "tests\mrcptest\mrcptest.vcproj", "{3CA97077-6210-4362-998A-D15A35EEAA08}" - ProjectSection(ProjectDependencies) = postProject - {1C320193-46A6-4B34-9C56-8AB584FC1B56} = {1C320193-46A6-4B34-9C56-8AB584FC1B56} - EndProjectSection -EndProject -Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "tools", "tools", "{62083CC3-13BF-49EA-BFE8-4C9337C0D82C}" -EndProject -Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "unirtsp", "libs\uni-rtsp\unirtsp.vcproj", "{504B3154-7A4F-459D-9877-B951021C3F1F}" - ProjectSection(ProjectDependencies) = postProject - {13DEECA0-BDD4-4744-A1A2-8EB0A44DF3D2} = {13DEECA0-BDD4-4744-A1A2-8EB0A44DF3D2} - EndProjectSection -EndProject -Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "rtsptest", "tests\rtsptest\rtsptest.vcproj", "{17A33F3F-BAF5-403F-8EF4-FECDA7D9A335}" - ProjectSection(ProjectDependencies) = postProject - {504B3154-7A4F-459D-9877-B951021C3F1F} = {504B3154-7A4F-459D-9877-B951021C3F1F} - EndProjectSection -EndProject -Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "mrcpunirtsp", "modules\mrcp-unirtsp\mrcpunirtsp.vcproj", "{DEB01ACB-D65F-4A62-AED9-58C1054499E9}" - ProjectSection(ProjectDependencies) = postProject - {12A49562-BAB9-43A3-A21D-15B60BBB4C31} = {12A49562-BAB9-43A3-A21D-15B60BBB4C31} - {504B3154-7A4F-459D-9877-B951021C3F1F} = {504B3154-7A4F-459D-9877-B951021C3F1F} - EndProjectSection -EndProject -Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "prepare", "build\tools\prepare.vcproj", "{01D63BF5-7798-4746-852A-4B45229BB735}" -EndProject -Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "unimrcpservice", "build\tools\unimrcpservice.vcproj", "{4714EF49-BFD5-4B22-95F7-95A07F1EAC25}" - ProjectSection(ProjectDependencies) = postProject - {13DEECA0-BDD4-4744-A1A2-8EB0A44DF3D2} = {13DEECA0-BDD4-4744-A1A2-8EB0A44DF3D2} - EndProjectSection -EndProject -Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "asrclient", "platforms\asr-client\asrclient.vcproj", "{6B83AC6D-01CE-4E1C-81CE-02AD8116C684}" - ProjectSection(ProjectDependencies) = postProject - {272FAFA8-2B2F-4716-B95F-3B37CF2E0CB3} = {272FAFA8-2B2F-4716-B95F-3B37CF2E0CB3} - EndProjectSection -EndProject -Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "libasrclient", "platforms\libasr-client\libasrclient.vcproj", "{272FAFA8-2B2F-4716-B95F-3B37CF2E0CB3}" - ProjectSection(ProjectDependencies) = postProject - {EE157390-1E85-416C-946E-620E32C9AD33} = {EE157390-1E85-416C-946E-620E32C9AD33} - EndProjectSection -EndProject -Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "umc", "platforms\umc\umc.vcproj", "{CD1C52C1-D8E1-4654-AE65-6CCAB38DE894}" - ProjectSection(ProjectDependencies) = postProject - {EE157390-1E85-416C-946E-620E32C9AD33} = {EE157390-1E85-416C-946E-620E32C9AD33} - EndProjectSection -EndProject -Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "mrcprecorder", "plugins\mrcp-recorder\mrcprecorder.vcproj", "{5AFB8B04-AEB9-408C-B53E-AFBC44B5F3F2}" - ProjectSection(ProjectDependencies) = postProject - {843425BE-9A9A-44F4-A4E3-4B57D6ABD53C} = {843425BE-9A9A-44F4-A4E3-4B57D6ABD53C} - EndProjectSection -EndProject -Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "conf", "conf", "{9155EBB8-E7DD-49AE-A86A-7B90B9F09888}" - ProjectSection(SolutionItems) = preProject - conf\logger.xml = conf\logger.xml - conf\unimrcpclient.xml = conf\unimrcpclient.xml - conf\unimrcpclient.xsd = conf\unimrcpclient.xsd - conf\unimrcpserver.xml = conf\unimrcpserver.xml - conf\unimrcpserver.xsd = conf\unimrcpserver.xsd - EndProjectSection -EndProject -Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "client-profiles", "client-profiles", "{F2D6C1AF-0C05-4695-84AF-15A2F92F9899}" - ProjectSection(SolutionItems) = preProject - conf\client-profiles\lumenvox.xml = conf\client-profiles\lumenvox.xml - conf\client-profiles\nuance.xml = conf\client-profiles\nuance.xml - conf\client-profiles\unimrcp.xml = conf\client-profiles\unimrcp.xml - EndProjectSection -EndProject -Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "demoverifier", "plugins\demo-verifier\demoverifier.vcproj", "{F7563CAD-5C95-46E5-89B7-0953C6C6E746}" - ProjectSection(ProjectDependencies) = postProject - {843425BE-9A9A-44F4-A4E3-4B57D6ABD53C} = {843425BE-9A9A-44F4-A4E3-4B57D6ABD53C} - EndProjectSection -EndProject -Global - GlobalSection(SolutionConfigurationPlatforms) = preSolution - Debug|Win32 = Debug|Win32 - Debug|x64 = Debug|x64 - Release|Win32 = Release|Win32 - Release|x64 = Release|x64 - EndGlobalSection - GlobalSection(ProjectConfigurationPlatforms) = postSolution - {592CF22D-3F8F-4A77-A174-130D77B7623B}.Debug|Win32.ActiveCfg = Debug|Win32 - {592CF22D-3F8F-4A77-A174-130D77B7623B}.Debug|Win32.Build.0 = Debug|Win32 - {592CF22D-3F8F-4A77-A174-130D77B7623B}.Debug|x64.ActiveCfg = Debug|x64 - {592CF22D-3F8F-4A77-A174-130D77B7623B}.Debug|x64.Build.0 = Debug|x64 - {592CF22D-3F8F-4A77-A174-130D77B7623B}.Release|Win32.ActiveCfg = Release|Win32 - {592CF22D-3F8F-4A77-A174-130D77B7623B}.Release|Win32.Build.0 = Release|Win32 - {592CF22D-3F8F-4A77-A174-130D77B7623B}.Release|x64.ActiveCfg = Release|x64 - {592CF22D-3F8F-4A77-A174-130D77B7623B}.Release|x64.Build.0 = Release|x64 - {13DEECA0-BDD4-4744-A1A2-8EB0A44DF3D2}.Debug|Win32.ActiveCfg = Debug|Win32 - {13DEECA0-BDD4-4744-A1A2-8EB0A44DF3D2}.Debug|Win32.Build.0 = Debug|Win32 - {13DEECA0-BDD4-4744-A1A2-8EB0A44DF3D2}.Debug|x64.ActiveCfg = Debug|x64 - {13DEECA0-BDD4-4744-A1A2-8EB0A44DF3D2}.Debug|x64.Build.0 = Debug|x64 - {13DEECA0-BDD4-4744-A1A2-8EB0A44DF3D2}.Release|Win32.ActiveCfg = Release|Win32 - {13DEECA0-BDD4-4744-A1A2-8EB0A44DF3D2}.Release|Win32.Build.0 = Release|Win32 - {13DEECA0-BDD4-4744-A1A2-8EB0A44DF3D2}.Release|x64.ActiveCfg = Release|x64 - {13DEECA0-BDD4-4744-A1A2-8EB0A44DF3D2}.Release|x64.Build.0 = Release|x64 - {B5A00BFA-6083-4FAE-A097-71642D6473B5}.Debug|Win32.ActiveCfg = Debug|Win32 - {B5A00BFA-6083-4FAE-A097-71642D6473B5}.Debug|Win32.Build.0 = Debug|Win32 - {B5A00BFA-6083-4FAE-A097-71642D6473B5}.Debug|x64.ActiveCfg = Debug|x64 - {B5A00BFA-6083-4FAE-A097-71642D6473B5}.Debug|x64.Build.0 = Debug|x64 - {B5A00BFA-6083-4FAE-A097-71642D6473B5}.Release|Win32.ActiveCfg = Release|Win32 - {B5A00BFA-6083-4FAE-A097-71642D6473B5}.Release|Win32.Build.0 = Release|Win32 - {B5A00BFA-6083-4FAE-A097-71642D6473B5}.Release|x64.ActiveCfg = Release|x64 - {B5A00BFA-6083-4FAE-A097-71642D6473B5}.Release|x64.Build.0 = Release|x64 - {1C320193-46A6-4B34-9C56-8AB584FC1B56}.Debug|Win32.ActiveCfg = Debug|Win32 - {1C320193-46A6-4B34-9C56-8AB584FC1B56}.Debug|Win32.Build.0 = Debug|Win32 - {1C320193-46A6-4B34-9C56-8AB584FC1B56}.Debug|x64.ActiveCfg = Debug|x64 - {1C320193-46A6-4B34-9C56-8AB584FC1B56}.Debug|x64.Build.0 = Debug|x64 - {1C320193-46A6-4B34-9C56-8AB584FC1B56}.Release|Win32.ActiveCfg = Release|Win32 - {1C320193-46A6-4B34-9C56-8AB584FC1B56}.Release|Win32.Build.0 = Release|Win32 - {1C320193-46A6-4B34-9C56-8AB584FC1B56}.Release|x64.ActiveCfg = Release|x64 - {1C320193-46A6-4B34-9C56-8AB584FC1B56}.Release|x64.Build.0 = Release|x64 - {12A49562-BAB9-43A3-A21D-15B60BBB4C31}.Debug|Win32.ActiveCfg = Debug|Win32 - {12A49562-BAB9-43A3-A21D-15B60BBB4C31}.Debug|Win32.Build.0 = Debug|Win32 - {12A49562-BAB9-43A3-A21D-15B60BBB4C31}.Debug|x64.ActiveCfg = Debug|x64 - {12A49562-BAB9-43A3-A21D-15B60BBB4C31}.Debug|x64.Build.0 = Debug|x64 - {12A49562-BAB9-43A3-A21D-15B60BBB4C31}.Release|Win32.ActiveCfg = Release|Win32 - {12A49562-BAB9-43A3-A21D-15B60BBB4C31}.Release|Win32.Build.0 = Release|Win32 - {12A49562-BAB9-43A3-A21D-15B60BBB4C31}.Release|x64.ActiveCfg = Release|x64 - {12A49562-BAB9-43A3-A21D-15B60BBB4C31}.Release|x64.Build.0 = Release|x64 - {18B1F35A-10F8-4287-9B37-2D10501B0B38}.Debug|Win32.ActiveCfg = Debug|Win32 - {18B1F35A-10F8-4287-9B37-2D10501B0B38}.Debug|Win32.Build.0 = Debug|Win32 - {18B1F35A-10F8-4287-9B37-2D10501B0B38}.Debug|x64.ActiveCfg = Debug|x64 - {18B1F35A-10F8-4287-9B37-2D10501B0B38}.Debug|x64.Build.0 = Debug|x64 - {18B1F35A-10F8-4287-9B37-2D10501B0B38}.Release|Win32.ActiveCfg = Release|Win32 - {18B1F35A-10F8-4287-9B37-2D10501B0B38}.Release|Win32.Build.0 = Release|Win32 - {18B1F35A-10F8-4287-9B37-2D10501B0B38}.Release|x64.ActiveCfg = Release|x64 - {18B1F35A-10F8-4287-9B37-2D10501B0B38}.Release|x64.Build.0 = Release|x64 - {C98AF157-352E-4737-BD30-A24E2647F5AE}.Debug|Win32.ActiveCfg = Debug|Win32 - {C98AF157-352E-4737-BD30-A24E2647F5AE}.Debug|Win32.Build.0 = Debug|Win32 - {C98AF157-352E-4737-BD30-A24E2647F5AE}.Debug|x64.ActiveCfg = Debug|x64 - {C98AF157-352E-4737-BD30-A24E2647F5AE}.Debug|x64.Build.0 = Debug|x64 - {C98AF157-352E-4737-BD30-A24E2647F5AE}.Release|Win32.ActiveCfg = Release|Win32 - {C98AF157-352E-4737-BD30-A24E2647F5AE}.Release|Win32.Build.0 = Release|Win32 - {C98AF157-352E-4737-BD30-A24E2647F5AE}.Release|x64.ActiveCfg = Release|x64 - {C98AF157-352E-4737-BD30-A24E2647F5AE}.Release|x64.Build.0 = Release|x64 - {746F3632-5BB2-4570-9453-31D6D58A7D8E}.Debug|Win32.ActiveCfg = Debug|Win32 - {746F3632-5BB2-4570-9453-31D6D58A7D8E}.Debug|Win32.Build.0 = Debug|Win32 - {746F3632-5BB2-4570-9453-31D6D58A7D8E}.Debug|x64.ActiveCfg = Debug|x64 - {746F3632-5BB2-4570-9453-31D6D58A7D8E}.Debug|x64.Build.0 = Debug|x64 - {746F3632-5BB2-4570-9453-31D6D58A7D8E}.Release|Win32.ActiveCfg = Release|Win32 - {746F3632-5BB2-4570-9453-31D6D58A7D8E}.Release|Win32.Build.0 = Release|Win32 - {746F3632-5BB2-4570-9453-31D6D58A7D8E}.Release|x64.ActiveCfg = Release|x64 - {746F3632-5BB2-4570-9453-31D6D58A7D8E}.Release|x64.Build.0 = Release|x64 - {72782932-37CC-46AE-8C7F-9A7B1A6EE108}.Debug|Win32.ActiveCfg = Debug|Win32 - {72782932-37CC-46AE-8C7F-9A7B1A6EE108}.Debug|Win32.Build.0 = Debug|Win32 - {72782932-37CC-46AE-8C7F-9A7B1A6EE108}.Debug|x64.ActiveCfg = Debug|x64 - {72782932-37CC-46AE-8C7F-9A7B1A6EE108}.Debug|x64.Build.0 = Debug|x64 - {72782932-37CC-46AE-8C7F-9A7B1A6EE108}.Release|Win32.ActiveCfg = Release|Win32 - {72782932-37CC-46AE-8C7F-9A7B1A6EE108}.Release|Win32.Build.0 = Release|Win32 - {72782932-37CC-46AE-8C7F-9A7B1A6EE108}.Release|x64.ActiveCfg = Release|x64 - {72782932-37CC-46AE-8C7F-9A7B1A6EE108}.Release|x64.Build.0 = Release|x64 - {EE157390-1E85-416C-946E-620E32C9AD33}.Debug|Win32.ActiveCfg = Debug|Win32 - {EE157390-1E85-416C-946E-620E32C9AD33}.Debug|Win32.Build.0 = Debug|Win32 - {EE157390-1E85-416C-946E-620E32C9AD33}.Debug|x64.ActiveCfg = Debug|x64 - {EE157390-1E85-416C-946E-620E32C9AD33}.Debug|x64.Build.0 = Debug|x64 - {EE157390-1E85-416C-946E-620E32C9AD33}.Release|Win32.ActiveCfg = Release|Win32 - {EE157390-1E85-416C-946E-620E32C9AD33}.Release|Win32.Build.0 = Release|Win32 - {EE157390-1E85-416C-946E-620E32C9AD33}.Release|x64.ActiveCfg = Release|x64 - {EE157390-1E85-416C-946E-620E32C9AD33}.Release|x64.Build.0 = Release|x64 - {57FAF32E-49FD-491F-895D-132D0D5EFE0A}.Debug|Win32.ActiveCfg = Debug|Win32 - {57FAF32E-49FD-491F-895D-132D0D5EFE0A}.Debug|Win32.Build.0 = Debug|Win32 - {57FAF32E-49FD-491F-895D-132D0D5EFE0A}.Debug|x64.ActiveCfg = Debug|x64 - {57FAF32E-49FD-491F-895D-132D0D5EFE0A}.Debug|x64.Build.0 = Debug|x64 - {57FAF32E-49FD-491F-895D-132D0D5EFE0A}.Release|Win32.ActiveCfg = Release|Win32 - {57FAF32E-49FD-491F-895D-132D0D5EFE0A}.Release|Win32.Build.0 = Release|Win32 - {57FAF32E-49FD-491F-895D-132D0D5EFE0A}.Release|x64.ActiveCfg = Release|x64 - {57FAF32E-49FD-491F-895D-132D0D5EFE0A}.Release|x64.Build.0 = Release|x64 - {A9EDAC04-6A5F-4BA7-BC0D-CCE7B255B6EA}.Debug|Win32.ActiveCfg = Debug|Win32 - {A9EDAC04-6A5F-4BA7-BC0D-CCE7B255B6EA}.Debug|Win32.Build.0 = Debug|Win32 - {A9EDAC04-6A5F-4BA7-BC0D-CCE7B255B6EA}.Debug|x64.ActiveCfg = Debug|x64 - {A9EDAC04-6A5F-4BA7-BC0D-CCE7B255B6EA}.Debug|x64.Build.0 = Debug|x64 - {A9EDAC04-6A5F-4BA7-BC0D-CCE7B255B6EA}.Release|Win32.ActiveCfg = Release|Win32 - {A9EDAC04-6A5F-4BA7-BC0D-CCE7B255B6EA}.Release|Win32.Build.0 = Release|Win32 - {A9EDAC04-6A5F-4BA7-BC0D-CCE7B255B6EA}.Release|x64.ActiveCfg = Release|x64 - {A9EDAC04-6A5F-4BA7-BC0D-CCE7B255B6EA}.Release|x64.Build.0 = Release|x64 - {843425BE-9A9A-44F4-A4E3-4B57D6ABD53C}.Debug|Win32.ActiveCfg = Debug|Win32 - {843425BE-9A9A-44F4-A4E3-4B57D6ABD53C}.Debug|Win32.Build.0 = Debug|Win32 - {843425BE-9A9A-44F4-A4E3-4B57D6ABD53C}.Debug|x64.ActiveCfg = Debug|x64 - {843425BE-9A9A-44F4-A4E3-4B57D6ABD53C}.Debug|x64.Build.0 = Debug|x64 - {843425BE-9A9A-44F4-A4E3-4B57D6ABD53C}.Release|Win32.ActiveCfg = Release|Win32 - {843425BE-9A9A-44F4-A4E3-4B57D6ABD53C}.Release|Win32.Build.0 = Release|Win32 - {843425BE-9A9A-44F4-A4E3-4B57D6ABD53C}.Release|x64.ActiveCfg = Release|x64 - {843425BE-9A9A-44F4-A4E3-4B57D6ABD53C}.Release|x64.Build.0 = Release|x64 - {92BFA534-C419-4EB2-AAA3-510653F38F08}.Debug|Win32.ActiveCfg = Debug|Win32 - {92BFA534-C419-4EB2-AAA3-510653F38F08}.Debug|Win32.Build.0 = Debug|Win32 - {92BFA534-C419-4EB2-AAA3-510653F38F08}.Debug|x64.ActiveCfg = Debug|x64 - {92BFA534-C419-4EB2-AAA3-510653F38F08}.Debug|x64.Build.0 = Debug|x64 - {92BFA534-C419-4EB2-AAA3-510653F38F08}.Release|Win32.ActiveCfg = Release|Win32 - {92BFA534-C419-4EB2-AAA3-510653F38F08}.Release|Win32.Build.0 = Release|Win32 - {92BFA534-C419-4EB2-AAA3-510653F38F08}.Release|x64.ActiveCfg = Release|x64 - {92BFA534-C419-4EB2-AAA3-510653F38F08}.Release|x64.Build.0 = Release|x64 - {B495B6D9-AF84-479D-B30A-313C16EF8BFD}.Debug|Win32.ActiveCfg = Debug|Win32 - {B495B6D9-AF84-479D-B30A-313C16EF8BFD}.Debug|Win32.Build.0 = Debug|Win32 - {B495B6D9-AF84-479D-B30A-313C16EF8BFD}.Debug|x64.ActiveCfg = Debug|x64 - {B495B6D9-AF84-479D-B30A-313C16EF8BFD}.Debug|x64.Build.0 = Debug|x64 - {B495B6D9-AF84-479D-B30A-313C16EF8BFD}.Release|Win32.ActiveCfg = Release|Win32 - {B495B6D9-AF84-479D-B30A-313C16EF8BFD}.Release|Win32.Build.0 = Release|Win32 - {B495B6D9-AF84-479D-B30A-313C16EF8BFD}.Release|x64.ActiveCfg = Release|x64 - {B495B6D9-AF84-479D-B30A-313C16EF8BFD}.Release|x64.Build.0 = Release|x64 - {79EF9F1D-E211-4ED1-91D2-FC935AB3A872}.Debug|Win32.ActiveCfg = Debug|Win32 - {79EF9F1D-E211-4ED1-91D2-FC935AB3A872}.Debug|Win32.Build.0 = Debug|Win32 - {79EF9F1D-E211-4ED1-91D2-FC935AB3A872}.Debug|x64.ActiveCfg = Debug|x64 - {79EF9F1D-E211-4ED1-91D2-FC935AB3A872}.Debug|x64.Build.0 = Debug|x64 - {79EF9F1D-E211-4ED1-91D2-FC935AB3A872}.Release|Win32.ActiveCfg = Release|Win32 - {79EF9F1D-E211-4ED1-91D2-FC935AB3A872}.Release|Win32.Build.0 = Release|Win32 - {79EF9F1D-E211-4ED1-91D2-FC935AB3A872}.Release|x64.ActiveCfg = Release|x64 - {79EF9F1D-E211-4ED1-91D2-FC935AB3A872}.Release|x64.Build.0 = Release|x64 - {429C907B-97D1-4B2D-9B0E-A14A5BFDAD15}.Debug|Win32.ActiveCfg = Debug|Win32 - {429C907B-97D1-4B2D-9B0E-A14A5BFDAD15}.Debug|Win32.Build.0 = Debug|Win32 - {429C907B-97D1-4B2D-9B0E-A14A5BFDAD15}.Debug|x64.ActiveCfg = Debug|x64 - {429C907B-97D1-4B2D-9B0E-A14A5BFDAD15}.Debug|x64.Build.0 = Debug|x64 - {429C907B-97D1-4B2D-9B0E-A14A5BFDAD15}.Release|Win32.ActiveCfg = Release|Win32 - {429C907B-97D1-4B2D-9B0E-A14A5BFDAD15}.Release|Win32.Build.0 = Release|Win32 - {429C907B-97D1-4B2D-9B0E-A14A5BFDAD15}.Release|x64.ActiveCfg = Release|x64 - {429C907B-97D1-4B2D-9B0E-A14A5BFDAD15}.Release|x64.Build.0 = Release|x64 - {DCF01B1C-5268-44F3-9130-D647FABFB663}.Debug|Win32.ActiveCfg = Debug|Win32 - {DCF01B1C-5268-44F3-9130-D647FABFB663}.Debug|Win32.Build.0 = Debug|Win32 - {DCF01B1C-5268-44F3-9130-D647FABFB663}.Debug|x64.ActiveCfg = Debug|x64 - {DCF01B1C-5268-44F3-9130-D647FABFB663}.Debug|x64.Build.0 = Debug|x64 - {DCF01B1C-5268-44F3-9130-D647FABFB663}.Release|Win32.ActiveCfg = Release|Win32 - {DCF01B1C-5268-44F3-9130-D647FABFB663}.Release|Win32.Build.0 = Release|Win32 - {DCF01B1C-5268-44F3-9130-D647FABFB663}.Release|x64.ActiveCfg = Release|x64 - {DCF01B1C-5268-44F3-9130-D647FABFB663}.Release|x64.Build.0 = Release|x64 - {3CA97077-6210-4362-998A-D15A35EEAA08}.Debug|Win32.ActiveCfg = Debug|Win32 - {3CA97077-6210-4362-998A-D15A35EEAA08}.Debug|Win32.Build.0 = Debug|Win32 - {3CA97077-6210-4362-998A-D15A35EEAA08}.Debug|x64.ActiveCfg = Debug|x64 - {3CA97077-6210-4362-998A-D15A35EEAA08}.Debug|x64.Build.0 = Debug|x64 - {3CA97077-6210-4362-998A-D15A35EEAA08}.Release|Win32.ActiveCfg = Release|Win32 - {3CA97077-6210-4362-998A-D15A35EEAA08}.Release|Win32.Build.0 = Release|Win32 - {3CA97077-6210-4362-998A-D15A35EEAA08}.Release|x64.ActiveCfg = Release|x64 - {3CA97077-6210-4362-998A-D15A35EEAA08}.Release|x64.Build.0 = Release|x64 - {504B3154-7A4F-459D-9877-B951021C3F1F}.Debug|Win32.ActiveCfg = Debug|Win32 - {504B3154-7A4F-459D-9877-B951021C3F1F}.Debug|Win32.Build.0 = Debug|Win32 - {504B3154-7A4F-459D-9877-B951021C3F1F}.Debug|x64.ActiveCfg = Debug|x64 - {504B3154-7A4F-459D-9877-B951021C3F1F}.Debug|x64.Build.0 = Debug|x64 - {504B3154-7A4F-459D-9877-B951021C3F1F}.Release|Win32.ActiveCfg = Release|Win32 - {504B3154-7A4F-459D-9877-B951021C3F1F}.Release|Win32.Build.0 = Release|Win32 - {504B3154-7A4F-459D-9877-B951021C3F1F}.Release|x64.ActiveCfg = Release|x64 - {504B3154-7A4F-459D-9877-B951021C3F1F}.Release|x64.Build.0 = Release|x64 - {17A33F3F-BAF5-403F-8EF4-FECDA7D9A335}.Debug|Win32.ActiveCfg = Debug|Win32 - {17A33F3F-BAF5-403F-8EF4-FECDA7D9A335}.Debug|Win32.Build.0 = Debug|Win32 - {17A33F3F-BAF5-403F-8EF4-FECDA7D9A335}.Debug|x64.ActiveCfg = Debug|x64 - {17A33F3F-BAF5-403F-8EF4-FECDA7D9A335}.Debug|x64.Build.0 = Debug|x64 - {17A33F3F-BAF5-403F-8EF4-FECDA7D9A335}.Release|Win32.ActiveCfg = Release|Win32 - {17A33F3F-BAF5-403F-8EF4-FECDA7D9A335}.Release|Win32.Build.0 = Release|Win32 - {17A33F3F-BAF5-403F-8EF4-FECDA7D9A335}.Release|x64.ActiveCfg = Release|x64 - {17A33F3F-BAF5-403F-8EF4-FECDA7D9A335}.Release|x64.Build.0 = Release|x64 - {DEB01ACB-D65F-4A62-AED9-58C1054499E9}.Debug|Win32.ActiveCfg = Debug|Win32 - {DEB01ACB-D65F-4A62-AED9-58C1054499E9}.Debug|Win32.Build.0 = Debug|Win32 - {DEB01ACB-D65F-4A62-AED9-58C1054499E9}.Debug|x64.ActiveCfg = Debug|x64 - {DEB01ACB-D65F-4A62-AED9-58C1054499E9}.Debug|x64.Build.0 = Debug|x64 - {DEB01ACB-D65F-4A62-AED9-58C1054499E9}.Release|Win32.ActiveCfg = Release|Win32 - {DEB01ACB-D65F-4A62-AED9-58C1054499E9}.Release|Win32.Build.0 = Release|Win32 - {DEB01ACB-D65F-4A62-AED9-58C1054499E9}.Release|x64.ActiveCfg = Release|x64 - {DEB01ACB-D65F-4A62-AED9-58C1054499E9}.Release|x64.Build.0 = Release|x64 - {01D63BF5-7798-4746-852A-4B45229BB735}.Debug|Win32.ActiveCfg = Debug|Win32 - {01D63BF5-7798-4746-852A-4B45229BB735}.Debug|x64.ActiveCfg = Debug|x64 - {01D63BF5-7798-4746-852A-4B45229BB735}.Release|Win32.ActiveCfg = Release|Win32 - {01D63BF5-7798-4746-852A-4B45229BB735}.Release|x64.ActiveCfg = Release|x64 - {4714EF49-BFD5-4B22-95F7-95A07F1EAC25}.Debug|Win32.ActiveCfg = Debug|Win32 - {4714EF49-BFD5-4B22-95F7-95A07F1EAC25}.Debug|x64.ActiveCfg = Debug|x64 - {4714EF49-BFD5-4B22-95F7-95A07F1EAC25}.Release|Win32.ActiveCfg = Release|Win32 - {4714EF49-BFD5-4B22-95F7-95A07F1EAC25}.Release|x64.ActiveCfg = Release|x64 - {6B83AC6D-01CE-4E1C-81CE-02AD8116C684}.Debug|Win32.ActiveCfg = Debug|Win32 - {6B83AC6D-01CE-4E1C-81CE-02AD8116C684}.Debug|Win32.Build.0 = Debug|Win32 - {6B83AC6D-01CE-4E1C-81CE-02AD8116C684}.Debug|x64.ActiveCfg = Debug|x64 - {6B83AC6D-01CE-4E1C-81CE-02AD8116C684}.Debug|x64.Build.0 = Debug|x64 - {6B83AC6D-01CE-4E1C-81CE-02AD8116C684}.Release|Win32.ActiveCfg = Release|Win32 - {6B83AC6D-01CE-4E1C-81CE-02AD8116C684}.Release|Win32.Build.0 = Release|Win32 - {6B83AC6D-01CE-4E1C-81CE-02AD8116C684}.Release|x64.ActiveCfg = Release|x64 - {6B83AC6D-01CE-4E1C-81CE-02AD8116C684}.Release|x64.Build.0 = Release|x64 - {272FAFA8-2B2F-4716-B95F-3B37CF2E0CB3}.Debug|Win32.ActiveCfg = Debug|Win32 - {272FAFA8-2B2F-4716-B95F-3B37CF2E0CB3}.Debug|Win32.Build.0 = Debug|Win32 - {272FAFA8-2B2F-4716-B95F-3B37CF2E0CB3}.Debug|x64.ActiveCfg = Debug|x64 - {272FAFA8-2B2F-4716-B95F-3B37CF2E0CB3}.Debug|x64.Build.0 = Debug|x64 - {272FAFA8-2B2F-4716-B95F-3B37CF2E0CB3}.Release|Win32.ActiveCfg = Release|Win32 - {272FAFA8-2B2F-4716-B95F-3B37CF2E0CB3}.Release|Win32.Build.0 = Release|Win32 - {272FAFA8-2B2F-4716-B95F-3B37CF2E0CB3}.Release|x64.ActiveCfg = Release|x64 - {272FAFA8-2B2F-4716-B95F-3B37CF2E0CB3}.Release|x64.Build.0 = Release|x64 - {CD1C52C1-D8E1-4654-AE65-6CCAB38DE894}.Debug|Win32.ActiveCfg = Debug|Win32 - {CD1C52C1-D8E1-4654-AE65-6CCAB38DE894}.Debug|Win32.Build.0 = Debug|Win32 - {CD1C52C1-D8E1-4654-AE65-6CCAB38DE894}.Debug|x64.ActiveCfg = Debug|x64 - {CD1C52C1-D8E1-4654-AE65-6CCAB38DE894}.Debug|x64.Build.0 = Debug|x64 - {CD1C52C1-D8E1-4654-AE65-6CCAB38DE894}.Release|Win32.ActiveCfg = Release|Win32 - {CD1C52C1-D8E1-4654-AE65-6CCAB38DE894}.Release|Win32.Build.0 = Release|Win32 - {CD1C52C1-D8E1-4654-AE65-6CCAB38DE894}.Release|x64.ActiveCfg = Release|x64 - {CD1C52C1-D8E1-4654-AE65-6CCAB38DE894}.Release|x64.Build.0 = Release|x64 - {5AFB8B04-AEB9-408C-B53E-AFBC44B5F3F2}.Debug|Win32.ActiveCfg = Debug|Win32 - {5AFB8B04-AEB9-408C-B53E-AFBC44B5F3F2}.Debug|Win32.Build.0 = Debug|Win32 - {5AFB8B04-AEB9-408C-B53E-AFBC44B5F3F2}.Debug|x64.ActiveCfg = Debug|x64 - {5AFB8B04-AEB9-408C-B53E-AFBC44B5F3F2}.Debug|x64.Build.0 = Debug|x64 - {5AFB8B04-AEB9-408C-B53E-AFBC44B5F3F2}.Release|Win32.ActiveCfg = Release|Win32 - {5AFB8B04-AEB9-408C-B53E-AFBC44B5F3F2}.Release|Win32.Build.0 = Release|Win32 - {5AFB8B04-AEB9-408C-B53E-AFBC44B5F3F2}.Release|x64.ActiveCfg = Release|x64 - {5AFB8B04-AEB9-408C-B53E-AFBC44B5F3F2}.Release|x64.Build.0 = Release|x64 - {F7563CAD-5C95-46E5-89B7-0953C6C6E746}.Debug|Win32.ActiveCfg = Debug|Win32 - {F7563CAD-5C95-46E5-89B7-0953C6C6E746}.Debug|Win32.Build.0 = Debug|Win32 - {F7563CAD-5C95-46E5-89B7-0953C6C6E746}.Debug|x64.ActiveCfg = Debug|x64 - {F7563CAD-5C95-46E5-89B7-0953C6C6E746}.Debug|x64.Build.0 = Debug|x64 - {F7563CAD-5C95-46E5-89B7-0953C6C6E746}.Release|Win32.ActiveCfg = Release|Win32 - {F7563CAD-5C95-46E5-89B7-0953C6C6E746}.Release|Win32.Build.0 = Release|Win32 - {F7563CAD-5C95-46E5-89B7-0953C6C6E746}.Release|x64.ActiveCfg = Release|x64 - {F7563CAD-5C95-46E5-89B7-0953C6C6E746}.Release|x64.Build.0 = Release|x64 - EndGlobalSection - GlobalSection(SolutionProperties) = preSolution - HideSolutionNode = FALSE - EndGlobalSection - GlobalSection(NestedProjects) = preSolution - {13DEECA0-BDD4-4744-A1A2-8EB0A44DF3D2} = {5377DC3A-DB96-4819-8AAF-2A75F3A69119} - {B5A00BFA-6083-4FAE-A097-71642D6473B5} = {5377DC3A-DB96-4819-8AAF-2A75F3A69119} - {1C320193-46A6-4B34-9C56-8AB584FC1B56} = {5377DC3A-DB96-4819-8AAF-2A75F3A69119} - {12A49562-BAB9-43A3-A21D-15B60BBB4C31} = {5377DC3A-DB96-4819-8AAF-2A75F3A69119} - {18B1F35A-10F8-4287-9B37-2D10501B0B38} = {5377DC3A-DB96-4819-8AAF-2A75F3A69119} - {72782932-37CC-46AE-8C7F-9A7B1A6EE108} = {5377DC3A-DB96-4819-8AAF-2A75F3A69119} - {A9EDAC04-6A5F-4BA7-BC0D-CCE7B255B6EA} = {5377DC3A-DB96-4819-8AAF-2A75F3A69119} - {843425BE-9A9A-44F4-A4E3-4B57D6ABD53C} = {5377DC3A-DB96-4819-8AAF-2A75F3A69119} - {504B3154-7A4F-459D-9877-B951021C3F1F} = {5377DC3A-DB96-4819-8AAF-2A75F3A69119} - {746F3632-5BB2-4570-9453-31D6D58A7D8E} = {493A1DB9-6E7C-48C7-93B5-F75C3C25B9DF} - {DEB01ACB-D65F-4A62-AED9-58C1054499E9} = {493A1DB9-6E7C-48C7-93B5-F75C3C25B9DF} - {592CF22D-3F8F-4A77-A174-130D77B7623B} = {8E282AE2-038C-49FE-AC67-BC9615AFD800} - {C98AF157-352E-4737-BD30-A24E2647F5AE} = {8E282AE2-038C-49FE-AC67-BC9615AFD800} - {EE157390-1E85-416C-946E-620E32C9AD33} = {8E282AE2-038C-49FE-AC67-BC9615AFD800} - {57FAF32E-49FD-491F-895D-132D0D5EFE0A} = {8E282AE2-038C-49FE-AC67-BC9615AFD800} - {6B83AC6D-01CE-4E1C-81CE-02AD8116C684} = {8E282AE2-038C-49FE-AC67-BC9615AFD800} - {272FAFA8-2B2F-4716-B95F-3B37CF2E0CB3} = {8E282AE2-038C-49FE-AC67-BC9615AFD800} - {CD1C52C1-D8E1-4654-AE65-6CCAB38DE894} = {8E282AE2-038C-49FE-AC67-BC9615AFD800} - {92BFA534-C419-4EB2-AAA3-510653F38F08} = {09BABD45-8F30-4F99-B8B8-8DD78F6804DB} - {B495B6D9-AF84-479D-B30A-313C16EF8BFD} = {09BABD45-8F30-4F99-B8B8-8DD78F6804DB} - {5AFB8B04-AEB9-408C-B53E-AFBC44B5F3F2} = {09BABD45-8F30-4F99-B8B8-8DD78F6804DB} - {F7563CAD-5C95-46E5-89B7-0953C6C6E746} = {09BABD45-8F30-4F99-B8B8-8DD78F6804DB} - {79EF9F1D-E211-4ED1-91D2-FC935AB3A872} = {AC4356E8-48A1-4D2D-AFB1-11CF30B974CD} - {429C907B-97D1-4B2D-9B0E-A14A5BFDAD15} = {AC4356E8-48A1-4D2D-AFB1-11CF30B974CD} - {DCF01B1C-5268-44F3-9130-D647FABFB663} = {AC4356E8-48A1-4D2D-AFB1-11CF30B974CD} - {3CA97077-6210-4362-998A-D15A35EEAA08} = {AC4356E8-48A1-4D2D-AFB1-11CF30B974CD} - {17A33F3F-BAF5-403F-8EF4-FECDA7D9A335} = {AC4356E8-48A1-4D2D-AFB1-11CF30B974CD} - {01D63BF5-7798-4746-852A-4B45229BB735} = {62083CC3-13BF-49EA-BFE8-4C9337C0D82C} - {4714EF49-BFD5-4B22-95F7-95A07F1EAC25} = {62083CC3-13BF-49EA-BFE8-4C9337C0D82C} - {F2D6C1AF-0C05-4695-84AF-15A2F92F9899} = {9155EBB8-E7DD-49AE-A86A-7B90B9F09888} - EndGlobalSection -EndGlobal diff --git a/libs/win32/apr-util/cleancount b/libs/win32/apr-util/cleancount deleted file mode 100644 index 56a6051ca2b..00000000000 --- a/libs/win32/apr-util/cleancount +++ /dev/null @@ -1 +0,0 @@ -1 \ No newline at end of file diff --git a/libs/win32/apr-util/libaprutil.2017.vcxproj b/libs/win32/apr-util/libaprutil.2017.vcxproj deleted file mode 100644 index a31b09e69db..00000000000 --- a/libs/win32/apr-util/libaprutil.2017.vcxproj +++ /dev/null @@ -1,960 +0,0 @@ - - - - - Debug - Win32 - - - Debug - x64 - - - Release - Win32 - - - Release - x64 - - - - libaprutil - {F057DA7F-79E5-4B00-845C-EF446EF055E3} - libaprutil - - - - DynamicLibrary - false - $(DefaultPlatformToolset) - - - DynamicLibrary - false - $(DefaultPlatformToolset) - - - DynamicLibrary - false - $(DefaultPlatformToolset) - - - DynamicLibrary - false - $(DefaultPlatformToolset) - - - - - - - - - - - - - - - - - - - - - - - <_ProjectFileVersion>10.0.30319.1 - false - false - false - false - - - - if not exist "$(ProjectDir)..\..\apr-util\include\apr_ldap.h" type "$(ProjectDir)..\..\apr-util\include\apr_ldap.hw" > "$(ProjectDir)..\..\apr-util\include\apr_ldap.h" -if not exist "$(ProjectDir)..\..\apr-util\include\apu.h" type "$(ProjectDir)..\..\apr-util\include\apu.hw" > "$(ProjectDir)..\..\apr-util\include\apu.h" -if not exist "$(ProjectDir)..\..\apr-util\include\apu_config.h" type "$(ProjectDir)..\..\apr-util\include\apu_config.hw" > "$(ProjectDir)..\..\apr-util\include\apu_config.h" -if not exist "$(ProjectDir)..\..\apr-util\include\apu_select_dbm.h" type "$(ProjectDir)..\..\apr-util\include\apu_select_dbm.hw" > "$(ProjectDir)..\..\apr-util\include\apu_select_dbm.h" -if not exist "$(ProjectDir)..\..\apr-util\include\apu_want.h" type "$(ProjectDir)..\..\apr-util\include\apu_want.hw" > "$(ProjectDir)..\..\apr-util\include\apu_want.h" -xcopy "$(ProjectDir)..\..\apr-util\include\*.h" "$(ProjectDir)..\..\include\" /C /D /Y - - - - /EHsc %(AdditionalOptions) - Disabled - ..\..\apr-util\include;..\..\apr-util\include/private;..\..\apr-util\dbm/sdbm;..\..\apr-iconv-1.1.1\include;..\..\apr\include;..\..\apr-util\xml\expat\lib;%(AdditionalIncludeDirectories) - _DEBUG;APU_DECLARE_EXPORT;APU_USE_SDBM;WIN32;_WINDOWS;%(PreprocessorDefinitions) - MultiThreadedDebugDLL - Level3 - true - 4244;4018;4267;%(DisableSpecificWarnings) - - - _DEBUG;APU_VERSION_ONLY;%(PreprocessorDefinitions) - 0x0409 - ..\..\apr-util\include;..\..\apr-util\include/private;..\..\apr-util\dbm/sdbm;..\..\apr-iconv-1.1.1\include;..\..\apr-1.2.7\include;%(AdditionalIncludeDirectories) - - - ws2_32.lib;mswsock.lib;wldap32.lib;%(AdditionalDependencies) - true - %(AdditionalLibraryDirectories) - true - Windows - 0x6EE60000 - false - MachineX86 - - - true - - - - - if not exist "$(ProjectDir)..\..\apr-util\include\apr_ldap.h" type "$(ProjectDir)..\..\apr-util\include\apr_ldap.hw" > "$(ProjectDir)..\..\apr-util\include\apr_ldap.h" -if not exist "$(ProjectDir)..\..\apr-util\include\apu.h" type "$(ProjectDir)..\..\apr-util\include\apu.hw" > "$(ProjectDir)..\..\apr-util\include\apu.h" -if not exist "$(ProjectDir)..\..\apr-util\include\apu_config.h" type "$(ProjectDir)..\..\apr-util\include\apu_config.hw" > "$(ProjectDir)..\..\apr-util\include\apu_config.h" -if not exist "$(ProjectDir)..\..\apr-util\include\apu_select_dbm.h" type "$(ProjectDir)..\..\apr-util\include\apu_select_dbm.hw" > "$(ProjectDir)..\..\apr-util\include\apu_select_dbm.h" -if not exist "$(ProjectDir)..\..\apr-util\include\apu_want.h" type "$(ProjectDir)..\..\apr-util\include\apu_want.hw" > "$(ProjectDir)..\..\apr-util\include\apu_want.h" -xcopy "$(ProjectDir)..\..\apr-util\include\*.h" "$(ProjectDir)..\..\include\" /C /D /Y - - - - /EHsc %(AdditionalOptions) - Disabled - ..\..\apr-util\include;..\..\apr-util\include/private;..\..\apr-util\dbm/sdbm;..\..\apr-iconv-1.1.1\include;..\..\apr\include;..\..\apr-util\xml\expat\lib;%(AdditionalIncludeDirectories) - _DEBUG;APU_DECLARE_EXPORT;APU_USE_SDBM;WIN32;_WINDOWS;%(PreprocessorDefinitions) - MultiThreadedDebugDLL - Level3 - true - 4244;4018;4267;%(DisableSpecificWarnings) - - - _DEBUG;APU_VERSION_ONLY;%(PreprocessorDefinitions) - 0x0409 - ..\..\apr-util\include;..\..\apr-util\include/private;..\..\apr-util\dbm/sdbm;..\..\apr-iconv-1.1.1\include;..\..\apr-1.2.7\include;%(AdditionalIncludeDirectories) - - - ws2_32.lib;mswsock.lib;wldap32.lib;%(AdditionalDependencies) - true - %(AdditionalLibraryDirectories) - true - Windows - 0x6EE60000 - false - MachineX64 - - - true - - - - - if not exist "$(ProjectDir)..\..\apr-util\include\apr_ldap.h" type "$(ProjectDir)..\..\apr-util\include\apr_ldap.hw" > "$(ProjectDir)..\..\apr-util\include\apr_ldap.h" -if not exist "$(ProjectDir)..\..\apr-util\include\apu.h" type "$(ProjectDir)..\..\apr-util\include\apu.hw" > "$(ProjectDir)..\..\apr-util\include\apu.h" -if not exist "$(ProjectDir)..\..\apr-util\include\apu_config.h" type "$(ProjectDir)..\..\apr-util\include\apu_config.hw" > "$(ProjectDir)..\..\apr-util\include\apu_config.h" -if not exist "$(ProjectDir)..\..\apr-util\include\apu_select_dbm.h" type "$(ProjectDir)..\..\apr-util\include\apu_select_dbm.hw" > "$(ProjectDir)..\..\apr-util\include\apu_select_dbm.h" -if not exist "$(ProjectDir)..\..\apr-util\include\apu_want.h" type "$(ProjectDir)..\..\apr-util\include\apu_want.hw" > "$(ProjectDir)..\..\apr-util\include\apu_want.h" -xcopy "$(ProjectDir)..\..\apr-util\include\*.h" "$(ProjectDir)..\..\include\" /C /D /Y - - - - MaxSpeed - OnlyExplicitInline - ..\..\apr-util\include;..\..\apr-util\include/private;..\..\apr-util\dbm/sdbm;..\..\apr-iconv-1.1.1\include;..\..\apr\include;..\..\apr-util\xml\expat\lib;%(AdditionalIncludeDirectories) - NDEBUG;APU_DECLARE_EXPORT;APU_USE_SDBM;WIN32;_WINDOWS;%(PreprocessorDefinitions) - true - MultiThreadedDLL - true - Level3 - true - 4244;4018;4267;%(DisableSpecificWarnings) - - - NDEBUG;APU_VERSION_ONLY;%(PreprocessorDefinitions) - 0x0409 - ..\..\apr-util\include;..\..\apr-util\include/private;..\..\apr-util\dbm/sdbm;..\..\apr-iconv-1.1.1\include;..\..\apr-1.2.7\include;%(AdditionalIncludeDirectories) - - - ws2_32.lib;mswsock.lib;wldap32.lib;%(AdditionalDependencies) - true - %(AdditionalLibraryDirectories) - true - Windows - true - 0x6EE60000 - false - MachineX86 - - - true - - - - - if not exist "$(ProjectDir)..\..\apr-util\include\apr_ldap.h" type "$(ProjectDir)..\..\apr-util\include\apr_ldap.hw" > "$(ProjectDir)..\..\apr-util\include\apr_ldap.h" -if not exist "$(ProjectDir)..\..\apr-util\include\apu.h" type "$(ProjectDir)..\..\apr-util\include\apu.hw" > "$(ProjectDir)..\..\apr-util\include\apu.h" -if not exist "$(ProjectDir)..\..\apr-util\include\apu_config.h" type "$(ProjectDir)..\..\apr-util\include\apu_config.hw" > "$(ProjectDir)..\..\apr-util\include\apu_config.h" -if not exist "$(ProjectDir)..\..\apr-util\include\apu_select_dbm.h" type "$(ProjectDir)..\..\apr-util\include\apu_select_dbm.hw" > "$(ProjectDir)..\..\apr-util\include\apu_select_dbm.h" -if not exist "$(ProjectDir)..\..\apr-util\include\apu_want.h" type "$(ProjectDir)..\..\apr-util\include\apu_want.hw" > "$(ProjectDir)..\..\apr-util\include\apu_want.h" -xcopy "$(ProjectDir)..\..\apr-util\include\*.h" "$(ProjectDir)..\..\include\" /C /D /Y - - - - MaxSpeed - OnlyExplicitInline - ..\..\apr-util\include;..\..\apr-util\include/private;..\..\apr-util\dbm/sdbm;..\..\apr-iconv-1.1.1\include;..\..\apr\include;..\..\apr-util\xml\expat\lib;%(AdditionalIncludeDirectories) - NDEBUG;APU_DECLARE_EXPORT;APU_USE_SDBM;WIN32;_WINDOWS;%(PreprocessorDefinitions) - true - MultiThreadedDLL - true - Level3 - true - 4244;4018;4267;%(DisableSpecificWarnings) - - - NDEBUG;APU_VERSION_ONLY;%(PreprocessorDefinitions) - 0x0409 - ..\..\apr-util\include;..\..\apr-util\include/private;..\..\apr-util\dbm/sdbm;..\..\apr-iconv-1.1.1\include;..\..\apr-1.2.7\include;%(AdditionalIncludeDirectories) - - - ws2_32.lib;mswsock.lib;wldap32.lib;%(AdditionalDependencies) - true - %(AdditionalLibraryDirectories) - true - Windows - true - 0x6EE60000 - false - MachineX64 - - - true - - - - - true - %(AdditionalIncludeDirectories) - %(PreprocessorDefinitions) - true - %(AdditionalIncludeDirectories) - %(PreprocessorDefinitions) - true - %(AdditionalIncludeDirectories) - %(PreprocessorDefinitions) - true - %(AdditionalIncludeDirectories) - %(PreprocessorDefinitions) - - - true - %(AdditionalIncludeDirectories) - %(PreprocessorDefinitions) - true - %(AdditionalIncludeDirectories) - %(PreprocessorDefinitions) - true - %(AdditionalIncludeDirectories) - %(PreprocessorDefinitions) - true - %(AdditionalIncludeDirectories) - %(PreprocessorDefinitions) - - - true - %(AdditionalIncludeDirectories) - %(PreprocessorDefinitions) - true - %(AdditionalIncludeDirectories) - %(PreprocessorDefinitions) - true - %(AdditionalIncludeDirectories) - %(PreprocessorDefinitions) - true - %(AdditionalIncludeDirectories) - %(PreprocessorDefinitions) - - - true - %(AdditionalIncludeDirectories) - %(PreprocessorDefinitions) - true - %(AdditionalIncludeDirectories) - %(PreprocessorDefinitions) - true - %(AdditionalIncludeDirectories) - %(PreprocessorDefinitions) - true - %(AdditionalIncludeDirectories) - %(PreprocessorDefinitions) - - - true - %(AdditionalIncludeDirectories) - %(PreprocessorDefinitions) - true - %(AdditionalIncludeDirectories) - %(PreprocessorDefinitions) - true - %(AdditionalIncludeDirectories) - %(PreprocessorDefinitions) - true - %(AdditionalIncludeDirectories) - %(PreprocessorDefinitions) - - - true - %(AdditionalIncludeDirectories) - %(PreprocessorDefinitions) - true - %(AdditionalIncludeDirectories) - %(PreprocessorDefinitions) - true - %(AdditionalIncludeDirectories) - %(PreprocessorDefinitions) - true - %(AdditionalIncludeDirectories) - %(PreprocessorDefinitions) - - - true - %(AdditionalIncludeDirectories) - %(PreprocessorDefinitions) - true - %(AdditionalIncludeDirectories) - %(PreprocessorDefinitions) - true - %(AdditionalIncludeDirectories) - %(PreprocessorDefinitions) - true - %(AdditionalIncludeDirectories) - %(PreprocessorDefinitions) - - - true - %(AdditionalIncludeDirectories) - %(PreprocessorDefinitions) - true - %(AdditionalIncludeDirectories) - %(PreprocessorDefinitions) - true - %(AdditionalIncludeDirectories) - %(PreprocessorDefinitions) - true - %(AdditionalIncludeDirectories) - %(PreprocessorDefinitions) - - - true - %(AdditionalIncludeDirectories) - %(PreprocessorDefinitions) - true - %(AdditionalIncludeDirectories) - %(PreprocessorDefinitions) - true - %(AdditionalIncludeDirectories) - %(PreprocessorDefinitions) - true - %(AdditionalIncludeDirectories) - %(PreprocessorDefinitions) - - - true - %(AdditionalIncludeDirectories) - %(PreprocessorDefinitions) - true - %(AdditionalIncludeDirectories) - %(PreprocessorDefinitions) - true - %(AdditionalIncludeDirectories) - %(PreprocessorDefinitions) - true - %(AdditionalIncludeDirectories) - %(PreprocessorDefinitions) - - - true - %(AdditionalIncludeDirectories) - %(PreprocessorDefinitions) - true - %(AdditionalIncludeDirectories) - %(PreprocessorDefinitions) - true - %(AdditionalIncludeDirectories) - %(PreprocessorDefinitions) - true - %(AdditionalIncludeDirectories) - %(PreprocessorDefinitions) - - - true - %(AdditionalIncludeDirectories) - %(PreprocessorDefinitions) - true - %(AdditionalIncludeDirectories) - %(PreprocessorDefinitions) - true - %(AdditionalIncludeDirectories) - %(PreprocessorDefinitions) - true - %(AdditionalIncludeDirectories) - %(PreprocessorDefinitions) - - - true - %(AdditionalIncludeDirectories) - %(PreprocessorDefinitions) - true - %(AdditionalIncludeDirectories) - %(PreprocessorDefinitions) - true - %(AdditionalIncludeDirectories) - %(PreprocessorDefinitions) - true - %(AdditionalIncludeDirectories) - %(PreprocessorDefinitions) - - - %(AdditionalIncludeDirectories) - %(PreprocessorDefinitions) - %(AdditionalIncludeDirectories) - %(PreprocessorDefinitions) - %(AdditionalIncludeDirectories) - %(PreprocessorDefinitions) - %(AdditionalIncludeDirectories) - %(PreprocessorDefinitions) - - - %(AdditionalIncludeDirectories) - %(PreprocessorDefinitions) - %(AdditionalIncludeDirectories) - %(PreprocessorDefinitions) - %(AdditionalIncludeDirectories) - %(PreprocessorDefinitions) - %(AdditionalIncludeDirectories) - %(PreprocessorDefinitions) - - - %(AdditionalIncludeDirectories) - %(PreprocessorDefinitions) - %(AdditionalIncludeDirectories) - %(PreprocessorDefinitions) - %(AdditionalIncludeDirectories) - %(PreprocessorDefinitions) - %(AdditionalIncludeDirectories) - %(PreprocessorDefinitions) - - - %(AdditionalIncludeDirectories) - %(PreprocessorDefinitions) - %(AdditionalIncludeDirectories) - %(PreprocessorDefinitions) - %(AdditionalIncludeDirectories) - %(PreprocessorDefinitions) - %(AdditionalIncludeDirectories) - %(PreprocessorDefinitions) - - - %(AdditionalIncludeDirectories) - %(PreprocessorDefinitions) - %(AdditionalIncludeDirectories) - %(PreprocessorDefinitions) - %(AdditionalIncludeDirectories) - %(PreprocessorDefinitions) - %(AdditionalIncludeDirectories) - %(PreprocessorDefinitions) - - - true - %(AdditionalIncludeDirectories) - %(PreprocessorDefinitions) - true - %(AdditionalIncludeDirectories) - %(PreprocessorDefinitions) - true - %(AdditionalIncludeDirectories) - %(PreprocessorDefinitions) - true - %(AdditionalIncludeDirectories) - %(PreprocessorDefinitions) - - - true - %(AdditionalIncludeDirectories) - %(PreprocessorDefinitions) - true - %(AdditionalIncludeDirectories) - %(PreprocessorDefinitions) - true - %(AdditionalIncludeDirectories) - %(PreprocessorDefinitions) - true - %(AdditionalIncludeDirectories) - %(PreprocessorDefinitions) - - - true - %(AdditionalIncludeDirectories) - %(PreprocessorDefinitions) - true - %(AdditionalIncludeDirectories) - %(PreprocessorDefinitions) - true - %(AdditionalIncludeDirectories) - %(PreprocessorDefinitions) - true - %(AdditionalIncludeDirectories) - %(PreprocessorDefinitions) - - - true - %(AdditionalIncludeDirectories) - %(PreprocessorDefinitions) - true - %(AdditionalIncludeDirectories) - %(PreprocessorDefinitions) - true - %(AdditionalIncludeDirectories) - %(PreprocessorDefinitions) - true - %(AdditionalIncludeDirectories) - %(PreprocessorDefinitions) - - - true - %(AdditionalIncludeDirectories) - %(PreprocessorDefinitions) - true - %(AdditionalIncludeDirectories) - %(PreprocessorDefinitions) - true - %(AdditionalIncludeDirectories) - %(PreprocessorDefinitions) - true - %(AdditionalIncludeDirectories) - %(PreprocessorDefinitions) - - - true - %(AdditionalIncludeDirectories) - %(PreprocessorDefinitions) - true - %(AdditionalIncludeDirectories) - %(PreprocessorDefinitions) - true - %(AdditionalIncludeDirectories) - %(PreprocessorDefinitions) - true - %(AdditionalIncludeDirectories) - %(PreprocessorDefinitions) - - - true - %(AdditionalIncludeDirectories) - %(PreprocessorDefinitions) - true - %(AdditionalIncludeDirectories) - %(PreprocessorDefinitions) - true - %(AdditionalIncludeDirectories) - %(PreprocessorDefinitions) - true - %(AdditionalIncludeDirectories) - %(PreprocessorDefinitions) - - - true - %(AdditionalIncludeDirectories) - %(PreprocessorDefinitions) - true - %(AdditionalIncludeDirectories) - %(PreprocessorDefinitions) - true - %(AdditionalIncludeDirectories) - %(PreprocessorDefinitions) - true - %(AdditionalIncludeDirectories) - %(PreprocessorDefinitions) - - - %(AdditionalIncludeDirectories) - %(PreprocessorDefinitions) - %(AdditionalIncludeDirectories) - %(PreprocessorDefinitions) - %(AdditionalIncludeDirectories) - %(PreprocessorDefinitions) - %(AdditionalIncludeDirectories) - %(PreprocessorDefinitions) - - - true - %(AdditionalIncludeDirectories) - %(PreprocessorDefinitions) - true - %(AdditionalIncludeDirectories) - %(PreprocessorDefinitions) - true - %(AdditionalIncludeDirectories) - %(PreprocessorDefinitions) - true - %(AdditionalIncludeDirectories) - %(PreprocessorDefinitions) - - - true - %(AdditionalIncludeDirectories) - %(PreprocessorDefinitions) - true - %(AdditionalIncludeDirectories) - %(PreprocessorDefinitions) - true - %(AdditionalIncludeDirectories) - %(PreprocessorDefinitions) - true - %(AdditionalIncludeDirectories) - %(PreprocessorDefinitions) - - - true - %(AdditionalIncludeDirectories) - %(PreprocessorDefinitions) - true - %(AdditionalIncludeDirectories) - %(PreprocessorDefinitions) - true - %(AdditionalIncludeDirectories) - %(PreprocessorDefinitions) - true - %(AdditionalIncludeDirectories) - %(PreprocessorDefinitions) - - - true - %(AdditionalIncludeDirectories) - %(PreprocessorDefinitions) - true - %(AdditionalIncludeDirectories) - %(PreprocessorDefinitions) - true - %(AdditionalIncludeDirectories) - %(PreprocessorDefinitions) - true - %(AdditionalIncludeDirectories) - %(PreprocessorDefinitions) - - - true - %(AdditionalIncludeDirectories) - %(PreprocessorDefinitions) - true - %(AdditionalIncludeDirectories) - %(PreprocessorDefinitions) - true - %(AdditionalIncludeDirectories) - %(PreprocessorDefinitions) - true - %(AdditionalIncludeDirectories) - %(PreprocessorDefinitions) - - - %(AdditionalIncludeDirectories) - %(PreprocessorDefinitions) - %(AdditionalIncludeDirectories) - %(PreprocessorDefinitions) - %(AdditionalIncludeDirectories) - %(PreprocessorDefinitions) - %(AdditionalIncludeDirectories) - %(PreprocessorDefinitions) - - - true - %(AdditionalIncludeDirectories) - %(PreprocessorDefinitions) - true - %(AdditionalIncludeDirectories) - %(PreprocessorDefinitions) - true - %(AdditionalIncludeDirectories) - %(PreprocessorDefinitions) - true - %(AdditionalIncludeDirectories) - %(PreprocessorDefinitions) - - - true - %(AdditionalIncludeDirectories) - %(PreprocessorDefinitions) - true - %(AdditionalIncludeDirectories) - %(PreprocessorDefinitions) - true - %(AdditionalIncludeDirectories) - %(PreprocessorDefinitions) - true - %(AdditionalIncludeDirectories) - %(PreprocessorDefinitions) - - - true - %(AdditionalIncludeDirectories) - %(PreprocessorDefinitions) - true - %(AdditionalIncludeDirectories) - %(PreprocessorDefinitions) - true - %(AdditionalIncludeDirectories) - %(PreprocessorDefinitions) - true - %(AdditionalIncludeDirectories) - %(PreprocessorDefinitions) - - - true - %(AdditionalIncludeDirectories) - %(PreprocessorDefinitions) - true - %(AdditionalIncludeDirectories) - %(PreprocessorDefinitions) - true - %(AdditionalIncludeDirectories) - %(PreprocessorDefinitions) - true - %(AdditionalIncludeDirectories) - %(PreprocessorDefinitions) - - - true - %(AdditionalIncludeDirectories) - %(PreprocessorDefinitions) - true - %(AdditionalIncludeDirectories) - %(PreprocessorDefinitions) - true - %(AdditionalIncludeDirectories) - %(PreprocessorDefinitions) - true - %(AdditionalIncludeDirectories) - %(PreprocessorDefinitions) - - - true - %(AdditionalIncludeDirectories) - %(PreprocessorDefinitions) - true - %(AdditionalIncludeDirectories) - %(PreprocessorDefinitions) - true - %(AdditionalIncludeDirectories) - %(PreprocessorDefinitions) - true - %(AdditionalIncludeDirectories) - %(PreprocessorDefinitions) - - - true - %(AdditionalIncludeDirectories) - %(PreprocessorDefinitions) - true - %(AdditionalIncludeDirectories) - %(PreprocessorDefinitions) - true - %(AdditionalIncludeDirectories) - %(PreprocessorDefinitions) - true - %(AdditionalIncludeDirectories) - %(PreprocessorDefinitions) - - - true - %(AdditionalIncludeDirectories) - %(PreprocessorDefinitions) - true - %(AdditionalIncludeDirectories) - %(PreprocessorDefinitions) - true - %(AdditionalIncludeDirectories) - %(PreprocessorDefinitions) - true - %(AdditionalIncludeDirectories) - %(PreprocessorDefinitions) - - - %(AdditionalIncludeDirectories) - %(PreprocessorDefinitions) - %(AdditionalIncludeDirectories) - %(PreprocessorDefinitions) - %(AdditionalIncludeDirectories) - %(PreprocessorDefinitions) - %(AdditionalIncludeDirectories) - %(PreprocessorDefinitions) - - - - - - true - true - true - true - - - true - true - true - true - - - true - true - true - true - - - - - - - - - - - - - - - - - - - - - - - - - - - - - Creating apr_ldap.h from apr_ldap.hw - if not exist ..\..\apr-util\include\apr_ldap.h type ..\..\apr-util\include\apr_ldap.hw > ..\..\apr-util\include\apr_ldap.h - - ..\..\apr-util\include\apr_ldap.h;%(Outputs) - Creating apr_ldap.h from apr_ldap.hw - if not exist ..\..\apr-util\include\apr_ldap.h type ..\..\apr-util\include\apr_ldap.hw > ..\..\apr-util\include\apr_ldap.h - - ..\..\apr-util\include\apr_ldap.h;%(Outputs) - Creating apr_ldap.h from apr_ldap.hw - if not exist ..\..\apr-util\include\apr_ldap.h type ..\..\apr-util\include\apr_ldap.hw > ..\..\apr-util\include\apr_ldap.h - - ..\..\apr-util\include\apr_ldap.h;%(Outputs) - Creating apr_ldap.h from apr_ldap.hw - if not exist ..\..\apr-util\include\apr_ldap.h type ..\..\apr-util\include\apr_ldap.hw > ..\..\apr-util\include\apr_ldap.h - - ..\..\apr-util\include\apr_ldap.h;%(Outputs) - - - - - Creating apu.h from apu.hw - if not exist ..\..\apr-util\include\apu.h type ..\..\apr-util\include\apu.hw > ..\..\apr-util\include\apu.h - - ..\..\apr-util\include\apu.h;%(Outputs) - Creating apu.h from apu.hw - if not exist ..\..\apr-util\include\apu.h type ..\..\apr-util\include\apu.hw > ..\..\apr-util\include\apu.h - - ..\..\apr-util\include\apu.h;%(Outputs) - Creating apu.h from apu.hw - if not exist ..\..\apr-util\include\apu.h type ..\..\apr-util\include\apu.hw > ..\..\apr-util\include\apu.h - - ..\..\apr-util\include\apu.h;%(Outputs) - Creating apu.h from apu.hw - if not exist ..\..\apr-util\include\apu.h type ..\..\apr-util\include\apu.hw > ..\..\apr-util\include\apu.h - - ..\..\apr-util\include\apu.h;%(Outputs) - - - - Creating apu_config.h from apu_config.hw - if not exist ..\..\apr-util\include\private\apu_config.h type ..\..\apr-util\include\private\apu_config.hw > ..\..\apr-util\include\private\apu_config.h - - ..\..\apr-util\include\private\apu_config.h;%(Outputs) - Creating apu_config.h from apu_config.hw - if not exist ..\..\apr-util\include\private\apu_config.h type ..\..\apr-util\include\private\apu_config.hw > ..\..\apr-util\include\private\apu_config.h - - ..\..\apr-util\include\private\apu_config.h;%(Outputs) - Creating apu_config.h from apu_config.hw - if not exist ..\..\apr-util\include\private\apu_config.h type ..\..\apr-util\include\private\apu_config.hw > ..\..\apr-util\include\private\apu_config.h - - ..\..\apr-util\include\private\apu_config.h;%(Outputs) - Creating apu_config.h from apu_config.hw - if not exist ..\..\apr-util\include\private\apu_config.h type ..\..\apr-util\include\private\apu_config.hw > ..\..\apr-util\include\private\apu_config.h - - ..\..\apr-util\include\private\apu_config.h;%(Outputs) - - - - Creating apu_select_dbm.h from apu_select_dbm.hw - if not exist ..\..\apr-util\include\private\apu_select_dbm.h type ..\..\apr-util\include\private\apu_select_dbm.hw > ..\..\apr-util\include\private\apu_select_dbm.h - - ..\..\apr-util\include\private\apu_select_dbm.h;%(Outputs) - Creating apu_select_dbm.h from apu_select_dbm.hw - if not exist ..\..\apr-util\include\private\apu_select_dbm.h type ..\..\apr-util\include\private\apu_select_dbm.hw > ..\..\apr-util\include\private\apu_select_dbm.h - - ..\..\apr-util\include\private\apu_select_dbm.h;%(Outputs) - Creating apu_select_dbm.h from apu_select_dbm.hw - if not exist ..\..\apr-util\include\private\apu_select_dbm.h type ..\..\apr-util\include\private\apu_select_dbm.hw > ..\..\apr-util\include\private\apu_select_dbm.h - - ..\..\apr-util\include\private\apu_select_dbm.h;%(Outputs) - Creating apu_select_dbm.h from apu_select_dbm.hw - if not exist ..\..\apr-util\include\private\apu_select_dbm.h type ..\..\apr-util\include\private\apu_select_dbm.hw > ..\..\apr-util\include\private\apu_select_dbm.h - - ..\..\apr-util\include\private\apu_select_dbm.h;%(Outputs) - - - - - Creating apu_want.h from apu_want.hw - if not exist ..\..\apr-util\include\apu_want.h type ..\..\apr-util\include\apu_want.hw > ..\..\apr-util\include\apu_want.h - - ..\..\apr-util\include\apu_want.h;%(Outputs) - Creating apu_want.h from apu_want.hw - if not exist ..\..\apr-util\include\apu_want.h type ..\..\apr-util\include\apu_want.hw > ..\..\apr-util\include\apu_want.h - - ..\..\apr-util\include\apu_want.h;%(Outputs) - Creating apu_want.h from apu_want.hw - if not exist ..\..\apr-util\include\apu_want.h type ..\..\apr-util\include\apu_want.hw > ..\..\apr-util\include\apu_want.h - - ..\..\apr-util\include\apu_want.h;%(Outputs) - Creating apu_want.h from apu_want.hw - if not exist ..\..\apr-util\include\apu_want.h type ..\..\apr-util\include\apu_want.hw > ..\..\apr-util\include\apu_want.h - - ..\..\apr-util\include\apu_want.h;%(Outputs) - - - - - %(PreprocessorDefinitions) - %(AdditionalIncludeDirectories) - %(PreprocessorDefinitions) - %(AdditionalIncludeDirectories) - %(PreprocessorDefinitions) - %(AdditionalIncludeDirectories) - %(PreprocessorDefinitions) - %(AdditionalIncludeDirectories) - - - - - {f6c55d93-b927-4483-bb69-15aef3dd2dff} - - - {155844c3-ec5f-407f-97a4-a2ddaded9b2f} - - - - - - \ No newline at end of file diff --git a/libs/win32/apr-util/xml.2017.vcxproj b/libs/win32/apr-util/xml.2017.vcxproj deleted file mode 100644 index d6e38880e32..00000000000 --- a/libs/win32/apr-util/xml.2017.vcxproj +++ /dev/null @@ -1,289 +0,0 @@ - - - - - Debug - Win32 - - - Debug - x64 - - - Release - Win32 - - - Release - x64 - - - - xml - {155844C3-EC5F-407F-97A4-A2DDADED9B2F} - xml - - - - StaticLibrary - false - MultiByte - $(DefaultPlatformToolset) - - - StaticLibrary - false - MultiByte - true - $(DefaultPlatformToolset) - - - StaticLibrary - false - MultiByte - $(DefaultPlatformToolset) - - - StaticLibrary - false - MultiByte - true - $(DefaultPlatformToolset) - - - - - - - - - - - - - - - - - - - - - - - <_ProjectFileVersion>10.0.30319.1 - $(PlatformName)\xml\$(Configuration)\ - $(PlatformName)\xml\$(Configuration)\ - $(PlatformName)\xml\$(Configuration)\ - $(PlatformName)\xml\$(Configuration)\ - - - - MaxSpeed - OnlyExplicitInline - $(ProjectDir)..\..\apr-util\xml\expat\lib\;%(AdditionalIncludeDirectories) - WIN32;NDEBUG;_WINDOWS;VERSION="expat_1.95.2";%(PreprocessorDefinitions) - true - MultiThreadedDLL - true - Level3 - true - 4244;%(DisableSpecificWarnings) - - - 0x0409 - - - true - - - true - - - - - X64 - - - MaxSpeed - OnlyExplicitInline - $(ProjectDir)..\..\apr-util\xml\expat\lib\;%(AdditionalIncludeDirectories) - WIN32;NDEBUG;_WINDOWS;VERSION="expat_1.95.2";%(PreprocessorDefinitions) - true - MultiThreadedDLL - true - Level3 - true - 4244;%(DisableSpecificWarnings) - - - 0x0409 - - - true - - - true - - - - - /EHsc %(AdditionalOptions) - Disabled - $(ProjectDir)..\..\apr-util\xml\expat\lib\;%(AdditionalIncludeDirectories) - WIN32;_DEBUG;_WINDOWS;VERSION="expat_1.95.2";%(PreprocessorDefinitions) - MultiThreadedDebugDLL - Level3 - true - 4244;%(DisableSpecificWarnings) - - - 0x0409 - - - true - - - true - - - - - X64 - - - /EHsc %(AdditionalOptions) - Disabled - $(ProjectDir)..\..\apr-util\xml\expat\lib\;%(AdditionalIncludeDirectories) - WIN32;_DEBUG;_WINDOWS;VERSION="expat_1.95.2";%(PreprocessorDefinitions) - MultiThreadedDebugDLL - Level3 - true - 4244;%(DisableSpecificWarnings) - - - 0x0409 - - - true - - - true - - - - - %(AdditionalIncludeDirectories) - %(PreprocessorDefinitions) - %(AdditionalIncludeDirectories) - %(PreprocessorDefinitions) - %(AdditionalIncludeDirectories) - %(PreprocessorDefinitions) - %(AdditionalIncludeDirectories) - %(PreprocessorDefinitions) - - - %(AdditionalIncludeDirectories) - %(PreprocessorDefinitions) - %(AdditionalIncludeDirectories) - %(PreprocessorDefinitions) - %(AdditionalIncludeDirectories) - %(PreprocessorDefinitions) - %(AdditionalIncludeDirectories) - %(PreprocessorDefinitions) - - - %(AdditionalIncludeDirectories) - %(PreprocessorDefinitions) - %(AdditionalIncludeDirectories) - %(PreprocessorDefinitions) - %(AdditionalIncludeDirectories) - %(PreprocessorDefinitions) - %(AdditionalIncludeDirectories) - %(PreprocessorDefinitions) - - - true - %(AdditionalIncludeDirectories) - %(PreprocessorDefinitions) - true - %(AdditionalIncludeDirectories) - %(PreprocessorDefinitions) - true - %(AdditionalIncludeDirectories) - %(PreprocessorDefinitions) - true - %(AdditionalIncludeDirectories) - %(PreprocessorDefinitions) - - - true - %(AdditionalIncludeDirectories) - %(PreprocessorDefinitions) - true - %(AdditionalIncludeDirectories) - %(PreprocessorDefinitions) - true - %(AdditionalIncludeDirectories) - %(PreprocessorDefinitions) - true - %(AdditionalIncludeDirectories) - %(PreprocessorDefinitions) - - - - - - - - - - - - - - - - Creating config.h from winconfig.h - if not exist "$(ProjectDir)..\..\apr-util\xml\expat\lib\config.h" type "$(ProjectDir)..\..\apr-util\xml\expat\lib\winconfig.h" > "$(ProjectDir)..\..\apr-util\xml\expat\lib\config.h" - - $(ProjectDir)..\..\apr-util\xml\expat\lib\config.h;%(Outputs) - Creating config.h from winconfig.h - if not exist "$(ProjectDir)..\..\apr-util\xml\expat\lib\config.h" type "$(ProjectDir)..\..\apr-util\xml\expat\lib\winconfig.h" > "$(ProjectDir)..\..\apr-util\xml\expat\lib\config.h" - - $(ProjectDir)..\..\apr-util\xml\expat\lib\config.h;%(Outputs) - Creating config.h from winconfig.h - if not exist "$(ProjectDir)..\..\apr-util\xml\expat\lib\config.h" type "$(ProjectDir)..\..\apr-util\xml\expat\lib\winconfig.h" > "$(ProjectDir)..\..\apr-util\xml\expat\lib\config.h" - - $(ProjectDir)..\..\apr-util\xml\expat\lib\config.h;%(Outputs) - Creating config.h from winconfig.h - if not exist "$(ProjectDir)..\..\apr-util\xml\expat\lib\config.h" type "$(ProjectDir)..\..\apr-util\xml\expat\lib\winconfig.h" > "$(ProjectDir)..\..\apr-util\xml\expat\lib\config.h" - - $(ProjectDir)..\..\apr-util\xml\expat\lib\config.h;%(Outputs) - - - - - Creating expat.h from expat.h.in - if not exist "$(ProjectDir)..\..\apr-util\xml\expat\lib\expat.h" type "$(ProjectDir)..\..\apr-util\xml\expat\lib\expat.h.in" > "$(ProjectDir)..\..\apr-util\xml\expat\lib\expat.h" - - $(ProjectDir)..\..\apr-util\xml\expat\lib\expat.h;%(Outputs) - Creating expat.h from expat.h.in - if not exist "$(ProjectDir)..\..\apr-util\xml\expat\lib\expat.h" type "$(ProjectDir)..\..\apr-util\xml\expat\lib\expat.h.in" > "$(ProjectDir)..\..\apr-util\xml\expat\lib\expat.h" - - $(ProjectDir)..\..\apr-util\xml\expat\lib\expat.h;%(Outputs) - Creating expat.h from expat.h.in - if not exist "$(ProjectDir)..\..\apr-util\xml\expat\lib\expat.h" type "$(ProjectDir)..\..\apr-util\xml\expat\lib\expat.h.in" > "$(ProjectDir)..\..\apr-util\xml\expat\lib\expat.h" - - $(ProjectDir)..\..\apr-util\xml\expat\lib\expat.h;%(Outputs) - Creating expat.h from expat.h.in - if not exist "$(ProjectDir)..\..\apr-util\xml\expat\lib\expat.h" type "$(ProjectDir)..\..\apr-util\xml\expat\lib\expat.h.in" > "$(ProjectDir)..\..\apr-util\xml\expat\lib\expat.h" - - $(ProjectDir)..\..\apr-util\xml\expat\lib\expat.h;%(Outputs) - - - - - - - \ No newline at end of file diff --git a/libs/win32/apr/apr.hw b/libs/win32/apr/fspr.hw similarity index 92% rename from libs/win32/apr/apr.hw rename to libs/win32/apr/fspr.hw index 27be40106e3..a9c7eab316b 100644 --- a/libs/win32/apr/apr.hw +++ b/libs/win32/apr/fspr.hw @@ -106,7 +106,7 @@ #endif /* !_WINDOWS_ */ /** - * @defgroup apr_platform Platform Definitions + * @defgroup fspr_platform Platform Definitions * @ingroup APR * @{ */ @@ -275,7 +275,7 @@ extern "C" { #endif /** - * @addtogroup apr_platform + * @addtogroup fspr_platform * @ingroup APR * @{ */ @@ -322,29 +322,29 @@ extern "C" { /* Typedefs that APR needs. */ -typedef unsigned char apr_byte_t; +typedef unsigned char fspr_byte_t; -typedef short apr_int16_t; -typedef unsigned short apr_uint16_t; +typedef short fspr_int16_t; +typedef unsigned short fspr_uint16_t; -typedef int apr_int32_t; -typedef unsigned int apr_uint32_t; +typedef int fspr_int32_t; +typedef unsigned int fspr_uint32_t; -typedef __int64 apr_int64_t; -typedef unsigned __int64 apr_uint64_t; +typedef __int64 fspr_int64_t; +typedef unsigned __int64 fspr_uint64_t; -typedef size_t apr_size_t; +typedef size_t fspr_size_t; #if APR_HAVE_STDDEF_H -typedef ptrdiff_t apr_ssize_t; +typedef ptrdiff_t fspr_ssize_t; #else -typedef int apr_ssize_t; +typedef int fspr_ssize_t; #endif #if APR_HAS_LARGE_FILES -typedef __int64 apr_off_t; +typedef __int64 fspr_off_t; #else -typedef int apr_off_t; +typedef int fspr_off_t; #endif -typedef int apr_socklen_t; +typedef int fspr_socklen_t; /* Are we big endian? */ /* XXX: Fatal assumption on Alpha platforms */ @@ -356,7 +356,7 @@ typedef int apr_socklen_t; #define APR_SIZEOF_VOIDP 4 #endif -/* XXX These simply don't belong here, perhaps in apr_portable.h +/* XXX These simply don't belong here, perhaps in fspr_portable.h * based on some APR_HAVE_PID/GID/UID? */ typedef int pid_t; @@ -378,8 +378,8 @@ typedef int gid_t; #ifndef WS2TCPIP_INLINE #define IN6_IS_ADDR_V4MAPPED(a) \ - ( (*(const apr_uint64_t *)(const void *)(&(a)->s6_addr[0]) == 0) \ - && (*(const apr_uint32_t *)(const void *)(&(a)->s6_addr[8]) == ntohl(0x0000ffff))) + ( (*(const fspr_uint64_t *)(const void *)(&(a)->s6_addr[0]) == 0) \ + && (*(const fspr_uint32_t *)(const void *)(&(a)->s6_addr[8]) == ntohl(0x0000ffff))) #endif #endif /* APR_HAS_IPV6 */ @@ -391,7 +391,7 @@ typedef int gid_t; * so that they follow the platform's calling convention. * @example */ -/** void* APR_THREAD_FUNC my_thread_entry_fn(apr_thread_t *thd, void *data); +/** void* APR_THREAD_FUNC my_thread_entry_fn(fspr_thread_t *thd, void *data); */ #define APR_THREAD_FUNC __stdcall @@ -406,7 +406,7 @@ typedef int gid_t; * @remark Both the declaration and implementations must use the same macro. * @example */ -/** APR_DECLARE(rettype) apr_func(args) +/** APR_DECLARE(rettype) fspr_func(args) * @see APR_DECLARE_NONSTD @see APR_DECLARE_DATA * @remark Note that when APR compiles the library itself, it passes the * symbol -DAPR_DECLARE_EXPORT to the compiler on some platforms (e.g. Win32) @@ -427,7 +427,7 @@ typedef int gid_t; * @remark Both the declaration and implementations must use the same macro. * @example */ -/** APR_DECLARE_NONSTD(rettype) apr_func(args, ...); +/** APR_DECLARE_NONSTD(rettype) fspr_func(args, ...); */ #define APR_DECLARE_NONSTD(type) type @@ -439,8 +439,8 @@ typedef int gid_t; * but both must include the macro. * @example */ -/** extern APR_DECLARE_DATA type apr_variable;\n - * APR_DECLARE_DATA type apr_variable = value; +/** extern APR_DECLARE_DATA type fspr_variable;\n + * APR_DECLARE_DATA type fspr_variable = value; */ #define APR_DECLARE_DATA @@ -484,12 +484,12 @@ typedef int gid_t; /* No difference between PROC and GLOBAL mutex */ #define APR_PROC_MUTEX_IS_GLOBAL 1 -typedef int apr_wait_t; +typedef int fspr_wait_t; /* struct iovec is needed to emulate Unix writev */ struct iovec { char* iov_base; - apr_size_t iov_len; + fspr_size_t iov_len; }; /* Nasty Win32 .h ommissions we really need */ diff --git a/libs/win32/apr/libapr.2017.vcxproj b/libs/win32/apr/libapr.2017.vcxproj index 6171b2afa7a..c616dc92673 100644 --- a/libs/win32/apr/libapr.2017.vcxproj +++ b/libs/win32/apr/libapr.2017.vcxproj @@ -73,7 +73,7 @@ - if not exist "$(ProjectDir)..\..\apr\include\apr.h" type "$(ProjectDir)apr.hw" > "$(ProjectDir)..\..\apr\include\apr.h" + if not exist "$(ProjectDir)..\..\apr\include\fspr.h" type "$(ProjectDir)fspr.hw" > "$(ProjectDir)..\..\apr\include\fspr.h" xcopy "$(ProjectDir)..\..\apr\include\*.h" "$(ProjectDir)..\..\include\" /C /D /Y @@ -109,7 +109,7 @@ xcopy "$(ProjectDir)..\..\apr\include\*.h" "$(ProjectDir)..\..\include\" /C /D / - if not exist "$(ProjectDir)..\..\apr\include\apr.h" type "$(ProjectDir)apr.hw" > "$(ProjectDir)..\..\apr\include\apr.h" + if not exist "$(ProjectDir)..\..\apr\include\fspr.h" type "$(ProjectDir)fspr.hw" > "$(ProjectDir)..\..\apr\include\fspr.h" xcopy "$(ProjectDir)..\..\apr\include\*.h" "$(ProjectDir)..\..\include\" /C /D /Y @@ -143,7 +143,7 @@ xcopy "$(ProjectDir)..\..\apr\include\*.h" "$(ProjectDir)..\..\include\" /C /D / - if not exist "$(ProjectDir)..\..\apr\include\apr.h" type "$(ProjectDir)apr.hw" > "$(ProjectDir)..\..\apr\include\apr.h" + if not exist "$(ProjectDir)..\..\apr\include\fspr.h" type "$(ProjectDir)fspr.hw" > "$(ProjectDir)..\..\apr\include\fspr.h" xcopy "$(ProjectDir)..\..\apr\include\*.h" "$(ProjectDir)..\..\include\" /C /D /Y @@ -180,7 +180,7 @@ xcopy "$(ProjectDir)..\..\apr\include\*.h" "$(ProjectDir)..\..\include\" /C /D / - if not exist "$(ProjectDir)..\..\apr\include\apr.h" type "$(ProjectDir)apr.hw" > "$(ProjectDir)..\..\apr\include\apr.h" + if not exist "$(ProjectDir)..\..\apr\include\fspr.h" type "$(ProjectDir)fspr.hw" > "$(ProjectDir)..\..\apr\include\fspr.h" xcopy "$(ProjectDir)..\..\apr\include\*.h" "$(ProjectDir)..\..\include\" /C /D /Y @@ -216,7 +216,7 @@ xcopy "$(ProjectDir)..\..\apr\include\*.h" "$(ProjectDir)..\..\include\" /C /D / - + @@ -238,7 +238,7 @@ xcopy "$(ProjectDir)..\..\apr\include\*.h" "$(ProjectDir)..\..\include\" /C /D / - + @@ -260,19 +260,19 @@ xcopy "$(ProjectDir)..\..\apr\include\*.h" "$(ProjectDir)..\..\include\" /C /D / - - + + - - - - - - - - + + + + + + + + @@ -284,52 +284,52 @@ xcopy "$(ProjectDir)..\..\apr\include\*.h" "$(ProjectDir)..\..\include\" /C /D / - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/libs/win32/libshout/libshout.2017.vcxproj b/libs/win32/libshout/libshout.2017.vcxproj index bf298a4238d..c7790e7f0f2 100644 --- a/libs/win32/libshout/libshout.2017.vcxproj +++ b/libs/win32/libshout/libshout.2017.vcxproj @@ -1,189 +1,192 @@ - - - - - Debug - Win32 - - - Debug - x64 - - - Release - Win32 - - - Release - x64 - - - - {D3D8B329-20BE-475E-9E83-653CEA0E0EF5} - libshout - libshout - - - - StaticLibrary - MultiByte - $(DefaultPlatformToolset) - - - StaticLibrary - MultiByte - $(DefaultPlatformToolset) - - - StaticLibrary - MultiByte - $(DefaultPlatformToolset) - - - StaticLibrary - MultiByte - $(DefaultPlatformToolset) - - - - - - - - - - - - - - - - - - - - - - - - <_ProjectFileVersion>10.0.30319.1 - - - - MaxSpeed - OnlyExplicitInline - .\;..\..\libshout-2.2.2\src;..\..\libshout-2.2.2\include;..\..\libogg-1.1.3\include;..\..\pthreads-w32-2-9-1;..\..\libshout-2.2.2\win32\include;%(AdditionalIncludeDirectories) - _TIMESPEC_DEFINED;WIN32;_LIB;_WIN32;VERSION="2.0.0";LIBSHOUT_MAJOR=2;LIBSHOUT_MINOR=0;LIBSHOUT_MICRO=0;HAVE_WINSOCK2_H;_CRT_SECURE_NO_DEPRECATE;_CRT_NONSTDC_NO_DEPRECATE;%(PreprocessorDefinitions) - true - MultiThreaded - true - TurnOffAllWarnings - true - - - NDEBUG;%(PreprocessorDefinitions) - 0x0409 - - - true - - - - - X64 - - - MaxSpeed - OnlyExplicitInline - .\;..\..\libshout-2.2.2\src;..\..\libshout-2.2.2\include;..\..\libogg-1.1.3\include;..\..\pthreads-w32-2-9-1;..\..\libshout-2.2.2\win32\include;%(AdditionalIncludeDirectories) - _TIMESPEC_DEFINED;WIN32;_LIB;_WIN32;VERSION="2.0.0";LIBSHOUT_MAJOR=2;LIBSHOUT_MINOR=0;LIBSHOUT_MICRO=0;HAVE_WINSOCK2_H;_CRT_SECURE_NO_DEPRECATE;_CRT_NONSTDC_NO_DEPRECATE;%(PreprocessorDefinitions) - true - MultiThreaded - true - TurnOffAllWarnings - true - - - NDEBUG;%(PreprocessorDefinitions) - 0x0409 - - - true - - - - - Disabled - .\;..\..\libshout-2.2.2\src;..\..\libshout-2.2.2\include;..\..\libogg-1.1.3\include;..\..\pthreads-w32-2-9-1;..\..\libshout-2.2.2\win32\include;%(AdditionalIncludeDirectories) - _TIMESPEC_DEFINED;WIN32;_DEBUG;_LIB;_WIN32;VERSION="2.0.0";LIBSHOUT_MAJOR=2;LIBSHOUT_MINOR=0;LIBSHOUT_MICRO=0;HAVE_WINSOCK2_H;_CRT_SECURE_NO_DEPRECATE;_CRT_NONSTDC_NO_DEPRECATE;%(PreprocessorDefinitions) - true - EnableFastChecks - MultiThreadedDebug - TurnOffAllWarnings - true - - - _DEBUG;%(PreprocessorDefinitions) - 0x0409 - - - true - - - - - X64 - - - Disabled - .\;..\..\libshout-2.2.2\src;..\..\libshout-2.2.2\include;..\..\libogg-1.1.3\include;..\..\pthreads-w32-2-9-1;..\..\libshout-2.2.2\win32\include;%(AdditionalIncludeDirectories) - _TIMESPEC_DEFINED;WIN32;_DEBUG;_LIB;_WIN32;VERSION="2.0.0";LIBSHOUT_MAJOR=2;LIBSHOUT_MINOR=0;LIBSHOUT_MICRO=0;HAVE_WINSOCK2_H;_CRT_SECURE_NO_DEPRECATE;_CRT_NONSTDC_NO_DEPRECATE;%(PreprocessorDefinitions) - true - EnableFastChecks - MultiThreadedDebug - TurnOffAllWarnings - true - - - _DEBUG;%(PreprocessorDefinitions) - 0x0409 - - - true - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - {0feeaec6-4399-4c46-b7db-62ece80d15b4} - false - - - - - + + + + + Debug + Win32 + + + Debug + x64 + + + Release + Win32 + + + Release + x64 + + + + {D3D8B329-20BE-475E-9E83-653CEA0E0EF5} + libshout + libshout + + + + StaticLibrary + MultiByte + $(DefaultPlatformToolset) + + + StaticLibrary + MultiByte + $(DefaultPlatformToolset) + + + StaticLibrary + MultiByte + $(DefaultPlatformToolset) + + + StaticLibrary + MultiByte + $(DefaultPlatformToolset) + + + + + + + + + + + + + + + + + + + + + + + + <_ProjectFileVersion>10.0.30319.1 + + + + MaxSpeed + OnlyExplicitInline + .\;..\..\libshout-2.2.2\src;..\..\libshout-2.2.2\include;..\..\libogg-1.1.3\include;..\..\pthreads-w32-2-9-1;..\..\libshout-2.2.2\win32\include;%(AdditionalIncludeDirectories) + _TIMESPEC_DEFINED;WIN32;_LIB;_WIN32;VERSION="2.0.0";LIBSHOUT_MAJOR=2;LIBSHOUT_MINOR=0;LIBSHOUT_MICRO=0;HAVE_WINSOCK2_H;_CRT_SECURE_NO_DEPRECATE;_CRT_NONSTDC_NO_DEPRECATE;%(PreprocessorDefinitions) + true + MultiThreaded + true + TurnOffAllWarnings + true + + + NDEBUG;%(PreprocessorDefinitions) + 0x0409 + + + true + + + + + X64 + + + MaxSpeed + OnlyExplicitInline + .\;..\..\libshout-2.2.2\src;..\..\libshout-2.2.2\include;..\..\libogg-1.1.3\include;..\..\pthreads-w32-2-9-1;..\..\libshout-2.2.2\win32\include;%(AdditionalIncludeDirectories) + _TIMESPEC_DEFINED;WIN32;_LIB;_WIN32;VERSION="2.0.0";LIBSHOUT_MAJOR=2;LIBSHOUT_MINOR=0;LIBSHOUT_MICRO=0;HAVE_WINSOCK2_H;_CRT_SECURE_NO_DEPRECATE;_CRT_NONSTDC_NO_DEPRECATE;%(PreprocessorDefinitions) + true + MultiThreaded + true + TurnOffAllWarnings + true + + + NDEBUG;%(PreprocessorDefinitions) + 0x0409 + + + true + + + + + Disabled + .\;..\..\libshout-2.2.2\src;..\..\libshout-2.2.2\include;..\..\libogg-1.1.3\include;..\..\pthreads-w32-2-9-1;..\..\libshout-2.2.2\win32\include;%(AdditionalIncludeDirectories) + _TIMESPEC_DEFINED;WIN32;_DEBUG;_LIB;_WIN32;VERSION="2.0.0";LIBSHOUT_MAJOR=2;LIBSHOUT_MINOR=0;LIBSHOUT_MICRO=0;HAVE_WINSOCK2_H;_CRT_SECURE_NO_DEPRECATE;_CRT_NONSTDC_NO_DEPRECATE;%(PreprocessorDefinitions) + true + EnableFastChecks + MultiThreadedDebug + TurnOffAllWarnings + true + + + _DEBUG;%(PreprocessorDefinitions) + 0x0409 + + + true + + + + + X64 + + + Disabled + .\;..\..\libshout-2.2.2\src;..\..\libshout-2.2.2\include;..\..\libogg-1.1.3\include;..\..\pthreads-w32-2-9-1;..\..\libshout-2.2.2\win32\include;%(AdditionalIncludeDirectories) + _TIMESPEC_DEFINED;WIN32;_DEBUG;_LIB;_WIN32;VERSION="2.0.0";LIBSHOUT_MAJOR=2;LIBSHOUT_MINOR=0;LIBSHOUT_MICRO=0;HAVE_WINSOCK2_H;_CRT_SECURE_NO_DEPRECATE;_CRT_NONSTDC_NO_DEPRECATE;%(PreprocessorDefinitions) + true + EnableFastChecks + MultiThreadedDebug + TurnOffAllWarnings + true + + + _DEBUG;%(PreprocessorDefinitions) + 0x0409 + + + true + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + {0feeaec6-4399-4c46-b7db-62ece80d15b4} + false + + + {df018947-0fff-4eb3-bdee-441dc81da7a4} + + + + + \ No newline at end of file diff --git a/scripts/debian_min_build.sh b/scripts/debian_min_build.sh index 953f3840ad5..b585c1921ed 100755 --- a/scripts/debian_min_build.sh +++ b/scripts/debian_min_build.sh @@ -8,7 +8,7 @@ wget -O - https://files.freeswitch.org/repo/deb/debian/freeswitch_archive_g0.pub echo "deb http://files.freeswitch.org/repo/deb/freeswitch-1.6/ jessie main" > /etc/apt/sources.list.d/freeswitch.list -apt-get update && apt-get install -y libtool libjpeg62-turbo-dev ntpdate libfreetype6-dev git-buildpackage doxygen yasm gdb git build-essential automake autoconf wget uuid-dev zlib1g-dev libncurses5-dev libssl-dev libpcre3-dev libcurl4-openssl-dev libldns-dev libedit-dev libspeexdsp-dev libsqlite3-dev perl libgdbm-dev libdb-dev bison pkg-config ccache libpng16-dev libpng12-dev libopenal-dev libbroadvoice-dev libcodec2-dev libflite-dev libg7221-dev libilbc-dev libsilk-dev liblua5.2-dev libopus-dev libsndfile-dev libavformat-dev libavcodec-extra libx264-dev libperl-dev unixodbc-dev libpq-dev libsctp-dev +apt-get update && apt-get install -y libtool libjpeg62-turbo-dev ntpdate libfreetype6-dev git-buildpackage doxygen yasm gdb git build-essential automake autoconf wget uuid-dev zlib1g-dev libncurses5-dev libssl-dev libpcre3-dev libcurl4-openssl-dev libldns-dev libedit-dev libspeexdsp-dev libsqlite3-dev perl libgdbm-dev libdb-dev bison pkg-config ccache libpng16-dev libpng12-dev libopenal-dev libbroadvoice-dev libcodec2-dev libflite-dev libg7221-dev libilbc-dev libsilk-dev liblua5.2-dev libopus-dev libsndfile-dev libavformat-dev libavcodec-extra libswscale-dev libx264-dev libperl-dev unixodbc-dev libpq-dev libsctp-dev cd /usr/src diff --git a/src/include/private/switch_apr_pvt.h b/src/include/private/switch_apr_pvt.h new file mode 100644 index 00000000000..849662ee288 --- /dev/null +++ b/src/include/private/switch_apr_pvt.h @@ -0,0 +1,77 @@ +/* + * FreeSWITCH Modular Media Switching Software Library / Soft-Switch Application + * Copyright (C) 2005-2021, Anthony Minessale II + * + * Version: MPL 1.1 + * + * The contents of this file are subject to the Mozilla Public License Version + * 1.1 (the "License"); you may not use this file except in compliance with + * the License. You may obtain a copy of the License at + * http://www.mozilla.org/MPL/ + * + * Software distributed under the License is distributed on an "AS IS" basis, + * WITHOUT WARRANTY OF ANY KIND, either express or implied. See the License + * for the specific language governing rights and limitations under the + * License. + * + * The Original Code is FreeSWITCH Modular Media Switching Software Library / Soft-Switch Application + * + * The Initial Developer of the Original Code is + * Anthony Minessale II + * Portions created by the Initial Developer are Copyright (C) + * the Initial Developer. All Rights Reserved. + * + * Contributor(s): + * + * Anthony Minessale II + * Andrey Volk + * + * + * switch_apr_pvt.h - APR + * + */ + +#ifndef __SWITCH_APR_PVT_H__ +#define __SWITCH_APR_PVT_H__ + +/* for fspr_pool_create and fspr_pool_destroy */ +/* functions only used in this file so not exposed */ +#include + +/* for fspr_hash_make, fspr_hash_pool_get, fspr_hash_set */ +/* functions only used in this file so not exposed */ +#include + +/* for fspr_pvsprintf */ +/* function only used in this file so not exposed */ +#include + +/* for fspr_initialize and fspr_terminate */ +/* function only used in this file so not exposed */ +#include + +#include + +typedef struct switch_apr_queue_t switch_apr_queue_t; +fspr_status_t switch_apr_queue_create(switch_apr_queue_t **q, unsigned int queue_capacity, fspr_pool_t *a); +fspr_status_t switch_apr_queue_push(switch_apr_queue_t *queue, void *data); +fspr_status_t switch_apr_queue_trypush(switch_apr_queue_t *queue, void *data); +unsigned int switch_apr_queue_size(switch_apr_queue_t *queue); +fspr_status_t switch_apr_queue_pop(switch_apr_queue_t *queue, void **data); +fspr_status_t switch_apr_queue_pop_timeout(switch_apr_queue_t *queue, void **data, fspr_interval_time_t timeout); +fspr_status_t switch_apr_queue_trypop(switch_apr_queue_t *queue, void **data); +fspr_status_t switch_apr_queue_interrupt_all(switch_apr_queue_t *queue); +fspr_status_t switch_apr_queue_term(switch_apr_queue_t *queue); + +#endif // __SWITCH_APR_PVT_H__ + +/* For Emacs: + * Local Variables: + * mode:c + * indent-tabs-mode:t + * tab-width:4 + * c-basic-offset:4 + * End: + * For VIM: + * vim:set softtabstop=4 shiftwidth=4 tabstop=4 noet: + */ diff --git a/src/include/private/switch_core_pvt.h b/src/include/private/switch_core_pvt.h index aece2e7e173..af6a4f53bde 100644 --- a/src/include/private/switch_core_pvt.h +++ b/src/include/private/switch_core_pvt.h @@ -32,32 +32,12 @@ * this file does not exist!!!! * */ -#define SPANDSP_NO_TIFF 1 -#include "spandsp.h" #include "switch_profile.h" #ifndef WIN32 #include #endif -/* for apr_pool_create and apr_pool_destroy */ -/* functions only used in this file so not exposed */ -#include - -/* for apr_hash_make, apr_hash_pool_get, apr_hash_set */ -/* functions only used in this file so not exposed */ -#include - -/* for apr_pvsprintf */ -/* function only used in this file so not exposed */ -#include - -/* for apr_initialize and apr_terminate */ -/* function only used in this file so not exposed */ -#include - -#include - #ifdef HAVE_MLOCKALL #include #endif @@ -175,7 +155,7 @@ struct switch_core_session { switch_log_level_t loglevel; uint32_t soft_lock; switch_ivr_dmachine_t *dmachine[2]; - plc_state_t *plc; + switch_plc_state_t *plc; switch_media_handle_t *media_handle; uint32_t decoder_errors; diff --git a/src/include/switch.h b/src/include/switch.h index 461914c93b7..68c20044c5e 100644 --- a/src/include/switch.h +++ b/src/include/switch.h @@ -112,6 +112,7 @@ #include "switch_platform.h" #include "switch_types.h" #include "switch_apr.h" +#include "switch_spandsp.h" #include "switch_mprintf.h" #include "switch_core_db.h" #include "switch_dso.h" @@ -187,9 +188,6 @@ * mod_pocketsphinx * - PocketSphinx (http://www.speech.cs.cmu.edu/pocketsphinx/) * - * mod_unimrcp - * - MRCP (http://www.unimrcp.org/) - * * * Codecs * mod_amr @@ -225,11 +223,6 @@ * mod_portaudio * - portaudio (http://www.portaudio.com/) * - * mod_dingaling - * - libdingaling (internal library distributed with freeswitch which depends on) - * - APR (http://apr.apache.org) - * - iksemel (http://iksemel.jabberstudio.org/) - * * mod_sofia * - sofia-sip (http://opensource.nokia.com/projects/sofia-sip/) * diff --git a/src/include/switch_apr.h b/src/include/switch_apr.h index e9799c20683..36f1531beff 100644 --- a/src/include/switch_apr.h +++ b/src/include/switch_apr.h @@ -75,14 +75,14 @@ SWITCH_DECLARE(int) switch_thread_equal(switch_thread_id_t tid1, switch_thread_i * @{ */ /** The fundamental pool type */ -/* see switch types.h typedef struct apr_pool_t switch_memory_pool_t;*/ +/* see switch types.h typedef struct fspr_pool_t switch_memory_pool_t;*/ /** * Clear all memory in the pool and run all the cleanups. This also destroys all * subpools. * @param pool The pool to clear * @remark This does not actually free the memory, it just allows the pool * to re-use this memory for the next allocation. - * @see apr_pool_destroy() + * @see fspr_pool_destroy() */ SWITCH_DECLARE(void) switch_pool_clear(switch_memory_pool_t *pool); @@ -108,16 +108,16 @@ SWITCH_DECLARE(char *) switch_copy_string(_Out_z_cap_(dst_size) #if 0 /** - * @defgroup apr_hash Hash Tables + * @defgroup fspr_hash Hash Tables * @ingroup switch_apr * @{ */ /** Abstract type for hash tables. */ - typedef struct apr_hash_t switch_hash_t; + typedef struct fspr_hash_t switch_hash_t; /** Abstract type for scanning hash tables. */ - typedef struct apr_hash_index_t switch_hash_index_t; + typedef struct fspr_hash_index_t switch_hash_index_t; /** * When passing a key to switch_hashfunc_default, this value can be @@ -228,7 +228,7 @@ SWITCH_DECLARE(switch_time_t) switch_time_make(switch_time_t sec, int32_t usec); SWITCH_DECLARE(switch_time_t) switch_time_now(void); /** - * Convert time value from human readable format to a numeric apr_time_t that + * Convert time value from human readable format to a numeric fspr_time_t that * always represents GMT * @param result the resulting imploded time * @param input the input exploded time @@ -273,7 +273,7 @@ SWITCH_DECLARE(switch_status_t) switch_rfc822_date(char *date_str, switch_time_t SWITCH_DECLARE(switch_status_t) switch_time_exp_gmt(switch_time_exp_t *result, switch_time_t input); /** - * Convert time value from human readable format to a numeric apr_time_t + * Convert time value from human readable format to a numeric fspr_time_t * e.g. elapsed usec since epoch * @param result the resulting imploded time * @param input the input exploded time @@ -311,7 +311,7 @@ SWITCH_DECLARE(void) switch_micro_sleep(switch_interval_time_t t); */ /** Opaque thread-local mutex structure */ - typedef struct apr_thread_mutex_t switch_mutex_t; + typedef struct fspr_thread_mutex_t switch_mutex_t; /** Lock Flags */ #define SWITCH_MUTEX_DEFAULT 0x0 /**< platform-optimal lock behavior */ @@ -374,8 +374,8 @@ SWITCH_DECLARE(switch_status_t) switch_mutex_trylock(switch_mutex_t *lock); */ /** Opaque type used for the atomic operations */ -#ifdef apr_atomic_t - typedef apr_atomic_t switch_atomic_t; +#ifdef fspr_atomic_t + typedef fspr_atomic_t switch_atomic_t; #else typedef uint32_t switch_atomic_t; #endif @@ -433,7 +433,7 @@ SWITCH_DECLARE(int) switch_atomic_dec(volatile switch_atomic_t *mem); */ /** Opaque structure used for the rwlock */ - typedef struct apr_thread_rwlock_t switch_thread_rwlock_t; + typedef struct fspr_thread_rwlock_t switch_thread_rwlock_t; SWITCH_DECLARE(switch_status_t) switch_thread_rwlock_create(switch_thread_rwlock_t ** rwlock, switch_memory_pool_t *pool); SWITCH_DECLARE(switch_status_t) switch_thread_rwlock_destroy(switch_thread_rwlock_t *rwlock); @@ -460,7 +460,7 @@ SWITCH_DECLARE(switch_status_t) switch_thread_rwlock_unlock(switch_thread_rwlock */ /** Opaque structure for thread condition variables */ - typedef struct apr_thread_cond_t switch_thread_cond_t; + typedef struct fspr_thread_cond_t switch_thread_cond_t; /** * Create and initialize a condition variable that can be used to signal @@ -587,7 +587,7 @@ SWITCH_DECLARE(switch_status_t) switch_md5_string(char digest_str[SWITCH_MD5_DIG */ /** Opaque structure used for queue API */ - typedef struct apr_queue_t switch_queue_t; + typedef struct switch_apr_queue_t switch_queue_t; /** * create a FIFO queue @@ -682,17 +682,17 @@ SWITCH_DECLARE(switch_status_t) switch_queue_trypush(switch_queue_t *queue, void */ /** Structure for referencing files. */ - typedef struct apr_file_t switch_file_t; + typedef struct fspr_file_t switch_file_t; typedef int32_t switch_fileperms_t; typedef int switch_seek_where_t; /** - * @defgroup apr_file_seek_flags File Seek Flags + * @defgroup fspr_file_seek_flags File Seek Flags * @{ */ -/* flags for apr_file_seek */ +/* flags for fspr_file_seek */ /** Set the file position */ #define SWITCH_SEEK_SET SEEK_SET /** Current */ @@ -725,7 +725,7 @@ SWITCH_DECLARE(switch_status_t) switch_queue_trypush(switch_queue_t *queue, void #define SWITCH_FPROT_OS_DEFAULT 0x0FFF /**< use OS's default permissions */ -/* additional permission flags for apr_file_copy and apr_file_append */ +/* additional permission flags for fspr_file_copy and fspr_file_append */ #define SWITCH_FPROT_FILE_SOURCE_PERMS 0x1000 /**< Copy source file's permissions */ /** @} */ @@ -769,7 +769,7 @@ SWITCH_DECLARE(switch_status_t) switch_queue_trypush(switch_queue_t *queue, void #define SWITCH_FOPEN_XTHREAD 0x00200 /**< Platform dependent tag to open the file for use across multiple threads */ #define SWITCH_FOPEN_SHARELOCK 0x00400 /**< Platform dependent support for higher level locked read/write access to support writes across process/machines */ #define SWITCH_FOPEN_NOCLEANUP 0x00800 /**< Do not register a cleanup when the file is opened */ -#define SWITCH_FOPEN_SENDFILE_ENABLED 0x01000 /**< Advisory flag that this file should support apr_socket_sendfile operation */ +#define SWITCH_FOPEN_SENDFILE_ENABLED 0x01000 /**< Advisory flag that this file should support fspr_socket_sendfile operation */ #define SWITCH_FOPEN_LARGEFILE 0x04000 /**< Platform dependent flag to enable large file support */ /** @} */ @@ -796,11 +796,11 @@ SWITCH_DECLARE(switch_status_t) switch_queue_trypush(switch_queue_t *queue, void * writes across process/machines * SWITCH_FOPEN_NOCLEANUP Do not register a cleanup with the pool * passed in on the pool argument (see below). - * The apr_os_file_t handle in apr_file_t will not + * The fspr_os_file_t handle in fspr_file_t will not * be closed when the pool is destroyed. * SWITCH_FOPEN_SENDFILE_ENABLED Open with appropriate platform semantics * for sendfile operations. Advisory only, - * apr_socket_sendfile does not check this flag. + * fspr_socket_sendfile does not check this flag. * * @param perm Access permissions for file. * @param pool The pool to use. @@ -844,7 +844,7 @@ SWITCH_DECLARE(switch_status_t) switch_file_rename(const char *from_path, const * @param nbytes On entry, the number of bytes to read; on exit, the number * of bytes read. * - * @remark apr_file_read will read up to the specified number of + * @remark fspr_file_read will read up to the specified number of * bytes, but never more. If there isn't enough data to fill that * number of bytes, all of the available data is read. The third * argument is modified to reflect the number of bytes read. If a @@ -863,7 +863,7 @@ SWITCH_DECLARE(switch_status_t) switch_file_read(switch_file_t *thefile, void *b * @param nbytes On entry, the number of bytes to write; on exit, the number * of bytes written. * - * @remark apr_file_write will write up to the specified number of + * @remark fspr_file_write will write up to the specified number of * bytes, but never more. If the OS cannot write that many bytes, it * will write as many as it can. The third argument is modified to * reflect the * number of bytes written. @@ -929,10 +929,10 @@ SWITCH_DECLARE(uint32_t) switch_dir_count(switch_dir_t *thedir); */ /** Opaque Thread structure. */ - typedef struct apr_thread_t switch_thread_t; + typedef struct fspr_thread_t switch_thread_t; /** Opaque Thread attributes structure. */ - typedef struct apr_threadattr_t switch_threadattr_t; + typedef struct fspr_threadattr_t switch_threadattr_t; /** * The prototype for any APR thread worker functions. @@ -940,7 +940,7 @@ SWITCH_DECLARE(uint32_t) switch_dir_count(switch_dir_t *thedir); */ typedef void *(SWITCH_THREAD_FUNC * switch_thread_start_t) (switch_thread_t *, void *); -//APR_DECLARE(apr_status_t) apr_threadattr_stacksize_set(apr_threadattr_t *attr, switch_size_t stacksize) +//APR_DECLARE(fspr_status_t) fspr_threadattr_stacksize_set(fspr_threadattr_t *attr, switch_size_t stacksize) SWITCH_DECLARE(switch_status_t) switch_threadattr_stacksize_set(switch_threadattr_t *attr, switch_size_t stacksize); SWITCH_DECLARE(switch_status_t) switch_threadattr_priority_set(switch_threadattr_t *attr, switch_thread_priority_t priority); @@ -1014,10 +1014,10 @@ SWITCH_DECLARE(switch_status_t) switch_thread_create(switch_thread_t ** new_thre #endif /** A structure to represent sockets */ - typedef struct apr_socket_t switch_socket_t; + typedef struct fspr_socket_t switch_socket_t; /** Freeswitch's socket address type, used to ensure protocol independence */ - typedef struct apr_sockaddr_t switch_sockaddr_t; + typedef struct fspr_sockaddr_t switch_sockaddr_t; typedef enum { SWITCH_SHUTDOWN_READ, /**< no longer allow read request */ @@ -1118,8 +1118,8 @@ SWITCH_DECLARE(int) switch_sockaddr_equal(const switch_sockaddr_t *sa1, const sw /** - * Create apr_sockaddr_t from hostname, address family, and port. - * @param sa The new apr_sockaddr_t. + * Create fspr_sockaddr_t from hostname, address family, and port. + * @param sa The new fspr_sockaddr_t. * @param hostname The hostname or numeric address string to resolve/parse, or * NULL to build an address that corresponds to 0.0.0.0 or :: * @param family The address family to use, or SWITCH_UNSPEC if the system should @@ -1138,7 +1138,7 @@ SWITCH_DECLARE(int) switch_sockaddr_equal(const switch_sockaddr_t *sa1, const sw * isn't NULL and APR_HAVE_IPV6; mutually exclusive * with APR_IPV4_ADDR_OK * - * @param pool The pool for the apr_sockaddr_t and associated storage. + * @param pool The pool for the fspr_sockaddr_t and associated storage. */ SWITCH_DECLARE(switch_status_t) switch_sockaddr_info_get(switch_sockaddr_t ** sa, const char *hostname, int32_t family, switch_port_t port, int32_t flags, switch_memory_pool_t *pool); @@ -1156,7 +1156,7 @@ SWITCH_DECLARE(switch_status_t) switch_sockaddr_new(switch_sockaddr_t ** sa, con * @remark *
      * This functions acts like a blocking write by default.  To change
    - * this behavior, use apr_socket_timeout_set() or the APR_SO_NONBLOCK
    + * this behavior, use fspr_socket_timeout_set() or the APR_SO_NONBLOCK
      * socket option.
      *
      * It is possible for both bytes to be sent and an error to be returned.
    @@ -1168,7 +1168,7 @@ SWITCH_DECLARE(switch_status_t) switch_socket_send(switch_socket_t *sock, const
     
     /**
      * @param sock The socket to send from
    - * @param where The apr_sockaddr_t describing where to send the data
    + * @param where The fspr_sockaddr_t describing where to send the data
      * @param flags The flags to use
      * @param buf  The data to send
      * @param len  The length of the data to send
    @@ -1179,7 +1179,7 @@ SWITCH_DECLARE(switch_status_t) switch_socket_sendto(switch_socket_t *sock, swit
     SWITCH_DECLARE(switch_status_t) switch_socket_send_nonblock(switch_socket_t *sock, const char *buf, switch_size_t *len);
     
     /**
    - * @param from The apr_sockaddr_t to fill in the recipient info
    + * @param from The fspr_sockaddr_t to fill in the recipient info
      * @param sock The socket to use
      * @param flags The flags to use
      * @param buf  The buffer to use
    @@ -1199,7 +1199,7 @@ SWITCH_DECLARE(switch_status_t) switch_socket_atmark(switch_socket_t *sock, int
      * @remark
      * 
      * This functions acts like a blocking read by default.  To change
    - * this behavior, use apr_socket_timeout_set() or the APR_SO_NONBLOCK
    + * this behavior, use fspr_socket_timeout_set() or the APR_SO_NONBLOCK
      * socket option.
      * The number of bytes actually received is stored in argument 3.
      *
    @@ -1304,14 +1304,14 @@ SWITCH_DECLARE(switch_status_t) switch_mcast_interface(switch_socket_t *sock, sw
     									   /**< descriptor type */
     		 int16_t reqevents;	/**< requested events */
     		 int16_t rtnevents;	/**< returned events */
    -		 switch_descriptor_t desc;	 /**< @see apr_descriptor */
    +		 switch_descriptor_t desc;	 /**< @see fspr_descriptor */
     		 void *client_data;		/**< allows app to associate context */
     	 };
     
     
     
     /**
    - * @defgroup apr_poll Poll Routines
    + * @defgroup fspr_poll Poll Routines
      * @ingroup switch_apr
      * @{
      */
    @@ -1319,7 +1319,7 @@ SWITCH_DECLARE(switch_status_t) switch_mcast_interface(switch_socket_t *sock, sw
     	 typedef struct switch_pollfd switch_pollfd_t;
     
     /** Opaque structure used for pollset API */
    -	 typedef struct apr_pollset_t switch_pollset_t;
    +	 typedef struct fspr_pollset_t switch_pollset_t;
     
     /**
      * Poll options
    @@ -1340,9 +1340,9 @@ SWITCH_DECLARE(switch_status_t) switch_mcast_interface(switch_socket_t *sock, sw
      *
      * @remark If flags equals APR_POLLSET_THREADSAFE, then a pollset is
      * created on which it is safe to make concurrent calls to
    - * apr_pollset_add(), apr_pollset_remove() and apr_pollset_poll() from
    + * fspr_pollset_add(), fspr_pollset_remove() and fspr_pollset_poll() from
      * separate threads.  This feature is only supported on some
    - * platforms; the apr_pollset_create() call will fail with
    + * platforms; the fspr_pollset_create() call will fail with
      * APR_ENOTIMPL on platforms where it is not supported.
      */
     SWITCH_DECLARE(switch_status_t) switch_pollset_create(switch_pollset_t ** pollset, uint32_t size, switch_memory_pool_t *pool, uint32_t flags);
    @@ -1353,11 +1353,11 @@ SWITCH_DECLARE(switch_status_t) switch_pollset_create(switch_pollset_t ** pollse
      * @param descriptor The descriptor to add
      * @remark If you set client_data in the descriptor, that value
      *         will be returned in the client_data field whenever this
    - *         descriptor is signalled in apr_pollset_poll().
    + *         descriptor is signalled in fspr_pollset_poll().
      * @remark If the pollset has been created with APR_POLLSET_THREADSAFE
    - *         and thread T1 is blocked in a call to apr_pollset_poll() for
    - *         this same pollset that is being modified via apr_pollset_add()
    - *         in thread T2, the currently executing apr_pollset_poll() call in
    + *         and thread T1 is blocked in a call to fspr_pollset_poll() for
    + *         this same pollset that is being modified via fspr_pollset_add()
    + *         in thread T2, the currently executing fspr_pollset_poll() call in
      *         T1 will either: (1) automatically include the newly added descriptor
      *         in the set of descriptors it is watching or (2) return immediately
      *         with APR_EINTR.  Option (1) is recommended, but option (2) is
    @@ -1371,9 +1371,9 @@ SWITCH_DECLARE(switch_status_t) switch_pollset_add(switch_pollset_t *pollset, co
      * @param pollset The pollset from which to remove the descriptor
      * @param descriptor The descriptor to remove
      * @remark If the pollset has been created with APR_POLLSET_THREADSAFE
    - *         and thread T1 is blocked in a call to apr_pollset_poll() for
    - *         this same pollset that is being modified via apr_pollset_remove()
    - *         in thread T2, the currently executing apr_pollset_poll() call in
    + *         and thread T1 is blocked in a call to fspr_pollset_poll() for
    + *         this same pollset that is being modified via fspr_pollset_remove()
    + *         in thread T2, the currently executing fspr_pollset_poll() call in
      *         T1 will either: (1) automatically exclude the newly added descriptor
      *         in the set of descriptors it is watching or (2) return immediately
      *         with APR_EINTR.  Option (1) is recommended, but option (2) is
    diff --git a/src/include/switch_buffer.h b/src/include/switch_buffer.h
    index 70253085448..72d9a18e3ba 100644
    --- a/src/include/switch_buffer.h
    +++ b/src/include/switch_buffer.h
    @@ -132,13 +132,15 @@ SWITCH_DECLARE(void) switch_buffer_set_loops(_In_ switch_buffer_t *buffer, _In_
     
     /*! \brief Write data into a switch_buffer_t up to the length of datalen
      * \param buffer any buffer of type switch_buffer_t
    - * \param data pointer to the data to be written
    + * \param data pointer to the data to be written or 0 to fill in with datalen zeros
      * \param datalen amount of data to be written
      * \return int amount of buffer used after the write, or 0 if no space available
      */
     SWITCH_DECLARE(switch_size_t) switch_buffer_write(_In_ switch_buffer_t *buffer, _In_bytecount_(datalen)
     												  const void *data, _In_ switch_size_t datalen);
     
    +#define switch_buffer_zero_fill(_buffer, _datalen) switch_buffer_write(_buffer, 0, _datalen);
    +
     /*! \brief Remove data from the buffer
      * \param buffer any buffer of type switch_buffer_t
      * \param datalen amount of data to be removed
    diff --git a/src/include/switch_core_media.h b/src/include/switch_core_media.h
    index f57e1ce9748..78f43f37251 100644
    --- a/src/include/switch_core_media.h
    +++ b/src/include/switch_core_media.h
    @@ -203,7 +203,7 @@ SWITCH_DECLARE(switch_status_t) switch_core_session_media_handle_ready(switch_co
     SWITCH_DECLARE(void) switch_media_handle_set_media_flag(switch_media_handle_t *smh, switch_core_media_flag_t flag);
     SWITCH_DECLARE(void) switch_media_handle_clear_media_flag(switch_media_handle_t *smh, switch_core_media_flag_t flag);
     SWITCH_DECLARE(int32_t) switch_media_handle_test_media_flag(switch_media_handle_t *smh, switch_core_media_flag_t flag);
    -SWITCH_DECLARE(void) switch_media_handle_set_media_flags(switch_media_handle_t *smh, switch_core_media_flag_t flags[]);
    +SWITCH_DECLARE(void) switch_media_handle_set_media_flags(switch_media_handle_t *smh, switch_core_media_flag_t flags[SCMF_MAX]);
     SWITCH_DECLARE(void) switch_core_session_check_outgoing_crypto(switch_core_session_t *session);
     SWITCH_DECLARE(const char *) switch_core_session_local_crypto_key(switch_core_session_t *session, switch_media_type_t type);
     SWITCH_DECLARE(int) switch_core_session_check_incoming_crypto(switch_core_session_t *session,
    @@ -252,7 +252,7 @@ SWITCH_DECLARE(void)switch_core_media_set_local_sdp(switch_core_session_t *sessi
     SWITCH_DECLARE(void) switch_core_media_patch_sdp(switch_core_session_t *session);
     SWITCH_DECLARE(void) switch_core_media_set_udptl_image_sdp(switch_core_session_t *session, switch_t38_options_t *t38_options, int insist);
     SWITCH_DECLARE(switch_core_media_params_t *) switch_core_media_get_mparams(switch_media_handle_t *smh);
    -SWITCH_DECLARE(void) switch_core_media_prepare_codecs(switch_core_session_t *session, switch_bool_t force);
    +SWITCH_DECLARE(switch_status_t) switch_core_media_prepare_codecs(switch_core_session_t *session, switch_bool_t force);
     SWITCH_DECLARE(void) switch_core_media_start_udptl(switch_core_session_t *session, switch_t38_options_t *t38_options);
     SWITCH_DECLARE(void) switch_core_media_hard_mute(switch_core_session_t *session, switch_bool_t on);
     SWITCH_DECLARE(cJSON *) switch_core_media_gen_json_constraint(float min, float ideal, float max);
    diff --git a/src/include/switch_module_interfaces.h b/src/include/switch_module_interfaces.h
    index d347b1c7fb2..7c54ed67df1 100644
    --- a/src/include/switch_module_interfaces.h
    +++ b/src/include/switch_module_interfaces.h
    @@ -356,6 +356,7 @@ struct switch_file_handle {
     	switch_size_t samples_in;
     	switch_size_t samples_out;
     	int32_t vol;
    +	int32_t volgranular;
     	switch_audio_resampler_t *resampler;
     	switch_buffer_t *buffer;
     	switch_byte_t *dbuf;
    diff --git a/src/include/switch_odbc.h b/src/include/switch_odbc.h
    index 84e049a1ac3..d36f3742f64 100644
    --- a/src/include/switch_odbc.h
    +++ b/src/include/switch_odbc.h
    @@ -51,6 +51,7 @@ typedef enum {
     	SWITCH_ODBC_FAIL = -1
     } switch_odbc_status_t;
     
    +SWITCH_DECLARE(void) switch_odbc_skip_autocommit_flip(void);
     SWITCH_DECLARE(switch_odbc_handle_t *) switch_odbc_handle_new(const char *dsn, const char *username, const char *password);
     SWITCH_DECLARE(void) switch_odbc_set_num_retries(switch_odbc_handle_t *handle, int num_retries);
     SWITCH_DECLARE(switch_odbc_status_t) switch_odbc_handle_disconnect(switch_odbc_handle_t *handle);
    diff --git a/src/include/switch_private.h.cmake b/src/include/switch_private.h.cmake
    index dc94b73a886..d55a8d4169f 100644
    --- a/src/include/switch_private.h.cmake
    +++ b/src/include/switch_private.h.cmake
    @@ -22,9 +22,6 @@
     /* Define to 1 if you have the  header file. */
     #cmakedefine HAVE_DLFCN_H
     
    -/* Define to 1 if you have the  header file. */
    -#cmakedefine HAVE_EXECINFO_H
    -
     /* Define to 1 if you have the `gethostname' function. */
     #cmakedefine HAVE_GETHOSTNAME
     
    diff --git a/src/include/switch_rtp.h b/src/include/switch_rtp.h
    index 96ea2135f37..ca915cf77a2 100644
    --- a/src/include/switch_rtp.h
    +++ b/src/include/switch_rtp.h
    @@ -41,9 +41,11 @@
     
     SWITCH_BEGIN_EXTERN_C
     
    +#define SWITCH_RTP_HEADER_LEN sizeof(switch_rtp_hdr_t)
     #define SWITCH_RTP_MAX_BUF_LEN 16384
     #define SWITCH_RTCP_MAX_BUF_LEN 16384
     #define SWITCH_RTP_MAX_BUF_LEN_WORDS 4094 /* (max / 4) - 2 */
    +#define SWITCH_RTP_MAX_PACKET_LEN (SWITCH_RTP_MAX_BUF_LEN + SWITCH_RTP_HEADER_LEN)
     //#define SWITCH_RTP_KEY_LEN 30
     //#define SWITCH_RTP_CRYPTO_KEY_32 "AES_CM_128_HMAC_SHA1_32"
     #define SWITCH_RTP_CRYPTO_KEY_80 "AES_CM_128_HMAC_SHA1_80"
    @@ -234,7 +236,7 @@ SWITCH_DECLARE(switch_status_t) switch_rtp_create(switch_rtp_t **new_rtp_session
     												  switch_payload_t payload,
     												  uint32_t samples_per_interval,
     												  uint32_t ms_per_packet,
    -												  switch_rtp_flag_t flags[], char *timer_name, const char **err, switch_memory_pool_t *pool);
    +												  switch_rtp_flag_t flags[SWITCH_RTP_FLAG_INVALID], char *timer_name, const char **err, switch_memory_pool_t *pool);
     
     
     /*!
    @@ -260,7 +262,7 @@ SWITCH_DECLARE(switch_rtp_t *) switch_rtp_new(const char *rx_host,
     											  switch_payload_t payload,
     											  uint32_t samples_per_interval,
     											  uint32_t ms_per_packet,
    -											  switch_rtp_flag_t flags[], char *timer_name, const char **err, switch_memory_pool_t *pool, switch_port_t bundle_internal_ports, switch_port_t bundle_external_port);
    +											  switch_rtp_flag_t flags[SWITCH_RTP_FLAG_INVALID], char *timer_name, const char **err, switch_memory_pool_t *pool, switch_port_t bundle_internal_ports, switch_port_t bundle_external_port);
     
     
     /*!
    diff --git a/libs/libdingaling/src/ldl_compat.h b/src/include/switch_spandsp.h
    similarity index 57%
    rename from libs/libdingaling/src/ldl_compat.h
    rename to src/include/switch_spandsp.h
    index c14e0d21450..1818a008259 100644
    --- a/libs/libdingaling/src/ldl_compat.h
    +++ b/src/include/switch_spandsp.h
    @@ -1,5 +1,5 @@
    -/* 
    - * libDingaLing XMPP Jingle Library
    +/*
    + * FreeSWITCH Modular Media Switching Software Library / Soft-Switch Application
      * Copyright (C) 2005-2014, Anthony Minessale II 
      *
      * Version: MPL 1.1
    @@ -14,7 +14,7 @@
      * for the specific language governing rights and limitations under the
      * License.
      *
    - * The Original Code is libDingaLing XMPP Jingle Library
    + * The Original Code is FreeSWITCH Modular Media Switching Software Library / Soft-Switch Application
      *
      * The Initial Developer of the Original Code is
      * Anthony Minessale II 
    @@ -22,46 +22,24 @@
      * the Initial Developer. All Rights Reserved.
      *
      * Contributor(s):
    - * 
    + *
      * Anthony Minessale II 
    + * Andrey Volk 
      *
    - * ldl_compat.h -- Platform Compatability Header File
    + * switch_spandsp.h -- SpanDSP includes header
      *
      */
    -/*! \file ldl_compat.h
    -    \brief Platform Compatability Header File
    -*/
    -#ifndef LDL_COMPAT_H
    -#define LDL_COMPAT_H
    -#ifdef __cplusplus
    -extern "C" {
    -#endif
    -#ifdef __STUPIDFORMATBUG__
    -}
    -#endif
    -
    +#ifndef SWITCH_SPANDSP_H
    +#define SWITCH_SPANDSP_H
     
    -#ifdef _MSC_VER
    -#if !defined(_STDINT) && !defined(uint32_t)
    -typedef unsigned __int8		uint8_t;
    -typedef unsigned __int16	uint16_t;
    -typedef unsigned __int32	uint32_t;
    -typedef unsigned __int64    uint64_t;
    -typedef __int8		int8_t;
    -typedef __int16		int16_t;
    -typedef __int32		int32_t;
    -typedef __int64		int64_t;
    -typedef unsigned long	in_addr_t;
    -#endif
    -#if _MSC_VER < 1900
    -#define snprintf _snprintf
    -#endif
    -#endif
    +SWITCH_BEGIN_EXTERN_C
     
    -#ifdef __cplusplus
    -}
    -#endif
    +SWITCH_DECLARE(switch_plc_state_t *) switch_plc_init(switch_plc_state_t *s);
    +SWITCH_DECLARE(int) switch_plc_free(switch_plc_state_t *s);
    +SWITCH_DECLARE(int) switch_plc_rx(switch_plc_state_t *s, int16_t amp[], int len);
    +SWITCH_DECLARE(int) switch_plc_fillin(switch_plc_state_t *s, int16_t amp[], int len);
     
    +SWITCH_END_EXTERN_C
     #endif
     
     /* For Emacs:
    diff --git a/src/include/switch_types.h b/src/include/switch_types.h
    index bb06cfa0ea1..f6bb87d391c 100644
    --- a/src/include/switch_types.h
    +++ b/src/include/switch_types.h
    @@ -2231,35 +2231,35 @@ typedef enum {
     	SWITCH_CAUSE_INTERWORKING = 127,
     	SWITCH_CAUSE_SUCCESS = 142,
     	SWITCH_CAUSE_ORIGINATOR_CANCEL = 487,
    -	SWITCH_CAUSE_CRASH = 500,
    -	SWITCH_CAUSE_SYSTEM_SHUTDOWN = 501,
    -	SWITCH_CAUSE_LOSE_RACE = 502,
    -	SWITCH_CAUSE_MANAGER_REQUEST = 503,
    -	SWITCH_CAUSE_BLIND_TRANSFER = 600,
    -	SWITCH_CAUSE_ATTENDED_TRANSFER = 601,
    -	SWITCH_CAUSE_ALLOTTED_TIMEOUT = 602,
    -	SWITCH_CAUSE_USER_CHALLENGE = 603,
    -	SWITCH_CAUSE_MEDIA_TIMEOUT = 604,
    -	SWITCH_CAUSE_PICKED_OFF = 605,
    -	SWITCH_CAUSE_USER_NOT_REGISTERED = 606,
    -	SWITCH_CAUSE_PROGRESS_TIMEOUT = 607,
    -	SWITCH_CAUSE_INVALID_GATEWAY = 608,
    -	SWITCH_CAUSE_GATEWAY_DOWN = 609,
    -	SWITCH_CAUSE_INVALID_URL = 610,
    -	SWITCH_CAUSE_INVALID_PROFILE = 611,
    -	SWITCH_CAUSE_NO_PICKUP = 612,
    -	SWITCH_CAUSE_SRTP_READ_ERROR = 613,
    -	SWITCH_CAUSE_BOWOUT = 614,
    -	SWITCH_CAUSE_BUSY_EVERYWHERE = 615,
    -	SWITCH_CAUSE_DECLINE = 616,
    -	SWITCH_CAUSE_DOES_NOT_EXIST_ANYWHERE = 617,
    -	SWITCH_CAUSE_NOT_ACCEPTABLE = 618,
    -	SWITCH_CAUSE_UNWANTED = 619,
    -	SWITCH_CAUSE_NO_IDENTITY = 620,
    -	SWITCH_CAUSE_BAD_IDENTITY_INFO = 621,
    -	SWITCH_CAUSE_UNSUPPORTED_CERTIFICATE = 622,
    -	SWITCH_CAUSE_INVALID_IDENTITY = 623,
    -	SWITCH_CAUSE_STALE_DATE = 624
    +	SWITCH_CAUSE_CRASH = 700,
    +	SWITCH_CAUSE_SYSTEM_SHUTDOWN = 701,
    +	SWITCH_CAUSE_LOSE_RACE = 702,
    +	SWITCH_CAUSE_MANAGER_REQUEST = 703,
    +	SWITCH_CAUSE_BLIND_TRANSFER = 800,
    +	SWITCH_CAUSE_ATTENDED_TRANSFER = 801,
    +	SWITCH_CAUSE_ALLOTTED_TIMEOUT = 802,
    +	SWITCH_CAUSE_USER_CHALLENGE = 803,
    +	SWITCH_CAUSE_MEDIA_TIMEOUT = 804,
    +	SWITCH_CAUSE_PICKED_OFF = 805,
    +	SWITCH_CAUSE_USER_NOT_REGISTERED = 806,
    +	SWITCH_CAUSE_PROGRESS_TIMEOUT = 807,
    +	SWITCH_CAUSE_INVALID_GATEWAY = 808,
    +	SWITCH_CAUSE_GATEWAY_DOWN = 809,
    +	SWITCH_CAUSE_INVALID_URL = 810,
    +	SWITCH_CAUSE_INVALID_PROFILE = 811,
    +	SWITCH_CAUSE_NO_PICKUP = 812,
    +	SWITCH_CAUSE_SRTP_READ_ERROR = 813,
    +	SWITCH_CAUSE_BOWOUT = 814,
    +	SWITCH_CAUSE_BUSY_EVERYWHERE = 815,
    +	SWITCH_CAUSE_DECLINE = 816,
    +	SWITCH_CAUSE_DOES_NOT_EXIST_ANYWHERE = 817,
    +	SWITCH_CAUSE_NOT_ACCEPTABLE = 818,
    +	SWITCH_CAUSE_UNWANTED = 819,
    +	SWITCH_CAUSE_NO_IDENTITY = 820,
    +	SWITCH_CAUSE_BAD_IDENTITY_INFO = 821,
    +	SWITCH_CAUSE_UNSUPPORTED_CERTIFICATE = 822,
    +	SWITCH_CAUSE_INVALID_IDENTITY = 823,
    +	SWITCH_CAUSE_STALE_DATE = 824
     } switch_call_cause_t;
     
     typedef enum {
    @@ -2323,7 +2323,8 @@ typedef int switch_os_socket_t;
     #define SWITCH_SOCK_INVALID -1
     #endif
     
    -typedef struct apr_pool_t switch_memory_pool_t;
    +typedef struct fspr_pool_t switch_memory_pool_t;
    +typedef void* switch_plc_state_t;
     typedef uint16_t switch_port_t;
     typedef uint8_t switch_payload_t;
     typedef struct switch_app_log switch_app_log_t;
    diff --git a/src/mod/.gitignore b/src/mod/.gitignore
    index 056bfb1fe24..90608ed1edf 100644
    --- a/src/mod/.gitignore
    +++ b/src/mod/.gitignore
    @@ -27,9 +27,6 @@
     /applications/mod_translate/Makefile
     /applications/mod_valet_parking/Makefile
     /applications/mod_voicemail/Makefile
    -/asr_tts/mod_unimrcp/Makefile
    -/asr_tts/mod_unimrcp/Makefile.in
    -/asr_tts/mod_unimrcp/mod_unimrcp.log
     /asr_tts/mod_flite/*/*/mod_flite_manifest.rc
     /codecs/mod_b64/Makefile
     /codecs/mod_skel_codec/Makefile
    diff --git a/src/mod/Makefile.am b/src/mod/Makefile.am
    index 05bea17bc49..325e8e81d74 100644
    --- a/src/mod/Makefile.am
    +++ b/src/mod/Makefile.am
    @@ -9,8 +9,7 @@ check: $(OUR_CHECK_MODULES)
     
     mod_skypopen-all: mod_gsmopen-all
     mod_gsmopen-all: mod_spandsp-all
    -mod_unimrcp-all: mod_sofia-all
    -mod_rayo-all: mod_dingaling-all
    +mod_rayo-all: mod_ssml-all
     mod_ssml-all: mod_rayo-all
     
     $(OUR_MODULES) $(OUR_CLEAN_MODULES) $(OUR_INSTALL_MODULES) $(OUR_UNINSTALL_MODULES) $(OUR_DISABLED_MODULES) $(OUR_DISABLED_CLEAN_MODULES) $(OUR_DISABLED_INSTALL_MODULES) $(OUR_DISABLED_UNINSTALL_MODULES) $(OUR_TEST_MODULES) $(OUR_CHECK_MODULES):
    diff --git a/src/mod/applications/mod_av/avcodec.c b/src/mod/applications/mod_av/avcodec.c
    index 573b8baaa16..a9f6d0927e0 100644
    --- a/src/mod/applications/mod_av/avcodec.c
    +++ b/src/mod/applications/mod_av/avcodec.c
    @@ -405,8 +405,6 @@ typedef struct h264_codec_context_s {
     #define AV_INPUT_BUFFER_PADDING_SIZE FF_INPUT_BUFFER_PADDING_SIZE
     #endif
     
    -static uint8_t ff_input_buffer_padding[AV_INPUT_BUFFER_PADDING_SIZE] = { 0 };
    -
     #define MAX_PROFILES 100
     
     typedef struct avcodec_profile_s {
    @@ -753,8 +751,7 @@ static switch_status_t buffer_h263_rfc4629_packets(h264_codec_context_t *context
     	if (len < 0) return SWITCH_STATUS_FALSE;
     
     	if (startcode) {
    -		uint8_t zeros[2] = { 0 };
    -		switch_buffer_write(context->nalu_buffer, zeros, 2);
    +		switch_buffer_zero_fill(context->nalu_buffer, 2);
     	}
     
     	switch_buffer_write(context->nalu_buffer, data, len);
    @@ -1712,7 +1709,7 @@ static switch_status_t switch_h264_decode(switch_codec_t *codec, switch_frame_t
     
     		if (size > 0) {
     			av_init_packet(&pkt);
    -			switch_buffer_write(context->nalu_buffer, ff_input_buffer_padding, sizeof(ff_input_buffer_padding));
    +			switch_buffer_zero_fill(context->nalu_buffer, AV_INPUT_BUFFER_PADDING_SIZE);
     			switch_buffer_peek_zerocopy(context->nalu_buffer, (const void **)&pkt.data);
     			pkt.size = size;
     
    @@ -1979,6 +1976,9 @@ static void parse_profile(avcodec_profile_t *aprofile, switch_xml_t profile)
     
     	ctx = &aprofile->ctx;
     
    +	ctx->profile = FF_PROFILE_H264_BASELINE;
    +	ctx->level = 31;
    +
     	for (param = switch_xml_child(profile, "param"); param; param = param->next) {
     		const char *name = switch_xml_attr(param, "name");
     		const char *value = switch_xml_attr(param, "value");
    @@ -1990,9 +1990,6 @@ static void parse_profile(avcodec_profile_t *aprofile, switch_xml_t profile)
     
     		val = atoi(value);
     
    -		ctx->profile = FF_PROFILE_H264_BASELINE;
    -		ctx->level = 31;
    -
     		if (!strcmp(name, "dec-threads")) {
     			aprofile->decoder_thread_count = switch_parse_cpu_string(value);
     		} else if (!strcmp(name, "enc-threads")) {
    diff --git a/src/mod/applications/mod_av/avformat.c b/src/mod/applications/mod_av/avformat.c
    index f7489682028..a791665c08f 100644
    --- a/src/mod/applications/mod_av/avformat.c
    +++ b/src/mod/applications/mod_av/avformat.c
    @@ -742,7 +742,7 @@ GCC_DIAG_ON(deprecated-declarations)
     		av_opt_set_int(mst->resample_ctx, "out_sample_fmt",     c->sample_fmt,     0);
     		av_opt_set_int(mst->resample_ctx, "out_channel_layout", c->channel_layout, 0);
     
    -		if ((ret = swr_init(mst->resample_ctx)) < 0) {
    +		if (swr_init(mst->resample_ctx) < 0) {
     			switch_log_printf(SWITCH_CHANNEL_LOG, SWITCH_LOG_ERROR, "Failed to initialize the resampling context\n");
     			av_free(mst->resample_ctx);
     			mst->resample_ctx = NULL;
    @@ -2003,7 +2003,6 @@ static switch_status_t av_file_truncate(switch_file_handle_t *handle, int64_t of
     
     static switch_status_t av_file_write(switch_file_handle_t *handle, void *data, size_t *len)
     {
    -
     	uint32_t datalen = 0;
     	switch_status_t status = SWITCH_STATUS_SUCCESS;
     	// uint8_t buf[SWITCH_RECOMMENDED_BUFFER_SIZE] = { 0 }, *bp = buf;
    @@ -2037,13 +2036,12 @@ static switch_status_t av_file_write(switch_file_handle_t *handle, void *data, s
     		datalen = *len * 2 * handle->channels;
     
     		if (context->offset) {
    -			char buf[SWITCH_RECOMMENDED_BUFFER_SIZE] = {0};
     			switch_size_t samples = *len;
     			int fps = handle->samplerate / samples;
     			int lead_frames = (context->offset * fps) / 1000;
     
     			for (int x = 0; x < lead_frames; x++) {
    -				switch_buffer_write(context->audio_buffer, buf, datalen);
    +				switch_buffer_zero_fill(context->audio_buffer, datalen);
     			}
     			context->offset = 0;
     		}
    @@ -2063,8 +2061,7 @@ GCC_DIAG_ON(deprecated-declarations)
     	if (context->closed) {
     		inuse = switch_buffer_inuse(context->audio_buffer);
     		if (inuse < bytes) {
    -			char buf[SWITCH_RECOMMENDED_BUFFER_SIZE] = {0};
    -			switch_buffer_write(context->audio_buffer, buf, bytes - inuse);
    +			switch_buffer_zero_fill(context->audio_buffer, bytes - inuse);
     		}
     	}
     
    @@ -2097,7 +2094,7 @@ GCC_DIAG_ON(deprecated-declarations)
     		 }
     	 }
      
    -	while ((inuse = switch_buffer_inuse(context->audio_buffer)) >= bytes) {
    +	while (switch_buffer_inuse(context->audio_buffer) >= bytes) {
     		AVPacket pkt[2] = { {0} };
     		int got_packet[2] = {0};
     		int j = 0, ret = -1, audio_stream_count = 1;
    diff --git a/src/mod/applications/mod_avmd/avmd_amplitude.c b/src/mod/applications/mod_avmd/avmd_amplitude.c
    index 86523fad4b3..e4cd3745e33 100644
    --- a/src/mod/applications/mod_avmd/avmd_amplitude.c
    +++ b/src/mod/applications/mod_avmd/avmd_amplitude.c
    @@ -2,7 +2,7 @@
      * Contributor(s):
      *
      * Eric des Courtis 
    - * Piotr Gregor     
    + * Piotr Gregor 
      */
     
     
    @@ -12,7 +12,7 @@
     
     
     double avmd_amplitude(circ_buffer_t *b, size_t i, double f) {
    -    double result;
    -    result = sqrt(PSI(b, i) / sin(f * f));
    -    return result;
    +	double result;
    +	result = sqrt(PSI(b, i) / sin(f * f));
    +	return result;
     }
    diff --git a/src/mod/applications/mod_avmd/avmd_amplitude.h b/src/mod/applications/mod_avmd/avmd_amplitude.h
    index da98d083e58..1ada7290112 100644
    --- a/src/mod/applications/mod_avmd/avmd_amplitude.h
    +++ b/src/mod/applications/mod_avmd/avmd_amplitude.h
    @@ -4,7 +4,7 @@
      * Contributor(s):
      *
      * Eric des Courtis 
    - * Piotr Gregor     
    + * Piotr Gregor 
      */
     
     
    diff --git a/src/mod/applications/mod_avmd/avmd_buffer.c b/src/mod/applications/mod_avmd/avmd_buffer.c
    index f05f0deb4c0..f673a8d31bd 100644
    --- a/src/mod/applications/mod_avmd/avmd_buffer.c
    +++ b/src/mod/applications/mod_avmd/avmd_buffer.c
    @@ -11,20 +11,20 @@
     
     extern size_t next_power_of_2(size_t v)
     {
    -    size_t prev;
    -    size_t tmp = 1;
    +	size_t prev;
    +	size_t tmp = 1;
     
    -    v++;
    +	v++;
     
    -    do {
    -        prev = v;
    -        v &= ~tmp;
    -        tmp <<= 1;
    -    } while (v != 0);
    +	do {
    +		prev = v;
    +		v &= ~tmp;
    +		tmp <<= 1;
    +	} while (v != 0);
     
    -    prev <<= 1;
    +	prev <<= 1;
     
    -    return prev;
    +	return prev;
     }
     
     
    diff --git a/src/mod/applications/mod_avmd/avmd_buffer.h b/src/mod/applications/mod_avmd/avmd_buffer.h
    index 11d874b5dde..416072caf9c 100644
    --- a/src/mod/applications/mod_avmd/avmd_buffer.h
    +++ b/src/mod/applications/mod_avmd/avmd_buffer.h
    @@ -4,7 +4,7 @@
      * Contributor(s):
      *
      * Eric des Courtis 
    - * Piotr Gregor     
    + * Piotr Gregor 
      */
     
     
    @@ -15,89 +15,89 @@
     #include 
     
     #ifdef WIN32
    -    #include 
    -    #include 
    +	#include 
    +	#include 
     #endif
     
     #ifndef INT16_MIN
    -#define INT16_MIN              (-32767-1)
    +#define INT16_MIN (-32767-1)
     #endif
     #ifndef INT16_MAX
    -#define INT16_MAX              (32767)
    +#define INT16_MAX (32767)
     #endif
     
     #define BUFF_TYPE double
     
     typedef struct {
    -    size_t pos;
    -    size_t lpos;
    -    BUFF_TYPE *buf;
    -    size_t buf_len;
    -    size_t mask;
    -    size_t i;
    -    size_t backlog;
    +	size_t pos;
    +	size_t lpos;
    +	BUFF_TYPE *buf;
    +	size_t buf_len;
    +	size_t mask;
    +	size_t i;
    +	size_t backlog;
     } circ_buffer_t;
     
     extern size_t next_power_of_2(size_t v);
     
     #define INC_POS(b) \
    -    { \
    +	{ \
     	(b)->pos++; \
     	(b)->pos &= (b)->mask; \
     	(b)->lpos + 1 < 2 * (b)->buf_len ? (b)->lpos++ : (b)->lpos = (b)->buf_len; \
     	if ((b)->backlog < (b)->buf_len) (b)->backlog++; \
    -    }
    +	}
     
     #define DEC_POS(b) \
    -    { \
    +	{ \
     	(b)->pos--; \
     	(b)->pos &= (b)->mask; \
     	(b)->lpos--; \
     	if (((b)->backlog - 1) < (b)->backlog) (b)->backlog--; \
    -    }
    +	}
     
     #define GET_SAMPLE(b, i) ((b)->buf[(i) & (b)->mask])
     #define SET_SAMPLE(b, i, v) ((b)->buf[(i) & (b)->mask] = (v))
     
     #define INSERT_FRAME(b, f, l) \
    -    do { \
    +	do { \
     	for ((b)->i = 0; (b)->i < (l); (b)->i++) { \
    -	    SET_SAMPLE((b), ((b)->i + (b)->pos), (f)[(b)->i]); \
    +		SET_SAMPLE((b), ((b)->i + (b)->pos), (f)[(b)->i]); \
     	} \
     	(b)->pos += (l); \
     	(b)->lpos += (l); \
     	(b)->pos %= (b)->buf_len; \
     	(b)->backlog += (l); \
     	if ((b)->backlog > (b)->buf_len) (b)->backlog = (b)->buf_len; \
    -    } while (0)
    +	} while (0)
     
     
    -/*		    ((f)[(b)->i] >= 0) ? \
    -		    ((BUFF_TYPE)(f)[(b)->i] / (BUFF_TYPE)INT16_MAX): \
    -		    (0.0 - ((BUFF_TYPE)(f)[(b)->i] / (BUFF_TYPE)INT16_MIN)) \ */
    +/*			((f)[(b)->i] >= 0) ? \
    +			((BUFF_TYPE)(f)[(b)->i] / (BUFF_TYPE)INT16_MAX): \
    +			(0.0 - ((BUFF_TYPE)(f)[(b)->i] / (BUFF_TYPE)INT16_MIN)) \ */
     #define INSERT_INT16_FRAME(b, f, l) \
    -    { \
    +	{ \
     	for ((b)->i = 0; (b)->i < (l); (b)->i++) { \
    -	    SET_SAMPLE( \
    +		SET_SAMPLE( \
     		(b), \
     		((b)->i + (b)->pos), \
     		( \
    -		    (BUFF_TYPE)(f)[(b)->i] \
    +			(BUFF_TYPE)(f)[(b)->i] \
     		) \
    -	    ); \
    +		); \
     	} \
     	(b)->pos += (l); \
     	(b)->lpos += (l); \
     	(b)->pos &= (b)->mask; \
     	(b)->backlog += (l); \
     	if ((b)->backlog > (b)->buf_len) (b)->backlog = (b)->buf_len; \
    -    }
    +	}
     
     
     #define CALC_BUFF_LEN(fl, bl) (((fl) >= (bl))? next_power_of_2((fl) << 1): next_power_of_2((bl) << 1))
     
     #define INIT_CIRC_BUFFER(bf, bl, fl, s)			\
    -    { \
    +	{ \
     	(bf)->buf_len = CALC_BUFF_LEN((fl), (bl)); \
     	(bf)->mask = (bf)->buf_len - 1; \
     	(bf)->buf = (BUFF_TYPE *) switch_core_session_alloc(s, (bf)->buf_len * sizeof(BUFF_TYPE)); \
    @@ -105,7 +105,7 @@ extern size_t next_power_of_2(size_t v);
     	(bf)->lpos = 0; \
     	(bf)->backlog = 0; \
     	(bf)->i = 0; \
    -    }
    +	}
     
     //#define DESTROY_CIRC_BUFFER(b) free((b)->buf)
     #define GET_BACKLOG_POS(b) ((b)->lpos - (b)->backlog)
    @@ -114,9 +114,9 @@ extern size_t next_power_of_2(size_t v);
     #define GET_CURRENT_SAMPLE(b) GET_SAMPLE((b), GET_CURRENT_LPOS((b)))
     
     #define ADD_SAMPLE(b, s) \
    -    do { \
    +	do { \
     	INC_POS((b)); \
     	SET_SAMPLE((b), GET_CURRENT_LPOS((b)), (s)); \
    -    } while (0)
    +	} while (0)
     
     #endif /* __AVMD_BUFFER_H__ */
    diff --git a/src/mod/applications/mod_avmd/avmd_desa2.c b/src/mod/applications/mod_avmd/avmd_desa2.c
    index f6b62785d15..72e347fffd3 100644
    --- a/src/mod/applications/mod_avmd/avmd_desa2.c
    +++ b/src/mod/applications/mod_avmd/avmd_desa2.c
    @@ -2,15 +2,15 @@
      * Contributor(s):
      *
      * Eric des Courtis 
    - * Piotr Gregor     
    + * Piotr Gregor 
      */
     
     #include 
     
     #ifdef WIN32
    -    #include 
    -    #define ISNAN(x) (!!(_isnan(x)))
    -    #define ISINF(x) (isinf(x))
    +	#include 
    +	#define ISNAN(x) (!!(_isnan(x)))
    +	#define ISINF(x) (isinf(x))
     #endif
     
     #include "avmd_buffer.h"
    @@ -18,50 +18,50 @@
     #include "avmd_options.h"
     
     #ifdef AVMD_FAST_MATH
    -    #include "avmd_fast_acosf.h"
    +	#include "avmd_fast_acosf.h"
     #endif
     
     
     double avmd_desa2(circ_buffer_t *b, size_t i, double *amplitude) {
    -    double d;
    -    double n;
    -    double x0;
    -    double x1;
    -    double x2;
    -    double x3;
    -    double x4;
    -    double x2sq;
    -    double result;
    -    double PSI_Xn, PSI_Yn, NEEDED;
    +	double d;
    +	double n;
    +	double x0;
    +	double x1;
    +	double x2;
    +	double x3;
    +	double x4;
    +	double x2sq;
    +	double result;
    +	double PSI_Xn, PSI_Yn, NEEDED;
     
    -    x0 = GET_SAMPLE((b), (i));
    -    x1 = GET_SAMPLE((b), ((i) + 1));
    -    x2 = GET_SAMPLE((b), ((i) + 2));
    -    x3 = GET_SAMPLE((b), ((i) + 3));
    -    x4 = GET_SAMPLE((b), ((i) + 4));
    +	x0 = GET_SAMPLE((b), (i));
    +	x1 = GET_SAMPLE((b), ((i) + 1));
    +	x2 = GET_SAMPLE((b), ((i) + 2));
    +	x3 = GET_SAMPLE((b), ((i) + 3));
    +	x4 = GET_SAMPLE((b), ((i) + 4));
     
    -    x2sq = x2 * x2;
    -    d = 2.0 * ((x2sq) - (x1 * x3));
    -    if (d == 0.0) {
    -        *amplitude = 0.0;
    -        return 0.0;
    -    }
    -    PSI_Xn = ((x2sq) - (x0 * x4));
    -    NEEDED = ((x1 * x1) - (x0 * x2)) + ((x3 * x3) - (x2 * x4));
    -    n = ((x2sq) - (x0 * x4)) - NEEDED;
    -    PSI_Yn = NEEDED + PSI_Xn;
    +	x2sq = x2 * x2;
    +	d = 2.0 * ((x2sq) - (x1 * x3));
    +	if (d == 0.0) {
    +		*amplitude = 0.0;
    +		return 0.0;
    +	}
    +	PSI_Xn = ((x2sq) - (x0 * x4));
    +	NEEDED = ((x1 * x1) - (x0 * x2)) + ((x3 * x3) - (x2 * x4));
    +	n = ((x2sq) - (x0 * x4)) - NEEDED;
    +	PSI_Yn = NEEDED + PSI_Xn;
     
     #ifdef AVMD_FAST_MATH
    -    result = 0.5 * (double)fast_acosf((float)n/d);
    +	result = 0.5 * (double)fast_acosf((float)n/d);
     #else
    -    result = 0.5 * acos(n/d);
    +	result = 0.5 * acos(n/d);
     #endif
     
    -    if (ISNAN(result)) {
    -        result = 0.0;
    -    }
    -    *amplitude = 2.0 * PSI_Xn / sqrt(PSI_Yn);
    +	if (ISNAN(result)) {
    +		result = 0.0;
    +	}
    +	*amplitude = 2.0 * PSI_Xn / sqrt(PSI_Yn);
     
    -    return result;
    +	return result;
     
     }
    diff --git a/src/mod/applications/mod_avmd/avmd_desa2.h b/src/mod/applications/mod_avmd/avmd_desa2.h
    index 6e8f6e58a7f..83541ed38d3 100644
    --- a/src/mod/applications/mod_avmd/avmd_desa2.h
    +++ b/src/mod/applications/mod_avmd/avmd_desa2.h
    @@ -4,7 +4,7 @@
      * Contributor(s):
      *
      * Eric des Courtis 
    - * Piotr Gregor     
    + * Piotr Gregor 
      */
     
     
    diff --git a/src/mod/applications/mod_avmd/avmd_desa2_tweaked.c b/src/mod/applications/mod_avmd/avmd_desa2_tweaked.c
    index a6dab2be287..9aadbb9dac7 100644
    --- a/src/mod/applications/mod_avmd/avmd_desa2_tweaked.c
    +++ b/src/mod/applications/mod_avmd/avmd_desa2_tweaked.c
    @@ -1,71 +1,71 @@
     /*
      * Contributor(s):
      *
    - * Piotr Gregor     
    + * Piotr Gregor 
      */
     
     #ifndef __AVMD_DESA2_TWEAKED_H__
    -    #include "avmd_desa2_tweaked.h"
    +	#include "avmd_desa2_tweaked.h"
     #endif
     
     #include 
     #include 
     
     #ifdef WIN32
    -    #include 
    -    #define ISNAN(x) (!!(_isnan(x)))
    -    #define ISINF(x) (isinf(x))
    +	#include 
    +	#define ISNAN(x) (!!(_isnan(x)))
    +	#define ISINF(x) (isinf(x))
     #endif
     
     #include "avmd_buffer.h"
     #include "avmd_options.h"
     
     #ifndef AVMD_FAST_MATH
    -    #include "avmd_fast_acosf.h"
    +	#include "avmd_fast_acosf.h"
     #endif
     
     
     double
     avmd_desa2_tweaked(circ_buffer_t *b, size_t i, double *amplitude) {
    -    double n, d;
    -    double x0;
    -    double x1;
    -    double x2;
    -    double x3;
    -    double x4;
    -    double x2sq;
    -    double result;
    -    double PSI_Xn, PSI_Yn, NEEDED;
    +	double n, d;
    +	double x0;
    +	double x1;
    +	double x2;
    +	double x3;
    +	double x4;
    +	double x2sq;
    +	double result;
    +	double PSI_Xn, PSI_Yn, NEEDED;
     
    -    x0 = GET_SAMPLE((b), (i));
    -    x1 = GET_SAMPLE((b), ((i) + 1));
    -    x2 = GET_SAMPLE((b), ((i) + 2));
    -    x3 = GET_SAMPLE((b), ((i) + 3));
    -    x4 = GET_SAMPLE((b), ((i) + 4));
    -    x2sq = x2 * x2;
    -    d = 2.0 * ((x2sq) - (x1 * x3));
    -    PSI_Xn = ((x2sq) - (x0 * x4));
    -    NEEDED = ((x1 * x1) - (x0 * x2)) + ((x3 * x3) - (x2 * x4));
    -    n = ((x2sq) - (x0 * x4)) - NEEDED;
    -    PSI_Yn = NEEDED + PSI_Xn;
    +	x0 = GET_SAMPLE((b), (i));
    +	x1 = GET_SAMPLE((b), ((i) + 1));
    +	x2 = GET_SAMPLE((b), ((i) + 2));
    +	x3 = GET_SAMPLE((b), ((i) + 3));
    +	x4 = GET_SAMPLE((b), ((i) + 4));
    +	x2sq = x2 * x2;
    +	d = 2.0 * ((x2sq) - (x1 * x3));
    +	PSI_Xn = ((x2sq) - (x0 * x4));
    +	NEEDED = ((x1 * x1) - (x0 * x2)) + ((x3 * x3) - (x2 * x4));
    +	n = ((x2sq) - (x0 * x4)) - NEEDED;
    +	PSI_Yn = NEEDED + PSI_Xn;
     
     /* instead of
     #ifdef FASTMATH
    -    result = 0.5 * (double)fast_acosf((float)n/d);
    +	result = 0.5 * (double)fast_acosf((float)n/d);
     #else
    -    result = 0.5 * acos(n/d);
    +	result = 0.5 * acos(n/d);
     #endif
      we do simplified, modified for speed version : */
     
    -    result = n/d;
    -/*    if (ISINF(result)) {
    -        *amplitude = 0.0;
    -        if (n < 0.0) {
    -            return -10.0;
    -        } else {
    -            return 10.0;
    -        }
    -    }*/
    -    *amplitude = 2.0 * PSI_Xn / sqrt(PSI_Yn);
    -    return result;
    +	result = n/d;
    +/*	if (ISINF(result)) {
    +		*amplitude = 0.0;
    +		if (n < 0.0) {
    +			return -10.0;
    +		} else {
    +			return 10.0;
    +		}
    +	}*/
    +	*amplitude = 2.0 * PSI_Xn / sqrt(PSI_Yn);
    +	return result;
     }
    diff --git a/src/mod/applications/mod_avmd/avmd_desa2_tweaked.h b/src/mod/applications/mod_avmd/avmd_desa2_tweaked.h
    index ac6d6fc4d88..38d788cde4c 100644
    --- a/src/mod/applications/mod_avmd/avmd_desa2_tweaked.h
    +++ b/src/mod/applications/mod_avmd/avmd_desa2_tweaked.h
    @@ -10,7 +10,7 @@
      *
      * Contributor(s):
      *
    - * Piotr Gregor     
    + * Piotr Gregor 
      *
      * @date    20 Mar 2016
      */
    diff --git a/src/mod/applications/mod_avmd/avmd_fast_acosf.c b/src/mod/applications/mod_avmd/avmd_fast_acosf.c
    index b0d8655d6e4..572c6a84f91 100644
    --- a/src/mod/applications/mod_avmd/avmd_fast_acosf.c
    +++ b/src/mod/applications/mod_avmd/avmd_fast_acosf.c
    @@ -2,7 +2,7 @@
      * Contributor(s):
      *
      * Eric des Courtis 
    - * Piotr Gregor     
    + * Piotr Gregor 
      */
     
     
    @@ -14,7 +14,7 @@
     #include 
     
     #ifndef _MSC_VER
    -    #include 
    +	#include 
     #endif
     
     #include 
    @@ -22,7 +22,7 @@
     #include 
     
     #ifndef _MSC_VER
    -    #include 
    +	#include 
     #endif
     
     #include 
    @@ -31,7 +31,7 @@
     #include 
     
     #ifndef _MSC_VER
    -    #include 
    +	#include 
     #endif
     
     #include "avmd_fast_acosf.h"
    @@ -39,8 +39,8 @@
     
     
     typedef union {
    -    uint32_t i;
    -    float f;
    +	uint32_t i;
    +	float f;
     } float_conv_t;
     
     /*
    @@ -58,14 +58,14 @@ typedef union {
     #define ACOS_TABLE_CONST_EXPONENT_BITS (3)
     #define ACOS_TABLE_DISCARDED_BITS (3)
     /* rosolution:
    -    3: 15 728 640 indices spreading range [0.0, 1.0], table size on disk 134 217 728 bytes (default)
    -    4:  7 364 320 indices spreading range [0.0, 1.0], table size on disk  67 108 864 bytes
    -    5:  3 932 160 indices spreading range [0.0, 1.0], table size on disk  33 554 432 bytes
    -    12:    30 720 indices spreading range [0.0, 1.0], table size on disk     262 144 bytes
    -    16:     1 920 indices spreading range [0.0, 1.0], table size on disk      16 384 bytes
    -    20:       120 indices spreading range [0.0, 1.0], table size on disk       1 024 bytes
    -    24:         7 indices spreading range [0.0, 1.0], table size on disk          64 bytes
    -    26:         1 indices spreading range [0.0, 1.0], table size on disk          16 bytes
    +	3: 15 728 640 indices spreading range [0.0, 1.0], table size on disk 134 217 728 bytes (default)
    +	4:  7 364 320 indices spreading range [0.0, 1.0], table size on disk  67 108 864 bytes
    +	5:  3 932 160 indices spreading range [0.0, 1.0], table size on disk  33 554 432 bytes
    +	12:    30 720 indices spreading range [0.0, 1.0], table size on disk     262 144 bytes
    +	16:     1 920 indices spreading range [0.0, 1.0], table size on disk      16 384 bytes
    +	20:       120 indices spreading range [0.0, 1.0], table size on disk       1 024 bytes
    +	24:         7 indices spreading range [0.0, 1.0], table size on disk          64 bytes
    +	26:         1 indices spreading range [0.0, 1.0], table size on disk          16 bytes
     */
     #define ACOS_TABLE_FREE_EXPONENT_BITS (7 - ACOS_TABLE_CONST_EXPONENT_BITS)
     #define ACOS_TABLE_DATA_BITS (31 - ACOS_TABLE_CONST_EXPONENT_BITS - ACOS_TABLE_DISCARDED_BITS)
    @@ -73,7 +73,7 @@ typedef union {
     
     #define VARIA_DATA_MASK (0x87FFFFFF & ~((1 << ACOS_TABLE_DISCARDED_BITS) - 1))
     #define CONST_DATA_MASK (((1 << ACOS_TABLE_CONST_EXPONENT_BITS) - 1) \
    -                                    << (ACOS_TABLE_DATA_BITS - 1 + ACOS_TABLE_DISCARDED_BITS))
    +									<< (ACOS_TABLE_DATA_BITS - 1 + ACOS_TABLE_DISCARDED_BITS))
     
     #define SIGN_UNPACK_MASK (1 << (ACOS_TABLE_DATA_BITS - 1))
     #define DATA_UNPACK_MASK ((1 << (ACOS_TABLE_DATA_BITS - 1)) - 1)
    @@ -105,107 +105,107 @@ dump_table_summary(void);
     
     extern int compute_table(void)
     {
    -    uint32_t i;
    -    float   f;
    -    FILE    *acos_table_file;
    -    size_t  res;
    -
    -    acos_table_file = fopen(ACOS_TABLE_FILENAME, "w");
    -
    -    for (i = 0; i < ACOS_TABLE_LENGTH; i++) {
    -        f = acosf(float_from_index(i));
    -        res = fwrite(&f, sizeof(f), 1, acos_table_file);
    -        if (res != 1) {
    -            goto fail;
    -        }
    -    }
    -
    -    res = fclose(acos_table_file);
    -    if (res != 0) {
    -        return -2;
    -    }
    -    return 0;
    +	uint32_t i;
    +	float f;
    +	FILE *acos_table_file;
    +	size_t res;
    +
    +	acos_table_file = fopen(ACOS_TABLE_FILENAME, "w");
    +
    +	for (i = 0; i < ACOS_TABLE_LENGTH; i++) {
    +		f = acosf(float_from_index(i));
    +		res = fwrite(&f, sizeof(f), 1, acos_table_file);
    +		if (res != 1) {
    +			goto fail;
    +		}
    +	}
    +
    +	res = fclose(acos_table_file);
    +	if (res != 0) {
    +		return -2;
    +	}
    +	return 0;
     
     fail:
    -    fclose(acos_table_file);
    -    return -1;
    +	fclose(acos_table_file);
    +	return -1;
     }
     
     extern int init_fast_acosf(void)
     {
    -    int     ret, errsv;
    -    FILE    *acos_fp;
    -    char    err[150];
    -
    -    if (acos_table == NULL) {
    -        ret = access(ACOS_TABLE_FILENAME, F_OK);
    -        if (ret == -1) {
    -            /* file doesn't exist, bad permissions,
    -             * or some other error occured */
    -            errsv = errno;
    -            strerror_r(errsv, err, 150);
    -            if (errsv != ENOENT) return -1;
    -            else {
    -	            switch_log_printf(
    -		            SWITCH_CHANNEL_LOG,
    -		            SWITCH_LOG_NOTICE,
    -		            "File [%s] doesn't exist. Creating file...\n", ACOS_TABLE_FILENAME
    -		        );
    -                ret = compute_table();
    -                if (ret != 0) return -2;
    -            }
    -        } else {
    -	        switch_log_printf(
    -	            SWITCH_CHANNEL_LOG,
    -		        SWITCH_LOG_INFO,
    -		        "Using previously created file [%s]\n", ACOS_TABLE_FILENAME
    -		    );
    -        }
    -    }
    -
    -    acos_fp = fopen(ACOS_TABLE_FILENAME, "r");
    -    if (acos_fp == NULL) return -3;
    -    /* can't fail */
    -    acos_fd = fileno(acos_fp);
    -    acos_table = (float *) mmap(
    -            NULL,                               /* kernel chooses the address at which to create the mapping */
    -            ACOS_TABLE_LENGTH * sizeof(float), PROT_READ, MAP_SHARED, acos_fd, 0);
    -    if (acos_table == MAP_FAILED) return -4;
    -
    -    return 0;
    +	int ret, errsv;
    +	FILE *acos_fp;
    +	char err[150];
    +
    +	if (acos_table == NULL) {
    +		ret = access(ACOS_TABLE_FILENAME, F_OK);
    +		if (ret == -1) {
    +			/* file doesn't exist, bad permissions,
    +			 * or some other error occured */
    +			errsv = errno;
    +			strerror_r(errsv, err, 150);
    +			if (errsv != ENOENT) return -1;
    +			else {
    +				switch_log_printf(
    +					SWITCH_CHANNEL_LOG,
    +					SWITCH_LOG_NOTICE,
    +					"File [%s] doesn't exist. Creating file...\n", ACOS_TABLE_FILENAME
    +				);
    +				ret = compute_table();
    +				if (ret != 0) return -2;
    +			}
    +		} else {
    +			switch_log_printf(
    +				SWITCH_CHANNEL_LOG,
    +				SWITCH_LOG_INFO,
    +				"Using previously created file [%s]\n", ACOS_TABLE_FILENAME
    +			);
    +		}
    +	}
    +
    +	acos_fp = fopen(ACOS_TABLE_FILENAME, "r");
    +	if (acos_fp == NULL) return -3;
    +	/* can't fail */
    +	acos_fd = fileno(acos_fp);
    +	acos_table = (float *) mmap(
    +			NULL,							   /* kernel chooses the address at which to create the mapping */
    +			ACOS_TABLE_LENGTH * sizeof(float), PROT_READ, MAP_SHARED, acos_fd, 0);
    +	if (acos_table == MAP_FAILED) return -4;
    +
    +	return 0;
     }
     
     extern int destroy_fast_acosf(void)
     {
    -    if (munmap(acos_table, ACOS_TABLE_LENGTH) == -1) return -1;
    -    if (acos_fd != -1) {
    -        if (close(acos_fd) == -1) return -2;
    -    }
    -    /* disable use of fast arc cosine file */
    -    acos_table = NULL;
    -
    -    return 0;
    +	if (munmap(acos_table, ACOS_TABLE_LENGTH) == -1) return -1;
    +	if (acos_fd != -1) {
    +		if (close(acos_fd) == -1) return -2;
    +	}
    +	/* disable use of fast arc cosine file */
    +	acos_table = NULL;
    +
    +	return 0;
     }
     
     extern float fast_acosf(float x)
     {
    -    return acos_table[index_from_float(x)];
    +	return acos_table[index_from_float(x)];
     }
     
     static uint32_t index_from_float(float f)
     {
    -    float_conv_t d;
    -    d.f = f;
    -    return ((d.i & SIGN_MASK) >> (32 - ACOS_TABLE_DATA_BITS)) |
    -        ((d.i & DATA_MASK) >> ACOS_TABLE_DISCARDED_BITS);
    +	float_conv_t d;
    +	d.f = f;
    +	return ((d.i & SIGN_MASK) >> (32 - ACOS_TABLE_DATA_BITS)) |
    +		((d.i & DATA_MASK) >> ACOS_TABLE_DISCARDED_BITS);
     }
     
     static float float_from_index(uint32_t d)
     {
    -    float_conv_t f;
    -    f.i = ((d & SIGN_UNPACK_MASK) << (32 - ACOS_TABLE_DATA_BITS)) |
    -        ((d & DATA_UNPACK_MASK) << ACOS_TABLE_DISCARDED_BITS) | CONST_DATA_MASK;
    -    return f.f;
    +	float_conv_t f;
    +	f.i = ((d & SIGN_UNPACK_MASK) << (32 - ACOS_TABLE_DATA_BITS)) |
    +		((d & DATA_UNPACK_MASK) << ACOS_TABLE_DISCARDED_BITS) | CONST_DATA_MASK;
    +	return f.f;
     }
     
     #ifdef FAST_ACOSF_TESTING
    @@ -216,111 +216,111 @@ static float float_from_index(uint32_t d)
     static void
     debug_print(void)
     {
    -    INF(ACOS_TABLE_CONST_EXPONENT);
    -    INF(ACOS_TABLE_CONST_EXPONENT_BITS);
    -    INF(ACOS_TABLE_FREE_EXPONENT_BITS);
    -    INF(ACOS_TABLE_DISCARDED_BITS);
    -    INF(ACOS_TABLE_DATA_BITS);
    -    INF(ACOS_TABLE_LENGTH);
    -    INFX(VARIA_DATA_MASK);
    -    INFX(CONST_DATA_MASK);
    -    INFX(SIGN_UNPACK_MASK);
    -    INFX(DATA_UNPACK_MASK);
    -    INFX(SIGN_MASK);
    -    INFX(DATA_MASK);
    +	INF(ACOS_TABLE_CONST_EXPONENT);
    +	INF(ACOS_TABLE_CONST_EXPONENT_BITS);
    +	INF(ACOS_TABLE_FREE_EXPONENT_BITS);
    +	INF(ACOS_TABLE_DISCARDED_BITS);
    +	INF(ACOS_TABLE_DATA_BITS);
    +	INF(ACOS_TABLE_LENGTH);
    +	INFX(VARIA_DATA_MASK);
    +	INFX(CONST_DATA_MASK);
    +	INFX(SIGN_UNPACK_MASK);
    +	INFX(DATA_UNPACK_MASK);
    +	INFX(SIGN_MASK);
    +	INFX(DATA_MASK);
     }
     
     static void
     dump_table_summary(void)
     {
    -    uint32_t i, i_0, i_1, di;
    -    float f;
    -
    -    i = 1;
    -    i_0 = index_from_float(0.0);
    -    i_1 = index_from_float(1.0);
    -    di = (i_1 - i_0)/100;
    -    if (di == 0)  di = 1;
    -
    -    for (; i < ACOS_TABLE_LENGTH; i += di )
    -    {
    -        f = float_from_index(i);
    -        printf("-01i[%.10u] : ffi[%f] fa[%f] acos[%f]\n",
    -                i, f, fast_acosf(f), acos(f));
    -    }
    -
    -    i = 1;
    -    for (; i < ACOS_TABLE_LENGTH; i = (i << 1))
    -    {
    -        f = fast_acosf(float_from_index(i));
    -        printf("--i[%.10u] : fa[%f] ffi[%f]\n",
    -                i, f, float_from_index(i));
    -    }
    -
    -    f = 0.0;
    -    printf("i [%d] from float [%f]\n", index_from_float(f), f);
    -    f = 0.1;
    -    printf("i [%d] from float [%f]\n", index_from_float(f), f);
    -    f = 0.2;
    -    printf("i [%d] from float [%f]\n", index_from_float(f), f);
    -    f = 0.3;
    -    printf("i [%d] from float [%f]\n", index_from_float(f), f);
    -    f = 0.4;
    -    printf("i [%d] from float [%f]\n", index_from_float(f), f);
    -    f = 0.5;
    -    printf("i [%d] from float [%f]\n", index_from_float(f), f);
    -    f = 0.6;
    -    printf("i [%d] from float [%f]\n", index_from_float(f), f);
    -    f = 0.7;
    -    printf("i [%d] from float [%f]\n", index_from_float(f), f);
    -    f = 7.5;
    -    printf("i [%d] from float [%f]\n", index_from_float(f), f);
    -    f = 0.8;
    -    printf("i [%d] from float [%f]\n", index_from_float(f), f);
    -    f = 0.9;
    -    printf("i [%d] from float [%f]\n", index_from_float(f), f);
    -    f = 0.95;
    -    printf("i [%d] from float [%f]\n", index_from_float(f), f);
    -    f = 0.99;
    -    printf("i [%d] from float [%f]\n", index_from_float(f), f);
    -    f = 1.0;
    -    printf("i [%d] from float [%f]\n", index_from_float(f), f);
    -    f = 1.1;
    -    printf("i [%d] from float [%f]\n", index_from_float(f), f);
    -    f = 1.2;
    -    printf("i [%d] from float [%f]\n", index_from_float(f), f);
    -    f = 0.0;
    -    printf("i [%d] from float [%f]\n", index_from_float(f), f);
    -    f = -0.1;
    -    printf("i [%d] from float [%f]\n", index_from_float(f), f);
    -    f = -0.2;
    -    printf("i [%d] from float [%f]\n", index_from_float(f), f);
    -    f = -0.3;
    -    printf("i [%d] from float [%f]\n", index_from_float(f), f);
    -    f = -0.4;
    -    printf("i [%d] from float [%f]\n", index_from_float(f), f);
    -    f = -0.5;
    -    printf("i [%d] from float [%f]\n", index_from_float(f), f);
    -    f = -0.6;
    -    printf("i [%d] from float [%f]\n", index_from_float(f), f);
    -    f = -0.7;
    -    printf("i [%d] from float [%f]\n", index_from_float(f), f);
    -    f = -7.5;
    -    printf("i [%d] from float [%f]\n", index_from_float(f), f);
    -    f = -0.8;
    -    printf("i [%d] from float [%f]\n", index_from_float(f), f);
    -    f = -0.9;
    -    printf("i [%d] from float [%f]\n", index_from_float(f), f);
    -    f = -0.95;
    -    printf("i [%d] from float [%f]\n", index_from_float(f), f);
    -    f = -0.99;
    -    printf("i [%d] from float [%f]\n", index_from_float(f), f);
    -    f = -1.0;
    -    printf("i [%d] from float [%f]\n", index_from_float(f), f);
    -    f = -1.1;
    -    printf("i [%d] from float [%f]\n", index_from_float(f), f);
    -    f = -1.2;
    -    printf("i [%d] from float [%f]\n", index_from_float(f), f);
    +	uint32_t i, i_0, i_1, di;
    +	float f;
    +
    +	i = 1;
    +	i_0 = index_from_float(0.0);
    +	i_1 = index_from_float(1.0);
    +	di = (i_1 - i_0)/100;
    +	if (di == 0)  di = 1;
    +
    +	for (; i < ACOS_TABLE_LENGTH; i += di )
    +	{
    +		f = float_from_index(i);
    +		printf("-01i[%.10u] : ffi[%f] fa[%f] acos[%f]\n",
    +				i, f, fast_acosf(f), acos(f));
    +	}
    +
    +	i = 1;
    +	for (; i < ACOS_TABLE_LENGTH; i = (i << 1))
    +	{
    +		f = fast_acosf(float_from_index(i));
    +		printf("--i[%.10u] : fa[%f] ffi[%f]\n",
    +				i, f, float_from_index(i));
    +	}
    +
    +	f = 0.0;
    +	printf("i [%d] from float [%f]\n", index_from_float(f), f);
    +	f = 0.1;
    +	printf("i [%d] from float [%f]\n", index_from_float(f), f);
    +	f = 0.2;
    +	printf("i [%d] from float [%f]\n", index_from_float(f), f);
    +	f = 0.3;
    +	printf("i [%d] from float [%f]\n", index_from_float(f), f);
    +	f = 0.4;
    +	printf("i [%d] from float [%f]\n", index_from_float(f), f);
    +	f = 0.5;
    +	printf("i [%d] from float [%f]\n", index_from_float(f), f);
    +	f = 0.6;
    +	printf("i [%d] from float [%f]\n", index_from_float(f), f);
    +	f = 0.7;
    +	printf("i [%d] from float [%f]\n", index_from_float(f), f);
    +	f = 7.5;
    +	printf("i [%d] from float [%f]\n", index_from_float(f), f);
    +	f = 0.8;
    +	printf("i [%d] from float [%f]\n", index_from_float(f), f);
    +	f = 0.9;
    +	printf("i [%d] from float [%f]\n", index_from_float(f), f);
    +	f = 0.95;
    +	printf("i [%d] from float [%f]\n", index_from_float(f), f);
    +	f = 0.99;
    +	printf("i [%d] from float [%f]\n", index_from_float(f), f);
    +	f = 1.0;
    +	printf("i [%d] from float [%f]\n", index_from_float(f), f);
    +	f = 1.1;
    +	printf("i [%d] from float [%f]\n", index_from_float(f), f);
    +	f = 1.2;
    +	printf("i [%d] from float [%f]\n", index_from_float(f), f);
    +	f = 0.0;
    +	printf("i [%d] from float [%f]\n", index_from_float(f), f);
    +	f = -0.1;
    +	printf("i [%d] from float [%f]\n", index_from_float(f), f);
    +	f = -0.2;
    +	printf("i [%d] from float [%f]\n", index_from_float(f), f);
    +	f = -0.3;
    +	printf("i [%d] from float [%f]\n", index_from_float(f), f);
    +	f = -0.4;
    +	printf("i [%d] from float [%f]\n", index_from_float(f), f);
    +	f = -0.5;
    +	printf("i [%d] from float [%f]\n", index_from_float(f), f);
    +	f = -0.6;
    +	printf("i [%d] from float [%f]\n", index_from_float(f), f);
    +	f = -0.7;
    +	printf("i [%d] from float [%f]\n", index_from_float(f), f);
    +	f = -7.5;
    +	printf("i [%d] from float [%f]\n", index_from_float(f), f);
    +	f = -0.8;
    +	printf("i [%d] from float [%f]\n", index_from_float(f), f);
    +	f = -0.9;
    +	printf("i [%d] from float [%f]\n", index_from_float(f), f);
    +	f = -0.95;
    +	printf("i [%d] from float [%f]\n", index_from_float(f), f);
    +	f = -0.99;
    +	printf("i [%d] from float [%f]\n", index_from_float(f), f);
    +	f = -1.0;
    +	printf("i [%d] from float [%f]\n", index_from_float(f), f);
    +	f = -1.1;
    +	printf("i [%d] from float [%f]\n", index_from_float(f), f);
    +	f = -1.2;
    +	printf("i [%d] from float [%f]\n", index_from_float(f), f);
     }
     
     #endif  /* FAST_ACOSF_TESTING */
    diff --git a/src/mod/applications/mod_avmd/avmd_fast_acosf.h b/src/mod/applications/mod_avmd/avmd_fast_acosf.h
    index 8de7954def8..93e43ba4385 100644
    --- a/src/mod/applications/mod_avmd/avmd_fast_acosf.h
    +++ b/src/mod/applications/mod_avmd/avmd_fast_acosf.h
    @@ -5,7 +5,7 @@
      * Contributor(s):
      *
      * Eric des Courtis 
    - * Piotr Gregor     
    + * Piotr Gregor 
      */
     
     
    diff --git a/src/mod/applications/mod_avmd/avmd_fir.h b/src/mod/applications/mod_avmd/avmd_fir.h
    index 25a2c23bb32..12dd1019ae1 100644
    --- a/src/mod/applications/mod_avmd/avmd_fir.h
    +++ b/src/mod/applications/mod_avmd/avmd_fir.h
    @@ -3,9 +3,9 @@
      *
      * Contributor(s):
      *
    - * Piotr Gregor     
    + * Piotr Gregor 
      *
    - * @date    23 Mar 2016
    + * @date 23 Mar 2016
      */
     
     
    @@ -15,7 +15,7 @@
     
     #define AVMD_MAX(a, b) (a) > (b) ? (a) : (b)
     #define AVMD_MEDIAN_FILTER(a, b, c) (a) > (b) ? ((a) > (c) ? \
    -                AVMD_MAX((b), (c)) : a) : ((b) > (c) ? AVMD_MAX((a), (c)) : (b))
    +				AVMD_MAX((b), (c)) : a) : ((b) > (c) ? AVMD_MAX((a), (c)) : (b))
     
     
     #endif
    diff --git a/src/mod/applications/mod_avmd/avmd_goertzel.c b/src/mod/applications/mod_avmd/avmd_goertzel.c
    index 5f05c00b220..15650397bca 100644
    --- a/src/mod/applications/mod_avmd/avmd_goertzel.c
    +++ b/src/mod/applications/mod_avmd/avmd_goertzel.c
    @@ -8,30 +8,30 @@
     #include 
     
     #ifndef __AVMD_GOERTZEL_H__
    -    #include "avmd_goertzel.h"
    +	#include "avmd_goertzel.h"
     #endif
     
     #ifndef __AVMD_BUFFER_H__
    -    #include "avmd_buffer.h"
    +	#include "avmd_buffer.h"
     #endif
     
     
     extern double avmd_goertzel(circ_buffer_t *b, size_t pos, double f, size_t num)
     {
    -    double s = 0.0;
    -    double p = 0.0;
    -    double p2 = 0.0;
    -    double coeff;
    -    size_t i;
    -
    -    coeff = 2.0 * cos(2.0 * M_PI * f);
    -
    -    for (i = 0; i < num; i++) {
    -        /* TODO: optimize to avoid GET_SAMPLE when possible */
    -        s = GET_SAMPLE(b, i + pos) + (coeff * p) - p2;
    -        p2 = p;
    -        p = s;
    -    }
    -
    -    return (p2 * p2) + (p * p) - (coeff * p2 * p);
    +	double s = 0.0;
    +	double p = 0.0;
    +	double p2 = 0.0;
    +	double coeff;
    +	size_t i;
    +
    +	coeff = 2.0 * cos(2.0 * M_PI * f);
    +
    +	for (i = 0; i < num; i++) {
    +		/* TODO: optimize to avoid GET_SAMPLE when possible */
    +		s = GET_SAMPLE(b, i + pos) + (coeff * p) - p2;
    +		p2 = p;
    +		p = s;
    +	}
    +
    +	return (p2 * p2) + (p * p) - (coeff * p2 * p);
     }
    diff --git a/src/mod/applications/mod_avmd/avmd_goertzel.h b/src/mod/applications/mod_avmd/avmd_goertzel.h
    index 21ba3f51541..be7920c933e 100644
    --- a/src/mod/applications/mod_avmd/avmd_goertzel.h
    +++ b/src/mod/applications/mod_avmd/avmd_goertzel.h
    @@ -12,14 +12,14 @@
     
     
     #ifndef _MSC_VER
    -    #include 
    +	#include 
     #endif
     
     #include "avmd_buffer.h"
     
     #if !defined(M_PI)
    -    /* C99 systems may not define M_PI */
    -    #define M_PI 3.14159265358979323846264338327
    +	/* C99 systems may not define M_PI */
    +	#define M_PI 3.14159265358979323846264338327
     #endif
     
     
    diff --git a/src/mod/applications/mod_avmd/avmd_options.h b/src/mod/applications/mod_avmd/avmd_options.h
    index a580af811ef..f1c23dcc552 100644
    --- a/src/mod/applications/mod_avmd/avmd_options.h
    +++ b/src/mod/applications/mod_avmd/avmd_options.h
    @@ -5,7 +5,7 @@
      *
      * Contributor(s):
      *
    - * Piotr Gregor     
    + * Piotr Gregor 
      */
     
     
    diff --git a/src/mod/applications/mod_avmd/avmd_psi.h b/src/mod/applications/mod_avmd/avmd_psi.h
    index dbbf401282b..49f22090a93 100644
    --- a/src/mod/applications/mod_avmd/avmd_psi.h
    +++ b/src/mod/applications/mod_avmd/avmd_psi.h
    @@ -2,7 +2,7 @@
      * Contributor(s):
      *
      * Eric des Courtis 
    - * Piotr Gregor     
    + * Piotr Gregor 
      */
     
     
    diff --git a/src/mod/applications/mod_avmd/avmd_sma_buf.h b/src/mod/applications/mod_avmd/avmd_sma_buf.h
    index e3051c97313..0ee1aa5a9ec 100644
    --- a/src/mod/applications/mod_avmd/avmd_sma_buf.h
    +++ b/src/mod/applications/mod_avmd/avmd_sma_buf.h
    @@ -4,7 +4,7 @@
      * Contributor(s):
      *
      * Eric des Courtis 
    - * Piotr Gregor     
    + * Piotr Gregor 
      */
     
     
    @@ -22,22 +22,22 @@
     #include "avmd_buffer.h"
     
     typedef struct {
    -    size_t len;
    -    BUFF_TYPE *data;
    -    BUFF_TYPE sma;
    -    size_t pos;
    -    size_t lpos;
    +	size_t len;
    +	BUFF_TYPE *data;
    +	BUFF_TYPE sma;
    +	size_t pos;
    +	size_t lpos;
     } sma_buffer_t;
     
     #define INIT_SMA_BUFFER(b, l, s) \
    -    { \
    +	{ \
     	(void)memset((b), 0, sizeof(sma_buffer_t)); \
     	(b)->len = (l); \
     	(b)->data = (BUFF_TYPE *)switch_core_session_alloc((s), sizeof(BUFF_TYPE) * (l)); \
     	(b)->sma = 0.0; \
     	(b)->pos = 0; \
     	(b)->lpos = 0; \
    -    }
    +	}
     
     #define GET_SMA_SAMPLE(b, p) ((b)->data[(p) % (b)->len])
     #define SET_SMA_SAMPLE(b, p, v) ((b)->data[(p) % (b)->len] = (v))
    @@ -45,33 +45,33 @@ typedef struct {
     #define GET_CURRENT_SMA_LPOS(b) ((b)->lpos)
     
     #define INC_SMA_POS(b) \
    -    { \
    +	{ \
     	((b)->lpos + 1 < 2 * (b)->len) ? ((b)->lpos++) : ((b)->lpos = (b)->len); \
     	(b)->pos = (b)->lpos % (b)->len; \
    -    }
    +	}
     
     #define APPEND_SMA_VAL(b, v) \
    -    { \
    +	{ \
     	(b)->sma -= ((b)->data[(b)->pos] / (BUFF_TYPE)(b)->len); \
     	(b)->data[(b)->pos] = (v); \
     	(((b)->lpos) >= ((b)->len)) ? ((b)->sma += ((b)->data[(b)->pos] / (BUFF_TYPE)(b)->len)) : \
    -        ((b)->sma = ((((b)->sma)*((b)->pos)) + ((b)->data[(b)->pos])) / ((BUFF_TYPE)(((b)->pos) + 1)))  ; \
    +		((b)->sma = ((((b)->sma)*((b)->pos)) + ((b)->data[(b)->pos])) / ((BUFF_TYPE)(((b)->pos) + 1)))  ; \
     	INC_SMA_POS(b); \
    -    }
    +	}
     
     #define RESET_SMA_BUFFER(b) \
    -    { \
    +	{ \
     	(b)->sma = 0.0; \
     	(void)memset((b)->data, 0, sizeof(BUFF_TYPE) * (b)->len); \
     	(b)->pos = 0; \
     	(b)->lpos = 0; \
    -    }
    +	}
     
     /*
     #define DESTROY_SMA_BUFFER(b) \
    -    do{ \
    +	do{ \
     	free((b)->data); \
    -    }while(0);
    +	}while(0);
     
     */
     
    @@ -83,19 +83,19 @@ typedef struct {
     
     int main(void)
     {
    -    int i;
    -    sma_buffer_t b;
    +	int i;
    +	sma_buffer_t b;
     
    -    INIT_SMA_BUFFER(&b, 100);
    +	INIT_SMA_BUFFER(&b, 100);
     
    -    for(i = 0; i < 20; i++){
    +	for(i = 0; i < 20; i++){
     	APPEND_SMA_VAL(&b, 100.0);
     	printf("SMA = %lf\n", b.sma);
    -    }
    +	}
     
    -    DESTROY_SMA_BUFFER(&b);
    +	DESTROY_SMA_BUFFER(&b);
     
    -    return EXIT_SUCCESS;
    +	return EXIT_SUCCESS;
     }
     
     */
    diff --git a/src/mod/applications/mod_avmd/conf/autoload_configs/avmd.conf.xml b/src/mod/applications/mod_avmd/conf/autoload_configs/avmd.conf.xml
    index 86b2500bad2..cfd710f530d 100644
    --- a/src/mod/applications/mod_avmd/conf/autoload_configs/avmd.conf.xml
    +++ b/src/mod/applications/mod_avmd/conf/autoload_configs/avmd.conf.xml
    @@ -1,74 +1,74 @@
     
    -    
    +	
     
    -    
    +	
     
     
    -        
    +		
     
    -            
    -            
    +			
    +			
     
    -            
    -            
    +			
    +			
     
    -            
    -            
    -        
    +			
    +			
    +		
     
     
    -        
    +		
     
    -            
    -            
    +			
    +			
     
    -            
    -            
    +			
    +			
     
    -            
    -            
    +			
    +			
     
    -            
    -            
    +			
    +			
     
    -            
    -            
    +			
    +			
     
    -            
    -            
    +			
    +			
     
    -            
    -            
    +			
    +			
     
    -            
    -            
    +			
    +			
     
    -            
    -            
    +			
    +			
     
    -            
    -            
    +			
    +			
     
    -        
    -    
    +		
    +	
     
     
    diff --git a/src/mod/applications/mod_avmd/conf/avmd_test_dialplan.xml b/src/mod/applications/mod_avmd/conf/avmd_test_dialplan.xml
    index de567a8350b..2a85ec7a607 100644
    --- a/src/mod/applications/mod_avmd/conf/avmd_test_dialplan.xml
    +++ b/src/mod/applications/mod_avmd/conf/avmd_test_dialplan.xml
    @@ -1,840 +1,840 @@
     
    -    
    -      
    -          
    -          
    -          
    -          
    -      
    -  
    -    
    -      
    -          
    -          
    -          
    -          
    -      
    -  
    -    
    -      
    -          
    -          
    -          
    -          
    -      
    -  
    -    
    -      
    -          
    -          
    -          
    -        
    -      
    -  
    +	
    +		
    +			
    +			
    +			
    +			
    +		
    +	
    +	
    +		
    +			
    +			
    +			
    +			
    +		
    +	
    +	
    +		
    +			
    +			
    +			
    +			
    +		
    +	
    +	
    +		
    +			
    +			
    +			
    +		
    +		
    +	
     
    -  
    -      
    -          
    -          
    -          
    -          
    -      
    -  
    -  
    -      
    -          
    -          
    -          
    -          
    -      
    -  
    -  
    -      
    -          
    -          
    -          
    -          
    -      
    -  
    -  
    -      
    -          
    -          
    -          
    -          
    -      
    -  
    -  
    -      
    -          
    -          
    -          
    -          
    -      
    -  
    -  
    -      
    -          
    -          
    -          
    -          
    -      
    -  
    -  
    -      
    -          
    -          
    -          
    -          
    -      
    -  
    -  
    -      
    -          
    -          
    -          
    -          
    -      
    -  
    -  
    -      
    -          
    -          
    -          
    -          
    -      
    -  
    -  
    -      
    -          
    -          
    -          
    -          
    -      
    -  
    -  
    -      
    -          
    -          
    -          
    -          
    -      
    -  
    -  
    -      
    -          
    -          
    -          
    -          
    -      
    -  
    -  
    -      
    -          
    -          
    -          
    -          
    -      
    -  
    -  
    -      
    -          
    -          
    -          
    -          
    -      
    -  
    -  
    -      
    -          
    -          
    -          
    -          
    -      
    -  
    -  
    -      
    -          
    -          
    -          
    -          
    -      
    -  
    -  
    -      
    -          
    -          
    -          
    -          
    -      
    -  
    -  
    -      
    -          
    -          
    -          
    -          
    -      
    -  
    -  
    -      
    -          
    -          
    -          
    -          
    -      
    -  
    -  
    -      
    -          
    -          
    -          
    -          
    -      
    -  
    -  
    -      
    -          
    -          
    -          
    -          
    -      
    -  
    +	
    +		
    +			
    +			
    +			
    +			
    +		
    +	
    +	
    +		
    +			
    +			
    +			
    +			
    +		
    +	
    +	
    +		
    +			
    +			
    +			
    +			
    +		
    +	
    +	
    +		
    +			
    +			
    +			
    +			
    +		
    +	
    +	
    +		
    +			
    +			
    +			
    +			
    +		
    +	
    +	
    +		
    +			
    +			
    +			
    +			
    +		
    +	
    +	
    +		
    +			
    +			
    +			
    +			
    +		
    +	
    +	
    +		
    +			
    +			
    +			
    +			
    +		
    +	
    +	
    +		
    +			
    +			
    +			
    +			
    +		
    +	
    +	
    +		
    +			
    +			
    +			
    +			
    +		
    +	
    +	
    +		
    +			
    +			
    +			
    +			
    +		
    +	
    +	
    +		
    +			
    +			
    +			
    +			
    +		
    +	
    +	
    +		
    +			
    +			
    +			
    +			
    +		
    +	
    +	
    +		
    +			
    +			
    +			
    +			
    +		
    +	
    +	
    +		
    +			
    +			
    +			
    +			
    +		
    +	
    +	
    +		
    +			
    +			
    +			
    +			
    +		
    +	
    +	
    +		
    +			
    +			
    +			
    +			
    +		
    +	
    +	
    +		
    +			
    +			
    +			
    +			
    +		
    +	
    +	
    +		
    +			
    +			
    +			
    +			
    +		
    +	
    +	
    +		
    +			
    +			
    +			
    +			
    +		
    +	
    +	
    +		
    +			
    +			
    +			
    +			
    +		
    +	
     
    -  
    -      
    -          
    -          
    -          
    -          
    -      
    -  
    -  
    -      
    -          
    -          
    -          
    -          
    -      
    -  
    -  
    -      
    -          
    -          
    -          
    -          
    -      
    -  
    -  
    -      
    -          
    -          
    -          
    -          
    -      
    -  
    -  
    -      
    -          
    -          
    -          
    -          
    -      
    -  
    -  
    -      
    -          
    -          
    -          
    -          
    -      
    -  
    -  
    -      
    -          
    -          
    -          
    -          
    -      
    -  
    -  
    -      
    -          
    -          
    -          
    -          
    -      
    -  
    -  
    -      
    -          
    -          
    -          
    -          
    -      
    -  
    -  
    -      
    -          
    -          
    -          
    -          
    -      
    -  
    -  
    -      
    -          
    -          
    -          
    -          
    -      
    -  
    -  
    -      
    -          
    -          
    -          
    -          
    -      
    -  
    -  
    -      
    -          
    -          
    -          
    -          
    -      
    -  
    -  
    -      
    -          
    -          
    -          
    -          
    -      
    -  
    -  
    -      
    -          
    -          
    -          
    -          
    -      
    -  
    -  
    -      
    -          
    -          
    -          
    -          
    -      
    -  
    -  
    -      
    -          
    -          
    -          
    -          
    -      
    -  
    -  
    -      
    -          
    -          
    -          
    -          
    -      
    -  
    -  
    -      
    -          
    -          
    -          
    -          
    -      
    -  
    -  
    -      
    -          
    -          
    -          
    -          
    -      
    -  
    -  
    -      
    -          
    -          
    -          
    -          
    -      
    -  
    +	
    +		
    +			
    +			
    +			
    +			
    +		
    +	
    +	
    +		
    +			
    +			
    +			
    +			
    +		
    +	
    +	
    +		
    +			
    +			
    +			
    +			
    +		
    +	
    +	
    +		
    +			
    +			
    +			
    +			
    +		
    +	
    +	
    +		
    +			
    +			
    +			
    +			
    +		
    +	
    +	
    +		
    +			
    +			
    +			
    +			
    +		
    +	
    +	
    +		
    +			
    +			
    +			
    +			
    +		
    +	
    +	
    +		
    +			
    +			
    +			
    +			
    +		
    +	
    +	
    +		
    +			
    +			
    +			
    +			
    +		
    +	
    +	
    +		
    +			
    +			
    +			
    +			
    +		
    +	
    +	
    +		
    +			
    +			
    +			
    +			
    +		
    +	
    +	
    +		
    +			
    +			
    +			
    +			
    +		
    +	
    +	
    +		
    +			
    +			
    +			
    +			
    +		
    +	
    +	
    +		
    +			
    +			
    +			
    +			
    +		
    +	
    +	
    +		
    +			
    +			
    +			
    +			
    +		
    +	
    +	
    +		
    +			
    +			
    +			
    +			
    +		
    +	
    +	
    +		
    +			
    +			
    +			
    +			
    +		
    +	
    +	
    +		
    +			
    +			
    +			
    +			
    +		
    +	
    +	
    +		
    +			
    +			
    +			
    +			
    +		
    +	
    +	
    +		
    +			
    +			
    +			
    +			
    +		
    +	
    +	
    +		
    +			
    +			
    +			
    +			
    +		
    +	
     
    -  
    -      
    -          
    -          
    -          
    -          
    -      
    -  
    -  
    -      
    -          
    -          
    -          
    -          
    -      
    -  
    -  
    -      
    -          
    -          
    -          
    -          
    -      
    -  
    -  
    -      
    -          
    -          
    -          
    -          
    -      
    -  
    -  
    -      
    -          
    -          
    -          
    -          
    -      
    -  
    -  
    -      
    -          
    -          
    -          
    -          
    -      
    -  
    -  
    -      
    -          
    -          
    -          
    -          
    -      
    -  
    -  
    -      
    -          
    -          
    -          
    -          
    -      
    -  
    -  
    -      
    -          
    -          
    -          
    -          
    -      
    -  
    -  
    -      
    -          
    -          
    -          
    -          
    -      
    -  
    -  
    -      
    -          
    -          
    -          
    -          
    -      
    -  
    -  
    -      
    -          
    -          
    -          
    -          
    -      
    -  
    -  
    -      
    -          
    -          
    -          
    -          
    -      
    -  
    -  
    -      
    -          
    -          
    -          
    -          
    -      
    -  
    -  
    -      
    -          
    -          
    -          
    -          
    -      
    -  
    -  
    -      
    -          
    -          
    -          
    -          
    -      
    -  
    -  
    -      
    -          
    -          
    -          
    -          
    -      
    -  
    -  
    -      
    -          
    -          
    -          
    -          
    -      
    -  
    -  
    -      
    -          
    -          
    -          
    -          
    -      
    -  
    -  
    -      
    -          
    -          
    -          
    -          
    -      
    -  
    -  
    -      
    -          
    -          
    -          
    -          
    -      
    -  
    +	
    +		
    +			
    +			
    +			
    +			
    +		
    +	
    +	
    +		
    +			
    +			
    +			
    +			
    +		
    +	
    +	
    +		
    +			
    +			
    +			
    +			
    +		
    +	
    +	
    +		
    +			
    +			
    +			
    +			
    +		
    +	
    +	
    +		
    +			
    +			
    +			
    +			
    +		
    +	
    +	
    +		
    +			
    +			
    +			
    +			
    +		
    +	
    +	
    +		
    +			
    +			
    +			
    +			
    +		
    +	
    +	
    +		
    +			
    +			
    +			
    +			
    +		
    +	
    +	
    +		
    +			
    +			
    +			
    +			
    +		
    +	
    +	
    +		
    +			
    +			
    +			
    +			
    +		
    +	
    +	
    +		
    +			
    +			
    +			
    +			
    +		
    +	
    +	
    +		
    +			
    +			
    +			
    +			
    +		
    +	
    +	
    +		
    +			
    +			
    +			
    +			
    +		
    +	
    +	
    +		
    +			
    +			
    +			
    +			
    +		
    +	
    +	
    +		
    +			
    +			
    +			
    +			
    +		
    +	
    +	
    +		
    +			
    +			
    +			
    +			
    +		
    +	
    +	
    +		
    +			
    +			
    +			
    +			
    +		
    +	
    +	
    +		
    +			
    +			
    +			
    +			
    +		
    +	
    +	
    +		
    +			
    +			
    +			
    +			
    +		
    +	
    +	
    +		
    +			
    +			
    +			
    +			
    +		
    +	
    +	
    +		
    +			
    +			
    +			
    +			
    +		
    +	
     
    -  
    -      
    -          
    -          
    -          
    -          
    -      
    -  
    -  
    -      
    -          
    -          
    -          
    -          
    -      
    -  
    -  
    -      
    -          
    -          
    -          
    -          
    -      
    -  
    -  
    -      
    -          
    -          
    -          
    -          
    -      
    -  
    -  
    -      
    -          
    -          
    -          
    -          
    -      
    -  
    -  
    -      
    -          
    -          
    -          
    -          
    -      
    -  
    -  
    -      
    -          
    -          
    -          
    -          
    -      
    -  
    -  
    -      
    -          
    -          
    -          
    -          
    -      
    -  
    -  
    -      
    -          
    -          
    -          
    -          
    -      
    -  
    -  
    -      
    -          
    -          
    -          
    -          
    -      
    -  
    -  
    -      
    -          
    -          
    -          
    -          
    -      
    -  
    -  
    -      
    -          
    -          
    -          
    -          
    -      
    -  
    -  
    -      
    -          
    -          
    -          
    -          
    -      
    -  
    -  
    -      
    -          
    -          
    -          
    -          
    -      
    -  
    -  
    -      
    -          
    -          
    -          
    -          
    -      
    -  
    +	
    +		
    +			
    +			
    +			
    +			
    +		
    +	
    +	
    +		
    +			
    +			
    +			
    +			
    +		
    +	
    +	
    +		
    +			
    +			
    +			
    +			
    +		
    +	
    +	
    +		
    +			
    +			
    +			
    +			
    +		
    +	
    +	
    +		
    +			
    +			
    +			
    +			
    +		
    +	
    +	
    +		
    +			
    +			
    +			
    +			
    +		
    +	
    +	
    +		
    +			
    +			
    +			
    +			
    +		
    +	
    +	
    +		
    +			
    +			
    +			
    +			
    +		
    +	
    +	
    +		
    +			
    +			
    +			
    +			
    +		
    +	
    +	
    +		
    +			
    +			
    +			
    +			
    +		
    +	
    +	
    +		
    +			
    +			
    +			
    +			
    +		
    +	
    +	
    +		
    +			
    +			
    +			
    +			
    +		
    +	
    +	
    +		
    +			
    +			
    +			
    +			
    +		
    +	
    +	
    +		
    +			
    +			
    +			
    +			
    +		
    +	
    +	
    +		
    +			
    +			
    +			
    +			
    +		
    +	
     
    -  
    -      
    -          
    -          
    -          
    -          
    -      
    -  
    -  
    -      
    -          
    -          
    -          
    -          
    -      
    -  
    -  
    -      
    -          
    -          
    -          
    -          
    -      
    -  
    -  
    -      
    -          
    -          
    -          
    -          
    -      
    -  
    -  
    -      
    -          
    -          
    -          
    -          
    -      
    -  
    -  
    -      
    -          
    -          
    -          
    -          
    -      
    -  
    -  
    -      
    -          
    -          
    -          
    -          
    -      
    -  
    -  
    -      
    -          
    -          
    -          
    -          
    -      
    -  
    -  
    -      
    -          
    -          
    -          
    -          
    -      
    -  
    -  
    -      
    -          
    -          
    -          
    -          
    -      
    -  
    -  
    -      
    -          
    -          
    -          
    -          
    -      
    -  
    -  
    -      
    -          
    -          
    -          
    -          
    -      
    -  
    -  
    -      
    -          
    -          
    -          
    -          
    -      
    -  
    -  
    -      
    -          
    -          
    -          
    -          
    -      
    -  
    -  
    -      
    -          
    -          
    -          
    -          
    -      
    -  
    +	
    +		
    +			
    +			
    +			
    +			
    +		
    +	
    +	
    +		
    +			
    +			
    +			
    +			
    +		
    +	
    +	
    +		
    +			
    +			
    +			
    +			
    +		
    +	
    +	
    +		
    +			
    +			
    +			
    +			
    +		
    +	
    +	
    +		
    +			
    +			
    +			
    +			
    +		
    +	
    +	
    +		
    +			
    +			
    +			
    +			
    +		
    +	
    +	
    +		
    +			
    +			
    +			
    +			
    +		
    +	
    +	
    +		
    +			
    +			
    +			
    +			
    +		
    +	
    +	
    +		
    +			
    +			
    +			
    +			
    +		
    +	
    +	
    +		
    +			
    +			
    +			
    +			
    +		
    +	
    +	
    +		
    +			
    +			
    +			
    +			
    +		
    +	
    +	
    +		
    +			
    +			
    +			
    +			
    +		
    +	
    +	
    +		
    +			
    +			
    +			
    +			
    +		
    +	
    +	
    +		
    +			
    +			
    +			
    +			
    +		
    +	
    +	
    +		
    +			
    +			
    +			
    +			
    +		
    +	
     
    -  
    -      
    -          
    -          
    -          
    -          
    -      
    -  
    -  
    -      
    -          
    -          
    -          
    -          
    -      
    -  
    -  
    -      
    -          
    -          
    -          
    -          
    -      
    -  
    -  
    -      
    -          
    -          
    -          
    -          
    -      
    -  
    -  
    -      
    -          
    -          
    -          
    -          
    -      
    -  
    -  
    -      
    -          
    -          
    -          
    -          
    -      
    -  
    +	
    +		
    +			
    +			
    +			
    +			
    +		
    +	
    +	
    +		
    +			
    +			
    +			
    +			
    +		
    +	
    +	
    +		
    +			
    +			
    +			
    +			
    +		
    +	
    +	
    +		
    +			
    +			
    +			
    +			
    +		
    +	
    +	
    +		
    +			
    +			
    +			
    +			
    +		
    +	
    +	
    +		
    +			
    +			
    +			
    +			
    +		
    +	
     
    -  
    -      
    -          
    -          
    -          
    -          
    -      
    -  
    +	
    +		
    +			
    +			
    +			
    +			
    +		
    +	
    diff --git a/src/mod/applications/mod_avmd/mod_avmd.c b/src/mod/applications/mod_avmd/mod_avmd.c
    index ea1c5f483ae..dde3dfbf930 100644
    --- a/src/mod/applications/mod_avmd/mod_avmd.c
    +++ b/src/mod/applications/mod_avmd/mod_avmd.c
    @@ -20,7 +20,7 @@
      * Contributor(s):
      *
      * Eric des Courtis 
    - * Piotr Gregor     
    + * Piotr Gregor 
      *
      * mod_avmd.c -- Advanced Voicemail Detection Module
      *
    @@ -39,14 +39,14 @@
     #include 
     
     #ifdef WIN32
    -    #include 
    -    #define ISNAN(x) (!!(_isnan(x)))
    -    #define ISINF(x) (isinf(x))
    +	#include 
    +	#define ISNAN(x) (!!(_isnan(x)))
    +	#define ISINF(x) (isinf(x))
     #else
    -    int __isnan(double);
    +	int __isnan(double);
     	int __isinf(double);
    -    #define ISNAN(x) (__isnan(x))
    -    #define ISINF(x) (__isinf(x))
    +	#define ISNAN(x) (__isnan(x))
    +	#define ISINF(x) (__isinf(x))
     #endif
     
     #include "avmd_buffer.h"
    @@ -119,16 +119,16 @@
     /* don't forget to update avmd_events_str table if you modify this */
     enum avmd_event
     {
    -    AVMD_EVENT_BEEP = 0,
    -    AVMD_EVENT_SESSION_START = 1,
    -    AVMD_EVENT_SESSION_STOP = 2
    +	AVMD_EVENT_BEEP = 0,
    +	AVMD_EVENT_SESSION_START = 1,
    +	AVMD_EVENT_SESSION_STOP = 2
     };
     /* This array MUST be NULL terminated! */
     const char* avmd_events_str[] = {
    -    [AVMD_EVENT_BEEP] =             "avmd::beep",
    -    [AVMD_EVENT_SESSION_START] =    "avmd::start",
    -    [AVMD_EVENT_SESSION_STOP] =     "avmd::stop",
    -    NULL                                            /* MUST be last and always here */
    +	[AVMD_EVENT_BEEP] = "avmd::beep",
    +	[AVMD_EVENT_SESSION_START] = "avmd::start",
    +	[AVMD_EVENT_SESSION_STOP] = "avmd::stop",
    +	NULL /* MUST be last and always here */
     };
     
     #define AVMD_CHAR_BUF_LEN 20u
    @@ -136,17 +136,17 @@ const char* avmd_events_str[] = {
     
     enum avmd_app
     {
    -    AVMD_APP_START_APP = 0,
    -    AVMD_APP_STOP_APP = 1,
    -    AVMD_APP_START_FUNCTION = 2     /* deprecated since version 1.6.8 */
    +	AVMD_APP_START_APP = 0,
    +	AVMD_APP_STOP_APP = 1,
    +	AVMD_APP_START_FUNCTION = 2 /* deprecated since version 1.6.8 */
     };
     
     enum avmd_detection_mode
     {
    -    AVMD_DETECT_AMP = 0,
    -    AVMD_DETECT_FREQ = 1,
    -    AVMD_DETECT_BOTH = 2,
    -    AVMD_DETECT_NONE = 3
    +	AVMD_DETECT_AMP = 0,
    +	AVMD_DETECT_FREQ = 1,
    +	AVMD_DETECT_BOTH = 2,
    +	AVMD_DETECT_NONE = 3
     };
     
     /* Prototypes */
    @@ -159,92 +159,92 @@ SWITCH_STANDARD_APP(avmd_stop_app);
     SWITCH_STANDARD_APP(avmd_start_function);
     
     struct avmd_settings {
    -    uint8_t     debug;
    -    uint8_t     report_status;
    -    uint8_t     fast_math;
    -    uint8_t     require_continuous_streak;
    -    uint16_t    sample_n_continuous_streak;
    -    uint16_t    sample_n_to_skip;
    -    uint8_t     require_continuous_streak_amp;
    -    uint16_t    sample_n_continuous_streak_amp;
    -    uint8_t     simplified_estimation;
    -    uint8_t     inbound_channnel;
    -    uint8_t     outbound_channnel;
    -    enum avmd_detection_mode mode;
    -    uint8_t     detectors_n;
    -    uint8_t     detectors_lagged_n;
    +	uint8_t debug;
    +	uint8_t report_status;
    +	uint8_t fast_math;
    +	uint8_t require_continuous_streak;
    +	uint16_t sample_n_continuous_streak;
    +	uint16_t sample_n_to_skip;
    +	uint8_t require_continuous_streak_amp;
    +	uint16_t sample_n_continuous_streak_amp;
    +	uint8_t simplified_estimation;
    +	uint8_t inbound_channnel;
    +	uint8_t outbound_channnel;
    +	enum avmd_detection_mode mode;
    +	uint8_t detectors_n;
    +	uint8_t detectors_lagged_n;
     };
     
     /*! Status of the beep detection */
     typedef enum {
    -    BEEP_DETECTED,
    -    BEEP_NOTDETECTED
    +	BEEP_DETECTED,
    +	BEEP_NOTDETECTED
     } avmd_beep_state_t;
     
     /*! Data related to the current status of the beep */
     typedef struct {
    -    avmd_beep_state_t beep_state;
    -    size_t last_beep;
    +	avmd_beep_state_t beep_state;
    +	size_t last_beep;
     } avmd_state_t;
     
     struct avmd_session;
     typedef struct avmd_session avmd_session_t;
     
     struct avmd_buffer {
    -    sma_buffer_t    sma_b;
    -    sma_buffer_t    sqa_b;
    +	sma_buffer_t sma_b;
    +	sma_buffer_t sqa_b;
     
    -    sma_buffer_t    sma_b_fir;
    -    sma_buffer_t    sqa_b_fir;
    +	sma_buffer_t sma_b_fir;
    +	sma_buffer_t sqa_b_fir;
     
    -    sma_buffer_t    sma_amp_b;
    -    sma_buffer_t    sqa_amp_b;
    +	sma_buffer_t sma_amp_b;
    +	sma_buffer_t sqa_amp_b;
     
    -    uint8_t         resolution;
    -    uint8_t         offset;
    -    double          amplitude_max;
    -    size_t samples_streak, samples_streak_amp; /* number of DESA samples in single streak without reset needed to validate SMA estimator */
    +	uint8_t resolution;
    +	uint8_t offset;
    +	double amplitude_max;
    +	size_t samples_streak, samples_streak_amp; /* number of DESA samples in single streak without reset needed to validate SMA estimator */
     };
     
     struct avmd_detector {
    -    switch_thread_t *thread;
    -    switch_mutex_t  *mutex;
    -    uint8_t                     flag_processing_done;
    -    uint8_t                     flag_should_exit;
    -    enum avmd_detection_mode    result;
    -    switch_thread_cond_t        *cond_start_processing;
    -    struct avmd_buffer          buffer;
    -    avmd_session_t              *s;
    -    size_t                      samples;
    -    uint8_t                     idx;
    -    uint8_t                     lagged, lag;
    +	switch_thread_t *thread;
    +	switch_mutex_t *mutex;
    +	uint8_t flag_processing_done;
    +	uint8_t flag_should_exit;
    +	enum avmd_detection_mode result;
    +	switch_thread_cond_t *cond_start_processing;
    +	struct avmd_buffer buffer;
    +	avmd_session_t *s;
    +	size_t samples;
    +	uint8_t idx;
    +	uint8_t lagged, lag;
     };
     
     /*! Type that holds avmd detection session information. */
     struct avmd_session {
    -    switch_core_session_t   *session;
    -    switch_mutex_t          *mutex;
    -    struct avmd_settings    settings;
    -    uint32_t        rate;
    -    circ_buffer_t   b;
    -    size_t          pos;
    -    double          f;
    -    avmd_state_t    state;
    -    switch_time_t   start_time, stop_time, detection_start_time, detection_stop_time;
    -    size_t          frame_n;
    -    uint8_t         frame_n_to_skip;
    -
    -    switch_mutex_t          *mutex_detectors_done;
    -    switch_thread_cond_t    *cond_detectors_done;
    -    struct avmd_detector    *detectors;
    +	switch_core_session_t *session;
    +	switch_mutex_t *mutex;
    +	struct avmd_settings settings;
    +	uint32_t rate;
    +	circ_buffer_t b;
    +	size_t pos;
    +	double f;
    +	avmd_state_t state;
    +	switch_time_t start_time, stop_time, detection_start_time, detection_stop_time;
    +	size_t frame_n;
    +	uint8_t frame_n_to_skip;
    +
    +	switch_mutex_t *mutex_detectors_done;
    +	switch_thread_cond_t *cond_detectors_done;
    +	struct avmd_detector *detectors;
     };
     
     static struct avmd_globals
     {
    -    switch_mutex_t          *mutex;
    -    struct avmd_settings    settings;
    -    switch_memory_pool_t    *pool;
    -    size_t                  session_n;
    +	switch_mutex_t *mutex;
    +	struct avmd_settings settings;
    +	switch_memory_pool_t *pool;
    +	size_t session_n;
     } avmd_globals;
     
     static void avmd_process(avmd_session_t *session, switch_frame_t *frame, uint8_t direction);
    @@ -255,7 +255,7 @@ static switch_status_t avmd_register_all_events(void);
     static void avmd_unregister_all_events(void);
     
     static void avmd_fire_event(enum avmd_event type, switch_core_session_t *fs_s, double freq, double v_freq, double amp, double v_amp, avmd_beep_state_t beep_status, uint8_t info,
    -        switch_time_t detection_start_time, switch_time_t detection_stop_time, switch_time_t start_time, switch_time_t stop_time, uint8_t resolution, uint8_t offset, uint8_t idx);
    +		switch_time_t detection_start_time, switch_time_t detection_stop_time, switch_time_t start_time, switch_time_t stop_time, uint8_t resolution, uint8_t offset, uint8_t idx);
     
     static enum avmd_detection_mode avmd_process_sample(avmd_session_t *s, circ_buffer_t *b, size_t sample_n, size_t pos, struct avmd_detector *d);
     
    @@ -286,9 +286,9 @@ static uint8_t
     avmd_detection_in_progress(avmd_session_t *s);
     
     static switch_status_t avmd_launch_threads(avmd_session_t *s) {
    -	uint8_t                 idx;
    -	struct avmd_detector    *d;
    -	switch_threadattr_t     *thd_attr = NULL;
    +	uint8_t idx;
    +	struct avmd_detector *d;
    +	switch_threadattr_t *thd_attr = NULL;
     
     	idx = 0;
     	while (idx < s->settings.detectors_n) {
    @@ -336,226 +336,226 @@ static switch_status_t avmd_launch_threads(avmd_session_t *s) {
     }
     
     static void avmd_join_threads(avmd_session_t *s) {
    -    uint8_t                 idx;
    -    struct avmd_detector    *d;
    -    switch_status_t         status;
    -
    -    idx = 0;
    -    while (idx < s->settings.detectors_n) {
    -        d = &s->detectors[idx];
    -        switch_mutex_lock(d->mutex);
    -        if (d->thread != NULL) {
    -            d->flag_should_exit = 1;
    -            d->samples = 0;
    -            switch_thread_cond_signal(d->cond_start_processing);
    -            switch_mutex_unlock(d->mutex);
    -            switch_thread_join(&status, d->thread);
    -            d->thread = NULL;
    -            switch_mutex_destroy(d->mutex);
    -            switch_thread_cond_destroy(d->cond_start_processing);
    -        } else {
    -            switch_mutex_unlock(d->mutex);
    -        }
    -        ++idx;
    -    }
    -    idx = 0;
    -    while (idx < s->settings.detectors_lagged_n) {
    -        d = &s->detectors[s->settings.detectors_n + idx];
    -        switch_mutex_lock(d->mutex);
    -        if (d->thread != NULL) {
    -            d->flag_should_exit = 1;
    -            d->samples = 0;
    -            switch_thread_cond_signal(d->cond_start_processing);
    -            switch_mutex_unlock(d->mutex);
    -            switch_thread_join(&status, d->thread);
    -            d->thread = NULL;
    -            switch_mutex_destroy(d->mutex);
    -            switch_thread_cond_destroy(d->cond_start_processing);
    -        } else {
    -            switch_mutex_unlock(d->mutex);
    -        }
    -        ++idx;
    -    }
    +	uint8_t idx;
    +	struct avmd_detector *d;
    +	switch_status_t status;
    +
    +	idx = 0;
    +	while (idx < s->settings.detectors_n) {
    +		d = &s->detectors[idx];
    +		switch_mutex_lock(d->mutex);
    +		if (d->thread != NULL) {
    +			d->flag_should_exit = 1;
    +			d->samples = 0;
    +			switch_thread_cond_signal(d->cond_start_processing);
    +			switch_mutex_unlock(d->mutex);
    +			switch_thread_join(&status, d->thread);
    +			d->thread = NULL;
    +			switch_mutex_destroy(d->mutex);
    +			switch_thread_cond_destroy(d->cond_start_processing);
    +		} else {
    +			switch_mutex_unlock(d->mutex);
    +		}
    +		++idx;
    +	}
    +	idx = 0;
    +	while (idx < s->settings.detectors_lagged_n) {
    +		d = &s->detectors[s->settings.detectors_n + idx];
    +		switch_mutex_lock(d->mutex);
    +		if (d->thread != NULL) {
    +			d->flag_should_exit = 1;
    +			d->samples = 0;
    +			switch_thread_cond_signal(d->cond_start_processing);
    +			switch_mutex_unlock(d->mutex);
    +			switch_thread_join(&status, d->thread);
    +			d->thread = NULL;
    +			switch_mutex_destroy(d->mutex);
    +			switch_thread_cond_destroy(d->cond_start_processing);
    +		} else {
    +			switch_mutex_unlock(d->mutex);
    +		}
    +		++idx;
    +	}
     }
     
     static switch_status_t avmd_init_buffer(struct avmd_buffer *b, size_t buf_sz, uint8_t resolution, uint8_t offset, switch_core_session_t *fs_session) {
    -    INIT_SMA_BUFFER(&b->sma_b, buf_sz, fs_session);
    -    if (b->sma_b.data == NULL) {
    -        return SWITCH_STATUS_FALSE;
    -    }
    -    memset(b->sma_b.data, 0, sizeof(BUFF_TYPE) * buf_sz);
    -
    -    INIT_SMA_BUFFER(&b->sqa_b, buf_sz, fs_session);
    -    if (b->sqa_b.data == NULL) {
    -        return SWITCH_STATUS_FALSE;
    -    }
    -    memset(b->sqa_b.data, 0, sizeof(BUFF_TYPE) * buf_sz);
    -
    -    INIT_SMA_BUFFER(&b->sma_b_fir, buf_sz, fs_session);
    -    if (b->sma_b_fir.data == NULL) {
    -        return SWITCH_STATUS_FALSE;
    -    }
    -    memset(b->sma_b_fir.data, 0, sizeof(BUFF_TYPE) * buf_sz);
    -
    -    INIT_SMA_BUFFER(&b->sqa_b_fir, buf_sz, fs_session);
    -    if (b->sqa_b_fir.data == NULL) {
    -        return SWITCH_STATUS_FALSE;
    -    }
    -    memset(b->sqa_b_fir.data, 0, sizeof(BUFF_TYPE) * buf_sz);
    -
    -    INIT_SMA_BUFFER(&b->sma_amp_b, buf_sz, fs_session);
    -    if (b->sma_amp_b.data == NULL) {
    -        return SWITCH_STATUS_FALSE;
    -    }
    -    memset(b->sma_amp_b.data, 0, sizeof(BUFF_TYPE) * buf_sz);
    -
    -    INIT_SMA_BUFFER(&b->sqa_amp_b, buf_sz, fs_session);
    -    if (b->sqa_amp_b.data == NULL) {
    -        return SWITCH_STATUS_FALSE;
    -    }
    -    memset(b->sqa_amp_b.data, 0, sizeof(BUFF_TYPE) * buf_sz);
    -
    -    b->amplitude_max = 0.0;
    -    b->samples_streak = 0;
    -    b->samples_streak_amp = 0;
    -    b->resolution = resolution;
    -    b->offset = offset;
    -
    -    return SWITCH_STATUS_SUCCESS;
    +	INIT_SMA_BUFFER(&b->sma_b, buf_sz, fs_session);
    +	if (b->sma_b.data == NULL) {
    +		return SWITCH_STATUS_FALSE;
    +	}
    +	memset(b->sma_b.data, 0, sizeof(BUFF_TYPE) * buf_sz);
    +
    +	INIT_SMA_BUFFER(&b->sqa_b, buf_sz, fs_session);
    +	if (b->sqa_b.data == NULL) {
    +		return SWITCH_STATUS_FALSE;
    +	}
    +	memset(b->sqa_b.data, 0, sizeof(BUFF_TYPE) * buf_sz);
    +
    +	INIT_SMA_BUFFER(&b->sma_b_fir, buf_sz, fs_session);
    +	if (b->sma_b_fir.data == NULL) {
    +		return SWITCH_STATUS_FALSE;
    +	}
    +	memset(b->sma_b_fir.data, 0, sizeof(BUFF_TYPE) * buf_sz);
    +
    +	INIT_SMA_BUFFER(&b->sqa_b_fir, buf_sz, fs_session);
    +	if (b->sqa_b_fir.data == NULL) {
    +		return SWITCH_STATUS_FALSE;
    +	}
    +	memset(b->sqa_b_fir.data, 0, sizeof(BUFF_TYPE) * buf_sz);
    +
    +	INIT_SMA_BUFFER(&b->sma_amp_b, buf_sz, fs_session);
    +	if (b->sma_amp_b.data == NULL) {
    +		return SWITCH_STATUS_FALSE;
    +	}
    +	memset(b->sma_amp_b.data, 0, sizeof(BUFF_TYPE) * buf_sz);
    +
    +	INIT_SMA_BUFFER(&b->sqa_amp_b, buf_sz, fs_session);
    +	if (b->sqa_amp_b.data == NULL) {
    +		return SWITCH_STATUS_FALSE;
    +	}
    +	memset(b->sqa_amp_b.data, 0, sizeof(BUFF_TYPE) * buf_sz);
    +
    +	b->amplitude_max = 0.0;
    +	b->samples_streak = 0;
    +	b->samples_streak_amp = 0;
    +	b->resolution = resolution;
    +	b->offset = offset;
    +
    +	return SWITCH_STATUS_SUCCESS;
     }
     
    -/*! \brief  The avmd session data initialization function.
    - * @param   avmd_session A reference to a avmd session.
    - * @param   fs_session A reference to a FreeSWITCH session.
    +/*! \brief The avmd session data initialization function.
    + * @param avmd_session A reference to a avmd session.
    + * @param fs_session A reference to a FreeSWITCH session.
      * @details Avmd globals mutex must be locked.
      */
     static switch_status_t init_avmd_session_data(avmd_session_t *avmd_session, switch_core_session_t *fs_session, switch_mutex_t *mutex)
     {
    -    uint8_t         idx, resolution, offset;
    -    size_t          buf_sz;
    -    struct avmd_detector *d;
    -    switch_status_t status = SWITCH_STATUS_SUCCESS;
    -
    -    if (mutex != NULL)
    -    {
    -        switch_mutex_lock(mutex);
    -    }
    -
    -    /*! This is a worst case sample rate estimate */
    -    avmd_session->rate = 48000;
    -    INIT_CIRC_BUFFER(&avmd_session->b, (size_t) AVMD_BEEP_LEN(avmd_session->rate), (size_t) AVMD_FRAME_LEN(avmd_session->rate), fs_session);
    -    if (avmd_session->b.buf == NULL) {
    -        status =  SWITCH_STATUS_MEMERR;
    -        goto end;
    -    }
    -    avmd_session->session = fs_session;
    -    avmd_session->pos = 0;
    -    avmd_session->f = 0.0;
    -    avmd_session->state.last_beep = 0;
    -    avmd_session->state.beep_state = BEEP_NOTDETECTED;
    -    switch_mutex_init(&avmd_session->mutex, SWITCH_MUTEX_DEFAULT, switch_core_session_get_pool(fs_session));
    -    avmd_session->frame_n = 0;
    -    avmd_session->detection_start_time = 0;
    -    avmd_session->detection_stop_time = 0;
    -    avmd_session->frame_n_to_skip = 0;
    -
    -    buf_sz = AVMD_BEEP_LEN((uint32_t)avmd_session->rate) / (uint32_t) AVMD_SINE_LEN(avmd_session->rate);
    -    if (buf_sz < 1) {
    -        status = SWITCH_STATUS_MORE_DATA;
    -        goto end;
    -    }
    -    avmd_session->detectors = (struct avmd_detector*) switch_core_session_alloc(fs_session, (avmd_session->settings.detectors_n + avmd_session->settings.detectors_lagged_n) * sizeof(struct avmd_detector));
    -    if (avmd_session->detectors == NULL) {
    -        switch_log_printf(SWITCH_CHANNEL_SESSION_LOG(fs_session), SWITCH_LOG_ERROR, "Can't allocate memory for avmd detectors!\n");
    -        status = SWITCH_STATUS_NOT_INITALIZED;
    -        goto end;
    -    }
    -    idx = 0;
    -    resolution = 0;
    -    while (idx < avmd_session->settings.detectors_n) {
    -        ++resolution;
    -        offset = 0;
    -        while ((offset < resolution) && (idx < avmd_session->settings.detectors_n)) {
    -            d = &avmd_session->detectors[idx];
    -            if (avmd_init_buffer(&d->buffer, buf_sz, resolution, offset, fs_session) != SWITCH_STATUS_SUCCESS) {
    -                status = SWITCH_STATUS_FALSE;
    -                goto end;
    -            }
    -            d->s = avmd_session;
    -            d->flag_processing_done = 1;
    -            d->flag_should_exit = 1;
    -            d->idx = idx;
    -            d->thread = NULL;
    -            switch_mutex_init(&d->mutex, SWITCH_MUTEX_DEFAULT, switch_core_session_get_pool(fs_session));
    -            switch_thread_cond_create(&d->cond_start_processing, switch_core_session_get_pool(fs_session));
    -            ++offset;
    -            ++idx;
    -        }
    -    }
    -    idx = 0;
    -    resolution = 1;
    -    offset = 0;
    -    while (idx < avmd_session->settings.detectors_lagged_n) {
    -            d = &avmd_session->detectors[avmd_session->settings.detectors_n + idx];
    -            if (avmd_init_buffer(&d->buffer, buf_sz, resolution, offset, fs_session) != SWITCH_STATUS_SUCCESS) {
    -                status = SWITCH_STATUS_FALSE;
    -                goto end;
    -            }
    -            d->s = avmd_session;
    -            d->flag_processing_done = 1;
    -            d->flag_should_exit = 1;
    -            d->idx = avmd_session->settings.detectors_n + idx;
    -            d->thread = NULL;
    -            switch_mutex_init(&d->mutex, SWITCH_MUTEX_DEFAULT, switch_core_session_get_pool(fs_session));
    -            switch_thread_cond_create(&d->cond_start_processing, switch_core_session_get_pool(fs_session));
    -            ++idx;
    -    }
    -    switch_mutex_init(&avmd_session->mutex_detectors_done, SWITCH_MUTEX_DEFAULT, switch_core_session_get_pool(fs_session));
    -    switch_thread_cond_create(&avmd_session->cond_detectors_done, switch_core_session_get_pool(fs_session));
    +	uint8_t		 idx, resolution, offset;
    +	size_t		  buf_sz;
    +	struct avmd_detector *d;
    +	switch_status_t status = SWITCH_STATUS_SUCCESS;
    +
    +	if (mutex != NULL)
    +	{
    +		switch_mutex_lock(mutex);
    +	}
    +
    +	/*! This is a worst case sample rate estimate */
    +	avmd_session->rate = 48000;
    +	INIT_CIRC_BUFFER(&avmd_session->b, (size_t) AVMD_BEEP_LEN(avmd_session->rate), (size_t) AVMD_FRAME_LEN(avmd_session->rate), fs_session);
    +	if (avmd_session->b.buf == NULL) {
    +		status =  SWITCH_STATUS_MEMERR;
    +		goto end;
    +	}
    +	avmd_session->session = fs_session;
    +	avmd_session->pos = 0;
    +	avmd_session->f = 0.0;
    +	avmd_session->state.last_beep = 0;
    +	avmd_session->state.beep_state = BEEP_NOTDETECTED;
    +	switch_mutex_init(&avmd_session->mutex, SWITCH_MUTEX_DEFAULT, switch_core_session_get_pool(fs_session));
    +	avmd_session->frame_n = 0;
    +	avmd_session->detection_start_time = 0;
    +	avmd_session->detection_stop_time = 0;
    +	avmd_session->frame_n_to_skip = 0;
    +
    +	buf_sz = AVMD_BEEP_LEN((uint32_t)avmd_session->rate) / (uint32_t) AVMD_SINE_LEN(avmd_session->rate);
    +	if (buf_sz < 1) {
    +		status = SWITCH_STATUS_MORE_DATA;
    +		goto end;
    +	}
    +	avmd_session->detectors = (struct avmd_detector*) switch_core_session_alloc(fs_session, (avmd_session->settings.detectors_n + avmd_session->settings.detectors_lagged_n) * sizeof(struct avmd_detector));
    +	if (avmd_session->detectors == NULL) {
    +		switch_log_printf(SWITCH_CHANNEL_SESSION_LOG(fs_session), SWITCH_LOG_ERROR, "Can't allocate memory for avmd detectors!\n");
    +		status = SWITCH_STATUS_NOT_INITALIZED;
    +		goto end;
    +	}
    +	idx = 0;
    +	resolution = 0;
    +	while (idx < avmd_session->settings.detectors_n) {
    +		++resolution;
    +		offset = 0;
    +		while ((offset < resolution) && (idx < avmd_session->settings.detectors_n)) {
    +			d = &avmd_session->detectors[idx];
    +			if (avmd_init_buffer(&d->buffer, buf_sz, resolution, offset, fs_session) != SWITCH_STATUS_SUCCESS) {
    +				status = SWITCH_STATUS_FALSE;
    +				goto end;
    +			}
    +			d->s = avmd_session;
    +			d->flag_processing_done = 1;
    +			d->flag_should_exit = 1;
    +			d->idx = idx;
    +			d->thread = NULL;
    +			switch_mutex_init(&d->mutex, SWITCH_MUTEX_DEFAULT, switch_core_session_get_pool(fs_session));
    +			switch_thread_cond_create(&d->cond_start_processing, switch_core_session_get_pool(fs_session));
    +			++offset;
    +			++idx;
    +		}
    +	}
    +	idx = 0;
    +	resolution = 1;
    +	offset = 0;
    +	while (idx < avmd_session->settings.detectors_lagged_n) {
    +			d = &avmd_session->detectors[avmd_session->settings.detectors_n + idx];
    +			if (avmd_init_buffer(&d->buffer, buf_sz, resolution, offset, fs_session) != SWITCH_STATUS_SUCCESS) {
    +				status = SWITCH_STATUS_FALSE;
    +				goto end;
    +			}
    +			d->s = avmd_session;
    +			d->flag_processing_done = 1;
    +			d->flag_should_exit = 1;
    +			d->idx = avmd_session->settings.detectors_n + idx;
    +			d->thread = NULL;
    +			switch_mutex_init(&d->mutex, SWITCH_MUTEX_DEFAULT, switch_core_session_get_pool(fs_session));
    +			switch_thread_cond_create(&d->cond_start_processing, switch_core_session_get_pool(fs_session));
    +			++idx;
    +	}
    +	switch_mutex_init(&avmd_session->mutex_detectors_done, SWITCH_MUTEX_DEFAULT, switch_core_session_get_pool(fs_session));
    +	switch_thread_cond_create(&avmd_session->cond_detectors_done, switch_core_session_get_pool(fs_session));
     
     end:
    -    if (mutex != NULL)
    -    {
    -        switch_mutex_unlock(mutex);
    -    }
    -    return status;
    +	if (mutex != NULL)
    +	{
    +		switch_mutex_unlock(mutex);
    +	}
    +	return status;
     }
     
     static void avmd_session_close(avmd_session_t *s) {
    -    uint8_t                 idx;
    -    struct avmd_detector    *d;
    -    switch_status_t         status;
    -
    -    switch_mutex_lock(s->mutex);
    -
    -    switch_mutex_lock(s->mutex_detectors_done);
    -    while (avmd_detection_in_progress(s) == 1) {
    -        switch_thread_cond_wait(s->cond_detectors_done, s->mutex_detectors_done);
    -    }
    -    switch_mutex_unlock(s->mutex_detectors_done);
    -
    -    idx = 0;
    -    while (idx < (s->settings.detectors_n + s->settings.detectors_lagged_n)) {
    -        d = &s->detectors[idx];
    -        switch_mutex_lock(d->mutex);
    -        d = &s->detectors[idx];
    -        d->flag_processing_done = 0;
    -        d->flag_should_exit = 1;
    -        d->samples = 0;
    -        switch_thread_cond_signal(d->cond_start_processing);
    -        switch_mutex_unlock(d->mutex);
    -
    -        switch_thread_join(&status, d->thread);
    -        d->thread = NULL;
    -
    -        switch_mutex_destroy(d->mutex);
    -        switch_thread_cond_destroy(d->cond_start_processing);
    -        ++idx;
    -    }
    -    switch_mutex_unlock(s->mutex);
    -    switch_mutex_destroy(s->mutex_detectors_done);
    -    switch_thread_cond_destroy(s->cond_detectors_done);
    -    switch_mutex_destroy(s->mutex);
    +	uint8_t				 idx;
    +	struct avmd_detector	*d;
    +	switch_status_t		 status;
    +
    +	switch_mutex_lock(s->mutex);
    +
    +	switch_mutex_lock(s->mutex_detectors_done);
    +	while (avmd_detection_in_progress(s) == 1) {
    +		switch_thread_cond_wait(s->cond_detectors_done, s->mutex_detectors_done);
    +	}
    +	switch_mutex_unlock(s->mutex_detectors_done);
    +
    +	idx = 0;
    +	while (idx < (s->settings.detectors_n + s->settings.detectors_lagged_n)) {
    +		d = &s->detectors[idx];
    +		switch_mutex_lock(d->mutex);
    +		d = &s->detectors[idx];
    +		d->flag_processing_done = 0;
    +		d->flag_should_exit = 1;
    +		d->samples = 0;
    +		switch_thread_cond_signal(d->cond_start_processing);
    +		switch_mutex_unlock(d->mutex);
    +
    +		switch_thread_join(&status, d->thread);
    +		d->thread = NULL;
    +
    +		switch_mutex_destroy(d->mutex);
    +		switch_thread_cond_destroy(d->cond_start_processing);
    +		++idx;
    +	}
    +	switch_mutex_unlock(s->mutex);
    +	switch_mutex_destroy(s->mutex_detectors_done);
    +	switch_thread_cond_destroy(s->cond_detectors_done);
    +	switch_mutex_destroy(s->mutex);
     }
     
     /*! \brief The callback function that is called when new audio data becomes available.
    @@ -565,321 +565,321 @@ static void avmd_session_close(avmd_session_t *s) {
      * @return The success or failure of the function.
      */
     static switch_bool_t avmd_callback(switch_media_bug_t * bug, void *user_data, switch_abc_type_t type) {
    -    avmd_session_t          *avmd_session;
    -    switch_codec_t          *read_codec;
    -    switch_codec_t          *write_codec;
    -    switch_frame_t          *frame;
    -    switch_core_session_t   *fs_session;
    -    switch_channel_t        *channel = NULL;
    -
    -
    -    avmd_session = (avmd_session_t *) user_data;
    -    if (avmd_session == NULL) {
    -        switch_log_printf(SWITCH_CHANNEL_LOG, SWITCH_LOG_ERROR, "No avmd session assigned!\n");
    -        return SWITCH_FALSE;
    -    }
    -    if ((type != SWITCH_ABC_TYPE_INIT) && (type != SWITCH_ABC_TYPE_CLOSE)) {
    -        switch_mutex_lock(avmd_session->mutex);
    -    }
    -    fs_session = avmd_session->session;
    -    if (fs_session == NULL) {
    -        if (type != SWITCH_ABC_TYPE_INIT) {
    -            switch_mutex_unlock(avmd_session->mutex);
    -        }
    -        switch_log_printf(SWITCH_CHANNEL_LOG, SWITCH_LOG_ERROR, "No FreeSWITCH session assigned!\n");
    -        return SWITCH_FALSE;
    -    }
    -
    -    channel = switch_core_session_get_channel(fs_session);
    -    if (channel == NULL) {
    -        switch_log_printf(SWITCH_CHANNEL_LOG, SWITCH_LOG_ERROR, "No channel for FreeSWITCH session!\n");
    -        return SWITCH_FALSE;
    -    }
    -
    -    switch (type) {
    -
    -        case SWITCH_ABC_TYPE_INIT:
    -            if ((SWITCH_CALL_DIRECTION_OUTBOUND == switch_channel_direction(channel)) && (avmd_session->settings.outbound_channnel == 1)) {
    -                read_codec = switch_core_session_get_read_codec(fs_session);
    -                if (read_codec == NULL) {
    -                    switch_log_printf(SWITCH_CHANNEL_SESSION_LOG(fs_session), SWITCH_LOG_WARNING, "No read codec assigned, default session rate to 8000 samples/s\n");
    -                    avmd_session->rate = 8000;
    -                } else {
    -                    if (read_codec->implementation == NULL) {
    -                        switch_log_printf(SWITCH_CHANNEL_SESSION_LOG(fs_session), SWITCH_LOG_WARNING, "No read codec implementation assigned, default session rate to 8000 samples/s\n");
    -                        avmd_session->rate = 8000;
    -                    } else {
    -                        avmd_session->rate = read_codec->implementation->samples_per_second;
    -                    }
    -                }
    -            }
    -            if ((SWITCH_CALL_DIRECTION_INBOUND == switch_channel_direction(channel)) && (avmd_session->settings.inbound_channnel == 1)) {
    -                write_codec = switch_core_session_get_write_codec(fs_session);
    -                if (write_codec == NULL) {
    -                    switch_log_printf(SWITCH_CHANNEL_SESSION_LOG(fs_session), SWITCH_LOG_WARNING, "No write codec assigned, default session rate to 8000 samples/s\n");
    -                    avmd_session->rate = 8000;
    -                } else {
    -                    if (write_codec->implementation == NULL) {
    -                        switch_log_printf(SWITCH_CHANNEL_SESSION_LOG(fs_session), SWITCH_LOG_WARNING, "No write codec implementation assigned, default session rate to 8000 samples/s\n");
    -                        avmd_session->rate = 8000;
    -                    } else {
    -                        avmd_session->rate = write_codec->implementation->samples_per_second;
    -                    }
    -                }
    -            }
    -            avmd_session->start_time = switch_micro_time_now();
    -            /* avmd_session->vmd_codec.channels =  read_codec->implementation->number_of_channels; */
    -            switch_log_printf(SWITCH_CHANNEL_SESSION_LOG(fs_session),SWITCH_LOG_INFO, "Avmd session initialized, [%u] samples/s\n", avmd_session->rate);
    -            break;
    -
    -        case SWITCH_ABC_TYPE_READ_REPLACE:
    -            frame = switch_core_media_bug_get_read_replace_frame(bug);
    -            avmd_process(avmd_session, frame, AVMD_READ_REPLACE);
    -            break;
    -
    -        case SWITCH_ABC_TYPE_WRITE_REPLACE:
    -            frame = switch_core_media_bug_get_write_replace_frame(bug);
    -            avmd_process(avmd_session, frame, AVMD_WRITE_REPLACE);
    -            break;
    -
    -        case SWITCH_ABC_TYPE_CLOSE:
    -            avmd_session_close(avmd_session);
    +	avmd_session_t *avmd_session;
    +	switch_codec_t *read_codec;
    +	switch_codec_t *write_codec;
    +	switch_frame_t *frame;
    +	switch_core_session_t *fs_session;
    +	switch_channel_t *channel = NULL;
    +
    +
    +	avmd_session = (avmd_session_t *) user_data;
    +	if (avmd_session == NULL) {
    +		switch_log_printf(SWITCH_CHANNEL_LOG, SWITCH_LOG_ERROR, "No avmd session assigned!\n");
    +		return SWITCH_FALSE;
    +	}
    +	if ((type != SWITCH_ABC_TYPE_INIT) && (type != SWITCH_ABC_TYPE_CLOSE)) {
    +		switch_mutex_lock(avmd_session->mutex);
    +	}
    +	fs_session = avmd_session->session;
    +	if (fs_session == NULL) {
    +		if (type != SWITCH_ABC_TYPE_INIT) {
    +			switch_mutex_unlock(avmd_session->mutex);
    +		}
    +		switch_log_printf(SWITCH_CHANNEL_LOG, SWITCH_LOG_ERROR, "No FreeSWITCH session assigned!\n");
    +		return SWITCH_FALSE;
    +	}
    +
    +	channel = switch_core_session_get_channel(fs_session);
    +	if (channel == NULL) {
    +		switch_log_printf(SWITCH_CHANNEL_LOG, SWITCH_LOG_ERROR, "No channel for FreeSWITCH session!\n");
    +		return SWITCH_FALSE;
    +	}
    +
    +	switch (type) {
    +
    +		case SWITCH_ABC_TYPE_INIT:
    +			if ((SWITCH_CALL_DIRECTION_OUTBOUND == switch_channel_direction(channel)) && (avmd_session->settings.outbound_channnel == 1)) {
    +				read_codec = switch_core_session_get_read_codec(fs_session);
    +				if (read_codec == NULL) {
    +					switch_log_printf(SWITCH_CHANNEL_SESSION_LOG(fs_session), SWITCH_LOG_WARNING, "No read codec assigned, default session rate to 8000 samples/s\n");
    +					avmd_session->rate = 8000;
    +				} else {
    +					if (read_codec->implementation == NULL) {
    +						switch_log_printf(SWITCH_CHANNEL_SESSION_LOG(fs_session), SWITCH_LOG_WARNING, "No read codec implementation assigned, default session rate to 8000 samples/s\n");
    +						avmd_session->rate = 8000;
    +					} else {
    +						avmd_session->rate = read_codec->implementation->samples_per_second;
    +					}
    +				}
    +			}
    +			if ((SWITCH_CALL_DIRECTION_INBOUND == switch_channel_direction(channel)) && (avmd_session->settings.inbound_channnel == 1)) {
    +				write_codec = switch_core_session_get_write_codec(fs_session);
    +				if (write_codec == NULL) {
    +					switch_log_printf(SWITCH_CHANNEL_SESSION_LOG(fs_session), SWITCH_LOG_WARNING, "No write codec assigned, default session rate to 8000 samples/s\n");
    +					avmd_session->rate = 8000;
    +				} else {
    +					if (write_codec->implementation == NULL) {
    +						switch_log_printf(SWITCH_CHANNEL_SESSION_LOG(fs_session), SWITCH_LOG_WARNING, "No write codec implementation assigned, default session rate to 8000 samples/s\n");
    +						avmd_session->rate = 8000;
    +					} else {
    +						avmd_session->rate = write_codec->implementation->samples_per_second;
    +					}
    +				}
    +			}
    +			avmd_session->start_time = switch_micro_time_now();
    +			/* avmd_session->vmd_codec.channels =  read_codec->implementation->number_of_channels; */
    +			switch_log_printf(SWITCH_CHANNEL_SESSION_LOG(fs_session),SWITCH_LOG_INFO, "Avmd session initialized, [%u] samples/s\n", avmd_session->rate);
    +			break;
    +
    +		case SWITCH_ABC_TYPE_READ_REPLACE:
    +			frame = switch_core_media_bug_get_read_replace_frame(bug);
    +			avmd_process(avmd_session, frame, AVMD_READ_REPLACE);
    +			break;
    +
    +		case SWITCH_ABC_TYPE_WRITE_REPLACE:
    +			frame = switch_core_media_bug_get_write_replace_frame(bug);
    +			avmd_process(avmd_session, frame, AVMD_WRITE_REPLACE);
    +			break;
    +
    +		case SWITCH_ABC_TYPE_CLOSE:
    +			avmd_session_close(avmd_session);
     			switch_mutex_lock(avmd_globals.mutex);
    -            if (avmd_globals.session_n > 0) {
    -                --avmd_globals.session_n;
    -            }
    +			if (avmd_globals.session_n > 0) {
    +				--avmd_globals.session_n;
    +			}
     			switch_mutex_unlock(avmd_globals.mutex);
    -            break;
    +			break;
     
    -        default:
    -            break;
    -    }
    +		default:
    +			break;
    +	}
     
    -    if ((type != SWITCH_ABC_TYPE_INIT) && (type != SWITCH_ABC_TYPE_CLOSE)) {
    -        switch_mutex_unlock(avmd_session->mutex);
    -    }
    -    return SWITCH_TRUE;
    +	if ((type != SWITCH_ABC_TYPE_INIT) && (type != SWITCH_ABC_TYPE_CLOSE)) {
    +		switch_mutex_unlock(avmd_session->mutex);
    +	}
    +	return SWITCH_TRUE;
     }
     
     static switch_status_t avmd_register_all_events(void) {
    -    size_t idx = 0;
    -    const char *e = avmd_events_str[0];
    -    while (e != NULL)
    -    {
    -        if (switch_event_reserve_subclass(e) != SWITCH_STATUS_SUCCESS) {
    -            switch_log_printf(SWITCH_CHANNEL_LOG, SWITCH_LOG_ERROR, "Couldn't register subclass [%s]!\n", e);
    -            return SWITCH_STATUS_TERM;
    -        }
    -        ++idx;
    -        e = avmd_events_str[idx];
    -    }
    -    return SWITCH_STATUS_SUCCESS;
    +	size_t idx = 0;
    +	const char *e = avmd_events_str[0];
    +	while (e != NULL)
    +	{
    +		if (switch_event_reserve_subclass(e) != SWITCH_STATUS_SUCCESS) {
    +			switch_log_printf(SWITCH_CHANNEL_LOG, SWITCH_LOG_ERROR, "Couldn't register subclass [%s]!\n", e);
    +			return SWITCH_STATUS_TERM;
    +		}
    +		++idx;
    +		e = avmd_events_str[idx];
    +	}
    +	return SWITCH_STATUS_SUCCESS;
     }
     
     static void avmd_unregister_all_events(void) {
    -    size_t idx = 0;
    -    const char *e = avmd_events_str[0];
    -    while (e != NULL)
    -    {
    -        switch_event_free_subclass(e);
    -        ++idx;
    -        e = avmd_events_str[idx];
    -    }
    -    return;
    +	size_t idx = 0;
    +	const char *e = avmd_events_str[0];
    +	while (e != NULL)
    +	{
    +		switch_event_free_subclass(e);
    +		++idx;
    +		e = avmd_events_str[idx];
    +	}
    +	return;
     }
     
     static void avmd_fire_event(enum avmd_event type, switch_core_session_t *fs_s, double freq, double v_freq, double amp, double v_amp, avmd_beep_state_t beep_status, uint8_t info,
    -        switch_time_t detection_start_time, switch_time_t detection_stop_time, switch_time_t start_time, switch_time_t stop_time, uint8_t resolution, uint8_t offset, uint8_t idx) {
    -    int res;
    -    switch_event_t      *event;
    -    switch_time_t       detection_time, total_time;
    -    switch_status_t     status;
    -    switch_event_t      *event_copy;
    -    char                buf[AVMD_CHAR_BUF_LEN];
    -
    -    status = switch_event_create_subclass(&event, SWITCH_EVENT_CUSTOM, avmd_events_str[type]);
    -    if (status != SWITCH_STATUS_SUCCESS) {
    -        return;
    -    }
    -    switch_event_add_header_string(event, SWITCH_STACK_BOTTOM, "Unique-ID", switch_core_session_get_uuid(fs_s));
    -    switch_event_add_header_string(event, SWITCH_STACK_BOTTOM, "Call-command", "avmd");
    -    switch (type)
    -    {
    -        case AVMD_EVENT_BEEP:
    -            switch_event_add_header_string(event, SWITCH_STACK_BOTTOM, "Beep-Status", "DETECTED");
    -            res = snprintf(buf, AVMD_CHAR_BUF_LEN, "%f", freq);
    -            if (res < 0 || res > AVMD_CHAR_BUF_LEN - 1) {
    -                switch_log_printf(SWITCH_CHANNEL_SESSION_LOG(fs_s), SWITCH_LOG_ERROR, "Frequency truncated [%s], [%d] attempted!\n", buf, res);
    -                switch_event_add_header_string(event, SWITCH_STACK_BOTTOM, "Frequency", "ERROR (TRUNCATED)");
    -            }
    -            switch_event_add_header_string(event, SWITCH_STACK_BOTTOM, "Frequency", buf);
    -
    -            res = snprintf(buf, AVMD_CHAR_BUF_LEN, "%f", v_freq);
    -            if (res < 0 || res > AVMD_CHAR_BUF_LEN - 1) {
    -                switch_log_printf(SWITCH_CHANNEL_SESSION_LOG(fs_s), SWITCH_LOG_ERROR, "Error, truncated [%s], [%d] attempeted!\n", buf, res);
    -                switch_event_add_header_string(event, SWITCH_STACK_BOTTOM, "Frequency-variance", "ERROR (TRUNCATED)");
    -            }
    -            switch_event_add_header_string(event, SWITCH_STACK_BOTTOM, "Frequency-variance", buf);
    -
    -            res = snprintf(buf, AVMD_CHAR_BUF_LEN, "%f", amp);
    -            if (res < 0 || res > AVMD_CHAR_BUF_LEN - 1) {
    -                switch_log_printf(SWITCH_CHANNEL_SESSION_LOG(fs_s), SWITCH_LOG_ERROR, "Amplitude truncated [%s], [%d] attempted!\n", buf, res);
    -                switch_event_add_header_string(event, SWITCH_STACK_BOTTOM, "Amplitude", "ERROR (TRUNCATED)");
    -            }
    -            switch_event_add_header_string(event, SWITCH_STACK_BOTTOM, "Amplitude", buf);
    -
    -            res = snprintf(buf, AVMD_CHAR_BUF_LEN, "%f", v_amp);
    -            if (res < 0 || res > AVMD_CHAR_BUF_LEN - 1) {
    -                switch_log_printf(SWITCH_CHANNEL_SESSION_LOG(fs_s), SWITCH_LOG_ERROR, "Error, truncated [%s], [%d] attempeted!\n", buf, res);
    -                switch_event_add_header_string(event, SWITCH_STACK_BOTTOM, "Amplitude-variance", "ERROR (TRUNCATED)");
    -            }
    -            switch_event_add_header_string(event, SWITCH_STACK_BOTTOM, "Amplitude-variance", buf);
    -
    -            detection_time = detection_stop_time - detection_start_time;
    -            res = snprintf(buf, AVMD_CHAR_BUF_LEN, "%" PRId64 "", detection_time);
    -            if (res < 0 || res > AVMD_CHAR_BUF_LEN - 1) {
    -                switch_log_printf(SWITCH_CHANNEL_SESSION_LOG(fs_s), SWITCH_LOG_ERROR, "Detection time truncated [%s], [%d] attempted!\n", buf, res);
    -                switch_event_add_header_string(event, SWITCH_STACK_BOTTOM, "Detection-time", "ERROR (TRUNCATED)");
    -            }
    -            switch_event_add_header_string(event, SWITCH_STACK_BOTTOM, "Detection-time", buf);
    -
    -            res = snprintf(buf, AVMD_CHAR_BUF_LEN, "%u", resolution);
    -            if (res < 0 || res > AVMD_CHAR_BUF_LEN - 1) {
    -                switch_log_printf(SWITCH_CHANNEL_SESSION_LOG(fs_s), SWITCH_LOG_ERROR, "Error, truncated [%s], [%d] attempeted!\n", buf, res);
    -                switch_event_add_header_string(event, SWITCH_STACK_BOTTOM, "Detector-resolution", "ERROR (TRUNCATED)");
    -            }
    -            switch_event_add_header_string(event, SWITCH_STACK_BOTTOM, "Detector-resolution", buf);
    -
    -            res = snprintf(buf, AVMD_CHAR_BUF_LEN, "%u", offset);
    -            if (res < 0 || res > AVMD_CHAR_BUF_LEN - 1) {
    -                switch_log_printf(SWITCH_CHANNEL_SESSION_LOG(fs_s), SWITCH_LOG_ERROR, "Error, truncated [%s], [%d] attempeted!\n", buf, res);
    -                switch_event_add_header_string(event, SWITCH_STACK_BOTTOM, "Detector-offset", "ERROR (TRUNCATED)");
    -            }
    -            switch_event_add_header_string(event, SWITCH_STACK_BOTTOM, "Detector-offset", buf);
    -
    -            res = snprintf(buf, AVMD_CHAR_BUF_LEN, "%u", idx);
    -            if (res < 0 || res > AVMD_CHAR_BUF_LEN - 1) {
    -                switch_log_printf(SWITCH_CHANNEL_SESSION_LOG(fs_s), SWITCH_LOG_ERROR, "Error, truncated [%s], [%d] attempeted!\n", buf, res);
    -                switch_event_add_header_string(event, SWITCH_STACK_BOTTOM, "Detector-index", "ERROR (TRUNCATED)");
    -            }
    -            switch_event_add_header_string(event, SWITCH_STACK_BOTTOM, "Detector-index", buf);
    -            break;
    -
    -        case AVMD_EVENT_SESSION_START:
    -            res = snprintf(buf, AVMD_CHAR_BUF_LEN, "%" PRId64 "", start_time);
    -            if (res < 0 || res > AVMD_CHAR_BUF_LEN - 1) {
    -                switch_log_printf(SWITCH_CHANNEL_SESSION_LOG(fs_s), SWITCH_LOG_ERROR, "Start time truncated [%s], [%d] attempted!\n", buf, res);
    -                switch_event_add_header_string(event, SWITCH_STACK_BOTTOM, "Start-time", "ERROR (TRUNCATED)");
    -            }
    -            switch_event_add_header_string(event, SWITCH_STACK_BOTTOM, "Start-time", buf);
    -            break;
    -
    -        case AVMD_EVENT_SESSION_STOP:
    -            switch_event_add_header_string(event, SWITCH_STACK_BOTTOM, "Beep-Status", beep_status == BEEP_DETECTED ? "DETECTED" : "NOTDETECTED");
    -            if (info == 0) {
    -                switch_event_add_header_string(event, SWITCH_STACK_BOTTOM, "Stop-status", "ERROR (AVMD SESSION OBJECT NOT FOUND IN MEDIA BUG)");
    -            }
    -            total_time = stop_time - start_time;
    -            res = snprintf(buf, AVMD_CHAR_BUF_LEN, "%" PRId64 "", total_time);
    -            if (res < 0 || res > AVMD_CHAR_BUF_LEN - 1) {
    -                switch_log_printf(SWITCH_CHANNEL_SESSION_LOG(fs_s), SWITCH_LOG_ERROR, "Total time truncated [%s], [%d] attempted!\n", buf, res);
    -                switch_event_add_header_string(event, SWITCH_STACK_BOTTOM, "Total-time", "ERROR (TRUNCATED)");
    -            }
    -            switch_event_add_header_string(event, SWITCH_STACK_BOTTOM, "Total-time", buf);
    -            break;
    -
    -        default:
    -            switch_event_destroy(&event);
    -            return;
    -    }
    -
    -    if ((switch_event_dup(&event_copy, event)) != SWITCH_STATUS_SUCCESS) {
    -        return;
    -    }
    -
    -    switch_core_session_queue_event(fs_s, &event);
    -    switch_event_fire(&event_copy);
    -    return;
    +		switch_time_t detection_start_time, switch_time_t detection_stop_time, switch_time_t start_time, switch_time_t stop_time, uint8_t resolution, uint8_t offset, uint8_t idx) {
    +	int res;
    +	switch_event_t *event;
    +	switch_time_t detection_time, total_time;
    +	switch_status_t status;
    +	switch_event_t *event_copy;
    +	char buf[AVMD_CHAR_BUF_LEN];
    +
    +	status = switch_event_create_subclass(&event, SWITCH_EVENT_CUSTOM, avmd_events_str[type]);
    +	if (status != SWITCH_STATUS_SUCCESS) {
    +		return;
    +	}
    +	switch_event_add_header_string(event, SWITCH_STACK_BOTTOM, "Unique-ID", switch_core_session_get_uuid(fs_s));
    +	switch_event_add_header_string(event, SWITCH_STACK_BOTTOM, "Call-command", "avmd");
    +	switch (type)
    +	{
    +		case AVMD_EVENT_BEEP:
    +			switch_event_add_header_string(event, SWITCH_STACK_BOTTOM, "Beep-Status", "DETECTED");
    +			res = snprintf(buf, AVMD_CHAR_BUF_LEN, "%f", freq);
    +			if (res < 0 || res > AVMD_CHAR_BUF_LEN - 1) {
    +				switch_log_printf(SWITCH_CHANNEL_SESSION_LOG(fs_s), SWITCH_LOG_ERROR, "Frequency truncated [%s], [%d] attempted!\n", buf, res);
    +				switch_event_add_header_string(event, SWITCH_STACK_BOTTOM, "Frequency", "ERROR (TRUNCATED)");
    +			}
    +			switch_event_add_header_string(event, SWITCH_STACK_BOTTOM, "Frequency", buf);
    +
    +			res = snprintf(buf, AVMD_CHAR_BUF_LEN, "%f", v_freq);
    +			if (res < 0 || res > AVMD_CHAR_BUF_LEN - 1) {
    +				switch_log_printf(SWITCH_CHANNEL_SESSION_LOG(fs_s), SWITCH_LOG_ERROR, "Error, truncated [%s], [%d] attempeted!\n", buf, res);
    +				switch_event_add_header_string(event, SWITCH_STACK_BOTTOM, "Frequency-variance", "ERROR (TRUNCATED)");
    +			}
    +			switch_event_add_header_string(event, SWITCH_STACK_BOTTOM, "Frequency-variance", buf);
    +
    +			res = snprintf(buf, AVMD_CHAR_BUF_LEN, "%f", amp);
    +			if (res < 0 || res > AVMD_CHAR_BUF_LEN - 1) {
    +				switch_log_printf(SWITCH_CHANNEL_SESSION_LOG(fs_s), SWITCH_LOG_ERROR, "Amplitude truncated [%s], [%d] attempted!\n", buf, res);
    +				switch_event_add_header_string(event, SWITCH_STACK_BOTTOM, "Amplitude", "ERROR (TRUNCATED)");
    +			}
    +			switch_event_add_header_string(event, SWITCH_STACK_BOTTOM, "Amplitude", buf);
    +
    +			res = snprintf(buf, AVMD_CHAR_BUF_LEN, "%f", v_amp);
    +			if (res < 0 || res > AVMD_CHAR_BUF_LEN - 1) {
    +				switch_log_printf(SWITCH_CHANNEL_SESSION_LOG(fs_s), SWITCH_LOG_ERROR, "Error, truncated [%s], [%d] attempeted!\n", buf, res);
    +				switch_event_add_header_string(event, SWITCH_STACK_BOTTOM, "Amplitude-variance", "ERROR (TRUNCATED)");
    +			}
    +			switch_event_add_header_string(event, SWITCH_STACK_BOTTOM, "Amplitude-variance", buf);
    +
    +			detection_time = detection_stop_time - detection_start_time;
    +			res = snprintf(buf, AVMD_CHAR_BUF_LEN, "%" PRId64 "", detection_time);
    +			if (res < 0 || res > AVMD_CHAR_BUF_LEN - 1) {
    +				switch_log_printf(SWITCH_CHANNEL_SESSION_LOG(fs_s), SWITCH_LOG_ERROR, "Detection time truncated [%s], [%d] attempted!\n", buf, res);
    +				switch_event_add_header_string(event, SWITCH_STACK_BOTTOM, "Detection-time", "ERROR (TRUNCATED)");
    +			}
    +			switch_event_add_header_string(event, SWITCH_STACK_BOTTOM, "Detection-time", buf);
    +
    +			res = snprintf(buf, AVMD_CHAR_BUF_LEN, "%u", resolution);
    +			if (res < 0 || res > AVMD_CHAR_BUF_LEN - 1) {
    +				switch_log_printf(SWITCH_CHANNEL_SESSION_LOG(fs_s), SWITCH_LOG_ERROR, "Error, truncated [%s], [%d] attempeted!\n", buf, res);
    +				switch_event_add_header_string(event, SWITCH_STACK_BOTTOM, "Detector-resolution", "ERROR (TRUNCATED)");
    +			}
    +			switch_event_add_header_string(event, SWITCH_STACK_BOTTOM, "Detector-resolution", buf);
    +
    +			res = snprintf(buf, AVMD_CHAR_BUF_LEN, "%u", offset);
    +			if (res < 0 || res > AVMD_CHAR_BUF_LEN - 1) {
    +				switch_log_printf(SWITCH_CHANNEL_SESSION_LOG(fs_s), SWITCH_LOG_ERROR, "Error, truncated [%s], [%d] attempeted!\n", buf, res);
    +				switch_event_add_header_string(event, SWITCH_STACK_BOTTOM, "Detector-offset", "ERROR (TRUNCATED)");
    +			}
    +			switch_event_add_header_string(event, SWITCH_STACK_BOTTOM, "Detector-offset", buf);
    +
    +			res = snprintf(buf, AVMD_CHAR_BUF_LEN, "%u", idx);
    +			if (res < 0 || res > AVMD_CHAR_BUF_LEN - 1) {
    +				switch_log_printf(SWITCH_CHANNEL_SESSION_LOG(fs_s), SWITCH_LOG_ERROR, "Error, truncated [%s], [%d] attempeted!\n", buf, res);
    +				switch_event_add_header_string(event, SWITCH_STACK_BOTTOM, "Detector-index", "ERROR (TRUNCATED)");
    +			}
    +			switch_event_add_header_string(event, SWITCH_STACK_BOTTOM, "Detector-index", buf);
    +			break;
    +
    +		case AVMD_EVENT_SESSION_START:
    +			res = snprintf(buf, AVMD_CHAR_BUF_LEN, "%" PRId64 "", start_time);
    +			if (res < 0 || res > AVMD_CHAR_BUF_LEN - 1) {
    +				switch_log_printf(SWITCH_CHANNEL_SESSION_LOG(fs_s), SWITCH_LOG_ERROR, "Start time truncated [%s], [%d] attempted!\n", buf, res);
    +				switch_event_add_header_string(event, SWITCH_STACK_BOTTOM, "Start-time", "ERROR (TRUNCATED)");
    +			}
    +			switch_event_add_header_string(event, SWITCH_STACK_BOTTOM, "Start-time", buf);
    +			break;
    +
    +		case AVMD_EVENT_SESSION_STOP:
    +			switch_event_add_header_string(event, SWITCH_STACK_BOTTOM, "Beep-Status", beep_status == BEEP_DETECTED ? "DETECTED" : "NOTDETECTED");
    +			if (info == 0) {
    +				switch_event_add_header_string(event, SWITCH_STACK_BOTTOM, "Stop-status", "ERROR (AVMD SESSION OBJECT NOT FOUND IN MEDIA BUG)");
    +			}
    +			total_time = stop_time - start_time;
    +			res = snprintf(buf, AVMD_CHAR_BUF_LEN, "%" PRId64 "", total_time);
    +			if (res < 0 || res > AVMD_CHAR_BUF_LEN - 1) {
    +				switch_log_printf(SWITCH_CHANNEL_SESSION_LOG(fs_s), SWITCH_LOG_ERROR, "Total time truncated [%s], [%d] attempted!\n", buf, res);
    +				switch_event_add_header_string(event, SWITCH_STACK_BOTTOM, "Total-time", "ERROR (TRUNCATED)");
    +			}
    +			switch_event_add_header_string(event, SWITCH_STACK_BOTTOM, "Total-time", buf);
    +			break;
    +
    +		default:
    +			switch_event_destroy(&event);
    +			return;
    +	}
    +
    +	if ((switch_event_dup(&event_copy, event)) != SWITCH_STATUS_SUCCESS) {
    +		return;
    +	}
    +
    +	switch_core_session_queue_event(fs_s, &event);
    +	switch_event_fire(&event_copy);
    +	return;
     }
     
     int avmd_parse_u8_user_input(const char *input, uint8_t *output, uint8_t min, uint8_t max) {
    -    char            *pCh;
    -    unsigned long   helper;
    -    helper = strtoul(input, &pCh, 10);
    -    if (helper < min || helper > UINT8_MAX || helper > max || (pCh == input) || (*pCh != '\0')) {
    -        return -1;
    -    }
    -    *output = (uint8_t) helper;
    -    return 0;
    +	char *pCh;
    +	unsigned long helper;
    +	helper = strtoul(input, &pCh, 10);
    +	if (helper < min || helper > UINT8_MAX || helper > max || (pCh == input) || (*pCh != '\0')) {
    +		return -1;
    +	}
    +	*output = (uint8_t) helper;
    +	return 0;
     }
     
     int avmd_parse_u16_user_input(const char *input, uint16_t *output, uint16_t min, uint16_t max) {
    -    char            *pCh;
    -    unsigned long   helper;
    -    if (min > max) {
    -        return -1;
    -    }
    -    helper = strtoul(input, &pCh, 10);
    -    if (helper < min || helper > UINT16_MAX || helper > max || (pCh == input) || (*pCh != '\0')) {
    -        return -1;
    -    }
    -    *output = (uint16_t) helper;
    -    return 0;
    +	char *pCh;
    +	unsigned long helper;
    +	if (min > max) {
    +		return -1;
    +	}
    +	helper = strtoul(input, &pCh, 10);
    +	if (helper < min || helper > UINT16_MAX || helper > max || (pCh == input) || (*pCh != '\0')) {
    +		return -1;
    +	}
    +	*output = (uint16_t) helper;
    +	return 0;
     }
     
     static void avmd_set_xml_default_configuration(switch_mutex_t *mutex) {
    -    if (mutex != NULL) {
    -        switch_mutex_lock(mutex);
    -    }
    -
    -    avmd_globals.settings.debug = 0;
    -    avmd_globals.settings.report_status = 1;
    -    avmd_globals.settings.fast_math = 0;
    -    avmd_globals.settings.require_continuous_streak = 1;
    -    avmd_globals.settings.sample_n_continuous_streak = 3;
    -    avmd_globals.settings.sample_n_to_skip = 0;
    -    avmd_globals.settings.require_continuous_streak_amp = 1;
    -    avmd_globals.settings.sample_n_continuous_streak_amp = 3;
    -    avmd_globals.settings.simplified_estimation = 1;
    -    avmd_globals.settings.inbound_channnel = 0;
    -    avmd_globals.settings.outbound_channnel = 1;
    -    avmd_globals.settings.mode = AVMD_DETECT_BOTH;
    -    avmd_globals.settings.detectors_n = 36;
    -    avmd_globals.settings.detectors_lagged_n = 1;
    -
    -    if (mutex != NULL) {
    -        switch_mutex_unlock(avmd_globals.mutex);
    -    }
    -    return;
    +	if (mutex != NULL) {
    +		switch_mutex_lock(mutex);
    +	}
    +
    +	avmd_globals.settings.debug = 0;
    +	avmd_globals.settings.report_status = 1;
    +	avmd_globals.settings.fast_math = 0;
    +	avmd_globals.settings.require_continuous_streak = 1;
    +	avmd_globals.settings.sample_n_continuous_streak = 3;
    +	avmd_globals.settings.sample_n_to_skip = 0;
    +	avmd_globals.settings.require_continuous_streak_amp = 1;
    +	avmd_globals.settings.sample_n_continuous_streak_amp = 3;
    +	avmd_globals.settings.simplified_estimation = 1;
    +	avmd_globals.settings.inbound_channnel = 0;
    +	avmd_globals.settings.outbound_channnel = 1;
    +	avmd_globals.settings.mode = AVMD_DETECT_BOTH;
    +	avmd_globals.settings.detectors_n = 36;
    +	avmd_globals.settings.detectors_lagged_n = 1;
    +
    +	if (mutex != NULL) {
    +		switch_mutex_unlock(avmd_globals.mutex);
    +	}
    +	return;
     }
     
     static void avmd_set_xml_inbound_configuration(switch_mutex_t *mutex)
     {
    -    if (mutex != NULL) {
    -        switch_mutex_lock(mutex);
    -    }
    +	if (mutex != NULL) {
    +		switch_mutex_lock(mutex);
    +	}
     
    -    avmd_globals.settings.inbound_channnel = 1;
    -    avmd_globals.settings.outbound_channnel = 0;
    +	avmd_globals.settings.inbound_channnel = 1;
    +	avmd_globals.settings.outbound_channnel = 0;
     
    -    if (mutex != NULL) {
    -        switch_mutex_unlock(avmd_globals.mutex);
    -    }
    -    return;
    +	if (mutex != NULL) {
    +		switch_mutex_unlock(avmd_globals.mutex);
    +	}
    +	return;
     }
     
     static void avmd_set_xml_outbound_configuration(switch_mutex_t *mutex) {
    -    if (mutex != NULL) {
    -        switch_mutex_lock(mutex);
    -    }
    +	if (mutex != NULL) {
    +		switch_mutex_lock(mutex);
    +	}
     
    -    avmd_globals.settings.inbound_channnel = 0;
    -    avmd_globals.settings.outbound_channnel = 1;
    +	avmd_globals.settings.inbound_channnel = 0;
    +	avmd_globals.settings.outbound_channnel = 1;
     
    -    if (mutex != NULL) {
    -        switch_mutex_unlock(avmd_globals.mutex);
    -    }
    -    return;
    +	if (mutex != NULL) {
    +		switch_mutex_unlock(avmd_globals.mutex);
    +	}
    +	return;
     }
     
     static switch_status_t avmd_load_xml_configuration(switch_mutex_t *mutex) {
    @@ -1060,249 +1060,249 @@ static switch_status_t avmd_load_xml_configuration(switch_mutex_t *mutex) {
     }
     
     static switch_status_t avmd_load_xml_inbound_configuration(switch_mutex_t *mutex) {
    -    if (avmd_load_xml_configuration(mutex) != SWITCH_STATUS_SUCCESS) {
    -        return SWITCH_STATUS_TERM;
    -    }
    +	if (avmd_load_xml_configuration(mutex) != SWITCH_STATUS_SUCCESS) {
    +		return SWITCH_STATUS_TERM;
    +	}
     
    -    if (mutex != NULL) {
    -        switch_mutex_lock(mutex);
    -    }
    +	if (mutex != NULL) {
    +		switch_mutex_lock(mutex);
    +	}
     
    -    avmd_globals.settings.inbound_channnel = 1;
    -    avmd_globals.settings.outbound_channnel = 0;
    +	avmd_globals.settings.inbound_channnel = 1;
    +	avmd_globals.settings.outbound_channnel = 0;
     
    -    if (mutex != NULL) {
    -        switch_mutex_unlock(avmd_globals.mutex);
    -    }
    -    return SWITCH_STATUS_SUCCESS;
    +	if (mutex != NULL) {
    +		switch_mutex_unlock(avmd_globals.mutex);
    +	}
    +	return SWITCH_STATUS_SUCCESS;
     }
     
     static switch_status_t avmd_load_xml_outbound_configuration(switch_mutex_t *mutex) {
    -    if (avmd_load_xml_configuration(mutex) != SWITCH_STATUS_SUCCESS) {
    -        return SWITCH_STATUS_TERM;
    -    }
    +	if (avmd_load_xml_configuration(mutex) != SWITCH_STATUS_SUCCESS) {
    +		return SWITCH_STATUS_TERM;
    +	}
     
    -    if (mutex != NULL) {
    -        switch_mutex_lock(mutex);
    -    }
    +	if (mutex != NULL) {
    +		switch_mutex_lock(mutex);
    +	}
     
    -    avmd_globals.settings.inbound_channnel = 0;
    -    avmd_globals.settings.outbound_channnel = 1;
    +	avmd_globals.settings.inbound_channnel = 0;
    +	avmd_globals.settings.outbound_channnel = 1;
     
    -    if (mutex != NULL) {
    -        switch_mutex_unlock(avmd_globals.mutex);
    -    }
    -    return SWITCH_STATUS_SUCCESS;
    +	if (mutex != NULL) {
    +		switch_mutex_unlock(avmd_globals.mutex);
    +	}
    +	return SWITCH_STATUS_SUCCESS;
     }
     
     static void avmd_show(switch_stream_handle_t *stream, switch_mutex_t *mutex) {
    -    const char *line = "=================================================================================================";
    -    if (stream == NULL) {
    -        return;
    -    }
    -
    -    if (mutex != NULL) {
    -        switch_mutex_lock(mutex);
    -    }
    -
    -    stream->write_function(stream, "\n\n");
    -    stream->write_function(stream, "%s\n\n", line);
    -    stream->write_function(stream, "%s\n", "Avmd global settings\n\n");
    -    stream->write_function(stream, "debug                          \t%u\n", avmd_globals.settings.debug);
    -    stream->write_function(stream, "report status                  \t%u\n", avmd_globals.settings.report_status);
    -    stream->write_function(stream, "fast_math                      \t%u\n", avmd_globals.settings.fast_math);
    -    stream->write_function(stream, "require continuous streak      \t%u\n", avmd_globals.settings.require_continuous_streak);
    -    stream->write_function(stream, "sample n continuous streak     \t%u\n", avmd_globals.settings.sample_n_continuous_streak);
    -    stream->write_function(stream, "sample n to skip               \t%u\n", avmd_globals.settings.sample_n_to_skip);
    -    stream->write_function(stream, "require continuous streak amp  \t%u\n", avmd_globals.settings.require_continuous_streak_amp);
    -    stream->write_function(stream, "sample n continuous streak amp \t%u\n", avmd_globals.settings.sample_n_continuous_streak_amp);
    -    stream->write_function(stream, "simplified estimation          \t%u\n", avmd_globals.settings.simplified_estimation);
    -    stream->write_function(stream, "inbound channel                \t%u\n", avmd_globals.settings.inbound_channnel);
    -    stream->write_function(stream, "outbound channel               \t%u\n", avmd_globals.settings.outbound_channnel);
    -    stream->write_function(stream, "detection mode                 \t%u\n", avmd_globals.settings.mode);
    -    stream->write_function(stream, "sessions                       \t%"PRId64"\n", avmd_globals.session_n);
    -    stream->write_function(stream, "detectors n                    \t%u\n", avmd_globals.settings.detectors_n);
    -    stream->write_function(stream, "detectors lagged n             \t%u\n", avmd_globals.settings.detectors_lagged_n);
    -    stream->write_function(stream, "\n\n");
    -
    -    if (mutex != NULL) {
    -        switch_mutex_unlock(mutex);
    -    }
    +	const char *line = "=================================================================================================";
    +	if (stream == NULL) {
    +		return;
    +	}
    +
    +	if (mutex != NULL) {
    +		switch_mutex_lock(mutex);
    +	}
    +
    +	stream->write_function(stream, "\n\n");
    +	stream->write_function(stream, "%s\n\n", line);
    +	stream->write_function(stream, "%s\n", "Avmd global settings\n\n");
    +	stream->write_function(stream, "debug						  \t%u\n", avmd_globals.settings.debug);
    +	stream->write_function(stream, "report status				  \t%u\n", avmd_globals.settings.report_status);
    +	stream->write_function(stream, "fast_math					  \t%u\n", avmd_globals.settings.fast_math);
    +	stream->write_function(stream, "require continuous streak	  \t%u\n", avmd_globals.settings.require_continuous_streak);
    +	stream->write_function(stream, "sample n continuous streak	 \t%u\n", avmd_globals.settings.sample_n_continuous_streak);
    +	stream->write_function(stream, "sample n to skip			   \t%u\n", avmd_globals.settings.sample_n_to_skip);
    +	stream->write_function(stream, "require continuous streak amp  \t%u\n", avmd_globals.settings.require_continuous_streak_amp);
    +	stream->write_function(stream, "sample n continuous streak amp \t%u\n", avmd_globals.settings.sample_n_continuous_streak_amp);
    +	stream->write_function(stream, "simplified estimation		  \t%u\n", avmd_globals.settings.simplified_estimation);
    +	stream->write_function(stream, "inbound channel				\t%u\n", avmd_globals.settings.inbound_channnel);
    +	stream->write_function(stream, "outbound channel			   \t%u\n", avmd_globals.settings.outbound_channnel);
    +	stream->write_function(stream, "detection mode				 \t%u\n", avmd_globals.settings.mode);
    +	stream->write_function(stream, "sessions					   \t%"PRId64"\n", avmd_globals.session_n);
    +	stream->write_function(stream, "detectors n					\t%u\n", avmd_globals.settings.detectors_n);
    +	stream->write_function(stream, "detectors lagged n			 \t%u\n", avmd_globals.settings.detectors_lagged_n);
    +	stream->write_function(stream, "\n\n");
    +
    +	if (mutex != NULL) {
    +		switch_mutex_unlock(mutex);
    +	}
     }
     
     SWITCH_MODULE_LOAD_FUNCTION(mod_avmd_load) {
     #ifndef WIN32
    -    char    err[150];
    -    int     ret;
    +	char	err[150];
    +	int	 ret;
     #endif
     
    -    switch_application_interface_t *app_interface;
    -    switch_api_interface_t *api_interface;
    -    /* connect my internal structure to the blank pointer passed to me */
    -    *module_interface = switch_loadable_module_create_module_interface(pool, modname);
    -
    -    if (avmd_register_all_events() != SWITCH_STATUS_SUCCESS) {
    -        switch_log_printf(SWITCH_CHANNEL_LOG, SWITCH_LOG_ERROR, "Couldn't register avmd events!\n");
    -        return SWITCH_STATUS_TERM;
    -    }
    -
    -    memset(&avmd_globals, 0, sizeof(avmd_globals));
    -    if (pool == NULL) {
    -        switch_log_printf(SWITCH_CHANNEL_LOG, SWITCH_LOG_ERROR, "No memory pool assigned!\n");
    -        return SWITCH_STATUS_TERM;
    -    }
    -    switch_mutex_init(&avmd_globals.mutex, SWITCH_MUTEX_NESTED, pool);
    -    avmd_globals.pool = pool;
    -
    -    if (avmd_load_xml_configuration(NULL) != SWITCH_STATUS_SUCCESS) {
    -        switch_log_printf(SWITCH_CHANNEL_LOG, SWITCH_LOG_ERROR, "Couldn't load XML configuration! Loading default settings\n");
    -        avmd_set_xml_default_configuration(NULL);
    -    }
    -
    -    if ((switch_event_bind(modname, SWITCH_EVENT_RELOADXML, NULL, avmd_reloadxml_event_handler, NULL) != SWITCH_STATUS_SUCCESS)) {
    -        switch_log_printf(SWITCH_CHANNEL_LOG, SWITCH_LOG_ERROR, "Couldn't bind our reloadxml handler! Module will not react to changes made in XML configuration\n");
    -        /* Not so severe to prevent further loading, well - it depends, anyway */
    -    }
    +	switch_application_interface_t *app_interface;
    +	switch_api_interface_t *api_interface;
    +	/* connect my internal structure to the blank pointer passed to me */
    +	*module_interface = switch_loadable_module_create_module_interface(pool, modname);
    +
    +	if (avmd_register_all_events() != SWITCH_STATUS_SUCCESS) {
    +		switch_log_printf(SWITCH_CHANNEL_LOG, SWITCH_LOG_ERROR, "Couldn't register avmd events!\n");
    +		return SWITCH_STATUS_TERM;
    +	}
    +
    +	memset(&avmd_globals, 0, sizeof(avmd_globals));
    +	if (pool == NULL) {
    +		switch_log_printf(SWITCH_CHANNEL_LOG, SWITCH_LOG_ERROR, "No memory pool assigned!\n");
    +		return SWITCH_STATUS_TERM;
    +	}
    +	switch_mutex_init(&avmd_globals.mutex, SWITCH_MUTEX_NESTED, pool);
    +	avmd_globals.pool = pool;
    +
    +	if (avmd_load_xml_configuration(NULL) != SWITCH_STATUS_SUCCESS) {
    +		switch_log_printf(SWITCH_CHANNEL_LOG, SWITCH_LOG_ERROR, "Couldn't load XML configuration! Loading default settings\n");
    +		avmd_set_xml_default_configuration(NULL);
    +	}
    +
    +	if ((switch_event_bind(modname, SWITCH_EVENT_RELOADXML, NULL, avmd_reloadxml_event_handler, NULL) != SWITCH_STATUS_SUCCESS)) {
    +		switch_log_printf(SWITCH_CHANNEL_LOG, SWITCH_LOG_ERROR, "Couldn't bind our reloadxml handler! Module will not react to changes made in XML configuration\n");
    +		/* Not so severe to prevent further loading, well - it depends, anyway */
    +	}
     
     #ifndef WIN32
    -    if (avmd_globals.settings.fast_math == 1) {
    -        ret = init_fast_acosf();
    -        if (ret != 0) {
    -            strerror_r(errno, err, 150);
    -            switch (ret) {
    -
    -                case -1:
    -                    switch_log_printf(SWITCH_CHANNEL_LOG, SWITCH_LOG_ERROR, "Can't access file [%s], error [%s]\n", ACOS_TABLE_FILENAME, err);
    -                    break;
    -                case -2:
    -                    switch_log_printf(SWITCH_CHANNEL_LOG, SWITCH_LOG_ERROR, "Error creating file [%s], error [%s]\n", ACOS_TABLE_FILENAME, err);
    -                    break;
    -                case -3:
    -                    switch_log_printf(SWITCH_CHANNEL_LOG, SWITCH_LOG_ERROR, "Access rights are OK but can't open file [%s], error [%s]\n", ACOS_TABLE_FILENAME, err);
    -                    break;
    -                case -4:
    -                    switch_log_printf(SWITCH_CHANNEL_LOG, SWITCH_LOG_ERROR, "Access rights are OK but can't mmap file [%s], error [%s]\n",ACOS_TABLE_FILENAME, err);
    -                    break;
    -                default:
    -                    switch_log_printf(SWITCH_CHANNEL_LOG,SWITCH_LOG_ERROR, "Unknown error [%d] while initializing fast cos table [%s], errno [%s]\n", ret, ACOS_TABLE_FILENAME, err);
    -                    return SWITCH_STATUS_TERM;
    -            }
    -            return SWITCH_STATUS_TERM;
    -        } else
    -            switch_log_printf(SWITCH_CHANNEL_LOG, SWITCH_LOG_NOTICE, "Advanced voicemail detection: fast math enabled, arc cosine table is [%s]\n", ACOS_TABLE_FILENAME);
    -    }
    +	if (avmd_globals.settings.fast_math == 1) {
    +		ret = init_fast_acosf();
    +		if (ret != 0) {
    +			strerror_r(errno, err, 150);
    +			switch (ret) {
    +
    +				case -1:
    +					switch_log_printf(SWITCH_CHANNEL_LOG, SWITCH_LOG_ERROR, "Can't access file [%s], error [%s]\n", ACOS_TABLE_FILENAME, err);
    +					break;
    +				case -2:
    +					switch_log_printf(SWITCH_CHANNEL_LOG, SWITCH_LOG_ERROR, "Error creating file [%s], error [%s]\n", ACOS_TABLE_FILENAME, err);
    +					break;
    +				case -3:
    +					switch_log_printf(SWITCH_CHANNEL_LOG, SWITCH_LOG_ERROR, "Access rights are OK but can't open file [%s], error [%s]\n", ACOS_TABLE_FILENAME, err);
    +					break;
    +				case -4:
    +					switch_log_printf(SWITCH_CHANNEL_LOG, SWITCH_LOG_ERROR, "Access rights are OK but can't mmap file [%s], error [%s]\n",ACOS_TABLE_FILENAME, err);
    +					break;
    +				default:
    +					switch_log_printf(SWITCH_CHANNEL_LOG,SWITCH_LOG_ERROR, "Unknown error [%d] while initializing fast cos table [%s], errno [%s]\n", ret, ACOS_TABLE_FILENAME, err);
    +					return SWITCH_STATUS_TERM;
    +			}
    +			return SWITCH_STATUS_TERM;
    +		} else
    +			switch_log_printf(SWITCH_CHANNEL_LOG, SWITCH_LOG_NOTICE, "Advanced voicemail detection: fast math enabled, arc cosine table is [%s]\n", ACOS_TABLE_FILENAME);
    +	}
     #endif
     
    -    SWITCH_ADD_APP(app_interface, "avmd_start","Start avmd detection", "Start avmd detection", avmd_start_app, "", SAF_NONE);
    -    SWITCH_ADD_APP(app_interface, "avmd_stop","Stop avmd detection", "Stop avmd detection", avmd_stop_app, "", SAF_NONE);
    -    SWITCH_ADD_APP(app_interface, "avmd","Beep detection", "Advanced detection of voicemail beeps", avmd_start_function, AVMD_SYNTAX, SAF_NONE);
    +	SWITCH_ADD_APP(app_interface, "avmd_start","Start avmd detection", "Start avmd detection", avmd_start_app, "", SAF_NONE);
    +	SWITCH_ADD_APP(app_interface, "avmd_stop","Stop avmd detection", "Stop avmd detection", avmd_stop_app, "", SAF_NONE);
    +	SWITCH_ADD_APP(app_interface, "avmd","Beep detection", "Advanced detection of voicemail beeps", avmd_start_function, AVMD_SYNTAX, SAF_NONE);
     
    -    SWITCH_ADD_API(api_interface, "avmd", "Voicemail beep detection", avmd_api_main, AVMD_SYNTAX);
    +	SWITCH_ADD_API(api_interface, "avmd", "Voicemail beep detection", avmd_api_main, AVMD_SYNTAX);
     
    -    switch_console_set_complete("add avmd ::console::list_uuid ::[start:stop");
    -    switch_console_set_complete("add avmd set inbound");    /* set inbound = 1, outbound = 0 */
    -    switch_console_set_complete("add avmd set outbound");   /* set inbound = 0, outbound = 1 */
    -    switch_console_set_complete("add avmd set default");    /* restore to factory settings */
    -    switch_console_set_complete("add avmd load inbound");   /* reload + set inbound */
    -    switch_console_set_complete("add avmd load outbound");  /* reload + set outbound */
    -    switch_console_set_complete("add avmd reload");         /* reload XML (it loads from FS installation
    -                                                             * folder, not module's conf/autoload_configs */
    -    switch_console_set_complete("add avmd show");
    +	switch_console_set_complete("add avmd ::console::list_uuid ::[start:stop");
    +	switch_console_set_complete("add avmd set inbound");	/* set inbound = 1, outbound = 0 */
    +	switch_console_set_complete("add avmd set outbound");   /* set inbound = 0, outbound = 1 */
    +	switch_console_set_complete("add avmd set default");	/* restore to factory settings */
    +	switch_console_set_complete("add avmd load inbound");   /* reload + set inbound */
    +	switch_console_set_complete("add avmd load outbound");  /* reload + set outbound */
    +	switch_console_set_complete("add avmd reload");		 /* reload XML (it loads from FS installation
    +															 * folder, not module's conf/autoload_configs */
    +	switch_console_set_complete("add avmd show");
     
    -    switch_log_printf(SWITCH_CHANNEL_LOG, SWITCH_LOG_NOTICE, "Advanced voicemail detection enabled\n");
    +	switch_log_printf(SWITCH_CHANNEL_LOG, SWITCH_LOG_NOTICE, "Advanced voicemail detection enabled\n");
     
    -    return SWITCH_STATUS_SUCCESS; /* indicate that the module should continue to be loaded */
    +	return SWITCH_STATUS_SUCCESS; /* indicate that the module should continue to be loaded */
     }
     
     void avmd_config_dump(avmd_session_t *s) {
    -    struct avmd_settings *settings;
    -
    -    if (s == NULL) {
    -        return;
    -    }
    -    settings = &s->settings;
    -    switch_log_printf(SWITCH_CHANNEL_SESSION_LOG(s->session), SWITCH_LOG_INFO, "Avmd dynamic configuration: debug [%u], report_status [%u], fast_math [%u],"
    -            " require_continuous_streak [%u], sample_n_continuous_streak [%u], sample_n_to_skip [%u], require_continuous_streak_amp [%u], sample_n_continuous_streak_amp [%u],"
    -           " simplified_estimation [%u], inbound_channel [%u], outbound_channel [%u], detection_mode [%u], detectors_n [%u], detectors_lagged_n [%u]\n",
    -            settings->debug, settings->report_status, settings->fast_math, settings->require_continuous_streak, settings->sample_n_continuous_streak,
    -            settings->sample_n_to_skip, settings->require_continuous_streak_amp, settings->sample_n_continuous_streak_amp,
    -            settings->simplified_estimation, settings->inbound_channnel, settings->outbound_channnel, settings->mode, settings->detectors_n, settings->detectors_lagged_n);
    -    return;
    +	struct avmd_settings *settings;
    +
    +	if (s == NULL) {
    +		return;
    +	}
    +	settings = &s->settings;
    +	switch_log_printf(SWITCH_CHANNEL_SESSION_LOG(s->session), SWITCH_LOG_INFO, "Avmd dynamic configuration: debug [%u], report_status [%u], fast_math [%u],"
    +			" require_continuous_streak [%u], sample_n_continuous_streak [%u], sample_n_to_skip [%u], require_continuous_streak_amp [%u], sample_n_continuous_streak_amp [%u],"
    +		   " simplified_estimation [%u], inbound_channel [%u], outbound_channel [%u], detection_mode [%u], detectors_n [%u], detectors_lagged_n [%u]\n",
    +			settings->debug, settings->report_status, settings->fast_math, settings->require_continuous_streak, settings->sample_n_continuous_streak,
    +			settings->sample_n_to_skip, settings->require_continuous_streak_amp, settings->sample_n_continuous_streak_amp,
    +			settings->simplified_estimation, settings->inbound_channnel, settings->outbound_channnel, settings->mode, settings->detectors_n, settings->detectors_lagged_n);
    +	return;
     }
     
     static switch_status_t avmd_parse_cmd_data_one_entry(char *candidate, struct avmd_settings *settings) {
    -    char        *candidate_parsed[3];
    -    int         argc;
    -    const char *key;
    -    const char *val;
    -
    -    if (settings == NULL) {
    -        return SWITCH_STATUS_TERM;
    -    }
    -    if (candidate == NULL) {
    -        return SWITCH_STATUS_NOOP;
    -    }
    -
    -    argc = switch_separate_string(candidate, '=', candidate_parsed, (sizeof(candidate_parsed) / sizeof(candidate_parsed[0])));
    -    if (argc > 2) { /* currently we accept only option=value syntax */
    -        return SWITCH_STATUS_IGNORE;
    -    }
    -
    -    /* this may be option parameter if valid */
    -    key = candidate_parsed[0];      /* option name */
    -    if (zstr(key)) { /* empty key */
    -        return SWITCH_STATUS_NOT_INITALIZED;
    -    }
    -    val = candidate_parsed[1];      /* value of the option: whole string starting at 1 past the '=' */
    -    if (zstr(val)) { /* nothing after "=" found, empty value */
    -        return SWITCH_STATUS_MORE_DATA;
    -    }
    -    /* candidate string has "=" somewhere in the middle and some value,
    -     * try to find what option it is by comparing at most given number of bytes */
    -    if (!strcmp(key, "debug")) {
    -        settings->debug = (uint8_t) switch_true(val);
    -    } else if (!strcmp(key, "report_status")) {
    -        settings->report_status = (uint8_t) switch_true(val);
    -    } else if (!strcmp(key, "fast_math")) {
    -        settings->fast_math = (uint8_t) switch_true(val);
    -    } else if (!strcmp(key, "require_continuous_streak")) {
    -        settings->require_continuous_streak = (uint8_t) switch_true(val);
    -    } else if (!strcmp(key, "sample_n_continuous_streak")) {
    -        if(avmd_parse_u16_user_input(val, &settings->sample_n_continuous_streak, 0, UINT16_MAX) == -1) {
    -            return SWITCH_STATUS_FALSE;
    -        }
    -    } else if (!strcmp(key, "sample_n_to_skip")) {
    -        if(avmd_parse_u16_user_input(val, &settings->sample_n_to_skip, 0, UINT16_MAX) == -1) {
    -            return SWITCH_STATUS_FALSE;
    -        }
    -    } else if (!strcmp(key, "require_continuous_streak_amp")) {
    -        settings->require_continuous_streak_amp = (uint8_t) switch_true(val);
    -    } else if (!strcmp(key, "sample_n_continuous_streak_amp")) {
    -        if(avmd_parse_u16_user_input(val, &settings->sample_n_continuous_streak_amp, 0, UINT16_MAX) == -1) {
    -            return SWITCH_STATUS_FALSE;
    -        }
    -    } else if (!strcmp(key, "simplified_estimation")) {
    -        settings->simplified_estimation = (uint8_t) switch_true(val);
    -    } else if (!strcmp(key, "inbound_channel")) {
    -        settings->inbound_channnel = (uint8_t) switch_true(val);
    -    } else if (!strcmp(key, "outbound_channel")) {
    -        settings->outbound_channnel = (uint8_t) switch_true(val);
    -    } else if (!strcmp(key, "detection_mode")) {
    -        if(avmd_parse_u8_user_input(val, (uint8_t*)&settings->mode, 0, 2) == -1) {
    -            return SWITCH_STATUS_FALSE;
    -        }
    -    } else if (!strcmp(key, "detectors_n")) {
    -        if(avmd_parse_u8_user_input(val, &settings->detectors_n, 0, UINT8_MAX) == -1) {
    -            return SWITCH_STATUS_FALSE;
    -        }
    -    } else if (!strcmp(key, "detectors_lagged_n")) {
    -        if(avmd_parse_u8_user_input(val, &settings->detectors_lagged_n, 0, UINT8_MAX) == -1) {
    -            return SWITCH_STATUS_FALSE;
    -        }
    -    } else {
    -        return SWITCH_STATUS_NOTFOUND;
    -    }
    -    return SWITCH_STATUS_SUCCESS;
    +	char *candidate_parsed[3];
    +	int argc;
    +	const char *key;
    +	const char *val;
    +
    +	if (settings == NULL) {
    +		return SWITCH_STATUS_TERM;
    +	}
    +	if (candidate == NULL) {
    +		return SWITCH_STATUS_NOOP;
    +	}
    +
    +	argc = switch_separate_string(candidate, '=', candidate_parsed, (sizeof(candidate_parsed) / sizeof(candidate_parsed[0])));
    +	if (argc > 2) { /* currently we accept only option=value syntax */
    +		return SWITCH_STATUS_IGNORE;
    +	}
    +
    +	/* this may be option parameter if valid */
    +	key = candidate_parsed[0];	  /* option name */
    +	if (zstr(key)) { /* empty key */
    +		return SWITCH_STATUS_NOT_INITALIZED;
    +	}
    +	val = candidate_parsed[1];	  /* value of the option: whole string starting at 1 past the '=' */
    +	if (zstr(val)) { /* nothing after "=" found, empty value */
    +		return SWITCH_STATUS_MORE_DATA;
    +	}
    +	/* candidate string has "=" somewhere in the middle and some value,
    +	 * try to find what option it is by comparing at most given number of bytes */
    +	if (!strcmp(key, "debug")) {
    +		settings->debug = (uint8_t) switch_true(val);
    +	} else if (!strcmp(key, "report_status")) {
    +		settings->report_status = (uint8_t) switch_true(val);
    +	} else if (!strcmp(key, "fast_math")) {
    +		settings->fast_math = (uint8_t) switch_true(val);
    +	} else if (!strcmp(key, "require_continuous_streak")) {
    +		settings->require_continuous_streak = (uint8_t) switch_true(val);
    +	} else if (!strcmp(key, "sample_n_continuous_streak")) {
    +		if(avmd_parse_u16_user_input(val, &settings->sample_n_continuous_streak, 0, UINT16_MAX) == -1) {
    +			return SWITCH_STATUS_FALSE;
    +		}
    +	} else if (!strcmp(key, "sample_n_to_skip")) {
    +		if(avmd_parse_u16_user_input(val, &settings->sample_n_to_skip, 0, UINT16_MAX) == -1) {
    +			return SWITCH_STATUS_FALSE;
    +		}
    +	} else if (!strcmp(key, "require_continuous_streak_amp")) {
    +		settings->require_continuous_streak_amp = (uint8_t) switch_true(val);
    +	} else if (!strcmp(key, "sample_n_continuous_streak_amp")) {
    +		if(avmd_parse_u16_user_input(val, &settings->sample_n_continuous_streak_amp, 0, UINT16_MAX) == -1) {
    +			return SWITCH_STATUS_FALSE;
    +		}
    +	} else if (!strcmp(key, "simplified_estimation")) {
    +		settings->simplified_estimation = (uint8_t) switch_true(val);
    +	} else if (!strcmp(key, "inbound_channel")) {
    +		settings->inbound_channnel = (uint8_t) switch_true(val);
    +	} else if (!strcmp(key, "outbound_channel")) {
    +		settings->outbound_channnel = (uint8_t) switch_true(val);
    +	} else if (!strcmp(key, "detection_mode")) {
    +		if(avmd_parse_u8_user_input(val, (uint8_t*)&settings->mode, 0, 2) == -1) {
    +			return SWITCH_STATUS_FALSE;
    +		}
    +	} else if (!strcmp(key, "detectors_n")) {
    +		if(avmd_parse_u8_user_input(val, &settings->detectors_n, 0, UINT8_MAX) == -1) {
    +			return SWITCH_STATUS_FALSE;
    +		}
    +	} else if (!strcmp(key, "detectors_lagged_n")) {
    +		if(avmd_parse_u8_user_input(val, &settings->detectors_lagged_n, 0, UINT8_MAX) == -1) {
    +			return SWITCH_STATUS_FALSE;
    +		}
    +	} else {
    +		return SWITCH_STATUS_NOTFOUND;
    +	}
    +	return SWITCH_STATUS_SUCCESS;
     }
     
     /* RCU style: reads, copies and then updates only if everything is fine,
    @@ -1310,740 +1310,740 @@ static switch_status_t avmd_parse_cmd_data_one_entry(char *candidate, struct avm
      * are updated accordingly to @cmd_data, if SWITCH_STATUS_FALSE then
      * parsing error occurred and avmd session is left untouched */
     static switch_status_t avmd_parse_cmd_data(avmd_session_t *s, const char *cmd_data, enum avmd_app app) {
    -    char *mydata;
    -    struct avmd_settings    settings;
    -    int argc = 0, idx;
    -    char *argv[AVMD_PARAMS_APP_MAX * 2] = { 0 };
    -    switch_status_t status = SWITCH_STATUS_SUCCESS;
    -
    -    if (s == NULL) {
    -        return SWITCH_STATUS_NOOP;
    -    }
    -
    -    memcpy(&settings, &avmd_globals.settings, sizeof (struct avmd_settings));   /* copy globally set settings first */
    -    if (zstr(cmd_data)) {
    -        goto end_copy;
    -    }
    -
    -    switch (app) {
    -
    -        case AVMD_APP_START_APP:
    -            /* try to parse settings */
    -            mydata = switch_core_session_strdup(s->session, cmd_data);
    -            argc = switch_separate_string(mydata, ',', argv, (sizeof(argv) / sizeof(argv[0])));
    -            if (argc < AVMD_PARAMS_APP_START_MIN || argc > AVMD_PARAMS_APP_START_MAX) {
    -                switch_log_printf(SWITCH_CHANNEL_SESSION_LOG(s->session), SWITCH_LOG_ERROR,
    -                        "Syntax Error, avmd_start APP takes [%u] to [%u] parameters\n",
    -                        AVMD_PARAMS_APP_START_MIN, AVMD_PARAMS_APP_START_MAX);
    -                switch_goto_status(SWITCH_STATUS_MORE_DATA, fail);
    -            }
    -            /* iterate over params, check if they mean something to us, set */
    -            idx = 0;
    -            while (idx < argc) {
    -                switch_assert(argv[idx]);
    -                status = avmd_parse_cmd_data_one_entry(argv[idx], &settings);
    -                if (status != SWITCH_STATUS_SUCCESS) {
    -                    if (argv[idx]) {
    -                        switch_log_printf(SWITCH_CHANNEL_SESSION_LOG(s->session), SWITCH_LOG_ERROR,
    -                            "Error parsing option [%d] [%s]\n", idx + 1, argv[idx]);    /* idx + 1 to report option 0 as 1 for users convenience */
    -                    }
    -                    switch (status)
    -                    {
    -                        case SWITCH_STATUS_TERM:
    -                            switch_log_printf(SWITCH_CHANNEL_SESSION_LOG(s->session), SWITCH_LOG_ERROR,
    -                                    "NULL settings struct passed to parser\n");
    -                            break;
    -                        case SWITCH_STATUS_NOOP:
    -                            switch_log_printf(SWITCH_CHANNEL_SESSION_LOG(s->session), SWITCH_LOG_ERROR,
    -                                    "NULL settings string passed to parser\n");
    -                            break;
    -                        case SWITCH_STATUS_IGNORE:
    -                            switch_log_printf(SWITCH_CHANNEL_SESSION_LOG(s->session), SWITCH_LOG_ERROR,
    -                                    "Syntax error. Currently we accept only option=value syntax\n");
    -                            break;
    -                        case SWITCH_STATUS_NOT_INITALIZED:
    -                            switch_log_printf(SWITCH_CHANNEL_SESSION_LOG(s->session), SWITCH_LOG_ERROR,
    -                                    "Syntax error. No key specified\n");
    -                            break;
    -                        case SWITCH_STATUS_MORE_DATA:
    -                            switch_log_printf(SWITCH_CHANNEL_SESSION_LOG(s->session), SWITCH_LOG_ERROR,
    -                                    "Syntax error. No value for the key? Currently we accept only option=value syntax\n");
    -                            break;
    -                        case SWITCH_STATUS_FALSE:
    -                            switch_log_printf(SWITCH_CHANNEL_SESSION_LOG(s->session), SWITCH_LOG_ERROR,
    -                                    "Bad value for this option\n");
    -                            break;
    -                        case SWITCH_STATUS_NOTFOUND:
    -                            switch_log_printf(SWITCH_CHANNEL_SESSION_LOG(s->session), SWITCH_LOG_ERROR,
    -                                    "Option not found. Please check option name is correct\n");
    -                            break;
    -                        default:
    -                            break;
    -                    }
    -                    status = SWITCH_STATUS_FALSE;
    -                    goto fail;
    -                }
    -                ++idx;
    -            }
    -            /* OK */
    -            goto end_copy;
    -        default:
    -            switch_log_printf(SWITCH_CHANNEL_SESSION_LOG(s->session), SWITCH_LOG_ERROR, "There is no app with index [%u] for avmd\n", app);
    -            switch_goto_status(SWITCH_STATUS_NOTFOUND, fail);
    -    }
    +	char *mydata;
    +	struct avmd_settings settings;
    +	int argc = 0, idx;
    +	char *argv[AVMD_PARAMS_APP_MAX * 2] = { 0 };
    +	switch_status_t status = SWITCH_STATUS_SUCCESS;
    +
    +	if (s == NULL) {
    +		return SWITCH_STATUS_NOOP;
    +	}
    +
    +	memcpy(&settings, &avmd_globals.settings, sizeof (struct avmd_settings));   /* copy globally set settings first */
    +	if (zstr(cmd_data)) {
    +		goto end_copy;
    +	}
    +
    +	switch (app) {
    +
    +		case AVMD_APP_START_APP:
    +			/* try to parse settings */
    +			mydata = switch_core_session_strdup(s->session, cmd_data);
    +			argc = switch_separate_string(mydata, ',', argv, (sizeof(argv) / sizeof(argv[0])));
    +			if (argc < AVMD_PARAMS_APP_START_MIN || argc > AVMD_PARAMS_APP_START_MAX) {
    +				switch_log_printf(SWITCH_CHANNEL_SESSION_LOG(s->session), SWITCH_LOG_ERROR,
    +						"Syntax Error, avmd_start APP takes [%u] to [%u] parameters\n",
    +						AVMD_PARAMS_APP_START_MIN, AVMD_PARAMS_APP_START_MAX);
    +				switch_goto_status(SWITCH_STATUS_MORE_DATA, fail);
    +			}
    +			/* iterate over params, check if they mean something to us, set */
    +			idx = 0;
    +			while (idx < argc) {
    +				switch_assert(argv[idx]);
    +				status = avmd_parse_cmd_data_one_entry(argv[idx], &settings);
    +				if (status != SWITCH_STATUS_SUCCESS) {
    +					if (argv[idx]) {
    +						switch_log_printf(SWITCH_CHANNEL_SESSION_LOG(s->session), SWITCH_LOG_ERROR,
    +							"Error parsing option [%d] [%s]\n", idx + 1, argv[idx]);	/* idx + 1 to report option 0 as 1 for users convenience */
    +					}
    +					switch (status)
    +					{
    +						case SWITCH_STATUS_TERM:
    +							switch_log_printf(SWITCH_CHANNEL_SESSION_LOG(s->session), SWITCH_LOG_ERROR,
    +									"NULL settings struct passed to parser\n");
    +							break;
    +						case SWITCH_STATUS_NOOP:
    +							switch_log_printf(SWITCH_CHANNEL_SESSION_LOG(s->session), SWITCH_LOG_ERROR,
    +									"NULL settings string passed to parser\n");
    +							break;
    +						case SWITCH_STATUS_IGNORE:
    +							switch_log_printf(SWITCH_CHANNEL_SESSION_LOG(s->session), SWITCH_LOG_ERROR,
    +									"Syntax error. Currently we accept only option=value syntax\n");
    +							break;
    +						case SWITCH_STATUS_NOT_INITALIZED:
    +							switch_log_printf(SWITCH_CHANNEL_SESSION_LOG(s->session), SWITCH_LOG_ERROR,
    +									"Syntax error. No key specified\n");
    +							break;
    +						case SWITCH_STATUS_MORE_DATA:
    +							switch_log_printf(SWITCH_CHANNEL_SESSION_LOG(s->session), SWITCH_LOG_ERROR,
    +									"Syntax error. No value for the key? Currently we accept only option=value syntax\n");
    +							break;
    +						case SWITCH_STATUS_FALSE:
    +							switch_log_printf(SWITCH_CHANNEL_SESSION_LOG(s->session), SWITCH_LOG_ERROR,
    +									"Bad value for this option\n");
    +							break;
    +						case SWITCH_STATUS_NOTFOUND:
    +							switch_log_printf(SWITCH_CHANNEL_SESSION_LOG(s->session), SWITCH_LOG_ERROR,
    +									"Option not found. Please check option name is correct\n");
    +							break;
    +						default:
    +							break;
    +					}
    +					status = SWITCH_STATUS_FALSE;
    +					goto fail;
    +				}
    +				++idx;
    +			}
    +			/* OK */
    +			goto end_copy;
    +		default:
    +			switch_log_printf(SWITCH_CHANNEL_SESSION_LOG(s->session), SWITCH_LOG_ERROR, "There is no app with index [%u] for avmd\n", app);
    +			switch_goto_status(SWITCH_STATUS_NOTFOUND, fail);
    +	}
     
     end_copy:
    -    memcpy(&s->settings, &settings, sizeof (struct avmd_settings)); /* commit the change */
    -    return SWITCH_STATUS_SUCCESS;
    +	memcpy(&s->settings, &settings, sizeof (struct avmd_settings)); /* commit the change */
    +	return SWITCH_STATUS_SUCCESS;
     fail:
    -    return status;
    +	return status;
     }
     
     SWITCH_STANDARD_APP(avmd_start_app) {
    -    switch_media_bug_t  *bug = NULL;
    -    switch_status_t     status = SWITCH_STATUS_FALSE;
    -    switch_channel_t    *channel = NULL;
    -    avmd_session_t      *avmd_session = NULL;
    -    switch_core_media_flag_t flags = 0;
    +	switch_media_bug_t *bug = NULL;
    +	switch_status_t status = SWITCH_STATUS_FALSE;
    +	switch_channel_t *channel = NULL;
    +	avmd_session_t *avmd_session = NULL;
    +	switch_core_media_flag_t flags = 0;
     	const char *direction = "NO DIRECTION";
     	uint8_t report = 0;
     
    -    if (session == NULL) {
    -        switch_log_printf(SWITCH_CHANNEL_SESSION_LOG(session), SWITCH_LOG_ERROR, "BUGGG. FreeSWITCH session is NULL! Please report to developers\n");
    -        return;
    -    }
    -
    -    /* Get current channel of the session to tag the session. This indicates that our module is present
    -     * At this moment this cannot return NULL, it will either succeed or assert failed, but we make ourself secure anyway */
    -    channel = switch_core_session_get_channel(session);
    -    if (channel == NULL) {
    -        switch_log_printf(SWITCH_CHANNEL_SESSION_LOG(session), SWITCH_LOG_ERROR, "BUGGG. No channel for FreeSWITCH session! Please report this to the developers.\n");
    -        goto end;
    -    }
    -
    -    bug = (switch_media_bug_t *) switch_channel_get_private(channel, "_avmd_"); /* Is this channel already set? */
    -    if (bug != NULL) { /* We have already started */
    -        switch_log_printf(SWITCH_CHANNEL_SESSION_LOG(session), SWITCH_LOG_ERROR, "Avmd already started!\n");
    -        return;
    -    }
    -
    -    /* Allocate memory attached to this FreeSWITCH session for use in the callback routine and to store state information */
    -    avmd_session = (avmd_session_t *) switch_core_session_alloc(session, sizeof(avmd_session_t));
    -    if (avmd_session == NULL) {
    -        switch_log_printf(SWITCH_CHANNEL_SESSION_LOG(session), SWITCH_LOG_ERROR, "Can't allocate memory for avmd session!\n");
    -        status = SWITCH_STATUS_FALSE;
    -        goto end;
    -    }
    -    avmd_session->session = session;
    -
    -    status = avmd_parse_cmd_data(avmd_session, data, AVMD_APP_START_APP);   /* dynamic configuation */
    -    switch (status) {
    -        case SWITCH_STATUS_SUCCESS:
    -            break;
    -        case SWITCH_STATUS_NOOP:
    -            switch_log_printf(SWITCH_CHANNEL_SESSION_LOG(session), SWITCH_LOG_ERROR, "Failed to set dynamic parameters for avmd session. Session is NULL!\n");
    -            goto end;
    -        case SWITCH_STATUS_FALSE:
    -            switch_log_printf(SWITCH_CHANNEL_SESSION_LOG(session), SWITCH_LOG_ERROR, "Failed to set dynamic parameters for avmd session. Parsing error, please check the parameters passed to this APP.\n");
    -            goto end;
    -        default:
    -            switch_log_printf(SWITCH_CHANNEL_SESSION_LOG(session), SWITCH_LOG_ERROR, "Failed to set dynamic parameteres for avmd session. Unknown error\n");
    -            goto end;
    -    }
    +	if (session == NULL) {
    +		switch_log_printf(SWITCH_CHANNEL_SESSION_LOG(session), SWITCH_LOG_ERROR, "BUGGG. FreeSWITCH session is NULL! Please report to developers\n");
    +		return;
    +	}
    +
    +	/* Get current channel of the session to tag the session. This indicates that our module is present
    +	 * At this moment this cannot return NULL, it will either succeed or assert failed, but we make ourself secure anyway */
    +	channel = switch_core_session_get_channel(session);
    +	if (channel == NULL) {
    +		switch_log_printf(SWITCH_CHANNEL_SESSION_LOG(session), SWITCH_LOG_ERROR, "BUGGG. No channel for FreeSWITCH session! Please report this to the developers.\n");
    +		goto end;
    +	}
    +
    +	bug = (switch_media_bug_t *) switch_channel_get_private(channel, "_avmd_"); /* Is this channel already set? */
    +	if (bug != NULL) { /* We have already started */
    +		switch_log_printf(SWITCH_CHANNEL_SESSION_LOG(session), SWITCH_LOG_ERROR, "Avmd already started!\n");
    +		return;
    +	}
    +
    +	/* Allocate memory attached to this FreeSWITCH session for use in the callback routine and to store state information */
    +	avmd_session = (avmd_session_t *) switch_core_session_alloc(session, sizeof(avmd_session_t));
    +	if (avmd_session == NULL) {
    +		switch_log_printf(SWITCH_CHANNEL_SESSION_LOG(session), SWITCH_LOG_ERROR, "Can't allocate memory for avmd session!\n");
    +		status = SWITCH_STATUS_FALSE;
    +		goto end;
    +	}
    +	avmd_session->session = session;
    +
    +	status = avmd_parse_cmd_data(avmd_session, data, AVMD_APP_START_APP);   /* dynamic configuation */
    +	switch (status) {
    +		case SWITCH_STATUS_SUCCESS:
    +			break;
    +		case SWITCH_STATUS_NOOP:
    +			switch_log_printf(SWITCH_CHANNEL_SESSION_LOG(session), SWITCH_LOG_ERROR, "Failed to set dynamic parameters for avmd session. Session is NULL!\n");
    +			goto end;
    +		case SWITCH_STATUS_FALSE:
    +			switch_log_printf(SWITCH_CHANNEL_SESSION_LOG(session), SWITCH_LOG_ERROR, "Failed to set dynamic parameters for avmd session. Parsing error, please check the parameters passed to this APP.\n");
    +			goto end;
    +		default:
    +			switch_log_printf(SWITCH_CHANNEL_SESSION_LOG(session), SWITCH_LOG_ERROR, "Failed to set dynamic parameteres for avmd session. Unknown error\n");
    +			goto end;
    +	}
     	
     	report = avmd_session->settings.report_status;
     
    -    status = init_avmd_session_data(avmd_session, session, avmd_globals.mutex);
    -    if (status != SWITCH_STATUS_SUCCESS) {
    -        switch (status) {
    -            case SWITCH_STATUS_MEMERR:
    -                switch_log_printf(SWITCH_CHANNEL_SESSION_LOG(session), SWITCH_LOG_ERROR, "Failed to init avmd session. Buffer error!\n");
    -                break;
    -            case SWITCH_STATUS_MORE_DATA:
    -                switch_log_printf(SWITCH_CHANNEL_SESSION_LOG(session), SWITCH_LOG_ERROR, "Failed to init avmd session. SMA buffer size is 0!\n");
    -                break;
    -            case SWITCH_STATUS_FALSE:
    -                switch_log_printf(SWITCH_CHANNEL_SESSION_LOG(session), SWITCH_LOG_ERROR, "Failed to init avmd session. SMA buffers error\n");
    -                break;
    -            default:
    -                switch_log_printf(SWITCH_CHANNEL_SESSION_LOG(session), SWITCH_LOG_ERROR, "Failed to init avmd session. Unknown error\n");
    -                break;
    -        }
    -        goto end;
    -    }
    -
    -    switch_mutex_lock(avmd_session->mutex);
    -    if (avmd_session->settings.report_status == 1) { /* dump dynamic parameters */
    -        avmd_config_dump(avmd_session);
    -    }
    -    if ((SWITCH_CALL_DIRECTION_OUTBOUND == switch_channel_direction(channel)) && (avmd_session->settings.outbound_channnel == 1)) {
    -            flags |= SMBF_READ_REPLACE;
    +	status = init_avmd_session_data(avmd_session, session, avmd_globals.mutex);
    +	if (status != SWITCH_STATUS_SUCCESS) {
    +		switch (status) {
    +			case SWITCH_STATUS_MEMERR:
    +				switch_log_printf(SWITCH_CHANNEL_SESSION_LOG(session), SWITCH_LOG_ERROR, "Failed to init avmd session. Buffer error!\n");
    +				break;
    +			case SWITCH_STATUS_MORE_DATA:
    +				switch_log_printf(SWITCH_CHANNEL_SESSION_LOG(session), SWITCH_LOG_ERROR, "Failed to init avmd session. SMA buffer size is 0!\n");
    +				break;
    +			case SWITCH_STATUS_FALSE:
    +				switch_log_printf(SWITCH_CHANNEL_SESSION_LOG(session), SWITCH_LOG_ERROR, "Failed to init avmd session. SMA buffers error\n");
    +				break;
    +			default:
    +				switch_log_printf(SWITCH_CHANNEL_SESSION_LOG(session), SWITCH_LOG_ERROR, "Failed to init avmd session. Unknown error\n");
    +				break;
    +		}
    +		goto end;
    +	}
    +
    +	switch_mutex_lock(avmd_session->mutex);
    +	if (avmd_session->settings.report_status == 1) { /* dump dynamic parameters */
    +		avmd_config_dump(avmd_session);
    +	}
    +	if ((SWITCH_CALL_DIRECTION_OUTBOUND == switch_channel_direction(channel)) && (avmd_session->settings.outbound_channnel == 1)) {
    +			flags |= SMBF_READ_REPLACE;
     			direction = "READ_REPLACE";
    -    }
    -    if ((SWITCH_CALL_DIRECTION_INBOUND == switch_channel_direction(channel)) && (avmd_session->settings.inbound_channnel == 1)) {
    -            flags |= SMBF_WRITE_REPLACE;
    +	}
    +	if ((SWITCH_CALL_DIRECTION_INBOUND == switch_channel_direction(channel)) && (avmd_session->settings.inbound_channnel == 1)) {
    +			flags |= SMBF_WRITE_REPLACE;
     			if (!strcmp(direction, "READ_REPLACE")) {
     				direction = "READ_REPLACE | WRITE_REPLACE";
     			} else {
     				direction = "WRITE_REPLACE";
     			}
    -    }
    -
    -    if (flags == 0) {
    -        switch_log_printf(SWITCH_CHANNEL_SESSION_LOG(session), SWITCH_LOG_ERROR, "Can't set direction for channel [%s]\n", switch_channel_get_name(channel));
    -        status = SWITCH_STATUS_FALSE;
    -        goto end_unlock;
    -    }
    -
    -    if ((SWITCH_CALL_DIRECTION_OUTBOUND == switch_channel_direction(channel)) && (avmd_session->settings.outbound_channnel == 1)) {
    -        if (switch_channel_test_flag(channel, CF_MEDIA_SET) == 0) {
    -            switch_log_printf(SWITCH_CHANNEL_SESSION_LOG(session), SWITCH_LOG_ERROR, "Channel [%s] has no codec assigned yet. Please try again\n", switch_channel_get_name(channel));
    -            status = SWITCH_STATUS_FALSE;
    -            goto end_unlock;
    -        }
    -    }
    -
    -    status = avmd_launch_threads(avmd_session);
    -    if (status != SWITCH_STATUS_SUCCESS) {
    -        switch_log_printf(SWITCH_CHANNEL_SESSION_LOG(session), SWITCH_LOG_ERROR, "Failed to start detection threads\n");
    -        avmd_join_threads(avmd_session);
    -        switch_log_printf(SWITCH_CHANNEL_SESSION_LOG(session), SWITCH_LOG_INFO, "Joined detection threads\n");
    -        goto end_unlock;
    -    }
    -
    -    status = switch_core_media_bug_add(session, "avmd", NULL, avmd_callback, avmd_session, 0, flags, &bug); /* Add a media bug that allows me to intercept the audio stream */
    -    if (status != SWITCH_STATUS_SUCCESS) { /* If adding a media bug fails exit */
    -        switch_log_printf(SWITCH_CHANNEL_SESSION_LOG(session), SWITCH_LOG_ERROR, "Failed to add media bug!\n");
    +	}
    +
    +	if (flags == 0) {
    +		switch_log_printf(SWITCH_CHANNEL_SESSION_LOG(session), SWITCH_LOG_ERROR, "Can't set direction for channel [%s]\n", switch_channel_get_name(channel));
    +		status = SWITCH_STATUS_FALSE;
    +		goto end_unlock;
    +	}
    +
    +	if ((SWITCH_CALL_DIRECTION_OUTBOUND == switch_channel_direction(channel)) && (avmd_session->settings.outbound_channnel == 1)) {
    +		if (switch_channel_test_flag(channel, CF_MEDIA_SET) == 0) {
    +			switch_log_printf(SWITCH_CHANNEL_SESSION_LOG(session), SWITCH_LOG_ERROR, "Channel [%s] has no codec assigned yet. Please try again\n", switch_channel_get_name(channel));
    +			status = SWITCH_STATUS_FALSE;
    +			goto end_unlock;
    +		}
    +	}
    +
    +	status = avmd_launch_threads(avmd_session);
    +	if (status != SWITCH_STATUS_SUCCESS) {
    +		switch_log_printf(SWITCH_CHANNEL_SESSION_LOG(session), SWITCH_LOG_ERROR, "Failed to start detection threads\n");
    +		avmd_join_threads(avmd_session);
    +		switch_log_printf(SWITCH_CHANNEL_SESSION_LOG(session), SWITCH_LOG_INFO, "Joined detection threads\n");
    +		goto end_unlock;
    +	}
    +
    +	status = switch_core_media_bug_add(session, "avmd", NULL, avmd_callback, avmd_session, 0, flags, &bug); /* Add a media bug that allows me to intercept the audio stream */
    +	if (status != SWITCH_STATUS_SUCCESS) { /* If adding a media bug fails exit */
    +		switch_log_printf(SWITCH_CHANNEL_SESSION_LOG(session), SWITCH_LOG_ERROR, "Failed to add media bug!\n");
     
     		switch_mutex_unlock(avmd_session->mutex);
     		avmd_session_close(avmd_session);
    -        goto end;
    -    }
    +		goto end;
    +	}
     
    -    switch_mutex_lock(avmd_globals.mutex);
    -    ++avmd_globals.session_n;
    -    switch_mutex_unlock(avmd_globals.mutex);
    +	switch_mutex_lock(avmd_globals.mutex);
    +	++avmd_globals.session_n;
    +	switch_mutex_unlock(avmd_globals.mutex);
     
    -    switch_channel_set_private(channel, "_avmd_", bug); /* Set the avmd tag to detect an existing avmd media bug */
    -    avmd_fire_event(AVMD_EVENT_SESSION_START, session, 0, 0, 0, 0, 0, 0, 0, 0, avmd_session->start_time, 0, 0, 0, 0);
    -    if (avmd_session->settings.report_status == 1) {
    -        switch_log_printf(SWITCH_CHANNEL_SESSION_LOG(session), SWITCH_LOG_INFO, "Avmd on channel [%s] started! direction=%s\n", switch_channel_get_name(channel), direction);
    -    }
    +	switch_channel_set_private(channel, "_avmd_", bug); /* Set the avmd tag to detect an existing avmd media bug */
    +	avmd_fire_event(AVMD_EVENT_SESSION_START, session, 0, 0, 0, 0, 0, 0, 0, 0, avmd_session->start_time, 0, 0, 0, 0);
    +	if (avmd_session->settings.report_status == 1) {
    +		switch_log_printf(SWITCH_CHANNEL_SESSION_LOG(session), SWITCH_LOG_INFO, "Avmd on channel [%s] started! direction=%s\n", switch_channel_get_name(channel), direction);
    +	}
     
     end_unlock:
    -    switch_mutex_unlock(avmd_session->mutex);
    +	switch_mutex_unlock(avmd_session->mutex);
     
     end:
    -    if (status != SWITCH_STATUS_SUCCESS) {
    -        if (avmd_session == NULL || report) {
    -            switch_log_printf(SWITCH_CHANNEL_SESSION_LOG(session), SWITCH_LOG_ERROR, "Avmd on channel [%s] NOT started\n", switch_channel_get_name(channel));
    -        }
    -    }
    -    return;
    +	if (status != SWITCH_STATUS_SUCCESS) {
    +		if (avmd_session == NULL || report) {
    +			switch_log_printf(SWITCH_CHANNEL_SESSION_LOG(session), SWITCH_LOG_ERROR, "Avmd on channel [%s] NOT started\n", switch_channel_get_name(channel));
    +		}
    +	}
    +	return;
     }
     
     SWITCH_STANDARD_APP(avmd_stop_app) {
    -    switch_media_bug_t  *bug;
    -    switch_channel_t    *channel;
    -    avmd_session_t      *avmd_session;
    -    switch_time_t       start_time, stop_time, total_time;
    -    uint8_t             report_status = 0;
    -    avmd_beep_state_t   beep_status = BEEP_NOTDETECTED;
    -
    -    if (session == NULL) {
    -        switch_log_printf(SWITCH_CHANNEL_SESSION_LOG(session), SWITCH_LOG_ERROR, "FreeSWITCH is NULL! Please report to developers\n");
    -        return;
    -    }
    -
    -    /* Get current channel of the session to tag the session. This indicates that our module is present
    -     * At this moment this cannot return NULL, it will either succeed or assert failed, but we make ourself secure anyway */
    -    channel = switch_core_session_get_channel(session);
    -    if (channel == NULL) {
    -        switch_log_printf(SWITCH_CHANNEL_SESSION_LOG(session), SWITCH_LOG_ERROR, "No channel for FreeSWITCH session! Please report this to the developers.\n");
    -        return;
    -    }
    -
    -    bug = (switch_media_bug_t *) switch_channel_get_private(channel, "_avmd_");
    -    if (bug == NULL) {
    -        switch_log_printf(SWITCH_CHANNEL_SESSION_LOG(session), SWITCH_LOG_ERROR, "Stop failed - no avmd session running on this channel [%s]!\n", switch_channel_get_name(channel));
    -        return;
    -    }
    -
    -    avmd_session = switch_core_media_bug_get_user_data(bug);
    -    if (avmd_session == NULL) {
    -        switch_log_printf(SWITCH_CHANNEL_SESSION_LOG(session), SWITCH_LOG_ERROR, "Stop failed - no avmd session object, stop event not fired on this channel [%s]!\n", switch_channel_get_name(channel));
    -    } else {
    -        switch_mutex_lock(avmd_session->mutex);
    -        report_status = avmd_session->settings.report_status;
    -        beep_status = avmd_session->state.beep_state;
    -        avmd_session->stop_time = switch_micro_time_now();
    -        start_time = avmd_session->start_time;
    -        stop_time = avmd_session->stop_time;
    -        total_time = stop_time - start_time;
    -        switch_mutex_unlock(avmd_session->mutex);
    -        avmd_fire_event(AVMD_EVENT_SESSION_STOP, session, 0, 0, 0, 0, beep_status, 1, 0, 0, start_time, stop_time, 0, 0, 0);
    -        if (report_status == 1) {
    -            switch_log_printf(SWITCH_CHANNEL_SESSION_LOG(session), SWITCH_LOG_INFO, "Avmd on channel [%s] stopped, beep status: [%s], total running time [%" PRId64 "] [us]\n", switch_channel_get_name(channel), beep_status == BEEP_DETECTED ? "DETECTED" : "NOTDETECTED", total_time);
    -        }
    -    }
    -    switch_channel_set_private(channel, "_avmd_", NULL);
    -    switch_core_media_bug_remove(session, &bug);
    -
    -    return;
    +	switch_media_bug_t  *bug;
    +	switch_channel_t	*channel;
    +	avmd_session_t	  *avmd_session;
    +	switch_time_t	   start_time, stop_time, total_time;
    +	uint8_t			 report_status = 0;
    +	avmd_beep_state_t   beep_status = BEEP_NOTDETECTED;
    +
    +	if (session == NULL) {
    +		switch_log_printf(SWITCH_CHANNEL_SESSION_LOG(session), SWITCH_LOG_ERROR, "FreeSWITCH is NULL! Please report to developers\n");
    +		return;
    +	}
    +
    +	/* Get current channel of the session to tag the session. This indicates that our module is present
    +	 * At this moment this cannot return NULL, it will either succeed or assert failed, but we make ourself secure anyway */
    +	channel = switch_core_session_get_channel(session);
    +	if (channel == NULL) {
    +		switch_log_printf(SWITCH_CHANNEL_SESSION_LOG(session), SWITCH_LOG_ERROR, "No channel for FreeSWITCH session! Please report this to the developers.\n");
    +		return;
    +	}
    +
    +	bug = (switch_media_bug_t *) switch_channel_get_private(channel, "_avmd_");
    +	if (bug == NULL) {
    +		switch_log_printf(SWITCH_CHANNEL_SESSION_LOG(session), SWITCH_LOG_ERROR, "Stop failed - no avmd session running on this channel [%s]!\n", switch_channel_get_name(channel));
    +		return;
    +	}
    +
    +	avmd_session = switch_core_media_bug_get_user_data(bug);
    +	if (avmd_session == NULL) {
    +		switch_log_printf(SWITCH_CHANNEL_SESSION_LOG(session), SWITCH_LOG_ERROR, "Stop failed - no avmd session object, stop event not fired on this channel [%s]!\n", switch_channel_get_name(channel));
    +	} else {
    +		switch_mutex_lock(avmd_session->mutex);
    +		report_status = avmd_session->settings.report_status;
    +		beep_status = avmd_session->state.beep_state;
    +		avmd_session->stop_time = switch_micro_time_now();
    +		start_time = avmd_session->start_time;
    +		stop_time = avmd_session->stop_time;
    +		total_time = stop_time - start_time;
    +		switch_mutex_unlock(avmd_session->mutex);
    +		avmd_fire_event(AVMD_EVENT_SESSION_STOP, session, 0, 0, 0, 0, beep_status, 1, 0, 0, start_time, stop_time, 0, 0, 0);
    +		if (report_status == 1) {
    +			switch_log_printf(SWITCH_CHANNEL_SESSION_LOG(session), SWITCH_LOG_INFO, "Avmd on channel [%s] stopped, beep status: [%s], total running time [%" PRId64 "] [us]\n", switch_channel_get_name(channel), beep_status == BEEP_DETECTED ? "DETECTED" : "NOTDETECTED", total_time);
    +		}
    +	}
    +	switch_channel_set_private(channel, "_avmd_", NULL);
    +	switch_core_media_bug_remove(session, &bug);
    +
    +	return;
     }
     
     /*! \brief FreeSWITCH application handler function.
      *  This handles calls made from applications such as LUA and the dialplan.
      */
     SWITCH_STANDARD_APP(avmd_start_function) {
    -    switch_media_bug_t  *bug;
    -    switch_channel_t    *channel;
    -
    -    switch_log_printf(SWITCH_CHANNEL_LOG, SWITCH_LOG_WARNING, "YOU ARE USING DEPRECATED APP INTERFACE. Please read documentation about new syntax\n");
    -    if (session == NULL) {
    -        switch_log_printf(SWITCH_CHANNEL_LOG, SWITCH_LOG_ERROR, "No FreeSWITCH session assigned!\n");
    -        return;
    -    }
    -
    -    channel = switch_core_session_get_channel(session);
    -
    -    bug = (switch_media_bug_t *) switch_channel_get_private(channel, "_avmd_");
    -    if (bug != NULL) {
    -        if (strcasecmp(data, "stop") == 0) {
    -            switch_channel_set_private(channel, "_avmd_", NULL);
    -            switch_core_media_bug_remove(session, &bug);
    -            return;
    -        }
    -        switch_log_printf(SWITCH_CHANNEL_SESSION_LOG(session), SWITCH_LOG_WARNING, "Cannot run 2 at once on the same channel!\n");
    -        return;
    -    }
    -    avmd_start_app(session, NULL);
    +	switch_media_bug_t *bug;
    +	switch_channel_t *channel;
    +
    +	switch_log_printf(SWITCH_CHANNEL_LOG, SWITCH_LOG_WARNING, "YOU ARE USING DEPRECATED APP INTERFACE. Please read documentation about new syntax\n");
    +	if (session == NULL) {
    +		switch_log_printf(SWITCH_CHANNEL_LOG, SWITCH_LOG_ERROR, "No FreeSWITCH session assigned!\n");
    +		return;
    +	}
    +
    +	channel = switch_core_session_get_channel(session);
    +
    +	bug = (switch_media_bug_t *) switch_channel_get_private(channel, "_avmd_");
    +	if (bug != NULL) {
    +		if (strcasecmp(data, "stop") == 0) {
    +			switch_channel_set_private(channel, "_avmd_", NULL);
    +			switch_core_media_bug_remove(session, &bug);
    +			return;
    +		}
    +		switch_log_printf(SWITCH_CHANNEL_SESSION_LOG(session), SWITCH_LOG_WARNING, "Cannot run 2 at once on the same channel!\n");
    +		return;
    +	}
    +	avmd_start_app(session, NULL);
     }
     
     SWITCH_MODULE_SHUTDOWN_FUNCTION(mod_avmd_shutdown) {
    -    size_t session_n;
    +	size_t session_n;
     #ifndef WIN32
    -    int res;
    +	int res;
     #endif
     
    -    switch_mutex_lock(avmd_globals.mutex);
    +	switch_mutex_lock(avmd_globals.mutex);
     
    -    session_n = avmd_globals.session_n;
    -    if (session_n > 0) {
    -        switch_mutex_unlock(avmd_globals.mutex);
    -            switch_log_printf(SWITCH_CHANNEL_LOG, SWITCH_LOG_ERROR, "PLEASE DO NOT RELOAD MODULE WHILE SESSIONS ARE RUNNING\n");
    -    }
    +	session_n = avmd_globals.session_n;
    +	if (session_n > 0) {
    +		switch_mutex_unlock(avmd_globals.mutex);
    +			switch_log_printf(SWITCH_CHANNEL_LOG, SWITCH_LOG_ERROR, "PLEASE DO NOT RELOAD MODULE WHILE SESSIONS ARE RUNNING\n");
    +	}
     
    -    avmd_unregister_all_events();
    +	avmd_unregister_all_events();
     
     #ifndef WIN32
    -    if (avmd_globals.settings.fast_math == 1) {
    -        res = destroy_fast_acosf();
    -        if (res != 0) {
    -            switch (res) {
    -                case -1:
    -                    switch_log_printf(SWITCH_CHANNEL_LOG, SWITCH_LOG_ERROR, "Failed unmap arc cosine table\n");
    -                    break;
    -                case -2:
    -                    switch_log_printf(SWITCH_CHANNEL_LOG, SWITCH_LOG_ERROR, "Failed closing arc cosine table\n");
    -                    break;
    -                default:
    -                    break;
    -            }
    -        }
    -    }
    +	if (avmd_globals.settings.fast_math == 1) {
    +		res = destroy_fast_acosf();
    +		if (res != 0) {
    +			switch (res) {
    +				case -1:
    +					switch_log_printf(SWITCH_CHANNEL_LOG, SWITCH_LOG_ERROR, "Failed unmap arc cosine table\n");
    +					break;
    +				case -2:
    +					switch_log_printf(SWITCH_CHANNEL_LOG, SWITCH_LOG_ERROR, "Failed closing arc cosine table\n");
    +					break;
    +				default:
    +					break;
    +			}
    +		}
    +	}
     #endif
     
    -    switch_event_unbind_callback(avmd_reloadxml_event_handler);
    -    switch_mutex_unlock(avmd_globals.mutex);
    -    switch_mutex_destroy(avmd_globals.mutex);
    -    switch_log_printf(SWITCH_CHANNEL_LOG, SWITCH_LOG_NOTICE, "Advanced voicemail detection disabled\n");
    -    return SWITCH_STATUS_SUCCESS;
    +	switch_event_unbind_callback(avmd_reloadxml_event_handler);
    +	switch_mutex_unlock(avmd_globals.mutex);
    +	switch_mutex_destroy(avmd_globals.mutex);
    +	switch_log_printf(SWITCH_CHANNEL_LOG, SWITCH_LOG_NOTICE, "Advanced voicemail detection disabled\n");
    +	return SWITCH_STATUS_SUCCESS;
     }
     
     /*! \brief FreeSWITCH API handler function. */
     SWITCH_STANDARD_API(avmd_api_main) {
    -    switch_media_bug_t  *bug = NULL;
    -    avmd_session_t      *avmd_session = NULL;
    -    switch_channel_t    *channel = NULL;
    -    int         argc;
    -    const char  *uuid = NULL, *uuid_dup = NULL;
    -    const char  *command = NULL;
    -    char        *dupped = NULL, *argv[AVMD_PARAMS_API_MAX + 1] = { 0 };
    -    switch_core_media_flag_t    flags = 0;
    -    switch_status_t             status = SWITCH_STATUS_SUCCESS;
    -    switch_core_session_t       *fs_session = NULL;
    -
    -    switch_mutex_lock(avmd_globals.mutex);
    -
    -    if (zstr(cmd)) {
    -        stream->write_function(stream, "-ERR, bad command!\n-USAGE: %s\n\n", AVMD_SYNTAX);
    -        goto end;
    -    }
    -
    -    dupped = strdup(cmd);
    -    switch_assert(dupped);
    -    argc = switch_separate_string((char*)dupped, ' ', argv, (sizeof(argv) / sizeof(argv[0])));
    -
    -    if (argc < AVMD_PARAMS_API_MIN) {
    -        stream->write_function(stream, "-ERR, avmd takes [%u] min and [%u] max parameters!\n-USAGE: %s\n\n", AVMD_PARAMS_API_MIN, AVMD_PARAMS_API_MAX, AVMD_SYNTAX);
    -        goto end;
    -    }
    -
    -    command = argv[0];
    -    if (strcasecmp(command, "reload") == 0) {
    -        status = avmd_load_xml_configuration(NULL);
    -        if (avmd_globals.settings.report_status == 1) {
    -            if (status != SWITCH_STATUS_SUCCESS) {
    -                stream->write_function(stream, "-ERR, couldn't reload XML configuration\n");
    -                switch_log_printf(SWITCH_CHANNEL_LOG, SWITCH_LOG_ERROR, "Couldn't reload XML configuration\n");
    -            } else {
    -                stream->write_function(stream, "+OK\n XML reloaded\n\n");
    -                switch_log_printf(SWITCH_CHANNEL_LOG, SWITCH_LOG_INFO, "XML reloaded\n");
    -            }
    -            goto end;
    -        }
    -    }
    -    if (strcasecmp(command, "load") == 0) {
    -        if (argc != 2) {
    -            stream->write_function(stream, "-ERR, load command takes 1 parameter!\n-USAGE: %s\n\n", AVMD_SYNTAX);
    -            goto end;
    -        }
    -        command = argv[1];
    -        if (strcasecmp(command, "inbound") == 0) {
    -            status = avmd_load_xml_inbound_configuration(NULL);
    -            if (avmd_globals.settings.report_status == 1) {
    -                if (status != SWITCH_STATUS_SUCCESS) {
    -                    stream->write_function(stream, "-ERR, couldn't load XML configuration\n");
    -                    switch_log_printf(SWITCH_CHANNEL_LOG, SWITCH_LOG_ERROR, "Couldn't load XML configuration\n");
    -                } else {
    -                    stream->write_function(stream, "+OK\n inbound XML configuration loaded\n\n");
    -                    switch_log_printf(SWITCH_CHANNEL_LOG, SWITCH_LOG_INFO, "Inbound XML configuration loaded\n");
    -                }
    -                goto end;
    -            }
    -        } else if (strcasecmp(command, "outbound") == 0) {
    -            status = avmd_load_xml_outbound_configuration(NULL);
    -            if (avmd_globals.settings.report_status == 1) {
    -                if (status != SWITCH_STATUS_SUCCESS) {
    -                    stream->write_function(stream, "-ERR, couldn't load XML configuration\n");
    -                    switch_log_printf(SWITCH_CHANNEL_LOG, SWITCH_LOG_ERROR, "Couldn't load XML configuration\n");
    -                } else {
    -                    stream->write_function(stream, "+OK\n outbound XML configuration loaded\n\n");
    -                    switch_log_printf(SWITCH_CHANNEL_LOG, SWITCH_LOG_INFO, "Outbound XML configuration loaded\n");
    -                }
    -                goto end;
    -            }
    -        } else {
    -            stream->write_function(stream, "-ERR, load command: bad syntax!\n-USAGE: %s\n\n", AVMD_SYNTAX);
    -        }
    -        goto end;
    -    }
    -    if (strcasecmp(command, "set") == 0) {
    -        if (argc != 2) {
    -            stream->write_function(stream, "-ERR, set command takes 1 parameter!\n-USAGE: %s\n\n", AVMD_SYNTAX);
    -            goto end;
    -        }
    -        command = argv[1];
    -        if (strcasecmp(command, "inbound") == 0) {
    -            avmd_set_xml_inbound_configuration(NULL);
    -            if (avmd_globals.settings.report_status == 1) {
    -                stream->write_function(stream, "+OK\n inbound XML configuration loaded\n\n");
    -                switch_log_printf(SWITCH_CHANNEL_LOG, SWITCH_LOG_INFO, "Inbound XML configuration loaded\n");
    -            }
    -        } else if (strcasecmp(command, "outbound") == 0) {
    -            avmd_set_xml_outbound_configuration(NULL);
    -            if (avmd_globals.settings.report_status == 1) {
    -                stream->write_function(stream, "+OK\n outbound XML configuration loaded\n\n");
    -                switch_log_printf(SWITCH_CHANNEL_LOG, SWITCH_LOG_INFO, "Outbound XML configuration loaded\n");
    -            }
    -        } else if (strcasecmp(command, "default") == 0) {
    -            avmd_set_xml_default_configuration(NULL);
    -            if (avmd_globals.settings.report_status == 1) {
    -                stream->write_function(stream, "+OK\n reset to factory settings\n\n");
    -                switch_log_printf(SWITCH_CHANNEL_LOG, SWITCH_LOG_INFO, "Reset to factory settings\n");
    -            }
    -        } else {
    -            stream->write_function(stream, "-ERR, set command: bad syntax!\n-USAGE: %s\n\n", AVMD_SYNTAX);
    -        }
    -        goto end;
    -    }
    -    if (strcasecmp(command, "show") == 0) {
    -        avmd_show(stream, NULL);
    -        if (avmd_globals.settings.report_status == 1) {
    -            stream->write_function(stream, "+OK\n show\n\n");
    -        }
    -        goto end;
    -    }
    -
    -    uuid = argv[0];
    -    command = argv[1];
    -
    -    fs_session = switch_core_session_locate(uuid);  /* using uuid locate a reference to the FreeSWITCH session */
    -    if (fs_session == NULL) {
    -        stream->write_function(stream, "-ERR, no FreeSWITCH session for uuid [%s]!\n-USAGE: %s\n\n", uuid, AVMD_SYNTAX);
    -        goto end;
    -    }
    -
    -    /* Get current channel of the session to tag the session. This indicates that our module is present
    -     * At this moment this cannot return NULL, it will either succeed or assert failed, but we make ourself secure anyway */
    -    channel = switch_core_session_get_channel(fs_session);
    -    if (channel == NULL) {
    -        stream->write_function(stream, "-ERR, no channel for FreeSWITCH session [%s]!\n Please report this to the developers\n\n", uuid);
    -        goto end;
    -    }
    -
    -    bug = (switch_media_bug_t *) switch_channel_get_private(channel, "_avmd_");
    -    if (bug != NULL) {
    -        if (strcasecmp(command, "stop") == 0) {
    -            avmd_session = (avmd_session_t*) switch_core_media_bug_get_user_data(bug);
    -            if (avmd_session == NULL) {
    -                switch_log_printf(SWITCH_CHANNEL_SESSION_LOG(fs_session), SWITCH_LOG_ERROR, "Stop failed - no avmd session object on this channel [%s]!\n", switch_channel_get_name(channel));
    -                goto end;
    -            }
    -            uuid_dup = switch_core_strdup(switch_core_session_get_pool(fs_session), uuid);
    -            switch_channel_set_private(channel, "_avmd_", NULL);
    -            switch_core_media_bug_remove(fs_session, &bug);
    -            avmd_fire_event(AVMD_EVENT_SESSION_STOP, fs_session, 0, 0, 0, 0, 0, 0, 0, 0, avmd_session->start_time, avmd_session->stop_time, 0, 0, 0);
    -            if (avmd_globals.settings.report_status == 1) {
    -                stream->write_function(stream, "+OK\n [%s] [%s] stopped\n\n", uuid_dup, switch_channel_get_name(channel));
    -                switch_log_printf(SWITCH_CHANNEL_SESSION_LOG(fs_session), SWITCH_LOG_INFO, "Avmd on channel [%s] stopped!\n", switch_channel_get_name(channel));
    -            }
    -            goto end;
    -        }
    -        if (avmd_globals.settings.report_status == 1) {
    -            switch_log_printf(SWITCH_CHANNEL_SESSION_LOG(fs_session), SWITCH_LOG_ERROR, "Avmd already started!\n");
    -            stream->write_function(stream, "-ERR, avmd for FreeSWITCH session [%s]\n already started\n\n", uuid);
    -        }
    -        goto end;
    -    }
    -
    -    if (strcasecmp(command, "stop") == 0) {
    -        uuid_dup = switch_core_strdup(switch_core_session_get_pool(fs_session), uuid);
    -        stream->write_function(stream, "+ERR, avmd has not yet been started on\n [%s] [%s]\n\n", uuid_dup, switch_channel_get_name(channel));
    -        switch_log_printf(SWITCH_CHANNEL_SESSION_LOG(fs_session), SWITCH_LOG_ERROR, "Stop failed - avmd has not yet been started on channel [%s]!\n", switch_channel_get_name(channel));
    -        goto end;
    -    }
    -    if ((SWITCH_CALL_DIRECTION_OUTBOUND == switch_channel_direction(channel)) && (avmd_globals.settings.outbound_channnel == 1)) {
    -            flags |= SMBF_READ_REPLACE;
    -    }
    -    if ((SWITCH_CALL_DIRECTION_INBOUND == switch_channel_direction(channel)) && (avmd_globals.settings.inbound_channnel == 1)) {
    -            flags |= SMBF_WRITE_REPLACE;
    -    }
    -    if (flags == 0) {
    -        stream->write_function(stream, "-ERR, can't set direction for channel [%s]\n for FreeSWITCH session [%s]. Please check avmd configuration\n\n", switch_channel_get_name(channel), uuid);
    -        switch_log_printf(SWITCH_CHANNEL_SESSION_LOG(fs_session), SWITCH_LOG_ERROR, "Can't set direction for channel [%s]\n", switch_channel_get_name(channel));
    -        status = SWITCH_STATUS_FALSE;
    -        goto end;
    -    }
    -    if ((SWITCH_CALL_DIRECTION_OUTBOUND == switch_channel_direction(channel)) && (avmd_globals.settings.outbound_channnel == 1)) {
    -        if (switch_channel_test_flag(channel, CF_MEDIA_SET) == 0) {
    -            stream->write_function(stream, "-ERR, channel [%s] for FreeSWITCH session [%s]\n has no read codec assigned yet. Please try again.\n\n", switch_channel_get_name(channel), uuid);
    -            switch_log_printf(SWITCH_CHANNEL_SESSION_LOG(fs_session), SWITCH_LOG_ERROR, "Channel [%s] has no codec assigned yet. Please try again\n", switch_channel_get_name(channel));
    -            status = SWITCH_STATUS_FALSE;
    -            goto end;
    -        }
    -    }
    -    if (strcasecmp(command, "start") != 0) { /* If we don't see the expected start exit */
    -        stream->write_function(stream, "-ERR, did you mean\n api avmd %s start ?\n-USAGE: %s\n\n", uuid, AVMD_SYNTAX);
    -        goto end;
    -    }
    -
    -    avmd_session = (avmd_session_t *) switch_core_session_alloc(fs_session, sizeof(avmd_session_t)); /* Allocate memory attached to this FreeSWITCH session for use in the callback routine and to store state information */
    -    status = init_avmd_session_data(avmd_session, fs_session, NULL);
    -    if (status != SWITCH_STATUS_SUCCESS) {
    -        stream->write_function(stream, "-ERR, failed to initialize avmd session\n for FreeSWITCH session [%s]\n", uuid);
    -        switch (status) {
    -            case SWITCH_STATUS_MEMERR:
    -                stream->write_function(stream, "-ERR, buffer error\n\n");
    -                switch_log_printf(SWITCH_CHANNEL_SESSION_LOG(fs_session), SWITCH_LOG_ERROR, "Failed to init avmd session. Buffer error!\n");
    -                break;
    -            case SWITCH_STATUS_MORE_DATA:
    -                stream->write_function(stream, "-ERR, SMA buffer size is 0\n\n");
    -                switch_log_printf(SWITCH_CHANNEL_SESSION_LOG(fs_session), SWITCH_LOG_ERROR, "Failed to init avmd session. SMA buffer size is 0!\n");
    -                break;
    -            case SWITCH_STATUS_FALSE:
    -                stream->write_function(stream, "-ERR, SMA buffer error\n\n");
    -                switch_log_printf(SWITCH_CHANNEL_SESSION_LOG(fs_session), SWITCH_LOG_ERROR, "Failed to init avmd session. SMA buffers error\n");
    -                break;
    -            default:
    -                stream->write_function(stream, "-ERR, unknown error\n\n");
    -                switch_log_printf(SWITCH_CHANNEL_SESSION_LOG(fs_session), SWITCH_LOG_ERROR, "Failed to init avmd session. Unknown error\n");
    -                break;
    -        }
    -        goto end;
    -    }
    -
    -    status = switch_core_media_bug_add(fs_session, "avmd", NULL, avmd_callback, avmd_session, 0, flags, &bug); /* Add a media bug that allows me to intercept the reading leg of the audio stream */
    -
    -    if (status != SWITCH_STATUS_SUCCESS) { /* If adding a media bug fails exit */
    -        switch_log_printf(SWITCH_CHANNEL_SESSION_LOG(fs_session), SWITCH_LOG_ERROR, "Failed to add media bug!\n");
    -        stream->write_function(stream, "-ERR, [%s] failed to add media bug!\n\n", uuid);
    -        goto end;
    -    }
    -
    -    switch_channel_set_private(channel, "_avmd_", bug); /* Set the vmd tag to detect an existing vmd media bug */
    -
    -    avmd_fire_event(AVMD_EVENT_SESSION_START, fs_session, 0, 0, 0, 0, 0, 0, 0, 0, avmd_session->start_time, 0, 0, 0, 0);
    -    if (avmd_globals.settings.report_status == 1) {
    -        stream->write_function(stream, "+OK\n [%s] [%s] started!\n\n", uuid, switch_channel_get_name(channel));
    -        switch_log_printf(SWITCH_CHANNEL_SESSION_LOG(fs_session), SWITCH_LOG_INFO, "Avmd on channel [%s] started!\n", switch_channel_get_name(channel));
    -        switch_assert(status == SWITCH_STATUS_SUCCESS);
    -    }
    +	switch_media_bug_t *bug = NULL;
    +	avmd_session_t *avmd_session = NULL;
    +	switch_channel_t *channel = NULL;
    +	int argc;
    +	const char *uuid = NULL, *uuid_dup = NULL;
    +	const char *command = NULL;
    +	char *dupped = NULL, *argv[AVMD_PARAMS_API_MAX + 1] = { 0 };
    +	switch_core_media_flag_t flags = 0;
    +	switch_status_t status = SWITCH_STATUS_SUCCESS;
    +	switch_core_session_t *fs_session = NULL;
    +
    +	switch_mutex_lock(avmd_globals.mutex);
    +
    +	if (zstr(cmd)) {
    +		stream->write_function(stream, "-ERR, bad command!\n-USAGE: %s\n\n", AVMD_SYNTAX);
    +		goto end;
    +	}
    +
    +	dupped = strdup(cmd);
    +	switch_assert(dupped);
    +	argc = switch_separate_string((char*)dupped, ' ', argv, (sizeof(argv) / sizeof(argv[0])));
    +
    +	if (argc < AVMD_PARAMS_API_MIN) {
    +		stream->write_function(stream, "-ERR, avmd takes [%u] min and [%u] max parameters!\n-USAGE: %s\n\n", AVMD_PARAMS_API_MIN, AVMD_PARAMS_API_MAX, AVMD_SYNTAX);
    +		goto end;
    +	}
    +
    +	command = argv[0];
    +	if (strcasecmp(command, "reload") == 0) {
    +		status = avmd_load_xml_configuration(NULL);
    +		if (avmd_globals.settings.report_status == 1) {
    +			if (status != SWITCH_STATUS_SUCCESS) {
    +				stream->write_function(stream, "-ERR, couldn't reload XML configuration\n");
    +				switch_log_printf(SWITCH_CHANNEL_LOG, SWITCH_LOG_ERROR, "Couldn't reload XML configuration\n");
    +			} else {
    +				stream->write_function(stream, "+OK\n XML reloaded\n\n");
    +				switch_log_printf(SWITCH_CHANNEL_LOG, SWITCH_LOG_INFO, "XML reloaded\n");
    +			}
    +			goto end;
    +		}
    +	}
    +	if (strcasecmp(command, "load") == 0) {
    +		if (argc != 2) {
    +			stream->write_function(stream, "-ERR, load command takes 1 parameter!\n-USAGE: %s\n\n", AVMD_SYNTAX);
    +			goto end;
    +		}
    +		command = argv[1];
    +		if (strcasecmp(command, "inbound") == 0) {
    +			status = avmd_load_xml_inbound_configuration(NULL);
    +			if (avmd_globals.settings.report_status == 1) {
    +				if (status != SWITCH_STATUS_SUCCESS) {
    +					stream->write_function(stream, "-ERR, couldn't load XML configuration\n");
    +					switch_log_printf(SWITCH_CHANNEL_LOG, SWITCH_LOG_ERROR, "Couldn't load XML configuration\n");
    +				} else {
    +					stream->write_function(stream, "+OK\n inbound XML configuration loaded\n\n");
    +					switch_log_printf(SWITCH_CHANNEL_LOG, SWITCH_LOG_INFO, "Inbound XML configuration loaded\n");
    +				}
    +				goto end;
    +			}
    +		} else if (strcasecmp(command, "outbound") == 0) {
    +			status = avmd_load_xml_outbound_configuration(NULL);
    +			if (avmd_globals.settings.report_status == 1) {
    +				if (status != SWITCH_STATUS_SUCCESS) {
    +					stream->write_function(stream, "-ERR, couldn't load XML configuration\n");
    +					switch_log_printf(SWITCH_CHANNEL_LOG, SWITCH_LOG_ERROR, "Couldn't load XML configuration\n");
    +				} else {
    +					stream->write_function(stream, "+OK\n outbound XML configuration loaded\n\n");
    +					switch_log_printf(SWITCH_CHANNEL_LOG, SWITCH_LOG_INFO, "Outbound XML configuration loaded\n");
    +				}
    +				goto end;
    +			}
    +		} else {
    +			stream->write_function(stream, "-ERR, load command: bad syntax!\n-USAGE: %s\n\n", AVMD_SYNTAX);
    +		}
    +		goto end;
    +	}
    +	if (strcasecmp(command, "set") == 0) {
    +		if (argc != 2) {
    +			stream->write_function(stream, "-ERR, set command takes 1 parameter!\n-USAGE: %s\n\n", AVMD_SYNTAX);
    +			goto end;
    +		}
    +		command = argv[1];
    +		if (strcasecmp(command, "inbound") == 0) {
    +			avmd_set_xml_inbound_configuration(NULL);
    +			if (avmd_globals.settings.report_status == 1) {
    +				stream->write_function(stream, "+OK\n inbound XML configuration loaded\n\n");
    +				switch_log_printf(SWITCH_CHANNEL_LOG, SWITCH_LOG_INFO, "Inbound XML configuration loaded\n");
    +			}
    +		} else if (strcasecmp(command, "outbound") == 0) {
    +			avmd_set_xml_outbound_configuration(NULL);
    +			if (avmd_globals.settings.report_status == 1) {
    +				stream->write_function(stream, "+OK\n outbound XML configuration loaded\n\n");
    +				switch_log_printf(SWITCH_CHANNEL_LOG, SWITCH_LOG_INFO, "Outbound XML configuration loaded\n");
    +			}
    +		} else if (strcasecmp(command, "default") == 0) {
    +			avmd_set_xml_default_configuration(NULL);
    +			if (avmd_globals.settings.report_status == 1) {
    +				stream->write_function(stream, "+OK\n reset to factory settings\n\n");
    +				switch_log_printf(SWITCH_CHANNEL_LOG, SWITCH_LOG_INFO, "Reset to factory settings\n");
    +			}
    +		} else {
    +			stream->write_function(stream, "-ERR, set command: bad syntax!\n-USAGE: %s\n\n", AVMD_SYNTAX);
    +		}
    +		goto end;
    +	}
    +	if (strcasecmp(command, "show") == 0) {
    +		avmd_show(stream, NULL);
    +		if (avmd_globals.settings.report_status == 1) {
    +			stream->write_function(stream, "+OK\n show\n\n");
    +		}
    +		goto end;
    +	}
    +
    +	uuid = argv[0];
    +	command = argv[1];
    +
    +	fs_session = switch_core_session_locate(uuid);  /* using uuid locate a reference to the FreeSWITCH session */
    +	if (fs_session == NULL) {
    +		stream->write_function(stream, "-ERR, no FreeSWITCH session for uuid [%s]!\n-USAGE: %s\n\n", uuid, AVMD_SYNTAX);
    +		goto end;
    +	}
    +
    +	/* Get current channel of the session to tag the session. This indicates that our module is present
    +	 * At this moment this cannot return NULL, it will either succeed or assert failed, but we make ourself secure anyway */
    +	channel = switch_core_session_get_channel(fs_session);
    +	if (channel == NULL) {
    +		stream->write_function(stream, "-ERR, no channel for FreeSWITCH session [%s]!\n Please report this to the developers\n\n", uuid);
    +		goto end;
    +	}
    +
    +	bug = (switch_media_bug_t *) switch_channel_get_private(channel, "_avmd_");
    +	if (bug != NULL) {
    +		if (strcasecmp(command, "stop") == 0) {
    +			avmd_session = (avmd_session_t*) switch_core_media_bug_get_user_data(bug);
    +			if (avmd_session == NULL) {
    +				switch_log_printf(SWITCH_CHANNEL_SESSION_LOG(fs_session), SWITCH_LOG_ERROR, "Stop failed - no avmd session object on this channel [%s]!\n", switch_channel_get_name(channel));
    +				goto end;
    +			}
    +			uuid_dup = switch_core_strdup(switch_core_session_get_pool(fs_session), uuid);
    +			switch_channel_set_private(channel, "_avmd_", NULL);
    +			switch_core_media_bug_remove(fs_session, &bug);
    +			avmd_fire_event(AVMD_EVENT_SESSION_STOP, fs_session, 0, 0, 0, 0, 0, 0, 0, 0, avmd_session->start_time, avmd_session->stop_time, 0, 0, 0);
    +			if (avmd_globals.settings.report_status == 1) {
    +				stream->write_function(stream, "+OK\n [%s] [%s] stopped\n\n", uuid_dup, switch_channel_get_name(channel));
    +				switch_log_printf(SWITCH_CHANNEL_SESSION_LOG(fs_session), SWITCH_LOG_INFO, "Avmd on channel [%s] stopped!\n", switch_channel_get_name(channel));
    +			}
    +			goto end;
    +		}
    +		if (avmd_globals.settings.report_status == 1) {
    +			switch_log_printf(SWITCH_CHANNEL_SESSION_LOG(fs_session), SWITCH_LOG_ERROR, "Avmd already started!\n");
    +			stream->write_function(stream, "-ERR, avmd for FreeSWITCH session [%s]\n already started\n\n", uuid);
    +		}
    +		goto end;
    +	}
    +
    +	if (strcasecmp(command, "stop") == 0) {
    +		uuid_dup = switch_core_strdup(switch_core_session_get_pool(fs_session), uuid);
    +		stream->write_function(stream, "+ERR, avmd has not yet been started on\n [%s] [%s]\n\n", uuid_dup, switch_channel_get_name(channel));
    +		switch_log_printf(SWITCH_CHANNEL_SESSION_LOG(fs_session), SWITCH_LOG_ERROR, "Stop failed - avmd has not yet been started on channel [%s]!\n", switch_channel_get_name(channel));
    +		goto end;
    +	}
    +	if ((SWITCH_CALL_DIRECTION_OUTBOUND == switch_channel_direction(channel)) && (avmd_globals.settings.outbound_channnel == 1)) {
    +			flags |= SMBF_READ_REPLACE;
    +	}
    +	if ((SWITCH_CALL_DIRECTION_INBOUND == switch_channel_direction(channel)) && (avmd_globals.settings.inbound_channnel == 1)) {
    +			flags |= SMBF_WRITE_REPLACE;
    +	}
    +	if (flags == 0) {
    +		stream->write_function(stream, "-ERR, can't set direction for channel [%s]\n for FreeSWITCH session [%s]. Please check avmd configuration\n\n", switch_channel_get_name(channel), uuid);
    +		switch_log_printf(SWITCH_CHANNEL_SESSION_LOG(fs_session), SWITCH_LOG_ERROR, "Can't set direction for channel [%s]\n", switch_channel_get_name(channel));
    +		status = SWITCH_STATUS_FALSE;
    +		goto end;
    +	}
    +	if ((SWITCH_CALL_DIRECTION_OUTBOUND == switch_channel_direction(channel)) && (avmd_globals.settings.outbound_channnel == 1)) {
    +		if (switch_channel_test_flag(channel, CF_MEDIA_SET) == 0) {
    +			stream->write_function(stream, "-ERR, channel [%s] for FreeSWITCH session [%s]\n has no read codec assigned yet. Please try again.\n\n", switch_channel_get_name(channel), uuid);
    +			switch_log_printf(SWITCH_CHANNEL_SESSION_LOG(fs_session), SWITCH_LOG_ERROR, "Channel [%s] has no codec assigned yet. Please try again\n", switch_channel_get_name(channel));
    +			status = SWITCH_STATUS_FALSE;
    +			goto end;
    +		}
    +	}
    +	if (strcasecmp(command, "start") != 0) { /* If we don't see the expected start exit */
    +		stream->write_function(stream, "-ERR, did you mean\n api avmd %s start ?\n-USAGE: %s\n\n", uuid, AVMD_SYNTAX);
    +		goto end;
    +	}
    +
    +	avmd_session = (avmd_session_t *) switch_core_session_alloc(fs_session, sizeof(avmd_session_t)); /* Allocate memory attached to this FreeSWITCH session for use in the callback routine and to store state information */
    +	status = init_avmd_session_data(avmd_session, fs_session, NULL);
    +	if (status != SWITCH_STATUS_SUCCESS) {
    +		stream->write_function(stream, "-ERR, failed to initialize avmd session\n for FreeSWITCH session [%s]\n", uuid);
    +		switch (status) {
    +			case SWITCH_STATUS_MEMERR:
    +				stream->write_function(stream, "-ERR, buffer error\n\n");
    +				switch_log_printf(SWITCH_CHANNEL_SESSION_LOG(fs_session), SWITCH_LOG_ERROR, "Failed to init avmd session. Buffer error!\n");
    +				break;
    +			case SWITCH_STATUS_MORE_DATA:
    +				stream->write_function(stream, "-ERR, SMA buffer size is 0\n\n");
    +				switch_log_printf(SWITCH_CHANNEL_SESSION_LOG(fs_session), SWITCH_LOG_ERROR, "Failed to init avmd session. SMA buffer size is 0!\n");
    +				break;
    +			case SWITCH_STATUS_FALSE:
    +				stream->write_function(stream, "-ERR, SMA buffer error\n\n");
    +				switch_log_printf(SWITCH_CHANNEL_SESSION_LOG(fs_session), SWITCH_LOG_ERROR, "Failed to init avmd session. SMA buffers error\n");
    +				break;
    +			default:
    +				stream->write_function(stream, "-ERR, unknown error\n\n");
    +				switch_log_printf(SWITCH_CHANNEL_SESSION_LOG(fs_session), SWITCH_LOG_ERROR, "Failed to init avmd session. Unknown error\n");
    +				break;
    +		}
    +		goto end;
    +	}
    +
    +	status = switch_core_media_bug_add(fs_session, "avmd", NULL, avmd_callback, avmd_session, 0, flags, &bug); /* Add a media bug that allows me to intercept the reading leg of the audio stream */
    +
    +	if (status != SWITCH_STATUS_SUCCESS) { /* If adding a media bug fails exit */
    +		switch_log_printf(SWITCH_CHANNEL_SESSION_LOG(fs_session), SWITCH_LOG_ERROR, "Failed to add media bug!\n");
    +		stream->write_function(stream, "-ERR, [%s] failed to add media bug!\n\n", uuid);
    +		goto end;
    +	}
    +
    +	switch_channel_set_private(channel, "_avmd_", bug); /* Set the vmd tag to detect an existing vmd media bug */
    +
    +	avmd_fire_event(AVMD_EVENT_SESSION_START, fs_session, 0, 0, 0, 0, 0, 0, 0, 0, avmd_session->start_time, 0, 0, 0, 0);
    +	if (avmd_globals.settings.report_status == 1) {
    +		stream->write_function(stream, "+OK\n [%s] [%s] started!\n\n", uuid, switch_channel_get_name(channel));
    +		switch_log_printf(SWITCH_CHANNEL_SESSION_LOG(fs_session), SWITCH_LOG_INFO, "Avmd on channel [%s] started!\n", switch_channel_get_name(channel));
    +		switch_assert(status == SWITCH_STATUS_SUCCESS);
    +	}
     end:
     
    -    if (status != SWITCH_STATUS_SUCCESS) {
    -            switch_log_printf(SWITCH_CHANNEL_SESSION_LOG(fs_session), SWITCH_LOG_INFO, "AVMD session NOT started\n");
    -            if (avmd_globals.settings.report_status == 1) {
    -                if ((uuid != NULL) && (channel != NULL)) {
    -                    stream->write_function(stream, "+ERR\n [%s] [%s] NOT started!\n\n", uuid, switch_channel_get_name(channel));
    -                } else {
    -                    stream->write_function(stream, "+ERR\n AVMD session NOT started!\n\n", switch_channel_get_name(channel));
    -                }
    -            }
    -    }
    -    if (fs_session) {
    -        switch_core_session_rwunlock(fs_session);
    -    }
    -
    -    switch_safe_free(dupped);
    -
    -    switch_mutex_unlock(avmd_globals.mutex);
    -
    -    return SWITCH_STATUS_SUCCESS;
    +	if (status != SWITCH_STATUS_SUCCESS) {
    +			switch_log_printf(SWITCH_CHANNEL_SESSION_LOG(fs_session), SWITCH_LOG_INFO, "AVMD session NOT started\n");
    +			if (avmd_globals.settings.report_status == 1) {
    +				if ((uuid != NULL) && (channel != NULL)) {
    +					stream->write_function(stream, "+ERR\n [%s] [%s] NOT started!\n\n", uuid, switch_channel_get_name(channel));
    +				} else {
    +					stream->write_function(stream, "+ERR\n AVMD session NOT started!\n\n", switch_channel_get_name(channel));
    +				}
    +			}
    +	}
    +	if (fs_session) {
    +		switch_core_session_rwunlock(fs_session);
    +	}
    +
    +	switch_safe_free(dupped);
    +
    +	switch_mutex_unlock(avmd_globals.mutex);
    +
    +	return SWITCH_STATUS_SUCCESS;
     }
     
     static int
     avmd_decision_amplitude(const avmd_session_t *s, const struct avmd_buffer *b, double v, double rsd_threshold) {
    -    double a, rsd;
    -    size_t lpos;
    -
    -    lpos = b->sma_b.lpos;
    -    if ((lpos >= AVMD_BEEP_LEN(s->rate) / b->resolution) && ((s->settings.require_continuous_streak_amp == 1 && (b->sma_amp_b.lpos > s->settings.sample_n_continuous_streak_amp) && (b->samples_streak_amp == 0))
    -            || (s->settings.require_continuous_streak_amp == 0 && (b->sma_amp_b.lpos > 1)))) {
    -        a = fabs(b->sma_amp_b.sma);
    -        if (a < AVMD_MIN_AMP) {
    -            return 0;
    -        }
    -        rsd = sqrt(v) / a;
    -        if (rsd < rsd_threshold) {
    -            return 1;
    -        }
    -    }
    -    return 0;
    +	double a, rsd;
    +	size_t lpos;
    +
    +	lpos = b->sma_b.lpos;
    +	if ((lpos >= AVMD_BEEP_LEN(s->rate) / b->resolution) && ((s->settings.require_continuous_streak_amp == 1 && (b->sma_amp_b.lpos > s->settings.sample_n_continuous_streak_amp) && (b->samples_streak_amp == 0))
    +			|| (s->settings.require_continuous_streak_amp == 0 && (b->sma_amp_b.lpos > 1)))) {
    +		a = fabs(b->sma_amp_b.sma);
    +		if (a < AVMD_MIN_AMP) {
    +			return 0;
    +		}
    +		rsd = sqrt(v) / a;
    +		if (rsd < rsd_threshold) {
    +			return 1;
    +		}
    +	}
    +	return 0;
     }
     
     static int
     avmd_decision_freq(const avmd_session_t *s, const struct avmd_buffer *b, double v, double rsd_threshold) {
    -    double f, rsd;
    -    size_t lpos;
    -    f = AVMD_TO_HZ(s->rate, fabs(b->sma_b_fir.sma));
    -    if ((f < AVMD_MIN_FREQUENCY) || (f > AVMD_MAX_FREQUENCY)) {
    -        return 0;
    -    }
    -    lpos = b->sma_b.lpos;
    -    if ((lpos >= AVMD_BEEP_LEN(s->rate) / b->resolution) && ((s->settings.require_continuous_streak == 1 && (b->sma_b.lpos > s->settings.sample_n_continuous_streak) && (b->samples_streak == 0))
    -            || (s->settings.require_continuous_streak == 0 && (b->sma_b.lpos > 1)))) {
    -        rsd = sqrt(v) / f;
    -        if ((rsd < 0.3 * rsd_threshold) && (b->sma_amp_b.sma >= 0.005 * b->amplitude_max)) {
    -            return 1;
    -        }
    -        if ((rsd < 0.6 * rsd_threshold) && (b->sma_amp_b.sma >= 0.01 * b->amplitude_max)) {
    -            return 1;
    -        }
    -        if ((rsd < rsd_threshold) && (b->sma_amp_b.sma >= 0.015 * b->amplitude_max)) {
    -            return 1;
    -        }
    -    }
    -    return 0;
    +	double f, rsd;
    +	size_t lpos;
    +	f = AVMD_TO_HZ(s->rate, fabs(b->sma_b_fir.sma));
    +	if ((f < AVMD_MIN_FREQUENCY) || (f > AVMD_MAX_FREQUENCY)) {
    +		return 0;
    +	}
    +	lpos = b->sma_b.lpos;
    +	if ((lpos >= AVMD_BEEP_LEN(s->rate) / b->resolution) && ((s->settings.require_continuous_streak == 1 && (b->sma_b.lpos > s->settings.sample_n_continuous_streak) && (b->samples_streak == 0))
    +			|| (s->settings.require_continuous_streak == 0 && (b->sma_b.lpos > 1)))) {
    +		rsd = sqrt(v) / f;
    +		if ((rsd < 0.3 * rsd_threshold) && (b->sma_amp_b.sma >= 0.005 * b->amplitude_max)) {
    +			return 1;
    +		}
    +		if ((rsd < 0.6 * rsd_threshold) && (b->sma_amp_b.sma >= 0.01 * b->amplitude_max)) {
    +			return 1;
    +		}
    +		if ((rsd < rsd_threshold) && (b->sma_amp_b.sma >= 0.015 * b->amplitude_max)) {
    +			return 1;
    +		}
    +	}
    +	return 0;
     }
     
     static void avmd_report_detection(avmd_session_t *s, enum avmd_detection_mode mode, const struct avmd_detector *d) {
    -    switch_channel_t    *channel;
    -    switch_time_t       detection_time;
    -    double      f_sma = 0.0;
    -    double      v_amp = 9999.9, v_fir = 9999.9;
    -
    -    const struct avmd_buffer *b = &d->buffer;
    -    const sma_buffer_t    *sma_b_fir = &b->sma_b_fir;
    -    const sma_buffer_t    *sqa_b_fir = &b->sqa_b_fir;
    -
    -    const sma_buffer_t    *sma_amp_b = &b->sma_amp_b;
    -    const sma_buffer_t    *sqa_amp_b = &b->sqa_amp_b;
    -
    -    channel = switch_core_session_get_channel(s->session);
    -
    -    s->detection_stop_time = switch_micro_time_now();                                                           /* stop detection timer     */
    -    detection_time = s->detection_stop_time - s->detection_start_time;                                          /* detection time length    */
    -    switch_channel_set_variable_printf(channel, "avmd_total_time", "[%" PRId64 "]", detection_time / 1000);
    -    switch_channel_execute_on(channel, "execute_on_avmd_beep");
    -    switch_channel_set_variable(channel, "avmd_detect", "TRUE");
    -    switch (mode) {
    -
    -        case AVMD_DETECT_AMP:
    -            v_amp = sqa_amp_b->sma - (sma_amp_b->sma * sma_amp_b->sma);                                               /* calculate variance of amplitude (biased estimator) */
    -            avmd_fire_event(AVMD_EVENT_BEEP, s->session, 0, 0, sma_amp_b->sma, v_amp, 0, 0, s->detection_start_time, s->detection_stop_time, 0, 0, b->resolution, b->offset, d->idx);
    -            if (s->settings.report_status == 1) {
    -                switch_log_printf(SWITCH_CHANNEL_SESSION_LOG(s->session), SWITCH_LOG_INFO, "<<< AVMD - Beep Detected [%u][%u][%u][%u]: amplitude = [%f](max [%f]) variance = [%f], detection time [%" PRId64 "] [us] >>>\n",
    -                        mode, b->resolution, b->offset, d->idx, sma_amp_b->sma, b->amplitude_max, v_amp, detection_time);
    -            }
    -            break;
    -
    -        case AVMD_DETECT_FREQ:
    -            f_sma = sma_b_fir->sma;
    -            v_fir = sqa_b_fir->sma - (sma_b_fir->sma * sma_b_fir->sma);                                               /* calculate variance of filtered samples */
    -            avmd_fire_event(AVMD_EVENT_BEEP, s->session, AVMD_TO_HZ(s->rate, f_sma), v_fir, 0, 0, 0, 0, s->detection_start_time, s->detection_stop_time, 0, 0, b->resolution, b->offset, d->idx);
    -            if (s->settings.report_status == 1) {
    -                switch_log_printf(SWITCH_CHANNEL_SESSION_LOG(s->session), SWITCH_LOG_INFO, "<<< AVMD - Beep Detected [%u][%u][%u][%u]: f = [%f] variance = [%f], detection time [%" PRId64 "] [us] >>>\n",
    -                        mode, b->resolution, b->offset, d->idx, AVMD_TO_HZ(s->rate, f_sma), v_fir, detection_time);
    -            }
    -            break;
    -
    -        case AVMD_DETECT_BOTH:
    -            v_amp = sqa_amp_b->sma - (sma_amp_b->sma * sma_amp_b->sma);                                               /* calculate variance of amplitude (biased estimator) */
    -            f_sma = sma_b_fir->sma;
    -            v_fir = sqa_b_fir->sma - (sma_b_fir->sma * sma_b_fir->sma);                                               /* calculate variance of filtered samples */
    -            avmd_fire_event(AVMD_EVENT_BEEP, s->session, AVMD_TO_HZ(s->rate, f_sma), v_fir, sma_amp_b->sma, v_amp, 0, 0, s->detection_start_time, s->detection_stop_time, 0, 0, b->resolution, b->offset, d->idx);
    -            if (s->settings.report_status == 1) {
    -                switch_log_printf(SWITCH_CHANNEL_SESSION_LOG(s->session), SWITCH_LOG_INFO, "<<< AVMD - Beep Detected [%u][%u][%u][%u]: f = [%f] variance = [%f], amplitude = [%f](max [%f]) variance = [%f], detection time [%" PRId64 "] [us] >>>\n",
    -                        mode, b->resolution, b->offset, d->idx, AVMD_TO_HZ(s->rate, f_sma), v_fir, sma_amp_b->sma, b->amplitude_max, v_amp, detection_time);
    -            }
    -            break;
    -
    -        default:
    -            break;
    -    }
    -    s->state.beep_state = BEEP_DETECTED;
    +	switch_channel_t *channel;
    +	switch_time_t detection_time;
    +	double f_sma = 0.0;
    +	double v_amp = 9999.9, v_fir = 9999.9;
    +
    +	const struct avmd_buffer *b = &d->buffer;
    +	const sma_buffer_t *sma_b_fir = &b->sma_b_fir;
    +	const sma_buffer_t *sqa_b_fir = &b->sqa_b_fir;
    +
    +	const sma_buffer_t *sma_amp_b = &b->sma_amp_b;
    +	const sma_buffer_t *sqa_amp_b = &b->sqa_amp_b;
    +
    +	channel = switch_core_session_get_channel(s->session);
    +
    +	s->detection_stop_time = switch_micro_time_now();														   /* stop detection timer	 */
    +	detection_time = s->detection_stop_time - s->detection_start_time;										  /* detection time length	*/
    +	switch_channel_set_variable_printf(channel, "avmd_total_time", "[%" PRId64 "]", detection_time / 1000);
    +	switch_channel_execute_on(channel, "execute_on_avmd_beep");
    +	switch_channel_set_variable(channel, "avmd_detect", "TRUE");
    +	switch (mode) {
    +
    +		case AVMD_DETECT_AMP:
    +			v_amp = sqa_amp_b->sma - (sma_amp_b->sma * sma_amp_b->sma);											   /* calculate variance of amplitude (biased estimator) */
    +			avmd_fire_event(AVMD_EVENT_BEEP, s->session, 0, 0, sma_amp_b->sma, v_amp, 0, 0, s->detection_start_time, s->detection_stop_time, 0, 0, b->resolution, b->offset, d->idx);
    +			if (s->settings.report_status == 1) {
    +				switch_log_printf(SWITCH_CHANNEL_SESSION_LOG(s->session), SWITCH_LOG_INFO, "<<< AVMD - Beep Detected [%u][%u][%u][%u]: amplitude = [%f](max [%f]) variance = [%f], detection time [%" PRId64 "] [us] >>>\n",
    +						mode, b->resolution, b->offset, d->idx, sma_amp_b->sma, b->amplitude_max, v_amp, detection_time);
    +			}
    +			break;
    +
    +		case AVMD_DETECT_FREQ:
    +			f_sma = sma_b_fir->sma;
    +			v_fir = sqa_b_fir->sma - (sma_b_fir->sma * sma_b_fir->sma);											   /* calculate variance of filtered samples */
    +			avmd_fire_event(AVMD_EVENT_BEEP, s->session, AVMD_TO_HZ(s->rate, f_sma), v_fir, 0, 0, 0, 0, s->detection_start_time, s->detection_stop_time, 0, 0, b->resolution, b->offset, d->idx);
    +			if (s->settings.report_status == 1) {
    +				switch_log_printf(SWITCH_CHANNEL_SESSION_LOG(s->session), SWITCH_LOG_INFO, "<<< AVMD - Beep Detected [%u][%u][%u][%u]: f = [%f] variance = [%f], detection time [%" PRId64 "] [us] >>>\n",
    +						mode, b->resolution, b->offset, d->idx, AVMD_TO_HZ(s->rate, f_sma), v_fir, detection_time);
    +			}
    +			break;
    +
    +		case AVMD_DETECT_BOTH:
    +			v_amp = sqa_amp_b->sma - (sma_amp_b->sma * sma_amp_b->sma);											   /* calculate variance of amplitude (biased estimator) */
    +			f_sma = sma_b_fir->sma;
    +			v_fir = sqa_b_fir->sma - (sma_b_fir->sma * sma_b_fir->sma);											   /* calculate variance of filtered samples */
    +			avmd_fire_event(AVMD_EVENT_BEEP, s->session, AVMD_TO_HZ(s->rate, f_sma), v_fir, sma_amp_b->sma, v_amp, 0, 0, s->detection_start_time, s->detection_stop_time, 0, 0, b->resolution, b->offset, d->idx);
    +			if (s->settings.report_status == 1) {
    +				switch_log_printf(SWITCH_CHANNEL_SESSION_LOG(s->session), SWITCH_LOG_INFO, "<<< AVMD - Beep Detected [%u][%u][%u][%u]: f = [%f] variance = [%f], amplitude = [%f](max [%f]) variance = [%f], detection time [%" PRId64 "] [us] >>>\n",
    +						mode, b->resolution, b->offset, d->idx, AVMD_TO_HZ(s->rate, f_sma), v_fir, sma_amp_b->sma, b->amplitude_max, v_amp, detection_time);
    +			}
    +			break;
    +
    +		default:
    +			break;
    +	}
    +	s->state.beep_state = BEEP_DETECTED;
     }
     
     static uint8_t
     avmd_detection_in_progress(avmd_session_t *s) {
    -    uint8_t idx = 0;
    -    while (idx < (s->settings.detectors_n + s->settings.detectors_lagged_n)) {
    -        switch_mutex_lock(s->detectors[idx].mutex);
    -        if (s->detectors[idx].flag_processing_done == 0) {
    -            switch_mutex_unlock(s->detectors[idx].mutex);
    -            return 1;
    -        }
    -        switch_mutex_unlock(s->detectors[idx].mutex);
    -        ++idx;
    -    }
    -    return 0;
    +	uint8_t idx = 0;
    +	while (idx < (s->settings.detectors_n + s->settings.detectors_lagged_n)) {
    +		switch_mutex_lock(s->detectors[idx].mutex);
    +		if (s->detectors[idx].flag_processing_done == 0) {
    +			switch_mutex_unlock(s->detectors[idx].mutex);
    +			return 1;
    +		}
    +		switch_mutex_unlock(s->detectors[idx].mutex);
    +		++idx;
    +	}
    +	return 0;
     }
     
     static enum avmd_detection_mode
     avmd_detection_result(avmd_session_t *s) {
    -    enum avmd_detection_mode res;
    -    uint8_t idx = 0;
    -    while (idx < (s->settings.detectors_n + s->settings.detectors_lagged_n)) {
    -        res = s->detectors[idx].result;
    -        if (res != AVMD_DETECT_NONE) {
    -            avmd_report_detection(s, res, &s->detectors[idx]);
    -            return res;
    -        }
    -        ++idx;
    -    }
    -    return AVMD_DETECT_NONE;
    +	enum avmd_detection_mode res;
    +	uint8_t idx = 0;
    +	while (idx < (s->settings.detectors_n + s->settings.detectors_lagged_n)) {
    +		res = s->detectors[idx].result;
    +		if (res != AVMD_DETECT_NONE) {
    +			avmd_report_detection(s, res, &s->detectors[idx]);
    +			return res;
    +		}
    +		++idx;
    +	}
    +	return AVMD_DETECT_NONE;
     }
     
     /*! \brief Process one frame of data with avmd algorithm.
    @@ -2051,258 +2051,258 @@ avmd_detection_result(avmd_session_t *s) {
      * @param frame An audio frame.
      */
     static void avmd_process(avmd_session_t *s, switch_frame_t *frame, uint8_t direction) {
    -    circ_buffer_t           *b;
    -    uint8_t                 idx;
    -    struct avmd_detector    *d;
    +	circ_buffer_t *b;
    +	uint8_t idx;
    +	struct avmd_detector *d;
     
     
    -    b = &s->b;
    +	b = &s->b;
     
    -    switch_mutex_lock(s->mutex_detectors_done);
    -    while (avmd_detection_in_progress(s) == 1) {
    -        switch_thread_cond_wait(s->cond_detectors_done, s->mutex_detectors_done);
    -    }
    -    switch_mutex_unlock(s->mutex_detectors_done);
    +	switch_mutex_lock(s->mutex_detectors_done);
    +	while (avmd_detection_in_progress(s) == 1) {
    +		switch_thread_cond_wait(s->cond_detectors_done, s->mutex_detectors_done);
    +	}
    +	switch_mutex_unlock(s->mutex_detectors_done);
     
    -    if (s->state.beep_state == BEEP_DETECTED) {                         /* If beep has already been detected skip the CPU heavy stuff */
    -        return;
    -    }
    +	if (s->state.beep_state == BEEP_DETECTED) {						 /* If beep has already been detected skip the CPU heavy stuff */
    +		return;
    +	}
     
    -    if (s->frame_n_to_skip > 0) {
    -        s->frame_n_to_skip--;
    -        return;
    -    }
    +	if (s->frame_n_to_skip > 0) {
    +		s->frame_n_to_skip--;
    +		return;
    +	}
     
     	if (s->settings.debug) {
     		switch_log_printf(SWITCH_CHANNEL_SESSION_LOG(s->session), SWITCH_LOG_INFO, "AVMD: processing frame [%zu], direction=%s\n", s->frame_n, direction == AVMD_READ_REPLACE ? "READ" : "WRITE");
     	}
     
    -    if (s->detection_start_time == 0) {
    -        s->detection_start_time = switch_micro_time_now();              /* start detection timer */
    -    }
    -
    -    INSERT_INT16_FRAME(b, (int16_t *)(frame->data), frame->samples);    /* Insert frame of 16 bit samples into buffer */
    -
    -    idx = 0;
    -    while (idx < (s->settings.detectors_n + s->settings.detectors_lagged_n)) {
    -        d = &s->detectors[idx];
    -        switch_mutex_lock(d->mutex);
    -        d = &s->detectors[idx];
    -        if (d->result == AVMD_DETECT_NONE) {
    -            d->flag_processing_done = 0;
    -            d->flag_should_exit = 0;
    -            d->samples = (s->frame_n == 0 ? frame->samples - AVMD_P : frame->samples);
    -            switch_thread_cond_signal(d->cond_start_processing);
    -        }
    -        switch_mutex_unlock(d->mutex);
    -        ++idx;
    -    }
    -
    -    switch_mutex_lock(s->mutex_detectors_done);
    -    while (avmd_detection_in_progress(s) == 1) {
    -        switch_thread_cond_wait(s->cond_detectors_done, s->mutex_detectors_done);
    -    }
    -    avmd_detection_result(s);
    -    switch_mutex_unlock(s->mutex_detectors_done);
    -
    -    ++s->frame_n;
    -    if (s->frame_n == 1) {
    -        s->pos += frame->samples - AVMD_P;
    -    } else {
    -        s->pos += frame->samples;
    -    }
    -    s->pos &= b->mask;
    -
    -    return;
    +	if (s->detection_start_time == 0) {
    +		s->detection_start_time = switch_micro_time_now();			  /* start detection timer */
    +	}
    +
    +	INSERT_INT16_FRAME(b, (int16_t *)(frame->data), frame->samples);	/* Insert frame of 16 bit samples into buffer */
    +
    +	idx = 0;
    +	while (idx < (s->settings.detectors_n + s->settings.detectors_lagged_n)) {
    +		d = &s->detectors[idx];
    +		switch_mutex_lock(d->mutex);
    +		d = &s->detectors[idx];
    +		if (d->result == AVMD_DETECT_NONE) {
    +			d->flag_processing_done = 0;
    +			d->flag_should_exit = 0;
    +			d->samples = (s->frame_n == 0 ? frame->samples - AVMD_P : frame->samples);
    +			switch_thread_cond_signal(d->cond_start_processing);
    +		}
    +		switch_mutex_unlock(d->mutex);
    +		++idx;
    +	}
    +
    +	switch_mutex_lock(s->mutex_detectors_done);
    +	while (avmd_detection_in_progress(s) == 1) {
    +		switch_thread_cond_wait(s->cond_detectors_done, s->mutex_detectors_done);
    +	}
    +	avmd_detection_result(s);
    +	switch_mutex_unlock(s->mutex_detectors_done);
    +
    +	++s->frame_n;
    +	if (s->frame_n == 1) {
    +		s->pos += frame->samples - AVMD_P;
    +	} else {
    +		s->pos += frame->samples;
    +	}
    +	s->pos &= b->mask;
    +
    +	return;
     }
     
     static void avmd_reloadxml_event_handler(switch_event_t *event) {
    -    avmd_load_xml_configuration(avmd_globals.mutex);
    +	avmd_load_xml_configuration(avmd_globals.mutex);
     }
     
     static enum avmd_detection_mode avmd_process_sample(avmd_session_t *s, circ_buffer_t *b, size_t sample_n, size_t pos, struct avmd_detector *d) {
    -    struct avmd_buffer          *buffer = &d->buffer;
    -    uint16_t                    sample_to_skip_n = s->settings.sample_n_to_skip;
    -    enum avmd_detection_mode    mode = s->settings.mode;
    -    uint8_t     valid_amplitude = 1, valid_omega = 1;
    -    double      omega = 0.0, amplitude = 0.0;
    -    double      f = 0.0, f_fir = 0.0;
    -    double      v_amp = 9999.9, v_fir = 9999.9;
    -
    -    sma_buffer_t    *sma_b = &buffer->sma_b;
    -    sma_buffer_t    *sqa_b = &buffer->sqa_b;
    -
    -    sma_buffer_t    *sma_b_fir = &buffer->sma_b_fir;
    -    sma_buffer_t    *sqa_b_fir = &buffer->sqa_b_fir;
    -
    -    sma_buffer_t    *sma_amp_b = &buffer->sma_amp_b;
    -    sma_buffer_t    *sqa_amp_b = &buffer->sqa_amp_b;
    -
    -    if (sample_to_skip_n > 0) {
    -        sample_to_skip_n--;
    -        valid_amplitude = 0;
    -        valid_omega = 0;
    -        return AVMD_DETECT_NONE;
    -    }
    -
    -    omega = avmd_desa2_tweaked(b, pos + sample_n, &litude);
    -
    -    if (mode == AVMD_DETECT_AMP || mode == AVMD_DETECT_BOTH) {
    -        if (ISNAN(amplitude) || ISINF(amplitude)) {
    -            valid_amplitude = 0;
    -            if (s->settings.require_continuous_streak_amp == 1) {
    -                RESET_SMA_BUFFER(sma_amp_b);
    -                RESET_SMA_BUFFER(sqa_amp_b);
    -                buffer->samples_streak_amp = s->settings.sample_n_continuous_streak_amp;
    -                sample_to_skip_n = s->settings.sample_n_to_skip;
    -            }
    -        } else {
    -            if (ISINF(amplitude)) {
    -                amplitude = buffer->amplitude_max;
    -            }
    -            if (valid_amplitude == 1) {
    -                APPEND_SMA_VAL(sma_amp_b, amplitude);               /* append amplitude */
    -                APPEND_SMA_VAL(sqa_amp_b, amplitude * amplitude);
    -                if (s->settings.require_continuous_streak_amp == 1) {
    -                    if (buffer->samples_streak_amp > 0) {
    -                        --buffer->samples_streak_amp;
    -                        valid_amplitude = 0;
    -                    }
    -                }
    -            }
    -            if (sma_amp_b->sma > buffer->amplitude_max) {
    -                buffer->amplitude_max = sma_amp_b->sma;
    -            }
    -        }
    -    }
    -
    -    if (mode == AVMD_DETECT_FREQ || mode == AVMD_DETECT_BOTH) {
    -        if (ISNAN(omega)) {
    -            valid_omega = 0;
    -            if (s->settings.require_continuous_streak == 1) {
    -                RESET_SMA_BUFFER(sma_b);
    -                RESET_SMA_BUFFER(sqa_b);
    -                RESET_SMA_BUFFER(sma_b_fir);
    -                RESET_SMA_BUFFER(sqa_b_fir);
    -                buffer->samples_streak = s->settings.sample_n_continuous_streak;
    -                sample_to_skip_n = s->settings.sample_n_to_skip;
    -            }
    -            sample_to_skip_n = s->settings.sample_n_to_skip;
    -        } else if (omega < -0.99999 || omega > 0.99999) {
    -            valid_omega = 0;
    -            if (s->settings.require_continuous_streak == 1) {
    -                RESET_SMA_BUFFER(sma_b);
    -                RESET_SMA_BUFFER(sqa_b);
    -                RESET_SMA_BUFFER(sma_b_fir);
    -                RESET_SMA_BUFFER(sqa_b_fir);
    -                buffer->samples_streak = s->settings.sample_n_continuous_streak;
    -                sample_to_skip_n = s->settings.sample_n_to_skip;
    -            }
    -        } else {
    -            if (valid_omega) {
    +	struct avmd_buffer *buffer = &d->buffer;
    +	uint16_t sample_to_skip_n = s->settings.sample_n_to_skip;
    +	enum avmd_detection_mode mode = s->settings.mode;
    +	uint8_t valid_amplitude = 1, valid_omega = 1;
    +	double omega = 0.0, amplitude = 0.0;
    +	double f = 0.0, f_fir = 0.0;
    +	double v_amp = 9999.9, v_fir = 9999.9;
    +
    +	sma_buffer_t *sma_b = &buffer->sma_b;
    +	sma_buffer_t *sqa_b = &buffer->sqa_b;
    +
    +	sma_buffer_t *sma_b_fir = &buffer->sma_b_fir;
    +	sma_buffer_t *sqa_b_fir = &buffer->sqa_b_fir;
    +
    +	sma_buffer_t *sma_amp_b = &buffer->sma_amp_b;
    +	sma_buffer_t *sqa_amp_b = &buffer->sqa_amp_b;
    +
    +	if (sample_to_skip_n > 0) {
    +		sample_to_skip_n--;
    +		valid_amplitude = 0;
    +		valid_omega = 0;
    +		return AVMD_DETECT_NONE;
    +	}
    +
    +	omega = avmd_desa2_tweaked(b, pos + sample_n, &litude);
    +
    +	if (mode == AVMD_DETECT_AMP || mode == AVMD_DETECT_BOTH) {
    +		if (ISNAN(amplitude) || ISINF(amplitude)) {
    +			valid_amplitude = 0;
    +			if (s->settings.require_continuous_streak_amp == 1) {
    +				RESET_SMA_BUFFER(sma_amp_b);
    +				RESET_SMA_BUFFER(sqa_amp_b);
    +				buffer->samples_streak_amp = s->settings.sample_n_continuous_streak_amp;
    +				sample_to_skip_n = s->settings.sample_n_to_skip;
    +			}
    +		} else {
    +			if (ISINF(amplitude)) {
    +				amplitude = buffer->amplitude_max;
    +			}
    +			if (valid_amplitude == 1) {
    +				APPEND_SMA_VAL(sma_amp_b, amplitude);			   /* append amplitude */
    +				APPEND_SMA_VAL(sqa_amp_b, amplitude * amplitude);
    +				if (s->settings.require_continuous_streak_amp == 1) {
    +					if (buffer->samples_streak_amp > 0) {
    +						--buffer->samples_streak_amp;
    +						valid_amplitude = 0;
    +					}
    +				}
    +			}
    +			if (sma_amp_b->sma > buffer->amplitude_max) {
    +				buffer->amplitude_max = sma_amp_b->sma;
    +			}
    +		}
    +	}
    +
    +	if (mode == AVMD_DETECT_FREQ || mode == AVMD_DETECT_BOTH) {
    +		if (ISNAN(omega)) {
    +			valid_omega = 0;
    +			if (s->settings.require_continuous_streak == 1) {
    +				RESET_SMA_BUFFER(sma_b);
    +				RESET_SMA_BUFFER(sqa_b);
    +				RESET_SMA_BUFFER(sma_b_fir);
    +				RESET_SMA_BUFFER(sqa_b_fir);
    +				buffer->samples_streak = s->settings.sample_n_continuous_streak;
    +				sample_to_skip_n = s->settings.sample_n_to_skip;
    +			}
    +			sample_to_skip_n = s->settings.sample_n_to_skip;
    +		} else if (omega < -0.99999 || omega > 0.99999) {
    +			valid_omega = 0;
    +			if (s->settings.require_continuous_streak == 1) {
    +				RESET_SMA_BUFFER(sma_b);
    +				RESET_SMA_BUFFER(sqa_b);
    +				RESET_SMA_BUFFER(sma_b_fir);
    +				RESET_SMA_BUFFER(sqa_b_fir);
    +				buffer->samples_streak = s->settings.sample_n_continuous_streak;
    +				sample_to_skip_n = s->settings.sample_n_to_skip;
    +			}
    +		} else {
    +			if (valid_omega) {
     
     #if !defined(WIN32) && defined(AVMD_FAST_MATH)
    -                f =  0.5 * (double) fast_acosf((float)omega);
    +				f =  0.5 * (double) fast_acosf((float)omega);
     #else
    -                f = 0.5 * acos(omega);
    +				f = 0.5 * acos(omega);
     #endif /* !WIN32 && AVMD_FAST_MATH */
    -                f_fir = sma_b->pos > 1 ? (AVMD_MEDIAN_FILTER(sma_b->data[sma_b->pos - 2], sma_b->data[sma_b->pos - 1], f)) : f;
    -
    -                APPEND_SMA_VAL(sma_b, f);                                                                           /* append frequency             */
    -                APPEND_SMA_VAL(sqa_b, f * f);
    -                APPEND_SMA_VAL(sma_b_fir, f_fir);                                                                   /* append filtered frequency    */
    -                APPEND_SMA_VAL(sqa_b_fir, f_fir * f_fir);
    -                if (s->settings.require_continuous_streak == 1) {
    -                    if (buffer->samples_streak > 0) {
    -                        --buffer->samples_streak;
    -                        valid_omega = 0;
    -                    }
    -                }
    -            }
    -        }
    -    }
    -
    -    if (((mode == AVMD_DETECT_AMP) || (mode == AVMD_DETECT_BOTH)) && (valid_amplitude == 1)) {
    -        v_amp = sqa_amp_b->sma - (sma_amp_b->sma * sma_amp_b->sma);                                               /* calculate variance of amplitude (biased estimator) */
    -        if ((mode == AVMD_DETECT_AMP) && (avmd_decision_amplitude(s, buffer, v_amp, AVMD_AMPLITUDE_RSD_THRESHOLD) == 1)) {
    -            return AVMD_DETECT_AMP;
    -        }
    -    }
    -    if (((mode == AVMD_DETECT_FREQ) || (mode == AVMD_DETECT_BOTH)) && (valid_omega == 1)) {
    -        v_fir = sqa_b_fir->sma - (sma_b_fir->sma * sma_b_fir->sma);                                               /* calculate variance of filtered samples */
    -        if ((mode == AVMD_DETECT_FREQ) && (avmd_decision_freq(s, buffer, v_fir, AVMD_VARIANCE_RSD_THRESHOLD) == 1)) {
    -            return AVMD_DETECT_FREQ;
    -        }
    -        if (mode == AVMD_DETECT_BOTH) {
    -            if ((avmd_decision_amplitude(s, buffer, v_amp, AVMD_AMPLITUDE_RSD_THRESHOLD) == 1) && (avmd_decision_freq(s, buffer, v_fir, AVMD_VARIANCE_RSD_THRESHOLD) == 1))  {
    -                return AVMD_DETECT_BOTH;
    -            }
    -        }
    -    }
    -    return AVMD_DETECT_NONE;
    +				f_fir = sma_b->pos > 1 ? (AVMD_MEDIAN_FILTER(sma_b->data[sma_b->pos - 2], sma_b->data[sma_b->pos - 1], f)) : f;
    +
    +				APPEND_SMA_VAL(sma_b, f); /* append frequency */
    +				APPEND_SMA_VAL(sqa_b, f * f);
    +				APPEND_SMA_VAL(sma_b_fir, f_fir); /* append filtered frequency */
    +				APPEND_SMA_VAL(sqa_b_fir, f_fir * f_fir);
    +				if (s->settings.require_continuous_streak == 1) {
    +					if (buffer->samples_streak > 0) {
    +						--buffer->samples_streak;
    +						valid_omega = 0;
    +					}
    +				}
    +			}
    +		}
    +	}
    +
    +	if (((mode == AVMD_DETECT_AMP) || (mode == AVMD_DETECT_BOTH)) && (valid_amplitude == 1)) {
    +		v_amp = sqa_amp_b->sma - (sma_amp_b->sma * sma_amp_b->sma); /* calculate variance of amplitude (biased estimator) */
    +		if ((mode == AVMD_DETECT_AMP) && (avmd_decision_amplitude(s, buffer, v_amp, AVMD_AMPLITUDE_RSD_THRESHOLD) == 1)) {
    +			return AVMD_DETECT_AMP;
    +		}
    +	}
    +	if (((mode == AVMD_DETECT_FREQ) || (mode == AVMD_DETECT_BOTH)) && (valid_omega == 1)) {
    +		v_fir = sqa_b_fir->sma - (sma_b_fir->sma * sma_b_fir->sma); /* calculate variance of filtered samples */
    +		if ((mode == AVMD_DETECT_FREQ) && (avmd_decision_freq(s, buffer, v_fir, AVMD_VARIANCE_RSD_THRESHOLD) == 1)) {
    +			return AVMD_DETECT_FREQ;
    +		}
    +		if (mode == AVMD_DETECT_BOTH) {
    +			if ((avmd_decision_amplitude(s, buffer, v_amp, AVMD_AMPLITUDE_RSD_THRESHOLD) == 1) && (avmd_decision_freq(s, buffer, v_fir, AVMD_VARIANCE_RSD_THRESHOLD) == 1))  {
    +				return AVMD_DETECT_BOTH;
    +			}
    +		}
    +	}
    +	return AVMD_DETECT_NONE;
     }
     
     static void* SWITCH_THREAD_FUNC
     avmd_detector_func(switch_thread_t *thread, void *arg) {
    -    size_t      sample_n = 0, samples = AVMD_P;
    -    size_t      pos;
    -    uint8_t     resolution, offset;
    -    avmd_session_t  *s;
    -    enum avmd_detection_mode res = AVMD_DETECT_NONE;
    -    struct avmd_detector *d;
    -
    -
    -    d = (struct avmd_detector*) arg;
    -    s = d->s;
    -    pos = s->pos;
    -    while (1) {
    -        switch_mutex_lock(d->mutex);
    -        while ((d->flag_processing_done == 1) && (d->flag_should_exit == 0)) {
    -            switch_thread_cond_wait(d->cond_start_processing, d->mutex);
    -        }
    -        /* master set processing_done flag to 0 or thread should exit */
    -        if (d->flag_should_exit == 1) {
    -            d->flag_processing_done = 1;
    -            goto end;
    -        }
    -        resolution = d->buffer.resolution;
    -        offset = d->buffer.offset;
    -        samples = d->samples;
    -
    -        if (d->lagged == 1) {
    -            if (d->lag > 0) {
    -                --d->lag;
    -                goto done;
    -            }
    -            pos += AVMD_P;
    -        }
    -
    -        switch_mutex_unlock(d->mutex);
    -        sample_n = 1;
    -        while (sample_n <= samples) {
    -            if (((sample_n + offset) % resolution) == 0) {
    -                res = avmd_process_sample(d->s, &s->b, sample_n, pos, d);
    -                if (res != AVMD_DETECT_NONE) {
    -                    break;
    -                }
    -            }
    -            ++sample_n;
    -        }
    -        switch_mutex_lock(d->mutex);
    +	size_t sample_n = 0, samples = AVMD_P;
    +	size_t pos;
    +	uint8_t resolution, offset;
    +	avmd_session_t  *s;
    +	enum avmd_detection_mode res = AVMD_DETECT_NONE;
    +	struct avmd_detector *d;
    +
    +
    +	d = (struct avmd_detector*) arg;
    +	s = d->s;
    +	pos = s->pos;
    +	while (1) {
    +		switch_mutex_lock(d->mutex);
    +		while ((d->flag_processing_done == 1) && (d->flag_should_exit == 0)) {
    +			switch_thread_cond_wait(d->cond_start_processing, d->mutex);
    +		}
    +		/* master set processing_done flag to 0 or thread should exit */
    +		if (d->flag_should_exit == 1) {
    +			d->flag_processing_done = 1;
    +			goto end;
    +		}
    +		resolution = d->buffer.resolution;
    +		offset = d->buffer.offset;
    +		samples = d->samples;
    +
    +		if (d->lagged == 1) {
    +			if (d->lag > 0) {
    +				--d->lag;
    +				goto done;
    +			}
    +			pos += AVMD_P;
    +		}
    +
    +		switch_mutex_unlock(d->mutex);
    +		sample_n = 1;
    +		while (sample_n <= samples) {
    +			if (((sample_n + offset) % resolution) == 0) {
    +				res = avmd_process_sample(d->s, &s->b, sample_n, pos, d);
    +				if (res != AVMD_DETECT_NONE) {
    +					break;
    +				}
    +			}
    +			++sample_n;
    +		}
    +		switch_mutex_lock(d->mutex);
     done:
    -        d->flag_processing_done = 1;
    -        d->result = res;
    -        switch_mutex_unlock(d->mutex);
    +		d->flag_processing_done = 1;
    +		d->result = res;
    +		switch_mutex_unlock(d->mutex);
     
    -        switch_mutex_lock(s->mutex_detectors_done);
    -        switch_thread_cond_signal(s->cond_detectors_done);
    -        switch_mutex_unlock(s->mutex_detectors_done);
    -    }
    -    return NULL;
    +		switch_mutex_lock(s->mutex_detectors_done);
    +		switch_thread_cond_signal(s->cond_detectors_done);
    +		switch_mutex_unlock(s->mutex_detectors_done);
    +	}
    +	return NULL;
     
     end:
    -    switch_mutex_unlock(d->mutex);
    -    return NULL;
    +	switch_mutex_unlock(d->mutex);
    +	return NULL;
     }
     
     
    diff --git a/src/mod/applications/mod_avmd/scripts/avmd_get_events.pl b/src/mod/applications/mod_avmd/scripts/avmd_get_events.pl
    index 80d0caeb6d7..f66f41a6d86 100644
    --- a/src/mod/applications/mod_avmd/scripts/avmd_get_events.pl
    +++ b/src/mod/applications/mod_avmd/scripts/avmd_get_events.pl
    @@ -19,18 +19,18 @@
     my $format = "plain";
     
     if ($#ARGV + 1 eq 1) {
    -    $format = $ARGV[0];
    -    print "Using format: [" .$format ."]\n";
    +	$format = $ARGV[0];
    +	print "Using format: [" .$format ."]\n";
     }
     
    -my $con  = new ESL::ESLconnection($host, $port, $pass);
    +my $con = new ESL::ESLconnection($host, $port, $pass);
     if (!$con) {
    -    die "Unable to establish connection to $host:$port\n";
    +	die "Unable to establish connection to $host:$port\n";
     }
     if ($con->connected()) {
    -    print "OK, Connected.\n";
    +	print "OK, Connected.\n";
     } else {
    -    die "Conenction failure.\n";
    +	die "Conenction failure.\n";
     }
     
     print "Subscribing to avmd events...\n";
    @@ -40,17 +40,17 @@
     
     print "Waiting for the events...\n";
     while($con->connected()) {
    -    my $e = $con->recvEvent();
    -    my $avmd_event_type = "";
    -    $avmd_event_type = $e->getHeader("Event-Subclass");
    -    if ($avmd_event_type eq 'avmd::start') { # mark nicely the start of new session and event streak - most likely there will be other events from this session coming after this one
    -        print "\n--------------------\n\n";
    -    }
    -    if ($e) {
    -        my $body = $e->serialize($format);
    -        print $body;
    -        print "\n\n";
    -    }
    +	my $e = $con->recvEvent();
    +	my $avmd_event_type = "";
    +	$avmd_event_type = $e->getHeader("Event-Subclass");
    +	if ($avmd_event_type eq 'avmd::start') { # mark nicely the start of new session and event streak - most likely there will be other events from this session coming after this one
    +		print "\n--------------------\n\n";
    +	}
    +	if ($e) {
    +		my $body = $e->serialize($format);
    +		print $body;
    +		print "\n\n";
    +	}
     }
     
     print "Disconnected.\n\n";
    diff --git a/src/mod/applications/mod_avmd/scripts/avmd_originate.pl b/src/mod/applications/mod_avmd/scripts/avmd_originate.pl
    index 9cbc98ea5e6..2906e4af415 100644
    --- a/src/mod/applications/mod_avmd/scripts/avmd_originate.pl
    +++ b/src/mod/applications/mod_avmd/scripts/avmd_originate.pl
    @@ -25,21 +25,21 @@
     
     
     if ($#ARGV + 1 eq 2) {
    -    $dest = $ARGV[0];
    -    $callerid = $ARGV[1];
    -    print "Dialing [" .$dest ."] as " .$callerid ."]\n";
    +	$dest = $ARGV[0];
    +	$callerid = $ARGV[1];
    +	print "Dialing [" .$dest ."] as " .$callerid ."]\n";
     } else {
    -    die "Please specify destination number and caller id\n";
    +	die "Please specify destination number and caller id\n";
     }
     
     my $con  = new ESL::ESLconnection($host, $port, $pass);
     if (!$con) {
    -    die "Unable to establish connection to $host:$port\n";
    +	die "Unable to establish connection to $host:$port\n";
     }
     if ($con->connected()) {
    -    print "OK, Connected.\n";
    +	print "OK, Connected.\n";
     } else {
    -    die "Connection failure.\n";
    +	die "Connection failure.\n";
     }
     
     print "Subscribing to avmd events...\n";
    @@ -48,42 +48,42 @@
     $con->events("plain", "CUSTOM avmd::beep");
     
     while($con->connected()) {
    -    test_once($dest, $callerid);
    -    return 0;
    +	test_once($dest, $callerid);
    +	return 0;
     }
     
     print "Disconnected.\n\n";
     
     sub test_once {
    -    my ($dest, $callerid) = @_;
    -    my $originate_string =
    -    'originate ' .
    -    '{ignore_early_media=true,' .
    -    'origination_uuid=%s,' . 
    -    'originate_timeout=60,' .
    -    'origination_caller_id_number=' . $callerid . ',' .
    -    'origination_caller_id_name=' . $callerid . '}';
    -
    -    if(defined($endpoint)) {
    -        $originate_string .= $endpoint;
    -    } else {
    -        $originate_string .= 'loopback/' . $dest . '/' . $context;
    -    }
    -    $originate_string .=  ' ' . '&playback(' . $playback . ')';
    -
    -    my $uuid = $con->api('create_uuid')->getBody();
    -    my ($time_epoch, $time_hires) = Time::HiRes::gettimeofday();
    -    printf("Calling with uuid [%s] [%s]... [%s]\n", $uuid, POSIX::strftime('%Y-%m-%d %H:%M:%S', localtime($time_epoch)), $originate_string);
    -
    -    $con->bgapi(sprintf($originate_string, $uuid));
    -
    -    print "Waiting for the events...\n\n";
    -    while($con->connected()) {
    -        my $e = $con->recvEvent();
    -        if ($e) {
    -            my $body = $e->serialize('plain');
    -            print $body;
    -            print "\n\n";
    -        }
    -    }
    +	my ($dest, $callerid) = @_;
    +	my $originate_string =
    +	'originate ' .
    +	'{ignore_early_media=true,' .
    +	'origination_uuid=%s,' . 
    +	'originate_timeout=60,' .
    +	'origination_caller_id_number=' . $callerid . ',' .
    +	'origination_caller_id_name=' . $callerid . '}';
    +
    +	if(defined($endpoint)) {
    +		$originate_string .= $endpoint;
    +	} else {
    +		$originate_string .= 'loopback/' . $dest . '/' . $context;
    +	}
    +	$originate_string .=  ' ' . '&playback(' . $playback . ')';
    +
    +	my $uuid = $con->api('create_uuid')->getBody();
    +	my ($time_epoch, $time_hires) = Time::HiRes::gettimeofday();
    +	printf("Calling with uuid [%s] [%s]... [%s]\n", $uuid, POSIX::strftime('%Y-%m-%d %H:%M:%S', localtime($time_epoch)), $originate_string);
    +
    +	$con->bgapi(sprintf($originate_string, $uuid));
    +
    +	print "Waiting for the events...\n\n";
    +	while($con->connected()) {
    +		my $e = $con->recvEvent();
    +		if ($e) {
    +			my $body = $e->serialize('plain');
    +			print $body;
    +			print "\n\n";
    +		}
    +	}
     }
    diff --git a/src/mod/applications/mod_avmd/scripts/avmd_originate_multiple.pl b/src/mod/applications/mod_avmd/scripts/avmd_originate_multiple.pl
    index 223cedc5571..758c89deb1b 100644
    --- a/src/mod/applications/mod_avmd/scripts/avmd_originate_multiple.pl
    +++ b/src/mod/applications/mod_avmd/scripts/avmd_originate_multiple.pl
    @@ -32,55 +32,55 @@
     
     
     if ($#ARGV + 1 eq 3) {
    -    $dest = $ARGV[0];
    -    $callerid = $ARGV[1];
    -    $thread_n = $ARGV[2];
    -    print "Dialing [" .$thread_n ."] calls simultaneously to[" .$dest ."] as [" .$callerid ."]\n";
    +	$dest = $ARGV[0];
    +	$callerid = $ARGV[1];
    +	$thread_n = $ARGV[2];
    +	print "Dialing [" .$thread_n ."] calls simultaneously to[" .$dest ."] as [" .$callerid ."]\n";
     } else {
    -    die "Please specify destination number, caller id and number of calls to make\n\nExample:\n./avmd_originate_multiple.pl EXTENSION CALLER NUMBER_OF_CALLS";
    +	die "Please specify destination number, caller id and number of calls to make\n\nExample:\n./avmd_originate_multiple.pl EXTENSION CALLER NUMBER_OF_CALLS";
     }
     
     my $con  = new ESL::ESLconnection($host, $port, $pass);
     if (!$con) {
    -    die "Unable to establish connection to $host:$port\n";
    +	die "Unable to establish connection to $host:$port\n";
     }
     if ($con->connected()) {
    -    print "OK, Connected.\n";
    +	print "OK, Connected.\n";
     } else {
    -    die "Connection failure.\n";
    +	die "Connection failure.\n";
     }
     
     while($con->connected() && ($idx < $thread_n)) {
    -    call_once($dest, $callerid, $idx);
    -    $idx++;
    -    Time::HiRes::sleep(0.11);    # avoid switch_core_session.c:2265 Throttle Error! 33, switch_time.c:1227 Over Session Rate of 30!
    +	call_once($dest, $callerid, $idx);
    +	$idx++;
    +	Time::HiRes::sleep(0.11);	# avoid switch_core_session.c:2265 Throttle Error! 33, switch_time.c:1227 Over Session Rate of 30!
     }
     
     print "Disconnected.\n\n";
     
     sub call_once {
    -    my ($dest, $callerid, $idx) = @_;
    -    my $originate_string =
    -    'originate ' .
    -    '{ignore_early_media=true,' .
    -    'originator_codec=PCMA,' .
    -    'origination_uuid=%s,' . 
    -    'originate_timeout=60,' .
    -    'origination_caller_id_number=' . $callerid . ',' .
    -    'origination_caller_id_name=' . $callerid . '}';
    +	my ($dest, $callerid, $idx) = @_;
    +	my $originate_string =
    +	'originate ' .
    +	'{ignore_early_media=true,' .
    +	'originator_codec=PCMA,' .
    +	'origination_uuid=%s,' . 
    +	'originate_timeout=60,' .
    +	'origination_caller_id_number=' . $callerid . ',' .
    +	'origination_caller_id_name=' . $callerid . '}';
     
    -    if(defined($endpoint)) {
    -        $originate_string = '';
    -        $originate_string .= $endpoint;
    -    } else {
    -        $originate_string .= 'loopback/' . $dest . '/' . $context;
    -        $originate_string .=  ' ' . '&playback(' . $playback . ')';
    -    }
    +	if(defined($endpoint)) {
    +		$originate_string = '';
    +		$originate_string .= $endpoint;
    +	} else {
    +		$originate_string .= 'loopback/' . $dest . '/' . $context;
    +		$originate_string .=  ' ' . '&playback(' . $playback . ')';
    +	}
     
    -    my $uuid = $con->api('create_uuid')->getBody();
    -    my ($time_epoch, $time_hires) = Time::HiRes::gettimeofday();
    -    printf("[%s]\tCalling with uuid [%s] [%s]... [%s]\n", $idx + 1, $uuid, POSIX::strftime('%Y-%m-%d %H:%M:%S', localtime($time_epoch)), $originate_string);
    +	my $uuid = $con->api('create_uuid')->getBody();
    +	my ($time_epoch, $time_hires) = Time::HiRes::gettimeofday();
    +	printf("[%s]\tCalling with uuid [%s] [%s]... [%s]\n", $idx + 1, $uuid, POSIX::strftime('%Y-%m-%d %H:%M:%S', localtime($time_epoch)), $originate_string);
     
    -    $con->bgapi(sprintf($originate_string, $uuid));
    -    $con->api('uuid_setvar ' . $uuid .' execute_on_answer avmd_start');
    +	$con->bgapi(sprintf($originate_string, $uuid));
    +	$con->api('uuid_setvar ' . $uuid .' execute_on_answer avmd_start');
     }
    diff --git a/src/mod/applications/mod_avmd/scripts/avmd_originate_multiple_loopback.pl b/src/mod/applications/mod_avmd/scripts/avmd_originate_multiple_loopback.pl
    index 8eb791d13cc..1831d09d5ff 100644
    --- a/src/mod/applications/mod_avmd/scripts/avmd_originate_multiple_loopback.pl
    +++ b/src/mod/applications/mod_avmd/scripts/avmd_originate_multiple_loopback.pl
    @@ -27,51 +27,51 @@
     
     
     if ($#ARGV + 1 eq 3) {
    -    $dest = $ARGV[0];
    -    $callerid = $ARGV[1];
    -    $thread_n = $ARGV[2];
    -    print "Dialing [" .$thread_n ."] calls simultaneously to [loopback][" .$dest ."] as [" .$callerid ."]\n";
    +	$dest = $ARGV[0];
    +	$callerid = $ARGV[1];
    +	$thread_n = $ARGV[2];
    +	print "Dialing [" .$thread_n ."] calls simultaneously to [loopback][" .$dest ."] as [" .$callerid ."]\n";
     } else {
    -    die "Please specify destination number, caller id and number of calls to make\n";
    +	die "Please specify destination number, caller id and number of calls to make\n";
     }
     
     my $con  = new ESL::ESLconnection($host, $port, $pass);
     if (!$con) {
    -    die "Unable to establish connection to $host:$port\n";
    +	die "Unable to establish connection to $host:$port\n";
     }
     if ($con->connected()) {
    -    print "OK, Connected.\n";
    +	print "OK, Connected.\n";
     } else {
    -    die "Connection failure.\n";
    +	die "Connection failure.\n";
     }
     
     while($con->connected() && ($idx < $thread_n)) {
    -    call_once($dest, $callerid, $idx);
    -    $idx++;
    -    Time::HiRes::sleep(0.11);    # avoid switch_core_session.c:2265 Throttle Error! 33, switch_time.c:1227 Over Session Rate of 30!
    +	call_once($dest, $callerid, $idx);
    +	$idx++;
    +	Time::HiRes::sleep(0.11);	# avoid switch_core_session.c:2265 Throttle Error! 33, switch_time.c:1227 Over Session Rate of 30!
     }
     
     print "Disconnected.\n\n";
     
     sub call_once {
    -    my ($dest, $callerid, $idx) = @_;
    -    my $uuid = 
    -    my $originate_string =
    -    'originate ' .
    -    '{ignore_early_media=true,' .
    -    'originator_codec=PCMA,' .
    -    'origination_uuid=%s,' . 
    -    'originate_timeout=60,' .
    -    'origination_caller_id_number=' . $callerid . ',' .
    -    'origination_caller_id_name=' . $callerid . '}';
    +	my ($dest, $callerid, $idx) = @_;
    +	my $uuid = 
    +	my $originate_string =
    +	'originate ' .
    +	'{ignore_early_media=true,' .
    +	'originator_codec=PCMA,' .
    +	'origination_uuid=%s,' . 
    +	'originate_timeout=60,' .
    +	'origination_caller_id_number=' . $callerid . ',' .
    +	'origination_caller_id_name=' . $callerid . '}';
     
    -    $originate_string .= 'loopback/' . $dest . '/' . $context;
    -    $originate_string .=  ' ' . '&playback(' . $playback . ')';
    +	$originate_string .= 'loopback/' . $dest . '/' . $context;
    +	$originate_string .=  ' ' . '&playback(' . $playback . ')';
     
    -    my $uuid = $con->api('create_uuid')->getBody();
    -    my ($time_epoch, $time_hires) = Time::HiRes::gettimeofday();
    -    printf("[%s]\tCalling with uuid [%s] [%s]... [%s]\n", $idx + 1, $uuid, POSIX::strftime('%Y-%m-%d %H:%M:%S', localtime($time_epoch)), $originate_string);
    +	my $uuid = $con->api('create_uuid')->getBody();
    +	my ($time_epoch, $time_hires) = Time::HiRes::gettimeofday();
    +	printf("[%s]\tCalling with uuid [%s] [%s]... [%s]\n", $idx + 1, $uuid, POSIX::strftime('%Y-%m-%d %H:%M:%S', localtime($time_epoch)), $originate_string);
     
    -    $con->bgapi(sprintf($originate_string, $uuid));
    -    $con->api('uuid_setvar ' . $uuid .' execute_on_answer avmd_start');
    +	$con->bgapi(sprintf($originate_string, $uuid));
    +	$con->api('uuid_setvar ' . $uuid .' execute_on_answer avmd_start');
     }
    diff --git a/src/mod/applications/mod_avmd/scripts/avmd_test.pl b/src/mod/applications/mod_avmd/scripts/avmd_test.pl
    index c6f63e1c094..a32bf03a537 100755
    --- a/src/mod/applications/mod_avmd/scripts/avmd_test.pl
    +++ b/src/mod/applications/mod_avmd/scripts/avmd_test.pl
    @@ -1,14 +1,14 @@
     #!/usr/bin/perl -w
     
     
    -#brief      Test module avmd by calling voicemails from avmd test suite
    -#           and print detection results to the console.
    -#author     Piotr Gregor 
    -#details    If you are testing serving voicemails from dialplan then avmd
    -#           must be set to inbound mode, either globally (by avmd set inbound
    -#           in fs_cli) or in dialplan settings (
    +#details  If you are testing serving voicemails from dialplan then avmd
    +#         must be set to inbound mode, either globally (by avmd set inbound
    +#         in fs_cli) or in dialplan settings ( pairs
     my %numbers = (
    -    503 => "NOTDETECTED",  # dual frequency (similar to single freq with varying amplitude), mode [0] AVMD_DETECT_AMP
    -    504 => "NOTDETECTED",
    -    505 => "NOTDETECTED",
    -    506 => "NOTDETECTED",
    -    507 => "NOTDETECTED",
    -    508 => "NOTDETECTED",
    -    509 => "NOTDETECTED",
    -    510 => "NOTDETECTED",
    -    511 => "NOTDETECTED",
    -    512 => "NOTDETECTED",
    -    513 => "NOTDETECTED",
    -    514 => "NOTDETECTED",
    -    515 => "NOTDETECTED",
    -    516 => "NOTDETECTED",
    -    517 => "NOTDETECTED",
    -    518 => "NOTDETECTED",
    -    519 => "NOTDETECTED",
    -    520 => "NOTDETECTED",
    -    521 => "NOTDETECTED",
    -    522 => "NOTDETECTED",
    -    523 => "NOTDETECTED",
    -    603 => "DETECTED",  # dual frequency (similar to single freq with varying amplitude), mode [1] AVMD_DETECT_FREQ
    -    604 => "DETECTED",
    -    605 => "DETECTED",
    -    606 => "DETECTED",
    -    607 => "DETECTED",
    -    608 => "DETECTED",
    -    609 => "DETECTED",
    -    610 => "DETECTED",
    -    611 => "DETECTED",
    -    612 => "DETECTED",
    -    613 => "DETECTED",
    -    614 => "DETECTED",
    -    615 => "DETECTED",
    -    616 => "DETECTED",
    -    617 => "DETECTED",
    -    618 => "DETECTED",
    -    619 => "DETECTED",
    -    620 => "DETECTED",
    -    621 => "DETECTED",
    -    622 => "DETECTED",
    -    623 => "DETECTED",
    -    703 => "NOTDETECTED",   # dual frequency (similar to single freq with varying amplitude), mode [2] AVMD_DETECT_BOTH
    -    704 => "NOTDETECTED",
    -    705 => "NOTDETECTED",
    -    706 => "NOTDETECTED",
    -    707 => "NOTDETECTED",
    -    708 => "NOTDETECTED",
    -    709 => "NOTDETECTED",
    -    710 => "NOTDETECTED",
    -    711 => "NOTDETECTED",
    -    712 => "NOTDETECTED",
    -    713 => "NOTDETECTED",
    -    714 => "NOTDETECTED",
    -    715 => "NOTDETECTED",
    -    716 => "NOTDETECTED",
    -    717 => "NOTDETECTED",
    -    718 => "NOTDETECTED",
    -    719 => "NOTDETECTED",
    -    720 => "NOTDETECTED",
    -    721 => "NOTDETECTED",
    -    722 => "NOTDETECTED",
    -    723 => "NOTDETECTED",
    -    840531000 => "DETECTED",    # obscure voicemails, mode AVMD_DETECT_BOTH
    -    840531001 => "DETECTED",
    -    840531002 => "DETECTED",
    -    840531003 => "DETECTED",
    -    840531004 => "DETECTED",
    -    840531005 => "DETECTED",
    -    840531006 => "DETECTED",
    -    840531007 => "DETECTED",
    -    840531008 => "DETECTED",
    -    840531009 => "DETECTED",
    -    840531010 => "DETECTED",
    -    840531011 => "DETECTED",
    -    840531012 => "DETECTED",
    -    840531013 => "DETECTED",
    -    840531014 => "DETECTED",
    -    840531200 => "DETECTED",    # obscure voicemails, mode AVMD_DETECT_FREQ
    -    840531201 => "DETECTED",
    -    840531202 => "DETECTED",
    -    840531203 => "DETECTED",
    -    840531204 => "DETECTED",
    -    840531205 => "DETECTED",
    -    840531206 => "DETECTED",
    -    840531207 => "DETECTED",
    -    840531208 => "DETECTED",
    -    840531209 => "DETECTED",
    -    840531210 => "DETECTED",
    -    840531211 => "DETECTED",
    -    840531212 => "DETECTED",
    -    840531213 => "DETECTED",
    -    840531214 => "DETECTED",
    -    840531400 => "DETECTED",    # obscure voicemails ATT pack
    -    840531401 => "DETECTED",
    -    840531402 => "DETECTED",
    -    840531403 => "DETECTED",
    -    840531404 => "DETECTED",
    -    840531405 => "DETECTED",
    -    840531051 => "NOTDETECTED", # fragment of "Save tonight" by Eagle-Eye Cherry covered by D-Lete-Funk-K
    +	503 => "NOTDETECTED",  # dual frequency (similar to single freq with varying amplitude), mode [0] AVMD_DETECT_AMP
    +	504 => "NOTDETECTED",
    +	505 => "NOTDETECTED",
    +	506 => "NOTDETECTED",
    +	507 => "NOTDETECTED",
    +	508 => "NOTDETECTED",
    +	509 => "NOTDETECTED",
    +	510 => "NOTDETECTED",
    +	511 => "NOTDETECTED",
    +	512 => "NOTDETECTED",
    +	513 => "NOTDETECTED",
    +	514 => "NOTDETECTED",
    +	515 => "NOTDETECTED",
    +	516 => "NOTDETECTED",
    +	517 => "NOTDETECTED",
    +	518 => "NOTDETECTED",
    +	519 => "NOTDETECTED",
    +	520 => "NOTDETECTED",
    +	521 => "NOTDETECTED",
    +	522 => "NOTDETECTED",
    +	523 => "NOTDETECTED",
    +	603 => "DETECTED",  # dual frequency (similar to single freq with varying amplitude), mode [1] AVMD_DETECT_FREQ
    +	604 => "DETECTED",
    +	605 => "DETECTED",
    +	606 => "DETECTED",
    +	607 => "DETECTED",
    +	608 => "DETECTED",
    +	609 => "DETECTED",
    +	610 => "DETECTED",
    +	611 => "DETECTED",
    +	612 => "DETECTED",
    +	613 => "DETECTED",
    +	614 => "DETECTED",
    +	615 => "DETECTED",
    +	616 => "DETECTED",
    +	617 => "DETECTED",
    +	618 => "DETECTED",
    +	619 => "DETECTED",
    +	620 => "DETECTED",
    +	621 => "DETECTED",
    +	622 => "DETECTED",
    +	623 => "DETECTED",
    +	703 => "NOTDETECTED",   # dual frequency (similar to single freq with varying amplitude), mode [2] AVMD_DETECT_BOTH
    +	704 => "NOTDETECTED",
    +	705 => "NOTDETECTED",
    +	706 => "NOTDETECTED",
    +	707 => "NOTDETECTED",
    +	708 => "NOTDETECTED",
    +	709 => "NOTDETECTED",
    +	710 => "NOTDETECTED",
    +	711 => "NOTDETECTED",
    +	712 => "NOTDETECTED",
    +	713 => "NOTDETECTED",
    +	714 => "NOTDETECTED",
    +	715 => "NOTDETECTED",
    +	716 => "NOTDETECTED",
    +	717 => "NOTDETECTED",
    +	718 => "NOTDETECTED",
    +	719 => "NOTDETECTED",
    +	720 => "NOTDETECTED",
    +	721 => "NOTDETECTED",
    +	722 => "NOTDETECTED",
    +	723 => "NOTDETECTED",
    +	840531000 => "DETECTED",	# obscure voicemails, mode AVMD_DETECT_BOTH
    +	840531001 => "DETECTED",
    +	840531002 => "DETECTED",
    +	840531003 => "DETECTED",
    +	840531004 => "DETECTED",
    +	840531005 => "DETECTED",
    +	840531006 => "DETECTED",
    +	840531007 => "DETECTED",
    +	840531008 => "DETECTED",
    +	840531009 => "DETECTED",
    +	840531010 => "DETECTED",
    +	840531011 => "DETECTED",
    +	840531012 => "DETECTED",
    +	840531013 => "DETECTED",
    +	840531014 => "DETECTED",
    +	840531200 => "DETECTED",	# obscure voicemails, mode AVMD_DETECT_FREQ
    +	840531201 => "DETECTED",
    +	840531202 => "DETECTED",
    +	840531203 => "DETECTED",
    +	840531204 => "DETECTED",
    +	840531205 => "DETECTED",
    +	840531206 => "DETECTED",
    +	840531207 => "DETECTED",
    +	840531208 => "DETECTED",
    +	840531209 => "DETECTED",
    +	840531210 => "DETECTED",
    +	840531211 => "DETECTED",
    +	840531212 => "DETECTED",
    +	840531213 => "DETECTED",
    +	840531214 => "DETECTED",
    +	840531400 => "DETECTED",	# obscure voicemails ATT pack
    +	840531401 => "DETECTED",
    +	840531402 => "DETECTED",
    +	840531403 => "DETECTED",
    +	840531404 => "DETECTED",
    +	840531405 => "DETECTED",
    +	840531051 => "NOTDETECTED", # fragment of "Save tonight" by Eagle-Eye Cherry covered by D-Lete-Funk-K
     );
     
     my $host = "127.0.0.1";
    @@ -140,24 +140,24 @@
     
     
     if ($#ARGV + 1 eq 1) {
    -    $callerid = $ARGV[0];
    -    print "\nDialing as [" .$callerid ."]\n";
    +	$callerid = $ARGV[0];
    +	print "\nDialing as [" .$callerid ."]\n";
     } elsif ($#ARGV + 1 > 1) {
    -    die "Please specify single caller id.\n";
    +	die "Please specify single caller id.\n";
     } else {
    -    die "Please specify caller id.\n";
    +	die "Please specify caller id.\n";
     }
     
     
     print "Connecting...\t";
     my $con  = new ESL::ESLconnection($host, $port, $pass);
     if (!$con) {
    -    die "Unable to establish connection to $host:$port\n";
    +	die "Unable to establish connection to $host:$port\n";
     }
     if ($con->connected()) {
    -    print "OK.\n";
    +	print "OK.\n";
     } else {
    -    die "Connection failure.\n";
    +	die "Connection failure.\n";
     }
     
     print "Subscribing to avmd events...\t";
    @@ -171,95 +171,95 @@
     
     printf("outbound uuid | destination number | timestamp | expectation | test result | freq | f-variance | amplitude | a-variance | resolution | offset | idx\n\n");
     foreach $dest (sort keys %numbers) {
    -    if (!$con->connected()) {
    -        last;
    -    }
    -    $expectation = $numbers{$dest};
    -    test_once($dest, $callerid, $expectation);
    +	if (!$con->connected()) {
    +		last;
    +	}
    +	$expectation = $numbers{$dest};
    +	test_once($dest, $callerid, $expectation);
     }
     print "Disconnected.\n\n";
     if (($failed == 0) && ($hanguped == 0)) {
    -    printf("\n\nOK. All PASS [%s]\n\n", $passed);
    +	printf("\n\nOK. All PASS [%s]\n\n", $passed);
     } else {
    -    printf("PASS [%s], FAIL [%s], HANGUP [%s]\n\n", $passed, $failed, $hanguped);
    +	printf("PASS [%s], FAIL [%s], HANGUP [%s]\n\n", $passed, $failed, $hanguped);
     }
     
     sub test_once {
    -    my ($dest, $callerid, $expectation) = @_;
    -    my $originate_string =
    -    'originate ' .
    -    '{ignore_early_media=true,' .
    -    'origination_uuid=%s,' .
    -    'originate_timeout=60,' .
    -    'origination_caller_id_number=' . $callerid . ',' .
    -    'origination_caller_id_name=' . $callerid . '}';
    -    my $outcome = "";
    -    my $result = "";
    -    my $event_uuid = "N/A";
    -    my $uuid_in = "";
    -    my $freq = "N/A";
    -    my $freq_var = "N/A";
    -    my $amp = "N/A";
    -    my $amp_var = "N/A";
    -    my $resolution = "N/A";
    -    my $offset = "N/A";
    -    my $idx = "N/A";
    +	my ($dest, $callerid, $expectation) = @_;
    +	my $originate_string =
    +	'originate ' .
    +	'{ignore_early_media=true,' .
    +	'origination_uuid=%s,' .
    +	'originate_timeout=60,' .
    +	'origination_caller_id_number=' . $callerid . ',' .
    +	'origination_caller_id_name=' . $callerid . '}';
    +	my $outcome = "";
    +	my $result = "";
    +	my $event_uuid = "N/A";
    +	my $uuid_in = "";
    +	my $freq = "N/A";
    +	my $freq_var = "N/A";
    +	my $amp = "N/A";
    +	my $amp_var = "N/A";
    +	my $resolution = "N/A";
    +	my $offset = "N/A";
    +	my $idx = "N/A";
     
    -    if(defined($endpoint)) {
    -        $originate_string .= $endpoint;
    -    } else {
    -        $originate_string .= 'loopback/' . $dest . '/' . $context;
    -    }
    -    $originate_string .=  ' ' . '&playback(' . $playback . ')';
    +	if(defined($endpoint)) {
    +		$originate_string .= $endpoint;
    +	} else {
    +		$originate_string .= 'loopback/' . $dest . '/' . $context;
    +	}
    +	$originate_string .=  ' ' . '&playback(' . $playback . ')';
     
    -    my $uuid_out = $con->api('create_uuid')->getBody();
    -    my ($time_epoch, $time_hires) = Time::HiRes::gettimeofday();
    +	my $uuid_out = $con->api('create_uuid')->getBody();
    +	my ($time_epoch, $time_hires) = Time::HiRes::gettimeofday();
     
    -    printf("[%s] [%s]", $uuid_out, $dest);
    -    $con->bgapi(sprintf($originate_string, $uuid_out));
    +	printf("[%s] [%s]", $uuid_out, $dest);
    +	$con->bgapi(sprintf($originate_string, $uuid_out));
     
    -    while($con->connected()) {
    -        my $e = $con->recvEvent();
    -        if ($e) {
    -            my $event_name = $e->getHeader("Event-Name");
    -            if ($event_name eq 'CUSTOM') {
    -                my $avmd_event_type = $e->getHeader("Event-Subclass");
    -                if ($avmd_event_type eq 'avmd::start') {
    -                    $uuid_in = $e->getHeader("Unique-ID");
    -                } elsif (!($uuid_in eq "") && (($avmd_event_type eq 'avmd::beep') || ($avmd_event_type eq 'avmd::stop'))) {
    -                    $event_uuid = $e->getHeader("Unique-ID");
    -                    if ($event_uuid eq $uuid_in) {
    -                        if ($avmd_event_type eq 'avmd::beep') {
    -                            $freq = $e->getHeader("Frequency");
    -                            $freq_var = $e->getHeader("Frequency-variance");
    -                            $amp = $e->getHeader("Amplitude");
    -                            $amp_var = $e->getHeader("Amplitude-variance");
    -                            $resolution = $e->getHeader("Detector-resolution");
    -                            $offset = $e->getHeader("Detector-offset");
    -                            $idx = $e->getHeader("Detector-index");
    -                        }
    -                        $outcome = $e->getHeader("Beep-Status");
    -                        if ($outcome eq $expectation) {
    -                            $result = "PASS";
    -                            $passed++;
    -                        } else {
    -                            $result = "FAIL";
    -                            $failed++;
    -                        }
    -                        last;
    -                    }
    -                }
    -            } elsif ($event_name eq 'CHANNEL_HANGUP') {
    -                $event_uuid = $e->getHeader("variable_origination_uuid");
    -                if ((defined $event_uuid) && ($event_uuid eq $uuid_out)) {
    -                    $outcome = "HANGUP";
    -                    $result = "HANGUP";
    -                    $hanguped++;
    -                    last;
    -                }
    -            }
    -        }
    -    }
    -    printf("\t[%s]\t[%s]\t\t[%s]\t[%s]HZ\t[%s]\t[%s]\t[%s]\t[%s][%s][%s]\n", POSIX::strftime('%Y-%m-%d %H:%M:%S', localtime($time_epoch)), $expectation, $result, $freq, $freq_var, $amp, $amp_var, $resolution, $offset, $idx);
    -    Time::HiRes::sleep(0.5);    # avoid switch_core_session.c:2265 Throttle Error! 33, switch_time.c:1227 Over Session Rate of 30!
    +	while($con->connected()) {
    +		my $e = $con->recvEvent();
    +		if ($e) {
    +			my $event_name = $e->getHeader("Event-Name");
    +			if ($event_name eq 'CUSTOM') {
    +				my $avmd_event_type = $e->getHeader("Event-Subclass");
    +				if ($avmd_event_type eq 'avmd::start') {
    +					$uuid_in = $e->getHeader("Unique-ID");
    +				} elsif (!($uuid_in eq "") && (($avmd_event_type eq 'avmd::beep') || ($avmd_event_type eq 'avmd::stop'))) {
    +					$event_uuid = $e->getHeader("Unique-ID");
    +					if ($event_uuid eq $uuid_in) {
    +						if ($avmd_event_type eq 'avmd::beep') {
    +							$freq = $e->getHeader("Frequency");
    +							$freq_var = $e->getHeader("Frequency-variance");
    +							$amp = $e->getHeader("Amplitude");
    +							$amp_var = $e->getHeader("Amplitude-variance");
    +							$resolution = $e->getHeader("Detector-resolution");
    +							$offset = $e->getHeader("Detector-offset");
    +							$idx = $e->getHeader("Detector-index");
    +						}
    +						$outcome = $e->getHeader("Beep-Status");
    +						if ($outcome eq $expectation) {
    +							$result = "PASS";
    +							$passed++;
    +						} else {
    +							$result = "FAIL";
    +							$failed++;
    +						}
    +						last;
    +					}
    +				}
    +			} elsif ($event_name eq 'CHANNEL_HANGUP') {
    +				$event_uuid = $e->getHeader("variable_origination_uuid");
    +				if ((defined $event_uuid) && ($event_uuid eq $uuid_out)) {
    +					$outcome = "HANGUP";
    +					$result = "HANGUP";
    +					$hanguped++;
    +					last;
    +				}
    +			}
    +		}
    +	}
    +	printf("\t[%s]\t[%s]\t\t[%s]\t[%s]HZ\t[%s]\t[%s]\t[%s]\t[%s][%s][%s]\n", POSIX::strftime('%Y-%m-%d %H:%M:%S', localtime($time_epoch)), $expectation, $result, $freq, $freq_var, $amp, $amp_var, $resolution, $offset, $idx);
    +	Time::HiRes::sleep(0.5);	# avoid switch_core_session.c:2265 Throttle Error! 33, switch_time.c:1227 Over Session Rate of 30!
     }
    diff --git a/src/mod/applications/mod_callcenter/mod_callcenter.c b/src/mod/applications/mod_callcenter/mod_callcenter.c
    index cba6dc84f4d..fd7bb3dafab 100644
    --- a/src/mod/applications/mod_callcenter/mod_callcenter.c
    +++ b/src/mod/applications/mod_callcenter/mod_callcenter.c
    @@ -3820,8 +3820,7 @@ SWITCH_STANDARD_API(cc_config_api_function)
     				goto done;
     			} else {
     				const char *queue_name = argv[0 + initial_argc];
    -				cc_queue_t *queue = NULL;
    -				if ((queue = load_queue(queue_name, SWITCH_TRUE, SWITCH_TRUE, NULL))) {
    +				if (load_queue(queue_name, SWITCH_TRUE, SWITCH_TRUE, NULL)) {
     					stream->write_function(stream, "%s", "+OK\n");
     				} else {
     					stream->write_function(stream, "%s", "-ERR Invalid Queue not found!\n");
    @@ -3845,9 +3844,8 @@ SWITCH_STANDARD_API(cc_config_api_function)
     				goto done;
     			} else {
     				const char *queue_name = argv[0 + initial_argc];
    -				cc_queue_t *queue = NULL;
     				destroy_queue(queue_name);
    -				if ((queue = load_queue(queue_name, SWITCH_TRUE, SWITCH_TRUE, NULL))) {
    +				if (load_queue(queue_name, SWITCH_TRUE, SWITCH_TRUE, NULL)) {
     					stream->write_function(stream, "%s", "+OK\n");
     				} else {
     					stream->write_function(stream, "%s", "-ERR Invalid Queue not found!\n");
    @@ -4213,6 +4211,10 @@ SWITCH_MODULE_LOAD_FUNCTION(mod_callcenter_load)
     		switch_log_printf(SWITCH_CHANNEL_LOG, SWITCH_LOG_ERROR, "Couldn't register subclass %s!\n", CALLCENTER_EVENT);
     		return SWITCH_STATUS_TERM;
     	}
    +	
    +	
    +	memset(&globals, 0, sizeof(globals));
    +	globals.pool = pool;
     
     	/* Subscribe to presence request events */
     	if (switch_event_bind_removable(modname, SWITCH_EVENT_PRESENCE_PROBE, SWITCH_EVENT_SUBCLASS_ANY,
    @@ -4221,9 +4223,6 @@ SWITCH_MODULE_LOAD_FUNCTION(mod_callcenter_load)
     		return SWITCH_STATUS_GENERR;
     	}
     
    -	memset(&globals, 0, sizeof(globals));
    -	globals.pool = pool;
    -
     	switch_core_hash_init(&globals.queue_hash);
     	switch_mutex_init(&globals.mutex, SWITCH_MUTEX_NESTED, globals.pool);
     
    diff --git a/src/mod/applications/mod_commands/mod_commands.c b/src/mod/applications/mod_commands/mod_commands.c
    index a86cea3538e..8e737a78a2b 100644
    --- a/src/mod/applications/mod_commands/mod_commands.c
    +++ b/src/mod/applications/mod_commands/mod_commands.c
    @@ -1175,7 +1175,6 @@ SWITCH_STANDARD_API(group_call_function)
     SWITCH_STANDARD_API(in_group_function)
     {
     	switch_xml_t x_domain, xml = NULL, x_group;
    -	int argc;
     	char *mydata = NULL, *argv[2], *user, *domain, *dup_domain = NULL;
     	char delim = ',';
     	switch_event_t *params = NULL;
    @@ -1186,7 +1185,7 @@ SWITCH_STANDARD_API(in_group_function)
     		goto end;
     	}
     
    -	if ((argc = switch_separate_string(mydata, delim, argv, (sizeof(argv) / sizeof(argv[0])))) < 2) {
    +	if (switch_separate_string(mydata, delim, argv, (sizeof(argv) / sizeof(argv[0]))) < 2) {
     		goto end;
     	}
     
    @@ -1229,7 +1228,6 @@ SWITCH_STANDARD_API(in_group_function)
     SWITCH_STANDARD_API(domain_data_function)
     {
     	switch_xml_t x_domain = NULL, xml_root = NULL, x_param, x_params;
    -	int argc;
     	char *mydata = NULL, *argv[3], *key = NULL, *type = NULL, *domain, *dup_domain = NULL;
     	char delim = ' ';
     	const char *container = "params", *elem = "param";
    @@ -1240,7 +1238,7 @@ SWITCH_STANDARD_API(domain_data_function)
     		goto end;
     	}
     
    -	if ((argc = switch_separate_string(mydata, delim, argv, (sizeof(argv) / sizeof(argv[0])))) < 3) {
    +	if (switch_separate_string(mydata, delim, argv, (sizeof(argv) / sizeof(argv[0]))) < 3) {
     		goto end;
     	}
     
    @@ -1299,7 +1297,6 @@ SWITCH_STANDARD_API(domain_data_function)
     SWITCH_STANDARD_API(user_data_function)
     {
     	switch_xml_t x_user = NULL, x_param, x_params;
    -	int argc;
     	char *mydata = NULL, *argv[3], *key = NULL, *type = NULL, *user, *domain, *dup_domain = NULL;
     	char delim = ' ';
     	const char *container = "params", *elem = "param";
    @@ -1310,7 +1307,7 @@ SWITCH_STANDARD_API(user_data_function)
     		goto end;
     	}
     
    -	if ((argc = switch_separate_string(mydata, delim, argv, (sizeof(argv) / sizeof(argv[0])))) < 3) {
    +	if (switch_separate_string(mydata, delim, argv, (sizeof(argv) / sizeof(argv[0]))) < 3) {
     		goto end;
     	}
     
    @@ -1564,7 +1561,6 @@ SWITCH_STANDARD_API(expand_function)
     	char *dup;
     	char *arg = NULL;
     	char *mycmd;
    -	switch_status_t status;
     	const char *p;
     	switch_core_session_t *xsession;
     	char uuid[80] = "";
    @@ -1603,7 +1599,7 @@ SWITCH_STANDARD_API(expand_function)
     	}
     
     	expanded = arg ? switch_event_expand_headers(stream->param_event, arg) : arg;
    -	if ((status = switch_api_execute(mycmd, expanded, session, stream)) != SWITCH_STATUS_SUCCESS) {
    +	if (switch_api_execute(mycmd, expanded, session, stream) != SWITCH_STATUS_SUCCESS) {
     		stream->write_function(stream, "-ERR Cannot execute command\n");
     	}
     
    @@ -3108,7 +3104,6 @@ SWITCH_STANDARD_API(dual_transfer_function)
     SWITCH_STANDARD_API(tone_detect_session_function)
     {
     	char *argv[8] = { 0 };
    -	int argc;
     	char *mydata = NULL;
     	time_t to = 0;
     	switch_core_session_t *rsession;
    @@ -3122,7 +3117,7 @@ SWITCH_STANDARD_API(tone_detect_session_function)
     	mydata = strdup(cmd);
     	switch_assert(mydata != NULL);
     
    -	if ((argc = switch_separate_string(mydata, ' ', argv, sizeof(argv) / sizeof(argv[0]))) < 3 || !argv[0]) {
    +	if (switch_separate_string(mydata, ' ', argv, sizeof(argv) / sizeof(argv[0])) < 3 || !argv[0]) {
     		switch_log_printf(SWITCH_CHANNEL_SESSION_LOG(session), SWITCH_LOG_ERROR, "-ERR INVALID ARGS!\n");
     		return SWITCH_STATUS_SUCCESS;
     	}
    @@ -4833,7 +4828,6 @@ SWITCH_STANDARD_API(session_displace_function)
     	switch_core_session_t *rsession = NULL;
     	char *mycmd = NULL, *argv[5] = { 0 };
     	char *uuid = NULL, *action = NULL, *path = NULL;
    -	int argc = 0;
     	uint32_t limit = 0;
     	char *flags = NULL;
     
    @@ -4841,7 +4835,7 @@ SWITCH_STANDARD_API(session_displace_function)
     		goto usage;
     	}
     
    -	if ((argc = switch_separate_string(mycmd, ' ', argv, (sizeof(argv) / sizeof(argv[0])))) < 3) {
    +	if (switch_separate_string(mycmd, ' ', argv, (sizeof(argv) / sizeof(argv[0]))) < 3) {
     		goto usage;
     	}
     
    @@ -5368,7 +5362,6 @@ static void *SWITCH_THREAD_FUNC bgapi_exec(switch_thread_t *thread, void *obj)
     {
     	struct bg_job *job = (struct bg_job *) obj;
     	switch_stream_handle_t stream = { 0 };
    -	switch_status_t status;
     	char *reply, *freply = NULL;
     	switch_event_t *event;
     	char *arg;
    @@ -5388,7 +5381,7 @@ static void *SWITCH_THREAD_FUNC bgapi_exec(switch_thread_t *thread, void *obj)
     		*arg++ = '\0';
     	}
     
    -	if ((status = switch_api_execute(job->cmd, arg, NULL, &stream)) == SWITCH_STATUS_SUCCESS) {
    +	if (switch_api_execute(job->cmd, arg, NULL, &stream) == SWITCH_STATUS_SUCCESS) {
     		reply = stream.data;
     	} else {
     		freply = switch_mprintf("%s: Command not found!\n", job->cmd);
    @@ -5636,9 +5629,7 @@ static int show_callback(void *pArg, int argc, char **argv, char **columnNames)
     #define COMPLETE_SYNTAX "add |del [|*]"
     SWITCH_STANDARD_API(complete_function)
     {
    -	switch_status_t status;
    -
    -	if ((status = switch_console_set_complete(cmd)) == SWITCH_STATUS_SUCCESS) {
    +	if (switch_console_set_complete(cmd) == SWITCH_STATUS_SUCCESS) {
     		stream->write_function(stream, "+OK\n");
     	} else {
     		stream->write_function(stream, "-USAGE: %s\n", COMPLETE_SYNTAX);
    @@ -5650,9 +5641,7 @@ SWITCH_STANDARD_API(complete_function)
     #define ALIAS_SYNTAX "[add|stickyadd]   | del [|*]"
     SWITCH_STANDARD_API(alias_function)
     {
    -	switch_status_t status;
    -
    -	if ((status = switch_console_set_alias(cmd)) == SWITCH_STATUS_SUCCESS) {
    +	if (switch_console_set_alias(cmd) == SWITCH_STATUS_SUCCESS) {
     		stream->write_function(stream, "+OK\n");
     	} else {
     		stream->write_function(stream, "-USAGE: %s\n", ALIAS_SYNTAX);
    @@ -6350,7 +6339,6 @@ SWITCH_STANDARD_API(uuid_send_dtmf_function)
     	switch_core_session_t *psession = NULL;
     	char *mycmd = NULL, *argv[2] = { 0 };
     	char *uuid = NULL, *dtmf_data = NULL;
    -	int argc = 0;
     
     	if (zstr(cmd)) {
     		goto usage;
    @@ -6360,7 +6348,7 @@ SWITCH_STANDARD_API(uuid_send_dtmf_function)
     		goto usage;
     	}
     
    -	if ((argc = switch_separate_string(mycmd, ' ', argv, (sizeof(argv) / sizeof(argv[0])))) < 2) {
    +	if (switch_separate_string(mycmd, ' ', argv, (sizeof(argv) / sizeof(argv[0]))) < 2) {
     		goto usage;
     	}
     
    @@ -6403,7 +6391,6 @@ SWITCH_STANDARD_API(uuid_recv_dtmf_function)
     	switch_core_session_t *psession = NULL;
     	char *mycmd = NULL, *argv[2] = { 0 };
     	char *uuid = NULL, *dtmf_data = NULL;
    -	int argc = 0;
     
     	if (zstr(cmd)) {
     		goto usage;
    @@ -6413,7 +6400,7 @@ SWITCH_STANDARD_API(uuid_recv_dtmf_function)
     		goto usage;
     	}
     
    -	if ((argc = switch_separate_string(mycmd, ' ', argv, (sizeof(argv) / sizeof(argv[0])))) < 2) {
    +	if (switch_separate_string(mycmd, ' ', argv, (sizeof(argv) / sizeof(argv[0]))) < 2) {
     		goto usage;
     	}
     
    diff --git a/src/mod/applications/mod_conference/conference_api.c b/src/mod/applications/mod_conference/conference_api.c
    index fd51d294cb6..8bcfc5862fb 100644
    --- a/src/mod/applications/mod_conference/conference_api.c
    +++ b/src/mod/applications/mod_conference/conference_api.c
    @@ -89,6 +89,8 @@ api_command_t conference_api_sub_commands[] = {
     	{"undeaf", (void_fn_t) & conference_api_sub_undeaf, CONF_API_SUB_MEMBER_TARGET, "undeaf", "<[member_id|all]|last|non_moderator>"},
     	{"vid-filter", (void_fn_t) & conference_api_sub_video_filter, CONF_API_SUB_MEMBER_TARGET, "vid-filter", "<[member_id|all]|last|non_moderator> "},
     	{"relate", (void_fn_t) & conference_api_sub_relate, CONF_API_SUB_ARGS_SPLIT, "relate", "[,] [,] [nospeak|nohear|clear]"},
    +	{"getvar", (void_fn_t) & conference_api_sub_getvar, CONF_API_SUB_ARGS_SPLIT, "getvar", ""},
    +	{"setvar", (void_fn_t) & conference_api_sub_setvar, CONF_API_SUB_ARGS_SPLIT, "setvar", " "},
     	{"lock", (void_fn_t) & conference_api_sub_lock, CONF_API_SUB_ARGS_SPLIT, "lock", ""},
     	{"unlock", (void_fn_t) & conference_api_sub_unlock, CONF_API_SUB_ARGS_SPLIT, "unlock", ""},
     	{"dial", (void_fn_t) & conference_api_sub_dial, CONF_API_SUB_ARGS_SPLIT, "dial", "/  "},
    @@ -2018,7 +2020,6 @@ switch_status_t conference_api_sub_vid_layout(conference_obj_t *conference, swit
     	}
     
     	if (!strncasecmp(argv[2], "group", 5)) {
    -		layout_group_t *lg = NULL;
     		int xx = 4;
     
     		if ((group_name = strchr(argv[2], ':'))) {
    @@ -2032,7 +2033,7 @@ switch_status_t conference_api_sub_vid_layout(conference_obj_t *conference, swit
     			stream->write_function(stream, "-ERR Group name not specified.\n");
     			return SWITCH_STATUS_SUCCESS;
     		} else {
    -			if (((lg = switch_core_hash_find(conference->layout_group_hash, group_name)))) {
    +			if (switch_core_hash_find(conference->layout_group_hash, group_name)) {
     				if (conference_utils_test_flag(conference, CFLAG_PERSONAL_CANVAS)) {
     					stream->write_function(stream, "-ERR Change personal canvas to layout group [%s]\n", group_name);
     					conference->video_layout_group = switch_core_strdup(conference->pool, group_name);
    @@ -3433,6 +3434,30 @@ switch_status_t conference_api_sub_relate(conference_obj_t *conference, switch_s
     	return SWITCH_STATUS_SUCCESS;
     }
     
    +switch_status_t conference_api_sub_getvar(conference_obj_t *conference, switch_stream_handle_t *stream, int argc, char **argv)
    +{
    +	const char *val = NULL;
    +	const char *var = argv[2];
    +
    +	if (var) val = conference_get_variable(conference, var);
    +
    +	stream_write(stream, "%s", switch_str_nil(val));
    +
    +	return SWITCH_STATUS_SUCCESS;
    +}
    +
    +switch_status_t conference_api_sub_setvar(conference_obj_t *conference, switch_stream_handle_t *stream, int argc, char **argv)
    +{
    +	const char *val = argv[3];
    +	const char *var = argv[2];
    +
    +	if (var) conference_set_variable(conference, var, val);
    +
    +	stream_write(stream, "+OK\n", VA_NONE);
    +
    +	return SWITCH_STATUS_SUCCESS;
    +}
    +
     switch_status_t conference_api_sub_lock(conference_obj_t *conference, switch_stream_handle_t *stream, int argc, char **argv)
     {
     	switch_event_t *event;
    diff --git a/src/mod/applications/mod_conference/conference_event.c b/src/mod/applications/mod_conference/conference_event.c
    index 23adb127a8c..a88a5feab9b 100644
    --- a/src/mod/applications/mod_conference/conference_event.c
    +++ b/src/mod/applications/mod_conference/conference_event.c
    @@ -305,7 +305,7 @@ void conference_event_mod_channel_handler(const char *event_channel, cJSON *json
     	} else if (!strcasecmp(action, "shift-click-layer")) {
     	} else if (!strcasecmp(action, "reset-layer") || !strcasecmp(action, "layer-pan-x") || !strcasecmp(action, "layer-pan-y")) {
     		cJSON *v;
    -		int layer_id = 0, canvas_id = 0, metric = 0, absolute = 0;
    +		int layer_id = 0, canvas_id = 0, metric = 0;
     		const char *i = "i", *xy = "";
     
     		if ((v = cJSON_GetObjectItem(data, "layerID"))) {
    @@ -321,7 +321,7 @@ void conference_event_mod_channel_handler(const char *event_channel, cJSON *json
     		}
     
     		if ((v = cJSON_GetObjectItem(data, "absolute"))) {
    -			if ((absolute = v->valueint)) {
    +			if (v->valueint) {
     				i = "";
     			}
     		}
    diff --git a/src/mod/applications/mod_conference/conference_file.c b/src/mod/applications/mod_conference/conference_file.c
    index 8f0dc1d8b7c..b42599ef6d8 100644
    --- a/src/mod/applications/mod_conference/conference_file.c
    +++ b/src/mod/applications/mod_conference/conference_file.c
    @@ -164,6 +164,11 @@ switch_status_t conference_file_play(conference_obj_t *conference, char *file, u
     
     	switch_assert(conference != NULL);
     
    +        if (!conference_utils_test_flag(conference, CFLAG_RUNNING)) {
    +                return SWITCH_STATUS_FALSE;
    +	}
    +
    +
     	if (zstr(file)) {
     		return SWITCH_STATUS_NOTFOUND;
     	}
    diff --git a/src/mod/applications/mod_conference/conference_loop.c b/src/mod/applications/mod_conference/conference_loop.c
    index 8c3804ef8cc..f6c2856892d 100644
    --- a/src/mod/applications/mod_conference/conference_loop.c
    +++ b/src/mod/applications/mod_conference/conference_loop.c
    @@ -1286,15 +1286,19 @@ void conference_loop_launch_input(conference_member_t *member, switch_memory_poo
     {
     	switch_threadattr_t *thd_attr = NULL;
     
    -	if (member == NULL || member->input_thread)
    -		return;
    -
    -	switch_threadattr_create(&thd_attr, pool);
    -	switch_threadattr_stacksize_set(thd_attr, SWITCH_THREAD_STACKSIZE);
    -	conference_utils_member_set_flag_locked(member, MFLAG_ITHREAD);
    -	if (switch_thread_create(&member->input_thread, thd_attr, conference_loop_input, member, pool) != SWITCH_STATUS_SUCCESS) {
    -		conference_utils_member_clear_flag_locked(member, MFLAG_ITHREAD);
    +	switch_mutex_lock(member->flag_mutex);
    +	
    +	if (member != NULL && !conference_utils_member_test_flag(member, MFLAG_ITHREAD)) {
    +		switch_threadattr_create(&thd_attr, pool);
    +		switch_threadattr_stacksize_set(thd_attr, SWITCH_THREAD_STACKSIZE);
    +		switch_threadattr_priority_set(thd_attr, SWITCH_PRI_REALTIME);
    +		conference_utils_member_set_flag_locked(member, MFLAG_ITHREAD);
    +		if (switch_thread_create(&member->input_thread, thd_attr, conference_loop_input, member, pool) != SWITCH_STATUS_SUCCESS) {
    +			conference_utils_member_clear_flag_locked(member, MFLAG_ITHREAD);
    +		}
     	}
    +
    +	switch_mutex_unlock(member->flag_mutex);
     }
     
     /* marshall frames from the conference (or file or tts output) to the call leg */
    @@ -1314,7 +1318,6 @@ void conference_loop_output(conference_member_t *member)
     	call_list_t *call_list, *cp;
     	switch_codec_implementation_t read_impl = { 0 }, real_read_impl = { 0 };
     	int sanity;
    -	switch_status_t st;
     
     	switch_core_session_get_read_impl(member->session, &read_impl);
     	switch_core_session_get_real_read_impl(member->session, &real_read_impl);
    @@ -1654,12 +1657,6 @@ void conference_loop_output(conference_member_t *member)
     
     	if (!member->loop_loop) {
     		conference_utils_member_clear_flag_locked(member, MFLAG_RUNNING);
    -
    -		/* Wait for the input thread to end */
    -		if (member->input_thread) {
    -			switch_thread_join(&st, member->input_thread);
    -			member->input_thread = NULL;
    -		}
     	}
     
     	switch_core_timer_destroy(&timer);
    diff --git a/src/mod/applications/mod_conference/conference_member.c b/src/mod/applications/mod_conference/conference_member.c
    index 6df96fca971..6112a2890c8 100644
    --- a/src/mod/applications/mod_conference/conference_member.c
    +++ b/src/mod/applications/mod_conference/conference_member.c
    @@ -592,7 +592,7 @@ void conference_member_add_file_data(conference_member_t *member, int16_t *data,
     				if (switch_core_speech_read_tts(member->fnode->sh, file_frame, &speech_len, &flags) == SWITCH_STATUS_SUCCESS) {
     					file_sample_len = file_data_len / 2 / member->conference->channels;
     				} else {
    -					file_sample_len = file_data_len = 0;
    +					file_sample_len = 0;
     				}
     			} else if (member->fnode->type == NODE_TYPE_FILE) {
     				switch_core_file_read(&member->fnode->fh, file_frame, &file_sample_len);
    diff --git a/src/mod/applications/mod_conference/mod_conference.c b/src/mod/applications/mod_conference/mod_conference.c
    index 71fd17532ca..619cd8c4a61 100644
    --- a/src/mod/applications/mod_conference/mod_conference.c
    +++ b/src/mod/applications/mod_conference/mod_conference.c
    @@ -490,7 +490,7 @@ void *SWITCH_THREAD_FUNC conference_thread_run(switch_thread_t *thread, void *ob
     
     
     					} else {
    -						file_sample_len = file_data_len = 0;
    +						file_sample_len = 0;
     					}
     				} else if (conference->fnode->type == NODE_TYPE_FILE) {
     					switch_core_file_read(&conference->fnode->fh, file_frame, &file_sample_len);
    @@ -1891,7 +1891,6 @@ switch_status_t conference_text_thread_callback(switch_core_session_t *session,
     /* Application interface function that is called from the dialplan to join the channel to a conference */
     SWITCH_STANDARD_APP(conference_function)
     {
    -	switch_codec_t *read_codec = NULL;
     	//uint32_t flags = 0;
     	conference_member_t member = { 0 };
     	conference_obj_t *conference = NULL;
    @@ -1931,7 +1930,7 @@ SWITCH_STANDARD_APP(conference_function)
     	}
     
     	/* Save the original read codec. */
    -	if (!(read_codec = switch_core_session_get_read_codec(session))) {
    +	if (!switch_core_session_get_read_codec(session)) {
     		switch_log_printf(SWITCH_CHANNEL_SESSION_LOG(session), SWITCH_LOG_ERROR, "Channel has no media!\n");
     		goto end;
     	}
    @@ -2479,9 +2478,13 @@ SWITCH_STANDARD_APP(conference_function)
     	do {
     		switch_media_flow_t audio_flow = switch_core_session_media_flow(session, SWITCH_MEDIA_TYPE_AUDIO);
     		
    -		if (switch_channel_test_flag(channel, CF_AUDIO) && (audio_flow == SWITCH_MEDIA_FLOW_SENDRECV || audio_flow == SWITCH_MEDIA_FLOW_RECVONLY)) {
    +		if (switch_channel_test_flag(channel, CF_AUDIO) && (audio_flow == SWITCH_MEDIA_FLOW_SENDRECV || audio_flow == SWITCH_MEDIA_FLOW_SENDONLY)) {
     			conference_loop_output(&member);
     		} else {
    +			if (!conference_utils_member_test_flag(&member, MFLAG_ITHREAD)) {
    +				conference_loop_launch_input(&member, switch_core_session_get_pool(member.session));
    +			}
    +
     			if (conference_utils_member_test_flag((&member), MFLAG_RUNNING) && switch_channel_ready(channel)) {
     				switch_yield(100000);
     				member.loop_loop = 1;
    @@ -2491,6 +2494,16 @@ SWITCH_STANDARD_APP(conference_function)
     		}
     	} while (member.loop_loop);
     
    +	conference_utils_member_clear_flag_locked(&member, MFLAG_RUNNING);
    +	
    +	/* Wait for the input thread to end */
    +	if (member.input_thread) {
    +		switch_status_t st;
    +
    +		switch_thread_join(&st, member.input_thread);
    +		member.input_thread = NULL;
    +	}
    +
     	switch_core_session_video_reset(session);
     	switch_channel_clear_flag_recursive(channel, CF_VIDEO_DECODED_READ);
     
    @@ -2656,24 +2669,44 @@ conference_obj_t *conference_find(char *name, char *domain)
     
     void conference_set_variable(conference_obj_t *conference, const char *var, const char *val)
     {
    +	switch_assert(var);
     	switch_mutex_lock(conference->flag_mutex);
    -	switch_event_add_header_string(conference->variables, SWITCH_STACK_BOTTOM, var, val);
    +
    +	if (!val) {
    +		switch_event_del_header(conference->variables, var);
    +	} else {
    +		switch_event_add_header_string(conference->variables, SWITCH_STACK_BOTTOM, var, val);
    +	}
     	switch_mutex_unlock(conference->flag_mutex);
     }
     
     const char *conference_get_variable(conference_obj_t *conference, const char *var)
     {
    -	const char *val;
    +	const char *val = NULL, *rval = NULL;
     
     	switch_mutex_lock(conference->flag_mutex);
    -	val = switch_event_get_header(conference->variables, var);
    +	if ((val = switch_event_get_header(conference->variables, var))) {
    +		rval = switch_core_strdup(conference->pool, val);
    +	}
     	switch_mutex_unlock(conference->flag_mutex);
     
    -	if (val) {
    -		return switch_core_strdup(conference->pool, val);
    -	}
    +	return rval;
    +}
     
    -	return NULL;
    +static void check_var_event(conference_obj_t *conference, switch_event_t *var_event)
    +{
    +	switch_event_header_t *hi = NULL;
    +
    +	for (hi = var_event->headers; hi; hi = hi->next) {
    +		char *vvar = hi->name;
    +		char *vval = hi->value;
    +		if (vvar && vval && !strncasecmp(vvar, "confvar_", 8)) {
    +			vvar += 8;
    +			if (vvar) {
    +				conference_set_variable(conference, vvar, vval);
    +			}
    +		}
    +	}
     }
     
     /* create a new conferene with a specific profile */
    @@ -2780,6 +2813,7 @@ conference_obj_t *conference_new(char *name, conference_xml_cfg_t cfg, switch_co
     	char *video_codec_config_profile_name = NULL;
     	int tmp;
     	int heartbeat_period_sec = 0;
    +	switch_event_t *var_event = NULL;
     
     	/* Validate the conference name */
     	if (zstr(name)) {
    @@ -3685,6 +3719,14 @@ conference_obj_t *conference_new(char *name, conference_xml_cfg_t cfg, switch_co
     	switch_mutex_init(&conference->member_mutex, SWITCH_MUTEX_NESTED, conference->pool);
     	switch_mutex_init(&conference->canvas_mutex, SWITCH_MUTEX_NESTED, conference->pool);
     
    +	switch_core_get_variables(&var_event);
    +	check_var_event(conference, var_event);
    +	switch_event_destroy(&var_event);
    +
    +	switch_channel_get_variables(channel, &var_event);
    +	check_var_event(conference, var_event);
    +	switch_event_destroy(&var_event);
    +
     	switch_mutex_lock(conference_globals.hash_mutex);
     	conference_utils_set_flag(conference, CFLAG_INHASH);
     	switch_core_hash_insert(conference_globals.conference_hash, conference->name, conference);
    diff --git a/src/mod/applications/mod_conference/mod_conference.h b/src/mod/applications/mod_conference/mod_conference.h
    index 2131df99c3b..3c286342648 100644
    --- a/src/mod/applications/mod_conference/mod_conference.h
    +++ b/src/mod/applications/mod_conference/mod_conference.h
    @@ -1110,6 +1110,7 @@ void *SWITCH_THREAD_FUNC conference_thread_run(switch_thread_t *thread, void *ob
     void *SWITCH_THREAD_FUNC conference_video_muxing_thread_run(switch_thread_t *thread, void *obj);
     void *SWITCH_THREAD_FUNC conference_video_super_muxing_thread_run(switch_thread_t *thread, void *obj);
     void conference_loop_output(conference_member_t *member);
    +void conference_loop_launch_input(conference_member_t *member, switch_memory_pool_t *pool);
     uint32_t conference_file_stop(conference_obj_t *conference, file_stop_t stop);
     switch_status_t conference_file_play(conference_obj_t *conference, char *file, uint32_t leadin, switch_channel_t *channel, uint8_t async);
     void conference_member_send_all_dtmf(conference_member_t *member, conference_obj_t *conference, const char *dtmf);
    @@ -1218,6 +1219,8 @@ switch_status_t conference_api_sub_hold(conference_member_t *member, switch_stre
     switch_status_t conference_api_sub_unhold(conference_member_t *member, switch_stream_handle_t *stream, void *data);
     switch_status_t conference_api_sub_pauserec(conference_obj_t *conference, switch_stream_handle_t *stream, int argc, char **argv);
     switch_status_t conference_api_sub_volume_out(conference_member_t *member, switch_stream_handle_t *stream, void *data);
    +switch_status_t conference_api_sub_getvar(conference_obj_t *conference, switch_stream_handle_t *stream, int argc, char **argv);
    +switch_status_t conference_api_sub_setvar(conference_obj_t *conference, switch_stream_handle_t *stream, int argc, char **argv);
     switch_status_t conference_api_sub_lock(conference_obj_t *conference, switch_stream_handle_t *stream, int argc, char **argv);
     switch_status_t conference_api_sub_unlock(conference_obj_t *conference, switch_stream_handle_t *stream, int argc, char **argv);
     switch_status_t conference_api_sub_relate(conference_obj_t *conference, switch_stream_handle_t *stream, int argc, char **argv);
    @@ -1311,8 +1314,8 @@ const char *conference_get_variable(conference_obj_t *conference, const char *va
     /* Entries in this list should be kept in sync with the enum above */
     extern api_command_t conference_api_sub_commands[];
     extern struct _mapping control_mappings[];
    -
    -
    +#define stream_write(__stream, __fmt, ...) if (__stream)__stream->write_function(__stream, __fmt, __VA_ARGS__)
    +#define VA_NONE "%s", ""
     #endif /* MOD_CONFERENCE_H */
     
     /* For Emacs:
    diff --git a/src/mod/applications/mod_directory/mod_directory.c b/src/mod/applications/mod_directory/mod_directory.c
    index 3046558c5d2..fc46e478da6 100644
    --- a/src/mod/applications/mod_directory/mod_directory.c
    +++ b/src/mod/applications/mod_directory/mod_directory.c
    @@ -953,7 +953,6 @@ switch_status_t navigate_entrys(switch_core_session_t *session, dir_profile_t *p
     SWITCH_STANDARD_APP(directory_function)
     {
     	switch_channel_t *channel = switch_core_session_get_channel(session);
    -	int argc = 0;
     	char *argv[6] = { 0 };
     	char *mydata = NULL;
     	const char *profile_name = NULL;
    @@ -975,7 +974,7 @@ SWITCH_STANDARD_APP(directory_function)
     	}
     
     	mydata = switch_core_session_strdup(session, data);
    -	if ((argc = switch_separate_string(mydata, ' ', argv, (sizeof(argv) / sizeof(argv[0])))) < 2) {
    +	if (switch_separate_string(mydata, ' ', argv, (sizeof(argv) / sizeof(argv[0]))) < 2) {
     		switch_log_printf(SWITCH_CHANNEL_LOG, SWITCH_LOG_ERROR, "Not enough args [%s]\n", data);
     		return;
     	}
    diff --git a/src/mod/applications/mod_distributor/mod_distributor.c b/src/mod/applications/mod_distributor/mod_distributor.c
    index a653514f898..47f97f9421f 100644
    --- a/src/mod/applications/mod_distributor/mod_distributor.c
    +++ b/src/mod/applications/mod_distributor/mod_distributor.c
    @@ -403,7 +403,7 @@ SWITCH_STANDARD_API(distributor_ctl_function)
     	if (argc > 0) {
     		if (!strcasecmp(argv[0], "reload")) {
     			if (load_config(SWITCH_TRUE) == SWITCH_STATUS_SUCCESS) {
    -				stream->write_function(stream, "+ok reloaded.\n");
    +				stream->write_function(stream, "+OK reloaded.\n");
     				err = NULL;
     			}
     		} else if (!strcasecmp(argv[0], "dump")) {
    diff --git a/src/mod/applications/mod_dptools/mod_dptools.c b/src/mod/applications/mod_dptools/mod_dptools.c
    index d755640c358..f38509016bc 100644
    --- a/src/mod/applications/mod_dptools/mod_dptools.c
    +++ b/src/mod/applications/mod_dptools/mod_dptools.c
    @@ -115,7 +115,6 @@ static switch_status_t digit_nomatch_action_callback(switch_ivr_dmachine_match_t
     	switch_core_session_t *session = (switch_core_session_t *) match->user_data;
     	switch_channel_t *channel;
     	switch_event_t *event;
    -	switch_status_t status;
     	switch_core_session_t *use_session = session;
     
     	if (switch_ivr_dmachine_get_target(match->dmachine) == DIGIT_TARGET_PEER) {
    @@ -135,7 +134,7 @@ static switch_status_t digit_nomatch_action_callback(switch_ivr_dmachine_match_t
     	if (switch_event_create_plain(&event, SWITCH_EVENT_CHANNEL_DATA) == SWITCH_STATUS_SUCCESS) {
     		switch_event_add_header_string(event, SWITCH_STACK_BOTTOM, "digits", match->match_digits);
     
    -		if ((status = switch_core_session_queue_event(use_session, &event)) != SWITCH_STATUS_SUCCESS) {
    +		if (switch_core_session_queue_event(use_session, &event) != SWITCH_STATUS_SUCCESS) {
     			switch_event_destroy(&event);
     			switch_log_printf(SWITCH_CHANNEL_SESSION_LOG(use_session), SWITCH_LOG_WARNING, "%s event queue failure.\n",
     							  switch_core_session_get_name(use_session));
    @@ -157,7 +156,6 @@ static switch_status_t digit_action_callback(switch_ivr_dmachine_match_t *match)
     {
     	struct action_binding *act = (struct action_binding *) match->user_data;
     	switch_event_t *event;
    -	switch_status_t status;
     	int exec = 0;
     	int api = 0;
     	char *string = NULL;
    @@ -218,7 +216,7 @@ static switch_status_t digit_action_callback(switch_ivr_dmachine_match_t *match)
     			switch_event_add_header_string(event, SWITCH_STACK_BOTTOM, "execute", exec == 1 ? "non-blocking" : "blocking");
     		}
     
    -		if ((status = switch_core_session_queue_event(use_session, &event)) != SWITCH_STATUS_SUCCESS) {
    +		if (switch_core_session_queue_event(use_session, &event) != SWITCH_STATUS_SUCCESS) {
     			switch_event_destroy(&event);
     			switch_log_printf(SWITCH_CHANNEL_SESSION_LOG(use_session), SWITCH_LOG_WARNING, "%s event queue failure.\n",
     							  switch_core_session_get_name(use_session));
    @@ -651,11 +649,10 @@ SWITCH_STANDARD_APP(keepalive_function)
     SWITCH_STANDARD_APP(exe_function)
     {
     	char *argv[4] = { 0 };
    -	int argc;
     	char *lbuf = NULL;
     
     	if (!zstr(data) && (lbuf = switch_core_session_strdup(session, data))
    -		&& (argc = switch_separate_string(lbuf, ' ', argv, (sizeof(argv) / sizeof(argv[0]))))) {
    +		&& switch_separate_string(lbuf, ' ', argv, (sizeof(argv) / sizeof(argv[0])))) {
     		switch_core_session_execute_exten(session, argv[0], argv[1], argv[2]);
     	} else {
     		switch_log_printf(SWITCH_CHANNEL_SESSION_LOG(session), SWITCH_LOG_ERROR, "Usage: %s\n", EXE_SYNTAX);
    @@ -695,11 +692,10 @@ SWITCH_STANDARD_APP(rename_function)
     SWITCH_STANDARD_APP(transfer_vars_function)
     {
     	char *argv[1] = { 0 };
    -	int argc;
     	char *lbuf = NULL;
     
     	if (!zstr(data) && (lbuf = switch_core_session_strdup(session, data))
    -		&& (argc = switch_separate_string(lbuf, ' ', argv, (sizeof(argv) / sizeof(argv[0])))) >= 1) {
    +		&& switch_separate_string(lbuf, ' ', argv, (sizeof(argv) / sizeof(argv[0]))) >= 1) {
     		switch_core_session_t *nsession = NULL;
     
     		switch_core_session_get_partner(session, &nsession);
    @@ -717,11 +713,10 @@ SWITCH_STANDARD_APP(transfer_vars_function)
     SWITCH_STANDARD_APP(soft_hold_function)
     {
     	char *argv[3] = { 0 };
    -	int argc;
     	char *lbuf = NULL;
     
     	if (!zstr(data) && (lbuf = switch_core_session_strdup(session, data))
    -		&& (argc = switch_separate_string(lbuf, ' ', argv, (sizeof(argv) / sizeof(argv[0])))) >= 1) {
    +		&& switch_separate_string(lbuf, ' ', argv, (sizeof(argv) / sizeof(argv[0]))) >= 1) {
     		switch_ivr_soft_hold(session, argv[0], argv[1], argv[2]);
     	} else {
     		switch_log_printf(SWITCH_CHANNEL_SESSION_LOG(session), SWITCH_LOG_ERROR, "Usage: %s\n", SOFT_HOLD_SYNTAX);
    @@ -774,11 +769,10 @@ SWITCH_STANDARD_APP(dtmf_unbind_function)
     SWITCH_STANDARD_APP(dtmf_bind_function)
     {
     	char *argv[4] = { 0 };
    -	int argc;
     	char *lbuf = NULL;
     
     	if (!zstr(data) && (lbuf = switch_core_session_strdup(session, data))
    -		&& (argc = switch_separate_string(lbuf, ' ', argv, (sizeof(argv) / sizeof(argv[0])))) == 4) {
    +		&& switch_separate_string(lbuf, ' ', argv, (sizeof(argv) / sizeof(argv[0]))) == 4) {
     		int kval = switch_dtmftoi(argv[0]);
     		switch_bind_flag_t bind_flags = 0;
     
    @@ -849,14 +843,13 @@ SWITCH_STANDARD_APP(dtmf_bind_function)
     #define INTERCEPT_SYNTAX "[-bleg] "
     SWITCH_STANDARD_APP(intercept_function)
     {
    -	int argc;
     	char *argv[4] = { 0 };
     	char *mydata;
     	char *uuid;
     	switch_bool_t bleg = SWITCH_FALSE;
     
     	if (!zstr(data) && (mydata = switch_core_session_strdup(session, data))) {
    -		if ((argc = switch_separate_string(mydata, ' ', argv, (sizeof(argv) / sizeof(argv[0])))) >= 1) {
    +		if (switch_separate_string(mydata, ' ', argv, (sizeof(argv) / sizeof(argv[0]))) >= 1) {
     			if (!strcasecmp(argv[0], "-bleg")) {
     				if (argv[1]) {
     					uuid = argv[1];
    @@ -1196,14 +1189,13 @@ SWITCH_STANDARD_APP(flush_dtmf_function)
     
     SWITCH_STANDARD_APP(transfer_function)
     {
    -	int argc;
     	char *argv[4] = { 0 };
     	char *mydata;
     	int bleg = 0, both = 0;
     
     
     	if (!zstr(data) && (mydata = switch_core_session_strdup(session, data))) {
    -		if ((argc = switch_separate_string(mydata, ' ', argv, (sizeof(argv) / sizeof(argv[0])))) >= 1) {
    +		if (switch_separate_string(mydata, ' ', argv, (sizeof(argv) / sizeof(argv[0]))) >= 1) {
     			bleg = !strcasecmp(argv[0], "-bleg");
     			both = !strcasecmp(argv[0], "-both");
     
    @@ -1233,12 +1225,11 @@ SWITCH_STANDARD_APP(transfer_function)
     
     SWITCH_STANDARD_APP(sched_transfer_function)
     {
    -	int argc;
     	char *argv[4] = { 0 };
     	char *mydata;
     
     	if (!zstr(data) && (mydata = switch_core_session_strdup(session, data))) {
    -		if ((argc = switch_separate_string(mydata, ' ', argv, (sizeof(argv) / sizeof(argv[0])))) >= 2) {
    +		if (switch_separate_string(mydata, ' ', argv, (sizeof(argv) / sizeof(argv[0]))) >= 2) {
     			time_t when;
     			uint32_t id;
     			char ids[80] = "";
    @@ -1260,12 +1251,11 @@ SWITCH_STANDARD_APP(sched_transfer_function)
     
     SWITCH_STANDARD_APP(sched_hangup_function)
     {
    -	int argc;
     	char *argv[5] = { 0 };
     	char *mydata;
     
     	if (!zstr(data) && (mydata = switch_core_session_strdup(session, data))) {
    -		if ((argc = switch_separate_string(mydata, ' ', argv, (sizeof(argv) / sizeof(argv[0])))) >= 1) {
    +		if (switch_separate_string(mydata, ' ', argv, (sizeof(argv) / sizeof(argv[0]))) >= 1) {
     			time_t when;
     			switch_call_cause_t cause = SWITCH_CAUSE_ALLOTTED_TIMEOUT;
     			switch_bool_t bleg = SWITCH_FALSE;
    @@ -1298,12 +1288,11 @@ SWITCH_STANDARD_APP(sched_hangup_function)
     
     SWITCH_STANDARD_APP(sched_broadcast_function)
     {
    -	int argc;
     	char *argv[6] = { 0 };
     	char *mydata;
     
     	if (!zstr(data) && (mydata = switch_core_session_strdup(session, data))) {
    -		if ((argc = switch_separate_string(mydata, ' ', argv, (sizeof(argv) / sizeof(argv[0])))) >= 2) {
    +		if (switch_separate_string(mydata, ' ', argv, (sizeof(argv) / sizeof(argv[0]))) >= 2) {
     			time_t when;
     			switch_media_flag_t flags = SMF_NONE;
     			uint32_t id;
    @@ -1459,7 +1448,6 @@ SWITCH_STANDARD_APP(wait_for_video_ready_function)
     SWITCH_STANDARD_APP(presence_function)
     {
     	char *argv[6] = { 0 };
    -	int argc;
     	char *mydata = NULL;
     	switch_channel_t *channel = switch_core_session_get_channel(session);
     
    @@ -1468,7 +1456,7 @@ SWITCH_STANDARD_APP(presence_function)
     		return;
     	}
     
    -	if ((argc = switch_separate_string(mydata, ' ', argv, sizeof(argv) / sizeof(argv[0]))) < 2) {
    +	if (switch_separate_string(mydata, ' ', argv, sizeof(argv) / sizeof(argv[0])) < 2) {
     		switch_log_printf(SWITCH_CHANNEL_SESSION_LOG(session), SWITCH_LOG_ERROR, "INVALID ARGS!\n");
     		return;
     	}
    @@ -1993,11 +1981,10 @@ SWITCH_STANDARD_APP(privacy_function)
     SWITCH_STANDARD_APP(strftime_function)
     {
     	char *argv[2] = { 0 };
    -	int argc;
     	char *lbuf;
     
     	if (!zstr(data) && (lbuf = switch_core_session_strdup(session, data))
    -		&& (argc = switch_separate_string(lbuf, '=', argv, (sizeof(argv) / sizeof(argv[0])))) > 1) {
    +		&& switch_separate_string(lbuf, '=', argv, (sizeof(argv) / sizeof(argv[0]))) > 1) {
     		switch_size_t retsize;
     		switch_time_exp_t tm;
     		char date[80] = "";
    @@ -2136,10 +2123,9 @@ SWITCH_STANDARD_API(presence_api_function)
     SWITCH_STANDARD_API(chat_api_function)
     {
     	char *lbuf = NULL, *argv[5];
    -	int argc = 0;
     
     	if (!zstr(cmd) && (lbuf = strdup(cmd))
    -		&& (argc = switch_separate_string(lbuf, '|', argv, (sizeof(argv) / sizeof(argv[0])))) >= 4) {
    +		&& switch_separate_string(lbuf, '|', argv, (sizeof(argv) / sizeof(argv[0]))) >= 4) {
     
     		if (switch_core_chat_send_args(argv[0], "global", argv[1], argv[2], "", argv[3], !zstr(argv[4]) ? argv[4] : NULL, "", SWITCH_TRUE) == SWITCH_STATUS_SUCCESS) {
     			stream->write_function(stream, "Sent");
    @@ -2271,7 +2257,6 @@ SWITCH_STANDARD_APP(bgsystem_session_function)
     SWITCH_STANDARD_APP(tone_detect_session_function)
     {
     	char *argv[7] = { 0 };
    -	int argc;
     	char *mydata = NULL;
     	time_t to = 0;
     	int hits = 0;
    @@ -2282,7 +2267,7 @@ SWITCH_STANDARD_APP(tone_detect_session_function)
     		return;
     	}
     
    -	if ((argc = switch_separate_string(mydata, ' ', argv, sizeof(argv) / sizeof(argv[0]))) < 2) {
    +	if (switch_separate_string(mydata, ' ', argv, sizeof(argv) / sizeof(argv[0])) < 2) {
     		switch_log_printf(SWITCH_CHANNEL_SESSION_LOG(session), SWITCH_LOG_ERROR, "INVALID ARGS!\n");
     		return;
     	}
    @@ -3227,14 +3212,13 @@ SWITCH_STANDARD_APP(stop_displace_session_function)
     SWITCH_STANDARD_APP(capture_function)
     {
     	char *argv[3] = { 0 };
    -	int argc;
     	switch_regex_t *re = NULL;
     	int ovector[30] = {0};
     	char *lbuf;
     	int proceed;
     
     	if (!zstr(data) && (lbuf = switch_core_session_strdup(session, data))
    -		&& (argc = switch_separate_string(lbuf, '|', argv, (sizeof(argv) / sizeof(argv[0])))) == 3) {
    +		&& switch_separate_string(lbuf, '|', argv, (sizeof(argv) / sizeof(argv[0]))) == 3) {
     		if ((proceed = switch_regex_perform(argv[1], argv[2], &re, ovector, sizeof(ovector) / sizeof(ovector[0])))) {
     			switch_capture_regex(re, proceed, argv[1], ovector, argv[0], switch_regex_set_var_callback, session);
     		}
    @@ -4588,11 +4572,10 @@ SWITCH_STANDARD_APP(wait_for_silence_function)
     {
     	char *argv[5] = { 0 };
     	uint32_t thresh, silence_hits, listen_hits, timeout_ms = 0;
    -	int argc;
     	char *lbuf = NULL;
     
     	if (!zstr(data) && (lbuf = switch_core_session_strdup(session, data))
    -		&& (argc = switch_separate_string(lbuf, ' ', argv, (sizeof(argv) / sizeof(argv[0])))) >= 4) {
    +		&& switch_separate_string(lbuf, ' ', argv, (sizeof(argv) / sizeof(argv[0]))) >= 4) {
     		thresh = atoi(argv[0]);
     		silence_hits = atoi(argv[1]);
     		listen_hits = atoi(argv[2]);
    @@ -4616,11 +4599,10 @@ SWITCH_STANDARD_APP(detect_audio_function)
     {
     	char *argv[4] = { 0 };
     	uint32_t thresh, audio_hits, timeout_ms = 0;
    -	int argc;
     	char *lbuf = NULL;
     
     	if (!zstr(data) && (lbuf = switch_core_session_strdup(session, data))
    -		&& (argc = switch_separate_string(lbuf, ' ', argv, (sizeof(argv) / sizeof(argv[0])))) >= 3) {
    +		&& switch_separate_string(lbuf, ' ', argv, (sizeof(argv) / sizeof(argv[0]))) >= 3) {
     		thresh = atoi(argv[0]);
     		audio_hits = atoi(argv[1]);
     		timeout_ms = atoi(argv[2]);
    @@ -4640,11 +4622,10 @@ SWITCH_STANDARD_APP(detect_silence_function)
     {
     	char *argv[4] = { 0 };
     	uint32_t thresh, silence_hits, timeout_ms = 0;
    -	int argc;
     	char *lbuf = NULL;
     
     	if (!zstr(data) && (lbuf = switch_core_session_strdup(session, data))
    -		&& (argc = switch_separate_string(lbuf, ' ', argv, (sizeof(argv) / sizeof(argv[0])))) >= 3) {
    +		&& switch_separate_string(lbuf, ' ', argv, (sizeof(argv) / sizeof(argv[0]))) >= 3) {
     		thresh = atoi(argv[0]);
     		silence_hits = atoi(argv[1]);
     		timeout_ms = atoi(argv[2]);
    @@ -5071,11 +5052,12 @@ static switch_status_t next_file(switch_file_handle_t *handle)
     		if (context->file && switch_test_flag(handle, SWITCH_FILE_DATA_SHORT)) { /* TODO handle other data type flags */
     			switch_size_t len;
     			uint16_t buf[SWITCH_RECOMMENDED_BUFFER_SIZE] = { 0 };
    -			switch_status_t stat;
     			switch_file_handle_t fh = { 0 };
     
    -			if ((stat = switch_core_file_open(&fh, context->file, handle->channels, handle->samplerate,
    -												SWITCH_FILE_FLAG_READ | SWITCH_FILE_DATA_SHORT, NULL)) == SWITCH_STATUS_SUCCESS) {
    +			if (switch_core_file_open(&fh, context->file, handle->channels, handle->samplerate,
    +												SWITCH_FILE_FLAG_READ | SWITCH_FILE_DATA_SHORT, NULL) == SWITCH_STATUS_SUCCESS) {
    +					switch_status_t stat;
    +
     					do {
     						len = SWITCH_RECOMMENDED_BUFFER_SIZE / handle->channels;
     						if ((stat = switch_core_file_read(&fh, buf, &len)) == SWITCH_STATUS_SUCCESS) {
    @@ -6427,6 +6409,11 @@ SWITCH_MODULE_LOAD_FUNCTION(mod_dptools_load)
     	switch_dialplan_interface_t *dp_interface;
     	switch_chat_interface_t *chat_interface;
     	switch_file_interface_t *file_interface;
    +	int use_system_commands = 1;
    +
    +	if (switch_true(switch_core_get_variable("disable_system_app_commands"))) {
    +		use_system_commands = 0;
    +	}
     
     	if (switch_event_reserve_subclass(FILE_STRING_CLOSE) != SWITCH_STATUS_SUCCESS) {
     		switch_log_printf(SWITCH_CHANNEL_LOG, SWITCH_LOG_ERROR, "Couldn't register subclass %s!\n", FILE_STRING_CLOSE);
    @@ -6704,10 +6691,12 @@ SWITCH_MODULE_LOAD_FUNCTION(mod_dptools_load)
     				   SAF_NONE);
     	SWITCH_ADD_APP(app_interface, "bridge", "Bridge Audio", "Bridge the audio between two sessions", audio_bridge_function, "",
     				   SAF_SUPPORT_NOMEDIA|SAF_SUPPORT_TEXT_ONLY);
    -	SWITCH_ADD_APP(app_interface, "system", "Execute a system command", "Execute a system command", system_session_function, "",
    -				   SAF_SUPPORT_NOMEDIA | SAF_ZOMBIE_EXEC);
    -	SWITCH_ADD_APP(app_interface, "bgsystem", "Execute a system command in the background", "Execute a background system command", bgsystem_session_function, "",
    -				   SAF_SUPPORT_NOMEDIA | SAF_ZOMBIE_EXEC);
    +	if (use_system_commands) {
    +		SWITCH_ADD_APP(app_interface, "system", "Execute a system command", "Execute a system command", system_session_function, "",
    +				SAF_SUPPORT_NOMEDIA | SAF_ZOMBIE_EXEC);
    +		SWITCH_ADD_APP(app_interface, "bgsystem", "Execute a system command in the background", "Execute a background system command", bgsystem_session_function, "",
    +				SAF_SUPPORT_NOMEDIA | SAF_ZOMBIE_EXEC);
    +	}
     	SWITCH_ADD_APP(app_interface, "say", "say", "say", say_function, SAY_SYNTAX, SAF_NONE);
     
     	SWITCH_ADD_APP(app_interface, "detect_audio", "detect_audio", "detect_audio", detect_audio_function, DETECT_AUDIO_SYNTAX,
    diff --git a/src/mod/applications/mod_enum/mod_enum.c b/src/mod/applications/mod_enum/mod_enum.c
    index de5804e1fd8..2908a1eb1e9 100644
    --- a/src/mod/applications/mod_enum/mod_enum.c
    +++ b/src/mod/applications/mod_enum/mod_enum.c
    @@ -303,7 +303,6 @@ static void parse_naptr(const ldns_rr *naptr, const char *number, enum_record_t
     	char *argv[11] = { 0 };
     	int i, argc;
     	char *pack[4] = { 0 };
    -	int packc;
     
     	char *p;
     	int order = 10;
    @@ -351,7 +350,7 @@ static void parse_naptr(const ldns_rr *naptr, const char *number, enum_record_t
     	}
     
     
    -	if ((packc = switch_split(packstr, '!', pack))) {
    +	if (switch_split(packstr, '!', pack)) {
     		regex = pack[1];
     		replace = pack[2];
     	} else {
    @@ -673,7 +672,6 @@ SWITCH_STANDARD_DIALPLAN(enum_dialplan_hunt)
     
     SWITCH_STANDARD_APP(enum_app_function)
     {
    -	int argc = 0;
     	char *argv[4] = { 0 };
     	char *mydata = NULL;
     	char *dest = NULL, *root = NULL;
    @@ -691,7 +689,7 @@ SWITCH_STANDARD_APP(enum_app_function)
     		return;
     	}
     
    -	if ((argc = switch_separate_string(mydata, ' ', argv, (sizeof(argv) / sizeof(argv[0]))))) {
    +	if (switch_separate_string(mydata, ' ', argv, (sizeof(argv) / sizeof(argv[0])))) {
     		dest = argv[0];
     		root = argv[1];
     		if (enum_lookup(root, dest, &results, channel, session) == SWITCH_STATUS_SUCCESS) {
    @@ -737,7 +735,6 @@ SWITCH_STANDARD_APP(enum_app_function)
     
     SWITCH_STANDARD_API(enum_api)
     {
    -	int argc = 0;
     	char *argv[4] = { 0 };
     	char *mydata = NULL;
     	char *dest = NULL, *root = NULL;
    @@ -758,7 +755,7 @@ SWITCH_STANDARD_API(enum_api)
     		abort();
     	}
     
    -	if ((argc = switch_separate_string(mydata, ' ', argv, (sizeof(argv) / sizeof(argv[0]))))) {
    +	if (switch_separate_string(mydata, ' ', argv, (sizeof(argv) / sizeof(argv[0])))) {
     		dest = argv[0];
     		root = argv[1];
     		switch_log_printf(SWITCH_CHANNEL_LOG, SWITCH_LOG_DEBUG, "Looking up %s@%s\n", dest, root);
    @@ -814,7 +811,6 @@ static void do_load(void)
     
     SWITCH_STANDARD_API(enum_function)
     {
    -	int argc = 0;
     	char *argv[4] = { 0 };
     	enum_record_t *results, *rp;
     	char *mydata = NULL;
    @@ -830,7 +826,7 @@ SWITCH_STANDARD_API(enum_function)
     		return SWITCH_STATUS_SUCCESS;
     	}
     
    -	if ((argc = switch_separate_string(mydata, ' ', argv, (sizeof(argv) / sizeof(argv[0]))))) {
    +	if (switch_separate_string(mydata, ' ', argv, (sizeof(argv) / sizeof(argv[0])))) {
     		dest = argv[0];
     		root = argv[1];
     		switch_assert(dest);
    diff --git a/src/mod/applications/mod_expr/exprilfs.h b/src/mod/applications/mod_expr/exprilfs.h
    index f89eadfadcd..e881b68d8c3 100644
    --- a/src/mod/applications/mod_expr/exprilfs.h
    +++ b/src/mod/applications/mod_expr/exprilfs.h
    @@ -563,10 +563,12 @@ case EXPR_NODEFUNC_RECTTOPOLA:
     		tmp = atan2(d2, d1);
     		EXPR_CHECK_ERR();
     
    -		if (tmp < 0.0)
    +		if (tmp < 0.0) {
     			*val = tmp = (2.0 * M_PI);
    -		else
    +			(void)tmp;
    +		} else {
     			*val = tmp;
    +		}
     	} else
     		return err;
     
    diff --git a/src/mod/applications/mod_fifo/mod_fifo.c b/src/mod/applications/mod_fifo/mod_fifo.c
    index 724d1dd24fb..304996981a0 100644
    --- a/src/mod/applications/mod_fifo/mod_fifo.c
    +++ b/src/mod/applications/mod_fifo/mod_fifo.c
    @@ -2353,7 +2353,6 @@ SWITCH_STANDARD_API(fifo_check_bridge_function)
     SWITCH_STANDARD_API(fifo_add_outbound_function)
     {
     	char *data = NULL, *argv[4] = { 0 };
    -	int argc;
     	uint32_t priority = 0;
     
     	if (zstr(cmd)) {
    @@ -2362,7 +2361,7 @@ SWITCH_STANDARD_API(fifo_add_outbound_function)
     
     	data = strdup(cmd);
     
    -	if ((argc = switch_separate_string(data, ' ', argv, (sizeof(argv) / sizeof(argv[0])))) < 2 || !argv[0]) {
    +	if (switch_separate_string(data, ' ', argv, (sizeof(argv) / sizeof(argv[0]))) < 2 || !argv[0]) {
     		goto fail;
     	}
     
    diff --git a/src/mod/applications/mod_hash/mod_hash.c b/src/mod/applications/mod_hash/mod_hash.c
    index 70bffd18e1d..5b987f7fa05 100644
    --- a/src/mod/applications/mod_hash/mod_hash.c
    +++ b/src/mod/applications/mod_hash/mod_hash.c
    @@ -435,7 +435,7 @@ SWITCH_STANDARD_APP(hash_function)
     		if (argc < 4) {
     			goto usage;
     		}
    -		if (!(value = switch_core_hash_find(globals.db_hash, hash_key))) {
    +		if (!switch_core_hash_find(globals.db_hash, hash_key)) {
     			switch_core_hash_insert_dup(globals.db_hash, hash_key, argv[3]);
     		}
     
    @@ -507,7 +507,7 @@ SWITCH_STANDARD_API(hash_api_function)
     			goto usage;
     		}
     		switch_thread_rwlock_wrlock(globals.db_hash_rwlock);
    -		if ((value = switch_core_hash_find(globals.db_hash, hash_key))) {
    +		if (switch_core_hash_find(globals.db_hash, hash_key)) {
     			stream->write_function(stream, "-ERR key already exists\n");
     		} else {
     			switch_core_hash_insert_dup(globals.db_hash, hash_key, argv[3]);
    diff --git a/src/mod/applications/mod_httapi/mod_httapi.c b/src/mod/applications/mod_httapi/mod_httapi.c
    index 0b89fd35a7e..4b32d87c6d6 100644
    --- a/src/mod/applications/mod_httapi/mod_httapi.c
    +++ b/src/mod/applications/mod_httapi/mod_httapi.c
    @@ -2378,7 +2378,6 @@ static char *load_cache_data(http_file_context_t *context, const char *url)
     	char digest[SWITCH_MD5_DIGEST_STRING_SIZE] = { 0 };
     	char meta_buffer[1024] = "";
     	int fd;
    -	switch_ssize_t bytes;
     
     	switch_md5_string(digest, (void *) url, strlen(url));
     
    @@ -2390,7 +2389,7 @@ static char *load_cache_data(http_file_context_t *context, const char *url)
     		ext = find_ext(url);
     	}
     
    -	if (ext && (p = strchr(ext, '?'))) {
    +	if (ext && strchr(ext, '?')) {
     		dext = strdup(ext);
     		if ((p = strchr(dext, '?'))) {
     			*p = '\0';
    @@ -2402,7 +2401,7 @@ static char *load_cache_data(http_file_context_t *context, const char *url)
     	context->meta_file = switch_core_sprintf(context->pool, "%s%s%s.meta", globals.cache_path, SWITCH_PATH_SEPARATOR, digest);
     
     	if (switch_file_exists(context->meta_file, context->pool) == SWITCH_STATUS_SUCCESS && ((fd = open(context->meta_file, O_RDONLY, 0)) > -1)) {
    -		if ((bytes = read(fd, meta_buffer, sizeof(meta_buffer))) > 0) {
    +		if (read(fd, meta_buffer, sizeof(meta_buffer)) > 0) {
     			char *p;
     
     			if ((p = strchr(meta_buffer, ':'))) {
    diff --git a/src/mod/applications/mod_http_cache/test/test_aws.c b/src/mod/applications/mod_http_cache/test/test_aws.c
    index bc857af0678..d1844f91607 100644
    --- a/src/mod/applications/mod_http_cache/test/test_aws.c
    +++ b/src/mod/applications/mod_http_cache/test/test_aws.c
    @@ -184,9 +184,7 @@ FST_TEST_END()
     
     FST_TEST_BEGIN(get_time)
     {
    -	char time_stamp[TIME_STAMP_LENGTH];
     	char date_stamp[DATE_STAMP_LENGTH];
    -	char time_stamp_test[TIME_STAMP_LENGTH];
     	char date_stamp_test[DATE_STAMP_LENGTH];
     
     	// Get date and time for test case
    @@ -197,16 +195,13 @@ FST_TEST_BEGIN(get_time)
     
     	// Get date and time to test
     	get_time("%Y%m%d", date_stamp, DATE_STAMP_LENGTH);
    -	get_time("%Y%m%dT%H%M%SZ", time_stamp, TIME_STAMP_LENGTH);
     
     	// https://fresh2refresh.com/c-programming/c-time-related-functions/
     	// https://stackoverflow.com/questions/5141960/get-the-current-time-in-c/5142028
     	// https://linux.die.net/man/3/ctime
     	// https://stackoverflow.com/questions/153890/printing-leading-0s-in-c
     	switch_snprintf(date_stamp_test, DATE_STAMP_LENGTH, "%d%02d%02d", timeinfo->tm_year + 1900, timeinfo->tm_mon + 1, timeinfo->tm_mday);
    -	switch_snprintf(time_stamp_test, TIME_STAMP_LENGTH, "%d%02d%02dT%02d%02d%02dZ", timeinfo->tm_year + 1900, timeinfo->tm_mon + 1, timeinfo->tm_mday, timeinfo->tm_hour, timeinfo->tm_min, timeinfo->tm_sec);
     
    -	fst_check_string_equals(time_stamp_test, time_stamp);
     	fst_check_string_equals(date_stamp_test, date_stamp);
     }
     FST_TEST_END()
    diff --git a/src/mod/applications/mod_oreka/mod_oreka.c b/src/mod/applications/mod_oreka/mod_oreka.c
    index f3fe6763867..560c34f6c6a 100644
    --- a/src/mod/applications/mod_oreka/mod_oreka.c
    +++ b/src/mod/applications/mod_oreka/mod_oreka.c
    @@ -583,10 +583,9 @@ SWITCH_STANDARD_APP(oreka_start_function)
     	oreka_session_t *oreka = NULL;
     	switch_media_bug_t *bug = NULL;
     	char *argv[6];
    -	int argc;
    -    int flags = 0;
    +	int flags = 0;
     	char *lbuf = NULL;
    -    const char *var;
    +	const char *var;
     
     	if ((oreka = (oreka_session_t *) switch_channel_get_private(channel, OREKA_PRIVATE))) {
     		if (!zstr(data) && !strcasecmp(data, "stop")) {
    @@ -606,14 +605,14 @@ SWITCH_STANDARD_APP(oreka_start_function)
     	switch_assert(oreka);
     	memset(oreka, 0, sizeof(*oreka));
     
    -    oreka->mux_streams = globals.mux_streams;
    +	oreka->mux_streams = globals.mux_streams;
     
    -    if ((var = switch_channel_get_variable(channel, "oreka_mux_streams"))) {
    -        oreka->mux_streams = switch_true(var);
    -    }
    +	if ((var = switch_channel_get_variable(channel, "oreka_mux_streams"))) {
    +		oreka->mux_streams = switch_true(var);
    +	}
     
     	if (data && (lbuf = switch_core_session_strdup(session, data))
    -		&& (argc = switch_separate_string(lbuf, ' ', argv, (sizeof(argv) / sizeof(argv[0]))))) {
    +		&& switch_separate_string(lbuf, ' ', argv, (sizeof(argv) / sizeof(argv[0])))) {
     #if 0
     		if (!strncasecmp(argv[x], "server", sizeof("server"))) {
     			/* parse server=192.168.1.144 string */
    @@ -623,11 +622,11 @@ SWITCH_STANDARD_APP(oreka_start_function)
     
     	oreka->session = session;
     
    -    if (oreka->mux_streams) {
    -        flags = SMBF_READ_STREAM | SMBF_WRITE_STREAM | SMBF_READ_PING | SMBF_ANSWER_REQ;
    -    } else {
    -        flags = SMBF_READ_REPLACE | SMBF_WRITE_REPLACE | SMBF_ANSWER_REQ;
    -    }
    +	if (oreka->mux_streams) {
    +		flags = SMBF_READ_STREAM | SMBF_WRITE_STREAM | SMBF_READ_PING | SMBF_ANSWER_REQ;
    +	} else {
    +		flags = SMBF_READ_REPLACE | SMBF_WRITE_REPLACE | SMBF_ANSWER_REQ;
    +	}
     
     	status = switch_core_media_bug_add(session, OREKA_BUG_NAME_READ, NULL, oreka_audio_callback, oreka, 0, flags, &bug);
     
    diff --git a/src/mod/applications/mod_redis/credis.c b/src/mod/applications/mod_redis/credis.c
    index 58e57ce1cde..040ab3ae831 100644
    --- a/src/mod/applications/mod_redis/credis.c
    +++ b/src/mod/applications/mod_redis/credis.c
    @@ -367,7 +367,7 @@ static int cr_readln(REDIS rhnd, int start, char **line, int *idx)
     
     static int cr_receivemultibulk(REDIS rhnd, char *line)
     {
    -  int bnum, blen, i, rc=0, idx=0;
    +  int bnum, blen, i, idx=0;
     
       bnum = atoi(line);
     
    @@ -381,7 +381,7 @@ static int cr_receivemultibulk(REDIS rhnd, char *line)
           return CREDIS_ERR_NOMEM;
       }
     
    -  for (i = 0; bnum > 0 && (rc = cr_readln(rhnd, 0, &line, NULL)) > 0; i++, bnum--) {
    +  for (i = 0; bnum > 0 && cr_readln(rhnd, 0, &line, NULL) > 0; i++, bnum--) {
         if (*(line++) != CR_BULK)
           return CREDIS_ERR_PROTOCOL;
     
    @@ -389,7 +389,7 @@ static int cr_receivemultibulk(REDIS rhnd, char *line)
         if (blen == -1)
           rhnd->reply.multibulk.idxs[i] = -1;
         else {
    -      if ((rc = cr_readln(rhnd, blen, &line, &idx)) != blen)
    +      if (cr_readln(rhnd, blen, &line, &idx) != blen)
             return CREDIS_ERR_PROTOCOL;
     
           rhnd->reply.multibulk.idxs[i] = idx;
    diff --git a/src/mod/applications/mod_rss/mod_rss.c b/src/mod/applications/mod_rss/mod_rss.c
    index 5f23024da2c..16cd35412b8 100644
    --- a/src/mod/applications/mod_rss/mod_rss.c
    +++ b/src/mod/applications/mod_rss/mod_rss.c
    @@ -305,7 +305,7 @@ SWITCH_STANDARD_APP(rss_function)
     		char cmd[3];
     	  main_menu:
     		filename = NULL;
    -		len = idx = 0;
    +		len = 0;
     		*cmd = '\0';
     		title_txt = description_txt = rights_txt = "";
     
    diff --git a/src/mod/applications/mod_signalwire/mod_signalwire.c b/src/mod/applications/mod_signalwire/mod_signalwire.c
    index 466adfa7459..5b0be47a91e 100644
    --- a/src/mod/applications/mod_signalwire/mod_signalwire.c
    +++ b/src/mod/applications/mod_signalwire/mod_signalwire.c
    @@ -464,7 +464,6 @@ static ks_status_t mod_signalwire_adoption_post(void)
     #define SIGNALWIRE_SYNTAX "token | token-reset | adoption | adopted | reload | update | debug  | kslog "
     SWITCH_STANDARD_API(mod_signalwire_api_function)
     {
    -	int argc = 0;
     	char *argv[2] = { 0 };
     	char *buf = NULL;
     
    @@ -474,7 +473,7 @@ SWITCH_STANDARD_API(mod_signalwire_api_function)
     		return SWITCH_STATUS_SUCCESS;
     	}
     
    -    if ((argc = switch_separate_string(buf, ' ', argv, (sizeof(argv) / sizeof(argv[0]))))) {
    +    if (switch_separate_string(buf, ' ', argv, (sizeof(argv) / sizeof(argv[0])))) {
     		if (!strcmp(argv[0], "token")) {
     			if (globals.adoption_token[0]) {
     				stream->write_function(stream,
    diff --git a/src/mod/applications/mod_snom/mod_snom.c b/src/mod/applications/mod_snom/mod_snom.c
    index 2f706c25561..b3cf2b478e9 100644
    --- a/src/mod/applications/mod_snom/mod_snom.c
    +++ b/src/mod/applications/mod_snom/mod_snom.c
    @@ -149,10 +149,9 @@ SWITCH_STANDARD_API(snom_command_api_function)
     		char *ret = NULL;
     		switch_cache_db_handle_t *db = NULL;
     		switch_stream_handle_t apistream = { 0 };
    -		switch_status_t status;
     
     		SWITCH_STANDARD_STREAM(apistream);
    -		if ((status = switch_api_execute("sofia_contact", argv[0], NULL, &apistream)) != SWITCH_STATUS_SUCCESS) {
    +		if (switch_api_execute("sofia_contact", argv[0], NULL, &apistream) != SWITCH_STATUS_SUCCESS) {
     			stream->write_function(stream, "-ERR error executing sofia_contact\n");
     			goto end;
     		}
    diff --git a/src/mod/applications/mod_soundtouch/mod_soundtouch.cpp b/src/mod/applications/mod_soundtouch/mod_soundtouch.cpp
    index fc2843440b4..05461bc453b 100644
    --- a/src/mod/applications/mod_soundtouch/mod_soundtouch.cpp
    +++ b/src/mod/applications/mod_soundtouch/mod_soundtouch.cpp
    @@ -246,7 +246,6 @@ static switch_bool_t soundtouch_callback(switch_media_bug_t *bug, void *user_dat
     SWITCH_STANDARD_APP(soundtouch_start_function)
     {
     	switch_media_bug_t *bug;
    -	switch_status_t status;
     	switch_channel_t *channel = switch_core_session_get_channel(session);
     	struct soundtouch_helper *sth;
     	char *argv[6];
    @@ -311,14 +310,13 @@ SWITCH_STANDARD_APP(soundtouch_start_function)
     
     	sth->session = session;
     
    -	if ((status = switch_core_media_bug_add(session, "soundtouch", NULL, soundtouch_callback, sth, 0,
    -											sth->send_not_recv ? SMBF_WRITE_REPLACE : SMBF_READ_REPLACE, &bug)) != SWITCH_STATUS_SUCCESS) {
    +	if (switch_core_media_bug_add(session, "soundtouch", NULL, soundtouch_callback, sth, 0,
    +											sth->send_not_recv ? SMBF_WRITE_REPLACE : SMBF_READ_REPLACE, &bug) != SWITCH_STATUS_SUCCESS) {
     		switch_log_printf(SWITCH_CHANNEL_SESSION_LOG(session), SWITCH_LOG_ERROR, "Failure!\n");
     		return;
     	}
     
     	switch_channel_set_private(channel, "_soundtouch_", bug);
    -
     }
     
     /* API Interface Function */
    @@ -327,12 +325,11 @@ SWITCH_STANDARD_API(soundtouch_api_function)
     {
     	switch_core_session_t *rsession = NULL;
     	switch_channel_t *channel = NULL;
    -        switch_media_bug_t *bug;
    -        switch_status_t status;
    -        struct soundtouch_helper *sth;
    +	switch_media_bug_t *bug;
    +	struct soundtouch_helper *sth;
     	char *mycmd = NULL;
    -        int argc = 0;
    -        char *argv[10] = { 0 };
    +	int argc = 0;
    +	char *argv[10] = { 0 };
     	char *uuid = NULL;
     	char *action = NULL;
     	int x, n;
    @@ -420,8 +417,8 @@ SWITCH_STANDARD_API(soundtouch_api_function)
     
     	sth->session = rsession;
     
    -	if ((status = switch_core_media_bug_add(rsession, "soundtouch", NULL, soundtouch_callback, sth, 0,
    -											sth->send_not_recv ? SMBF_WRITE_REPLACE : SMBF_READ_REPLACE, &bug)) != SWITCH_STATUS_SUCCESS) {
    +	if (switch_core_media_bug_add(rsession, "soundtouch", NULL, soundtouch_callback, sth, 0,
    +											sth->send_not_recv ? SMBF_WRITE_REPLACE : SMBF_READ_REPLACE, &bug) != SWITCH_STATUS_SUCCESS) {
     		stream->write_function(stream, "-ERR Failure!\n");
     		goto done;
     	} else {
    diff --git a/src/mod/applications/mod_spandsp/mod_spandsp_fax.c b/src/mod/applications/mod_spandsp/mod_spandsp_fax.c
    index 2af4babf085..8c8d0103c44 100644
    --- a/src/mod/applications/mod_spandsp/mod_spandsp_fax.c
    +++ b/src/mod/applications/mod_spandsp/mod_spandsp_fax.c
    @@ -1266,32 +1266,29 @@ static t38_mode_t request_t38(pvt_t *pvt)
     		insist = spandsp_globals.enable_t38_insist;
     	}
     
    -	if ((t38_options = switch_channel_get_private(channel, "t38_options"))) {
    +	if (switch_channel_get_private(channel, "t38_options")) {
     		switch_log_printf(SWITCH_CHANNEL_SESSION_LOG(session), SWITCH_LOG_WARNING,
     				"%s already has T.38 data\n", switch_channel_get_name(channel));
     		enabled = 0;
     	}
     
    -
    -
     	if (enabled) {
    +		if (!(t38_options = switch_channel_get_private(channel, "_preconfigured_t38_options"))) {
    +			t38_options = switch_core_session_alloc(session, sizeof(*t38_options));
    +			t38_options->T38MaxBitRate = (pvt->disable_v17) ? 9600 : 14400;
    +			t38_options->T38FaxVersion = 0;
    +			t38_options->T38FaxFillBitRemoval = 1;
    +			t38_options->T38FaxTranscodingMMR = 0;
    +			t38_options->T38FaxTranscodingJBIG = 0;
    +			t38_options->T38FaxRateManagement = "transferredTCF";
    +			t38_options->T38FaxMaxBuffer = 2000;
    +			t38_options->T38FaxMaxDatagram = LOCAL_FAX_MAX_DATAGRAM;
    +			t38_options->T38FaxUdpEC = "t38UDPRedundancy";
    +			t38_options->T38VendorInfo = "0 0 0";
    +		}
     
    -        if (!(t38_options = switch_channel_get_private(channel, "_preconfigured_t38_options"))) {
    -            t38_options = switch_core_session_alloc(session, sizeof(*t38_options));
    -            t38_options->T38MaxBitRate = (pvt->disable_v17) ? 9600 : 14400;
    -            t38_options->T38FaxVersion = 0;
    -            t38_options->T38FaxFillBitRemoval = 1;
    -            t38_options->T38FaxTranscodingMMR = 0;
    -            t38_options->T38FaxTranscodingJBIG = 0;
    -            t38_options->T38FaxRateManagement = "transferredTCF";
    -            t38_options->T38FaxMaxBuffer = 2000;
    -            t38_options->T38FaxMaxDatagram = LOCAL_FAX_MAX_DATAGRAM;
    -            t38_options->T38FaxUdpEC = "t38UDPRedundancy";
    -            t38_options->T38VendorInfo = "0 0 0";
    -        }
    -
    -	switch_channel_set_private(channel, "t38_options", t38_options);
    -        switch_channel_set_private(channel, "_preconfigured_t38_options", NULL);
    +		switch_channel_set_private(channel, "t38_options", t38_options);
    +		switch_channel_set_private(channel, "_preconfigured_t38_options", NULL);
     
     		pvt->t38_mode = T38_MODE_REQUESTED;
     		switch_channel_set_app_flag_key("T38", channel, CF_APP_T38_REQ);
    diff --git a/src/mod/applications/mod_spandsp/udptl.c b/src/mod/applications/mod_spandsp/udptl.c
    index aa82f953d01..35b9f29f77a 100644
    --- a/src/mod/applications/mod_spandsp/udptl.c
    +++ b/src/mod/applications/mod_spandsp/udptl.c
    @@ -188,7 +188,7 @@ int udptl_rx_packet(udptl_state_t *s, const uint8_t buf[], int len)
     	seq_no = (buf[0] << 8) | buf[1];
     	ptr += 2;
     	/* Break out the primary packet */
    -	if ((stat = decode_open_type(buf, len, &ptr, &msg, &msg_len)) != 0)
    +	if (decode_open_type(buf, len, &ptr, &msg, &msg_len) != 0)
     		return -1;
     	/* Decode error_recovery */
     	if (ptr + 1 > len)
    @@ -290,7 +290,7 @@ int udptl_rx_packet(udptl_state_t *s, const uint8_t buf[], int len)
     
     		/* Decode the elements */
     		for (i = 0; i < entries; i++) {
    -			if ((stat = decode_open_type(buf, len, &ptr, &data, &s->rx[x].fec_len[i])) != 0)
    +			if (decode_open_type(buf, len, &ptr, &data, &s->rx[x].fec_len[i]) != 0)
     				return -1;
     			if (s->rx[x].fec_len[i] > LOCAL_FAX_MAX_DATAGRAM)
     				return -1;
    diff --git a/src/mod/applications/mod_spy/mod_spy.c b/src/mod/applications/mod_spy/mod_spy.c
    index 0200ee9bdf2..ced290f0d78 100644
    --- a/src/mod/applications/mod_spy/mod_spy.c
    +++ b/src/mod/applications/mod_spy/mod_spy.c
    @@ -286,12 +286,11 @@ static void event_handler(switch_event_t *event)
     #define USERSPY_SYNTAX " [uuid]"
     SWITCH_STANDARD_APP(userspy_function)
     {
    -	int argc = 0;
     	char *argv[2] = { 0 };
     	char *params = NULL;
     
     	if (!zstr(data) && (params = switch_core_session_strdup(session, data))) {
    -		if ((argc = switch_separate_string(params, ' ', argv, (sizeof(argv) / sizeof(argv[0])))) >= 1) {
    +		if (switch_separate_string(params, ' ', argv, (sizeof(argv) / sizeof(argv[0]))) >= 1) {
     			switch_channel_t *channel = switch_core_session_get_channel(session);
     			char *uuid = switch_core_session_get_uuid(session);
     			switch_status_t status;
    diff --git a/src/mod/applications/mod_stress/mod_stress.cpp b/src/mod/applications/mod_stress/mod_stress.cpp
    index 791ad06f893..66da2d26dc6 100644
    --- a/src/mod/applications/mod_stress/mod_stress.cpp
    +++ b/src/mod/applications/mod_stress/mod_stress.cpp
    @@ -197,11 +197,9 @@ static switch_bool_t stress_callback(switch_media_bug_t *bug, void *user_data, s
     SWITCH_STANDARD_APP(stress_start_function)
     {
     	switch_media_bug_t *bug;
    -	switch_status_t status;
     	switch_channel_t *channel = switch_core_session_get_channel(session);
     	struct stress_helper *sth;
     	char *argv[6];
    -	int argc;
     	char *lbuf = NULL;
     	int x = 0;
     
    @@ -220,7 +218,7 @@ SWITCH_STANDARD_APP(stress_start_function)
     
     
     	if (data && (lbuf = switch_core_session_strdup(session, data))
    -		&& (argc = switch_separate_string(lbuf, ' ', argv, (sizeof(argv) / sizeof(argv[0]))))) {
    +		&& switch_separate_string(lbuf, ' ', argv, (sizeof(argv) / sizeof(argv[0])))) {
             if (!strncasecmp(argv[x], "read", 4)) {
                 sth->read = 1;
             }
    @@ -228,14 +226,12 @@ SWITCH_STANDARD_APP(stress_start_function)
     
     	sth->session = session;
     
    -	if ((status = switch_core_media_bug_add(session, "stress", NULL, stress_callback, sth, 0,
    -											sth->read ? SMBF_READ_REPLACE : SMBF_WRITE_REPLACE, &bug)) != SWITCH_STATUS_SUCCESS) {
    +	if (switch_core_media_bug_add(session, "stress", NULL, stress_callback, sth, 0, sth->read ? SMBF_READ_REPLACE : SMBF_WRITE_REPLACE, &bug) != SWITCH_STATUS_SUCCESS) {
     		switch_log_printf(SWITCH_CHANNEL_SESSION_LOG(session), SWITCH_LOG_ERROR, "Failure!\n");
     		return;
     	}
     
     	switch_channel_set_private(channel, "_stress_", bug);
    -
     }
     
     SWITCH_MODULE_LOAD_FUNCTION(mod_stress_load)
    diff --git a/src/mod/applications/mod_test/test/test_tts.c b/src/mod/applications/mod_test/test/test_tts.c
    index f1e4205f687..83369212d16 100644
    --- a/src/mod/applications/mod_test/test/test_tts.c
    +++ b/src/mod/applications/mod_test/test/test_tts.c
    @@ -146,7 +146,7 @@ FST_TEST_BEGIN(tts_time)
         } while (status == SWITCH_STATUS_SUCCESS);
     
         fst_check(read = sample_rate / interval * 3); // samples of 3 second
    -    fst_check_duration(3000, 500);
    +    fst_check_duration(3000, 1000);
         switch_core_speech_close(&sh, &flags);
     }
     FST_TEST_END()
    diff --git a/src/mod/applications/mod_translate/mod_translate.c b/src/mod/applications/mod_translate/mod_translate.c
    index 3e7402c30d7..efbcd3f14ba 100644
    --- a/src/mod/applications/mod_translate/mod_translate.c
    +++ b/src/mod/applications/mod_translate/mod_translate.c
    @@ -333,7 +333,6 @@ SWITCH_STANDARD_API(translate_function)
     	char *translated = NULL;
     	switch_event_t *event = NULL;
     	char *argv[32] = { 0 };
    -	int argc = 0;
     
     	if (zstr(cmd)) {
     		stream->write_function(stream, "USAGE: %s\n", TRANSLATE_SYNTAX);
    @@ -344,7 +343,7 @@ SWITCH_STANDARD_API(translate_function)
     
     	mydata = strdup(cmd);
     
    -	if ((argc = switch_separate_string(mydata, ' ', argv, (sizeof(argv) / sizeof(argv[0]))))) {
    +	if (switch_separate_string(mydata, ' ', argv, (sizeof(argv) / sizeof(argv[0])))) {
     		if (!session) {
     			char *areacode = switch_core_get_variable("default_areacode");
     			switch_core_new_memory_pool(&pool);
    diff --git a/src/mod/applications/mod_video_filter/mod_video_filter.c b/src/mod/applications/mod_video_filter/mod_video_filter.c
    index 2f4d5d5bf79..7cf1f1dd0f6 100644
    --- a/src/mod/applications/mod_video_filter/mod_video_filter.c
    +++ b/src/mod/applications/mod_video_filter/mod_video_filter.c
    @@ -687,7 +687,6 @@ static switch_bool_t chromakey_bug_callback(switch_media_bug_t *bug, void *user_
     SWITCH_STANDARD_APP(chromakey_start_function)
     {
     	switch_media_bug_t *bug;
    -	switch_status_t status;
     	switch_channel_t *channel = switch_core_session_get_channel(session);
     	char *argv[4] = { 0 };
     	int argc;
    @@ -721,7 +720,7 @@ SWITCH_STANDARD_APP(chromakey_start_function)
     
     	switch_thread_rwlock_rdlock(MODULE_INTERFACE->rwlock);
     
    -	if ((status = switch_core_media_bug_add(session, function, NULL, chromakey_bug_callback, context, 0, flags, &bug)) != SWITCH_STATUS_SUCCESS) {
    +	if (switch_core_media_bug_add(session, function, NULL, chromakey_bug_callback, context, 0, flags, &bug) != SWITCH_STATUS_SUCCESS) {
     		switch_log_printf(SWITCH_CHANNEL_SESSION_LOG(session), SWITCH_LOG_ERROR, "Failure!\n");
     		switch_thread_rwlock_unlock(MODULE_INTERFACE->rwlock);
     		return;
    @@ -737,7 +736,6 @@ SWITCH_STANDARD_API(chromakey_api_function)
     	switch_core_session_t *rsession = NULL;
     	switch_channel_t *channel = NULL;
     	switch_media_bug_t *bug;
    -	switch_status_t status;
     	chromakey_context_t *context;
     	char *mycmd = NULL;
     	int argc = 0;
    @@ -800,8 +798,8 @@ SWITCH_STANDARD_API(chromakey_api_function)
     
     	switch_thread_rwlock_rdlock(MODULE_INTERFACE->rwlock);
     
    -	if ((status = switch_core_media_bug_add(rsession, function, NULL,
    -											chromakey_bug_callback, context, 0, flags, &bug)) != SWITCH_STATUS_SUCCESS) {
    +	if (switch_core_media_bug_add(rsession, function, NULL,
    +											chromakey_bug_callback, context, 0, flags, &bug) != SWITCH_STATUS_SUCCESS) {
     		stream->write_function(stream, "-ERR Failure!\n");
     		switch_thread_rwlock_unlock(MODULE_INTERFACE->rwlock);
     		goto done;
    @@ -970,7 +968,6 @@ static switch_bool_t video_replace_bug_callback(switch_media_bug_t *bug, void *u
     SWITCH_STANDARD_APP(video_replace_start_function)
     {
     	switch_media_bug_t *bug;
    -	switch_status_t status;
     	switch_channel_t *channel = switch_core_session_get_channel(session);
     	switch_media_bug_flag_t flags = 0;
     	const char *function = "video_replace";
    @@ -1034,7 +1031,7 @@ SWITCH_STANDARD_APP(video_replace_start_function)
     		return;
     	}
     
    -	if ((status = switch_core_media_bug_add(session, function, NULL, video_replace_bug_callback, context, 0, flags, &bug)) != SWITCH_STATUS_SUCCESS) {
    +	if (switch_core_media_bug_add(session, function, NULL, video_replace_bug_callback, context, 0, flags, &bug) != SWITCH_STATUS_SUCCESS) {
     		switch_log_printf(SWITCH_CHANNEL_SESSION_LOG(session), SWITCH_LOG_ERROR, "Failure!\n");
     		switch_thread_rwlock_unlock(MODULE_INTERFACE->rwlock);
     		return;
    @@ -1050,7 +1047,6 @@ SWITCH_STANDARD_API(video_replace_api_function)
     	switch_core_session_t *rsession = NULL;
     	switch_channel_t *channel = NULL;
     	switch_media_bug_t *bug;
    -	switch_status_t status;
     	video_replace_context_t *context;
     	char *mycmd = NULL;
     	int argc = 0;
    @@ -1150,8 +1146,8 @@ SWITCH_STANDARD_API(video_replace_api_function)
     		goto done;
     	}
     
    -	if ((status = switch_core_media_bug_add(rsession, function, NULL,
    -											video_replace_bug_callback, context, 0, flags, &bug)) != SWITCH_STATUS_SUCCESS) {
    +	if (switch_core_media_bug_add(rsession, function, NULL,
    +											video_replace_bug_callback, context, 0, flags, &bug) != SWITCH_STATUS_SUCCESS) {
     		stream->write_function(stream, "-ERR Failure!\n");
     		switch_thread_rwlock_unlock(MODULE_INTERFACE->rwlock);
     		goto done;
    diff --git a/src/mod/applications/mod_vmd/mod_vmd.c b/src/mod/applications/mod_vmd/mod_vmd.c
    index 71a2dc3bc97..a4a09174042 100644
    --- a/src/mod/applications/mod_vmd/mod_vmd.c
    +++ b/src/mod/applications/mod_vmd/mod_vmd.c
    @@ -123,7 +123,7 @@ SWITCH_MODULE_SHUTDOWN_FUNCTION(mod_vmd_shutdown);
     SWITCH_STANDARD_API(vmd_api_main);
     
     SWITCH_MODULE_LOAD_FUNCTION(mod_vmd_load);
    -SWITCH_MODULE_DEFINITION(mod_vmd, mod_vmd_load, NULL, NULL);
    +SWITCH_MODULE_DEFINITION(mod_vmd, mod_vmd_load, mod_vmd_shutdown, NULL);
     SWITCH_STANDARD_APP(vmd_start_function);
     
     /*! Type that holds state information about the beep. */
    diff --git a/src/mod/applications/mod_voicemail/mod_voicemail.c b/src/mod/applications/mod_voicemail/mod_voicemail.c
    index dd3a74a4630..6ece9f4f471 100644
    --- a/src/mod/applications/mod_voicemail/mod_voicemail.c
    +++ b/src/mod/applications/mod_voicemail/mod_voicemail.c
    @@ -1196,7 +1196,7 @@ static switch_status_t create_file(switch_core_session_t *session, vm_profile_t
     	switch_cc_t cc = { 0 };
     	switch_codec_implementation_t read_impl = { 0 };
     	int got_file = 0;
    -	switch_bool_t skip_record_check = switch_true(switch_channel_get_variable(channel, "skip_record_check"));
    +	switch_bool_t skip_record_check = switch_channel_var_true(channel, "skip_record_check");
     
     	switch_core_session_get_read_impl(session, &read_impl);
     
    @@ -1605,7 +1605,7 @@ static switch_status_t listen_file(switch_core_session_t *session, vm_profile_t
     						  cid_buf, switch_channel_get_name(channel));
     		switch_core_session_receive_message(session, &msg);
     
    -		if (!zstr(cbt->cid_number) && (switch_true(switch_channel_get_variable(channel, "vm_announce_cid")))) {
    +		if (!zstr(cbt->cid_number) && (switch_channel_var_true(channel, "vm_announce_cid"))) {
     			TRY_CODE(switch_ivr_phrase_macro(session, VM_SAY_PHONE_NUMBER_MACRO, cbt->cid_number, NULL, NULL));
     		}
     
    @@ -2002,7 +2002,7 @@ static void voicemail_check_main(switch_core_session_t *session, vm_profile_t *p
     		auth_only = 1;
     		auth = 0;
     	} else {
    -		auth_only = switch_true(switch_channel_get_variable(channel, "vm_auth_only"));
    +		auth_only = switch_channel_var_true(channel, "vm_auth_only");
     	}
     
     	timeout = profile->digit_timeout;
    @@ -2583,7 +2583,7 @@ static void voicemail_check_main(switch_core_session_t *session, vm_profile_t *p
     				if (!auth) {
     					if (!zstr(cbt.password) && !strcmp(cbt.password, mypass)) {
     						auth++;
    -					} else if (!thepass && profile->allow_empty_password_auth) {
    +					} else if (!thehash && !thepass && profile->allow_empty_password_auth) {
     						auth++;
     					}
     
    @@ -3165,7 +3165,6 @@ static switch_status_t voicemail_inject(const char *data, switch_core_session_t
     	char *dup = NULL, *user = NULL, *domain = NULL, *profile_name = NULL;
     	switch_status_t status = SWITCH_STATUS_SUCCESS;
     	int isgroup = 0, isall = 0;
    -	int argc = 0;
     	char *argv[6] = { 0 };
     	char *box, *path, *cid_num, *cid_name;
     	switch_memory_pool_t *pool = NULL;
    @@ -3181,7 +3180,7 @@ static switch_status_t voicemail_inject(const char *data, switch_core_session_t
     	dup = strdup(data);
     	switch_assert(dup);
     
    -	if ((argc = switch_separate_string(dup, ' ', argv, (sizeof(argv) / sizeof(argv[0])))) < 2) {
    +	if (switch_separate_string(dup, ' ', argv, (sizeof(argv) / sizeof(argv[0]))) < 2) {
     		switch_log_printf(SWITCH_CHANNEL_LOG, SWITCH_LOG_ERROR, "Not enough args [%s]\n", data);
     		status = SWITCH_STATUS_FALSE;
     		goto end;
    @@ -3338,7 +3337,7 @@ static switch_status_t voicemail_inject(const char *data, switch_core_session_t
     		} else {
     			switch_xml_t x_group = NULL;
     
    -			if ((status = switch_xml_locate_user_in_domain(user, x_domain, &ut, &x_group)) == SWITCH_STATUS_SUCCESS) {
    +			if (switch_xml_locate_user_in_domain(user, x_domain, &ut, &x_group) == SWITCH_STATUS_SUCCESS) {
     				switch_xml_merge_user(ut, x_domain, x_group);
     				switch_event_create(&my_params, SWITCH_EVENT_REQUEST_PARAMS);
     				status = deliver_vm(profile, ut, domain, path, 0, read_flags,
    @@ -3399,14 +3398,16 @@ static switch_status_t voicemail_leave_main(switch_core_session_t *session, vm_p
     	switch_event_t *vars = NULL;
     	const char *vtmp, *vm_ext = NULL;
     	int disk_quota = 0;
    -	switch_bool_t skip_greeting = switch_true(switch_channel_get_variable(channel, "skip_greeting"));
    -	switch_bool_t skip_instructions = switch_true(switch_channel_get_variable(channel, "skip_instructions"));
    -	switch_bool_t skip_record_urgent_check = switch_true(switch_channel_get_variable(channel, "skip_record_urgent_check"));
    +	switch_bool_t skip_greeting = switch_channel_var_true(channel, "skip_greeting");
    +	switch_bool_t skip_instructions = switch_channel_var_true(channel, "skip_instructions");
    +	switch_bool_t skip_record_urgent_check = switch_channel_var_true(channel, "skip_record_urgent_check");
    +	switch_bool_t voicemail_skip_goodbye = switch_channel_var_true(channel, "voicemail_skip_goodbye");
     	switch_bool_t vm_enabled = SWITCH_TRUE;
     
     	switch_channel_set_variable(channel, "skip_greeting", NULL);
     	switch_channel_set_variable(channel, "skip_instructions", NULL);
     	switch_channel_set_variable(channel, "skip_record_urgent_check", NULL);
    +	switch_channel_set_variable(channel, "voicemail_skip_goodbye", NULL);
     
     	memset(&cbt, 0, sizeof(cbt));
     
    @@ -3700,7 +3701,9 @@ static switch_status_t voicemail_leave_main(switch_core_session_t *session, vm_p
     	switch_safe_free(file_path);
     
     	if (switch_channel_ready(channel) && vm_enabled) {
    -		status = switch_ivr_phrase_macro(session, VM_GOODBYE_MACRO, NULL, NULL, NULL);
    +		if (!voicemail_skip_goodbye) {
    +			status = switch_ivr_phrase_macro(session, VM_GOODBYE_MACRO, NULL, NULL, NULL);
    +		}
     	}
     
     	return status;
    @@ -5426,7 +5429,7 @@ SWITCH_STANDARD_API(vm_fsdb_msg_list_function)
     
     	if (!msg_order) {
     		msg_order = "ASC";
    -	} else if (strcasecmp(msg_order, "ASC") || strcasecmp(msg_order, "DESC")) {
    +	} else if (strcasecmp(msg_order, "ASC") && strcasecmp(msg_order, "DESC")) {
     		stream->write_function(stream, "-ERR Bad Argument: '%s'\n", msg_order);
     		goto done;
     	}
    diff --git a/src/mod/applications/mod_voicemail_ivr/menu.c b/src/mod/applications/mod_voicemail_ivr/menu.c
    index 79aa16b56ed..8a21353c930 100644
    --- a/src/mod/applications/mod_voicemail_ivr/menu.c
    +++ b/src/mod/applications/mod_voicemail_ivr/menu.c
    @@ -730,13 +730,15 @@ char *vmivr_menu_get_input_set(switch_core_session_t *session, vmivr_profile_t *
     
     	for (retry = menu->ivr_maximum_attempts; switch_channel_ready(channel) && retry > 0; retry--) {
     		int i;
    +		int dtmfa_array_length = 0;
     
     		menu_instance_init(menu);
     
     		switch_event_add_header(menu->phrase_params, SWITCH_STACK_BOTTOM, "IVR-Retry-Left", "%d", retry);
     
     		/* Find the last entry and append this one to it */
    -		for (i=0; i < 16 && menu->dtmfa[i]; i++){
    +		dtmfa_array_length = sizeof(menu->dtmfa) / sizeof(menu->dtmfa[0]);
    +		for (i = 0; i < (dtmfa_array_length - 1) && menu->dtmfa[i]; i++){
     		}
     		menu->dtmfa[i] = (char *) input_mask;
     
    diff --git a/src/mod/asr_tts/mod_unimrcp/Makefile.am b/src/mod/asr_tts/mod_unimrcp/Makefile.am
    deleted file mode 100644
    index 6f144744fee..00000000000
    --- a/src/mod/asr_tts/mod_unimrcp/Makefile.am
    +++ /dev/null
    @@ -1,44 +0,0 @@
    -include $(top_srcdir)/build/modmake.rulesam
    -
    -MODNAME=mod_unimrcp
    -
    -UNIMRCP_DIR=$(switch_srcdir)/libs/unimrcp
    -UNIMRCP_BUILDDIR=$(switch_builddir)/libs/unimrcp
    -UNIMRCPLA=$(UNIMRCP_BUILDDIR)/platforms/libunimrcp-client/libunimrcpclient.la
    -
    -mod_LTLIBRARIES = mod_unimrcp.la
    -mod_unimrcp_la_SOURCES = mod_unimrcp.c
    -mod_unimrcp_la_CFLAGS  = $(AM_CFLAGS) 
    -mod_unimrcp_la_CFLAGS += -I.
    -mod_unimrcp_la_CFLAGS += -I$(switch_srcdir)/libs/apr/include
    -mod_unimrcp_la_CFLAGS += -I$(switch_srcdir)/libs/apr-util/include
    -mod_unimrcp_la_CFLAGS += -I$(switch_builddir)/libs/apr/include
    -mod_unimrcp_la_CFLAGS += -I$(switch_builddir)/libs/apr-util/include
    -mod_unimrcp_la_CFLAGS += -I$(UNIMRCP_DIR)/build
    -mod_unimrcp_la_CFLAGS += -I$(UNIMRCP_DIR)/platforms/libunimrcp-client/include
    -mod_unimrcp_la_CFLAGS += -I$(UNIMRCP_DIR)/modules/mrcp-sofiasip/include
    -mod_unimrcp_la_CFLAGS += -I$(UNIMRCP_DIR)/modules/mrcp-unirtsp/include
    -mod_unimrcp_la_CFLAGS += -I$(UNIMRCP_DIR)/libs/mrcp-client/include
    -mod_unimrcp_la_CFLAGS += -I$(UNIMRCP_DIR)/libs/mrcp-signaling/include
    -mod_unimrcp_la_CFLAGS += -I$(UNIMRCP_DIR)/libs/mrcpv2-transport/include
    -mod_unimrcp_la_CFLAGS += -I$(UNIMRCP_DIR)/libs/mrcp/include
    -mod_unimrcp_la_CFLAGS += -I$(UNIMRCP_DIR)/libs/mrcp/message/include
    -mod_unimrcp_la_CFLAGS += -I$(UNIMRCP_DIR)/libs/mrcp/control/include
    -mod_unimrcp_la_CFLAGS += -I$(UNIMRCP_DIR)/libs/mrcp/resources/include
    -mod_unimrcp_la_CFLAGS += -I$(UNIMRCP_DIR)/libs/mpf/include
    -mod_unimrcp_la_CFLAGS += -I$(UNIMRCP_DIR)/libs/apr-toolkit/include
    -
    -mod_unimrcp_la_LIBADD = $(switch_builddir)/libfreeswitch.la $(UNIMRCPLA) $(switch_builddir)/libs/apr/libapr-1.la $(switch_builddir)/libs/apr-util/libaprutil-1.la $(switch_builddir)/libs/apr-util/xml/expat/lib/libexpat.la
    -mod_unimrcp_la_LDFLAGS = -avoid-version -module -no-undefined -shared
    -
    -if ISMAC
    -mod_unimrcp_la_LDFLAGS += -framework CoreFoundation -framework SystemConfiguration
    -endif
    -
    -BUILT_SOURCES = $(UNIMRCPLA)
    -
    -$(UNIMRCPLA): $(UNIMRCP_DIR) $(UNIMRCP_DIR)/.update
    -	cd $(UNIMRCP_BUILDDIR) && $(MAKE)
    -	$(TOUCH_TARGET)
    -
    -$(mod_unimrcp_la_SOURCES) : $(BUILT_SOURCES)
    diff --git a/src/mod/asr_tts/mod_unimrcp/mod_unimrcp.2017.vcxproj b/src/mod/asr_tts/mod_unimrcp/mod_unimrcp.2017.vcxproj
    deleted file mode 100644
    index ad2634981f2..00000000000
    --- a/src/mod/asr_tts/mod_unimrcp/mod_unimrcp.2017.vcxproj
    +++ /dev/null
    @@ -1,205 +0,0 @@
    -
    -
    -  
    -    
    -      Debug
    -      Win32
    -    
    -    
    -      Debug
    -      x64
    -    
    -    
    -      Release
    -      Win32
    -    
    -    
    -      Release
    -      x64
    -    
    -  
    -  
    -    mod_unimrcp
    -    {D07C378A-F5F7-438F-ADF3-4AC4FB1883CD}
    -    mod_unimrcp
    -    Win32Proj
    -  
    -  
    -  
    -    DynamicLibrary
    -    MultiByte
    -    $(DefaultPlatformToolset)
    -  
    -  
    -    DynamicLibrary
    -    MultiByte
    -    $(DefaultPlatformToolset)
    -  
    -  
    -    DynamicLibrary
    -    MultiByte
    -    $(DefaultPlatformToolset)
    -  
    -  
    -    DynamicLibrary
    -    MultiByte
    -    $(DefaultPlatformToolset)
    -  
    -  
    -  
    -  
    -  
    -  
    -    
    -    
    -    
    -  
    -  
    -    
    -    
    -    
    -  
    -  
    -    
    -    
    -    
    -  
    -  
    -    
    -    
    -    
    -  
    -  
    -  
    -    <_ProjectFileVersion>10.0.30319.1
    -    $(Configuration)\
    -    $(Platform)\$(Configuration)\
    -  
    -  
    -    
    -      APT_STATIC_LIB;MPF_STATIC_LIB;MRCP_STATIC_LIB;LIBSOFIA_SIP_UA_STATIC;%(PreprocessorDefinitions)
    -      
    -      
    -    
    -    
    -      $(SolutionDir)Debug/bin;%(AdditionalLibraryDirectories)
    -      false
    -      
    -      
    -    
    -  
    -  
    -    
    -      X64
    -    
    -    
    -      APT_STATIC_LIB;MPF_STATIC_LIB;MRCP_STATIC_LIB;LIBSOFIA_SIP_UA_STATIC;%(PreprocessorDefinitions)
    -      
    -      
    -    
    -    
    -      $(SolutionDir)$(PlatformName)\$(Configuration)\;%(AdditionalLibraryDirectories)
    -      false
    -      
    -      
    -      MachineX64
    -    
    -  
    -  
    -    
    -      APT_STATIC_LIB;MPF_STATIC_LIB;MRCP_STATIC_LIB;LIBSOFIA_SIP_UA_STATIC;%(PreprocessorDefinitions)
    -      
    -      
    -    
    -    
    -      $(SolutionDir)Release/bin;%(AdditionalLibraryDirectories)
    -      false
    -      
    -      
    -    
    -  
    -  
    -    
    -      X64
    -    
    -    
    -      APT_STATIC_LIB;MPF_STATIC_LIB;MRCP_STATIC_LIB;LIBSOFIA_SIP_UA_STATIC;%(PreprocessorDefinitions)
    -      
    -      
    -    
    -    
    -      $(SolutionDir)$(PlatformName)\$(Configuration)\;%(AdditionalLibraryDirectories)
    -      false
    -      
    -      
    -      MachineX64
    -    
    -  
    -  
    -    
    -      CompileAsC
    -      CompileAsC
    -      CompileAsC
    -      CompileAsC
    -    
    -  
    -  
    -    
    -      {13deeca0-bdd4-4744-a1a2-8eb0a44df3d2}
    -      false
    -    
    -    
    -      {b5a00bfa-6083-4fae-a097-71642d6473b5}
    -      false
    -    
    -    
    -      {72782932-37cc-46ae-8c7f-9a7b1a6ee108}
    -      false
    -    
    -    
    -      {12a49562-bab9-43a3-a21d-15b60bbb4c31}
    -      false
    -    
    -    
    -      {a9edac04-6a5f-4ba7-bc0d-cce7b255b6ea}
    -      false
    -    
    -    
    -      {1c320193-46a6-4b34-9c56-8ab584fc1b56}
    -      false
    -    
    -    
    -      {504b3154-7a4f-459d-9877-b951021c3f1f}
    -      false
    -    
    -    
    -      {746f3632-5bb2-4570-9453-31d6d58a7d8e}
    -      false
    -    
    -    
    -      {deb01acb-d65f-4a62-aed9-58c1054499e9}
    -      false
    -    
    -    
    -      {f057da7f-79e5-4b00-845c-ef446ef055e3}
    -      false
    -    
    -    
    -      {f6c55d93-b927-4483-bb69-15aef3dd2dff}
    -      false
    -    
    -    
    -      {df018947-0fff-4eb3-bdee-441dc81da7a4}
    -    
    -    
    -      {70a49bc2-7500-41d0-b75d-edcc5be987a0}
    -    
    -    
    -      {202d7a4e-760d-4d0e-afa1-d7459ced30ff}
    -      false
    -    
    -  
    -  
    -  
    -  
    -
    \ No newline at end of file
    diff --git a/src/mod/asr_tts/mod_unimrcp/mod_unimrcp.c b/src/mod/asr_tts/mod_unimrcp/mod_unimrcp.c
    deleted file mode 100644
    index a89329f4b5e..00000000000
    --- a/src/mod/asr_tts/mod_unimrcp/mod_unimrcp.c
    +++ /dev/null
    @@ -1,4631 +0,0 @@
    -/*
    - * FreeSWITCH Modular Media Switching Software Library / Soft-Switch Application
    - * Copyright (C) 2009-2015, Anthony Minessale II 
    - *
    - * Version: MPL 1.1
    - *
    - * The contents of this file are subject to the Mozilla Public License Version
    - * 1.1 (the "License"); you may not use this file except in compliance with
    - * the License. You may obtain a copy of the License at
    - * http://www.mozilla.org/MPL/
    - *
    - * Software distributed under the License is distributed on an "AS IS" basis,
    - * WITHOUT WARRANTY OF ANY KIND, either express or implied. See the License
    - * for the specific language governing rights and limitations under the
    - * License.
    - *
    - * The Original Code is FreeSWITCH mod_unimrcp
    - *
    - * The Initial Developer of the Original Code is
    - * Christopher M. Rienzo 
    - *
    - * Portions created by the Initial Developer are Copyright (C)
    - * the Initial Developer. All Rights Reserved.
    - *
    - * Contributor(s):
    - *
    - * Brian West 
    - * Christopher M. Rienzo 
    - * Luke Dashjr  (OpenMethods, LLC)
    - *
    - * Maintainer: Christopher M. Rienzo 
    - *
    - * mod_unimrcp.c -- UniMRCP module (MRCP client)
    - *
    - */
    -#include 
    -
    -/* UniMRCP includes */
    -#include "apt.h"
    -#include "apt_log.h"
    -#include "unimrcp_client.h"
    -#include "mrcp_application.h"
    -#include "mrcp_session.h"
    -#include "mrcp_message.h"
    -#include "mrcp_generic_header.h"
    -#include "mrcp_synth_header.h"
    -#include "mrcp_synth_resource.h"
    -#include "mrcp_recog_header.h"
    -#include "mrcp_recog_resource.h"
    -#include "uni_version.h"
    -#include "mrcp_resource_loader.h"
    -#include "mpf_engine.h"
    -#include "mpf_codec_manager.h"
    -#include "mpf_dtmf_generator.h"
    -#include "mpf_rtp_termination_factory.h"
    -#include "mrcp_sofiasip_client_agent.h"
    -#include "mrcp_unirtsp_client_agent.h"
    -#include "mrcp_client_connection.h"
    -#include "apt_net.h"
    -
    -/*********************************************************************************************************************************************
    - * mod_unimrcp : module interface to FreeSWITCH
    - */
    -
    -/* module name */
    -#define MOD_UNIMRCP "unimrcp"
    -/* module config file */
    -#define CONFIG_FILE "unimrcp.conf"
    -
    -
    -/**
    - * A UniMRCP application.
    - */
    -struct mod_unimrcp_application {
    -	/** UniMRCP application */
    -	mrcp_application_t *app;
    -	/** MRCP callbacks from UniMRCP to this module's application */
    -	mrcp_app_message_dispatcher_t dispatcher;
    -	/** Audio callbacks from UniMRCP to this module's application */
    -	mpf_audio_stream_vtable_t audio_stream_vtable;
    -	/** maps FreeSWITCH param to MRCP param name */
    -	switch_hash_t *fs_param_map;
    -	/** maps MRCP header to unimrcp header handler function */
    -	switch_hash_t *param_id_map;
    -};
    -typedef struct mod_unimrcp_application mod_unimrcp_application_t;
    -
    -/**
    - * module globals - global configuration and variables
    - */
    -struct mod_unimrcp_globals {
    -	/** max-connection-count config */
    -	char *unimrcp_max_connection_count;
    -	/** request-timeout config */
    -	char *unimrcp_request_timeout;
    -	/** rx-buffer-size */
    -	char *unimrcp_rx_buffer_size;
    -	/** tx-buffer-size */
    -	char *unimrcp_tx_buffer_size;
    -	/** offer-new-connection config */
    -	char *unimrcp_offer_new_connection;
    -	/** default-tts-profile config */
    -	char *unimrcp_default_synth_profile;
    -	/** default-asr-profile config */
    -	char *unimrcp_default_recog_profile;
    -	/** log level for UniMRCP library */
    -	char *unimrcp_log_level;
    -	/** profile events configuration param */
    -	char *enable_profile_events_param;
    -	/** True if profile events are wanted */
    -	int enable_profile_events;
    -	/** the MRCP client stack */
    -	mrcp_client_t *mrcp_client;
    -	/** synthesizer application */
    -	mod_unimrcp_application_t synth;
    -	/** recognizer application */
    -	mod_unimrcp_application_t recog;
    -	/** synchronize access for speech channel numbering */
    -	switch_mutex_t *mutex;
    -	/** next available speech channel number */
    -	int speech_channel_number;
    -	/** the available profiles */
    -	switch_hash_t *profiles;
    -};
    -typedef struct mod_unimrcp_globals mod_unimrcp_globals_t;
    -
    -/** Module global variables */
    -static mod_unimrcp_globals_t globals;
    -
    -/**
    - * Profile-specific configuration.  This allows us to handle differing MRCP server behavior
    - * on a per-profile basis
    - */
    -struct profile {
    -	/** name of the profile */
    -	char *name;
    -
    -	/** MIME type to use for JSGF grammars */
    -	const char *jsgf_mime_type;
    -	/** MIME type to use for GSL grammars */
    -	const char *gsl_mime_type;
    -	/** MIME type to use for SRGS XML grammars */
    -	const char *srgs_xml_mime_type;
    -	/** MIME type to use for SRGS ABNF grammars */
    -	const char *srgs_mime_type;
    -
    -	/** MIME type to use for Google Speech module context */
    -	const char *xml_mime_type;
    -
    -	/** MIME type to use for SSML (TTS) */
    -	const char *ssml_mime_type;
    -
    -	/** Default params to use for RECOGNIZE requests */
    -	switch_hash_t *default_recog_params;
    -	/** Default params to use for SPEAK requests */
    -	switch_hash_t *default_synth_params;
    -};
    -typedef struct profile profile_t;
    -static switch_status_t profile_create(profile_t ** profile, const char *name, switch_memory_pool_t *pool);
    -
    -/* Profile events that may be monitored.  Useful for tracking MRCP profile utilization */
    -#define MY_EVENT_PROFILE_CREATE "unimrcp::profile_create"
    -#define MY_EVENT_PROFILE_OPEN "unimrcp::profile_open"
    -#define MY_EVENT_PROFILE_CLOSE "unimrcp::profile_close"
    -
    -/**
    - * Defines XML parsing instructions
    - */
    -static switch_xml_config_item_t instructions[] = {
    -	SWITCH_CONFIG_ITEM_STRING_STRDUP("max-connection-count", CONFIG_REQUIRED, &globals.unimrcp_max_connection_count, "100", "",
    -									 "The max MRCPv2 connections to manage"),
    -	SWITCH_CONFIG_ITEM_STRING_STRDUP("offer-new-connection", CONFIG_REQUIRED, &globals.unimrcp_offer_new_connection, "1", "", ""),
    -	SWITCH_CONFIG_ITEM_STRING_STRDUP("default-tts-profile", CONFIG_REQUIRED, &globals.unimrcp_default_synth_profile, "default", "",
    -									 "The default profile to use for TTS"),
    -	SWITCH_CONFIG_ITEM_STRING_STRDUP("default-asr-profile", CONFIG_REQUIRED, &globals.unimrcp_default_recog_profile, "default", "",
    -									 "The default profile to use for ASR"),
    -	SWITCH_CONFIG_ITEM_STRING_STRDUP("log-level", CONFIG_REQUIRED, &globals.unimrcp_log_level, "WARNING",
    -									 "EMERGENCY|ALERT|CRITICAL|ERROR|WARNING|NOTICE|INFO|DEBUG", "Logging level for UniMRCP"),
    -	SWITCH_CONFIG_ITEM_STRING_STRDUP("enable-profile-events", CONFIG_REQUIRED, &globals.enable_profile_events_param, "false", "",
    -									 "Fire profile events (true|false)"),
    -	SWITCH_CONFIG_ITEM_STRING_STRDUP("request-timeout", CONFIG_REQUIRED, &globals.unimrcp_request_timeout, "10000", "",
    -									 "Maximum time to wait for server response to a request"),
    -	SWITCH_CONFIG_ITEM_STRING_STRDUP("connection-rx-buffer-size", 0, &globals.unimrcp_rx_buffer_size, "1024", "",
    -									 "Maximum time to wait for server response to a request"),
    -	SWITCH_CONFIG_ITEM_STRING_STRDUP("connection-tx-buffer-size", 0, &globals.unimrcp_tx_buffer_size, "1024", "",
    -									 "Maximum time to wait for server response to a request"),
    -	SWITCH_CONFIG_ITEM_END()
    -};
    -
    -/* mod_unimrcp interface to FreeSWITCH */
    -SWITCH_MODULE_SHUTDOWN_FUNCTION(mod_unimrcp_shutdown);
    -SWITCH_MODULE_RUNTIME_FUNCTION(mod_unimrcp_runtime);
    -SWITCH_MODULE_LOAD_FUNCTION(mod_unimrcp_load);
    -SWITCH_MODULE_DEFINITION(mod_unimrcp, mod_unimrcp_load, mod_unimrcp_shutdown, NULL);
    -
    -static switch_status_t mod_unimrcp_do_config();
    -static mrcp_client_t *mod_unimrcp_client_create(switch_memory_pool_t *mod_pool);
    -static int process_rtp_config(mrcp_client_t *client, mpf_rtp_config_t *rtp_config, mpf_rtp_settings_t *rtp_settings, const char *param, const char *val, apr_pool_t *pool);
    -static int process_mrcpv1_config(rtsp_client_config_t *config, mrcp_sig_settings_t *sig_settings, const char *param, const char *val, apr_pool_t *pool);
    -static int process_mrcpv2_config(mrcp_sofia_client_config_t *config, mrcp_sig_settings_t *sig_settings, const char *param, const char *val, apr_pool_t *pool);
    -static int process_profile_config(profile_t *profile, const char *param, const char *val, apr_pool_t *pool);
    -
    -/* UniMRCP <--> FreeSWITCH logging bridge */
    -static apt_bool_t unimrcp_log(const char *file, int line, const char *obj, apt_log_priority_e priority, const char *format, va_list arg_ptr);
    -static apt_log_priority_e str_to_log_level(const char *level);
    -
    -static int get_next_speech_channel_number(void);
    -
    -#define XML_ID  " FreeSWITCH audio buffering
    - */
    -
    -/* size of the buffer */
    -#define AUDIO_QUEUE_SIZE (1024 * 32)
    -
    -/* Define to enable read/write logging and dumping of queue data to file */
    -#undef MOD_UNIMRCP_DEBUG_AUDIO_QUEUE
    -
    -/**
    - * Audio queue internals
    - */
    -struct audio_queue {
    -#ifdef MOD_UNIMRCP_DEBUG_AUDIO_QUEUE
    -	/** debug file for tx operations */
    -	switch_file_t *file_write;
    -	/** debug file name */
    -	char file_write_name[30];
    -	/** debug file for rx operations */
    -	switch_file_t *file_read;
    -	/** debug file name */
    -	char file_read_name[30];
    -#endif
    -	/** the buffer of audio data */
    -	switch_buffer_t *buffer;
    -	/** synchronizes access to queue */
    -	switch_mutex_t *mutex;
    -	/** signaling for blocked readers/writers */
    -	switch_thread_cond_t *cond;
    -	/** total bytes written */
    -	switch_size_t write_bytes;
    -	/** total bytes read */
    -	switch_size_t read_bytes;
    -	/** number of bytes reader is waiting for */
    -	switch_size_t waiting;
    -	/** name of this queue (for logging) */
    -	char *name;
    -	/** optional session uuid associated with this queue (for logging) */
    -	char *session_uuid;
    -};
    -typedef struct audio_queue audio_queue_t;
    -
    -static switch_status_t audio_queue_create(audio_queue_t ** queue, const char *name, const char *session_uuid, switch_memory_pool_t *pool);
    -static switch_status_t audio_queue_write(audio_queue_t *queue, void *data, switch_size_t *data_len);
    -static switch_status_t audio_queue_read(audio_queue_t *queue, void *data, switch_size_t *data_len, int block);
    -static switch_status_t audio_queue_clear(audio_queue_t *queue);
    -static switch_status_t audio_queue_signal(audio_queue_t *queue);
    -static switch_status_t audio_queue_destroy(audio_queue_t *queue);
    -
    -/*********************************************************************************************************************************************
    - * SPEECH_CHANNEL : speech functions common to recognizer and synthesizer
    - */
    -
    -#define SPEECH_CHANNEL_TIMEOUT_USEC (5000 * 1000)
    -#define AUDIO_TIMEOUT_USEC (SWITCH_MAX_INTERVAL * 1000)
    -
    -/**
    - * Type of MRCP channel
    - */
    -enum speech_channel_type {
    -	SPEECH_CHANNEL_SYNTHESIZER,
    -	SPEECH_CHANNEL_RECOGNIZER
    -};
    -typedef enum speech_channel_type speech_channel_type_t;
    -
    -/**
    - * channel states
    - */
    -enum speech_channel_state {
    -	/** closed */
    -	SPEECH_CHANNEL_CLOSED,
    -	/** ready for speech request */
    -	SPEECH_CHANNEL_READY,
    -	/** processing speech request */
    -	SPEECH_CHANNEL_PROCESSING,
    -	/** finished processing speech request */
    -	SPEECH_CHANNEL_DONE,
    -	/** error opening channel */
    -	SPEECH_CHANNEL_ERROR
    -};
    -typedef enum speech_channel_state speech_channel_state_t;
    -
    -
    -
    -/**
    - * An MRCP speech channel
    - */
    -struct speech_channel {
    -	/** the name of this channel (for logging) */
    -	char *name;
    -	/** optional session associated w/ this channel */
    -	char *session_uuid;
    -	/** The profile used by this channel */
    -	profile_t *profile;
    -	/** type of channel */
    -	speech_channel_type_t type;
    -	/** application this channel is running */
    -	mod_unimrcp_application_t *application;
    -	/** UniMRCP session */
    -	mrcp_session_t *unimrcp_session;
    -	/** UniMRCP channel */
    -	mrcp_channel_t *unimrcp_channel;
    -	/** memory pool */
    -	switch_memory_pool_t *memory_pool;
    -	/** synchronizes channel state */
    -	switch_mutex_t *mutex;
    -	/** wait on channel states */
    -	switch_thread_cond_t *cond;
    -	/** channel state */
    -	speech_channel_state_t state;
    -	/** UniMRCP <--> FreeSWITCH audio buffer */
    -	audio_queue_t *audio_queue;
    -	/** True, if channel was opened successfully */
    -	int channel_opened;
    -	/** rate */
    -	uint16_t rate;
    -	/** silence sample */
    -	int silence;
    -	/** speech channel params */
    -	switch_hash_t *params;
    -	/** app specific data */
    -	void *data;
    -	void *fsh;
    -};
    -typedef struct speech_channel speech_channel_t;
    -
    -/* speech channel interface for UniMRCP */
    -static apt_bool_t speech_on_session_terminate(mrcp_application_t *application, mrcp_session_t *session, mrcp_sig_status_code_e status);
    -static apt_bool_t speech_on_channel_add(mrcp_application_t *application, mrcp_session_t *session, mrcp_channel_t *channel,
    -										mrcp_sig_status_code_e status);
    -static apt_bool_t speech_on_channel_remove(mrcp_application_t *application, mrcp_session_t *session, mrcp_channel_t *channel,
    -										   mrcp_sig_status_code_e status);
    -
    -/* speech_channel funcs */
    -static switch_status_t speech_channel_create(speech_channel_t ** schannel, const char *name, const char *session_uuid, speech_channel_type_t type, mod_unimrcp_application_t *app,
    -											 uint16_t rate, switch_memory_pool_t *pool);
    -static mpf_termination_t *speech_channel_create_mpf_termination(speech_channel_t *schannel);
    -static switch_status_t speech_channel_open(speech_channel_t *schannel, profile_t *profile);
    -static switch_status_t speech_channel_destroy(speech_channel_t *schannel);
    -static switch_status_t speech_channel_stop(speech_channel_t *schannel);
    -static switch_status_t speech_channel_set_param(speech_channel_t *schannel, const char *name, const char *val);
    -static switch_status_t speech_channel_write(speech_channel_t *schannel, void *data, switch_size_t *len);
    -static switch_status_t speech_channel_read(speech_channel_t *schannel, void *data, switch_size_t *len, int block);
    -static switch_status_t speech_channel_set_state(speech_channel_t *schannel, speech_channel_state_t state);
    -static switch_status_t speech_channel_set_state_unlocked(speech_channel_t *schannel, speech_channel_state_t state);
    -static const char *speech_channel_state_to_string(speech_channel_state_t state);
    -static const char *speech_channel_type_to_string(speech_channel_type_t type);
    -
    -
    -/*********************************************************************************************************************************************
    - * SYNTHESIZER : UniMRCP <--> FreeSWITCH tts interface
    - */
    -
    -/* synthesis languages */
    -#define MIME_TYPE_PLAIN_TEXT "text/plain"
    -
    -static switch_status_t synth_load(switch_loadable_module_interface_t *module_interface, switch_memory_pool_t *pool);
    -static switch_status_t synth_shutdown();
    -
    -/* synthesizer's interface for FreeSWITCH */
    -static switch_status_t synth_speech_open(switch_speech_handle_t *sh, const char *voice_name, int rate, int channels, switch_speech_flag_t *flags);
    -static switch_status_t synth_speech_close(switch_speech_handle_t *sh, switch_speech_flag_t *flags);
    -static switch_status_t synth_speech_feed_tts(switch_speech_handle_t *sh, char *text, switch_speech_flag_t *flags);
    -static switch_status_t synth_speech_read_tts(switch_speech_handle_t *sh, void *data, switch_size_t *datalen, switch_speech_flag_t *flags);
    -static void synth_speech_flush_tts(switch_speech_handle_t *sh);
    -static void synth_speech_text_param_tts(switch_speech_handle_t *sh, char *param, const char *val);
    -static void synth_speech_numeric_param_tts(switch_speech_handle_t *sh, char *param, int val);
    -static void synth_speech_float_param_tts(switch_speech_handle_t *sh, char *param, double val);
    -
    -/* synthesizer's interface for UniMRCP */
    -static apt_bool_t synth_message_handler(const mrcp_app_message_t *app_message);
    -static apt_bool_t synth_on_message_receive(mrcp_application_t *application, mrcp_session_t *session, mrcp_channel_t *channel, mrcp_message_t *message);
    -static apt_bool_t synth_stream_write(mpf_audio_stream_t *stream, const mpf_frame_t *frame);
    -
    -/* synthesizer specific speech_channel funcs */
    -static switch_status_t synth_channel_speak(speech_channel_t *schannel, const char *text);
    -static switch_status_t synth_channel_set_params(speech_channel_t *schannel, mrcp_message_t *msg, mrcp_generic_header_t *gen_hdr,
    -												mrcp_synth_header_t *synth_hdr);
    -static switch_status_t synth_channel_set_header(speech_channel_t *schannel, int id, char *val, mrcp_message_t *msg, mrcp_synth_header_t *synth_hdr);
    -
    -/*********************************************************************************************************************************************
    - * GRAMMAR : recognizer grammar management
    - */
    -
    -/**
    - * type of the grammar
    - */
    -enum grammar_type {
    -	GRAMMAR_TYPE_UNKNOWN,
    -	/* text/uri-list */
    -	GRAMMAR_TYPE_URI,
    -	/* application/srgs */
    -	GRAMMAR_TYPE_SRGS,
    -	/* application/srgs+xml */
    -	GRAMMAR_TYPE_SRGS_XML,
    -	/* application/x-nuance-gsl */
    -	GRAMMAR_TYPE_NUANCE_GSL,
    -	/* application/x-jsgf */
    -	GRAMMAR_TYPE_JSGF,
    -	/* application/xml */
    -	GRAMMAR_TYPE_XML
    -};
    -typedef enum grammar_type grammar_type_t;
    -
    -/**
    - * A grammar for recognition
    - */
    -struct grammar {
    -	/** name of this grammar */
    -	char *name;
    -	/** grammar MIME type */
    -	grammar_type_t type;
    -	/** the grammar or its URI, depending on type */
    -	char *data;
    -};
    -typedef struct grammar grammar_t;
    -
    -static switch_status_t grammar_create(grammar_t ** grammar, const char *name, grammar_type_t type, const char *data, switch_memory_pool_t *pool);
    -static const char *grammar_type_to_mime(grammar_type_t type, profile_t *profile);
    -
    -/*********************************************************************************************************************************************
    - * RECOGNIZER : UniMRCP <--> FreeSWITCH asr interface
    - */
    -
    -#define START_OF_INPUT_RECEIVED 1
    -#define START_OF_INPUT_REPORTED 2
    -
    -/**
    - * Data specific to the recognizer
    - */
    -struct recognizer_data {
    -	/** the available grammars */
    -	switch_hash_t *grammars;
    -	/** the enabled grammars */
    -	switch_hash_t *enabled_grammars;
    -	/** recognize result */
    -	char *result;
    -	/** recognize result headers */
    -	switch_event_t *result_headers;
    -	/** true, if voice has started */
    -	int start_of_input;
    -	/** true, if input timers have started */
    -	int timers_started;
    -	/** UniMRCP mpf stream */
    -	mpf_audio_stream_t *unimrcp_stream;
    -	/** DTMF generator */
    -	mpf_dtmf_generator_t *dtmf_generator;
    -	/** true, if presently transmitting DTMF */
    -	char dtmf_generator_active;
    -};
    -typedef struct recognizer_data recognizer_data_t;
    -
    -static switch_status_t recog_load(switch_loadable_module_interface_t *module_interface, switch_memory_pool_t *pool);
    -static switch_status_t recog_shutdown();
    -
    -/* recognizer's interface for FreeSWITCH */
    -static switch_status_t recog_asr_open(switch_asr_handle_t *ah, const char *codec, int rate, const char *dest, switch_asr_flag_t *flags);
    -static switch_status_t recog_asr_load_grammar(switch_asr_handle_t *ah, const char *grammar, const char *name);
    -static switch_status_t recog_asr_unload_grammar(switch_asr_handle_t *ah, const char *name);
    -static switch_status_t recog_asr_enable_grammar(switch_asr_handle_t *ah, const char *name);
    -static switch_status_t recog_asr_disable_grammar(switch_asr_handle_t *ah, const char *name);
    -static switch_status_t recog_asr_disable_all_grammars(switch_asr_handle_t *ah);
    -static switch_status_t recog_asr_close(switch_asr_handle_t *ah, switch_asr_flag_t *flags);
    -static switch_status_t recog_asr_feed(switch_asr_handle_t *ah, void *data, unsigned int len, switch_asr_flag_t *flags);
    -static switch_status_t recog_asr_feed_dtmf(switch_asr_handle_t *ah, const switch_dtmf_t *dtmf, switch_asr_flag_t *flags);
    -static switch_status_t recog_asr_resume(switch_asr_handle_t *ah);
    -static switch_status_t recog_asr_pause(switch_asr_handle_t *ah);
    -static switch_status_t recog_asr_check_results(switch_asr_handle_t *ah, switch_asr_flag_t *flags);
    -static switch_status_t recog_asr_get_results(switch_asr_handle_t *ah, char **xmlstr, switch_asr_flag_t *flags);
    -static switch_status_t recog_asr_get_result_headers(switch_asr_handle_t *ah, switch_event_t **headers, switch_asr_flag_t *flags);
    -static switch_status_t recog_asr_start_input_timers(switch_asr_handle_t *ah);
    -static void recog_asr_text_param(switch_asr_handle_t *ah, char *param, const char *val);
    -static void recog_asr_numeric_param(switch_asr_handle_t *ah, char *param, int val);
    -static void recog_asr_float_param(switch_asr_handle_t *ah, char *param, double val);
    -
    -/* recognizer's interface for UniMRCP */
    -static apt_bool_t recog_message_handler(const mrcp_app_message_t *app_message);
    -static apt_bool_t recog_on_message_receive(mrcp_application_t *application, mrcp_session_t *session, mrcp_channel_t *channel, mrcp_message_t *message);
    -static apt_bool_t recog_stream_open(mpf_audio_stream_t *stream, mpf_codec_t *codec);
    -static apt_bool_t recog_stream_read(mpf_audio_stream_t *stream, mpf_frame_t *frame);
    -
    -/* recognizer specific speech_channel_funcs */
    -static switch_status_t recog_channel_start(speech_channel_t *schannel);
    -static switch_status_t recog_channel_load_grammar(speech_channel_t *schannel, const char *name, grammar_type_t type, const char *data);
    -static switch_status_t recog_channel_unload_grammar(speech_channel_t *schannel, const char *name);
    -static switch_status_t recog_channel_enable_grammar(speech_channel_t *schannel, const char *name);
    -static switch_status_t recog_channel_disable_grammar(speech_channel_t *schannel, const char *name);
    -static switch_status_t recog_channel_disable_all_grammars(speech_channel_t *schannel);
    -static switch_status_t recog_channel_check_results(speech_channel_t *schannel);
    -static switch_status_t recog_channel_set_start_of_input(speech_channel_t *schannel);
    -static switch_status_t recog_channel_start_input_timers(speech_channel_t *schannel);
    -static switch_status_t recog_channel_set_results(speech_channel_t *schannel, const char *results);
    -static switch_status_t recog_channel_set_result_headers(speech_channel_t *schannel, mrcp_recog_header_t *recog_hdr);
    -static switch_status_t recog_channel_get_results(speech_channel_t *schannel, char **results);
    -static switch_status_t recog_channel_get_result_headers(speech_channel_t *schannel, switch_event_t **result_headers);
    -static switch_status_t recog_channel_set_params(speech_channel_t *schannel, mrcp_message_t *msg, mrcp_generic_header_t *gen_hdr,
    -												mrcp_recog_header_t *recog_hdr);
    -static switch_status_t recog_channel_set_header(speech_channel_t *schannel, int id, char *val, mrcp_message_t *msg, mrcp_recog_header_t *recog_hdr);
    -static switch_status_t recog_channel_set_timers_started(speech_channel_t *schannel);
    -
    -
    -/**
    - * Create a mod_unimrcp profile
    - * @param profile the created profile
    - * @param name the profile name
    - * @param pool the memory pool to use
    - * @return SWITCH_STATUS_SUCCESS if the profile is created
    - */
    -static switch_status_t profile_create(profile_t ** profile, const char *name, switch_memory_pool_t *pool)
    -{
    -	switch_status_t status = SWITCH_STATUS_SUCCESS;
    -	profile_t *lprofile = NULL;
    -	switch_event_t *event = NULL;
    -
    -	lprofile = (profile_t *) switch_core_alloc(pool, sizeof(profile_t));
    -	if (lprofile) {
    -		lprofile->name = switch_core_strdup(pool, name);
    -		lprofile->srgs_mime_type = "application/srgs";
    -		lprofile->srgs_xml_mime_type = "application/srgs+xml";
    -		lprofile->gsl_mime_type = "application/x-nuance-gsl";
    -		lprofile->jsgf_mime_type = "application/x-jsgf";
    -		lprofile->ssml_mime_type = "application/ssml+xml";
    -		lprofile->xml_mime_type = "application/xml";
    -		switch_core_hash_init(&lprofile->default_synth_params);
    -		switch_core_hash_init(&lprofile->default_recog_params);
    -		*profile = lprofile;
    -
    -		if (globals.enable_profile_events && switch_event_create_subclass(&event, SWITCH_EVENT_CUSTOM, MY_EVENT_PROFILE_CREATE) == SWITCH_STATUS_SUCCESS) {
    -			switch_event_add_header_string(event, SWITCH_STACK_BOTTOM, "MRCP-Profile", lprofile->name);
    -			switch_event_fire(&event);
    -		}
    -	} else {
    -		*profile = NULL;
    -		status = SWITCH_STATUS_FALSE;
    -	}
    -
    -	return status;
    -}
    -
    -/**
    - * Inspect text to determine if its first non-whitespace text matches "match"
    - * @param text the text to inspect.
    - * @param match the text to match
    - * @return true if matches
    - */
    -static int text_starts_with(const char *text, const char *match)
    -{
    -	int result = 0;
    -
    -	text = skip_initial_whitespace(text);
    -	if (!zstr(text)) {
    -		size_t textlen, matchlen;
    -		textlen = strlen(text);
    -		matchlen = strlen(match);
    -		/* is there a match? */
    -		result = textlen > matchlen && !strncmp(match, text, matchlen);
    -	}
    -
    -	return result;
    -}
    -
    -/**
    - * Find the first non-whitespace text character in text
    - * @param text the text to scan
    - * @return pointer to the first non-whitespace char in text or the empty string if none
    - */
    -static const char *skip_initial_whitespace(const char *text)
    -{
    -	if (!zstr(text)) {
    -		while(switch_isspace(*text)) {
    -			text++;
    -		}
    -	}
    -	return text;
    -}
    -
    -/**
    - * Create the audio queue
    - *
    - * @param audio_queue the created queue
    - * @param name the name of this queue (for logging)
    - * @param session_uuid optional session associated with this channel
    - * @param pool memory pool to allocate queue from
    - * @return SWITCH_STATUS_SUCCESS if successful.  SWITCH_STATUS_FALSE if unable to allocate queue
    - */
    -static switch_status_t audio_queue_create(audio_queue_t ** audio_queue, const char *name, const char *session_uuid, switch_memory_pool_t *pool)
    -{
    -	switch_status_t status = SWITCH_STATUS_SUCCESS;
    -	audio_queue_t *laudio_queue = NULL;
    -#ifdef MOD_UNIMRCP_DEBUG_AUDIO_QUEUE
    -	int flags;
    -#endif
    -	char *lname;
    -	char *lsession_uuid = NULL;
    -	*audio_queue = NULL;
    -
    -	lname = zstr(name) ? "" : switch_core_strdup(pool, name);
    -	lsession_uuid = zstr(session_uuid) ? NULL : switch_core_strdup(pool, session_uuid);
    -
    -	if ((laudio_queue = (audio_queue_t *) switch_core_alloc(pool, sizeof(audio_queue_t))) == NULL) {
    -		switch_log_printf(SWITCH_CHANNEL_UUID_LOG(lsession_uuid), SWITCH_LOG_ERROR, "(%s) unable to create audio queue\n", lname);
    -		status = SWITCH_STATUS_FALSE;
    -		goto done;
    -	}
    -
    -	laudio_queue->name = lname;
    -	laudio_queue->session_uuid = lsession_uuid;
    -
    -	if (switch_buffer_create(pool, &laudio_queue->buffer, AUDIO_QUEUE_SIZE) != SWITCH_STATUS_SUCCESS) {
    -		switch_log_printf(SWITCH_CHANNEL_UUID_LOG(lsession_uuid), SWITCH_LOG_ERROR, "(%s) unable to create audio queue buffer\n", laudio_queue->name);
    -		status = SWITCH_STATUS_FALSE;
    -		goto done;
    -	}
    -
    -	if (switch_mutex_init(&laudio_queue->mutex, SWITCH_MUTEX_UNNESTED, pool) != SWITCH_STATUS_SUCCESS) {
    -		switch_log_printf(SWITCH_CHANNEL_UUID_LOG(lsession_uuid), SWITCH_LOG_ERROR, "(%s) unable to create audio queue mutex\n", laudio_queue->name);
    -		status = SWITCH_STATUS_FALSE;
    -		goto done;
    -	}
    -
    -	if (switch_thread_cond_create(&laudio_queue->cond, pool) != SWITCH_STATUS_SUCCESS) {
    -		switch_log_printf(SWITCH_CHANNEL_UUID_LOG(lsession_uuid), SWITCH_LOG_ERROR, "(%s) unable to create audio queue condition variable\n", laudio_queue->name);
    -		status = SWITCH_STATUS_FALSE;
    -		goto done;
    -	}
    -#ifdef MOD_UNIMRCP_DEBUG_AUDIO_QUEUE
    -	flags = SWITCH_FOPEN_CREATE | SWITCH_FOPEN_WRITE | SWITCH_FOPEN_TRUNCATE | SWITCH_FOPEN_BINARY;
    -	strcpy(laudio_queue->file_read_name, "/tmp/mod_unimrcp_rx_XXXXXX");
    -	if (switch_file_mktemp(&laudio_queue->file_read, laudio_queue->file_read_name, flags, pool) != SWITCH_STATUS_SUCCESS) {
    -		switch_log_printf(SWITCH_CHANNEL_UUID_LOG(laudio_queue->session_uuid), SWITCH_LOG_ERROR, "(%s) unable to create audio queue read file\n", laudio_queue->name);
    -		laudio_queue->file_read = NULL;
    -	} else {
    -		switch_log_printf(SWITCH_CHANNEL_UUID_LOG(laudio_queue->session_uuid), SWITCH_LOG_DEBUG, "(%s) queue rx saved to %s\n", laudio_queue->name, laudio_queue->file_read_name);
    -	}
    -	strcpy(laudio_queue->file_write_name, "/tmp/mod_unimrcp_tx_XXXXXX");
    -	if (switch_file_mktemp(&laudio_queue->file_write, laudio_queue->file_write_name, flags, pool) != SWITCH_STATUS_SUCCESS) {
    -		switch_log_printf(SWITCH_CHANNEL_UUID_LOG(laudio_queue->session_uuid), SWITCH_LOG_ERROR, "(%s) unable to create audio queue write file\n", laudio_queue->name);
    -		laudio_queue->file_write = NULL;
    -	} else {
    -		switch_log_printf(SWITCH_CHANNEL_UUID_LOG(laudio_queue->session_uuid), SWITCH_LOG_DEBUG, "(%s) queue tx saved to %s\n", laudio_queue->name, laudio_queue->file_write_name);
    -	}
    -#endif
    -
    -	laudio_queue->write_bytes = 0;
    -	laudio_queue->read_bytes = 0;
    -	laudio_queue->waiting = 0;
    -	*audio_queue = laudio_queue;
    -	switch_log_printf(SWITCH_CHANNEL_UUID_LOG(laudio_queue->session_uuid), SWITCH_LOG_DEBUG, "(%s) audio queue created\n", laudio_queue->name);
    -
    -  done:
    -
    -	if (status != SWITCH_STATUS_SUCCESS) {
    -		audio_queue_destroy(laudio_queue);
    -	}
    -	return status;
    -}
    -
    -/**
    - * Write to the audio queue
    - *
    - * @param queue the queue to write to
    - * @param data the data to write
    - * @param data_len the number of octets to write
    - * @return SWITCH_STATUS_SUCCESS if data was written, SWITCH_STATUS_FALSE if data can't be written because queue is full
    - */
    -static switch_status_t audio_queue_write(audio_queue_t *queue, void *data, switch_size_t *data_len)
    -{
    -	switch_status_t status = SWITCH_STATUS_SUCCESS;
    -#ifdef MOD_UNIMRCP_DEBUG_AUDIO_QUEUE
    -	switch_size_t len = *data_len;
    -#endif
    -	switch_mutex_lock(queue->mutex);
    -
    -#ifdef MOD_UNIMRCP_DEBUG_AUDIO_QUEUE
    -	if (queue->file_write) {
    -		switch_file_write(queue->file_write, data, &len);
    -	}
    -#endif
    -
    -	if (switch_buffer_write(queue->buffer, data, *data_len) > 0) {
    -		queue->write_bytes = queue->write_bytes + *data_len;
    -#ifdef MOD_UNIMRCP_DEBUG_AUDIO_QUEUE
    -		switch_log_printf(SWITCH_CHANNEL_UUID_LOG(queue->session_uuid), SWITCH_LOG_DEBUG, "(%s) audio queue write total = %ld\trequested = %ld\n", queue->name, queue->write_bytes,
    -						  *data_len);
    -#endif
    -		if (queue->waiting <= switch_buffer_inuse(queue->buffer)) {
    -			switch_thread_cond_signal(queue->cond);
    -		}
    -	} else {
    -		*data_len = 0;
    -		switch_log_printf(SWITCH_CHANNEL_UUID_LOG(queue->session_uuid), SWITCH_LOG_DEBUG, "(%s) audio queue overflow!\n", queue->name);
    -		status = SWITCH_STATUS_FALSE;
    -	}
    -
    -	switch_mutex_unlock(queue->mutex);
    -	return status;
    -}
    -
    -/**
    - * Read from the audio queue
    - *
    - * @param queue the queue to read from
    - * @param data the read data
    - * @param data_len the amount of data requested / actual amount of data read (returned)
    - * @param block 1 if blocking is allowed
    - * @return SWITCH_STATUS_SUCCESS if successful.  SWITCH_STATUS_FALSE if no data was requested, or there was a timeout while waiting to read
    - */
    -static switch_status_t audio_queue_read(audio_queue_t *queue, void *data, switch_size_t *data_len, int block)
    -{
    -	switch_size_t requested = *data_len;
    -	switch_status_t status = SWITCH_STATUS_SUCCESS;
    -#ifdef MOD_UNIMRCP_DEBUG_AUDIO_QUEUE
    -	switch_size_t len = *data_len;
    -#endif
    -	switch_mutex_lock(queue->mutex);
    -
    -	/* allow the initial frame to buffer */
    -	if (!queue->read_bytes && switch_buffer_inuse(queue->buffer) < requested) {
    -		*data_len = 0;
    -		status = SWITCH_STATUS_SUCCESS;
    -		goto done;
    -	}
    -
    -	/* wait for data, if allowed */
    -	if (block) {
    -		while (switch_buffer_inuse(queue->buffer) < requested) {
    -			queue->waiting = requested;
    -			if (switch_thread_cond_timedwait(queue->cond, queue->mutex, AUDIO_TIMEOUT_USEC) == SWITCH_STATUS_TIMEOUT) {
    -				break;
    -			}
    -		}
    -		queue->waiting = 0;
    -	}
    -
    -	if (switch_buffer_inuse(queue->buffer) < requested) {
    -		requested = switch_buffer_inuse(queue->buffer);
    -	}
    -	if (requested == 0) {
    -		*data_len = 0;
    -		status = SWITCH_STATUS_FALSE;
    -		goto done;
    -	}
    -
    -	/* read the data */
    -	*data_len = switch_buffer_read(queue->buffer, data, requested);
    -	queue->read_bytes = queue->read_bytes + *data_len;
    -#ifdef MOD_UNIMRCP_DEBUG_AUDIO_QUEUE
    -	switch_log_printf(SWITCH_CHANNEL_UUID_LOG(queue->session_uuid), SWITCH_LOG_DEBUG, "(%s) audio queue read total = %ld\tread = %ld\trequested = %ld\n", queue->name,
    -					  queue->read_bytes, *data_len, requested);
    -	if (queue->file_read) {
    -		switch_file_write(queue->file_read, data, &len);
    -	}
    -#endif
    -
    -  done:
    -
    -	switch_mutex_unlock(queue->mutex);
    -	return status;
    -}
    -
    -/**
    - * Empty the queue
    - *
    - * @param queue the queue to empty
    - * @return SWITCH_STATUS_SUCCESS
    - */
    -static switch_status_t audio_queue_clear(audio_queue_t *queue)
    -{
    -	switch_mutex_lock(queue->mutex);
    -	switch_buffer_zero(queue->buffer);
    -	switch_thread_cond_signal(queue->cond);
    -	switch_mutex_unlock(queue->mutex);
    -	queue->read_bytes = 0;
    -	queue->write_bytes = 0;
    -	queue->waiting = 0;
    -	return SWITCH_STATUS_SUCCESS;
    -}
    -
    -/**
    - * Wake any threads waiting on this queue
    - *
    - * @param queue the queue to empty
    - * @return SWITCH_STATUS_SUCCESS
    - */
    -static switch_status_t audio_queue_signal(audio_queue_t *queue)
    -{
    -	switch_mutex_lock(queue->mutex);
    -	switch_thread_cond_signal(queue->cond);
    -	switch_mutex_unlock(queue->mutex);
    -	return SWITCH_STATUS_SUCCESS;
    -}
    -
    -/**
    - * Destroy the audio queue
    - *
    - * @param queue the queue to clean up
    - * @return SWITCH_STATUS_SUCCESS
    - */
    -static switch_status_t audio_queue_destroy(audio_queue_t *queue)
    -{
    -	if (queue) {
    -		char *name = queue->name;
    -		if (zstr(name)) {
    -			name = "";
    -		}
    -#ifdef MOD_UNIMRCP_DEBUG_AUDIO_QUEUE
    -		if (queue->file_read) {
    -			switch_file_close(queue->file_read);
    -			queue->file_read = NULL;
    -		}
    -		if (queue->file_write) {
    -			switch_file_close(queue->file_write);
    -			queue->file_write = NULL;
    -		}
    -#endif
    -		switch_log_printf(SWITCH_CHANNEL_UUID_LOG(queue->session_uuid), SWITCH_LOG_DEBUG, "(%s) audio queue destroyed\n", name);
    -	}
    -	return SWITCH_STATUS_SUCCESS;
    -}
    -
    -/**
    - * Create a speech channel
    - *
    - * @param schannel the created channel
    - * @param name the name of the channel
    - * @param session_uuid optional session associated with this channel
    - * @param type the type of channel to create
    - * @param app the application
    - * @param rate the rate to use
    - * @param pool the memory pool to use
    - * @return SWITCH_STATUS_SUCCESS if successful.  SWITCH_STATUS_FALSE if the channel cannot be allocated.
    - */
    -static switch_status_t speech_channel_create(speech_channel_t ** schannel, const char *name, const char *session_uuid, speech_channel_type_t type, mod_unimrcp_application_t *app,
    -											 uint16_t rate, switch_memory_pool_t *pool)
    -{
    -	switch_status_t status = SWITCH_STATUS_SUCCESS;
    -	speech_channel_t *schan = NULL;
    -	*schannel = NULL;
    -
    -	if ((schan = (speech_channel_t *) switch_core_alloc(pool, sizeof(speech_channel_t))) == NULL) {
    -		status = SWITCH_STATUS_FALSE;
    -		goto done;
    -	}
    -	schan->profile = NULL;
    -	schan->type = type;
    -	schan->application = app;
    -	schan->state = SPEECH_CHANNEL_CLOSED;
    -	schan->memory_pool = pool;
    -	schan->params = NULL;
    -	schan->rate = rate;
    -	schan->silence = 0;			/* L16 silence sample */
    -	schan->channel_opened = 0;
    -
    -	if (switch_mutex_init(&schan->mutex, SWITCH_MUTEX_UNNESTED, pool) != SWITCH_STATUS_SUCCESS ||
    -		switch_thread_cond_create(&schan->cond, pool) != SWITCH_STATUS_SUCCESS ||
    -		audio_queue_create(&schan->audio_queue, name, session_uuid, pool) != SWITCH_STATUS_SUCCESS) {
    -		status = SWITCH_STATUS_FALSE;
    -		goto done;
    -	}
    -	switch_core_hash_init(&schan->params);
    -	schan->data = NULL;
    -	schan->name = zstr(name) ? "" : switch_core_strdup(pool, name);
    -	schan->session_uuid = zstr(session_uuid) ? NULL : switch_core_strdup(pool, session_uuid);
    -
    -	*schannel = schan;
    -
    -  done:
    -
    -	return status;
    -}
    -
    -/**
    - * Destroy the speech channel
    - *
    - * @param schannel the channel to destroy
    - * @return SWITCH_STATUS_SUCCESS
    - */
    -static switch_status_t speech_channel_destroy(speech_channel_t *schannel)
    -{
    -	if (schannel) {
    -		/* Terminate the MRCP session if not already done */
    -		if (schannel->mutex) {
    -			switch_mutex_lock(schannel->mutex);
    -			if (schannel->state != SPEECH_CHANNEL_CLOSED) {
    -				int warned = 0;
    -				mrcp_application_session_terminate(schannel->unimrcp_session);
    -				/* wait forever for session to terminate.  Log WARNING if this starts taking too long */
    -				switch_log_printf(SWITCH_CHANNEL_UUID_LOG(schannel->session_uuid), SWITCH_LOG_DEBUG, "(%s) Waiting for MRCP session to terminate\n", schannel->name);
    -				while (schannel->state != SPEECH_CHANNEL_CLOSED) {
    -					if (switch_thread_cond_timedwait(schannel->cond, schannel->mutex, SPEECH_CHANNEL_TIMEOUT_USEC) == SWITCH_STATUS_TIMEOUT && !warned) {
    -						warned = 1;
    -						switch_log_printf(SWITCH_CHANNEL_UUID_LOG(schannel->session_uuid), SWITCH_LOG_WARNING, "(%s) MRCP session has not terminated after %d ms\n", schannel->name, SPEECH_CHANNEL_TIMEOUT_USEC / (1000));
    -					}
    -				}
    -			}
    -			switch_mutex_unlock(schannel->mutex);
    -		}
    -
    -		/* It is now safe to clean up the speech channel */
    -		if (schannel->mutex) {
    -			switch_mutex_lock(schannel->mutex);
    -		}
    -		audio_queue_destroy(schannel->audio_queue);
    -		schannel->audio_queue = NULL;
    -		if (schannel->params) {
    -			switch_core_hash_destroy(&schannel->params);
    -		}
    -		if (schannel->mutex) {
    -			switch_mutex_unlock(schannel->mutex);
    -		}
    -	}
    -
    -	return SWITCH_STATUS_SUCCESS;
    -}
    -
    -/**
    - * Create the audio termination for the speech channel
    - * @param schannel the speech channel
    - * @return the termination or NULL
    - */
    -static mpf_termination_t *speech_channel_create_mpf_termination(speech_channel_t *schannel)
    -{
    -	mpf_termination_t *termination = NULL;
    -	mpf_stream_capabilities_t *capabilities = NULL;
    -	int sample_rates;
    -
    -	if (schannel->type == SPEECH_CHANNEL_SYNTHESIZER) {
    -		capabilities = mpf_sink_stream_capabilities_create(schannel->unimrcp_session->pool);
    -	} else {
    -		capabilities = mpf_source_stream_capabilities_create(schannel->unimrcp_session->pool);
    -	}
    -	/* FreeSWITCH is capable of resampling so pick rates that are are multiples of the desired rate.
    -	 * UniMRCP should transcode whatever the MRCP server wants to use into LPCM (host-byte ordered L16) for us.
    -	 */
    -	if (schannel->rate == 16000) {
    -		sample_rates = MPF_SAMPLE_RATE_8000 | MPF_SAMPLE_RATE_16000;
    -	} else if (schannel->rate == 32000) {
    -		sample_rates = MPF_SAMPLE_RATE_8000 | MPF_SAMPLE_RATE_16000 | MPF_SAMPLE_RATE_32000;
    -	} else if (schannel->rate == 48000) {
    -		sample_rates = MPF_SAMPLE_RATE_8000 | MPF_SAMPLE_RATE_16000 | MPF_SAMPLE_RATE_48000;
    -	} else {
    -		sample_rates = MPF_SAMPLE_RATE_8000;
    -	}
    -	mpf_codec_capabilities_add(&capabilities->codecs, sample_rates, "LPCM");
    -	termination =
    -		mrcp_application_audio_termination_create(schannel->unimrcp_session, &schannel->application->audio_stream_vtable, capabilities, schannel);
    -
    -	return termination;
    -}
    -
    -/**
    - * Open the speech channel
    - *
    - * @param schannel the channel to open
    - * @param profile the profile to use
    - * @return SWITCH_STATUS_FALSE if failed, SWITCH_STATUS_RESTART if retry can be attempted with another profile, SWITCH_STATUS_SUCCESS if successful
    - */
    -static switch_status_t speech_channel_open(speech_channel_t *schannel, profile_t *profile)
    -{
    -	switch_status_t status = SWITCH_STATUS_SUCCESS;
    -	mpf_termination_t *termination = NULL;
    -	mrcp_resource_type_e resource_type;
    -	int warned = 0;
    -
    -	switch_mutex_lock(schannel->mutex);
    -
    -	/* make sure we can open channel */
    -	if (schannel->state != SPEECH_CHANNEL_CLOSED) {
    -		status = SWITCH_STATUS_FALSE;
    -		goto done;
    -	}
    -
    -	schannel->profile = profile;
    -
    -	/* create MRCP session */
    -	if ((schannel->unimrcp_session = mrcp_application_session_create(schannel->application->app, profile->name, schannel)) == NULL) {
    -		/* profile doesn't exist? */
    -		switch_log_printf(SWITCH_CHANNEL_UUID_LOG(schannel->session_uuid), SWITCH_LOG_ERROR, "(%s) Unable to create session with %s\n", schannel->name, profile->name);
    -		status = SWITCH_STATUS_RESTART;
    -		goto done;
    -	}
    -	mrcp_application_session_name_set(schannel->unimrcp_session, schannel->name);
    -
    -	/* create audio termination and add to channel */
    -	if ((termination = speech_channel_create_mpf_termination(schannel)) == NULL) {
    -		switch_log_printf(SWITCH_CHANNEL_UUID_LOG(schannel->session_uuid), SWITCH_LOG_ERROR, "(%s) Unable to create termination with %s\n", schannel->name, profile->name);
    -		mrcp_application_session_destroy(schannel->unimrcp_session);
    -		status = SWITCH_STATUS_FALSE;
    -		goto done;
    -	}
    -	if (schannel->type == SPEECH_CHANNEL_SYNTHESIZER) {
    -		resource_type = MRCP_SYNTHESIZER_RESOURCE;
    -	} else {
    -		resource_type = MRCP_RECOGNIZER_RESOURCE;
    -	}
    -	if ((schannel->unimrcp_channel = mrcp_application_channel_create(schannel->unimrcp_session, resource_type, termination, NULL, schannel)) == NULL) {
    -		switch_log_printf(SWITCH_CHANNEL_UUID_LOG(schannel->session_uuid), SWITCH_LOG_ERROR, "(%s) Unable to create channel with %s\n", schannel->name, profile->name);
    -		mrcp_application_session_destroy(schannel->unimrcp_session);
    -		status = SWITCH_STATUS_FALSE;
    -		goto done;
    -	}
    -
    -	/* add channel to session... this establishes the connection to the MRCP server */
    -	if (mrcp_application_channel_add(schannel->unimrcp_session, schannel->unimrcp_channel) != TRUE) {
    -		switch_log_printf(SWITCH_CHANNEL_UUID_LOG(schannel->session_uuid), SWITCH_LOG_ERROR, "(%s) Unable to add channel to session with %s\n", schannel->name, profile->name);
    -		mrcp_application_session_destroy(schannel->unimrcp_session);
    -		status = SWITCH_STATUS_FALSE;
    -		goto done;
    -	}
    -
    -	/* wait for channel to be ready */
    -	warned = 0;
    -	while (schannel->state == SPEECH_CHANNEL_CLOSED) {
    -		if (switch_thread_cond_timedwait(schannel->cond, schannel->mutex, SPEECH_CHANNEL_TIMEOUT_USEC) == SWITCH_STATUS_TIMEOUT && !warned) {
    -			warned = 1;
    -			switch_log_printf(SWITCH_CHANNEL_UUID_LOG(schannel->session_uuid), SWITCH_LOG_WARNING, "(%s) MRCP session has not opened after %d ms\n", schannel->name, SPEECH_CHANNEL_TIMEOUT_USEC / (1000));
    -		}
    -	}
    -	if (schannel->state == SPEECH_CHANNEL_READY) {
    -		switch_log_printf(SWITCH_CHANNEL_UUID_LOG(schannel->session_uuid), SWITCH_LOG_DEBUG, "(%s) channel is ready\n", schannel->name);
    -	} else if (schannel->state == SPEECH_CHANNEL_CLOSED) {
    -		switch_log_printf(SWITCH_CHANNEL_UUID_LOG(schannel->session_uuid), SWITCH_LOG_ERROR, "(%s) Timed out waiting for channel to be ready\n", schannel->name);
    -		/* can't retry */
    -		status = SWITCH_STATUS_FALSE;
    -	} else if (schannel->state == SPEECH_CHANNEL_ERROR) {
    -		switch_log_printf(SWITCH_CHANNEL_UUID_LOG(schannel->session_uuid), SWITCH_LOG_DEBUG, "(%s) Terminating MRCP session\n", schannel->name);
    -		if (!mrcp_application_session_terminate(schannel->unimrcp_session)) {
    -			switch_log_printf(SWITCH_CHANNEL_UUID_LOG(schannel->session_uuid), SWITCH_LOG_WARNING, "(%s) Unable to terminate application session\n", schannel->name);
    -			status = SWITCH_STATUS_FALSE;
    -			goto done;
    -		}
    -
    -		/* Wait for session to be cleaned up */
    -		warned = 0;
    -		while (schannel->state == SPEECH_CHANNEL_ERROR) {
    -			if (switch_thread_cond_timedwait(schannel->cond, schannel->mutex, SPEECH_CHANNEL_TIMEOUT_USEC) == SWITCH_STATUS_TIMEOUT && !warned) {
    -				warned = 1;
    -				switch_log_printf(SWITCH_CHANNEL_UUID_LOG(schannel->session_uuid), SWITCH_LOG_WARNING, "(%s) MRCP session has not cleaned up after %d ms\n", schannel->name, SPEECH_CHANNEL_TIMEOUT_USEC / (1000));
    -			}
    -		}
    -		if (schannel->state != SPEECH_CHANNEL_CLOSED) {
    -			/* major issue... can't retry */
    -			status = SWITCH_STATUS_FALSE;
    -		} else {
    -			/* failed to open profile, retry is allowed */
    -			status = SWITCH_STATUS_RESTART;
    -		}
    -	}
    -
    -  done:
    -
    -	switch_mutex_unlock(schannel->mutex);
    -	return status;
    -}
    -
    -/**
    - * Send SPEAK request to synthesizer
    - *
    - * @param schannel the synthesizer channel
    - * @param text The text to speak.  This may be plain text or SSML.
    - * @return SWITCH_STATUS_SUCCESS if successful
    - */
    -static switch_status_t synth_channel_speak(speech_channel_t *schannel, const char *text)
    -{
    -	switch_status_t status = SWITCH_STATUS_SUCCESS;
    -	mrcp_message_t *mrcp_message = NULL;
    -	mrcp_generic_header_t *generic_header = NULL;
    -	mrcp_synth_header_t *synth_header = NULL;
    -	int warned = 0;
    -
    -	switch_mutex_lock(schannel->mutex);
    -	if (schannel->state != SPEECH_CHANNEL_READY) {
    -		status = SWITCH_STATUS_FALSE;
    -		goto done;
    -	}
    -
    -	mrcp_message = mrcp_application_message_create(schannel->unimrcp_session, schannel->unimrcp_channel, SYNTHESIZER_SPEAK);
    -	if (mrcp_message == NULL) {
    -		switch_log_printf(SWITCH_CHANNEL_UUID_LOG(schannel->session_uuid), SWITCH_LOG_ERROR, "(%s) Failed to create SPEAK message\n", schannel->name);
    -		status = SWITCH_STATUS_FALSE;
    -		goto done;
    -	}
    -
    -	/* set generic header fields (content-type) */
    -	if ((generic_header = (mrcp_generic_header_t *) mrcp_generic_header_prepare(mrcp_message)) == NULL) {
    -		status = SWITCH_STATUS_FALSE;
    -		goto done;
    -	}
    -
    -	/* good enough way of determining SSML or plain text body */
    -	if (text_starts_with(text, XML_ID) || text_starts_with(text, SSML_ID)) {
    -		apt_string_assign(&generic_header->content_type, schannel->profile->ssml_mime_type, mrcp_message->pool);
    -	} else {
    -		apt_string_assign(&generic_header->content_type, MIME_TYPE_PLAIN_TEXT, mrcp_message->pool);
    -	}
    -	mrcp_generic_header_property_add(mrcp_message, GENERIC_HEADER_CONTENT_TYPE);
    -
    -	/* set synthesizer header fields (voice, rate, etc.) */
    -	if ((synth_header = (mrcp_synth_header_t *) mrcp_resource_header_prepare(mrcp_message)) == NULL) {
    -		status = SWITCH_STATUS_FALSE;
    -		goto done;
    -	}
    -
    -	/* add params to MRCP message */
    -	synth_channel_set_params(schannel, mrcp_message, generic_header, synth_header);
    -
    -	/* set body (plain text or SSML) */
    -	apt_string_assign(&mrcp_message->body, text, schannel->memory_pool);
    -
    -	/* Empty audio queue and send SPEAK to MRCP server */
    -	audio_queue_clear(schannel->audio_queue);
    -	if (mrcp_application_message_send(schannel->unimrcp_session, schannel->unimrcp_channel, mrcp_message) == FALSE) {
    -		status = SWITCH_STATUS_FALSE;
    -		goto done;
    -	}
    -	/* wait for IN-PROGRESS */
    -	while (schannel->state == SPEECH_CHANNEL_READY) {
    -		if (switch_thread_cond_timedwait(schannel->cond, schannel->mutex, SPEECH_CHANNEL_TIMEOUT_USEC) == SWITCH_STATUS_TIMEOUT && !warned) {
    -			warned = 1;
    -			switch_log_printf(SWITCH_CHANNEL_UUID_LOG(schannel->session_uuid), SWITCH_LOG_WARNING, "(%s) SPEAK IN-PROGRESS not received after %d ms\n", schannel->name, SPEECH_CHANNEL_TIMEOUT_USEC / (1000));
    -		}
    -	}
    -	if (schannel->state != SPEECH_CHANNEL_PROCESSING) {
    -		status = SWITCH_STATUS_FALSE;
    -		goto done;
    -	}
    -
    -  done:
    -
    -	switch_mutex_unlock(schannel->mutex);
    -	return status;
    -}
    -
    -/**
    - * Set parameters in a synthesizer MRCP header
    - *
    - * @param schannel the speech channel containing the params
    - * @param msg the MRCP message to set
    - * @param gen_hdr the generic headers to set
    - * @param synth_hdr the synthesizer headers to set
    - * @return SWITCH_STATUS_SUCCESS
    - */
    -static switch_status_t synth_channel_set_params(speech_channel_t *schannel, mrcp_message_t *msg, mrcp_generic_header_t *gen_hdr,
    -												mrcp_synth_header_t *synth_hdr)
    -{
    -	/* loop through each param and add to synth header or vendor-specific-params */
    -	switch_hash_index_t *hi = NULL;
    -	for (hi = switch_core_hash_first(schannel->params); hi; hi = switch_core_hash_next(&hi)) {
    -		char *param_name = NULL, *param_val = NULL;
    -		const void *key;
    -		void *val;
    -		switch_core_hash_this(hi, &key, NULL, &val);
    -		param_name = (char *) key;
    -		param_val = (char *) val;
    -		if (!zstr(param_name) && !zstr(param_val)) {
    -			unimrcp_param_id_t *id = (unimrcp_param_id_t *) switch_core_hash_find(schannel->application->param_id_map, param_name);
    -			if (id) {
    -				switch_log_printf(SWITCH_CHANNEL_UUID_LOG(schannel->session_uuid), SWITCH_LOG_DEBUG, "(%s) %s: %s\n", schannel->name, param_name, param_val);
    -				synth_channel_set_header(schannel, id->id, param_val, msg, synth_hdr);
    -			} else {
    -				apt_str_t apt_param_name = { 0 };
    -				apt_str_t apt_param_val = { 0 };
    -
    -				/* this is probably a vendor-specific MRCP param */
    -				switch_log_printf(SWITCH_CHANNEL_UUID_LOG(schannel->session_uuid), SWITCH_LOG_DEBUG, "(%s) (vendor-specific value) %s: %s\n", schannel->name, param_name, param_val);
    -				apt_string_set(&apt_param_name, param_name);	/* copy isn't necessary since apt_pair_array_append will do it */
    -				apt_string_set(&apt_param_val, param_val);
    -				if (!gen_hdr->vendor_specific_params) {
    -					switch_log_printf(SWITCH_CHANNEL_UUID_LOG(schannel->session_uuid), SWITCH_LOG_DEBUG, "(%s) creating vendor specific pair array\n", schannel->name);
    -					gen_hdr->vendor_specific_params = apt_pair_array_create(10, msg->pool);
    -				}
    -				apt_pair_array_append(gen_hdr->vendor_specific_params, &apt_param_name, &apt_param_val, msg->pool);
    -			}
    -		}
    -	}
    -
    -	if (gen_hdr->vendor_specific_params) {
    -		mrcp_generic_header_property_add(msg, GENERIC_HEADER_VENDOR_SPECIFIC_PARAMS);
    -	}
    -
    -	return SWITCH_STATUS_SUCCESS;
    -}
    -
    -/**
    - * Set parameter in a synthesizer MRCP header
    - *
    - * @param schannel the speech channel containing the param
    - * @param id the UniMRCP header enum
    - * @param val the value to set
    - * @param msg the MRCP message to set
    - * @param synth_hdr the synthesizer header to set
    - * @return SWITCH_STATUS_SUCCESS
    - */
    -static switch_status_t synth_channel_set_header(speech_channel_t *schannel, int id, char *val, mrcp_message_t *msg, mrcp_synth_header_t *synth_hdr)
    -{
    -	switch (id) {
    -	case SYNTHESIZER_HEADER_VOICE_GENDER:
    -		if (!strcasecmp("male", val)) {
    -			synth_hdr->voice_param.gender = VOICE_GENDER_MALE;
    -		} else if (!strcasecmp("female", val)) {
    -			synth_hdr->voice_param.gender = VOICE_GENDER_FEMALE;
    -		} else if (!strcasecmp("neutral", val)) {
    -			synth_hdr->voice_param.gender = VOICE_GENDER_NEUTRAL;
    -		} else {
    -			switch_log_printf(SWITCH_CHANNEL_UUID_LOG(schannel->session_uuid), SWITCH_LOG_WARNING, "(%s) ignoring invalid voice gender, %s\n", schannel->name, val);
    -			break;
    -		}
    -		mrcp_resource_header_property_add(msg, SYNTHESIZER_HEADER_VOICE_GENDER);
    -		break;
    -
    -	case SYNTHESIZER_HEADER_VOICE_AGE:{
    -			int age = atoi(val);
    -			if (age > 0 && age < 1000) {
    -				synth_hdr->voice_param.age = age;
    -				mrcp_resource_header_property_add(msg, SYNTHESIZER_HEADER_VOICE_AGE);
    -			} else {
    -				switch_log_printf(SWITCH_CHANNEL_UUID_LOG(schannel->session_uuid), SWITCH_LOG_WARNING, "(%s) ignoring invalid voice age, %s\n", schannel->name, val);
    -			}
    -			break;
    -		}
    -
    -	case SYNTHESIZER_HEADER_VOICE_VARIANT:{
    -			int variant = atoi(val);
    -			if (variant > 0) {
    -				synth_hdr->voice_param.variant = variant;
    -				mrcp_resource_header_property_add(msg, SYNTHESIZER_HEADER_VOICE_VARIANT);
    -			} else {
    -				switch_log_printf(SWITCH_CHANNEL_UUID_LOG(schannel->session_uuid), SWITCH_LOG_WARNING, "(%s) ignoring invalid voice variant, %s\n", schannel->name, val);
    -			}
    -			break;
    -		}
    -
    -	case SYNTHESIZER_HEADER_VOICE_NAME:
    -		apt_string_assign(&synth_hdr->voice_param.name, val, msg->pool);
    -		mrcp_resource_header_property_add(msg, SYNTHESIZER_HEADER_VOICE_NAME);
    -		break;
    -
    -	case SYNTHESIZER_HEADER_KILL_ON_BARGE_IN:
    -		synth_hdr->kill_on_barge_in = !strcasecmp("true", val);
    -		mrcp_resource_header_property_add(msg, SYNTHESIZER_HEADER_KILL_ON_BARGE_IN);
    -		break;
    -
    -	case SYNTHESIZER_HEADER_PROSODY_VOLUME:
    -		if (switch_isdigit(*val) || *val == '.') {
    -			synth_hdr->prosody_param.volume.type = PROSODY_VOLUME_TYPE_NUMERIC;
    -			synth_hdr->prosody_param.volume.value.numeric = (float) atof(val);
    -		} else if (*val == '+' || *val == '-') {
    -			synth_hdr->prosody_param.volume.type = PROSODY_VOLUME_TYPE_RELATIVE_CHANGE;
    -			synth_hdr->prosody_param.volume.value.relative = (float) atof(val);
    -		} else if (!strcasecmp("silent", val)) {
    -			synth_hdr->prosody_param.volume.type = PROSODY_VOLUME_TYPE_LABEL;
    -			synth_hdr->prosody_param.volume.value.label = PROSODY_VOLUME_SILENT;
    -		} else if (!strcasecmp("x-soft", val)) {
    -			synth_hdr->prosody_param.volume.type = PROSODY_VOLUME_TYPE_LABEL;
    -			synth_hdr->prosody_param.volume.value.label = PROSODY_VOLUME_XSOFT;
    -		} else if (!strcasecmp("soft", val)) {
    -			synth_hdr->prosody_param.volume.type = PROSODY_VOLUME_TYPE_LABEL;
    -			synth_hdr->prosody_param.volume.value.label = PROSODY_VOLUME_SOFT;
    -		} else if (!strcasecmp("medium", val)) {
    -			synth_hdr->prosody_param.volume.type = PROSODY_VOLUME_TYPE_LABEL;
    -			synth_hdr->prosody_param.volume.value.label = PROSODY_VOLUME_MEDIUM;
    -		} else if (!strcasecmp("loud", val)) {
    -			synth_hdr->prosody_param.volume.type = PROSODY_VOLUME_TYPE_LABEL;
    -			synth_hdr->prosody_param.volume.value.label = PROSODY_VOLUME_LOUD;
    -		} else if (!strcasecmp("x-loud", val)) {
    -			synth_hdr->prosody_param.volume.type = PROSODY_VOLUME_TYPE_LABEL;
    -			synth_hdr->prosody_param.volume.value.label = PROSODY_VOLUME_XLOUD;
    -		} else if (!strcasecmp("default", val)) {
    -			synth_hdr->prosody_param.volume.type = PROSODY_VOLUME_TYPE_LABEL;
    -			synth_hdr->prosody_param.volume.value.label = PROSODY_VOLUME_DEFAULT;
    -		} else {
    -			switch_log_printf(SWITCH_CHANNEL_UUID_LOG(schannel->session_uuid), SWITCH_LOG_WARNING, "(%s) ignoring invalid prosody volume, %s\n", schannel->name, val);
    -			break;
    -		}
    -		mrcp_resource_header_property_add(msg, SYNTHESIZER_HEADER_PROSODY_VOLUME);
    -		break;
    -
    -	case SYNTHESIZER_HEADER_PROSODY_RATE:
    -		if (switch_isdigit(*val) || *val == '.' || *val == '-') {
    -			synth_hdr->prosody_param.rate.type = PROSODY_RATE_TYPE_RELATIVE_CHANGE;
    -			synth_hdr->prosody_param.rate.value.relative = (float) atof(val);
    -		} else if (!strcasecmp("x-slow", val)) {
    -			synth_hdr->prosody_param.rate.type = PROSODY_RATE_TYPE_LABEL;
    -			synth_hdr->prosody_param.rate.value.label = PROSODY_RATE_XSLOW;
    -		} else if (!strcasecmp("slow", val)) {
    -			synth_hdr->prosody_param.rate.type = PROSODY_RATE_TYPE_LABEL;
    -			synth_hdr->prosody_param.rate.value.label = PROSODY_RATE_SLOW;
    -		} else if (!strcasecmp("medium", val)) {
    -			synth_hdr->prosody_param.rate.type = PROSODY_RATE_TYPE_LABEL;
    -			synth_hdr->prosody_param.rate.value.label = PROSODY_RATE_MEDIUM;
    -		} else if (!strcasecmp("fast", val)) {
    -			synth_hdr->prosody_param.rate.type = PROSODY_RATE_TYPE_LABEL;
    -			synth_hdr->prosody_param.rate.value.label = PROSODY_RATE_FAST;
    -		} else if (!strcasecmp("x-fast", val)) {
    -			synth_hdr->prosody_param.rate.type = PROSODY_RATE_TYPE_LABEL;
    -			synth_hdr->prosody_param.rate.value.label = PROSODY_RATE_XFAST;
    -		} else if (!strcasecmp("default", val)) {
    -			synth_hdr->prosody_param.rate.type = PROSODY_RATE_TYPE_LABEL;
    -			synth_hdr->prosody_param.rate.value.label = PROSODY_RATE_DEFAULT;
    -		} else {
    -			switch_log_printf(SWITCH_CHANNEL_UUID_LOG(schannel->session_uuid), SWITCH_LOG_WARNING, "(%s) ignoring invalid prosody rate, %s\n", schannel->name, val);
    -			break;
    -		}
    -		mrcp_resource_header_property_add(msg, SYNTHESIZER_HEADER_PROSODY_RATE);
    -		break;
    -
    -	case SYNTHESIZER_HEADER_SPEECH_LANGUAGE:
    -		apt_string_assign(&synth_hdr->speech_language, val, msg->pool);
    -		mrcp_resource_header_property_add(msg, SYNTHESIZER_HEADER_SPEECH_LANGUAGE);
    -		break;
    -
    -		/* unsupported by this module */
    -	case SYNTHESIZER_HEADER_JUMP_SIZE:
    -	case SYNTHESIZER_HEADER_SPEAKER_PROFILE:
    -	case SYNTHESIZER_HEADER_COMPLETION_CAUSE:
    -	case SYNTHESIZER_HEADER_COMPLETION_REASON:
    -	case SYNTHESIZER_HEADER_SPEECH_MARKER:
    -	case SYNTHESIZER_HEADER_FETCH_HINT:
    -	case SYNTHESIZER_HEADER_AUDIO_FETCH_HINT:
    -	case SYNTHESIZER_HEADER_FAILED_URI:
    -	case SYNTHESIZER_HEADER_FAILED_URI_CAUSE:
    -	case SYNTHESIZER_HEADER_SPEAK_RESTART:
    -	case SYNTHESIZER_HEADER_SPEAK_LENGTH:
    -	case SYNTHESIZER_HEADER_LOAD_LEXICON:
    -	case SYNTHESIZER_HEADER_LEXICON_SEARCH_ORDER:
    -	default:
    -		switch_log_printf(SWITCH_CHANNEL_UUID_LOG(schannel->session_uuid), SWITCH_LOG_ERROR, "(%s) unsupported SYNTHESIZER_HEADER type\n", schannel->name);
    -	}
    -
    -	return SWITCH_STATUS_SUCCESS;
    -}
    -
    -/**
    - * Stop SPEAK/RECOGNIZE request on speech channel
    - *
    - * @param schannel the channel
    - * @return SWITCH_STATUS_SUCCESS if successful
    - */
    -static switch_status_t speech_channel_stop(speech_channel_t *schannel)
    -{
    -	switch_status_t status = SWITCH_STATUS_SUCCESS;
    -	int warned = 0;
    -	switch_mutex_lock(schannel->mutex);
    -
    -	if (schannel->state == SPEECH_CHANNEL_PROCESSING) {
    -		mrcp_method_id method;
    -		mrcp_message_t *mrcp_message;
    -		if (schannel->type == SPEECH_CHANNEL_SYNTHESIZER) {
    -			method = SYNTHESIZER_STOP;
    -		} else {
    -			method = RECOGNIZER_STOP;
    -		}
    -		switch_log_printf(SWITCH_CHANNEL_UUID_LOG(schannel->session_uuid), SWITCH_LOG_DEBUG, "(%s) Stopping %s\n", schannel->name, speech_channel_type_to_string(schannel->type));
    -		/* Send STOP to MRCP server */
    -		mrcp_message = mrcp_application_message_create(schannel->unimrcp_session, schannel->unimrcp_channel, method);
    -		if (mrcp_message == NULL) {
    -			switch_log_printf(SWITCH_CHANNEL_UUID_LOG(schannel->session_uuid), SWITCH_LOG_ERROR, "(%s) Failed to create STOP message\n", schannel->name);
    -			status = SWITCH_STATUS_FALSE;
    -			goto done;
    -		}
    -		mrcp_application_message_send(schannel->unimrcp_session, schannel->unimrcp_channel, mrcp_message);
    -		while (schannel->state == SPEECH_CHANNEL_PROCESSING) {
    -			if (switch_thread_cond_timedwait(schannel->cond, schannel->mutex, SPEECH_CHANNEL_TIMEOUT_USEC) == SWITCH_STATUS_TIMEOUT && !warned) {
    -				warned = 1;
    -				switch_log_printf(SWITCH_CHANNEL_UUID_LOG(schannel->session_uuid), SWITCH_LOG_ERROR, "(%s) STOP has not COMPLETED after %d ms.\n", schannel->name, SPEECH_CHANNEL_TIMEOUT_USEC / (1000));
    -			}
    -		}
    -
    -		if (schannel->state == SPEECH_CHANNEL_ERROR) {
    -			switch_log_printf(SWITCH_CHANNEL_UUID_LOG(schannel->session_uuid), SWITCH_LOG_ERROR, "(%s) Channel error\n", schannel->name);
    -			schannel->state = SPEECH_CHANNEL_ERROR;
    -			status = SWITCH_STATUS_FALSE;
    -			goto done;
    -		}
    -		switch_log_printf(SWITCH_CHANNEL_UUID_LOG(schannel->session_uuid), SWITCH_LOG_DEBUG, "(%s) %s stopped\n", schannel->name, speech_channel_type_to_string(schannel->type));
    -	} else if (schannel->state == SPEECH_CHANNEL_DONE) {
    -		speech_channel_set_state_unlocked(schannel, SPEECH_CHANNEL_READY);
    -	}
    -
    -  done:
    -
    -	switch_mutex_unlock(schannel->mutex);
    -	return status;
    -}
    -
    -/**
    - * Convert speech channel type into a string
    - *
    - * @param type the speech channel type
    - * @return the speech channel type as a string
    - */
    -static const char *speech_channel_type_to_string(speech_channel_type_t type)
    -{
    -	switch (type) {
    -	case SPEECH_CHANNEL_SYNTHESIZER:
    -		return "SYNTHESIZER";
    -	case SPEECH_CHANNEL_RECOGNIZER:
    -		return "RECOGNIZER";
    -	}
    -
    -	return "UNKNOWN";
    -}
    -
    -/**
    - * Set parameter
    - *
    - * @param schannel the speech channel
    - * @param param the parameter to set
    - * @param val the parameter value
    - * @return SWITCH_STATUS_SUCCESS if successful
    - */
    -static switch_status_t speech_channel_set_param(speech_channel_t *schannel, const char *param, const char *val)
    -{
    -	switch_mutex_lock(schannel->mutex);
    -	if (!zstr(param) && val != NULL) {
    -		/* check if this is a FreeSWITCH param that needs to be translated to an MRCP param: e.g. voice ==> voice-name */
    -		const char *v;
    -		const char *p = switch_core_hash_find(schannel->application->fs_param_map, param);
    -		if (!p) {
    -			p = switch_core_strdup(schannel->memory_pool, param);
    -		}
    -		v = switch_core_strdup(schannel->memory_pool, val);
    -		switch_log_printf(SWITCH_CHANNEL_UUID_LOG(schannel->session_uuid), SWITCH_LOG_DEBUG, "(%s) param = %s, val = %s\n", schannel->name, p, v);
    -		switch_core_hash_insert(schannel->params, p, v);
    -	}
    -	switch_mutex_unlock(schannel->mutex);
    -	return SWITCH_STATUS_SUCCESS;
    -}
    -
    -/**
    - * Write synthesized speech / speech to be recognized
    - *
    - * @param schannel the speech channel
    - * @param data the speech data
    - * @param the number of octets to write / actual number written
    - * @return SWITCH_STATUS_SUCCESS
    - */
    -static switch_status_t speech_channel_write(speech_channel_t *schannel, void *data, switch_size_t *len)
    -{
    -	if (!schannel || !schannel->mutex || !schannel->audio_queue) {
    -		return SWITCH_STATUS_FALSE;
    -	}
    -
    -	if (schannel->state == SPEECH_CHANNEL_PROCESSING) {
    -		audio_queue_write(schannel->audio_queue, data, len);
    -	}
    -
    -	return SWITCH_STATUS_SUCCESS;
    -}
    -
    -/**
    - * Read synthesized speech / speech to be recognized
    - *
    - * @param schannel the speech channel
    - * @param data the speech data
    - * @param the number of octets to read / actual number read
    - * @param block 1 if blocking is allowed
    - * @return SWITCH_STATUS_SUCCESS if successful, SWITCH_STATUS_BREAK if channel is no longer processing
    - */
    -static switch_status_t speech_channel_read(speech_channel_t *schannel, void *data, switch_size_t *len, int block)
    -{
    -	switch_status_t status = SWITCH_STATUS_SUCCESS;
    -
    -	if (!schannel || !schannel->mutex || !schannel->audio_queue) {
    -		return SWITCH_STATUS_FALSE;
    -	}
    -
    -	switch (schannel->state) {
    -	case SPEECH_CHANNEL_DONE:
    -		/* pull any remaining audio - never blocking */
    -		if (audio_queue_read(schannel->audio_queue, data, len, 0) == SWITCH_STATUS_FALSE) {
    -			/* all frames read */
    -			status = SWITCH_STATUS_BREAK;
    -		}
    -		break;
    -	case SPEECH_CHANNEL_PROCESSING:
    -		/* IN-PROGRESS */
    -		audio_queue_read(schannel->audio_queue, data, len, block);
    -		break;
    -	default:
    -		status = SWITCH_STATUS_BREAK;
    -	}
    -
    -	return status;
    -}
    -
    -/**
    - * Convert channel state to string
    - *
    - * @param state the channel state
    - * @return string representation of the state
    - */
    -static const char *speech_channel_state_to_string(speech_channel_state_t state)
    -{
    -	switch (state) {
    -	case SPEECH_CHANNEL_CLOSED:
    -		return "CLOSED";
    -	case SPEECH_CHANNEL_READY:
    -		return "READY";
    -	case SPEECH_CHANNEL_PROCESSING:
    -		return "PROCESSING";
    -	case SPEECH_CHANNEL_DONE:
    -		return "DONE";
    -	case SPEECH_CHANNEL_ERROR:
    -		return "ERROR";
    -	}
    -
    -	return "UNKNOWN";
    -}
    -
    -/**
    - * Set the current channel state
    - *
    - * @param schannel the channel
    - * @param state the new channel state
    - * @return SWITCH_STATUS_SUCCESS, if successful
    - */
    -static switch_status_t speech_channel_set_state(speech_channel_t *schannel, speech_channel_state_t state)
    -{
    -	switch_status_t status;
    -	switch_mutex_lock(schannel->mutex);
    -	status = speech_channel_set_state_unlocked(schannel, state);
    -	switch_mutex_unlock(schannel->mutex);
    -	return status;
    -}
    -
    -/**
    - * Use this function to set the current channel state without locking the
    - * speech channel.  Do this if you already have the speech channel locked.
    - *
    - * @param schannel the channel
    - * @param state the new channel state
    - * @return SWITCH_STATUS_SUCCESS
    - */
    -static switch_status_t speech_channel_set_state_unlocked(speech_channel_t *schannel, speech_channel_state_t state)
    -{
    -	if (schannel->state == SPEECH_CHANNEL_PROCESSING && state != SPEECH_CHANNEL_PROCESSING) {
    -		/* wake anyone waiting for audio data */
    -		audio_queue_signal(schannel->audio_queue);
    -	}
    -
    -	switch_log_printf(SWITCH_CHANNEL_UUID_LOG(schannel->session_uuid), SWITCH_LOG_DEBUG, "(%s) %s ==> %s\n", schannel->name, speech_channel_state_to_string(schannel->state),
    -					  speech_channel_state_to_string(state));
    -	schannel->state = state;
    -	switch_thread_cond_signal(schannel->cond);
    -	return SWITCH_STATUS_SUCCESS;
    -}
    -
    -/**
    - * Process speech_open request from FreeSWITCH.  This is expected to be called before every tts request made
    - * with synth_speech_feed_tts(), though the FreeSWITCH code has the option to cache the speech handle between
    - * TTS requests.
    - *
    - * @param sh the FreeSWITCH speech handle
    - * @param voice_name the voice to use
    - * @param rate the sampling rate requested
    - * @param channels the number of channels requested
    - * @param flags other options
    - * @return SWITCH_STATUS_SUCCESS if successful, otherwise SWITCH_STATUS_FALSE
    - */
    -static switch_status_t synth_speech_open(switch_speech_handle_t *sh, const char *voice_name, int rate, int channels, switch_speech_flag_t *flags)
    -{
    -	switch_status_t status = SWITCH_STATUS_SUCCESS;
    -	speech_channel_t *schannel = NULL;
    -	const char *profile_name = sh->param;
    -	profile_t *profile = NULL;
    -	int speech_channel_number = get_next_speech_channel_number();
    -	char *name = NULL;
    -	char *session_uuid = NULL;
    -	switch_hash_index_t *hi = NULL;
    -
    -	/* Name the channel */
    -	if (profile_name && strchr(profile_name, ':')) {
    -		/* Profile has session name appended to it.  Pick it out */
    -		profile_name = switch_core_strdup(sh->memory_pool, profile_name);
    -		session_uuid = strchr(profile_name, ':');
    -		*session_uuid = '\0';
    -		session_uuid++;
    -		session_uuid = switch_core_strdup(sh->memory_pool, session_uuid);
    -	} else {
    -		/* check if session is associated w/ this memory pool */
    -		switch_core_session_t *session = switch_core_memory_pool_get_data(sh->memory_pool, "__session");
    -		if (session) {
    -			session_uuid = switch_core_session_get_uuid(session);
    -		}
    -	}
    -	name = switch_core_sprintf(sh->memory_pool, "TTS-%d", speech_channel_number);
    -
    -	switch_log_printf(SWITCH_CHANNEL_UUID_LOG(session_uuid), SWITCH_LOG_INFO,
    -					  "speech_handle: name = %s, rate = %d, speed = %d, samples = %d, voice = %s, engine = %s, param = %s\n", sh->name, sh->rate,
    -					  sh->speed, sh->samples, sh->voice, sh->engine, sh->param);
    -	switch_log_printf(SWITCH_CHANNEL_UUID_LOG(session_uuid), SWITCH_LOG_INFO, "voice = %s, rate = %d\n", voice_name, rate);
    -
    -	/* Allocate the channel */
    -	if (speech_channel_create(&schannel, name, session_uuid, SPEECH_CHANNEL_SYNTHESIZER, &globals.synth, (uint16_t) rate, sh->memory_pool) != SWITCH_STATUS_SUCCESS) {
    -		status = SWITCH_STATUS_FALSE;
    -		goto done;
    -	}
    -	sh->private_info = schannel;
    -	schannel->fsh = sh;
    -
    -	/* Open the channel */
    -	if (zstr(profile_name)) {
    -		profile_name = globals.unimrcp_default_synth_profile;
    -	}
    -	profile = (profile_t *) switch_core_hash_find(globals.profiles, profile_name);
    -	if (!profile) {
    -		switch_log_printf(SWITCH_CHANNEL_UUID_LOG(session_uuid), SWITCH_LOG_ERROR, "(%s) Can't find profile, %s\n", name, profile_name);
    -		status = SWITCH_STATUS_FALSE;
    -		goto done;
    -	}
    -	if ((status = speech_channel_open(schannel, profile)) != SWITCH_STATUS_SUCCESS) {
    -		goto done;
    -	}
    -
    -	/* Set session TTS params */
    -	if (!zstr(voice_name)) {
    -		speech_channel_set_param(schannel, "Voice-Name", voice_name);
    -	}
    -
    -	/* Set default TTS params */
    -	for (hi = switch_core_hash_first(profile->default_synth_params); hi; hi = switch_core_hash_next(&hi)) {
    -		char *param_name = NULL, *param_val = NULL;
    -		const void *key;
    -		void *val;
    -		switch_core_hash_this(hi, &key, NULL, &val);
    -		param_name = (char *) key;
    -		param_val = (char *) val;
    -		speech_channel_set_param(schannel, param_name, param_val);
    -	}
    -
    -  done:
    -
    -	return status;
    -}
    -
    -/**
    - * Process speech_close request from FreeSWITCH.  This is called after the TTS request has completed
    - * and FreeSWITCH does not wish to cache the speech handle for another request.
    - *
    - * @param sh the FreeSWITCH speech handle
    - * @param flags other options
    - * @return SWITCH_STATUS_SUCCESS
    - */
    -static switch_status_t synth_speech_close(switch_speech_handle_t *sh, switch_speech_flag_t *flags)
    -{
    -	speech_channel_t *schannel = (speech_channel_t *) sh->private_info;
    -	speech_channel_stop(schannel);
    -	speech_channel_destroy(schannel);
    -	return SWITCH_STATUS_SUCCESS;
    -}
    -
    -/**
    - * Process feed_tts request from FreeSWITCH.  This is called by FreeSWITCH after speech_open.
    - * Send SPEAK request to MRCP server.
    - *
    - * @param sh the FreeSWITCH speech handle
    - * @param text the text to speak.  This could be plain text, ssml, vxml, etc...  this function will figure it out.
    - * @param flags other options
    - * @return SWITCH_STATUS_SUCCESS if TTS started successfully, SWITCH_STATUS_FALSE otherwise.
    - */
    -static switch_status_t synth_speech_feed_tts(switch_speech_handle_t *sh, char *text, switch_speech_flag_t *flags)
    -{
    -	switch_status_t status = SWITCH_STATUS_SUCCESS;
    -	speech_channel_t *schannel = (speech_channel_t *) sh->private_info;
    -
    -	if (zstr(text)) {
    -		status = SWITCH_STATUS_FALSE;
    -	} else {
    -		status = synth_channel_speak(schannel, text);
    -	}
    -	return status;
    -}
    -
    -/**
    - * Process read_tts request from FreeSWITCH.  FreeSWITCH is expecting L16 host byte ordered data.  We must return
    - * exactly what is requested, otherwise FreeSWITCH won't play any audio.  Pad the data with silence, if necessary.
    - *
    - * @param sh the FreeSWITCH speech handle
    - * @param data the read data
    - * @param datalen the amount of data requested / amount of data read
    - * @param flags other options
    - * @return SWITCH_STATUS_SUCCESS if data was read, SWITCH_STATUS_BREAK if TTS is done
    - */
    -static switch_status_t synth_speech_read_tts(switch_speech_handle_t *sh, void *data, switch_size_t *datalen, switch_speech_flag_t *flags)
    -{
    -	switch_status_t status = SWITCH_STATUS_SUCCESS;
    -	switch_size_t bytes_read;
    -	speech_channel_t *schannel = (speech_channel_t *) sh->private_info;
    -	bytes_read = *datalen;
    -	if (speech_channel_read(schannel, data, &bytes_read, (*flags & SWITCH_SPEECH_FLAG_BLOCKING)) == SWITCH_STATUS_SUCCESS) {
    -		/* pad data, if not enough read */
    -		if (bytes_read < *datalen) {
    -#ifdef MOD_UNIMRCP_DEBUG_AUDIO_QUEUE
    -			switch_log_printf(SWITCH_CHANNEL_UUID_LOG(schannel->session_uuid), SWITCH_LOG_DEBUG, "(%s) adding %ld bytes of padding\n", schannel->name, *datalen - bytes_read);
    -#endif
    -			memset((uint8_t *) data + bytes_read, schannel->silence, *datalen - bytes_read);
    -		}
    -	} else {
    -		/* ready for next speak request */
    -		speech_channel_set_state(schannel, SPEECH_CHANNEL_READY);
    -		*datalen = 0;
    -		status = SWITCH_STATUS_BREAK;
    -	}
    -
    -	/* report negotiated sample rate back to FreeSWITCH */
    -	sh->native_rate = schannel->rate;
    -
    -	return status;
    -}
    -
    -/**
    - * Process flush_tts request from FreeSWITCH.  Interrupt current TTS request with STOP.
    - * This method is called by FreeSWITCH after a TTS request has finished, or if a request needs to be interrupted.
    - *
    - * @param sh the FreeSWITCH speech handle
    - */
    -static void synth_speech_flush_tts(switch_speech_handle_t *sh)
    -{
    -	speech_channel_t *schannel = (speech_channel_t *) sh->private_info;
    -	speech_channel_stop(schannel);
    -}
    -
    -/**
    - * Process text_param_tts request from FreeSWITCH.
    - * Update MRCP session text parameters.
    - *
    - * @param sh the FreeSWITCH speech handle
    - * @param param the parameter to set
    - * @param val the value to set the parameter to
    - */
    -static void synth_speech_text_param_tts(switch_speech_handle_t *sh, char *param, const char *val)
    -{
    -	speech_channel_t *schannel = (speech_channel_t *) sh->private_info;
    -	speech_channel_set_param(schannel, param, val);
    -}
    -
    -/**
    - * Process numeric_param_tts request from FreeSWITCH.
    - * Update MRCP session numeric parameters
    - *
    - * @param sh the FreeSWITCH speech handle
    - * @param param the parameter to set
    - * @param val the value to set the parameter to
    - */
    -static void synth_speech_numeric_param_tts(switch_speech_handle_t *sh, char *param, int val)
    -{
    -	speech_channel_t *schannel = (speech_channel_t *) sh->private_info;
    -	char *val_str = switch_mprintf("%d", val);
    -	speech_channel_set_param(schannel, param, val_str);
    -	switch_safe_free(val_str);
    -}
    -
    -/**
    - * Process float_param_tts request from FreeSWITCH.
    - * Update MRCP session float parameters
    - *
    - * @param sh the FreeSWITCH speech handle
    - * @param param the parameter to set
    - * @param val the value to set the parameter to
    - */
    -static void synth_speech_float_param_tts(switch_speech_handle_t *sh, char *param, double val)
    -{
    -	speech_channel_t *schannel = (speech_channel_t *) sh->private_info;
    -	char *val_str = switch_mprintf("%f", val);
    -	speech_channel_set_param(schannel, param, val_str);
    -	switch_safe_free(val_str);
    -}
    -
    -/**
    - * Process UniMRCP messages for the synthesizer application.  All MRCP synthesizer callbacks start here first.
    - *
    - * @param app_message the application message
    - */
    -static apt_bool_t synth_message_handler(const mrcp_app_message_t *app_message)
    -{
    -	/* call the appropriate callback in the dispatcher function table based on the app_message received */
    -	return mrcp_application_message_dispatch(&globals.synth.dispatcher, app_message);
    -}
    -
    -/**
    - * Handle the UniMRCP responses sent to session terminate requests
    - *
    - * @param application the MRCP application
    - * @param session the MRCP session
    - * @param status the result of the session terminate request
    - * @return TRUE
    - */
    -static apt_bool_t speech_on_session_terminate(mrcp_application_t *application, mrcp_session_t *session, mrcp_sig_status_code_e status)
    -{
    -	speech_channel_t *schannel = (speech_channel_t *) mrcp_application_session_object_get(session);
    -	switch_event_t *event = NULL;
    -	switch_log_printf(SWITCH_CHANNEL_UUID_LOG(schannel->session_uuid), SWITCH_LOG_DEBUG, "(%s) Destroying MRCP session\n", schannel->name);
    -	mrcp_application_session_destroy(session);
    -
    -	/* notify of channel close */
    -	if (schannel->channel_opened && globals.enable_profile_events) {
    -		switch_event_create_subclass(&event, SWITCH_EVENT_CUSTOM, MY_EVENT_PROFILE_CLOSE);
    -		if (event) {
    -			switch_event_add_header_string(event, SWITCH_STACK_BOTTOM, "MRCP-Profile", schannel->profile->name);
    -			if (schannel->type == SPEECH_CHANNEL_SYNTHESIZER) {
    -				switch_event_add_header_string(event, SWITCH_STACK_BOTTOM, "MRCP-Resource-Type", "TTS");
    -			} else {
    -				switch_event_add_header_string(event, SWITCH_STACK_BOTTOM, "MRCP-Resource-Type", "ASR");
    -			}
    -			switch_event_fire(&event);
    -		}
    -	}
    -	speech_channel_set_state(schannel, SPEECH_CHANNEL_CLOSED);
    -
    -	return TRUE;
    -}
    -
    -/**
    - * Handle the UniMRCP responses sent to channel add requests
    - *
    - * @param application the MRCP application
    - * @param session the MRCP session
    - * @param channel the MRCP channel
    - * @param status the result of the channel add request
    - * @return TRUE
    - */
    -static apt_bool_t speech_on_channel_add(mrcp_application_t *application, mrcp_session_t *session, mrcp_channel_t *channel,
    -					mrcp_sig_status_code_e status)
    -{
    -	switch_event_t *event = NULL;
    -	speech_channel_t *schannel = (speech_channel_t *) mrcp_application_channel_object_get(channel);
    -	char codec_name[60] = { 0 };
    -	const mpf_codec_descriptor_t *descriptor;
    -
    -	/* check status */
    -	if (!session || !schannel || status != MRCP_SIG_STATUS_CODE_SUCCESS) {
    -		goto error;
    -	}
    -
    -	/* what sample rate did we negotiate? */
    -	if (schannel->type == SPEECH_CHANNEL_SYNTHESIZER) {
    -		descriptor = mrcp_application_sink_descriptor_get(channel);
    -	} else {
    -		descriptor = mrcp_application_source_descriptor_get(channel);
    -	}
    -	if (!descriptor) {
    -		goto error;
    -	}
    -
    -	schannel->rate = descriptor->sampling_rate;
    -
    -	/* report negotiated sample rate back to FreeSWITCH */
    -	if (schannel->type == SPEECH_CHANNEL_SYNTHESIZER) {
    -		((switch_speech_handle_t*)schannel->fsh)->native_rate = schannel->rate;
    -	} else {
    -		((switch_asr_handle_t*)schannel->fsh)->native_rate = schannel->rate;
    -	}
    -
    -	if (descriptor->name.length) {
    -		strncpy(codec_name, descriptor->name.buf, sizeof(codec_name) - 1 );
    -	}
    -	switch_log_printf(SWITCH_CHANNEL_UUID_LOG(schannel->session_uuid), SWITCH_LOG_DEBUG, "(%s) %s channel is ready, codec = %s, sample rate = %d\n", schannel->name,
    -		speech_channel_type_to_string(schannel->type), codec_name, schannel->rate);
    -	speech_channel_set_state(schannel, SPEECH_CHANNEL_READY);
    -
    -	/* notify of channel open */
    -	if (globals.enable_profile_events && switch_event_create_subclass(&event, SWITCH_EVENT_CUSTOM, MY_EVENT_PROFILE_OPEN) == SWITCH_STATUS_SUCCESS) {
    -		switch_event_add_header_string(event, SWITCH_STACK_BOTTOM, "MRCP-Profile", schannel->profile->name);
    -		if (schannel->type == SPEECH_CHANNEL_SYNTHESIZER) {
    -			switch_event_add_header_string(event, SWITCH_STACK_BOTTOM, "MRCP-Resource-Type", "TTS");
    -		} else {
    -			switch_event_add_header_string(event, SWITCH_STACK_BOTTOM, "MRCP-Resource-Type", "ASR");
    -		}
    -		switch_event_fire(&event);
    -	}
    -	schannel->channel_opened = 1;
    -
    -	return TRUE;
    -
    -error:
    -	if (schannel) {
    -		switch_log_printf(SWITCH_CHANNEL_UUID_LOG(schannel->session_uuid), SWITCH_LOG_ERROR, "(%s) %s channel error!\n", schannel->name,
    -			speech_channel_type_to_string(schannel->type));
    -		speech_channel_set_state(schannel, SPEECH_CHANNEL_ERROR);
    -	} else {
    -		switch_log_printf(SWITCH_CHANNEL_LOG, SWITCH_LOG_ERROR, "(unknown) channel error!\n");
    -	}
    -
    -	return TRUE;
    -}
    -
    -
    -/**
    - * Handle the UniMRCP responses sent to channel remove requests
    - *
    - * @param application the MRCP application
    - * @param session the MRCP session
    - * @param channel the MRCP channel
    - * @param status the result of the channel remove request
    - * @return TRUE
    - */
    -static apt_bool_t speech_on_channel_remove(mrcp_application_t *application, mrcp_session_t *session, mrcp_channel_t *channel,
    -										   mrcp_sig_status_code_e status)
    -{
    -	speech_channel_t *schannel = (speech_channel_t *) mrcp_application_channel_object_get(channel);
    -	switch_log_printf(SWITCH_CHANNEL_UUID_LOG(schannel->session_uuid), SWITCH_LOG_INFO, "(%s) %s channel is removed\n", schannel->name, speech_channel_type_to_string(schannel->type));
    -	schannel->unimrcp_channel = NULL;
    -
    -	if (session) {
    -		switch_log_printf(SWITCH_CHANNEL_UUID_LOG(schannel->session_uuid), SWITCH_LOG_DEBUG, "(%s) Terminating MRCP session\n", schannel->name);
    -		mrcp_application_session_terminate(session);
    -	}
    -
    -	return TRUE;
    -}
    -
    -/**
    - * Handle the MRCP synthesizer responses/events from UniMRCP
    - *
    - * @param application the MRCP application
    - * @param session the MRCP session
    - * @param channel the MRCP channel
    - * @param message the MRCP message
    - * @return TRUE
    - */
    -static apt_bool_t synth_on_message_receive(mrcp_application_t *application, mrcp_session_t *session, mrcp_channel_t *channel, mrcp_message_t *message)
    -{
    -	speech_channel_t *schannel = (speech_channel_t *) mrcp_application_channel_object_get(channel);
    -	if (message->start_line.message_type == MRCP_MESSAGE_TYPE_RESPONSE) {
    -		/* received MRCP response */
    -		if (message->start_line.method_id == SYNTHESIZER_SPEAK) {
    -			/* received the response to SPEAK request */
    -			if (message->start_line.request_state == MRCP_REQUEST_STATE_INPROGRESS) {
    -				/* waiting for SPEAK-COMPLETE event */
    -				switch_log_printf(SWITCH_CHANNEL_UUID_LOG(schannel->session_uuid), SWITCH_LOG_DEBUG, "(%s) REQUEST IN PROGRESS\n", schannel->name);
    -				speech_channel_set_state(schannel, SPEECH_CHANNEL_PROCESSING);
    -			} else {
    -				/* received unexpected request_state */
    -				switch_log_printf(SWITCH_CHANNEL_UUID_LOG(schannel->session_uuid), SWITCH_LOG_DEBUG, "(%s) unexpected SPEAK response, request_state = %d\n", schannel->name,
    -								  message->start_line.request_state);
    -				speech_channel_set_state(schannel, SPEECH_CHANNEL_ERROR);
    -			}
    -		} else if (message->start_line.method_id == SYNTHESIZER_STOP) {
    -			/* received response to the STOP request */
    -			if (message->start_line.request_state == MRCP_REQUEST_STATE_COMPLETE) {
    -				/* got COMPLETE */
    -				switch_log_printf(SWITCH_CHANNEL_UUID_LOG(schannel->session_uuid), SWITCH_LOG_DEBUG, "(%s) COMPLETE\n", schannel->name);
    -				speech_channel_set_state(schannel, SPEECH_CHANNEL_DONE);
    -			} else {
    -				/* received unexpected request state */
    -				switch_log_printf(SWITCH_CHANNEL_UUID_LOG(schannel->session_uuid), SWITCH_LOG_DEBUG, "(%s) unexpected STOP response, request_state = %d\n", schannel->name,
    -								  message->start_line.request_state);
    -				speech_channel_set_state(schannel, SPEECH_CHANNEL_ERROR);
    -			}
    -		} else {
    -			/* received unexpected response */
    -			switch_log_printf(SWITCH_CHANNEL_UUID_LOG(schannel->session_uuid), SWITCH_LOG_DEBUG, "(%s) unexpected response, method_id = %d\n", schannel->name,
    -							  (int) message->start_line.method_id);
    -			speech_channel_set_state(schannel, SPEECH_CHANNEL_ERROR);
    -		}
    -	} else if (message->start_line.message_type == MRCP_MESSAGE_TYPE_EVENT) {
    -		/* received MRCP event */
    -		if (message->start_line.method_id == SYNTHESIZER_SPEAK_COMPLETE) {
    -			/* got SPEAK-COMPLETE */
    -			switch_log_printf(SWITCH_CHANNEL_UUID_LOG(schannel->session_uuid), SWITCH_LOG_DEBUG, "(%s) SPEAK-COMPLETE\n", schannel->name);
    -			speech_channel_set_state(schannel, SPEECH_CHANNEL_DONE);
    -		} else {
    -			switch_log_printf(SWITCH_CHANNEL_UUID_LOG(schannel->session_uuid), SWITCH_LOG_DEBUG, "(%s) unexpected event, method_id = %d\n", schannel->name,
    -							  (int) message->start_line.method_id);
    -			speech_channel_set_state(schannel, SPEECH_CHANNEL_ERROR);
    -		}
    -	} else {
    -		switch_log_printf(SWITCH_CHANNEL_UUID_LOG(schannel->session_uuid), SWITCH_LOG_DEBUG, "(%s) unexpected message type, message_type = %d\n", schannel->name,
    -						  message->start_line.message_type);
    -		speech_channel_set_state(schannel, SPEECH_CHANNEL_ERROR);
    -	}
    -
    -	return TRUE;
    -}
    -
    -/**
    - * Incoming TTS data from UniMRCP
    - *
    - * @param stream the audio stream sending data
    - * @param frame the data
    - * @return TRUE
    - */
    -static apt_bool_t synth_stream_write(mpf_audio_stream_t *stream, const mpf_frame_t *frame)
    -{
    -	switch_size_t size = frame->codec_frame.size;
    -	speech_channel_t *schannel = (speech_channel_t *) stream->obj;
    -	speech_channel_write(schannel, frame->codec_frame.buffer, &size);
    -	return TRUE;
    -}
    -
    -/**
    - * Link the synthesizer module interface to FreeSWITCH and UniMRCP
    - *
    - * @param module_interface mod_unimrcp's interface
    - * @param pool the memory pool to use for all allocations
    - * @return SWITCH_STATUS_SUCCESS if successful, SWITCH_STATUS_FALSE otherwise
    - */
    -static switch_status_t synth_load(switch_loadable_module_interface_t *module_interface, switch_memory_pool_t *pool)
    -{
    -	/* link to FreeSWITCH ASR / TTS callbacks */
    -	switch_speech_interface_t *speech_interface = NULL;
    -	if ((speech_interface = (switch_speech_interface_t *) switch_loadable_module_create_interface(module_interface, SWITCH_SPEECH_INTERFACE)) == NULL) {
    -		return SWITCH_STATUS_FALSE;
    -	}
    -	speech_interface->interface_name = MOD_UNIMRCP;
    -	speech_interface->speech_open = synth_speech_open;
    -	speech_interface->speech_close = synth_speech_close;
    -	speech_interface->speech_feed_tts = synth_speech_feed_tts;
    -	speech_interface->speech_read_tts = synth_speech_read_tts;
    -	speech_interface->speech_flush_tts = synth_speech_flush_tts;
    -	speech_interface->speech_text_param_tts = synth_speech_text_param_tts;
    -	speech_interface->speech_numeric_param_tts = synth_speech_numeric_param_tts;
    -	speech_interface->speech_float_param_tts = synth_speech_float_param_tts;
    -
    -	/* Create the synthesizer application and link its callbacks to UniMRCP */
    -	if ((globals.synth.app = mrcp_application_create(synth_message_handler, (void *) 0, pool)) == NULL) {
    -		return SWITCH_STATUS_FALSE;
    -	}
    -	globals.synth.dispatcher.on_session_update = NULL;
    -	globals.synth.dispatcher.on_session_terminate = speech_on_session_terminate;
    -	globals.synth.dispatcher.on_channel_add = speech_on_channel_add;
    -	globals.synth.dispatcher.on_channel_remove = speech_on_channel_remove;
    -	globals.synth.dispatcher.on_message_receive = synth_on_message_receive;
    -	globals.synth.audio_stream_vtable.destroy = NULL;
    -	globals.synth.audio_stream_vtable.open_rx = NULL;
    -	globals.synth.audio_stream_vtable.close_rx = NULL;
    -	globals.synth.audio_stream_vtable.read_frame = NULL;
    -	globals.synth.audio_stream_vtable.open_tx = NULL;
    -	globals.synth.audio_stream_vtable.close_tx = NULL;
    -	globals.synth.audio_stream_vtable.write_frame = synth_stream_write;
    -	mrcp_client_application_register(globals.mrcp_client, globals.synth.app, "synth");
    -
    -	/* map FreeSWITCH params to MRCP param */
    -	switch_core_hash_init_nocase(&globals.synth.fs_param_map);
    -	switch_core_hash_insert(globals.synth.fs_param_map, "voice", "voice-name");
    -
    -	/* map MRCP params to UniMRCP ID */
    -	switch_core_hash_init_nocase(&globals.synth.param_id_map);
    -	switch_core_hash_insert(globals.synth.param_id_map, "jump-size", unimrcp_param_id_create(SYNTHESIZER_HEADER_JUMP_SIZE, pool));
    -	switch_core_hash_insert(globals.synth.param_id_map, "kill-on-barge-in", unimrcp_param_id_create(SYNTHESIZER_HEADER_KILL_ON_BARGE_IN, pool));
    -	switch_core_hash_insert(globals.synth.param_id_map, "speaker-profile", unimrcp_param_id_create(SYNTHESIZER_HEADER_SPEAKER_PROFILE, pool));
    -	switch_core_hash_insert(globals.synth.param_id_map, "completion-cause", unimrcp_param_id_create(SYNTHESIZER_HEADER_COMPLETION_CAUSE, pool));
    -	switch_core_hash_insert(globals.synth.param_id_map, "completion-reason", unimrcp_param_id_create(SYNTHESIZER_HEADER_COMPLETION_REASON, pool));
    -	switch_core_hash_insert(globals.synth.param_id_map, "voice-gender", unimrcp_param_id_create(SYNTHESIZER_HEADER_VOICE_GENDER, pool));
    -	switch_core_hash_insert(globals.synth.param_id_map, "voice-age", unimrcp_param_id_create(SYNTHESIZER_HEADER_VOICE_AGE, pool));
    -	switch_core_hash_insert(globals.synth.param_id_map, "voice-variant", unimrcp_param_id_create(SYNTHESIZER_HEADER_VOICE_VARIANT, pool));
    -	switch_core_hash_insert(globals.synth.param_id_map, "voice-name", unimrcp_param_id_create(SYNTHESIZER_HEADER_VOICE_NAME, pool));
    -	switch_core_hash_insert(globals.synth.param_id_map, "prosody-volume", unimrcp_param_id_create(SYNTHESIZER_HEADER_PROSODY_VOLUME, pool));
    -	switch_core_hash_insert(globals.synth.param_id_map, "prosody-rate", unimrcp_param_id_create(SYNTHESIZER_HEADER_PROSODY_RATE, pool));
    -	switch_core_hash_insert(globals.synth.param_id_map, "speech-marker", unimrcp_param_id_create(SYNTHESIZER_HEADER_SPEECH_MARKER, pool));
    -	switch_core_hash_insert(globals.synth.param_id_map, "speech-language", unimrcp_param_id_create(SYNTHESIZER_HEADER_SPEECH_LANGUAGE, pool));
    -	switch_core_hash_insert(globals.synth.param_id_map, "fetch-hint", unimrcp_param_id_create(SYNTHESIZER_HEADER_FETCH_HINT, pool));
    -	switch_core_hash_insert(globals.synth.param_id_map, "audio-fetch-hint", unimrcp_param_id_create(SYNTHESIZER_HEADER_AUDIO_FETCH_HINT, pool));
    -	switch_core_hash_insert(globals.synth.param_id_map, "failed-uri", unimrcp_param_id_create(SYNTHESIZER_HEADER_FAILED_URI, pool));
    -	switch_core_hash_insert(globals.synth.param_id_map, "failed-uri-cause", unimrcp_param_id_create(SYNTHESIZER_HEADER_FAILED_URI_CAUSE, pool));
    -	switch_core_hash_insert(globals.synth.param_id_map, "speak-restart", unimrcp_param_id_create(SYNTHESIZER_HEADER_SPEAK_RESTART, pool));
    -	switch_core_hash_insert(globals.synth.param_id_map, "speak-length", unimrcp_param_id_create(SYNTHESIZER_HEADER_SPEAK_LENGTH, pool));
    -	switch_core_hash_insert(globals.synth.param_id_map, "load-lexicon", unimrcp_param_id_create(SYNTHESIZER_HEADER_LOAD_LEXICON, pool));
    -	switch_core_hash_insert(globals.synth.param_id_map, "lexicon-search-order", unimrcp_param_id_create(SYNTHESIZER_HEADER_LEXICON_SEARCH_ORDER, pool));
    -
    -	return SWITCH_STATUS_SUCCESS;
    -}
    -
    -/**
    - * Shut down the synthesizer
    - *
    - * @return SWITCH_STATUS_SUCCESS
    - */
    -static switch_status_t synth_shutdown()
    -{
    -	if (globals.synth.fs_param_map) {
    -		switch_core_hash_destroy(&globals.synth.fs_param_map);
    -	}
    -	if (globals.synth.param_id_map) {
    -		switch_core_hash_destroy(&globals.synth.param_id_map);
    -	}
    -	return SWITCH_STATUS_SUCCESS;
    -}
    -
    -/**
    - * Create a grammar object to reference in recognition requests
    - *
    - * @param grammar the grammar
    - * @param name the name of the grammar
    - * @param type the type of the grammar (URI, SRGS, or GSL)
    - * @param data the grammar data (or URI)
    - * @param pool memory pool to allocate from
    - * @return SWITCH_STATUS_SUCCESS if successful
    - */
    -static switch_status_t grammar_create(grammar_t ** grammar, const char *name, grammar_type_t type, const char *data, switch_memory_pool_t *pool)
    -{
    -	switch_status_t status = SWITCH_STATUS_SUCCESS;
    -	grammar_t *g = (grammar_t *) switch_core_alloc(pool, sizeof(grammar_t));
    -	if (g == NULL) {
    -		status = SWITCH_STATUS_FALSE;
    -		*grammar = NULL;
    -	} else {
    -		g->name = switch_core_strdup(pool, name);
    -		g->type = type;
    -		g->data = switch_core_strdup(pool, data);
    -		*grammar = g;
    -	}
    -
    -	return status;
    -}
    -
    -/**
    - * Get the MIME type for this grammar type
    - * @param type the grammar type
    - * @param profile the profile requesting the type
    - * @return the MIME type
    - */
    -static const char *grammar_type_to_mime(grammar_type_t type, profile_t *profile)
    -{
    -	switch (type) {
    -	case GRAMMAR_TYPE_UNKNOWN:
    -		return "";
    -	case GRAMMAR_TYPE_URI:
    -		return "text/uri-list";
    -	case GRAMMAR_TYPE_SRGS:
    -		return profile->srgs_mime_type;
    -	case GRAMMAR_TYPE_SRGS_XML:
    -		return profile->srgs_xml_mime_type;
    -	case GRAMMAR_TYPE_NUANCE_GSL:
    -		return profile->gsl_mime_type;
    -	case GRAMMAR_TYPE_JSGF:
    -		return profile->jsgf_mime_type;
    -	case GRAMMAR_TYPE_XML:
    -		return profile->xml_mime_type;
    -	}
    -	return "";
    -}
    -
    -/**
    - * Start RECOGNIZE request
    - *
    - * @param schannel the channel to start
    - * @return SWITCH_STATUS_SUCCESS if successful
    - */
    -static switch_status_t recog_channel_start(speech_channel_t *schannel)
    -{
    -	switch_status_t status = SWITCH_STATUS_SUCCESS;
    -	switch_hash_index_t *egk;
    -	mrcp_message_t *mrcp_message;
    -	mrcp_recog_header_t *recog_header;
    -	mrcp_generic_header_t *generic_header;
    -	recognizer_data_t *r;
    -	char *start_input_timers;
    -	const char *mime_type;
    -	char *key = NULL;
    -	switch_size_t len;
    -	grammar_t *grammar = NULL;
    -	switch_size_t grammar_uri_count = 0;
    -	switch_size_t grammar_uri_list_len = 0;
    -	char *grammar_uri_list = NULL;
    -	int warned = 0;
    -
    -	switch_mutex_lock(schannel->mutex);
    -	if (schannel->state != SPEECH_CHANNEL_READY) {
    -		status = SWITCH_STATUS_FALSE;
    -		goto done;
    -	}
    -
    -	if (schannel->data == NULL) {
    -		status = SWITCH_STATUS_FALSE;
    -		goto done;
    -	}
    -	r = (recognizer_data_t *) schannel->data;
    -	r->result = NULL;
    -	if (r->result_headers) {
    -		switch_event_destroy(&r->result_headers);
    -	}
    -	r->start_of_input = 0;
    -
    -	/* input timers are started by default unless the start-input-timers=false param is set */
    -	start_input_timers = (char *) switch_core_hash_find(schannel->params, "start-input-timers");
    -	r->timers_started = zstr(start_input_timers) || strcasecmp(start_input_timers, "false");
    -
    -	/* count enabled grammars */
    -	for (egk = switch_core_hash_first(r->enabled_grammars); egk; egk = switch_core_hash_next(&egk)) {
    -		// NOTE: This postponed type check is necessary to allow a non-URI-list grammar to execute alone
    -		if (grammar_uri_count == 1 && grammar->type != GRAMMAR_TYPE_URI)
    -			goto no_grammar_alone;
    -		++grammar_uri_count;
    -		switch_core_hash_this(egk, (void *) &key, NULL, (void *) &grammar);
    -		if (grammar->type != GRAMMAR_TYPE_URI && grammar_uri_count != 1) {
    -		      no_grammar_alone:
    -			switch_log_printf(SWITCH_CHANNEL_UUID_LOG(schannel->session_uuid), SWITCH_LOG_ERROR, "(%s) Grammar '%s' can only be used alone (not a URI list)\n", schannel->name, key);
    -			status = SWITCH_STATUS_FALSE;
    -			switch_safe_free(egk);
    -			goto done;
    -		}
    -		len = strlen(grammar->data);
    -		if (!len)
    -			continue;
    -		grammar_uri_list_len += len;
    -		if (grammar->data[len - 1] != '\n')
    -			grammar_uri_list_len += 2;
    -	}
    -
    -	switch (grammar_uri_count) {
    -	case 0:
    -		switch_log_printf(SWITCH_CHANNEL_UUID_LOG(schannel->session_uuid), SWITCH_LOG_ERROR, "(%s) No grammar specified\n", schannel->name);
    -		status = SWITCH_STATUS_FALSE;
    -		goto done;
    -	case 1:
    -		/* grammar should already be the unique grammar */
    -		break;
    -	default:
    -		/* get the enabled grammars list */
    -		grammar_uri_list = switch_core_alloc(schannel->memory_pool, grammar_uri_list_len + 1);
    -		grammar_uri_list_len = 0;
    -		for (egk = switch_core_hash_first(r->enabled_grammars); egk; egk = switch_core_hash_next(&egk)) {
    -			switch_core_hash_this(egk, (void *) &key, NULL, (void *) &grammar);
    -			len = strlen(grammar->data);
    -			if (!len)
    -				continue;
    -			memcpy(&(grammar_uri_list[grammar_uri_list_len]), grammar->data, len);
    -			grammar_uri_list_len += len;
    -			if (grammar_uri_list[grammar_uri_list_len - 1] != '\n')
    -			{
    -				grammar_uri_list_len += 2;
    -				grammar_uri_list[grammar_uri_list_len - 2] = '\r';
    -				grammar_uri_list[grammar_uri_list_len - 1] = '\n';
    -			}
    -		}
    -		grammar_uri_list[grammar_uri_list_len++] = '\0';
    -		grammar = NULL;
    -	}
    -
    -	/* create MRCP message */
    -	mrcp_message = mrcp_application_message_create(schannel->unimrcp_session, schannel->unimrcp_channel, RECOGNIZER_RECOGNIZE);
    -	if (mrcp_message == NULL) {
    -		status = SWITCH_STATUS_FALSE;
    -		goto done;
    -	}
    -
    -	/* allocate generic header */
    -	generic_header = (mrcp_generic_header_t *) mrcp_generic_header_prepare(mrcp_message);
    -	if (generic_header == NULL) {
    -		status = SWITCH_STATUS_FALSE;
    -		goto done;
    -	}
    -
    -	/* set Content-Type */
    -	mime_type = grammar_type_to_mime(grammar ? grammar->type : GRAMMAR_TYPE_URI, schannel->profile);
    -	if (zstr(mime_type)) {
    -		status = SWITCH_STATUS_FALSE;
    -		goto done;
    -	}
    -	apt_string_assign(&generic_header->content_type, mime_type, mrcp_message->pool);
    -	mrcp_generic_header_property_add(mrcp_message, GENERIC_HEADER_CONTENT_TYPE);
    -
    -	/* set Content-ID for inline grammars */
    -	if (grammar && grammar->type != GRAMMAR_TYPE_URI) {
    -		apt_string_assign(&generic_header->content_id, grammar->name, mrcp_message->pool);
    -		mrcp_generic_header_property_add(mrcp_message, GENERIC_HEADER_CONTENT_ID);
    -	}
    -
    -	/* allocate recognizer-specific header */
    -	recog_header = (mrcp_recog_header_t *) mrcp_resource_header_prepare(mrcp_message);
    -	if (recog_header == NULL) {
    -		status = SWITCH_STATUS_FALSE;
    -		goto done;
    -	}
    -
    -	/* set Cancel-If-Queue */
    -	if (mrcp_message->start_line.version == MRCP_VERSION_2) {
    -		recog_header->cancel_if_queue = FALSE;
    -		mrcp_resource_header_property_add(mrcp_message, RECOGNIZER_HEADER_CANCEL_IF_QUEUE);
    -	}
    -
    -	/* set parameters */
    -	recog_channel_set_params(schannel, mrcp_message, generic_header, recog_header);
    -
    -	/* set message body */
    -	apt_string_assign(&mrcp_message->body, grammar ? grammar->data : grammar_uri_list, mrcp_message->pool);
    -
    -	/* Empty audio queue and send RECOGNIZE to MRCP server */
    -	audio_queue_clear(schannel->audio_queue);
    -	if (mrcp_application_message_send(schannel->unimrcp_session, schannel->unimrcp_channel, mrcp_message) == FALSE) {
    -		status = SWITCH_STATUS_FALSE;
    -		goto done;
    -	}
    -	/* wait for IN-PROGRESS */
    -	while (schannel->state == SPEECH_CHANNEL_READY) {
    -		if (switch_thread_cond_timedwait(schannel->cond, schannel->mutex, SPEECH_CHANNEL_TIMEOUT_USEC) == SWITCH_STATUS_TIMEOUT && !warned) {
    -			warned = 1;
    -			switch_log_printf(SWITCH_CHANNEL_UUID_LOG(schannel->session_uuid), SWITCH_LOG_WARNING, "(%s) IN-PROGRESS not received for RECOGNIZE after %d ms.\n", schannel->name, SPEECH_CHANNEL_TIMEOUT_USEC / (1000));
    -		}
    -	}
    -	if (schannel->state != SPEECH_CHANNEL_PROCESSING) {
    -		status = SWITCH_STATUS_FALSE;
    -		goto done;
    -	}
    -
    -  done:
    -
    -	switch_mutex_unlock(schannel->mutex);
    -	return status;
    -}
    -
    -/**
    - * Load speech recognition grammar
    - *
    - * @param schannel the recognizer channel
    - * @param name the name of this grammar
    - * @param type the grammar type
    - * @param data the grammar data (or URI)
    - * @return SWITCH_STATUS_SUCCESS if successful
    - */
    -static switch_status_t recog_channel_load_grammar(speech_channel_t *schannel, const char *name, grammar_type_t type, const char *data)
    -{
    -	switch_status_t status = SWITCH_STATUS_SUCCESS;
    -	grammar_t *g = NULL;
    -	char *ldata = NULL;
    -
    -	switch_log_printf(SWITCH_CHANNEL_UUID_LOG(schannel->session_uuid), SWITCH_LOG_DEBUG, "(%s) Loading grammar %s, data = %s\n", schannel->name, name, data);
    -
    -	switch_mutex_lock(schannel->mutex);
    -	if (schannel->state != SPEECH_CHANNEL_READY) {
    -		status = SWITCH_STATUS_FALSE;
    -		goto done;
    -	}
    -
    -	/* if inline or requested via define-grammar param, use DEFINE-GRAMMAR to cache it on the server */
    -	if (type != GRAMMAR_TYPE_URI || switch_true(switch_core_hash_find(schannel->params, "define-grammar"))) {
    -		mrcp_message_t *mrcp_message;
    -		mrcp_generic_header_t *generic_header;
    -		const char *mime_type;
    -		int warned = 0;
    -
    -		/* create MRCP message */
    -		mrcp_message = mrcp_application_message_create(schannel->unimrcp_session, schannel->unimrcp_channel, RECOGNIZER_DEFINE_GRAMMAR);
    -		if (mrcp_message == NULL) {
    -			status = SWITCH_STATUS_FALSE;
    -			goto done;
    -		}
    -
    -		/* set Content-Type and Content-ID in message */
    -		generic_header = (mrcp_generic_header_t *) mrcp_generic_header_prepare(mrcp_message);
    -		if (generic_header == NULL) {
    -			status = SWITCH_STATUS_FALSE;
    -			goto done;
    -		}
    -		mime_type = grammar_type_to_mime(type, schannel->profile);
    -		if (zstr(mime_type)) {
    -			status = SWITCH_STATUS_FALSE;
    -			goto done;
    -		}
    -		apt_string_assign(&generic_header->content_type, mime_type, mrcp_message->pool);
    -		mrcp_generic_header_property_add(mrcp_message, GENERIC_HEADER_CONTENT_TYPE);
    -		apt_string_assign(&generic_header->content_id, name, mrcp_message->pool);
    -		mrcp_generic_header_property_add(mrcp_message, GENERIC_HEADER_CONTENT_ID);
    -
    -		/* put grammar in message body */
    -		apt_string_assign(&mrcp_message->body, data, mrcp_message->pool);
    -
    -		/* send message and wait for response */
    -		speech_channel_set_state_unlocked(schannel, SPEECH_CHANNEL_PROCESSING);
    -		if (mrcp_application_message_send(schannel->unimrcp_session, schannel->unimrcp_channel, mrcp_message) == FALSE) {
    -			status = SWITCH_STATUS_FALSE;
    -			goto done;
    -		}
    -		while (schannel->state == SPEECH_CHANNEL_PROCESSING) {
    -			if (switch_thread_cond_timedwait(schannel->cond, schannel->mutex, SPEECH_CHANNEL_TIMEOUT_USEC) == SWITCH_STATUS_TIMEOUT && !warned) {
    -				warned = 1;
    -				switch_log_printf(SWITCH_CHANNEL_UUID_LOG(schannel->session_uuid), SWITCH_LOG_WARNING, "(%s) DEFINE-GRAMMAR not COMPLETED after %d ms.\n", schannel->name, SPEECH_CHANNEL_TIMEOUT_USEC / (1000));
    -			}
    -		}
    -		if (schannel->state != SPEECH_CHANNEL_READY) {
    -			status = SWITCH_STATUS_FALSE;
    -			goto done;
    -		}
    -
    -		/* set up name, type for future RECOGNIZE requests.  We'll reference this cached grammar by name */
    -		ldata = switch_mprintf("session:%s", name);
    -		data = ldata;
    -		type = GRAMMAR_TYPE_URI;
    -	}
    -
    -	/* Create the grammar and save it */
    -	if ((status = grammar_create(&g, name, type, data, schannel->memory_pool)) == SWITCH_STATUS_SUCCESS) {
    -		recognizer_data_t *r = (recognizer_data_t *) schannel->data;
    -		switch_core_hash_insert(r->grammars, g->name, g);
    -	}
    -
    -  done:
    -
    -	switch_mutex_unlock(schannel->mutex);
    -	switch_safe_free(ldata);
    -
    -	return status;
    -}
    -
    -/**
    - * Unload speech recognition grammar
    - *
    - * @param schannel the recognizer channel
    - * @param grammar_name the name of the grammar to unload
    - * @return SWITCH_STATUS_SUCCESS if successful
    - */
    -static switch_status_t recog_channel_unload_grammar(speech_channel_t *schannel, const char *grammar_name)
    -{
    -	switch_status_t status = SWITCH_STATUS_SUCCESS;
    -
    -	if (zstr(grammar_name)) {
    -		status = SWITCH_STATUS_FALSE;
    -	} else {
    -		recognizer_data_t *r = (recognizer_data_t *) schannel->data;
    -		switch_log_printf(SWITCH_CHANNEL_UUID_LOG(schannel->session_uuid), SWITCH_LOG_DEBUG, "(%s) Unloading grammar %s\n", schannel->name, grammar_name);
    -		switch_core_hash_delete(r->enabled_grammars, grammar_name);
    -		switch_core_hash_delete(r->grammars, grammar_name);
    -	}
    -
    -	return status;
    -}
    -
    -/**
    - * Enable speech recognition grammar
    - *
    - * @param schannel the recognizer channel
    - * @param grammar_name the name of the grammar to enable
    - * @return SWITCH_STATUS_SUCCESS if successful
    - */
    -static switch_status_t recog_channel_enable_grammar(speech_channel_t *schannel, const char *grammar_name)
    -{
    -	switch_status_t status = SWITCH_STATUS_SUCCESS;
    -
    -	if (zstr(grammar_name)) {
    -		status = SWITCH_STATUS_FALSE;
    -	} else {
    -		recognizer_data_t *r = (recognizer_data_t *) schannel->data;
    -		grammar_t *grammar;
    -		grammar = (grammar_t *) switch_core_hash_find(r->grammars, grammar_name);
    -		if (grammar == NULL)
    -		{
    -			switch_log_printf(SWITCH_CHANNEL_UUID_LOG(schannel->session_uuid), SWITCH_LOG_ERROR, "(%s) Undefined grammar, %s\n", schannel->name, grammar_name);
    -			status = SWITCH_STATUS_FALSE;
    -		}
    -		else {
    -			switch_log_printf(SWITCH_CHANNEL_UUID_LOG(schannel->session_uuid), SWITCH_LOG_DEBUG, "(%s) Enabling grammar %s\n", schannel->name, grammar_name);
    -			switch_core_hash_insert(r->enabled_grammars, grammar_name, grammar);
    -		}
    -	}
    -
    -	return status;
    -}
    -
    -/**
    - * Disable speech recognition grammar
    - *
    - * @param schannel the recognizer channel
    - * @param grammar_name the name of the grammar to disable
    - * @return SWITCH_STATUS_SUCCESS if successful
    - */
    -static switch_status_t recog_channel_disable_grammar(speech_channel_t *schannel, const char *grammar_name)
    -{
    -	switch_status_t status = SWITCH_STATUS_SUCCESS;
    -
    -	if (zstr(grammar_name)) {
    -		status = SWITCH_STATUS_FALSE;
    -	} else {
    -		recognizer_data_t *r = (recognizer_data_t *) schannel->data;
    -		switch_log_printf(SWITCH_CHANNEL_UUID_LOG(schannel->session_uuid), SWITCH_LOG_DEBUG, "(%s) Disabling grammar %s\n", schannel->name, grammar_name);
    -		switch_core_hash_delete(r->enabled_grammars, grammar_name);
    -	}
    -
    -	return status;
    -}
    -
    -/**
    - * Disable all speech recognition grammars
    - *
    - * @param schannel the recognizer channel
    - * @return SWITCH_STATUS_SUCCESS if successful
    - */
    -static switch_status_t recog_channel_disable_all_grammars(speech_channel_t *schannel)
    -{
    -	switch_status_t status = SWITCH_STATUS_SUCCESS;
    -
    -	recognizer_data_t *r = (recognizer_data_t *) schannel->data;
    -	switch_log_printf(SWITCH_CHANNEL_UUID_LOG(schannel->session_uuid), SWITCH_LOG_DEBUG, "(%s) Disabling all grammars\n", schannel->name);
    -	switch_core_hash_destroy(&r->enabled_grammars);
    -	switch_core_hash_init(&r->enabled_grammars);
    -
    -	return status;
    -}
    -
    -/**
    - * Check if recognition is complete
    - *
    - * @return SWITCH_STATUS_SUCCESS if results available or start of input
    - */
    -static switch_status_t recog_channel_check_results(speech_channel_t *schannel)
    -{
    -	switch_status_t status = SWITCH_STATUS_SUCCESS;
    -	recognizer_data_t *r;
    -	switch_mutex_lock(schannel->mutex);
    -	r = (recognizer_data_t *) schannel->data;
    -	if (!zstr(r->result)) {
    -		switch_log_printf(SWITCH_CHANNEL_UUID_LOG(schannel->session_uuid), SWITCH_LOG_DEBUG, "(%s) SUCCESS, have result\n", schannel->name);
    -	} else if (r->start_of_input == START_OF_INPUT_RECEIVED) {
    -		switch_log_printf(SWITCH_CHANNEL_UUID_LOG(schannel->session_uuid), SWITCH_LOG_DEBUG, "(%s) SUCCESS, start of input\n", schannel->name);
    -	} else {
    -		status = SWITCH_STATUS_FALSE;
    -	}
    -
    -	switch_mutex_unlock(schannel->mutex);
    -	return status;
    -}
    -
    -/**
    - * Start recognizer's input timers
    - *
    - * @return SWITCH_STATUS_SUCCESS if timers were started
    - */
    -static switch_status_t recog_channel_start_input_timers(speech_channel_t *schannel)
    -{
    -	switch_status_t status = SWITCH_STATUS_SUCCESS;
    -	recognizer_data_t *r = (recognizer_data_t *) schannel->data;
    -	switch_mutex_lock(schannel->mutex);
    -
    -	if (schannel->state == SPEECH_CHANNEL_PROCESSING && !r->timers_started && !r->start_of_input) {
    -		mrcp_message_t *mrcp_message;
    -		switch_log_printf(SWITCH_CHANNEL_UUID_LOG(schannel->session_uuid), SWITCH_LOG_DEBUG, "(%s) Starting input timers\n", schannel->name);
    -		/* Send START-INPUT-TIMERS to MRCP server */
    -		mrcp_message = mrcp_application_message_create(schannel->unimrcp_session, schannel->unimrcp_channel, RECOGNIZER_START_INPUT_TIMERS);
    -		if (mrcp_message == NULL) {
    -			switch_log_printf(SWITCH_CHANNEL_UUID_LOG(schannel->session_uuid), SWITCH_LOG_ERROR, "(%s) Failed to create START-INPUT-TIMERS message\n", schannel->name);
    -			status = SWITCH_STATUS_FALSE;
    -			goto done;
    -		}
    -		/* set it and forget it */
    -		mrcp_application_message_send(schannel->unimrcp_session, schannel->unimrcp_channel, mrcp_message);
    -	}
    -
    -  done:
    -
    -	switch_mutex_unlock(schannel->mutex);
    -	return status;
    -}
    -
    -/**
    - * Flag that input has started
    - *
    - * @param schannel the channel that has heard input
    - * @return SWITCH_STATUS_SUCCESS
    - */
    -static switch_status_t recog_channel_set_start_of_input(speech_channel_t *schannel)
    -{
    -	switch_status_t status = SWITCH_STATUS_SUCCESS;
    -	recognizer_data_t *r;
    -	switch_mutex_lock(schannel->mutex);
    -	r = (recognizer_data_t *) schannel->data;
    -	r->start_of_input = START_OF_INPUT_RECEIVED;
    -	switch_log_printf(SWITCH_CHANNEL_UUID_LOG(schannel->session_uuid), SWITCH_LOG_DEBUG, "(%s) start of input\n", schannel->name);
    -	switch_mutex_unlock(schannel->mutex);
    -	return status;
    -}
    -
    -/**
    - * Set the recognition results
    - *
    - * @param schannel the channel whose results are set
    - * @param result the results
    - * @return SWITCH_STATUS_SUCCESS if successful
    - */
    -static switch_status_t recog_channel_set_results(speech_channel_t *schannel, const char *result)
    -{
    -	switch_status_t status = SWITCH_STATUS_SUCCESS;
    -	recognizer_data_t *r;
    -	switch_mutex_lock(schannel->mutex);
    -	r = (recognizer_data_t *) schannel->data;
    -	if (!zstr(r->result)) {
    -		switch_log_printf(SWITCH_CHANNEL_UUID_LOG(schannel->session_uuid), SWITCH_LOG_DEBUG, "(%s) result is already set\n", schannel->name);
    -		status = SWITCH_STATUS_FALSE;
    -		goto done;
    -	}
    -	if (zstr(result)) {
    -		switch_log_printf(SWITCH_CHANNEL_UUID_LOG(schannel->session_uuid), SWITCH_LOG_DEBUG, "(%s) result is NULL\n", schannel->name);
    -		status = SWITCH_STATUS_FALSE;
    -		goto done;
    -	}
    -	switch_log_printf(SWITCH_CHANNEL_UUID_LOG(schannel->session_uuid), SWITCH_LOG_DEBUG, "(%s) result:\n\n%s\n", schannel->name, result);
    -	r->result = switch_core_strdup(schannel->memory_pool, result);
    -
    -  done:
    -
    -	switch_mutex_unlock(schannel->mutex);
    -	return status;
    -}
    -
    -/**
    - * Find a parameter from a ;-separated string
    - *
    - * @param str the input string to find data in
    - * @param param the parameter to to look for
    - * @return a pointer in the str if successful, or NULL.
    - */
    -static char *find_parameter(const char *str, const char *param)
    -{
    -	char *ptr = (char *) str;
    -
    -	while (ptr) {
    -		if (!strncasecmp(ptr, param, strlen(param)))
    -			return ptr;
    -
    -		if ((ptr = strchr(ptr, ';')))
    -			ptr++;
    -
    -		while (ptr && *ptr == ' ') {
    -			ptr++;
    -		}
    -	}
    -
    -	return NULL;
    -}
    -
    -/**
    - * Get a parameter value from a ;-separated string
    - *
    - * @param str the input string to parse data from
    - * @param param the parameter to to look for
    - * @return a malloc'ed char* if successful, or NULL.
    - */
    -static char *get_parameter_value(const char *str, const char *param)
    -{
    -	const char *param_ptr;
    -	char *param_value = NULL;
    -	char *tmp;
    -	switch_size_t param_len;
    -	char *param_tmp;
    -
    -	if (zstr(str) || zstr(param)) return NULL;
    -
    -	/* Append "=" to the end of the string */
    -	param_tmp = switch_mprintf("%s=", param);
    -	if (!param_tmp) return NULL;
    -	param = param_tmp;
    -
    -	param_len = strlen(param);
    -	param_ptr = find_parameter(str, param);
    -
    -	if (zstr(param_ptr)) goto fail;
    -
    -	param_value = strdup(param_ptr + param_len);
    -
    -	if (zstr(param_value)) goto fail;
    -
    -	if ((tmp = strchr(param_value, ';'))) *tmp = '\0';
    -
    -	switch_safe_free(param_tmp);
    -	return param_value;
    -
    -  fail:
    -	switch_safe_free(param_tmp);
    -	switch_safe_free(param_value);
    -	return NULL;
    -}
    -
    -/**
    - * Set the recognition result headers
    - *
    - * @param schannel the channel whose results are set
    - * @param recog_hdr the recognition headers
    - * @return SWITCH_STATUS_SUCCESS if successful
    - */
    -static switch_status_t recog_channel_set_result_headers(speech_channel_t *schannel, mrcp_recog_header_t *recog_hdr)
    -{
    -	switch_status_t status = SWITCH_STATUS_SUCCESS;
    -	recognizer_data_t *r;
    -
    -	switch_mutex_lock(schannel->mutex);
    -
    -	r = (recognizer_data_t *) schannel->data;
    -
    -	if (r->result_headers) {
    -		switch_log_printf(SWITCH_CHANNEL_UUID_LOG(schannel->session_uuid), SWITCH_LOG_DEBUG, "(%s) result headers are already set\n", schannel->name);
    -		status = SWITCH_STATUS_FALSE;
    -		goto done;
    -	}
    -
    -	if (!recog_hdr) {
    -		switch_log_printf(SWITCH_CHANNEL_UUID_LOG(schannel->session_uuid), SWITCH_LOG_DEBUG, "(%s) result headers are NULL\n", schannel->name);
    -		status = SWITCH_STATUS_FALSE;
    -		goto done;
    -	}
    -
    -	switch_log_printf(SWITCH_CHANNEL_UUID_LOG(schannel->session_uuid), SWITCH_LOG_DEBUG, "(%s) ASR adding result headers\n", schannel->name);
    -
    -	if ((status = switch_event_create(&r->result_headers, SWITCH_EVENT_CLONE)) == SWITCH_STATUS_SUCCESS) {
    -
    -		switch_event_add_header(r->result_headers, SWITCH_STACK_BOTTOM, "ASR-Completion-Cause", "%d", recog_hdr->completion_cause);
    -
    -		if (!zstr(recog_hdr->completion_reason.buf)) {
    -			switch_event_add_header_string(r->result_headers, SWITCH_STACK_BOTTOM, "ASR-Completion-Reason", recog_hdr->completion_reason.buf);
    -		}
    -
    -		if (!zstr(recog_hdr->waveform_uri.buf)) {
    -			char *tmp;
    -
    -			if ((tmp = strdup(recog_hdr->waveform_uri.buf))) {
    -				char *tmp2;
    -				if ((tmp2 = strchr(tmp, ';'))) *tmp2 = '\0';
    -				switch_event_add_header_string(r->result_headers, SWITCH_STACK_BOTTOM, "ASR-Waveform-URI", tmp);
    -				free(tmp);
    -			}
    -
    -			if ((tmp = get_parameter_value(recog_hdr->waveform_uri.buf, "size"))) {
    -				switch_event_add_header_string(r->result_headers, SWITCH_STACK_BOTTOM, "ASR-Waveform-Size", tmp);
    -				free(tmp);
    -			}
    -
    -			if ((tmp = get_parameter_value(recog_hdr->waveform_uri.buf, "duration"))) {
    -				switch_event_add_header_string(r->result_headers, SWITCH_STACK_BOTTOM, "ASR-Waveform-Duration", tmp);
    -				free(tmp);
    -			}
    -		}
    -	}
    -
    -  done:
    -
    -	switch_mutex_unlock(schannel->mutex);
    -
    -	return status;
    -}
    -
    -/**
    - * Get the recognition results.
    - *
    - * @param schannel the channel to get results from
    - * @param result the results.  free() the results when finished with them.
    - * @return SWITCH_STATUS_SUCCESS if there are results, SWITCH_STATUS_BREAK if start of input
    - */
    -static switch_status_t recog_channel_get_results(speech_channel_t *schannel, char **result)
    -{
    -	switch_status_t status = SWITCH_STATUS_SUCCESS;
    -	recognizer_data_t *r = (recognizer_data_t *) schannel->data;
    -	switch_mutex_lock(schannel->mutex);
    -	if (!zstr(r->result)) {
    -		*result = strdup(r->result);
    -		switch_log_printf(SWITCH_CHANNEL_UUID_LOG(schannel->session_uuid), SWITCH_LOG_DEBUG, "(%s) result:\n\n%s\n", schannel->name, *result ? *result : "");
    -		r->result = NULL;
    -		r->start_of_input = START_OF_INPUT_REPORTED;
    -	} else if (r->start_of_input == START_OF_INPUT_RECEIVED) {
    -		switch_log_printf(SWITCH_CHANNEL_UUID_LOG(schannel->session_uuid), SWITCH_LOG_DEBUG, "(%s) start of input\n", schannel->name);
    -		status = SWITCH_STATUS_BREAK;
    -		r->start_of_input = START_OF_INPUT_REPORTED;
    -	} else {
    -		status = SWITCH_STATUS_FALSE;
    -	}
    -
    -	switch_mutex_unlock(schannel->mutex);
    -	return status;
    -}
    -
    -/**
    - * Get the recognition result headers.
    - *
    - * @param schannel the channel to get results from
    - * @param result_headers the recognition result headers. switch_event_destroy() the results when finished with them.
    - * @return SWITCH_STATUS_SUCCESS will always be returned, since this is just optional data.
    - */
    -static switch_status_t recog_channel_get_result_headers(speech_channel_t *schannel, switch_event_t **result_headers)
    -{
    -	recognizer_data_t *r = (recognizer_data_t *) schannel->data;
    -
    -	switch_mutex_lock(schannel->mutex);
    -
    -	if (r->result_headers && result_headers) {
    -		*result_headers = r->result_headers;
    -		r->result_headers = NULL;
    -	}
    -
    -	switch_mutex_unlock(schannel->mutex);
    -
    -	return SWITCH_STATUS_SUCCESS;
    -}
    -
    -/**
    - * Set parameters in a recognizer MRCP header
    - *
    - * @param schannel the speech channel containing the params
    - * @param msg the MRCP message to set
    - * @param gen_hdr the generic headers to set
    - * @param recog_hdr the recognizer headers to set
    - * @return SWITCH_STATUS_SUCCESS
    - */
    -static switch_status_t recog_channel_set_params(speech_channel_t *schannel, mrcp_message_t *msg, mrcp_generic_header_t *gen_hdr,
    -												mrcp_recog_header_t *recog_hdr)
    -{
    -	/* loop through each param and add to recog header or vendor-specific-params */
    -	switch_hash_index_t *hi = NULL;
    -	for (hi = switch_core_hash_first(schannel->params); hi; hi = switch_core_hash_next(&hi)) {
    -		char *param_name = NULL, *param_val = NULL;
    -		const void *key;
    -		void *val;
    -		switch_core_hash_this(hi, &key, NULL, &val);
    -		param_name = (char *) key;
    -		param_val = (char *) val;
    -		if (!zstr(param_name) && !zstr(param_val)) {
    -			unimrcp_param_id_t *id = (unimrcp_param_id_t *) switch_core_hash_find(schannel->application->param_id_map, param_name);
    -			if (id) {
    -				switch_log_printf(SWITCH_CHANNEL_UUID_LOG(schannel->session_uuid), SWITCH_LOG_DEBUG, "(%s) \"%s\": \"%s\"\n", schannel->name, param_name, param_val);
    -				recog_channel_set_header(schannel, id->id, param_val, msg, recog_hdr);
    -			} else if (!strcasecmp(param_name, "define-grammar")) {
    -				// This parameter is used internally only, not in MRCP headers
    -			} else if (!strcasecmp(param_name, "name")) {
    -				// This parameter is used internally only, not in MRCP headers
    -			} else if (!strcasecmp(param_name, "start-recognize")) {
    -				// This parameter is used internally only, not in MRCP headers
    -			} else {
    -				/* this is probably a vendor-specific MRCP param */
    -				apt_str_t apt_param_name = { 0 };
    -				apt_str_t apt_param_val = { 0 };
    -				switch_log_printf(SWITCH_CHANNEL_UUID_LOG(schannel->session_uuid), SWITCH_LOG_DEBUG, "(%s) (vendor-specific value) %s: %s\n", schannel->name, param_name, param_val);
    -				apt_string_set(&apt_param_name, param_name);	/* copy isn't necessary since apt_pair_array_append will do it */
    -				apt_string_set(&apt_param_val, param_val);
    -				if (!gen_hdr->vendor_specific_params) {
    -					switch_log_printf(SWITCH_CHANNEL_UUID_LOG(schannel->session_uuid), SWITCH_LOG_DEBUG, "(%s) creating vendor specific pair array\n", schannel->name);
    -					gen_hdr->vendor_specific_params = apt_pair_array_create(10, msg->pool);
    -				}
    -				apt_pair_array_append(gen_hdr->vendor_specific_params, &apt_param_name, &apt_param_val, msg->pool);
    -			}
    -		}
    -	}
    -
    -	if (gen_hdr->vendor_specific_params) {
    -		mrcp_generic_header_property_add(msg, GENERIC_HEADER_VENDOR_SPECIFIC_PARAMS);
    -	}
    -
    -	return SWITCH_STATUS_SUCCESS;
    -}
    -
    -/**
    - * Set parameter in a recognizer MRCP header
    - *
    - * @param schannel the speech channel containing the param
    - * @param id the UniMRCP header enum
    - * @param val the value to set
    - * @param msg the MRCP message to set
    - * @param recog_hdr the recognizer header to set
    - * @return SWITCH_STATUS_SUCCESS
    - */
    -static switch_status_t recog_channel_set_header(speech_channel_t *schannel, int id, char *val, mrcp_message_t *msg, mrcp_recog_header_t *recog_hdr)
    -{
    -	switch_status_t status = SWITCH_STATUS_SUCCESS;
    -
    -	switch (id) {
    -	case RECOGNIZER_HEADER_CONFIDENCE_THRESHOLD:
    -		recog_hdr->confidence_threshold = (float) atof(val);
    -		mrcp_resource_header_property_add(msg, RECOGNIZER_HEADER_CONFIDENCE_THRESHOLD);
    -		break;
    -
    -	case RECOGNIZER_HEADER_SENSITIVITY_LEVEL:
    -		recog_hdr->sensitivity_level = (float) atof(val);
    -		mrcp_resource_header_property_add(msg, RECOGNIZER_HEADER_SENSITIVITY_LEVEL);
    -		break;
    -
    -	case RECOGNIZER_HEADER_SPEED_VS_ACCURACY:
    -		recog_hdr->speed_vs_accuracy = (float) atof(val);
    -		mrcp_resource_header_property_add(msg, RECOGNIZER_HEADER_SPEED_VS_ACCURACY);
    -		break;
    -
    -	case RECOGNIZER_HEADER_N_BEST_LIST_LENGTH:{
    -			int n_best_list_length = atoi(val);
    -			if (n_best_list_length > 0) {
    -				recog_hdr->n_best_list_length = n_best_list_length;
    -				mrcp_resource_header_property_add(msg, RECOGNIZER_HEADER_N_BEST_LIST_LENGTH);
    -			} else {
    -				switch_log_printf(SWITCH_CHANNEL_UUID_LOG(schannel->session_uuid), SWITCH_LOG_WARNING, "(%s) Ignoring invalid n best list length, \"%s\"\n", schannel->name, val);
    -			}
    -			break;
    -		}
    -	case RECOGNIZER_HEADER_NO_INPUT_TIMEOUT:{
    -			int no_input_timeout = atoi(val);
    -			if (no_input_timeout >= 0) {
    -				recog_hdr->no_input_timeout = no_input_timeout;
    -				mrcp_resource_header_property_add(msg, RECOGNIZER_HEADER_NO_INPUT_TIMEOUT);
    -			} else {
    -				switch_log_printf(SWITCH_CHANNEL_UUID_LOG(schannel->session_uuid), SWITCH_LOG_WARNING, "(%s) Ignoring invalid no input timeout, \"%s\"\n", schannel->name, val);
    -			}
    -			break;
    -		}
    -	case RECOGNIZER_HEADER_RECOGNITION_TIMEOUT:{
    -			int recognition_timeout = atoi(val);
    -			if (recognition_timeout >= 0) {
    -				recog_hdr->recognition_timeout = recognition_timeout;
    -				mrcp_resource_header_property_add(msg, RECOGNIZER_HEADER_RECOGNITION_TIMEOUT);
    -			} else {
    -				switch_log_printf(SWITCH_CHANNEL_UUID_LOG(schannel->session_uuid), SWITCH_LOG_WARNING, "(%s) Ignoring invalid recognition timeout, \"%s\"\n", schannel->name, val);
    -			}
    -			break;
    -		}
    -	case RECOGNIZER_HEADER_START_INPUT_TIMERS:
    -		recog_hdr->start_input_timers = !strcasecmp("true", val);
    -		mrcp_resource_header_property_add(msg, RECOGNIZER_HEADER_START_INPUT_TIMERS);
    -		break;
    -	case RECOGNIZER_HEADER_SPEECH_COMPLETE_TIMEOUT:{
    -			int speech_complete_timeout = atoi(val);
    -			if (speech_complete_timeout >= 0) {
    -				recog_hdr->speech_complete_timeout = speech_complete_timeout;
    -				mrcp_resource_header_property_add(msg, RECOGNIZER_HEADER_SPEECH_COMPLETE_TIMEOUT);
    -			} else {
    -				switch_log_printf(SWITCH_CHANNEL_UUID_LOG(schannel->session_uuid), SWITCH_LOG_WARNING, "(%s) Ignoring invalid speech complete timeout, \"%s\"\n", schannel->name, val);
    -			}
    -			break;
    -		}
    -	case RECOGNIZER_HEADER_SPEECH_INCOMPLETE_TIMEOUT:{
    -			int speech_incomplete_timeout = atoi(val);
    -			if (speech_incomplete_timeout >= 0) {
    -				recog_hdr->speech_incomplete_timeout = speech_incomplete_timeout;
    -				mrcp_resource_header_property_add(msg, RECOGNIZER_HEADER_SPEECH_INCOMPLETE_TIMEOUT);
    -			} else {
    -				switch_log_printf(SWITCH_CHANNEL_UUID_LOG(schannel->session_uuid), SWITCH_LOG_WARNING, "(%s) Ignoring invalid speech incomplete timeout, \"%s\"\n", schannel->name,
    -								  val);
    -			}
    -			break;
    -		}
    -	case RECOGNIZER_HEADER_DTMF_INTERDIGIT_TIMEOUT:{
    -			int dtmf_interdigit_timeout = atoi(val);
    -			if (dtmf_interdigit_timeout >= 0) {
    -				recog_hdr->dtmf_interdigit_timeout = dtmf_interdigit_timeout;
    -				mrcp_resource_header_property_add(msg, RECOGNIZER_HEADER_DTMF_INTERDIGIT_TIMEOUT);
    -			} else {
    -				switch_log_printf(SWITCH_CHANNEL_UUID_LOG(schannel->session_uuid), SWITCH_LOG_WARNING, "(%s) Ignoring invalid dtmf interdigit timeout, \"%s\"\n", schannel->name, val);
    -			}
    -			break;
    -		}
    -	case RECOGNIZER_HEADER_DTMF_TERM_TIMEOUT:{
    -			int dtmf_term_timeout = atoi(val);
    -			if (dtmf_term_timeout >= 0) {
    -				recog_hdr->dtmf_term_timeout = dtmf_term_timeout;
    -				mrcp_resource_header_property_add(msg, RECOGNIZER_HEADER_DTMF_TERM_TIMEOUT);
    -			} else {
    -				switch_log_printf(SWITCH_CHANNEL_UUID_LOG(schannel->session_uuid), SWITCH_LOG_WARNING, "(%s) Ignoring invalid dtmf term timeout, \"%s\"\n", schannel->name, val);
    -			}
    -			break;
    -		}
    -	case RECOGNIZER_HEADER_DTMF_TERM_CHAR:
    -		if (strlen(val) == 1) {
    -			recog_hdr->dtmf_term_char = *val;
    -			mrcp_resource_header_property_add(msg, RECOGNIZER_HEADER_DTMF_TERM_CHAR);
    -		} else {
    -			switch_log_printf(SWITCH_CHANNEL_UUID_LOG(schannel->session_uuid), SWITCH_LOG_WARNING, "(%s) Ignoring invalid dtmf term char, \"%s\"\n", schannel->name, val);
    -		}
    -		break;
    -
    -	case RECOGNIZER_HEADER_SAVE_WAVEFORM:
    -		recog_hdr->save_waveform = !strcasecmp("true", val);
    -		mrcp_resource_header_property_add(msg, RECOGNIZER_HEADER_SAVE_WAVEFORM);
    -		break;
    -
    -	case RECOGNIZER_HEADER_NEW_AUDIO_CHANNEL:
    -		recog_hdr->new_audio_channel = !strcasecmp("true", val);
    -		mrcp_resource_header_property_add(msg, RECOGNIZER_HEADER_NEW_AUDIO_CHANNEL);
    -		break;
    -
    -	case RECOGNIZER_HEADER_SPEECH_LANGUAGE:
    -		apt_string_assign(&recog_hdr->speech_language, val, msg->pool);
    -		mrcp_resource_header_property_add(msg, RECOGNIZER_HEADER_SPEECH_LANGUAGE);
    -		break;
    -
    -	case RECOGNIZER_HEADER_RECOGNITION_MODE:
    -		apt_string_assign(&recog_hdr->recognition_mode, val, msg->pool);
    -		mrcp_resource_header_property_add(msg, RECOGNIZER_HEADER_RECOGNITION_MODE);
    -		break;
    -
    -	case RECOGNIZER_HEADER_HOTWORD_MAX_DURATION:{
    -			int hotword_max_duration = atoi(val);
    -			if (hotword_max_duration >= 0) {
    -				recog_hdr->hotword_max_duration = hotword_max_duration;
    -				mrcp_resource_header_property_add(msg, RECOGNIZER_HEADER_HOTWORD_MAX_DURATION);
    -			} else {
    -				switch_log_printf(SWITCH_CHANNEL_UUID_LOG(schannel->session_uuid), SWITCH_LOG_WARNING, "(%s) Ignoring invalid hotword max duration, \"%s\"\n", schannel->name, val);
    -			}
    -			break;
    -		}
    -	case RECOGNIZER_HEADER_HOTWORD_MIN_DURATION:{
    -			int hotword_min_duration = atoi(val);
    -			if (hotword_min_duration >= 0) {
    -				recog_hdr->hotword_min_duration = hotword_min_duration;
    -				mrcp_resource_header_property_add(msg, RECOGNIZER_HEADER_HOTWORD_MIN_DURATION);
    -			} else {
    -				switch_log_printf(SWITCH_CHANNEL_UUID_LOG(schannel->session_uuid), SWITCH_LOG_WARNING, "(%s) Ignoring invalid hotword min duration, \"%s\"\n", schannel->name, val);
    -			}
    -			break;
    -		}
    -	case RECOGNIZER_HEADER_CLEAR_DTMF_BUFFER:
    -		recog_hdr->clear_dtmf_buffer = !strcasecmp("true", val);
    -		mrcp_resource_header_property_add(msg, RECOGNIZER_HEADER_CLEAR_DTMF_BUFFER);
    -		break;
    -
    -	case RECOGNIZER_HEADER_EARLY_NO_MATCH:
    -		recog_hdr->early_no_match = !strcasecmp("true", val);
    -		mrcp_resource_header_property_add(msg, RECOGNIZER_HEADER_EARLY_NO_MATCH);
    -		break;
    -
    -	case RECOGNIZER_HEADER_INPUT_WAVEFORM_URI:
    -		apt_string_assign(&recog_hdr->input_waveform_uri, val, msg->pool);
    -		mrcp_resource_header_property_add(msg, RECOGNIZER_HEADER_INPUT_WAVEFORM_URI);
    -		break;
    -
    -	case RECOGNIZER_HEADER_MEDIA_TYPE:
    -		apt_string_assign(&recog_hdr->media_type, val, msg->pool);
    -		mrcp_resource_header_property_add(msg, RECOGNIZER_HEADER_MEDIA_TYPE);
    -		break;
    -
    -		/* Unsupported headers */
    -
    -		/* MRCP server headers */
    -	case RECOGNIZER_HEADER_WAVEFORM_URI:
    -	case RECOGNIZER_HEADER_COMPLETION_CAUSE:
    -	case RECOGNIZER_HEADER_FAILED_URI:
    -	case RECOGNIZER_HEADER_FAILED_URI_CAUSE:
    -	case RECOGNIZER_HEADER_INPUT_TYPE:
    -	case RECOGNIZER_HEADER_COMPLETION_REASON:
    -		/* module handles this automatically */
    -	case RECOGNIZER_HEADER_CANCEL_IF_QUEUE:
    -		/* GET-PARAMS method only */
    -	case RECOGNIZER_HEADER_RECOGNIZER_CONTEXT_BLOCK:
    -	case RECOGNIZER_HEADER_DTMF_BUFFER_TIME:
    -
    -		/* INTERPRET method only */
    -	case RECOGNIZER_HEADER_INTERPRET_TEXT:
    -
    -		/* unknown */
    -	case RECOGNIZER_HEADER_VER_BUFFER_UTTERANCE:
    -
    -	default:
    -		switch_log_printf(SWITCH_CHANNEL_UUID_LOG(schannel->session_uuid), SWITCH_LOG_WARNING, "(%s) unsupported RECOGNIZER header\n", schannel->name);
    -	}
    -
    -	return status;
    -}
    -
    -/**
    - * Flag that the recognizer channel timers are started
    - * @param schannel the recognizer channel to flag
    - */
    -static switch_status_t recog_channel_set_timers_started(speech_channel_t *schannel)
    -{
    -	recognizer_data_t *r;
    -	switch_mutex_lock(schannel->mutex);
    -	r = (recognizer_data_t *) schannel->data;
    -	r->timers_started = 1;
    -	switch_mutex_unlock(schannel->mutex);
    -	return SWITCH_STATUS_SUCCESS;
    -}
    -
    -/**
    - * Process asr_open request from FreeSWITCH.
    - *
    - * @param ah the FreeSWITCH speech rec handle
    - * @param codec the codec to use
    - * @param rate the sample rate of the codec
    - * @param dest the profile to use
    - * @param flags other flags
    - * @return SWITCH_STATUS_SUCCESS if successful, otherwise SWITCH_STATUS_FALSE
    - */
    -static switch_status_t recog_asr_open(switch_asr_handle_t *ah, const char *codec, int rate, const char *dest, switch_asr_flag_t *flags)
    -{
    -	switch_status_t status = SWITCH_STATUS_SUCCESS;
    -	speech_channel_t *schannel = NULL;
    -	int speech_channel_number = get_next_speech_channel_number();
    -	char *name = "";
    -	const char *profile_name = !zstr(dest) ? dest : ah->param;
    -	profile_t *profile = NULL;
    -	recognizer_data_t *r = NULL;
    -	switch_hash_index_t *hi = NULL;
    -	char *session_uuid = NULL;
    -
    -	/* Name the channel */
    -	if (profile_name && strchr(profile_name, ':')) {
    -		/* Profile has session name appended to it.  Pick it out */
    -		profile_name = switch_core_strdup(ah->memory_pool, profile_name);
    -		session_uuid = strchr(profile_name, ':');
    -		*session_uuid = '\0';
    -		session_uuid++;
    -		session_uuid = switch_core_strdup(ah->memory_pool, session_uuid);
    -	} else {
    -		/* check if session is associated w/ this memory pool */
    -		switch_core_session_t *session = switch_core_memory_pool_get_data(ah->memory_pool, "__session");
    -		if (session) {
    -			session_uuid = switch_core_session_get_uuid(session);
    -		}
    -	}
    -	name = switch_core_sprintf(ah->memory_pool, "ASR-%d", speech_channel_number);
    -
    -	switch_log_printf(SWITCH_CHANNEL_UUID_LOG(session_uuid), SWITCH_LOG_INFO, "asr_handle: name = %s, codec = %s, rate = %d, grammar = %s, param = %s\n",
    -					  ah->name, ah->codec, ah->rate, ah->grammar, ah->param);
    -	switch_log_printf(SWITCH_CHANNEL_UUID_LOG(session_uuid), SWITCH_LOG_INFO, "codec = %s, rate = %d, dest = %s\n", codec, rate, dest);
    -
    -	/* Allocate the channel */
    -	if (speech_channel_create(&schannel, name, session_uuid, SPEECH_CHANNEL_RECOGNIZER, &globals.recog, (uint16_t) rate, ah->memory_pool) != SWITCH_STATUS_SUCCESS) {
    -		status = SWITCH_STATUS_FALSE;
    -		goto done;
    -	}
    -	schannel->fsh = ah;
    -	ah->private_info = schannel;
    -	r = (recognizer_data_t *) switch_core_alloc(ah->memory_pool, sizeof(recognizer_data_t));
    -	schannel->data = r;
    -	memset(r, 0, sizeof(recognizer_data_t));
    -	switch_core_hash_init(&r->grammars);
    -	switch_core_hash_init(&r->enabled_grammars);
    -
    -	/* Open the channel */
    -	if (zstr(profile_name)) {
    -		profile_name = globals.unimrcp_default_recog_profile;
    -	}
    -	profile = (profile_t *) switch_core_hash_find(globals.profiles, profile_name);
    -	if (!profile) {
    -		switch_log_printf(SWITCH_CHANNEL_UUID_LOG(session_uuid), SWITCH_LOG_ERROR, "(%s) Can't find profile, %s\n", name, profile_name);
    -		status = SWITCH_STATUS_FALSE;
    -		goto done;
    -	}
    -	if ((status = speech_channel_open(schannel, profile)) != SWITCH_STATUS_SUCCESS) {
    -		goto done;
    -	}
    -
    -	/* Set default ASR params */
    -	for (hi = switch_core_hash_first(profile->default_recog_params); hi; hi = switch_core_hash_next(&hi)) {
    -		char *param_name = NULL, *param_val = NULL;
    -		const void *key;
    -		void *val;
    -		switch_core_hash_this(hi, &key, NULL, &val);
    -		param_name = (char *) key;
    -		param_val = (char *) val;
    -		speech_channel_set_param(schannel, param_name, param_val);
    -	}
    -
    -  done:
    -
    -	return status;
    -}
    -
    -/**
    - * Process asr_load_grammar request from FreeSWITCH.
    - *
    - * FreeSWITCH sends this request to load a grammar
    - * @param ah the FreeSWITCH speech recognition handle
    - * @param grammar the grammar data.  This can be an absolute file path, a URI, or the grammar text.
    - * @param name used to reference grammar for unloading or for recognition requests
    - */
    -static switch_status_t recog_asr_load_grammar(switch_asr_handle_t *ah, const char *grammar, const char *name)
    -{
    -	switch_status_t status = SWITCH_STATUS_SUCCESS;
    -	speech_channel_t *schannel = (speech_channel_t *) ah->private_info;
    -	const char *grammar_data = NULL;
    -	char *grammar_file_data = NULL;
    -	char *start_recognize;
    -	switch_file_t *grammar_file = NULL;
    -	switch_size_t grammar_file_size = 0, to_read = 0;
    -	grammar_type_t type = GRAMMAR_TYPE_UNKNOWN;
    -	char *filename = NULL;
    -
    -	switch_log_printf(SWITCH_CHANNEL_UUID_LOG(schannel->session_uuid), SWITCH_LOG_DEBUG, "(%s) grammar = %s, name = %s\n", schannel->name, grammar, name);
    -
    -	grammar = skip_initial_whitespace(grammar);
    -	if (zstr(grammar)) {
    -		status = SWITCH_STATUS_FALSE;
    -		goto done;
    -	}
    -
    -	/* stop recognition */
    -	if (speech_channel_stop(schannel) != SWITCH_STATUS_SUCCESS) {
    -		status = SWITCH_STATUS_FALSE;
    -		goto done;
    -	}
    -
    -	/* figure out what type of grammar this is */
    -	if (text_starts_with(grammar, HTTP_ID) || text_starts_with(grammar, HTTPS_ID) || text_starts_with(grammar, FILE_ID) || text_starts_with(grammar, SESSION_ID)
    -		|| text_starts_with(grammar, BUILTIN_ID)) {
    -		switch_log_printf(SWITCH_CHANNEL_UUID_LOG(schannel->session_uuid), SWITCH_LOG_DEBUG, "(%s) Grammar is URI\n", schannel->name);
    -		type = GRAMMAR_TYPE_URI;
    -		grammar_data = grammar;
    -	} else if (text_starts_with(grammar, INLINE_ID)) {
    -		grammar_data = grammar + strlen(INLINE_ID);
    -	} else {
    -		/* grammar points to file containing the grammar text.  We assume the MRCP server can't get to this file
    -		 * so read the data from the file and cache it */
    -		switch_log_printf(SWITCH_CHANNEL_UUID_LOG(schannel->session_uuid), SWITCH_LOG_DEBUG, "(%s) Grammar is inside file\n", schannel->name);
    -		if (switch_is_file_path(grammar)) {
    -			filename = switch_mprintf("%s.gram", grammar);
    -		} else {
    -			filename = switch_mprintf("%s%s%s.gram", SWITCH_GLOBAL_dirs.grammar_dir, SWITCH_PATH_SEPARATOR, grammar);
    -		}
    -		grammar_data = NULL;
    -		if (switch_file_open(&grammar_file, filename, SWITCH_FOPEN_READ, 0, schannel->memory_pool) != SWITCH_STATUS_SUCCESS) {
    -			switch_log_printf(SWITCH_CHANNEL_UUID_LOG(schannel->session_uuid), SWITCH_LOG_ERROR, "(%s) Could not read grammar file: %s\n", schannel->name, filename);
    -			status = SWITCH_STATUS_FALSE;
    -			goto done;
    -		}
    -		grammar_file_size = switch_file_get_size(grammar_file);
    -		if (grammar_file_size == 0) {
    -			switch_log_printf(SWITCH_CHANNEL_UUID_LOG(schannel->session_uuid), SWITCH_LOG_ERROR, "(%s) Grammar file is empty: %s\n", schannel->name, filename);
    -			status = SWITCH_STATUS_FALSE;
    -			goto done;
    -		}
    -		grammar_file_data = (char *) switch_core_alloc(schannel->memory_pool, grammar_file_size + 1);
    -		to_read = grammar_file_size;
    -		if (switch_file_read(grammar_file, grammar_file_data, &to_read) != SWITCH_STATUS_SUCCESS) {
    -			switch_log_printf(SWITCH_CHANNEL_UUID_LOG(schannel->session_uuid), SWITCH_LOG_ERROR, "(%s) Grammar file read error: %s\n", schannel->name, filename);
    -			status = SWITCH_STATUS_FALSE;
    -			goto done;
    -		}
    -		if (to_read != grammar_file_size) {
    -			switch_log_printf(SWITCH_CHANNEL_UUID_LOG(schannel->session_uuid), SWITCH_LOG_ERROR, "(%s) Could not read entire grammar file: %s\n", schannel->name, filename);
    -			status = SWITCH_STATUS_FALSE;
    -			goto done;
    -		}
    -		grammar_file_data[to_read] = '\0';
    -		grammar_data = grammar_file_data;
    -	}
    -
    -	/* if a name was not given, check if defined in a param */
    -	if (zstr(name)) {
    -		name = switch_core_hash_find(schannel->params, "name");
    -
    -		/* if not defined in param, create one */
    -		if (zstr(name)) {
    -			char id[SWITCH_UUID_FORMATTED_LENGTH + 1] = { 0 };
    -			switch_uuid_str(id, sizeof(id));
    -			name = switch_core_strdup(schannel->memory_pool, id);
    -		}
    -	}
    -
    -	/* determine content type of file grammar or inline grammar */
    -	if (type == GRAMMAR_TYPE_UNKNOWN) {
    -		if (text_starts_with(grammar_data, XML_ID) || text_starts_with(grammar_data, SRGS_ID)) {
    -			type = GRAMMAR_TYPE_SRGS_XML;
    -		} else if (text_starts_with(grammar_data, GSL_ID)) {
    -			type = GRAMMAR_TYPE_NUANCE_GSL;
    -		} else if (text_starts_with(grammar_data, ABNF_ID)) {
    -			type = GRAMMAR_TYPE_SRGS;
    -		} else if (text_starts_with(grammar_data, JSGF_ID)) {
    -			type = GRAMMAR_TYPE_JSGF;
    -		} else if (text_starts_with(grammar_data, GSR_ID)) {
    -			type = GRAMMAR_TYPE_XML;
    -		} else {
    -			switch_log_printf(SWITCH_CHANNEL_UUID_LOG(schannel->session_uuid), SWITCH_LOG_ERROR, "(%s) unable to determine grammar type: %s\n", schannel->name, grammar_data);
    -			status = SWITCH_STATUS_FALSE;
    -			goto done;
    -		}
    -	}
    -	switch_log_printf(SWITCH_CHANNEL_UUID_LOG(schannel->session_uuid), SWITCH_LOG_DEBUG, "(%s) grammar is %s\n", schannel->name, grammar_type_to_mime(type, schannel->profile));
    -
    -	/* load the grammar */
    -	if (recog_channel_load_grammar(schannel, name, type, grammar_data) != SWITCH_STATUS_SUCCESS) {
    -		status = SWITCH_STATUS_FALSE;
    -		goto done;
    -	}
    -
    -	start_recognize = (char *) switch_core_hash_find(schannel->params, "start-recognize");
    -	if (zstr(start_recognize) || strcasecmp(start_recognize, "false"))
    -	{
    -		if (recog_channel_disable_all_grammars(schannel) != SWITCH_STATUS_SUCCESS) {
    -			status = SWITCH_STATUS_FALSE;
    -			goto done;
    -		}
    -		if (recog_channel_enable_grammar(schannel, name) != SWITCH_STATUS_SUCCESS) {
    -			status = SWITCH_STATUS_FALSE;
    -			goto done;
    -		}
    -		status = recog_channel_start(schannel);
    -	}
    -
    -  done:
    -
    -	switch_safe_free(filename);
    -	if (grammar_file) {
    -		switch_file_close(grammar_file);
    -	}
    -	return status;
    -}
    -
    -/**
    - * Process asr_unload_grammar request from FreeSWITCH.
    - *
    - * FreeSWITCH sends this request to stop recognition on this grammar.
    - * @param ah the FreeSWITCH speech recognition handle
    - * @param name the grammar name.
    - */
    -static switch_status_t recog_asr_unload_grammar(switch_asr_handle_t *ah, const char *name)
    -{
    -	switch_status_t status = SWITCH_STATUS_SUCCESS;
    -	speech_channel_t *schannel = (speech_channel_t *) ah->private_info;
    -	if (zstr(name) || speech_channel_stop(schannel) != SWITCH_STATUS_SUCCESS || recog_channel_unload_grammar(schannel, name) != SWITCH_STATUS_SUCCESS) {
    -		status = SWITCH_STATUS_FALSE;
    -	}
    -	return status;
    -}
    -
    -/**
    - * Process asr_enable_grammar request from FreeSWITCH.
    - *
    - * FreeSWITCH sends this request to enable recognition on this grammar.
    - * @param ah the FreeSWITCH speech recognition handle
    - * @param name the grammar name.
    - */
    -static switch_status_t recog_asr_enable_grammar(switch_asr_handle_t *ah, const char *name)
    -{
    -	switch_status_t status = SWITCH_STATUS_SUCCESS;
    -	speech_channel_t *schannel = (speech_channel_t *) ah->private_info;
    -	if (zstr(name) || speech_channel_stop(schannel) != SWITCH_STATUS_SUCCESS || recog_channel_enable_grammar(schannel, name) != SWITCH_STATUS_SUCCESS) {
    -		status = SWITCH_STATUS_FALSE;
    -	}
    -	return status;
    -}
    -
    -/**
    - * Process asr_disable_grammar request from FreeSWITCH.
    - *
    - * FreeSWITCH sends this request to disable recognition on this grammar.
    - * @param ah the FreeSWITCH speech recognition handle
    - * @param name the grammar name.
    - */
    -static switch_status_t recog_asr_disable_grammar(switch_asr_handle_t *ah, const char *name)
    -{
    -	switch_status_t status = SWITCH_STATUS_SUCCESS;
    -	speech_channel_t *schannel = (speech_channel_t *) ah->private_info;
    -	if (zstr(name) || speech_channel_stop(schannel) != SWITCH_STATUS_SUCCESS || recog_channel_disable_grammar(schannel, name) != SWITCH_STATUS_SUCCESS) {
    -		status = SWITCH_STATUS_FALSE;
    -	}
    -	return status;
    -}
    -
    -/**
    - * Process asr_disable_all_grammars request from FreeSWITCH.
    - *
    - * FreeSWITCH sends this request to disable recognition of all grammars.
    - * @param ah the FreeSWITCH speech recognition handle
    - * @param name the grammar name.
    - */
    -static switch_status_t recog_asr_disable_all_grammars(switch_asr_handle_t *ah)
    -{
    -	switch_status_t status = SWITCH_STATUS_SUCCESS;
    -	speech_channel_t *schannel = (speech_channel_t *) ah->private_info;
    -	if (speech_channel_stop(schannel) != SWITCH_STATUS_SUCCESS || recog_channel_disable_all_grammars(schannel) != SWITCH_STATUS_SUCCESS) {
    -		status = SWITCH_STATUS_FALSE;
    -	}
    -	return status;
    -}
    -
    -/**
    - * Process asr_close request from FreeSWITCH
    - *
    - * @param ah the FreeSWITCH speech recognition handle
    - * @param flags speech recognition flags (unused)
    - * @return SWITCH_STATUS_SUCCESS
    - */
    -static switch_status_t recog_asr_close(switch_asr_handle_t *ah, switch_asr_flag_t *flags)
    -{
    -	speech_channel_t *schannel = (speech_channel_t *) ah->private_info;
    -	recognizer_data_t *r = NULL;
    -
    -	/* close if not already closed */
    -	if (schannel != NULL && !switch_test_flag(ah, SWITCH_ASR_FLAG_CLOSED)) {
    -		r = (recognizer_data_t *) schannel->data;
    -		speech_channel_stop(schannel);
    -		switch_core_hash_destroy(&r->grammars);
    -		switch_core_hash_destroy(&r->enabled_grammars);
    -		switch_mutex_lock(schannel->mutex);
    -		if (r->dtmf_generator) {
    -			r->dtmf_generator_active = 0;
    -			mpf_dtmf_generator_destroy(r->dtmf_generator);
    -		}
    -		if (r->result_headers) {
    -			switch_event_destroy(&r->result_headers);
    -		}
    -		switch_mutex_unlock(schannel->mutex);
    -		speech_channel_destroy(schannel);
    -	}
    -	/* this lets FreeSWITCH's speech_thread know the handle is closed */
    -	switch_set_flag(ah, SWITCH_ASR_FLAG_CLOSED);
    -
    -	return SWITCH_STATUS_SUCCESS;
    -}
    -
    -/**
    - * Process asr_feed request from FreeSWITCH
    - *
    - * @param ah the FreeSWITCH speech recognition handle
    - * @return SWITCH_STATUS_SUCCESS if successful
    - */
    -static switch_status_t recog_asr_feed(switch_asr_handle_t *ah, void *data, unsigned int len, switch_asr_flag_t *flags)
    -{
    -	switch_size_t slen = len;
    -	speech_channel_t *schannel = (speech_channel_t *) ah->private_info;
    -	return speech_channel_write(schannel, data, &slen);
    -}
    -
    -/**
    - * Process asr_feed_dtmf request from FreeSWITCH
    - *
    - * @param ah the FreeSWITCH speech recognition handle
    - * @return SWITCH_STATUS_SUCCESS if successful
    - */
    -static switch_status_t recog_asr_feed_dtmf(switch_asr_handle_t *ah, const switch_dtmf_t *dtmf, switch_asr_flag_t *flags)
    -{
    -	speech_channel_t *schannel = (speech_channel_t *) ah->private_info;
    -	recognizer_data_t *r = (recognizer_data_t *) schannel->data;
    -	char digits[2];
    -
    -	if (!r->dtmf_generator) {
    -		if (!r->unimrcp_stream) {
    -			switch_log_printf(SWITCH_CHANNEL_UUID_LOG(schannel->session_uuid), SWITCH_LOG_ERROR, "(%s) Cannot queue DTMF: No UniMRCP stream object open\n", schannel->name);
    -			return SWITCH_STATUS_FALSE;
    -		}
    -		r->dtmf_generator = mpf_dtmf_generator_create(r->unimrcp_stream, schannel->unimrcp_session->pool);
    -		if (!r->dtmf_generator) {
    -			switch_log_printf(SWITCH_CHANNEL_UUID_LOG(schannel->session_uuid), SWITCH_LOG_ERROR, "(%s) Cannot queue DTMF: Failed to create DTMF generator\n", schannel->name);
    -			return SWITCH_STATUS_FALSE;
    -		}
    -	}
    -
    -	digits[0] = dtmf->digit;
    -	digits[1] = '\0';
    -	switch_log_printf(SWITCH_CHANNEL_UUID_LOG(schannel->session_uuid), SWITCH_LOG_DEBUG, "(%s) Queued DTMF: %s\n", schannel->name, digits);
    -	mpf_dtmf_generator_enqueue(r->dtmf_generator, digits);
    -	r->dtmf_generator_active = 1;
    -
    -	return SWITCH_STATUS_SUCCESS;
    -}
    -
    -/**
    - * Process asr_resume request from FreeSWITCH
    - *
    - * @param ah the FreeSWITCH speech recognition handle
    - */
    -static switch_status_t recog_asr_resume(switch_asr_handle_t *ah)
    -{
    -	speech_channel_t *schannel = (speech_channel_t *) ah->private_info;
    -	return recog_channel_start(schannel);
    -}
    -
    -/**
    - * Process asr_pause request from FreeSWITCH
    - *
    - * @param ah the FreeSWITCH speech recognition handle
    - */
    -static switch_status_t recog_asr_pause(switch_asr_handle_t *ah)
    -{
    -	speech_channel_t *schannel = (speech_channel_t *) ah->private_info;
    -	return speech_channel_stop(schannel);
    -}
    -
    -/**
    - * Process asr_check_results request from FreeSWITCH
    - * This method is polled by FreeSWITCH until we return SWITCH_STATUS_SUCCESS.  Then
    - * the results are fetched.
    - *
    - * @param ah the FreeSWITCH speech recognition handle
    - * @param flags other flags
    - */
    -static switch_status_t recog_asr_check_results(switch_asr_handle_t *ah, switch_asr_flag_t *flags)
    -{
    -	speech_channel_t *schannel = (speech_channel_t *) ah->private_info;
    -	return recog_channel_check_results(schannel);
    -}
    -
    -/**
    - * Process asr_get_results request from FreeSWITCH.  Return the XML string back
    - * to FreeSWITCH.  FreeSWITCH will free() the xmlstr.
    - *
    - * @param ah the FreeSWITCH speech recognition handle
    - * @param flags other flags
    - */
    -static switch_status_t recog_asr_get_results(switch_asr_handle_t *ah, char **xmlstr, switch_asr_flag_t *flags)
    -{
    -	speech_channel_t *schannel = (speech_channel_t *) ah->private_info;
    -	return recog_channel_get_results(schannel, xmlstr);
    -}
    -
    -/**
    - * Process asr_get_result_headers request from FreeSWITCH.  Return the headers back
    - * to FreeSWITCH.  FreeSWITCH will switch_event_destroy() the headers.
    - *
    - * @param ah the FreeSWITCH speech recognition handle
    - * @param flags other flags
    - */
    -static switch_status_t recog_asr_get_result_headers(switch_asr_handle_t *ah, switch_event_t **headers, switch_asr_flag_t *flags)
    -{
    -	speech_channel_t *schannel = (speech_channel_t *) ah->private_info;
    -	return recog_channel_get_result_headers(schannel, headers);
    -}
    -
    -/**
    - * Send START-INPUT-TIMERS to executing recognition request
    - * @param ah the handle to start timers on
    - * @return SWITCH_STATUS_SUCCESS
    - */
    -static switch_status_t recog_asr_start_input_timers(switch_asr_handle_t *ah)
    -{
    -	speech_channel_t *schannel = (speech_channel_t *) ah->private_info;
    -	return recog_channel_start_input_timers(schannel);
    -}
    -
    -/**
    - * Process text_param request from FreeSWITCH.
    - * Update MRCP session text parameters.
    - *
    - * @param ah the FreeSWITCH asr handle
    - * @param param the parameter to set
    - * @param val the value to set the parameter to
    - */
    -static void recog_asr_text_param(switch_asr_handle_t *ah, char *param, const char *val)
    -{
    -	speech_channel_t *schannel = (speech_channel_t *) ah->private_info;
    -	speech_channel_set_param(schannel, param, val);
    -}
    -
    -/**
    - * Process numeric_param request from FreeSWITCH.
    - * Update MRCP session numeric parameters
    - *
    - * @param ah the FreeSWITCH asr handle
    - * @param param the parameter to set
    - * @param val the value to set the parameter to
    - */
    -static void recog_asr_numeric_param(switch_asr_handle_t *ah, char *param, int val)
    -{
    -	speech_channel_t *schannel = (speech_channel_t *) ah->private_info;
    -	char *val_str = switch_mprintf("%d", val);
    -	speech_channel_set_param(schannel, param, val_str);
    -	switch_safe_free(val_str);
    -}
    -
    -/**
    - * Process float_param request from FreeSWITCH.
    - * Update MRCP session float parameters
    - *
    - * @param ah the FreeSWITCH asr handle
    - * @param param the parameter to set
    - * @param val the value to set the parameter to
    - */
    -static void recog_asr_float_param(switch_asr_handle_t *ah, char *param, double val)
    -{
    -	speech_channel_t *schannel = (speech_channel_t *) ah->private_info;
    -	char *val_str = switch_mprintf("%f", val);
    -	speech_channel_set_param(schannel, param, val_str);
    -	switch_safe_free(val_str);
    -}
    -
    -/**
    - * Process messages from UniMRCP for the recognizer application
    - */
    -static apt_bool_t recog_message_handler(const mrcp_app_message_t *app_message)
    -{
    -	return mrcp_application_message_dispatch(&globals.recog.dispatcher, app_message);
    -}
    -
    -/**
    - * Handle the MRCP responses/events
    - */
    -static apt_bool_t recog_on_message_receive(mrcp_application_t *application, mrcp_session_t *session, mrcp_channel_t *channel, mrcp_message_t *message)
    -{
    -	speech_channel_t *schannel = (speech_channel_t *) mrcp_application_channel_object_get(channel);
    -	mrcp_recog_header_t *recog_hdr = (mrcp_recog_header_t *) mrcp_resource_header_get(message);
    -	if (message->start_line.message_type == MRCP_MESSAGE_TYPE_RESPONSE) {
    -		/* received MRCP response */
    -		if (message->start_line.method_id == RECOGNIZER_RECOGNIZE) {
    -			/* received the response to RECOGNIZE request */
    -			if (message->start_line.request_state == MRCP_REQUEST_STATE_INPROGRESS) {
    -				/* RECOGNIZE in progress */
    -				switch_log_printf(SWITCH_CHANNEL_UUID_LOG(schannel->session_uuid), SWITCH_LOG_DEBUG, "(%s) RECOGNIZE IN PROGRESS\n", schannel->name);
    -				speech_channel_set_state(schannel, SPEECH_CHANNEL_PROCESSING);
    -			} else if (message->start_line.request_state == MRCP_REQUEST_STATE_COMPLETE) {
    -				/* RECOGNIZE failed to start */
    -				if (!recog_hdr || recog_hdr->completion_cause == RECOGNIZER_COMPLETION_CAUSE_UNKNOWN) {
    -					switch_log_printf(SWITCH_CHANNEL_UUID_LOG(schannel->session_uuid), SWITCH_LOG_DEBUG, "(%s) RECOGNIZE failed: status = %d\n", schannel->name,
    -									  message->start_line.status_code);
    -				} else {
    -					switch_log_printf(SWITCH_CHANNEL_UUID_LOG(schannel->session_uuid), SWITCH_LOG_DEBUG, "(%s) RECOGNIZE failed: status = %d, completion-cause = %03d\n",
    -									  schannel->name, message->start_line.status_code, recog_hdr->completion_cause);
    -				}
    -				speech_channel_set_state(schannel, SPEECH_CHANNEL_ERROR);
    -			} else if (message->start_line.request_state == MRCP_REQUEST_STATE_PENDING) {
    -				/* RECOGNIZE is queued */
    -				switch_log_printf(SWITCH_CHANNEL_UUID_LOG(schannel->session_uuid), SWITCH_LOG_DEBUG, "(%s) RECOGNIZE PENDING\n", schannel->name);
    -			} else {
    -				/* received unexpected request_state */
    -				switch_log_printf(SWITCH_CHANNEL_UUID_LOG(schannel->session_uuid), SWITCH_LOG_DEBUG, "(%s) unexpected RECOGNIZE request state: %d\n", schannel->name,
    -								  message->start_line.request_state);
    -				speech_channel_set_state(schannel, SPEECH_CHANNEL_ERROR);
    -			}
    -		} else if (message->start_line.method_id == RECOGNIZER_STOP) {
    -			/* received response to the STOP request */
    -			if (message->start_line.request_state == MRCP_REQUEST_STATE_COMPLETE) {
    -				/* got COMPLETE */
    -				switch_log_printf(SWITCH_CHANNEL_UUID_LOG(schannel->session_uuid), SWITCH_LOG_DEBUG, "(%s) RECOGNIZE STOPPED\n", schannel->name);
    -				speech_channel_set_state(schannel, SPEECH_CHANNEL_READY);
    -			} else {
    -				/* received unexpected request state */
    -				switch_log_printf(SWITCH_CHANNEL_UUID_LOG(schannel->session_uuid), SWITCH_LOG_DEBUG, "(%s) unexpected STOP request state: %d\n", schannel->name,
    -								  message->start_line.request_state);
    -				speech_channel_set_state(schannel, SPEECH_CHANNEL_ERROR);
    -			}
    -		} else if (message->start_line.method_id == RECOGNIZER_START_INPUT_TIMERS) {
    -			/* received response to START-INPUT-TIMERS request */
    -			if (message->start_line.request_state == MRCP_REQUEST_STATE_COMPLETE) {
    -				if (message->start_line.status_code >= 200 && message->start_line.status_code <= 299) {
    -					switch_log_printf(SWITCH_CHANNEL_UUID_LOG(schannel->session_uuid), SWITCH_LOG_DEBUG, "(%s) timers started\n", schannel->name);
    -					recog_channel_set_timers_started(schannel);
    -				} else {
    -					switch_log_printf(SWITCH_CHANNEL_UUID_LOG(schannel->session_uuid), SWITCH_LOG_DEBUG, "(%s) timers failed to start, status code = %d\n", schannel->name,
    -									  message->start_line.status_code);
    -				}
    -			}
    -		} else if (message->start_line.method_id == RECOGNIZER_DEFINE_GRAMMAR) {
    -			/* received response to DEFINE-GRAMMAR request */
    -			if (message->start_line.request_state == MRCP_REQUEST_STATE_COMPLETE) {
    -				if (message->start_line.status_code >= 200 && message->start_line.status_code <= 299) {
    -					switch_log_printf(SWITCH_CHANNEL_UUID_LOG(schannel->session_uuid), SWITCH_LOG_DEBUG, "(%s) grammar loaded\n", schannel->name);
    -					speech_channel_set_state(schannel, SPEECH_CHANNEL_READY);
    -				} else {
    -					switch_log_printf(SWITCH_CHANNEL_UUID_LOG(schannel->session_uuid), SWITCH_LOG_DEBUG, "(%s) grammar failed to load, status code = %d\n", schannel->name,
    -									  message->start_line.status_code);
    -					speech_channel_set_state(schannel, SPEECH_CHANNEL_ERROR);
    -				}
    -			}
    -		} else {
    -			/* received unexpected response */
    -			switch_log_printf(SWITCH_CHANNEL_UUID_LOG(schannel->session_uuid), SWITCH_LOG_DEBUG, "(%s) unexpected response, method_id = %d\n", schannel->name,
    -							  (int) message->start_line.method_id);
    -			speech_channel_set_state(schannel, SPEECH_CHANNEL_ERROR);
    -		}
    -	} else if (message->start_line.message_type == MRCP_MESSAGE_TYPE_EVENT) {
    -		/* received MRCP event */
    -		if (message->start_line.method_id == RECOGNIZER_RECOGNITION_COMPLETE) {
    -			switch_log_printf(SWITCH_CHANNEL_UUID_LOG(schannel->session_uuid), SWITCH_LOG_DEBUG, "(%s) RECOGNITION COMPLETE, Completion-Cause: %03d\n", schannel->name,
    -							  recog_hdr->completion_cause);
    -			if (message->body.length > 0) {
    -				if (message->body.buf[message->body.length - 1] == '\0') {
    -					recog_channel_set_result_headers(schannel, recog_hdr);
    -					recog_channel_set_results(schannel, message->body.buf);
    -				} else {
    -					/* string is not null terminated */
    -					char *result = (char *) switch_core_alloc(schannel->memory_pool, message->body.length + 1);
    -					switch_log_printf(SWITCH_CHANNEL_LOG, SWITCH_LOG_DEBUG,
    -									  "(%s) Recognition result is not null-terminated.  Appending null terminator.\n", schannel->name);
    -					strncpy(result, message->body.buf, message->body.length);
    -					result[message->body.length] = '\0';
    -					recog_channel_set_result_headers(schannel, recog_hdr);
    -					recog_channel_set_results(schannel, result);
    -				}
    -			} else {
    -				char *completion_cause = switch_mprintf("Completion-Cause: %03d", recog_hdr->completion_cause);
    -				switch_log_printf(SWITCH_CHANNEL_UUID_LOG(schannel->session_uuid), SWITCH_LOG_DEBUG, "(%s) No result\n", schannel->name);
    -				recog_channel_set_result_headers(schannel, recog_hdr);
    -				recog_channel_set_results(schannel, completion_cause);
    -				switch_safe_free(completion_cause);
    -			}
    -			speech_channel_set_state(schannel, SPEECH_CHANNEL_READY);
    -		} else if (message->start_line.method_id == RECOGNIZER_START_OF_INPUT) {
    -			switch_log_printf(SWITCH_CHANNEL_UUID_LOG(schannel->session_uuid), SWITCH_LOG_DEBUG, "(%s) START OF INPUT\n", schannel->name);
    -			recog_channel_set_start_of_input(schannel);
    -		} else {
    -			switch_log_printf(SWITCH_CHANNEL_UUID_LOG(schannel->session_uuid), SWITCH_LOG_DEBUG, "(%s) unexpected event, method_id = %d\n", schannel->name,
    -							  (int) message->start_line.method_id);
    -			speech_channel_set_state(schannel, SPEECH_CHANNEL_ERROR);
    -		}
    -	} else {
    -		switch_log_printf(SWITCH_CHANNEL_UUID_LOG(schannel->session_uuid), SWITCH_LOG_DEBUG, "(%s) unexpected message type, message_type = %d\n", schannel->name,
    -						  message->start_line.message_type);
    -		speech_channel_set_state(schannel, SPEECH_CHANNEL_ERROR);
    -	}
    -
    -	return TRUE;
    -}
    -
    -/**
    - * UniMRCP callback requesting open for speech recognition
    - *
    - * @param stream the UniMRCP stream
    - * @param codec the codec
    - * @return TRUE
    - */
    -static apt_bool_t recog_stream_open(mpf_audio_stream_t *stream, mpf_codec_t *codec)
    -{
    -	speech_channel_t *schannel = (speech_channel_t *) stream->obj;
    -	recognizer_data_t *r = (recognizer_data_t *) schannel->data;
    -
    -	r->unimrcp_stream = stream;
    -
    -	return TRUE;
    -}
    -
    -/**
    - * UniMRCP callback requesting next frame for speech recognition
    - *
    - * @param stream the UniMRCP stream
    - * @param frame the frame to fill
    - * @return TRUE
    - */
    -static apt_bool_t recog_stream_read(mpf_audio_stream_t *stream, mpf_frame_t *frame)
    -{
    -	speech_channel_t *schannel = (speech_channel_t *) stream->obj;
    -	recognizer_data_t *r = (recognizer_data_t *) schannel->data;
    -	switch_size_t to_read = frame->codec_frame.size;
    -
    -	/* grab the data.  pad it if there isn't enough */
    -	if (speech_channel_read(schannel, frame->codec_frame.buffer, &to_read, 0) == SWITCH_STATUS_SUCCESS) {
    -		if (to_read < frame->codec_frame.size) {
    -			memset((uint8_t *) frame->codec_frame.buffer + to_read, schannel->silence, frame->codec_frame.size - to_read);
    -		}
    -		frame->type |= MEDIA_FRAME_TYPE_AUDIO;
    -	}
    -
    -	switch_mutex_lock(schannel->mutex);
    -	if (r->dtmf_generator_active) {
    -		if (!mpf_dtmf_generator_put_frame(r->dtmf_generator, frame)) {
    -			if (!mpf_dtmf_generator_sending(r->dtmf_generator))
    -				r->dtmf_generator_active = 0;
    -		}
    -	}
    -	switch_mutex_unlock(schannel->mutex);
    -
    -	return TRUE;
    -}
    -
    -/**
    - * Link the recognizer module interface to FreeSWITCH and UniMRCP
    - */
    -static switch_status_t recog_load(switch_loadable_module_interface_t *module_interface, switch_memory_pool_t *pool)
    -{
    -	/* link to FreeSWITCH ASR / TTS callbacks */
    -	switch_asr_interface_t *asr_interface = NULL;
    -	if ((asr_interface = (switch_asr_interface_t *) switch_loadable_module_create_interface(module_interface, SWITCH_ASR_INTERFACE)) == NULL) {
    -		return SWITCH_STATUS_FALSE;
    -	}
    -	asr_interface->interface_name = MOD_UNIMRCP;
    -	asr_interface->asr_open = recog_asr_open;
    -	asr_interface->asr_load_grammar = recog_asr_load_grammar;
    -	asr_interface->asr_unload_grammar = recog_asr_unload_grammar;
    -	asr_interface->asr_enable_grammar = recog_asr_enable_grammar;
    -	asr_interface->asr_disable_grammar = recog_asr_disable_grammar;
    -	asr_interface->asr_disable_all_grammars = recog_asr_disable_all_grammars;
    -	asr_interface->asr_close = recog_asr_close;
    -	asr_interface->asr_feed = recog_asr_feed;
    -	asr_interface->asr_feed_dtmf = recog_asr_feed_dtmf;
    -	asr_interface->asr_resume = recog_asr_resume;
    -	asr_interface->asr_pause = recog_asr_pause;
    -	asr_interface->asr_check_results = recog_asr_check_results;
    -	asr_interface->asr_get_results = recog_asr_get_results;
    -	asr_interface->asr_get_result_headers = recog_asr_get_result_headers;
    -	asr_interface->asr_start_input_timers = recog_asr_start_input_timers;
    -	asr_interface->asr_text_param = recog_asr_text_param;
    -	asr_interface->asr_numeric_param = recog_asr_numeric_param;
    -	asr_interface->asr_float_param = recog_asr_float_param;
    -
    -	/* Create the recognizer application and link its callbacks */
    -	if ((globals.recog.app = mrcp_application_create(recog_message_handler, (void *) 0, pool)) == NULL) {
    -		return SWITCH_STATUS_FALSE;
    -	}
    -	globals.recog.dispatcher.on_session_update = NULL;
    -	globals.recog.dispatcher.on_session_terminate = speech_on_session_terminate;
    -	globals.recog.dispatcher.on_channel_add = speech_on_channel_add;
    -	globals.recog.dispatcher.on_channel_remove = speech_on_channel_remove;
    -	globals.recog.dispatcher.on_message_receive = recog_on_message_receive;
    -	globals.recog.audio_stream_vtable.destroy = NULL;
    -	globals.recog.audio_stream_vtable.open_rx = recog_stream_open;
    -	globals.recog.audio_stream_vtable.close_rx = NULL;
    -	globals.recog.audio_stream_vtable.read_frame = recog_stream_read;
    -	globals.recog.audio_stream_vtable.open_tx = NULL;
    -	globals.recog.audio_stream_vtable.close_tx = NULL;
    -	globals.recog.audio_stream_vtable.write_frame = NULL;
    -	mrcp_client_application_register(globals.mrcp_client, globals.recog.app, "recog");
    -
    -	/* map FreeSWITCH params or old params to MRCPv2 param */
    -	switch_core_hash_init_nocase(&globals.recog.fs_param_map);
    -	/* MRCPv1 param */
    -	switch_core_hash_insert(globals.recog.fs_param_map, "recognizer-start-timers", "start-input-timers");
    -
    -	/* map MRCP params to UniMRCP ID */
    -	switch_core_hash_init_nocase(&globals.recog.param_id_map);
    -	switch_core_hash_insert(globals.recog.param_id_map, "Confidence-Threshold", unimrcp_param_id_create(RECOGNIZER_HEADER_CONFIDENCE_THRESHOLD, pool));
    -	switch_core_hash_insert(globals.recog.param_id_map, "Sensitivity-Level", unimrcp_param_id_create(RECOGNIZER_HEADER_SENSITIVITY_LEVEL, pool));
    -	switch_core_hash_insert(globals.recog.param_id_map, "Speed-Vs-Accuracy", unimrcp_param_id_create(RECOGNIZER_HEADER_SPEED_VS_ACCURACY, pool));
    -	switch_core_hash_insert(globals.recog.param_id_map, "N-Best-List-Length", unimrcp_param_id_create(RECOGNIZER_HEADER_N_BEST_LIST_LENGTH, pool));
    -	switch_core_hash_insert(globals.recog.param_id_map, "No-Input-Timeout", unimrcp_param_id_create(RECOGNIZER_HEADER_NO_INPUT_TIMEOUT, pool));
    -	switch_core_hash_insert(globals.recog.param_id_map, "Recognition-Timeout", unimrcp_param_id_create(RECOGNIZER_HEADER_RECOGNITION_TIMEOUT, pool));
    -	switch_core_hash_insert(globals.recog.param_id_map, "Waveform-Uri", unimrcp_param_id_create(RECOGNIZER_HEADER_WAVEFORM_URI, pool));
    -	switch_core_hash_insert(globals.recog.param_id_map, "Completion-Cause", unimrcp_param_id_create(RECOGNIZER_HEADER_COMPLETION_CAUSE, pool));
    -	switch_core_hash_insert(globals.recog.param_id_map, "Recognizer-Context-Block",
    -							unimrcp_param_id_create(RECOGNIZER_HEADER_RECOGNIZER_CONTEXT_BLOCK, pool));
    -	switch_core_hash_insert(globals.recog.param_id_map, "Start-Input-Timers", unimrcp_param_id_create(RECOGNIZER_HEADER_START_INPUT_TIMERS, pool));
    -	switch_core_hash_insert(globals.recog.param_id_map, "Speech-Complete-Timeout",
    -							unimrcp_param_id_create(RECOGNIZER_HEADER_SPEECH_COMPLETE_TIMEOUT, pool));
    -	switch_core_hash_insert(globals.recog.param_id_map, "Speech-Incomplete-Timeout",
    -							unimrcp_param_id_create(RECOGNIZER_HEADER_SPEECH_INCOMPLETE_TIMEOUT, pool));
    -	switch_core_hash_insert(globals.recog.param_id_map, "DTMF-Interdigit-Timeout",
    -							unimrcp_param_id_create(RECOGNIZER_HEADER_DTMF_INTERDIGIT_TIMEOUT, pool));
    -	switch_core_hash_insert(globals.recog.param_id_map, "DTMF-Term-Timeout", unimrcp_param_id_create(RECOGNIZER_HEADER_DTMF_TERM_TIMEOUT, pool));
    -	switch_core_hash_insert(globals.recog.param_id_map, "DTMF-Term-Char", unimrcp_param_id_create(RECOGNIZER_HEADER_DTMF_TERM_CHAR, pool));
    -	switch_core_hash_insert(globals.recog.param_id_map, "Failed-Uri", unimrcp_param_id_create(RECOGNIZER_HEADER_FAILED_URI, pool));
    -	switch_core_hash_insert(globals.recog.param_id_map, "Failed-Uri-Cause", unimrcp_param_id_create(RECOGNIZER_HEADER_FAILED_URI_CAUSE, pool));
    -	switch_core_hash_insert(globals.recog.param_id_map, "Save-Waveform", unimrcp_param_id_create(RECOGNIZER_HEADER_SAVE_WAVEFORM, pool));
    -	switch_core_hash_insert(globals.recog.param_id_map, "New-Audio-Channel", unimrcp_param_id_create(RECOGNIZER_HEADER_NEW_AUDIO_CHANNEL, pool));
    -	switch_core_hash_insert(globals.recog.param_id_map, "Speech-Language", unimrcp_param_id_create(RECOGNIZER_HEADER_SPEECH_LANGUAGE, pool));
    -	switch_core_hash_insert(globals.recog.param_id_map, "Input-Type", unimrcp_param_id_create(RECOGNIZER_HEADER_INPUT_TYPE, pool));
    -	switch_core_hash_insert(globals.recog.param_id_map, "Input-Waveform-Uri", unimrcp_param_id_create(RECOGNIZER_HEADER_INPUT_WAVEFORM_URI, pool));
    -	switch_core_hash_insert(globals.recog.param_id_map, "Completion-Reason", unimrcp_param_id_create(RECOGNIZER_HEADER_COMPLETION_REASON, pool));
    -	switch_core_hash_insert(globals.recog.param_id_map, "Media-Type", unimrcp_param_id_create(RECOGNIZER_HEADER_MEDIA_TYPE, pool));
    -	switch_core_hash_insert(globals.recog.param_id_map, "Ver-Buffer-Utterance", unimrcp_param_id_create(RECOGNIZER_HEADER_VER_BUFFER_UTTERANCE, pool));
    -	switch_core_hash_insert(globals.recog.param_id_map, "Recognition-Mode", unimrcp_param_id_create(RECOGNIZER_HEADER_RECOGNITION_MODE, pool));
    -	switch_core_hash_insert(globals.recog.param_id_map, "Cancel-If-Queue", unimrcp_param_id_create(RECOGNIZER_HEADER_CANCEL_IF_QUEUE, pool));
    -	switch_core_hash_insert(globals.recog.param_id_map, "Hotword-Max-Duration", unimrcp_param_id_create(RECOGNIZER_HEADER_HOTWORD_MAX_DURATION, pool));
    -	switch_core_hash_insert(globals.recog.param_id_map, "Hotword-Min-Duration", unimrcp_param_id_create(RECOGNIZER_HEADER_HOTWORD_MIN_DURATION, pool));
    -	switch_core_hash_insert(globals.recog.param_id_map, "Interpret-Text", unimrcp_param_id_create(RECOGNIZER_HEADER_INTERPRET_TEXT, pool));
    -	switch_core_hash_insert(globals.recog.param_id_map, "DTMF-Buffer-Time", unimrcp_param_id_create(RECOGNIZER_HEADER_DTMF_BUFFER_TIME, pool));
    -	switch_core_hash_insert(globals.recog.param_id_map, "Clear-DTMF-Buffer", unimrcp_param_id_create(RECOGNIZER_HEADER_CLEAR_DTMF_BUFFER, pool));
    -	switch_core_hash_insert(globals.recog.param_id_map, "Early-No-Match", unimrcp_param_id_create(RECOGNIZER_HEADER_EARLY_NO_MATCH, pool));
    -
    -	return SWITCH_STATUS_SUCCESS;
    -}
    -
    -/**
    - * Shutdown the recognizer
    - */
    -static switch_status_t recog_shutdown()
    -{
    -	if (globals.recog.fs_param_map) {
    -		switch_core_hash_destroy(&globals.recog.fs_param_map);
    -	}
    -	if (globals.recog.param_id_map) {
    -		switch_core_hash_destroy(&globals.recog.param_id_map);
    -	}
    -	return SWITCH_STATUS_SUCCESS;
    -}
    -
    -/**
    - * Process the XML configuration for this module
    - * Uses the instructions[] defined in this module to process the configuration.
    - *
    - * @return SWITCH_STATUS_SUCCESS if the configuration is OK
    - */
    -static switch_status_t mod_unimrcp_do_config()
    -{
    -	switch_xml_t cfg, xml, settings;
    -	switch_status_t status = SWITCH_STATUS_SUCCESS;
    -
    -	if (!(xml = switch_xml_open_cfg(CONFIG_FILE, &cfg, NULL))) {
    -		switch_log_printf(SWITCH_CHANNEL_LOG, SWITCH_LOG_CRIT, "Could not open %s\n", CONFIG_FILE);
    -		status = SWITCH_STATUS_FALSE;
    -		goto done;
    -	}
    -
    -	if ((settings = switch_xml_child(cfg, "settings"))) {
    -		if (switch_xml_config_parse(switch_xml_child(settings, "param"), SWITCH_FALSE, instructions) == SWITCH_STATUS_SUCCESS) {
    -			switch_log_printf(SWITCH_CHANNEL_LOG, SWITCH_LOG_DEBUG, "Config parsed ok!\n");
    -			globals.enable_profile_events = !zstr(globals.enable_profile_events_param) && (!strcasecmp(globals.enable_profile_events_param, "true")
    -																						   || !strcmp(globals.enable_profile_events_param, "1"));
    -		}
    -	}
    -
    -  done:
    -
    -	if (xml) {
    -		switch_xml_free(xml);
    -	}
    -
    -	return status;
    -}
    -
    -#define DEFAULT_LOCAL_IP_ADDRESS  "127.0.0.1"
    -#define DEFAULT_REMOTE_IP_ADDRESS "127.0.0.1"
    -#define DEFAULT_SIP_LOCAL_PORT    5090
    -#define DEFAULT_SIP_REMOTE_PORT   5060
    -#define DEFAULT_RTP_PORT_MIN      4000
    -#define DEFAULT_RTP_PORT_MAX      5000
    -
    -#define DEFAULT_SOFIASIP_UA_NAME  "FreeSWITCH"
    -#define DEFAULT_SDP_ORIGIN        "FreeSWITCH"
    -#define DEFAULT_RESOURCE_LOCATION "media"
    -
    -/**
    - * Get IP address from IP address value
    - *
    - * @param value "auto" or IP address
    - * @param pool the memory pool to use
    - * @return IP address
    - */
    -static char *ip_addr_get(const char *value, apr_pool_t *pool)
    -{
    -	if (!value || strcasecmp(value, "auto") == 0) {
    -		char *addr = DEFAULT_LOCAL_IP_ADDRESS;
    -		apt_ip_get(&addr, pool);
    -		return addr;
    -	}
    -	return apr_pstrdup(pool, value);
    -}
    -
    -/**
    - * set mod_unimrcp-specific profile configuration
    - *
    - * @param profile the MRCP profile to configure
    - * @param param the param name
    - * @param val the param value
    - * @param pool the memory pool to use
    - */
    -static int process_profile_config(profile_t *profile, const char *param, const char *val, switch_memory_pool_t *pool)
    -{
    -	int mine = 1;
    -	if (strcasecmp(param, "jsgf-mime-type") == 0) {
    -		profile->jsgf_mime_type = switch_core_strdup(pool, val);
    -	} else if (strcasecmp(param, "gsl-mime-type") == 0) {
    -		profile->gsl_mime_type = switch_core_strdup(pool, val);
    -	} else if (strcasecmp(param, "srgs-xml-mime-type") == 0) {
    -		profile->srgs_xml_mime_type = switch_core_strdup(pool, val);
    -	} else if (strcasecmp(param, "srgs-mime-type") == 0) {
    -		profile->srgs_mime_type = switch_core_strdup(pool, val);
    -	} else if (strcasecmp(param, "ssml-mime-type") == 0) {
    -		profile->ssml_mime_type = switch_core_strdup(pool, val);
    -	} else {
    -		mine = 0;
    -	}
    -
    -	return mine;
    -}
    -
    -/**
    - * set RTP config struct with param, val pair
    - * @param client the MRCP client
    - * @param rtp_config the config struct to set
    - * @param param the param name
    - * @param val the param value
    - * @param pool memory pool to use
    - * @return true if this param belongs to RTP config
    - */
    -static int process_rtp_config(mrcp_client_t *client, mpf_rtp_config_t *rtp_config, mpf_rtp_settings_t *rtp_settings, const char *param, const char *val, apr_pool_t *pool)
    -{
    -	int mine = 1;
    -	if (strcasecmp(param, "rtp-ip") == 0) {
    -		apt_string_set(&rtp_config->ip, ip_addr_get(val, pool));
    -	} else if (strcasecmp(param, "rtp-ext-ip") == 0) {
    -		apt_string_set(&rtp_config->ext_ip, ip_addr_get(val, pool));
    -	} else if (strcasecmp(param, "rtp-port-min") == 0) {
    -		rtp_config->rtp_port_min = (apr_port_t) atol(val);
    -	} else if (strcasecmp(param, "rtp-port-max") == 0) {
    -		rtp_config->rtp_port_max = (apr_port_t) atol(val);
    -	} else if (strcasecmp(param, "playout-delay") == 0) {
    -		rtp_settings->jb_config.initial_playout_delay = atol(val);
    -	} else if (strcasecmp(param, "min-playout-delay") == 0) {
    -		rtp_settings->jb_config.min_playout_delay = atol(val);
    -	} else if (strcasecmp(param, "max-playout-delay") == 0) {
    -		rtp_settings->jb_config.max_playout_delay = atol(val);
    -	} else if (strcasecmp(param, "codecs") == 0) {
    -		const mpf_codec_manager_t *codec_manager = mrcp_client_codec_manager_get(client);
    -		if (codec_manager) {
    -			mpf_codec_manager_codec_list_load(codec_manager, &rtp_settings->codec_list, val, pool);
    -		}
    -	} else if (strcasecmp(param, "ptime") == 0) {
    -		rtp_settings->ptime = (apr_uint16_t) atol(val);
    -	} else if (strcasecmp(param, "rtcp") == 0) {
    -		rtp_settings->rtcp = atoi(val);
    -	} else if (strcasecmp(param, "rtcp-bye") == 0) {
    -		rtp_settings->rtcp_bye_policy = atoi(val);
    -	} else if (strcasecmp(param, "rtcp-tx-interval") == 0) {
    -		rtp_settings->rtcp_tx_interval = (apr_uint16_t) atoi(val);
    -	} else if (strcasecmp(param, "rtcp-rx-resolution") == 0) {
    -		rtp_settings->rtcp_rx_resolution = (apr_uint16_t) atol(val);
    -	} else {
    -		mine = 0;
    -	}
    -
    -	return mine;
    -}
    -
    -/**
    - * set RTSP client config struct with param, val pair
    - * @param config the config struct to set
    - * @param sig_settings the sig settings struct to set
    - * @param param the param name
    - * @param val the param value
    - * @param pool memory pool to use
    - * @return true if this param belongs to RTSP config
    - */
    -static int process_mrcpv1_config(rtsp_client_config_t *config, mrcp_sig_settings_t *sig_settings, const char *param, const char *val, apr_pool_t *pool)
    -{
    -	int mine = 1;
    -	if (strcasecmp(param, "server-ip") == 0) {
    -		sig_settings->server_ip = ip_addr_get(val, pool);
    -	} else if (strcasecmp(param, "server-port") == 0) {
    -		sig_settings->server_port = (apr_port_t) atol(val);
    -	} else if (strcasecmp(param, "resource-location") == 0) {
    -		sig_settings->resource_location = apr_pstrdup(pool, val);
    -	} else if (strcasecmp(param, "sdp-origin") == 0) {
    -		config->origin = apr_pstrdup(pool, val);
    -	} else if (strcasecmp(param, "max-connection-count") == 0) {
    -		config->max_connection_count = atol(val);
    -	} else if (strcasecmp(param, "force-destination") == 0) {
    -		sig_settings->force_destination = atoi(val);
    -	} else if (strcasecmp(param, "speechsynth") == 0 || strcasecmp(param, "speechrecog") == 0) {
    -		apr_table_set(sig_settings->resource_map, param, val);
    -	} else {
    -		mine = 0;
    -	}
    -	return mine;
    -}
    -
    -/**
    - * set SofiaSIP client config struct with param, val pair
    - * @param config the config struct to set
    - * @param sig_settings the sig settings struct to set
    - * @param param the param name
    - * @param val the param value
    - * @param pool memory pool to use
    - * @return true if this param belongs to SofiaSIP config
    - */
    -static int process_mrcpv2_config(mrcp_sofia_client_config_t *config, mrcp_sig_settings_t *sig_settings, const char *param, const char *val, apr_pool_t *pool)
    -{
    -	int mine = 1;
    -	if (strcasecmp(param, "client-ip") == 0) {
    -		config->local_ip = ip_addr_get(val, pool);
    -	} else if (strcasecmp(param, "client-ext-ip") == 0) {
    -		config->ext_ip = ip_addr_get(val, pool);
    -	} else if (strcasecmp(param, "client-port") == 0) {
    -		config->local_port = (apr_port_t) atol(val);
    -	} else if (strcasecmp(param, "server-ip") == 0) {
    -		sig_settings->server_ip = ip_addr_get(val, pool);
    -	} else if (strcasecmp(param, "server-port") == 0) {
    -		sig_settings->server_port = (apr_port_t) atol(val);
    -	} else if (strcasecmp(param, "server-username") == 0) {
    -		sig_settings->user_name = apr_pstrdup(pool, val);
    -	} else if (strcasecmp(param, "force-destination") == 0) {
    -		sig_settings->force_destination = atoi(val);
    -	} else if (strcasecmp(param, "sip-transport") == 0) {
    -		config->transport = apr_pstrdup(pool, val);
    -	} else if (strcasecmp(param, "ua-name") == 0) {
    -		config->user_agent_name = apr_pstrdup(pool, val);
    -	} else if (strcasecmp(param, "sdp-origin") == 0) {
    -		config->origin = apr_pstrdup(pool, val);
    -	} else {
    -		mine = 0;
    -	}
    -	return mine;
    -}
    -
    -/**
    - * Create the MRCP client and configure it with profiles defined in FreeSWITCH XML config
    - *
    - * Some code and ideas borrowed from unimrcp-client.c
    - * Please check libs/unimrcp/platforms/libunimrcp-client/src/unimrcp-client.c when upgrading
    - * the UniMRCP library to ensure nothing new needs to be set up.
    - *
    - * @return the MRCP client
    - */
    -static mrcp_client_t *mod_unimrcp_client_create(switch_memory_pool_t *mod_pool)
    -{
    -	switch_xml_t cfg = NULL, xml = NULL, profiles = NULL, profile = NULL;
    -	mrcp_client_t *client = NULL;
    -	apr_pool_t *pool = NULL;
    -	mrcp_resource_loader_t *resource_loader = NULL;
    -	mrcp_resource_factory_t *resource_factory = NULL;
    -	mpf_codec_manager_t *codec_manager = NULL;
    -	apr_size_t max_connection_count = 0;
    -	apt_bool_t offer_new_connection = FALSE;
    -	mrcp_connection_agent_t *connection_agent;
    -	mpf_engine_t *media_engine;
    -	apt_dir_layout_t *dir_layout;
    -
    -	/* create the client */
    -	if ((dir_layout = apt_default_dir_layout_create("../", mod_pool)) == NULL) {
    -		goto done;
    -	}
    -	client = mrcp_client_create(dir_layout);
    -	if (!client) {
    -		switch_log_printf(SWITCH_CHANNEL_LOG, SWITCH_LOG_CRIT, "Failed to create MRCP client\n");
    -		goto done;
    -	}
    -
    -	pool = mrcp_client_memory_pool_get(client);
    -	if (!pool) {
    -		switch_log_printf(SWITCH_CHANNEL_LOG, SWITCH_LOG_CRIT, "Failed to get MRCP client memory pool\n");
    -		client = NULL;
    -		goto done;
    -	}
    -
    -	/* load the synthesizer and recognizer resources */
    -	resource_loader = mrcp_resource_loader_create(FALSE, pool);
    -	if (!resource_loader) {
    -		switch_log_printf(SWITCH_CHANNEL_LOG, SWITCH_LOG_CRIT, "Failed to create MRCP resource loader\n");
    -		client = NULL;
    -		goto done;
    -	} else {
    -		apt_str_t synth_resource;
    -		apt_str_t recog_resource;
    -		apt_string_set(&synth_resource, "speechsynth");
    -		mrcp_resource_load(resource_loader, &synth_resource);
    -		apt_string_set(&recog_resource, "speechrecog");
    -		mrcp_resource_load(resource_loader, &recog_resource);
    -		resource_factory = mrcp_resource_factory_get(resource_loader);
    -		mrcp_client_resource_factory_register(client, resource_factory);
    -	}
    -
    -	codec_manager = mpf_engine_codec_manager_create(pool);
    -	if (!codec_manager) {
    -		switch_log_printf(SWITCH_CHANNEL_LOG, SWITCH_LOG_CRIT, "Failed to create MPF codec manager\n");
    -		client = NULL;
    -		goto done;
    -	}
    -	if (!mrcp_client_codec_manager_register(client, codec_manager)) {
    -		switch_log_printf(SWITCH_CHANNEL_LOG, SWITCH_LOG_CRIT, "Failed to create register MRCP client codec manager\n");
    -		client = NULL;
    -		goto done;
    -	}
    -
    -	/* set up MRCP connection agent that will be shared with all profiles */
    -	if (!zstr(globals.unimrcp_max_connection_count)) {
    -		max_connection_count = atoi(globals.unimrcp_max_connection_count);
    -	}
    -	if (max_connection_count <= 0) {
    -		max_connection_count = 100;
    -	}
    -	if (!zstr(globals.unimrcp_offer_new_connection)) {
    -		offer_new_connection = strcasecmp("true", globals.unimrcp_offer_new_connection);
    -	}
    -	connection_agent = mrcp_client_connection_agent_create("MRCPv2ConnectionAgent", max_connection_count, offer_new_connection, pool);
    -	if (!connection_agent) {
    -		switch_log_printf(SWITCH_CHANNEL_LOG, SWITCH_LOG_CRIT, "Failed to create MRCP connection agent\n");
    -		client = NULL;
    -		goto done;
    -	}
    -	if (!zstr(globals.unimrcp_rx_buffer_size)) {
    -		apr_size_t rx_buffer_size = (apr_size_t)atol(globals.unimrcp_rx_buffer_size);
    -		if (rx_buffer_size > 0) {
    -			mrcp_client_connection_rx_size_set(connection_agent, rx_buffer_size);
    -		}
    -	}
    -	if (!zstr(globals.unimrcp_tx_buffer_size)) {
    -		apr_size_t tx_buffer_size = (apr_size_t)atol(globals.unimrcp_tx_buffer_size);
    -		if (tx_buffer_size > 0) {
    -			mrcp_client_connection_tx_size_set(connection_agent, tx_buffer_size);
    -		}
    -	}
    -	if (!zstr(globals.unimrcp_request_timeout)) {
    -		apr_size_t request_timeout = (apr_size_t)atol(globals.unimrcp_request_timeout);
    -		if (request_timeout > 0) {
    -			mrcp_client_connection_timeout_set(connection_agent, request_timeout);
    -		}
    -	}
    -	if (!mrcp_client_connection_agent_register(client, connection_agent)) {
    -		switch_log_printf(SWITCH_CHANNEL_LOG, SWITCH_LOG_CRIT, "Failed to create register MRCP connection agent\n");
    -		client = NULL;
    -		goto done;
    -	}
    -
    -	/* Set up the media engine that will be shared with all profiles */
    -	media_engine = mpf_engine_create("MediaEngine", pool);
    -	if (!media_engine) {
    -		switch_log_printf(SWITCH_CHANNEL_LOG, SWITCH_LOG_CRIT, "Failed to create MPF media engine\n");
    -		client = NULL;
    -		goto done;
    -	}
    -	if (!mpf_engine_scheduler_rate_set(media_engine, 1)) {
    -		switch_log_printf(SWITCH_CHANNEL_LOG, SWITCH_LOG_CRIT, "Failed to set MPF engine scheduler rate\n");
    -		client = NULL;
    -		goto done;
    -	}
    -	if (!mrcp_client_media_engine_register(client, media_engine)) {
    -		switch_log_printf(SWITCH_CHANNEL_LOG, SWITCH_LOG_CRIT, "Failed to register MPF media engine\n");
    -		client = NULL;
    -		goto done;
    -	}
    -
    -	/* configure the client profiles */
    -	if (!(xml = switch_xml_open_cfg(CONFIG_FILE, &cfg, NULL))) {
    -		switch_log_printf(SWITCH_CHANNEL_LOG, SWITCH_LOG_CRIT, "Could not open %s\n", CONFIG_FILE);
    -		client = NULL;
    -		goto done;
    -	}
    -	if ((profiles = switch_xml_child(cfg, "profiles"))) {
    -		for (profile = switch_xml_child(profiles, "profile"); profile; profile = switch_xml_next(profile)) {
    -			/* a profile is a signaling agent + termination factory + media engine + connection agent (MRCPv2 only) */
    -			mrcp_sig_agent_t *agent = NULL;
    -			mpf_termination_factory_t *termination_factory = NULL;
    -			mrcp_profile_t *mprofile = NULL;
    -			mpf_rtp_config_t *rtp_config = NULL;
    -			mpf_rtp_settings_t *rtp_settings = mpf_rtp_settings_alloc(pool);
    -			mrcp_sig_settings_t *sig_settings = mrcp_signaling_settings_alloc(pool);
    -			profile_t *mod_profile = NULL;
    -			switch_xml_t default_params = NULL;
    -			mrcp_connection_agent_t *v2_profile_connection_agent = NULL;
    -
    -			/* get profile attributes */
    -			const char *name = apr_pstrdup(pool, switch_xml_attr(profile, "name"));
    -			const char *version = switch_xml_attr(profile, "version");
    -			if (zstr(name) || zstr(version)) {
    -				switch_log_printf(SWITCH_CHANNEL_LOG, SWITCH_LOG_ERROR, " missing name or version attribute\n");
    -				client = NULL;
    -				goto done;
    -			}
    -
    -			/* prepare mod_unimrcp's profile for configuration */
    -			profile_create(&mod_profile, name, mod_pool);
    -			if (mod_profile) {
    -				switch_core_hash_insert(globals.profiles, mod_profile->name, mod_profile);
    -			} else {
    -				client = NULL;
    -				goto done;
    -			}
    -
    -			/* pull in any default SPEAK params */
    -			default_params = switch_xml_child(profile, "synthparams");
    -			if (default_params) {
    -				switch_xml_t param = NULL;
    -				switch_log_printf(SWITCH_CHANNEL_LOG, SWITCH_LOG_DEBUG, "Loading SPEAK params\n");
    -				for (param = switch_xml_child(default_params, "param"); param; param = switch_xml_next(param)) {
    -					const char *param_name = switch_xml_attr(param, "name");
    -					const char *param_value = switch_xml_attr(param, "value");
    -					if (zstr(param_name)) {
    -						switch_log_printf(SWITCH_CHANNEL_LOG, SWITCH_LOG_ERROR, "Missing SPEAK param name\n");
    -						client = NULL;
    -						goto done;
    -					}
    -					if (zstr(param_value)) {
    -						switch_log_printf(SWITCH_CHANNEL_LOG, SWITCH_LOG_ERROR, "Missing SPEAK param value\n");
    -						client = NULL;
    -						goto done;
    -					}
    -					switch_log_printf(SWITCH_CHANNEL_LOG, SWITCH_LOG_DEBUG, "Loading SPEAK Param %s:%s\n", param_name, param_value);
    -					switch_core_hash_insert(mod_profile->default_synth_params, switch_core_strdup(pool, param_name), switch_core_strdup(pool, param_value));
    -				}
    -			}
    -
    -			/* pull in any default RECOGNIZE params */
    -			default_params = switch_xml_child(profile, "recogparams");
    -			if (default_params) {
    -				switch_xml_t param = NULL;
    -				switch_log_printf(SWITCH_CHANNEL_LOG, SWITCH_LOG_DEBUG, "Loading RECOGNIZE params\n");
    -				for (param = switch_xml_child(default_params, "param"); param; param = switch_xml_next(param)) {
    -					const char *param_name = switch_xml_attr(param, "name");
    -					const char *param_value = switch_xml_attr(param, "value");
    -					if (zstr(param_name)) {
    -						switch_log_printf(SWITCH_CHANNEL_LOG, SWITCH_LOG_ERROR, "Missing RECOGNIZE param name\n");
    -						client = NULL;
    -						goto done;
    -					}
    -					if (zstr(param_value)) {
    -						switch_log_printf(SWITCH_CHANNEL_LOG, SWITCH_LOG_ERROR, "Missing RECOGNIZE param value\n");
    -						client = NULL;
    -						goto done;
    -					}
    -					switch_log_printf(SWITCH_CHANNEL_LOG, SWITCH_LOG_DEBUG, "Loading RECOGNIZE Param %s:%s\n", param_name, param_value);
    -					switch_core_hash_insert(mod_profile->default_recog_params, switch_core_strdup(pool, param_name), switch_core_strdup(pool, param_value));
    -				}
    -			}
    -
    -			/* create RTP config, common to MRCPv1 and MRCPv2 */
    -			rtp_config = mpf_rtp_config_alloc(pool);
    -			rtp_config->rtp_port_min = DEFAULT_RTP_PORT_MIN;
    -			rtp_config->rtp_port_max = DEFAULT_RTP_PORT_MAX;
    -			apt_string_set(&rtp_config->ip, DEFAULT_LOCAL_IP_ADDRESS);
    -
    -			if (strcmp("1", version) == 0) {
    -				/* MRCPv1 configuration */
    -				switch_xml_t param = NULL;
    -				rtsp_client_config_t *config = mrcp_unirtsp_client_config_alloc(pool);
    -				config->origin = DEFAULT_SDP_ORIGIN;
    -				sig_settings->resource_location = DEFAULT_RESOURCE_LOCATION;
    -				v2_profile_connection_agent = NULL;
    -
    -				if (!zstr(globals.unimrcp_request_timeout)) {
    -					apr_size_t request_timeout = (apr_size_t)atol(globals.unimrcp_request_timeout);
    -					if (request_timeout > 0) {
    -						config->request_timeout = request_timeout;
    -					}
    -				}
    -				switch_log_printf(SWITCH_CHANNEL_LOG, SWITCH_LOG_DEBUG, "Loading MRCPv1 profile: %s\n", name);
    -				for (param = switch_xml_child(profile, "param"); param; param = switch_xml_next(param)) {
    -					const char *param_name = switch_xml_attr(param, "name");
    -					const char *param_value = switch_xml_attr(param, "value");
    -					if (zstr(param_name)) {
    -						switch_log_printf(SWITCH_CHANNEL_LOG, SWITCH_LOG_ERROR, "Missing param name\n");
    -						client = NULL;
    -						goto done;
    -					}
    -					switch_log_printf(SWITCH_CHANNEL_LOG, SWITCH_LOG_DEBUG, "Loading Param %s:%s\n", param_name, param_value);
    -					if (!process_mrcpv1_config(config, sig_settings, param_name, param_value, pool) &&
    -						!process_rtp_config(client, rtp_config, rtp_settings, param_name, param_value, pool) &&
    -						!process_profile_config(mod_profile, param_name, param_value, mod_pool)) {
    -						switch_log_printf(SWITCH_CHANNEL_LOG, SWITCH_LOG_WARNING, "Ignoring unknown param %s\n", param_name);
    -					}
    -				}
    -				agent = mrcp_unirtsp_client_agent_create(name, config, pool);
    -				if (!agent) {
    -					switch_log_printf(SWITCH_CHANNEL_LOG, SWITCH_LOG_ERROR, "Failed to create MRCP RTSP client agent\n");
    -					client = NULL;
    -					goto done;
    -				}
    -			} else if (strcmp("2", version) == 0) {
    -				/* MRCPv2 configuration */
    -				mrcp_sofia_client_config_t *config = mrcp_sofiasip_client_config_alloc(pool);
    -				switch_xml_t param = NULL;
    -				config->local_ip = DEFAULT_LOCAL_IP_ADDRESS;
    -				config->local_port = DEFAULT_SIP_LOCAL_PORT;
    -				sig_settings->server_ip = DEFAULT_REMOTE_IP_ADDRESS;
    -				sig_settings->server_port = DEFAULT_SIP_REMOTE_PORT;
    -				config->ext_ip = NULL;
    -				config->user_agent_name = DEFAULT_SOFIASIP_UA_NAME;
    -				config->origin = DEFAULT_SDP_ORIGIN;
    -				v2_profile_connection_agent = connection_agent;
    -				switch_log_printf(SWITCH_CHANNEL_LOG, SWITCH_LOG_DEBUG, "Loading MRCPv2 profile: %s\n", name);
    -				for (param = switch_xml_child(profile, "param"); param; param = switch_xml_next(param)) {
    -					const char *param_name = switch_xml_attr(param, "name");
    -					const char *param_value = switch_xml_attr(param, "value");
    -					if (zstr(param_name)) {
    -						switch_log_printf(SWITCH_CHANNEL_LOG, SWITCH_LOG_ERROR, "Missing param name\n");
    -						client = NULL;
    -						goto done;
    -					}
    -					switch_log_printf(SWITCH_CHANNEL_LOG, SWITCH_LOG_DEBUG, "Loading Param %s:%s\n", param_name, param_value);
    -					if (!process_mrcpv2_config(config, sig_settings, param_name, param_value, pool) &&
    -						!process_rtp_config(client, rtp_config, rtp_settings, param_name, param_value, pool) &&
    -						!process_profile_config(mod_profile, param_name, param_value, mod_pool)) {
    -						switch_log_printf(SWITCH_CHANNEL_LOG, SWITCH_LOG_WARNING, "Ignoring unknown param %s\n", param_name);
    -					}
    -				}
    -				agent = mrcp_sofiasip_client_agent_create(name, config, pool);
    -				if (!agent) {
    -					switch_log_printf(SWITCH_CHANNEL_LOG, SWITCH_LOG_ERROR, "Failed to create MRCP SIP client agent\n");
    -					client = NULL;
    -					goto done;
    -				}
    -			} else {
    -				switch_log_printf(SWITCH_CHANNEL_LOG, SWITCH_LOG_ERROR, "version must be either \"1\" or \"2\"\n");
    -				client = NULL;
    -				goto done;
    -			}
    -
    -			termination_factory = mpf_rtp_termination_factory_create(rtp_config, pool);
    -			if (!termination_factory) {
    -				switch_log_printf(SWITCH_CHANNEL_LOG, SWITCH_LOG_ERROR, "Failed to create RTP termination factory\n");
    -				client = NULL;
    -				goto done;
    -			}
    -			mrcp_client_rtp_factory_register(client, termination_factory, name);
    -			mrcp_client_rtp_settings_register(client, rtp_settings, "RTP-Settings");
    -			mrcp_client_signaling_settings_register(client, sig_settings, "Signaling-Settings");
    -			mrcp_client_signaling_agent_register(client, agent);
    -
    -			/* create the profile and register it */
    -			mprofile = mrcp_client_profile_create(NULL, agent, v2_profile_connection_agent, media_engine, termination_factory, rtp_settings, sig_settings, pool);
    -			if (!mprofile) {
    -				switch_log_printf(SWITCH_CHANNEL_LOG, SWITCH_LOG_ERROR, "Failed to create MRCP client profile\n");
    -				client = NULL;
    -				goto done;
    -			}
    -			mrcp_client_profile_register(client, mprofile, name);
    -		}
    -	}
    -
    -  done:
    -
    -	if (xml) {
    -		switch_xml_free(xml);
    -	}
    -
    -	return client;
    -}
    -
    -/**
    - * Macro expands to: switch_status_t mod_unimrcp_load(switch_loadable_module_interface_t **module_interface, switch_memory_pool_t *pool)
    - */
    -SWITCH_MODULE_LOAD_FUNCTION(mod_unimrcp_load)
    -{
    -	if (switch_event_reserve_subclass(MY_EVENT_PROFILE_CREATE) != SWITCH_STATUS_SUCCESS) {
    -		switch_log_printf(SWITCH_CHANNEL_LOG, SWITCH_LOG_ERROR, "Couldn't register subclass %s!\n", MY_EVENT_PROFILE_CREATE);
    -		return SWITCH_STATUS_TERM;
    -	}
    -
    -	if (switch_event_reserve_subclass(MY_EVENT_PROFILE_CLOSE) != SWITCH_STATUS_SUCCESS) {
    -		switch_log_printf(SWITCH_CHANNEL_LOG, SWITCH_LOG_ERROR, "Couldn't register subclass %s!\n", MY_EVENT_PROFILE_CLOSE);
    -		return SWITCH_STATUS_TERM;
    -	}
    -
    -	if (switch_event_reserve_subclass(MY_EVENT_PROFILE_OPEN) != SWITCH_STATUS_SUCCESS) {
    -		switch_log_printf(SWITCH_CHANNEL_LOG, SWITCH_LOG_ERROR, "Couldn't register subclass %s!\n", MY_EVENT_PROFILE_OPEN);
    -		return SWITCH_STATUS_TERM;
    -	}
    -
    -	/* connect my internal structure to the blank pointer passed to me */
    -	*module_interface = switch_loadable_module_create_module_interface(pool, modname);
    -
    -	memset(&globals, 0, sizeof(globals));
    -	switch_mutex_init(&globals.mutex, SWITCH_MUTEX_UNNESTED, pool);
    -	globals.speech_channel_number = 0;
    -	switch_core_hash_init_nocase(&globals.profiles);
    -
    -	/* get MRCP module configuration */
    -	mod_unimrcp_do_config();
    -	if (zstr(globals.unimrcp_default_synth_profile)) {
    -		switch_log_printf(SWITCH_CHANNEL_LOG, SWITCH_LOG_ERROR, "Missing default-tts-profile\n");
    -		return SWITCH_STATUS_FALSE;
    -	}
    -	if (zstr(globals.unimrcp_default_recog_profile)) {
    -		switch_log_printf(SWITCH_CHANNEL_LOG, SWITCH_LOG_ERROR, "Missing default-asr-profile\n");
    -		return SWITCH_STATUS_FALSE;
    -	}
    -
    -	/* link UniMRCP logs to FreeSWITCH */
    -	switch_log_printf(SWITCH_CHANNEL_LOG, SWITCH_LOG_INFO, "UniMRCP log level = %s\n", globals.unimrcp_log_level);
    -	if (apt_log_instance_create(APT_LOG_OUTPUT_NONE, str_to_log_level(globals.unimrcp_log_level), pool) == FALSE) {
    -		/* already created */
    -		apt_log_priority_set(str_to_log_level(globals.unimrcp_log_level));
    -	}
    -	apt_log_ext_handler_set(unimrcp_log);
    -
    -	/* Create the MRCP client */
    -	if ((globals.mrcp_client = mod_unimrcp_client_create(pool)) == NULL) {
    -		switch_log_printf(SWITCH_CHANNEL_LOG, SWITCH_LOG_ERROR, "Failed to create mrcp client\n");
    -		return SWITCH_STATUS_FALSE;
    -	}
    -
    -	/* Create the synthesizer interface */
    -	if (synth_load(*module_interface, pool) != SWITCH_STATUS_SUCCESS) {
    -		return SWITCH_STATUS_FALSE;
    -	}
    -
    -	/* Create the recognizer interface */
    -	if (recog_load(*module_interface, pool) != SWITCH_STATUS_SUCCESS) {
    -		return SWITCH_STATUS_FALSE;
    -	}
    -
    -	/* Start the client stack */
    -	mrcp_client_start(globals.mrcp_client);
    -
    -	/* indicate that the module should continue to be loaded */
    -	return SWITCH_STATUS_SUCCESS;
    -}
    -
    -/**
    - * Called when the system shuts down
    - * Macro expands to: switch_status_t mod_unimrcp_shutdown()
    - */
    -SWITCH_MODULE_SHUTDOWN_FUNCTION(mod_unimrcp_shutdown)
    -{
    -
    -	switch_event_free_subclass(MY_EVENT_PROFILE_CREATE);
    -	switch_event_free_subclass(MY_EVENT_PROFILE_CLOSE);
    -	switch_event_free_subclass(MY_EVENT_PROFILE_OPEN);
    -
    -	synth_shutdown();
    -	recog_shutdown();
    -
    -	/* Stop the MRCP client stack */
    -	mrcp_client_shutdown(globals.mrcp_client);
    -	mrcp_client_destroy(globals.mrcp_client);
    -	globals.mrcp_client = 0;
    -
    -	switch_core_hash_destroy(&globals.profiles);
    -
    -	return SWITCH_STATUS_SUCCESS;
    -}
    -
    -/**
    - * If it exists, this is called in it's own thread when the module-load completes
    - * If it returns anything but SWITCH_STATUS_TERM it will be called again automatically
    - * Macro expands to: switch_status_t mod_unimrcp_runtime()
    - */
    -SWITCH_MODULE_RUNTIME_FUNCTION(mod_unimrcp_runtime)
    -{
    -	return SWITCH_STATUS_TERM;
    -}
    -
    -/**
    - * Translate log level string to enum
    - * @param level log level string
    - * @return log level enum
    - */
    -static apt_log_priority_e str_to_log_level(const char *level)
    -{
    -	if (strcmp(level, "EMERGENCY") == 0) {
    -		return APT_PRIO_EMERGENCY;
    -	} else if (strcmp(level, "ALERT") == 0) {
    -		return APT_PRIO_ALERT;
    -	} else if (strcmp(level, "CRITICAL") == 0) {
    -		return APT_PRIO_CRITICAL;
    -	} else if (strcmp(level, "ERROR") == 0) {
    -		return APT_PRIO_ERROR;
    -	} else if (strcmp(level, "WARNING") == 0) {
    -		return APT_PRIO_WARNING;
    -	} else if (strcmp(level, "NOTICE") == 0) {
    -		return APT_PRIO_NOTICE;
    -	} else if (strcmp(level, "INFO") == 0) {
    -		return APT_PRIO_INFO;
    -	} else if (strcmp(level, "DEBUG") == 0) {
    -		return APT_PRIO_DEBUG;
    -	}
    -	return APT_PRIO_DEBUG;
    -}
    -
    -/**
    - * Connects UniMRCP logging to FreeSWITCH
    - * @return TRUE
    - */
    -static apt_bool_t unimrcp_log(const char *file, int line, const char *obj, apt_log_priority_e priority, const char *format, va_list arg_ptr)
    -{
    -	switch_log_level_t level;
    -	char log_message[4096] = { 0 };	/* same size as MAX_LOG_ENTRY_SIZE in UniMRCP apt_log.c */
    -	size_t msglen;
    -	const char *id = (obj == NULL) ? "" : ((speech_channel_t *)obj)->name;
    -
    -	if (zstr(format)) {
    -		return TRUE;
    -	}
    -
    -	switch (priority) {
    -	case APT_PRIO_EMERGENCY:
    -		/* pass through */
    -	case APT_PRIO_ALERT:
    -		/* pass through */
    -	case APT_PRIO_CRITICAL:
    -		level = SWITCH_LOG_CRIT;
    -		break;
    -	case APT_PRIO_ERROR:
    -		level = SWITCH_LOG_ERROR;
    -		break;
    -	case APT_PRIO_WARNING:
    -		level = SWITCH_LOG_WARNING;
    -		break;
    -	case APT_PRIO_NOTICE:
    -		level = SWITCH_LOG_NOTICE;
    -		break;
    -	case APT_PRIO_INFO:
    -		level = SWITCH_LOG_INFO;
    -		break;
    -	case APT_PRIO_DEBUG:
    -		/* pass through */
    -	default:
    -		level = SWITCH_LOG_DEBUG;
    -		break;
    -	}
    -
    -	/* apr_vsnprintf supports format extensions required by UniMRCP */
    -	apr_vsnprintf(log_message, sizeof(log_message), format, arg_ptr);
    -	msglen = strlen(log_message);
    -	if (msglen >= 2 && log_message[msglen - 2] == '\\' && log_message[msglen - 1] == 'n') {
    -		/* log_message already ends in \n */
    -		switch_log_printf(SWITCH_CHANNEL_ID_LOG, file, "", line, NULL, level, "(%s) %s", id, log_message);
    -	} else if (msglen > 0) {
    -		/* log message needs \n appended */
    -		switch_log_printf(SWITCH_CHANNEL_ID_LOG, file, "", line, NULL, level, "(%s) %s\n", id, log_message);
    -	}
    -
    -	return TRUE;
    -}
    -
    -/**
    - * @return the next number to assign the channel
    - */
    -static int get_next_speech_channel_number(void)
    -{
    -	int num;
    -	switch_mutex_lock(globals.mutex);
    -	num = globals.speech_channel_number;
    -	if (globals.speech_channel_number == INT_MAX) {
    -		globals.speech_channel_number = 0;
    -	} else {
    -		globals.speech_channel_number++;
    -	}
    -	switch_mutex_unlock(globals.mutex);
    -
    -	return num;
    -}
    -
    -/**
    - * Create a parameter id
    - *
    - * @param id the UniMRCP ID
    - * @return the pair
    - */
    -static unimrcp_param_id_t *unimrcp_param_id_create(int id, switch_memory_pool_t *pool)
    -{
    -	unimrcp_param_id_t *param = (unimrcp_param_id_t *) switch_core_alloc(pool, sizeof(unimrcp_param_id_t));
    -	if (param) {
    -		param->id = id;
    -	}
    -	return param;
    -}
    -
    -
    -/* For Emacs:
    - * Local Variables:
    - * mode:c
    - * indent-tabs-mode:t
    - * tab-width:4
    - * c-basic-offset:4
    - * End:
    - * For VIM:
    - * vim:set softtabstop=4 shiftwidth=4 tabstop=4 noet:
    - */
    diff --git a/src/mod/asr_tts/mod_unimrcp/unimrcp.props b/src/mod/asr_tts/mod_unimrcp/unimrcp.props
    deleted file mode 100644
    index 6f304ae5f0c..00000000000
    --- a/src/mod/asr_tts/mod_unimrcp/unimrcp.props
    +++ /dev/null
    @@ -1,15 +0,0 @@
    -
    -
    -  
    -    
    -  
    -  
    -    <_ProjectFileVersion>10.0.30319.1
    -  
    -  
    -    
    -      $(SolutionDir)libs\unimrcp\platforms\libunimrcp-client\include;$(SolutionDir)libs\unimrcp\libs\mrcp-client\include;$(SolutionDir)libs\unimrcp\libs\mrcp-signaling\include;$(SolutionDir)libs\unimrcp\libs\apr-toolkit\include;$(SolutionDir)libs\unimrcp\build;$(SolutionDir)libs\unimrcp\libs\mrcp\include;$(SolutionDir)libs\unimrcp\libs\mrcp\message\include;$(SolutionDir)libs\unimrcp\libs\mrcp\control\include;$(SolutionDir)libs\unimrcp\libs\mrcp\resources\include;$(SolutionDir)libs\unimrcp\libs\mpf\include;$(SolutionDir)libs\unimrcp\libs\mrcpv2-transport\include;$(SolutionDir)libs\unimrcp\modules\mrcp-sofiasip\include;$(SolutionDir)libs\unimrcp\modules\mrcp-unirtsp\include;%(AdditionalIncludeDirectories)
    -      MRCP_STATIC_LIB;MPF_STATIC_LIB;APT_STATIC_LIB;%(PreprocessorDefinitions)
    -    
    -  
    -
    \ No newline at end of file
    diff --git a/src/mod/codecs/mod_dahdi_codec/mod_dahdi_codec.c b/src/mod/codecs/mod_dahdi_codec/mod_dahdi_codec.c
    index df09429ced4..6e7f15428cf 100644
    --- a/src/mod/codecs/mod_dahdi_codec/mod_dahdi_codec.c
    +++ b/src/mod/codecs/mod_dahdi_codec/mod_dahdi_codec.c
    @@ -440,7 +440,7 @@ SWITCH_MODULE_LOAD_FUNCTION(mod_dahdi_codec_load)
     	switch_codec_interface_t *codec_interface;
     	struct stat statbuf;
     	struct dahdi_transcoder_info info = { 0 };
    -	int32_t fd, res;
    +	int32_t fd;
     	int mpf = 20000;			/* Algorithmic delay of 15ms with 5ms of look-ahead delay */
     	int spf = 160;
     	int bpfd = 320;
    @@ -472,7 +472,7 @@ SWITCH_MODULE_LOAD_FUNCTION(mod_dahdi_codec_load)
     		return SWITCH_STATUS_FALSE;
     	}
     
    -	for (info.tcnum = 0; !(res = ioctl(fd, DAHDI_TC_GETINFO, &info)); info.tcnum++) {
    +	for (info.tcnum = 0; !ioctl(fd, DAHDI_TC_GETINFO, &info); info.tcnum++) {
     		switch_log_printf(SWITCH_CHANNEL_LOG, SWITCH_LOG_DEBUG, "Found dahdi transcoder name: %s\n", info.name);
     		if ((info.srcfmts & DAHDI_FORMAT_ULAW) && (info.dstfmts & (DAHDI_FORMAT_G729A | DAHDI_FORMAT_G723_1))) {
     			total_encoders += info.numchannels;
    diff --git a/src/mod/databases/mod_pgsql/mod_pgsql.c b/src/mod/databases/mod_pgsql/mod_pgsql.c
    index 8c24cf9fce7..575252223b9 100644
    --- a/src/mod/databases/mod_pgsql/mod_pgsql.c
    +++ b/src/mod/databases/mod_pgsql/mod_pgsql.c
    @@ -36,6 +36,7 @@
     #include 
     
     #include 
    +#include 
     
     #ifndef _WIN32
     #include 
    @@ -597,7 +598,7 @@ switch_status_t database_handle_exec_string(switch_database_interface_handle_t *
     		goto done;
     	} else {
     		switch (result->status) {
    -#if POSTGRESQL_MAJOR_VERSION >= 9 && POSTGRESQL_MINOR_VERSION >= 2
    +#if PG_VERSION_NUM >= 90002
     		case PGRES_SINGLE_TUPLE:
     			/* Added in PostgreSQL 9.2 */
     #endif
    @@ -756,24 +757,29 @@ switch_status_t pgsql_next_result_timed(switch_pgsql_handle_t *handle, switch_pg
     		*result_out = res;
     		res->status = PQresultStatus(res->result);
     		switch (res->status) {
    -//#if (POSTGRESQL_MAJOR_VERSION == 9 && POSTGRESQL_MINOR_VERSION >= 2) || POSTGRESQL_MAJOR_VERSION > 9
    +#if PG_VERSION_NUM >= 90002
     		case PGRES_SINGLE_TUPLE:
     			/* Added in PostgreSQL 9.2 */
    -//#endif
    +#endif
     		case PGRES_TUPLES_OK:
     		{
     			res->rows = PQntuples(res->result);
     			res->cols = PQnfields(res->result);
     		}
     		break;
    -//#if (POSTGRESQL_MAJOR_VERSION == 9 && POSTGRESQL_MINOR_VERSION >= 1) || POSTGRESQL_MAJOR_VERSION > 9
    +#if PG_VERSION_NUM >= 90001
     		case PGRES_COPY_BOTH:
     			/* Added in PostgreSQL 9.1 */
    -//#endif
    +#endif
     		case PGRES_COPY_OUT:
     		case PGRES_COPY_IN:
     		case PGRES_COMMAND_OK:
     			break;
    +#if PG_VERSION_NUM >= 140001
    +		case PGRES_PIPELINE_ABORTED:
    +		case PGRES_PIPELINE_SYNC:
    +			break;
    +#endif
     		case PGRES_EMPTY_QUERY:
     			switch_log_printf(SWITCH_CHANNEL_LOG, SWITCH_LOG_DEBUG, "Query (%s) returned PGRES_EMPTY_QUERY\n", handle->sql);
     		case PGRES_BAD_RESPONSE:
    diff --git a/src/mod/dialplans/mod_dialplan_asterisk/mod_dialplan_asterisk.c b/src/mod/dialplans/mod_dialplan_asterisk/mod_dialplan_asterisk.c
    index 691b640a783..24119f6f8c3 100644
    --- a/src/mod/dialplans/mod_dialplan_asterisk/mod_dialplan_asterisk.c
    +++ b/src/mod/dialplans/mod_dialplan_asterisk/mod_dialplan_asterisk.c
    @@ -103,12 +103,11 @@ SWITCH_STANDARD_APP(avoid_function)
     
     SWITCH_STANDARD_APP(goto_function)
     {
    -	int argc;
     	char *argv[3] = { 0 };
     	char *mydata;
     
     	if (data && (mydata = switch_core_session_strdup(session, data))) {
    -		if ((argc = switch_separate_string(mydata, '|', argv, (sizeof(argv) / sizeof(argv[0])))) < 1) {
    +		if (switch_separate_string(mydata, '|', argv, (sizeof(argv) / sizeof(argv[0]))) < 1) {
     			goto error;
     		}
     
    @@ -352,24 +351,12 @@ static switch_call_cause_t iax2_outgoing_channel(switch_core_session_t *session,
     	return switch_core_session_outgoing_channel(session, var_event, "iax", outbound_profile, new_session, pool, SOF_NONE, cancel_cause);
     }
     
    -
    -#define WE_DONT_NEED_NO_STINKIN_KEY "true"
    -static char *key()
    -{
    -	return WE_DONT_NEED_NO_STINKIN_KEY;
    -}
    -
     SWITCH_MODULE_LOAD_FUNCTION(mod_dialplan_asterisk_load)
     {
     	switch_dialplan_interface_t *dp_interface;
     	switch_application_interface_t *app_interface;
    -	char *mykey = NULL;
     	int x = 0;
     
    -	if ((mykey = key())) {
    -		mykey = NULL;
    -	}
    -
     	/* connect my internal structure to the blank pointer passed to me */
     	*module_interface = switch_loadable_module_create_module_interface(pool, modname);
     	/* add a dialplan interface */
    diff --git a/src/mod/endpoints/mod_dingaling/Makefile.am b/src/mod/endpoints/mod_dingaling/Makefile.am
    deleted file mode 100644
    index 3412a3ef596..00000000000
    --- a/src/mod/endpoints/mod_dingaling/Makefile.am
    +++ /dev/null
    @@ -1,24 +0,0 @@
    -include $(top_srcdir)/build/modmake.rulesam
    -MODNAME=mod_dingaling
    -IKS_DIR=$(switch_srcdir)/libs/iksemel
    -IKS_BUILDDIR=$(switch_builddir)/libs/iksemel
    -IKS_LA=$(IKS_BUILDDIR)/src/libiksemel.la
    -DING_DIR=$(switch_srcdir)/libs/libdingaling
    -DING_BUILDDIR=$(switch_builddir)/libs/libdingaling
    -
    -mod_LTLIBRARIES = mod_dingaling.la
    -mod_dingaling_la_SOURCES  = mod_dingaling.c ../../../../libs/libdingaling/src/libdingaling.c ../../../../libs/libdingaling/src/sha1.c
    -mod_dingaling_la_CFLAGS   = $(AM_CFLAGS)
    -mod_dingaling_la_CFLAGS  += `$(switch_builddir)/libs/apr/apr-1-config --cflags --cppflags --includes`
    -mod_dingaling_la_CFLAGS  += `$(switch_builddir)/libs/apr-util/apu-1-config --includes` 
    -mod_dingaling_la_CFLAGS  += -I$(DING_DIR)/src -I$(DING_BUILDDIR)/src -I$(IKS_DIR)/include
    -mod_dingaling_la_LIBADD   = $(switch_builddir)/libfreeswitch.la $(IKS_LA)
    -mod_dingaling_la_LDFLAGS  = -avoid-version -module -no-undefined -shared
    -
    -BUILT_SOURCES=$(IKS_LA)
    -
    -$(IKS_LA): $(IKS_BUILDDIR) $(IKS_DIR) $(IKS_DIR)/.update
    -	@cd $(IKS_BUILDDIR) && $(MAKE)
    -	@$(TOUCH_TARGET)
    -
    -deps: $(IKS_LA)
    \ No newline at end of file
    diff --git a/src/mod/endpoints/mod_dingaling/mod_dingaling.2017.vcxproj b/src/mod/endpoints/mod_dingaling/mod_dingaling.2017.vcxproj
    deleted file mode 100644
    index 7c142aa75a2..00000000000
    --- a/src/mod/endpoints/mod_dingaling/mod_dingaling.2017.vcxproj
    +++ /dev/null
    @@ -1,165 +0,0 @@
    -
    -
    -  
    -    
    -      Debug
    -      Win32
    -    
    -    
    -      Debug
    -      x64
    -    
    -    
    -      Release
    -      Win32
    -    
    -    
    -      Release
    -      x64
    -    
    -  
    -  
    -    mod_dingaling
    -    {FFAA4C52-3A53-4F99-90C1-D59D1F0427F3}
    -    mod_dingaling
    -    Win32Proj
    -  
    -  
    -  
    -    DynamicLibrary
    -    MultiByte
    -    $(DefaultPlatformToolset)
    -  
    -  
    -    DynamicLibrary
    -    MultiByte
    -    $(DefaultPlatformToolset)
    -  
    -  
    -    DynamicLibrary
    -    MultiByte
    -    $(DefaultPlatformToolset)
    -  
    -  
    -    DynamicLibrary
    -    MultiByte
    -    $(DefaultPlatformToolset)
    -  
    -  
    -  
    -  
    -  
    -  
    -    
    -    
    -  
    -  
    -    
    -    
    -  
    -  
    -    
    -    
    -  
    -  
    -    
    -    
    -  
    -  
    -  
    -    <_ProjectFileVersion>10.0.30319.1
    -  
    -  
    -    
    -      %(RootDir)%(Directory)..\..\..\..\libs\libdingaling\src;%(AdditionalIncludeDirectories)
    -      
    -      
    -      4718;6340;6246;6011;6387;%(DisableSpecificWarnings)
    -    
    -    
    -      /NODEFAULTLIB:LIMBCTD %(AdditionalOptions)
    -      $(ProjectDir)..\..\..\..\libs\libdingaling\$(OutDir);$(ProjectDir)..\..\..\..\libs\iksemel\$(OutDir);%(AdditionalLibraryDirectories)
    -      false
    -      
    -      
    -    
    -  
    -  
    -    
    -      X64
    -    
    -    
    -      %(RootDir)%(Directory)..\..\..\..\libs\libdingaling\src;%(AdditionalIncludeDirectories)
    -      
    -      
    -      4718;6340;6246;6011;6387;%(DisableSpecificWarnings)
    -    
    -    
    -      /NODEFAULTLIB:LIMBCTD %(AdditionalOptions)
    -      $(ProjectDir)..\..\..\..\libs\libdingaling\$(OutDir);$(ProjectDir)..\..\..\..\libs\iksemel\$(OutDir);%(AdditionalLibraryDirectories)
    -      false
    -      
    -      
    -      MachineX64
    -    
    -  
    -  
    -    
    -      %(RootDir)%(Directory)..\..\..\..\libs\libdingaling\src;%(AdditionalIncludeDirectories)
    -      
    -      
    -      4718;6340;6246;6011;6387;%(DisableSpecificWarnings)
    -    
    -    
    -      $(ProjectDir)..\..\..\..\libs\libdingaling\$(OutDir);$(ProjectDir)..\..\..\..\libs\iksemel\$(OutDir);%(AdditionalLibraryDirectories)
    -      false
    -      
    -      
    -    
    -  
    -  
    -    
    -      X64
    -    
    -    
    -      %(RootDir)%(Directory)..\..\..\..\libs\libdingaling\src;%(AdditionalIncludeDirectories)
    -      
    -      
    -      4718;6340;6246;6011;6387;%(DisableSpecificWarnings)
    -    
    -    
    -      $(ProjectDir)..\..\..\..\libs\libdingaling\$(OutDir);$(ProjectDir)..\..\..\..\libs\iksemel\$(OutDir);%(AdditionalLibraryDirectories)
    -      false
    -      
    -      
    -      MachineX64
    -    
    -  
    -  
    -    
    -  
    -  
    -    
    -      {1906d736-08bd-4ee1-924f-b536249b9a54}
    -      false
    -    
    -    
    -      {f057da7f-79e5-4b00-845c-ef446ef055e3}
    -    
    -    
    -      {f6c55d93-b927-4483-bb69-15aef3dd2dff}
    -      false
    -    
    -    
    -      {e727e8f6-935d-46fe-8b0e-37834748a0e3}
    -      false
    -    
    -    
    -      {202d7a4e-760d-4d0e-afa1-d7459ced30ff}
    -      false
    -    
    -  
    -  
    -  
    -  
    -
    \ No newline at end of file
    diff --git a/src/mod/endpoints/mod_dingaling/mod_dingaling.c b/src/mod/endpoints/mod_dingaling/mod_dingaling.c
    deleted file mode 100644
    index 99a65874096..00000000000
    --- a/src/mod/endpoints/mod_dingaling/mod_dingaling.c
    +++ /dev/null
    @@ -1,4484 +0,0 @@
    -/*
    - * FreeSWITCH Modular Media Switching Software Library / Soft-Switch Application
    - * Copyright (C) 2005-2014, Anthony Minessale II 
    - *
    - * Version: MPL 1.1
    - *
    - * The contents of this file are subject to the Mozilla Public License Version
    - * 1.1 (the "License"); you may not use this file except in compliance with
    - * the License. You may obtain a copy of the License at
    - * http://www.mozilla.org/MPL/
    - *
    - * Software distributed under the License is distributed on an "AS IS" basis,
    - * WITHOUT WARRANTY OF ANY KIND, either express or implied. See the License
    - * for the specific language governing rights and limitations under the
    - * License.
    - *
    - * The Original Code is FreeSWITCH Modular Media Switching Software Library / Soft-Switch Application
    - *
    - * The Initial Developer of the Original Code is
    - * Anthony Minessale II 
    - * Portions created by the Initial Developer are Copyright (C)
    - * the Initial Developer. All Rights Reserved.
    - *
    - * Contributor(s):
    - *
    - * Anthony Minessale II 
    - *
    - *
    - * mod_dingaling.c -- Jingle Endpoint Module
    - *
    - */
    -#include 
    -#include 
    -#include 
    -
    -#define SWITCH_RTP_KEY_LEN 30
    -#define SWITCH_RTP_CRYPTO_KEY_32 "AES_CM_128_HMAC_SHA1_32"
    -#define SWITCH_RTP_CRYPTO_KEY_80 "AES_CM_128_HMAC_SHA1_80"
    -
    -#define MDL_RTCP_DUR 5000
    -#define DL_CAND_WAIT 10000000
    -#define DL_CAND_INITIAL_WAIT 2000000
    -//#define DL_CAND_WAIT 2000000
    -//#define DL_CAND_INITIAL_WAIT 5000000
    -
    -#define DL_EVENT_LOGIN_SUCCESS "dingaling::login_success"
    -#define DL_EVENT_LOGIN_FAILURE "dingaling::login_failure"
    -#define DL_EVENT_CONNECTED "dingaling::connected"
    -#define MDL_CHAT_PROTO "jingle"
    -#define MDL_CHAT_FROM_GUESS "auto_from"
    -
    -SWITCH_MODULE_LOAD_FUNCTION(mod_dingaling_load);
    -SWITCH_MODULE_SHUTDOWN_FUNCTION(mod_dingaling_shutdown);
    -SWITCH_MODULE_DEFINITION(mod_dingaling, mod_dingaling_load, mod_dingaling_shutdown, NULL);
    -
    -static switch_memory_pool_t *module_pool = NULL;
    -switch_endpoint_interface_t *dingaling_endpoint_interface;
    -
    -static char sub_sql[] =
    -	"CREATE TABLE jabber_subscriptions (\n"
    -	"   sub_from      VARCHAR(255),\n" "   sub_to        VARCHAR(255),\n" "   show_pres     VARCHAR(255),\n" "   status        VARCHAR(255)\n" ");\n";
    -
    -
    -typedef enum {
    -	TFLAG_IO = (1 << 0),
    -	TFLAG_INBOUND = (1 << 1),
    -	TFLAG_OUTBOUND = (1 << 2),
    -	TFLAG_READING = (1 << 3),
    -	TFLAG_WRITING = (1 << 4),
    -	TFLAG_BYE = (1 << 5),
    -	TFLAG_VOICE = (1 << 6),
    -	TFLAG_RTP_READY = (1 << 7),
    -	TFLAG_CODEC_READY = (1 << 8),
    -	TFLAG_TRANSPORT = (1 << 9),
    -	TFLAG_ANSWER = (1 << 10),
    -	TFLAG_VAD_NONE = (1 << 11),
    -	TFLAG_VAD_IN = (1 << 12),
    -	TFLAG_VAD_OUT = (1 << 13),
    -	TFLAG_VAD = (1 << 14),
    -	TFLAG_DO_CAND = (1 << 15),
    -	TFLAG_DO_DESC = (1 << 16),
    -	TFLAG_LANADDR = (1 << 17),
    -	TFLAG_AUTO = (1 << 18),
    -	TFLAG_DTMF = (1 << 19),
    -	TFLAG_TIMER = (1 << 20),
    -	TFLAG_TERM = (1 << 21),
    -	TFLAG_TRANSPORT_ACCEPT = (1 << 22),
    -	TFLAG_READY = (1 << 23),
    -	TFLAG_NAT_MAP = (1 << 24),
    -	TFLAG_SECURE = (1 << 25),
    -	TFLAG_VIDEO_RTP_READY = (1 << 7)
    -} TFLAGS;
    -
    -typedef enum {
    -	GFLAG_MY_CODEC_PREFS = (1 << 0)
    -} GFLAGS;
    -
    -#define MAX_ACL 100
    -
    -static struct {
    -	int debug;
    -	char *dialplan;
    -	char *codec_string;
    -	char *codec_order[SWITCH_MAX_CODECS];
    -	int codec_order_last;
    -	char *codec_rates_string;
    -	char *codec_rates[SWITCH_MAX_CODECS];
    -	int codec_rates_last;
    -	unsigned int flags;
    -	unsigned int init;
    -	switch_hash_t *profile_hash;
    -	int running;
    -	int handles;
    -	char guess_ip[80];
    -	switch_event_node_t *in_node;
    -	switch_event_node_t *probe_node;
    -	switch_event_node_t *out_node;
    -	switch_event_node_t *roster_node;
    -	int auto_nat;
    -} globals;
    -
    -struct mdl_profile {
    -	char *name;
    -	char *login;
    -	char *password;
    -	char *message;
    -	char *priority;
    -#ifdef AUTO_REPLY
    -	char *auto_reply;
    -#endif
    -	char *dialplan;
    -	char *ip;
    -	char *extip;
    -	char *lanaddr;
    -	char *server;
    -	char *exten;
    -	char *context;
    -	char *timer_name;
    -	char *dbname;
    -	char *avatar;
    -	char *odbc_dsn;
    -	switch_bool_t purge;
    -	switch_thread_rwlock_t *rwlock;
    -	switch_mutex_t *mutex;
    -	ldl_handle_t *handle;
    -	uint32_t flags;
    -	uint32_t user_flags;
    -	char *acl[MAX_ACL];
    -	uint32_t acl_count;
    -	char *local_network;
    -};
    -typedef struct mdl_profile mdl_profile_t;
    -
    -/*! \brief The required components to setup a jingle transport */
    -typedef struct mdl_transport {
    -	char *remote_ip;
    -	switch_port_t remote_port;
    -
    -	switch_port_t local_port;	/*!< The real local port */
    -    switch_port_t adv_local_port;
    -	unsigned int ssrc;
    -
    -	char local_user[17];
    -    char local_pass[17];
    -	char *remote_user;
    -	char *remote_pass;
    -	int ptime;
    -	int payload_count;
    -	int restart_rtp;
    -
    -	switch_codec_t read_codec;
    -	switch_codec_t write_codec;
    -
    -	switch_frame_t read_frame;
    -
    -	uint32_t codec_rate;
    -	char *codec_name;
    -
    -	switch_payload_t codec_num;
    -	switch_payload_t r_codec_num;
    -
    -	char *stun_ip;
    -	uint16_t stun_port;
    -
    -	switch_rtp_t *rtp_session;
    -	ldl_transport_type_t type;
    -
    -	int total;
    -	int accepted;
    -
    -	int ready;
    -
    -	int codec_index;
    -
    -	int vid_width;
    -	int vid_height;
    -	int vid_rate;
    -
    -	switch_byte_t has_crypto;
    -	int crypto_tag;
    -	unsigned char local_raw_key[SWITCH_RTP_MAX_CRYPTO_LEN];
    -	unsigned char remote_raw_key[SWITCH_RTP_MAX_CRYPTO_LEN];
    -	switch_rtp_crypto_key_type_t crypto_send_type;
    -	switch_rtp_crypto_key_type_t crypto_recv_type;
    -	switch_rtp_crypto_key_type_t crypto_type;
    -
    -	char *local_crypto_key;
    -	char *remote_crypto_key;
    -
    -	ldl_crypto_data_t *local_crypto_data;
    -
    -} mdl_transport_t;
    -
    -
    -struct private_object {
    -	unsigned int flags;
    -	mdl_profile_t *profile;
    -	switch_core_session_t *session;
    -	switch_channel_t *channel;
    -
    -	switch_caller_profile_t *caller_profile;
    -	unsigned short samprate;
    -	switch_mutex_t *mutex;
    -	const switch_codec_implementation_t *codecs[SWITCH_MAX_CODECS];
    -	unsigned int num_codecs;
    -
    -	mdl_transport_t transports[LDL_TPORT_MAX+1];
    -
    -	ldl_session_t *dlsession;
    -
    -	char *us;
    -	char *them;
    -	unsigned int cand_id;
    -	unsigned int desc_id;
    -	unsigned int dc;
    -
    -	uint32_t timestamp_send;
    -	int32_t timestamp_recv;
    -	uint32_t last_read;
    -
    -	switch_time_t next_desc;
    -	switch_time_t next_cand;
    -
    -	char *recip;
    -	char *dnis;
    -	switch_mutex_t *flag_mutex;
    -
    -	int read_count;
    -	switch_time_t audio_ready;
    -
    -};
    -
    -struct rfc2833_digit {
    -	char digit;
    -	int duration;
    -};
    -
    -SWITCH_DECLARE_GLOBAL_STRING_FUNC(set_global_dialplan, globals.dialplan);
    -SWITCH_DECLARE_GLOBAL_STRING_FUNC(set_global_codec_string, globals.codec_string);
    -SWITCH_DECLARE_GLOBAL_STRING_FUNC(set_global_codec_rates_string, globals.codec_rates_string);
    -
    -SWITCH_STANDARD_API(dl_login);
    -SWITCH_STANDARD_API(dl_logout);
    -SWITCH_STANDARD_API(dl_pres);
    -SWITCH_STANDARD_API(dl_debug);
    -SWITCH_STANDARD_API(dingaling);
    -static switch_status_t channel_on_init(switch_core_session_t *session);
    -static switch_status_t channel_on_hangup(switch_core_session_t *session);
    -static switch_status_t channel_on_destroy(switch_core_session_t *session);
    -static switch_status_t channel_on_routing(switch_core_session_t *session);
    -static switch_status_t channel_on_exchange_media(switch_core_session_t *session);
    -static switch_status_t channel_on_soft_execute(switch_core_session_t *session);
    -static switch_call_cause_t channel_outgoing_channel(switch_core_session_t *session, switch_event_t *var_event,
    -													switch_caller_profile_t *outbound_profile,
    -													switch_core_session_t **new_session, switch_memory_pool_t **pool, switch_originate_flag_t flags,
    -													switch_call_cause_t *cancel_cause);
    -static switch_status_t channel_read_frame(switch_core_session_t *session, switch_frame_t **frame, switch_io_flag_t flags, int stream_id);
    -static switch_status_t channel_write_frame(switch_core_session_t *session, switch_frame_t *frame, switch_io_flag_t flags, int stream_id);
    -static switch_status_t channel_kill_channel(switch_core_session_t *session, int sig);
    -
    -static ldl_status handle_signalling(ldl_handle_t *handle, ldl_session_t *dlsession, ldl_signal_t dl_signal,
    -									char *to, char *from, char *subject, char *msg);
    -static ldl_status handle_response(ldl_handle_t *handle, char *id);
    -static switch_status_t load_config(void);
    -static int sin_callback(void *pArg, int argc, char **argv, char **columnNames);
    -
    -static switch_status_t soft_reload(void);
    -
    -#define is_special(s) (s && (strstr(s, "ext+") || strstr(s, "user+")))
    -
    -static char *translate_rpid(char *in, char *ext)
    -{
    -	char *r = NULL;
    -
    -	if (in && (strstr(in, "null") || strstr(in, "NULL"))) {
    -		in = NULL;
    -	}
    -
    -	if (!in) {
    -		in = ext;
    -	}
    -
    -	if (!in) {
    -		return NULL;
    -	}
    -
    -	if (!strcasecmp(in, "busy")) {
    -		r = "dnd";
    -	}
    -
    -	if (!strcasecmp(in, "unavailable")) {
    -		r = "dnd";
    -	}
    -
    -	if (!strcasecmp(in, "idle")) {
    -		r = "away";
    -	}
    -
    -	if (ext && !strcasecmp(ext, "idle")) {
    -		r = "away";
    -	} else if (ext && !strcasecmp(ext, "away")) {
    -		r = "away";
    -	}
    -
    -	return r;
    -}
    -
    -
    -static switch_cache_db_handle_t *mdl_get_db_handle(mdl_profile_t *profile)
    -{
    -	switch_cache_db_handle_t *dbh = NULL;
    -	char *dsn;
    -
    -	if (!zstr(profile->odbc_dsn)) {
    -		dsn = profile->odbc_dsn;
    -	} else {
    -		dsn = profile->dbname;
    -	}
    -
    -	if (switch_cache_db_get_db_handle_dsn(&dbh, dsn) != SWITCH_STATUS_SUCCESS) {
    -		dbh = NULL;
    -	}
    -
    -	return dbh;
    -
    -}
    -
    -
    -static switch_status_t mdl_execute_sql(mdl_profile_t *profile, char *sql, switch_mutex_t *mutex)
    -{
    -	switch_cache_db_handle_t *dbh = NULL;
    -	switch_status_t status = SWITCH_STATUS_FALSE;
    -
    -	if (mutex) {
    -		switch_mutex_lock(mutex);
    -	}
    -
    -	if (!(dbh = mdl_get_db_handle(profile))) {
    -		switch_log_printf(SWITCH_CHANNEL_LOG, SWITCH_LOG_ERROR, "Error Opening DB\n");
    -		goto end;
    -	}
    -
    -	status = switch_cache_db_execute_sql(dbh, sql, NULL);
    -
    -  end:
    -
    -	switch_cache_db_release_db_handle(&dbh);
    -
    -	if (mutex) {
    -		switch_mutex_unlock(mutex);
    -	}
    -
    -	return status;
    -}
    -
    -char *mdl_execute_sql2str(mdl_profile_t *profile, switch_mutex_t *mutex, char *sql, char *resbuf, size_t len)
    -{
    -	switch_cache_db_handle_t *dbh = NULL;
    -
    -	char *ret = NULL;
    -
    -	if (mutex) {
    -		switch_mutex_lock(mutex);
    -	}
    -
    -	if (!(dbh = mdl_get_db_handle(profile))) {
    -		switch_log_printf(SWITCH_CHANNEL_LOG, SWITCH_LOG_ERROR, "Error Opening DB\n");
    -		goto end;
    -	}
    -
    -	ret = switch_cache_db_execute_sql2str(dbh, sql, resbuf, len, NULL);
    -
    -end:
    -
    -	switch_cache_db_release_db_handle(&dbh);
    -
    -	if (mutex) {
    -		switch_mutex_unlock(mutex);
    -	}
    -
    -	return ret;
    -
    -}
    -
    -
    -static switch_bool_t mdl_execute_sql_callback(mdl_profile_t *profile, switch_mutex_t *mutex, char *sql, switch_core_db_callback_func_t callback,
    -											 void *pdata)
    -{
    -	switch_bool_t ret = SWITCH_FALSE;
    -	char *errmsg = NULL;
    -	switch_cache_db_handle_t *dbh = NULL;
    -
    -	if (mutex) {
    -		switch_mutex_lock(mutex);
    -	}
    -
    -	if (!(dbh = mdl_get_db_handle(profile))) {
    -		switch_log_printf(SWITCH_CHANNEL_LOG, SWITCH_LOG_ERROR, "Error Opening DB\n");
    -		goto end;
    -	}
    -
    -	switch_cache_db_execute_sql_callback(dbh, sql, callback, pdata, &errmsg);
    -
    -	if (errmsg) {
    -		switch_log_printf(SWITCH_CHANNEL_LOG, SWITCH_LOG_ERROR, "SQL ERR: [%s] %s\n", sql, errmsg);
    -		free(errmsg);
    -	}
    -
    -  end:
    -
    -	switch_cache_db_release_db_handle(&dbh);
    -
    -	if (mutex) {
    -		switch_mutex_unlock(mutex);
    -	}
    -
    -	return ret;
    -}
    -
    -
    -
    -
    -static int sub_callback(void *pArg, int argc, char **argv, char **columnNames)
    -{
    -	mdl_profile_t *profile = (mdl_profile_t *) pArg;
    -
    -	char *sub_from = argv[0];
    -	char *sub_to = argv[1];
    -	char *type = argv[2];
    -	char *rpid = argv[3];
    -	char *status = argv[4];
    -	//char *proto = argv[5];
    -
    -	if (zstr(type)) {
    -		type = NULL;
    -	} else if (!strcasecmp(type, "unavailable")) {
    -		status = NULL;
    -	}
    -	rpid = translate_rpid(rpid, status);
    -
    -	//ldl_handle_send_presence(profile->handle, sub_to, sub_from, "probe", rpid, status);
    -	ldl_handle_send_presence(profile->handle, sub_to, sub_from, type, rpid, status, profile->avatar);
    -
    -
    -	return 0;
    -}
    -
    -static int rost_callback(void *pArg, int argc, char **argv, char **columnNames)
    -{
    -	mdl_profile_t *profile = (mdl_profile_t *) pArg;
    -
    -	char *sub_from = argv[0];
    -	char *sub_to = argv[1];
    -	char *show = argv[2];
    -	char *status = argv[3];
    -
    -	if (!strcasecmp(status, "n/a")) {
    -		if (!strcasecmp(show, "dnd")) {
    -			status = "Busy";
    -		} else if (!strcasecmp(show, "away")) {
    -			status = "Idle";
    -		}
    -	}
    -
    -	ldl_handle_send_presence(profile->handle, sub_to, sub_from, NULL, show, status, profile->avatar);
    -
    -	return 0;
    -}
    -
    -static void pres_event_handler(switch_event_t *event)
    -{
    -	mdl_profile_t *profile = NULL;
    -	switch_hash_index_t *hi;
    -	void *val;
    -	char *proto = switch_event_get_header(event, "proto");
    -	char *from = switch_event_get_header(event, "from");
    -	char *status = switch_event_get_header(event, "status");
    -	char *rpid = switch_event_get_header(event, "rpid");
    -	char *type = switch_event_get_header(event, "event_subtype");
    -	char *sql;
    -	char pstr[128] = "";
    -
    -	if (globals.running != 1) {
    -		return;
    -	}
    -
    -	if (!proto) {
    -		switch_log_printf(SWITCH_CHANNEL_LOG, SWITCH_LOG_ERROR, "Error Missing 'proto' header\n");
    -		return;
    -	}
    -
    -	if (!from) {
    -		switch_log_printf(SWITCH_CHANNEL_LOG, SWITCH_LOG_ERROR, "Error Missing 'from' header\n");
    -		return;
    -	}
    -
    -	if (status && !strcasecmp(status, "n/a")) {
    -		status = NULL;
    -	}
    -
    -	switch (event->event_id) {
    -	case SWITCH_EVENT_PRESENCE_PROBE:
    -		if (proto) {
    -			char *subsql;
    -			char *to = switch_event_get_header(event, "to");
    -			char *f_host = NULL;
    -			if (to) {
    -				if ((f_host = strchr(to, '@'))) {
    -					f_host++;
    -				}
    -			}
    -
    -			if (f_host && (profile = switch_core_hash_find(globals.profile_hash, f_host))) {
    -				if (to && (subsql = switch_mprintf("select * from jabber_subscriptions where sub_to='%q' and sub_from='%q'", to, from))) {
    -					mdl_execute_sql_callback(profile, profile->mutex, subsql, sin_callback, profile);
    -					switch_safe_free(subsql);
    -				}
    -			}
    -		}
    -		return;
    -	case SWITCH_EVENT_PRESENCE_IN:
    -		if (!status) {
    -			status = "Available";
    -		}
    -		break;
    -	case SWITCH_EVENT_PRESENCE_OUT:
    -		type = "unavailable";
    -		break;
    -	default:
    -		break;
    -	}
    -
    -
    -	if (!type) {
    -		type = "";
    -	}
    -	if (!rpid) {
    -		rpid = "";
    -	}
    -	if (!status) {
    -		status = "Away";
    -	}
    -
    -	if (proto) {
    -		switch_snprintf(pstr, sizeof(pstr), "%s+", proto);
    -	}
    -
    -	sql =
    -		switch_mprintf("select sub_from, sub_to,'%q','%q','%q','%q' from jabber_subscriptions where sub_to = '%q%q'", type, rpid, status, proto, pstr,
    -					   from);
    -
    -	for (hi = switch_core_hash_first(globals.profile_hash); hi; hi = switch_core_hash_next(&hi)) {
    -		switch_core_hash_this(hi, NULL, NULL, &val);
    -		profile = (mdl_profile_t *) val;
    -
    -		if (!(profile->user_flags & LDL_FLAG_COMPONENT)) {
    -			continue;
    -		}
    -
    -
    -		if (sql) {
    -			switch_bool_t worked = mdl_execute_sql_callback(profile, profile->mutex, sql, sub_callback, profile);
    -
    -			if (!worked) {
    -				continue;
    -			}
    -		}
    -
    -
    -	}
    -
    -	switch_safe_free(sql);
    -}
    -
    -static switch_status_t chat_send(switch_event_t *message_event)
    -{
    -	char *user = NULL, *host, *f_user = NULL, *ffrom = NULL, *f_host = NULL, *f_resource = NULL;
    -	mdl_profile_t *profile = NULL;
    -	const char *proto;
    -	const char *from;
    -	const char *from_full;
    -	const char *to_full;
    -	const char *to;
    -	const char *body;
    -	const char *hint;
    -	const char *profile_name;
    -	switch_status_t status = SWITCH_STATUS_SUCCESS;
    -
    -	proto = switch_event_get_header(message_event, "proto");
    -	from = switch_event_get_header(message_event, "from");
    -	from_full = switch_event_get_header(message_event, "from_full");
    -	to_full = switch_event_get_header(message_event, "to_full");
    -	to = switch_event_get_header(message_event, "to");
    -	body = switch_event_get_body(message_event);
    -	hint = switch_event_get_header(message_event, "hint");
    -	profile_name = switch_event_get_header(message_event, "ldl_profile");
    -
    -	switch_assert(proto != NULL);
    -
    -	if (from && (f_user = strdup(from))) {
    -		if ((f_host = strchr(f_user, '@'))) {
    -			*f_host++ = '\0';
    -			if ((f_resource = strchr(f_host, '/'))) {
    -				*f_resource++ = '\0';
    -			}
    -		}
    -	}
    -
    -	if ((profile_name && (profile = switch_core_hash_find(globals.profile_hash, profile_name)))) {
    -		from = from_full;
    -		to = to_full;
    -
    -		ldl_handle_send_msg(profile->handle, (char *) from, (char *) to, NULL, switch_str_nil(body));
    -	} else if (to && (user = strdup(to))) {
    -		if ((host = strchr(user, '@'))) {
    -			*host++ = '\0';
    -		}
    -
    -		if (f_host && ((profile_name && (profile = switch_core_hash_find(globals.profile_hash, profile_name)))
    -					   || (profile = switch_core_hash_find(globals.profile_hash, f_host)))) {
    -
    -			if (!strcmp(proto, MDL_CHAT_PROTO)) {
    -				from = hint;
    -			} else {
    -				char *p;
    -
    -				if (!(profile->user_flags & LDL_FLAG_COMPONENT)) {
    -					from = ffrom = strdup(profile->login);
    -				} else {
    -					from = ffrom = switch_mprintf("%s+%s", proto, from);
    -				}
    -
    -				if ((p = strchr(from, '/'))) {
    -					*p = '\0';
    -				}
    -			}
    -			if (!(profile->user_flags & LDL_FLAG_COMPONENT) && !strcmp(f_user, MDL_CHAT_FROM_GUESS)) {
    -				switch_log_printf(SWITCH_CHANNEL_LOG, SWITCH_LOG_DEBUG, "Using auto_from jid address for profile %s\n", profile->name);
    -				ldl_handle_send_msg(profile->handle, NULL, (char *) to, NULL, switch_str_nil(body));
    -			} else {
    -				ldl_handle_send_msg(profile->handle, (char *) from, (char *) to, NULL, switch_str_nil(body));
    -			}
    -			switch_safe_free(ffrom);
    -		} else {
    -			switch_log_printf(SWITCH_CHANNEL_LOG, SWITCH_LOG_ERROR, "Invalid Profile %s\n", f_host ? f_host : "NULL");
    -			status = SWITCH_STATUS_FALSE;
    -			goto done;
    -		}
    -	}
    -
    - done:
    -	switch_safe_free(user);
    -	switch_safe_free(f_user);
    -
    -	return status;
    -}
    -
    -
    -static void roster_event_handler(switch_event_t *event)
    -{
    -	char *status = switch_event_get_header(event, "status");
    -	char *from = switch_event_get_header(event, "from");
    -	mdl_profile_t *profile = NULL;
    -	switch_hash_index_t *hi;
    -	void *val;
    -	char *sql;
    -
    -	if (globals.running != 1) {
    -		return;
    -	}
    -
    -	if (status && !strcasecmp(status, "n/a")) {
    -		status = NULL;
    -	}
    -
    -	if (from) {
    -		sql = switch_mprintf("select *,'%q' from jabber_subscriptions where sub_from='%q'", status ? status : "", from);
    -	} else {
    -		sql = switch_mprintf("select *,'%q' from jabber_subscriptions", status ? status : "");
    -	}
    -
    -	for (hi = switch_core_hash_first(globals.profile_hash); hi; hi = switch_core_hash_next(&hi)) {
    -		switch_core_hash_this(hi, NULL, NULL, &val);
    -		profile = (mdl_profile_t *) val;
    -
    -		if (!(profile->user_flags & LDL_FLAG_COMPONENT)) {
    -			continue;
    -		}
    -
    -
    -		if (sql) {
    -			switch_bool_t worked = mdl_execute_sql_callback(profile, profile->mutex, sql, rost_callback, profile);
    -			if (!worked) {
    -				continue;
    -			}
    -		}
    -
    -	}
    -
    -	switch_safe_free(sql);
    -
    -}
    -
    -static void ipchanged_event_handler(switch_event_t *event)
    -{
    -	const char *cond = switch_event_get_header(event, "condition");
    -
    -	switch_log_printf(SWITCH_CHANNEL_LOG, SWITCH_LOG_INFO, "EVENT_TRAP: IP change detected\n");
    -
    -	if (cond && !strcmp(cond, "network-external-address-change")) {
    -		const char *old_ip4 = switch_event_get_header_nil(event, "network-external-address-previous-v4");
    -		const char *new_ip4 = switch_event_get_header_nil(event, "network-external-address-change-v4");
    -		switch_hash_index_t *hi;
    -		void *val;
    -		char *tmp;
    -		mdl_profile_t *profile;
    -		switch_log_printf(SWITCH_CHANNEL_LOG, SWITCH_LOG_INFO, "IP change detected [%s]->[%s]\n", old_ip4, new_ip4);
    -		if (globals.profile_hash) {
    -			for (hi = switch_core_hash_first(globals.profile_hash); hi; hi = switch_core_hash_next(&hi)) {
    -				switch_core_hash_this(hi, NULL, NULL, &val);
    -				profile = (mdl_profile_t *) val;
    -				if (old_ip4 && profile->extip && !strcmp(profile->extip, old_ip4)) {
    -					tmp = profile->extip;
    -					profile->extip = strdup(new_ip4);
    -					switch_safe_free(tmp);
    -				}
    -			}
    -		}
    -	}
    -}
    -
    -static int so_callback(void *pArg, int argc, char **argv, char **columnNames)
    -{
    -	mdl_profile_t *profile = (mdl_profile_t *) pArg;
    -
    -	char *sub_from = argv[0];
    -	char *sub_to = argv[1];
    -
    -
    -	ldl_handle_send_presence(profile->handle, sub_to, sub_from, "unavailable", "dnd", "Bub-Bye", profile->avatar);
    -
    -	return 0;
    -}
    -
    -
    -static int sin_callback(void *pArg, int argc, char **argv, char **columnNames)
    -{
    -	mdl_profile_t *profile = (mdl_profile_t *) pArg;
    -	switch_event_t *event;
    -
    -	//char *sub_from = argv[0];
    -	char *sub_to = argv[1];
    -
    -	if (is_special(sub_to)) {
    -		if (switch_event_create(&event, SWITCH_EVENT_PRESENCE_IN) == SWITCH_STATUS_SUCCESS) {
    -			switch_event_add_header_string(event, SWITCH_STACK_BOTTOM, "proto", MDL_CHAT_PROTO);
    -			switch_event_add_header_string(event, SWITCH_STACK_BOTTOM, "login", profile->login);
    -			switch_event_add_header_string(event, SWITCH_STACK_BOTTOM, "from", sub_to);
    -			switch_event_add_header_string(event, SWITCH_STACK_BOTTOM, "rpid", "available");
    -			switch_event_add_header_string(event, SWITCH_STACK_BOTTOM, "status", "Online");
    -			switch_event_fire(&event);
    -		}
    -	}
    -
    -	return 0;
    -}
    -
    -static void sign_off(void)
    -{
    -	mdl_profile_t *profile = NULL;
    -	switch_hash_index_t *hi;
    -	void *val;
    -	char *sql;
    -
    -
    -
    -	sql = switch_mprintf("select * from jabber_subscriptions");
    -
    -
    -	for (hi = switch_core_hash_first(globals.profile_hash); hi; hi = switch_core_hash_next(&hi)) {
    -		switch_core_hash_this(hi, NULL, NULL, &val);
    -		profile = (mdl_profile_t *) val;
    -
    -		if (!(profile->user_flags & LDL_FLAG_COMPONENT)) {
    -			continue;
    -		}
    -
    -
    -		if (sql) {
    -			switch_bool_t worked = mdl_execute_sql_callback(profile, profile->mutex, sql, so_callback, profile);
    -			if (!worked) {
    -				continue;
    -			}
    -		}
    -
    -	}
    -
    -	switch_yield(1000000);
    -	switch_safe_free(sql);
    -
    -}
    -
    -static void sign_on(mdl_profile_t *profile)
    -{
    -	char *sql;
    -
    -
    -	if ((sql = switch_mprintf("select * from jabber_subscriptions where sub_to like 'ext+%%' or sub_to like 'user+%%' or sub_to like 'conf+%%'"))) {
    -		mdl_execute_sql_callback(profile, profile->mutex, sql, sin_callback, profile);
    -		switch_safe_free(sql);
    -	}
    -}
    -
    -static void terminate_session(switch_core_session_t **session, int line, switch_call_cause_t cause)
    -{
    -	if (*session) {
    -		switch_channel_t *channel = switch_core_session_get_channel(*session);
    -		switch_channel_state_t state = switch_channel_get_state(channel);
    -		struct private_object *tech_pvt = NULL;
    -
    -		switch_log_printf(SWITCH_CHANNEL_SESSION_LOG(*session), SWITCH_LOG_DEBUG, "Terminate called from line %d state=%s\n", line,
    -						  switch_channel_state_name(state));
    -
    -		tech_pvt = switch_core_session_get_private(*session);
    -
    -
    -		if (tech_pvt && tech_pvt->profile && tech_pvt->profile->ip && tech_pvt->transports[LDL_TPORT_RTP].local_port) {
    -			switch_rtp_release_port(tech_pvt->profile->ip, tech_pvt->transports[LDL_TPORT_RTP].local_port);
    -		}
    -
    -		if (tech_pvt && tech_pvt->profile && tech_pvt->profile->ip && tech_pvt->transports[LDL_TPORT_VIDEO_RTP].local_port) {
    -			switch_rtp_release_port(tech_pvt->profile->ip, tech_pvt->transports[LDL_TPORT_VIDEO_RTP].local_port);
    -		}
    -
    -		if (!switch_core_session_running(*session) && (!tech_pvt || !switch_test_flag(tech_pvt, TFLAG_READY))) {
    -			switch_core_session_destroy(session);
    -			return;
    -		}
    -
    -		if (!tech_pvt || switch_test_flag(tech_pvt, TFLAG_TERM)) {
    -			/*once is enough */
    -			return;
    -		}
    -
    -		if (state < CS_HANGUP) {
    -			switch_channel_hangup(channel, cause);
    -		}
    -
    -		switch_mutex_lock(tech_pvt->flag_mutex);
    -		if (!switch_test_flag(tech_pvt, TFLAG_OUTBOUND)) {
    -			switch_set_flag(tech_pvt, TFLAG_TERM);
    -		}
    -		switch_set_flag(tech_pvt, TFLAG_BYE);
    -		switch_clear_flag(tech_pvt, TFLAG_IO);
    -		switch_mutex_unlock(tech_pvt->flag_mutex);
    -
    -		*session = NULL;
    -	}
    -
    -}
    -
    -static void dl_logger(char *file, const char *func, int line, int level, char *fmt, ...)
    -{
    -	va_list ap;
    -	char *data = NULL;
    -	int ret;
    -
    -	va_start(ap, fmt);
    -	if ((ret = switch_vasprintf(&data, fmt, ap)) != -1) {
    -		if (!strncasecmp(data, "+xml:", 5)) {
    -			switch_xml_t xml;
    -			char *form;
    -			char *ll = data + 5;
    -			char *xmltxt;
    -
    -			if (ll) {
    -				if ((xmltxt = strchr(ll, ':'))) {
    -					*xmltxt++ = '\0';
    -					if (strlen(xmltxt) > 2) {
    -						xml = switch_xml_parse_str(xmltxt, strlen(xmltxt));
    -						form = switch_xml_toxml(xml, SWITCH_FALSE);
    -						switch_log_printf(SWITCH_CHANNEL_ID_LOG, file, func, line, NULL, level,
    -										  "%s:\n-------------------------------------------------------------------------------\n" "%s\n", ll, form);
    -						switch_xml_free(xml);
    -						free(data);
    -						switch_safe_free(form);
    -					}
    -				}
    -			}
    -		} else {
    -			switch_log_printf(SWITCH_CHANNEL_ID_LOG, file, func, line, NULL, level, "%s\n", data);
    -		}
    -	}
    -	va_end(ap);
    -}
    -
    -static int get_codecs(struct private_object *tech_pvt)
    -{
    -	char *codec_string = NULL;
    -	const char *var;
    -	char *codec_order[SWITCH_MAX_CODECS];
    -	int codec_order_last;
    -	char **codec_order_p = NULL;
    -
    -
    -	switch_assert(tech_pvt != NULL);
    -	switch_assert(tech_pvt->session != NULL);
    -
    -	if (!tech_pvt->num_codecs) {
    -
    -		if ((var = switch_channel_get_variable(tech_pvt->channel, "absolute_codec_string"))) {
    -			codec_string = (char *)var;
    -			codec_order_last = switch_separate_string(codec_string, ',', codec_order, SWITCH_MAX_CODECS);
    -			codec_order_p = codec_order;
    -		} else {
    -			codec_string = globals.codec_string;
    -			codec_order_last = globals.codec_order_last;
    -			codec_order_p = globals.codec_order;
    -		}
    -
    -		if (codec_string) {
    -			if ((tech_pvt->num_codecs = switch_loadable_module_get_codecs_sorted(tech_pvt->codecs, NULL,
    -																				 SWITCH_MAX_CODECS, codec_order_p, codec_order_last)) <= 0) {
    -				switch_log_printf(SWITCH_CHANNEL_LOG, SWITCH_LOG_ERROR, "NO codecs?\n");
    -				return 0;
    -			}
    -
    -		} else if (((tech_pvt->num_codecs = switch_loadable_module_get_codecs(tech_pvt->codecs, SWITCH_MAX_CODECS))) <= 0) {
    -			switch_log_printf(SWITCH_CHANNEL_LOG, SWITCH_LOG_ERROR, "NO codecs?\n");
    -			return 0;
    -		}
    -	}
    -
    -	return tech_pvt->num_codecs;
    -}
    -
    -
    -
    -static void *SWITCH_THREAD_FUNC handle_thread_run(switch_thread_t *thread, void *obj)
    -{
    -	ldl_handle_t *handle = obj;
    -	mdl_profile_t *profile = NULL;
    -
    -
    -
    -	profile = ldl_handle_get_private(handle);
    -	globals.handles++;
    -	switch_set_flag(profile, TFLAG_IO);
    -	ldl_handle_run(handle);
    -	switch_clear_flag(profile, TFLAG_IO);
    -	globals.handles--;
    -	ldl_handle_destroy(&profile->handle);
    -	switch_log_printf(SWITCH_CHANNEL_LOG, SWITCH_LOG_DEBUG, "Handle %s [%s] Destroyed\n", profile->name, profile->login);
    -
    -	return NULL;
    -}
    -
    -static void handle_thread_launch(ldl_handle_t *handle)
    -{
    -	switch_thread_t *thread;
    -	switch_threadattr_t *thd_attr = NULL;
    -
    -	switch_threadattr_create(&thd_attr, module_pool);
    -	switch_threadattr_detach_set(thd_attr, 1);
    -	switch_threadattr_stacksize_set(thd_attr, SWITCH_THREAD_STACKSIZE);
    -	switch_thread_create(&thread, thd_attr, handle_thread_run, handle, module_pool);
    -
    -}
    -
    -
    -switch_status_t mdl_build_crypto(struct private_object *tech_pvt, ldl_transport_type_t ttype,
    -									int index, switch_rtp_crypto_key_type_t type, switch_rtp_crypto_direction_t direction)
    -{
    -	unsigned char b64_key[512] = "";
    -	const char *type_str;
    -	unsigned char *key;
    -	char *p;
    -
    -
    -	if (!switch_test_flag(tech_pvt, TFLAG_SECURE)) {
    -		return SWITCH_STATUS_SUCCESS;
    -	}
    -
    -
    -	if (type == AES_CM_128_HMAC_SHA1_80) {
    -		type_str = SWITCH_RTP_CRYPTO_KEY_80;
    -	} else {
    -		type_str = SWITCH_RTP_CRYPTO_KEY_32;
    -	}
    -
    -	if (direction == SWITCH_RTP_CRYPTO_SEND) {
    -		key = tech_pvt->transports[ttype].local_raw_key;
    -	} else {
    -		key = tech_pvt->transports[ttype].remote_raw_key;
    -
    -	}
    -
    -	switch_rtp_get_random(key, SWITCH_RTP_KEY_LEN);
    -	switch_b64_encode(key, SWITCH_RTP_KEY_LEN, b64_key, sizeof(b64_key));
    -	p = strrchr((char *) b64_key, '=');
    -
    -	while (p && *p && *p == '=') {
    -		*p-- = '\0';
    -	}
    -
    -	tech_pvt->transports[ttype].local_crypto_key = switch_core_session_sprintf(tech_pvt->session, "%d %s inline:%s", index, type_str, b64_key);
    -	tech_pvt->transports[ttype].local_crypto_data = switch_core_session_alloc(tech_pvt->session, sizeof(ldl_crypto_data_t));
    -	tech_pvt->transports[ttype].local_crypto_data->tag = switch_core_session_sprintf(tech_pvt->session, "%d", index);
    -	tech_pvt->transports[ttype].local_crypto_data->suite = switch_core_session_strdup(tech_pvt->session, type_str);
    -	tech_pvt->transports[ttype].local_crypto_data->key = switch_core_session_sprintf(tech_pvt->session, "inline:%s", (char *)b64_key);
    -	switch_log_printf(SWITCH_CHANNEL_SESSION_LOG(tech_pvt->session), SWITCH_LOG_DEBUG, "Set Local Key [%s]\n", tech_pvt->transports[ttype].local_crypto_key);
    -
    -	tech_pvt->transports[ttype].crypto_type = AES_CM_128_NULL_AUTH;
    -
    -
    -	return SWITCH_STATUS_SUCCESS;
    -}
    -
    -
    -static switch_status_t mdl_add_crypto(struct private_object *tech_pvt,
    -									  ldl_transport_type_t ttype, const char *key_str, switch_rtp_crypto_direction_t direction)
    -{
    -	unsigned char key[SWITCH_RTP_MAX_CRYPTO_LEN];
    -	switch_rtp_crypto_key_type_t type;
    -	char *p;
    -
    -
    -	p = strchr(key_str, ' ');
    -
    -	if (p && *p && *(p + 1)) {
    -		p++;
    -		if (!strncasecmp(p, SWITCH_RTP_CRYPTO_KEY_32, strlen(SWITCH_RTP_CRYPTO_KEY_32))) {
    -			type = AES_CM_128_HMAC_SHA1_32;
    -		} else if (!strncasecmp(p, SWITCH_RTP_CRYPTO_KEY_80, strlen(SWITCH_RTP_CRYPTO_KEY_80))) {
    -			type = AES_CM_128_HMAC_SHA1_80;
    -		} else {
    -			switch_log_printf(SWITCH_CHANNEL_SESSION_LOG(tech_pvt->session), SWITCH_LOG_ERROR, "Parse Error near [%s]\n", p);
    -			goto bad;
    -		}
    -
    -		p = strchr(p, ' ');
    -		if (p && *p && *(p + 1)) {
    -			p++;
    -			if (strncasecmp(p, "inline:", 7)) {
    -				switch_log_printf(SWITCH_CHANNEL_SESSION_LOG(tech_pvt->session), SWITCH_LOG_ERROR, "Parse Error near [%s]\n", p);
    -				goto bad;
    -			}
    -
    -			p += 7;
    -			switch_b64_decode(p, (char *) key, sizeof(key));
    -
    -			if (direction == SWITCH_RTP_CRYPTO_SEND) {
    -				tech_pvt->transports[ttype].crypto_send_type = type;
    -				memcpy(tech_pvt->transports[ttype].local_raw_key, key, SWITCH_RTP_KEY_LEN);
    -			} else {
    -				tech_pvt->transports[ttype].crypto_recv_type = type;
    -				memcpy(tech_pvt->transports[ttype].remote_raw_key, key, SWITCH_RTP_KEY_LEN);
    -			}
    -
    -			switch_log_printf(SWITCH_CHANNEL_SESSION_LOG(tech_pvt->session), SWITCH_LOG_NOTICE,
    -							  "%s Setting %s crypto key\n", ldl_transport_type_str(ttype), switch_core_session_get_name(tech_pvt->session));
    -			tech_pvt->transports[ttype].has_crypto++;
    -
    -
    -			return SWITCH_STATUS_SUCCESS;
    -		}
    -
    -	}
    -
    - bad:
    -
    -	switch_log_printf(SWITCH_CHANNEL_SESSION_LOG(tech_pvt->session), SWITCH_LOG_ERROR, "Error!\n");
    -	return SWITCH_STATUS_FALSE;
    -
    -}
    -
    -static void try_secure(struct private_object *tech_pvt, ldl_transport_type_t ttype)
    -{
    -	switch_secure_settings_t	ssec;	/* Used just to wrap over params in a call to switch_rtp_add_crypto_key. */
    -
    -	if (!switch_test_flag(tech_pvt, TFLAG_SECURE)) {
    -		return;
    -	}
    -
    -	memset(&ssec, 0, sizeof(ssec));
    -
    -	if (tech_pvt->transports[ttype].crypto_recv_type) {
    -		tech_pvt->transports[ttype].crypto_type = tech_pvt->transports[ttype].crypto_recv_type;
    -	}
    -
    -	if (tech_pvt->transports[ttype].crypto_type) {
    -
    -		memcpy(ssec.local_raw_key, tech_pvt->transports[ttype].local_raw_key, switch_core_media_crypto_keysalt_len(tech_pvt->transports[ttype].crypto_type));
    -		ssec.local_crypto_key = switch_core_session_strdup(tech_pvt->session, tech_pvt->transports[ttype].local_crypto_key);
    -		switch_core_media_add_crypto(tech_pvt->session, &ssec, SWITCH_RTP_CRYPTO_SEND);
    -		switch_rtp_add_crypto_key(tech_pvt->transports[ttype].rtp_session, SWITCH_RTP_CRYPTO_SEND_RTCP, tech_pvt->transports[ttype].crypto_type, &ssec);
    -
    -		memcpy(ssec.remote_raw_key, tech_pvt->transports[ttype].remote_raw_key, switch_core_media_crypto_keysalt_len(tech_pvt->transports[ttype].crypto_type));
    -		ssec.remote_crypto_key = switch_core_session_strdup(tech_pvt->session, tech_pvt->transports[ttype].local_crypto_key);
    -		switch_core_media_add_crypto(tech_pvt->session, &ssec, SWITCH_RTP_CRYPTO_RECV);
    -		switch_rtp_add_crypto_key(tech_pvt->transports[ttype].rtp_session, SWITCH_RTP_CRYPTO_RECV, tech_pvt->transports[ttype].crypto_type, &ssec);
    -
    -		switch_channel_set_variable(tech_pvt->channel, "jingle_secure_audio_confirmed", "true");
    -
    -		switch_log_printf(SWITCH_CHANNEL_SESSION_LOG(tech_pvt->session), SWITCH_LOG_NOTICE,
    -				"%s %s crypto confirmed\n", ldl_transport_type_str(ttype), switch_core_session_get_name(tech_pvt->session));
    -	}
    -}
    -
    -
    -
    -static int activate_audio_rtp(struct private_object *tech_pvt)
    -{
    -	switch_channel_t *channel = switch_core_session_get_channel(tech_pvt->session);
    -	const char *err;
    -	int ms = tech_pvt->transports[LDL_TPORT_RTP].ptime;
    -	switch_rtp_flag_t flags[SWITCH_RTP_FLAG_INVALID] = {0};
    -	int locked = 0;
    -	int r = 1;
    -
    -
    -	//if (switch_rtp_ready(tech_pvt->transports[LDL_TPORT_RTP].rtp_session)) {
    -	//	return 1;
    -	//}
    -
    -	if (!(tech_pvt->transports[LDL_TPORT_RTP].remote_ip && tech_pvt->transports[LDL_TPORT_RTP].remote_port)) {
    -		switch_log_printf(SWITCH_CHANNEL_SESSION_LOG(tech_pvt->session), SWITCH_LOG_DEBUG, "No valid rtp candidates received!\n");
    -		return 0;
    -	}
    -
    -	if (switch_core_codec_ready(&tech_pvt->transports[LDL_TPORT_RTP].read_codec)) {
    -		locked = 1;
    -		switch_mutex_lock(tech_pvt->transports[LDL_TPORT_RTP].read_codec.mutex);
    -		if (switch_rtp_ready(tech_pvt->transports[LDL_TPORT_RTP].rtp_session)) {
    -			switch_rtp_kill_socket(tech_pvt->transports[LDL_TPORT_RTP].rtp_session);
    -			switch_rtp_destroy(&tech_pvt->transports[LDL_TPORT_RTP].rtp_session);
    -		}
    -
    -
    -	} else {
    -		if (switch_core_codec_init(&tech_pvt->transports[LDL_TPORT_RTP].read_codec,
    -								   tech_pvt->transports[LDL_TPORT_RTP].codec_name,
    -								   NULL,
    -								   NULL,
    -								   tech_pvt->transports[LDL_TPORT_RTP].codec_rate,
    -								   ms,
    -								   1,
    -								   SWITCH_CODEC_FLAG_ENCODE | SWITCH_CODEC_FLAG_DECODE,
    -								   NULL, switch_core_session_get_pool(tech_pvt->session)) != SWITCH_STATUS_SUCCESS) {
    -			switch_log_printf(SWITCH_CHANNEL_SESSION_LOG(tech_pvt->session), SWITCH_LOG_DEBUG, "Can't load codec?\n");
    -			switch_channel_hangup(channel, SWITCH_CAUSE_DESTINATION_OUT_OF_ORDER);
    -			r = 0;
    -			goto end;
    -		}
    -		tech_pvt->transports[LDL_TPORT_RTP].read_codec.session = tech_pvt->session;
    -
    -		tech_pvt->transports[LDL_TPORT_RTP].read_frame.rate = tech_pvt->transports[LDL_TPORT_RTP].read_codec.implementation->samples_per_second;
    -		tech_pvt->transports[LDL_TPORT_RTP].read_frame.codec = &tech_pvt->transports[LDL_TPORT_RTP].read_codec;
    -
    -		switch_log_printf(SWITCH_CHANNEL_SESSION_LOG(tech_pvt->session), SWITCH_LOG_DEBUG, "Set Read Codec to %s@%d\n",
    -						  tech_pvt->transports[LDL_TPORT_RTP].codec_name, (int) tech_pvt->transports[LDL_TPORT_RTP].read_codec.implementation->samples_per_second);
    -
    -		if (switch_core_codec_init(&tech_pvt->transports[LDL_TPORT_RTP].write_codec,
    -								   tech_pvt->transports[LDL_TPORT_RTP].codec_name,
    -								   NULL,
    -								   NULL,
    -								   tech_pvt->transports[LDL_TPORT_RTP].codec_rate,
    -								   ms,
    -								   1,
    -								   SWITCH_CODEC_FLAG_ENCODE | SWITCH_CODEC_FLAG_DECODE,
    -								   NULL, switch_core_session_get_pool(tech_pvt->session)) != SWITCH_STATUS_SUCCESS) {
    -			switch_log_printf(SWITCH_CHANNEL_SESSION_LOG(tech_pvt->session), SWITCH_LOG_DEBUG, "Can't load codec?\n");
    -			switch_channel_hangup(channel, SWITCH_CAUSE_DESTINATION_OUT_OF_ORDER);
    -			r = 0;
    -			goto end;
    -		}
    -		tech_pvt->transports[LDL_TPORT_RTP].write_codec.session = tech_pvt->session;
    -		switch_log_printf(SWITCH_CHANNEL_SESSION_LOG(tech_pvt->session), SWITCH_LOG_DEBUG, "Set Write Codec to %s@%d\n",
    -						  tech_pvt->transports[LDL_TPORT_RTP].codec_name, (int) tech_pvt->transports[LDL_TPORT_RTP].write_codec.implementation->samples_per_second);
    -
    -		switch_core_session_set_read_codec(tech_pvt->session, &tech_pvt->transports[LDL_TPORT_RTP].read_codec);
    -		switch_core_session_set_write_codec(tech_pvt->session, &tech_pvt->transports[LDL_TPORT_RTP].write_codec);
    -	}
    -
    -	if (globals.auto_nat && tech_pvt->profile->local_network && !switch_check_network_list_ip(tech_pvt->transports[LDL_TPORT_RTP].remote_ip, tech_pvt->profile->local_network)) {
    -		switch_port_t external_port = 0;
    -		switch_nat_add_mapping((switch_port_t) tech_pvt->transports[LDL_TPORT_RTP].local_port, SWITCH_NAT_UDP, &external_port, SWITCH_FALSE);
    -
    -		if (external_port) {
    -			tech_pvt->transports[LDL_TPORT_RTP].adv_local_port = external_port;
    -			switch_set_flag(tech_pvt, TFLAG_NAT_MAP);
    -		} else {
    -			switch_log_printf(SWITCH_CHANNEL_LOG, SWITCH_LOG_WARNING, "NAT mapping returned 0. Run freeswitch with -nonat since it's not working right.\n");
    -		}
    -	}
    -
    -	if (tech_pvt->transports[LDL_TPORT_RTP].adv_local_port != tech_pvt->transports[LDL_TPORT_RTP].local_port) {
    -		switch_log_printf(SWITCH_CHANNEL_SESSION_LOG(tech_pvt->session), SWITCH_LOG_DEBUG, "SETUP AUDIO RTP %s:%d(%d) -> %s:%d codec: %s(%d) %dh %di\n",
    -						  tech_pvt->profile->ip,
    -						  tech_pvt->transports[LDL_TPORT_RTP].local_port,
    -						  tech_pvt->transports[LDL_TPORT_RTP].adv_local_port,
    -						  tech_pvt->transports[LDL_TPORT_RTP].remote_ip,
    -						  tech_pvt->transports[LDL_TPORT_RTP].remote_port,
    -						  tech_pvt->transports[LDL_TPORT_RTP].read_codec.implementation->iananame,
    -						  tech_pvt->transports[LDL_TPORT_RTP].read_codec.implementation->ianacode,
    -						  tech_pvt->transports[LDL_TPORT_RTP].read_codec.implementation->samples_per_packet,
    -						  tech_pvt->transports[LDL_TPORT_RTP].read_codec.implementation->microseconds_per_packet
    -
    -						  );
    -	} else {
    -		switch_log_printf(SWITCH_CHANNEL_SESSION_LOG(tech_pvt->session), SWITCH_LOG_DEBUG, "SETUP AUDIO RTP %s:%d -> %s:%d codec: %s(%d) %dh %di\n",
    -						  tech_pvt->profile->ip,
    -						  tech_pvt->transports[LDL_TPORT_RTP].local_port,
    -						  tech_pvt->transports[LDL_TPORT_RTP].remote_ip,
    -						  tech_pvt->transports[LDL_TPORT_RTP].remote_port,
    -						  tech_pvt->transports[LDL_TPORT_RTP].read_codec.implementation->iananame,
    -						  tech_pvt->transports[LDL_TPORT_RTP].read_codec.implementation->ianacode,
    -						  tech_pvt->transports[LDL_TPORT_RTP].read_codec.implementation->samples_per_packet,
    -						  tech_pvt->transports[LDL_TPORT_RTP].read_codec.implementation->microseconds_per_packet
    -						  );
    -	}
    -
    -	flags[SWITCH_RTP_FLAG_DATAWAIT]++;
    -	flags[SWITCH_RTP_FLAG_GOOGLEHACK]++;
    -	flags[SWITCH_RTP_FLAG_AUTOADJ]++;
    -	flags[SWITCH_RTP_FLAG_RAW_WRITE]++;
    -	flags[SWITCH_RTP_FLAG_AUTO_CNG]++;
    -
    -	if (switch_test_flag(tech_pvt->profile, TFLAG_TIMER)) {
    -		flags[SWITCH_RTP_FLAG_USE_TIMER]++;
    -	}
    -
    -	if (switch_true(switch_channel_get_variable(channel, "disable_rtp_auto_adjust"))) {
    -		flags[SWITCH_RTP_FLAG_AUTOADJ] = 0;
    -	}
    -
    -	if (!(tech_pvt->transports[LDL_TPORT_RTP].rtp_session = switch_rtp_new(tech_pvt->profile->ip,
    -																		   tech_pvt->transports[LDL_TPORT_RTP].local_port,
    -																		   tech_pvt->transports[LDL_TPORT_RTP].remote_ip,
    -																		   tech_pvt->transports[LDL_TPORT_RTP].remote_port,
    -																		   tech_pvt->transports[LDL_TPORT_RTP].codec_num,
    -																		   tech_pvt->transports[LDL_TPORT_RTP].read_codec.implementation->samples_per_packet,
    -																		   tech_pvt->transports[LDL_TPORT_RTP].read_codec.implementation->microseconds_per_packet,
    -																		   flags, tech_pvt->profile->timer_name, &err, switch_core_session_get_pool(tech_pvt->session), 0, 0))) {
    -		switch_log_printf(SWITCH_CHANNEL_SESSION_LOG(tech_pvt->session), SWITCH_LOG_DEBUG, "RTP ERROR %s\n", err);
    -		switch_channel_hangup(channel, SWITCH_CAUSE_DESTINATION_OUT_OF_ORDER);
    -		r = 0;
    -		goto end;
    -	} else {
    -		uint8_t vad_in = switch_test_flag(tech_pvt, TFLAG_VAD_IN) ? 1 : 0;
    -		uint8_t vad_out = switch_test_flag(tech_pvt, TFLAG_VAD_OUT) ? 1 : 0;
    -		uint8_t inb = switch_test_flag(tech_pvt, TFLAG_OUTBOUND) ? 0 : 1;
    -
    -		switch_rtp_set_ssrc(tech_pvt->transports[LDL_TPORT_RTP].rtp_session, tech_pvt->transports[LDL_TPORT_RTP].ssrc);
    -
    -		switch_rtp_intentional_bugs(tech_pvt->transports[LDL_TPORT_RTP].rtp_session, RTP_BUG_GEN_ONE_GEN_ALL);
    -
    -
    -		if (tech_pvt->transports[LDL_TPORT_RTCP].remote_port) {
    -			switch_rtp_activate_rtcp(tech_pvt->transports[LDL_TPORT_RTP].rtp_session, MDL_RTCP_DUR,
    -									 tech_pvt->transports[LDL_TPORT_RTCP].remote_port, SWITCH_FALSE);
    -
    -		}
    -
    -		try_secure(tech_pvt, LDL_TPORT_RTP);
    -
    -		switch_rtp_activate_ice(tech_pvt->transports[LDL_TPORT_RTP].rtp_session,
    -								tech_pvt->transports[LDL_TPORT_RTP].remote_user,
    -								tech_pvt->transports[LDL_TPORT_RTP].local_user,
    -								tech_pvt->transports[LDL_TPORT_RTP].remote_pass, NULL,
    -								IPR_RTP,
    -								ICE_GOOGLE_JINGLE, 0);
    -
    -		if ((vad_in && inb) || (vad_out && !inb)) {
    -			if (switch_rtp_enable_vad(tech_pvt->transports[LDL_TPORT_RTP].rtp_session, tech_pvt->session, &tech_pvt->transports[LDL_TPORT_RTP].read_codec, SWITCH_VAD_FLAG_TALKING) != SWITCH_STATUS_SUCCESS) {
    -				switch_log_printf(SWITCH_CHANNEL_SESSION_LOG(tech_pvt->session), SWITCH_LOG_DEBUG, "VAD ERROR %s\n", err);
    -				switch_channel_hangup(channel, SWITCH_CAUSE_DESTINATION_OUT_OF_ORDER);
    -				r = 0;
    -				goto end;
    -			}
    -			switch_set_flag_locked(tech_pvt, TFLAG_VAD);
    -		}
    -		//switch_rtp_set_cng_pt(tech_pvt->transports[LDL_TPORT_RTP].rtp_session, 13);
    -		switch_rtp_set_telephony_event(tech_pvt->transports[LDL_TPORT_RTP].rtp_session, 101);
    -
    -		if (tech_pvt->transports[LDL_TPORT_RTCP].remote_port) {
    -			switch_rtp_activate_ice(tech_pvt->transports[LDL_TPORT_RTP].rtp_session,
    -									tech_pvt->transports[LDL_TPORT_RTCP].remote_user,
    -									tech_pvt->transports[LDL_TPORT_RTCP].local_user,
    -									tech_pvt->transports[LDL_TPORT_RTCP].remote_pass,
    -									NULL, IPR_RTCP,
    -									ICE_GOOGLE_JINGLE, 0);
    -
    -		}
    -
    -
    -
    -	}
    -
    - end:
    -
    -	if (locked) {
    -		switch_mutex_unlock(tech_pvt->transports[LDL_TPORT_RTP].read_codec.mutex);
    -	}
    -
    -	return r;
    -}
    -
    -
    -static int activate_video_rtp(struct private_object *tech_pvt)
    -{
    -	switch_channel_t *channel = switch_core_session_get_channel(tech_pvt->session);
    -	const char *err;
    -	int ms = 0;
    -	switch_rtp_flag_t flags[SWITCH_RTP_FLAG_INVALID] = {0};
    -	int r = 1, locked = 0;
    -
    -
    -	if (switch_rtp_ready(tech_pvt->transports[LDL_TPORT_VIDEO_RTP].rtp_session)) {
    -			r = 1; goto end;
    -	}
    -
    -	if (!(tech_pvt->transports[LDL_TPORT_VIDEO_RTP].remote_ip && tech_pvt->transports[LDL_TPORT_VIDEO_RTP].remote_port)) {
    -		switch_log_printf(SWITCH_CHANNEL_SESSION_LOG(tech_pvt->session), SWITCH_LOG_DEBUG, "No valid video_rtp candidates received!\n");
    -		r = 0; goto end;
    -	}
    -
    -	if (zstr(tech_pvt->transports[LDL_TPORT_VIDEO_RTP].codec_name)) {
    -		switch_log_printf(SWITCH_CHANNEL_SESSION_LOG(tech_pvt->session), SWITCH_LOG_DEBUG, "No valid video_rtp codecs received!\n");
    -		r = 0; goto end;
    -	}
    -
    -	if (switch_core_codec_ready(&tech_pvt->transports[LDL_TPORT_VIDEO_RTP].read_codec)) {
    -		locked = 1;
    -		switch_mutex_lock(tech_pvt->transports[LDL_TPORT_VIDEO_RTP].read_codec.mutex);
    -		if (switch_rtp_ready(tech_pvt->transports[LDL_TPORT_VIDEO_RTP].rtp_session)) {
    -			switch_rtp_kill_socket(tech_pvt->transports[LDL_TPORT_RTP].rtp_session);
    -			switch_rtp_destroy(&tech_pvt->transports[LDL_TPORT_VIDEO_RTP].rtp_session);
    -		}
    -
    -	} else {
    -		if (switch_core_codec_init(&tech_pvt->transports[LDL_TPORT_VIDEO_RTP].read_codec,
    -								   tech_pvt->transports[LDL_TPORT_VIDEO_RTP].codec_name,
    -								   NULL,
    -								   NULL,
    -								   tech_pvt->transports[LDL_TPORT_VIDEO_RTP].codec_rate,
    -								   ms,
    -								   1,
    -								   SWITCH_CODEC_FLAG_ENCODE | SWITCH_CODEC_FLAG_DECODE,
    -								   NULL, switch_core_session_get_pool(tech_pvt->session)) != SWITCH_STATUS_SUCCESS) {
    -			switch_log_printf(SWITCH_CHANNEL_SESSION_LOG(tech_pvt->session), SWITCH_LOG_DEBUG, "Can't load codec?\n");
    -			switch_channel_hangup(channel, SWITCH_CAUSE_DESTINATION_OUT_OF_ORDER);
    -			r = 0; goto end;
    -		}
    -		tech_pvt->transports[LDL_TPORT_VIDEO_RTP].read_frame.rate = tech_pvt->transports[LDL_TPORT_VIDEO_RTP].read_codec.implementation->samples_per_second;
    -		tech_pvt->transports[LDL_TPORT_VIDEO_RTP].read_frame.codec = &tech_pvt->transports[LDL_TPORT_VIDEO_RTP].read_codec;
    -
    -		switch_log_printf(SWITCH_CHANNEL_SESSION_LOG(tech_pvt->session), SWITCH_LOG_DEBUG, "Set Read Codec to %s@%d\n",
    -						  tech_pvt->transports[LDL_TPORT_VIDEO_RTP].codec_name, (int) tech_pvt->transports[LDL_TPORT_VIDEO_RTP].read_codec.implementation->samples_per_second);
    -
    -		if (switch_core_codec_init(&tech_pvt->transports[LDL_TPORT_VIDEO_RTP].write_codec,
    -								   tech_pvt->transports[LDL_TPORT_VIDEO_RTP].codec_name,
    -								   NULL,
    -								   NULL,
    -								   tech_pvt->transports[LDL_TPORT_VIDEO_RTP].codec_rate,
    -								   ms,
    -								   1,
    -								   SWITCH_CODEC_FLAG_ENCODE | SWITCH_CODEC_FLAG_DECODE,
    -								   NULL, switch_core_session_get_pool(tech_pvt->session)) != SWITCH_STATUS_SUCCESS) {
    -			switch_log_printf(SWITCH_CHANNEL_SESSION_LOG(tech_pvt->session), SWITCH_LOG_DEBUG, "Can't load codec?\n");
    -			switch_channel_hangup(channel, SWITCH_CAUSE_DESTINATION_OUT_OF_ORDER);
    -			r = 0; goto end;
    -		}
    -		switch_log_printf(SWITCH_CHANNEL_SESSION_LOG(tech_pvt->session), SWITCH_LOG_DEBUG, "Set Write Codec to %s@%d\n",
    -						  tech_pvt->transports[LDL_TPORT_VIDEO_RTP].codec_name, (int) tech_pvt->transports[LDL_TPORT_VIDEO_RTP].write_codec.implementation->samples_per_second);
    -
    -		switch_core_session_set_video_read_codec(tech_pvt->session, &tech_pvt->transports[LDL_TPORT_VIDEO_RTP].read_codec);
    -		switch_core_session_set_video_write_codec(tech_pvt->session, &tech_pvt->transports[LDL_TPORT_VIDEO_RTP].write_codec);
    -	}
    -
    -	if (globals.auto_nat && tech_pvt->profile->local_network && !switch_check_network_list_ip(tech_pvt->transports[LDL_TPORT_VIDEO_RTP].remote_ip, tech_pvt->profile->local_network)) {
    -		switch_port_t external_port = 0;
    -		switch_nat_add_mapping((switch_port_t) tech_pvt->transports[LDL_TPORT_VIDEO_RTP].local_port, SWITCH_NAT_UDP, &external_port, SWITCH_FALSE);
    -
    -		if (external_port) {
    -			tech_pvt->transports[LDL_TPORT_VIDEO_RTP].adv_local_port = external_port;
    -			switch_set_flag(tech_pvt, TFLAG_NAT_MAP);
    -		} else {
    -			switch_log_printf(SWITCH_CHANNEL_LOG, SWITCH_LOG_WARNING, "NAT mapping returned 0. Run freeswitch with -nonat since it's not working right.\n");
    -		}
    -	}
    -
    -
    -	if (tech_pvt->transports[LDL_TPORT_VIDEO_RTP].adv_local_port != tech_pvt->transports[LDL_TPORT_VIDEO_RTP].local_port) {
    -		switch_log_printf(SWITCH_CHANNEL_SESSION_LOG(tech_pvt->session), SWITCH_LOG_DEBUG, "SETUP VIDEO RTP %s:%d(%d) -> %s:%d codec: %s(%d) %dh %di\n",
    -						  tech_pvt->profile->ip,
    -						  tech_pvt->transports[LDL_TPORT_VIDEO_RTP].local_port,
    -						  tech_pvt->transports[LDL_TPORT_VIDEO_RTP].adv_local_port,
    -						  tech_pvt->transports[LDL_TPORT_VIDEO_RTP].remote_ip,
    -						  tech_pvt->transports[LDL_TPORT_VIDEO_RTP].remote_port,
    -						  tech_pvt->transports[LDL_TPORT_VIDEO_RTP].read_codec.implementation->iananame,
    -						  tech_pvt->transports[LDL_TPORT_VIDEO_RTP].read_codec.implementation->ianacode,
    -						  tech_pvt->transports[LDL_TPORT_VIDEO_RTP].read_codec.implementation->samples_per_packet,
    -						  tech_pvt->transports[LDL_TPORT_VIDEO_RTP].read_codec.implementation->microseconds_per_packet
    -
    -						  );
    -	} else {
    -		switch_log_printf(SWITCH_CHANNEL_SESSION_LOG(tech_pvt->session), SWITCH_LOG_DEBUG, "SETUP VIDEO RTP %s:%d -> %s:%d codec: %s(%d) %dh %di\n",
    -						  tech_pvt->profile->ip,
    -						  tech_pvt->transports[LDL_TPORT_VIDEO_RTP].local_port,
    -						  tech_pvt->transports[LDL_TPORT_VIDEO_RTP].remote_ip,
    -						  tech_pvt->transports[LDL_TPORT_VIDEO_RTP].remote_port,
    -						  tech_pvt->transports[LDL_TPORT_VIDEO_RTP].read_codec.implementation->iananame,
    -						  tech_pvt->transports[LDL_TPORT_VIDEO_RTP].read_codec.implementation->ianacode,
    -						  tech_pvt->transports[LDL_TPORT_VIDEO_RTP].read_codec.implementation->samples_per_packet,
    -						  tech_pvt->transports[LDL_TPORT_VIDEO_RTP].read_codec.implementation->microseconds_per_packet
    -						  );
    -	}
    -
    -	flags[SWITCH_RTP_FLAG_DATAWAIT]++;
    -	flags[SWITCH_RTP_FLAG_GOOGLEHACK]++;
    -	flags[SWITCH_RTP_FLAG_AUTOADJ]++;
    -	flags[SWITCH_RTP_FLAG_RAW_WRITE]++;
    -	flags[SWITCH_RTP_FLAG_VIDEO]++;
    -
    -	if (switch_true(switch_channel_get_variable(channel, "disable_rtp_auto_adjust"))) {
    -		flags[SWITCH_RTP_FLAG_AUTOADJ] = 0;
    -	}
    -
    -	if (!(tech_pvt->transports[LDL_TPORT_VIDEO_RTP].rtp_session = switch_rtp_new(tech_pvt->profile->ip,
    -																				 tech_pvt->transports[LDL_TPORT_VIDEO_RTP].local_port,
    -																				 tech_pvt->transports[LDL_TPORT_VIDEO_RTP].remote_ip,
    -																				 tech_pvt->transports[LDL_TPORT_VIDEO_RTP].remote_port,
    -																				 tech_pvt->transports[LDL_TPORT_VIDEO_RTP].codec_num,
    -																				 1,
    -																				 90000,
    -																				 flags, NULL, &err, switch_core_session_get_pool(tech_pvt->session), 0, 0))) {
    -		switch_log_printf(SWITCH_CHANNEL_SESSION_LOG(tech_pvt->session), SWITCH_LOG_DEBUG, "RTP ERROR %s\n", err);
    -		switch_channel_hangup(channel, SWITCH_CAUSE_DESTINATION_OUT_OF_ORDER);
    -		r = 0; goto end;
    -	} else {
    -		switch_rtp_set_ssrc(tech_pvt->transports[LDL_TPORT_VIDEO_RTP].rtp_session, tech_pvt->transports[LDL_TPORT_VIDEO_RTP].ssrc);
    -
    -		if (tech_pvt->transports[LDL_TPORT_VIDEO_RTCP].remote_port) {
    -			switch_rtp_activate_rtcp(tech_pvt->transports[LDL_TPORT_VIDEO_RTP].rtp_session, MDL_RTCP_DUR,
    -									 tech_pvt->transports[LDL_TPORT_VIDEO_RTCP].remote_port, SWITCH_FALSE);
    -		}
    -		try_secure(tech_pvt, LDL_TPORT_VIDEO_RTP);
    -
    -
    -		switch_rtp_activate_ice(tech_pvt->transports[LDL_TPORT_VIDEO_RTP].rtp_session,
    -								tech_pvt->transports[LDL_TPORT_VIDEO_RTP].remote_user,
    -								tech_pvt->transports[LDL_TPORT_VIDEO_RTP].local_user,
    -								NULL, NULL, IPR_RTP, ICE_GOOGLE_JINGLE, 0);//tech_pvt->transports[LDL_TPORT_VIDEO_RTP].remote_pass);
    -		switch_channel_set_flag(channel, CF_VIDEO);
    -		switch_set_flag(tech_pvt, TFLAG_VIDEO_RTP_READY);
    -		//switch_rtp_set_default_payload(tech_pvt->transports[LDL_TPORT_VIDEO_RTP].rtp_session, tech_pvt->transports[LDL_TPORT_VIDEO_RTP].codec_num);
    -		//switch_rtp_set_recv_pt(tech_pvt->transports[LDL_TPORT_VIDEO_RTP].rtp_session, tech_pvt->transports[LDL_TPORT_VIDEO_RTP].codec_num);
    -
    -
    -		if (tech_pvt->transports[LDL_TPORT_VIDEO_RTCP].remote_port) {
    -
    -			switch_rtp_activate_ice(tech_pvt->transports[LDL_TPORT_VIDEO_RTP].rtp_session,
    -									tech_pvt->transports[LDL_TPORT_VIDEO_RTCP].remote_user,
    -									tech_pvt->transports[LDL_TPORT_VIDEO_RTCP].local_user,
    -									NULL, NULL, IPR_RTCP, ICE_GOOGLE_JINGLE, 0);//tech_pvt->transports[LDL_TPORT_VIDEO_RTCP].remote_pass);
    -		}
    -
    -
    -
    -	}
    -
    - end:
    -	if (locked) {
    -		switch_mutex_unlock(tech_pvt->transports[LDL_TPORT_VIDEO_RTP].read_codec.mutex);
    -	}
    -
    -	return r;
    -}
    -
    -
    -
    -static int activate_rtp(struct private_object *tech_pvt)
    -{
    -	int r = 0;
    -
    -	if (tech_pvt->transports[LDL_TPORT_RTP].ready) {
    -		r += activate_audio_rtp(tech_pvt);
    -	}
    -
    -	if (tech_pvt->transports[LDL_TPORT_VIDEO_RTP].ready) {
    -		if (switch_test_flag(tech_pvt, TFLAG_OUTBOUND) || tech_pvt->transports[LDL_TPORT_VIDEO_RTCP].accepted) {
    -			r += activate_video_rtp(tech_pvt);
    -		}
    -	}
    -
    -	return r;
    -}
    -
    -
    -static int do_tport_candidates(struct private_object *tech_pvt, ldl_transport_type_t ttype, ldl_candidate_t *cand, int force)
    -{
    -	switch_channel_t *channel = switch_core_session_get_channel(tech_pvt->session);
    -	char *advip = tech_pvt->profile->extip ? tech_pvt->profile->extip : tech_pvt->profile->ip;
    -	char *err = NULL, *address = NULL;
    -
    -	if (!force && tech_pvt->transports[ttype].ready) {
    -		return 0;
    -	}
    -
    -	if (switch_test_flag(tech_pvt, TFLAG_LANADDR)) {
    -		advip = tech_pvt->profile->ip;
    -	}
    -	address = advip;
    -
    -	if (address && !strncasecmp(address, "host:", 5)) {
    -		char *lookup = switch_stun_host_lookup(address + 5, switch_core_session_get_pool(tech_pvt->session));
    -
    -		if (zstr(lookup)) {
    -			address = address + 5;
    -		} else {
    -			address = lookup;
    -		}
    -	}
    -
    -	memset(cand, 0, sizeof(*cand));
    -	switch_stun_random_string(tech_pvt->transports[ttype].local_user, 16, NULL);
    -	switch_stun_random_string(tech_pvt->transports[ttype].local_pass, 16, NULL);
    -
    -	cand->port = tech_pvt->transports[ttype].adv_local_port;
    -	cand->address = address;
    -
    -	if (advip && !strncasecmp(advip, "stun:", 5)) {
    -		char *stun_ip = advip + 5;
    -
    -		if (tech_pvt->transports[ttype].stun_ip) {
    -			cand->address = tech_pvt->transports[ttype].stun_ip;
    -			cand->port = tech_pvt->transports[ttype].stun_port;
    -		} else {
    -			if (!stun_ip) {
    -				switch_log_printf(SWITCH_CHANNEL_SESSION_LOG(tech_pvt->session), SWITCH_LOG_ERROR, "Stun Failed! NO STUN SERVER!\n");
    -				switch_channel_hangup(channel, SWITCH_CAUSE_DESTINATION_OUT_OF_ORDER);
    -				return 0;
    -			}
    -
    -			cand->address = tech_pvt->profile->ip;
    -			switch_log_printf(SWITCH_CHANNEL_SESSION_LOG(tech_pvt->session), SWITCH_LOG_DEBUG, "Stun Lookup Local %s:%d\n", cand->address,
    -							  cand->port);
    -			if (switch_stun_lookup
    -				(&cand->address, &cand->port, stun_ip, SWITCH_STUN_DEFAULT_PORT, &err,
    -				 switch_core_session_get_pool(tech_pvt->session)) != SWITCH_STATUS_SUCCESS) {
    -				switch_log_printf(SWITCH_CHANNEL_SESSION_LOG(tech_pvt->session), SWITCH_LOG_ERROR, "Stun Failed! %s:%d [%s]\n", stun_ip,
    -								  SWITCH_STUN_DEFAULT_PORT, err);
    -				switch_channel_hangup(channel, SWITCH_CAUSE_DESTINATION_OUT_OF_ORDER);
    -				return 0;
    -			}
    -			switch_log_printf(SWITCH_CHANNEL_SESSION_LOG(tech_pvt->session), SWITCH_LOG_INFO, "Stun Success %s:%d\n", cand->address, cand->port);
    -		}
    -		cand->type = "stun";
    -		tech_pvt->transports[ttype].stun_ip = switch_core_session_strdup(tech_pvt->session, cand->address);
    -		tech_pvt->transports[ttype].stun_port = cand->port;
    -	} else {
    -		cand->type = "local";
    -	}
    -
    -	cand->name = (char *)ldl_transport_type_str(ttype);
    -	cand->username = tech_pvt->transports[ttype].local_user;
    -	cand->password = tech_pvt->transports[ttype].local_pass;
    -	cand->pref = 1;
    -	cand->protocol = "udp";
    -	switch_log_printf(SWITCH_CHANNEL_SESSION_LOG(tech_pvt->session), SWITCH_LOG_DEBUG,
    -					  "Send %s Candidate %s:%d [%s]\n", ldl_transport_type_str(ttype), cand->address, cand->port,
    -					  cand->username);
    -
    -
    -
    -	tech_pvt->transports[ttype].ready = 1;
    -
    -	return 1;
    -}
    -
    -
    -static int do_candidates(struct private_object *tech_pvt, int force)
    -{
    -	ldl_candidate_t cand[4] = {{0}};
    -	int idx = 0;
    -
    -	if (switch_test_flag(tech_pvt, TFLAG_DO_CAND)) {
    -		return 1;
    -	}
    -
    -	tech_pvt->next_cand += DL_CAND_WAIT;
    -	if (switch_test_flag(tech_pvt, TFLAG_BYE) || !tech_pvt->dlsession) {
    -		return 0;
    -	}
    -	switch_set_flag_locked(tech_pvt, TFLAG_DO_CAND);
    -
    -	idx += do_tport_candidates(tech_pvt, LDL_TPORT_RTP, &cand[idx], force);
    -	idx += do_tport_candidates(tech_pvt, LDL_TPORT_RTCP, &cand[idx], force);
    -
    -	if (tech_pvt->transports[LDL_TPORT_VIDEO_RTP].codec_index > -1) {
    -		idx += do_tport_candidates(tech_pvt, LDL_TPORT_VIDEO_RTP, &cand[idx], force);
    -		idx += do_tport_candidates(tech_pvt, LDL_TPORT_VIDEO_RTCP, &cand[idx], force);
    -	}
    -
    -	if (idx && cand[0].name) {
    -		if (ldl_session_gateway(tech_pvt->dlsession) && switch_test_flag(tech_pvt, TFLAG_OUTBOUND)) {
    -			tech_pvt->cand_id = ldl_session_transport(tech_pvt->dlsession, cand, idx);
    -		} else {
    -			tech_pvt->cand_id = ldl_session_candidates(tech_pvt->dlsession, cand, idx);
    -		}
    -	}
    -
    -	switch_log_printf(SWITCH_CHANNEL_SESSION_LOG(tech_pvt->session), SWITCH_LOG_DEBUG, "Accepted %u of %u rtp candidates.\n",
    -					  tech_pvt->transports[LDL_TPORT_RTP].accepted, tech_pvt->transports[LDL_TPORT_RTP].total);
    -	switch_log_printf(SWITCH_CHANNEL_SESSION_LOG(tech_pvt->session), SWITCH_LOG_DEBUG, "Accepted %u of %u rtcp candidates.\n",
    -					  tech_pvt->transports[LDL_TPORT_RTCP].accepted, tech_pvt->transports[LDL_TPORT_RTCP].total);
    -
    -	switch_log_printf(SWITCH_CHANNEL_SESSION_LOG(tech_pvt->session), SWITCH_LOG_DEBUG, "Accepted %u of %u video_rtp candidates\n",
    -					  tech_pvt->transports[LDL_TPORT_VIDEO_RTP].accepted, tech_pvt->transports[LDL_TPORT_VIDEO_RTP].total);
    -
    -	switch_log_printf(SWITCH_CHANNEL_SESSION_LOG(tech_pvt->session), SWITCH_LOG_DEBUG, "Accepted %u of %u video_rctp candidates\n",
    -					  tech_pvt->transports[LDL_TPORT_VIDEO_RTCP].accepted, tech_pvt->transports[LDL_TPORT_VIDEO_RTCP].total);
    -
    -
    -
    -	if ((tech_pvt->transports[LDL_TPORT_RTP].ready && tech_pvt->transports[LDL_TPORT_RTCP].ready)) {
    -		switch_set_flag_locked(tech_pvt, TFLAG_TRANSPORT);
    -		switch_set_flag_locked(tech_pvt, TFLAG_RTP_READY);
    -		tech_pvt->audio_ready = switch_micro_time_now();
    -	}
    -
    -
    -	switch_clear_flag_locked(tech_pvt, TFLAG_DO_CAND);
    -	return 1;
    -
    -}
    -
    -
    -
    -
    -static char *lame(char *in)
    -{
    -	if (!strncasecmp(in, "ilbc", 4)) {
    -		return "iLBC";
    -	} else {
    -		return in;
    -	}
    -}
    -
    -
    -static void setup_codecs(struct private_object *tech_pvt)
    -{
    -	ldl_payload_t payloads[LDL_MAX_PAYLOADS] = { {0} };
    -	unsigned int idx = 0, i = 0;
    -	int dft_audio = -1, dft_video = -1;
    -
    -	memset(payloads, 0, sizeof(payloads));
    -
    -	for (idx = 0; idx < tech_pvt->num_codecs && (dft_audio == -1 || dft_video == -1); idx++) {
    -		if (dft_audio < 0 && tech_pvt->codecs[idx]->codec_type == SWITCH_CODEC_TYPE_AUDIO) {
    -			dft_audio = idx;
    -		}
    -		if (dft_video < 0 && tech_pvt->codecs[idx]->codec_type == SWITCH_CODEC_TYPE_VIDEO) {
    -			dft_video = idx;
    -		}
    -	}
    -
    -	if (dft_audio == -1 && dft_video == -1) {
    -		switch_log_printf(SWITCH_CHANNEL_SESSION_LOG(tech_pvt->session), SWITCH_LOG_ERROR, "Cannot find a codec.\n");
    -		return;
    -	}
    -
    -	idx = 0;
    -
    -	payloads[0].type = LDL_PAYLOAD_AUDIO;
    -	if (tech_pvt->transports[LDL_TPORT_RTP].codec_index < 0) {
    -		if (dft_audio > -1) {
    -			switch_log_printf(SWITCH_CHANNEL_SESSION_LOG(tech_pvt->session), SWITCH_LOG_DEBUG, "Don't have my audio codec yet here's one\n");
    -			tech_pvt->transports[LDL_TPORT_RTP].codec_name = lame(tech_pvt->codecs[dft_audio]->iananame);
    -			tech_pvt->transports[LDL_TPORT_RTP].codec_num = tech_pvt->codecs[dft_audio]->ianacode;
    -			tech_pvt->transports[LDL_TPORT_RTP].codec_rate = tech_pvt->codecs[dft_audio]->samples_per_second;
    -			tech_pvt->transports[LDL_TPORT_RTP].r_codec_num = tech_pvt->codecs[dft_audio]->ianacode;
    -			tech_pvt->transports[LDL_TPORT_RTP].codec_index = dft_audio;
    -
    -			payloads[0].name = lame(tech_pvt->codecs[dft_audio]->iananame);
    -			payloads[0].id = tech_pvt->codecs[dft_audio]->ianacode;
    -			payloads[0].rate = tech_pvt->codecs[dft_audio]->samples_per_second;
    -			payloads[0].bps = tech_pvt->codecs[dft_audio]->bits_per_second;
    -			payloads[0].ptime = tech_pvt->codecs[dft_audio]->microseconds_per_packet / 1000;
    -			idx++;
    -		} else {
    -			switch_log_printf(SWITCH_CHANNEL_SESSION_LOG(tech_pvt->session), SWITCH_LOG_DEBUG, "Don't have an audio codec.\n");
    -		}
    -	} else {
    -		payloads[0].name = lame(tech_pvt->codecs[tech_pvt->transports[LDL_TPORT_RTP].codec_index]->iananame);
    -		payloads[0].id = tech_pvt->codecs[tech_pvt->transports[LDL_TPORT_RTP].codec_index]->ianacode;
    -		payloads[0].rate = tech_pvt->codecs[tech_pvt->transports[LDL_TPORT_RTP].codec_index]->samples_per_second;
    -		payloads[0].bps = tech_pvt->codecs[tech_pvt->transports[LDL_TPORT_RTP].codec_index]->bits_per_second;
    -		payloads[0].ptime = tech_pvt->codecs[tech_pvt->transports[LDL_TPORT_RTP].codec_index]->microseconds_per_packet / 1000;
    -		idx++;
    -	}
    -
    -
    -	payloads[1].type = LDL_PAYLOAD_VIDEO;
    -	if (tech_pvt->transports[LDL_TPORT_VIDEO_RTP].codec_index < 0) {
    -		if (dft_video > -1) {
    -			switch_log_printf(SWITCH_CHANNEL_SESSION_LOG(tech_pvt->session), SWITCH_LOG_DEBUG, "Don't have my video codec yet here's one\n");
    -			tech_pvt->transports[LDL_TPORT_VIDEO_RTP].codec_name = lame(tech_pvt->codecs[dft_video]->iananame);
    -			tech_pvt->transports[LDL_TPORT_VIDEO_RTP].codec_num = tech_pvt->codecs[dft_video]->ianacode;
    -			tech_pvt->transports[LDL_TPORT_VIDEO_RTP].codec_rate = tech_pvt->codecs[dft_video]->samples_per_second;
    -			tech_pvt->transports[LDL_TPORT_VIDEO_RTP].r_codec_num = tech_pvt->codecs[dft_video]->ianacode;
    -			tech_pvt->transports[LDL_TPORT_VIDEO_RTP].codec_index = dft_video;
    -
    -			payloads[1].name = lame(tech_pvt->codecs[dft_video]->iananame);
    -			payloads[1].id = tech_pvt->codecs[dft_video]->ianacode;
    -			payloads[1].rate = tech_pvt->codecs[dft_video]->samples_per_second;
    -			payloads[1].bps = tech_pvt->codecs[dft_video]->bits_per_second;
    -			payloads[1].width = 600;
    -			payloads[1].height = 400;
    -			payloads[1].framerate = 30;
    -
    -			idx++;
    -		} else {
    -			switch_log_printf(SWITCH_CHANNEL_SESSION_LOG(tech_pvt->session), SWITCH_LOG_DEBUG, "Don't have video codec.\n");
    -		}
    -	} else {
    -		payloads[1].name = lame(tech_pvt->codecs[tech_pvt->transports[LDL_TPORT_VIDEO_RTP].codec_index]->iananame);
    -		payloads[1].id = tech_pvt->codecs[tech_pvt->transports[LDL_TPORT_VIDEO_RTP].codec_index]->ianacode;
    -		payloads[1].rate = tech_pvt->codecs[tech_pvt->transports[LDL_TPORT_VIDEO_RTP].codec_index]->samples_per_second;
    -		payloads[1].bps = tech_pvt->codecs[tech_pvt->transports[LDL_TPORT_VIDEO_RTP].codec_index]->bits_per_second;
    -		idx++;
    -	}
    -
    -	for(i = 0; i < idx; i++) {
    -		switch_log_printf(SWITCH_CHANNEL_SESSION_LOG(tech_pvt->session), SWITCH_LOG_DEBUG, "Send Describe [%s@%d]\n", payloads[i].name, payloads[i].rate);
    -	}
    -
    -
    -	if (!payloads[1].id && tech_pvt->transports[LDL_TPORT_VIDEO_RTP].local_port) {
    -		switch_rtp_release_port(tech_pvt->profile->ip, tech_pvt->transports[LDL_TPORT_VIDEO_RTP].local_port);
    -		tech_pvt->transports[LDL_TPORT_VIDEO_RTP].local_port = 0;
    -	}
    -
    -
    -	tech_pvt->desc_id = ldl_session_describe(tech_pvt->dlsession, payloads, idx,
    -											 switch_test_flag(tech_pvt, TFLAG_OUTBOUND) ? LDL_DESCRIPTION_INITIATE : LDL_DESCRIPTION_ACCEPT,
    -											 &tech_pvt->transports[LDL_TPORT_RTP].ssrc, &tech_pvt->transports[LDL_TPORT_VIDEO_RTP].ssrc,
    -											 tech_pvt->transports[LDL_TPORT_RTP].local_crypto_data,
    -											 tech_pvt->transports[LDL_TPORT_VIDEO_RTP].local_crypto_data);
    -
    -
    -}
    -
    -static int do_describe(struct private_object *tech_pvt, int force)
    -{
    -
    -	if (!tech_pvt->session) {
    -		return 0;
    -	}
    -
    -	tech_pvt->next_desc += DL_CAND_WAIT;
    -
    -	if (switch_test_flag(tech_pvt, TFLAG_BYE)) {
    -		return 0;
    -	}
    -
    -
    -	switch_set_flag_locked(tech_pvt, TFLAG_DO_CAND);
    -	if (!get_codecs(tech_pvt)) {
    -		terminate_session(&tech_pvt->session, __LINE__, SWITCH_CAUSE_INCOMPATIBLE_DESTINATION);
    -		switch_set_flag_locked(tech_pvt, TFLAG_BYE);
    -		switch_clear_flag_locked(tech_pvt, TFLAG_IO);
    -		return 0;
    -	}
    -
    -
    -	if (force || !switch_test_flag(tech_pvt, TFLAG_CODEC_READY)) {
    -		setup_codecs(tech_pvt);
    -		switch_set_flag_locked(tech_pvt, TFLAG_CODEC_READY);
    -	}
    -	switch_clear_flag_locked(tech_pvt, TFLAG_DO_CAND);
    -	return 1;
    -}
    -
    -static switch_status_t negotiate_media(switch_core_session_t *session)
    -{
    -	switch_status_t ret = SWITCH_STATUS_FALSE;
    -	switch_channel_t *channel = switch_core_session_get_channel(session);
    -	struct private_object *tech_pvt = NULL;
    -	switch_time_t started;
    -	switch_time_t now;
    -	unsigned int elapsed, audio_elapsed;
    -
    -	tech_pvt = switch_core_session_get_private(session);
    -	switch_assert(tech_pvt != NULL);
    -
    -	switch_set_flag_locked(tech_pvt, TFLAG_IO);
    -
    -	started = switch_micro_time_now();
    -
    -	/* jingle has no ringing indication so we will just pretend that we got one */
    -	switch_channel_mark_ring_ready(channel);
    -
    -	if (switch_test_flag(tech_pvt, TFLAG_OUTBOUND)) {
    -		tech_pvt->next_cand = started + DL_CAND_WAIT;
    -		tech_pvt->next_desc = started;
    -	} else {
    -		tech_pvt->next_cand = started + DL_CAND_WAIT;
    -		tech_pvt->next_desc = started + DL_CAND_WAIT;
    -	}
    -
    -	while (!(switch_test_flag(tech_pvt, TFLAG_CODEC_READY) &&
    -			 switch_test_flag(tech_pvt, TFLAG_RTP_READY) &&
    -			 (switch_test_flag(tech_pvt, TFLAG_OUTBOUND) || switch_test_flag(tech_pvt, TFLAG_VIDEO_RTP_READY)) &&
    -			 switch_test_flag(tech_pvt, TFLAG_ANSWER) && switch_test_flag(tech_pvt, TFLAG_TRANSPORT_ACCEPT) && //tech_pvt->read_count &&
    -			 tech_pvt->transports[LDL_TPORT_RTP].remote_ip && tech_pvt->transports[LDL_TPORT_RTP].remote_port && switch_test_flag(tech_pvt, TFLAG_TRANSPORT))) {
    -		now = switch_micro_time_now();
    -		elapsed = (unsigned int) ((now - started) / 1000);
    -
    -
    -		if (switch_test_flag(tech_pvt, TFLAG_RTP_READY) && !switch_test_flag(tech_pvt, TFLAG_VIDEO_RTP_READY)) {
    -			audio_elapsed = (unsigned int) ((now - tech_pvt->audio_ready) / 1000);
    -			if (audio_elapsed > 1000) {
    -				switch_set_flag(tech_pvt, TFLAG_VIDEO_RTP_READY);
    -			}
    -		}
    -
    -		if (switch_channel_down(channel) || switch_test_flag(tech_pvt, TFLAG_BYE)) {
    -			goto out;
    -		}
    -
    -
    -		if (now >= tech_pvt->next_desc) {
    -			if (!do_describe(tech_pvt, 0)) {
    -				goto out;
    -			}
    -		}
    -
    -		if (tech_pvt->next_cand && now >= tech_pvt->next_cand) {
    -			if (!do_candidates(tech_pvt, 0)) {
    -				goto out;
    -			}
    -		}
    -		if (elapsed > 60000) {
    -			terminate_session(&tech_pvt->session, __LINE__, SWITCH_CAUSE_NORMAL_CLEARING);
    -			switch_set_flag_locked(tech_pvt, TFLAG_BYE);
    -			switch_clear_flag_locked(tech_pvt, TFLAG_IO);
    -			goto done;
    -		}
    -
    -		if (switch_test_flag(tech_pvt, TFLAG_BYE) || !switch_test_flag(tech_pvt, TFLAG_IO)) {
    -			goto done;
    -		}
    -
    -		if (switch_rtp_ready(tech_pvt->transports[LDL_TPORT_RTP].rtp_session)) {
    -			switch_rtp_ping(tech_pvt->transports[LDL_TPORT_RTP].rtp_session);
    -		}
    -
    -		if (switch_rtp_ready(tech_pvt->transports[LDL_TPORT_VIDEO_RTP].rtp_session)) {
    -			switch_rtp_ping(tech_pvt->transports[LDL_TPORT_VIDEO_RTP].rtp_session);
    -		}
    -
    -		switch_yield(20000);
    -	}
    -
    -	if (switch_channel_down(channel) || switch_test_flag(tech_pvt, TFLAG_BYE)) {
    -		goto done;
    -	}
    -
    -	if (!activate_rtp(tech_pvt)) {
    -		goto done;
    -	}
    -
    -	if (switch_test_flag(tech_pvt, TFLAG_OUTBOUND)) {
    -		if (!do_candidates(tech_pvt, 0)) {
    -			goto done;
    -		}
    -		if (switch_test_flag(tech_pvt, TFLAG_TRANSPORT_ACCEPT)) {
    -			switch_channel_answer(channel);
    -		}
    -	}
    -	ret = SWITCH_STATUS_SUCCESS;
    -
    -	switch_channel_audio_sync(channel);
    -
    -
    -	goto done;
    -
    -  out:
    -	terminate_session(&session, __LINE__, SWITCH_CAUSE_DESTINATION_OUT_OF_ORDER);
    -  done:
    -
    -	return ret;
    -}
    -
    -/*
    -   State methods they get called when the state changes to the specific state
    -   returning SWITCH_STATUS_SUCCESS tells the core to execute the standard state method next
    -   so if you fully implement the state you can return SWITCH_STATUS_FALSE to skip it.
    -*/
    -static switch_status_t channel_on_init(switch_core_session_t *session)
    -{
    -	switch_channel_t *channel = switch_core_session_get_channel(session);
    -	struct private_object *tech_pvt = NULL;
    -	switch_status_t status = SWITCH_STATUS_SUCCESS;
    -
    -	switch_channel_set_variable(channel, "jitterbuffer_msec", "1p");
    -
    -	tech_pvt = switch_core_session_get_private(session);
    -	switch_assert(tech_pvt != NULL);
    -
    -	tech_pvt->transports[LDL_TPORT_RTP].read_frame.buflen = SWITCH_RTP_MAX_BUF_LEN;
    -
    -	switch_set_flag(tech_pvt, TFLAG_READY);
    -
    -	if (negotiate_media(session) == SWITCH_STATUS_SUCCESS) {
    -		if (switch_channel_direction(channel) == SWITCH_CALL_DIRECTION_OUTBOUND) {
    -			switch_channel_mark_answered(channel);
    -		}
    -		status = SWITCH_STATUS_SUCCESS;
    -	}
    -
    -	return status;
    -}
    -
    -static switch_status_t channel_on_routing(switch_core_session_t *session)
    -{
    -	switch_channel_t *channel = switch_core_session_get_channel(session);
    -	struct private_object *tech_pvt = NULL;
    -
    -	tech_pvt = switch_core_session_get_private(session);
    -	switch_assert(tech_pvt != NULL);
    -
    -	switch_log_printf(SWITCH_CHANNEL_SESSION_LOG(session), SWITCH_LOG_DEBUG, "%s CHANNEL ROUTING\n", switch_channel_get_name(channel));
    -
    -	return SWITCH_STATUS_SUCCESS;
    -}
    -
    -static switch_status_t channel_on_execute(switch_core_session_t *session)
    -{
    -
    -	switch_channel_t *channel = NULL;
    -	struct private_object *tech_pvt = NULL;
    -
    -	channel = switch_core_session_get_channel(session);
    -	switch_assert(channel != NULL);
    -
    -	tech_pvt = switch_core_session_get_private(session);
    -	switch_assert(tech_pvt != NULL);
    -
    -	switch_log_printf(SWITCH_CHANNEL_SESSION_LOG(session), SWITCH_LOG_DEBUG, "%s CHANNEL EXECUTE\n", switch_channel_get_name(channel));
    -
    -
    -	return SWITCH_STATUS_SUCCESS;
    -}
    -
    -static switch_status_t channel_on_destroy(switch_core_session_t *session)
    -{
    -	//switch_channel_t *channel = switch_core_session_get_channel(session);
    -	struct private_object *tech_pvt = NULL;
    -
    -	tech_pvt = switch_core_session_get_private(session);
    -
    -	if (tech_pvt) {
    -		if (tech_pvt->transports[LDL_TPORT_RTP].rtp_session) {
    -			switch_rtp_destroy(&tech_pvt->transports[LDL_TPORT_RTP].rtp_session);
    -			switch_log_printf(SWITCH_CHANNEL_SESSION_LOG(session), SWITCH_LOG_DEBUG, "NUKE RTP\n");
    -			tech_pvt->transports[LDL_TPORT_RTP].rtp_session = NULL;
    -		}
    -
    -		if (tech_pvt->transports[LDL_TPORT_VIDEO_RTP].rtp_session) {
    -			switch_rtp_destroy(&tech_pvt->transports[LDL_TPORT_VIDEO_RTP].rtp_session);
    -			switch_log_printf(SWITCH_CHANNEL_SESSION_LOG(session), SWITCH_LOG_DEBUG, "NUKE RTP\n");
    -			tech_pvt->transports[LDL_TPORT_VIDEO_RTP].rtp_session = NULL;
    -		}
    -
    -		if (switch_test_flag(tech_pvt, TFLAG_NAT_MAP)) {
    -			switch_nat_del_mapping((switch_port_t) tech_pvt->transports[LDL_TPORT_RTP].adv_local_port, SWITCH_NAT_UDP);
    -			switch_clear_flag(tech_pvt, TFLAG_NAT_MAP);
    -		}
    -
    -		if (switch_core_codec_ready(&tech_pvt->transports[LDL_TPORT_RTP].read_codec)) {
    -			switch_core_codec_destroy(&tech_pvt->transports[LDL_TPORT_RTP].read_codec);
    -		}
    -
    -		if (switch_core_codec_ready(&tech_pvt->transports[LDL_TPORT_RTP].write_codec)) {
    -			switch_core_codec_destroy(&tech_pvt->transports[LDL_TPORT_RTP].write_codec);
    -		}
    -
    -		if (switch_core_codec_ready(&tech_pvt->transports[LDL_TPORT_VIDEO_RTP].read_codec)) {
    -			switch_core_codec_destroy(&tech_pvt->transports[LDL_TPORT_VIDEO_RTP].read_codec);
    -		}
    -
    -		if (switch_core_codec_ready(&tech_pvt->transports[LDL_TPORT_RTP].write_codec)) {
    -			switch_core_codec_destroy(&tech_pvt->transports[LDL_TPORT_RTP].write_codec);
    -		}
    -
    -		if (tech_pvt->dlsession) {
    -			ldl_session_destroy(&tech_pvt->dlsession);
    -		}
    -
    -		if (tech_pvt->profile) {
    -			switch_thread_rwlock_unlock(tech_pvt->profile->rwlock);
    -
    -			if (tech_pvt->profile->purge) {
    -				mdl_profile_t *profile = tech_pvt->profile;
    -				if (switch_core_hash_delete(globals.profile_hash, profile->name)) {
    -					switch_log_printf(SWITCH_CHANNEL_LOG, SWITCH_LOG_DEBUG, "Profile %s deleted successfully\n", profile->name);
    -				}
    -			}
    -		}
    -	}
    -
    -	return SWITCH_STATUS_SUCCESS;
    -}
    -
    -
    -static switch_status_t channel_on_hangup(switch_core_session_t *session)
    -{
    -	switch_channel_t *channel = switch_core_session_get_channel(session);
    -	struct private_object *tech_pvt = NULL;
    -
    -	tech_pvt = switch_core_session_get_private(session);
    -	switch_assert(tech_pvt != NULL);
    -
    -	if (tech_pvt->profile->ip && tech_pvt->transports[LDL_TPORT_RTP].local_port) {
    -		switch_rtp_release_port(tech_pvt->profile->ip, tech_pvt->transports[LDL_TPORT_RTP].local_port);
    -	}
    -
    -	if (tech_pvt->profile->ip && tech_pvt->transports[LDL_TPORT_VIDEO_RTP].local_port) {
    -		switch_rtp_release_port(tech_pvt->profile->ip, tech_pvt->transports[LDL_TPORT_VIDEO_RTP].local_port);
    -	}
    -
    -	switch_clear_flag_locked(tech_pvt, TFLAG_IO);
    -	switch_clear_flag_locked(tech_pvt, TFLAG_VOICE);
    -	switch_set_flag_locked(tech_pvt, TFLAG_BYE);
    -
    -	/* Dunno why, but if googletalk calls us for the first time, as soon as the call ends
    -	   they think we are offline for no reason so we send this presence packet to stop it from happening
    -	   We should find out why.....
    -	 */
    -	if ((tech_pvt->profile->user_flags & LDL_FLAG_COMPONENT) && is_special(tech_pvt->them)) {
    -		ldl_handle_send_presence(tech_pvt->profile->handle, tech_pvt->them, tech_pvt->us, NULL, NULL, "Click To Call", tech_pvt->profile->avatar);
    -	}
    -
    -	if (!switch_test_flag(tech_pvt, TFLAG_TERM) && tech_pvt->dlsession) {
    -		ldl_session_terminate(tech_pvt->dlsession);
    -		switch_set_flag_locked(tech_pvt, TFLAG_TERM);
    -	}
    -
    -
    -	switch_log_printf(SWITCH_CHANNEL_SESSION_LOG(session), SWITCH_LOG_DEBUG, "%s CHANNEL HANGUP\n", switch_channel_get_name(channel));
    -
    -	return SWITCH_STATUS_SUCCESS;
    -}
    -
    -static switch_status_t channel_kill_channel(switch_core_session_t *session, int sig)
    -{
    -	switch_channel_t *channel = switch_core_session_get_channel(session);
    -	struct private_object *tech_pvt = NULL;
    -
    -	if (!(tech_pvt = switch_core_session_get_private(session))) {
    -		return SWITCH_STATUS_SUCCESS;
    -	}
    -
    -	switch (sig) {
    -	case SWITCH_SIG_KILL:
    -		switch_clear_flag_locked(tech_pvt, TFLAG_IO);
    -		switch_clear_flag_locked(tech_pvt, TFLAG_VOICE);
    -		switch_set_flag_locked(tech_pvt, TFLAG_BYE);
    -
    -		if (switch_rtp_ready(tech_pvt->transports[LDL_TPORT_RTP].rtp_session)) {
    -			switch_rtp_kill_socket(tech_pvt->transports[LDL_TPORT_RTP].rtp_session);
    -		}
    -		break;
    -	case SWITCH_SIG_BREAK:
    -		if (switch_rtp_ready(tech_pvt->transports[LDL_TPORT_RTP].rtp_session)) {
    -			switch_rtp_set_flag(tech_pvt->transports[LDL_TPORT_RTP].rtp_session, SWITCH_RTP_FLAG_BREAK);
    -		}
    -		break;
    -	}
    -
    -	switch_log_printf(SWITCH_CHANNEL_SESSION_LOG(session), SWITCH_LOG_DEBUG, "%s CHANNEL KILL\n", switch_channel_get_name(channel));
    -
    -
    -	return SWITCH_STATUS_SUCCESS;
    -}
    -
    -static switch_status_t channel_on_exchange_media(switch_core_session_t *session)
    -{
    -	switch_log_printf(SWITCH_CHANNEL_SESSION_LOG(session), SWITCH_LOG_DEBUG, "CHANNEL LOOPBACK\n");
    -	return SWITCH_STATUS_SUCCESS;
    -}
    -
    -static switch_status_t channel_on_soft_execute(switch_core_session_t *session)
    -{
    -	switch_log_printf(SWITCH_CHANNEL_SESSION_LOG(session), SWITCH_LOG_DEBUG, "CHANNEL TRANSMIT\n");
    -	return SWITCH_STATUS_SUCCESS;
    -}
    -
    -
    -static switch_status_t channel_send_dtmf(switch_core_session_t *session, const switch_dtmf_t *dtmf)
    -{
    -	struct private_object *tech_pvt = NULL;
    -
    -	tech_pvt = switch_core_session_get_private(session);
    -	switch_assert(tech_pvt != NULL);
    -
    -	switch_log_printf(SWITCH_CHANNEL_SESSION_LOG(session), SWITCH_LOG_DEBUG, "DTMF [%c]\n", dtmf->digit);
    -
    -	return switch_rtp_queue_rfc2833(tech_pvt->transports[LDL_TPORT_RTP].rtp_session, dtmf);
    -
    -}
    -
    -static switch_status_t channel_read_frame(switch_core_session_t *session, switch_frame_t **frame, switch_io_flag_t flags, int stream_id)
    -{
    -	struct private_object *tech_pvt = NULL;
    -	switch_channel_t *channel = switch_core_session_get_channel(session);
    -	//int payload = 0;
    -
    -	tech_pvt = (struct private_object *) switch_core_session_get_private(session);
    -	switch_assert(tech_pvt != NULL);
    -
    -	while (!(tech_pvt->transports[LDL_TPORT_RTP].read_codec.implementation && switch_rtp_ready(tech_pvt->transports[LDL_TPORT_RTP].rtp_session))) {
    -		if (switch_channel_ready(channel)) {
    -			switch_yield(10000);
    -		} else {
    -			return SWITCH_STATUS_GENERR;
    -		}
    -	}
    -
    -
    -	tech_pvt->transports[LDL_TPORT_RTP].read_frame.datalen = 0;
    -	switch_set_flag_locked(tech_pvt, TFLAG_READING);
    -
    -#if 0
    -	if (tech_pvt->last_read) {
    -		elapsed = (unsigned int) ((switch_micro_time_now() - tech_pvt->last_read) / 1000);
    -		if (elapsed > 60000) {
    -			return SWITCH_STATUS_TIMEOUT;
    -		}
    -	}
    -#endif
    -
    -
    -	if (switch_test_flag(tech_pvt, TFLAG_IO)) {
    -		//switch_status_t status;
    -
    -		switch_assert(tech_pvt->transports[LDL_TPORT_RTP].rtp_session != NULL);
    -		tech_pvt->transports[LDL_TPORT_RTP].read_frame.datalen = 0;
    -
    -
    -		while (switch_test_flag(tech_pvt, TFLAG_IO) && tech_pvt->transports[LDL_TPORT_RTP].read_frame.datalen == 0) {
    -			tech_pvt->transports[LDL_TPORT_RTP].read_frame.flags = SFF_NONE;
    -
    -			switch_rtp_zerocopy_read_frame(tech_pvt->transports[LDL_TPORT_RTP].rtp_session, &tech_pvt->transports[LDL_TPORT_RTP].read_frame, flags);
    -
    -			tech_pvt->read_count++;
    -#if 0
    -			if (tech_pvt->read_count == 1 && !switch_test_flag(tech_pvt, TFLAG_OUTBOUND)) {
    -				setup_codecs(tech_pvt);
    -			}
    -#endif
    -
    -			//payload = tech_pvt->transports[LDL_TPORT_RTP].read_frame.payload;
    -
    -#if 0
    -			elapsed = (unsigned int) ((switch_micro_time_now() - started) / 1000);
    -
    -			if (timeout > -1) {
    -				if (elapsed >= (unsigned int) timeout) {
    -					return SWITCH_STATUS_BREAK;
    -				}
    -			}
    -
    -			elapsed = (unsigned int) ((switch_micro_time_now() - last_act) / 1000);
    -			if (elapsed >= hard_timeout) {
    -				return SWITCH_STATUS_BREAK;
    -			}
    -#endif
    -			if (switch_rtp_has_dtmf(tech_pvt->transports[LDL_TPORT_RTP].rtp_session)) {
    -				switch_dtmf_t dtmf = { 0 };
    -				switch_rtp_dequeue_dtmf(tech_pvt->transports[LDL_TPORT_RTP].rtp_session, &dtmf);
    -				switch_channel_queue_dtmf(channel, &dtmf);
    -			}
    -
    -
    -			if (tech_pvt->transports[LDL_TPORT_RTP].read_frame.datalen > 0) {
    -				size_t bytes = 0;
    -				int frames = 1;
    -
    -				if (!switch_test_flag((&tech_pvt->transports[LDL_TPORT_RTP].read_frame), SFF_CNG)) {
    -					if ((bytes = tech_pvt->transports[LDL_TPORT_RTP].read_codec.implementation->encoded_bytes_per_packet)) {
    -						frames = (int)(tech_pvt->transports[LDL_TPORT_RTP].read_frame.datalen / bytes);
    -					}
    -					tech_pvt->transports[LDL_TPORT_RTP].read_frame.samples = (int) (frames * tech_pvt->transports[LDL_TPORT_RTP].read_codec.implementation->samples_per_packet);
    -				}
    -				break;
    -			}
    -		}
    -	}
    -
    -	switch_clear_flag_locked(tech_pvt, TFLAG_READING);
    -
    -	if (tech_pvt->transports[LDL_TPORT_RTP].read_frame.datalen == 0) {
    -		switch_set_flag((&tech_pvt->transports[LDL_TPORT_RTP].read_frame), SFF_CNG);
    -		tech_pvt->transports[LDL_TPORT_RTP].read_frame.datalen = 2;
    -	}
    -
    -	*frame = &tech_pvt->transports[LDL_TPORT_RTP].read_frame;
    -
    -	return SWITCH_STATUS_SUCCESS;
    -}
    -
    -static switch_status_t channel_write_frame(switch_core_session_t *session, switch_frame_t *frame, switch_io_flag_t flags, int stream_id)
    -{
    -	struct private_object *tech_pvt;
    -	switch_channel_t *channel = switch_core_session_get_channel(session);
    -	switch_status_t status = SWITCH_STATUS_SUCCESS;
    -	int bytes = 0, samples = 0, frames = 0;
    -
    -	tech_pvt = (struct private_object *) switch_core_session_get_private(session);
    -	switch_assert(tech_pvt != NULL);
    -
    -	while (!(tech_pvt->transports[LDL_TPORT_RTP].read_codec.implementation && switch_rtp_ready(tech_pvt->transports[LDL_TPORT_RTP].rtp_session))) {
    -		if (switch_channel_ready(channel)) {
    -			switch_yield(10000);
    -		} else {
    -			return SWITCH_STATUS_GENERR;
    -		}
    -	}
    -
    -	if (!switch_core_codec_ready(&tech_pvt->transports[LDL_TPORT_RTP].read_codec) || !tech_pvt->transports[LDL_TPORT_RTP].read_codec.implementation) {
    -		return SWITCH_STATUS_GENERR;
    -	}
    -
    -	if (!switch_test_flag(tech_pvt, TFLAG_IO)) {
    -		return SWITCH_STATUS_SUCCESS;
    -	}
    -
    -	switch_set_flag_locked(tech_pvt, TFLAG_WRITING);
    -
    -	if (!switch_test_flag(frame, SFF_CNG)) {
    -		if (tech_pvt->transports[LDL_TPORT_RTP].read_codec.implementation->encoded_bytes_per_packet) {
    -			bytes = tech_pvt->transports[LDL_TPORT_RTP].read_codec.implementation->encoded_bytes_per_packet;
    -			frames = ((int) frame->datalen / bytes);
    -		} else
    -			frames = 1;
    -
    -		samples = frames * tech_pvt->transports[LDL_TPORT_RTP].read_codec.implementation->samples_per_packet;
    -	}
    -#if 0
    -	printf("%s %s->%s send %d bytes %d samples in %d frames ts=%d\n",
    -		   switch_channel_get_name(channel),
    -		   tech_pvt->local_sdp_audio_ip, tech_pvt->remote_sdp_audio_ip, frame->datalen, samples, frames, tech_pvt->timestamp_send);
    -#endif
    -
    -	tech_pvt->timestamp_send += samples;
    -	//switch_rtp_write_frame(tech_pvt->transports[LDL_TPORT_RTP].rtp_session, frame, tech_pvt->timestamp_send);
    -	if (switch_rtp_write_frame(tech_pvt->transports[LDL_TPORT_RTP].rtp_session, frame) < 0) {
    -		status = SWITCH_STATUS_GENERR;
    -	}
    -
    -	switch_clear_flag_locked(tech_pvt, TFLAG_WRITING);
    -	return status;
    -}
    -
    -
    -static switch_status_t channel_read_video_frame(switch_core_session_t *session, switch_frame_t **frame, switch_io_flag_t flags, int stream_id)
    -{
    -	struct private_object *tech_pvt = NULL;
    -	switch_channel_t *channel = switch_core_session_get_channel(session);
    -	//int payload = 0;
    -	//switch_status_t status;
    -
    -	tech_pvt = (struct private_object *) switch_core_session_get_private(session);
    -	switch_assert(tech_pvt != NULL);
    -
    -	if (!switch_test_flag(tech_pvt, TFLAG_IO)) {
    -		return SWITCH_STATUS_GENERR;
    -	}
    -
    -	while (!(tech_pvt->transports[LDL_TPORT_VIDEO_RTP].read_codec.implementation && switch_rtp_ready(tech_pvt->transports[LDL_TPORT_VIDEO_RTP].rtp_session))) {
    -		if (switch_channel_ready(channel)) {
    -			switch_yield(10000);
    -		} else {
    -			return SWITCH_STATUS_GENERR;
    -		}
    -	}
    -
    -	tech_pvt->transports[LDL_TPORT_VIDEO_RTP].read_frame.datalen = 0;
    -
    -	while (switch_test_flag(tech_pvt, TFLAG_IO) && tech_pvt->transports[LDL_TPORT_VIDEO_RTP].read_frame.datalen == 0) {
    -		tech_pvt->transports[LDL_TPORT_VIDEO_RTP].read_frame.flags = SFF_NONE;
    -		switch_rtp_zerocopy_read_frame(tech_pvt->transports[LDL_TPORT_VIDEO_RTP].rtp_session, &tech_pvt->transports[LDL_TPORT_VIDEO_RTP].read_frame, flags);
    -	}
    -
    -	if (tech_pvt->transports[LDL_TPORT_VIDEO_RTP].read_frame.datalen == 0) {
    -		switch_set_flag((&tech_pvt->transports[LDL_TPORT_RTP].read_frame), SFF_CNG);
    -		tech_pvt->transports[LDL_TPORT_VIDEO_RTP].read_frame.datalen = 2;
    -	}
    -
    -	*frame = &tech_pvt->transports[LDL_TPORT_VIDEO_RTP].read_frame;
    -
    -	return SWITCH_STATUS_SUCCESS;
    -}
    -
    -static switch_status_t channel_write_video_frame(switch_core_session_t *session, switch_frame_t *frame, switch_io_flag_t flags, int stream_id)
    -{
    -	struct private_object *tech_pvt = (struct private_object *)switch_core_session_get_private(session);
    -	switch_channel_t *channel = switch_core_session_get_channel(session);
    -	int wrote = 0;
    -
    -	switch_assert(tech_pvt != NULL);
    -
    -	while (!(tech_pvt->transports[LDL_TPORT_VIDEO_RTP].read_codec.implementation && switch_rtp_ready(tech_pvt->transports[LDL_TPORT_VIDEO_RTP].rtp_session))) {
    -		if (switch_channel_ready(channel)) {
    -			switch_yield(10000);
    -		} else {
    -			return SWITCH_STATUS_GENERR;
    -		}
    -	}
    -
    -	if (!switch_test_flag(tech_pvt, TFLAG_IO)) {
    -		return SWITCH_STATUS_SUCCESS;
    -	}
    -
    -	if (!switch_test_flag(frame, SFF_CNG)) {
    -		wrote = switch_rtp_write_frame(tech_pvt->transports[LDL_TPORT_VIDEO_RTP].rtp_session, frame);
    -	}
    -
    -	return wrote > -1 ? SWITCH_STATUS_SUCCESS : SWITCH_STATUS_GENERR;
    -}
    -
    -static switch_status_t channel_answer_channel(switch_core_session_t *session)
    -{
    -	struct private_object *tech_pvt;
    -
    -	tech_pvt = switch_core_session_get_private(session);
    -	switch_assert(tech_pvt != NULL);
    -
    -	if (!switch_test_flag(tech_pvt, TFLAG_OUTBOUND)) {
    -		switch_set_flag_locked(tech_pvt, TFLAG_ANSWER);
    -	}
    -
    -	return SWITCH_STATUS_SUCCESS;
    -}
    -
    -
    -static switch_status_t channel_receive_message(switch_core_session_t *session, switch_core_session_message_t *msg)
    -{
    -	struct private_object *tech_pvt;
    -
    -	tech_pvt = switch_core_session_get_private(session);
    -	switch_assert(tech_pvt != NULL);
    -
    -	switch (msg->message_id) {
    -	case SWITCH_MESSAGE_INDICATE_ANSWER:
    -		channel_answer_channel(session);
    -		break;
    -	case SWITCH_MESSAGE_INDICATE_STUN_ERROR:
    -		//switch_channel_hangup(switch_core_session_get_channel(session), SWITCH_CAUSE_NORMAL_CLEARING);
    -		break;
    -	default:
    -		break;
    -	}
    -
    -	return SWITCH_STATUS_SUCCESS;
    -}
    -
    -static switch_status_t channel_receive_event(switch_core_session_t *session, switch_event_t *event)
    -{
    -	struct private_object *tech_pvt;
    -	char *subject, *body;
    -
    -	tech_pvt = switch_core_session_get_private(session);
    -	switch_assert(tech_pvt != NULL);
    -
    -
    -	if (!(body = switch_event_get_body(event))) {
    -		body = "";
    -	}
    -
    -	if (!(subject = switch_event_get_header(event, "subject"))) {
    -		subject = "None";
    -	}
    -
    -	ldl_session_send_msg(tech_pvt->dlsession, subject, body);
    -
    -	return SWITCH_STATUS_SUCCESS;
    -}
    -
    -switch_state_handler_table_t dingaling_event_handlers = {
    -	/*.on_init */ channel_on_init,
    -	/*.on_routing */ channel_on_routing,
    -	/*.on_execute */ channel_on_execute,
    -	/*.on_hangup */ channel_on_hangup,
    -	/*.on_exchange_media */ channel_on_exchange_media,
    -	/*.on_soft_execute */ channel_on_soft_execute,
    -	/*.on_consume_media */ NULL,
    -	/*.on_hibernate */ NULL,
    -	/*.on_reset */ NULL,
    -	/*.on_park */ NULL,
    -	/*.on_reporting */ NULL,
    -	/*.on_destroy */ channel_on_destroy
    -};
    -
    -switch_io_routines_t dingaling_io_routines = {
    -	/*.outgoing_channel */ channel_outgoing_channel,
    -	/*.transports[LDL_TPORT_RTP].read_frame */ channel_read_frame,
    -	/*.write_frame */ channel_write_frame,
    -	/*.kill_channel */ channel_kill_channel,
    -	/*.send_dtmf */ channel_send_dtmf,
    -	/*.receive_message */ channel_receive_message,
    -	/*.receive_event */ channel_receive_event,
    -	/*.state_change */ NULL,
    -	/*.read_video_frame */ channel_read_video_frame,
    -	/*.write_video_frame */ channel_write_video_frame
    -};
    -
    -
    -
    -/* Make sure when you have 2 sessions in the same scope that you pass the appropriate one to the routines
    -   that allocate memory or you will have 1 channel with memory allocated from another channel's pool!
    -*/
    -static switch_call_cause_t channel_outgoing_channel(switch_core_session_t *session, switch_event_t *var_event,
    -													switch_caller_profile_t *outbound_profile,
    -													switch_core_session_t **new_session, switch_memory_pool_t **pool, switch_originate_flag_t oflags,
    -													switch_call_cause_t *cancel_cause)
    -{
    -	struct private_object *tech_pvt;
    -	switch_channel_t *channel;
    -	switch_caller_profile_t *caller_profile = NULL;
    -	mdl_profile_t *mdl_profile = NULL;
    -	ldl_session_t *dlsession = NULL;
    -	char *profile_name;
    -	char *callto;
    -	char idbuf[1024];
    -	char *full_id = NULL;
    -	char sess_id[11] = "";
    -	char *dnis = NULL;
    -	char workspace[1024] = "";
    -	char *p, *u, ubuf[512] = "", *user = NULL, *f_cid_msg = NULL;
    -	const char *cid_msg = NULL;
    -	ldl_user_flag_t flags = LDL_FLAG_OUTBOUND;
    -	const char *var;
    -	char name[128];
    -
    -	*new_session = switch_core_session_request(dingaling_endpoint_interface, SWITCH_CALL_DIRECTION_OUTBOUND, oflags, pool);
    -
    -	if (!*new_session) {
    -		return SWITCH_CAUSE_DESTINATION_OUT_OF_ORDER;
    -	}
    -
    -	if (!outbound_profile) {
    -		switch_log_printf(SWITCH_CHANNEL_SESSION_LOG(*new_session), SWITCH_LOG_DEBUG, "Doh! no caller profile\n");
    -		terminate_session(new_session, __LINE__, SWITCH_CAUSE_DESTINATION_OUT_OF_ORDER);
    -		return SWITCH_CAUSE_DESTINATION_OUT_OF_ORDER;
    -	}
    -
    -	switch_copy_string(workspace, outbound_profile->destination_number, sizeof(workspace));
    -	profile_name = workspace;
    -
    -	if ((callto = strchr(profile_name, '/'))) {
    -		*callto++ = '\0';
    -	} else {
    -		switch_log_printf(SWITCH_CHANNEL_SESSION_LOG(*new_session), SWITCH_LOG_DEBUG, "Invalid URL!\n");
    -		terminate_session(new_session, __LINE__, SWITCH_CAUSE_DESTINATION_OUT_OF_ORDER);
    -		return SWITCH_CAUSE_INVALID_NUMBER_FORMAT;
    -	}
    -
    -	if ((dnis = strchr(callto, ':'))) {
    -		*dnis++ = '\0';
    -	}
    -
    -	for (p = callto; p && *p; p++) {
    -		*p = (char) tolower(*p);
    -	}
    -
    -	if ((p = strchr(profile_name, '@'))) {
    -		*p++ = '\0';
    -		u = profile_name;
    -		profile_name = p;
    -		switch_snprintf(ubuf, sizeof(ubuf), "%s@%s/talk", u, profile_name);
    -		user = ubuf;
    -	}
    -
    -	mdl_profile = switch_core_hash_find(globals.profile_hash, profile_name);
    -
    -	if (!mdl_profile) {
    -		switch_log_printf(SWITCH_CHANNEL_SESSION_LOG(*new_session), SWITCH_LOG_DEBUG, "Unknown Profile!\n");
    -		terminate_session(new_session, __LINE__, SWITCH_CAUSE_DESTINATION_OUT_OF_ORDER);
    -		return SWITCH_CAUSE_DESTINATION_OUT_OF_ORDER;
    -	}
    -
    -	if (!(mdl_profile->user_flags & LDL_FLAG_COMPONENT)) {
    -		user = ldl_handle_get_login(mdl_profile->handle);
    -	} else {
    -		if (!user) {
    -			const char *id_num;
    -
    -			if (!(id_num = outbound_profile->caller_id_number)) {
    -				if (!(id_num = outbound_profile->caller_id_name)) {
    -					id_num = "nobody";
    -				}
    -			}
    -
    -			if (strchr(id_num, '@')) {
    -				switch_snprintf(ubuf, sizeof(ubuf), "%s/talk", id_num);
    -				user = ubuf;
    -			} else {
    -				switch_snprintf(ubuf, sizeof(ubuf), "%s@%s/talk", id_num, profile_name);
    -				user = ubuf;
    -			}
    -		}
    -	}
    -
    -	if (mdl_profile->purge) {
    -		switch_log_printf(SWITCH_CHANNEL_LOG, SWITCH_LOG_ERROR, "Profile '%s' is marked for deletion, disallowing outgoing call\n",
    -						  mdl_profile->name);
    -		terminate_session(new_session, __LINE__, SWITCH_CAUSE_NORMAL_UNSPECIFIED);
    -		return SWITCH_CAUSE_NORMAL_UNSPECIFIED;
    -	}
    -
    -	if (switch_thread_rwlock_tryrdlock(mdl_profile->rwlock) != SWITCH_STATUS_SUCCESS) {
    -		switch_log_printf(SWITCH_CHANNEL_LOG, SWITCH_LOG_ERROR, "Can't do read lock on profile '%s'\n", mdl_profile->name);
    -		terminate_session(new_session, __LINE__, SWITCH_CAUSE_NORMAL_UNSPECIFIED);
    -		return SWITCH_CAUSE_NORMAL_UNSPECIFIED;
    -	}
    -
    -	if (!ldl_handle_ready(mdl_profile->handle)) {
    -		switch_log_printf(SWITCH_CHANNEL_SESSION_LOG(*new_session), SWITCH_LOG_DEBUG, "Doh! we are not logged in yet!\n");
    -		terminate_session(new_session, __LINE__, SWITCH_CAUSE_DESTINATION_OUT_OF_ORDER);
    -		return SWITCH_CAUSE_DESTINATION_OUT_OF_ORDER;
    -	}
    -	if (switch_stristr("voice.google.com", callto)) {
    -		full_id = callto;
    -		flags |= LDL_FLAG_GATEWAY;
    -	} else if (!(full_id = ldl_handle_probe(mdl_profile->handle, callto, user, idbuf, sizeof(idbuf)))) {
    -		switch_log_printf(SWITCH_CHANNEL_SESSION_LOG(*new_session), SWITCH_LOG_DEBUG, "Unknown Recipient!\n");
    -		terminate_session(new_session, __LINE__, SWITCH_CAUSE_NO_USER_RESPONSE);
    -		return SWITCH_CAUSE_NO_USER_RESPONSE;
    -	}
    -
    -	switch_core_session_add_stream(*new_session, NULL);
    -	tech_pvt = (struct private_object *) switch_core_session_alloc(*new_session, sizeof(struct private_object));
    -
    -	if (!tech_pvt) {
    -		switch_log_printf(SWITCH_CHANNEL_SESSION_LOG(*new_session), SWITCH_LOG_CRIT, "Hey where is my memory pool?\n");
    -		terminate_session(new_session, __LINE__, SWITCH_CAUSE_DESTINATION_OUT_OF_ORDER);
    -		return SWITCH_CAUSE_DESTINATION_OUT_OF_ORDER;
    -	}
    -
    -	memset(tech_pvt, 0, sizeof(*tech_pvt));
    -	tech_pvt->profile = mdl_profile;
    -	switch_mutex_init(&tech_pvt->flag_mutex, SWITCH_MUTEX_NESTED, switch_core_session_get_pool(*new_session));
    -	tech_pvt->flags |= globals.flags;
    -	tech_pvt->flags |= mdl_profile->flags;
    -	channel = switch_core_session_get_channel(*new_session);
    -	switch_core_session_set_private(*new_session, tech_pvt);
    -	tech_pvt->session = *new_session;
    -	tech_pvt->channel = switch_core_session_get_channel(tech_pvt->session);
    -	tech_pvt->transports[LDL_TPORT_RTP].codec_index = -1;
    -	tech_pvt->transports[LDL_TPORT_VIDEO_RTP].codec_index = -1;
    -
    -	switch_set_flag(tech_pvt, TFLAG_SECURE);
    -	mdl_build_crypto(tech_pvt, LDL_TPORT_RTP, 1, AES_CM_128_HMAC_SHA1_80, SWITCH_RTP_CRYPTO_SEND);
    -	mdl_build_crypto(tech_pvt, LDL_TPORT_VIDEO_RTP, 1, AES_CM_128_HMAC_SHA1_80, SWITCH_RTP_CRYPTO_SEND);
    -
    -	if (!(tech_pvt->transports[LDL_TPORT_RTP].local_port = switch_rtp_request_port(mdl_profile->ip))) {
    -		switch_log_printf(SWITCH_CHANNEL_SESSION_LOG(*new_session), SWITCH_LOG_CRIT, "No RTP port available!\n");
    -		terminate_session(new_session, __LINE__, SWITCH_CAUSE_DESTINATION_OUT_OF_ORDER);
    -		return SWITCH_CAUSE_DESTINATION_OUT_OF_ORDER;
    -	}
    -	tech_pvt->transports[LDL_TPORT_RTP].adv_local_port = tech_pvt->transports[LDL_TPORT_RTP].local_port;
    -	tech_pvt->transports[LDL_TPORT_RTCP].adv_local_port = tech_pvt->transports[LDL_TPORT_RTP].local_port + 1;
    -	if (!(tech_pvt->transports[LDL_TPORT_VIDEO_RTP].local_port = switch_rtp_request_port(mdl_profile->ip))) {
    -		switch_log_printf(SWITCH_CHANNEL_SESSION_LOG(*new_session), SWITCH_LOG_CRIT, "No RTP port available!\n");
    -		terminate_session(new_session, __LINE__, SWITCH_CAUSE_DESTINATION_OUT_OF_ORDER);
    -		return SWITCH_CAUSE_DESTINATION_OUT_OF_ORDER;
    -	}
    -	tech_pvt->transports[LDL_TPORT_VIDEO_RTP].adv_local_port = tech_pvt->transports[LDL_TPORT_VIDEO_RTP].local_port;
    -	tech_pvt->transports[LDL_TPORT_VIDEO_RTCP].adv_local_port = tech_pvt->transports[LDL_TPORT_VIDEO_RTP].local_port + 1;
    -
    -	tech_pvt->recip = switch_core_session_strdup(*new_session, full_id);
    -	if (dnis) {
    -		tech_pvt->dnis = switch_core_session_strdup(*new_session, dnis);
    -	}
    -
    -	switch_snprintf(name, sizeof(name), "dingaling/%s", outbound_profile->destination_number);
    -	switch_channel_set_name(channel, name);
    -
    -	caller_profile = switch_caller_profile_clone(*new_session, outbound_profile);
    -	switch_channel_set_caller_profile(channel, caller_profile);
    -	tech_pvt->caller_profile = caller_profile;
    -
    -	switch_set_flag_locked(tech_pvt, TFLAG_OUTBOUND);
    -
    -	switch_stun_random_string(sess_id, 10, "0123456789");
    -	tech_pvt->us = switch_core_session_strdup(*new_session, user);
    -	tech_pvt->them = switch_core_session_strdup(*new_session, full_id);
    -	ldl_session_create(&dlsession, mdl_profile->handle, sess_id, full_id, user, flags);
    -
    -	if (session) {
    -		switch_channel_t *calling_channel = switch_core_session_get_channel(session);
    -		cid_msg = switch_channel_get_variable(calling_channel, "dl_cid_msg");
    -	}
    -
    -	if (!cid_msg) {
    -		f_cid_msg = switch_mprintf("Incoming Call From %s %s\n", outbound_profile->caller_id_name, outbound_profile->caller_id_number);
    -		cid_msg = f_cid_msg;
    -	}
    -
    -	if ((flags & LDL_FLAG_GATEWAY)) {
    -		cid_msg = NULL;
    -	}
    -
    -	if (cid_msg) {
    -		char *them;
    -		them = strdup(tech_pvt->them);
    -		if (them) {
    -			char *ptr;
    -			if ((ptr = strchr(them, '/'))) {
    -				*ptr = '\0';
    -			}
    -			ldl_handle_send_msg(mdl_profile->handle, tech_pvt->us, them, "", switch_str_nil(cid_msg));
    -		}
    -		switch_safe_free(them);
    -	}
    -	switch_safe_free(f_cid_msg);
    -
    -	ldl_session_set_private(dlsession, *new_session);
    -	ldl_session_set_value(dlsession, "dnis", dnis);
    -	ldl_session_set_value(dlsession, "caller_id_name", outbound_profile->caller_id_name);
    -	ldl_session_set_value(dlsession, "caller_id_number", outbound_profile->caller_id_number);
    -	tech_pvt->dlsession = dlsession;
    -
    -	if ((var = switch_event_get_header(var_event, "absolute_codec_string"))) {
    -		switch_channel_set_variable(channel, "absolute_codec_string", var);
    -	}
    -
    -	if (!get_codecs(tech_pvt)) {
    -		terminate_session(new_session, __LINE__, SWITCH_CAUSE_BEARERCAPABILITY_NOTAVAIL);
    -		return SWITCH_CAUSE_BEARERCAPABILITY_NOTAVAIL;
    -	}
    -	switch_channel_set_state(channel, CS_INIT);
    -	return SWITCH_CAUSE_SUCCESS;
    -}
    -
    -static switch_status_t list_profiles(const char *line, const char *cursor, switch_console_callback_match_t **matches)
    -{
    -	mdl_profile_t *profile = NULL;
    -	switch_hash_index_t *hi;
    -	void *val;
    -	const void *vvar;
    -	switch_console_callback_match_t *my_matches = NULL;
    -	switch_status_t status = SWITCH_STATUS_FALSE;
    -
    -	for (hi = switch_core_hash_first(globals.profile_hash); hi; hi = switch_core_hash_next(&hi)) {
    -		switch_core_hash_this(hi, &vvar, NULL, &val);
    -		profile = (mdl_profile_t *) val;
    -		if (!strncmp("dl_logout", line, 9)) {
    -			if (profile->handle) {
    -				switch_console_push_match(&my_matches, profile->name);
    -			}
    -		} else if (!strncmp("dl_login", line, 8)) {
    -			if (!switch_test_flag(profile, TFLAG_IO)) {
    -				char *profile_name = switch_mprintf("profile=%s", profile->name);
    -				switch_console_push_match(&my_matches, profile_name);
    -				free(profile_name);
    -			}
    -		} else if (!strncmp("dl_pres", line, 7)) {
    -			if (profile->user_flags & LDL_FLAG_COMPONENT) {
    -				switch_console_push_match(&my_matches, profile->name);
    -			}
    -		} else {
    -			switch_console_push_match(&my_matches, profile->name);
    -		}
    -	}
    -
    -	if (my_matches) {
    -		*matches = my_matches;
    -		status = SWITCH_STATUS_SUCCESS;
    -	}
    -
    -	return status;
    -}
    -
    -SWITCH_MODULE_LOAD_FUNCTION(mod_dingaling_load)
    -{
    -	switch_chat_interface_t *chat_interface;
    -	switch_api_interface_t *api_interface;
    -
    -	module_pool = pool;
    -
    -	memset(&globals, 0, sizeof(globals));
    -
    -	load_config();
    -
    -	if (switch_event_reserve_subclass(DL_EVENT_LOGIN_SUCCESS) != SWITCH_STATUS_SUCCESS) {
    -		switch_log_printf(SWITCH_CHANNEL_LOG, SWITCH_LOG_ERROR, "Couldn't register subclass %s!\n", DL_EVENT_LOGIN_SUCCESS);
    -		return SWITCH_STATUS_GENERR;
    -	}
    -
    -	if (switch_event_reserve_subclass(DL_EVENT_LOGIN_FAILURE) != SWITCH_STATUS_SUCCESS) {
    -		switch_log_printf(SWITCH_CHANNEL_LOG, SWITCH_LOG_ERROR, "Couldn't register subclass %s!\n", DL_EVENT_LOGIN_FAILURE);
    -		return SWITCH_STATUS_GENERR;
    -	}
    -
    -	if (switch_event_reserve_subclass(DL_EVENT_CONNECTED) != SWITCH_STATUS_SUCCESS) {
    -		switch_log_printf(SWITCH_CHANNEL_LOG, SWITCH_LOG_ERROR, "Couldn't register subclass %s!\n", DL_EVENT_CONNECTED);
    -		return SWITCH_STATUS_GENERR;
    -	}
    -
    -	if (switch_event_bind_removable(modname, SWITCH_EVENT_PRESENCE_IN, SWITCH_EVENT_SUBCLASS_ANY, pres_event_handler, NULL, &globals.in_node) !=
    -		SWITCH_STATUS_SUCCESS) {
    -		switch_log_printf(SWITCH_CHANNEL_LOG, SWITCH_LOG_ERROR, "Couldn't bind!\n");
    -		return SWITCH_STATUS_GENERR;
    -	}
    -
    -	if (switch_event_bind_removable(modname, SWITCH_EVENT_PRESENCE_PROBE, SWITCH_EVENT_SUBCLASS_ANY, pres_event_handler, NULL, &globals.probe_node) !=
    -		SWITCH_STATUS_SUCCESS) {
    -		switch_log_printf(SWITCH_CHANNEL_LOG, SWITCH_LOG_ERROR, "Couldn't bind!\n");
    -		return SWITCH_STATUS_GENERR;
    -	}
    -
    -	if (switch_event_bind_removable(modname, SWITCH_EVENT_PRESENCE_OUT, SWITCH_EVENT_SUBCLASS_ANY, pres_event_handler, NULL, &globals.out_node) !=
    -		SWITCH_STATUS_SUCCESS) {
    -		switch_log_printf(SWITCH_CHANNEL_LOG, SWITCH_LOG_ERROR, "Couldn't bind!\n");
    -		return SWITCH_STATUS_GENERR;
    -	}
    -
    -	if (switch_event_bind_removable(modname, SWITCH_EVENT_ROSTER, SWITCH_EVENT_SUBCLASS_ANY, roster_event_handler, NULL, &globals.roster_node)
    -		!= SWITCH_STATUS_SUCCESS) {
    -		switch_log_printf(SWITCH_CHANNEL_LOG, SWITCH_LOG_ERROR, "Couldn't bind!\n");
    -		return SWITCH_STATUS_GENERR;
    -	}
    -
    -	if (switch_event_bind(modname, SWITCH_EVENT_TRAP, SWITCH_EVENT_SUBCLASS_ANY, ipchanged_event_handler, NULL) != SWITCH_STATUS_SUCCESS) {
    -		switch_log_printf(SWITCH_CHANNEL_LOG, SWITCH_LOG_ERROR, "Couldn't bind!\n");
    -		return SWITCH_STATUS_GENERR;
    -	}
    -
    -
    -	/* connect my internal structure to the blank pointer passed to me */
    -	*module_interface = switch_loadable_module_create_module_interface(pool, modname);
    -	dingaling_endpoint_interface = switch_loadable_module_create_interface(*module_interface, SWITCH_ENDPOINT_INTERFACE);
    -	dingaling_endpoint_interface->interface_name = "dingaling";
    -	dingaling_endpoint_interface->io_routines = &dingaling_io_routines;
    -	dingaling_endpoint_interface->state_handler = &dingaling_event_handlers;
    -
    -#define PRES_SYNTAX "dl_pres "
    -#define LOGOUT_SYNTAX "dl_logout "
    -#define LOGIN_SYNTAX "Existing Profile:\ndl_login profile=\nDynamic Profile:\ndl_login var1=val1;var2=val2;varN=valN\n"
    -#define DEBUG_SYNTAX "dl_debug [true|false]"
    -#define DINGALING_SYNTAX "dingaling [status|reload]"
    -
    -	SWITCH_ADD_API(api_interface, "dl_debug", "DingaLing Debug", dl_debug, DEBUG_SYNTAX);
    -	SWITCH_ADD_API(api_interface, "dl_pres", "DingaLing Presence", dl_pres, PRES_SYNTAX);
    -	SWITCH_ADD_API(api_interface, "dl_logout", "DingaLing Logout", dl_logout, LOGOUT_SYNTAX);
    -	SWITCH_ADD_API(api_interface, "dl_login", "DingaLing Login", dl_login, LOGIN_SYNTAX);
    -	SWITCH_ADD_API(api_interface, "dingaling", "DingaLing Menu", dingaling, DINGALING_SYNTAX);
    -	SWITCH_ADD_CHAT(chat_interface, MDL_CHAT_PROTO, chat_send);
    -
    -	switch_console_set_complete("add dl_debug ::[true:false");
    -	switch_console_set_complete("add dl_pres ::dingaling::list_profiles");
    -	switch_console_set_complete("add dl_logout ::dingaling::list_profiles");
    -	switch_console_set_complete("add dl_login ::dingaling::list_profiles");
    -	switch_console_set_complete("add dl_login login=");
    -	switch_console_set_complete("add dingaling status");
    -	switch_console_set_complete("add dingaling reload");
    -	switch_console_add_complete_func("::dingaling::list_profiles", list_profiles);
    -
    -	/* indicate that the module should continue to be loaded */
    -	return SWITCH_STATUS_SUCCESS;
    -}
    -
    -static ldl_status handle_loop(ldl_handle_t *handle)
    -{
    -	if (!globals.running) {
    -		return LDL_STATUS_FALSE;
    -	}
    -	return LDL_STATUS_SUCCESS;
    -}
    -
    -static switch_status_t init_profile(mdl_profile_t *profile, uint8_t login)
    -{
    -	ldl_handle_t *handle;
    -
    -	if (!profile) {
    -		switch_log_printf(SWITCH_CHANNEL_LOG, SWITCH_LOG_DEBUG, "Invalid Profile\n");
    -		return SWITCH_STATUS_FALSE;
    -	}
    -
    -	if (!(profile->login && profile->password && profile->dialplan && profile->message && profile->ip && profile->name && profile->exten)) {
    -		switch_log_printf(SWITCH_CHANNEL_LOG, SWITCH_LOG_DEBUG,
    -						  "Invalid Profile\n" "login[%s]\n" "pass[%s]\n" "dialplan[%s]\n"
    -						  "message[%s]\n" "rtp-ip[%s]\n" "name[%s]\n" "exten[%s]\n",
    -						  switch_str_nil(profile->login),
    -						  switch_str_nil(profile->password),
    -						  switch_str_nil(profile->dialplan),
    -						  switch_str_nil(profile->message), switch_str_nil(profile->ip), switch_str_nil(profile->name), switch_str_nil(profile->exten));
    -
    -		return SWITCH_STATUS_FALSE;
    -	}
    -
    -	if (switch_test_flag(profile, TFLAG_TIMER) && !profile->timer_name) {
    -		profile->timer_name = switch_core_strdup(module_pool, "soft");
    -	}
    -
    -	if (!login) {
    -		switch_log_printf(SWITCH_CHANNEL_LOG, SWITCH_LOG_DEBUG, "Created Profile for %s@%s\n", profile->login, profile->dialplan);
    -		switch_core_hash_insert(globals.profile_hash, profile->name, profile);
    -		return SWITCH_STATUS_SUCCESS;
    -	}
    -
    -	if (ldl_handle_init(&handle,
    -						profile->login,
    -						profile->password,
    -						profile->server,
    -						profile->user_flags, profile->message, profile->priority, handle_loop, handle_signalling, handle_response, profile) == LDL_STATUS_SUCCESS) {
    -		profile->purge = SWITCH_FALSE;
    -		switch_thread_rwlock_create(&profile->rwlock, module_pool);
    -
    -		profile->handle = handle;
    -		switch_log_printf(SWITCH_CHANNEL_LOG, SWITCH_LOG_DEBUG, "Started Thread for %s@%s\n", profile->login, profile->dialplan);
    -		switch_core_hash_insert(globals.profile_hash, profile->name, profile);
    -		handle_thread_launch(handle);
    -	}
    -
    -	return SWITCH_STATUS_SUCCESS;
    -}
    -
    -SWITCH_MODULE_SHUTDOWN_FUNCTION(mod_dingaling_shutdown)
    -{
    -	sign_off();
    -
    -	if (globals.running) {
    -		int x = 0;
    -		globals.running = 0;
    -		ldl_global_terminate();
    -		while (globals.handles > 0) {
    -			switch_yield(100000);
    -			x++;
    -			if (x > 100) {
    -				break;
    -			}
    -		}
    -
    -		if (globals.init) {
    -			ldl_global_destroy();
    -		}
    -	}
    -
    -	switch_event_free_subclass(DL_EVENT_LOGIN_SUCCESS);
    -	switch_event_free_subclass(DL_EVENT_LOGIN_FAILURE);
    -	switch_event_free_subclass(DL_EVENT_CONNECTED);
    -	switch_event_unbind(&globals.in_node);
    -	switch_event_unbind(&globals.probe_node);
    -	switch_event_unbind(&globals.out_node);
    -	switch_event_unbind(&globals.roster_node);
    -	switch_event_unbind_callback(ipchanged_event_handler);
    -
    -
    -	switch_core_hash_destroy(&globals.profile_hash);
    -
    -	switch_safe_free(globals.dialplan);
    -	switch_safe_free(globals.codec_string);
    -	switch_safe_free(globals.codec_rates_string);
    -
    -	return SWITCH_STATUS_SUCCESS;
    -}
    -
    -
    -static void set_profile_val(mdl_profile_t *profile, char *var, char *val)
    -{
    -	if (!var)
    -		return;
    -
    -	if (!strcasecmp(var, "login")) {
    -		profile->login = switch_core_strdup(module_pool, val);
    -	} else if (!strcasecmp(var, "password")) {
    -		profile->password = switch_core_strdup(module_pool, val);
    -	} else if (!strcasecmp(var, "avatar")) {
    -		profile->avatar = switch_core_strdup(module_pool, val);
    -	} else if (!strcasecmp(var, "odbc-dsn") && !zstr(val)) {
    -		profile->odbc_dsn = switch_core_strdup(module_pool, val);
    -	} else if (!strcasecmp(var, "use-rtp-timer") && switch_true(val)) {
    -		switch_set_flag(profile, TFLAG_TIMER);
    -	} else if (!strcasecmp(var, "dialplan") && !zstr(val)) {
    -		profile->dialplan = switch_core_strdup(module_pool, val);
    -#ifdef AUTO_REPLY				// gotta fix looping on this
    -	} else if (!strcasecmp(var, "auto-reply")) {
    -		profile->auto_reply = switch_core_strdup(module_pool, val);
    -#endif
    -	} else if (!strcasecmp(var, "name") && !zstr(val)) {
    -		profile->name = switch_core_strdup(module_pool, val);
    -	} else if (!strcasecmp(var, "message") && !zstr(val)) {
    -		profile->message = switch_core_strdup(module_pool, val);
    -	} else if (!strcasecmp(var, "priority") && !zstr(val)) {
    -		profile->priority = switch_core_strdup(module_pool, val);
    -	} else if (!strcasecmp(var, "local-network-acl") && !zstr(val)) {
    -		profile->local_network = switch_core_strdup(module_pool, val);
    -	} else if (!strcasecmp(var, "rtp-ip")) {
    -		profile->ip = switch_core_strdup(module_pool, strcasecmp(switch_str_nil(val), "auto") ? switch_str_nil(val) : globals.guess_ip);
    -	} else if (!strcasecmp(var, "ext-rtp-ip")) {
    -		char *ip = globals.guess_ip;
    -		if (val && !strcasecmp(val, "auto-nat")) {
    -			ip = globals.auto_nat ? switch_core_get_variable_pdup("nat_public_addr", module_pool) : globals.guess_ip;
    -		} else if (val && !strcasecmp(val, "auto")) {
    -			globals.auto_nat = 0;
    -			ip = globals.guess_ip;
    -		} else {
    -			globals.auto_nat = 0;
    -			ip = zstr(val) ? globals.guess_ip : val;
    -		}
    -		if (ip) {
    -			profile->extip = switch_core_strdup(module_pool, ip);
    -		}
    -	} else if (!strcasecmp(var, "server") && !zstr(val)) {
    -		profile->server = switch_core_strdup(module_pool, val);
    -	} else if (!strcasecmp(var, "rtp-timer-name") && !zstr(val)) {
    -		profile->timer_name = switch_core_strdup(module_pool, val);
    -	} else if (!strcasecmp(var, "lanaddr") && !zstr(val)) {
    -		profile->lanaddr = switch_core_strdup(module_pool, val);
    -	} else if (!strcasecmp(var, "candidate-acl")) {
    -		if (profile->acl_count < MAX_ACL) {
    -			profile->acl[profile->acl_count++] = strdup(val);
    -		} else {
    -			switch_log_printf(SWITCH_CHANNEL_LOG, SWITCH_LOG_ERROR, "Max acl records of %d reached\n", MAX_ACL);
    -		}
    -	} else if (!strcasecmp(var, "tls")) {
    -		if (switch_true(val)) {
    -			profile->user_flags |= LDL_FLAG_TLS;
    -		}
    -	} else if (!strcasecmp(var, "sasl")) {
    -		if (val && !strcasecmp(val, "plain")) {
    -			profile->user_flags |= LDL_FLAG_SASL_PLAIN;
    -		} else if (val && !strcasecmp(val, "md5")) {
    -			profile->user_flags |= LDL_FLAG_SASL_MD5;
    -		}
    -	} else if (!strcasecmp(var, "use-jingle") && switch_true(val)) {
    -		profile->user_flags |= LDL_FLAG_JINGLE;
    -	} else if (!strcasecmp(var, "exten") && !zstr(val)) {
    -		profile->exten = switch_core_strdup(module_pool, val);
    -	} else if (!strcasecmp(var, "context") && !zstr(val)) {
    -		profile->context = switch_core_strdup(module_pool, val);
    -	} else if (!strcasecmp(var, "auto-login") && !zstr(val)) {
    -		if (switch_true(val)) {
    -			switch_set_flag(profile, TFLAG_AUTO);
    -		}
    -	} else if (!strcasecmp(var, "vad") && val) {
    -		if (!strcasecmp(val, "in")) {
    -			switch_set_flag(profile, TFLAG_VAD_IN);
    -		} else if (!strcasecmp(val, "out")) {
    -			switch_set_flag(profile, TFLAG_VAD_OUT);
    -		} else if (!strcasecmp(val, "both")) {
    -			switch_set_flag(profile, TFLAG_VAD_IN);
    -			switch_set_flag(profile, TFLAG_VAD_OUT);
    -		} else if (!strcasecmp(val, "none")) {
    -			switch_set_flag(profile, TFLAG_VAD_NONE);
    -		} else {
    -			switch_log_printf(SWITCH_CHANNEL_LOG, SWITCH_LOG_ERROR, "Invalid option %s for VAD\n", val);
    -		}
    -	}
    -}
    -
    -SWITCH_STANDARD_API(dl_debug)
    -{
    -	int on, cur;
    -
    -	if (session) {
    -		return SWITCH_STATUS_FALSE;
    -	}
    -
    -	if (cmd) {
    -		on = switch_true(cmd);
    -		cur = ldl_global_debug(on);
    -	} else {
    -		cur = ldl_global_debug(-1);
    -	}
    -
    -
    -	stream->write_function(stream, "DEBUG IS NOW %s\n", cur ? "ON" : "OFF");
    -
    -	return SWITCH_STATUS_SUCCESS;
    -}
    -
    -SWITCH_STANDARD_API(dl_pres)
    -{
    -	mdl_profile_t *profile;
    -
    -	if (session) {
    -		return SWITCH_STATUS_FALSE;
    -	}
    -
    -	if (!cmd) {
    -		stream->write_function(stream, "USAGE: %s\n", PRES_SYNTAX);
    -		return SWITCH_STATUS_SUCCESS;
    -	}
    -
    -	if ((profile = switch_core_hash_find(globals.profile_hash, cmd))) {
    -		if (profile->user_flags & LDL_FLAG_COMPONENT) {
    -			sign_on(profile);
    -			stream->write_function(stream, "OK\n");
    -		} else {
    -			stream->write_function(stream, "NO PROFILE %s NOT A COMPONENT\n", cmd);
    -		}
    -	} else {
    -		stream->write_function(stream, "NO SUCH PROFILE %s\n", cmd);
    -	}
    -
    -	return SWITCH_STATUS_SUCCESS;
    -}
    -
    -SWITCH_STANDARD_API(dl_logout)
    -{
    -	mdl_profile_t *profile;
    -
    -	if (session) {
    -		return SWITCH_STATUS_FALSE;
    -	}
    -
    -	if (!cmd) {
    -		stream->write_function(stream, "USAGE: %s\n", LOGOUT_SYNTAX);
    -		return SWITCH_STATUS_SUCCESS;
    -	}
    -
    -	if (((profile = switch_core_hash_find(globals.profile_hash, cmd))) && profile->handle) {
    -		ldl_handle_stop(profile->handle);
    -		stream->write_function(stream, "OK\n");
    -	} else if (profile) {
    -		stream->write_function(stream, "NOT LOGGED IN\n");
    -	} else {
    -		stream->write_function(stream, "NO SUCH PROFILE %s\n", cmd);
    -	}
    -
    -	return SWITCH_STATUS_SUCCESS;
    -}
    -
    -SWITCH_STANDARD_API(dingaling)
    -{
    -	char *argv[10] = { 0 };
    -	int argc = 0;
    -	void *val;
    -	char *myarg = NULL;
    -	mdl_profile_t *profile = NULL;
    -	switch_hash_index_t *hi;
    -	switch_status_t status = SWITCH_STATUS_SUCCESS;
    -
    -	if (session)
    -		return status;
    -
    -	if (zstr(cmd) || !(myarg = strdup(cmd))) {
    -		stream->write_function(stream, "USAGE: %s\n", DINGALING_SYNTAX);
    -		return SWITCH_STATUS_FALSE;
    -	}
    -
    -	if ((argc = switch_separate_string(myarg, ' ', argv, (sizeof(argv) / sizeof(argv[0])))) != 1) {
    -		stream->write_function(stream, "USAGE: %s\n", DINGALING_SYNTAX);
    -		goto done;
    -	}
    -
    -	if (argv[0] && !strncasecmp(argv[0], "status", 6)) {
    -		stream->write_function(stream, "--DingaLing status--\n");
    -		stream->write_function(stream, "login	|	connected\n");
    -		for (hi = switch_core_hash_first(globals.profile_hash); hi; hi = switch_core_hash_next(&hi)) {
    -			switch_core_hash_this(hi, NULL, NULL, &val);
    -			profile = (mdl_profile_t *) val;
    -			stream->write_function(stream, "%s	|	", profile->login);
    -			if (profile->handle && ldl_handle_authorized(profile->handle)) {
    -				stream->write_function(stream, "AUTHORIZED");
    -			} else if (profile->handle && ldl_handle_connected(profile->handle)) {
    -				stream->write_function(stream, "CONNECTED");
    -			} else {
    -				stream->write_function(stream, "UNCONNECTED");
    -			}
    -			stream->write_function(stream, "\n");
    -		}
    -	} else if (argv[0] && !strncasecmp(argv[0], "reload", 6)) {
    -		soft_reload();
    -		stream->write_function(stream, "OK\n");
    -	} else {
    -		stream->write_function(stream, "USAGE: %s\n", DINGALING_SYNTAX);
    -	}
    -
    -  done:
    -	switch_safe_free(myarg);
    -	return status;
    -}
    -
    -SWITCH_STANDARD_API(dl_login)
    -{
    -	char *argv[20] = { 0 };
    -	int argc = 0;
    -	char *var, *val, *myarg = NULL;
    -	mdl_profile_t *profile = NULL;
    -	int x;
    -	switch_status_t status = SWITCH_STATUS_SUCCESS;
    -
    -	if (session) {
    -		status = SWITCH_STATUS_FALSE;
    -		goto done;
    -	}
    -
    -	if (zstr(cmd)) {
    -		stream->write_function(stream, "USAGE: %s\n", LOGIN_SYNTAX);
    -		status = SWITCH_STATUS_SUCCESS;
    -		goto done;
    -	}
    -
    -	myarg = strdup(cmd);
    -
    -	argc = switch_separate_string(myarg, ';', argv, (sizeof(argv) / sizeof(argv[0])));
    -
    -	if (argv[0] && !strncasecmp(argv[0], "profile=", 8)) {
    -		char *profile_name = argv[0] + 8;
    -		profile = switch_core_hash_find(globals.profile_hash, profile_name);
    -
    -		if (profile) {
    -			if (switch_test_flag(profile, TFLAG_IO)) {
    -				switch_log_printf(SWITCH_CHANNEL_LOG, SWITCH_LOG_ERROR, "Profile already exists.\n");
    -				stream->write_function(stream, "Profile already exists\n");
    -				status = SWITCH_STATUS_SUCCESS;
    -				goto done;
    -			}
    -
    -		}
    -	} else {
    -		profile = switch_core_alloc(module_pool, sizeof(*profile));
    -
    -		for (x = 0; x < argc; x++) {
    -			var = argv[x];
    -			if (var && (val = strchr(var, '='))) {
    -				*val++ = '\0';
    -				set_profile_val(profile, var, val);
    -			}
    -		}
    -	}
    -
    -
    -	if (profile && init_profile(profile, 1) == SWITCH_STATUS_SUCCESS) {
    -		stream->write_function(stream, "OK\n");
    -	} else {
    -		stream->write_function(stream, "FAIL\n");
    -	}
    -  done:
    -	switch_safe_free(myarg);
    -
    -	return status;
    -}
    -
    -
    -static switch_bool_t match_profile(mdl_profile_t *profile, mdl_profile_t *new_profile)
    -{
    -	if (profile == new_profile) {
    -		return SWITCH_TRUE;
    -	}
    -
    -	if (((!new_profile->name && !profile->name) ||
    -		 (new_profile->name && profile->name && !strcasecmp(new_profile->name, profile->name))) &&
    -		((!new_profile->login && !profile->login) ||
    -		 (new_profile->login && profile->login && !strcasecmp(new_profile->login, profile->login))) &&
    -		((!new_profile->password && !profile->password) ||
    -		 (new_profile->password && profile->password && !strcasecmp(new_profile->password, profile->password))) &&
    -		((!new_profile->message && !profile->message) ||
    -		 (new_profile->message && profile->message && !strcasecmp(new_profile->message, profile->message))) &&
    -		((!new_profile->priority && !profile->priority) ||
    -		 (new_profile->priority && profile->priority && !strcasecmp(new_profile->priority, profile->priority))) &&
    -		((!new_profile->avatar && !profile->avatar) || (new_profile->avatar && profile->avatar && !strcasecmp(new_profile->avatar, profile->avatar))) &&
    -#ifdef AUTO_REPLY
    -		((!new_profile->auto_reply && !profile->auto_reply) ||
    -		 (new_profile->auto_reply && profile->auto_reply && !strcasecmp(new_profile->auto_reply, profile->auto_reply))) &&
    -#endif
    -		((!new_profile->dialplan && !profile->dialplan) ||
    -		 (new_profile->dialplan && profile->dialplan && !strcasecmp(new_profile->dialplan, profile->dialplan))) &&
    -		((!new_profile->local_network && !profile->local_network) ||
    -		 (new_profile->local_network && profile->local_network && !strcasecmp(new_profile->local_network, profile->local_network))) &&
    -		((!new_profile->ip && !profile->ip) ||
    -		 (new_profile->ip && profile->ip && !strcasecmp(new_profile->ip, profile->ip))) &&
    -		((!new_profile->extip && !profile->extip) ||
    -		 (new_profile->extip && profile->extip && !strcasecmp(new_profile->extip, profile->extip))) &&
    -		((!new_profile->server && !profile->server) ||
    -		 (new_profile->server && profile->server && !strcasecmp(new_profile->server, profile->server))) &&
    -		((!new_profile->timer_name && !profile->timer_name) ||
    -		 (new_profile->timer_name && profile->timer_name && !strcasecmp(new_profile->timer_name, profile->timer_name))) &&
    -		((!new_profile->lanaddr && !profile->lanaddr) ||
    -		 (new_profile->lanaddr && profile->lanaddr && !strcasecmp(new_profile->lanaddr, profile->lanaddr))) &&
    -		((!new_profile->exten && !profile->exten) ||
    -		 (new_profile->exten && profile->exten && !strcasecmp(new_profile->exten, profile->exten))) &&
    -		((!new_profile->context && !profile->context) ||
    -		 (new_profile->context && profile->context && !strcasecmp(new_profile->context, profile->context))) &&
    -		(new_profile->user_flags == profile->user_flags) && (new_profile->acl_count == profile->acl_count)
    -		) {
    -		uint32_t i;
    -
    -		if (!(((!new_profile->odbc_dsn && !profile->odbc_dsn) ||
    -			   (new_profile->odbc_dsn && profile->odbc_dsn && !strcasecmp(new_profile->odbc_dsn, profile->odbc_dsn)))
    -			  )) {
    -			return SWITCH_FALSE;
    -		}
    -
    -
    -		for (i = 0; i < new_profile->acl_count; i++) {
    -			if (strcasecmp(new_profile->acl[i], profile->acl[i]) != 0) {
    -				return SWITCH_FALSE;
    -			}
    -		}
    -	}
    -
    -	return SWITCH_TRUE;
    -}
    -
    -static switch_status_t destroy_profile(char *name)
    -{
    -	mdl_profile_t *profile = NULL;
    -
    -	if ((profile = switch_core_hash_find(globals.profile_hash, name))) {
    -		if (profile->user_flags & LDL_FLAG_COMPONENT) {
    -			switch_mutex_destroy(profile->mutex);
    -		}
    -
    -		if (switch_thread_rwlock_trywrlock(profile->rwlock) != SWITCH_STATUS_SUCCESS) {
    -			switch_log_printf(SWITCH_CHANNEL_LOG, SWITCH_LOG_DEBUG, "Profile %s is busy\n", profile->name);
    -			profile->purge = SWITCH_TRUE;
    -			if (profile->handle) {
    -				ldl_handle_stop(profile->handle);
    -			}
    -		} else {
    -			switch_thread_rwlock_unlock(profile->rwlock);
    -			profile->purge = SWITCH_TRUE;
    -
    -			if (profile->handle) {
    -				ldl_handle_stop(profile->handle);
    -			}
    -
    -			if (switch_core_hash_delete(globals.profile_hash, profile->name)) {
    -				switch_log_printf(SWITCH_CHANNEL_LOG, SWITCH_LOG_DEBUG, "Profile %s deleted successfully\n", profile->name);
    -			}
    -		}
    -	}
    -
    -	return SWITCH_STATUS_SUCCESS;
    -}
    -
    -static switch_status_t soft_reload(void)
    -{
    -	char *cf = "dingaling.conf";
    -	mdl_profile_t *profile = NULL, *old_profile = NULL;
    -	switch_xml_t cfg, xml, /*settings, */ param, xmlint;
    -
    -	void *data = NULL;
    -	switch_hash_t *name_hash;
    -	switch_hash_index_t *hi;
    -	switch_core_hash_init(&name_hash);
    -
    -	if (!(xml = switch_xml_open_cfg(cf, &cfg, NULL))) {
    -		switch_log_printf(SWITCH_CHANNEL_LOG, SWITCH_LOG_ERROR, "Open of %s failed\n", cf);
    -		return SWITCH_STATUS_TERM;
    -	}
    -
    -	if (!(xmlint = switch_xml_child(cfg, "profile"))) {
    -		if ((xmlint = switch_xml_child(cfg, "interface"))) {
    -			switch_log_printf(SWITCH_CHANNEL_LOG, SWITCH_LOG_WARNING, "!!!!!!! DEPRICATION WARNING 'interface' is now 'profile' !!!!!!!\n");
    -		}
    -	}
    -
    -	for (; xmlint; xmlint = xmlint->next) {
    -		char *type = (char *) switch_xml_attr_soft(xmlint, "type");
    -		for (param = switch_xml_child(xmlint, "param"); param; param = param->next) {
    -			char *var = (char *) switch_xml_attr_soft(param, "name");
    -			char *val = (char *) switch_xml_attr_soft(param, "value");
    -
    -			if (!profile) {
    -				profile = switch_core_alloc(module_pool, sizeof(*profile));
    -			}
    -
    -			set_profile_val(profile, var, val);
    -		}
    -
    -		if (profile && type && !strcasecmp(type, "component")) {
    -			char dbname[256];
    -			switch_cache_db_handle_t *dbh = NULL;
    -
    -			if (!profile->login && profile->name) {
    -				profile->login = switch_core_strdup(module_pool, profile->name);
    -			}
    -
    -			switch_set_flag(profile, TFLAG_AUTO);
    -			profile->message = "";
    -			profile->priority = "";
    -			profile->user_flags |= LDL_FLAG_COMPONENT;
    -			switch_mutex_init(&profile->mutex, SWITCH_MUTEX_NESTED, module_pool);
    -			switch_snprintf(dbname, sizeof(dbname), "dingaling_%s", profile->name);
    -			profile->dbname = switch_core_strdup(module_pool, dbname);
    -
    -			if ((dbh = mdl_get_db_handle(profile))) {
    -				switch_cache_db_test_reactive(dbh, "select * from jabber_subscriptions", NULL, sub_sql);
    -				switch_cache_db_release_db_handle(&dbh);
    -			}
    -		}
    -
    -		if (profile) {
    -			switch_core_hash_insert(name_hash, profile->name, profile->login);
    -
    -			if ((old_profile = switch_core_hash_find(globals.profile_hash, profile->name))) {
    -				if (match_profile(old_profile, profile)) {
    -					switch_log_printf(SWITCH_CHANNEL_LOG, SWITCH_LOG_DEBUG, "Found pre-existing profile %s [%s]\n", profile->name, profile->login);
    -				} else {
    -					switch_log_printf(SWITCH_CHANNEL_LOG, SWITCH_LOG_DEBUG, "Overwriting pre-existing profile %s [%s]\n", profile->name, profile->login);
    -					destroy_profile(old_profile->name);
    -					init_profile(profile, switch_test_flag(profile, TFLAG_AUTO) ? 1 : 0);
    -				}
    -			} else {
    -				switch_log_printf(SWITCH_CHANNEL_LOG, SWITCH_LOG_DEBUG, "Found new profile %s [%s]\n", profile->name, profile->login);
    -				init_profile(profile, switch_test_flag(profile, TFLAG_AUTO) ? 1 : 0);
    -			}
    -
    -			profile = NULL;
    -		}
    -	}
    -
    -	switch_xml_free(xml);
    -
    -	for (hi = switch_core_hash_first(globals.profile_hash); hi; hi = switch_core_hash_next(&hi)) {
    -		switch_core_hash_this(hi, NULL, NULL, &data);
    -		profile = (mdl_profile_t *) data;
    -
    -		if (switch_core_hash_find(name_hash, profile->name)) {
    -			switch_log_printf(SWITCH_CHANNEL_LOG, SWITCH_LOG_DEBUG, "New profile %s [%s] activated\n", profile->name, profile->login);
    -		} else {
    -			switch_core_hash_insert(name_hash, profile->name, profile->name);
    -		}
    -	}
    -
    -	for (hi = switch_core_hash_first(name_hash); hi; hi = switch_core_hash_next(&hi)) {
    -		switch_core_hash_this(hi, NULL, NULL, &data);
    -
    -		if ((profile = switch_core_hash_find(globals.profile_hash, (char *) data))) {
    -			switch_log_printf(SWITCH_CHANNEL_LOG, SWITCH_LOG_DEBUG, "Deleting unused profile %s [%s]\n", profile->name, profile->login);
    -			destroy_profile(profile->name);
    -		}
    -	}
    -
    -	switch_core_hash_destroy(&name_hash);
    -
    -	return SWITCH_STATUS_SUCCESS;
    -}
    -
    -static switch_status_t load_config(void)
    -{
    -	char *cf = "dingaling.conf";
    -	mdl_profile_t *profile = NULL;
    -	switch_xml_t cfg, xml, settings, param, xmlint;
    -
    -	memset(&globals, 0, sizeof(globals));
    -	globals.running = 1;
    -	globals.auto_nat = (switch_nat_get_type() ? 1 : 0);
    -
    -	switch_find_local_ip(globals.guess_ip, sizeof(globals.guess_ip), NULL, AF_INET);
    -
    -	switch_core_hash_init(&globals.profile_hash);
    -
    -	if (!(xml = switch_xml_open_cfg(cf, &cfg, NULL))) {
    -		switch_log_printf(SWITCH_CHANNEL_LOG, SWITCH_LOG_ERROR, "Open of %s failed\n", cf);
    -		return SWITCH_STATUS_TERM;
    -	}
    -
    -	if ((settings = switch_xml_child(cfg, "settings"))) {
    -		for (param = switch_xml_child(settings, "param"); param; param = param->next) {
    -			char *var = (char *) switch_xml_attr_soft(param, "name");
    -			char *val = (char *) switch_xml_attr_soft(param, "value");
    -
    -			if (!strcasecmp(var, "debug")) {
    -				globals.debug = atoi(val);
    -			} else if (!strcasecmp(var, "codec-prefs")) {
    -				set_global_codec_string(val);
    -				globals.codec_order_last = switch_separate_string(globals.codec_string, ',', globals.codec_order, SWITCH_MAX_CODECS);
    -			} else if (!strcasecmp(var, "codec-rates")) {
    -				set_global_codec_rates_string(val);
    -				globals.codec_rates_last = switch_separate_string(globals.codec_rates_string, ',', globals.codec_rates, SWITCH_MAX_CODECS);
    -			}
    -		}
    -	}
    -
    -	if (!(xmlint = switch_xml_child(cfg, "profile"))) {
    -		if ((xmlint = switch_xml_child(cfg, "interface"))) {
    -			switch_log_printf(SWITCH_CHANNEL_LOG, SWITCH_LOG_WARNING, "!!!!!!! DEPRICATION WARNING 'interface' is now 'profile' !!!!!!!\n");
    -		}
    -	}
    -
    -	for (; xmlint; xmlint = xmlint->next) {
    -		char *type = (char *) switch_xml_attr_soft(xmlint, "type");
    -		for (param = switch_xml_child(xmlint, "param"); param; param = param->next) {
    -			char *var = (char *) switch_xml_attr_soft(param, "name");
    -			char *val = (char *) switch_xml_attr_soft(param, "value");
    -
    -			if (!globals.init) {
    -				ldl_global_init(globals.debug);
    -				ldl_global_set_logger(dl_logger);
    -				globals.init = 1;
    -			}
    -
    -			if (!profile) {
    -				profile = switch_core_alloc(module_pool, sizeof(*profile));
    -			}
    -
    -			set_profile_val(profile, var, val);
    -		}
    -
    -
    -		if (profile && type && !strcasecmp(type, "component")) {
    -			char dbname[256];
    -			switch_cache_db_handle_t *dbh = NULL;
    -
    -			if (!profile->login && profile->name) {
    -				profile->login = switch_core_strdup(module_pool, profile->name);
    -			}
    -
    -			switch_set_flag(profile, TFLAG_AUTO);
    -			profile->message = "";
    -			profile->priority = "";
    -			profile->user_flags |= LDL_FLAG_COMPONENT;
    -			switch_mutex_init(&profile->mutex, SWITCH_MUTEX_NESTED, module_pool);
    -			switch_snprintf(dbname, sizeof(dbname), "dingaling_%s", profile->name);
    -			profile->dbname = switch_core_strdup(module_pool, dbname);
    -
    -
    -			if ((dbh = mdl_get_db_handle(profile))) {
    -				switch_cache_db_test_reactive(dbh, "select * from jabber_subscriptions", NULL, sub_sql);
    -				switch_cache_db_release_db_handle(&dbh);
    -			}
    -		}
    -
    -		if (profile) {
    -			init_profile(profile, switch_test_flag(profile, TFLAG_AUTO) ? 1 : 0);
    -			profile = NULL;
    -		}
    -	}
    -
    -	if (profile) {
    -		init_profile(profile, switch_test_flag(profile, TFLAG_AUTO) ? 1 : 0);
    -		profile = NULL;
    -	}
    -
    -	if (!globals.dialplan) {
    -		set_global_dialplan("default");
    -	}
    -
    -	if (!globals.init) {
    -		ldl_global_init(globals.debug);
    -		ldl_global_set_logger(dl_logger);
    -		globals.init = 1;
    -	}
    -
    -
    -	switch_xml_free(xml);
    -
    -	return SWITCH_STATUS_SUCCESS;
    -}
    -
    -
    -static void do_vcard(ldl_handle_t *handle, char *to, char *from, char *id)
    -{
    -	switch_event_t *params = NULL;
    -	char *real_to, *to_user, *xmlstr = NULL, *to_host = NULL;
    -	switch_xml_t domain, xml = NULL, user, vcard;
    -	int sent = 0;
    -
    -	if (!strncasecmp(to, "user+", 5)) {
    -		real_to = to + 5;
    -	} else {
    -		real_to = to;
    -	}
    -
    -
    -	if ((to_user = strdup(real_to))) {
    -		if ((to_host = strchr(to_user, '@'))) {
    -			*to_host++ = '\0';
    -		}
    -	} else {
    -		switch_log_printf(SWITCH_CHANNEL_LOG, SWITCH_LOG_CRIT, "Memory Error!\n");
    -		goto end;
    -	}
    -
    -	if (!to_host) {
    -		switch_log_printf(SWITCH_CHANNEL_LOG, SWITCH_LOG_CRIT, "Missing Host!\n");
    -		goto end;
    -	}
    -
    -	switch_event_create(¶ms, SWITCH_EVENT_REQUEST_PARAMS);
    -	switch_assert(params);
    -	switch_event_add_header(params, SWITCH_STACK_BOTTOM, "to", "%s@%s", to_user, to_host);
    -	switch_event_add_header_string(params, SWITCH_STACK_BOTTOM, "from", from);
    -	switch_event_add_header_string(params, SWITCH_STACK_BOTTOM, "object", "vcard");
    -
    -	if (switch_xml_locate("directory", "domain", "name", to_host, &xml, &domain, params, SWITCH_FALSE) != SWITCH_STATUS_SUCCESS) {
    -		//switch_log_printf(SWITCH_CHANNEL_LOG, SWITCH_LOG_ERROR, "can't find domain for [%s@%s]\n", to_user, to_host);
    -		goto end;
    -	}
    -
    -	if (!(user = switch_xml_find_child(domain, "user", "id", to_user))) {
    -		//switch_log_printf(SWITCH_CHANNEL_LOG, SWITCH_LOG_WARNING, "can't find user [%s@%s]\n", to_user, to_host);
    -		goto end;
    -	}
    -
    -	if (!(vcard = switch_xml_child(user, "vcard"))) {
    -		//switch_log_printf(SWITCH_CHANNEL_LOG, SWITCH_LOG_WARNING, "can't find  tag for user [%s@%s]\n", to_user, to_host);
    -		goto end;
    -	}
    -
    -	switch_xml_set_attr(vcard, "xmlns", "vcard-tmp");
    -
    -	if ((xmlstr = switch_xml_toxml(vcard, SWITCH_FALSE))) {
    -		ldl_handle_send_vcard(handle, to, from, id, xmlstr);
    -		sent = 1;
    -	} else {
    -		switch_log_printf(SWITCH_CHANNEL_LOG, SWITCH_LOG_CRIT, "Memory Error!\n");
    -	}
    -
    -  end:
    -
    -	switch_event_destroy(¶ms);
    -
    -	if (!sent) {
    -		ldl_handle_send_vcard(handle, to, from, id, NULL);
    -	}
    -
    -	if (xml)
    -		switch_xml_free(xml);
    -	switch_safe_free(to_user);
    -	switch_safe_free(params);
    -	switch_safe_free(xmlstr);
    -}
    -
    -static ldl_status parse_candidates(ldl_session_t *dlsession, switch_core_session_t *session, ldl_transport_type_t ttype, const char *subject)
    -{
    -
    -	ldl_candidate_t *candidates;
    -	unsigned int len = 0;
    -	unsigned int x, choice = 0, ok = 0;
    -	uint8_t lanaddr = 0;
    -	struct private_object *tech_pvt = NULL;
    -	ldl_status status = LDL_STATUS_SUCCESS;
    -
    -	if (!(tech_pvt = switch_core_session_get_private(session))) {
    -		return LDL_STATUS_FALSE;
    -	}
    -
    -	if (ldl_session_get_candidates(dlsession, ttype, &candidates, &len) != LDL_STATUS_SUCCESS) {
    -		switch_log_printf(SWITCH_CHANNEL_SESSION_LOG(session), SWITCH_LOG_DEBUG, "Candidate Error!\n");
    -		switch_set_flag(tech_pvt, TFLAG_BYE);
    -		switch_clear_flag(tech_pvt, TFLAG_IO);
    -		status = LDL_STATUS_FALSE;
    -		goto end;
    -	}
    -
    -
    -	tech_pvt->transports[ttype].total = len;
    -
    -	switch_log_printf(SWITCH_CHANNEL_SESSION_LOG(session), SWITCH_LOG_DEBUG, "%u %s candidates\n", len, ldl_transport_type_str(ttype));
    -
    -	if (tech_pvt->profile->acl_count) {
    -		for (x = 0; x < len; x++) {
    -			uint32_t y = 0;
    -
    -			if (strcasecmp(candidates[x].protocol, "udp")) {
    -				switch_log_printf(SWITCH_CHANNEL_SESSION_LOG(session), SWITCH_LOG_DEBUG, "candidate %s:%d has an unsupported protocol!\n",
    -								  candidates[x].address, candidates[x].port);
    -				continue;
    -			}
    -
    -			for (y = 0; y < tech_pvt->profile->acl_count; y++) {
    -
    -				if (switch_check_network_list_ip(candidates[x].address, tech_pvt->profile->acl[y])) {
    -					choice = x;
    -					ok = 1;
    -				}
    -
    -				if (ok) {
    -					switch_log_printf(SWITCH_CHANNEL_SESSION_LOG(session), SWITCH_LOG_DEBUG, "candidate %s:%d PASS ACL %s\n",
    -									  candidates[x].address, candidates[x].port, tech_pvt->profile->acl[y]);
    -					goto end_candidates;
    -				} else {
    -					switch_log_printf(SWITCH_CHANNEL_SESSION_LOG(session), SWITCH_LOG_DEBUG, "candidate %s:%d FAIL ACL %s\n",
    -									  candidates[x].address, candidates[x].port, tech_pvt->profile->acl[y]);
    -				}
    -			}
    -		}
    -	} else {
    -		for (x = 0; x < len; x++) {
    -
    -
    -			if (tech_pvt->profile->lanaddr) {
    -				lanaddr = strncasecmp(candidates[x].address, tech_pvt->profile->lanaddr, strlen(tech_pvt->profile->lanaddr)) ? 0 : 1;
    -			}
    -
    -			switch_log_printf(SWITCH_CHANNEL_SESSION_LOG(session), SWITCH_LOG_DEBUG, "%s candidates %s:%d\n",
    -							  ldl_transport_type_str(ttype), candidates[x].address,
    -							  candidates[x].port);
    -
    -
    -			// 192.0.0.0 - 192.0.127.255 is marked as reserved, should we filter all of them?
    -			if (!strcasecmp(candidates[x].protocol, "udp") &&
    -				(!strcasecmp(candidates[x].type, "local") || !strcasecmp(candidates[x].type, "stun") || !strcasecmp(candidates[x].type, "relay")) &&
    -				((tech_pvt->profile->lanaddr &&
    -				  lanaddr) || (strncasecmp(candidates[x].address, "10.", 3) &&
    -							   strncasecmp(candidates[x].address, "192.168.", 8) &&
    -							   strncasecmp(candidates[x].address, "127.", 4) &&
    -							   strncasecmp(candidates[x].address, "255.", 4) &&
    -							   strncasecmp(candidates[x].address, "0.", 2) &&
    -							   strncasecmp(candidates[x].address, "1.", 2) &&
    -							   strncasecmp(candidates[x].address, "2.", 2) &&
    -							   strncasecmp(candidates[x].address, "172.16.", 7) &&
    -							   strncasecmp(candidates[x].address, "172.17.", 7) &&
    -							   strncasecmp(candidates[x].address, "172.18.", 7) &&
    -							   strncasecmp(candidates[x].address, "172.19.", 7) &&
    -							   strncasecmp(candidates[x].address, "172.2", 5) &&
    -							   strncasecmp(candidates[x].address, "172.30.", 7) &&
    -							   strncasecmp(candidates[x].address, "172.31.", 7) &&
    -							   strncasecmp(candidates[x].address, "192.0.2.", 8) && strncasecmp(candidates[x].address, "169.254.", 8)
    -							   ))) {
    -				choice = x;
    -				ok = 1;
    -			}
    -		}
    -	}
    -
    -
    - end_candidates:
    -
    -	if (ok) {
    -		ldl_payload_t payloads[5];
    -		char *key;
    -		switch_log_printf(SWITCH_CHANNEL_SESSION_LOG(session), SWITCH_LOG_DEBUG,
    -						  "Acceptable %s Candidate %s:%d\n", ldl_transport_type_str(ttype), candidates[choice].address, candidates[choice].port);
    -
    -
    -		if (tech_pvt->transports[ttype].accepted) {
    -			switch_log_printf(SWITCH_CHANNEL_SESSION_LOG(session), SWITCH_LOG_DEBUG, "Already Accepted [%s:%d]\n",
    -							  tech_pvt->transports[ttype].remote_ip, tech_pvt->transports[ttype].remote_port);
    -			//goto end;
    -		}
    -
    -
    -		if (tech_pvt->transports[ttype].remote_ip) {
    -			switch_log_printf(SWITCH_CHANNEL_SESSION_LOG(session), SWITCH_LOG_DEBUG, "Already picked an IP [%s]\n", tech_pvt->transports[ttype].remote_ip);
    -			//goto end;
    -		}
    -
    -
    -		memset(payloads, 0, sizeof(payloads));
    -
    -		tech_pvt->transports[ttype].accepted++;
    -
    -		if (ttype == LDL_TPORT_VIDEO_RTP) {
    -			if ((key = ldl_session_get_value(dlsession, "video:crypto:1"))) {
    -				mdl_add_crypto(tech_pvt, ttype, key, SWITCH_RTP_CRYPTO_RECV);
    -			} else {
    -				tech_pvt->transports[ttype].crypto_type = 0;
    -			}
    -		} else if (ttype == LDL_TPORT_RTP) {
    -			if ((key = ldl_session_get_value(dlsession, "audio:crypto:1"))) {
    -				mdl_add_crypto(tech_pvt, ttype, key, SWITCH_RTP_CRYPTO_RECV);
    -			} else {
    -				tech_pvt->transports[ttype].crypto_type = 0;
    -			}
    -		}
    -
    -		if (!switch_test_flag(tech_pvt, TFLAG_OUTBOUND)) {
    -			switch_set_flag_locked(tech_pvt, TFLAG_TRANSPORT_ACCEPT);
    -			//ldl_session_accept_candidate(dlsession, &candidates[choice]);
    -		}
    -
    -		if (!strcasecmp(subject, "candidates")) {
    -			//switch_set_flag_locked(tech_pvt, TFLAG_TRANSPORT_ACCEPT);
    -			switch_set_flag_locked(tech_pvt, TFLAG_ANSWER);
    -		}
    -
    -		if (lanaddr) {
    -			switch_set_flag_locked(tech_pvt, TFLAG_LANADDR);
    -		}
    -
    -		if (!get_codecs(tech_pvt)) {
    -			terminate_session(&session, __LINE__, SWITCH_CAUSE_DESTINATION_OUT_OF_ORDER);
    -			status = LDL_STATUS_FALSE;
    -			goto end;
    -		}
    -
    -
    -		tech_pvt->transports[ttype].remote_ip = switch_core_session_strdup(session, candidates[choice].address);
    -		ldl_session_set_ip(dlsession, tech_pvt->transports[ttype].remote_ip);
    -		tech_pvt->transports[ttype].remote_port = candidates[choice].port;
    -		tech_pvt->transports[ttype].remote_user = switch_core_session_strdup(session, candidates[choice].username);
    -		tech_pvt->transports[ttype].remote_pass = switch_core_session_strdup(session, candidates[choice].password);
    -
    -		if (!switch_test_flag(tech_pvt, TFLAG_OUTBOUND)) {
    -			if (!do_candidates(tech_pvt, 0)) {
    -				terminate_session(&session, __LINE__, SWITCH_CAUSE_DESTINATION_OUT_OF_ORDER);
    -				status = LDL_STATUS_FALSE;
    -
    -				goto end;
    -			}
    -		}
    -
    -		if (!switch_test_flag(tech_pvt, TFLAG_OUTBOUND)) {
    -
    -			if (tech_pvt->transports[LDL_TPORT_VIDEO_RTP].accepted &&
    -				tech_pvt->transports[LDL_TPORT_VIDEO_RTCP].accepted) {
    -				activate_video_rtp(tech_pvt);
    -			}
    -
    -
    -			if (tech_pvt->transports[LDL_TPORT_RTP].accepted &&
    -				tech_pvt->transports[LDL_TPORT_RTCP].accepted) {
    -				activate_audio_rtp(tech_pvt);
    -			}
    -
    -
    -			tech_pvt->transports[ttype].restart_rtp++;
    -		}
    -
    -
    -		status = LDL_STATUS_SUCCESS;
    -	}
    -
    - end:
    -
    -	return status;
    -
    -}
    -
    -
    -static ldl_status parse_payloads_type(ldl_session_t *dlsession, switch_core_session_t *session,
    -										ldl_transport_type_t ttype, ldl_payload_t *payloads, unsigned int len)
    -{
    -	struct private_object *tech_pvt = NULL;
    -	ldl_status status = LDL_STATUS_SUCCESS;
    -	unsigned int x, y;
    -	int match = 0;
    -
    -	tech_pvt = switch_core_session_get_private(session);
    -
    -	switch_log_printf(SWITCH_CHANNEL_SESSION_LOG(session), SWITCH_LOG_DEBUG, "%u payloads\n", len);
    -	for (x = 0; x < len; x++) {
    -		switch_log_printf(SWITCH_CHANNEL_SESSION_LOG(session), SWITCH_LOG_DEBUG, "Available Payload %s %u\n", payloads[x].name,
    -						  payloads[x].id);
    -		for (y = 0; y < tech_pvt->num_codecs; y++) {
    -			char *name = tech_pvt->codecs[y]->iananame;
    -
    -			if ((ttype == LDL_TPORT_VIDEO_RTP && tech_pvt->codecs[y]->codec_type != SWITCH_CODEC_TYPE_VIDEO) ||
    -				(ttype == LDL_TPORT_RTP && tech_pvt->codecs[y]->codec_type != SWITCH_CODEC_TYPE_AUDIO)) {
    -				continue;
    -			}
    -
    -			if (!strncasecmp(name, "ilbc", 4)) {
    -				name = "ilbc";
    -			}
    -			switch_log_printf(SWITCH_CHANNEL_SESSION_LOG(session), SWITCH_LOG_DEBUG, "compare %s %d/%d to %s %d/%d\n",
    -							  payloads[x].name, payloads[x].id, payloads[x].rate,
    -							  name, tech_pvt->codecs[y]->ianacode, tech_pvt->codecs[y]->samples_per_second);
    -
    -			if (tech_pvt->codecs[y]->ianacode > 95) {
    -				match = strcasecmp(name, payloads[x].name) ? 0 : 1;
    -			} else {
    -				match = (payloads[x].id == tech_pvt->codecs[y]->ianacode) ? 1 : 0;
    -			}
    -
    -			if (match && payloads[x].rate == tech_pvt->codecs[y]->samples_per_second) {
    -				tech_pvt->transports[ttype].codec_index = y;
    -				switch_log_printf(SWITCH_CHANNEL_SESSION_LOG(session), SWITCH_LOG_DEBUG, "Choosing %s Payload index %u %s %u\n",
    -								  ldl_transport_type_str(ttype),
    -								  y,
    -								  payloads[x].name, payloads[x].id);
    -				tech_pvt->transports[ttype].codec_name = tech_pvt->codecs[y]->iananame;
    -				tech_pvt->transports[ttype].codec_num = tech_pvt->codecs[y]->ianacode;
    -				tech_pvt->transports[ttype].r_codec_num = (switch_payload_t) (payloads[x].id);
    -				tech_pvt->transports[ttype].codec_rate = payloads[x].rate;
    -				tech_pvt->transports[ttype].ptime = payloads[x].ptime;
    -				tech_pvt->transports[ttype].payload_count++;
    -
    -				if (ttype == LDL_TPORT_VIDEO_RTP) {
    -					tech_pvt->transports[ttype].vid_width = payloads[x].width;
    -					tech_pvt->transports[ttype].vid_height = payloads[x].height;
    -					tech_pvt->transports[ttype].vid_rate = payloads[x].framerate;
    -				}
    -
    -				if (!switch_test_flag(tech_pvt, TFLAG_OUTBOUND)) {
    -
    -
    -					if (!do_describe(tech_pvt, 0)) {
    -						terminate_session(&session, __LINE__, SWITCH_CAUSE_DESTINATION_OUT_OF_ORDER);
    -						status = LDL_STATUS_FALSE;
    -						goto done;
    -					}
    -				}
    -				status = LDL_STATUS_SUCCESS;
    -				goto done;
    -			}
    -		}
    -	}
    -
    - done:
    -
    -	return status;
    -
    -}
    -
    -static ldl_status parse_payloads(ldl_session_t *dlsession, switch_core_session_t *session, ldl_payload_t *payloads, unsigned int len)
    -{
    -	int match = 0;
    -	struct private_object *tech_pvt = NULL;
    -	ldl_status status;
    -
    -	tech_pvt = switch_core_session_get_private(session);
    -
    -
    -	if ((status = parse_payloads_type(dlsession, session, LDL_TPORT_RTP, payloads, len)) == LDL_STATUS_SUCCESS) {
    -		match++;
    -	}
    -
    -	if (tech_pvt->transports[LDL_TPORT_VIDEO_RTP].ready) {
    -		if ((status = parse_payloads_type(dlsession, session, LDL_TPORT_VIDEO_RTP, payloads, len)) == LDL_STATUS_SUCCESS) {
    -			match++;
    -		}
    -	}
    -
    -	if (!match && !switch_test_flag(tech_pvt, TFLAG_OUTBOUND)) {
    -		if (!do_describe(tech_pvt, 0)) {
    -			terminate_session(&session, __LINE__, SWITCH_CAUSE_DESTINATION_OUT_OF_ORDER);
    -			status = LDL_STATUS_FALSE;
    -		}
    -	}
    -
    -
    -	return status;
    -
    -}
    -
    -
    -static ldl_status handle_signalling(ldl_handle_t *handle, ldl_session_t *dlsession, ldl_signal_t dl_signal, char *to, char *from, char *subject,
    -									char *msg)
    -{
    -	mdl_profile_t *profile = NULL;
    -	switch_core_session_t *session = NULL;
    -	switch_channel_t *channel = NULL;
    -	struct private_object *tech_pvt = NULL;
    -	switch_event_t *event;
    -	ldl_status status = LDL_STATUS_SUCCESS;
    -	char *sql;
    -
    -	switch_assert(handle != NULL);
    -
    -	if (!(profile = ldl_handle_get_private(handle))) {
    -		switch_log_printf(SWITCH_CHANNEL_SESSION_LOG(session), SWITCH_LOG_ERROR, "ERROR NO PROFILE!\n");
    -		status = LDL_STATUS_FALSE;
    -		goto done;
    -	}
    -
    -	if (!dlsession) {
    -		if (profile->user_flags & LDL_FLAG_COMPONENT) {
    -			switch (dl_signal) {
    -			case LDL_SIGNAL_VCARD:
    -				do_vcard(handle, to, from, subject);
    -				break;
    -			case LDL_SIGNAL_UNSUBSCRIBE:
    -
    -				if ((sql = switch_mprintf("delete from jabber_subscriptions where sub_from='%q' and sub_to='%q';", from, to))) {
    -					mdl_execute_sql(profile, sql, profile->mutex);
    -					free(sql);
    -				}
    -
    -				break;
    -
    -			case LDL_SIGNAL_SUBSCRIBE:
    -				if (profile->user_flags & LDL_FLAG_COMPONENT && ldl_jid_domcmp(from, to)) {
    -					switch_log_printf(SWITCH_CHANNEL_SESSION_LOG(session), SWITCH_LOG_ERROR, "Attempt to add presence from/to our own domain [%s][%s]\n",
    -									  from, to);
    -				} else {
    -					switch_mutex_lock(profile->mutex);
    -					if ((sql = switch_mprintf("delete from jabber_subscriptions where sub_from='%q' and sub_to='%q'", from, to))) {
    -						mdl_execute_sql(profile, sql, NULL);
    -						free(sql);
    -					}
    -					if ((sql = switch_mprintf("insert into jabber_subscriptions values('%q','%q','%q','%q');\n",
    -											  switch_str_nil(from), switch_str_nil(to), switch_str_nil(msg), switch_str_nil(subject)))) {
    -						mdl_execute_sql(profile, sql, NULL);
    -						free(sql);
    -					}
    -					switch_mutex_unlock(profile->mutex);
    -					if (is_special(to)) {
    -						ldl_handle_send_presence(profile->handle, to, from, NULL, NULL, "Click To Call", profile->avatar);
    -					} else {
    -						ldl_handle_send_presence(profile->handle, to, from, NULL, NULL, "Authenticated.\nCome to ClueCon!\nhttp://www.cluecon.com",
    -												 profile->avatar);
    -					}
    -#if 0
    -					if (is_special(to)) {
    -						if (switch_event_create(&event, SWITCH_EVENT_PRESENCE_IN) == SWITCH_STATUS_SUCCESS) {
    -							switch_event_add_header_string(event, SWITCH_STACK_BOTTOM, "proto", MDL_CHAT_PROTO);
    -							switch_event_add_header_string(event, SWITCH_STACK_BOTTOM, "login", profile->login);
    -							switch_event_add_header_string(event, SWITCH_STACK_BOTTOM, "from", to);
    -							//switch_event_add_header_string(event, SWITCH_STACK_BOTTOM, "rpid", "unknown");
    -							switch_event_add_header_string(event, SWITCH_STACK_BOTTOM, "status", "Click To Call");
    -							switch_event_fire(&event);
    -						}
    -					}
    -#endif
    -				}
    -				break;
    -			case LDL_SIGNAL_ROSTER:
    -				if (switch_event_create(&event, SWITCH_EVENT_ROSTER) == SWITCH_STATUS_SUCCESS) {
    -					switch_event_add_header_string(event, SWITCH_STACK_BOTTOM, "proto", MDL_CHAT_PROTO);
    -					switch_event_add_header_string(event, SWITCH_STACK_BOTTOM, "from", from);
    -					switch_event_fire(&event);
    -				}
    -				break;
    -			case LDL_SIGNAL_PRESENCE_PROBE:
    -				if (is_special(to)) {
    -					ldl_handle_send_presence(profile->handle, to, from, NULL, NULL, "Click To Call", profile->avatar);
    -				} else {
    -					if (switch_event_create(&event, SWITCH_EVENT_PRESENCE_PROBE) == SWITCH_STATUS_SUCCESS) {
    -						switch_event_add_header_string(event, SWITCH_STACK_BOTTOM, "proto", MDL_CHAT_PROTO);
    -						switch_event_add_header_string(event, SWITCH_STACK_BOTTOM, "login", profile->login);
    -						switch_event_add_header_string(event, SWITCH_STACK_BOTTOM, "from", from);
    -						switch_event_add_header_string(event, SWITCH_STACK_BOTTOM, "to", to);
    -						switch_event_fire(&event);
    -					}
    -				}
    -				break;
    -			case LDL_SIGNAL_PRESENCE_IN:
    -
    -				if ((sql = switch_mprintf("update jabber_subscriptions set show_pres='%q', status='%q' where sub_from='%q'",
    -										  switch_str_nil(msg), switch_str_nil(subject), switch_str_nil(from)))) {
    -					mdl_execute_sql(profile, sql, profile->mutex);
    -					free(sql);
    -				}
    -
    -				if (switch_event_create(&event, SWITCH_EVENT_PRESENCE_IN) == SWITCH_STATUS_SUCCESS) {
    -					switch_event_add_header_string(event, SWITCH_STACK_BOTTOM, "proto", MDL_CHAT_PROTO);
    -					switch_event_add_header_string(event, SWITCH_STACK_BOTTOM, "login", profile->login);
    -					switch_event_add_header_string(event, SWITCH_STACK_BOTTOM, "from", from);
    -					switch_event_add_header_string(event, SWITCH_STACK_BOTTOM, "rpid", msg);
    -					switch_event_add_header_string(event, SWITCH_STACK_BOTTOM, "status", subject);
    -					switch_event_fire(&event);
    -				}
    -
    -
    -				if (is_special(to)) {
    -					ldl_handle_send_presence(profile->handle, to, from, NULL, NULL, "Click To Call", profile->avatar);
    -				}
    -#if 0
    -				if (is_special(to)) {
    -					if (switch_event_create(&event, SWITCH_EVENT_PRESENCE_IN) == SWITCH_STATUS_SUCCESS) {
    -						switch_event_add_header_string(event, SWITCH_STACK_BOTTOM, "proto", MDL_CHAT_PROTO);
    -						switch_event_add_header_string(event, SWITCH_STACK_BOTTOM, "login", profile->login);
    -						switch_event_add_header_string(event, SWITCH_STACK_BOTTOM, "from", to);
    -						//switch_event_add_header_string(event, SWITCH_STACK_BOTTOM, "rpid", "unknown");
    -						switch_event_add_header_string(event, SWITCH_STACK_BOTTOM, "status", "Click To Call");
    -						switch_event_fire(&event);
    -					}
    -				}
    -#endif
    -				break;
    -
    -			case LDL_SIGNAL_PRESENCE_OUT:
    -
    -				if ((sql = switch_mprintf("update jabber_subscriptions set show_pres='%q', status='%q' where sub_from='%q'",
    -										  switch_str_nil(msg), switch_str_nil(subject), switch_str_nil(from)))) {
    -					mdl_execute_sql(profile, sql, profile->mutex);
    -					free(sql);
    -				}
    -				if (switch_event_create(&event, SWITCH_EVENT_PRESENCE_OUT) == SWITCH_STATUS_SUCCESS) {
    -					switch_event_add_header_string(event, SWITCH_STACK_BOTTOM, "proto", MDL_CHAT_PROTO);
    -					switch_event_add_header_string(event, SWITCH_STACK_BOTTOM, "login", profile->login);
    -					switch_event_add_header_string(event, SWITCH_STACK_BOTTOM, "from", from);
    -					switch_event_fire(&event);
    -				}
    -				break;
    -			default:
    -				break;
    -			}
    -		}
    -
    -		switch (dl_signal) {
    -		case LDL_SIGNAL_MSG:{
    -				char *proto = MDL_CHAT_PROTO;
    -				char *pproto = NULL, *ffrom = NULL;
    -				char *hint;
    -				char *from_user, *from_host;
    -#ifdef AUTO_REPLY
    -				if (profile->auto_reply) {
    -					ldl_handle_send_msg(handle,
    -										(profile->user_flags & LDL_FLAG_COMPONENT) ? to : ldl_handle_get_login(profile->handle), from, "",
    -										switch_str_nil(profile->auto_reply));
    -				}
    -#endif
    -
    -				if (strchr(to, '+')) {
    -					pproto = strdup(to);
    -					if ((to = strchr(pproto, '+'))) {
    -						*to++ = '\0';
    -					}
    -					proto = pproto;
    -				}
    -
    -				hint = from;
    -
    -				if (strchr(from, '/') && (ffrom = strdup(from))) {
    -					char *p;
    -					if ((p = strchr(ffrom, '/'))) {
    -						*p = '\0';
    -					}
    -					from = ffrom;
    -				}
    -
    -				from_user = strdup(from);
    -				if ((from_host = strchr(from_user, '@'))) {
    -					*from_host++ = '\0';
    -				}
    -
    -
    -				if (switch_event_create(&event, SWITCH_EVENT_MESSAGE) == SWITCH_STATUS_SUCCESS) {
    -					switch_event_add_header_string(event, SWITCH_STACK_BOTTOM, "proto", MDL_CHAT_PROTO);
    -					switch_event_add_header_string(event, SWITCH_STACK_BOTTOM, "from", from);
    -					switch_event_add_header_string(event, SWITCH_STACK_BOTTOM, "from_user", from_user);
    -					if (from_host) {
    -						switch_event_add_header_string(event, SWITCH_STACK_BOTTOM, "from_host", from_host);
    -					}
    -					switch_event_add_header_string(event, SWITCH_STACK_BOTTOM, "to", to);
    -					switch_event_add_header_string(event, SWITCH_STACK_BOTTOM, "subject", subject);
    -					switch_event_add_header_string(event, SWITCH_STACK_BOTTOM, "type", "text/plain");
    -					switch_event_add_header_string(event, SWITCH_STACK_BOTTOM, "hint", hint);
    -					switch_event_add_header_string(event, SWITCH_STACK_BOTTOM, "from_full", hint);
    -					switch_event_add_header_string(event, SWITCH_STACK_BOTTOM, "ldl_profile", profile->name);
    -
    -					if (msg) {
    -						switch_event_add_body(event, "%s", msg);
    -					}
    -				} else {
    -					abort();
    -				}
    -
    -				switch_safe_free(from_user);
    -
    -				if (!zstr(msg)) {
    -					if (strcasecmp(proto, MDL_CHAT_PROTO)) { /* yes no ! on purpose */
    -						switch_core_chat_send(proto, event);
    -					}
    -
    -					switch_core_chat_send("GLOBAL", event);
    -				}
    -
    -				switch_event_destroy(&event);
    -
    -				switch_safe_free(pproto);
    -				switch_safe_free(ffrom);
    -			}
    -			break;
    -		case LDL_SIGNAL_LOGIN_SUCCESS:
    -			if (switch_event_create_subclass(&event, SWITCH_EVENT_CUSTOM, DL_EVENT_LOGIN_SUCCESS) == SWITCH_STATUS_SUCCESS) {
    -				switch_event_add_header_string(event, SWITCH_STACK_BOTTOM, "login", ldl_handle_get_login(profile->handle));
    -				switch_event_fire(&event);
    -			}
    -			if (profile->user_flags & LDL_FLAG_COMPONENT) {
    -				sign_on(profile);
    -			}
    -
    -			break;
    -		case LDL_SIGNAL_LOGIN_FAILURE:
    -			if (switch_event_create_subclass(&event, SWITCH_EVENT_CUSTOM, DL_EVENT_LOGIN_FAILURE) == SWITCH_STATUS_SUCCESS) {
    -				switch_event_add_header_string(event, SWITCH_STACK_BOTTOM, "login", ldl_handle_get_login(profile->handle));
    -				switch_event_fire(&event);
    -			}
    -			break;
    -		case LDL_SIGNAL_CONNECTED:
    -			if (switch_event_create_subclass(&event, SWITCH_EVENT_CUSTOM, DL_EVENT_CONNECTED) == SWITCH_STATUS_SUCCESS) {
    -				switch_event_add_header_string(event, SWITCH_STACK_BOTTOM, "login", ldl_handle_get_login(profile->handle));
    -				switch_event_fire(&event);
    -			}
    -			break;
    -		default:
    -			break;
    -
    -		}
    -		status = LDL_STATUS_SUCCESS;
    -		goto done;
    -	}
    -
    -
    -	if ((session = ldl_session_get_private(dlsession))) {
    -		tech_pvt = switch_core_session_get_private(session);
    -		switch_assert(tech_pvt != NULL);
    -
    -		channel = switch_core_session_get_channel(session);
    -
    -		switch_log_printf(SWITCH_CHANNEL_SESSION_LOG(session), SWITCH_LOG_DEBUG, "using Existing session for %s\n", ldl_session_get_id(dlsession));
    -
    -		if (switch_channel_down(channel)) {
    -			switch_log_printf(SWITCH_CHANNEL_SESSION_LOG(session), SWITCH_LOG_DEBUG, "Call %s is already over\n", switch_channel_get_name(channel));
    -			status = LDL_STATUS_FALSE;
    -			goto done;
    -		}
    -
    -	} else {
    -		if (dl_signal != LDL_SIGNAL_INITIATE && !msg) {
    -			switch_log_printf(SWITCH_CHANNEL_SESSION_LOG(session), SWITCH_LOG_DEBUG, "Session is already dead\n");
    -			status = LDL_STATUS_FALSE;
    -			goto done;
    -		}
    -
    -		if (profile->purge) {
    -			switch_log_printf(SWITCH_CHANNEL_LOG, SWITCH_LOG_ERROR, "Profile '%s' is marked for deletion, disallowing incoming call\n", profile->name);
    -			status = LDL_STATUS_FALSE;
    -			goto done;
    -		}
    -
    -		if (switch_thread_rwlock_tryrdlock(profile->rwlock) != SWITCH_STATUS_SUCCESS) {
    -			switch_log_printf(SWITCH_CHANNEL_LOG, SWITCH_LOG_ERROR, "Can't do read lock on profile '%s'\n", profile->name);
    -			status = LDL_STATUS_FALSE;
    -			goto done;
    -		}
    -
    -		if ((session = switch_core_session_request(dingaling_endpoint_interface, SWITCH_CALL_DIRECTION_INBOUND, SOF_NONE, NULL)) != 0) {
    -			switch_core_session_add_stream(session, NULL);
    -
    -			if ((tech_pvt = (struct private_object *) switch_core_session_alloc(session, sizeof(struct private_object))) != 0) {
    -				char *exten;
    -				char *context;
    -				char *cid_name;
    -				char *cid_num;
    -				char *tmp, *t, *them = NULL;
    -
    -				memset(tech_pvt, 0, sizeof(*tech_pvt));
    -				switch_mutex_init(&tech_pvt->flag_mutex, SWITCH_MUTEX_NESTED, switch_core_session_get_pool(session));
    -				tech_pvt->flags |= globals.flags;
    -				tech_pvt->flags |= profile->flags;
    -				channel = switch_core_session_get_channel(session);
    -				switch_core_session_set_private(session, tech_pvt);
    -				tech_pvt->dlsession = dlsession;
    -
    -				tech_pvt->session = session;
    -				tech_pvt->channel = switch_core_session_get_channel(session);
    -				tech_pvt->transports[LDL_TPORT_RTP].codec_index = -1;
    -				tech_pvt->transports[LDL_TPORT_VIDEO_RTP].codec_index = -1;
    -				tech_pvt->profile = profile;
    -
    -				switch_set_flag(tech_pvt, TFLAG_SECURE);
    -				mdl_build_crypto(tech_pvt, LDL_TPORT_RTP, 1, AES_CM_128_HMAC_SHA1_80, SWITCH_RTP_CRYPTO_SEND);
    -				mdl_build_crypto(tech_pvt, LDL_TPORT_VIDEO_RTP, 1, AES_CM_128_HMAC_SHA1_80, SWITCH_RTP_CRYPTO_SEND);
    -
    -
    -				if (!(tech_pvt->transports[LDL_TPORT_RTP].local_port = switch_rtp_request_port(profile->ip))) {
    -					switch_log_printf(SWITCH_CHANNEL_SESSION_LOG(session), SWITCH_LOG_CRIT, "No RTP port available!\n");
    -					terminate_session(&session, __LINE__, SWITCH_CAUSE_DESTINATION_OUT_OF_ORDER);
    -					status = LDL_STATUS_FALSE;
    -					goto done;
    -				}
    -				tech_pvt->transports[LDL_TPORT_RTP].adv_local_port = tech_pvt->transports[LDL_TPORT_RTP].local_port;
    -				tech_pvt->transports[LDL_TPORT_RTCP].adv_local_port = tech_pvt->transports[LDL_TPORT_RTP].local_port + 1;
    -
    -				if (!(tech_pvt->transports[LDL_TPORT_VIDEO_RTP].local_port = switch_rtp_request_port(profile->ip))) {
    -					switch_log_printf(SWITCH_CHANNEL_SESSION_LOG(session), SWITCH_LOG_CRIT, "No RTP port available!\n");
    -					terminate_session(&session, __LINE__, SWITCH_CAUSE_DESTINATION_OUT_OF_ORDER);
    -					status = LDL_STATUS_FALSE;
    -					goto done;
    -				}
    -				tech_pvt->transports[LDL_TPORT_VIDEO_RTP].adv_local_port = tech_pvt->transports[LDL_TPORT_VIDEO_RTP].local_port;
    -				tech_pvt->transports[LDL_TPORT_VIDEO_RTCP].adv_local_port = tech_pvt->transports[LDL_TPORT_VIDEO_RTP].local_port + 1;
    -
    -
    -
    -				switch_set_flag_locked(tech_pvt, TFLAG_ANSWER);
    -				tech_pvt->recip = switch_core_session_strdup(session, from);
    -				if (!(exten = ldl_session_get_value(dlsession, "dnis"))) {
    -					exten = profile->exten;
    -					/* if it's _auto_ set the extension to match the username portion of the called address */
    -					if (!strcmp(exten, "_auto_")) {
    -						if ((t = ldl_session_get_callee(dlsession))) {
    -							if ((them = strdup(t))) {
    -								char *a, *b, *p;
    -								if ((p = strchr(them, '/'))) {
    -									*p = '\0';
    -								}
    -
    -								if ((a = strchr(them, '+')) && (b = strrchr(them, '+')) && a != b) {
    -									*b++ = '\0';
    -									switch_channel_set_variable(channel, "dl_user", them);
    -									switch_channel_set_variable(channel, "dl_host", b);
    -								}
    -								exten = them;
    -							}
    -						}
    -					}
    -				}
    -
    -				if (!(context = ldl_session_get_value(dlsession, "context"))) {
    -					context = profile->context;
    -				}
    -
    -				if (!(cid_name = ldl_session_get_value(dlsession, "caller_id_name"))) {
    -					cid_name = tech_pvt->recip;
    -				}
    -
    -				if (!(cid_num = ldl_session_get_value(dlsession, "caller_id_number"))) {
    -					cid_num = tech_pvt->recip;
    -				}
    -
    -
    -				if (switch_stristr("voice.google.com", from)) {
    -					char *id = switch_core_session_strdup(session, from);
    -					char *p;
    -
    -					if ((p = strchr(id, '@'))) {
    -						*p++ = '\0';
    -						cid_name = "Google Voice";
    -						cid_num = id;
    -					}
    -
    -					ldl_session_set_gateway(dlsession);
    -
    -					do_candidates(tech_pvt, 1);
    -				}
    -
    -
    -
    -				/* context of "_auto_" means set it to the domain */
    -				if (profile->context && !strcmp(profile->context, "_auto_")) {
    -					context = profile->name;
    -				}
    -
    -				tech_pvt->them = switch_core_session_strdup(session, ldl_session_get_callee(dlsession));
    -
    -				if (tech_pvt->them && (tmp = strdup(tech_pvt->them))) {
    -					char *p, *q;
    -
    -					if ((p = strchr(tmp, '@'))) {
    -						*p++ = '\0';
    -						if ((q = strchr(p, '/'))) {
    -							*q = '\0';
    -						}
    -						switch_channel_set_variable(channel, "dl_to_user", tmp);
    -						switch_channel_set_variable(channel, "dl_to_host", p);
    -					}
    -
    -					switch_safe_free(tmp);
    -				}
    -
    -				tech_pvt->us = switch_core_session_strdup(session, ldl_session_get_caller(dlsession));
    -
    -				if (tech_pvt->us && (tmp = strdup(tech_pvt->us))) {
    -					char *p, *q;
    -
    -					if ((p = strchr(tmp, '@'))) {
    -						*p++ = '\0';
    -						if ((q = strchr(p, '/'))) {
    -							*q = '\0';
    -						}
    -						switch_channel_set_variable(channel, "dl_from_user", tmp);
    -						switch_channel_set_variable(channel, "dl_from_host", p);
    -					}
    -
    -					switch_safe_free(tmp);
    -				}
    -
    -				if (!tech_pvt->caller_profile) {
    -					switch_log_printf(SWITCH_CHANNEL_SESSION_LOG(session), SWITCH_LOG_DEBUG,
    -									  "Creating an identity for %s %s <%s> %s\n", ldl_session_get_id(dlsession), cid_name, cid_num, exten);
    -
    -					if ((tech_pvt->caller_profile = switch_caller_profile_new(switch_core_session_get_pool(session),
    -																			  ldl_handle_get_login(profile->handle),
    -																			  profile->dialplan,
    -																			  cid_name,
    -																			  cid_num,
    -																			  ldl_session_get_ip(dlsession),
    -																			  ldl_session_get_value(dlsession, "ani"),
    -																			  ldl_session_get_value(dlsession, "aniii"),
    -																			  ldl_session_get_value(dlsession, "rdnis"), modname, context, exten)) != 0) {
    -						char name[128];
    -						switch_snprintf(name, sizeof(name), "dingaling/%s", tech_pvt->caller_profile->destination_number);
    -						switch_channel_set_name(channel, name);
    -						switch_channel_set_caller_profile(channel, tech_pvt->caller_profile);
    -					}
    -				}
    -
    -				switch_safe_free(them);
    -
    -				switch_set_flag_locked(tech_pvt, TFLAG_TRANSPORT_ACCEPT);
    -			} else {
    -				switch_log_printf(SWITCH_CHANNEL_SESSION_LOG(session), SWITCH_LOG_DEBUG, "Hey where is my memory pool?\n");
    -				terminate_session(&session, __LINE__, SWITCH_CAUSE_DESTINATION_OUT_OF_ORDER);
    -				status = LDL_STATUS_FALSE;
    -				goto done;
    -			}
    -			switch_log_printf(SWITCH_CHANNEL_SESSION_LOG(session), SWITCH_LOG_DEBUG, "Creating a session for %s\n", ldl_session_get_id(dlsession));
    -			ldl_session_set_private(dlsession, session);
    -
    -			switch_channel_set_name(channel, "DingaLing/new");
    -			switch_channel_set_state(channel, CS_INIT);
    -			if (switch_core_session_thread_launch(session) != SWITCH_STATUS_SUCCESS) {
    -				switch_log_printf(SWITCH_CHANNEL_SESSION_LOG(session), SWITCH_LOG_CRIT, "Error spawning thread\n");
    -				terminate_session(&session, __LINE__, SWITCH_CAUSE_DESTINATION_OUT_OF_ORDER);
    -				status = LDL_STATUS_FALSE;
    -				goto done;
    -			}
    -		} else {
    -			status = LDL_STATUS_FALSE;
    -			goto done;
    -		}
    -
    -	}
    -
    -	switch (dl_signal) {
    -	case LDL_SIGNAL_MSG:
    -		if (msg) {
    -			if (*msg == '+') {
    -				char *p = msg + 1;
    -				switch_dtmf_t dtmf = { 0, switch_core_default_dtmf_duration(0) };
    -				while (p && *p) {
    -					dtmf.digit = *p;
    -					switch_channel_queue_dtmf(channel, &dtmf);
    -					p++;
    -				}
    -				switch_set_flag_locked(tech_pvt, TFLAG_DTMF);
    -				if (switch_rtp_ready(tech_pvt->transports[LDL_TPORT_RTP].rtp_session)) {
    -					switch_rtp_set_flag(tech_pvt->transports[LDL_TPORT_RTP].rtp_session, SWITCH_RTP_FLAG_BREAK);
    -				}
    -			}
    -			switch_log_printf(SWITCH_CHANNEL_SESSION_LOG(session), SWITCH_LOG_DEBUG, "SESSION MSG [%s]\n", msg);
    -		}
    -
    -		if (switch_event_create(&event, SWITCH_EVENT_MESSAGE) == SWITCH_STATUS_SUCCESS) {
    -			char *hint = NULL, *p, *freeme = NULL;
    -
    -			hint = from;
    -			if (strchr(from, '/') && (freeme = strdup(from))) {
    -				p = strchr(freeme, '/');
    -				*p = '\0';
    -				from = freeme;
    -			}
    -
    -			switch_event_add_header_string(event, SWITCH_STACK_BOTTOM, "proto", MDL_CHAT_PROTO);
    -			switch_event_add_header_string(event, SWITCH_STACK_BOTTOM, "login", ldl_handle_get_login(profile->handle));
    -			switch_event_add_header_string(event, SWITCH_STACK_BOTTOM, "hint", hint);
    -			switch_event_add_header_string(event, SWITCH_STACK_BOTTOM, "from", from);
    -			switch_event_add_header_string(event, SWITCH_STACK_BOTTOM, "to", to);
    -			switch_event_add_header_string(event, SWITCH_STACK_BOTTOM, "subject", subject);
    -			if (msg) {
    -				switch_event_add_body(event, "%s", msg);
    -			}
    -			if (switch_core_session_queue_event(tech_pvt->session, &event) != SWITCH_STATUS_SUCCESS) {
    -				switch_event_add_header_string(event, SWITCH_STACK_BOTTOM, "delivery-failure", "true");
    -				switch_event_fire(&event);
    -			}
    -
    -			switch_safe_free(freeme);
    -		}
    -		break;
    -	case LDL_SIGNAL_TRANSPORT_ACCEPT:
    -		switch_set_flag_locked(tech_pvt, TFLAG_TRANSPORT_ACCEPT);
    -
    -		if (ldl_session_gateway(dlsession)) {
    -			do_candidates(tech_pvt, 1);
    -		}
    -
    -		break;
    -	case LDL_SIGNAL_INITIATE:
    -		if (dl_signal) {
    -			ldl_payload_t *payloads;
    -			unsigned int len = 0;
    -
    -			if (switch_test_flag(tech_pvt, TFLAG_OUTBOUND)) {
    -				if (msg && !strcasecmp(msg, "accept")) {
    -					switch_set_flag_locked(tech_pvt, TFLAG_ANSWER);
    -					switch_set_flag_locked(tech_pvt, TFLAG_TRANSPORT_ACCEPT);
    -					if (!do_candidates(tech_pvt, 0)) {
    -						terminate_session(&session, __LINE__, SWITCH_CAUSE_DESTINATION_OUT_OF_ORDER);
    -						status = LDL_STATUS_FALSE;
    -						goto done;
    -					}
    -				}
    -			}
    -
    -			if (tech_pvt->transports[LDL_TPORT_RTP].codec_index > -1) {
    -				switch_log_printf(SWITCH_CHANNEL_SESSION_LOG(session), SWITCH_LOG_DEBUG, "Already decided on a codec\n");
    -				break;
    -			}
    -
    -
    -			if (!get_codecs(tech_pvt)) {
    -				terminate_session(&session, __LINE__, SWITCH_CAUSE_DESTINATION_OUT_OF_ORDER);
    -				status = LDL_STATUS_FALSE;
    -				goto done;
    -			}
    -
    -			if (ldl_session_get_payloads(dlsession, &payloads, &len) == LDL_STATUS_SUCCESS) {
    -				status = parse_payloads(dlsession, session, payloads, len);
    -				goto done;
    -			}
    -
    -		}
    -
    -		break;
    -	case LDL_SIGNAL_CANDIDATES:
    -		if (dl_signal) {
    -			parse_candidates(dlsession, session, LDL_TPORT_RTP, subject);
    -			parse_candidates(dlsession, session, LDL_TPORT_VIDEO_RTP, subject);
    -			parse_candidates(dlsession, session, LDL_TPORT_RTCP, subject);
    -			status = parse_candidates(dlsession, session, LDL_TPORT_VIDEO_RTCP, subject);
    -		}
    -
    -		break;
    -	case LDL_SIGNAL_REJECT:
    -		if (channel) {
    -			switch_log_printf(SWITCH_CHANNEL_SESSION_LOG(session), SWITCH_LOG_DEBUG, "reject %s\n", switch_channel_get_name(channel));
    -			terminate_session(&session, __LINE__, SWITCH_CAUSE_CALL_REJECTED);
    -			switch_log_printf(SWITCH_CHANNEL_SESSION_LOG(session), SWITCH_LOG_DEBUG, "End Call (Rejected)\n");
    -			goto done;
    -		}
    -		break;
    -	case LDL_SIGNAL_REDIRECT:
    -		do_describe(tech_pvt, 1);
    -		tech_pvt->next_cand = switch_micro_time_now();
    -		if (channel) switch_channel_mark_ring_ready(channel);
    -		break;
    -
    -	case LDL_SIGNAL_ERROR:
    -	case LDL_SIGNAL_TERMINATE:
    -		if (channel) {
    -			switch_log_printf(SWITCH_CHANNEL_SESSION_LOG(session), SWITCH_LOG_DEBUG, "hungup %s\n", switch_channel_get_name(channel));
    -			terminate_session(&session, __LINE__, SWITCH_CAUSE_NORMAL_CLEARING);
    -			switch_log_printf(SWITCH_CHANNEL_SESSION_LOG(session), SWITCH_LOG_DEBUG, "End Call\n");
    -			goto done;
    -		}
    -		break;
    -
    -	default:
    -		switch_log_printf(SWITCH_CHANNEL_SESSION_LOG(session), SWITCH_LOG_ERROR, "ERROR\n");
    -		break;
    -	}
    -
    -
    -  done:
    -
    -
    -	return status;
    -}
    -
    -static ldl_status handle_response(ldl_handle_t *handle, char *id)
    -{
    -	return LDL_STATUS_SUCCESS;
    -}
    -
    -/* For Emacs:
    - * Local Variables:
    - * mode:c
    - * indent-tabs-mode:t
    - * tab-width:4
    - * c-basic-offset:4
    - * End:
    - * For VIM:
    - * vim:set softtabstop=4 shiftwidth=4 tabstop=4 noet:
    - */
    diff --git a/src/mod/endpoints/mod_portaudio/mod_portaudio.c b/src/mod/endpoints/mod_portaudio/mod_portaudio.c
    index 0e24faef163..62eba524d3b 100644
    --- a/src/mod/endpoints/mod_portaudio/mod_portaudio.c
    +++ b/src/mod/endpoints/mod_portaudio/mod_portaudio.c
    @@ -2962,7 +2962,6 @@ static switch_status_t list_calls(char **argv, int argc, switch_stream_handle_t
     static switch_status_t place_call(char **argv, int argc, switch_stream_handle_t *stream)
     {
     	switch_core_session_t *session;
    -	switch_status_t status = SWITCH_STATUS_SUCCESS;
     	char *dest = NULL;
     
     	if (zstr(argv[0])) {
    @@ -3025,7 +3024,7 @@ static switch_status_t place_call(char **argv, int argc, switch_stream_handle_t
     			switch_channel_set_caller_profile(channel, tech_pvt->caller_profile);
     		}
     		tech_pvt->session = session;
    -		if ((status = validate_main_audio_stream()) == SWITCH_STATUS_SUCCESS) {
    +		if (validate_main_audio_stream() == SWITCH_STATUS_SUCCESS) {
     			switch_set_flag_locked(tech_pvt, TFLAG_ANSWER);
     			switch_channel_mark_answered(channel);
     			switch_channel_set_state(channel, CS_INIT);
    diff --git a/src/mod/endpoints/mod_skinny/mod_skinny.c b/src/mod/endpoints/mod_skinny/mod_skinny.c
    index 3df1290047d..c6cfc716c7c 100644
    --- a/src/mod/endpoints/mod_skinny/mod_skinny.c
    +++ b/src/mod/endpoints/mod_skinny/mod_skinny.c
    @@ -2056,7 +2056,7 @@ static void *SWITCH_THREAD_FUNC skinny_profile_run(switch_thread_t *thread, void
     
     		assert(profile->sock);
     
    -		if ((rv = switch_socket_accept(&inbound_socket, profile->sock, listener_pool))) {
    +		if (switch_socket_accept(&inbound_socket, profile->sock, listener_pool)) {
     			if (!skinny_globals.running) {
     				switch_log_printf(SWITCH_CHANNEL_LOG, SWITCH_LOG_NOTICE, "Shutting Down\n");
     				goto end;
    diff --git a/src/mod/endpoints/mod_sofia/mod_sofia.c b/src/mod/endpoints/mod_sofia/mod_sofia.c
    index a3a6cd8e919..97f735189dc 100644
    --- a/src/mod/endpoints/mod_sofia/mod_sofia.c
    +++ b/src/mod/endpoints/mod_sofia/mod_sofia.c
    @@ -918,7 +918,7 @@ static switch_status_t sofia_answer_channel(switch_core_session_t *session)
     	}
     
     	if (sofia_test_flag(tech_pvt, TFLAG_NAT) ||
    -		(val = switch_channel_get_variable(channel, "sip-force-contact")) ||
    +		switch_channel_get_variable(channel, "sip-force-contact") ||
     		((val = switch_channel_get_variable(channel, "sip_sticky_contact")) && switch_true(val))) {
     		sticky = tech_pvt->record_route;
     		session_timeout = SOFIA_NAT_SESSION_TIMEOUT;
    @@ -2070,6 +2070,7 @@ static switch_status_t sofia_receive_message(switch_core_session_t *session, swi
     									  (switch_stristr("cisco/spa50", ua) ||
     									  switch_stristr("cisco/spa525", ua)) ||
     									  switch_stristr("cisco/spa30", ua) ||
    +									  switch_stristr("Fanvil", ua) ||
     									  switch_stristr("Grandstream", ua) ||
     									  switch_stristr("Yealink", ua) ||
     									  switch_stristr("Mitel", ua) ||
    @@ -2614,7 +2615,7 @@ static switch_status_t sofia_receive_message(switch_core_session_t *session, swi
     
     
     				if (sofia_test_flag(tech_pvt, TFLAG_NAT) ||
    -					(val = switch_channel_get_variable(channel, "sip-force-contact")) ||
    +					switch_channel_get_variable(channel, "sip-force-contact") ||
     					((val = switch_channel_get_variable(channel, "sip_sticky_contact")) && switch_true(val))) {
     					sticky = tech_pvt->record_route;
     					switch_channel_set_variable(channel, "sip_nat_detected", "true");
    @@ -2936,9 +2937,9 @@ static switch_status_t cmd_status(char **argv, int argc, switch_stream_handle_t
     												   gp->ib_failed_calls, gp->ib_calls, gp->ob_failed_calls, gp->ob_calls);
     							free(pkey);
     
    -							if (gp->state == REG_STATE_FAILED || gp->state == REG_STATE_TRYING) {
    +							if (gp->state == REG_STATE_FAILED || gp->state == REG_STATE_FAIL_WAIT || gp->state == REG_STATE_TRYING) {
     								time_t now = switch_epoch_time_now(NULL);
    -								if (gp->reg_timeout > now) {
    +								if (gp->reg_timeout >= now) {
     									stream->write_function(stream, " (retry: %ds)", gp->reg_timeout - now);
     								} else {
     									stream->write_function(stream, " (retry: NEVER)");
    @@ -3186,9 +3187,9 @@ static switch_status_t cmd_status(char **argv, int argc, switch_stream_handle_t
     					stream->write_function(stream, "%25s\t%s\t  %40s\t%s", pkey, "gateway", gp->register_to, sofia_state_names[gp->state]);
     					free(pkey);
     
    -					if (gp->state == REG_STATE_FAILED || gp->state == REG_STATE_TRYING) {
    +					if (gp->state == REG_STATE_FAILED || gp->state == REG_STATE_FAIL_WAIT || gp->state == REG_STATE_TRYING) {
     						time_t now = switch_epoch_time_now(NULL);
    -						if (gp->retry > now) {
    +						if (gp->retry >= now) {
     							stream->write_function(stream, " (retry: %ds)", gp->retry - now);
     						} else {
     							stream->write_function(stream, " (retry: NEVER)");
    @@ -3240,9 +3241,9 @@ static void xml_gateway_status(sofia_gateway_t *gp, switch_stream_handle_t *stre
     	stream->write_function(stream, "    %u\n", gp->ib_failed_calls);
     	stream->write_function(stream, "    %u\n", gp->ob_failed_calls);
     
    -	if (gp->state == REG_STATE_FAILED || gp->state == REG_STATE_TRYING) {
    +	if (gp->state == REG_STATE_FAILED || gp->state == REG_STATE_FAIL_WAIT || gp->state == REG_STATE_TRYING) {
     		time_t now = switch_epoch_time_now(NULL);
    -		if (gp->retry > now) {
    +		if (gp->retry >= now) {
     			stream->write_function(stream, "    %ds\n", gp->retry - now);
     		} else {
     			stream->write_function(stream, "    NEVER\n");
    @@ -3503,9 +3504,9 @@ static switch_status_t cmd_xml_status(char **argv, int argc, switch_stream_handl
     					switch_assert(gp->state < REG_STATE_LAST);
     					stream->write_function(stream, "\n%s\n%s\n%s\n%s\n\n",
     										   gp->name, "gateway", gp->register_to, sofia_state_names[gp->state]);
    -					if (gp->state == REG_STATE_FAILED || gp->state == REG_STATE_TRYING) {
    +					if (gp->state == REG_STATE_FAILED || gp->state == REG_STATE_FAIL_WAIT || gp->state == REG_STATE_TRYING) {
     						time_t now = switch_epoch_time_now(NULL);
    -						if (gp->retry > now) {
    +						if (gp->retry >= now) {
     							stream->write_function(stream, " (retry: %ds)", gp->retry - now);
     						} else {
     							stream->write_function(stream, " (retry: NEVER)");
    @@ -4388,7 +4389,6 @@ SWITCH_STANDARD_API(sofia_gateway_data_function)
     {
     	char *argv[4];
     	char *mydata;
    -	int argc;
     	sofia_gateway_t *gateway;
     	char *gwname, *param, *varname;
     	const char *val = NULL;
    @@ -4401,7 +4401,7 @@ SWITCH_STANDARD_API(sofia_gateway_data_function)
     		return SWITCH_STATUS_FALSE;
     	}
     
    -	if (!(argc = switch_separate_string(mydata, ' ', argv, (sizeof(argv) / sizeof(argv[0])))) || !argv[0]) {
    +	if (!switch_separate_string(mydata, ' ', argv, (sizeof(argv) / sizeof(argv[0]))) || !argv[0]) {
     		goto end;
     	}
     
    @@ -4678,7 +4678,7 @@ static int protect_dest_uri(switch_caller_profile_t *cp)
     	switch_size_t enclen = 0;
     	int mod = 0;
     
    -	if (!(e = strchr(p, '@'))) {
    +	if (!strchr(p, '@')) {
     		return 0;
     	}
     
    @@ -6140,7 +6140,12 @@ static switch_status_t sofia_stir_shaken_vs_create(stir_shaken_context_t *contex
     		return SWITCH_STATUS_FALSE;
     	}
     	if (mod_sofia_globals.stir_shaken_vs_ca_dir) {
    -		stir_shaken_vs_load_ca_dir(context, sofia_stir_shaken_vs, mod_sofia_globals.stir_shaken_vs_ca_dir);
    +		if (stir_shaken_vs_load_ca_dir(context, sofia_stir_shaken_vs, mod_sofia_globals.stir_shaken_vs_ca_dir) != STIR_SHAKEN_STATUS_OK) {
    +			switch_log_printf(SWITCH_CHANNEL_LOG, SWITCH_LOG_ERROR, "Failed to load trusted root certificates from %s\n", mod_sofia_globals.stir_shaken_vs_ca_dir);
    +			return SWITCH_STATUS_FALSE;
    +		} else {
    +			switch_log_printf(SWITCH_CHANNEL_LOG, SWITCH_LOG_INFO, "Loaded trusted root certificates from %s\n", mod_sofia_globals.stir_shaken_vs_ca_dir);
    +		}
     	}
     	stir_shaken_vs_set_x509_cert_path_check(context, sofia_stir_shaken_vs, mod_sofia_globals.stir_shaken_vs_cert_path_check);
     	stir_shaken_vs_set_connect_timeout(context, sofia_stir_shaken_vs, 3);
    @@ -6795,7 +6800,7 @@ SWITCH_MODULE_LOAD_FUNCTION(mod_sofia_load)
     	SWITCH_ADD_API(api_interface, "sofia", "Sofia Controls", sofia_function, " ");
     	SWITCH_ADD_API(api_interface, "sofia_gateway_data", "Get data from a sofia gateway", sofia_gateway_data_function, " [ivar|ovar|var] ");
     	switch_console_set_complete("add sofia ::[help:status");
    -	switch_console_set_complete("add sofia status profile ::sofia::list_profiles reg");
    +	switch_console_set_complete("add sofia status profile ::sofia::list_profiles ::[reg:user:pres");
     	switch_console_set_complete("add sofia status gateway ::sofia::list_gateways");
     
     	switch_console_set_complete("add sofia loglevel ::[all:default:tport:iptsec:nea:nta:nth_client:nth_server:nua:soa:sresolv:stun ::[0:1:2:3:4:5:6:7:8:9");
    diff --git a/src/mod/endpoints/mod_sofia/mod_sofia.h b/src/mod/endpoints/mod_sofia/mod_sofia.h
    index 3408b7ca0bf..34ca3d66e47 100644
    --- a/src/mod/endpoints/mod_sofia/mod_sofia.h
    +++ b/src/mod/endpoints/mod_sofia/mod_sofia.h
    @@ -57,6 +57,8 @@
     #define HAVE_FUNC 1
     #endif
     
    +#define ROUTE_MAX_HEADERS 20
    +#define ROUTE_ENCODED_HEADER_MAX_CHARS (1024 * 3)
     #define MAX_CODEC_CHECK_FRAMES 50
     #define MAX_MISMATCH_FRAMES 5
     #define MODNAME "mod_sofia"
    @@ -725,6 +727,7 @@ struct sofia_profile {
     	uint32_t max_recv_requests_per_second;
     	uint32_t rtp_timeout_sec;
     	uint32_t rtp_hold_timeout_sec;
    +	uint32_t db_spin_up_wait_ms;
     	char *odbc_dsn;
     	char *pre_trans_execute;
     	char *post_trans_execute;
    @@ -1260,6 +1263,7 @@ void sofia_glue_global_watchdog(switch_bool_t on);
     uint32_t sofia_presence_get_cseq(sofia_profile_t *profile);
     
     void sofia_glue_build_vid_refresh_message(switch_core_session_t *session, const char *pl);
    +char *sofia_glue_get_encoded_fs_path(nua_handle_t *nh, sip_route_t *rt, switch_bool_t add_fs_path_prefix);
     char *sofia_glue_gen_contact_str(sofia_profile_t *profile, sip_t const *sip, nua_handle_t *nh, sofia_dispatch_event_t *de, sofia_nat_parse_t *np);
     void sofia_glue_pause_jitterbuffer(switch_core_session_t *session, switch_bool_t on);
     void sofia_process_dispatch_event(sofia_dispatch_event_t **dep);
    diff --git a/src/mod/endpoints/mod_sofia/sofia.c b/src/mod/endpoints/mod_sofia/sofia.c
    index 5066a13ef87..dc52535e063 100644
    --- a/src/mod/endpoints/mod_sofia/sofia.c
    +++ b/src/mod/endpoints/mod_sofia/sofia.c
    @@ -949,11 +949,11 @@ void sofia_handle_sip_i_bye(switch_core_session_t *session, int status,
     	if (switch_channel_test_flag(tech_pvt->channel, CF_SLA_BARGING)) {
     		const char *bargee_uuid = switch_channel_get_variable(channel, "sip_barging_uuid");
     		switch_core_session_t *bargee_session;
    -		uint32_t ttl = 0;
     
     		if ((bargee_session = switch_core_session_locate(bargee_uuid))) {
     			//switch_channel_t *bargee_channel = switch_core_session_get_channel(bargee_session);
    -			if ((ttl = switch_core_media_bug_count(bargee_session, "eavesdrop")) == 1) {
    +			/* Checking ttl */
    +			if (switch_core_media_bug_count(bargee_session, "eavesdrop") == 1) {
     				if (switch_core_session_check_interface(bargee_session, sofia_endpoint_interface)) {
     					switch_channel_clear_flag(switch_core_session_get_channel(bargee_session), CF_SLA_BARGE);
     				}
    @@ -3784,7 +3784,7 @@ static void parse_gateways(sofia_profile_t *profile, switch_xml_t gateways_tag,
     		}
     
     		switch_mutex_lock(mod_sofia_globals.hash_mutex);
    -		if ((gp = switch_core_hash_find(mod_sofia_globals.gateway_hash, name)) && (gp = switch_core_hash_find(mod_sofia_globals.gateway_hash, pkey)) && !gp->deleted) {
    +		if (switch_core_hash_find(mod_sofia_globals.gateway_hash, name) && (gp = switch_core_hash_find(mod_sofia_globals.gateway_hash, pkey)) && !gp->deleted) {
     			switch_log_printf(SWITCH_CHANNEL_LOG, SWITCH_LOG_WARNING, "Ignoring duplicate gateway '%s'\n", name);
     			switch_mutex_unlock(mod_sofia_globals.hash_mutex);
     			free(pkey);
    @@ -4650,6 +4650,7 @@ switch_status_t config_sofia(sofia_config_t reload, char *profile_name)
     					profile->tls_version |= SOFIA_TLS_VERSION_TLSv1_2;
     					profile->tls_version |= SOFIA_TLS_VERSION_TLSv1_3;
     					profile->tls_timeout = 300;
    +					profile->db_spin_up_wait_ms = 1000;
     					profile->mflags = MFLAG_REFER | MFLAG_REGISTER;
     					profile->server_rport_level = 1;
     					profile->client_rport_level = 1;
    @@ -4788,6 +4789,8 @@ switch_status_t config_sofia(sofia_config_t reload, char *profile_name)
     						}
     					} else if (!strcasecmp(var, "odbc-dsn") && !zstr(val)) {
     						profile->odbc_dsn = switch_core_strdup(profile->pool, val);
    +					} else if (!strcasecmp(var, "db-spin-up-wait-ms") && !zstr(val)) {
    +						profile->db_spin_up_wait_ms = atoi(val);
     					} else if (!strcasecmp(var, "db-pre-trans-execute") && !zstr(val)) {
     						profile->pre_trans_execute = switch_core_strdup(profile->pool, val);
     					} else if (!strcasecmp(var, "db-post-trans-execute") && !zstr(val)) {
    @@ -6351,7 +6354,7 @@ switch_status_t config_sofia(sofia_config_t reload, char *profile_name)
     						launch_sofia_profile_thread(profile);
     						if (profile->odbc_dsn) {
     							switch_log_printf(SWITCH_CHANNEL_LOG, SWITCH_LOG_NOTICE, "Connecting ODBC Profile %s [%s]\n", profile->name, url);
    -							switch_yield(1000000);
    +							switch_yield(profile->db_spin_up_wait_ms * 1000);
     						} else {
     							switch_log_printf(SWITCH_CHANNEL_LOG, SWITCH_LOG_NOTICE, "Started Profile %s [%s]\n", profile->name, url);
     						}
    @@ -6950,7 +6953,7 @@ static void sofia_handle_sip_r_invite(switch_core_session_t *session, int status
     					}
     
     					if (sofia_test_pflag(profile, PFLAG_MANUAL_REDIRECT)) {
    -						if (!(v = switch_channel_get_variable(channel, "outbound_redirect_info"))) {
    +						if (!switch_channel_get_variable(channel, "outbound_redirect_info")) {
     							switch_log_printf(SWITCH_CHANNEL_SESSION_LOG(session), SWITCH_LOG_DEBUG, "Redirect: Transfering to %s %s %s\n",
     											  p_contact->m_url->url_user, sip_redirect_dialplan, sip_redirect_context);
     
    @@ -8576,7 +8579,11 @@ static void sofia_handle_sip_i_state(switch_core_session_t *session, int status,
     				if (!tech_pvt) goto done;
     
     				if (tech_pvt->mparams.num_codecs) {
    -					match = sofia_media_negotiate_sdp(session, r_sdp, SDP_TYPE_RESPONSE);
    +					if (sofia_test_flag(tech_pvt, TFLAG_GOT_ACK)) {
    +						match = sofia_media_negotiate_sdp(session, r_sdp, SDP_TYPE_REQUEST);
    +					} else {
    +						match = sofia_media_negotiate_sdp(session, r_sdp, SDP_TYPE_RESPONSE);
    +					}
     				}
     
     				if (match) {
    @@ -8718,7 +8725,7 @@ static void sofia_handle_sip_i_state(switch_core_session_t *session, int status,
     			sofia_clear_flag_locked(tech_pvt, TFLAG_NOHUP);
     		} else if (switch_channel_up(channel)) {
     			int cause;
    -			if (tech_pvt->q850_cause) {
    +			if (tech_pvt->q850_cause && !switch_channel_var_true(channel, "ignore_q850_reason")) {
     				cause = tech_pvt->q850_cause;
     			} else {
     				cause = sofia_glue_sip_cause_to_freeswitch(status);
    @@ -9928,7 +9935,6 @@ void sofia_handle_sip_i_info(nua_t *nua, sofia_profile_t *profile, nua_handle_t
     					char *cmd = strdup(sip->sip_payload->pl_data);
     					char *arg;
     					switch_stream_handle_t stream = { 0 };
    -					switch_status_t status;
     
     					switch_assert(cmd);
     					SWITCH_STANDARD_STREAM(stream);
    @@ -9938,7 +9944,7 @@ void sofia_handle_sip_i_info(nua_t *nua, sofia_profile_t *profile, nua_handle_t
     						*arg++ = '\0';
     					}
     
    -					if ((status = switch_api_execute(cmd, arg, NULL, &stream)) == SWITCH_STATUS_SUCCESS) {
    +					if (switch_api_execute(cmd, arg, NULL, &stream) == SWITCH_STATUS_SUCCESS) {
     						nua_respond(nh, SIP_200_OK, SIPTAG_CONTENT_TYPE_STR("freeswitch/api-response"),
     									SIPTAG_PAYLOAD_STR(stream.data), NUTAG_WITH_THIS_MSG(de->data->e_msg), 
     									TAG_IF(!zstr(session_id_header), SIPTAG_HEADER_STR(session_id_header)),
    @@ -10959,9 +10965,8 @@ void sofia_handle_sip_i_invite(switch_core_session_t *session, nua_t *nua, sofia
     						if (x1 == 0) {
     							switch_channel_set_variable(channel, "sip_req_user", argv1[0]);
     						} else {
    -							int argc2 = 0;
     							char *argv2[2] = { 0 };
    -							if ((argc2 = switch_separate_string(argv1[x1], '=', argv2, (sizeof(argv2) / sizeof(argv2[0])))) == 2) {
    +							if (switch_separate_string(argv1[x1], '=', argv2, (sizeof(argv2) / sizeof(argv2[0]))) == 2) {
     								char *var_name = NULL;
     								var_name = switch_mprintf("sip_invite_%s", argv2[0]);
     								switch_channel_set_variable(channel, var_name, argv2[1]);
    diff --git a/src/mod/endpoints/mod_sofia/sofia_glue.c b/src/mod/endpoints/mod_sofia/sofia_glue.c
    index d385732ddb1..35704b44abd 100644
    --- a/src/mod/endpoints/mod_sofia/sofia_glue.c
    +++ b/src/mod/endpoints/mod_sofia/sofia_glue.c
    @@ -908,7 +908,6 @@ char *sofia_glue_get_extra_headers(switch_channel_t *channel, const char *prefix
     	const char *exclude_regex = NULL;
     	switch_regex_t *re = NULL;
     	int ovector[30] = {0};
    -	int proceed;
     
     	exclude_regex = switch_channel_get_variable(channel, "exclude_outgoing_extra_header");
     	SWITCH_STANDARD_STREAM(stream);
    @@ -922,7 +921,7 @@ char *sofia_glue_get_extra_headers(switch_channel_t *channel, const char *prefix
     			}
     
     			if (!strncasecmp(name, prefix, strlen(prefix))) {
    -				if ( !exclude_regex || !(proceed = switch_regex_perform(name, exclude_regex, &re, ovector, sizeof(ovector) / sizeof(ovector[0])))) {
    +				if ( !exclude_regex || !(/*proceed*/ switch_regex_perform(name, exclude_regex, &re, ovector, sizeof(ovector) / sizeof(ovector[0])))) {
     					const char *hname = name + strlen(prefix);
     					stream.write_function(&stream, "%s: %s\r\n", hname, value);
     					switch_regex_safe_free(re);
    @@ -1322,7 +1321,11 @@ switch_status_t sofia_glue_do_invite(switch_core_session_t *session)
     		}
     
     		url_str = sofia_overcome_sip_uri_weakness(session, url, tech_pvt->transport, SWITCH_TRUE, invite_params, invite_tel_params);
    -		invite_contact = sofia_overcome_sip_uri_weakness(session, tech_pvt->invite_contact, tech_pvt->transport, SWITCH_FALSE, invite_contact_params, NULL);
    +		if (switch_channel_var_true(tech_pvt->channel, "sip_caller_id_name_in_contact")) {
    +			invite_contact = switch_core_session_sprintf(session, "\"%s\" %s", tech_pvt->caller_profile->caller_id_name, sofia_overcome_sip_uri_weakness(session, tech_pvt->invite_contact, tech_pvt->transport, SWITCH_FALSE, invite_contact_params, NULL));
    +		} else {
    +			invite_contact = sofia_overcome_sip_uri_weakness(session, tech_pvt->invite_contact, tech_pvt->transport, SWITCH_FALSE, invite_contact_params, NULL);
    +		}
     		from_str = sofia_overcome_sip_uri_weakness(session, invite_from_uri ? invite_from_uri : use_from_str, 0, SWITCH_TRUE, invite_from_params, NULL);
     		to_str = sofia_overcome_sip_uri_weakness(session, invite_to_uri ? invite_to_uri : tech_pvt->dest_to, 0, SWITCH_FALSE, invite_to_params, NULL);
     
    @@ -3290,6 +3293,44 @@ void sofia_glue_build_vid_refresh_message(switch_core_session_t *session, const
     }
     
     
    +char *sofia_glue_get_encoded_fs_path(nua_handle_t *nh, sip_route_t *rt, switch_bool_t add_fs_path_prefix)
    +{
    +	char *route = NULL;
    +	int count = 0;
    +	char route_buf[ROUTE_ENCODED_HEADER_MAX_CHARS] = {0};
    +	sip_route_t *rrp;
    +	switch_stream_handle_t rr_stream = { 0 };
    +	SWITCH_STANDARD_STREAM(rr_stream);
    +
    +	if (add_fs_path_prefix) {
    +		rr_stream.write_function(&rr_stream, ";fs_path=");
    +	}
    +
    +	for(rrp = rt; rrp; rrp = rrp->r_next) {
    +		char *sep = count == 0 ? "" : "%2C";
    +		char *rr = sip_header_as_string(nua_handle_home(nh), (void *) rrp);
    +		switch_url_encode(rr, route_buf, ROUTE_ENCODED_HEADER_MAX_CHARS);
    +		rr_stream.write_function(&rr_stream, "%s%s", sep, route_buf);
    +		su_free(nua_handle_home(nh), rr);
    +
    +		if (count >= ROUTE_MAX_HEADERS) {
    +			switch_log_printf(SWITCH_CHANNEL_LOG, SWITCH_LOG_WARNING, "ROUTE_MAX_HEADERS of %d reached\n", ROUTE_MAX_HEADERS);
    +			break;
    +		}
    +		count++;
    +	}
    +
    +	if (!zstr((char *) rr_stream.data)) {
    +		route = rr_stream.data;
    +	} else {
    +		switch_safe_free(rr_stream.data);
    +	}
    +
    +	// switch_log_printf(SWITCH_CHANNEL_LOG, SWITCH_LOG_DEBUG, "fs_path with %d Route headers [%s]\n", count, route ? route : "");
    +	return route;
    +}
    +
    +
     char *sofia_glue_gen_contact_str(sofia_profile_t *profile, sip_t const *sip, nua_handle_t *nh, sofia_dispatch_event_t *de, sofia_nat_parse_t *np)
     {
     	char *contact_str = NULL;
    @@ -3384,19 +3425,16 @@ char *sofia_glue_gen_contact_str(sofia_profile_t *profile, sip_t const *sip, nua
     	}
     
     	if (sip->sip_record_route) {
    -		char *full_contact = sip_header_as_string(nua_handle_get_home(nh), (void *) contact);
    -		char *route = sofia_glue_strip_uri(sip_header_as_string(nua_handle_get_home(nh), (void *) sip->sip_record_route));
    -		char *full_contact_dup;
    -		char *route_encoded;
    -		int route_encoded_len;
    -		full_contact_dup = sofia_glue_get_url_from_contact(full_contact, 1);
    -		route_encoded_len = (int)(strlen(route) * 3) + 1;
    -		switch_zmalloc(route_encoded, route_encoded_len);
    -		switch_url_encode(route, route_encoded, route_encoded_len);
    -		contact_str = switch_mprintf("%s <%s;fs_path=%s>", display, full_contact_dup, route_encoded);
    -		free(route);
    -		free(full_contact_dup);
    -		free(route_encoded);
    +		char *fs_path_str = sofia_glue_get_encoded_fs_path(nh, sip->sip_record_route, SWITCH_FALSE);
    +		char *full_contact = sip_header_as_string(nua_handle_home(nh), (void *) contact);
    +		char *full_contact_dup = sofia_glue_get_url_from_contact(full_contact, 1);
    +		if (fs_path_str && full_contact_dup) {
    +			contact_str = switch_mprintf("%s <%s;fs_path=%s>", display, full_contact_dup, fs_path_str);
    +		} else {
    +			switch_log_printf(SWITCH_CHANNEL_LOG, SWITCH_LOG_CRIT, "Could not get fs_path str.\n");
    +		}
    +		switch_safe_free(fs_path_str);
    +		switch_safe_free(full_contact_dup);
     	}
     	else if (np->is_nat && np->fs_path) {
     		char *full_contact = sip_header_as_string(nua_handle_get_home(nh), (void *) contact);
    diff --git a/src/mod/endpoints/mod_sofia/sofia_media.c b/src/mod/endpoints/mod_sofia/sofia_media.c
    index 74b4d4a836a..bb10a7f579b 100644
    --- a/src/mod/endpoints/mod_sofia/sofia_media.c
    +++ b/src/mod/endpoints/mod_sofia/sofia_media.c
    @@ -71,8 +71,6 @@ switch_status_t sofia_media_activate_rtp(private_object_t *tech_pvt)
     
     switch_status_t sofia_media_tech_media(private_object_t *tech_pvt, const char *r_sdp, switch_sdp_type_t type)
     {
    -	uint8_t match = 0;
    -
     	switch_assert(tech_pvt != NULL);
     	switch_assert(r_sdp != NULL);
     
    @@ -80,7 +78,7 @@ switch_status_t sofia_media_tech_media(private_object_t *tech_pvt, const char *r
     		return SWITCH_STATUS_FALSE;
     	}
     
    -	if ((match = sofia_media_negotiate_sdp(tech_pvt->session, r_sdp, type))) {
    +	if (sofia_media_negotiate_sdp(tech_pvt->session, r_sdp, type)) {
     		if (switch_core_media_choose_port(tech_pvt->session, SWITCH_MEDIA_TYPE_AUDIO, 0) != SWITCH_STATUS_SUCCESS) {
     			return SWITCH_STATUS_FALSE;
     		}
    diff --git a/src/mod/endpoints/mod_sofia/sofia_presence.c b/src/mod/endpoints/mod_sofia/sofia_presence.c
    index ce04b2b46f7..00cc8561d68 100644
    --- a/src/mod/endpoints/mod_sofia/sofia_presence.c
    +++ b/src/mod/endpoints/mod_sofia/sofia_presence.c
    @@ -482,7 +482,7 @@ struct mwi_helper {
     
     static void actual_sofia_presence_mwi_event_handler(switch_event_t *event)
     {
    -	char *account, *dup_account, *yn, *host = NULL, *user;
    +	char *account, *dup_account, *host = NULL, *user;
     	char *sql;
     	sofia_profile_t *profile = NULL;
     	switch_stream_handle_t stream = { 0 };
    @@ -500,7 +500,7 @@ static void actual_sofia_presence_mwi_event_handler(switch_event_t *event)
     		return;
     	}
     
    -	if (!(yn = switch_event_get_header(event, "mwi-messages-waiting"))) {
    +	if (!switch_event_get_header(event, "mwi-messages-waiting")) {
     		switch_log_printf(SWITCH_CHANNEL_LOG, SWITCH_LOG_ERROR, "Missing required Header 'MWI-Messages-Waiting'\n");
     		return;
     	}
    @@ -4325,7 +4325,6 @@ void sofia_presence_handle_sip_i_subscribe(int status,
     		switch_event_fire(&event);
     	}
     
    - end:
     
     	if (strcasecmp(event, "call-info") && strcasecmp(event, "line-seize")) {
     
    @@ -4407,6 +4406,8 @@ void sofia_presence_handle_sip_i_subscribe(int status,
     		}
     	}
     
    + end:
    +
     	if (event) {
     		su_free(nua_handle_get_home(nh), event);
     	}
    diff --git a/src/mod/endpoints/mod_sofia/sofia_reg.c b/src/mod/endpoints/mod_sofia/sofia_reg.c
    index ba9d4d0c71b..9791190f5f7 100644
    --- a/src/mod/endpoints/mod_sofia/sofia_reg.c
    +++ b/src/mod/endpoints/mod_sofia/sofia_reg.c
    @@ -1,6 +1,6 @@
     /*
      * FreeSWITCH Modular Media Switching Software Library / Soft-Switch Application
    - * Copyright (C) 2005-2014, Anthony Minessale II 
    + * Copyright (C) 2005-2021, Anthony Minessale II 
      *
      * Version: MPL 1.1
      *
    @@ -40,6 +40,10 @@
     #include "mod_sofia.h"
     #include "sofia-sip/hostdomain.h"
     #include "sip-dig.h"
    +/* This include defines OPENSSL_VERSION_NUMBER required for SHA-512-256 (RFC-8760)
    +   Do NOT remove this line even if mod_sofia builds without it. 
    +*/
    +#include "switch_ssl.h"
     
     static void sofia_reg_new_handle(sofia_gateway_t *gateway_ptr, int attach)
     {
    @@ -1520,30 +1524,11 @@ uint8_t sofia_reg_handle_register_token(nua_t *nua, sofia_profile_t *profile, nu
     
     
     		if (sip->sip_path) {
    -			char *path_stripped = NULL;
    -			char *path_val_to_encode = NULL;
    -			su_strlst_t *path_list = su_strlst_create(nua_handle_home(nh));
    -			sip_path_t *next_path = sip->sip_path;
    -			for (; next_path; next_path = next_path->r_next) {
    -				path_val = sip_header_as_string(nua_handle_home(nh), (void *) next_path);
    -				if (path_val) {
    -					path_stripped = sofia_glue_get_url_from_contact(path_val, SWITCH_TRUE);
    -					su_free(nua_handle_home(nh), path_val);
    -					su_strlst_dup_append(path_list, path_stripped);
    -					switch_safe_free(path_stripped);
    -				}
    +			path_encoded = sofia_glue_get_encoded_fs_path(nh, sip->sip_path, SWITCH_TRUE);
    +			if (!path_encoded) {
    +				switch_log_printf(SWITCH_CHANNEL_LOG, SWITCH_LOG_CRIT, "Could not get fs_path str.\n");
     			}
     
    -			path_val = su_strlst_join(path_list, nua_handle_home(nh), ",");
    -			path_val_to_encode = su_strlst_join(path_list, nua_handle_home(nh), "%2C");
    -			su_strlst_destroy(path_list);
    -			if (path_val_to_encode) {
    -				path_encoded_len = (int)(strlen(path_val_to_encode) * 3) + 1;
    -				switch_zmalloc(path_encoded, path_encoded_len);
    -				switch_copy_string(path_encoded, ";fs_path=", 10);
    -				switch_url_encode(path_val_to_encode, path_encoded + 9, path_encoded_len - 9);
    -				su_free(nua_handle_home(nh), path_val_to_encode);
    -			}
     		} else if (is_nat) {
     			char my_contact_str[1024];
     			if (uparams) {
    @@ -2825,9 +2810,11 @@ void sofia_reg_handle_sip_r_challenge(int status,
     					const char *val = switch_xml_attr_soft(x_param, "value");
     
     					if (!strcasecmp(var, "reverse-auth-user")) {
    +						switch_safe_free(dup_user);
     						dup_user = strdup(val);
     						sip_auth_username = dup_user;
     					} else if (!strcasecmp(var, "reverse-auth-pass")) {
    +						switch_safe_free(dup_pass);
     						dup_pass = strdup(val);
     						sip_auth_password = dup_pass;
     					}
    @@ -2958,23 +2945,24 @@ sofia_auth_algs_t sofia_alg_str2id(char *algorithm, switch_bool_t permissive)
     
     switch_status_t sofia_make_digest(sofia_auth_algs_t use_alg, char **digest, const void *input, unsigned int *outputlen) 
     {
    +	switch_status_t status = SWITCH_STATUS_FALSE;
     	switch (use_alg) 
     	{
     		case ALG_MD5:
    -			switch_digest_string("md5", digest, input, strlen((char *)input), outputlen);
    +			status = switch_digest_string("md5", digest, input, strlen((char *)input), outputlen);
     			break;
     		case ALG_SHA256:
    -			switch_digest_string("sha256", digest, input, strlen((char *)input), outputlen);
    +			status = switch_digest_string("sha256", digest, input, strlen((char *)input), outputlen);
     			break;
     #if OPENSSL_VERSION_NUMBER >= 0x10101000L
     		case ALG_SHA512:
    -			switch_digest_string("sha512-256", digest, input, strlen((char *)input), outputlen);
    +			status = switch_digest_string("sha512-256", digest, input, strlen((char *)input), outputlen);
     			break;
     #endif
     		default:
     			return SWITCH_STATUS_FALSE;
     	}
    -	return SWITCH_STATUS_SUCCESS;
    +	return status;
     }
     
     auth_res_t sofia_reg_parse_auth(sofia_profile_t *profile,
    diff --git a/src/mod/endpoints/mod_sofia/test/sipp-based-tests.c b/src/mod/endpoints/mod_sofia/test/sipp-based-tests.c
    index a7a380588fc..60a7b61a3aa 100644
    --- a/src/mod/endpoints/mod_sofia/test/sipp-based-tests.c
    +++ b/src/mod/endpoints/mod_sofia/test/sipp-based-tests.c
    @@ -36,6 +36,7 @@
     
     int test_success = 0;
     int test_sofia_debug = 1;
    +static int timeout_sec = 10;
     
     static void test_wait_for_uuid(char *uuid)
     {
    @@ -47,7 +48,7 @@ static void test_wait_for_uuid(char *uuid)
     		SWITCH_STANDARD_STREAM(stream);
     		switch_api_execute("show", "channels", NULL, &stream);
     
    -		if (!strncmp((char *)stream.data, "uuid,", 5)) {
    +		if (stream.data && !strncmp((char *)stream.data, "uuid,", 5)) {
     			channel_data = switch_mprintf("%s", (char *)stream.data);
     			switch_safe_free(stream.data);
     			break;
    @@ -75,7 +76,9 @@ static const char *test_wait_for_chan_var(switch_channel_t *channel, const char
     	int loop_count = 50;
     	const char *var=NULL;
     	do {
    -		if (!strcmp(switch_channel_get_variable(channel, "sip_cseq"),seq)){
    +		const char *sip_cseq = switch_channel_get_variable(channel, "sip_cseq");
    +
    +		if (sip_cseq && seq && !strcmp(sip_cseq, seq)){
     			switch_sleep(100 * 1000);
     			var = switch_channel_get_variable(channel, "rtp_local_sdp_str");
     			break;
    @@ -246,6 +249,7 @@ FST_CORE_EX_BEGIN("./conf-sipp", SCF_VG | SCF_USE_SQL)
     
     		FST_TEARDOWN_BEGIN()
     		{
    +				switch_sleep(200 * 1000);
     		}
     		FST_TEARDOWN_END()
     
    @@ -258,53 +262,53 @@ FST_CORE_EX_BEGIN("./conf-sipp", SCF_VG | SCF_USE_SQL)
     
     			sipp_ret = start_sipp_uac(local_ip_v4, 5080, "1212121212", "sipp-scenarios/uac_telephone_event.xml", "");
     			if (sipp_ret < 0 || sipp_ret == 127) {
    -				fst_requires(0); /* sipp not found */
    -			}
    -
    -			test_wait_for_uuid(uuid);
    -			if (!zstr(uuid)) {
    -				const char *sdp_str1 = NULL, *sdp_str2 = NULL;
    -				switch_core_session_t *session = switch_core_session_locate(uuid);
    -				switch_channel_t *channel = switch_core_session_get_channel(session);
    -				fst_requires(channel);
    -
    -				sdp_str1 = test_wait_for_chan_var(channel,"1");
    -				sdp_str2 = test_wait_for_chan_var(channel,"2");
    -
    -				if (sdp_str1 && sdp_str2 && (strstr(sdp_str1,"telephone-event")) && (strstr(sdp_str2,"telephone-event"))){
    -					char *temp = NULL;
    -					sdp_count = 1;
    -
    -					if ((temp = strstr(sdp_str2,"RTP/AVP"))) {
    -						int count = 0, i;
    -
    -						for (i = 7; temp[i] != '\n' && i < 99; i++) {
    -							/* checking for payload-type 101.*/
    -							if(temp[i++] == '1' && temp[i++] == '0' && temp[i++] == '1')
    -								count++;
    -						}
    -						if (count > 1) {
    -							switch_log_printf(SWITCH_CHANNEL_LOG, SWITCH_LOG_ERROR, "Duplicate entry of payload in SDP.\n");
    -							sdp_count = 0;
    +				fst_check(!"sipp not found");
    +			} else {
    +				test_wait_for_uuid(uuid);
    +				if (!zstr(uuid)) {
    +					const char *sdp_str1 = NULL, *sdp_str2 = NULL;
    +					switch_core_session_t *session = switch_core_session_locate(uuid);
    +					switch_channel_t *channel = switch_core_session_get_channel(session);
    +					fst_check(channel);
    +
    +					sdp_str1 = test_wait_for_chan_var(channel,"1");
    +					sdp_str2 = test_wait_for_chan_var(channel,"2");
    +
    +					if (sdp_str1 && sdp_str2 && (strstr(sdp_str1,"telephone-event")) && (strstr(sdp_str2,"telephone-event"))){
    +						char *temp = NULL;
    +						sdp_count = 1;
    +
    +						if ((temp = strstr(sdp_str2,"RTP/AVP"))) {
    +							int count = 0, i;
    +
    +							for (i = 7; temp[i] != '\n' && i < 99; i++) {
    +								/* checking for payload-type 101.*/
    +								if(temp[i++] == '1' && temp[i++] == '0' && temp[i++] == '1')
    +									count++;
    +							}
    +							if (count > 1) {
    +								switch_log_printf(SWITCH_CHANNEL_LOG, SWITCH_LOG_ERROR, "Duplicate entry of payload in SDP.\n");
    +								sdp_count = 0;
    +							}
     						}
    +
    +					} else {
    +						switch_log_printf(SWITCH_CHANNEL_LOG, SWITCH_LOG_ERROR, "Telephone-event missing in SDP.\n");
     					}
    +					switch_core_session_rwunlock(session);
     
     				} else {
    -					switch_log_printf(SWITCH_CHANNEL_LOG, SWITCH_LOG_ERROR, "Telephone-event missing in SDP.\n");
    +					switch_log_printf(SWITCH_CHANNEL_LOG, SWITCH_LOG_ERROR, "Uuid not found in Channel Data.\n");
     				}
    -				switch_core_session_rwunlock(session);
     
    -			} else {
    -				switch_log_printf(SWITCH_CHANNEL_LOG, SWITCH_LOG_ERROR, "Uuid not found in Channel Data.\n");
    +				fst_check(sdp_count == 1);
    +				/* sipp should timeout, attempt kill, just in case.*/
    +				kill_sipp();
     			}
    -
    -			fst_check(sdp_count == 1);
    -			/* sipp should timeout, attempt kill, just in case.*/
    -			kill_sipp();
     		}
     		FST_TEST_END()
     
    -        FST_TEST_BEGIN(uac_savp_check)
    +		FST_TEST_BEGIN(uac_savp_check)
     		{
     			const char *local_ip_v4 = switch_core_get_variable("local_ip_v4");
     			char uuid[100] = "";
    @@ -313,50 +317,50 @@ FST_CORE_EX_BEGIN("./conf-sipp", SCF_VG | SCF_USE_SQL)
     
     			sipp_ret = start_sipp_uac(local_ip_v4, 5080, "1212121212", "sipp-scenarios/uac_savp_check.xml", "");
     			if (sipp_ret < 0 || sipp_ret == 127) {
    -				fst_requires(0); /* sipp not found */
    -			}
    -
    -			test_wait_for_uuid(uuid);
    -			if (!zstr(uuid)) {
    -				const char *sdp_str1 = NULL, *sdp_str2 = NULL;
    -				const char *temp = NULL, *temp1 = NULL;
    -				switch_core_session_t *session = switch_core_session_locate(uuid);
    -				switch_channel_t *channel = switch_core_session_get_channel(session);
    -				fst_requires(channel);
    -
    -				sdp_str1 = test_wait_for_chan_var(channel,"1");
    -				sdp_str2 = test_wait_for_chan_var(channel,"2");
    -
    -				if (sdp_str1 && sdp_str2 && (temp = strstr(sdp_str2,"RTP/SAVP")) && (temp1 = strstr(temp,"crypto"))) {
    -					int i = 0;
    -
    -					sdp_count = 1;
    -					for (i = 0; temp1[i]; i++) {
    -
    -						if ((temp = strstr(temp1,"RTP/SAVP"))) {
    -							if ((temp1 = strstr(temp,"crypto"))) {
    -								i = 0;
    -							} else {
    -								switch_log_printf(SWITCH_CHANNEL_LOG, SWITCH_LOG_ERROR, "Fail due to no crypto found with SAVP.\n");
    -								sdp_count = 0;
    -								break;
    +				fst_check(!"sipp not found");
    +			} else {
    +				test_wait_for_uuid(uuid);
    +				if (!zstr(uuid)) {
    +					const char *sdp_str1 = NULL, *sdp_str2 = NULL;
    +					const char *temp = NULL, *temp1 = NULL;
    +					switch_core_session_t *session = switch_core_session_locate(uuid);
    +					switch_channel_t *channel = switch_core_session_get_channel(session);
    +					fst_check(channel);
    +
    +					sdp_str1 = test_wait_for_chan_var(channel,"1");
    +					sdp_str2 = test_wait_for_chan_var(channel,"2");
    +
    +					if (sdp_str1 && sdp_str2 && (temp = strstr(sdp_str2,"RTP/SAVP")) && (temp1 = strstr(temp,"crypto"))) {
    +						int i = 0;
    +
    +						sdp_count = 1;
    +						for (i = 0; temp1[i]; i++) {
    +
    +							if ((temp = strstr(temp1,"RTP/SAVP"))) {
    +								if ((temp1 = strstr(temp,"crypto"))) {
    +									i = 0;
    +								} else {
    +									switch_log_printf(SWITCH_CHANNEL_LOG, SWITCH_LOG_ERROR, "Fail due to no crypto found with SAVP.\n");
    +									sdp_count = 0;
    +									break;
    +								}
     							}
    +
     						}
     
    +					} else {
    +						switch_log_printf(SWITCH_CHANNEL_LOG, SWITCH_LOG_ERROR, "SAVP not found in SDP.\n");
     					}
    +					switch_core_session_rwunlock(session);
     
     				} else {
    -					switch_log_printf(SWITCH_CHANNEL_LOG, SWITCH_LOG_ERROR, "SAVP not found in SDP.\n");
    +					switch_log_printf(SWITCH_CHANNEL_LOG, SWITCH_LOG_ERROR, "Uuid not found in Channel Data.\n");
     				}
    -				switch_core_session_rwunlock(session);
     
    -			} else {
    -				switch_log_printf(SWITCH_CHANNEL_LOG, SWITCH_LOG_ERROR, "Uuid not found in Channel Data.\n");
    +				fst_check(sdp_count == 1); 
    +				/* sipp should timeout, attempt kill, just in case.*/
    +				kill_sipp();
     			}
    -
    -			fst_check(sdp_count == 1); 
    -			/* sipp should timeout, attempt kill, just in case.*/
    -			kill_sipp();
     		}
     		FST_TEST_END()
     
    @@ -371,40 +375,42 @@ FST_CORE_EX_BEGIN("./conf-sipp", SCF_VG | SCF_USE_SQL)
     
     			switch_event_bind("sofia", SWITCH_EVENT_CUSTOM, NULL, event_handler, NULL);
     
    -			status = switch_ivr_originate(NULL, &session, &cause, "loopback/+15553334444", 2, NULL, NULL, NULL, NULL, NULL, SOF_NONE, NULL, NULL);
    +			status = switch_ivr_originate(NULL, &session, &cause, "loopback/+15553334444", timeout_sec, NULL, NULL, NULL, NULL, NULL, SOF_NONE, NULL, NULL);
     			sipp_ret = start_sipp_uac(local_ip_v4, 5080, "1001", "sipp-scenarios/uac_digest_leak.xml", "");
     			if (sipp_ret < 0 || sipp_ret == 127) {
    -				fst_requires(0); /* sipp not found */
    -			}
    -
    -			fst_check(status == SWITCH_STATUS_SUCCESS);
    -			if (!session) {
    -				fst_requires(session);
    -			}
    +				fst_check(!"sipp not found");
    +			} else {
     
    -			channel = switch_core_session_get_channel(session);
    -			fst_xcheck(switch_channel_get_state(channel) < CS_HANGUP, "Expect call not to be hung up");
    +				fst_check(status == SWITCH_STATUS_SUCCESS);
    +				if (!session) {
    +					fst_check(!"no session");
    +				} else {
    +					channel = switch_core_session_get_channel(session);
    +					fst_xcheck(switch_channel_get_state(channel) < CS_HANGUP, "Expect call not to be hung up");
    +
    +					while (1) {
    +						int ret;
    +						switch_sleep(1000 * 1000);
    +						ret = switch_system("pidof sipp", SWITCH_TRUE);
    +						if (!ret) {
    +							break;
    +						}
    +					}
     
    -			while (1) {
    -				int ret;
    -				switch_sleep(1000 * 1000);
    -				ret = switch_system("pidof sipp", SWITCH_TRUE);
    -				if (!ret) {
    -					break;
    -				}
    -			}
    +					switch_sleep(5000 * 1000);
     
    -			switch_sleep(5000 * 1000);
    +					switch_channel_hangup(channel, SWITCH_CAUSE_NORMAL_CLEARING);
     
    -			switch_channel_hangup(channel, SWITCH_CAUSE_NORMAL_CLEARING);
    +					switch_core_session_rwunlock(session);
    +					switch_sleep(1000 * 1000);
     
    -			switch_core_session_rwunlock(session);
    -			switch_sleep(1000 * 1000);
    +					switch_event_unbind_callback(event_handler);
    +					/* sipp should timeout, attempt kill, just in case.*/
    +					kill_sipp();
    +					fst_check(test_success);
    +				}
    +			}
     
    -			switch_event_unbind_callback(event_handler);
    -			/* sipp should timeout, attempt kill, just in case.*/
    -			kill_sipp();
    -			fst_check(test_success);
     			test_success = 0;
     		}
     		FST_TEST_END()
    @@ -420,40 +426,41 @@ FST_CORE_EX_BEGIN("./conf-sipp", SCF_VG | SCF_USE_SQL)
     
     			switch_event_bind("sofia", SWITCH_EVENT_CUSTOM, NULL, event_handler, NULL);
     
    -			status = switch_ivr_originate(NULL, &session, &cause, "loopback/+15553334444", 2, NULL, NULL, NULL, NULL, NULL, SOF_NONE, NULL, NULL);
    +			status = switch_ivr_originate(NULL, &session, &cause, "loopback/+15553334444", timeout_sec, NULL, NULL, NULL, NULL, NULL, SOF_NONE, NULL, NULL);
     			sipp_ret = start_sipp_uac(local_ip_v4, 5080, "1001", "sipp-scenarios/uac_digest_leak-tcp.xml", "-t t1");
     			if (sipp_ret < 0 || sipp_ret == 127) {
    -				fst_requires(0); /* sipp not found */
    -			}
    -
    -			fst_check(status == SWITCH_STATUS_SUCCESS);
    -			if (!session) {
    -				fst_requires(session);
    -			}
    +				fst_check(!"sipp not found");
    +			} else {
    +				fst_check(status == SWITCH_STATUS_SUCCESS);
    +				if (!session) {
    +					fst_check(!"no session");
    +				}
     
    -			channel = switch_core_session_get_channel(session);
    -			fst_xcheck(switch_channel_get_state(channel) < CS_HANGUP, "Expect call not to be hung up");
    +				channel = switch_core_session_get_channel(session);
    +				fst_xcheck(switch_channel_get_state(channel) < CS_HANGUP, "Expect call not to be hung up");
     
    -			while (1) {
    -				int ret;
    -				switch_sleep(1000 * 1000);
    -				ret = switch_system("pidof sipp", SWITCH_TRUE);
    -				if (!ret) {
    -					break;
    +				while (1) {
    +					int ret;
    +					switch_sleep(1000 * 1000);
    +					ret = switch_system("pidof sipp", SWITCH_TRUE);
    +					if (!ret) {
    +						break;
    +					}
     				}
    -			}
     
    -			switch_sleep(5000 * 1000);
    +				switch_sleep(5000 * 1000);
     
    -			switch_channel_hangup(channel, SWITCH_CAUSE_NORMAL_CLEARING);
    +				switch_channel_hangup(channel, SWITCH_CAUSE_NORMAL_CLEARING);
     
    -			switch_core_session_rwunlock(session);
    -			switch_sleep(1000 * 1000);
    +				switch_core_session_rwunlock(session);
    +				switch_sleep(1000 * 1000);
    +
    +				switch_event_unbind_callback(event_handler);
    +				/* sipp should timeout, attempt kill, just in case.*/
    +				kill_sipp();
    +				fst_check(test_success);
    +			}
     
    -			switch_event_unbind_callback(event_handler);
    -			/* sipp should timeout, attempt kill, just in case.*/
    -			kill_sipp();
    -			fst_check(test_success);
     			test_success = 0;
     		}
     		FST_TEST_END()
    @@ -476,7 +483,7 @@ FST_CORE_EX_BEGIN("./conf-sipp", SCF_VG | SCF_USE_SQL)
     			if (!strchr(local_ip_v6,'[')) {
     				ipv6 = switch_mprintf("[%s]", local_ip_v6);
     			}
    -			status = switch_ivr_originate(NULL, &session, &cause, "loopback/+15553334444", 2, NULL, NULL, NULL, NULL, NULL, SOF_NONE, NULL, NULL);
    +			status = switch_ivr_originate(NULL, &session, &cause, "loopback/+15553334444", timeout_sec, NULL, NULL, NULL, NULL, NULL, SOF_NONE, NULL, NULL);
     
     			if (!ipv6) {
     				sipp_ret = start_sipp_uac(local_ip_v6, 6060, "1001", "sipp-scenarios/uac_digest_leak-ipv6.xml", "-i [::1]");
    @@ -485,38 +492,38 @@ FST_CORE_EX_BEGIN("./conf-sipp", SCF_VG | SCF_USE_SQL)
     			}
     
     			if (sipp_ret < 0 || sipp_ret == 127) {
    -				fst_requires(0); /* sipp not found */
    -			}
    -
    -			fst_check(status == SWITCH_STATUS_SUCCESS);
    -			if (!session) {
    -				fst_requires(session);
    -			}
    +				fst_check(!"sipp not found");
    +			} else {
    +				fst_check(status == SWITCH_STATUS_SUCCESS);
    +				if (!session) {
    +					fst_check(!"no session");
    +				}
     
    -			channel = switch_core_session_get_channel(session);
    -			fst_xcheck(switch_channel_get_state(channel) < CS_HANGUP, "Expect call not to be hung up");
    +				channel = switch_core_session_get_channel(session);
    +				fst_xcheck(switch_channel_get_state(channel) < CS_HANGUP, "Expect call not to be hung up");
     
    -			while (1) {
    -				int ret;
    -				switch_sleep(1000 * 1000);
    -				ret = switch_system("pidof sipp", SWITCH_TRUE);
    -				if (!ret) {
    -					break;
    +				while (1) {
    +					int ret;
    +					switch_sleep(1000 * 1000);
    +					ret = switch_system("pidof sipp", SWITCH_TRUE);
    +					if (!ret) {
    +						break;
    +					}
     				}
    -			}
     
    -			switch_sleep(5000 * 1000);
    +				switch_sleep(5000 * 1000);
     
    -			switch_channel_hangup(channel, SWITCH_CAUSE_NORMAL_CLEARING);
    +				switch_channel_hangup(channel, SWITCH_CAUSE_NORMAL_CLEARING);
     
    -			switch_core_session_rwunlock(session);
    -			switch_sleep(1000 * 1000);
    +				switch_core_session_rwunlock(session);
    +				switch_sleep(1000 * 1000);
     
    -			switch_event_unbind_callback(event_handler);
    -			/* sipp should timeout, attempt kill, just in case.*/
    -			kill_sipp();
    -			switch_safe_free(ipv6);
    -			fst_check(test_success);
    +				switch_event_unbind_callback(event_handler);
    +				/* sipp should timeout, attempt kill, just in case.*/
    +				kill_sipp();
    +				switch_safe_free(ipv6);
    +				fst_check(test_success);
    +			}
     skiptest:
     			test_success = 0;
     		}
    @@ -531,19 +538,20 @@ FST_CORE_EX_BEGIN("./conf-sipp", SCF_VG | SCF_USE_SQL)
     
     			sipp_ret = start_sipp_uas(local_ip_v4, 6080, "sipp-scenarios/uas_register.xml", "");
     			if (sipp_ret < 0 || sipp_ret == 127) {
    -				fst_requires(0); /* sipp not found */
    -			}
    +				fst_check(!"sipp not found");
    +			} else {
    +				switch_sleep(1000 * 1000);
     
    -			switch_sleep(1000 * 1000);
    +				register_gw();
     
    -			register_gw();
    +				switch_sleep(5000 * 1000);
     
    -			switch_sleep(5000 * 1000);
    +				switch_event_unbind_callback(event_handler_reg_ok);
    +				/* sipp should timeout, attempt kill, just in case.*/
    +				kill_sipp();
    +				fst_check(test_success);
    +			}
     
    -			switch_event_unbind_callback(event_handler_reg_ok);
    -			/* sipp should timeout, attempt kill, just in case.*/
    -			kill_sipp();
    -			fst_check(test_success);
     			test_success = 0;
     		}
     		FST_TEST_END()
    @@ -557,19 +565,20 @@ FST_CORE_EX_BEGIN("./conf-sipp", SCF_VG | SCF_USE_SQL)
     
     			sipp_ret = start_sipp_uas(local_ip_v4, 6080, "sipp-scenarios/uas_register_403.xml", "");
     			if (sipp_ret < 0 || sipp_ret == 127) {
    -				fst_requires(0); /* sipp not found */
    -			}
    +				fst_check(!"sipp not found");
    +			} else {
    +				switch_sleep(1000 * 1000);
     
    -			switch_sleep(1000 * 1000);
    +				register_gw();
     
    -			register_gw();
    +				switch_sleep(5000 * 1000);
     
    -			switch_sleep(5000 * 1000);
    +				switch_event_unbind_callback(event_handler_reg_fail);
    +				/* sipp should timeout, attempt kill, just in case.*/
    +				kill_sipp();
    +				fst_check(test_success);
    +			}
     
    -			switch_event_unbind_callback(event_handler_reg_fail);
    -			/* sipp should timeout, attempt kill, just in case.*/
    -			kill_sipp();
    -			fst_check(test_success);
     			test_success = 0;
     		}
     		FST_TEST_END()
    @@ -587,26 +596,29 @@ FST_CORE_EX_BEGIN("./conf-sipp", SCF_VG | SCF_USE_SQL)
     			/* check without 407 Proxy Authentication. If count not 0 fail case. */
     			sipp_ret = run_sipp(local_ip_v4, 5060, 6091, "1001", "sipp-scenarios/uac_subscriber.xml", auth_password, "");
     			if (sipp_ret < 0 || sipp_ret == 127) {
    -				fst_requires(0); /* sipp not found */
    -			}
    -			switch_sleep(100 * 1000);
    +				fst_check(!"sipp not found");
    +			} else {
    +				switch_sleep(100 * 1000);
     
    -			if (switch_cache_db_get_db_handle_dsn(&dbh, dsn) == SWITCH_STATUS_SUCCESS) {
    -				switch_cache_db_execute_sql2str(dbh, "select count(*) from  sip_subscriptions where contact like \"%1001%6091%\";", (char *)&count1, 20, NULL);
    -				switch_log_printf(SWITCH_CHANNEL_LOG, SWITCH_LOG_INFO, "Count : %s\n", count1);
    -			}
    -			fst_check_string_equals(count1, "0");
    +				if (switch_cache_db_get_db_handle_dsn(&dbh, dsn) == SWITCH_STATUS_SUCCESS) {
    +					switch_cache_db_execute_sql2str(dbh, "select count(*) from  sip_subscriptions where contact like \"%1001%6091%\";", (char *)&count1, 20, NULL);
    +					switch_log_printf(SWITCH_CHANNEL_LOG, SWITCH_LOG_INFO, "Count : %s\n", count1);
    +				}
    +				fst_check_string_equals(count1, "0");
     
    -			/* check with 407  Proxy Authentication Required. If count not 1 fail case. */
    -			sipp_ret = run_sipp(local_ip_v4, 5060, 6090, "1001", "sipp-scenarios/uac_407_subscriber.xml", auth_password, "");
    -			if (sipp_ret < 0 || sipp_ret == 127) {
    -				fst_requires(0); /* sipp not found */
    -			}
    -			switch_sleep(100 * 1000);
    +				/* check with 407  Proxy Authentication Required. If count not 1 fail case. */
    +				sipp_ret = run_sipp(local_ip_v4, 5060, 6090, "1001", "sipp-scenarios/uac_407_subscriber.xml", auth_password, "");
    +				if (sipp_ret < 0 || sipp_ret == 127) {
    +					fst_check(!"sipp not found");
    +				} else {
    +					switch_sleep(100 * 1000);
    +
    +					switch_cache_db_execute_sql2str(dbh, "select count(*) from  sip_subscriptions where contact like \"%1001%6090%\";", (char *)&count, 20, NULL);
    +					switch_log_printf(SWITCH_CHANNEL_LOG, SWITCH_LOG_INFO, "Count : %s\n", count);
    +					fst_check_string_equals(count, "1");
     
    -			switch_cache_db_execute_sql2str(dbh, "select count(*) from  sip_subscriptions where contact like \"%1001%6090%\";", (char *)&count, 20, NULL);
    -			switch_log_printf(SWITCH_CHANNEL_LOG, SWITCH_LOG_INFO, "Count : %s\n", count);
    -			fst_check_string_equals(count, "1");
    +				}
    +			}
     
     			/* sipp should timeout, attempt kill, just in case.*/
     			kill_sipp();
    @@ -622,29 +634,30 @@ FST_CORE_EX_BEGIN("./conf-sipp", SCF_VG | SCF_USE_SQL)
     
     			sipp_ret = start_sipp_uas(local_ip_v4, 6080, "sipp-scenarios/uas_register_no_challange.xml", "");
     			if (sipp_ret < 0 || sipp_ret == 127) {
    -				fst_requires(0); /* sipp not found */
    -			}
    +				fst_check(!"sipp not found");
    +			} else {
    +				switch_sleep(1000 * 1000);
     
    -			switch_sleep(1000 * 1000);
    +				register_gw();
     
    -			register_gw();
    +				switch_sleep(5000 * 1000);
     
    -			switch_sleep(5000 * 1000);
    +				/*the REGISTER with Expires 0 */
    +				unregister_gw();
     
    -			/*the REGISTER with Expires 0 */
    -			unregister_gw();
    +				switch_sleep(1000 * 1000);
     
    -			switch_sleep(1000 * 1000);
    +				register_gw();
     
    -			register_gw();
    +				switch_sleep(1000 * 1000);
     
    -			switch_sleep(1000 * 1000);
    +				switch_event_unbind_callback(event_handler_reg_ok);
     
    -			switch_event_unbind_callback(event_handler_reg_ok);
    +				/* sipp should timeout, attempt kill, just in case.*/
    +				kill_sipp();
    +				fst_check(test_success);
    +			}
     
    -			/* sipp should timeout, attempt kill, just in case.*/
    -			kill_sipp();
    -			fst_check(test_success);
     			test_success = 0;
     		}
     		FST_TEST_END()
    @@ -662,28 +675,27 @@ FST_CORE_EX_BEGIN("./conf-sipp", SCF_VG | SCF_USE_SQL)
     
     			sipp_ret = start_sipp_uas(local_ip_v4, inv_sipp_port, "sipp-scenarios/uas_407.xml", "");
     			if (sipp_ret < 0 || sipp_ret == 127) {
    -				fst_requires(0); /* sipp not found */
    -			}
    -
    -			switch_sleep(1000 * 1000);
    -			to = switch_mprintf("sofia/gateway/testgw-noreg/sipp@%s:%d", local_ip_v4, inv_sipp_port);
    -			/*originate will fail if the 407 we get from sipp is dropped due to wrong IP.*/
    -			status = switch_ivr_originate(NULL, &session, &cause, to, 2, NULL, NULL, NULL, NULL, NULL, SOF_NONE, NULL, NULL);
    -			fst_check(status == SWITCH_STATUS_SUCCESS);
    +				fst_check(!"sipp not found");
    +			} else {
    +				switch_sleep(1000 * 1000);
    +				to = switch_mprintf("sofia/gateway/testgw-noreg/sipp@%s:%d", local_ip_v4, inv_sipp_port);
    +				/*originate will fail if the 407 we get from sipp is dropped due to wrong IP.*/
    +				status = switch_ivr_originate(NULL, &session, &cause, to, timeout_sec, NULL, NULL, NULL, NULL, NULL, SOF_NONE, NULL, NULL);
    +				fst_check(status == SWITCH_STATUS_SUCCESS);
    +
    +				/*test is considered PASSED if we get a session*/
    +				fst_check(session);
    +				if (session) {
    +					switch_sleep(1000 * 1000);
    +					channel = switch_core_session_get_channel(session);
    +					switch_channel_hangup(channel, SWITCH_CAUSE_NORMAL_CLEARING);
    +					switch_core_session_rwunlock(session);
    +				}
     
    -			/*test is considered PASSED if we get a session*/
    -			if (!session) {
    -				fst_requires(session);
    +				switch_safe_free(to);
    +				/* sipp should timeout, attempt kill, just in case.*/
    +				kill_sipp();
     			}
    -
    -			switch_sleep(1000 * 1000);
    -
    -			channel = switch_core_session_get_channel(session);
    -			switch_channel_hangup(channel, SWITCH_CAUSE_NORMAL_CLEARING);
    -			switch_core_session_rwunlock(session);
    -			switch_safe_free(to);
    -			/* sipp should timeout, attempt kill, just in case.*/
    -			kill_sipp();
     		}
     		FST_TEST_END()
     
    diff --git a/src/mod/endpoints/mod_sofia/test/test_sofia_funcs.c b/src/mod/endpoints/mod_sofia/test/test_sofia_funcs.c
    index 9d1a7d3fee5..dbc75390d40 100644
    --- a/src/mod/endpoints/mod_sofia/test/test_sofia_funcs.c
    +++ b/src/mod/endpoints/mod_sofia/test/test_sofia_funcs.c
    @@ -33,12 +33,20 @@
     #include 
     #include "../mod_sofia.c"
     
    +static int timeout_sec = 10;
    +static switch_interval_time_t delay_start_ms = 5000;
    +
     FST_CORE_EX_BEGIN("./conf", SCF_VG | SCF_USE_SQL)
     
     FST_MODULE_BEGIN(mod_sofia, sofia)
     
     FST_SETUP_BEGIN()
     {
    +	/* Give mod_sofia time to spinup profile threads */
    +	if (delay_start_ms) {
    +		switch_sleep(delay_start_ms * 1000);
    +		delay_start_ms = 0;
    +	}
     }
     FST_SETUP_END()
     
    @@ -101,14 +109,15 @@ FST_TEST_BEGIN(originate_test)
     	switch_status_t status;
     	switch_call_cause_t cause;
     	const char *local_ip_v4 = switch_core_get_variable("local_ip_v4");
    -	status = switch_ivr_originate(NULL, &session, &cause, switch_core_sprintf(fst_pool, "{ignore_early_media=true}sofia/internal/park@%s:53060", local_ip_v4), 2, NULL, NULL, NULL, NULL, NULL, SOF_NONE, NULL, NULL);
    -	fst_requires(session);
    +	status = switch_ivr_originate(NULL, &session, &cause, switch_core_sprintf(fst_pool, "{ignore_early_media=true}sofia/internal/park@%s:53060", local_ip_v4), timeout_sec, NULL, NULL, NULL, NULL, NULL, SOF_NONE, NULL, NULL);
    +	fst_check(session);
     	fst_check(status == SWITCH_STATUS_SUCCESS);
    -	channel = switch_core_session_get_channel(session);
    -	fst_requires(channel);
    -	switch_channel_hangup(channel, SWITCH_CAUSE_NORMAL_CLEARING);
    -	switch_core_session_rwunlock(session);
    -	switch_sleep(1 * 1000 * 1000);
    +	if (session) {
    +		channel = switch_core_session_get_channel(session);
    +		switch_channel_hangup(channel, SWITCH_CAUSE_NORMAL_CLEARING);
    +		switch_core_session_rwunlock(session);
    +		switch_sleep(1 * 1000 * 1000);
    +	}
     }
     FST_TEST_END()
     
    @@ -120,7 +129,7 @@ FST_TEST_BEGIN(sofia_verify_identity_test_no_identity)
     	switch_status_t status;
     	switch_call_cause_t cause;
     	const char *local_ip_v4 = switch_core_get_variable("local_ip_v4");
    -	status = switch_ivr_originate(NULL, &session, &cause, switch_core_sprintf(fst_pool, "{ignore_early_media=true}sofia/internal/verifyidentity@%s:53060", local_ip_v4), 2, NULL, NULL, NULL, NULL, NULL, SOF_NONE, NULL, NULL);
    +	status = switch_ivr_originate(NULL, &session, &cause, switch_core_sprintf(fst_pool, "{ignore_early_media=true}sofia/internal/verifyidentity@%s:53060", local_ip_v4), timeout_sec, NULL, NULL, NULL, NULL, NULL, SOF_NONE, NULL, NULL);
     	fst_check(status != SWITCH_STATUS_SUCCESS);
     	fst_check(cause == SWITCH_CAUSE_NO_IDENTITY);
     	if (session) {
    @@ -139,7 +148,7 @@ FST_TEST_BEGIN(sofia_verify_identity_test_bad_identity)
     	switch_status_t status;
     	switch_call_cause_t cause;
     	const char *local_ip_v4 = switch_core_get_variable("local_ip_v4");
    -	status = switch_ivr_originate(NULL, &session, &cause, switch_core_sprintf(fst_pool, "{ignore_early_media=true,sip_h_identity=foo;info=bar}sofia/internal/verifyidentity@%s:53060", local_ip_v4), 2, NULL, NULL, NULL, NULL, NULL, SOF_NONE, NULL, NULL);
    +	status = switch_ivr_originate(NULL, &session, &cause, switch_core_sprintf(fst_pool, "{ignore_early_media=true,sip_h_identity=foo;info=bar}sofia/internal/verifyidentity@%s:53060", local_ip_v4), timeout_sec, NULL, NULL, NULL, NULL, NULL, SOF_NONE, NULL, NULL);
     	fst_check(status != SWITCH_STATUS_SUCCESS);
     	fst_check(cause == SWITCH_CAUSE_INVALID_IDENTITY);
     	if (session) {
    @@ -158,7 +167,7 @@ FST_TEST_BEGIN(sofia_verify_identity_test_valid_identity_no_cert_available)
     	switch_status_t status;
     	switch_call_cause_t cause;
     	const char *local_ip_v4 = switch_core_get_variable("local_ip_v4");
    -	status = switch_ivr_originate(NULL, &session, &cause, switch_core_sprintf(fst_pool, "{origination_caller_id_number=+15551231234,ignore_early_media=true,sip_h_identity=eyJhbGciOiJFUzI1NiIsInBwdCI6InNoYWtlbiIsInR5cCI6InBhc3Nwb3J0IiwieDV1IjoiaHR0cDovLzEyNy4wLjAuMS80MDQucGVtIn0.eyJhdHRlc3QiOiJBIiwiZGVzdCI6eyJ0biI6WyIxNTU1MzIxNDMyMSJdfSwiaWF0IjoxNjE4Mjc5OTYzLCJvcmlnIjp7InRuIjoiMTU1NTEyMzEyMzQifSwib3JpZ2lkIjoiMTMxMzEzMTMifQ.Cm34sISkFWYB6ohtjjJEO71Hyz4TQ5qrTDyYmCXBj-ni5Fe7IbNjmMyvY_lD_Go0u2csWQNe8n03fHSO7Z7nNw;info=;alg=ES256;ppt=shaken}sofia/internal/+15553214321@%s:53060", local_ip_v4), 2, NULL, NULL, NULL, NULL, NULL, SOF_NONE, NULL, NULL);
    +	status = switch_ivr_originate(NULL, &session, &cause, switch_core_sprintf(fst_pool, "{origination_caller_id_number=+15551231234,ignore_early_media=true,sip_h_identity=eyJhbGciOiJFUzI1NiIsInBwdCI6InNoYWtlbiIsInR5cCI6InBhc3Nwb3J0IiwieDV1IjoiaHR0cDovLzEyNy4wLjAuMS80MDQucGVtIn0.eyJhdHRlc3QiOiJBIiwiZGVzdCI6eyJ0biI6WyIxNTU1MzIxNDMyMSJdfSwiaWF0IjoxNjE4Mjc5OTYzLCJvcmlnIjp7InRuIjoiMTU1NTEyMzEyMzQifSwib3JpZ2lkIjoiMTMxMzEzMTMifQ.Cm34sISkFWYB6ohtjjJEO71Hyz4TQ5qrTDyYmCXBj-ni5Fe7IbNjmMyvY_lD_Go0u2csWQNe8n03fHSO7Z7nNw;info=;alg=ES256;ppt=shaken}sofia/internal/+15553214321@%s:53060", local_ip_v4), timeout_sec, NULL, NULL, NULL, NULL, NULL, SOF_NONE, NULL, NULL);
     	fst_check(status != SWITCH_STATUS_SUCCESS);
     	fst_check(cause == SWITCH_CAUSE_INVALID_IDENTITY);
     	if (session) {
    @@ -177,13 +186,15 @@ FST_TEST_BEGIN(sofia_auth_identity_test_attest_a)
     	switch_status_t status;
     	switch_call_cause_t cause;
     	const char *local_ip_v4 = switch_core_get_variable("local_ip_v4");
    -	status = switch_ivr_originate(NULL, &session, &cause, switch_core_sprintf(fst_pool, "{origination_caller_id_number=+15551231234,ignore_early_media=true,sip_stir_shaken_attest=A}sofia/internal/+15553214322@%s:53060", local_ip_v4), 2, NULL, NULL, NULL, NULL, NULL, SOF_NONE, NULL, NULL);
    +	status = switch_ivr_originate(NULL, &session, &cause, switch_core_sprintf(fst_pool, "{origination_caller_id_number=+15551231234,ignore_early_media=true,sip_stir_shaken_attest=A}sofia/internal/+15553214322@%s:53060", local_ip_v4), timeout_sec, NULL, NULL, NULL, NULL, NULL, SOF_NONE, NULL, NULL);
     	fst_check(status == SWITCH_STATUS_SUCCESS);
    -	fst_requires(session);
    -	channel = switch_core_session_get_channel(session);
    -	switch_channel_hangup(channel, SWITCH_CAUSE_NORMAL_CLEARING);
    -	switch_core_session_rwunlock(session);
    -	switch_sleep(1 * 1000 * 1000);
    +	fst_check(session);
    +	if (session) {
    +		channel = switch_core_session_get_channel(session);
    +		switch_channel_hangup(channel, SWITCH_CAUSE_NORMAL_CLEARING);
    +		switch_core_session_rwunlock(session);
    +		switch_sleep(1 * 1000 * 1000);
    +	}
     }
     FST_TEST_END()
     
    @@ -194,13 +205,15 @@ FST_TEST_BEGIN(sofia_auth_identity_test_attest_b)
     	switch_status_t status;
     	switch_call_cause_t cause;
     	const char *local_ip_v4 = switch_core_get_variable("local_ip_v4");
    -	status = switch_ivr_originate(NULL, &session, &cause, switch_core_sprintf(fst_pool, "{origination_caller_id_number=+15551231234,ignore_early_media=true,sip_stir_shaken_attest=B}sofia/internal/+15553214322@%s:53060", local_ip_v4), 2, NULL, NULL, NULL, NULL, NULL, SOF_NONE, NULL, NULL);
    +	status = switch_ivr_originate(NULL, &session, &cause, switch_core_sprintf(fst_pool, "{origination_caller_id_number=+15551231234,ignore_early_media=true,sip_stir_shaken_attest=B}sofia/internal/+15553214322@%s:53060", local_ip_v4), timeout_sec, NULL, NULL, NULL, NULL, NULL, SOF_NONE, NULL, NULL);
     	fst_check(status == SWITCH_STATUS_SUCCESS);
    -	fst_requires(session);
    -	channel = switch_core_session_get_channel(session);
    -	switch_channel_hangup(channel, SWITCH_CAUSE_NORMAL_CLEARING);
    -	switch_core_session_rwunlock(session);
    -	switch_sleep(1 * 1000 * 1000);
    +	fst_check(session);
    +	if (session) {
    +		channel = switch_core_session_get_channel(session);
    +		switch_channel_hangup(channel, SWITCH_CAUSE_NORMAL_CLEARING);
    +		switch_core_session_rwunlock(session);
    +		switch_sleep(1 * 1000 * 1000);
    +	}
     }
     FST_TEST_END()
     
    @@ -211,13 +224,15 @@ FST_TEST_BEGIN(sofia_auth_identity_test_attest_c)
     	switch_status_t status;
     	switch_call_cause_t cause;
     	const char *local_ip_v4 = switch_core_get_variable("local_ip_v4");
    -	status = switch_ivr_originate(NULL, &session, &cause, switch_core_sprintf(fst_pool, "{origination_caller_id_number=+15551231234,ignore_early_media=true,sip_stir_shaken_attest=C}sofia/internal/+15553214322@%s:53060", local_ip_v4), 2, NULL, NULL, NULL, NULL, NULL, SOF_NONE, NULL, NULL);
    +	status = switch_ivr_originate(NULL, &session, &cause, switch_core_sprintf(fst_pool, "{origination_caller_id_number=+15551231234,ignore_early_media=true,sip_stir_shaken_attest=C}sofia/internal/+15553214322@%s:53060", local_ip_v4), timeout_sec, NULL, NULL, NULL, NULL, NULL, SOF_NONE, NULL, NULL);
     	fst_check(status == SWITCH_STATUS_SUCCESS);
    -	fst_requires(session);
    -	channel = switch_core_session_get_channel(session);
    -	switch_channel_hangup(channel, SWITCH_CAUSE_NORMAL_CLEARING);
    -	switch_core_session_rwunlock(session);
    -	switch_sleep(1 * 1000 * 1000);
    +	fst_check(session);
    +	if (session) {
    +		channel = switch_core_session_get_channel(session);
    +		switch_channel_hangup(channel, SWITCH_CAUSE_NORMAL_CLEARING);
    +		switch_core_session_rwunlock(session);
    +		switch_sleep(1 * 1000 * 1000);
    +	}
     }
     FST_TEST_END()
     
    @@ -228,7 +243,7 @@ FST_TEST_BEGIN(sofia_verify_identity_test_verified_attest_a_expired)
     	switch_status_t status;
     	switch_call_cause_t cause;
     	const char *local_ip_v4 = switch_core_get_variable("local_ip_v4");
    -	status = switch_ivr_originate(NULL, &session, &cause, switch_core_sprintf(fst_pool, "{origination_caller_id_number=+15551231234,ignore_early_media=true,sip_h_identity=eyJhbGciOiJFUzI1NiIsInBwdCI6InNoYWtlbiIsInR5cCI6InBhc3Nwb3J0IiwieDV1IjoiaHR0cDovLzEyNy4wLjAuMTo4MDgwL2NlcnQucGVtIn0.eyJhdHRlc3QiOiJBIiwiZGVzdCI6eyJ0biI6WyIxNTU1MzIxNDMyMiJdfSwiaWF0IjoxNjE4MzczMTc0LCJvcmlnIjp7InRuIjoiMTU1NTEyMzEyMzQifSwib3JpZ2lkIjoiMzliZDYzZDQtOTE1Mi00MzU0LWFkNjctNjg5NjQ2NmI4ZDI3In0.mUaikwHSOb8RVPwwMZTsqBe57MZY29CgbIqmiiEmyq9DzKZO-y4qShiIVT3serg-xHgC9SCMjUOBWaDfeXnEvA;info=;alg=ES256;ppt=shaken}sofia/internal/+15553214322@%s:53060", local_ip_v4), 2, NULL, NULL, NULL, NULL, NULL, SOF_NONE, NULL, NULL);
    +	status = switch_ivr_originate(NULL, &session, &cause, switch_core_sprintf(fst_pool, "{origination_caller_id_number=+15551231234,ignore_early_media=true,sip_h_identity=eyJhbGciOiJFUzI1NiIsInBwdCI6InNoYWtlbiIsInR5cCI6InBhc3Nwb3J0IiwieDV1IjoiaHR0cDovLzEyNy4wLjAuMTo4MDgwL2NlcnQucGVtIn0.eyJhdHRlc3QiOiJBIiwiZGVzdCI6eyJ0biI6WyIxNTU1MzIxNDMyMiJdfSwiaWF0IjoxNjE4MzczMTc0LCJvcmlnIjp7InRuIjoiMTU1NTEyMzEyMzQifSwib3JpZ2lkIjoiMzliZDYzZDQtOTE1Mi00MzU0LWFkNjctNjg5NjQ2NmI4ZDI3In0.mUaikwHSOb8RVPwwMZTsqBe57MZY29CgbIqmiiEmyq9DzKZO-y4qShiIVT3serg-xHgC9SCMjUOBWaDfeXnEvA;info=;alg=ES256;ppt=shaken}sofia/internal/+15553214322@%s:53060", local_ip_v4), timeout_sec, NULL, NULL, NULL, NULL, NULL, SOF_NONE, NULL, NULL);
     	fst_check(status != SWITCH_STATUS_SUCCESS);
     	fst_check(cause == SWITCH_CAUSE_CALL_REJECTED);
     	if (session) {
    @@ -247,13 +262,15 @@ FST_TEST_BEGIN(sofia_auth_identity_test_attest_a_date)
     	switch_status_t status;
     	switch_call_cause_t cause;
     	const char *local_ip_v4 = switch_core_get_variable("local_ip_v4");
    -	status = switch_ivr_originate(NULL, &session, &cause, switch_core_sprintf(fst_pool, "{origination_caller_id_number=+15551231235,ignore_early_media=true,sip_stir_shaken_attest=A}sofia/internal/+15553214323@%s:53060", local_ip_v4), 2, NULL, NULL, NULL, NULL, NULL, SOF_NONE, NULL, NULL);
    +	status = switch_ivr_originate(NULL, &session, &cause, switch_core_sprintf(fst_pool, "{origination_caller_id_number=+15551231235,ignore_early_media=true,sip_stir_shaken_attest=A}sofia/internal/+15553214323@%s:53060", local_ip_v4), timeout_sec, NULL, NULL, NULL, NULL, NULL, SOF_NONE, NULL, NULL);
     	fst_check(status == SWITCH_STATUS_SUCCESS);
    -	fst_requires(session);
    -	channel = switch_core_session_get_channel(session);
    -	switch_channel_hangup(channel, SWITCH_CAUSE_NORMAL_CLEARING);
    -	switch_core_session_rwunlock(session);
    -	switch_sleep(10 * 1000 * 1000);
    +	fst_check(session);
    +	if (session) {
    +		channel = switch_core_session_get_channel(session);
    +		switch_channel_hangup(channel, SWITCH_CAUSE_NORMAL_CLEARING);
    +		switch_core_session_rwunlock(session);
    +		switch_sleep(10 * 1000 * 1000);
    +	}
     }
     FST_TEST_END()
     #endif 
    diff --git a/src/mod/endpoints/mod_unicall/mod_unicall.c b/src/mod/endpoints/mod_unicall/mod_unicall.c
    index 92dee3f2cf8..ee4d65e9ef5 100644
    --- a/src/mod/endpoints/mod_unicall/mod_unicall.c
    +++ b/src/mod/endpoints/mod_unicall/mod_unicall.c
    @@ -1771,7 +1771,7 @@ static switch_status_t config_unicall(int reload)
     		for (i = min_span; i <= max_span; i++) {
     			current_span = i;
     
    -			if (current_span <= 0 || current_span > MAX_SPANS) {
    +			if (current_span <= 0 || current_span >= MAX_SPANS) {
     				switch_log_printf(SWITCH_CHANNEL_LOG, SWITCH_LOG_WARNING, "Invalid SPAN %d!\n", current_span);
     				current_span = 0;
     				continue;
    diff --git a/src/mod/endpoints/mod_verto/Makefile.am b/src/mod/endpoints/mod_verto/Makefile.am
    index 6eeac1e6a8e..8951fe5e54f 100644
    --- a/src/mod/endpoints/mod_verto/Makefile.am
    +++ b/src/mod/endpoints/mod_verto/Makefile.am
    @@ -1,6 +1,7 @@
     include $(top_srcdir)/build/modmake.rulesam
     MODNAME=mod_verto
     
    +if HAVE_KS
     mod_LTLIBRARIES       = mod_verto.la
     mod_verto_la_SOURCES  = mod_verto.c mcast/mcast.c
     mod_verto_la_CFLAGS   = -D__EXTENSIONS__ -D_GNU_SOURCE $(AM_CFLAGS) $(KS_CFLAGS)
    @@ -37,3 +38,10 @@ swigclean:
     	rm -f mcast/mcast_wrap.* mcast/MCAST.so mcast/MCAST.pm mcast/perlxsi.*
     
     reswig:	swigclean mcast/mcast_wrap.cpp mcast/perlxsi.c
    +else
    +install: error
    +all: error
    +error:
    +	$(error You must install libks to build mod_verto)
    +endif
    +
    diff --git a/src/mod/endpoints/mod_verto/mod_verto.c b/src/mod/endpoints/mod_verto/mod_verto.c
    index 8b69519f6f7..2245c33a564 100644
    --- a/src/mod/endpoints/mod_verto/mod_verto.c
    +++ b/src/mod/endpoints/mod_verto/mod_verto.c
    @@ -2429,7 +2429,7 @@ static switch_status_t verto_connect(switch_core_session_t *session, const char
     
     switch_status_t verto_tech_media(verto_pvt_t *tech_pvt, const char *r_sdp, switch_sdp_type_t sdp_type)
     {
    -	uint8_t match = 0, p = 0;
    +	uint8_t p = 0;
     
     	switch_assert(tech_pvt != NULL);
     	switch_assert(r_sdp != NULL);
    @@ -2438,7 +2438,7 @@ switch_status_t verto_tech_media(verto_pvt_t *tech_pvt, const char *r_sdp, switc
     		return SWITCH_STATUS_FALSE;
     	}
     
    -	if ((match = switch_core_media_negotiate_sdp(tech_pvt->session, r_sdp, &p, sdp_type))) {
    +	if (switch_core_media_negotiate_sdp(tech_pvt->session, r_sdp, &p, sdp_type)) {
     		if (switch_core_media_choose_ports(tech_pvt->session, SWITCH_TRUE, SWITCH_FALSE) != SWITCH_STATUS_SUCCESS) {
     		//if (switch_core_media_choose_port(tech_pvt->session, SWITCH_MEDIA_TYPE_AUDIO, 0) != SWITCH_STATUS_SUCCESS) {
     			return SWITCH_STATUS_FALSE;
    @@ -3413,7 +3413,7 @@ static switch_bool_t verto__modify_func(const char *method, cJSON *params, jsock
     			switch_channel_set_flag(tech_pvt->channel, CF_VIDEO_REFRESH_REQ);
     		} else if (!strcasecmp(action, "updateMedia")) {
     			const char *sdp = NULL;
    -			uint8_t match = 0, p = 0;
    +			uint8_t p = 0;
     
     			if (!switch_channel_test_flag(tech_pvt->channel, CF_ANSWERED)) {
     				switch_channel_hangup(tech_pvt->channel, SWITCH_CAUSE_DESTINATION_OUT_OF_ORDER);
    @@ -3443,7 +3443,7 @@ static switch_bool_t verto__modify_func(const char *method, cJSON *params, jsock
     			//switch_channel_set_flag(tech_pvt->channel, CF_VIDEO_BREAK);
     			//switch_core_session_kill_channel(tech_pvt->session, SWITCH_SIG_BREAK);
     
    -			if ((match = switch_core_media_negotiate_sdp(tech_pvt->session, tech_pvt->r_sdp, &p, SDP_TYPE_REQUEST))) {
    +			if (switch_core_media_negotiate_sdp(tech_pvt->session, tech_pvt->r_sdp, &p, SDP_TYPE_REQUEST)) {
     				switch_core_media_gen_local_sdp(session, SDP_TYPE_RESPONSE, NULL, 0, NULL, 0);
     		
     				if (switch_core_media_activate_rtp(tech_pvt->session) != SWITCH_STATUS_SUCCESS) {
    @@ -3549,7 +3549,7 @@ static switch_bool_t verto__attach_func(const char *method, cJSON *params, jsock
     	cJSON *dialog;
     	verto_pvt_t *tech_pvt = NULL;
     	const char *call_id = NULL, *sdp = NULL;
    -	uint8_t match = 0, p = 0;
    +	uint8_t p = 0;
     
     	*response = obj;
     
    @@ -3601,7 +3601,7 @@ static switch_bool_t verto__attach_func(const char *method, cJSON *params, jsock
     	//switch_channel_set_flag(tech_pvt->channel, CF_VIDEO_BREAK);
     	//switch_core_session_kill_channel(tech_pvt->session, SWITCH_SIG_BREAK);
     
    -	if ((match = switch_core_media_negotiate_sdp(tech_pvt->session, tech_pvt->r_sdp, &p, SDP_TYPE_RESPONSE))) {
    +	if (switch_core_media_negotiate_sdp(tech_pvt->session, tech_pvt->r_sdp, &p, SDP_TYPE_RESPONSE)) {
     		//switch_core_media_gen_local_sdp(session, SDP_TYPE_RESPONSE, NULL, 0, NULL, 0);
     		
     		if (switch_core_media_activate_rtp(tech_pvt->session) != SWITCH_STATUS_SUCCESS) {
    @@ -4573,7 +4573,6 @@ static switch_bool_t fsapi_func(const char *method, cJSON *params, jsock_t *jsoc
     {
     	cJSON *cmd = NULL, *arg = NULL, *reply;
     	switch_stream_handle_t stream = { 0 };
    -	switch_status_t status = SWITCH_STATUS_SUCCESS;
     
     	if (params) {
     		cmd = cJSON_GetObjectItem(params, "cmd");
    @@ -4598,7 +4597,7 @@ static switch_bool_t fsapi_func(const char *method, cJSON *params, jsock_t *jsoc
     
     	SWITCH_STANDARD_STREAM(stream);
     
    -	if (cmd && (status = switch_api_execute(cmd->valuestring, arg ? arg->valuestring : NULL, NULL, &stream)) == SWITCH_STATUS_SUCCESS) {
    +	if (cmd && switch_api_execute(cmd->valuestring, arg ? arg->valuestring : NULL, NULL, &stream) == SWITCH_STATUS_SUCCESS) {
     		cJSON_AddItemToObject(reply, "message", cJSON_CreateString((char *) stream.data));
     	} else {
     		cJSON_AddItemToObject(reply, "message", cJSON_CreateString("INVALID CALL"));
    @@ -5921,10 +5920,9 @@ static switch_status_t verto_write_text_frame(switch_core_session_t *session, sw
     	}
     
     	if (switch_buffer_inuse(tech_pvt->text_write_buffer)) {
    -		uint32_t datalen;
     		switch_byte_t data[SWITCH_RTP_MAX_BUF_LEN] = "";
     
    -		if ((datalen = switch_buffer_read(tech_pvt->text_write_buffer, data, 100))) {
    +		if (switch_buffer_read(tech_pvt->text_write_buffer, data, 100)) {
     			cJSON *obj = NULL, *txt = NULL, *params = NULL;
     			jsock_t *jsock;
     
    @@ -6738,6 +6736,26 @@ static void mod_verto_ks_logger(const char *file, const char *func, int line, in
     	va_end(ap);
     }
     
    +static void verto_event_free_subclass() 
    +{
    +	switch_event_free_subclass(MY_EVENT_LOGIN);
    +	switch_event_free_subclass(MY_EVENT_CLIENT_DISCONNECT);
    +	switch_event_free_subclass(MY_EVENT_CLIENT_CONNECT);
    +}
    +
    +static void verto_destroy_globals_hash_tables()
    +{
    +	if (verto_globals.method_hash) {
    +		switch_core_hash_destroy(&verto_globals.method_hash);
    +	}
    +	if (verto_globals.event_channel_hash) {
    +		switch_core_hash_destroy(&verto_globals.event_channel_hash);
    +	}
    +	if (verto_globals.jsock_hash) {
    +		switch_core_hash_destroy(&verto_globals.jsock_hash);
    +	}
    +}
    +
     /* Macro expands to: switch_status_t mod_verto_load(switch_loadable_module_interface_t **module_interface, switch_memory_pool_t *pool) */
     SWITCH_MODULE_LOAD_FUNCTION(mod_verto_load)
     {
    @@ -6752,16 +6770,22 @@ SWITCH_MODULE_LOAD_FUNCTION(mod_verto_load)
     	ks_init();
     
     	if (switch_event_reserve_subclass(MY_EVENT_LOGIN) != SWITCH_STATUS_SUCCESS) {
    +		ks_shutdown();
     		switch_log_printf(SWITCH_CHANNEL_LOG, SWITCH_LOG_ERROR, "Couldn't register subclass %s!\n", MY_EVENT_LOGIN);
     		return SWITCH_STATUS_TERM;
     	}
     
     	if (switch_event_reserve_subclass(MY_EVENT_CLIENT_DISCONNECT) != SWITCH_STATUS_SUCCESS) {
    +		switch_event_free_subclass(MY_EVENT_LOGIN);
    +		ks_shutdown();
     		switch_log_printf(SWITCH_CHANNEL_LOG, SWITCH_LOG_ERROR, "Couldn't register subclass %s!\n", MY_EVENT_CLIENT_DISCONNECT);
     		return SWITCH_STATUS_TERM;
     	}
     
     	if (switch_event_reserve_subclass(MY_EVENT_CLIENT_CONNECT) != SWITCH_STATUS_SUCCESS) {
    +		switch_event_free_subclass(MY_EVENT_LOGIN);
    +		switch_event_free_subclass(MY_EVENT_CLIENT_DISCONNECT);
    +		ks_shutdown();
     		switch_log_printf(SWITCH_CHANNEL_LOG, SWITCH_LOG_ERROR, "Couldn't register subclass %s!\n", MY_EVENT_CLIENT_CONNECT);
     		return SWITCH_STATUS_TERM;
     	}
    @@ -6812,7 +6836,14 @@ SWITCH_MODULE_LOAD_FUNCTION(mod_verto_load)
     
     	r = init();
     
    -	if (r) return SWITCH_STATUS_TERM;
    +	if (r) {
    +		switch_core_hash_destroy(&json_GLOBALS.store_hash);
    +		verto_event_free_subclass();
    +		switch_event_channel_unbind(NULL, verto_broadcast, NULL);
    +		verto_destroy_globals_hash_tables();
    +		ks_shutdown();
    +		return SWITCH_STATUS_TERM;
    +	}
     
     	if (verto_globals.kslog_on == SWITCH_TRUE) {
     		ks_global_set_logger(mod_verto_ks_logger);
    @@ -6850,6 +6881,12 @@ SWITCH_MODULE_LOAD_FUNCTION(mod_verto_load)
     
     	if (verto_globals.enable_fs_events) {
     		if (switch_event_bind(modname, SWITCH_EVENT_ALL, SWITCH_EVENT_SUBCLASS_ANY, event_handler, NULL) != SWITCH_STATUS_SUCCESS) {
    +			verto_event_free_subclass();
    +			switch_event_channel_unbind(NULL, verto_broadcast, NULL);
    +			switch_core_hash_destroy(&json_GLOBALS.store_hash);
    +			verto_destroy_globals_hash_tables();
    +			ks_global_set_logger(NULL);
    +			ks_shutdown();
     			switch_log_printf(SWITCH_CHANNEL_LOG, SWITCH_LOG_ERROR, "Couldn't bind!\n");
     			return SWITCH_STATUS_GENERR;
     		}
    @@ -6867,9 +6904,7 @@ SWITCH_MODULE_LOAD_FUNCTION(mod_verto_load)
     SWITCH_MODULE_SHUTDOWN_FUNCTION(mod_verto_shutdown)
     {
     
    -	switch_event_free_subclass(MY_EVENT_LOGIN);
    -	switch_event_free_subclass(MY_EVENT_CLIENT_DISCONNECT);
    -	switch_event_free_subclass(MY_EVENT_CLIENT_CONNECT);
    +	verto_event_free_subclass();
     
     	json_cleanup();
     	switch_core_hash_destroy(&json_GLOBALS.store_hash);
    @@ -6883,9 +6918,7 @@ SWITCH_MODULE_SHUTDOWN_FUNCTION(mod_verto_shutdown)
     	attach_wake();
     	attach_wake();
     
    -	switch_core_hash_destroy(&verto_globals.method_hash);
    -	switch_core_hash_destroy(&verto_globals.event_channel_hash);
    -	switch_core_hash_destroy(&verto_globals.jsock_hash);
    +	verto_destroy_globals_hash_tables();
     
     	ks_global_set_logger(NULL);
     	ks_shutdown();
    diff --git a/src/mod/event_handlers/mod_amqp/mod_amqp.h b/src/mod/event_handlers/mod_amqp/mod_amqp.h
    index 53ea03836c5..0717876040d 100644
    --- a/src/mod/event_handlers/mod_amqp/mod_amqp.h
    +++ b/src/mod/event_handlers/mod_amqp/mod_amqp.h
    @@ -43,6 +43,7 @@
     #include 
     #include 
     #include 
    +#include 
     
     #ifndef _MSC_VER
     #include 
    @@ -74,6 +75,8 @@ typedef struct mod_amqp_connection_s {
       char *password;
       unsigned int port;
       unsigned int heartbeat; /* in seconds */
    +  amqp_boolean_t ssl_on;
    +  amqp_boolean_t ssl_verify_peer;
       amqp_connection_state_t state;
     
       struct mod_amqp_connection_s *next;
    diff --git a/src/mod/event_handlers/mod_amqp/mod_amqp_command.c b/src/mod/event_handlers/mod_amqp/mod_amqp_command.c
    index c98c123c070..2789a6e2525 100644
    --- a/src/mod/event_handlers/mod_amqp/mod_amqp_command.c
    +++ b/src/mod/event_handlers/mod_amqp/mod_amqp_command.c
    @@ -274,11 +274,11 @@ static void mod_amqp_command_response(mod_amqp_command_profile_t *profile, char
     
     void * SWITCH_THREAD_FUNC mod_amqp_command_thread(switch_thread_t *thread, void *data)
     {
    +	amqp_bytes_t queueName = { 0, NULL };
     	mod_amqp_command_profile_t *profile = (mod_amqp_command_profile_t *) data;
     
     	while (profile->running) {
     		amqp_queue_declare_ok_t *recv_queue;
    -		amqp_bytes_t queueName = { 0, NULL };
     
     		/* Ensure we have an AMQP connection */
     		if (!profile->conn_active) {
    diff --git a/src/mod/event_handlers/mod_amqp/mod_amqp_connection.c b/src/mod/event_handlers/mod_amqp/mod_amqp_connection.c
    index 1da96328f9d..91feec93d5c 100644
    --- a/src/mod/event_handlers/mod_amqp/mod_amqp_connection.c
    +++ b/src/mod/event_handlers/mod_amqp/mod_amqp_connection.c
    @@ -116,6 +116,14 @@ switch_status_t mod_amqp_connection_open(mod_amqp_connection_t *connections, mod
     	amqp_status = -1;
     
     	while (connection_attempt && amqp_status){
    +		if (connection_attempt->ssl_on == 1) {
    +			amqp_set_initialize_ssl_library(connection_attempt->ssl_on);
    +			if (!(socket = amqp_ssl_socket_new(newConnection))) {
    +				switch_log_printf(SWITCH_CHANNEL_LOG, SWITCH_LOG_CRIT, "Could not create SSL socket\n");
    +				goto err;
    +			}
    +			amqp_ssl_socket_set_verify_peer(socket, connection_attempt->ssl_verify_peer);
    +		}
     		switch_log_printf(SWITCH_CHANNEL_LOG, SWITCH_LOG_DEBUG, "Profile[%s] trying to connect to AMQP broker %s:%d\n",
     						  profile_name, connection_attempt->hostname, connection_attempt->port);
     
    @@ -191,6 +199,8 @@ switch_status_t mod_amqp_connection_create(mod_amqp_connection_t **conn, switch_
     	char *name = (char *) switch_xml_attr_soft(cfg, "name");
     	char *hostname = NULL, *virtualhost = NULL, *username = NULL, *password = NULL;
     	unsigned int port = 0, heartbeat = 0;
    +	amqp_boolean_t ssl_on = 0;
    +	amqp_boolean_t ssl_verify_peer = 1;
     
     	if (zstr(name)) {
     		switch_log_printf(SWITCH_CHANNEL_LOG, SWITCH_LOG_CRIT, "Connection missing name attribute\n%s\n", switch_xml_toxml(cfg, 1));
    @@ -233,6 +243,10 @@ switch_status_t mod_amqp_connection_create(mod_amqp_connection_t **conn, switch_
     			if (interval && interval > 0) {
     				heartbeat = interval;
     			}
    +		} else if (!strncmp(var, "ssl_on", 3) && switch_true(val) == SWITCH_TRUE) {
    +			ssl_on = 1;
    +		} else if (!strncmp(var, "ssl_verify_peer", 15) && switch_true(val) == SWITCH_FALSE) {
    +			ssl_verify_peer = 0;
     		}
     	}
     
    @@ -242,6 +256,8 @@ switch_status_t mod_amqp_connection_create(mod_amqp_connection_t **conn, switch_
     	new_con->password = password ? password : "guest";
     	new_con->port = port ? port : 5672;
     	new_con->heartbeat = heartbeat ? heartbeat : 0;
    +	new_con->ssl_on = ssl_on;
    +	new_con->ssl_verify_peer = ssl_verify_peer;
     
     	*conn = new_con;
     	return SWITCH_STATUS_SUCCESS;
    diff --git a/src/mod/event_handlers/mod_amqp/mod_amqp_utils.c b/src/mod/event_handlers/mod_amqp/mod_amqp_utils.c
    index 7ebcff6e3fe..03a0f262c0e 100644
    --- a/src/mod/event_handlers/mod_amqp/mod_amqp_utils.c
    +++ b/src/mod/event_handlers/mod_amqp/mod_amqp_utils.c
    @@ -193,6 +193,7 @@ switch_status_t mod_amqp_do_config(switch_bool_t reload)
     		switch_log_printf(SWITCH_CHANNEL_LOG, SWITCH_LOG_WARNING, "Unable to locate logging section for mod_amqp\n" );
     	}
     
    +	switch_xml_free(xml);
     	return SWITCH_STATUS_SUCCESS;
     }
     
    diff --git a/src/mod/event_handlers/mod_event_multicast/mod_event_multicast.c b/src/mod/event_handlers/mod_event_multicast/mod_event_multicast.c
    index 206824baf3b..1ebf5cb7fed 100644
    --- a/src/mod/event_handlers/mod_event_multicast/mod_event_multicast.c
    +++ b/src/mod/event_handlers/mod_event_multicast/mod_event_multicast.c
    @@ -290,7 +290,7 @@ static switch_status_t initialize_sockets(switch_xml_t input_cfg)
     	dst_host_count = switch_separate_string(globals.dst_addrs, ',', dst_hosts, MAX_DST_HOSTS);
     	for (i = 0; i < dst_host_count; i++) {
     		char *ip_addr_groups[8] = { 0 };
    -		char host_string[sizeof(dst_hosts[i])];
    +		char *host_string;
     		char ipv6_first_octet[3];
     
     		memset(&globals.dst_sockaddrs[globals.num_dst_addrs].sockaddr, 0, sizeof(dst_sockaddr_t));
    @@ -315,7 +315,8 @@ static switch_status_t initialize_sockets(switch_xml_t input_cfg)
     		}
     
     		/* flag this address with the address type */
    -		strcpy(host_string, dst_hosts[i]);
    +		host_string = strdup(dst_hosts[i]);
    +
     		if (switch_sockaddr_get_family(globals.dst_sockaddrs[globals.num_dst_addrs].sockaddr) == SWITCH_INET) {
     			globals.has_udp = 1;
     			switch_separate_string(host_string, '.', ip_addr_groups, sizeof(ip_addr_groups) / sizeof(ip_addr_groups[0]));
    @@ -347,6 +348,7 @@ static switch_status_t initialize_sockets(switch_xml_t input_cfg)
     		switch_log_printf(SWITCH_CHANNEL_LOG, SWITCH_LOG_DEBUG, "Added %s peer: %s", addr_type_names[globals.dst_sockaddrs[globals.num_dst_addrs].addrtype], dst_hosts[i]);
     		globals.dst_sockaddrs[globals.num_dst_addrs].ipaddr = switch_core_strdup(module_pool, dst_hosts[i]);
     		globals.num_dst_addrs++;
    +		switch_safe_free(host_string);
     	}
     
     	/* create IPv4 source socket */
    diff --git a/src/mod/event_handlers/mod_event_socket/mod_event_socket.c b/src/mod/event_handlers/mod_event_socket/mod_event_socket.c
    index d60db15112f..70331a95e28 100644
    --- a/src/mod/event_handlers/mod_event_socket/mod_event_socket.c
    +++ b/src/mod/event_handlers/mod_event_socket/mod_event_socket.c
    @@ -377,7 +377,7 @@ static void event_handler(switch_event_t *event)
     			if (!uuid || (l->session && strcmp(uuid, switch_core_session_get_uuid(l->session)))) {
     				send = 0;
     			}
    -			if (!strcmp(switch_core_session_get_uuid(l->session), switch_event_get_header_nil(event, "Job-Owner-UUID"))) {
    +			if (l->session && !strcmp(switch_core_session_get_uuid(l->session), switch_event_get_header_nil(event, "Job-Owner-UUID"))) {
     			    send = 1;
     			}
     		}
    @@ -3007,7 +3007,7 @@ SWITCH_MODULE_RUNTIME_FUNCTION(mod_event_socket_runtime)
     		}
     
     
    -		if ((rv = switch_socket_accept(&inbound_socket, listen_list.sock, listener_pool))) {
    +		if (switch_socket_accept(&inbound_socket, listen_list.sock, listener_pool)) {
     			if (prefs.done) {
     				switch_log_printf(SWITCH_CHANNEL_LOG, SWITCH_LOG_NOTICE, "Shutting Down\n");
     				goto end;
    diff --git a/src/mod/event_handlers/mod_json_cdr/conf/autoload_configs/json_cdr.conf.xml b/src/mod/event_handlers/mod_json_cdr/conf/autoload_configs/json_cdr.conf.xml
    index 18626562773..af30c67c07b 100644
    --- a/src/mod/event_handlers/mod_json_cdr/conf/autoload_configs/json_cdr.conf.xml
    +++ b/src/mod/event_handlers/mod_json_cdr/conf/autoload_configs/json_cdr.conf.xml
    @@ -23,6 +23,8 @@
     			
     			
     			
    +			
    +			
     			
     			
     			
    diff --git a/src/mod/event_handlers/mod_json_cdr/mod_json_cdr.c b/src/mod/event_handlers/mod_json_cdr/mod_json_cdr.c
    index fc4794a4829..7f66aa425a8 100644
    --- a/src/mod/event_handlers/mod_json_cdr/mod_json_cdr.c
    +++ b/src/mod/event_handlers/mod_json_cdr/mod_json_cdr.c
    @@ -70,6 +70,7 @@ static struct {
     	int disable100continue;
     	int rotate;
     	long auth_scheme;
    +	int timeout;
     	switch_memory_pool_t *pool;
     	switch_event_node_t *node;
     	int encode_values;
    @@ -361,8 +362,10 @@ static void process_cdr(cdr_data_t *data)
     			switch_curl_easy_setopt(curl_handle, CURLOPT_CAINFO, globals.ssl_cacert_file);
     		}
     
    +		// tcp timeout
    +		switch_curl_easy_setopt(curl_handle, CURLOPT_TIMEOUT, globals.timeout);
    +
     		/* these were used for testing, optionally they may be enabled if someone desires
    -		   switch_curl_easy_setopt(curl_handle, CURLOPT_TIMEOUT, 120); // tcp timeout
     		   switch_curl_easy_setopt(curl_handle, CURLOPT_FOLLOWLOCATION, 1); // 302 recursion level
     		 */
     
    @@ -607,6 +610,14 @@ SWITCH_MODULE_LOAD_FUNCTION(mod_json_cdr_load)
     				globals.log_http_and_disk = switch_true(val);
     			} else if (!strcasecmp(var, "log-errors-to-disk")) {
     				globals.log_errors_to_disk = !switch_false(val);
    +			} else if (!strcasecmp(var, "timeout")) {
    +				int tmp = atoi(val);
    +				if (tmp >= 0) {
    +					globals.timeout = tmp;
    +				} else {
    +					globals.timeout = 0;
    +					switch_log_printf(SWITCH_CHANNEL_LOG, SWITCH_LOG_ERROR, "Can't set a negative timeout!\n");
    +				}
     			} else if (!strcasecmp(var, "delay") && !zstr(val)) {
     				globals.delay = (uint32_t) atoi(val);
     			} else if (!strcasecmp(var, "log-b-leg")) {
    diff --git a/src/mod/event_handlers/mod_kazoo/kazoo_ei_config.c b/src/mod/event_handlers/mod_kazoo/kazoo_ei_config.c
    index b2f3baf9632..f1726b677be 100644
    --- a/src/mod/event_handlers/mod_kazoo/kazoo_ei_config.c
    +++ b/src/mod/event_handlers/mod_kazoo/kazoo_ei_config.c
    @@ -53,7 +53,6 @@ static int read_cookie_from_file(char *filename) {
     	char cookie[MAXATOMLEN + 1];
     	char *end;
     	struct stat buf;
    -	ssize_t res;
     
     	if (!stat(filename, &buf)) {
     		if ((buf.st_mode & S_IRWXG) || (buf.st_mode & S_IRWXO)) {
    @@ -70,7 +69,7 @@ static int read_cookie_from_file(char *filename) {
     			return 2;
     		}
     
    -		if ((res = read(fd, cookie, MAXATOMLEN)) < 1) {
    +		if (read(fd, cookie, MAXATOMLEN) < 1) {
     			switch_log_printf(SWITCH_CHANNEL_LOG, SWITCH_LOG_ERROR, "Unable to read cookie file %s : %d.\n", filename, errno);
     		}
     
    diff --git a/src/mod/event_handlers/mod_rayo/conf/autoload_configs/rayo.conf.xml b/src/mod/event_handlers/mod_rayo/conf/autoload_configs/rayo.conf.xml
    index e5191909cb0..9f525c597ce 100644
    --- a/src/mod/event_handlers/mod_rayo/conf/autoload_configs/rayo.conf.xml
    +++ b/src/mod/event_handlers/mod_rayo/conf/autoload_configs/rayo.conf.xml
    @@ -277,36 +277,6 @@
     				
     			]]>
     		
    -		
    -			
    -					
    -								yesno
    -					]]]]>
    -					
    -				
    -			]]>
    -		
    -		
    -			
    -					
    -								yesno
    -					]]]]>
    -					
    -				
    -			]]>
    -		
     
     		
     			socket, pool))) {
    +		if (switch_socket_accept(&socket, listener->socket, pool)) {
     			if (context->shutdown) {
     				switch_log_printf(SWITCH_CHANNEL_LOG, SWITCH_LOG_NOTICE, "Shutting down xmpp listener\n");
     				goto end;
    diff --git a/src/mod/formats/mod_local_stream/mod_local_stream.c b/src/mod/formats/mod_local_stream/mod_local_stream.c
    index a38411e9547..b3898ab2006 100644
    --- a/src/mod/formats/mod_local_stream/mod_local_stream.c
    +++ b/src/mod/formats/mod_local_stream/mod_local_stream.c
    @@ -311,6 +311,7 @@ static void *SWITCH_THREAD_FUNC read_stream_thread(switch_thread_t *thread, void
     			switch_size_t olen;
     			const char *artist = NULL, *title = NULL;
     			char tmp_space[128] = "";
    +			const char *l;
     
     			if (fd > -1) {
     				char *pb;
    @@ -330,7 +331,7 @@ static void *SWITCH_THREAD_FUNC read_stream_thread(switch_thread_t *thread, void
     
     				switch_snprintf(path_buf, sizeof(path_buf), "%s%s%s", source->location, SWITCH_PATH_SEPARATOR, fname);
     
    -				if (switch_stristr(".loc", path_buf)) {
    +				if ((l = switch_stristr(".loc", fname)) && (l == fname + strlen(fname) - 4)) {
     					if ((fd = open(path_buf, O_RDONLY)) < 0) {
     						switch_log_printf(SWITCH_CHANNEL_LOG, SWITCH_LOG_ERROR, "Can't open %s\n", fname);
     						switch_yield(1000000);
    @@ -1366,7 +1367,6 @@ SWITCH_STANDARD_API(local_stream_function)
     	char *mycmd = NULL, *argv[5] = { 0 };
     	char *local_stream_name = NULL;
     	int argc = 0;
    -	int ok = 0;
     
     	if (zstr(cmd)) {
     		goto usage;
    @@ -1460,7 +1460,7 @@ SWITCH_STANDARD_API(local_stream_function)
     			stream->write_function(stream, "+OK stream: %s", source->name);
     			switch_thread_rwlock_unlock(source->rwlock);
     		} else {
    -			if ((ok = launch_streams(local_stream_name))) {
    +			if (launch_streams(local_stream_name)) {
     				stream->write_function(stream, "+OK stream: %s", local_stream_name);
     			}
     		}
    diff --git a/src/mod/formats/mod_opusfile/mod_opusfile.c b/src/mod/formats/mod_opusfile/mod_opusfile.c
    index 38f5d1f4421..afd5f512676 100644
    --- a/src/mod/formats/mod_opusfile/mod_opusfile.c
    +++ b/src/mod/formats/mod_opusfile/mod_opusfile.c
    @@ -363,6 +363,7 @@ static switch_status_t switch_opusfile_close(switch_file_handle_t *handle)
     	}
     #ifdef HAVE_OPUSFILE_ENCODE
     	if (context->enc) {
    +		ope_encoder_drain(context->enc);
     		ope_encoder_destroy(context->enc);
     	}
     	if (context->comments) {
    @@ -930,7 +931,7 @@ static int decode_stream_cb(void *dcontext, unsigned char *data, int nbytes)
     	if (globals.debug) {
     		switch_log_printf(SWITCH_CHANNEL_LOG, SWITCH_LOG_DEBUG, "[OGG/OPUS Stream Decode] decode CB called: context: %p data: %p packet_len: %d\n", 
     				(void *)context, data, nbytes);
    -		switch_log_printf(SWITCH_CHANNEL_LOG, SWITCH_LOG_DEBUG, "[OGG/OPUS Stream Decode] decode_stream_cb(): switch_thread_self(): %lx\n",  switch_thread_self());
    +		switch_log_printf(SWITCH_CHANNEL_LOG, SWITCH_LOG_DEBUG, "[OGG/OPUS Stream Decode] decode_stream_cb(): switch_thread_self(): %lx\n", (unsigned long)(intptr_t)switch_thread_self());
     	}
     
     	switch_mutex_lock(context->ogg_mutex);
    @@ -973,7 +974,7 @@ static void *SWITCH_THREAD_FUNC read_stream_thread(switch_thread_t *thread, void
     	int buffered_ogg_bytes;
     
     	if (globals.debug) {
    -		switch_log_printf(SWITCH_CHANNEL_LOG, SWITCH_LOG_DEBUG, "[OGG/OPUS Stream Decode] read_stream_thread(): switch_thread_self(): 0x%lx\n",  switch_thread_self());
    +		switch_log_printf(SWITCH_CHANNEL_LOG, SWITCH_LOG_DEBUG, "[OGG/OPUS Stream Decode] read_stream_thread(): switch_thread_self(): 0x%lx\n", (unsigned long)(intptr_t)switch_thread_self());
     	}
     	switch_thread_rwlock_rdlock(context->rwlock);
     	switch_mutex_lock(context->ogg_mutex);
    diff --git a/src/mod/formats/mod_shout/Makefile.am b/src/mod/formats/mod_shout/Makefile.am
    index 7fd8e01ab35..ace4ce4af40 100644
    --- a/src/mod/formats/mod_shout/Makefile.am
    +++ b/src/mod/formats/mod_shout/Makefile.am
    @@ -16,7 +16,7 @@ else
     install: error
     all: error
     error:
    -       $(error You must install libmp3lame-dev to build mod_shout)
    +	$(error You must install libmp3lame-dev to build mod_shout)
     endif
     
     else
    diff --git a/src/mod/formats/mod_ssml/Makefile.am b/src/mod/formats/mod_ssml/Makefile.am
    index 9a54b5e7109..c3a6d837109 100644
    --- a/src/mod/formats/mod_ssml/Makefile.am
    +++ b/src/mod/formats/mod_ssml/Makefile.am
    @@ -26,6 +26,8 @@ TESTS = $(noinst_PROGRAMS)
     
     BUILT_SOURCES=$(IKS_LA)
     
    -$(IKS_LA): $(IKS_DIR) $(IKS_DIR)/.update
    +$(IKS_LA): $(IKS_BUILDDIR) $(IKS_DIR) $(IKS_DIR)/.update
     	@cd $(IKS_DIR) && $(MAKE)
     	@$(TOUCH_TARGET)
    +
    +deps: $(IKS_LA)
    diff --git a/src/mod/formats/mod_tone_stream/mod_tone_stream.c b/src/mod/formats/mod_tone_stream/mod_tone_stream.c
    index e3d5d260747..412baacf1dc 100644
    --- a/src/mod/formats/mod_tone_stream/mod_tone_stream.c
    +++ b/src/mod/formats/mod_tone_stream/mod_tone_stream.c
    @@ -130,7 +130,6 @@ static switch_status_t tone_stream_file_open(switch_file_handle_t *handle, const
     	char *tmp;
     	int fd = -1;
     	char buf[1024] = "";
    -	size_t len;
     
     	memset(&ts, 0, sizeof(ts));
     
    @@ -172,7 +171,7 @@ static switch_status_t tone_stream_file_open(switch_file_handle_t *handle, const
     			return SWITCH_STATUS_FALSE;
     		}
     
    -		while ((len = switch_fd_read_line(fd, buf, sizeof(buf)))) {
    +		while (switch_fd_read_line(fd, buf, sizeof(buf))) {
     			teletone_run(&ts, buf);
     		}
     		close(fd);
    diff --git a/src/mod/languages/mod_lua/freeswitch_lua.cpp b/src/mod/languages/mod_lua/freeswitch_lua.cpp
    index 50d07783369..5d89aa28f94 100644
    --- a/src/mod/languages/mod_lua/freeswitch_lua.cpp
    +++ b/src/mod/languages/mod_lua/freeswitch_lua.cpp
    @@ -568,11 +568,11 @@ void JSON::LuaTable2cJSON(lua_State *L, int index, cJSON **json)
     
     		switch_assert(*json);
     
    -		if (lua_isnumber(L, -2)) {
    +		if (lua_type(L, -2) == LUA_TNUMBER) {
     			ADDITEM(*json, key, cJSON_CreateNumber(lua_tonumber(L, -2)));
    -		} else if (lua_isstring(L, -2)) {
    +		} else if (lua_type(L, -2) == LUA_TSTRING) {
     			ADDITEM(*json, key, cJSON_CreateString(lua_tostring(L, -2)));
    -		} else if (lua_isboolean(L, -2)) {
    +		} else if (lua_type(L, -2) == LUA_TBOOLEAN) {
     			ADDITEM(*json, key, cJSON_CreateBool(lua_toboolean(L, -2)));
     		} else if (lua_isnil(L, -2)) {
     			ADDITEM(*json, key, cJSON_CreateNull());
    diff --git a/src/mod/languages/mod_lua/mod_lua.cpp b/src/mod/languages/mod_lua/mod_lua.cpp
    index 63aaf25fc06..b1d19428dcd 100644
    --- a/src/mod/languages/mod_lua/mod_lua.cpp
    +++ b/src/mod/languages/mod_lua/mod_lua.cpp
    @@ -241,7 +241,6 @@ static switch_xml_t lua_fetch(const char *section,
     	if (!zstr(globals.xml_handler)) {
     		L = lua_init();
     		const char *str;
    -		int error;
     
     		mycmd = strdup(globals.xml_handler);
     		switch_assert(mycmd);
    @@ -266,7 +265,7 @@ static switch_xml_t lua_fetch(const char *section,
     			mod_lua_conjure_event(L, params, "params", 1);
     		}
     
    -		if((error = lua_parse_and_execute(L, mycmd, NULL))){
    +		if(lua_parse_and_execute(L, mycmd, NULL)){
     		    switch_log_printf(SWITCH_CHANNEL_LOG, SWITCH_LOG_ERROR, "LUA script parse/execute error!\n");
     		    goto end;
     		}
    @@ -522,7 +521,6 @@ SWITCH_STANDARD_API(lua_api_function)
     {
     
     	char *mycmd;
    -	int error;
     
     	if (zstr(cmd)) {
     		stream->write_function(stream, "");
    @@ -541,7 +539,7 @@ SWITCH_STANDARD_API(lua_api_function)
     			mod_lua_conjure_event(L, stream->param_event, "env", 1);
     		}
     
    -		if ((error = lua_parse_and_execute(L, mycmd, session))) {
    +		if (lua_parse_and_execute(L, mycmd, session)) {
     			char * http = switch_event_get_header(stream->param_event, "http-uri");
     			if (http && (!strncasecmp(http, "/api/", 5) || !strncasecmp(http, "/webapi/", 8))) {
     					/* api -> fs api streams the Content-Type e.g. text/html or text/xml               */
    diff --git a/src/mod/languages/mod_lua/test/test_json.lua b/src/mod/languages/mod_lua/test/test_json.lua
    index b8f358f8163..9ac2c062842 100644
    --- a/src/mod/languages/mod_lua/test/test_json.lua
    +++ b/src/mod/languages/mod_lua/test/test_json.lua
    @@ -108,5 +108,11 @@ freeswitch.consoleLog("INFO", ret .. "\n")
     ret = json:execute2(json:encode(cmd))
     freeswitch.consoleLog("INFO", ret .. "\n")
     
    +sn = json:encode({s = "1001", n = 1002})
    +freeswitch.consoleLog("INFO", sn .. "\n")
    +ret = json:decode(sn)
    +assert(ret.s == "1001")
    +assert(ret.n == 1002)
    +
     -- assert(false)
     stream:write("+OK")
    diff --git a/src/mod/languages/mod_managed/freeswitch_wrap.cxx b/src/mod/languages/mod_managed/freeswitch_wrap.cxx
    index 7443ed5232f..4ded90cb0e4 100644
    --- a/src/mod/languages/mod_managed/freeswitch_wrap.cxx
    +++ b/src/mod/languages/mod_managed/freeswitch_wrap.cxx
    @@ -28820,6 +28820,28 @@ SWIGEXPORT int SWIGSTDCALL CSharp_FreeSWITCHfNative_switch_file_handle_vol_get__
     }
     
     
    +SWIGEXPORT void SWIGSTDCALL CSharp_FreeSWITCHfNative_switch_file_handle_volgranular_set___(void * jarg1, int jarg2) {
    +  switch_file_handle *arg1 = (switch_file_handle *) 0 ;
    +  int32_t arg2 ;
    +  
    +  arg1 = (switch_file_handle *)jarg1; 
    +  arg2 = (int32_t)jarg2; 
    +  if (arg1) (arg1)->volgranular = arg2;
    +}
    +
    +
    +SWIGEXPORT int SWIGSTDCALL CSharp_FreeSWITCHfNative_switch_file_handle_volgranular_get___(void * jarg1) {
    +  int jresult ;
    +  switch_file_handle *arg1 = (switch_file_handle *) 0 ;
    +  int32_t result;
    +  
    +  arg1 = (switch_file_handle *)jarg1; 
    +  result = (int32_t) ((arg1)->volgranular);
    +  jresult = result; 
    +  return jresult;
    +}
    +
    +
     SWIGEXPORT void SWIGSTDCALL CSharp_FreeSWITCHfNative_switch_file_handle_resampler_set___(void * jarg1, void * jarg2) {
       switch_file_handle *arg1 = (switch_file_handle *) 0 ;
       switch_audio_resampler_t *arg2 = (switch_audio_resampler_t *) 0 ;
    diff --git a/src/mod/languages/mod_managed/managed/swig.cs b/src/mod/languages/mod_managed/managed/swig.cs
    index 901476e9f18..06858aa6b93 100644
    --- a/src/mod/languages/mod_managed/managed/swig.cs
    +++ b/src/mod/languages/mod_managed/managed/swig.cs
    @@ -1001,35 +1001,6 @@ protected SWIGTYPE_p_a_2__icand_s() {
     
     namespace FreeSWITCH.Native {
     
    -public class SWIGTYPE_p_apr_pool_t {
    -  private global::System.Runtime.InteropServices.HandleRef swigCPtr;
    -
    -  internal SWIGTYPE_p_apr_pool_t(global::System.IntPtr cPtr, bool futureUse) {
    -    swigCPtr = new global::System.Runtime.InteropServices.HandleRef(this, cPtr);
    -  }
    -
    -  protected SWIGTYPE_p_apr_pool_t() {
    -    swigCPtr = new global::System.Runtime.InteropServices.HandleRef(null, global::System.IntPtr.Zero);
    -  }
    -
    -  internal static global::System.Runtime.InteropServices.HandleRef getCPtr(SWIGTYPE_p_apr_pool_t obj) {
    -    return (obj == null) ? new global::System.Runtime.InteropServices.HandleRef(null, global::System.IntPtr.Zero) : obj.swigCPtr;
    -  }
    -}
    -
    -}
    -//------------------------------------------------------------------------------
    -// 
    -//
    -// This file was automatically generated by SWIG (http://www.swig.org).
    -// Version 3.0.12
    -//
    -// Do not make changes to this file unless you know what you are doing--modify
    -// the SWIG interface file instead.
    -//------------------------------------------------------------------------------
    -
    -namespace FreeSWITCH.Native {
    -
     public class SWIGTYPE_p_cJSON {
       private global::System.Runtime.InteropServices.HandleRef swigCPtr;
     
    @@ -1117,18 +1088,18 @@ protected SWIGTYPE_p_f_p_p_switch_database_interface_handle__switch_status_t() {
     
     namespace FreeSWITCH.Native {
     
    -public class SWIGTYPE_p_f_p_p_switch_loadable_module_interface_p_apr_pool_t__switch_status_t {
    +public class SWIGTYPE_p_f_p_p_switch_loadable_module_interface_p_fspr_pool_t__switch_status_t {
       private global::System.Runtime.InteropServices.HandleRef swigCPtr;
     
    -  internal SWIGTYPE_p_f_p_p_switch_loadable_module_interface_p_apr_pool_t__switch_status_t(global::System.IntPtr cPtr, bool futureUse) {
    +  internal SWIGTYPE_p_f_p_p_switch_loadable_module_interface_p_fspr_pool_t__switch_status_t(global::System.IntPtr cPtr, bool futureUse) {
         swigCPtr = new global::System.Runtime.InteropServices.HandleRef(this, cPtr);
       }
     
    -  protected SWIGTYPE_p_f_p_p_switch_loadable_module_interface_p_apr_pool_t__switch_status_t() {
    +  protected SWIGTYPE_p_f_p_p_switch_loadable_module_interface_p_fspr_pool_t__switch_status_t() {
         swigCPtr = new global::System.Runtime.InteropServices.HandleRef(null, global::System.IntPtr.Zero);
       }
     
    -  internal static global::System.Runtime.InteropServices.HandleRef getCPtr(SWIGTYPE_p_f_p_p_switch_loadable_module_interface_p_apr_pool_t__switch_status_t obj) {
    +  internal static global::System.Runtime.InteropServices.HandleRef getCPtr(SWIGTYPE_p_f_p_p_switch_loadable_module_interface_p_fspr_pool_t__switch_status_t obj) {
         return (obj == null) ? new global::System.Runtime.InteropServices.HandleRef(null, global::System.IntPtr.Zero) : obj.swigCPtr;
       }
     }
    @@ -2451,18 +2422,18 @@ protected SWIGTYPE_p_f_p_switch_core_session_p_switch_event__switch_status_t() {
     
     namespace FreeSWITCH.Native {
     
    -public class SWIGTYPE_p_f_p_switch_core_session_p_switch_event_p_switch_caller_profile_p_p_switch_core_session_p_p_apr_pool_t_unsigned_long_p_enum_switch_call_cause_t__switch_call_cause_t {
    +public class SWIGTYPE_p_f_p_switch_core_session_p_switch_event_p_switch_caller_profile_p_p_switch_core_session_p_p_fspr_pool_t_unsigned_long_p_enum_switch_call_cause_t__switch_call_cause_t {
       private global::System.Runtime.InteropServices.HandleRef swigCPtr;
     
    -  internal SWIGTYPE_p_f_p_switch_core_session_p_switch_event_p_switch_caller_profile_p_p_switch_core_session_p_p_apr_pool_t_unsigned_long_p_enum_switch_call_cause_t__switch_call_cause_t(global::System.IntPtr cPtr, bool futureUse) {
    +  internal SWIGTYPE_p_f_p_switch_core_session_p_switch_event_p_switch_caller_profile_p_p_switch_core_session_p_p_fspr_pool_t_unsigned_long_p_enum_switch_call_cause_t__switch_call_cause_t(global::System.IntPtr cPtr, bool futureUse) {
         swigCPtr = new global::System.Runtime.InteropServices.HandleRef(this, cPtr);
       }
     
    -  protected SWIGTYPE_p_f_p_switch_core_session_p_switch_event_p_switch_caller_profile_p_p_switch_core_session_p_p_apr_pool_t_unsigned_long_p_enum_switch_call_cause_t__switch_call_cause_t() {
    +  protected SWIGTYPE_p_f_p_switch_core_session_p_switch_event_p_switch_caller_profile_p_p_switch_core_session_p_p_fspr_pool_t_unsigned_long_p_enum_switch_call_cause_t__switch_call_cause_t() {
         swigCPtr = new global::System.Runtime.InteropServices.HandleRef(null, global::System.IntPtr.Zero);
       }
     
    -  internal static global::System.Runtime.InteropServices.HandleRef getCPtr(SWIGTYPE_p_f_p_switch_core_session_p_switch_event_p_switch_caller_profile_p_p_switch_core_session_p_p_apr_pool_t_unsigned_long_p_enum_switch_call_cause_t__switch_call_cause_t obj) {
    +  internal static global::System.Runtime.InteropServices.HandleRef getCPtr(SWIGTYPE_p_f_p_switch_core_session_p_switch_event_p_switch_caller_profile_p_p_switch_core_session_p_p_fspr_pool_t_unsigned_long_p_enum_switch_call_cause_t__switch_call_cause_t obj) {
         return (obj == null) ? new global::System.Runtime.InteropServices.HandleRef(null, global::System.IntPtr.Zero) : obj.swigCPtr;
       }
     }
    @@ -4162,18 +4133,18 @@ protected SWIGTYPE_p_float() {
     
     namespace FreeSWITCH.Native {
     
    -public class SWIGTYPE_p_in6_addr {
    +public class SWIGTYPE_p_fspr_pool_t {
       private global::System.Runtime.InteropServices.HandleRef swigCPtr;
     
    -  internal SWIGTYPE_p_in6_addr(global::System.IntPtr cPtr, bool futureUse) {
    +  internal SWIGTYPE_p_fspr_pool_t(global::System.IntPtr cPtr, bool futureUse) {
         swigCPtr = new global::System.Runtime.InteropServices.HandleRef(this, cPtr);
       }
     
    -  protected SWIGTYPE_p_in6_addr() {
    +  protected SWIGTYPE_p_fspr_pool_t() {
         swigCPtr = new global::System.Runtime.InteropServices.HandleRef(null, global::System.IntPtr.Zero);
       }
     
    -  internal static global::System.Runtime.InteropServices.HandleRef getCPtr(SWIGTYPE_p_in6_addr obj) {
    +  internal static global::System.Runtime.InteropServices.HandleRef getCPtr(SWIGTYPE_p_fspr_pool_t obj) {
         return (obj == null) ? new global::System.Runtime.InteropServices.HandleRef(null, global::System.IntPtr.Zero) : obj.swigCPtr;
       }
     }
    @@ -4191,18 +4162,18 @@ protected SWIGTYPE_p_in6_addr() {
     
     namespace FreeSWITCH.Native {
     
    -public class SWIGTYPE_p_int {
    +public class SWIGTYPE_p_in6_addr {
       private global::System.Runtime.InteropServices.HandleRef swigCPtr;
     
    -  internal SWIGTYPE_p_int(global::System.IntPtr cPtr, bool futureUse) {
    +  internal SWIGTYPE_p_in6_addr(global::System.IntPtr cPtr, bool futureUse) {
         swigCPtr = new global::System.Runtime.InteropServices.HandleRef(this, cPtr);
       }
     
    -  protected SWIGTYPE_p_int() {
    +  protected SWIGTYPE_p_in6_addr() {
         swigCPtr = new global::System.Runtime.InteropServices.HandleRef(null, global::System.IntPtr.Zero);
       }
     
    -  internal static global::System.Runtime.InteropServices.HandleRef getCPtr(SWIGTYPE_p_int obj) {
    +  internal static global::System.Runtime.InteropServices.HandleRef getCPtr(SWIGTYPE_p_in6_addr obj) {
         return (obj == null) ? new global::System.Runtime.InteropServices.HandleRef(null, global::System.IntPtr.Zero) : obj.swigCPtr;
       }
     }
    @@ -4220,18 +4191,18 @@ protected SWIGTYPE_p_int() {
     
     namespace FreeSWITCH.Native {
     
    -public class SWIGTYPE_p_p_apr_pool_t {
    +public class SWIGTYPE_p_int {
       private global::System.Runtime.InteropServices.HandleRef swigCPtr;
     
    -  internal SWIGTYPE_p_p_apr_pool_t(global::System.IntPtr cPtr, bool futureUse) {
    +  internal SWIGTYPE_p_int(global::System.IntPtr cPtr, bool futureUse) {
         swigCPtr = new global::System.Runtime.InteropServices.HandleRef(this, cPtr);
       }
     
    -  protected SWIGTYPE_p_p_apr_pool_t() {
    +  protected SWIGTYPE_p_int() {
         swigCPtr = new global::System.Runtime.InteropServices.HandleRef(null, global::System.IntPtr.Zero);
       }
     
    -  internal static global::System.Runtime.InteropServices.HandleRef getCPtr(SWIGTYPE_p_p_apr_pool_t obj) {
    +  internal static global::System.Runtime.InteropServices.HandleRef getCPtr(SWIGTYPE_p_int obj) {
         return (obj == null) ? new global::System.Runtime.InteropServices.HandleRef(null, global::System.IntPtr.Zero) : obj.swigCPtr;
       }
     }
    @@ -4307,6 +4278,35 @@ protected SWIGTYPE_p_p_char() {
     
     namespace FreeSWITCH.Native {
     
    +public class SWIGTYPE_p_p_fspr_pool_t {
    +  private global::System.Runtime.InteropServices.HandleRef swigCPtr;
    +
    +  internal SWIGTYPE_p_p_fspr_pool_t(global::System.IntPtr cPtr, bool futureUse) {
    +    swigCPtr = new global::System.Runtime.InteropServices.HandleRef(this, cPtr);
    +  }
    +
    +  protected SWIGTYPE_p_p_fspr_pool_t() {
    +    swigCPtr = new global::System.Runtime.InteropServices.HandleRef(null, global::System.IntPtr.Zero);
    +  }
    +
    +  internal static global::System.Runtime.InteropServices.HandleRef getCPtr(SWIGTYPE_p_p_fspr_pool_t obj) {
    +    return (obj == null) ? new global::System.Runtime.InteropServices.HandleRef(null, global::System.IntPtr.Zero) : obj.swigCPtr;
    +  }
    +}
    +
    +}
    +//------------------------------------------------------------------------------
    +// 
    +//
    +// This file was automatically generated by SWIG (http://www.swig.org).
    +// Version 3.0.12
    +//
    +// Do not make changes to this file unless you know what you are doing--modify
    +// the SWIG interface file instead.
    +//------------------------------------------------------------------------------
    +
    +namespace FreeSWITCH.Native {
    +
     public class SWIGTYPE_p_p_p_char {
       private global::System.Runtime.InteropServices.HandleRef swigCPtr;
     
    @@ -8374,16 +8374,16 @@ public static switch_state_handler_table switch_core_get_state_handler(int index
         return ret;
       }
     
    -  public static void switch_core_memory_pool_tag(SWIGTYPE_p_apr_pool_t pool, string tag) {
    -    freeswitchPINVOKE.switch_core_memory_pool_tag(SWIGTYPE_p_apr_pool_t.getCPtr(pool), tag);
    +  public static void switch_core_memory_pool_tag(SWIGTYPE_p_fspr_pool_t pool, string tag) {
    +    freeswitchPINVOKE.switch_core_memory_pool_tag(SWIGTYPE_p_fspr_pool_t.getCPtr(pool), tag);
       }
     
       public static void switch_core_pool_stats(switch_stream_handle stream) {
         freeswitchPINVOKE.switch_core_pool_stats(switch_stream_handle.getCPtr(stream));
       }
     
    -  public static switch_status_t switch_core_perform_new_memory_pool(SWIGTYPE_p_p_apr_pool_t pool, string file, string func, int line) {
    -    switch_status_t ret = (switch_status_t)freeswitchPINVOKE.switch_core_perform_new_memory_pool(SWIGTYPE_p_p_apr_pool_t.getCPtr(pool), file, func, line);
    +  public static switch_status_t switch_core_perform_new_memory_pool(SWIGTYPE_p_p_fspr_pool_t pool, string file, string func, int line) {
    +    switch_status_t ret = (switch_status_t)freeswitchPINVOKE.switch_core_perform_new_memory_pool(SWIGTYPE_p_p_fspr_pool_t.getCPtr(pool), file, func, line);
         return ret;
       }
     
    @@ -8392,17 +8392,17 @@ public static int switch_core_session_sync_clock() {
         return ret;
       }
     
    -  public static switch_status_t switch_core_perform_destroy_memory_pool(SWIGTYPE_p_p_apr_pool_t pool, string file, string func, int line) {
    -    switch_status_t ret = (switch_status_t)freeswitchPINVOKE.switch_core_perform_destroy_memory_pool(SWIGTYPE_p_p_apr_pool_t.getCPtr(pool), file, func, line);
    +  public static switch_status_t switch_core_perform_destroy_memory_pool(SWIGTYPE_p_p_fspr_pool_t pool, string file, string func, int line) {
    +    switch_status_t ret = (switch_status_t)freeswitchPINVOKE.switch_core_perform_destroy_memory_pool(SWIGTYPE_p_p_fspr_pool_t.getCPtr(pool), file, func, line);
         return ret;
       }
     
    -  public static void switch_core_memory_pool_set_data(SWIGTYPE_p_apr_pool_t pool, string key, SWIGTYPE_p_void data) {
    -    freeswitchPINVOKE.switch_core_memory_pool_set_data(SWIGTYPE_p_apr_pool_t.getCPtr(pool), key, SWIGTYPE_p_void.getCPtr(data));
    +  public static void switch_core_memory_pool_set_data(SWIGTYPE_p_fspr_pool_t pool, string key, SWIGTYPE_p_void data) {
    +    freeswitchPINVOKE.switch_core_memory_pool_set_data(SWIGTYPE_p_fspr_pool_t.getCPtr(pool), key, SWIGTYPE_p_void.getCPtr(data));
       }
     
    -  public static SWIGTYPE_p_void switch_core_memory_pool_get_data(SWIGTYPE_p_apr_pool_t pool, string key) {
    -    global::System.IntPtr cPtr = freeswitchPINVOKE.switch_core_memory_pool_get_data(SWIGTYPE_p_apr_pool_t.getCPtr(pool), key);
    +  public static SWIGTYPE_p_void switch_core_memory_pool_get_data(SWIGTYPE_p_fspr_pool_t pool, string key) {
    +    global::System.IntPtr cPtr = freeswitchPINVOKE.switch_core_memory_pool_get_data(SWIGTYPE_p_fspr_pool_t.getCPtr(pool), key);
         SWIGTYPE_p_void ret = (cPtr == global::System.IntPtr.Zero) ? null : new SWIGTYPE_p_void(cPtr, false);
         return ret;
       }
    @@ -8428,8 +8428,8 @@ public static SWIGTYPE_p_void switch_core_perform_permanent_alloc(SWIGTYPE_p_swi
         return ret;
       }
     
    -  public static SWIGTYPE_p_void switch_core_perform_alloc(SWIGTYPE_p_apr_pool_t pool, SWIGTYPE_p_switch_size_t memory, string file, string func, int line) {
    -    global::System.IntPtr cPtr = freeswitchPINVOKE.switch_core_perform_alloc(SWIGTYPE_p_apr_pool_t.getCPtr(pool), SWIGTYPE_p_switch_size_t.getCPtr(memory), file, func, line);
    +  public static SWIGTYPE_p_void switch_core_perform_alloc(SWIGTYPE_p_fspr_pool_t pool, SWIGTYPE_p_switch_size_t memory, string file, string func, int line) {
    +    global::System.IntPtr cPtr = freeswitchPINVOKE.switch_core_perform_alloc(SWIGTYPE_p_fspr_pool_t.getCPtr(pool), SWIGTYPE_p_switch_size_t.getCPtr(memory), file, func, line);
         SWIGTYPE_p_void ret = (cPtr == global::System.IntPtr.Zero) ? null : new SWIGTYPE_p_void(cPtr, false);
         if (freeswitchPINVOKE.SWIGPendingException.Pending) throw freeswitchPINVOKE.SWIGPendingException.Retrieve();
         return ret;
    @@ -8452,13 +8452,13 @@ public static string switch_core_perform_session_strdup(SWIGTYPE_p_switch_core_s
         return ret;
       }
     
    -  public static string switch_core_perform_strdup(SWIGTYPE_p_apr_pool_t pool, string todup, string file, string func, int line) {
    -    string ret = freeswitchPINVOKE.switch_core_perform_strdup(SWIGTYPE_p_apr_pool_t.getCPtr(pool), todup, file, func, line);
    +  public static string switch_core_perform_strdup(SWIGTYPE_p_fspr_pool_t pool, string todup, string file, string func, int line) {
    +    string ret = freeswitchPINVOKE.switch_core_perform_strdup(SWIGTYPE_p_fspr_pool_t.getCPtr(pool), todup, file, func, line);
         return ret;
       }
     
    -  public static string switch_core_perform_strndup(SWIGTYPE_p_apr_pool_t pool, string todup, uint len, string file, string func, int line) {
    -    string ret = freeswitchPINVOKE.switch_core_perform_strndup(SWIGTYPE_p_apr_pool_t.getCPtr(pool), todup, len, file, func, line);
    +  public static string switch_core_perform_strndup(SWIGTYPE_p_fspr_pool_t pool, string todup, uint len, string file, string func, int line) {
    +    string ret = freeswitchPINVOKE.switch_core_perform_strndup(SWIGTYPE_p_fspr_pool_t.getCPtr(pool), todup, len, file, func, line);
         return ret;
       }
     
    @@ -8467,25 +8467,25 @@ public static string switch_core_session_sprintf(SWIGTYPE_p_switch_core_session
         return ret;
       }
     
    -  public static string switch_core_sprintf(SWIGTYPE_p_apr_pool_t pool, string fmt) {
    -    string ret = freeswitchPINVOKE.switch_core_sprintf(SWIGTYPE_p_apr_pool_t.getCPtr(pool), fmt);
    +  public static string switch_core_sprintf(SWIGTYPE_p_fspr_pool_t pool, string fmt) {
    +    string ret = freeswitchPINVOKE.switch_core_sprintf(SWIGTYPE_p_fspr_pool_t.getCPtr(pool), fmt);
         return ret;
       }
     
    -  public static SWIGTYPE_p_apr_pool_t switch_core_session_get_pool(SWIGTYPE_p_switch_core_session session) {
    +  public static SWIGTYPE_p_fspr_pool_t switch_core_session_get_pool(SWIGTYPE_p_switch_core_session session) {
         global::System.IntPtr cPtr = freeswitchPINVOKE.switch_core_session_get_pool(SWIGTYPE_p_switch_core_session.getCPtr(session));
    -    SWIGTYPE_p_apr_pool_t ret = (cPtr == global::System.IntPtr.Zero) ? null : new SWIGTYPE_p_apr_pool_t(cPtr, false);
    +    SWIGTYPE_p_fspr_pool_t ret = (cPtr == global::System.IntPtr.Zero) ? null : new SWIGTYPE_p_fspr_pool_t(cPtr, false);
         return ret;
       }
     
    -  public static SWIGTYPE_p_switch_core_session switch_core_session_request_xml(switch_endpoint_interface endpoint_interface, SWIGTYPE_p_p_apr_pool_t pool, switch_xml xml) {
    -    global::System.IntPtr cPtr = freeswitchPINVOKE.switch_core_session_request_xml(switch_endpoint_interface.getCPtr(endpoint_interface), SWIGTYPE_p_p_apr_pool_t.getCPtr(pool), switch_xml.getCPtr(xml));
    +  public static SWIGTYPE_p_switch_core_session switch_core_session_request_xml(switch_endpoint_interface endpoint_interface, SWIGTYPE_p_p_fspr_pool_t pool, switch_xml xml) {
    +    global::System.IntPtr cPtr = freeswitchPINVOKE.switch_core_session_request_xml(switch_endpoint_interface.getCPtr(endpoint_interface), SWIGTYPE_p_p_fspr_pool_t.getCPtr(pool), switch_xml.getCPtr(xml));
         SWIGTYPE_p_switch_core_session ret = (cPtr == global::System.IntPtr.Zero) ? null : new SWIGTYPE_p_switch_core_session(cPtr, false);
         return ret;
       }
     
    -  public static SWIGTYPE_p_switch_core_session switch_core_session_request_uuid(switch_endpoint_interface endpoint_interface, switch_call_direction_t direction, uint originate_flags, SWIGTYPE_p_p_apr_pool_t pool, string use_uuid) {
    -    global::System.IntPtr cPtr = freeswitchPINVOKE.switch_core_session_request_uuid(switch_endpoint_interface.getCPtr(endpoint_interface), (int)direction, originate_flags, SWIGTYPE_p_p_apr_pool_t.getCPtr(pool), use_uuid);
    +  public static SWIGTYPE_p_switch_core_session switch_core_session_request_uuid(switch_endpoint_interface endpoint_interface, switch_call_direction_t direction, uint originate_flags, SWIGTYPE_p_p_fspr_pool_t pool, string use_uuid) {
    +    global::System.IntPtr cPtr = freeswitchPINVOKE.switch_core_session_request_uuid(switch_endpoint_interface.getCPtr(endpoint_interface), (int)direction, originate_flags, SWIGTYPE_p_p_fspr_pool_t.getCPtr(pool), use_uuid);
         SWIGTYPE_p_switch_core_session ret = (cPtr == global::System.IntPtr.Zero) ? null : new SWIGTYPE_p_switch_core_session(cPtr, false);
         return ret;
       }
    @@ -8536,8 +8536,8 @@ public static SWIGTYPE_p_switch_size_t switch_core_session_id_dec() {
         return ret;
       }
     
    -  public static SWIGTYPE_p_switch_core_session switch_core_session_request_by_name(string endpoint_name, switch_call_direction_t direction, SWIGTYPE_p_p_apr_pool_t pool) {
    -    global::System.IntPtr cPtr = freeswitchPINVOKE.switch_core_session_request_by_name(endpoint_name, (int)direction, SWIGTYPE_p_p_apr_pool_t.getCPtr(pool));
    +  public static SWIGTYPE_p_switch_core_session switch_core_session_request_by_name(string endpoint_name, switch_call_direction_t direction, SWIGTYPE_p_p_fspr_pool_t pool) {
    +    global::System.IntPtr cPtr = freeswitchPINVOKE.switch_core_session_request_by_name(endpoint_name, (int)direction, SWIGTYPE_p_p_fspr_pool_t.getCPtr(pool));
         SWIGTYPE_p_switch_core_session ret = (cPtr == global::System.IntPtr.Zero) ? null : new SWIGTYPE_p_switch_core_session(cPtr, false);
         return ret;
       }
    @@ -8677,8 +8677,8 @@ public static string switch_core_get_variable_dup(string varname) {
         return ret;
       }
     
    -  public static string switch_core_get_variable_pdup(string varname, SWIGTYPE_p_apr_pool_t pool) {
    -    string ret = freeswitchPINVOKE.switch_core_get_variable_pdup(varname, SWIGTYPE_p_apr_pool_t.getCPtr(pool));
    +  public static string switch_core_get_variable_pdup(string varname, SWIGTYPE_p_fspr_pool_t pool) {
    +    string ret = freeswitchPINVOKE.switch_core_get_variable_pdup(varname, SWIGTYPE_p_fspr_pool_t.getCPtr(pool));
         return ret;
       }
     
    @@ -8888,8 +8888,8 @@ public static void switch_core_service_session_av(SWIGTYPE_p_switch_core_session
         freeswitchPINVOKE.switch_core_service_session_av(SWIGTYPE_p_switch_core_session.getCPtr(session), (int)audio, (int)video);
       }
     
    -  public static switch_call_cause_t switch_core_session_outgoing_channel(SWIGTYPE_p_switch_core_session session, switch_event var_event, string endpoint_name, switch_caller_profile caller_profile, SWIGTYPE_p_p_switch_core_session new_session, SWIGTYPE_p_p_apr_pool_t pool, uint flags, SWIGTYPE_p_switch_call_cause_t cancel_cause) {
    -    switch_call_cause_t ret = (switch_call_cause_t)freeswitchPINVOKE.switch_core_session_outgoing_channel(SWIGTYPE_p_switch_core_session.getCPtr(session), switch_event.getCPtr(var_event), endpoint_name, switch_caller_profile.getCPtr(caller_profile), SWIGTYPE_p_p_switch_core_session.getCPtr(new_session), SWIGTYPE_p_p_apr_pool_t.getCPtr(pool), flags, SWIGTYPE_p_switch_call_cause_t.getCPtr(cancel_cause));
    +  public static switch_call_cause_t switch_core_session_outgoing_channel(SWIGTYPE_p_switch_core_session session, switch_event var_event, string endpoint_name, switch_caller_profile caller_profile, SWIGTYPE_p_p_switch_core_session new_session, SWIGTYPE_p_p_fspr_pool_t pool, uint flags, SWIGTYPE_p_switch_call_cause_t cancel_cause) {
    +    switch_call_cause_t ret = (switch_call_cause_t)freeswitchPINVOKE.switch_core_session_outgoing_channel(SWIGTYPE_p_switch_core_session.getCPtr(session), switch_event.getCPtr(var_event), endpoint_name, switch_caller_profile.getCPtr(caller_profile), SWIGTYPE_p_p_switch_core_session.getCPtr(new_session), SWIGTYPE_p_p_fspr_pool_t.getCPtr(pool), flags, SWIGTYPE_p_switch_call_cause_t.getCPtr(cancel_cause));
         return ret;
       }
     
    @@ -9165,8 +9165,8 @@ public static SWIGTYPE_p_void switch_core_inthash_find(SWIGTYPE_p_switch_hashtab
         return ret;
       }
     
    -  public static switch_status_t switch_core_timer_init(switch_timer timer, string timer_name, int interval, int samples, SWIGTYPE_p_apr_pool_t pool) {
    -    switch_status_t ret = (switch_status_t)freeswitchPINVOKE.switch_core_timer_init(switch_timer.getCPtr(timer), timer_name, interval, samples, SWIGTYPE_p_apr_pool_t.getCPtr(pool));
    +  public static switch_status_t switch_core_timer_init(switch_timer timer, string timer_name, int interval, int samples, SWIGTYPE_p_fspr_pool_t pool) {
    +    switch_status_t ret = (switch_status_t)freeswitchPINVOKE.switch_core_timer_init(switch_timer.getCPtr(timer), timer_name, interval, samples, SWIGTYPE_p_fspr_pool_t.getCPtr(pool));
         return ret;
       }
     
    @@ -9199,13 +9199,13 @@ public static switch_status_t switch_core_timer_destroy(switch_timer timer) {
         return ret;
       }
     
    -  public static switch_status_t switch_core_codec_init_with_bitrate(switch_codec codec, string codec_name, string fmtp, string modname, uint rate, int ms, int channels, uint bitrate, uint flags, switch_codec_settings codec_settings, SWIGTYPE_p_apr_pool_t pool) {
    -    switch_status_t ret = (switch_status_t)freeswitchPINVOKE.switch_core_codec_init_with_bitrate(switch_codec.getCPtr(codec), codec_name, fmtp, modname, rate, ms, channels, bitrate, flags, switch_codec_settings.getCPtr(codec_settings), SWIGTYPE_p_apr_pool_t.getCPtr(pool));
    +  public static switch_status_t switch_core_codec_init_with_bitrate(switch_codec codec, string codec_name, string fmtp, string modname, uint rate, int ms, int channels, uint bitrate, uint flags, switch_codec_settings codec_settings, SWIGTYPE_p_fspr_pool_t pool) {
    +    switch_status_t ret = (switch_status_t)freeswitchPINVOKE.switch_core_codec_init_with_bitrate(switch_codec.getCPtr(codec), codec_name, fmtp, modname, rate, ms, channels, bitrate, flags, switch_codec_settings.getCPtr(codec_settings), SWIGTYPE_p_fspr_pool_t.getCPtr(pool));
         return ret;
       }
     
    -  public static switch_status_t switch_core_codec_copy(switch_codec codec, switch_codec new_codec, switch_codec_settings codec_settings, SWIGTYPE_p_apr_pool_t pool) {
    -    switch_status_t ret = (switch_status_t)freeswitchPINVOKE.switch_core_codec_copy(switch_codec.getCPtr(codec), switch_codec.getCPtr(new_codec), switch_codec_settings.getCPtr(codec_settings), SWIGTYPE_p_apr_pool_t.getCPtr(pool));
    +  public static switch_status_t switch_core_codec_copy(switch_codec codec, switch_codec new_codec, switch_codec_settings codec_settings, SWIGTYPE_p_fspr_pool_t pool) {
    +    switch_status_t ret = (switch_status_t)freeswitchPINVOKE.switch_core_codec_copy(switch_codec.getCPtr(codec), switch_codec.getCPtr(new_codec), switch_codec_settings.getCPtr(codec_settings), SWIGTYPE_p_fspr_pool_t.getCPtr(pool));
         return ret;
       }
     
    @@ -9385,8 +9385,8 @@ public static void switch_core_db_test_reactive(SWIGTYPE_p_sqlite3 db, string te
         freeswitchPINVOKE.switch_core_db_test_reactive(SWIGTYPE_p_sqlite3.getCPtr(db), test_sql, drop_sql, reactive_sql);
       }
     
    -  public static switch_status_t switch_core_perform_file_open(string file, string func, int line, switch_file_handle fh, string file_path, uint channels, uint rate, uint flags, SWIGTYPE_p_apr_pool_t pool) {
    -    switch_status_t ret = (switch_status_t)freeswitchPINVOKE.switch_core_perform_file_open(file, func, line, switch_file_handle.getCPtr(fh), file_path, channels, rate, flags, SWIGTYPE_p_apr_pool_t.getCPtr(pool));
    +  public static switch_status_t switch_core_perform_file_open(string file, string func, int line, switch_file_handle fh, string file_path, uint channels, uint rate, uint flags, SWIGTYPE_p_fspr_pool_t pool) {
    +    switch_status_t ret = (switch_status_t)freeswitchPINVOKE.switch_core_perform_file_open(file, func, line, switch_file_handle.getCPtr(fh), file_path, channels, rate, flags, SWIGTYPE_p_fspr_pool_t.getCPtr(pool));
         return ret;
       }
     
    @@ -9438,8 +9438,8 @@ public static switch_status_t switch_core_file_pre_close(switch_file_handle fh)
         return ret;
       }
     
    -  public static switch_status_t switch_core_file_handle_dup(switch_file_handle oldfh, SWIGTYPE_p_p_switch_file_handle newfh, SWIGTYPE_p_apr_pool_t pool) {
    -    switch_status_t ret = (switch_status_t)freeswitchPINVOKE.switch_core_file_handle_dup(switch_file_handle.getCPtr(oldfh), SWIGTYPE_p_p_switch_file_handle.getCPtr(newfh), SWIGTYPE_p_apr_pool_t.getCPtr(pool));
    +  public static switch_status_t switch_core_file_handle_dup(switch_file_handle oldfh, SWIGTYPE_p_p_switch_file_handle newfh, SWIGTYPE_p_fspr_pool_t pool) {
    +    switch_status_t ret = (switch_status_t)freeswitchPINVOKE.switch_core_file_handle_dup(switch_file_handle.getCPtr(oldfh), SWIGTYPE_p_p_switch_file_handle.getCPtr(newfh), SWIGTYPE_p_fspr_pool_t.getCPtr(pool));
         return ret;
       }
     
    @@ -9463,8 +9463,8 @@ public static switch_bool_t switch_core_file_has_video(switch_file_handle fh, sw
         return ret;
       }
     
    -  public static switch_status_t switch_core_speech_open(switch_speech_handle sh, string module_name, string voice_name, uint rate, uint interval, uint channels, SWIGTYPE_p_unsigned_long flags, SWIGTYPE_p_apr_pool_t pool) {
    -    switch_status_t ret = (switch_status_t)freeswitchPINVOKE.switch_core_speech_open(switch_speech_handle.getCPtr(sh), module_name, voice_name, rate, interval, channels, SWIGTYPE_p_unsigned_long.getCPtr(flags), SWIGTYPE_p_apr_pool_t.getCPtr(pool));
    +  public static switch_status_t switch_core_speech_open(switch_speech_handle sh, string module_name, string voice_name, uint rate, uint interval, uint channels, SWIGTYPE_p_unsigned_long flags, SWIGTYPE_p_fspr_pool_t pool) {
    +    switch_status_t ret = (switch_status_t)freeswitchPINVOKE.switch_core_speech_open(switch_speech_handle.getCPtr(sh), module_name, voice_name, rate, interval, channels, SWIGTYPE_p_unsigned_long.getCPtr(flags), SWIGTYPE_p_fspr_pool_t.getCPtr(pool));
         return ret;
       }
     
    @@ -9499,8 +9499,8 @@ public static switch_status_t switch_core_speech_close(switch_speech_handle sh,
         return ret;
       }
     
    -  public static switch_status_t switch_core_asr_open(switch_asr_handle ah, string module_name, string codec, int rate, string dest, SWIGTYPE_p_unsigned_long flags, SWIGTYPE_p_apr_pool_t pool) {
    -    switch_status_t ret = (switch_status_t)freeswitchPINVOKE.switch_core_asr_open(switch_asr_handle.getCPtr(ah), module_name, codec, rate, dest, SWIGTYPE_p_unsigned_long.getCPtr(flags), SWIGTYPE_p_apr_pool_t.getCPtr(pool));
    +  public static switch_status_t switch_core_asr_open(switch_asr_handle ah, string module_name, string codec, int rate, string dest, SWIGTYPE_p_unsigned_long flags, SWIGTYPE_p_fspr_pool_t pool) {
    +    switch_status_t ret = (switch_status_t)freeswitchPINVOKE.switch_core_asr_open(switch_asr_handle.getCPtr(ah), module_name, codec, rate, dest, SWIGTYPE_p_unsigned_long.getCPtr(flags), SWIGTYPE_p_fspr_pool_t.getCPtr(pool));
         return ret;
       }
     
    @@ -9586,8 +9586,8 @@ public static void switch_core_asr_float_param(switch_asr_handle ah, string para
         freeswitchPINVOKE.switch_core_asr_float_param(switch_asr_handle.getCPtr(ah), param, val);
       }
     
    -  public static switch_status_t switch_core_directory_open(switch_directory_handle dh, string module_name, string source, string dsn, string passwd, SWIGTYPE_p_apr_pool_t pool) {
    -    switch_status_t ret = (switch_status_t)freeswitchPINVOKE.switch_core_directory_open(switch_directory_handle.getCPtr(dh), module_name, source, dsn, passwd, SWIGTYPE_p_apr_pool_t.getCPtr(pool));
    +  public static switch_status_t switch_core_directory_open(switch_directory_handle dh, string module_name, string source, string dsn, string passwd, SWIGTYPE_p_fspr_pool_t pool) {
    +    switch_status_t ret = (switch_status_t)freeswitchPINVOKE.switch_core_directory_open(switch_directory_handle.getCPtr(dh), module_name, source, dsn, passwd, SWIGTYPE_p_fspr_pool_t.getCPtr(pool));
         return ret;
       }
     
    @@ -9753,8 +9753,8 @@ public static switch_status_t switch_core_mime_add_type(string type, string ext)
         return ret;
       }
     
    -  public static switch_loadable_module_interface switch_loadable_module_create_module_interface(SWIGTYPE_p_apr_pool_t pool, string name) {
    -    global::System.IntPtr cPtr = freeswitchPINVOKE.switch_loadable_module_create_module_interface(SWIGTYPE_p_apr_pool_t.getCPtr(pool), name);
    +  public static switch_loadable_module_interface switch_loadable_module_create_module_interface(SWIGTYPE_p_fspr_pool_t pool, string name) {
    +    global::System.IntPtr cPtr = freeswitchPINVOKE.switch_loadable_module_create_module_interface(SWIGTYPE_p_fspr_pool_t.getCPtr(pool), name);
         switch_loadable_module_interface ret = (cPtr == global::System.IntPtr.Zero) ? null : new switch_loadable_module_interface(cPtr, false);
         return ret;
       }
    @@ -10467,8 +10467,8 @@ public static switch_status_t switch_loadable_module_enumerate_loaded(SWIGTYPE_p
         return ret;
       }
     
    -  public static switch_status_t switch_loadable_module_build_dynamic(string filename, SWIGTYPE_p_f_p_p_switch_loadable_module_interface_p_apr_pool_t__switch_status_t switch_module_load, SWIGTYPE_p_f_void__switch_status_t switch_module_runtime, SWIGTYPE_p_f_void__switch_status_t switch_module_shutdown, switch_bool_t runtime) {
    -    switch_status_t ret = (switch_status_t)freeswitchPINVOKE.switch_loadable_module_build_dynamic(filename, SWIGTYPE_p_f_p_p_switch_loadable_module_interface_p_apr_pool_t__switch_status_t.getCPtr(switch_module_load), SWIGTYPE_p_f_void__switch_status_t.getCPtr(switch_module_runtime), SWIGTYPE_p_f_void__switch_status_t.getCPtr(switch_module_shutdown), (int)runtime);
    +  public static switch_status_t switch_loadable_module_build_dynamic(string filename, SWIGTYPE_p_f_p_p_switch_loadable_module_interface_p_fspr_pool_t__switch_status_t switch_module_load, SWIGTYPE_p_f_void__switch_status_t switch_module_runtime, SWIGTYPE_p_f_void__switch_status_t switch_module_shutdown, switch_bool_t runtime) {
    +    switch_status_t ret = (switch_status_t)freeswitchPINVOKE.switch_loadable_module_build_dynamic(filename, SWIGTYPE_p_f_p_p_switch_loadable_module_interface_p_fspr_pool_t__switch_status_t.getCPtr(switch_module_load), SWIGTYPE_p_f_void__switch_status_t.getCPtr(switch_module_runtime), SWIGTYPE_p_f_void__switch_status_t.getCPtr(switch_module_shutdown), (int)runtime);
         return ret;
       }
     
    @@ -10627,12 +10627,12 @@ public static int switch_check_interval(uint rate, uint ptime) {
         return ret;
       }
     
    -  public static void switch_core_codec_add_implementation(SWIGTYPE_p_apr_pool_t pool, switch_codec_interface codec_interface, switch_codec_type_t codec_type, byte ianacode, string iananame, string fmtp, uint samples_per_second, uint actual_samples_per_second, int bits_per_second, int microseconds_per_packet, uint samples_per_packet, uint decoded_bytes_per_packet, uint encoded_bytes_per_packet, byte number_of_channels, int codec_frames_per_packet, SWIGTYPE_p_f_p_switch_codec_unsigned_long_p_q_const__switch_codec_settings__switch_status_t init, SWIGTYPE_p_f_p_switch_codec_p_switch_codec_p_void_unsigned_long_unsigned_long_p_void_p_unsigned_long_p_unsigned_long_p_unsigned_int__switch_status_t encode, SWIGTYPE_p_f_p_switch_codec_p_switch_codec_p_void_unsigned_long_unsigned_long_p_void_p_unsigned_long_p_unsigned_long_p_unsigned_int__switch_status_t decode, SWIGTYPE_p_f_p_switch_codec__switch_status_t destroy) {
    -    freeswitchPINVOKE.switch_core_codec_add_implementation(SWIGTYPE_p_apr_pool_t.getCPtr(pool), switch_codec_interface.getCPtr(codec_interface), (int)codec_type, ianacode, iananame, fmtp, samples_per_second, actual_samples_per_second, bits_per_second, microseconds_per_packet, samples_per_packet, decoded_bytes_per_packet, encoded_bytes_per_packet, number_of_channels, codec_frames_per_packet, SWIGTYPE_p_f_p_switch_codec_unsigned_long_p_q_const__switch_codec_settings__switch_status_t.getCPtr(init), SWIGTYPE_p_f_p_switch_codec_p_switch_codec_p_void_unsigned_long_unsigned_long_p_void_p_unsigned_long_p_unsigned_long_p_unsigned_int__switch_status_t.getCPtr(encode), SWIGTYPE_p_f_p_switch_codec_p_switch_codec_p_void_unsigned_long_unsigned_long_p_void_p_unsigned_long_p_unsigned_long_p_unsigned_int__switch_status_t.getCPtr(decode), SWIGTYPE_p_f_p_switch_codec__switch_status_t.getCPtr(destroy));
    +  public static void switch_core_codec_add_implementation(SWIGTYPE_p_fspr_pool_t pool, switch_codec_interface codec_interface, switch_codec_type_t codec_type, byte ianacode, string iananame, string fmtp, uint samples_per_second, uint actual_samples_per_second, int bits_per_second, int microseconds_per_packet, uint samples_per_packet, uint decoded_bytes_per_packet, uint encoded_bytes_per_packet, byte number_of_channels, int codec_frames_per_packet, SWIGTYPE_p_f_p_switch_codec_unsigned_long_p_q_const__switch_codec_settings__switch_status_t init, SWIGTYPE_p_f_p_switch_codec_p_switch_codec_p_void_unsigned_long_unsigned_long_p_void_p_unsigned_long_p_unsigned_long_p_unsigned_int__switch_status_t encode, SWIGTYPE_p_f_p_switch_codec_p_switch_codec_p_void_unsigned_long_unsigned_long_p_void_p_unsigned_long_p_unsigned_long_p_unsigned_int__switch_status_t decode, SWIGTYPE_p_f_p_switch_codec__switch_status_t destroy) {
    +    freeswitchPINVOKE.switch_core_codec_add_implementation(SWIGTYPE_p_fspr_pool_t.getCPtr(pool), switch_codec_interface.getCPtr(codec_interface), (int)codec_type, ianacode, iananame, fmtp, samples_per_second, actual_samples_per_second, bits_per_second, microseconds_per_packet, samples_per_packet, decoded_bytes_per_packet, encoded_bytes_per_packet, number_of_channels, codec_frames_per_packet, SWIGTYPE_p_f_p_switch_codec_unsigned_long_p_q_const__switch_codec_settings__switch_status_t.getCPtr(init), SWIGTYPE_p_f_p_switch_codec_p_switch_codec_p_void_unsigned_long_unsigned_long_p_void_p_unsigned_long_p_unsigned_long_p_unsigned_int__switch_status_t.getCPtr(encode), SWIGTYPE_p_f_p_switch_codec_p_switch_codec_p_void_unsigned_long_unsigned_long_p_void_p_unsigned_long_p_unsigned_long_p_unsigned_int__switch_status_t.getCPtr(decode), SWIGTYPE_p_f_p_switch_codec__switch_status_t.getCPtr(destroy));
       }
     
    -  public static void switch_core_codec_add_video_implementation(SWIGTYPE_p_apr_pool_t pool, switch_codec_interface codec_interface, byte ianacode, string iananame, string fmtp, SWIGTYPE_p_f_p_switch_codec_unsigned_long_p_q_const__switch_codec_settings__switch_status_t init, SWIGTYPE_p_f_p_switch_codec_p_switch_frame__switch_status_t encode, SWIGTYPE_p_f_p_switch_codec_p_switch_frame__switch_status_t decode, SWIGTYPE_p_f_p_switch_codec_enum_switch_codec_control_command_t_enum_switch_codec_control_type_t_p_void_enum_switch_codec_control_type_t_p_void_p_enum_switch_codec_control_type_t_p_p_void__switch_status_t control, SWIGTYPE_p_f_p_switch_codec__switch_status_t destroy) {
    -    freeswitchPINVOKE.switch_core_codec_add_video_implementation(SWIGTYPE_p_apr_pool_t.getCPtr(pool), switch_codec_interface.getCPtr(codec_interface), ianacode, iananame, fmtp, SWIGTYPE_p_f_p_switch_codec_unsigned_long_p_q_const__switch_codec_settings__switch_status_t.getCPtr(init), SWIGTYPE_p_f_p_switch_codec_p_switch_frame__switch_status_t.getCPtr(encode), SWIGTYPE_p_f_p_switch_codec_p_switch_frame__switch_status_t.getCPtr(decode), SWIGTYPE_p_f_p_switch_codec_enum_switch_codec_control_command_t_enum_switch_codec_control_type_t_p_void_enum_switch_codec_control_type_t_p_void_p_enum_switch_codec_control_type_t_p_p_void__switch_status_t.getCPtr(control), SWIGTYPE_p_f_p_switch_codec__switch_status_t.getCPtr(destroy));
    +  public static void switch_core_codec_add_video_implementation(SWIGTYPE_p_fspr_pool_t pool, switch_codec_interface codec_interface, byte ianacode, string iananame, string fmtp, SWIGTYPE_p_f_p_switch_codec_unsigned_long_p_q_const__switch_codec_settings__switch_status_t init, SWIGTYPE_p_f_p_switch_codec_p_switch_frame__switch_status_t encode, SWIGTYPE_p_f_p_switch_codec_p_switch_frame__switch_status_t decode, SWIGTYPE_p_f_p_switch_codec_enum_switch_codec_control_command_t_enum_switch_codec_control_type_t_p_void_enum_switch_codec_control_type_t_p_void_p_enum_switch_codec_control_type_t_p_p_void__switch_status_t control, SWIGTYPE_p_f_p_switch_codec__switch_status_t destroy) {
    +    freeswitchPINVOKE.switch_core_codec_add_video_implementation(SWIGTYPE_p_fspr_pool_t.getCPtr(pool), switch_codec_interface.getCPtr(codec_interface), ianacode, iananame, fmtp, SWIGTYPE_p_f_p_switch_codec_unsigned_long_p_q_const__switch_codec_settings__switch_status_t.getCPtr(init), SWIGTYPE_p_f_p_switch_codec_p_switch_frame__switch_status_t.getCPtr(encode), SWIGTYPE_p_f_p_switch_codec_p_switch_frame__switch_status_t.getCPtr(decode), SWIGTYPE_p_f_p_switch_codec_enum_switch_codec_control_command_t_enum_switch_codec_control_type_t_p_void_enum_switch_codec_control_type_t_p_void_p_enum_switch_codec_control_type_t_p_p_void__switch_status_t.getCPtr(control), SWIGTYPE_p_f_p_switch_codec__switch_status_t.getCPtr(destroy));
       }
     
       public static switch_bool_t switch_core_codec_ready(switch_codec codec) {
    @@ -10670,8 +10670,8 @@ public static switch_status_t switch_stream_write_file_contents(switch_stream_ha
         return ret;
       }
     
    -  public static switch_status_t switch_console_init(SWIGTYPE_p_apr_pool_t pool) {
    -    switch_status_t ret = (switch_status_t)freeswitchPINVOKE.switch_console_init(SWIGTYPE_p_apr_pool_t.getCPtr(pool));
    +  public static switch_status_t switch_console_init(SWIGTYPE_p_fspr_pool_t pool) {
    +    switch_status_t ret = (switch_status_t)freeswitchPINVOKE.switch_console_init(SWIGTYPE_p_fspr_pool_t.getCPtr(pool));
         return ret;
       }
     
    @@ -10942,8 +10942,8 @@ public static switch_bool_t switch_is_leading_number(string str) {
         return ret;
       }
     
    -  public static string switch_find_parameter(string str, string param, SWIGTYPE_p_apr_pool_t pool) {
    -    string ret = freeswitchPINVOKE.switch_find_parameter(str, param, SWIGTYPE_p_apr_pool_t.getCPtr(pool));
    +  public static string switch_find_parameter(string str, string param, SWIGTYPE_p_fspr_pool_t pool) {
    +    string ret = freeswitchPINVOKE.switch_find_parameter(str, param, SWIGTYPE_p_fspr_pool_t.getCPtr(pool));
         return ret;
       }
     
    @@ -11162,13 +11162,13 @@ public static switch_bool_t switch_ast2regex(string pat, string rbuf, uint len)
         return ret;
       }
     
    -  public static string switch_pool_strip_whitespace(SWIGTYPE_p_apr_pool_t pool, string str) {
    -    string ret = freeswitchPINVOKE.switch_pool_strip_whitespace(SWIGTYPE_p_apr_pool_t.getCPtr(pool), str);
    +  public static string switch_pool_strip_whitespace(SWIGTYPE_p_fspr_pool_t pool, string str) {
    +    string ret = freeswitchPINVOKE.switch_pool_strip_whitespace(SWIGTYPE_p_fspr_pool_t.getCPtr(pool), str);
         return ret;
       }
     
    -  public static string switch_escape_char(SWIGTYPE_p_apr_pool_t pool, string arg1, string delim, char esc) {
    -    string ret = freeswitchPINVOKE.switch_escape_char(SWIGTYPE_p_apr_pool_t.getCPtr(pool), arg1, delim, esc);
    +  public static string switch_escape_char(SWIGTYPE_p_fspr_pool_t pool, string arg1, string delim, char esc) {
    +    string ret = freeswitchPINVOKE.switch_escape_char(SWIGTYPE_p_fspr_pool_t.getCPtr(pool), arg1, delim, esc);
         return ret;
       }
     
    @@ -11178,8 +11178,8 @@ public static string switch_escape_string(string arg0, string arg1, SWIGTYPE_p_s
         return ret;
       }
     
    -  public static string switch_escape_string_pool(string arg0, SWIGTYPE_p_apr_pool_t pool) {
    -    string ret = freeswitchPINVOKE.switch_escape_string_pool(arg0, SWIGTYPE_p_apr_pool_t.getCPtr(pool));
    +  public static string switch_escape_string_pool(string arg0, SWIGTYPE_p_fspr_pool_t pool) {
    +    string ret = freeswitchPINVOKE.switch_escape_string_pool(arg0, SWIGTYPE_p_fspr_pool_t.getCPtr(pool));
         return ret;
       }
     
    @@ -11213,8 +11213,8 @@ public static string switch_util_quote_shell_arg(string arg0) {
         return ret;
       }
     
    -  public static string switch_util_quote_shell_arg_pool(string arg0, SWIGTYPE_p_apr_pool_t pool) {
    -    string ret = freeswitchPINVOKE.switch_util_quote_shell_arg_pool(arg0, SWIGTYPE_p_apr_pool_t.getCPtr(pool));
    +  public static string switch_util_quote_shell_arg_pool(string arg0, SWIGTYPE_p_fspr_pool_t pool) {
    +    string ret = freeswitchPINVOKE.switch_util_quote_shell_arg_pool(arg0, SWIGTYPE_p_fspr_pool_t.getCPtr(pool));
         return ret;
       }
     
    @@ -11257,13 +11257,13 @@ public static string switch_url_decode(string s) {
         return ret;
       }
     
    -  public static string switch_core_url_encode_opt(SWIGTYPE_p_apr_pool_t pool, string url, switch_bool_t double_encode) {
    -    string ret = freeswitchPINVOKE.switch_core_url_encode_opt(SWIGTYPE_p_apr_pool_t.getCPtr(pool), url, (int)double_encode);
    +  public static string switch_core_url_encode_opt(SWIGTYPE_p_fspr_pool_t pool, string url, switch_bool_t double_encode) {
    +    string ret = freeswitchPINVOKE.switch_core_url_encode_opt(SWIGTYPE_p_fspr_pool_t.getCPtr(pool), url, (int)double_encode);
         return ret;
       }
     
    -  public static string switch_core_url_encode(SWIGTYPE_p_apr_pool_t pool, string url) {
    -    string ret = freeswitchPINVOKE.switch_core_url_encode(SWIGTYPE_p_apr_pool_t.getCPtr(pool), url);
    +  public static string switch_core_url_encode(SWIGTYPE_p_fspr_pool_t pool, string url) {
    +    string ret = freeswitchPINVOKE.switch_core_url_encode(SWIGTYPE_p_fspr_pool_t.getCPtr(pool), url);
         return ret;
       }
     
    @@ -11311,8 +11311,8 @@ public static int switch_parse_cidr(string arg0, ip_t ip, ip_t mask, SWIGTYPE_p_
         return ret;
       }
     
    -  public static switch_status_t switch_network_list_create(SWIGTYPE_p_p_switch_network_list list, string name, switch_bool_t default_type, SWIGTYPE_p_apr_pool_t pool) {
    -    switch_status_t ret = (switch_status_t)freeswitchPINVOKE.switch_network_list_create(SWIGTYPE_p_p_switch_network_list.getCPtr(list), name, (int)default_type, SWIGTYPE_p_apr_pool_t.getCPtr(pool));
    +  public static switch_status_t switch_network_list_create(SWIGTYPE_p_p_switch_network_list list, string name, switch_bool_t default_type, SWIGTYPE_p_fspr_pool_t pool) {
    +    switch_status_t ret = (switch_status_t)freeswitchPINVOKE.switch_network_list_create(SWIGTYPE_p_p_switch_network_list.getCPtr(list), name, (int)default_type, SWIGTYPE_p_fspr_pool_t.getCPtr(pool));
         return ret;
       }
     
    @@ -11586,8 +11586,8 @@ public static switch_caller_extension switch_caller_extension_new(SWIGTYPE_p_swi
         return ret;
       }
     
    -  public static switch_status_t switch_caller_extension_clone(SWIGTYPE_p_p_switch_caller_extension new_ext, switch_caller_extension orig, SWIGTYPE_p_apr_pool_t pool) {
    -    switch_status_t ret = (switch_status_t)freeswitchPINVOKE.switch_caller_extension_clone(SWIGTYPE_p_p_switch_caller_extension.getCPtr(new_ext), switch_caller_extension.getCPtr(orig), SWIGTYPE_p_apr_pool_t.getCPtr(pool));
    +  public static switch_status_t switch_caller_extension_clone(SWIGTYPE_p_p_switch_caller_extension new_ext, switch_caller_extension orig, SWIGTYPE_p_fspr_pool_t pool) {
    +    switch_status_t ret = (switch_status_t)freeswitchPINVOKE.switch_caller_extension_clone(SWIGTYPE_p_p_switch_caller_extension.getCPtr(new_ext), switch_caller_extension.getCPtr(orig), SWIGTYPE_p_fspr_pool_t.getCPtr(pool));
         return ret;
       }
     
    @@ -11604,8 +11604,8 @@ public static string switch_caller_get_field_by_name(switch_caller_profile calle
         return ret;
       }
     
    -  public static switch_caller_profile switch_caller_profile_new(SWIGTYPE_p_apr_pool_t pool, string username, string dialplan, string caller_id_name, string caller_id_number, string network_addr, string ani, string aniii, string rdnis, string source, string context, string destination_number) {
    -    global::System.IntPtr cPtr = freeswitchPINVOKE.switch_caller_profile_new(SWIGTYPE_p_apr_pool_t.getCPtr(pool), username, dialplan, caller_id_name, caller_id_number, network_addr, ani, aniii, rdnis, source, context, destination_number);
    +  public static switch_caller_profile switch_caller_profile_new(SWIGTYPE_p_fspr_pool_t pool, string username, string dialplan, string caller_id_name, string caller_id_number, string network_addr, string ani, string aniii, string rdnis, string source, string context, string destination_number) {
    +    global::System.IntPtr cPtr = freeswitchPINVOKE.switch_caller_profile_new(SWIGTYPE_p_fspr_pool_t.getCPtr(pool), username, dialplan, caller_id_name, caller_id_number, network_addr, ani, aniii, rdnis, source, context, destination_number);
         switch_caller_profile ret = (cPtr == global::System.IntPtr.Zero) ? null : new switch_caller_profile(cPtr, false);
         return ret;
       }
    @@ -11616,8 +11616,8 @@ public static switch_caller_profile switch_caller_profile_clone(SWIGTYPE_p_switc
         return ret;
       }
     
    -  public static switch_caller_profile switch_caller_profile_dup(SWIGTYPE_p_apr_pool_t pool, switch_caller_profile tocopy) {
    -    global::System.IntPtr cPtr = freeswitchPINVOKE.switch_caller_profile_dup(SWIGTYPE_p_apr_pool_t.getCPtr(pool), switch_caller_profile.getCPtr(tocopy));
    +  public static switch_caller_profile switch_caller_profile_dup(SWIGTYPE_p_fspr_pool_t pool, switch_caller_profile tocopy) {
    +    global::System.IntPtr cPtr = freeswitchPINVOKE.switch_caller_profile_dup(SWIGTYPE_p_fspr_pool_t.getCPtr(pool), switch_caller_profile.getCPtr(tocopy));
         switch_caller_profile ret = (cPtr == global::System.IntPtr.Zero) ? null : new switch_caller_profile(cPtr, false);
         return ret;
       }
    @@ -11711,8 +11711,8 @@ public static switch_channel_timetable switch_channel_get_timetable(SWIGTYPE_p_s
         return ret;
       }
     
    -  public static switch_status_t switch_channel_alloc(SWIGTYPE_p_p_switch_channel channel, switch_call_direction_t direction, SWIGTYPE_p_apr_pool_t pool) {
    -    switch_status_t ret = (switch_status_t)freeswitchPINVOKE.switch_channel_alloc(SWIGTYPE_p_p_switch_channel.getCPtr(channel), (int)direction, SWIGTYPE_p_apr_pool_t.getCPtr(pool));
    +  public static switch_status_t switch_channel_alloc(SWIGTYPE_p_p_switch_channel channel, switch_call_direction_t direction, SWIGTYPE_p_fspr_pool_t pool) {
    +    switch_status_t ret = (switch_status_t)freeswitchPINVOKE.switch_channel_alloc(SWIGTYPE_p_p_switch_channel.getCPtr(channel), (int)direction, SWIGTYPE_p_fspr_pool_t.getCPtr(pool));
         return ret;
       }
     
    @@ -12343,8 +12343,8 @@ public static void switch_channel_handle_cause(SWIGTYPE_p_switch_channel channel
         freeswitchPINVOKE.switch_channel_handle_cause(SWIGTYPE_p_switch_channel.getCPtr(channel), (int)cause);
       }
     
    -  public static void switch_channel_global_init(SWIGTYPE_p_apr_pool_t pool) {
    -    freeswitchPINVOKE.switch_channel_global_init(SWIGTYPE_p_apr_pool_t.getCPtr(pool));
    +  public static void switch_channel_global_init(SWIGTYPE_p_fspr_pool_t pool) {
    +    freeswitchPINVOKE.switch_channel_global_init(SWIGTYPE_p_fspr_pool_t.getCPtr(pool));
       }
     
       public static void switch_channel_global_uninit() {
    @@ -12390,8 +12390,8 @@ public static switch_status_t switch_channel_pass_sdp(SWIGTYPE_p_switch_channel
         return ret;
       }
     
    -  public static switch_status_t switch_buffer_create_partition(SWIGTYPE_p_apr_pool_t pool, SWIGTYPE_p_p_switch_buffer buffer, SWIGTYPE_p_void data, SWIGTYPE_p_switch_size_t datalen) {
    -    switch_status_t ret = (switch_status_t)freeswitchPINVOKE.switch_buffer_create_partition(SWIGTYPE_p_apr_pool_t.getCPtr(pool), SWIGTYPE_p_p_switch_buffer.getCPtr(buffer), SWIGTYPE_p_void.getCPtr(data), SWIGTYPE_p_switch_size_t.getCPtr(datalen));
    +  public static switch_status_t switch_buffer_create_partition(SWIGTYPE_p_fspr_pool_t pool, SWIGTYPE_p_p_switch_buffer buffer, SWIGTYPE_p_void data, SWIGTYPE_p_switch_size_t datalen) {
    +    switch_status_t ret = (switch_status_t)freeswitchPINVOKE.switch_buffer_create_partition(SWIGTYPE_p_fspr_pool_t.getCPtr(pool), SWIGTYPE_p_p_switch_buffer.getCPtr(buffer), SWIGTYPE_p_void.getCPtr(data), SWIGTYPE_p_switch_size_t.getCPtr(datalen));
         if (freeswitchPINVOKE.SWIGPendingException.Pending) throw freeswitchPINVOKE.SWIGPendingException.Retrieve();
         return ret;
       }
    @@ -12407,8 +12407,8 @@ public static switch_status_t switch_buffer_reset_partition_data(SWIGTYPE_p_swit
         return ret;
       }
     
    -  public static switch_status_t switch_buffer_create(SWIGTYPE_p_apr_pool_t pool, SWIGTYPE_p_p_switch_buffer buffer, SWIGTYPE_p_switch_size_t max_len) {
    -    switch_status_t ret = (switch_status_t)freeswitchPINVOKE.switch_buffer_create(SWIGTYPE_p_apr_pool_t.getCPtr(pool), SWIGTYPE_p_p_switch_buffer.getCPtr(buffer), SWIGTYPE_p_switch_size_t.getCPtr(max_len));
    +  public static switch_status_t switch_buffer_create(SWIGTYPE_p_fspr_pool_t pool, SWIGTYPE_p_p_switch_buffer buffer, SWIGTYPE_p_switch_size_t max_len) {
    +    switch_status_t ret = (switch_status_t)freeswitchPINVOKE.switch_buffer_create(SWIGTYPE_p_fspr_pool_t.getCPtr(pool), SWIGTYPE_p_p_switch_buffer.getCPtr(buffer), SWIGTYPE_p_switch_size_t.getCPtr(max_len));
         if (freeswitchPINVOKE.SWIGPendingException.Pending) throw freeswitchPINVOKE.SWIGPendingException.Retrieve();
         return ret;
       }
    @@ -12516,8 +12516,8 @@ public static SWIGTYPE_p_void switch_buffer_get_head_pointer(SWIGTYPE_p_switch_b
         return ret;
       }
     
    -  public static switch_status_t switch_event_init(SWIGTYPE_p_apr_pool_t pool) {
    -    switch_status_t ret = (switch_status_t)freeswitchPINVOKE.switch_event_init(SWIGTYPE_p_apr_pool_t.getCPtr(pool));
    +  public static switch_status_t switch_event_init(SWIGTYPE_p_fspr_pool_t pool) {
    +    switch_status_t ret = (switch_status_t)freeswitchPINVOKE.switch_event_init(SWIGTYPE_p_fspr_pool_t.getCPtr(pool));
         return ret;
       }
     
    @@ -13382,8 +13382,8 @@ public static switch_status_t switch_ivr_transfer_variable(SWIGTYPE_p_switch_cor
         return ret;
       }
     
    -  public static switch_status_t switch_ivr_digit_stream_parser_new(SWIGTYPE_p_apr_pool_t pool, SWIGTYPE_p_p_switch_ivr_digit_stream_parser parser) {
    -    switch_status_t ret = (switch_status_t)freeswitchPINVOKE.switch_ivr_digit_stream_parser_new(SWIGTYPE_p_apr_pool_t.getCPtr(pool), SWIGTYPE_p_p_switch_ivr_digit_stream_parser.getCPtr(parser));
    +  public static switch_status_t switch_ivr_digit_stream_parser_new(SWIGTYPE_p_fspr_pool_t pool, SWIGTYPE_p_p_switch_ivr_digit_stream_parser parser) {
    +    switch_status_t ret = (switch_status_t)freeswitchPINVOKE.switch_ivr_digit_stream_parser_new(SWIGTYPE_p_fspr_pool_t.getCPtr(pool), SWIGTYPE_p_p_switch_ivr_digit_stream_parser.getCPtr(parser));
         return ret;
       }
     
    @@ -13428,8 +13428,8 @@ public static switch_status_t switch_ivr_digit_stream_parser_set_terminator(SWIG
         return ret;
       }
     
    -  public static switch_status_t switch_ivr_menu_init(SWIGTYPE_p_p_switch_ivr_menu new_menu, SWIGTYPE_p_switch_ivr_menu main, string name, string greeting_sound, string short_greeting_sound, string invalid_sound, string exit_sound, string transfer_sound, string confirm_macro, string confirm_key, string tts_engine, string tts_voice, int confirm_attempts, int inter_timeout, int digit_len, int timeout, int max_failures, int max_timeouts, SWIGTYPE_p_apr_pool_t pool) {
    -    switch_status_t ret = (switch_status_t)freeswitchPINVOKE.switch_ivr_menu_init(SWIGTYPE_p_p_switch_ivr_menu.getCPtr(new_menu), SWIGTYPE_p_switch_ivr_menu.getCPtr(main), name, greeting_sound, short_greeting_sound, invalid_sound, exit_sound, transfer_sound, confirm_macro, confirm_key, tts_engine, tts_voice, confirm_attempts, inter_timeout, digit_len, timeout, max_failures, max_timeouts, SWIGTYPE_p_apr_pool_t.getCPtr(pool));
    +  public static switch_status_t switch_ivr_menu_init(SWIGTYPE_p_p_switch_ivr_menu new_menu, SWIGTYPE_p_switch_ivr_menu main, string name, string greeting_sound, string short_greeting_sound, string invalid_sound, string exit_sound, string transfer_sound, string confirm_macro, string confirm_key, string tts_engine, string tts_voice, int confirm_attempts, int inter_timeout, int digit_len, int timeout, int max_failures, int max_timeouts, SWIGTYPE_p_fspr_pool_t pool) {
    +    switch_status_t ret = (switch_status_t)freeswitchPINVOKE.switch_ivr_menu_init(SWIGTYPE_p_p_switch_ivr_menu.getCPtr(new_menu), SWIGTYPE_p_switch_ivr_menu.getCPtr(main), name, greeting_sound, short_greeting_sound, invalid_sound, exit_sound, transfer_sound, confirm_macro, confirm_key, tts_engine, tts_voice, confirm_attempts, inter_timeout, digit_len, timeout, max_failures, max_timeouts, SWIGTYPE_p_fspr_pool_t.getCPtr(pool));
         return ret;
       }
     
    @@ -13468,8 +13468,8 @@ public static switch_status_t switch_ivr_menu_stack_xml_add_custom(SWIGTYPE_p_sw
         return ret;
       }
     
    -  public static switch_status_t switch_ivr_menu_stack_xml_init(SWIGTYPE_p_p_switch_ivr_menu_xml_ctx xml_menu_ctx, SWIGTYPE_p_apr_pool_t pool) {
    -    switch_status_t ret = (switch_status_t)freeswitchPINVOKE.switch_ivr_menu_stack_xml_init(SWIGTYPE_p_p_switch_ivr_menu_xml_ctx.getCPtr(xml_menu_ctx), SWIGTYPE_p_apr_pool_t.getCPtr(pool));
    +  public static switch_status_t switch_ivr_menu_stack_xml_init(SWIGTYPE_p_p_switch_ivr_menu_xml_ctx xml_menu_ctx, SWIGTYPE_p_fspr_pool_t pool) {
    +    switch_status_t ret = (switch_status_t)freeswitchPINVOKE.switch_ivr_menu_stack_xml_init(SWIGTYPE_p_p_switch_ivr_menu_xml_ctx.getCPtr(xml_menu_ctx), SWIGTYPE_p_fspr_pool_t.getCPtr(pool));
         return ret;
       }
     
    @@ -13625,8 +13625,8 @@ public static void switch_ivr_dmachine_set_nonmatch_callback(SWIGTYPE_p_switch_i
         freeswitchPINVOKE.switch_ivr_dmachine_set_nonmatch_callback(SWIGTYPE_p_switch_ivr_dmachine.getCPtr(dmachine), SWIGTYPE_p_f_p_switch_ivr_dmachine_match__switch_status_t.getCPtr(nonmatch_callback));
       }
     
    -  public static switch_status_t switch_ivr_dmachine_create(SWIGTYPE_p_p_switch_ivr_dmachine dmachine_p, string name, SWIGTYPE_p_apr_pool_t pool, uint digit_timeout, uint input_timeout, SWIGTYPE_p_f_p_switch_ivr_dmachine_match__switch_status_t match_callback, SWIGTYPE_p_f_p_switch_ivr_dmachine_match__switch_status_t nonmatch_callback, SWIGTYPE_p_void user_data) {
    -    switch_status_t ret = (switch_status_t)freeswitchPINVOKE.switch_ivr_dmachine_create(SWIGTYPE_p_p_switch_ivr_dmachine.getCPtr(dmachine_p), name, SWIGTYPE_p_apr_pool_t.getCPtr(pool), digit_timeout, input_timeout, SWIGTYPE_p_f_p_switch_ivr_dmachine_match__switch_status_t.getCPtr(match_callback), SWIGTYPE_p_f_p_switch_ivr_dmachine_match__switch_status_t.getCPtr(nonmatch_callback), SWIGTYPE_p_void.getCPtr(user_data));
    +  public static switch_status_t switch_ivr_dmachine_create(SWIGTYPE_p_p_switch_ivr_dmachine dmachine_p, string name, SWIGTYPE_p_fspr_pool_t pool, uint digit_timeout, uint input_timeout, SWIGTYPE_p_f_p_switch_ivr_dmachine_match__switch_status_t match_callback, SWIGTYPE_p_f_p_switch_ivr_dmachine_match__switch_status_t nonmatch_callback, SWIGTYPE_p_void user_data) {
    +    switch_status_t ret = (switch_status_t)freeswitchPINVOKE.switch_ivr_dmachine_create(SWIGTYPE_p_p_switch_ivr_dmachine.getCPtr(dmachine_p), name, SWIGTYPE_p_fspr_pool_t.getCPtr(pool), digit_timeout, input_timeout, SWIGTYPE_p_f_p_switch_ivr_dmachine_match__switch_status_t.getCPtr(match_callback), SWIGTYPE_p_f_p_switch_ivr_dmachine_match__switch_status_t.getCPtr(nonmatch_callback), SWIGTYPE_p_void.getCPtr(user_data));
         return ret;
       }
     
    @@ -13912,8 +13912,8 @@ public static void switch_rtp_get_random(SWIGTYPE_p_void buf, uint len) {
         freeswitchPINVOKE.switch_rtp_get_random(SWIGTYPE_p_void.getCPtr(buf), len);
       }
     
    -  public static void switch_rtp_init(SWIGTYPE_p_apr_pool_t pool) {
    -    freeswitchPINVOKE.switch_rtp_init(SWIGTYPE_p_apr_pool_t.getCPtr(pool));
    +  public static void switch_rtp_init(SWIGTYPE_p_fspr_pool_t pool) {
    +    freeswitchPINVOKE.switch_rtp_init(SWIGTYPE_p_fspr_pool_t.getCPtr(pool));
       }
     
       public static void switch_rtp_shutdown() {
    @@ -13959,10 +13959,10 @@ public static switch_status_t switch_rtp_change_interval(SWIGTYPE_p_switch_rtp r
         return ret;
       }
     
    -  public static switch_status_t switch_rtp_create(SWIGTYPE_p_p_switch_rtp new_rtp_session, byte payload, uint samples_per_interval, uint ms_per_packet, SWIGTYPE_p_switch_rtp_flag_t flags, string timer_name, out string err, SWIGTYPE_p_apr_pool_t pool) {
    +  public static switch_status_t switch_rtp_create(SWIGTYPE_p_p_switch_rtp new_rtp_session, byte payload, uint samples_per_interval, uint ms_per_packet, SWIGTYPE_p_switch_rtp_flag_t flags, string timer_name, out string err, SWIGTYPE_p_fspr_pool_t pool) {
     var err_ptr = global::System.IntPtr.Zero;
         try {
    -      switch_status_t ret = (switch_status_t)freeswitchPINVOKE.switch_rtp_create(SWIGTYPE_p_p_switch_rtp.getCPtr(new_rtp_session), payload, samples_per_interval, ms_per_packet, SWIGTYPE_p_switch_rtp_flag_t.getCPtr(flags), timer_name, ref err_ptr, SWIGTYPE_p_apr_pool_t.getCPtr(pool));
    +      switch_status_t ret = (switch_status_t)freeswitchPINVOKE.switch_rtp_create(SWIGTYPE_p_p_switch_rtp.getCPtr(new_rtp_session), payload, samples_per_interval, ms_per_packet, SWIGTYPE_p_switch_rtp_flag_t.getCPtr(flags), timer_name, ref err_ptr, SWIGTYPE_p_fspr_pool_t.getCPtr(pool));
           return ret;
         } finally {
     if(err_ptr != global::System.IntPtr.Zero)
    @@ -13972,10 +13972,10 @@ public static switch_status_t switch_rtp_create(SWIGTYPE_p_p_switch_rtp new_rtp_
         }
       }
     
    -  public static SWIGTYPE_p_switch_rtp switch_rtp_new(string rx_host, ushort rx_port, string tx_host, ushort tx_port, byte payload, uint samples_per_interval, uint ms_per_packet, SWIGTYPE_p_switch_rtp_flag_t flags, string timer_name, out string err, SWIGTYPE_p_apr_pool_t pool, ushort bundle_internal_ports, ushort bundle_external_port) {
    +  public static SWIGTYPE_p_switch_rtp switch_rtp_new(string rx_host, ushort rx_port, string tx_host, ushort tx_port, byte payload, uint samples_per_interval, uint ms_per_packet, SWIGTYPE_p_switch_rtp_flag_t flags, string timer_name, out string err, SWIGTYPE_p_fspr_pool_t pool, ushort bundle_internal_ports, ushort bundle_external_port) {
     var err_ptr = global::System.IntPtr.Zero;
         try {
    -      global::System.IntPtr cPtr = freeswitchPINVOKE.switch_rtp_new(rx_host, rx_port, tx_host, tx_port, payload, samples_per_interval, ms_per_packet, SWIGTYPE_p_switch_rtp_flag_t.getCPtr(flags), timer_name, ref err_ptr, SWIGTYPE_p_apr_pool_t.getCPtr(pool), bundle_internal_ports, bundle_external_port);
    +      global::System.IntPtr cPtr = freeswitchPINVOKE.switch_rtp_new(rx_host, rx_port, tx_host, tx_port, payload, samples_per_interval, ms_per_packet, SWIGTYPE_p_switch_rtp_flag_t.getCPtr(flags), timer_name, ref err_ptr, SWIGTYPE_p_fspr_pool_t.getCPtr(pool), bundle_internal_ports, bundle_external_port);
           SWIGTYPE_p_switch_rtp ret = (cPtr == global::System.IntPtr.Zero) ? null : new SWIGTYPE_p_switch_rtp(cPtr, false);
           return ret;
         } finally {
    @@ -14279,8 +14279,8 @@ public static void switch_rtp_intentional_bugs(SWIGTYPE_p_switch_rtp rtp_session
         freeswitchPINVOKE.switch_rtp_intentional_bugs(SWIGTYPE_p_switch_rtp.getCPtr(rtp_session), (int)bugs);
       }
     
    -  public static switch_rtp_stats_t switch_rtp_get_stats(SWIGTYPE_p_switch_rtp rtp_session, SWIGTYPE_p_apr_pool_t pool) {
    -    global::System.IntPtr cPtr = freeswitchPINVOKE.switch_rtp_get_stats(SWIGTYPE_p_switch_rtp.getCPtr(rtp_session), SWIGTYPE_p_apr_pool_t.getCPtr(pool));
    +  public static switch_rtp_stats_t switch_rtp_get_stats(SWIGTYPE_p_switch_rtp rtp_session, SWIGTYPE_p_fspr_pool_t pool) {
    +    global::System.IntPtr cPtr = freeswitchPINVOKE.switch_rtp_get_stats(SWIGTYPE_p_switch_rtp.getCPtr(rtp_session), SWIGTYPE_p_fspr_pool_t.getCPtr(pool));
         switch_rtp_stats_t ret = (cPtr == global::System.IntPtr.Zero) ? null : new switch_rtp_stats_t(cPtr, false);
         return ret;
       }
    @@ -14344,8 +14344,8 @@ public static SWIGTYPE_p_cJSON switch_log_node_to_json(switch_log_node_t node, i
         return ret;
       }
     
    -  public static switch_status_t switch_log_init(SWIGTYPE_p_apr_pool_t pool, switch_bool_t colorize) {
    -    switch_status_t ret = (switch_status_t)freeswitchPINVOKE.switch_log_init(SWIGTYPE_p_apr_pool_t.getCPtr(pool), (int)colorize);
    +  public static switch_status_t switch_log_init(SWIGTYPE_p_fspr_pool_t pool, switch_bool_t colorize) {
    +    switch_status_t ret = (switch_status_t)freeswitchPINVOKE.switch_log_init(SWIGTYPE_p_fspr_pool_t.getCPtr(pool), (int)colorize);
         return ret;
       }
     
    @@ -14587,10 +14587,10 @@ public static switch_xml switch_xml_open_root(byte reload, out string err) {
         }
       }
     
    -  public static switch_status_t switch_xml_init(SWIGTYPE_p_apr_pool_t pool, out string err) {
    +  public static switch_status_t switch_xml_init(SWIGTYPE_p_fspr_pool_t pool, out string err) {
     var err_ptr = global::System.IntPtr.Zero;
         try {
    -      switch_status_t ret = (switch_status_t)freeswitchPINVOKE.switch_xml_init(SWIGTYPE_p_apr_pool_t.getCPtr(pool), ref err_ptr);
    +      switch_status_t ret = (switch_status_t)freeswitchPINVOKE.switch_xml_init(SWIGTYPE_p_fspr_pool_t.getCPtr(pool), ref err_ptr);
           return ret;
         } finally {
     if(err_ptr != global::System.IntPtr.Zero)
    @@ -22447,6 +22447,12 @@ static SWIGStringHelper() {
       [global::System.Runtime.InteropServices.DllImport("mod_managed", EntryPoint="CSharp_FreeSWITCHfNative_switch_file_handle_vol_get___")]
       public static extern int switch_file_handle_vol_get(global::System.Runtime.InteropServices.HandleRef jarg1);
     
    +  [global::System.Runtime.InteropServices.DllImport("mod_managed", EntryPoint="CSharp_FreeSWITCHfNative_switch_file_handle_volgranular_set___")]
    +  public static extern void switch_file_handle_volgranular_set(global::System.Runtime.InteropServices.HandleRef jarg1, int jarg2);
    +
    +  [global::System.Runtime.InteropServices.DllImport("mod_managed", EntryPoint="CSharp_FreeSWITCHfNative_switch_file_handle_volgranular_get___")]
    +  public static extern int switch_file_handle_volgranular_get(global::System.Runtime.InteropServices.HandleRef jarg1);
    +
       [global::System.Runtime.InteropServices.DllImport("mod_managed", EntryPoint="CSharp_FreeSWITCHfNative_switch_file_handle_resampler_set___")]
       public static extern void switch_file_handle_resampler_set(global::System.Runtime.InteropServices.HandleRef jarg1, global::System.Runtime.InteropServices.HandleRef jarg2);
     
    @@ -29674,13 +29680,13 @@ public string param {
         } 
       }
     
    -  public SWIGTYPE_p_apr_pool_t memory_pool {
    +  public SWIGTYPE_p_fspr_pool_t memory_pool {
         set {
    -      freeswitchPINVOKE.switch_asr_handle_memory_pool_set(swigCPtr, SWIGTYPE_p_apr_pool_t.getCPtr(value));
    +      freeswitchPINVOKE.switch_asr_handle_memory_pool_set(swigCPtr, SWIGTYPE_p_fspr_pool_t.getCPtr(value));
         } 
         get {
           global::System.IntPtr cPtr = freeswitchPINVOKE.switch_asr_handle_memory_pool_get(swigCPtr);
    -      SWIGTYPE_p_apr_pool_t ret = (cPtr == global::System.IntPtr.Zero) ? null : new SWIGTYPE_p_apr_pool_t(cPtr, false);
    +      SWIGTYPE_p_fspr_pool_t ret = (cPtr == global::System.IntPtr.Zero) ? null : new SWIGTYPE_p_fspr_pool_t(cPtr, false);
           return ret;
         } 
       }
    @@ -31035,35 +31041,35 @@ public enum switch_call_cause_t {
       SWITCH_CAUSE_INTERWORKING = 127,
       SWITCH_CAUSE_SUCCESS = 142,
       SWITCH_CAUSE_ORIGINATOR_CANCEL = 487,
    -  SWITCH_CAUSE_CRASH = 500,
    -  SWITCH_CAUSE_SYSTEM_SHUTDOWN = 501,
    -  SWITCH_CAUSE_LOSE_RACE = 502,
    -  SWITCH_CAUSE_MANAGER_REQUEST = 503,
    -  SWITCH_CAUSE_BLIND_TRANSFER = 600,
    -  SWITCH_CAUSE_ATTENDED_TRANSFER = 601,
    -  SWITCH_CAUSE_ALLOTTED_TIMEOUT = 602,
    -  SWITCH_CAUSE_USER_CHALLENGE = 603,
    -  SWITCH_CAUSE_MEDIA_TIMEOUT = 604,
    -  SWITCH_CAUSE_PICKED_OFF = 605,
    -  SWITCH_CAUSE_USER_NOT_REGISTERED = 606,
    -  SWITCH_CAUSE_PROGRESS_TIMEOUT = 607,
    -  SWITCH_CAUSE_INVALID_GATEWAY = 608,
    -  SWITCH_CAUSE_GATEWAY_DOWN = 609,
    -  SWITCH_CAUSE_INVALID_URL = 610,
    -  SWITCH_CAUSE_INVALID_PROFILE = 611,
    -  SWITCH_CAUSE_NO_PICKUP = 612,
    -  SWITCH_CAUSE_SRTP_READ_ERROR = 613,
    -  SWITCH_CAUSE_BOWOUT = 614,
    -  SWITCH_CAUSE_BUSY_EVERYWHERE = 615,
    -  SWITCH_CAUSE_DECLINE = 616,
    -  SWITCH_CAUSE_DOES_NOT_EXIST_ANYWHERE = 617,
    -  SWITCH_CAUSE_NOT_ACCEPTABLE = 618,
    -  SWITCH_CAUSE_UNWANTED = 619,
    -  SWITCH_CAUSE_NO_IDENTITY = 620,
    -  SWITCH_CAUSE_BAD_IDENTITY_INFO = 621,
    -  SWITCH_CAUSE_UNSUPPORTED_CERTIFICATE = 622,
    -  SWITCH_CAUSE_INVALID_IDENTITY = 623,
    -  SWITCH_CAUSE_STALE_DATE = 624
    +  SWITCH_CAUSE_CRASH = 700,
    +  SWITCH_CAUSE_SYSTEM_SHUTDOWN = 701,
    +  SWITCH_CAUSE_LOSE_RACE = 702,
    +  SWITCH_CAUSE_MANAGER_REQUEST = 703,
    +  SWITCH_CAUSE_BLIND_TRANSFER = 800,
    +  SWITCH_CAUSE_ATTENDED_TRANSFER = 801,
    +  SWITCH_CAUSE_ALLOTTED_TIMEOUT = 802,
    +  SWITCH_CAUSE_USER_CHALLENGE = 803,
    +  SWITCH_CAUSE_MEDIA_TIMEOUT = 804,
    +  SWITCH_CAUSE_PICKED_OFF = 805,
    +  SWITCH_CAUSE_USER_NOT_REGISTERED = 806,
    +  SWITCH_CAUSE_PROGRESS_TIMEOUT = 807,
    +  SWITCH_CAUSE_INVALID_GATEWAY = 808,
    +  SWITCH_CAUSE_GATEWAY_DOWN = 809,
    +  SWITCH_CAUSE_INVALID_URL = 810,
    +  SWITCH_CAUSE_INVALID_PROFILE = 811,
    +  SWITCH_CAUSE_NO_PICKUP = 812,
    +  SWITCH_CAUSE_SRTP_READ_ERROR = 813,
    +  SWITCH_CAUSE_BOWOUT = 814,
    +  SWITCH_CAUSE_BUSY_EVERYWHERE = 815,
    +  SWITCH_CAUSE_DECLINE = 816,
    +  SWITCH_CAUSE_DOES_NOT_EXIST_ANYWHERE = 817,
    +  SWITCH_CAUSE_NOT_ACCEPTABLE = 818,
    +  SWITCH_CAUSE_UNWANTED = 819,
    +  SWITCH_CAUSE_NO_IDENTITY = 820,
    +  SWITCH_CAUSE_BAD_IDENTITY_INFO = 821,
    +  SWITCH_CAUSE_UNSUPPORTED_CERTIFICATE = 822,
    +  SWITCH_CAUSE_INVALID_IDENTITY = 823,
    +  SWITCH_CAUSE_STALE_DATE = 824
     }
     
     }
    @@ -31687,13 +31693,13 @@ public switch_caller_extension caller_extension {
         } 
       }
     
    -  public SWIGTYPE_p_apr_pool_t pool {
    +  public SWIGTYPE_p_fspr_pool_t pool {
         set {
    -      freeswitchPINVOKE.switch_caller_profile_pool_set(swigCPtr, SWIGTYPE_p_apr_pool_t.getCPtr(value));
    +      freeswitchPINVOKE.switch_caller_profile_pool_set(swigCPtr, SWIGTYPE_p_fspr_pool_t.getCPtr(value));
         } 
         get {
           global::System.IntPtr cPtr = freeswitchPINVOKE.switch_caller_profile_pool_get(swigCPtr);
    -      SWIGTYPE_p_apr_pool_t ret = (cPtr == global::System.IntPtr.Zero) ? null : new SWIGTYPE_p_apr_pool_t(cPtr, false);
    +      SWIGTYPE_p_fspr_pool_t ret = (cPtr == global::System.IntPtr.Zero) ? null : new SWIGTYPE_p_fspr_pool_t(cPtr, false);
           return ret;
         } 
       }
    @@ -32681,13 +32687,13 @@ public uint flags {
         } 
       }
     
    -  public SWIGTYPE_p_apr_pool_t memory_pool {
    +  public SWIGTYPE_p_fspr_pool_t memory_pool {
         set {
    -      freeswitchPINVOKE.switch_codec_memory_pool_set(swigCPtr, SWIGTYPE_p_apr_pool_t.getCPtr(value));
    +      freeswitchPINVOKE.switch_codec_memory_pool_set(swigCPtr, SWIGTYPE_p_fspr_pool_t.getCPtr(value));
         } 
         get {
           global::System.IntPtr cPtr = freeswitchPINVOKE.switch_codec_memory_pool_get(swigCPtr);
    -      SWIGTYPE_p_apr_pool_t ret = (cPtr == global::System.IntPtr.Zero) ? null : new SWIGTYPE_p_apr_pool_t(cPtr, false);
    +      SWIGTYPE_p_fspr_pool_t ret = (cPtr == global::System.IntPtr.Zero) ? null : new SWIGTYPE_p_fspr_pool_t(cPtr, false);
           return ret;
         } 
       }
    @@ -34262,13 +34268,13 @@ public SWIGTYPE_p_f_p_switch_core_session_p_void_enum_switch_input_type_t_p_void
         } 
       }
     
    -  public SWIGTYPE_p_apr_pool_t pool {
    +  public SWIGTYPE_p_fspr_pool_t pool {
         set {
    -      freeswitchPINVOKE.switch_core_thread_session_pool_set(swigCPtr, SWIGTYPE_p_apr_pool_t.getCPtr(value));
    +      freeswitchPINVOKE.switch_core_thread_session_pool_set(swigCPtr, SWIGTYPE_p_fspr_pool_t.getCPtr(value));
         } 
         get {
           global::System.IntPtr cPtr = freeswitchPINVOKE.switch_core_thread_session_pool_get(swigCPtr);
    -      SWIGTYPE_p_apr_pool_t ret = (cPtr == global::System.IntPtr.Zero) ? null : new SWIGTYPE_p_apr_pool_t(cPtr, false);
    +      SWIGTYPE_p_fspr_pool_t ret = (cPtr == global::System.IntPtr.Zero) ? null : new SWIGTYPE_p_fspr_pool_t(cPtr, false);
           return ret;
         } 
       }
    @@ -35369,13 +35375,13 @@ public SWIGTYPE_p_switch_mutex_t mutex {
         } 
       }
     
    -  public SWIGTYPE_p_apr_pool_t pool {
    +  public SWIGTYPE_p_fspr_pool_t pool {
         set {
    -      freeswitchPINVOKE.switch_device_record_t_pool_set(swigCPtr, SWIGTYPE_p_apr_pool_t.getCPtr(value));
    +      freeswitchPINVOKE.switch_device_record_t_pool_set(swigCPtr, SWIGTYPE_p_fspr_pool_t.getCPtr(value));
         } 
         get {
           global::System.IntPtr cPtr = freeswitchPINVOKE.switch_device_record_t_pool_get(swigCPtr);
    -      SWIGTYPE_p_apr_pool_t ret = (cPtr == global::System.IntPtr.Zero) ? null : new SWIGTYPE_p_apr_pool_t(cPtr, false);
    +      SWIGTYPE_p_fspr_pool_t ret = (cPtr == global::System.IntPtr.Zero) ? null : new SWIGTYPE_p_fspr_pool_t(cPtr, false);
           return ret;
         } 
       }
    @@ -36188,13 +36194,13 @@ public uint flags {
         } 
       }
     
    -  public SWIGTYPE_p_apr_pool_t memory_pool {
    +  public SWIGTYPE_p_fspr_pool_t memory_pool {
         set {
    -      freeswitchPINVOKE.switch_directory_handle_memory_pool_set(swigCPtr, SWIGTYPE_p_apr_pool_t.getCPtr(value));
    +      freeswitchPINVOKE.switch_directory_handle_memory_pool_set(swigCPtr, SWIGTYPE_p_fspr_pool_t.getCPtr(value));
         } 
         get {
           global::System.IntPtr cPtr = freeswitchPINVOKE.switch_directory_handle_memory_pool_get(swigCPtr);
    -      SWIGTYPE_p_apr_pool_t ret = (cPtr == global::System.IntPtr.Zero) ? null : new SWIGTYPE_p_apr_pool_t(cPtr, false);
    +      SWIGTYPE_p_fspr_pool_t ret = (cPtr == global::System.IntPtr.Zero) ? null : new SWIGTYPE_p_fspr_pool_t(cPtr, false);
           return ret;
         } 
       }
    @@ -37434,13 +37440,13 @@ public int speed {
         } 
       }
     
    -  public SWIGTYPE_p_apr_pool_t memory_pool {
    +  public SWIGTYPE_p_fspr_pool_t memory_pool {
         set {
    -      freeswitchPINVOKE.switch_file_handle_memory_pool_set(swigCPtr, SWIGTYPE_p_apr_pool_t.getCPtr(value));
    +      freeswitchPINVOKE.switch_file_handle_memory_pool_set(swigCPtr, SWIGTYPE_p_fspr_pool_t.getCPtr(value));
         } 
         get {
           global::System.IntPtr cPtr = freeswitchPINVOKE.switch_file_handle_memory_pool_get(swigCPtr);
    -      SWIGTYPE_p_apr_pool_t ret = (cPtr == global::System.IntPtr.Zero) ? null : new SWIGTYPE_p_apr_pool_t(cPtr, false);
    +      SWIGTYPE_p_fspr_pool_t ret = (cPtr == global::System.IntPtr.Zero) ? null : new SWIGTYPE_p_fspr_pool_t(cPtr, false);
           return ret;
         } 
       }
    @@ -37582,6 +37588,16 @@ public int vol {
         } 
       }
     
    +  public int volgranular {
    +    set {
    +      freeswitchPINVOKE.switch_file_handle_volgranular_set(swigCPtr, value);
    +    } 
    +    get {
    +      int ret = freeswitchPINVOKE.switch_file_handle_volgranular_get(swigCPtr);
    +      return ret;
    +    } 
    +  }
    +
       public switch_audio_resampler_t resampler {
         set {
           freeswitchPINVOKE.switch_file_handle_resampler_set(swigCPtr, switch_audio_resampler_t.getCPtr(value));
    @@ -40439,13 +40455,13 @@ public virtual void Dispose() {
         }
       }
     
    -  public SWIGTYPE_p_f_p_switch_core_session_p_switch_event_p_switch_caller_profile_p_p_switch_core_session_p_p_apr_pool_t_unsigned_long_p_enum_switch_call_cause_t__switch_call_cause_t outgoing_channel {
    +  public SWIGTYPE_p_f_p_switch_core_session_p_switch_event_p_switch_caller_profile_p_p_switch_core_session_p_p_fspr_pool_t_unsigned_long_p_enum_switch_call_cause_t__switch_call_cause_t outgoing_channel {
         set {
    -      freeswitchPINVOKE.switch_io_routines_outgoing_channel_set(swigCPtr, SWIGTYPE_p_f_p_switch_core_session_p_switch_event_p_switch_caller_profile_p_p_switch_core_session_p_p_apr_pool_t_unsigned_long_p_enum_switch_call_cause_t__switch_call_cause_t.getCPtr(value));
    +      freeswitchPINVOKE.switch_io_routines_outgoing_channel_set(swigCPtr, SWIGTYPE_p_f_p_switch_core_session_p_switch_event_p_switch_caller_profile_p_p_switch_core_session_p_p_fspr_pool_t_unsigned_long_p_enum_switch_call_cause_t__switch_call_cause_t.getCPtr(value));
         } 
         get {
           global::System.IntPtr cPtr = freeswitchPINVOKE.switch_io_routines_outgoing_channel_get(swigCPtr);
    -      SWIGTYPE_p_f_p_switch_core_session_p_switch_event_p_switch_caller_profile_p_p_switch_core_session_p_p_apr_pool_t_unsigned_long_p_enum_switch_call_cause_t__switch_call_cause_t ret = (cPtr == global::System.IntPtr.Zero) ? null : new SWIGTYPE_p_f_p_switch_core_session_p_switch_event_p_switch_caller_profile_p_p_switch_core_session_p_p_apr_pool_t_unsigned_long_p_enum_switch_call_cause_t__switch_call_cause_t(cPtr, false);
    +      SWIGTYPE_p_f_p_switch_core_session_p_switch_event_p_switch_caller_profile_p_p_switch_core_session_p_p_fspr_pool_t_unsigned_long_p_enum_switch_call_cause_t__switch_call_cause_t ret = (cPtr == global::System.IntPtr.Zero) ? null : new SWIGTYPE_p_f_p_switch_core_session_p_switch_event_p_switch_caller_profile_p_p_switch_core_session_p_p_fspr_pool_t_unsigned_long_p_enum_switch_call_cause_t__switch_call_cause_t(cPtr, false);
           return ret;
         } 
       }
    @@ -41162,13 +41178,13 @@ public int switch_api_version {
         } 
       }
     
    -  public SWIGTYPE_p_f_p_p_switch_loadable_module_interface_p_apr_pool_t__switch_status_t load {
    +  public SWIGTYPE_p_f_p_p_switch_loadable_module_interface_p_fspr_pool_t__switch_status_t load {
         set {
    -      freeswitchPINVOKE.switch_loadable_module_function_table_t_load_set(swigCPtr, SWIGTYPE_p_f_p_p_switch_loadable_module_interface_p_apr_pool_t__switch_status_t.getCPtr(value));
    +      freeswitchPINVOKE.switch_loadable_module_function_table_t_load_set(swigCPtr, SWIGTYPE_p_f_p_p_switch_loadable_module_interface_p_fspr_pool_t__switch_status_t.getCPtr(value));
         } 
         get {
           global::System.IntPtr cPtr = freeswitchPINVOKE.switch_loadable_module_function_table_t_load_get(swigCPtr);
    -      SWIGTYPE_p_f_p_p_switch_loadable_module_interface_p_apr_pool_t__switch_status_t ret = (cPtr == global::System.IntPtr.Zero) ? null : new SWIGTYPE_p_f_p_p_switch_loadable_module_interface_p_apr_pool_t__switch_status_t(cPtr, false);
    +      SWIGTYPE_p_f_p_p_switch_loadable_module_interface_p_fspr_pool_t__switch_status_t ret = (cPtr == global::System.IntPtr.Zero) ? null : new SWIGTYPE_p_f_p_p_switch_loadable_module_interface_p_fspr_pool_t__switch_status_t(cPtr, false);
           return ret;
         } 
       }
    @@ -41471,13 +41487,13 @@ public int refs {
         } 
       }
     
    -  public SWIGTYPE_p_apr_pool_t pool {
    +  public SWIGTYPE_p_fspr_pool_t pool {
         set {
    -      freeswitchPINVOKE.switch_loadable_module_interface_pool_set(swigCPtr, SWIGTYPE_p_apr_pool_t.getCPtr(value));
    +      freeswitchPINVOKE.switch_loadable_module_interface_pool_set(swigCPtr, SWIGTYPE_p_fspr_pool_t.getCPtr(value));
         } 
         get {
           global::System.IntPtr cPtr = freeswitchPINVOKE.switch_loadable_module_interface_pool_get(swigCPtr);
    -      SWIGTYPE_p_apr_pool_t ret = (cPtr == global::System.IntPtr.Zero) ? null : new SWIGTYPE_p_apr_pool_t(cPtr, false);
    +      SWIGTYPE_p_fspr_pool_t ret = (cPtr == global::System.IntPtr.Zero) ? null : new SWIGTYPE_p_fspr_pool_t(cPtr, false);
           return ret;
         } 
       }
    @@ -45621,13 +45637,13 @@ public string param {
         } 
       }
     
    -  public SWIGTYPE_p_apr_pool_t memory_pool {
    +  public SWIGTYPE_p_fspr_pool_t memory_pool {
         set {
    -      freeswitchPINVOKE.switch_speech_handle_memory_pool_set(swigCPtr, SWIGTYPE_p_apr_pool_t.getCPtr(value));
    +      freeswitchPINVOKE.switch_speech_handle_memory_pool_set(swigCPtr, SWIGTYPE_p_fspr_pool_t.getCPtr(value));
         } 
         get {
           global::System.IntPtr cPtr = freeswitchPINVOKE.switch_speech_handle_memory_pool_get(swigCPtr);
    -      SWIGTYPE_p_apr_pool_t ret = (cPtr == global::System.IntPtr.Zero) ? null : new SWIGTYPE_p_apr_pool_t(cPtr, false);
    +      SWIGTYPE_p_fspr_pool_t ret = (cPtr == global::System.IntPtr.Zero) ? null : new SWIGTYPE_p_fspr_pool_t(cPtr, false);
           return ret;
         } 
       }
    @@ -46787,13 +46803,13 @@ public int running {
         } 
       }
     
    -  public SWIGTYPE_p_apr_pool_t pool {
    +  public SWIGTYPE_p_fspr_pool_t pool {
         set {
    -      freeswitchPINVOKE.switch_thread_data_t_pool_set(swigCPtr, SWIGTYPE_p_apr_pool_t.getCPtr(value));
    +      freeswitchPINVOKE.switch_thread_data_t_pool_set(swigCPtr, SWIGTYPE_p_fspr_pool_t.getCPtr(value));
         } 
         get {
           global::System.IntPtr cPtr = freeswitchPINVOKE.switch_thread_data_t_pool_get(swigCPtr);
    -      SWIGTYPE_p_apr_pool_t ret = (cPtr == global::System.IntPtr.Zero) ? null : new SWIGTYPE_p_apr_pool_t(cPtr, false);
    +      SWIGTYPE_p_fspr_pool_t ret = (cPtr == global::System.IntPtr.Zero) ? null : new SWIGTYPE_p_fspr_pool_t(cPtr, false);
           return ret;
         } 
       }
    @@ -46927,13 +46943,13 @@ public switch_timer_interface timer_interface {
         } 
       }
     
    -  public SWIGTYPE_p_apr_pool_t memory_pool {
    +  public SWIGTYPE_p_fspr_pool_t memory_pool {
         set {
    -      freeswitchPINVOKE.switch_timer_memory_pool_set(swigCPtr, SWIGTYPE_p_apr_pool_t.getCPtr(value));
    +      freeswitchPINVOKE.switch_timer_memory_pool_set(swigCPtr, SWIGTYPE_p_fspr_pool_t.getCPtr(value));
         } 
         get {
           global::System.IntPtr cPtr = freeswitchPINVOKE.switch_timer_memory_pool_get(swigCPtr);
    -      SWIGTYPE_p_apr_pool_t ret = (cPtr == global::System.IntPtr.Zero) ? null : new SWIGTYPE_p_apr_pool_t(cPtr, false);
    +      SWIGTYPE_p_fspr_pool_t ret = (cPtr == global::System.IntPtr.Zero) ? null : new SWIGTYPE_p_fspr_pool_t(cPtr, false);
           return ret;
         } 
       }
    diff --git a/src/mod/languages/mod_managed/mod_managed.2017.vcxproj b/src/mod/languages/mod_managed/mod_managed.2017.vcxproj
    index 7722567b1c2..97aff02a014 100644
    --- a/src/mod/languages/mod_managed/mod_managed.2017.vcxproj
    +++ b/src/mod/languages/mod_managed/mod_managed.2017.vcxproj
    @@ -155,7 +155,7 @@
           MultiThreadedDebugDLL
           
           
    -      4505;%(DisableSpecificWarnings)
    +      4505;6553;%(DisableSpecificWarnings)
           true
         
         
    @@ -178,7 +178,7 @@
           
           
           true
    -      4505;%(DisableSpecificWarnings)
    +      4505;6553;%(DisableSpecificWarnings)
         
         
           shlwapi.lib;mscoree.lib;%(AdditionalDependencies)
    @@ -196,7 +196,7 @@
           true
           
           
    -      4505;%(DisableSpecificWarnings)
    +      4505;6553;%(DisableSpecificWarnings)
           true
         
         
    @@ -217,7 +217,7 @@
           true
           
           
    -      4505;%(DisableSpecificWarnings)
    +      4505;6553;%(DisableSpecificWarnings)
         
         
           
    @@ -237,7 +237,7 @@
           
           
           true
    -      4505;%(DisableSpecificWarnings)
    +      4505;6553;%(DisableSpecificWarnings)
         
         
           shlwapi.lib;mono.lib;C:\program Files\Mono\lib\glib-2.0.lib;%(AdditionalDependencies)
    @@ -261,7 +261,7 @@
           
           
           true
    -      4505;%(DisableSpecificWarnings)
    +      4505;6553;%(DisableSpecificWarnings)
         
         
           shlwapi.lib;mono.lib;C:\program Files\Mono\lib\glib-2.0.lib;%(AdditionalDependencies)
    @@ -283,7 +283,7 @@
           
           
           Level3
    -      4505;%(DisableSpecificWarnings)
    +      4505;6553;%(DisableSpecificWarnings)
         
         
           
    @@ -305,7 +305,7 @@
           
           
           Level3
    -      4505;%(DisableSpecificWarnings)
    +      4505;6553;%(DisableSpecificWarnings)
         
         
           
    diff --git a/src/mod/languages/mod_python3/freeswitch_python.cpp b/src/mod/languages/mod_python3/freeswitch_python.cpp
    index 0893c47c915..77c04fa9fc5 100644
    --- a/src/mod/languages/mod_python3/freeswitch_python.cpp
    +++ b/src/mod/languages/mod_python3/freeswitch_python.cpp
    @@ -144,7 +144,7 @@ void Session::check_hangup_hook()
     
     void Session::do_hangup_hook()
     {
    -	PyObject *result, *arglist;
    +	PyObject *arglist;
     	const char *what = hook_state == CS_HANGUP ? "hangup" : "transfer";
     
     	if (hh && !mark) {
    @@ -167,7 +167,7 @@ void Session::do_hangup_hook()
     				arglist = Py_BuildValue("(Os)", Self, what);
     			}
     
    -			if (!(result = PyEval_CallObject(hangup_func, arglist))) {
    +			if (!PyEval_CallObject(hangup_func, arglist)) {
     				PyErr_Print();
     			}
     
    diff --git a/src/mod/languages/mod_python3/mod_python3.c b/src/mod/languages/mod_python3/mod_python3.c
    index d0c7c20df51..52a33123610 100644
    --- a/src/mod/languages/mod_python3/mod_python3.c
    +++ b/src/mod/languages/mod_python3/mod_python3.c
    @@ -178,7 +178,6 @@ static void eval_some_python(const char *funcname, char *args, switch_core_sessi
     	PyThreadState *tstate = NULL;
     	char *dupargs = NULL;
     	char *argv[2] = { 0 };
    -	int argc;
     	char *script = NULL;
     	PyObject *module_o = NULL, *module = NULL, *sp = NULL, *stp = NULL, *eve = NULL;
     	PyObject *function = NULL;
    @@ -198,7 +197,7 @@ static void eval_some_python(const char *funcname, char *args, switch_core_sessi
     
     	assert(dupargs != NULL);
     
    -	if (!(argc = switch_separate_string(dupargs, ' ', argv, (sizeof(argv) / sizeof(argv[0]))))) {
    +	if (!switch_separate_string(dupargs, ' ', argv, (sizeof(argv) / sizeof(argv[0])))) {
     		switch_log_printf(SWITCH_CHANNEL_LOG, SWITCH_LOG_ERROR, "No module name specified!\n");
     		goto done;
     	}
    diff --git a/src/mod/languages/mod_v8/src/fseventhandler.cpp b/src/mod/languages/mod_v8/src/fseventhandler.cpp
    index e4e256e689a..145984c83fd 100644
    --- a/src/mod/languages/mod_v8/src/fseventhandler.cpp
    +++ b/src/mod/languages/mod_v8/src/fseventhandler.cpp
    @@ -389,10 +389,9 @@ JS_EVENTHANDLER_FUNCTION_IMPL(SendEvent)
     				if (session_uuid.length() > 0) {
     					/* This is a session event */
     					switch_core_session_t *session;
    -					switch_status_t status = SWITCH_STATUS_FALSE;
     
     					if ((session = switch_core_session_locate(session_uuid.c_str()))) {
    -						if ((status = switch_core_session_queue_private_event(session, event, SWITCH_FALSE)) == SWITCH_STATUS_SUCCESS) {
    +						if (switch_core_session_queue_private_event(session, event, SWITCH_FALSE) == SWITCH_STATUS_SUCCESS) {
     							info.GetReturnValue().Set(true);
     						} else {
     							info.GetReturnValue().Set(false);
    diff --git a/src/mod/languages/mod_v8/src/fsodbc.cpp b/src/mod/languages/mod_v8/src/fsodbc.cpp
    index 5b34ebe36e8..2b75661c504 100644
    --- a/src/mod/languages/mod_v8/src/fsodbc.cpp
    +++ b/src/mod/languages/mod_v8/src/fsodbc.cpp
    @@ -273,7 +273,6 @@ JS_ODBC_FUNCTION_IMPL(NumCols)
     JS_ODBC_FUNCTION_IMPL(NextRow)
     {
     	HandleScope handle_scope(info.GetIsolate());
    -	int result = 0;
     	bool tf = false;
     
     	if (switch_odbc_handle_get_state(_handle) != SWITCH_ODBC_STATE_CONNECTED) {
    @@ -282,7 +281,7 @@ JS_ODBC_FUNCTION_IMPL(NextRow)
     	}
     
     	if (_stmt) {
    -		if ((result = SQLFetch(_stmt) == SQL_SUCCESS)) {
    +		if (SQLFetch(_stmt) == SQL_SUCCESS) {
     			tf = true;
     		}
     	}
    diff --git a/src/mod/languages/mod_v8/src/fssession.cpp b/src/mod/languages/mod_v8/src/fssession.cpp
    index c8a315ced0a..d3bc77ae13b 100644
    --- a/src/mod/languages/mod_v8/src/fssession.cpp
    +++ b/src/mod/languages/mod_v8/src/fssession.cpp
    @@ -1250,7 +1250,6 @@ JS_SESSION_FUNCTION_IMPL(WaitForMedia)
     	HandleScope handle_scope(info.GetIsolate());
     	switch_channel_t *channel;
     	switch_time_t started;
    -	unsigned int elapsed;
     	int32_t timeout = 60000;
     	bool ret = true;
     
    @@ -1273,7 +1272,7 @@ JS_SESSION_FUNCTION_IMPL(WaitForMedia)
     	}
     
     	for (;;) {
    -		if (((elapsed = (unsigned int) ((switch_micro_time_now() - started) / 1000)) > (switch_time_t) timeout)
    +		if (((/* Elapsed */(unsigned int)((switch_micro_time_now() - started) / 1000)) > (switch_time_t)timeout)
     			|| switch_channel_down(channel)) {
     			info.GetReturnValue().Set(false);
     			break;
    @@ -1297,7 +1296,6 @@ JS_SESSION_FUNCTION_IMPL(WaitForAnswer)
     	HandleScope handle_scope(info.GetIsolate());
     	switch_channel_t *channel;
     	switch_time_t started;
    -	unsigned int elapsed;
     	int32_t timeout = 60000;
     	bool ret = true;
     
    @@ -1319,7 +1317,7 @@ JS_SESSION_FUNCTION_IMPL(WaitForAnswer)
     	}
     
     	for (;;) {
    -		if (((elapsed = (unsigned int) ((switch_micro_time_now() - started) / 1000)) > (switch_time_t) timeout)
    +		if (((/* Elapsed */(unsigned int)((switch_micro_time_now() - started) / 1000)) > (switch_time_t)timeout)
     			|| switch_channel_down(channel)) {
     			info.GetReturnValue().Set(false);
     			break;
    diff --git a/src/mod/say/mod_say_de/mod_say_de.c b/src/mod/say/mod_say_de/mod_say_de.c
    index 3f0245aac27..3003ab4bc2e 100644
    --- a/src/mod/say/mod_say_de/mod_say_de.c
    +++ b/src/mod/say/mod_say_de/mod_say_de.c
    @@ -517,6 +517,7 @@ static switch_status_t de_say(switch_core_session_t *session, char *tosay, switc
     	case SST_CURRENT_DATE:
     	case SST_CURRENT_TIME:
     	case SST_CURRENT_DATE_TIME:
    +	case SST_SHORT_DATE_TIME:
     		say_cb = de_say_time;
     		break;
     	case SST_IP_ADDRESS:
    diff --git a/src/mod/say/mod_say_hr/mod_say_hr.c b/src/mod/say/mod_say_hr/mod_say_hr.c
    index f996c7424d1..20582c01d4a 100644
    --- a/src/mod/say/mod_say_hr/mod_say_hr.c
    +++ b/src/mod/say/mod_say_hr/mod_say_hr.c
    @@ -751,7 +751,7 @@ static switch_status_t hr_say_time(switch_core_session_t *session, char *tosay,
     	}
     
     	if (say_date) {
    -		say_year = say_month = say_day = say_dow = 1;
    +		say_year = say_month = say_day = 1;
     	}
     
     	if (say_day) {
    @@ -1018,7 +1018,7 @@ static switch_status_t hr_say_money(switch_core_session_t *session, char *tosay,
     	int zadnja_lipa = 0;
     	int predzadnja_lipa = 0;
     
    -	if (strlen(tosay) > 15 || !(tosay = strip_nonnumerics(tosay, sbuf, sizeof(sbuf)-1)))
    +	if (strlen(tosay) > 15 || !strip_nonnumerics(tosay, sbuf, sizeof(sbuf)-1))
     	{
     		switch_log_printf(SWITCH_CHANNEL_LOG, SWITCH_LOG_ERROR, "Parse Error!\n");
     		return SWITCH_STATUS_GENERR;
    diff --git a/src/mod/say/mod_say_hu/mod_say_hu.c b/src/mod/say/mod_say_hu/mod_say_hu.c
    index 839fe47421a..f49716fc205 100644
    --- a/src/mod/say/mod_say_hu/mod_say_hu.c
    +++ b/src/mod/say/mod_say_hu/mod_say_hu.c
    @@ -325,7 +325,7 @@ static switch_status_t hu_say_time(switch_core_session_t *session, char *tosay,
     	}
     
     	if (say_date) {
    -		say_year = say_month = say_day = say_dow = 1;
    +		say_year = say_month = say_day = 1;
     	}
     
     	if (say_year) {
    diff --git a/src/mod/say/mod_say_pl/mod_say_pl.c b/src/mod/say/mod_say_pl/mod_say_pl.c
    index 4030b963912..35e2adb608b 100644
    --- a/src/mod/say/mod_say_pl/mod_say_pl.c
    +++ b/src/mod/say/mod_say_pl/mod_say_pl.c
    @@ -385,7 +385,7 @@ static switch_status_t pl_say_time(switch_say_file_handle_t *sh, char *tosay, sw
     	}
     
     	if (say_date) {
    -		say_year = say_month = say_day = say_dow = 1;
    +		say_year = say_month = say_day = 1;
     	}
     
     	if (say_day) {
    diff --git a/src/mod/say/mod_say_sv/mod_say_sv.c b/src/mod/say/mod_say_sv/mod_say_sv.c
    index d495ac91f3e..c1d1b636787 100644
    --- a/src/mod/say/mod_say_sv/mod_say_sv.c
    +++ b/src/mod/say/mod_say_sv/mod_say_sv.c
    @@ -429,7 +429,7 @@ static switch_status_t sv_say_time(switch_say_file_handle_t *sh, char *tosay, sw
             }
     
             if (say_date) {
    -                say_year = say_month = say_day = say_dow = 1;
    +                say_year = say_month = say_day = 1;
             }
     
             if (say_month) {
    diff --git a/src/mod/xml_int/mod_xml_ldap/mod_xml_ldap.c b/src/mod/xml_int/mod_xml_ldap/mod_xml_ldap.c
    index eecdb495493..a28d91a44ae 100644
    --- a/src/mod/xml_int/mod_xml_ldap/mod_xml_ldap.c
    +++ b/src/mod/xml_int/mod_xml_ldap/mod_xml_ldap.c
    @@ -721,8 +721,10 @@ static switch_xml_t xml_ldap_search(const char *section, const char *tag_name, c
                                     case XML_LDAP_DIRECTORY:
                                             switch_log_printf(SWITCH_CHANNEL_LOG, SWITCH_LOG_DEBUG, "from cb got %s=%s\n", hi->name, hi->value);
                                             if (!strncmp(hi->name, "user", strlen(hi->name))) {
    +                                                switch_safe_free(dir_exten);
                                                     dir_exten = strdup(hi->value);
                                             } else if (!strncmp(hi->name, "domain", strlen(hi->name))) {
    +                                                switch_safe_free(dir_domain);
                                                     dir_domain = strdup(hi->value);
                                             }
                                             break;
    diff --git a/src/mod/xml_int/mod_xml_scgi/mod_xml_scgi.c b/src/mod/xml_int/mod_xml_scgi/mod_xml_scgi.c
    index e346230efe1..63306c76a3e 100644
    --- a/src/mod/xml_int/mod_xml_scgi/mod_xml_scgi.c
    +++ b/src/mod/xml_int/mod_xml_scgi/mod_xml_scgi.c
    @@ -406,7 +406,7 @@ SWITCH_MODULE_SHUTDOWN_FUNCTION(mod_xml_scgi_shutdown)
     		if (bp->thread) {
     			switch_status_t st;
     			scgi_handle_t handle = { 0 };
    -			unsigned char buf[16336] = "";
    +			unsigned char buf[16336];
     			int x = 3;
     
     			scgi_add_param(&handle, "REQUEST_METHOD", "POST");
    diff --git a/src/switch.c b/src/switch.c
    index d10994c4c25..19a3d93fad7 100644
    --- a/src/switch.c
    +++ b/src/switch.c
    @@ -49,6 +49,7 @@
     #endif
     
     #include 
    +#include "private/switch_apr_pvt.h"
     #include "private/switch_core_pvt.h"
     
     /* pid filename: Stores the process id of the freeswitch process */
    @@ -229,7 +230,7 @@ void WINAPI service_main(DWORD numArgs, char **args)
     static int check_fd(int fd, int ms)
     {
     	struct pollfd pfds[2] = { { 0 } };
    -	int s, r = 0, i = 0;
    +	int s, r = 0;
     
     	pfds[0].fd = fd;
     	pfds[0].events = POLLIN | POLLERR;
    @@ -241,7 +242,7 @@ static int check_fd(int fd, int ms)
     		r = -1;
     
     		if ((pfds[0].revents & POLLIN)) {
    -			if ((i = read(fd, &r, sizeof(r))) > -1) {
    +			if (read(fd, &r, sizeof(r)) > -1) {
     				(void)write(fd, &r, sizeof(r));
     			}
     		}
    @@ -1039,7 +1040,7 @@ int main(int argc, char *argv[])
     		return freeswitch_kill_background();
     	}
     
    -	if (apr_initialize() != SWITCH_STATUS_SUCCESS) {
    +	if (fspr_initialize() != SWITCH_STATUS_SUCCESS) {
     		fprintf(stderr, "FATAL ERROR! Could not initialize APR\n");
     		return 255;
     	}
    @@ -1066,7 +1067,7 @@ int main(int argc, char *argv[])
     			rlp.rlim_max = SWITCH_SYSTEM_THREAD_STACKSIZE;
     			setrlimit(RLIMIT_STACK, &rlp);
     
    -			apr_terminate();
    +			fspr_terminate();
     			if (argv) ret = (int) execv(argv[0], argv);
     
     			for (i = 0; i < argc; i++) {
    @@ -1167,7 +1168,7 @@ int main(int argc, char *argv[])
     	switch_snprintf(pid_buffer, sizeof(pid_buffer), "%d", pid);
     	pid_len = strlen(pid_buffer);
     
    -	apr_pool_create(&pool, NULL);
    +	fspr_pool_create(&pool, NULL);
     
     	switch_dir_make_recursive(SWITCH_GLOBAL_dirs.run_dir, SWITCH_DEFAULT_DIR_PERMS, pool);
     
    @@ -1205,9 +1206,9 @@ int main(int argc, char *argv[])
     #ifndef WIN32
     	if (do_wait) {
     		if (fds[1] > -1) {
    -			int i, v = 1;
    +			int v = 1;
     
    -			if ((i = write(fds[1], &v, sizeof(v))) < 0) {
    +			if (write(fds[1], &v, sizeof(v)) < 0) {
     				fprintf(stderr, "System Error [%s]\n", strerror(errno));
     			} else {
     				(void)read(fds[1], &v, sizeof(v));
    @@ -1229,7 +1230,7 @@ int main(int argc, char *argv[])
     	destroy_status = switch_core_destroy();
     
     	switch_file_close(fd);
    -	apr_pool_destroy(pool);
    +	fspr_pool_destroy(pool);
     
     	if (unlink(pid_path) != 0) {
     		fprintf(stderr, "Failed to delete pid file [%s]\n", pid_path);
    diff --git a/src/switch_apr.c b/src/switch_apr.c
    index 91204acba7a..9bc5d8a7596 100644
    --- a/src/switch_apr.c
    +++ b/src/switch_apr.c
    @@ -36,49 +36,49 @@
     #include 
     #endif
     #include "private/switch_core_pvt.h"
    +#include "private/switch_apr_pvt.h"
     
     /* apr headers*/
    -#include 
    -#include 
    -#include 
    -#include 
    -#include 
    -#include 
    -#include 
    -#include 
    -#include 
    -#include 
    -#include 
    -#include 
    -#include 
    -#include 
    +#include 
    +#include 
    +#include 
    +#include 
    +#include 
    +#include 
    +#include 
    +#include 
    +#include 
    +#include 
    +#include 
    +#include 
    +#include 
    +#include 
     #define APR_WANT_STDIO
     #define APR_WANT_STRFUNC
    -#include 
    -#include 
    -#include 
    -#include 
    +#include 
    +#include 
    +#include 
    +#include 
     
     #ifdef WIN32
    -#include "apr_arch_networkio.h"
    +#include "fspr_arch_networkio.h"
     /* Missing socket symbols */
     #ifndef SOL_TCP
     #define SOL_TCP IPPROTO_TCP
     #endif
     #endif
     
    -/* apr_vformatter_buff_t definition*/
    -#include 
    +/* fspr_vformatter_buff_t definition*/
    +#include 
     
    -/* apr-util headers */
    -#include 
    -#include 
     #if (defined(HAVE_LIBMD5) || defined(HAVE_LIBMD) || defined(HAVE_MD5INIT))
     #include 
     #elif defined(HAVE_LIBCRYPTO)
     #include 
    -#else
    -#include 
    +#endif
    +
    +#ifndef WIN32
    +#include 
     #endif
     
     /* apr stubs */
    @@ -93,7 +93,7 @@ SWITCH_DECLARE(int) switch_status_is_timeup(int status)
     SWITCH_DECLARE(switch_thread_id_t) switch_thread_self(void)
     {
     #ifndef WIN32
    -	return apr_os_thread_current();
    +	return fspr_os_thread_current();
     #else
     	return (switch_thread_id_t) (GetCurrentThreadId());
     #endif
    @@ -104,7 +104,7 @@ SWITCH_DECLARE(int) switch_thread_equal(switch_thread_id_t tid1, switch_thread_i
     #ifdef WIN32
     	return (tid1 == tid2);
     #else
    -	return apr_os_thread_equal(tid1, tid2);
    +	return fspr_os_thread_equal(tid1, tid2);
     #endif
     
     }
    @@ -114,7 +114,7 @@ SWITCH_DECLARE(unsigned int) switch_ci_hashfunc_default(const char *char_key, sw
     	unsigned int hash = 0;
     	const unsigned char *key = (const unsigned char *) char_key;
     	const unsigned char *p;
    -	apr_ssize_t i;
    +	fspr_ssize_t i;
     
     	if (*klen == APR_HASH_KEY_STRING) {
     		for (p = key; *p; p++) {
    @@ -133,7 +133,7 @@ SWITCH_DECLARE(unsigned int) switch_ci_hashfunc_default(const char *char_key, sw
     
     SWITCH_DECLARE(unsigned int) switch_hashfunc_default(const char *key, switch_ssize_t *klen)
     {
    -	return apr_hashfunc_default(key, klen);
    +	return fspr_hashfunc_default(key, klen);
     }
     
     /* string functions */
    @@ -187,12 +187,12 @@ SWITCH_DECLARE(switch_status_t) switch_strftime(char *s, switch_size_t *retsize,
     		p++;
     	}
     
    -	return apr_strftime(s, retsize, max, format, (apr_time_exp_t *) tm);
    +	return fspr_strftime(s, retsize, max, format, (fspr_time_exp_t *) tm);
     }
     
     SWITCH_DECLARE(switch_status_t) switch_strftime_nocheck(char *s, switch_size_t *retsize, switch_size_t max, const char *format, switch_time_exp_t *tm)
     {
    -	return apr_strftime(s, retsize, max, format, (apr_time_exp_t *) tm);
    +	return fspr_strftime(s, retsize, max, format, (fspr_time_exp_t *) tm);
     }
     
     SWITCH_DECLARE(int) switch_snprintf(char *buf, switch_size_t len, const char *format, ...)
    @@ -200,14 +200,14 @@ SWITCH_DECLARE(int) switch_snprintf(char *buf, switch_size_t len, const char *fo
     	va_list ap;
     	int ret;
     	va_start(ap, format);
    -	ret = apr_vsnprintf(buf, len, format, ap);
    +	ret = fspr_vsnprintf(buf, len, format, ap);
     	va_end(ap);
     	return ret;
     }
     
     SWITCH_DECLARE(int) switch_vsnprintf(char *buf, switch_size_t len, const char *format, va_list ap)
     {
    -	return apr_vsnprintf(buf, len, format, ap);
    +	return fspr_vsnprintf(buf, len, format, ap);
     }
     
     SWITCH_DECLARE(char *) switch_copy_string(char *dst, const char *src, switch_size_t dst_size)
    @@ -218,44 +218,44 @@ SWITCH_DECLARE(char *) switch_copy_string(char *dst, const char *src, switch_siz
     		*dst = '\0';
     		return dst;
     	}
    -	return apr_cpystrn(dst, src, dst_size);
    +	return fspr_cpystrn(dst, src, dst_size);
     }
     
     /* thread read write lock functions */
     
     SWITCH_DECLARE(switch_status_t) switch_thread_rwlock_create(switch_thread_rwlock_t ** rwlock, switch_memory_pool_t *pool)
     {
    -	return apr_thread_rwlock_create(rwlock, pool);
    +	return fspr_thread_rwlock_create(rwlock, pool);
     }
     
     SWITCH_DECLARE(switch_status_t) switch_thread_rwlock_destroy(switch_thread_rwlock_t *rwlock)
     {
    -	return apr_thread_rwlock_destroy(rwlock);
    +	return fspr_thread_rwlock_destroy(rwlock);
     }
     
     SWITCH_DECLARE(switch_memory_pool_t *) switch_thread_rwlock_pool_get(switch_thread_rwlock_t *rwlock)
     {
    -	return apr_thread_rwlock_pool_get(rwlock);
    +	return fspr_thread_rwlock_pool_get(rwlock);
     }
     
     SWITCH_DECLARE(switch_status_t) switch_thread_rwlock_rdlock(switch_thread_rwlock_t *rwlock)
     {
    -	return apr_thread_rwlock_rdlock(rwlock);
    +	return fspr_thread_rwlock_rdlock(rwlock);
     }
     
     SWITCH_DECLARE(switch_status_t) switch_thread_rwlock_tryrdlock(switch_thread_rwlock_t *rwlock)
     {
    -	return apr_thread_rwlock_tryrdlock(rwlock);
    +	return fspr_thread_rwlock_tryrdlock(rwlock);
     }
     
     SWITCH_DECLARE(switch_status_t) switch_thread_rwlock_wrlock(switch_thread_rwlock_t *rwlock)
     {
    -	return apr_thread_rwlock_wrlock(rwlock);
    +	return fspr_thread_rwlock_wrlock(rwlock);
     }
     
     SWITCH_DECLARE(switch_status_t) switch_thread_rwlock_trywrlock(switch_thread_rwlock_t *rwlock)
     {
    -	return apr_thread_rwlock_trywrlock(rwlock);
    +	return fspr_thread_rwlock_trywrlock(rwlock);
     }
     
     SWITCH_DECLARE(switch_status_t) switch_thread_rwlock_trywrlock_timeout(switch_thread_rwlock_t *rwlock, int timeout)
    @@ -276,7 +276,7 @@ SWITCH_DECLARE(switch_status_t) switch_thread_rwlock_trywrlock_timeout(switch_th
     
     SWITCH_DECLARE(switch_status_t) switch_thread_rwlock_unlock(switch_thread_rwlock_t *rwlock)
     {
    -	return apr_thread_rwlock_unlock(rwlock);
    +	return fspr_thread_rwlock_unlock(rwlock);
     }
     
     /* thread mutex functions */
    @@ -288,27 +288,27 @@ SWITCH_DECLARE(switch_status_t) switch_mutex_init(switch_mutex_t ** lock, unsign
     	   APR has no reason to not use critical sections instead of mutexes. */
     	if (flags == SWITCH_MUTEX_NESTED) flags = SWITCH_MUTEX_DEFAULT;
     #endif
    -	return apr_thread_mutex_create(lock, flags, pool);
    +	return fspr_thread_mutex_create(lock, flags, pool);
     }
     
     SWITCH_DECLARE(switch_status_t) switch_mutex_destroy(switch_mutex_t *lock)
     {
    -	return apr_thread_mutex_destroy(lock);
    +	return fspr_thread_mutex_destroy(lock);
     }
     
     SWITCH_DECLARE(switch_status_t) switch_mutex_lock(switch_mutex_t *lock)
     {
    -	return apr_thread_mutex_lock(lock);
    +	return fspr_thread_mutex_lock(lock);
     }
     
     SWITCH_DECLARE(switch_status_t) switch_mutex_unlock(switch_mutex_t *lock)
     {
    -	return apr_thread_mutex_unlock(lock);
    +	return fspr_thread_mutex_unlock(lock);
     }
     
     SWITCH_DECLARE(switch_status_t) switch_mutex_trylock(switch_mutex_t *lock)
     {
    -	return apr_thread_mutex_trylock(lock);
    +	return fspr_thread_mutex_trylock(lock);
     }
     
     /* time function stubs */
    @@ -320,38 +320,38 @@ SWITCH_DECLARE(switch_time_t) switch_time_now(void)
     	clock_gettime(CLOCK_REALTIME, &ts);
     	return ts.tv_sec * APR_USEC_PER_SEC + (ts.tv_nsec / 1000);
     #else
    -	return (switch_time_t) apr_time_now();
    +	return (switch_time_t) fspr_time_now();
     #endif
     }
     
     SWITCH_DECLARE(switch_status_t) switch_time_exp_gmt_get(switch_time_t *result, switch_time_exp_t *input)
     {
    -	return apr_time_exp_gmt_get((apr_time_t *) result, (apr_time_exp_t *) input);
    +	return fspr_time_exp_gmt_get((fspr_time_t *) result, (fspr_time_exp_t *) input);
     }
     
     SWITCH_DECLARE(switch_status_t) switch_time_exp_get(switch_time_t *result, switch_time_exp_t *input)
     {
    -	return apr_time_exp_get((apr_time_t *) result, (apr_time_exp_t *) input);
    +	return fspr_time_exp_get((fspr_time_t *) result, (fspr_time_exp_t *) input);
     }
     
     SWITCH_DECLARE(switch_status_t) switch_time_exp_lt(switch_time_exp_t *result, switch_time_t input)
     {
    -	return apr_time_exp_lt((apr_time_exp_t *) result, input);
    +	return fspr_time_exp_lt((fspr_time_exp_t *) result, input);
     }
     
     SWITCH_DECLARE(switch_status_t) switch_time_exp_tz(switch_time_exp_t *result, switch_time_t input, switch_int32_t offs)
     {
    -	return apr_time_exp_tz((apr_time_exp_t *) result, input, (apr_int32_t) offs);
    +	return fspr_time_exp_tz((fspr_time_exp_t *) result, input, (fspr_int32_t) offs);
     }
     
     SWITCH_DECLARE(switch_status_t) switch_time_exp_gmt(switch_time_exp_t *result, switch_time_t input)
     {
    -	return apr_time_exp_gmt((apr_time_exp_t *) result, input);
    +	return fspr_time_exp_gmt((fspr_time_exp_t *) result, input);
     }
     
     SWITCH_DECLARE(switch_status_t) switch_rfc822_date(char *date_str, switch_time_t t)
     {
    -	return apr_rfc822_date(date_str, t);
    +	return fspr_rfc822_date(date_str, t);
     }
     
     SWITCH_DECLARE(switch_time_t) switch_time_make(switch_time_t sec, int32_t usec)
    @@ -363,17 +363,17 @@ SWITCH_DECLARE(switch_time_t) switch_time_make(switch_time_t sec, int32_t usec)
     
     SWITCH_DECLARE(switch_status_t) switch_thread_cond_create(switch_thread_cond_t ** cond, switch_memory_pool_t *pool)
     {
    -	return apr_thread_cond_create(cond, pool);
    +	return fspr_thread_cond_create(cond, pool);
     }
     
     SWITCH_DECLARE(switch_status_t) switch_thread_cond_wait(switch_thread_cond_t *cond, switch_mutex_t *mutex)
     {
    -	return apr_thread_cond_wait(cond, mutex);
    +	return fspr_thread_cond_wait(cond, mutex);
     }
     
     SWITCH_DECLARE(switch_status_t) switch_thread_cond_timedwait(switch_thread_cond_t *cond, switch_mutex_t *mutex, switch_interval_time_t timeout)
     {
    -	apr_status_t st = apr_thread_cond_timedwait(cond, mutex, timeout);
    +	fspr_status_t st = fspr_thread_cond_timedwait(cond, mutex, timeout);
     
     	if (st == APR_TIMEUP) {
     		st = SWITCH_STATUS_TIMEOUT;
    @@ -384,17 +384,17 @@ SWITCH_DECLARE(switch_status_t) switch_thread_cond_timedwait(switch_thread_cond_
     
     SWITCH_DECLARE(switch_status_t) switch_thread_cond_signal(switch_thread_cond_t *cond)
     {
    -	return apr_thread_cond_signal(cond);
    +	return fspr_thread_cond_signal(cond);
     }
     
     SWITCH_DECLARE(switch_status_t) switch_thread_cond_broadcast(switch_thread_cond_t *cond)
     {
    -	return apr_thread_cond_broadcast(cond);
    +	return fspr_thread_cond_broadcast(cond);
     }
     
     SWITCH_DECLARE(switch_status_t) switch_thread_cond_destroy(switch_thread_cond_t *cond)
     {
    -	return apr_thread_cond_destroy(cond);
    +	return fspr_thread_cond_destroy(cond);
     }
     
     /* file i/o stubs */
    @@ -402,57 +402,57 @@ SWITCH_DECLARE(switch_status_t) switch_thread_cond_destroy(switch_thread_cond_t
     SWITCH_DECLARE(switch_status_t) switch_file_open(switch_file_t ** newf, const char *fname, int32_t flag, switch_fileperms_t perm,
     												 switch_memory_pool_t *pool)
     {
    -	return apr_file_open(newf, fname, flag, perm, pool);
    +	return fspr_file_open(newf, fname, flag, perm, pool);
     }
     
     SWITCH_DECLARE(switch_status_t) switch_file_seek(switch_file_t *thefile, switch_seek_where_t where, int64_t *offset)
     {
    -	apr_status_t rv;
    -	apr_off_t off = (apr_off_t) (*offset);
    -	rv = apr_file_seek(thefile, where, &off);
    +	fspr_status_t rv;
    +	fspr_off_t off = (fspr_off_t) (*offset);
    +	rv = fspr_file_seek(thefile, where, &off);
     	*offset = (int64_t) off;
     	return rv;
     }
     
     SWITCH_DECLARE(switch_status_t) switch_file_copy(const char *from_path, const char *to_path, switch_fileperms_t perms, switch_memory_pool_t *pool)
     {
    -	return apr_file_copy(from_path, to_path, perms, pool);
    +	return fspr_file_copy(from_path, to_path, perms, pool);
     }
     
     
     SWITCH_DECLARE(switch_status_t) switch_file_close(switch_file_t *thefile)
     {
    -	return apr_file_close(thefile);
    +	return fspr_file_close(thefile);
     }
     
     SWITCH_DECLARE(switch_status_t) switch_file_trunc(switch_file_t *thefile, int64_t offset)
     {
    -	return apr_file_trunc(thefile, offset);
    +	return fspr_file_trunc(thefile, offset);
     }
     
     SWITCH_DECLARE(switch_status_t) switch_file_lock(switch_file_t *thefile, int type)
     {
    -	return apr_file_lock(thefile, type);
    +	return fspr_file_lock(thefile, type);
     }
     
     SWITCH_DECLARE(switch_status_t) switch_file_rename(const char *from_path, const char *to_path, switch_memory_pool_t *pool)
     {
    -	return apr_file_rename(from_path, to_path, pool);
    +	return fspr_file_rename(from_path, to_path, pool);
     }
     
     SWITCH_DECLARE(switch_status_t) switch_file_remove(const char *path, switch_memory_pool_t *pool)
     {
    -	return apr_file_remove(path, pool);
    +	return fspr_file_remove(path, pool);
     }
     
     SWITCH_DECLARE(switch_status_t) switch_file_read(switch_file_t *thefile, void *buf, switch_size_t *nbytes)
     {
    -	return apr_file_read(thefile, buf, nbytes);
    +	return fspr_file_read(thefile, buf, nbytes);
     }
     
     SWITCH_DECLARE(switch_status_t) switch_file_write(switch_file_t *thefile, const void *buf, switch_size_t *nbytes)
     {
    -	return apr_file_write(thefile, buf, nbytes);
    +	return fspr_file_write(thefile, buf, nbytes);
     }
     
     SWITCH_DECLARE(int) switch_file_printf(switch_file_t *thefile, const char *format, ...)
    @@ -476,18 +476,18 @@ SWITCH_DECLARE(int) switch_file_printf(switch_file_t *thefile, const char *forma
     
     SWITCH_DECLARE(switch_status_t) switch_file_mktemp(switch_file_t ** thefile, char *templ, int32_t flags, switch_memory_pool_t *pool)
     {
    -	return apr_file_mktemp(thefile, templ, flags, pool);
    +	return fspr_file_mktemp(thefile, templ, flags, pool);
     }
     
     SWITCH_DECLARE(switch_size_t) switch_file_get_size(switch_file_t *thefile)
     {
    -	struct apr_finfo_t finfo;
    -	return apr_file_info_get(&finfo, APR_FINFO_SIZE, thefile) == SWITCH_STATUS_SUCCESS ? (switch_size_t) finfo.size : 0;
    +	struct fspr_finfo_t finfo;
    +	return fspr_file_info_get(&finfo, APR_FINFO_SIZE, thefile) == SWITCH_STATUS_SUCCESS ? (switch_size_t) finfo.size : 0;
     }
     
     SWITCH_DECLARE(switch_status_t) switch_directory_exists(const char *dirname, switch_memory_pool_t *pool)
     {
    -	apr_dir_t *dir_handle;
    +	fspr_dir_t *dir_handle;
     	switch_memory_pool_t *our_pool = NULL;
     	switch_status_t status;
     
    @@ -496,8 +496,8 @@ SWITCH_DECLARE(switch_status_t) switch_directory_exists(const char *dirname, swi
     		pool = our_pool;
     	}
     
    -	if ((status = apr_dir_open(&dir_handle, dirname, pool)) == APR_SUCCESS) {
    -		apr_dir_close(dir_handle);
    +	if ((status = fspr_dir_open(&dir_handle, dirname, pool)) == APR_SUCCESS) {
    +		fspr_dir_close(dir_handle);
     	}
     
     	if (our_pool) {
    @@ -512,7 +512,7 @@ SWITCH_DECLARE(switch_status_t) switch_file_exists(const char *filename, switch_
     	int32_t wanted = APR_FINFO_TYPE;
     	switch_memory_pool_t *our_pool = NULL;
     	switch_status_t status = SWITCH_STATUS_FALSE;
    -	apr_finfo_t info = { 0 };
    +	fspr_finfo_t info = { 0 };
     
     	if (zstr(filename)) {
     		return status;
    @@ -522,7 +522,7 @@ SWITCH_DECLARE(switch_status_t) switch_file_exists(const char *filename, switch_
     		switch_core_new_memory_pool(&our_pool);
     	}
     
    -	apr_stat(&info, filename, wanted, pool ? pool : our_pool);
    +	fspr_stat(&info, filename, wanted, pool ? pool : our_pool);
     	if (info.filetype != APR_NOFILE) {
     		status = SWITCH_STATUS_SUCCESS;
     	}
    @@ -536,17 +536,17 @@ SWITCH_DECLARE(switch_status_t) switch_file_exists(const char *filename, switch_
     
     SWITCH_DECLARE(switch_status_t) switch_dir_make(const char *path, switch_fileperms_t perm, switch_memory_pool_t *pool)
     {
    -	return apr_dir_make(path, perm, pool);
    +	return fspr_dir_make(path, perm, pool);
     }
     
     SWITCH_DECLARE(switch_status_t) switch_dir_make_recursive(const char *path, switch_fileperms_t perm, switch_memory_pool_t *pool)
     {
    -	return apr_dir_make_recursive(path, perm, pool);
    +	return fspr_dir_make_recursive(path, perm, pool);
     }
     
     struct switch_dir {
    -	apr_dir_t *dir_handle;
    -	apr_finfo_t finfo;
    +	fspr_dir_t *dir_handle;
    +	fspr_finfo_t finfo;
     };
     
     SWITCH_DECLARE(switch_status_t) switch_dir_open(switch_dir_t ** new_dir, const char *dirname, switch_memory_pool_t *pool)
    @@ -560,7 +560,7 @@ SWITCH_DECLARE(switch_status_t) switch_dir_open(switch_dir_t ** new_dir, const c
     	}
     
     	memset(dir, 0, sizeof(*dir));
    -	if ((status = apr_dir_open(&(dir->dir_handle), dirname, pool)) == APR_SUCCESS) {
    +	if ((status = fspr_dir_open(&(dir->dir_handle), dirname, pool)) == APR_SUCCESS) {
     		*new_dir = dir;
     	} else {
     		free(dir);
    @@ -572,7 +572,7 @@ SWITCH_DECLARE(switch_status_t) switch_dir_open(switch_dir_t ** new_dir, const c
     
     SWITCH_DECLARE(switch_status_t) switch_dir_close(switch_dir_t *thedir)
     {
    -	switch_status_t status = apr_dir_close(thedir->dir_handle);
    +	switch_status_t status = fspr_dir_close(thedir->dir_handle);
     
     	free(thedir);
     	return status;
    @@ -581,12 +581,12 @@ SWITCH_DECLARE(switch_status_t) switch_dir_close(switch_dir_t *thedir)
     SWITCH_DECLARE(uint32_t) switch_dir_count(switch_dir_t *thedir)
     {
     	const char *name;
    -	apr_int32_t finfo_flags = APR_FINFO_DIRENT | APR_FINFO_TYPE | APR_FINFO_NAME;
    +	fspr_int32_t finfo_flags = APR_FINFO_DIRENT | APR_FINFO_TYPE | APR_FINFO_NAME;
     	uint32_t count = 0;
     
    -	apr_dir_rewind(thedir->dir_handle);
    +	fspr_dir_rewind(thedir->dir_handle);
     
    -	while (apr_dir_read(&(thedir->finfo), finfo_flags, thedir->dir_handle) == SWITCH_STATUS_SUCCESS) {
    +	while (fspr_dir_read(&(thedir->finfo), finfo_flags, thedir->dir_handle) == SWITCH_STATUS_SUCCESS) {
     
     		if (thedir->finfo.filetype != APR_REG && thedir->finfo.filetype != APR_LNK) {
     			continue;
    @@ -601,7 +601,7 @@ SWITCH_DECLARE(uint32_t) switch_dir_count(switch_dir_t *thedir)
     		}
     	}
     
    -	apr_dir_rewind(thedir->dir_handle);
    +	fspr_dir_rewind(thedir->dir_handle);
     
     	return count;
     }
    @@ -609,10 +609,10 @@ SWITCH_DECLARE(uint32_t) switch_dir_count(switch_dir_t *thedir)
     SWITCH_DECLARE(const char *) switch_dir_next_file(switch_dir_t *thedir, char *buf, switch_size_t len)
     {
     	const char *fname = NULL;
    -	apr_int32_t finfo_flags = APR_FINFO_DIRENT | APR_FINFO_TYPE | APR_FINFO_NAME;
    +	fspr_int32_t finfo_flags = APR_FINFO_DIRENT | APR_FINFO_TYPE | APR_FINFO_NAME;
     	const char *name;
     
    -	while (apr_dir_read(&(thedir->finfo), finfo_flags, thedir->dir_handle) == SWITCH_STATUS_SUCCESS) {
    +	while (fspr_dir_read(&(thedir->finfo), finfo_flags, thedir->dir_handle) == SWITCH_STATUS_SUCCESS) {
     
     		if (thedir->finfo.filetype != APR_REG && thedir->finfo.filetype != APR_LNK) {
     			continue;
    @@ -636,18 +636,18 @@ SWITCH_DECLARE(const char *) switch_dir_next_file(switch_dir_t *thedir, char *bu
     /* thread stubs */
     
     #ifndef WIN32
    -struct apr_threadattr_t {
    -	apr_pool_t *pool;
    +struct fspr_threadattr_t {
    +	fspr_pool_t *pool;
     	pthread_attr_t attr;
     	int priority;
     };
     #else
     /* this needs to be revisited when apr for windows supports thread priority settings */
     /* search for WIN32 in this file */
    -struct apr_threadattr_t {
    -	apr_pool_t *pool;
    -	apr_int32_t detach;
    -	apr_size_t stacksize;
    +struct fspr_threadattr_t {
    +	fspr_pool_t *pool;
    +	fspr_int32_t detach;
    +	fspr_size_t stacksize;
     	int priority;
     };
     #endif
    @@ -657,7 +657,7 @@ SWITCH_DECLARE(switch_status_t) switch_threadattr_create(switch_threadattr_t **
     {
     	switch_status_t status;
     
    -	if ((status = apr_threadattr_create(new_attr, pool)) == SWITCH_STATUS_SUCCESS) {
    +	if ((status = fspr_threadattr_create(new_attr, pool)) == SWITCH_STATUS_SUCCESS) {
     
     		(*new_attr)->priority = SWITCH_PRI_LOW;
     
    @@ -668,12 +668,12 @@ SWITCH_DECLARE(switch_status_t) switch_threadattr_create(switch_threadattr_t **
     
     SWITCH_DECLARE(switch_status_t) switch_threadattr_detach_set(switch_threadattr_t *attr, int32_t on)
     {
    -	return apr_threadattr_detach_set(attr, on);
    +	return fspr_threadattr_detach_set(attr, on);
     }
     
     SWITCH_DECLARE(switch_status_t) switch_threadattr_stacksize_set(switch_threadattr_t *attr, switch_size_t stacksize)
     {
    -	return apr_threadattr_stacksize_set(attr, stacksize);
    +	return fspr_threadattr_stacksize_set(attr, stacksize);
     }
     
     SWITCH_DECLARE(switch_status_t) switch_threadattr_priority_set(switch_threadattr_t *attr, switch_thread_priority_t priority)
    @@ -690,7 +690,7 @@ SWITCH_DECLARE(switch_status_t) switch_thread_create(switch_thread_t ** new_thre
     													 switch_thread_start_t func, void *data, switch_memory_pool_t *cont)
     {
     	switch_core_memory_pool_set_data(cont, "_in_thread", TT_KEY);
    -	return apr_thread_create(new_thread, attr, func, data, cont);
    +	return fspr_thread_create(new_thread, attr, func, data, cont);
     }
     
     SWITCH_DECLARE(switch_interval_time_t) switch_interval_time_from_timeval(struct timeval *tvp)
    @@ -702,52 +702,52 @@ SWITCH_DECLARE(switch_interval_time_t) switch_interval_time_from_timeval(struct
     
     SWITCH_DECLARE(switch_status_t) switch_os_sock_get(switch_os_socket_t *thesock, switch_socket_t *sock)
     {
    -	return apr_os_sock_get(thesock, sock);
    +	return fspr_os_sock_get(thesock, sock);
     }
     
     SWITCH_DECLARE(switch_status_t) switch_os_sock_put(switch_socket_t **sock, switch_os_socket_t *thesock, switch_memory_pool_t *pool)
     {
    -	return apr_os_sock_put(sock, thesock, pool);
    +	return fspr_os_sock_put(sock, thesock, pool);
     }
     
     SWITCH_DECLARE(switch_status_t) switch_socket_addr_get(switch_sockaddr_t ** sa, switch_bool_t remote, switch_socket_t *sock)
     {
    -	return apr_socket_addr_get(sa, (apr_interface_e) remote, sock);
    +	return fspr_socket_addr_get(sa, (fspr_interface_e) remote, sock);
     }
     
     SWITCH_DECLARE(switch_status_t) switch_socket_create(switch_socket_t ** new_sock, int family, int type, int protocol, switch_memory_pool_t *pool)
     {
    -	return apr_socket_create(new_sock, family, type, protocol, pool);
    +	return fspr_socket_create(new_sock, family, type, protocol, pool);
     }
     
     SWITCH_DECLARE(switch_status_t) switch_socket_shutdown(switch_socket_t *sock, switch_shutdown_how_e how)
     {
    -	return apr_socket_shutdown(sock, (apr_shutdown_how_e) how);
    +	return fspr_socket_shutdown(sock, (fspr_shutdown_how_e) how);
     }
     
     SWITCH_DECLARE(switch_status_t) switch_socket_close(switch_socket_t *sock)
     {
    -	return apr_socket_close(sock);
    +	return fspr_socket_close(sock);
     }
     
     SWITCH_DECLARE(switch_status_t) switch_socket_bind(switch_socket_t *sock, switch_sockaddr_t *sa)
     {
    -	return apr_socket_bind(sock, sa);
    +	return fspr_socket_bind(sock, sa);
     }
     
     SWITCH_DECLARE(switch_status_t) switch_socket_listen(switch_socket_t *sock, int32_t backlog)
     {
    -	return apr_socket_listen(sock, backlog);
    +	return fspr_socket_listen(sock, backlog);
     }
     
     SWITCH_DECLARE(switch_status_t) switch_socket_accept(switch_socket_t ** new_sock, switch_socket_t *sock, switch_memory_pool_t *pool)
     {
    -	return apr_socket_accept(new_sock, sock, pool);
    +	return fspr_socket_accept(new_sock, sock, pool);
     }
     
     SWITCH_DECLARE(switch_status_t) switch_socket_connect(switch_socket_t *sock, switch_sockaddr_t *sa)
     {
    -	return apr_socket_connect(sock, sa);
    +	return fspr_socket_connect(sock, sa);
     }
     
     SWITCH_DECLARE(switch_status_t) switch_socket_send(switch_socket_t *sock, const char *buf, switch_size_t *len)
    @@ -758,7 +758,7 @@ SWITCH_DECLARE(switch_status_t) switch_socket_send(switch_socket_t *sock, const
     
     	while ((wrote < req && status == SWITCH_STATUS_SUCCESS) || (need == 0 && status == SWITCH_STATUS_BREAK) || status == 730035 || status == 35) {
     		need = req - wrote;
    -		status = apr_socket_send(sock, buf + wrote, &need);
    +		status = fspr_socket_send(sock, buf + wrote, &need);
     		if (status == SWITCH_STATUS_BREAK || status == 730035 || status == 35) {
     			if (++to_count > 60000) {
     				status = SWITCH_STATUS_FALSE;
    @@ -781,7 +781,7 @@ SWITCH_DECLARE(switch_status_t) switch_socket_send_nonblock(switch_socket_t *soc
     		return SWITCH_STATUS_GENERR;
     	}
     
    -	return apr_socket_send(sock, buf, len);
    +	return fspr_socket_send(sock, buf, len);
     }
     
     SWITCH_DECLARE(switch_status_t) switch_socket_sendto(switch_socket_t *sock, switch_sockaddr_t *where, int32_t flags, const char *buf,
    @@ -790,14 +790,14 @@ SWITCH_DECLARE(switch_status_t) switch_socket_sendto(switch_socket_t *sock, swit
     	if (!where || !buf || !len || !*len) {
     		return SWITCH_STATUS_GENERR;
     	}
    -	return apr_socket_sendto(sock, where, flags, buf, len);
    +	return fspr_socket_sendto(sock, where, flags, buf, len);
     }
     
     SWITCH_DECLARE(switch_status_t) switch_socket_recv(switch_socket_t *sock, char *buf, switch_size_t *len)
     {
     	int r;
     
    -	r = apr_socket_recv(sock, buf, len);
    +	r = fspr_socket_recv(sock, buf, len);
     
     	if (r == 35 || r == 730035) {
     		r = SWITCH_STATUS_BREAK;
    @@ -811,7 +811,7 @@ SWITCH_DECLARE(switch_status_t) switch_sockaddr_create(switch_sockaddr_t **sa, s
     	switch_sockaddr_t *new_sa;
     	unsigned short family = APR_INET;
     
    -	new_sa = apr_pcalloc(pool, sizeof(apr_sockaddr_t));
    +	new_sa = fspr_pcalloc(pool, sizeof(fspr_sockaddr_t));
     	switch_assert(new_sa);
     	new_sa->pool = pool;
     
    @@ -830,20 +830,20 @@ SWITCH_DECLARE(switch_status_t) switch_sockaddr_create(switch_sockaddr_t **sa, s
     SWITCH_DECLARE(switch_status_t) switch_sockaddr_info_get(switch_sockaddr_t ** sa, const char *hostname, int32_t family,
     														 switch_port_t port, int32_t flags, switch_memory_pool_t *pool)
     {
    -	return apr_sockaddr_info_get(sa, hostname, family, port, flags, pool);
    +	return fspr_sockaddr_info_get(sa, hostname, family, port, flags, pool);
     }
     
     SWITCH_DECLARE(switch_status_t) switch_sockaddr_new(switch_sockaddr_t ** sa, const char *ip, switch_port_t port, switch_memory_pool_t *pool)
     {
     	switch_status_t status = SWITCH_STATUS_SUCCESS;
    -	apr_sockaddr_t *new_sa;
    +	fspr_sockaddr_t *new_sa;
     	int family;
     
     	if (!sa || !pool || !ip) {
     		switch_goto_status(SWITCH_STATUS_GENERR, end);
     	}
     
    -	new_sa = apr_pcalloc(pool, sizeof(apr_sockaddr_t));
    +	new_sa = fspr_pcalloc(pool, sizeof(fspr_sockaddr_t));
     	switch_assert(new_sa);
     
     	new_sa->pool = pool;
    @@ -865,7 +865,7 @@ SWITCH_DECLARE(switch_status_t) switch_sockaddr_new(switch_sockaddr_t ** sa, con
     		memcpy(&new_sa->sa, &sa4, sizeof(struct sockaddr_in));
     	}
     
    -	new_sa->hostname = apr_pstrdup(pool, ip);
    +	new_sa->hostname = fspr_pstrdup(pool, ip);
     	new_sa->family = family;
     	new_sa->sa.sin.sin_family = family;
     	if (port) {
    @@ -917,13 +917,13 @@ SWITCH_DECLARE(switch_status_t) switch_socket_opt_set(switch_socket_t *sock, int
     #endif
     	}
     
    -	return apr_socket_opt_set(sock, opt, on);
    +	return fspr_socket_opt_set(sock, opt, on);
     }
     
     SWITCH_DECLARE(switch_status_t) switch_socket_timeout_get(switch_socket_t *sock, switch_interval_time_t *t)
     {
    -	apr_interval_time_t at = 0;
    -	switch_status_t status = apr_socket_timeout_get(sock, &at);
    +	fspr_interval_time_t at = 0;
    +	switch_status_t status = fspr_socket_timeout_get(sock, &at);
     	*t = at;
     
     	return status;
    @@ -931,37 +931,37 @@ SWITCH_DECLARE(switch_status_t) switch_socket_timeout_get(switch_socket_t *sock,
     
     SWITCH_DECLARE(switch_status_t) switch_socket_timeout_set(switch_socket_t *sock, switch_interval_time_t t)
     {
    -	return apr_socket_timeout_set(sock, t);
    +	return fspr_socket_timeout_set(sock, t);
     }
     
     SWITCH_DECLARE(switch_status_t) switch_sockaddr_ip_get(char **addr, switch_sockaddr_t *sa)
     {
    -	return apr_sockaddr_ip_get(addr, sa);
    +	return fspr_sockaddr_ip_get(addr, sa);
     }
     
     SWITCH_DECLARE(int) switch_sockaddr_equal(const switch_sockaddr_t *sa1, const switch_sockaddr_t *sa2)
     {
    -	return apr_sockaddr_equal(sa1, sa2);
    +	return fspr_sockaddr_equal(sa1, sa2);
     }
     
     SWITCH_DECLARE(switch_status_t) switch_mcast_join(switch_socket_t *sock, switch_sockaddr_t *join, switch_sockaddr_t *iface, switch_sockaddr_t *source)
     {
    -	return apr_mcast_join(sock, join, iface, source);
    +	return fspr_mcast_join(sock, join, iface, source);
     }
     
     SWITCH_DECLARE(switch_status_t) switch_mcast_hops(switch_socket_t *sock, uint8_t ttl)
     {
    -	return apr_mcast_hops(sock, ttl);
    +	return fspr_mcast_hops(sock, ttl);
     }
     
     SWITCH_DECLARE(switch_status_t) switch_mcast_loopback(switch_socket_t *sock, uint8_t opt)
     {
    -	return apr_mcast_loopback(sock, opt);
    +	return fspr_mcast_loopback(sock, opt);
     }
     
     SWITCH_DECLARE(switch_status_t) switch_mcast_interface(switch_socket_t *sock, switch_sockaddr_t *iface)
     {
    -	return apr_mcast_interface(sock, iface);
    +	return fspr_mcast_interface(sock, iface);
     }
     
     
    @@ -986,7 +986,7 @@ SWITCH_DECLARE(const char *) switch_get_addr(char *buf, switch_size_t len, switc
     
     SWITCH_DECLARE(int) switch_socket_fd_get(switch_socket_t *sock)
     {
    -	return apr_socket_fd_get(sock);
    +	return fspr_socket_fd_get(sock);
     }
     
     SWITCH_DECLARE(uint16_t) switch_sockaddr_get_port(switch_sockaddr_t *sa)
    @@ -1001,19 +1001,19 @@ SWITCH_DECLARE(int32_t) switch_sockaddr_get_family(switch_sockaddr_t *sa)
     
     SWITCH_DECLARE(switch_status_t) switch_getnameinfo(char **hostname, switch_sockaddr_t *sa, int32_t flags)
     {
    -	return apr_getnameinfo(hostname, sa, flags);
    +	return fspr_getnameinfo(hostname, sa, flags);
     }
     
     SWITCH_DECLARE(switch_status_t) switch_socket_atmark(switch_socket_t *sock, int *atmark)
     {
    -	return apr_socket_atmark(sock, atmark);
    +	return fspr_socket_atmark(sock, atmark);
     }
     
     SWITCH_DECLARE(switch_status_t) switch_socket_recvfrom(switch_sockaddr_t *from, switch_socket_t *sock, int32_t flags, char *buf, size_t *len)
     {
     	int r = SWITCH_STATUS_GENERR;
     
    -	if (from && sock && (r = apr_socket_recvfrom(from, sock, flags, buf, len)) == APR_SUCCESS) {
    +	if (from && sock && (r = fspr_socket_recvfrom(from, sock, flags, buf, len)) == APR_SUCCESS) {
     		from->port = ntohs(from->sa.sin.sin_port);
     		/* from->ipaddr_ptr = &(from->sa.sin.sin_addr);
     		 * from->ipaddr_ptr = inet_ntoa(from->sa.sin.sin_addr);
    @@ -1031,7 +1031,7 @@ SWITCH_DECLARE(switch_status_t) switch_socket_recvfrom(switch_sockaddr_t *from,
     
     SWITCH_DECLARE(switch_status_t) switch_pollset_create(switch_pollset_t ** pollset, uint32_t size, switch_memory_pool_t *pool, uint32_t flags)
     {
    -	return apr_pollset_create(pollset, size, pool, flags);
    +	return fspr_pollset_create(pollset, size, pool, flags);
     }
     
     SWITCH_DECLARE(switch_status_t) switch_pollset_add(switch_pollset_t *pollset, const switch_pollfd_t *descriptor)
    @@ -1040,7 +1040,7 @@ SWITCH_DECLARE(switch_status_t) switch_pollset_add(switch_pollset_t *pollset, co
     		return SWITCH_STATUS_FALSE;
     	}
     
    -	return apr_pollset_add((apr_pollset_t *) pollset, (const apr_pollfd_t *) descriptor);
    +	return fspr_pollset_add((fspr_pollset_t *) pollset, (const fspr_pollfd_t *) descriptor);
     }
     
     SWITCH_DECLARE(switch_status_t) switch_pollset_remove(switch_pollset_t *pollset, const switch_pollfd_t *descriptor)
    @@ -1049,7 +1049,7 @@ SWITCH_DECLARE(switch_status_t) switch_pollset_remove(switch_pollset_t *pollset,
     		return SWITCH_STATUS_FALSE;
     	}
     
    -	return apr_pollset_remove((apr_pollset_t *) pollset, (const apr_pollfd_t *) descriptor);
    +	return fspr_pollset_remove((fspr_pollset_t *) pollset, (const fspr_pollfd_t *) descriptor);
     }
     
     SWITCH_DECLARE(switch_status_t) switch_socket_create_pollfd(switch_pollfd_t **pollfd, switch_socket_t *sock, int16_t flags, void *client_data, switch_memory_pool_t *pool)
    @@ -1058,7 +1058,7 @@ SWITCH_DECLARE(switch_status_t) switch_socket_create_pollfd(switch_pollfd_t **po
     		return SWITCH_STATUS_FALSE;
     	}
     
    -	if ((*pollfd = (switch_pollfd_t*)apr_palloc(pool, sizeof(switch_pollfd_t))) == 0) {
    +	if ((*pollfd = (switch_pollfd_t*)fspr_palloc(pool, sizeof(switch_pollfd_t))) == 0) {
     		return SWITCH_STATUS_MEMERR;
     	}
     
    @@ -1075,10 +1075,10 @@ SWITCH_DECLARE(switch_status_t) switch_socket_create_pollfd(switch_pollfd_t **po
     
     SWITCH_DECLARE(switch_status_t) switch_pollset_poll(switch_pollset_t *pollset, switch_interval_time_t timeout, int32_t *num, const switch_pollfd_t **descriptors)
     {
    -	apr_status_t st = SWITCH_STATUS_FALSE;
    +	fspr_status_t st = SWITCH_STATUS_FALSE;
     
     	if (pollset) {
    -		st = apr_pollset_poll((apr_pollset_t *) pollset, timeout, num, (const apr_pollfd_t **) descriptors);
    +		st = fspr_pollset_poll((fspr_pollset_t *) pollset, timeout, num, (const fspr_pollfd_t **) descriptors);
     
     		if (st == APR_TIMEUP) {
     			st = SWITCH_STATUS_TIMEOUT;
    @@ -1090,10 +1090,10 @@ SWITCH_DECLARE(switch_status_t) switch_pollset_poll(switch_pollset_t *pollset, s
     
     SWITCH_DECLARE(switch_status_t) switch_poll(switch_pollfd_t *aprset, int32_t numsock, int32_t *nsds, switch_interval_time_t timeout)
     {
    -	apr_status_t st = SWITCH_STATUS_FALSE;
    +	fspr_status_t st = SWITCH_STATUS_FALSE;
     
     	if (aprset) {
    -		st = apr_poll((apr_pollfd_t *) aprset, numsock, nsds, timeout);
    +		st = fspr_poll((fspr_pollfd_t *) aprset, numsock, nsds, timeout);
     
     		if (numsock == 1 && ((aprset[0].rtnevents & APR_POLLERR) || (aprset[0].rtnevents & APR_POLLHUP) || (aprset[0].rtnevents & APR_POLLNVAL))) {
     			st = SWITCH_STATUS_GENERR;
    @@ -1131,7 +1131,7 @@ SWITCH_DECLARE(switch_status_t) switch_socket_create_pollset(switch_pollfd_t **
     SWITCH_DECLARE(void) switch_uuid_format(char *buffer, const switch_uuid_t *uuid)
     {
     #ifndef WIN32
    -	apr_uuid_format(buffer, (const apr_uuid_t *) uuid);
    +	uuid_unparse_lower(uuid->data, buffer);
     #else
     	RPC_CSTR buf;
     	UuidToString((const UUID *) uuid, &buf);
    @@ -1144,7 +1144,7 @@ SWITCH_DECLARE(void) switch_uuid_get(switch_uuid_t *uuid)
     {
     	switch_mutex_lock(runtime.uuid_mutex);
     #ifndef WIN32
    -	apr_uuid_get((apr_uuid_t *) uuid);
    +	uuid_generate(uuid->data);
     #else
     	UuidCreate((UUID *) uuid);
     #endif
    @@ -1154,7 +1154,10 @@ SWITCH_DECLARE(void) switch_uuid_get(switch_uuid_t *uuid)
     SWITCH_DECLARE(switch_status_t) switch_uuid_parse(switch_uuid_t *uuid, const char *uuid_str)
     {
     #ifndef WIN32
    -	return apr_uuid_parse((apr_uuid_t *) uuid, uuid_str);
    +	if (uuid_parse(uuid_str, uuid->data)) {
    +		return SWITCH_STATUS_FALSE;
    +	}
    +	return SWITCH_STATUS_SUCCESS;
     #else
     	return UuidFromString((RPC_CSTR) uuid_str, (UUID *) uuid);
     #endif
    @@ -1179,7 +1182,7 @@ SWITCH_DECLARE(switch_status_t) switch_md5(unsigned char digest[SWITCH_MD5_DIGES
     
     	return SWITCH_STATUS_SUCCESS;
     #else
    -	return apr_md5(digest, input, inputLen);
    +	return SWITCH_STATUS_NOTIMPL;
     #endif
     }
     
    @@ -1207,30 +1210,30 @@ SWITCH_DECLARE(switch_status_t) switch_md5_string(char digest_str[SWITCH_MD5_DIG
     
     SWITCH_DECLARE(switch_status_t) switch_queue_create(switch_queue_t ** queue, unsigned int queue_capacity, switch_memory_pool_t *pool)
     {
    -	return apr_queue_create(queue, queue_capacity, pool);
    +	return switch_apr_queue_create(queue, queue_capacity, pool);
     }
     
     SWITCH_DECLARE(unsigned int) switch_queue_size(switch_queue_t *queue)
     {
    -	return apr_queue_size(queue);
    +	return switch_apr_queue_size(queue);
     }
     
     SWITCH_DECLARE(switch_status_t) switch_queue_pop(switch_queue_t *queue, void **data)
     {
    -	return apr_queue_pop(queue, data);
    +	return switch_apr_queue_pop(queue, data);
     }
     
     SWITCH_DECLARE(switch_status_t) switch_queue_pop_timeout(switch_queue_t *queue, void **data, switch_interval_time_t timeout)
     {
    -	return apr_queue_pop_timeout(queue, data, timeout);
    +	return switch_apr_queue_pop_timeout(queue, data, timeout);
     }
     
     SWITCH_DECLARE(switch_status_t) switch_queue_push(switch_queue_t *queue, void *data)
     {
    -	apr_status_t s;
    +	fspr_status_t s;
     
     	do {
    -		s = apr_queue_push(queue, data);
    +		s = switch_apr_queue_push(queue, data);
     	} while (s == APR_EINTR);
     
     	return s;
    @@ -1238,25 +1241,25 @@ SWITCH_DECLARE(switch_status_t) switch_queue_push(switch_queue_t *queue, void *d
     
     SWITCH_DECLARE(switch_status_t) switch_queue_trypop(switch_queue_t *queue, void **data)
     {
    -	return apr_queue_trypop(queue, data);
    +	return switch_apr_queue_trypop(queue, data);
     }
     
     SWITCH_DECLARE(switch_status_t) switch_queue_interrupt_all(switch_queue_t *queue)
     {
    -	return apr_queue_interrupt_all(queue);
    +	return switch_apr_queue_interrupt_all(queue);
     }
     
     SWITCH_DECLARE(switch_status_t) switch_queue_term(switch_queue_t *queue)
     {
    -	return apr_queue_term(queue);
    +	return switch_apr_queue_term(queue);
     }
     
     SWITCH_DECLARE(switch_status_t) switch_queue_trypush(switch_queue_t *queue, void *data)
     {
    -	apr_status_t s;
    +	fspr_status_t s;
     
     	do {
    -		s = apr_queue_trypush(queue, data);
    +		s = switch_apr_queue_trypush(queue, data);
     	} while (s == APR_EINTR);
     
     	return s;
    @@ -1300,7 +1303,7 @@ SWITCH_DECLARE(int) switch_vasprintf(char **ret, const char *fmt, va_list ap)
     
     SWITCH_DECLARE(switch_status_t) switch_match_glob(const char *pattern, switch_array_header_t ** result, switch_memory_pool_t *pool)
     {
    -	return apr_match_glob(pattern, (apr_array_header_t **) result, pool);
    +	return fspr_match_glob(pattern, (fspr_array_header_t **) result, pool);
     }
     
     /**
    @@ -1311,7 +1314,7 @@ SWITCH_DECLARE(switch_status_t) switch_match_glob(const char *pattern, switch_ar
      */
     SWITCH_DECLARE(switch_status_t) switch_file_pipe_create(switch_file_t ** in, switch_file_t ** out, switch_memory_pool_t *pool)
     {
    -	return apr_file_pipe_create((apr_file_t **) in, (apr_file_t **) out, pool);
    +	return fspr_file_pipe_create((fspr_file_t **) in, (fspr_file_t **) out, pool);
     }
     
     /**
    @@ -1321,7 +1324,7 @@ SWITCH_DECLARE(switch_status_t) switch_file_pipe_create(switch_file_t ** in, swi
      */
     SWITCH_DECLARE(switch_status_t) switch_file_pipe_timeout_get(switch_file_t *thepipe, switch_interval_time_t *timeout)
     {
    -	return apr_file_pipe_timeout_get((apr_file_t *) thepipe, (apr_interval_time_t *) timeout);
    +	return fspr_file_pipe_timeout_get((fspr_file_t *) thepipe, (fspr_interval_time_t *) timeout);
     }
     
     /**
    @@ -1332,7 +1335,7 @@ SWITCH_DECLARE(switch_status_t) switch_file_pipe_timeout_get(switch_file_t *thep
      */
     SWITCH_DECLARE(switch_status_t) switch_file_pipe_timeout_set(switch_file_t *thepipe, switch_interval_time_t timeout)
     {
    -	return apr_file_pipe_timeout_set((apr_file_t *) thepipe, (apr_interval_time_t) timeout);
    +	return fspr_file_pipe_timeout_set((fspr_file_t *) thepipe, (fspr_interval_time_t) timeout);
     }
     
     
    @@ -1343,7 +1346,7 @@ SWITCH_DECLARE(switch_status_t) switch_file_pipe_timeout_set(switch_file_t *thep
      */
     SWITCH_DECLARE(switch_status_t) switch_thread_exit(switch_thread_t *thd, switch_status_t retval)
     {
    -	return apr_thread_exit((apr_thread_t *) thd, retval);
    +	return fspr_thread_exit((fspr_thread_t *) thd, retval);
     }
     
     /**
    @@ -1358,63 +1361,63 @@ SWITCH_DECLARE(switch_status_t) switch_thread_join(switch_status_t *retval, swit
     		return SWITCH_STATUS_FALSE;
     	}
     
    -	return apr_thread_join((apr_status_t *) retval, (apr_thread_t *) thd);
    +	return fspr_thread_join((fspr_status_t *) retval, (fspr_thread_t *) thd);
     }
     
     
     SWITCH_DECLARE(switch_status_t) switch_atomic_init(switch_memory_pool_t *pool)
     {
    -	return apr_atomic_init((apr_pool_t *) pool);
    +	return fspr_atomic_init((fspr_pool_t *) pool);
     }
     
     SWITCH_DECLARE(uint32_t) switch_atomic_read(volatile switch_atomic_t *mem)
     {
    -#ifdef apr_atomic_t
    -	return apr_atomic_read((apr_atomic_t *)mem);
    +#ifdef fspr_atomic_t
    +	return fspr_atomic_read((fspr_atomic_t *)mem);
     #else
    -	return apr_atomic_read32((apr_uint32_t *)mem);
    +	return fspr_atomic_read32((fspr_uint32_t *)mem);
     #endif
     }
     
     SWITCH_DECLARE(void) switch_atomic_set(volatile switch_atomic_t *mem, uint32_t val)
     {
    -#ifdef apr_atomic_t
    -	apr_atomic_set((apr_atomic_t *)mem, val);
    +#ifdef fspr_atomic_t
    +	fspr_atomic_set((fspr_atomic_t *)mem, val);
     #else
    -	apr_atomic_set32((apr_uint32_t *)mem, val);
    +	fspr_atomic_set32((fspr_uint32_t *)mem, val);
     #endif
     }
     
     SWITCH_DECLARE(void) switch_atomic_add(volatile switch_atomic_t *mem, uint32_t val)
     {
    -#ifdef apr_atomic_t
    -	apr_atomic_add((apr_atomic_t *)mem, val);
    +#ifdef fspr_atomic_t
    +	fspr_atomic_add((fspr_atomic_t *)mem, val);
     #else
    -	apr_atomic_add32((apr_uint32_t *)mem, val);
    +	fspr_atomic_add32((fspr_uint32_t *)mem, val);
     #endif
     }
     
     SWITCH_DECLARE(void) switch_atomic_inc(volatile switch_atomic_t *mem)
     {
    -#ifdef apr_atomic_t
    -	apr_atomic_inc((apr_atomic_t *)mem);
    +#ifdef fspr_atomic_t
    +	fspr_atomic_inc((fspr_atomic_t *)mem);
     #else
    -	apr_atomic_inc32((apr_uint32_t *)mem);
    +	fspr_atomic_inc32((fspr_uint32_t *)mem);
     #endif
     }
     
     SWITCH_DECLARE(int) switch_atomic_dec(volatile switch_atomic_t *mem)
     {
    -#ifdef apr_atomic_t
    -	return apr_atomic_dec((apr_atomic_t *)mem);
    +#ifdef fspr_atomic_t
    +	return fspr_atomic_dec((fspr_atomic_t *)mem);
     #else
    -	return apr_atomic_dec32((apr_uint32_t *)mem);
    +	return fspr_atomic_dec32((fspr_uint32_t *)mem);
     #endif
     }
     
     SWITCH_DECLARE(char *) switch_strerror(switch_status_t statcode, char *buf, switch_size_t bufsize)
     {
    -	return apr_strerror(statcode, buf, bufsize);
    +	return fspr_strerror(statcode, buf, bufsize);
     }
     
     /* For Emacs:
    diff --git a/libs/apr-util/misc/apr_queue.c b/src/switch_apr_queue.c
    similarity index 64%
    rename from libs/apr-util/misc/apr_queue.c
    rename to src/switch_apr_queue.c
    index a947df8a089..3fddf007d64 100644
    --- a/libs/apr-util/misc/apr_queue.c
    +++ b/src/switch_apr_queue.c
    @@ -14,33 +14,18 @@
      * limitations under the License.
      */
     
    -#include "apr.h"
    +#include 
    +#include 
    +#include 
    +#include 
     
    -#if APR_HAVE_STDIO_H
    -#include 
    -#endif
    -#if APR_HAVE_STDLIB_H
    -#include 
    -#endif
    -#if APR_HAVE_UNISTD_H
    -#include 
    -#endif
    -
    -#include "apu.h"
    -#include "apr_portable.h"
    -#include "apr_thread_mutex.h"
    -#include "apr_thread_cond.h"
    -#include "apr_errno.h"
    -#include "apr_queue.h"
    -
    -#if APR_HAS_THREADS
     /* 
      * define this to get debug messages
      *
     #define QUEUE_DEBUG
      */
     
    -struct apr_queue_t {
    +struct switch_apr_queue_t {
         void              **data;
         unsigned int        nelts; /**< # elements */
         unsigned int        in;    /**< next empty location */
    @@ -48,14 +33,16 @@ struct apr_queue_t {
         unsigned int        bounds;/**< max size of queue */
         unsigned int        full_waiters;
         unsigned int        empty_waiters;
    -    apr_thread_mutex_t *one_big_mutex;
    -    apr_thread_cond_t  *not_empty;
    -    apr_thread_cond_t  *not_full;
    +    fspr_thread_mutex_t *one_big_mutex;
    +    fspr_thread_cond_t  *not_empty;
    +    fspr_thread_cond_t  *not_full;
         int                 terminated;
     };
     
    +typedef struct switch_apr_queue_t switch_apr_queue_t;
    +
     #ifdef QUEUE_DEBUG
    -static void Q_DBG(char*msg, apr_queue_t *q) {
    +static void Q_DBG(char*msg, switch_apr_queue_t *q) {
         fprintf(stderr, "%ld\t#%d in %d out %d\t%s\n", 
                         apr_os_thread_current(),
                         q->nelts, q->in, q->out,
    @@ -67,66 +54,64 @@ static void Q_DBG(char*msg, apr_queue_t *q) {
     #endif
     
     /**
    - * Detects when the apr_queue_t is full. This utility function is expected
    + * Detects when the switch_apr_queue_t is full. This utility function is expected
      * to be called from within critical sections, and is not threadsafe.
      */
     #define apr_queue_full(queue) ((queue)->nelts == (queue)->bounds)
     
     /**
    - * Detects when the apr_queue_t is empty. This utility function is expected
    + * Detects when the switch_apr_queue_t is empty. This utility function is expected
      * to be called from within critical sections, and is not threadsafe.
      */
     #define apr_queue_empty(queue) ((queue)->nelts == 0)
     
     /**
      * Callback routine that is called to destroy this
    - * apr_queue_t when its pool is destroyed.
    + * switch_apr_queue_t when its pool is destroyed.
      */
    -static apr_status_t queue_destroy(void *data) 
    +static fspr_status_t queue_destroy(void *data) 
     {
    -    apr_queue_t *queue = data;
    +    switch_apr_queue_t *queue = data;
     
         /* Ignore errors here, we can't do anything about them anyway. */
     
    -    apr_thread_cond_destroy(queue->not_empty);
    -    apr_thread_cond_destroy(queue->not_full);
    -    apr_thread_mutex_destroy(queue->one_big_mutex);
    +    fspr_thread_cond_destroy(queue->not_empty);
    +    fspr_thread_cond_destroy(queue->not_full);
    +    fspr_thread_mutex_destroy(queue->one_big_mutex);
     
         return APR_SUCCESS;
     }
     
     /**
    - * Initialize the apr_queue_t.
    + * Initialize the switch_apr_queue_t.
      */
    -APU_DECLARE(apr_status_t) apr_queue_create(apr_queue_t **q, 
    -                                           unsigned int queue_capacity, 
    -                                           apr_pool_t *a)
    +fspr_status_t switch_apr_queue_create(switch_apr_queue_t **q, unsigned int queue_capacity, fspr_pool_t *a)
     {
    -    apr_status_t rv;
    -    apr_queue_t *queue;
    -    queue = apr_palloc(a, sizeof(apr_queue_t));
    +    fspr_status_t rv;
    +    switch_apr_queue_t *queue;
    +    queue = fspr_palloc(a, sizeof(switch_apr_queue_t));
         *q = queue;
     
         /* nested doesn't work ;( */
    -    rv = apr_thread_mutex_create(&queue->one_big_mutex,
    +    rv = fspr_thread_mutex_create(&queue->one_big_mutex,
                                      APR_THREAD_MUTEX_UNNESTED,
                                      a);
         if (rv != APR_SUCCESS) {
             return rv;
         }
     
    -    rv = apr_thread_cond_create(&queue->not_empty, a);
    +    rv = fspr_thread_cond_create(&queue->not_empty, a);
         if (rv != APR_SUCCESS) {
             return rv;
         }
     
    -    rv = apr_thread_cond_create(&queue->not_full, a);
    +    rv = fspr_thread_cond_create(&queue->not_full, a);
         if (rv != APR_SUCCESS) {
             return rv;
         }
     
         /* Set all the data in the queue to NULL */
    -    queue->data = apr_palloc(a, queue_capacity * sizeof(void*));
    +    queue->data = fspr_palloc(a, queue_capacity * sizeof(void*));
     	if (!queue->data) return APR_ENOMEM;
     	memset(queue->data, 0, queue_capacity * sizeof(void*));
         queue->bounds = queue_capacity;
    @@ -137,7 +122,7 @@ APU_DECLARE(apr_status_t) apr_queue_create(apr_queue_t **q,
         queue->full_waiters = 0;
         queue->empty_waiters = 0;
     
    -    apr_pool_cleanup_register(a, queue, queue_destroy, apr_pool_cleanup_null);
    +    fspr_pool_cleanup_register(a, queue, queue_destroy, fspr_pool_cleanup_null);
     
         return APR_SUCCESS;
     }
    @@ -147,15 +132,15 @@ APU_DECLARE(apr_status_t) apr_queue_create(apr_queue_t **q,
      * the push operation has completed, it signals other threads waiting
      * in apr_queue_pop() that they may continue consuming sockets.
      */
    -APU_DECLARE(apr_status_t) apr_queue_push(apr_queue_t *queue, void *data)
    +fspr_status_t switch_apr_queue_push(switch_apr_queue_t *queue, void *data)
     {
    -    apr_status_t rv;
    +    fspr_status_t rv;
     
         if (queue->terminated) {
             return APR_EOF; /* no more elements ever again */
         }
     
    -    rv = apr_thread_mutex_lock(queue->one_big_mutex);
    +    rv = fspr_thread_mutex_lock(queue->one_big_mutex);
         if (rv != APR_SUCCESS) {
             return rv;
         }
    @@ -163,17 +148,17 @@ APU_DECLARE(apr_status_t) apr_queue_push(apr_queue_t *queue, void *data)
         if (apr_queue_full(queue)) {
             if (!queue->terminated) {
                 queue->full_waiters++;
    -            rv = apr_thread_cond_wait(queue->not_full, queue->one_big_mutex);
    +            rv = fspr_thread_cond_wait(queue->not_full, queue->one_big_mutex);
                 queue->full_waiters--;
                 if (rv != APR_SUCCESS) {
    -                apr_thread_mutex_unlock(queue->one_big_mutex);
    +                fspr_thread_mutex_unlock(queue->one_big_mutex);
                     return rv;
                 }
             }
             /* If we wake up and it's still empty, then we were interrupted */
             if (apr_queue_full(queue)) {
                 Q_DBG("queue full (intr)", queue);
    -            rv = apr_thread_mutex_unlock(queue->one_big_mutex);
    +            rv = fspr_thread_mutex_unlock(queue->one_big_mutex);
                 if (rv != APR_SUCCESS) {
                     return rv;
                 }
    @@ -192,14 +177,14 @@ APU_DECLARE(apr_status_t) apr_queue_push(apr_queue_t *queue, void *data)
     
         if (queue->empty_waiters) {
             Q_DBG("sig !empty", queue);
    -        rv = apr_thread_cond_signal(queue->not_empty);
    +        rv = fspr_thread_cond_signal(queue->not_empty);
             if (rv != APR_SUCCESS) {
    -            apr_thread_mutex_unlock(queue->one_big_mutex);
    +            fspr_thread_mutex_unlock(queue->one_big_mutex);
                 return rv;
             }
         }
     
    -    rv = apr_thread_mutex_unlock(queue->one_big_mutex);
    +    rv = fspr_thread_mutex_unlock(queue->one_big_mutex);
         return rv;
     }
     
    @@ -208,21 +193,21 @@ APU_DECLARE(apr_status_t) apr_queue_push(apr_queue_t *queue, void *data)
      * the push operation has completed, it signals other threads waiting
      * in apr_queue_pop() that they may continue consuming sockets.
      */
    -APU_DECLARE(apr_status_t) apr_queue_trypush(apr_queue_t *queue, void *data)
    +fspr_status_t switch_apr_queue_trypush(switch_apr_queue_t *queue, void *data)
     {
    -    apr_status_t rv;
    +    fspr_status_t rv;
     
         if (queue->terminated) {
             return APR_EOF; /* no more elements ever again */
         }
     
    -    rv = apr_thread_mutex_lock(queue->one_big_mutex);
    +    rv = fspr_thread_mutex_lock(queue->one_big_mutex);
         if (rv != APR_SUCCESS) {
             return rv;
         }
     
         if (apr_queue_full(queue)) {
    -        apr_thread_mutex_unlock(queue->one_big_mutex);
    +        fspr_thread_mutex_unlock(queue->one_big_mutex);
             return APR_EAGAIN;
         }
         
    @@ -232,21 +217,21 @@ APU_DECLARE(apr_status_t) apr_queue_trypush(apr_queue_t *queue, void *data)
     
         if (queue->empty_waiters) {
             Q_DBG("sig !empty", queue);
    -        rv  = apr_thread_cond_signal(queue->not_empty);
    +        rv  = fspr_thread_cond_signal(queue->not_empty);
             if (rv != APR_SUCCESS) {
    -            apr_thread_mutex_unlock(queue->one_big_mutex);
    +            fspr_thread_mutex_unlock(queue->one_big_mutex);
                 return rv;
             }
         }
     
    -    rv = apr_thread_mutex_unlock(queue->one_big_mutex);
    +    rv = fspr_thread_mutex_unlock(queue->one_big_mutex);
         return rv;
     }
     
     /**
      * not thread safe
      */
    -APU_DECLARE(unsigned int) apr_queue_size(apr_queue_t *queue) {
    +unsigned int switch_apr_queue_size(switch_apr_queue_t *queue) {
         return queue->nelts;
     }
     
    @@ -256,15 +241,15 @@ APU_DECLARE(unsigned int) apr_queue_size(apr_queue_t *queue) {
      * Once retrieved, the item is placed into the address specified by
      * 'data'.
      */
    -APU_DECLARE(apr_status_t) apr_queue_pop(apr_queue_t *queue, void **data)
    +fspr_status_t switch_apr_queue_pop(switch_apr_queue_t *queue, void **data)
     {
    -    apr_status_t rv;
    +    fspr_status_t rv;
     
         if (queue->terminated) {
             return APR_EOF; /* no more elements ever again */
         }
     
    -    rv = apr_thread_mutex_lock(queue->one_big_mutex);
    +    rv = fspr_thread_mutex_lock(queue->one_big_mutex);
         if (rv != APR_SUCCESS) {
             return rv;
         }
    @@ -273,17 +258,17 @@ APU_DECLARE(apr_status_t) apr_queue_pop(apr_queue_t *queue, void **data)
         if (apr_queue_empty(queue)) {
             if (!queue->terminated) {
                 queue->empty_waiters++;
    -            rv = apr_thread_cond_wait(queue->not_empty, queue->one_big_mutex);
    +            rv = fspr_thread_cond_wait(queue->not_empty, queue->one_big_mutex);
                 queue->empty_waiters--;
                 if (rv != APR_SUCCESS) {
    -                apr_thread_mutex_unlock(queue->one_big_mutex);
    +                fspr_thread_mutex_unlock(queue->one_big_mutex);
                     return rv;
                 }
             }
             /* If we wake up and it's still empty, then we were interrupted */
             if (apr_queue_empty(queue)) {
                 Q_DBG("queue empty (intr)", queue);
    -            rv = apr_thread_mutex_unlock(queue->one_big_mutex);
    +            rv = fspr_thread_mutex_unlock(queue->one_big_mutex);
                 if (rv != APR_SUCCESS) {
                     return rv;
                 }
    @@ -302,14 +287,14 @@ APU_DECLARE(apr_status_t) apr_queue_pop(apr_queue_t *queue, void **data)
         queue->out = (queue->out + 1) % queue->bounds;
         if (queue->full_waiters) {
             Q_DBG("signal !full", queue);
    -        rv = apr_thread_cond_signal(queue->not_full);
    +        rv = fspr_thread_cond_signal(queue->not_full);
             if (rv != APR_SUCCESS) {
    -            apr_thread_mutex_unlock(queue->one_big_mutex);
    +            fspr_thread_mutex_unlock(queue->one_big_mutex);
                 return rv;
             }
         }
     
    -    rv = apr_thread_mutex_unlock(queue->one_big_mutex);
    +    rv = fspr_thread_mutex_unlock(queue->one_big_mutex);
         return rv;
     }
     
    @@ -319,15 +304,15 @@ APU_DECLARE(apr_status_t) apr_queue_pop(apr_queue_t *queue, void **data)
      * until timeout is elapsed. Once retrieved, the item is placed into
      * the address specified by'data'.
      */
    -APU_DECLARE(apr_status_t) apr_queue_pop_timeout(apr_queue_t *queue, void **data, apr_interval_time_t timeout)
    +fspr_status_t switch_apr_queue_pop_timeout(switch_apr_queue_t *queue, void **data, fspr_interval_time_t timeout)
     {
    -    apr_status_t rv;
    +    fspr_status_t rv;
     
         if (queue->terminated) {
             return APR_EOF; /* no more elements ever again */
         }
     
    -    rv = apr_thread_mutex_lock(queue->one_big_mutex);
    +    rv = fspr_thread_mutex_lock(queue->one_big_mutex);
         if (rv != APR_SUCCESS) {
             return rv;
         }
    @@ -336,18 +321,18 @@ APU_DECLARE(apr_status_t) apr_queue_pop_timeout(apr_queue_t *queue, void **data,
         if (apr_queue_empty(queue)) {
             if (!queue->terminated) {
                 queue->empty_waiters++;
    -            rv = apr_thread_cond_timedwait(queue->not_empty, queue->one_big_mutex, timeout);
    +            rv = fspr_thread_cond_timedwait(queue->not_empty, queue->one_big_mutex, timeout);
                 queue->empty_waiters--;
     			/* In the event of a timemout, APR_TIMEUP will be returned */
                 if (rv != APR_SUCCESS) {
    -                apr_thread_mutex_unlock(queue->one_big_mutex);
    +                fspr_thread_mutex_unlock(queue->one_big_mutex);
                     return rv;
                 }
             }
             /* If we wake up and it's still empty, then we were interrupted */
             if (apr_queue_empty(queue)) {
                 Q_DBG("queue empty (intr)", queue);
    -            rv = apr_thread_mutex_unlock(queue->one_big_mutex);
    +            rv = fspr_thread_mutex_unlock(queue->one_big_mutex);
                 if (rv != APR_SUCCESS) {
                     return rv;
                 }
    @@ -366,14 +351,14 @@ APU_DECLARE(apr_status_t) apr_queue_pop_timeout(apr_queue_t *queue, void **data,
         queue->out = (queue->out + 1) % queue->bounds;
         if (queue->full_waiters) {
             Q_DBG("signal !full", queue);
    -        rv = apr_thread_cond_signal(queue->not_full);
    +        rv = fspr_thread_cond_signal(queue->not_full);
             if (rv != APR_SUCCESS) {
    -            apr_thread_mutex_unlock(queue->one_big_mutex);
    +            fspr_thread_mutex_unlock(queue->one_big_mutex);
                 return rv;
             }
         }
     
    -    rv = apr_thread_mutex_unlock(queue->one_big_mutex);
    +    rv = fspr_thread_mutex_unlock(queue->one_big_mutex);
         return rv;
     }
     
    @@ -383,21 +368,21 @@ APU_DECLARE(apr_status_t) apr_queue_pop_timeout(apr_queue_t *queue, void **data,
      * items available, return APR_EAGAIN.  Once retrieved,
      * the item is placed into the address specified by 'data'.
      */
    -APU_DECLARE(apr_status_t) apr_queue_trypop(apr_queue_t *queue, void **data)
    +fspr_status_t switch_apr_queue_trypop(switch_apr_queue_t *queue, void **data)
     {
    -    apr_status_t rv;
    +    fspr_status_t rv;
     
         if (queue->terminated) {
             return APR_EOF; /* no more elements ever again */
         }
     
    -    rv = apr_thread_mutex_lock(queue->one_big_mutex);
    +    rv = fspr_thread_mutex_lock(queue->one_big_mutex);
         if (rv != APR_SUCCESS) {
             return rv;
         }
     
         if (apr_queue_empty(queue)) {
    -        apr_thread_mutex_unlock(queue->one_big_mutex);
    +        fspr_thread_mutex_unlock(queue->one_big_mutex);
             return APR_EAGAIN;
         } 
     
    @@ -407,39 +392,39 @@ APU_DECLARE(apr_status_t) apr_queue_trypop(apr_queue_t *queue, void **data)
         queue->out = (queue->out + 1) % queue->bounds;
         if (queue->full_waiters) {
             Q_DBG("signal !full", queue);
    -        rv = apr_thread_cond_signal(queue->not_full);
    +        rv = fspr_thread_cond_signal(queue->not_full);
             if (rv != APR_SUCCESS) {
    -            apr_thread_mutex_unlock(queue->one_big_mutex);
    +            fspr_thread_mutex_unlock(queue->one_big_mutex);
                 return rv;
             }
         }
     
    -    rv = apr_thread_mutex_unlock(queue->one_big_mutex);
    +    rv = fspr_thread_mutex_unlock(queue->one_big_mutex);
         return rv;
     }
     
    -APU_DECLARE(apr_status_t) apr_queue_interrupt_all(apr_queue_t *queue)
    +fspr_status_t switch_apr_queue_interrupt_all(switch_apr_queue_t *queue)
     {
    -    apr_status_t rv;
    +    fspr_status_t rv;
         Q_DBG("intr all", queue);    
    -    if ((rv = apr_thread_mutex_lock(queue->one_big_mutex)) != APR_SUCCESS) {
    +    if ((rv = fspr_thread_mutex_lock(queue->one_big_mutex)) != APR_SUCCESS) {
             return rv;
         }
    -    apr_thread_cond_broadcast(queue->not_empty);
    -    apr_thread_cond_broadcast(queue->not_full);
    +    fspr_thread_cond_broadcast(queue->not_empty);
    +    fspr_thread_cond_broadcast(queue->not_full);
     
    -    if ((rv = apr_thread_mutex_unlock(queue->one_big_mutex)) != APR_SUCCESS) {
    +    if ((rv = fspr_thread_mutex_unlock(queue->one_big_mutex)) != APR_SUCCESS) {
             return rv;
         }
     
         return APR_SUCCESS;
     }
     
    -APU_DECLARE(apr_status_t) apr_queue_term(apr_queue_t *queue)
    +fspr_status_t switch_apr_queue_term(switch_apr_queue_t *queue)
     {
    -    apr_status_t rv;
    +    fspr_status_t rv;
     
    -    if ((rv = apr_thread_mutex_lock(queue->one_big_mutex)) != APR_SUCCESS) {
    +    if ((rv = fspr_thread_mutex_lock(queue->one_big_mutex)) != APR_SUCCESS) {
             return rv;
         }
     
    @@ -448,10 +433,9 @@ APU_DECLARE(apr_status_t) apr_queue_term(apr_queue_t *queue)
          * would-be popper checks it but right before they block
          */
         queue->terminated = 1;
    -    if ((rv = apr_thread_mutex_unlock(queue->one_big_mutex)) != APR_SUCCESS) {
    +    if ((rv = fspr_thread_mutex_unlock(queue->one_big_mutex)) != APR_SUCCESS) {
             return rv;
         }
    -    return apr_queue_interrupt_all(queue);
    +    return switch_apr_queue_interrupt_all(queue);
     }
     
    -#endif /* APR_HAS_THREADS */
    diff --git a/src/switch_buffer.c b/src/switch_buffer.c
    index 5ca53a4683b..bf31952da58 100644
    --- a/src/switch_buffer.c
    +++ b/src/switch_buffer.c
    @@ -344,7 +344,12 @@ SWITCH_DECLARE(switch_size_t) switch_buffer_write(switch_buffer_t *buffer, const
     		return 0;
     	}
     
    -	memcpy(buffer->head + buffer->used, data, datalen);
    +	if (data) {
    +		memcpy(buffer->head + buffer->used, data, datalen);
    +	} else {
    +		memset(buffer->head + buffer->used, 0, datalen);
    +	}
    +
     	buffer->used += datalen;
     	buffer->actually_used += datalen;
     	return buffer->used;
    diff --git a/src/switch_core.c b/src/switch_core.c
    index 50ce348c95c..0fafbfe5228 100644
    --- a/src/switch_core.c
    +++ b/src/switch_core.c
    @@ -41,6 +41,7 @@
     #include 
     #include 
     #include 
    +#include "private/switch_apr_pvt.h"
     #include "private/switch_core_pvt.h"
     #include 
     #include 
    @@ -1404,7 +1405,7 @@ SWITCH_DECLARE(switch_bool_t) switch_check_network_list_ip_port_token(const char
     	} else if (strchr(list_name, '/')) {
     		if (strchr(list_name, ',')) {
     			char *list_name_dup = strdup(list_name);
    -			char *argv[32];
    +			char *argv[100]; /* MAX ACL */
     			int argc;
     
     			switch_assert(list_name_dup);
    @@ -1907,7 +1908,7 @@ SWITCH_DECLARE(switch_status_t) switch_core_init(switch_core_flag_t flags, switc
     	}
     
     	/* INIT APR and Create the pool context */
    -	if (apr_initialize() != SWITCH_STATUS_SUCCESS) {
    +	if (fspr_initialize() != SWITCH_STATUS_SUCCESS) {
     		*err = "FATAL ERROR! Could not initialize APR\n";
     		return SWITCH_STATUS_MEMERR;
     	}
    @@ -2002,7 +2003,7 @@ SWITCH_DECLARE(switch_status_t) switch_core_init(switch_core_flag_t flags, switc
     	if (switch_xml_init(runtime.memory_pool, err) != SWITCH_STATUS_SUCCESS) {
     		/* allow missing configuration if MINIMAL */
     		if (!(flags & SCF_MINIMAL)) {
    -			apr_terminate();
    +			fspr_terminate();
     			return SWITCH_STATUS_MEMERR;
     		}
     	}
    @@ -2171,6 +2172,10 @@ static void switch_load_core_config(const char *file)
     					} else {
     						switch_log_printf(SWITCH_CHANNEL_LOG, SWITCH_LOG_ERROR, "max-db-handles must be between 5 and 5000\n");
     					}
    +				} else if (!strcasecmp(var, "odbc-skip-autocommit-flip")) {
    +					if (switch_true(val)) {
    +						switch_odbc_skip_autocommit_flip();
    +					}
     				} else if (!strcasecmp(var, "db-handle-timeout")) {
     					long tmp = atol(val);
     
    @@ -3155,8 +3160,8 @@ SWITCH_DECLARE(switch_status_t) switch_core_destroy(void)
     	switch_core_media_deinit();
     
     	if (runtime.memory_pool) {
    -		apr_pool_destroy(runtime.memory_pool);
    -		apr_terminate();
    +		fspr_pool_destroy(runtime.memory_pool);
    +		fspr_terminate();
     	}
     
     	sqlite3_shutdown();
    @@ -3424,7 +3429,7 @@ SWITCH_DECLARE(int) switch_stream_spawn(const char *cmd, switch_bool_t shell, sw
     	switch_log_printf(SWITCH_CHANNEL_LOG, SWITCH_LOG_WARNING, "posix_spawn is unsupported on current platform\n");
     	return 1;
     #else
    -	int status = 0, rval;
    +	int status = 0;
     	char buffer[1024];
     	pid_t pid;
     	char *pdata = NULL, *argv[64];
    @@ -3520,7 +3525,7 @@ SWITCH_DECLARE(int) switch_stream_spawn(const char *cmd, switch_bool_t shell, sw
     					.revents = 0
     			};
     
    -			while ((rval = poll(pfds, 2, /*timeout*/-1)) > 0) {
    +			while (poll(pfds, 2, /*timeout*/-1) > 0) {
     				if (pfds[0].revents & POLLIN) {
     					int bytes_read = read(cout_pipe[0], buffer, sizeof(buffer));
     					stream->raw_write_function(stream, (unsigned char *)buffer, bytes_read);
    diff --git a/src/switch_core_asr.c b/src/switch_core_asr.c
    index dd0df4302e2..6b91922a8aa 100644
    --- a/src/switch_core_asr.c
    +++ b/src/switch_core_asr.c
    @@ -233,6 +233,7 @@ SWITCH_DECLARE(switch_status_t) switch_core_asr_close(switch_asr_handle_t *ah, s
     	status = ah->asr_interface->asr_close(ah, flags);
     	switch_set_flag(ah, SWITCH_ASR_FLAG_CLOSED);
     
    +	switch_safe_free(ah->dbuf);
     	switch_resample_destroy(&ah->resampler);
     
     	UNPROTECT_INTERFACE(ah->asr_interface);
    @@ -260,7 +261,7 @@ SWITCH_DECLARE(switch_status_t) switch_core_asr_feed(switch_asr_handle_t *ah, vo
     
     		switch_resample_process(ah->resampler, data, len / 2);
     		if (ah->resampler->to_len * 2 > orig_len) {
    -			if (!ah->dbuf) {
    +			if (ah->dbuflen < ah->resampler->to_len * 2) {
     				void *mem;
     				ah->dbuflen = ah->resampler->to_len * 2;
     				mem = realloc(ah->dbuf, ah->dbuflen);
    diff --git a/src/switch_core_cert.c b/src/switch_core_cert.c
    index 565f548e514..c4fdd842105 100644
    --- a/src/switch_core_cert.c
    +++ b/src/switch_core_cert.c
    @@ -281,7 +281,9 @@ SWITCH_DECLARE(int) switch_core_gen_certs(const char *prefix)
     		}
     	}
     
    +#ifdef CRYPTO_MEM_CHECK_ON
     	CRYPTO_mem_ctrl(CRYPTO_MEM_CHECK_ON);
    +#endif
     
     	//bio_err=BIO_new_fp(stderr, BIO_NOCLOSE);
     
    diff --git a/src/switch_core_db.c b/src/switch_core_db.c
    index d3701ce91f4..afda66af62e 100644
    --- a/src/switch_core_db.c
    +++ b/src/switch_core_db.c
    @@ -181,9 +181,14 @@ SWITCH_DECLARE(int) switch_core_db_load_extension(switch_core_db_t *db, const ch
     	int ret = 0;
     	char *err = NULL;
     
    +#ifdef SQLITE_DBCONFIG_ENABLE_LOAD_EXTENSION
    +	sqlite3_db_config(db, SQLITE_DBCONFIG_ENABLE_LOAD_EXTENSION, 1, 0);
    +	ret = sqlite3_load_extension(db, extension, 0, &err);
    +#else
     	sqlite3_enable_load_extension(db, 1);
     	ret = sqlite3_load_extension(db, extension, 0, &err);
     	sqlite3_enable_load_extension(db, 0);
    +#endif
     
     	if (err) {
     		switch_log_printf(SWITCH_CHANNEL_LOG, SWITCH_LOG_ERROR, "LOAD EXTENSION ERR [%s]\n", err);
    diff --git a/src/switch_core_file.c b/src/switch_core_file.c
    index bc99a451ef7..84e6acb3c06 100644
    --- a/src/switch_core_file.c
    +++ b/src/switch_core_file.c
    @@ -949,10 +949,10 @@ SWITCH_DECLARE(switch_status_t) switch_core_file_pre_close(switch_file_handle_t
     
     	if (fh->pre_buffer) {
     		if (switch_test_flag(fh, SWITCH_FILE_FLAG_WRITE)) {
    -			switch_size_t rlen, blen;
    +			switch_size_t blen;
     			int asis = switch_test_flag(fh, SWITCH_FILE_NATIVE);
     
    -			while ((rlen = switch_buffer_inuse(fh->pre_buffer))) {
    +			while (switch_buffer_inuse(fh->pre_buffer)) {
     				if ((blen = switch_buffer_read(fh->pre_buffer, fh->pre_buffer_data, fh->pre_buffer_datalen))) {
     					if (!asis)
     						blen /= 2;
    diff --git a/src/switch_core_io.c b/src/switch_core_io.c
    index 13054b5b089..9931f0f3ef7 100644
    --- a/src/switch_core_io.c
    +++ b/src/switch_core_io.c
    @@ -422,7 +422,7 @@ SWITCH_DECLARE(switch_status_t) switch_core_session_read_frame(switch_core_sessi
     
     			if (is_cng) {
     				if (session->plc) {
    -					plc_fillin(session->plc, session->raw_read_frame.data, read_frame->codec->implementation->decoded_bytes_per_packet / 2);
    +					switch_plc_fillin(session->plc, session->raw_read_frame.data, read_frame->codec->implementation->decoded_bytes_per_packet / 2);
     					is_cng = 0;
     					flag &= ~SFF_CNG;
     				} else {
    @@ -470,7 +470,7 @@ SWITCH_DECLARE(switch_status_t) switch_core_session_read_frame(switch_core_sessi
     				if (!switch_test_flag(read_frame->codec, SWITCH_CODEC_FLAG_HAS_PLC) &&
     					(switch_channel_test_flag(session->channel, CF_JITTERBUFFER_PLC) ||
     					 switch_channel_test_flag(session->channel, CF_CNG_PLC)) && !session->plc) {
    -					session->plc = plc_init(NULL);
    +					session->plc = switch_plc_init(NULL);
     				}
     
     				if (!switch_test_flag(read_frame->codec, SWITCH_CODEC_FLAG_HAS_PLC) && session->plc && switch_test_flag(read_frame, SFF_PLC)) {
    @@ -519,10 +519,10 @@ SWITCH_DECLARE(switch_status_t) switch_core_session_read_frame(switch_core_sessi
     				if (status == SWITCH_STATUS_SUCCESS && session->read_impl.number_of_channels == 1) {
     					if (session->plc) {
     						if (switch_test_flag(read_frame, SFF_PLC)) {
    -							plc_fillin(session->plc, session->raw_read_frame.data, session->raw_read_frame.datalen / 2);
    +							switch_plc_fillin(session->plc, session->raw_read_frame.data, session->raw_read_frame.datalen / 2);
     							switch_clear_flag(read_frame, SFF_PLC);
     						} else {
    -							plc_rx(session->plc, session->raw_read_frame.data, session->raw_read_frame.datalen / 2);
    +							switch_plc_rx(session->plc, session->raw_read_frame.data, session->raw_read_frame.datalen / 2);
     						}
     					}
     				}
    diff --git a/src/switch_core_media.c b/src/switch_core_media.c
    index 087a1515707..d1397a833e8 100644
    --- a/src/switch_core_media.c
    +++ b/src/switch_core_media.c
    @@ -40,6 +40,8 @@
     #include 
     #include 
     
    +#include 
    +
     static switch_t38_options_t * switch_core_media_process_udptl(switch_core_session_t *session, sdp_session_t *sdp, sdp_media_t *m);
     static void switch_core_media_find_zrtp_hash(switch_core_session_t *session, sdp_session_t *sdp);
     static void switch_core_media_set_r_sdp_codec_string(switch_core_session_t *session, const char *codec_string, sdp_session_t *sdp, switch_sdp_type_t sdp_type);
    @@ -2351,7 +2353,7 @@ SWITCH_DECLARE(switch_core_media_params_t *) switch_core_media_get_mparams(switc
     	return smh->mparams;
     }
     
    -SWITCH_DECLARE(void) switch_core_media_prepare_codecs(switch_core_session_t *session, switch_bool_t force)
    +SWITCH_DECLARE(switch_status_t) switch_core_media_prepare_codecs(switch_core_session_t *session, switch_bool_t force)
     {
     	const char *abs, *codec_string = NULL;
     	const char *ocodec = NULL, *val;
    @@ -2361,11 +2363,11 @@ SWITCH_DECLARE(void) switch_core_media_prepare_codecs(switch_core_session_t *ses
     	switch_assert(session);
     
     	if (!(smh = session->media_handle)) {
    -		return;
    +		return SWITCH_STATUS_FALSE;
     	}
     
     	if (!force && (switch_channel_test_flag(session->channel, CF_PROXY_MODE) || switch_channel_test_flag(session->channel, CF_PROXY_MEDIA))) {
    -		return;
    +		return SWITCH_STATUS_FALSE;
     	}
     
     	if (force) {
    @@ -2373,7 +2375,7 @@ SWITCH_DECLARE(void) switch_core_media_prepare_codecs(switch_core_session_t *ses
     	}
     
     	if (smh->mparams->num_codecs) {
    -		return;
    +		return SWITCH_STATUS_FALSE;
     	}
     
     	ocodec = switch_channel_get_variable(session->channel, SWITCH_ORIGINATOR_CODEC_VARIABLE);
    @@ -2417,6 +2419,7 @@ SWITCH_DECLARE(void) switch_core_media_prepare_codecs(switch_core_session_t *ses
     	switch_channel_set_variable(session->channel, "rtp_use_codec_string", codec_string);
     	smh->codec_order_last = switch_separate_string(tmp_codec_string, ',', smh->codec_order, SWITCH_MAX_CODECS);
     	smh->mparams->num_codecs = switch_loadable_module_get_codecs_sorted(smh->codecs, smh->fmtp, SWITCH_MAX_CODECS, smh->codec_order, smh->codec_order_last);
    +	return SWITCH_STATUS_SUCCESS;
     }
     
     static void check_jb(switch_core_session_t *session, const char *input, int32_t jb_msec, int32_t maxlen, switch_bool_t silent)
    @@ -2879,8 +2882,18 @@ static void check_media_timeout_params(switch_core_session_t *session, switch_rt
     
     	if (switch_rtp_ready(engine->rtp_session) && engine->media_timeout) {
     		switch_rtp_set_media_timeout(engine->rtp_session, engine->media_timeout);
    -	}
    +		if (engine->type == SWITCH_MEDIA_TYPE_AUDIO) {
    +			/* the values are in milliseconds, not in seconds as the deprecated rtp_timeout_sec */
    +			engine->max_missed_packets = (engine->read_impl.samples_per_second * engine->media_timeout / 1000) / engine->read_impl.samples_per_packet;
    +
    +			switch_rtp_set_max_missed_packets(engine->rtp_session, engine->max_missed_packets);
    +			if (!engine->media_hold_timeout) {
    +				engine->media_hold_timeout = engine->media_timeout * 10;
    +			}
     
    +			engine->max_missed_hold_packets = (engine->read_impl.samples_per_second * engine->media_hold_timeout / 1000) / engine->read_impl.samples_per_packet;
    +		}
    +	}
     }
     
     SWITCH_DECLARE(switch_status_t) switch_core_media_read_frame(switch_core_session_t *session, switch_frame_t **frame,
    @@ -6654,7 +6667,6 @@ SWITCH_DECLARE(int) switch_core_media_toggle_hold(switch_core_session_t *session
     
     		if (switch_channel_test_flag(session->channel, CF_PROTO_HOLD)) {
     			int media_on_hold_a = switch_true(switch_channel_get_variable_dup(session->channel, "bypass_media_resume_on_hold", SWITCH_FALSE, -1));
    -			int media_on_hold_b = 0;
     			int bypass_after_hold_a = 0;
     			int bypass_after_hold_b = 0;
     
    @@ -6663,7 +6675,7 @@ SWITCH_DECLARE(int) switch_core_media_toggle_hold(switch_core_session_t *session
     			}
     
     			if (b_channel) {
    -				if ((media_on_hold_b = switch_true(switch_channel_get_variable_dup(b_channel, "bypass_media_resume_on_hold", SWITCH_FALSE, -1)))) {
    +				if (switch_true(switch_channel_get_variable_dup(b_channel, "bypass_media_resume_on_hold", SWITCH_FALSE, -1))) {
     					bypass_after_hold_b = switch_true(switch_channel_get_variable_dup(b_channel, "bypass_media_after_hold", SWITCH_FALSE, -1));
     				}
     			}
    @@ -8707,8 +8719,6 @@ SWITCH_DECLARE(switch_status_t) switch_core_media_activate_rtp(switch_core_sessi
     
     	switch_core_media_set_video_codec(session, 0);
     
    -
    -	memset(flags, 0, sizeof(flags));
     	flags[SWITCH_RTP_FLAG_DATAWAIT]++;
     
     	if (!switch_media_handle_test_media_flag(smh, SCMF_DISABLE_RTP_AUTOADJ) && !switch_channel_test_flag(session->channel, CF_AVPF) &&
    @@ -9905,7 +9915,8 @@ static void generate_m(switch_core_session_t *session, char *buf, size_t buflen,
     	for (i = 0; i < smh->mparams->num_codecs; i++) {
     		const switch_codec_implementation_t *imp = smh->codecs[i];
     		int this_ptime = (imp->microseconds_per_packet / 1000);
    -
    +		payload_map_t *pmap;
    +		
     		if (!strcasecmp(imp->iananame, "ilbc") || !strcasecmp(imp->iananame, "isac") ) {
     			this_ptime = 20;
     		}
    @@ -9930,7 +9941,18 @@ static void generate_m(switch_core_session_t *session, char *buf, size_t buflen,
     			continue;
     		}
     
    +
    +		switch_mutex_lock(smh->sdp_mutex);
    +		for (pmap = a_engine->cur_payload_map; pmap && pmap->allocated; pmap = pmap->next) {
    +			if (pmap->negotiated && !strcasecmp(imp->iananame, pmap->iananame)) {
    +				smh->ianacodes[i] = pmap->pt;
    +				break;
    +			}
    +		}
    +		switch_mutex_unlock(smh->sdp_mutex);
    +		
     		already_did[smh->ianacodes[i]] = 1;
    +
     		switch_snprintf(buf + strlen(buf), buflen - strlen(buf), " %d", smh->ianacodes[i]);
     	}
     
    @@ -11112,13 +11134,21 @@ SWITCH_DECLARE(void) switch_core_media_gen_local_sdp(switch_core_session_t *sess
     							continue;
     						}
     
    -						if (smh->ianacodes[i] < 128) {
    -							if (already_did[smh->ianacodes[i]]) {
    -								continue;
    -							}
    -							already_did[smh->ianacodes[i]] = 1;
    +						if (smh->ianacodes[i] >= 128 || already_did[smh->ianacodes[i]]) {
    +							continue;
     						}
     
    +						switch_mutex_lock(smh->sdp_mutex);
    +						for (pmap = v_engine->cur_payload_map; pmap && pmap->allocated; pmap = pmap->next) {
    +							if (pmap->negotiated && !strcasecmp(imp->iananame, pmap->iananame)) {
    +								smh->ianacodes[i] = pmap->pt;
    +								break;
    +							}
    +						}
    +						switch_mutex_unlock(smh->sdp_mutex);
    +		
    +						already_did[smh->ianacodes[i]] = 1;
    +						
     						switch_snprintf(buf + strlen(buf), SDPBUFLEN - strlen(buf), " %d", smh->ianacodes[i]);
     
     						if (!ptime) {
    @@ -12186,7 +12216,7 @@ SWITCH_DECLARE(void) switch_core_media_patch_sdp(switch_core_session_t *session)
     				char o_line[1024] = "";
     
     				if (oe >= pe) {
    -					bad = 5;
    +					bad = 4;
     					goto end;
     				}
     
    @@ -12242,7 +12272,7 @@ SWITCH_DECLARE(void) switch_core_media_patch_sdp(switch_core_session_t *session)
     			p += 8;
     
     			if (p >= pe) {
    -				bad = 4;
    +				bad = 6;
     				goto end;
     			}
     
    @@ -12250,7 +12280,7 @@ SWITCH_DECLARE(void) switch_core_media_patch_sdp(switch_core_session_t *session)
     			q += 8;
     
     			if (q >= qe) {
    -				bad = 5;
    +				bad = 7;
     				goto end;
     			}
     
    @@ -12259,13 +12289,13 @@ SWITCH_DECLARE(void) switch_core_media_patch_sdp(switch_core_session_t *session)
     			q += strlen(port_buf);
     
     			if (q >= qe) {
    -				bad = 6;
    +				bad = 8;
     				goto end;
     			}
     
     			while (p && *p && (*p >= '0' && *p <= '9')) {
     				if (p >= pe) {
    -					bad = 7;
    +					bad = 9;
     					goto end;
     				}
     				p++;
    @@ -12306,14 +12336,14 @@ SWITCH_DECLARE(void) switch_core_media_patch_sdp(switch_core_session_t *session)
     			p += 8;
     
     			if (p >= pe) {
    -				bad = 8;
    +				bad = 10;
     				goto end;
     			}
     
     			q += 8;
     
     			if (q >= qe) {
    -				bad = 9;
    +				bad = 11;
     				goto end;
     			}
     
    @@ -12321,14 +12351,14 @@ SWITCH_DECLARE(void) switch_core_media_patch_sdp(switch_core_session_t *session)
     			q += strlen(vport_buf);
     
     			if (q >= qe) {
    -				bad = 10;
    +				bad = 12;
     				goto end;
     			}
     
     			while (p && *p && (*p >= '0' && *p <= '9')) {
     
     				if (p >= pe) {
    -					bad = 11;
    +					bad = 13;
     					goto end;
     				}
     
    @@ -12336,7 +12366,7 @@ SWITCH_DECLARE(void) switch_core_media_patch_sdp(switch_core_session_t *session)
     			}
     
     			has_video++;
    -		} else if (!strncmp("m=text ", p, 8) && *(p + 8) != '0') {
    +		} else if (!strncmp("m=text ", p, 7) && *(p + 7) != '0') {
     			if (!has_text) {
     				switch_core_media_choose_port(session, SWITCH_MEDIA_TYPE_TEXT, 1);
     				clear_pmaps(t_engine);
    @@ -12365,18 +12395,18 @@ SWITCH_DECLARE(void) switch_core_media_patch_sdp(switch_core_session_t *session)
     				//TEXT switch_core_media_set_text_codec(session, SWITCH_FALSE);
     			}
     
    -			strncpy(q, p, 8);
    -			p += 8;
    +			strncpy(q, p, 7);
    +			p += 7;
     
     			if (p >= pe) {
    -				bad = 8;
    +				bad = 14;
     				goto end;
     			}
     
    -			q += 8;
    +			q += 7;
     
     			if (q >= qe) {
    -				bad = 9;
    +				bad = 15;
     				goto end;
     			}
     
    @@ -12384,14 +12414,14 @@ SWITCH_DECLARE(void) switch_core_media_patch_sdp(switch_core_session_t *session)
     			q += strlen(tport_buf);
     
     			if (q >= qe) {
    -				bad = 10;
    +				bad = 16;
     				goto end;
     			}
     
     			while (p && *p && (*p >= '0' && *p <= '9')) {
     
     				if (p >= pe) {
    -					bad = 11;
    +					bad = 17;
     					goto end;
     				}
     
    @@ -12405,12 +12435,12 @@ SWITCH_DECLARE(void) switch_core_media_patch_sdp(switch_core_session_t *session)
     		while (p && *p && *p != '\n') {
     
     			if (p >= pe) {
    -				bad = 12;
    +				bad = 18;
     				goto end;
     			}
     
     			if (q >= qe) {
    -				bad = 13;
    +				bad = 19;
     				goto end;
     			}
     
    @@ -12418,12 +12448,12 @@ SWITCH_DECLARE(void) switch_core_media_patch_sdp(switch_core_session_t *session)
     		}
     
     		if (p >= pe) {
    -			bad = 14;
    +			bad = 20;
     			goto end;
     		}
     
     		if (q >= qe) {
    -			bad = 15;
    +			bad = 21;
     			goto end;
     		}
     
    @@ -13591,16 +13621,12 @@ SWITCH_DECLARE(void) switch_core_media_set_sdp_codec_string(switch_core_session_
     SWITCH_DECLARE(void) switch_core_media_merge_sdp_codec_string(switch_core_session_t *session, const char *r_sdp,
     															  switch_sdp_type_t sdp_type, const char *codec_string)
     {
    -
    -	
    -
     	sdp_parser_t *parser;
     	sdp_session_t *sdp;
    -	switch_media_handle_t *smh;
     
     	switch_assert(session);
     
    -	if (!(smh = session->media_handle)) {
    +	if (!session->media_handle) {
     		return;
     	}
     
    @@ -13621,7 +13647,6 @@ SWITCH_DECLARE(void) switch_core_media_merge_sdp_codec_string(switch_core_sessio
     
     		sdp_parser_free(parser);
     	}
    -
     }
     
     
    diff --git a/src/switch_core_media_bug.c b/src/switch_core_media_bug.c
    index eca4c495d2b..7aabceb7b78 100644
    --- a/src/switch_core_media_bug.c
    +++ b/src/switch_core_media_bug.c
    @@ -466,7 +466,6 @@ SWITCH_DECLARE(switch_status_t) switch_core_media_bug_patch_spy_frame(switch_med
     {
     	switch_queue_t *spy_q = NULL;
     	int w = 0, h = 0;
    -	switch_status_t status;
     	void *pop;
     	int i;
     
    @@ -479,7 +478,7 @@ SWITCH_DECLARE(switch_status_t) switch_core_media_bug_patch_spy_frame(switch_med
     	spy_q = bug->spy_video_queue[rw];
     
     	while(switch_queue_size(spy_q) > 0) {
    -		if ((status = switch_queue_trypop(spy_q, &pop)) == SWITCH_STATUS_SUCCESS) {
    +		if (switch_queue_trypop(spy_q, &pop) == SWITCH_STATUS_SUCCESS) {
     			switch_img_free(&bug->spy_img[rw]);
     			if (!(bug->spy_img[rw] = (switch_image_t *) pop)) {
     				break;
    @@ -641,7 +640,6 @@ static void *SWITCH_THREAD_FUNC video_bug_thread(switch_thread_t *thread, void *
     	switch_core_timer_init(&timer, "soft", fps_data.ms, fps_data.samples, NULL);
     
     	while (bug->ready) {
    -		switch_status_t status;
     		int w = 0, h = 0, ok = 1, new_main = 0, new_other = 0, new_canvas = 0;
     		
     		switch_core_timer_next(&timer);
    @@ -657,7 +655,7 @@ static void *SWITCH_THREAD_FUNC video_bug_thread(switch_thread_t *thread, void *
     		w = vw / 2;
     		h = vh;
     
    -		if ((status = switch_queue_trypop(main_q, &pop)) == SWITCH_STATUS_SUCCESS) {
    +		if (switch_queue_trypop(main_q, &pop) == SWITCH_STATUS_SUCCESS) {
     			switch_img_free(&img);
     
     			if (!pop) {
    @@ -678,7 +676,7 @@ static void *SWITCH_THREAD_FUNC video_bug_thread(switch_thread_t *thread, void *
     		if (other_q) {
     			flush_video_queue(other_q, 1);
     
    -			if ((status = switch_queue_trypop(other_q, &other_pop)) == SWITCH_STATUS_SUCCESS) {
    +			if (switch_queue_trypop(other_q, &other_pop) == SWITCH_STATUS_SUCCESS) {
     				switch_img_free(&other_img);
     				other_img = (switch_image_t *) other_pop;
     
    diff --git a/src/switch_core_memory.c b/src/switch_core_memory.c
    index 3685956257b..7d3f4adbd7c 100644
    --- a/src/switch_core_memory.c
    +++ b/src/switch_core_memory.c
    @@ -33,6 +33,7 @@
      */
     
     #include 
    +#include "private/switch_apr_pvt.h"
     #include "private/switch_core_pvt.h"
     
     //#define DEBUG_ALLOC
    @@ -85,13 +86,13 @@ SWITCH_DECLARE(void *) switch_core_perform_session_alloc(switch_core_session_t *
     #ifdef DEBUG_ALLOC
     	if (memory > DEBUG_ALLOC_CUTOFF)
     		switch_log_printf(SWITCH_CHANNEL_ID_LOG, file, func, line, NULL, SWITCH_LOG_CONSOLE, "%p %p Session Allocate %s %d\n",
    -						  (void *) session->pool, (void *) session, apr_pool_tag(session->pool, NULL), (int) memory);
    +						  (void *) session->pool, (void *) session, fspr_pool_tag(session->pool, NULL), (int) memory);
     #endif
     
     #if APR_POOL_DEBUG
    -	ptr = apr_palloc_debug(session->pool, memory, func);
    +	ptr = fspr_palloc_debug(session->pool, memory, func);
     #else
    -	ptr = apr_palloc(session->pool, memory);
    +	ptr = fspr_palloc(session->pool, memory);
     #endif
     	switch_assert(ptr != NULL);
     
    @@ -122,10 +123,10 @@ SWITCH_DECLARE(void *) switch_core_perform_permanent_alloc(switch_size_t memory,
     
     #ifdef DEBUG_ALLOC
     	switch_log_printf(SWITCH_CHANNEL_ID_LOG, file, func, line, NULL, SWITCH_LOG_CONSOLE, "%p Perm Allocate %s %d\n",
    -					  (void *)memory_manager.memory_pool, apr_pool_tag(memory_manager.memory_pool, NULL), (int) memory);
    +					  (void *)memory_manager.memory_pool, fspr_pool_tag(memory_manager.memory_pool, NULL), (int) memory);
     #endif
     
    -	ptr = apr_palloc(memory_manager.memory_pool, memory);
    +	ptr = fspr_palloc(memory_manager.memory_pool, memory);
     
     	switch_assert(ptr != NULL);
     	memset(ptr, 0, memory);
    @@ -159,12 +160,12 @@ SWITCH_DECLARE(char *) switch_core_perform_permanent_strdup(const char *todup, c
     #endif
     
     	len = strlen(todup) + 1;
    -	duped = apr_pstrmemdup(memory_manager.memory_pool, todup, len);
    +	duped = fspr_pstrmemdup(memory_manager.memory_pool, todup, len);
     	switch_assert(duped != NULL);
     
     #ifdef DEBUG_ALLOC
     	switch_log_printf(SWITCH_CHANNEL_ID_LOG, file, func, line, NULL, SWITCH_LOG_CONSOLE, "%p Perm Allocate %s %d\n",
    -					  (void *) memory_manager.memory_pool, apr_pool_tag(memory_manager.memory_pool, NULL), (int) len);
    +					  (void *) memory_manager.memory_pool, fspr_pool_tag(memory_manager.memory_pool, NULL), (int) len);
     #endif
     
     #ifdef LOCK_MORE
    @@ -205,7 +206,7 @@ SWITCH_DECLARE(char *) switch_core_vsprintf(switch_memory_pool_t *pool, const ch
     #endif
     #endif
     
    -	result = apr_pvsprintf(pool, fmt, ap);
    +	result = fspr_pvsprintf(pool, fmt, ap);
     	switch_assert(result != NULL);
     
     #ifdef LOCK_MORE
    @@ -257,10 +258,10 @@ SWITCH_DECLARE(char *) switch_core_perform_session_strdup(switch_core_session_t
     	len = strlen(todup);
     	if (len > DEBUG_ALLOC_CUTOFF)
     		switch_log_printf(SWITCH_CHANNEL_ID_LOG, file, func, line, NULL, SWITCH_LOG_CONSOLE, "%p %p Sess Strdup Allocate %s %ld\n",
    -						  (void *) session->pool, (void *)session, apr_pool_tag(session->pool, NULL), strlen(todup));
    +						  (void *) session->pool, (void *)session, fspr_pool_tag(session->pool, NULL), strlen(todup));
     #endif
     
    -	duped = apr_pstrdup(session->pool, todup);
    +	duped = fspr_pstrdup(session->pool, todup);
     	switch_assert(duped != NULL);
     
     #ifdef LOCK_MORE
    @@ -298,10 +299,10 @@ SWITCH_DECLARE(char *) switch_core_perform_strndup(switch_memory_pool_t *pool, c
     #ifdef DEBUG_ALLOC
     	if (len > DEBUG_ALLOC_CUTOFF)
     		switch_log_printf(SWITCH_CHANNEL_ID_LOG, file, func, line, NULL, SWITCH_LOG_CONSOLE, "%p Core Strdup Allocate %s %d\n",
    -						  (void *) pool, apr_pool_tag(pool, NULL), (int)len);
    +						  (void *) pool, fspr_pool_tag(pool, NULL), (int)len);
     #endif
     
    -	duped = apr_pstrmemdup(pool, todup, len);
    +	duped = fspr_pstrmemdup(pool, todup, len);
     	switch_assert(duped != NULL);
     
     #ifdef LOCK_MORE
    @@ -315,58 +316,58 @@ SWITCH_DECLARE(char *) switch_core_perform_strndup(switch_memory_pool_t *pool, c
     
     SWITCH_DECLARE(void) switch_core_memory_pool_set_data(switch_memory_pool_t *pool, const char *key, void *data)
     {
    -	apr_pool_userdata_set(data, key, NULL, pool);
    +	fspr_pool_userdata_set(data, key, NULL, pool);
     }
     
     SWITCH_DECLARE(void *) switch_core_memory_pool_get_data(switch_memory_pool_t *pool, const char *key)
     {
     	void *data = NULL;
     
    -	apr_pool_userdata_get(&data, key, pool);
    +	fspr_pool_userdata_get(&data, key, pool);
     
     	return data;
     }
     
     SWITCH_DECLARE(void) switch_core_memory_pool_tag(switch_memory_pool_t *pool, const char *tag)
     {
    -	apr_pool_tag(pool, tag);
    +	fspr_pool_tag(pool, tag);
     }
     
     SWITCH_DECLARE(void) switch_pool_clear(switch_memory_pool_t *p)
     {
     #ifdef PER_POOL_LOCK
    -	apr_thread_mutex_t *my_mutex;
    -	apr_pool_mutex_set(p, NULL);
    +	fspr_thread_mutex_t *my_mutex;
    +	fspr_pool_mutex_set(p, NULL);
     #endif
     
    -	apr_pool_clear(p);
    +	fspr_pool_clear(p);
     
     #ifdef PER_POOL_LOCK
     
    -	if ((apr_thread_mutex_create(&my_mutex, APR_THREAD_MUTEX_NESTED, p)) != APR_SUCCESS) {
    +	if ((fspr_thread_mutex_create(&my_mutex, APR_THREAD_MUTEX_NESTED, p)) != APR_SUCCESS) {
     		abort();
     	}
     
    -	apr_pool_mutex_set(p, my_mutex);
    +	fspr_pool_mutex_set(p, my_mutex);
     
     #endif
     
     }
     
     #if APR_POOL_DEBUG
    -static int switch_core_pool_stats_callback(apr_pool_t *pool, void *data) {
    +static int switch_core_pool_stats_callback(fspr_pool_t *pool, void *data) {
     	switch_stream_handle_t *stream = (switch_stream_handle_t *)data;
    -	size_t size = (size_t)apr_pool_num_bytes(pool, 1);
    +	size_t size = (size_t)fspr_pool_num_bytes(pool, 1);
     	unsigned int alloc = 0, total_alloc = 0, clear = 0;
     	char *line = NULL;
     
    -	apr_pool_userdata_get((void**)&line, "line", pool);
    -	apr_pool_get_stats(pool, &alloc, &total_alloc, &clear);
    +	fspr_pool_userdata_get((void**)&line, "line", pool);
    +	fspr_pool_get_stats(pool, &alloc, &total_alloc, &clear);
     
     	if (stream) {
    -		stream->write_function(stream, "Pool '%s' size: %" SWITCH_SIZE_T_FMT ", alloc:%d, total_alloc:%d, clear:%d\n", (line ? line : apr_pool_tag(pool, NULL)), size, alloc, total_alloc, clear);
    +		stream->write_function(stream, "Pool '%s' size: %" SWITCH_SIZE_T_FMT ", alloc:%d, total_alloc:%d, clear:%d\n", (line ? line : fspr_pool_tag(pool, NULL)), size, alloc, total_alloc, clear);
     	} else {
    -		printf("Pool '%s' size: %" SWITCH_SIZE_T_FMT ", alloc:%d, total_alloc:%d, clear:%d\n", (line ? line : apr_pool_tag(pool, NULL)), size, alloc, total_alloc, clear);
    +		printf("Pool '%s' size: %" SWITCH_SIZE_T_FMT ", alloc:%d, total_alloc:%d, clear:%d\n", (line ? line : fspr_pool_tag(pool, NULL)), size, alloc, total_alloc, clear);
     	}
     	return 0;
     }
    @@ -376,7 +377,7 @@ SWITCH_DECLARE(void) switch_core_pool_stats(switch_stream_handle_t *stream)
     {
     #if APR_POOL_DEBUG
     	if (runtime.memory_pool) {
    -		apr_pool_walk_tree_debug(runtime.memory_pool, switch_core_pool_stats_callback, (void *)stream);
    +		fspr_pool_walk_tree_debug(runtime.memory_pool, switch_core_pool_stats_callback, (void *)stream);
     	}
     #else
     	if (stream) {
    @@ -391,13 +392,13 @@ SWITCH_DECLARE(switch_status_t) switch_core_perform_new_memory_pool(switch_memor
     {
     	char *tmp;
     #ifdef INSTANTLY_DESTROY_POOLS
    -	apr_pool_create(pool, NULL);
    +	fspr_pool_create(pool, NULL);
     	switch_assert(*pool != NULL);
     #else
     
     #ifdef PER_POOL_LOCK
    -	apr_allocator_t *my_allocator = NULL;
    -	apr_thread_mutex_t *my_mutex;
    +	fspr_allocator_t *my_allocator = NULL;
    +	fspr_thread_mutex_t *my_mutex;
     #else
     	void *pop = NULL;
     #endif
    @@ -414,43 +415,43 @@ SWITCH_DECLARE(switch_status_t) switch_core_perform_new_memory_pool(switch_memor
     #endif
     
     #ifdef PER_POOL_LOCK
    -		if ((apr_allocator_create(&my_allocator)) != APR_SUCCESS) {
    +		if ((fspr_allocator_create(&my_allocator)) != APR_SUCCESS) {
     			abort();
     		}
     
     #if APR_POOL_DEBUG
    -		if ((apr_pool_create_ex_debug(pool, memory_manager.memory_pool, NULL, my_allocator, func)) != APR_SUCCESS) {
    +		if ((fspr_pool_create_ex_debug(pool, memory_manager.memory_pool, NULL, my_allocator, func)) != APR_SUCCESS) {
     #else
    -		if ((apr_pool_create_ex(pool, NULL, NULL, my_allocator)) != APR_SUCCESS) {
    +		if ((fspr_pool_create_ex(pool, NULL, NULL, my_allocator)) != APR_SUCCESS) {
     #endif
     			abort();
     		}
     
    -		if ((apr_thread_mutex_create(&my_mutex, APR_THREAD_MUTEX_NESTED, *pool)) != APR_SUCCESS) {
    +		if ((fspr_thread_mutex_create(&my_mutex, APR_THREAD_MUTEX_NESTED, *pool)) != APR_SUCCESS) {
     			abort();
     		}
     
    -		apr_allocator_mutex_set(my_allocator, my_mutex);
    -		apr_allocator_owner_set(my_allocator, *pool);
    +		fspr_allocator_mutex_set(my_allocator, my_mutex);
    +		fspr_allocator_owner_set(my_allocator, *pool);
     
    -		apr_pool_mutex_set(*pool, my_mutex);
    +		fspr_pool_mutex_set(*pool, my_mutex);
     
     #else
    -		apr_pool_create(pool, NULL);
    +		fspr_pool_create(pool, NULL);
     		switch_assert(*pool != NULL);
     	}
     #endif
     #endif
     
     	tmp = switch_core_sprintf(*pool, "%s:%d", file, line);
    -	apr_pool_tag(*pool, tmp);
    +	fspr_pool_tag(*pool, tmp);
     
     #if APR_POOL_DEBUG
    -	apr_pool_userdata_set(tmp, "line", NULL, *pool);
    +	fspr_pool_userdata_set(tmp, "line", NULL, *pool);
     #endif
     
     #ifdef DEBUG_ALLOC2
    -	switch_log_printf(SWITCH_CHANNEL_ID_LOG, file, func, line, NULL, SWITCH_LOG_CONSOLE, "%p New Pool %s\n", (void *) *pool, apr_pool_tag(*pool, NULL));
    +	switch_log_printf(SWITCH_CHANNEL_ID_LOG, file, func, line, NULL, SWITCH_LOG_CONSOLE, "%p New Pool %s\n", (void *) *pool, fspr_pool_tag(*pool, NULL));
     #endif
     
     
    @@ -475,20 +476,20 @@ SWITCH_DECLARE(switch_status_t) switch_core_perform_destroy_memory_pool(switch_m
     		tmp_pool = *pool;
     		*pool = NULL;
     
    -		tag = apr_pool_tag(tmp_pool, NULL);
    +		tag = fspr_pool_tag(tmp_pool, NULL);
     		tmp = switch_core_sprintf(tmp_pool, "%s,%s:%d", (tag ? tag : ""), file, line);
    -		apr_pool_tag(tmp_pool, tmp);
    +		fspr_pool_tag(tmp_pool, tmp);
     	}
     
     #ifdef DEBUG_ALLOC2
    -	switch_log_printf(SWITCH_CHANNEL_ID_LOG, file, func, line, NULL, SWITCH_LOG_CONSOLE, "%p Free Pool %s\n", (void *) tmp_pool, apr_pool_tag(tmp_pool, NULL));
    +	switch_log_printf(SWITCH_CHANNEL_ID_LOG, file, func, line, NULL, SWITCH_LOG_CONSOLE, "%p Free Pool %s\n", (void *) tmp_pool, fspr_pool_tag(tmp_pool, NULL));
     #endif
     
     #ifdef INSTANTLY_DESTROY_POOLS
     #ifdef USE_MEM_LOCK
     	switch_mutex_lock(memory_manager.mem_lock);
     #endif
    -	apr_pool_destroy(tmp_pool);
    +	fspr_pool_destroy(tmp_pool);
     #ifdef USE_MEM_LOCK
     	switch_mutex_unlock(memory_manager.mem_lock);
     #endif
    @@ -498,9 +499,9 @@ SWITCH_DECLARE(switch_status_t) switch_core_perform_destroy_memory_pool(switch_m
     		switch_mutex_lock(memory_manager.mem_lock);
     #endif
     #if APR_POOL_DEBUG
    -		apr_pool_destroy_debug(tmp_pool, func);
    +		fspr_pool_destroy_debug(tmp_pool, func);
     #else
    -		apr_pool_destroy(tmp_pool);
    +		fspr_pool_destroy(tmp_pool);
     #endif
     #ifdef USE_MEM_LOCK
     		switch_mutex_unlock(memory_manager.mem_lock);
    @@ -526,14 +527,14 @@ SWITCH_DECLARE(void *) switch_core_perform_alloc(switch_memory_pool_t *pool, swi
     #ifdef DEBUG_ALLOC
     	if (memory > DEBUG_ALLOC_CUTOFF)
     		switch_log_printf(SWITCH_CHANNEL_ID_LOG, file, func, line, NULL, SWITCH_LOG_CONSOLE, "%p Core Allocate %s %d\n",
    -						  (void *) pool, apr_pool_tag(pool, NULL), (int) memory);
    +						  (void *) pool, fspr_pool_tag(pool, NULL), (int) memory);
     	/*switch_assert(memory < 20000); */
     #endif
     
     #if APR_POOL_DEBUG
    -	ptr = apr_palloc_debug(pool, memory, func);
    +	ptr = fspr_palloc_debug(pool, memory, func);
     #else
    -	ptr = apr_palloc(pool, memory);
    +	ptr = fspr_palloc(pool, memory);
     #endif
     	switch_assert(ptr != NULL);
     	memset(ptr, 0, memory);
    @@ -563,7 +564,7 @@ SWITCH_DECLARE(void) switch_core_memory_reclaim(void)
     #ifdef USE_MEM_LOCK
     		switch_mutex_lock(memory_manager.mem_lock);
     #endif
    -		apr_pool_destroy(pool);
    +		fspr_pool_destroy(pool);
     #ifdef USE_MEM_LOCK
     		switch_mutex_unlock(memory_manager.mem_lock);
     #endif
    @@ -600,16 +601,16 @@ static void *SWITCH_THREAD_FUNC pool_thread(switch_thread_t *thread, void *obj)
     #ifdef DEBUG_ALLOC
     				switch_log_printf(SWITCH_CHANNEL_LOG, SWITCH_LOG_CONSOLE, "%p DESTROY POOL\n", (void *) pop);
     #endif
    -				apr_pool_destroy(pop);
    +				fspr_pool_destroy(pop);
     #ifdef USE_MEM_LOCK
     				switch_mutex_unlock(memory_manager.mem_lock);
     #endif
     #else
    -				apr_pool_mutex_set(pop, NULL);
    +				fspr_pool_mutex_set(pop, NULL);
     #ifdef DEBUG_ALLOC
     				switch_log_printf(SWITCH_CHANNEL_LOG, SWITCH_LOG_CONSOLE, "%p DESTROY POOL\n", (void *) pop);
     #endif
    -				apr_pool_clear(pop);
    +				fspr_pool_clear(pop);
     				if (switch_queue_trypush(memory_manager.pool_recycle_queue, pop) != SWITCH_STATUS_SUCCESS) {
     #ifdef USE_MEM_LOCK
     					switch_mutex_lock(memory_manager.mem_lock);
    @@ -617,7 +618,7 @@ static void *SWITCH_THREAD_FUNC pool_thread(switch_thread_t *thread, void *obj)
     #ifdef DEBUG_ALLOC
     				switch_log_printf(SWITCH_CHANNEL_LOG, SWITCH_LOG_CONSOLE, "%p DESTROY POOL\n", (void *) pop);
     #endif
    -					apr_pool_destroy(pop);
    +					fspr_pool_destroy(pop);
     #ifdef USE_MEM_LOCK
     					switch_mutex_unlock(memory_manager.mem_lock);
     #endif
    @@ -646,7 +647,7 @@ static void *SWITCH_THREAD_FUNC pool_thread(switch_thread_t *thread, void *obj)
     #ifdef USE_MEM_LOCK
     			switch_mutex_lock(memory_manager.mem_lock);
     #endif
    -			apr_pool_destroy(pop);
    +			fspr_pool_destroy(pop);
     			pop = NULL;
     #ifdef USE_MEM_LOCK
     			switch_mutex_unlock(memory_manager.mem_lock);
    @@ -677,7 +678,7 @@ void switch_core_memory_stop(void)
     
     
     	while (switch_queue_trypop(memory_manager.pool_queue, &pop) == SWITCH_STATUS_SUCCESS && pop) {
    -		apr_pool_destroy(pop);
    +		fspr_pool_destroy(pop);
     	}
     #endif
     }
    @@ -688,33 +689,33 @@ switch_memory_pool_t *switch_core_memory_init(void)
     	switch_threadattr_t *thd_attr;
     #endif
     #ifdef PER_POOL_LOCK
    -	apr_allocator_t *my_allocator = NULL;
    -	apr_thread_mutex_t *my_mutex;
    +	fspr_allocator_t *my_allocator = NULL;
    +	fspr_thread_mutex_t *my_mutex;
     #endif
     
     	memset(&memory_manager, 0, sizeof(memory_manager));
     
     #ifdef PER_POOL_LOCK
    -	if ((apr_allocator_create(&my_allocator)) != APR_SUCCESS) {
    +	if ((fspr_allocator_create(&my_allocator)) != APR_SUCCESS) {
     		abort();
     	}
     
    -	if ((apr_pool_create_ex(&memory_manager.memory_pool, NULL, NULL, my_allocator)) != APR_SUCCESS) {
    -		apr_allocator_destroy(my_allocator);
    +	if ((fspr_pool_create_ex(&memory_manager.memory_pool, NULL, NULL, my_allocator)) != APR_SUCCESS) {
    +		fspr_allocator_destroy(my_allocator);
     		my_allocator = NULL;
     		abort();
     	}
     
    -	if ((apr_thread_mutex_create(&my_mutex, APR_THREAD_MUTEX_NESTED, memory_manager.memory_pool)) != APR_SUCCESS) {
    +	if ((fspr_thread_mutex_create(&my_mutex, APR_THREAD_MUTEX_NESTED, memory_manager.memory_pool)) != APR_SUCCESS) {
     		abort();
     	}
     
    -	apr_allocator_mutex_set(my_allocator, my_mutex);
    -	apr_pool_mutex_set(memory_manager.memory_pool, my_mutex);
    -	apr_allocator_owner_set(my_allocator, memory_manager.memory_pool);
    -	apr_pool_tag(memory_manager.memory_pool, "core_pool");
    +	fspr_allocator_mutex_set(my_allocator, my_mutex);
    +	fspr_pool_mutex_set(memory_manager.memory_pool, my_mutex);
    +	fspr_allocator_owner_set(my_allocator, memory_manager.memory_pool);
    +	fspr_pool_tag(memory_manager.memory_pool, "core_pool");
     #else
    -	apr_pool_create(&memory_manager.memory_pool, NULL);
    +	fspr_pool_create(&memory_manager.memory_pool, NULL);
     	switch_assert(memory_manager.memory_pool != NULL);
     #endif
     
    diff --git a/src/switch_core_rwlock.c b/src/switch_core_rwlock.c
    index 61c9ca45b99..69e188ed79e 100644
    --- a/src/switch_core_rwlock.c
    +++ b/src/switch_core_rwlock.c
    @@ -85,9 +85,9 @@ SWITCH_DECLARE(switch_status_t) switch_core_session_read_lock(switch_core_sessio
     	switch_status_t status = SWITCH_STATUS_FALSE;
     
     	if (session->rwlock) {
    -		if (switch_test_flag(session, SSF_DESTROYED) || switch_channel_down_nosig(session->channel)) {
    -			status = SWITCH_STATUS_FALSE;
    -			if (switch_thread_rwlock_tryrdlock(session->rwlock) == SWITCH_STATUS_SUCCESS) {
    +		if ((status = switch_thread_rwlock_tryrdlock(session->rwlock)) == SWITCH_STATUS_SUCCESS) {
    +			if (switch_test_flag(session, SSF_DESTROYED) || switch_channel_down_nosig(session->channel)) {
    +				status = SWITCH_STATUS_FALSE;
     				if (switch_channel_test_flag(session->channel, CF_THREAD_SLEEPING)) {
     #ifdef SWITCH_DEBUG_RWLOCKS
     					switch_log_printf(SWITCH_CHANNEL_ID_LOG, file, func, line, switch_core_session_get_uuid(session), SWITCH_LOG_ERROR, "%s %s Ping thread\n",
    @@ -95,18 +95,18 @@ SWITCH_DECLARE(switch_status_t) switch_core_session_read_lock(switch_core_sessio
     #endif
     					switch_core_session_wake_session_thread(session);
     				}
    -				switch_thread_rwlock_unlock(session->rwlock);
    -			}
    +
     #ifdef SWITCH_DEBUG_RWLOCKS
    -			switch_log_printf(SWITCH_CHANNEL_ID_LOG, file, func, line, switch_core_session_get_uuid(session), SWITCH_LOG_ERROR, "%s %s Read lock FAIL\n",
    -							  switch_core_session_get_uuid(session), switch_channel_get_name(session->channel));
    +				switch_log_printf(SWITCH_CHANNEL_ID_LOG, file, func, line, switch_core_session_get_uuid(session), SWITCH_LOG_ERROR, "%s %s Read lock FAIL\n",
    +								  switch_core_session_get_uuid(session), switch_channel_get_name(session->channel));
     #endif
    -		} else {
    -			status = (switch_status_t) switch_thread_rwlock_tryrdlock(session->rwlock);
    +				switch_thread_rwlock_unlock(session->rwlock);
    +			} else {
     #ifdef SWITCH_DEBUG_RWLOCKS
    -			switch_log_printf(SWITCH_CHANNEL_ID_LOG, file, func, line, switch_core_session_get_uuid(session), SWITCH_LOG_ERROR, "%s %s Read lock ACQUIRED\n",
    -							  switch_core_session_get_uuid(session), switch_channel_get_name(session->channel));
    +				switch_log_printf(SWITCH_CHANNEL_ID_LOG, file, func, line, switch_core_session_get_uuid(session), SWITCH_LOG_ERROR, "%s %s Read lock ACQUIRED\n",
    +								  switch_core_session_get_uuid(session), switch_channel_get_name(session->channel));
     #endif
    +			}
     		}
     	}
     
    @@ -123,18 +123,20 @@ SWITCH_DECLARE(switch_status_t) switch_core_session_read_lock_hangup(switch_core
     	switch_status_t status = SWITCH_STATUS_FALSE;
     
     	if (session->rwlock) {
    -		if (switch_test_flag(session, SSF_DESTROYED) || switch_channel_get_state(session->channel) >= CS_DESTROY) {
    -			status = SWITCH_STATUS_FALSE;
    +		if ((status = switch_thread_rwlock_tryrdlock(session->rwlock)) == SWITCH_STATUS_SUCCESS) {
    +			if (switch_test_flag(session, SSF_DESTROYED) || switch_channel_get_state(session->channel) >= CS_DESTROY) {
    +				status = SWITCH_STATUS_FALSE;
     #ifdef SWITCH_DEBUG_RWLOCKS
    -			switch_log_printf(SWITCH_CHANNEL_ID_LOG, file, func, line, switch_core_session_get_uuid(session), SWITCH_LOG_ERROR, "%s %s Read lock FAIL\n",
    -							  switch_core_session_get_uuid(session), switch_channel_get_name(session->channel));
    +				switch_log_printf(SWITCH_CHANNEL_ID_LOG, file, func, line, switch_core_session_get_uuid(session), SWITCH_LOG_ERROR, "%s %s Read lock FAIL\n",
    +								  switch_core_session_get_uuid(session), switch_channel_get_name(session->channel));
     #endif
    -		} else {
    -			status = (switch_status_t) switch_thread_rwlock_tryrdlock(session->rwlock);
    +				switch_thread_rwlock_unlock(session->rwlock);
    +			} else {
     #ifdef SWITCH_DEBUG_RWLOCKS
    -			switch_log_printf(SWITCH_CHANNEL_ID_LOG, file, func, line, switch_core_session_get_uuid(session), SWITCH_LOG_ERROR, "%s %s Read lock ACQUIRED\n",
    -							  switch_core_session_get_uuid(session), switch_channel_get_name(session->channel));
    +				switch_log_printf(SWITCH_CHANNEL_ID_LOG, file, func, line, switch_core_session_get_uuid(session), SWITCH_LOG_ERROR, "%s %s Read lock ACQUIRED\n",
    +								  switch_core_session_get_uuid(session), switch_channel_get_name(session->channel));
     #endif
    +			}
     		}
     	}
     
    diff --git a/src/switch_core_session.c b/src/switch_core_session.c
    index 147900e784f..a590f7467c4 100644
    --- a/src/switch_core_session.c
    +++ b/src/switch_core_session.c
    @@ -526,7 +526,6 @@ SWITCH_DECLARE(switch_call_cause_t) switch_core_session_outgoing_channel(switch_
     																		 switch_originate_flag_t flags, switch_call_cause_t *cancel_cause)
     {
     	switch_io_event_hook_outgoing_channel_t *ptr;
    -	switch_status_t status = SWITCH_STATUS_FALSE;
     	switch_endpoint_interface_t *endpoint_interface;
     	switch_channel_t *channel = NULL;
     	switch_caller_profile_t *outgoing_profile = caller_profile;
    @@ -608,7 +607,7 @@ SWITCH_DECLARE(switch_call_cause_t) switch_core_session_outgoing_channel(switch_
     
     	if (session) {
     		for (ptr = session->event_hooks.outgoing_channel; ptr; ptr = ptr->next) {
    -			if ((status = ptr->outgoing_channel(session, var_event, caller_profile, *new_session, flags)) != SWITCH_STATUS_SUCCESS) {
    +			if (ptr->outgoing_channel(session, var_event, caller_profile, *new_session, flags) != SWITCH_STATUS_SUCCESS) {
     				break;
     			}
     		}
    @@ -1116,15 +1115,13 @@ SWITCH_DECLARE(switch_status_t) switch_core_session_dequeue_message(switch_core_
     
     SWITCH_DECLARE(switch_status_t) switch_core_session_flush_message(switch_core_session_t *session)
     {
    -	switch_status_t status = SWITCH_STATUS_FALSE;
     	void *pop;
     	switch_core_session_message_t *message;
     
     	switch_assert(session != NULL);
     
    -
     	if (session->message_queue) {
    -		while ((status = (switch_status_t) switch_queue_trypop(session->message_queue, &pop)) == SWITCH_STATUS_SUCCESS) {
    +		while (switch_queue_trypop(session->message_queue, &pop) == SWITCH_STATUS_SUCCESS) {
     			message = (switch_core_session_message_t *) pop;
     			switch_ivr_process_indications(session, message);
     			switch_core_session_free_message(&message);
    @@ -1353,19 +1350,18 @@ SWITCH_DECLARE(switch_status_t) switch_core_session_dequeue_private_event(switch
     
     SWITCH_DECLARE(uint32_t) switch_core_session_flush_private_events(switch_core_session_t *session)
     {
    -	switch_status_t status = SWITCH_STATUS_FALSE;
     	int x = 0;
     	void *pop;
     
     	if (session->private_event_queue) {
    -		while ((status = (switch_status_t) switch_queue_trypop(session->private_event_queue_pri, &pop)) == SWITCH_STATUS_SUCCESS) {
    +		while (switch_queue_trypop(session->private_event_queue_pri, &pop) == SWITCH_STATUS_SUCCESS) {
     			if (pop) {
     				switch_event_t *event = (switch_event_t *) pop;
     				switch_event_destroy(&event);
     			}
     			x++;
     		}
    -		while ((status = (switch_status_t) switch_queue_trypop(session->private_event_queue, &pop)) == SWITCH_STATUS_SUCCESS) {
    +		while (switch_queue_trypop(session->private_event_queue, &pop) == SWITCH_STATUS_SUCCESS) {
     			if (pop) {
     				switch_event_t *event = (switch_event_t *) pop;
     				switch_event_destroy(&event);
    @@ -1398,7 +1394,6 @@ SWITCH_DECLARE(switch_status_t) switch_core_session_try_reset(switch_core_sessio
     SWITCH_DECLARE(void) switch_core_session_reset(switch_core_session_t *session, switch_bool_t flush_dtmf, switch_bool_t reset_read_codec)
     {
     	switch_channel_t *channel = switch_core_session_get_channel(session);
    -	switch_size_t has;
     
     	if (reset_read_codec) {
     		switch_core_session_set_read_codec(session, NULL);
    @@ -1425,7 +1420,7 @@ SWITCH_DECLARE(void) switch_core_session_reset(switch_core_session_t *session, s
     	switch_mutex_unlock(session->codec_read_mutex);
     
     	if (flush_dtmf) {
    -		while ((has = switch_channel_has_dtmf(channel))) {
    +		while (switch_channel_has_dtmf(channel)) {
     			switch_channel_flush_dtmf(channel);
     		}
     	}
    @@ -1496,7 +1491,7 @@ SWITCH_DECLARE(void) switch_core_session_signal_state_change(switch_core_session
     
     	if (status == SWITCH_STATUS_SUCCESS) {
     		for (ptr = session->event_hooks.state_change; ptr; ptr = ptr->next) {
    -			if ((status = ptr->state_change(session)) != SWITCH_STATUS_SUCCESS) {
    +			if (ptr->state_change(session) != SWITCH_STATUS_SUCCESS) {
     				break;
     			}
     		}
    @@ -1585,7 +1580,7 @@ SWITCH_DECLARE(void) switch_core_session_perform_destroy(switch_core_session_t *
     	switch_mutex_unlock(runtime.session_hash_mutex);
     
     	if ((*session)->plc) {
    -		plc_free((*session)->plc);
    +		switch_plc_free((*session)->plc);
     		(*session)->plc = NULL;
     	}
     
    @@ -1608,9 +1603,8 @@ SWITCH_DECLARE(void) switch_core_session_perform_destroy(switch_core_session_t *
     	}
     
     	if ((*session)->event_queue) {
    -		switch_status_t status;
     		void *pop;
    -		while ((status = (switch_status_t) switch_queue_trypop((*session)->event_queue, &pop)) == SWITCH_STATUS_SUCCESS) {
    +		while (switch_queue_trypop((*session)->event_queue, &pop) == SWITCH_STATUS_SUCCESS) {
     			if (pop) {
     				switch_event_t *event = (switch_event_t *) pop;
     				switch_event_destroy(&event);
    diff --git a/src/switch_core_sqldb.c b/src/switch_core_sqldb.c
    index 0f6ecd58417..702ee6a79c3 100644
    --- a/src/switch_core_sqldb.c
    +++ b/src/switch_core_sqldb.c
    @@ -744,7 +744,6 @@ static switch_status_t switch_cache_db_execute_sql_chunked(switch_cache_db_handl
     {
     	switch_status_t status = SWITCH_STATUS_FALSE;
     	char *p, *s, *e;
    -	switch_size_t chunk_count;
     	switch_size_t len;
     
     	switch_assert(chunk_size);
    @@ -758,7 +757,7 @@ static switch_status_t switch_cache_db_execute_sql_chunked(switch_cache_db_handl
     		return switch_cache_db_execute_sql_real(dbh, sql, err);
     	}
     
    -	if (!(chunk_count = strlen(sql) / chunk_size)) {
    +	if (!(strlen(sql) / chunk_size)) {
     		return SWITCH_STATUS_FALSE;
     	}
     
    @@ -878,14 +877,13 @@ SWITCH_DECLARE(char *) switch_cache_db_execute_sql2str(switch_cache_db_handle_t
     				goto end;
     			} else {
     				int running = 1;
    -				int colcount;
     
     				while (running < 5000) {
     					int result = switch_core_db_step(stmt);
     					const unsigned char *txt;
     
     					if (result == SWITCH_CORE_DB_ROW) {
    -						if ((colcount = switch_core_db_column_count(stmt)) > 0) {
    +						if (switch_core_db_column_count(stmt) > 0) {
     							if ((txt = switch_core_db_column_text(stmt, 0))) {
     								switch_copy_string(str, (char *) txt, len);
     								status = SWITCH_STATUS_SUCCESS;
    @@ -2244,7 +2242,7 @@ static void *SWITCH_THREAD_FUNC switch_user_sql_thread(switch_thread_t *thread,
     	qm->thread_running = 1;
     
     	while (qm->thread_running == 1) {
    -		uint32_t i, lc;
    +		uint32_t i;
     		uint32_t written = 0, iterations = 0;
     
     		if (qm->paused) {
    @@ -2286,7 +2284,7 @@ static void *SWITCH_THREAD_FUNC switch_user_sql_thread(switch_thread_t *thread,
     
     	check:
     
    -		if ((lc = qm_ttl(qm)) == 0) {
    +		if (qm_ttl(qm) == 0) {
     			switch_mutex_lock(qm->cond2_mutex);
     			if (qm->skip_wait > 0) {
     				qm->skip_wait--;
    @@ -2299,7 +2297,7 @@ static void *SWITCH_THREAD_FUNC switch_user_sql_thread(switch_thread_t *thread,
     
     		i = 40;
     
    -		while (--i > 0 && (lc = qm_ttl(qm)) < 500) {
    +		while (--i > 0 && qm_ttl(qm) < 500) {
     			switch_yield(5000);
     		}
     
    diff --git a/src/switch_core_state_machine.c b/src/switch_core_state_machine.c
    index ce47a6cd68b..b2bc14a1df6 100644
    --- a/src/switch_core_state_machine.c
    +++ b/src/switch_core_state_machine.c
    @@ -589,7 +589,7 @@ SWITCH_DECLARE(void) switch_core_session_run(switch_core_session_t *session)
     
     			if (rstatus == SWITCH_STATUS_SUCCESS) {
     				for (ptr = session->event_hooks.state_run; ptr; ptr = ptr->next) {
    -					if ((rstatus = ptr->state_run(session)) != SWITCH_STATUS_SUCCESS) {
    +					if (ptr->state_run(session) != SWITCH_STATUS_SUCCESS) {
     						break;
     					}
     				}
    diff --git a/src/switch_core_video.c b/src/switch_core_video.c
    index 7dbd685d6ee..0d377f9c3e4 100644
    --- a/src/switch_core_video.c
    +++ b/src/switch_core_video.c
    @@ -3116,6 +3116,7 @@ SWITCH_DECLARE(switch_status_t) switch_img_data_url_png(switch_image_t *img, cha
     
     SWITCH_DECLARE(switch_image_t *) switch_img_read_from_file(const char* file_name, switch_img_fmt_t img_fmt)
     {
    +#ifdef SWITCH_HAVE_YUV
     	int width = 0, height = 0, channels = 0;
     	int comp = STBI_rgb;
     	unsigned char *data = NULL;
    @@ -3155,12 +3156,16 @@ SWITCH_DECLARE(switch_image_t *) switch_img_read_from_file(const char* file_name
     	} else if (data) {
     		stbi_image_free(data);
     	}
    +#endif
     
     	return NULL;
     }
     
     SWITCH_DECLARE(switch_status_t) switch_img_write_to_file(switch_image_t *img, const char* file_name, int quality)
     {
    +#ifndef SWITCH_HAVE_YUV
    +	return SWITCH_STATUS_FALSE;
    +#else
     	int comp = STBI_rgb;
     	unsigned char *data = NULL;
     	const char *ext = strrchr(file_name, '.');
    @@ -3217,6 +3222,7 @@ SWITCH_DECLARE(switch_status_t) switch_img_write_to_file(switch_image_t *img, co
     	free(data);
     
     	return ret ? SWITCH_STATUS_SUCCESS : SWITCH_STATUS_FALSE;
    +#endif
     }
     
     typedef struct data_url_context_s {
    @@ -3224,14 +3230,19 @@ typedef struct data_url_context_s {
     	char **urlP;
     } data_url_context_t;
     
    +#ifdef SWITCH_HAVE_YUV
     static void data_url_write_func(void *context, void *data, int size)
     {
     	switch_buffer_t *buffer = (switch_buffer_t *)context;
     	switch_buffer_write(buffer, data, size);
     }
    +#endif
     
     SWITCH_DECLARE(switch_status_t) switch_img_data_url(switch_image_t *img, char **urlP, const char *type, int quality)
     {
    +#ifndef SWITCH_HAVE_YUV
    +	return SWITCH_STATUS_FALSE;
    +#else
     	int comp = STBI_rgb;
     	unsigned char *data = NULL;
     	int stride_in_bytes = 0;
    @@ -3300,6 +3311,7 @@ SWITCH_DECLARE(switch_status_t) switch_img_data_url(switch_image_t *img, char **
     	switch_buffer_destroy(&buffer);
     
     	return ret ? SWITCH_STATUS_SUCCESS : SWITCH_STATUS_FALSE;
    +#endif /* SWITCH_HAVE_YUV */
     }
     
     
    diff --git a/src/switch_event.c b/src/switch_event.c
    index 3e5b05ae32b..4cc60fa60c0 100644
    --- a/src/switch_event.c
    +++ b/src/switch_event.c
    @@ -1062,11 +1062,14 @@ static switch_status_t switch_event_base_add_header(switch_event_t *event, switc
     							exists = 1;
     						}
     
    +						FREE(data);
     						goto redraw;
     					}
     				} else if (tmp_header) {
     					free_header(&tmp_header);
     				}
    +
    +				FREE(data);
     				goto end;
     			} else {
     				if ((stack & SWITCH_STACK_PUSH) || (stack & SWITCH_STACK_UNSHIFT)) {
    @@ -1720,10 +1723,8 @@ SWITCH_DECLARE(switch_status_t) switch_event_create_brackets(char *data, char a,
     			int x = 0;
     			for (x = 0; x < var_count; x++) {
     				char *inner_var_array[2] = { 0 };
    -				int inner_var_count;
     
    -				if ((inner_var_count = switch_separate_string(var_array[x], '=',
    -															  inner_var_array, (sizeof(inner_var_array) / sizeof(inner_var_array[0])))) == 2) {
    +				if (switch_separate_string(var_array[x], '=', inner_var_array, (sizeof(inner_var_array) / sizeof(inner_var_array[0]))) == 2) {
     					switch_log_printf(SWITCH_CHANNEL_LOG, SWITCH_LOG_DEBUG1, "Parsing variable [%s]=[%s]\n", inner_var_array[0], inner_var_array[1]);
     					switch_event_add_header_string(e, SWITCH_STACK_BOTTOM, inner_var_array[0], inner_var_array[1]);
     				}
    diff --git a/src/switch_ivr.c b/src/switch_ivr.c
    index ddd3a8e5297..77d957fb7c4 100644
    --- a/src/switch_ivr.c
    +++ b/src/switch_ivr.c
    @@ -2135,10 +2135,9 @@ SWITCH_DECLARE(void) switch_ivr_bg_media(const char *uuid, switch_media_flag_t f
     SWITCH_DECLARE(void) switch_ivr_check_hold(switch_core_session_t *session)
     {
     	switch_channel_t *channel = switch_core_session_get_channel(session);
    -	switch_media_flow_t flow;
     
     	if (switch_channel_test_flag(channel, CF_ANSWERED) && switch_channel_test_cap(channel, CC_MUTE_VIA_MEDIA_STREAM) &&
    -		(flow = switch_core_session_media_flow(session, SWITCH_MEDIA_TYPE_AUDIO)) != SWITCH_MEDIA_FLOW_SENDRECV) {
    +		switch_core_session_media_flow(session, SWITCH_MEDIA_TYPE_AUDIO) != SWITCH_MEDIA_FLOW_SENDRECV) {
     		switch_core_session_message_t msg = { 0 };
     
     		msg.message_id = SWITCH_MESSAGE_INDICATE_MEDIA_RENEG;
    diff --git a/src/switch_ivr_async.c b/src/switch_ivr_async.c
    index 6d404fd5b42..6dfdcf7248a 100644
    --- a/src/switch_ivr_async.c
    +++ b/src/switch_ivr_async.c
    @@ -1020,7 +1020,7 @@ SWITCH_DECLARE(switch_status_t) switch_ivr_displace_session(switch_core_session_
     		return SWITCH_STATUS_FALSE;
     	}
     
    -	if ((status = switch_channel_pre_answer(channel)) != SWITCH_STATUS_SUCCESS) {
    +	if (switch_channel_pre_answer(channel) != SWITCH_STATUS_SUCCESS) {
     		return SWITCH_STATUS_FALSE;
     	}
     
    @@ -2944,7 +2944,7 @@ SWITCH_DECLARE(switch_status_t) switch_ivr_record_session_event(switch_core_sess
     		hangup_on_error = switch_true(p);
     	}
     
    -	if ((status = switch_channel_pre_answer(channel)) != SWITCH_STATUS_SUCCESS) {
    +	if (switch_channel_pre_answer(channel) != SWITCH_STATUS_SUCCESS) {
     		return SWITCH_STATUS_FALSE;
     	}
     
    @@ -3114,6 +3114,7 @@ SWITCH_DECLARE(switch_status_t) switch_ivr_record_session_event(switch_core_sess
     
     			if (switch_dir_make_recursive(path, SWITCH_DEFAULT_DIR_PERMS, switch_core_session_get_pool(session)) != SWITCH_STATUS_SUCCESS) {
     				switch_log_printf(SWITCH_CHANNEL_SESSION_LOG(session), SWITCH_LOG_ERROR, "Error creating %s\n", path);
    +				set_completion_cause(rh, "uri-failure");
     				switch_goto_status(SWITCH_STATUS_GENERR, err);
     			}
     
    @@ -3136,6 +3137,7 @@ SWITCH_DECLARE(switch_status_t) switch_ivr_record_session_event(switch_core_sess
     				switch_channel_hangup(channel, SWITCH_CAUSE_DESTINATION_OUT_OF_ORDER);
     				switch_core_session_reset(session, SWITCH_TRUE, SWITCH_TRUE);
     			}
    +			set_completion_cause(rh, "uri-failure");
     			switch_goto_status(SWITCH_STATUS_GENERR, err);
     		}
     
    @@ -3188,6 +3190,7 @@ SWITCH_DECLARE(switch_status_t) switch_ivr_record_session_event(switch_core_sess
     				switch_channel_hangup(channel, SWITCH_CAUSE_DESTINATION_OUT_OF_ORDER);
     				switch_core_session_reset(session, SWITCH_TRUE, SWITCH_TRUE);
     			}
    +			set_completion_cause(rh, "uri-failure");
     			switch_goto_status(SWITCH_STATUS_GENERR, err);
     		}
     
    @@ -3198,6 +3201,7 @@ SWITCH_DECLARE(switch_status_t) switch_ivr_record_session_event(switch_core_sess
     				switch_channel_hangup(channel, SWITCH_CAUSE_DESTINATION_OUT_OF_ORDER);
     				switch_core_session_reset(session, SWITCH_TRUE, SWITCH_TRUE);
     			}
    +			set_completion_cause(rh, "uri-failure");
     			switch_goto_status(SWITCH_STATUS_GENERR, err);
     		}
     
    @@ -3333,6 +3337,9 @@ SWITCH_DECLARE(switch_status_t) switch_ivr_record_session_event(switch_core_sess
     	return SWITCH_STATUS_SUCCESS;
     
     err:
    +	if (!zstr(rh->completion_cause)) {
    +		switch_channel_set_variable_printf(channel, "record_completion_cause", "%s", rh->completion_cause);
    +	}
     	record_helper_destroy(&rh, session);
     
     	return status;
    @@ -3796,7 +3803,6 @@ static switch_bool_t inband_dtmf_callback(switch_media_bug_t *bug, void *user_da
     	switch_inband_dtmf_t *pvt = (switch_inband_dtmf_t *) user_data;
     	switch_frame_t *frame = NULL;
     	switch_channel_t *channel = switch_core_session_get_channel(pvt->session);
    -	teletone_hit_type_t hit;
     
     	switch (type) {
     	case SWITCH_ABC_TYPE_INIT:
    @@ -3805,7 +3811,7 @@ static switch_bool_t inband_dtmf_callback(switch_media_bug_t *bug, void *user_da
     		break;
     	case SWITCH_ABC_TYPE_READ_REPLACE:
     		if ((frame = switch_core_media_bug_get_read_replace_frame(bug))) {
    -			if ((hit = teletone_dtmf_detect(&pvt->dtmf_detect, frame->data, frame->samples)) == TT_HIT_END) {
    +			if (teletone_dtmf_detect(&pvt->dtmf_detect, frame->data, frame->samples) == TT_HIT_END) {
     				switch_dtmf_t dtmf = {0};
     
     				teletone_dtmf_get(&pvt->dtmf_detect, &dtmf.digit, &dtmf.duration);
    @@ -5450,7 +5456,6 @@ SWITCH_DECLARE(switch_status_t) switch_ivr_detect_speech(switch_core_session_t *
     														 const char *grammar, const char *name, const char *dest, switch_asr_handle_t *ah)
     {
     	switch_channel_t *channel = switch_core_session_get_channel(session);
    -	switch_status_t status;
     	struct speech_thread_handle *sth = switch_channel_get_private(channel, SWITCH_SPEECH_KEY);
     	const char *p;
     	int resume = 0;
    @@ -5458,7 +5463,7 @@ SWITCH_DECLARE(switch_status_t) switch_ivr_detect_speech(switch_core_session_t *
     
     	if (!sth) {
     		/* No speech thread handle available yet, init speech detection first. */
    -		if ((status = switch_ivr_detect_speech_init(session, mod_name, dest, ah)) != SWITCH_STATUS_SUCCESS) {
    +		if (switch_ivr_detect_speech_init(session, mod_name, dest, ah) != SWITCH_STATUS_SUCCESS) {
     			return SWITCH_STATUS_NOT_INITALIZED;
     		}
     
    diff --git a/src/switch_ivr_bridge.c b/src/switch_ivr_bridge.c
    index 3e5e2145be5..f91fc2c69f3 100644
    --- a/src/switch_ivr_bridge.c
    +++ b/src/switch_ivr_bridge.c
    @@ -507,7 +507,6 @@ static void *audio_bridge_thread(switch_thread_t *thread, void *obj)
     
     
     	for (;;) {
    -		switch_channel_state_t b_state;
     		switch_status_t status;
     		switch_event_t *event;
     
    @@ -543,7 +542,7 @@ static void *audio_bridge_thread(switch_thread_t *thread, void *obj)
     			goto end_of_bridge_loop;
     		}
     
    -		if ((b_state = switch_channel_down_nosig(chan_b))) {
    +		if (switch_channel_down_nosig(chan_b)) {
     			goto end_of_bridge_loop;
     		}
     
    @@ -953,14 +952,13 @@ static void *audio_bridge_thread(switch_thread_t *thread, void *obj)
     
     static void transfer_after_bridge(switch_core_session_t *session, const char *where)
     {
    -	int argc;
     	char *argv[4] = { 0 };
     	char *mydata;
     
     	switch_channel_set_variable(switch_core_session_get_channel(session), SWITCH_TRANSFER_AFTER_BRIDGE_VARIABLE, NULL);
     
     	if (!zstr(where) && (mydata = switch_core_session_strdup(session, where))) {
    -		if ((argc = switch_separate_string(mydata, ':', argv, (sizeof(argv) / sizeof(argv[0])))) >= 1) {
    +		if (switch_separate_string(mydata, ':', argv, (sizeof(argv) / sizeof(argv[0]))) >= 1) {
     			switch_ivr_session_transfer(session, argv[0], argv[1], argv[2]);
     		} else {
     			switch_log_printf(SWITCH_CHANNEL_SESSION_LOG(session), SWITCH_LOG_ERROR, "No extension specified.\n");
    diff --git a/src/switch_ivr_originate.c b/src/switch_ivr_originate.c
    index 627f43ead69..c4f4bfa2b24 100644
    --- a/src/switch_ivr_originate.c
    +++ b/src/switch_ivr_originate.c
    @@ -2532,12 +2532,12 @@ SWITCH_DECLARE(switch_status_t) switch_ivr_originate(switch_core_session_t *sess
     		oglobals.ignore_ring_ready = 1;
     	}
     
    -	if ((var_val = switch_event_get_header(var_event, "monitor_early_media_ring"))) {
    +	if ((var_val = switch_event_get_header(var_event, "monitor_early_media_ring")) && switch_true(var_val)) {
     		oglobals.early_ok = 0;
     		oglobals.monitor_early_media_ring = 1;
     	}
     
    -	if ((var_val = switch_event_get_header(var_event, "monitor_early_media_fail"))) {
    +	if ((var_val = switch_event_get_header(var_event, "monitor_early_media_fail")) && switch_true(var_val)) {
     		oglobals.early_ok = 0;
     		oglobals.monitor_early_media_fail = 1;
     	}
    diff --git a/src/switch_ivr_play_say.c b/src/switch_ivr_play_say.c
    index 9f5574d39b3..25486eee7fe 100644
    --- a/src/switch_ivr_play_say.c
    +++ b/src/switch_ivr_play_say.c
    @@ -251,7 +251,17 @@ SWITCH_DECLARE(switch_status_t) switch_ivr_phrase_macro_event(switch_core_sessio
     								  module_name);
     
     				if (!strcasecmp(func, "play-file")) {
    -					status = switch_ivr_play_file(session, NULL, odata, args);
    +					char *volume_str = (char *) switch_xml_attr_soft(action, "volume");
    +					switch_file_handle_t pfh = { 0 };
    +					if (volume_str && switch_is_number(volume_str)) {
    +						int32_t volume = atoi(volume_str);
    +
    +						switch_normalize_volume_granular(volume)
    +						pfh.volgranular = volume;
    +
    +						switch_log_printf(SWITCH_CHANNEL_SESSION_LOG(session), SWITCH_LOG_DEBUG, "Setting playback volume to %d\n", pfh.volgranular);
    +					}
    +					status = switch_ivr_play_file(session, &pfh, odata, args);
     				} else if (!strcasecmp(func, "phrase")) {
     					char *name = (char *) switch_xml_attr_soft(action, "phrase");
     					status = switch_ivr_phrase_macro(session, name, odata, chan_lang, args);
    @@ -1365,7 +1375,7 @@ SWITCH_DECLARE(switch_status_t) switch_ivr_play_file(switch_core_session_t *sess
     
     		status = SWITCH_STATUS_SUCCESS;
     
    -		if ((alt = strchr(file, ':'))) {
    +		if (strchr(file, ':')) {
     			char *dup;
     
     			if (!strncasecmp(file, "phrase:", 7)) {
    @@ -1957,8 +1967,12 @@ SWITCH_DECLARE(switch_status_t) switch_ivr_play_file(switch_core_session_t *sess
     			}
     #endif
     #endif
    -			if (!switch_test_flag(fh, SWITCH_FILE_NATIVE) && fh->vol) {
    -				switch_change_sln_volume(write_frame.data, write_frame.datalen / 2, fh->vol);
    +			if (!switch_test_flag(fh, SWITCH_FILE_NATIVE)) {
    +				if (fh->volgranular) {
    +					switch_change_sln_volume_granular(write_frame.data, write_frame.datalen / 2, fh->volgranular);
    +				} else if (fh->vol) { /* deprecated 2022-Q1 */
    +					switch_change_sln_volume(write_frame.data, write_frame.datalen / 2, fh->vol);
    +				}
     			}
     
     			/* write silence while dmachine is in reading state */
    diff --git a/src/switch_jitterbuffer.c b/src/switch_jitterbuffer.c
    index 54e9fc1c5e1..d68b269024e 100644
    --- a/src/switch_jitterbuffer.c
    +++ b/src/switch_jitterbuffer.c
    @@ -640,7 +640,6 @@ static inline void add_node(switch_jb_t *jb, switch_rtp_packet_t *packet, switch
     
     	node->packet = *packet;
     	node->len = len;
    -	memcpy(node->packet.body, packet->body, len);
     
     	switch_core_inthash_insert(jb->node_hash, node->packet.header.seq, node);
     
    @@ -1006,10 +1005,10 @@ SWITCH_DECLARE(switch_status_t) switch_jb_peek_frame(switch_jb_t *jb, uint32_t t
     		frame->seq = ntohs(node->packet.header.seq);
     		frame->timestamp = ntohl(node->packet.header.ts);
     		frame->m = node->packet.header.m;
    -		frame->datalen = node->len - 12;
    +		frame->datalen = node->len - SWITCH_RTP_HEADER_LEN;
     
    -		if (frame->data && frame->buflen > node->len - 12) {
    -			memcpy(frame->data, node->packet.body, node->len - 12);
    +		if (frame->data && frame->buflen > node->len - SWITCH_RTP_HEADER_LEN) {
    +			memcpy(frame->data, node->packet.body, node->len - SWITCH_RTP_HEADER_LEN);
     		}
     		return SWITCH_STATUS_SUCCESS;
     	}
    @@ -1221,9 +1220,9 @@ SWITCH_DECLARE(switch_status_t) switch_jb_put_packet(switch_jb_t *jb, switch_rtp
     	uint32_t i;
     	uint16_t want = ntohs(jb->next_seq), got = ntohs(packet->header.seq);
     
    -	if (len >= sizeof(switch_rtp_packet_t)) {
    -		switch_log_printf(SWITCH_CHANNEL_LOG, SWITCH_LOG_WARNING, "trying to put %" SWITCH_SIZE_T_FMT " bytes exceeding buffer, truncate to %" SWITCH_SIZE_T_FMT "\n", len, sizeof(switch_rtp_packet_t));
    -		len = sizeof(switch_rtp_packet_t);
    +	if (len >= SWITCH_RTP_MAX_PACKET_LEN) {
    +		switch_log_printf(SWITCH_CHANNEL_LOG, SWITCH_LOG_WARNING, "trying to put %" SWITCH_SIZE_T_FMT " bytes exceeding buffer, truncate to %" SWITCH_SIZE_T_FMT "\n", len, SWITCH_RTP_MAX_PACKET_LEN);
    +		len = SWITCH_RTP_MAX_PACKET_LEN;
     	}
     
     	switch_mutex_lock(jb->mutex);
    @@ -1279,7 +1278,6 @@ SWITCH_DECLARE(switch_status_t) switch_jb_put_packet(switch_jb_t *jb, switch_rtp
     		}
     	}
     
    -
     	add_node(jb, packet, len);
     
     	if (switch_test_flag(jb, SJB_QUEUE_ONLY) && jb->max_packet_len && jb->max_frame_len * 2 > jb->max_packet_len &&
    @@ -1307,7 +1305,6 @@ SWITCH_DECLARE(switch_status_t) switch_jb_get_packet_by_seq(switch_jb_t *jb, uin
     		jb_debug(jb, 2, "Found buffered seq: %u\n", ntohs(seq));
     		*packet = node->packet;
     		*len = node->len;
    -		memcpy(packet->body, node->packet.body, node->len);
     		packet->header.version = 2;
     		status = SWITCH_STATUS_SUCCESS;
     	} else {
    @@ -1461,7 +1458,6 @@ SWITCH_DECLARE(switch_status_t) switch_jb_get_packet(switch_jb_t *jb, switch_rtp
     		*packet = node->packet;
     		*len = node->len;
     		jb->last_len = *len;
    -		memcpy(packet->body, node->packet.body, node->len);
     		packet->header.version = 2;
     		hide_node(node, SWITCH_TRUE);
     
    @@ -1505,7 +1501,6 @@ SWITCH_DECLARE(switch_status_t) switch_jb_get_packet(switch_jb_t *jb, switch_rtp
     	return status;
     }
     
    -
     /* For Emacs:
      * Local Variables:
      * mode:c
    diff --git a/src/switch_loadable_module.c b/src/switch_loadable_module.c
    index 5442cca03a0..cf9c8f368ec 100644
    --- a/src/switch_loadable_module.c
    +++ b/src/switch_loadable_module.c
    @@ -34,14 +34,14 @@
     #include 
     #include "private/switch_core_pvt.h"
     
    -/* for apr_pstrcat */
    -#include 
    +/* for fspr_pstrcat */
    +#include 
     
    -/* for apr_env_get and apr_env_set */
    -#include 
    +/* for fspr_env_get and fspr_env_set */
    +#include 
     
    -/* for apr file and directory handling */
    -#include 
    +/* for fspr file and directory handling */
    +#include 
     
     typedef struct switch_file_node_s {
     	const switch_file_interface_t *ptr;
    @@ -1633,7 +1633,7 @@ static switch_status_t switch_loadable_module_load_file(char *path, char *filena
     {
     	switch_loadable_module_t *module = NULL;
     	switch_dso_lib_t dso = NULL;
    -	apr_status_t status = SWITCH_STATUS_SUCCESS;
    +	fspr_status_t status = SWITCH_STATUS_SUCCESS;
     	switch_loadable_module_function_table_t *interface_struct_handle = NULL;
     	switch_loadable_module_function_table_t *mod_interface_functions = NULL;
     	char *struct_name = NULL;
    @@ -2061,14 +2061,14 @@ SWITCH_DECLARE(switch_status_t) switch_loadable_module_build_dynamic(char *filen
     static void switch_loadable_module_path_init()
     {
     	char *path = NULL, *working = NULL;
    -	apr_dir_t *perl_dir_handle = NULL;
    +	fspr_dir_t *perl_dir_handle = NULL;
     
    -	apr_env_get(&path, "path", loadable_modules.pool);
    -	apr_filepath_get(&working, APR_FILEPATH_NATIVE, loadable_modules.pool);
    +	fspr_env_get(&path, "path", loadable_modules.pool);
    +	fspr_filepath_get(&working, APR_FILEPATH_NATIVE, loadable_modules.pool);
     
    -	if (apr_dir_open(&perl_dir_handle, ".\\perl", loadable_modules.pool) == APR_SUCCESS) {
    -		apr_dir_close(perl_dir_handle);
    -		apr_env_set("path", apr_pstrcat(loadable_modules.pool, path, ";", working, "\\perl", NULL), loadable_modules.pool);
    +	if (fspr_dir_open(&perl_dir_handle, ".\\perl", loadable_modules.pool) == APR_SUCCESS) {
    +		fspr_dir_close(perl_dir_handle);
    +		fspr_env_set("path", fspr_pstrcat(loadable_modules.pool, path, ";", working, "\\perl", NULL), loadable_modules.pool);
     	}
     }
     #endif
    @@ -2076,9 +2076,9 @@ static void switch_loadable_module_path_init()
     SWITCH_DECLARE(switch_status_t) switch_loadable_module_init(switch_bool_t autoload)
     {
     
    -	apr_finfo_t finfo = { 0 };
    -	apr_dir_t *module_dir_handle = NULL;
    -	apr_int32_t finfo_flags = APR_FINFO_DIRENT | APR_FINFO_TYPE | APR_FINFO_NAME;
    +	fspr_finfo_t finfo = { 0 };
    +	fspr_dir_t *module_dir_handle = NULL;
    +	fspr_int32_t finfo_flags = APR_FINFO_DIRENT | APR_FINFO_TYPE | APR_FINFO_NAME;
     	char *precf = "pre_load_modules.conf";
     	char *cf = "modules.conf";
     	char *pcf = "post_load_modules.conf";
    @@ -2286,12 +2286,12 @@ SWITCH_DECLARE(switch_status_t) switch_loadable_module_init(switch_bool_t autolo
     	}
     
     	if (all) {
    -		if (apr_dir_open(&module_dir_handle, SWITCH_GLOBAL_dirs.mod_dir, loadable_modules.pool) != APR_SUCCESS) {
    +		if (fspr_dir_open(&module_dir_handle, SWITCH_GLOBAL_dirs.mod_dir, loadable_modules.pool) != APR_SUCCESS) {
     			switch_log_printf(SWITCH_CHANNEL_LOG, SWITCH_LOG_CONSOLE, "Can't open directory: %s\n", SWITCH_GLOBAL_dirs.mod_dir);
     			return SWITCH_STATUS_GENERR;
     		}
     
    -		while (apr_dir_read(&finfo, finfo_flags, module_dir_handle) == APR_SUCCESS) {
    +		while (fspr_dir_read(&finfo, finfo_flags, module_dir_handle) == APR_SUCCESS) {
     			const char *fname = finfo.fname;
     
     			if (finfo.filetype != APR_REG) {
    @@ -2312,7 +2312,7 @@ SWITCH_DECLARE(switch_status_t) switch_loadable_module_init(switch_bool_t autolo
     
     			switch_loadable_module_load_module(SWITCH_GLOBAL_dirs.mod_dir, fname, SWITCH_FALSE, &err);
     		}
    -		apr_dir_close(module_dir_handle);
    +		fspr_dir_close(module_dir_handle);
     	}
     
     	switch_loadable_module_runtime();
    @@ -3191,12 +3191,11 @@ SWITCH_DECLARE(switch_status_t) switch_say_file_handle_create(switch_say_file_ha
     SWITCH_DECLARE(void) switch_say_file(switch_say_file_handle_t *sh, const char *fmt, ...)
     {
     	char buf[256] = "";
    -	int ret;
     	va_list ap;
     
     	va_start(ap, fmt);
     
    -	if ((ret = switch_vsnprintf(buf, sizeof(buf), fmt, ap)) > 0) {
    +	if (switch_vsnprintf(buf, sizeof(buf), fmt, ap) > 0) {
     		if (!sh->cnt++) {
     			sh->stream.write_function(&sh->stream, "file_string://%s.%s", buf, sh->ext);
     		} else if (strstr(buf, "://")) {
    @@ -3204,7 +3203,6 @@ SWITCH_DECLARE(void) switch_say_file(switch_say_file_handle_t *sh, const char *f
     		} else {
     			sh->stream.write_function(&sh->stream, "!%s.%s", buf, sh->ext);
     		}
    -
     	}
     
     	va_end(ap);
    diff --git a/src/switch_msrp.c b/src/switch_msrp.c
    index b76a0432619..1f5db7ac201 100644
    --- a/src/switch_msrp.c
    +++ b/src/switch_msrp.c
    @@ -1425,7 +1425,6 @@ static void *SWITCH_THREAD_FUNC msrp_worker(switch_thread_t *thread, void *obj)
     static void *SWITCH_THREAD_FUNC msrp_listener(switch_thread_t *thread, void *obj)
     {
     	switch_msrp_socket_t *msock = (switch_msrp_socket_t *)obj;
    -	switch_status_t rv;
     	switch_memory_pool_t *pool = NULL;
     	switch_threadattr_t *thd_attr = NULL;
     	switch_socket_t *sock = NULL;
    @@ -1440,7 +1439,7 @@ static void *SWITCH_THREAD_FUNC msrp_listener(switch_thread_t *thread, void *obj
     	switch_socket_opt_set(msock->sock, SWITCH_SO_TCP_NODELAY, TRUE);
     	// switch_socket_opt_set(msock->sock, SWITCH_SO_NONBLOCK, TRUE);
     
    -	while (globals.running && (rv = switch_socket_accept(&sock, msock->sock, pool)) == SWITCH_STATUS_SUCCESS) {
    +	while (globals.running && switch_socket_accept(&sock, msock->sock, pool) == SWITCH_STATUS_SUCCESS) {
     		switch_memory_pool_t *worker_pool;
     		worker_helper_t *helper;
     
    diff --git a/src/switch_odbc.c b/src/switch_odbc.c
    index fbad0e371a9..da134811d3f 100644
    --- a/src/switch_odbc.c
    +++ b/src/switch_odbc.c
    @@ -62,6 +62,13 @@ struct switch_odbc_handle {
     };
     #endif
     
    +uint8_t skip_autocommit_flip = 0;
    +
    +SWITCH_DECLARE(void) switch_odbc_skip_autocommit_flip(void)
    +{
    +	skip_autocommit_flip = 1;
    +}
    +
     SWITCH_DECLARE(switch_odbc_handle_t *) switch_odbc_handle_new(const char *dsn, const char *username, const char *password)
     {
     #ifdef SWITCH_HAVE_ODBC
    @@ -811,6 +818,10 @@ SWITCH_DECLARE(switch_bool_t) switch_odbc_available(void)
     SWITCH_DECLARE(switch_odbc_status_t) switch_odbc_SQLSetAutoCommitAttr(switch_odbc_handle_t *handle, switch_bool_t on)
     {
     #ifdef SWITCH_HAVE_ODBC
    +	if (skip_autocommit_flip) {
    +		return SWITCH_ODBC_SUCCESS;
    +	}
    +
     	if (on) {
     		return SQLSetConnectAttr(handle->con, SQL_ATTR_AUTOCOMMIT, (SQLPOINTER *) SQL_AUTOCOMMIT_ON, 0 );
     	} else {
    diff --git a/src/switch_rtp.c b/src/switch_rtp.c
    index 1880bbb19cb..e9f2c53c81b 100644
    --- a/src/switch_rtp.c
    +++ b/src/switch_rtp.c
    @@ -36,7 +36,7 @@
     #include 
     #endif
     #include 
    -#include 
    +#include 
     #undef PACKAGE_NAME
     #undef PACKAGE_STRING
     #undef PACKAGE_TARNAME
    @@ -2155,7 +2155,7 @@ static void switch_send_rtcp_event(switch_rtp_t *rtp_session ,struct switch_rtcp
     				switch_event_add_header_string(event, SWITCH_STACK_BOTTOM, header, value);
     				snprintf(header, sizeof(header), "Source-Lost");
     #if SWITCH_BYTE_ORDER == __BIG_ENDIAN
    -				tmpLost = report->lost; /* signed 24bit will extended signess to int32_t automatically */
    +				tmpLost = rtcp_report_block->lost; /* signed 24bit will extended signess to int32_t automatically */
     #else
     				tmpLost = ntohl(rtcp_report_block->lost)>>8;
     				tmpLost = tmpLost | ((tmpLost & 0x00800000) ? 0xff000000 : 0x00000000); /* ...and signess compensation */
    @@ -3042,7 +3042,7 @@ SWITCH_DECLARE(void) switch_rtp_set_media_timeout(switch_rtp_t *rtp_session, uin
     	}
     
     	switch_log_printf(SWITCH_CHANNEL_SESSION_LOG(rtp_session->session), SWITCH_LOG_DEBUG1,
    -					  "%s MEDIA TIMEOUT %s set to %u", switch_core_session_get_name(rtp_session->session), rtp_type(rtp_session), ms);
    +					  "%s MEDIA TIMEOUT %s set to %u\n", switch_core_session_get_name(rtp_session->session), rtp_type(rtp_session), ms);
     	rtp_session->media_timeout = ms;
     	switch_rtp_reset_media_timer(rtp_session);
     }
    @@ -6610,11 +6610,6 @@ static switch_status_t read_rtp_packet(switch_rtp_t *rtp_session, switch_size_t
     
     		if (rtp_session->jb && !rtp_session->pause_jb && jb_valid(rtp_session)) {
     
    -			if (!rtp_session->flags[SWITCH_RTP_FLAG_USE_TIMER] && rtp_session->timer.interval) {
    -				switch_core_timer_sync(&rtp_session->timer);
    -				reset_jitter_seq(rtp_session);
    -			}
    -
     			status = switch_jb_put_packet(rtp_session->jb, (switch_rtp_packet_t *) &rtp_session->recv_msg, *bytes);
     			if (status == SWITCH_STATUS_TOO_LATE) {
     				goto more;
    @@ -7355,7 +7350,7 @@ static void check_timeout(switch_rtp_t *rtp_session)
     	}
     
     	switch_log_printf(SWITCH_CHANNEL_SESSION_LOG(rtp_session->session), SWITCH_LOG_DEBUG10,
    -					  "%s MEDIA TIMEOUT %s %d/%d", switch_core_session_get_name(rtp_session->session), rtp_type(rtp_session),
    +					  "%s MEDIA TIMEOUT %s %d/%d\n", switch_core_session_get_name(rtp_session->session), rtp_type(rtp_session),
     					  elapsed, rtp_session->media_timeout);
     
     	if (elapsed > rtp_session->media_timeout) {
    @@ -7805,11 +7800,7 @@ static int rtp_common_read(switch_rtp_t *rtp_session, switch_payload_t *payload_
     						process_rtcp_packet(rtp_session, &rtcp_bytes);
     						ret = 1;
     
    -						if (!rtp_session->flags[SWITCH_RTP_FLAG_USE_TIMER] && rtp_session->timer.interval && !rtp_session->flags[SWITCH_RTP_FLAG_VIDEO]) {
    -							switch_core_timer_sync(&rtp_session->timer);
    -							reset_jitter_seq(rtp_session);
    -						}
    -						goto recvfrom;
    +						continue;
     					}
     				}
     			}
    @@ -8789,8 +8780,8 @@ static int rtp_common_write(switch_rtp_t *rtp_session,
     				switch_rtp_clear_flag(rtp_session, SWITCH_RTP_FLAG_SECURE_SEND_RESET);
     				srtp_dealloc(rtp_session->send_ctx[rtp_session->srtp_idx_rtp]);
     				rtp_session->send_ctx[rtp_session->srtp_idx_rtp] = NULL;
    -				if ((stat = srtp_create(&rtp_session->send_ctx[rtp_session->srtp_idx_rtp],
    -										&rtp_session->send_policy[rtp_session->srtp_idx_rtp])) || !rtp_session->send_ctx[rtp_session->srtp_idx_rtp]) {
    +				if (srtp_create(&rtp_session->send_ctx[rtp_session->srtp_idx_rtp],
    +										&rtp_session->send_policy[rtp_session->srtp_idx_rtp]) || !rtp_session->send_ctx[rtp_session->srtp_idx_rtp]) {
     					switch_log_printf(SWITCH_CHANNEL_SESSION_LOG(rtp_session->session), SWITCH_LOG_ERROR,
     									  "Error! RE-Activating %s Secure RTP SEND\n", rtp_type(rtp_session));
     					rtp_session->flags[SWITCH_RTP_FLAG_SECURE_SEND] = 0;
    @@ -9385,8 +9376,8 @@ SWITCH_DECLARE(switch_status_t) switch_rtp_write_raw(switch_rtp_t *rtp_session,
     				switch_rtp_clear_flag(rtp_session, SWITCH_RTP_FLAG_SECURE_SEND_RESET);
     				srtp_dealloc(rtp_session->send_ctx[rtp_session->srtp_idx_rtp]);
     				rtp_session->send_ctx[rtp_session->srtp_idx_rtp] = NULL;
    -				if ((stat = srtp_create(&rtp_session->send_ctx[rtp_session->srtp_idx_rtp],
    -										&rtp_session->send_policy[rtp_session->srtp_idx_rtp])) || !rtp_session->send_ctx[rtp_session->srtp_idx_rtp]) {
    +				if (srtp_create(&rtp_session->send_ctx[rtp_session->srtp_idx_rtp],
    +										&rtp_session->send_policy[rtp_session->srtp_idx_rtp]) || !rtp_session->send_ctx[rtp_session->srtp_idx_rtp]) {
     					switch_log_printf(SWITCH_CHANNEL_SESSION_LOG(rtp_session->session), SWITCH_LOG_ERROR, "Error! RE-Activating Secure RTP SEND\n");
     					rtp_session->flags[SWITCH_RTP_FLAG_SECURE_SEND] = 0;
     					status = SWITCH_STATUS_FALSE;
    diff --git a/src/switch_spandsp.c b/src/switch_spandsp.c
    new file mode 100644
    index 00000000000..397717da932
    --- /dev/null
    +++ b/src/switch_spandsp.c
    @@ -0,0 +1,65 @@
    +/*
    + * FreeSWITCH Modular Media Switching Software Library / Soft-Switch Application
    + * Copyright (C) 2005-2015, Anthony Minessale II 
    + *
    + * Version: MPL 1.1
    + *
    + * The contents of this file are subject to the Mozilla Public License Version
    + * 1.1 (the "License"); you may not use this file except in compliance with
    + * the License. You may obtain a copy of the License at
    + * http://www.mozilla.org/MPL/F
    + *
    + * Software distributed under the License is distributed on an "AS IS" basis,
    + * WITHOUT WARRANTY OF ANY KIND, either express or implied. See the License
    + * for the specific language governing rights and limitations under the
    + * License.
    + *
    + * The Original Code is FreeSWITCH Modular Media Switching Software Library / Soft-Switch Application
    + *
    + * The Initial Developer of the Original Code is
    + * Michael Jerris 
    + * Portions created by the Initial Developer are Copyright (C)
    + * the Initial Developer. All Rights Reserved.
    + *
    + * Contributor(s):
    + *
    + * Michael Jerris 
    + * Andrey Volk 
    + *
    + * switch_spandsp.c -- spandsp wrappers and extensions
    + *
    + */
    +
    +#include 
    +
    +#define SPANDSP_NO_TIFF 1
    +#include "spandsp.h"
    +
    +SWITCH_DECLARE(switch_plc_state_t *) switch_plc_init(switch_plc_state_t *s) {
    +	return (switch_plc_state_t *)plc_init((plc_state_t *)s);
    +}
    +
    +SWITCH_DECLARE(int) switch_plc_free(switch_plc_state_t *s) {
    +	return plc_free((plc_state_t *)s);
    +}
    +
    +SWITCH_DECLARE(int) switch_plc_fillin(switch_plc_state_t *s, int16_t amp[], int len) {
    +	return plc_fillin((plc_state_t *)s, amp, len);
    +}
    +
    +SWITCH_DECLARE(int) switch_plc_rx(switch_plc_state_t* s, int16_t amp[], int len)
    +{
    +	return plc_rx((plc_state_t*)s, amp, len);
    +}
    +
    +
    +/* For Emacs:
    + * Local Variables:
    + * mode:c
    + * indent-tabs-mode:t
    + * tab-width:4
    + * c-basic-offset:4
    + * End:
    + * For VIM:
    + * vim:set softtabstop=4 shiftwidth=4 tabstop=4 noet:
    + */
    diff --git a/src/switch_stun.c b/src/switch_stun.c
    index 6149ac3dc3e..b0ff45b3dcf 100644
    --- a/src/switch_stun.c
    +++ b/src/switch_stun.c
    @@ -717,7 +717,6 @@ SWITCH_DECLARE(switch_status_t) switch_stun_lookup(char **ip,
     	char rip[50] = { 0 };
     	uint16_t rport = 0;
     	switch_time_t started = 0;
    -	unsigned int elapsed = 0;
     	int funny = 0;
     	int size = sizeof(buf);
     	int xlen = sizeof(switch_stun_packet_header_t);
    @@ -787,7 +786,7 @@ SWITCH_DECLARE(switch_status_t) switch_stun_lookup(char **ip,
     			break;
     		}
     
    -		if ((elapsed = (unsigned int) ((switch_micro_time_now() - started) / 1000)) > 5000) {
    +		if (((unsigned int)((switch_micro_time_now() - started) / 1000)) > 5000) {
     			*err = "Timeout";
     			switch_socket_shutdown(sock, SWITCH_SHUTDOWN_READWRITE);
     			switch_socket_close(sock);
    diff --git a/src/switch_time.c b/src/switch_time.c
    index fc94b48ee4f..44c1edbcce8 100644
    --- a/src/switch_time.c
    +++ b/src/switch_time.c
    @@ -33,6 +33,7 @@
     
     #include 
     #include 
    +#include "private/switch_apr_pvt.h"
     #include "private/switch_core_pvt.h"
     
     #ifdef HAVE_TIMERFD_CREATE
    @@ -161,7 +162,7 @@ static void do_sleep(switch_interval_time_t t)
     
     #if !defined(DARWIN)
     	if (t > 100000 || !NANO) {
    -		apr_sleep(t);
    +		fspr_sleep(t);
     		return;
     	}
     #endif
    @@ -178,7 +179,7 @@ static void do_sleep(switch_interval_time_t t)
     	ts.tv_nsec = (t % APR_USEC_PER_SEC) * 850;
     	nanosleep(&ts, NULL);
     #else
    -	apr_sleep(t);
    +	fspr_sleep(t);
     #endif
     
     #if defined(DARWIN)
    @@ -412,7 +413,7 @@ typedef struct interval_timer interval_timer_t;
     static switch_status_t timerfd_start_interval(interval_timer_t *it, int interval)
     {
     	struct itimerspec val;
    -	int fd, r;
    +	int fd;
     	uint64_t exp;
     
     	fd = timerfd_create(CLOCK_MONOTONIC, 0);
    @@ -431,7 +432,7 @@ static switch_status_t timerfd_start_interval(interval_timer_t *it, int interval
     		return SWITCH_STATUS_GENERR;
     	}
     
    -	if ((r = read(fd, &exp, sizeof(exp))) < 0) {
    +	if (read(fd, &exp, sizeof(exp)) < 0) {
     		close(fd);
     		return SWITCH_STATUS_GENERR;
     	}
    diff --git a/src/switch_utils.c b/src/switch_utils.c
    index 107d1a86436..d8b830943a9 100644
    --- a/src/switch_utils.c
    +++ b/src/switch_utils.c
    @@ -33,6 +33,7 @@
      */
     
     #include 
    +#include "private/switch_apr_pvt.h"
     #ifndef WIN32
     #include 
     #if defined(HAVE_SYS_TIME_H) && defined(HAVE_SYS_RESOURCE_H)
    @@ -1141,7 +1142,7 @@ SWITCH_DECLARE(switch_bool_t) switch_simple_email(const char *to,
     	}
     
     	if (!zstr(file) && !zstr(convert_cmd) && !zstr(convert_ext)) {
    -		if ((ext = strrchr(file, '.'))) {
    +		if (strrchr(file, '.')) {
     			dupfile = strdup(file);
     			if ((ext = strrchr(dupfile, '.'))) {
     				*ext++ = '\0';
    @@ -1819,9 +1820,8 @@ SWITCH_DECLARE(switch_status_t) switch_resolve_host(const char *host, char *buf,
     {
     
     	struct addrinfo *ai;
    -	int err;
     
    -	if ((err = getaddrinfo(host, 0, 0, &ai))) {
    +	if (getaddrinfo(host, 0, 0, &ai)) {
     		return SWITCH_STATUS_FALSE;
     	}
     
    @@ -4639,6 +4639,10 @@ SWITCH_DECLARE(switch_status_t) switch_digest_string(const char *digest_name, ch
     			}
     
     			(*digest_str)[i] = '\0';
    +		} else {
    +			switch_safe_free(digest);
    +			*outputlen = 0;
    +			return SWITCH_STATUS_FALSE;
     		}
     	}
     
    diff --git a/src/switch_xml.c b/src/switch_xml.c
    index 6467758b723..c43a530252e 100644
    --- a/src/switch_xml.c
    +++ b/src/switch_xml.c
    @@ -63,7 +63,7 @@
     #include 
     #else /* we're on windoze :( */
     /* glob functions at end of this file */
    -#include 
    +#include 
     
     typedef struct {
     	size_t gl_pathc;			/* Count of total paths so far. */
    @@ -795,7 +795,7 @@ static void switch_xml_proc_inst(switch_xml_root_t root, char *s, switch_size_t
     		return;
     	}
     
    -	if (!root->pi || !root->pi[0]) {
    +	if (root->pi == (char ***)(SWITCH_XML_NIL) || !root->pi || !root->pi[0]) {
     		root->pi = (char ***) switch_must_malloc(sizeof(char **));
     		*(root->pi) = NULL;		/* first pi */
     	}
    @@ -1257,7 +1257,7 @@ static char *expand_vars(char *buf, char *ebuf, switch_size_t elen, switch_size_
     	char *wp = ebuf;
     	char *ep = ebuf + elen - 1;
     
    -	if (!(var = strstr(rp, "$${"))) {
    +	if (!strstr(rp, "$${")) {
     		*newlen = strlen(buf);
     		return buf;
     	}
    @@ -3626,19 +3626,19 @@ static int glob2(char *pathbuf, char *pathend, char *pathend_last, char *pattern
     static int glob3(char *pathbuf, char *pathend, char *pathend_last, char *pattern, char *restpattern, glob_t *pglob, size_t *limit)
     {
     	int err;
    -	apr_dir_t *dirp;
    -	apr_pool_t *pool;
    +	fspr_dir_t *dirp;
    +	fspr_pool_t *pool;
     
    -	apr_pool_create(&pool, NULL);
    +	fspr_pool_create(&pool, NULL);
     
     	if (pathend > pathend_last)
     		return (GLOB_ABORTED);
     	*pathend = EOS;
     	errno = 0;
     
    -	if (apr_dir_open(&dirp, pathbuf, pool) != APR_SUCCESS) {
    +	if (fspr_dir_open(&dirp, pathbuf, pool) != APR_SUCCESS) {
     		/* TODO: don't call for ENOENT or ENOTDIR? */
    -		apr_pool_destroy(pool);
    +		fspr_pool_destroy(pool);
     		if (pglob->gl_errfunc) {
     			if (pglob->gl_errfunc(pathbuf, errno) || pglob->gl_flags & GLOB_ERR)
     				return (GLOB_ABORTED);
    @@ -3650,11 +3650,11 @@ static int glob3(char *pathbuf, char *pathend, char *pathend_last, char *pattern
     
     	/* Search directory for matching names. */
     	while (dirp) {
    -		apr_finfo_t dp;
    +		fspr_finfo_t dp;
     		unsigned char *sc;
     		char *dc;
     
    -		if (apr_dir_read(&dp, APR_FINFO_NAME, dirp) != APR_SUCCESS)
    +		if (fspr_dir_read(&dp, APR_FINFO_NAME, dirp) != APR_SUCCESS)
     			break;
     		if (!(dp.valid & APR_FINFO_NAME) || !(dp.name) || !strlen(dp.name))
     			break;
    @@ -3677,8 +3677,8 @@ static int glob3(char *pathbuf, char *pathend, char *pathend_last, char *pattern
     	}
     
     	if (dirp)
    -		apr_dir_close(dirp);
    -	apr_pool_destroy(pool);
    +		fspr_dir_close(dirp);
    +	fspr_pool_destroy(pool);
     	return (err);
     }
     
    diff --git a/tests/unit/.gitignore b/tests/unit/.gitignore
    index 4c7b7466c41..470c5ded12a 100644
    --- a/tests/unit/.gitignore
    +++ b/tests/unit/.gitignore
    @@ -48,3 +48,6 @@ Makefile
     conf/*/
     conf_playsay/*/
     conf_async/*/
    +x64
    +win32
    +*.vcxproj.user
    \ No newline at end of file
    diff --git a/tests/unit/Makefile.am b/tests/unit/Makefile.am
    index d24e30f62be..e2cec690893 100644
    --- a/tests/unit/Makefile.am
    +++ b/tests/unit/Makefile.am
    @@ -5,6 +5,12 @@ noinst_PROGRAMS = switch_event switch_hash switch_ivr_originate switch_utils swi
     noinst_PROGRAMS += switch_core_video switch_core_db switch_vad switch_packetizer switch_core_session test_sofia switch_ivr_async switch_core_asr switch_log
     
     noinst_PROGRAMS+= switch_hold switch_sip
    +
    +if HAVE_PCAP
    +noinst_PROGRAMS += switch_rtp_pcap
    +AM_LDFLAGS += $(PCAP_LIBS)
    +endif 
    +
     AM_LDFLAGS += -avoid-version -no-undefined $(SWITCH_AM_LDFLAGS) $(openssl_LIBS)
     AM_LDFLAGS += $(FREESWITCH_LIBS) $(switch_builddir)/libfreeswitch.la $(CORE_LIBS) $(APR_LIBS)
     
    diff --git a/tests/unit/conf_rtp/freeswitch.xml b/tests/unit/conf_rtp/freeswitch.xml
    new file mode 100644
    index 00000000000..69130f8f826
    --- /dev/null
    +++ b/tests/unit/conf_rtp/freeswitch.xml
    @@ -0,0 +1,73 @@
    +
    +
    +  
    +  
    +  
    +  
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    + +
    + + + + + + + + + + + + + + + + +
    +
    diff --git a/tests/unit/pcap/milliwatt.long.pcmu.rtp.pcap b/tests/unit/pcap/milliwatt.long.pcmu.rtp.pcap new file mode 100644 index 00000000000..36ed6a17796 Binary files /dev/null and b/tests/unit/pcap/milliwatt.long.pcmu.rtp.pcap differ diff --git a/tests/unit/pcap/milliwatt.pcmu.rtp.pcap b/tests/unit/pcap/milliwatt.pcmu.rtp.pcap new file mode 100644 index 00000000000..8f68eaca983 Binary files /dev/null and b/tests/unit/pcap/milliwatt.pcmu.rtp.pcap differ diff --git a/tests/unit/switch_core.c b/tests/unit/switch_core.c index 126921997c6..5689513cbc8 100644 --- a/tests/unit/switch_core.c +++ b/tests/unit/switch_core.c @@ -51,6 +51,22 @@ FST_CORE_BEGIN("./conf") } FST_TEARDOWN_END() + FST_TEST_BEGIN(test_switch_event_add_header_leak) + { + switch_event_t* event; + + if (switch_event_create(&event, SWITCH_EVENT_CHANNEL_CALLSTATE) == SWITCH_STATUS_SUCCESS) { + switch_event_add_header_string(event, SWITCH_STACK_BOTTOM, "Channel-Call-State-Number[0]", "1"); + switch_event_fire(&event); + } + + if (switch_event_create(&event, SWITCH_EVENT_CHANNEL_CALLSTATE) == SWITCH_STATUS_SUCCESS) { + switch_event_add_header_string(event, SWITCH_STACK_BOTTOM, "Channel-Call-State-Number[5000]", "12"); + switch_event_fire(&event); + } + } + FST_TEST_END() + FST_TEST_BEGIN(test_xml_free_attr) { switch_xml_t parent_xml = switch_xml_new("xml"); diff --git a/tests/unit/switch_core_video.c b/tests/unit/switch_core_video.c index 27c96102929..e395db474d5 100644 --- a/tests/unit/switch_core_video.c +++ b/tests/unit/switch_core_video.c @@ -48,6 +48,7 @@ FST_CORE_BEGIN("./conf") } FST_TEARDOWN_END() +#ifdef SWITCH_HAVE_YUV FST_TEST_BEGIN(data_url_test) { char *data_url = NULL; @@ -88,6 +89,7 @@ FST_CORE_BEGIN("./conf") unlink(argb_filename); } FST_TEST_END() +#endif /* SWITCH_HAVE_YUV */ FST_TEST_BEGIN(img_patch) { @@ -239,6 +241,7 @@ FST_CORE_BEGIN("./conf") } FST_TEST_END() +#ifdef SWITCH_HAVE_YUV FST_TEST_BEGIN(stb_data_url) { switch_image_t *img = switch_img_alloc(NULL, SWITCH_IMG_FMT_I420, 120, 60, 1); @@ -321,6 +324,7 @@ FST_CORE_BEGIN("./conf") unlink(jpg_write_filename); } FST_TEST_END() +#endif /* SWITCH_HAVE_YUV */ } FST_SUITE_END() } diff --git a/tests/unit/switch_hold.c b/tests/unit/switch_hold.c index e48865155be..50156e5efe0 100644 --- a/tests/unit/switch_hold.c +++ b/tests/unit/switch_hold.c @@ -1,12 +1,21 @@ #include #include +int timeout_sec = 10; +switch_interval_time_t delay_start_ms = 5000; + FST_CORE_DB_BEGIN("./conf_test") { FST_SUITE_BEGIN(switch_hold) { FST_SETUP_BEGIN() { + /* Give mod_sofia time to spinup profile threads */ + if (delay_start_ms) { + switch_sleep(delay_start_ms * 1000); + delay_start_ms = 0; + } + fst_requires_module("mod_sofia"); fst_requires_module("mod_commands"); } @@ -23,7 +32,7 @@ FST_SUITE_BEGIN(switch_hold) switch_status_t status; switch_call_cause_t cause; - status = switch_ivr_originate(NULL, &session, &cause, "{ignore_early_media=true}sofia/gateway/test_gateway/+15553332900", 2, NULL, NULL, NULL, NULL, NULL, SOF_NONE, NULL, NULL); + status = switch_ivr_originate(NULL, &session, &cause, "{ignore_early_media=true}sofia/gateway/test_gateway/+15553332900", timeout_sec, NULL, NULL, NULL, NULL, NULL, SOF_NONE, NULL, NULL); fst_requires(session); fst_check(status == SWITCH_STATUS_SUCCESS); diff --git a/tests/unit/switch_ivr_originate.c b/tests/unit/switch_ivr_originate.c index 4cf96952752..5603e18f0ec 100644 --- a/tests/unit/switch_ivr_originate.c +++ b/tests/unit/switch_ivr_originate.c @@ -482,7 +482,7 @@ FST_CORE_BEGIN("./conf") switch_dial_handle_destroy(&dh); - fst_check_duration(3000, 500); + fst_check_duration(3000, 600); } FST_TEST_END() @@ -513,7 +513,7 @@ FST_CORE_BEGIN("./conf") switch_dial_handle_destroy(&dh); - fst_check_duration(3000, 500); + fst_check_duration(3000, 600); } FST_TEST_END() diff --git a/tests/unit/switch_rtp_pcap.c b/tests/unit/switch_rtp_pcap.c new file mode 100644 index 00000000000..647e481c8e3 --- /dev/null +++ b/tests/unit/switch_rtp_pcap.c @@ -0,0 +1,580 @@ +/* +* FreeSWITCH Modular Media Switching Software Library / Soft-Switch Application +* Copyright (C) 2005-2021, Anthony Minessale II +* +* Version: MPL 1.1 +* +* The contents of this file are subject to the Mozilla Public License Version +* 1.1 (the "License"); you may not use this file except in compliance with +* the License. You may obtain a copy of the License at +* http://www.mozilla.org/MPL/ +* +* Software distributed under the License is distributed on an "AS IS" basis, +* WITHOUT WARRANTY OF ANY KIND, either express or implied. See the License +* for the specific language governing rights and limitations under the +* License. +* +* The Original Code is FreeSWITCH Modular Media Switching Software Library / Soft-Switch Application +* +* The Initial Developer of the Original Code is +* Anthony Minessale II +* Portions created by the Initial Developer are Copyright (C) +* the Initial Developer. All Rights Reserved. +* +* Contributor(s): +* Dragos Oancea +* +* switch_rtp_pcap.c -- tests RTP stack using PCAP. +*/ + + +#include +#include + +/* before adding a pcap file: tcprewrite --dstipmap=X.X.X.X/32:192.168.0.1/32 --srcipmap=X.X.X.X/32:192.168.0.2/32 -i in.pcap -o out.pcap */ + +#include + +#ifndef MSG_CONFIRM +#define MSG_CONFIRM 0 +#endif + +static const char *rx_host = "127.0.0.1"; +static const char *tx_host = "127.0.0.1"; +static switch_rtp_t *rtp_session = NULL; +const char *err = NULL; +switch_rtp_packet_t rtp_packet; +switch_frame_flag_t *frame_flags; +switch_io_flag_t io_flags; +switch_payload_t read_pt; +static switch_port_t audio_rx_port = 1234; + +static int got_media_timeout = 0; + +//#define USE_RTCP_PCAP + +#define NTP_TIME_OFFSET 2208988800UL + +/* https://www.tcpdump.org/pcap.html */ +/* IP header */ +struct sniff_ip { + u_char ip_vhl; /* version << 4 | header length >> 2 */ + u_char ip_tos; /* type of service */ + u_short ip_len; /* total length */ + u_short ip_id; /* identification */ + u_short ip_off; /* fragment offset field */ +#define IP_RF 0x8000 /* reserved fragment flag */ +#define IP_DF 0x4000 /* dont fragment flag */ +#define IP_MF 0x2000 /* more fragments flag */ +#define IP_OFFMASK 0x1fff /* mask for fragmenting bits */ + u_char ip_ttl; /* time to live */ + u_char ip_p; /* protocol */ + u_short ip_sum; /* checksum */ + struct in_addr ip_src,ip_dst; /* source and dest address */ +}; + +#define IP_HL(ip) (((ip)->ip_vhl) & 0x0f) + +/* switch_rtp.c - calc_local_lsr_now() */ +#if 0 +static inline uint32_t test_calc_local_lsr_now(switch_time_t now, uint32_t past /*milliseconds*/) +{ +// switch_time_t now; + uint32_t ntp_sec, ntp_usec, lsr_now, sec; +// now = switch_micro_time_now() - (past * 1000); + now = now - (past * 1000); + sec = (uint32_t)(now/1000000); /* convert to seconds */ + ntp_sec = sec+NTP_TIME_OFFSET; /* convert to NTP seconds */ + ntp_usec = (uint32_t)(now - ((switch_time_t) sec*1000000)); /* remove seconds to keep only the microseconds */ + + lsr_now = (uint32_t)(ntp_usec*0.065536) | (ntp_sec&0x0000ffff)<<16; /* 0.065536 is used for convertion from useconds to fraction of 65536 (x65536/1000000) */ + return lsr_now; +} + +static void test_prepare_rtcp(void *rtcp_packet, float est_last, uint32_t rtt, uint8_t loss) +{ + /* taken from switch_rtp.c, rtcp_generate_sender_info() */ + /* === */ + char *rtcp_sr_trigger = rtcp_packet; + switch_time_t now; + uint32_t sec, ntp_sec, ntp_usec; + uint32_t ntp_msw; + uint32_t ntp_lsw; + uint32_t *ptr_msw; + uint32_t *ptr_lsw; + uint32_t lsr; + uint32_t *ptr_lsr; + uint32_t dlsr = 0; + uint32_t *ptr_dlsr; + uint8_t *ptr_loss; + + now = switch_micro_time_now(); + sec = (uint32_t)(now/1000000); /* convert to seconds */ + ntp_sec = sec+NTP_TIME_OFFSET; /* convert to NTP seconds */ + ntp_msw = htonl(ntp_sec); /* store result in "most significant word" */ + ntp_usec = (uint32_t)(now - (sec*1000000)); /* remove seconds to keep only the microseconds */ + ntp_lsw = htonl((u_long)(ntp_usec*(double)(((uint64_t)1)<<32)*1.0e-6)); + + /* === */ + + /*patch the RTCP payload to set the RTT we want */ + + ptr_msw = (uint32_t *)rtcp_sr_trigger + 2; + *ptr_msw = ntp_msw; + + ptr_lsw = (uint32_t *)rtcp_sr_trigger + 3; + *ptr_lsw = ntp_lsw; + + lsr = test_calc_local_lsr_now(now, est_last * 1000 + rtt /*ms*/); + + ptr_lsr = (uint32_t *)rtcp_sr_trigger + 11; + *ptr_lsr = htonl(lsr); + + ptr_dlsr = (uint32_t *)rtcp_sr_trigger + 12; + *ptr_dlsr = htonl(dlsr); + + ptr_loss = (uint8_t *)rtcp_sr_trigger + 32; + *ptr_loss = loss; +} +#endif + +static switch_status_t rtp_test_start_call(switch_core_session_t **psession) +{ + char *r_sdp; + uint8_t match = 0, p = 0; + switch_core_session_t *session; + switch_channel_t *channel = NULL; + switch_status_t status; + switch_media_handle_t *media_handle; + switch_core_media_params_t *mparams; + switch_stream_handle_t stream = { 0 }; + switch_call_cause_t cause; + + /*tone stream extension*/ + status = switch_ivr_originate(NULL, psession, &cause, "null/+1234", 2, NULL, NULL, NULL, NULL, NULL, SOF_NONE, NULL, NULL); + session = *psession; + + if (!(session)) { + switch_log_printf(SWITCH_CHANNEL_SESSION_LOG(session), SWITCH_LOG_ERROR, "no session\n"); + return SWITCH_STATUS_FALSE; + } + + if (status != SWITCH_STATUS_SUCCESS) { + switch_log_printf(SWITCH_CHANNEL_SESSION_LOG(session), SWITCH_LOG_ERROR, "switch_ivr_originate() failed\n"); + return SWITCH_STATUS_FALSE; + } + + channel = switch_core_session_get_channel(session); + if (!channel) { + switch_log_printf(SWITCH_CHANNEL_SESSION_LOG(session), SWITCH_LOG_ERROR, "switch_core_session_get_channel() failed\n"); + return SWITCH_STATUS_FALSE; + } + mparams = switch_core_session_alloc(session, sizeof(switch_core_media_params_t)); + mparams->inbound_codec_string = switch_core_session_strdup(session, "PCMU"); + mparams->outbound_codec_string = switch_core_session_strdup(session, "PCMU"); + mparams->rtpip = switch_core_session_strdup(session, (char *)rx_host); + + status = switch_media_handle_create(&media_handle, session, mparams); + if (status != SWITCH_STATUS_SUCCESS) { + switch_log_printf(SWITCH_CHANNEL_SESSION_LOG(session), SWITCH_LOG_ERROR, "switch_media_handle_create() failed\n"); + return SWITCH_STATUS_FALSE; + } + + switch_channel_set_variable(channel, "absolute_codec_string", "PCMU"); + switch_channel_set_variable(channel, "send_silence_when_idle", "-1"); + switch_channel_set_variable(channel, "rtp_timer_name", "soft"); + switch_channel_set_variable(channel, "media_timeout", "1000"); + + switch_channel_set_variable(channel, SWITCH_LOCAL_MEDIA_IP_VARIABLE, rx_host); + switch_channel_set_variable_printf(channel, SWITCH_LOCAL_MEDIA_PORT_VARIABLE, "%d", audio_rx_port); + + r_sdp = switch_core_session_sprintf(session, + "v=0\n" + "o=FreeSWITCH 1632033305 1632033306 IN IP4 %s\n" + "s=-\n" + "c=IN IP4 %s\n" + "t=0 0\n" + "m=audio 11114 RTP/AVP 0 101\n" + "a=rtpmap:0 PCMU/8000\n" + "a=rtpmap:101 telephone-event/8000\n" + "a=rtcp-mux\n", + tx_host, tx_host); + + status = switch_core_media_prepare_codecs(session, SWITCH_FALSE); + if (status != SWITCH_STATUS_SUCCESS) { + switch_log_printf(SWITCH_CHANNEL_SESSION_LOG(session), SWITCH_LOG_ERROR, "switch_core_media_prepare_codecs() failed\n"); + return SWITCH_STATUS_FALSE; + } + + match = switch_core_media_negotiate_sdp(session, r_sdp, &p, SDP_TYPE_REQUEST); + if (match != 1) { + switch_log_printf(SWITCH_CHANNEL_SESSION_LOG(session), SWITCH_LOG_ERROR, "switch_core_media_negotiate_sdp() failed\n"); + return SWITCH_STATUS_FALSE; + } + + status = switch_core_media_choose_ports(session, SWITCH_TRUE, SWITCH_FALSE); + if (status != SWITCH_STATUS_SUCCESS) { + switch_log_printf(SWITCH_CHANNEL_SESSION_LOG(session), SWITCH_LOG_ERROR, "switch_core_media_choose_ports() failed\n"); + return SWITCH_STATUS_FALSE; + } + + status = switch_core_media_activate_rtp(session); + if (status != SWITCH_STATUS_SUCCESS) { + switch_log_printf(SWITCH_CHANNEL_SESSION_LOG(session), SWITCH_LOG_ERROR, "switch_core_media_activate_rtp() failed\n"); + return SWITCH_STATUS_FALSE; + } + + switch_core_media_set_rtp_flag(session, SWITCH_MEDIA_TYPE_AUDIO, SWITCH_RTP_FLAG_DEBUG_RTP_READ); + switch_core_media_set_rtp_flag(session, SWITCH_MEDIA_TYPE_AUDIO, SWITCH_RTP_FLAG_DEBUG_RTP_WRITE); + + SWITCH_STANDARD_STREAM(stream); + switch_api_execute("fsctl", "debug_level 10", session, &stream); + switch_safe_free(stream.data); + + return SWITCH_STATUS_SUCCESS; +} + +static switch_status_t rtp_test_end_call(switch_core_session_t **psession) +{ + switch_channel_t *channel = NULL; + switch_core_session_t *session = *psession; + + channel = switch_core_session_get_channel(session); + if (!channel) { + return SWITCH_STATUS_FALSE; + } + switch_channel_hangup(channel, SWITCH_CAUSE_NORMAL_CLEARING); + switch_media_handle_destroy(session); + switch_core_session_rwunlock(session); + + return SWITCH_STATUS_SUCCESS; +} + +static void rtp_test_init_frame(switch_frame_t **pwrite_frame, switch_core_session_t **psession) +{ + const unsigned char hdr_packet[]="\x80\x00\xcd\x15\xfd\x86\x00\x00\x61\x5a\xe1\x37"; + + switch_frame_alloc(pwrite_frame, SWITCH_RECOMMENDED_BUFFER_SIZE); + (*pwrite_frame)->codec = switch_core_session_get_write_codec(*psession); + + (*pwrite_frame)->datalen = SWITCH_RTP_HEADER_LEN; /*init with dummy RTP header*/ + memcpy((*pwrite_frame)->data, &hdr_packet, SWITCH_RTP_HEADER_LEN); +} + +static void show_event(switch_event_t *event) { + char *str; + /*print the event*/ + switch_event_serialize_json(event, &str); + if (str) { + switch_log_printf(SWITCH_CHANNEL_LOG, SWITCH_LOG_INFO, "%s\n", str); + switch_safe_free(str); + } +} + +static void event_handler(switch_event_t *event) +{ + const char *new_ev = switch_event_get_header(event, "Event-Name"); + + if (new_ev && !strcmp(new_ev, "CHANNEL_HANGUP")) { + if (!strcmp(switch_event_get_header(event, "Hangup-Cause"), "MEDIA_TIMEOUT")) { + got_media_timeout = 1; + } + } + + show_event(event); +} + +FST_CORE_DB_BEGIN("./conf_rtp") +{ +FST_SUITE_BEGIN(switch_rtp_pcap) +{ + +FST_SETUP_BEGIN() +{ + fst_requires_module("mod_loopback"); +} +FST_SETUP_END() + +FST_TEARDOWN_BEGIN() +{ +} +FST_TEARDOWN_END() +#if 0 + FST_TEST_BEGIN(test_rtp_stall_with_rtcp_muxed_with_timer) + { + switch_core_session_t *session = NULL; + switch_status_t status; + uint32_t plen = SWITCH_RTP_HEADER_LEN; + char rpacket[SWITCH_RECOMMENDED_BUFFER_SIZE]; + switch_payload_t pt = { 0 }; + switch_frame_flag_t frameflags = { 0 }; + int x = 0; + switch_frame_t *write_frame; + pcap_t *pcap; + const unsigned char *packet; + char errbuf[PCAP_ERRBUF_SIZE]; + struct pcap_pkthdr pcap_header; + char rtcp_sr_trigger[] = "\x81\xc8\x00\x0c\x78\x9d\xac\x45\xe2\x67\xa5\x74\x30\x60\x56\x81\x00\x19" + "\xaa\x00\x00\x00\x06\xd7\x00\x01\x2c\x03\x5e\xbd\x2f\x0b\x00" + "\x00\x00\x00\x00\x00\x57\xc4\x00\x00\x00\x39\xa5\x73\xfe\x90\x00\x00\x2c\x87" + "\x81\xca\x00\x0c\x78\x9d\xac\x45\x01\x18\x73\x69\x70\x3a\x64\x72\x40\x31\x39\x32\x2e" + "\x31\x36\x38\x2e\x30\x2e\x31\x33\x3a\x37\x30\x36\x30\x06\x0e\x4c\x69\x6e\x70\x68\x6f" + "\x6e\x65\x2d\x33\x2e\x36\x2e\x31\x00\x00"; + const struct sniff_ip *ip; /* The IP header */ + int size_ip, jump_over; + struct timeval prev_ts = { 0 }; + switch_time_t time_nowpacket = 0, time_prevpacket = 0; + switch_socket_t *sock_rtp = NULL; + switch_sockaddr_t *sock_addr = NULL; + const char *str_err; + switch_size_t rough_add = 0; + + status = rtp_test_start_call(&session); + fst_requires(status == SWITCH_STATUS_SUCCESS); + fst_requires(session); + + pcap = pcap_open_offline_with_tstamp_precision("pcap/milliwatt.long.pcmu.rtp.pcap", PCAP_TSTAMP_PRECISION_MICRO, errbuf); + fst_requires(pcap); + + switch_core_media_set_rtp_flag(session, SWITCH_MEDIA_TYPE_AUDIO, SWITCH_RTP_FLAG_ENABLE_RTCP); + + rtp_session = switch_core_media_get_rtp_session(session, SWITCH_MEDIA_TYPE_AUDIO); + + rtp_test_init_frame(&write_frame, &session); + + switch_rtp_clear_flag(rtp_session, SWITCH_RTP_FLAG_PAUSE); + + if (switch_socket_create(&sock_rtp, AF_INET, SOCK_DGRAM, 0, switch_core_session_get_pool(session)) != SWITCH_STATUS_SUCCESS) { + fst_requires(0); /*exit*/ + } + + switch_sockaddr_new(&sock_addr, rx_host, audio_rx_port, switch_core_session_get_pool(session)); + fst_requires(sock_addr); + + switch_rtp_set_remote_address(rtp_session, tx_host, switch_sockaddr_get_port(sock_addr), 0, SWITCH_FALSE, &str_err); + switch_rtp_reset(rtp_session); + + while ((packet = pcap_next(pcap, &pcap_header))) { + /*assume only UDP/RTP packets in the pcap*/ + uint32_t rcvd_datalen = pcap_header.caplen; + size_t len; + switch_size_t tmp_len; + + int diff_us = (pcap_header.ts.tv_sec-prev_ts.tv_sec)*1000000+(pcap_header.ts.tv_usec-prev_ts.tv_usec); + + if (diff_us > 0) { + switch_log_printf(SWITCH_CHANNEL_SESSION_LOG(session), SWITCH_LOG_DEBUG, "SENT pkt diff: %d us\n", diff_us); + usleep(diff_us); + } + + prev_ts = pcap_header.ts; + + len = pcap_header.caplen; + + if (len <= 42) { + continue; + } + + ip = (struct sniff_ip*)(packet + 14); + size_ip = IP_HL(ip) * 4; + + jump_over = 14 /*SIZE_ETHERNET*/ + size_ip /*IP HDR size*/ + 8 /* UDP HDR SIZE */; /* jump 42 bytes over network layers/headers */ + packet += jump_over; + x++; + + if (!(x%10)) { /* send a RTCP SR packet every 10th RTP packet */ + int add_rtt = 200; + test_prepare_rtcp(&rtcp_sr_trigger, 2, add_rtt, 0xa0); + tmp_len = sizeof(rtcp_sr_trigger); + /*RTCP muxed*/ + if (switch_socket_sendto(sock_rtp, sock_addr, MSG_CONFIRM, (const char*)rtcp_sr_trigger, &tmp_len) != SWITCH_STATUS_SUCCESS) { + fst_requires(0); + } + + plen = sizeof(rtcp_sr_trigger); + switch_log_printf(SWITCH_CHANNEL_SESSION_LOG(session), SWITCH_LOG_INFO, "Sent RTCP. Packet size = [%u]\n", plen); + status = switch_rtp_read(rtp_session, (void *)rpacket, &rcvd_datalen, &pt, &frameflags, io_flags); + if (pt == SWITCH_RTP_CNG_PAYLOAD /*timeout*/) { + switch_log_printf(SWITCH_CHANNEL_SESSION_LOG(session), SWITCH_LOG_DEBUG, "read CNG/RTCP, skip\n"); + while (1) { + status = switch_rtp_read(rtp_session, (void *)&rpacket, &rcvd_datalen, &pt, &frameflags, io_flags); + if (frameflags || SFF_RTCP) break; + } + } + fst_requires(status == SWITCH_STATUS_SUCCESS); + } + + if (packet[0] == 0x80 && packet[1] == 0 /*PCMU*/) { + int16_t *seq = (int16_t *)packet + 1; + plen = len - jump_over; + tmp_len = plen; + switch_log_printf(SWITCH_CHANNEL_SESSION_LOG(session), SWITCH_LOG_DEBUG, "Sent RTP. Packet size = [%u] seq = [%d]\n", plen, htons(*seq)); + if (switch_socket_sendto(sock_rtp, sock_addr, MSG_CONFIRM, (const char*)packet, &tmp_len) != SWITCH_STATUS_SUCCESS) { + fst_requires(0); + } + } + + status = switch_rtp_read(rtp_session, (void *)&rpacket, &rcvd_datalen, &pt, &frameflags, io_flags); + if (pt == SWITCH_RTP_CNG_PAYLOAD /*timeout*/) { + switch_log_printf(SWITCH_CHANNEL_SESSION_LOG(session), SWITCH_LOG_DEBUG, "read CNG, skip\n"); + continue; + } + time_prevpacket = time_nowpacket; + time_nowpacket = switch_time_now(); + if (time_prevpacket) { // skip init. + switch_log_printf(SWITCH_CHANNEL_SESSION_LOG(session), SWITCH_LOG_DEBUG, "RECV pkt diff: %ld us\n", time_nowpacket - time_prevpacket); + + fst_requires((time_nowpacket - time_prevpacket) < 80000); + rough_add += time_nowpacket - time_prevpacket; /* just add to var for visual comparison */ + } + fst_requires(status == SWITCH_STATUS_SUCCESS); + if (pt == SWITCH_RTP_CNG_PAYLOAD /*timeout*/) continue; + fst_requires(rcvd_datalen == plen - SWITCH_RTP_HEADER_LEN); + } + + switch_log_printf(SWITCH_CHANNEL_SESSION_LOG(session), SWITCH_LOG_DEBUG, "RECV total delay: %lu\n", rough_add); /*around 17092408 us*/ + switch_yield(1000 * 1000); + + if (write_frame) switch_frame_free(&write_frame); + + switch_rtp_destroy(&rtp_session); + + rtp_test_end_call(&session); + + switch_socket_close(sock_rtp); + + pcap_close(pcap); + + switch_yield(1000 * 1000); + } + FST_TEST_END() +#endif + + FST_TEST_BEGIN(test_rtp_media_timeout) + { + switch_core_session_t *session = NULL; + switch_status_t status; + uint32_t plen = SWITCH_RTP_HEADER_LEN; + char rpacket[SWITCH_RECOMMENDED_BUFFER_SIZE]; + switch_payload_t pt = { 0 }; + switch_frame_flag_t frameflags = { 0 }; + int x = 0; + switch_frame_t *write_frame; + pcap_t *pcap; + const unsigned char *packet; + char errbuf[PCAP_ERRBUF_SIZE]; + struct pcap_pkthdr pcap_header; + const struct sniff_ip *ip; /* The IP header */ + int size_ip, jump_over; + struct timeval prev_ts = { 0 }; + switch_socket_t *sock_rtp = NULL; + switch_sockaddr_t *sock_addr = NULL; + const char *str_err; + + status = rtp_test_start_call(&session); + fst_requires(status == SWITCH_STATUS_SUCCESS); + fst_requires(session); + + switch_event_bind("", SWITCH_EVENT_ALL, SWITCH_EVENT_SUBCLASS_ANY, event_handler, NULL); + + pcap = pcap_open_offline_with_tstamp_precision("pcap/milliwatt.pcmu.rtp.pcap", PCAP_TSTAMP_PRECISION_MICRO, errbuf); + fst_requires(pcap); + + switch_core_media_set_rtp_flag(session, SWITCH_MEDIA_TYPE_AUDIO, SWITCH_RTP_FLAG_ENABLE_RTCP); + + rtp_session = switch_core_media_get_rtp_session(session, SWITCH_MEDIA_TYPE_AUDIO); + fst_requires(rtp_session); + + rtp_test_init_frame(&write_frame, &session); + + switch_rtp_clear_flag(rtp_session, SWITCH_RTP_FLAG_PAUSE); + + if (switch_socket_create(&sock_rtp, AF_INET, SOCK_DGRAM, 0, switch_core_session_get_pool(session)) != SWITCH_STATUS_SUCCESS) { + fst_requires(0); /*exit*/ + } + + switch_sockaddr_new(&sock_addr, rx_host, audio_rx_port, switch_core_session_get_pool(session)); + fst_requires(sock_addr); + + switch_rtp_set_remote_address(rtp_session, tx_host, switch_sockaddr_get_port(sock_addr), 0, SWITCH_FALSE, &str_err); + switch_rtp_reset(rtp_session); + + /* send 3 packets then wait and expect RTP timeout */ + while ((packet = pcap_next(pcap, &pcap_header)) && x < 3) { + /*assume only UDP/RTP packets in the pcap*/ + uint32_t rcvd_datalen = pcap_header.caplen; + size_t len; + switch_size_t tmp_len; + + int diff_us = (pcap_header.ts.tv_sec-prev_ts.tv_sec)*1000000+(pcap_header.ts.tv_usec-prev_ts.tv_usec); + if (diff_us > 0) { + switch_log_printf(SWITCH_CHANNEL_SESSION_LOG(session), SWITCH_LOG_DEBUG, "SENT pkt diff: %d us\n", diff_us); + usleep(diff_us); + } + + x++; + + prev_ts = pcap_header.ts; + + len = pcap_header.caplen; + + if (len <= 42) { + continue; + } + + ip = (struct sniff_ip*)(packet + 14); + size_ip = IP_HL(ip) * 4; + + jump_over = 14 /*SIZE_ETHERNET*/ + size_ip /*IP HDR size*/ + 8 /* UDP HDR SIZE */; /* jump 42 bytes over network layers/headers */ + packet += jump_over; + + if (packet[0] == 0x80 && packet[1] == 0 /*PCMU*/) { + int16_t *seq = (int16_t *)packet + 1; + plen = len - jump_over; + tmp_len = plen; + switch_log_printf(SWITCH_CHANNEL_SESSION_LOG(session), SWITCH_LOG_DEBUG, "Sent RTP. Packet size = [%u] seq = [%d]\n", plen, htons(*seq)); + if (switch_socket_sendto(sock_rtp, sock_addr, MSG_CONFIRM, (const char*)packet, &tmp_len) != SWITCH_STATUS_SUCCESS) { + fst_requires(0); + } + } + + status = switch_rtp_read(rtp_session, (void *)&rpacket, &rcvd_datalen, &pt, &frameflags, io_flags); + if (pt == SWITCH_RTP_CNG_PAYLOAD /*timeout*/) { + switch_log_printf(SWITCH_CHANNEL_SESSION_LOG(session), SWITCH_LOG_DEBUG, "read CNG, skip\n"); + continue; + } + + fst_requires(status == SWITCH_STATUS_SUCCESS); + fst_requires(rcvd_datalen == plen - SWITCH_RTP_HEADER_LEN); + } + + x = 150; /* 3 seconds max */ + while (x || !got_media_timeout) { + uint32_t rcvd_datalen; + status = switch_rtp_read(rtp_session, (void *)&rpacket, &rcvd_datalen, &pt, &frameflags, io_flags); + if (pt == SWITCH_RTP_CNG_PAYLOAD /*timeout*/) { + switch_log_printf(SWITCH_CHANNEL_SESSION_LOG(session), SWITCH_LOG_DEBUG, "read CNG, skip\n"); + } + switch_yield(20 * 1000); + fst_requires(status == SWITCH_STATUS_SUCCESS); + x--; + } + + if (write_frame) switch_frame_free(&write_frame); + + switch_rtp_destroy(&rtp_session); + + rtp_test_end_call(&session); + + switch_socket_close(sock_rtp); + + pcap_close(pcap); + + fst_check(got_media_timeout); + } + FST_TEST_END() +} +FST_SUITE_END() +} +FST_CORE_END() + diff --git a/tests/unit/switch_sip.c b/tests/unit/switch_sip.c index bcb00eac2b6..b535823e121 100644 --- a/tests/unit/switch_sip.c +++ b/tests/unit/switch_sip.c @@ -1,12 +1,21 @@ #include #include +int timeout_sec = 10; +switch_interval_time_t delay_start_ms = 5000; + FST_CORE_DB_BEGIN("./conf_sip") { FST_SUITE_BEGIN(switch_sip) { FST_SETUP_BEGIN() { + /* Give mod_sofia time to spinup profile threads */ + if (delay_start_ms) { + switch_sleep(delay_start_ms * 1000); + delay_start_ms = 0; + } + fst_requires_module("mod_sofia"); fst_requires_module("mod_hash"); } @@ -24,7 +33,7 @@ FST_SUITE_BEGIN(switch_sip) const char *data = "eyJhbGciOiJFUzI1NiIsInBwdCI6InNoYWtlbiI;info="; char *originate_str = switch_mprintf("{sip_h_Identity=%s}sofia/gateway/test_gateway/+15553332901", data); - switch_ivr_originate(NULL, &session, &cause, originate_str, 2, NULL, NULL, NULL, NULL, NULL, SOF_NONE, NULL, NULL); + switch_ivr_originate(NULL, &session, &cause, originate_str, timeout_sec, NULL, NULL, NULL, NULL, NULL, SOF_NONE, NULL, NULL); switch_safe_free(originate_str); fst_requires(session); @@ -60,7 +69,7 @@ FST_SUITE_BEGIN(switch_sip) const char *data = "eyJhbGciOiJFUzI1NiIsInBwdCI6InNoYWtlbiI;info=;alg=ES256;ppt=shaken"; char *originate_str = switch_mprintf("{sip_h_Identity=%s}sofia/gateway/test_gateway/+15553332901", data); - switch_ivr_originate(NULL, &session, &cause, originate_str, 2, NULL, NULL, NULL, NULL, NULL, SOF_NONE, NULL, NULL); + switch_ivr_originate(NULL, &session, &cause, originate_str, timeout_sec, NULL, NULL, NULL, NULL, NULL, SOF_NONE, NULL, NULL); switch_safe_free(originate_str); fst_requires(session); diff --git a/w32/Library/FreeSwitchCore.2017.vcxproj b/w32/Library/FreeSwitchCore.2017.vcxproj index 9d7098ee5e0..642a01a259c 100644 --- a/w32/Library/FreeSwitchCore.2017.vcxproj +++ b/w32/Library/FreeSwitchCore.2017.vcxproj @@ -311,6 +311,7 @@ if not exist "$(OutDir)fonts" xcopy "$(SolutionDir)fonts\*.*" "$(OutDir)fonts\" + Create Create @@ -407,6 +408,7 @@ if not exist "$(OutDir)fonts" xcopy "$(SolutionDir)fonts\*.*" "$(OutDir)fonts\" + @@ -742,6 +744,7 @@ if not exist "$(OutDir)fonts" xcopy "$(SolutionDir)fonts\*.*" "$(OutDir)fonts\" + @@ -797,10 +800,6 @@ if not exist "$(OutDir)fonts" xcopy "$(SolutionDir)fonts\*.*" "$(OutDir)fonts\" {eef031cb-fed8-451e-a471-91ec8d4f6750} false - - {f057da7f-79e5-4b00-845c-ef446ef055e3} - false - {f6c55d93-b927-4483-bb69-15aef3dd2dff} false diff --git a/w32/Setup/Setup.2017.wixproj b/w32/Setup/Setup.2017.wixproj index 8b6b616b2da..dd745e8438a 100644 --- a/w32/Setup/Setup.2017.wixproj +++ b/w32/Setup/Setup.2017.wixproj @@ -385,14 +385,6 @@ Binaries;Content;Satellites INSTALLFOLDER - - mod_unimrcp - {d07c378a-f5f7-438f-adf3-4ac4fb1883cd} - True - True - Binaries;Content;Satellites - INSTALLFOLDER - mod_amr {8deb383c-4091-4f42-a56f-c9e46d552d79} @@ -529,14 +521,6 @@ Binaries;Content;Satellites INSTALLFOLDER - - mod_dingaling - {ffaa4c52-3a53-4f99-90c1-d59d1f0427f3} - True - True - Binaries;Content;Satellites - INSTALLFOLDER - mod_gsmopen {74b120ff-6935-4dfe-a142-cdb6bea99c90} diff --git a/w32/libks-version.props b/w32/libks-version.props index d3880e33c12..c6845777cc7 100644 --- a/w32/libks-version.props +++ b/w32/libks-version.props @@ -4,7 +4,7 @@ - 1.7.0 + 1.8.0 true