8 function log_msg
(severity
, msg
)
10 printf "%s (%d): %s: %s %s\n", FILENAME, FNR, severity
, doc_name
, msg
13 function log_error
(msg
)
18 function log_warning
(msg
)
20 log_msg
("WARNING", msg
)
28 /^
(\
/\
*\
*$
| \
*[ \t]| \
*$
| \
*\
*\
/$
)/ {
34 log_error
("bad line: '" $
0 "'")
39 # new doc name. Did we find the previous one?
40 # (macros are not expected to be found in the same place as
41 # their documentation)
42 if (!name_found
&& doc_name !~
/CAIRO_
/)
43 log_warning
("not found")
45 if (doc_name ~
/^SECTION
:.
*$
/) {
46 doc_type = SECTION_DOC
48 } else if (tolower(doc_name
) ~
/^cairo_
[a
-z0
-9_
]*:$
/) {
51 real_name =
substr(doc_name
, 1, length(doc_name
) - 1)
52 } else if (tolower(doc_name
) ~
/^_
[a
-z0
-9_
]*:$
/) {
53 doc_type = PRIVATE_DOC
55 real_name =
substr(doc_name
, 1, length(doc_name
) - 1)
57 log_error
("invalid doc id (should be 'cairo_...:')")
64 regex =
"(^|[ \\t\\*])" real_name
"([ ;()]|$)"
69 /^ \
* Since
: ([0-9]*.
[0-9]*|TBD
)$
/ {
70 if (doc_has_since
!= 0) {
71 log_error
("Duplicate 'Since' field")
73 doc_has_since = doc_line
77 if (doc_type == PUBLIC_DOC
) {
79 # private types can start with cairo_
80 if (doc_name ~
/^cairo_.
*_t
:$
/)
81 log_warning
("missing 'Since' field (is it a private type?)")
83 log_error
("missing 'Since' field")
84 } else if (doc_has_since
!= doc_line
- 1)
85 log_warning
("misplaced 'Since' field (should be right before the end of the comment)")
88 log_warning
("'Since' field in non-public element")
99 log_error
("documentation comment not closed with **/")
105 log_warning
("not found")