示例#1
0
int parse_params(int argc, char **argv, const char **host, int *port, const char **user, const char **pass, const char **geometry, int *fullscreen, int *only_list_of_vm, int *one_vm, int *no_cert_check, int *restart_session, const char **nx_options, const char **client_cert, const char **client_key, int *twice, int *preselectedvm)
{
  int opt, error = 0, version = 0;
  const char *program = argv[0];
  char *endptr;

  *host = getenv(QVDHOST_ENV);
  *user = getenv(QVDLOGIN_ENV);
  *pass = getenv(QVDPASSWORD_ENV);

  while ((opt = getopt(argc, argv, "?dvrh:p:u:w:g:flonx:c:k:2s:")) != -1 )
    {
      switch (opt)
	{
	case '?':
	  error = 1;
	  break;
	case 'v':
	  version = 1;
	  break;
	case 'd':
	  qvd_set_debug(2);
	  break;
	case 'h':
	  *host = optarg;
	  break;
	case 'p':
	  errno = 0;
	  *port = (int) strtol(optarg, &endptr, 10);
	  if ((errno == ERANGE && (*port == LONG_MAX || *port == LONG_MIN))
	      || optarg == endptr)
	      *port = -1;
	  break;
	case 'u':
	  *user = optarg;
	  break;
	case 'w':
	  *pass = optarg;
	  break;
	case 'g':
	  *geometry = optarg;
	  break;
	case 'f':
	  *fullscreen = 1;
	  break;
	case 'l':
	  *only_list_of_vm = 1;
	  break;
	case 'o':
	  *one_vm = 1;
	  break;
	case 'n':
	  *no_cert_check = 1;
	  break;
	case 'x':
	  *nx_options = optarg;
	  break;
	case 'c':
	  *client_cert = optarg;
	  break;
	case 'k':
	  *client_key = optarg;
	  break;
        case 'r':
          *restart_session = 1;
          break;
        case '2':
          *twice = 1;
          break;
        case 's':
          *preselectedvm = (int) strtol(optarg, &endptr, 10);
	  if ((errno == ERANGE && (*preselectedvm == LONG_MAX || *preselectedvm == LONG_MIN))
	      || optarg == endptr)
	    {
	      fprintf(stderr, "Ignoring preselected parameter -s, unable to parse <%s>\n", optarg);
	      *preselectedvm = 0;
	    }
          break;
	default:
	  fprintf(stderr, "Parameter not recognized <%c>\n", opt);
	  error = 1;
	}
    }

  if (error) {
    help(program);
    exit(0);
  }

  if (version) {
    printf("%s\nChangelog:\n%s", qvd_get_version_text(), qvd_get_changelog());
    exit(0);
  }
  if (*host == NULL)
    {
      fprintf(stderr, "The host paramter -h is required\n");
      error = 1;
    }
  if (*user == NULL)
    {
      fprintf(stderr, "The user paramter -u is required\n");
      error = 1;
    }
  if (*pass == NULL)
    {
      fprintf(stderr, "The password paramter -w is required\n");
      error = 1;
    }

  if (*port < 1 || *port > 65535)
    {
      fprintf(stderr, "The port parameter must be between 1 and 65535\n");
      error = 1;
    }

  if (*client_cert != NULL || *client_key != NULL)
    {

      if (*client_cert == NULL)
	{
	  fprintf(stderr, "If you specify -k then you must specify also -c\n");
	  error = 1;
	}
      else
	{
	  if (access(*client_cert, R_OK) != 0)
	    {
	      fprintf(stderr, "Cert file %s is not accessible: %s\n", *client_cert, strerror(errno));
	      error = 1;
	    }
	}

      if (*client_key == NULL)
	{
	  fprintf(stderr, "If you specify -c then you must specify also -k\n");
	  error = 1;
	}
      else
	{
	  if (access(*client_key, R_OK) != 0)
	    {
	      fprintf(stderr, "key file %s is not accessible: %s\n", *client_key, strerror(errno));
	      error = 1;
	    }
	}
    }

  if (error)
    help(program);

  return error;
}
  qvd_printf("After CallVoidMethod\n");
  (*env)->DeleteLocalRef(env, message_str);

  return 1;
}



/*
 * Class:     com_theqvd_client_jni_QvdclientWrapper
 * Method:    qvd_c_get_version_text
 * Signature: ()Ljava/lang/String;
 */
JNIEXPORT jstring JNICALL Java_com_theqvd_client_jni_QvdclientWrapper_qvd_1c_1get_1version_1text
(JNIEnv *env, jclass class) {
  const char *version = qvd_get_version_text();
  return (*env)->NewStringUTF(env, version);
}

/*
 * Class:     com_theqvd_client_jni_QvdclientWrapper
 * Method:    qvd_c_get_version
 * Signature: ()I
 */
JNIEXPORT jint JNICALL Java_com_theqvd_client_jni_QvdclientWrapper_qvd_1c_1get_1version
(JNIEnv *env, jclass class) {
  jint version;
  version = qvd_get_version();
  return version;
}