diff options
author | David Sommerseth <dazo@users.sourceforge.net> | 2009-09-21 21:39:18 +0200 |
---|---|---|
committer | David Sommerseth <dazo@users.sourceforge.net> | 2009-09-21 21:39:18 +0200 |
commit | 5b0b63ab816ce0cfd01b851efee3ffdadd644eae (patch) | |
tree | 4f2e7c39b8f2e0247c36a5c2d5754e604c82df04 | |
parent | 69c7a7552a3019ce4f412f2e00f5293e83edb2e5 (diff) | |
download | eurephia-5b0b63ab816ce0cfd01b851efee3ffdadd644eae.tar.gz eurephia-5b0b63ab816ce0cfd01b851efee3ffdadd644eae.tar.xz eurephia-5b0b63ab816ce0cfd01b851efee3ffdadd644eae.zip |
Rewritten eurephiadm users command to use eurephiaXML_ParseResultMsg()
-rw-r--r-- | eurephiadm/commands/users.c | 30 |
1 files changed, 21 insertions, 9 deletions
diff --git a/eurephiadm/commands/users.c b/eurephiadm/commands/users.c index d024c00..18d8101 100644 --- a/eurephiadm/commands/users.c +++ b/eurephiadm/commands/users.c @@ -403,6 +403,7 @@ int show_user(eurephiaCTX *ctx, eurephiaSESSION *sess, eurephiaVALUES *cfg, int int account_activation(eurephiaCTX *ctx, eurephiaSESSION *sess, eurephiaVALUES *cfg, int argc, char **argv) { xmlDoc *user_xml = NULL, *update_xml = NULL, *srch_xml = NULL, *tmp_xml = NULL; xmlNode *user_n = NULL, *update_n = NULL, *srch_root = NULL, *tmp_n = NULL; + eurephiaRESULT *res = NULL; char *uid_str = NULL, *activated = NULL, *deactivated = NULL, *actmode_str = NULL, *newpwd = NULL; int i, actmode = 0, rc = 0, crit_set = 0; @@ -615,17 +616,24 @@ int account_activation(eurephiaCTX *ctx, eurephiaSESSION *sess, eurephiaVALUES * fprintf(stderr, "%s: Failed to remove the user-certs link\n", MODULE); } - tmp_n = eurephiaXML_getRoot(ctx, tmp_xml, NULL, 1); - if( xmlStrcmp(tmp_n->name, (xmlChar *) "Error") == 0 ) { - fprintf(stderr, "%s: %s\n", MODULE, xmlExtractContent(tmp_n)); - rc = 0; + res = eurephiaXML_ParseResultMsg(ctx, tmp_xml); + if( res == NULL ) { + fprintf(stderr, "%s: Failed to remove user <-> certificate link. " + "No results received\n", MODULE); + rc = 0; + } else { + if( res->resultType == exmlERROR ) { + fprintf(stderr, "%s: %s\n", MODULE, res->message); + }; + rc = 1; + free_nullsafe(ctx, res); } xmlFreeDoc(tmp_xml); break; } if( rc == 1 ) { - printf("User account is %s\n", actmode_str); + printf("%s: User account is %s\n", MODULE, actmode_str); } else { fprintf(stderr, "%s: Operation failed\n", MODULE); } @@ -871,7 +879,8 @@ int add_user(eurephiaCTX *ctx, eurephiaSESSION *sess, eurephiaVALUES *cfg, int a // If we have a certificate id, register a certificate link to the user account if( (certid > 0) && (uid > 0) ) { xmlDoc *usercert_xml = NULL, *res_xml = NULL; - xmlNode *usercert_n = NULL, *res_n = NULL; + xmlNode *usercert_n = NULL; + eurephiaRESULT *res = NULL; xmlChar tmp[66]; memset(&tmp, 0, 66); @@ -893,9 +902,12 @@ int add_user(eurephiaCTX *ctx, eurephiaSESSION *sess, eurephiaVALUES *cfg, int a goto exit; } - res_n = eurephiaXML_getRoot(ctx, res_xml, NULL, 1); - if( xmlStrcmp(res_n->name, (xmlChar *) "Error") == 0 ) { - fprintf(stderr, "%s: %s\n", MODULE, xmlExtractContent(res_n)); + res = eurephiaXML_ParseResultMsg(ctx, res_xml); + if( res == NULL ) { + fprintf(stderr, "%s: Failed to register user <-> certificate link. " + "No results received\n", MODULE); + } else if( res->resultType == exmlERROR ) { + fprintf(stderr, "%s: %s\n", MODULE, res->message); } xmlFreeDoc(res_xml); } |