mirror of
https://github.com/RPCS3/llvm.git
synced 2024-12-02 00:37:09 +00:00
Add llvm::sys::{osName,osVersion} for retrieving operating system name
& version as strings. - Win32 code is untested. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@56942 91177308-0d34-0410-b5e6-96231b3b80d8
This commit is contained in:
parent
0b3baaa7fb
commit
bb14672097
@ -14,6 +14,8 @@
|
||||
#ifndef LLVM_SYSTEM_HOST_H
|
||||
#define LLVM_SYSTEM_HOST_H
|
||||
|
||||
#include <string>
|
||||
|
||||
namespace llvm {
|
||||
namespace sys {
|
||||
|
||||
@ -30,6 +32,13 @@ namespace sys {
|
||||
return !littleEndianHost();
|
||||
}
|
||||
|
||||
/// osName() - Return the name of the host operating system or "" if
|
||||
/// unknown.
|
||||
std::string osName();
|
||||
|
||||
/// osVersion() - Return the operating system version as a string or
|
||||
/// "" if unknown.
|
||||
std::string osVersion();
|
||||
}
|
||||
}
|
||||
|
||||
|
24
lib/System/Host.cpp
Normal file
24
lib/System/Host.cpp
Normal file
@ -0,0 +1,24 @@
|
||||
//===-- Host.cpp - Implement OS Host Concept --------------------*- C++ -*-===//
|
||||
//
|
||||
// The LLVM Compiler Infrastructure
|
||||
//
|
||||
// This file is distributed under the University of Illinois Open Source
|
||||
// License. See LICENSE.TXT for details.
|
||||
//
|
||||
//===----------------------------------------------------------------------===//
|
||||
//
|
||||
// This header file implements the operating system Host concept.
|
||||
//
|
||||
//===----------------------------------------------------------------------===//
|
||||
|
||||
#include "llvm/System/Host.h"
|
||||
#include "llvm/Config/config.h"
|
||||
|
||||
// Include the platform-specific parts of this class.
|
||||
#ifdef LLVM_ON_UNIX
|
||||
#include "Unix/Host.inc"
|
||||
#endif
|
||||
#ifdef LLVM_ON_WIN32
|
||||
#include "Win32/Host.inc"
|
||||
#endif
|
||||
|
42
lib/System/Unix/Host.inc
Normal file
42
lib/System/Unix/Host.inc
Normal file
@ -0,0 +1,42 @@
|
||||
//===- llvm/System/Unix/Host.inc --------------------------------*- C++ -*-===//
|
||||
//
|
||||
// The LLVM Compiler Infrastructure
|
||||
//
|
||||
// This file is distributed under the University of Illinois Open Source
|
||||
// License. See LICENSE.TXT for details.
|
||||
//
|
||||
//===----------------------------------------------------------------------===//
|
||||
//
|
||||
// This file implements the UNIX Host support.
|
||||
//
|
||||
//===----------------------------------------------------------------------===//
|
||||
|
||||
//===----------------------------------------------------------------------===//
|
||||
//=== WARNING: Implementation here must contain only generic UNIX code that
|
||||
//=== is guaranteed to work on *all* UNIX variants.
|
||||
//===----------------------------------------------------------------------===//
|
||||
|
||||
#include <llvm/Config/config.h>
|
||||
#include "Unix.h"
|
||||
#include <sys/utsname.h>
|
||||
#include <string>
|
||||
|
||||
using namespace llvm;
|
||||
|
||||
std::string llvm::sys::osName() {
|
||||
struct utsname info;
|
||||
|
||||
if (uname(&info))
|
||||
return "";
|
||||
|
||||
return info.sysname;
|
||||
}
|
||||
|
||||
std::string llvm::sys::osVersion() {
|
||||
struct utsname info;
|
||||
|
||||
if (uname(&info))
|
||||
return "";
|
||||
|
||||
return info.release;
|
||||
}
|
35
lib/System/Win32/Host.inc
Normal file
35
lib/System/Win32/Host.inc
Normal file
@ -0,0 +1,35 @@
|
||||
//===- llvm/System/Win32/Host.inc -------------------------------*- C++ -*-===//
|
||||
//
|
||||
// The LLVM Compiler Infrastructure
|
||||
//
|
||||
// This file is distributed under the University of Illinois Open Source
|
||||
// License. See LICENSE.TXT for details.
|
||||
//
|
||||
//===----------------------------------------------------------------------===//
|
||||
//
|
||||
// This file implements the Win32 Host support.
|
||||
//
|
||||
//===----------------------------------------------------------------------===//
|
||||
|
||||
#include "Win32.h"
|
||||
#include <cstdio>
|
||||
#include <string>
|
||||
|
||||
using namespace llvm;
|
||||
|
||||
std::string sys::osName() {
|
||||
return "Windows";
|
||||
}
|
||||
|
||||
std::string sys::osVersion() {
|
||||
OSVERSIONINFO osvi = { 0 };
|
||||
osvi.dwOSVersionInfoSize = sizeof(OSVERSIONINFO);
|
||||
|
||||
if (!GetVersionEx(&osvi))
|
||||
return "";
|
||||
|
||||
char buf[64];
|
||||
sprintf(buf, "%d.%d", osvi.dwMajorVersion, osvi.dwMinorVersion);
|
||||
|
||||
return buf;
|
||||
}
|
Loading…
Reference in New Issue
Block a user