From e1647e16248eb235284f84eceb9351d20db29fbc Mon Sep 17 00:00:00 2001
From: Per Cederqvist <ceder@lysator.liu.se>
Date: Sat, 18 Jun 1994 21:05:43 +0000
Subject: [PATCH] New option: -c (Consider an unset change_name an error).
 (unset_change_name_is_error): New variable. (check_persons): Check
 change_name if unset_change_name_is_error is set.  Set it if -r is given, or
 offer to set it if -i is given. (main): Recognize -c and set
 unset_change_name_is_error if given.

---
 src/server/dbck.c | 32 +++++++++++++++++++++++++++-----
 1 file changed, 27 insertions(+), 5 deletions(-)

diff --git a/src/server/dbck.c b/src/server/dbck.c
index fe2377754..d7ad1a220 100644
--- a/src/server/dbck.c
+++ b/src/server/dbck.c
@@ -1,5 +1,5 @@
 /*
- * $Id: dbck.c,v 0.22 1994/06/18 19:52:46 ceder Exp $
+ * $Id: dbck.c,v 0.23 1994/06/18 21:05:43 ceder Exp $
  * Copyright (C) 1991, 1992, 1993, 1994  Lysator Academic Computer Association.
  *
  * This file is part of the LysKOM server.
@@ -28,7 +28,7 @@
  * Author: Per Cederqvist.
  */
 
-static char *rcsid = "$Id: dbck.c,v 0.22 1994/06/18 19:52:46 ceder Exp $";
+static char *rcsid = "$Id: dbck.c,v 0.23 1994/06/18 21:05:43 ceder Exp $";
 #include "rcs.h"
 USE(rcsid);
 
@@ -77,7 +77,10 @@ int iflag=0;			/* Interactive - prompt user and repair. */
 int rflag=0;			/* Repair simple error without confirmation. */
 int gflag=0;			/* Garbage collect text-file. */
 int sflag=0;			/* Statistic flag. */
-	
+/* The following variable corresponds to the -c flag, and is
+   present here due to a bug in lyskomd 1.6.1. */
+int unset_change_name_is_error=0;
+
 int modifications = 0;
 
 typedef struct {
@@ -866,6 +869,21 @@ check_persons(void)
 	    errors += (check_created_texts(cp, &pstat->created_texts)
 		       + check_membership_list(cp, &pstat->conferences));
 	}
+
+	if (unset_change_name_is_error == 1
+	    && pstat->privileges.change_name == 0)
+	{
+	    log("Person %lu has no change_name capability.\n",
+		(unsigned long)cp);
+	    if (rflag || confirm("Grant him the capability"))
+	    {
+		pstat->privileges.change_name = 1;
+		mark_person_as_changed(cp);
+		modifications++;
+	    }
+	    else
+		errors++;
+	}
     }
 
     if (vflag)
@@ -1272,9 +1290,13 @@ main (int    argc,
 	    sflag++;
 	    break;
 
+	case 'c':		/* Consider an unset change_name an error. */
+	    unset_change_name_is_error = 1;
+	    break;
+
 	default:
 	    restart_kom("usage: %s %s [config_file]\n",
-			argv[0], "[-d ...] [-i] [-r] [-v] [-g] [-s]");
+			argv[0], "[-d ...] [-i] [-r] [-v] [-g] [-s] [-c]");
 	}
     }
     
@@ -1293,7 +1315,7 @@ main (int    argc,
 
     if (i != argc)
 	restart_kom("usage: %s %s [config_file]\n",
-		    argv[0], "[-d ...] [-i] [-r] [-v] [-g] [-s]");
+		    argv[0], "[-d ...] [-i] [-r] [-v] [-g] [-s] [-c]");
 
     s_set_storage_management(smalloc, srealloc, sfree);
 
-- 
GitLab