diff options
author | dscho <dscho> | 2001-11-14 15:12:40 +0000 |
---|---|---|
committer | dscho <dscho> | 2001-11-14 15:12:40 +0000 |
commit | b9a8399219b6b8d86d7eca91c4e2cee735995a8a (patch) | |
tree | a5bd4b25c911f2a6d56c6c8d4293ff93546e582b | |
parent | b2253e36574fed514fd2c256cc0cbc7b9729733e (diff) | |
download | libtdevnc-b9a8399219b6b8d86d7eca91c4e2cee735995a8a.tar.gz libtdevnc-b9a8399219b6b8d86d7eca91c4e2cee735995a8a.zip |
separated argument handling from main.c
-rw-r--r-- | cargs.c | 114 |
1 files changed, 114 insertions, 0 deletions
@@ -0,0 +1,114 @@ +/* + * This parses the command line arguments. It was seperated from main.c by + * Justin Dearing <jdeari01@longisland.poly.edu>. + */ + +/* + * LibVNCServer (C) 2001 Johannes E. Schindelin <Johannes.Schindelin@gmx.de> + * Original OSXvnc (C) 2001 Dan McGuirk <mcguirk@incompleteness.net>. + * Original Xvnc (C) 1999 AT&T Laboratories Cambridge. + * All Rights Reserved. + * + * see GPL (latest version) for full details + */ + +#include "rfb.h" + +void +rfbUsage(void) +{ + fprintf(stderr, "-rfbport port TCP port for RFB protocol\n"); + fprintf(stderr, "-rfbwait time max time in ms to wait for RFB client\n"); + fprintf(stderr, "-rfbauth passwd-file use authentication on RFB protocol\n" + " (use 'storepasswd' to create a password file)\n"); + fprintf(stderr, "-deferupdate time time in ms to defer updates " + "(default 40)\n"); + fprintf(stderr, "-desktop name VNC desktop name (default \"LibVNCServer\")\n"); + fprintf(stderr, "-alwaysshared always treat new clients as shared\n"); + fprintf(stderr, "-nevershared never treat new clients as shared\n"); + fprintf(stderr, "-dontdisconnect don't disconnect existing clients when a " + "new non-shared\n" + " connection comes in (refuse new connection " + "instead)\n"); + exit(1); +} + +void +rfbProcessArguments(rfbScreenInfoPtr rfbScreen,int* argc, char *argv[]) +{ + int i,i1; + + for (i = i1 = 1; i < *argc; i++) { + if (strcmp(argv[i], "-help") == 0) { + rfbUsage(); + exit(1); + } else if (strcmp(argv[i], "-rfbport") == 0) { /* -rfbport port */ + if (i + 1 >= *argc) rfbUsage(); + rfbScreen->rfbPort = atoi(argv[++i]); + } else if (strcmp(argv[i], "-rfbwait") == 0) { /* -rfbwait ms */ + if (i + 1 >= *argc) rfbUsage(); + rfbScreen->rfbMaxClientWait = atoi(argv[++i]); + } else if (strcmp(argv[i], "-rfbauth") == 0) { /* -rfbauth passwd-file */ + if (i + 1 >= *argc) rfbUsage(); + rfbScreen->rfbAuthPasswdData = argv[++i]; + } else if (strcmp(argv[i], "-deferupdate") == 0) { /* -desktop desktop-name */ + if (i + 1 >= *argc) rfbUsage(); + rfbScreen->rfbDeferUpdateTime = atoi(argv[++i]); + } else if (strcmp(argv[i], "-desktop") == 0) { /* -desktop desktop-name */ + if (i + 1 >= *argc) rfbUsage(); + rfbScreen->desktopName = argv[++i]; + } else if (strcmp(argv[i], "-alwaysshared") == 0) { + rfbScreen->rfbAlwaysShared = TRUE; + } else if (strcmp(argv[i], "-nevershared") == 0) { + rfbScreen->rfbNeverShared = TRUE; + } else if (strcmp(argv[i], "-dontdisconnect") == 0) { + rfbScreen->rfbDontDisconnect = TRUE; + } else if (strcmp(argv[i], "-width") == 0) { + rfbScreen->width = atoi(argv[++i]); + } else if (strcmp(argv[i], "-height") == 0) { + rfbScreen->height = atoi(argv[++i]); + } else { + /* we just remove the processed arguments from the list */ + if(i != i1) { + memmove(argv+i1,argv+i,sizeof(char*)*(*argc-i)); + *argc -= i-i1; + } + i1++; + i = i1-1; + } + } + *argc -= i-i1; +} + +void rfbSizeUsage() +{ + fprintf(stderr, "-width sets the width of the framebuffer\n"); + fprintf(stderr, "-height sets the height of the framebuffer\n"); + exit(1); +} + +void +rfbProcessSizeArguments(int* width,int* height,int* bpp,int* argc, char *argv[]) +{ + int i,i1; + + for (i = i1 = 1; i < *argc-1; i++) { + if (strcmp(argv[i], "-bpp") == 0) { + *bpp = atoi(argv[++i]); + } else if (strcmp(argv[i], "-width") == 0) { + *width = atoi(argv[++i]); + } else if (strcmp(argv[i], "-height") == 0) { + *height = atoi(argv[++i]); + } else { + /* we just remove the processed arguments from the list */ + if(i != i1) { + memmove(argv+i1,argv+i,sizeof(char*)*(*argc-i)); + *argc -= i-i1; + } + i1++; + i = i1-1; + } + } + *argc -= i-i1; +} + |