File indexing completed on 2024-12-08 05:05:48
0001 #!/bin/sh 0002 # 0003 # Copyright (c) 2018, Michal Policht. This file is dually licensed under terms of 0004 # either WTFPL or BEER-WARE LICENSE. You may obtain the copy of WTFPL or BEER-WARE 0005 # LICENSE by googling it. NO WARRANTY. YOU WILL PAY ALL COSTS FOR ANY REPAIRS. 0006 # 0007 # A chain of commands to update header file include guard. 0008 # 0009 # usage: awkgward.sh awk_program header_file [prefix] [IORS] 0010 # example: awkgward.sh gawk header.hpp 0011 # 0012 # parameters: 0013 # awk_program - name of AWK implementation. 0014 # header_file - header file. 0015 # prefix - include guard prefix 0016 # IORS - input/output record separator (new lines style; typically: "\n" - unix mac "\r\n" - windows). 0017 # 0018 # required tools: sh, cut, grep, touch, stat, awk, echo, mv, awkgward.awk 0019 0020 0021 usage() 0022 { 0023 echo "usage: $0 awk_program header_file [prefix] [IORS]" 0024 echo "note: working directory from which this script is called" 0025 echo " must be a directory containing awkgward directory." 0026 } 0027 0028 if [ ! -e $2 ]; then 0029 echo $2 "does not exist" 0030 exit 1 0031 fi 0032 0033 if [ $# -lt 2 ]; then 0034 echo "error: too few arguments" 0035 usage 0036 exit 0 0037 fi 0038 0039 if [ $# -gt 2 ]; then 0040 prefix=$3; 0041 else 0042 prefix="" 0043 fi 0044 0045 if [ $# -gt 3 ]; then 0046 iors=$4; 0047 else 0048 iors="\n" 0049 fi 0050 0051 awk_program=$1 0052 header_file=$2 0053 echo $header_file 0054 timestamp=`stat $header_file | grep 'Modify: ' | cut -d ' ' -f 2,3,4` 0055 $awk_program -v ORS="$iors" -v RS="$iors" -v prefix="$prefix" -f awkgward/awkgward.awk $header_file > $header_file.awkgward 0056 mv $header_file.awkgward $header_file 0057 touch -md "$timestamp" $header_file 0058