[PATCH wayland] scanner: Fix oddities in copyright printing
Jon A. Cruz
jonc at osg.samsung.com
Tue Feb 2 21:23:01 UTC 2016
On 02/02/2016 12:56 PM, Derek Foreman wrote:
> Some copyright strings could result in broken generated header files with
> unmatched */
>
> This change:
> Runs the loop long enough so the copyright[i] == 0 test can actually
> happen. (if there was no \n no copyright text was printed, */ still was)
>
> Prints the opening /* even if there was whitespace at the start of
> the very first line.
>
> Only emits a */ if a /* was printed.
>
> Signed-off-by: Derek Foreman <derekf at osg.samsung.com>
Looks good to me:
Reviewed-by: Jon A. Cruz <jonc at osg.samsung.com>
> ---
> src/scanner.c | 16 ++++++++++------
> 1 file changed, 10 insertions(+), 6 deletions(-)
>
> diff --git a/src/scanner.c b/src/scanner.c
> index dda5473..d3e2328 100644
> --- a/src/scanner.c
> +++ b/src/scanner.c
> @@ -1284,25 +1284,29 @@ emit_structs(struct wl_list *message_list, struct interface *interface, enum sid
> static void
> format_copyright(const char *copyright)
> {
> - int bol = 1, start = 0, i;
> + int bol = 1, start = 0, i, length;
> + bool comment_started = false;
>
> - for (i = 0; copyright[i]; i++) {
> + length = strlen(copyright);
> + for (i = 0; i <= length; i++) {
> if (bol && (copyright[i] == ' ' || copyright[i] == '\t')) {
> continue;
> } else if (bol) {
> bol = 0;
> start = i;
> }
> -
> - if (copyright[i] == '\n' || copyright[i] == '\0') {
> + if (copyright[i] == '\n' ||
> + (copyright[i] == '\0' && !(start == i))) {
> printf("%s%s%.*s\n",
> - i == 0 ? "/*" : " *",
> + comment_started ? " *" : "/*",
> i > start ? " " : "",
> i - start, copyright + start);
> bol = 1;
> + comment_started = true;
> }
> }
> - printf(" */\n\n");
> + if (comment_started)
> + printf(" */\n\n");
> }
>
> static void
More information about the wayland-devel
mailing list