1f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich#! /bin/sh 2f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich# Wrapper for Microsoft lib.exe 3f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich 4f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevichme=ar-lib 5f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevichscriptversion=2012-03-01.08; # UTC 6f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich 7f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich# Copyright (C) 2010-2013 Free Software Foundation, Inc. 8f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich# Written by Peter Rosin <peda@lysator.liu.se>. 9f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich# 10f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich# This program is free software; you can redistribute it and/or modify 11f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich# it under the terms of the GNU General Public License as published by 12f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich# the Free Software Foundation; either version 2, or (at your option) 13f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich# any later version. 14f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich# 15f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich# This program is distributed in the hope that it will be useful, 16f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich# but WITHOUT ANY WARRANTY; without even the implied warranty of 17f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 18f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich# GNU General Public License for more details. 19f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich# 20f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich# You should have received a copy of the GNU General Public License 21f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich# along with this program. If not, see <http://www.gnu.org/licenses/>. 22f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich 23f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich# As a special exception to the GNU General Public License, if you 24f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich# distribute this file as part of a program that contains a 25f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich# configuration script generated by Autoconf, you may include it under 26f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich# the same distribution terms that you use for the rest of that program. 27f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich 28f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich# This file is maintained in Automake, please report 29f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich# bugs to <bug-automake@gnu.org> or send patches to 30f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich# <automake-patches@gnu.org>. 31f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich 32f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich 33f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich# func_error message 34f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevichfunc_error () 35f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich{ 36f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich echo "$me: $1" 1>&2 37f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich exit 1 38f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich} 39f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich 40f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevichfile_conv= 41f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich 42f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich# func_file_conv build_file 43f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich# Convert a $build file to $host form and store it in $file 44f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich# Currently only supports Windows hosts. 45f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevichfunc_file_conv () 46f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich{ 47f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich file=$1 48f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich case $file in 49f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich / | /[!/]*) # absolute file, and not a UNC file 50f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich if test -z "$file_conv"; then 51f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich # lazily determine how to convert abs files 52f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich case `uname -s` in 53f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich MINGW*) 54f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich file_conv=mingw 55f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich ;; 56f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich CYGWIN*) 57f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich file_conv=cygwin 58f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich ;; 59f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich *) 60f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich file_conv=wine 61f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich ;; 62f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich esac 63f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich fi 64f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich case $file_conv in 65f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich mingw) 66f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich file=`cmd //C echo "$file " | sed -e 's/"\(.*\) " *$/\1/'` 67f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich ;; 68f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich cygwin) 69f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich file=`cygpath -m "$file" || echo "$file"` 70f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich ;; 71f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich wine) 72f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich file=`winepath -w "$file" || echo "$file"` 73f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich ;; 74f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich esac 75f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich ;; 76f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich esac 77f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich} 78f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich 79f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich# func_at_file at_file operation archive 80f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich# Iterate over all members in AT_FILE performing OPERATION on ARCHIVE 81f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich# for each of them. 82f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich# When interpreting the content of the @FILE, do NOT use func_file_conv, 83f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich# since the user would need to supply preconverted file names to 84f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich# binutils ar, at least for MinGW. 85f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevichfunc_at_file () 86f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich{ 87f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich operation=$2 88f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich archive=$3 89f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich at_file_contents=`cat "$1"` 90f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich eval set x "$at_file_contents" 91f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich shift 92f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich 93f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich for member 94f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich do 95f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich $AR -NOLOGO $operation:"$member" "$archive" || exit $? 96f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich done 97f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich} 98f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich 99f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevichcase $1 in 100f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich '') 101f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich func_error "no command. Try '$0 --help' for more information." 102f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich ;; 103f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich -h | --h*) 104f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich cat <<EOF 105f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick KralevichUsage: $me [--help] [--version] PROGRAM ACTION ARCHIVE [MEMBER...] 106f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich 107f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick KralevichMembers may be specified in a file named with @FILE. 108f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick KralevichEOF 109f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich exit $? 110f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich ;; 111f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich -v | --v*) 112f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich echo "$me, version $scriptversion" 113f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich exit $? 114f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich ;; 115f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevichesac 116f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich 117f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevichif test $# -lt 3; then 118f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich func_error "you must specify a program, an action and an archive" 119f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevichfi 120f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich 121f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick KralevichAR=$1 122f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevichshift 123f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevichwhile : 124f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevichdo 125f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich if test $# -lt 2; then 126f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich func_error "you must specify a program, an action and an archive" 127f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich fi 128f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich case $1 in 129f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich -lib | -LIB \ 130f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich | -ltcg | -LTCG \ 131f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich | -machine* | -MACHINE* \ 132f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich | -subsystem* | -SUBSYSTEM* \ 133f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich | -verbose | -VERBOSE \ 134f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich | -wx* | -WX* ) 135f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich AR="$AR $1" 136f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich shift 137f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich ;; 138f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich *) 139f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich action=$1 140f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich shift 141f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich break 142f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich ;; 143f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich esac 144f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevichdone 145f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevichorig_archive=$1 146f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevichshift 147f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevichfunc_file_conv "$orig_archive" 148f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevicharchive=$file 149f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich 150f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich# strip leading dash in $action 151f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevichaction=${action#-} 152f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich 153f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevichdelete= 154f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevichextract= 155f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevichlist= 156f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevichquick= 157f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevichreplace= 158f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevichindex= 159f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevichcreate= 160f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich 161f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevichwhile test -n "$action" 162f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevichdo 163f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich case $action in 164f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich d*) delete=yes ;; 165f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich x*) extract=yes ;; 166f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich t*) list=yes ;; 167f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich q*) quick=yes ;; 168f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich r*) replace=yes ;; 169f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich s*) index=yes ;; 170f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich S*) ;; # the index is always updated implicitly 171f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich c*) create=yes ;; 172f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich u*) ;; # TODO: don't ignore the update modifier 173f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich v*) ;; # TODO: don't ignore the verbose modifier 174f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich *) 175f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich func_error "unknown action specified" 176f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich ;; 177f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich esac 178f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich action=${action#?} 179f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevichdone 180f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich 181f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevichcase $delete$extract$list$quick$replace,$index in 182f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich yes,* | ,yes) 183f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich ;; 184f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich yesyes*) 185f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich func_error "more than one action specified" 186f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich ;; 187f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich *) 188f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich func_error "no action specified" 189f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich ;; 190f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevichesac 191f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich 192f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevichif test -n "$delete"; then 193f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich if test ! -f "$orig_archive"; then 194f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich func_error "archive not found" 195f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich fi 196f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich for member 197f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich do 198f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich case $1 in 199f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich @*) 200f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich func_at_file "${1#@}" -REMOVE "$archive" 201f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich ;; 202f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich *) 203f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich func_file_conv "$1" 204f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich $AR -NOLOGO -REMOVE:"$file" "$archive" || exit $? 205f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich ;; 206f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich esac 207f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich done 208f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich 209f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevichelif test -n "$extract"; then 210f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich if test ! -f "$orig_archive"; then 211f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich func_error "archive not found" 212f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich fi 213f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich if test $# -gt 0; then 214f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich for member 215f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich do 216f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich case $1 in 217f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich @*) 218f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich func_at_file "${1#@}" -EXTRACT "$archive" 219f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich ;; 220f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich *) 221f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich func_file_conv "$1" 222f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich $AR -NOLOGO -EXTRACT:"$file" "$archive" || exit $? 223f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich ;; 224f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich esac 225f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich done 226f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich else 227f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich $AR -NOLOGO -LIST "$archive" | sed -e 's/\\/\\\\/g' | while read member 228f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich do 229f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich $AR -NOLOGO -EXTRACT:"$member" "$archive" || exit $? 230f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich done 231f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich fi 232f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich 233f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevichelif test -n "$quick$replace"; then 234f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich if test ! -f "$orig_archive"; then 235f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich if test -z "$create"; then 236f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich echo "$me: creating $orig_archive" 237f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich fi 238f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich orig_archive= 239f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich else 240f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich orig_archive=$archive 241f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich fi 242f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich 243f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich for member 244f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich do 245f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich case $1 in 246f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich @*) 247f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich func_file_conv "${1#@}" 248f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich set x "$@" "@$file" 249f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich ;; 250f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich *) 251f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich func_file_conv "$1" 252f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich set x "$@" "$file" 253f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich ;; 254f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich esac 255f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich shift 256f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich shift 257f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich done 258f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich 259f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich if test -n "$orig_archive"; then 260f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich $AR -NOLOGO -OUT:"$archive" "$orig_archive" "$@" || exit $? 261f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich else 262f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich $AR -NOLOGO -OUT:"$archive" "$@" || exit $? 263f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich fi 264f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich 265f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevichelif test -n "$list"; then 266f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich if test ! -f "$orig_archive"; then 267f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich func_error "archive not found" 268f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich fi 269f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevich $AR -NOLOGO -LIST "$archive" || exit $? 270f73ff17bddb7dc18ff9044773dd65d040e8f4fcfNick Kralevichfi 271