| [38] | 1 | #!/bin/bash | 
|---|
 | 2 |  | 
|---|
 | 3 | YEAR=`date +2003-%Y` | 
|---|
 | 4 | HGROOT=`hg root` | 
|---|
 | 5 |  | 
|---|
| [208] | 6 | function update_header() { | 
|---|
| [38] | 7 |     TMP_FILE=`mktemp` | 
|---|
 | 8 |     FILE_NAME=$1 | 
|---|
 | 9 |  | 
|---|
| [208] | 10 |     (echo "/* -*- mode: C++; indent-tabs-mode: nil; -*- | 
|---|
| [38] | 11 |  * | 
|---|
| [208] | 12 |  * This file is a part of LEMON, a generic C++ optimization library. | 
|---|
| [38] | 13 |  * | 
|---|
 | 14 |  * Copyright (C) "$YEAR" | 
|---|
 | 15 |  * Egervary Jeno Kombinatorikus Optimalizalasi Kutatocsoport | 
|---|
 | 16 |  * (Egervary Research Group on Combinatorial Optimization, EGRES). | 
|---|
 | 17 |  * | 
|---|
 | 18 |  * Permission to use, modify and distribute this software is granted | 
|---|
 | 19 |  * provided that this copyright notice appears in all copies. For | 
|---|
 | 20 |  * precise terms see the accompanying LICENSE file. | 
|---|
 | 21 |  * | 
|---|
 | 22 |  * This software is provided \"AS IS\" with no warranty of any kind, | 
|---|
 | 23 |  * express or implied, and with no claim as to its suitability for any | 
|---|
 | 24 |  * purpose. | 
|---|
 | 25 |  * | 
|---|
 | 26 |  */ | 
|---|
 | 27 | " | 
|---|
 | 28 |         awk 'BEGIN { pm=0; } | 
|---|
 | 29 |      pm==3 { print } | 
|---|
 | 30 |      /\/\* / && pm==0 { pm=1;} | 
|---|
 | 31 |      /[^:blank:]/ && (pm==0 || pm==2) { pm=3; print;} | 
|---|
 | 32 |      /\*\// && pm==1 { pm=2;} | 
|---|
 | 33 |     ' $1 | 
|---|
 | 34 |         ) >$TMP_FILE | 
|---|
| [208] | 35 |  | 
|---|
 | 36 |     HEADER_CH=`diff -q $TMP_FILE $FILE_NAME >/dev/null&&echo NO||echo YES` | 
|---|
 | 37 |  | 
|---|
| [38] | 38 |     rm $FILE_NAME | 
|---|
 | 39 |     mv $TMP_FILE $FILE_NAME | 
|---|
 | 40 | } | 
|---|
 | 41 |  | 
|---|
| [208] | 42 | function update_tabs() { | 
|---|
 | 43 |     TMP_FILE=`mktemp` | 
|---|
 | 44 |     FILE_NAME=$1 | 
|---|
| [38] | 45 |  | 
|---|
| [208] | 46 |     cat $1 | | 
|---|
 | 47 |     sed -e 's/\t/        /g' >$TMP_FILE | 
|---|
 | 48 |  | 
|---|
 | 49 |     TABS_CH=`diff -q $TMP_FILE $FILE_NAME >/dev/null&&echo NO||echo YES` | 
|---|
 | 50 |  | 
|---|
 | 51 |     rm $FILE_NAME | 
|---|
 | 52 |     mv $TMP_FILE $FILE_NAME | 
|---|
 | 53 | } | 
|---|
 | 54 |  | 
|---|
 | 55 | function remove_trailing_space() { | 
|---|
 | 56 |     TMP_FILE=`mktemp` | 
|---|
 | 57 |     FILE_NAME=$1 | 
|---|
 | 58 |  | 
|---|
 | 59 |     cat $1 | | 
|---|
 | 60 |     sed -e 's/ \+$//g' >$TMP_FILE | 
|---|
 | 61 |  | 
|---|
 | 62 |     SPACES_CH=`diff -q $TMP_FILE $FILE_NAME >/dev/null&&echo NO||echo YES` | 
|---|
 | 63 |  | 
|---|
 | 64 |     rm $FILE_NAME | 
|---|
 | 65 |     mv $TMP_FILE $FILE_NAME | 
|---|
 | 66 | } | 
|---|
 | 67 |  | 
|---|
 | 68 | function long_line_test() { | 
|---|
 | 69 |     cat $1 |grep -q -E '.{81,}' | 
|---|
 | 70 | } | 
|---|
 | 71 |  | 
|---|
 | 72 | function update_file() { | 
|---|
 | 73 |     echo -n '    update' $i ... | 
|---|
 | 74 |  | 
|---|
 | 75 |     update_header $1 | 
|---|
 | 76 |     update_tabs $1 | 
|---|
 | 77 |     remove_trailing_space $1 | 
|---|
 | 78 |  | 
|---|
 | 79 |     CHANGED=NO; | 
|---|
 | 80 |     if [[ $HEADER_CH = YES ]]; | 
|---|
 | 81 |     then | 
|---|
 | 82 |         echo -n '  [header updated]' | 
|---|
 | 83 |         CHANGED=YES; | 
|---|
 | 84 |     fi | 
|---|
 | 85 |     if [[ $TABS_CH = YES ]]; | 
|---|
 | 86 |     then | 
|---|
 | 87 |         echo -n ' [tabs removed]' | 
|---|
 | 88 |         CHANGED=YES; | 
|---|
 | 89 |     fi | 
|---|
 | 90 |     if [[ $SPACES_CH = YES ]]; | 
|---|
 | 91 |     then | 
|---|
 | 92 |         echo -n ' [trailing spaces removed]' | 
|---|
 | 93 |         CHANGED=YES; | 
|---|
 | 94 |     fi | 
|---|
 | 95 |     if long_line_test $1 ; | 
|---|
 | 96 |     then | 
|---|
 | 97 |         echo -n ' [LONG LINES]' | 
|---|
 | 98 |         ((LONG_LINE_FILES++)) | 
|---|
 | 99 |     fi | 
|---|
 | 100 |     echo | 
|---|
 | 101 |     if [[ $CHANGED = YES ]]; | 
|---|
 | 102 |     then | 
|---|
 | 103 |         ((CHANGED_FILES++)) | 
|---|
 | 104 |     fi | 
|---|
 | 105 | } | 
|---|
 | 106 |  | 
|---|
 | 107 | CHANGED_FILES=0 | 
|---|
 | 108 | TOTAL_FILES=0 | 
|---|
 | 109 | LONG_LINE_FILES=0 | 
|---|
| [38] | 110 | if [ $# == 0 ]; then | 
|---|
| [208] | 111 |     echo Update all source files... | 
|---|
| [38] | 112 |     for i in `hg manifest|grep -E  '\.(cc|h|dox)$'` | 
|---|
 | 113 |     do | 
|---|
 | 114 |         update_file $HGROOT/$i | 
|---|
| [208] | 115 |         ((TOTAL_FILES++)) | 
|---|
| [38] | 116 |     done | 
|---|
| [208] | 117 |     echo '  done.' | 
|---|
| [38] | 118 | else | 
|---|
 | 119 |     for i in $* | 
|---|
 | 120 |     do | 
|---|
 | 121 |         update_file $i | 
|---|
| [208] | 122 |         ((TOTAL_FILES++)) | 
|---|
| [38] | 123 |     done | 
|---|
 | 124 | fi | 
|---|
| [208] | 125 | echo $CHANGED_FILES out of $TOTAL_FILES files has been changed. | 
|---|
 | 126 | if [[ $LONG_LINE_FILES -gt 1 ]]; then | 
|---|
 | 127 |     echo | 
|---|
 | 128 |     echo WARNING: $LONG_LINE_FILES files contains long lines!     | 
|---|
 | 129 |     echo | 
|---|
 | 130 | elif [[ $LONG_LINE_FILES -gt 0 ]]; then | 
|---|
 | 131 |     echo | 
|---|
 | 132 |     echo WARNING: a file contains long lines! | 
|---|
 | 133 |     echo | 
|---|
 | 134 | fi | 
|---|