diff -r 574b963d0275 -r 4317d277ba21 scripts/unify-sources.sh --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/scripts/unify-sources.sh Sun Jul 13 16:46:56 2008 +0100 @@ -0,0 +1,134 @@ +#!/bin/bash + +YEAR=`date +2003-%Y` +HGROOT=`hg root` + +function update_header() { + TMP_FILE=`mktemp` + FILE_NAME=$1 + + (echo "/* -*- mode: C++; indent-tabs-mode: nil; -*- + * + * This file is a part of LEMON, a generic C++ optimization library. + * + * Copyright (C) "$YEAR" + * Egervary Jeno Kombinatorikus Optimalizalasi Kutatocsoport + * (Egervary Research Group on Combinatorial Optimization, EGRES). + * + * Permission to use, modify and distribute this software is granted + * provided that this copyright notice appears in all copies. For + * precise terms see the accompanying LICENSE file. + * + * This software is provided \"AS IS\" with no warranty of any kind, + * express or implied, and with no claim as to its suitability for any + * purpose. + * + */ +" + awk 'BEGIN { pm=0; } + pm==3 { print } + /\/\* / && pm==0 { pm=1;} + /[^:blank:]/ && (pm==0 || pm==2) { pm=3; print;} + /\*\// && pm==1 { pm=2;} + ' $1 + ) >$TMP_FILE + + HEADER_CH=`diff -q $TMP_FILE $FILE_NAME >/dev/null&&echo NO||echo YES` + + rm $FILE_NAME + mv $TMP_FILE $FILE_NAME +} + +function update_tabs() { + TMP_FILE=`mktemp` + FILE_NAME=$1 + + cat $1 | + sed -e 's/\t/ /g' >$TMP_FILE + + TABS_CH=`diff -q $TMP_FILE $FILE_NAME >/dev/null&&echo NO||echo YES` + + rm $FILE_NAME + mv $TMP_FILE $FILE_NAME +} + +function remove_trailing_space() { + TMP_FILE=`mktemp` + FILE_NAME=$1 + + cat $1 | + sed -e 's/ \+$//g' >$TMP_FILE + + SPACES_CH=`diff -q $TMP_FILE $FILE_NAME >/dev/null&&echo NO||echo YES` + + rm $FILE_NAME + mv $TMP_FILE $FILE_NAME +} + +function long_line_test() { + cat $1 |grep -q -E '.{81,}' +} + +function update_file() { + echo -n ' update' $i ... + + update_header $1 + update_tabs $1 + remove_trailing_space $1 + + CHANGED=NO; + if [[ $HEADER_CH = YES ]]; + then + echo -n ' [header updated]' + CHANGED=YES; + fi + if [[ $TABS_CH = YES ]]; + then + echo -n ' [tabs removed]' + CHANGED=YES; + fi + if [[ $SPACES_CH = YES ]]; + then + echo -n ' [trailing spaces removed]' + CHANGED=YES; + fi + if long_line_test $1 ; + then + echo -n ' [LONG LINES]' + ((LONG_LINE_FILES++)) + fi + echo + if [[ $CHANGED = YES ]]; + then + ((CHANGED_FILES++)) + fi +} + +CHANGED_FILES=0 +TOTAL_FILES=0 +LONG_LINE_FILES=0 +if [ $# == 0 ]; then + echo Update all source files... + for i in `hg manifest|grep -E '\.(cc|h|dox)$'` + do + update_file $HGROOT/$i + ((TOTAL_FILES++)) + done + echo ' done.' +else + for i in $* + do + update_file $i + ((TOTAL_FILES++)) + done +fi +echo $CHANGED_FILES out of $TOTAL_FILES files has been changed. +if [[ $LONG_LINE_FILES -gt 1 ]]; then + echo + echo WARNING: $LONG_LINE_FILES files contains long lines! + echo +elif [[ $LONG_LINE_FILES -gt 0 ]]; then + echo + echo WARNING: a file contains long lines! + echo +fi