コード例 #1
0
ファイル: gen_log.c プロジェクト: armandofox/glomop
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);
}
コード例 #2
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");
}