mgvncviewer/ 40755 1750 1750 0 6636034753 11756 5ustar yukiusersmgvncviewer/args.o100644 1750 1750 6547 6636034610 13173 0ustar yukiuserspP usage: %s [] : are: [-shared] [-raw] [-copyrect] [-rre] [-corre] [-hextile] [-nocopyrect] [-norre] [-nocorre] [-nohextile] [-bgr233] [-owncmap] [-truecolour] [-depth ] [-passwd ] [-period ] [-delay ] [-debug] U5hhtjm-display-listen-shared-rre-corre-hextile-copyrect-raw-norre-nocorre-nohextile-nocopyrect-bgr233-owncmap-truecolour-depth-passwd-outlinesolid-period-delay-debuglisten not implemented for this viewer %[^:]:%dU WVSU E]9]VUU8-Bƿ u'UE]9]|U|ƿuMpEE]9]U2|t]3xƿusƿu%9ƿu%ƿ u%ƿ u%ƿucƿu?ƿ uU2 u]3 uU2u]3 u|U2  uT]3u.]EU9U|]36U2u&UE]9]|pU]3$uU22u*UE]9]| U2i]3:u*]EU9U|]3N)U2AuEE]9]=pt=tu[hHhJE+Eu%hhhpU] 4t#c  e[^_a R @ 2- (    sn B,  r\J4" yo hWGA7 0    weSD: 0&     ~y %p6tBxM|Zh| t'4:CI|V\(ougcc2_compiled.___gnu_compiled_c_listenSpecified_listenPort_flashPort_displayname_shareDesktop_nExplicitEncodings_addCopyRect_addRRE_addCoRRE_addHextile_useBGR233_forceOwnCmap_forceTruecolour_requestedDepth_passwdFile_outlineSolid_updateRequestPeriodms_delay_debug_usage_programName___sF_fprintf_exit_processArgs_atoi_explicitEncodings_port_hostname_sscanfmgvncviewer/args.c100644 1750 1750 12740 6636034460 13172 0ustar yukiusers/* * Copyright (C) 1997, 1998 Olivetti & Oracle Research Laboratory * * This is free software; you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation; either version 2 of the License, or * (at your option) any later version. * * This software is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with this software; if not, write to the Free Software * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, * USA. */ /* * args.c - argument processing. */ /* * Changes 1998.12.11 by Yukihiro HAYASHI */ #include #include #define FLASHPORT (5400) /* Offset to listen for `flash' commands */ #define CLIENTPORT (5500) /* Offset to listen for reverse connections */ #define SERVERPORT (5900) /* Offset to server for regular connections */ char *programName; char hostname[256]; int port; Bool listenSpecified = False; int listenPort = 0, flashPort = 0; char *displayname = NULL; Bool shareDesktop = False; CARD32 explicitEncodings[MAX_ENCODINGS]; int nExplicitEncodings = 0; Bool addCopyRect = True; Bool addRRE = True; Bool addCoRRE = True; Bool addHextile = True; #if 0 Bool useBGR233 = False; #else Bool useBGR233 = True; #endif Bool forceOwnCmap = False; Bool forceTruecolour = False; int requestedDepth = 0; char *passwdFile = NULL; Bool outlineSolid = False; int updateRequestPeriodms = 0; int delay = 0; Bool debug = False; void usage() { fprintf(stderr,"\n" "usage: %s [] :\n" "\n" " are:\n" " [-shared]\n" " [-raw] [-copyrect] [-rre] [-corre] [-hextile]\n" " [-nocopyrect] [-norre] [-nocorre] [-nohextile]\n" " [-bgr233] [-owncmap] [-truecolour] [-depth ]\n" " [-passwd ]\n" " [-period ] [-delay ]\n" " [-debug]\n\n" ,programName); exit(1); } void processArgs(int argc, char **argv) { int i; programName = argv[0]; for (i = 1; i < argc; i++) { if (argv[i][0] != '-') break; if (strcmp(argv[i],"-display") == 0) { if (++i >= argc) usage(); displayname = argv[i]; } else if (strcmp(argv[i],"-listen") == 0) { listenSpecified = True; if (++i < argc) { listenPort = CLIENTPORT+atoi(argv[i]); flashPort = FLASHPORT+atoi(argv[i]); } } else if (strcmp(argv[i],"-shared") == 0) { shareDesktop = True; } else if (strcmp(argv[i],"-rre") == 0) { explicitEncodings[nExplicitEncodings++] = rfbEncodingRRE; addRRE = False; } else if (strcmp(argv[i],"-corre") == 0) { explicitEncodings[nExplicitEncodings++] = rfbEncodingCoRRE; addCoRRE = False; } else if (strcmp(argv[i],"-hextile") == 0) { explicitEncodings[nExplicitEncodings++] = rfbEncodingHextile; addHextile = False; } else if (strcmp(argv[i],"-copyrect") == 0) { explicitEncodings[nExplicitEncodings++] = rfbEncodingCopyRect; addCopyRect = False; } else if (strcmp(argv[i],"-raw") == 0) { explicitEncodings[nExplicitEncodings++] = rfbEncodingRaw; } else if (strcmp(argv[i],"-norre") == 0) { addRRE = False; } else if (strcmp(argv[i],"-nocorre") == 0) { addCoRRE = False; } else if (strcmp(argv[i],"-nohextile") == 0) { addHextile = False; } else if (strcmp(argv[i],"-nocopyrect") == 0) { addCopyRect = False; } else if (strcmp(argv[i],"-bgr233") == 0) { useBGR233 = True; } else if (strcmp(argv[i],"-owncmap") == 0) { forceOwnCmap = True; } else if (strcmp(argv[i],"-truecolour") == 0) { forceTruecolour = True; } else if (strcmp(argv[i],"-depth") == 0) { if (++i >= argc) usage(); requestedDepth = atoi(argv[i]); } else if (strcmp(argv[i],"-passwd") == 0) { if (++i >= argc) usage(); passwdFile = argv[i]; } else if (strcmp(argv[i],"-outlinesolid") == 0) { outlineSolid = True; } else if (strcmp(argv[i],"-period") == 0) { if (++i >= argc) usage(); updateRequestPeriodms = atoi(argv[i]); } else if (strcmp(argv[i],"-delay") == 0) { if (++i >= argc) usage(); delay = atoi(argv[i]); } else if (strcmp(argv[i],"-debug") == 0) { debug = True; } else { usage(); } } if (listenSpecified) { if (listenPort == 0) { fprintf (stderr, "listen not implemented for this viewer\n"); #if 0 char *display; char *colonPos; struct utsname hostinfo; display = XDisplayName(displayname); colonPos = strchr(display, ':'); uname(&hostinfo); if (colonPos && ((colonPos == display) || (strncmp(hostinfo.nodename, display, strlen(hostinfo.nodename)) == 0))) { listenPort = CLIENTPORT+atoi(colonPos+1); flashPort = FLASHPORT+atoi(colonPos+1); } else { fprintf(stderr,"%s: " "cannot work out which display number to listen on.\n", programName); fprintf(stderr, "Please specify explicitly with -listen \n"); exit(1); } #endif } } else { /* -listen not specified */ if (((argc - i) != 1) || (sscanf(argv[i], "%[^:]:%d", hostname, &port) != 2)) { usage(); } if (port < 100) port += SERVERPORT; } } mgvncviewer/Makefile100644 1750 1750 43455 6636034561 13543 0ustar yukiusers# Makefile generated by imake - do not edit! # $TOG: imake.c /main/97 1997/06/20 20:23:51 kaleb $ # ---------------------------------------------------------------------- # Makefile generated from "Imake.tmpl" and # $TOG: Imake.tmpl /main/245 1997/05/20 10:05:47 kaleb $ # # # # # $XFree86: xc/config/cf/Imake.tmpl,v 3.32.2.8 1998/02/08 11:19:24 dawes Exp $ # ---------------------------------------------------------------------- all:: .SUFFIXES: .i # $TOG: Imake.cf /main/28 1997/06/25 08:31:36 barstow $ # $XFree86: xc/config/cf/Imake.cf,v 3.34.2.4 1998/05/22 16:38:18 dawes Exp $ # ----------------------------------------------------------------------- # site-specific configuration parameters that need to come before # the platform-specific parameters - edit site.def to change # site: $XConsortium: site.def /main/revisionist/4 1996/12/31 08:02:07 kaleb $ # site: $XFree86: xc/config/cf/site.def,v 3.17.2.1 1997/06/22 10:32:21 dawes Exp $ # $XFree86: xc/config/cf/xf86site.def,v 3.101.2.15 1998/02/24 19:05:42 hohndel Exp $ # ---------------------------------------------------------------------- # platform-specific configuration parameters - edit FreeBSD.cf to change # platform: $TOG: FreeBSD.cf /main/18 1997/06/12 07:40:35 kaleb $ # platform: $XFree86: xc/config/cf/FreeBSD.cf,v 3.58.2.12 1998/04/29 04:18:26 dawes Exp $ # operating system: FreeBSD 2.2.5-RELEASE i386 (2.2.5) COMPRESSMANCMD = gzip -n # $XConsortium: bsdLib.rules /main/3 1996/09/28 16:09:18 rws $ # $XFree86: xc/config/cf/bsdLib.rules,v 3.4.2.1 1997/05/11 05:04:04 dawes Exp $ # $XFree86: xc/config/cf/xfree86.cf,v 3.129.2.22 1998/02/24 19:05:43 hohndel Exp $ # $XConsortium: xfree86.cf /main/34 1996/12/06 11:45:18 rws $ LINKKITDIR = $(USRLIBDIR)/Server XF98LINKKITDIR = $(USRLIBDIR)/Server XF86SRC = $(SERVERSRC)/hw/xfree86 XF86ACCELSRC = $(XF86SRC)/accel XF86COMSRC = $(XF86SRC)/common XF86CONFIGSRC = $(XF86COMSRC) XF86HWSRC = $(XF86SRC)/common_hw XF86OSSRC = $(XF86SRC)/os-support VGADRIVERSRC = $(XF86SRC)/vga256/drivers VGA16DRIVERSRC = $(XF86SRC)/vga16/drivers VGA2DRIVERSRC = $(XF86SRC)/vga2/drivers MONODRIVERSRC = $(XF86SRC)/mono/drivers S3DRIVERSRC = $(XF86SRC)/accel/s3/drivers S3VDRIVERSRC = $(XF86SRC)/accel/s3_virge/drivers XF68SRC = $(SERVERSRC)/hw/xfree68 XF68COMSRC = $(XF68SRC)/common XF68CONFIGSRC = $(XF68COMSRC) XF68OSSRC = $(XF68SRC)/os-support XF98SRC = $(SERVERSRC)/hw/xfree98 XF98ACCELSRC = $(XF98SRC)/accel XF98COMSRC = $(XF98SRC)/common XF98CONFIGSRC = $(XF98COMSRC) XF98HWSRC = $(XF98SRC)/common_hw/generic XF98HWNECSRC = $(XF98SRC)/common_hw/nec XF98HWPWSKBSRC = $(XF98SRC)/common_hw/pwskb XF98HWPWLBSRC = $(XF98SRC)/common_hw/pwlb XF98HWGA968SRC = $(XF98SRC)/common_hw/ga968 XF98OSSRC = $(XF98SRC)/os-support XF98VGADRIVERSRC = $(XF98SRC)/vga256/drivers XF98VGA16DRIVERSRC = $(XF98SRC)/vga16/drivers XF98VGA2DRIVERSRC = $(XF98SRC)/vga2/drivers XF98MONODRIVERSRC = $(XF98SRC)/mono/drivers XF98NECS3DRIVERSRC = $(XF98SRC)/accel/s3nec/drivers XF98PWSKBDRIVERSRC = $(XF98SRC)/accel/s3pwskb/drivers XF98PWLBDRIVERSRC = $(XF98SRC)/accel/s3pwlb/drivers XF98GA968DRIVERSRC = $(XF98SRC)/accel/s3ga968/drivers XFREE86DOCDIR = $(LIBDIR)/doc XFREE86PSDOCDIR = $(XFREE86DOCDIR)/PostScript XFREE86HTMLDOCDIR = $(XFREE86DOCDIR)/html XFREE86JAPANESEDOCDIR = $(XFREE86DOCDIR)/Japanese # $XConsortium: xf86.rules /main/9 1996/10/31 14:54:26 kaleb $ # $XFree86: xc/config/cf/xf86.rules,v 3.16.2.1 1997/05/18 12:00:01 dawes Exp $ # ---------------------------------------------------------------------- # site-specific configuration parameters that go after # the platform-specific parameters - edit site.def to change # site: $XConsortium: site.def /main/revisionist/4 1996/12/31 08:02:07 kaleb $ # site: $XFree86: xc/config/cf/site.def,v 3.17.2.1 1997/06/22 10:32:21 dawes Exp $ # --------------------------------------------------------------------- # Imake rules for building libraries, programs, scripts, and data files # rules: $TOG: Imake.rules /main/222 1997/07/17 20:04:40 kaleb $ # rules: $XFree86: xc/config/cf/Imake.rules,v 3.33.2.7 1998/02/06 09:02:17 dawes Exp $ _NULLCMD_ = @ echo -n TKLIBNAME = tk42 TKLIBDIR = TCLLIBNAME = tcl76 TCLIBDIR = PATHSEP = / SHELL = /bin/sh TOP = . CURRENT_DIR = . IMAKE = imake DEPEND = gccmakedep MKDIRHIER = mkdir -p EXPORTLISTGEN = CONFIGSRC = $(TOP)/config IMAKESRC = $(CONFIGSRC)/imake DEPENDSRC = $(CONFIGSRC)/util INCROOT = /usr/X11R6/include USRLIBDIR = /usr/X11R6/lib VARLIBDIR = /var/lib SHLIBDIR = /usr/X11R6/lib LINTLIBDIR = $(USRLIBDIR)/lint MANPATH = /usr/X11R6/man MANSOURCEPATH = $(MANPATH)/man MANDIR = $(MANSOURCEPATH)$(MANSUFFIX) LIBMANDIR = $(MANSOURCEPATH)$(LIBMANSUFFIX) FILEMANDIR = $(MANSOURCEPATH)$(FILEMANSUFFIX) AR = ar clq BOOTSTRAPCFLAGS = CC = cc AS = as .SUFFIXES: .cc CXX = g++ CXXFILT = c++filt CXXLIB = CXXDEBUGFLAGS = -O2 CXXDEPENDINCLUDES = CXXEXTRA_DEFINES = CXXEXTRA_INCLUDES = CXXSTD_DEFINES = -DCSRG_BASED $(CXXPROJECT_DEFINES) CXXOPTIONS = CXXINCLUDES = $(INCLUDES) $(TOP_INCLUDES) $(CXXEXTRA_INCLUDES) CXXDEFINES = $(CXXINCLUDES) $(CXXSTD_DEFINES) $(THREADS_CXXDEFINES) $(CXXEXTRA_DEFINES) $(DEFINES) CXXFLAGS = $(CXXDEBUGFLAGS) $(CXXOPTIONS) $(THREADS_CXXFLAGS) $(CXXDEFINES) COMPRESS = compress GZIPCMD = gzip CPP = /usr/libexec/cpp $(STD_CPP_DEFINES) PREPROCESSCMD = /usr/libexec/cpp $(STD_CPP_DEFINES) INSTALL = /usr/bin/install INSTALLFLAGS = -c LD = ld LEX = lex LEXLIB = -ll YACC = yacc CCYACC = yacc LINT = lint LINTLIBFLAG = -C LINTOPTS = -axz LN = ln -s MAKE = make MV = mv -f CP = cp RANLIB = ranlib RANLIBINSTFLAGS = RM = rm -f MANSUFFIX = 1 LIBMANSUFFIX = 3 FILEMANSUFFIX = 5 TROFF = groff -Tps NROFF = nroff MSMACROS = -ms MANMACROS = -man TBL = tbl EQN = eqn NEQN = neqn COL = col DVIPS = dvips LATEX = latex STD_INCLUDES = STD_CPP_DEFINES = -traditional $(PROJECT_DEFINES) STD_DEFINES = -DCSRG_BASED $(PROJECT_DEFINES) EXTRA_LOAD_FLAGS = EXTRA_LDOPTIONS = EXTRA_LIBRARIES = -lxpg4 TAGS = ctags PARALLELMFLAGS = SHAREDCODEDEF = SHLIBDEF = -DBSDSHLIB SHLIBLDFLAGS = -Bshareable PICFLAGS = -fpic CXXPICFLAGS = -fpic PROTO_DEFINES = -DFUNCPROTO=15 -DNARROWPROTO INSTPGMFLAGS = -s INSTBINFLAGS = -m 0755 INSTUIDFLAGS = -m 4711 INSTLIBFLAGS = -m 0644 INSTINCFLAGS = -m 0444 INSTMANFLAGS = -m 0444 INSTDATFLAGS = -m 0444 INSTKMEMFLAGS = -g kmem -m 2755 PROJECTROOT = /usr/X11R6 CDEBUGFLAGS = -O2 CCOPTIONS = ALLINCLUDES = $(INCLUDES) $(EXTRA_INCLUDES) $(TOP_INCLUDES) $(STD_INCLUDES) ALLDEFINES = $(ALLINCLUDES) $(STD_DEFINES) $(EXTRA_DEFINES) $(PROTO_DEFINES) $(THREADS_DEFINES) $(DEFINES) CFLAGS = $(CDEBUGFLAGS) $(CCOPTIONS) $(THREADS_CFLAGS) $(ALLDEFINES) LINTFLAGS = $(LINTOPTS) -DLINT $(ALLDEFINES) $(DEPEND_DEFINES) LDPRELIB = -L$(USRLIBDIR) LDPOSTLIB = LDOPTIONS = $(CDEBUGFLAGS) $(CCOPTIONS) $(EXTRA_LDOPTIONS) $(THREADS_LDFLAGS) $(LOCAL_LDFLAGS) $(LDPRELIBS) CXXLDOPTIONS = $(CXXDEBUGFLAGS) $(CXXOPTIONS) $(EXTRA_LDOPTIONS) $(THREADS_CXXLDFLAGS) $(LOCAL_LDFLAGS) $(LDPRELIBS) LDLIBS = $(LDPOSTLIBS) $(THREADS_LIBS) $(SYS_LIBRARIES) $(EXTRA_LIBRARIES) CCLINK = $(CC) CXXLINK = $(CXX) LDSTRIPFLAGS = -x LDCOMBINEFLAGS = -X -r DEPENDFLAGS = # Not sure this belongs here TKLIBDIR = TKINCDIR = /usr/local/include/tk4.2 TKLIBNAME = tk42 TKLIBRARY = -L$(TKLIBDIR) -l$(TKLIBNAME) TCLLIBDIR = TCLINCDIR = /usr/local/include/tcl7.6 TCLLIBNAME = tcl76 TCLLIBRARY = -L$(TCLLIBDIR) -l$(TCLLIBNAME) MACROFILE = FreeBSD.cf RM_CMD = $(RM) IMAKE_DEFINES = IRULESRC = $(CONFIGDIR) IMAKE_CMD = $(IMAKE) -DUseInstalled -I$(IRULESRC) $(IMAKE_DEFINES) ICONFIGFILES = $(IRULESRC)/Imake.tmpl $(IRULESRC)/X11.tmpl $(IRULESRC)/site.def $(IRULESRC)/$(MACROFILE) $(IRULESRC)/xfree86.cf $(IRULESRC)/xf86.rules $(IRULESRC)/xf86site.def $(IRULESRC)/host.def $(EXTRA_ICONFIGFILES) # $TOG: X11.rules /main/4 1997/04/30 15:23:24 kaleb $ # ---------------------------------------------------------------------- # X Window System Build Parameters and Rules # $TOG: X11.tmpl /main/292 1997/05/20 10:05:59 kaleb $ # # # # # $XFree86: xc/config/cf/X11.tmpl,v 1.8.2.4 1998/01/23 12:35:08 dawes Exp $ # ----------------------------------------------------------------------- # X Window System make variables; these need to be coordinated with rules XTOP = $(TOP) BINDIR = /usr/X11R6/bin BUILDINCROOT = $(TOP)/exports BUILDINCDIR = $(BUILDINCROOT)/include BUILDINCTOP = ../.. BUILDLIBDIR = $(TOP)/exports/lib BUILDLIBTOP = ../.. BUILDBINDIR = $(TOP)/exports/bin BUILDBINTOP = ../.. XBUILDINCROOT = $(XTOP)/exports XBUILDINCDIR = $(XBUILDINCROOT)/include/X11 XBUILDINCTOP = ../../.. XBUILDBINDIR = $(XBUILDINCROOT)/bin INCDIR = $(INCROOT) ADMDIR = /usr/adm LIBDIR = $(USRLIBDIR)/X11 TOP_X_INCLUDES = -I$(XPROJECTROOT)/include VARDIR = /var/X11 FONTDIR = $(LIBDIR)/fonts XINITDIR = $(LIBDIR)/xinit XDMDIR = $(LIBDIR)/xdm XDMVARDIR = $(VARLIBDIR)/xdm TWMDIR = $(LIBDIR)/twm XSMDIR = $(LIBDIR)/xsm NLSDIR = $(LIBDIR)/nls XLOCALEDIR = $(LIBDIR)/locale PEXAPIDIR = $(LIBDIR)/PEX LBXPROXYDIR = $(LIBDIR)/lbxproxy PROXYMANAGERDIR = $(LIBDIR)/proxymngr XPRINTDIR = $(LIBDIR) XAPPLOADDIR = $(LIBDIR)/app-defaults FONTCFLAGS = -t INSTAPPFLAGS = $(INSTDATFLAGS) RGB = rgb FONTC = bdftopcf MKFONTDIR = mkfontdir DOCUTILSRC = $(XTOP)/doc/util CLIENTSRC = $(TOP)/clients DEMOSRC = $(TOP)/demos XDOCMACROS = $(DOCUTILSRC)/macros.t XIDXMACROS = $(DOCUTILSRC)/indexmacros.t PROGRAMSRC = $(TOP)/programs LIBSRC = $(XTOP)/lib FONTSRC = $(XTOP)/fonts INCLUDESRC = $(BUILDINCROOT)/include XINCLUDESRC = $(INCLUDESRC)/X11 SERVERSRC = $(XTOP)/programs/Xserver CONTRIBSRC = $(XTOP)/../contrib UNSUPPORTEDSRC = $(XTOP)/unsupported DOCSRC = $(XTOP)/doc RGBSRC = $(XTOP)/programs/rgb BDFTOPCFSRC = $(PROGRAMSRC)/bdftopcf MKFONTDIRSRC = $(PROGRAMSRC)/mkfontdir FONTSERVERSRC = $(PROGRAMSRC)/xfs FONTINCSRC = $(XTOP)/include/fonts EXTINCSRC = $(XTOP)/include/extensions TRANSCOMMSRC = $(LIBSRC)/xtrans TRANS_INCLUDES = -I$(TRANSCOMMSRC) XENVLIBDIR = $(USRLIBDIR) CLIENTENVSETUP = LD_LIBRARY_PATH=$(XENVLIBDIR) # $XConsortium: bsdLib.tmpl /main/3 1996/09/28 16:09:25 rws $ # $XFree86: xc/config/cf/bsdLib.tmpl,v 3.3.2.1 1997/07/27 02:41:03 dawes Exp $ XLIBSRC = $(LIBSRC)/X11 SOXLIBREV = 6.1 DEPXONLYLIB = XONLYLIB = -lX11 LINTXONLY = $(LINTLIBDIR)/llib-lX11.ln XLIBONLY = $(XONLYLIB) XEXTLIBSRC = $(LIBSRC)/Xext SOXEXTREV = 6.3 DEPEXTENSIONLIB = EXTENSIONLIB = -lXext LINTEXTENSION = $(LINTLIBDIR)/llib-lXext.ln LINTEXTENSIONLIB = $(LINTEXTENSION) DEPXLIB = $(DEPEXTENSIONLIB) $(DEPXONLYLIB) XLIB = $(EXTENSIONLIB) $(XONLYLIB) LINTXLIB = $(LINTXONLYLIB) XSSLIBSRC = $(LIBSRC)/Xss DEPXSSLIB = $(USRLIBDIR)/libXss.a XSSLIB = -lXss LINTXSS = $(LINTLIBDIR)/llib-lXss.ln XXF86MISCLIBSRC = $(LIBSRC)/Xxf86misc DEPXXF86MISCLIB = $(USRLIBDIR)/libXxf86misc.a XXF86MISCLIB = -lXxf86misc LINTXXF86MISC = $(LINTLIBDIR)/llib-lXxf86misc.ln XXF86VMLIBSRC = $(LIBSRC)/Xxf86vm DEPXXF86VMLIB = $(USRLIBDIR)/libXxf86vm.a XXF86VMLIB = -lXxf86vm LINTXXF86VM = $(LINTLIBDIR)/llib-lXxf86vm.ln XXF86DGALIBSRC = $(LIBSRC)/Xxf86dga DEPXXF86DGALIB = $(USRLIBDIR)/libXxf86dga.a XXF86DGALIB = -lXxf86dga LINTXXF86DGA = $(LINTLIBDIR)/llib-lXxf86dga.ln XDPMSLIBSRC = $(LIBSRC)/Xdpms DEPXDPMSLIB = $(USRLIBDIR)/libXdpms.a XDPMSLIB = -lXdpms LINTXDPMS = $(LINTLIBDIR)/llib-lXdpms.ln XAUTHSRC = $(LIBSRC)/Xau DEPXAUTHLIB = $(USRLIBDIR)/libXau.a XAUTHLIB = -lXau LINTXAUTH = $(LINTLIBDIR)/llib-lXau.ln XDMCPLIBSRC = $(LIBSRC)/Xdmcp DEPXDMCPLIB = $(USRLIBDIR)/libXdmcp.a XDMCPLIB = -lXdmcp LINTXDMCP = $(LINTLIBDIR)/llib-lXdmcp.ln XMUSRC = $(LIBSRC)/Xmu SOXMUREV = 6.0 DEPXMULIB = XMULIB = -lXmu $(LDPRELIBS) $(XTOOLONLYLIB) $(XONLYLIB) LINTXMU = $(LINTLIBDIR)/llib-lXmu.ln OLDXLIBSRC = $(LIBSRC)/oldX SOOLDXREV = 6.0 DEPOLDXLIB = OLDXLIB = -loldX LINTOLDX = $(LINTLIBDIR)/llib-loldX.ln XPLIBSRC = $(LIBSRC)/Xp SOXPREV = 6.2 DEPXPLIB = XPLIB = -lXp LINTXP = $(LINTLIBDIR)/llib-lXp.ln TOOLKITSRC = $(LIBSRC)/Xt SOXTREV = 6.0 DEPXTOOLONLYLIB = XTOOLONLYLIB = -lXt LINTXTOOLONLY = $(LINTLIBDIR)/llib-lXt.ln DEPXTOOLLIB = $(DEPXTOOLONLYLIB) $(DEPSMLIB) $(DEPICELIB) XTOOLLIB = $(XTOOLONLYLIB) $(SMLIB) $(ICELIB) LINTXTOOLLIB = $(LINTXTOOLONLYLIB) XALIBSRC = $(LIBSRC)/Xa SOXAREV = 1.0 DEPXALIB = XALIB = -lXa LINTXA = $(LINTLIBDIR)/llib-lXa.ln AWIDGETSRC = $(LIBSRC)/Xaw SOXAWREV = 6.1 DEPXAWLIB = XAWLIB = -lXaw LINTXAW = $(LINTLIBDIR)/llib-lXaw.ln XILIBSRC = $(LIBSRC)/Xi SOXINPUTREV = 6.0 DEPXILIB = XILIB = -lXi LINTXI = $(LINTLIBDIR)/llib-lXi.ln XTESTLIBSRC = $(LIBSRC)/Xtst SOXTESTREV = 6.1 DEPXTESTLIB = XTESTLIB = -lXtst LINTXTEST = $(LINTLIBDIR)/llib-lXtst.ln PEXLIBSRC = $(LIBSRC)/PEX5 SOPEXREV = 6.0 DEPPEXLIB = PEXLIB = -lPEX5 LINTPEX = $(LINTLIBDIR)/llib-lPEX5.ln XIELIBSRC = $(LIBSRC)/XIE SOXIEREV = 6.0 DEPXIELIB = XIELIB = -lXIE LINTXIE = $(LINTLIBDIR)/llib-lXIE.ln PHIGSLIBSRC = $(LIBSRC)/PHIGS DEPPHIGSLIB = $(USRLIBDIR)/libphigs.a PHIGSLIB = -lphigs LINTPHIGS = $(LINTLIBDIR)/llib-lphigs.ln DEPXBSDLIB = $(USRLIBDIR)/libXbsd.a XBSDLIB = -lXbsd LINTXBSD = $(LINTLIBDIR)/llib-lXbsd.ln ICESRC = $(LIBSRC)/ICE SOICEREV = 6.3 DEPICELIB = ICELIB = -lICE LINTICE = $(LINTLIBDIR)/llib-lICE.ln SMSRC = $(LIBSRC)/SM SOSMREV = 6.0 DEPSMLIB = SMLIB = -lSM LINTSM = $(LINTLIBDIR)/llib-lSM.ln XKEYSRC = $(LIBSRC)/Xkey SOXKEYREV = 6.0 DEPXKEYLIB = XKEYLIB = -lXkey LINTXKEY = $(LINTLIBDIR)/llib-lXkey.ln FSLIBSRC = $(LIBSRC)/FS DEPFSLIB = $(USRLIBDIR)/libFS.a FSLIB = -lFS LINTFS = $(LINTLIBDIR)/llib-lFS.ln FONTLIBSRC = $(LIBSRC)/font DEPFONTLIB = $(USRLIBDIR)/libfont.a FONTLIB = -lfont LINTFONT = $(LINTLIBDIR)/llib-lfont.ln XPMLIBSRC = $(LIBSRC)/Xpm DEPXPMLIB = $(USRLIBDIR)/libXpm.a XPMLIB = -lXpm LINTXPM = $(LINTLIBDIR)/llib-lXpm.ln XKBFILELIBSRC = $(LIBSRC)/xkbfile DEPXKBFILELIB = $(USRLIBDIR)/libxkbfile.a XKBFILELIB = -lxkbfile LINTXKBFILE = $(LINTLIBDIR)/llib-lxkbfile.ln XKBCOMPCMD = xkbcomp XKBUILIBSRC = $(LIBSRC)/xkbui DEPXKBUILIB = $(USRLIBDIR)/libxkbui.a XKBUILIB = -lxkbui LINTXKBUI = $(LINTLIBDIR)/llib-lxkbui.ln DEPLIBS = $(DEPXAWLIB) $(DEPXMULIB) $(DEPXTOOLLIB) $(DEPXLIB) DEPLIBS1 = $(DEPLIBS) DEPLIBS2 = $(DEPLIBS) DEPLIBS3 = $(DEPLIBS) DEPLIBS4 = $(DEPLIBS) DEPLIBS5 = $(DEPLIBS) DEPLIBS6 = $(DEPLIBS) DEPLIBS7 = $(DEPLIBS) DEPLIBS8 = $(DEPLIBS) DEPLIBS9 = $(DEPLIBS) DEPLIBS10 = $(DEPLIBS) CONFIGDIR = $(LIBDIR)/config USRLIBDIRPATH = $(USRLIBDIR) LDPRELIBS = -L$(USRLIBDIR) LDPOSTLIBS = TOP_INCLUDES = -I$(INCROOT) $(TOP_X_INCLUDES) PROJECT_DEFINES = CXXPROJECT_DEFINES = # ---------------------------------------------------------------------- # start of Imakefile CCOPTIONS = -Wall SRCS = args.c rfbproto.c sockets.c mgvncviewer.c mgl-util.c # kbd.c OBJS = args.o rfbproto.o sockets.o mgvncviewer.o mgl-util.o # kbd.o INCLUDES = -I../include -I/usr/local/lib/mgl -I. VNCAUTH_LIB = ../libvncauth/libvncauth.a MGLLIB = -L/usr/local/lib -lmgl all:: mgvncviewer sockets.c: cp ../vncviewer/sockets.c . mgvncviewer: $(OBJS) $(DEPXLIB) $(VNCAUTH_LIB) $(RM) $@ $(CCLINK) -o $@ $(LDOPTIONS) $(OBJS) $(MGLLIB) $(VNCAUTH_LIB) $(LIBS) $(LDLIBS) $(EXTRA_LOAD_FLAGS) clean:: $(RM) mgvncviewer depend:: .depend .depend:: $(RM) $@ $(DEPEND) -f- $(DEPENDFLAGS) -- $(ALLDEFINES) $(DEPEND_DEFINES) -- $(SRCS) > $@ # ---------------------------------------------------------------------- # common rules for all Makefiles - do not edit .c.i: $(RM) $@ $(CC) -E $(CFLAGS) $(_NOOP_) $*.c > $@ emptyrule:: clean:: $(RM) *.CKP *.ln *.BAK *.bak *.o core errs ,* *~ *.a .emacs_* tags TAGS make.log MakeOut *.core "#"* Makefile:: -@if [ -f Makefile ]; then set -x; \ $(RM) Makefile.bak; $(MV) Makefile Makefile.bak; \ else exit 0; fi $(IMAKE_CMD) -DTOPDIR=$(TOP) -DCURDIR=$(CURRENT_DIR) tags:: $(TAGS) -w *.[ch] $(TAGS) -xw *.[ch] > TAGS man_keywords:: # ---------------------------------------------------------------------- # empty rules for directories that do not have SUBDIRS - do not edit install:: @echo "install in $(CURRENT_DIR) done" install.man:: @echo "install.man in $(CURRENT_DIR) done" install.linkkit:: @echo "install.linkkit in $(CURRENT_DIR) done" Makefiles:: includes:: depend:: # ---------------------------------------------------------------------- # dependencies generated by makedepend # dependencies are in .depend mgvncviewer/rfbproto.c100644 1750 1750 66426 6636034506 14106 0ustar yukiusers/* * Copyright (C) 1997, 1998 Olivetti & Oracle Research Laboratory * * This is free software; you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation; either version 2 of the License, or * (at your option) any later version. * * This software is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with this software; if not, write to the Free Software * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, * USA. */ /* * rfbproto.c - functions to deal with client side of RFB protocol. */ /* * Changed to use macros, so that rfbproto.c is independent of the * display routines. -- ganesh */ /* * Changes 1998.12.11 by Yukihiro HAYASHI */ #include #include #include #include #include #include #include #include "mgl-util.h" static Bool HandleHextileEncoding8(int x, int y, int w, int h); static Bool HandleHextileEncoding16(int x, int y, int w, int h); static Bool HandleHextileEncoding32(int x, int y, int w, int h); int rfbsock; char *desktopName; rfbPixelFormat myFormat; rfbServerInitMsg si; struct timeval updateRequestTime; Bool sendUpdateRequest; int endianTest = 1; /* note that the CoRRE encoding uses this buffer and assumes it is big enough to hold 255 * 255 * 32 bits -> 260100 bytes. 640*480 = 307200 bytes */ /* also hextile assumes it is big enough to hold 16 * 16 * 32 bits */ #define BUFFER_SIZE (640*480) static char buffer[BUFFER_SIZE]; static void PrintPixelFormat(rfbPixelFormat *format); /* * ConnectToRFBServer. */ Bool ConnectToRFBServer(const char *hostname, int port) { unsigned int host; if (!StringToIPAddr(hostname, &host)) { fprintf(stderr,"%s: couldn't convert '%s' to host address\n", programName,hostname); return False; } rfbsock = ConnectToTcpAddr(host, port); if (rfbsock < 0) { fprintf(stderr,"%s: unable to connect to VNC server\n", programName); return False; } return True; } /* * InitialiseRFBConnection. */ Bool InitialiseRFBConnection(int sock) { rfbProtocolVersionMsg pv; int major,minor; Bool authWillWork = True; CARD32 authScheme, reasonLen, authResult; char *reason; CARD8 challenge[CHALLENGESIZE]; char *passwd; int i; rfbClientInitMsg ci; /* if the connection is immediately closed, don't report anything, so that pmw's monitor can make test connections */ if (listenSpecified) errorMessageFromReadExact = False; if (!ReadExact(sock, pv, sz_rfbProtocolVersionMsg)) return False; errorMessageFromReadExact = True; pv[sz_rfbProtocolVersionMsg] = 0; if (sscanf(pv,rfbProtocolVersionFormat,&major,&minor) != 2) { fprintf(stderr,"%s: Not a valid VNC server\n",programName); return False; } fprintf(stderr,"%s: VNC server supports protocol version %d.%d " "(viewer %d.%d)\n", programName,major,minor,rfbProtocolMajorVersion, rfbProtocolMinorVersion); if ((major == 3) && (minor < 3)) { /* if server is before 3.3 authentication won't work */ authWillWork = False; } else { /* any other server version, just tell it what we want */ major = rfbProtocolMajorVersion; minor = rfbProtocolMinorVersion; } sprintf(pv,rfbProtocolVersionFormat,major,minor); if (!WriteExact(sock, pv, sz_rfbProtocolVersionMsg)) return False; if (!ReadExact(sock, (char *)&authScheme, 4)) return False; authScheme = Swap32IfLE(authScheme); switch (authScheme) { case rfbConnFailed: if (!ReadExact(sock, (char *)&reasonLen, 4)) return False; reasonLen = Swap32IfLE(reasonLen); reason = malloc(reasonLen); if (!ReadExact(sock, reason, reasonLen)) return False; fprintf(stderr,"%s: VNC connection failed: %.*s\n", programName, (int)reasonLen, reason); return False; case rfbNoAuth: fprintf(stderr,"%s: No authentication needed\n",programName); break; case rfbVncAuth: if (!authWillWork) { fprintf(stderr, "\n%s: VNC server uses the old authentication scheme.\n" "You should kill your old desktop(s) and restart.\n" "If you really need to connect to this desktop use " "vncviewer3.2\n\n", programName); return False; } if (!ReadExact(sock, (char *)challenge, CHALLENGESIZE)) return False; if (passwdFile) { passwd = vncDecryptPasswdFromFile(passwdFile); } else { passwd = getpass("Password: "); if (strlen(passwd) == 0) { fprintf(stderr,"%s: Reading password failed\n",programName); return False; } if (strlen(passwd) > 8) { passwd[8] = '\0'; } } vncEncryptBytes(challenge, passwd); /* Lose the password from memory */ for (i=0; itype = rfbSetEncodings; se->nEncodings = 0; for (i = 0; i < nExplicitEncodings; i++) { encs[se->nEncodings++] = Swap32IfLE(explicitEncodings[i]); } if (SameMachine(rfbsock)) { encs[se->nEncodings++] = Swap32IfLE(rfbEncodingRaw); } if (addCopyRect) encs[se->nEncodings++] = Swap32IfLE(rfbEncodingCopyRect); if (addHextile) encs[se->nEncodings++] = Swap32IfLE(rfbEncodingHextile); if (addCoRRE) encs[se->nEncodings++] = Swap32IfLE(rfbEncodingCoRRE); if (addRRE) encs[se->nEncodings++] = Swap32IfLE(rfbEncodingRRE); len = sz_rfbSetEncodingsMsg + se->nEncodings * 4; se->nEncodings = Swap16IfLE(se->nEncodings); if (!WriteExact(rfbsock, buf, len)) return False; return True; } /* * SendIncrementalFramebufferUpdateRequest. */ Bool SendIncrementalFramebufferUpdateRequest() { return SendFramebufferUpdateRequest(0, 0, si.framebufferWidth, si.framebufferHeight, True); } /* * SendFramebufferUpdateRequest. */ Bool SendFramebufferUpdateRequest(int x, int y, int w, int h, Bool incremental) { rfbFramebufferUpdateRequestMsg fur; fur.type = rfbFramebufferUpdateRequest; fur.incremental = incremental ? 1 : 0; fur.x = Swap16IfLE(x); fur.y = Swap16IfLE(y); fur.w = Swap16IfLE(w); fur.h = Swap16IfLE(h); if (!WriteExact(rfbsock, (char *)&fur, sz_rfbFramebufferUpdateRequestMsg)) return False; gettimeofday(&updateRequestTime, NULL); sendUpdateRequest = False; return True; } /* * SendPointerEvent. */ Bool SendPointerEvent(int x, int y, int buttonMask) { rfbPointerEventMsg pe; pe.type = rfbPointerEvent; pe.buttonMask = buttonMask; if (x < 0) x = 0; if (y < 0) y = 0; pe.x = Swap16IfLE(x); pe.y = Swap16IfLE(y); return WriteExact(rfbsock, (char *)&pe, sz_rfbPointerEventMsg); } /* * SendKeyEvent. */ Bool SendKeyEvent(CARD32 key, Bool down) { rfbKeyEventMsg ke; ke.type = rfbKeyEvent; ke.down = down ? 1 : 0; ke.key = Swap32IfLE(key); return WriteExact(rfbsock, (char *)&ke, sz_rfbKeyEventMsg); } /* * SendClientCutText. */ Bool SendClientCutText(char *str, int len) { rfbClientCutTextMsg cct; cct.type = rfbClientCutText; cct.length = Swap32IfLE(len); return (WriteExact(rfbsock, (char *)&cct, sz_rfbClientCutTextMsg) && WriteExact(rfbsock, str, len)); } /* * HandleRFBServerMessage. */ Bool HandleRFBServerMessage() { rfbServerToClientMsg msg; if (!ReadExact(rfbsock, (char *)&msg, 1)) return False; switch (msg.type) { case rfbSetColourMapEntries: DEBUG(("SetColourMapEntries\n")); { #if 0 int i; CARD16 rgb[3]; XColor xc; if (!ReadExact(rfbsock, ((char *)&msg) + 1, sz_rfbSetColourMapEntriesMsg - 1)) return False; msg.scme.firstColour = Swap16IfLE(msg.scme.firstColour); msg.scme.nColours = Swap16IfLE(msg.scme.nColours); for (i = 0; i < msg.scme.nColours; i++) { if (!ReadExact(rfbsock, (char *)rgb, 6)) return False; xc.pixel = msg.scme.firstColour + i; xc.red = Swap16IfLE(rgb[0]); xc.green = Swap16IfLE(rgb[1]); xc.blue = Swap16IfLE(rgb[2]); xc.flags = DoRed|DoGreen|DoBlue; STORE_COLOUR (xc); } break; #else ShutdownMgl(); err(1,"SetColourMapEntries Message Not Supported!\n"); break; #endif } case rfbFramebufferUpdate: DEBUG(("FramebufferUpdate\n")); { rfbFramebufferUpdateRectHeader rect; int linesToRead; int bytesPerLine; int i; if (!ReadExact(rfbsock, ((char *)&msg.fu) + 1, sz_rfbFramebufferUpdateMsg - 1)) return False; msg.fu.nRects = Swap16IfLE(msg.fu.nRects); for (i = 0; i < msg.fu.nRects; i++) { if (!ReadExact(rfbsock, (char *)&rect, sz_rfbFramebufferUpdateRectHeader)) return False; rect.r.x = Swap16IfLE(rect.r.x); rect.r.y = Swap16IfLE(rect.r.y); rect.r.w = Swap16IfLE(rect.r.w); rect.r.h = Swap16IfLE(rect.r.h); rect.encoding = Swap32IfLE(rect.encoding); DEBUG(("x=%d,y=%d,w=%d,h=%d,encoding=%d\n",rect.r.x,rect.r.y,rect.r.w,rect.r.h,rect.encoding)); if ((rect.r.x + rect.r.w > si.framebufferWidth) || (rect.r.y + rect.r.h > si.framebufferHeight)) { fprintf(stderr,"%s: rect too large: %dx%d at (%d, %d)\n", programName, rect.r.w, rect.r.h, rect.r.x, rect.r.y); return False; } if ((rect.r.h * rect.r.w) == 0) { fprintf(stderr,"%s: zero size rect - ignoring\n",programName); continue; } switch (rect.encoding) { case rfbEncodingRaw: DEBUG(("EncodingRaw\n")); bytesPerLine = rect.r.w * myFormat.bitsPerPixel / 8; linesToRead = BUFFER_SIZE / bytesPerLine; while (rect.r.h > 0) { if (linesToRead > rect.r.h) linesToRead = rect.r.h; if (!ReadExact(rfbsock, buffer,bytesPerLine * linesToRead)) return False; CopyDataToScreen((CARD8 *)buffer, rect.r.x, rect.r.y, rect.r.w, linesToRead); rect.r.h -= linesToRead; rect.r.y += linesToRead; } break; case rfbEncodingCopyRect: DEBUG(("EncodingCopyRect\n")); { rfbCopyRect cr; if (!ReadExact(rfbsock, (char *)&cr, sz_rfbCopyRect)) return False; cr.srcX = Swap16IfLE(cr.srcX); cr.srcY = Swap16IfLE(cr.srcY); COPY_AREA (cr.srcX, cr.srcY, rect.r.w, rect.r.h, rect.r.x, rect.r.y); break; } case rfbEncodingRRE: DEBUG(("EncodingCopyRRE\n")); { rfbRREHeader hdr; CARD8 pix8; CARD16 pix16; CARD32 pix32; rfbRectangle subrect; int j; if (!ReadExact(rfbsock, (char *)&hdr, sz_rfbRREHeader)) return False; hdr.nSubrects = Swap32IfLE(hdr.nSubrects); switch (myFormat.bitsPerPixel) { case 8: if (!ReadExact(rfbsock, (char *)&pix8, 1)) return False; FILL_RECT (rect.r.x, rect.r.y, rect.r.w, rect.r.h, (useBGR233 ? BGR233ToPixel[pix8] : pix8)); for (j = 0; j < hdr.nSubrects; j++) { if (!ReadExact(rfbsock, (char *)&pix8, 1)) return False; if (!ReadExact(rfbsock, (char *)&subrect, sz_rfbRectangle)) return False; subrect.x = Swap16IfLE(subrect.x); subrect.y = Swap16IfLE(subrect.y); subrect.w = Swap16IfLE(subrect.w); subrect.h = Swap16IfLE(subrect.h); FILL_RECT (rect.r.x + subrect.x, rect.r.y + subrect.y, subrect.w, subrect.h, (useBGR233 ? BGR233ToPixel[pix8] : pix8)); } break; #if 0 case 16: if (!ReadExact(rfbsock, (char *)&pix16, 2)) return False; FILL_RECT (rect.r.x, rect.r.y, rect.r.w, rect.r.h, pix16); for (j = 0; j < hdr.nSubrects; j++) { if (!ReadExact(rfbsock, (char *)&pix16, 2)) return False; if (!ReadExact(rfbsock, (char *)&subrect, sz_rfbRectangle)) return False; subrect.x = Swap16IfLE(subrect.x); subrect.y = Swap16IfLE(subrect.y); subrect.w = Swap16IfLE(subrect.w); subrect.h = Swap16IfLE(subrect.h); FILL_RECT (rect.r.x + subrect.x, rect.r.y + subrect.y, subrect.w, subrect.h, pix16); } break; case 32: if (!ReadExact(rfbsock, (char *)&pix32, 4)) return False; FILL_RECT (rect.r.x, rect.r.y, rect.r.w, rect.r.h, pix32); for (j = 0; j < hdr.nSubrects; j++) { if (!ReadExact(rfbsock, (char *)&pix32, 4)) return False; if (!ReadExact(rfbsock, (char *)&subrect, sz_rfbRectangle)) return False; subrect.x = Swap16IfLE(subrect.x); subrect.y = Swap16IfLE(subrect.y); subrect.w = Swap16IfLE(subrect.w); subrect.h = Swap16IfLE(subrect.h); FILL_RECT (rect.r.x + subrect.x, rect.r.y + subrect.y, subrect.w, subrect.h, pix32); } break; #else default: warn("No Supported Depth!\n"); #endif } break; } case rfbEncodingCoRRE: DEBUG(("EncodingCopyCoRRE\n")); { rfbRREHeader hdr; CARD8 pix8; CARD16 pix16; CARD32 pix32; int j; CARD8 *ptr; register int x, y, w, h; if (!ReadExact(rfbsock, (char *)&hdr, sz_rfbRREHeader)) return False; hdr.nSubrects = Swap32IfLE(hdr.nSubrects); switch (myFormat.bitsPerPixel) { case 8: if (!ReadExact(rfbsock, (char *)&pix8, 1)) return False; FILL_RECT (rect.r.x, rect.r.y, rect.r.w, rect.r.h, (useBGR233 ? BGR233ToPixel[pix8] : pix8)); if (!ReadExact(rfbsock, buffer, hdr.nSubrects * 5)) return False; ptr = (CARD8 *)buffer; for (j = 0; j < hdr.nSubrects; j++) { pix8 = *ptr++; x = *ptr++; y = *ptr++; w = *ptr++; h = *ptr++; FILL_RECT (rect.r.x + x, rect.r.y + y, w, h, (useBGR233 ? BGR233ToPixel[pix8] : pix8)); } break; #if 0 case 16: if (!ReadExact(rfbsock, (char *)&pix16, 2)) return False; FILL_RECT (rect.r.x, rect.r.y, rect.r.w, rect.r.h, pix16); if (!ReadExact(rfbsock, buffer, hdr.nSubrects * 6)) return False; ptr = (CARD8 *)buffer; for (j = 0; j < hdr.nSubrects; j++) { pix16 = *(CARD16 *)ptr; ptr += 2; x = *ptr++; y = *ptr++; w = *ptr++; h = *ptr++; FILL_RECT (rect.r.x + x, rect.r.y + y, w, h, pix16); } break; case 32: if (!ReadExact(rfbsock, (char *)&pix32, 4)) return False; FILL_RECT (rect.r.x, rect.r.y, rect.r.w, rect.r.h, pix32); if (!ReadExact(rfbsock, buffer, hdr.nSubrects * 8)) return False; ptr = (CARD8 *)buffer; for (j = 0; j < hdr.nSubrects; j++) { pix32 = *(CARD32 *)ptr; ptr += 4; x = *ptr++; y = *ptr++; w = *ptr++; h = *ptr++; FILL_RECT (rect.r.x + x, rect.r.y + y, w, h, pix32); } break; #else default: warn("No Supported Depth!\n"); #endif } break; } case rfbEncodingHextile: DEBUG(("EncodingHextile\n")); { switch (myFormat.bitsPerPixel) { case 8: DEBUG(("EncodingHextile8\n")); if (!HandleHextileEncoding8(rect.r.x, rect.r.y, rect.r.w, rect.r.h)) return False; break; #if 0 case 16: if (!HandleHextileEncoding16(rect.r.x, rect.r.y, rect.r.w, rect.r.h)) return False; break; case 32: if (!HandleHextileEncoding32(rect.r.x, rect.r.y, rect.r.w, rect.r.h)) return False; break; #else default: warn("No Supported Depth!\n"); #endif } break; } default: fprintf(stderr,"%s: unknown rect encoding %d\n",programName, (int)rect.encoding); return False; } } sendUpdateRequest = True; break; } case rfbBell: DEBUG(("Bell\n")); BELL; break; case rfbServerCutText: DEBUG(("ServerCutText\n")); { char *str; if (!ReadExact(rfbsock, ((char *)&msg) + 1, sz_rfbServerCutTextMsg - 1)) return False; msg.sct.length = Swap32IfLE(msg.sct.length); str = malloc(msg.sct.length); if (!ReadExact(rfbsock, str, msg.sct.length)) return False; /* XSelectInput(dpy, DefaultRootWindow(dpy), 0); XStoreBytes(dpy, str, msg.sct.length); XSetSelectionOwner(dpy, XA_PRIMARY, None, CurrentTime); XSelectInput(dpy, DefaultRootWindow(dpy), PropertyChangeMask); */ free(str); break; } default: fprintf(stderr,"%s: unknown message type %d from VNC server\n", programName,msg.type); return False; } return True; } #define GET_PIXEL8(pix, ptr) ((pix) = *(ptr)++) #define GET_PIXEL16(pix, ptr) (((CARD8*)&(pix))[0] = *(ptr)++, \ ((CARD8*)&(pix))[1] = *(ptr)++) #define GET_PIXEL32(pix, ptr) (((CARD8*)&(pix))[0] = *(ptr)++, \ ((CARD8*)&(pix))[1] = *(ptr)++, \ ((CARD8*)&(pix))[2] = *(ptr)++, \ ((CARD8*)&(pix))[3] = *(ptr)++) #define DEFINE_HEXTILE(bpp) \ static Bool \ HandleHextileEncoding##bpp(int rx, int ry, int rw, int rh) \ { \ CARD##bpp bg, fg; \ int i, col; \ CARD8 *ptr; \ int x, y, w, h; \ int sx, sy, sw, sh; \ CARD8 subencoding; \ CARD8 nSubrects; \ \ for (y = ry; y < ry+rh; y += 16) { \ for (x = rx; x < rx+rw; x += 16) { \ w = h = 16; \ if (rx+rw - x < 16) \ w = rx+rw - x; \ if (ry+rh - y < 16) \ h = ry+rh - y; \ \ if (!ReadExact(rfbsock, (char *)&subencoding, 1)) \ return False; \ \ if (subencoding & rfbHextileRaw) { \ if (!ReadExact(rfbsock, buffer, w * h * (bpp / 8))) \ return False; \ \ CopyDataToScreen((CARD8 *)buffer, x, y, w, h); \ continue; \ } \ \ if (subencoding & rfbHextileBackgroundSpecified) \ if (!ReadExact(rfbsock, (char *)&bg, (bpp/8))) \ return False; \ \ if ((bpp == 8) && useBGR233) \ col = BGR233ToPixel[bg]; \ else \ col = bg; \ \ FILL_RECT (x, y, w, h, col); \ \ if (subencoding & rfbHextileForegroundSpecified) \ if (!ReadExact(rfbsock, (char *)&fg, (bpp/8))) \ return False; \ \ if (!(subencoding & rfbHextileAnySubrects)) { \ continue; \ } \ \ if (!ReadExact(rfbsock, (char *)&nSubrects, 1)) \ return False; \ \ ptr = (CARD8 *)buffer; \ \ if (subencoding & rfbHextileSubrectsColoured) { \ if (!ReadExact(rfbsock, buffer, nSubrects * (2 + (bpp / 8)))) \ return False; \ \ for (i = 0; i < nSubrects; i++) { \ GET_PIXEL##bpp(fg, ptr); \ sx = rfbHextileExtractX(*ptr); \ sy = rfbHextileExtractY(*ptr); \ ptr++; \ sw = rfbHextileExtractW(*ptr); \ sh = rfbHextileExtractH(*ptr); \ ptr++; \ if ((bpp == 8) && useBGR233) \ col = BGR233ToPixel[fg]; \ else \ col = fg; \ \ FILL_RECT (x + sx, y + sy, sw, sh, col); \ } \ \ } else { \ if (!ReadExact(rfbsock, buffer, nSubrects * 2)) \ return False; \ \ if ((bpp == 8) && useBGR233) \ col = BGR233ToPixel[fg]; \ else \ col = fg; \ \ for (i = 0; i < nSubrects; i++) { \ sx = rfbHextileExtractX(*ptr); \ sy = rfbHextileExtractY(*ptr); \ ptr++; \ sw = rfbHextileExtractW(*ptr); \ sh = rfbHextileExtractH(*ptr); \ ptr++; \ FILL_RECT (x + sx, y + sy, sw, sh, col); \ } \ } \ } \ } \ \ return True; \ } DEFINE_HEXTILE(8) DEFINE_HEXTILE(16) DEFINE_HEXTILE(32) /* * PrintPixelFormat. */ static void PrintPixelFormat(format) rfbPixelFormat *format; { if (format->bitsPerPixel == 1) { fprintf(stderr,"Single bit per pixel.\n"); fprintf(stderr, "%s significant bit in each byte is leftmost on the screen.\n", (format->bigEndian ? "Most" : "Least")); } else { fprintf(stderr,"%d bits per pixel.\n",format->bitsPerPixel); if (format->bitsPerPixel != 8) { fprintf(stderr,"%s significant byte first in each pixel.\n", (format->bigEndian ? "Most" : "Least")); } if (format->trueColour) { fprintf(stderr,"True colour: max red %d green %d blue %d\n", format->redMax, format->greenMax, format->blueMax); fprintf(stderr," shift red %d green %d blue %d\n", format->redShift, format->greenShift, format->blueShift); } else { fprintf(stderr,"Uses a colour map (not true colour).\n"); } } } mgvncviewer/rfbproto.o100644 1750 1750 30643 6636034661 14114 0ustar yukiusers 8 %s: couldn't convert '%s' to host address %s: unable to connect to VNC server US]EPSuS5hh6u uq| 5h+hG1]RFB %03d.%03d %s: Not a valid VNC server %s: VNC server supports protocol version %d.%d (viewer %d.%d) %s: VNC connection failed: %.*s %s: No authentication needed %s: VNC server uses the old authentication scheme. You should kill your old desktop(s) and restart. If you really need to connect to this desktop use vncviewer3.2 Password: %s: Reading password failed %s: VNC authentication succeeded %s: VNC authentication failed %s: VNC authentication failed - too many tries %s: Unknown VNC authentication result: %d %s: Unknown authentication scheme from VNC server: %d %s: Desktop name "%s" %s: Connected to VNC server, using protocol version %d.%d %s: VNC server default format: Ue[^_UWVSM ME9MME9EE+ENjE E+EjEP5 Et;Ph 5 VWuuh xtjEP5[ R=tE]SVWuu&EtjEP5 EjEP5  EE@Ph 5 E}$]G%EуMG%pЃPG=t SRVEEPEEP3EE9E|EPh 5 u 1=tE]E}tW%EуMG%pЃPGSRVEPEEPEE9E|EEE9EiEE E9EBe[^_UWVSM ME9pMME9JEE+EƋE E+EjEP5 Et?Ph 5 ^SVuuh tjEP5o "}WSVuuREtjEP58 EIjEP5  EEPh 5 1}ECEC%EуMC%@EЃ@C}WPuEPEEPrFE9|EPh 5I u 1}1}tR%EуMC%@EЃ@CWPuEPEEPFE9|EEE9EEE E9Ee[^_U$WVSM ME9|MME9VEE+EƋE E+EjEP59 Et?Ph 5 iSVuuh tjEP5 .uSVuuEtjEP5 EWjEP5x  EERh 5D 1}ECECECEC%EуMC%@E܉Ѓ@CuPu܋EPEEPFE9|EPh 5 u 1}1}tS%EуMC%@E܉Ѓ@CWPu܋EPEEP>FE9|EEE9EEE E9Ee[^_Single bit per pixel. MostLeast%s significant bit in each byte is leftmost on the screen. %d bits per pixel. %s significant byte first in each pixel. True colour: max red %d green %d blue %d shift red %d green %d blue %d Uses a colour map (not true colour). US]<u7hh{tPh#h%Ph_h ;t#{tPhshg {t>CPCPCPhh@C PC PC Phh"hh]        zm h cS N IC80 + &4 [ V P04     ^ Y D4 ) $ 0     4   4       4   n0 iQ L F' " y4 3 2   4 3 2 H C =&    4 3 2   0 g b \? :    7    F5 0 (  6  4 3 v2 I9 4 ."4 3 2    } x Z4 ,3 2    | b4 ?3 12      1 jN= 8 0    n i d_ H C >9 !  rVE @   . -     E .  )   p 0 ( * ' % &       L  D       #  " q ! ] G (  #     b F (                    u p c \ V Q H B              |v o ` VE ? -            jY B       wr c^ P K FA ,   n W N E               } x sn ` % 1PEUbhq| '0AOS`r< ,\ J]k~L  4  -EKQj\gcc2_compiled.___gnu_compiled_c_endianTest_ConnectToRFBServer_StringToIPAddr_programName___sF_fprintf_ConnectToTcpAddr_rfbsock_InitialiseRFBConnection_listenSpecified_errorMessageFromReadExact_ReadExact_sscanf_sprintf_WriteExact_malloc_passwdFile_vncDecryptPasswdFromFile_getpass_vncEncryptBytes_shareDesktop_si_desktopName_PrintPixelFormat_SetFixColourMap_SetFormatAndEncodings_myFormat_nExplicitEncodings_explicitEncodings_SameMachine_addCopyRect_addHextile_addCoRRE_addRRE_SendIncrementalFramebufferUpdateRequest_SendFramebufferUpdateRequest_updateRequestTime_gettimeofday_sendUpdateRequest_SendPointerEvent_SendKeyEvent_SendClientCutText_HandleRFBServerMessage_ShutdownMgl_err_buffer_CopyDataToScreen_BitBltScreen_useBGR233_BGR233ToPixel_FillRectScreen_HandleHextileEncoding8_warn_free_HandleHextileEncoding16_HandleHextileEncoding32mgvncviewer/sockets.c100644 1750 1750 13251 6636034663 13714 0ustar yukiusers/* * Copyright (C) 1997, 1998 Olivetti & Oracle Research Laboratory * * This is free software; you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation; either version 2 of the License, or * (at your option) any later version. * * This software is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with this software; if not, write to the Free Software * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, * USA. */ /* * sockets.c - functions to deal with sockets. */ #include #include #include #include #include #include #include #include void PrintInHex(char *buf, int len); Bool errorMessageFromReadExact = True; /* * Read an exact number of bytes, and don't return until you've got them. */ Bool ReadExact(int sock, char *buf, int n) { int i = 0; int j; while (i < n) { j = read(sock, buf + i, (n - i)); if (j <= 0) { if (j < 0) { fprintf(stderr,programName); perror(": read"); } else { if (errorMessageFromReadExact) { fprintf(stderr,"%s: read failed\n",programName); } } return False; } i += j; } if (debug) PrintInHex(buf,n); return True; } /* * Write an exact number of bytes, and don't return until you've sent them. */ Bool WriteExact(int sock, char *buf, int n) { int i = 0; int j; while (i < n) { j = write(sock, buf + i, (n - i)); if (j <= 0) { if (j < 0) { fprintf(stderr,programName); perror(": write"); } else { fprintf(stderr,"%s: write failed\n",programName); } return False; } i += j; } return True; } /* * ConnectToTcpAddr connects to the given TCP port. */ int ConnectToTcpAddr(unsigned int host, int port) { int sock; struct sockaddr_in addr; int one = 1; addr.sin_family = AF_INET; addr.sin_port = htons(port); addr.sin_addr.s_addr = host; sock = socket(AF_INET, SOCK_STREAM, 0); if (sock < 0) { fprintf(stderr,programName); perror(": ConnectToTcpAddr: socket"); return -1; } if (connect(sock, (struct sockaddr *)&addr, sizeof(addr)) < 0) { fprintf(stderr,programName); perror(": ConnectToTcpAddr: connect"); close(sock); return -1; } if (setsockopt(sock, IPPROTO_TCP, TCP_NODELAY, (char *)&one, sizeof(one)) < 0) { fprintf(stderr,programName); perror(": ConnectToTcpAddr: setsockopt"); close(sock); return -1; } return sock; } /* * ListenAtTcpPort starts listening at the given TCP port. */ int ListenAtTcpPort(int port) { int sock; struct sockaddr_in addr; int one = 1; addr.sin_family = AF_INET; addr.sin_port = htons(port); addr.sin_addr.s_addr = INADDR_ANY; sock = socket(AF_INET, SOCK_STREAM, 0); if (sock < 0) { fprintf(stderr,programName); perror(": ListenAtTcpPort: socket"); return -1; } if (setsockopt(sock, SOL_SOCKET, SO_REUSEADDR, (const char *)&one, sizeof(one)) < 0) { fprintf(stderr,programName); perror(": ListenAtTcpPort: setsockopt"); close(sock); return -1; } if (bind(sock, (struct sockaddr *)&addr, sizeof(addr)) < 0) { fprintf(stderr,programName); perror(": ListenAtTcpPort: bind"); close(sock); return -1; } if (listen(sock, 5) < 0) { fprintf(stderr,programName); perror(": ListenAtTcpPort: listen"); close(sock); return -1; } return sock; } /* * AcceptTcpConnection accepts a TCP connection. */ int AcceptTcpConnection(int listenSock) { int sock; struct sockaddr_in addr; int addrlen = sizeof(addr); int one = 1; sock = accept(listenSock, (struct sockaddr *) &addr, &addrlen); if (sock < 0) { fprintf(stderr,programName); perror(": AcceptTcpConnection: accept"); return -1; } if (setsockopt(sock, IPPROTO_TCP, TCP_NODELAY, (char *)&one, sizeof(one)) < 0) { fprintf(stderr,programName); perror(": AcceptTcpConnection: setsockopt"); close(sock); return -1; } return sock; } /* * StringToIPAddr - convert a host string to an IP address. */ int StringToIPAddr(const char *str, unsigned int *addr) { struct hostent *hp; if ((*addr = inet_addr(str)) == -1) { if (!(hp = gethostbyname(str))) return 0; *addr = *(unsigned int *)hp->h_addr; } return 1; } /* * Test if the other end of a socket is on the same machine. */ Bool SameMachine(int sock) { struct sockaddr_in peeraddr, myaddr; int addrlen = sizeof(struct sockaddr_in); getpeername(sock, (struct sockaddr *)&peeraddr, &addrlen); getsockname(sock, (struct sockaddr *)&myaddr, &addrlen); return (peeraddr.sin_addr.s_addr == myaddr.sin_addr.s_addr); } /* * Print out the contents of a packet for debugging. */ void PrintInHex(char *buf, int len) { int i, j; char c, str[17]; str[16] = 0; fprintf(stderr,"ReadExact: "); for (i = 0; i < len; i++) { if ((i % 16 == 0) && (i != 0)) { fprintf(stderr," "); } c = buf[i]; str[i % 16] = (((c > 31) && (c < 127)) ? c : '.'); fprintf(stderr,"%02x ",(unsigned char)c); if ((i % 4) == 3) fprintf(stderr," "); if ((i % 16) == 15) { fprintf(stderr,"%s\n",str); } } if ((i % 16) != 0) { for (j = i % 16; j < 16; j++) { fprintf(stderr," "); if ((j % 4) == 3) fprintf(stderr," "); } str[i % 16] = 0; fprintf(stderr,"%s\n",str); } fflush(stderr); } mgvncviewer/vncviewer.h100644 1750 1750 11330 6636033145 14244 0ustar yukiusers/* * Copyright (C) 1997, 1998 Olivetti & Oracle Research Laboratory * * This is free software; you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation; either version 2 of the License, or * (at your option) any later version. * * This software is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with this software; if not, write to the Free Software * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, * USA. */ /* * vncviewer.h */ /* * Changes 1998.12.14 by Yukihiro HAYASHI */ #include #include #include #include #include #include #include #define USE_MGL extern int endianTest; #define Swap16IfLE(s) \ (*(char *)&endianTest ? ((((s) & 0xff) << 8) | (((s) >> 8) & 0xff)) : (s)) #define Swap32IfLE(l) \ (*(char *)&endianTest ? ((((l) & 0xff000000) >> 24) | \ (((l) & 0x00ff0000) >> 8) | \ (((l) & 0x0000ff00) << 8) | \ (((l) & 0x000000ff) << 24)) : (l)) #define MAX_ENCODINGS 10 /* args.c */ extern char *programName; extern char hostname[]; extern int port; extern Bool listenSpecified; extern int listenPort, flashPort; extern char *displayname; extern Bool shareDesktop; extern CARD32 explicitEncodings[]; extern int nExplicitEncodings; extern Bool addCopyRect; extern Bool addRRE; extern Bool addCoRRE; extern Bool addHextile; extern Bool useBGR233; extern Bool forceOwnCmap; extern Bool forceTruecolour; extern int requestedDepth; extern char *passwdFile; extern Bool outlineSolid; extern int updateRequestPeriodms; extern int delay; extern Bool debug; extern void processArgs(int argc, char **argv); extern void usage(); /* rfbproto.c */ extern int rfbsock; extern Bool canUseCoRRE; extern Bool canUseHextile; extern char *desktopName; extern rfbPixelFormat myFormat; extern rfbServerInitMsg si; extern struct timeval updateRequestTime; extern Bool sendUpdateRequest; extern Bool ConnectToRFBServer(const char *hostname, int port); extern Bool InitialiseRFBConnection(); extern Bool SetFormatAndEncodings(); extern Bool SendIncrementalFramebufferUpdateRequest(); extern Bool SendFramebufferUpdateRequest(int x, int y, int w, int h, Bool incremental); extern Bool SendPointerEvent(int x, int y, int buttonMask); extern Bool SendKeyEvent(CARD32 key, Bool down); extern Bool SendClientCutText(char *str, int len); extern Bool HandleRFBServerMessage(); #ifdef USE_X /* x.c */ extern Display *dpy; extern Window canvas; extern Colormap cmap; extern GC gc; extern unsigned long BGR233ToPixel[]; extern Bool CreateXWindow(); extern void ShutdownX(); extern Bool HandleXEvents(); extern Bool AllXEventsPredicate(Display *dpy, XEvent *ev, char *arg); extern void CopyDataToScreen(CARD8 *buf, int x, int y, int width, int height); /* Should write FILL_RECT etc. here so that rfbproto.c is independent * of display lib */ #endif /* USE_X */ #ifdef USE_SVGALIB /* svga.c */ extern unsigned long BGR233ToPixel[]; extern Bool InitSvga (void); extern void ShutdownSvga (void); extern void HandleKeyboardEvent (void); extern void HandleMouseEvent (void); extern void CopyDataToScreen(CARD8 *buf, int x, int y, int width, int height); extern Bool svncKeyboardInit(void); #define STORE_COLOUR(xc) gl_setpalettecolor ((xc).pixel, (xc).red >> 10, \ (xc).green >> 10, (xc).blue >> 10) #define COPY_AREA(x1 ,y1, w, h, x2, y2) gl_copybox (x1, y1, w, h, x2, y2) #define FILL_RECT(x, y, w, h, col) gl_fillbox (x, y, w, h, col) #define BELL #endif #ifdef USE_MGL /* mgl-util.c */ #define DEBUG(x) /* printf x */ extern unsigned char BGR233ToPixel[]; #define STORE_COLOUR(xc) #define COPY_AREA(src_x ,src_y, w, h, dest_x, dest_y) BitBltScreen(src_x,src_y,w,h,dest_x,dest_y) /* #define FILL_RECT(x, y, w, h, col) (printf("fill_rect x=%d,y=%d,w=%d,h=%d,col=%d\n",x,y,w,h,col),set_color(col),fill_rect(x,y,w,h)) */ #define FILL_RECT(x, y, w, h, col) FillRectScreen(x,y,w,h,col) #define BELL #endif /* sockets.c */ extern Bool errorMessageFromReadExact; extern Bool ReadExact(int sock, char *buf, int n); extern Bool WriteExact(int sock, char *buf, int n); extern int ListenAtTcpPort(int port); extern int ConnectToTcpAddr(unsigned int host, int port); extern int AcceptTcpConnection(int listenSock); extern int StringToIPAddr(const char *str, unsigned int *addr); extern Bool SameMachine(int sock); /* listen.c */ extern void listenForIncomingConnections(); mgvncviewer/sockets.o100644 1750 1750 6436 6636034704 13713 0ustar yukiusershP: read%s: read failed UWVS} u19}d)P;Pu D}5hh =t5hh~19|=tVWe[^_: write%s: write failed UWVS} u19}\)P;Pu <}5hh5hh19|e[^_: ConnectToTcpAddr: socket: ConnectToTcpAddr: connect: ConnectToTcpAddr: setsockoptUSUEEfE fEUjjj7à }5hhCjjEPS }5hh^3jEPjjS|&5hhzS]: ListenAtTcpPort: socket: ListenAtTcpPort: setsockopt: ListenAtTcpPort: bind: ListenAtTcpPort: listenUSEEfEfEEjjjà }!5hhbjEPjhS}5hh|XjEPS }5hh+jSt|&5hXhNSH]: AcceptTcpConnection: accept: AcceptTcpConnection: setsockoptUSEEEPEPuà }5hh>jEPjjS|&5hhzSt]UVS]u SWuSGu1@e[^U$VSuE]SEPVSEPVE9E%e[^ReadExact: %02x %s UWVS] Ehh19uth(hu} >}F$)ˆ<^w L*D*.Ph4h4}F$)lj uh:h }F$)ljuEPh<h F9Dt~}F$)Ã@h@h؅}C$)ljuh:hC~}F$)ƉD(EPh<hQ hDe[^_    { v qS N I        }_ Z U      }x s n \ H C> 9 4 %       |w r m ` OJ E @ 3      T N ID ? : (          %       ~ y to f\ WR M H 9 %@KQ^dmu|D (7DQ^fgcc2_compiled.___gnu_compiled_c_errorMessageFromReadExact_ReadExact_read_programName___sF_fprintf_perror_debug_PrintInHex_WriteExact_write_ConnectToTcpAddr_socket_connect_setsockopt_close_ListenAtTcpPort_bind_listen_AcceptTcpConnection_accept_StringToIPAddr_inet_addr_gethostbyname_SameMachine_getpeername_getsockname_fflushmgvncviewer/mgvncviewer.o100644 1750 1750 3431 6636034722 14564 0ustar yukiusers`hpRemote Frame Buffer w=%d, h=%d selectU4WVSu] SV=u 5hu j5u jskuj`[uRjKjPPjj-u!jPPhEE' ]=jEP+U؉U̍<}̍E̍=<׉}̋ +M܉ȿƋM~$ș։M؍4u̍<}̍E_uVjOj SDM DEPjjShttSh jDtujR M E > 5           Y M 2 ,           { v n ` [ V M D = 8 %(+3=J[ak2Irygcc2_compiled.___gnu_compiled_c_main___main_mgl_init_processArgs_listenSpecified_port_hostname_ConnectToRFBServer_exit_rfbsock_InitialiseRFBConnection_InitMgl_SetFormatAndEncodings_ShutdownMgl_si_SendFramebufferUpdateRequest_printf_sendUpdateRequest_gettimeofday_updateRequestTime_updateRequestPeriodms_SendIncrementalFramebufferUpdateRequest_bzero_select_perror_HandleRFBServerMessage_RedrawMgl_HandleKeyboardEventmgvncviewer/mgl-util.o100644 1750 1750 7401 6636034743 13766 0ustar yukiusers`UddOut of Memory! USjPP uh7jxfff   1ې؃J(C~θ]U5Ujhh555jjj$hjjjjPPjjj}$uget_key(0) = %02x key_mode = %d UWVSjCÃtSh.ULt6Qt%tXjjPPjjxj9O9~ dcoccC799~ dZXC)21b3TQts LtxAX0"x ct~ ztkjjPPjjjjjj55j55_ j5P:j5P" jP59 1 @jjjPP5jjj$hjjjjPPjjj$5hjSjSe[^_UWVS}5m19u~<19]~,UPGRE PU9 CU9]F9u"e[^_Ujuuu uPuuPUWVS} u]5S}tt&VuWu3uWu WEEP >PuWuxe[^_????????????" |( Z' G& ,% & !   " !    p h ^ YT N F :0                y q f a [ S N H 6     - "           s g ^ G = 5 ,      si T I C = #               }l g a Y P - #    %-P8BLSZ_dHmy},$*HZh|zgcc2_compiled.___gnu_compiled_c_bitmap_mode_icon_mgl_init_key_mode_y_off_x_off_p_y_p_x_InitMgl_open_graph_si_create_memscreen_screen_frame_ShutdownMgl_err_myFormat_BGR233ToPixel_free_screen_close_graph_RedrawMgl_bitblt_refresh_HandleKeyboardEvent_get_key_printf_exit_SendFramebufferUpdateRequest_SendPointerEvent_SendKeyEvent_CopyDataToScreen_push_screen_draw_pixel_wc_pop_screen_BitBltScreen_FillRectScreen_set_color_fill_rect_draw_pixel_draw_linemgvncviewer/mgvncviewer100755 1750 1750 77124 6636034745 14371 0ustar yukiusers` UVS]sS{t u9w1t r8t8/u H r@8uEpEt51V33P_/usr/libexec/ld.soCouldn't open . Failure reading ld.so Bad magic: ld.so Cannot map ld.so (text) Cannot map ld.so (data) Cannot map ld.so (bss) ld.so failed: UDVSjjhj3Eu?jhjjjhjj jhjjjjj URujwjhjjjjUf t$f}tjhjjjjEEЁ t4t†f t ʉ QRjujjujhE܃$ujhjjjjU= t!=tҁ tuKMEЁ t*t†f t ,M= t=t tY 1QRjujjuċUURh($ujhjjjjUȅtIjjjuhjRUUURh$ujhjjjjEp1UE rUEEu܃ ]Sj֣D~U<~uuSj֣D~ p<~=D~uyj h4jj,<~t@R ҉Åt5jhAjj؃;t @8u)RSjjjhDjjjj=D~~<~r[e[^U<~t u u1U<~t u@ÐUU <~u1Ð=D~ Ru@uRu@Service unavailableU<~t@ ÐbYXQQrø usage: %s [] : are: [-shared] [-raw] [-copyrect] [-rre] [-corre] [-hextile] [-nocopyrect] [-norre] [-nocorre] [-nohextile] [-bgr233] [-owncmap] [-truecolour] [-depth ] [-passwd ] [-period ] [-delay ] [-debug] U50hhX1HYj1Y-display-listen-shared-rre-corre-hextile-copyrect-raw-norre-nocorre-nohextile-nocopyrect-bgr233-owncmap-truecolour-depth-passwd-outlinesolid-period-delay-debuglisten not implemented for this viewer %[^:]:%dU WVSU 0E]9]VUU8-BƿD u'UE]9]|U(rƿMuMrEE]9]U2W| r]3W$rƿUu,rsƿ]u%0r10r8r9ƿbu%0r10ru50h[+EE9E /jEP5h. =lrt+U% %  EEP=uS5h. S= EP50hy+hX1=e[^_UWVSM ME9MME9EE+ENjE E+EjEP5h. Et;PhH~5h. VWuuhH~$tjEP5h.s R=DrtE/]SVWuufEtjEP5h.$ EjEP5h. H~EE@PhH~5h. E}$]G%EуMG%pЃPG=Drt /SRVEEPEEPsEE9E|EPhH~5h. u 1=DrtE/]E}tW%EуMG%pЃPGSRVEPEEPEE9E|EEE9EiEE E9EBe[^_UWVSM ME9pMME9JEE+EƋE E+EjEP5h. Et?PhH~5h. ^SVuuhH~:tjEP5h. "}WSVuuEtjEP5h.P EIjEP5h.* H~EEPhH~5h. 1}ECEC%EуMC%@EЃ@C}WPuEPEEPFE9|EPhH~5h.a u 1}1}tR%EуMC%@EЃ@CWPuEPEEP&FE9|EEE9EEE E9Ee[^_U$WVSM ME9|MME9VEE+EƋE E+EjEP5h.Q Et?PhH~5h.& iSVuuhH~tjEP5h. .uSVuuEtjEP5h. EWjEP5h. H~EERhH~5h.\ 1}ECECECEC%EуMC%@E܉Ѓ@CuPu܋EPEEP FE9|EPhH~5h. u 1}1}tS%EуMC%@E܉Ѓ@CWPu܋EPEEP~FE9|EEE9EEE E9Ee[^_Single bit per pixel. MostLeast%s significant bit in each byte is leftmost on the screen. %d bits per pixel. %s significant byte first in each pixel. True colour: max red %d green %d blue %d shift red %d green %d blue %d Uses a colour map (not true colour). US]<u7h!;hX104=;{t8;PhC;hX1 4%Ph;hX13 ;t#=;{t8;Ph;hX13 {t>CPCPCPh;hX13C PC PC Ph;hX13h<hX1u3]: read%s: read failed UWVS} u19}d)P;Pu3 D}50hX13h =|3 =|rt50h'=hX1219|=drtVWe[^_: write%s: write failed UWVS} u19}\)P;Pu'3 <}50hX1^2h=250h=hX1;219|e[^_: ConnectToTcpAddr: socket: ConnectToTcpAddr: connect: ConnectToTcpAddr: setsockoptUSUEEfE fEUjjj;2à }50hX11hc>1jjEPS2 }50hX1Q1h~>3jEPjjS1|&50hX11h>1S|1]: ListenAtTcpPort: socket: ListenAtTcpPort: setsockopt: ListenAtTcpPort: bind: ListenAtTcpPort: listenUSEEfEfEEjjj 1à }!50hX1Q0h?0jEPjhS0}50hX10h?XjEPS0 }50hX1/h?+jSh0|&50hX1/h?*0S0]: AcceptTcpConnection: accept: AcceptTcpConnection: setsockoptUSEEEPEPu/à }50hX1"/h@/>jEPjjS/|&50hX1.hAV/SH/]UVS]u S#/uS /u1@e[^U$VSuE]SEPV.SEPV.E9E%e[^ReadExact: %02x %s UWVS] Eh}F$)ˆ<^w L*D*.PhTBhX1-}F$)lj uhZBhX1p-}F$)ljuEPh\BhX1D- F9Dt~}F$)Ã@h`BhX1 -؅}C$)ljuhZBhX1,C~}F$)ƉD(EPh\BhX1, hX1,e[^_Remote Frame Buffer w=%d, h=%d selectU4WVSu] SV=ru 51hl.u j,5h.-u j+uj+{uj+j0P0Pjjuj+0P0PhCb,EE' ]=/jEP+0+U؉U̍<}̍E̍=\r<׉}̋ 0+M܉ȿƋM~$ș։M؍4u̍<}̍Euj*j S+Mh. DEPjjShd+ttShD+ejn*h.Dtu2j;*;Ud.11P.dL.dOut of Memory! US +j0P0P+1 uhFj)T.U.V.W.fZ.fX.f\.^._.`.1ې؃J(/C~θ]U51B*5*Ujhh515151jjj)$hjjjjd.LsPjjj)$)get_key(0) = %02x key_mode = %d UWVSj)ÃtShG2)d.ULt6Qt%tXj'j0P0Pjjxj'019O9~ 1d11c1o1c1c1C170199~ 1 d1ZXC)21b3TQts LtxAX0"x ct~ ztkj&j0P0Pjj j%jjj5P.5L.j5P.5L._L. L.j5P.P:L.L.j5P.P"P. P. P.jP5L.U 1 d.@d.jjj1P1P51jjj&$hjjjjd.LsPjjj%$%5d.hG%jS,jS$e[^_UWVS}51%19u~<19]~,U/PGRE PU}% CU9]F9u.%e[^_Ujuuu u1PuuP1%UWVS} u]51 %S$}tt&VuWu$3uWu$ WEEP >PuWu$$e[^_wU WVS] hLS$ƃu hS$1ۃ0Ґ}щH9sED+D+C~jhsEPP1ۃL+FEHFUJy 9V t Ȉ VQY$C~V:$1e[^_rUWVS]j "hMS$à u1XS#1L1CPSHy S#ẗ>F~jhsWW Ge[^_UVSuj#Ps#1ۃ_#3C~e[^U WVSuU 1ې0щH9s D+D+C~jEP&1ۃ3PP~e[^_UWVSuf} f 1uÃ0]4uD)A7~DžDžuf u+E}sDŽDŽ1ɋȃD(D(D)A~ڹȃ7D(D(D)A7~1ɺDuu|(t : v|(t : A~ P [^_UWVSu]1% ‰% ‰% ‰ ? ‰% ‰? ‰G~EP<t[^_USMstts9r]USMstts9r]UVSu ]SuhsSVSge[^USU]  B B B B  B B B ]UME Q@Q@@@Q@Q@PUWVS}7_1؉1ˉ1Ɖ11ˉ1Ɖ133331΍1É11Ή1É1؉᪪11E} 3ʃ??| z? x? v3ȃ? }? {? y? w1։3ʃ??| z? x? v3} ȃ? }? {? y? w1E}1؉᪪111؉1ˉ1Ɖ1؉33331ˍ1Ɖ11Ή1É11Ë}1Ήwe[^_USp/=p/tЃ;u]USt/u1=x/t@,q,q,qa,q ,&q=,.qh,6qV,>qx,FqM,Nqr,Vq),^q[,fqc,nqT,vqN,~q@,q,q,q-,q ,qj,q2,qb,q',q ,qQ,qL,qw,qe,q,q,qg,r,<'&O)8%%5/>M3C ]E 4!7PUpx$D 1m)/ (:9N.J(X7.~FY +FK*Gh-,v203@ }"V#?&;'6*B+I,n-Q0[1=2T4E5A6a8{9d:P;b<q=M>S?H@ALBC^DGkHI`JoKRL\NOiQWRzSZTeUVgWmX_YfZl[c\w]j^p_r`abtcdsefghijklnouqrstuyvwx|yz{|}~p pq L. P.!&8N@TrLTqZ8Lhpvpqr q T. d. h.q,~@r l)(r l.xq'`T: l/I t/Xpcqo,QwT4r |/ rpq|rTq r8=|p qT*/Pr?NPFYqf /y|(\(pp HHr L$XrL|qW /f$rq$A) 0LrlrA 0sdBqDqtq,|Gq$K6$=lqIpR4qY\rp M,r\qDrp~r 0q qdq%+q4pCqL,qU>gqp 1~k 1?lpPF+LqpAdGpq6.&=5-% <4,$        (3$.6'2, /+0&7!4-)1#                                B@@@BB@@@@BBB@BBB@B@@B@BBBB@B@@@ @ @@@ @ @@ @@ @@@ @@ @@@ @@@@ @ @ @@@@ @@@@@ @ @ @@@@ @@ @@ @ @@ @@@ @@@@ @ @@ @@@@@ @@ @@                             @@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@,~p L. P.&/N7TrCK8LYra T.k d.u h.~,~@r l)(r l.x`T l/ t/,QT#4r0 |/= rI|rd rp8={T*PrNF /|(\(p& ,HAHrOLi 1k 1?"PF,+DAQdG^ 1dPk=w 1~8r&D`r 10rdr 1,LN<~ 1\Q 1T`L  07FX c r 8<H~25|8 = = =C!C0CBPFMPF\PFnLsyLLLNNNsttu4uDuuuuXPQ,R"Q+v0w5x:y?zD{I|N}S`T\Ud__DYNAMIC_p_x_p_y_SetFormatAndEncodings_deskey_passwdFile_dlopen_BitBltScreen_bitmap_myFormat_key_mode_rfbsock__exit_dummy_decl_addHextile_dlclose_SendPointerEvent_displayname_hostname_dlerror___do_global_dtors___DTOR_LIST_____CTOR_LIST___usekey___do_global_ctors_addCopyRect_desktopName_listenPort_errorMessageFromReadExact___progname_ReadExact_SendClientCutText_requestedDepth_vncEncryptBytes_InitMgl_sendUpdateRequest_SendFramebufferUpdateRequest_SendIncrementalFramebufferUpdateRequest_ConnectToRFBServerstart_HandleKeyboardEvent_forceOwnCmap_vncEncryptAndStorePasswd_addCoRRE_outlineSolid_BGR233ToPixel_flashPort_AcceptTcpConnection_SendKeyEvent_si_forceTruecolour_endianTest_StringToIPAddr_programName_fixedkey_PrintInHex_processArgs_RedrawMgl_CopyDataToScreen_usage_updateRequestPeriodms_InitialiseRFBConnection_vncDecryptPasswdFromFile_shareDesktop_useBGR233__exit_dummy_ref_listenSpecified_updateRequestTime___sF_ConnectToTcpAddr_screen_frame_etext_environ_ListenAtTcpPort_mgl_init_HandleRFBServerMessage_SameMachine_ShutdownMgl_port_cpkey_WriteExact_errno_addRRE_SetFixColourMap_main_delay_explicitEncodings_nExplicitEncodings_debug_x_off_dlsym_vncRandomBytes_edata_y_off_des_end___main_FillRectScreen/usr/lib/crt0.oargs.ogcc2_compiled.___gnu_compiled_crfbproto.ogcc2_compiled.___gnu_compiled_c_PrintPixelFormat_buffer_HandleHextileEncoding8_HandleHextileEncoding16_HandleHextileEncoding32sockets.ogcc2_compiled.___gnu_compiled_cmgvncviewer.ogcc2_compiled.___gnu_compiled_cmgl-util.ogcc2_compiled.___gnu_compiled_c_mode_iconvncauth.ogcc2_compiled.___gnu_compiled_cd3des.ogcc2_compiled.___gnu_compiled_c_KnL_KnR_Kn3_Df_Key_bytebit_bigbyte_pc1_totrot_pc2_cookey_scrunch_desfunc_unscrun_SP1_SP2_SP3_SP4_SP5_SP6_SP7_SP8__main.o_exit.omgvncviewer/Imakefile100644 1750 1750 1016 6636033074 13655 0ustar yukiusers #ifdef SunArchitecture CC = gcc CCOPTIONS = CDEBUGFLAGS = -O2 #endif CCOPTIONS = -Wall SRCS = args.c rfbproto.c sockets.c mgvncviewer.c mgl-util.c # kbd.c OBJS = args.o rfbproto.o sockets.o mgvncviewer.o mgl-util.o # kbd.o INCLUDES = -I../include -I/usr/local/lib/mgl -I. VNCAUTH_LIB = ../libvncauth/libvncauth.a MGLLIB = -L/usr/local/lib -lmgl all:: mgvncviewer sockets.c: cp ../vncviewer/sockets.c . NormalProgramTarget(mgvncviewer,$(OBJS),$(DEPXLIB) $(VNCAUTH_LIB),$(MGLLIB) $(VNCAUTH_LIB) $(LIBS),) DependTarget() mgvncviewer/mgvncviewer.c100644 1750 1750 5363 6636031474 14557 0ustar yukiusers/* * Copyright (C) 1997, 1998 Olivetti & Oracle Research Laboratory * * This is free software; you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation; either version 2 of the License, or * (at your option) any later version. * * This software is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with this software; if not, write to the Free Software * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, * USA. */ /* * mgvncviewer.c - VNC viewer for Pocket BSD + MGL * derived from svncviewer.c * by Yukihiro HAYASHI */ #include #include #include #include #include #include "mgl-util.h" int main(int argc, char **argv) { fd_set fds; struct timeval tv, *tvp, timeout; int msWait; mgl_init(); processArgs(argc, argv); if (listenSpecified) { /* listenForIncomingConnections();*/ /* returns only with a succesful connection */ } else { if (!ConnectToRFBServer(hostname, port)) exit(1); } if (!InitialiseRFBConnection(rfbsock)) exit(1); if (!InitMgl()) exit(1); #if 0 if (!FixColourMapEntries()){ ShutdownMgl(); exit(1); } #endif if (!SetFormatAndEncodings()) { ShutdownMgl(); exit(1); } if (!SendFramebufferUpdateRequest(0, 0, si.framebufferWidth, si.framebufferHeight, False)) { ShutdownMgl(); exit(1); } printf("Remote Frame Buffer w=%d, h=%d\n",si.framebufferWidth,si.framebufferHeight); timeout.tv_sec = 0; timeout.tv_usec = 10 * 1000; while (True) { if (sendUpdateRequest) { gettimeofday(&tv, NULL); msWait = (updateRequestPeriodms + ((updateRequestTime.tv_sec - tv.tv_sec) * 1000) + ((updateRequestTime.tv_usec - tv.tv_usec) / 1000)); if (msWait > 0) { tv.tv_sec = msWait / 1000; tv.tv_usec = (msWait % 1000) * 1000; tvp = &tv; } else { if (!SendIncrementalFramebufferUpdateRequest()) { ShutdownMgl(); exit(1); } } } FD_ZERO(&fds); FD_SET(0,&fds); FD_SET(rfbsock,&fds); switch(select(FD_SETSIZE, &fds, NULL, NULL, &timeout)) { case -1: perror("select"); ShutdownMgl(); exit(1); case 0: break; default: if (FD_ISSET(rfbsock, &fds)) { if (!HandleRFBServerMessage()) { ShutdownMgl(); exit(1); } RedrawMgl(); } } HandleKeyboardEvent(); } ShutdownMgl(); return 0; } mgvncviewer/mgl-util.c100644 1750 1750 15324 6636034673 13777 0ustar yukiusers/* Copyright 1998 Yukihiro HAYASHI All rights Reserved. */ #include #include #include #include #include "mgl-util.h" unsigned char BGR233ToPixel[256]; struct screen *screen_frame; int x_off,y_off; int p_x,p_y; int key_mode; #define SCR_MODE 0 #define MOUSE_MODE 1 #define INPUT_MODE 2 #define MODE_NUM 3 #define ICON_X 4 #define ICON_Y 4 #define ICON_WIDTH 16 #define ICON_HEIGHT 16 char bitmap[][4*16]={ { /* SCR_MODE */ 0x00,0xc0,0x03,0x00, 0x00,0xf0,0x0f,0x00, 0x00,0xfc,0x3f,0x00, 0x00,0xff,0xff,0x00, 0xc0,0xf0,0x0f,0x03, 0xf0,0xf0,0x0f,0x0f, 0xfc,0xff,0xff,0x3f, 0xff,0xff,0xff,0xff, 0xff,0xff,0xff,0xff, 0xfc,0xff,0xff,0x3f, 0xf0,0xf0,0x0f,0x0f, 0xc0,0xf0,0x0f,0x03, 0x00,0xff,0xff,0x00, 0x00,0xfc,0x3f,0x00, 0x00,0xf0,0x0f,0x00, 0x00,0xc0,0x03,0x00, }, { /* MOUSE_MODE */ 0xfc,0xfc,0x3f,0x3f, 0xff,0xfc,0x3f,0xff, 0xff,0xfc,0x3f,0xff, 0xff,0xfc,0x3f,0xff, 0xff,0xfc,0x3f,0xff, 0xff,0xfc,0x3f,0xff, 0x00,0x00,0x00,0x00, 0xff,0xff,0xff,0xff, 0xff,0xff,0xff,0xff, 0xff,0xff,0xff,0xff, 0xff,0xff,0xff,0xff, 0xff,0xff,0xff,0xff, 0xff,0xff,0xff,0xff, 0xff,0xff,0xff,0xff, 0xff,0xff,0xff,0xff, 0xfc,0xff,0xff,0x3f, }, { /* INPUT_MODE */ 0x00,0x00,0x00,0x00, 0x00,0x00,0x00,0x00, 0x00,0x00,0x00,0x00, 0x00,0x00,0x00,0x00, 0x00,0x00,0x00,0x00, 0x00,0x00,0x00,0x00, 0x00,0x00,0x00,0x00, 0x00,0x00,0x00,0x00, 0x00,0x00,0x00,0x00, 0x00,0x00,0x00,0x00, 0x00,0x00,0x00,0x00, 0x00,0x00,0x00,0x00, 0x00,0x00,0x00,0x00, 0x00,0x00,0x00,0x00, 0x00,0x00,0x00,0x00, 0x00,0x00,0x00,0x00, }, }; static struct screen mode_icon[] = { {0,4,16,16,bitmap[0],}, {0,4,16,16,bitmap[1],}, {0,4,16,16,bitmap[2],}, }; void mgl_init() { x_off = y_off = key_mode = 0; p_x = p_y = 100; } Bool InitMgl (void) { int i; int b,r,g; open_graph(); screen_frame = create_memscreen(si.framebufferWidth, si.framebufferHeight,NULL); if(screen_frame == NULL){ ShutdownMgl(); err(1,"Out of Memory!\n"); } myFormat.bitsPerPixel = 8; myFormat.depth = 8; #if BYTE_ORDER == LITTIE_ENDIAN myFormat.bigEndian = 0; #else myFormat.bigEndian = 1; #endif myFormat.trueColour = 1; myFormat.redMax = myFormat.greenMax = 7; myFormat.blueMax = 3; myFormat.redShift = 0; myFormat.greenShift = 3; myFormat.blueShift = 6; for(i=0; i<256; i++){ /* XXX $B> 3) & 0x07; b = (i >> 6)*2; BGR233ToPixel[i] = 3 - (g + r + b)/6; } return True; } void ShutdownMgl() { free_screen(screen_frame); close_graph(); } void RedrawMgl() { bitblt(NULL,0,0,screen_frame,x_off,y_off, SCREEN_WIDTH,SCREEN_HEIGHT,0); bitblt(NULL,ICON_X,ICON_Y,&mode_icon[key_mode],0,0, ICON_WIDTH,ICON_HEIGHT,BLT_MASKING + COLOR_WHITE); refresh(); } void HandleKeyboardEvent() { int c; int flag; c = get_key(0); if(c != -1) printf("get_key(0) = %02x\n",c); flag = 1; if(key_mode == SCR_MODE){ switch(c){ case 'Q': ShutdownMgl(); exit(0); case 'L': if (!SendFramebufferUpdateRequest(0, 0, si.framebufferWidth, si.framebufferHeight, False)) { ShutdownMgl(); exit(1); } break; case MK_RIGHT: if(x_off == (si.framebufferWidth - SCREEN_WIDTH)) break; if(x_off > (si.framebufferWidth - SCREEN_WIDTH - 100)) x_off = si.framebufferWidth - SCREEN_WIDTH; else x_off += 100; RedrawMgl(); break; case MK_LEFT: if(x_off == 0) break; if(x_off < 100) x_off = 0; else x_off -= 100; RedrawMgl(); break; case MK_UP: if(y_off == 0) break; if(y_off < 100) y_off = 0; else y_off -= 100; RedrawMgl(); break; case MK_DOWN: if(y_off == si.framebufferHeight - SCREEN_HEIGHT) break; if(y_off > si.framebufferHeight - SCREEN_HEIGHT - 100) y_off = si.framebufferHeight - SCREEN_HEIGHT; else y_off += 100; RedrawMgl(); break; default: flag = 0; } }else if(key_mode == MOUSE_MODE){ switch(c){ case 'Q': ShutdownMgl(); exit(0); case 'L': if (!SendFramebufferUpdateRequest(0, 0, si.framebufferWidth, si.framebufferHeight, False)) { ShutdownMgl(); exit(1); } break; case '1': case 'z': case 'Z': SendPointerEvent(p_x, p_y, 0x01); SendPointerEvent(p_x, p_y, 0); break; case '2': case 'x': case 'X': SendPointerEvent(p_x, p_y, 0x02); SendPointerEvent(p_x, p_y, 0); break; case '3': case 'c': case 'C': SendPointerEvent(p_x, p_y, 0x04); SendPointerEvent(p_x, p_y, 0); break; case MK_RIGHT: p_x += 10; SendPointerEvent(p_x, p_y, 0); break; case MK_LEFT: p_x -= 10; SendPointerEvent(p_x, p_y, 0); break; case MK_UP: p_y -= 10; SendPointerEvent(p_x, p_y, 0); break; case MK_DOWN: p_y += 10; SendPointerEvent(p_x, p_y, 0); break; default: flag = 0; } }else{ flag = 0; } if(!flag){ switch(c){ case MK_F10: key_mode = (key_mode + 1) % MODE_NUM; bitblt(NULL,ICON_X,ICON_Y,screen_frame,x_off + ICON_X,y_off + ICON_Y, ICON_WIDTH,ICON_HEIGHT,0); bitblt(NULL,ICON_X,ICON_Y,&mode_icon[key_mode],0,0, ICON_WIDTH,ICON_HEIGHT,BLT_MASKING + COLOR_WHITE); refresh(); printf("key_mode = %d\n",key_mode); break; default: SendKeyEvent (c, 1); SendKeyEvent (c, 0); } } } /* * CopyDataToScreen. */ void CopyDataToScreen(CARD8 *buf, int x, int y, int width, int height) { int xi,yi; DEBUG(("CopyDataToScreen\n")); /* XXX $B$d%"%$%G%"Ey$,M-$j$^$7$?$i!"2<5-%"%I%l%9$^$G(B $B%a!<%k2<$5$k$H$&$l$7$$$G$9!#(B $B!v;H$$J}(B $B;H$$J}$O!"Fq$7$$$N$G$9$,!"%3%D(B($B!)(B)$B$H$7$F$O!"(BF10$B$G%+!<%=%k%-!<$N%b!<%I$,!"(B $B!V%9%/%m!<%k!W(B->$B!V%^%&%9%+!<%=%k0\F0!W(B->$B!V2?$b$7$J$$(B($B:#$N=j(B key code $B$N(B $BJQ49$7$F$J$$$N$G0UL#L5$7(B)$B!W$N=g$G@Z$jBX$o$k$N$G!"$=$l$rGD0.$9$k;v$G$9!#(B $B0l1~:8>e$K!":#$N%b!<%I$rI=$9%"%$%3%s$r=P$9MM$K$7$^$7$?!#(B $B=*N;$O(B $B%9%/%m!<%k%b!<%I$G(B`Q` $B%-!<$G$9!#(B $B%^%&%9$N%\%?%sA`:n$O%+!<%=%k0\F0%b!<%I$G(B1,2,3$B%-!<$"$k$$$O(Bz,x,c$B%-!<$,(B $B%^%&%9$N%\%?%s(B1,2,3$B$KBP1~$7$^$9!#$?$@$7!"%/%j%C%/$7$+=PMh$^$;$s(B ($B%I%i%C%0=PMh$J$$(B)$B!#(B $B0l1~l9g$O!"(B % mgvncviewer server:1 $B$G$9!#(B $B!v%3%s%Q%$%k(B $B%3%s%Q%$%k$9$k$K$O!"(BVNC$B$N%=!<%9$,I,MW$G$9!#(B($BNc(B: vnc-3.3.2r2_unixsrc.tgz$BEy(B) % mkdir vnc % cd vnc % tar zxf ../vnc-3.3.2r2_unixsrc.tgz % tar zxf ../mgvncviewer-XXXX.tgz % xmkmf % make % cd mgvncviewer % xmkmf % make $B$C$F$J46$8$G%3%s%Q%$%k=PMh$k$O$:$G$9!#(B $B!vL5J]>Z(B $BK\%=%U%H%&%'%"$N;HMQ$K$h$kG!2?$J$kB;32$K$D$$$F$b!$:n $B$,J];}$7$^$9!#(B Copyright 1998 Yukihiro HAYASHI All rights reserved. $B$J$*!"(BGPL2(GNU Public Licence Version 2)$B$K=>$C$F!"J#@=!&HRI[!&JQ99$9$k(B $B$3$H$r5v2D$7$^$9!#(B($B$G$b0l1~O"Mm$/$l$k$H$&$l$7$$$G$9(B)$B!#(B $B$^$?!"K\G[I[$K4^$^$l$k!"(BImakefile, args.c vncviewer.h rfbproto.c $B$O(B svnc-0.1.tgz (http://www.cse.iitb.ernet.in/~sitaram/vnc) $B$NJ*$rNS9,90$,(B $BJQ99$7$^$7$?!#(B $B!vO"Mm@h(B Yukihiro HAYASHI $B!v$=$NB>(B MGL$B$G$O(BModifier$B$, Copyright (C) 19yy This program is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation; either version 2 of the License, or (at your option) any later version. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. You should have received a copy of the GNU General Public License along with this program; if not, write to the Free Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA Also add information on how to contact you by electronic and paper mail. If the program is interactive, make it output a short notice like this when it starts in an interactive mode: Gnomovision version 69, Copyright (C) 19yy name of author Gnomovision comes with ABSOLUTELY NO WARRANTY; for details type `show w'. This is free software, and you are welcome to redistribute it under certain conditions; type `show c' for details. The hypothetical commands `show w' and `show c' should show the appropriate parts of the General Public License. Of course, the commands you use may be called something other than `show w' and `show c'; they could even be mouse-clicks or menu items--whatever suits your program. You should also get your employer (if you work as a programmer) or your school, if any, to sign a "copyright disclaimer" for the program, if necessary. Here is a sample; alter the names: Yoyodyne, Inc., hereby disclaims all copyright interest in the program `Gnomovision' (which makes passes at compilers) written by James Hacker. , 1 April 1989 Ty Coon, President of Vice This General Public License does not permit incorporating your program into proprietary programs. If your program is a subroutine library, you may consider it more useful to permit linking proprietary applications with the library. If this is what you want to do, use the GNU Library General Public License instead of this License.