[X2Go-Dev] [PATCH] Fix compilation of nxcomp on Mac OS X 10.5.
Mike Gabriel
mike.gabriel at das-netzwerkteam.de
Wed Feb 29 16:01:00 CET 2012
Hi Mihai,
On So 26 Feb 2012 09:18:53 CET Mihai Moldovan wrote:
> The Mac OS X 10.5 SDK requires the second argument of FD_ISSET to be
> writeable, although it does only access the data. Given that we have a
> const pointer for a const struct, copy and pass that.
>
> Note that this is merely a workaround for OS X 10.5, as 10.6 and later
> define the second argument of FD_ISSET as const struct const *foo, too.
>
> It it safe, as data is accessed read-only by FD_ISSET, even on 10.5.
>
> Signed-off-by: Mihai Moldovan <ionic at ionic.de>
> ---
> nxcomp/Agent.h | 28 ++++++++++++++++++++--------
> 1 files changed, 20 insertions(+), 8 deletions(-)
>
> diff --git a/nxcomp/Agent.h b/nxcomp/Agent.h
> index fac5acd..ded344d 100644
> --- a/nxcomp/Agent.h
> +++ b/nxcomp/Agent.h
> @@ -149,30 +149,38 @@ class Agent
>
> int remoteCanRead(const fd_set * const readSet)
> {
> + // OS X 10.5 requires the second argument to be non-const, so copy
> readSet.
> + // It's safe though, as FD_ISSET does not operate on it.
> + fd_set readWorkSet = *readSet;
> +
> #if defined(TEST) || defined(INFO)
> *logofs << "Agent: remoteCanRead() is " <<
> - (FD_ISSET(remoteFd_, readSet) && transport_ ->
> dequeuable() != 0)
> - << " with FD_ISSET() " << (int) FD_ISSET(remoteFd_, readSet)
> + (FD_ISSET(remoteFd_, &readWorkSet) && transport_ ->
> dequeuable() != 0)
> + << " with FD_ISSET() " << (int) FD_ISSET(remoteFd_,
> &readWorkSet)
> << " and dequeuable " << transport_ -> dequeuable()
> << ".n" << logofs_flush;
> #endif
>
> - return (FD_ISSET(remoteFd_, readSet) &&
> + return (FD_ISSET(remoteFd_, &readWorkSet) &&
> transport_ -> dequeuable() != 0);
> }
>
> int remoteCanWrite(const fd_set * const writeSet)
> {
> + // OS X 10.5 requires the second argument to be non-const, so copy
> writeSet.
> + // It's safe though, as FD_ISSET does not operate on it.
> + fd_set writeWorkSet = *writeSet;
> +
> #if defined(TEST) || defined(INFO)
> *logofs << "Agent: remoteCanWrite() is " <<
> - (FD_ISSET(remoteFd_, writeSet) && transport_ ->
> + (FD_ISSET(remoteFd_, &writeWorkSet) && transport_ ->
> queuable() != 0 && canRead_ == 1) << " with FD_ISSET() "
> - << (int) FD_ISSET(remoteFd_, writeSet) << " queueable "
> + << (int) FD_ISSET(remoteFd_, &writeWorkSet) << " queueable "
> << transport_ -> queuable() << " channel can read "
> << canRead_ << ".n" << logofs_flush;
> #endif
>
> - return (FD_ISSET(remoteFd_, writeSet) &&
> + return (FD_ISSET(remoteFd_, &writeWorkSet) &&
> transport_ -> queuable() != 0 &&
> canRead_ == 1);
> }
> @@ -203,13 +211,17 @@ class Agent
>
> int proxyCanRead(const fd_set * const readSet)
> {
> + // OS X 10.5 requires the second argument to be non-const, so copy
> readSet.
> + // It's safe though, as FD_ISSET does not operate on it.
> + fd_set readWorkSet = *readSet;
> +
> #if defined(TEST) || defined(INFO)
> *logofs << "Agent: proxyCanRead() is "
> - << ((int) FD_ISSET(proxy -> getFd(), readSet)
> + << ((int) FD_ISSET(proxy -> getFd(), &readWorkSet)
> << ".n" << logofs_flush;
> #endif
>
> - return (FD_ISSET(proxy -> getFd(), readSet));
> + return (FD_ISSET(proxy -> getFd(), &readWorkSet));
> }
>
> int enqueueData(const char *data, const int size) const
> --
> 1.7.9
patch applied...
http://code.x2go.org/gitweb?p=nx-libs.git;a=commitdiff;h=655173ff215dde1a167193eafe29bfc955a19561
I had to tweak the patch by hand so it could get applied fully. Not
sure what went wrong, so I just place a reminder here to make sure
patches apply against latest Git code well enough.
Mike
--
DAS-NETZWERKTEAM
mike gabriel, dorfstr. 27, 24245 barmissen
fon: +49 (4302) 281418, fax: +49 (4302) 281419
GnuPG Key ID 0xB588399B
mail: mike.gabriel at das-netzwerkteam.de, http://das-netzwerkteam.de
freeBusy:
https://mail.das-netzwerkteam.de/freebusy/m.gabriel%40das-netzwerkteam.de.xfb
-------------- next part --------------
A non-text attachment was scrubbed...
Name: not available
Type: application/pgp-signature
Size: 490 bytes
Desc: Digitale PGP-Unterschrift
URL: <http://lists.x2go.org/pipermail/x2go-dev/attachments/20120229/02c18bd6/attachment.pgp>
More information about the x2go-dev
mailing list