Skip to content

Commit

Permalink
bson_find
Browse files Browse the repository at this point in the history
  • Loading branch information
RedBeard0531 committed Nov 17, 2009
1 parent 2a09ec8 commit d8fd814
Show file tree
Hide file tree
Showing 3 changed files with 17 additions and 25 deletions.
9 changes: 9 additions & 0 deletions src/bson.c
Expand Up @@ -158,6 +158,15 @@ void bson_iterator_init( bson_iterator * i , const char * bson ){
i->first = 1;
}

bson_type bson_find(bson_iterator* it, const bson* obj, const char* name){
bson_iterator_init(it, obj->data);
while(bson_iterator_next(it)){
if (strcmp(name, bson_iterator_key(it)) == 0)
break;
}
return bson_iterator_type(it);
}

bson_bool_t bson_iterator_more( bson_iterator * i ){
return *(i->cur);
}
Expand Down
4 changes: 4 additions & 0 deletions src/bson.h
Expand Up @@ -70,6 +70,10 @@ void bson_destroy( bson * b );
void bson_print( bson * b );
void bson_print_raw( const char * bson , int depth );

/* advances iterator to named field */
/* returns bson_eoo (which is false) if field not found */
bson_type bson_find(bson_iterator* it, const bson* obj, const char* name);

void bson_iterator_init( bson_iterator * i , const char * bson );

bson_bool_t bson_iterator_more( bson_iterator * i );
Expand Down
29 changes: 4 additions & 25 deletions src/mongo.c
Expand Up @@ -312,13 +312,8 @@ int64_t mongo_count(mongo_connection* conn, const char* db, const char* ns, bson

if(mongo_run_command(conn, db, &cmd, &out)){
bson_iterator it;
bson_iterator_init(&it, out.data);
while(bson_iterator_next(&it)){
if (strcmp("n", bson_iterator_key(&it)) != 0)
continue;
if(bson_find(&it, &out, "n"))
count = bson_iterator_long(&it);
break;
}
}

bson_destroy(&cmd);
Expand Down Expand Up @@ -443,13 +438,8 @@ bson_bool_t mongo_cmd_drop_db(mongo_connection * conn, const char * db){

if(mongo_run_command(conn, db, &cmd, &out)){
bson_iterator it;
bson_iterator_init(&it, out.data);
while(bson_iterator_next(&it)){
if (strcmp("ok", bson_iterator_key(&it)) != 0)
continue;
if(bson_find(&it, &out, "ok"))
success = bson_iterator_bool(&it);
break;
}
}

bson_destroy(&cmd);
Expand All @@ -469,13 +459,8 @@ bson_bool_t mongo_cmd_drop_collection(mongo_connection * conn, const char * db,

if(mongo_run_command(conn, db, &cmd, &out)){
bson_iterator it;
bson_iterator_init(&it, out.data);
while(bson_iterator_next(&it)){
if (strcmp("ok", bson_iterator_key(&it)) != 0)
continue;
if(bson_find(&it, &out, "ok"))
success = bson_iterator_bool(&it);
break;
}
}

bson_destroy(&cmd);
Expand Down Expand Up @@ -513,13 +498,7 @@ static bson_bool_t mongo_cmd_get_error_helper(mongo_connection * conn, const cha

if(mongo_run_command(conn, db, &cmd, &out)){
bson_iterator it;
bson_iterator_init(&it, out.data);
while(bson_iterator_next(&it)){
if (strcmp("err", bson_iterator_key(&it)) != 0)
continue;
haserror = (bson_iterator_type(&it) != bson_null);
break;
}
haserror = (bson_find(&it, &out, "err") != bson_null);
}

bson_destroy(&cmd);
Expand Down

0 comments on commit d8fd814

Please sign in to comment.