NAME
upscli_create_authconf_item, upscli_clone_authconf_item, upscli_merge_authconf_item, upscli_free_authconf_item - Create or free an individual authentication configuration item, which is not necessarily in the globally tracked list
SYNOPSIS
#include <authconf.h>
typedef struct upscli_authconf_s {
char *section; /* [@host:port] or [user@host:port], or NULL for global */
char *user;
char *pass;
char *certpath;
char *certfile;
char *certident;
char *certpasswd; /* Password for key/cert storage */
char *ssl_backend; /* openssl/nss */
char *certhost;
int certverify; /* -1 = unset, 0 = off, 1 = on */
int forcessl; /* -1 = unset, 0 = off, 1 = on */
struct upscli_authconf_s *next;
} upscli_authconf_t;
upscli_authconf_t *upscli_create_authconf_item(const char *section);
upscli_authconf_t *upscli_clone_authconf_item(upscli_authconf_t *source, const char *section);
upscli_authconf_t *upscli_merge_authconf_item(upscli_authconf_t *source, upscli_authconf_t *target);
upscli_authconf_t *upscli_free_authconf_item(upscli_authconf_t *node);
DESCRIPTION
The upscli_create_authconf_item() function allocates the memory for an
upscli_authconf_t node and initializes it with the given section name.
Other string pointers remain NULL, numeric flags are set to -1, and
the next pointer is set to NULL. This item is not automatically added
to the list.
The upscli_clone_authconf_item() function allocates the memory for an
upscli_authconf_t node and initializes it with the given section name
(if not NULL) and clones the values from the source node to the new node
by re-allocating non-NULL strings with xstrdup() and copying the numeric
flags. If the section argument is provided and contains a non-trivial
user@ component, the user field if the structure is (re-)set to that
value. The next pointer is set to NULL.
The upscli_merge_authconf_item() function copies the values from the
source node to the target node, as long as the target node does not
already have a value for the same field (non-NULL possibly empty string,
or a non-negative numeric flag). The next pointer is not modified.
Like above, if the resulting section name in target contains the @
character and some before it, the user name field would be (re-)set
to that value and not cloned.
Typically, the source node when merging is the global configuration item
(or a host:port when merging for a section with specific user value),
and the target node is a specific host:port or user@host:port
configuration item.
The upscli_free_authconf_item() function frees the memory allocated for
a single upscli_authconf_t node and returns its next pointer. This is
useful for manually iterating and cleaning up copies of the list, although
typically upscli_free_authconf_list(3) is used to clear the entire
internal list.
RETURN VALUE
The upscli_create_authconf_item() and upscli_clone_authconf_item()
functions returns a pointer to the new structure, or NULL if an error
occurred.
The upscli_merge_authconf_item() function returns a pointer to the merged target structure.
The upscli_free_authconf_item() function returns a pointer to the next element
of the upscli_authconf_t list, if known (and if it was part of the list).