minix/commands/ash/bltin/mkexpr

75 lines
1.6 KiB
Text
Raw Normal View History

2005-04-21 16:53:53 +02:00
# Copyright 1989 by Kenneth Almquist. All rights reserved.
#
# This file is part of ash. Ash is distributed under the terms specified
# by the Ash General Public License. See the file named LICENSE.
# All calls to awk removed, because Minix bawk is deficient. (kjb)
if [ $# -ne 2 ]
then
echo "Usage: $0 <unary_op> <binary_op>" >&2
exit 1
fi
unary_op="$1"
binary_op="$2"
2005-04-21 16:53:53 +02:00
exec > operators.h
i=0
sed -e '/^[^#]/!d' "$unary_op" "$binary_op" | while read line
2005-04-21 16:53:53 +02:00
do
set -$- $line
echo "#define $1 $i"
i=`expr $i + 1`
done
echo
echo "#define FIRST_BINARY_OP" `sed -e '/^[^#]/!d' "$unary_op" | wc -l`
2005-04-21 16:53:53 +02:00
echo '
#define OP_INT 1 /* arguments to operator are integer */
#define OP_STRING 2 /* arguments to operator are string */
#define OP_FILE 3 /* argument is a file name */
extern char *const unary_op[];
extern char *const binary_op[];
extern const char op_priority[];
extern const char op_argflag[];'
exec > operators.c
echo '/*
* Operators used in the expr/test command.
*/
#include <stddef.h>
#include "shell.h"
2005-04-21 16:53:53 +02:00
#include "operators.h"
char *const unary_op[] = {'
sed -e '/^[^#]/!d
s/[ ][ ]*/ /g
s/^[^ ][^ ]* \([^ ][^ ]*\).*/ "\1",/
' "$unary_op"
2005-04-21 16:53:53 +02:00
echo ' NULL
};
char *const binary_op[] = {'
sed -e '/^[^#]/!d
s/[ ][ ]*/ /g
s/^[^ ][^ ]* \([^ ][^ ]*\).*/ "\1",/
' "$binary_op"
2005-04-21 16:53:53 +02:00
echo ' NULL
};
const char op_priority[] = {'
sed -e '/^[^#]/!d
s/[ ][ ]*/ /g
s/^[^ ][^ ]* [^ ][^ ]* \([^ ][^ ]*\).*/ \1,/
' "$unary_op" "$binary_op"
2005-04-21 16:53:53 +02:00
echo '};
const char op_argflag[] = {'
sed -e '/^[^#]/!d
s/[ ][ ]*/ /g
s/^[^ ][^ ]* [^ ][^ ]* [^ ][^ ]*$/& 0/
s/^[^ ][^ ]* [^ ][^ ]* [^ ][^ ]* \([^ ][^ ]*\)/ \1,/
' "$unary_op" "$binary_op"
2005-04-21 16:53:53 +02:00
echo '};'