| #ifndef CREDENTIAL_H |
| #define CREDENTIAL_H |
| |
| #include "string-list.h" |
| |
| struct credential { |
| struct string_list helpers; |
| unsigned approved:1, |
| configured:1, |
| quit:1, |
| use_http_path:1; |
| |
| char *username; |
| char *password; |
| char *protocol; |
| char *host; |
| char *path; |
| }; |
| |
| #define CREDENTIAL_INIT { STRING_LIST_INIT_DUP } |
| |
| void credential_init(struct credential *); |
| void credential_clear(struct credential *); |
| |
| void credential_fill(struct credential *); |
| void credential_approve(struct credential *); |
| void credential_reject(struct credential *); |
| |
| int credential_read(struct credential *, FILE *); |
| void credential_write(const struct credential *, FILE *); |
| |
| /* |
| * Parse a url into a credential struct, replacing any existing contents. |
| * |
| * Ifthe url can't be parsed (e.g., a missing "proto://" component), the |
| * resulting credential will be empty but we'll still return success from the |
| * "gently" form. |
| * |
| * If we encounter a component which cannot be represented as a credential |
| * value (e.g., because it contains a newline), the "gently" form will return |
| * an error but leave the broken state in the credential object for further |
| * examination. The non-gentle form will issue a warning to stderr and return |
| * an empty credential. |
| */ |
| void credential_from_url(struct credential *, const char *url); |
| int credential_from_url_gently(struct credential *, const char *url, int quiet); |
| |
| int credential_match(const struct credential *have, |
| const struct credential *want); |
| |
| #endif /* CREDENTIAL_H */ |