Преглед на файлове

Porting changes for LynxOS 2.3.


git-svn-id: svn://svn.code.sf.net/p/tigervnc/code/trunk@499 3789f03b-4d11-0410-bbf8-ca57d06f2519
tags/v0.0.90
Constantin Kaplinsky преди 18 години
родител
ревизия
a686690d07
променени са 14 файла, в които са добавени 181 реда и са изтрити 10 реда
  1. 7
    4
      network/TcpSocket.cxx
  2. 5
    0
      rdr/FdInStream.cxx
  3. 5
    0
      rdr/FdOutStream.cxx
  4. 1
    0
      rfb/FileInfo.cxx
  5. 1
    1
      rfb/FileManager.cxx
  6. 1
    0
      rfb/PixelFormat.cxx
  7. 1
    0
      rfb/encodings.cxx
  8. 106
    0
      rfb/util.cxx
  9. 13
    0
      rfb/util.h
  10. 18
    5
      tx/TXImage.cxx
  11. 8
    0
      tx/TXImage.h
  12. 5
    0
      tx/Timer.cxx
  13. 5
    0
      x0vncserver/TimeMillis.cxx
  14. 5
    0
      x0vncserver/x0vncserver.cxx

+ 7
- 4
network/TcpSocket.cxx Целия файл

@@ -48,6 +48,9 @@
#ifndef INADDR_NONE
#define INADDR_NONE ((unsigned long)-1)
#endif
#ifndef INADDR_LOOPBACK
#define INADDR_LOOPBACK ((unsigned long)0x7F000001)
#endif

using namespace network;
using namespace rdr;
@@ -118,12 +121,12 @@ TcpSocket::TcpSocket(const char *host, int port)
struct sockaddr_in addr;
memset(&addr, 0, sizeof(addr));
addr.sin_family = AF_INET;
addr.sin_addr.s_addr = inet_addr(host);
addr.sin_addr.s_addr = inet_addr((char *)host);
addr.sin_port = htons(port);
if ((int)addr.sin_addr.s_addr == -1) {
// Host was not an IP address - try resolving as DNS name
struct hostent *hostinfo;
hostinfo = gethostbyname(host);
hostinfo = gethostbyname((char *)host);
if (hostinfo && hostinfo->h_addr) {
addr.sin_addr.s_addr = ((struct in_addr *)hostinfo->h_addr)->s_addr;
} else {
@@ -285,7 +288,7 @@ TcpListener::TcpListener(int port, bool localhostOnly, int sock, bool close_)

int one = 1;
if (setsockopt(fd, SOL_SOCKET, SO_REUSEADDR,
(const char *)&one, sizeof(one)) < 0) {
(char *)&one, sizeof(one)) < 0) {
int e = errorNumber;
closesocket(fd);
throw SocketException("unable to create listening socket", e);
@@ -396,7 +399,7 @@ TcpFilter::~TcpFilter() {

static bool
patternMatchIP(const TcpFilter::Pattern& pattern, const char* value) {
unsigned long address = inet_addr(value);
unsigned long address = inet_addr((char *)value);
if (address == INADDR_NONE) return false;
return ((pattern.address & pattern.mask) == (address & pattern.mask));
}

+ 5
- 0
rdr/FdInStream.cxx Целия файл

@@ -48,6 +48,11 @@
#include <sys/select.h>
#endif

// XXX Lynx/OS 2.3: protos for gettimeofday(), select(), bzero()
#ifdef Lynx
#include <sys/proto.h>
#endif

#include <rdr/FdInStream.h>
#include <rdr/Exception.h>


+ 5
- 0
rdr/FdOutStream.cxx Целия файл

@@ -33,6 +33,11 @@
#include <sys/time.h>
#endif

// XXX Lynx/OS 2.3: protos for select(), bzero()
#ifdef Lynx
#include <sys/proto.h>
#endif

#include <rdr/FdOutStream.h>
#include <rdr/Exception.h>


+ 1
- 0
rfb/FileInfo.cxx Целия файл

@@ -20,6 +20,7 @@
*/

#include <rfb/FileInfo.h>
#include <rfb/util.h>

#ifdef _WIN32
#define strcasecmp _stricmp

+ 1
- 1
rfb/FileManager.cxx Целия файл

@@ -70,4 +70,4 @@ bool
FileManager::isCreated()
{
if (m_pFile != NULL) return true; else return false;
}
}

+ 1
- 0
rfb/PixelFormat.cxx Целия файл

@@ -20,6 +20,7 @@
#include <rdr/InStream.h>
#include <rdr/OutStream.h>
#include <rfb/PixelFormat.h>
#include <rfb/util.h>

#ifdef _WIN32
#define strcasecmp _stricmp

+ 1
- 0
rfb/encodings.cxx Целия файл

@@ -20,6 +20,7 @@
#define strcasecmp _stricmp
#endif
#include <rfb/encodings.h>
#include <rfb/util.h>

int rfb::encodingNum(const char* name)
{

+ 106
- 0
rfb/util.cxx Целия файл

@@ -15,8 +15,114 @@
* Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307,
* USA.
*/

/*
* The following applies to stcasecmp and strncasecmp implementations:
*
* Copyright (c) 1987 Regents of the University of California.
* All rights reserved.
*
* Redistribution and use in source and binary forms are permitted
* provided that this notice is preserved and that due credit is given
* to the University of California at Berkeley. The name of the University
* may not be used to endorse or promote products derived from this
* software without specific written prior permission. This software
* is provided ``as is'' without express or implied warranty.
*/

#include <rfb/util.h>

// Provide strcasecmp() and/or strncasecmp() if absent on this system.

#ifndef WIN32
#if !defined(HAVE_STRCASECMP) || !defined(HAVE_STRNCASECMP)

extern "C" {

/*
* This array is designed for mapping upper and lower case letter
* together for a case independent comparison. The mappings are
* based upon ascii character sequences.
*/
static unsigned char s_charmap[] = {
'\000', '\001', '\002', '\003', '\004', '\005', '\006', '\007',
'\010', '\011', '\012', '\013', '\014', '\015', '\016', '\017',
'\020', '\021', '\022', '\023', '\024', '\025', '\026', '\027',
'\030', '\031', '\032', '\033', '\034', '\035', '\036', '\037',
'\040', '\041', '\042', '\043', '\044', '\045', '\046', '\047',
'\050', '\051', '\052', '\053', '\054', '\055', '\056', '\057',
'\060', '\061', '\062', '\063', '\064', '\065', '\066', '\067',
'\070', '\071', '\072', '\073', '\074', '\075', '\076', '\077',
'\100', '\141', '\142', '\143', '\144', '\145', '\146', '\147',
'\150', '\151', '\152', '\153', '\154', '\155', '\156', '\157',
'\160', '\161', '\162', '\163', '\164', '\165', '\166', '\167',
'\170', '\171', '\172', '\133', '\134', '\135', '\136', '\137',
'\140', '\141', '\142', '\143', '\144', '\145', '\146', '\147',
'\150', '\151', '\152', '\153', '\154', '\155', '\156', '\157',
'\160', '\161', '\162', '\163', '\164', '\165', '\166', '\167',
'\170', '\171', '\172', '\173', '\174', '\175', '\176', '\177',
'\200', '\201', '\202', '\203', '\204', '\205', '\206', '\207',
'\210', '\211', '\212', '\213', '\214', '\215', '\216', '\217',
'\220', '\221', '\222', '\223', '\224', '\225', '\226', '\227',
'\230', '\231', '\232', '\233', '\234', '\235', '\236', '\237',
'\240', '\241', '\242', '\243', '\244', '\245', '\246', '\247',
'\250', '\251', '\252', '\253', '\254', '\255', '\256', '\257',
'\260', '\261', '\262', '\263', '\264', '\265', '\266', '\267',
'\270', '\271', '\272', '\273', '\274', '\275', '\276', '\277',
'\300', '\341', '\342', '\343', '\344', '\345', '\346', '\347',
'\350', '\351', '\352', '\353', '\354', '\355', '\356', '\357',
'\360', '\361', '\362', '\363', '\364', '\365', '\366', '\367',
'\370', '\371', '\372', '\333', '\334', '\335', '\336', '\337',
'\340', '\341', '\342', '\343', '\344', '\345', '\346', '\347',
'\350', '\351', '\352', '\353', '\354', '\355', '\356', '\357',
'\360', '\361', '\362', '\363', '\364', '\365', '\366', '\367',
'\370', '\371', '\372', '\373', '\374', '\375', '\376', '\377',
};

#ifndef HAVE_STRCASECMP
int
strcasecmp(const char *s1, const char *s2)
{
unsigned char u1, u2;

for (;;) {
u1 = (unsigned char) *s1++;
u2 = (unsigned char) *s2++;
if (s_charmap[u1] != s_charmap[u2]) {
return s_charmap[u1] - s_charmap[u2];
}
if (u1 == '\0') {
return 0;
}
}
}
#endif // !defined(HAVE_STRCASECMP)

#ifndef HAVE_STRNCASECMP
int
strncasecmp(const char *s1, const char *s2, size_t n)
{
unsigned char u1, u2;

for (; n != 0; --n) {
u1 = (unsigned char) *s1++;
u2 = (unsigned char) *s2++;
if (s_charmap[u1] != s_charmap[u2]) {
return s_charmap[u1] - s_charmap[u2];
}
if (u1 == '\0') {
return 0;
}
}
return 0;
}
#endif // !defined(HAVE_STRNCASECMP)

} // extern "C"

#endif // !defined(HAVE_STRCASECMP) || !defined(HAVE_STRNCASECMP)
#endif // defined(WIN32)

namespace rfb {

char* strDup(const char* s) {

+ 13
- 0
rfb/util.h Целия файл

@@ -72,8 +72,21 @@ namespace rfb {
// Copies src to dest, up to specified length-1, and guarantees termination
void strCopy(char* dest, const char* src, int destlen);
}

// Declare strcasecmp() and/or strncasecmp() if absent on this system.

#if !defined(WIN32) && !defined(HAVE_STRCASECMP)
extern "C" {
int strcasecmp(const char *s1, const char *s2);
}
#endif
#if !defined(WIN32) && !defined(HAVE_STRNCASECMP)
extern "C" {
int strncasecmp(const char *s1, const char *s2, size_t n);
}
#endif

#endif // __RFB_UTIL_H__

// -=- PLATFORM SPECIFIC UTILITY FUNCTIONS/IMPLEMENTATIONS
#ifdef WIN32

+ 18
- 5
tx/TXImage.cxx Целия файл

@@ -39,8 +39,11 @@ using namespace rfb;
static rfb::LogWriter vlog("TXImage");

TXImage::TXImage(Display* d, int width, int height, Visual* vis_, int depth_)
: xim(0), dpy(d), vis(vis_), depth(depth_), shminfo(0), tig(0), cube(0)
: xim(0), dpy(d), vis(vis_), depth(depth_), tig(0), cube(0)
{
#ifdef HAVE_MITSHM
shminfo = 0;
#endif
width_ = width;
height_ = height;
for (int i = 0; i < 256; i++)
@@ -140,11 +143,13 @@ void TXImage::put(Window win, GC gc, const rfb::Rect& r)
tig->getImage(ximDataStart, r,
xim->bytes_per_line / (xim->bits_per_pixel / 8));
}
#ifdef HAVE_MITSHM
if (usingShm()) {
XShmPutImage(dpy, win, gc, xim, x, y, x, y, w, h, False);
} else {
XPutImage(dpy, win, gc, xim, x, y, x, y, w, h);
return;
}
#endif
XPutImage(dpy, win, gc, xim, x, y, x, y, w, h);
}

void TXImage::setColourMapEntries(int firstColour, int nColours, rdr::U16* rgbs)
@@ -168,7 +173,7 @@ void TXImage::lookup(int index, int* r, int* g, int* b)
*b = colourMap[index].b;
}

#ifdef HAVE_MITSHM
static bool caughtError = false;

static int XShmAttachErrorHandler(Display *dpy, XErrorEvent *error)
@@ -187,10 +192,15 @@ public:
};

static TXImageCleanup imageCleanup;
#endif

void TXImage::createXImage()
{
if (XShmQueryExtension(dpy)) {
#ifdef HAVE_MITSHM
int major, minor;
Bool pixmaps;

if (XShmQueryVersion(dpy, &major, &minor, &pixmaps)) {
shminfo = new XShmSegmentInfo;

xim = XShmCreateImage(dpy, vis, depth, ZPixmap,
@@ -240,6 +250,7 @@ void TXImage::createXImage()
delete shminfo;
shminfo = 0;
}
#endif

xim = XCreateImage(dpy, vis, depth, ZPixmap,
0, 0, width(), height(), BitmapPad(dpy), 0);
@@ -253,6 +264,7 @@ void TXImage::createXImage()

void TXImage::destroyXImage()
{
#ifdef HAVE_MITSHM
if (shminfo) {
vlog.debug("Freeing shared memory XImage");
shmdt(shminfo->shmaddr);
@@ -261,6 +273,7 @@ void TXImage::destroyXImage()
shminfo = 0;
imageCleanup.images.remove(this);
}
#endif
// XDestroyImage() will free(xim->data) if appropriate
if (xim) XDestroyImage(xim);
xim = 0;

+ 8
- 0
tx/TXImage.h Целия файл

@@ -37,7 +37,9 @@
#include <rfb/PixelBuffer.h>
#include <rfb/ColourMap.h>
#include <rfb/ColourCube.h>
#ifdef HAVE_MITSHM
#include <X11/extensions/XShm.h>
#endif

namespace rfb { class TransImageGetter; }

@@ -59,7 +61,11 @@ public:
void setColourMapEntries(int firstColour, int nColours, rdr::U16* rgbs);
void updateColourMap();

#ifdef HAVE_MITSHM
bool usingShm() { return shminfo; }
#else
bool usingShm() { return 0; }
#endif

// PixelBuffer methods
// width(), height(), getPF() etc are inherited from PixelBuffer
@@ -79,7 +85,9 @@ private:
Display* dpy;
Visual* vis;
int depth;
#ifdef HAVE_MITSHM
XShmSegmentInfo* shminfo;
#endif
rfb::TransImageGetter* tig;
rfb::Colour colourMap[256];
rfb::PixelFormat nativePF;

+ 5
- 0
tx/Timer.cxx Целия файл

@@ -19,6 +19,11 @@
// Timer.cxx
//

// XXX Lynx/OS 2.3: get proto for gettimeofday()
#ifdef Lynx
#include <sys/proto.h>
#endif

#include "Timer.h"

static Timer* timers;

+ 5
- 0
x0vncserver/TimeMillis.cxx Целия файл

@@ -22,6 +22,11 @@

#include <x0vncserver/TimeMillis.h>

// XXX Lynx/OS 2.3: get proto for gettimeofday()
#ifdef Lynx
#include <sys/proto.h>
#endif

TimeMillis::TimeMillis()
{
update();

+ 5
- 0
x0vncserver/x0vncserver.cxx Целия файл

@@ -45,6 +45,11 @@
#include <x0vncserver/PollingManager.h>
#include <x0vncserver/PollingScheduler.h>

// XXX Lynx/OS 2.3: protos for select(), bzero()
#ifdef Lynx
#include <sys/proto.h>
#endif

using namespace rfb;
using namespace network;


Loading…
Отказ
Запис