mirror of
https://github.com/amix/vimrc
synced 2025-07-07 00:15:00 +08:00
update cscope from 15.7a to 15.8a and add Exuberant Ctags version58
This commit is contained in:
308
vim_plugins_src/cscope-15.8a/contrib/ocs
Normal file
308
vim_plugins_src/cscope-15.8a/contrib/ocs
Normal file
@ -0,0 +1,308 @@
|
||||
#!/bin/sh
|
||||
# $Id: ocs,v 1.4 2004/06/21 18:13:21 broeker Exp $
|
||||
# This utility maintains the database for cscope on a recursive dir set
|
||||
# Author: donwo Tue Jun 25 15:36:39 PDT 1996
|
||||
# Modified: hops Jan 2000 chg defaults to not update if files exist and force
|
||||
#
|
||||
# These comments ARE the manual. What more do you really need?
|
||||
# if using unadorned cscope with this use cscope -d so not trash db
|
||||
# cscope -L -0 <ptn> - to display ptn matches on stdout
|
||||
#
|
||||
# The lists of files are kept in two forms:
|
||||
# TMP cscope.tmplst
|
||||
# The list generated by this program
|
||||
# This list will be updated each time this program
|
||||
# is executed.
|
||||
#
|
||||
# LST cscope.lst
|
||||
# The fixed list generated by some other process
|
||||
# This list will be used, if found, rather than
|
||||
# the TMP form generated here.
|
||||
#
|
||||
# CSD cscope.csd
|
||||
# The fixed list generated by some other process
|
||||
# This list will be used, if found, rather than
|
||||
# the LST or TMP forms. CSD differs from LST in
|
||||
# that the CSD list is used where the source files
|
||||
# change only seldom. Cscope is requested not to
|
||||
# check for changed files. This can be
|
||||
# significantly faster on large source trees.
|
||||
#
|
||||
# INC cscope.inc
|
||||
# This is a list of additional directories
|
||||
# in which to search for include files.
|
||||
#
|
||||
# Three hierarchies of libraries are supported:
|
||||
# Local In the current directory ./
|
||||
# This is most useful for transient projects or
|
||||
# where the information is of no use to others on
|
||||
# the system. This type is NOT usable on source
|
||||
# directories that are read-only.
|
||||
# Home In users home directory $HOME/lib/cs/`pwd`
|
||||
# This is good for items that seldom change but are
|
||||
# of use only the the current user. This type is
|
||||
# usable on source directories that are read-only.
|
||||
# System In a global system directory $SYSDIR/`pwd`
|
||||
# This is for items that are of interest to all accounts.
|
||||
# This option is not available unless the system directory
|
||||
# is writable by the current user. This type is usable
|
||||
# on source directories that are read-only.
|
||||
#
|
||||
# If a shell script named ./cscope.rc is found and is
|
||||
# executable, the execution of it will be included within this
|
||||
# script after defaults_set/cmdline_parse and locating the
|
||||
# database.
|
||||
#
|
||||
# Command line options:
|
||||
# -x set shell debugging
|
||||
# -f force
|
||||
# o Do not ask about regenerating TMP. Just do it.
|
||||
# o Allow cscope to regenerate libraries for CSD lists.
|
||||
# -q Tell cscope to build an inverted index for quick
|
||||
# symbol searching. There is a SIGNIFICANT
|
||||
# increase in speed with this option however the
|
||||
# disk space used is doubled. Once the quick
|
||||
# database is generated, cs will detect the files
|
||||
# and continue to use them.
|
||||
# -d Do not regenerate. Intended for cscope sub-tasks.
|
||||
# -u Update/regenerate.
|
||||
|
||||
#
|
||||
# Here is where we put things
|
||||
|
||||
CSCOPE=cscope
|
||||
HOMEDIR=${HOME}/lib/cs
|
||||
|
||||
#set the default value for SYSDIR
|
||||
if [ -z "${SYSDIR}" ]; then
|
||||
SYSDIR=/usr/local/lib/cs
|
||||
echo setting default sysdir
|
||||
fi
|
||||
|
||||
#check that SYSDIR exists
|
||||
if [ ! -d ${SYSDIR} ]; then
|
||||
echo -n $SYSDIR does not exist.
|
||||
echo Please create the directory and set SYSDIR appropriately
|
||||
exit
|
||||
fi
|
||||
|
||||
# Check that cscope is in PATH
|
||||
type cscope 1>/dev/null 2>&1
|
||||
|
||||
if [ $? -ne 0 ]
|
||||
then
|
||||
echo "ERROR: cscope is not in \$PATH" >&2
|
||||
echo " Please set \$PATH correctly or make sure cscope is installed" >&2
|
||||
exit 1
|
||||
fi
|
||||
|
||||
# popup editor
|
||||
#XCS_EDITOR=${HOME}/bin/x_cscope_editor
|
||||
XCS_EDITOR=${HOME}/bin/xme
|
||||
if [ -n "$DISPLAY" -a -x ${XCS_EDITOR} ]
|
||||
then
|
||||
EDITOR=${XCS_EDITOR}
|
||||
export EDITOR
|
||||
fi
|
||||
unset XCS_EDITOR
|
||||
|
||||
#
|
||||
# Misc defaults
|
||||
|
||||
#FORCE=N
|
||||
#NOUPDATE=
|
||||
FORCE=Y # hops - default to force rather than query
|
||||
NOUPDATE=-d # hops - default to no update if files already exist
|
||||
QUICK=
|
||||
SPECDEST= # hops - query for files
|
||||
|
||||
#
|
||||
# Parse the command line
|
||||
|
||||
set -- `getopt xfqdu $*`
|
||||
|
||||
if [ $? -ne 0 ]
|
||||
then
|
||||
echo "Use: cs [-x] [-f] [-q] [-u]" >&2
|
||||
echo " -x debug on " >&2
|
||||
echo " -q quick Index - faster search but larger index" >&2
|
||||
echo " -f ask about about regeneration" >&2
|
||||
echo " -d don't update database (default)" >&2
|
||||
echo " -u update database" >&2
|
||||
echo " -s specify where files go" >&2
|
||||
exit 1
|
||||
fi
|
||||
|
||||
for arg
|
||||
do
|
||||
case $arg in
|
||||
-x ) set -x; shift ;;
|
||||
-f ) FORCE=N; NOUPDATE=; shift;;
|
||||
-q ) QUICK=-q; shift ;;
|
||||
-d ) NOUPDATE=-d; shift ;;
|
||||
-u ) NOUPDATE=; shift ;;
|
||||
-s ) SPECDEST=Y; shift ;;
|
||||
esac
|
||||
done
|
||||
|
||||
#
|
||||
# Here is the security hole. Execute whatever is needed for
|
||||
# this project. A per-project setup script may be available.
|
||||
|
||||
[ -x ./cscope.rc ] && {
|
||||
. ./cscope.rc
|
||||
}
|
||||
|
||||
#
|
||||
# We look hard for appropriate files to scope. We ignore items
|
||||
# containing "SCCS" assuming that these are directories of
|
||||
# source code control data.
|
||||
|
||||
create_list()
|
||||
{
|
||||
LIST=$1
|
||||
|
||||
if [ -f ${LIST} ]
|
||||
then
|
||||
[ -n "${NOUPDATE}" ] && return
|
||||
|
||||
if [ "${FORCE}" != "Y" ]
|
||||
then
|
||||
echo "\n${LIST}"
|
||||
echo "Update the library? <(Y)es, (N)o, (Q)uit> [n] \c"
|
||||
read x y
|
||||
case $x in
|
||||
[Yy]* ) ;;
|
||||
[Qq]* ) exit 1 ;;
|
||||
*) return ;;
|
||||
esac
|
||||
fi
|
||||
echo "Updating library:\n ${LIST} \c"
|
||||
else
|
||||
echo "Creating library:\n ${LIST} \c"
|
||||
fi
|
||||
|
||||
(
|
||||
find . -follow -type f \( -name \*.[sScChHlyG] -o \
|
||||
-name \*.asm -o \
|
||||
-name \*.cc -o \
|
||||
-name \*.cxx -o \
|
||||
-name \*.ccP -o \
|
||||
-name \*.hP -o \
|
||||
-name \*.inc -o \
|
||||
-name \*.ed -o \
|
||||
-name vuifile -o \
|
||||
-name Gensymvals -o \
|
||||
-name \[mM\]ake\* \) \
|
||||
-print
|
||||
) | grep -v SCCS | sort -u > ${LIST}
|
||||
|
||||
echo "\n`cat ${LIST} | wc -l` files listed"
|
||||
}
|
||||
|
||||
#
|
||||
# Expand the include file list into command line arguments
|
||||
|
||||
exp_inc()
|
||||
{
|
||||
theInc=$1
|
||||
|
||||
if [ -s "${theInc}" ]
|
||||
then
|
||||
for i in `cat ${theInc}`
|
||||
do
|
||||
echo "-I $i \c"
|
||||
done
|
||||
fi
|
||||
}
|
||||
|
||||
#
|
||||
# This routine does not return to the caller
|
||||
|
||||
do_cscope()
|
||||
{
|
||||
LIST=$1
|
||||
CSLIB=$2
|
||||
INC=$3
|
||||
shift;shift;shift
|
||||
ARGS="$*"
|
||||
|
||||
INCARGS=`exp_inc ${INC}`
|
||||
|
||||
echo "exec cscope"
|
||||
exec $CSCOPE ${ARGS} -p 2 ${INCARGS} -i ${LIST} -f ${CSLIB}
|
||||
echo "exec of $CSCOPE failed" >&2
|
||||
exit 1
|
||||
}
|
||||
|
||||
#
|
||||
# If we have existing libraries, we should use them.
|
||||
std_libs()
|
||||
{
|
||||
DIR=$1
|
||||
OUT=${DIR}/cscope.out
|
||||
LST=${DIR}/cscope.lst
|
||||
CSD=${DIR}/cscope.csd
|
||||
TMP=${DIR}/cscope.tmplst
|
||||
INC=${DIR}/cscope.inc
|
||||
QCK=${DIR}/cscope.out.po
|
||||
|
||||
[ -s ${QCK} ] && QUICK=-q
|
||||
|
||||
[ -f ${CSD} ] && {
|
||||
if [ "${FORCE}" = "Y" ]
|
||||
then
|
||||
do_cscope ${CSD} ${OUT} ${INC} ${QUICK}
|
||||
else
|
||||
do_cscope ${CSD} ${OUT} ${INC} ${QUICK} -d
|
||||
fi
|
||||
}
|
||||
|
||||
[ -f ${LST} ] && do_cscope ${LST} ${OUT} ${INC} ${QUICK} ${NOUPDATE}
|
||||
|
||||
[ -f ${TMP} ] && {
|
||||
create_list ${TMP}
|
||||
do_cscope ${TMP} ${OUT} ${INC} ${QUICK} ${NOUPDATE}
|
||||
}
|
||||
}
|
||||
|
||||
#
|
||||
# ######## main() #######
|
||||
|
||||
umask 0
|
||||
PWD=`pwd`
|
||||
|
||||
umask 02
|
||||
|
||||
#
|
||||
# Check for existing libraries
|
||||
|
||||
std_libs $PWD
|
||||
std_libs ${HOMEDIR}$PWD
|
||||
std_libs ${SYSDIR}$PWD
|
||||
|
||||
#
|
||||
# We may need to create one for this area
|
||||
|
||||
DIR=$PWD
|
||||
if [ ! -n "${NOUPDATE}" -o -n "${SPECDEST}" ] ; then
|
||||
echo "Create new library? <(L)ocal, (H)ome, (S)ystem, (Q)uit> [q] \c"
|
||||
read x y
|
||||
case $x in
|
||||
[Ll]* ) DIR=$PWD ;;
|
||||
[Hh]* ) DIR=${HOMEDIR}$PWD ;;
|
||||
[Ss]* ) DIR=${SYSDIR}$PWD ;;
|
||||
*) exit 1 ;;
|
||||
esac
|
||||
fi
|
||||
[ -d $DIR ] || {
|
||||
mkdir -p $DIR || exit $?
|
||||
}
|
||||
|
||||
OUT=${DIR}/cscope.out
|
||||
TMP=${DIR}/cscope.tmplst
|
||||
INC=${DIR}/cscope.inc
|
||||
|
||||
create_list ${TMP}
|
||||
do_cscope ${TMP} ${OUT} ${INC} ${QUICK}
|
||||
|
Reference in New Issue
Block a user