Ejemplo n.º 1
0
static ini_sContext *
createContext (int argc, char **argv)
{
  int i, j;
  ini_sContext *cp;
  pwr_tStatus sts;

  if ( argc > 1 && strcmp( argv[1], "--version") == 0) {
    system( "cat $pwr_exe/rt_version.dat");
    exit(1);
  }
  if (!(cp = ini_CreateContext(&sts))) {
    fprintf(stderr, "%s: could not allocate context\n", argv[0]);
    exit(1);
  }

  for ( i = 1; i < argc; i++) {
    if ( argv[i][0] == '-') {
      int i_incr = 0;
      for ( j = 1; 
	    argv[i][j] != 0 && argv[i][j] != ' ' && argv[i][j] != '	';
	    j++) {
	switch ( argv[i][j]) {
	case 'a':
	  if ( i + 1 >= argc ||
	       !(argv[i][j+1] == ' ' || argv[i][j+1] != '	')) {
	    usage( argv[0]);
	    exit(0);
	  }
	  cp->flags.b.applfile = 1;
	  strcpy(cp->applfile.name, argv[i+1]);
	  i++;	    
	  i_incr = 1;
	  break;
	case 'b':
	  if ( i + 1 >= argc ||
	       !(argv[i][j+1] == ' ' || argv[i][j+1] != '	')) {
	    usage( argv[0]);
	    exit(0);
	  }
	  cp->flags.b.bootfile = 1;
	  strcpy(cp->bootfile.name, argv[i+1]);
	  break;
	case 'c':
	  if ( i + 1 >= argc ||
	       !(argv[i][j+1] == ' ' || argv[i][j+1] != '	')) {
	    usage( argv[0]);
	    exit(0);
	  }
	  strcpy(cp->console, argv[i+1]);
	  i++;	    
	  i_incr = 1;
	  break;
	case 'd':
	  if ( i + 1 >= argc ||
	       !(argv[i][j+1] == ' ' || argv[i][j+1] != '	')) {
	    usage( argv[0]);
	    exit(0);
	  }
	  strcpy(cp->dir, argv[i+1]);
	  i++;	    
	  i_incr = 1;
	  break;
	case 'e':
	  cp->flags.b.ignoreError = 1;
	  break;
	case 'f':
	  cp->flags.b.ignoreFatal = 1;
	  break;
	case 'h':
	  if ( i + 1 >= argc ||
	       !(argv[i][j+1] == ' ' || argv[i][j+1] != '	')) {
	    usage( argv[0]);
	    exit(0);
	  }
	  cp->flags.b.hostname = 1;
	  strcpy(cp->hostname, argv[i+1]);
	  i++;	    
	  i_incr = 1;
	  break;
	case 'i':
	  cp->flags.b.interactive = 1;
	  break;
	case 'n':
	  if ( i + 1 >= argc ||
	       !(argv[i][j+1] == ' ' || argv[i][j+1] != '	')) {
	    usage( argv[0]);
	    exit(0);
	  }
	  cp->flags.b.nodename = 1;
	  strcpy(cp->nodename, argv[i+1]);
	  i++;	    
	  i_incr = 1;
	  break;
	case 'p':
	  if ( i + 1 >= argc ||
	       !(argv[i][j+1] == ' ' || argv[i][j+1] != '	')) {
	    usage( argv[0]);
	    exit(0);
	  }
	  cp->flags.b.plcfile = 1;
	  cp->plcfile = (ini_sFile *) calloc( 1, sizeof(ini_sFile)); 
	  cp->plcfile_cnt = 1;
	  strcpy(cp->plcfile[0].name, argv[i+1]);
	  cp->plcfile[0].logOpenFail = errh_LogInfo;
	  i++;	    
	  i_incr = 1;
	  break;
	case 'q':
	  if ( i + 1 >= argc ||
	       !(argv[i][j+1] == ' ' || argv[i][j+1] != '	')) {
	    usage( argv[0]);
	    exit(0);
	  }
	  cp->flags.b.busid = 1;
	  cp->busid =  atoi(argv[i+1]);
	  break;
	case 'r':
	  cp->flags.b.restart = 1;
	  cp->flags.b.interactive = 1;
	  break;
	case 's':
	  cp->flags.b.stop = 1;
	  break;
	case 'v':
	  cp->flags.b.verbose = 1;
	  break;
	case 'w':
	  cp->flags.b.ignoreWarning = 1;
	  break;
	case 'A':
	  if ( i + 1 >= argc ||
	       !(argv[i][j+1] == ' ' || argv[i][j+1] != '	')) {
	    usage( argv[0]);
	    exit(0);
	  }
	  cp->flags.b.aliasfile = 1;
	  strcpy(cp->aliasfile.name, argv[i+1]);
	  i++;	    
	  i_incr = 1;
	  break;
	case '?':
	  usage(argv[0]);
	  break;
	default:
	  usage(argv[0]);
	  exit(0);
	}
	if ( i_incr)
	  break;
      }
    }
  }

  return cp;
}
Ejemplo n.º 2
0
static ini_sContext *
createContext (int argc, char **argv)
{
  int c;
  extern char *optarg;
  extern int optind;
#if 1
  extern int optind;
#endif
  ini_sContext *cp;
  pwr_tStatus sts;
#if defined(OS_LYNX) || defined(OS_LINUX)
  char *options = "a:b:c:d:efg:hin:p:q:rsu:vwA:H:V";
#else
  char *options = "a:b:d:efhin:p:q:rvwA:H:V";
#endif

#if 0
  extern int opterr;
  opterr = 0;
#endif
  optind = 0;

  if ( argc > 1 && strcmp( argv[1], "--version") == 0) {
    system( "cat $pwr_exe/rt_version.dat");
    exit(1);
  }
  if (!(cp = ini_CreateContext(&sts))) {
    fprintf(stderr, "%s: could not allocate context\n", argv[0]);
    exit(1);
  }

  while ((c = getopt(argc, argv, options)) != -1) {
    switch (c) {
    case 'a':
      cp->flags.b.applfile = 1;
      strcpy(cp->applfile.name, optarg);
      break;
    case 'c':
      strcpy(cp->console, optarg);
      break;
    case 'd':
      strcpy(cp->dir, optarg);
      break;
    case 'e':
      cp->flags.b.ignoreError = 1;
      break;
    case 'f':
      cp->flags.b.ignoreFatal = 1;
      break;
    case 'h':
      cp->flags.b.hostname = 1;
      strcpy(cp->hostname, optarg);
      break;
    case 'i':
      cp->flags.b.interactive = 1;
      break;
    case 'n':
      cp->flags.b.nodename = 1;
      strcpy(cp->nodename, optarg);
      break;
    case 'q':
      cp->flags.b.busid = 1;
      cp->busid =  atoi(optarg);
      break;
    case 'r':
      cp->flags.b.restart = 1;
      cp->flags.b.interactive = 1;
      break;
    case 's':
      cp->flags.b.stop = 1;
      break;
    case 'v':
      cp->flags.b.verbose = 1;
      break;
    case 'w':
      cp->flags.b.ignoreWarning = 1;
      break;
    case 'A':
      cp->flags.b.aliasfile = 1;
      strcpy(cp->aliasfile.name, optarg);
      break;
    case '?':
      usage(argv[0]);
      break;
    }
  }

  return cp;
}