Migrate all enumerators to venumerate() interface change
This commit is contained in:
@@ -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);
|
||||
|
||||
Reference in New Issue
Block a user