File indexing completed on 2025-05-11 08:24:37
0001
0002
0003
0004
0005
0006
0007
0008
0009
0010
0011
0012
0013
0014
0015
0016
0017
0018
0019
0020
0021
0022
0023
0024
0025
0026
0027
0028
0029
0030
0031
0032
0033
0034
0035
0036 #ifdef HAVE_CONFIG_H
0037 #include "config.h"
0038 #endif
0039
0040 #include <stdio.h>
0041
0042 #include <sys/types.h>
0043 #include <sys/stat.h>
0044 #include <fcntl.h>
0045 #include <unistd.h>
0046 #include <errno.h>
0047 #include <string.h>
0048 #include <ctype.h>
0049
0050 #include <tmacros.h>
0051
0052
0053 void test_cat(char *file, int offset_arg, int length);
0054
0055
0056
0057
0058
0059 unsigned char test_cat_buffer[ 1024 ];
0060
0061 void test_cat(
0062 char *file,
0063 int offset_arg,
0064 int length
0065 )
0066 {
0067 int fd;
0068 int status;
0069 int is_printable = 0;
0070 int my_length;
0071 int i;
0072 unsigned char c;
0073 int count = 0;
0074 off_t offset = (off_t)offset_arg;
0075
0076 my_length = (length) ? length : sizeof( test_cat_buffer );
0077 rtems_test_assert( my_length <= sizeof( test_cat_buffer ) );
0078
0079 fd = open( file, O_RDONLY );
0080 if ( fd == -1 ) {
0081 printf( "test_cat: open( %s ) failed : %s\n", file, strerror( errno ) );
0082 rtems_test_exit( 0 );
0083 }
0084
0085 for ( ;; ) {
0086 status = lseek( fd, offset, SEEK_SET );
0087 rtems_test_assert( status != -1 );
0088
0089 status = read( fd, test_cat_buffer, sizeof(test_cat_buffer) );
0090 if ( status <= 0 ) {
0091 if (!is_printable)
0092 printf( "(%d)", count );
0093 puts( "" );
0094 break;
0095 }
0096
0097 for ( i=0 ; i<status ; i++ ) {
0098 c = test_cat_buffer[i];
0099 if (isprint(c) || isspace(c)) {
0100 if (!is_printable) {
0101 printf( "(%d)", count );
0102 count = 0;
0103 is_printable = 1;
0104 }
0105 putchar(c);
0106 } else {
0107 is_printable = 0;
0108 count++;
0109 }
0110 }
0111 offset += status;
0112 }
0113
0114 status = close( fd );
0115 rtems_test_assert( !status );
0116 }