diff options
author | Thorsten Lockert <tholo@cvs.openbsd.org> | 1998-08-22 20:55:04 +0000 |
---|---|---|
committer | Thorsten Lockert <tholo@cvs.openbsd.org> | 1998-08-22 20:55:04 +0000 |
commit | 13bd6dae8832d1ec1e294f2288647158632d9d15 (patch) | |
tree | 641d5ad94a92e6936675a888627581bbba18e5b9 | |
parent | ef97cc6c11f61403fd0f39b0d7c350286c611f93 (diff) |
Latest version from Cyclic
-rw-r--r-- | gnu/usr.bin/cvs/doc/ChangeLog | 42 | ||||
-rw-r--r-- | gnu/usr.bin/cvs/doc/cvsclient.texi | 20 | ||||
-rw-r--r-- | gnu/usr.bin/cvs/man/ChangeLog | 5 | ||||
-rw-r--r-- | gnu/usr.bin/cvs/src/build_src.com | 2 | ||||
-rw-r--r-- | gnu/usr.bin/cvs/src/tag.c | 15 | ||||
-rw-r--r-- | gnu/usr.bin/cvs/src/version.c | 3 | ||||
-rw-r--r-- | gnu/usr.bin/cvs/windows-NT/ChangeLog | 20 | ||||
-rw-r--r-- | gnu/usr.bin/cvs/windows-NT/config.h | 4 | ||||
-rw-r--r-- | gnu/usr.bin/cvs/windows-NT/filesubr.c | 47 | ||||
-rw-r--r-- | gnu/usr.bin/cvs/windows-NT/startserver.c | 32 |
10 files changed, 175 insertions, 15 deletions
diff --git a/gnu/usr.bin/cvs/doc/ChangeLog b/gnu/usr.bin/cvs/doc/ChangeLog index a779ff62877..e9e4925939e 100644 --- a/gnu/usr.bin/cvs/doc/ChangeLog +++ b/gnu/usr.bin/cvs/doc/ChangeLog @@ -1,3 +1,45 @@ +Sun Jul 26 02:42:20 1998 Noel Cragg <noel@swish.red-bean.com> + + * cvs.texinfo (config): TopLevelAdmin variable. + + * cvsclient.texi (Requests): fix typo. + +1998-07-14 Jim Kingdon <kingdon@harvey.cyclic.com> + + * cvsclient.texi (Requests): "remove" is like "add" in the sense + that it is the "ci" request which does most of the work. + +1998-06-23 Jim Kingdon <kingdon@harvey.cyclic.com> + + * cvs.texinfo (Excluding directories): Fix order of + "!first-dir/sdir" and "first-dir" to match what CVS actually + accepts. Reported by Tim McIntosh of sterling.com. + +1998-06-09 Jim Kingdon <kingdon@harvey.cyclic.com> + + * cvs.texinfo (Using keywords): Rewrite to be less specific to + source code in C. The old text was worse than that; it was + specific to certain versions of GCC (not even current GCC's, I + don't think) (reported most recently by Mitchell Perilstein; + if memory serves by others before that). + +1998-06-08 Jim Kingdon <kingdon@harvey.cyclic.com> + + * cvs.texinfo (Concurrency): Also mention #cvs.lock. Don't + mention #cvs.tfl; it is quite old (before CVS 1.5). + (Locks, Backing up, Concurrency): Add more index entries. + +1998-06-03 Ian Lance Taylor <ian@cygnus.com> + + * cvs.texinfo (Tracking sources): Clarify that the vendor branch + is only made the head revision when you import a new file, not any + time you import a file. + +1998-05-23 Jim Kingdon <kingdon@harvey.cyclic.com> + + * cvs.texinfo (What is CVS?): info-cvs-request is now at gnu.org + and is no longer handled by a human (hallelujah). + 1998-05-12 Jim Meyering <meyering@ascend.com> * cvs.texinfo: Add an info dir entry. diff --git a/gnu/usr.bin/cvs/doc/cvsclient.texi b/gnu/usr.bin/cvs/doc/cvsclient.texi index 3b4ab41142f..6f0139976b7 100644 --- a/gnu/usr.bin/cvs/doc/cvsclient.texi +++ b/gnu/usr.bin/cvs/doc/cvsclient.texi @@ -544,7 +544,7 @@ for the original directory, then the command. The @var{local-directory} is relative to the top level at which the command is occurring (i.e. the last @code{Directory} which is sent before the command); -to indicate that top level, @samp{.} should be send for +to indicate that top level, @samp{.} should be sent for @var{local-directory}. Here is an example of where a client gets @var{repository} and @@ -919,7 +919,6 @@ directory. @itemx tag \n @itemx status \n @itemx log \n -@itemx remove \n @itemx admin \n @itemx history \n @itemx watchers \n @@ -1061,6 +1060,23 @@ directories, as described above), use @samp{.} for @var{local-directory} may not get an error, but it will get you strange @code{Checked-in} responses from the buggy servers. +@item remove \n +Response expected: yes. Remove a file. This uses any +previous @code{Argument}, @code{Directory}, @code{Entry}, or +@code{Modified} requests, if they have been sent. The +last @code{Directory} sent specifies the working directory at the time +of the operation. + +Note that this request does not actually do anything to the repository; +the only effect of a successful @code{remove} request is to supply the +client with a new entries line containing @samp{-} to indicate a removed +file. In fact, the client probably could perform this operation without +contacting the server, although using @code{remove} may cause the server +to perform a few more checks. + +The client sends a subsequent @code{ci} request to actually record the +removal in the repository. + @item watch-on \n @itemx watch-off \n @itemx watch-add \n diff --git a/gnu/usr.bin/cvs/man/ChangeLog b/gnu/usr.bin/cvs/man/ChangeLog index c873cb27c39..f131d3e855b 100644 --- a/gnu/usr.bin/cvs/man/ChangeLog +++ b/gnu/usr.bin/cvs/man/ChangeLog @@ -1,3 +1,8 @@ +1998-06-28 Jim Kingdon <kingdon@harvey.cyclic.com> + + * cvs.1: Update various items which were out of date. Mostly + these related to CVS no longer calling external RCS programs. + Mon Jan 12 11:10:21 1998 Jim Kingdon <kingdon@harvey.cyclic.com> * cvs.1: Refer to Cederqvist as Cederqvist not as cvs.texinfo. diff --git a/gnu/usr.bin/cvs/src/build_src.com b/gnu/usr.bin/cvs/src/build_src.com index 3adb1e4f53d..3d3baa65891 100644 --- a/gnu/usr.bin/cvs/src/build_src.com +++ b/gnu/usr.bin/cvs/src/build_src.com @@ -33,7 +33,7 @@ $ CC no_diff.c $ CC parseinfo.c $ CC patch.c $ CC rcs.c -$ CC rcscmds.c +$ CC/INCLUDE_DIR=([-],[-.VMS],[-.LIB],[-.diff]) rcscmds.c $ CC recurse.c $ CC release.c $ CC remove.c diff --git a/gnu/usr.bin/cvs/src/tag.c b/gnu/usr.bin/cvs/src/tag.c index a97da5c1237..a5b8794fe10 100644 --- a/gnu/usr.bin/cvs/src/tag.c +++ b/gnu/usr.bin/cvs/src/tag.c @@ -275,8 +275,17 @@ check_fileproc (callerdat, finfo) error (0, 0, "nothing known about %s", finfo->file); return (1); } - p->data = RCS_getversion(vers->srcfile, numtag, date, force_tag_match, - (int *) NULL); + + /* Here we duplicate the calculation in tag_fileproc about which + version we are going to tag. There probably are some subtle races + (e.g. numtag is "foo" which gets moved between here and + tag_fileproc). */ + if (numtag == NULL && date == NULL) + p->data = xstrdup (vers->vn_user); + else + p->data = RCS_getversion (vers->srcfile, numtag, date, + force_tag_match, NULL); + if (p->data != NULL) { int addit = 1; @@ -377,7 +386,7 @@ pretag_proc(repository, filter) run_arg (delete_flag ? "del" : force_tag_move ? "mov" : "add"); run_arg (repository); walklist(tlist, pretag_list_proc, NULL); - return (run_exec(RUN_TTY, RUN_TTY, RUN_TTY, RUN_NORMAL|RUN_REALLY)); + return (run_exec (RUN_TTY, RUN_TTY, RUN_TTY, RUN_NORMAL)); } static void diff --git a/gnu/usr.bin/cvs/src/version.c b/gnu/usr.bin/cvs/src/version.c index d5fb085d078..479e5e6af77 100644 --- a/gnu/usr.bin/cvs/src/version.c +++ b/gnu/usr.bin/cvs/src/version.c @@ -12,7 +12,8 @@ #include "cvs.h" -char *version_string = "\nConcurrent Versions System (CVS) 1.9.28"; +/* NOTE: remember to remove `Halibut' when patching this code. */ +char *version_string = "\nConcurrent Versions System (CVS) 1.10 `Halibut'"; #ifdef CLIENT_SUPPORT #ifdef SERVER_SUPPORT diff --git a/gnu/usr.bin/cvs/windows-NT/ChangeLog b/gnu/usr.bin/cvs/windows-NT/ChangeLog index 1de19e3bed2..7ccf78d80a4 100644 --- a/gnu/usr.bin/cvs/windows-NT/ChangeLog +++ b/gnu/usr.bin/cvs/windows-NT/ChangeLog @@ -1,3 +1,23 @@ +1998-07-01 Jim Kingdon <kingdon@harvey.cyclic.com> + + * startserver.c (wnt_shutdown_server): Check for errors from close(). + +1998-06-30 Noel Cragg + + * startserver.c: add a global variable which notes if we've opened + a socket. Since the code in client.c will call wnt_shutdown_server + regardless of which client method we've selected, we need to make + sure and not call shutdown or closesocket on a pipe (it won't work). + (wnt_shutdown_server): use the new global to decide whether or not + to call socket routines or simply use close. + + +1998-06-11 Jim Kingdon + + * config.h (CVS_STAT, CVS_LSTAT): Define. + * filesubr.c, config.h (wnt_stat, wnt_lstat, check_statbuf): + New functions. + 1998-04-09 Jim Kingdon <kingdon@harvey.cyclic.com> * filesubr.c (link_file): Remove; no longer used. diff --git a/gnu/usr.bin/cvs/windows-NT/config.h b/gnu/usr.bin/cvs/windows-NT/config.h index f385726166c..11542164097 100644 --- a/gnu/usr.bin/cvs/windows-NT/config.h +++ b/gnu/usr.bin/cvs/windows-NT/config.h @@ -235,6 +235,10 @@ /* Under Windows NT, mkdir only takes one argument. */ #define CVS_MKDIR wnt_mkdir extern int wnt_mkdir (const char *PATH, int MODE); +#define CVS_STAT wnt_stat +extern int wnt_stat (); +#define CVS_LSTAT wnt_lstat +extern int wnt_lstat (); /* This function doesn't exist under Windows NT; we provide a stub. */ diff --git a/gnu/usr.bin/cvs/windows-NT/filesubr.c b/gnu/usr.bin/cvs/windows-NT/filesubr.c index 0008b112a0b..44df75b4b27 100644 --- a/gnu/usr.bin/cvs/windows-NT/filesubr.c +++ b/gnu/usr.bin/cvs/windows-NT/filesubr.c @@ -855,3 +855,50 @@ expand_wild (argc, argv, pargc, pargv) *pargc = new_argc; *pargv = new_argv; } + +static void check_statbuf (const char *file, struct stat *sb) +{ + /* Win32 processes file times in a 64 bit format + (see Win32 functions SetFileTime and GetFileTime). + If the file time on a file doesn't fit into the + 32 bit time_t format, then stat will set that time + to -1. This would be OK, except that functions + like ctime() don't check for validity. So what we + do here is to give a error on -1. A cleaner solution + might be to change CVS's interfaces to return a time + in RCS format (for example), and then implement it + on Win32 via GetFileTime, but that would be a lot of + hair and I'm not sure there is much payoff. */ + if (sb->st_mtime == (time_t) -1) + error (1, 0, "invalid modification time for %s", file); + if (sb->st_ctime == (time_t) -1) + /* I'm not sure what this means on windows. It + might be a creation time (unlike unix).... */ + error (1, 0, "invalid ctime for %s", file); + if (sb->st_atime == (time_t) -1) + error (1, 0, "invalid access time for %s", file); +} + +int +wnt_stat (const char *file, struct stat *sb) +{ + int retval; + + retval = stat (file, sb); + if (retval < 0) + return retval; + check_statbuf (file, sb); + return retval; +} + +int +wnt_lstat (const char *file, struct stat *sb) +{ + int retval; + + retval = lstat (file, sb); + if (retval < 0) + return retval; + check_statbuf (file, sb); + return retval; +} diff --git a/gnu/usr.bin/cvs/windows-NT/startserver.c b/gnu/usr.bin/cvs/windows-NT/startserver.c index 0856d972b20..cbcde61cece 100644 --- a/gnu/usr.bin/cvs/windows-NT/startserver.c +++ b/gnu/usr.bin/cvs/windows-NT/startserver.c @@ -10,6 +10,12 @@ #include <io.h> #include <errno.h> +/* Keep track of whether we've opened a socket so that wnt_shutdown_server + can do the correct thing. We don't want to call shutdown or + closesocket on a pipe. */ + +static int opened_a_socket = 0; + void wnt_start_server (int *tofd, int *fromfd, char *client_user, @@ -52,19 +58,29 @@ wnt_start_server (int *tofd, int *fromfd, *tofd = read_fd; *fromfd = read_fd; free (command); + + opened_a_socket = 1; } void wnt_shutdown_server (int fd) { - SOCKET s; + if (opened_a_socket) + { + SOCKET s; - s = fd; - if (shutdown (s, 2) == SOCKET_ERROR) - error (1, 0, "couldn't shutdown server connection: %s", - SOCK_STRERROR (SOCK_ERRNO)); - if (closesocket (s) == SOCKET_ERROR) - error (1, 0, "couldn't close server connection: %s", - SOCK_STRERROR (SOCK_ERRNO)); + s = fd; + if (shutdown (s, 2) == SOCKET_ERROR) + error (1, 0, "couldn't shutdown server connection: %s", + SOCK_STRERROR (SOCK_ERRNO)); + if (closesocket (s) == SOCKET_ERROR) + error (1, 0, "couldn't close server connection: %s", + SOCK_STRERROR (SOCK_ERRNO)); + } + else + { + if (close (fd) < 0) + error (1, errno, "cannot close server connection"); + } } |