Home | History | Annotate | Download | only in ar
      1 #!/bin/sh
      2 #
      3 #   Copyright (c) International Business Machines  Corp., 2000
      4 #
      5 #   This program is free software;  you can redistribute it and/or modify
      6 #   it under the terms of the GNU General Public License as published by
      7 #   the Free Software Foundation; either version 2 of the License, or
      8 #   (at your option) any later version.
      9 #
     10 #   This program is distributed in the hope that it will be useful,
     11 #   but WITHOUT ANY WARRANTY;  without even the implied warranty of
     12 #   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See
     13 #   the GNU General Public License for more details.
     14 #
     15 #   You should have received a copy of the GNU General Public License
     16 #   along with this program;  if not, write to the Free Software
     17 #   Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
     18 #
     19 #
     20 #
     21 #  FILE   : ar
     22 #
     23 #  PURPOSE: Construct one or more command lines which use options that do not
     24 #           take arguments
     25 #           For each of these invocations
     26 #           Specify the options seperately
     27 #
     28 #          Group the options together
     29 #          Compare the behavior of the two cases
     30 #          If they behave differently, then fail
     31 #          If none of the cases fail, then pass
     32 #
     33 #  HISTORY:
     34 #    06/01 Robbie Williamson (robbiew (at] us.ibm.com)
     35 #      -Ported
     36 #
     37 #
     38 #-----------------------------------------------------------------------
     39 #
     40 #----------------------------------------------------------------------
     41 #Uncomment line below for debug output.
     42 #trace_logic=${trace_logic:-"set -x"}
     43 $trace_logic
     44 
     45 TCtmp=${TCtmp:-/tmp/ar01-$$}
     46 mkdir $TCtmp
     47 TCdat=${TCdat:-`pwd`}
     48 cd $TCdat
     49 
     50 LOOPS=${LOOPS:-1}
     51 LIST="file1.in file2.in file3.in file4.in file5.in file6.in file7.in file8.in file9.in file10.in"
     52 LIST="$LIST $LIST $LIST $LIST $LIST $LIST $LIST $LIST $LIST $LIST"
     53 COUNT=1
     54 TCRESULT=0
     55 
     56 # Setup function
     57 setup() {
     58 	for i in $LIST;do
     59 		touch $i
     60 	done
     61 }
     62 
     63 # Cleanup function
     64 cleanup() {
     65 	if [ $TCRESULT = 0 ]; then
     66 		echo "---------------ar command passed the system test-----------------"
     67 		exit 0
     68 	else
     69 		echo "---------------ar command failed the system test-----------------"
     70 		exit 1
     71 	fi
     72 }
     73 
     74 crtest() {
     75 	if [ $? -ne 0 ]
     76 	then
     77 		TCRESULT=1
     78 		echo "FAIL - could not create lib.a"
     79 		cleanup
     80 	fi
     81 }
     82 
     83 ttest() {
     84 	if [ $? -ne 0 ]
     85 	then
     86 		TCRESULT=1
     87 		echo "FAIL - could not output table from lib.a to lib.a.stdout"
     88 		cleanup
     89 	fi
     90 }
     91 
     92 rtest() {
     93 	if [ $? -ne 0 ]
     94 	then
     95 		TCRESULT=1
     96 		echo "FAIL - could not add file into lib.a"
     97 		cleanup
     98 	fi
     99 }
    100 
    101 mtest() {
    102 	if [ $? -ne 0 ]
    103 	then
    104 		TCRESULT=1
    105 		echo "FAIL - could not move file into lib.a"
    106 		cleanup
    107 	fi
    108 }
    109 
    110 setup
    111 
    112 # Main Loop
    113 while [ $COUNT -le $LOOPS ]
    114 do
    115 	echo "-------System test for ar command, Loop $COUNT----"
    116 	#The 'a' flag causes files to be placed after 'posname'.
    117 
    118 	#  CODE
    119 	rm -rf $TCtmp/lib.a;cd $TCdat
    120 
    121 	printf "file1.in\nfile2.in\nfile3.in\n" >$TCtmp/lib.a.exp
    122 
    123 	ar -cr $TCtmp/lib.a file1.in file3.in
    124 	crtest
    125 	ar -ra file1.in $TCtmp/lib.a file2.in
    126 	rtest
    127 	ar -t $TCtmp/lib.a > $TCtmp/lib.a.stdout
    128 	ttest
    129 
    130 	if diff -b $TCtmp/lib.a.exp $TCtmp/lib.a.stdout >/dev/null 2>&1
    131 	then
    132 		echo "-)1"
    133 	else
    134 		TCRESULT=1
    135 		echo "FAIL - ar with -a option does not place files after 'posname'"
    136 	fi
    137 
    138 	# The 'a' flag with the 'm' option causes files to be moved after 'posname'
    139 
    140 	rm -rf $TCtmp/lib.a
    141 	cd $TCdat
    142 
    143 	ar -cr $TCtmp/lib.a file1.in file2.in file3.in file4.in
    144 	crtest
    145 	printf "file1.in\nfile4.in\nfile2.in\nfile3.in\n" > $TCtmp/lib.a.exp
    146 	ar -ma file1.in $TCtmp/lib.a file4.in
    147 	mtest
    148 	ar -t $TCtmp/lib.a >$TCtmp/lib.a.stdout
    149 	ttest
    150 
    151 	if diff -b $TCtmp/lib.a.exp $TCtmp/lib.a.stdout 1> /dev/null 2> /dev/null
    152 	then
    153 		echo "-)2"
    154 	else
    155 		TCRESULT=2
    156 		echo "FAIL - ar with -a option does not move files after 'posname'"
    157 	fi
    158 
    159 	# The 'b' flag causes files to be placed before 'posname'.
    160 
    161 	# CODE
    162 
    163 	rm -rf $TCtmp/lib.a
    164 	cd $TCdat
    165 	ar -cr $TCtmp/lib.a file1.in file3.in
    166 	crtest
    167 	printf "file1.in\nfile2.in\nfile3.in\n" > $TCtmp/lib.a.exp
    168 	ar -rb file3.in $TCtmp/lib.a file2.in
    169 	rtest
    170 	ar -t $TCtmp/lib.a >$TCtmp/lib.a.stdout
    171 	ttest
    172 
    173 	if diff -b $TCtmp/lib.a.exp $TCtmp/lib.a.stdout >/dev/null 2>&1
    174 	then
    175 		echo "-)3"
    176 	else
    177 		TCRESULT=3
    178 		echo "FAIL - ar with -b option does not place files before 'posname'"
    179 	fi
    180 
    181 	# The 'b' flag with 'm' option causes files to be moved before 'posname'.
    182 
    183 	# CODE
    184 	rm -rf $TCtmp/lib.a
    185 	cd $TCdat
    186 
    187 	ar -cr $TCtmp/lib.a file1.in file3.in file2.in
    188 	crtest
    189 	printf "file1.in\nfile2.in\nfile3.in\n" > $TCtmp/lib.a.exp
    190 	ar -mb file3.in $TCtmp/lib.a file2.in
    191 	mtest
    192 	ar -t $TCtmp/lib.a >$TCtmp/lib.a.stdout
    193 	ttest
    194 
    195 	if diff -b $TCtmp/lib.a.exp $TCtmp/lib.a.stdout >/dev/null 2>&1
    196 	then
    197 		echo "-)4"
    198 	else
    199 		TCRESULT=4
    200 		echo "FAIL - ar with -b option does not move files before 'posname'."
    201 	fi
    202 
    203 	# -c option suppress the messages
    204 
    205 	# CODE
    206 
    207 	rm -rf $TCtmp/lib.a.exp $TCtmp/lib.a
    208 	cd $TCdat
    209 
    210 	touch $TCtmp/lib.a.exp
    211 
    212 	ar -cr $TCtmp/lib.a file1.in > $TCtmp/lib.a.stdout
    213 	crtest
    214 
    215 	if diff -b $TCtmp/lib.a.exp $TCtmp/lib.a.stdout
    216 	then
    217 		echo "-)5"
    218 	else
    219 		TCRESULT=5
    220 		echo "FAIL - ar with -c option did not suppress messages."
    221 	fi
    222 
    223 	# The 'qc' option causes suppresion of the default message when
    224 	# 'afile' is created.
    225 
    226 	# CODE
    227 	rm -rf $TCtmp/lib.a
    228 	cd $TCdat
    229 
    230 	ar -qc $TCtmp/lib.a file1.in > $TCtmp/lib.a.stdout
    231 
    232 	if diff -b $TCtmp/lib.a.exp $TCtmp/lib.a.stdout >/dev/null 2>&1
    233 	then
    234 		echo  "-)6"
    235 	else
    236 		TCRESULT=6
    237 		echo "FAIL - ar with -qc option did not suppress messages."
    238 	fi
    239 
    240 	# The -d option deletes files from archive when names are specified.
    241 
    242 	# CODE
    243 	rm -rf $TCtmp/lib.a
    244 	cd $TCdat
    245 
    246 	ar -cr $TCtmp/lib.a file1.in file2.in file3.in
    247 	crtest
    248 	echo "file3.in" > $TCtmp/lib.a.exp
    249 	ar -d $TCtmp/lib.a file1.in file2.in
    250 	ar -t $TCtmp/lib.a >$TCtmp/lib.a.stdout
    251 	ttest
    252 
    253 	if diff -b $TCtmp/lib.a.exp $TCtmp/lib.a.stdout >/dev/null 2>&1
    254 	then
    255 		echo  "-)7"
    256 	else
    257 		TCRESULT=7
    258 		echo "FAIL - ar with -d option does not delete files form the archive"
    259 	fi
    260 
    261 	# The -d option does not delete files from archive when no names
    262 	# are specified.
    263 
    264 	# CODE
    265 	rm -rf $TCtmp/lib.a
    266 	cd $TCdat
    267 
    268 	printf "file1.in\nfile2.in\nfile3.in\n" > $TCtmp/lib.a.exp
    269 	ar -cr $TCtmp/lib.a file1.in file2.in file3.in
    270 	crtest
    271 	ar -d $TCtmp/lib.a >/dev/null 2>&1
    272 	ar -t $TCtmp/lib.a >$TCtmp/lib.a.stdout
    273 	ttest
    274 
    275 	if diff -b $TCtmp/lib.a.exp $TCtmp/lib.a.stdout >/dev/null 2>&1
    276 	then
    277 		echo  "-)8"
    278 	else
    279 		TCRESULT=8
    280 		echo "FAIL - ar with -d option deleted files even when none were specified"
    281 	fi
    282 
    283 	# The -d does not affect behaviour of -s option.
    284 
    285 	# CODE
    286 	rm -rf $TCtmp/lib.a
    287 	cd $TCdat
    288 
    289 	touch $TCtmp/dummy.in
    290 	ar -cr $TCtmp/lib.a $TCtmp/dummy.in file1.in file2.in file3.in
    291 	crtest
    292 	size1=`ls -s $TCtmp/lib.a|(read a b; echo $a)`
    293 	ar -ds $TCtmp/lib.a $TCtmp/dummy.in 2>&1 1>/dev/null
    294 	size2=`ls -s $TCtmp/lib.a|(read a b; echo $a)`
    295 
    296 	if [ $size1 -eq $size2 ]
    297 	then
    298 		echo  "-)9"
    299 	else
    300 		TCRESULT=9
    301 		echo "FAIL - ar with -d option did affect the -s option"
    302 	fi
    303 
    304 	# The 'i' flag causes files to be placed before 'posname'.
    305 
    306 	# CODE
    307 	rm -rf $TCtmp/lib.a
    308 	cd $TCdat
    309 
    310 	printf "file1.in\nfile2.in\nfile3.in\n" > $TCtmp/lib.a.exp
    311 	ar -cr $TCtmp/lib.a file1.in file3.in
    312 	crtest
    313 	ar -ri file3.in $TCtmp/lib.a file2.in
    314 	rtest
    315 	ar -t $TCtmp/lib.a >$TCtmp/lib.a.stdout
    316 	ttest
    317 
    318 	if diff -b $TCtmp/lib.a.exp $TCtmp/lib.a.stdout >/dev/null 2>&1
    319 	then
    320 		echo  "-)10"
    321 	else
    322 		TCRESULT=10
    323 		echo "FAIL - ar with -i did not place the files before 'posname'."
    324 	fi
    325 
    326 	# The 'i' flag with 'm' option causes files to be moved before 'posname'.
    327 
    328 	# CODE
    329 	rm -rf $TCtmp/lib.a
    330 	cd $TCdat
    331 
    332 	ar -cr $TCtmp/lib.a file1.in file3.in file2.in
    333 	crtest
    334 	printf "file1.in\nfile2.in\nfile3.in\n" > $TCtmp/lib.a.exp
    335 	ar -mi file3.in $TCtmp/lib.a file2.in
    336 	mtest
    337 	ar -t $TCtmp/lib.a >$TCtmp/lib.a.stdout
    338 	ttest
    339 
    340 	if diff -b $TCtmp/lib.a.exp $TCtmp/lib.a.stdout >/dev/null 2>&1
    341 	then
    342 		echo "-)11"
    343 	else
    344 		TCRESULT=11
    345 		echo "FAIL - ar with -i failed to move files before 'posname'."
    346 	fi
    347 
    348 	# m option moves the files to end of the archive
    349 
    350 	# CODE
    351 
    352 	rm -rf $TCtmp/lib.a
    353 	cd $TCdat
    354 
    355 	ar -cr $TCtmp/lib.a file1.in file3.in file2.in
    356 	crtest
    357 	printf "file1.in\nfile2.in\nfile3.in\n" > $TCtmp/lib.a.exp
    358 	ar -m $TCtmp/lib.a file3.in
    359 	mtest
    360 	ar -t $TCtmp/lib.a >$TCtmp/lib.a.stdout
    361 	ttest
    362 
    363 	if diff -b $TCtmp/lib.a.exp $TCtmp/lib.a.stdout >/dev/null 2>&1
    364 	then
    365 		echo "-)12"
    366 	else
    367 		TCRESULT=12
    368 		echo "FAIL - ar with -m fails to move the files to the end of archive"
    369 	fi
    370 
    371 	# The -p option causes only printing of contents of file contained in
    372 	# archive.
    373 
    374 	# CODE
    375 	rm -rf $TCtmp/lib.*
    376 	ar -cr $TCtmp/lib.a file1.in file2.in file3.in
    377 	crtest
    378 	printf "This is file one\nThis is file two\nThis is file three\n" > $TCtmp/lib.a.exp
    379 	ar -p $TCtmp/lib.a 2>&1 1>$TCtmp/lib.a.stdout
    380 
    381 	if diff -b $TCtmp/lib.a.exp $TCtmp/lib.a.stdout >/dev/null 2>&1
    382 	then
    383 		echo "-)13"
    384 	else
    385 		TCRESULT=13
    386 		echo "FAIL - ar with -p option failed to print the contents."
    387 	fi
    388 
    389 	# The -p does not affect behaviour of -s option.
    390 
    391 	# CODE
    392 
    393 	rm -rf $TCtmp/lib.a;cd $TCdat
    394 	ar -cr $TCtmp/lib.a file1.in file2.in file3.in
    395 	crtest
    396 	size1=`ls -s $TCtmp/lib.a|(read a b; echo $a)`
    397 	ar -ps $TCtmp/lib.a 2>&1 1> /dev/null
    398 	size2=`ls -s $TCtmp/lib.a|(read a b; echo $a)`
    399 
    400 	if [ $size1 -eq $size2 ]
    401 	then
    402 		echo "-)14"
    403 	else
    404 		TCRESULT=14
    405 		echo "FAIL - ar with -p did the affect behaviour of -s option"
    406 	fi
    407 
    408 	# The command 'ar -q afile name' appends name to the end of 'afile'.
    409 
    410 	# CODE
    411 
    412 	rm -rf $TCtmp/lib.a
    413 	cd $TCdat
    414 	ar -cr $TCtmp/lib.a file1.in file2.in file3.in
    415 	crtest
    416 	printf "file1.in\nfile2.in\nfile3.in\nfile4.in\n" > $TCtmp/lib.a.exp
    417 	ar -q $TCtmp/lib.a file4.in
    418 	ar -t $TCtmp/lib.a >$TCtmp/lib.a.stdout
    419 	ttest
    420 
    421 	if diff -b $TCtmp/lib.a.exp $TCtmp/lib.a.stdout >/dev/null 2>&1
    422 	then
    423 		echo "-)15"
    424 	else
    425 		TCRESULT=15
    426 		echo "FAIL - ar with -q afilename failed to append to the end of file"
    427 	fi
    428 
    429 	# q option does not affect the behaviour of option s
    430 
    431 	# CODE
    432 
    433 	rm -rf $TCtmp/lib.a;cd $TCdat
    434 	ar -cr $TCtmp/lib.a file1.in file2.in file3.in
    435 	crtest
    436 	size1=`ls -s $TCtmp/lib.a|(read a b; echo $a)`
    437 	ar -qs $TCtmp/lib.a $TCtmp/dummy.in 2>&1 1>/dev/null
    438 	size2=`ls -s $TCtmp/lib.a|(read a b; echo $a)`
    439 
    440 	if [ $size1 -eq $size2 ]
    441 	then
    442 		echo "-)16"
    443 	else
    444 		TCRESULT=16
    445 		echo "FAIL - ar with -q did affect the behaviour of -s option."
    446 	fi
    447 
    448 	# The -s causes regeneration of symbol table even if a symbol table exists.
    449 
    450 	echo "-)17 SKIPPED due to binutils ar automatically adds a symbol."
    451 
    452 	# CODE
    453 
    454 	rm -rf $TCtmp/lib.a;cd $TCdat
    455 	ar -cr $TCtmp/lib.a file1.in file2.in file3.in
    456 	crtest
    457 	printf "file1.in\nfile2.in\nfile3.in\n" > $TCtmp/lib.a.exp
    458 	ar -t $TCtmp/lib.a >$TCtmp/lib.a.stdout 2>&1
    459 	ttest
    460 
    461 	if diff -b $TCtmp/lib.a.exp $TCtmp/lib.a.stdout >/dev/null 2>&1
    462 	then
    463 		echo "-)18"
    464 	else
    465 		TCRESULT=18
    466 		echo "FAIL - ar with -t did not print as desired"
    467 	fi
    468 
    469 	# The -t does not affect behaviour of -s option.
    470 
    471 	echo "-)19 SKIPPED due to binutils ar automatically adds a symbol."
    472 
    473 	# The 'u' flag causes files only with later modification date than
    474 	# in archive are replaced.
    475 
    476 	# CODE
    477 	rm -rf $TCtmp/lib.a
    478 	cd $TCdat
    479 
    480 	ar -cr $TCtmp/lib.a file0.in file2.in
    481 	crtest
    482 	File1time=`ar -tv $TCtmp/lib.a | grep file0.in`
    483 	File2time=`ar -tv $TCtmp/lib.a | grep file2.in`
    484 
    485 	#sleep 5
    486 	touch -c -t $(date --date='next day' +"%Y%m%d%H%M") file0.in
    487 
    488 	ar -ru $TCtmp/lib.a file0.in file2.in 2>&1 1>/dev/null
    489 	File1time1=`ar -tv $TCtmp/lib.a | grep file0.in`
    490 	File2time2=`ar -tv $TCtmp/lib.a | grep file2.in`
    491 
    492 	if [ "$File2time" = "$File2time2" ]
    493 	then
    494 		if [ "$File1time" = "$File1time1" ]
    495 		then
    496 			TCRESULT=20
    497 			echo "FAIL - ar with -u flag failed"
    498 		else
    499 			echo "-)20"
    500 		fi
    501 	else
    502 		TCRESULT=20
    503 		echo "FAIL - ar with -u flag failed"
    504 	fi
    505 	# Reset the timestamp on file0.in to current
    506 	touch file0.in
    507 
    508 	# This is the next assertion
    509 
    510 	# CODE
    511 
    512 	Count=0
    513 	rm -rf $TCtmp/lib.a;cd $TCdat
    514 	ar -cr $TCtmp/lib.a file1.in file2.in file3.in
    515 	crtest
    516 	Sysmonth=`date | cut -f2 -d" "`
    517 	Month=`ar -tv $TCtmp/lib.a | grep "file2.in" | awk '{print $4}'`
    518 	Count=`ar -tv $TCtmp/lib.a | wc -l`
    519 
    520 	if [ $Sysmonth = $Month ] && [ $Count -eq 3 ]
    521 	then
    522 		echo "-)21"
    523 	else
    524 	    	TCRESULT=21
    525 		echo "FAIL - ar with -v flag failed to print a line for each file"
    526 	fi
    527 
    528 	# The -v option produces a verbose listing like ls -n
    529 
    530 	# CODE
    531 
    532 	rm -rf $TCtmp/lib.a;cd $TCdat $TCtmp/lib.a.exp *out
    533 	ar -cr $TCtmp/lib.a file1.in file2.in file3.in
    534 	crtest
    535 
    536 	ls -ln --time-style=+%b" "%e" "%H:%M file1.in file2.in file3.in |
    537 	while read permissions link uid gid size month day time file_name
    538 	do
    539 		echo "${permissions%.};$uid/$gid;$size;$month;$day;$time;$file_name"
    540 	done >>  $TCtmp/lib.a.exp
    541 
    542 	ar -tv $TCtmp/lib.a |
    543 	while read permissions uid size month day time year file_name
    544 	do
    545 		echo "-$permissions;$uid;$size;$month;$day;$time;$file_name"
    546 	done >> $TCtmp/lib.a.stdout
    547 	ttest
    548 
    549 	diff $TCtmp/lib.a.exp $TCtmp/lib.a.stdout
    550 	if [ $? -eq 0 ]
    551 	then
    552 		echo "-)22"
    553 	else
    554 		TCRESULT=22
    555 		echo "FAIL - ar with -v failed to produce a verbose out put"
    556 	fi
    557 
    558 	# The 'v' option causes the 'x' option to display a filename for each
    559 	# file extracted.
    560 
    561 	# CODE
    562 
    563 	rm -rf $TCtmp/lib.a;cd $TCdat
    564 	ar -cr $TCtmp/lib.a file1.in file2.in file3.in
    565 	crtest
    566 	Count=`ar -xv $TCtmp/lib.a | wc -l`
    567 
    568 	if [ $Count = '3' ]
    569 	then
    570 		echo "-)23"
    571 	else
    572 		TCRESULT=23
    573 		echo "FAIL - ar with -v along with x did not display extracted file names"
    574 	fi
    575 
    576 	# The command 'ar -x afile ' causes all files from the archive to be extracted.
    577 
    578 	# CODE
    579 
    580 	rm -rf $TCtmp/lib.a;cd $TCdat
    581 	ar -cr $TCtmp/lib.a file1.in file2.in file3.in
    582 	crtest
    583 
    584 	Count=`ar -xv $TCtmp/lib.a | wc -l`
    585 
    586 	if [ $Count -eq '3' ]
    587 	then
    588 		echo "-)24"
    589 	else
    590 		TCRESULT=24
    591 		echo "FAIL - ar with -x flag did not extract all file"
    592 	fi
    593 
    594 	# The command 'ar -x afile name name' causes only named files from
    595 	# the archive to be extracted.
    596 
    597 	# CODE
    598 	rm -rf $TCtmp/lib.a;cd $TCdat
    599 	ar -cr $TCtmp/lib.a file1.in file2.in file3.in
    600 	crtest
    601 	Count=`ar -xv $TCtmp/lib.a file1.in | grep file | wc -l`
    602 
    603 	if [ $Count = '1' ]
    604 	then
    605 		echo "-)25"
    606 	else
    607 		TCRESULT=25
    608 		echo "FAIL - ar with -x lib filename did not extract the named file alone"
    609 	fi
    610 
    611 	# This test will fail under pan, so it's commented out by default.
    612 	echo "-)26 SKIPPED UNDER PAN"
    613 	#
    614 	# Signal SIGHUP
    615 
    616 	# CODE
    617 
    618 	rm -rf $TCtmp/lib.*
    619 
    620 	ar -vr $TCtmp/lib.a $LIST >>$TCtmp/lib.a.stdout&
    621 	while [ ! -s $TCtmp/lib.a ]
    622 	do
    623 		sleep 1
    624 	done
    625 	kill -s 2 $! >/dev/null 2>&1
    626 
    627 	sleep 1
    628 	if [ `wc -l $TCtmp/lib.a.stdout|(read a b;echo $a)` -ne 100 ]
    629 	then
    630 		TCRESULT=27
    631 		echo "FAIL - ar could not create the archive ; killed by SIGINIT"
    632 	else
    633 		echo "-)27"
    634 	fi
    635 
    636 	# Signal SIGQUIT
    637 
    638 	# CODE
    639 
    640 	rm -rf $TCtmp/lib.*
    641 
    642 	ar -vr $TCtmp/lib.a $LIST >>$TCtmp/lib.a.stdout&
    643 	while [ ! -s $TCtmp/lib.a ]
    644 	do
    645 		sleep 1
    646 	done
    647 	kill -s 3 $! >/dev/null 2>&1
    648 
    649 	sleep 1
    650 	if [ `wc -l $TCtmp/lib.a.stdout|(read a b;echo $a)` -ne 100 ]
    651 	then
    652 		TCRESULT=28
    653 		echo "FAIL - ar could not create the archive ; killed by SIGQUIT"
    654 	else
    655 		echo "-)28"
    656 	fi
    657 
    658 	# Signal SIGHUP; ar should not remove archive that existed before invocation.
    659 
    660 	# CODE
    661 
    662 	rm -rf $TCtmp/lib.a;cd $TCdat $TCtmp/lib.a.stdout
    663 	ar -rv $TCtmp/lib.a file1.in file2.in file3.in 2>&1 1>$TCtmp/lib.a.stdout
    664 	rtest
    665 	ar -rv $TCtmp/lib.a $LIST 2>&1 1>>$TCtmp/lib.a.stdout&
    666 	rtest
    667 	while [ ! -s $TCtmp/lib.a ]
    668 	do
    669 		sleep 1
    670 	done
    671 	sleep 1
    672 	kill -s 1 $! 2>&1 1>/dev/null | read a
    673 
    674 	if [ `wc -l $TCtmp/lib.a.stdout|(read a b;echo $a)` -ne 103 ]
    675 	then
    676 		TCRESULT=29
    677 		echo "FAIL - ar could not complete the archive ; killed by SIGHUP"
    678 	else
    679 		echo "-)29"
    680 	fi
    681 
    682 	# Signal SIGINIT; ar should not remove archive that existed before invocation.
    683 
    684 	# CODE
    685 
    686 	rm -rf $TCtmp/lib.a
    687 	cd $TCdat $TCtmp/lib.a.stdout
    688 	ar -rv $TCtmp/lib.a file1.in file2.in file3.in 2>&1 1>$TCtmp/lib.a.stdout
    689 	rtest
    690 	ar -rv $TCtmp/lib.a $LIST 2>&1 1>>$TCtmp/lib.a.stdout&
    691 	rtest
    692 	while [ ! -s $TCtmp/lib.a ]
    693 	do
    694 		sleep 1
    695 	done
    696 	sleep 1
    697 
    698 	kill -s 2 $! 2>&1 1>/dev/null | read a
    699 
    700 	if [ `wc -l $TCtmp/lib.a.stdout|(read a b;echo $a)` -ne 103 ]
    701 	then
    702 		TCRESULT=30
    703 		echo "FAIL - ar could not complete the archive ; killed by SIGINIT"
    704 	else
    705 		echo "-)30"
    706 	fi
    707 
    708 	# Signal SIGQUIT; ar should not remove archive that existed before invocation.
    709 
    710 	# CODE
    711 
    712 	rm -rf $TCtmp/lib.a
    713 	cd $TCdat
    714 	ar -rv $TCtmp/lib.a file1.in file2.in file3.in 2>&1 1>$TCtmp/lib.a.stdout
    715 	rtest
    716 	ar -rv $TCtmp/lib.a $LIST 2>&1 1>>$TCtmp/lib.a.stdout&
    717 	rtest
    718 	while [ ! -s $TCtmp/lib.a ]
    719 	do
    720 		sleep 1
    721 	done
    722 	sleep 1
    723 	kill -s 3 $! 2>&1 1>/dev/null | read a
    724 
    725 	if [ `wc -l $TCtmp/lib.a.stdout|(read a b;echo $a)` -ne 103 ]
    726 	then
    727 		TCRESULT=31
    728 		echo "FAIL - ar could not complete the archive ; killed by SIGQUIT"
    729 	else
    730 		echo "-)31"
    731 	fi
    732 
    733 	rm -rf $TCtmp
    734 	COUNT=`expr $COUNT + 1`
    735 
    736 done
    737 cleanup
    738