| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270 | 
							- #! /bin/sh
 
- # Wrapper for Microsoft lib.exe
 
- me=ar-lib
 
- scriptversion=2012-03-01.08; # UTC
 
- # Copyright (C) 2010-2018 Free Software Foundation, Inc.
 
- # Written by Peter Rosin <peda@lysator.liu.se>.
 
- #
 
- # 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, 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, see <https://www.gnu.org/licenses/>.
 
- # As a special exception to the GNU General Public License, if you
 
- # distribute this file as part of a program that contains a
 
- # configuration script generated by Autoconf, you may include it under
 
- # the same distribution terms that you use for the rest of that program.
 
- # This file is maintained in Automake, please report
 
- # bugs to <bug-automake@gnu.org> or send patches to
 
- # <automake-patches@gnu.org>.
 
- # func_error message
 
- func_error ()
 
- {
 
-   echo "$me: $1" 1>&2
 
-   exit 1
 
- }
 
- file_conv=
 
- # func_file_conv build_file
 
- # Convert a $build file to $host form and store it in $file
 
- # Currently only supports Windows hosts.
 
- func_file_conv ()
 
- {
 
-   file=$1
 
-   case $file in
 
-     / | /[!/]*) # absolute file, and not a UNC file
 
-       if test -z "$file_conv"; then
 
- 	# lazily determine how to convert abs files
 
- 	case `uname -s` in
 
- 	  MINGW*)
 
- 	    file_conv=mingw
 
- 	    ;;
 
- 	  CYGWIN*)
 
- 	    file_conv=cygwin
 
- 	    ;;
 
- 	  *)
 
- 	    file_conv=wine
 
- 	    ;;
 
- 	esac
 
-       fi
 
-       case $file_conv in
 
- 	mingw)
 
- 	  file=`cmd //C echo "$file " | sed -e 's/"\(.*\) " *$/\1/'`
 
- 	  ;;
 
- 	cygwin)
 
- 	  file=`cygpath -m "$file" || echo "$file"`
 
- 	  ;;
 
- 	wine)
 
- 	  file=`winepath -w "$file" || echo "$file"`
 
- 	  ;;
 
-       esac
 
-       ;;
 
-   esac
 
- }
 
- # func_at_file at_file operation archive
 
- # Iterate over all members in AT_FILE performing OPERATION on ARCHIVE
 
- # for each of them.
 
- # When interpreting the content of the @FILE, do NOT use func_file_conv,
 
- # since the user would need to supply preconverted file names to
 
- # binutils ar, at least for MinGW.
 
- func_at_file ()
 
- {
 
-   operation=$2
 
-   archive=$3
 
-   at_file_contents=`cat "$1"`
 
-   eval set x "$at_file_contents"
 
-   shift
 
-   for member
 
-   do
 
-     $AR -NOLOGO $operation:"$member" "$archive" || exit $?
 
-   done
 
- }
 
- case $1 in
 
-   '')
 
-      func_error "no command.  Try '$0 --help' for more information."
 
-      ;;
 
-   -h | --h*)
 
-     cat <<EOF
 
- Usage: $me [--help] [--version] PROGRAM ACTION ARCHIVE [MEMBER...]
 
- Members may be specified in a file named with @FILE.
 
- EOF
 
-     exit $?
 
-     ;;
 
-   -v | --v*)
 
-     echo "$me, version $scriptversion"
 
-     exit $?
 
-     ;;
 
- esac
 
- if test $# -lt 3; then
 
-   func_error "you must specify a program, an action and an archive"
 
- fi
 
- AR=$1
 
- shift
 
- while :
 
- do
 
-   if test $# -lt 2; then
 
-     func_error "you must specify a program, an action and an archive"
 
-   fi
 
-   case $1 in
 
-     -lib | -LIB \
 
-     | -ltcg | -LTCG \
 
-     | -machine* | -MACHINE* \
 
-     | -subsystem* | -SUBSYSTEM* \
 
-     | -verbose | -VERBOSE \
 
-     | -wx* | -WX* )
 
-       AR="$AR $1"
 
-       shift
 
-       ;;
 
-     *)
 
-       action=$1
 
-       shift
 
-       break
 
-       ;;
 
-   esac
 
- done
 
- orig_archive=$1
 
- shift
 
- func_file_conv "$orig_archive"
 
- archive=$file
 
- # strip leading dash in $action
 
- action=${action#-}
 
- delete=
 
- extract=
 
- list=
 
- quick=
 
- replace=
 
- index=
 
- create=
 
- while test -n "$action"
 
- do
 
-   case $action in
 
-     d*) delete=yes  ;;
 
-     x*) extract=yes ;;
 
-     t*) list=yes    ;;
 
-     q*) quick=yes   ;;
 
-     r*) replace=yes ;;
 
-     s*) index=yes   ;;
 
-     S*)             ;; # the index is always updated implicitly
 
-     c*) create=yes  ;;
 
-     u*)             ;; # TODO: don't ignore the update modifier
 
-     v*)             ;; # TODO: don't ignore the verbose modifier
 
-     *)
 
-       func_error "unknown action specified"
 
-       ;;
 
-   esac
 
-   action=${action#?}
 
- done
 
- case $delete$extract$list$quick$replace,$index in
 
-   yes,* | ,yes)
 
-     ;;
 
-   yesyes*)
 
-     func_error "more than one action specified"
 
-     ;;
 
-   *)
 
-     func_error "no action specified"
 
-     ;;
 
- esac
 
- if test -n "$delete"; then
 
-   if test ! -f "$orig_archive"; then
 
-     func_error "archive not found"
 
-   fi
 
-   for member
 
-   do
 
-     case $1 in
 
-       @*)
 
-         func_at_file "${1#@}" -REMOVE "$archive"
 
-         ;;
 
-       *)
 
-         func_file_conv "$1"
 
-         $AR -NOLOGO -REMOVE:"$file" "$archive" || exit $?
 
-         ;;
 
-     esac
 
-   done
 
- elif test -n "$extract"; then
 
-   if test ! -f "$orig_archive"; then
 
-     func_error "archive not found"
 
-   fi
 
-   if test $# -gt 0; then
 
-     for member
 
-     do
 
-       case $1 in
 
-         @*)
 
-           func_at_file "${1#@}" -EXTRACT "$archive"
 
-           ;;
 
-         *)
 
-           func_file_conv "$1"
 
-           $AR -NOLOGO -EXTRACT:"$file" "$archive" || exit $?
 
-           ;;
 
-       esac
 
-     done
 
-   else
 
-     $AR -NOLOGO -LIST "$archive" | sed -e 's/\\/\\\\/g' | while read member
 
-     do
 
-       $AR -NOLOGO -EXTRACT:"$member" "$archive" || exit $?
 
-     done
 
-   fi
 
- elif test -n "$quick$replace"; then
 
-   if test ! -f "$orig_archive"; then
 
-     if test -z "$create"; then
 
-       echo "$me: creating $orig_archive"
 
-     fi
 
-     orig_archive=
 
-   else
 
-     orig_archive=$archive
 
-   fi
 
-   for member
 
-   do
 
-     case $1 in
 
-     @*)
 
-       func_file_conv "${1#@}"
 
-       set x "$@" "@$file"
 
-       ;;
 
-     *)
 
-       func_file_conv "$1"
 
-       set x "$@" "$file"
 
-       ;;
 
-     esac
 
-     shift
 
-     shift
 
-   done
 
-   if test -n "$orig_archive"; then
 
-     $AR -NOLOGO -OUT:"$archive" "$orig_archive" "$@" || exit $?
 
-   else
 
-     $AR -NOLOGO -OUT:"$archive" "$@" || exit $?
 
-   fi
 
- elif test -n "$list"; then
 
-   if test ! -f "$orig_archive"; then
 
-     func_error "archive not found"
 
-   fi
 
-   $AR -NOLOGO -LIST "$archive" || exit $?
 
- fi
 
 
  |