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