diff options
| -rw-r--r-- | INSTALL | 22 | ||||
| -rw-r--r-- | trip.rc | 12 | ||||
| -rw-r--r-- | tripping.c | 23 |
3 files changed, 57 insertions, 0 deletions
@@ -11,6 +11,7 @@ need to configure, build, test, and install rc. This will build rc in the source directory (see below for details on how to build rc in a different directory). + BUILD AND CONFIGURATION OPTIONS There are lots of options you can give to configure to modify rc's @@ -134,6 +135,25 @@ do this. This will produce some output, and should end with "trip is complete". If the trip instead ends with "trip took a wrong turn..." please contact the maintainer. + +LARGE FILE SUPPORT + +This release of rc supports large files (i.e. with 64 bit offsets), on +systems where the configure script can figure out how to enable this. +When you run `make trip' (you always run `make trip', right?) the +penultimate line of output (before "trip complete") reports whether +large file support seems to be working or not. + +Large file support is a function of file systems, as well as +applications. For example, NFS and tmpfs file systems often do not +support large files. The test used by `make trip' is therefore +subject to false negatives. That is, a report that "large file +support seems NOT to be working" may be erroneous. To minimise this +possibility, the test is performed both in the current directory +(where you built rc) and /tmp. (I don't think there's any scenario +where a false positive can be reported.) + + BUILDING IN ANOTHER DIRECTORY If you have a suitable `make', you can build rc in a different directory @@ -142,6 +162,7 @@ are building rc for multiple architectures. All you need do is specify the path to the configure script in the first step. Suitable `make's include GNU, HP-UX, and SunOS, but not Irix, nor Ultrix, nor UnixWare. + COMPILATION WARNINGS If your C compiler is gcc, the option `-Wall' is turned on. This may @@ -162,6 +183,7 @@ incorrect declaration of `getgroups()' in those systems' header files. Any other warnings should be reported to the maintainer. + OLD C rc needs an ISO C (89) compiler, or at least one that has a reasonable @@ -586,3 +586,15 @@ eval z^`{whatis -v x} fn x {echo x.y $(x.y)} ~ ``''{whatis -f x} 'fn x {echo x.y $''x.y''} ' || fail sneaky parens bug + +# large file support + +# this is, by no means, an exhaustive test. since particular file +# systems do, or do not, support large files, we try it both in the +# build directory and /tmp. + +if (./tripping l > big.$pid >[2] /dev/null || + ./tripping l > /tmp/big.$pid >[2] /dev/null) { + echo large file support seems to work +} else echo large file support seems NOT to work - see INSTALL file +rm -f big.$pid /tmp/big.$pid @@ -1,7 +1,12 @@ /* This is an auxiliary test program for rc. */ +#include "config.h" + #include <fcntl.h> #include <stdio.h> +#include <stdlib.h> +#include <sys/types.h> +#include <unistd.h> static void out0(void) { putchar('t'); putchar('r'); @@ -14,6 +19,21 @@ static void ctrl_a(void) { puts("a\001ab\002b"); } +static void large(void) { + char c = 'c'; + +#define LARGE (((off_t)1<<33)+1) + + if (lseek(1, LARGE, SEEK_SET) != LARGE) { + perror("lseek"); + exit(1); + } + if (write(1, &c, 1) == -1) { + perror("write"); + exit(1); + } +} + static void makenonblock(void) { int flags; @@ -32,6 +52,9 @@ int main(int argc, char **argv) { case 'a': ctrl_a(); break; + case 'l': + large(); + break; case 'n': makenonblock(); break; |