diff options
author | P. J. McDermott <pj@pehjota.net> | 2015-12-07 12:07:15 (EST) |
---|---|---|
committer | P. J. McDermott <pj@pehjota.net> | 2015-12-07 12:07:15 (EST) |
commit | 34a77f7822126263fed5c72aedaa65b58fee94ac (patch) | |
tree | a3404e611672f64126298e2f0f6d3398b014851e /src/main.sh | |
parent | 84f3cccfb57fc8270b2ae14f0adf2c2ff24cc69b (diff) | |
parent | 41f638c961d5c7832e2b18a9f2e45a09b54dc53e (diff) |
Merge branch 'feature/use-shld'
Diffstat (limited to 'src/main.sh')
-rw-r--r-- | src/main.sh | 93 |
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 +} |