]> git.ipfire.org Git - thirdparty/autoconf.git/commitdiff
doc: remove IRIX from manual
authorPaul Eggert <eggert@cs.ucla.edu>
Sun, 22 Sep 2024 05:56:14 +0000 (22:56 -0700)
committerPaul Eggert <eggert@cs.ucla.edu>
Sun, 22 Sep 2024 05:58:30 +0000 (22:58 -0700)
* doc/autoconf.texi: Remove references to IRIX, except for the
obsolete macro AC_IRIX_SUN.  IRIX has not been supported by its
vendor since 2013, and is no longer a documented Autoconf target.

doc/autoconf.texi

index f202ea0024c495a808b396a3c19dd255edccb247..fd7e9ab09c7d1324399f84bdc42d9373a0a468bb 100644 (file)
@@ -4822,62 +4822,6 @@ declared, due to C++ problems of some sort or another.  For this reason
 we suggest that test programs not invoke @code{exit}, but return from
 @code{main} instead.
 
-@item @code{isinf}
-@itemx @code{isnan}
-@c @fuindex isinf
-@c @fuindex isnan
-@prindex @code{isinf}
-@prindex @code{isnan}
-In C99 and later, @code{isinf} and @code{isnan} are
-macros.  On some systems just macros are available
-(e.g., HP-UX and Solaris 10), on
-some systems both macros and functions (e.g., glibc 2.3.2), and on some
-systems only functions (e.g., IRIX 6).  In some cases
-these functions are declared in nonstandard headers like
-@code{<sunmath.h>} and defined in non-default libraries like
-@option{-lm} or @option{-lsunmath}.
-
-In C99 and later, @code{isinf} and @code{isnan} macros work correctly with
-@code{long double} arguments, but pre-C99 systems that use functions
-typically assume @code{double} arguments.  On such a system,
-@code{isinf} incorrectly returns true for a finite @code{long double}
-argument that is outside the range of @code{double}.
-
-The best workaround for these issues is to use Gnulib modules
-@code{isinf} and @code{isnan} (@pxref{Gnulib}).  But a lighter weight
-solution involves code like the following.
-
-@smallexample
-#include <math.h>
-
-#ifndef isnan
-# define isnan(x) \
-    (sizeof (x) == sizeof (long double) ? isnan_ld (x) \
-     : sizeof (x) == sizeof (double) ? isnan_d (x) \
-     : isnan_f (x))
-static int isnan_f  (float       x) @{ return x != x; @}
-static int isnan_d  (double      x) @{ return x != x; @}
-static int isnan_ld (long double x) @{ return x != x; @}
-#endif
-
-#ifndef isinf
-# define isinf(x) \
-    (sizeof (x) == sizeof (long double) ? isinf_ld (x) \
-     : sizeof (x) == sizeof (double) ? isinf_d (x) \
-     : isinf_f (x))
-static int isinf_f  (float       x)
-@{ return !isnan (x) && isnan (x - x); @}
-static int isinf_d  (double      x)
-@{ return !isnan (x) && isnan (x - x); @}
-static int isinf_ld (long double x)
-@{ return !isnan (x) && isnan (x - x); @}
-#endif
-@end smallexample
-
-Some optimizing compilers mishandle these definitions, but systems with that bug
-typically have many other floating point corner-case compliance problems
-anyway, so it's probably not worth worrying about.
-
 @item @code{malloc}
 @c @fuindex malloc
 @prindex @code{malloc}
@@ -4934,9 +4878,15 @@ available, rather than @code{signal}.
 In C99 and later, if the output array isn't big enough
 and if no other errors occur, @code{snprintf} and @code{vsnprintf}
 truncate the output and return the number of bytes that ought to have
-been produced.  Some ancient systems returned the truncated length (e.g.,
-GNU C Library 2.0.x or IRIX 6.5), and some a negative value
-(e.g., earlier GNU C Library versions).
+been produced.  Some older systems, notably Microsoft Windows before
+Visual Studio 2015 and Windows 10, do not null-terminate the output
+and return @minus{}1 instead.
+
+Portable code can check the return value of @code{snprintf (buf, sizeof
+buf, ...)}: if the value is negative or is not less than @code{sizeof
+buf}, an error occurred and the contents of @code{buf} can be ignored.
+Alternatively, one of the Gnulib modules related to @code{snprintf} can
+be used.  @xref{Gnulib}.
 
 @item @code{strerror_r}
 @c @fuindex strerror_r
@@ -5335,8 +5285,7 @@ use Gnulib's @code{getloadavg} module.  @xref{Gnulib}.
 @prindex @code{getmntent}
 @caindex search_getmntent
 Check for @code{getmntent} in the standard C library, and then in the
-@file{sun}, @file{seq}, and @file{gen} libraries, for UNICOS,
-IRIX 4, PTX, and UnixWare, respectively.  Then, if
+@file{sun}, @file{seq}, and @file{gen} libraries.  Then, if
 @code{getmntent} is available, define @code{HAVE_GETMNTENT} and set
 @code{ac_cv_func_getmntent} to @code{yes}.  Otherwise set
 @code{ac_cv_func_getmntent} to @code{no}.
@@ -7365,15 +7314,6 @@ This can cause problems if you observe the output of the compiler to
 detect failures.  Invoking @samp{cc -c a.c && cc -c b.c && cc -o c a.o
 b.o} solves the issue.
 
-@item Don't rely on @code{#error} failing
-The IRIX C compiler does not fail when #error is preprocessed; it
-simply emits a diagnostic and continues, exiting successfully.  So,
-instead of an error directive like @code{#error "Unsupported word size"}
-it is more portable to use an invalid directive like @code{#Unsupported
-word size} in Autoconf tests.  In ordinary source code, @code{#error} is
-OK, since installers with inadequate compilers like IRIX can simply
-examine these compilers' diagnostic output.
-
 @item Don't rely on correct @code{#line} support
 On Solaris, @command{c89} (at least through Oracle Developer Studio 12.6)
 diagnoses @code{#line} directives whose line
@@ -8804,9 +8744,6 @@ therefore, when using this macro in concert with
 @code{AC_CONFIG_HEADERS}, make sure that @file{config.h} is included
 before any system headers.
 
-On obsolete IRIX systems, also change the output variable @code{CC} to
-add compiler options needed for wide @code{off_t}.
-
 Large-file support can be disabled by configuring with the
 @option{--disable-largefile} option, and year-2038 support can
 be enabled and disabled via the @option{--enable-year2038} and
@@ -17444,9 +17381,7 @@ points to the wrong directory.  Use @samp{`pwd`} rather than
 @item RANDOM
 @evindex RANDOM
 Many shells provide @code{RANDOM}, a variable that returns a different
-integer each time it is used.  Most of the time, its value does not
-change when it is not used, but on IRIX 6.5 the value changes all
-the time.  This can be observed by using @command{set}.  It is common
+integer each time it is used.  It is common
 practice to use @code{$RANDOM} as part of a file name, but code
 shouldn't rely on @code{$RANDOM} expanding to a nonempty string.
 
@@ -17525,8 +17460,7 @@ uses the prefix @samp{as_fn_} for its functions.
 
 Handling of positional parameters and shell options varies among shells.
 For example, Korn shells reset and restore trace output (@samp{set -x})
-and other options upon function entry and exit.  Inside a function,
-IRIX sh sets @samp{$0} to the function name.
+and other options upon function entry and exit.
 
 It is not portable to pass temporary environment variables to shell
 functions.  Solaris 10 @command{/bin/sh} does not see the variable.
@@ -18081,9 +18015,7 @@ of the environment variables.  Conversely, each environment variable
 received by the shell when it is launched should be imported as a shell
 variable marked as exported.
 
-Alas, many shells, such as Solaris 10 @command{/bin/sh},
-IRIX 6.3, IRIX 5.2,
-AIX 4.1.5, and Digital Unix 4.0, forget to
+Alas, some older shells, such as Solaris 10 @command{/bin/sh}, forget to
 @command{export} the environment variables they receive.  As a result,
 two variables coexist: the environment variable and the shell
 variable.  The following code demonstrates this failure:
@@ -19015,7 +18947,7 @@ The original version of Awk had a limit of at most 99 bytes per
 per run of non-special characters in a @code{printf} format, but these
 bugs have been fixed on all practical hosts that we know of.
 
-HP-UX 11.00 and IRIX 6.5 Awk require that input files have a line length
+HP-UX 11.00 Awk requires that input files have a line length
 of at most 3070 bytes.
 
 @item @command{basename}
@@ -19426,9 +19358,8 @@ Posix allows either behavior.
 @prindex @command{grep}
 Portable scripts can rely on the @command{grep} options @option{-c},
 @option{-l}, @option{-n}, and @option{-v}, but should avoid other
-options.  For example, don't use @option{-w}, as Posix does not require
-it and Irix 6.5.16m's @command{grep} does not support it.  Also,
-portable scripts should not combine @option{-c} with @option{-l},
+options.  For example, don't use @option{-w}, as Posix does not require it.
+Also, portable scripts should not combine @option{-c} with @option{-l},
 as Posix does not allow this.
 
 Some of the options required by Posix are not portable in practice.
@@ -19450,11 +19381,8 @@ Some traditional @command{grep} implementations do not work on long
 input lines.  On AIX the default @code{grep} silently truncates long
 lines on the input before matching.
 
-Also, traditional implementations do not support multiple regexps
-with @option{-e}: they either reject @option{-e} entirely (e.g., Solaris 10)
-or honor only the last pattern (e.g., IRIX 6.5 and NeXT).  To
-work around these problems, invoke @code{AC_PROG_GREP} and then use
-@code{$GREP}.
+Also, Solaris 10 @command{grep} does not support @option{-e}.
+To work around this, invoke @code{AC_PROG_GREP} and then use @code{$GREP}.
 
 Another possible workaround for the multiple @option{-e} problem is to
 separate the patterns by newlines, for example:
@@ -19573,8 +19501,8 @@ through @code{uniq}.
 Combining the @option{-m} and @option{-p} options, as in @samp{mkdir -m
 go-w -p @var{dir}}, often leads to trouble.  FreeBSD
 @command{mkdir} incorrectly attempts to change the permissions of
-@var{dir} even if it already exists.  HP-UX 11.23 and
-IRIX 6.5 @command{mkdir} often assign the wrong permissions to
+@var{dir} even if it already exists.  HP-UX 11.23
+@command{mkdir} often assigns the wrong permissions to
 any newly-created parents of @var{dir}.
 
 Posix does not clearly specify whether @samp{mkdir -p foo}
@@ -19981,68 +19909,17 @@ busybox         yes     yes     error
 @item @command{sed} (@samp{t})
 @c ---------------------------
 @prindex @command{sed} (@samp{t})
-Some old systems have @command{sed} that ``forget'' to reset their
-@samp{t} flag when starting a new cycle.  For instance on MIPS
-RISC/OS, and on IRIX 5.3, if you run the following @command{sed}
-script (the line numbers are not actual part of the texts):
-
-@example
-s/keep me/kept/g  # a
-t end             # b
-s/.*/deleted/g    # c
-:end              # d
-@end example
-
-@noindent
-on
-
-@example
-delete me         # 1
-delete me         # 2
-keep me           # 3
-delete me         # 4
-@end example
-
-@noindent
-you get
-
-@example
-deleted
-delete me
-kept
-deleted
-@end example
-
-@noindent
-instead of
-
-@example
-deleted
-deleted
-kept
-deleted
-@end example
-
-Why?  When processing line 1, (c) matches, therefore sets the @samp{t}
-flag, and the output is produced.  When processing
-line 2, the @samp{t} flag is still set (this is the bug).  Command (a)
-fails to match, but @command{sed} is not supposed to clear the @samp{t}
-flag when a substitution fails.  Command (b) sees that the flag is set,
-therefore it clears it, and jumps to (d), hence you get @samp{delete me}
-instead of @samp{deleted}.  When processing line (3), @samp{t} is clear,
-(a) matches, so the flag is set, hence (b) clears the flags and jumps.
-Finally, since the flag is clear, line 4 is processed properly.
-
 There are two things one should remember about @samp{t} in @command{sed}.
-Firstly, always remember that @samp{t} jumps if @emph{some} substitution
+First, @samp{t} jumps if @emph{some} substitution
 succeeded, not only the immediately preceding substitution.  Therefore,
 always use a fake @samp{t clear} followed by a @samp{:clear} on the next
 line, to reset the @samp{t} flag where needed.
 
-Secondly, you cannot rely on @command{sed} to clear the flag at each new
-cycle.
+Second, do not rely on @command{sed} to clear the flag at each new cycle.
 
-One portable implementation of the script above is:
+For example, the following script replaces all instances of ``keep me''
+with ``kept'', and replaces the contents of all lines that did not
+contain ``keep me'' with ``deleted''.
 
 @example
 t clear