mirror of
				https://git.code.sf.net/p/libpng/code.git
				synced 2025-07-10 18:04:09 +02:00 
			
		
		
		
	 a313751258
			
		
	
	
		a313751258
		
	
	
	
	
		
			
			Also added scripts/chkfmt to validate the format of all the files that can reasonably be validated (it is suggested to run "make distclean" before checking, because some machine generated files have long lines.) Reformatted the CHANGES file to be more consistent throughout.
		
			
				
	
	
		
			138 lines
		
	
	
		
			3.9 KiB
		
	
	
	
		
			Bash
		
	
	
		
			Executable File
		
	
	
	
	
			
		
		
	
	
			138 lines
		
	
	
		
			3.9 KiB
		
	
	
	
		
			Bash
		
	
	
		
			Executable File
		
	
	
	
	
| #!/bin/sh
 | |
| #
 | |
| # Check the format of the source files in the current directory - checks for a
 | |
| # line length of 80 characters max and no tab characters.
 | |
| #
 | |
| # Optionally arguments are files or directories to check.
 | |
| #
 | |
| # -v: output the long lines (makes fixing them easier)
 | |
| # -e: spawn an editor for each file that needs a change ($EDITOR must be
 | |
| #     defined).  When using -e the script MUST be run from an interactive
 | |
| #     command line.
 | |
| verbose=
 | |
| edit=
 | |
| vers=
 | |
| test "$1" = "-v" && {
 | |
|    shift
 | |
|    verbose=yes
 | |
| }
 | |
| test "$1" = "-e" && {
 | |
|    shift
 | |
|    if test -n "$EDITOR"
 | |
|    then
 | |
|       edit=yes
 | |
| 
 | |
|       # Copy the standard streams for the editor
 | |
|       exec 3>&0 4>&1 5>&2
 | |
|    else
 | |
|       echo "chkfmt -e: EDITOR must be defined" >&2
 | |
|       exit 1
 | |
|    fi
 | |
| }
 | |
| 
 | |
| # Function to edit a single file - if the file isn't changed ask the user
 | |
| # whether or not to continue.  This stuff only works if the script is run from
 | |
| # the command line (otherwise, don't specify -e or you will be sorry).
 | |
| doed(){
 | |
|    cp "$file" "$file".orig
 | |
|    "$EDITOR" "$file" 0>&3 1>&4 2>&5 3>&- 4>&- 5>&- || exit 1
 | |
|    if cmp -s "$file".orig "$file"
 | |
|    then
 | |
|       rm "$file".orig
 | |
|       echo -n "$file: file not changed, type anything to continue: " >&5
 | |
|       read ans 0>&3
 | |
|       test -n "$ans" || return 1
 | |
|    fi
 | |
|    return 0
 | |
| }
 | |
| 
 | |
| # In beta versions the version string which appears in files can be a little
 | |
| # long and cause spuriously overlong lines.  To avoid this subtitute the version
 | |
| # string with a 'standard' version a.b.cc before checking for long lines.
 | |
| if test -r png.h
 | |
| then
 | |
|    vers="`sed -n -e \
 | |
|    's/^#define PNG_LIBPNG_VER_STRING .\([0-9]\.[0-9]\.[0-9][0-9a-z]*\).$/\1/p' \
 | |
|    png.h`"
 | |
|    echo "chkfmt: checking version $vers"
 | |
| fi
 | |
| if test -z "$vers"
 | |
| then
 | |
|    echo "chkfmt: png.h not found, ignoring version number" >&2
 | |
| fi
 | |
| 
 | |
| test -n "$1" || set -- .
 | |
| find "$@" \( -type d \( -name '.git' -o -name '.libs' -o -name 'projects' \) \
 | |
|    -prune \) -o \( -type f \
 | |
|    ! -name '*.[oa]' ! -name '*.l[oa]' !  -name '*.png' ! -name '*.out' \
 | |
|    ! -name '*.jpg' ! -name '*.patch' ! -name '*.obj' ! -name '*.exe' \
 | |
|    ! -name '*.com' ! -name '*.tar.*' ! -name '*.zip' ! -name '*.ico' \
 | |
|    ! -name '*.res' ! -name '*.rc' ! -name '*.mms' ! -name '*.rej' \
 | |
|    ! -name '*.dsp' ! -name '*.orig' ! -name '*.dfn' ! -name '*.swp' \
 | |
|    ! -name '~*' ! -name '*.3' \
 | |
|    ! -name 'missing' ! -name 'mkinstalldirs' ! -name 'depcomp' \
 | |
|    ! -name 'aclocal.m4' ! -name 'install-sh' ! -name 'Makefile.in' \
 | |
|    ! -name 'ltmain.sh' ! -name 'config*' -print \) | {
 | |
|    st=0
 | |
|    while read file
 | |
|    do
 | |
|       case "$file" in
 | |
|       *.mak|*[Mm]akefile.*|*[Mm]akefile)
 | |
|          # Makefiles require tabs, dependency lines can be this long.
 | |
|          check_tabs=
 | |
|          line_length=100;;
 | |
|       *.awk)
 | |
|          # Includes literal tabs
 | |
|          check_tabs=
 | |
|          # The following is arbitrary
 | |
|          line_length=132;;
 | |
|       *contrib/*/*.[ch])
 | |
|          check_tabs=yes
 | |
|          line_length=96;;
 | |
|       *)
 | |
|          check_tabs=yes
 | |
|          line_length=80;;
 | |
|       esac
 | |
| 
 | |
|       # Note that vers can only contain 0-9, . and a-z
 | |
|       if test -n "$vers"
 | |
|       then
 | |
|          sed -e "s/$vers/a.b.cc/g" "$file" >"$file".$$
 | |
|       else
 | |
|          cp "$file" "$file".$$
 | |
|       fi
 | |
|       splt="`fold -$line_length "$file".$$ | diff -c "$file".$$ -`"
 | |
|       rm "$file".$$
 | |
| 
 | |
|       if test -n "$splt"
 | |
|       then
 | |
|          echo "$file: lines too long"
 | |
|          st=1
 | |
|          if test -n "$EDITOR" -a -n "$edit"
 | |
|          then
 | |
|             doed "$file" || exit 1
 | |
|          elif test -n "$verbose"
 | |
|          then
 | |
|             echo "$splt"
 | |
|          fi
 | |
|       fi
 | |
|       if test -n "$check_tabs"
 | |
|       then
 | |
|          tab="`tr -c -d '\t' <"$file"`"
 | |
|          if test -n "$tab"
 | |
|          then
 | |
|             echo "$file: file contains tab characters"
 | |
|             st=1
 | |
|             if test -n "$EDITOR" -a -n "$edit"
 | |
|             then
 | |
|                doed "$file" || exit 1
 | |
|             elif test -n "$verbose"
 | |
|             then
 | |
|                echo "$splt"
 | |
|             fi
 | |
|          fi
 | |
|       fi
 | |
|    done
 | |
|    exit $st
 | |
| }
 |