diff -cNr cvs-1.11/ChangeLog cvs-1.11+1/ChangeLog
*** cvs-1.11/ChangeLog	Sat Sep  9 03:28:02 2000
--- cvs-1.11+1/ChangeLog	Sat Jan  6 22:06:49 2001
***************
*** 1,3 ****
--- 1,25 ----
+ 2000-09-27  Takashi TOYOSHIMA  <toyoshim@be-in.org>
+ 
+ 	* configure.in: If target system is the BeOS, replace mkdir function.
+ 	* configure: Regenerated.
+ 
+ 2000-09-26  Takashi TOYOSHIMA  <toyoshim@be-in.org>
+ 
+ 	* configure.in: If crypt lib not found, define AUTH_SERVER_SUPPORT
+ 	and USE_MD5PASSWD. And AC_CHECK_HEADER(Be.h, ...) added.
+ 	* configure: Regenerated.
+ 
+ 	* acconfig.h: Add NO_SOCKET_TO_FD and NO_LOCALUSER_CHECK.
+ 	* config.h.in: Regenerated.
+ 
+ 2000-09-20  Takashi TOYOSHIMA  <toyoshim@be-in.org>
+ 
+ 	* config.h.in: HAVE_TERMIOS_H, HAVE_BE_H and HAVE_GETPASS entries
+ 	added. And if defined HAVE_BE_H, define NO_SOCKET_TO_FD.
+ 
+ 	* configure.in: termios.h, Be.h added to AC_CHECK_HEADERS. And
+ 	getpass added to AC_CHECK_FUNCS.
+ 
  2000-09-07  Larry Jones  <larry.jones@sdrc.com>
  
  	* Makefile.in: Use @bindir@, @libdir@, @infodir@, and @mandir@
diff -cNr cvs-1.11/acconfig.h cvs-1.11+1/acconfig.h
*** cvs-1.11/acconfig.h	Fri Sep  8 01:48:24 2000
--- cvs-1.11+1/acconfig.h	Sat Jan  6 22:06:49 2001
***************
*** 18,23 ****
--- 18,26 ----
  /* Define if you want to use the password authenticated server.  */
  #undef AUTH_SERVER_SUPPORT
  
+ /* Define if you don't have the crypt library, but use pserver.  */
+ #undef USE_MD5PASSWD
+ 
  /* Define if you want encryption support.  */
  #undef ENCRYPTION
  
***************
*** 55,57 ****
--- 58,67 ----
  
  /* Define to force lib/regex.c to define re_comp et al.  */
  #undef _REGEX_RE_COMP
+ 
+ /* Define if target system discriminate between file and socket descriptor.  */
+ #undef NO_SOCKET_TO_FD
+ 
+ /* Define if target system is single user system.  */
+ #undef NO_LOCALUSER_CHECK
+ 
diff -cNr cvs-1.11/configure.in cvs-1.11+1/configure.in
*** cvs-1.11/configure.in	Wed Aug  2 01:13:25 2000
--- cvs-1.11+1/configure.in	Sat Jan  6 22:06:49 2001
***************
*** 35,41 ****
  AC_CHECK_HEADERS(errno.h unistd.h string.h memory.h utime.h fcntl.h ndbm.h \
  		 limits.h sys/file.h \
                   sys/param.h sys/select.h sys/time.h sys/timeb.h \
!                  io.h direct.h sys/bsdtypes.h sys/resource.h)
  AC_HEADER_STAT
  AC_HEADER_TIME
  
--- 35,43 ----
  AC_CHECK_HEADERS(errno.h unistd.h string.h memory.h utime.h fcntl.h ndbm.h \
  		 limits.h sys/file.h \
                   sys/param.h sys/select.h sys/time.h sys/timeb.h \
!                  io.h direct.h sys/bsdtypes.h sys/resource.h \
!                  termios.h Be.h)
! AC_CHECK_HEADER(Be.h, AC_DEFINE(NO_SOCKET_TO_FD) AC_DEFINE(NO_LOCALUSER_CHECK))
  AC_HEADER_STAT
  AC_HEADER_TIME
  
***************
*** 49,55 ****
  AC_STRUCT_ST_BLKSIZE
  AC_STRUCT_ST_RDEV
  AC_REPLACE_FUNCS(mkdir rename strstr dup2 strerror valloc waitpid memmove strtoul)
! AC_CHECK_FUNCS(fchmod fsync ftime mktemp putenv vprintf ftruncate timezone getpagesize initgroups fchdir sigaction sigprocmask sigvec sigsetmask sigblock tempnam tzset readlink wait3 mknod getpassphrase)
  
  dnl
  dnl The CVS coding standard (as specified in HACKING) is that if it exists
--- 51,58 ----
  AC_STRUCT_ST_BLKSIZE
  AC_STRUCT_ST_RDEV
  AC_REPLACE_FUNCS(mkdir rename strstr dup2 strerror valloc waitpid memmove strtoul)
! AC_CHECK_HEADER(Be.h, LIBOBJS="$LIBOBJS mkdir.o")
! AC_CHECK_FUNCS(fchmod fsync ftime mktemp putenv vprintf ftruncate timezone getpagesize initgroups fchdir sigaction sigprocmask sigvec sigsetmask sigblock tempnam tzset readlink wait3 mknod getpassphrase getpass)
  
  dnl
  dnl The CVS coding standard (as specified in HACKING) is that if it exists
***************
*** 268,274 ****
  dnl find the crypt function. 
  
  if test "$enable_server" = yes; then
! AC_SEARCH_LIBS(crypt, crypt, AC_DEFINE(HAVE_CRYPT) AC_DEFINE(AUTH_SERVER_SUPPORT))
  fi # enable_server
  
  dnl For the moment we will assume that all systems which have
--- 271,277 ----
  dnl find the crypt function. 
  
  if test "$enable_server" = yes; then
! AC_SEARCH_LIBS(crypt, crypt, AC_DEFINE(HAVE_CRYPT) AC_DEFINE(AUTH_SERVER_SUPPORT), AC_DEFINE(AUTH_SERVER_SUPPORT) AC_DEFINE(USE_MD5PASSWD))
  fi # enable_server
  
  dnl For the moment we will assume that all systems which have
diff -cNr cvs-1.11/lib/ChangeLog cvs-1.11+1/lib/ChangeLog
*** cvs-1.11/lib/ChangeLog	Tue Jul 11 04:45:03 2000
--- cvs-1.11+1/lib/ChangeLog	Sat Jan  6 22:14:23 2001
***************
*** 1,3 ****
--- 1,13 ----
+ 2001-01-06  Takashi TOYOSHIMA  <toyoshim@be-in.org>
+ 
+ 	* mkdir.c: Lazy patch against cvs-1.11 bug.
+ 	(rmdir used against directories which have CVS/* files.)
+ 
+ 2000-09-27  Takashi TOYOSHIMA  <toyoshim@be-in.org>
+ 
+ 	* mkdir.c: Argument typs of mkdir and rmdir are modified.
+ 	And include syste.h.
+ 
  2000-07-10  Larry Jones  <larry.jones@sdrc.com>
  
  	* savecwd.c: #include <sys/types.h> before <fcntl.h>.
diff -cNr cvs-1.11/lib/mkdir.c cvs-1.11+1/lib/mkdir.c
*** cvs-1.11/lib/mkdir.c	Fri Jan  3 04:07:46 1997
--- cvs-1.11+1/lib/mkdir.c	Sat Jan  6 22:07:10 2001
***************
*** 15,20 ****
--- 15,22 ----
  #include "config.h"
  #endif
  
+ #include "system.h"
+ 
  #include <sys/types.h>
  #include <sys/stat.h>
  #include <errno.h>
***************
*** 37,44 ****
  
  int
  mkdir (dpath, dmode)
!      char *dpath;
!      int dmode;
  {
    int cpid, status;
    struct stat statbuf;
--- 39,46 ----
  
  int
  mkdir (dpath, dmode)
!      const char *dpath;
!      mode_t dmode;
  {
    int cpid, status;
    struct stat statbuf;
***************
*** 86,93 ****
     Return 0 if successful, -1 if not. */
  
  int
! rmdir (dpath)
!      char *dpath;
  {
    int cpid, status;
    struct stat statbuf;
--- 88,95 ----
     Return 0 if successful, -1 if not. */
  
  int
! _rmdir (dpath)
!      const char *dpath;
  {
    int cpid, status;
    struct stat statbuf;
***************
*** 122,125 ****
--- 124,146 ----
  	}
        return 0;
      }
+ }
+ 
+ int
+ rmdir (dpath)
+      const char *dpath;
+ {
+   /* against CVS-1.11 bug? */
+   char fname[PATH_MAX];
+   snprintf(fname, PATH_MAX, "%s/CVS/Entries", dpath);
+   unlink(fname);
+   snprintf(fname, PATH_MAX, "%s/CVS/Repository", dpath);
+   unlink(fname);
+   snprintf(fname, PATH_MAX, "%s/CVS/Root", dpath);
+   unlink(fname);
+   snprintf(fname, PATH_MAX, "%s/CVS/Tag", dpath);
+   unlink(fname);
+   snprintf(fname, PATH_MAX, "%s/CVS", dpath);
+   _rmdir(fname);
+   return _rmdir(dpath);
  }
diff -cNr cvs-1.11/src/ChangeLog cvs-1.11+1/src/ChangeLog
*** cvs-1.11/src/ChangeLog	Wed Sep 20 06:18:16 2000
--- cvs-1.11+1/src/ChangeLog	Sat Jan  6 22:17:57 2001
***************
*** 1,3 ****
--- 1,39 ----
+ 2001-01-06  Takashi TOYOSHIMA  <toyoshim@be-in.org>
+ 
+ 	* version.c: Change version to 1.11+1.
+ 
+ 2000-09-30  Takashi TOYOSHIMA  <toyoshim@be-in.org>
+ 
+ 	* cvs.h: CVSROOTADM_WHEELS definition added. This file is used
+ 	for checking reliable users. Repository 'CVSROOT' is accessible
+ 	only for reliable users.
+ 
+ 	* module.c: Module accessibility check code call added.
+ 
+ 	* server.h: prototype of server_check_module_accessibility added.
+ 
+ 	* server.c: server_check_module_accessibility code impl.
+ 
+ 2000-09-26  Takashi TOYOSHIMA  <toyoshim@be-in.org>
+ 
+ 	* commit.c: Add NO_LOCALUSER_CHECK. (It's useful on single user
+ 	system.)
+ 
+ 	* crypt.c: MD5 digest version of crypt function.
+ 
+ 	* Makefile.in: crypt.c and crypt.o entry added.
+ 
+ 	* server.c: OPEN_BINARY flag added to two CVS_OPEN call. And
+ 	switch_to_user function modified. (if defined NO_LOCALUSER_CHECK
+ 	or __CYGWIN32__, return without any action.)
+ 
+ 	* client.c: if defined HAVE_BE_H, not use shutdown.
+ 
+ 2000-09-20  Takashi TOYOSHIMA  <toyoshim@be-in.org>
+ 
+ 	* login.c: An quick getpass implementation added.
+ 	It's used as having neather getpassphrase nor getpass.
+ 
  2000-09-19  Larry Jones  <larry.jones@sdrc.com> 
  
  	* version.c: Version 1.11.
diff -cNr cvs-1.11/src/Makefile.in cvs-1.11+1/src/Makefile.in
*** cvs-1.11/src/Makefile.in	Sat Sep  9 03:28:03 2000
--- cvs-1.11+1/src/Makefile.in	Sat Jan  6 22:06:49 2001
***************
*** 43,49 ****
  lock.c log.c login.c logmsg.c main.c mkmodules.c modules.c myndbm.c no_diff.c \
  parseinfo.c patch.c rcs.c rcscmds.c recurse.c release.c remove.c repos.c \
  root.c rtag.c scramble.c server.c status.c subr.c filesubr.c run.c \
! tag.c update.c watch.c wrapper.c vers_ts.c version.c zlib.c
  
  OBJECTS = add.o admin.o buffer.o checkin.o checkout.o classify.o client.o \
  commit.o create_adm.o cvsrc.o diff.o edit.o entries.o expand_path.o \
--- 43,49 ----
  lock.c log.c login.c logmsg.c main.c mkmodules.c modules.c myndbm.c no_diff.c \
  parseinfo.c patch.c rcs.c rcscmds.c recurse.c release.c remove.c repos.c \
  root.c rtag.c scramble.c server.c status.c subr.c filesubr.c run.c \
! tag.c update.c watch.c wrapper.c vers_ts.c version.c zlib.c crypt.c
  
  OBJECTS = add.o admin.o buffer.o checkin.o checkout.o classify.o client.o \
  commit.o create_adm.o cvsrc.o diff.o edit.o entries.o expand_path.o \
***************
*** 52,58 ****
  parseinfo.o patch.o rcs.o rcscmds.o recurse.o release.o remove.o repos.o \
  root.o rtag.o scramble.o server.o status.o tag.o update.o \
  watch.o wrapper.o vers_ts.o \
! subr.o filesubr.o run.o version.o error.o zlib.o
  
  HEADERS = buffer.h cvs.h rcs.h hardlink.h hash.h myndbm.h \
  	update.h server.h client.h error.h fileattr.h edit.h watch.h
--- 52,58 ----
  parseinfo.o patch.o rcs.o rcscmds.o recurse.o release.o remove.o repos.o \
  root.o rtag.o scramble.o server.o status.o tag.o update.o \
  watch.o wrapper.o vers_ts.o \
! subr.o filesubr.o run.o version.o error.o zlib.o crypt.o
  
  HEADERS = buffer.h cvs.h rcs.h hardlink.h hash.h myndbm.h \
  	update.h server.h client.h error.h fileattr.h edit.h watch.h
diff -cNr cvs-1.11/src/client.c cvs-1.11+1/src/client.c
*** cvs-1.11/src/client.c	Fri Jul  7 01:20:41 2000
--- cvs-1.11+1/src/client.c	Sat Jan  6 22:06:49 2001
***************
*** 59,64 ****
--- 59,68 ----
  #  endif
  #endif /* ! SOCK_STRERROR */
  
+ #ifdef HAVE_BE_H
+ #  define shutdown(s, f) 1
+ #endif /* HAVE_BE_H */
+ 
  #if HAVE_KERBEROS
  #define CVS_PORT 1999
  
diff -cNr cvs-1.11/src/commit.c cvs-1.11+1/src/commit.c
*** cvs-1.11/src/commit.c	Thu Jul 27 04:29:01 2000
--- cvs-1.11+1/src/commit.c	Sat Jan  6 22:06:49 2001
***************
*** 347,352 ****
--- 347,353 ----
  	&& !client_active
  #  endif
  	)
+ #  ifndef NO_LOCALUSER_CHECK
      {
  	struct passwd *pw;
  
***************
*** 355,360 ****
--- 356,362 ----
  	if (pw->pw_uid == (uid_t) 0)
  	    error (1, 0, "cannot commit files as 'root'");
      }
+ #  endif /* NO_LOCALUSER_CHECK */
  #endif /* CVS_BADROOT */
  
      optind = 0;
diff -cNr cvs-1.11/src/crypt.c cvs-1.11+1/src/crypt.c
*** cvs-1.11/src/crypt.c	Thu Jan  1 09:00:00 1970
--- cvs-1.11+1/src/crypt.c	Sat Jan  6 22:06:49 2001
***************
*** 0 ****
--- 1,26 ----
+ #include <stdio.h>
+ #include <stdlib.h>
+ #include <string.h>
+ #include "cvs.h"
+ #include "md5.h"
+ 
+ #ifdef USE_MD5PASSWD
+ const char *crypt(const char *key, const char *setting)
+ {
+ 	struct cvs_MD5Context ctx;
+ 	unsigned char sum[16];
+ 	static char digest[33];
+ 	char *p;
+ 	int i;
+ 	
+ 	cvs_MD5Init (&ctx);
+ 	cvs_MD5Update (&ctx, key, strlen(key));
+ 	cvs_MD5Final (sum, &ctx);
+ 	for (p = digest, i = 0; i < 16; i++, p += 2)
+ 	{
+ 		sprintf (p, "%02x", sum[i]);
+ 	}
+ 	return digest;
+ }
+ #endif /* USE_MD5PASSWD */
+ 
diff -cNr cvs-1.11/src/cvs.h cvs-1.11+1/src/cvs.h
*** cvs-1.11/src/cvs.h	Sun Jul  9 04:57:21 2000
--- cvs-1.11+1/src/cvs.h	Sat Jan  6 22:06:53 2001
***************
*** 187,192 ****
--- 187,193 ----
  #define CVSROOTADM_WRITERS	"writers"
  #define CVSROOTADM_PASSWD	"passwd"
  #define CVSROOTADM_CONFIG	"config"
+ #define CVSROOTADM_WHEELS	"wheels"
  
  #define CVSNULLREPOS		"Emptydir"	/* an empty directory */
  
diff -cNr cvs-1.11/src/login.c cvs-1.11+1/src/login.c
*** cvs-1.11/src/login.c	Wed Aug  2 01:17:50 2000
--- cvs-1.11+1/src/login.c	Sat Jan  6 22:06:49 2001
***************
*** 38,43 ****
--- 38,70 ----
  
  static char *construct_cvspass_filename PROTO ((void));
  
+ /* This is a quick getpass implementation.
+    BeOS have neither getpass nor getpassphrase.  */
+ #if !defined(HAVE_GETPASSPHRASE) && !defined(HAVE_GETPASS) && defined(HAVE_TERMIOS_H)
+ #include <termios.h>
+ 
+ char *
+ getpass(const char *prompt)
+ {
+     static char passwd[1024];
+     struct termios old_attr;
+     struct termios new_attr;
+ 
+     printf("%s", prompt);
+     fflush(stdout);
+ 
+     tcgetattr(STDIN_FILENO, &old_attr);
+     new_attr = old_attr;
+     new_attr.c_lflag &= ~ECHO;
+     tcsetattr(STDIN_FILENO, TCSANOW, &new_attr);
+     (void)fgets(passwd, 1024, stdin);
+     passwd[strlen(passwd) - 1] = 0;
+     tcsetattr(STDIN_FILENO, TCSANOW, &old_attr);
+     puts("");
+     return passwd;
+ }
+ #endif
+ 
  /* The return value will need to be freed. */
  static char *
  construct_cvspass_filename ()
diff -cNr cvs-1.11/src/modules.c cvs-1.11+1/src/modules.c
*** cvs-1.11/src/modules.c	Thu Jul 27 04:29:01 2000
--- cvs-1.11+1/src/modules.c	Sat Jan  6 22:06:53 2001
***************
*** 136,141 ****
--- 136,145 ----
  #ifdef SERVER_SUPPORT
      int restore_server_dir = 0;
      char *server_dir_to_restore = NULL;
+ 
+     /* Check module access right */
+     server_check_module_accessibility(mname);
+ 
      if (trace)
      {
  	char *buf;
diff -cNr cvs-1.11/src/server.c cvs-1.11+1/src/server.c
*** cvs-1.11/src/server.c	Sat Jul 29 05:18:40 2000
--- cvs-1.11+1/src/server.c	Sat Jan  6 22:06:53 2001
***************
*** 861,866 ****
--- 861,924 ----
      }
  }
  
+ /* Check module accessibility.  */
+ void
+ server_check_module_accessibility (module)
+     char *module;
+ {
+ #ifdef AUTH_SERVER_SUPPORT
+     char *linebuf = NULL;
+     int num_red = 0;
+     size_t linebuf_len = 0;
+     char *fname;
+     size_t flen;
+     FILE *fp;
+ 
+     if (strstr(module, CVSROOTADM) == NULL)
+ 	/* This module name dosn't contain CVSROOT and is safe.  */
+ 	return;
+ 
+     flen = strlen (CVSroot_directory)
+ 	+ strlen (CVSROOTADM)
+ 	+ strlen (CVSROOTADM_WHEELS)
+ 	+ 3;
+ 
+     fname = xmalloc (flen);
+     (void) sprintf (fname, "%s/%s/%s", CVSroot_directory,
+ 		CVSROOTADM, CVSROOTADM_WHEELS);
+     fp = fopen (fname, "r");
+     free (fname);
+ 
+     if (fp == NULL)
+     {
+ 	/* If file is not found, all users must be reliable.  */
+ 	return;
+     }
+ 
+     while ((num_red = getline (&linebuf, &linebuf_len, fp)) >= 0)
+     {
+ 	/* Chop newline by hand, fpr strcmp()'s sake.  */
+ 	if (linebuf[num_red - 1] == '\n')
+ 	    linebuf[num_red - 1] = '\0';
+ 
+ 	if (strcmp (linebuf, CVS_Username) == 0)
+ 	{
+ 	    /* Finding the entry, We consider this user as reliable.  */
+ 	    if (linebuf)
+ 		free (linebuf);
+ 	    fclose (fp);
+ 	    return;
+ 	}
+     }
+     if (linebuf)
+ 	free (linebuf);
+     fclose (fp);
+ 
+     /* This user is not reliable.  */
+     error (1, 0, "you can not access to protected module `%s'", module);
+ #endif
+ }
+ 
  static int outside_root PROTO ((char *));
  
  /* Is file or directory REPOS an absolute pathname within the
***************
*** 1352,1358 ****
      char *arg = file;
  
      /* Write the file.  */
!     fd = CVS_OPEN (arg, O_WRONLY | O_CREAT | O_TRUNC, 0600);
      if (fd < 0)
      {
  	int save_errno = errno;
--- 1410,1416 ----
      char *arg = file;
  
      /* Write the file.  */
!     fd = CVS_OPEN (arg, O_WRONLY | O_CREAT | O_TRUNC | OPEN_BINARY, 0600);
      if (fd < 0)
      {
  	int save_errno = errno;
***************
*** 5171,5176 ****
--- 5229,5237 ----
  switch_to_user (username)
      const char *username;
  {
+ #if defined(NO_LOCALUSER_CHECK) || defined(__CYGWIN32__)
+     return;
+ #else /* defined(NO_LOCALUSER_CHECK) || defined(__CYGWIN32__) */
      struct passwd *pw;
  
      pw = getpwnam (username);
***************
*** 5185,5198 ****
  	error_exit ();
      }
  
! #if HAVE_INITGROUPS
      if (initgroups (pw->pw_name, pw->pw_gid) < 0
! #  ifdef EPERM
  	/* At least on the system I tried, initgroups() only works as root.
  	   But we do still want to report ENOMEM and whatever other
  	   errors initgroups() might dish up.  */
  	&& errno != EPERM
! #  endif
  	)
      {
  	/* This could be a warning, but I'm not sure I see the point
--- 5246,5259 ----
  	error_exit ();
      }
  
! #  if HAVE_INITGROUPS
      if (initgroups (pw->pw_name, pw->pw_gid) < 0
! #    ifdef EPERM
  	/* At least on the system I tried, initgroups() only works as root.
  	   But we do still want to report ENOMEM and whatever other
  	   errors initgroups() might dish up.  */
  	&& errno != EPERM
! #    endif
  	)
      {
  	/* This could be a warning, but I'm not sure I see the point
***************
*** 5203,5211 ****
  	/* Don't worry about server_cleanup; server_active isn't set yet.  */
  	error_exit ();
      }
! #endif /* HAVE_INITGROUPS */
  
! #ifdef SETXID_SUPPORT
      /* honor the setgid bit iff set*/
      if (getgid() != getegid())
      {
--- 5264,5272 ----
  	/* Don't worry about server_cleanup; server_active isn't set yet.  */
  	error_exit ();
      }
! #  endif /* HAVE_INITGROUPS */
  
! #  ifdef SETXID_SUPPORT
      /* honor the setgid bit iff set*/
      if (getgid() != getegid())
      {
***************
*** 5219,5225 ****
  	}
      }
      else
! #endif
      {
  	if (setgid (pw->pw_gid) < 0)
  	{
--- 5280,5286 ----
  	}
      }
      else
! #  endif
      {
  	if (setgid (pw->pw_gid) < 0)
  	{
***************
*** 5249,5261 ****
         the client.  */
      umask (0);
  
! #ifdef AUTH_SERVER_SUPPORT
      /* Make sure our CVS_Username has been set. */
      if (CVS_Username == NULL)
  	CVS_Username = xstrdup (username);
! #endif
        
! #if HAVE_PUTENV
      /* Set LOGNAME and USER in the environment, in case they are
         already set to something else.  */
      {
--- 5310,5322 ----
         the client.  */
      umask (0);
  
! #  ifdef AUTH_SERVER_SUPPORT
      /* Make sure our CVS_Username has been set. */
      if (CVS_Username == NULL)
  	CVS_Username = xstrdup (username);
! #  endif
        
! #  if HAVE_PUTENV
      /* Set LOGNAME and USER in the environment, in case they are
         already set to something else.  */
      {
***************
*** 5269,5275 ****
  	(void) sprintf (env, "USER=%s", username);
  	(void) putenv (env);
      }
! #endif /* HAVE_PUTENV */
  }
  #endif
  
--- 5330,5337 ----
  	(void) sprintf (env, "USER=%s", username);
  	(void) putenv (env);
      }
! #  endif /* HAVE_PUTENV */
! #endif /* defined(NO_LOCALUSER_CHECK) || defined(__CYGWIN32__) */
  }
  #endif
  
diff -cNr cvs-1.11/src/server.h cvs-1.11+1/src/server.h
*** cvs-1.11/src/server.h	Thu Oct 22 02:09:43 1998
--- cvs-1.11+1/src/server.h	Sat Jan  6 22:06:53 2001
***************
*** 34,39 ****
--- 34,42 ----
  /* See server.c for description.  */
  extern void server_pathname_check PROTO ((char *));
  
+ /* Check module accessibility. */
+ extern void server_check_module_accessibility PROTO ((char *));
+ 
  /* We have a new Entries line for a file.  TAG or DATE can be NULL.  */
  extern void server_register
      PROTO((char *name, char *version, char *timestamp,
diff -cNr cvs-1.11/src/version.c cvs-1.11+1/src/version.c
*** cvs-1.11/src/version.c	Wed Sep 20 06:18:16 2000
--- cvs-1.11+1/src/version.c	Sat Jan  6 22:16:57 2001
***************
*** 12,18 ****
  
  #include "cvs.h"
  
! char *version_string = "Concurrent Versions System (CVS) 1.11";
  
  #ifdef CLIENT_SUPPORT
  #ifdef SERVER_SUPPORT
--- 12,18 ----
  
  #include "cvs.h"
  
! char *version_string = "Concurrent Versions System (CVS) 1.11+1";
  
  #ifdef CLIENT_SUPPORT
  #ifdef SERVER_SUPPORT
