diff options
| -rw-r--r-- | gpgme/ChangeLog | 4 | ||||
| -rw-r--r-- | gpgme/engine-gpgconf.c | 10 | 
2 files changed, 9 insertions, 5 deletions
diff --git a/gpgme/ChangeLog b/gpgme/ChangeLog index 9ac1f61f..2a5c7191 100644 --- a/gpgme/ChangeLog +++ b/gpgme/ChangeLog @@ -1,3 +1,7 @@ +2008-02-15  Marcus Brinkmann  <[email protected]> + +	* engine-gpgconf.c (gpgconf_read): Fix end-of-line handline. +  2008-02-14  Werner Koch  <[email protected]>  	* w32-io.c (_gpgme_io_spawn): Add arg R_PID to return the pid. diff --git a/gpgme/engine-gpgconf.c b/gpgme/engine-gpgconf.c index 26cd45f4..ab03e9d7 100644 --- a/gpgme/engine-gpgconf.c +++ b/gpgme/engine-gpgconf.c @@ -232,24 +232,24 @@ gpgconf_read (void *engine, char *arg1, char *arg2,        nread = _gpgme_io_read (rp[0], &line[linelen], LINELENGTH - linelen - 1);        if (nread > 0)  	{ -	  line[linelen + nread] = '\0';  	  linelen += nread; +	  line[linelen] = '\0';  	  while ((mark = strchr (line, '\n')))  	    {  	      char *eol = mark; -	      if (eol > &line[0] && *eol == '\r') +	      if (eol > line && eol[-1] == '\r')  		eol--;  	      *eol = '\0'; -	       +  	      /* Got a full line.  */  	      err = (*cb) (hook, line);  	      if (err)  		break; -	      linelen -= mark - line; -	      memmove (line, eol + 1, linelen); +	      linelen -= mark + 1 - line; +	      memmove (line, mark + 1, linelen);  	    }  	}      }  | 
