lsh.c 1.15 KB
Newer Older
Niels Möller's avatar
Niels Möller committed
1 2 3 4 5
/* lsh.c
 *
 * client main program
 */

Niels Möller's avatar
Niels Möller committed
6 7 8 9
#include <stdio.h>
#include <locale.h>

#include "getopt.h"
Niels Möller's avatar
Niels Möller committed
10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33

#include "io.h"
#include "werror.h"
#include "client.h"

#define BLOCK_SIZE 32768

/* Global variable */
struct io_backend backend;

void usage() NORETURN;

void usage()
{
  exit(1);
}

int main(int argc, char **argv)
{
  char *host = NULL;
  char *port = "ssh";
  int option;

  struct sockaddr_in remote;
Niels Möller's avatar
Niels Möller committed
34 35 36 37

  /* For filtering messages. Could perhaps also be used when converting
   * strings to and from UTF8. */
  setlocale(LC_CTYPE, "");
Niels Möller's avatar
Niels Möller committed
38
  
Niels Möller's avatar
Niels Möller committed
39
  while((option = getopt(argc, argv, "dp:qv")) != -1)
Niels Möller's avatar
Niels Möller committed
40 41 42 43 44 45 46 47 48 49 50
    switch(option)
      {
      case 'p':
	port = optarg;
	break;
      case 'q':
	quiet_flag = 1;
	break;
      case 'd':
	debug_flag = 1;
	break;
Niels Möller's avatar
Niels Möller committed
51 52 53
      case 'v':
	verbose_flag = 1;
	break;
Niels Möller's avatar
Niels Möller committed
54 55 56 57 58 59 60 61 62 63 64
      default:
	usage();
      }

  if ( (argc - optind) < 1)
    usage();

  host = argv[optind];

  if (!get_inaddr(&remote, host, port, "tcp"))
    {
Niels Möller's avatar
Niels Möller committed
65
      fprintf(stderr, "No such host or service\n");
Niels Möller's avatar
Niels Möller committed
66 67 68
      exit(1);
    }

Niels Möller's avatar
Niels Möller committed
69
  io_connect(&backend, &remote, NULL,
Niels Möller's avatar
Niels Möller committed
70 71 72
	     make_client_callback(&backend,
				  "lsh - a free ssh",
				  BLOCK_SIZE));
Niels Möller's avatar
Niels Möller committed
73
  
Niels Möller's avatar
Niels Möller committed
74
  io_run(&backend);
Niels Möller's avatar
Niels Möller committed
75 76 77 78 79

  return 0;
}