|
|
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.