Can you do the inline change with an ifdef #define __inline inline?

Not sure about asprintf, there used to be another version too but I took
it out.

closefrom() came from OpenSSH, how does it deal with the dirfd() thing?

INFINITY has gone in tmux SVN already.

Cheers


On Mon, Sep 19, 2011 at 03:09:44PM +1000, Peter Jeremy wrote:
> I have been trying to build tmux-1.5 on Solaris 8, Solaris 9 and
> Solaris 10 using SunStudio 11 and SunStudio 12 and have run into a
> number of issues:
> 
> 1) Neither SunStudio 11 nor SunStudio 12 support __inline
>    The following patch changes them back to "inline":
> --- compat/tree.h~    2011-07-09 19:42:38.000000000 +1000
> +++ compat/tree.h     2011-08-11 10:16:24.000000000 +1000
> @@ -119,7 +119,7 @@
>  struct type *name##_SPLAY_REMOVE(struct name *, struct type *);              
> \
>                                                                       \
>  /* Finds the node with the same key as elm */                                
> \
> -static __inline struct type *                                                
> \
> +static inline struct type *                                          \
>  name##_SPLAY_FIND(struct name *head, struct type *elm)                       
> \
>  {                                                                    \
>       if (SPLAY_EMPTY(head))                                          \
> @@ -130,7 +130,7 @@
>       return (NULL);                                                  \
>  }                                                                    \
>                                                                       \
> -static __inline struct type *                                                
> \
> +static inline struct type *                                          \
>  name##_SPLAY_NEXT(struct name *head, struct type *elm)                       
> \
>  {                                                                    \
>       name##_SPLAY(head, elm);                                        \
> @@ -144,7 +144,7 @@
>       return (elm);                                                   \
>  }                                                                    \
>                                                                       \
> -static __inline struct type *                                                
> \
> +static inline struct type *                                          \
>  name##_SPLAY_MIN_MAX(struct name *head, int val)                     \
>  {                                                                    \
>       name##_SPLAY_MINMAX(head, val);                                 \
> 
> 2) All versions of Solaris need '-lsocket -lnsl' to resolve symbol
>    references.  I added "LIBS='-lsocket -lnsl'" to the configure
>    environment but it would be nicer if this was automatic.
> 
> 
> 3) "INFINITY" is not found on Solaris 8 or Solaris 9
>    Since if just needs a large number, I used the following patch:
> --- colour.c~ 2011-07-09 19:42:38.000000000 +1000
> +++ colour.c  2011-08-11 10:27:56.000000000 +1000
> @@ -113,7 +113,7 @@
>               colour_rgb_generate256();
>  
>       colour = 16;
> -     lowest = INFINITY;
> +     lowest = 1e308;
>       for (i = 0; i < 240; i++) {
>               distance = colour_rgb_distance(&colour_rgb_256[i], rgb);
>               if (distance < lowest) {
> 
> 4) On Solaris 8, there is no closefrom() or dirfd(), requiring the
>    following patch (this should be wrapped in #if/#endif):
> --- compat/closefrom.c~       2011-07-09 19:42:38.000000000 +1000
> +++ compat/closefrom.c        2011-09-16 14:50:46.000000000 +1000
> @@ -52,6 +52,7 @@
>  #ifndef OPEN_MAX
>  # define OPEN_MAX    256
>  #endif
> +#define dirfd(d) ((d)->d_fd)
>  
>  #if 0
>  __unused static const char rcsid[] = "$Sudo: closefrom.c,v 1.11 2006/08/17 
> 15:26:54 millert Exp $";
> 
> 5) Prior to Solaris 10, passing a size of 0 to [v]snprintf() resulted
>    in -1 being returned with errno unaffected (this is documented in
>    Solaris 10).  This breaks the asprintf() in compat/asprintf.c (which
>    is used on Solaris 8 but not Solaris 9), causing tmux to just exit
>    with nothing being reported (since all error messages pass through
>    that code).  The fix is to pass a non-zero size (and I've verified
>    that this gives the correct results using a separate test tool):
> --- compat/asprintf.c~        2011-07-09 19:42:38.000000000 +1000
> +++ compat/asprintf.c 2011-09-19 11:20:50.000000000 +1000
> @@ -44,8 +44,9 @@
>  vasprintf(char **ret, const char *fmt, va_list ap)
>  {
>       int      n;
> +     char     buf[4];
>  
> -     if ((n = vsnprintf(NULL, 0, fmt, ap)) < 0)
> +     if ((n = vsnprintf(buf, sizeof(buf), fmt, ap)) < 0)
>               goto error;
>  
>       *ret = xmalloc(n + 1);
> 
> The above fixes are sufficient to get tmux running on all 3 versions
> but I haven't done any stress testing.
> 
> -- 
> Peter Jeremy



> ------------------------------------------------------------------------------
> All the data continuously generated in your IT infrastructure contains a
> definitive record of customers, application performance, security
> threats, fraudulent activity and more. Splunk takes this data and makes
> sense of it. Business sense. IT sense. Common sense.
> http://p.sf.net/sfu/splunk-d2dcopy1

> _______________________________________________
> tmux-users mailing list
> tmux-users@lists.sourceforge.net
> https://lists.sourceforge.net/lists/listinfo/tmux-users


------------------------------------------------------------------------------
All the data continuously generated in your IT infrastructure contains a
definitive record of customers, application performance, security
threats, fraudulent activity and more. Splunk takes this data and makes
sense of it. Business sense. IT sense. Common sense.
http://p.sf.net/sfu/splunk-d2dcopy1
_______________________________________________
tmux-users mailing list
tmux-users@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/tmux-users

Reply via email to