Mercurial > hg > xemacs-beta
diff lisp/hyperbole/smart-clib-sym @ 0:376386a54a3c r19-14
Import from CVS: tag r19-14
author | cvs |
---|---|
date | Mon, 13 Aug 2007 08:45:50 +0200 |
parents | |
children |
line wrap: on
line diff
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/lisp/hyperbole/smart-clib-sym Mon Aug 13 08:45:50 2007 +0200 @@ -0,0 +1,63 @@ +#!/bin/csh -f +# +# SUMMARY: Test whether symbol appears within a set of C libraries. +# USAGE: <script-name> <symbol-string> +# +# AUTHOR: Bob Weiner +# ORG: Brown U. +# +# ORIG-DATE: 5-Oct-91 at 03:29:05 +# LAST-MOD: 25-Aug-95 at 02:23:17 by Bob Weiner +# +# This file is part of Hyperbole. +# Available for use and distribution under the same terms as GNU Emacs. +# +# Copyright (C) 1991-1995, Free Software Foundation, Inc. +# Developed with support from Motorola Inc. +# +# DESCRIPTION: +# +# Create the file given by the variable 'clib_list' below, and place in that +# file the full path for each C, C++ or Objective-C library that you want +# scanned for symbol names. One filename per line. Do not quote the +# filenames. +# +# Handles exact name matches only. Echos and exits with same output value. +# Either 1 if symbol is found or 0 if not. +# +# DESCRIP-END. + +# Perl script used to tell whether one file is newer than another. +# +set fn = "file-newer" + +# Create this file and place in the file the full path for each C, C++ or +# Objective-C library that you want scanned for symbol names. One filename +# per line. Do not quote the filenames. +# +set clib_list = "~/.CLIBS-LIST" + + +# This file will automatically be created to cache the symbol names. +# Remove it if you ever want to rebuild the symbol table. +# +set clib_symbols = "~/.clibs-symbols" + +# Try to locate 'perl' and 'file-newer' script for use. + +which perl >& /dev/null +if ($status) unset fn + +set st = 0 rebuild = 0 +if (-e $clib_list) then + if (! -e $clib_symbols || -z $clib_symbols) set rebuild = 1 + if (! $rebuild && $?fn) @ rebuild = `perl $fn $clib_list $clib_symbols` + if ($rebuild) then + nm -g `cat $clib_list` | grep '^[0-9 ].* _[A-Za-z]' | sed -e 's/^[^_][^_]*_//g' | sort | uniq > $clib_symbols + endif + fgrep -sx $1 $clib_symbols >& /dev/null + @ st = ! $status +endif + +echo $st +exit $st