-# add_str_const(name, value)
-add_str_const() {
- PSI_CONSTS="{PSI_T_STRING, \"string\", \"psi\\\\$1\", $2, PSI_T_QUOTED_STRING}, $PSI_CONSTS"
+# psi_add_str_const(name, value)
+# Add a pre-defined string constant to $PSI_CONSTS
+psi_add_str_const() {
+ grep -q "\"psi\\\\\\\\$1\"" $PSI_CONSTS \
+ || cat >>$PSI_CONSTS <<EOF
+ {PSI_T_STRING, "string", "psi\\$1", $2, PSI_T_QUOTED_STRING},
+EOF
}
-# add_int_const(name, value)
-add_int_const() {
- PSI_CONSTS="{PSI_T_INT, \"int\", \"psi\\\\$1\", \"$2\", PSI_T_NUMBER}, $PSI_CONSTS"
+
+# psi_add_int_const(name, value)
+# Add a pre-defined int constant to $PSI_CONSTS
+psi_add_int_const() {
+ grep -q "\"psi\\\\\\\\$1\"" $PSI_CONSTS \
+ || cat >>$PSI_CONSTS <<EOF
+ {PSI_T_INT, "int", "psi\\\\$1", "$2", PSI_T_NUMBER},
+EOF
}
+
dnl PSI_CONST(const name, type)
+dnl Check the value of a str/int constant and add it to the list of pre-defined
+dnl constants.
AC_DEFUN(PSI_CONST, [
AC_CACHE_CHECK(value of $1, psi_cv_const_$1, [
psi_const_val=
then
case $2 in
str*)
- add_str_const "$1" "$psi_cv_const_$1"
+ psi_add_str_const "$1" "$psi_cv_const_$1"
;;
int)
- add_int_const "$1" "$psi_cv_const_$1"
+ psi_add_int_const "$1" "$psi_cv_const_$1"
;;
esac
fi