diff -purN --exclude=configure --exclude=*~ ../cvs-1.11.1p1.orig/ChangeLog ./ChangeLog
--- ../cvs-1.11.1p1.orig/ChangeLog	Thu Apr 26 20:12:56 2001
+++ ./ChangeLog	Sat Mar 23 14:29:02 2002
@@ -1,3 +1,7 @@
+2002-03-23  Jan Nieuwenhuizen  <janneke@gnu.org>
+
+	* configure.in: Update version to 1.11.1p1.jcn1.
+
 2001-04-26  Derek Price  <dprice@collab.net>
 
 	* cvs.spec.in: Don't include %{_infodir}/dir.
diff -purN --exclude=configure --exclude=*~ ../cvs-1.11.1p1.orig/configure.in ./configure.in
--- ../cvs-1.11.1p1.orig/configure.in	Fri Apr 27 22:00:47 2001
+++ ./configure.in	Sat Mar 23 14:27:26 2002
@@ -1,6 +1,6 @@
 dnl configure.in for cvs
 AC_INIT(src/cvs.h)
-AM_INIT_AUTOMAKE(cvs, 1.11.1p1)
+AM_INIT_AUTOMAKE(cvs, 1.11.1p1.jcn1)
 AC_PREREQ(2.13)
 AC_PREFIX_PROGRAM(cvs)
 AM_CONFIG_HEADER(config.h src/options.h)
diff -purN --exclude=configure --exclude=*~ ../cvs-1.11.1p1.orig/src/ChangeLog ./src/ChangeLog
--- ../cvs-1.11.1p1.orig/src/ChangeLog	Fri Apr 27 21:57:23 2001
+++ ./src/ChangeLog	Sat Mar 23 14:28:20 2002
@@ -1,3 +1,23 @@
+2002-03-23  Jan Nieuwenhuizen  <janneke@gnu.org>
+
+	* version.c: Regenerate.
+
+	* commit.c (remove_file): Add use_file_modtime to flags.
+	(checkaddfile): Ditto.
+	* checkin.c: Ditto.
+	
+	* cvs.h: Global int (previously static).
+	* import.c (use_file_modtime): Ditto.
+
+	* remove.c (remove_usage): Add -d to usage message.
+	(cvsremove): Parse -d option.
+
+	* add.c (add_usage): Ditto.
+	(add): Ditto.
+
+	* commit.c (commit_usage): Ditto.
+	(commit): Ditto.
+
 2001-04-27  Larry Jones  <larry.jones@sdrc.com>
 
 	* main.c (lookup_command_attribute): Lookup specified command, not
diff -purN --exclude=configure --exclude=*~ ../cvs-1.11.1p1.orig/src/add.c ./src/add.c
--- ../cvs-1.11.1p1.orig/src/add.c	Thu Apr 19 21:45:31 2001
+++ ./src/add.c	Sat Mar 23 14:15:27 2002
@@ -35,6 +35,7 @@ static int build_entry PROTO((char *repo
 static const char *const add_usage[] =
 {
     "Usage: %s %s [-k rcs-kflag] [-m message] files...\n",
+    "\t-d\tUse the file's modification time as the time of add.\n",
     "\t-k\tUse \"rcs-kflag\" to add the file with the specified kflag.\n",
     "\t-m\tUse \"message\" for the creation log.\n",
     "(Specify the --help global option for a list of other help options)\n",
@@ -68,10 +69,13 @@ add (argc, argv)
 
     /* parse args */
     optind = 0;
-    while ((c = getopt (argc, argv, "+k:m:")) != -1)
+    while ((c = getopt (argc, argv, "+dk:m:")) != -1)
     {
 	switch (c)
 	{
+	    case 'd':
+		use_file_modtime = 1;
+		break;
 	    case 'k':
 		if (options)
 		    free (options);
diff -purN --exclude=configure --exclude=*~ ../cvs-1.11.1p1.orig/src/checkin.c ./src/checkin.c
--- ../cvs-1.11.1p1.orig/src/checkin.c	Thu Apr 19 21:29:06 2001
+++ ./src/checkin.c	Sat Mar 23 14:12:35 2002
@@ -56,7 +56,9 @@ Checkin (type, finfo, rcs, rev, tag, opt
     if (finfo->rcs == NULL)
 	finfo->rcs = RCS_parse (finfo->file, finfo->repository);
 
-    switch (RCS_checkin (finfo->rcs, NULL, message, rev, RCS_FLAGS_KEEPFILE))
+    switch (RCS_checkin (finfo->rcs, NULL, message, rev,
+			 (RCS_FLAGS_KEEPFILE
+			  | (use_file_modtime ? RCS_FLAGS_MODTIME : 0))))
     {
 	case 0:			/* everything normal */
 
diff -purN --exclude=configure --exclude=*~ ../cvs-1.11.1p1.orig/src/commit.c ./src/commit.c
--- ../cvs-1.11.1p1.orig/src/commit.c	Tue Apr 24 20:14:53 2001
+++ ./src/commit.c	Sat Mar 23 14:14:16 2002
@@ -84,7 +84,8 @@ static time_t last_register_time;
 
 static const char *const commit_usage[] =
 {
-    "Usage: %s %s [-nRlf] [-m msg | -F logfile] [-r rev] files...\n",
+    "Usage: %s %s [-dnRlf] [-m msg | -F logfile] [-r rev] files...\n",
+    "    -d          Use the file's modification time as the time of commit.\n",
     "    -n          Do not run the module program (if any).\n",
     "    -R          Process directories recursively.\n",
     "    -l          Local directory only (not recursive).\n",
@@ -358,10 +359,13 @@ commit (argc, argv)
 #endif /* CVS_BADROOT */
 
     optind = 0;
-    while ((c = getopt (argc, argv, "+nlRm:fF:r:")) != -1)
+    while ((c = getopt (argc, argv, "+dnlRm:fF:r:")) != -1)
     {
 	switch (c)
 	{
+	    case 'd':
+		use_file_modtime = 1;
+		break;
 	    case 'n':
 		run_module_prog = 0;
 		break;
@@ -1732,7 +1736,9 @@ remove_file (finfo, tag, message)
 	free (corev);
 
     retcode = RCS_checkin (finfo->rcs, finfo->file, message, rev,
-			   RCS_FLAGS_DEAD | RCS_FLAGS_QUIET);
+			   (RCS_FLAGS_DEAD | RCS_FLAGS_QUIET
+			    | (use_file_modtime ? RCS_FLAGS_MODTIME : 0)));
+
     if (retcode	!= 0)
     {
 	if (!quiet)
@@ -2074,7 +2080,10 @@ checkaddfile (file, repository, tag, opt
 	    (void) sprintf (tmp, "file %s was initially added on branch %s.",
 			    file, tag);
 	    retcode = RCS_checkin (rcsfile, NULL, tmp, NULL,
-				   RCS_FLAGS_DEAD | RCS_FLAGS_QUIET);
+				   (RCS_FLAGS_DEAD | RCS_FLAGS_QUIET
+				    | (use_file_modtime
+				       ? RCS_FLAGS_MODTIME : 0)));
+
 	    free (tmp);
 	    if (retcode != 0)
 	    {
diff -purN --exclude=configure --exclude=*~ ../cvs-1.11.1p1.orig/src/cvs.h ./src/cvs.h
--- ../cvs-1.11.1p1.orig/src/cvs.h	Tue Apr 24 20:14:53 2001
+++ ./src/cvs.h	Sat Mar 23 14:08:51 2002
@@ -363,6 +363,7 @@ extern int really_quiet, quiet;
 extern int use_editor;
 extern int cvswrite;
 extern mode_t cvsumask;
+extern int use_file_modtime;
 
 /* Access method specified in CVSroot. */
 typedef enum {
diff -purN --exclude=configure --exclude=*~ ../cvs-1.11.1p1.orig/src/import.c ./src/import.c
--- ../cvs-1.11.1p1.orig/src/import.c	Thu Apr 19 21:45:32 2001
+++ ./src/import.c	Sat Mar 23 14:09:01 2002
@@ -40,7 +40,7 @@ static char *vbranch;
 static FILE *logfp;
 static char *repository;
 static int conflicts;
-static int use_file_modtime;
+int use_file_modtime;
 static char *keyword_opt = NULL;
 
 static const char *const import_usage[] =
diff -purN --exclude=configure --exclude=*~ ../cvs-1.11.1p1.orig/src/remove.c ./src/remove.c
--- ../cvs-1.11.1p1.orig/src/remove.c	Thu Apr 19 21:45:33 2001
+++ ./src/remove.c	Sat Mar 23 14:26:39 2002
@@ -34,6 +34,7 @@ static int existing_files;
 static const char *const remove_usage[] =
 {
     "Usage: %s %s [-flR] [files...]\n",
+    "\t-d\tUse the file's modification time as the time of remove.\n",
     "\t-f\tDelete the file before removing it.\n",
     "\t-l\tProcess this directory only (not recursive).\n",
     "\t-R\tProcess directories recursively.\n",
@@ -52,10 +53,13 @@ cvsremove (argc, argv)
 	usage (remove_usage);
 
     optind = 0;
-    while ((c = getopt (argc, argv, "+flR")) != -1)
+    while ((c = getopt (argc, argv, "+dflR")) != -1)
     {
 	switch (c)
 	{
+	    case 'd':
+		use_file_modtime = 1;
+		break;
 	    case 'f':
 		force = 1;
 		break;

