diff -Naur vnc_unixsrc/Xvnc/config/cf/Imake.tmpl vnc_unixsrc-ram/Xvnc/config/cf/Imake.tmpl --- vnc_unixsrc/Xvnc/config/cf/Imake.tmpl 2002-04-30 09:07:31.000000000 -0400 +++ vnc_unixsrc-ram/Xvnc/config/cf/Imake.tmpl 2009-02-05 00:55:50.000000000 -0500 @@ -301,6 +301,9 @@ #ifndef HasFfs #define HasFfs YES #endif +#ifndef HasFfsl +#define HasFfsl NO +#endif #ifndef HasZlib #define HasZlib NO #endif diff -Naur vnc_unixsrc/Xvnc/config/cf/linux.cf vnc_unixsrc-ram/Xvnc/config/cf/linux.cf --- vnc_unixsrc/Xvnc/config/cf/linux.cf 2006-12-23 07:07:55.000000000 -0500 +++ vnc_unixsrc-ram/Xvnc/config/cf/linux.cf 2009-02-05 01:02:07.000000000 -0500 @@ -382,5 +382,9 @@ # define HasZlib YES #endif +#ifndef HasFfsl +#define HasFfsl YES +#endif + #include #include diff -Naur vnc_unixsrc/Xvnc/programs/Xserver/cfb/cfb8cppl.c vnc_unixsrc-ram/Xvnc/programs/Xserver/cfb/cfb8cppl.c --- vnc_unixsrc/Xvnc/programs/Xserver/cfb/cfb8cppl.c 2000-06-11 08:00:51.000000000 -0400 +++ vnc_unixsrc-ram/Xvnc/programs/Xserver/cfb/cfb8cppl.c 2009-02-05 01:12:38.000000000 -0500 @@ -110,7 +110,7 @@ mfbGetPixelWidthAndPointer (pDstDrawable, widthDst, pdstBase) - bitPos = ffs (bitPlane) - 1; + bitPos = ffsl(bitPlane) - 1; nbox = REGION_NUM_RECTS(prgnDst); pbox = REGION_RECTS(prgnDst); diff -Naur vnc_unixsrc/Xvnc/programs/Xserver/dix/ffsl.c vnc_unixsrc-ram/Xvnc/programs/Xserver/dix/ffsl.c --- vnc_unixsrc/Xvnc/programs/Xserver/dix/ffsl.c 1969-12-31 19:00:00.000000000 -0500 +++ vnc_unixsrc-ram/Xvnc/programs/Xserver/dix/ffsl.c 2009-02-05 01:15:33.000000000 -0500 @@ -0,0 +1,11 @@ +int +ffsl(unsigned long i) +{ + int j = 0; + if (i) + { + for (j = 1; (i & 1) == 0; j++) + i >>= 1; + } + return j; +} diff -Naur vnc_unixsrc/Xvnc/programs/Xserver/dix/Imakefile vnc_unixsrc-ram/Xvnc/programs/Xserver/dix/Imakefile --- vnc_unixsrc/Xvnc/programs/Xserver/dix/Imakefile 2002-04-30 09:07:31.000000000 -0400 +++ vnc_unixsrc-ram/Xvnc/programs/Xserver/dix/Imakefile 2009-02-05 01:16:15.000000000 -0500 @@ -12,14 +12,21 @@ FFS_OBJ = ffs.o #endif +#if !HasFfsl +FFSL_SRC = ffsl.c +FFSL_OBJ = ffsl.o +#endif + SRCS = atom.c colormap.c cursor.c devices.c dispatch.c dixutils.c events.c \ extension.c gc.c globals.c glyphcurs.c grabs.c \ main.c property.c resource.c swaprep.c swapreq.c \ - tables.c window.c initatoms.c dixfonts.c privates.c pixmap.c $(FFS_SRC) + tables.c window.c initatoms.c dixfonts.c privates.c pixmap.c $(FFS_SRC) \ + $(FFSL_SRC) OBJS = atom.o colormap.o cursor.o devices.o dispatch.o dixutils.o events.o \ extension.o gc.o globals.o glyphcurs.o grabs.o \ main.o property.o resource.o swaprep.o swapreq.o \ - tables.o window.o initatoms.o dixfonts.o privates.o pixmap.o $(FFS_OBJ) + tables.o window.o initatoms.o dixfonts.o privates.o pixmap.o $(FFS_OBJ) \ + $(FFSL_OBJ) INCLUDES = -I../include -I$(XINCLUDESRC) -I$(FONTINCSRC) -I$(EXTINCSRC) LINTLIBS = ../os/llib-los.ln diff -Naur vnc_unixsrc/Xvnc/programs/Xserver/hw/vnc/httpd.c vnc_unixsrc-ram/Xvnc/programs/Xserver/hw/vnc/httpd.c --- vnc_unixsrc/Xvnc/programs/Xserver/hw/vnc/httpd.c 2006-12-23 07:07:55.000000000 -0500 +++ vnc_unixsrc-ram/Xvnc/programs/Xserver/hw/vnc/httpd.c 2009-02-05 01:11:45.000000000 -0500 @@ -23,6 +23,7 @@ */ #include +#include #include #include #include @@ -33,6 +34,7 @@ #include #include #include +#include #ifndef USE_LIBWRAP #define USE_LIBWRAP 0 @@ -113,7 +115,7 @@ fd_set fds; struct timeval tv; struct sockaddr_in addr; - int addrlen = sizeof(addr); + socklen_t addrlen = sizeof(addr); if (!httpDir) return; @@ -193,7 +195,7 @@ httpProcessInput() { struct sockaddr_in addr; - int addrlen = sizeof(addr); + socklen_t addrlen = sizeof(addr); char fullFname[512]; char params[1024]; char *ptr; diff -Naur vnc_unixsrc/Xvnc/programs/Xserver/mi/mibitblt.c vnc_unixsrc-ram/Xvnc/programs/Xserver/mi/mibitblt.c --- vnc_unixsrc/Xvnc/programs/Xserver/mi/mibitblt.c 2000-06-11 08:00:51.000000000 -0400 +++ vnc_unixsrc-ram/Xvnc/programs/Xserver/mi/mibitblt.c 2009-02-05 01:13:40.000000000 -0500 @@ -588,7 +588,7 @@ box.x2 -= pSrcDrawable->x; box.y1 -= pSrcDrawable->y; box.y2 -= pSrcDrawable->y; - ptile = miGetPlane(pSrcDrawable, ffs(bitPlane) - 1, + ptile = miGetPlane(pSrcDrawable, ffsl(bitPlane) - 1, box.x1, box.y1, box.x2 - box.x1, box.y2 - box.y1, (unsigned long *) NULL); @@ -697,7 +697,7 @@ } else { - (void) miGetPlane(pDraw, ffs(planeMask) - 1, sx, sy, w, h, + (void) miGetPlane(pDraw, ffsl(planeMask) - 1, sx, sy, w, h, (unsigned long *)pDst); } } diff -Naur vnc_unixsrc/Xvnc/programs/Xserver/os/connection.c vnc_unixsrc-ram/Xvnc/programs/Xserver/os/connection.c --- vnc_unixsrc/Xvnc/programs/Xserver/os/connection.c 2003-01-29 07:33:19.000000000 -0500 +++ vnc_unixsrc-ram/Xvnc/programs/Xserver/os/connection.c 2009-02-05 02:33:30.000000000 -0500 @@ -820,8 +820,8 @@ int status; #ifndef WIN32 - curconn = ffs (readyconnections) - 1; - readyconnections &= ~(1 << curconn); + curconn = ffsl(readyconnections) - 1; + readyconnections &= ~(((fd_mask)1) << curconn); #else curconn = XFD_FD(&readyconnections, i); #endif @@ -987,14 +987,15 @@ mask = AllClients.fds_bits[i]; while (mask) { - curoff = ffs (mask) - 1; - curclient = curoff + (i << 5); + curoff = ffsl(mask) - 1; + curclient = curoff + (8 * sizeof(fd_mask) * i); FD_ZERO(&tmask); FD_SET(curclient, &tmask); r = Select (curclient + 1, &tmask, NULL, NULL, ¬ime); + if (r < 0) CloseDownClient(clients[ConnectionTranslation[curclient]]); - mask &= ~(1 << curoff); + mask &= ~(((fd_mask)1) << curoff); } } #else diff -Naur vnc_unixsrc/Xvnc/programs/Xserver/os/io.c vnc_unixsrc-ram/Xvnc/programs/Xserver/os/io.c --- vnc_unixsrc/Xvnc/programs/Xserver/os/io.c 2000-06-11 08:00:51.000000000 -0400 +++ vnc_unixsrc-ram/Xvnc/programs/Xserver/os/io.c 2009-02-05 01:27:22.000000000 -0500 @@ -967,7 +967,8 @@ void FlushAllOutput() { - register int index, base, mask; + register int index, base; + fd_mask mask; OsCommPtr oc; register ClientPtr client; Bool newoutput = NewOutputPending; @@ -996,9 +997,9 @@ OutputPending.fds_bits[ base ] = 0; while (mask) { - index = ffs(mask) - 1; + index = ffsl(mask) - 1; mask &= ~lowbit(mask); - if ((index = ConnectionTranslation[(base << 5) + index]) == 0) + if ((index = ConnectionTranslation[(base * sizeof(fd_mask) * 8) + index]) == 0) continue; client = clients[index]; if (client->clientGone) diff -Naur vnc_unixsrc/Xvnc/programs/Xserver/os/WaitFor.c vnc_unixsrc-ram/Xvnc/programs/Xserver/os/WaitFor.c --- vnc_unixsrc/Xvnc/programs/Xserver/os/WaitFor.c 2000-06-11 08:00:51.000000000 -0400 +++ vnc_unixsrc-ram/Xvnc/programs/Xserver/os/WaitFor.c 2009-02-05 01:24:55.000000000 -0500 @@ -418,8 +418,8 @@ { int client_priority, client_index; - curclient = ffs (clientsReadable.fds_bits[i]) - 1; - client_index = ConnectionTranslation[curclient + (i << 5)]; + curclient = ffsl(clientsReadable.fds_bits[i]) - 1; + client_index = ConnectionTranslation[curclient + (i * sizeof(fd_mask) * 8)]; #else int highest_priority; fd_set savedClientsReadable; @@ -531,8 +531,8 @@ while (clientsReadable[i]) { int client_priority, curclient, client_index; - curclient = ffs (clientsReadable[i]) - 1; - client_index = ConnectionTranslation[curclient + (i << 5)]; + curclient = ffsl(clientsReadable[i]) - 1; + client_index = ConnectionTranslation[curclient + (i * sizeof(fd_mask) * 8)]; dbprintf(("%d has input\n", curclient)); #ifdef XSYNC client_priority = clients[client_index]->priority;