static int _set_rec(int *start, int argc, char *argv[], List acct_list, List cluster_list, slurmdb_account_rec_t *acct, slurmdb_association_rec_t *assoc) { int i; int u_set = 0; int a_set = 0; int end = 0; int command_len = 0; int option = 0; for (i=(*start); i<argc; i++) { end = parse_option_end(argv[i]); if (!end) command_len=strlen(argv[i]); else { command_len=end-1; if (argv[i][end] == '=') { option = (int)argv[i][end-1]; end++; } } if (!strncasecmp(argv[i], "Where", MAX(command_len, 5))) { i--; break; } else if (!end && !strncasecmp(argv[i], "set", MAX(command_len, 3))) { continue; } else if (!end || !strncasecmp(argv[i], "Accounts", MAX(command_len, 1)) || !strncasecmp(argv[i], "Names", MAX(command_len, 1)) || !strncasecmp(argv[i], "Acct", MAX(command_len, 4))) { if (acct_list) slurm_addto_char_list(acct_list, argv[i]+end); else { exit_code=1; fprintf(stderr, " Can't modify the name " "of an account\n"); } } else if (!strncasecmp(argv[i], "Clusters", MAX(command_len, 1))) { if (cluster_list) slurm_addto_char_list(cluster_list, argv[i]+end); else { exit_code=1; fprintf(stderr, " Can't modify the cluster " "of an account\n"); } } else if (!strncasecmp(argv[i], "Description", MAX(command_len, 1))) { acct->description = strip_quotes(argv[i]+end, NULL, 1); u_set = 1; } else if (!strncasecmp(argv[i], "Organization", MAX(command_len, 1))) { acct->organization = strip_quotes(argv[i]+end, NULL, 1); u_set = 1; } else if (!strncasecmp (argv[i], "RawUsage", MAX(command_len, 7))) { uint32_t usage; if (!assoc) continue; assoc->usage = xmalloc(sizeof( assoc_mgr_association_usage_t)); if (get_uint(argv[i]+end, &usage, "RawUsage") == SLURM_SUCCESS) { assoc->usage->usage_raw = usage; a_set = 1; } } else if (!assoc || (assoc && !(a_set = sacctmgr_set_association_rec( assoc, argv[i], argv[i]+end, command_len, option)))) { exit_code=1; fprintf(stderr, " Unknown option: %s\n" " Use keyword 'where' to modify condition\n", argv[i]); } } (*start) = i; if (u_set && a_set) return 3; else if (a_set) return 2; else if (u_set) return 1; return 0; }
static int _set_rec(int *start, int argc, char *argv[], List name_list, slurmdb_association_rec_t *assoc, uint16_t *classification) { int i; int set = 0; int end = 0; int command_len = 0; int option = 0; for (i=(*start); i<argc; i++) { end = parse_option_end(argv[i]); if(!end) command_len=strlen(argv[i]); else { command_len=end-1; if(argv[i][end] == '=') { option = (int)argv[i][end-1]; end++; } } if (!strncasecmp(argv[i], "Where", MAX(command_len, 5))) { i--; break; } else if(!end && !strncasecmp(argv[i], "set", MAX(command_len, 3))) { continue; } else if(!end || !strncasecmp(argv[i], "Names", MAX(command_len, 1)) || !strncasecmp(argv[i], "Clusters", MAX(command_len, 3))) { if(name_list) slurm_addto_char_list(name_list, argv[i]+end); } else if (!strncasecmp(argv[i], "Classification", MAX(command_len, 3))) { if(classification) { *classification = str_2_classification(argv[i]+end); if(*classification) set = 1; } } else if (!strncasecmp(argv[i], "GrpCPUMins", MAX(command_len, 7))) { exit_code=1; fprintf(stderr, "GrpCPUMins is not a valid option " "for the root association of a cluster.\n"); break; } else if (!strncasecmp(argv[i], "GrpWall", MAX(command_len, 4))) { exit_code=1; fprintf(stderr, "GrpWall is not a valid option " "for the root association of a cluster.\n"); } else if(!assoc || (assoc && !(set = sacctmgr_set_association_rec( assoc, argv[i], argv[i]+end, command_len, option)))) { exit_code=1; fprintf(stderr, " Unknown option: %s\n" " Use keyword 'where' to modify condition\n", argv[i]); } } (*start) = i; return set; }