int main(int argc, char **argv) { lf_entry lfntry, lfarray[100]; unsigned char url0[1024], url1[1024], url2[1024], url3[1024], url4[1024], url5[1024], url6[1024], url7[1024], url8[1024]; long int i, num; if ( (argc != 2) || ((sscanf(argv[1], "%ld", &num)) != 1)) { fprintf(stderr, "Usage: gen_log size > outfile\n"); exit(1); } lfntry.version = 3; lfntry.crs = lfntry.cru = lfntry.srs = lfntry.sru = htonl(0); lfntry.sls = lfntry.slu = lfntry.cip = htonl(0); lfntry.cpt = htons(0); lfntry.sip = htonl(lf_aton("128.32.35.31")); lfntry.spt = htons(80); lfntry.cprg = lfntry.sprg = 0; lfntry.cims = lfntry.sexp = lfntry.slmd = htonl(0); lfntry.rhl = lfntry.rdl = htonl(0); lfarray[0] = lfarray[1] = lfarray[2] = lfarray[3] = lfarray[4] = lfarray[5] = lfarray[6] = lfarray[7] = lfarray[8] = lfntry; lfarray[0].urllen = htons(strlen("GET /~gribble/imagedir/testpics/cobra.gif HTTP/1.0")); sprintf((char *) url0, "GET /~gribble/imagedir/testpics/cobra.gif HTTP/1.0"); lfarray[0].url = url0; lfarray[1].urllen = htons(strlen("GET /~gribble/imagedir/testpics/jupiter5.gif HTTP/1.0")); sprintf((char *) url1, "GET /~gribble/imagedir/testpics/jupiter5.gif HTTP/1.0"); lfarray[1].url = url1; lfarray[2].urllen = htons(strlen("GET /~gribble/imagedir/testpics/kitty.gif HTTP/1.0")); sprintf((char *) url2, "GET /~gribble/imagedir/testpics/kitty.gif HTTP/1.0"); lfarray[2].url = url2; lfarray[3].urllen = htons(strlen("GET /~gribble/imagedir/testpics/vader.gif HTTP/1.0")); sprintf((char *) url3, "GET /~gribble/imagedir/testpics/vader.gif HTTP/1.0"); lfarray[3].url = url3; /* lfarray[4].urllen = htons(strlen("GET /~gribble/imagedir/testpics/6.jpg HTTP/1.0")); sprintf((char *) url4, "GET /~gribble/imagedir/testpics/6.jpg HTTP/1.0"); lfarray[4].url = url4; lfarray[5].urllen = htons(strlen("GET /~gribble/imagedir/testpics/4.jpg HTTP/1.0")); sprintf((char *) url5, "GET /~gribble/imagedir/testpics/4.jpg HTTP/1.0"); lfarray[5].url = url5; lfarray[6].urllen = htons(strlen("GET /~gribble/imagedir/testpics/26.jpg HTTP/1.0")); sprintf((char *) url6, "GET /~gribble/imagedir/testpics/26.jpg HTTP/1.0"); lfarray[6].url = url6; lfarray[7].urllen = htons(strlen("GET /~gribble/imagedir/testpics/17.jpg HTTP/1.0")); sprintf((char *) url7, "GET /~gribble/imagedir/testpics/17.jpg HTTP/1.0"); lfarray[7].url = url7; lfarray[8].urllen = htons(strlen("GET /~gribble/imagedir/testpics/12.jpg HTTP/1.0")); sprintf((char *) url8, "GET /~gribble/imagedir/testpics/12.jpg HTTP/1.0"); lfarray[8].url = url8;*/ for (i=0; i<num; i++) { if (lf_write(stdout, &(lfarray[i%4])) != 0) { fprintf(stderr, "lf_write failed\n"); exit(1); } } exit(0); }
static void print_itrace_format (lf *file, insn_mnemonic_entry *assembler) { /* pass=1 is fmt string; pass=2 is arguments */ int pass; /* print the format string */ for (pass = 1; pass <= 2; pass++) { const char *chp = assembler->format; chp++; /* skip the leading quote */ /* write out the format/args */ while (*chp != '\0') { if (chp[0] == '\\' && (chp[1] == '<' || chp[1] == '>')) { if (pass == 1) lf_putchr (file, chp[1]); chp += 2; } else if (chp[0] == '<' || chp[0] == '%') { /* parse [ "%" ... ] "<" [ func "#" ] param ">" */ const char *fmt; const char *func; int strlen_func; const char *param; int strlen_param; /* the "%" ... "<" format */ fmt = chp; while (chp[0] != '<' && chp[0] != '\0') chp++; if (chp[0] != '<') error (assembler->line, "Missing `<' after `%%'\n"); chp++; /* [ "func" # ] OR "param" */ func = chp; param = chp; while (chp[0] != '>' && chp[0] != '#' && chp[0] != '\0') chp++; strlen_func = chp - func; if (chp[0] == '#') { chp++; param = chp; while (chp[0] != '>' && chp[0] != '\0') chp++; } strlen_param = chp - param; if (chp[0] != '>') error (assembler->line, "Missing closing `>' in assembler string\n"); chp++; /* now process it */ if (pass == 2) lf_printf (file, ", \\\n"); if (strncmp (fmt, "<", 1) == 0) /* implicit long int format */ { if (pass == 1) lf_printf (file, "%%ld"); else { lf_printf (file, "(long) "); lf_write (file, param, strlen_param); } } else if (strncmp (fmt, "%<", 2) == 0) /* explicit format */ { if (pass == 1) lf_printf (file, "%%"); else lf_write (file, param, strlen_param); } else if (strncmp (fmt, "%s<", 3) == 0) /* string format */ { if (pass == 1) lf_printf (file, "%%s"); else { lf_printf (file, "%sstr_", options.module.global.prefix.l); lf_write (file, func, strlen_func); lf_printf (file, " (SD_, "); lf_write (file, param, strlen_param); lf_printf (file, ")"); } } else if (strncmp (fmt, "%lx<", 4) == 0) /* simple hex */ { if (pass == 1) lf_printf (file, "%%lx"); else { lf_printf (file, "(unsigned long) "); lf_write (file, param, strlen_param); } } else if (strncmp (fmt, "%08lx<", 6) == 0) /* simple hex */ { if (pass == 1) lf_printf (file, "%%08lx"); else { lf_printf (file, "(unsigned long) "); lf_write (file, param, strlen_param); } } else error (assembler->line, "Unknown assembler string format\n"); } else { if (pass == 1) lf_putchr (file, chp[0]); chp += 1; } } } lf_printf (file, ");\n"); }