From 532ab108fb9ef903011273b3f334e73ac9c63c39 Mon Sep 17 00:00:00 2001 From: Max Lv Date: Wed, 26 Dec 2012 18:42:23 +0800 Subject: [PATCH] fix the args --- jni/shadowsocks/local.c | 34 ++++++++++++++++++++++++++++------ 1 file changed, 28 insertions(+), 6 deletions(-) diff --git a/jni/shadowsocks/local.c b/jni/shadowsocks/local.c index 97de12d6..0fc91a28 100644 --- a/jni/shadowsocks/local.c +++ b/jni/shadowsocks/local.c @@ -534,13 +534,35 @@ static void accept_cb (EV_P_ ev_io *w, int revents) int main (int argc, char **argv) { - if (argc < 5) - return -1; + char *server = NULL; + char *remote_port = NULL; + char *port = NULL; + char *key = NULL; + int c; - const char *server = argv[1]; - const char *remote_port = argv[2]; - const char *port = argv[3]; - const char *key = argv[4]; + opterr = 0; + + while ((c = getopt (argc, argv, "s:p:l:k:")) != -1) { + switch (c) { + case 's': + server = optarg; + break; + case 'p': + remote_port = optarg; + break; + case 'l': + port = optarg; + break; + case 'k': + key = optarg; + break; + } + } + + if (server == NULL || remote_port == NULL || + port == NULL || key == NULL) { + exit(EXIT_FAILURE); + } /* Our process ID and Session ID */ pid_t pid, sid;