update cscope from 15.7a to 15.8a and add Exuberant Ctags version58
6
vim_plugins_src/cscope-15.8a/contrib/Makefile.am
Normal file
@ -0,0 +1,6 @@
|
||||
## Process this file with automake to produce Makefile.in
|
||||
|
||||
bin_SCRIPTS = ocs
|
||||
|
||||
EXTRA_DIST = README ocs cctree.txt cctree.vim xcscope webcscope
|
||||
|
406
vim_plugins_src/cscope-15.8a/contrib/Makefile.in
Normal file
@ -0,0 +1,406 @@
|
||||
# Makefile.in generated by automake 1.11.3 from Makefile.am.
|
||||
# @configure_input@
|
||||
|
||||
# Copyright (C) 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002,
|
||||
# 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011 Free Software
|
||||
# Foundation, Inc.
|
||||
# This Makefile.in is free software; the Free Software Foundation
|
||||
# gives unlimited permission to copy and/or distribute it,
|
||||
# with or without modifications, as long as this notice is preserved.
|
||||
|
||||
# This program is distributed in the hope that it will be useful,
|
||||
# but WITHOUT ANY WARRANTY, to the extent permitted by law; without
|
||||
# even the implied warranty of MERCHANTABILITY or FITNESS FOR A
|
||||
# PARTICULAR PURPOSE.
|
||||
|
||||
@SET_MAKE@
|
||||
|
||||
VPATH = @srcdir@
|
||||
pkgdatadir = $(datadir)/@PACKAGE@
|
||||
pkgincludedir = $(includedir)/@PACKAGE@
|
||||
pkglibdir = $(libdir)/@PACKAGE@
|
||||
pkglibexecdir = $(libexecdir)/@PACKAGE@
|
||||
am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd
|
||||
install_sh_DATA = $(install_sh) -c -m 644
|
||||
install_sh_PROGRAM = $(install_sh) -c
|
||||
install_sh_SCRIPT = $(install_sh) -c
|
||||
INSTALL_HEADER = $(INSTALL_DATA)
|
||||
transform = $(program_transform_name)
|
||||
NORMAL_INSTALL = :
|
||||
PRE_INSTALL = :
|
||||
POST_INSTALL = :
|
||||
NORMAL_UNINSTALL = :
|
||||
PRE_UNINSTALL = :
|
||||
POST_UNINSTALL = :
|
||||
build_triplet = @build@
|
||||
host_triplet = @host@
|
||||
subdir = contrib
|
||||
DIST_COMMON = README $(srcdir)/Makefile.am $(srcdir)/Makefile.in
|
||||
ACLOCAL_M4 = $(top_srcdir)/aclocal.m4
|
||||
am__aclocal_m4_deps = $(top_srcdir)/acinclude.m4 \
|
||||
$(top_srcdir)/configure.in
|
||||
am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \
|
||||
$(ACLOCAL_M4)
|
||||
mkinstalldirs = $(SHELL) $(top_srcdir)/mkinstalldirs
|
||||
CONFIG_HEADER = $(top_builddir)/config.h
|
||||
CONFIG_CLEAN_FILES =
|
||||
CONFIG_CLEAN_VPATH_FILES =
|
||||
am__vpath_adj_setup = srcdirstrip=`echo "$(srcdir)" | sed 's|.|.|g'`;
|
||||
am__vpath_adj = case $$p in \
|
||||
$(srcdir)/*) f=`echo "$$p" | sed "s|^$$srcdirstrip/||"`;; \
|
||||
*) f=$$p;; \
|
||||
esac;
|
||||
am__strip_dir = f=`echo $$p | sed -e 's|^.*/||'`;
|
||||
am__install_max = 40
|
||||
am__nobase_strip_setup = \
|
||||
srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*|]/\\\\&/g'`
|
||||
am__nobase_strip = \
|
||||
for p in $$list; do echo "$$p"; done | sed -e "s|$$srcdirstrip/||"
|
||||
am__nobase_list = $(am__nobase_strip_setup); \
|
||||
for p in $$list; do echo "$$p $$p"; done | \
|
||||
sed "s| $$srcdirstrip/| |;"' / .*\//!s/ .*/ ./; s,\( .*\)/[^/]*$$,\1,' | \
|
||||
$(AWK) 'BEGIN { files["."] = "" } { files[$$2] = files[$$2] " " $$1; \
|
||||
if (++n[$$2] == $(am__install_max)) \
|
||||
{ print $$2, files[$$2]; n[$$2] = 0; files[$$2] = "" } } \
|
||||
END { for (dir in files) print dir, files[dir] }'
|
||||
am__base_list = \
|
||||
sed '$$!N;$$!N;$$!N;$$!N;$$!N;$$!N;$$!N;s/\n/ /g' | \
|
||||
sed '$$!N;$$!N;$$!N;$$!N;s/\n/ /g'
|
||||
am__uninstall_files_from_dir = { \
|
||||
test -z "$$files" \
|
||||
|| { test ! -d "$$dir" && test ! -f "$$dir" && test ! -r "$$dir"; } \
|
||||
|| { echo " ( cd '$$dir' && rm -f" $$files ")"; \
|
||||
$(am__cd) "$$dir" && rm -f $$files; }; \
|
||||
}
|
||||
am__installdirs = "$(DESTDIR)$(bindir)"
|
||||
SCRIPTS = $(bin_SCRIPTS)
|
||||
SOURCES =
|
||||
DIST_SOURCES =
|
||||
DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST)
|
||||
ACLOCAL = @ACLOCAL@
|
||||
AMTAR = @AMTAR@
|
||||
AUTOCONF = @AUTOCONF@
|
||||
AUTOHEADER = @AUTOHEADER@
|
||||
AUTOMAKE = @AUTOMAKE@
|
||||
AWK = @AWK@
|
||||
CC = @CC@
|
||||
CCDEPMODE = @CCDEPMODE@
|
||||
CFLAGS = @CFLAGS@
|
||||
CPP = @CPP@
|
||||
CPPFLAGS = @CPPFLAGS@
|
||||
CURSES_INCLUDEDIR = @CURSES_INCLUDEDIR@
|
||||
CURSES_LIBS = @CURSES_LIBS@
|
||||
CYGPATH_W = @CYGPATH_W@
|
||||
DEFS = @DEFS@
|
||||
DEPDIR = @DEPDIR@
|
||||
ECHO_C = @ECHO_C@
|
||||
ECHO_N = @ECHO_N@
|
||||
ECHO_T = @ECHO_T@
|
||||
EGREP = @EGREP@
|
||||
EXEEXT = @EXEEXT@
|
||||
GREP = @GREP@
|
||||
INSTALL = @INSTALL@
|
||||
INSTALL_DATA = @INSTALL_DATA@
|
||||
INSTALL_PROGRAM = @INSTALL_PROGRAM@
|
||||
INSTALL_SCRIPT = @INSTALL_SCRIPT@
|
||||
INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@
|
||||
LDFLAGS = @LDFLAGS@
|
||||
LEX = @LEX@
|
||||
LEXLIB = @LEXLIB@
|
||||
LEX_OUTPUT_ROOT = @LEX_OUTPUT_ROOT@
|
||||
LIBOBJS = @LIBOBJS@
|
||||
LIBS = @LIBS@
|
||||
LTLIBOBJS = @LTLIBOBJS@
|
||||
MAKEINFO = @MAKEINFO@
|
||||
MKDIR_P = @MKDIR_P@
|
||||
OBJEXT = @OBJEXT@
|
||||
PACKAGE = @PACKAGE@
|
||||
PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@
|
||||
PACKAGE_NAME = @PACKAGE_NAME@
|
||||
PACKAGE_STRING = @PACKAGE_STRING@
|
||||
PACKAGE_TARNAME = @PACKAGE_TARNAME@
|
||||
PACKAGE_URL = @PACKAGE_URL@
|
||||
PACKAGE_VERSION = @PACKAGE_VERSION@
|
||||
PATH_SEPARATOR = @PATH_SEPARATOR@
|
||||
SET_MAKE = @SET_MAKE@
|
||||
SHELL = @SHELL@
|
||||
STRIP = @STRIP@
|
||||
VERSION = @VERSION@
|
||||
YACC = @YACC@
|
||||
YFLAGS = @YFLAGS@
|
||||
abs_builddir = @abs_builddir@
|
||||
abs_srcdir = @abs_srcdir@
|
||||
abs_top_builddir = @abs_top_builddir@
|
||||
abs_top_srcdir = @abs_top_srcdir@
|
||||
ac_ct_CC = @ac_ct_CC@
|
||||
am__include = @am__include@
|
||||
am__leading_dot = @am__leading_dot@
|
||||
am__quote = @am__quote@
|
||||
am__tar = @am__tar@
|
||||
am__untar = @am__untar@
|
||||
bindir = @bindir@
|
||||
build = @build@
|
||||
build_alias = @build_alias@
|
||||
build_cpu = @build_cpu@
|
||||
build_os = @build_os@
|
||||
build_vendor = @build_vendor@
|
||||
builddir = @builddir@
|
||||
datadir = @datadir@
|
||||
datarootdir = @datarootdir@
|
||||
docdir = @docdir@
|
||||
dvidir = @dvidir@
|
||||
exec_prefix = @exec_prefix@
|
||||
gnome1 = @gnome1@
|
||||
gnome2 = @gnome2@
|
||||
host = @host@
|
||||
host_alias = @host_alias@
|
||||
host_cpu = @host_cpu@
|
||||
host_os = @host_os@
|
||||
host_vendor = @host_vendor@
|
||||
htmldir = @htmldir@
|
||||
includedir = @includedir@
|
||||
infodir = @infodir@
|
||||
install_sh = @install_sh@
|
||||
libdir = @libdir@
|
||||
libexecdir = @libexecdir@
|
||||
localedir = @localedir@
|
||||
localstatedir = @localstatedir@
|
||||
mandir = @mandir@
|
||||
mkdir_p = @mkdir_p@
|
||||
oldincludedir = @oldincludedir@
|
||||
pdfdir = @pdfdir@
|
||||
prefix = @prefix@
|
||||
program_transform_name = @program_transform_name@
|
||||
psdir = @psdir@
|
||||
sbindir = @sbindir@
|
||||
sharedstatedir = @sharedstatedir@
|
||||
srcdir = @srcdir@
|
||||
sysconfdir = @sysconfdir@
|
||||
target_alias = @target_alias@
|
||||
top_build_prefix = @top_build_prefix@
|
||||
top_builddir = @top_builddir@
|
||||
top_srcdir = @top_srcdir@
|
||||
bin_SCRIPTS = ocs
|
||||
EXTRA_DIST = README ocs cctree.txt cctree.vim xcscope webcscope
|
||||
all: all-am
|
||||
|
||||
.SUFFIXES:
|
||||
$(srcdir)/Makefile.in: $(srcdir)/Makefile.am $(am__configure_deps)
|
||||
@for dep in $?; do \
|
||||
case '$(am__configure_deps)' in \
|
||||
*$$dep*) \
|
||||
( cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh ) \
|
||||
&& { if test -f $@; then exit 0; else break; fi; }; \
|
||||
exit 1;; \
|
||||
esac; \
|
||||
done; \
|
||||
echo ' cd $(top_srcdir) && $(AUTOMAKE) --gnu contrib/Makefile'; \
|
||||
$(am__cd) $(top_srcdir) && \
|
||||
$(AUTOMAKE) --gnu contrib/Makefile
|
||||
.PRECIOUS: Makefile
|
||||
Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status
|
||||
@case '$?' in \
|
||||
*config.status*) \
|
||||
cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh;; \
|
||||
*) \
|
||||
echo ' cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe)'; \
|
||||
cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe);; \
|
||||
esac;
|
||||
|
||||
$(top_builddir)/config.status: $(top_srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES)
|
||||
cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
|
||||
|
||||
$(top_srcdir)/configure: $(am__configure_deps)
|
||||
cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
|
||||
$(ACLOCAL_M4): $(am__aclocal_m4_deps)
|
||||
cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
|
||||
$(am__aclocal_m4_deps):
|
||||
install-binSCRIPTS: $(bin_SCRIPTS)
|
||||
@$(NORMAL_INSTALL)
|
||||
test -z "$(bindir)" || $(MKDIR_P) "$(DESTDIR)$(bindir)"
|
||||
@list='$(bin_SCRIPTS)'; test -n "$(bindir)" || list=; \
|
||||
for p in $$list; do \
|
||||
if test -f "$$p"; then d=; else d="$(srcdir)/"; fi; \
|
||||
if test -f "$$d$$p"; then echo "$$d$$p"; echo "$$p"; else :; fi; \
|
||||
done | \
|
||||
sed -e 'p;s,.*/,,;n' \
|
||||
-e 'h;s|.*|.|' \
|
||||
-e 'p;x;s,.*/,,;$(transform)' | sed 'N;N;N;s,\n, ,g' | \
|
||||
$(AWK) 'BEGIN { files["."] = ""; dirs["."] = 1; } \
|
||||
{ d=$$3; if (dirs[d] != 1) { print "d", d; dirs[d] = 1 } \
|
||||
if ($$2 == $$4) { files[d] = files[d] " " $$1; \
|
||||
if (++n[d] == $(am__install_max)) { \
|
||||
print "f", d, files[d]; n[d] = 0; files[d] = "" } } \
|
||||
else { print "f", d "/" $$4, $$1 } } \
|
||||
END { for (d in files) print "f", d, files[d] }' | \
|
||||
while read type dir files; do \
|
||||
if test "$$dir" = .; then dir=; else dir=/$$dir; fi; \
|
||||
test -z "$$files" || { \
|
||||
echo " $(INSTALL_SCRIPT) $$files '$(DESTDIR)$(bindir)$$dir'"; \
|
||||
$(INSTALL_SCRIPT) $$files "$(DESTDIR)$(bindir)$$dir" || exit $$?; \
|
||||
} \
|
||||
; done
|
||||
|
||||
uninstall-binSCRIPTS:
|
||||
@$(NORMAL_UNINSTALL)
|
||||
@list='$(bin_SCRIPTS)'; test -n "$(bindir)" || exit 0; \
|
||||
files=`for p in $$list; do echo "$$p"; done | \
|
||||
sed -e 's,.*/,,;$(transform)'`; \
|
||||
dir='$(DESTDIR)$(bindir)'; $(am__uninstall_files_from_dir)
|
||||
tags: TAGS
|
||||
TAGS:
|
||||
|
||||
ctags: CTAGS
|
||||
CTAGS:
|
||||
|
||||
|
||||
distdir: $(DISTFILES)
|
||||
@srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \
|
||||
topsrcdirstrip=`echo "$(top_srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \
|
||||
list='$(DISTFILES)'; \
|
||||
dist_files=`for file in $$list; do echo $$file; done | \
|
||||
sed -e "s|^$$srcdirstrip/||;t" \
|
||||
-e "s|^$$topsrcdirstrip/|$(top_builddir)/|;t"`; \
|
||||
case $$dist_files in \
|
||||
*/*) $(MKDIR_P) `echo "$$dist_files" | \
|
||||
sed '/\//!d;s|^|$(distdir)/|;s,/[^/]*$$,,' | \
|
||||
sort -u` ;; \
|
||||
esac; \
|
||||
for file in $$dist_files; do \
|
||||
if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \
|
||||
if test -d $$d/$$file; then \
|
||||
dir=`echo "/$$file" | sed -e 's,/[^/]*$$,,'`; \
|
||||
if test -d "$(distdir)/$$file"; then \
|
||||
find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \
|
||||
fi; \
|
||||
if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \
|
||||
cp -fpR $(srcdir)/$$file "$(distdir)$$dir" || exit 1; \
|
||||
find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \
|
||||
fi; \
|
||||
cp -fpR $$d/$$file "$(distdir)$$dir" || exit 1; \
|
||||
else \
|
||||
test -f "$(distdir)/$$file" \
|
||||
|| cp -p $$d/$$file "$(distdir)/$$file" \
|
||||
|| exit 1; \
|
||||
fi; \
|
||||
done
|
||||
check-am: all-am
|
||||
check: check-am
|
||||
all-am: Makefile $(SCRIPTS)
|
||||
installdirs:
|
||||
for dir in "$(DESTDIR)$(bindir)"; do \
|
||||
test -z "$$dir" || $(MKDIR_P) "$$dir"; \
|
||||
done
|
||||
install: install-am
|
||||
install-exec: install-exec-am
|
||||
install-data: install-data-am
|
||||
uninstall: uninstall-am
|
||||
|
||||
install-am: all-am
|
||||
@$(MAKE) $(AM_MAKEFLAGS) install-exec-am install-data-am
|
||||
|
||||
installcheck: installcheck-am
|
||||
install-strip:
|
||||
if test -z '$(STRIP)'; then \
|
||||
$(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \
|
||||
install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \
|
||||
install; \
|
||||
else \
|
||||
$(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \
|
||||
install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \
|
||||
"INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'" install; \
|
||||
fi
|
||||
mostlyclean-generic:
|
||||
|
||||
clean-generic:
|
||||
|
||||
distclean-generic:
|
||||
-test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_FILES)
|
||||
-test . = "$(srcdir)" || test -z "$(CONFIG_CLEAN_VPATH_FILES)" || rm -f $(CONFIG_CLEAN_VPATH_FILES)
|
||||
|
||||
maintainer-clean-generic:
|
||||
@echo "This command is intended for maintainers to use"
|
||||
@echo "it deletes files that may require special tools to rebuild."
|
||||
clean: clean-am
|
||||
|
||||
clean-am: clean-generic mostlyclean-am
|
||||
|
||||
distclean: distclean-am
|
||||
-rm -f Makefile
|
||||
distclean-am: clean-am distclean-generic
|
||||
|
||||
dvi: dvi-am
|
||||
|
||||
dvi-am:
|
||||
|
||||
html: html-am
|
||||
|
||||
html-am:
|
||||
|
||||
info: info-am
|
||||
|
||||
info-am:
|
||||
|
||||
install-data-am:
|
||||
|
||||
install-dvi: install-dvi-am
|
||||
|
||||
install-dvi-am:
|
||||
|
||||
install-exec-am: install-binSCRIPTS
|
||||
|
||||
install-html: install-html-am
|
||||
|
||||
install-html-am:
|
||||
|
||||
install-info: install-info-am
|
||||
|
||||
install-info-am:
|
||||
|
||||
install-man:
|
||||
|
||||
install-pdf: install-pdf-am
|
||||
|
||||
install-pdf-am:
|
||||
|
||||
install-ps: install-ps-am
|
||||
|
||||
install-ps-am:
|
||||
|
||||
installcheck-am:
|
||||
|
||||
maintainer-clean: maintainer-clean-am
|
||||
-rm -f Makefile
|
||||
maintainer-clean-am: distclean-am maintainer-clean-generic
|
||||
|
||||
mostlyclean: mostlyclean-am
|
||||
|
||||
mostlyclean-am: mostlyclean-generic
|
||||
|
||||
pdf: pdf-am
|
||||
|
||||
pdf-am:
|
||||
|
||||
ps: ps-am
|
||||
|
||||
ps-am:
|
||||
|
||||
uninstall-am: uninstall-binSCRIPTS
|
||||
|
||||
.MAKE: install-am install-strip
|
||||
|
||||
.PHONY: all all-am check check-am clean clean-generic distclean \
|
||||
distclean-generic distdir dvi dvi-am html html-am info info-am \
|
||||
install install-am install-binSCRIPTS install-data \
|
||||
install-data-am install-dvi install-dvi-am install-exec \
|
||||
install-exec-am install-html install-html-am install-info \
|
||||
install-info-am install-man install-pdf install-pdf-am \
|
||||
install-ps install-ps-am install-strip installcheck \
|
||||
installcheck-am installdirs maintainer-clean \
|
||||
maintainer-clean-generic mostlyclean mostlyclean-generic pdf \
|
||||
pdf-am ps ps-am uninstall uninstall-am uninstall-binSCRIPTS
|
||||
|
||||
|
||||
# Tell versions [3.59,3.63) of GNU make to not export all variables.
|
||||
# Otherwise a system limit (for SysV at least) may be exceeded.
|
||||
.NOEXPORT:
|
14
vim_plugins_src/cscope-15.8a/contrib/README
Normal file
@ -0,0 +1,14 @@
|
||||
Contributed addons and wrappers for cscope
|
||||
$Id: README,v 1.4 2011/05/26 17:47:25 nhorman Exp $
|
||||
|
||||
ocs - wrapper for cscope providing database generation through recursive
|
||||
directory set (among other things) - docced in script itself.
|
||||
contributed from SCO osr5.
|
||||
|
||||
webcscope - a web cgi interface to cscope. Contributed by Ragho Mahalingam,
|
||||
using code from Dmitry Obukhovi and Steven E. Brenner.
|
||||
|
||||
xcscope - An (X)Emacs interface to cscope.
|
||||
|
||||
cctree.vim - A Vim plugin to allow you to do some powerful searching of cscope
|
||||
databases from within vi, see cctree.txt for usage details
|
537
vim_plugins_src/cscope-15.8a/contrib/cctree.txt
Normal file
@ -0,0 +1,537 @@
|
||||
*CCTree.txt* Plugin for C Call-Tree Explorer *CCTree*
|
||||
|
||||
Author: Hari Rangarajan (First.Last AT gmail DOT com)
|
||||
Last Change: 20 May 2011
|
||||
|
||||
CCTree version 1.51
|
||||
|
||||
For Vim version 7.0 and above
|
||||
|
||||
==============================================================================
|
||||
|
||||
1. Overview |CCTree-overview|
|
||||
2. Downloads |CCTree-download|
|
||||
3. Installation |CCTree-installation|
|
||||
4. Configuration |CCTree-configuration|
|
||||
5. Features |CCTree-features|
|
||||
6. Limitations |CCTree-limitations|
|
||||
7. FAQ & TIPS |CCTree-faq|
|
||||
8. History |CCTree-history|
|
||||
9. Thanks |CCTree-thanks|
|
||||
|
||||
==============================================================================
|
||||
1. Overview~
|
||||
*CCTree-overview*
|
||||
|
||||
Plugin generates dependency-trees for symbols using a cscope database in Vim.
|
||||
Basic cross-referencing includes functions and macros. Enhanced symbol
|
||||
processing covers macros, typedefs, enums, and global variables.
|
||||
|
||||
Requires Cscope and works best with C code.
|
||||
|
||||
==============================================================================
|
||||
2. Downloads~
|
||||
*CCTree-download*
|
||||
|
||||
You can download the latest release of the script from this url :
|
||||
http://www.vim.org/scripts/script.php?script_id=2368
|
||||
|
||||
|
||||
Cscope packages can be found here:
|
||||
http://cscope.sourceforge.net/
|
||||
http://code.google.com/p/cscope-win32/
|
||||
|
||||
|
||||
==============================================================================
|
||||
3. Installation~
|
||||
*CCTree-installation*
|
||||
|
||||
Copy this file to ~/.vim/plugins/ or to /vimfiles/plugins/ (on Win32
|
||||
platforms)
|
||||
|
||||
It should also be possible to load it as a filetype plugin ~/.vim/ftplugin/c/
|
||||
Need to set :filetype plugin on
|
||||
|
||||
|
||||
==============================================================================
|
||||
CONFIGURATION *CCTree-configuration*
|
||||
4. Options~
|
||||
|
||||
You can customize behavior by changing the following variable settings
|
||||
|
||||
4.1.1 Cscope Symbol Database~
|
||||
*CCTreeCscopeDb*
|
||||
|
||||
Cscope database file, g:CCTreeCscopeDb = "cscope.out"
|
||||
|
||||
4.1.2 Call-tree Depth~
|
||||
*CCTreeRecursiveDepth*
|
||||
Maximum call levels, g:CCTreeRecursiveDepth = 3
|
||||
|
||||
4.1.3 Call-tree Minimum Visible Depth~
|
||||
*CCTreeMinVisibleDepth*
|
||||
Maximum visible(unfolded) level, g:CCTreeMinVisibleDepth = 3
|
||||
|
||||
4.1.4 Call-tree window display~
|
||||
|
||||
4.4.1 Orientation~
|
||||
*CCTreeOrientation*
|
||||
Orientation of window, g:CCTreeOrientation = "leftabove"
|
||||
(standard vim options for split: [right|left][above|below])
|
||||
|
||||
4.5 Direction~
|
||||
*CCTreeWindowVertical*
|
||||
Use Vertical window, g:CCTreeWindowVertical = 1
|
||||
|
||||
4.5.1 Dimensions~
|
||||
|
||||
These settings determine the layout of the CCTree preview window.
|
||||
|
||||
4.5.2 Horizontal Window Settings~
|
||||
*CCTreeWindowHeight*
|
||||
Horizontal window, g:CCTreeWindowHeight, default is -1.
|
||||
|
||||
4.5.2 Vertical Window Settings~
|
||||
*CCTreeWindowMinWidth*
|
||||
*CCTreeWindowWidth*
|
||||
Minimum width for window, g:CCTreeWindowMinWidth = 40.
|
||||
g:CCTreeWindowWidth = -1, auto-select best width to fit.
|
||||
|
||||
|
||||
4.6 Call-tree display format~
|
||||
*CCTreeDisplayMode*
|
||||
Display format, g:CCTreeDisplayMode, default: 1
|
||||
|
||||
Values: 1 -- Ultra-compact (takes minimum screen width)
|
||||
2 -- Compact (Takes little more space)
|
||||
3 -- Wide (Takes copious amounts of space)
|
||||
|
||||
For vertical splits, 1 and 2 are good, while 3 is good for horizontal
|
||||
displays.
|
||||
|
||||
4.7. Dynamic Call-tree highlighting~
|
||||
*CCTreeHilightCallTree*
|
||||
|
||||
Enable/disable dynamic call-tree highlighting, default: 1
|
||||
|
||||
|
||||
4.7.1 Syntax items~
|
||||
*CCTreeSymbol* *CCTreeHiSymbol*
|
||||
CCTreeSymbol is the symbol name.
|
||||
CCTreeHiSymbol is the highlighted call tree functions.
|
||||
|
||||
*CCTreeMarkers* *CCTreeHiMarkers*
|
||||
CCTreeMarkers include "|","+--->".
|
||||
CCTreeHiMarkers is the same as CCTreeMarkers except these denote the
|
||||
highlighted call-tree.
|
||||
|
||||
|
||||
|
||||
==============================================================================
|
||||
COMMAND LIST *CCTree-commands-list*
|
||||
|
||||
Database Management~
|
||||
CCTreeLoadDB <dbname>
|
||||
CCTreeAppendDB <dbname>
|
||||
CCTreeUnLoadDB
|
||||
CCTreeShowLoadedDBs
|
||||
Refer to |CCTree-usage|
|
||||
|
||||
Native Xref Database~
|
||||
CCTreeLoadXRefDB <dbname>
|
||||
CCTreeSaveXRefDB <dbname>
|
||||
|
||||
Refer to |CCTree-fast-loading|
|
||||
|
||||
Symbol tracing~
|
||||
CCTreeTraceForward <symbolname>
|
||||
CCTreeTraceReverse <symbolname>
|
||||
CCTreeRecurseDepthPlus
|
||||
CCTreeRecurseDepthMinus
|
||||
Refer to |CCTree-explore-source|
|
||||
Trace Management~
|
||||
CCTreeWindowSaveCopy
|
||||
CCTreeWindowHiCallTree
|
||||
Refer to |CCTree-preview-window|
|
||||
|
||||
Dynamic configuration~
|
||||
CCTreeOptsEnable <option> (<tab> for auto-complete)
|
||||
CCTreeOptsDisable <option> (<tab> for auto-complete)
|
||||
CCTreeOptsToggle <option> (<tab> for auto-complete)
|
||||
Options~
|
||||
DynamicTreeHiLights: Control dynamic tree highlighting
|
||||
UseUnicodeSymbols: Use of UTF-8 special characters for tree
|
||||
UseConceal: Use (+Conceal) feature instead of 'ignore'
|
||||
syntax highlighting. Allows CCTree window
|
||||
to be exported in HTML without syntax markup
|
||||
characters. (Vim 7.3+ only)
|
||||
*CCTree-Enhanced-Symbol-Processing*
|
||||
EnhancedSymbolProcessing: Cross-reference enums, macros,
|
||||
global variables, typedefs (WARNING: Database
|
||||
processing speeds will be slow).
|
||||
|
||||
SHORTCUT KEYS *CCTree-Key-Map*
|
||||
Default Mappings~
|
||||
*CCTree-Default-Key-Map*
|
||||
Get reverse call tree for symbol <C-\><
|
||||
Get forward call tree for symbol <C-\>>
|
||||
Increase depth of tree and update <C-\>=
|
||||
Decrease depth of tree and update <C-\>-
|
||||
|
||||
Open symbol in other window <CR>
|
||||
Preview symbol in other window <Ctrl-P>
|
||||
|
||||
Save copy of preview window <C-\>y
|
||||
Highlight current call-tree flow <C-l>
|
||||
Compress(Fold) call tree view zs
|
||||
(This is useful for viewing long
|
||||
call trees which span across
|
||||
multiple pages)
|
||||
|
||||
Custom user-mappings
|
||||
*CCTree-Custom-Key-Map*
|
||||
Users can custom-map the short-cut keys by
|
||||
overriding the following variables in their
|
||||
Vim start-up configuration
|
||||
>
|
||||
let g:CCTreeKeyTraceForwardTree = '<C-\>>'
|
||||
let g:CCTreeKeyTraceReverseTree = '<C-\><'
|
||||
let g:CCTreeKeyHilightTree = '<C-l>' " Static highlighting
|
||||
let g:CCTreeKeySaveWindow = '<C-\>y'
|
||||
let g:CCTreeKeyToggleWindow = '<C-\>w'
|
||||
let g:CCTreeKeyCompressTree = 'zs' " Compress call-tree
|
||||
let g:CCTreeKeyDepthPlus = '<C-\>='
|
||||
let g:CCTreeKeyDepthMinus = '<C-\>-'
|
||||
<
|
||||
|
||||
==============================================================================
|
||||
FEATURES *CCTree-features*
|
||||
|
||||
5.1. Symbol database~
|
||||
*CCTree-usage*
|
||||
Build cscope database, for example:
|
||||
> cscope -b -i cscope.files
|
||||
[Tip: add -c option to build uncompressed databases for faster
|
||||
load speeds]
|
||||
|
||||
Load database~
|
||||
>
|
||||
:CCTreeLoadDB
|
||||
<
|
||||
(Please note that it might take a while depending on the
|
||||
database size)
|
||||
|
||||
A database name, i.e., my_cscope.out, can be specified with the command. If
|
||||
not provided, a prompt will ask for the filename; default is cscope.out.
|
||||
|
||||
Unload database ~
|
||||
>
|
||||
:CCTreeUnLoadDB
|
||||
<
|
||||
Append database~
|
||||
>
|
||||
:CCTreeAppendDB
|
||||
<
|
||||
Allows multiple cscope files to be loaded and cross-referenced
|
||||
Illustration: >
|
||||
:CCTreeAppendDB ./cscope.out
|
||||
:CCTreeAppendDB ./dir1/cscope.out
|
||||
:CCTreeAppendDB ./dir2/cscope.out
|
||||
<
|
||||
A database name, i.e., my_cscope.out, can be specified with
|
||||
the command. If not provided, a prompt will ask for the
|
||||
filename; default is cscope.out.
|
||||
|
||||
FASTER DATABASE LOADING *CCTree-fast-loading*
|
||||
|
||||
Save native Xref Db~
|
||||
>
|
||||
:CCTreeSaveXRefDb cctree.out
|
||||
<
|
||||
This command will save the cross-referenced symbols currently loaded into
|
||||
memory into a serialized format for faster loading.
|
||||
|
||||
Load native XRef Db~
|
||||
>
|
||||
:CCTreeLoadXRefDb cctree.out
|
||||
<
|
||||
This command will load cross-referenced symbols from the previously saved
|
||||
native format database.
|
||||
|
||||
ccglue~
|
||||
*CCTree-ccglue*
|
||||
|
||||
Check out the ccglue project at http://ccglue.sourceforge.net for an external
|
||||
tool that can build cctree-compatible xref databases.
|
||||
|
||||
|
||||
5.2. Exploring source-code~
|
||||
*CCTree-explore-source*
|
||||
|
||||
Get reverse call tree for symbol <C-\><
|
||||
>
|
||||
:CCTreeTraceReverse <symbolname>
|
||||
<
|
||||
|
||||
Get forward call tree for symbol <C-\>>
|
||||
>
|
||||
:CCTreeTraceForward <symbolname>
|
||||
<
|
||||
Increase depth of tree and update <C-\>=
|
||||
>
|
||||
:CCTreeRecurseDepthPlus
|
||||
<
|
||||
Decrease depth of tree and update <C-\>-
|
||||
>
|
||||
:CCTreeRecurseDepthMinus
|
||||
<
|
||||
5.3. Preview Window~
|
||||
*CCTree-preview-window*
|
||||
Open symbol in other window <CR>
|
||||
Preview symbol in other window <Ctrl-P>
|
||||
|
||||
5.4. Syntax Coloring~
|
||||
*CCTree-Syntax*
|
||||
CCTreeHiXXXX allows dynamic highlighting of the call-tree. To observe the
|
||||
effect, move the cursor to the function to highlight the current call-tree.
|
||||
This option can be turned off using the setting, *CCTreeHilightCallTree* .
|
||||
|
||||
For faster highlighting, the value of 'updatetime' can be changed.
|
||||
|
||||
5.5 Support for large database files~
|
||||
*CCTree-LargeDatabase* *CCTree-LargeFile*
|
||||
Vimscript does not have an API for reading files line-by-line. This
|
||||
becomes a problem when parsing large databases. CCTree can overcome
|
||||
the limitation using an external utility (i.e., GNU coreutils: split)
|
||||
or VimScript's perl interpreter interface (:version must indicate +perl)
|
||||
|
||||
5.5.1 Using GNU Coreutils (split/cat)~
|
||||
*CCTree-Tools-split* *CCTree-Tools-cat*
|
||||
The following settings are tailored to suit GNU coreutils split; the
|
||||
default settings should work with no changes on typical linux/unix distros.
|
||||
Monopoly OSes will require installation of unixutils or equivalent.
|
||||
|
||||
External command is setup with the following parameters~
|
||||
>
|
||||
let g:CCTreeSplitProgCmd =
|
||||
'PROG_SPLIT SPLIT_OPT SPLIT_SIZE IN_FILE OUT_FILE_PREFIX'
|
||||
<
|
||||
|
||||
Break-down of individual parameters~
|
||||
The split utility is assumed to be on the path; otherwise, specify full path
|
||||
g:CCTreeSplitProg = 'split'
|
||||
|
||||
Option for splitting files (-C or -l)~
|
||||
>
|
||||
let g:CCTreeSplitProgOption = '-C'
|
||||
<
|
||||
If split program does not support -C, then this parameter must be set to
|
||||
the number of lines in the split files
|
||||
>
|
||||
let g:CCTreeDbFileSplitLines = -1
|
||||
<
|
||||
Largest filesize Vimscript can handle; file sizes greater than this will
|
||||
be temporarily split
|
||||
>
|
||||
let g:CCTreeDbFileMaxSize = 40000000 (40 Mbytes)
|
||||
<
|
||||
Sample system command~
|
||||
Typical:
|
||||
>
|
||||
split -C 40000000 inputFile outputFilePrefix
|
||||
<
|
||||
When g:CCTreeDbFileSplitLines is set to 10000 (-C options will be ignored)
|
||||
>
|
||||
split -l 10000 inputFile outputFilePrefix
|
||||
<
|
||||
*CCTree-Tools-Perl*
|
||||
*CCTree-Tools-Perl-LargeFile*
|
||||
Enabling perl interface~
|
||||
|
||||
By default, perl usage is disabled. Set
|
||||
>
|
||||
let g:CCTreeUsePerl = 1
|
||||
< to enable the perl interface.
|
||||
|
||||
Perl interface is typically faster than native Vimscript.
|
||||
This option can be used independent of the file size
|
||||
|
||||
For more info on setting up perl interface
|
||||
:help |perl-using| or :help |perl-dynamic|
|
||||
|
||||
5.6. Miscellaneous *CCTree-Miscellaneous*
|
||||
|
||||
UTF-8 usage *CCTree-UTF8-Symbols*
|
||||
UTF-8 symbols should work fine on the majority of
|
||||
X11 systems; however, some terminals might cause problems.
|
||||
|
||||
To use symbols for drawing the tree, this option can be enabled.
|
||||
>
|
||||
let g:CCTreeUseUTF8Symbols = 1
|
||||
<
|
||||
The options interface (CCTreeOptsxxx) can be used to
|
||||
modify options on-the-fly.
|
||||
|
||||
==============================================================================
|
||||
6. Limitations~
|
||||
*CCTree-limitations*
|
||||
|
||||
The following are known limitations:
|
||||
|
||||
Basic Symbol Processing:
|
||||
(1) The accuracy of the call-tree will only be as good as the cscope database
|
||||
generation. (NOTE: Different flavors of Cscope have some known limitations
|
||||
due to the lexical analysis engine. This results in incorrectly identified
|
||||
function blocks, etc.)
|
||||
|
||||
Enhanced Symbol Processing:
|
||||
(1) Cscope does not mark-up nameless enums correctly; hence,
|
||||
CCTree cannot recognize nameless enum symbols.
|
||||
|
||||
|
||||
==============================================================================
|
||||
7. FAQ~
|
||||
*CCTree-faq*
|
||||
|
||||
+ I see strange characters "!#@" on my screen when dynamic highlighting is
|
||||
enabled. Why do I see them?
|
||||
|
||||
Check :hi ignore. You will see something like
|
||||
hi ignore ctermfg=white guifg=bg
|
||||
|
||||
For console, white must be your background color; for GUI, guifg must be set
|
||||
to bg.
|
||||
|
||||
==============================================================================
|
||||
8. History~
|
||||
*CCTree-history*
|
||||
Version 1.51: May 18, 2011
|
||||
1. Robust error reporting when external (split/cat) utils fail
|
||||
|
||||
Version 1.50: May 6, 2011
|
||||
1. Support cross-referencing of global variables, macros,
|
||||
enums, and typedefs.
|
||||
|
||||
Version 1.40: April 22, 2011
|
||||
1. Maintain order of functions called during forward tracing
|
||||
|
||||
Version 1.39: April 18, 2011
|
||||
1. Use +Conceal feature for highlighting (only Vim 7.3)
|
||||
|
||||
Version 1.33: April 5, 2011
|
||||
1. Load and trace CCTree native XRefDb directly from disk
|
||||
2. Fix AppendDB command when 'ignorecase' is set
|
||||
|
||||
Version 1.26: March 28, 2011
|
||||
1. Fix macro cross-referencing limitation
|
||||
2. Correct native xref file format
|
||||
|
||||
Version 1.21: March 21, 2011
|
||||
1. Support serialization of loaded
|
||||
cscope databases (for faster loading)
|
||||
|
||||
Version 1.07: March 09, 2011
|
||||
1. Fix new keymaps incorrectly applied to buffer
|
||||
2. CCTreeOptsToggle command for toggling options
|
||||
|
||||
Version 1.04: March 06, 2011
|
||||
1. Customization for key mappings
|
||||
2. Dynamic configuration of UI variables
|
||||
3. Folding long call-trees to show current path dynamically
|
||||
|
||||
Version 1.01: March 04, 2011
|
||||
1. Make UTF-8 symbols for tree optional
|
||||
|
||||
Version 1.00: March 02, 2011
|
||||
1. Staging release for upcoming features
|
||||
- Complete refactoring of code to take
|
||||
advantage of VimScript's OO features
|
||||
2. Faster decompression of symbols
|
||||
3. Display related changes
|
||||
- Use of unicode symbols for tree
|
||||
4. Bugfixes related to multi-database loading
|
||||
|
||||
Version 0.90: February 18, 2011
|
||||
1. Support for large databases using external split utility or perl
|
||||
interface
|
||||
|
||||
Version 0.85: February 9, 2011
|
||||
1. Significant increase in database loading and decompression speeds
|
||||
|
||||
Version 0.80: February 4, 2011
|
||||
1. Reduce memory usage by removing unused xref symbols
|
||||
|
||||
Version 0.75: June 23, 2010
|
||||
1. Support for saving CCTree preview window; multiple
|
||||
CCTree windows can now be open
|
||||
|
||||
ersion 0.71: May 11, 2010
|
||||
1. Fix script bug
|
||||
|
||||
Version 0.70: May 8, 2010
|
||||
1. Functionality to load multiple cscope databases
|
||||
|
||||
Version 0.65: July 12, 2009
|
||||
1. Toggle preview window
|
||||
|
||||
Version 0.61: December 24, 2008
|
||||
1. Fixed bug when processing include files
|
||||
2. Remove 'set ruler' option
|
||||
|
||||
Version 0.60: November 26, 2008
|
||||
1. Added support for source-file dependency tree
|
||||
|
||||
Version 0.50: October 17, 2008
|
||||
1. Optimizations for compact memory foot-print and
|
||||
improved compressed-database load speeds
|
||||
|
||||
Version 0.41: October 6, 2008
|
||||
1. Minor fix: Compressed cscope databases will load
|
||||
incorrectly if encoding is not 8-bit
|
||||
|
||||
Version 0.4: September 28, 2008
|
||||
1. Rewrite of display-related code
|
||||
2. New syntax hightlighting
|
||||
3. Dynamic highlighting for call-trees
|
||||
4. Support for new window modes (vertical, horizontal)
|
||||
5. New display format option for compact or wide call-trees
|
||||
6. Preview window fix
|
||||
|
||||
Version 0.3: September 21, 2008
|
||||
1. Support compressed cscope databases
|
||||
2. Display window related bugs fixed
|
||||
3. More intuitive display and folding capabilities
|
||||
|
||||
Version 0.2: September 12, 2008
|
||||
(Patches from Yegappan Lakshmanan, thanks!)
|
||||
1. Support for using the plugin in Vi-compatible mode
|
||||
2. Filtering out unwanted lines before processing the db
|
||||
3. Command-line completion for the commands
|
||||
4. Using the cscope db from any directory
|
||||
|
||||
Version 0.1: August 31,2008
|
||||
1. Cross-referencing support for only functions and macros
|
||||
(Note: Functions inside macro definitions will be incorrectly
|
||||
attributed to the top level calling function)
|
||||
|
||||
|
||||
==============================================================================
|
||||
9. Thanks~
|
||||
*CCTree-thanks*
|
||||
|
||||
|
||||
Qaiser Durrani (ver 1.51 -- Reporting issues with SunOS)
|
||||
Ben Fritz (ver 1.39 -- Suggestion/Testing for
|
||||
conceal feature)
|
||||
Ben Fritz (ver 1.26 -- Bug report)
|
||||
Frank Chang (ver 1.0x -- testing/UI enhancement
|
||||
ideas/bug fixes)
|
||||
Arun Chaganty/Timo Tiefel (Ver 0.60 -- bug report)
|
||||
Michael Wookey (Ver 0.40 -- Testing/bug report/patches)
|
||||
Yegappan Lakshmanan (Ver 0.20 -- Patches)
|
||||
|
||||
The Vim Community, ofcourse :)
|
||||
|
||||
|
||||
vim:tw=78:fo=tcq2:isk=!-~,^*,^\|,^\":ts=8:ft=help:norl:
|
||||
|
3398
vim_plugins_src/cscope-15.8a/contrib/cctree.vim
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}
|
||||
|
31
vim_plugins_src/cscope-15.8a/contrib/webcscope/INSTALL
Normal file
@ -0,0 +1,31 @@
|
||||
WebCScope Installation
|
||||
|
||||
Quick Install
|
||||
|
||||
0. Create a directory called cscope under your /cgi-bin (virtual) directory.
|
||||
Copy all the files in the distribution to this directory.
|
||||
|
||||
1. Edit the 'cscope' file and change the following items:
|
||||
- Location to the perl interpreter
|
||||
- Location of the cscope database and other modifiable parameters
|
||||
- Feedback name and email
|
||||
- Location of the syntax highlighter, if you wish to use it
|
||||
|
||||
2. Syntax highlighter
|
||||
- The syntax highlighter must be built if you decide to use it. If you
|
||||
do not want syntax highlighting, you can ignore this step and set the
|
||||
highlighter to /bin/cat.
|
||||
- Compile 'hilite.c' using 'gcc -o hilite hilite.c'
|
||||
|
||||
3. Icons
|
||||
- Copy the images from the icons directory into the /icons (virtual)
|
||||
directory on the web server. You can also replace these images with
|
||||
whatever you choose.
|
||||
|
||||
4. Organizing your CScope databases
|
||||
- WebCScope supports multiple databases in $cscopedir
|
||||
- Create a directory for each project or sub-source in $cscopedir and,
|
||||
generate your cscope database using the following commands.
|
||||
- find /some/source/dir -name '*.[chyls]' -print > cscope.files
|
||||
- cscope -b -q
|
||||
- Repeat the above step for each database you wish to create
|
340
vim_plugins_src/cscope-15.8a/contrib/webcscope/LICENSE
Normal file
@ -0,0 +1,340 @@
|
||||
GNU GENERAL PUBLIC LICENSE
|
||||
Version 2, June 1991
|
||||
|
||||
Copyright (C) 1989, 1991 Free Software Foundation, Inc.
|
||||
59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
|
||||
Everyone is permitted to copy and distribute verbatim copies
|
||||
of this license document, but changing it is not allowed.
|
||||
|
||||
Preamble
|
||||
|
||||
The licenses for most software are designed to take away your
|
||||
freedom to share and change it. By contrast, the GNU General Public
|
||||
License is intended to guarantee your freedom to share and change free
|
||||
software--to make sure the software is free for all its users. This
|
||||
General Public License applies to most of the Free Software
|
||||
Foundation's software and to any other program whose authors commit to
|
||||
using it. (Some other Free Software Foundation software is covered by
|
||||
the GNU Library General Public License instead.) You can apply it to
|
||||
your programs, too.
|
||||
|
||||
When we speak of free software, we are referring to freedom, not
|
||||
price. Our General Public Licenses are designed to make sure that you
|
||||
have the freedom to distribute copies of free software (and charge for
|
||||
this service if you wish), that you receive source code or can get it
|
||||
if you want it, that you can change the software or use pieces of it
|
||||
in new free programs; and that you know you can do these things.
|
||||
|
||||
To protect your rights, we need to make restrictions that forbid
|
||||
anyone to deny you these rights or to ask you to surrender the rights.
|
||||
These restrictions translate to certain responsibilities for you if you
|
||||
distribute copies of the software, or if you modify it.
|
||||
|
||||
For example, if you distribute copies of such a program, whether
|
||||
gratis or for a fee, you must give the recipients all the rights that
|
||||
you have. You must make sure that they, too, receive or can get the
|
||||
source code. And you must show them these terms so they know their
|
||||
rights.
|
||||
|
||||
We protect your rights with two steps: (1) copyright the software, and
|
||||
(2) offer you this license which gives you legal permission to copy,
|
||||
distribute and/or modify the software.
|
||||
|
||||
Also, for each author's protection and ours, we want to make certain
|
||||
that everyone understands that there is no warranty for this free
|
||||
software. If the software is modified by someone else and passed on, we
|
||||
want its recipients to know that what they have is not the original, so
|
||||
that any problems introduced by others will not reflect on the original
|
||||
authors' reputations.
|
||||
|
||||
Finally, any free program is threatened constantly by software
|
||||
patents. We wish to avoid the danger that redistributors of a free
|
||||
program will individually obtain patent licenses, in effect making the
|
||||
program proprietary. To prevent this, we have made it clear that any
|
||||
patent must be licensed for everyone's free use or not licensed at all.
|
||||
|
||||
The precise terms and conditions for copying, distribution and
|
||||
modification follow.
|
||||
|
||||
GNU GENERAL PUBLIC LICENSE
|
||||
TERMS AND CONDITIONS FOR COPYING, DISTRIBUTION AND MODIFICATION
|
||||
|
||||
0. This License applies to any program or other work which contains
|
||||
a notice placed by the copyright holder saying it may be distributed
|
||||
under the terms of this General Public License. The "Program", below,
|
||||
refers to any such program or work, and a "work based on the Program"
|
||||
means either the Program or any derivative work under copyright law:
|
||||
that is to say, a work containing the Program or a portion of it,
|
||||
either verbatim or with modifications and/or translated into another
|
||||
language. (Hereinafter, translation is included without limitation in
|
||||
the term "modification".) Each licensee is addressed as "you".
|
||||
|
||||
Activities other than copying, distribution and modification are not
|
||||
covered by this License; they are outside its scope. The act of
|
||||
running the Program is not restricted, and the output from the Program
|
||||
is covered only if its contents constitute a work based on the
|
||||
Program (independent of having been made by running the Program).
|
||||
Whether that is true depends on what the Program does.
|
||||
|
||||
1. You may copy and distribute verbatim copies of the Program's
|
||||
source code as you receive it, in any medium, provided that you
|
||||
conspicuously and appropriately publish on each copy an appropriate
|
||||
copyright notice and disclaimer of warranty; keep intact all the
|
||||
notices that refer to this License and to the absence of any warranty;
|
||||
and give any other recipients of the Program a copy of this License
|
||||
along with the Program.
|
||||
|
||||
You may charge a fee for the physical act of transferring a copy, and
|
||||
you may at your option offer warranty protection in exchange for a fee.
|
||||
|
||||
2. You may modify your copy or copies of the Program or any portion
|
||||
of it, thus forming a work based on the Program, and copy and
|
||||
distribute such modifications or work under the terms of Section 1
|
||||
above, provided that you also meet all of these conditions:
|
||||
|
||||
a) You must cause the modified files to carry prominent notices
|
||||
stating that you changed the files and the date of any change.
|
||||
|
||||
b) You must cause any work that you distribute or publish, that in
|
||||
whole or in part contains or is derived from the Program or any
|
||||
part thereof, to be licensed as a whole at no charge to all third
|
||||
parties under the terms of this License.
|
||||
|
||||
c) If the modified program normally reads commands interactively
|
||||
when run, you must cause it, when started running for such
|
||||
interactive use in the most ordinary way, to print or display an
|
||||
announcement including an appropriate copyright notice and a
|
||||
notice that there is no warranty (or else, saying that you provide
|
||||
a warranty) and that users may redistribute the program under
|
||||
these conditions, and telling the user how to view a copy of this
|
||||
License. (Exception: if the Program itself is interactive but
|
||||
does not normally print such an announcement, your work based on
|
||||
the Program is not required to print an announcement.)
|
||||
|
||||
These requirements apply to the modified work as a whole. If
|
||||
identifiable sections of that work are not derived from the Program,
|
||||
and can be reasonably considered independent and separate works in
|
||||
themselves, then this License, and its terms, do not apply to those
|
||||
sections when you distribute them as separate works. But when you
|
||||
distribute the same sections as part of a whole which is a work based
|
||||
on the Program, the distribution of the whole must be on the terms of
|
||||
this License, whose permissions for other licensees extend to the
|
||||
entire whole, and thus to each and every part regardless of who wrote it.
|
||||
|
||||
Thus, it is not the intent of this section to claim rights or contest
|
||||
your rights to work written entirely by you; rather, the intent is to
|
||||
exercise the right to control the distribution of derivative or
|
||||
collective works based on the Program.
|
||||
|
||||
In addition, mere aggregation of another work not based on the Program
|
||||
with the Program (or with a work based on the Program) on a volume of
|
||||
a storage or distribution medium does not bring the other work under
|
||||
the scope of this License.
|
||||
|
||||
3. You may copy and distribute the Program (or a work based on it,
|
||||
under Section 2) in object code or executable form under the terms of
|
||||
Sections 1 and 2 above provided that you also do one of the following:
|
||||
|
||||
a) Accompany it with the complete corresponding machine-readable
|
||||
source code, which must be distributed under the terms of Sections
|
||||
1 and 2 above on a medium customarily used for software interchange; or,
|
||||
|
||||
b) Accompany it with a written offer, valid for at least three
|
||||
years, to give any third party, for a charge no more than your
|
||||
cost of physically performing source distribution, a complete
|
||||
machine-readable copy of the corresponding source code, to be
|
||||
distributed under the terms of Sections 1 and 2 above on a medium
|
||||
customarily used for software interchange; or,
|
||||
|
||||
c) Accompany it with the information you received as to the offer
|
||||
to distribute corresponding source code. (This alternative is
|
||||
allowed only for noncommercial distribution and only if you
|
||||
received the program in object code or executable form with such
|
||||
an offer, in accord with Subsection b above.)
|
||||
|
||||
The source code for a work means the preferred form of the work for
|
||||
making modifications to it. For an executable work, complete source
|
||||
code means all the source code for all modules it contains, plus any
|
||||
associated interface definition files, plus the scripts used to
|
||||
control compilation and installation of the executable. However, as a
|
||||
special exception, the source code distributed need not include
|
||||
anything that is normally distributed (in either source or binary
|
||||
form) with the major components (compiler, kernel, and so on) of the
|
||||
operating system on which the executable runs, unless that component
|
||||
itself accompanies the executable.
|
||||
|
||||
If distribution of executable or object code is made by offering
|
||||
access to copy from a designated place, then offering equivalent
|
||||
access to copy the source code from the same place counts as
|
||||
distribution of the source code, even though third parties are not
|
||||
compelled to copy the source along with the object code.
|
||||
|
||||
4. You may not copy, modify, sublicense, or distribute the Program
|
||||
except as expressly provided under this License. Any attempt
|
||||
otherwise to copy, modify, sublicense or distribute the Program is
|
||||
void, and will automatically terminate your rights under this License.
|
||||
However, parties who have received copies, or rights, from you under
|
||||
this License will not have their licenses terminated so long as such
|
||||
parties remain in full compliance.
|
||||
|
||||
5. You are not required to accept this License, since you have not
|
||||
signed it. However, nothing else grants you permission to modify or
|
||||
distribute the Program or its derivative works. These actions are
|
||||
prohibited by law if you do not accept this License. Therefore, by
|
||||
modifying or distributing the Program (or any work based on the
|
||||
Program), you indicate your acceptance of this License to do so, and
|
||||
all its terms and conditions for copying, distributing or modifying
|
||||
the Program or works based on it.
|
||||
|
||||
6. Each time you redistribute the Program (or any work based on the
|
||||
Program), the recipient automatically receives a license from the
|
||||
original licensor to copy, distribute or modify the Program subject to
|
||||
these terms and conditions. You may not impose any further
|
||||
restrictions on the recipients' exercise of the rights granted herein.
|
||||
You are not responsible for enforcing compliance by third parties to
|
||||
this License.
|
||||
|
||||
7. If, as a consequence of a court judgment or allegation of patent
|
||||
infringement or for any other reason (not limited to patent issues),
|
||||
conditions are imposed on you (whether by court order, agreement or
|
||||
otherwise) that contradict the conditions of this License, they do not
|
||||
excuse you from the conditions of this License. If you cannot
|
||||
distribute so as to satisfy simultaneously your obligations under this
|
||||
License and any other pertinent obligations, then as a consequence you
|
||||
may not distribute the Program at all. For example, if a patent
|
||||
license would not permit royalty-free redistribution of the Program by
|
||||
all those who receive copies directly or indirectly through you, then
|
||||
the only way you could satisfy both it and this License would be to
|
||||
refrain entirely from distribution of the Program.
|
||||
|
||||
If any portion of this section is held invalid or unenforceable under
|
||||
any particular circumstance, the balance of the section is intended to
|
||||
apply and the section as a whole is intended to apply in other
|
||||
circumstances.
|
||||
|
||||
It is not the purpose of this section to induce you to infringe any
|
||||
patents or other property right claims or to contest validity of any
|
||||
such claims; this section has the sole purpose of protecting the
|
||||
integrity of the free software distribution system, which is
|
||||
implemented by public license practices. Many people have made
|
||||
generous contributions to the wide range of software distributed
|
||||
through that system in reliance on consistent application of that
|
||||
system; it is up to the author/donor to decide if he or she is willing
|
||||
to distribute software through any other system and a licensee cannot
|
||||
impose that choice.
|
||||
|
||||
This section is intended to make thoroughly clear what is believed to
|
||||
be a consequence of the rest of this License.
|
||||
|
||||
8. If the distribution and/or use of the Program is restricted in
|
||||
certain countries either by patents or by copyrighted interfaces, the
|
||||
original copyright holder who places the Program under this License
|
||||
may add an explicit geographical distribution limitation excluding
|
||||
those countries, so that distribution is permitted only in or among
|
||||
countries not thus excluded. In such case, this License incorporates
|
||||
the limitation as if written in the body of this License.
|
||||
|
||||
9. The Free Software Foundation may publish revised and/or new versions
|
||||
of the General Public License from time to time. Such new versions will
|
||||
be similar in spirit to the present version, but may differ in detail to
|
||||
address new problems or concerns.
|
||||
|
||||
Each version is given a distinguishing version number. If the Program
|
||||
specifies a version number of this License which applies to it and "any
|
||||
later version", you have the option of following the terms and conditions
|
||||
either of that version or of any later version published by the Free
|
||||
Software Foundation. If the Program does not specify a version number of
|
||||
this License, you may choose any version ever published by the Free Software
|
||||
Foundation.
|
||||
|
||||
10. If you wish to incorporate parts of the Program into other free
|
||||
programs whose distribution conditions are different, write to the author
|
||||
to ask for permission. For software which is copyrighted by the Free
|
||||
Software Foundation, write to the Free Software Foundation; we sometimes
|
||||
make exceptions for this. Our decision will be guided by the two goals
|
||||
of preserving the free status of all derivatives of our free software and
|
||||
of promoting the sharing and reuse of software generally.
|
||||
|
||||
NO WARRANTY
|
||||
|
||||
11. BECAUSE THE PROGRAM IS LICENSED FREE OF CHARGE, THERE IS NO WARRANTY
|
||||
FOR THE PROGRAM, TO THE EXTENT PERMITTED BY APPLICABLE LAW. EXCEPT WHEN
|
||||
OTHERWISE STATED IN WRITING THE COPYRIGHT HOLDERS AND/OR OTHER PARTIES
|
||||
PROVIDE THE PROGRAM "AS IS" WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED
|
||||
OR IMPLIED, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF
|
||||
MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. THE ENTIRE RISK AS
|
||||
TO THE QUALITY AND PERFORMANCE OF THE PROGRAM IS WITH YOU. SHOULD THE
|
||||
PROGRAM PROVE DEFECTIVE, YOU ASSUME THE COST OF ALL NECESSARY SERVICING,
|
||||
REPAIR OR CORRECTION.
|
||||
|
||||
12. IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN WRITING
|
||||
WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MAY MODIFY AND/OR
|
||||
REDISTRIBUTE THE PROGRAM AS PERMITTED ABOVE, BE LIABLE TO YOU FOR DAMAGES,
|
||||
INCLUDING ANY GENERAL, SPECIAL, INCIDENTAL OR CONSEQUENTIAL DAMAGES ARISING
|
||||
OUT OF THE USE OR INABILITY TO USE THE PROGRAM (INCLUDING BUT NOT LIMITED
|
||||
TO LOSS OF DATA OR DATA BEING RENDERED INACCURATE OR LOSSES SUSTAINED BY
|
||||
YOU OR THIRD PARTIES OR A FAILURE OF THE PROGRAM TO OPERATE WITH ANY OTHER
|
||||
PROGRAMS), EVEN IF SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE
|
||||
POSSIBILITY OF SUCH DAMAGES.
|
||||
|
||||
END OF TERMS AND CONDITIONS
|
||||
|
||||
How to Apply These Terms to Your New Programs
|
||||
|
||||
If you develop a new program, and you want it to be of the greatest
|
||||
possible use to the public, the best way to achieve this is to make it
|
||||
free software which everyone can redistribute and change under these terms.
|
||||
|
||||
To do so, attach the following notices to the program. It is safest
|
||||
to attach them to the start of each source file to most effectively
|
||||
convey the exclusion of warranty; and each file should have at least
|
||||
the "copyright" line and a pointer to where the full notice is found.
|
||||
|
||||
<one line to give the program's name and a brief idea of what it does.>
|
||||
Copyright (C) <year> <name of author>
|
||||
|
||||
This program is free software; you can redistribute it and/or modify
|
||||
it under the terms of the GNU General Public License as published by
|
||||
the Free Software Foundation; either version 2 of the License, or
|
||||
(at your option) any later version.
|
||||
|
||||
This program is distributed in the hope that it will be useful,
|
||||
but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
GNU General Public License for more details.
|
||||
|
||||
You should have received a copy of the GNU General Public License
|
||||
along with this program; if not, write to the Free Software
|
||||
Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
|
||||
|
||||
|
||||
Also add information on how to contact you by electronic and paper mail.
|
||||
|
||||
If the program is interactive, make it output a short notice like this
|
||||
when it starts in an interactive mode:
|
||||
|
||||
Gnomovision version 69, Copyright (C) year name of author
|
||||
Gnomovision comes with ABSOLUTELY NO WARRANTY; for details type `show w'.
|
||||
This is free software, and you are welcome to redistribute it
|
||||
under certain conditions; type `show c' for details.
|
||||
|
||||
The hypothetical commands `show w' and `show c' should show the appropriate
|
||||
parts of the General Public License. Of course, the commands you use may
|
||||
be called something other than `show w' and `show c'; they could even be
|
||||
mouse-clicks or menu items--whatever suits your program.
|
||||
|
||||
You should also get your employer (if you work as a programmer) or your
|
||||
school, if any, to sign a "copyright disclaimer" for the program, if
|
||||
necessary. Here is a sample; alter the names:
|
||||
|
||||
Yoyodyne, Inc., hereby disclaims all copyright interest in the program
|
||||
`Gnomovision' (which makes passes at compilers) written by James Hacker.
|
||||
|
||||
<signature of Ty Coon>, 1 April 1989
|
||||
Ty Coon, President of Vice
|
||||
|
||||
This General Public License does not permit incorporating your program into
|
||||
proprietary programs. If your program is a subroutine library, you may
|
||||
consider it more useful to permit linking proprietary applications with the
|
||||
library. If this is what you want to do, use the GNU Library General
|
||||
Public License instead of this License.
|
5
vim_plugins_src/cscope-15.8a/contrib/webcscope/TODO
Normal file
@ -0,0 +1,5 @@
|
||||
|
||||
- Better error checking and the like
|
||||
- Add a more robust cookie mechanism
|
||||
- More efficient way of searching 'all' databases
|
||||
- Fix bugs
|
471
vim_plugins_src/cscope-15.8a/contrib/webcscope/cgi-lib.pl
Normal file
@ -0,0 +1,471 @@
|
||||
# Perl Routines to Manipulate CGI input
|
||||
# cgi-lib@pobox.com
|
||||
# $Id: cgi-lib.pl,v 1.1 2001/06/29 14:20:16 petr Exp $
|
||||
#
|
||||
# Copyright (c) 1993-1999 Steven E. Brenner
|
||||
# Unpublished work.
|
||||
# Permission granted to use and modify this library so long as the
|
||||
# copyright above is maintained, modifications are documented, and
|
||||
# credit is given for any use of the library.
|
||||
#
|
||||
# Thanks are due to many people for reporting bugs and suggestions
|
||||
|
||||
# For more information, see:
|
||||
# http://cgi-lib.stanford.edu/cgi-lib/
|
||||
|
||||
$cgi_lib'version = sprintf("%d.%02d", q$Revision: 1.1 $ =~ /(\d+)\.(\d+)/);
|
||||
|
||||
|
||||
# Parameters affecting cgi-lib behavior
|
||||
# User-configurable parameters affecting file upload.
|
||||
$cgi_lib'maxdata = 131072; # maximum bytes to accept via POST - 2^17
|
||||
$cgi_lib'writefiles = 0; # directory to which to write files, or
|
||||
# 0 if files should not be written
|
||||
$cgi_lib'filepre = "cgi-lib"; # Prefix of file names, in directory above
|
||||
|
||||
# Do not change the following parameters unless you have special reasons
|
||||
$cgi_lib'bufsize = 8192; # default buffer size when reading multipart
|
||||
$cgi_lib'maxbound = 100; # maximum boundary length to be encounterd
|
||||
$cgi_lib'headerout = 0; # indicates whether the header has been printed
|
||||
|
||||
|
||||
# ReadParse
|
||||
# Reads in GET or POST data, converts it to unescaped text, and puts
|
||||
# key/value pairs in %in, using "\0" to separate multiple selections
|
||||
|
||||
# Returns >0 if there was input, 0 if there was no input
|
||||
# undef indicates some failure.
|
||||
|
||||
# Now that cgi scripts can be put in the normal file space, it is useful
|
||||
# to combine both the form and the script in one place. If no parameters
|
||||
# are given (i.e., ReadParse returns FALSE), then a form could be output.
|
||||
|
||||
# If a reference to a hash is given, then the data will be stored in that
|
||||
# hash, but the data from $in and @in will become inaccessable.
|
||||
# If a variable-glob (e.g., *cgi_input) is the first parameter to ReadParse,
|
||||
# information is stored there, rather than in $in, @in, and %in.
|
||||
# Second, third, and fourth parameters fill associative arrays analagous to
|
||||
# %in with data relevant to file uploads.
|
||||
|
||||
# If no method is given, the script will process both command-line arguments
|
||||
# of the form: name=value and any text that is in $ENV{'QUERY_STRING'}
|
||||
# This is intended to aid debugging and may be changed in future releases
|
||||
|
||||
sub ReadParse {
|
||||
# Disable warnings as this code deliberately uses local and environment
|
||||
# variables which are preset to undef (i.e., not explicitly initialized)
|
||||
local ($perlwarn);
|
||||
$perlwarn = $^W;
|
||||
$^W = 0;
|
||||
|
||||
local (*in) = shift if @_; # CGI input
|
||||
local (*incfn, # Client's filename (may not be provided)
|
||||
*inct, # Client's content-type (may not be provided)
|
||||
*insfn) = @_; # Server's filename (for spooled files)
|
||||
local ($len, $type, $meth, $errflag, $cmdflag, $got, $name);
|
||||
|
||||
binmode(STDIN); # we need these for DOS-based systems
|
||||
binmode(STDOUT); # and they shouldn't hurt anything else
|
||||
binmode(STDERR);
|
||||
|
||||
# Get several useful env variables
|
||||
$type = $ENV{'CONTENT_TYPE'};
|
||||
$len = $ENV{'CONTENT_LENGTH'};
|
||||
$meth = $ENV{'REQUEST_METHOD'};
|
||||
|
||||
if ($len > $cgi_lib'maxdata) { #'
|
||||
&CgiDie("cgi-lib.pl: Request to receive too much data: $len bytes\n");
|
||||
}
|
||||
|
||||
if (!defined $meth || $meth eq '' || $meth eq 'GET' ||
|
||||
$meth eq 'HEAD' ||
|
||||
$type eq 'application/x-www-form-urlencoded') {
|
||||
local ($key, $val, $i);
|
||||
|
||||
# Read in text
|
||||
if (!defined $meth || $meth eq '') {
|
||||
$in = $ENV{'QUERY_STRING'};
|
||||
$cmdflag = 1; # also use command-line options
|
||||
} elsif($meth eq 'GET' || $meth eq 'HEAD') {
|
||||
$in = $ENV{'QUERY_STRING'};
|
||||
} elsif ($meth eq 'POST') {
|
||||
if (($got = read(STDIN, $in, $len) != $len))
|
||||
{$errflag="Short Read: wanted $len, got $got\n";};
|
||||
} else {
|
||||
&CgiDie("cgi-lib.pl: Unknown request method: $meth\n");
|
||||
}
|
||||
|
||||
@in = split(/[&;]/,$in);
|
||||
push(@in, @ARGV) if $cmdflag; # add command-line parameters
|
||||
|
||||
foreach $i (0 .. $#in) {
|
||||
# Convert plus to space
|
||||
$in[$i] =~ s/\+/ /g;
|
||||
|
||||
# Split into key and value.
|
||||
($key, $val) = split(/=/,$in[$i],2); # splits on the first =.
|
||||
|
||||
# Convert %XX from hex numbers to alphanumeric
|
||||
$key =~ s/%([A-Fa-f0-9]{2})/pack("c",hex($1))/ge;
|
||||
$val =~ s/%([A-Fa-f0-9]{2})/pack("c",hex($1))/ge;
|
||||
|
||||
# Associate key and value
|
||||
$in{$key} .= "\0" if (defined($in{$key})); # \0 is the multiple separator
|
||||
$in{$key} .= $val;
|
||||
}
|
||||
|
||||
} elsif ($ENV{'CONTENT_TYPE'} =~ m#^multipart/form-data#) {
|
||||
# for efficiency, compile multipart code only if needed
|
||||
$errflag = !(eval <<'END_MULTIPART');
|
||||
|
||||
local ($buf, $boundary, $head, @heads, $cd, $ct, $fname, $ctype, $blen);
|
||||
local ($bpos, $lpos, $left, $amt, $fn, $ser);
|
||||
local ($bufsize, $maxbound, $writefiles) =
|
||||
($cgi_lib'bufsize, $cgi_lib'maxbound, $cgi_lib'writefiles);
|
||||
|
||||
|
||||
# The following lines exist solely to eliminate spurious warning messages
|
||||
$buf = '';
|
||||
|
||||
($boundary) = $type =~ /boundary="([^"]+)"/; #"; # find boundary
|
||||
($boundary) = $type =~ /boundary=(\S+)/ unless $boundary;
|
||||
&CgiDie ("Boundary not provided: probably a bug in your server")
|
||||
unless $boundary;
|
||||
$boundary = "--" . $boundary;
|
||||
$blen = length ($boundary);
|
||||
|
||||
if ($ENV{'REQUEST_METHOD'} ne 'POST') {
|
||||
&CgiDie("Invalid request method for multipart/form-data: $meth\n");
|
||||
}
|
||||
|
||||
if ($writefiles) {
|
||||
local($me);
|
||||
stat ($writefiles);
|
||||
$writefiles = "/tmp" unless -d _ && -w _;
|
||||
# ($me) = $0 =~ m#([^/]*)$#;
|
||||
$writefiles .= "/$cgi_lib'filepre";
|
||||
}
|
||||
|
||||
# read in the data and split into parts:
|
||||
# put headers in @in and data in %in
|
||||
# General algorithm:
|
||||
# There are two dividers: the border and the '\r\n\r\n' between
|
||||
# header and body. Iterate between searching for these
|
||||
# Retain a buffer of size(bufsize+maxbound); the latter part is
|
||||
# to ensure that dividers don't get lost by wrapping between two bufs
|
||||
# Look for a divider in the current batch. If not found, then
|
||||
# save all of bufsize, move the maxbound extra buffer to the front of
|
||||
# the buffer, and read in a new bufsize bytes. If a divider is found,
|
||||
# save everything up to the divider. Then empty the buffer of everything
|
||||
# up to the end of the divider. Refill buffer to bufsize+maxbound
|
||||
# Note slightly odd organization. Code before BODY: really goes with
|
||||
# code following HEAD:, but is put first to 'pre-fill' buffers. BODY:
|
||||
# is placed before HEAD: because we first need to discard any 'preface,'
|
||||
# which would be analagous to a body without a preceeding head.
|
||||
|
||||
$left = $len;
|
||||
PART: # find each part of the multi-part while reading data
|
||||
while (1) {
|
||||
die $@ if $errflag;
|
||||
|
||||
$amt = ($left > $bufsize+$maxbound-length($buf)
|
||||
? $bufsize+$maxbound-length($buf): $left);
|
||||
$errflag = (($got = read(STDIN, $buf, $amt, length($buf))) != $amt);
|
||||
die "Short Read: wanted $amt, got $got\n" if $errflag;
|
||||
$left -= $amt;
|
||||
|
||||
$in{$name} .= "\0" if defined $in{$name};
|
||||
$in{$name} .= $fn if $fn;
|
||||
|
||||
$name=~/([-\w]+)/; # This allows $insfn{$name} to be untainted
|
||||
if (defined $1) {
|
||||
$insfn{$1} .= "\0" if defined $insfn{$1};
|
||||
$insfn{$1} .= $fn if $fn;
|
||||
}
|
||||
|
||||
BODY:
|
||||
while (($bpos = index($buf, $boundary)) == -1) {
|
||||
if ($left == 0 && $buf eq '') {
|
||||
foreach $value (values %insfn) {
|
||||
unlink(split("\0",$value));
|
||||
}
|
||||
&CgiDie("cgi-lib.pl: reached end of input while seeking boundary " .
|
||||
"of multipart. Format of CGI input is wrong.\n");
|
||||
}
|
||||
die $@ if $errflag;
|
||||
if ($name) { # if no $name, then it's the prologue -- discard
|
||||
if ($fn) { print FILE substr($buf, 0, $bufsize); }
|
||||
else { $in{$name} .= substr($buf, 0, $bufsize); }
|
||||
}
|
||||
$buf = substr($buf, $bufsize);
|
||||
$amt = ($left > $bufsize ? $bufsize : $left); #$maxbound==length($buf);
|
||||
$errflag = (($got = read(STDIN, $buf, $amt, length($buf))) != $amt);
|
||||
die "Short Read: wanted $amt, got $got\n" if $errflag;
|
||||
$left -= $amt;
|
||||
}
|
||||
if (defined $name) { # if no $name, then it's the prologue -- discard
|
||||
if ($fn) { print FILE substr($buf, 0, $bpos-2); }
|
||||
else { $in {$name} .= substr($buf, 0, $bpos-2); } # kill last \r\n
|
||||
}
|
||||
close (FILE);
|
||||
last PART if substr($buf, $bpos + $blen, 2) eq "--";
|
||||
substr($buf, 0, $bpos+$blen+2) = '';
|
||||
$amt = ($left > $bufsize+$maxbound-length($buf)
|
||||
? $bufsize+$maxbound-length($buf) : $left);
|
||||
$errflag = (($got = read(STDIN, $buf, $amt, length($buf))) != $amt);
|
||||
die "Short Read: wanted $amt, got $got\n" if $errflag;
|
||||
$left -= $amt;
|
||||
|
||||
|
||||
undef $head; undef $fn;
|
||||
HEAD:
|
||||
while (($lpos = index($buf, "\r\n\r\n")) == -1) {
|
||||
if ($left == 0 && $buf eq '') {
|
||||
foreach $value (values %insfn) {
|
||||
unlink(split("\0",$value));
|
||||
}
|
||||
&CgiDie("cgi-lib: reached end of input while seeking end of " .
|
||||
"headers. Format of CGI input is wrong.\n$buf");
|
||||
}
|
||||
die $@ if $errflag;
|
||||
$head .= substr($buf, 0, $bufsize);
|
||||
$buf = substr($buf, $bufsize);
|
||||
$amt = ($left > $bufsize ? $bufsize : $left); #$maxbound==length($buf);
|
||||
$errflag = (($got = read(STDIN, $buf, $amt, length($buf))) != $amt);
|
||||
die "Short Read: wanted $amt, got $got\n" if $errflag;
|
||||
$left -= $amt;
|
||||
}
|
||||
$head .= substr($buf, 0, $lpos+2);
|
||||
push (@in, $head);
|
||||
@heads = split("\r\n", $head);
|
||||
($cd) = grep (/^\s*Content-Disposition:/i, @heads);
|
||||
($ct) = grep (/^\s*Content-Type:/i, @heads);
|
||||
|
||||
($name) = $cd =~ /\bname="([^"]+)"/i; #";
|
||||
($name) = $cd =~ /\bname=([^\s:;]+)/i unless defined $name;
|
||||
|
||||
($fname) = $cd =~ /\bfilename="([^"]*)"/i; #"; # filename can be null-str
|
||||
($fname) = $cd =~ /\bfilename=([^\s:;]+)/i unless defined $fname;
|
||||
$incfn{$name} .= (defined $in{$name} ? "\0" : "") .
|
||||
(defined $fname ? $fname : "");
|
||||
|
||||
($ctype) = $ct =~ /^\s*Content-type:\s*"([^"]+)"/i; #";
|
||||
($ctype) = $ct =~ /^\s*Content-Type:\s*([^\s:;]+)/i unless defined $ctype;
|
||||
$inct{$name} .= (defined $in{$name} ? "\0" : "") . $ctype;
|
||||
|
||||
if ($writefiles && defined $fname) {
|
||||
$ser++;
|
||||
$fn = $writefiles . ".$$.$ser";
|
||||
open (FILE, ">$fn") || &CgiDie("Couldn't open $fn\n");
|
||||
binmode (FILE); # write files accurately
|
||||
}
|
||||
substr($buf, 0, $lpos+4) = '';
|
||||
undef $fname;
|
||||
undef $ctype;
|
||||
}
|
||||
|
||||
1;
|
||||
END_MULTIPART
|
||||
if ($errflag) {
|
||||
local ($errmsg, $value);
|
||||
$errmsg = $@ || $errflag;
|
||||
foreach $value (values %insfn) {
|
||||
unlink(split("\0",$value));
|
||||
}
|
||||
&CgiDie($errmsg);
|
||||
} else {
|
||||
# everything's ok.
|
||||
}
|
||||
} else {
|
||||
&CgiDie("cgi-lib.pl: Unknown Content-type: $ENV{'CONTENT_TYPE'}\n");
|
||||
}
|
||||
|
||||
# no-ops to avoid warnings
|
||||
$insfn = $insfn;
|
||||
$incfn = $incfn;
|
||||
$inct = $inct;
|
||||
|
||||
$^W = $perlwarn;
|
||||
|
||||
return ($errflag ? undef : scalar(@in));
|
||||
}
|
||||
|
||||
|
||||
# PrintHeader
|
||||
# Returns the magic line which tells WWW that we're an HTML document
|
||||
|
||||
sub PrintHeader {
|
||||
return "Content-type: text/html\n\n";
|
||||
}
|
||||
|
||||
|
||||
# HtmlTop
|
||||
# Returns the <head> of a document and the beginning of the body
|
||||
# with the title and a body <h1> header as specified by the parameter
|
||||
|
||||
sub HtmlTop
|
||||
{
|
||||
local ($title) = @_;
|
||||
|
||||
return <<END_OF_TEXT;
|
||||
<html>
|
||||
<head>
|
||||
<title>$title</title>
|
||||
</head>
|
||||
<body>
|
||||
<h1>$title</h1>
|
||||
END_OF_TEXT
|
||||
}
|
||||
|
||||
|
||||
# HtmlBot
|
||||
# Returns the </body>, </html> codes for the bottom of every HTML page
|
||||
|
||||
sub HtmlBot
|
||||
{
|
||||
return "</body>\n</html>\n";
|
||||
}
|
||||
|
||||
|
||||
# SplitParam
|
||||
# Splits a multi-valued parameter into a list of the constituent parameters
|
||||
|
||||
sub SplitParam
|
||||
{
|
||||
local ($param) = @_;
|
||||
local (@params) = split ("\0", $param);
|
||||
return (wantarray ? @params : $params[0]);
|
||||
}
|
||||
|
||||
|
||||
# MethGet
|
||||
# Return true if this cgi call was using the GET request, false otherwise
|
||||
|
||||
sub MethGet {
|
||||
return (defined $ENV{'REQUEST_METHOD'} && $ENV{'REQUEST_METHOD'} eq "GET");
|
||||
}
|
||||
|
||||
|
||||
# MethPost
|
||||
# Return true if this cgi call was using the POST request, false otherwise
|
||||
|
||||
sub MethPost {
|
||||
return (defined $ENV{'REQUEST_METHOD'} && $ENV{'REQUEST_METHOD'} eq "POST");
|
||||
}
|
||||
|
||||
|
||||
# MyBaseUrl
|
||||
# Returns the base URL to the script (i.e., no extra path or query string)
|
||||
sub MyBaseUrl {
|
||||
local ($ret, $perlwarn);
|
||||
$perlwarn = $^W; $^W = 0;
|
||||
$ret = 'http://' . $ENV{'SERVER_NAME'} .
|
||||
($ENV{'SERVER_PORT'} != 80 ? ":$ENV{'SERVER_PORT'}" : '') .
|
||||
$ENV{'SCRIPT_NAME'};
|
||||
$^W = $perlwarn;
|
||||
return $ret;
|
||||
}
|
||||
|
||||
|
||||
# MyFullUrl
|
||||
# Returns the full URL to the script (i.e., with extra path or query string)
|
||||
sub MyFullUrl {
|
||||
local ($ret, $perlwarn);
|
||||
$perlwarn = $^W; $^W = 0;
|
||||
$ret = 'http://' . $ENV{'SERVER_NAME'} .
|
||||
($ENV{'SERVER_PORT'} != 80 ? ":$ENV{'SERVER_PORT'}" : '') .
|
||||
$ENV{'SCRIPT_NAME'} . $ENV{'PATH_INFO'} .
|
||||
(length ($ENV{'QUERY_STRING'}) ? "?$ENV{'QUERY_STRING'}" : '');
|
||||
$^W = $perlwarn;
|
||||
return $ret;
|
||||
}
|
||||
|
||||
|
||||
# MyURL
|
||||
# Returns the base URL to the script (i.e., no extra path or query string)
|
||||
# This is obsolete and will be removed in later versions
|
||||
sub MyURL {
|
||||
return &MyBaseUrl;
|
||||
}
|
||||
|
||||
|
||||
# CgiError
|
||||
# Prints out an error message which which containes appropriate headers,
|
||||
# markup, etcetera.
|
||||
# Parameters:
|
||||
# If no parameters, gives a generic error message
|
||||
# Otherwise, the first parameter will be the title and the rest will
|
||||
# be given as different paragraphs of the body
|
||||
|
||||
sub CgiError {
|
||||
local (@msg) = @_;
|
||||
local ($i,$name);
|
||||
|
||||
if (!@msg) {
|
||||
$name = &MyFullUrl;
|
||||
@msg = ("Error: script $name encountered fatal error\n");
|
||||
};
|
||||
|
||||
if (!$cgi_lib'headerout) { #')
|
||||
print &PrintHeader;
|
||||
print "<html>\n<head>\n<title>$msg[0]</title>\n</head>\n<body>\n";
|
||||
}
|
||||
print "<h1>$msg[0]</h1>\n";
|
||||
foreach $i (1 .. $#msg) {
|
||||
print "<p>$msg[$i]</p>\n";
|
||||
}
|
||||
|
||||
$cgi_lib'headerout++;
|
||||
}
|
||||
|
||||
|
||||
# CgiDie
|
||||
# Identical to CgiError, but also quits with the passed error message.
|
||||
|
||||
sub CgiDie {
|
||||
local (@msg) = @_;
|
||||
&CgiError (@msg);
|
||||
die @msg;
|
||||
}
|
||||
|
||||
|
||||
# PrintVariables
|
||||
# Nicely formats variables. Three calling options:
|
||||
# A non-null associative array - prints the items in that array
|
||||
# A type-glob - prints the items in the associated assoc array
|
||||
# nothing - defaults to use %in
|
||||
# Typical use: &PrintVariables()
|
||||
|
||||
sub PrintVariables {
|
||||
local (*in) = @_ if @_ == 1;
|
||||
local (%in) = @_ if @_ > 1;
|
||||
local ($out, $key, $output);
|
||||
|
||||
$output = "\n<dl compact>\n";
|
||||
foreach $key (sort keys(%in)) {
|
||||
foreach (split("\0", $in{$key})) {
|
||||
($out = $_) =~ s/\n/<br>\n/g;
|
||||
$output .= "<dt><b>$key</b>\n <dd>:<i>$out</i>:<br>\n";
|
||||
}
|
||||
}
|
||||
$output .= "</dl>\n";
|
||||
|
||||
return $output;
|
||||
}
|
||||
|
||||
# PrintEnv
|
||||
# Nicely formats all environment variables and returns HTML string
|
||||
sub PrintEnv {
|
||||
&PrintVariables(*ENV);
|
||||
}
|
||||
|
||||
|
||||
# The following lines exist only to avoid warning messages
|
||||
$cgi_lib'writefiles = $cgi_lib'writefiles;
|
||||
$cgi_lib'bufsize = $cgi_lib'bufsize ;
|
||||
$cgi_lib'maxbound = $cgi_lib'maxbound;
|
||||
$cgi_lib'version = $cgi_lib'version;
|
||||
$cgi_lib'filepre = $cgi_lib'filepre;
|
||||
|
||||
1; #return true
|
||||
|
450
vim_plugins_src/cscope-15.8a/contrib/webcscope/cscope
Normal file
@ -0,0 +1,450 @@
|
||||
#!/usr/bin/perl
|
||||
|
||||
# $Id: cscope,v 1.2 2007/01/07 12:34:01 broeker Exp $
|
||||
#
|
||||
# WebCscope: A web interface to the cscope application
|
||||
# Copyright (C) 2001, Ragho Mahalingam <ragho@mahalingam.com>
|
||||
#
|
||||
# This program is free software; you can redistribute it and/or
|
||||
# modify it under the terms of the GNU Lesser General Public
|
||||
# License as published by the Free Software Foundation; either
|
||||
# version 2.1 of the License, or (at your option) any later version.
|
||||
#
|
||||
# This program is distributed in the hope that it will be useful,
|
||||
# but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
|
||||
# General Public License for more details.
|
||||
#
|
||||
# You should have received a copy of the GNU General Public
|
||||
# License along with this program; if not, write to the Free Software
|
||||
# Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
|
||||
#
|
||||
# Change History:
|
||||
#
|
||||
# $Log: cscope,v $
|
||||
# Revision 1.2 2007/01/07 12:34:01 broeker
|
||||
# Direct attention to security issues with webcscope.
|
||||
#
|
||||
# Revision 1.1 2001/06/29 14:20:16 petr
|
||||
# Added webcscope to contribs.
|
||||
#
|
||||
# Revision 1.3.4.1 2001/02/05 15:14:34 rmahalin
|
||||
# initial release with some bug fixes
|
||||
#
|
||||
# Revision 1.3.3.1 2001/01/22 22:21:23 rmahalin
|
||||
# added multi-database support
|
||||
# fixed cookie support for trivial functions; removed global trivials
|
||||
# added syntax highlighting for files displayed on browser
|
||||
#
|
||||
# Revision 1.3.1.1 2001/01/11 22:17:30 rmahalin
|
||||
# added direct download with mime-type 'text/c-source' and made cosmetic changes
|
||||
#
|
||||
# Revision 1.3 2001/01/11 21:36:39 rmahalin
|
||||
# *** empty log message ***
|
||||
#
|
||||
# Revision 1.2 2001/01/11 21:34:13 rmahalin
|
||||
# incorporated draft feedback changes
|
||||
#
|
||||
# Revision 1.1 2001/01/11 21:19:32 rmahalin
|
||||
# Initial revision
|
||||
#
|
||||
|
||||
require "cgi-lib.pl";
|
||||
|
||||
# current code version being used
|
||||
$version = "iSOS 2.5/int16";
|
||||
# full path to the cscope binary
|
||||
$cscopecmd = "/usr/global/bin/cscope";
|
||||
# cscope working directory, where all the in/out and db files are stored
|
||||
$cscopedir = "/usr/local/cscope";
|
||||
# trivial functions not to display, one per line in the trivs file
|
||||
$trivs = "/usr/local/htdocs/cscope/trivials";
|
||||
# temporary storage directory
|
||||
$tmpdir = "/tmp";
|
||||
$tmpinfile = $tmpdir . "/cscopein.$$";
|
||||
$tmpoutfile = $tmpdir . "/cscopeout.$$";
|
||||
$showfile = $tmpdir . "/showfile.$$";
|
||||
# C syntax highlighting application or uncomment the line beneath to just cat
|
||||
#$hiliter = "/bin/cat";
|
||||
$hiliter = "/usr/local/cgi-bin/cscope/hilite";
|
||||
($sec,$min,$hour,$mday,$mon,$year,$wday,$yday) = gmtime(time+1000000);
|
||||
$cookie_exp = sprintf("%s %02d-%s-%s %02d:%02d:%02d GMT", $wday, $mday, $mon, $year, $hour, $min, $sec);
|
||||
|
||||
# standard images, from the apache distribution
|
||||
$img{openfile} = "/icons/folder.gif";
|
||||
$img{downloadfile} = "/icons/folder.open.gif";
|
||||
$img{csymbol} = "/icons/c.gif";
|
||||
$img{upfunc} = "/icons/up.gif";
|
||||
$img{downfunc} = "/icons/down.gif";
|
||||
$img{globalfunc} = "/icons/world2.gif";
|
||||
$img{trashfunc} = "/icons/bomb.gif";
|
||||
$img{untrashfunc} = "/icons/back.gif";
|
||||
$img{back} = "/icons/left.gif";
|
||||
|
||||
# feedback details
|
||||
$comment{name} = "Ragho Mahalingam";
|
||||
$comment{email} = "ragho\@mahalingam.com";
|
||||
|
||||
# operations allowed
|
||||
@oper = ( "Find this C symbol",
|
||||
"Find this global symbol",
|
||||
"Find functions called by",
|
||||
"Find functions calling",
|
||||
"Find this text string",
|
||||
"---------------------",
|
||||
"Find this egrep pattern",
|
||||
"Find this file",
|
||||
"Find files #including this file" );
|
||||
|
||||
# -- removed global trivial function list in favor of customized trivials
|
||||
#open(TRIVIAL_FUNC, $trivs);
|
||||
#@trivial = <TRIVIAL_FUNC>;
|
||||
#close(TRIVIAL_FUNC);
|
||||
@trivial = ();
|
||||
|
||||
MAIN:
|
||||
|
||||
{
|
||||
$starttime = time;
|
||||
|
||||
if (&ReadParse(*input)) {
|
||||
&ProcessCookie;
|
||||
&ProcessForm;
|
||||
} else {
|
||||
&PrintForm;
|
||||
}
|
||||
}
|
||||
|
||||
sub ProcessCookie {
|
||||
|
||||
if ( defined $ENV{HTTP_COOKIE} ) {
|
||||
($var, $val) = split('=',$ENV{HTTP_COOKIE});
|
||||
$Cookie{$var} = $val;
|
||||
if ( defined $Cookie{'cs-trivf'} ) {
|
||||
# do nothing, else initialize it to null
|
||||
} else {
|
||||
$Cookie{'cs-trivf'} = "defined";
|
||||
}
|
||||
@loc_trivial = split(',', $Cookie{'cs-trivf'});
|
||||
@trivial = ( @loc_trivial );
|
||||
|
||||
}
|
||||
}
|
||||
|
||||
sub ProcessTrashForm {
|
||||
|
||||
if ( defined $input{'trash'} ) {
|
||||
@trivial = (@trivial, $input{'func'});
|
||||
} else {
|
||||
@tmptriv = ();
|
||||
for ($i=0; $i <= $#trivial; $i++) {
|
||||
$fhash = unpack('H*', $input{'func'});
|
||||
$thash = unpack('H*', $trivial[$i]);
|
||||
if ( $fhash != $thash ) {
|
||||
@tmptriv = ( @tmptriv, $trivial[$i] );
|
||||
}
|
||||
}
|
||||
@trivial = @tmptriv;
|
||||
}
|
||||
|
||||
$Cookie{'cs-trivf'} = join(',',@trivial);
|
||||
|
||||
print "Content-type: text/html\n";
|
||||
print "Set-Cookie: cs-trivf=$Cookie{'cs-trivf'}; path=$ENV{SCRIPT_NAME}; expires $cookie_exp\n\n";
|
||||
print &HtmlTop("Your WebCScope Trivial Functions");
|
||||
print "<ul>";
|
||||
for ($i=0; $i <= $#trivial; $i++) {
|
||||
print "<li><a href=\"$ENV{SCRIPT_NAME}?untrash=&func=$trivial[$i]\"><img src=$img{untrashfunc} border=0></a> $trivial[$i]";
|
||||
}
|
||||
print "</ul><hr>\n";
|
||||
print "Click <a href=\"#\" onClick=\"history.back();\"><img src=$img{back} border=0></a> to go back.\n";
|
||||
print &HtmlBot;
|
||||
|
||||
}
|
||||
|
||||
sub ProcessForm {
|
||||
|
||||
chdir $cscopedir;
|
||||
opendir(DIRLIST,$cscopedir);
|
||||
@dirlist = readdir(DIRLIST);
|
||||
closedir(DIRLIST);
|
||||
|
||||
if ( $input{'db'} eq "all" ) {
|
||||
@csdirs = ();
|
||||
for ($i=0; $i <= $#dirlist; $i++ ) {
|
||||
if ( ($dirlist[$i] ne ".") && ($dirlist[$i] ne "..") && ( -d $dirlist[$i] ) ) {
|
||||
@csdirs = ( @csdirs, $dirlist[$i] );
|
||||
}
|
||||
}
|
||||
} else {
|
||||
@csdirs = ( $input{'db'} );
|
||||
}
|
||||
|
||||
$op = $input{'op'};
|
||||
$arg = $input{'arg'};
|
||||
$shtriv = $input{'triv'};
|
||||
$db = $input{'db'};
|
||||
|
||||
if ( defined $input{'fshow'} ) { &ShowFileForm; exit; }
|
||||
if ( defined $input{'load'} ) { &DownloadFileForm; exit; }
|
||||
if ( (defined $input{'trash'}) || (defined $input{'untrash'}) ) {
|
||||
&ProcessTrashForm; exit; }
|
||||
|
||||
print &PrintHeader;
|
||||
print &HtmlTop ("WebCscope");
|
||||
print <<ENDOFHDR;
|
||||
<h3>Instructions</h3><p>
|
||||
<ul>
|
||||
<li><img src=$img{csymbol}> will find a symbol with this name<br>
|
||||
<li><img src=$img{upfunc}> will find functions <i>calling</i> this function<br>
|
||||
<li><img src=$img{downfunc}> will find functions <i>called</i> by this
|
||||
function<br>
|
||||
<li><img src=$img{globalfunc}> will locate a global definition of this name<br>
|
||||
<li><img src=$img{openfile}> will display this file and highlight
|
||||
the fragment line<br>
|
||||
<li><img src=$img{downloadfile}> will download this file with mimetype "text/c-source"<br>
|
||||
<li><img src=$img{trashfunc}> will add this symbol/function to your trivial list<br>
|
||||
</ul>
|
||||
<p><hr>
|
||||
ENDOFHDR
|
||||
|
||||
foreach $index ( 0 .. $#csdirs ) {
|
||||
|
||||
unlink $tmpinfile, $tmpoutfile;
|
||||
open(CSCOPEIN, ">$tmpinfile");
|
||||
print CSCOPEIN "$op$arg\n";
|
||||
print CSCOPEIN "exit\n";
|
||||
close(CSCOPEIN);
|
||||
|
||||
$dbdir = $cscopedir . "/" . $csdirs[$index];
|
||||
chdir($dbdir);
|
||||
|
||||
$syscmd = "cd $dbdir; $cscopecmd -d -l < $tmpinfile > $tmpoutfile;";
|
||||
system($syscmd);
|
||||
|
||||
$count = 1;
|
||||
open(CSCOPEIN, "$tmpoutfile");
|
||||
|
||||
$line = <CSCOPEIN>;
|
||||
@temp = split(' ',$line);
|
||||
$numresult = $temp[2];
|
||||
|
||||
print <<ENDOFHDRs;
|
||||
<h2>Search Results from <b>$csdirs[$index]</b></h2>
|
||||
<font size=+1>$oper[$op]: <b>$arg</b></font><br>
|
||||
Matches: $numresult<p>
|
||||
<table border=1 cellpadding=2 cellspacing=2>
|
||||
<tr><td><b>Num</b></td><td><b>File</b></td><td><b>Function</b></td>
|
||||
<td><b>Line</b></td><td><b>Fragment</b></td></tr>
|
||||
ENDOFHDRs
|
||||
|
||||
$trivs_rm = 0;
|
||||
|
||||
for ($i=0; $i < $numresult; $i++ ) {
|
||||
$line = <CSCOPEIN>;
|
||||
@fields = split(' ',$line);
|
||||
$file = shift @fields;
|
||||
$fshowfile = $file;
|
||||
$func = shift @fields;
|
||||
$lnum = shift @fields;
|
||||
@filef = split('/',$file);
|
||||
$file = $filef[$#filef];
|
||||
$frag = join(' ',@fields);
|
||||
|
||||
if ( ! $shtriv ) {
|
||||
for ( $j=0; $j <= $#trivial; $j++ )
|
||||
{
|
||||
$fhash = unpack('H*', $func);
|
||||
$thash = unpack('H*', $trivial[$j]);
|
||||
if ( $fhash == $thash ) { $trivs_rm++; goto done; }
|
||||
}
|
||||
}
|
||||
|
||||
if ( $func ne "<global>" && $func ne "<unknown>" ) {
|
||||
print <<ENDOFBODY1;
|
||||
<tr><td>$count</td>
|
||||
<td><a href="$ENV{SCRIPT_NAME}?fshow=1&fshowfile=$fshowfile&line=$lnum&db=$db">
|
||||
<img src=$img{openfile} border=0></a> $file
|
||||
<a href="$ENV{SCRIPT_NAME}?load=1&file=$fshowfile&db=$db">
|
||||
<img src=$img{downloadfile} border=0></a>
|
||||
</td>
|
||||
<td><a href="$ENV{SCRIPT_NAME}?op=0&triv=$shtriv&arg=$func&db=$db">
|
||||
<img src=$img{csymbol} border=0></a>
|
||||
<a href="$ENV{SCRIPT_NAME}?op=3&triv=$shtriv&arg=$func&db=$db">
|
||||
<img src=$img{upfunc} border=0></a>
|
||||
$func
|
||||
<a href="$ENV{SCRIPT_NAME}?op=2&triv=$shtriv&arg=$func&db=$db">
|
||||
<img src=$img{downfunc} border=0></a>
|
||||
<a href="$ENV{SCRIPT_NAME}?op=1&triv=$shtriv&arg=$func&db=$db">
|
||||
<img src=$img{globalfunc} border=0></a>
|
||||
<a href="$ENV{SCRIPT_NAME}?trash=&func=$func&db=$db">
|
||||
<img src=$img{trashfunc} border=0></a>
|
||||
</td>
|
||||
<td>$lnum</td>
|
||||
<td>$frag</td></tr>
|
||||
ENDOFBODY1
|
||||
|
||||
} else {
|
||||
$func =~ tr/<>/[]/;
|
||||
print <<ENDOFBODY2;
|
||||
<tr><td>$count</td>
|
||||
<td><a href="$ENV{SCRIPT_NAME}?fshow=1&fshowfile=$fshowfile&line=$lnum&db=$db">
|
||||
<img src=$img{openfile} border=0></a> $file
|
||||
<a href="$ENV{SCRIPT_NAME}?load=1&file=$fshowfile&db=$db">
|
||||
<img src=$img{downloadfile} border=0></a>
|
||||
</td>
|
||||
<td>$func</td>
|
||||
<td>$lnum</td>
|
||||
<td><$frag</td></tr>
|
||||
ENDOFBODY2
|
||||
|
||||
}
|
||||
|
||||
$count++;
|
||||
done:
|
||||
|
||||
}
|
||||
|
||||
close(CSCOPEIN);
|
||||
print "</table>\n";
|
||||
print "<br>Eliminated $trivs_rm line item(s) as trivial functions<p><hr>\n";
|
||||
unlink $tmpinfile, $tmpoutfile;
|
||||
|
||||
}
|
||||
|
||||
print &OperationTime;
|
||||
print &Feedback;
|
||||
print &HtmlBot;
|
||||
|
||||
}
|
||||
|
||||
sub DownloadFileForm {
|
||||
$file = $input{'file'};
|
||||
print "Content-type: text/c-source\n\n";
|
||||
open(SHOWFILE, $file);
|
||||
while (<SHOWFILE>) { print; }
|
||||
close(SHOWFILE);
|
||||
}
|
||||
|
||||
sub ShowFileForm {
|
||||
|
||||
$file = $input{'fshowfile'};
|
||||
$lnum = $input{'line'};
|
||||
|
||||
print &PrintHeader;
|
||||
print &HtmlTop ("WebCscope");
|
||||
print "<b>Note</b>: Click <a href=#ref><img src=$img{downfunc} border=0></a> to go to the reference line<p><hr>\n";
|
||||
print "<hr>";
|
||||
|
||||
unlink $showfile;
|
||||
system("$hiliter $file > $showfile");
|
||||
open(SHOWFILE, $showfile);
|
||||
|
||||
$curline = 1;
|
||||
while ( <SHOWFILE> ) {
|
||||
$line = $_;
|
||||
if ( $curline == $lnum ) {
|
||||
print "<a name=ref><blink>$line</blink>";
|
||||
} else {
|
||||
print $line;
|
||||
}
|
||||
$curline++;
|
||||
}
|
||||
|
||||
close (SHOWFILE);
|
||||
|
||||
|
||||
|
||||
print &OperationTime;
|
||||
print &Feedback;
|
||||
print &HtmlBot;
|
||||
}
|
||||
|
||||
sub PrintForm {
|
||||
|
||||
chdir $cscopedir;
|
||||
opendir(DIRLIST,$cscopedir);
|
||||
@dirlist = readdir(DIRLIST);
|
||||
closedir(DIRLIST);
|
||||
|
||||
@csdirs = ();
|
||||
for ($i=0; $i <= $#dirlist; $i++ ) {
|
||||
if ( ($dirlist[$i] ne ".") && ($dirlist[$i] ne "..") && ( -d $dirlist[$i] ) ) {
|
||||
@csdirs = ( @csdirs, $dirlist[$i] );
|
||||
}
|
||||
}
|
||||
|
||||
print &PrintHeader;
|
||||
print &HtmlTop ("Web-CScope");
|
||||
|
||||
print <<ENDOFTEXTA;
|
||||
<p style="color:red">Be aware that this webfrontend is insecure and allows viewing ALL apache readable files, including your configuration!</p>
|
||||
Select an operation below and enter a symbol, function or text to search in
|
||||
the database. The active version is $version. Input is case-sensitive,
|
||||
so if your search returns no results, check the case and the symbol name.<hr>
|
||||
<form method="get" action="$ENV{SCRIPT_NAME}">
|
||||
<table border=0 cellpadding=2 cellspacing=2>
|
||||
<tr>
|
||||
<td>Operation:</td>
|
||||
<td>
|
||||
<select name="op">
|
||||
ENDOFTEXTA
|
||||
|
||||
foreach $opi ( 0 .. $#oper ) {
|
||||
print "<option value=$opi>$oper[$opi]";
|
||||
}
|
||||
|
||||
print <<ENDOFTEXTB;
|
||||
</select>
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>CScope Database:</td>
|
||||
<td>
|
||||
<select name="db">
|
||||
<option selected value="all">All Databases
|
||||
ENDOFTEXTB
|
||||
|
||||
for ($i=0; $i <= $#csdirs; $i++) {
|
||||
print " <option value=\"$csdirs[$i]\">$csdirs[$i]\n";
|
||||
}
|
||||
|
||||
print <<ENDOFTEXT2;
|
||||
</select>
|
||||
<tr>
|
||||
<td>Symbol, function or text:</td>
|
||||
<td><input name="arg" size=30></td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td></td>
|
||||
<td halign=center>Show trivial functions:
|
||||
<input type=radio name="triv" value=1>Yes
|
||||
<input type=radio name="triv" value=0 checked>No
|
||||
<br><br>
|
||||
<input type="submit" value="Scope It!"></td>
|
||||
</tr>
|
||||
</table>
|
||||
<hr>
|
||||
</form>
|
||||
ENDOFTEXT2
|
||||
|
||||
print &Feedback;
|
||||
print &HtmlBot;
|
||||
}
|
||||
|
||||
sub Feedback {
|
||||
|
||||
$feedback = "<font size=-1>";
|
||||
$feedback .= '$Id: cscope,v 1.2 2007/01/07 12:34:01 broeker Exp $<br>';
|
||||
$feedback .= "$comment{name}<i><";
|
||||
$feedback .= "<a href=\"mailto:$comment{email}\">";
|
||||
$feedback .= "$comment{email}</a>></i></font>";
|
||||
return $feedback;
|
||||
}
|
||||
|
||||
sub OperationTime {
|
||||
|
||||
$deltime = time - $starttime;
|
||||
return "Operation took $deltime second(s)<br>";
|
||||
|
||||
}
|
360
vim_plugins_src/cscope-15.8a/contrib/webcscope/hilite.c
Normal file
@ -0,0 +1,360 @@
|
||||
/*
|
||||
CopyRight (C) 1999, Dmitry Obukhov, dso@usa.net
|
||||
mailto: dso@usa.net
|
||||
http://www.EmbeddedStuff.com
|
||||
|
||||
----------------------------------------------
|
||||
Last modified 6 Apr 97
|
||||
----------------------------------------------
|
||||
Converts C (C++) source to HTML code fragment
|
||||
with syntax highlighting.
|
||||
Since program written for personal purpose
|
||||
the <TABLE> tags generated. This is optional
|
||||
page format specific thing.
|
||||
|
||||
Usage: CTHM <input_file>. All output is done
|
||||
to STDOUTPUT, error messages to STDERR.
|
||||
For HTML fragment generation:
|
||||
CHTM file.c > file.htm
|
||||
|
||||
- Some input convertion required to use this
|
||||
code as CGI module. Will be done soon.
|
||||
- Optimization required for blocks of EOL
|
||||
comments
|
||||
*/
|
||||
|
||||
#include <stdio.h>
|
||||
|
||||
// ------------------- Decoding status values
|
||||
|
||||
#define START 0
|
||||
#define INLINE 1
|
||||
#define DEFINE 2
|
||||
// ------------------- Decoding Remark
|
||||
#define REM1 20
|
||||
#define REM2 21
|
||||
#define REM_END 22
|
||||
#define REM_STAR 23
|
||||
#define REM_STAR_1 24
|
||||
#define STRING 25 // String is "like" remark
|
||||
|
||||
|
||||
// ------------------- HTML TAG Generation
|
||||
#define ON 1
|
||||
#define OFF 0
|
||||
|
||||
// ------------------- HTML TAG type
|
||||
#define MODE_KEYWORD 0
|
||||
#define MODE_REMARK 2
|
||||
#define MODE_REMARK_EOL 4
|
||||
#define MODE_DEFINE 6
|
||||
#define MODE_STRING 8
|
||||
|
||||
|
||||
int is_delimeter(char c)
|
||||
{
|
||||
int ii=0;
|
||||
char dlms[] =
|
||||
"\t\r\n (){}[]+-*/%\"'&|^~:;<>.,";
|
||||
//--------------------------------
|
||||
while (dlms[ii])
|
||||
{
|
||||
if (c==dlms[ii++]) return 1;
|
||||
}
|
||||
return 0;
|
||||
}
|
||||
|
||||
int is_keyword(char * str)
|
||||
{
|
||||
char * kwords[] =
|
||||
{
|
||||
"asm", "auto",
|
||||
"break", "case",
|
||||
"cdecl", "char",
|
||||
"class", "const",
|
||||
"continue", "default",
|
||||
"delete", "do",
|
||||
"double", "else",
|
||||
"enum", "extern",
|
||||
"far", "float",
|
||||
"for", "friend",
|
||||
"goto", "huge",
|
||||
"if", "inline",
|
||||
"int", "interrupt",
|
||||
"long", "near",
|
||||
"new", "operator",
|
||||
"pascal", "private",
|
||||
"protected", "public",
|
||||
"register", "return",
|
||||
"short", "signed",
|
||||
"sizeof", "static",
|
||||
"struct", "switch",
|
||||
"template", "this",
|
||||
"typedef", "union",
|
||||
"unsigned", "virtual",
|
||||
"void", "volatile",
|
||||
"while", NULL
|
||||
};
|
||||
int ii=0;
|
||||
int jj;
|
||||
int check;
|
||||
|
||||
while (kwords[ii])
|
||||
{
|
||||
jj = 0;
|
||||
check = 1;
|
||||
while (kwords[ii][jj] && check)
|
||||
{
|
||||
if (str[jj] != kwords[ii][jj])
|
||||
{
|
||||
check = 0;
|
||||
}
|
||||
jj++;
|
||||
}
|
||||
if (check) return 1;
|
||||
ii++;
|
||||
}
|
||||
return 0;
|
||||
}
|
||||
|
||||
|
||||
void set_mode(int on_off, int mode)
|
||||
{
|
||||
char * tags[] =
|
||||
{
|
||||
//-------------------- KEYWORD
|
||||
"<strong>",
|
||||
"</strong>",
|
||||
//-------------------- Classic remarks
|
||||
"<font color=\"#336600\">",
|
||||
"</font>",
|
||||
//-------------------- EOL Remarks
|
||||
"<font color=\"#336600\">",
|
||||
"</font>",
|
||||
//-------------------- #DEFINE
|
||||
"<font color=\"#663300\"><strong>",
|
||||
"</strong></font>",
|
||||
//-------------------- "string"
|
||||
"<font color=\"#0000CC\">",
|
||||
"</font>",
|
||||
NULL, NULL
|
||||
};
|
||||
fprintf(stdout,tags[mode + 1 - on_off]);
|
||||
}
|
||||
|
||||
void print_char_html(char c)
|
||||
{
|
||||
switch (c)
|
||||
{
|
||||
case '<':
|
||||
fprintf(stdout,"<");
|
||||
break;
|
||||
case '>':
|
||||
fprintf(stdout,">");
|
||||
break;
|
||||
case '"':
|
||||
fprintf(stdout,""");
|
||||
break;
|
||||
case '&':
|
||||
fprintf(stdout,"&");
|
||||
break;
|
||||
case '|':
|
||||
fprintf(stdout,"¦");
|
||||
break;
|
||||
default:
|
||||
fprintf(stdout,"%c",c);
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
|
||||
int main(int _argc, char** _argv)
|
||||
{
|
||||
FILE *in, *out;
|
||||
char c;
|
||||
int mode;
|
||||
char buf[80];
|
||||
int bufidx = 0;
|
||||
int progress = 1;
|
||||
int echo;
|
||||
int saved_mode;
|
||||
int kw;
|
||||
char tmpc;
|
||||
char prevc;
|
||||
|
||||
if (_argc < 2)
|
||||
{
|
||||
fprintf(stderr,
|
||||
"USAGE: c2html <file>\n");
|
||||
return 1;
|
||||
}
|
||||
|
||||
|
||||
if ((in = fopen(_argv[1], "rt")) == NULL)
|
||||
{
|
||||
fprintf(stderr,
|
||||
"Cannot open input file.\n");
|
||||
return 1;
|
||||
}
|
||||
|
||||
fprintf(stdout, "<pre>");
|
||||
mode = START;
|
||||
|
||||
while (!feof(in) && progress)
|
||||
{
|
||||
echo = 1;
|
||||
prevc = c;
|
||||
c = fgetc(in);
|
||||
|
||||
if (c=='/' && (mode < REM1))
|
||||
{
|
||||
saved_mode = mode;
|
||||
mode = REM1;
|
||||
}
|
||||
|
||||
switch (mode)
|
||||
{
|
||||
case REM1:
|
||||
echo = 0;
|
||||
mode = REM2;
|
||||
break;
|
||||
|
||||
case REM2:
|
||||
if (c=='/')
|
||||
{
|
||||
if (saved_mode == DEFINE)
|
||||
{
|
||||
set_mode(OFF, MODE_DEFINE);
|
||||
}
|
||||
mode = REM_END;
|
||||
set_mode(ON, MODE_REMARK_EOL);
|
||||
}
|
||||
else if (c=='*')
|
||||
{
|
||||
if (saved_mode == DEFINE)
|
||||
{
|
||||
set_mode(OFF, MODE_DEFINE);
|
||||
}
|
||||
mode = REM_STAR;
|
||||
set_mode(ON, MODE_REMARK);
|
||||
}
|
||||
else
|
||||
{
|
||||
mode = saved_mode;
|
||||
}
|
||||
printf("/");
|
||||
break;
|
||||
|
||||
case REM_END:
|
||||
if (c=='\n')
|
||||
{
|
||||
set_mode(OFF, MODE_REMARK_EOL);
|
||||
}
|
||||
break;
|
||||
|
||||
case REM_STAR:
|
||||
if (c=='*')
|
||||
{
|
||||
mode = REM_STAR_1;
|
||||
}
|
||||
break;
|
||||
|
||||
case REM_STAR_1:
|
||||
if (c=='/')
|
||||
{
|
||||
mode = INLINE;
|
||||
fprintf(stdout,"/");
|
||||
echo = 0;
|
||||
set_mode(OFF, MODE_REMARK);
|
||||
}
|
||||
else mode = REM_STAR;
|
||||
break;
|
||||
|
||||
case START:
|
||||
if (c=='#')
|
||||
{
|
||||
mode = DEFINE;
|
||||
set_mode(ON, MODE_DEFINE);
|
||||
break;
|
||||
}
|
||||
else if (c==' ') break;
|
||||
|
||||
mode = INLINE;
|
||||
// and continue in next case
|
||||
|
||||
case INLINE:
|
||||
if (c=='"' && //
|
||||
prevc != 0x27 && //
|
||||
prevc != '\\') //
|
||||
{
|
||||
set_mode(ON, MODE_STRING);
|
||||
mode = STRING;
|
||||
}
|
||||
break;
|
||||
|
||||
case STRING:
|
||||
if (c=='"' && prevc != '\\')
|
||||
{
|
||||
print_char_html('"');
|
||||
set_mode(OFF, MODE_STRING);
|
||||
echo = 0;
|
||||
mode = INLINE;
|
||||
}
|
||||
break;
|
||||
|
||||
case DEFINE:
|
||||
if (c=='\n')
|
||||
{
|
||||
set_mode(OFF, MODE_DEFINE);
|
||||
}
|
||||
break;
|
||||
|
||||
}
|
||||
|
||||
if (echo && //
|
||||
(mode == INLINE || //
|
||||
(mode!=INLINE && //
|
||||
bufidx))) //
|
||||
{
|
||||
buf[bufidx++] = c;
|
||||
buf[bufidx] = 0;
|
||||
if (is_delimeter(c))
|
||||
{
|
||||
kw = 0;
|
||||
if (bufidx>2)
|
||||
{
|
||||
kw = is_keyword(buf);
|
||||
}
|
||||
if (kw)
|
||||
{
|
||||
set_mode(ON, MODE_KEYWORD);
|
||||
}
|
||||
tmpc = buf[bufidx-1];
|
||||
buf[bufidx-1] = 0;
|
||||
fprintf(stdout,"%s",buf);
|
||||
if (kw)
|
||||
{
|
||||
set_mode(OFF, MODE_KEYWORD);
|
||||
}
|
||||
print_char_html(tmpc);
|
||||
bufidx = 0;
|
||||
buf[0] = 0;
|
||||
}
|
||||
}
|
||||
else if (echo) print_char_html(c);
|
||||
|
||||
if (c=='\n' && mode != REM_STAR)
|
||||
{
|
||||
mode = START;
|
||||
}
|
||||
}
|
||||
|
||||
fclose(in);
|
||||
fprintf(stdout,"</pre>\n");
|
||||
fprintf(stdout,
|
||||
"<!-- == Generated by CHTM convertor -->\n");
|
||||
fprintf(stdout,
|
||||
"<!-- == CopyRight (C) 1999, Dmitry Obukhov, dso@usa.net -->\n");
|
||||
|
||||
return 0;
|
||||
}
|
BIN
vim_plugins_src/cscope-15.8a/contrib/webcscope/icons/back.gif
Normal file
After Width: | Height: | Size: 216 B |
BIN
vim_plugins_src/cscope-15.8a/contrib/webcscope/icons/bomb.gif
Normal file
After Width: | Height: | Size: 308 B |
BIN
vim_plugins_src/cscope-15.8a/contrib/webcscope/icons/c.gif
Normal file
After Width: | Height: | Size: 242 B |
BIN
vim_plugins_src/cscope-15.8a/contrib/webcscope/icons/down.gif
Normal file
After Width: | Height: | Size: 163 B |
BIN
vim_plugins_src/cscope-15.8a/contrib/webcscope/icons/folder.gif
Normal file
After Width: | Height: | Size: 225 B |
After Width: | Height: | Size: 242 B |
BIN
vim_plugins_src/cscope-15.8a/contrib/webcscope/icons/left.gif
Normal file
After Width: | Height: | Size: 172 B |
BIN
vim_plugins_src/cscope-15.8a/contrib/webcscope/icons/up.gif
Normal file
After Width: | Height: | Size: 164 B |
BIN
vim_plugins_src/cscope-15.8a/contrib/webcscope/icons/world2.gif
Normal file
After Width: | Height: | Size: 261 B |
166
vim_plugins_src/cscope-15.8a/contrib/xcscope/cscope-indexer
Normal file
@ -0,0 +1,166 @@
|
||||
#! /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
|