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; }