1#!/bin/bash -u
2#
3# This is one of the scripts that is passed to binary_search_state.py to do
4# the bisection.  This one takes a list of object files (either a real list or
5# a file containing the list) and copies the files from the bad objects
6# directory to the working directory.
7#
8
9source full_bisect_test/common.sh
10
11pushd ${BISECT_WORK_BUILD}
12chmod 644 *
13
14OBJ_LIST_FILES=$1
15FILE_ARGS=0
16
17if [[ -f ${OBJ_LIST_FILES} ]] ; then
18  file ${OBJ_LIST_FILES} &> ${BISECT_WORK_BUILD}/file_type.tmp
19  grep "ASCII text" ${BISECT_WORK_BUILD}/file_type.tmp
20  result=$?
21  if [[ ${result} -eq 0 ]] ; then
22    FILE_ARGS=1
23  fi
24  rm ${BISECT_WORK_BUILD}/file_type.tmp
25fi
26
27overall_status=0
28
29if [[ ${FILE_ARGS} -eq 1 ]] ; then
30  while read obj || [[ -n "${obj}" ]];
31  do
32    cp ${BISECT_BAD_BUILD}/${obj} ${BISECT_WORK_BUILD}
33    status=$?
34    if [[ ${status} -ne 0 ]] ; then
35      echo "Failed to copy ${obj} to work build tree."
36      overall_status=2
37    fi
38  done < ${OBJ_LIST_FILES}
39else
40
41  for o in "$@"
42  do
43    cp ${BISECT_BAD_BUILD}/${o} ${BISECT_WORK_BUILD}
44    status=$?
45    if [[ ${status} -ne 0 ]] ; then
46      echo "Failed to copy ${o} to work build tree."
47      overall_status=2
48    fi
49  done
50fi
51
52popd
53
54exit ${overall_status}
55