########################################################################
# Copyright (c) 2003, 2015 IBM Corporation and others.
#
# This program and the accompanying materials 
# are made available under the terms of the Eclipse Public License 2.0
# which accompanies this distribution, and is available at
# https://www.eclipse.org/legal/epl-2.0/
#
# SPDX-License-Identifier: EPL-2.0
# 
# Contributors:
#     IBM Corporation - initial API and implementation
########################################################################

# This file must be UTF8 encoded.

#OS Aliases                             Description

AIX                                      # IBM
DigitalUnix                              # Compaq
embos                                    # Segger Embedded Software Solutions
Epoc32 SymbianOS                         # Symbian OS
FreeBSD                                  # Free BSD
HPUX hp-ux                               # Hewlett Packard
IRIX                                     # Sillicon Graphics
Linux                                    # Open source
MacOS "Mac OS"                   # Apple
MacOSX "Mac OS X"              # Apple 
NetBSD                                   # Open source
Netware                                  # Novell
OpenBSD                                  # Open source
OS2 OS/2                                 # IBM
QNX procnto                              # QNX Neutrino 2.1
Solaris SunOS                            # Sun
SunOS Solaris                            # Sun
VxWorks                                  # WindRiver Systems
Windows95 "Windows 95" Win95 Win32       # Microsoft
Windows98 "Windows 98" Win98 Win32       # Microsoft
WindowsNT "Windows NT" WinNT Win32       # Microsoft
WindowsCE "Windows CE" WinCE             # Microsoft
Windows2000 "Windows 2000" Win2000 Win32 # Microsoft
WindowsXP "Windows XP" WinXP Win32       # Microsoft
Windows2003 "Windows 2003" "Windows Server 2003" Win2003 Win32 # Microsoft
WindowsVista WinVista "Windows Vista" Win32 # Microsoft
Windows2008 "Windows 2008" "Windows Server 2008" Win2008 Win32 # Microsoft
WindowsServer2008 "Windows 2008" "Windows Server 2008" Win2008 Win32 # Microsoft
WindowsServer2008R2 "Windows 2008 R2" "Windows Server 2008 R2" Win2008R2 Win32 # Microsoft
WindowsServer2012 "Windows 2012" "Windows Server 2012" Win2012 Win32 # Microsoft
WindowsServer2012R2 "Windows 2012 R2" "Windows Server 2012 R2" Win2012R2 Win32 # Microsoft
WindowsServer2015 "Windows 2015" "Windows Server 2015" Win2015 Win32 # Microsoft
WindowsServer2015R2 "Windows 2015 R2" "Windows Server 2015 R2" Win2015R2 Win32 # Microsoft
WindowsServer2016 "Windows 2016" "Windows Server 2016" Win2016 Win32 # Microsoft
Windows7 "Windows 7" Win7 Win32 # Microsoft
Windows8 "Windows 8" "Windows 8.1" "Windows 8.2" "Windows 8.3" Win8 Win32 # Microsoft
Windows10 "Windows 10" Win10 Win32 # Microsoft
"Windows NT (unknown)" win32
