Re: [PATCH 3/3] Port to HP-UX

2011-03-15 Thread Herbert Xu
On Sat, Mar 12, 2011 at 03:54:43PM -0800, Brian Koropoff wrote:
> AC_CHECK_FUNC just checks that the symbol exists in libc, so it
> succeeds.  _LARGEFILE64_SOURCE is necessary to get the system headers to
> give you function prototypes, but it doesn't affect the configure test.

OK, please regenerate the patch against the head of my tree and
please move the macro definition from Makefile into config.h
through configure.ac.

Thanks,
-- 
Email: Herbert Xu 
Home Page: http://gondor.apana.org.au/~herbert/
PGP Key: http://gondor.apana.org.au/~herbert/pubkey.txt
--
To unsubscribe from this list: send the line "unsubscribe dash" in
the body of a message to majord...@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html


Re: [PATCH 3/3] Port to HP-UX

2011-03-12 Thread Brian Koropoff
AC_CHECK_FUNC just checks that the symbol exists in libc, so it
succeeds.  _LARGEFILE64_SOURCE is necessary to get the system headers to
give you function prototypes, but it doesn't affect the configure test.

-- Brian

On Thu, 2011-03-10 at 20:26 +0800, Herbert Xu wrote:
> On Wed, Jan 19, 2011 at 05:16:02AM +, Brian Koropoff wrote:
> >
> >  - HP-UX needs _LARGEFILE64_SOURCE to be defined for open64()
> >and friends to be available.  This seems to be safe to
> >define everywhere, so do so.
> 
> Shouldn't this go into configure.ac? In fact, how can your patch
> have any effect if configure.ac doesn't detect open64 in the
> first place?
> 
> The rest looks OK.
> 
> Thanks,


--
To unsubscribe from this list: send the line "unsubscribe dash" in
the body of a message to majord...@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html


Re: [PATCH 3/3] Port to HP-UX

2011-03-10 Thread Herbert Xu
On Wed, Jan 19, 2011 at 05:16:02AM +, Brian Koropoff wrote:
>
>  - HP-UX needs _LARGEFILE64_SOURCE to be defined for open64()
>and friends to be available.  This seems to be safe to
>define everywhere, so do so.

Shouldn't this go into configure.ac? In fact, how can your patch
have any effect if configure.ac doesn't detect open64 in the
first place?

The rest looks OK.

Thanks,
-- 
Email: Herbert Xu 
Home Page: http://gondor.apana.org.au/~herbert/
PGP Key: http://gondor.apana.org.au/~herbert/pubkey.txt
--
To unsubscribe from this list: send the line "unsubscribe dash" in
the body of a message to majord...@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html


[PATCH 3/3] Port to HP-UX

2011-01-18 Thread Brian Koropoff
- strtoimax and strtoumax are macros and not functions,
   so switch to using AC_CHECK_DECLS in configure.ac
   to find them.

 - HP-UX lacks strsignal() and sys_siglist.  Check for
   sys_siglist in configure.ac and #ifdef around it.

 - HP-UX's vsnprintf() completely violates the standard
   by returning -1 (and neglecting to set errno) if the
   buffer is not large enough rather than returning the
   size necessary.  Work around it by (yuck) reallocating
   a dynamic buffer until it succeeds so we can return
   the expected result.

 - HP-UX needs _LARGEFILE64_SOURCE to be defined for open64()
   and friends to be available.  This seems to be safe to
   define everywhere, so do so.

 - The nl program doesn't like spaces between flags and their
   arguments, so remove them in mkbuiltins.

Signed-off-by: Brian Koropoff 
---
 configure.ac|   16 +---
 src/Makefile.am |3 ++-
 src/mkbuiltins  |2 +-
 src/output.c|   52 
 src/system.c|2 ++
 src/system.h|4 ++--
 6 files changed, 72 insertions(+), 7 deletions(-)

diff --git a/configure.ac b/configure.ac
index 0a60055..07c2726 100644
--- a/configure.ac
+++ b/configure.ac
@@ -43,7 +43,7 @@ AC_ARG_ENABLE(glob, AS_HELP_STRING(--enable-glob, [Use 
glob(3) from libc]))
 dnl Checks for libraries.
 
 dnl Checks for header files.
-AC_CHECK_HEADERS(alloca.h paths.h)
+AC_CHECK_HEADERS(alloca.h paths.h unistd.h signal.h)
 
 dnl Check for declarations
 AC_CHECK_DECL([_PATH_BSHELL],,AC_DEFINE_UNQUOTED([_PATH_BSHELL], "/bin/sh", 
[Define to system shell path]),[
@@ -65,6 +65,17 @@ AC_CHECK_DECL([_PATH_TTY],,AC_DEFINE_UNQUOTED([_PATH_TTY], 
"/dev/tty", [Define t
 dnl Some systems lack isblank
 AC_CHECK_DECLS([isblank],,,[#include ])
 
+dnl strtoimax is a macro on some systems
+AC_CHECK_DECLS([strtoimax, strtoumax],,,[#include ])
+
+dnl Check for sys_siglist
+AC_CHECK_DECLS([sys_siglist], [], [],
+  [#include 
+  #ifdef HAVE_UNISTD_H
+  # include 
+  #endif
+  ])
+
 dnl Check for types and sizes
 AC_CHECK_SIZEOF([intmax_t])
 AC_CHECK_SIZEOF([long long int])
@@ -82,8 +93,7 @@ AC_DEFINE_UNQUOTED([INTMAX_FSTR], "$intmax_fstr", [Define to 
printf format strin
 dnl Checks for library functions.
 AC_CHECK_FUNCS(bsearch faccessat getpwnam getrlimit imaxdiv isalpha killpg \
   mempcpy \
-  sigsetmask stpcpy strchrnul strsignal strtod strtoimax \
-  strtoumax sysconf)
+  sigsetmask stpcpy strchrnul strsignal strtod sysconf)
 
 if test "$enable_fnmatch" = yes; then
use_fnmatch=
diff --git a/src/Makefile.am b/src/Makefile.am
index ba68d55..b99daf1 100644
--- a/src/Makefile.am
+++ b/src/Makefile.am
@@ -4,7 +4,8 @@ COMMON_CFLAGS = -Wall
 COMMON_CPPFLAGS = \
-include $(top_builddir)/config.h \
-DBSD=1 -DSHELL \
-   -DIFS_BROKEN
+   -DIFS_BROKEN \
+   -D_LARGEFILE64_SOURCE
 
 AM_CFLAGS = $(COMMON_CFLAGS)
 AM_CPPFLAGS = $(COMMON_CPPFLAGS)
diff --git a/src/mkbuiltins b/src/mkbuiltins
index 495274e..f6260b2 100644
--- a/src/mkbuiltins
+++ b/src/mkbuiltins
@@ -99,7 +99,7 @@ cat <<\!
  */
 
 !
-sed 's/-[a-z]*//' $temp2 | nl -b a -v 0 | LC_COLLATE=C sort -u -k 3,3 |
+sed 's/-[a-z]*//' $temp2 | nl -ba -v0 | LC_COLLATE=C sort -u -k 3,3 |
 tr abcdefghijklmnopqrstuvwxyz ABCDEFGHIJKLMNOPQRSTUVWXYZ |
awk '{  printf "#define %s (builtincmd + %d)\n", $3, $1}'
 printf '\n#define NUMBUILTINS %d\n' $(wc -l < $temp2)
diff --git a/src/output.c b/src/output.c
index 3425603..db4a8a7 100644
--- a/src/output.c
+++ b/src/output.c
@@ -372,6 +372,56 @@ __closememout(void) {
 #endif
 #endif
 
+#ifdef __hpux
+static int
+xvsnprintf(char *outbuf, size_t length, const char *fmt, va_list ap)
+{
+   int ret;
+   char* dummy = NULL;
+   char* dummy_new = NULL;
+   size_t dummy_len = 8;
+   va_list ap_mine;
+
+   if (length > 0) {
+   INTOFF;
+   va_copy(ap_mine, ap);
+errno = 0;
+   ret = vsnprintf(outbuf, length, fmt, ap_mine);
+   va_end(ap_mine);
+   INTON;
+   } else {
+   ret = -1;
+   errno = 0;
+   }
+
+   if (ret < 0 && errno == 0) {
+   do {
+   dummy_len *= 2;
+   dummy_new = realloc(dummy, dummy_len);
+   if (!dummy_new) {
+   ret = -1;
+   errno = ENOMEM;
+   break;
+   }
+   dummy = dummy_new;
+   INTOFF;
+   va_copy(ap_mine, ap);
+errno = 0;
+   ret = vsnprintf(dummy, dummy_len, fmt, ap_mine);
+   va_end(ap_mine);
+   INTON;
+   } while (ret < 0 && errno == 0);
+
+   if (ret >= 0 && length) {
+