]> andersk Git - moira.git/blob - clients/mmoira/forms.awk
Abstracted the canonicalization of volume names (afs_vname)
[moira.git] / clients / mmoira / forms.awk
1 # $Header$
2
3 BEGIN           { numfields = 0; numforms = 0;
4                   printf("/* This file is machine generated, do not edit. */");
5                   printf("\n#include <Xm/Text.h>\n");
6                   printf("#include \"mmoira.h\"\n\n");
7                 }
8
9 /^;/            { next }
10 NF == 0         { next }
11 NF == 1 && $1 == "or" { next }
12
13 $1 == "{"       { formname = sprintf("form%d", numforms);
14                   formrealname = $2;
15                   numforms++;
16                   instructions = $3;
17                   for (i = 4; i <= NF; i++)
18                         instructions = sprintf("%s %s", instructions, $i);
19                   next
20                 }
21
22 $1 == "}"       { printf("static UserPrompt *%s_fields[] = {\n", formname);
23                   for (i = 0; i < numfields; i++)
24                         printf("\t&%s_fld%d,\n", formname, i);
25                   printf("\t(UserPrompt *)NULL\n};\n");
26                   printf("static EntryForm %s = {\n\t\"%s\",\n", \
27                         formname, formrealname);
28                   printf("\t\"%s\",\n\t%s_fields\n};\n", \
29                         instructions, formname);
30                   numfields = 0;
31                   next
32                 }
33
34 $NF == "s" || $NF == "S" \
35                 { printf("static UserPrompt %s_fld%d = { \"", \
36                         formname, numfields);
37                   for (i = 1; i < NF; i++) printf("%s ", $i);
38                   printf("\", FT_STRING };\n");
39                   numfields++;
40                   next
41                 }
42
43 $NF == "b" || $NF == "B" \
44                 { printf("static UserPrompt %s_fld%d = { \"", \
45                         formname, numfields);
46                   for (i = 1; i < NF; i++) printf("%s ", $i);
47                   printf("\", FT_BOOLEAN };\n");
48                   numfields++;
49                   next
50                 }
51
52 $NF == "k" || $NF == "K" \
53                 { printf("static UserPrompt %s_fld%d = { \"", \
54                         formname, numfields);
55                   for (i = 1; i < NF; i++) printf("%s ", $i);
56                   printf("\", FT_KEYWORD };\n");
57                   numfields++;
58                   next
59                 }
60
61                 { printf("forms syntax error on line %d of file %s:\n%s\n", \
62                         NR, FILENAME, $0);
63                   exit 1
64                 }
65
66 END             {
67                   printf("EntryForm *MoiraForms[] = {\n");
68                   for (i = 0; i < numforms; i++)
69                         printf("\t&form%d,\n", i);
70                   printf("\t(EntryForm *)NULL,\n};\n");
71                 }
This page took 0.082331 seconds and 5 git commands to generate.