[prev in list] [next in list] [prev in thread] [next in thread] 

List:       gameoftrees
Subject:    Re: patch: generic commit header management in 'got log'
From:       Stefan Sperling <stsp () stsp ! name>
Date:       2019-09-28 12:01:24
Message-ID: 20190928120124.GB19134 () ted ! stsp ! name
[Download RAW message or body]

On Sat, Sep 28, 2019 at 01:44:18PM +0200, Sebastien Marie wrote:
> New diff below.
> -- 
> Sebastien Marie

OK by me, thank you!

> diff 500467ff1bf0dbd15c0941dd741e80c35c708818 /home/semarie/repos/openbsd/got
> blob - b6cd712c154536cdfbd3c4dec1d9f014e4630378
> file + lib/object_parse.c
> --- lib/object_parse.c
> +++ lib/object_parse.c
> @@ -419,16 +419,13 @@ got_object_commit_get_committer_gmtoff(struct got_comm
>  	return commit->committer_gmtoff;
>  }
>  
> -#define GOT_GPG_BEGIN_STR "gpgsig -----BEGIN PGP SIGNATURE-----"
> -#define GOT_GPG_END_STR " -----END PGP SIGNATURE-----"
> -
>  const struct got_error *
>  got_object_commit_get_logmsg(char **logmsg, struct got_commit_object *commit)
>  {
>  	const struct got_error *err = NULL;
> -	int gpgsig = 0;
>  	char *msg0, *msg, *line, *s;
>  	size_t len;
> +	int headers = 1;
>  
>  	*logmsg = NULL;
>  
> @@ -436,32 +433,36 @@ got_object_commit_get_logmsg(char **logmsg, struct got
>  	if (msg0 == NULL)
>  		return got_error_from_errno("strdup");
>  
> -	/* Copy log message line by line to strip out GPG sigs... */
> +	/* Copy log message line by line to strip out unusual headers... */
>  	msg = msg0;
>  	do {
> -		line = strsep(&msg, "\n");
> +		if ((line = strsep(&msg, "\n")) == NULL)
> +			break;
>  
> -		if (line) {
> -			/* Skip over GPG signatures. */
> -			if (gpgsig) {
> -				if (strcmp(line, GOT_GPG_END_STR) == 0) {
> -					gpgsig = 0;
> -					/* Skip empty line after sig. */
> -					line = strsep(&msg, "\n");
> -				}
> +		if (headers == 1) {
> +			if (line[0] != '\0' &&
> +			    strncmp(line, GOT_COMMIT_LABEL_TREE,
> +			        strlen(GOT_COMMIT_LABEL_TREE)) != 0 &&
> +			    strncmp(line, GOT_COMMIT_LABEL_AUTHOR,
> +			        strlen(GOT_COMMIT_LABEL_AUTHOR)) != 0 &&
> +			    strncmp(line, GOT_COMMIT_LABEL_PARENT,
> +			        strlen(GOT_COMMIT_LABEL_PARENT)) != 0 &&
> +			    strncmp(line, GOT_COMMIT_LABEL_COMMITTER,
> +			        strlen(GOT_COMMIT_LABEL_COMMITTER)) != 0)
>  				continue;
> -			} else if (strcmp(line, GOT_GPG_BEGIN_STR) == 0) {
> -				gpgsig = 1;
> -				continue;
> -			}
> -			if (asprintf(&s, "%s%s\n",
> -			    *logmsg ? *logmsg : "", line) == -1) {
> -				err = got_error_from_errno("asprintf");
> -				goto done;
> -			}
> -			free(*logmsg);
> -			*logmsg = s;
> +
> +			if (line[0] == '\0')
> +				headers = 0;
>  		}
> +
> +		if (asprintf(&s, "%s%s\n",
> +		    *logmsg ? *logmsg : "", line) == -1) {
> +			err = got_error_from_errno("asprintf");
> +			goto done;
> +		}
> +		free(*logmsg);
> +		*logmsg = s;
> +
>  	} while (line);
>  
>  	/* Trim redundant trailing whitespace. */
> 


[prev in list] [next in list] [prev in thread] [next in thread] 

Configure | About | News | Add a list | Sponsored by KoreLogic