From 9ace1d56423f849b23fecdb77dd7ad6854975460 Mon Sep 17 00:00:00 2001 From: Marcus Brinkmann Date: Fri, 6 Mar 2009 22:29:49 +0000 Subject: assuan/ 2009-03-06 Marcus Brinkmann * assuan/: Update to libassuan SVN 2009-03-06. src/ 2009-03-06 Marcus Brinkmann * version.c (do_subsystem_inits): Do not set assuan log level. * debug.c (debug_init): Likewise. --- assuan/mkerrors | 39 ++++++++++++++++++++++++--------------- 1 file changed, 24 insertions(+), 15 deletions(-) (limited to 'assuan/mkerrors') diff --git a/assuan/mkerrors b/assuan/mkerrors index 28451f63..79ac23b6 100755 --- a/assuan/mkerrors +++ b/assuan/mkerrors @@ -31,6 +31,7 @@ cat < 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 -- cgit v1.2.3