others
#!/bin/sh
#$Id$
#Copyright (c) 2011-2015 Pierre Pronchery <khorben@defora.org>
#This file is part of DeforaOS Unix others
#This program 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, version 3 of the License.
#
#This program 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 this program. If not, see <http://www.gnu.org/licenses/>.
#variables
YEAR=$(date '+%Y')
#functions
#includes
_includes()
{
BASENAME="$1"
PROGRAM="$2"
cat << EOF
/* $BASENAME */
#undef PROGNAME
#define main _${PROGRAM}_main
#define _Prefs _${PROGRAM}_Prefs
#define Prefs ${PROGRAM}_Prefs
#define _prefs_parse _${PROGRAM}_prefs_parse
#include "../src/$BASENAME"
#undef main
#undef _Prefs
#undef Prefs
#undef _prefs_parse
#undef _${PROGRAM}
EOF
}
#toolbox
_toolbox()
{
target="$1"
cat > "$target" << EOF
/* \$Id\$ */
/* Copyright (c) 2011-$YEAR Pierre Pronchery <khorben@defora.org> */
/* This file is part of DeforaOS Unix others */
/* This program 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, version 3 of the License.
*
* This program 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 this program. If not, see <http://www.gnu.org/licenses/>. */
#include "otherbox.h"
EOF
for i in ../src/*.c; do
BASENAME=$(basename "$i")
PROGRAM=${BASENAME%%.c}
#there is an exception
[ "$PROGRAM" = "utmpx" ] && continue
_includes "$BASENAME" "$PROGRAM"
CALLS="$CALLS
{ \"$PROGRAM\", _${PROGRAM}_main },"
done >> "$target"
cat >> "$target" << EOF
Call calls[] =
{
$CALLS
{ NULL, NULL }
};
EOF
}
#main
clean=0
while getopts "cP:" name; do
case "$name" in
c)
clean=1
;;
P)
#we can ignore it
;;
?)
_usage
exit $?
;;
esac
done
shift $(($OPTIND - 1))
if [ $# -ne 1 ]; then
_usage
exit $?
fi
[ $clean -ne 0 ] && exit 0
target="$1"
_toolbox "$target"