1#!/bin/sh
2#
3# Functions shared by several scripts
4#
5# Copyright (c) 2013-2016 MegaGlest Team under GNU GPL v3.0+
6
7function detect_system {
8# Determine distro title, release, codename
9#
10# Input:
11#   -/-
12#
13# Output:
14#   No direct output, but the following variables are set:
15#   lsb: whether (1) or not (0) system information was retrieved from 'lsb_release'
16#   distribution: detected Linux distribution (string)
17#   release: detected distribution release / version (string)
18#   codename: codename of the detected Linux distribution (string)
19#   architecture: detected machine architecture (string)
20
21	if [ "$(which lsb_release)" = "" ]; then
22		lsb=0
23		release='unknown release'
24		if [ -e "/etc/os-release" ]; then
25			distribution="$(cat "/etc/os-release" | grep '^ID=' | awk -F '=' '{print $2}' \
26			    | awk '{print toupper(substr($0,1,1))substr($0,2)}')"
27			codename="$(cat "/etc/os-release" | grep '^PRETTY_NAME=' | awk -F '"' '{print $2}')"
28			# example output ^ on debian testing: "Debian GNU/Linux stretch/sid"
29		elif [ -e /etc/debian_version ]; then
30			distribution='Debian'
31			codename="$(cat /etc/debian_version)"
32		elif [ -e /etc/SuSE-release ]; then
33			distribution='SuSE'
34			codename="$(cat /etc/SuSE-release)"
35		elif [ -e /etc/redhat-release ]; then
36			if [ -e /etc/fedora-release ]; then
37				distribution='Fedora'
38				codename="$(cat /etc/fedora-release)"
39			else
40				distribution='Redhat'
41				codename="$(cat /etc/redhat-release)"
42			fi
43		elif [ -e /etc/fedora-release ]; then
44			distribution='Fedora'
45			codename="$(cat /etc/fedora-release)"
46		elif [ -e /etc/mandrake-release ]; then
47			distribution='Mandrake'
48			codename="$(cat /etc/mandrake-release)"
49		else
50			distribution='unknown distribution'
51			codename='unknown codename'
52		fi
53	else
54		lsb=1
55		distribution="$(lsb_release -i | awk -F':' '{ gsub(/^[ \t]*/,"",$2); print $2 }')"
56		release="$(lsb_release -r | awk -F':' '{ gsub(/^[  \t]*/,"",$2); print $2 }')"
57		codename="$(lsb_release -c | awk -F':' '{ gsub(/^[ \t]*/,"",$2); print $2 }')"
58
59		# Some distribution examples:
60		#
61		# OpenSuSE 11.4
62		#   LSB Version:    n/a
63		#   Distributor ID: SUSE LINUX
64		#   Description:    openSUSE 11.4 (x86_64)
65		#   Release:        11.4
66		#   Codename:       Celadon
67		#
68		# OpenSuSE 12.1
69		#   LSB support:  1
70		#   Distribution: SUSE LINUX
71		#   Release:      12.1
72		#   Codename:     Asparagus
73		#
74		# Arch
75		#   LSB Version:    n/a
76		#   Distributor ID: archlinux
77		#   Description:    Arch Linux
78		#   Release:        rolling
79		#   Codename:       n/a
80		#
81		# Ubuntu 12.04
82		#   Distributor ID: Ubuntu
83		#   Description:    Ubuntu 12.04 LTS
84		#   Release:        12.04
85                #   Codename:       precise
86	fi
87	architecture="$(uname -m)"
88}
89