summaryrefslogtreecommitdiff
path: root/lib/libedit/makelist
diff options
context:
space:
mode:
authorOtto Moerbeek <otto@cvs.openbsd.org>2003-10-31 08:42:25 +0000
committerOtto Moerbeek <otto@cvs.openbsd.org>2003-10-31 08:42:25 +0000
commit6ff1c1765c2b4495f0292fe730d9bb9a5daef063 (patch)
treef9b79c5d3b01533c847610f8410f66661df68535 /lib/libedit/makelist
parent4c1c60ce562b0cf6d8cb6e2e49e2b53193359874 (diff)
Update to NetBSD libedit (from Oct 1, 2003), adding some string
cleaning and history bug fixes. The code includes GNU libreadline functionality, but the corresponding header files are not installed, since some libreadline functions are missing. There are some minor API changes, notably: old: EditLine *el_init(const char *, FILE *, FILE *); new: EditLine *el_init(const char *, FILE *, FILE *, FILE *); old: HistEvent *history(History *h, int op, ...); new: int history(History *h, HistEvent *ev, int op, ...); plus some changes in operation names. See editline(3) for details. Tested by djm@, mouring@, jmc@. ok deraadt@
Diffstat (limited to 'lib/libedit/makelist')
-rw-r--r--lib/libedit/makelist125
1 files changed, 99 insertions, 26 deletions
diff --git a/lib/libedit/makelist b/lib/libedit/makelist
index b56b4adaebf..a9a1b607139 100644
--- a/lib/libedit/makelist
+++ b/lib/libedit/makelist
@@ -1,6 +1,6 @@
#!/bin/sh -
-# $OpenBSD: makelist,v 1.5 2003/06/02 20:18:40 millert Exp $
-# $NetBSD: makelist,v 1.3 1997/01/11 06:48:00 lukem Exp $
+# $OpenBSD: makelist,v 1.6 2003/10/31 08:42:24 otto Exp $
+# $NetBSD: makelist,v 1.8 2003/03/10 21:21:10 christos Exp $
#
# Copyright (c) 1992, 1993
# The Regents of the University of California. All rights reserved.
@@ -16,7 +16,11 @@
# 2. Redistributions in binary form must reproduce the above copyright
# notice, this list of conditions and the following disclaimer in the
# documentation and/or other materials provided with the distribution.
-# 3. Neither the name of the University nor the names of its contributors
+# 3. All advertising materials mentioning features or use of this software
+# must display the following acknowledgement:
+# This product includes software developed by the University of
+# California, Berkeley and its contributors.
+# 4. Neither the name of the University nor the names of its contributors
# may be used to endorse or promote products derived from this software
# without specific prior written permission.
#
@@ -36,8 +40,8 @@
# makelist.sh: Automatically generate header files...
-AWK=/usr/bin/awk
-USAGE="Usage: $0 -h|-e|-fc|-fh|-bc|-bh <filenames>"
+AWK=awk
+USAGE="Usage: $0 -h|-e|-fc|-fh|-bc|-bh|-m <filenames>"
if [ "x$1" = "x" ]
then
@@ -51,6 +55,9 @@ shift
FILES="$@"
case $FLAG in
+
+# generate foo.h file from foo.c
+#
-h)
set - `echo $FILES | sed -e 's/\\./_/g'`
hdr="_h_`basename $1`"
@@ -63,18 +70,26 @@ case $FLAG in
pr = substr($2, 1, 2);
if (pr == "vi" || pr == "em" || pr == "ed") {
name = substr($2, 1, length($2) - 3);
- printf("protected el_action_t\t%-25.25s(EditLine *, int);\n", name);
+#
+# XXX: need a space between name and prototype so that -fc and -fh
+# parsing is much easier
+#
+ printf("protected el_action_t\t%s (EditLine *, int);\n", name);
}
}
END {
printf("#endif /* %s */\n", "'$hdr'");
- }';;
+ }'
+ ;;
+
+# generate help.c from various .c files
+#
-bc)
cat $FILES | $AWK '
BEGIN {
printf("/* Automatically generated file, do not edit */\n");
printf("#include \"sys.h\"\n#include \"el.h\"\n");
- printf("private struct el_bindings_t el_func_help[] = {\n");
+ printf("private const struct el_bindings_t el_func_help[] = {\n");
low = "abcdefghijklmnopqrstuvwxyz_";
high = "ABCDEFGHIJKLMNOPQRSTUVWXYZ_";
for (i = 1; i <= length(low); i++)
@@ -93,9 +108,9 @@ case $FLAG in
s = "-";
fname = fname s;
}
-
+
printf(" { %-30.30s %-30.30s\n","\"" fname "\",", uname ",");
- ok = 1;
+ ok = 1;
}
}
/^ \*/ {
@@ -110,41 +125,53 @@ case $FLAG in
END {
printf(" { NULL, 0, NULL }\n");
printf("};\n");
- printf("\nprotected el_bindings_t* help__get()");
+ printf("\nprotected const el_bindings_t* help__get()");
printf("{ return el_func_help; }\n");
- }';;
+ }'
+ ;;
+
+# generate help.h from various .c files
+#
-bh)
$AWK '
- BEGIN {
+ BEGIN {
printf("/* Automatically generated file, do not edit */\n");
printf("#ifndef _h_help_c\n#define _h_help_c\n");
- printf("protected el_bindings_t *help__get\t(void);\n");
+ printf("protected const el_bindings_t *help__get(void);\n");
printf("#endif /* _h_help_c */\n");
- }' /dev/null;;
+ }' /dev/null
+ ;;
+
+# generate fcns.h from various .h files
+#
-fh)
cat $FILES | $AWK '/el_action_t/ { print $3 }' | \
sort | tr '[a-z]' '[A-Z]' | $AWK '
- BEGIN {
+ BEGIN {
printf("/* Automatically generated file, do not edit */\n");
printf("#ifndef _h_fcns_c\n#define _h_fcns_c\n");
- count = 0;
+ count = 0;
}
- {
+ {
printf("#define\t%-30.30s\t%3d\n", $1, count++);
}
END {
printf("#define\t%-30.30s\t%3d\n", "EL_NUM_FCNS", count);
printf("typedef el_action_t (*el_func_t)(EditLine *, int);");
- printf("\nprotected el_func_t* func__get(void);\n");
+ printf("\nprotected const el_func_t* func__get(void);\n");
printf("#endif /* _h_fcns_c */\n");
- }';;
+ }'
+ ;;
+
+# generate fcns.c from various .h files
+#
-fc)
cat $FILES | $AWK '/el_action_t/ { print $3 }' | sort | $AWK '
BEGIN {
printf("/* Automatically generated file, do not edit */\n");
printf("#include \"sys.h\"\n#include \"el.h\"\n");
- printf("private el_func_t el_func[] = {");
+ printf("private const el_func_t el_func[] = {");
maxlen = 80;
needn = 1;
len = 0;
@@ -152,7 +179,7 @@ case $FLAG in
{
clen = 25 + 2;
len += clen;
- if (len >= maxlen)
+ if (len >= maxlen)
needn = 1;
if (needn) {
printf("\n ");
@@ -164,8 +191,12 @@ case $FLAG in
}
END {
printf("\n};\n");
- printf("\nprotected el_func_t* func__get() { return el_func; }\n");
- }';;
+ printf("\nprotected const el_func_t* func__get() { return el_func; }\n");
+ }'
+ ;;
+
+# generate editline.c from various .c files
+#
-e)
echo "$FILES" | tr ' ' '\012' | $AWK '
BEGIN {
@@ -175,8 +206,50 @@ case $FLAG in
}
{
printf("#include \"%s\"\n", $1);
- }';;
+ }'
+ ;;
+
+# generate man page fragment from various .c files
+#
+-m)
+ cat $FILES | $AWK '
+ BEGIN {
+ printf(".\\\" Section automatically generated with makelist\n");
+ printf(".Bl -tag -width 4n\n");
+ }
+ /\(\):/ {
+ pr = substr($2, 1, 2);
+ if (pr == "vi" || pr == "em" || pr == "ed") {
+ name = substr($2, 1, length($2) - 3);
+ fname = "";
+ for (i = 1; i <= length(name); i++) {
+ s = substr(name, i, 1);
+ if (s == "_")
+ s = "-";
+ fname = fname s;
+ }
+
+ printf(".It Ic %s\n", fname);
+ ok = 1;
+ }
+ }
+ /^ \*/ {
+ if (ok) {
+ for (i = 2; i < NF; i++)
+ printf("%s ", $i);
+ printf("%s.\n", $i);
+ ok = 0;
+ }
+ }
+ END {
+ printf(".El\n");
+ printf(".\\\" End of section automatically generated with makelist\n");
+ }'
+ ;;
+
*)
echo $USAGE 1>&2
- exit 1;;
+ exit 1
+ ;;
+
esac