Imported Upstream version 2.0.0~git20160502.1.a7ca42e+dfsg1

This commit is contained in:
Bernhard Miklautz 2016-05-02 16:53:12 +00:00
parent 88dec5ba62
commit 76621c1efa
77 changed files with 710 additions and 410 deletions

View File

@ -277,6 +277,22 @@ if(${CMAKE_C_COMPILER_ID} STREQUAL "Clang" OR CMAKE_COMPILER_IS_GNUCC)
set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -fno-omit-frame-pointer")
endif()
endif()
if (WITH_NO_UNDEFINED)
if (DEFINED CMAKE_REQUIRED_FLAGS)
set(SAVE_CMAKE_REQUIRED_FLAGS ${CMAKE_REQUIRED_FLAGS})
endif()
set(CMAKE_REQUIRED_FLAGS "-Wl,--no-undefined")
CHECK_C_COMPILER_FLAG (-Wl,--no-undefined no-undefined)
if (DEFINED SAVE_CMAKE_REQUIRED_FLAGS)
set(CMAKE_REQUIRED_FLAGS ${SAVE_CMAKE_REQUIRED_FLAGS})
unset(SAVE_CMAKE_REQUIRED_FLAGS)
else()
unset(CMAKE_REQUIRED_FLAGS)
endif()
if(no-undefined)
SET(CMAKE_SHARED_LINKER_FLAGS "${CMAKE_SHARED_LINKER_FLAGS} -Wl,--no-undefined" )
endif()
endif()
endif()
if(MSVC)
@ -757,6 +773,14 @@ endif()
include_directories("${CMAKE_SOURCE_DIR}/winpr/include")
include_directories("${CMAKE_BINARY_DIR}/winpr/include")
if (${CMAKE_VERSION} VERSION_LESS 2.8.12)
set(PUBLIC_KEYWORD "")
set(PRIVATE_KEYWORD "")
else()
set(PUBLIC_KEYWORD "PUBLIC")
set(PRIVATE_KEYWORD "PRIVATE")
endif()
add_subdirectory(winpr)
# Sub-directories
@ -807,14 +831,6 @@ if(WITH_CHANNELS)
add_subdirectory(channels)
endif()
if (${CMAKE_VERSION} VERSION_LESS 2.8.12)
set(PUBLIC_KEYWORD "")
set(PRIVATE_KEYWORD "")
else()
set(PUBLIC_KEYWORD "PUBLIC")
set(PRIVATE_KEYWORD "PRIVATE")
endif()
if(WITH_CLIENT_COMMON OR WITH_CLIENT)
add_subdirectory(client)
endif()

172
ChangeLog
View File

@ -1,3 +1,175 @@
2016-05-02 18:44:40 +0200 Bernhard Miklautz (a7ca42e)
* Merge pull request #3313 from bmiklautz/typos
2016-05-02 18:31:43 +0200 Bernhard Miklautz (9d98759)
* libfreerd/color: fix typo
2016-05-02 18:09:24 +0200 akallabeth (38beb29)
* Merge pull request #3311 from bmiklautz/static_rdtk
2016-05-02 18:08:46 +0200 akallabeth (9591d2e)
* Merge pull request #3312 from bmiklautz/commtests
2016-05-02 17:44:25 +0200 Bernhard Miklautz (29adf0c)
* rdtk: fix windows build
2016-05-02 16:59:25 +0200 Bernhard Miklautz (81d30cc)
* Disable comm tests per default
2016-05-02 16:10:31 +0200 Bernhard Miklautz (1bad57c)
* Don't export/install rdtk
2016-04-26 11:01:40 +0200 Bernhard Miklautz (bd7ed27)
* Merge pull request #3305 from akallabeth/dynamic_channel_crash_fix
2016-04-26 09:59:40 +0200 akallabeth (a62d962)
* Merge pull request #3250 from mfleisz/cssp_v3
2016-04-26 09:35:54 +0200 Armin Novak (48b11cf)
* Dynamic channel internal functions now static.
2016-04-26 09:34:12 +0200 Armin Novak (ee186be)
* ListDictionary handle NULL list argument.
2016-04-19 17:57:53 +0200 Hardening (ca2d015)
* Merge pull request #3296 from akallabeth/clipboard_file_fix
2016-04-19 16:44:31 +0200 Armin Novak (8917a3d)
* Fix CB_FILECONTENTS_REQUEST message decoding.
2016-04-19 15:32:56 +0200 Norbert Federa (8110435)
* Merge pull request #3294 from bmiklautz/misc_build
2016-04-19 15:21:49 +0200 Norbert Federa (a4cec9f)
* Merge pull request #3287 from bmiklautz/linking_fixes2
2016-04-19 14:55:26 +0200 Hardening (d4b7301)
* Merge pull request #3293 from
nfedera/mitigate-cbclientaddress-verification
2016-04-19 14:33:26 +0200 Bernhard Miklautz (0ebc6f1)
* build: disable -Wl,--no-undefined per default
2016-04-19 14:09:58 +0200 Norbert Federa (9f148e6)
* core: allow TS Gateway protocol violation
2016-04-19 12:46:54 +0200 Bernhard Miklautz (4a9da95)
* Tests: Disable TESTS_WTSAPI_EXTRA per default
2016-04-15 14:48:46 +0200 Bernhard Miklautz (470e147)
* Merge pull request #3285 from rjcorrig/kb3148851
2016-04-15 14:32:40 +0200 Bernhard Miklautz (62cb5fa)
* build: add missing dependencies
2016-04-13 13:34:43 -0400 Robert Corrigan (f8c42da)
* KB3148851: Updates to Russian Time Zones for 2016
2016-04-11 20:47:53 +0200 Hardening (11d1138)
* Merge pull request #3274 from bmiklautz/linking_fixes
2016-04-11 11:10:08 +0200 Hardening (c9f4485)
* Merge pull request #3276 from
nfedera/nf-fix-ms-android-protocol-violation
2016-04-11 10:50:27 +0200 Norbert Federa (4ae77b8)
* core: allow ms android client protocol violation
2016-04-08 15:28:40 +0200 akallabeth (45ab979)
* Merge pull request #3275 from
nfedera/fix-server-establish-keys-typo
2016-04-08 14:47:35 +0200 Norbert Federa (6ee4453)
* core: fix broken rdp security (server side)
2016-04-07 14:39:16 +0200 Bernhard Miklautz (7838072)
* build: add missing dependencies
2016-04-07 14:52:52 +0200 Bernhard Miklautz (0e2c4f2)
* Merge pull request #3273 from
realjiangms/fix_android_crash_rotate_3258
2016-04-07 14:35:57 +0200 Bernhard Miklautz (8fe88ac)
* build: use --no-undefined if available
2016-04-07 20:19:22 +0800 zihao.jiang (748982c)
* Fix android rotation crash
2016-03-31 11:43:38 +0200 Bernhard Miklautz (a0d9969)
* Merge pull request #3254 from akallabeth/avc444_cmd_arg
2016-03-31 11:01:45 +0200 Armin Novak (81450dd)
* Cleaned up empty if.
2016-03-30 15:20:53 +0200 akallabeth (445059b)
* Merge pull request #3259 from bmiklautz/overlinking
2016-03-29 15:10:00 +0200 Bernhard Miklautz (bafe1aa)
* usbdrc: remove unused dependencies
2016-03-25 16:28:17 +0100 Bernhard Miklautz (9e8c6c9)
* First shot on fixing over linking
2016-03-01 12:45:25 +0100 Bernhard Miklautz (b184f58)
* winpr/TestFileGetStdHandle: rename variable stdout
2016-03-24 16:25:22 +0100 Armin Novak (50873be)
* Added advanced gfx command line options.
2016-03-21 16:58:09 +0100 Martin Fleisz (5d956eb)
* core: correctly set last error on credssp errors
2016-03-21 10:23:18 +0100 Martin Fleisz (34a7c18)
* core: Propagate credssp error code by setting last error
2016-03-18 13:45:51 +0100 Martin Fleisz (98528ea)
* winpr: Fix definition of NTSTATUS_FROM_WIN32
2016-03-18 13:32:13 +0100 Martin Fleisz (1c2d315)
* core: Add support for CredSSP version 3
2016-03-17 11:06:39 +0100 akallabeth (75ae3f5)
* Merge pull request #3243 from hardening/typofix

View File

@ -25,7 +25,7 @@ include_directories(..)
add_channel_client_library(${MODULE_PREFIX} ${MODULE_NAME} ${CHANNEL_NAME} TRUE "DVCPluginEntry")
target_link_libraries(${MODULE_NAME} freerdp)
target_link_libraries(${MODULE_NAME} freerdp winpr)
if (WITH_DEBUG_SYMBOLS AND MSVC AND NOT STATIC_CHANNELS AND BUILD_SHARED_LIBS)
install(FILES ${CMAKE_BINARY_DIR}/${MODULE_NAME}.pdb DESTINATION ${FREERDP_ADDIN_PATH} COMPONENT symbols)

View File

@ -27,6 +27,6 @@ add_channel_client_subsystem_library(${MODULE_PREFIX} ${MODULE_NAME} ${CHANNEL_N
set(${MODULE_PREFIX}_LIBS freerdp ${ALSA_LIBRARIES})
set(${MODULE_PREFIX}_LIBS freerdp winpr ${ALSA_LIBRARIES})
target_link_libraries(${MODULE_NAME} ${${MODULE_PREFIX}_LIBS})

View File

@ -17,6 +17,9 @@
# limitations under the License.
define_channel_client_subsystem("audin" "mac" "")
FIND_LIBRARY(CORE_AUDIO CoreAudio)
FIND_LIBRARY(AUDIO_TOOL AudioToolbox)
FIND_LIBRARY(APP_SERVICES ApplicationServices)
set(${MODULE_PREFIX}_SRCS
audin_mac.c)
@ -26,6 +29,6 @@ include_directories(${MAC_INCLUDE_DIRS})
add_channel_client_subsystem_library(${MODULE_PREFIX} ${MODULE_NAME} ${CHANNEL_NAME} "" TRUE "")
set(${MODULE_PREFIX}_LIBS freerdp ${MAC_LIBRARIES})
set(${MODULE_PREFIX}_LIBS freerdp ${CORE_AUDIO} ${AUDIO_TOOL} ${APP_SERVICES} winpr)
target_link_libraries(${MODULE_NAME} ${${MODULE_PREFIX}_LIBS})

View File

@ -27,7 +27,7 @@ add_channel_client_subsystem_library(${MODULE_PREFIX} ${MODULE_NAME} ${CHANNEL_N
set(${MODULE_PREFIX}_LIBS freerdp ${OSS_LIBRARIES})
set(${MODULE_PREFIX}_LIBS freerdp winpr ${OSS_LIBRARIES})
target_link_libraries(${MODULE_NAME} ${${MODULE_PREFIX}_LIBS})

View File

@ -26,7 +26,6 @@ include_directories(${PULSE_INCLUDE_DIR})
add_channel_client_subsystem_library(${MODULE_PREFIX} ${MODULE_NAME} ${CHANNEL_NAME} "" TRUE "")
set(${MODULE_PREFIX}_LIBS freerdp ${PULSE_LIBRARY})
set(${MODULE_PREFIX}_LIBS freerdp ${PULSE_LIBRARY} winpr)
target_link_libraries(${MODULE_NAME} ${${MODULE_PREFIX}_LIBS})

View File

@ -310,9 +310,9 @@ static UINT cliprdr_process_filecontents_request(cliprdrPlugin* cliprdr, wStream
return ERROR_INTERNAL_ERROR;
}
if (Stream_GetRemainingLength(s) < 28)
if (Stream_GetRemainingLength(s) < 24)
{
WLog_ERR(TAG, "not enought remaining data");
WLog_ERR(TAG, "not enough remaining data");
return ERROR_INVALID_DATA;
}
@ -326,7 +326,10 @@ static UINT cliprdr_process_filecontents_request(cliprdrPlugin* cliprdr, wStream
Stream_Read_UINT32(s, request.nPositionLow); /* nPositionLow (4 bytes) */
Stream_Read_UINT32(s, request.nPositionHigh); /* nPositionHigh (4 bytes) */
Stream_Read_UINT32(s, request.cbRequested); /* cbRequested (4 bytes) */
Stream_Read_UINT32(s, request.clipDataId); /* clipDataId (4 bytes) */
if (Stream_GetRemainingLength(s) >= 4)
Stream_Read_UINT32(s, request.clipDataId); /* clipDataId (4 bytes) */
else
request.clipDataId = 0;
IFCALLRET(context->ServerFileContentsRequest, error, context, &request);
@ -357,7 +360,7 @@ static UINT cliprdr_process_filecontents_response(cliprdrPlugin* cliprdr, wStrea
if (Stream_GetRemainingLength(s) < 4)
{
WLog_ERR(TAG, "not enought remaining data");
WLog_ERR(TAG, "not enough remaining data");
return ERROR_INVALID_DATA;
}
@ -399,7 +402,7 @@ static UINT cliprdr_process_lock_clipdata(cliprdrPlugin* cliprdr, wStream* s, UI
if (Stream_GetRemainingLength(s) < 4)
{
WLog_ERR(TAG, "not enought remaining data");
WLog_ERR(TAG, "not enough remaining data");
return ERROR_INVALID_DATA;
}
@ -437,7 +440,7 @@ static UINT cliprdr_process_unlock_clipdata(cliprdrPlugin* cliprdr, wStream* s,
if (Stream_GetRemainingLength(s) < 4)
{
WLog_ERR(TAG, "not enought remaining data");
WLog_ERR(TAG, "not enough remaining data");
return ERROR_INVALID_DATA;
}

View File

@ -849,7 +849,7 @@ static UINT cliprdr_server_receive_lock_clipdata(CliprdrServerContext* context,
if (Stream_GetRemainingLength(s) < 4)
{
WLog_ERR(TAG, "not enought data in stream!");
WLog_ERR(TAG, "not enough data in stream!");
return ERROR_INVALID_DATA;
}
@ -884,7 +884,7 @@ static UINT cliprdr_server_receive_unlock_clipdata(CliprdrServerContext* context
if (Stream_GetRemainingLength(s) < 4)
{
WLog_ERR(TAG, "not enought data in stream!");
WLog_ERR(TAG, "not enough data in stream!");
return ERROR_INVALID_DATA;
}
@ -915,7 +915,7 @@ static UINT cliprdr_server_receive_format_data_request(CliprdrServerContext* con
if (Stream_GetRemainingLength(s) < 4)
{
WLog_ERR(TAG, "not enought data in stream!");
WLog_ERR(TAG, "not enough data in stream!");
return ERROR_INVALID_DATA;
}
@ -947,7 +947,7 @@ static UINT cliprdr_server_receive_format_data_response(CliprdrServerContext* co
if (Stream_GetRemainingLength(s) < header->dataLen)
{
WLog_ERR(TAG, "not enought data in stream!");
WLog_ERR(TAG, "not enough data in stream!");
return ERROR_INVALID_DATA;
}
@ -984,7 +984,7 @@ static UINT cliprdr_server_receive_filecontents_request(CliprdrServerContext* co
if (Stream_GetRemainingLength(s) < 24)
{
WLog_ERR(TAG, "not enought data in stream!");
WLog_ERR(TAG, "not enough data in stream!");
return ERROR_INVALID_DATA;
}
@ -1024,7 +1024,7 @@ static UINT cliprdr_server_receive_filecontents_response(CliprdrServerContext* c
if (Stream_GetRemainingLength(s) < 4)
{
WLog_ERR(TAG, "not enought data in stream!");
WLog_ERR(TAG, "not enough data in stream!");
return ERROR_INVALID_DATA;
}

View File

@ -27,7 +27,7 @@ add_channel_client_library(${MODULE_PREFIX} ${MODULE_NAME} ${CHANNEL_NAME} TRUE
set(${MODULE_PREFIX}_LIBS ${${MODULE_PREFIX}_LIBS} winpr freerdp)
set(${MODULE_PREFIX}_LIBS ${${MODULE_PREFIX}_LIBS} winpr)
target_link_libraries(${MODULE_NAME} ${${MODULE_PREFIX}_LIBS})

View File

@ -31,6 +31,8 @@
#define TAG CHANNELS_TAG("drdynvc.client")
static void dvcman_channel_free(void* channel);
static UINT drdynvc_write_data(drdynvcPlugin* drdynvc, UINT32 ChannelId,
const BYTE* data, UINT32 dataSize);
/**
* Function description
@ -100,7 +102,8 @@ static UINT dvcman_create_listener(IWTSVirtualChannelManager* pChannelMgr,
*
* @return 0 on success, otherwise a Win32 error code
*/
static UINT dvcman_register_plugin(IDRDYNVC_ENTRY_POINTS* pEntryPoints, const char* name, IWTSPlugin* pPlugin)
static UINT dvcman_register_plugin(IDRDYNVC_ENTRY_POINTS* pEntryPoints,
const char* name, IWTSPlugin* pPlugin)
{
DVCMAN* dvcman = ((DVCMAN_ENTRY_POINTS*) pEntryPoints)->dvcman;
@ -118,7 +121,7 @@ static UINT dvcman_register_plugin(IDRDYNVC_ENTRY_POINTS* pEntryPoints, const ch
}
}
IWTSPlugin* dvcman_get_plugin(IDRDYNVC_ENTRY_POINTS* pEntryPoints, const char* name)
static IWTSPlugin* dvcman_get_plugin(IDRDYNVC_ENTRY_POINTS* pEntryPoints, const char* name)
{
int i;
DVCMAN* dvcman = ((DVCMAN_ENTRY_POINTS*) pEntryPoints)->dvcman;
@ -135,22 +138,23 @@ IWTSPlugin* dvcman_get_plugin(IDRDYNVC_ENTRY_POINTS* pEntryPoints, const char* n
return NULL;
}
ADDIN_ARGV* dvcman_get_plugin_data(IDRDYNVC_ENTRY_POINTS* pEntryPoints)
static ADDIN_ARGV* dvcman_get_plugin_data(IDRDYNVC_ENTRY_POINTS* pEntryPoints)
{
return ((DVCMAN_ENTRY_POINTS*) pEntryPoints)->args;
}
void* dvcman_get_rdp_settings(IDRDYNVC_ENTRY_POINTS* pEntryPoints)
static void* dvcman_get_rdp_settings(IDRDYNVC_ENTRY_POINTS* pEntryPoints)
{
return (void*) ((DVCMAN_ENTRY_POINTS*) pEntryPoints)->settings;
}
UINT32 dvcman_get_channel_id(IWTSVirtualChannel * channel)
static UINT32 dvcman_get_channel_id(IWTSVirtualChannel * channel)
{
return ((DVCMAN_CHANNEL*) channel)->channel_id;
}
IWTSVirtualChannel* dvcman_find_channel_by_id(IWTSVirtualChannelManager* pChannelMgr, UINT32 ChannelId)
static IWTSVirtualChannel* dvcman_find_channel_by_id(IWTSVirtualChannelManager* pChannelMgr,
UINT32 ChannelId)
{
int index;
BOOL found = FALSE;
@ -178,7 +182,8 @@ IWTSVirtualChannel* dvcman_find_channel_by_id(IWTSVirtualChannelManager* pChanne
return (found) ? ((IWTSVirtualChannel*) channel) : NULL;
}
void* dvcman_get_channel_interface_by_name(IWTSVirtualChannelManager* pChannelMgr, const char* ChannelName)
static void* dvcman_get_channel_interface_by_name(IWTSVirtualChannelManager* pChannelMgr,
const char* ChannelName)
{
int i;
BOOL found = FALSE;
@ -201,7 +206,7 @@ void* dvcman_get_channel_interface_by_name(IWTSVirtualChannelManager* pChannelMg
return (found) ? pInterface : NULL;
}
IWTSVirtualChannelManager* dvcman_new(drdynvcPlugin* plugin)
static IWTSVirtualChannelManager* dvcman_new(drdynvcPlugin* plugin)
{
DVCMAN* dvcman;
@ -241,7 +246,8 @@ IWTSVirtualChannelManager* dvcman_new(drdynvcPlugin* plugin)
*
* @return 0 on success, otherwise a Win32 error code
*/
static UINT dvcman_load_addin(IWTSVirtualChannelManager* pChannelMgr, ADDIN_ARGV* args, rdpSettings* settings)
static UINT dvcman_load_addin(IWTSVirtualChannelManager* pChannelMgr, ADDIN_ARGV* args,
rdpSettings* settings)
{
DVCMAN_ENTRY_POINTS entryPoints;
PDVC_PLUGIN_ENTRY pDVCPluginEntry = NULL;
@ -267,7 +273,8 @@ static UINT dvcman_load_addin(IWTSVirtualChannelManager* pChannelMgr, ADDIN_ARGV
return CHANNEL_RC_OK;
}
static DVCMAN_CHANNEL* dvcman_channel_new(IWTSVirtualChannelManager* pChannelMgr, UINT32 ChannelId, const char* ChannelName)
static DVCMAN_CHANNEL* dvcman_channel_new(IWTSVirtualChannelManager* pChannelMgr,
UINT32 ChannelId, const char* ChannelName)
{
DVCMAN_CHANNEL* channel;
@ -306,7 +313,7 @@ static DVCMAN_CHANNEL* dvcman_channel_new(IWTSVirtualChannelManager* pChannelMgr
return channel;
}
void dvcman_channel_free(void* arg)
static void dvcman_channel_free(void* arg)
{
DVCMAN_CHANNEL* channel = (DVCMAN_CHANNEL*) arg;
@ -333,7 +340,7 @@ void dvcman_channel_free(void* arg)
free(channel);
}
void dvcman_free(IWTSVirtualChannelManager* pChannelMgr)
static void dvcman_free(IWTSVirtualChannelManager* pChannelMgr)
{
int i;
IWTSPlugin* pPlugin;
@ -373,7 +380,7 @@ void dvcman_free(IWTSVirtualChannelManager* pChannelMgr)
*
* @return 0 on success, otherwise a Win32 error code
*/
UINT dvcman_init(IWTSVirtualChannelManager* pChannelMgr)
static UINT dvcman_init(IWTSVirtualChannelManager* pChannelMgr)
{
int i;
IWTSPlugin* pPlugin;
@ -400,14 +407,16 @@ UINT dvcman_init(IWTSVirtualChannelManager* pChannelMgr)
*
* @return 0 on success, otherwise a Win32 error code
*/
static UINT dvcman_write_channel(IWTSVirtualChannel* pChannel, ULONG cbSize, BYTE* pBuffer, void* pReserved)
static UINT dvcman_write_channel(IWTSVirtualChannel* pChannel, ULONG cbSize,
const BYTE* pBuffer, void* pReserved)
{
UINT status;
DVCMAN_CHANNEL* channel = (DVCMAN_CHANNEL*) pChannel;
EnterCriticalSection(&(channel->lock));
status = drdynvc_write_data(channel->dvcman->drdynvc, channel->channel_id, pBuffer, cbSize);
status = drdynvc_write_data(channel->dvcman->drdynvc,
channel->channel_id, pBuffer, cbSize);
LeaveCriticalSection(&(channel->lock));
@ -433,7 +442,8 @@ static UINT dvcman_close_channel_iface(IWTSVirtualChannel* pChannel)
*
* @return 0 on success, otherwise a Win32 error code
*/
UINT dvcman_create_channel(IWTSVirtualChannelManager* pChannelMgr, UINT32 ChannelId, const char* ChannelName)
UINT dvcman_create_channel(IWTSVirtualChannelManager* pChannelMgr,
UINT32 ChannelId, const char* ChannelName)
{
int i;
BOOL bAccept;
@ -507,7 +517,8 @@ UINT dvcman_create_channel(IWTSVirtualChannelManager* pChannelMgr, UINT32 Channe
*
* @return 0 on success, otherwise a Win32 error code
*/
UINT dvcman_open_channel(IWTSVirtualChannelManager* pChannelMgr, UINT32 ChannelId)
static UINT dvcman_open_channel(IWTSVirtualChannelManager* pChannelMgr,
UINT32 ChannelId)
{
DVCMAN_CHANNEL* channel;
IWTSVirtualChannelCallback* pCallback;
@ -540,7 +551,8 @@ UINT dvcman_open_channel(IWTSVirtualChannelManager* pChannelMgr, UINT32 ChannelI
*
* @return 0 on success, otherwise a Win32 error code
*/
UINT dvcman_close_channel(IWTSVirtualChannelManager* pChannelMgr, UINT32 ChannelId)
static UINT dvcman_close_channel(IWTSVirtualChannelManager* pChannelMgr,
UINT32 ChannelId)
{
DVCMAN_CHANNEL* channel;
IWTSVirtualChannel* ichannel;
@ -592,7 +604,8 @@ UINT dvcman_close_channel(IWTSVirtualChannelManager* pChannelMgr, UINT32 Channel
*
* @return 0 on success, otherwise a Win32 error code
*/
UINT dvcman_receive_channel_data_first(IWTSVirtualChannelManager* pChannelMgr, UINT32 ChannelId, UINT32 length)
static UINT dvcman_receive_channel_data_first(IWTSVirtualChannelManager* pChannelMgr,
UINT32 ChannelId, UINT32 length)
{
DVCMAN_CHANNEL* channel;
@ -624,7 +637,8 @@ UINT dvcman_receive_channel_data_first(IWTSVirtualChannelManager* pChannelMgr, U
*
* @return 0 on success, otherwise a Win32 error code
*/
UINT dvcman_receive_channel_data(IWTSVirtualChannelManager* pChannelMgr, UINT32 ChannelId, wStream* data)
static UINT dvcman_receive_channel_data(IWTSVirtualChannelManager* pChannelMgr,
UINT32 ChannelId, wStream* data)
{
UINT status = CHANNEL_RC_OK;
DVCMAN_CHANNEL* channel;
@ -696,7 +710,7 @@ static UINT drdynvc_write_variable_uint(wStream* s, UINT32 val)
*
* @return 0 on success, otherwise a Win32 error code
*/
UINT drdynvc_send(drdynvcPlugin* drdynvc, wStream* s)
static UINT drdynvc_send(drdynvcPlugin* drdynvc, wStream* s)
{
UINT status;
@ -725,7 +739,8 @@ UINT drdynvc_send(drdynvcPlugin* drdynvc, wStream* s)
*
* @return 0 on success, otherwise a Win32 error code
*/
UINT drdynvc_write_data(drdynvcPlugin* drdynvc, UINT32 ChannelId, BYTE* data, UINT32 dataSize)
UINT drdynvc_write_data(drdynvcPlugin* drdynvc, UINT32 ChannelId,
const BYTE* data, UINT32 dataSize)
{
wStream* data_out;
unsigned long pos;
@ -863,7 +878,8 @@ static UINT drdynvc_send_capability_response(drdynvcPlugin* drdynvc)
*
* @return 0 on success, otherwise a Win32 error code
*/
static UINT drdynvc_process_capability_request(drdynvcPlugin* drdynvc, int Sp, int cbChId, wStream* s)
static UINT drdynvc_process_capability_request(drdynvcPlugin* drdynvc, int Sp,
int cbChId, wStream* s)
{
UINT status;
@ -917,7 +933,8 @@ static UINT32 drdynvc_read_variable_uint(wStream* s, int cbLen)
*
* @return 0 on success, otherwise a Win32 error code
*/
static UINT drdynvc_process_create_request(drdynvcPlugin* drdynvc, int Sp, int cbChId, wStream* s)
static UINT drdynvc_process_create_request(drdynvcPlugin* drdynvc, int Sp,
int cbChId, wStream* s)
{
unsigned long pos;
UINT status;
@ -1002,7 +1019,8 @@ static UINT drdynvc_process_create_request(drdynvcPlugin* drdynvc, int Sp, int c
*
* @return 0 on success, otherwise a Win32 error code
*/
static UINT drdynvc_process_data_first(drdynvcPlugin* drdynvc, int Sp, int cbChId, wStream* s)
static UINT drdynvc_process_data_first(drdynvcPlugin* drdynvc, int Sp,
int cbChId, wStream* s)
{
UINT status;
UINT32 Length;
@ -1040,7 +1058,8 @@ static UINT drdynvc_process_data(drdynvcPlugin* drdynvc, int Sp, int cbChId, wSt
*
* @return 0 on success, otherwise a Win32 error code
*/
static UINT drdynvc_process_close_request(drdynvcPlugin* drdynvc, int Sp, int cbChId, wStream* s)
static UINT drdynvc_process_close_request(drdynvcPlugin* drdynvc, int Sp,
int cbChId, wStream* s)
{
int value;
UINT error;
@ -1138,7 +1157,7 @@ static wListDictionary* g_OpenHandles = NULL;
*
* @return 0 on success, otherwise a Win32 error code
*/
UINT drdynvc_add_init_handle_data(void* pInitHandle, void* pUserData)
static UINT drdynvc_add_init_handle_data(void* pInitHandle, void* pUserData)
{
if (!g_InitHandles)
g_InitHandles = ListDictionary_New(TRUE);
@ -1158,14 +1177,14 @@ UINT drdynvc_add_init_handle_data(void* pInitHandle, void* pUserData)
return CHANNEL_RC_OK;
}
void* drdynvc_get_init_handle_data(void* pInitHandle)
static void* drdynvc_get_init_handle_data(void* pInitHandle)
{
void* pUserData = NULL;
pUserData = ListDictionary_GetItemValue(g_InitHandles, pInitHandle);
return pUserData;
}
void drdynvc_remove_init_handle_data(void* pInitHandle)
static void drdynvc_remove_init_handle_data(void* pInitHandle)
{
ListDictionary_Remove(g_InitHandles, pInitHandle);
@ -1181,7 +1200,7 @@ void drdynvc_remove_init_handle_data(void* pInitHandle)
*
* @return 0 on success, otherwise a Win32 error code
*/
UINT drdynvc_add_open_handle_data(DWORD openHandle, void* pUserData)
static UINT drdynvc_add_open_handle_data(DWORD openHandle, void* pUserData)
{
void* pOpenHandle = (void*) (size_t) openHandle;
@ -1203,7 +1222,7 @@ UINT drdynvc_add_open_handle_data(DWORD openHandle, void* pUserData)
return CHANNEL_RC_OK;
}
void* drdynvc_get_open_handle_data(DWORD openHandle)
static void* drdynvc_get_open_handle_data(DWORD openHandle)
{
void* pUserData = NULL;
void* pOpenHandle = (void*) (size_t) openHandle;
@ -1211,7 +1230,7 @@ void* drdynvc_get_open_handle_data(DWORD openHandle)
return pUserData;
}
void drdynvc_remove_open_handle_data(DWORD openHandle)
static void drdynvc_remove_open_handle_data(DWORD openHandle)
{
void* pOpenHandle = (void*) (size_t) openHandle;
@ -1370,7 +1389,8 @@ static void* drdynvc_virtual_channel_client_thread(void* arg)
*
* @return 0 on success, otherwise a Win32 error code
*/
static UINT drdynvc_virtual_channel_event_connected(drdynvcPlugin* drdynvc, LPVOID pData, UINT32 dataLength)
static UINT drdynvc_virtual_channel_event_connected(drdynvcPlugin* drdynvc,
LPVOID pData, UINT32 dataLength)
{
UINT32 status;
UINT32 index;
@ -1452,7 +1472,8 @@ static UINT drdynvc_virtual_channel_event_disconnected(drdynvcPlugin* drdynvc)
{
UINT status;
if (MessageQueue_PostQuit(drdynvc->queue, 0) && (WaitForSingleObject(drdynvc->thread, INFINITE) == WAIT_FAILED))
if (MessageQueue_PostQuit(drdynvc->queue, 0) &&
(WaitForSingleObject(drdynvc->thread, INFINITE) == WAIT_FAILED))
{
status = GetLastError();
WLog_ERR(TAG, "WaitForSingleObject failed with error %lu", status);
@ -1541,7 +1562,7 @@ static VOID VCAPITYPE drdynvc_virtual_channel_init_event(LPVOID pInitHandle,
* Channel Client Interface
*/
int drdynvc_get_version(DrdynvcClientContext* context)
static int drdynvc_get_version(DrdynvcClientContext* context)
{
drdynvcPlugin* drdynvc = (drdynvcPlugin*) context->handle;
return drdynvc->version;

View File

@ -138,6 +138,4 @@ struct drdynvc_plugin
IWTSVirtualChannelManager* channel_mgr;
};
UINT drdynvc_write_data(drdynvcPlugin* plugin, UINT32 ChannelId, BYTE* data, UINT32 data_size);
#endif

View File

@ -25,13 +25,9 @@ include_directories(..)
add_channel_client_library(${MODULE_PREFIX} ${MODULE_NAME} ${CHANNEL_NAME} TRUE "DVCPluginEntry")
target_link_libraries(${MODULE_NAME} freerdp)
if (WITH_DEBUG_SYMBOLS AND MSVC AND NOT STATIC_CHANNELS AND BUILD_SHARED_LIBS)
install(FILES ${CMAKE_BINARY_DIR}/${MODULE_NAME}.pdb DESTINATION ${FREERDP_ADDIN_PATH} COMPONENT symbols)
endif()
target_link_libraries(${MODULE_NAME} winpr)
set_property(TARGET ${MODULE_NAME} PROPERTY FOLDER "Channels/${CHANNEL_NAME}/Client")

View File

@ -92,19 +92,22 @@ static UINT rdpgfx_send_caps_advertise_pdu(RDPGFX_CHANNEL_CALLBACK* callback)
if (gfx->H264)
capsSet->flags |= RDPGFX_CAPS_FLAG_AVC420_ENABLED;
capsSet = &capsSets[pdu.capsSetCount++];
capsSet->version = RDPGFX_CAPVERSION_10;
capsSet->flags = 0;
if (gfx->AVC444)
{
capsSet = &capsSets[pdu.capsSetCount++];
capsSet->version = RDPGFX_CAPVERSION_10;
capsSet->flags = 0;
if (gfx->SmallCache)
capsSet->flags |= RDPGFX_CAPS_FLAG_SMALL_CACHE;
if (gfx->SmallCache)
capsSet->flags |= RDPGFX_CAPS_FLAG_SMALL_CACHE;
if (!gfx->H264)
capsSet->flags |= RDPGFX_CAPS_FLAG_AVC_DISABLED;
if (!gfx->H264)
capsSet->flags |= RDPGFX_CAPS_FLAG_AVC_DISABLED;
}
header.pduLength = RDPGFX_HEADER_SIZE + 2 + (pdu.capsSetCount * RDPGFX_CAPSET_SIZE);
WLog_DBG(TAG, "SendCapsAdvertisePdu");
WLog_DBG(TAG, "SendCapsAdvertisePdu %d", pdu.capsSetCount);
s = Stream_New(NULL, header.pduLength);
if (!s)
@ -1573,6 +1576,7 @@ UINT DVCPluginEntry(IDRDYNVC_ENTRY_POINTS* pEntryPoints)
gfx->Progressive = gfx->settings->GfxProgressive;
gfx->ProgressiveV2 = gfx->settings->GfxProgressiveV2;
gfx->H264 = gfx->settings->GfxH264;
gfx->AVC444 = gfx->settings->GfxAVC444;
if (gfx->H264)
gfx->SmallCache = TRUE;
@ -1582,7 +1586,6 @@ UINT DVCPluginEntry(IDRDYNVC_ENTRY_POINTS* pEntryPoints)
gfx->MaxCacheSlot = (gfx->ThinClient) ? 4096 : 25600;
context = (RdpgfxClientContext*) calloc(1, sizeof(RdpgfxClientContext));
if (!context)

View File

@ -66,6 +66,7 @@ struct _RDPGFX_PLUGIN
BOOL Progressive;
BOOL ProgressiveV2;
BOOL H264;
BOOL AVC444;
ZGFX_CONTEXT* zgfx;
UINT32 UnacknowledgedFrames;

View File

@ -25,7 +25,7 @@ add_channel_client_library(${MODULE_PREFIX} ${MODULE_NAME} ${CHANNEL_NAME} FALSE
target_link_libraries(${MODULE_NAME} winpr freerdp)
target_link_libraries(${MODULE_NAME} winpr freerdp ${CMAKE_THREAD_LIBS_INIT})
set_property(TARGET ${MODULE_NAME} PROPERTY FOLDER "Channels/${CHANNEL_NAME}/Client")

View File

@ -38,7 +38,7 @@ set(${MODULE_PREFIX}_LIBS ${${MODULE_PREFIX}_LIBS}
${CORE_AUDIO}
${CORE_FOUNDATION})
set(${MODULE_PREFIX}_LIBS ${${MODULE_PREFIX}_LIBS} freerdp)
set(${MODULE_PREFIX}_LIBS ${${MODULE_PREFIX}_LIBS} freerdp winpr)
target_link_libraries(${MODULE_NAME} ${${MODULE_PREFIX}_LIBS})

View File

@ -29,6 +29,7 @@ add_channel_client_subsystem_library(${MODULE_PREFIX} ${MODULE_NAME} ${CHANNEL_N
list(APPEND ${MODULE_PREFIX}_LIBS ${PULSE_LIBRARY})
list(APPEND ${MODULE_PREFIX}_LIBS freerdp)
list(APPEND ${MODULE_PREFIX}_LIBS winpr)
if(GSM_FOUND)
list(APPEND ${MODULE_PREFIX}_LIBS ${GSM_LIBRARIES})

View File

@ -40,7 +40,7 @@ add_channel_client_library(${MODULE_PREFIX} ${MODULE_NAME} ${CHANNEL_NAME} TRUE
target_link_libraries(${MODULE_NAME} freerdp)
target_link_libraries(${MODULE_NAME} freerdp winpr)
if (WITH_DEBUG_SYMBOLS AND MSVC AND NOT STATIC_CHANNELS AND BUILD_SHARED_LIBS)
install(FILES ${CMAKE_BINARY_DIR}/${MODULE_NAME}.pdb DESTINATION ${FREERDP_ADDIN_PATH} COMPONENT symbols)

View File

@ -26,5 +26,4 @@ include_directories(${ALSA_INCLUDE_DIRS})
add_channel_client_subsystem_library(${MODULE_PREFIX} ${MODULE_NAME} ${CHANNEL_NAME} "" TRUE "")
target_link_libraries(${MODULE_NAME} freerdp ${ALSA_LIBRARIES})
target_link_libraries(${MODULE_NAME} ${ALSA_LIBRARIES} winpr freerdp)

View File

@ -47,6 +47,9 @@ else()
set(SRC ${SRC}
tsmf_X11.c)
set(LIBS ${LIBS} ${X11_LIBRARIES} ${XEXT_LIBRARIES})
if (NOT APPLE)
list(APPEND LIBS rt)
endif()
if(XEXT_FOUND)
add_definitions(-DWITH_XEXT=1)
@ -59,7 +62,4 @@ set(${MODULE_PREFIX}_SRCS "${SRC}")
include_directories(..)
add_channel_client_subsystem_library(${MODULE_PREFIX} ${MODULE_NAME} ${CHANNEL_NAME} "" TRUE "")
target_link_libraries(${MODULE_NAME} ${LIBS} freerdp)
target_link_libraries(${MODULE_NAME} ${LIBS} winpr)

View File

@ -24,7 +24,5 @@ include_directories(..)
include_directories(${OSS_INCLUDE_DIRS})
add_channel_client_subsystem_library(${MODULE_PREFIX} ${MODULE_NAME} ${CHANNEL_NAME} "" TRUE "")
target_link_libraries(${MODULE_NAME} winpr)
target_link_libraries(${MODULE_NAME} freerdp ${OSS_LIBRARIES})

View File

@ -24,7 +24,4 @@ include_directories(..)
include_directories(${PULSE_INCLUDE_DIR})
add_channel_client_subsystem_library(${MODULE_PREFIX} ${MODULE_NAME} ${CHANNEL_NAME} "" TRUE "")
target_link_libraries(${MODULE_NAME} freerdp)
target_link_libraries(${MODULE_NAME} winpr ${PULSE_LIBRARY})

View File

@ -359,12 +359,10 @@ static void tsmf_pulse_free(ITSMFAudioDevice *audio)
}
#ifdef STATIC_CHANNELS
#define freerdp_tsmf_client_audio_subsystem_entry pulse_freerdp_tsmf_client_audio_subsystem_entry
ITSMFAudioDevice *pulse_freerdp_tsmf_client_audio_subsystem_entry(void)
#else
#define freerdp_tsmf_client_audio_subsystem_entry FREERDP_API freerdp_tsmf_client_audio_subsystem_entry
FREERDP_API ITSMFAudioDevice *freerdp_tsmf_client_audio_subsystem_entry(void)
#endif
ITSMFAudioDevice *freerdp_tsmf_client_audio_subsystem_entry(void)
{
TSMFPulseAudioDevice *pulse;

View File

@ -37,16 +37,14 @@ add_channel_client_library(${MODULE_PREFIX} ${MODULE_NAME} ${CHANNEL_NAME} TRUE
#set(${MODULE_PREFIX}_LIBS ${${MODULE_PREFIX}_LIBS} libusb-devman)
set(${MODULE_PREFIX}_LIBS
${DBUS_GLIB_LIBRARIES}
${UUID_LIBRARIES})
set(${MODULE_PREFIX}_LIBS)
if (UDEV_FOUND AND UDEV_LIBRARIES)
set(${MODULE_PREFIX}_LIBS ${${MODULE_PREFIX}_LIBS} ${UDEV_LIBRARIES})
endif()
set(${MODULE_PREFIX}_LIBS ${${MODULE_PREFIX}_LIBS} winpr freerdp)
target_link_libraries(${MODULE_NAME} ${${MODULE_PREFIX}_LIBS})
target_link_libraries(${MODULE_NAME} ${PRIVATE_KEYWOARD} ${${MODULE_PREFIX}_LIBS})
if (WITH_DEBUG_SYMBOLS AND MSVC AND NOT STATIC_CHANNELS AND BUILD_SHARED_LIBS)
install(FILES ${CMAKE_BINARY_DIR}/${MODULE_NAME}.pdb DESTINATION ${FREERDP_ADDIN_PATH} COMPONENT symbols)

View File

@ -35,8 +35,6 @@ set(${MODULE_PREFIX}_LIBS
${CMAKE_THREAD_LIBS_INIT})
set(${MODULE_PREFIX}_LIBS ${${MODULE_PREFIX}_LIBS}
${DBUS_GLIB_LIBRARIES}
${UUID_LIBRARIES}
${LIBUSB_1_LIBRARIES})

View File

@ -45,3 +45,4 @@ set (WITH_DEBUG_X11_CLIPRDR OFF CACHE BOOL "enable debug")
set (WITH_DEBUG_X11_LOCAL_MOVESIZE OFF CACHE BOOL "enable debug")
set (WITH_DEBUG_XV OFF CACHE BOOL "enable debug")
set (WITH_SAMPLE ON CACHE BOOL "samples")
set (WITH_NO_UNDEFINED ON CACHE BOOL "don't link with undefined symbols")

View File

@ -31,7 +31,6 @@ set(${MODULE_PREFIX}_SRCS
add_executable(${MODULE_NAME} ${${MODULE_PREFIX}_SRCS})
set(${MODULE_PREFIX}_LIBS ${${MODULE_PREFIX}_LIBS} ${CMAKE_DL_LIBS})
set(${MODULE_PREFIX}_LIBS ${${MODULE_PREFIX}_LIBS} freerdp-client freerdp uwac)
target_link_libraries(${MODULE_NAME} ${${MODULE_PREFIX}_LIBS})

View File

@ -70,8 +70,7 @@ else()
endif()
set(${MODULE_PREFIX}_LIBS
${X11_LIBRARIES}
${CMAKE_DL_LIBS})
${X11_LIBRARIES})
if(WITH_MANPAGES)
find_program(XSLTPROC_EXECUTABLE NAMES xsltproc)
@ -203,11 +202,14 @@ endif()
include_directories(${CMAKE_SOURCE_DIR}/resources)
set(${MODULE_PREFIX}_LIBS ${${MODULE_PREFIX}_LIBS} freerdp freerdp-client)
target_link_libraries(${MODULE_NAME} ${${MODULE_PREFIX}_LIBS})
set(${MODULE_PREFIX}_LIBS ${${MODULE_PREFIX}_LIBS} freerdp-client freerdp m)
if (NOT APPLE)
list(APPEND ${MODULE_PREFIX}_LIBS rt)
endif()
target_link_libraries(${MODULE_NAME} ${PRIVATE_KEYWORD} ${${MODULE_PREFIX}_LIBS})
if(WITH_IPP)
target_link_libraries(${MODULE_NAME} ${IPP_LIBRARY_LIST})
target_link_libraries(${MODULE_NAME} ${PRIVATE_KEYWORD} ${IPP_LIBRARY_LIST})
endif()
if(WITH_CLIENT_INTERFACE)

View File

@ -26,7 +26,7 @@ set(${MODULE_PREFIX}_SRCS
add_executable(${MODULE_NAME} ${${MODULE_PREFIX}_SRCS})
set_target_properties(${MODULE_NAME} PROPERTIES OUTPUT_NAME "xfreerdp" RUNTIME_OUTPUT_DIRECTORY "..")
set(${MODULE_PREFIX}_LIBS ${${MODULE_PREFIX}_LIBS} xfreerdp-client)
set(${MODULE_PREFIX}_LIBS ${${MODULE_PREFIX}_LIBS} xfreerdp-client freerdp-client)
if(OPENBSD)
target_link_libraries(${MODULE_NAME} ${${MODULE_PREFIX}_LIBS} ossaudio)

View File

@ -61,16 +61,11 @@ endif()
add_library(${MODULE_NAME} ${${MODULE_PREFIX}_SRCS})
include_directories(${OPENSSL_INCLUDE_DIR})
include_directories(${ZLIB_INCLUDE_DIRS})
if (WITH_LIBRARY_VERSIONING)
set_target_properties(${MODULE_NAME} PROPERTIES VERSION ${FREERDP_VERSION} SOVERSION ${FREERDP_API_VERSION})
endif()
set(${MODULE_PREFIX}_LIBS ${${MODULE_PREFIX}_LIBS}
${OPENSSL_LIBRARIES} ${ZLIB_LIBRARIES})
set(${MODULE_PREFIX}_LIBS ${${MODULE_PREFIX}_LIBS} winpr freerdp)
set(${MODULE_PREFIX}_LIBS ${${MODULE_PREFIX}_LIBS} winpr)
target_link_libraries(${MODULE_NAME} ${PRIVATE_KEYWORD} ${FREERDP_CHANNELS_CLIENT_LIBS})
if(OPENBSD)

View File

@ -119,11 +119,11 @@ static COMMAND_LINE_ARGUMENT_A args[] =
{ "themes", COMMAND_LINE_VALUE_BOOL, NULL, BoolValueTrue, NULL, -1, NULL, "Themes" },
{ "wallpaper", COMMAND_LINE_VALUE_BOOL, NULL, BoolValueTrue, NULL, -1, NULL, "Wallpaper" },
{ "gdi", COMMAND_LINE_VALUE_REQUIRED, "<sw|hw>", NULL, NULL, -1, NULL, "GDI rendering" },
{ "gfx", COMMAND_LINE_VALUE_OPTIONAL, NULL, NULL, NULL, -1, NULL, "RDP8 graphics pipeline (experimental)" },
{ "gfx", COMMAND_LINE_VALUE_OPTIONAL, "<RFX|AVC420|AVC444>", NULL, NULL, -1, NULL, "RDP8 graphics pipeline (experimental)" },
{ "gfx-thin-client", COMMAND_LINE_VALUE_BOOL, NULL, BoolValueFalse, NULL, -1, NULL, "RDP8 graphics pipeline thin client mode" },
{ "gfx-small-cache", COMMAND_LINE_VALUE_BOOL, NULL, BoolValueFalse, NULL, -1, NULL, "RDP8 graphics pipeline small cache mode" },
{ "gfx-progressive", COMMAND_LINE_VALUE_BOOL, NULL, BoolValueFalse, NULL, -1, NULL, "RDP8 graphics pipeline progressive codec" },
{ "gfx-h264", COMMAND_LINE_VALUE_BOOL, NULL, BoolValueFalse, NULL, -1, NULL, "RDP8.1 graphics pipeline H264 codec" },
{ "gfx-h264", COMMAND_LINE_VALUE_OPTIONAL, "<AVC420|AVC444>", NULL, NULL, -1, NULL, "RDP8.1 graphics pipeline H264 codec" },
{ "rfx", COMMAND_LINE_VALUE_FLAG, NULL, NULL, NULL, -1, NULL, "RemoteFX" },
{ "rfx-mode", COMMAND_LINE_VALUE_REQUIRED, "<image|video>", NULL, NULL, -1, NULL, "RemoteFX mode" },
{ "frame-ack", COMMAND_LINE_VALUE_REQUIRED, "<number>", NULL, NULL, -1, NULL, "Frame acknowledgement" },
@ -2000,6 +2000,20 @@ int freerdp_client_settings_parse_command_line_arguments(rdpSettings* settings,
CommandLineSwitchCase(arg, "gfx")
{
settings->SupportGraphicsPipeline = TRUE;
if (arg->Value)
{
if (_strnicmp("AVC444", arg->Value, 6) == 0)
{
settings->GfxH264 = TRUE;
settings->GfxAVC444 = TRUE;
}
else if (_strnicmp("AVC420", arg->Value, 6) == 0)
{
settings->GfxH264 = TRUE;
}
else if (_strnicmp("RFX", arg->Value, 3) != 0)
return COMMAND_LINE_ERROR;
}
}
CommandLineSwitchCase(arg, "gfx-thin-client")
{
@ -2019,8 +2033,17 @@ int freerdp_client_settings_parse_command_line_arguments(rdpSettings* settings,
}
CommandLineSwitchCase(arg, "gfx-h264")
{
settings->GfxH264 = arg->Value ? TRUE : FALSE;
settings->SupportGraphicsPipeline = TRUE;
settings->GfxH264 = TRUE;
if (arg->Value)
{
if (_strnicmp("AVC444", arg->Value, 6) == 0)
{
settings->GfxAVC444 = TRUE;
}
else if (_strnicmp("AVC420", arg->Value, 6) != 0)
return COMMAND_LINE_ERROR;
}
}
CommandLineSwitchCase(arg, "rfx")
{

View File

@ -56,7 +56,8 @@ endif()
option(WITH_SMARTCARD_INSPECT "Enable SmartCard API Inspector" OFF)
option(BUILD_TESTING "Build unit tests" OFF)
CMAKE_DEPENDENT_OPTION(TESTS_WTSAPI_EXTRA "Build extra WTSAPI tests (interactive)" OFF "BUILD_TESTING" ON)
CMAKE_DEPENDENT_OPTION(TESTS_WTSAPI_EXTRA "Build extra WTSAPI tests (interactive)" OFF "BUILD_TESTING" OFF)
CMAKE_DEPENDENT_OPTION(BUILD_COMM_TESTS "Build comm related tests (require comm port)" OFF "BUILD_TESTING" OFF)
option(WITH_SAMPLE "Build sample code" OFF)

View File

@ -78,7 +78,7 @@ struct _IWTSVirtualChannel
/* Starts a write request on the channel. */
UINT (*Write)(IWTSVirtualChannel *pChannel,
ULONG cbSize,
BYTE *pBuffer,
const BYTE *pBuffer,
void *pReserved);
/* Closes the channel. */
UINT (*Close)(IWTSVirtualChannel *pChannel);

View File

@ -768,6 +768,7 @@ typedef struct _RDPDR_PARALLEL RDPDR_PARALLEL;
#define FreeRDP_GfxProgressive 3842
#define FreeRDP_GfxProgressiveV2 3843
#define FreeRDP_GfxH264 3844
#define FreeRDP_GfxAVC444 3845
#define FreeRDP_BitmapCacheV3CodecId 3904
#define FreeRDP_DrawNineGridEnabled 3968
#define FreeRDP_DrawNineGridCacheSize 3969
@ -1314,7 +1315,8 @@ struct rdp_settings
ALIGN64 BOOL GfxProgressive; /* 3842 */
ALIGN64 BOOL GfxProgressiveV2; /* 3843 */
ALIGN64 BOOL GfxH264; /* 3844 */
UINT64 padding3904[3904 - 3845]; /* 3845 */
ALIGN64 BOOL GfxAVC444; /* 3845 */
UINT64 padding3904[3904 - 3846]; /* 3846 */
/**
* Caches

View File

@ -300,7 +300,7 @@ if (WITH_LIBRARY_VERSIONING)
endif()
target_link_libraries(${MODULE_NAME} ${LIBFREERDP_LIBS} winpr)
target_link_libraries(${MODULE_NAME} ${PRIVATE_KEYWORD} ${LIBFREERDP_LIBS} winpr)
install(TARGETS ${MODULE_NAME} DESTINATION ${CMAKE_INSTALL_LIBDIR} COMPONENT libraries EXPORT FreeRDPTargets)
if (WITH_DEBUG_SYMBOLS AND MSVC AND BUILD_SHARED_LIBS)
install(FILES ${CMAKE_PDB_BINARY_DIR}/${MODULE_NAME}.pdb DESTINATION ${CMAKE_INSTALL_LIBDIR} COMPONENT symbols)

View File

@ -1555,7 +1555,7 @@ int freerdp_image_copy_from_pointer_data(BYTE* pDstData, UINT32 DstFormat,
if (xorBpp == 8 && !palette)
{
WLog_ERR(TAG, "null palette in convertion from %d bpp to %d bpp",
WLog_ERR(TAG, "null palette in conversion from %d bpp to %d bpp",
xorBpp, dstBitsPerPixel);
return -1;
}

View File

@ -21,7 +21,7 @@ create_test_sourcelist(${MODULE_PREFIX}_SRCS
add_executable(${MODULE_NAME} ${${MODULE_PREFIX}_SRCS})
target_link_libraries(${MODULE_NAME} freerdp)
target_link_libraries(${MODULE_NAME} freerdp winpr)
set_target_properties(${MODULE_NAME} PROPERTIES RUNTIME_OUTPUT_DIRECTORY "${TESTING_OUTPUT_DIRECTORY}")

View File

@ -25,10 +25,6 @@ set(${MODULE_PREFIX}_SRCS
freerdp_module_add(${${MODULE_PREFIX}_SRCS})
freerdp_include_directory_add(${ZLIB_INCLUDE_DIRS})
freerdp_library_add(${ZLIB_LIBRARIES})
if(BUILD_TESTING)
add_subdirectory(test)
endif()

View File

@ -1101,6 +1101,9 @@ BOOL freerdp_get_param_bool(rdpSettings* settings, int id)
case FreeRDP_GfxH264:
return settings->GfxH264;
case FreeRDP_GfxAVC444:
return settings->GfxAVC444;
case FreeRDP_DrawNineGridEnabled:
return settings->DrawNineGridEnabled;
@ -1612,6 +1615,10 @@ int freerdp_set_param_bool(rdpSettings* settings, int id, BOOL param)
settings->GfxH264 = param;
break;
case FreeRDP_GfxAVC444:
settings->GfxAVC444 = param;
break;
case FreeRDP_DrawNineGridEnabled:
settings->DrawNineGridEnabled = param;
break;

View File

@ -21,7 +21,6 @@ set(MODULE_PREFIX "FREERDP_CORE")
freerdp_definition_add(-DEXT_PATH="${FREERDP_EXTENSION_PATH}")
freerdp_include_directory_add(${OPENSSL_INCLUDE_DIR})
freerdp_include_directory_add(${ZLIB_INCLUDE_DIRS})
set(${MODULE_PREFIX}_GATEWAY_DIR "gateway")
@ -135,8 +134,6 @@ freerdp_module_add(${${MODULE_PREFIX}_SRCS})
if(WIN32)
set(${MODULE_PREFIX}_LIBS ${${MODULE_PREFIX}_LIBS} ws2_32)
freerdp_library_add(ws2_32)
else()
freerdp_library_add(${ZLIB_LIBRARIES})
endif()
freerdp_library_add(${OPENSSL_LIBRARIES})

View File

@ -648,7 +648,7 @@ BOOL rdp_server_establish_keys(rdpRdp* rdp, wStream* s)
rdp->rc4_decrypt_key = winpr_RC4_New(rdp->decrypt_key, rdp->rc4_key_len);
rdp->rc4_encrypt_key = winpr_RC4_New(rdp->encrypt_key, rdp->rc4_key_len);
if (!rdp->rc4_decrypt_key || rdp->rc4_encrypt_key)
if (!rdp->rc4_decrypt_key || !rdp->rc4_encrypt_key)
goto end;
ret = TRUE;

View File

@ -210,9 +210,11 @@ BOOL rdp_read_extended_info_packet(rdpRdp* rdp, wStream* s)
/* cbClientAddress is the size in bytes of the character data in the clientAddress field.
* This size includes the length of the mandatory null terminator.
* The maximum allowed value is 80 bytes
* Note: Although according to [MS-RDPBCGR 2.2.1.11.1.1.1] the null terminator
* is mandatory, connections via Microsoft's TS Gateway set cbClientAddress to 0.
*/
if ((cbClientAddress % 2) || cbClientAddress < 2 || cbClientAddress > 80)
if ((cbClientAddress % 2) || cbClientAddress > 80)
{
WLog_ERR(TAG, "protocol error: invalid cbClientAddress value: %u", cbClientAddress);
return FALSE;
@ -229,18 +231,22 @@ BOOL rdp_read_extended_info_packet(rdpRdp* rdp, wStream* s)
settings->ClientAddress = NULL;
}
wstr = (WCHAR*) Stream_Pointer(s);
if (wstr[cbClientAddress / 2 - 1])
if (cbClientAddress)
{
WLog_ERR(TAG, "protocol error: clientAddress must be null terminated");
return FALSE;
wstr = (WCHAR*) Stream_Pointer(s);
if (wstr[cbClientAddress / 2 - 1])
{
WLog_ERR(TAG, "protocol error: clientAddress must be null terminated");
return FALSE;
}
if (ConvertFromUnicode(CP_UTF8, 0, wstr, -1, &settings->ClientAddress, 0, NULL, NULL) < 1)
{
WLog_ERR(TAG, "failed to convert client address");
return FALSE;
}
Stream_Seek(s, cbClientAddress);
WLog_DBG(TAG, "rdp client address: [%s]", settings->ClientAddress);
}
if (ConvertFromUnicode(CP_UTF8, 0, wstr, -1, &settings->ClientAddress, 0, NULL, NULL) < 1)
{
WLog_ERR(TAG, "failed to convert client address");
return FALSE;
}
Stream_Seek(s, cbClientAddress);
if (Stream_GetRemainingLength(s) < 2)
return FALSE;
@ -249,10 +255,13 @@ BOOL rdp_read_extended_info_packet(rdpRdp* rdp, wStream* s)
/* cbClientDir is the size in bytes of the character data in the clientDir field.
* This size includes the length of the mandatory null terminator.
* The maximum allowed value is 512 bytes
* The maximum allowed value is 512 bytes.
* Note: Although according to [MS-RDPBCGR 2.2.1.11.1.1.1] the null terminator
* is mandatory the Microsoft Android client (starting with version 8.1.31.44)
* sets cbClientDir to 0.
*/
if ((cbClientDir % 2) || cbClientDir < 2 || cbClientDir > 512)
if ((cbClientDir % 2) || cbClientDir > 512)
{
WLog_ERR(TAG, "protocol error: invalid cbClientDir value: %u", cbClientDir);
return FALSE;
@ -267,18 +276,22 @@ BOOL rdp_read_extended_info_packet(rdpRdp* rdp, wStream* s)
settings->ClientDir = NULL;
}
wstr = (WCHAR*) Stream_Pointer(s);
if (wstr[cbClientDir / 2 - 1])
if (cbClientDir)
{
WLog_ERR(TAG, "protocol error: clientDir must be null terminated");
return FALSE;
wstr = (WCHAR*) Stream_Pointer(s);
if (wstr[cbClientDir / 2 - 1])
{
WLog_ERR(TAG, "protocol error: clientDir must be null terminated");
return FALSE;
}
if (ConvertFromUnicode(CP_UTF8, 0, (WCHAR*) Stream_Pointer(s), -1, &settings->ClientDir, 0, NULL, NULL) < 1)
{
WLog_ERR(TAG, "failed to convert client directory");
return FALSE;
}
Stream_Seek(s, cbClientDir);
WLog_DBG(TAG, "rdp client dir: [%s]", settings->ClientDir);
}
if (ConvertFromUnicode(CP_UTF8, 0, (WCHAR*) Stream_Pointer(s), -1, &settings->ClientDir, 0, NULL, NULL) < 1)
{
WLog_ERR(TAG, "failed to convert client directory");
return FALSE;
}
Stream_Seek(s, cbClientDir);
if (!rdp_read_client_time_zone(s, settings))
return FALSE;

View File

@ -5,6 +5,7 @@
* Copyright 2010-2012 Marc-Andre Moreau <marcandre.moreau@gmail.com>
* Copyright 2015 Thincast Technologies GmbH
* Copyright 2015 DI (FH) Martin Haimberger <martin.haimberger@thincast.com>
* Copyright 2016 Martin Fleisz <martin.fleisz@thincast.com>
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
@ -54,7 +55,8 @@
* version [0] INTEGER,
* negoTokens [1] NegoData OPTIONAL,
* authInfo [2] OCTET STRING OPTIONAL,
* pubKeyAuth [3] OCTET STRING OPTIONAL
* pubKeyAuth [3] OCTET STRING OPTIONAL,
* errorCode [4] INTEGER OPTIONAL
* }
*
* NegoData ::= SEQUENCE OF NegoDataItem
@ -548,7 +550,10 @@ int nla_client_authenticate(rdpNla* nla)
}
if (nla_client_begin(nla) < 1)
{
Stream_Free(s, TRUE);
return -1;
}
while (nla->state < NLA_STATE_AUTH_INFO)
{
@ -566,7 +571,10 @@ int nla_client_authenticate(rdpNla* nla)
status = nla_recv_pdu(nla, s);
if (status < 0)
{
Stream_Free(s, TRUE);
return -1;
}
}
Stream_Free(s, TRUE);
@ -780,8 +788,28 @@ int nla_server_authenticate(rdpNla* nla)
if ((nla->status != SEC_E_OK) && (nla->status != SEC_I_CONTINUE_NEEDED))
{
/* Special handling of these specific error codes as NTSTATUS_FROM_WIN32
unfortunately does not map directly to the corresponding NTSTATUS values
*/
switch (GetLastError())
{
case ERROR_PASSWORD_MUST_CHANGE:
nla->errorCode = STATUS_PASSWORD_MUST_CHANGE;
break;
case ERROR_PASSWORD_EXPIRED:
nla->errorCode = STATUS_PASSWORD_EXPIRED;
break;
case ERROR_ACCOUNT_DISABLED:
nla->errorCode = STATUS_ACCOUNT_DISABLED;
break;
default:
nla->errorCode = NTSTATUS_FROM_WIN32(GetLastError());
break;
}
WLog_ERR(TAG, "AcceptSecurityContext status %s [%08X]",
GetSecurityStatusString(nla->status), nla->status);
nla_send(nla);
return -1; /* Access Denied */
}
@ -1381,14 +1409,24 @@ BOOL nla_send(rdpNla* nla)
wStream* s;
int length;
int ts_request_length;
int nego_tokens_length;
int pub_key_auth_length;
int auth_info_length;
int nego_tokens_length = 0;
int pub_key_auth_length = 0;
int auth_info_length = 0;
int error_code_context_length = 0;
int error_code_length = 0;
nego_tokens_length = (nla->negoToken.cbBuffer > 0) ? nla_sizeof_nego_tokens(nla->negoToken.cbBuffer) : 0;
pub_key_auth_length = (nla->pubKeyAuth.cbBuffer > 0) ? nla_sizeof_pub_key_auth(nla->pubKeyAuth.cbBuffer) : 0;
auth_info_length = (nla->authInfo.cbBuffer > 0) ? nla_sizeof_auth_info(nla->authInfo.cbBuffer) : 0;
length = nego_tokens_length + pub_key_auth_length + auth_info_length;
if (nla->version < 3 || nla->errorCode == 0)
{
nego_tokens_length = (nla->negoToken.cbBuffer > 0) ? nla_sizeof_nego_tokens(nla->negoToken.cbBuffer) : 0;
pub_key_auth_length = (nla->pubKeyAuth.cbBuffer > 0) ? nla_sizeof_pub_key_auth(nla->pubKeyAuth.cbBuffer) : 0;
auth_info_length = (nla->authInfo.cbBuffer > 0) ? nla_sizeof_auth_info(nla->authInfo.cbBuffer) : 0;
}
else
{
error_code_length = ber_sizeof_integer(nla->errorCode);
error_code_context_length = ber_sizeof_contextual_tag(error_code_length);
}
length = nego_tokens_length + pub_key_auth_length + auth_info_length + error_code_context_length + error_code_length;
ts_request_length = nla_sizeof_ts_request(length);
s = Stream_New(NULL, ber_sizeof_sequence(ts_request_length));
@ -1404,7 +1442,7 @@ BOOL nla_send(rdpNla* nla)
ber_write_sequence_tag(s, ts_request_length); /* SEQUENCE */
/* [0] version */
ber_write_contextual_tag(s, 0, 3, TRUE);
ber_write_integer(s, 2); /* INTEGER */
ber_write_integer(s, nla->version); /* INTEGER */
/* [1] negoTokens (NegoData) */
if (nego_tokens_length > 0)
@ -1430,6 +1468,13 @@ BOOL nla_send(rdpNla* nla)
length -= ber_write_sequence_octet_string(s, 3, nla->pubKeyAuth.pvBuffer, nla->pubKeyAuth.cbBuffer);
}
/* [4] errorCode (INTEGER) */
if (error_code_length > 0)
{
ber_write_contextual_tag(s, 4, error_code_length, TRUE);
ber_write_integer(s, nla->errorCode);
}
Stream_SealLength(s);
transport_write(nla->transport, s);
Stream_Free(s, TRUE);
@ -1439,14 +1484,12 @@ BOOL nla_send(rdpNla* nla)
int nla_decode_ts_request(rdpNla* nla, wStream* s)
{
int length;
UINT32 version;
/* TSRequest */
if (!ber_read_sequence_tag(s, &length) ||
!ber_read_contextual_tag(s, 0, &length, TRUE) ||
!ber_read_integer(s, &version))
!ber_read_integer(s, &nla->version))
{
Stream_Free(s, TRUE);
return -1;
}
@ -1459,15 +1502,12 @@ int nla_decode_ts_request(rdpNla* nla, wStream* s)
!ber_read_octet_string_tag(s, &length) || /* OCTET STRING */
((int) Stream_GetRemainingLength(s)) < length)
{
Stream_Free(s, TRUE);
return -1;
}
if (!sspi_SecBufferAlloc(&nla->negoToken, length))
{
Stream_Free(s, TRUE);
return -1;
}
Stream_Read(s, nla->negoToken.pvBuffer, length);
nla->negoToken.cbBuffer = length;
}
@ -1477,16 +1517,11 @@ int nla_decode_ts_request(rdpNla* nla, wStream* s)
{
if (!ber_read_octet_string_tag(s, &length) || /* OCTET STRING */
((int) Stream_GetRemainingLength(s)) < length)
{
Stream_Free(s, TRUE);
return -1;
}
if (!sspi_SecBufferAlloc(&nla->authInfo, length))
{
Stream_Free(s, TRUE);
return -1;
}
Stream_Read(s, nla->authInfo.pvBuffer, length);
nla->authInfo.cbBuffer = length;
}
@ -1496,20 +1531,25 @@ int nla_decode_ts_request(rdpNla* nla, wStream* s)
{
if (!ber_read_octet_string_tag(s, &length) || /* OCTET STRING */
((int) Stream_GetRemainingLength(s)) < length)
{
Stream_Free(s, TRUE);
return -1;
}
if (!sspi_SecBufferAlloc(&nla->pubKeyAuth, length))
{
Stream_Free(s, TRUE);
return -1;
}
Stream_Read(s, nla->pubKeyAuth.pvBuffer, length);
nla->pubKeyAuth.cbBuffer = length;
}
/* [4] errorCode (INTEGER) */
if (nla->version >= 3)
{
if (ber_read_contextual_tag(s, 4, &length, TRUE) != FALSE)
{
if (!ber_read_integer(s, &nla->errorCode))
return -1;
}
}
return 1;
}
@ -1518,6 +1558,13 @@ int nla_recv_pdu(rdpNla* nla, wStream* s)
if (nla_decode_ts_request(nla, s) < 1)
return -1;
if (nla->errorCode)
{
WLog_ERR(TAG, "SPNEGO failed with NTSTATUS: %08X", nla->errorCode);
freerdp_set_last_error(nla->instance->context, nla->errorCode);
return -1;
}
if (nla_client_recv(nla) < 1)
return -1;
@ -1547,7 +1594,10 @@ int nla_recv(rdpNla* nla)
}
if (nla_decode_ts_request(nla, s) < 1)
{
Stream_Free(s, TRUE);
return -1;
}
Stream_Free(s, TRUE);
return 1;
@ -1667,6 +1717,7 @@ rdpNla* nla_new(freerdp* instance, rdpTransport* transport, rdpSettings* setting
nla->transport = transport;
nla->sendSeqNum = 0;
nla->recvSeqNum = 0;
nla->version = 3;
ZeroMemory(&nla->negoToken, sizeof(SecBuffer));
ZeroMemory(&nla->pubKeyAuth, sizeof(SecBuffer));

View File

@ -58,6 +58,8 @@ struct rdp_nla
rdpSettings* settings;
rdpTransport* transport;
UINT32 cbMaxToken;
UINT32 version;
UINT32 errorCode;
ULONG fContextReq;
ULONG pfContextAttr;
BOOL haveContext;

View File

@ -464,6 +464,7 @@ rdpSettings* freerdp_settings_new(DWORD flags)
settings->GfxProgressive = FALSE;
settings->GfxProgressiveV2 = FALSE;
settings->GfxH264 = FALSE;
settings->GfxAVC444 = FALSE;
settings->ClientAutoReconnectCookie = (ARC_CS_PRIVATE_PACKET*) calloc(1, sizeof(ARC_CS_PRIVATE_PACKET));
if (!settings->ClientAutoReconnectCookie)

View File

@ -25,7 +25,7 @@ add_executable(${MODULE_NAME} ${${MODULE_PREFIX}_SRCS})
add_definitions(-DTESTING_OUTPUT_DIRECTORY="${CMAKE_BINARY_DIR}")
add_definitions(-DTESTING_SRC_DIRECTORY="${CMAKE_SOURCE_DIR}")
target_link_libraries(${MODULE_NAME} freerdp-client freerdp winpr)
target_link_libraries(${MODULE_NAME} freerdp winpr freerdp-client)
set_target_properties(${MODULE_NAME} PROPERTIES RUNTIME_OUTPUT_DIRECTORY "${TESTING_OUTPUT_DIRECTORY}")

View File

@ -29,7 +29,6 @@ freerdp_module_add(
tls.c)
freerdp_include_directory_add(${OPENSSL_INCLUDE_DIR})
freerdp_include_directory_add(${ZLIB_INCLUDE_DIRS})
freerdp_library_add(${OPENSSL_LIBRARIES})
@ -40,8 +39,6 @@ endif()
if(WIN32)
freerdp_library_add(ws2_32)
else()
freerdp_library_add(${ZLIB_LIBRARIES})
endif()
if(BUILD_TESTING)

View File

@ -451,6 +451,14 @@ int ber_write_integer(wStream* s, UINT32 value)
Stream_Write_UINT32_BE(s, value);
return 6;
}
else
{
/* treat as signed integer i.e. NT/HRESULT error codes */
ber_write_universal_tag(s, BER_TAG_INTEGER, FALSE);
ber_write_length(s, 4);
Stream_Write_UINT32_BE(s, value);
return 6;
}
return 0;
}
@ -473,6 +481,11 @@ int ber_sizeof_integer(UINT32 value)
{
return 6;
}
else
{
/* treat as signed integer i.e. NT/HRESULT error codes */
return 6;
}
return 0;
}

View File

@ -16,7 +16,7 @@ include_directories(${OPENSSL_INCLUDE_DIR})
add_executable(${MODULE_NAME} ${${MODULE_PREFIX}_SRCS})
target_link_libraries(${MODULE_NAME} freerdp)
target_link_libraries(${MODULE_NAME} freerdp winpr)
set_target_properties(${MODULE_NAME} PROPERTIES RUNTIME_OUTPUT_DIRECTORY "${TESTING_OUTPUT_DIRECTORY}")

View File

@ -32,7 +32,7 @@ endif()
freerdp_module_add(${${MODULE_PREFIX}_SRCS})
freerdp_library_add(${CMAKE_THREAD_LIBS_INIT} ${CMAKE_DL_LIBS})
freerdp_library_add(${CMAKE_THREAD_LIBS_INIT})
if(WIN32)
freerdp_library_add(ws2_32)

View File

@ -13,7 +13,7 @@ create_test_sourcelist(${MODULE_PREFIX}_SRCS
add_executable(${MODULE_NAME} ${${MODULE_PREFIX}_SRCS})
target_link_libraries(${MODULE_NAME} winpr freerdp)
target_link_libraries(${MODULE_NAME} freerdp)
set_target_properties(${MODULE_NAME} PROPERTIES RUNTIME_OUTPUT_DIRECTORY "${TESTING_OUTPUT_DIRECTORY}")

View File

@ -40,14 +40,6 @@ include(CheckCCompilerFlag)
include(GNUInstallDirsWrapper)
include(CMakePackageConfigHelpers)
# Soname versioning
set(RDTK_VERSION_MAJOR "2")
set(RDTK_VERSION_MINOR "0")
set(RDTK_VERSION_REVISION "0")
set(RDTK_API_VERSION "${RDTK_VERSION_MAJOR}")
set(RDTK_VERSION "${RDTK_VERSION_MAJOR}.${RDTK_VERSION_MINOR}.${RDTK_VERSION_REVISION}")
set(RDTK_VERSION_FULL "${RDTK_VERSION}")
# Default to release build type
if(NOT CMAKE_BUILD_TYPE)
set(CMAKE_BUILD_TYPE "Release")
@ -63,7 +55,6 @@ set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -DRDTK_EXPORTS")
include_directories(${CMAKE_CURRENT_SOURCE_DIR}/include)
include_directories(${CMAKE_CURRENT_BINARY_DIR}/include)
add_subdirectory(include)
add_subdirectory(librdtk)
if(WITH_SAMPLE)
@ -71,26 +62,3 @@ if(WITH_SAMPLE)
add_subdirectory(sample)
endif()
endif()
# Exporting
set(RDTK_INCLUDE_DIR "include/rdtk${RDTK_VERSION_MAJOR}")
configure_file(${CMAKE_CURRENT_SOURCE_DIR}/rdtk.pc.in ${CMAKE_CURRENT_BINARY_DIR}/rdtk${RDTK_VERSION_MAJOR}.pc @ONLY)
install(FILES ${CMAKE_CURRENT_BINARY_DIR}/rdtk${RDTK_VERSION_MAJOR}.pc DESTINATION ${CMAKE_INSTALL_LIBDIR}/pkgconfig)
if(${CMAKE_VERSION} VERSION_GREATER "2.8.10")
export(PACKAGE rdtk)
set(RDTK_CMAKE_INSTALL_DIR "${CMAKE_INSTALL_LIBDIR}/cmake/RdTk${RDTK_VERSION_MAJOR}")
configure_package_config_file(RdTkConfig.cmake.in ${CMAKE_CURRENT_BINARY_DIR}/RdTkConfig.cmake
INSTALL_DESTINATION ${RDTK_CMAKE_INSTALL_DIR} PATH_VARS RDTK_INCLUDE_DIR)
write_basic_package_version_file(${CMAKE_CURRENT_BINARY_DIR}/RdTkConfigVersion.cmake
VERSION ${RDTK_VERSION} COMPATIBILITY SameMajorVersion)
install(FILES ${CMAKE_CURRENT_BINARY_DIR}/RdTkConfig.cmake ${CMAKE_CURRENT_BINARY_DIR}/RdTkConfigVersion.cmake
DESTINATION ${RDTK_CMAKE_INSTALL_DIR})
install(EXPORT RdTkTargets DESTINATION ${RDTK_CMAKE_INSTALL_DIR})
endif()

View File

@ -1,11 +0,0 @@
@PACKAGE_INIT@
set(RdTk_VERSION_MAJOR "@RDTK_VERSION_MAJOR@")
set(RdTk_VERSION_MINOR "@RDTK_VERSION_MINOR@")
set(RdTk_VERSION_REVISION "@RDTK_VERSION_REVISION@")
set_and_check(RdTk_INCLUDE_DIR "@PACKAGE_RDTK_INCLUDE_DIR@")
include("${CMAKE_CURRENT_LIST_DIR}/RdTkTargets.cmake")

View File

@ -1,20 +0,0 @@
# RdTk: Remote Desktop Toolkit
# rdtk cmake build script
#
# Copyright 2014 Marc-Andre Moreau <marcandre.moreau@gmail.com>
#
# Licensed under the Apache License, Version 2.0 (the "License");
# you may not use this file except in compliance with the License.
# You may obtain a copy of the License at
#
# http://www.apache.org/licenses/LICENSE-2.0
#
# Unless required by applicable law or agreed to in writing, software
# distributed under the License is distributed on an "AS IS" BASIS,
# WITHOUT 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(GLOB RDTK_HEADERS "rdtk/*.h")
install(FILES ${RDTK_HEADERS} DESTINATION include/rdtk${RDTK_VERSION_MAJOR}/rdtk COMPONENT headers)

View File

@ -21,6 +21,8 @@
#include <winpr/spec.h>
/* Don't do any export */
#if 0
#if defined _WIN32 || defined __CYGWIN__
#ifdef RDTK_EXPORTS
#ifdef __GNUC__
@ -42,5 +44,7 @@
#define RDTK_EXPORT
#endif
#endif
#endif
#define RDTK_EXPORT
#endif /* RDTK_API_H */

View File

@ -17,7 +17,6 @@
set(MODULE_NAME "rdtk")
set(MODULE_PREFIX "RDTK")
include_directories(${OPENSSL_INCLUDE_DIR})
set(${MODULE_PREFIX}_SRCS
rdtk_resources.c
@ -37,40 +36,19 @@ set(${MODULE_PREFIX}_SRCS
rdtk_engine.c
rdtk_engine.h)
# On windows create dll version information.
# Vendor, product and year are already set in top level CMakeLists.txt
if (WIN32)
set (RC_VERSION_MAJOR ${RDTK_VERSION_MAJOR})
set (RC_VERSION_MINOR ${RDTK_VERSION_MINOR})
set (RC_VERSION_BUILD ${RDTK_VERSION_REVISION})
set (RC_VERSION_FILE "${CMAKE_SHARED_LIBRARY_PREFIX}${MODULE_NAME}${CMAKE_SHARED_LIBRARY_SUFFIX}" )
configure_file(
${CMAKE_SOURCE_DIR}/cmake/WindowsDLLVersion.rc.in
${CMAKE_CURRENT_BINARY_DIR}/version.rc
@ONLY)
set ( ${MODULE_PREFIX}_SRCS ${${MODULE_PREFIX}_SRCS} ${CMAKE_CURRENT_BINARY_DIR}/version.rc)
endif()
add_library(${MODULE_NAME} ${${MODULE_PREFIX}_SRCS})
add_library(${MODULE_NAME} STATIC ${${MODULE_PREFIX}_SRCS})
list(APPEND ${MODULE_PREFIX}_LIBS winpr)
list(APPEND ${MODULE_PREFIX}_LIBS freerdp)
if (WITH_LIBRARY_VERSIONING)
set_target_properties(${MODULE_NAME} PROPERTIES VERSION ${RDTK_VERSION} SOVERSION ${RDTK_API_VERSION})
endif()
target_link_libraries(${MODULE_NAME} ${${MODULE_PREFIX}_LIBS})
install(TARGETS ${MODULE_NAME} DESTINATION ${CMAKE_INSTALL_LIBDIR} EXPORT RdTkTargets)
if (WITH_DEBUG_SYMBOLS AND MSVC AND BUILD_SHARED_LIBS)
install(FILES ${CMAKE_PDB_BINARY_DIR}/${MODULE_NAME}.pdb DESTINATION ${CMAKE_INSTALL_LIBDIR} COMPONENT symbols)
endif()
target_link_libraries(${MODULE_NAME} ${PRIVATE_KEYWORD} ${${MODULE_PREFIX}_LIBS})
set_property(TARGET ${MODULE_NAME} PROPERTY FOLDER "RdTk")
if(BUILD_TESTING)
add_subdirectory(test)
endif()
if (NOT BUILD_SHARED_LIBS)
install(TARGETS ${MODULE_NAME} DESTINATION ${CMAKE_INSTALL_LIBDIR} EXPORT FreeRDP-ShadowTargets)
endif()

View File

@ -1,15 +0,0 @@
prefix=@CMAKE_INSTALL_PREFIX@
exec_prefix=@CMAKE_INSTALL_PREFIX@
libdir=@CMAKE_INSTALL_FULL_LIBDIR@
includedir=${prefix}/@RDTK_INCLUDE_DIR@
libs=-lrdtk
Name: Remote Desktop Tool Kit
Description: FreeRDP RDTK: A toolkit implementation for RDP
URL: http://www.freerdp.com/
Version: @RDTK_VERSION_FULL@
Requires:
Requires.private: @WINPR_PKG_CONFIG_FILENAME@ freerdp@FREERDP_VERSION_MAJOR@
Libs: -L${libdir} ${libs}
Libs.private: -ldl -lpthread
Cflags: -I${includedir}

View File

@ -29,7 +29,7 @@ set(${MODULE_PREFIX}_LIBS rdtk)
list(APPEND ${MODULE_PREFIX}_LIBS ${X11_LIBRARIES})
target_link_libraries(${MODULE_NAME} ${${MODULE_PREFIX}_LIBS})
target_link_libraries(${MODULE_NAME} ${${MODULE_PREFIX}_LIBS} winpr)
set_property(TARGET ${MODULE_NAME} PROPERTY FOLDER "RdTk")

View File

@ -77,7 +77,7 @@ list(APPEND ${MODULE_PREFIX}_LIBS winpr)
list(APPEND ${MODULE_PREFIX}_LIBS winpr-makecert-tool)
list(APPEND ${MODULE_PREFIX}_LIBS rdtk)
target_link_libraries(${MODULE_NAME} ${${MODULE_PREFIX}_LIBS})
target_link_libraries(${MODULE_NAME} ${PRIVATE_KEYWORD} ${${MODULE_PREFIX}_LIBS})
if (WITH_LIBRARY_VERSIONING)
set_target_properties(${MODULE_NAME} PROPERTIES VERSION ${FREERDP_VERSION} SOVERSION ${FREERDP_API_VERSION})
@ -174,10 +174,10 @@ if(WITH_SHADOW_X11)
find_feature(XShm ${XSHM_FEATURE_TYPE} ${XSHM_FEATURE_PURPOSE} ${XSHM_FEATURE_DESCRIPTION})
find_feature(XTest ${XTEST_FEATURE_TYPE} ${XTEST_FEATURE_PURPOSE} ${XTEST_FEATURE_DESCRIPTION})
find_feature(Xfixes ${XFIXES_FEATURE_TYPE} ${XFIXES_FEATURE_PURPOSE} ${XFIXES_FEATURE_DESCRIPTION})
find_feature(XRandR ${XRANDR_FEATURE_TYPE} ${XRANDR_FEATURE_PURPOSE} ${XRANDR_FEATURE_DESCRIPTION})
find_feature(Xdamage ${XDAMAGE_FEATURE_TYPE} ${XDAMAGE_FEATURE_PURPOSE} ${XDAMAGE_FEATURE_DESCRIPTION})
find_feature(Xcursor ${XCURSOR_FEATURE_TYPE} ${XCURSOR_FEATURE_PURPOSE} ${XCURSOR_FEATURE_DESCRIPTION})
find_feature(Xinerama ${XINERAMA_FEATURE_TYPE} ${XINERAMA_FEATURE_PURPOSE} ${XINERAMA_FEATURE_DESCRIPTION})
find_feature(XRandR ${XRANDR_FEATURE_TYPE} ${XRANDR_FEATURE_PURPOSE} ${XRANDR_FEATURE_DESCRIPTION})
find_feature(Xcursor ${XCURSOR_FEATURE_TYPE} ${XCURSOR_FEATURE_PURPOSE} ${XCURSOR_FEATURE_DESCRIPTION})
if(WITH_X11)
add_definitions(-DWITH_X11)
@ -203,12 +203,6 @@ if(WITH_SHADOW_X11)
list(APPEND ${MODULE_PREFIX}_X11_LIBS ${XINERAMA_LIBRARIES})
endif()
if(WITH_XCURSOR)
add_definitions(-DWITH_XCURSOR)
include_directories(${XCURSOR_INCLUDE_DIRS})
list(APPEND ${MODULE_PREFIX}_X11_LIBS ${XCURSOR_LIBRARIES})
endif()
if(WITH_XDAMAGE)
add_definitions(-DWITH_XDAMAGE)
include_directories(${XDAMAGE_INCLUDE_DIRS})
@ -227,18 +221,25 @@ if(WITH_SHADOW_X11)
list(APPEND ${MODULE_PREFIX}_X11_LIBS ${XTEST_LIBRARIES})
endif()
if(WITH_XRANDR)
add_definitions(-DWITH_XRANDR)
include_directories(${XRANDR_INCLUDE_DIRS})
list(APPEND ${MODULE_PREFIX}_X11_LIBS ${XRANDR_LIBRARIES})
endif()
# XCursor and XRandr are currently not used so don't link them
#if(WITH_XCURSOR)
# add_definitions(-DWITH_XCURSOR)
# include_directories(${XCURSOR_INCLUDE_DIRS})
# list(APPEND ${MODULE_PREFIX}_X11_LIBS ${XCURSOR_LIBRARIES})
#endif()
#if(WITH_XRANDR)
# add_definitions(-DWITH_XRANDR)
# include_directories(${XRANDR_INCLUDE_DIRS})
# list(APPEND ${MODULE_PREFIX}_X11_LIBS ${XRANDR_LIBRARIES})
#endif()
elseif(WITH_SHADOW_MAC)
find_library(IOKIT IOKit)
find_library(IOSURFACE IOSurface)
find_library(CARBON Carbon)
list(APPEND ${MODULE_PREFIX}_MAC_LIBS ${IOKIT} ${IOSURFACE} ${CARBON})
elseif(WITH_SHADOW_WIN)
list(APPEND ${MODULE_PREFIX}_WIN_LIBS freerdp-client)
list(APPEND ${MODULE_PREFIX}_WIN_LIBS freerdp-client freerdp)
endif()
set(${MODULE_PREFIX}_WIN_SRCS
@ -277,9 +278,9 @@ list(APPEND ${MODULE_PREFIX}_LIBS ${${MODULE_PREFIX}_AUTH_LIBS})
add_library(${MODULE_NAME} ${${MODULE_PREFIX}_SRCS})
set(${MODULE_PREFIX}_LIBS ${${MODULE_PREFIX}_LIBS} freerdp-shadow)
set(${MODULE_PREFIX}_LIBS ${${MODULE_PREFIX}_LIBS} freerdp-shadow freerdp winpr)
target_link_libraries(${MODULE_NAME} ${${MODULE_PREFIX}_LIBS})
target_link_libraries(${MODULE_NAME} ${PRIVATE_KEYWORD} ${${MODULE_PREFIX}_LIBS})
if (WITH_LIBRARY_VERSIONING)
set_target_properties(${MODULE_NAME} PROPERTIES VERSION ${FREERDP_VERSION} SOVERSION ${FREERDP_API_VERSION})
@ -320,9 +321,9 @@ endif()
add_executable(${MODULE_NAME} ${${MODULE_PREFIX}_SRCS})
set(${MODULE_PREFIX}_LIBS ${${MODULE_PREFIX}_LIBS} freerdp-shadow-subsystem)
set(${MODULE_PREFIX}_LIBS ${${MODULE_PREFIX}_LIBS} freerdp-shadow-subsystem freerdp-shadow winpr)
target_link_libraries(${MODULE_NAME} ${${MODULE_PREFIX}_LIBS})
target_link_libraries(${MODULE_NAME} ${PRIVATE_KEYWORD} ${${MODULE_PREFIX}_LIBS})
install(TARGETS ${MODULE_NAME} DESTINATION ${CMAKE_INSTALL_BINDIR} COMPONENT server)
if (WITH_DEBUG_SYMBOLS AND MSVC)

View File

@ -68,7 +68,7 @@ if (WITH_LIBRARY_VERSIONING)
set_target_properties(${MODULE_NAME} PROPERTIES VERSION ${UWAC_VERSION} SOVERSION ${UWAC_API_VERSION})
endif()
target_link_libraries(${MODULE_NAME} ${${MODULE_PREFIX}_LIBS} ${WAYLAND_LIBS} ${XKBCOMMON_LIBS} freerdp)
target_link_libraries(${MODULE_NAME} ${${MODULE_PREFIX}_LIBS} ${PRIVATE_KEYWORD} ${WAYLAND_LIBS} ${XKBCOMMON_LIBS} freerdp)
install(TARGETS ${MODULE_NAME} DESTINATION ${CMAKE_INSTALL_LIBDIR} EXPORT uwac)

View File

@ -1270,6 +1270,14 @@
/* Defined in winternl.h, always define since we do not include this header */
/* defined in ntstatus.h */
#if !defined(NTSTATUS_FROM_WIN32) && !defined(INLINE_NTSTATUS_FROM_WIN32)
static INLINE NTSTATUS NTSTATUS_FROM_WIN32(long x)
{
return x <= 0 ? (NTSTATUS)x : (NTSTATUS) (((x) & 0x0000FFFF) | (0x7 << 16) | 0xC0000000);
}
#endif
#ifdef _WIN32
/**

View File

@ -123,7 +123,11 @@ if (WITH_LIBRARY_VERSIONING)
endif()
add_definitions(${WINPR_DEFINITIONS})
target_link_libraries(${MODULE_NAME} ${WINPR_LIBS})
if (WIN32)
target_link_libraries(${MODULE_NAME} ${PUBLIC_KEYWORD} ${WINPR_LIBS})
else()
target_link_libraries(${MODULE_NAME} ${PRIVATE_KEYWORD} ${WINPR_LIBS})
endif(WIN32)
install(TARGETS ${MODULE_NAME} DESTINATION ${CMAKE_INSTALL_LIBDIR} COMPONENT libraries EXPORT WinPRTargets)
if (WITH_DEBUG_SYMBOLS AND MSVC AND BUILD_SHARED_LIBS)
install(FILES ${CMAKE_PDB_BINARY_DIR}/${MODULE_NAME}.pdb DESTINATION ${CMAKE_INSTALL_LIBDIR} COMPONENT symbols)

View File

@ -24,8 +24,6 @@ create_test_sourcelist(${MODULE_PREFIX}_SRCS
add_executable(${MODULE_NAME} ${${MODULE_PREFIX}_SRCS})
target_link_libraries(${MODULE_NAME} winpr)
set_target_properties(${MODULE_NAME} PROPERTIES RUNTIME_OUTPUT_DIRECTORY "${TESTING_OUTPUT_DIRECTORY}")
foreach(test ${${MODULE_PREFIX}_TESTS})

View File

@ -17,8 +17,4 @@
winpr_module_add(bcrypt.c)
winpr_include_directory_add(
${OPENSSL_INCLUDE_DIR}
${ZLIB_INCLUDE_DIRS})
winpr_library_add(${ZLIB_LIBRARIES})
winpr_include_directory_add(${OPENSSL_INCLUDE_DIR})

View File

@ -12,7 +12,6 @@ create_test_sourcelist(${MODULE_PREFIX}_SRCS
add_executable(${MODULE_NAME} ${${MODULE_PREFIX}_SRCS})
target_link_libraries(${MODULE_NAME} winpr)
set_target_properties(${MODULE_NAME} PROPERTIES RUNTIME_OUTPUT_DIRECTORY "${TESTING_OUTPUT_DIRECTORY}")
foreach(test ${${MODULE_PREFIX}_TESTS})

View File

@ -34,7 +34,7 @@ if(UNIX AND NOT WIN32 AND NOT APPLE)
winpr_module_add(${${MODULE_PREFIX}_SRCS})
if(BUILD_TESTING)
if(BUILD_TESTING AND BUILD_COMM_TESTS)
add_subdirectory(test)
endif()
endif()
endif()

View File

@ -26,23 +26,23 @@
int TestFileGetStdHandle(int argc, char* argv[])
{
HANDLE stdout;
HANDLE so;
char *buf = "happy happy";
DWORD bytesWritten;
stdout = GetStdHandle(STD_OUTPUT_HANDLE);
if (stdout == INVALID_HANDLE_VALUE)
so = GetStdHandle(STD_OUTPUT_HANDLE);
if (so == INVALID_HANDLE_VALUE)
{
fprintf(stderr, "GetStdHandle failed ;(\n");
return -1;
}
WriteFile(stdout, buf, strlen(buf), &bytesWritten, FALSE);
WriteFile(so, buf, strlen(buf), &bytesWritten, FALSE);
if (bytesWritten != strlen(buf))
{
fprintf(stderr, "write failed\n");
return -1;
}
CloseHandle(stdout);
CloseHandle(so);
return 0;
}

View File

@ -13,8 +13,6 @@ create_test_sourcelist(${MODULE_PREFIX}_SRCS
add_executable(${MODULE_NAME} ${${MODULE_PREFIX}_SRCS})
target_link_libraries(${MODULE_NAME} winpr)
set_target_properties(${MODULE_NAME} PROPERTIES RUNTIME_OUTPUT_DIRECTORY "${TESTING_OUTPUT_DIRECTORY}")
foreach(test ${${MODULE_PREFIX}_TESTS})

View File

@ -13,8 +13,6 @@ create_test_sourcelist(${MODULE_PREFIX}_SRCS
add_executable(${MODULE_NAME} ${${MODULE_PREFIX}_SRCS})
target_link_libraries(${MODULE_NAME} winpr)
set_target_properties(${MODULE_NAME} PROPERTIES RUNTIME_OUTPUT_DIRECTORY "${TESTING_OUTPUT_DIRECTORY}")
foreach(test ${${MODULE_PREFIX}_TESTS})

View File

@ -38,13 +38,10 @@ winpr_module_add(
ndr_union.h
midl.c)
winpr_include_directory_add(${OPENSSL_INCLUDE_DIR}
${ZLIB_INCLUDE_DIRS})
winpr_include_directory_add(${OPENSSL_INCLUDE_DIR})
winpr_library_add(${OPENSSL_LIBRARIES})
if(WIN32)
winpr_library_add(ws2_32 rpcrt4)
else()
winpr_library_add(${ZLIB_LIBRARIES})
endif()

View File

@ -13,8 +13,6 @@ create_test_sourcelist(${MODULE_PREFIX}_SRCS
add_executable(${MODULE_NAME} ${${MODULE_PREFIX}_SRCS})
target_link_libraries(${MODULE_NAME} winpr)
set_target_properties(${MODULE_NAME} PROPERTIES RUNTIME_OUTPUT_DIRECTORY "${TESTING_OUTPUT_DIRECTORY}")
foreach(test ${${MODULE_PREFIX}_TESTS})

View File

@ -21,8 +21,6 @@ include_directories(${OPENSSL_INCLUDE_DIR})
add_executable(${MODULE_NAME} ${${MODULE_PREFIX}_SRCS})
set(${MODULE_PREFIX}_LIBS ${OPENSSL_LIBRARIES})
if(WIN32)
set(${MODULE_PREFIX}_LIBS ${${MODULE_PREFIX}_LIBS} secur32 crypt32)
endif()

View File

@ -32,7 +32,6 @@
#include <time.h>
#include <unistd.h>
struct _TIME_ZONE_RULE_ENTRY
{
UINT64 TicksStart;
@ -481,6 +480,17 @@ static const TIME_ZONE_RULE_ENTRY TimeZoneRuleTable_59[] =
};
static const TIME_ZONE_RULE_ENTRY TimeZoneRuleTable_61[] =
{
{ 634293684000000000ULL, 180000000000ULL, 60, { 0, 10, 0, 5, 3, 0 }, { 0, 3, 0, 5, 2, 0 }, },
{ 634609044000000000ULL, 634294548000000000ULL, 60, { 0, 1, 6, 1, 0, 0 }, { 0, 3, 0, 5, 2, 0 }, },
{ 634925268000000000ULL, 634609908000000000ULL, 0, { 0, 1, 0, 1, 0, 0 }, { 0, 1, 0, 1, 0, 0 }, },
{ 635240628000000000ULL, 634926132000000000ULL, 0, { 0, 1, 0, 1, 0, 0 }, { 0, 1, 0, 1, 0, 0 }, },
{ 635555988000000000ULL, 635241492000000000ULL, 60, { 0, 10, 0, 5, 2, 0 }, { 0, 1, 3, 1, 0, 0 }, },
{ 636187572000000000ULL, 635872212000000000ULL, 60, { 0, 1, 5, 1, 0, 0 }, { 0, 3, 0, 5, 2, 0 }, },
{ 3155378292000000000ULL, 636188436000000000ULL, 0, { 0, 1, 0, 1, 0, 0 }, { 0, 1, 0, 1, 0, 0 }, }
};
static const TIME_ZONE_RULE_ENTRY TimeZoneRuleTable_62[] =
{
{ 632716020000000000ULL, 180000000000ULL, 60, { 0, 9, 2, 4, 2, 0 }, { 0, 3, 0, 1, 2, 0 }, },
{ 633662964000000000ULL, 633347604000000000ULL, 60, { 0, 9, 6, 3, 23, 59 }, { 0, 3, 4, 3, 23, 59 }, },
@ -502,23 +512,23 @@ static const TIME_ZONE_RULE_ENTRY TimeZoneRuleTable_61[] =
{ 3155378292000000000ULL, 638396820000000000ULL, 60, { 0, 9, 5, 3, 23, 59 }, { 0, 3, 3, 3, 23, 59 }, }
};
static const TIME_ZONE_RULE_ENTRY TimeZoneRuleTable_63[] =
static const TIME_ZONE_RULE_ENTRY TimeZoneRuleTable_64[] =
{
{ 3155378292000000000ULL, 180000000000ULL, 60, { 0, 10, 0, 5, 5, 0 }, { 0, 3, 0, 5, 4, 0 }, }
};
static const TIME_ZONE_RULE_ENTRY TimeZoneRuleTable_65[] =
static const TIME_ZONE_RULE_ENTRY TimeZoneRuleTable_66[] =
{
{ 633662964000000000ULL, 633347604000000000ULL, 60, { 0, 1, 2, 1, 0, 0 }, { 0, 10, 0, 5, 2, 0 }, },
{ 633978324000000000ULL, 633663828000000000ULL, 60, { 0, 3, 0, 5, 2, 0 }, { 0, 1, 4, 1, 0, 0 }, }
};
static const TIME_ZONE_RULE_ENTRY TimeZoneRuleTable_67[] =
static const TIME_ZONE_RULE_ENTRY TimeZoneRuleTable_68[] =
{
{ 634609044000000000ULL, 180000000000ULL, 60, { 0, 10, 0, 5, 3, 0 }, { 0, 3, 0, 5, 2, 0 }, }
};
static const TIME_ZONE_RULE_ENTRY TimeZoneRuleTable_70[] =
static const TIME_ZONE_RULE_ENTRY TimeZoneRuleTable_71[] =
{
{ 634293684000000000ULL, 180000000000ULL, 60, { 0, 10, 0, 5, 3, 0 }, { 0, 3, 0, 5, 2, 0 }, },
{ 634609044000000000ULL, 634294548000000000ULL, 60, { 0, 1, 6, 1, 0, 0 }, { 0, 3, 0, 5, 2, 0 }, },
@ -527,18 +537,18 @@ static const TIME_ZONE_RULE_ENTRY TimeZoneRuleTable_70[] =
{ 635555988000000000ULL, 635241492000000000ULL, 60, { 0, 10, 0, 5, 2, 0 }, { 0, 1, 3, 1, 0, 0 }, }
};
static const TIME_ZONE_RULE_ENTRY TimeZoneRuleTable_71[] =
static const TIME_ZONE_RULE_ENTRY TimeZoneRuleTable_72[] =
{
{ 633662964000000000ULL, 633347604000000000ULL, 60, { 0, 10, 5, 5, 23, 59 }, { 0, 5, 6, 5, 23, 59 }, },
{ 633978324000000000ULL, 633663828000000000ULL, 60, { 0, 10, 6, 5, 23, 59 }, { 0, 4, 2, 2, 23, 59 }, }
};
static const TIME_ZONE_RULE_ENTRY TimeZoneRuleTable_76[] =
static const TIME_ZONE_RULE_ENTRY TimeZoneRuleTable_77[] =
{
{ 633978324000000000ULL, 633663828000000000ULL, 60, { 0, 12, 4, 5, 23, 59 }, { 0, 6, 5, 3, 23, 0 }, }
};
static const TIME_ZONE_RULE_ENTRY TimeZoneRuleTable_77[] =
static const TIME_ZONE_RULE_ENTRY TimeZoneRuleTable_78[] =
{
{ 634293684000000000ULL, 180000000000ULL, 60, { 0, 10, 0, 5, 3, 0 }, { 0, 3, 0, 5, 2, 0 }, },
{ 634609044000000000ULL, 634294548000000000ULL, 60, { 0, 1, 6, 1, 0, 0 }, { 0, 3, 0, 5, 2, 0 }, },
@ -547,13 +557,15 @@ static const TIME_ZONE_RULE_ENTRY TimeZoneRuleTable_77[] =
{ 635555988000000000ULL, 635241492000000000ULL, 60, { 0, 10, 0, 5, 2, 0 }, { 0, 1, 3, 1, 0, 0 }, }
};
static const TIME_ZONE_RULE_ENTRY TimeZoneRuleTable_80[] =
static const TIME_ZONE_RULE_ENTRY TimeZoneRuleTable_79[] =
{
{ 634293684000000000ULL, 180000000000ULL, 60, { 0, 10, 0, 5, 3, 0 }, { 0, 3, 0, 5, 2, 0 }, },
{ 634609044000000000ULL, 634294548000000000ULL, 60, { 0, 1, 6, 1, 0, 0 }, { 0, 3, 0, 5, 2, 0 }, },
{ 634925268000000000ULL, 634609908000000000ULL, 0, { 0, 1, 0, 1, 0, 0 }, { 0, 1, 0, 1, 0, 0 }, },
{ 635240628000000000ULL, 634926132000000000ULL, 0, { 0, 1, 0, 1, 0, 0 }, { 0, 1, 0, 1, 0, 0 }, },
{ 635555988000000000ULL, 635241492000000000ULL, 60, { 0, 10, 0, 5, 2, 0 }, { 0, 1, 3, 1, 0, 0 }, }
{ 635555988000000000ULL, 635241492000000000ULL, 60, { 0, 10, 0, 5, 2, 0 }, { 0, 1, 3, 1, 0, 0 }, },
{ 636187572000000000ULL, 635872212000000000ULL, 60, { 0, 1, 5, 1, 0, 0 }, { 0, 3, 0, 5, 2, 0 }, },
{ 3155378292000000000ULL, 636188436000000000ULL, 0, { 0, 1, 0, 1, 0, 0 }, { 0, 1, 0, 1, 0, 0 }, }
};
static const TIME_ZONE_RULE_ENTRY TimeZoneRuleTable_82[] =
@ -566,6 +578,15 @@ static const TIME_ZONE_RULE_ENTRY TimeZoneRuleTable_82[] =
};
static const TIME_ZONE_RULE_ENTRY TimeZoneRuleTable_84[] =
{
{ 634293684000000000ULL, 180000000000ULL, 60, { 0, 10, 0, 5, 3, 0 }, { 0, 3, 0, 5, 2, 0 }, },
{ 634609044000000000ULL, 634294548000000000ULL, 60, { 0, 1, 6, 1, 0, 0 }, { 0, 3, 0, 5, 2, 0 }, },
{ 634925268000000000ULL, 634609908000000000ULL, 0, { 0, 1, 0, 1, 0, 0 }, { 0, 1, 0, 1, 0, 0 }, },
{ 635240628000000000ULL, 634926132000000000ULL, 0, { 0, 1, 0, 1, 0, 0 }, { 0, 1, 0, 1, 0, 0 }, },
{ 635555988000000000ULL, 635241492000000000ULL, 60, { 0, 10, 0, 5, 2, 0 }, { 0, 1, 3, 1, 0, 0 }, }
};
static const TIME_ZONE_RULE_ENTRY TimeZoneRuleTable_86[] =
{
{ 633031380000000000ULL, 632716884000000000ULL, 60, { 0, 1, 0, 1, 0, 0 }, { 0, 12, 0, 1, 2, 0 }, },
{ 633346740000000000ULL, 633032244000000000ULL, 60, { 0, 3, 0, 5, 3, 0 }, { 0, 10, 0, 5, 2, 0 }, },
@ -573,12 +594,23 @@ static const TIME_ZONE_RULE_ENTRY TimeZoneRuleTable_84[] =
{ 633978324000000000ULL, 633663828000000000ULL, 60, { 0, 3, 0, 5, 3, 0 }, { 0, 1, 4, 1, 0, 0 }, }
};
static const TIME_ZONE_RULE_ENTRY TimeZoneRuleTable_86[] =
static const TIME_ZONE_RULE_ENTRY TimeZoneRuleTable_88[] =
{
{ 3155378292000000000ULL, 635556852000000000ULL, 60, { 0, 9, 5, 5, 23, 59 }, { 0, 3, 6, 5, 2, 0 }, }
};
static const TIME_ZONE_RULE_ENTRY TimeZoneRuleTable_90[] =
static const TIME_ZONE_RULE_ENTRY TimeZoneRuleTable_89[] =
{
{ 634293684000000000ULL, 180000000000ULL, 60, { 0, 10, 0, 5, 3, 0 }, { 0, 3, 0, 5, 2, 0 }, },
{ 634609044000000000ULL, 634294548000000000ULL, 60, { 0, 1, 6, 1, 0, 0 }, { 0, 3, 0, 5, 2, 0 }, },
{ 634925268000000000ULL, 634609908000000000ULL, 0, { 0, 1, 0, 1, 0, 0 }, { 0, 1, 0, 1, 0, 0 }, },
{ 635240628000000000ULL, 634926132000000000ULL, 0, { 0, 1, 0, 1, 0, 0 }, { 0, 1, 0, 1, 0, 0 }, },
{ 635555988000000000ULL, 635241492000000000ULL, 60, { 0, 10, 0, 5, 2, 0 }, { 0, 1, 3, 1, 0, 0 }, },
{ 636187572000000000ULL, 635872212000000000ULL, 60, { 0, 1, 5, 1, 0, 0 }, { 0, 3, 0, 5, 2, 0 }, },
{ 3155378292000000000ULL, 636188436000000000ULL, 0, { 0, 1, 0, 1, 0, 0 }, { 0, 1, 0, 1, 0, 0 }, }
};
static const TIME_ZONE_RULE_ENTRY TimeZoneRuleTable_93[] =
{
{ 634293684000000000ULL, 180000000000ULL, 60, { 0, 10, 0, 5, 3, 0 }, { 0, 3, 0, 5, 2, 0 }, },
{ 634609044000000000ULL, 634294548000000000ULL, 60, { 0, 1, 6, 1, 0, 0 }, { 0, 3, 0, 5, 2, 0 }, },
@ -587,25 +619,25 @@ static const TIME_ZONE_RULE_ENTRY TimeZoneRuleTable_90[] =
{ 635555988000000000ULL, 635241492000000000ULL, 60, { 0, 10, 0, 5, 2, 0 }, { 0, 1, 3, 1, 0, 0 }, }
};
static const TIME_ZONE_RULE_ENTRY TimeZoneRuleTable_91[] =
{
{ 633346740000000000ULL, 180000000000ULL, 60, { 0, 3, 0, 5, 3, 0 }, { 0, 10, 0, 5, 2, 0 }, },
{ 3155378292000000000ULL, 633347604000000000ULL, 60, { 0, 4, 0, 1, 3, 0 }, { 0, 10, 0, 1, 2, 0 }, }
};
static const TIME_ZONE_RULE_ENTRY TimeZoneRuleTable_94[] =
{
{ 633346740000000000ULL, 180000000000ULL, 60, { 0, 3, 0, 5, 3, 0 }, { 0, 10, 0, 5, 2, 0 }, },
{ 3155378292000000000ULL, 633347604000000000ULL, 60, { 0, 4, 0, 1, 3, 0 }, { 0, 10, 0, 1, 2, 0 }, }
};
static const TIME_ZONE_RULE_ENTRY TimeZoneRuleTable_96[] =
static const TIME_ZONE_RULE_ENTRY TimeZoneRuleTable_97[] =
{
{ 633346740000000000ULL, 180000000000ULL, 60, { 0, 3, 0, 5, 3, 0 }, { 0, 10, 0, 5, 2, 0 }, },
{ 3155378292000000000ULL, 633347604000000000ULL, 60, { 0, 4, 0, 1, 3, 0 }, { 0, 10, 0, 1, 2, 0 }, }
};
static const TIME_ZONE_RULE_ENTRY TimeZoneRuleTable_99[] =
{
{ 633346740000000000ULL, 180000000000ULL, 60, { 0, 3, 0, 5, 3, 0 }, { 0, 10, 0, 1, 2, 0 }, },
{ 3155378292000000000ULL, 633347604000000000ULL, 60, { 0, 4, 0, 1, 3, 0 }, { 0, 10, 0, 1, 2, 0 }, }
};
static const TIME_ZONE_RULE_ENTRY TimeZoneRuleTable_97[] =
static const TIME_ZONE_RULE_ENTRY TimeZoneRuleTable_100[] =
{
{ 634293684000000000ULL, 180000000000ULL, 60, { 0, 10, 0, 5, 3, 0 }, { 0, 3, 0, 5, 2, 0 }, },
{ 634609044000000000ULL, 634294548000000000ULL, 60, { 0, 1, 6, 1, 0, 0 }, { 0, 3, 0, 5, 2, 0 }, },
@ -614,7 +646,7 @@ static const TIME_ZONE_RULE_ENTRY TimeZoneRuleTable_97[] =
{ 635555988000000000ULL, 635241492000000000ULL, 120, { 0, 10, 0, 5, 2, 0 }, { 0, 1, 3, 1, 0, 0 }, }
};
static const TIME_ZONE_RULE_ENTRY TimeZoneRuleTable_98[] =
static const TIME_ZONE_RULE_ENTRY TimeZoneRuleTable_101[] =
{
{ 634293684000000000ULL, 180000000000ULL, 60, { 0, 10, 0, 5, 3, 0 }, { 0, 3, 0, 5, 2, 0 }, },
{ 634609044000000000ULL, 634294548000000000ULL, 60, { 0, 1, 6, 1, 0, 0 }, { 0, 3, 0, 5, 2, 0 }, },
@ -624,13 +656,24 @@ static const TIME_ZONE_RULE_ENTRY TimeZoneRuleTable_98[] =
};
static const TIME_ZONE_RULE_ENTRY TimeZoneRuleTable_102[] =
{
{ 634293684000000000ULL, 180000000000ULL, 60, { 0, 10, 0, 5, 3, 0 }, { 0, 3, 0, 5, 2, 0 }, },
{ 634609044000000000ULL, 634294548000000000ULL, 60, { 0, 1, 6, 1, 0, 0 }, { 0, 3, 0, 5, 2, 0 }, },
{ 634925268000000000ULL, 634609908000000000ULL, 0, { 0, 1, 0, 1, 0, 0 }, { 0, 1, 0, 1, 0, 0 }, },
{ 635240628000000000ULL, 634926132000000000ULL, 0, { 0, 1, 0, 1, 0, 0 }, { 0, 1, 0, 1, 0, 0 }, },
{ 635555988000000000ULL, 635241492000000000ULL, 120, { 0, 10, 0, 5, 2, 0 }, { 0, 1, 3, 1, 0, 0 }, },
{ 636187572000000000ULL, 635872212000000000ULL, 60, { 0, 1, 5, 1, 0, 0 }, { 0, 3, 0, 5, 2, 0 }, },
{ 3155378292000000000ULL, 636188436000000000ULL, 0, { 0, 1, 0, 1, 0, 0 }, { 0, 1, 0, 1, 0, 0 }, }
};
static const TIME_ZONE_RULE_ENTRY TimeZoneRuleTable_106[] =
{
{ 633031380000000000ULL, 180000000000ULL, 60, { 0, 3, 0, 3, 3, 0 }, { 0, 10, 0, 1, 2, 0 }, },
{ 633346740000000000ULL, 633032244000000000ULL, 60, { 0, 3, 0, 3, 3, 0 }, { 0, 9, 0, 5, 2, 0 }, },
{ 3155378292000000000ULL, 633347604000000000ULL, 60, { 0, 4, 0, 1, 3, 0 }, { 0, 9, 0, 5, 2, 0 }, }
};
static const TIME_ZONE_RULE_ENTRY TimeZoneRuleTable_104[] =
static const TIME_ZONE_RULE_ENTRY TimeZoneRuleTable_108[] =
{
{ 633978324000000000ULL, 633663828000000000ULL, 60, { 0, 1, 4, 1, 0, 0 }, { 0, 11, 0, 5, 2, 0 }, },
{ 634293684000000000ULL, 633979188000000000ULL, 60, { 0, 3, 0, 5, 3, 0 }, { 0, 10, 0, 4, 2, 0 }, },
@ -641,12 +684,12 @@ static const TIME_ZONE_RULE_ENTRY TimeZoneRuleTable_104[] =
{ 3155378292000000000ULL, 635556852000000000ULL, 60, { 0, 1, 0, 3, 3, 0 }, { 0, 11, 0, 1, 2, 0 }, }
};
static const TIME_ZONE_RULE_ENTRY TimeZoneRuleTable_105[] =
static const TIME_ZONE_RULE_ENTRY TimeZoneRuleTable_109[] =
{
{ 3155378292000000000ULL, 180000000000ULL, 60, { 0, 10, 0, 5, 3, 0 }, { 0, 3, 0, 5, 2, 0 }, }
};
static const TIME_ZONE_RULE_ENTRY TimeZoneRuleTable_107[] =
static const TIME_ZONE_RULE_ENTRY TimeZoneRuleTable_111[] =
{
{ 633978324000000000ULL, 180000000000ULL, 0, { 0, 1, 0, 1, 0, 0 }, { 0, 1, 0, 1, 0, 0 }, },
{ 634293684000000000ULL, 633979188000000000ULL, 60, { 0, 1, 5, 1, 0, 0 }, { 0, 9, 6, 5, 23, 59 }, },
@ -927,7 +970,7 @@ static const TIME_ZONE_ENTRY TimeZoneTable[] =
(TIME_ZONE_RULE_ENTRY*) &TimeZoneRuleTable_53, 19
},
{
"Kaliningrad Standard Time", -120, TRUE, "(UTC+02:00) Kaliningrad (RTZ 1)",
"Kaliningrad Standard Time", -120, TRUE, "(UTC+02:00) Kaliningrad",
"Russia TZ 1 Standard Time", "Russia TZ 1 Daylight Time",
(TIME_ZONE_RULE_ENTRY*) &TimeZoneRuleTable_54, 5
},
@ -952,7 +995,7 @@ static const TIME_ZONE_ENTRY TimeZoneTable[] =
(TIME_ZONE_RULE_ENTRY*) &TimeZoneRuleTable_58, 2
},
{
"Russian Standard Time", -180, TRUE, "(UTC+03:00) Moscow, St. Petersburg, Volgograd (RTZ 2)",
"Russian Standard Time", -180, TRUE, "(UTC+03:00) Moscow, St. Petersburg, Volgograd",
"Russia TZ 2 Standard Time", "Russia TZ 2 Daylight Time",
(TIME_ZONE_RULE_ENTRY*) &TimeZoneRuleTable_59, 5
},
@ -961,10 +1004,15 @@ static const TIME_ZONE_ENTRY TimeZoneTable[] =
"E. Africa Standard Time", "E. Africa Daylight Time",
NULL, 0
},
{
"Astrakhan Standard Time", -180, TRUE, "(UTC+04:00) Astrakhan, Ulyanovsk",
"Astrakhan Standard Time", "Astrakhan Daylight Time",
(TIME_ZONE_RULE_ENTRY*) &TimeZoneRuleTable_61, 7
},
{
"Iran Standard Time", -210, TRUE, "(UTC+03:30) Tehran",
"Iran Standard Time", "Iran Daylight Time",
(TIME_ZONE_RULE_ENTRY*) &TimeZoneRuleTable_61, 18
(TIME_ZONE_RULE_ENTRY*) &TimeZoneRuleTable_62, 18
},
{
"Arabian Standard Time", -240, FALSE, "(UTC+04:00) Abu Dhabi, Muscat",
@ -974,17 +1022,17 @@ static const TIME_ZONE_ENTRY TimeZoneTable[] =
{
"Azerbaijan Standard Time", -240, TRUE, "(UTC+04:00) Baku",
"Azerbaijan Standard Time", "Azerbaijan Daylight Time",
(TIME_ZONE_RULE_ENTRY*) &TimeZoneRuleTable_63, 1
(TIME_ZONE_RULE_ENTRY*) &TimeZoneRuleTable_64, 1
},
{
"Russia Time Zone 3", -240, FALSE, "(UTC+04:00) Izhevsk, Samara (RTZ 3)",
"Russia Time Zone 3", -240, FALSE, "(UTC+04:00) Izhevsk, Samara",
"Russia TZ 3 Standard Time", "Russia TZ 3 Daylight Time",
NULL, 0
},
{
"Mauritius Standard Time", -240, TRUE, "(UTC+04:00) Port Louis",
"Mauritius Standard Time", "Mauritius Daylight Time",
(TIME_ZONE_RULE_ENTRY*) &TimeZoneRuleTable_65, 2
(TIME_ZONE_RULE_ENTRY*) &TimeZoneRuleTable_66, 2
},
{
"Georgian Standard Time", -240, FALSE, "(UTC+04:00) Tbilisi",
@ -994,7 +1042,7 @@ static const TIME_ZONE_ENTRY TimeZoneTable[] =
{
"Caucasus Standard Time", -240, TRUE, "(UTC+04:00) Yerevan",
"Caucasus Standard Time", "Caucasus Daylight Time",
(TIME_ZONE_RULE_ENTRY*) &TimeZoneRuleTable_67, 1
(TIME_ZONE_RULE_ENTRY*) &TimeZoneRuleTable_68, 1
},
{
"Afghanistan Standard Time", -270, FALSE, "(UTC+04:30) Kabul",
@ -1007,14 +1055,14 @@ static const TIME_ZONE_ENTRY TimeZoneTable[] =
NULL, 0
},
{
"Ekaterinburg Standard Time", -300, TRUE, "(UTC+05:00) Ekaterinburg (RTZ 4)",
"Ekaterinburg Standard Time", -300, TRUE, "(UTC+05:00) Ekaterinburg",
"Russia TZ 4 Standard Time", "Russia TZ 4 Daylight Time",
(TIME_ZONE_RULE_ENTRY*) &TimeZoneRuleTable_70, 5
(TIME_ZONE_RULE_ENTRY*) &TimeZoneRuleTable_71, 5
},
{
"Pakistan Standard Time", -300, TRUE, "(UTC+05:00) Islamabad, Karachi",
"Pakistan Standard Time", "Pakistan Daylight Time",
(TIME_ZONE_RULE_ENTRY*) &TimeZoneRuleTable_71, 2
(TIME_ZONE_RULE_ENTRY*) &TimeZoneRuleTable_72, 2
},
{
"India Standard Time", -330, FALSE, "(UTC+05:30) Chennai, Kolkata, Mumbai, New Delhi",
@ -1039,12 +1087,17 @@ static const TIME_ZONE_ENTRY TimeZoneTable[] =
{
"Bangladesh Standard Time", -360, TRUE, "(UTC+06:00) Dhaka",
"Bangladesh Standard Time", "Bangladesh Daylight Time",
(TIME_ZONE_RULE_ENTRY*) &TimeZoneRuleTable_76, 1
(TIME_ZONE_RULE_ENTRY*) &TimeZoneRuleTable_77, 1
},
{
"N. Central Asia Standard Time", -360, TRUE, "(UTC+06:00) Novosibirsk (RTZ 5)",
"N. Central Asia Standard Time", -360, TRUE, "(UTC+06:00) Novosibirsk",
"Russia TZ 5 Standard Time", "Russia TZ 5 Daylight Time",
(TIME_ZONE_RULE_ENTRY*) &TimeZoneRuleTable_77, 5
(TIME_ZONE_RULE_ENTRY*) &TimeZoneRuleTable_78, 5
},
{
"Altai Standard Time", -360, TRUE, "(UTC+07:00) Barnaul, Gorno-Altaysk",
"Altai Standard Time", "Altai Daylight Time",
(TIME_ZONE_RULE_ENTRY*) &TimeZoneRuleTable_79, 7
},
{
"Myanmar Standard Time", -390, FALSE, "(UTC+06:30) Yangon (Rangoon)",
@ -1057,9 +1110,9 @@ static const TIME_ZONE_ENTRY TimeZoneTable[] =
NULL, 0
},
{
"North Asia Standard Time", -420, TRUE, "(UTC+07:00) Krasnoyarsk (RTZ 6)",
"North Asia Standard Time", -420, TRUE, "(UTC+07:00) Krasnoyarsk",
"Russia TZ 6 Standard Time", "Russia TZ 6 Daylight Time",
(TIME_ZONE_RULE_ENTRY*) &TimeZoneRuleTable_80, 5
(TIME_ZONE_RULE_ENTRY*) &TimeZoneRuleTable_82, 5
},
{
"China Standard Time", -480, FALSE, "(UTC+08:00) Beijing, Chongqing, Hong Kong, Urumqi",
@ -1067,9 +1120,9 @@ static const TIME_ZONE_ENTRY TimeZoneTable[] =
NULL, 0
},
{
"North Asia East Standard Time", -480, TRUE, "(UTC+08:00) Irkutsk (RTZ 7)",
"North Asia East Standard Time", -480, TRUE, "(UTC+08:00) Irkutsk",
"Russia TZ 7 Standard Time", "Russia TZ 7 Daylight Time",
(TIME_ZONE_RULE_ENTRY*) &TimeZoneRuleTable_82, 5
(TIME_ZONE_RULE_ENTRY*) &TimeZoneRuleTable_84, 5
},
{
"Singapore Standard Time", -480, FALSE, "(UTC+08:00) Kuala Lumpur, Singapore",
@ -1079,7 +1132,7 @@ static const TIME_ZONE_ENTRY TimeZoneTable[] =
{
"W. Australia Standard Time", -480, TRUE, "(UTC+08:00) Perth",
"W. Australia Standard Time", "W. Australia Daylight Time",
(TIME_ZONE_RULE_ENTRY*) &TimeZoneRuleTable_84, 4
(TIME_ZONE_RULE_ENTRY*) &TimeZoneRuleTable_86, 4
},
{
"Taipei Standard Time", -480, FALSE, "(UTC+08:00) Taipei",
@ -1089,7 +1142,12 @@ static const TIME_ZONE_ENTRY TimeZoneTable[] =
{
"Ulaanbaatar Standard Time", -480, TRUE, "(UTC+08:00) Ulaanbaatar",
"Ulaanbaatar Standard Time", "Ulaanbaatar Daylight Time",
(TIME_ZONE_RULE_ENTRY*) &TimeZoneRuleTable_86, 1
(TIME_ZONE_RULE_ENTRY*) &TimeZoneRuleTable_88, 1
},
{
"Transbaikal Standard Time", -480, TRUE, "(UTC+09:00) Chita",
"Transbaikal Standard Time", "Transbaikal Daylight Time",
(TIME_ZONE_RULE_ENTRY*) &TimeZoneRuleTable_89, 7
},
{
"North Korea Standard Time", -510, FALSE, "(UTC+08:30) Pyongyang",
@ -1107,14 +1165,14 @@ static const TIME_ZONE_ENTRY TimeZoneTable[] =
NULL, 0
},
{
"Yakutsk Standard Time", -540, TRUE, "(UTC+09:00) Yakutsk (RTZ 8)",
"Yakutsk Standard Time", -540, TRUE, "(UTC+09:00) Yakutsk",
"Russia TZ 8 Standard Time", "Russia TZ 8 Daylight Time",
(TIME_ZONE_RULE_ENTRY*) &TimeZoneRuleTable_90, 5
(TIME_ZONE_RULE_ENTRY*) &TimeZoneRuleTable_93, 5
},
{
"Cen. Australia Standard Time", -570, TRUE, "(UTC+09:30) Adelaide",
"Cen. Australia Standard Time", "Cen. Australia Daylight Time",
(TIME_ZONE_RULE_ENTRY*) &TimeZoneRuleTable_91, 2
(TIME_ZONE_RULE_ENTRY*) &TimeZoneRuleTable_94, 2
},
{
"AUS Central Standard Time", -570, FALSE, "(UTC+09:30) Darwin",
@ -1129,7 +1187,7 @@ static const TIME_ZONE_ENTRY TimeZoneTable[] =
{
"AUS Eastern Standard Time", -600, TRUE, "(UTC+10:00) Canberra, Melbourne, Sydney",
"AUS Eastern Standard Time", "AUS Eastern Daylight Time",
(TIME_ZONE_RULE_ENTRY*) &TimeZoneRuleTable_94, 2
(TIME_ZONE_RULE_ENTRY*) &TimeZoneRuleTable_97, 2
},
{
"West Pacific Standard Time", -600, FALSE, "(UTC+10:00) Guam, Port Moresby",
@ -1139,20 +1197,25 @@ static const TIME_ZONE_ENTRY TimeZoneTable[] =
{
"Tasmania Standard Time", -600, TRUE, "(UTC+10:00) Hobart",
"Tasmania Standard Time", "Tasmania Daylight Time",
(TIME_ZONE_RULE_ENTRY*) &TimeZoneRuleTable_96, 2
(TIME_ZONE_RULE_ENTRY*) &TimeZoneRuleTable_99, 2
},
{
"Magadan Standard Time", -600, TRUE, "(UTC+10:00) Magadan",
"Magadan Standard Time", "Magadan Daylight Time",
(TIME_ZONE_RULE_ENTRY*) &TimeZoneRuleTable_97, 5
(TIME_ZONE_RULE_ENTRY*) &TimeZoneRuleTable_100, 5
},
{
"Vladivostok Standard Time", -600, TRUE, "(UTC+10:00) Vladivostok, Magadan (RTZ 9)",
"Vladivostok Standard Time", -600, TRUE, "(UTC+10:00) Vladivostok",
"Russia TZ 9 Standard Time", "Russia TZ 9 Daylight Time",
(TIME_ZONE_RULE_ENTRY*) &TimeZoneRuleTable_98, 5
(TIME_ZONE_RULE_ENTRY*) &TimeZoneRuleTable_101, 5
},
{
"Russia Time Zone 10", -660, FALSE, "(UTC+11:00) Chokurdakh (RTZ 10)",
"Sakhalin Standard Time", -600, TRUE, "(UTC+11:00) Sakhalin",
"Sakhalin Standard Time", "Sakhalin Daylight Time",
(TIME_ZONE_RULE_ENTRY*) &TimeZoneRuleTable_102, 7
},
{
"Russia Time Zone 10", -660, FALSE, "(UTC+11:00) Chokurdakh",
"Russia TZ 10 Standard Time", "Russia TZ 10 Daylight Time",
NULL, 0
},
@ -1162,14 +1225,14 @@ static const TIME_ZONE_ENTRY TimeZoneTable[] =
NULL, 0
},
{
"Russia Time Zone 11", -720, FALSE, "(UTC+12:00) Anadyr, Petropavlovsk-Kamchatsky (RTZ 11)",
"Russia Time Zone 11", -720, FALSE, "(UTC+12:00) Anadyr, Petropavlovsk-Kamchatsky",
"Russia TZ 11 Standard Time", "Russia TZ 11 Daylight Time",
NULL, 0
},
{
"New Zealand Standard Time", -720, TRUE, "(UTC+12:00) Auckland, Wellington",
"New Zealand Standard Time", "New Zealand Daylight Time",
(TIME_ZONE_RULE_ENTRY*) &TimeZoneRuleTable_102, 3
(TIME_ZONE_RULE_ENTRY*) &TimeZoneRuleTable_106, 3
},
{
"UTC+12", -720, FALSE, "(UTC+12:00) Coordinated Universal Time+12",
@ -1179,12 +1242,12 @@ static const TIME_ZONE_ENTRY TimeZoneTable[] =
{
"Fiji Standard Time", -720, TRUE, "(UTC+12:00) Fiji",
"Fiji Standard Time", "Fiji Daylight Time",
(TIME_ZONE_RULE_ENTRY*) &TimeZoneRuleTable_104, 7
(TIME_ZONE_RULE_ENTRY*) &TimeZoneRuleTable_108, 7
},
{
"Kamchatka Standard Time", -720, TRUE, "(UTC+12:00) Petropavlovsk-Kamchatsky - Old",
"Kamchatka Standard Time", "Kamchatka Daylight Time",
(TIME_ZONE_RULE_ENTRY*) &TimeZoneRuleTable_105, 1
(TIME_ZONE_RULE_ENTRY*) &TimeZoneRuleTable_109, 1
},
{
"Tonga Standard Time", -780, FALSE, "(UTC+13:00) Nuku'alofa",
@ -1194,7 +1257,7 @@ static const TIME_ZONE_ENTRY TimeZoneTable[] =
{
"Samoa Standard Time", -780, TRUE, "(UTC+13:00) Samoa",
"Samoa Standard Time", "Samoa Daylight Time",
(TIME_ZONE_RULE_ENTRY*) &TimeZoneRuleTable_107, 4
(TIME_ZONE_RULE_ENTRY*) &TimeZoneRuleTable_111, 4
},
{
"Line Islands Standard Time", -840, FALSE, "(UTC+14:00) Kiritimati Island",
@ -1319,7 +1382,6 @@ const WINDOWS_TZID_ENTRY WindowsTimeZoneIdTable[] =
{ "Eastern Standard Time", "America/Nassau" },
{ "Eastern Standard Time", "America/New_York America/Detroit America/Indiana/Petersburg America/Indiana/Vincennes America/Indiana/Winamac America/Kentucky/Monticello America/Louisville" },
{ "Eastern Standard Time", "America/New_York" },
{ "Eastern Standard Time", "America/Port-au-Prince" },
{ "Eastern Standard Time", "America/Toronto America/Iqaluit America/Montreal America/Nipigon America/Pangnirtung America/Thunder_Bay" },
{ "Eastern Standard Time", "EST5EDT" },
{ "Egypt Standard Time", "Africa/Cairo" },
@ -1400,7 +1462,7 @@ const WINDOWS_TZID_ENTRY WindowsTimeZoneIdTable[] =
{ "New Zealand Standard Time", "Pacific/Auckland" },
{ "Newfoundland Standard Time", "America/St_Johns" },
{ "North Asia East Standard Time", "Asia/Irkutsk" },
{ "North Asia Standard Time", "Asia/Krasnoyarsk Asia/Novokuznetsk" },
{ "North Asia Standard Time", "Asia/Krasnoyarsk Asia/Barnaul Asia/Novokuznetsk" },
{ "North Asia Standard Time", "Asia/Krasnoyarsk" },
{ "North Korea Standard Time", "Asia/Pyongyang" },
{ "Pacific SA Standard Time", "America/Santiago" },
@ -1415,9 +1477,11 @@ const WINDOWS_TZID_ENTRY WindowsTimeZoneIdTable[] =
{ "Romance Standard Time", "Europe/Copenhagen" },
{ "Romance Standard Time", "Europe/Madrid Africa/Ceuta" },
{ "Romance Standard Time", "Europe/Paris" },
{ "Russia Time Zone 10", "Asia/Srednekolymsk Asia/Sakhalin" },
{ "Russia Time Zone 10", "Asia/Srednekolymsk" },
{ "Russia Time Zone 11", "Asia/Kamchatka Asia/Anadyr" },
{ "Russia Time Zone 11", "Asia/Kamchatka" },
{ "Russia Time Zone 3", "Europe/Samara Europe/Astrakhan Europe/Ulyanovsk" },
{ "Russia Time Zone 3", "Europe/Samara" },
{ "Russian Standard Time", "Europe/Moscow Europe/Simferopol Europe/Volgograd" },
{ "Russian Standard Time", "Europe/Moscow" },
@ -1434,6 +1498,7 @@ const WINDOWS_TZID_ENTRY WindowsTimeZoneIdTable[] =
{ "SA Pacific Standard Time", "America/Jamaica" },
{ "SA Pacific Standard Time", "America/Lima" },
{ "SA Pacific Standard Time", "America/Panama" },
{ "SA Pacific Standard Time", "America/Port-au-Prince" },
{ "SA Pacific Standard Time", "America/Rio_Branco America/Eirunepe" },
{ "SA Pacific Standard Time", "Etc/GMT+5" },
{ "SA Pacific Standard Time", "Pacific/Easter" },
@ -1532,7 +1597,7 @@ const WINDOWS_TZID_ENTRY WindowsTimeZoneIdTable[] =
{ "UTC-11", "Pacific/Niue" },
{ "UTC-11", "Pacific/Pago_Pago" },
{ "Venezuela Standard Time", "America/Caracas" },
{ "Vladivostok Standard Time", "Asia/Vladivostok Asia/Sakhalin Asia/Ust-Nera" },
{ "Vladivostok Standard Time", "Asia/Vladivostok Asia/Ust-Nera" },
{ "Vladivostok Standard Time", "Asia/Vladivostok" },
{ "W. Australia Standard Time", "Antarctica/Casey" },
{ "W. Australia Standard Time", "Australia/Perth" },
@ -1585,7 +1650,6 @@ const WINDOWS_TZID_ENTRY WindowsTimeZoneIdTable[] =
{ "Yakutsk Standard Time", "Asia/Yakutsk Asia/Chita Asia/Khandyga" },
{ "Yakutsk Standard Time", "Asia/Yakutsk" },
};
static UINT64 winpr_windows_gmtime()
{
time_t unix_time;

View File

@ -45,6 +45,9 @@ int ListDictionary_Count(wListDictionary* listDictionary)
int count = 0;
wListDictionaryItem* item;
if (!listDictionary)
return -1;
if (listDictionary->synchronized)
EnterCriticalSection(&listDictionary->lock);
@ -98,6 +101,9 @@ BOOL ListDictionary_IsSynchronized(wListDictionary* listDictionary)
void ListDictionary_Lock(wListDictionary* listDictionary)
{
if (!listDictionary)
return;
EnterCriticalSection(&listDictionary->lock);
}
@ -107,6 +113,9 @@ void ListDictionary_Lock(wListDictionary* listDictionary)
void ListDictionary_Unlock(wListDictionary* listDictionary)
{
if (!listDictionary)
return;
LeaveCriticalSection(&listDictionary->lock);
}
@ -187,6 +196,9 @@ BOOL ListDictionary_Add(wListDictionary* listDictionary, void* key, void* value)
wListDictionaryItem* lastItem;
BOOL ret = FALSE;
if (!listDictionary)
return FALSE;
if (listDictionary->synchronized)
EnterCriticalSection(&listDictionary->lock);
@ -230,6 +242,9 @@ void ListDictionary_Clear(wListDictionary* listDictionary)
wListDictionaryItem* item;
wListDictionaryItem* nextItem;
if (!listDictionary)
return;
if (listDictionary->synchronized)
EnterCriticalSection(&listDictionary->lock);
@ -267,6 +282,9 @@ BOOL ListDictionary_Contains(wListDictionary* listDictionary, void* key)
wListDictionaryItem* item;
OBJECT_EQUALS_FN keyEquals;
if (!listDictionary)
return FALSE;
if (listDictionary->synchronized)
EnterCriticalSection(&(listDictionary->lock));
@ -298,6 +316,9 @@ void* ListDictionary_Remove(wListDictionary* listDictionary, void* key)
wListDictionaryItem* prevItem;
OBJECT_EQUALS_FN keyEquals;
if (!listDictionary)
return NULL;
if (listDictionary->synchronized)
EnterCriticalSection(&listDictionary->lock);
@ -338,6 +359,9 @@ void *ListDictionary_Remove_Head(wListDictionary* listDictionary)
wListDictionaryItem* item;
void *value = NULL;
if (!listDictionary)
return NULL;
if (listDictionary->synchronized)
EnterCriticalSection(&listDictionary->lock);
@ -364,6 +388,9 @@ void* ListDictionary_GetItemValue(wListDictionary* listDictionary, void* key)
wListDictionaryItem* item = NULL;
OBJECT_EQUALS_FN keyEquals;
if (!listDictionary)
return NULL;
if (listDictionary->synchronized)
EnterCriticalSection(&listDictionary->lock);
@ -400,6 +427,9 @@ BOOL ListDictionary_SetItemValue(wListDictionary* listDictionary, void* key, voi
wListDictionaryItem* item;
OBJECT_EQUALS_FN keyEquals;
if (!listDictionary)
return FALSE;
if (listDictionary->synchronized)
EnterCriticalSection(&listDictionary->lock);

View File

@ -33,7 +33,13 @@ add_library(${MODULE_NAME} STATIC ${${MODULE_PREFIX}_SRCS})
set(${MODULE_PREFIX}_LIBS winpr)
if(OPENSSL_FOUND)
list(APPEND ${MODULE_PREFIX}_LIBS ${OPENSSL_LIBRARIES})
if(WIN32)
list(APPEND ${MODULE_PREFIX}_LIBS ${OPENSSL_LIBRARIES})
else()
# if ${OPENSSL_LIBRARIES} libssl and libcrypto is linked
# therefor explicitly link against libcrypto
list(APPEND ${MODULE_PREFIX}_LIBS crypto)
endif()
endif()
if(MBEDTLS_FOUND)

View File

@ -9,7 +9,7 @@ Description: WinPR: Windows Portable Runtime
URL: http://www.freerdp.com/
Version: @WINPR_VERSION@
Requires:
Requires.private: zlib libssl
Requires.private: libssl
Libs: -L${libdir} ${libs}
Libs.private: -ldl -lrt -lm -lpthread
Cflags: -I${includedir}