summaryrefslogtreecommitdiffstats
path: root/c/src/tests/psxtests/psxfile01/test_cat.c
diff options
context:
space:
mode:
authorJoel Sherrill <joel.sherrill@OARcorp.com>1999-11-23 13:43:34 +0000
committerJoel Sherrill <joel.sherrill@OARcorp.com>1999-11-23 13:43:34 +0000
commita23cad6aa055bbe1a9475a38ab35010f580671b1 (patch)
tree78abbb4b5ad2a260d72b659dbf0909679e4851b7 /c/src/tests/psxtests/psxfile01/test_cat.c
parentTest psxfile02 unused and removed. (diff)
downloadrtems-a23cad6aa055bbe1a9475a38ab35010f580671b1.tar.bz2
Files only used by psxfile01, so moved there.
Diffstat (limited to 'c/src/tests/psxtests/psxfile01/test_cat.c')
-rw-r--r--c/src/tests/psxtests/psxfile01/test_cat.c81
1 files changed, 81 insertions, 0 deletions
diff --git a/c/src/tests/psxtests/psxfile01/test_cat.c b/c/src/tests/psxtests/psxfile01/test_cat.c
new file mode 100644
index 0000000000..f6daecfad7
--- /dev/null
+++ b/c/src/tests/psxtests/psxfile01/test_cat.c
@@ -0,0 +1,81 @@
+/*
+ * A test support function which performs a crude version of
+ * "cat" so you can look at specific parts of a file.
+ *
+ * $Id$
+ */
+
+#include <stdio.h>
+
+#include <sys/types.h>
+#include <sys/stat.h>
+#include <fcntl.h>
+#include <unistd.h>
+#include <errno.h>
+#include <string.h>
+#include <ctype.h>
+
+#include <assert.h>
+
+/*
+ * test_cat routine
+ */
+
+unsigned char test_cat_buffer[ 1024 ];
+
+void test_cat(
+ char *file,
+ int offset_arg,
+ int length
+)
+{
+ int fd;
+ int status;
+ int is_printable = 0;
+ int my_length;
+ int i;
+ unsigned char c;
+ int count = 0;
+ off_t offset = (off_t)offset_arg;
+
+ my_length = (length) ? length : sizeof( test_cat_buffer );
+ assert( my_length <= sizeof( test_cat_buffer ) );
+
+ fd = open( file, O_RDONLY );
+ if ( fd == -1 ) {
+ printf( "test_cat: open( %s ) failed : %s\n", file, strerror( errno ) );
+ exit( 0 );
+ }
+
+ for ( ;; ) {
+ status = lseek( fd, offset, SEEK_SET );
+ assert( status != -1 );
+
+ status = read( fd, test_cat_buffer, sizeof(test_cat_buffer) );
+ if ( status <= 0 ) {
+ if (!is_printable)
+ printf( "(%d)", count );
+ puts( "" );
+ break;
+ }
+
+ for ( i=0 ; i<status ; i++ ) {
+ c = test_cat_buffer[i];
+ if (isprint(c) || isspace(c)) {
+ if (!is_printable) {
+ printf( "(%d)", count );
+ count = 0;
+ is_printable = 1;
+ }
+ putchar(c);
+ } else {
+ is_printable = 0;
+ count++;
+ }
+ }
+ offset += status;
+ }
+
+ status = close( fd );
+ assert( !status );
+}