mirror of
https://github.com/mumble-voip/mumble.git
synced 2025-10-26 11:19:16 +00:00
MAINT: Update copyright notice to 2021
This was done by running scripts/updateLicenseHeaders.py and then manually editing the LICENSE file.
This commit is contained in:
parent
86710dab62
commit
59ae429972
@ -1,6 +1,6 @@
|
|||||||
#!/usr/bin/env bash
|
#!/usr/bin/env bash
|
||||||
#
|
#
|
||||||
# Copyright 2020 The Mumble Developers. All rights reserved.
|
# Copyright 2020-2021 The Mumble Developers. All rights reserved.
|
||||||
# Use of this source code is governed by a BSD-style license
|
# Use of this source code is governed by a BSD-style license
|
||||||
# that can be found in the LICENSE file at the root of the
|
# that can be found in the LICENSE file at the root of the
|
||||||
# Mumble source tree or at <https://www.mumble.info/LICENSE>.
|
# Mumble source tree or at <https://www.mumble.info/LICENSE>.
|
||||||
|
|||||||
@ -1,6 +1,6 @@
|
|||||||
#!/usr/bin/env bash
|
#!/usr/bin/env bash
|
||||||
#
|
#
|
||||||
# Copyright 2020 The Mumble Developers. All rights reserved.
|
# Copyright 2020-2021 The Mumble Developers. All rights reserved.
|
||||||
# Use of this source code is governed by a BSD-style license
|
# Use of this source code is governed by a BSD-style license
|
||||||
# that can be found in the LICENSE file at the root of the
|
# that can be found in the LICENSE file at the root of the
|
||||||
# Mumble source tree or at <https://www.mumble.info/LICENSE>.
|
# Mumble source tree or at <https://www.mumble.info/LICENSE>.
|
||||||
|
|||||||
@ -1,6 +1,6 @@
|
|||||||
#!/usr/bin/env bash
|
#!/usr/bin/env bash
|
||||||
#
|
#
|
||||||
# Copyright 2020 The Mumble Developers. All rights reserved.
|
# Copyright 2020-2021 The Mumble Developers. All rights reserved.
|
||||||
# Use of this source code is governed by a BSD-style license
|
# Use of this source code is governed by a BSD-style license
|
||||||
# that can be found in the LICENSE file at the root of the
|
# that can be found in the LICENSE file at the root of the
|
||||||
# Mumble source tree or at <https://www.mumble.info/LICENSE>.
|
# Mumble source tree or at <https://www.mumble.info/LICENSE>.
|
||||||
|
|||||||
@ -1,6 +1,6 @@
|
|||||||
#!/bin/bash -ex
|
#!/bin/bash -ex
|
||||||
#
|
#
|
||||||
# Copyright 2019-2020 The Mumble Developers. All rights reserved.
|
# Copyright 2019-2021 The Mumble Developers. All rights reserved.
|
||||||
# Use of this source code is governed by a BSD-style license
|
# Use of this source code is governed by a BSD-style license
|
||||||
# that can be found in the LICENSE file at the root of the
|
# that can be found in the LICENSE file at the root of the
|
||||||
# Mumble source tree or at <https://www.mumble.info/LICENSE>.
|
# Mumble source tree or at <https://www.mumble.info/LICENSE>.
|
||||||
|
|||||||
@ -1,6 +1,6 @@
|
|||||||
#!/usr/bin/env bash
|
#!/usr/bin/env bash
|
||||||
#
|
#
|
||||||
# Copyright 2020 The Mumble Developers. All rights reserved.
|
# Copyright 2009-2021 The Mumble Developers. All rights reserved.
|
||||||
# Use of this source code is governed by a BSD-style license
|
# Use of this source code is governed by a BSD-style license
|
||||||
# that can be found in the LICENSE file at the root of the
|
# that can be found in the LICENSE file at the root of the
|
||||||
# Mumble source tree or at <https://www.mumble.info/LICENSE>.
|
# Mumble source tree or at <https://www.mumble.info/LICENSE>.
|
||||||
|
|||||||
@ -1,6 +1,6 @@
|
|||||||
#!/bin/bash -ex
|
#!/bin/bash -ex
|
||||||
#
|
#
|
||||||
# Copyright 2019-2020 The Mumble Developers. All rights reserved.
|
# Copyright 2009-2021 The Mumble Developers. All rights reserved.
|
||||||
# Use of this source code is governed by a BSD-style license
|
# Use of this source code is governed by a BSD-style license
|
||||||
# that can be found in the LICENSE file at the root of the
|
# that can be found in the LICENSE file at the root of the
|
||||||
# Mumble source tree or at <https://www.mumble.info/LICENSE>.
|
# Mumble source tree or at <https://www.mumble.info/LICENSE>.
|
||||||
|
|||||||
@ -1,4 +1,4 @@
|
|||||||
# Copyright 2019-2020 The Mumble Developers. All rights reserved.
|
# Copyright 2020-2021 The Mumble Developers. All rights reserved.
|
||||||
# Use of this source code is governed by a BSD-style license
|
# Use of this source code is governed by a BSD-style license
|
||||||
# that can be found in the LICENSE file at the root of the
|
# that can be found in the LICENSE file at the root of the
|
||||||
# Mumble source tree or at <https://www.mumble.info/LICENSE>.
|
# Mumble source tree or at <https://www.mumble.info/LICENSE>.
|
||||||
|
|||||||
@ -1,3 +1,8 @@
|
|||||||
|
# Copyright 2019-2021 The Mumble Developers. All rights reserved.
|
||||||
|
# Use of this source code is governed by a BSD-style license
|
||||||
|
# that can be found in the LICENSE file at the root of the
|
||||||
|
# Mumble source tree or at <https://www.mumble.info/LICENSE>.
|
||||||
|
|
||||||
variables:
|
variables:
|
||||||
MUMBLE_ENVIRONMENT_STORE: '$(Agent.ToolsDirectory)/MumbleBuild'
|
MUMBLE_ENVIRONMENT_STORE: '$(Agent.ToolsDirectory)/MumbleBuild'
|
||||||
MUMBLE_ENVIRONMENT_SOURCE: 'https://dl.mumble.info/build/vcpkg'
|
MUMBLE_ENVIRONMENT_SOURCE: 'https://dl.mumble.info/build/vcpkg'
|
||||||
|
|||||||
@ -1,3 +1,8 @@
|
|||||||
|
# Copyright 2019-2021 The Mumble Developers. All rights reserved.
|
||||||
|
# Use of this source code is governed by a BSD-style license
|
||||||
|
# that can be found in the LICENSE file at the root of the
|
||||||
|
# Mumble source tree or at <https://www.mumble.info/LICENSE>.
|
||||||
|
|
||||||
variables:
|
variables:
|
||||||
MUMBLE_ENVIRONMENT_STORE: '$(Agent.ToolsDirectory)/MumbleBuild'
|
MUMBLE_ENVIRONMENT_STORE: '$(Agent.ToolsDirectory)/MumbleBuild'
|
||||||
MUMBLE_ENVIRONMENT_SOURCE: 'https://dl.mumble.info/build/vcpkg'
|
MUMBLE_ENVIRONMENT_SOURCE: 'https://dl.mumble.info/build/vcpkg'
|
||||||
|
|||||||
@ -1,6 +1,6 @@
|
|||||||
#!/bin/bash -ex
|
#!/bin/bash -ex
|
||||||
#
|
#
|
||||||
# Copyright 2020 The Mumble Developers. All rights reserved.
|
# Copyright 2019-2021 The Mumble Developers. All rights reserved.
|
||||||
# Use of this source code is governed by a BSD-style license
|
# Use of this source code is governed by a BSD-style license
|
||||||
# that can be found in the LICENSE file at the root of the
|
# that can be found in the LICENSE file at the root of the
|
||||||
# Mumble source tree or at <https://www.mumble.info/LICENSE>.
|
# Mumble source tree or at <https://www.mumble.info/LICENSE>.
|
||||||
|
|||||||
@ -1,3 +1,8 @@
|
|||||||
|
# Copyright 2020-2021 The Mumble Developers. All rights reserved.
|
||||||
|
# Use of this source code is governed by a BSD-style license
|
||||||
|
# that can be found in the LICENSE file at the root of the
|
||||||
|
# Mumble source tree or at <https://www.mumble.info/LICENSE>.
|
||||||
|
|
||||||
steps:
|
steps:
|
||||||
- script: git submodule --quiet update --init --recursive
|
- script: git submodule --quiet update --init --recursive
|
||||||
displayName: 'Fetch submodules'
|
displayName: 'Fetch submodules'
|
||||||
|
|||||||
@ -1,3 +1,8 @@
|
|||||||
|
# Copyright 2020-2021 The Mumble Developers. All rights reserved.
|
||||||
|
# Use of this source code is governed by a BSD-style license
|
||||||
|
# that can be found in the LICENSE file at the root of the
|
||||||
|
# Mumble source tree or at <https://www.mumble.info/LICENSE>.
|
||||||
|
|
||||||
parameters:
|
parameters:
|
||||||
- name: installEnvironment
|
- name: installEnvironment
|
||||||
type: boolean
|
type: boolean
|
||||||
|
|||||||
@ -1,3 +1,8 @@
|
|||||||
|
# Copyright 2020-2021 The Mumble Developers. All rights reserved.
|
||||||
|
# Use of this source code is governed by a BSD-style license
|
||||||
|
# that can be found in the LICENSE file at the root of the
|
||||||
|
# Mumble source tree or at <https://www.mumble.info/LICENSE>.
|
||||||
|
|
||||||
steps:
|
steps:
|
||||||
- script: git submodule --quiet update --init --recursive
|
- script: git submodule --quiet update --init --recursive
|
||||||
displayName: 'Fetch submodules'
|
displayName: 'Fetch submodules'
|
||||||
|
|||||||
@ -1,3 +1,8 @@
|
|||||||
|
# Copyright 2020-2021 The Mumble Developers. All rights reserved.
|
||||||
|
# Use of this source code is governed by a BSD-style license
|
||||||
|
# that can be found in the LICENSE file at the root of the
|
||||||
|
# Mumble source tree or at <https://www.mumble.info/LICENSE>.
|
||||||
|
|
||||||
steps:
|
steps:
|
||||||
- task: Cache@2
|
- task: Cache@2
|
||||||
inputs:
|
inputs:
|
||||||
|
|||||||
@ -1,3 +1,8 @@
|
|||||||
|
# Copyright 2020-2021 The Mumble Developers. All rights reserved.
|
||||||
|
# Use of this source code is governed by a BSD-style license
|
||||||
|
# that can be found in the LICENSE file at the root of the
|
||||||
|
# Mumble source tree or at <https://www.mumble.info/LICENSE>.
|
||||||
|
|
||||||
parameters:
|
parameters:
|
||||||
- name: name
|
- name: name
|
||||||
type: string
|
type: string
|
||||||
|
|||||||
@ -1,6 +1,6 @@
|
|||||||
#!/bin/bash -ex
|
#!/bin/bash -ex
|
||||||
#
|
#
|
||||||
# Copyright 2005-2020 The Mumble Developers. All rights reserved.
|
# Copyright 2017-2021 The Mumble Developers. All rights reserved.
|
||||||
# Use of this source code is governed by a BSD-style license
|
# Use of this source code is governed by a BSD-style license
|
||||||
# that can be found in the LICENSE file at the root of the
|
# that can be found in the LICENSE file at the root of the
|
||||||
# Mumble source tree or at <https://www.mumble.info/LICENSE>.
|
# Mumble source tree or at <https://www.mumble.info/LICENSE>.
|
||||||
|
|||||||
@ -1,6 +1,6 @@
|
|||||||
#!/bin/bash -ex
|
#!/bin/bash -ex
|
||||||
#
|
#
|
||||||
# Copyright 2005-2020 The Mumble Developers. All rights reserved.
|
# Copyright 2017-2021 The Mumble Developers. All rights reserved.
|
||||||
# Use of this source code is governed by a BSD-style license
|
# Use of this source code is governed by a BSD-style license
|
||||||
# that can be found in the LICENSE file at the root of the
|
# that can be found in the LICENSE file at the root of the
|
||||||
# Mumble source tree or at <https://www.mumble.info/LICENSE>.
|
# Mumble source tree or at <https://www.mumble.info/LICENSE>.
|
||||||
|
|||||||
@ -1,3 +1,7 @@
|
|||||||
|
# Copyright 2019-2021 The Mumble Developers. All rights reserved.
|
||||||
|
# Use of this source code is governed by a BSD-style license
|
||||||
|
# that can be found in the LICENSE file at the root of the
|
||||||
|
# Mumble source tree or at <https://www.mumble.info/LICENSE>.
|
||||||
freebsd_instance:
|
freebsd_instance:
|
||||||
image: freebsd-12-2-release-amd64
|
image: freebsd-12-2-release-amd64
|
||||||
|
|
||||||
|
|||||||
2
LICENSE
2
LICENSE
@ -1,4 +1,4 @@
|
|||||||
Copyright (C) 2005-2020 The Mumble Developers
|
Copyright (C) 2005-2021 The Mumble Developers
|
||||||
|
|
||||||
A list of The Mumble Developers can be found in the
|
A list of The Mumble Developers can be found in the
|
||||||
AUTHORS file at the root of the Mumble source tree
|
AUTHORS file at the root of the Mumble source tree
|
||||||
|
|||||||
@ -1,3 +1,8 @@
|
|||||||
|
# Copyright 2020-2021 The Mumble Developers. All rights reserved.
|
||||||
|
# Use of this source code is governed by a BSD-style license
|
||||||
|
# that can be found in the LICENSE file at the root of the
|
||||||
|
# Mumble source tree or at <https://www.mumble.info/LICENSE>.
|
||||||
|
|
||||||
# https://github.com/IvanSafonov/grpc-cmake-example
|
# https://github.com/IvanSafonov/grpc-cmake-example
|
||||||
|
|
||||||
# MIT License
|
# MIT License
|
||||||
|
|||||||
@ -1,4 +1,4 @@
|
|||||||
# Copyright 2019-2020 The Mumble Developers. All rights reserved.
|
# Copyright 2020-2021 The Mumble Developers. All rights reserved.
|
||||||
# Use of this source code is governed by a BSD-style license
|
# Use of this source code is governed by a BSD-style license
|
||||||
# that can be found in the LICENSE file at the root of the
|
# that can be found in the LICENSE file at the root of the
|
||||||
# Mumble source tree or at <https://www.mumble.info/LICENSE>.
|
# Mumble source tree or at <https://www.mumble.info/LICENSE>.
|
||||||
|
|||||||
@ -1,4 +1,4 @@
|
|||||||
# Copyright 2020 The Mumble Developers. All rights reserved.
|
# Copyright 2020-2021 The Mumble Developers. All rights reserved.
|
||||||
# Use of this source code is governed by a BSD-style license
|
# Use of this source code is governed by a BSD-style license
|
||||||
# that can be found in the LICENSE file at the root of the
|
# that can be found in the LICENSE file at the root of the
|
||||||
# Mumble source tree or at <https://www.mumble.info/LICENSE>.
|
# Mumble source tree or at <https://www.mumble.info/LICENSE>.
|
||||||
|
|||||||
@ -1,4 +1,4 @@
|
|||||||
# Copyright 2020 The Mumble Developers. All rights reserved.
|
# Copyright 2020-2021 The Mumble Developers. All rights reserved.
|
||||||
# Use of this source code is governed by a BSD-style license
|
# Use of this source code is governed by a BSD-style license
|
||||||
# that can be found in the LICENSE file at the root of the
|
# that can be found in the LICENSE file at the root of the
|
||||||
# Mumble source tree or at <https://www.mumble.info/LICENSE>.
|
# Mumble source tree or at <https://www.mumble.info/LICENSE>.
|
||||||
|
|||||||
@ -1,4 +1,4 @@
|
|||||||
# Copyright 2019-2020 The Mumble Developers. All rights reserved.
|
# Copyright 2020-2021 The Mumble Developers. All rights reserved.
|
||||||
# Use of this source code is governed by a BSD-style license
|
# Use of this source code is governed by a BSD-style license
|
||||||
# that can be found in the LICENSE file at the root of the
|
# that can be found in the LICENSE file at the root of the
|
||||||
# Mumble source tree or at <https://www.mumble.info/LICENSE>.
|
# Mumble source tree or at <https://www.mumble.info/LICENSE>.
|
||||||
|
|||||||
@ -1,4 +1,4 @@
|
|||||||
# Copyright 2019-2020 The Mumble Developers. All rights reserved.
|
# Copyright 2020-2021 The Mumble Developers. All rights reserved.
|
||||||
# Use of this source code is governed by a BSD-style license
|
# Use of this source code is governed by a BSD-style license
|
||||||
# that can be found in the LICENSE file at the root of the
|
# that can be found in the LICENSE file at the root of the
|
||||||
# Mumble source tree or at <https://www.mumble.info/LICENSE>.
|
# Mumble source tree or at <https://www.mumble.info/LICENSE>.
|
||||||
|
|||||||
@ -1,4 +1,4 @@
|
|||||||
# Copyright 2020 The Mumble Developers. All rights reserved.
|
# Copyright 2020-2021 The Mumble Developers. All rights reserved.
|
||||||
# Use of this source code is governed by a BSD-style license
|
# Use of this source code is governed by a BSD-style license
|
||||||
# that can be found in the LICENSE file at the root of the
|
# that can be found in the LICENSE file at the root of the
|
||||||
# Mumble source tree or at <https://www.mumble.info/LICENSE>.
|
# Mumble source tree or at <https://www.mumble.info/LICENSE>.
|
||||||
|
|||||||
@ -1,4 +1,4 @@
|
|||||||
# Copyright 2019-2020 The Mumble Developers. All rights reserved.
|
# Copyright 2020-2021 The Mumble Developers. All rights reserved.
|
||||||
# Use of this source code is governed by a BSD-style license
|
# Use of this source code is governed by a BSD-style license
|
||||||
# that can be found in the LICENSE file at the root of the
|
# that can be found in the LICENSE file at the root of the
|
||||||
# Mumble source tree or at <https://www.mumble.info/LICENSE>.
|
# Mumble source tree or at <https://www.mumble.info/LICENSE>.
|
||||||
|
|||||||
@ -1,4 +1,4 @@
|
|||||||
// Copyright 2005-2020 The Mumble Developers. All rights reserved.
|
// Copyright 2008-2021 The Mumble Developers. All rights reserved.
|
||||||
// Use of this source code is governed by a BSD-style license
|
// Use of this source code is governed by a BSD-style license
|
||||||
// that can be found in the LICENSE file at the root of the
|
// that can be found in the LICENSE file at the root of the
|
||||||
// Mumble source tree or at <https://www.mumble.info/LICENSE>.
|
// Mumble source tree or at <https://www.mumble.info/LICENSE>.
|
||||||
|
|||||||
@ -1,4 +1,4 @@
|
|||||||
// Copyright 2005-2020 The Mumble Developers. All rights reserved.
|
// Copyright 2005-2021 The Mumble Developers. All rights reserved.
|
||||||
// Use of this source code is governed by a BSD-style license
|
// Use of this source code is governed by a BSD-style license
|
||||||
// that can be found in the LICENSE file at the root of the
|
// that can be found in the LICENSE file at the root of the
|
||||||
// Mumble source tree or at <https://www.mumble.info/LICENSE>.
|
// Mumble source tree or at <https://www.mumble.info/LICENSE>.
|
||||||
|
|||||||
@ -1,4 +1,4 @@
|
|||||||
// Copyright 2005-2020 The Mumble Developers. All rights reserved.
|
// Copyright 2016-2021 The Mumble Developers. All rights reserved.
|
||||||
// Use of this source code is governed by a BSD-style license
|
// Use of this source code is governed by a BSD-style license
|
||||||
// that can be found in the LICENSE file at the root of the
|
// that can be found in the LICENSE file at the root of the
|
||||||
// Mumble source tree or at <https://www.mumble.info/LICENSE>.
|
// Mumble source tree or at <https://www.mumble.info/LICENSE>.
|
||||||
|
|||||||
@ -1,4 +1,4 @@
|
|||||||
// Copyright 2005-2020 The Mumble Developers. All rights reserved.
|
// Copyright 2016-2021 The Mumble Developers. All rights reserved.
|
||||||
// Use of this source code is governed by a BSD-style license
|
// Use of this source code is governed by a BSD-style license
|
||||||
// that can be found in the LICENSE file at the root of the
|
// that can be found in the LICENSE file at the root of the
|
||||||
// Mumble source tree or at <https://www.mumble.info/LICENSE>.
|
// Mumble source tree or at <https://www.mumble.info/LICENSE>.
|
||||||
|
|||||||
@ -1,4 +1,4 @@
|
|||||||
// Copyright 2005-2020 The Mumble Developers. All rights reserved.
|
// Copyright 2008-2021 The Mumble Developers. All rights reserved.
|
||||||
// Use of this source code is governed by a BSD-style license
|
// Use of this source code is governed by a BSD-style license
|
||||||
// that can be found in the LICENSE file at the root of the
|
// that can be found in the LICENSE file at the root of the
|
||||||
// Mumble source tree or at <https://www.mumble.info/LICENSE>.
|
// Mumble source tree or at <https://www.mumble.info/LICENSE>.
|
||||||
|
|||||||
@ -1,55 +1,60 @@
|
|||||||
vcpkg_from_github(
|
# Copyright 2020-2021 The Mumble Developers. All rights reserved.
|
||||||
OUT_SOURCE_PATH SOURCE_PATH
|
# Use of this source code is governed by a BSD-style license
|
||||||
REPO mumble-voip/ice
|
# that can be found in the LICENSE file at the root of the
|
||||||
REF 3.7
|
# Mumble source tree or at <https://www.mumble.info/LICENSE>.
|
||||||
SHA512 12cebb53ad1a9271e7db8c12df5f2db9f8cbaec97b562596c4c592bd2449177b6927156100166b432b7e27b13f0d202155748691fd1e848eb6db815f16bcc57f
|
|
||||||
)
|
vcpkg_from_github(
|
||||||
|
OUT_SOURCE_PATH SOURCE_PATH
|
||||||
if("cpp11" IN_LIST FEATURES)
|
REPO mumble-voip/ice
|
||||||
vcpkg_configure_cmake(
|
REF 3.7
|
||||||
SOURCE_PATH ${SOURCE_PATH}
|
SHA512 12cebb53ad1a9271e7db8c12df5f2db9f8cbaec97b562596c4c592bd2449177b6927156100166b432b7e27b13f0d202155748691fd1e848eb6db815f16bcc57f
|
||||||
PREFER_NINJA
|
)
|
||||||
OPTIONS
|
|
||||||
-DBUILD_ICE_CXX=ON
|
if("cpp11" IN_LIST FEATURES)
|
||||||
-DBUILD_ICE_CPP11=ON
|
vcpkg_configure_cmake(
|
||||||
)
|
SOURCE_PATH ${SOURCE_PATH}
|
||||||
else()
|
PREFER_NINJA
|
||||||
vcpkg_configure_cmake(
|
OPTIONS
|
||||||
SOURCE_PATH ${SOURCE_PATH}
|
-DBUILD_ICE_CXX=ON
|
||||||
PREFER_NINJA
|
-DBUILD_ICE_CPP11=ON
|
||||||
OPTIONS
|
)
|
||||||
-DBUILD_ICE_CXX=ON
|
else()
|
||||||
)
|
vcpkg_configure_cmake(
|
||||||
endif()
|
SOURCE_PATH ${SOURCE_PATH}
|
||||||
|
PREFER_NINJA
|
||||||
vcpkg_install_cmake()
|
OPTIONS
|
||||||
|
-DBUILD_ICE_CXX=ON
|
||||||
vcpkg_copy_pdbs()
|
)
|
||||||
|
endif()
|
||||||
file(INSTALL ${SOURCE_PATH}/cpp/include DESTINATION ${CURRENT_PACKAGES_DIR})
|
|
||||||
file(INSTALL ${SOURCE_PATH}/slice DESTINATION ${CURRENT_PACKAGES_DIR})
|
vcpkg_install_cmake()
|
||||||
file(INSTALL ${CURRENT_BUILDTREES_DIR}/${TARGET_TRIPLET}-rel/include
|
|
||||||
DESTINATION ${CURRENT_PACKAGES_DIR}
|
vcpkg_copy_pdbs()
|
||||||
)
|
|
||||||
|
file(INSTALL ${SOURCE_PATH}/cpp/include DESTINATION ${CURRENT_PACKAGES_DIR})
|
||||||
if(EXISTS ${CURRENT_PACKAGES_DIR}/bin)
|
file(INSTALL ${SOURCE_PATH}/slice DESTINATION ${CURRENT_PACKAGES_DIR})
|
||||||
file(INSTALL ${CURRENT_PACKAGES_DIR}/bin/ DESTINATION ${CURRENT_PACKAGES_DIR}/tools/Ice)
|
file(INSTALL ${CURRENT_BUILDTREES_DIR}/${TARGET_TRIPLET}-rel/include
|
||||||
endif()
|
DESTINATION ${CURRENT_PACKAGES_DIR}
|
||||||
|
)
|
||||||
file(INSTALL ${CURRENT_BUILDTREES_DIR}/${TARGET_TRIPLET}-rel/icebuilder/bin/ DESTINATION ${CURRENT_PACKAGES_DIR}/tools/Ice)
|
|
||||||
|
if(EXISTS ${CURRENT_PACKAGES_DIR}/bin)
|
||||||
vcpkg_copy_tool_dependencies(${CURRENT_PACKAGES_DIR}/tools/Ice)
|
file(INSTALL ${CURRENT_PACKAGES_DIR}/bin/ DESTINATION ${CURRENT_PACKAGES_DIR}/tools/Ice)
|
||||||
|
endif()
|
||||||
if(UNIX)
|
|
||||||
vcpkg_execute_required_process(COMMAND chmod -R +x Ice
|
file(INSTALL ${CURRENT_BUILDTREES_DIR}/${TARGET_TRIPLET}-rel/icebuilder/bin/ DESTINATION ${CURRENT_PACKAGES_DIR}/tools/Ice)
|
||||||
WORKING_DIRECTORY ${CURRENT_PACKAGES_DIR}/tools
|
|
||||||
LOGNAME ice-${TARGET_TRIPLET}-setexe
|
vcpkg_copy_tool_dependencies(${CURRENT_PACKAGES_DIR}/tools/Ice)
|
||||||
)
|
|
||||||
endif()
|
if(UNIX)
|
||||||
|
vcpkg_execute_required_process(COMMAND chmod -R +x Ice
|
||||||
file(REMOVE_RECURSE ${CURRENT_PACKAGES_DIR}/bin ${CURRENT_PACKAGES_DIR}/debug/bin)
|
WORKING_DIRECTORY ${CURRENT_PACKAGES_DIR}/tools
|
||||||
|
LOGNAME ice-${TARGET_TRIPLET}-setexe
|
||||||
file(REMOVE_RECURSE ${CURRENT_PACKAGES_DIR}/debug/include)
|
)
|
||||||
|
endif()
|
||||||
file(INSTALL ${SOURCE_PATH}/LICENSE DESTINATION ${CURRENT_PACKAGES_DIR}/share/${PORT} RENAME copyright)
|
|
||||||
file(INSTALL ${SOURCE_PATH}/ICE_LICENSE DESTINATION ${CURRENT_PACKAGES_DIR}/share/${PORT})
|
file(REMOVE_RECURSE ${CURRENT_PACKAGES_DIR}/bin ${CURRENT_PACKAGES_DIR}/debug/bin)
|
||||||
|
|
||||||
|
file(REMOVE_RECURSE ${CURRENT_PACKAGES_DIR}/debug/include)
|
||||||
|
|
||||||
|
file(INSTALL ${SOURCE_PATH}/LICENSE DESTINATION ${CURRENT_PACKAGES_DIR}/share/${PORT} RENAME copyright)
|
||||||
|
file(INSTALL ${SOURCE_PATH}/ICE_LICENSE DESTINATION ${CURRENT_PACKAGES_DIR}/share/${PORT})
|
||||||
|
|||||||
@ -1,4 +1,4 @@
|
|||||||
// Copyright 2020 The Mumble Developers. All rights reserved.
|
// Copyright 2020-2021 The Mumble Developers. All rights reserved.
|
||||||
// Use of this source code is governed by a BSD-style license
|
// Use of this source code is governed by a BSD-style license
|
||||||
// that can be found in the LICENSE file at the root of the
|
// that can be found in the LICENSE file at the root of the
|
||||||
// Mumble source tree or at <https://www.mumble.info/LICENSE>.
|
// Mumble source tree or at <https://www.mumble.info/LICENSE>.
|
||||||
|
|||||||
@ -1,4 +1,4 @@
|
|||||||
// Copyright 2020 The Mumble Developers. All rights reserved.
|
// Copyright 2020-2021 The Mumble Developers. All rights reserved.
|
||||||
// Use of this source code is governed by a BSD-style license
|
// Use of this source code is governed by a BSD-style license
|
||||||
// that can be found in the LICENSE file at the root of the
|
// that can be found in the LICENSE file at the root of the
|
||||||
// Mumble source tree or at <https://www.mumble.info/LICENSE>.
|
// Mumble source tree or at <https://www.mumble.info/LICENSE>.
|
||||||
|
|||||||
@ -1,4 +1,4 @@
|
|||||||
// Copyright 2020 The Mumble Developers. All rights reserved.
|
// Copyright 2020-2021 The Mumble Developers. All rights reserved.
|
||||||
// Use of this source code is governed by a BSD-style license
|
// Use of this source code is governed by a BSD-style license
|
||||||
// that can be found in the LICENSE file at the root of the
|
// that can be found in the LICENSE file at the root of the
|
||||||
// Mumble source tree or at <https://www.mumble.info/LICENSE>.
|
// Mumble source tree or at <https://www.mumble.info/LICENSE>.
|
||||||
|
|||||||
@ -1,4 +1,4 @@
|
|||||||
// Copyright 2005-2020 The Mumble Developers. All rights reserved.
|
// Copyright 2010-2021 The Mumble Developers. All rights reserved.
|
||||||
// Use of this source code is governed by a BSD-style license
|
// Use of this source code is governed by a BSD-style license
|
||||||
// that can be found in the LICENSE file at the root of the
|
// that can be found in the LICENSE file at the root of the
|
||||||
// Mumble source tree or at <https://www.mumble.info/LICENSE>.
|
// Mumble source tree or at <https://www.mumble.info/LICENSE>.
|
||||||
|
|||||||
@ -1,6 +1,6 @@
|
|||||||
#!/usr/bin/perl
|
#!/usr/bin/perl
|
||||||
#
|
#
|
||||||
# Copyright 2005-2020 The Mumble Developers. All rights reserved.
|
# Copyright 2009-2021 The Mumble Developers. All rights reserved.
|
||||||
# Use of this source code is governed by a BSD-style license
|
# Use of this source code is governed by a BSD-style license
|
||||||
# that can be found in the LICENSE file at the root of the
|
# that can be found in the LICENSE file at the root of the
|
||||||
# Mumble source tree or at <https://www.mumble.info/LICENSE>.
|
# Mumble source tree or at <https://www.mumble.info/LICENSE>.
|
||||||
|
|||||||
@ -1,7 +1,7 @@
|
|||||||
#!/usr/bin/env python
|
#!/usr/bin/env python
|
||||||
# -*- coding: utf-8 -*-
|
# -*- coding: utf-8 -*-
|
||||||
#
|
#
|
||||||
# Copyright 2005-2020 The Mumble Developers. All rights reserved.
|
# Copyright 2008-2021 The Mumble Developers. All rights reserved.
|
||||||
# Use of this source code is governed by a BSD-style license
|
# Use of this source code is governed by a BSD-style license
|
||||||
# that can be found in the LICENSE file at the root of the
|
# that can be found in the LICENSE file at the root of the
|
||||||
# Mumble source tree or at <https://www.mumble.info/LICENSE>.
|
# Mumble source tree or at <https://www.mumble.info/LICENSE>.
|
||||||
|
|||||||
@ -1,4 +1,4 @@
|
|||||||
// Copyright 2005-2020 The Mumble Developers. All rights reserved.
|
// Copyright 2014-2021 The Mumble Developers. All rights reserved.
|
||||||
// Use of this source code is governed by a BSD-style license
|
// Use of this source code is governed by a BSD-style license
|
||||||
// that can be found in the LICENSE file at the root of the
|
// that can be found in the LICENSE file at the root of the
|
||||||
// Mumble source tree or at <https://www.mumble.info/LICENSE>.
|
// Mumble source tree or at <https://www.mumble.info/LICENSE>.
|
||||||
|
|||||||
@ -1,4 +1,4 @@
|
|||||||
// Copyright 2005-2020 The Mumble Developers. All rights reserved.
|
// Copyright 2005-2021 The Mumble Developers. All rights reserved.
|
||||||
// Use of this source code is governed by a BSD-style license
|
// Use of this source code is governed by a BSD-style license
|
||||||
// that can be found in the LICENSE file at the root of the
|
// that can be found in the LICENSE file at the root of the
|
||||||
// Mumble source tree or at <https://www.mumble.info/LICENSE>.
|
// Mumble source tree or at <https://www.mumble.info/LICENSE>.
|
||||||
|
|||||||
@ -1,10 +1,10 @@
|
|||||||
// Copyright 2005-2020 The Mumble Developers. All rights reserved.
|
// Copyright 2010-2021 The Mumble Developers. All rights reserved.
|
||||||
// Use of this source code is governed by a BSD-style license
|
// Use of this source code is governed by a BSD-style license
|
||||||
// that can be found in the LICENSE file at the root of the
|
// that can be found in the LICENSE file at the root of the
|
||||||
// Mumble source tree or at <https://www.mumble.info/LICENSE>.
|
// Mumble source tree or at <https://www.mumble.info/LICENSE>.
|
||||||
|
|
||||||
#ifdef USE_MINHOOK
|
#ifdef USE_MINHOOK
|
||||||
# include "HardHook_minhook.cpp"
|
# include "HardHook_minhook.cpp"
|
||||||
#else
|
#else
|
||||||
# include "HardHook_x86.cpp"
|
# include "HardHook_x86.cpp"
|
||||||
#endif
|
#endif
|
||||||
|
|||||||
@ -1,15 +1,15 @@
|
|||||||
// Copyright 2005-2020 The Mumble Developers. All rights reserved.
|
// Copyright 2005-2021 The Mumble Developers. All rights reserved.
|
||||||
// Use of this source code is governed by a BSD-style license
|
// Use of this source code is governed by a BSD-style license
|
||||||
// that can be found in the LICENSE file at the root of the
|
// that can be found in the LICENSE file at the root of the
|
||||||
// Mumble source tree or at <https://www.mumble.info/LICENSE>.
|
// Mumble source tree or at <https://www.mumble.info/LICENSE>.
|
||||||
|
|
||||||
#ifndef MUMBLE_HARDHOOK_H_
|
#ifndef MUMBLE_HARDHOOK_H_
|
||||||
#define MUMBLE_HARDHOOK_H_
|
#define MUMBLE_HARDHOOK_H_
|
||||||
|
|
||||||
#ifdef USE_MINHOOK
|
#ifdef USE_MINHOOK
|
||||||
# include "HardHook_minhook.h"
|
# include "HardHook_minhook.h"
|
||||||
#else
|
#else
|
||||||
# include "HardHook_x86.h"
|
# include "HardHook_x86.h"
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
#endif
|
#endif
|
||||||
|
|||||||
@ -1,4 +1,4 @@
|
|||||||
// Copyright 2005-2020 The Mumble Developers. All rights reserved.
|
// Copyright 2015-2021 The Mumble Developers. All rights reserved.
|
||||||
// Use of this source code is governed by a BSD-style license
|
// Use of this source code is governed by a BSD-style license
|
||||||
// that can be found in the LICENSE file at the root of the
|
// that can be found in the LICENSE file at the root of the
|
||||||
// Mumble source tree or at <https://www.mumble.info/LICENSE>.
|
// Mumble source tree or at <https://www.mumble.info/LICENSE>.
|
||||||
|
|||||||
@ -1,4 +1,4 @@
|
|||||||
// Copyright 2005-2020 The Mumble Developers. All rights reserved.
|
// Copyright 2005-2021 The Mumble Developers. All rights reserved.
|
||||||
// Use of this source code is governed by a BSD-style license
|
// Use of this source code is governed by a BSD-style license
|
||||||
// that can be found in the LICENSE file at the root of the
|
// that can be found in the LICENSE file at the root of the
|
||||||
// Mumble source tree or at <https://www.mumble.info/LICENSE>.
|
// Mumble source tree or at <https://www.mumble.info/LICENSE>.
|
||||||
|
|||||||
@ -1,379 +1,379 @@
|
|||||||
// Copyright 2005-2020 The Mumble Developers. All rights reserved.
|
// Copyright 2010-2021 The Mumble Developers. All rights reserved.
|
||||||
// Use of this source code is governed by a BSD-style license
|
// Use of this source code is governed by a BSD-style license
|
||||||
// that can be found in the LICENSE file at the root of the
|
// that can be found in the LICENSE file at the root of the
|
||||||
// Mumble source tree or at <https://www.mumble.info/LICENSE>.
|
// Mumble source tree or at <https://www.mumble.info/LICENSE>.
|
||||||
|
|
||||||
#include "HardHook.h"
|
#include "HardHook.h"
|
||||||
#include "ods.h"
|
#include "ods.h"
|
||||||
|
|
||||||
void *HardHook::pCode = nullptr;
|
void *HardHook::pCode = nullptr;
|
||||||
unsigned int HardHook::uiCode = 0;
|
unsigned int HardHook::uiCode = 0;
|
||||||
|
|
||||||
const int HardHook::CODEREPLACESIZE = 6;
|
const int HardHook::CODEREPLACESIZE = 6;
|
||||||
const int HardHook::CODEPROTECTSIZE = 16;
|
const int HardHook::CODEPROTECTSIZE = 16;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @brief Constructs a new hook without actually injecting.
|
* @brief Constructs a new hook without actually injecting.
|
||||||
*/
|
*/
|
||||||
HardHook::HardHook() : bTrampoline(false), call(0), baseptr(nullptr) {
|
HardHook::HardHook() : bTrampoline(false), call(0), baseptr(nullptr) {
|
||||||
for (int i = 0; i < CODEREPLACESIZE; ++i) {
|
for (int i = 0; i < CODEREPLACESIZE; ++i) {
|
||||||
orig[i] = replace[i] = 0;
|
orig[i] = replace[i] = 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
// assert(CODEREPLACESIZE == sizeof(orig) / sizeof(orig[0]));
|
// assert(CODEREPLACESIZE == sizeof(orig) / sizeof(orig[0]));
|
||||||
// assert(CODEREPLACESIZE == sizeof(replace) / sizeof(replace[0]));
|
// assert(CODEREPLACESIZE == sizeof(replace) / sizeof(replace[0]));
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @brief Constructs a new hook by injecting given replacement function into func.
|
* @brief Constructs a new hook by injecting given replacement function into func.
|
||||||
* @see HardHook::setup
|
* @see HardHook::setup
|
||||||
* @param func Funktion to inject replacement into.
|
* @param func Funktion to inject replacement into.
|
||||||
* @param replacement Function to inject into func.
|
* @param replacement Function to inject into func.
|
||||||
*/
|
*/
|
||||||
HardHook::HardHook(voidFunc func, voidFunc replacement) : bTrampoline(false), call(0), baseptr(nullptr) {
|
HardHook::HardHook(voidFunc func, voidFunc replacement) : bTrampoline(false), call(0), baseptr(nullptr) {
|
||||||
for (int i = 0; i < CODEREPLACESIZE; ++i)
|
for (int i = 0; i < CODEREPLACESIZE; ++i)
|
||||||
orig[i] = replace[i] = 0;
|
orig[i] = replace[i] = 0;
|
||||||
setup(func, replacement);
|
setup(func, replacement);
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @return Number of extra bytes.
|
* @return Number of extra bytes.
|
||||||
*/
|
*/
|
||||||
static unsigned int modrmbytes(unsigned char a, unsigned char b) {
|
static unsigned int modrmbytes(unsigned char a, unsigned char b) {
|
||||||
unsigned char lower = (a & 0x0f);
|
unsigned char lower = (a & 0x0f);
|
||||||
if (a >= 0xc0) {
|
if (a >= 0xc0) {
|
||||||
return 0;
|
return 0;
|
||||||
} else if (a >= 0x80) {
|
} else if (a >= 0x80) {
|
||||||
if ((lower == 4) || (lower == 12))
|
if ((lower == 4) || (lower == 12))
|
||||||
return 5;
|
return 5;
|
||||||
else
|
else
|
||||||
return 4;
|
return 4;
|
||||||
} else if (a >= 0x40) {
|
} else if (a >= 0x40) {
|
||||||
if ((lower == 4) || (lower == 12))
|
if ((lower == 4) || (lower == 12))
|
||||||
return 2;
|
return 2;
|
||||||
else
|
else
|
||||||
return 1;
|
return 1;
|
||||||
|
|
||||||
} else {
|
} else {
|
||||||
if ((lower == 4) || (lower == 12)) {
|
if ((lower == 4) || (lower == 12)) {
|
||||||
if ((b & 0x07) == 0x05)
|
if ((b & 0x07) == 0x05)
|
||||||
return 5;
|
return 5;
|
||||||
else
|
else
|
||||||
return 1;
|
return 1;
|
||||||
} else if ((lower == 5) || (lower == 13))
|
} else if ((lower == 5) || (lower == 13))
|
||||||
return 4;
|
return 4;
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @brief Tries to construct a trampoline from original code.
|
* @brief Tries to construct a trampoline from original code.
|
||||||
*
|
*
|
||||||
* A trampoline is the replacement code that features the original code plus
|
* A trampoline is the replacement code that features the original code plus
|
||||||
* a jump back to the original instructions that follow.
|
* a jump back to the original instructions that follow.
|
||||||
* It is called to execute the original behavior. As it is a replacement for
|
* It is called to execute the original behavior. As it is a replacement for
|
||||||
* the original, the original can then be overwritten.
|
* the original, the original can then be overwritten.
|
||||||
* The size of the trampoline is at least CODEREPLACESIZE. Thus, CODEREPLACESIZE
|
* The size of the trampoline is at least CODEREPLACESIZE. Thus, CODEREPLACESIZE
|
||||||
* bytes of the original code can afterwards be overwritten (and the trampoline
|
* bytes of the original code can afterwards be overwritten (and the trampoline
|
||||||
* called after those instructions for the original logic).
|
* called after those instructions for the original logic).
|
||||||
* CODEREPLACESIZE has to be smaller than CODEPROTECTSIZE.
|
* CODEREPLACESIZE has to be smaller than CODEPROTECTSIZE.
|
||||||
*
|
*
|
||||||
* As commands must not be destroyed they have to be disassembled to get their length.
|
* As commands must not be destroyed they have to be disassembled to get their length.
|
||||||
* All encountered commands will be part of the trampoline and stored in pCode (shared
|
* All encountered commands will be part of the trampoline and stored in pCode (shared
|
||||||
* for all trampolines).
|
* for all trampolines).
|
||||||
*
|
*
|
||||||
* If code is encountered that can not be moved into the trampoline (conditionals etc.)
|
* If code is encountered that can not be moved into the trampoline (conditionals etc.)
|
||||||
* construction fails and nullptr is returned. If enough commands can be saved the
|
* construction fails and nullptr is returned. If enough commands can be saved the
|
||||||
* trampoline is finalized by appending a jump back to the original code. The return value
|
* trampoline is finalized by appending a jump back to the original code. The return value
|
||||||
* in this case will be the address of the newly constructed trampoline.
|
* in this case will be the address of the newly constructed trampoline.
|
||||||
*
|
*
|
||||||
* pCode + offset to trampoline:
|
* pCode + offset to trampoline:
|
||||||
* [SAVED CODE FROM ORIGINAL which is >= CODEREPLACESIZE bytes][JUMP BACK TO ORIGINAL CODE]
|
* [SAVED CODE FROM ORIGINAL which is >= CODEREPLACESIZE bytes][JUMP BACK TO ORIGINAL CODE]
|
||||||
*
|
*
|
||||||
* @param porig Original code
|
* @param porig Original code
|
||||||
* @return Pointer to trampoline on success. nullptr if trampoline construction failed.
|
* @return Pointer to trampoline on success. nullptr if trampoline construction failed.
|
||||||
*/
|
*/
|
||||||
void *HardHook::cloneCode(void **porig) {
|
void *HardHook::cloneCode(void **porig) {
|
||||||
if (!pCode || uiCode > 4000) {
|
if (!pCode || uiCode > 4000) {
|
||||||
pCode = VirtualAlloc(nullptr, 4096, MEM_COMMIT | MEM_RESERVE, PAGE_EXECUTE_READWRITE);
|
pCode = VirtualAlloc(nullptr, 4096, MEM_COMMIT | MEM_RESERVE, PAGE_EXECUTE_READWRITE);
|
||||||
uiCode = 0;
|
uiCode = 0;
|
||||||
}
|
}
|
||||||
// If we have no memory to clone to, return.
|
// If we have no memory to clone to, return.
|
||||||
if (!pCode) {
|
if (!pCode) {
|
||||||
return nullptr;
|
return nullptr;
|
||||||
}
|
}
|
||||||
|
|
||||||
unsigned char *o = (unsigned char *) *porig;
|
unsigned char *o = (unsigned char *) *porig;
|
||||||
|
|
||||||
DWORD origProtect;
|
DWORD origProtect;
|
||||||
if (!VirtualProtect(o, CODEPROTECTSIZE, PAGE_EXECUTE_READ, &origProtect)) {
|
if (!VirtualProtect(o, CODEPROTECTSIZE, PAGE_EXECUTE_READ, &origProtect)) {
|
||||||
fods("HardHook: CloneCode failed; failed to make original code read and executable");
|
fods("HardHook: CloneCode failed; failed to make original code read and executable");
|
||||||
return nullptr;
|
return nullptr;
|
||||||
}
|
}
|
||||||
|
|
||||||
// Follow relative jumps to next instruction. On execution it doesn't make
|
// Follow relative jumps to next instruction. On execution it doesn't make
|
||||||
// a difference if we actually perform all the jumps or directly jump to the
|
// a difference if we actually perform all the jumps or directly jump to the
|
||||||
// end of the chain. Hence these jumps need not be part of the trampoline.
|
// end of the chain. Hence these jumps need not be part of the trampoline.
|
||||||
while (*o == 0xe9) { // JMP
|
while (*o == 0xe9) { // JMP
|
||||||
unsigned char *tmp = o;
|
unsigned char *tmp = o;
|
||||||
int *iptr = reinterpret_cast< int * >(o + 1);
|
int *iptr = reinterpret_cast< int * >(o + 1);
|
||||||
o += *iptr + 5;
|
o += *iptr + 5;
|
||||||
|
|
||||||
fods("HardHook: CloneCode: Skipping jump from %p to %p", *porig, o);
|
fods("HardHook: CloneCode: Skipping jump from %p to %p", *porig, o);
|
||||||
*porig = o;
|
*porig = o;
|
||||||
|
|
||||||
// Assume jump took us out of our read enabled zone, get rights for the new one
|
// Assume jump took us out of our read enabled zone, get rights for the new one
|
||||||
DWORD tempProtect;
|
DWORD tempProtect;
|
||||||
VirtualProtect(tmp, CODEPROTECTSIZE, origProtect, &tempProtect);
|
VirtualProtect(tmp, CODEPROTECTSIZE, origProtect, &tempProtect);
|
||||||
if (!VirtualProtect(o, CODEPROTECTSIZE, PAGE_EXECUTE_READ, &origProtect)) {
|
if (!VirtualProtect(o, CODEPROTECTSIZE, PAGE_EXECUTE_READ, &origProtect)) {
|
||||||
fods("HardHook: CloneCode failed; failed to make jump target code read and executable");
|
fods("HardHook: CloneCode failed; failed to make jump target code read and executable");
|
||||||
return nullptr;
|
return nullptr;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
unsigned char *n = (unsigned char *) pCode;
|
unsigned char *n = (unsigned char *) pCode;
|
||||||
n += uiCode;
|
n += uiCode;
|
||||||
unsigned int idx = 0;
|
unsigned int idx = 0;
|
||||||
|
|
||||||
do {
|
do {
|
||||||
unsigned char opcode = o[idx];
|
unsigned char opcode = o[idx];
|
||||||
unsigned char a = o[idx + 1];
|
unsigned char a = o[idx + 1];
|
||||||
unsigned char b = o[idx + 2];
|
unsigned char b = o[idx + 2];
|
||||||
unsigned int extra = 0;
|
unsigned int extra = 0;
|
||||||
|
|
||||||
switch (opcode) {
|
switch (opcode) {
|
||||||
case 0x50: // PUSH
|
case 0x50: // PUSH
|
||||||
case 0x51:
|
case 0x51:
|
||||||
case 0x52:
|
case 0x52:
|
||||||
case 0x53:
|
case 0x53:
|
||||||
case 0x54:
|
case 0x54:
|
||||||
case 0x55:
|
case 0x55:
|
||||||
case 0x56:
|
case 0x56:
|
||||||
case 0x57:
|
case 0x57:
|
||||||
case 0x58: // POP
|
case 0x58: // POP
|
||||||
case 0x59:
|
case 0x59:
|
||||||
case 0x5a:
|
case 0x5a:
|
||||||
case 0x5b:
|
case 0x5b:
|
||||||
case 0x5c:
|
case 0x5c:
|
||||||
case 0x5d:
|
case 0x5d:
|
||||||
case 0x5e:
|
case 0x5e:
|
||||||
case 0x5f:
|
case 0x5f:
|
||||||
break;
|
break;
|
||||||
case 0x6a: // PUSH immediate
|
case 0x6a: // PUSH immediate
|
||||||
extra = 1;
|
extra = 1;
|
||||||
break;
|
break;
|
||||||
case 0x68: // PUSH immediate
|
case 0x68: // PUSH immediate
|
||||||
extra = 4;
|
extra = 4;
|
||||||
break;
|
break;
|
||||||
case 0x81: // CMP immediate
|
case 0x81: // CMP immediate
|
||||||
extra = modrmbytes(a, b) + 5;
|
extra = modrmbytes(a, b) + 5;
|
||||||
break;
|
break;
|
||||||
case 0x83: // CMP
|
case 0x83: // CMP
|
||||||
extra = modrmbytes(a, b) + 2;
|
extra = modrmbytes(a, b) + 2;
|
||||||
break;
|
break;
|
||||||
case 0x8b: // MOV
|
case 0x8b: // MOV
|
||||||
extra = modrmbytes(a, b) + 1;
|
extra = modrmbytes(a, b) + 1;
|
||||||
break;
|
break;
|
||||||
default: {
|
default: {
|
||||||
int rmop = ((a >> 3) & 7);
|
int rmop = ((a >> 3) & 7);
|
||||||
if (opcode == 0xff && rmop == 6) { // PUSH memory
|
if (opcode == 0xff && rmop == 6) { // PUSH memory
|
||||||
extra = modrmbytes(a, b) + 1;
|
extra = modrmbytes(a, b) + 1;
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
|
|
||||||
fods("HardHook: CloneCode failed; Unknown opcode %02x at %d: %02x %02x %02x %02x %02x %02x %02x %02x "
|
fods("HardHook: CloneCode failed; Unknown opcode %02x at %d: %02x %02x %02x %02x %02x %02x %02x %02x "
|
||||||
"%02x %02x %02x %02x",
|
"%02x %02x %02x %02x",
|
||||||
opcode, idx, o[0], o[1], o[2], o[3], o[4], o[5], o[6], o[7], o[8], o[9], o[10], o[11]);
|
opcode, idx, o[0], o[1], o[2], o[3], o[4], o[5], o[6], o[7], o[8], o[9], o[10], o[11]);
|
||||||
DWORD tempProtect;
|
DWORD tempProtect;
|
||||||
VirtualProtect(o, CODEPROTECTSIZE, origProtect, &tempProtect);
|
VirtualProtect(o, CODEPROTECTSIZE, origProtect, &tempProtect);
|
||||||
return nullptr;
|
return nullptr;
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
n[idx] = opcode;
|
n[idx] = opcode;
|
||||||
++idx;
|
++idx;
|
||||||
|
|
||||||
for (unsigned int i = 0; i < extra; ++i)
|
for (unsigned int i = 0; i < extra; ++i)
|
||||||
n[idx + i] = o[idx + i];
|
n[idx + i] = o[idx + i];
|
||||||
idx += extra;
|
idx += extra;
|
||||||
|
|
||||||
} while (idx < CODEREPLACESIZE);
|
} while (idx < CODEREPLACESIZE);
|
||||||
|
|
||||||
DWORD tempProtect;
|
DWORD tempProtect;
|
||||||
VirtualProtect(o, CODEPROTECTSIZE, origProtect, &tempProtect);
|
VirtualProtect(o, CODEPROTECTSIZE, origProtect, &tempProtect);
|
||||||
|
|
||||||
// Add a relative jmp back to the original code, to after the copied code
|
// Add a relative jmp back to the original code, to after the copied code
|
||||||
n[idx++] = 0xe9;
|
n[idx++] = 0xe9;
|
||||||
int *iptr = reinterpret_cast< int * >(&n[idx]);
|
int *iptr = reinterpret_cast< int * >(&n[idx]);
|
||||||
const int JMP_OP_SIZE = 5;
|
const int JMP_OP_SIZE = 5;
|
||||||
int offs = o - n - JMP_OP_SIZE;
|
int offs = o - n - JMP_OP_SIZE;
|
||||||
*iptr = offs;
|
*iptr = offs;
|
||||||
idx += 4;
|
idx += 4;
|
||||||
|
|
||||||
uiCode += idx;
|
uiCode += idx;
|
||||||
|
|
||||||
FlushInstructionCache(GetCurrentProcess(), n, idx);
|
FlushInstructionCache(GetCurrentProcess(), n, idx);
|
||||||
|
|
||||||
fods("HardHook: trampoline creation successful at %p", n);
|
fods("HardHook: trampoline creation successful at %p", n);
|
||||||
|
|
||||||
return n;
|
return n;
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @brief Makes sure the given replacement function is run once func is called.
|
* @brief Makes sure the given replacement function is run once func is called.
|
||||||
*
|
*
|
||||||
* Tries to construct a trampoline for the given function (@see HardHook::cloneCode)
|
* Tries to construct a trampoline for the given function (@see HardHook::cloneCode)
|
||||||
* and then injects replacement function calling code into the first 6 bytes of the
|
* and then injects replacement function calling code into the first 6 bytes of the
|
||||||
* original function (@see HardHook::inject).
|
* original function (@see HardHook::inject).
|
||||||
*
|
*
|
||||||
* @param func Pointer to function to redirect.
|
* @param func Pointer to function to redirect.
|
||||||
* @param replacement Pointer to code to redirect to.
|
* @param replacement Pointer to code to redirect to.
|
||||||
*/
|
*/
|
||||||
void HardHook::setup(voidFunc func, voidFunc replacement) {
|
void HardHook::setup(voidFunc func, voidFunc replacement) {
|
||||||
if (baseptr)
|
if (baseptr)
|
||||||
return;
|
return;
|
||||||
|
|
||||||
fods("HardHook: Setup: Asked to replace %p with %p", func, replacement);
|
fods("HardHook: Setup: Asked to replace %p with %p", func, replacement);
|
||||||
|
|
||||||
unsigned char *fptr = reinterpret_cast< unsigned char * >(func);
|
unsigned char *fptr = reinterpret_cast< unsigned char * >(func);
|
||||||
unsigned char *nptr = reinterpret_cast< unsigned char * >(replacement);
|
unsigned char *nptr = reinterpret_cast< unsigned char * >(replacement);
|
||||||
|
|
||||||
call = (voidFunc) cloneCode((void **) &fptr);
|
call = (voidFunc) cloneCode((void **) &fptr);
|
||||||
|
|
||||||
if (call) {
|
if (call) {
|
||||||
bTrampoline = true;
|
bTrampoline = true;
|
||||||
} else {
|
} else {
|
||||||
// Could not create a trampoline. Use alternative method instead.
|
// Could not create a trampoline. Use alternative method instead.
|
||||||
// This alternative method is dependant on the replacement code
|
// This alternative method is dependant on the replacement code
|
||||||
// restoring before calling the original. Otherwise we get a jump recursion
|
// restoring before calling the original. Otherwise we get a jump recursion
|
||||||
bTrampoline = false;
|
bTrampoline = false;
|
||||||
call = func;
|
call = func;
|
||||||
}
|
}
|
||||||
|
|
||||||
DWORD origProtect;
|
DWORD origProtect;
|
||||||
if (VirtualProtect(fptr, CODEPROTECTSIZE, PAGE_EXECUTE_READ, &origProtect)) {
|
if (VirtualProtect(fptr, CODEPROTECTSIZE, PAGE_EXECUTE_READ, &origProtect)) {
|
||||||
replace[0] = 0x68; // PUSH immediate 1 Byte
|
replace[0] = 0x68; // PUSH immediate 1 Byte
|
||||||
unsigned char **iptr = reinterpret_cast< unsigned char ** >(&replace[1]);
|
unsigned char **iptr = reinterpret_cast< unsigned char ** >(&replace[1]);
|
||||||
*iptr = nptr; // (imm. value = nptr) 4 Byte
|
*iptr = nptr; // (imm. value = nptr) 4 Byte
|
||||||
replace[5] = 0xc3; // RETN 1 Byte
|
replace[5] = 0xc3; // RETN 1 Byte
|
||||||
|
|
||||||
// Save original 6 bytes at start of original function
|
// Save original 6 bytes at start of original function
|
||||||
for (int i = 0; i < CODEREPLACESIZE; ++i)
|
for (int i = 0; i < CODEREPLACESIZE; ++i)
|
||||||
orig[i] = fptr[i];
|
orig[i] = fptr[i];
|
||||||
|
|
||||||
baseptr = fptr;
|
baseptr = fptr;
|
||||||
|
|
||||||
inject(true);
|
inject(true);
|
||||||
|
|
||||||
DWORD tempProtect;
|
DWORD tempProtect;
|
||||||
VirtualProtect(fptr, CODEPROTECTSIZE, origProtect, &tempProtect);
|
VirtualProtect(fptr, CODEPROTECTSIZE, origProtect, &tempProtect);
|
||||||
} else {
|
} else {
|
||||||
fods("HardHook: setup failed; failed to make original code read and executable");
|
fods("HardHook: setup failed; failed to make original code read and executable");
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
void HardHook::setupInterface(IUnknown *unkn, LONG funcoffset, voidFunc replacement) {
|
void HardHook::setupInterface(IUnknown *unkn, LONG funcoffset, voidFunc replacement) {
|
||||||
fods("HardHook: setupInterface: Replacing %p function #%ld", unkn, funcoffset);
|
fods("HardHook: setupInterface: Replacing %p function #%ld", unkn, funcoffset);
|
||||||
void **ptr = reinterpret_cast< void ** >(unkn);
|
void **ptr = reinterpret_cast< void ** >(unkn);
|
||||||
ptr = reinterpret_cast< void ** >(ptr[0]);
|
ptr = reinterpret_cast< void ** >(ptr[0]);
|
||||||
setup(reinterpret_cast< voidFunc >(ptr[funcoffset]), replacement);
|
setup(reinterpret_cast< voidFunc >(ptr[funcoffset]), replacement);
|
||||||
}
|
}
|
||||||
|
|
||||||
void HardHook::reset() {
|
void HardHook::reset() {
|
||||||
baseptr = 0;
|
baseptr = 0;
|
||||||
bTrampoline = false;
|
bTrampoline = false;
|
||||||
call = nullptr;
|
call = nullptr;
|
||||||
for (int i = 0; i < CODEREPLACESIZE; ++i) {
|
for (int i = 0; i < CODEREPLACESIZE; ++i) {
|
||||||
orig[i] = replace[i] = 0;
|
orig[i] = replace[i] = 0;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @brief Injects redirection code into the target function.
|
* @brief Injects redirection code into the target function.
|
||||||
*
|
*
|
||||||
* Replaces the first 6 Bytes of the function indicated by baseptr
|
* Replaces the first 6 Bytes of the function indicated by baseptr
|
||||||
* with the replacement code previously generated (usually a jump
|
* with the replacement code previously generated (usually a jump
|
||||||
* to mumble code). If a trampoline is available this injection is not needed
|
* to mumble code). If a trampoline is available this injection is not needed
|
||||||
* as control flow was already permanently redirected by HardHook::setup .
|
* as control flow was already permanently redirected by HardHook::setup .
|
||||||
*
|
*
|
||||||
* @param force Perform injection even when trampoline is available.
|
* @param force Perform injection even when trampoline is available.
|
||||||
*/
|
*/
|
||||||
void HardHook::inject(bool force) {
|
void HardHook::inject(bool force) {
|
||||||
if (!baseptr)
|
if (!baseptr)
|
||||||
return;
|
return;
|
||||||
if (!force && bTrampoline)
|
if (!force && bTrampoline)
|
||||||
return;
|
return;
|
||||||
|
|
||||||
DWORD origProtect;
|
DWORD origProtect;
|
||||||
if (VirtualProtect(baseptr, CODEREPLACESIZE, PAGE_EXECUTE_READWRITE, &origProtect)) {
|
if (VirtualProtect(baseptr, CODEREPLACESIZE, PAGE_EXECUTE_READWRITE, &origProtect)) {
|
||||||
for (int i = 0; i < CODEREPLACESIZE; ++i) {
|
for (int i = 0; i < CODEREPLACESIZE; ++i) {
|
||||||
baseptr[i] = replace[i]; // Replace with jump to new code
|
baseptr[i] = replace[i]; // Replace with jump to new code
|
||||||
}
|
}
|
||||||
|
|
||||||
DWORD tempProtect;
|
DWORD tempProtect;
|
||||||
VirtualProtect(baseptr, CODEREPLACESIZE, origProtect, &tempProtect);
|
VirtualProtect(baseptr, CODEREPLACESIZE, origProtect, &tempProtect);
|
||||||
|
|
||||||
FlushInstructionCache(GetCurrentProcess(), baseptr, CODEREPLACESIZE);
|
FlushInstructionCache(GetCurrentProcess(), baseptr, CODEREPLACESIZE);
|
||||||
}
|
}
|
||||||
|
|
||||||
// Verify that the injection was successful
|
// Verify that the injection was successful
|
||||||
for (int i = 0; i < CODEREPLACESIZE; ++i) {
|
for (int i = 0; i < CODEREPLACESIZE; ++i) {
|
||||||
if (baseptr[i] != replace[i]) {
|
if (baseptr[i] != replace[i]) {
|
||||||
fods("HardHook: Injection failure noticed at byte %d", i);
|
fods("HardHook: Injection failure noticed at byte %d", i);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @brief Restores the original code in a target function.
|
* @brief Restores the original code in a target function.
|
||||||
*
|
*
|
||||||
* Restores the first 6 Bytes of the function indicated by baseptr
|
* Restores the first 6 Bytes of the function indicated by baseptr
|
||||||
* from previously stored original code in orig. If a trampoline is available this
|
* from previously stored original code in orig. If a trampoline is available this
|
||||||
* restoration is not needed as trampoline will correctly restore control
|
* restoration is not needed as trampoline will correctly restore control
|
||||||
* flow.
|
* flow.
|
||||||
*
|
*
|
||||||
* @param force If true injection will be reverted even when trampoline is available.
|
* @param force If true injection will be reverted even when trampoline is available.
|
||||||
*/
|
*/
|
||||||
void HardHook::restore(bool force) {
|
void HardHook::restore(bool force) {
|
||||||
if (!baseptr)
|
if (!baseptr)
|
||||||
return;
|
return;
|
||||||
if (!force && bTrampoline)
|
if (!force && bTrampoline)
|
||||||
return;
|
return;
|
||||||
|
|
||||||
DWORD origProtect;
|
DWORD origProtect;
|
||||||
if (VirtualProtect(baseptr, CODEREPLACESIZE, PAGE_EXECUTE_READWRITE, &origProtect)) {
|
if (VirtualProtect(baseptr, CODEREPLACESIZE, PAGE_EXECUTE_READWRITE, &origProtect)) {
|
||||||
for (int i = 0; i < CODEREPLACESIZE; ++i)
|
for (int i = 0; i < CODEREPLACESIZE; ++i)
|
||||||
baseptr[i] = orig[i];
|
baseptr[i] = orig[i];
|
||||||
DWORD tempProtect;
|
DWORD tempProtect;
|
||||||
VirtualProtect(baseptr, CODEREPLACESIZE, origProtect, &tempProtect);
|
VirtualProtect(baseptr, CODEREPLACESIZE, origProtect, &tempProtect);
|
||||||
|
|
||||||
FlushInstructionCache(GetCurrentProcess(), baseptr, CODEREPLACESIZE);
|
FlushInstructionCache(GetCurrentProcess(), baseptr, CODEREPLACESIZE);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
void HardHook::print() {
|
void HardHook::print() {
|
||||||
fods("HardHook: code replacement: %02x %02x %02x %02x %02x => %02x %02x %02x %02x %02x (currently effective: %02x "
|
fods("HardHook: code replacement: %02x %02x %02x %02x %02x => %02x %02x %02x %02x %02x (currently effective: %02x "
|
||||||
"%02x %02x %02x %02x)",
|
"%02x %02x %02x %02x)",
|
||||||
orig[0], orig[1], orig[2], orig[3], orig[4], replace[0], replace[1], replace[2], replace[3], replace[4],
|
orig[0], orig[1], orig[2], orig[3], orig[4], replace[0], replace[1], replace[2], replace[3], replace[4],
|
||||||
baseptr[0], baseptr[1], baseptr[2], baseptr[3], baseptr[4]);
|
baseptr[0], baseptr[1], baseptr[2], baseptr[3], baseptr[4]);
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @brief Checks whether injected code is in good shape and injects if not yet injected.
|
* @brief Checks whether injected code is in good shape and injects if not yet injected.
|
||||||
*
|
*
|
||||||
* If injected code is not found injection is attempted unless 3rd party overwrote
|
* If injected code is not found injection is attempted unless 3rd party overwrote
|
||||||
* original code at injection location.
|
* original code at injection location.
|
||||||
*/
|
*/
|
||||||
void HardHook::check() {
|
void HardHook::check() {
|
||||||
if (memcmp(baseptr, replace, CODEREPLACESIZE) != 0) {
|
if (memcmp(baseptr, replace, CODEREPLACESIZE) != 0) {
|
||||||
// The instructions do not match our replacement instructions
|
// The instructions do not match our replacement instructions
|
||||||
// If they match the original code, inject our hook.
|
// If they match the original code, inject our hook.
|
||||||
if (memcmp(baseptr, orig, CODEREPLACESIZE) == 0) {
|
if (memcmp(baseptr, orig, CODEREPLACESIZE) == 0) {
|
||||||
fods("HardHook: Reinjecting hook into function %p", baseptr);
|
fods("HardHook: Reinjecting hook into function %p", baseptr);
|
||||||
inject(true);
|
inject(true);
|
||||||
} else {
|
} else {
|
||||||
fods("HardHook: Function %p replaced by third party. Lost injected hook.");
|
fods("HardHook: Function %p replaced by third party. Lost injected hook.");
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@ -1,60 +1,60 @@
|
|||||||
// Copyright 2005-2020 The Mumble Developers. All rights reserved.
|
// Copyright 2005-2021 The Mumble Developers. All rights reserved.
|
||||||
// Use of this source code is governed by a BSD-style license
|
// Use of this source code is governed by a BSD-style license
|
||||||
// that can be found in the LICENSE file at the root of the
|
// that can be found in the LICENSE file at the root of the
|
||||||
// Mumble source tree or at <https://www.mumble.info/LICENSE>.
|
// Mumble source tree or at <https://www.mumble.info/LICENSE>.
|
||||||
|
|
||||||
#ifndef MUMBLE_HARDHOOK_X86_H_
|
#ifndef MUMBLE_HARDHOOK_X86_H_
|
||||||
#define MUMBLE_HARDHOOK_X86_H_
|
#define MUMBLE_HARDHOOK_X86_H_
|
||||||
|
|
||||||
#define _UNICODE
|
#define _UNICODE
|
||||||
#ifndef _WIN32_WINNT
|
#ifndef _WIN32_WINNT
|
||||||
# define _WIN32_WINNT 0x0501
|
# define _WIN32_WINNT 0x0501
|
||||||
#endif
|
#endif
|
||||||
#include <windows.h>
|
#include <windows.h>
|
||||||
#include <cmath>
|
#include <cmath>
|
||||||
#include <ctype.h>
|
#include <ctype.h>
|
||||||
#include <map>
|
#include <map>
|
||||||
#include <stdarg.h>
|
#include <stdarg.h>
|
||||||
#include <stdio.h>
|
#include <stdio.h>
|
||||||
#include <string>
|
#include <string>
|
||||||
#include <unknwn.h>
|
#include <unknwn.h>
|
||||||
#include <vector>
|
#include <vector>
|
||||||
|
|
||||||
typedef void *(*voidFunc)();
|
typedef void *(*voidFunc)();
|
||||||
|
|
||||||
struct HardHook {
|
struct HardHook {
|
||||||
// Pointer to executable code page that holds all trampoline codes
|
// Pointer to executable code page that holds all trampoline codes
|
||||||
static void *pCode;
|
static void *pCode;
|
||||||
// Number of bytes used in pCode.
|
// Number of bytes used in pCode.
|
||||||
static unsigned int uiCode;
|
static unsigned int uiCode;
|
||||||
|
|
||||||
// Pointer to original code (which is hooked/replaced)
|
// Pointer to original code (which is hooked/replaced)
|
||||||
unsigned char *baseptr;
|
unsigned char *baseptr;
|
||||||
// The original instructions that are replaced by the hook
|
// The original instructions that are replaced by the hook
|
||||||
unsigned char orig[6];
|
unsigned char orig[6];
|
||||||
// Hook-Code; Replacement instructions for function call jump
|
// Hook-Code; Replacement instructions for function call jump
|
||||||
unsigned char replace[6];
|
unsigned char replace[6];
|
||||||
// Remembers whether there is a trampoline in place in the target code or
|
// Remembers whether there is a trampoline in place in the target code or
|
||||||
// whether restore -> call orig. -> replace has to be used for every intercepted call
|
// whether restore -> call orig. -> replace has to be used for every intercepted call
|
||||||
bool bTrampoline;
|
bool bTrampoline;
|
||||||
// Points to the (rest of the) original function when used from the injected function
|
// Points to the (rest of the) original function when used from the injected function
|
||||||
voidFunc call;
|
voidFunc call;
|
||||||
|
|
||||||
HardHook();
|
HardHook();
|
||||||
HardHook(voidFunc func, voidFunc replacement);
|
HardHook(voidFunc func, voidFunc replacement);
|
||||||
void setup(voidFunc func, voidFunc replacement);
|
void setup(voidFunc func, voidFunc replacement);
|
||||||
void setupInterface(IUnknown *intf, LONG funcoffset, voidFunc replacement);
|
void setupInterface(IUnknown *intf, LONG funcoffset, voidFunc replacement);
|
||||||
void reset();
|
void reset();
|
||||||
void inject(bool force = false);
|
void inject(bool force = false);
|
||||||
void restore(bool force = false);
|
void restore(bool force = false);
|
||||||
void print();
|
void print();
|
||||||
void check();
|
void check();
|
||||||
|
|
||||||
private:
|
private:
|
||||||
static const int CODEREPLACESIZE;
|
static const int CODEREPLACESIZE;
|
||||||
static const int CODEPROTECTSIZE;
|
static const int CODEPROTECTSIZE;
|
||||||
|
|
||||||
void *cloneCode(void **orig);
|
void *cloneCode(void **orig);
|
||||||
};
|
};
|
||||||
|
|
||||||
#endif
|
#endif
|
||||||
|
|||||||
@ -1,4 +1,4 @@
|
|||||||
// Copyright 2005-2020 The Mumble Developers. All rights reserved.
|
// Copyright 2017-2021 The Mumble Developers. All rights reserved.
|
||||||
// Use of this source code is governed by a BSD-style license
|
// Use of this source code is governed by a BSD-style license
|
||||||
// that can be found in the LICENSE file at the root of the
|
// that can be found in the LICENSE file at the root of the
|
||||||
// Mumble source tree or at <https://www.mumble.info/LICENSE>.
|
// Mumble source tree or at <https://www.mumble.info/LICENSE>.
|
||||||
|
|||||||
@ -1,4 +1,4 @@
|
|||||||
// Copyright 2005-2020 The Mumble Developers. All rights reserved.
|
// Copyright 2017-2021 The Mumble Developers. All rights reserved.
|
||||||
// Use of this source code is governed by a BSD-style license
|
// Use of this source code is governed by a BSD-style license
|
||||||
// that can be found in the LICENSE file at the root of the
|
// that can be found in the LICENSE file at the root of the
|
||||||
// Mumble source tree or at <https://www.mumble.info/LICENSE>.
|
// Mumble source tree or at <https://www.mumble.info/LICENSE>.
|
||||||
|
|||||||
@ -1,4 +1,4 @@
|
|||||||
// Copyright 2005-2020 The Mumble Developers. All rights reserved.
|
// Copyright 2009-2021 The Mumble Developers. All rights reserved.
|
||||||
// Use of this source code is governed by a BSD-style license
|
// Use of this source code is governed by a BSD-style license
|
||||||
// that can be found in the LICENSE file at the root of the
|
// that can be found in the LICENSE file at the root of the
|
||||||
// Mumble source tree or at <https://www.mumble.info/LICENSE>.
|
// Mumble source tree or at <https://www.mumble.info/LICENSE>.
|
||||||
|
|||||||
@ -1,4 +1,4 @@
|
|||||||
// Copyright 2005-2020 The Mumble Developers. All rights reserved.
|
// Copyright 2014-2021 The Mumble Developers. All rights reserved.
|
||||||
// Use of this source code is governed by a BSD-style license
|
// Use of this source code is governed by a BSD-style license
|
||||||
// that can be found in the LICENSE file at the root of the
|
// that can be found in the LICENSE file at the root of the
|
||||||
// Mumble source tree or at <https://www.mumble.info/LICENSE>.
|
// Mumble source tree or at <https://www.mumble.info/LICENSE>.
|
||||||
|
|||||||
@ -1,4 +1,4 @@
|
|||||||
// Copyright 2005-2020 The Mumble Developers. All rights reserved.
|
// Copyright 2005-2021 The Mumble Developers. All rights reserved.
|
||||||
// Use of this source code is governed by a BSD-style license
|
// Use of this source code is governed by a BSD-style license
|
||||||
// that can be found in the LICENSE file at the root of the
|
// that can be found in the LICENSE file at the root of the
|
||||||
// Mumble source tree or at <https://www.mumble.info/LICENSE>.
|
// Mumble source tree or at <https://www.mumble.info/LICENSE>.
|
||||||
|
|||||||
@ -1,4 +1,4 @@
|
|||||||
// Copyright 2005-2020 The Mumble Developers. All rights reserved.
|
// Copyright 2013-2021 The Mumble Developers. All rights reserved.
|
||||||
// Use of this source code is governed by a BSD-style license
|
// Use of this source code is governed by a BSD-style license
|
||||||
// that can be found in the LICENSE file at the root of the
|
// that can be found in the LICENSE file at the root of the
|
||||||
// Mumble source tree or at <https://www.mumble.info/LICENSE>.
|
// Mumble source tree or at <https://www.mumble.info/LICENSE>.
|
||||||
|
|||||||
@ -1,4 +1,4 @@
|
|||||||
// Copyright 2005-2020 The Mumble Developers. All rights reserved.
|
// Copyright 2017-2021 The Mumble Developers. All rights reserved.
|
||||||
// Use of this source code is governed by a BSD-style license
|
// Use of this source code is governed by a BSD-style license
|
||||||
// that can be found in the LICENSE file at the root of the
|
// that can be found in the LICENSE file at the root of the
|
||||||
// Mumble source tree or at <https://www.mumble.info/LICENSE>.
|
// Mumble source tree or at <https://www.mumble.info/LICENSE>.
|
||||||
|
|||||||
@ -1,4 +1,4 @@
|
|||||||
// Copyright 2005-2020 The Mumble Developers. All rights reserved.
|
// Copyright 2005-2021 The Mumble Developers. All rights reserved.
|
||||||
// Use of this source code is governed by a BSD-style license
|
// Use of this source code is governed by a BSD-style license
|
||||||
// that can be found in the LICENSE file at the root of the
|
// that can be found in the LICENSE file at the root of the
|
||||||
// Mumble source tree or at <https://www.mumble.info/LICENSE>.
|
// Mumble source tree or at <https://www.mumble.info/LICENSE>.
|
||||||
|
|||||||
@ -1,4 +1,4 @@
|
|||||||
// Copyright 2005-2020 The Mumble Developers. All rights reserved.
|
// Copyright 2005-2021 The Mumble Developers. All rights reserved.
|
||||||
// Use of this source code is governed by a BSD-style license
|
// Use of this source code is governed by a BSD-style license
|
||||||
// that can be found in the LICENSE file at the root of the
|
// that can be found in the LICENSE file at the root of the
|
||||||
// Mumble source tree or at <https://www.mumble.info/LICENSE>.
|
// Mumble source tree or at <https://www.mumble.info/LICENSE>.
|
||||||
|
|||||||
@ -1,4 +1,4 @@
|
|||||||
// Copyright 2005-2020 The Mumble Developers. All rights reserved.
|
// Copyright 2005-2021 The Mumble Developers. All rights reserved.
|
||||||
// Use of this source code is governed by a BSD-style license
|
// Use of this source code is governed by a BSD-style license
|
||||||
// that can be found in the LICENSE file at the root of the
|
// that can be found in the LICENSE file at the root of the
|
||||||
// Mumble source tree or at <https://www.mumble.info/LICENSE>.
|
// Mumble source tree or at <https://www.mumble.info/LICENSE>.
|
||||||
|
|||||||
@ -1,4 +1,4 @@
|
|||||||
// Copyright 2005-2020 The Mumble Developers. All rights reserved.
|
// Copyright 2005-2021 The Mumble Developers. All rights reserved.
|
||||||
// Use of this source code is governed by a BSD-style license
|
// Use of this source code is governed by a BSD-style license
|
||||||
// that can be found in the LICENSE file at the root of the
|
// that can be found in the LICENSE file at the root of the
|
||||||
// Mumble source tree or at <https://www.mumble.info/LICENSE>.
|
// Mumble source tree or at <https://www.mumble.info/LICENSE>.
|
||||||
|
|||||||
@ -1,4 +1,4 @@
|
|||||||
// Copyright 2005-2020 The Mumble Developers. All rights reserved.
|
// Copyright 2005-2021 The Mumble Developers. All rights reserved.
|
||||||
// Use of this source code is governed by a BSD-style license
|
// Use of this source code is governed by a BSD-style license
|
||||||
// that can be found in the LICENSE file at the root of the
|
// that can be found in the LICENSE file at the root of the
|
||||||
// Mumble source tree or at <https://www.mumble.info/LICENSE>.
|
// Mumble source tree or at <https://www.mumble.info/LICENSE>.
|
||||||
|
|||||||
@ -1,4 +1,4 @@
|
|||||||
// Copyright 2005-2020 The Mumble Developers. All rights reserved.
|
// Copyright 2017-2021 The Mumble Developers. All rights reserved.
|
||||||
// Use of this source code is governed by a BSD-style license
|
// Use of this source code is governed by a BSD-style license
|
||||||
// that can be found in the LICENSE file at the root of the
|
// that can be found in the LICENSE file at the root of the
|
||||||
// Mumble source tree or at <https://www.mumble.info/LICENSE>.
|
// Mumble source tree or at <https://www.mumble.info/LICENSE>.
|
||||||
|
|||||||
@ -1,4 +1,4 @@
|
|||||||
// Copyright 2005-2020 The Mumble Developers. All rights reserved.
|
// Copyright 2017-2021 The Mumble Developers. All rights reserved.
|
||||||
// Use of this source code is governed by a BSD-style license
|
// Use of this source code is governed by a BSD-style license
|
||||||
// that can be found in the LICENSE file at the root of the
|
// that can be found in the LICENSE file at the root of the
|
||||||
// Mumble source tree or at <https://www.mumble.info/LICENSE>.
|
// Mumble source tree or at <https://www.mumble.info/LICENSE>.
|
||||||
|
|||||||
@ -1,4 +1,4 @@
|
|||||||
// Copyright 2005-2020 The Mumble Developers. All rights reserved.
|
// Copyright 2007-2021 The Mumble Developers. All rights reserved.
|
||||||
// Use of this source code is governed by a BSD-style license
|
// Use of this source code is governed by a BSD-style license
|
||||||
// that can be found in the LICENSE file at the root of the
|
// that can be found in the LICENSE file at the root of the
|
||||||
// Mumble source tree or at <https://www.mumble.info/LICENSE>.
|
// Mumble source tree or at <https://www.mumble.info/LICENSE>.
|
||||||
|
|||||||
@ -1,4 +1,4 @@
|
|||||||
// Copyright 2005-2020 The Mumble Developers. All rights reserved.
|
// Copyright 2009-2021 The Mumble Developers. All rights reserved.
|
||||||
// Use of this source code is governed by a BSD-style license
|
// Use of this source code is governed by a BSD-style license
|
||||||
// that can be found in the LICENSE file at the root of the
|
// that can be found in the LICENSE file at the root of the
|
||||||
// Mumble source tree or at <https://www.mumble.info/LICENSE>.
|
// Mumble source tree or at <https://www.mumble.info/LICENSE>.
|
||||||
|
|||||||
@ -1,4 +1,4 @@
|
|||||||
// Copyright 2005-2020 The Mumble Developers. All rights reserved.
|
// Copyright 2005-2021 The Mumble Developers. All rights reserved.
|
||||||
// Use of this source code is governed by a BSD-style license
|
// Use of this source code is governed by a BSD-style license
|
||||||
// that can be found in the LICENSE file at the root of the
|
// that can be found in the LICENSE file at the root of the
|
||||||
// Mumble source tree or at <https://www.mumble.info/LICENSE>.
|
// Mumble source tree or at <https://www.mumble.info/LICENSE>.
|
||||||
|
|||||||
@ -1,54 +1,54 @@
|
|||||||
// Copyright 2005-2020 The Mumble Developers. All rights reserved.
|
// Copyright 2005-2021 The Mumble Developers. All rights reserved.
|
||||||
// Use of this source code is governed by a BSD-style license
|
// Use of this source code is governed by a BSD-style license
|
||||||
// that can be found in the LICENSE file at the root of the
|
// that can be found in the LICENSE file at the root of the
|
||||||
// Mumble source tree or at <https://www.mumble.info/LICENSE>.
|
// Mumble source tree or at <https://www.mumble.info/LICENSE>.
|
||||||
|
|
||||||
/* Copyright (C) 2011-2013, Nye Liu <nyet@nyet.org>
|
/* Copyright (C) 2011-2013, Nye Liu <nyet@nyet.org>
|
||||||
|
|
||||||
All rights reserved.
|
All rights reserved.
|
||||||
|
|
||||||
Redistribution and use in source and binary forms, with or without
|
Redistribution and use in source and binary forms, with or without
|
||||||
modification, are permitted provided that the following conditions
|
modification, are permitted provided that the following conditions
|
||||||
are met:
|
are met:
|
||||||
|
|
||||||
- Redistributions of source code must retain the above copyright notice,
|
- Redistributions of source code must retain the above copyright notice,
|
||||||
this list of conditions and the following disclaimer.
|
this list of conditions and the following disclaimer.
|
||||||
- Redistributions in binary form must reproduce the above copyright notice,
|
- Redistributions in binary form must reproduce the above copyright notice,
|
||||||
this list of conditions and the following disclaimer in the documentation
|
this list of conditions and the following disclaimer in the documentation
|
||||||
and/or other materials provided with the distribution.
|
and/or other materials provided with the distribution.
|
||||||
- Neither the name of the Mumble Developers nor the names of its
|
- Neither the name of the Mumble Developers nor the names of its
|
||||||
contributors may be used to endorse or promote products derived from this
|
contributors may be used to endorse or promote products derived from this
|
||||||
software without specific prior written permission.
|
software without specific prior written permission.
|
||||||
|
|
||||||
THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
|
THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
|
||||||
``AS IS'' AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
|
``AS IS'' AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
|
||||||
LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
|
LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
|
||||||
A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE FOUNDATION OR
|
A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE FOUNDATION OR
|
||||||
CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
|
CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
|
||||||
EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
|
EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
|
||||||
PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR
|
PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR
|
||||||
PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF
|
PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF
|
||||||
LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
|
LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
|
||||||
NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
|
NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
|
||||||
SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
|
SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
|
||||||
*/
|
*/
|
||||||
|
|
||||||
Texture2D txDiffuse;
|
Texture2D txDiffuse;
|
||||||
SamplerState samLinear
|
SamplerState samLinear
|
||||||
{
|
{
|
||||||
Filter = MIN_MAG_MIP_LINEAR;
|
Filter = MIN_MAG_MIP_LINEAR;
|
||||||
AddressU = Wrap;
|
AddressU = Wrap;
|
||||||
AddressV = Wrap;
|
AddressV = Wrap;
|
||||||
};
|
};
|
||||||
|
|
||||||
struct VS_INPUT
|
struct VS_INPUT
|
||||||
{
|
{
|
||||||
float4 Pos : POSITION;
|
float4 Pos : POSITION;
|
||||||
float2 Tex : TEXCOORD;
|
float2 Tex : TEXCOORD;
|
||||||
};
|
};
|
||||||
|
|
||||||
struct PS_INPUT
|
struct PS_INPUT
|
||||||
{
|
{
|
||||||
float4 Pos : SV_POSITION;
|
float4 Pos : SV_POSITION;
|
||||||
float2 Tex : TEXCOORD0;
|
float2 Tex : TEXCOORD0;
|
||||||
};
|
};
|
||||||
|
|||||||
@ -1,41 +1,41 @@
|
|||||||
// Copyright 2005-2020 The Mumble Developers. All rights reserved.
|
// Copyright 2010-2021 The Mumble Developers. All rights reserved.
|
||||||
// Use of this source code is governed by a BSD-style license
|
// Use of this source code is governed by a BSD-style license
|
||||||
// that can be found in the LICENSE file at the root of the
|
// that can be found in the LICENSE file at the root of the
|
||||||
// Mumble source tree or at <https://www.mumble.info/LICENSE>.
|
// Mumble source tree or at <https://www.mumble.info/LICENSE>.
|
||||||
|
|
||||||
/* Copyright (C) 2011-2013, Nye Liu <nyet@nyet.org>
|
/* Copyright (C) 2011-2013, Nye Liu <nyet@nyet.org>
|
||||||
|
|
||||||
All rights reserved.
|
All rights reserved.
|
||||||
|
|
||||||
Redistribution and use in source and binary forms, with or without
|
Redistribution and use in source and binary forms, with or without
|
||||||
modification, are permitted provided that the following conditions
|
modification, are permitted provided that the following conditions
|
||||||
are met:
|
are met:
|
||||||
|
|
||||||
- Redistributions of source code must retain the above copyright notice,
|
- Redistributions of source code must retain the above copyright notice,
|
||||||
this list of conditions and the following disclaimer.
|
this list of conditions and the following disclaimer.
|
||||||
- Redistributions in binary form must reproduce the above copyright notice,
|
- Redistributions in binary form must reproduce the above copyright notice,
|
||||||
this list of conditions and the following disclaimer in the documentation
|
this list of conditions and the following disclaimer in the documentation
|
||||||
and/or other materials provided with the distribution.
|
and/or other materials provided with the distribution.
|
||||||
- Neither the name of the Mumble Developers nor the names of its
|
- Neither the name of the Mumble Developers nor the names of its
|
||||||
contributors may be used to endorse or promote products derived from this
|
contributors may be used to endorse or promote products derived from this
|
||||||
software without specific prior written permission.
|
software without specific prior written permission.
|
||||||
|
|
||||||
THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
|
THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
|
||||||
``AS IS'' AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
|
``AS IS'' AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
|
||||||
LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
|
LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
|
||||||
A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE FOUNDATION OR
|
A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE FOUNDATION OR
|
||||||
CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
|
CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
|
||||||
EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
|
EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
|
||||||
PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR
|
PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR
|
||||||
PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF
|
PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF
|
||||||
LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
|
LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
|
||||||
NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
|
NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
|
||||||
SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
|
SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
|
||||||
*/
|
*/
|
||||||
|
|
||||||
#include "overlay11-common.hlsl"
|
#include "overlay11-common.hlsl"
|
||||||
|
|
||||||
float4 main( PS_INPUT input ) : SV_Target
|
float4 main( PS_INPUT input ) : SV_Target
|
||||||
{
|
{
|
||||||
return txDiffuse.Sample(samLinear, input.Tex).bgra;
|
return txDiffuse.Sample(samLinear, input.Tex).bgra;
|
||||||
}
|
}
|
||||||
@ -1,44 +1,44 @@
|
|||||||
// Copyright 2005-2020 The Mumble Developers. All rights reserved.
|
// Copyright 2005-2021 The Mumble Developers. All rights reserved.
|
||||||
// Use of this source code is governed by a BSD-style license
|
// Use of this source code is governed by a BSD-style license
|
||||||
// that can be found in the LICENSE file at the root of the
|
// that can be found in the LICENSE file at the root of the
|
||||||
// Mumble source tree or at <https://www.mumble.info/LICENSE>.
|
// Mumble source tree or at <https://www.mumble.info/LICENSE>.
|
||||||
|
|
||||||
/* Copyright (C) 2011-2013, Nye Liu <nyet@nyet.org>
|
/* Copyright (C) 2011-2013, Nye Liu <nyet@nyet.org>
|
||||||
|
|
||||||
All rights reserved.
|
All rights reserved.
|
||||||
|
|
||||||
Redistribution and use in source and binary forms, with or without
|
Redistribution and use in source and binary forms, with or without
|
||||||
modification, are permitted provided that the following conditions
|
modification, are permitted provided that the following conditions
|
||||||
are met:
|
are met:
|
||||||
|
|
||||||
- Redistributions of source code must retain the above copyright notice,
|
- Redistributions of source code must retain the above copyright notice,
|
||||||
this list of conditions and the following disclaimer.
|
this list of conditions and the following disclaimer.
|
||||||
- Redistributions in binary form must reproduce the above copyright notice,
|
- Redistributions in binary form must reproduce the above copyright notice,
|
||||||
this list of conditions and the following disclaimer in the documentation
|
this list of conditions and the following disclaimer in the documentation
|
||||||
and/or other materials provided with the distribution.
|
and/or other materials provided with the distribution.
|
||||||
- Neither the name of the Mumble Developers nor the names of its
|
- Neither the name of the Mumble Developers nor the names of its
|
||||||
contributors may be used to endorse or promote products derived from this
|
contributors may be used to endorse or promote products derived from this
|
||||||
software without specific prior written permission.
|
software without specific prior written permission.
|
||||||
|
|
||||||
THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
|
THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
|
||||||
``AS IS'' AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
|
``AS IS'' AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
|
||||||
LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
|
LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
|
||||||
A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE FOUNDATION OR
|
A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE FOUNDATION OR
|
||||||
CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
|
CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
|
||||||
EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
|
EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
|
||||||
PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR
|
PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR
|
||||||
PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF
|
PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF
|
||||||
LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
|
LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
|
||||||
NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
|
NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
|
||||||
SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
|
SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
|
||||||
*/
|
*/
|
||||||
|
|
||||||
#include "overlay11-common.hlsl"
|
#include "overlay11-common.hlsl"
|
||||||
|
|
||||||
PS_INPUT main( VS_INPUT input )
|
PS_INPUT main( VS_INPUT input )
|
||||||
{
|
{
|
||||||
PS_INPUT output = (PS_INPUT)0;
|
PS_INPUT output = (PS_INPUT)0;
|
||||||
output.Pos = input.Pos;
|
output.Pos = input.Pos;
|
||||||
output.Tex = input.Tex;
|
output.Tex = input.Tex;
|
||||||
return output;
|
return output;
|
||||||
}
|
}
|
||||||
|
|||||||
@ -1,4 +1,4 @@
|
|||||||
// Copyright 2005-2020 The Mumble Developers. All rights reserved.
|
// Copyright 2005-2021 The Mumble Developers. All rights reserved.
|
||||||
// Use of this source code is governed by a BSD-style license
|
// Use of this source code is governed by a BSD-style license
|
||||||
// that can be found in the LICENSE file at the root of the
|
// that can be found in the LICENSE file at the root of the
|
||||||
// Mumble source tree or at <https://www.mumble.info/LICENSE>.
|
// Mumble source tree or at <https://www.mumble.info/LICENSE>.
|
||||||
|
|||||||
@ -1,4 +1,4 @@
|
|||||||
// Copyright 2005-2020 The Mumble Developers. All rights reserved.
|
// Copyright 2015-2021 The Mumble Developers. All rights reserved.
|
||||||
// Use of this source code is governed by a BSD-style license
|
// Use of this source code is governed by a BSD-style license
|
||||||
// that can be found in the LICENSE file at the root of the
|
// that can be found in the LICENSE file at the root of the
|
||||||
// Mumble source tree or at <https://www.mumble.info/LICENSE>.
|
// Mumble source tree or at <https://www.mumble.info/LICENSE>.
|
||||||
|
|||||||
@ -1,89 +1,89 @@
|
|||||||
// Copyright 2005-2020 The Mumble Developers. All rights reserved.
|
// Copyright 2015-2021 The Mumble Developers. All rights reserved.
|
||||||
// Use of this source code is governed by a BSD-style license
|
// Use of this source code is governed by a BSD-style license
|
||||||
// that can be found in the LICENSE file at the root of the
|
// that can be found in the LICENSE file at the root of the
|
||||||
// Mumble source tree or at <https://www.mumble.info/LICENSE>.
|
// Mumble source tree or at <https://www.mumble.info/LICENSE>.
|
||||||
|
|
||||||
#ifndef MUMBLE_OVERLAY_EXE_H_
|
#ifndef MUMBLE_OVERLAY_EXE_H_
|
||||||
#define MUMBLE_OVERLAY_EXE_H_
|
#define MUMBLE_OVERLAY_EXE_H_
|
||||||
|
|
||||||
#if defined(_M_IX86)
|
#if defined(_M_IX86)
|
||||||
const wchar_t *MUMBLE_OVERLAY_DLL_NAME = L"mumble_ol.dll";
|
const wchar_t *MUMBLE_OVERLAY_DLL_NAME = L"mumble_ol.dll";
|
||||||
#elif defined(_M_X64)
|
#elif defined(_M_X64)
|
||||||
const wchar_t *MUMBLE_OVERLAY_DLL_NAME = L"mumble_ol_x64.dll";
|
const wchar_t *MUMBLE_OVERLAY_DLL_NAME = L"mumble_ol_x64.dll";
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
/// OverlayHelperError represents exit codes returned by the
|
/// OverlayHelperError represents exit codes returned by the
|
||||||
/// overlay helper process (mumble_ol_helper.exe) on Windows.
|
/// overlay helper process (mumble_ol_helper.exe) on Windows.
|
||||||
enum OverlayHelperError {
|
enum OverlayHelperError {
|
||||||
/// The overlay helper process was not passed any
|
/// The overlay helper process was not passed any
|
||||||
/// arguments.
|
/// arguments.
|
||||||
OVERLAY_HELPER_ERROR_EXE_NO_ARGUMENTS = 0x0F000001,
|
OVERLAY_HELPER_ERROR_EXE_NO_ARGUMENTS = 0x0F000001,
|
||||||
/// The magic number on the command line of the overlay
|
/// The magic number on the command line of the overlay
|
||||||
/// helper process could not be converted to an integer.
|
/// helper process could not be converted to an integer.
|
||||||
OVERLAY_HELPER_ERROR_EXE_INVALID_MAGIC_ARGUMENT = 0x0F000002,
|
OVERLAY_HELPER_ERROR_EXE_INVALID_MAGIC_ARGUMENT = 0x0F000002,
|
||||||
/// The magic number on the command line of the overlay
|
/// The magic number on the command line of the overlay
|
||||||
/// helper did not match the built-in magic number of
|
/// helper did not match the built-in magic number of
|
||||||
/// the helper process.
|
/// the helper process.
|
||||||
OVERLAY_HELPER_ERROR_EXE_MAGIC_MISMATCH = 0x0F000003,
|
OVERLAY_HELPER_ERROR_EXE_MAGIC_MISMATCH = 0x0F000003,
|
||||||
/// The overlay helper process was unable to configure
|
/// The overlay helper process was unable to configure
|
||||||
/// its environment in preparation of loading the
|
/// its environment in preparation of loading the
|
||||||
/// overlay DLL.
|
/// overlay DLL.
|
||||||
OVERLAY_HELPER_ERROR_EXE_CONFIGURE_ENVIRONMENT = 0x0F000004,
|
OVERLAY_HELPER_ERROR_EXE_CONFIGURE_ENVIRONMENT = 0x0F000004,
|
||||||
/// The overlay helper process was unable to get the
|
/// The overlay helper process was unable to get the
|
||||||
/// path to the overlay DLL.
|
/// path to the overlay DLL.
|
||||||
OVERLAY_HELPER_ERROR_EXE_GET_DLL_PATH = 0x0F000005,
|
OVERLAY_HELPER_ERROR_EXE_GET_DLL_PATH = 0x0F000005,
|
||||||
/// The overlay helper process was unable to load the
|
/// The overlay helper process was unable to load the
|
||||||
/// overlay DLL.
|
/// overlay DLL.
|
||||||
OVERLAY_HELPER_ERROR_EXE_LOAD_DLL = 0x0F000006,
|
OVERLAY_HELPER_ERROR_EXE_LOAD_DLL = 0x0F000006,
|
||||||
/// The overlay helper process was uanble to look up
|
/// The overlay helper process was uanble to look up
|
||||||
/// the 'OverlayHelperProcessMain' entry point in the
|
/// the 'OverlayHelperProcessMain' entry point in the
|
||||||
/// overlay DLL.
|
/// overlay DLL.
|
||||||
OVERLAY_HELPER_ERROR_EXE_LOOKUP_ENTRY_POINT = 0x0F000007,
|
OVERLAY_HELPER_ERROR_EXE_LOOKUP_ENTRY_POINT = 0x0F000007,
|
||||||
/// The overlay helper process was uanble to parse
|
/// The overlay helper process was uanble to parse
|
||||||
/// the commandline arguments it was passed.
|
/// the commandline arguments it was passed.
|
||||||
/// The helper process exepcts two arguments, and this
|
/// The helper process exepcts two arguments, and this
|
||||||
/// error occurs if it only finds one.
|
/// error occurs if it only finds one.
|
||||||
OVERLAY_HELPER_ERROR_TOO_FEW_ARGUMENTS = 0x0F000008,
|
OVERLAY_HELPER_ERROR_TOO_FEW_ARGUMENTS = 0x0F000008,
|
||||||
/// The magic number on the command line of the overlay
|
/// The magic number on the command line of the overlay
|
||||||
/// helper process could not be converted to a HANDLE.
|
/// helper process could not be converted to a HANDLE.
|
||||||
OVERLAY_HELPER_ERROR_EXE_INVALID_HANDLE_ARGUMENT = 0x0F000009,
|
OVERLAY_HELPER_ERROR_EXE_INVALID_HANDLE_ARGUMENT = 0x0F000009,
|
||||||
|
|
||||||
/// The magic number passed to the overlay DLL's
|
/// The magic number passed to the overlay DLL's
|
||||||
/// OverlayHelperProcessMain function did not match
|
/// OverlayHelperProcessMain function did not match
|
||||||
/// the overlay DLL's built-in magic number.
|
/// the overlay DLL's built-in magic number.
|
||||||
OVERLAY_HELPER_ERROR_DLL_MAGIC_MISMATCH = 0x0FF00000,
|
OVERLAY_HELPER_ERROR_DLL_MAGIC_MISMATCH = 0x0FF00000,
|
||||||
/// The overlay helper process exited due to an error
|
/// The overlay helper process exited due to an error
|
||||||
/// in the Windows message loop.
|
/// in the Windows message loop.
|
||||||
OVERLAY_HELPER_ERROR_DLL_MESSAGE_LOOP = 0x0FF00001,
|
OVERLAY_HELPER_ERROR_DLL_MESSAGE_LOOP = 0x0FF00001,
|
||||||
/// The parent death thread could not be created.
|
/// The parent death thread could not be created.
|
||||||
OVERLAY_HELPER_ERROR_DLL_PDEATH_THREAD_ERROR = 0x0FF00002,
|
OVERLAY_HELPER_ERROR_DLL_PDEATH_THREAD_ERROR = 0x0FF00002,
|
||||||
/// The helper's WaitForSingleObject call on its parent
|
/// The helper's WaitForSingleObject call on its parent
|
||||||
/// process failed unexpectedly.
|
/// process failed unexpectedly.
|
||||||
OVERLAY_HELPER_ERROR_DLL_PDEATH_WAIT_FAIL = 0x0FF00003,
|
OVERLAY_HELPER_ERROR_DLL_PDEATH_WAIT_FAIL = 0x0FF00003,
|
||||||
};
|
};
|
||||||
|
|
||||||
/// OverlayHelperErrorToString converts an OverlayHelperError value
|
/// OverlayHelperErrorToString converts an OverlayHelperError value
|
||||||
/// to a printable string representation.
|
/// to a printable string representation.
|
||||||
static inline const char *OverlayHelperErrorToString(OverlayHelperError err) {
|
static inline const char *OverlayHelperErrorToString(OverlayHelperError err) {
|
||||||
#define OHE(x) \
|
#define OHE(x) \
|
||||||
case x: \
|
case x: \
|
||||||
return #x
|
return #x
|
||||||
switch (err) {
|
switch (err) {
|
||||||
OHE(OVERLAY_HELPER_ERROR_EXE_NO_ARGUMENTS);
|
OHE(OVERLAY_HELPER_ERROR_EXE_NO_ARGUMENTS);
|
||||||
OHE(OVERLAY_HELPER_ERROR_EXE_INVALID_MAGIC_ARGUMENT);
|
OHE(OVERLAY_HELPER_ERROR_EXE_INVALID_MAGIC_ARGUMENT);
|
||||||
OHE(OVERLAY_HELPER_ERROR_EXE_MAGIC_MISMATCH);
|
OHE(OVERLAY_HELPER_ERROR_EXE_MAGIC_MISMATCH);
|
||||||
OHE(OVERLAY_HELPER_ERROR_EXE_CONFIGURE_ENVIRONMENT);
|
OHE(OVERLAY_HELPER_ERROR_EXE_CONFIGURE_ENVIRONMENT);
|
||||||
OHE(OVERLAY_HELPER_ERROR_EXE_GET_DLL_PATH);
|
OHE(OVERLAY_HELPER_ERROR_EXE_GET_DLL_PATH);
|
||||||
OHE(OVERLAY_HELPER_ERROR_EXE_LOAD_DLL);
|
OHE(OVERLAY_HELPER_ERROR_EXE_LOAD_DLL);
|
||||||
OHE(OVERLAY_HELPER_ERROR_EXE_LOOKUP_ENTRY_POINT);
|
OHE(OVERLAY_HELPER_ERROR_EXE_LOOKUP_ENTRY_POINT);
|
||||||
OHE(OVERLAY_HELPER_ERROR_TOO_FEW_ARGUMENTS);
|
OHE(OVERLAY_HELPER_ERROR_TOO_FEW_ARGUMENTS);
|
||||||
OHE(OVERLAY_HELPER_ERROR_EXE_INVALID_HANDLE_ARGUMENT);
|
OHE(OVERLAY_HELPER_ERROR_EXE_INVALID_HANDLE_ARGUMENT);
|
||||||
OHE(OVERLAY_HELPER_ERROR_DLL_MAGIC_MISMATCH);
|
OHE(OVERLAY_HELPER_ERROR_DLL_MAGIC_MISMATCH);
|
||||||
OHE(OVERLAY_HELPER_ERROR_DLL_MESSAGE_LOOP);
|
OHE(OVERLAY_HELPER_ERROR_DLL_MESSAGE_LOOP);
|
||||||
OHE(OVERLAY_HELPER_ERROR_DLL_PDEATH_THREAD_ERROR);
|
OHE(OVERLAY_HELPER_ERROR_DLL_PDEATH_THREAD_ERROR);
|
||||||
OHE(OVERLAY_HELPER_ERROR_DLL_PDEATH_WAIT_FAIL);
|
OHE(OVERLAY_HELPER_ERROR_DLL_PDEATH_WAIT_FAIL);
|
||||||
}
|
}
|
||||||
return nullptr;
|
return nullptr;
|
||||||
}
|
}
|
||||||
|
|
||||||
#endif
|
#endif
|
||||||
|
|||||||
@ -1,4 +1,4 @@
|
|||||||
// Copyright 2005-2020 The Mumble Developers. All rights reserved.
|
// Copyright 2017-2021 The Mumble Developers. All rights reserved.
|
||||||
// Use of this source code is governed by a BSD-style license
|
// Use of this source code is governed by a BSD-style license
|
||||||
// that can be found in the LICENSE file at the root of the
|
// that can be found in the LICENSE file at the root of the
|
||||||
// Mumble source tree or at <https://www.mumble.info/LICENSE>.
|
// Mumble source tree or at <https://www.mumble.info/LICENSE>.
|
||||||
|
|||||||
@ -1,4 +1,4 @@
|
|||||||
// Copyright 2005-2020 The Mumble Developers. All rights reserved.
|
// Copyright 2005-2021 The Mumble Developers. All rights reserved.
|
||||||
// Use of this source code is governed by a BSD-style license
|
// Use of this source code is governed by a BSD-style license
|
||||||
// that can be found in the LICENSE file at the root of the
|
// that can be found in the LICENSE file at the root of the
|
||||||
// Mumble source tree or at <https://www.mumble.info/LICENSE>.
|
// Mumble source tree or at <https://www.mumble.info/LICENSE>.
|
||||||
|
|||||||
@ -1,3 +1,8 @@
|
|||||||
|
:: Copyright 2020-2021 The Mumble Developers. All rights reserved.
|
||||||
|
:: Use of this source code is governed by a BSD-style license
|
||||||
|
:: that can be found in the LICENSE file at the root of the
|
||||||
|
:: Mumble source tree or at <https://www.mumble.info/LICENSE>.
|
||||||
|
|
||||||
@echo off
|
@echo off
|
||||||
|
|
||||||
for /f "usebackq tokens=*" %%i in (`"%ProgramFiles(x86)%\Microsoft Visual Studio\Installer\vswhere" -latest -products * -requires Microsoft.VisualStudio.Component.VC.Tools.x86.x64 -property installationPath`) do (
|
for /f "usebackq tokens=*" %%i in (`"%ProgramFiles(x86)%\Microsoft Visual Studio\Installer\vswhere" -latest -products * -requires Microsoft.VisualStudio.Component.VC.Tools.x86.x64 -property installationPath`) do (
|
||||||
|
|||||||
106
overlay/util.h
106
overlay/util.h
@ -1,53 +1,53 @@
|
|||||||
// Copyright 2005-2020 The Mumble Developers. All rights reserved.
|
// Copyright 2017-2021 The Mumble Developers. All rights reserved.
|
||||||
// Use of this source code is governed by a BSD-style license
|
// Use of this source code is governed by a BSD-style license
|
||||||
// that can be found in the LICENSE file at the root of the
|
// that can be found in the LICENSE file at the root of the
|
||||||
// Mumble source tree or at <https://www.mumble.info/LICENSE>.
|
// Mumble source tree or at <https://www.mumble.info/LICENSE>.
|
||||||
|
|
||||||
#ifndef MUMBLE_UTIL_H_
|
#ifndef MUMBLE_UTIL_H_
|
||||||
#define MUMBLE_UTIL_H_
|
#define MUMBLE_UTIL_H_
|
||||||
|
|
||||||
#include <algorithm>
|
#include <algorithm>
|
||||||
#include <string>
|
#include <string>
|
||||||
#include <vector>
|
#include <vector>
|
||||||
|
|
||||||
/// Returns true if |path| is an absolute path.
|
/// Returns true if |path| is an absolute path.
|
||||||
/// Returns false if |path| is not an absolute path.
|
/// Returns false if |path| is not an absolute path.
|
||||||
static inline bool isAbsPath(const std::string &path) {
|
static inline bool isAbsPath(const std::string &path) {
|
||||||
return path.find("\\") != std::string::npos;
|
return path.find("\\") != std::string::npos;
|
||||||
}
|
}
|
||||||
|
|
||||||
/// Convert the string |s| to lowercase and return it.
|
/// Convert the string |s| to lowercase and return it.
|
||||||
static inline std::string slowercase(std::string s) {
|
static inline std::string slowercase(std::string s) {
|
||||||
std::transform(s.begin(), s.end(), s.begin(), tolower);
|
std::transform(s.begin(), s.end(), s.begin(), tolower);
|
||||||
return s;
|
return s;
|
||||||
}
|
}
|
||||||
|
|
||||||
/// Convert all entries of |vec| to lowercase and return the resulting vector.
|
/// Convert all entries of |vec| to lowercase and return the resulting vector.
|
||||||
static inline std::vector< std::string > vlowercase(std::vector< std::string > vec) {
|
static inline std::vector< std::string > vlowercase(std::vector< std::string > vec) {
|
||||||
std::transform(vec.begin(), vec.end(), vec.begin(), slowercase);
|
std::transform(vec.begin(), vec.end(), vec.begin(), slowercase);
|
||||||
return vec;
|
return vec;
|
||||||
}
|
}
|
||||||
|
|
||||||
/// Merge |v1| and |v2| and return the result.
|
/// Merge |v1| and |v2| and return the result.
|
||||||
template< typename T > static inline std::vector< T > vmerge(std::vector< T > v1, const std::vector< T > &v2) {
|
template< typename T > static inline std::vector< T > vmerge(std::vector< T > v1, const std::vector< T > &v2) {
|
||||||
v1.insert(v1.end(), v2.begin(), v2.end());
|
v1.insert(v1.end(), v2.begin(), v2.end());
|
||||||
return v1;
|
return v1;
|
||||||
}
|
}
|
||||||
|
|
||||||
/// Filter out all entries of |vremove| from |v| and return the result.
|
/// Filter out all entries of |vremove| from |v| and return the result.
|
||||||
template< typename T >
|
template< typename T >
|
||||||
static inline std::vector< T > vexclude(const std::vector< T > &v, const std::vector< T > &vremove) {
|
static inline std::vector< T > vexclude(const std::vector< T > &v, const std::vector< T > &vremove) {
|
||||||
std::vector< T > out;
|
std::vector< T > out;
|
||||||
std::set_difference(v.begin(), v.end(), vremove.begin(), vremove.end(), std::inserter(out, out.begin()));
|
std::set_difference(v.begin(), v.end(), vremove.begin(), vremove.end(), std::inserter(out, out.begin()));
|
||||||
return out;
|
return out;
|
||||||
}
|
}
|
||||||
|
|
||||||
/// Find the intersection between |v1| and |v2| and return the result.
|
/// Find the intersection between |v1| and |v2| and return the result.
|
||||||
template< typename T >
|
template< typename T >
|
||||||
static inline std::vector< T > vintersect(const std::vector< T > &v1, const std::vector< T > &v2) {
|
static inline std::vector< T > vintersect(const std::vector< T > &v1, const std::vector< T > &v2) {
|
||||||
std::vector< T > out;
|
std::vector< T > out;
|
||||||
std::set_intersection(v1.begin(), v1.end(), v2.begin(), v2.end(), std::inserter(out, out.begin()));
|
std::set_intersection(v1.begin(), v1.end(), v2.begin(), v2.end(), std::inserter(out, out.begin()));
|
||||||
return out;
|
return out;
|
||||||
}
|
}
|
||||||
|
|
||||||
#endif
|
#endif
|
||||||
|
|||||||
@ -1,4 +1,4 @@
|
|||||||
// Copyright 2005-2020 The Mumble Developers. All rights reserved.
|
// Copyright 2010-2021 The Mumble Developers. All rights reserved.
|
||||||
// Use of this source code is governed by a BSD-style license
|
// Use of this source code is governed by a BSD-style license
|
||||||
// that can be found in the LICENSE file at the root of the
|
// that can be found in the LICENSE file at the root of the
|
||||||
// Mumble source tree or at <https://www.mumble.info/LICENSE>.
|
// Mumble source tree or at <https://www.mumble.info/LICENSE>.
|
||||||
|
|||||||
@ -1,4 +1,10 @@
|
|||||||
#!/usr/bin/perl
|
#!/usr/bin/perl
|
||||||
|
|
||||||
|
# Copyright 2015-2021 The Mumble Developers. All rights reserved.
|
||||||
|
# Use of this source code is governed by a BSD-style license
|
||||||
|
# that can be found in the LICENSE file at the root of the
|
||||||
|
# Mumble source tree or at <https://www.mumble.info/LICENSE>.
|
||||||
|
|
||||||
# perl avail_mac.pl < overlay.c init_mac.c > avail_mac.h
|
# perl avail_mac.pl < overlay.c init_mac.c > avail_mac.h
|
||||||
|
|
||||||
%funcs = ();
|
%funcs = ();
|
||||||
|
|||||||
@ -1,4 +1,4 @@
|
|||||||
// Copyright 2005-2020 The Mumble Developers. All rights reserved.
|
// Copyright 2015-2021 The Mumble Developers. All rights reserved.
|
||||||
// Use of this source code is governed by a BSD-style license
|
// Use of this source code is governed by a BSD-style license
|
||||||
// that can be found in the LICENSE file at the root of the
|
// that can be found in the LICENSE file at the root of the
|
||||||
// Mumble source tree or at <https://www.mumble.info/LICENSE>.
|
// Mumble source tree or at <https://www.mumble.info/LICENSE>.
|
||||||
|
|||||||
@ -1,4 +1,4 @@
|
|||||||
// Copyright 2005-2020 The Mumble Developers. All rights reserved.
|
// Copyright 2015-2021 The Mumble Developers. All rights reserved.
|
||||||
// Use of this source code is governed by a BSD-style license
|
// Use of this source code is governed by a BSD-style license
|
||||||
// that can be found in the LICENSE file at the root of the
|
// that can be found in the LICENSE file at the root of the
|
||||||
// Mumble source tree or at <https://www.mumble.info/LICENSE>.
|
// Mumble source tree or at <https://www.mumble.info/LICENSE>.
|
||||||
|
|||||||
@ -1,4 +1,4 @@
|
|||||||
// Copyright 2005-2020 The Mumble Developers. All rights reserved.
|
// Copyright 2007-2021 The Mumble Developers. All rights reserved.
|
||||||
// Use of this source code is governed by a BSD-style license
|
// Use of this source code is governed by a BSD-style license
|
||||||
// that can be found in the LICENSE file at the root of the
|
// that can be found in the LICENSE file at the root of the
|
||||||
// Mumble source tree or at <https://www.mumble.info/LICENSE>.
|
// Mumble source tree or at <https://www.mumble.info/LICENSE>.
|
||||||
|
|||||||
@ -1,4 +1,4 @@
|
|||||||
// Copyright 2020 The Mumble Developers. All rights reserved.
|
// Copyright 2020-2021 The Mumble Developers. All rights reserved.
|
||||||
// Use of this source code is governed by a BSD-style license
|
// Use of this source code is governed by a BSD-style license
|
||||||
// that can be found in the LICENSE file at the root of the
|
// that can be found in the LICENSE file at the root of the
|
||||||
// Mumble source tree or at <https://www.mumble.info/LICENSE>.
|
// Mumble source tree or at <https://www.mumble.info/LICENSE>.
|
||||||
|
|||||||
@ -1,4 +1,4 @@
|
|||||||
// Copyright 2020 The Mumble Developers. All rights reserved.
|
// Copyright 2020-2021 The Mumble Developers. All rights reserved.
|
||||||
// Use of this source code is governed by a BSD-style license
|
// Use of this source code is governed by a BSD-style license
|
||||||
// that can be found in the LICENSE file at the root of the
|
// that can be found in the LICENSE file at the root of the
|
||||||
// Mumble source tree or at <https://www.mumble.info/LICENSE>.
|
// Mumble source tree or at <https://www.mumble.info/LICENSE>.
|
||||||
|
|||||||
@ -1,4 +1,4 @@
|
|||||||
// Copyright 2020 The Mumble Developers. All rights reserved.
|
// Copyright 2020-2021 The Mumble Developers. All rights reserved.
|
||||||
// Use of this source code is governed by a BSD-style license
|
// Use of this source code is governed by a BSD-style license
|
||||||
// that can be found in the LICENSE file at the root of the
|
// that can be found in the LICENSE file at the root of the
|
||||||
// Mumble source tree or at <https://www.mumble.info/LICENSE>.
|
// Mumble source tree or at <https://www.mumble.info/LICENSE>.
|
||||||
|
|||||||
@ -1,4 +1,4 @@
|
|||||||
// Copyright 2020 The Mumble Developers. All rights reserved.
|
// Copyright 2020-2021 The Mumble Developers. All rights reserved.
|
||||||
// Use of this source code is governed by a BSD-style license
|
// Use of this source code is governed by a BSD-style license
|
||||||
// that can be found in the LICENSE file at the root of the
|
// that can be found in the LICENSE file at the root of the
|
||||||
// Mumble source tree or at <https://www.mumble.info/LICENSE>.
|
// Mumble source tree or at <https://www.mumble.info/LICENSE>.
|
||||||
|
|||||||
@ -1,4 +1,4 @@
|
|||||||
// Copyright 2020 The Mumble Developers. All rights reserved.
|
// Copyright 2020-2021 The Mumble Developers. All rights reserved.
|
||||||
// Use of this source code is governed by a BSD-style license
|
// Use of this source code is governed by a BSD-style license
|
||||||
// that can be found in the LICENSE file at the root of the
|
// that can be found in the LICENSE file at the root of the
|
||||||
// Mumble source tree or at <https://www.mumble.info/LICENSE>.
|
// Mumble source tree or at <https://www.mumble.info/LICENSE>.
|
||||||
|
|||||||
@ -1,4 +1,4 @@
|
|||||||
// Copyright 2020 The Mumble Developers. All rights reserved.
|
// Copyright 2020-2021 The Mumble Developers. All rights reserved.
|
||||||
// Use of this source code is governed by a BSD-style license
|
// Use of this source code is governed by a BSD-style license
|
||||||
// that can be found in the LICENSE file at the root of the
|
// that can be found in the LICENSE file at the root of the
|
||||||
// Mumble source tree or at <https://www.mumble.info/LICENSE>.
|
// Mumble source tree or at <https://www.mumble.info/LICENSE>.
|
||||||
|
|||||||
@ -1,4 +1,4 @@
|
|||||||
// Copyright 2020 The Mumble Developers. All rights reserved.
|
// Copyright 2020-2021 The Mumble Developers. All rights reserved.
|
||||||
// Use of this source code is governed by a BSD-style license
|
// Use of this source code is governed by a BSD-style license
|
||||||
// that can be found in the LICENSE file at the root of the
|
// that can be found in the LICENSE file at the root of the
|
||||||
// Mumble source tree or at <https://www.mumble.info/LICENSE>.
|
// Mumble source tree or at <https://www.mumble.info/LICENSE>.
|
||||||
|
|||||||
@ -1,4 +1,4 @@
|
|||||||
// Copyright 2020 The Mumble Developers. All rights reserved.
|
// Copyright 2020-2021 The Mumble Developers. All rights reserved.
|
||||||
// Use of this source code is governed by a BSD-style license
|
// Use of this source code is governed by a BSD-style license
|
||||||
// that can be found in the LICENSE file at the root of the
|
// that can be found in the LICENSE file at the root of the
|
||||||
// Mumble source tree or at <https://www.mumble.info/LICENSE>.
|
// Mumble source tree or at <https://www.mumble.info/LICENSE>.
|
||||||
|
|||||||
@ -1,4 +1,4 @@
|
|||||||
// Copyright 2020 The Mumble Developers. All rights reserved.
|
// Copyright 2020-2021 The Mumble Developers. All rights reserved.
|
||||||
// Use of this source code is governed by a BSD-style license
|
// Use of this source code is governed by a BSD-style license
|
||||||
// that can be found in the LICENSE file at the root of the
|
// that can be found in the LICENSE file at the root of the
|
||||||
// Mumble source tree or at <https://www.mumble.info/LICENSE>.
|
// Mumble source tree or at <https://www.mumble.info/LICENSE>.
|
||||||
|
|||||||
@ -1,4 +1,4 @@
|
|||||||
// Copyright 2020 The Mumble Developers. All rights reserved.
|
// Copyright 2020-2021 The Mumble Developers. All rights reserved.
|
||||||
// Use of this source code is governed by a BSD-style license
|
// Use of this source code is governed by a BSD-style license
|
||||||
// that can be found in the LICENSE file at the root of the
|
// that can be found in the LICENSE file at the root of the
|
||||||
// Mumble source tree or at <https://www.mumble.info/LICENSE>.
|
// Mumble source tree or at <https://www.mumble.info/LICENSE>.
|
||||||
|
|||||||
@ -1,4 +1,4 @@
|
|||||||
// Copyright 2020 The Mumble Developers. All rights reserved.
|
// Copyright 2020-2021 The Mumble Developers. All rights reserved.
|
||||||
// Use of this source code is governed by a BSD-style license
|
// Use of this source code is governed by a BSD-style license
|
||||||
// that can be found in the LICENSE file at the root of the
|
// that can be found in the LICENSE file at the root of the
|
||||||
// Mumble source tree or at <https://www.mumble.info/LICENSE>.
|
// Mumble source tree or at <https://www.mumble.info/LICENSE>.
|
||||||
|
|||||||
@ -1,4 +1,4 @@
|
|||||||
// Copyright 2020 The Mumble Developers. All rights reserved.
|
// Copyright 2020-2021 The Mumble Developers. All rights reserved.
|
||||||
// Use of this source code is governed by a BSD-style license
|
// Use of this source code is governed by a BSD-style license
|
||||||
// that can be found in the LICENSE file at the root of the
|
// that can be found in the LICENSE file at the root of the
|
||||||
// Mumble source tree or at <https://www.mumble.info/LICENSE>.
|
// Mumble source tree or at <https://www.mumble.info/LICENSE>.
|
||||||
|
|||||||
@ -1,4 +1,4 @@
|
|||||||
// Copyright 2020 The Mumble Developers. All rights reserved.
|
// Copyright 2020-2021 The Mumble Developers. All rights reserved.
|
||||||
// Use of this source code is governed by a BSD-style license
|
// Use of this source code is governed by a BSD-style license
|
||||||
// that can be found in the LICENSE file at the root of the
|
// that can be found in the LICENSE file at the root of the
|
||||||
// Mumble source tree or at <https://www.mumble.info/LICENSE>.
|
// Mumble source tree or at <https://www.mumble.info/LICENSE>.
|
||||||
|
|||||||
@ -1,4 +1,4 @@
|
|||||||
// Copyright 2020 The Mumble Developers. All rights reserved.
|
// Copyright 2020-2021 The Mumble Developers. All rights reserved.
|
||||||
// Use of this source code is governed by a BSD-style license
|
// Use of this source code is governed by a BSD-style license
|
||||||
// that can be found in the LICENSE file at the root of the
|
// that can be found in the LICENSE file at the root of the
|
||||||
// Mumble source tree or at <https://www.mumble.info/LICENSE>.
|
// Mumble source tree or at <https://www.mumble.info/LICENSE>.
|
||||||
|
|||||||
@ -1,4 +1,4 @@
|
|||||||
// Copyright 2020 The Mumble Developers. All rights reserved.
|
// Copyright 2020-2021 The Mumble Developers. All rights reserved.
|
||||||
// Use of this source code is governed by a BSD-style license
|
// Use of this source code is governed by a BSD-style license
|
||||||
// that can be found in the LICENSE file at the root of the
|
// that can be found in the LICENSE file at the root of the
|
||||||
// Mumble source tree or at <https://www.mumble.info/LICENSE>.
|
// Mumble source tree or at <https://www.mumble.info/LICENSE>.
|
||||||
|
|||||||
@ -1,3 +1,8 @@
|
|||||||
|
// Copyright 2020-2021 The Mumble Developers. All rights reserved.
|
||||||
|
// Use of this source code is governed by a BSD-style license
|
||||||
|
// that can be found in the LICENSE file at the root of the
|
||||||
|
// Mumble source tree or at <https://www.mumble.info/LICENSE>.
|
||||||
|
|
||||||
#ifndef AMONGUS_STRUCTS
|
#ifndef AMONGUS_STRUCTS
|
||||||
#define AMONGUS_STRUCTS
|
#define AMONGUS_STRUCTS
|
||||||
|
|
||||||
|
|||||||
@ -1,4 +1,4 @@
|
|||||||
// Copyright 2005-2020 The Mumble Developers. All rights reserved.
|
// Copyright 2009-2021 The Mumble Developers. All rights reserved.
|
||||||
// Use of this source code is governed by a BSD-style license
|
// Use of this source code is governed by a BSD-style license
|
||||||
// that can be found in the LICENSE file at the root of the
|
// that can be found in the LICENSE file at the root of the
|
||||||
// Mumble source tree or at <https://www.mumble.info/LICENSE>.
|
// Mumble source tree or at <https://www.mumble.info/LICENSE>.
|
||||||
|
|||||||
@ -1,4 +1,4 @@
|
|||||||
// Copyright 2005-2020 The Mumble Developers. All rights reserved.
|
// Copyright 2005-2021 The Mumble Developers. All rights reserved.
|
||||||
// Use of this source code is governed by a BSD-style license
|
// Use of this source code is governed by a BSD-style license
|
||||||
// that can be found in the LICENSE file at the root of the
|
// that can be found in the LICENSE file at the root of the
|
||||||
// Mumble source tree or at <https://www.mumble.info/LICENSE>.
|
// Mumble source tree or at <https://www.mumble.info/LICENSE>.
|
||||||
|
|||||||
@ -1,4 +1,4 @@
|
|||||||
// Copyright 2005-2020 The Mumble Developers. All rights reserved.
|
// Copyright 2016-2021 The Mumble Developers. All rights reserved.
|
||||||
// Use of this source code is governed by a BSD-style license
|
// Use of this source code is governed by a BSD-style license
|
||||||
// that can be found in the LICENSE file at the root of the
|
// that can be found in the LICENSE file at the root of the
|
||||||
// Mumble source tree or at <https://www.mumble.info/LICENSE>.
|
// Mumble source tree or at <https://www.mumble.info/LICENSE>.
|
||||||
|
|||||||
@ -1,4 +1,4 @@
|
|||||||
// Copyright 2005-2020 The Mumble Developers. All rights reserved.
|
// Copyright 2005-2021 The Mumble Developers. All rights reserved.
|
||||||
// Use of this source code is governed by a BSD-style license
|
// Use of this source code is governed by a BSD-style license
|
||||||
// that can be found in the LICENSE file at the root of the
|
// that can be found in the LICENSE file at the root of the
|
||||||
// Mumble source tree or at <https://www.mumble.info/LICENSE>.
|
// Mumble source tree or at <https://www.mumble.info/LICENSE>.
|
||||||
|
|||||||
@ -1,4 +1,4 @@
|
|||||||
// Copyright 2005-2020 The Mumble Developers. All rights reserved.
|
// Copyright 2005-2021 The Mumble Developers. All rights reserved.
|
||||||
// Use of this source code is governed by a BSD-style license
|
// Use of this source code is governed by a BSD-style license
|
||||||
// that can be found in the LICENSE file at the root of the
|
// that can be found in the LICENSE file at the root of the
|
||||||
// Mumble source tree or at <https://www.mumble.info/LICENSE>.
|
// Mumble source tree or at <https://www.mumble.info/LICENSE>.
|
||||||
|
|||||||
Some files were not shown because too many files have changed in this diff Show More
Loading…
Reference in New Issue
Block a user