Commit 79f218b5 authored by Nito Martinez's avatar Nito Martinez Committed by Mike Gabriel

Fix FTBFS of nxproxy/nxcomp on Android (212_nxcomp_build-on-Android.full+lite.patch).

parent 46c2aebc
Author: Nito Martinez <Nito@Qindel.ES>
Description: Fix FTBFS of nxproxy/nxcomp on Android
--- a/nxcomp/Jpeg.cpp
+++ b/nxcomp/Jpeg.cpp
@@ -17,6 +17,9 @@
#include <X11/Xmd.h>
+#ifdef ANDROID
+#include <strings.h>
+#endif
#include <unistd.h>
#include <setjmp.h>
#include <zlib.h>
--- a/nxcomp/Loop.cpp
+++ b/nxcomp/Loop.cpp
@@ -4187,7 +4187,7 @@
#endif
- char *separator = rindex(display, ':');
+ char *separator = strrchr(display, ':');
if ((separator == NULL) || !isdigit(*(separator + 1)))
{
@@ -8240,7 +8240,7 @@
char *name;
char *value;
- value = rindex(nextOpts, ':');
+ value = strrchr(nextOpts, ':');
if (value != NULL)
{
@@ -11010,7 +11010,7 @@
packMethod == PACK_LOSSLESS ||
packMethod == PACK_ADAPTIVE)
{
- const char *dash = rindex(opt, '-');
+ const char *dash = strrchr(opt, '-');
if (dash != NULL && strlen(dash) == 2 &&
*(dash + 1) >= '0' && *(dash + 1) <= '9')
@@ -12275,6 +12275,10 @@
control -> ShmemServer = 0;
}
+ // For android, no shared memory available
+ control -> ShmemServer = 0;
+ control -> ShmemClientSize = 0;
+
return 1;
}
@@ -13525,7 +13529,7 @@
int newPort = port;
- const char *separator = rindex(opt, ':');
+ const char *separator = strrchr(opt, ':');
if (separator != NULL)
{
--- a/nxcomp/Pgn.cpp
+++ b/nxcomp/Pgn.cpp
@@ -23,6 +23,9 @@
#include <X11/Xmd.h>
+#ifdef ANDROID
+#include <strings.h>
+#endif
#include <unistd.h>
#include <stdio.h>
#include <png.h>
--- a/nxcomp/Proxy.cpp
+++ b/nxcomp/Proxy.cpp
@@ -20,6 +20,11 @@
#include <cstdlib>
#include <sys/types.h>
#include <sys/stat.h>
+#ifdef ANDROID
+#include <netinet/in.h>
+#include <netinet/ip.h>
+#include <netinet/tcp.h>
+#endif
#include "Misc.h"
@@ -31,9 +36,11 @@
#include <sys/un.h>
#endif
+#ifndef ANDROID
#include <netinet/in.h>
#include <netinet/ip.h>
#include <netinet/tcp.h>
+#endif
#if defined(__EMX__ ) || defined(__CYGWIN32__)
--- a/nxcomp/ServerChannel.cpp
+++ b/nxcomp/ServerChannel.cpp
@@ -18,7 +18,9 @@
#include <string.h>
#include <sys/types.h>
#include <sys/ipc.h>
+#ifndef ANDROID
#include <sys/shm.h>
+#endif
#include <X11/X.h>
#include <X11/Xatom.h>
@@ -1079,7 +1081,6 @@
priority_++;
}
-
//
// Account this data to the original opcode.
//
@@ -1500,7 +1501,6 @@
continue;
}
}
-
//
// Check if user pressed the CTRL+ALT+SHIFT+ESC key
// sequence because was unable to kill the session
@@ -5475,7 +5475,7 @@
*logofs << "handleColormap: Dumping colormap entries:\n"
<< logofs_flush;
- const unsigned char *p = unpackState_[resource] -> colormap -> data;
+ const unsigned char *p = (const unsigned char *) unpackState_[resource] -> colormap -> data;
for (unsigned int i = 0; i < unpackState_[resource] ->
colormap -> entries; i++)
@@ -7100,7 +7100,12 @@
{
encodeBuffer.encodeValue(stage, 2);
+#ifndef ANDROID
shmemState_ -> present = *(buffer + 8);
+#else
+ shmemState_ -> present = 0;
+ cerr << "Info: handleShmemReply: In android no shared memory. Setting present to 0 hardcoded\n";
+#endif
shmemState_ -> opcode = *(buffer + 9);
shmemState_ -> event = *(buffer + 10);
shmemState_ -> error = *(buffer + 11);
@@ -7128,7 +7133,12 @@
cerr << "Info" << ": Using shared memory parameters 1/"
<< (shmemState_ -> size / 1024) << "K.\n";
+#ifndef ANDROID
shmemState_ -> enabled = 1;
+#else
+ cerr << "Info: handleShmemReply: In android no shared memory. Setting enabled to -1. This should not be displayed\n";
+ shmemState_ -> enabled = -1;
+#endif
encodeBuffer.encodeBoolValue(1);
}
@@ -7241,7 +7251,7 @@
// memory support is disabled by the
// user.
//
-
+#ifndef ANDROID
if (control -> ShmemServer == 1 &&
control -> ShmemServerSize > 0 &&
enableServer == 1)
@@ -7252,8 +7262,12 @@
{
memcpy(buffer + 8, "NO-MIT-", 7);
}
+#else
+ cerr << "Info: handleShmemRequest: In android no shared memory. Returning NO-MIT- answer\n";
- sequenceQueue_.push(clientSequence_, opcode,
+ memcpy(buffer + 8, "NO-MIT-", 7);
+#endif
+ sequenceQueue_.push(clientSequence_, opcode,
opcodeStore_ -> getShmemParameters, stage);
//
@@ -7289,9 +7303,13 @@
shmemState_ -> size = control -> ShmemServerSize;
+#ifndef ANDROID
shmemState_ -> id = shmget(IPC_PRIVATE, shmemState_ -> size,
IPC_CREAT | permissions);
-
+#else
+ cerr << "Info: handleShmemReqyest: In android no shared memory (shmget). This message should not be displayed present should never be 1 in android\n";
+ shmemState_ -> id = -1;
+#endif
if (shmemState_ -> id >= 0)
{
#if defined(TEST) || defined(INFO)
@@ -7302,8 +7320,12 @@
#endif
+#ifndef ANDROID
shmemState_ -> address = shmat(shmemState_ -> id, 0, 0);
-
+#else
+ cerr << "Info: handleShmemReqyest: In android no shared memory (shmat). This message should not be displayed. present should never be 1 in android\n";
+ shmemState_ -> address = NULL;
+#endif
if (shmemState_ -> address != NULL)
{
#ifdef TEST
@@ -7437,6 +7459,10 @@
return 0;
}
+#ifdef ANDROID
+ cerr << "Info: handleShmem: In android no shared memory. enabled should never be 1. This should not be displayed\n";
+ return 0;
+#endif
//
// Ignore null requests and requests that will not result
@@ -8054,14 +8080,22 @@
{
if (shmemState_ != NULL)
{
- if (shmemState_ -> address != NULL)
+ if (shmemState_ -> address != NULL)
{
- shmdt((char *) shmemState_ -> address);
+#ifndef ANDROID
+ shmdt((char *) shmemState_ -> address);
+#else
+ cerr << "Info: handleShmemStateRemove: In android no shared memory. This should not be displayed. address should always be NULL\n";
+#endif
}
if (shmemState_ -> id > 0)
{
+#ifndef ANDROID
shmctl(shmemState_ -> id, IPC_RMID, 0);
+#else
+ cerr << "Info: handleShmemStateRemove: In android no shared memory. This should not be displayed. id should always be 0\n";
+#endif
}
delete shmemState_;
212_nxcomp_build-on-Android.full+lite.patch
220_nxproxy_bind-loopback-only.full+lite.patch 220_nxproxy_bind-loopback-only.full+lite.patch
300_nxagent_set-wm-class.full.patch 300_nxagent_set-wm-class.full.patch
301_nx-X11_use-shared-libs.full.patch 301_nx-X11_use-shared-libs.full.patch
......
...@@ -17,6 +17,9 @@ ...@@ -17,6 +17,9 @@
#include <X11/Xmd.h> #include <X11/Xmd.h>
#ifdef ANDROID
#include <strings.h>
#endif
#include <unistd.h> #include <unistd.h>
#include <setjmp.h> #include <setjmp.h>
#include <zlib.h> #include <zlib.h>
......
...@@ -4187,7 +4187,7 @@ int SetupDisplaySocket(int &xServerAddrFamily, sockaddr *&xServerAddr, ...@@ -4187,7 +4187,7 @@ int SetupDisplaySocket(int &xServerAddrFamily, sockaddr *&xServerAddr,
#endif #endif
char *separator = rindex(display, ':'); char *separator = strrchr(display, ':');
if ((separator == NULL) || !isdigit(*(separator + 1))) if ((separator == NULL) || !isdigit(*(separator + 1)))
{ {
...@@ -8240,7 +8240,7 @@ int ParseEnvironmentOptions(const char *env, int force) ...@@ -8240,7 +8240,7 @@ int ParseEnvironmentOptions(const char *env, int force)
char *name; char *name;
char *value; char *value;
value = rindex(nextOpts, ':'); value = strrchr(nextOpts, ':');
if (value != NULL) if (value != NULL)
{ {
...@@ -11010,7 +11010,7 @@ int ParsePackOption(const char *opt) ...@@ -11010,7 +11010,7 @@ int ParsePackOption(const char *opt)
packMethod == PACK_LOSSLESS || packMethod == PACK_LOSSLESS ||
packMethod == PACK_ADAPTIVE) packMethod == PACK_ADAPTIVE)
{ {
const char *dash = rindex(opt, '-'); const char *dash = strrchr(opt, '-');
if (dash != NULL && strlen(dash) == 2 && if (dash != NULL && strlen(dash) == 2 &&
*(dash + 1) >= '0' && *(dash + 1) <= '9') *(dash + 1) >= '0' && *(dash + 1) <= '9')
...@@ -12275,6 +12275,10 @@ int SetShmem() ...@@ -12275,6 +12275,10 @@ int SetShmem()
control -> ShmemServer = 0; control -> ShmemServer = 0;
} }
// For android, no shared memory available
control -> ShmemServer = 0;
control -> ShmemClientSize = 0;
return 1; return 1;
} }
...@@ -13525,7 +13529,7 @@ int ParseHostOption(const char *opt, char *host, int &port) ...@@ -13525,7 +13529,7 @@ int ParseHostOption(const char *opt, char *host, int &port)
int newPort = port; int newPort = port;
const char *separator = rindex(opt, ':'); const char *separator = strrchr(opt, ':');
if (separator != NULL) if (separator != NULL)
{ {
......
...@@ -23,6 +23,9 @@ ...@@ -23,6 +23,9 @@
#include <X11/Xmd.h> #include <X11/Xmd.h>
#ifdef ANDROID
#include <strings.h>
#endif
#include <unistd.h> #include <unistd.h>
#include <stdio.h> #include <stdio.h>
#include <png.h> #include <png.h>
......
...@@ -20,6 +20,11 @@ ...@@ -20,6 +20,11 @@
#include <cstdlib> #include <cstdlib>
#include <sys/types.h> #include <sys/types.h>
#include <sys/stat.h> #include <sys/stat.h>
#ifdef ANDROID
#include <netinet/in.h>
#include <netinet/ip.h>
#include <netinet/tcp.h>
#endif
#include "Misc.h" #include "Misc.h"
...@@ -31,9 +36,11 @@ ...@@ -31,9 +36,11 @@
#include <sys/un.h> #include <sys/un.h>
#endif #endif
#ifndef ANDROID
#include <netinet/in.h> #include <netinet/in.h>
#include <netinet/ip.h> #include <netinet/ip.h>
#include <netinet/tcp.h> #include <netinet/tcp.h>
#endif
#if defined(__EMX__ ) || defined(__CYGWIN32__) #if defined(__EMX__ ) || defined(__CYGWIN32__)
......
...@@ -18,7 +18,9 @@ ...@@ -18,7 +18,9 @@
#include <string.h> #include <string.h>
#include <sys/types.h> #include <sys/types.h>
#include <sys/ipc.h> #include <sys/ipc.h>
#ifndef ANDROID
#include <sys/shm.h> #include <sys/shm.h>
#endif
#include <X11/X.h> #include <X11/X.h>
#include <X11/Xatom.h> #include <X11/Xatom.h>
...@@ -1079,7 +1081,6 @@ int ServerChannel::handleRead(EncodeBuffer &encodeBuffer, const unsigned char *m ...@@ -1079,7 +1081,6 @@ int ServerChannel::handleRead(EncodeBuffer &encodeBuffer, const unsigned char *m
priority_++; priority_++;
} }
// //
// Account this data to the original opcode. // Account this data to the original opcode.
// //
...@@ -1500,7 +1501,6 @@ int ServerChannel::handleRead(EncodeBuffer &encodeBuffer, const unsigned char *m ...@@ -1500,7 +1501,6 @@ int ServerChannel::handleRead(EncodeBuffer &encodeBuffer, const unsigned char *m
continue; continue;
} }
} }
// //
// Check if user pressed the CTRL+ALT+SHIFT+ESC key // Check if user pressed the CTRL+ALT+SHIFT+ESC key
// sequence because was unable to kill the session // sequence because was unable to kill the session
...@@ -5475,7 +5475,7 @@ int ServerChannel::handleColormap(unsigned char &opcode, unsigned char *&buffer, ...@@ -5475,7 +5475,7 @@ int ServerChannel::handleColormap(unsigned char &opcode, unsigned char *&buffer,
*logofs << "handleColormap: Dumping colormap entries:\n" *logofs << "handleColormap: Dumping colormap entries:\n"
<< logofs_flush; << logofs_flush;
const unsigned char *p = unpackState_[resource] -> colormap -> data; const unsigned char *p = (const unsigned char *) unpackState_[resource] -> colormap -> data;
for (unsigned int i = 0; i < unpackState_[resource] -> for (unsigned int i = 0; i < unpackState_[resource] ->
colormap -> entries; i++) colormap -> entries; i++)
...@@ -7100,7 +7100,12 @@ int ServerChannel::handleShmemReply(EncodeBuffer &encodeBuffer, const unsigned c ...@@ -7100,7 +7100,12 @@ int ServerChannel::handleShmemReply(EncodeBuffer &encodeBuffer, const unsigned c
{ {
encodeBuffer.encodeValue(stage, 2); encodeBuffer.encodeValue(stage, 2);
#ifndef ANDROID
shmemState_ -> present = *(buffer + 8); shmemState_ -> present = *(buffer + 8);
#else
shmemState_ -> present = 0;
cerr << "Info: handleShmemReply: In android no shared memory. Setting present to 0 hardcoded\n";
#endif
shmemState_ -> opcode = *(buffer + 9); shmemState_ -> opcode = *(buffer + 9);
shmemState_ -> event = *(buffer + 10); shmemState_ -> event = *(buffer + 10);
shmemState_ -> error = *(buffer + 11); shmemState_ -> error = *(buffer + 11);
...@@ -7128,7 +7133,12 @@ int ServerChannel::handleShmemReply(EncodeBuffer &encodeBuffer, const unsigned c ...@@ -7128,7 +7133,12 @@ int ServerChannel::handleShmemReply(EncodeBuffer &encodeBuffer, const unsigned c
cerr << "Info" << ": Using shared memory parameters 1/" cerr << "Info" << ": Using shared memory parameters 1/"
<< (shmemState_ -> size / 1024) << "K.\n"; << (shmemState_ -> size / 1024) << "K.\n";
#ifndef ANDROID
shmemState_ -> enabled = 1; shmemState_ -> enabled = 1;
#else
cerr << "Info: handleShmemReply: In android no shared memory. Setting enabled to -1. This should not be displayed\n";
shmemState_ -> enabled = -1;
#endif
encodeBuffer.encodeBoolValue(1); encodeBuffer.encodeBoolValue(1);
} }
...@@ -7241,7 +7251,7 @@ int ServerChannel::handleShmemRequest(DecodeBuffer &decodeBuffer, unsigned char ...@@ -7241,7 +7251,7 @@ int ServerChannel::handleShmemRequest(DecodeBuffer &decodeBuffer, unsigned char
// memory support is disabled by the // memory support is disabled by the
// user. // user.
// //
#ifndef ANDROID
if (control -> ShmemServer == 1 && if (control -> ShmemServer == 1 &&
control -> ShmemServerSize > 0 && control -> ShmemServerSize > 0 &&
enableServer == 1) enableServer == 1)
...@@ -7252,8 +7262,12 @@ int ServerChannel::handleShmemRequest(DecodeBuffer &decodeBuffer, unsigned char ...@@ -7252,8 +7262,12 @@ int ServerChannel::handleShmemRequest(DecodeBuffer &decodeBuffer, unsigned char
{ {
memcpy(buffer + 8, "NO-MIT-", 7); memcpy(buffer + 8, "NO-MIT-", 7);
} }
#else
cerr << "Info: handleShmemRequest: In android no shared memory. Returning NO-MIT- answer\n";
sequenceQueue_.push(clientSequence_, opcode, memcpy(buffer + 8, "NO-MIT-", 7);
#endif
sequenceQueue_.push(clientSequence_, opcode,
opcodeStore_ -> getShmemParameters, stage); opcodeStore_ -> getShmemParameters, stage);
// //
...@@ -7289,9 +7303,13 @@ int ServerChannel::handleShmemRequest(DecodeBuffer &decodeBuffer, unsigned char ...@@ -7289,9 +7303,13 @@ int ServerChannel::handleShmemRequest(DecodeBuffer &decodeBuffer, unsigned char
shmemState_ -> size = control -> ShmemServerSize; shmemState_ -> size = control -> ShmemServerSize;
#ifndef ANDROID
shmemState_ -> id = shmget(IPC_PRIVATE, shmemState_ -> size, shmemState_ -> id = shmget(IPC_PRIVATE, shmemState_ -> size,
IPC_CREAT | permissions); IPC_CREAT | permissions);
#else
cerr << "Info: handleShmemReqyest: In android no shared memory (shmget). This message should not be displayed present should never be 1 in android\n";
shmemState_ -> id = -1;
#endif
if (shmemState_ -> id >= 0) if (shmemState_ -> id >= 0)
{ {
#if defined(TEST) || defined(INFO) #if defined(TEST) || defined(INFO)
...@@ -7302,8 +7320,12 @@ int ServerChannel::handleShmemRequest(DecodeBuffer &decodeBuffer, unsigned char ...@@ -7302,8 +7320,12 @@ int ServerChannel::handleShmemRequest(DecodeBuffer &decodeBuffer, unsigned char
#endif #endif
#ifndef ANDROID
shmemState_ -> address = shmat(shmemState_ -> id, 0, 0); shmemState_ -> address = shmat(shmemState_ -> id, 0, 0);
#else
cerr << "Info: handleShmemReqyest: In android no shared memory (shmat). This message should not be displayed. present should never be 1 in android\n";
shmemState_ -> address = NULL;
#endif
if (shmemState_ -> address != NULL) if (shmemState_ -> address != NULL)
{ {
#ifdef TEST #ifdef TEST
...@@ -7437,6 +7459,10 @@ int ServerChannel::handleShmem(unsigned char &opcode, unsigned char *&buffer, ...@@ -7437,6 +7459,10 @@ int ServerChannel::handleShmem(unsigned char &opcode, unsigned char *&buffer,
return 0; return 0;
} }
#ifdef ANDROID
cerr << "Info: handleShmem: In android no shared memory. enabled should never be 1. This should not be displayed\n";
return 0;
#endif
// //
// Ignore null requests and requests that will not result // Ignore null requests and requests that will not result
...@@ -8054,14 +8080,22 @@ void ServerChannel::handleShmemStateRemove() ...@@ -8054,14 +8080,22 @@ void ServerChannel::handleShmemStateRemove()
{ {
if (shmemState_ != NULL) if (shmemState_ != NULL)
{ {
if (shmemState_ -> address != NULL) if (shmemState_ -> address != NULL)
{ {
shmdt((char *) shmemState_ -> address); #ifndef ANDROID
shmdt((char *) shmemState_ -> address);
#else
cerr << "Info: handleShmemStateRemove: In android no shared memory. This should not be displayed. address should always be NULL\n";
#endif
} }
if (shmemState_ -> id > 0) if (shmemState_ -> id > 0)
{ {
#ifndef ANDROID
shmctl(shmemState_ -> id, IPC_RMID, 0); shmctl(shmemState_ -> id, IPC_RMID, 0);
#else
cerr << "Info: handleShmemStateRemove: In android no shared memory. This should not be displayed. id should always be 0\n";
#endif
} }
delete shmemState_; delete shmemState_;
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment