1/*
2 * Copyright 2010-2017 Amazon.com, Inc. or its affiliates. All Rights Reserved.
3 *
4 * Licensed under the Apache License, Version 2.0 (the "License").
5 * You may not use this file except in compliance with the License.
6 * A copy of the License is located at
7 *
8 * http://aws.amazon.com/apache2.0
9 *
10 * or in the "license" file accompanying this file. This file is distributed
11 * on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either
12 * express or implied. See the License for the specific language governing
13 * permissions and limitations under the License.
14 */
15
16#include <aws/core/platform/OSVersionInfo.h>
17#include <aws/core/utils/memory/stl/AWSStringStream.h>
18#include <aws/core/utils/StringUtils.h>
19#include <sys/utsname.h>
20
21namespace Aws
22{
23namespace OSVersionInfo
24{
25
26Aws::String GetSysCommandOutput(const char* command)
27{
28 Aws::String outputStr;
29 FILE* outputStream;
30 const int maxBufferSize = 256;
31 char outputBuffer[maxBufferSize];
32
33 outputStream = popen(command, "r");
34
35 if (outputStream)
36 {
37 while (!feof(outputStream))
38 {
39 if (fgets(outputBuffer, maxBufferSize, outputStream) != nullptr)
40 {
41 outputStr.append(outputBuffer);
42 }
43 }
44
45 pclose(outputStream);
46
47 return Aws::Utils::StringUtils::Trim(outputStr.c_str());
48 }
49
50 return {};
51}
52
53
54Aws::String ComputeOSVersionString()
55{
56 utsname name;
57 int32_t success = uname(&name);
58 if(success >= 0)
59 {
60 Aws::StringStream ss;
61 ss << name.sysname << "/" << name.release << " " << name.machine;
62 return ss.str();
63 }
64
65 return "non-windows/unknown";
66}
67
68} // namespace OSVersionInfo
69} // namespace Aws
70