#!/bin/sh # # +----------------------------------------------------------------------+ # | PHP HTML Embedded Scripting Language Version 4.0 | # +----------------------------------------------------------------------+ # | Copyright (c) 1997-1999 PHP Development Team (See Credits file) | # +----------------------------------------------------------------------+ # | This program is free software; you can redistribute it and/or modify | # | it under the terms of one of the following licenses: | # | | # | A) 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. | # | | # | B) the PHP License as published by the PHP Development Team and | # | included in the distribution in the file: LICENSE | # | | # | 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 both licenses referred to here. | # | If you did not, or have any questions about PHP licensing, please | # | contact core@php.net. | # +----------------------------------------------------------------------+ # | Authors: Stig Sæther Bakken | # +----------------------------------------------------------------------+ # # Archive merger. Usage: armerge libout.a dir1/libin1.a dir2/libin2.a ... # Creates the archive libout.a from the files in the rest of the # parameter list. If the input archives are in separate directories, # the names of the files inside them are prefixed before they are # merged into the output archive. The prefix used is the same as the # directory name with "/" replaced by "_" and a "_" at the end. # # $Id$ # die() { echo $@ exit 1 } if test "$#" -lt "2"; then echo "Usage: "`basename $0`" " exit 1 fi out_archive=$1; shift in_archives=$@ cwd=`pwd` tmpdir=/tmp/armerge$$ rm -f $out_archive mkdir $tmpdir || die "can not create temporary directory $tmpdir" ( cd $tmpdir; for archive in $in_archives; do files=`ar t $cwd/$archive` ar x $cwd/$archive dir=`dirname $archive` if test "$dir" = "."; then ext_files=$files else prefix=`echo $dir | sed -e 's#^\./##' -e 's#/#_#g'`_ prefix=`echo $prefix | sed -e 's#^\.\._##g'` ext_files="" for file in $files; do if test "$file" != "$prefix$file"; then mv "$file" "$prefix$file" fi ext_files="$ext_files $prefix$file" done fi ar r out.a $ext_files done ) cmp $tmpdir/out.a $out_archive >/dev/null 2>&1 || mv $tmpdir/out.a $out_archive || die "can not create $out_archive" rm -rf $tmpdir