- while(*attrs && *values)
- {
- /* Checking all */
- if(strcmp(*attrs, xml_check_all) == 0)
- {
- if(strcmp(*values, "yes") == 0)
- {
- opts|=CHECK_MD5SUM;
- opts|=CHECK_SHA1SUM;
- opts|=CHECK_PERM;
- opts|=CHECK_SIZE;
- opts|=CHECK_OWNER;
- opts|=CHECK_GROUP;
- }
- else if(strcmp(*values, "no") == 0)
- {
- }
- else
- {
- merror(SK_INV_OPT, ARGV0, *values, *attrs);
- return(0);
- }
- }
- /* Checking sum */
- else if(strcmp(*attrs, xml_check_sum) == 0)
- {
- if(strcmp(*values, "yes") == 0)
- {
- opts|=CHECK_MD5SUM;
- opts|=CHECK_SHA1SUM;
- }
- else if(strcmp(*values, "no") == 0)
- {
- }
- else
- {
- merror(SK_INV_OPT, ARGV0, *values, *attrs);
- return(0);
- }
- }
- /* Checking md5sum */
- else if(strcmp(*attrs, xml_check_md5sum) == 0)
- {
- if(strcmp(*values, "yes") == 0)
- {
- opts|=CHECK_MD5SUM;
- }
- else if(strcmp(*values, "no") == 0)
- {
- }
- else
- {
- merror(SK_INV_OPT, ARGV0, *values, *attrs);
- return(0);
- }
- }
- /* Checking sha1sum */
- else if(strcmp(*attrs, xml_check_sha1sum) == 0)
- {
- if(strcmp(*values, "yes") == 0)
- {
- opts|=CHECK_SHA1SUM;
- }
- else if(strcmp(*values, "no") == 0)
- {
- }
- else
- {
- merror(SK_INV_OPT, ARGV0, *values, *attrs);
- return(0);
- }
- }
- /* Checking permission */
- else if(strcmp(*attrs, xml_check_perm) == 0)
- {
- if(strcmp(*values, "yes") == 0)
- {
- opts|=CHECK_PERM;
- }
- else if(strcmp(*values, "no") == 0)
- {
- }
- else
- {
- merror(SK_INV_OPT, ARGV0, *values, *attrs);
- return(0);
- }
- }
- /* Checking size */
- else if(strcmp(*attrs, xml_check_size) == 0)
- {
- if(strcmp(*values, "yes") == 0)
- {
- opts|=CHECK_SIZE;
- }
- else if(strcmp(*values, "no") == 0)
- {
- }
- else
- {
- merror(SK_INV_OPT, ARGV0, *values, *attrs);
- return(0);
- }
- }
- /* Checking owner */
- else if(strcmp(*attrs, xml_check_owner) == 0)
- {
- if(strcmp(*values, "yes") == 0)
- {
- opts|=CHECK_OWNER;
- }
- else if(strcmp(*values, "no") == 0)
- {
- }
- else
- {
- merror(SK_INV_OPT, ARGV0, *values, *attrs);
- return(0);
- }
- }
- /* Checking group */
- else if(strcmp(*attrs, xml_check_group) == 0)
- {
- if(strcmp(*values, "yes") == 0)
- {
- opts|=CHECK_GROUP;
- }
- else if(strcmp(*values, "no") == 0)
- {
- }
- else
- {
- merror(SK_INV_OPT, ARGV0, *values, *attrs);
- return(0);
- }
- }
- else if(strcmp(*attrs, xml_real_time) == 0)
- {
- if(strcmp(*values, "yes") == 0)
- {
- opts|=CHECK_REALTIME;
- }
- else if(strcmp(*values, "no") == 0)
- {
- }
- else
- {
- merror(SK_INV_OPT, ARGV0, *values, *attrs);
- return(0);
- }
- }
- else
- {
- merror(SK_INV_ATTR, ARGV0, *attrs);
- return(0);
- }
- attrs++; values++;
+ while (*attrs && *values) {
+ /* Check all */
+ if (strcmp(*attrs, xml_check_all) == 0) {
+ if (strcmp(*values, "yes") == 0) {
+ opts |= CHECK_MD5SUM;
+ opts |= CHECK_SHA1SUM;
+ opts |= CHECK_PERM;
+ opts |= CHECK_SIZE;
+ opts |= CHECK_OWNER;
+ opts |= CHECK_GROUP;
+ } else if (strcmp(*values, "no") == 0) {
+ opts &= ~ ( CHECK_MD5SUM | CHECK_SHA1SUM | CHECK_PERM
+ | CHECK_SIZE | CHECK_OWNER | CHECK_GROUP );
+ } else {
+ merror(SK_INV_OPT, __local_name, *values, *attrs);
+ ret = 0;
+ goto out_free;
+ }
+ }
+ /* Check sum */
+ else if (strcmp(*attrs, xml_check_sum) == 0) {
+ if (strcmp(*values, "yes") == 0) {
+ opts |= CHECK_MD5SUM;
+ opts |= CHECK_SHA1SUM;
+ } else if (strcmp(*values, "no") == 0) {
+ opts &= ~ ( CHECK_MD5SUM | CHECK_SHA1SUM );
+ } else {
+ merror(SK_INV_OPT, __local_name, *values, *attrs);
+ ret = 0;
+ goto out_free;
+ }
+ }
+ /* Check md5sum */
+ else if (strcmp(*attrs, xml_check_md5sum) == 0) {
+ if (strcmp(*values, "yes") == 0) {
+ opts |= CHECK_MD5SUM;
+ } else if (strcmp(*values, "no") == 0) {
+ opts &= ~ CHECK_MD5SUM;
+ } else {
+ merror(SK_INV_OPT, __local_name, *values, *attrs);
+ ret = 0;
+ goto out_free;
+ }
+ }
+ /* Check sha1sum */
+ else if (strcmp(*attrs, xml_check_sha1sum) == 0) {
+ if (strcmp(*values, "yes") == 0) {
+ opts |= CHECK_SHA1SUM;
+ } else if (strcmp(*values, "no") == 0) {
+ opts &= ~ CHECK_SHA1SUM;
+ } else {
+ merror(SK_INV_OPT, __local_name, *values, *attrs);
+ ret = 0;
+ goto out_free;
+ }
+ }
+ /* Check permission */
+ else if (strcmp(*attrs, xml_check_perm) == 0) {
+ if (strcmp(*values, "yes") == 0) {
+ opts |= CHECK_PERM;
+ } else if (strcmp(*values, "no") == 0) {
+ opts &= ~ CHECK_PERM;
+ } else {
+ merror(SK_INV_OPT, __local_name, *values, *attrs);
+ ret = 0;
+ goto out_free;
+ }
+ }
+ /* Check size */
+ else if (strcmp(*attrs, xml_check_size) == 0) {
+ if (strcmp(*values, "yes") == 0) {
+ opts |= CHECK_SIZE;
+ } else if (strcmp(*values, "no") == 0) {
+ opts &= ~ CHECK_SIZE;
+ } else {
+ merror(SK_INV_OPT, __local_name, *values, *attrs);
+ ret = 0;
+ goto out_free;
+ }
+ }
+ /* Check owner */
+ else if (strcmp(*attrs, xml_check_owner) == 0) {
+ if (strcmp(*values, "yes") == 0) {
+ opts |= CHECK_OWNER;
+ } else if (strcmp(*values, "no") == 0) {
+ opts &= ~ CHECK_OWNER;
+ } else {
+ merror(SK_INV_OPT, __local_name, *values, *attrs);
+ ret = 0;
+ goto out_free;
+ }
+ }
+ /* Check group */
+ else if (strcmp(*attrs, xml_check_group) == 0) {
+ if (strcmp(*values, "yes") == 0) {
+ opts |= CHECK_GROUP;
+ } else if (strcmp(*values, "no") == 0) {
+ opts &= ~ CHECK_GROUP;
+ } else {
+ merror(SK_INV_OPT, __local_name, *values, *attrs);
+ ret = 0;
+ goto out_free;
+ }
+ } else if (strcmp(*attrs, xml_real_time) == 0) {
+ if (strcmp(*values, "yes") == 0) {
+ opts |= CHECK_REALTIME;
+ } else if (strcmp(*values, "no") == 0) {
+ opts &= ~ CHECK_REALTIME;
+ } else {
+ merror(SK_INV_OPT, __local_name, *values, *attrs);
+ ret = 0;
+ goto out_free;
+ }
+ } else if (strcmp(*attrs, xml_report_changes) == 0) {
+ if (strcmp(*values, "yes") == 0) {
+ opts |= CHECK_SEECHANGES;
+ } else if (strcmp(*values, "no") == 0) {
+ opts &= ~ CHECK_SEECHANGES;
+ } else {
+ merror(SK_INV_OPT, __local_name, *values, *attrs);
+ ret = 0;
+ goto out_free;
+ }
+ } else if (strcmp(*attrs, xml_restrict) == 0) {
+ if (restrictfile) {
+ free(restrictfile);
+ restrictfile = NULL;
+ }
+ os_strdup(*values, restrictfile);
+ } else if (strcmp(*attrs, xml_no_recurse) == 0) {
+ if(strcmp(*values, "yes") == 0) {
+ opts |= CHECK_NORECURSE;
+ } else {
+ merror(SK_INV_OPT, __local_name, *values, *attrs);
+ ret = 0;
+ goto out_free;
+ }
+ } else {
+ merror(SK_INV_ATTR, __local_name, *attrs);
+ ret = 0;
+ goto out_free;
+ }
+ attrs++;
+ values++;