153 lines
4.7 KiB
Bash
Executable File
153 lines
4.7 KiB
Bash
Executable File
#!/bin/sh
|
|
|
|
#######################################################################
|
|
# #
|
|
# OCaml #
|
|
# #
|
|
# Damien Doligez, projet Gallium, INRIA Rocquencourt #
|
|
# #
|
|
# Copyright 2011 Institut National de Recherche en Informatique et #
|
|
# en Automatique. All rights reserved. This file is distributed #
|
|
# under the terms of the Q Public License version 1.0. #
|
|
# #
|
|
#######################################################################
|
|
|
|
(
|
|
case $# in
|
|
0) find . -type f -print;;
|
|
*) echo $1;;
|
|
esac
|
|
) | \
|
|
while read f; do
|
|
awk -f - "$f" <<\EOF
|
|
|
|
function checkline (x) {
|
|
return ( $0 ~ ("^.{0,4}" x) );
|
|
}
|
|
|
|
function hrule () {
|
|
return (checkline("[*#]{69}"));
|
|
}
|
|
|
|
function blank () {
|
|
return (checkline(" {69}"));
|
|
}
|
|
|
|
function ocaml () {
|
|
return (checkline(" {32}OCaml {32}") \
|
|
|| checkline(" {35}OCaml {32}") \
|
|
|| checkline(" ocamlbuild ") \
|
|
|| checkline(" OCamldoc ") \
|
|
);
|
|
}
|
|
|
|
function any () {
|
|
return (checkline(".{69}"));
|
|
}
|
|
|
|
function copy1 () {
|
|
return (checkline(" Copyright +[-0-9]+ +Institut +National +de +Recherche +en +Informatique +et "));
|
|
}
|
|
|
|
function copy2 () {
|
|
return (checkline(" en Automatique"));
|
|
}
|
|
|
|
function err () {
|
|
printf ("File \"%s\", line %d:\n", FILENAME, FNR);
|
|
printf (" Error: line %d of header is wrong.\n", FNR + offset);
|
|
print $0;
|
|
}
|
|
|
|
function add_ignore_re (x) {
|
|
ignore_re[++ignore_re_index] = x;
|
|
}
|
|
|
|
function add_exception (x) {
|
|
exception[++exception_index] = x;
|
|
}
|
|
|
|
FNR == 1 {
|
|
offset = 0;
|
|
add_ignore_re("/\\.svn/");
|
|
add_ignore_re("/\\.depend(\\.nt)?$");
|
|
add_ignore_re("/\\.ignore$");
|
|
add_ignore_re("\\.gif$");
|
|
add_ignore_re("/[A-Z]*$");
|
|
add_ignore_re("/README\\.[^/]*$");
|
|
add_ignore_re("/Changes$");
|
|
add_ignore_re("\\.mlpack$");
|
|
add_ignore_re("\\.mllib$");
|
|
add_ignore_re("\\.mltop$");
|
|
add_ignore_re("\\.clib$");
|
|
add_ignore_re("\\.odocl$");
|
|
add_ignore_re("\\.itarget$");
|
|
add_ignore_re("^\\./boot/");
|
|
add_ignore_re("^\\./camlp4/test/");
|
|
add_ignore_re("^\\./camlp4/unmaintained/");
|
|
add_ignore_re("^\\./config/gnu/");
|
|
add_ignore_re("^\\./experimental/");
|
|
add_ignore_re("^\\./ocamlbuild/examples/");
|
|
add_ignore_re("^\\./ocamlbuild/test/");
|
|
add_ignore_re("^\\./testsuite/");
|
|
for (i in ignore_re){
|
|
if (FILENAME ~ ignore_re[i]) { nextfile; }
|
|
}
|
|
add_exception("./asmrun/m68k.S"); # obsolete
|
|
add_exception("./build/camlp4-bootstrap-recipe.txt");
|
|
add_exception("./build/new-build-system");
|
|
add_exception("./ocamlbuild/ChangeLog");
|
|
add_exception("./ocamlbuild/manual/myocamlbuild.ml"); # TeX input file ?
|
|
add_exception("./ocamlbuild/manual/trace.out"); # TeX input file
|
|
add_exception("./ocamldoc/Changes.txt");
|
|
add_exception("./ocamldoc/ocamldoc.sty"); # public domain
|
|
add_exception("./tools/objinfo_helper.c"); # non-INRIA
|
|
add_exception("./tools/magic"); # public domain ?
|
|
add_exception("./Upgrading");
|
|
add_exception("./win32caml/inriares.h"); # generated
|
|
add_exception("./win32caml/ocaml.rc"); # generated
|
|
add_exception("./win32caml/resource.h"); # generated
|
|
for (i in exception){
|
|
if (FILENAME == exception[i]) { nextfile; }
|
|
}
|
|
}
|
|
|
|
# 1 [!hrule] #!
|
|
# 2 [!hrule] empty
|
|
# 3 hrule
|
|
# 4 [blank]
|
|
# 5 ocaml title
|
|
# 6 blank
|
|
# 7 any author
|
|
# 8 [!blank] author
|
|
# 9 [!blank] author
|
|
#10 blank
|
|
#11 copy1 copyright
|
|
#12 copy2 copyright
|
|
#13 any copyright
|
|
#14 [!blank] copyright
|
|
#15 [!blank] copyright
|
|
#16 blank
|
|
#17 hrule
|
|
|
|
FNR + offset == 1 && hrule() { ++offset; }
|
|
FNR + offset == 2 && hrule() { ++offset; }
|
|
FNR + offset == 3 && ! hrule() { err(); nextfile; }
|
|
FNR + offset == 4 && ! blank() { ++offset; }
|
|
FNR + offset == 5 && ! ocaml() { err(); nextfile; }
|
|
FNR + offset == 6 && ! blank() { err(); nextfile; }
|
|
FNR + offset == 7 && ! any() { err(); nextfile; }
|
|
FNR + offset == 8 && blank() { ++offset; }
|
|
FNR + offset == 9 && blank() { ++offset; }
|
|
FNR + offset ==10 && ! blank() { err(); nextfile; }
|
|
FNR + offset ==11 && ! copy1() { err(); nextfile; }
|
|
FNR + offset ==12 && ! copy2() { err(); nextfile; }
|
|
FNR + offset ==13 && ! any() { err(); nextfile; }
|
|
FNR + offset ==14 && blank() { ++offset; }
|
|
FNR + offset ==15 && blank() { ++offset; }
|
|
FNR + offset ==16 && ! blank() { err(); nextfile; }
|
|
FNR + offset ==17 && ! hrule() { err(); nextfile; }
|
|
|
|
EOF
|
|
done
|