Add an option to force destruction of the database, without asking any
authorTheodore Tso <tytso@mit.edu>
Fri, 7 Oct 1994 05:05:27 +0000 (05:05 +0000)
committerTheodore Tso <tytso@mit.edu>
Fri, 7 Oct 1994 05:05:27 +0000 (05:05 +0000)
questions.

git-svn-id: svn://anonsvn.mit.edu/krb5/trunk@4475 dc483132-0cff-0310-8789-dd5450dbe970

src/admin/destroy/ChangeLog
src/admin/destroy/kdb5_destroy.c

index b5f8a0e3b845fbc5a7f73d3737dfff0f886778bb..c444a81f7f82187aed25adb627de2d113c7330eb 100644 (file)
@@ -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.
index 5758ce30b8a6b440696f18e1245fa2aa39bf3d52..412a0e2d024468b1b9ab53f1dab606f93a120f3b 100644 (file)
@@ -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);
 }