"GOT", but the "O" is a cute, smiling pufferfish. Index | Thread | Search

From:
Stefan Sperling <stsp@stsp.name>
Subject:
Re: [patch] getline: fix the return type to ssize_t and small nits
To:
Hiltjo Posthuma <hiltjo@codemadness.org>
Cc:
gameoftrees@openbsd.org
Date:
Wed, 25 Sep 2019 22:22:33 +0200

Download raw body.

Thread
On Wed, Sep 25, 2019 at 10:12:23PM +0200, Hiltjo Posthuma wrote:
> Hi,
> 
> The below patch changes the return type of getline from size_t to ssize_t.
> 
> It also changes a few tiny nits :)
> - Remove an unnecessary cast.
> - Follow the same error handling pattern as in worktree.c copy_one_line().
> 

Yes, OK.

> >From 500467ff1bf0dbd15c0941dd741e80c35c708818 Mon Sep 17 00:00:00 2001
> From: Hiltjo Posthuma <hiltjo@codemadness.org>
> Date: Wed, 25 Sep 2019 22:02:03 +0200
> Subject: [PATCH] getline: fix the return type to ssize_t and small nits
> 
> ---
>  got/got.c      | 2 +-
>  lib/diff3.c    | 3 ++-
>  lib/worktree.c | 7 +++++--
>  3 files changed, 8 insertions(+), 4 deletions(-)
> 
> diff --git a/got/got.c b/got/got.c
> index e9a814c..212005d 100644
> --- a/got/got.c
> +++ b/got/got.c
> @@ -2410,7 +2410,7 @@ blame_cb(void *arg, int nlines, int lineno, struct got_object_id *id)
>  		char *smallerthan, *at, *nl, *committer;
>  		size_t len;
>  
> -		if (getline(&line, &linesize, a->f) == (ssize_t)-1) {
> +		if (getline(&line, &linesize, a->f) == -1) {
>  			if (ferror(a->f))
>  				err = got_error_from_errno("getline");
>  			break;
> diff --git a/lib/diff3.c b/lib/diff3.c
> index 87c3a41..7f642f7 100644
> --- a/lib/diff3.c
> +++ b/lib/diff3.c
> @@ -655,7 +655,8 @@ static char *
>  get_line(FILE *b, size_t *n, struct diff3_state *d3s)
>  {
>  	char *cp = NULL;
> -	size_t size, len;
> +	size_t size;
> +	ssize_t len;
>  	char *new;
>  	char *ret = NULL;
>  
> diff --git a/lib/worktree.c b/lib/worktree.c
> index c6ccac6..729abd3 100644
> --- a/lib/worktree.c
> +++ b/lib/worktree.c
> @@ -2864,9 +2864,12 @@ skip_one_line(FILE *f)
>  	ssize_t linelen;
>  
>  	linelen = getline(&line, &linesize, f);
> +	if (linelen == -1) {
> +		if (ferror(f))
> +			return got_error_from_errno("getline");
> +		return NULL;
> +	}
>  	free(line);
> -	if (linelen == -1 && ferror(f))
> -		return got_error_from_errno("getline");
>  	return NULL;
>  }
>  
> -- 
> 2.21.0
> 
> -- 
> Kind regards,
> Hiltjo
>