|
|
1.1 root 1: HelloWorldDefs DEFINITIONS ::=
2:
3: %{
4: #include <stdio.h>
5:
6:
7: static char *text;
8: static char *myname = "hello_world";
9:
10:
11: void adios ();
12:
13: /* */
14:
15: /* ARGSUSED */
16:
17: main (argc, argv, envp)
18: int argc;
19: char **argv,
20: **envp;
21: {
22: PE pe;
23:
24: myname = argv[0];
25:
26: if (build_HelloWorldDefs_MyStruct (&pe, 1, NULL, NULLCP, NULLCP) == NOTOK)
27: adios (NULLCP, "encoder fails");
28: if (unbuild_HelloWorldDefs_MyStruct (pe, 1, NULLIP, NULLVP, NULLCP)
29: == NOTOK)
30: adios (NULLCP, "decoder fails");
31:
32: exit (0); /* NOTREACHED */
33: }
34: %}
35:
36: BEGIN
37:
38: ENCODER build
39:
40: MyStruct ::=
41: PrintableString [[s "Hello World" ]]
42:
43:
44: DECODER unbuild
45:
46: MyStruct ::=
47: PrintableString [[s text]]
48: %{ printf("%s\n", text); %}
49:
50: END
51:
52: %{
53:
54: /* ERRORS */
55:
56: #include <varargs.h>
57:
58:
59: #ifndef lint
60: void _advise ();
61:
62:
63: static void adios (va_alist)
64: va_dcl
65: {
66: va_list ap;
67:
68: va_start (ap);
69:
70: _advise (ap);
71:
72: va_end (ap);
73:
74: _exit (1);
75: }
76: #else
77: /* VARARGS */
78:
79: static void adios (what, fmt)
80: char *what,
81: *fmt;
82: {
83: adios (what, fmt);
84: }
85: #endif
86:
87:
88: #ifndef lint
89: static void advise (va_alist)
90: va_dcl
91: {
92: va_list ap;
93:
94: va_start (ap);
95:
96: _advise (ap);
97:
98: va_end (ap);
99: }
100:
101:
102: static void _advise (ap)
103: va_list ap;
104: {
105: char buffer[BUFSIZ];
106:
107: asprintf (buffer, ap);
108:
109: (void) fflush (stdout);
110:
111: fprintf (stderr, "%s: ", myname);
112: (void) fputs (buffer, stderr);
113: (void) fputc ('\n', stderr);
114:
115: (void) fflush (stderr);
116: }
117: #else
118: /* VARARGS */
119:
120: static void advise (what, fmt)
121: char *what,
122: *fmt;
123: {
124: advise (what, fmt);
125: }
126: #endif
127:
128: %}
This archive runs on limited infrastructure. Preserving old code on modern bandwidth. Automated agents are requested to crawl responsibly.