summaryrefslogtreecommitdiff
path: root/client/internal.h
diff options
context:
space:
mode:
Diffstat (limited to 'client/internal.h')
-rw-r--r--client/internal.h37
1 files changed, 21 insertions, 16 deletions
diff --git a/client/internal.h b/client/internal.h
index e55f2b8..d82196c 100644
--- a/client/internal.h
+++ b/client/internal.h
@@ -1,9 +1,8 @@
-/* $Id$
- *
+/*
* Internal support functions for the wallet client.
*
* Written by Russ Allbery <rra@stanford.edu>
- * Copyright 2007, 2008 Board of Trustees, Leland Stanford Jr. University
+ * Copyright 2007, 2008, 2010 Board of Trustees, Leland Stanford Jr. University
*
* See LICENSE for licensing terms.
*/
@@ -12,31 +11,37 @@
#define CLIENT_INTERNAL_H 1
#include <portable/macros.h>
+#include <portable/krb5.h>
-#include <krb5.h>
#include <sys/types.h>
/* Forward declarations to avoid unnecessary includes. */
struct remctl;
+struct iovec;
BEGIN_DECLS
/*
* Given a Kerberos context and a principal name, obtain Kerberos credentials
- * for that principal and store them in a memory cache for use by later
- * operations.
+ * for that principal and store them in a temporary ticket cache for use by
+ * later operations. kdestroy() then cleans up that cache.
*/
void kinit(krb5_context, const char *principal);
+void kdestroy(void);
/*
- * Given a remctl object, run a remctl command. If data is non-NULL, saves
- * the standard output from the command into data with the length in length.
- * Otherwise, prints it to standard output. Either way, prints standard error
- * output and errors to standard error and returns the exit status or 255 for
- * a remctl internal error.
+ * Given a remctl object, either a NULL-terminated array of strings or an
+ * array of iovecs and the number of elements in the array, and optional data
+ * and size output variables, run a remctl command. If data is non-NULL,
+ * saves the standard output from the command into data with the length in
+ * length. Otherwise, prints it to standard output. Either way, prints
+ * standard error output and errors to standard error and returns the exit
+ * status or 255 for a remctl internal error.
*/
int run_command(struct remctl *, const char **command, char **data,
size_t *length);
+int run_commandv(struct remctl *, const struct iovec *command, size_t count,
+ char **data, size_t *length);
/*
* Check whether an object exists using the exists wallet interface. Returns
@@ -91,12 +96,12 @@ void write_srvtab(krb5_context, const char *srvtab, const char *principal,
const char *keytab);
/*
- * Read all of a file into memory and return the contents as a newly allocated
- * string. Handles a file name of "-" to mean standard input. Dies on any
- * failure. This will need modification later when we want to handle nul
- * characters.
+ * Read all of a file into memory and return the contents in newly allocated
+ * memory. Handles a file name of "-" to mean standard input. Stores the
+ * length of the data in the second argument if it isn't NULL. Dies on any
+ * failure.
*/
-char *read_file(const char *);
+void *read_file(const char *, size_t *);
END_DECLS