167 lines
3.8 KiB
Text
167 lines
3.8 KiB
Text
|
#! /bin/sh
|
||
|
###############################################################################
|
||
|
#
|
||
|
# File: cscope-indexer
|
||
|
# RCS: $Header: /cvsroot/cscope/cscope/contrib/xcscope/cscope-indexer,v 1.2 2001/06/28 04:39:47 darrylo Exp $
|
||
|
# Description: Script to index files for cscope
|
||
|
#
|
||
|
# This script generates a list of files to index
|
||
|
# (cscope.out), which is then (optionally) used to
|
||
|
# generate a cscope database. You can use this script
|
||
|
# to just build a list of files, or it can be used to
|
||
|
# build a list and database. This script is not used to
|
||
|
# just build a database (skipping the list of files
|
||
|
# step), as this can be simply done by just calling
|
||
|
# "cscope -b".
|
||
|
#
|
||
|
# Normally, cscope will do its own indexing, but this
|
||
|
# script can be used to force indexing. This is useful
|
||
|
# if you need to recurse into subdirectories, or have
|
||
|
# many files to index (you can run this script from a
|
||
|
# cron job, during the night). It is especially useful
|
||
|
# for large projects, which can contstantly have source
|
||
|
# files added and deleted; by using this script, the
|
||
|
# changing sources files are automatically handled.
|
||
|
#
|
||
|
# Currently, any paths containing "/CVS/" or "/RCS/" are
|
||
|
# stripped out (ignored).
|
||
|
#
|
||
|
# This script is written to use only basic shell features, as
|
||
|
# not all shells have advanced features.
|
||
|
#
|
||
|
# Author: Darryl Okahata
|
||
|
# Created: Thu Apr 27 17:12:14 2000
|
||
|
# Modified: Tue Jun 19 09:47:45 2001 (Darryl Okahata) darrylo@soco.agilent.com
|
||
|
# Language: Shell-script
|
||
|
# Package: N/A
|
||
|
# Status: Experimental
|
||
|
#
|
||
|
# (C) Copyright 2000, Darryl Okahata, all rights reserved.
|
||
|
#
|
||
|
###############################################################################
|
||
|
#
|
||
|
# Usage:
|
||
|
#
|
||
|
# cscope-indexer [ -v ] [-f database_file ] [-i list_file ] [ -l ] [ -r ]
|
||
|
#
|
||
|
# where:
|
||
|
#
|
||
|
# -f database_file
|
||
|
# Specifies the cscope database file (default: cscope.out).
|
||
|
#
|
||
|
# -i list_file
|
||
|
# Specifies the name of the file into which the list of files
|
||
|
# to index is placed (default: cscope.files).
|
||
|
#
|
||
|
# -l
|
||
|
# Suppress the generation/updating of the cscope database
|
||
|
# file. Only a list of files is generated.
|
||
|
#
|
||
|
# -r
|
||
|
# Recurse into subdirectories to locate files to index.
|
||
|
# Without this option, only the current directory is
|
||
|
# searched.
|
||
|
#
|
||
|
# -v
|
||
|
# Be verbose. Output simple progress messages.
|
||
|
#
|
||
|
#
|
||
|
###############################################################################
|
||
|
set -e
|
||
|
|
||
|
# May have to edit this:
|
||
|
PATH="/usr/local/bin:/sbin:/usr/sbin:/bin:/usr/bin:$PATH"
|
||
|
export PATH
|
||
|
|
||
|
LIST_ONLY=
|
||
|
DIR='.'
|
||
|
LIST_FILE='cscope.files'
|
||
|
DATABASE_FILE='cscope.out'
|
||
|
RECURSE=
|
||
|
VERBOSE=
|
||
|
export DIR RECURSE # Need to pass these to subprocesses
|
||
|
|
||
|
while [ -n "$1" ]
|
||
|
do
|
||
|
case "$1" in
|
||
|
-f)
|
||
|
if [ "X$2" = "X" ]
|
||
|
then
|
||
|
echo "$0: No database file specified" >&2
|
||
|
exit 1
|
||
|
fi
|
||
|
DATABASE_FILE="$2"
|
||
|
shift
|
||
|
;;
|
||
|
-i)
|
||
|
if [ "X$2" = "X" ]
|
||
|
then
|
||
|
echo "$0: No list file specified" >&2
|
||
|
exit 1
|
||
|
fi
|
||
|
LIST_FILE="$2"
|
||
|
shift
|
||
|
;;
|
||
|
-l)
|
||
|
LIST_ONLY=1
|
||
|
;;
|
||
|
-r)
|
||
|
RECURSE=1
|
||
|
;;
|
||
|
-v)
|
||
|
VERBOSE=1
|
||
|
;;
|
||
|
*)
|
||
|
DIR="$1"
|
||
|
;;
|
||
|
esac
|
||
|
shift
|
||
|
done
|
||
|
|
||
|
cd $DIR
|
||
|
|
||
|
if [ "X$VERBOSE" != "X" ]
|
||
|
then
|
||
|
echo "Creating list of files to index ..."
|
||
|
fi
|
||
|
|
||
|
(
|
||
|
if [ "X$RECURSE" = "X" ]
|
||
|
then
|
||
|
# Ugly, inefficient, but it works.
|
||
|
for f in *
|
||
|
do
|
||
|
echo "$DIR/$f"
|
||
|
done
|
||
|
else
|
||
|
find $DIR \( -type f -o -type l \)
|
||
|
fi
|
||
|
) | \
|
||
|
egrep -i '\.([chly](xx|pp)*|cc|hh)$' | \
|
||
|
sed -e '/\/CVS\//d' -e '/\/RCS\//d' -e 's/^\.\///' | \
|
||
|
sort > $LIST_FILE
|
||
|
|
||
|
if [ "X$VERBOSE" != "X" ]
|
||
|
then
|
||
|
echo "Creating list of files to index ... done"
|
||
|
fi
|
||
|
|
||
|
if [ "X$LIST_ONLY" != "X" ]
|
||
|
then
|
||
|
exit 0
|
||
|
fi
|
||
|
|
||
|
if [ "X$VERBOSE" != "X" ]
|
||
|
then
|
||
|
echo "Indexing files ..."
|
||
|
fi
|
||
|
|
||
|
cscope -b -i $LIST_FILE -f $DATABASE_FILE
|
||
|
|
||
|
if [ "X$VERBOSE" != "X" ]
|
||
|
then
|
||
|
echo "Indexing files ... done"
|
||
|
fi
|
||
|
|
||
|
exit 0
|