| #!/bin/sh |
| # |
| # Copyright (c) International Business Machines Corp., 2000 |
| # |
| # This program is free software; you can redistribute it and/or modify |
| # it under the terms of the GNU General Public License as published by |
| # the Free Software Foundation; either version 2 of the License, or |
| # (at your option) any later version. |
| # |
| # This program is distributed in the hope that it will be useful, |
| # but WITHOUT ANY WARRANTY; without even the implied warranty of |
| # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See |
| # the GNU General Public License for more details. |
| # |
| # You should have received a copy of the GNU General Public License |
| # along with this program; if not, write to the Free Software |
| # Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA |
| # |
| # |
| # |
| # FILE : ar |
| # |
| # PURPOSE: Construct one or more command lines which use options that do not |
| # take arguments |
| # For each of these invocations |
| # Specify the options seperately |
| # |
| # Group the options together |
| # Compare the behavior of the two cases |
| # If they behave differently, then fail |
| # If none of the cases fail, then pass |
| # |
| # HISTORY: |
| # 06/01 Robbie Williamson ([email protected]) |
| # -Ported |
| # |
| # |
| #----------------------------------------------------------------------- |
| # |
| #---------------------------------------------------------------------- |
| #Uncomment line below for debug output. |
| #trace_logic=${trace_logic:-"set -x"} |
| $trace_logic |
| |
| TCtmp=${TCtmp:-/tmp/ar01-$$} |
| mkdir $TCtmp |
| TCdat=${TCdat:-`pwd`} |
| cd $TCdat |
| |
| LOOPS=${LOOPS:-1} |
| LIST="file1.in file2.in file3.in file4.in file5.in file6.in file7.in file8.in file9.in file10.in" |
| LIST="$LIST $LIST $LIST $LIST $LIST $LIST $LIST $LIST $LIST $LIST" |
| COUNT=1 |
| TCRESULT=0 |
| |
| # Setup function |
| setup() { |
| for i in $LIST;do |
| touch $i |
| done |
| } |
| |
| # Cleanup function |
| cleanup() { |
| if [ $TCRESULT = 0 ]; then |
| echo "---------------ar command passed the system test-----------------" |
| exit 0 |
| else |
| echo "---------------ar command failed the system test-----------------" |
| exit 1 |
| fi |
| } |
| |
| crtest() { |
| if [ $? -ne 0 ] |
| then |
| TCRESULT=1 |
| echo "FAIL - could not create lib.a" |
| cleanup |
| fi |
| } |
| |
| ttest() { |
| if [ $? -ne 0 ] |
| then |
| TCRESULT=1 |
| echo "FAIL - could not output table from lib.a to lib.a.stdout" |
| cleanup |
| fi |
| } |
| |
| rtest() { |
| if [ $? -ne 0 ] |
| then |
| TCRESULT=1 |
| echo "FAIL - could not add file into lib.a" |
| cleanup |
| fi |
| } |
| |
| mtest() { |
| if [ $? -ne 0 ] |
| then |
| TCRESULT=1 |
| echo "FAIL - could not move file into lib.a" |
| cleanup |
| fi |
| } |
| |
| setup |
| |
| # Main Loop |
| while [ $COUNT -le $LOOPS ] |
| do |
| echo "-------System test for ar command, Loop $COUNT----" |
| #The 'a' flag causes files to be placed after 'posname'. |
| |
| # CODE |
| rm -rf $TCtmp/lib.a;cd $TCdat |
| |
| printf "file1.in\nfile2.in\nfile3.in\n" >$TCtmp/lib.a.exp |
| |
| ar -cr $TCtmp/lib.a file1.in file3.in |
| crtest |
| ar -ra file1.in $TCtmp/lib.a file2.in |
| rtest |
| ar -t $TCtmp/lib.a > $TCtmp/lib.a.stdout |
| ttest |
| |
| if diff -b $TCtmp/lib.a.exp $TCtmp/lib.a.stdout >/dev/null 2>&1 |
| then |
| echo "-)1" |
| else |
| TCRESULT=1 |
| echo "FAIL - ar with -a option does not place files after 'posname'" |
| fi |
| |
| # The 'a' flag with the 'm' option causes files to be moved after 'posname' |
| |
| rm -rf $TCtmp/lib.a |
| cd $TCdat |
| |
| ar -cr $TCtmp/lib.a file1.in file2.in file3.in file4.in |
| crtest |
| printf "file1.in\nfile4.in\nfile2.in\nfile3.in\n" > $TCtmp/lib.a.exp |
| ar -ma file1.in $TCtmp/lib.a file4.in |
| mtest |
| ar -t $TCtmp/lib.a >$TCtmp/lib.a.stdout |
| ttest |
| |
| if diff -b $TCtmp/lib.a.exp $TCtmp/lib.a.stdout 1> /dev/null 2> /dev/null |
| then |
| echo "-)2" |
| else |
| TCRESULT=2 |
| echo "FAIL - ar with -a option does not move files after 'posname'" |
| fi |
| |
| # The 'b' flag causes files to be placed before 'posname'. |
| |
| # CODE |
| |
| rm -rf $TCtmp/lib.a |
| cd $TCdat |
| ar -cr $TCtmp/lib.a file1.in file3.in |
| crtest |
| printf "file1.in\nfile2.in\nfile3.in\n" > $TCtmp/lib.a.exp |
| ar -rb file3.in $TCtmp/lib.a file2.in |
| rtest |
| ar -t $TCtmp/lib.a >$TCtmp/lib.a.stdout |
| ttest |
| |
| if diff -b $TCtmp/lib.a.exp $TCtmp/lib.a.stdout >/dev/null 2>&1 |
| then |
| echo "-)3" |
| else |
| TCRESULT=3 |
| echo "FAIL - ar with -b option does not place files before 'posname'" |
| fi |
| |
| # The 'b' flag with 'm' option causes files to be moved before 'posname'. |
| |
| # CODE |
| rm -rf $TCtmp/lib.a |
| cd $TCdat |
| |
| ar -cr $TCtmp/lib.a file1.in file3.in file2.in |
| crtest |
| printf "file1.in\nfile2.in\nfile3.in\n" > $TCtmp/lib.a.exp |
| ar -mb file3.in $TCtmp/lib.a file2.in |
| mtest |
| ar -t $TCtmp/lib.a >$TCtmp/lib.a.stdout |
| ttest |
| |
| if diff -b $TCtmp/lib.a.exp $TCtmp/lib.a.stdout >/dev/null 2>&1 |
| then |
| echo "-)4" |
| else |
| TCRESULT=4 |
| echo "FAIL - ar with -b option does not move files before 'posname'." |
| fi |
| |
| # -c option suppress the messages |
| |
| # CODE |
| |
| rm -rf $TCtmp/lib.a.exp $TCtmp/lib.a |
| cd $TCdat |
| |
| touch $TCtmp/lib.a.exp |
| |
| ar -cr $TCtmp/lib.a file1.in > $TCtmp/lib.a.stdout |
| crtest |
| |
| if diff -b $TCtmp/lib.a.exp $TCtmp/lib.a.stdout |
| then |
| echo "-)5" |
| else |
| TCRESULT=5 |
| echo "FAIL - ar with -c option did not suppress messages." |
| fi |
| |
| # The 'qc' option causes suppresion of the default message when |
| # 'afile' is created. |
| |
| # CODE |
| rm -rf $TCtmp/lib.a |
| cd $TCdat |
| |
| ar -qc $TCtmp/lib.a file1.in > $TCtmp/lib.a.stdout |
| |
| if diff -b $TCtmp/lib.a.exp $TCtmp/lib.a.stdout >/dev/null 2>&1 |
| then |
| echo "-)6" |
| else |
| TCRESULT=6 |
| echo "FAIL - ar with -qc option did not suppress messages." |
| fi |
| |
| # The -d option deletes files from archive when names are specified. |
| |
| # CODE |
| rm -rf $TCtmp/lib.a |
| cd $TCdat |
| |
| ar -cr $TCtmp/lib.a file1.in file2.in file3.in |
| crtest |
| echo "file3.in" > $TCtmp/lib.a.exp |
| ar -d $TCtmp/lib.a file1.in file2.in |
| ar -t $TCtmp/lib.a >$TCtmp/lib.a.stdout |
| ttest |
| |
| if diff -b $TCtmp/lib.a.exp $TCtmp/lib.a.stdout >/dev/null 2>&1 |
| then |
| echo "-)7" |
| else |
| TCRESULT=7 |
| echo "FAIL - ar with -d option does not delete files form the archive" |
| fi |
| |
| # The -d option does not delete files from archive when no names |
| # are specified. |
| |
| # CODE |
| rm -rf $TCtmp/lib.a |
| cd $TCdat |
| |
| printf "file1.in\nfile2.in\nfile3.in\n" > $TCtmp/lib.a.exp |
| ar -cr $TCtmp/lib.a file1.in file2.in file3.in |
| crtest |
| ar -d $TCtmp/lib.a >/dev/null 2>&1 |
| ar -t $TCtmp/lib.a >$TCtmp/lib.a.stdout |
| ttest |
| |
| if diff -b $TCtmp/lib.a.exp $TCtmp/lib.a.stdout >/dev/null 2>&1 |
| then |
| echo "-)8" |
| else |
| TCRESULT=8 |
| echo "FAIL - ar with -d option deleted files even when none were specified" |
| fi |
| |
| # The -d does not affect behaviour of -s option. |
| |
| # CODE |
| rm -rf $TCtmp/lib.a |
| cd $TCdat |
| |
| touch $TCtmp/dummy.in |
| ar -cr $TCtmp/lib.a $TCtmp/dummy.in file1.in file2.in file3.in |
| crtest |
| size1=`ls -s $TCtmp/lib.a|(read a b; echo $a)` |
| ar -ds $TCtmp/lib.a $TCtmp/dummy.in 2>&1 1>/dev/null |
| size2=`ls -s $TCtmp/lib.a|(read a b; echo $a)` |
| |
| if [ $size1 -eq $size2 ] |
| then |
| echo "-)9" |
| else |
| TCRESULT=9 |
| echo "FAIL - ar with -d option did affect the -s option" |
| fi |
| |
| # The 'i' flag causes files to be placed before 'posname'. |
| |
| # CODE |
| rm -rf $TCtmp/lib.a |
| cd $TCdat |
| |
| printf "file1.in\nfile2.in\nfile3.in\n" > $TCtmp/lib.a.exp |
| ar -cr $TCtmp/lib.a file1.in file3.in |
| crtest |
| ar -ri file3.in $TCtmp/lib.a file2.in |
| rtest |
| ar -t $TCtmp/lib.a >$TCtmp/lib.a.stdout |
| ttest |
| |
| if diff -b $TCtmp/lib.a.exp $TCtmp/lib.a.stdout >/dev/null 2>&1 |
| then |
| echo "-)10" |
| else |
| TCRESULT=10 |
| echo "FAIL - ar with -i did not place the files before 'posname'." |
| fi |
| |
| # The 'i' flag with 'm' option causes files to be moved before 'posname'. |
| |
| # CODE |
| rm -rf $TCtmp/lib.a |
| cd $TCdat |
| |
| ar -cr $TCtmp/lib.a file1.in file3.in file2.in |
| crtest |
| printf "file1.in\nfile2.in\nfile3.in\n" > $TCtmp/lib.a.exp |
| ar -mi file3.in $TCtmp/lib.a file2.in |
| mtest |
| ar -t $TCtmp/lib.a >$TCtmp/lib.a.stdout |
| ttest |
| |
| if diff -b $TCtmp/lib.a.exp $TCtmp/lib.a.stdout >/dev/null 2>&1 |
| then |
| echo "-)11" |
| else |
| TCRESULT=11 |
| echo "FAIL - ar with -i failed to move files before 'posname'." |
| fi |
| |
| # m option moves the files to end of the archive |
| |
| # CODE |
| |
| rm -rf $TCtmp/lib.a |
| cd $TCdat |
| |
| ar -cr $TCtmp/lib.a file1.in file3.in file2.in |
| crtest |
| printf "file1.in\nfile2.in\nfile3.in\n" > $TCtmp/lib.a.exp |
| ar -m $TCtmp/lib.a file3.in |
| mtest |
| ar -t $TCtmp/lib.a >$TCtmp/lib.a.stdout |
| ttest |
| |
| if diff -b $TCtmp/lib.a.exp $TCtmp/lib.a.stdout >/dev/null 2>&1 |
| then |
| echo "-)12" |
| else |
| TCRESULT=12 |
| echo "FAIL - ar with -m fails to move the files to the end of archive" |
| fi |
| |
| # The -p option causes only printing of contents of file contained in |
| # archive. |
| |
| # CODE |
| rm -rf $TCtmp/lib.* |
| ar -cr $TCtmp/lib.a file1.in file2.in file3.in |
| crtest |
| printf "This is file one\nThis is file two\nThis is file three\n" > $TCtmp/lib.a.exp |
| ar -p $TCtmp/lib.a 2>&1 1>$TCtmp/lib.a.stdout |
| |
| if diff -b $TCtmp/lib.a.exp $TCtmp/lib.a.stdout >/dev/null 2>&1 |
| then |
| echo "-)13" |
| else |
| TCRESULT=13 |
| echo "FAIL - ar with -p option failed to print the contents." |
| fi |
| |
| # The -p does not affect behaviour of -s option. |
| |
| # CODE |
| |
| rm -rf $TCtmp/lib.a;cd $TCdat |
| ar -cr $TCtmp/lib.a file1.in file2.in file3.in |
| crtest |
| size1=`ls -s $TCtmp/lib.a|(read a b; echo $a)` |
| ar -ps $TCtmp/lib.a 2>&1 1> /dev/null |
| size2=`ls -s $TCtmp/lib.a|(read a b; echo $a)` |
| |
| if [ $size1 -eq $size2 ] |
| then |
| echo "-)14" |
| else |
| TCRESULT=14 |
| echo "FAIL - ar with -p did the affect behaviour of -s option" |
| fi |
| |
| # The command 'ar -q afile name' appends name to the end of 'afile'. |
| |
| # CODE |
| |
| rm -rf $TCtmp/lib.a |
| cd $TCdat |
| ar -cr $TCtmp/lib.a file1.in file2.in file3.in |
| crtest |
| printf "file1.in\nfile2.in\nfile3.in\nfile4.in\n" > $TCtmp/lib.a.exp |
| ar -q $TCtmp/lib.a file4.in |
| ar -t $TCtmp/lib.a >$TCtmp/lib.a.stdout |
| ttest |
| |
| if diff -b $TCtmp/lib.a.exp $TCtmp/lib.a.stdout >/dev/null 2>&1 |
| then |
| echo "-)15" |
| else |
| TCRESULT=15 |
| echo "FAIL - ar with -q afilename failed to append to the end of file" |
| fi |
| |
| # q option does not affect the behaviour of option s |
| |
| # CODE |
| |
| rm -rf $TCtmp/lib.a;cd $TCdat |
| ar -cr $TCtmp/lib.a file1.in file2.in file3.in |
| crtest |
| size1=`ls -s $TCtmp/lib.a|(read a b; echo $a)` |
| ar -qs $TCtmp/lib.a $TCtmp/dummy.in 2>&1 1>/dev/null |
| size2=`ls -s $TCtmp/lib.a|(read a b; echo $a)` |
| |
| if [ $size1 -eq $size2 ] |
| then |
| echo "-)16" |
| else |
| TCRESULT=16 |
| echo "FAIL - ar with -q did affect the behaviour of -s option." |
| fi |
| |
| # The -s causes regeneration of symbol table even if a symbol table exists. |
| |
| echo "-)17 SKIPPED due to binutils ar automatically adds a symbol." |
| |
| # CODE |
| |
| rm -rf $TCtmp/lib.a;cd $TCdat |
| ar -cr $TCtmp/lib.a file1.in file2.in file3.in |
| crtest |
| printf "file1.in\nfile2.in\nfile3.in\n" > $TCtmp/lib.a.exp |
| ar -t $TCtmp/lib.a >$TCtmp/lib.a.stdout 2>&1 |
| ttest |
| |
| if diff -b $TCtmp/lib.a.exp $TCtmp/lib.a.stdout >/dev/null 2>&1 |
| then |
| echo "-)18" |
| else |
| TCRESULT=18 |
| echo "FAIL - ar with -t did not print as desired" |
| fi |
| |
| # The -t does not affect behaviour of -s option. |
| |
| echo "-)19 SKIPPED due to binutils ar automatically adds a symbol." |
| |
| # The 'u' flag causes files only with later modification date than |
| # in archive are replaced. |
| |
| # CODE |
| rm -rf $TCtmp/lib.a |
| cd $TCdat |
| |
| ar -cr $TCtmp/lib.a file0.in file2.in |
| crtest |
| File1time=`ar -tv $TCtmp/lib.a | grep file0.in` |
| File2time=`ar -tv $TCtmp/lib.a | grep file2.in` |
| |
| #sleep 5 |
| touch -c -t 201503030303.55 file0.in |
| |
| ar -ru $TCtmp/lib.a file0.in file2.in 2>&1 1>/dev/null |
| File1time1=`ar -tv $TCtmp/lib.a | grep file0.in` |
| File2time2=`ar -tv $TCtmp/lib.a | grep file2.in` |
| |
| if [ "$File2time" = "$File2time2" ] |
| then |
| if [ "$File1time" = "$File1time1" ] |
| then |
| TCRESULT=20 |
| echo "FAIL - ar with -u flag failed" |
| else |
| echo "-)20" |
| fi |
| else |
| TCRESULT=20 |
| echo "FAIL - ar with -u flag failed" |
| fi |
| # Reset the timestamp on file0.in to current |
| touch file0.in |
| |
| # This is the next assertion |
| |
| # CODE |
| |
| Count=0 |
| rm -rf $TCtmp/lib.a;cd $TCdat |
| ar -cr $TCtmp/lib.a file1.in file2.in file3.in |
| crtest |
| Sysmonth=`date | cut -f2 -d" "` |
| Month=`ar -tv $TCtmp/lib.a | grep "file2.in" | awk '{print $4}'` |
| Count=`ar -tv $TCtmp/lib.a | wc -l` |
| |
| if [ $Sysmonth = $Month ] && [ $Count -eq 3 ] |
| then |
| echo "-)21" |
| else |
| TCRESULT=21 |
| echo "FAIL - ar with -v flag failed to print a line for each file" |
| fi |
| |
| # The -v option produces a verbose listing like ls -n |
| |
| # CODE |
| |
| rm -rf $TCtmp/lib.a;cd $TCdat $TCtmp/lib.a.exp *out |
| ar -cr $TCtmp/lib.a file1.in file2.in file3.in |
| crtest |
| |
| ls -ln --time-style=+%b" "%e" "%H:%M file1.in file2.in file3.in | |
| while read permissions link uid gid size month day time file_name |
| do |
| echo "$permissions;$uid/$gid;$size;$month;$day;$time;$file_name" |
| done >> $TCtmp/lib.a.exp |
| |
| ar -tv $TCtmp/lib.a | |
| while read permissions uid size month day time year file_name |
| do |
| echo "-$permissions;$uid;$size;$month;$day;$time;$file_name" |
| done >> $TCtmp/lib.a.stdout |
| ttest |
| |
| diff $TCtmp/lib.a.exp $TCtmp/lib.a.stdout |
| if [ $? -eq 0 ] |
| then |
| echo "-)22" |
| else |
| TCRESULT=22 |
| echo "FAIL - ar with -v failed to produce a verbose out put" |
| fi |
| |
| # The 'v' option causes the 'x' option to display a filename for each |
| # file extracted. |
| |
| # CODE |
| |
| rm -rf $TCtmp/lib.a;cd $TCdat |
| ar -cr $TCtmp/lib.a file1.in file2.in file3.in |
| crtest |
| Count=`ar -xv $TCtmp/lib.a | wc -l` |
| |
| if [ $Count = '3' ] |
| then |
| echo "-)23" |
| else |
| TCRESULT=23 |
| echo "FAIL - ar with -v along with x did not display extracted file names" |
| fi |
| |
| # The command 'ar -x afile ' causes all files from the archive to be extracted. |
| |
| # CODE |
| |
| rm -rf $TCtmp/lib.a;cd $TCdat |
| ar -cr $TCtmp/lib.a file1.in file2.in file3.in |
| crtest |
| |
| Count=`ar -xv $TCtmp/lib.a | wc -l` |
| |
| if [ $Count -eq '3' ] |
| then |
| echo "-)24" |
| else |
| TCRESULT=24 |
| echo "FAIL - ar with -x flag did not extract all file" |
| fi |
| |
| # The command 'ar -x afile name name' causes only named files from |
| # the archive to be extracted. |
| |
| # CODE |
| rm -rf $TCtmp/lib.a;cd $TCdat |
| ar -cr $TCtmp/lib.a file1.in file2.in file3.in |
| crtest |
| Count=`ar -xv $TCtmp/lib.a file1.in | grep file | wc -l` |
| |
| if [ $Count = '1' ] |
| then |
| echo "-)25" |
| else |
| TCRESULT=25 |
| echo "FAIL - ar with -x lib filename did not extract the named file alone" |
| fi |
| |
| # This test will fail under pan, so it's commented out by default. |
| echo "-)26 SKIPPED UNDER PAN" |
| # |
| # Signal SIGHUP |
| |
| # CODE |
| |
| rm -rf $TCtmp/lib.* |
| |
| ar -vr $TCtmp/lib.a $LIST >>$TCtmp/lib.a.stdout& |
| while [ ! -s $TCtmp/lib.a ] |
| do |
| sleep 1 |
| done |
| kill -s 2 $! >/dev/null 2>&1 |
| |
| sleep 1 |
| if [ `wc -l $TCtmp/lib.a.stdout|(read a b;echo $a)` -ne 100 ] |
| then |
| TCRESULT=27 |
| echo "FAIL - ar could not create the archive ; killed by SIGINIT" |
| else |
| echo "-)27" |
| fi |
| |
| # Signal SIGQUIT |
| |
| # CODE |
| |
| rm -rf $TCtmp/lib.* |
| |
| ar -vr $TCtmp/lib.a $LIST >>$TCtmp/lib.a.stdout& |
| while [ ! -s $TCtmp/lib.a ] |
| do |
| sleep 1 |
| done |
| kill -s 3 $! >/dev/null 2>&1 |
| |
| sleep 1 |
| if [ `wc -l $TCtmp/lib.a.stdout|(read a b;echo $a)` -ne 100 ] |
| then |
| TCRESULT=28 |
| echo "FAIL - ar could not create the archive ; killed by SIGQUIT" |
| else |
| echo "-)28" |
| fi |
| |
| # Signal SIGHUP; ar should not remove archive that existed before invocation. |
| |
| # CODE |
| |
| rm -rf $TCtmp/lib.a;cd $TCdat $TCtmp/lib.a.stdout |
| ar -rv $TCtmp/lib.a file1.in file2.in file3.in 2>&1 1>$TCtmp/lib.a.stdout |
| rtest |
| ar -rv $TCtmp/lib.a $LIST 2>&1 1>>$TCtmp/lib.a.stdout& |
| rtest |
| while [ ! -s $TCtmp/lib.a ] |
| do |
| sleep 1 |
| done |
| sleep 1 |
| kill -s 1 $! 2>&1 1>/dev/null | read a |
| |
| if [ `wc -l $TCtmp/lib.a.stdout|(read a b;echo $a)` -ne 103 ] |
| then |
| TCRESULT=29 |
| echo "FAIL - ar could not complete the archive ; killed by SIGHUP" |
| else |
| echo "-)29" |
| fi |
| |
| # Signal SIGINIT; ar should not remove archive that existed before invocation. |
| |
| # CODE |
| |
| rm -rf $TCtmp/lib.a |
| cd $TCdat $TCtmp/lib.a.stdout |
| ar -rv $TCtmp/lib.a file1.in file2.in file3.in 2>&1 1>$TCtmp/lib.a.stdout |
| rtest |
| ar -rv $TCtmp/lib.a $LIST 2>&1 1>>$TCtmp/lib.a.stdout& |
| rtest |
| while [ ! -s $TCtmp/lib.a ] |
| do |
| sleep 1 |
| done |
| sleep 1 |
| |
| kill -s 2 $! 2>&1 1>/dev/null | read a |
| |
| if [ `wc -l $TCtmp/lib.a.stdout|(read a b;echo $a)` -ne 103 ] |
| then |
| TCRESULT=30 |
| echo "FAIL - ar could not complete the archive ; killed by SIGINIT" |
| else |
| echo "-)30" |
| fi |
| |
| # Signal SIGQUIT; ar should not remove archive that existed before invocation. |
| |
| # CODE |
| |
| rm -rf $TCtmp/lib.a |
| cd $TCdat |
| ar -rv $TCtmp/lib.a file1.in file2.in file3.in 2>&1 1>$TCtmp/lib.a.stdout |
| rtest |
| ar -rv $TCtmp/lib.a $LIST 2>&1 1>>$TCtmp/lib.a.stdout& |
| rtest |
| while [ ! -s $TCtmp/lib.a ] |
| do |
| sleep 1 |
| done |
| sleep 1 |
| kill -s 3 $! 2>&1 1>/dev/null | read a |
| |
| if [ `wc -l $TCtmp/lib.a.stdout|(read a b;echo $a)` -ne 103 ] |
| then |
| TCRESULT=31 |
| echo "FAIL - ar could not complete the archive ; killed by SIGQUIT" |
| else |
| echo "-)31" |
| fi |
| |
| rm -rf $TCtmp |
| COUNT=`expr $COUNT + 1` |
| |
| done |
| cleanup |