Add support to read dump from stdin.

git-svn-id: svn://svn.h5l.se/heimdal/trunk/heimdal@3362 ec53bebd-3082-4978-b11e-865c3cabbd6b
This commit is contained in:
Johan Danielsson
1997-09-03 18:17:50 +00:00
parent 45991ffbcc
commit a1cc81345b

View File

@@ -82,12 +82,14 @@ int open_socket(krb5_context context)
static int help_flag;
static int version_flag;
static char *database = HDB_DEFAULT_DB;
static int from_stdin;
struct getargs args[] = {
#if 0
{ "slave", 's', arg_strings, &slaves, "slave server", "host" },
#endif
{ "database", 'd', arg_string, &database, "database", "file" },
{ "stdin", 'n', arg_flag, &from_stdin , "read from stdin" },
{ "version", 0, arg_flag, &version_flag, NULL, NULL },
{ "help", 'h', arg_flag, &help_flag, NULL, NULL}
};
@@ -135,6 +137,9 @@ int main(int argc, char **argv)
if(version_flag)
krb5_errx(context, 0, "%s (%s)\n", __progname, heimdal_version);
if(from_stdin)
fd = STDIN_FILENO;
else{
fd = open_socket(context);
if(fd < 0)
krb5_errx(context, 1, "Failed to obtain socket - exiting");
@@ -174,6 +179,7 @@ int main(int argc, char **argv)
ret = krb5_kt_close(context, keytab);
if(ret) krb5_err(context, 1, ret, "krb5_kt_close");
}
asprintf(&tmp_db, "%s~", database);
ret = hdb_open(context, &db, tmp_db, O_RDWR | O_CREAT | O_TRUNC, 0600);
@@ -184,13 +190,20 @@ int main(int argc, char **argv)
krb5_data data;
hdb_entry entry;
if(from_stdin){
ret = recv_clear(context, fd, &data);
if(ret) krb5_err(context, 1, ret, "recv_clear");
}else{
ret = recv_priv(context, ac, fd, &data);
if(ret) krb5_err(context, 1, ret, "recv_priv");
}
if(data.length == 0){
if(!from_stdin){
data.data = NULL;
data.length = 0;
send_priv(context, ac, &data, fd);
}
ret = db->rename(context, db, database);
if(ret) krb5_err(context, 1, ret, "db_rename");
ret = db->close(context, db);