Some more fixes for the list management.
[screen-lua.git] / src / comm.sh
blob4fc8cb282f639a1da486d70451ff2426b059de3c
1 #! /bin/sh
3 if test -z "$AWK"; then
4 AWK=awk
5 fi
6 if test -z "$CC"; then
7 CC=cc
8 fi
9 if test -z "$srcdir"; then
10 srcdir=.
13 LC_ALL=C
14 export LC_ALL
16 rm -f comm.h
17 cat << EOF > comm.h
19 * This file is automagically created from comm.c -- DO NOT EDIT
22 struct comm
24 char *name;
25 int flags;
26 #ifdef MULTIUSER
27 AclBits userbits[ACL_BITS_PER_CMD];
28 #endif
31 #define ARGS_MASK (3)
33 #define ARGS_0 (0)
34 #define ARGS_1 (1)
35 #define ARGS_2 (2)
36 #define ARGS_3 (3)
38 #define ARGS_PLUS1 (1<<2)
39 #define ARGS_PLUS2 (1<<3)
40 #define ARGS_PLUS3 (1<<4)
41 #define ARGS_ORMORE (1<<5)
43 #define NEED_FORE (1<<6) /* this command needs a fore window */
44 #define NEED_DISPLAY (1<<7) /* this command needs a display */
45 #define NEED_LAYER (1<<8) /* this command needs a layer */
46 #define CAN_QUERY (1<<9) /* this command can be queried, i.e. used with -Q to
47 get back a result to stdout */
49 #define ARGS_01 (ARGS_0 | ARGS_PLUS1)
50 #define ARGS_02 (ARGS_0 | ARGS_PLUS2)
51 #define ARGS_12 (ARGS_1 | ARGS_PLUS1)
52 #define ARGS_23 (ARGS_2 | ARGS_PLUS1)
53 #define ARGS_24 (ARGS_2 | ARGS_PLUS2)
54 #define ARGS_34 (ARGS_3 | ARGS_PLUS1)
55 #define ARGS_012 (ARGS_0 | ARGS_PLUS1 | ARGS_PLUS2)
56 #define ARGS_0123 (ARGS_0 | ARGS_PLUS1 | ARGS_PLUS2 | ARGS_PLUS3)
57 #define ARGS_123 (ARGS_1 | ARGS_PLUS1 | ARGS_PLUS2)
58 #define ARGS_124 (ARGS_1 | ARGS_PLUS1 | ARGS_PLUS3)
59 #define ARGS_1234 (ARGS_1 | ARGS_PLUS1 | ARGS_PLUS2 | ARGS_PLUS3)
61 struct action
63 int nr;
64 char **args;
65 int *argl;
66 int quiet; /* Suppress (currently unused)
67 0x01 - Error message
68 0x02 - Normal message
72 #define RC_ILLEGAL -1
74 EOF
75 $AWK < ${srcdir}/comm.c >> comm.h '
76 /^ [{] ".*/ { if (old > $2) {
77 printf("***ERROR: %s <= %s !!!\n\n", $2, old);
78 exit 1;
80 old = $2;
83 $CC -E -I. -I${srcdir} ${srcdir}/comm.c > comm.cpp
84 sed < comm.cpp \
85 -n \
86 -e '/^ *{ "/y/abcdefghijklmnopqrstuvwxyz/ABCDEFGHIJKLMNOPQRSTUVWXYZ/' \
87 -e '/^ *{ "/s/^ *{ "\([^"]*\)".*/\1/p' \
88 | $AWK '
89 /.*/ { printf "#define RC_%s %d\n",$0,i++;
91 END { printf "\n#define RC_LAST %d\n",i-1;
93 ' >> comm.h
94 chmod a-w comm.h
95 rm -f comm.cpp