#!/bin/sh

# $PostgreSQL: pgsql/src/tools/add_cvs_markers,v 1.2 2008/06/15 21:58:55 adunstan Exp $

# Author: Andrew Dunstan

# Script to add PostgreSQL markers to source files that are lacking them.
# currently only works for .c and .h files

# Needs a sed that understands the -i switch. 
# Really only tested on my Linux box.

# We try to avoid adding markers to third party files, or files that will
# cause regression problems (e.g. some ecpg headers).

# If the file begins with a comment, we put the marker in there, 
# otherwise we add a new comment at the top of the file. This makes things
# a bit prettier.

# This script should be run at the top of the source tree. 
# If we're in the tools directory, the script tries to take us to the 
# right spot.
CWD=`pwd`
test "`basename $CWD`" = "tools" && cd ../.. 

# need a dummy file in case we don't find any with missing markers,
# to suppress messages about sed not finding any input files
touch dummy

# first process the files that already start with a comment:

find . \( \( -name 'libstemmer' -o -name 'expected' -o -name 'ppport.h' \
     -o -name 'regression.h' -o -name 'sql3types.h' -o -name 'sqlca.h' \) \
     -prune \) -o  \( -name '*.[ch]' \) \( -exec grep -q '\$PostgreSQL' {} \; \
     -o -print \) | \
  { while read file ; do 
      head -n 1 < $file | grep -q '^/\*' && echo $file 
    done ; echo dummy ;} |  \
  xargs -l sed -i -e '1s/^\// /' -e '1i/*\n * \x24PostgreSQL:$ \n *'

# now all the rest (i.e. the files that don't start with a comment)

{ find . \( \( -name 'libstemmer' -o -name 'expected' -o -name 'ppport.h' \
     -o -name 'regression.h' -o -name 'sql3types.h' -o -name 'sqlca.h' \) \
     -prune \) -o  \( -name '*.[ch]' \) \( -exec grep -q '\$PostgreSQL' {} \; \
     -o -print \) ; echo dummy ;} | \
  xargs -l sed -i -e '1i/*\n * \x24PostgreSQL:$ \n */'

rm -f dummy

