Migrate all enumerators to venumerate() interface change

This commit is contained in:
Tobias Brunner
2017-05-26 13:56:44 +02:00
parent 16bffa8b55
commit 95a63bf281
68 changed files with 851 additions and 560 deletions
@@ -403,10 +403,8 @@ typedef struct {
unsigned long *length;
} mysql_enumerator_t;
/**
* create a mysql enumerator
*/
static void mysql_enumerator_destroy(mysql_enumerator_t *this)
METHOD(enumerator_t, mysql_enumerator_destroy, void,
mysql_enumerator_t *this)
{
int columns, i;
@@ -434,13 +432,10 @@ static void mysql_enumerator_destroy(mysql_enumerator_t *this)
free(this);
}
/**
* Implementation of database.query().enumerate
*/
static bool mysql_enumerator_enumerate(mysql_enumerator_t *this, ...)
METHOD(enumerator_t, mysql_enumerator_enumerate, bool,
mysql_enumerator_t *this, va_list args)
{
int i, columns;
va_list args;
columns = mysql_stmt_field_count(this->stmt);
@@ -477,7 +472,6 @@ static bool mysql_enumerator_enumerate(mysql_enumerator_t *this, ...)
return FALSE;
}
va_start(args, this);
for (i = 0; i < columns; i++)
{
switch (this->bind[i].buffer_type)
@@ -526,7 +520,6 @@ static bool mysql_enumerator_enumerate(mysql_enumerator_t *this, ...)
break;
}
}
va_end(args);
return TRUE;
}
@@ -552,9 +545,9 @@ METHOD(database_t, query, enumerator_t*,
INIT(enumerator,
.public = {
.enumerate = (void*)mysql_enumerator_enumerate,
.destroy = (void*)mysql_enumerator_destroy,
.enumerate = enumerator_enumerate_default,
.venumerate = _mysql_enumerator_enumerate,
.destroy = _mysql_enumerator_destroy,
},
.db = this,
.stmt = stmt,
@@ -142,8 +142,14 @@ typedef struct {
METHOD(enumerator_t, crl_enumerate, bool,
crl_enumerator_t *this, chunk_t *serial, time_t *date, crl_reason_t *reason)
crl_enumerator_t *this, va_list args)
{
crl_reason_t *reason;
chunk_t *serial;
time_t *date;
VA_ARGS_VGET(args, serial, date, reason);
if (this->i < this->num)
{
X509_REVOKED *revoked;
@@ -188,7 +194,8 @@ METHOD(crl_t, create_enumerator, enumerator_t*,
INIT(enumerator,
.public = {
.enumerate = (void*)_crl_enumerate,
.enumerate = enumerator_enumerate_default,
.venumerate = _crl_enumerate,
.destroy = (void*)free,
},
.stack = X509_CRL_get_REVOKED(this->crl),
@@ -136,8 +136,12 @@ METHOD(enumerator_t, cert_destroy, void,
}
METHOD(enumerator_t, cert_enumerate, bool,
cert_enumerator_t *this, certificate_t **out)
cert_enumerator_t *this, va_list args)
{
certificate_t **out;
VA_ARGS_VGET(args, out);
if (!this->certs)
{
return FALSE;
@@ -176,7 +180,8 @@ METHOD(pkcs7_t, create_cert_enumerator, enumerator_t*,
{
INIT(enumerator,
.public = {
.enumerate = (void*)_cert_enumerate,
.enumerate = enumerator_enumerate_default,
.venumerate = _cert_enumerate,
.destroy = _cert_destroy,
},
.certs = CMS_get1_certs(this->cms),
@@ -320,8 +325,12 @@ static bool verify_digest(CMS_ContentInfo *cms, CMS_SignerInfo *si, int hash_oid
}
METHOD(enumerator_t, signature_enumerate, bool,
signature_enumerator_t *this, auth_cfg_t **out)
signature_enumerator_t *this, va_list args)
{
auth_cfg_t **out;
VA_ARGS_VGET(args, out);
if (!this->signers)
{
return FALSE;
@@ -382,7 +391,8 @@ METHOD(container_t, create_signature_enumerator, enumerator_t*,
INIT(enumerator,
.public = {
.enumerate = (void*)_signature_enumerate,
.enumerate = enumerator_enumerate_default,
.venumerate = _signature_enumerate,
.destroy = _signature_destroy,
},
.cms = this->cms,
@@ -719,12 +719,14 @@ static bool get_attributes(object_enumerator_t *this, CK_OBJECT_HANDLE object)
}
METHOD(enumerator_t, object_enumerate, bool,
object_enumerator_t *this, CK_OBJECT_HANDLE *out)
object_enumerator_t *this, va_list args)
{
CK_OBJECT_HANDLE object;
CK_OBJECT_HANDLE object, *out;
CK_ULONG found;
CK_RV rv;
VA_ARGS_VGET(args, out);
if (!this->object)
{
rv = this->lib->f->C_FindObjects(this->session, &object, 1, &found);
@@ -786,7 +788,8 @@ METHOD(pkcs11_library_t, create_object_enumerator, enumerator_t*,
INIT(enumerator,
.public = {
.enumerate = (void*)_object_enumerate,
.enumerate = enumerator_enumerate_default,
.venumerate = _object_enumerate,
.destroy = _object_destroy,
},
.session = session,
@@ -806,7 +809,8 @@ METHOD(pkcs11_library_t, create_object_attr_enumerator, enumerator_t*,
INIT(enumerator,
.public = {
.enumerate = (void*)_object_enumerate,
.enumerate = enumerator_enumerate_default,
.venumerate = _object_enumerate,
.destroy = _object_destroy,
},
.session = session,
@@ -838,11 +842,14 @@ typedef struct {
} mechanism_enumerator_t;
METHOD(enumerator_t, enumerate_mech, bool,
mechanism_enumerator_t *this, CK_MECHANISM_TYPE* type,
CK_MECHANISM_INFO *info)
mechanism_enumerator_t *this, va_list args)
{
CK_MECHANISM_INFO *info;
CK_MECHANISM_TYPE *type;
CK_RV rv;
VA_ARGS_VGET(args, type, info);
if (this->current >= this->count)
{
return FALSE;
@@ -876,7 +883,8 @@ METHOD(pkcs11_library_t, create_mechanism_enumerator, enumerator_t*,
INIT(enumerator,
.public = {
.enumerate = (void*)_enumerate_mech,
.enumerate = enumerator_enumerate_default,
.venumerate = _enumerate_mech,
.destroy = _destroy_mech,
},
.lib = &this->public,
@@ -265,8 +265,13 @@ typedef struct {
} token_enumerator_t;
METHOD(enumerator_t, enumerate_token, bool,
token_enumerator_t *this, pkcs11_library_t **out, CK_SLOT_ID *slot)
token_enumerator_t *this, va_list args)
{
pkcs11_library_t **out;
CK_SLOT_ID *slot;
VA_ARGS_VGET(args, out, slot);
if (this->current >= this->count)
{
free(this->slots);
@@ -301,7 +306,8 @@ METHOD(pkcs11_manager_t, create_token_enumerator, enumerator_t*,
INIT(enumerator,
.public = {
.enumerate = (void*)_enumerate_token,
.enumerate = enumerator_enumerate_default,
.venumerate = _enumerate_token,
.destroy = _destroy_token,
},
.inner = this->libs->create_enumerator(this->libs),
@@ -179,7 +179,7 @@ typedef struct {
} signature_enumerator_t;
METHOD(enumerator_t, enumerate, bool,
signature_enumerator_t *this, auth_cfg_t **out)
signature_enumerator_t *this, va_list args)
{
signerinfo_t *info;
signature_scheme_t scheme;
@@ -187,11 +187,13 @@ METHOD(enumerator_t, enumerate, bool,
enumerator_t *enumerator;
certificate_t *cert;
public_key_t *key;
auth_cfg_t *auth;
auth_cfg_t *auth, **out;
chunk_t chunk, hash, content;
hasher_t *hasher;
bool valid;
VA_ARGS_VGET(args, out);
while (this->inner->enumerate(this->inner, &info))
{
/* clean up previous round */
@@ -300,7 +302,8 @@ METHOD(container_t, create_signature_enumerator, enumerator_t*,
INIT(enumerator,
.public = {
.enumerate = (void*)_enumerate,
.enumerate = enumerator_enumerate_default,
.venumerate = _enumerate,
.destroy = _enumerator_destroy,
},
.inner = this->signerinfos->create_enumerator(this->signerinfos),
@@ -174,10 +174,8 @@ typedef struct {
private_sqlite_database_t *database;
} sqlite_enumerator_t;
/**
* destroy a sqlite enumerator
*/
static void sqlite_enumerator_destroy(sqlite_enumerator_t *this)
METHOD(enumerator_t, sqlite_enumerator_destroy, void,
sqlite_enumerator_t *this)
{
sqlite3_finalize(this->stmt);
if (!is_threadsave())
@@ -188,13 +186,10 @@ static void sqlite_enumerator_destroy(sqlite_enumerator_t *this)
free(this);
}
/**
* Implementation of database.query().enumerate
*/
static bool sqlite_enumerator_enumerate(sqlite_enumerator_t *this, ...)
METHOD(enumerator_t, sqlite_enumerator_enumerate, bool,
sqlite_enumerator_t *this, va_list args)
{
int i;
va_list args;
switch (sqlite3_step(this->stmt))
{
@@ -207,7 +202,7 @@ static bool sqlite_enumerator_enumerate(sqlite_enumerator_t *this, ...)
case SQLITE_DONE:
return FALSE;
}
va_start(args, this);
for (i = 0; i < this->count; i++)
{
switch (this->columns[i])
@@ -245,11 +240,9 @@ static bool sqlite_enumerator_enumerate(sqlite_enumerator_t *this, ...)
}
default:
DBG1(DBG_LIB, "invalid result type supplied");
va_end(args);
return FALSE;
}
}
va_end(args);
return TRUE;
}
@@ -270,13 +263,17 @@ METHOD(database_t, query, enumerator_t*,
stmt = run(this, sql, &args);
if (stmt)
{
enumerator = malloc_thing(sqlite_enumerator_t);
enumerator->public.enumerate = (void*)sqlite_enumerator_enumerate;
enumerator->public.destroy = (void*)sqlite_enumerator_destroy;
enumerator->stmt = stmt;
enumerator->count = sqlite3_column_count(stmt);
INIT(enumerator,
.public = {
.enumerate = enumerator_enumerate_default,
.venumerate = _sqlite_enumerator_enumerate,
.destroy = _sqlite_enumerator_destroy,
},
.stmt = stmt,
.count = sqlite3_column_count(stmt),
.database = this,
);
enumerator->columns = malloc(sizeof(db_type_t) * enumerator->count);
enumerator->database = this;
for (i = 0; i < enumerator->count; i++)
{
enumerator->columns[i] = va_arg(args, db_type_t);