Skip to content

Commit 1ca50a8

Browse files
author
Martin Müllenhaupt
committed
dropping C++11 requirement
1 parent 0ca7866 commit 1ca50a8

5 files changed

Lines changed: 50 additions & 58 deletions

File tree

.gitignore

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -2,3 +2,4 @@ uid.build/**
22
build/uid.build/**
33
.idea/**
44
__pycache__
5+
/CMakeLists.txt.user

.travis.yml

Lines changed: 21 additions & 32 deletions
Original file line numberDiff line numberDiff line change
@@ -2,51 +2,40 @@ language: cpp
22
matrix:
33
include:
44
- os: linux
5-
sudo: false
6-
env:
7-
- UID_FILENAME=uid
8-
- UID_PLATFORM='linux'
9-
- CXX=g++-5
10-
- CC=gcc-5
11-
addons:
12-
apt:
13-
sources:
14-
- ubuntu-toolchain-r-test
15-
- george-edison55-precise-backports
16-
packages:
17-
- gcc-5
18-
- cmake
19-
- os: linux
20-
sudo: false
5+
sudo: required
216
env:
227
- UID_FILENAME=uid.exe
238
- UID_PLATFORM='win32'
24-
compiler: gcc
25-
addons:
26-
apt:
27-
sources:
28-
- ubuntu-toolchain-r-test
29-
- george-edison55-precise-backports
30-
packages:
31-
- cmake
32-
- gcc-4.8
33-
- g++-4.8
34-
- autopoint
35-
- intltool
36-
- gperf
37-
- p7zip-full
9+
- MXE_DIR=/usr/lib/mxe
10+
- MXE_TARGET=i686-w64-mingw32.static
11+
install:
12+
- echo "deb http://pkg.mxe.cc/repos/apt/debian wheezy main" | sudo tee /etc/apt/sources.list.d/mxeapt.list
13+
- sudo apt-key adv --keyserver x-hkp://keys.gnupg.net --recv-keys D43A795B73B16ABE9643FE1AFD8FFF16DB45C6AB
14+
- sudo apt-get update
15+
- sudo apt-get --yes install mxe-i686-w64-mingw32.static-jsoncpp
16+
- sudo apt-get --yes install mxe-i686-w64-mingw32.static-cryptopp
17+
- sudo apt-get --yes install mxe-i686-w64-mingw32.static-icu4c
18+
script:
19+
- mkdir build && cd build
20+
- $MXE_DIR/usr/bin/$MXE_TARGET-cmake >
21+
-DCMAKE_BUILD_TYPE=MinSizeRel
22+
-DUID_PUBKEY_BYTES=`../int_to_bytes.py $n`
23+
..
24+
- make -j8
25+
- cd ..
3826

3927
env:
4028
global:
4129
- secure: gZJEU+r0BJYH3GxoQAUWUUAse6VlOT28pTnT07ft2vrutTr0Q9383OpNlxkCZ34BBXr2hDlwAYkO1oy4lLQoyjAe59KPSuTmbGZloI/4DojEuwxf5rDHeVK8YkA/cmP6UW2BHpBOCYor4l0lz9XihFPuiriiRiy0BkRK3mwMTBO18SmjbxXw49si1/6oVJupuT4UYUHQbu6MNAYyIPcPQKMPEYOdV5AkIb9cKM+QMpExC+Sby/f/4m68J9MygcM+YMbb+PuWvuUot4FzTrWjswLp1slbI8YdN7BoC4hyPlW9Tuquq40WSTeTf2S/BS1qkfvFHpddF5OEcGvfkameg7mo1J1ZZWv8wlrM513FWM+t4QKNkXadqFetbznm94bNrnVvU6R7Z7Utf4+zl4TW9z5lb8KyO+nu/qFlWf2qORyyVTmxXeLXaK9ZDtr5QFgPfk4tKcVlnD2ECtYcm35TtEJF5dkOpETYG30W+6fd1glw3oQKj5gWJrPCC50mss3C/zsWN2tHTbeGSgix3hNrDsJuMcELkDdJIkAAhn1WnVyAfdt5hSX9A0S4W131G5t6I00lZs1e+ZAzOr5+LvotLtg1W48xIQtrbv2GEBkZEyV/bsOoLSyTLFelN6ehiq/eALQEhHodxx8P3tDgi5jG4SKPcqdi6fSwnGfPvpbZbMI=
4230
- secure: V23UleSDM9vYuhFY68JY+VPBNF1DxFh0y7LB9U0RNql05dJv02QjU+W/eteAJ+VkhqrIq1XDaIMYp3/eon+tT+iT9xtIdaj0DreaWu0paCfaVITOHBYARDmTwwo7i/NvUdZbAyjKEc7dpxBkZwHZCpu9dIUOqXGg/cKmDQdKeNsNITJOsudueeeMp1P5eWj1om/PH/8PhwteSvJwTPXOKIhAj2IVL4EkiFkMEA9cIF4u/y6IkugnJsDCBqnr5SsioM6XXEbe6i0l9/ngSs2y20peFNnSITrzw/2xKlolLHfmFO/0ubmHAxBXC5W9cP4Fk2FGdY10rFh6MoCjgyjUYm0xfP+s6Nhx4yjkG9kNm1CXkl4TZyNdQu2qoVsrLJhZ4Y/yPiusmuWZWdlxu2l10UPrt35VtZtD5VosNZ/otMHErv/TLwEzqw3rpPW48Cyx/HeVg4PMTKad0amIsGpykW3ghLh7N0cvBqh3b0Yk7k2UsLf/6I7f1OcleUejDNpkoC/fjMSB/jQ6B3LfFMrzMur5kzzoqla6TLp/OWs9eoGXeu9Iw58XmvvMkcoNCQgntT2tm9t7XaOpURHDpKGwl5G59DbpWXFTq9qF5gjhT/9EuH18OtEzhkBA+jivR2P7lj9NeQMDqkww4wmgf740+8dcq82thqgY+Cckf/X2XZM=
4331

44-
install:
45-
- ./build_$UID_PLATFORM.sh
4632
script:
4733
- echo "Nothing."
34+
4835
before_deploy:
4936
- export RELEASE_PKG_FILE=./build/$UID_FILENAME
37+
- strip -s $RELEASE_PKG_FILE
38+
5039
deploy:
5140
provider: releases
5241
api_key:

CMakeLists.txt

Lines changed: 18 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -8,6 +8,7 @@ if(NOT DEFINED JSONCPP_LIBRARIES)
88
endif()
99
pkg_search_module(JSONCPP REQUIRED jsoncpp)
1010
endif()
11+
1112
include_directories(${JSONCPP_INCLUDE_DIRS})
1213

1314
if(NOT DEFINED CRYPTOPP_LIBRARIES)
@@ -16,28 +17,36 @@ if(NOT DEFINED CRYPTOPP_LIBRARIES)
1617
endif()
1718
pkg_search_module(CRYPTOPP REQUIRED cryptopp)
1819
endif()
19-
include_directories(${CRYPTOPP_INCLUDE_DIRS})
2020

21-
set(CMAKE_CXX_STANDARD 11)
21+
include_directories(${CRYPTOPP_INCLUDE_DIRS})
2222

2323
if (WIN32)
24+
if(NOT PKGCONFIG_FOUND)
25+
find_package(PkgConfig REQUIRED)
26+
endif()
27+
pkg_search_module(ICU REQUIRED icu-uc)
28+
include_directories(${ICU_INCLUDE_DIRS})
2429
set(machine_info_src machine_info_win.cpp)
2530
set(machine_info_libs
26-
wbemuuid.lib
31+
${ICU_LIBRARIES}
32+
wbemuuid.lib
2733
)
2834
else()
2935
set(machine_info_src machine_info_linux.cpp)
3036
endif()
3137

32-
set(UID_PUBKEY_BYTES
33-
"130,99,238,192,232,47,187,99,222,116,140,101,233,231,57,188,204,204,187,241,173,147,88,60,217,7,80,217"
34-
CACHE STRING
35-
"the public key used for encryption"
36-
)
38+
if(NOT DEFINED UID_PUBKEY_BYTES)
39+
message(WARNING "You need to set UID_PUBKEY_BYTES to the output of int_to_bytes.py. Using test public key.")
40+
set(UID_PUBKEY_BYTES
41+
"130,99,238,192,232,47,187,99,222,116,140,101,233,231,57,188,204,204,187,241,173,147,88,60,217,7,80,217"
42+
CACHE STRING
43+
"the public key used for encryption"
44+
)
45+
endif()
3746

3847
add_definitions(-DUID_PUBKEY_BYTES="${UID_PUBKEY_BYTES}")
3948

40-
set(CMAKE_EXE_LINKER_FLAGS "${CMAKE_EXE_LINKER_FLAGS}-static")
49+
set(CMAKE_EXE_LINKER_FLAGS "${CMAKE_EXE_LINKER_FLAGS} -static")
4150

4251
add_executable(uid
4352
uid.cpp

machine_info_win.cpp

Lines changed: 9 additions & 16 deletions
Original file line numberDiff line numberDiff line change
@@ -1,10 +1,10 @@
11
#include "machine_info.h"
22

33
#include <string>
4+
#include <sstream>
45
#include <vector>
5-
#include <clocale>
6-
#include <codecvt>
7-
#include <locale>
6+
7+
#include <unicode/unistr.h>
88

99
#define _WIN32_DCOM
1010
#include <iostream>
@@ -163,10 +163,6 @@ std::vector<std::string> read_wmi_values(std::wstring const& table,
163163
query += L" WHERE ";
164164
query += filter;
165165
}
166-
//std::wcout << "query " << query << std::endl;
167-
168-
using convert_type = std::codecvt_utf8<wchar_t>;
169-
std::wstring_convert<convert_type, wchar_t> converter;
170166

171167
IEnumWbemClassObject* pEnumerator = NULL;
172168

@@ -206,7 +202,6 @@ std::vector<std::string> read_wmi_values(std::wstring const& table,
206202
VARIANT vtProp;
207203
VariantInit(&vtProp);
208204

209-
//std::cout << "enum1" << std::endl;
210205
// Get the value of the Name property
211206
hres = pclsObj->Get(property.c_str(), 0, &vtProp, 0, 0);
212207

@@ -226,21 +221,19 @@ std::vector<std::string> read_wmi_values(std::wstring const& table,
226221
break;
227222
}
228223

229-
//std::cout << "enum2" << std::endl;
230224
if (vtProp.vt == VT_BSTR)
231225
{
232-
int wslen = ::SysStringLen(vtProp.bstrVal);
233-
//std::cout << "enum2.5 " << wslen << std::endl;
234-
result.push_back(converter.to_bytes(std::wstring(vtProp.bstrVal, wslen)));
226+
std::string propString;
227+
UnicodeString(vtProp.bstrVal).toUTF8String(propString);
228+
result.push_back(propString);
235229
}
236230
else if (vtProp.vt == VT_I4)
237231
{
238-
result.push_back(std::to_string(vtProp.iVal));
232+
result.push_back(static_cast< std::ostringstream & >(( std::ostringstream() << std::dec << vtProp.iVal ) ).str());
239233
}
240-
//std::cout << "enum3" << std::endl;
234+
241235
VariantClear(&vtProp);
242236

243-
//std::cout << "enum4" << std::endl;
244237
pclsObj->Release();
245238
}
246239
pEnumerator->Release();
@@ -251,7 +244,7 @@ std::string wmi_value(std::wstring const& table,
251244
std::wstring const& property,
252245
std::wstring const& filter = std::wstring())
253246
{
254-
auto values = read_wmi_values(table,
247+
std::vector<std::string> values = read_wmi_values(table,
255248
property,
256249
filter);
257250

uid.cpp

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,7 @@
11
#include <string>
22
#include <iostream>
33
#include <cassert>
4-
#include <cstdint>
4+
#include <stdint.h>
55

66
#include <cryptopp/aes.h>
77
#include <cryptopp/modes.h>

0 commit comments

Comments
 (0)