Changeset View
Changeset View
Standalone View
Standalone View
src/reader.c
Show First 20 Lines • Show All 401 Lines • ▼ Show 20 Lines | else if (r->type == READER_TYPE_CB) | ||||
if (r->u.cb.fnc (r->u.cb.value, buffer, length, nread)) | if (r->u.cb.fnc (r->u.cb.value, buffer, length, nread)) | ||||
{ | { | ||||
*nread = 0; | *nread = 0; | ||||
r->eof = 1; | r->eof = 1; | ||||
return gpg_error (GPG_ERR_EOF); | return gpg_error (GPG_ERR_EOF); | ||||
} | } | ||||
r->nread += *nread; | r->nread += *nread; | ||||
} | } | ||||
else if (r->type == READER_TYPE_FD) | |||||
{ | |||||
ssize_t n; | |||||
if (r->eof) | |||||
return gpg_error (GPG_ERR_EOF); | |||||
if (!length) | |||||
{ | |||||
*nread = 0; | |||||
return 0; | |||||
} | |||||
n = read (r->u.fd, buffer, length); | |||||
if (n > 0) | |||||
{ | |||||
r->nread += n; | |||||
*nread = n; | |||||
} | |||||
else | |||||
{ | |||||
*nread = 0; | |||||
if (n < 0) | |||||
{ | |||||
r->error = errno; | |||||
return gpg_error_from_errno (errno); | |||||
} | |||||
else | |||||
{ | |||||
r->eof = 1; | |||||
return gpg_error (GPG_ERR_EOF); | |||||
} | |||||
} | |||||
} | |||||
else | else | ||||
return gpg_error (GPG_ERR_BUG); | return gpg_error (GPG_ERR_BUG); | ||||
return 0; | return 0; | ||||
} | } | ||||
gpg_error_t | gpg_error_t | ||||
ksba_reader_unread (ksba_reader_t r, const void *buffer, size_t count) | ksba_reader_unread (ksba_reader_t r, const void *buffer, size_t count) | ||||
Show All 33 Lines |