Hello!

2013/10/10 Nicholas Marriott <nicholas.marri...@gmail.com>

> Try this please.
>
> diff --git a/Makefile.am b/Makefile.am
> index fb707df..690e466 100644
> --- a/Makefile.am
> +++ b/Makefile.am
> @@ -238,6 +238,9 @@ endif
>  if NO_CFMAKERAW
>  nodist_tmux_SOURCES += compat/cfmakeraw.c
>  endif
> +if NO_OPENAT
> +nodist_tmux_SOURCES += compat/openat.c
> +endif
>
>  # Install tmux.1 in the right format.
>  install-exec-hook:
> diff --git a/compat.h b/compat.h
> index b84ff40..ab3224b 100644
> --- a/compat.h
> +++ b/compat.h
> @@ -243,7 +243,13 @@ int                 unsetenv(const char *);
>
>  #ifndef HAVE_CFMAKERAW
>  /* cfmakeraw.c */
> -void           cfmakeraw(struct termios *tio);
> +void           cfmakeraw(struct termios *);
> +#endif
> +
> +#ifndef HAVE_OPENAT
> +/* openat.c */
> +#define AT_FDCWD -100
> +int            openat(int, const char *, int, ...);
>  #endif
>
>  #ifdef HAVE_GETOPT
> diff --git a/compat/openat.c b/compat/openat.c
> new file mode 100644
> index 0000000..005235b
> --- /dev/null
> +++ b/compat/openat.c
> @@ -0,0 +1,63 @@
> +/* $Id$ */
> +
> +/*
> + * Copyright (c) 2013 Nicholas Marriott <n...@users.sourceforge.net>
> + *
> + * Permission to use, copy, modify, and distribute this software for any
> + * purpose with or without fee is hereby granted, provided that the above
> + * copyright notice and this permission notice appear in all copies.
> + *
> + * THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL
> WARRANTIES
> + * WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF
> + * MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR
> + * ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES
> + * WHATSOEVER RESULTING FROM LOSS OF MIND, USE, DATA OR PROFITS, WHETHER
> + * IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING
> + * OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
> + */
> +
> +#include <errno.h>
> +#include <fcntl.h>
> +#include <stdarg.h>
> +#include <unistd.h>
> +
> +#include "tmux.h"
> +
> +int
> +openat(int fd, const char *path, int flags, ...)
> +{
> +       mode_t  mode;
> +       va_list ap;
> +       int     dotfd, retval, saved_errno;
> +
> +       if (flags & O_CREAT) {
> +               va_start(ap, flags);
> +               mode = va_arg(ap, mode_t);
> +               va_end(ap);
> +       } else
> +               mode = 0;
> +
> +       dotfd = -1;
> +       if (fd != AT_FDCWD) {
> +               dotfd = open(".", O_RDONLY);
> +               if (dotfd == -1)
> +                       return (-1);
> +               if (fchdir(fd) != 0)
> +                       return (-1);
> +       }
> +
> +       retval = open(path, flags, mode);
> +
> +       if (dotfd != -1) {
> +               if (fchdir(dotfd) != 0) {
> +                       saved_errno = errno;
> +                       close(retval);
> +                       close(dotfd);
> +                       errno = saved_errno;
> +                       return (-1);
> +               }
> +               close(dotfd);
> +       }
> +
> +       return (retval);
> +}
> diff --git a/configure.ac b/configure.ac
> index 68c50fb..ceb37db 100644
> --- a/configure.ac
> +++ b/configure.ac
> @@ -323,6 +323,13 @@ if test "x$found_cfmakeraw" = xyes; then
>  fi
>  AM_CONDITIONAL(NO_CFMAKERAW, [test "x$found_cfmakeraw" = xno])
>
> +# Look for openat, compat/openat.c used if missing.
> +AC_CHECK_FUNC(openat, found_openat=yes, found_openat=no)
> +if test "x$found_openat" = xyes; then
> +       AC_DEFINE(HAVE_OPENAT)
> +fi
> +AM_CONDITIONAL(NO_OPENAT, [test "x$found_openat" = xno])
> +
>  # Look for getopt. glibc's getopt does not enforce argument order and the
> ways
>  # of making it do so are stupid, so just use our own instead.
>  AC_CHECK_FUNC(getopt, found_getopt=yes, found_getopt=no)
>
>
>

Thanks.
It works like a charm.



>
> On Thu, Oct 10, 2013 at 03:39:40PM +0800, harvey zh wrote:
> >    Hi,
> >
> >    2013/10/10 Thomas Adam <[1]tho...@xteddy.org>
> >
> >      Hi,
> >
> >      Did you "make clean" first, and rerun autogen.sh and run ./configure
> >      etc?
> >
> >    Yes.
> >    Here is the error log:
> >    $ rm -rf /Library/Caches/Homebrew/tmux--git
> >    $ brew upgrade --HEAD tmux
> >    ==> Upgrading 1 outdated package, with result:
> >    tmux HEAD
> >    ==> Upgrading tmux
> >    ==> Cloning git://[2]git.code.sf.net/p/tmux/tmux-code
> >    Cloning into '/Library/Caches/Homebrew/tmux--git'...
> >    remote: Counting objects: 208, done.
> >    remote: Compressing objects: 100% (207/207), done.
> >    remote: Total 208 (delta 50), reused 24 (delta 0)
> >    Receiving objects: 100% (208/208), 501.19 KiB | 135.00 KiB/s, done.
> >    Resolving deltas: 100% (50/50), done.
> >    Checking connectivity... done
> >    ==> sh autogen.sh
> >    ==> ./configure --prefix=/usr/local/Cellar/tmux/HEAD
> >    --sysconfdir=/usr/local/etc
> >    ==> make install
> >    * * * * * * * * cwd = AT_FDCWD;
> >    * * * * * * * * * * * ^
> >    1 error generated.
> >    make: *** [cmd-load-buffer.o] Error 1
> >    make: *** Waiting for unfinished jobs....
> >    READ THIS: [3]https://github.com/mxcl/homebrew/wiki/troubleshooting
> >    *
> >
> >      -- Thomas Adam
> >      On 10 October 2013 08:18, harvey zh <[4]zh.jli...@gmail.com> wrote:
> >      > Hi
> >      >
> >      > The latest git version cann't be compiled on Mac OS X.
> >      > $ brew install --HEAD tmux
> >      >
> >      > failed.
> >      >
> >      > When compiled manually, I get the following errors:
> >      >
> >      > cmd-load-buffer.c: In function *cmd_load_buffer_exec*:
> >      > cmd-load-buffer.c:90: error: *AT_FDCWD* undeclared (first use in
> this
> >      > function)
> >      > cmd-load-buffer.c:90: error: (Each undeclared identifier is
> reported
> >      only
> >      > once
> >      > cmd-load-buffer.c:90: error: for each function it appears in.)
> >      > cmd-load-buffer.c:92: warning: implicit declaration of function
> >      *openat*
> >      > cmd-load-buffer.c:92: warning: nested extern declaration of
> *openat*
> >      > make: *** [cmd-load-buffer.o] Error 1
> >      >
> >      >
> >      > $ uname -a
> >      > Darwin harvey-pc.local 12.5.0 Darwin Kernel Version 12.5.0: Mon
> Jul 29
> >      > 16:33:49 PDT 2013; root:xnu-2050.48.11~1/RELEASE_X86_64 x86_64
> >      >
> >      >
> >
>  
> ------------------------------------------------------------------------------
> >      > October Webinars: Code for Performance
> >      > Free Intel webinars can help you accelerate application
> performance.
> >      > Explore tips for MPI, OpenMP, advanced profiling, and more. Get
> the
> >      most
> >      > from
> >      > the latest Intel processors and coprocessors. See abstracts and
> >      register >
> >      >
> >      [5]
> http://pubads.g.doubleclick.net/gampad/clk?id=60134071&iu=/4140/ostg.clktrk
> >      > _______________________________________________
> >      > tmux-users mailing list
> >      > [6]tmux-users@lists.sourceforge.net
> >      > [7]https://lists.sourceforge.net/lists/listinfo/tmux-users
> >      >
> >
> > References
> >
> >    Visible links
> >    1. mailto:tho...@xteddy.org
> >    2. http://git.code.sf.net/p/tmux/tmux-code
> >    3. https://github.com/mxcl/homebrew/wiki/troubleshooting
> >    4. mailto:zh.jli...@gmail.com
> >    5.
> http://pubads.g.doubleclick.net/gampad/clk?id=60134071&iu=/4140/ostg.clktrk
> >    6. mailto:tmux-users@lists.sourceforge.net
> >    7. https://lists.sourceforge.net/lists/listinfo/tmux-users
>
> >
> ------------------------------------------------------------------------------
> > October Webinars: Code for Performance
> > Free Intel webinars can help you accelerate application performance.
> > Explore tips for MPI, OpenMP, advanced profiling, and more. Get the most
> from
> > the latest Intel processors and coprocessors. See abstracts and register
> >
> >
> http://pubads.g.doubleclick.net/gampad/clk?id=60134071&iu=/4140/ostg.clktrk
>
> > _______________________________________________
> > tmux-users mailing list
> > tmux-users@lists.sourceforge.net
> > https://lists.sourceforge.net/lists/listinfo/tmux-users
>
>
------------------------------------------------------------------------------
October Webinars: Code for Performance
Free Intel webinars can help you accelerate application performance.
Explore tips for MPI, OpenMP, advanced profiling, and more. Get the most from 
the latest Intel processors and coprocessors. See abstracts and register >
http://pubads.g.doubleclick.net/gampad/clk?id=60134071&iu=/4140/ostg.clktrk
_______________________________________________
tmux-users mailing list
tmux-users@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/tmux-users

Reply via email to