// fill in the nusers, total_credit and expavg_credit fields // of the team table. // This may take a while; don't do it often // int update_teams() { DB_TEAM team; int retval; char buf[256]; while (1) { retval = team.enumerate("where expavg_credit>0.1"); if (retval) { if (retval != ERR_DB_NOT_FOUND) { log_messages.printf(MSG_CRITICAL, "lost DB conn\n"); exit(1); } break; } retval = get_team_totals(team); if (retval) { log_messages.printf(MSG_CRITICAL, "update_teams: get_team_credit([TEAM#%d]) failed: %d\n", team.id, retval ); continue; } if (team.expavg_time < update_time_cutoff) { update_average(0, 0, CREDIT_HALF_LIFE, team.expavg_credit, team.expavg_time); } sprintf( buf, "expavg_credit=%f, expavg_time=%f, nusers=%d", team.expavg_credit, team.expavg_time, team.nusers ); retval = team.update_field(buf); if (retval) { log_messages.printf(MSG_CRITICAL, "Can't update team %d\n", team.id); return retval; } } return 0; }