diff options
author | Marcus Brinkmann <[email protected]> | 2009-03-06 22:29:49 +0000 |
---|---|---|
committer | Marcus Brinkmann <[email protected]> | 2009-03-06 22:29:49 +0000 |
commit | 9ace1d56423f849b23fecdb77dd7ad6854975460 (patch) | |
tree | 212cfbddf9a9a640d597f2b39c993b166852e811 /assuan/mkerrors | |
parent | Chnaged the op-assuan interface. (diff) | |
download | gpgme-9ace1d56423f849b23fecdb77dd7ad6854975460.tar.gz gpgme-9ace1d56423f849b23fecdb77dd7ad6854975460.zip |
assuan/
2009-03-06 Marcus Brinkmann <[email protected]>
* assuan/: Update to libassuan SVN 2009-03-06.
src/
2009-03-06 Marcus Brinkmann <[email protected]>
* version.c (do_subsystem_inits): Do not set assuan log level.
* debug.c (debug_init): Likewise.
Diffstat (limited to '')
-rwxr-xr-x | assuan/mkerrors | 39 |
1 files changed, 24 insertions, 15 deletions
diff --git a/assuan/mkerrors b/assuan/mkerrors index 28451f63..79ac23b6 100755 --- a/assuan/mkerrors +++ b/assuan/mkerrors @@ -31,6 +31,7 @@ cat <<EOF #undef _ASSUAN_IN_LIBASSUAN /* undef to get all error codes. */ #include "assuan.h" +#include "assuan-defs.h" /* If true the modern gpg-error style error codes are used in the API. */ @@ -94,11 +95,8 @@ _assuan_error (int oldcode) { case 0: n = 16381; /*GPG_ERR_MISSING_ERRNO*/ break; case EAGAIN: - if (errno > 0 && errno < 4096) - { - n = (EAGAIN | (1 << 15)); - break; - } + n = (6 | (1 << 15)); + break; default: n = 270; /*GPG_ERR_ASS_READ_ERROR*/ break; } break; @@ -108,11 +106,8 @@ _assuan_error (int oldcode) { case 0: n = 16381; /*GPG_ERR_MISSING_ERRNO*/ break; case EAGAIN: - if (errno > 0 && errno < 4096) - { - n = (EAGAIN | (1 << 15)); - break; - } + n = (6 | (1 << 15)); + break; default: n = 271; /*GPG_ERR_ASS_WRITE_ERROR*/ break; } break; @@ -127,11 +122,8 @@ _assuan_error (int oldcode) n = 16381; /*GPG_ERR_MISSING_ERRNO*/ break; case ENOMEM: - if (errno > 0 && errno < 4096) - { - n = (ENOMEM | (1 << 15)); - break; - } + n = (86 | (1 << 15)); + break; default: n = 16382; /*GPG_ERR_UNKNOWN_ERRNO*/ break; @@ -150,6 +142,23 @@ _assuan_error (int oldcode) } +/* A small helper function to treat EAGAIN transparently to the + caller. */ +int +_assuan_error_is_eagain (assuan_error_t err) +{ + if ((!err_source && err == ASSUAN_Read_Error && errno == EAGAIN) + || (err_source && (err & ((1 << 24) - 1)) == (6 | (1 << 15)))) + { + /* Avoid spinning by sleeping for one tenth of a second. */ + _assuan_usleep (100000); + return 1; + } + else + return 0; +} + + /** * assuan_strerror: * @err: Error code |