[Top][All Lists]
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
Re: gsort problem
From: |
Paul Eggert |
Subject: |
Re: gsort problem |
Date: |
Thu, 25 May 2006 15:03:07 -0700 |
User-agent: |
Gnus/5.1008 (Gnus v5.10.8) Emacs/21.4 (gnu/linux) |
"Simon Wing-Tang" <address@hidden> writes:
> This time it sorted correctly and created the temporary files over
> 2GB as follows....
Thanks for testing it. I installed that patch (enclosed again below)
into gnulib and the coreutils CVS trunk. Jim, is it OK if I also
install this into the coreutils b5_9x branch? It seems fairly
important (for HP-UX) and harmless elsewhere.
2006-05-25 Paul Eggert <address@hidden>
* lib/tempname.c (small_open, large_open): New macros.
(__open, __open64) [!_LIBC]: Remove.
(__gen_tempname): Use small_open and large_open instead of __open
and __open64. This fixes a portability bug on HP-UX 11.11i
reported by Simon Wing-Tang in
<http://lists.gnu.org/archive/html/bug-coreutils/2006-05/msg00114.html>.
--- lib/tempname.c 23 Sep 2005 04:15:13 -0000 1.17
+++ lib/tempname.c 25 May 2006 21:55:35 -0000 1.18
@@ -1,7 +1,7 @@
/* tempname.c - generate the name of a temporary file.
Copyright (C) 1991, 1992, 1993, 1994, 1995, 1996, 1997, 1998, 1999,
- 2000, 2001, 2002, 2003, 2005 Free Software Foundation, Inc.
+ 2000, 2001, 2002, 2003, 2005, 2006 Free Software Foundation, Inc.
This program is free software; you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
@@ -66,14 +66,16 @@
#if _LIBC
# define struct_stat64 struct stat64
+# define small_open __open
+# define large_open __open64
#else
# include "stat-macros.h"
# define struct_stat64 struct stat
+# define small_open open
+# define large_open open
# define __getpid getpid
# define __gettimeofday gettimeofday
# define __mkdir mkdir
-# define __open open
-# define __open64 open
# define __lxstat64(version, file, buf) lstat (file, buf)
# define __xstat64(version, file, buf) stat (file, buf)
#endif
@@ -269,11 +271,11 @@ __gen_tempname (char *tmpl, int kind)
switch (kind)
{
case __GT_FILE:
- fd = __open (tmpl, O_RDWR | O_CREAT | O_EXCL, S_IRUSR | S_IWUSR);
+ fd = small_open (tmpl, O_RDWR | O_CREAT | O_EXCL, S_IRUSR | S_IWUSR);
break;
case __GT_BIGFILE:
- fd = __open64 (tmpl, O_RDWR | O_CREAT | O_EXCL, S_IRUSR | S_IWUSR);
+ fd = large_open (tmpl, O_RDWR | O_CREAT | O_EXCL, S_IRUSR | S_IWUSR);
break;
case __GT_DIR: