[v4,BZ,#17787] Fix exponents in manual.
Commit Message
On Thu, Jun 18, 2015 at 04:01:09PM +0000, Joseph Myers wrote:
> On Thu, 18 Jun 2015, Carlos O'Donell wrote:
>
> > > The macro definitions should go in macros.texi, rather than being
> > > duplicated in each file using it.
> >
> > It would also seem sensible to keep such macros near their uses,
> > and move them to macros.texi only if globally useful or repeated
> > more than some nominal number of times.
> >
> > What if the macro was only used in one place? Would we still put
> > it into macros.texi?
>
> If it were only used in one source file, it might be reasonable to define
> it there, but this macro is used in three source files.
>
Ok, here is new version.
* manual/macros.texi: Add twoexp macro.
* manual/filesys.texi: Fix exponents.
* manual/llio.texi: Likewise.
* manual/stdio.texi: Likewise.
Comments
ping, is that ok now.
On Sun, Jul 12, 2015 at 11:32:56AM +0200, Ondřej Bílka wrote:
> On Thu, Jun 18, 2015 at 04:01:09PM +0000, Joseph Myers wrote:
> > On Thu, 18 Jun 2015, Carlos O'Donell wrote:
> >
> > > > The macro definitions should go in macros.texi, rather than being
> > > > duplicated in each file using it.
> > >
> > > It would also seem sensible to keep such macros near their uses,
> > > and move them to macros.texi only if globally useful or repeated
> > > more than some nominal number of times.
> > >
> > > What if the macro was only used in one place? Would we still put
> > > it into macros.texi?
> >
> > If it were only used in one source file, it might be reasonable to define
> > it there, but this macro is used in three source files.
> >
> Ok, here is new version.
>
> * manual/macros.texi: Add twoexp macro.
> * manual/filesys.texi: Fix exponents.
> * manual/llio.texi: Likewise.
> * manual/stdio.texi: Likewise.
>
> diff --git a/manual/filesys.texi b/manual/filesys.texi
> index 0f2e3dc..ed4f5fd 100644
> --- a/manual/filesys.texi
> +++ b/manual/filesys.texi
> @@ -1834,7 +1834,7 @@ writing the file. (This is unrelated to @code{st_blocks}.)
> @end deftp
>
> The extensions for the Large File Support (LFS) require, even on 32-bit
> -machines, types which can handle file sizes up to @math{2^63}.
> +machines, types which can handle file sizes up to @twoexp{63}.
> Therefore a new definition of @code{struct stat} is necessary.
>
> @comment sys/stat.h
> @@ -2024,7 +2024,7 @@ replaces the normal implementation.
> @deftypefun int stat64 (const char *@var{filename}, struct stat64 *@var{buf})
> @safety{@prelim{}@mtsafe{}@assafe{}@acsafe{}}
> This function is similar to @code{stat} but it is also able to work on
> -files larger than @math{2^31} bytes on 32-bit systems. To be able to do
> +files larger than @twoexp{31} bytes on 32-bit systems. To be able to do
> this the result is stored in a variable of type @code{struct stat64} to
> which @var{buf} must point.
>
> @@ -2097,7 +2097,7 @@ replaces the normal implementation.
> @c Direct system call through lxstat64, sometimes with an xstat conv
> @c call afterwards.
> This function is similar to @code{lstat} but it is also able to work on
> -files larger than @math{2^31} bytes on 32-bit systems. To be able to do
> +files larger than @twoexp{31} bytes on 32-bit systems. To be able to do
> this the result is stored in a variable of type @code{struct stat64} to
> which @var{buf} must point.
>
> @@ -3073,7 +3073,7 @@ systems do not support this feature and will leave the file unchanged.
> When the source file is compiled with @code{_FILE_OFFSET_BITS == 64} the
> @code{truncate} function is in fact @code{truncate64} and the type
> @code{off_t} has 64 bits which makes it possible to handle files up to
> -@math{2^63} bytes in length.
> +@twoexp{63} bytes in length.
>
> The return value is @math{0} for success, or @math{-1} for an error. In
> addition to the usual file name errors, the following errors may occur:
> @@ -3110,7 +3110,7 @@ The operation was interrupted by a signal.
> This function is similar to the @code{truncate} function. The
> difference is that the @var{length} argument is 64 bits wide even on 32
> bits machines, which allows the handling of files with sizes up to
> -@math{2^63} bytes.
> +@twoexp{63} bytes.
>
> When the source file is compiled with @code{_FILE_OFFSET_BITS == 64} on a
> 32 bits machine this function is actually available under the name
> @@ -3144,7 +3144,7 @@ The example below shows how this works.
> When the source file is compiled with @code{_FILE_OFFSET_BITS == 64} the
> @code{ftruncate} function is in fact @code{ftruncate64} and the type
> @code{off_t} has 64 bits which makes it possible to handle files up to
> -@math{2^63} bytes in length.
> +@twoexp{63} bytes in length.
>
> The return value is @math{0} for success, or @math{-1} for an error. The
> following errors may occur:
> @@ -3190,7 +3190,7 @@ The operation was interrupted by a signal.
> This function is similar to the @code{ftruncate} function. The
> difference is that the @var{length} argument is 64 bits wide even on 32
> bits machines which allows the handling of files with sizes up to
> -@math{2^63} bytes.
> +@twoexp{63} bytes.
>
> When the source file is compiled with @code{_FILE_OFFSET_BITS == 64} on a
> 32 bits machine this function is actually available under the name
> @@ -3430,7 +3430,7 @@ interface transparently replaces the old interface.
> @safety{@prelim{}@mtsafe{}@asunsafe{@ascuheap{} @asulock{}}@acunsafe{@acsmem{} @acsfd{} @aculock{}}}
> This function is similar to @code{tmpfile}, but the stream it returns a
> pointer to was opened using @code{tmpfile64}. Therefore this stream can
> -be used for files larger than @math{2^31} bytes on 32-bit machines.
> +be used for files larger than @twoexp{31} bytes on 32-bit machines.
>
> Please note that the return type is still @code{FILE *}. There is no
> special @code{FILE} type for the LFS interface.
> diff --git a/manual/llio.texi b/manual/llio.texi
> index 4f3fada..019dea2 100644
> --- a/manual/llio.texi
> +++ b/manual/llio.texi
> @@ -150,8 +150,8 @@ or @code{O_CREAT} is set and the file does not already exist.
> If on a 32 bit machine the sources are translated with
> @code{_FILE_OFFSET_BITS == 64} the function @code{open} returns a file
> descriptor opened in the large file mode which enables the file handling
> -functions to use files up to @math{2^63} bytes in size and offset from
> -@math{-2^63} to @math{2^63}. This happens transparently for the user
> +functions to use files up to @twoexp{63} bytes in size and offset from
> +@minus{}@twoexp{63} to @twoexp{63}. This happens transparently for the user
> since all of the lowlevel file handling functions are equally replaced.
>
> This function is a cancellation point in multi-threaded programs. This
> @@ -201,8 +201,8 @@ open (@var{filename}, O_WRONLY | O_CREAT | O_TRUNC, @var{mode})
> If on a 32 bit machine the sources are translated with
> @code{_FILE_OFFSET_BITS == 64} the function @code{creat} returns a file
> descriptor opened in the large file mode which enables the file handling
> -functions to use files up to @math{2^63} in size and offset from
> -@math{-2^63} to @math{2^63}. This happens transparently for the user
> +functions to use files up to @twoexp{63} in size and offset from
> +@minus{}@twoexp{63} to @twoexp{63}. This happens transparently for the user
> since all of the lowlevel file handling functions are equally replaced.
> @end deftypefn
>
> @@ -422,7 +422,7 @@ not affected by the operation. The value is the same as before the call.
> When the source file is compiled with @code{_FILE_OFFSET_BITS == 64} the
> @code{pread} function is in fact @code{pread64} and the type
> @code{off_t} has 64 bits, which makes it possible to handle files up to
> -@math{2^63} bytes in length.
> +@twoexp{63} bytes in length.
>
> The return value of @code{pread} describes the number of bytes read.
> In the error case it returns @math{-1} like @code{read} does and the
> @@ -451,7 +451,7 @@ version 2.
> This function is similar to the @code{pread} function. The difference
> is that the @var{offset} parameter is of type @code{off64_t} instead of
> @code{off_t} which makes it possible on 32 bit machines to address
> -files larger than @math{2^31} bytes and up to @math{2^63} bytes. The
> +files larger than @twoexp{31} bytes and up to @twoexp{63} bytes. The
> file descriptor @code{filedes} must be opened using @code{open64} since
> otherwise the large offsets possible with @code{off64_t} will lead to
> errors with a descriptor in small file mode.
> @@ -623,7 +623,7 @@ not affected by the operation. The value is the same as before the call.
> When the source file is compiled with @code{_FILE_OFFSET_BITS == 64} the
> @code{pwrite} function is in fact @code{pwrite64} and the type
> @code{off_t} has 64 bits, which makes it possible to handle files up to
> -@math{2^63} bytes in length.
> +@twoexp{63} bytes in length.
>
> The return value of @code{pwrite} describes the number of written bytes.
> In the error case it returns @math{-1} like @code{write} does and the
> @@ -652,7 +652,7 @@ version 2.
> This function is similar to the @code{pwrite} function. The difference
> is that the @var{offset} parameter is of type @code{off64_t} instead of
> @code{off_t} which makes it possible on 32 bit machines to address
> -files larger than @math{2^31} bytes and up to @math{2^63} bytes. The
> +files larger than @twoexp{31} bytes and up to @twoexp{63} bytes. The
> file descriptor @code{filedes} must be opened using @code{open64} since
> otherwise the large offsets possible with @code{off64_t} will lead to
> errors with a descriptor in small file mode.
> @@ -752,7 +752,7 @@ only for pipes and FIFOs, but on @gnusystems{}, you always get
> When the source file is compiled with @code{_FILE_OFFSET_BITS == 64} the
> @code{lseek} function is in fact @code{lseek64} and the type
> @code{off_t} has 64 bits which makes it possible to handle files up to
> -@math{2^63} bytes in length.
> +@twoexp{63} bytes in length.
>
> This function is a cancellation point in multi-threaded programs. This
> is a problem if the thread allocates some resources (like memory, file
> @@ -775,7 +775,7 @@ descriptors.
> This function is similar to the @code{lseek} function. The difference
> is that the @var{offset} parameter is of type @code{off64_t} instead of
> @code{off_t} which makes it possible on 32 bit machines to address
> -files larger than @math{2^31} bytes and up to @math{2^63} bytes. The
> +files larger than @twoexp{31} bytes and up to @twoexp{63} bytes. The
> file descriptor @code{filedes} must be opened using @code{open64} since
> otherwise the large offsets possible with @code{off64_t} will lead to
> errors with a descriptor in small file mode.
> @@ -848,7 +848,7 @@ is transparently replaced by @code{off64_t}.
> This type is used similar to @code{off_t}. The difference is that even
> on 32 bit machines, where the @code{off_t} type would have 32 bits,
> @code{off64_t} has 64 bits and so is able to address files up to
> -@math{2^63} bytes in length.
> +@twoexp{63} bytes in length.
>
> When compiling with @code{_FILE_OFFSET_BITS == 64} this type is
> available under the name @code{off_t}.
> diff --git a/manual/macros.texi b/manual/macros.texi
> index f32c86d..9cf8031 100644
> --- a/manual/macros.texi
> +++ b/manual/macros.texi
> @@ -256,4 +256,15 @@ cwd\comments\
> !posix\comments\
> @end macro
>
> +@iftex
> +@macro twoexp{exp}
> +@math{2^{{\exp\}}}
> +@end macro
> +@end iftex
> +@ifnottex
> +@macro twoexp{exp}
> +2^\exp\
> +@end macro
> +@end ifnottex
> +
> @end ifclear
> diff --git a/manual/stdio.texi b/manual/stdio.texi
> index e407170..5d31774 100644
> --- a/manual/stdio.texi
> +++ b/manual/stdio.texi
> @@ -270,7 +270,7 @@ Locks}.
> @safety{@prelim{}@mtsafe{}@asunsafe{@ascuheap{} @asulock{}}@acunsafe{@acsmem{} @acsfd{} @aculock{}}}
> This function is similar to @code{fopen} but the stream it returns a
> pointer for is opened using @code{open64}. Therefore this stream can be
> -used even on files larger than @math{2^31} bytes on 32 bit machines.
> +used even on files larger than @twoexp{31} bytes on 32 bit machines.
>
> Please note that the return type is still @code{FILE *}. There is no
> special @code{FILE} type for the LFS interface.
> @@ -336,7 +336,7 @@ interface replaces transparently the old interface.
> @safety{@prelim{}@mtsafe{}@asunsafe{@asucorrupt{}}@acunsafe{@acucorrupt{} @acsfd{}}}
> This function is similar to @code{freopen}. The only difference is that
> on 32 bit machine the stream returned is able to read beyond the
> -@math{2^31} bytes limits imposed by the normal interface. It should be
> +@twoexp{31} bytes limits imposed by the normal interface. It should be
> noted that the stream pointed to by @var{stream} need not be opened
> using @code{fopen64} or @code{freopen64} since its mode is not important
> for this function.
> @@ -4412,7 +4412,7 @@ This function is similar to @code{ftello} with the only difference that
> the return value is of type @code{off64_t}. This also requires that the
> stream @var{stream} was opened using either @code{fopen64},
> @code{freopen64}, or @code{tmpfile64} since otherwise the underlying
> -file operations to position the file pointer beyond the @math{2^31}
> +file operations to position the file pointer beyond the @twoexp{31}
> bytes limit might fail.
>
> If the sources are compiled with @code{_FILE_OFFSET_BITS == 64} on a 32
> @@ -4473,7 +4473,7 @@ the @var{offset} parameter is of type @code{off64_t}. This also
> requires that the stream @var{stream} was opened using either
> @code{fopen64}, @code{freopen64}, or @code{tmpfile64} since otherwise
> the underlying file operations to position the file pointer beyond the
> -@math{2^31} bytes limit might fail.
> +@twoexp{31} bytes limit might fail.
>
> If the sources are compiled with @code{_FILE_OFFSET_BITS == 64} on a 32
> bits machine this function is available under the name @code{fseeko}
On Wed, Aug 12, 2015 at 10:26:40PM +0200, Ondřej Bílka wrote:
> ping, is that ok now.
> On Sun, Jul 12, 2015 at 11:32:56AM +0200, Ondřej Bílka wrote:
> > On Thu, Jun 18, 2015 at 04:01:09PM +0000, Joseph Myers wrote:
> > > On Thu, 18 Jun 2015, Carlos O'Donell wrote:
> > >
> > > > > The macro definitions should go in macros.texi, rather than being
> > > > > duplicated in each file using it.
> > > >
> > > > It would also seem sensible to keep such macros near their uses,
> > > > and move them to macros.texi only if globally useful or repeated
> > > > more than some nominal number of times.
> > > >
> > > > What if the macro was only used in one place? Would we still put
> > > > it into macros.texi?
> > >
> > > If it were only used in one source file, it might be reasonable to define
> > > it there, but this macro is used in three source files.
> > >
> > Ok, here is new version.
> >
> > * manual/macros.texi: Add twoexp macro.
> > * manual/filesys.texi: Fix exponents.
> > * manual/llio.texi: Likewise.
> > * manual/stdio.texi: Likewise.
> >
> > diff --git a/manual/filesys.texi b/manual/filesys.texi
> > index 0f2e3dc..ed4f5fd 100644
> > --- a/manual/filesys.texi
> > +++ b/manual/filesys.texi
> > @@ -1834,7 +1834,7 @@ writing the file. (This is unrelated to @code{st_blocks}.)
> > @end deftp
> >
> > The extensions for the Large File Support (LFS) require, even on 32-bit
> > -machines, types which can handle file sizes up to @math{2^63}.
> > +machines, types which can handle file sizes up to @twoexp{63}.
> > Therefore a new definition of @code{struct stat} is necessary.
> >
> > @comment sys/stat.h
> > @@ -2024,7 +2024,7 @@ replaces the normal implementation.
> > @deftypefun int stat64 (const char *@var{filename}, struct stat64 *@var{buf})
> > @safety{@prelim{}@mtsafe{}@assafe{}@acsafe{}}
> > This function is similar to @code{stat} but it is also able to work on
> > -files larger than @math{2^31} bytes on 32-bit systems. To be able to do
> > +files larger than @twoexp{31} bytes on 32-bit systems. To be able to do
> > this the result is stored in a variable of type @code{struct stat64} to
> > which @var{buf} must point.
> >
> > @@ -2097,7 +2097,7 @@ replaces the normal implementation.
> > @c Direct system call through lxstat64, sometimes with an xstat conv
> > @c call afterwards.
> > This function is similar to @code{lstat} but it is also able to work on
> > -files larger than @math{2^31} bytes on 32-bit systems. To be able to do
> > +files larger than @twoexp{31} bytes on 32-bit systems. To be able to do
> > this the result is stored in a variable of type @code{struct stat64} to
> > which @var{buf} must point.
> >
> > @@ -3073,7 +3073,7 @@ systems do not support this feature and will leave the file unchanged.
> > When the source file is compiled with @code{_FILE_OFFSET_BITS == 64} the
> > @code{truncate} function is in fact @code{truncate64} and the type
> > @code{off_t} has 64 bits which makes it possible to handle files up to
> > -@math{2^63} bytes in length.
> > +@twoexp{63} bytes in length.
> >
> > The return value is @math{0} for success, or @math{-1} for an error. In
> > addition to the usual file name errors, the following errors may occur:
> > @@ -3110,7 +3110,7 @@ The operation was interrupted by a signal.
> > This function is similar to the @code{truncate} function. The
> > difference is that the @var{length} argument is 64 bits wide even on 32
> > bits machines, which allows the handling of files with sizes up to
> > -@math{2^63} bytes.
> > +@twoexp{63} bytes.
> >
> > When the source file is compiled with @code{_FILE_OFFSET_BITS == 64} on a
> > 32 bits machine this function is actually available under the name
> > @@ -3144,7 +3144,7 @@ The example below shows how this works.
> > When the source file is compiled with @code{_FILE_OFFSET_BITS == 64} the
> > @code{ftruncate} function is in fact @code{ftruncate64} and the type
> > @code{off_t} has 64 bits which makes it possible to handle files up to
> > -@math{2^63} bytes in length.
> > +@twoexp{63} bytes in length.
> >
> > The return value is @math{0} for success, or @math{-1} for an error. The
> > following errors may occur:
> > @@ -3190,7 +3190,7 @@ The operation was interrupted by a signal.
> > This function is similar to the @code{ftruncate} function. The
> > difference is that the @var{length} argument is 64 bits wide even on 32
> > bits machines which allows the handling of files with sizes up to
> > -@math{2^63} bytes.
> > +@twoexp{63} bytes.
> >
> > When the source file is compiled with @code{_FILE_OFFSET_BITS == 64} on a
> > 32 bits machine this function is actually available under the name
> > @@ -3430,7 +3430,7 @@ interface transparently replaces the old interface.
> > @safety{@prelim{}@mtsafe{}@asunsafe{@ascuheap{} @asulock{}}@acunsafe{@acsmem{} @acsfd{} @aculock{}}}
> > This function is similar to @code{tmpfile}, but the stream it returns a
> > pointer to was opened using @code{tmpfile64}. Therefore this stream can
> > -be used for files larger than @math{2^31} bytes on 32-bit machines.
> > +be used for files larger than @twoexp{31} bytes on 32-bit machines.
> >
> > Please note that the return type is still @code{FILE *}. There is no
> > special @code{FILE} type for the LFS interface.
> > diff --git a/manual/llio.texi b/manual/llio.texi
> > index 4f3fada..019dea2 100644
> > --- a/manual/llio.texi
> > +++ b/manual/llio.texi
> > @@ -150,8 +150,8 @@ or @code{O_CREAT} is set and the file does not already exist.
> > If on a 32 bit machine the sources are translated with
> > @code{_FILE_OFFSET_BITS == 64} the function @code{open} returns a file
> > descriptor opened in the large file mode which enables the file handling
> > -functions to use files up to @math{2^63} bytes in size and offset from
> > -@math{-2^63} to @math{2^63}. This happens transparently for the user
> > +functions to use files up to @twoexp{63} bytes in size and offset from
> > +@minus{}@twoexp{63} to @twoexp{63}. This happens transparently for the user
> > since all of the lowlevel file handling functions are equally replaced.
> >
> > This function is a cancellation point in multi-threaded programs. This
> > @@ -201,8 +201,8 @@ open (@var{filename}, O_WRONLY | O_CREAT | O_TRUNC, @var{mode})
> > If on a 32 bit machine the sources are translated with
> > @code{_FILE_OFFSET_BITS == 64} the function @code{creat} returns a file
> > descriptor opened in the large file mode which enables the file handling
> > -functions to use files up to @math{2^63} in size and offset from
> > -@math{-2^63} to @math{2^63}. This happens transparently for the user
> > +functions to use files up to @twoexp{63} in size and offset from
> > +@minus{}@twoexp{63} to @twoexp{63}. This happens transparently for the user
> > since all of the lowlevel file handling functions are equally replaced.
> > @end deftypefn
> >
> > @@ -422,7 +422,7 @@ not affected by the operation. The value is the same as before the call.
> > When the source file is compiled with @code{_FILE_OFFSET_BITS == 64} the
> > @code{pread} function is in fact @code{pread64} and the type
> > @code{off_t} has 64 bits, which makes it possible to handle files up to
> > -@math{2^63} bytes in length.
> > +@twoexp{63} bytes in length.
> >
> > The return value of @code{pread} describes the number of bytes read.
> > In the error case it returns @math{-1} like @code{read} does and the
> > @@ -451,7 +451,7 @@ version 2.
> > This function is similar to the @code{pread} function. The difference
> > is that the @var{offset} parameter is of type @code{off64_t} instead of
> > @code{off_t} which makes it possible on 32 bit machines to address
> > -files larger than @math{2^31} bytes and up to @math{2^63} bytes. The
> > +files larger than @twoexp{31} bytes and up to @twoexp{63} bytes. The
> > file descriptor @code{filedes} must be opened using @code{open64} since
> > otherwise the large offsets possible with @code{off64_t} will lead to
> > errors with a descriptor in small file mode.
> > @@ -623,7 +623,7 @@ not affected by the operation. The value is the same as before the call.
> > When the source file is compiled with @code{_FILE_OFFSET_BITS == 64} the
> > @code{pwrite} function is in fact @code{pwrite64} and the type
> > @code{off_t} has 64 bits, which makes it possible to handle files up to
> > -@math{2^63} bytes in length.
> > +@twoexp{63} bytes in length.
> >
> > The return value of @code{pwrite} describes the number of written bytes.
> > In the error case it returns @math{-1} like @code{write} does and the
> > @@ -652,7 +652,7 @@ version 2.
> > This function is similar to the @code{pwrite} function. The difference
> > is that the @var{offset} parameter is of type @code{off64_t} instead of
> > @code{off_t} which makes it possible on 32 bit machines to address
> > -files larger than @math{2^31} bytes and up to @math{2^63} bytes. The
> > +files larger than @twoexp{31} bytes and up to @twoexp{63} bytes. The
> > file descriptor @code{filedes} must be opened using @code{open64} since
> > otherwise the large offsets possible with @code{off64_t} will lead to
> > errors with a descriptor in small file mode.
> > @@ -752,7 +752,7 @@ only for pipes and FIFOs, but on @gnusystems{}, you always get
> > When the source file is compiled with @code{_FILE_OFFSET_BITS == 64} the
> > @code{lseek} function is in fact @code{lseek64} and the type
> > @code{off_t} has 64 bits which makes it possible to handle files up to
> > -@math{2^63} bytes in length.
> > +@twoexp{63} bytes in length.
> >
> > This function is a cancellation point in multi-threaded programs. This
> > is a problem if the thread allocates some resources (like memory, file
> > @@ -775,7 +775,7 @@ descriptors.
> > This function is similar to the @code{lseek} function. The difference
> > is that the @var{offset} parameter is of type @code{off64_t} instead of
> > @code{off_t} which makes it possible on 32 bit machines to address
> > -files larger than @math{2^31} bytes and up to @math{2^63} bytes. The
> > +files larger than @twoexp{31} bytes and up to @twoexp{63} bytes. The
> > file descriptor @code{filedes} must be opened using @code{open64} since
> > otherwise the large offsets possible with @code{off64_t} will lead to
> > errors with a descriptor in small file mode.
> > @@ -848,7 +848,7 @@ is transparently replaced by @code{off64_t}.
> > This type is used similar to @code{off_t}. The difference is that even
> > on 32 bit machines, where the @code{off_t} type would have 32 bits,
> > @code{off64_t} has 64 bits and so is able to address files up to
> > -@math{2^63} bytes in length.
> > +@twoexp{63} bytes in length.
> >
> > When compiling with @code{_FILE_OFFSET_BITS == 64} this type is
> > available under the name @code{off_t}.
> > diff --git a/manual/macros.texi b/manual/macros.texi
> > index f32c86d..9cf8031 100644
> > --- a/manual/macros.texi
> > +++ b/manual/macros.texi
> > @@ -256,4 +256,15 @@ cwd\comments\
> > !posix\comments\
> > @end macro
> >
> > +@iftex
> > +@macro twoexp{exp}
> > +@math{2^{{\exp\}}}
> > +@end macro
> > +@end iftex
> > +@ifnottex
> > +@macro twoexp{exp}
> > +2^\exp\
> > +@end macro
> > +@end ifnottex
> > +
> > @end ifclear
> > diff --git a/manual/stdio.texi b/manual/stdio.texi
> > index e407170..5d31774 100644
> > --- a/manual/stdio.texi
> > +++ b/manual/stdio.texi
> > @@ -270,7 +270,7 @@ Locks}.
> > @safety{@prelim{}@mtsafe{}@asunsafe{@ascuheap{} @asulock{}}@acunsafe{@acsmem{} @acsfd{} @aculock{}}}
> > This function is similar to @code{fopen} but the stream it returns a
> > pointer for is opened using @code{open64}. Therefore this stream can be
> > -used even on files larger than @math{2^31} bytes on 32 bit machines.
> > +used even on files larger than @twoexp{31} bytes on 32 bit machines.
> >
> > Please note that the return type is still @code{FILE *}. There is no
> > special @code{FILE} type for the LFS interface.
> > @@ -336,7 +336,7 @@ interface replaces transparently the old interface.
> > @safety{@prelim{}@mtsafe{}@asunsafe{@asucorrupt{}}@acunsafe{@acucorrupt{} @acsfd{}}}
> > This function is similar to @code{freopen}. The only difference is that
> > on 32 bit machine the stream returned is able to read beyond the
> > -@math{2^31} bytes limits imposed by the normal interface. It should be
> > +@twoexp{31} bytes limits imposed by the normal interface. It should be
> > noted that the stream pointed to by @var{stream} need not be opened
> > using @code{fopen64} or @code{freopen64} since its mode is not important
> > for this function.
> > @@ -4412,7 +4412,7 @@ This function is similar to @code{ftello} with the only difference that
> > the return value is of type @code{off64_t}. This also requires that the
> > stream @var{stream} was opened using either @code{fopen64},
> > @code{freopen64}, or @code{tmpfile64} since otherwise the underlying
> > -file operations to position the file pointer beyond the @math{2^31}
> > +file operations to position the file pointer beyond the @twoexp{31}
> > bytes limit might fail.
> >
> > If the sources are compiled with @code{_FILE_OFFSET_BITS == 64} on a 32
> > @@ -4473,7 +4473,7 @@ the @var{offset} parameter is of type @code{off64_t}. This also
> > requires that the stream @var{stream} was opened using either
> > @code{fopen64}, @code{freopen64}, or @code{tmpfile64} since otherwise
> > the underlying file operations to position the file pointer beyond the
> > -@math{2^31} bytes limit might fail.
> > +@twoexp{31} bytes limit might fail.
> >
> > If the sources are compiled with @code{_FILE_OFFSET_BITS == 64} on a 32
> > bits machine this function is available under the name @code{fseeko}
>
> --
>
> Change your language to Finnish.
@@ -1834,7 +1834,7 @@ writing the file. (This is unrelated to @code{st_blocks}.)
@end deftp
The extensions for the Large File Support (LFS) require, even on 32-bit
-machines, types which can handle file sizes up to @math{2^63}.
+machines, types which can handle file sizes up to @twoexp{63}.
Therefore a new definition of @code{struct stat} is necessary.
@comment sys/stat.h
@@ -2024,7 +2024,7 @@ replaces the normal implementation.
@deftypefun int stat64 (const char *@var{filename}, struct stat64 *@var{buf})
@safety{@prelim{}@mtsafe{}@assafe{}@acsafe{}}
This function is similar to @code{stat} but it is also able to work on
-files larger than @math{2^31} bytes on 32-bit systems. To be able to do
+files larger than @twoexp{31} bytes on 32-bit systems. To be able to do
this the result is stored in a variable of type @code{struct stat64} to
which @var{buf} must point.
@@ -2097,7 +2097,7 @@ replaces the normal implementation.
@c Direct system call through lxstat64, sometimes with an xstat conv
@c call afterwards.
This function is similar to @code{lstat} but it is also able to work on
-files larger than @math{2^31} bytes on 32-bit systems. To be able to do
+files larger than @twoexp{31} bytes on 32-bit systems. To be able to do
this the result is stored in a variable of type @code{struct stat64} to
which @var{buf} must point.
@@ -3073,7 +3073,7 @@ systems do not support this feature and will leave the file unchanged.
When the source file is compiled with @code{_FILE_OFFSET_BITS == 64} the
@code{truncate} function is in fact @code{truncate64} and the type
@code{off_t} has 64 bits which makes it possible to handle files up to
-@math{2^63} bytes in length.
+@twoexp{63} bytes in length.
The return value is @math{0} for success, or @math{-1} for an error. In
addition to the usual file name errors, the following errors may occur:
@@ -3110,7 +3110,7 @@ The operation was interrupted by a signal.
This function is similar to the @code{truncate} function. The
difference is that the @var{length} argument is 64 bits wide even on 32
bits machines, which allows the handling of files with sizes up to
-@math{2^63} bytes.
+@twoexp{63} bytes.
When the source file is compiled with @code{_FILE_OFFSET_BITS == 64} on a
32 bits machine this function is actually available under the name
@@ -3144,7 +3144,7 @@ The example below shows how this works.
When the source file is compiled with @code{_FILE_OFFSET_BITS == 64} the
@code{ftruncate} function is in fact @code{ftruncate64} and the type
@code{off_t} has 64 bits which makes it possible to handle files up to
-@math{2^63} bytes in length.
+@twoexp{63} bytes in length.
The return value is @math{0} for success, or @math{-1} for an error. The
following errors may occur:
@@ -3190,7 +3190,7 @@ The operation was interrupted by a signal.
This function is similar to the @code{ftruncate} function. The
difference is that the @var{length} argument is 64 bits wide even on 32
bits machines which allows the handling of files with sizes up to
-@math{2^63} bytes.
+@twoexp{63} bytes.
When the source file is compiled with @code{_FILE_OFFSET_BITS == 64} on a
32 bits machine this function is actually available under the name
@@ -3430,7 +3430,7 @@ interface transparently replaces the old interface.
@safety{@prelim{}@mtsafe{}@asunsafe{@ascuheap{} @asulock{}}@acunsafe{@acsmem{} @acsfd{} @aculock{}}}
This function is similar to @code{tmpfile}, but the stream it returns a
pointer to was opened using @code{tmpfile64}. Therefore this stream can
-be used for files larger than @math{2^31} bytes on 32-bit machines.
+be used for files larger than @twoexp{31} bytes on 32-bit machines.
Please note that the return type is still @code{FILE *}. There is no
special @code{FILE} type for the LFS interface.
@@ -150,8 +150,8 @@ or @code{O_CREAT} is set and the file does not already exist.
If on a 32 bit machine the sources are translated with
@code{_FILE_OFFSET_BITS == 64} the function @code{open} returns a file
descriptor opened in the large file mode which enables the file handling
-functions to use files up to @math{2^63} bytes in size and offset from
-@math{-2^63} to @math{2^63}. This happens transparently for the user
+functions to use files up to @twoexp{63} bytes in size and offset from
+@minus{}@twoexp{63} to @twoexp{63}. This happens transparently for the user
since all of the lowlevel file handling functions are equally replaced.
This function is a cancellation point in multi-threaded programs. This
@@ -201,8 +201,8 @@ open (@var{filename}, O_WRONLY | O_CREAT | O_TRUNC, @var{mode})
If on a 32 bit machine the sources are translated with
@code{_FILE_OFFSET_BITS == 64} the function @code{creat} returns a file
descriptor opened in the large file mode which enables the file handling
-functions to use files up to @math{2^63} in size and offset from
-@math{-2^63} to @math{2^63}. This happens transparently for the user
+functions to use files up to @twoexp{63} in size and offset from
+@minus{}@twoexp{63} to @twoexp{63}. This happens transparently for the user
since all of the lowlevel file handling functions are equally replaced.
@end deftypefn
@@ -422,7 +422,7 @@ not affected by the operation. The value is the same as before the call.
When the source file is compiled with @code{_FILE_OFFSET_BITS == 64} the
@code{pread} function is in fact @code{pread64} and the type
@code{off_t} has 64 bits, which makes it possible to handle files up to
-@math{2^63} bytes in length.
+@twoexp{63} bytes in length.
The return value of @code{pread} describes the number of bytes read.
In the error case it returns @math{-1} like @code{read} does and the
@@ -451,7 +451,7 @@ version 2.
This function is similar to the @code{pread} function. The difference
is that the @var{offset} parameter is of type @code{off64_t} instead of
@code{off_t} which makes it possible on 32 bit machines to address
-files larger than @math{2^31} bytes and up to @math{2^63} bytes. The
+files larger than @twoexp{31} bytes and up to @twoexp{63} bytes. The
file descriptor @code{filedes} must be opened using @code{open64} since
otherwise the large offsets possible with @code{off64_t} will lead to
errors with a descriptor in small file mode.
@@ -623,7 +623,7 @@ not affected by the operation. The value is the same as before the call.
When the source file is compiled with @code{_FILE_OFFSET_BITS == 64} the
@code{pwrite} function is in fact @code{pwrite64} and the type
@code{off_t} has 64 bits, which makes it possible to handle files up to
-@math{2^63} bytes in length.
+@twoexp{63} bytes in length.
The return value of @code{pwrite} describes the number of written bytes.
In the error case it returns @math{-1} like @code{write} does and the
@@ -652,7 +652,7 @@ version 2.
This function is similar to the @code{pwrite} function. The difference
is that the @var{offset} parameter is of type @code{off64_t} instead of
@code{off_t} which makes it possible on 32 bit machines to address
-files larger than @math{2^31} bytes and up to @math{2^63} bytes. The
+files larger than @twoexp{31} bytes and up to @twoexp{63} bytes. The
file descriptor @code{filedes} must be opened using @code{open64} since
otherwise the large offsets possible with @code{off64_t} will lead to
errors with a descriptor in small file mode.
@@ -752,7 +752,7 @@ only for pipes and FIFOs, but on @gnusystems{}, you always get
When the source file is compiled with @code{_FILE_OFFSET_BITS == 64} the
@code{lseek} function is in fact @code{lseek64} and the type
@code{off_t} has 64 bits which makes it possible to handle files up to
-@math{2^63} bytes in length.
+@twoexp{63} bytes in length.
This function is a cancellation point in multi-threaded programs. This
is a problem if the thread allocates some resources (like memory, file
@@ -775,7 +775,7 @@ descriptors.
This function is similar to the @code{lseek} function. The difference
is that the @var{offset} parameter is of type @code{off64_t} instead of
@code{off_t} which makes it possible on 32 bit machines to address
-files larger than @math{2^31} bytes and up to @math{2^63} bytes. The
+files larger than @twoexp{31} bytes and up to @twoexp{63} bytes. The
file descriptor @code{filedes} must be opened using @code{open64} since
otherwise the large offsets possible with @code{off64_t} will lead to
errors with a descriptor in small file mode.
@@ -848,7 +848,7 @@ is transparently replaced by @code{off64_t}.
This type is used similar to @code{off_t}. The difference is that even
on 32 bit machines, where the @code{off_t} type would have 32 bits,
@code{off64_t} has 64 bits and so is able to address files up to
-@math{2^63} bytes in length.
+@twoexp{63} bytes in length.
When compiling with @code{_FILE_OFFSET_BITS == 64} this type is
available under the name @code{off_t}.
@@ -256,4 +256,15 @@ cwd\comments\
!posix\comments\
@end macro
+@iftex
+@macro twoexp{exp}
+@math{2^{{\exp\}}}
+@end macro
+@end iftex
+@ifnottex
+@macro twoexp{exp}
+2^\exp\
+@end macro
+@end ifnottex
+
@end ifclear
@@ -270,7 +270,7 @@ Locks}.
@safety{@prelim{}@mtsafe{}@asunsafe{@ascuheap{} @asulock{}}@acunsafe{@acsmem{} @acsfd{} @aculock{}}}
This function is similar to @code{fopen} but the stream it returns a
pointer for is opened using @code{open64}. Therefore this stream can be
-used even on files larger than @math{2^31} bytes on 32 bit machines.
+used even on files larger than @twoexp{31} bytes on 32 bit machines.
Please note that the return type is still @code{FILE *}. There is no
special @code{FILE} type for the LFS interface.
@@ -336,7 +336,7 @@ interface replaces transparently the old interface.
@safety{@prelim{}@mtsafe{}@asunsafe{@asucorrupt{}}@acunsafe{@acucorrupt{} @acsfd{}}}
This function is similar to @code{freopen}. The only difference is that
on 32 bit machine the stream returned is able to read beyond the
-@math{2^31} bytes limits imposed by the normal interface. It should be
+@twoexp{31} bytes limits imposed by the normal interface. It should be
noted that the stream pointed to by @var{stream} need not be opened
using @code{fopen64} or @code{freopen64} since its mode is not important
for this function.
@@ -4412,7 +4412,7 @@ This function is similar to @code{ftello} with the only difference that
the return value is of type @code{off64_t}. This also requires that the
stream @var{stream} was opened using either @code{fopen64},
@code{freopen64}, or @code{tmpfile64} since otherwise the underlying
-file operations to position the file pointer beyond the @math{2^31}
+file operations to position the file pointer beyond the @twoexp{31}
bytes limit might fail.
If the sources are compiled with @code{_FILE_OFFSET_BITS == 64} on a 32
@@ -4473,7 +4473,7 @@ the @var{offset} parameter is of type @code{off64_t}. This also
requires that the stream @var{stream} was opened using either
@code{fopen64}, @code{freopen64}, or @code{tmpfile64} since otherwise
the underlying file operations to position the file pointer beyond the
-@math{2^31} bytes limit might fail.
+@twoexp{31} bytes limit might fail.
If the sources are compiled with @code{_FILE_OFFSET_BITS == 64} on a 32
bits machine this function is available under the name @code{fseeko}