[BACK]Return to lorder.sh.gnm CVS log [TXT][DIR] Up to [local] / src / usr.bin / lorder

Annotation of src/usr.bin/lorder/lorder.sh.gnm, Revision 1.1

1.1     ! deraadt     1: #!/bin/sh -
        !             2: #      $NetBSD: lorder.sh.gnm,v 1.1 1995/04/24 07:39:06 cgd Exp $
        !             3: #
        !             4: # Copyright (c) 1990, 1993
        !             5: #      The Regents of the University of California.  All rights reserved.
        !             6: #
        !             7: # Redistribution and use in source and binary forms, with or without
        !             8: # modification, are permitted provided that the following conditions
        !             9: # are met:
        !            10: # 1. Redistributions of source code must retain the above copyright
        !            11: #    notice, this list of conditions and the following disclaimer.
        !            12: # 2. Redistributions in binary form must reproduce the above copyright
        !            13: #    notice, this list of conditions and the following disclaimer in the
        !            14: #    documentation and/or other materials provided with the distribution.
        !            15: # 3. All advertising materials mentioning features or use of this software
        !            16: #    must display the following acknowledgement:
        !            17: #      This product includes software developed by the University of
        !            18: #      California, Berkeley and its contributors.
        !            19: # 4. Neither the name of the University nor the names of its contributors
        !            20: #    may be used to endorse or promote products derived from this software
        !            21: #    without specific prior written permission.
        !            22: #
        !            23: # THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND
        !            24: # ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
        !            25: # IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
        !            26: # ARE DISCLAIMED.  IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE
        !            27: # FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
        !            28: # DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
        !            29: # OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
        !            30: # HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
        !            31: # LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
        !            32: # OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
        !            33: # SUCH DAMAGE.
        !            34: #
        !            35: #      @(#)lorder.sh   8.1 (Berkeley) 6/6/93
        !            36: #
        !            37:
        !            38: PATH=/bin:/usr/bin
        !            39: export PATH
        !            40:
        !            41: # only one argument is a special case, just output the name twice
        !            42: case $# in
        !            43:        0)
        !            44:                echo "usage: lorder file ...";
        !            45:                exit ;;
        !            46:        1)
        !            47:                echo $1 $1;
        !            48:                exit ;;
        !            49: esac
        !            50:
        !            51: # temporary files
        !            52: R=/tmp/_reference_$$
        !            53: S=/tmp/_symbol_$$
        !            54:
        !            55: # remove temporary files on HUP, INT, QUIT, PIPE, TERM
        !            56: trap "rm -f $R $S; exit 1" 1 2 3 13 15
        !            57:
        !            58: # if the line ends in a colon, assume it's the first occurrence of a new
        !            59: # object file.  Echo it twice, just to make sure it gets into the output.
        !            60: #
        !            61: # if the line has " T " or " D " it's a globally defined symbol, put it
        !            62: # into the symbol file.
        !            63: #
        !            64: # if the line has " U " it's a globally undefined symbol, put it into
        !            65: # the reference file.
        !            66: for file in $* ; do
        !            67: ( echo "" ; echo ${file}: ; nm -go $file ) | sed "
        !            68:        /:$/ {
        !            69:                s/://
        !            70:                s/.*/& &/
        !            71:                p
        !            72:                d
        !            73:        }
        !            74:        / [TD] / {
        !            75:                s/:.* [TD] / /
        !            76:                w $S
        !            77:                d
        !            78:        }
        !            79:        / U / {
        !            80:                s/:.* U / /
        !            81:                w $R
        !            82:        }
        !            83:        d
        !            84: "
        !            85: done
        !            86:
        !            87: # sort symbols and references on the first field (the symbol)
        !            88: # join on that field, and print out the file names.
        !            89: sort +1 $R -o $R
        !            90: sort +1 $S -o $S
        !            91: join -j 2 -o 1.1 2.1 $R $S
        !            92: rm -f $R $S