From 69e504fd08cea9471986d065d6d5c835506b86aa Mon Sep 17 00:00:00 2001 From: Theodore Tso Date: Fri, 7 Oct 1994 05:05:27 +0000 Subject: [PATCH] Add an option to force destruction of the database, without asking any questions. git-svn-id: svn://anonsvn.mit.edu/krb5/trunk@4475 dc483132-0cff-0310-8789-dd5450dbe970 --- src/admin/destroy/ChangeLog | 5 ++ src/admin/destroy/kdb5_destroy.c | 82 +++++++++++++++++--------------- 2 files changed, 49 insertions(+), 38 deletions(-) diff --git a/src/admin/destroy/ChangeLog b/src/admin/destroy/ChangeLog index b5f8a0e3b..c444a81f7 100644 --- a/src/admin/destroy/ChangeLog +++ b/src/admin/destroy/ChangeLog @@ -1,3 +1,8 @@ +Thu Oct 6 23:43:38 1994 Theodore Y. Ts'o (tytso@dcl) + + * kdb5_destroy.c (main): Add option to force destruction of a + database. + Mon Oct 3 19:10:23 1994 Theodore Y. Ts'o (tytso@dcl) * Makefile.in: Use $(srcdir) to find manual page for make install. diff --git a/src/admin/destroy/kdb5_destroy.c b/src/admin/destroy/kdb5_destroy.c index 5758ce30b..412a0e2d0 100644 --- a/src/admin/destroy/kdb5_destroy.c +++ b/src/admin/destroy/kdb5_destroy.c @@ -60,62 +60,68 @@ char *argv[]; char buf[5]; char dbfilename[MAXPATHLEN]; krb5_error_code retval; + int force = 0; krb5_init_ets(); if (strrchr(argv[0], '/')) argv[0] = strrchr(argv[0], '/')+1; - while ((optchar = getopt(argc, argv, "d:")) != EOF) { + while ((optchar = getopt(argc, argv, "d:f")) != EOF) { switch(optchar) { case 'd': /* set db name */ dbname = optarg; break; + case 'f': + force++; + break; case '?': default: usage(argv[0], 1); /*NOTREACHED*/ } } - printf("Deleting KDC database stored in '%s', are you sure?\n", dbname); - printf("(type 'yes' to confirm)? "); - if ((fgets(buf, sizeof(buf), stdin) != NULL) && /* typed something */ - !strcmp(buf,yes)) { /* it matches yes */ - printf("OK, deleting database '%s'...\n", dbname); - (void) strcpy(dbfilename, dbname); - (void) strcat(dbfilename, ".dir"); - if (unlink(dbfilename) == -1) { - retval = errno; - com_err(argv[0], retval, "deleting database file '%s'",dbfilename); - if (retval == ENOENT) - fprintf(stderr, - "Database appears to not exist--inspect files manually!\n"); - else - fprintf(stderr, - "Database may be partially deleted--inspect files manually!\n"); - + if (!force) { + printf("Deleting KDC database stored in '%s', are you sure?\n", + dbname); + printf("(type 'yes' to confirm)? "); + if (fgets(buf, sizeof(buf), stdin) == NULL) exit(1); - } - (void) strcpy(dbfilename, dbname); - (void) strcat(dbfilename, ".pag"); - if (unlink(dbfilename) == -1) { - retval = errno; - com_err(argv[0], retval, "deleting database file '%s'",dbfilename); - fprintf(stderr, - "Database may be partially deleted--inspect files manually!\n"); + if (strcmp(buf, yes)) exit(1); - } - (void) strcpy(dbfilename, dbname); - (void) strcat(dbfilename, ".ok"); - if (unlink(dbfilename) == -1) { - retval = errno; - com_err(argv[0], retval, "deleting database file '%s'",dbfilename); + printf("OK, deleting database '%s'...\n", dbname); + } + (void) strcpy(dbfilename, dbname); + (void) strcat(dbfilename, ".dir"); + if (unlink(dbfilename) == -1) { + retval = errno; + com_err(argv[0], retval, "deleting database file '%s'",dbfilename); + if (retval == ENOENT) fprintf(stderr, - "Database partially deleted--inspect files manually!\n"); - exit(1); - } - printf("** Database '%s' destroyed.\n", dbname); - exit(0); + "Database appears to not exist--inspect files manually!\n"); + else + fprintf(stderr, + "Database may be partially deleted--inspect files manually!\n"); + exit(1); + } + (void) strcpy(dbfilename, dbname); + (void) strcat(dbfilename, ".pag"); + if (unlink(dbfilename) == -1) { + retval = errno; + com_err(argv[0], retval, "deleting database file '%s'",dbfilename); + fprintf(stderr, + "Database may be partially deleted--inspect files manually!\n"); + exit(1); + } + (void) strcpy(dbfilename, dbname); + (void) strcat(dbfilename, ".ok"); + if (unlink(dbfilename) == -1) { + retval = errno; + com_err(argv[0], retval, "deleting database file '%s'",dbfilename); + fprintf(stderr, + "Database partially deleted--inspect files manually!\n"); + exit(1); } - exit(1); + printf("** Database '%s' destroyed.\n", dbname); + exit(0); } -- 2.26.2