generate_server_switch (serverfile, serverhdrfile);
generate_server_switch (serverfile.stream, serverhdrfile.stream); generate_tcpdump_patches (td_file.stream, filename);
main (int argc, char **argv){    int ret;    FILE *foo;    char tmp_filename[64];    char *cpp = CPP;    int arglen;    int i;    char *arg;    char *filename;    if (argc < 2)	errx (1, "Usage: %s [cpp-arguments] filename", argv[0]);    snprintf (tmp_filename, sizeof(tmp_filename),	      "ydr_tmp_%u.c", (unsigned)getpid());    foo = fopen (tmp_filename, "w");    if (foo == NULL)	errx (1, "Cannot fopen %s for writing", tmp_filename);    filename = copy_basename (argv[argc - 1]);    fprintf (foo, "#include \"%s\"\n", argv[argc - 1]);    fclose (foo);    initsym ();    init_generate (filename);    arglen = strlen(cpp) + 1;    for (i = 1; i < argc - 1; ++i) {	arglen += strlen (argv[i]) + 1;    }    arglen += strlen(tmp_filename) + 1;    arg = malloc (arglen);    if (arg == NULL) {	unlink (tmp_filename);	errx (1, "malloc: out of memory");    }    strcpy (arg, cpp);    strcat (arg, " ");    for (i = 1; i < argc - 1; ++i) {	strcat (arg, argv[i]);	strcat (arg, " ");    }    strcat (arg, tmp_filename);    yyin = popen (arg, "r");    free (arg);    ret = yyparse ();    generate_server_switch (serverfile, serverhdrfile);    pclose (yyin);    close_generator (filename);    unlink (tmp_filename);    return ret;}