summaryrefslogtreecommitdiffstats
path: root/src/main.sh
diff options
context:
space:
mode:
Diffstat (limited to 'src/main.sh')
-rw-r--r--src/main.sh93
1 files changed, 93 insertions, 0 deletions
diff --git a/src/main.sh b/src/main.sh
new file mode 100644
index 0000000..d0ca8f7
--- /dev/null
+++ b/src/main.sh
@@ -0,0 +1,93 @@
+# Main program file
+#
+# Copyright (C) 2013, 2014 Patrick "P. J." McDermott
+#
+# This file is part of the ProteanOS Development Kit.
+#
+# The ProteanOS Development Kit is free software: you can redistribute
+# it and/or modify it under the terms of the GNU General Public License
+# as published by the Free Software Foundation, either version 3 of the
+# License, or (at your option) any later version.
+#
+# The ProteanOS Development Kit is distributed in the hope that it
+# will be useful, but WITHOUT ANY WARRANTY; without even the implied
+# warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
+# See the GNU General Public License for more details.
+#
+# You should have received a copy of the GNU General Public License
+# along with the ProteanOS Development Kit. If not, see
+# <http://www.gnu.org/licenses/>.
+
+set -u
+
+# Constant global variables
+HT=' '
+LF='
+'
+OPTSTRING='hV'
+
+if [ -f "${0%/*}/../.builddirstamp" ]; then
+ in_place=true
+ builddir="${0%/*}/.."
+elif [ -f "${0%/*}/.builddirstamp" ]; then
+ in_place=true
+ builddir="${0%/*}"
+else
+ in_place=false
+ builddir=''
+fi
+
+main()
+{
+ local cmd=
+
+ load_locale
+ init_vardata
+
+ if ! get_options "${@}"; then
+ cmd_help_main >&2
+ exit 1
+ fi
+ shift $(($OPTIND - 1))
+
+ if ${opt_h:-false}; then
+ cmd='help'
+ elif ${opt_V:-false}; then
+ cmd='version'
+ elif [ ${#} -lt 1 ]; then
+ cmd_help_main >&2
+ exit 1
+ else
+ cmd="${1}"
+ shift
+ fi
+
+ srand $(expr ${$} + $(date '+%s'))
+
+ case "${cmd}" in
+ 'help'|'version') ;;
+ *) check_uid || error 1 "$(get_msg 'uid_0_req')";;
+ esac
+ run_cmd "${cmd}" "${@}"
+
+ return ${?}
+}
+
+check_uid()
+{
+ local uname_s=
+ local uid=
+
+ uname_s="$( (uname -s) 2>/dev/null)" || uname_s='unknown'
+ uid="$(id -u)"
+
+ case "${uname_s}" in
+ 'Linux')
+ if [ ${uid} -ne 0 ]; then
+ return 1
+ fi
+ ;;
+ esac
+
+ return 0
+}