dtstyle: Coverity 89011
[oweals/cde.git] / cde / util / scripts / mergelib.cpp
1 XCOMM!/bin/sh
2 XCOMM
3 XCOMM $XConsortium: mergelib.cpp,v 1.3 91/08/22 11:08:08 rws Exp $
4 XCOMM 
5 XCOMM Copyright 1989 Massachusetts Institute of Technology
6 XCOMM 
7 XCOMM Permission to use, copy, modify, distribute, and sell this software and its
8 XCOMM documentation for any purpose is hereby granted without fee, provided that
9 XCOMM the above copyright notice appear in all copies and that both that
10 XCOMM copyright notice and this permission notice appear in supporting
11 XCOMM documentation, and that the name of M.I.T. not be used in advertising or
12 XCOMM publicity pertaining to distribution of the software without specific,
13 XCOMM written prior permission.  M.I.T. makes no representations about the
14 XCOMM suitability of this software for any purpose.  It is provided "as is"
15 XCOMM without express or implied warranty.
16 XCOMM 
17 XCOMM M.I.T. DISCLAIMS ALL WARRANTIES WITH REGARD TO THIS SOFTWARE, INCLUDING ALL
18 XCOMM IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS, IN NO EVENT SHALL M.I.T.
19 XCOMM BE LIABLE FOR ANY SPECIAL, INDIRECT OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES
20 XCOMM WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION
21 XCOMM OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF OR IN 
22 XCOMM CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
23 XCOMM 
24 XCOMM Author:  Jim Fulton, MIT X Consortium
25 XCOMM 
26 XCOMM mergelib - merge one library into another; this is commonly used by X
27 XCOMM     to add the extension library into the base Xlib.
28 XCOMM
29
30 usage="usage:  $0  to-library from-library [object-filename-prefix]"
31 objprefix=_
32
33 case $# in
34     2) ;;
35     3) objprefix=$3 ;;
36     *) echo "$usage" 1>&2; exit 1 ;;
37 esac
38
39 tolib=$1
40 fromlib=$2
41
42 if [ ! -f $fromlib ]; then
43     echo "$0:  no such from-library $fromlib" 1>&2
44     exit 1
45 fi
46
47 if [ ! -f $tolib ]; then
48     echo "$0:  no such to-library $tolib" 1>&2
49     exit 1
50 fi
51
52
53 XCOMM
54 XCOMM Create a temp directory, and figure out how to reference the 
55 XCOMM object files from it (i.e. relative vs. absolute path names).
56 XCOMM
57
58 tmpdir=tmp.$$
59 origdir=..
60
61 mkdir $tmpdir
62
63 if [ ! -d $tmpdir ]; then
64     echo "$0:  unable to create temporary directory $tmpdir" 1>&2
65     exit 1
66 fi
67
68 case "$fromlib" in
69     /?*) upfrom= ;;
70     *)  upfrom=../ ;;
71 esac
72
73 case "$tolib" in
74     /?*) upto= ;;
75     *)  upto=../ ;;
76 esac
77
78
79 XCOMM
80 XCOMM In the temp directory, extract all of the object files and prefix
81 XCOMM them with some symbol to avoid name clashes with the base library.
82 XCOMM
83 cd $tmpdir
84 ar x ${upfrom}$fromlib
85 for i in *.o; do
86     mv $i ${objprefix}$i
87 done
88
89
90 XCOMM
91 XCOMM Merge in the object modules, ranlib (if appropriate) and cleanup
92 XCOMM
93 ARCMD ${upto}$tolib *.o
94 RANLIB ${upto}$tolib
95 cd $origdir
96 rm -rf $tmpdir
97
98
99