diff -r 9d4ae88baa53 -r c03758736a0b src/pEpEngine.c --- a/src/pEpEngine.c Fri Sep 30 16:07:57 2016 +0200 +++ b/src/pEpEngine.c Fri Sep 30 16:10:26 2016 +0200 @@ -29,6 +29,7 @@ static const char *sql_trustword; static const char *sql_get_identity; static const char *sql_set_person; + static const char *sql_set_device_group; static const char *sql_set_pgp_keypair; static const char *sql_set_identity; static const char *sql_set_identity_flags; @@ -322,6 +323,9 @@ " (select coalesce((select main_key_id from person " " where id = ?1), upper(replace(?4,' ',''))))) ;"; + sql_set_device_group = "update person set device_group = ?1 " + "where user_id = '" PEP_OWN_USERID "';"; + sql_set_pgp_keypair = "insert or replace into pgp_keypair (fpr) " "values (upper(replace(?1,' ',''))) ;"; @@ -416,6 +420,10 @@ (int)strlen(sql_set_person), &_session->set_person, NULL); assert(int_result == SQLITE_OK); + int_result = sqlite3_prepare_v2(_session->db, sql_set_device_group, + (int)strlen(sql_set_device_group), &_session->set_device_group, NULL); + assert(int_result == SQLITE_OK); + int_result = sqlite3_prepare_v2(_session->db, sql_set_pgp_keypair, (int)strlen(sql_set_pgp_keypair), &_session->set_pgp_keypair, NULL); @@ -582,6 +590,8 @@ sqlite3_finalize(session->get_identity); if (session->set_person) sqlite3_finalize(session->set_person); + if (session->set_device_group) + sqlite3_finalize(session->set_device_group); if (session->set_pgp_keypair) sqlite3_finalize(session->set_pgp_keypair); if (session->set_identity) @@ -1075,6 +1085,30 @@ return PEP_COMMIT_FAILED; } +DYNAMIC_API PEP_STATUS set_device_group( + PEP_SESSION session, + const char *group_name + ) +{ + int result; + + assert(session); + assert(group_name); + + if (!(session && group_name)) + return PEP_ILLEGAL_VALUE; + + sqlite3_reset(session->set_device_group); + sqlite3_bind_text(session->set_device_group, 1, group_name, -1, + SQLITE_STATIC); + result = sqlite3_step(session->set_device_group); + sqlite3_reset(session->set_device_group); + if (result != SQLITE_DONE) + return PEP_CANNOT_SET_PERSON; + + return PEP_STATUS_OK; +} + DYNAMIC_API PEP_STATUS set_identity_flags( PEP_SESSION session, pEp_identity *identity,