summaryrefslogtreecommitdiff
path: root/protocols/Telegram/tgl/contrib
diff options
context:
space:
mode:
Diffstat (limited to 'protocols/Telegram/tgl/contrib')
-rw-r--r--protocols/Telegram/tgl/contrib/vs/config.bat524
-rw-r--r--protocols/Telegram/tgl/contrib/vs/generate.vcxproj188
-rw-r--r--protocols/Telegram/tgl/contrib/vs/generate.vcxproj.filters39
-rw-r--r--protocols/Telegram/tgl/contrib/vs/tgl.sln52
-rw-r--r--protocols/Telegram/tgl/contrib/vs/tgl.vcxproj251
-rw-r--r--protocols/Telegram/tgl/contrib/vs/tgl.vcxproj.filters153
-rw-r--r--protocols/Telegram/tgl/contrib/vs/tgl.vcxproj.user4
-rw-r--r--protocols/Telegram/tgl/contrib/vs/wingetopt.c82
-rw-r--r--protocols/Telegram/tgl/contrib/vs/wingetopt.h32
9 files changed, 1325 insertions, 0 deletions
diff --git a/protocols/Telegram/tgl/contrib/vs/config.bat b/protocols/Telegram/tgl/contrib/vs/config.bat
new file mode 100644
index 0000000000..8f51e40cf2
--- /dev/null
+++ b/protocols/Telegram/tgl/contrib/vs/config.bat
@@ -0,0 +1,524 @@
+@echo off
+setlocal enabledelayedexpansion
+set PACKAGE_NAME="telegram-cli"
+set PACKAGE_TARNAME="telegram-cli"
+set PACKAGE_VERSION="1.0"
+set PACKAGE_STRING="!PACKAGE_TARNAME:~1,-1! %PACKAGE_VERSION:~1%"
+set PACKAGE_BUGREPORT=""
+set PACKAGE_URL=""
+
+set SRC_FOLDER=..\..
+set SOURCE_LIST=()
+set AUTO_FOLDER=%SRC_FOLDER%\auto
+set BIN_FOLDER=bin
+set LIB_FOLDER=lib
+set DEFAULT_OUT_FOLDER=build
+set OUT_PATH=
+
+set GEN_TOOL=generate.exe
+set PARSER_TOOL=%SRC_FOLDER%\tl-parser\contrib\vs\build\Release\tl-parser.exe
+
+set CONFIG_HEADER_IN=%SRC_FOLDER%\config.h.in
+set CONFIG_HEADER=%SRC_FOLDER%\config.h
+
+set /p SCHEME_TL=<%SRC_FOLDER%\scheme.tl
+set SCHEME_TL=%SRC_FOLDER%\%SCHEME_TL%
+
+set /p ENCRYPTED_SCHEME_TL=<%SRC_FOLDER%\encrypted_scheme.tl
+set ENCRYPTED_SCHEME_TL=%SRC_FOLDER%\%ENCRYPTED_SCHEME_TL%
+
+set BINLOG_TL=%SRC_FOLDER%\binlog.tl
+set MTPROTO_TL=%SRC_FOLDER%\mtproto.tl
+set APPEND_TL=%SRC_FOLDER%\append.tl
+set CONSTANTS_HEADER=constants.h
+
+
+::#################################################################################################################################################
+:parse_args
+if not "%1"=="" (
+ if "%1"=="-o" (
+ set OUT_PATH=%2
+ )
+ if "%1"=="--gen-config" (
+ set /A GEN_CONFIG=1
+ )
+ if "%1"=="--gen-scheme" (
+ set /A GEN_SCHEME=1
+ )
+ if "%1"=="-debug" (
+ set /A DEBUG=1
+ set PARSER_TOOL=%PARSER_TOOL:Release=Debug%
+ )
+ if "%1"=="--parser-path" (
+ set PARSER_TOOL=%2
+ )
+ if "%1"=="--help" (
+ echo TGL Config
+ echo Usage:
+ echo --gen-config generate config.h
+ echo --gen-scheme generate Telegram API scheme headers and source files
+ echo --parser-path path to tl-parser.exe
+ echo -debug debuge mode
+ exit /b 0
+ )
+
+ shift
+ goto :parse_args
+)
+
+if {%OUT_PATH%}=={} (
+ set OUT_PATH=%DEFAULT_OUT_FOLDER%
+)
+::Make output folder if not exists
+if not exist %OUT_PATH% mkdir %OUT_PATH%
+
+
+::Copy source files to the output folder
+for %%i in %SOURCE_LIST% do (
+ if not exist %OUT_PATH%\%%i (
+ echo |set /p=Copying file: %%i
+ copy %%i %OUT_PATH%\%%i 1>NUL && (
+ echo Done
+ ) || (
+ echo Failed
+ )
+ )
+)
+
+::Generate config.h
+if defined GEN_CONFIG (
+ if not exist %CONFIG_HEADER% call :gen_config %CONFIG_HEADER%
+)
+
+
+::Generate Telegram API scheme source files
+if defined GEN_SCHEME (
+ set /a ERR_ENC=0
+
+ ::Check if tl-parser.exe exists
+ if not exist %PARSER_TOOL% (
+ echo Error: Cannot find %PARSER_TOOL%
+ exit /b 1
+ )
+
+ ::Check if generate.exe exists
+ set "GEN_TOOL=%OUT_PATH%\%BIN_FOLDER%\%GEN_TOOL%"
+ if not exist !GEN_TOOL! (
+ echo Error: Cannot find !GEN_TOOL!
+ exit /b 1
+ )
+
+ ::Make auto folder
+ if not exist %AUTO_FOLDER% mkdir %AUTO_FOLDER%
+
+ ::Generate scheme.tl
+ echo |set /p=Generating scheme.tl
+ type %SCHEME_TL% %ENCRYPTED_SCHEME_TL% %ENCRYPTED_SCHEME% %BINLOG_TL% %MTPROTO_TL% %APPEND_TL% 2>NUL > %AUTO_FOLDER%\scheme.tl
+ echo Done
+
+ ::Generate scheme2.tl
+ echo |set /p=Generating scheme2.tl
+ %PARSER_TOOL% -E %AUTO_FOLDER%\scheme.tl 2> %AUTO_FOLDER%\scheme2.tl
+ if not !ERRORLEVEL!==0 (
+ echo Failed
+ exit /b 1
+ ) else (
+ echo Done
+ )
+
+ ::Generate scheme.tlo
+ echo |set /p=Generating scheme.tlo
+ "%PARSER_TOOL%" -e "%AUTO_FOLDER%\scheme.tlo" %AUTO_FOLDER%\scheme.tl
+ if not !ERRORLEVEL!==0 (
+ echo Failed
+ exit /b 1
+ ) else (
+ echo Done
+ )
+
+ ::Generate constants.h
+ echo |set /p=Generating constants.h
+ call :gen_constants %AUTO_FOLDER%\scheme2.tl > %AUTO_FOLDER%\constants.h
+ if not !ERRORLEVEL!==0 (
+ echo Failed
+ exit /b 1
+ ) else (
+ echo Done
+ )
+
+
+ ::Generate auto-*.h
+ echo |set /p=Generating auto-skip.h
+ !GEN_TOOL! -g skip-header %AUTO_FOLDER%\scheme.tlo > %AUTO_FOLDER%\auto-skip.h
+ if not !ERRORLEVEL!==0 (
+ set /a ERR_ENC=!ERRORLEVEL!
+ if exist %AUTO_FOLDER%\auto-skip.h del /q /f %AUTO_FOLDER%\auto-skip.h
+ echo Failed
+ ) else (
+ echo Done
+ )
+
+ echo |set /p=Generating auto-fetch.h
+ !GEN_TOOL! -g fetch-header %AUTO_FOLDER%\scheme.tlo > %AUTO_FOLDER%\auto-fetch.h
+ if not !ERRORLEVEL!==0 (
+ set /a ERR_ENC=!ERRORLEVEL!
+ if exist %AUTO_FOLDER%\auto-fetch.h del /q /f %AUTO_FOLDER%\auto-fetch.h
+ echo Failed
+ ) else (
+ echo Done
+ )
+
+ echo |set /p=Generating auto-store.h
+ !GEN_TOOL! -g store-header %AUTO_FOLDER%\scheme.tlo > %AUTO_FOLDER%\auto-store.h
+ if not !ERRORLEVEL!==0 (
+ set /a ERR_ENC=!ERRORLEVEL!
+ if exist %AUTO_FOLDER%\auto-store.h del /q /f %AUTO_FOLDER%\auto-store.h
+ echo Failed
+ ) else (
+ echo Done
+ )
+
+ echo |set /p=Generating auto-autocomplete.h
+ !GEN_TOOL! -g autocomplete-header %AUTO_FOLDER%\scheme.tlo > %AUTO_FOLDER%\auto-autocomplete.h
+ if not !ERRORLEVEL!==0 (
+ set /a ERR_ENC=!ERRORLEVEL!
+ if exist %AUTO_FOLDER%\auto-autocomplete.h del /q /f %AUTO_FOLDER%\auto-autocomplete.h
+ echo Failed
+ ) else (
+ echo Done
+ )
+
+ echo |set /p=Generating auto-types.h
+ !GEN_TOOL! -g types-header %AUTO_FOLDER%\scheme.tlo > %AUTO_FOLDER%\auto-types.h
+ if not !ERRORLEVEL!==0 (
+ set /a ERR_ENC=!ERRORLEVEL!
+ if exist %AUTO_FOLDER%\auto-types.h del /q /f %AUTO_FOLDER%\auto-types.h
+ echo Failed
+ ) else (
+ echo Done
+ )
+
+ echo |set /p=Generating auto-fetch-ds.h
+ !GEN_TOOL! -g fetch-ds-header %AUTO_FOLDER%\scheme.tlo > %AUTO_FOLDER%\auto-fetch-ds.h
+ if not !ERRORLEVEL!==0 (
+ set /a ERR_ENC=!ERRORLEVEL!
+ if exist %AUTO_FOLDER%\auto-fetch-ds.h del /q /f %AUTO_FOLDER%\auto-fetch-ds.h
+ echo Failed
+ ) else (
+ echo Done
+ )
+
+ echo |set /p=Generating auto-free-ds.h
+ !GEN_TOOL! -g free-ds-header %AUTO_FOLDER%\scheme.tlo > %AUTO_FOLDER%\auto-free-ds.h
+ if not !ERRORLEVEL!==0 (
+ set /a ERR_ENC=!ERRORLEVEL!
+ if exist %AUTO_FOLDER%\auto-free-ds.h del /q /f %AUTO_FOLDER%\auto-free-ds.h
+ echo Failed
+ ) else (
+ echo Done
+ )
+
+ echo |set /p=Generating auto-store-ds.h
+ !GEN_TOOL! -g store-ds-header %AUTO_FOLDER%\scheme.tlo > %AUTO_FOLDER%\auto-store-ds.h
+ if not !ERRORLEVEL!==0 (
+ set /a ERR_ENC=!ERRORLEVEL!
+ if exist %AUTO_FOLDER%\auto-store-ds.h del /q /f %AUTO_FOLDER%\auto-store-ds.h
+ echo Failed
+ ) else (
+ echo Done
+ )
+
+ echo |set /p=Generating auto-print-ds.h
+ !GEN_TOOL! -g print-ds-header %AUTO_FOLDER%\scheme.tlo > %AUTO_FOLDER%\auto-print-ds.h
+ if not !ERRORLEVEL!==0 (
+ set /a ERR_ENC=!ERRORLEVEL!
+ if exist %AUTO_FOLDER%\auto-print-ds.h del /q /f %AUTO_FOLDER%\auto-print-ds.h
+ echo Failed
+ ) else (
+ echo Done
+ )
+
+
+ ::Generate auto-*.c
+ echo |set /p=Generating auto-skip.c
+ !GEN_TOOL! -g skip %AUTO_FOLDER%\scheme.tlo > %AUTO_FOLDER%\auto-skip.c
+ if not !ERRORLEVEL!==0 (
+ set /a ERR_ENC=!ERRORLEVEL!
+ if exist %AUTO_FOLDER%\auto-skip.c del /q /f %AUTO_FOLDER%\auto-skip.c
+ echo Failed
+ ) else (
+ echo Done
+ )
+
+ echo |set /p=Generating auto-fetch.c
+ !GEN_TOOL! -g fetch %AUTO_FOLDER%\scheme.tlo > %AUTO_FOLDER%\auto-fetch.c
+ if not !ERRORLEVEL!==0 (
+ set /a ERR_ENC=!ERRORLEVEL!
+ if exist %AUTO_FOLDER%\auto-fetch.c del /q /f %AUTO_FOLDER%\auto-fetch.c
+ echo Failed
+ ) else (
+ echo Done
+ )
+
+ echo |set /p=Generating auto-store.c
+ !GEN_TOOL! -g store %AUTO_FOLDER%\scheme.tlo > %AUTO_FOLDER%\auto-store.c
+ if not !ERRORLEVEL!==0 (
+ set /a ERR_ENC=!ERRORLEVEL!
+ if exist %AUTO_FOLDER%\auto-store.c del /q /f %AUTO_FOLDER%\auto-store.c
+ echo Failed
+ ) else (
+ echo Done
+ )
+
+ echo |set /p=Generating auto-autocomplete.c
+ !GEN_TOOL! -g autocomplete %AUTO_FOLDER%\scheme.tlo > %AUTO_FOLDER%\auto-autocomplete.c
+ if not !ERRORLEVEL!==0 (
+ set /a ERR_ENC=!ERRORLEVEL!
+ if exist %AUTO_FOLDER%\auto-autocomplete.c del /q /f %AUTO_FOLDER%\auto-autocomplete.c
+ echo Failed
+ ) else (
+ echo Done
+ )
+
+ echo |set /p=Generating auto-types.c
+ !GEN_TOOL! -g types %AUTO_FOLDER%\scheme.tlo > %AUTO_FOLDER%\auto-types.c
+ if not !ERRORLEVEL!==0 (
+ set /a ERR_ENC=!ERRORLEVEL!
+ if exist %AUTO_FOLDER%\auto-types.c del /q /f %AUTO_FOLDER%\auto-types.c
+ echo Failed
+ ) else (
+ echo Done
+ )
+
+ echo |set /p=Generating auto-fetch-ds.c
+ !GEN_TOOL! -g fetch-ds %AUTO_FOLDER%\scheme.tlo > %AUTO_FOLDER%\auto-fetch-ds.c
+ if not !ERRORLEVEL!==0 (
+ set /a ERR_ENC=!ERRORLEVEL!
+ if exist %AUTO_FOLDER%\auto-fetch-ds.c del /q /f %AUTO_FOLDER%\auto-fetch-ds.c
+ echo Failed
+ ) else (
+ echo Done
+ )
+
+ echo |set /p=Generating auto-free-ds.c
+ !GEN_TOOL! -g free-ds %AUTO_FOLDER%\scheme.tlo > %AUTO_FOLDER%\auto-free-ds.c
+ if not !ERRORLEVEL!==0 (
+ set /a ERR_ENC=!ERRORLEVEL!
+ if exist %AUTO_FOLDER%\auto-free-ds.c del /q /f %AUTO_FOLDER%\auto-free-ds.c
+ echo Failed
+ ) else (
+ echo Done
+ )
+
+ echo |set /p=Generating auto-store-ds.c
+ !GEN_TOOL! -g store-ds %AUTO_FOLDER%\scheme.tlo > %AUTO_FOLDER%\auto-store-ds.c
+ if not !ERRORLEVEL!==0 (
+ set /a ERR_ENC=!ERRORLEVEL!
+ if exist %AUTO_FOLDER%\auto-store-ds.c del /q /f %AUTO_FOLDER%\auto-store-ds.c
+ echo Failed
+ ) else (
+ echo Done
+ )
+
+ echo |set /p=Generating auto-print-ds.c
+ !GEN_TOOL! -g print-ds %AUTO_FOLDER%\scheme.tlo > %AUTO_FOLDER%\auto-print-ds.c
+ if not !ERRORLEVEL!==0 (
+ set /a ERR_ENC=!ERRORLEVEL!
+ if exist %AUTO_FOLDER%\auto-print-ds.c del /q /f %AUTO_FOLDER%\auto-print-ds.c
+ echo Failed
+ ) else (
+ echo Done
+ )
+ set /a ERRORLEVEL=!ERR_ENC!
+)
+
+::Script End
+exit /b !ERRORLEVEL!
+
+::#################################################################################################################################################
+:: Script Functions
+::#################################################################################################################################################
+
+:find_and_replace <file> <findString> <replaceString>
+ set file_path=%1
+ set find_str=%2
+ set "find_str=!find_str:~1,-1!"
+ set replace_str=%3 %4
+ set "replace_str=!replace_str:~1,-2!"
+
+ for /f "delims=" %%i in ('type "%file_path%" ^| find /n /v "" ^& break ^> "%file_path%" ') do (
+ set "line=%%i"
+ setlocal enableDelayedExpansion
+ set "line=!line:*]%find_str%=%replace_str%!"
+ set "line=!line:*]=!"
+ >>%file_path% echo(!line!
+ endlocal
+ )
+ exit /B %ERRORLEVEL%
+
+:gen_config <output folder>
+ :rem Copy config.h.in to the output folder
+ echo |set /p=Copying file: %CONFIG_HEADER_in%
+ copy %CONFIG_HEADER_IN% %1 1>NUL && (
+ echo Done
+ ) || (
+ echo Failed
+ exit /B %ERRORLEVEL%
+ )
+
+ echo |set /p=Configurating file: config.h
+ call :find_and_replace %1 "#undef PACKAGE_BUGREPORT" "#define PACKAGE_BUGREPORT %PACKAGE_BUGREPORT%"
+ call :find_and_replace %1 "#undef PACKAGE_NAME" "#define PACKAGE_NAME %PACKAGE_NAME%"
+ call :find_and_replace %1 "#undef PACKAGE_STRING" "#define PACKAGE_STRING %PACKAGE_STRING%"
+ call :find_and_replace %1 "#undef PACKAGE_TARNAME" "#define PACKAGE_TARNAME %PACKAGE_TARNAME%"
+ call :find_and_replace %1 "#undef PACKAGE_URL" "#define PACKAGE_URL %PACKAGE_URL%"
+ call :find_and_replace %1 "#undef PACKAGE_VERSION" "#define PACKAGE_VERSION %PACKAGE_VERSION%"
+
+ call :find_and_replace %1 "#undef EVENT_V2" "#define EVENT_V2 1"
+ call :find_and_replace %1 "#undef HAVE_FCNTL_H" "#define HAVE_FCNTL_H 1"
+ call :find_and_replace %1 "#undef HAVE_INTTYPES_H" "#define HAVE_INTTYPES_H 1"
+ call :find_and_replace %1 "#undef HAVE_LIBM" "#define HAVE_LIBM 1"
+ call :find_and_replace %1 "#undef HAVE_LIBZ" "#define HAVE_LIBZ 1"
+ call :find_and_replace %1 "#undef HAVE_MALLOC_H" "#define HAVE_MALLOC_H 1"
+ call :find_and_replace %1 "#undef HAVE_MALLOC" "#define HAVE_MALLOC 1"
+ call :find_and_replace %1 "#undef HAVE_MEMMOVE" "#define HAVE_MEMMOVE 1"
+ call :find_and_replace %1 "#undef HAVE_MEMORY_H" "#define HAVE_MEMORY_H 1"
+ call :find_and_replace %1 "#undef HAVE_MEMSET" "#define HAVE_MEMSET 1"
+ call :find_and_replace %1 "#undef HAVE_MKDIR" "#define HAVE_MKDIR 1"
+ call :find_and_replace %1 "#undef HAVE_REALLOC" "#define HAVE_REALLOC 1"
+ call :find_and_replace %1 "#undef HAVE_SELECT" "#define HAVE_SELECT 1"
+ call :find_and_replace %1 "#undef HAVE_SOCKET" "#define HAVE_SOCKET 1"
+ call :find_and_replace %1 "#undef HAVE_STDINT_H" "#define HAVE_STDINT_H 1"
+ call :find_and_replace %1 "#undef HAVE_STDLIB_H" "#define HAVE_STDLIB_H 1"
+ call :find_and_replace %1 "#undef HAVE_STRDUP" "#define HAVE_STRDUP 1"
+ call :find_and_replace %1 "#undef HAVE_STRING_H" "#define HAVE_STRING_H 1"
+ call :find_and_replace %1 "#undef HAVE_STRNDUP" "#define HAVE_STRNDUP 1"
+ call :find_and_replace %1 "#undef HAVE_SYS_STAT_H" "#define HAVE_SYS_STAT_H 1"
+ call :find_and_replace %1 "#undef HAVE_SYS_TYPES_H" "#define HAVE_SYS_TYPES_H 1"
+ call :find_and_replace %1 "#undef STDC_HEADERS" "#define STDC_HEADERS 1"
+ call :find_and_replace %1 "#undef gid_t" "#define gid_t int"
+ call :find_and_replace %1 "#undef uid_t" "#define uid_t int"
+ call :find_and_replace %1 "#undef inline" "#define inline __inline"
+ call :find_and_replace %1 "#undef" "// #undef"
+ if %ERRORLEVEL% == 0 echo Done
+ if not %ERRORLEVEL% == 0 (
+ echo Failed
+ if exist %1\%CONFIG_HEADER% del /q /f %1\%CONFIG_HEADER%
+ exit /b 1
+ )
+ exit /B 0
+
+:gen_constants <input file>
+ echo /*
+ echo This file is part of telegram-client.
+ echo.
+ echo Telegram-client is free software: you can redistribute it and/or modify
+ echo it under the terms of the GNU General Public License as published by
+ echo the Free Software Foundation, either version 2 of the License, or
+ echo (at your option) any later version.
+ echo.
+ echo Telegram-client is distributed in the hope that it will be useful,
+ echo but WITHOUT ANY WARRANTY; without even the implied warranty of
+ echo MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ echo GNU General Public License for more details.
+ echo.
+ echo You should have received a copy of the GNU General Public License
+ echo along with this telegram-client. If not, see ^<http://www.gnu.org/licenses/^>.
+ echo.
+ echo Copyright Vitaly Valtman 2013
+ echo */
+ echo #ifndef CONSTANTS_H
+ echo #define CONSTANTS_H
+
+ setlocal EnableDelayedExpansion
+ for /F "tokens=1" %%A in (%1) do (
+ call :split %%A # a
+ if %ERRORLEVEL% == 0 (
+
+ call :sub a[0]
+ if not "!h[%a[1]%]!"=="" (
+ echo ERROR: Duplicate magic %a[1]% for define %a[0]% and !h[%a[1]%]! 1>&2
+ exit /b 1
+ )
+
+ set h[!a[1]!]=!a[0]!
+ echo #define CODE_!a[0]! 0x!a[1]!
+ )
+ )
+ endlocal
+ echo #endif
+ exit /b0
+
+
+:split <string> <delim> <resultVar>
+ for /F "tokens=1,2 delims=%2" %%a in ("%1") do (
+ if "%%a"=="" exit /b 1
+ set %3[0]=%%a
+ if "%%b"=="" exit /b 1
+ set %3[1]=%%b
+ )
+ exit /b0
+
+
+:sub <string>
+ set /A len= 0
+ call :strlen %%1 len
+ (
+ setlocal EnableDelayedExpansion
+ set "substr="
+ for /l %%a IN (0,1,!len!) DO (
+ set Char=!%1:~%%a,1!
+ if "!Char!" EQU "A" SET Char=_a
+ if "!Char!" EQU "B" SET Char=_b
+ if "!Char!" EQU "C" SET Char=_c
+ if "!Char!" EQU "D" SET Char=_d
+ if "!Char!" EQU "E" SET Char=_e
+ if "!Char!" EQU "F" SET Char=_f
+ if "!Char!" EQU "G" SET Char=_g
+ if "!Char!" EQU "H" SET Char=_h
+ if "!Char!" EQU "I" SET Char=_i
+ if "!Char!" EQU "J" SET Char=_j
+ if "!Char!" EQU "K" SET Char=_k
+ if "!Char!" EQU "L" SET Char=_l
+ if "!Char!" EQU "M" SET Char=_m
+ if "!Char!" EQU "N" SET Char=_n
+ if "!Char!" EQU "O" SET Char=_o
+ if "!Char!" EQU "P" SET Char=_p
+ if "!Char!" EQU "Q" SET Char=_q
+ if "!Char!" EQU "R" SET Char=_r
+ if "!Char!" EQU "S" SET Char=_s
+ if "!Char!" EQU "T" SET Char=_t
+ if "!Char!" EQU "U" SET Char=_u
+ if "!Char!" EQU "V" SET Char=_v
+ if "!Char!" EQU "W" SET Char=_w
+ if "!Char!" EQU "X" SET Char=_x
+ if "!Char!" EQU "Y" SET Char=_y
+ if "!Char!" EQU "Z" SET Char=_z
+ if "!Char!" EQU "." SET Char=_
+
+ set substr=!substr!!Char!
+ )
+ )
+ (
+ endlocal
+ set "%~1=%substr%"
+ exit /b
+ )
+
+:strlen <stringVar> <resultVar>
+ (
+ setlocal EnableDelayedExpansion
+ set "s=!%~1!#"
+ set "len=0"
+ for %%P in (4096 2048 1024 512 256 128 64 32 16 8 4 2 1) do (
+ if "!s:~%%P,1!" NEQ "" (
+ set /a "len+=%%P"
+ set "s=!s:~%%P!"
+ )
+ )
+ )
+ (
+ endlocal
+ set "%~2=%len%"
+ exit /b
+ )
diff --git a/protocols/Telegram/tgl/contrib/vs/generate.vcxproj b/protocols/Telegram/tgl/contrib/vs/generate.vcxproj
new file mode 100644
index 0000000000..a70fb4bf27
--- /dev/null
+++ b/protocols/Telegram/tgl/contrib/vs/generate.vcxproj
@@ -0,0 +1,188 @@
+<?xml version="1.0" encoding="utf-8"?>
+<Project DefaultTargets="Build" ToolsVersion="14.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
+ <ItemGroup Label="ProjectConfigurations">
+ <ProjectConfiguration Include="Debug|Win32">
+ <Configuration>Debug</Configuration>
+ <Platform>Win32</Platform>
+ </ProjectConfiguration>
+ <ProjectConfiguration Include="Release|Win32">
+ <Configuration>Release</Configuration>
+ <Platform>Win32</Platform>
+ </ProjectConfiguration>
+ <ProjectConfiguration Include="Debug|x64">
+ <Configuration>Debug</Configuration>
+ <Platform>x64</Platform>
+ </ProjectConfiguration>
+ <ProjectConfiguration Include="Release|x64">
+ <Configuration>Release</Configuration>
+ <Platform>x64</Platform>
+ </ProjectConfiguration>
+ </ItemGroup>
+ <PropertyGroup Label="Globals">
+ <ProjectGuid>{03A484BF-4CF0-4290-9BD2-D649F0797703}</ProjectGuid>
+ <RootNamespace>generate</RootNamespace>
+ <WindowsTargetPlatformVersion>8.1</WindowsTargetPlatformVersion>
+ </PropertyGroup>
+ <Import Project="$(VCTargetsPath)\Microsoft.Cpp.Default.props" />
+ <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'" Label="Configuration">
+ <ConfigurationType>Application</ConfigurationType>
+ <UseDebugLibraries>true</UseDebugLibraries>
+ <PlatformToolset>v140</PlatformToolset>
+ <CharacterSet>Unicode</CharacterSet>
+ </PropertyGroup>
+ <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'" Label="Configuration">
+ <UseDebugLibraries>false</UseDebugLibraries>
+ <PlatformToolset>v140_xp</PlatformToolset>
+ <WholeProgramOptimization>true</WholeProgramOptimization>
+ <CharacterSet>Unicode</CharacterSet>
+ </PropertyGroup>
+ <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'" Label="Configuration">
+ <ConfigurationType>Application</ConfigurationType>
+ <UseDebugLibraries>true</UseDebugLibraries>
+ <PlatformToolset>v140</PlatformToolset>
+ <CharacterSet>MultiByte</CharacterSet>
+ </PropertyGroup>
+ <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'" Label="Configuration">
+ <ConfigurationType>Application</ConfigurationType>
+ <UseDebugLibraries>false</UseDebugLibraries>
+ <PlatformToolset>v140</PlatformToolset>
+ <WholeProgramOptimization>true</WholeProgramOptimization>
+ <CharacterSet>MultiByte</CharacterSet>
+ </PropertyGroup>
+ <Import Project="$(VCTargetsPath)\Microsoft.Cpp.props" />
+ <ImportGroup Label="ExtensionSettings">
+ </ImportGroup>
+ <ImportGroup Label="Shared">
+ </ImportGroup>
+ <ImportGroup Label="PropertySheets" Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">
+ <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
+ </ImportGroup>
+ <ImportGroup Label="PropertySheets" Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">
+ <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
+ </ImportGroup>
+ <ImportGroup Label="PropertySheets" Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">
+ <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
+ </ImportGroup>
+ <ImportGroup Label="PropertySheets" Condition="'$(Configuration)|$(Platform)'=='Release|x64'">
+ <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
+ </ImportGroup>
+ <PropertyGroup Label="UserMacros" />
+ <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">
+ <OutDir>build\$(Configuration)\</OutDir>
+ <IntDir>build\$(Configuration)\obj\generate\</IntDir>
+ <ExtensionsToDeleteOnClean>*.h;$(ExtensionsToDeleteOnClean)</ExtensionsToDeleteOnClean>
+ <IncludePath>$(VC_IncludePath);$(WindowsSDK_IncludePath);$(ProjectDir);</IncludePath>
+ </PropertyGroup>
+ <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">
+ <OutDir>build\$(Configuration)\</OutDir>
+ <IntDir>build\$(Configuration)\obj\generate\</IntDir>
+ <IncludePath>$(VC_IncludePath);$(WindowsSdk_71A_IncludePath);$(ProjectDir);</IncludePath>
+ </PropertyGroup>
+ <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">
+ <ExtensionsToDeleteOnClean>*.h;$(ExtensionsToDeleteOnClean)</ExtensionsToDeleteOnClean>
+ <OutDir>build\$(Platform)\$(Configuration)\</OutDir>
+ <IntDir>build\$(Platform)\$(Configuration)\obj\generate\</IntDir>
+ </PropertyGroup>
+ <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'">
+ <ExtensionsToDeleteOnClean>*.h;$(ExtensionsToDeleteOnClean)</ExtensionsToDeleteOnClean>
+ <OutDir>build\$(Platform)\$(Configuration)\</OutDir>
+ <IntDir>build\$(Platform)\$(Configuration)\obj\generate\</IntDir>
+ </PropertyGroup>
+ <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">
+ <ClCompile>
+ <WarningLevel>Level3</WarningLevel>
+ <Optimization>Disabled</Optimization>
+ <SDLCheck>true</SDLCheck>
+ <PreprocessorDefinitions>WIN32;HAVE_CONFIG_H;_CONSOLE;_DEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>
+ <AdditionalIncludeDirectories>%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
+ <RuntimeLibrary>MultiThreadedDebugDLL</RuntimeLibrary>
+ <CompileAs>CompileAsC</CompileAs>
+ <DisableLanguageExtensions>false</DisableLanguageExtensions>
+ </ClCompile>
+ <Link>
+ <GenerateDebugInformation>true</GenerateDebugInformation>
+ <OutputFile>$(OutDir)\bin\$(TargetName)$(TargetExt)</OutputFile>
+ <ProgramDatabaseFile>$(OutDir)\bin\$(TargetName).pdb</ProgramDatabaseFile>
+ <AdditionalLibraryDirectories>%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>
+ <AdditionalDependencies>zlibstat.lib;libeay32.lib;ssleay32.lib;%(AdditionalDependencies)</AdditionalDependencies>
+ <SubSystem>Console</SubSystem>
+ <ProfileGuidedDatabase>$(OutDir)\bin\$(TargetName).pgd</ProfileGuidedDatabase>
+ </Link>
+ <PreBuildEvent>
+ <Command>config.bat --gen-config -o $(OutDir)</Command>
+ </PreBuildEvent>
+ </ItemDefinitionGroup>
+ <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">
+ <ClCompile>
+ <WarningLevel>Level3</WarningLevel>
+ <Optimization>Disabled</Optimization>
+ <SDLCheck>true</SDLCheck>
+ <CompileAs>CompileAsC</CompileAs>
+ <AdditionalIncludeDirectories>%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
+ </ClCompile>
+ <Link>
+ <GenerateDebugInformation>true</GenerateDebugInformation>
+ <OutputFile>$(OutDir)\bin\$(TargetName)$(TargetExt)</OutputFile>
+ </Link>
+ <PreBuildEvent>
+ <Command>config.bat --gen-config -o $(OutDir)</Command>
+ </PreBuildEvent>
+ </ItemDefinitionGroup>
+ <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">
+ <ClCompile>
+ <WarningLevel>Level3</WarningLevel>
+ <Optimization>Full</Optimization>
+ <PreprocessorDefinitions>WIN32;HAVE_CONFIG_H
+;_CONSOLE;_CRT_NONSTDC_NO_DEPRECATE;ZLIB_WINAPI;%(PreprocessorDefinitions)</PreprocessorDefinitions>
+ <AdditionalIncludeDirectories>..\..\openssl\include;..\..\zlib;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
+ <CompileAs>CompileAsC</CompileAs>
+ <IntrinsicFunctions>true</IntrinsicFunctions>
+ <FunctionLevelLinking>true</FunctionLevelLinking>
+ </ClCompile>
+ <Link>
+ <EnableCOMDATFolding>true</EnableCOMDATFolding>
+ <OptimizeReferences>true</OptimizeReferences>
+ <OutputFile>$(OutDir)\bin\$(TargetName)$(TargetExt)</OutputFile>
+ <ProgramDatabaseFile>$(OutDir)\bin\$(TargetName).pdb</ProgramDatabaseFile>
+ <AdditionalLibraryDirectories>..\..\openssl\lib;..\..\zlib\contrib\vstudio\vc11\x86\ZlibStatReleaseWithoutAsm\;%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>
+ <AdditionalDependencies>zlibstat.lib;libeay32.lib;ssleay32.lib;%(AdditionalDependencies)</AdditionalDependencies>
+ <SubSystem>Console</SubSystem>
+ <ProfileGuidedDatabase>$(OutDir)\bin\$(TargetName).pgd</ProfileGuidedDatabase>
+ </Link>
+ <PreBuildEvent>
+ <Command>config.bat --gen-config -o $(OutDir)</Command>
+ </PreBuildEvent>
+ </ItemDefinitionGroup>
+ <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'">
+ <ClCompile>
+ <WarningLevel>Level3</WarningLevel>
+ <Optimization>MaxSpeed</Optimization>
+ <FunctionLevelLinking>true</FunctionLevelLinking>
+ <IntrinsicFunctions>true</IntrinsicFunctions>
+ <SDLCheck>true</SDLCheck>
+ <CompileAs>CompileAsC</CompileAs>
+ </ClCompile>
+ <Link>
+ <GenerateDebugInformation>true</GenerateDebugInformation>
+ <EnableCOMDATFolding>true</EnableCOMDATFolding>
+ <OptimizeReferences>true</OptimizeReferences>
+ <OutputFile>$(OutDir)\bin\$(TargetName)$(TargetExt)</OutputFile>
+ </Link>
+ <PreBuildEvent>
+ <Command>config.bat --gen-config -o $(OutDir)</Command>
+ </PreBuildEvent>
+ </ItemDefinitionGroup>
+ <ItemGroup>
+ <ClInclude Include="..\..\generate.h" />
+ <ClInclude Include="..\..\tools.h" />
+ <ClInclude Include="wingetopt.h" />
+ </ItemGroup>
+ <ItemGroup>
+ <ClCompile Include="..\..\generate.c" />
+ <ClCompile Include="..\..\tools.c" />
+ <ClCompile Include="wingetopt.c" />
+ </ItemGroup>
+ <Import Project="$(VCTargetsPath)\Microsoft.Cpp.targets" />
+ <ImportGroup Label="ExtensionTargets">
+ </ImportGroup>
+</Project> \ No newline at end of file
diff --git a/protocols/Telegram/tgl/contrib/vs/generate.vcxproj.filters b/protocols/Telegram/tgl/contrib/vs/generate.vcxproj.filters
new file mode 100644
index 0000000000..ed1998c59d
--- /dev/null
+++ b/protocols/Telegram/tgl/contrib/vs/generate.vcxproj.filters
@@ -0,0 +1,39 @@
+<?xml version="1.0" encoding="utf-8"?>
+<Project ToolsVersion="4.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
+ <ItemGroup>
+ <Filter Include="Source Files">
+ <UniqueIdentifier>{4FC737F1-C7A5-4376-A066-2A32D752A2FF}</UniqueIdentifier>
+ <Extensions>cpp;c;cc;cxx;def;odl;idl;hpj;bat;asm;asmx</Extensions>
+ </Filter>
+ <Filter Include="Header Files">
+ <UniqueIdentifier>{93995380-89BD-4b04-88EB-625FBE52EBFB}</UniqueIdentifier>
+ <Extensions>h;hh;hpp;hxx;hm;inl;inc;xsd</Extensions>
+ </Filter>
+ <Filter Include="Resource Files">
+ <UniqueIdentifier>{67DA6AB6-F800-4c08-8B7A-83BB121AAD01}</UniqueIdentifier>
+ <Extensions>rc;ico;cur;bmp;dlg;rc2;rct;bin;rgs;gif;jpg;jpeg;jpe;resx;tiff;tif;png;wav;mfcribbon-ms</Extensions>
+ </Filter>
+ </ItemGroup>
+ <ItemGroup>
+ <ClInclude Include="wingetopt.h">
+ <Filter>Header Files</Filter>
+ </ClInclude>
+ <ClInclude Include="..\..\generate.h">
+ <Filter>Header Files</Filter>
+ </ClInclude>
+ <ClInclude Include="..\..\tools.h">
+ <Filter>Header Files</Filter>
+ </ClInclude>
+ </ItemGroup>
+ <ItemGroup>
+ <ClCompile Include="wingetopt.c">
+ <Filter>Source Files</Filter>
+ </ClCompile>
+ <ClCompile Include="..\..\generate.c">
+ <Filter>Source Files</Filter>
+ </ClCompile>
+ <ClCompile Include="..\..\tools.c">
+ <Filter>Source Files</Filter>
+ </ClCompile>
+ </ItemGroup>
+</Project> \ No newline at end of file
diff --git a/protocols/Telegram/tgl/contrib/vs/tgl.sln b/protocols/Telegram/tgl/contrib/vs/tgl.sln
new file mode 100644
index 0000000000..063abfb0b6
--- /dev/null
+++ b/protocols/Telegram/tgl/contrib/vs/tgl.sln
@@ -0,0 +1,52 @@
+
+Microsoft Visual Studio Solution File, Format Version 12.00
+# Visual Studio 14
+VisualStudioVersion = 14.0.23107.0
+MinimumVisualStudioVersion = 10.0.40219.1
+Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "tgl", "tgl.vcxproj", "{C3106192-32AD-442F-A3A2-E3CFB63F0CF1}"
+ ProjectSection(ProjectDependencies) = postProject
+ {14022761-9F27-4A2D-B7EA-F41FB9B3274C} = {14022761-9F27-4A2D-B7EA-F41FB9B3274C}
+ {03A484BF-4CF0-4290-9BD2-D649F0797703} = {03A484BF-4CF0-4290-9BD2-D649F0797703}
+ EndProjectSection
+EndProject
+Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "tl-parser", "..\..\tl-parser\contrib\vs\tl-parser.vcxproj", "{14022761-9F27-4A2D-B7EA-F41FB9B3274C}"
+EndProject
+Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "generate", "generate.vcxproj", "{03A484BF-4CF0-4290-9BD2-D649F0797703}"
+EndProject
+Global
+ GlobalSection(SolutionConfigurationPlatforms) = preSolution
+ Debug|x64 = Debug|x64
+ Debug|x86 = Debug|x86
+ Release|x64 = Release|x64
+ Release|x86 = Release|x86
+ EndGlobalSection
+ GlobalSection(ProjectConfigurationPlatforms) = postSolution
+ {C3106192-32AD-442F-A3A2-E3CFB63F0CF1}.Debug|x64.ActiveCfg = Debug|x64
+ {C3106192-32AD-442F-A3A2-E3CFB63F0CF1}.Debug|x64.Build.0 = Debug|x64
+ {C3106192-32AD-442F-A3A2-E3CFB63F0CF1}.Debug|x86.ActiveCfg = Debug|Win32
+ {C3106192-32AD-442F-A3A2-E3CFB63F0CF1}.Debug|x86.Build.0 = Debug|Win32
+ {C3106192-32AD-442F-A3A2-E3CFB63F0CF1}.Release|x64.ActiveCfg = Release|x64
+ {C3106192-32AD-442F-A3A2-E3CFB63F0CF1}.Release|x64.Build.0 = Release|x64
+ {C3106192-32AD-442F-A3A2-E3CFB63F0CF1}.Release|x86.ActiveCfg = Release|Win32
+ {C3106192-32AD-442F-A3A2-E3CFB63F0CF1}.Release|x86.Build.0 = Release|Win32
+ {14022761-9F27-4A2D-B7EA-F41FB9B3274C}.Debug|x64.ActiveCfg = Debug|x64
+ {14022761-9F27-4A2D-B7EA-F41FB9B3274C}.Debug|x64.Build.0 = Debug|x64
+ {14022761-9F27-4A2D-B7EA-F41FB9B3274C}.Debug|x86.ActiveCfg = Debug|Win32
+ {14022761-9F27-4A2D-B7EA-F41FB9B3274C}.Debug|x86.Build.0 = Debug|Win32
+ {14022761-9F27-4A2D-B7EA-F41FB9B3274C}.Release|x64.ActiveCfg = Release|x64
+ {14022761-9F27-4A2D-B7EA-F41FB9B3274C}.Release|x64.Build.0 = Release|x64
+ {14022761-9F27-4A2D-B7EA-F41FB9B3274C}.Release|x86.ActiveCfg = Release|Win32
+ {14022761-9F27-4A2D-B7EA-F41FB9B3274C}.Release|x86.Build.0 = Release|Win32
+ {03A484BF-4CF0-4290-9BD2-D649F0797703}.Debug|x64.ActiveCfg = Debug|x64
+ {03A484BF-4CF0-4290-9BD2-D649F0797703}.Debug|x64.Build.0 = Debug|x64
+ {03A484BF-4CF0-4290-9BD2-D649F0797703}.Debug|x86.ActiveCfg = Debug|Win32
+ {03A484BF-4CF0-4290-9BD2-D649F0797703}.Debug|x86.Build.0 = Debug|Win32
+ {03A484BF-4CF0-4290-9BD2-D649F0797703}.Release|x64.ActiveCfg = Release|x64
+ {03A484BF-4CF0-4290-9BD2-D649F0797703}.Release|x64.Build.0 = Release|x64
+ {03A484BF-4CF0-4290-9BD2-D649F0797703}.Release|x86.ActiveCfg = Release|Win32
+ {03A484BF-4CF0-4290-9BD2-D649F0797703}.Release|x86.Build.0 = Release|Win32
+ EndGlobalSection
+ GlobalSection(SolutionProperties) = preSolution
+ HideSolutionNode = FALSE
+ EndGlobalSection
+EndGlobal
diff --git a/protocols/Telegram/tgl/contrib/vs/tgl.vcxproj b/protocols/Telegram/tgl/contrib/vs/tgl.vcxproj
new file mode 100644
index 0000000000..0dd16c17fd
--- /dev/null
+++ b/protocols/Telegram/tgl/contrib/vs/tgl.vcxproj
@@ -0,0 +1,251 @@
+<?xml version="1.0" encoding="utf-8"?>
+<Project DefaultTargets="Build" ToolsVersion="14.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
+ <ItemGroup Label="ProjectConfigurations">
+ <ProjectConfiguration Include="Debug|Win32">
+ <Configuration>Debug</Configuration>
+ <Platform>Win32</Platform>
+ </ProjectConfiguration>
+ <ProjectConfiguration Include="Release|Win32">
+ <Configuration>Release</Configuration>
+ <Platform>Win32</Platform>
+ </ProjectConfiguration>
+ <ProjectConfiguration Include="Debug|x64">
+ <Configuration>Debug</Configuration>
+ <Platform>x64</Platform>
+ </ProjectConfiguration>
+ <ProjectConfiguration Include="Release|x64">
+ <Configuration>Release</Configuration>
+ <Platform>x64</Platform>
+ </ProjectConfiguration>
+ </ItemGroup>
+ <ItemGroup>
+ <ClInclude Include="..\..\auto.h" />
+ <ClInclude Include="..\..\event-old.h" />
+ <ClInclude Include="..\..\mtproto-client.h" />
+ <ClInclude Include="..\..\mtproto-common.h" />
+ <ClInclude Include="..\..\mtproto-utils.h" />
+ <ClInclude Include="..\..\no-preview.h" />
+ <ClInclude Include="..\..\queries.h" />
+ <ClInclude Include="..\..\tg-mime-types.h" />
+ <ClInclude Include="..\..\tgl-binlog.h" />
+ <ClInclude Include="..\..\tgl-fetch.h" />
+ <ClInclude Include="..\..\tgl-inner.h" />
+ <ClInclude Include="..\..\tgl-layout.h" />
+ <ClInclude Include="..\..\tgl-methods-in.h" />
+ <ClInclude Include="..\..\tgl-net-inner.h" />
+ <ClInclude Include="..\..\tgl-net.h" />
+ <ClInclude Include="..\..\tgl-structures.h" />
+ <ClInclude Include="..\..\tgl-timers.h" />
+ <ClInclude Include="..\..\tgl.h" />
+ <ClInclude Include="..\..\tools.h" />
+ <ClInclude Include="..\..\tree.h" />
+ <ClInclude Include="..\..\updates.h" />
+ </ItemGroup>
+ <ItemGroup>
+ <ClCompile Include="..\..\auto\auto-autocomplete.c" />
+ <ClCompile Include="..\..\auto\auto-fetch-ds.c" />
+ <ClCompile Include="..\..\auto\auto-fetch.c" />
+ <ClCompile Include="..\..\auto\auto-free-ds.c" />
+ <ClCompile Include="..\..\auto\auto-print-ds.c" />
+ <ClCompile Include="..\..\auto\auto-skip.c" />
+ <ClCompile Include="..\..\auto\auto-store-ds.c" />
+ <ClCompile Include="..\..\auto\auto-store.c" />
+ <ClCompile Include="..\..\auto\auto-types.c" />
+ <ClCompile Include="..\..\binlog.c" />
+ <ClCompile Include="..\..\mime-types.c" />
+ <ClCompile Include="..\..\mtproto-client.c" />
+ <ClCompile Include="..\..\mtproto-common.c" />
+ <ClCompile Include="..\..\mtproto-utils.c" />
+ <ClCompile Include="..\..\queries.c" />
+ <ClCompile Include="..\..\structures.c" />
+ <ClCompile Include="..\..\tg-mime-types.c" />
+ <ClCompile Include="..\..\tgl-net.c" />
+ <ClCompile Include="..\..\tgl-timers.c" />
+ <ClCompile Include="..\..\tgl.c" />
+ <ClCompile Include="..\..\tools.c" />
+ <ClCompile Include="..\..\updates.c" />
+ </ItemGroup>
+ <PropertyGroup Label="Globals">
+ <ProjectGuid>{C3106192-32AD-442F-A3A2-E3CFB63F0CF1}</ProjectGuid>
+ <RootNamespace>tgl</RootNamespace>
+ <WindowsTargetPlatformVersion>8.1</WindowsTargetPlatformVersion>
+ </PropertyGroup>
+ <Import Project="$(VCTargetsPath)\Microsoft.Cpp.Default.props" />
+ <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'" Label="Configuration">
+ <ConfigurationType>StaticLibrary</ConfigurationType>
+ <UseDebugLibraries>true</UseDebugLibraries>
+ <PlatformToolset>v140</PlatformToolset>
+ <CharacterSet>Unicode</CharacterSet>
+ </PropertyGroup>
+ <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'" Label="Configuration">
+ <ConfigurationType>StaticLibrary</ConfigurationType>
+ <UseDebugLibraries>false</UseDebugLibraries>
+ <PlatformToolset>v140_xp</PlatformToolset>
+ <WholeProgramOptimization>true</WholeProgramOptimization>
+ <CharacterSet>Unicode</CharacterSet>
+ </PropertyGroup>
+ <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'" Label="Configuration">
+ <ConfigurationType>StaticLibrary</ConfigurationType>
+ <UseDebugLibraries>true</UseDebugLibraries>
+ <PlatformToolset>v140</PlatformToolset>
+ <CharacterSet>Unicode</CharacterSet>
+ </PropertyGroup>
+ <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'" Label="Configuration">
+ <ConfigurationType>StaticLibrary</ConfigurationType>
+ <UseDebugLibraries>false</UseDebugLibraries>
+ <PlatformToolset>v140</PlatformToolset>
+ <WholeProgramOptimization>true</WholeProgramOptimization>
+ <CharacterSet>Unicode</CharacterSet>
+ </PropertyGroup>
+ <Import Project="$(VCTargetsPath)\Microsoft.Cpp.props" />
+ <ImportGroup Label="ExtensionSettings">
+ </ImportGroup>
+ <ImportGroup Label="Shared">
+ </ImportGroup>
+ <ImportGroup Label="PropertySheets" Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">
+ <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
+ </ImportGroup>
+ <ImportGroup Label="PropertySheets" Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">
+ <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
+ </ImportGroup>
+ <ImportGroup Label="PropertySheets" Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">
+ <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
+ </ImportGroup>
+ <ImportGroup Label="PropertySheets" Condition="'$(Configuration)|$(Platform)'=='Release|x64'">
+ <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
+ </ImportGroup>
+ <PropertyGroup Label="UserMacros" />
+ <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">
+ <OutDir>build\$(Configuration)\</OutDir>
+ <IntDir>build\$(Configuration)\obj\tgl\</IntDir>
+ <ExtensionsToDeleteOnClean>*.h;$(ExtensionsToDeleteOnClean)</ExtensionsToDeleteOnClean>
+ <IncludePath>$(VC_IncludePath);$(WindowsSDK_IncludePath);$(IntDir);</IncludePath>
+ <PreBuildEventUseInBuild>true</PreBuildEventUseInBuild>
+ </PropertyGroup>
+ <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">
+ <OutDir>build\$(Configuration)\</OutDir>
+ <IntDir>build\$(Configuration)\obj\tgl\</IntDir>
+ <IncludePath>$(VC_IncludePath);$(WindowsSDK_IncludePath);$(IntDir);</IncludePath>
+ <PreBuildEventUseInBuild>true</PreBuildEventUseInBuild>
+ </PropertyGroup>
+ <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">
+ <OutDir>build\$(Platform)\$(Configuration)\</OutDir>
+ <IntDir>build\$(Platform)\$(Configuration)\obj\tgl\</IntDir>
+ <ExtensionsToDeleteOnClean>*.h;$(ExtensionsToDeleteOnClean)</ExtensionsToDeleteOnClean>
+ <IncludePath>$(VC_IncludePath);$(WindowsSDK_IncludePath);$(IntDir);</IncludePath>
+ </PropertyGroup>
+ <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'">
+ <OutDir>build\$(Platform)\$(Configuration)\</OutDir>
+ <IntDir>build\$(Platform)\$(Configuration)\obj\tgl\</IntDir>
+ <ExtensionsToDeleteOnClean>*.h;$(ExtensionsToDeleteOnClean)</ExtensionsToDeleteOnClean>
+ <IncludePath>$(VC_IncludePath);$(WindowsSDK_IncludePath);$(IntDir);</IncludePath>
+ </PropertyGroup>
+ <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">
+ <ClCompile>
+ <WarningLevel>Level3</WarningLevel>
+ <Optimization>Disabled</Optimization>
+ <SDLCheck>true</SDLCheck>
+ <PreprocessorDefinitions>WIN32;_LIB;HAVE_CONFIG_H;ZLIB_WINAPI;_DEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>
+ <AdditionalIncludeDirectories>%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
+ <CompileAs>CompileAsC</CompileAs>
+ <DisableLanguageExtensions>false</DisableLanguageExtensions>
+ <DebugInformationFormat>ProgramDatabase</DebugInformationFormat>
+ <ProgramDataBaseFileName>$(OutDir)\lib\$(ProjectName).pdb</ProgramDataBaseFileName>
+ <DisableSpecificWarnings>
+ </DisableSpecificWarnings>
+ </ClCompile>
+ <Link>
+ <GenerateDebugInformation>true</GenerateDebugInformation>
+ </Link>
+ <PreBuildEvent>
+ <Command>config.bat -debug --gen-config --gen-scheme -o $(OutDir)</Command>
+ </PreBuildEvent>
+ <Lib>
+ <OutputFile>$(OutDir)\lib\$(TargetName)$(TargetExt)</OutputFile>
+ <AdditionalDependencies>Ws2_32.lib;event.lib;libeay32.lib;ssleay32.lib;zlibwapi.lib;%(AdditionalDependencies)</AdditionalDependencies>
+ <AdditionalLibraryDirectories>%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>
+ </Lib>
+ <ProjectReference>
+ <LinkLibraryDependencies>true</LinkLibraryDependencies>
+ </ProjectReference>
+ </ItemDefinitionGroup>
+ <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">
+ <ClCompile>
+ <WarningLevel>Level3</WarningLevel>
+ <Optimization>Disabled</Optimization>
+ <SDLCheck>true</SDLCheck>
+ <PreprocessorDefinitions>_LIB;HAVE_CONFIG_H;_DEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>
+ <CompileAs>CompileAsC</CompileAs>
+ <AdditionalIncludeDirectories>%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
+ </ClCompile>
+ <Link>
+ <GenerateDebugInformation>true</GenerateDebugInformation>
+ </Link>
+ <Lib>
+ <OutputFile>$(OutDir)\lib\$(TargetName)$(TargetExt)</OutputFile>
+ </Lib>
+ <PreBuildEvent>
+ <Command>config.bat --gen-config --gen-scheme -o $(OutDir)</Command>
+ </PreBuildEvent>
+ </ItemDefinitionGroup>
+ <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">
+ <ClCompile>
+ <WarningLevel>Level3</WarningLevel>
+ <Optimization>Full</Optimization>
+ <FunctionLevelLinking>true</FunctionLevelLinking>
+ <IntrinsicFunctions>true</IntrinsicFunctions>
+ <PreprocessorDefinitions>WIN32;_LIB;HAVE_CONFIG_H;ZLIB_WINAPI;_CRT_NONSTDC_NO_DEPRECATE;%(PreprocessorDefinitions)</PreprocessorDefinitions>
+ <AdditionalIncludeDirectories>..\..\openssl\include;..\..\zlib;..\..\libevent\include\;..\..\libevent\WIN32-Code\nmake\;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
+ <CompileAs>CompileAsC</CompileAs>
+ <DisableSpecificWarnings>
+ </DisableSpecificWarnings>
+ </ClCompile>
+ <Link>
+ <GenerateDebugInformation>true</GenerateDebugInformation>
+ <EnableCOMDATFolding>true</EnableCOMDATFolding>
+ <OptimizeReferences>true</OptimizeReferences>
+ </Link>
+ <PreBuildEvent>
+ <Command>config.bat --gen-config --gen-scheme -o $(OutDir)</Command>
+ </PreBuildEvent>
+ <Lib>
+ <OutputFile>$(OutDir)\lib\$(TargetName)$(TargetExt)</OutputFile>
+ <AdditionalDependencies>Ws2_32.lib;libevent.lib;libeay32.lib;ssleay32.lib;zlibwapi.lib;%(AdditionalDependencies)</AdditionalDependencies>
+ <AdditionalLibraryDirectories>..\..\openssl\lib;..\..\zlib\contrib\vstudio\vc11\x86\ZlibStatReleaseWithoutAsm\;..\..\zlib\contrib\vstudio\vc11\x86\ZlibDllReleaseWithoutAsm\;..\..\libevent\;%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>
+ </Lib>
+ <ProjectReference />
+ <ProjectReference>
+ <LinkLibraryDependencies>true</LinkLibraryDependencies>
+ </ProjectReference>
+ </ItemDefinitionGroup>
+ <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'">
+ <ClCompile>
+ <WarningLevel>Level3</WarningLevel>
+ <Optimization>MaxSpeed</Optimization>
+ <FunctionLevelLinking>true</FunctionLevelLinking>
+ <IntrinsicFunctions>true</IntrinsicFunctions>
+ <SDLCheck>true</SDLCheck>
+ <PreprocessorDefinitions>_LIB;HAVE_CONFIG_H;%(PreprocessorDefinitions)</PreprocessorDefinitions>
+ <DebugInformationFormat>None</DebugInformationFormat>
+ <CompileAs>CompileAsC</CompileAs>
+ </ClCompile>
+ <Link>
+ <GenerateDebugInformation>true</GenerateDebugInformation>
+ <EnableCOMDATFolding>true</EnableCOMDATFolding>
+ <OptimizeReferences>true</OptimizeReferences>
+ </Link>
+ <Lib>
+ <OutputFile>$(OutDir)\lib\$(TargetName)$(TargetExt)</OutputFile>
+ </Lib>
+ <PreBuildEvent>
+ <Command>config.bat --gen-config --gen-scheme -o $(OutDir)</Command>
+ </PreBuildEvent>
+ </ItemDefinitionGroup>
+ <Import Project="$(VCTargetsPath)\Microsoft.Cpp.targets" />
+ <ImportGroup Label="ExtensionTargets">
+ </ImportGroup>
+ <Target Name="AfterClean">
+ <Delete Files="..\..\config.h" ContinueOnError="true" />
+ <RemoveDir Directories="..\..\auto\" />
+ </Target>
+</Project> \ No newline at end of file
diff --git a/protocols/Telegram/tgl/contrib/vs/tgl.vcxproj.filters b/protocols/Telegram/tgl/contrib/vs/tgl.vcxproj.filters
new file mode 100644
index 0000000000..0e031a039e
--- /dev/null
+++ b/protocols/Telegram/tgl/contrib/vs/tgl.vcxproj.filters
@@ -0,0 +1,153 @@
+<?xml version="1.0" encoding="utf-8"?>
+<Project ToolsVersion="4.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
+ <ItemGroup>
+ <Filter Include="Source Files">
+ <UniqueIdentifier>{4FC737F1-C7A5-4376-A066-2A32D752A2FF}</UniqueIdentifier>
+ <Extensions>cpp;c;cc;cxx;def;odl;idl;hpj;bat;asm;asmx</Extensions>
+ </Filter>
+ <Filter Include="Header Files">
+ <UniqueIdentifier>{93995380-89BD-4b04-88EB-625FBE52EBFB}</UniqueIdentifier>
+ <Extensions>h;hh;hpp;hxx;hm;inl;inc;xsd</Extensions>
+ </Filter>
+ <Filter Include="Resource Files">
+ <UniqueIdentifier>{67DA6AB6-F800-4c08-8B7A-83BB121AAD01}</UniqueIdentifier>
+ <Extensions>rc;ico;cur;bmp;dlg;rc2;rct;bin;rgs;gif;jpg;jpeg;jpe;resx;tiff;tif;png;wav;mfcribbon-ms</Extensions>
+ </Filter>
+ <Filter Include="Source Files\auto">
+ <UniqueIdentifier>{22d3d7ed-cbc2-49e1-b516-b0049e61afa7}</UniqueIdentifier>
+ </Filter>
+ </ItemGroup>
+ <ItemGroup>
+ <ClInclude Include="..\..\auto.h">
+ <Filter>Header Files</Filter>
+ </ClInclude>
+ <ClInclude Include="..\..\event-old.h">
+ <Filter>Header Files</Filter>
+ </ClInclude>
+ <ClInclude Include="..\..\mtproto-client.h">
+ <Filter>Header Files</Filter>
+ </ClInclude>
+ <ClInclude Include="..\..\mtproto-common.h">
+ <Filter>Header Files</Filter>
+ </ClInclude>
+ <ClInclude Include="..\..\mtproto-utils.h">
+ <Filter>Header Files</Filter>
+ </ClInclude>
+ <ClInclude Include="..\..\no-preview.h">
+ <Filter>Header Files</Filter>
+ </ClInclude>
+ <ClInclude Include="..\..\queries.h">
+ <Filter>Header Files</Filter>
+ </ClInclude>
+ <ClInclude Include="..\..\tgl.h">
+ <Filter>Header Files</Filter>
+ </ClInclude>
+ <ClInclude Include="..\..\tgl-binlog.h">
+ <Filter>Header Files</Filter>
+ </ClInclude>
+ <ClInclude Include="..\..\tgl-fetch.h">
+ <Filter>Header Files</Filter>
+ </ClInclude>
+ <ClInclude Include="..\..\tgl-inner.h">
+ <Filter>Header Files</Filter>
+ </ClInclude>
+ <ClInclude Include="..\..\tgl-layout.h">
+ <Filter>Header Files</Filter>
+ </ClInclude>
+ <ClInclude Include="..\..\tgl-methods-in.h">
+ <Filter>Header Files</Filter>
+ </ClInclude>
+ <ClInclude Include="..\..\tgl-net.h">
+ <Filter>Header Files</Filter>
+ </ClInclude>
+ <ClInclude Include="..\..\tgl-net-inner.h">
+ <Filter>Header Files</Filter>
+ </ClInclude>
+ <ClInclude Include="..\..\tgl-structures.h">
+ <Filter>Header Files</Filter>
+ </ClInclude>
+ <ClInclude Include="..\..\tgl-timers.h">
+ <Filter>Header Files</Filter>
+ </ClInclude>
+ <ClInclude Include="..\..\tg-mime-types.h">
+ <Filter>Header Files</Filter>
+ </ClInclude>
+ <ClInclude Include="..\..\tools.h">
+ <Filter>Header Files</Filter>
+ </ClInclude>
+ <ClInclude Include="..\..\tree.h">
+ <Filter>Header Files</Filter>
+ </ClInclude>
+ <ClInclude Include="..\..\updates.h">
+ <Filter>Header Files</Filter>
+ </ClInclude>
+ </ItemGroup>
+ <ItemGroup>
+ <ClCompile Include="..\..\binlog.c">
+ <Filter>Source Files</Filter>
+ </ClCompile>
+ <ClCompile Include="..\..\mime-types.c">
+ <Filter>Source Files</Filter>
+ </ClCompile>
+ <ClCompile Include="..\..\mtproto-client.c">
+ <Filter>Source Files</Filter>
+ </ClCompile>
+ <ClCompile Include="..\..\mtproto-common.c">
+ <Filter>Source Files</Filter>
+ </ClCompile>
+ <ClCompile Include="..\..\mtproto-utils.c">
+ <Filter>Source Files</Filter>
+ </ClCompile>
+ <ClCompile Include="..\..\queries.c">
+ <Filter>Source Files</Filter>
+ </ClCompile>
+ <ClCompile Include="..\..\structures.c">
+ <Filter>Source Files</Filter>
+ </ClCompile>
+ <ClCompile Include="..\..\tgl.c">
+ <Filter>Source Files</Filter>
+ </ClCompile>
+ <ClCompile Include="..\..\tgl-net.c">
+ <Filter>Source Files</Filter>
+ </ClCompile>
+ <ClCompile Include="..\..\tgl-timers.c">
+ <Filter>Source Files</Filter>
+ </ClCompile>
+ <ClCompile Include="..\..\tg-mime-types.c">
+ <Filter>Source Files</Filter>
+ </ClCompile>
+ <ClCompile Include="..\..\tools.c">
+ <Filter>Source Files</Filter>
+ </ClCompile>
+ <ClCompile Include="..\..\updates.c">
+ <Filter>Source Files</Filter>
+ </ClCompile>
+ <ClCompile Include="..\..\auto\auto-autocomplete.c">
+ <Filter>Source Files\auto</Filter>
+ </ClCompile>
+ <ClCompile Include="..\..\auto\auto-fetch.c">
+ <Filter>Source Files\auto</Filter>
+ </ClCompile>
+ <ClCompile Include="..\..\auto\auto-fetch-ds.c">
+ <Filter>Source Files\auto</Filter>
+ </ClCompile>
+ <ClCompile Include="..\..\auto\auto-free-ds.c">
+ <Filter>Source Files\auto</Filter>
+ </ClCompile>
+ <ClCompile Include="..\..\auto\auto-print-ds.c">
+ <Filter>Source Files\auto</Filter>
+ </ClCompile>
+ <ClCompile Include="..\..\auto\auto-skip.c">
+ <Filter>Source Files\auto</Filter>
+ </ClCompile>
+ <ClCompile Include="..\..\auto\auto-store.c">
+ <Filter>Source Files\auto</Filter>
+ </ClCompile>
+ <ClCompile Include="..\..\auto\auto-store-ds.c">
+ <Filter>Source Files\auto</Filter>
+ </ClCompile>
+ <ClCompile Include="..\..\auto\auto-types.c">
+ <Filter>Source Files\auto</Filter>
+ </ClCompile>
+ </ItemGroup>
+</Project> \ No newline at end of file
diff --git a/protocols/Telegram/tgl/contrib/vs/tgl.vcxproj.user b/protocols/Telegram/tgl/contrib/vs/tgl.vcxproj.user
new file mode 100644
index 0000000000..6fb136bf0a
--- /dev/null
+++ b/protocols/Telegram/tgl/contrib/vs/tgl.vcxproj.user
@@ -0,0 +1,4 @@
+<?xml version="1.0" encoding="utf-8"?>
+<Project ToolsVersion="14.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
+ <PropertyGroup />
+</Project> \ No newline at end of file
diff --git a/protocols/Telegram/tgl/contrib/vs/wingetopt.c b/protocols/Telegram/tgl/contrib/vs/wingetopt.c
new file mode 100644
index 0000000000..09dac17a4f
--- /dev/null
+++ b/protocols/Telegram/tgl/contrib/vs/wingetopt.c
@@ -0,0 +1,82 @@
+/*
+POSIX getopt for Windows
+
+AT&T Public License
+
+Code given out at the 1985 UNIFORUM conference in Dallas.
+*/
+
+#ifndef __GNUC__
+
+#include "wingetopt.h"
+#include <stdio.h>
+#include <string.h>
+
+#ifndef NULL
+#define NULL 0
+#endif
+#define EOF (-1)
+#define ERR(s, c) if(opterr){\
+ char errbuf[2];\
+ errbuf[0] = c; errbuf[1] = '\n';\
+ fputs(argv[0], stderr);\
+ fputs(s, stderr);\
+ fputc(c, stderr);}
+//(void) write(2, argv[0], (unsigned)strlen(argv[0]));\
+ //(void) write(2, s, (unsigned)strlen(s));\
+ //(void) write(2, errbuf, 2);}
+
+int opterr = 1;
+int optind = 1;
+int optopt;
+char *optarg;
+
+int
+getopt(argc, argv, opts)
+int argc;
+char **argv, *opts;
+{
+ static int sp = 1;
+ register int c;
+ register char *cp;
+
+ if (sp == 1)
+ if (optind >= argc ||
+ argv[optind][0] != '-' || argv[optind][1] == '\0')
+ return(EOF);
+ else if (strcmp(argv[optind], "--") == (int)NULL) {
+ optind++;
+ return(EOF);
+ }
+ optopt = c = argv[optind][sp];
+ if (c == ':' || (cp = strchr(opts, c)) == NULL) {
+ ERR(": illegal option -- ", c);
+ if (argv[optind][++sp] == '\0') {
+ optind++;
+ sp = 1;
+ }
+ return('?');
+ }
+ if (*++cp == ':') {
+ if (argv[optind][sp + 1] != '\0')
+ optarg = &argv[optind++][sp + 1];
+ else if (++optind >= argc) {
+ ERR(": option requires an argument -- ", c);
+ sp = 1;
+ return('?');
+ }
+ else
+ optarg = argv[optind++];
+ sp = 1;
+ }
+ else {
+ if (argv[optind][++sp] == '\0') {
+ sp = 1;
+ optind++;
+ }
+ optarg = NULL;
+ }
+ return(c);
+}
+
+#endif /* __GNUC__ */ \ No newline at end of file
diff --git a/protocols/Telegram/tgl/contrib/vs/wingetopt.h b/protocols/Telegram/tgl/contrib/vs/wingetopt.h
new file mode 100644
index 0000000000..4372c66011
--- /dev/null
+++ b/protocols/Telegram/tgl/contrib/vs/wingetopt.h
@@ -0,0 +1,32 @@
+/*
+POSIX getopt for Windows
+
+AT&T Public License
+
+Code given out at the 1985 UNIFORUM conference in Dallas.
+*/
+
+#ifdef __GNUC__
+#include <getopt.h>
+#endif
+#ifndef __GNUC__
+
+#ifndef _WINGETOPT_H_
+#define _WINGETOPT_H_
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+ extern int opterr;
+ extern int optind;
+ extern int optopt;
+ extern char *optarg;
+ extern int getopt(int argc, char **argv, char *opts);
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif /* _GETOPT_H_ */
+#endif /* __GNUC__ */ \ No newline at end of file