Exemplo n.º 1
0
int main(int argc, char **argv)
{
  DskPattern *pattern;
  DskError *error = NULL;
  dsk_cmdline_init ("grep-like tool",
                    "Implement 'grep' using DskPattern",
		    "PATTERN [FILES...]",
		    DSK_CMDLINE_PERMIT_ARGUMENTS);

  dsk_cmdline_process_args (&argc, &argv);

  if (argc < 2)
    dsk_die ("missing pattern");
  DskPatternEntry entry = { argv[1], "nonnull" };
  pattern = dsk_pattern_compile (1, &entry, &error);
  if (pattern == NULL)
    dsk_die ("error compiling pattern: %s", error->message);

  unsigned buffer_size = isatty (STDOUT_FILENO) ? 0 : 8192;
  
  if (argc == 2)
    handle_fd (pattern, NULL, buffer_size, 0);
  else
    {
      int i;
      for (i = 2; i < argc; i++)
        {
          int fd = open (argv[i], O_RDONLY);
          if (fd < 0)
            dsk_die ("error opening %s: %s", argv[i], strerror (errno));
          handle_fd (pattern, argc == 3 ? NULL : argv[i], buffer_size, fd);
          close (fd);
        }
    }
  return 0;
}
int
main(int argc, char **argv)
{
  struct timeval start, end;
  int port=0;
  char *addr=NULL;
  int msg_size = 0;
  int fd=-1, i, newfd;
  int sec, usec;
  int number_iterations=0;
  socklen_t len;

  struct sockaddr_in sin;
  struct sockaddr_in from;

  while((i= getopt(argc,argv,"h:p:v?")) != EOF) {
    switch (i) {
    case 'v':
      verbose = 1;
      break;
    case 'h':
      addr = optarg;
      break;
    case 'p':
      port = strtol(optarg, NULL, 0);
      break;
    case '?':
    default:
      printf ("Use %s -h host -p port -i iterations -s msg_size \n",
	      argv[0]);
      return (-1);
    };
  }
  if (port == 0) {
      printf ("Use %s -p port [-h host] \n",
	      argv[0]);
      return (-1);
  }
  if(addr) {
    if (inet_pton(AF_INET, addr, (void *)&sin.sin_addr.s_addr) != 1) {
      printf("Address not parseable\n");
      return(-1);
    }
  } else {
    sin.sin_addr.s_addr = INADDR_ANY;
  }
  sin.sin_port = ntohs(port);
  sin.sin_family = AF_INET;
  sin.sin_len = sizeof(struct sockaddr_in);

  fd = socket(PF_INET, SOCK_DGRAM, IPPROTO_UDP);
  if( fd == -1) {
    printf("Can't open socket %d\n", errno);
    return(-1);
  }
  errno = 0;
  if(init_fd(&sin, fd)) {
    printf("Can't init fd errno:%d\n", errno);
    return (-1);
  }
  len = sizeof(from);
  handle_fd(fd);
  return (0);
}