#
2084:7d479274f334 |
| 30-Apr-2022 |
Alejandro Colomar |
Fixed #define style.
We had a mix of styles for declaring function-like macros:
Style A: #define \ foo() \ do { \ ...
Fixed #define style.
We had a mix of styles for declaring function-like macros:
Style A: #define \ foo() \ do { \ ... \ } while (0)
Style B: #define foo() \ do { \ ... \ } while (0)
We had a similar number of occurences of each style:
$ grep -rnI '^\w*(.*\\' | wc -l 244 $ grep -rn 'define.*(.*)' | wc -l 239
(Those regexes aren't perfect, but a very decent approximation.)
Real examples:
$ find src -type f | xargs sed -n '/^nxt_double_is_zero/,/^$/p' nxt_double_is_zero(f) \ (fabs(f) <= FLT_EPSILON)
$ find src -type f | xargs sed -n '/define nxt_http_field_set/,/^$/p' #define nxt_http_field_set(_field, _name, _value) \ do { \ (_field)->name_length = nxt_length(_name); \ (_field)->value_length = nxt_length(_value); \ (_field)->name = (u_char *) _name; \ (_field)->value = (u_char *) _value; \ } while (0)
I'd like to standardize on a single style for them, and IMO, having the identifier in the same line as #define is a better option for the following reasons:
- Programmers are used to `#define foo() ...` (readability). - One less line of code. - The program for finding them is really simple (see below).
function grep_ngx_func() { if (($# != 1)); then >&2 echo "Usage: ${FUNCNAME[0]} <func>"; return 1; fi;
find src -type f \ | grep '\.[ch]$' \ | xargs grep -l "$1" \ | sort \ | xargs pcregrep -Mn "(?s)^\$[\w\s*]+?^$1\(.*?^}";
find src -type f \ | grep '\.[ch]$' \ | xargs grep -l "$1" \ | sort \ | xargs pcregrep -Mn "(?s)define $1\(.*?^$" \ | sed -E '1s/^[^:]+:[0-9]+:/&\n\n/'; }
$ grep_ngx_func Usage: grep_ngx_func <func>
$ grep_ngx_func nxt_http_field_set src/nxt_http.h:98:
#define nxt_http_field_set(_field, _name, _value) \ do { \ (_field)->name_length = nxt_length(_name); \ (_field)->value_length = nxt_length(_value); \ (_field)->name = (u_char *) _name; \ (_field)->value = (u_char *) _value; \ } while (0)
$ grep_ngx_func nxt_sprintf src/nxt_sprintf.c:56:
u_char * nxt_cdecl nxt_sprintf(u_char *buf, u_char *end, const char *fmt, ...) { u_char *p; va_list args;
va_start(args, fmt); p = nxt_vsprintf(buf, end, fmt, args); va_end(args);
return p; }
................ Scripted change: ................
$ find src -type f \ | grep '\.[ch]$' \ | xargs sed -i '/define *\\$/{N;s/ *\\\n/ /;s/ //}'
show more ...
|
#
2079:0dcffa83cac2 |
| 11-Mar-2022 |
Alejandro Colomar |
Added NXT_MAYBE_UNUSED for __attribute__((__unused__)).
When testing some configurations of compilers and OSes, I noticed that clang(1) 13 on Debian caused a function to be compiled but unused, and
Added NXT_MAYBE_UNUSED for __attribute__((__unused__)).
When testing some configurations of compilers and OSes, I noticed that clang(1) 13 on Debian caused a function to be compiled but unused, and the compiler triggered a compile error.
To avoid that error, use __attribute__((__unused__)). Let's call our wrapper NXT_MAYBE_UNUSED, since it describes itself more precisely than the GCC attribute name. It's also the name that C2x (likely C23) has given to the standard attribute, which is [[maybe_unused]], so it's also likely to be more readable because of that name being in ISO C.
show more ...
|
Revision tags: 1.26.1-1, 1.26.1, 1.26.0-1, 1.26.0, 1.25.0-1, 1.25.0, 1.24.0-1, 1.24.0, 1.23.0-1, 1.23.0, 1.22.0-1, 1.22.0, 1.21.0-1, 1.21.0, 1.20.0-1, 1.20.0, 1.19.0-1, 1.19.0, 1.18.0-1, 1.18.0, 1.17.0-1, 1.17.0, 1.16.0-1, 1.16.0, 1.15.0-1, 1.15.0, 1.14.0-1, 1.14.0, 1.13.0-1, 1.13.0, 1.12.0-1, 1.12.0, 1.11.0-2, 1.11.0-1, 1.11.0, 1.10.0-2, 1.10.0-1, 1.10.0, 1.9.0-1, 1.9.0, 1.8.0-1, 1.8.0, 1.7.1-1, 1.7.1, 1.7-1, 1.7, 1.6-1, 1.6, 1.5-1, 1.5, 1.4-2, 1.4, 1.3 |
|
#
703:2d536dde84d2 |
| 25-Jun-2018 |
Valentin Bartenev |
Introduced nxt_length() macro.
|
#
702:36ced65db1e7 |
| 21-Jun-2018 |
Valentin Bartenev |
More effective implementation of nxt_popcount().
This method requires as many iterations as there are set bits, while the previous one has to shift up to the position of the highest bit.
|
#
701:f184ffeb0f02 |
| 20-Jun-2018 |
Sergey Kandaurov |
Using own popcount where the compiler builtin is not available.
|
Revision tags: 1.2, 1.1, 1.0 |
|
#
611:323e11065f83 |
| 04-Apr-2018 |
Valentin Bartenev |
Style: capitalized letters in hexadecimal literals.
|
Revision tags: 0.7, 0.6, 0.5, 0.4, 0.3, 0.2, 0.1 |
|
#
169:74de02d14ca7 |
| 18-Jul-2017 |
Valentin Bartenev |
More accurate "packed" attribute declaration.
|
#
124:edf56c785009 |
| 07-Jul-2017 |
Max Romanov |
Cosmetic changes to remove some annoying valgrind messages.
|
#
97:628b363354f1 |
| 26-Jun-2017 |
Valentin Bartenev |
Interface for mapping JSON configuration objects to C structures.
|
#
93:8c66fdbc526b |
| 26-Jun-2017 |
Max Romanov |
Build on Solaris 11 fixed.
|
#
63:b79fe37d9f24 |
| 19-Jun-2017 |
Igor Sysoev |
Memory pools refactoring.
|
#
53:0b10a73d4993 |
| 31-May-2017 |
Igor Sysoev |
Skeleton of router configuration and request processing.
|
#
35:ebff3eed9b25 |
| 11-Apr-2017 |
Valentin Bartenev |
The nxt_expect() macro.
|
#
0:a63ceefd6ab0 |
| 17-Jan-2017 |
Igor Sysoev |
Initial version.
|