NOTE : Get the Korn shell /bin/ksh by installing pdksh*.rpm from the Linux contrib cdrom
Save this file as a text file and chmod a+rx on it.
Note that there is also another Unix command by the name slist (list available Netware servers). You should make sure the CVS script slist comes before other in your PATH environment.
#!/bin/ksh # CVS program slist # Program to list all edited source files from CVS # Every filename is composed of 3 parts - Home directory, sub-directory # and the filename. The full-path is $HOME/$subdir/$fname # And in CVS the same directory structure is maintained (by # variable $subdir) therefore in cvs we will have $CVSROOT/$subdir/$fname # In this program these 4 variables $HOME, $CVSROOT, $subdir and $fname # play an important role. For example, sample values can be like # HOME=/home/aldev, subdir=myproject/src CVSROOT=/home/cvsroot # and fname=foo.cpp # Caution: Put double-quotes to protect the variables having # spaces, like "$HOME/$subdir" if subdir is 'some foo.cpp' # Usage: # $ slist (All files and sub-directories) # $ slist *.* (All files) # $ slist * (All files and sub-directories) # $ slist ab* (All files starting with ab wild-card) homedir=` echo $HOME | cut -f1 -d' ' ` if [ "$homedir" = "" ]; then print "\nError: \$HOME is not set!!\n" exit fi cur_dir=`pwd` #echo $cur_dir len=${#homedir} len=$(($len + 2)) #echo $len subdir=` echo $cur_dir | cut -b $len-2000 ` #echo "subdir is : " $subdir # If file is already checked out by another developer.... cvs_root=` echo $CVSROOT | cut -f1 -d' ' ` if [ "$cvs_root" = "" ]; then print "\nError: \$CVSROOT is not set!!\n" exit fi # If the current directory tree is not in cvs-root then exit if [ ! -d $CVSROOT/$subdir ]; then print "\nThe directory $subdir does not exist in $CVSROOT" exit fi #echo "no of params : " $# #echo "The arg $ 1 is : " $1 #echo "all args : " $@ if [ $# -eq 0 ]; then #tmpbb=` find * -prune -type d ` tmpbb=` find * -maxdepth 0 -type d ` elif [ $# -eq 1 ]; then if [ "$1" = "." ]; then #tmpbb=` find * -prune -type d ` tmpbb=` find * -maxdepth 0 -type d ` else if [ -d $1 -a ! -d $CVSROOT/$subdir/$1 ]; then print "\nThe directory $subdir/$1 does not exist in $CVSROOT" exit fi tmpbb=$@ fi else tmpbb=$@ fi #echo "The tmpbb is : " $tmpbb # Now, remove all the directory names which are not in cvs-root dirnames="" for ii in $tmpbb ; do if [ -d $CVSROOT/$subdir/$ii ]; then dirnames="$dirnames $ii " fi done #echo "The dirnames is : " $dirnames if [ "$dirnames" != "" ]; then find $dirnames -type f | while read ii do # List only those files which are in cvs system if [ -f "$CVSROOT/$subdir/$ii,v" ]; then #echo "ii is : " $ii ls -l $ii | grep ^\-rw fi done; fi # Get all the files in the current directory listfiles=`ls $tmpbb ` # Option prune does not work use maxdepth #find * -prune -type f | find * -maxdepth 0 -type f | while read ii do for jj in $listfiles ; do if [ "$jj" = "$ii" ]; then # List only those files which are in cvs system if [ -f "$CVSROOT/$subdir/$ii,v" ]; then #echo "ii is : " $ii ls -l $ii | grep ^\-rw fi fi done done;