int set_entry(krb5_context contextp, kadm5_principal_ent_t ent, int *mask, const char *max_ticket_life, const char *max_renewable_life, const char *expiration, const char *pw_expiration, const char *attributes, const char *policy) { if (max_ticket_life != NULL) { if (parse_deltat (max_ticket_life, &ent->max_life, mask, KADM5_MAX_LIFE)) { krb5_warnx (contextp, "unable to parse `%s'", max_ticket_life); return 1; } } if (max_renewable_life != NULL) { if (parse_deltat (max_renewable_life, &ent->max_renewable_life, mask, KADM5_MAX_RLIFE)) { krb5_warnx (contextp, "unable to parse `%s'", max_renewable_life); return 1; } } if (expiration) { if (parse_timet (expiration, &ent->princ_expire_time, mask, KADM5_PRINC_EXPIRE_TIME)) { krb5_warnx (contextp, "unable to parse `%s'", expiration); return 1; } } if (pw_expiration) { if (parse_timet (pw_expiration, &ent->pw_expiration, mask, KADM5_PW_EXPIRATION)) { krb5_warnx (contextp, "unable to parse `%s'", pw_expiration); return 1; } } if (attributes != NULL) { if (parse_attributes (attributes, &ent->attributes, mask, KADM5_ATTRIBUTES)) { krb5_warnx (contextp, "unable to parse `%s'", attributes); return 1; } } if (policy != NULL) { if (parse_policy (policy, &ent->policy, mask, KADM5_POLICY)) { krb5_warnx (contextp, "unable to parse `%s'", policy); return 1; } } return 0; }
int edit_timet (const char *prompt, krb5_timestamp *value, int *mask, int bit) { char buf[1024], resp[1024]; if (mask && (*mask & bit)) return 0; time_t2str (*value, buf, sizeof (buf), 0); for (;;) { if(get_response(prompt, buf, resp, sizeof(resp)) != 0) return 1; if (parse_timet (resp, value, mask, bit) == 0) break; } return 0; }